ZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9jb21wYXJlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9jb21wYXJlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGJlYmMyMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvY29tcGFyZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOTkgKzAsMCBAQAotLy8gIEJvb3N0IHN0cmluZ19hbGdvIGxpYnJhcnkgY29tcGFyZS5ocHAgaGVhZGVyIGZpbGUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IFBhdm9sIERyb2JhIDIwMDItMjAwNi4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgICAgICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvIGZvciB1cGRhdGVzLCBkb2N1bWVudGF0aW9uLCBhbmQgcmV2aXNpb24gaGlzdG9yeS4KLQotI2lmbmRlZiBORE5CT09TVF9TVFJJTkdfQ09NUEFSRV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfU1RSSU5HX0NPTVBBUkVfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bG9jYWxlPgotCi0vKiEgXGZpbGUKLSAgICBEZWZpbmVzIGVsZW1lbnQgY29tcGFyaXNvbiBwcmVkaWNhdGVzLiBNYW55IGFsZ29yaXRobXMgaW4gdGhpcyBsaWJyYXJ5IGNhbgotICAgIHRha2UgYW4gYWRkaXRpb25hbCBhcmd1bWVudCB3aXRoIGEgcHJlZGljYXRlIHVzZWQgdG8gY29tcGFyZSBlbGVtZW50cy4KLSAgICBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlLCBmb3IgaW5zdGFuY2UsIHRvIGhhdmUgY2FzZSBpbnNlbnNpdGl2ZSB2ZXJzaW9ucwotICAgIG9mIHRoZSBhbGdvcml0aG1zLgotKi8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICBuYW1lc3BhY2UgYWxnb3JpdGhtIHsKLQotICAgICAgICAvLyAgaXNfZXF1YWwgZnVuY3RvciAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgICAgIC8vISBpc19lcXVhbCBmdW5jdG9yCi0gICAgICAgIC8qIQotICAgICAgICAgICAgU3RhbmRhcmQgU1RMIGVxdWFsX3RvIG9ubHkgaGFuZGxlIGNvbXBhcmlzb24gYmV0d2VlbiBhcmd1bWVudHMKLSAgICAgICAgICAgIG9mIHRoZSBzYW1lIHR5cGUuIFRoaXMgaXMgYSBsZXNzIHJlc3RyaWN0aXZlIHZlcnNpb24gd2hpY2ggd3JhcHMgb3BlcmF0b3IgPT0uCi0gICAgICAgICovCi0gICAgICAgIHN0cnVjdCBpc19lcXVhbAotICAgICAgICB7Ci0gICAgICAgICAgICAvLyEgRnVuY3Rpb24gb3BlcmF0b3IKLSAgICAgICAgICAgIC8qIQotICAgICAgICAgICAgICAgIENvbXBhcmUgdHdvIG9wZXJhbmRzIGZvciBlcXVhbGl0eQotICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIgPgotICAgICAgICAgICAgICAgIGJvb2wgb3BlcmF0b3IoKSggY29uc3QgVDEmIEFyZzEsIGNvbnN0IFQyJiBBcmcyICkgY29uc3QKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gQXJnMT09QXJnMjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLQotICAgICAgICAvLyEgY2FzZSBpbnNlbnNpdGl2ZSB2ZXJzaW9uIG9mIGlzX2VxdWFsCi0gICAgICAgIC8qIQotICAgICAgICAgICAgQ2FzZSBpbnNlbnNpdGl2ZSBjb21wYXJpc29uIHByZWRpY2F0ZS4gQ29tcGFyaXNvbiBpcyBkb25lIHVzaW5nCi0gICAgICAgICAgICBzcGVjaWZpZWQgbG9jYWxlcy4KLSAgICAgICAgKi8KLSAgICAgICAgc3RydWN0IGlzX2llcXVhbAotICAgICAgICB7Ci0gICAgICAgICAgICAvLyEgQ29uc3RydWN0b3IKLSAgICAgICAgICAgIC8qIQotICAgICAgICAgICAgICAgIFxwYXJhbSBMb2MgbG9jYWxlcyB1c2VkIGZvciBjb21wYXJpc29uCi0gICAgICAgICAgICAqLwotICAgICAgICAgICAgaXNfaWVxdWFsKCBjb25zdCBzdGQ6OmxvY2FsZSYgTG9jPXN0ZDo6bG9jYWxlKCkgKSA6Ci0gICAgICAgICAgICAgICAgbV9Mb2MoIExvYyApIHt9Ci0KLSAgICAgICAgICAgIC8vISBGdW5jdGlvbiBvcGVyYXRvcgotICAgICAgICAgICAgLyohCi0gICAgICAgICAgICAgICAgQ29tcGFyZSB0d28gb3BlcmFuZHMuIENhc2UgaXMgaWdub3JlZC4KLSAgICAgICAgICAgICovCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyID4KLSAgICAgICAgICAgICAgICBib29sIG9wZXJhdG9yKCkoIGNvbnN0IFQxJiBBcmcxLCBjb25zdCBUMiYgQXJnMiApIGNvbnN0Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgI2lmIGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiAoX19CT1JMQU5EQ19fID49IDB4NTYwKSAmJiAoX19CT1JMQU5EQ19fIDw9IDB4NTY0KSAmJiAhZGVmaW5lZChfVVNFX09MRF9SV19TVEwpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6OnRvdXBwZXIoQXJnMSk9PXN0ZDo6dG91cHBlcihBcmcyKTsKLSAgICAgICAgICAgICAgICAjZWxzZQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjp0b3VwcGVyPFQxPihBcmcxLG1fTG9jKT09c3RkOjp0b3VwcGVyPFQyPihBcmcyLG1fTG9jKTsKLSAgICAgICAgICAgICAgICAjZW5kaWYKLSAgICAgICAgICAgIH0KLQotICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgc3RkOjpsb2NhbGUgbV9Mb2M7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgLy8gIGlzX2xlc3MgZnVuY3RvciAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgICAgIC8vISBpc19sZXNzIGZ1bmN0b3IKLSAgICAgICAgLyohCi0gICAgICAgICAgICBDb252ZW5pZW50IHZlcnNpb24gb2Ygc3RhbmRhcmQgc3RkOjpsZXNzLiBPcGVyYXRpb24gaXMgdGVtcGxhdGVkLCB0aGVyZWZvcmUgaXQgaXMgCi0gICAgICAgICAgICBub3QgcmVxdWlyZWQgdG8gc3BlY2lmeSB0aGUgZXhhY3QgdHlwZXMgdXBvbiB0aGUgY29uc3RydWN0aW9uCi0gICAgICAgICAqLwotICAgICAgICBzdHJ1Y3QgaXNfbGVzcwotICAgICAgICB7Ci0gICAgICAgICAgICAvLyEgRnVuY3RvciBvcGVyYXRpb24KLSAgICAgICAgICAgIC8qIQotICAgICAgICAgICAgICAgIENvbXBhcmUgdHdvIG9wZXJhbmRzIHVzaW5nID4gb3BlcmF0b3IKLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiA+Ci0gICAgICAgICAgICAgICAgYm9vbCBvcGVyYXRvcigpKCBjb25zdCBUMSYgQXJnMSwgY29uc3QgVDImIEFyZzIgKSBjb25zdAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBBcmcxPEFyZzI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0KLQotICAgICAgICAvLyEgY2FzZSBpbnNlbnNpdGl2ZSB2ZXJzaW9uIG9mIGlzX2xlc3MKLSAgICAgICAgLyohCi0gICAgICAgICAgICBDYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmlzb24gcHJlZGljYXRlLiBDb21wYXJpc29uIGlzIGRvbmUgdXNpbmcKLSAgICAgICAgICAgIHNwZWNpZmllZCBsb2NhbGVzLgotICAgICAgICAqLwotICAgICAgICBzdHJ1Y3QgaXNfaWxlc3MKLSAgICAgICAgewotICAgICAgICAgICAgLy8hIENvbnN0cnVjdG9yCi0gICAgICAgICAgICAvKiEKLSAgICAgICAgICAgICAgICBccGFyYW0gTG9jIGxvY2FsZXMgdXNlZCBmb3IgY29tcGFyaXNvbgotICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlzX2lsZXNzKCBjb25zdCBzdGQ6OmxvY2FsZSYgTG9jPXN0ZDo6bG9jYWxlKCkgKSA6Ci0gICAgICAgICAgICAgICAgbV9Mb2MoIExvYyApIHt9Ci0KLSAgICAgICAgICAgIC8vISBGdW5jdGlvbiBvcGVyYXRvcgotICAgICAgICAgICAgLyohCi0gICAgICAgICAgICAgICAgQ29tcGFyZSB0d28gb3BlcmFuZHMuIENhc2UgaXMgaWdub3JlZC4KLSAgICAgICAgICAgICovCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyID4KLSAgICAgICAgICAgICAgICBib29sIG9wZXJhdG9yKCkoIGNvbnN0IFQxJiBBcmcxLCBjb25zdCBUMiYgQXJnMiApIGNvbnN0Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgI2lmIGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiAoX19CT1JMQU5EQ19fID49IDB4NTYwKSAmJiAoX19CT1JMQU5EQ19fIDw9IDB4NTY0KSAmJiAhZGVmaW5lZChfVVNFX09MRF9SV19TVEwpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6OnRvdXBwZXIoQXJnMSk8c3RkOjp0b3VwcGVyKEFyZzIpOwotICAgICAgICAgICAgICAgICNlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6OnRvdXBwZXI8VDE+KEFyZzEsbV9Mb2MpPHN0ZDo6dG91cHBlcjxUMj4oQXJnMixtX0xvYyk7Ci0gICAgICAgICAgICAgICAgI2VuZGlmCi0gICAgICAgICAgICB9Ci0KLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIHN0ZDo6bG9jYWxlIG1fTG9jOwotICAgICAgICB9OwotCi0gICAgICAgIC8vICBpc19ub3RfZ3JlYXRlciBmdW5jdG9yICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICAgICAgLy8hIGlzX25vdF9ncmVhdGVyIGZ1bmN0b3IKLSAgICAgICAgLyohCi0gICAgICAgICAgICBDb252ZW5pZW50IHZlcnNpb24gb2Ygc3RhbmRhcmQgc3RkOjpub3RfZ3JlYXRlcl90by4gT3BlcmF0aW9uIGlzIHRlbXBsYXRlZCwgdGhlcmVmb3JlIGl0IGlzIAotICAgICAgICAgICAgbm90IHJlcXVpcmVkIHRvIHNwZWNpZnkgdGhlIGV4YWN0IHR5cGVzIHVwb24gdGhlIGNvbnN0cnVjdGlvbgotICAgICAgICAgKi8KLSAgICAgICAgc3RydWN0IGlzX25vdF9ncmVhdGVyCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vISBGdW5jdG9yIG9wZXJhdGlvbgotICAgICAgICAgICAgLyohCi0gICAgICAgICAgICAgICAgQ29tcGFyZSB0d28gb3BlcmFuZHMgdXNpbmcgPiBvcGVyYXRvcgotICAgICAgICAgICAgICovCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyID4KLSAgICAgICAgICAgICAgICBib29sIG9wZXJhdG9yKCkoIGNvbnN0IFQxJiBBcmcxLCBjb25zdCBUMiYgQXJnMiApIGNvbnN0Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEFyZzE8PUFyZzI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0KLQotICAgICAgICAvLyEgY2FzZSBpbnNlbnNpdGl2ZSB2ZXJzaW9uIG9mIGlzX25vdF9ncmVhdGVyCi0gICAgICAgIC8qIQotICAgICAgICAgICAgQ2FzZSBpbnNlbnNpdGl2ZSBjb21wYXJpc29uIHByZWRpY2F0ZS4gQ29tcGFyaXNvbiBpcyBkb25lIHVzaW5nCi0gICAgICAgICAgICBzcGVjaWZpZWQgbG9jYWxlcy4KLSAgICAgICAgKi8KLSAgICAgICAgc3RydWN0IGlzX25vdF9pZ3JlYXRlcgotICAgICAgICB7Ci0gICAgICAgICAgICAvLyEgQ29uc3RydWN0b3IKLSAgICAgICAgICAgIC8qIQotICAgICAgICAgICAgICAgIFxwYXJhbSBMb2MgbG9jYWxlcyB1c2VkIGZvciBjb21wYXJpc29uCi0gICAgICAgICAgICAqLwotICAgICAgICAgICAgaXNfbm90X2lncmVhdGVyKCBjb25zdCBzdGQ6OmxvY2FsZSYgTG9jPXN0ZDo6bG9jYWxlKCkgKSA6Ci0gICAgICAgICAgICAgICAgbV9Mb2MoIExvYyApIHt9Ci0KLSAgICAgICAgICAgIC8vISBGdW5jdGlvbiBvcGVyYXRvcgotICAgICAgICAgICAgLyohCi0gICAgICAgICAgICAgICAgQ29tcGFyZSB0d28gb3BlcmFuZHMuIENhc2UgaXMgaWdub3JlZC4KLSAgICAgICAgICAgICovCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyID4KLSAgICAgICAgICAgICAgICBib29sIG9wZXJhdG9yKCkoIGNvbnN0IFQxJiBBcmcxLCBjb25zdCBUMiYgQXJnMiApIGNvbnN0Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgI2lmIGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiAoX19CT1JMQU5EQ19fID49IDB4NTYwKSAmJiAoX19CT1JMQU5EQ19fIDw9IDB4NTY0KSAmJiAhZGVmaW5lZChfVVNFX09MRF9SV19TVEwpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6OnRvdXBwZXIoQXJnMSk8PXN0ZDo6dG91cHBlcihBcmcyKTsKLSAgICAgICAgICAgICAgICAjZWxzZQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjp0b3VwcGVyPFQxPihBcmcxLG1fTG9jKTw9c3RkOjp0b3VwcGVyPFQyPihBcmcyLG1fTG9jKTsKLSAgICAgICAgICAgICAgICAjZW5kaWYKLSAgICAgICAgICAgIH0KLQotICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgc3RkOjpsb2NhbGUgbV9Mb2M7Ci0gICAgICAgIH07Ci0KLQotICAgIH0gLy8gbmFtZXNwYWNlIGFsZ29yaXRobQotCi0gICAgLy8gcHVsbCBuYW1lcyB0byB0aGUgYm9vc3QgbmFtZXNwYWNlCi0gICAgdXNpbmcgYWxnb3JpdGhtOjppc19lcXVhbDsKLSAgICB1c2luZyBhbGdvcml0aG06OmlzX2llcXVhbDsKLSAgICB1c2luZyBhbGdvcml0aG06OmlzX2xlc3M7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjppc19pbGVzczsKLSAgICB1c2luZyBhbGdvcml0aG06OmlzX25vdF9ncmVhdGVyOwotICAgIHVzaW5nIGFsZ29yaXRobTo6aXNfbm90X2lncmVhdGVyOwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0KLSNlbmRpZiAgLy8gTkROQk9PU1RfU1RSSU5HX0NPTVBBUkVfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvY29uY2VwdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvY29uY2VwdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2Njk4ZDMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2NvbmNlcHQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotLy8gIEJvb3N0IHN0cmluZ19hbGdvIGxpYnJhcnkgY29uY2VwdC5ocHAgaGVhZGVyIGZpbGUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBDb3B5cmlnaHQgUGF2b2wgRHJvYmEgMjAwMi0yMDAzLgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAgIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICAgICAgICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy8gZm9yIHVwZGF0ZXMsIGRvY3VtZW50YXRpb24sIGFuZCByZXZpc2lvbiBoaXN0b3J5LgotCi0jaWZuZGVmIE5ETkJPT1NUX1NUUklOR19DT05DRVBUX0hQUAotI2RlZmluZSBORE5CT09TVF9TVFJJTkdfQ09OQ0VQVF9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmNlcHRfY2hlY2suaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yX3JhbmdlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9iZWdpbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZW5kLmhwcD4KLQotLyohIFxmaWxlIAotICAgIERlZmluZXMgY29uY2VwdHMgdXNlZCBpbiBzdHJpbmdfYWxnbyBsaWJyYXJ5Ci0qLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIG5hbWVzcGFjZSBhbGdvcml0aG0gewotCi0gICAgICAgIC8vISBGaW5kZXIgY29uY2VwdAotICAgICAgICAvKiEKLSAgICAgICAgICAgIERlZmluZXMgdGhlIEZpbmRlciBjb25jZXB0LiBGaW5kZXIgaXMgYSBmdW5jdG9yIHdoaWNoIHNlbGVjdHMKLSAgICAgICAgICAgIGFuIGFyYml0cmFyeSBwYXJ0IG9mIGEgc3RyaW5nLiBTZWFyY2ggaXMgcGVyZm9ybWVkIG9uCi0gICAgICAgICAgICB0aGUgcmFuZ2Ugc3BlY2lmaWVkIGJ5IHN0YXJ0aW5nIGFuZCBlbmRpbmcgaXRlcmF0b3JzLgotCi0gICAgICAgICAgICBSZXN1bHQgb2YgdGhlIGZpbmQgb3BlcmF0aW9uIG11c3QgYmUgY29udmVydGlibGUgdG8gaXRlcmF0b3JfcmFuZ2UuCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZpbmRlclQsIHR5cGVuYW1lIEl0ZXJhdG9yVD4KLSAgICAgICAgc3RydWN0IEZpbmRlckNvbmNlcHQKLSAgICAgICAgewotICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgdHlwZWRlZiBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvclQ+IHJhbmdlOwotICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICB2b2lkIGNvbnN0cmFpbnRzKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBPcGVyYXRpb24KLSAgICAgICAgICAgICAgICByPSgqcEYpKGksaSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICByYW5nZSByOwotICAgICAgICAgICAgSXRlcmF0b3JUIGk7Ci0gICAgICAgICAgICBGaW5kZXJUKiBwRjsgICAgCi0gICAgICAgIH07IC8vIEZpbmRlcl9jb25jZXB0Ci0KLSAgICAgICAgCi0gICAgICAgIC8vISBGb3JtYXR0ZXIgY29uY2VwdAotICAgICAgICAvKiEKLSAgICAgICAgICAgIERlZmluZXMgdGhlIEZvcm1hdHRlciBjb25jZXB0LiBGb3JtYXR0ZXIgaXMgYSBmdW5jdG9yLCB3aGljaAotICAgICAgICAgICAgdGFrZXMgYSByZXN1bHQgZnJvbSBhIGZpbmRlciBvcGVyYXRpb24gYW5kIHRyYW5zZm9ybXMgaXQKLSAgICAgICAgICAgIGluIGEgc3BlY2lmaWMgd2F5LgotCi0gICAgICAgICAgICBSZXN1bHQgbXVzdCBiZSBhIGNvbnRhaW5lciBzdXBwb3J0ZWQgYnkgY29udGFpbmVyX3RyYWl0cywgCi0gICAgICAgICAgICBvciBhIHJlZmVyZW5jZSB0byBpdC4KLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRm9ybWF0dGVyVCwgdHlwZW5hbWUgRmluZGVyVCwgdHlwZW5hbWUgSXRlcmF0b3JUPgotICAgICAgICBzdHJ1Y3QgRm9ybWF0dGVyQ29uY2VwdAotICAgICAgICB7Ci0gICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIHZvaWQgY29uc3RyYWludHMoKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIE9wZXJhdGlvbgotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmJlZ2luKCgqcEZvKSggKCpwRikoaSxpKSApKTsKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjplbmQoKCpwRm8pKCAoKnBGKShpLGkpICkpOwotICAgICAgICAgICAgfQotICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgSXRlcmF0b3JUIGk7Ci0gICAgICAgICAgICBGaW5kZXJUKiBwRjsKLSAgICAgICAgICAgIEZvcm1hdHRlclQgKnBGbzsKLSAgICAgICAgfTsgLy8gRm9ybWF0dGVyQ29uY2VwdDsKLQotICAgIH0gLy8gbmFtZXNwYWNlIGFsZ29yaXRobQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotCi0KLQotI2VuZGlmICAvLyBORE5CT09TVF9TVFJJTkdfQ09OQ0VQVF9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9jb25maWcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2NvbmZpZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2NTljMWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2NvbmZpZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0vLyAgQm9vc3Qgc3RyaW5nX2FsZ28gbGlicmFyeSBjb25maWcuaHBwIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IFBhdm9sIERyb2JhIDIwMDItMjAwMy4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgICAgICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvIGZvciB1cGRhdGVzLCBkb2N1bWVudGF0aW9uLCBhbmQgcmV2aXNpb24gaGlzdG9yeS4KLQotI2lmbmRlZiBORE5CT09TVF9TVFJJTkdfQ09ORklHX0hQUAotI2RlZmluZSBORE5CT09TVF9TVFJJTkdfQ09ORklHX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZmRlZiBORE5CT09TVF9TVFJJTkdfREVEVUNFRF9UWVBFTkFNRQotIyAgIGVycm9yICJtYWNybyBhbHJlYWR5IGRlZmluZWQhIgotI2VuZGlmCi0KLSNkZWZpbmUgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUKLQotLy8gTWV0cm93ZXJrcyB3b3JrYXJvdW5kCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCA8PSAweDMwMDMpIC8vIDgueAotI3ByYWdtYSBwYXJzZV9mdW5jX3RlbXBsIG9mZgotI2VuZGlmCi0KLSNlbmRpZiAgLy8gTkROQk9PU1RfU1RSSU5HX0NPTkZJR19IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9jb25zdGFudHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2NvbnN0YW50cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxZmUxNTguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2NvbnN0YW50cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vLyAgQm9vc3Qgc3RyaW5nX2FsZ28gbGlicmFyeSBjb25zdGFudHMuaHBwIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IFBhdm9sIERyb2JhIDIwMDItMjAwMy4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgICAgICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvIGZvciB1cGRhdGVzLCBkb2N1bWVudGF0aW9uLCBhbmQgcmV2aXNpb24gaGlzdG9yeS4KLQotI2lmbmRlZiBORE5CT09TVF9TVFJJTkdfQ09OU1RBTlRTX0hQUAotI2RlZmluZSBORE5CT09TVF9TVFJJTkdfQ09OU1RBTlRTX0hQUAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIG5hbWVzcGFjZSBhbGdvcml0aG0gewotCi0gICAgLy8hIFRva2VuIGNvbXByZXNzaW9uIG1vZGUgCi0gICAgLyohCi0gICAgICAgIFNwZWNpZmllcyB0b2tlbiBjb21wcmVzc2lvbiBtb2RlIGZvciB0aGUgdG9rZW5fZmluZGVyLgotICAgICovCi0gICAgZW51bSB0b2tlbl9jb21wcmVzc19tb2RlX3R5cGUKLSAgICB7Ci0gICAgICAgIHRva2VuX2NvbXByZXNzX29uLCAgICAvLyE8IENvbXByZXNzIGFkamFjZW50IHRva2VucwotICAgICAgICB0b2tlbl9jb21wcmVzc19vZmYgIC8vITwgRG8gbm90IGNvbXByZXNzIGFkamFjZW50IHRva2VucwotICAgIH07Ci0gICAgCi0gICAgfSAvLyBuYW1lc3BhY2UgYWxnb3JpdGhtCi0KLSAgICAvLyBwdWxsIHRoZSBuYW1lcyB0byB0aGUgYm9vc3QgbmFtZXNwYWNlCi0gICAgdXNpbmcgYWxnb3JpdGhtOjp0b2tlbl9jb21wcmVzc19vbjsKLSAgICB1c2luZyBhbGdvcml0aG06OnRva2VuX2NvbXByZXNzX29mZjsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyBORE5CT09TVF9TVFJJTkdfQ09OU1RBTlRTX0hQUAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZGV0YWlsL2ZpbmRfZm9ybWF0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9kZXRhaWwvZmluZF9mb3JtYXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTllNDBkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9kZXRhaWwvZmluZF9mb3JtYXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjA0ICswLDAgQEAKLS8vICBCb29zdCBzdHJpbmdfYWxnbyBsaWJyYXJ5IGZpbmRfZm9ybWF0LmhwcCBoZWFkZXIgZmlsZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCBQYXZvbCBEcm9iYSAyMDAyLTIwMDMuCi0vLyAKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAgIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICAgICAgICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy8gZm9yIHVwZGF0ZXMsIGRvY3VtZW50YXRpb24sIGFuZCByZXZpc2lvbiBoaXN0b3J5LgotCi0jaWZuZGVmIE5ETkJPT1NUX1NUUklOR19GSU5EX0ZPUk1BVF9ERVRBSUxfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1NUUklOR19GSU5EX0ZPUk1BVF9ERVRBSUxfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3JfcmFuZ2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2NvbnN0X2l0ZXJhdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9pdGVyYXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9kZXRhaWwvZmluZF9mb3JtYXRfc3RvcmUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZGV0YWlsL3JlcGxhY2Vfc3RvcmFnZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgbmFtZXNwYWNlIGFsZ29yaXRobSB7Ci0gICAgICAgIG5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyBmaW5kX2Zvcm1hdF9jb3B5IChpdGVyYXRvciB2YXJpYW50KSBpbXBsZW1lbnRhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAgICB0ZW1wbGF0ZTwgCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3JULAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIElucHV0VCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGb3JtYXR0ZXJULAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIEZpbmRSZXN1bHRULAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIEZvcm1hdFJlc3VsdFQgPgotICAgICAgICAgICAgaW5saW5lIE91dHB1dEl0ZXJhdG9yVCBmaW5kX2Zvcm1hdF9jb3B5X2ltcGwyKAotICAgICAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yVCBPdXRwdXQsCi0gICAgICAgICAgICAgICAgY29uc3QgSW5wdXRUJiBJbnB1dCwKLSAgICAgICAgICAgICAgICBGb3JtYXR0ZXJUIEZvcm1hdHRlciwKLSAgICAgICAgICAgICAgICBjb25zdCBGaW5kUmVzdWx0VCYgRmluZFJlc3VsdCwKLSAgICAgICAgICAgICAgICBjb25zdCBGb3JtYXRSZXN1bHRUJiBGb3JtYXRSZXN1bHQgKQotICAgICAgICAgICAgeyAgICAgICAKLSAgICAgICAgICAgICAgICB0eXBlZGVmIGZpbmRfZm9ybWF0X3N0b3JlPAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgCi0gICAgICAgICAgICAgICAgICAgICAgICByYW5nZV9jb25zdF9pdGVyYXRvcjxJbnB1dFQ+Ojp0eXBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdHRlclQsCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRSZXN1bHRUID4gc3RvcmVfdHlwZTsKLQotICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBzdG9yZSBmb3IgdGhlIGZpbmQgcmVzdWx0Ci0gICAgICAgICAgICAgICAgc3RvcmVfdHlwZSBNKCBGaW5kUmVzdWx0LCBGb3JtYXRSZXN1bHQsIEZvcm1hdHRlciApOwotCi0gICAgICAgICAgICAgICAgaWYgKCAhTSApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAvLyBNYXRjaCBub3QgZm91bmQgLSByZXR1cm4gb3JpZ2luYWwgc2VxdWVuY2UKLSAgICAgICAgICAgICAgICAgICAgT3V0cHV0ID0gc3RkOjpjb3B5KCA6Om5kbmJvb3N0OjpiZWdpbihJbnB1dCksIDo6bmRuYm9vc3Q6OmVuZChJbnB1dCksIE91dHB1dCApOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gT3V0cHV0OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIENvcHkgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2VxdWVuY2UKLSAgICAgICAgICAgICAgICBPdXRwdXQgPSBzdGQ6OmNvcHkoIDo6bmRuYm9vc3Q6OmJlZ2luKElucHV0KSwgOjpuZG5ib29zdDo6YmVnaW4oTSksIE91dHB1dCApOwotICAgICAgICAgICAgICAgIC8vIEZvcm1hdCBmaW5kIHJlc3VsdAotICAgICAgICAgICAgICAgIC8vIENvcHkgZm9ybWF0dGVkIHJlc3VsdAotICAgICAgICAgICAgICAgIE91dHB1dCA9IHN0ZDo6Y29weSggOjpuZG5ib29zdDo6YmVnaW4oTS5mb3JtYXRfcmVzdWx0KCkpLCA6Om5kbmJvb3N0OjplbmQoTS5mb3JtYXRfcmVzdWx0KCkpLCBPdXRwdXQgKTsKLSAgICAgICAgICAgICAgICAvLyBDb3B5IHRoZSByZXN0IG9mIHRoZSBzZXF1ZW5jZQotICAgICAgICAgICAgICAgIE91dHB1dCA9IHN0ZDo6Y29weSggTS5lbmQoKSwgOjpuZG5ib29zdDo6ZW5kKElucHV0KSwgT3V0cHV0ICk7Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4gT3V0cHV0OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3JULAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIElucHV0VCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGb3JtYXR0ZXJULAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIEZpbmRSZXN1bHRUID4KLSAgICAgICAgICAgIGlubGluZSBPdXRwdXRJdGVyYXRvclQgZmluZF9mb3JtYXRfY29weV9pbXBsKAotICAgICAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yVCBPdXRwdXQsCi0gICAgICAgICAgICAgICAgY29uc3QgSW5wdXRUJiBJbnB1dCwKLSAgICAgICAgICAgICAgICBGb3JtYXR0ZXJUIEZvcm1hdHRlciwKLSAgICAgICAgICAgICAgICBjb25zdCBGaW5kUmVzdWx0VCYgRmluZFJlc3VsdCApCi0gICAgICAgICAgICB7ICAgCi0gICAgICAgICAgICAgICAgaWYoIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZGV0YWlsOjpjaGVja19maW5kX3Jlc3VsdChJbnB1dCwgRmluZFJlc3VsdCkgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjphbGdvcml0aG06OmRldGFpbDo6ZmluZF9mb3JtYXRfY29weV9pbXBsMiggCi0gICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICBJbnB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdHRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgIEZpbmRSZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXR0ZXIoRmluZFJlc3VsdCkgKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpjb3B5KCA6Om5kbmJvb3N0OjpiZWdpbihJbnB1dCksIDo6bmRuYm9vc3Q6OmVuZChJbnB1dCksIE91dHB1dCApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotIAotLy8gZmluZF9mb3JtYXRfY29weSBpbXBsZW1lbnRhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICAgICAgICAgdGVtcGxhdGU8IAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIElucHV0VCwgCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgRm9ybWF0dGVyVCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGaW5kUmVzdWx0VCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGb3JtYXRSZXN1bHRUID4KLSAgICAgICAgICAgIGlubGluZSBJbnB1dFQgZmluZF9mb3JtYXRfY29weV9pbXBsMigKLSAgICAgICAgICAgICAgICBjb25zdCBJbnB1dFQmIElucHV0LAotICAgICAgICAgICAgICAgIEZvcm1hdHRlclQgRm9ybWF0dGVyLAotICAgICAgICAgICAgICAgIGNvbnN0IEZpbmRSZXN1bHRUJiBGaW5kUmVzdWx0LAotICAgICAgICAgICAgICAgIGNvbnN0IEZvcm1hdFJlc3VsdFQmIEZvcm1hdFJlc3VsdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIGZpbmRfZm9ybWF0X3N0b3JlPAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgCi0gICAgICAgICAgICAgICAgICAgICAgICByYW5nZV9jb25zdF9pdGVyYXRvcjxJbnB1dFQ+Ojp0eXBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdHRlclQsCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRSZXN1bHRUID4gc3RvcmVfdHlwZTsKLQotICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBzdG9yZSBmb3IgdGhlIGZpbmQgcmVzdWx0Ci0gICAgICAgICAgICAgICAgc3RvcmVfdHlwZSBNKCBGaW5kUmVzdWx0LCBGb3JtYXRSZXN1bHQsIEZvcm1hdHRlciApOwotCi0gICAgICAgICAgICAgICAgaWYgKCAhTSApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAvLyBNYXRjaCBub3QgZm91bmQgLSByZXR1cm4gb3JpZ2luYWwgc2VxdWVuY2UKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIElucHV0VCggSW5wdXQgKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBJbnB1dFQgT3V0cHV0OwotICAgICAgICAgICAgICAgIC8vIENvcHkgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2VxdWVuY2UKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6YWxnb3JpdGhtOjpkZXRhaWw6Omluc2VydCggT3V0cHV0LCA6Om5kbmJvb3N0OjplbmQoT3V0cHV0KSwgOjpuZG5ib29zdDo6YmVnaW4oSW5wdXQpLCBNLmJlZ2luKCkgKTsKLSAgICAgICAgICAgICAgICAvLyBDb3B5IGZvcm1hdHRlZCByZXN1bHQKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6YWxnb3JpdGhtOjpkZXRhaWw6Omluc2VydCggT3V0cHV0LCA6Om5kbmJvb3N0OjplbmQoT3V0cHV0KSwgTS5mb3JtYXRfcmVzdWx0KCkgKTsKLSAgICAgICAgICAgICAgICAvLyBDb3B5IHRoZSByZXN0IG9mIHRoZSBzZXF1ZW5jZQotICAgICAgICAgICAgICAgIG5kbmJvb3N0OjphbGdvcml0aG06OmRldGFpbDo6aW5zZXJ0KCBPdXRwdXQsIDo6bmRuYm9vc3Q6OmVuZChPdXRwdXQpLCBNLmVuZCgpLCA6Om5kbmJvb3N0OjplbmQoSW5wdXQpICk7Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4gT3V0cHV0OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgSW5wdXRULCAKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGb3JtYXR0ZXJULAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIEZpbmRSZXN1bHRUID4KLSAgICAgICAgICAgIGlubGluZSBJbnB1dFQgZmluZF9mb3JtYXRfY29weV9pbXBsKAotICAgICAgICAgICAgICAgIGNvbnN0IElucHV0VCYgSW5wdXQsCi0gICAgICAgICAgICAgICAgRm9ybWF0dGVyVCBGb3JtYXR0ZXIsCi0gICAgICAgICAgICAgICAgY29uc3QgRmluZFJlc3VsdFQmIEZpbmRSZXN1bHQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYoIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZGV0YWlsOjpjaGVja19maW5kX3Jlc3VsdChJbnB1dCwgRmluZFJlc3VsdCkgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjphbGdvcml0aG06OmRldGFpbDo6ZmluZF9mb3JtYXRfY29weV9pbXBsMigKLSAgICAgICAgICAgICAgICAgICAgICAgIElucHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0dGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgRmluZFJlc3VsdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdHRlcihGaW5kUmVzdWx0KSApOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBJbnB1dDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAvLyByZXBsYWNlIGltcGxlbWVudGF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotICAgICAgICAKLSAgICAgICAgICAgIHRlbXBsYXRlPAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIElucHV0VCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGb3JtYXR0ZXJULAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIEZpbmRSZXN1bHRULAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIEZvcm1hdFJlc3VsdFQgPgotICAgICAgICAgICAgaW5saW5lIHZvaWQgZmluZF9mb3JtYXRfaW1wbDIoIAotICAgICAgICAgICAgICAgIElucHV0VCYgSW5wdXQsCi0gICAgICAgICAgICAgICAgRm9ybWF0dGVyVCBGb3JtYXR0ZXIsCi0gICAgICAgICAgICAgICAgY29uc3QgRmluZFJlc3VsdFQmIEZpbmRSZXN1bHQsCi0gICAgICAgICAgICAgICAgY29uc3QgRm9ybWF0UmVzdWx0VCYgRm9ybWF0UmVzdWx0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgZmluZF9mb3JtYXRfc3RvcmU8Ci0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSAKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlX2l0ZXJhdG9yPElucHV0VD46OnR5cGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0dGVyVCwKLSAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFJlc3VsdFQgPiBzdG9yZV90eXBlOwotCi0gICAgICAgICAgICAgICAgLy8gQ3JlYXRlIHN0b3JlIGZvciB0aGUgZmluZCByZXN1bHQKLSAgICAgICAgICAgICAgICBzdG9yZV90eXBlIE0oIEZpbmRSZXN1bHQsIEZvcm1hdFJlc3VsdCwgRm9ybWF0dGVyICk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoICFNICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFNlYXJjaCBub3QgZm91bmQgLSByZXR1cm4gb3JpZ2luYWwgc2VxdWVuY2UKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIFJlcGxhY2UgbWF0Y2gKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmRldGFpbDo6cmVwbGFjZSggSW5wdXQsIE0uYmVnaW4oKSwgTS5lbmQoKSwgTS5mb3JtYXRfcmVzdWx0KCkgKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgICAgICAgdHlwZW5hbWUgSW5wdXRULAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIEZvcm1hdHRlclQsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgRmluZFJlc3VsdFQgPgotICAgICAgICAgICAgaW5saW5lIHZvaWQgZmluZF9mb3JtYXRfaW1wbCggCi0gICAgICAgICAgICAgICAgSW5wdXRUJiBJbnB1dCwKLSAgICAgICAgICAgICAgICBGb3JtYXR0ZXJUIEZvcm1hdHRlciwKLSAgICAgICAgICAgICAgICBjb25zdCBGaW5kUmVzdWx0VCYgRmluZFJlc3VsdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiggOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpkZXRhaWw6OmNoZWNrX2ZpbmRfcmVzdWx0KElucHV0LCBGaW5kUmVzdWx0KSApIHsKLSAgICAgICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpkZXRhaWw6OmZpbmRfZm9ybWF0X2ltcGwyKAotICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXR0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBGaW5kUmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0dGVyKEZpbmRSZXN1bHQpICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgIH0gLy8gbmFtZXNwYWNlIGRldGFpbAotICAgIH0gLy8gbmFtZXNwYWNlIGFsZ29yaXRobQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyBORE5CT09TVF9TVFJJTkdfRklORF9GT1JNQVRfREVUQUlMX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2RldGFpbC9maW5kX2Zvcm1hdF9hbGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2RldGFpbC9maW5kX2Zvcm1hdF9hbGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMmQwNzY4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9kZXRhaWwvZmluZF9mb3JtYXRfYWxsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3MyArMCwwIEBACi0vLyAgQm9vc3Qgc3RyaW5nX2FsZ28gbGlicmFyeSBmaW5kX2Zvcm1hdF9hbGwuaHBwIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IFBhdm9sIERyb2JhIDIwMDItMjAwMy4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgICAgICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvIGZvciB1cGRhdGVzLCBkb2N1bWVudGF0aW9uLCBhbmQgcmV2aXNpb24gaGlzdG9yeS4KLQotI2lmbmRlZiBORE5CT09TVF9TVFJJTkdfRklORF9GT1JNQVRfQUxMX0RFVEFJTF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfU1RSSU5HX0ZJTkRfRk9STUFUX0FMTF9ERVRBSUxfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3JfcmFuZ2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2NvbnN0X2l0ZXJhdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS92YWx1ZV90eXBlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2RldGFpbC9maW5kX2Zvcm1hdF9zdG9yZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9kZXRhaWwvcmVwbGFjZV9zdG9yYWdlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICBuYW1lc3BhY2UgYWxnb3JpdGhtIHsKLSAgICAgICAgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vIGZpbmRfZm9ybWF0X2FsbF9jb3B5IChpdGVyYXRvciB2YXJpYW50KSBpbXBsZW1lbnRhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgICAgICAgIHRlbXBsYXRlPCAKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvclQsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgSW5wdXRULAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIEZpbmRlclQsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgRm9ybWF0dGVyVCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGaW5kUmVzdWx0VCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGb3JtYXRSZXN1bHRUID4KLSAgICAgICAgICAgIGlubGluZSBPdXRwdXRJdGVyYXRvclQgZmluZF9mb3JtYXRfYWxsX2NvcHlfaW1wbDIoCi0gICAgICAgICAgICAgICAgT3V0cHV0SXRlcmF0b3JUIE91dHB1dCwKLSAgICAgICAgICAgICAgICBjb25zdCBJbnB1dFQmIElucHV0LAotICAgICAgICAgICAgICAgIEZpbmRlclQgRmluZGVyLAotICAgICAgICAgICAgICAgIEZvcm1hdHRlclQgRm9ybWF0dGVyLAotICAgICAgICAgICAgICAgIGNvbnN0IEZpbmRSZXN1bHRUJiBGaW5kUmVzdWx0LAotICAgICAgICAgICAgICAgIGNvbnN0IEZvcm1hdFJlc3VsdFQmIEZvcm1hdFJlc3VsdCApCi0gICAgICAgICAgICB7ICAgICAgIAotICAgICAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIAotICAgICAgICAgICAgICAgICAgICByYW5nZV9jb25zdF9pdGVyYXRvcjxJbnB1dFQ+Ojp0eXBlIGlucHV0X2l0ZXJhdG9yX3R5cGU7IAotCi0gICAgICAgICAgICAgICAgdHlwZWRlZiBmaW5kX2Zvcm1hdF9zdG9yZTwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0X2l0ZXJhdG9yX3R5cGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0dGVyVCwKLSAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFJlc3VsdFQgPiBzdG9yZV90eXBlOwotCi0gICAgICAgICAgICAgICAgLy8gQ3JlYXRlIHN0b3JlIGZvciB0aGUgZmluZCByZXN1bHQKLSAgICAgICAgICAgICAgICBzdG9yZV90eXBlIE0oIEZpbmRSZXN1bHQsIEZvcm1hdFJlc3VsdCwgRm9ybWF0dGVyICk7Ci0KLSAgICAgICAgICAgICAgICAvLyBJbml0aWFsaXplIGxhc3QgbWF0Y2gKLSAgICAgICAgICAgICAgICBpbnB1dF9pdGVyYXRvcl90eXBlIExhc3RNYXRjaD06Om5kbmJvb3N0OjpiZWdpbihJbnB1dCk7Ci0KLSAgICAgICAgICAgICAgICAvLyBJdGVyYXRlIHRocm91Z2ggYWxsIG1hdGNoZXMKLSAgICAgICAgICAgICAgICB3aGlsZSggTSApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAvLyBDb3B5IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlcXVlbmNlCi0gICAgICAgICAgICAgICAgICAgIE91dHB1dCA9IHN0ZDo6Y29weSggTGFzdE1hdGNoLCBNLmJlZ2luKCksIE91dHB1dCApOwotICAgICAgICAgICAgICAgICAgICAvLyBDb3B5IGZvcm1hdHRlZCByZXN1bHQKLSAgICAgICAgICAgICAgICAgICAgT3V0cHV0ID0gc3RkOjpjb3B5KCA6Om5kbmJvb3N0OjpiZWdpbihNLmZvcm1hdF9yZXN1bHQoKSksIDo6bmRuYm9vc3Q6OmVuZChNLmZvcm1hdF9yZXN1bHQoKSksIE91dHB1dCApOwotCi0gICAgICAgICAgICAgICAgICAgIC8vIFByb2NlZWQgdG8gdGhlIG5leHQgbWF0Y2gKLSAgICAgICAgICAgICAgICAgICAgTGFzdE1hdGNoPU0uZW5kKCk7Ci0gICAgICAgICAgICAgICAgICAgIE09RmluZGVyKCBMYXN0TWF0Y2gsIDo6bmRuYm9vc3Q6OmVuZChJbnB1dCkgKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBDb3B5IHRoZSByZXN0IG9mIHRoZSBzZXF1ZW5jZQotICAgICAgICAgICAgICAgIE91dHB1dCA9IHN0ZDo6Y29weSggTGFzdE1hdGNoLCA6Om5kbmJvb3N0OjplbmQoSW5wdXQpLCBPdXRwdXQgKTsKLQotICAgICAgICAgICAgICAgIHJldHVybiBPdXRwdXQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlPCAKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvclQsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgSW5wdXRULAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIEZpbmRlclQsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgRm9ybWF0dGVyVCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGaW5kUmVzdWx0VCA+Ci0gICAgICAgICAgICBpbmxpbmUgT3V0cHV0SXRlcmF0b3JUIGZpbmRfZm9ybWF0X2FsbF9jb3B5X2ltcGwoCi0gICAgICAgICAgICAgICAgT3V0cHV0SXRlcmF0b3JUIE91dHB1dCwKLSAgICAgICAgICAgICAgICBjb25zdCBJbnB1dFQmIElucHV0LAotICAgICAgICAgICAgICAgIEZpbmRlclQgRmluZGVyLAotICAgICAgICAgICAgICAgIEZvcm1hdHRlclQgRm9ybWF0dGVyLAotICAgICAgICAgICAgICAgIGNvbnN0IEZpbmRSZXN1bHRUJiBGaW5kUmVzdWx0ICkKLSAgICAgICAgICAgIHsgICAKLSAgICAgICAgICAgICAgICBpZiggOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpkZXRhaWw6OmNoZWNrX2ZpbmRfcmVzdWx0KElucHV0LCBGaW5kUmVzdWx0KSApIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZGV0YWlsOjpmaW5kX2Zvcm1hdF9hbGxfY29weV9pbXBsMiggCi0gICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICBJbnB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgIEZpbmRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdHRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgIEZpbmRSZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXR0ZXIoRmluZFJlc3VsdCkgKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpjb3B5KCA6Om5kbmJvb3N0OjpiZWdpbihJbnB1dCksIDo6bmRuYm9vc3Q6OmVuZChJbnB1dCksIE91dHB1dCApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotIC8vIGZpbmRfZm9ybWF0X2FsbF9jb3B5IGltcGxlbWVudGF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgICAgICAgIHRlbXBsYXRlPCAKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBJbnB1dFQsIAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIEZpbmRlclQsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgRm9ybWF0dGVyVCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGaW5kUmVzdWx0VCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGb3JtYXRSZXN1bHRUID4KLSAgICAgICAgICAgIGlubGluZSBJbnB1dFQgZmluZF9mb3JtYXRfYWxsX2NvcHlfaW1wbDIoCi0gICAgICAgICAgICAgICAgY29uc3QgSW5wdXRUJiBJbnB1dCwKLSAgICAgICAgICAgICAgICBGaW5kZXJUIEZpbmRlciwKLSAgICAgICAgICAgICAgICBGb3JtYXR0ZXJUIEZvcm1hdHRlciwKLSAgICAgICAgICAgICAgICBjb25zdCBGaW5kUmVzdWx0VCYgRmluZFJlc3VsdCwKLSAgICAgICAgICAgICAgICBjb25zdCBGb3JtYXRSZXN1bHRUJiBGb3JtYXRSZXN1bHQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgCi0gICAgICAgICAgICAgICAgICAgIHJhbmdlX2NvbnN0X2l0ZXJhdG9yPElucHV0VD46OnR5cGUgaW5wdXRfaXRlcmF0b3JfdHlwZTsgCi0KLSAgICAgICAgICAgICAgICB0eXBlZGVmIGZpbmRfZm9ybWF0X3N0b3JlPAotICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfaXRlcmF0b3JfdHlwZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXR0ZXJULAotICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0UmVzdWx0VCA+IHN0b3JlX3R5cGU7Ci0KLSAgICAgICAgICAgICAgICAvLyBDcmVhdGUgc3RvcmUgZm9yIHRoZSBmaW5kIHJlc3VsdAotICAgICAgICAgICAgICAgIHN0b3JlX3R5cGUgTSggRmluZFJlc3VsdCwgRm9ybWF0UmVzdWx0LCBGb3JtYXR0ZXIgKTsKLQotICAgICAgICAgICAgICAgIC8vIEluaXRpYWxpemUgbGFzdCBtYXRjaAotICAgICAgICAgICAgICAgIGlucHV0X2l0ZXJhdG9yX3R5cGUgTGFzdE1hdGNoPTo6bmRuYm9vc3Q6OmJlZ2luKElucHV0KTsKLQotICAgICAgICAgICAgICAgIC8vIE91dHB1dCB0ZW1wb3JhcnkKLSAgICAgICAgICAgICAgICBJbnB1dFQgT3V0cHV0OwotCi0gICAgICAgICAgICAgICAgLy8gSXRlcmF0ZSB0aHJvdWdoIGFsbCBtYXRjaGVzCi0gICAgICAgICAgICAgICAgd2hpbGUoIE0gKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gQ29weSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzZXF1ZW5jZQotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6YWxnb3JpdGhtOjpkZXRhaWw6Omluc2VydCggT3V0cHV0LCA6Om5kbmJvb3N0OjplbmQoT3V0cHV0KSwgTGFzdE1hdGNoLCBNLmJlZ2luKCkgKTsKLSAgICAgICAgICAgICAgICAgICAgLy8gQ29weSBmb3JtYXR0ZWQgcmVzdWx0Ci0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjphbGdvcml0aG06OmRldGFpbDo6aW5zZXJ0KCBPdXRwdXQsIDo6bmRuYm9vc3Q6OmVuZChPdXRwdXQpLCBNLmZvcm1hdF9yZXN1bHQoKSApOwotCi0gICAgICAgICAgICAgICAgICAgIC8vIFByb2NlZWQgdG8gdGhlIG5leHQgbWF0Y2gKLSAgICAgICAgICAgICAgICAgICAgTGFzdE1hdGNoPU0uZW5kKCk7Ci0gICAgICAgICAgICAgICAgICAgIE09RmluZGVyKCBMYXN0TWF0Y2gsIDo6bmRuYm9vc3Q6OmVuZChJbnB1dCkgKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBDb3B5IHRoZSByZXN0IG9mIHRoZSBzZXF1ZW5jZQotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZGV0YWlsOjppbnNlcnQoIE91dHB1dCwgOjpuZG5ib29zdDo6ZW5kKE91dHB1dCksIExhc3RNYXRjaCwgOjpuZG5ib29zdDo6ZW5kKElucHV0KSApOwotCi0gICAgICAgICAgICAgICAgcmV0dXJuIE91dHB1dDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGVtcGxhdGU8IAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIElucHV0VCwgCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgRmluZGVyVCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGb3JtYXR0ZXJULAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIEZpbmRSZXN1bHRUID4KLSAgICAgICAgICAgIGlubGluZSBJbnB1dFQgZmluZF9mb3JtYXRfYWxsX2NvcHlfaW1wbCgKLSAgICAgICAgICAgICAgICBjb25zdCBJbnB1dFQmIElucHV0LAotICAgICAgICAgICAgICAgIEZpbmRlclQgRmluZGVyLAotICAgICAgICAgICAgICAgIEZvcm1hdHRlclQgRm9ybWF0dGVyLAotICAgICAgICAgICAgICAgIGNvbnN0IEZpbmRSZXN1bHRUJiBGaW5kUmVzdWx0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmKCA6Om5kbmJvb3N0OjphbGdvcml0aG06OmRldGFpbDo6Y2hlY2tfZmluZF9yZXN1bHQoSW5wdXQsIEZpbmRSZXN1bHQpICkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpkZXRhaWw6OmZpbmRfZm9ybWF0X2FsbF9jb3B5X2ltcGwyKAotICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICBGaW5kZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXR0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBGaW5kUmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0dGVyKEZpbmRSZXN1bHQpICk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIElucHV0OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotIC8vIGZpbmRfZm9ybWF0X2FsbCBpbXBsZW1lbnRhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotICAgICAgICAKLSAgICAgICAgICAgIHRlbXBsYXRlPAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIElucHV0VCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGaW5kZXJULAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIEZvcm1hdHRlclQsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgRmluZFJlc3VsdFQsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgRm9ybWF0UmVzdWx0VCA+Ci0gICAgICAgICAgICBpbmxpbmUgdm9pZCBmaW5kX2Zvcm1hdF9hbGxfaW1wbDIoIAotICAgICAgICAgICAgICAgIElucHV0VCYgSW5wdXQsCi0gICAgICAgICAgICAgICAgRmluZGVyVCBGaW5kZXIsCi0gICAgICAgICAgICAgICAgRm9ybWF0dGVyVCBGb3JtYXR0ZXIsCi0gICAgICAgICAgICAgICAgRmluZFJlc3VsdFQgRmluZFJlc3VsdCwKLSAgICAgICAgICAgICAgICBGb3JtYXRSZXN1bHRUIEZvcm1hdFJlc3VsdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSAKLSAgICAgICAgICAgICAgICAgICAgcmFuZ2VfaXRlcmF0b3I8SW5wdXRUPjo6dHlwZSBpbnB1dF9pdGVyYXRvcl90eXBlOyAKLSAgICAgICAgICAgICAgICB0eXBlZGVmIGZpbmRfZm9ybWF0X3N0b3JlPAotICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfaXRlcmF0b3JfdHlwZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXR0ZXJULAotICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0UmVzdWx0VCA+IHN0b3JlX3R5cGU7Ci0KLSAgICAgICAgICAgICAgICAvLyBDcmVhdGUgc3RvcmUgZm9yIHRoZSBmaW5kIHJlc3VsdAotICAgICAgICAgICAgICAgIHN0b3JlX3R5cGUgTSggRmluZFJlc3VsdCwgRm9ybWF0UmVzdWx0LCBGb3JtYXR0ZXIgKTsKLSAgICAgICAgICAKLSAgICAgICAgICAgICAgICAvLyBJbnN0YW50aWF0ZSByZXBsYWNlbWVudCBzdG9yYWdlCi0gICAgICAgICAgICAgICAgc3RkOjpkZXF1ZTwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIHJhbmdlX3ZhbHVlPElucHV0VD46OnR5cGU+IFN0b3JhZ2U7Ci0KLSAgICAgICAgICAgICAgICAvLyBJbml0aWFsaXplIHJlcGxhY2VtZW50IGl0ZXJhdG9ycwotICAgICAgICAgICAgICAgIGlucHV0X2l0ZXJhdG9yX3R5cGUgSW5zZXJ0SXQ9OjpuZG5ib29zdDo6YmVnaW4oSW5wdXQpOwotICAgICAgICAgICAgICAgIGlucHV0X2l0ZXJhdG9yX3R5cGUgU2VhcmNoSXQ9OjpuZG5ib29zdDo6YmVnaW4oSW5wdXQpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHdoaWxlKCBNICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIHByb2Nlc3MgdGhlIHNlZ21lbnQKLSAgICAgICAgICAgICAgICAgICAgSW5zZXJ0SXQ9cHJvY2Vzc19zZWdtZW50KCAKLSAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBJbnB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgIEluc2VydEl0LAotICAgICAgICAgICAgICAgICAgICAgICAgU2VhcmNoSXQsCi0gICAgICAgICAgICAgICAgICAgICAgICBNLmJlZ2luKCkgKTsKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIC8vIEFkanVzdCBzZWFyY2ggaXRlcmF0b3IKLSAgICAgICAgICAgICAgICAgICAgU2VhcmNoSXQ9TS5lbmQoKTsKLQotICAgICAgICAgICAgICAgICAgICAvLyBDb3B5IGZvcm1hdHRlZCByZXBsYWNlIHRvIHRoZSBzdG9yYWdlCi0gICAgICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZGV0YWlsOjpjb3B5X3RvX3N0b3JhZ2UoIFN0b3JhZ2UsIE0uZm9ybWF0X3Jlc3VsdCgpICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gRmluZCByYW5nZSBmb3IgYSBuZXh0IG1hdGNoCi0gICAgICAgICAgICAgICAgICAgIE09RmluZGVyKCBTZWFyY2hJdCwgOjpuZG5ib29zdDo6ZW5kKElucHV0KSApOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIHByb2Nlc3MgdGhlIGxhc3Qgc2VnbWVudAotICAgICAgICAgICAgICAgIEluc2VydEl0PTo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZGV0YWlsOjpwcm9jZXNzX3NlZ21lbnQoIAotICAgICAgICAgICAgICAgICAgICBTdG9yYWdlLAotICAgICAgICAgICAgICAgICAgICBJbnB1dCwKLSAgICAgICAgICAgICAgICAgICAgSW5zZXJ0SXQsCi0gICAgICAgICAgICAgICAgICAgIFNlYXJjaEl0LAotICAgICAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjplbmQoSW5wdXQpICk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKCBTdG9yYWdlLmVtcHR5KCkgKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gVHJ1bmNhdGUgaW5wdXQKLSAgICAgICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpkZXRhaWw6OmVyYXNlKCBJbnB1dCwgSW5zZXJ0SXQsIDo6bmRuYm9vc3Q6OmVuZChJbnB1dCkgKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gQ29weSByZW1haW5pbmcgZGF0YSB0byB0aGUgZW5kIG9mIGlucHV0Ci0gICAgICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZGV0YWlsOjppbnNlcnQoIElucHV0LCA6Om5kbmJvb3N0OjplbmQoSW5wdXQpLCBTdG9yYWdlLmJlZ2luKCksIFN0b3JhZ2UuZW5kKCkgKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlPAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIElucHV0VCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGaW5kZXJULAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIEZvcm1hdHRlclQsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgRmluZFJlc3VsdFQgPgotICAgICAgICAgICAgaW5saW5lIHZvaWQgZmluZF9mb3JtYXRfYWxsX2ltcGwoIAotICAgICAgICAgICAgICAgIElucHV0VCYgSW5wdXQsCi0gICAgICAgICAgICAgICAgRmluZGVyVCBGaW5kZXIsCi0gICAgICAgICAgICAgICAgRm9ybWF0dGVyVCBGb3JtYXR0ZXIsCi0gICAgICAgICAgICAgICAgRmluZFJlc3VsdFQgRmluZFJlc3VsdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiggOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpkZXRhaWw6OmNoZWNrX2ZpbmRfcmVzdWx0KElucHV0LCBGaW5kUmVzdWx0KSApIHsKLSAgICAgICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpkZXRhaWw6OmZpbmRfZm9ybWF0X2FsbF9pbXBsMigKLSAgICAgICAgICAgICAgICAgICAgICAgIElucHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgRmluZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0dGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgRmluZFJlc3VsdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdHRlcihGaW5kUmVzdWx0KSApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICB9IC8vIG5hbWVzcGFjZSBkZXRhaWwKLSAgICB9IC8vIG5hbWVzcGFjZSBhbGdvcml0aG0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gTkROQk9PU1RfU1RSSU5HX0ZJTkRfRk9STUFUX0FMTF9ERVRBSUxfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZGV0YWlsL2ZpbmRfZm9ybWF0X3N0b3JlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9kZXRhaWwvZmluZF9mb3JtYXRfc3RvcmUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OWMxMzdmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9kZXRhaWwvZmluZF9mb3JtYXRfc3RvcmUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODkgKzAsMCBAQAotLy8gIEJvb3N0IHN0cmluZ19hbGdvIGxpYnJhcnkgZmluZF9mb3JtYXRfc3RvcmUuaHBwIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IFBhdm9sIERyb2JhIDIwMDItMjAwMy4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgICAgICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvIGZvciB1cGRhdGVzLCBkb2N1bWVudGF0aW9uLCBhbmQgcmV2aXNpb24gaGlzdG9yeS4KLQotI2lmbmRlZiBORE5CT09TVF9TVFJJTkdfRklORF9GT1JNQVRfU1RPUkVfREVUQUlMX0hQUAotI2RlZmluZSBORE5CT09TVF9TVFJJTkdfRklORF9GT1JNQVRfU1RPUkVfREVUQUlMX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yX3JhbmdlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICBuYW1lc3BhY2UgYWxnb3JpdGhtIHsKLSAgICAgICAgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vICB0ZW1wb3JhcnkgZm9ybWF0IGFuZCBmaW5kIHJlc3VsdCBzdG9yYWdlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPj0gMTQwMCkKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDUxMikgLy9hc3NpZ25tZW50IG9wZXJhdG9yIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQKLSNlbmRpZgotICAgICAgICAgICAgdGVtcGxhdGU8IAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvclQsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgRm9ybWF0dGVyVCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGb3JtYXRSZXN1bHRUID4KLSAgICAgICAgICAgIGNsYXNzIGZpbmRfZm9ybWF0X3N0b3JlIDogCi0gICAgICAgICAgICAgICAgcHVibGljIGl0ZXJhdG9yX3JhbmdlPEZvcndhcmRJdGVyYXRvclQ+Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICAgICAgLy8gdHlwZWRlZnMKLSAgICAgICAgICAgICAgICB0eXBlZGVmIGl0ZXJhdG9yX3JhbmdlPEZvcndhcmRJdGVyYXRvclQ+IGJhc2VfdHlwZTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIEZvcm1hdHRlclQgIGZvcm1hdHRlcl90eXBlOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgRm9ybWF0UmVzdWx0VCBmb3JtYXRfcmVzdWx0X3R5cGU7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICAgICAgLy8gQ29uc3RydWN0aW9uCi0gICAgICAgICAgICAgICAgZmluZF9mb3JtYXRfc3RvcmUoIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzZV90eXBlJiBGaW5kUmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZm9ybWF0X3Jlc3VsdF90eXBlJiBGb3JtYXRSZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmb3JtYXR0ZXJfdHlwZSYgRm9ybWF0dGVyICkgOgotICAgICAgICAgICAgICAgICAgICBiYXNlX3R5cGUoRmluZFJlc3VsdCksCi0gICAgICAgICAgICAgICAgICAgIG1fRm9ybWF0UmVzdWx0KEZvcm1hdFJlc3VsdCksCi0gICAgICAgICAgICAgICAgICAgIG1fRm9ybWF0dGVyKEZvcm1hdHRlcikge30KLQotICAgICAgICAgICAgICAgIC8vIEFzc2lnbm1lbnQKLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRmluZFJlc3VsdFQgPgotICAgICAgICAgICAgICAgIGZpbmRfZm9ybWF0X3N0b3JlJiBvcGVyYXRvcj0oIEZpbmRSZXN1bHRUIEZpbmRSZXN1bHQgKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2U8Rm9yd2FyZEl0ZXJhdG9yVD46Om9wZXJhdG9yPShGaW5kUmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgaWYoICF0aGlzLT5lbXB0eSgpICkgewotICAgICAgICAgICAgICAgICAgICAgICAgbV9Gb3JtYXRSZXN1bHQ9bV9Gb3JtYXR0ZXIoRmluZFJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBSZXRyaWV2ZSBmb3JtYXQgcmVzdWx0Ci0gICAgICAgICAgICAgICAgY29uc3QgZm9ybWF0X3Jlc3VsdF90eXBlJiBmb3JtYXRfcmVzdWx0KCkKLSAgICAgICAgICAgICAgICB7ICAgCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBtX0Zvcm1hdFJlc3VsdDsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICAgICAgZm9ybWF0X3Jlc3VsdF90eXBlIG1fRm9ybWF0UmVzdWx0OwotICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlcl90eXBlJiBtX0Zvcm1hdHRlcjsKLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIElucHV0VCwgdHlwZW5hbWUgRmluZFJlc3VsdFQ+Ci0gICAgICAgICAgICBib29sIGNoZWNrX2ZpbmRfcmVzdWx0KElucHV0VCYsIEZpbmRSZXN1bHRUJiBGaW5kUmVzdWx0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIAotICAgICAgICAgICAgICAgICAgICByYW5nZV9jb25zdF9pdGVyYXRvcjxJbnB1dFQ+Ojp0eXBlIGlucHV0X2l0ZXJhdG9yX3R5cGU7IAotICAgICAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlPGlucHV0X2l0ZXJhdG9yX3R5cGU+IFJlc3VsdFJhbmdlKEZpbmRSZXN1bHQpOwotICAgICAgICAgICAgICAgIHJldHVybiAhUmVzdWx0UmFuZ2UuZW1wdHkoKTsKLSAgICAgICAgICAgIH0KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPj0gMTQwMCkKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLSAgICAgICAgfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0gICAgfSAvLyBuYW1lc3BhY2UgYWxnb3JpdGhtCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1NUUklOR19GSU5EX0ZPUk1BVF9TVE9SRV9ERVRBSUxfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZGV0YWlsL2ZpbmRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZGV0YWlsL2ZpbmRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0NDZlOTIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2RldGFpbC9maW5kZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjQ2ICswLDAgQEAKLS8vICBCb29zdCBzdHJpbmdfYWxnbyBsaWJyYXJ5IGZpbmRlci5ocHAgaGVhZGVyIGZpbGUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBDb3B5cmlnaHQgUGF2b2wgRHJvYmEgMjAwMi0yMDA2LgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAgIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICAgICAgICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy8gZm9yIHVwZGF0ZXMsIGRvY3VtZW50YXRpb24sIGFuZCByZXZpc2lvbiBoaXN0b3J5LgotCi0jaWZuZGVmIE5ETkJPT1NUX1NUUklOR19GSU5ERVJfREVUQUlMX0hQUAotI2RlZmluZSBORE5CT09TVF9TVFJJTkdfRklOREVSX0RFVEFJTF9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2NvbnN0YW50cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL2l0ZXJhdG9yLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yX3JhbmdlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9iZWdpbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9lbXB0eS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvYXNfbGl0ZXJhbC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgbmFtZXNwYWNlIGFsZ29yaXRobSB7Ci0gICAgICAgIG5hbWVzcGFjZSBkZXRhaWwgewotCi0KLS8vICBmaW5kIGZpcnN0IGZ1bmN0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgICAgICAgICAvLyBmaW5kIGEgc3Vic2VxdWVuY2UgaW4gdGhlIHNlcXVlbmNlICggZnVuY3RvciApCi0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICAgIFJldHVybnMgYSBwYWlyIDxiZWdpbixlbmQ+IG1hcmtpbmcgdGhlIHN1YnNlcXVlbmNlIGluIHRoZSBzZXF1ZW5jZS4KLSAgICAgICAgICAgICAgICBJZiB0aGUgZmluZCBmYWlscywgZnVuY3RvciByZXR1cm5zIDxFbmQsRW5kPgotICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNlYXJjaEl0ZXJhdG9yVCx0eXBlbmFtZSBQcmVkaWNhdGVUPgotICAgICAgICAgICAgc3RydWN0IGZpcnN0X2ZpbmRlckYKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFNlYXJjaEl0ZXJhdG9yVCBzZWFyY2hfaXRlcmF0b3JfdHlwZTsKLQotICAgICAgICAgICAgICAgIC8vIENvbnN0cnVjdGlvbgotICAgICAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTZWFyY2hUID4KLSAgICAgICAgICAgICAgICBmaXJzdF9maW5kZXJGKCBjb25zdCBTZWFyY2hUJiBTZWFyY2gsIFByZWRpY2F0ZVQgQ29tcCApIDoKLSAgICAgICAgICAgICAgICAgICAgbV9TZWFyY2goOjpuZG5ib29zdDo6YmVnaW4oU2VhcmNoKSwgOjpuZG5ib29zdDo6ZW5kKFNlYXJjaCkpLCBtX0NvbXAoQ29tcCkge30KLSAgICAgICAgICAgICAgICBmaXJzdF9maW5kZXJGKAotICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2l0ZXJhdG9yX3R5cGUgU2VhcmNoQmVnaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaXRlcmF0b3JfdHlwZSBTZWFyY2hFbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICBQcmVkaWNhdGVUIENvbXAgKSA6Ci0gICAgICAgICAgICAgICAgICAgIG1fU2VhcmNoKFNlYXJjaEJlZ2luLCBTZWFyY2hFbmQpLCBtX0NvbXAoQ29tcCkge30KLQotICAgICAgICAgICAgICAgIC8vIE9wZXJhdGlvbgotICAgICAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3JUID4KLSAgICAgICAgICAgICAgICBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3JUPgotICAgICAgICAgICAgICAgIG9wZXJhdG9yKCkoCi0gICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgQmVnaW4sCi0gICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgRW5kICkgY29uc3QKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHR5cGVkZWYgaXRlcmF0b3JfcmFuZ2U8Rm9yd2FyZEl0ZXJhdG9yVD4gcmVzdWx0X3R5cGU7Ci0gICAgICAgICAgICAgICAgICAgIHR5cGVkZWYgRm9yd2FyZEl0ZXJhdG9yVCBpbnB1dF9pdGVyYXRvcl90eXBlOwotCi0gICAgICAgICAgICAgICAgICAgIC8vIE91dGVyIGxvb3AKLSAgICAgICAgICAgICAgICAgICAgZm9yKGlucHV0X2l0ZXJhdG9yX3R5cGUgT3V0ZXJJdD1CZWdpbjsKLSAgICAgICAgICAgICAgICAgICAgICAgIE91dGVySXQhPUVuZDsKLSAgICAgICAgICAgICAgICAgICAgICAgICsrT3V0ZXJJdCkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2FuaXR5IGNoZWNrCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiggbmRuYm9vc3Q6OmVtcHR5KG1fU2VhcmNoKSApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdF90eXBlKCBFbmQsIEVuZCApOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9pdGVyYXRvcl90eXBlIElubmVySXQ9T3V0ZXJJdDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pdGVyYXRvcl90eXBlIFN1YnN0ckl0PW1fU2VhcmNoLmJlZ2luKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IoOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIElubmVySXQhPUVuZCAmJiBTdWJzdHJJdCE9bV9TZWFyY2guZW5kKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKytJbm5lckl0LCsrU3Vic3RySXQpCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoICEoIG1fQ29tcCgqSW5uZXJJdCwqU3Vic3RySXQpICkgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3Vic3RyaW5nIG1hdGNoaW5nIHN1Y2NlZWRlZAotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBTdWJzdHJJdD09bV9TZWFyY2guZW5kKCkgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRfdHlwZSggT3V0ZXJJdCwgSW5uZXJJdCApOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdF90eXBlKCBFbmQsIEVuZCApOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgICAgICBpdGVyYXRvcl9yYW5nZTxzZWFyY2hfaXRlcmF0b3JfdHlwZT4gbV9TZWFyY2g7Ci0gICAgICAgICAgICAgICAgUHJlZGljYXRlVCBtX0NvbXA7Ci0gICAgICAgICAgICB9OwotCi0vLyAgZmluZCBsYXN0IGZ1bmN0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgICAgICAgICAvLyBmaW5kIHRoZSBsYXN0IG1hdGNoIGEgc3Vic2VxdWVuY2UgaW4gdGhlIHNlcXVlbmNlICggZnVuY3RvciApCi0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICAgIFJldHVybnMgYSBwYWlyIDxiZWdpbixlbmQ+IG1hcmtpbmcgdGhlIHN1YnNlcXVlbmNlIGluIHRoZSBzZXF1ZW5jZS4KLSAgICAgICAgICAgICAgICBJZiB0aGUgZmluZCBmYWlscywgcmV0dXJucyA8RW5kLEVuZD4KLSAgICAgICAgICAgICovCi0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWFyY2hJdGVyYXRvclQsIHR5cGVuYW1lIFByZWRpY2F0ZVQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgbGFzdF9maW5kZXJGCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBTZWFyY2hJdGVyYXRvclQgc2VhcmNoX2l0ZXJhdG9yX3R5cGU7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBmaXJzdF9maW5kZXJGPAotICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaXRlcmF0b3JfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgUHJlZGljYXRlVD4gZmlyc3RfZmluZGVyX3R5cGU7Ci0KLSAgICAgICAgICAgICAgICAvLyBDb25zdHJ1Y3Rpb24KLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgU2VhcmNoVCA+Ci0gICAgICAgICAgICAgICAgbGFzdF9maW5kZXJGKCBjb25zdCBTZWFyY2hUJiBTZWFyY2gsIFByZWRpY2F0ZVQgQ29tcCApIDoKLSAgICAgICAgICAgICAgICAgICAgbV9TZWFyY2goOjpuZG5ib29zdDo6YmVnaW4oU2VhcmNoKSwgOjpuZG5ib29zdDo6ZW5kKFNlYXJjaCkpLCBtX0NvbXAoQ29tcCkge30KLSAgICAgICAgICAgICAgICBsYXN0X2ZpbmRlckYoCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaXRlcmF0b3JfdHlwZSBTZWFyY2hCZWdpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pdGVyYXRvcl90eXBlIFNlYXJjaEVuZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFByZWRpY2F0ZVQgQ29tcCApIDoKLSAgICAgICAgICAgICAgICAgICAgbV9TZWFyY2goU2VhcmNoQmVnaW4sIFNlYXJjaEVuZCksIG1fQ29tcChDb21wKSB7fQotCi0gICAgICAgICAgICAgICAgLy8gT3BlcmF0aW9uCi0gICAgICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvclQgPgotICAgICAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlPEZvcndhcmRJdGVyYXRvclQ+Ci0gICAgICAgICAgICAgICAgb3BlcmF0b3IoKSgKLSAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBCZWdpbiwKLSAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBFbmQgKSBjb25zdAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgdHlwZWRlZiBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3JUPiByZXN1bHRfdHlwZTsKLQotICAgICAgICAgICAgICAgICAgICBpZiggbmRuYm9vc3Q6OmVtcHR5KG1fU2VhcmNoKSApCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0X3R5cGUoIEVuZCwgRW5kICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgbmRuYm9vc3Q6OmRldGFpbDo6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpdGVyYXRvcl90cmFpdHM8Rm9yd2FyZEl0ZXJhdG9yVD46Oml0ZXJhdG9yX2NhdGVnb3J5IGNhdGVnb3J5OwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmaW5kaXQoIEJlZ2luLCBFbmQsIGNhdGVnb3J5KCkgKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICAgICAgLy8gZm9yd2FyZCBpdGVyYXRvcgotICAgICAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3JUID4KLSAgICAgICAgICAgICAgICBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3JUPgotICAgICAgICAgICAgICAgIGZpbmRpdCgKLSAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBCZWdpbiwKLSAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBFbmQsCi0gICAgICAgICAgICAgICAgICAgIHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcgKSBjb25zdAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgdHlwZWRlZiBGb3J3YXJkSXRlcmF0b3JUIGlucHV0X2l0ZXJhdG9yX3R5cGU7Ci0gICAgICAgICAgICAgICAgICAgIHR5cGVkZWYgaXRlcmF0b3JfcmFuZ2U8Rm9yd2FyZEl0ZXJhdG9yVD4gcmVzdWx0X3R5cGU7Ci0KLSAgICAgICAgICAgICAgICAgICAgZmlyc3RfZmluZGVyX3R5cGUgZmlyc3RfZmluZGVyKAotICAgICAgICAgICAgICAgICAgICAgICAgbV9TZWFyY2guYmVnaW4oKSwgbV9TZWFyY2guZW5kKCksIG1fQ29tcCApOwotCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdF90eXBlIE09Zmlyc3RfZmluZGVyKCBCZWdpbiwgRW5kICk7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdF90eXBlIExhc3Q9TTsKLQotICAgICAgICAgICAgICAgICAgICB3aGlsZSggTSApCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIExhc3Q9TTsKLSAgICAgICAgICAgICAgICAgICAgICAgIE09Zmlyc3RfZmluZGVyKCA6Om5kbmJvb3N0OjplbmQoTSksIEVuZCApOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIExhc3Q7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gYmlkaXJlY3Rpb25hbCBpdGVyYXRvcgotICAgICAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3JUID4KLSAgICAgICAgICAgICAgICBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3JUPgotICAgICAgICAgICAgICAgIGZpbmRpdCgKLSAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBCZWdpbiwKLSAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBFbmQsCi0gICAgICAgICAgICAgICAgICAgIHN0ZDo6YmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcgKSBjb25zdAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgdHlwZWRlZiBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3JUPiByZXN1bHRfdHlwZTsKLSAgICAgICAgICAgICAgICAgICAgdHlwZWRlZiBGb3J3YXJkSXRlcmF0b3JUIGlucHV0X2l0ZXJhdG9yX3R5cGU7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gT3V0ZXIgbG9vcAotICAgICAgICAgICAgICAgICAgICBmb3IoaW5wdXRfaXRlcmF0b3JfdHlwZSBPdXRlckl0PUVuZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIE91dGVySXQhPUJlZ2luOyApCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0X2l0ZXJhdG9yX3R5cGUgT3V0ZXJJdDI9LS1PdXRlckl0OwotCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9pdGVyYXRvcl90eXBlIElubmVySXQ9T3V0ZXJJdDI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaXRlcmF0b3JfdHlwZSBTdWJzdHJJdD1tX1NlYXJjaC5iZWdpbigpOwotICAgICAgICAgICAgICAgICAgICAgICAgZm9yKDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbm5lckl0IT1FbmQgJiYgU3Vic3RySXQhPW1fU2VhcmNoLmVuZCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrSW5uZXJJdCwrK1N1YnN0ckl0KQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCAhKCBtX0NvbXAoKklubmVySXQsKlN1YnN0ckl0KSApICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1YnN0cmluZyBtYXRjaGluZyBzdWNjZWVkZWQKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBTdWJzdHJJdD09bV9TZWFyY2guZW5kKCkgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRfdHlwZSggT3V0ZXJJdDIsIElubmVySXQgKTsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRfdHlwZSggRW5kLCBFbmQgKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2U8c2VhcmNoX2l0ZXJhdG9yX3R5cGU+IG1fU2VhcmNoOwotICAgICAgICAgICAgICAgIFByZWRpY2F0ZVQgbV9Db21wOwotICAgICAgICAgICAgfTsKLQotLy8gIGZpbmQgbi10aCBmdW5jdG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAgICAgLy8gZmluZCB0aGUgbi10aCBtYXRjaCBvZiBhIHN1YnNlcXVlbmNlIGluIHRoZSBzZXF1ZW5jZSAoIGZ1bmN0b3IgKQotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAgICBSZXR1cm5zIGEgcGFpciA8YmVnaW4sZW5kPiBtYXJraW5nIHRoZSBzdWJzZXF1ZW5jZSBpbiB0aGUgc2VxdWVuY2UuCi0gICAgICAgICAgICAgICAgSWYgdGhlIGZpbmQgZmFpbHMsIHJldHVybnMgPEVuZCxFbmQ+Ci0gICAgICAgICAgICAqLwotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU2VhcmNoSXRlcmF0b3JULCB0eXBlbmFtZSBQcmVkaWNhdGVUPgotICAgICAgICAgICAgc3RydWN0IG50aF9maW5kZXJGCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBTZWFyY2hJdGVyYXRvclQgc2VhcmNoX2l0ZXJhdG9yX3R5cGU7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBmaXJzdF9maW5kZXJGPAotICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaXRlcmF0b3JfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgUHJlZGljYXRlVD4gZmlyc3RfZmluZGVyX3R5cGU7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBsYXN0X2ZpbmRlckY8Ci0gICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pdGVyYXRvcl90eXBlLAotICAgICAgICAgICAgICAgICAgICBQcmVkaWNhdGVUPiBsYXN0X2ZpbmRlcl90eXBlOwotCi0gICAgICAgICAgICAgICAgLy8gQ29uc3RydWN0aW9uCi0gICAgICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFNlYXJjaFQgPgotICAgICAgICAgICAgICAgIG50aF9maW5kZXJGKAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2VhcmNoVCYgU2VhcmNoLAotICAgICAgICAgICAgICAgICAgICAgICAgaW50IE50aCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFByZWRpY2F0ZVQgQ29tcCkgOgotICAgICAgICAgICAgICAgICAgICBtX1NlYXJjaCg6Om5kbmJvb3N0OjpiZWdpbihTZWFyY2gpLCA6Om5kbmJvb3N0OjplbmQoU2VhcmNoKSksCi0gICAgICAgICAgICAgICAgICAgIG1fTnRoKE50aCksCi0gICAgICAgICAgICAgICAgICAgIG1fQ29tcChDb21wKSB7fQotICAgICAgICAgICAgICAgIG50aF9maW5kZXJGKAotICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2l0ZXJhdG9yX3R5cGUgU2VhcmNoQmVnaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaXRlcmF0b3JfdHlwZSBTZWFyY2hFbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgTnRoLAotICAgICAgICAgICAgICAgICAgICAgICAgUHJlZGljYXRlVCBDb21wKSA6Ci0gICAgICAgICAgICAgICAgICAgIG1fU2VhcmNoKFNlYXJjaEJlZ2luLCBTZWFyY2hFbmQpLAotICAgICAgICAgICAgICAgICAgICBtX050aChOdGgpLAotICAgICAgICAgICAgICAgICAgICBtX0NvbXAoQ29tcCkge30KLQotICAgICAgICAgICAgICAgIC8vIE9wZXJhdGlvbgotICAgICAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3JUID4KLSAgICAgICAgICAgICAgICBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3JUPgotICAgICAgICAgICAgICAgIG9wZXJhdG9yKCkoCi0gICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgQmVnaW4sCi0gICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgRW5kICkgY29uc3QKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlmKG1fTnRoPj0wKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmluZF9mb3J3YXJkKEJlZ2luLCBFbmQsIG1fTnRoKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmaW5kX2JhY2t3YXJkKEJlZ2luLCBFbmQsIC1tX050aCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgICAgICAvLyBJbXBsZW1lbnRhdGlvbiBoZWxwZXJzCi0gICAgICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvclQgPgotICAgICAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlPEZvcndhcmRJdGVyYXRvclQ+Ci0gICAgICAgICAgICAgICAgZmluZF9mb3J3YXJkKAotICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEJlZ2luLAotICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEVuZCwKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IE4pIGNvbnN0Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICB0eXBlZGVmIEZvcndhcmRJdGVyYXRvclQgaW5wdXRfaXRlcmF0b3JfdHlwZTsKLSAgICAgICAgICAgICAgICAgICAgdHlwZWRlZiBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3JUPiByZXN1bHRfdHlwZTsKLQotICAgICAgICAgICAgICAgICAgICAvLyBTYW5pdHkgY2hlY2sKLSAgICAgICAgICAgICAgICAgICAgaWYoIG5kbmJvb3N0OjplbXB0eShtX1NlYXJjaCkgKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdF90eXBlKCBFbmQsIEVuZCApOwotCi0gICAgICAgICAgICAgICAgICAgIC8vIEluc3RhbnRpYXRlIGZpbmQgZnVuY3RvcgotICAgICAgICAgICAgICAgICAgICBmaXJzdF9maW5kZXJfdHlwZSBmaXJzdF9maW5kZXIoCi0gICAgICAgICAgICAgICAgICAgICAgICBtX1NlYXJjaC5iZWdpbigpLCBtX1NlYXJjaC5lbmQoKSwgbV9Db21wICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0X3R5cGUgTSggQmVnaW4sIEJlZ2luICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgZm9yKCB1bnNpZ25lZCBpbnQgbj0wOyBuPD1OOyArK24gKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBmaW5kIG5leHQgbWF0Y2gKLSAgICAgICAgICAgICAgICAgICAgICAgIE09Zmlyc3RfZmluZGVyKCA6Om5kbmJvb3N0OjplbmQoTSksIEVuZCApOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoICFNICkKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTdWJzZXF1ZW5jZSBub3QgZm91bmQsIHJldHVybgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBNOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE07Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvclQgPgotICAgICAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlPEZvcndhcmRJdGVyYXRvclQ+Ci0gICAgICAgICAgICAgICAgZmluZF9iYWNrd2FyZCgKLSAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBCZWdpbiwKLSAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBFbmQsCi0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBOKSBjb25zdAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgdHlwZWRlZiBGb3J3YXJkSXRlcmF0b3JUIGlucHV0X2l0ZXJhdG9yX3R5cGU7Ci0gICAgICAgICAgICAgICAgICAgIHR5cGVkZWYgaXRlcmF0b3JfcmFuZ2U8Rm9yd2FyZEl0ZXJhdG9yVD4gcmVzdWx0X3R5cGU7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gU2FuaXR5IGNoZWNrCi0gICAgICAgICAgICAgICAgICAgIGlmKCBuZG5ib29zdDo6ZW1wdHkobV9TZWFyY2gpICkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRfdHlwZSggRW5kLCBFbmQgKTsKLQotICAgICAgICAgICAgICAgICAgICAvLyBJbnN0YW50aWF0ZSBmaW5kIGZ1bmN0b3IKLSAgICAgICAgICAgICAgICAgICAgbGFzdF9maW5kZXJfdHlwZSBsYXN0X2ZpbmRlcigKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fU2VhcmNoLmJlZ2luKCksIG1fU2VhcmNoLmVuZCgpLCBtX0NvbXAgKTsKLQotICAgICAgICAgICAgICAgICAgICByZXN1bHRfdHlwZSBNKCBFbmQsIEVuZCApOwotCi0gICAgICAgICAgICAgICAgICAgIGZvciggdW5zaWduZWQgaW50IG49MTsgbjw9TjsgKytuICkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmluZCBuZXh0IG1hdGNoCi0gICAgICAgICAgICAgICAgICAgICAgICBNPWxhc3RfZmluZGVyKCBCZWdpbiwgOjpuZG5ib29zdDo6YmVnaW4oTSkgKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhTSApCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3Vic2VxdWVuY2Ugbm90IGZvdW5kLCByZXR1cm4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBNOwotICAgICAgICAgICAgICAgIH0KLQotCi0gICAgICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlPHNlYXJjaF9pdGVyYXRvcl90eXBlPiBtX1NlYXJjaDsKLSAgICAgICAgICAgICAgICBpbnQgbV9OdGg7Ci0gICAgICAgICAgICAgICAgUHJlZGljYXRlVCBtX0NvbXA7Ci0gICAgICAgICAgICB9OwotCi0vLyAgZmluZCBoZWFkL3RhaWwgaW1wbGVtZW50YXRpb24gaGVscGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3JUPgotICAgICAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlPEZvcndhcmRJdGVyYXRvclQ+Ci0gICAgICAgICAgICBmaW5kX2hlYWRfaW1wbCgKLSAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEJlZ2luLAotICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgRW5kLAotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBOLAotICAgICAgICAgICAgICAgIHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgRm9yd2FyZEl0ZXJhdG9yVCBpbnB1dF9pdGVyYXRvcl90eXBlOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgaXRlcmF0b3JfcmFuZ2U8Rm9yd2FyZEl0ZXJhdG9yVD4gcmVzdWx0X3R5cGU7Ci0KLSAgICAgICAgICAgICAgICBpbnB1dF9pdGVyYXRvcl90eXBlIEl0PUJlZ2luOwotICAgICAgICAgICAgICAgIGZvcigKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IEluZGV4PTA7Ci0gICAgICAgICAgICAgICAgICAgIEluZGV4PE4gJiYgSXQhPUVuZDsgKytJbmRleCwrK0l0ICkge307Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0X3R5cGUoIEJlZ2luLCBJdCApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yVCA+Ci0gICAgICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2U8Rm9yd2FyZEl0ZXJhdG9yVD4KLSAgICAgICAgICAgIGZpbmRfaGVhZF9pbXBsKAotICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgQmVnaW4sCi0gICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBFbmQsCi0gICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IE4sCi0gICAgICAgICAgICAgICAgc3RkOjpyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZyApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBGb3J3YXJkSXRlcmF0b3JUIGlucHV0X2l0ZXJhdG9yX3R5cGU7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3JUPiByZXN1bHRfdHlwZTsKLQotICAgICAgICAgICAgICAgIGlmICggKEVuZDw9QmVnaW4pIHx8ICggc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihFbmQtQmVnaW4pIDwgTiApICkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdF90eXBlKCBCZWdpbiwgRW5kICk7Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0X3R5cGUoQmVnaW4sQmVnaW4rTik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIEZpbmQgaGVhZCBpbXBsZW1lbnRhdGlvbgotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yVD4KLSAgICAgICAgICAgICAgICBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3JUPgotICAgICAgICAgICAgZmluZF9oZWFkX2ltcGwoCi0gICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBCZWdpbiwKLSAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEVuZCwKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgTiApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgbmRuYm9vc3Q6OmRldGFpbDo6Ci0gICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcmF0b3JUPjo6aXRlcmF0b3JfY2F0ZWdvcnkgY2F0ZWdvcnk7Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4gOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpkZXRhaWw6OmZpbmRfaGVhZF9pbXBsKCBCZWdpbiwgRW5kLCBOLCBjYXRlZ29yeSgpICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3JUID4KLSAgICAgICAgICAgICAgICBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3JUPgotICAgICAgICAgICAgZmluZF90YWlsX2ltcGwoCi0gICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBCZWdpbiwKLSAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEVuZCwKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgTiwKLSAgICAgICAgICAgICAgICBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIEZvcndhcmRJdGVyYXRvclQgaW5wdXRfaXRlcmF0b3JfdHlwZTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIGl0ZXJhdG9yX3JhbmdlPEZvcndhcmRJdGVyYXRvclQ+IHJlc3VsdF90eXBlOwotCi0gICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IEluZGV4PTA7Ci0gICAgICAgICAgICAgICAgaW5wdXRfaXRlcmF0b3JfdHlwZSBJdD1CZWdpbjsKLSAgICAgICAgICAgICAgICBpbnB1dF9pdGVyYXRvcl90eXBlIEl0Mj1CZWdpbjsKLQotICAgICAgICAgICAgICAgIC8vIEFkdmFuY2UgSXQyIGJ5IE4gaW5jcmVtZW50cwotICAgICAgICAgICAgICAgIGZvciggSW5kZXg9MDsgSW5kZXg8TiAmJiBJdDIhPUVuZDsgKytJbmRleCwrK0l0MiApIHt9OwotCi0gICAgICAgICAgICAgICAgLy8gQWR2YW5jZSBJdCwgSXQyIHRvIHRoZSBlbmQKLSAgICAgICAgICAgICAgICBmb3IoOyBJdDIhPUVuZDsgKytJdCwrK0l0MiApIHt9OwotCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdF90eXBlKCBJdCwgSXQyICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3JUID4KLSAgICAgICAgICAgICAgICBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3JUPgotICAgICAgICAgICAgZmluZF90YWlsX2ltcGwoCi0gICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBCZWdpbiwKLSAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEVuZCwKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgTiwKLSAgICAgICAgICAgICAgICBzdGQ6OmJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIEZvcndhcmRJdGVyYXRvclQgaW5wdXRfaXRlcmF0b3JfdHlwZTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIGl0ZXJhdG9yX3JhbmdlPEZvcndhcmRJdGVyYXRvclQ+IHJlc3VsdF90eXBlOwotCi0gICAgICAgICAgICAgICAgaW5wdXRfaXRlcmF0b3JfdHlwZSBJdD1FbmQ7Ci0gICAgICAgICAgICAgICAgZm9yKAotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgSW5kZXg9MDsKLSAgICAgICAgICAgICAgICAgICAgSW5kZXg8TiAmJiBJdCE9QmVnaW47ICsrSW5kZXgsLS1JdCApIHt9OwotCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdF90eXBlKCBJdCwgRW5kICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3JUID4KLSAgICAgICAgICAgICAgICBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3JUPgotICAgICAgICAgICAgZmluZF90YWlsX2ltcGwoCi0gICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBCZWdpbiwKLSAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEVuZCwKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgTiwKLSAgICAgICAgICAgICAgICBzdGQ6OnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIEZvcndhcmRJdGVyYXRvclQgaW5wdXRfaXRlcmF0b3JfdHlwZTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIGl0ZXJhdG9yX3JhbmdlPEZvcndhcmRJdGVyYXRvclQ+IHJlc3VsdF90eXBlOwotCi0gICAgICAgICAgICAgICAgaWYgKCAoRW5kPD1CZWdpbikgfHwgKCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KEVuZC1CZWdpbikgPCBOICkgKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0X3R5cGUoIEJlZ2luLCBFbmQgKTsKLQotICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRfdHlwZSggRW5kLU4sIEVuZCApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBPcGVyYXRpb24KLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3JUID4KLSAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlPEZvcndhcmRJdGVyYXRvclQ+Ci0gICAgICAgICAgICBmaW5kX3RhaWxfaW1wbCgKLSAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEJlZ2luLAotICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgRW5kLAotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBOICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSBuZG5ib29zdDo6ZGV0YWlsOjoKLSAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3JfdHJhaXRzPEZvcndhcmRJdGVyYXRvclQ+OjppdGVyYXRvcl9jYXRlZ29yeSBjYXRlZ29yeTsKLQotICAgICAgICAgICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjphbGdvcml0aG06OmRldGFpbDo6ZmluZF90YWlsX2ltcGwoIEJlZ2luLCBFbmQsIE4sIGNhdGVnb3J5KCkgKTsKLSAgICAgICAgICAgIH0KLQotCi0KLS8vICBmaW5kIGhlYWQgZnVuY3RvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLQotICAgICAgICAgICAgLy8gZmluZCBhIGhlYWQgaW4gdGhlIHNlcXVlbmNlICggZnVuY3RvciApCi0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICAgIFRoaXMgZnVuY3RvciBmaW5kIGEgaGVhZCBvZiB0aGUgc3BlY2lmaWVkIHJhbmdlLiBGb3IKLSAgICAgICAgICAgICAgICBhIHNwZWNpZmllZCBOLCB0aGUgaGVhZCBpcyBhIHN1YnNlcXVlbmNlIG9mIE4gc3RhcnRpbmcKLSAgICAgICAgICAgICAgICBlbGVtZW50cyBvZiB0aGUgcmFuZ2UuCi0gICAgICAgICAgICAqLwotICAgICAgICAgICAgc3RydWN0IGhlYWRfZmluZGVyRgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIENvbnN0cnVjdGlvbgotICAgICAgICAgICAgICAgIGhlYWRfZmluZGVyRiggaW50IE4gKSA6IG1fTihOKSB7fQotCi0gICAgICAgICAgICAgICAgLy8gT3BlcmF0aW9uCi0gICAgICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvclQgPgotICAgICAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlPEZvcndhcmRJdGVyYXRvclQ+Ci0gICAgICAgICAgICAgICAgb3BlcmF0b3IoKSgKLSAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBCZWdpbiwKLSAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBFbmQgKSBjb25zdAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgaWYobV9OPj0wKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpkZXRhaWw6OmZpbmRfaGVhZF9pbXBsKCBCZWdpbiwgRW5kLCBtX04gKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlPEZvcndhcmRJdGVyYXRvclQ+IFJlcz0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmRldGFpbDo6ZmluZF90YWlsX2ltcGwoIEJlZ2luLCBFbmQsIC1tX04gKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6Om1ha2VfaXRlcmF0b3JfcmFuZ2UoQmVnaW4sIFJlcy5iZWdpbigpKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgICAgICBpbnQgbV9OOwotICAgICAgICAgICAgfTsKLQotLy8gIGZpbmQgdGFpbCBmdW5jdG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotCi0gICAgICAgICAgICAvLyBmaW5kIGEgdGFpbCBpbiB0aGUgc2VxdWVuY2UgKCBmdW5jdG9yICkKLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgICAgVGhpcyBmdW5jdG9yIGZpbmQgYSB0YWlsIG9mIHRoZSBzcGVjaWZpZWQgcmFuZ2UuIEZvcgotICAgICAgICAgICAgICAgIGEgc3BlY2lmaWVkIE4sIHRoZSBoZWFkIGlzIGEgc3Vic2VxdWVuY2Ugb2YgTiBzdGFydGluZwotICAgICAgICAgICAgICAgIGVsZW1lbnRzIG9mIHRoZSByYW5nZS4KLSAgICAgICAgICAgICovCi0gICAgICAgICAgICBzdHJ1Y3QgdGFpbF9maW5kZXJGCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gQ29uc3RydWN0aW9uCi0gICAgICAgICAgICAgICAgdGFpbF9maW5kZXJGKCBpbnQgTiApIDogbV9OKE4pIHt9Ci0KLSAgICAgICAgICAgICAgICAvLyBPcGVyYXRpb24KLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yVCA+Ci0gICAgICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2U8Rm9yd2FyZEl0ZXJhdG9yVD4KLSAgICAgICAgICAgICAgICBvcGVyYXRvcigpKAotICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEJlZ2luLAotICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEVuZCApIGNvbnN0Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZihtX04+PTApCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjphbGdvcml0aG06OmRldGFpbDo6ZmluZF90YWlsX2ltcGwoIEJlZ2luLCBFbmQsIG1fTiApOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2U8Rm9yd2FyZEl0ZXJhdG9yVD4gUmVzPQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZGV0YWlsOjpmaW5kX2hlYWRfaW1wbCggQmVnaW4sIEVuZCwgLW1fTiApOwotCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gOjpuZG5ib29zdDo6bWFrZV9pdGVyYXRvcl9yYW5nZShSZXMuZW5kKCksIEVuZCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICAgICAgaW50IG1fTjsKLSAgICAgICAgICAgIH07Ci0KLS8vICBmaW5kIHRva2VuIGZ1bmN0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgICAgICAgICAvLyBmaW5kIGEgdG9rZW4gaW4gYSBzZXF1ZW5jZSAoIGZ1bmN0b3IgKQotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAgICBUaGlzIGZpbmQgZnVuY3RvciBmaW5kcyBhIHRva2VuIHNwZWNpZmllZCBiZSBhIHByZWRpY2F0ZQotICAgICAgICAgICAgICAgIGluIGEgc2VxdWVuY2UuIEl0IGlzIGVxdWl2YWxlbnQgb2Ygc3RkOjpmaW5kIGFsZ29yaXRobSwKLSAgICAgICAgICAgICAgICB3aXRoIGFuIGV4Y2VwdGlvbiB0aGF0IGl0IHJldHVybiByYW5nZSBpbnN0ZWFkIG9mIGEgc2luZ2xlCi0gICAgICAgICAgICAgICAgaXRlcmF0b3IuCi0KLSAgICAgICAgICAgICAgICBJZiBiQ29tcHJlc3MgaXMgc2V0IHRvIHRydWUsIGFkamFjZW50IG1hdGNoaW5nIHRva2VucyBhcmUKLSAgICAgICAgICAgICAgICBjb25jYXRlbmF0ZWQgaW50byBvbmUgbWF0Y2guCi0gICAgICAgICAgICAqLwotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFByZWRpY2F0ZVQgPgotICAgICAgICAgICAgc3RydWN0IHRva2VuX2ZpbmRlckYKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBDb25zdHJ1Y3Rpb24KLSAgICAgICAgICAgICAgICB0b2tlbl9maW5kZXJGKAotICAgICAgICAgICAgICAgICAgICBQcmVkaWNhdGVUIFByZWQsCi0gICAgICAgICAgICAgICAgICAgIHRva2VuX2NvbXByZXNzX21vZGVfdHlwZSBlQ29tcHJlc3M9dG9rZW5fY29tcHJlc3Nfb2ZmICkgOgotICAgICAgICAgICAgICAgICAgICAgICAgbV9QcmVkKFByZWQpLCBtX2VDb21wcmVzcyhlQ29tcHJlc3MpIHt9Ci0KLSAgICAgICAgICAgICAgICAvLyBPcGVyYXRpb24KLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yVCA+Ci0gICAgICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2U8Rm9yd2FyZEl0ZXJhdG9yVD4KLSAgICAgICAgICAgICAgICBvcGVyYXRvcigpKAotICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEJlZ2luLAotICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEVuZCApIGNvbnN0Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICB0eXBlZGVmIGl0ZXJhdG9yX3JhbmdlPEZvcndhcmRJdGVyYXRvclQ+IHJlc3VsdF90eXBlOwotCi0gICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgSXQ9c3RkOjpmaW5kX2lmKCBCZWdpbiwgRW5kLCBtX1ByZWQgKTsKLQotICAgICAgICAgICAgICAgICAgICBpZiggSXQ9PUVuZCApCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRfdHlwZSggRW5kLCBFbmQgKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgSXQyPUl0OwotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiggbV9lQ29tcHJlc3M9PXRva2VuX2NvbXByZXNzX29uICkKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGaW5kIGZpcnN0IG5vbi1tYXRjaGluZyBjaGFyYWN0ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSggSXQyIT1FbmQgJiYgbV9QcmVkKCpJdDIpICkgKytJdDI7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWR2YW5jZSBieSBvbmUgcG9zaXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICArK0l0MjsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdF90eXBlKCBJdCwgSXQyICk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICAgICAgUHJlZGljYXRlVCBtX1ByZWQ7Ci0gICAgICAgICAgICAgICAgdG9rZW5fY29tcHJlc3NfbW9kZV90eXBlIG1fZUNvbXByZXNzOwotICAgICAgICAgICAgfTsKLQotLy8gIGZpbmQgcmFuZ2UgZnVuY3RvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICAgICAgICAgIC8vIGZpbmQgYSByYW5nZSBpbiB0aGUgc2VxdWVuY2UgKCBmdW5jdG9yICkKLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgICAgVGhpcyBmdW5jdG9yIGFjdHVhbGx5IGRvZXMgbm90IHBlcmZvcm0gYW55IGZpbmQgb3BlcmF0aW9uLgotICAgICAgICAgICAgICAgIEl0IGFsd2F5cyByZXR1cm5zIGdpdmVuIGl0ZXJhdG9yIHJhbmdlIGFzIGEgcmVzdWx0LgotICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvcjFUPgotICAgICAgICAgICAgc3RydWN0IHJhbmdlX2ZpbmRlckYKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIEZvcndhcmRJdGVyYXRvcjFUIGlucHV0X2l0ZXJhdG9yX3R5cGU7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBpdGVyYXRvcl9yYW5nZTxpbnB1dF9pdGVyYXRvcl90eXBlPiByZXN1bHRfdHlwZTsKLQotICAgICAgICAgICAgICAgIC8vIENvbnN0cnVjdGlvbgotICAgICAgICAgICAgICAgIHJhbmdlX2ZpbmRlckYoCi0gICAgICAgICAgICAgICAgICAgIGlucHV0X2l0ZXJhdG9yX3R5cGUgQmVnaW4sCi0gICAgICAgICAgICAgICAgICAgIGlucHV0X2l0ZXJhdG9yX3R5cGUgRW5kICkgOiBtX1JhbmdlKEJlZ2luLCBFbmQpIHt9Ci0KLSAgICAgICAgICAgICAgICByYW5nZV9maW5kZXJGKGNvbnN0IGl0ZXJhdG9yX3JhbmdlPGlucHV0X2l0ZXJhdG9yX3R5cGU+JiBSYW5nZSkgOgotICAgICAgICAgICAgICAgICAgICBtX1JhbmdlKFJhbmdlKSB7fQotCi0gICAgICAgICAgICAgICAgLy8gT3BlcmF0aW9uCi0gICAgICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvcjJUID4KLSAgICAgICAgICAgICAgICBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3IyVD4KLSAgICAgICAgICAgICAgICBvcGVyYXRvcigpKAotICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3IyVCwKLSAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yMlQgKSBjb25zdAotICAgICAgICAgICAgICAgIHsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKCBfX01XRVJLU19fLCA8PSAweDMwMDMgKSAKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yX3JhbmdlPGNvbnN0IEZvcndhcmRJdGVyYXRvcjJUPih0aGlzLT5tX1JhbmdlKTsKLSNlbGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yX3JhbmdlPEZvcndhcmRJdGVyYXRvcjJUPihtX1JhbmdlLmJlZ2luKCksIG1fUmFuZ2UuZW5kKCkpOwotI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1fUmFuZ2U7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2U8aW5wdXRfaXRlcmF0b3JfdHlwZT4gbV9SYW5nZTsKLSAgICAgICAgICAgIH07Ci0KLQotICAgICAgICB9IC8vIG5hbWVzcGFjZSBkZXRhaWwKLSAgICB9IC8vIG5hbWVzcGFjZSBhbGdvcml0aG0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gTkROQk9PU1RfU1RSSU5HX0ZJTkRFUl9ERVRBSUxfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZGV0YWlsL2Zvcm1hdHRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZGV0YWlsL2Zvcm1hdHRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0ZTVkZWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2RldGFpbC9mb3JtYXR0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE5ICswLDAgQEAKLS8vICBCb29zdCBzdHJpbmdfYWxnbyBsaWJyYXJ5IGZvcm1hdHRlci5ocHAgaGVhZGVyIGZpbGUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBDb3B5cmlnaHQgUGF2b2wgRHJvYmEgMjAwMi0yMDAzLgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAgIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICAgICAgICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgdXBkYXRlcywgZG9jdW1lbnRhdGlvbiwgYW5kIHJldmlzaW9uIGhpc3RvcnkuCi0KLSNpZm5kZWYgTkROQk9PU1RfU1RSSU5HX0ZPUk1BVFRFUl9ERVRBSUxfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1NUUklOR19GT1JNQVRURVJfREVUQUlMX0hQUAotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9pdGVyYXRvcl9yYW5nZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvYmVnaW4uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvY29uc3RfaXRlcmF0b3IuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9kZXRhaWwvdXRpbC5ocHA+Ci0KLS8vICBnZW5lcmljIHJlcGxhY2UgZnVuY3RvcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIG5hbWVzcGFjZSBhbGdvcml0aG0gewotICAgICAgICBuYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gIGNvbnN0IGZvcm1hdCBmdW5jdG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgICAgICAgICAvLyBjb25zdGFudCBmb3JtYXQgZnVuY3RvcgotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmFuZ2VUPgotICAgICAgICAgICAgc3RydWN0IGNvbnN0X2Zvcm1hdEYKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUKLSAgICAgICAgICAgICAgICAgICAgcmFuZ2VfY29uc3RfaXRlcmF0b3I8UmFuZ2VUPjo6dHlwZSBmb3JtYXRfaXRlcmF0b3I7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBpdGVyYXRvcl9yYW5nZTxmb3JtYXRfaXRlcmF0b3I+IHJlc3VsdF90eXBlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICAgICAgLy8gQ29uc3RydWN0aW9uCi0gICAgICAgICAgICAgICAgY29uc3RfZm9ybWF0Rihjb25zdCBSYW5nZVQmIEZvcm1hdCkgOgotICAgICAgICAgICAgICAgICAgICBtX0Zvcm1hdCg6Om5kbmJvb3N0OjpiZWdpbihGb3JtYXQpLCA6Om5kbmJvb3N0OjplbmQoRm9ybWF0KSkge30KLQotICAgICAgICAgICAgICAgIC8vIE9wZXJhdGlvbgotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NjQpKQotICAgICAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJhbmdlMlQ+Ci0gICAgICAgICAgICAgICAgcmVzdWx0X3R5cGUmIG9wZXJhdG9yKCkoY29uc3QgUmFuZ2UyVCYpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9Gb3JtYXQ7Ci0gICAgICAgICAgICAgICAgfQotI2VuZGlmCi0KLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSYW5nZTJUPgotICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdF90eXBlJiBvcGVyYXRvcigpKGNvbnN0IFJhbmdlMlQmKSBjb25zdAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1fRm9ybWF0OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgICAgICByZXN1bHRfdHlwZSBtX0Zvcm1hdDsKLSAgICAgICAgICAgIH07Ci0KLS8vICBpZGVudGl0eSBmb3JtYXQgZnVuY3RvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAgICAgLy8gaWRlbnRpdHkgZm9ybWF0IGZ1bmN0b3IKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJhbmdlVD4KLSAgICAgICAgICAgIHN0cnVjdCBpZGVudGl0eV9mb3JtYXRGCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gT3BlcmF0aW9uCi0gICAgICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFJhbmdlMlQgPgotICAgICAgICAgICAgICAgIGNvbnN0IFJhbmdlVCYgb3BlcmF0b3IoKShjb25zdCBSYW5nZTJUJiBSZXBsYWNlKSBjb25zdAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJhbmdlVCg6Om5kbmJvb3N0OjpiZWdpbihSZXBsYWNlKSwgOjpuZG5ib29zdDo6ZW5kKFJlcGxhY2UpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotCi0vLyAgZW1wdHkgZm9ybWF0IGZ1bmN0b3IgKCB1c2VkIGJ5IGVyYXNlICkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAgICAgICAgCi0gICAgICAgICAgICAvLyBlbXB0eSBmb3JtYXQgZnVuY3RvcgotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIENoYXJUID4KLSAgICAgICAgICAgIHN0cnVjdCBlbXB0eV9mb3JtYXRGCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFJlcGxhY2VUID4KLSAgICAgICAgICAgICAgICBlbXB0eV9jb250YWluZXI8Q2hhclQ+IG9wZXJhdG9yKCkoY29uc3QgUmVwbGFjZVQmKSBjb25zdAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVtcHR5X2NvbnRhaW5lcjxDaGFyVD4oKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotCi0vLyAgZGlzc2VjdCBmb3JtYXQgZnVuY3RvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAgICAgLy8gZGlzc2VjdCBmb3JtYXQgZnVuY3RvcgotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRmluZGVyVD4KLSAgICAgICAgICAgIHN0cnVjdCBkaXNzZWN0X2Zvcm1hdEYKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgICAgICAvLyBDb25zdHJ1Y3Rpb24KLSAgICAgICAgICAgICAgICBkaXNzZWN0X2Zvcm1hdEYoRmluZGVyVCBGaW5kZXIpIDoKLSAgICAgICAgICAgICAgICAgIG1fRmluZGVyKEZpbmRlcikge30KLQotICAgICAgICAgICAgICAgICAgLy8gT3BlcmF0aW9uCi0gICAgICAgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSYW5nZVQ+Ci0gICAgICAgICAgICAgICAgICBpbmxpbmUgaXRlcmF0b3JfcmFuZ2U8IAotICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSByYW5nZV9jb25zdF9pdGVyYXRvcjxSYW5nZVQ+Ojp0eXBlPgotICAgICAgICAgICAgICAgICAgb3BlcmF0b3IoKShjb25zdCBSYW5nZVQmIFJlcGxhY2UpIGNvbnN0Ci0gICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1fRmluZGVyKDo6bmRuYm9vc3Q6OmJlZ2luKFJlcGxhY2UpLCA6Om5kbmJvb3N0OjplbmQoUmVwbGFjZSkpOwotICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgICAgIEZpbmRlclQgbV9GaW5kZXI7Ci0gICAgICAgICAgICB9OwotCi0KLSAgICAgICAgfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0gICAgfSAvLyBuYW1lc3BhY2UgYWxnb3JpdGhtCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1NUUklOR19GT1JNQVRURVJfREVUQUlMX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2RldGFpbC9yZXBsYWNlX3N0b3JhZ2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2RldGFpbC9yZXBsYWNlX3N0b3JhZ2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNzRkODU4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9kZXRhaWwvcmVwbGFjZV9zdG9yYWdlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1OSArMCwwIEBACi0vLyAgQm9vc3Qgc3RyaW5nX2FsZ28gbGlicmFyeSByZXBsYWNlX3N0b3JhZ2UuaHBwIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IFBhdm9sIERyb2JhIDIwMDItMjAwMy4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgICAgICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvIGZvciB1cGRhdGVzLCBkb2N1bWVudGF0aW9uLCBhbmQgcmV2aXNpb24gaGlzdG9yeS4KLQotI2lmbmRlZiBORE5CT09TVF9TVFJJTkdfUkVQTEFDRV9TVE9SQUdFX0RFVEFJTF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfU1RSSU5HX1JFUExBQ0VfU1RPUkFHRV9ERVRBSUxfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL3NlcXVlbmNlX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9kZXRhaWwvc2VxdWVuY2UuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIG5hbWVzcGFjZSBhbGdvcml0aG0gewotICAgICAgICBuYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gIHN0b3JhZ2UgaGFuZGxpbmcgcm91dGluZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotICAgICAgICAgICAgCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgU3RvcmFnZVQsIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yVCA+Ci0gICAgICAgICAgICBpbmxpbmUgT3V0cHV0SXRlcmF0b3JUIG1vdmVfZnJvbV9zdG9yYWdlKAotICAgICAgICAgICAgICAgIFN0b3JhZ2VUJiBTdG9yYWdlLAotICAgICAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yVCBEZXN0QmVnaW4sCi0gICAgICAgICAgICAgICAgT3V0cHV0SXRlcmF0b3JUIERlc3RFbmQgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yVCBPdXRwdXRJdD1EZXN0QmVnaW47Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgd2hpbGUoICFTdG9yYWdlLmVtcHR5KCkgJiYgT3V0cHV0SXQhPURlc3RFbmQgKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgKk91dHB1dEl0PVN0b3JhZ2UuZnJvbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgU3RvcmFnZS5wb3BfZnJvbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgKytPdXRwdXRJdDsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4gT3V0cHV0SXQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTdG9yYWdlVCwgdHlwZW5hbWUgV2hhdFQgPgotICAgICAgICAgICAgaW5saW5lIHZvaWQgY29weV90b19zdG9yYWdlKAotICAgICAgICAgICAgICAgIFN0b3JhZ2VUJiBTdG9yYWdlLAotICAgICAgICAgICAgICAgIGNvbnN0IFdoYXRUJiBXaGF0ICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBTdG9yYWdlLmluc2VydCggU3RvcmFnZS5lbmQoKSwgOjpuZG5ib29zdDo6YmVnaW4oV2hhdCksIDo6bmRuYm9vc3Q6OmVuZChXaGF0KSApOwotICAgICAgICAgICAgfQotCi0KLS8vICBwcm9jZXNzIHNlZ21lbnQgcm91dGluZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICAgICAgICAgIHRlbXBsYXRlPCBib29sIEhhc1N0YWJsZUl0ZXJhdG9ycyA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcHJvY2Vzc19zZWdtZW50X2hlbHBlcgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIE9wdGltaXplZCB2ZXJzaW9uIG9mIHByb2Nlc3Nfc2VnbWVudCBmb3IgZ2VuZXJpYyBzZXF1ZW5jZQotICAgICAgICAgICAgICAgIHRlbXBsYXRlPCAKLSAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgU3RvcmFnZVQsCi0gICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIElucHV0VCwKLSAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yVCA+Ci0gICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBvcGVyYXRvcigpKAotICAgICAgICAgICAgICAgICAgICBTdG9yYWdlVCYgU3RvcmFnZSwKLSAgICAgICAgICAgICAgICAgICAgSW5wdXRUJiAvKklucHV0Ki8sCi0gICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgSW5zZXJ0SXQsCi0gICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgU2VnbWVudEJlZ2luLAotICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIFNlZ21lbnRFbmQgKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gQ29weSBkYXRhIGZyb20gdGhlIHN0b3JhZ2UgdW50aWwgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2VnbWVudAotICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEl0PTo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZGV0YWlsOjptb3ZlX2Zyb21fc3RvcmFnZSggU3RvcmFnZSwgSW5zZXJ0SXQsIFNlZ21lbnRCZWdpbiApOwotCi0gICAgICAgICAgICAgICAgICAgIC8vIDMgY2FzZXMgYXJlIHBvc3NpYmxlIDoKLSAgICAgICAgICAgICAgICAgICAgLy8gICBhKSBTdG9yYWdlIGlzIGVtcHR5LCBJdD09U2VnbWVudEJlZ2luCi0gICAgICAgICAgICAgICAgICAgIC8vICAgYikgU3RvcmFnZSBpcyBlbXB0eSwgSXQhPVNlZ21lbnRCZWdpbgotICAgICAgICAgICAgICAgICAgICAvLyAgIGMpIFN0b3JhZ2UgaXMgbm90IGVtcHR5Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYoIFN0b3JhZ2UuZW1wdHkoKSApCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBJdD09U2VnbWVudEJlZ2luICkKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDYXNlIGEpIGV2ZXJ5dGhpbmcgaXMgZ3JhbmQsIGp1c3QgcmV0dXJuIGVuZCBvZiBzZWdtZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNlZ21lbnRFbmQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2FzZSBiKSBtb3ZlIHRoZSBzZWdtZW50IGJhY2t3YXJkcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6OmNvcHkoIFNlZ21lbnRCZWdpbiwgU2VnbWVudEVuZCwgSXQgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIENhc2UgYykgLT4gc2hpZnQgdGhlIHNlZ21lbnQgdG8gdGhlIGxlZnQgYW5kIGtlZXAgdGhlIG92ZXJsYXAgaW4gdGhlIHN0b3JhZ2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlKCBJdCE9U2VnbWVudEVuZCApCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3RvcmUgdmFsdWUgaW50byBzdG9yYWdlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmFnZS5wdXNoX2JhY2soICpJdCApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdldCB0aGUgdG9wIGZyb20gdGhlIHN0b3JhZ2UgYW5kIHB1dCBpdCBoZXJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKkl0PVN0b3JhZ2UuZnJvbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdG9yYWdlLnBvcF9mcm9udCgpOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWR2YW5jZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrSXQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBJdDsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgICAgIHN0cnVjdCBwcm9jZXNzX3NlZ21lbnRfaGVscGVyPCB0cnVlID4KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBPcHRpbWl6ZWQgdmVyc2lvbiBvZiBwcm9jZXNzX3NlZ21lbnQgZm9yIGxpc3QtbGlrZSBzZXF1ZW5jZQotICAgICAgICAgICAgICAgIHRlbXBsYXRlPCAKLSAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgU3RvcmFnZVQsCi0gICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIElucHV0VCwKLSAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yVCA+Ci0gICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBvcGVyYXRvcigpKAotICAgICAgICAgICAgICAgICAgICBTdG9yYWdlVCYgU3RvcmFnZSwKLSAgICAgICAgICAgICAgICAgICAgSW5wdXRUJiBJbnB1dCwKLSAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBJbnNlcnRJdCwKLSAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBTZWdtZW50QmVnaW4sCi0gICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgU2VnbWVudEVuZCApCi0KLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIENhbGwgcmVwbGFjZSB0byBkbyB0aGUgam9iCi0gICAgICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZGV0YWlsOjpyZXBsYWNlKCBJbnB1dCwgSW5zZXJ0SXQsIFNlZ21lbnRCZWdpbiwgU3RvcmFnZSApOwotICAgICAgICAgICAgICAgICAgICAvLyBFbXB0eSB0aGUgc3RvcmFnZQotICAgICAgICAgICAgICAgICAgICBTdG9yYWdlLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEl0ZXJhdG9ycyB3ZXJlIG5vdCBjaGFuZ2VkLCBzaW1wbHkgcmV0dXJuIHRoZSBlbmQgb2Ygc2VnbWVudAotICAgICAgICAgICAgICAgICAgICByZXR1cm4gU2VnbWVudEVuZDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgICAgICAvLyBQcm9jZXNzIG9uZSBzZWdtZW50IGluIHRoZSByZXBsYWNlX2FsbCBhbGdvcml0aG0KLSAgICAgICAgICAgIHRlbXBsYXRlPCAKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBTdG9yYWdlVCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBJbnB1dFQsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yVCA+Ci0gICAgICAgICAgICBpbmxpbmUgRm9yd2FyZEl0ZXJhdG9yVCBwcm9jZXNzX3NlZ21lbnQoCi0gICAgICAgICAgICAgICAgU3RvcmFnZVQmIFN0b3JhZ2UsCi0gICAgICAgICAgICAgICAgSW5wdXRUJiBJbnB1dCwKLSAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEluc2VydEl0LAotICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgU2VnbWVudEJlZ2luLAotICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgU2VnbWVudEVuZCApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIAotICAgICAgICAgICAgICAgICAgICBwcm9jZXNzX3NlZ21lbnRfaGVscGVyPCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGhhc19zdGFibGVfaXRlcmF0b3JzPElucHV0VD46OnZhbHVlPigpKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdG9yYWdlLCBJbnB1dCwgSW5zZXJ0SXQsIFNlZ21lbnRCZWdpbiwgU2VnbWVudEVuZCApOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0KLSAgICAgICAgfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0gICAgfSAvLyBuYW1lc3BhY2UgYWxnb3JpdGhtCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1NUUklOR19SRVBMQUNFX1NUT1JBR0VfREVUQUlMX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2RldGFpbC9zZXF1ZW5jZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZGV0YWlsL3NlcXVlbmNlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmU2N2YyOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZGV0YWlsL3NlcXVlbmNlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwMCArMCwwIEBACi0vLyAgQm9vc3Qgc3RyaW5nX2FsZ28gbGlicmFyeSBzZXF1ZW5jZS5ocHAgaGVhZGVyIGZpbGUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBDb3B5cmlnaHQgUGF2b2wgRHJvYmEgMjAwMi0yMDAzLgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAgIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICAgICAgICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy8gZm9yIHVwZGF0ZXMsIGRvY3VtZW50YXRpb24sIGFuZCByZXZpc2lvbiBoaXN0b3J5LgotCi0jaWZuZGVmIE5ETkJPT1NUX1NUUklOR19ERVRBSUxfU0VRVUVOQ0VfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1NUUklOR19ERVRBSUxfU0VRVUVOQ0VfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9sb2dpY2FsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9iZWdpbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZW5kLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvc2VxdWVuY2VfdHJhaXRzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICBuYW1lc3BhY2UgYWxnb3JpdGhtIHsKLSAgICAgICAgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vICBpbnNlcnQgaGVscGVycyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0gICAgICAgIAotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIElucHV0VCwgdHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yVCA+Ci0gICAgICAgICAgICBpbmxpbmUgdm9pZCBpbnNlcnQoCi0gICAgICAgICAgICAgICAgSW5wdXRUJiBJbnB1dCwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgSW5wdXRUOjppdGVyYXRvciBBdCwKLSAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEJlZ2luLAotICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgRW5kICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBJbnB1dC5pbnNlcnQoIEF0LCBCZWdpbiwgRW5kICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJbnB1dFQsIHR5cGVuYW1lIEluc2VydFQgPgotICAgICAgICAgICAgaW5saW5lIHZvaWQgaW5zZXJ0KAotICAgICAgICAgICAgICAgIElucHV0VCYgSW5wdXQsCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIElucHV0VDo6aXRlcmF0b3IgQXQsCi0gICAgICAgICAgICAgICAgY29uc3QgSW5zZXJ0VCYgSW5zZXJ0ICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmRldGFpbDo6aW5zZXJ0KCBJbnB1dCwgQXQsIDo6bmRuYm9vc3Q6OmJlZ2luKEluc2VydCksIDo6bmRuYm9vc3Q6OmVuZChJbnNlcnQpICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgIAotLy8gIGVyYXNlIGhlbHBlciAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAgICAgLy8gRXJhc2UgYSByYW5nZSBpbiB0aGUgc2VxdWVuY2UKLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgICAgUmV0dXJucyB0aGUgaXRlcmF0b3IgcG9pbnRpbmcganVzdCBhZnRlciB0aGUgZXJhc2Ugc3VicmFuZ2UKLSAgICAgICAgICAgICovCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSW5wdXRUID4KLSAgICAgICAgICAgIGlubGluZSB0eXBlbmFtZSBJbnB1dFQ6Oml0ZXJhdG9yIGVyYXNlKAotICAgICAgICAgICAgICAgIElucHV0VCYgSW5wdXQsCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIElucHV0VDo6aXRlcmF0b3IgRnJvbSwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgSW5wdXRUOjppdGVyYXRvciBUbyApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIElucHV0LmVyYXNlKCBGcm9tLCBUbyApOwotICAgICAgICAgICAgfQotCi0vLyAgcmVwbGFjZSBoZWxwZXIgaW1wbGVtZW50YXRpb24gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgICAgICAgICAvLyBPcHRpbWl6ZWQgdmVyc2lvbiBvZiByZXBsYWNlIGZvciBnZW5lcmljIHNlcXVlbmNlIGNvbnRhaW5lcnMKLSAgICAgICAgICAgIC8vIEFzc3VtcHRpb246IGluc2VydCBhbmQgZXJhc2UgYXJlIGV4cGVuc2l2ZQotICAgICAgICAgICAgdGVtcGxhdGU8IGJvb2wgSGFzQ29uc3RUaW1lT3BlcmF0aW9ucyA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcmVwbGFjZV9jb25zdF90aW1lX2hlbHBlcgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJbnB1dFQsIHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvclQgPgotICAgICAgICAgICAgICAgIHZvaWQgb3BlcmF0b3IoKSgKLSAgICAgICAgICAgICAgICAgICAgSW5wdXRUJiBJbnB1dCwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIElucHV0VDo6aXRlcmF0b3IgRnJvbSwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIElucHV0VDo6aXRlcmF0b3IgVG8sCi0gICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgQmVnaW4sCi0gICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgRW5kICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIENvcHkgZGF0YSB0byB0aGUgY29udGFpbmVyICggYXMgbXVjaCBhcyBwb3NzaWJsZSApCi0gICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgSW5zZXJ0SXQ9QmVnaW47Ci0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSBJbnB1dFQ6Oml0ZXJhdG9yIElucHV0SXQ9RnJvbTsKLSAgICAgICAgICAgICAgICAgICAgZm9yKDsgSW5zZXJ0SXQhPUVuZCAmJiBJbnB1dEl0IT1UbzsgSW5zZXJ0SXQrKywgSW5wdXRJdCsrICkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgKklucHV0SXQ9Kkluc2VydEl0OwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCBJbnNlcnRJdCE9RW5kICkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVwbGFjZSBzZXF1ZW5jZSBpcyBsb25nZXIsIGluc2VydCBpdAotICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXQuaW5zZXJ0KCBJbnB1dEl0LCBJbnNlcnRJdCwgRW5kICk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIElucHV0SXQhPVRvICkKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXBsYWNlIHNlcXVlbmNlIGlzIHNob3J0ZXIsIGVyYXNlIHRoZSByZXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXQuZXJhc2UoIElucHV0SXQsIFRvICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgICAgICBzdHJ1Y3QgcmVwbGFjZV9jb25zdF90aW1lX2hlbHBlcjwgdHJ1ZSA+Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gQ29uc3QtdGltZSBlcmFzZSBhbmQgaW5zZXJ0IG1ldGhvZHMgLT4gdXNlIHRoZW0KLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSW5wdXRULCB0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3JUID4KLSAgICAgICAgICAgICAgICB2b2lkIG9wZXJhdG9yKCkoCi0gICAgICAgICAgICAgICAgICAgIElucHV0VCYgSW5wdXQsCi0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSBJbnB1dFQ6Oml0ZXJhdG9yIEZyb20sCi0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSBJbnB1dFQ6Oml0ZXJhdG9yIFRvLAotICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEJlZ2luLAotICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEVuZCApIAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIElucHV0VDo6aXRlcmF0b3IgQXQ9SW5wdXQuZXJhc2UoIEZyb20sIFRvICk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICggQmVnaW4hPUVuZCApCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmKCFJbnB1dC5lbXB0eSgpKQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIElucHV0Lmluc2VydCggQXQsIEJlZ2luLCBFbmQgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnB1dC5pbnNlcnQoIElucHV0LmJlZ2luKCksIEJlZ2luLCBFbmQgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgIC8vIE5vIG5hdGl2ZSByZXBsYWNlIG1ldGhvZAotICAgICAgICAgICAgdGVtcGxhdGU8IGJvb2wgSGFzTmF0aXZlID4KLSAgICAgICAgICAgIHN0cnVjdCByZXBsYWNlX25hdGl2ZV9oZWxwZXIKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSW5wdXRULCB0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3JUID4KLSAgICAgICAgICAgICAgICB2b2lkIG9wZXJhdG9yKCkoCi0gICAgICAgICAgICAgICAgICAgIElucHV0VCYgSW5wdXQsCi0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSBJbnB1dFQ6Oml0ZXJhdG9yIEZyb20sCi0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSBJbnB1dFQ6Oml0ZXJhdG9yIFRvLAotICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEJlZ2luLAotICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEVuZCApIAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmVwbGFjZV9jb25zdF90aW1lX2hlbHBlcjwgCi0gICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6bXBsOjphbmRfPAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc19jb25zdF90aW1lX2luc2VydDxJbnB1dFQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc19jb25zdF90aW1lX2VyYXNlPElucHV0VD4gPjo6dmFsdWUgPigpKAotICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXQsIEZyb20sIFRvLCBCZWdpbiwgRW5kICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAgLy8gQ29udGFpbmVyIGhhcyBuYXRpdmUgcmVwbGFjZSBtZXRob2QKLSAgICAgICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgICAgIHN0cnVjdCByZXBsYWNlX25hdGl2ZV9oZWxwZXI8IHRydWUgPgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJbnB1dFQsIHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvclQgPgotICAgICAgICAgICAgICAgIHZvaWQgb3BlcmF0b3IoKSgKLSAgICAgICAgICAgICAgICAgICAgSW5wdXRUJiBJbnB1dCwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIElucHV0VDo6aXRlcmF0b3IgRnJvbSwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIElucHV0VDo6aXRlcmF0b3IgVG8sCi0gICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgQmVnaW4sCi0gICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgRW5kICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIElucHV0LnJlcGxhY2UoIEZyb20sIFRvLCBCZWdpbiwgRW5kICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLQotLy8gIHJlcGxhY2UgaGVscGVyICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAgICAgICAgCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSW5wdXRULCB0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3JUID4KLSAgICAgICAgICAgIGlubGluZSB2b2lkIHJlcGxhY2UoCi0gICAgICAgICAgICAgICAgSW5wdXRUJiBJbnB1dCwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgSW5wdXRUOjppdGVyYXRvciBGcm9tLAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSBJbnB1dFQ6Oml0ZXJhdG9yIFRvLAotICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgQmVnaW4sCi0gICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBFbmQgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJlcGxhY2VfbmF0aXZlX2hlbHBlcjwgaGFzX25hdGl2ZV9yZXBsYWNlPElucHV0VD46OnZhbHVlID4oKSgKLSAgICAgICAgICAgICAgICAgICAgSW5wdXQsIEZyb20sIFRvLCBCZWdpbiwgRW5kICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJbnB1dFQsIHR5cGVuYW1lIEluc2VydFQgPgotICAgICAgICAgICAgaW5saW5lIHZvaWQgcmVwbGFjZSgKLSAgICAgICAgICAgICAgICBJbnB1dFQmIElucHV0LAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSBJbnB1dFQ6Oml0ZXJhdG9yIEZyb20sCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIElucHV0VDo6aXRlcmF0b3IgVG8sCi0gICAgICAgICAgICAgICAgY29uc3QgSW5zZXJ0VCYgSW5zZXJ0ICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZihGcm9tIT1UbykKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZGV0YWlsOjpyZXBsYWNlKCBJbnB1dCwgRnJvbSwgVG8sIDo6bmRuYm9vc3Q6OmJlZ2luKEluc2VydCksIDo6bmRuYm9vc3Q6OmVuZChJbnNlcnQpICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZGV0YWlsOjppbnNlcnQoIElucHV0LCBGcm9tLCA6Om5kbmJvb3N0OjpiZWdpbihJbnNlcnQpLCA6Om5kbmJvb3N0OjplbmQoSW5zZXJ0KSApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICB9IC8vIG5hbWVzcGFjZSBkZXRhaWwKLSAgICB9IC8vIG5hbWVzcGFjZSBhbGdvcml0aG0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLQotI2VuZGlmICAvLyBORE5CT09TVF9TVFJJTkdfREVUQUlMX1NFUVVFTkNFX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2RldGFpbC91dGlsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9kZXRhaWwvdXRpbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4Mzg5M2QuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2RldGFpbC91dGlsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNiArMCwwIEBACi0vLyAgQm9vc3Qgc3RyaW5nX2FsZ28gbGlicmFyeSB1dGlsLmhwcCBoZWFkZXIgZmlsZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCBQYXZvbCBEcm9iYSAyMDAyLTIwMDMuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gICAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gICAgICAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnLyBmb3IgdXBkYXRlcywgZG9jdW1lbnRhdGlvbiwgYW5kIHJldmlzaW9uIGhpc3RvcnkuCi0KLSNpZm5kZWYgTkROQk9PU1RfU1RSSU5HX1VUSUxfREVUQUlMX0hQUAotI2RlZmluZSBORE5CT09TVF9TVFJJTkdfVVRJTF9ERVRBSUxfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9pdGVyYXRvcl9yYW5nZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgbmFtZXNwYWNlIGFsZ29yaXRobSB7Ci0gICAgICAgIG5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyAgZW1wdHkgY29udGFpbmVyICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICAgICAgICAgIC8vICBlbXB0eV9jb250YWluZXIgCi0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICAgIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhbHdheXMgZW1wdHkgY29udGFpbmVyLAotICAgICAgICAgICAgICAgIGNvbnRhaW5pbmcgZWxlbWVudHMgb2YgdHlwZSBDaGFyVC4KLQotICAgICAgICAgICAgICAgIEl0IGlzIHN1cHBvc2VkIHRvIGJlIHVzZWQgaW4gYSBjb25zdCB2ZXJzaW9uIG9ubHkKLSAgICAgICAgICAgICovCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQ2hhclQgPgotICAgICAgICAgICAgc3RydWN0IGVtcHR5X2NvbnRhaW5lciAKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIGVtcHR5X2NvbnRhaW5lcjxDaGFyVD4gdHlwZTsgICAgICAgIAotICAgICAgICAgICAgICAgIHR5cGVkZWYgQ2hhclQgdmFsdWVfdHlwZTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHN0ZDo6c2l6ZV90IHNpemVfdHlwZTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHN0ZDo6cHRyZGlmZl90IGRpZmZlcmVuY2VfdHlwZTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIGNvbnN0IHZhbHVlX3R5cGUmIHJlZmVyZW5jZTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIGNvbnN0IHZhbHVlX3R5cGUmIGNvbnN0X3JlZmVyZW5jZTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIGNvbnN0IHZhbHVlX3R5cGUqIGl0ZXJhdG9yOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgY29uc3QgdmFsdWVfdHlwZSogY29uc3RfaXRlcmF0b3I7Ci0KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAvLyBPcGVyYXRpb25zCi0gICAgICAgICAgICAgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3RfaXRlcmF0b3I+KDApOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdF9pdGVyYXRvcj4oMCk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgYm9vbCBlbXB0eSgpIGNvbnN0Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgc2l6ZV90eXBlIHNpemUoKSBjb25zdAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSAgICAKLS8vICBib3VuZGVkIGNvcHkgYWxnb3JpdGhtICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICAgICAgICAgIC8vIEJvdW5kZWQgdmVyc2lvbiBvZiB0aGUgc3RkOjpjb3B5IGFsZ29yaXRobQotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW5wdXRJdGVyYXRvclQsIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yVD4KLSAgICAgICAgICAgIGlubGluZSBPdXRwdXRJdGVyYXRvclQgYm91bmRlZF9jb3B5KAotICAgICAgICAgICAgICAgIElucHV0SXRlcmF0b3JUIEZpcnN0LCAKLSAgICAgICAgICAgICAgICBJbnB1dEl0ZXJhdG9yVCBMYXN0LCAKLSAgICAgICAgICAgICAgICBPdXRwdXRJdGVyYXRvclQgRGVzdEZpcnN0LAotICAgICAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yVCBEZXN0TGFzdCApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgSW5wdXRJdGVyYXRvclQgSW5wdXRJdD1GaXJzdDsKLSAgICAgICAgICAgICAgICBPdXRwdXRJdGVyYXRvclQgT3V0cHV0SXQ9RGVzdEZpcnN0OwotICAgICAgICAgICAgICAgIGZvcig7IElucHV0SXQhPUxhc3QgJiYgT3V0cHV0SXQhPURlc3RMYXN0OyBJbnB1dEl0KyssIE91dHB1dEl0KysgKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgKk91dHB1dEl0PSpJbnB1dEl0OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHJldHVybiBPdXRwdXRJdDsKLSAgICAgICAgICAgIH0KLQotLy8gIGl0ZXJhdG9yIHJhbmdlIHV0aWxpdGllcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICAgICAgICAgIC8vIGNvcHkgcmFuZ2UgZnVuY3RvcgotICAgICAgICAgICAgdGVtcGxhdGU8IAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIFNlcVQsIAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yVD1ORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgU2VxVDo6Y29uc3RfaXRlcmF0b3IgPgotICAgICAgICAgICAgc3RydWN0IGNvcHlfaXRlcmF0b3JfcmFuZ2VGIDogCi0gICAgICAgICAgICAgICAgcHVibGljIHN0ZDo6dW5hcnlfZnVuY3Rpb248IGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yVD4sIFNlcVQgPgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFNlcVQgb3BlcmF0b3IoKSggY29uc3QgaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3JUPiYgUmFuZ2UgKSBjb25zdAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvcHlfcmFuZ2U8U2VxVD4oUmFuZ2UpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0gICAgfSAvLyBuYW1lc3BhY2UgYWxnb3JpdGhtCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0KLSNlbmRpZiAgLy8gTkROQk9PU1RfU1RSSU5HX1VUSUxfREVUQUlMX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2ZpbmRfZm9ybWF0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9maW5kX2Zvcm1hdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiN2RkM2UuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2ZpbmRfZm9ybWF0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4NyArMCwwIEBACi0vLyAgQm9vc3Qgc3RyaW5nX2FsZ28gbGlicmFyeSBmaW5kX2Zvcm1hdC5ocHAgaGVhZGVyIGZpbGUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBDb3B5cmlnaHQgUGF2b2wgRHJvYmEgMjAwMi0yMDAzLgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAgIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICAgICAgICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy8gZm9yIHVwZGF0ZXMsIGRvY3VtZW50YXRpb24sIGFuZCByZXZpc2lvbiBoaXN0b3J5LgotCi0jaWZuZGVmIE5ETkJPT1NUX1NUUklOR19GSU5EX0ZPUk1BVF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfU1RSSU5HX0ZJTkRfRk9STUFUX0hQUAotCi0jaW5jbHVkZSA8ZGVxdWU+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL2l0ZXJhdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9pdGVyYXRvcl9yYW5nZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvYmVnaW4uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvY29uc3RfaXRlcmF0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2FzX2xpdGVyYWwuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9jb25jZXB0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2RldGFpbC9maW5kX2Zvcm1hdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9kZXRhaWwvZmluZF9mb3JtYXRfYWxsLmhwcD4KLQotLyohIFxmaWxlCi0gICAgRGVmaW5lcyBnZW5lcmljIHJlcGxhY2UgYWxnb3JpdGhtcy4gRWFjaCBhbGdvcml0aG0gcmVwbGFjZXMKLSAgICBwYXJ0KHMpIG9mIHRoZSBpbnB1dC4gVGhlIHBhcnQgdG8gYmUgcmVwbGFjZWQgaXMgbG9va2VkIHVwIHVzaW5nIGEgRmluZGVyIG9iamVjdC4KLSAgICBSZXN1bHQgb2YgZmluZGluZyBpcyB0aGVuIHVzZWQgYnkgYSBGb3JtYXR0ZXIgb2JqZWN0IHRvIGdlbmVyYXRlIHRoZSByZXBsYWNlbWVudC4KLSovCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgbmFtZXNwYWNlIGFsZ29yaXRobSB7Ci0KLS8vIGdlbmVyaWMgcmVwbGFjZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgICAgIC8vISBHZW5lcmljIHJlcGxhY2UgYWxnb3JpdGhtCi0gICAgICAgIC8qIQotICAgICAgICAgICAgVXNlIHRoZSBGaW5kZXIgdG8gc2VhcmNoIGZvciBhIHN1YnN0cmluZy4gVXNlIHRoZSBGb3JtYXR0ZXIgdG8gZm9ybWF0Ci0gICAgICAgICAgICB0aGlzIHN1YnN0cmluZyBhbmQgcmVwbGFjZSBpdCBpbiB0aGUgaW5wdXQuCi0gICAgICAgICAgICBUaGUgcmVzdWx0IGlzIGEgbW9kaWZpZWQgY29weSBvZiB0aGUgaW5wdXQuIEl0IGlzIHJldHVybmVkIGFzIGEgc2VxdWVuY2UgCi0gICAgICAgICAgICBvciBjb3BpZWQgdG8gdGhlIG91dHB1dCBpdGVyYXRvci4KLSAgICAKLSAgICAgICAgICAgIFxwYXJhbSBPdXRwdXQgQW4gb3V0cHV0IGl0ZXJhdG9yIHRvIHdoaWNoIHRoZSByZXN1bHQgd2lsbCBiZSBjb3BpZWQKLSAgICAgICAgICAgIFxwYXJhbSBJbnB1dCBBbiBpbnB1dCBzZXF1ZW5jZQotICAgICAgICAgICAgXHBhcmFtIEZpbmRlciBBIEZpbmRlciBvYmplY3QgdXNlZCB0byBzZWFyY2ggZm9yIGEgbWF0Y2ggdG8gYmUgcmVwbGFjZWQKLSAgICAgICAgICAgIFxwYXJhbSBGb3JtYXR0ZXIgQSBGb3JtYXR0ZXIgb2JqZWN0IHVzZWQgdG8gZm9ybWF0IGEgbWF0Y2gKLSAgICAgICAgICAgIFxyZXR1cm4gQW4gb3V0cHV0IGl0ZXJhdG9yIHBvaW50aW5nIGp1c3QgYWZ0ZXIgdGhlIGxhc3QgaW5zZXJ0ZWQgY2hhcmFjdGVyIG9yCi0gICAgICAgICAgICAgICAgYSBtb2RpZmllZCBjb3B5IG9mIHRoZSBpbnB1dAotCi0gICAgICAgICAgICBcbm90ZSBUaGUgc2Vjb25kIHZhcmlhbnQgb2YgdGhpcyBmdW5jdGlvbiBwcm92aWRlcyB0aGUgc3Ryb25nIGV4Y2VwdGlvbi1zYWZldHkgZ3VhcmFudGVlCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPCAKLSAgICAgICAgICAgIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yVCwKLSAgICAgICAgICAgIHR5cGVuYW1lIFJhbmdlVCwKLSAgICAgICAgICAgIHR5cGVuYW1lIEZpbmRlclQsCi0gICAgICAgICAgICB0eXBlbmFtZSBGb3JtYXR0ZXJUPgotICAgICAgICBpbmxpbmUgT3V0cHV0SXRlcmF0b3JUIGZpbmRfZm9ybWF0X2NvcHkoCi0gICAgICAgICAgICBPdXRwdXRJdGVyYXRvclQgT3V0cHV0LAotICAgICAgICAgICAgY29uc3QgUmFuZ2VUJiBJbnB1dCwKLSAgICAgICAgICAgIEZpbmRlclQgRmluZGVyLAotICAgICAgICAgICAgRm9ybWF0dGVyVCBGb3JtYXR0ZXIgKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBDb25jZXB0IGNoZWNrCi0gICAgICAgICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoCi0gICAgICAgICAgICAgICAgRmluZGVyQ29uY2VwdDwKLSAgICAgICAgICAgICAgICAgICAgRmluZGVyVCwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIHJhbmdlX2NvbnN0X2l0ZXJhdG9yPFJhbmdlVD46OnR5cGU+Ci0gICAgICAgICAgICAgICAgKSk7Ci0gICAgICAgICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoCi0gICAgICAgICAgICAgICAgRm9ybWF0dGVyQ29uY2VwdDwKLSAgICAgICAgICAgICAgICAgICAgRm9ybWF0dGVyVCwKLSAgICAgICAgICAgICAgICAgICAgRmluZGVyVCxORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgcmFuZ2VfY29uc3RfaXRlcmF0b3I8UmFuZ2VUPjo6dHlwZT4KLSAgICAgICAgICAgICAgICApKTsKLQotICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2U8TkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIHJhbmdlX2NvbnN0X2l0ZXJhdG9yPFJhbmdlVD46OnR5cGU+IGxpdF9pbnB1dCg6Om5kbmJvb3N0Ojphc19saXRlcmFsKElucHV0KSk7Ci0KLSAgICAgICAgICAgIHJldHVybiBkZXRhaWw6OmZpbmRfZm9ybWF0X2NvcHlfaW1wbCgKLSAgICAgICAgICAgICAgICBPdXRwdXQsCi0gICAgICAgICAgICAgICAgbGl0X2lucHV0LAotICAgICAgICAgICAgICAgIEZvcm1hdHRlciwKLSAgICAgICAgICAgICAgICBGaW5kZXIoIDo6bmRuYm9vc3Q6OmJlZ2luKGxpdF9pbnB1dCksIDo6bmRuYm9vc3Q6OmVuZChsaXRfaW5wdXQpICkgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vISBHZW5lcmljIHJlcGxhY2UgYWxnb3JpdGhtCi0gICAgICAgIC8qIQotICAgICAgICAgICAgXG92ZXJsb2FkCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPCAKLSAgICAgICAgICAgIHR5cGVuYW1lIFNlcXVlbmNlVCwgCi0gICAgICAgICAgICB0eXBlbmFtZSBGaW5kZXJULAotICAgICAgICAgICAgdHlwZW5hbWUgRm9ybWF0dGVyVD4KLSAgICAgICAgaW5saW5lIFNlcXVlbmNlVCBmaW5kX2Zvcm1hdF9jb3B5KAotICAgICAgICAgICAgY29uc3QgU2VxdWVuY2VUJiBJbnB1dCwKLSAgICAgICAgICAgIEZpbmRlclQgRmluZGVyLAotICAgICAgICAgICAgRm9ybWF0dGVyVCBGb3JtYXR0ZXIgKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBDb25jZXB0IGNoZWNrCi0gICAgICAgICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoCi0gICAgICAgICAgICAgICAgRmluZGVyQ29uY2VwdDwKLSAgICAgICAgICAgICAgICAgICAgRmluZGVyVCwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIHJhbmdlX2NvbnN0X2l0ZXJhdG9yPFNlcXVlbmNlVD46OnR5cGU+Ci0gICAgICAgICAgICAgICAgKSk7Ci0gICAgICAgICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoCi0gICAgICAgICAgICAgICAgRm9ybWF0dGVyQ29uY2VwdDwKLSAgICAgICAgICAgICAgICAgICAgRm9ybWF0dGVyVCwKLSAgICAgICAgICAgICAgICAgICAgRmluZGVyVCxORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgcmFuZ2VfY29uc3RfaXRlcmF0b3I8U2VxdWVuY2VUPjo6dHlwZT4KLSAgICAgICAgICAgICAgICApKTsKLQotICAgICAgICAgICAgcmV0dXJuIGRldGFpbDo6ZmluZF9mb3JtYXRfY29weV9pbXBsKAotICAgICAgICAgICAgICAgIElucHV0LAotICAgICAgICAgICAgICAgIEZvcm1hdHRlciwKLSAgICAgICAgICAgICAgICBGaW5kZXIoOjpuZG5ib29zdDo6YmVnaW4oSW5wdXQpLCA6Om5kbmJvb3N0OjplbmQoSW5wdXQpKSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyEgR2VuZXJpYyByZXBsYWNlIGFsZ29yaXRobQotICAgICAgICAvKiEKLSAgICAgICAgICAgIFVzZSB0aGUgRmluZGVyIHRvIHNlYXJjaCBmb3IgYSBzdWJzdHJpbmcuIFVzZSB0aGUgRm9ybWF0dGVyIHRvIGZvcm1hdAotICAgICAgICAgICAgdGhpcyBzdWJzdHJpbmcgYW5kIHJlcGxhY2UgaXQgaW4gdGhlIGlucHV0LiBUaGUgaW5wdXQgaXMgbW9kaWZpZWQgaW4tcGxhY2UuCi0KLSAgICAgICAgICAgIFxwYXJhbSBJbnB1dCBBbiBpbnB1dCBzZXF1ZW5jZQotICAgICAgICAgICAgXHBhcmFtIEZpbmRlciBBIEZpbmRlciBvYmplY3QgdXNlZCB0byBzZWFyY2ggZm9yIGEgbWF0Y2ggdG8gYmUgcmVwbGFjZWQKLSAgICAgICAgICAgIFxwYXJhbSBGb3JtYXR0ZXIgQSBGb3JtYXR0ZXIgb2JqZWN0IHVzZWQgdG8gZm9ybWF0IGEgbWF0Y2gKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgICB0eXBlbmFtZSBTZXF1ZW5jZVQsCi0gICAgICAgICAgICB0eXBlbmFtZSBGaW5kZXJULAotICAgICAgICAgICAgdHlwZW5hbWUgRm9ybWF0dGVyVD4KLSAgICAgICAgaW5saW5lIHZvaWQgZmluZF9mb3JtYXQoIAotICAgICAgICAgICAgU2VxdWVuY2VUJiBJbnB1dCwKLSAgICAgICAgICAgIEZpbmRlclQgRmluZGVyLAotICAgICAgICAgICAgRm9ybWF0dGVyVCBGb3JtYXR0ZXIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIENvbmNlcHQgY2hlY2sKLSAgICAgICAgICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKCgKLSAgICAgICAgICAgICAgICBGaW5kZXJDb25jZXB0PAotICAgICAgICAgICAgICAgICAgICBGaW5kZXJULAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgcmFuZ2VfY29uc3RfaXRlcmF0b3I8U2VxdWVuY2VUPjo6dHlwZT4KLSAgICAgICAgICAgICAgICApKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKCggCi0gICAgICAgICAgICAgICAgRm9ybWF0dGVyQ29uY2VwdDwKLSAgICAgICAgICAgICAgICAgICAgRm9ybWF0dGVyVCwKLSAgICAgICAgICAgICAgICAgICAgRmluZGVyVCxORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgcmFuZ2VfY29uc3RfaXRlcmF0b3I8U2VxdWVuY2VUPjo6dHlwZT4KLSAgICAgICAgICAgICAgICApKTsKLQotICAgICAgICAgICAgZGV0YWlsOjpmaW5kX2Zvcm1hdF9pbXBsKAotICAgICAgICAgICAgICAgIElucHV0LAotICAgICAgICAgICAgICAgIEZvcm1hdHRlciwKLSAgICAgICAgICAgICAgICBGaW5kZXIoOjpuZG5ib29zdDo6YmVnaW4oSW5wdXQpLCA6Om5kbmJvb3N0OjplbmQoSW5wdXQpKSk7Ci0gICAgICAgIH0KLQotCi0vLyAgZmluZF9mb3JtYXRfYWxsIGdlbmVyaWMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICAgICAgLy8hIEdlbmVyaWMgcmVwbGFjZSBhbGwgYWxnb3JpdGhtCi0gICAgICAgIC8qIQotICAgICAgICAgICAgVXNlIHRoZSBGaW5kZXIgdG8gc2VhcmNoIGZvciBhIHN1YnN0cmluZy4gVXNlIHRoZSBGb3JtYXR0ZXIgdG8gZm9ybWF0Ci0gICAgICAgICAgICB0aGlzIHN1YnN0cmluZyBhbmQgcmVwbGFjZSBpdCBpbiB0aGUgaW5wdXQuIFJlcGVhdCB0aGlzIGZvciBhbGwgbWF0Y2hpbmcKLSAgICAgICAgICAgIHN1YnN0cmluZ3MuCi0gICAgICAgICAgICBUaGUgcmVzdWx0IGlzIGEgbW9kaWZpZWQgY29weSBvZiB0aGUgaW5wdXQuIEl0IGlzIHJldHVybmVkIGFzIGEgc2VxdWVuY2UgCi0gICAgICAgICAgICBvciBjb3BpZWQgdG8gdGhlIG91dHB1dCBpdGVyYXRvci4KLQotICAgICAgICAgICAgXHBhcmFtIE91dHB1dCBBbiBvdXRwdXQgaXRlcmF0b3IgdG8gd2hpY2ggdGhlIHJlc3VsdCB3aWxsIGJlIGNvcGllZAotICAgICAgICAgICAgXHBhcmFtIElucHV0IEFuIGlucHV0IHNlcXVlbmNlCi0gICAgICAgICAgICBccGFyYW0gRmluZGVyIEEgRmluZGVyIG9iamVjdCB1c2VkIHRvIHNlYXJjaCBmb3IgYSBtYXRjaCB0byBiZSByZXBsYWNlZAotICAgICAgICAgICAgXHBhcmFtIEZvcm1hdHRlciBBIEZvcm1hdHRlciBvYmplY3QgdXNlZCB0byBmb3JtYXQgYSBtYXRjaAotICAgICAgICAgICAgXHJldHVybiBBbiBvdXRwdXQgaXRlcmF0b3IgcG9pbnRpbmcganVzdCBhZnRlciB0aGUgbGFzdCBpbnNlcnRlZCBjaGFyYWN0ZXIgb3IKLSAgICAgICAgICAgICAgICBhIG1vZGlmaWVkIGNvcHkgb2YgdGhlIGlucHV0Ci0KLSAgICAgICAgICAgICBcbm90ZSBUaGUgc2Vjb25kIHZhcmlhbnQgb2YgdGhpcyBmdW5jdGlvbiBwcm92aWRlcyB0aGUgc3Ryb25nIGV4Y2VwdGlvbi1zYWZldHkgZ3VhcmFudGVlCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPCAKLSAgICAgICAgICAgIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yVCwKLSAgICAgICAgICAgIHR5cGVuYW1lIFJhbmdlVCwKLSAgICAgICAgICAgIHR5cGVuYW1lIEZpbmRlclQsCi0gICAgICAgICAgICB0eXBlbmFtZSBGb3JtYXR0ZXJUPgotICAgICAgICBpbmxpbmUgT3V0cHV0SXRlcmF0b3JUIGZpbmRfZm9ybWF0X2FsbF9jb3B5KAotICAgICAgICAgICAgT3V0cHV0SXRlcmF0b3JUIE91dHB1dCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlVCYgSW5wdXQsCi0gICAgICAgICAgICBGaW5kZXJUIEZpbmRlciwKLSAgICAgICAgICAgIEZvcm1hdHRlclQgRm9ybWF0dGVyKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBDb25jZXB0IGNoZWNrCi0gICAgICAgICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoIAotICAgICAgICAgICAgICAgIEZpbmRlckNvbmNlcHQ8Ci0gICAgICAgICAgICAgICAgICAgIEZpbmRlclQsCi0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSByYW5nZV9jb25zdF9pdGVyYXRvcjxSYW5nZVQ+Ojp0eXBlPgotICAgICAgICAgICAgICAgICkpOwotICAgICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKCAKLSAgICAgICAgICAgICAgICBGb3JtYXR0ZXJDb25jZXB0PAotICAgICAgICAgICAgICAgICAgICBGb3JtYXR0ZXJULAotICAgICAgICAgICAgICAgICAgICBGaW5kZXJULE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSByYW5nZV9jb25zdF9pdGVyYXRvcjxSYW5nZVQ+Ojp0eXBlPgotICAgICAgICAgICAgICAgICkpOwotCi0gICAgICAgICAgICBpdGVyYXRvcl9yYW5nZTxORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgcmFuZ2VfY29uc3RfaXRlcmF0b3I8UmFuZ2VUPjo6dHlwZT4gbGl0X2lucHV0KDo6bmRuYm9vc3Q6OmFzX2xpdGVyYWwoSW5wdXQpKTsKLQotICAgICAgICAgICAgcmV0dXJuIGRldGFpbDo6ZmluZF9mb3JtYXRfYWxsX2NvcHlfaW1wbCgKLSAgICAgICAgICAgICAgICBPdXRwdXQsCi0gICAgICAgICAgICAgICAgbGl0X2lucHV0LAotICAgICAgICAgICAgICAgIEZpbmRlciwKLSAgICAgICAgICAgICAgICBGb3JtYXR0ZXIsCi0gICAgICAgICAgICAgICAgRmluZGVyKDo6bmRuYm9vc3Q6OmJlZ2luKGxpdF9pbnB1dCksIDo6bmRuYm9vc3Q6OmVuZChsaXRfaW5wdXQpKSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyEgR2VuZXJpYyByZXBsYWNlIGFsbCBhbGdvcml0aG0KLSAgICAgICAgLyohCi0gICAgICAgICAgICBcb3ZlcmxvYWQKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8IAotICAgICAgICAgICAgdHlwZW5hbWUgU2VxdWVuY2VULCAKLSAgICAgICAgICAgIHR5cGVuYW1lIEZpbmRlclQsCi0gICAgICAgICAgICB0eXBlbmFtZSBGb3JtYXR0ZXJUID4KLSAgICAgICAgaW5saW5lIFNlcXVlbmNlVCBmaW5kX2Zvcm1hdF9hbGxfY29weSgKLSAgICAgICAgICAgIGNvbnN0IFNlcXVlbmNlVCYgSW5wdXQsCi0gICAgICAgICAgICBGaW5kZXJUIEZpbmRlciwKLSAgICAgICAgICAgIEZvcm1hdHRlclQgRm9ybWF0dGVyICkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gQ29uY2VwdCBjaGVjawotICAgICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKAotICAgICAgICAgICAgICAgIEZpbmRlckNvbmNlcHQ8Ci0gICAgICAgICAgICAgICAgICAgIEZpbmRlclQsCi0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSByYW5nZV9jb25zdF9pdGVyYXRvcjxTZXF1ZW5jZVQ+Ojp0eXBlPgotICAgICAgICAgICAgICAgICkpOwotICAgICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKAotICAgICAgICAgICAgICAgIEZvcm1hdHRlckNvbmNlcHQ8Ci0gICAgICAgICAgICAgICAgICAgIEZvcm1hdHRlclQsCi0gICAgICAgICAgICAgICAgICAgIEZpbmRlclQsTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIHJhbmdlX2NvbnN0X2l0ZXJhdG9yPFNlcXVlbmNlVD46OnR5cGU+Ci0gICAgICAgICAgICAgICAgKSk7Ci0KLSAgICAgICAgICAgIHJldHVybiBkZXRhaWw6OmZpbmRfZm9ybWF0X2FsbF9jb3B5X2ltcGwoCi0gICAgICAgICAgICAgICAgSW5wdXQsCi0gICAgICAgICAgICAgICAgRmluZGVyLAotICAgICAgICAgICAgICAgIEZvcm1hdHRlciwKLSAgICAgICAgICAgICAgICBGaW5kZXIoIDo6bmRuYm9vc3Q6OmJlZ2luKElucHV0KSwgOjpuZG5ib29zdDo6ZW5kKElucHV0KSApICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyEgR2VuZXJpYyByZXBsYWNlIGFsbCBhbGdvcml0aG0KLSAgICAgICAgLyohCi0gICAgICAgICAgICBVc2UgdGhlIEZpbmRlciB0byBzZWFyY2ggZm9yIGEgc3Vic3RyaW5nLiBVc2UgdGhlIEZvcm1hdHRlciB0byBmb3JtYXQKLSAgICAgICAgICAgIHRoaXMgc3Vic3RyaW5nIGFuZCByZXBsYWNlIGl0IGluIHRoZSBpbnB1dC4gUmVwZWF0IHRoaXMgZm9yIGFsbCBtYXRjaGluZwotICAgICAgICAgICAgc3Vic3RyaW5ncy5UaGUgaW5wdXQgaXMgbW9kaWZpZWQgaW4tcGxhY2UuCi0KLSAgICAgICAgICAgIFxwYXJhbSBJbnB1dCBBbiBpbnB1dCBzZXF1ZW5jZQotICAgICAgICAgICAgXHBhcmFtIEZpbmRlciBBIEZpbmRlciBvYmplY3QgdXNlZCB0byBzZWFyY2ggZm9yIGEgbWF0Y2ggdG8gYmUgcmVwbGFjZWQKLSAgICAgICAgICAgIFxwYXJhbSBGb3JtYXR0ZXIgQSBGb3JtYXR0ZXIgb2JqZWN0IHVzZWQgdG8gZm9ybWF0IGEgbWF0Y2gKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgICB0eXBlbmFtZSBTZXF1ZW5jZVQsCi0gICAgICAgICAgICB0eXBlbmFtZSBGaW5kZXJULAotICAgICAgICAgICAgdHlwZW5hbWUgRm9ybWF0dGVyVCA+Ci0gICAgICAgIGlubGluZSB2b2lkIGZpbmRfZm9ybWF0X2FsbCggCi0gICAgICAgICAgICBTZXF1ZW5jZVQmIElucHV0LAotICAgICAgICAgICAgRmluZGVyVCBGaW5kZXIsCi0gICAgICAgICAgICBGb3JtYXR0ZXJUIEZvcm1hdHRlciApCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIENvbmNlcHQgY2hlY2sKLSAgICAgICAgICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKCgKLSAgICAgICAgICAgICAgICBGaW5kZXJDb25jZXB0PAotICAgICAgICAgICAgICAgICAgICBGaW5kZXJULAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgcmFuZ2VfY29uc3RfaXRlcmF0b3I8U2VxdWVuY2VUPjo6dHlwZT4KLSAgICAgICAgICAgICAgICApKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKCgKLSAgICAgICAgICAgICAgICBGb3JtYXR0ZXJDb25jZXB0PAotICAgICAgICAgICAgICAgICAgICBGb3JtYXR0ZXJULAotICAgICAgICAgICAgICAgICAgICBGaW5kZXJULE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSByYW5nZV9jb25zdF9pdGVyYXRvcjxTZXF1ZW5jZVQ+Ojp0eXBlPgotICAgICAgICAgICAgICAgICkpOwotCi0gICAgICAgICAgICBkZXRhaWw6OmZpbmRfZm9ybWF0X2FsbF9pbXBsKAotICAgICAgICAgICAgICAgIElucHV0LAotICAgICAgICAgICAgICAgIEZpbmRlciwKLSAgICAgICAgICAgICAgICBGb3JtYXR0ZXIsCi0gICAgICAgICAgICAgICAgRmluZGVyKDo6bmRuYm9vc3Q6OmJlZ2luKElucHV0KSwgOjpuZG5ib29zdDo6ZW5kKElucHV0KSkpOwotCi0gICAgICAgIH0KLQotICAgIH0gLy8gbmFtZXNwYWNlIGFsZ29yaXRobQotCi0gICAgLy8gcHVsbCB0aGUgbmFtZXMgdG8gdGhlIGJvb3N0IG5hbWVzcGFjZQotICAgIHVzaW5nIGFsZ29yaXRobTo6ZmluZF9mb3JtYXRfY29weTsKLSAgICB1c2luZyBhbGdvcml0aG06OmZpbmRfZm9ybWF0OwotICAgIHVzaW5nIGFsZ29yaXRobTo6ZmluZF9mb3JtYXRfYWxsX2NvcHk7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjpmaW5kX2Zvcm1hdF9hbGw7Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLQotI2VuZGlmICAvLyBORE5CT09TVF9TVFJJTkdfRklORF9GT1JNQVRfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZmluZGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9maW5kZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YmM2NGQyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9maW5kZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjcwICswLDAgQEAKLS8vICBCb29zdCBzdHJpbmdfYWxnbyBsaWJyYXJ5IGZpbmRlci5ocHAgaGVhZGVyIGZpbGUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBDb3B5cmlnaHQgUGF2b2wgRHJvYmEgMjAwMi0yMDA2LgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAgIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICAgICAgICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy8gZm9yIHVwZGF0ZXMsIGRvY3VtZW50YXRpb24sIGFuZCByZXZpc2lvbiBoaXN0b3J5LgotCi0jaWZuZGVmIE5ETkJPT1NUX1NUUklOR19GSU5ERVJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1NUUklOR19GSU5ERVJfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2NvbmZpZy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9pdGVyYXRvcl9yYW5nZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvYmVnaW4uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2NvbnN0X2l0ZXJhdG9yLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvY29uc3RhbnRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2RldGFpbC9maW5kZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvY29tcGFyZS5ocHA+Ci0KLS8qISBcZmlsZQotICAgIERlZmluZXMgRmluZGVyIGdlbmVyYXRvcnMuIEZpbmRlciBvYmplY3QgaXMgYSBmdW5jdG9yIHdoaWNoIGlzIGFibGUgdG8gCi0gICAgZmluZCBhIHN1YnN0cmluZyBtYXRjaGluZyBhIHNwZWNpZmljIGNyaXRlcmlhIGluIHRoZSBpbnB1dC4KLSAgICBGaW5kZXJzIGFyZSB1c2VkIGFzIGEgcGx1Z2dhYmxlIGNvbXBvbmVudHMgZm9yIHJlcGxhY2UsIGZpbmQgCi0gICAgYW5kIHNwbGl0IGZhY2lsaXRpZXMuIFRoaXMgaGVhZGVyIGNvbnRhaW5zIGdlbmVyYXRvciBmdW5jdGlvbnMgCi0gICAgZm9yIGZpbmRlcnMgcHJvdmlkZWQgaW4gdGhpcyBsaWJyYXJ5LgotKi8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICBuYW1lc3BhY2UgYWxnb3JpdGhtIHsKLQotLy8gIEZpbmRlciBnZW5lcmF0b3JzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0gICAgICAgIAotICAgICAgICAvLyEgIkZpcnN0IiBmaW5kZXIgCi0gICAgICAgIC8qIQotICAgICAgICAgICAgQ29uc3RydWN0IHRoZSBcYyBmaXJzdF9maW5kZXIuIFRoZSBmaW5kZXIgc2VhcmNoZXMgZm9yIHRoZSBmaXJzdAotICAgICAgICAgICAgb2NjdXJyZW5jZSBvZiB0aGUgc3RyaW5nIGluIGEgZ2l2ZW4gaW5wdXQuCi0gICAgICAgICAgICBUaGUgcmVzdWx0IGlzIGdpdmVuIGFzIGFuIFxjIGl0ZXJhdG9yX3JhbmdlIGRlbGltaXRpbmcgdGhlIG1hdGNoLgotCi0gICAgICAgICAgICBccGFyYW0gU2VhcmNoIEEgc3Vic3RyaW5nIHRvIGJlIHNlYXJjaGVkIGZvci4KLSAgICAgICAgICAgIFxwYXJhbSBDb21wIEFuIGVsZW1lbnQgY29tcGFyaXNvbiBwcmVkaWNhdGUKLSAgICAgICAgICAgIFxyZXR1cm4gQW4gaW5zdGFuY2Ugb2YgdGhlIFxjIGZpcnN0X2ZpbmRlciBvYmplY3QKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmFuZ2VUPgotICAgICAgICBpbmxpbmUgZGV0YWlsOjpmaXJzdF9maW5kZXJGPAotICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIHJhbmdlX2NvbnN0X2l0ZXJhdG9yPFJhbmdlVD46OnR5cGUsCi0gICAgICAgICAgICBpc19lcXVhbD4KLSAgICAgICAgZmlyc3RfZmluZGVyKCBjb25zdCBSYW5nZVQmIFNlYXJjaCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAKLSAgICAgICAgICAgICAgICBkZXRhaWw6OmZpcnN0X2ZpbmRlckY8Ci0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSAKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlX2NvbnN0X2l0ZXJhdG9yPFJhbmdlVD46OnR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICBpc19lcXVhbD4oIDo6bmRuYm9vc3Q6OmFzX2xpdGVyYWwoU2VhcmNoKSwgaXNfZXF1YWwoKSApIDsKLSAgICAgICAgfQotCi0gICAgICAgIC8vISAiRmlyc3QiIGZpbmRlcgotICAgICAgICAvKiEKLSAgICAgICAgICAgIFxvdmVybG9hZAotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSYW5nZVQsdHlwZW5hbWUgUHJlZGljYXRlVD4KLSAgICAgICAgaW5saW5lIGRldGFpbDo6Zmlyc3RfZmluZGVyRjwKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSByYW5nZV9jb25zdF9pdGVyYXRvcjxSYW5nZVQ+Ojp0eXBlLAotICAgICAgICAgICAgUHJlZGljYXRlVD4KLSAgICAgICAgZmlyc3RfZmluZGVyKCAKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlVCYgU2VhcmNoLCBQcmVkaWNhdGVUIENvbXAgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gCi0gICAgICAgICAgICAgICAgZGV0YWlsOjpmaXJzdF9maW5kZXJGPAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgCi0gICAgICAgICAgICAgICAgICAgICAgICByYW5nZV9jb25zdF9pdGVyYXRvcjxSYW5nZVQ+Ojp0eXBlLAotICAgICAgICAgICAgICAgICAgICBQcmVkaWNhdGVUPiggOjpuZG5ib29zdDo6YXNfbGl0ZXJhbChTZWFyY2gpLCBDb21wICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyEgIkxhc3QiIGZpbmRlcgotICAgICAgICAvKiEKLSAgICAgICAgICAgIENvbnN0cnVjdCB0aGUgXGMgbGFzdF9maW5kZXIuIFRoZSBmaW5kZXIgc2VhcmNoZXMgZm9yIHRoZSBsYXN0Ci0gICAgICAgICAgICBvY2N1cnJlbmNlIG9mIHRoZSBzdHJpbmcgaW4gYSBnaXZlbiBpbnB1dC4KLSAgICAgICAgICAgIFRoZSByZXN1bHQgaXMgZ2l2ZW4gYXMgYW4gXGMgaXRlcmF0b3JfcmFuZ2UgZGVsaW1pdGluZyB0aGUgbWF0Y2guCi0KLSAgICAgICAgICAgIFxwYXJhbSBTZWFyY2ggQSBzdWJzdHJpbmcgdG8gYmUgc2VhcmNoZWQgZm9yLgotICAgICAgICAgICAgXHBhcmFtIENvbXAgQW4gZWxlbWVudCBjb21wYXJpc29uIHByZWRpY2F0ZQotICAgICAgICAgICAgXHJldHVybiBBbiBpbnN0YW5jZSBvZiB0aGUgXGMgbGFzdF9maW5kZXIgb2JqZWN0Ci0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJhbmdlVD4KLSAgICAgICAgaW5saW5lIGRldGFpbDo6bGFzdF9maW5kZXJGPAotICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIHJhbmdlX2NvbnN0X2l0ZXJhdG9yPFJhbmdlVD46OnR5cGUsCi0gICAgICAgICAgICBpc19lcXVhbD4KLSAgICAgICAgbGFzdF9maW5kZXIoIGNvbnN0IFJhbmdlVCYgU2VhcmNoICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIAotICAgICAgICAgICAgICAgIGRldGFpbDo6bGFzdF9maW5kZXJGPAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgCi0gICAgICAgICAgICAgICAgICAgICAgICByYW5nZV9jb25zdF9pdGVyYXRvcjxSYW5nZVQ+Ojp0eXBlLAotICAgICAgICAgICAgICAgICAgICBpc19lcXVhbD4oIDo6bmRuYm9vc3Q6OmFzX2xpdGVyYWwoU2VhcmNoKSwgaXNfZXF1YWwoKSApOwotICAgICAgICB9Ci0gICAgICAgIC8vISAiTGFzdCIgZmluZGVyCi0gICAgICAgIC8qIQotICAgICAgICAgICAgXG92ZXJsb2FkCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJhbmdlVCwgdHlwZW5hbWUgUHJlZGljYXRlVD4KLSAgICAgICAgaW5saW5lIGRldGFpbDo6bGFzdF9maW5kZXJGPAotICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIHJhbmdlX2NvbnN0X2l0ZXJhdG9yPFJhbmdlVD46OnR5cGUsCi0gICAgICAgICAgICBQcmVkaWNhdGVUPgotICAgICAgICBsYXN0X2ZpbmRlciggY29uc3QgUmFuZ2VUJiBTZWFyY2gsIFByZWRpY2F0ZVQgQ29tcCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAKLSAgICAgICAgICAgICAgICBkZXRhaWw6Omxhc3RfZmluZGVyRjwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIAotICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VfY29uc3RfaXRlcmF0b3I8UmFuZ2VUPjo6dHlwZSwKLSAgICAgICAgICAgICAgICAgICAgUHJlZGljYXRlVD4oIDo6bmRuYm9vc3Q6OmFzX2xpdGVyYWwoU2VhcmNoKSwgQ29tcCApIDsKLSAgICAgICAgfQotCi0gICAgICAgIC8vISAiTnRoIiBmaW5kZXIKLSAgICAgICAgLyohCi0gICAgICAgICAgICBDb25zdHJ1Y3QgdGhlIFxjIG50aF9maW5kZXIuIFRoZSBmaW5kZXIgc2VhcmNoZXMgZm9yIHRoZSBuLXRoICh6ZXJvLWluZGV4ZWQpCi0gICAgICAgICAgICBvY2N1cnJlbmNlIG9mIHRoZSBzdHJpbmcgaW4gYSBnaXZlbiBpbnB1dC4KLSAgICAgICAgICAgIFRoZSByZXN1bHQgaXMgZ2l2ZW4gYXMgYW4gXGMgaXRlcmF0b3JfcmFuZ2UgZGVsaW1pdGluZyB0aGUgbWF0Y2guCi0KLSAgICAgICAgICAgIFxwYXJhbSBTZWFyY2ggQSBzdWJzdHJpbmcgdG8gYmUgc2VhcmNoZWQgZm9yLgotICAgICAgICAgICAgXHBhcmFtIE50aCBBbiBpbmRleCBvZiB0aGUgbWF0Y2ggdG8gYmUgZmluZAotICAgICAgICAgICAgXHBhcmFtIENvbXAgQW4gZWxlbWVudCBjb21wYXJpc29uIHByZWRpY2F0ZQotICAgICAgICAgICAgXHJldHVybiBBbiBpbnN0YW5jZSBvZiB0aGUgXGMgbnRoX2ZpbmRlciBvYmplY3QKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmFuZ2VUPgotICAgICAgICBpbmxpbmUgZGV0YWlsOjpudGhfZmluZGVyRjwKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSByYW5nZV9jb25zdF9pdGVyYXRvcjxSYW5nZVQ+Ojp0eXBlLAotICAgICAgICAgICAgaXNfZXF1YWw+Ci0gICAgICAgIG50aF9maW5kZXIoIAotICAgICAgICAgICAgY29uc3QgUmFuZ2VUJiBTZWFyY2gsIAotICAgICAgICAgICAgaW50IE50aCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIAotICAgICAgICAgICAgICAgIGRldGFpbDo6bnRoX2ZpbmRlckY8Ci0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSAKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlX2NvbnN0X2l0ZXJhdG9yPFJhbmdlVD46OnR5cGUsCi0gICAgICAgICAgICAgICAgICAgIGlzX2VxdWFsPiggOjpuZG5ib29zdDo6YXNfbGl0ZXJhbChTZWFyY2gpLCBOdGgsIGlzX2VxdWFsKCkgKSA7Ci0gICAgICAgIH0KLSAgICAgICAgLy8hICJOdGgiIGZpbmRlcgotICAgICAgICAvKiEKLSAgICAgICAgICAgIFxvdmVybG9hZAotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSYW5nZVQsIHR5cGVuYW1lIFByZWRpY2F0ZVQ+Ci0gICAgICAgIGlubGluZSBkZXRhaWw6Om50aF9maW5kZXJGPAotICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIHJhbmdlX2NvbnN0X2l0ZXJhdG9yPFJhbmdlVD46OnR5cGUsCi0gICAgICAgICAgICBQcmVkaWNhdGVUPgotICAgICAgICBudGhfZmluZGVyKCAKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlVCYgU2VhcmNoLCAKLSAgICAgICAgICAgIGludCBOdGgsIAotICAgICAgICAgICAgUHJlZGljYXRlVCBDb21wICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIAotICAgICAgICAgICAgICAgIGRldGFpbDo6bnRoX2ZpbmRlckY8Ci0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSAKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlX2NvbnN0X2l0ZXJhdG9yPFJhbmdlVD46OnR5cGUsCi0gICAgICAgICAgICAgICAgICAgIFByZWRpY2F0ZVQ+KCA6Om5kbmJvb3N0Ojphc19saXRlcmFsKFNlYXJjaCksIE50aCwgQ29tcCApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8hICJIZWFkIiBmaW5kZXIKLSAgICAgICAgLyohCi0gICAgICAgICAgICBDb25zdHJ1Y3QgdGhlIFxjIGhlYWRfZmluZGVyLiBUaGUgZmluZGVyIHJldHVybnMgYSBoZWFkIG9mIGEgZ2l2ZW4KLSAgICAgICAgICAgIGlucHV0LiBUaGUgaGVhZCBpcyBhIHByZWZpeCBvZiBhIHN0cmluZyB1cCB0byBuIGVsZW1lbnRzIGluCi0gICAgICAgICAgICBzaXplLiBJZiBhbiBpbnB1dCBoYXMgbGVzcyB0aGVuIG4gZWxlbWVudHMsIHdob2xlIGlucHV0IGlzIAotICAgICAgICAgICAgY29uc2lkZXJlZCBhIGhlYWQuCi0gICAgICAgICAgICBUaGUgcmVzdWx0IGlzIGdpdmVuIGFzIGFuIFxjIGl0ZXJhdG9yX3JhbmdlIGRlbGltaXRpbmcgdGhlIG1hdGNoLgotCi0gICAgICAgICAgICBccGFyYW0gTiBUaGUgc2l6ZSBvZiB0aGUgaGVhZAotICAgICAgICAgICAgXHJldHVybiBBbiBpbnN0YW5jZSBvZiB0aGUgXGMgaGVhZF9maW5kZXIgb2JqZWN0Ci0gICAgICAgICovCi0gICAgICAgIGlubGluZSBkZXRhaWw6OmhlYWRfZmluZGVyRgotICAgICAgICBoZWFkX2ZpbmRlciggaW50IE4gKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZGV0YWlsOjpoZWFkX2ZpbmRlckYoTik7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8vISAiVGFpbCIgZmluZGVyCi0gICAgICAgIC8qIQotICAgICAgICAgICAgQ29uc3RydWN0IHRoZSBcYyB0YWlsX2ZpbmRlci4gVGhlIGZpbmRlciByZXR1cm5zIGEgdGFpbCBvZiBhIGdpdmVuCi0gICAgICAgICAgICBpbnB1dC4gVGhlIHRhaWwgaXMgYSBzdWZmaXggb2YgYSBzdHJpbmcgdXAgdG8gbiBlbGVtZW50cyBpbgotICAgICAgICAgICAgc2l6ZS4gSWYgYW4gaW5wdXQgaGFzIGxlc3MgdGhlbiBuIGVsZW1lbnRzLCB3aG9sZSBpbnB1dCBpcyAKLSAgICAgICAgICAgIGNvbnNpZGVyZWQgYSBoZWFkLgotICAgICAgICAgICAgVGhlIHJlc3VsdCBpcyBnaXZlbiBhcyBhbiBcYyBpdGVyYXRvcl9yYW5nZSBkZWxpbWl0aW5nIHRoZSBtYXRjaC4KLQotICAgICAgICAgICAgXHBhcmFtIE4gVGhlIHNpemUgb2YgdGhlIGhlYWQKLSAgICAgICAgICAgIFxyZXR1cm4gQW4gaW5zdGFuY2Ugb2YgdGhlIFxjIHRhaWxfZmluZGVyIG9iamVjdAotICAgICAgICAqLwotICAgICAgICBpbmxpbmUgZGV0YWlsOjp0YWlsX2ZpbmRlckYKLSAgICAgICAgdGFpbF9maW5kZXIoIGludCBOICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGRldGFpbDo6dGFpbF9maW5kZXJGKE4pOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8hICJUb2tlbiIgZmluZGVyCi0gICAgICAgIC8qIQotICAgICAgICAgICAgQ29uc3RydWN0IHRoZSBcYyB0b2tlbl9maW5kZXIuIFRoZSBmaW5kZXIgc2VhcmNoZXMgZm9yIGEgdG9rZW4gCi0gICAgICAgICAgICBzcGVjaWZpZWQgYnkgYSBwcmVkaWNhdGUuIEl0IGlzIHNpbWlsYXIgdG8gc3RkOjpmaW5kX2lmIAotICAgICAgICAgICAgYWxnb3JpdGhtLCB3aXRoIGFuIGV4Y2VwdGlvbiB0aGF0IGl0IHJldHVybiBhIHJhbmdlIG9mCi0gICAgICAgICAgICBpbnN0ZWFkIG9mIGEgc2luZ2xlIGl0ZXJhdG9yLgotCi0gICAgICAgICAgICBJZiAiY29tcHJlc3MgdG9rZW4gbW9kZSIgaXMgZW5hYmxlZCwgYWRqYWNlbnQgbWF0Y2hpbmcgdG9rZW5zIGFyZSAKLSAgICAgICAgICAgIGNvbmNhdGVuYXRlZCBpbnRvIG9uZSBtYXRjaC4gVGh1cyB0aGUgZmluZGVyIGNhbiBiZSB1c2VkIHRvIAotICAgICAgICAgICAgc2VhcmNoIGZvciBjb250aW51b3VzIHNlZ21lbnRzIG9mIGNoYXJhY3RlcnMgc2F0aXNmeWluZyB0aGUgCi0gICAgICAgICAgICBnaXZlbiBwcmVkaWNhdGUuCi0KLSAgICAgICAgICAgIFRoZSByZXN1bHQgaXMgZ2l2ZW4gYXMgYW4gXGMgaXRlcmF0b3JfcmFuZ2UgZGVsaW1pdGluZyB0aGUgbWF0Y2guCi0KLSAgICAgICAgICAgIFxwYXJhbSBQcmVkIEFuIGVsZW1lbnQgc2VsZWN0aW9uIHByZWRpY2F0ZQotICAgICAgICAgICAgXHBhcmFtIGVDb21wcmVzcyBDb21wcmVzcyBmbGFnCi0gICAgICAgICAgICBccmV0dXJuIEFuIGluc3RhbmNlIG9mIHRoZSBcYyB0b2tlbl9maW5kZXIgb2JqZWN0Ci0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQcmVkaWNhdGVUID4KLSAgICAgICAgaW5saW5lIGRldGFpbDo6dG9rZW5fZmluZGVyRjxQcmVkaWNhdGVUPgotICAgICAgICB0b2tlbl9maW5kZXIoIAotICAgICAgICAgICAgUHJlZGljYXRlVCBQcmVkLCAKLSAgICAgICAgICAgIHRva2VuX2NvbXByZXNzX21vZGVfdHlwZSBlQ29tcHJlc3M9dG9rZW5fY29tcHJlc3Nfb2ZmICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGRldGFpbDo6dG9rZW5fZmluZGVyRjxQcmVkaWNhdGVUPiggUHJlZCwgZUNvbXByZXNzICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyEgIlJhbmdlIiBmaW5kZXIKLSAgICAgICAgLyohCi0gICAgICAgICAgICBDb25zdHJ1Y3QgdGhlIFxjIHJhbmdlX2ZpbmRlci4gVGhlIGZpbmRlciBkb2VzIG5vdCBwZXJmb3JtIAotICAgICAgICAgICAgYW55IG9wZXJhdGlvbi4gSXQgc2ltcGx5IHJldHVybnMgdGhlIGdpdmVuIHJhbmdlIGZvciAKLSAgICAgICAgICAgIGFueSBpbnB1dC4gCi0KLSAgICAgICAgICAgIFxwYXJhbSBCZWdpbiBCZWdpbm5pbmcgb2YgdGhlIHJhbmdlCi0gICAgICAgICAgICBccGFyYW0gRW5kIEVuZCBvZiB0aGUgcmFuZ2UKLSAgICAgICAgICAgIFxwYXJhbSBSYW5nZSBUaGUgcmFuZ2UuCi0gICAgICAgICAgICBccmV0dXJuIEFuIGluc3RhbmNlIG9mIHRoZSBcYyByYW5nZV9maW5nZXIgb2JqZWN0Ci0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3JUID4KLSAgICAgICAgaW5saW5lIGRldGFpbDo6cmFuZ2VfZmluZGVyRjxGb3J3YXJkSXRlcmF0b3JUPgotICAgICAgICByYW5nZV9maW5kZXIoCi0gICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEJlZ2luLAotICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBFbmQgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZGV0YWlsOjpyYW5nZV9maW5kZXJGPEZvcndhcmRJdGVyYXRvclQ+KCBCZWdpbiwgRW5kICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyEgIlJhbmdlIiBmaW5kZXIKLSAgICAgICAgLyohICAgICAgIAotICAgICAgICAgICAgXG92ZXJsb2FkCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3JUID4KLSAgICAgICAgaW5saW5lIGRldGFpbDo6cmFuZ2VfZmluZGVyRjxGb3J3YXJkSXRlcmF0b3JUPgotICAgICAgICByYW5nZV9maW5kZXIoIGl0ZXJhdG9yX3JhbmdlPEZvcndhcmRJdGVyYXRvclQ+IFJhbmdlICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGRldGFpbDo6cmFuZ2VfZmluZGVyRjxGb3J3YXJkSXRlcmF0b3JUPiggUmFuZ2UgKTsKLSAgICAgICAgfQotCi0gICAgfSAvLyBuYW1lc3BhY2UgYWxnb3JpdGhtCi0KLSAgICAvLyBwdWxsIHRoZSBuYW1lcyB0byB0aGUgYm9vc3QgbmFtZXNwYWNlCi0gICAgdXNpbmcgYWxnb3JpdGhtOjpmaXJzdF9maW5kZXI7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjpsYXN0X2ZpbmRlcjsKLSAgICB1c2luZyBhbGdvcml0aG06Om50aF9maW5kZXI7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjpoZWFkX2ZpbmRlcjsKLSAgICB1c2luZyBhbGdvcml0aG06OnRhaWxfZmluZGVyOwotICAgIHVzaW5nIGFsZ29yaXRobTo6dG9rZW5fZmluZGVyOwotICAgIHVzaW5nIGFsZ29yaXRobTo6cmFuZ2VfZmluZGVyOwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0KLSNlbmRpZiAgLy8gTkROQk9PU1RfU1RSSU5HX0ZJTkRFUl9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9mb3JtYXR0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2Zvcm1hdHRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0NmQyNjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2Zvcm1hdHRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjAgKzAsMCBAQAotLy8gIEJvb3N0IHN0cmluZ19hbGdvIGxpYnJhcnkgZm9ybWF0dGVyLmhwcCBoZWFkZXIgZmlsZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCBQYXZvbCBEcm9iYSAyMDAyLTIwMDMuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gICAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gICAgICAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnLyBmb3IgdXBkYXRlcywgZG9jdW1lbnRhdGlvbiwgYW5kIHJldmlzaW9uIGhpc3RvcnkuCi0KLSNpZm5kZWYgTkROQk9PU1RfU1RSSU5HX0ZPUk1BVFRFUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfU1RSSU5HX0ZPUk1BVFRFUl9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9pdGVyYXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvdmFsdWVfdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3JfcmFuZ2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2FzX2xpdGVyYWwuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9kZXRhaWwvZm9ybWF0dGVyLmhwcD4KLQotLyohIFxmaWxlCi0gICAgRGVmaW5lcyBGb3JtYXR0ZXIgZ2VuZXJhdG9ycy4gRm9ybWF0dGVyIGlzIGEgZnVuY3RvciB3aGljaCBmb3JtYXRzCi0gICAgYSBzdHJpbmcgYWNjb3JkaW5nIHRvIGdpdmVuIHBhcmFtZXRlcnMuIEEgRm9ybWF0dGVyIHdvcmtzCi0gICAgaW4gY29uanVuY3Rpb24gd2l0aCBhIEZpbmRlci4gQSBGaW5kZXIgY2FuIHByb3ZpZGUgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgotICAgIGZvciBhIHNwZWNpZmljIEZvcm1hdHRlci4gQW4gZXhhbXBsZSBvZiBzdWNoIGEgY29vcGVyYXRpb24gaXMgcmVnZXhfZmluZGVyCi0gICAgYW5kIHJlZ2V4X2Zvcm1hdHRlci4KLQotICAgIEZvcm1hdHRlcnMgYXJlIHVzZWQgYXMgcGx1Z2dhYmxlIGNvbXBvbmVudHMgZm9yIHJlcGxhY2UgZmFjaWxpdGllcy4gCi0gICAgVGhpcyBoZWFkZXIgY29udGFpbnMgZ2VuZXJhdG9yIGZ1bmN0aW9ucyBmb3IgdGhlIEZvcm1hdHRlcnMgcHJvdmlkZWQgaW4gdGhpcyBsaWJyYXJ5LgotKi8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICBuYW1lc3BhY2UgYWxnb3JpdGhtIHsKLQotLy8gZ2VuZXJpYyBmb3JtYXR0ZXJzICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgICAgIC8vISBDb25zdGFudCBmb3JtYXR0ZXIKLSAgICAgICAgLyohCi0gICAgICAgICAgICBDb25zdHJ1Y3RzIGEgXGMgY29uc3RfZm9ybWF0dGVyLiBDb25zdCBmb3JtYXR0ZXIgYWx3YXlzIHJldHVybnMKLSAgICAgICAgICAgIHRoZSBzYW1lIHZhbHVlLCByZWdhcmRsZXNzIG9mIHRoZSBwYXJhbWV0ZXIuCi0KLSAgICAgICAgICAgIFxwYXJhbSBGb3JtYXQgQSBwcmVkZWZpbmVkIHZhbHVlIHVzZWQgYXMgYSByZXN1bHQgZm9yIGZvcm1hdHRpbmcKLSAgICAgICAgICAgIFxyZXR1cm4gQW4gaW5zdGFuY2Ugb2YgdGhlIFxjIGNvbnN0X2Zvcm1hdHRlciBvYmplY3QuCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJhbmdlVD4KLSAgICAgICAgaW5saW5lIGRldGFpbDo6Y29uc3RfZm9ybWF0RjwKLSAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlPAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSByYW5nZV9jb25zdF9pdGVyYXRvcjxSYW5nZVQ+Ojp0eXBlPiA+Ci0gICAgICAgIGNvbnN0X2Zvcm1hdHRlcihjb25zdCBSYW5nZVQmIEZvcm1hdCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGRldGFpbDo6Y29uc3RfZm9ybWF0RjwKLSAgICAgICAgICAgICAgICBpdGVyYXRvcl9yYW5nZTwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIHJhbmdlX2NvbnN0X2l0ZXJhdG9yPFJhbmdlVD46OnR5cGU+ID4oOjpuZG5ib29zdDo6YXNfbGl0ZXJhbChGb3JtYXQpKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vISBJZGVudGl0eSBmb3JtYXR0ZXIKLSAgICAgICAgLyohCi0gICAgICAgICAgICBDb25zdHJ1Y3RzIGFuIFxjIGlkZW50aXR5X2Zvcm1hdHRlci4gSWRlbnRpdHkgZm9ybWF0dGVyIGFsd2F5cyByZXR1cm5zCi0gICAgICAgICAgICB0aGUgcGFyYW1ldGVyLgotCi0gICAgICAgICAgICBccmV0dXJuIEFuIGluc3RhbmNlIG9mIHRoZSBcYyBpZGVudGl0eV9mb3JtYXR0ZXIgb2JqZWN0LgotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSYW5nZVQ+Ci0gICAgICAgIGlubGluZSBkZXRhaWw6OmlkZW50aXR5X2Zvcm1hdEY8Ci0gICAgICAgICAgICBpdGVyYXRvcl9yYW5nZTwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgcmFuZ2VfY29uc3RfaXRlcmF0b3I8UmFuZ2VUPjo6dHlwZT4gPgotICAgICAgICBpZGVudGl0eV9mb3JtYXR0ZXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZGV0YWlsOjppZGVudGl0eV9mb3JtYXRGPAotICAgICAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlPAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgcmFuZ2VfY29uc3RfaXRlcmF0b3I8UmFuZ2VUPjo6dHlwZT4gPigpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8hIEVtcHR5IGZvcm1hdHRlcgotICAgICAgICAvKiEKLSAgICAgICAgICAgIENvbnN0cnVjdHMgYW4gXGMgZW1wdHlfZm9ybWF0dGVyLiBFbXB0eSBmb3JtYXR0ZXIgYWx3YXlzIHJldHVybnMgYW4gZW1wdHkKLSAgICAgICAgICAgIHNlcXVlbmNlLiAKLQotICAgICAgICAgICAgXHBhcmFtIElucHV0IGNvbnRhaW5lciB1c2VkIHRvIHNlbGVjdCBhIGNvcnJlY3QgdmFsdWVfdHlwZSBmb3IgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0aW5nIGVtcHR5X2NvbnRhaW5lcjw+LgotICAgICAgICAgICAgXHJldHVybiBBbiBpbnN0YW5jZSBvZiB0aGUgXGMgZW1wdHlfZm9ybWF0dGVyIG9iamVjdC4KLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmFuZ2VUPgotICAgICAgICBpbmxpbmUgZGV0YWlsOjplbXB0eV9mb3JtYXRGPCAKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSByYW5nZV92YWx1ZTxSYW5nZVQ+Ojp0eXBlPgotICAgICAgICBlbXB0eV9mb3JtYXR0ZXIoY29uc3QgUmFuZ2VUJikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGRldGFpbDo6ZW1wdHlfZm9ybWF0RjwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgcmFuZ2VfdmFsdWU8UmFuZ2VUPjo6dHlwZT4oKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vISBFbXB0eSBmb3JtYXR0ZXIKLSAgICAgICAgLyohCi0gICAgICAgICAgICBDb25zdHJ1Y3RzIGEgXGMgZGlzc2VjdF9mb3JtYXR0ZXIuIERpc3NlY3QgZm9ybWF0dGVyIHVzZXMgYSBzcGVjaWZpZWQgZmluZGVyCi0gICAgICAgICAgICB0byBleHRyYWN0IGEgcG9ydGlvbiBvZiB0aGUgZm9ybWF0dGVkIHNlcXVlbmNlLiBUaGUgZmlyc3QgZmluZGVyJ3MgbWF0Y2ggaXMgcmV0dXJuZWQgCi0gICAgICAgICAgICBhcyBhIHJlc3VsdAotCi0gICAgICAgICAgICBccGFyYW0gRmluZGVyIGEgZmluZGVyIHVzZWQgdG8gc2VsZWN0IGEgcG9ydGlvbiBvZiB0aGUgZm9ybWF0dGVkIHNlcXVlbmNlCi0gICAgICAgICAgICBccmV0dXJuIEFuIGluc3RhbmNlIG9mIHRoZSBcYyBkaXNzZWN0X2Zvcm1hdHRlciBvYmplY3QuCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZpbmRlclQ+Ci0gICAgICAgIGlubGluZSBkZXRhaWw6OmRpc3NlY3RfZm9ybWF0RjwgRmluZGVyVCA+Ci0gICAgICAgIGRpc3NlY3RfZm9ybWF0dGVyKGNvbnN0IEZpbmRlclQmIEZpbmRlcikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGRldGFpbDo6ZGlzc2VjdF9mb3JtYXRGPEZpbmRlclQ+KEZpbmRlcik7Ci0gICAgICAgIH0KLQotCi0gICAgfSAvLyBuYW1lc3BhY2UgYWxnb3JpdGhtCi0KLSAgICAvLyBwdWxsIHRoZSBuYW1lcyB0byB0aGUgYm9vc3QgbmFtZXNwYWNlCi0gICAgdXNpbmcgYWxnb3JpdGhtOjpjb25zdF9mb3JtYXR0ZXI7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjppZGVudGl0eV9mb3JtYXR0ZXI7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjplbXB0eV9mb3JtYXR0ZXI7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjpkaXNzZWN0X2Zvcm1hdHRlcjsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX0ZPUk1BVFRFUl9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9yZXBsYWNlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9yZXBsYWNlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGQxNWU2NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvcmVwbGFjZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MjggKzAsMCBAQAotLy8gIEJvb3N0IHN0cmluZ19hbGdvIGxpYnJhcnkgcmVwbGFjZS5ocHAgaGVhZGVyIGZpbGUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBDb3B5cmlnaHQgUGF2b2wgRHJvYmEgMjAwMi0yMDA2LgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAgIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICAgICAgICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy8gZm9yIHVwZGF0ZXMsIGRvY3VtZW50YXRpb24sIGFuZCByZXZpc2lvbiBoaXN0b3J5LgotCi0jaWZuZGVmIE5ETkJPT1NUX1NUUklOR19SRVBMQUNFX0hQUAotI2RlZmluZSBORE5CT09TVF9TVFJJTkdfUkVQTEFDRV9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvY29uZmlnLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yX3JhbmdlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9iZWdpbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9pdGVyYXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvY29uc3RfaXRlcmF0b3IuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9maW5kX2Zvcm1hdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9maW5kZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZm9ybWF0dGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2NvbXBhcmUuaHBwPgotCi0vKiEgXGZpbGUKLSAgICBEZWZpbmVzIHZhcmlvdXMgcmVwbGFjZSBhbGdvcml0aG1zLiBFYWNoIGFsZ29yaXRobSByZXBsYWNlcwotICAgIHBhcnQocykgb2YgdGhlIGlucHV0IGFjY29yZGluZyB0byBzZXQgb2Ygc2VhcmNoaW5nIGFuZCByZXBsYWNlIGNyaXRlcmlhLgotKi8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICBuYW1lc3BhY2UgYWxnb3JpdGhtIHsKLQotLy8gIHJlcGxhY2VfcmFuZ2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgICAgIC8vISBSZXBsYWNlIHJhbmdlIGFsZ29yaXRobQotICAgICAgICAvKiEKLSAgICAgICAgICAgIFJlcGxhY2UgdGhlIGdpdmVuIHJhbmdlIGluIHRoZSBpbnB1dCBzdHJpbmcuCi0gICAgICAgICAgICBUaGUgcmVzdWx0IGlzIGEgbW9kaWZpZWQgY29weSBvZiB0aGUgaW5wdXQuIEl0IGlzIHJldHVybmVkIGFzIGEgc2VxdWVuY2UgCi0gICAgICAgICAgICBvciBjb3BpZWQgdG8gdGhlIG91dHB1dCBpdGVyYXRvci4KLSAgICAgICAgICAgIAotICAgICAgICAgICAgXHBhcmFtIE91dHB1dCBBbiBvdXRwdXQgaXRlcmF0b3IgdG8gd2hpY2ggdGhlIHJlc3VsdCB3aWxsIGJlIGNvcGllZAotICAgICAgICAgICAgXHBhcmFtIElucHV0IEFuIGlucHV0IHN0cmluZwotICAgICAgICAgICAgXHBhcmFtIFNlYXJjaFJhbmdlIEEgcmFuZ2UgaW4gdGhlIGlucHV0IHRvIGJlIHN1YnN0aXR1dGVkCi0gICAgICAgICAgICBccGFyYW0gRm9ybWF0IEEgc3Vic3RpdHV0ZSBzdHJpbmcKLSAgICAgICAgICAgIFxyZXR1cm4gQW4gb3V0cHV0IGl0ZXJhdG9yIHBvaW50aW5nIGp1c3QgYWZ0ZXIgdGhlIGxhc3QgaW5zZXJ0ZWQgY2hhcmFjdGVyIG9yCi0gICAgICAgICAgICAgICAgYSBtb2RpZmllZCBjb3B5IG9mIHRoZSBpbnB1dAotCi0gICAgICAgICAgICAgIFxub3RlIFRoZSBzZWNvbmQgdmFyaWFudCBvZiB0aGlzIGZ1bmN0aW9uIHByb3ZpZGVzIHRoZSBzdHJvbmcgZXhjZXB0aW9uLXNhZmV0eSBndWFyYW50ZWUKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgICB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvclQsCi0gICAgICAgICAgICB0eXBlbmFtZSBSYW5nZTFULCAKLSAgICAgICAgICAgIHR5cGVuYW1lIFJhbmdlMlQ+Ci0gICAgICAgIGlubGluZSBPdXRwdXRJdGVyYXRvclQgcmVwbGFjZV9yYW5nZV9jb3B5KAotICAgICAgICAgICAgT3V0cHV0SXRlcmF0b3JUIE91dHB1dCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMVQmIElucHV0LAotICAgICAgICAgICAgY29uc3QgaXRlcmF0b3JfcmFuZ2U8Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIAotICAgICAgICAgICAgICAgICAgICByYW5nZV9jb25zdF9pdGVyYXRvcjxSYW5nZTFUPjo6dHlwZT4mIFNlYXJjaFJhbmdlLAotICAgICAgICAgICAgY29uc3QgUmFuZ2UyVCYgRm9ybWF0KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpmaW5kX2Zvcm1hdF9jb3B5KAotICAgICAgICAgICAgICAgIE91dHB1dCwKLSAgICAgICAgICAgICAgICBJbnB1dCwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OnJhbmdlX2ZpbmRlcihTZWFyY2hSYW5nZSksCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpjb25zdF9mb3JtYXR0ZXIoRm9ybWF0KSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyEgUmVwbGFjZSByYW5nZSBhbGdvcml0aG0KLSAgICAgICAgLyohCi0gICAgICAgICAgICBcb3ZlcmxvYWQKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU2VxdWVuY2VULCB0eXBlbmFtZSBSYW5nZVQ+Ci0gICAgICAgIGlubGluZSBTZXF1ZW5jZVQgcmVwbGFjZV9yYW5nZV9jb3B5KCAKLSAgICAgICAgICAgIGNvbnN0IFNlcXVlbmNlVCYgSW5wdXQsCi0gICAgICAgICAgICBjb25zdCBpdGVyYXRvcl9yYW5nZTwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgCi0gICAgICAgICAgICAgICAgICAgIHJhbmdlX2NvbnN0X2l0ZXJhdG9yPFNlcXVlbmNlVD46OnR5cGU+JiBTZWFyY2hSYW5nZSwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlVCYgRm9ybWF0KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpmaW5kX2Zvcm1hdF9jb3B5KAotICAgICAgICAgICAgICAgIElucHV0LAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6cmFuZ2VfZmluZGVyKFNlYXJjaFJhbmdlKSwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmNvbnN0X2Zvcm1hdHRlcihGb3JtYXQpKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vISBSZXBsYWNlIHJhbmdlIGFsZ29yaXRobQotICAgICAgICAvKiEKLSAgICAgICAgICAgIFJlcGxhY2UgdGhlIGdpdmVuIHJhbmdlIGluIHRoZSBpbnB1dCBzdHJpbmcuIAotICAgICAgICAgICAgVGhlIGlucHV0IHNlcXVlbmNlIGlzIG1vZGlmaWVkIGluLXBsYWNlLgotCi0gICAgICAgICAgICBccGFyYW0gSW5wdXQgQW4gaW5wdXQgc3RyaW5nCi0gICAgICAgICAgICBccGFyYW0gU2VhcmNoUmFuZ2UgQSByYW5nZSBpbiB0aGUgaW5wdXQgdG8gYmUgc3Vic3RpdHV0ZWQKLSAgICAgICAgICAgIFxwYXJhbSBGb3JtYXQgQSBzdWJzdGl0dXRlIHN0cmluZwotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZXF1ZW5jZVQsIHR5cGVuYW1lIFJhbmdlVD4KLSAgICAgICAgaW5saW5lIHZvaWQgcmVwbGFjZV9yYW5nZSggCi0gICAgICAgICAgICBTZXF1ZW5jZVQmIElucHV0LAotICAgICAgICAgICAgY29uc3QgaXRlcmF0b3JfcmFuZ2U8Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIAotICAgICAgICAgICAgICAgICAgICByYW5nZV9pdGVyYXRvcjxTZXF1ZW5jZVQ+Ojp0eXBlPiYgU2VhcmNoUmFuZ2UsCi0gICAgICAgICAgICBjb25zdCBSYW5nZVQmIEZvcm1hdCkKLSAgICAgICAgewotICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpmaW5kX2Zvcm1hdCgKLSAgICAgICAgICAgICAgICBJbnB1dCwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OnJhbmdlX2ZpbmRlcihTZWFyY2hSYW5nZSksCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpjb25zdF9mb3JtYXR0ZXIoRm9ybWF0KSk7Ci0gICAgICAgIH0KLQotLy8gIHJlcGxhY2VfZmlyc3QgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgICAgIC8vISBSZXBsYWNlIGZpcnN0IGFsZ29yaXRobQotICAgICAgICAvKiEKLSAgICAgICAgICAgIFJlcGxhY2UgdGhlIGZpcnN0IG1hdGNoIG9mIHRoZSBzZWFyY2ggc3Vic3RyaW5nIGluIHRoZSBpbnB1dCAKLSAgICAgICAgICAgIHdpdGggdGhlIGZvcm1hdCBzdHJpbmcuIAotICAgICAgICAgICAgVGhlIHJlc3VsdCBpcyBhIG1vZGlmaWVkIGNvcHkgb2YgdGhlIGlucHV0LiBJdCBpcyByZXR1cm5lZCBhcyBhIHNlcXVlbmNlIAotICAgICAgICAgICAgb3IgY29waWVkIHRvIHRoZSBvdXRwdXQgaXRlcmF0b3IuCi0gICAgICAgICAgICAKLSAgICAgICAgICAgIFxwYXJhbSBPdXRwdXQgQW4gb3V0cHV0IGl0ZXJhdG9yIHRvIHdoaWNoIHRoZSByZXN1bHQgd2lsbCBiZSBjb3BpZWQKLSAgICAgICAgICAgIFxwYXJhbSBJbnB1dCBBbiBpbnB1dCBzdHJpbmcKLSAgICAgICAgICAgIFxwYXJhbSBTZWFyY2ggQSBzdWJzdHJpbmcgdG8gYmUgc2VhcmNoZWQgZm9yIAotICAgICAgICAgICAgXHBhcmFtIEZvcm1hdCBBIHN1YnN0aXR1dGUgc3RyaW5nCi0gICAgICAgICAgICBccmV0dXJuIEFuIG91dHB1dCBpdGVyYXRvciBwb2ludGluZyBqdXN0IGFmdGVyIHRoZSBsYXN0IGluc2VydGVkIGNoYXJhY3RlciBvcgotICAgICAgICAgICAgICAgICAgICBhIG1vZGlmaWVkIGNvcHkgb2YgdGhlIGlucHV0Ci0KLSAgICAgICAgICAgICAgXG5vdGUgVGhlIHNlY29uZCB2YXJpYW50IG9mIHRoaXMgZnVuY3Rpb24gcHJvdmlkZXMgdGhlIHN0cm9uZyBleGNlcHRpb24tc2FmZXR5IGd1YXJhbnRlZQotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICAgIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yVCwKLSAgICAgICAgICAgIHR5cGVuYW1lIFJhbmdlMVQsIAotICAgICAgICAgICAgdHlwZW5hbWUgUmFuZ2UyVCwKLSAgICAgICAgICAgIHR5cGVuYW1lIFJhbmdlM1Q+Ci0gICAgICAgIGlubGluZSBPdXRwdXRJdGVyYXRvclQgcmVwbGFjZV9maXJzdF9jb3B5KAotICAgICAgICAgICAgT3V0cHV0SXRlcmF0b3JUIE91dHB1dCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMVQmIElucHV0LAotICAgICAgICAgICAgY29uc3QgUmFuZ2UyVCYgU2VhcmNoLAotICAgICAgICAgICAgY29uc3QgUmFuZ2UzVCYgRm9ybWF0KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpmaW5kX2Zvcm1hdF9jb3B5KAotICAgICAgICAgICAgICAgIE91dHB1dCwKLSAgICAgICAgICAgICAgICBJbnB1dCwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpcnN0X2ZpbmRlcihTZWFyY2gpLAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Y29uc3RfZm9ybWF0dGVyKEZvcm1hdCkgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vISBSZXBsYWNlIGZpcnN0IGFsZ29yaXRobQotICAgICAgICAvKiEKLSAgICAgICAgICAgIFxvdmVybG9hZAotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZXF1ZW5jZVQsIHR5cGVuYW1lIFJhbmdlMVQsIHR5cGVuYW1lIFJhbmdlMlQ+Ci0gICAgICAgIGlubGluZSBTZXF1ZW5jZVQgcmVwbGFjZV9maXJzdF9jb3B5KCAKLSAgICAgICAgICAgIGNvbnN0IFNlcXVlbmNlVCYgSW5wdXQsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTFUJiBTZWFyY2gsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTJUJiBGb3JtYXQgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpmaW5kX2Zvcm1hdF9jb3B5KCAKLSAgICAgICAgICAgICAgICBJbnB1dCwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpcnN0X2ZpbmRlcihTZWFyY2gpLAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Y29uc3RfZm9ybWF0dGVyKEZvcm1hdCkgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vISBSZXBsYWNlIGZpcnN0IGFsZ29yaXRobQotICAgICAgICAvKiEKLSAgICAgICAgICAgIHJlcGxhY2UgdGhlIGZpcnN0IG1hdGNoIG9mIHRoZSBzZWFyY2ggc3Vic3RyaW5nIGluIHRoZSBpbnB1dCAKLSAgICAgICAgICAgIHdpdGggdGhlIGZvcm1hdCBzdHJpbmcuIFRoZSBpbnB1dCBzZXF1ZW5jZSBpcyBtb2RpZmllZCBpbi1wbGFjZS4KLQotICAgICAgICAgICAgXHBhcmFtIElucHV0IEFuIGlucHV0IHN0cmluZwotICAgICAgICAgICAgXHBhcmFtIFNlYXJjaCBBIHN1YnN0cmluZyB0byBiZSBzZWFyY2hlZCBmb3IgCi0gICAgICAgICAgICBccGFyYW0gRm9ybWF0IEEgc3Vic3RpdHV0ZSBzdHJpbmcKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU2VxdWVuY2VULCB0eXBlbmFtZSBSYW5nZTFULCB0eXBlbmFtZSBSYW5nZTJUPgotICAgICAgICBpbmxpbmUgdm9pZCByZXBsYWNlX2ZpcnN0KCAKLSAgICAgICAgICAgIFNlcXVlbmNlVCYgSW5wdXQsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTFUJiBTZWFyY2gsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTJUJiBGb3JtYXQgKQotICAgICAgICB7Ci0gICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpbmRfZm9ybWF0KCAKLSAgICAgICAgICAgICAgICBJbnB1dCwgCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpmaXJzdF9maW5kZXIoU2VhcmNoKSwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmNvbnN0X2Zvcm1hdHRlcihGb3JtYXQpICk7Ci0gICAgICAgIH0KLQotLy8gIHJlcGxhY2VfZmlyc3QgKCBjYXNlIGluc2Vuc2l0aXZlICkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAvLyEgUmVwbGFjZSBmaXJzdCBhbGdvcml0aG0gKCBjYXNlIGluc2Vuc2l0aXZlICkKLSAgICAgICAgLyohCi0gICAgICAgICAgICBSZXBsYWNlIHRoZSBmaXJzdCBtYXRjaCBvZiB0aGUgc2VhcmNoIHN1YnN0cmluZyBpbiB0aGUgaW5wdXQgCi0gICAgICAgICAgICB3aXRoIHRoZSBmb3JtYXQgc3RyaW5nLiAKLSAgICAgICAgICAgIFRoZSByZXN1bHQgaXMgYSBtb2RpZmllZCBjb3B5IG9mIHRoZSBpbnB1dC4gSXQgaXMgcmV0dXJuZWQgYXMgYSBzZXF1ZW5jZSAKLSAgICAgICAgICAgIG9yIGNvcGllZCB0byB0aGUgb3V0cHV0IGl0ZXJhdG9yLgotICAgICAgICAgICAgU2VhcmNoaW5nIGlzIGNhc2UgaW5zZW5zaXRpdmUuCi0KLSAgICAgICAgICAgIFxwYXJhbSBPdXRwdXQgQW4gb3V0cHV0IGl0ZXJhdG9yIHRvIHdoaWNoIHRoZSByZXN1bHQgd2lsbCBiZSBjb3BpZWQKLSAgICAgICAgICAgIFxwYXJhbSBJbnB1dCBBbiBpbnB1dCBzdHJpbmcKLSAgICAgICAgICAgIFxwYXJhbSBTZWFyY2ggQSBzdWJzdHJpbmcgdG8gYmUgc2VhcmNoZWQgZm9yIAotICAgICAgICAgICAgXHBhcmFtIEZvcm1hdCBBIHN1YnN0aXR1dGUgc3RyaW5nCi0gICAgICAgICAgICBccGFyYW0gTG9jIEEgbG9jYWxlIHVzZWQgZm9yIGNhc2UgaW5zZW5zaXRpdmUgY29tcGFyaXNvbgotICAgICAgICAgICAgXHJldHVybiBBbiBvdXRwdXQgaXRlcmF0b3IgcG9pbnRpbmcganVzdCBhZnRlciB0aGUgbGFzdCBpbnNlcnRlZCBjaGFyYWN0ZXIgb3IKLSAgICAgICAgICAgICAgICBhIG1vZGlmaWVkIGNvcHkgb2YgdGhlIGlucHV0Ci0KLSAgICAgICAgICAgICBcbm90ZSBUaGUgc2Vjb25kIHZhcmlhbnQgb2YgdGhpcyBmdW5jdGlvbiBwcm92aWRlcyB0aGUgc3Ryb25nIGV4Y2VwdGlvbi1zYWZldHkgZ3VhcmFudGVlCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPAotICAgICAgICAgICAgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3JULAotICAgICAgICAgICAgdHlwZW5hbWUgUmFuZ2UxVCwgCi0gICAgICAgICAgICB0eXBlbmFtZSBSYW5nZTJULAotICAgICAgICAgICAgdHlwZW5hbWUgUmFuZ2UzVD4KLSAgICAgICAgaW5saW5lIE91dHB1dEl0ZXJhdG9yVCBpcmVwbGFjZV9maXJzdF9jb3B5KAotICAgICAgICAgICAgT3V0cHV0SXRlcmF0b3JUIE91dHB1dCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMVQmIElucHV0LAotICAgICAgICAgICAgY29uc3QgUmFuZ2UyVCYgU2VhcmNoLAotICAgICAgICAgICAgY29uc3QgUmFuZ2UzVCYgRm9ybWF0LAotICAgICAgICAgICAgY29uc3Qgc3RkOjpsb2NhbGUmIExvYz1zdGQ6OmxvY2FsZSgpICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZmluZF9mb3JtYXRfY29weSgKLSAgICAgICAgICAgICAgICBPdXRwdXQsCi0gICAgICAgICAgICAgICAgSW5wdXQsCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpmaXJzdF9maW5kZXIoU2VhcmNoLCBpc19pZXF1YWwoTG9jKSksCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpjb25zdF9mb3JtYXR0ZXIoRm9ybWF0KSApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8hIFJlcGxhY2UgZmlyc3QgYWxnb3JpdGhtICggY2FzZSBpbnNlbnNpdGl2ZSApCi0gICAgICAgIC8qIQotICAgICAgICAgICAgXG92ZXJsb2FkCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNlcXVlbmNlVCwgdHlwZW5hbWUgUmFuZ2UyVCwgdHlwZW5hbWUgUmFuZ2UxVD4KLSAgICAgICAgaW5saW5lIFNlcXVlbmNlVCBpcmVwbGFjZV9maXJzdF9jb3B5KCAKLSAgICAgICAgICAgIGNvbnN0IFNlcXVlbmNlVCYgSW5wdXQsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTJUJiBTZWFyY2gsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTFUJiBGb3JtYXQsCi0gICAgICAgICAgICBjb25zdCBzdGQ6OmxvY2FsZSYgTG9jPXN0ZDo6bG9jYWxlKCkgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpmaW5kX2Zvcm1hdF9jb3B5KCAKLSAgICAgICAgICAgICAgICBJbnB1dCwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpcnN0X2ZpbmRlcihTZWFyY2gsIGlzX2llcXVhbChMb2MpKSwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmNvbnN0X2Zvcm1hdHRlcihGb3JtYXQpICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyEgUmVwbGFjZSBmaXJzdCBhbGdvcml0aG0gKCBjYXNlIGluc2Vuc2l0aXZlICkKLSAgICAgICAgLyohCi0gICAgICAgICAgICBSZXBsYWNlIHRoZSBmaXJzdCBtYXRjaCBvZiB0aGUgc2VhcmNoIHN1YnN0cmluZyBpbiB0aGUgaW5wdXQgCi0gICAgICAgICAgICB3aXRoIHRoZSBmb3JtYXQgc3RyaW5nLiBJbnB1dCBzZXF1ZW5jZSBpcyBtb2RpZmllZCBpbi1wbGFjZS4KLSAgICAgICAgICAgIFNlYXJjaGluZyBpcyBjYXNlIGluc2Vuc2l0aXZlLgotCi0gICAgICAgICAgICBccGFyYW0gSW5wdXQgQW4gaW5wdXQgc3RyaW5nCi0gICAgICAgICAgICBccGFyYW0gU2VhcmNoIEEgc3Vic3RyaW5nIHRvIGJlIHNlYXJjaGVkIGZvciAKLSAgICAgICAgICAgIFxwYXJhbSBGb3JtYXQgQSBzdWJzdGl0dXRlIHN0cmluZwotICAgICAgICAgICAgXHBhcmFtIExvYyBBIGxvY2FsZSB1c2VkIGZvciBjYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmlzb24KLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU2VxdWVuY2VULCB0eXBlbmFtZSBSYW5nZTFULCB0eXBlbmFtZSBSYW5nZTJUPgotICAgICAgICBpbmxpbmUgdm9pZCBpcmVwbGFjZV9maXJzdCggCi0gICAgICAgICAgICBTZXF1ZW5jZVQmIElucHV0LAotICAgICAgICAgICAgY29uc3QgUmFuZ2UxVCYgU2VhcmNoLAotICAgICAgICAgICAgY29uc3QgUmFuZ2UyVCYgRm9ybWF0LAotICAgICAgICAgICAgY29uc3Qgc3RkOjpsb2NhbGUmIExvYz1zdGQ6OmxvY2FsZSgpICkKLSAgICAgICAgewotICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpmaW5kX2Zvcm1hdCggCi0gICAgICAgICAgICAgICAgSW5wdXQsIAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Zmlyc3RfZmluZGVyKFNlYXJjaCwgaXNfaWVxdWFsKExvYykpLAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Y29uc3RfZm9ybWF0dGVyKEZvcm1hdCkgKTsKLSAgICAgICAgfQotCi0vLyAgcmVwbGFjZV9sYXN0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAvLyEgUmVwbGFjZSBsYXN0IGFsZ29yaXRobQotICAgICAgICAvKiEKLSAgICAgICAgICAgIFJlcGxhY2UgdGhlIGxhc3QgbWF0Y2ggb2YgdGhlIHNlYXJjaCBzdHJpbmcgaW4gdGhlIGlucHV0IAotICAgICAgICAgICAgd2l0aCB0aGUgZm9ybWF0IHN0cmluZy4gCi0gICAgICAgICAgICBUaGUgcmVzdWx0IGlzIGEgbW9kaWZpZWQgY29weSBvZiB0aGUgaW5wdXQuIEl0IGlzIHJldHVybmVkIGFzIGEgc2VxdWVuY2UgCi0gICAgICAgICAgICBvciBjb3BpZWQgdG8gdGhlIG91dHB1dCBpdGVyYXRvci4KLQotICAgICAgICAgICAgXHBhcmFtIE91dHB1dCBBbiBvdXRwdXQgaXRlcmF0b3IgdG8gd2hpY2ggdGhlIHJlc3VsdCB3aWxsIGJlIGNvcGllZAotICAgICAgICAgICAgXHBhcmFtIElucHV0IEFuIGlucHV0IHN0cmluZwotICAgICAgICAgICAgXHBhcmFtIFNlYXJjaCBBIHN1YnN0cmluZyB0byBiZSBzZWFyY2hlZCBmb3IKLSAgICAgICAgICAgIFxwYXJhbSBGb3JtYXQgQSBzdWJzdGl0dXRlIHN0cmluZwotICAgICAgICAgICAgXHJldHVybiBBbiBvdXRwdXQgaXRlcmF0b3IgcG9pbnRpbmcganVzdCBhZnRlciB0aGUgbGFzdCBpbnNlcnRlZCBjaGFyYWN0ZXIgb3IKLSAgICAgICAgICAgICAgICAgICAgYSBtb2RpZmllZCBjb3B5IG9mIHRoZSBpbnB1dCAgICAgICAgICAgIAotCi0gICAgICAgICAgICAgIFxub3RlIFRoZSBzZWNvbmQgdmFyaWFudCBvZiB0aGlzIGZ1bmN0aW9uIHByb3ZpZGVzIHRoZSBzdHJvbmcgZXhjZXB0aW9uLXNhZmV0eSBndWFyYW50ZWUKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgICB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvclQsCi0gICAgICAgICAgICB0eXBlbmFtZSBSYW5nZTFULCAKLSAgICAgICAgICAgIHR5cGVuYW1lIFJhbmdlMlQsCi0gICAgICAgICAgICB0eXBlbmFtZSBSYW5nZTNUPgotICAgICAgICBpbmxpbmUgT3V0cHV0SXRlcmF0b3JUIHJlcGxhY2VfbGFzdF9jb3B5KAotICAgICAgICAgICAgT3V0cHV0SXRlcmF0b3JUIE91dHB1dCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMVQmIElucHV0LAotICAgICAgICAgICAgY29uc3QgUmFuZ2UyVCYgU2VhcmNoLAotICAgICAgICAgICAgY29uc3QgUmFuZ2UzVCYgRm9ybWF0ICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZmluZF9mb3JtYXRfY29weSgKLSAgICAgICAgICAgICAgICBPdXRwdXQsCi0gICAgICAgICAgICAgICAgSW5wdXQsCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpsYXN0X2ZpbmRlcihTZWFyY2gpLAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Y29uc3RfZm9ybWF0dGVyKEZvcm1hdCkgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vISBSZXBsYWNlIGxhc3QgYWxnb3JpdGhtCi0gICAgICAgIC8qIQotICAgICAgICAgICAgXG92ZXJsb2FkCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNlcXVlbmNlVCwgdHlwZW5hbWUgUmFuZ2UxVCwgdHlwZW5hbWUgUmFuZ2UyVD4KLSAgICAgICAgaW5saW5lIFNlcXVlbmNlVCByZXBsYWNlX2xhc3RfY29weSggCi0gICAgICAgICAgICBjb25zdCBTZXF1ZW5jZVQmIElucHV0LAotICAgICAgICAgICAgY29uc3QgUmFuZ2UxVCYgU2VhcmNoLAotICAgICAgICAgICAgY29uc3QgUmFuZ2UyVCYgRm9ybWF0ICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZmluZF9mb3JtYXRfY29weSggCi0gICAgICAgICAgICAgICAgSW5wdXQsCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpsYXN0X2ZpbmRlcihTZWFyY2gpLAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Y29uc3RfZm9ybWF0dGVyKEZvcm1hdCkgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vISBSZXBsYWNlIGxhc3QgYWxnb3JpdGhtCi0gICAgICAgIC8qIQotICAgICAgICAgICAgUmVwbGFjZSB0aGUgbGFzdCBtYXRjaCBvZiB0aGUgc2VhcmNoIHN0cmluZyBpbiB0aGUgaW5wdXQgCi0gICAgICAgICAgICB3aXRoIHRoZSBmb3JtYXQgc3RyaW5nLiBJbnB1dCBzZXF1ZW5jZSBpcyBtb2RpZmllZCBpbi1wbGFjZS4KLQotICAgICAgICAgICAgXHBhcmFtIElucHV0IEFuIGlucHV0IHN0cmluZwotICAgICAgICAgICAgXHBhcmFtIFNlYXJjaCBBIHN1YnN0cmluZyB0byBiZSBzZWFyY2hlZCBmb3IgCi0gICAgICAgICAgICBccGFyYW0gRm9ybWF0IEEgc3Vic3RpdHV0ZSBzdHJpbmcKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU2VxdWVuY2VULCB0eXBlbmFtZSBSYW5nZTFULCB0eXBlbmFtZSBSYW5nZTJUPgotICAgICAgICBpbmxpbmUgdm9pZCByZXBsYWNlX2xhc3QoIAotICAgICAgICAgICAgU2VxdWVuY2VUJiBJbnB1dCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMVQmIFNlYXJjaCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMlQmIEZvcm1hdCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZmluZF9mb3JtYXQoIAotICAgICAgICAgICAgICAgIElucHV0LCAKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06Omxhc3RfZmluZGVyKFNlYXJjaCksCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpjb25zdF9mb3JtYXR0ZXIoRm9ybWF0KSApOwotICAgICAgICB9Ci0KLS8vICByZXBsYWNlX2xhc3QgKCBjYXNlIGluc2Vuc2l0aXZlICkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgICAgIC8vISBSZXBsYWNlIGxhc3QgYWxnb3JpdGhtICggY2FzZSBpbnNlbnNpdGl2ZSApCi0gICAgICAgIC8qIQotICAgICAgICAgICAgUmVwbGFjZSB0aGUgbGFzdCBtYXRjaCBvZiB0aGUgc2VhcmNoIHN0cmluZyBpbiB0aGUgaW5wdXQgCi0gICAgICAgICAgICB3aXRoIHRoZSBmb3JtYXQgc3RyaW5nLiAKLSAgICAgICAgICAgIFRoZSByZXN1bHQgaXMgYSBtb2RpZmllZCBjb3B5IG9mIHRoZSBpbnB1dC4gSXQgaXMgcmV0dXJuZWQgYXMgYSBzZXF1ZW5jZSAKLSAgICAgICAgICAgIG9yIGNvcGllZCB0byB0aGUgb3V0cHV0IGl0ZXJhdG9yLgotICAgICAgICAgICAgU2VhcmNoaW5nIGlzIGNhc2UgaW5zZW5zaXRpdmUuCi0KLSAgICAgICAgICAgIFxwYXJhbSBPdXRwdXQgQW4gb3V0cHV0IGl0ZXJhdG9yIHRvIHdoaWNoIHRoZSByZXN1bHQgd2lsbCBiZSBjb3BpZWQKLSAgICAgICAgICAgIFxwYXJhbSBJbnB1dCBBbiBpbnB1dCBzdHJpbmcKLSAgICAgICAgICAgIFxwYXJhbSBTZWFyY2ggQSBzdWJzdHJpbmcgdG8gYmUgc2VhcmNoZWQgZm9yIAotICAgICAgICAgICAgXHBhcmFtIEZvcm1hdCBBIHN1YnN0aXR1dGUgc3RyaW5nCi0gICAgICAgICAgICBccGFyYW0gTG9jIEEgbG9jYWxlIHVzZWQgZm9yIGNhc2UgaW5zZW5zaXRpdmUgY29tcGFyaXNvbgotICAgICAgICAgICAgXHJldHVybiBBbiBvdXRwdXQgaXRlcmF0b3IgcG9pbnRpbmcganVzdCBhZnRlciB0aGUgbGFzdCBpbnNlcnRlZCBjaGFyYWN0ZXIgb3IKLSAgICAgICAgICAgICAgICAgICAgYSBtb2RpZmllZCBjb3B5IG9mIHRoZSBpbnB1dCAgCi0KLSAgICAgICAgICAgIFxub3RlIFRoZSBzZWNvbmQgdmFyaWFudCBvZiB0aGlzIGZ1bmN0aW9uIHByb3ZpZGVzIHRoZSBzdHJvbmcgZXhjZXB0aW9uLXNhZmV0eSBndWFyYW50ZWUKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgICB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvclQsCi0gICAgICAgICAgICB0eXBlbmFtZSBSYW5nZTFULCAKLSAgICAgICAgICAgIHR5cGVuYW1lIFJhbmdlMlQsCi0gICAgICAgICAgICB0eXBlbmFtZSBSYW5nZTNUPgotICAgICAgICBpbmxpbmUgT3V0cHV0SXRlcmF0b3JUIGlyZXBsYWNlX2xhc3RfY29weSgKLSAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yVCBPdXRwdXQsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTFUJiBJbnB1dCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMlQmIFNlYXJjaCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlM1QmIEZvcm1hdCwKLSAgICAgICAgICAgIGNvbnN0IHN0ZDo6bG9jYWxlJiBMb2M9c3RkOjpsb2NhbGUoKSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpbmRfZm9ybWF0X2NvcHkoCi0gICAgICAgICAgICAgICAgT3V0cHV0LAotICAgICAgICAgICAgICAgIElucHV0LAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6bGFzdF9maW5kZXIoU2VhcmNoLCBpc19pZXF1YWwoTG9jKSksCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpjb25zdF9mb3JtYXR0ZXIoRm9ybWF0KSApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8hIFJlcGxhY2UgbGFzdCBhbGdvcml0aG0gKCBjYXNlIGluc2Vuc2l0aXZlICkKLSAgICAgICAgLyohCi0gICAgICAgICAgICBcb3ZlcmxvYWQKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU2VxdWVuY2VULCB0eXBlbmFtZSBSYW5nZTFULCB0eXBlbmFtZSBSYW5nZTJUPgotICAgICAgICBpbmxpbmUgU2VxdWVuY2VUIGlyZXBsYWNlX2xhc3RfY29weSggCi0gICAgICAgICAgICBjb25zdCBTZXF1ZW5jZVQmIElucHV0LAotICAgICAgICAgICAgY29uc3QgUmFuZ2UxVCYgU2VhcmNoLAotICAgICAgICAgICAgY29uc3QgUmFuZ2UyVCYgRm9ybWF0LAotICAgICAgICAgICAgY29uc3Qgc3RkOjpsb2NhbGUmIExvYz1zdGQ6OmxvY2FsZSgpICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZmluZF9mb3JtYXRfY29weSggCi0gICAgICAgICAgICAgICAgSW5wdXQsCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpsYXN0X2ZpbmRlcihTZWFyY2gsIGlzX2llcXVhbChMb2MpKSwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmNvbnN0X2Zvcm1hdHRlcihGb3JtYXQpICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyEgUmVwbGFjZSBsYXN0IGFsZ29yaXRobSAoIGNhc2UgaW5zZW5zaXRpdmUgKQotICAgICAgICAvKiEKLSAgICAgICAgICAgIFJlcGxhY2UgdGhlIGxhc3QgbWF0Y2ggb2YgdGhlIHNlYXJjaCBzdHJpbmcgaW4gdGhlIGlucHV0IAotICAgICAgICAgICAgd2l0aCB0aGUgZm9ybWF0IHN0cmluZy5UaGUgaW5wdXQgc2VxdWVuY2UgaXMgbW9kaWZpZWQgaW4tcGxhY2UuCi0gICAgICAgICAgICBTZWFyY2hpbmcgaXMgY2FzZSBpbnNlbnNpdGl2ZS4KLQotICAgICAgICAgICAgXHBhcmFtIElucHV0IEFuIGlucHV0IHN0cmluZwotICAgICAgICAgICAgXHBhcmFtIFNlYXJjaCBBIHN1YnN0cmluZyB0byBiZSBzZWFyY2hlZCBmb3IgCi0gICAgICAgICAgICBccGFyYW0gRm9ybWF0IEEgc3Vic3RpdHV0ZSBzdHJpbmcKLSAgICAgICAgICAgIFxwYXJhbSBMb2MgQSBsb2NhbGUgdXNlZCBmb3IgY2FzZSBpbnNlbnNpdGl2ZSBjb21wYXJpc29uCi0gICAgICAgICAgICBccmV0dXJuIEEgcmVmZXJlbmNlIHRvIHRoZSBtb2RpZmllZCBpbnB1dAotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZXF1ZW5jZVQsIHR5cGVuYW1lIFJhbmdlMVQsIHR5cGVuYW1lIFJhbmdlMlQ+Ci0gICAgICAgIGlubGluZSB2b2lkIGlyZXBsYWNlX2xhc3QoIAotICAgICAgICAgICAgU2VxdWVuY2VUJiBJbnB1dCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMVQmIFNlYXJjaCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMlQmIEZvcm1hdCwKLSAgICAgICAgICAgIGNvbnN0IHN0ZDo6bG9jYWxlJiBMb2M9c3RkOjpsb2NhbGUoKSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZmluZF9mb3JtYXQoIAotICAgICAgICAgICAgICAgIElucHV0LCAKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06Omxhc3RfZmluZGVyKFNlYXJjaCwgaXNfaWVxdWFsKExvYykpLAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Y29uc3RfZm9ybWF0dGVyKEZvcm1hdCkgKTsKLSAgICAgICAgfQotCi0vLyAgcmVwbGFjZV9udGggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgICAgIC8vISBSZXBsYWNlIG50aCBhbGdvcml0aG0KLSAgICAgICAgLyohCi0gICAgICAgICAgICBSZXBsYWNlIGFuIE50aCAoemVyby1pbmRleGVkKSBtYXRjaCBvZiB0aGUgc2VhcmNoIHN0cmluZyBpbiB0aGUgaW5wdXQgCi0gICAgICAgICAgICB3aXRoIHRoZSBmb3JtYXQgc3RyaW5nLiAKLSAgICAgICAgICAgIFRoZSByZXN1bHQgaXMgYSBtb2RpZmllZCBjb3B5IG9mIHRoZSBpbnB1dC4gSXQgaXMgcmV0dXJuZWQgYXMgYSBzZXF1ZW5jZSAKLSAgICAgICAgICAgIG9yIGNvcGllZCB0byB0aGUgb3V0cHV0IGl0ZXJhdG9yLgotCi0gICAgICAgICAgICBccGFyYW0gT3V0cHV0IEFuIG91dHB1dCBpdGVyYXRvciB0byB3aGljaCB0aGUgcmVzdWx0IHdpbGwgYmUgY29waWVkCi0gICAgICAgICAgICBccGFyYW0gSW5wdXQgQW4gaW5wdXQgc3RyaW5nCi0gICAgICAgICAgICBccGFyYW0gU2VhcmNoIEEgc3Vic3RyaW5nIHRvIGJlIHNlYXJjaGVkIGZvciAKLSAgICAgICAgICAgIFxwYXJhbSBOdGggQW4gaW5kZXggb2YgdGhlIG1hdGNoIHRvIGJlIHJlcGxhY2VkLiBUaGUgaW5kZXggaXMgMC1iYXNlZC4KLSAgICAgICAgICAgICAgICBGb3IgbmVnYXRpdmUgTiwgbWF0Y2hlcyBhcmUgY291bnRlZCBmcm9tIHRoZSBlbmQgb2Ygc3RyaW5nLgotICAgICAgICAgICAgXHBhcmFtIEZvcm1hdCBBIHN1YnN0aXR1dGUgc3RyaW5nCi0gICAgICAgICAgICBccmV0dXJuIEFuIG91dHB1dCBpdGVyYXRvciBwb2ludGluZyBqdXN0IGFmdGVyIHRoZSBsYXN0IGluc2VydGVkIGNoYXJhY3RlciBvcgotICAgICAgICAgICAgICAgIGEgbW9kaWZpZWQgY29weSBvZiB0aGUgaW5wdXQKLQotICAgICAgICAgICAgXG5vdGUgVGhlIHNlY29uZCB2YXJpYW50IG9mIHRoaXMgZnVuY3Rpb24gcHJvdmlkZXMgdGhlIHN0cm9uZyBleGNlcHRpb24tc2FmZXR5IGd1YXJhbnRlZQotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICAgIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yVCwKLSAgICAgICAgICAgIHR5cGVuYW1lIFJhbmdlMVQsIAotICAgICAgICAgICAgdHlwZW5hbWUgUmFuZ2UyVCwKLSAgICAgICAgICAgIHR5cGVuYW1lIFJhbmdlM1Q+Ci0gICAgICAgIGlubGluZSBPdXRwdXRJdGVyYXRvclQgcmVwbGFjZV9udGhfY29weSgKLSAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yVCBPdXRwdXQsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTFUJiBJbnB1dCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMlQmIFNlYXJjaCwKLSAgICAgICAgICAgIGludCBOdGgsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTNUJiBGb3JtYXQgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpmaW5kX2Zvcm1hdF9jb3B5KAotICAgICAgICAgICAgICAgIE91dHB1dCwKLSAgICAgICAgICAgICAgICBJbnB1dCwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06Om50aF9maW5kZXIoU2VhcmNoLCBOdGgpLAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Y29uc3RfZm9ybWF0dGVyKEZvcm1hdCkgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vISBSZXBsYWNlIG50aCBhbGdvcml0aG0KLSAgICAgICAgLyohCi0gICAgICAgICAgICBcb3ZlcmxvYWQKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU2VxdWVuY2VULCB0eXBlbmFtZSBSYW5nZTFULCB0eXBlbmFtZSBSYW5nZTJUPgotICAgICAgICBpbmxpbmUgU2VxdWVuY2VUIHJlcGxhY2VfbnRoX2NvcHkoIAotICAgICAgICAgICAgY29uc3QgU2VxdWVuY2VUJiBJbnB1dCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMVQmIFNlYXJjaCwKLSAgICAgICAgICAgIGludCBOdGgsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTJUJiBGb3JtYXQgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpmaW5kX2Zvcm1hdF9jb3B5KCAKLSAgICAgICAgICAgICAgICBJbnB1dCwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06Om50aF9maW5kZXIoU2VhcmNoLCBOdGgpLAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Y29uc3RfZm9ybWF0dGVyKEZvcm1hdCkgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vISBSZXBsYWNlIG50aCBhbGdvcml0aG0KLSAgICAgICAgLyohCi0gICAgICAgICAgICBSZXBsYWNlIGFuIE50aCAoemVyby1pbmRleGVkKSBtYXRjaCBvZiB0aGUgc2VhcmNoIHN0cmluZyBpbiB0aGUgaW5wdXQgCi0gICAgICAgICAgICB3aXRoIHRoZSBmb3JtYXQgc3RyaW5nLiBJbnB1dCBzZXF1ZW5jZSBpcyBtb2RpZmllZCBpbi1wbGFjZS4KLQotICAgICAgICAgICAgXHBhcmFtIElucHV0IEFuIGlucHV0IHN0cmluZwotICAgICAgICAgICAgXHBhcmFtIFNlYXJjaCBBIHN1YnN0cmluZyB0byBiZSBzZWFyY2hlZCBmb3IgCi0gICAgICAgICAgICBccGFyYW0gTnRoIEFuIGluZGV4IG9mIHRoZSBtYXRjaCB0byBiZSByZXBsYWNlZC4gVGhlIGluZGV4IGlzIDAtYmFzZWQuCi0gICAgICAgICAgICAgICAgRm9yIG5lZ2F0aXZlIE4sIG1hdGNoZXMgYXJlIGNvdW50ZWQgZnJvbSB0aGUgZW5kIG9mIHN0cmluZy4KLSAgICAgICAgICAgIFxwYXJhbSBGb3JtYXQgQSBzdWJzdGl0dXRlIHN0cmluZwotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZXF1ZW5jZVQsIHR5cGVuYW1lIFJhbmdlMVQsIHR5cGVuYW1lIFJhbmdlMlQ+Ci0gICAgICAgIGlubGluZSB2b2lkIHJlcGxhY2VfbnRoKCAKLSAgICAgICAgICAgIFNlcXVlbmNlVCYgSW5wdXQsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTFUJiBTZWFyY2gsCi0gICAgICAgICAgICBpbnQgTnRoLAotICAgICAgICAgICAgY29uc3QgUmFuZ2UyVCYgRm9ybWF0ICkKLSAgICAgICAgewotICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpmaW5kX2Zvcm1hdCggCi0gICAgICAgICAgICAgICAgSW5wdXQsIAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6bnRoX2ZpbmRlcihTZWFyY2gsIE50aCksCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpjb25zdF9mb3JtYXR0ZXIoRm9ybWF0KSApOwotICAgICAgICB9Ci0KLS8vICByZXBsYWNlX250aCAoIGNhc2UgaW5zZW5zaXRpdmUgKSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0gICAgICAgIAotICAgICAgICAvLyEgUmVwbGFjZSBudGggYWxnb3JpdGhtICggY2FzZSBpbnNlbnNpdGl2ZSApCi0gICAgICAgIC8qIQotICAgICAgICAgICAgUmVwbGFjZSBhbiBOdGggKHplcm8taW5kZXhlZCkgbWF0Y2ggb2YgdGhlIHNlYXJjaCBzdHJpbmcgaW4gdGhlIGlucHV0IAotICAgICAgICAgICAgd2l0aCB0aGUgZm9ybWF0IHN0cmluZy4gCi0gICAgICAgICAgICBUaGUgcmVzdWx0IGlzIGEgbW9kaWZpZWQgY29weSBvZiB0aGUgaW5wdXQuIEl0IGlzIHJldHVybmVkIGFzIGEgc2VxdWVuY2UgCi0gICAgICAgICAgICBvciBjb3BpZWQgdG8gdGhlIG91dHB1dCBpdGVyYXRvci4KLSAgICAgICAgICAgIFNlYXJjaGluZyBpcyBjYXNlIGluc2Vuc2l0aXZlLgotCi0gICAgICAgICAgICBccGFyYW0gT3V0cHV0IEFuIG91dHB1dCBpdGVyYXRvciB0byB3aGljaCB0aGUgcmVzdWx0IHdpbGwgYmUgY29waWVkCi0gICAgICAgICAgICBccGFyYW0gSW5wdXQgQW4gaW5wdXQgc3RyaW5nCi0gICAgICAgICAgICBccGFyYW0gU2VhcmNoIEEgc3Vic3RyaW5nIHRvIGJlIHNlYXJjaGVkIGZvciAKLSAgICAgICAgICAgIFxwYXJhbSBOdGggQW4gaW5kZXggb2YgdGhlIG1hdGNoIHRvIGJlIHJlcGxhY2VkLiBUaGUgaW5kZXggaXMgMC1iYXNlZC4KLSAgICAgICAgICAgICAgICBGb3IgbmVnYXRpdmUgTiwgbWF0Y2hlcyBhcmUgY291bnRlZCBmcm9tIHRoZSBlbmQgb2Ygc3RyaW5nLgotICAgICAgICAgICAgXHBhcmFtIEZvcm1hdCBBIHN1YnN0aXR1dGUgc3RyaW5nCi0gICAgICAgICAgICBccGFyYW0gTG9jIEEgbG9jYWxlIHVzZWQgZm9yIGNhc2UgaW5zZW5zaXRpdmUgY29tcGFyaXNvbgotICAgICAgICAgICAgXHJldHVybiBBbiBvdXRwdXQgaXRlcmF0b3IgcG9pbnRpbmcganVzdCBhZnRlciB0aGUgbGFzdCBpbnNlcnRlZCBjaGFyYWN0ZXIgb3IKLSAgICAgICAgICAgICAgICAgICAgYSBtb2RpZmllZCBjb3B5IG9mIHRoZSBpbnB1dCAgICAgICAgICAgIAotCi0gICAgICAgICAgICBcbm90ZSBUaGUgc2Vjb25kIHZhcmlhbnQgb2YgdGhpcyBmdW5jdGlvbiBwcm92aWRlcyB0aGUgc3Ryb25nIGV4Y2VwdGlvbi1zYWZldHkgZ3VhcmFudGVlCi0gICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgICB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvclQsCi0gICAgICAgICAgICB0eXBlbmFtZSBSYW5nZTFULCAKLSAgICAgICAgICAgIHR5cGVuYW1lIFJhbmdlMlQsCi0gICAgICAgICAgICB0eXBlbmFtZSBSYW5nZTNUPgotICAgICAgICBpbmxpbmUgT3V0cHV0SXRlcmF0b3JUIGlyZXBsYWNlX250aF9jb3B5KAotICAgICAgICAgICAgT3V0cHV0SXRlcmF0b3JUIE91dHB1dCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMVQmIElucHV0LAotICAgICAgICAgICAgY29uc3QgUmFuZ2UyVCYgU2VhcmNoLAotICAgICAgICAgICAgaW50IE50aCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlM1QmIEZvcm1hdCwKLSAgICAgICAgICAgIGNvbnN0IHN0ZDo6bG9jYWxlJiBMb2M9c3RkOjpsb2NhbGUoKSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpbmRfZm9ybWF0X2NvcHkoCi0gICAgICAgICAgICAgICAgT3V0cHV0LAotICAgICAgICAgICAgICAgIElucHV0LAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6bnRoX2ZpbmRlcihTZWFyY2gsIE50aCwgaXNfaWVxdWFsKExvYykgKSwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmNvbnN0X2Zvcm1hdHRlcihGb3JtYXQpICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyEgUmVwbGFjZSBudGggYWxnb3JpdGhtICggY2FzZSBpbnNlbnNpdGl2ZSApCi0gICAgICAgIC8qIQotICAgICAgICAgICAgXG92ZXJsb2FkCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNlcXVlbmNlVCwgdHlwZW5hbWUgUmFuZ2UxVCwgdHlwZW5hbWUgUmFuZ2UyVD4KLSAgICAgICAgaW5saW5lIFNlcXVlbmNlVCBpcmVwbGFjZV9udGhfY29weSggCi0gICAgICAgICAgICBjb25zdCBTZXF1ZW5jZVQmIElucHV0LAotICAgICAgICAgICAgY29uc3QgUmFuZ2UxVCYgU2VhcmNoLAotICAgICAgICAgICAgaW50IE50aCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMlQmIEZvcm1hdCwKLSAgICAgICAgICAgIGNvbnN0IHN0ZDo6bG9jYWxlJiBMb2M9c3RkOjpsb2NhbGUoKSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpbmRfZm9ybWF0X2NvcHkoIAotICAgICAgICAgICAgICAgIElucHV0LAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6bnRoX2ZpbmRlcihTZWFyY2gsIE50aCwgaXNfaWVxdWFsKExvYykpLAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Y29uc3RfZm9ybWF0dGVyKEZvcm1hdCkgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vISBSZXBsYWNlIG50aCBhbGdvcml0aG0gKCBjYXNlIGluc2Vuc2l0aXZlICkKLSAgICAgICAgLyohCi0gICAgICAgICAgICBSZXBsYWNlIGFuIE50aCAoemVyby1pbmRleGVkKSBtYXRjaCBvZiB0aGUgc2VhcmNoIHN0cmluZyBpbiB0aGUgaW5wdXQgCi0gICAgICAgICAgICB3aXRoIHRoZSBmb3JtYXQgc3RyaW5nLiBJbnB1dCBzZXF1ZW5jZSBpcyBtb2RpZmllZCBpbi1wbGFjZS4KLSAgICAgICAgICAgIFNlYXJjaGluZyBpcyBjYXNlIGluc2Vuc2l0aXZlLgotCi0gICAgICAgICAgICBccGFyYW0gSW5wdXQgQW4gaW5wdXQgc3RyaW5nCi0gICAgICAgICAgICBccGFyYW0gU2VhcmNoIEEgc3Vic3RyaW5nIHRvIGJlIHNlYXJjaGVkIGZvciAKLSAgICAgICAgICAgIFxwYXJhbSBOdGggQW4gaW5kZXggb2YgdGhlIG1hdGNoIHRvIGJlIHJlcGxhY2VkLiBUaGUgaW5kZXggaXMgMC1iYXNlZC4KLSAgICAgICAgICAgICAgICBGb3IgbmVnYXRpdmUgTiwgbWF0Y2hlcyBhcmUgY291bnRlZCBmcm9tIHRoZSBlbmQgb2Ygc3RyaW5nLgotICAgICAgICAgICAgXHBhcmFtIEZvcm1hdCBBIHN1YnN0aXR1dGUgc3RyaW5nCi0gICAgICAgICAgICBccGFyYW0gTG9jIEEgbG9jYWxlIHVzZWQgZm9yIGNhc2UgaW5zZW5zaXRpdmUgY29tcGFyaXNvbgotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZXF1ZW5jZVQsIHR5cGVuYW1lIFJhbmdlMVQsIHR5cGVuYW1lIFJhbmdlMlQ+Ci0gICAgICAgIGlubGluZSB2b2lkIGlyZXBsYWNlX250aCggCi0gICAgICAgICAgICBTZXF1ZW5jZVQmIElucHV0LAotICAgICAgICAgICAgY29uc3QgUmFuZ2UxVCYgU2VhcmNoLAotICAgICAgICAgICAgaW50IE50aCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMlQmIEZvcm1hdCwKLSAgICAgICAgICAgIGNvbnN0IHN0ZDo6bG9jYWxlJiBMb2M9c3RkOjpsb2NhbGUoKSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZmluZF9mb3JtYXQoIAotICAgICAgICAgICAgICAgIElucHV0LCAKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06Om50aF9maW5kZXIoU2VhcmNoLCBOdGgsIGlzX2llcXVhbChMb2MpKSwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmNvbnN0X2Zvcm1hdHRlcihGb3JtYXQpICk7Ci0gICAgICAgIH0KLQotLy8gIHJlcGxhY2VfYWxsIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAvLyEgUmVwbGFjZSBhbGwgYWxnb3JpdGhtCi0gICAgICAgIC8qIQotICAgICAgICAgICAgUmVwbGFjZSBhbGwgb2NjdXJyZW5jZXMgb2YgdGhlIHNlYXJjaCBzdHJpbmcgaW4gdGhlIGlucHV0IAotICAgICAgICAgICAgd2l0aCB0aGUgZm9ybWF0IHN0cmluZy4gCi0gICAgICAgICAgICBUaGUgcmVzdWx0IGlzIGEgbW9kaWZpZWQgY29weSBvZiB0aGUgaW5wdXQuIEl0IGlzIHJldHVybmVkIGFzIGEgc2VxdWVuY2UgCi0gICAgICAgICAgICBvciBjb3BpZWQgdG8gdGhlIG91dHB1dCBpdGVyYXRvci4KLQotICAgICAgICAgICAgXHBhcmFtIE91dHB1dCBBbiBvdXRwdXQgaXRlcmF0b3IgdG8gd2hpY2ggdGhlIHJlc3VsdCB3aWxsIGJlIGNvcGllZAotICAgICAgICAgICAgXHBhcmFtIElucHV0IEFuIGlucHV0IHN0cmluZwotICAgICAgICAgICAgXHBhcmFtIFNlYXJjaCBBIHN1YnN0cmluZyB0byBiZSBzZWFyY2hlZCBmb3IgCi0gICAgICAgICAgICBccGFyYW0gRm9ybWF0IEEgc3Vic3RpdHV0ZSBzdHJpbmcKLSAgICAgICAgICAgIFxyZXR1cm4gQW4gb3V0cHV0IGl0ZXJhdG9yIHBvaW50aW5nIGp1c3QgYWZ0ZXIgdGhlIGxhc3QgaW5zZXJ0ZWQgY2hhcmFjdGVyIG9yCi0gICAgICAgICAgICAgICAgICAgIGEgbW9kaWZpZWQgY29weSBvZiB0aGUgaW5wdXQgCi0KLSAgICAgICAgICAgICBcbm90ZSBUaGUgc2Vjb25kIHZhcmlhbnQgb2YgdGhpcyBmdW5jdGlvbiBwcm92aWRlcyB0aGUgc3Ryb25nIGV4Y2VwdGlvbi1zYWZldHkgZ3VhcmFudGVlCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPAotICAgICAgICAgICAgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3JULAotICAgICAgICAgICAgdHlwZW5hbWUgUmFuZ2UxVCwgCi0gICAgICAgICAgICB0eXBlbmFtZSBSYW5nZTJULAotICAgICAgICAgICAgdHlwZW5hbWUgUmFuZ2UzVD4KLSAgICAgICAgaW5saW5lIE91dHB1dEl0ZXJhdG9yVCByZXBsYWNlX2FsbF9jb3B5KAotICAgICAgICAgICAgT3V0cHV0SXRlcmF0b3JUIE91dHB1dCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMVQmIElucHV0LAotICAgICAgICAgICAgY29uc3QgUmFuZ2UyVCYgU2VhcmNoLAotICAgICAgICAgICAgY29uc3QgUmFuZ2UzVCYgRm9ybWF0ICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZmluZF9mb3JtYXRfYWxsX2NvcHkoCi0gICAgICAgICAgICAgICAgT3V0cHV0LAotICAgICAgICAgICAgICAgIElucHV0LAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Zmlyc3RfZmluZGVyKFNlYXJjaCksCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpjb25zdF9mb3JtYXR0ZXIoRm9ybWF0KSApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8hIFJlcGxhY2UgYWxsIGFsZ29yaXRobQotICAgICAgICAvKiEKLSAgICAgICAgICAgIFxvdmVybG9hZAotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZXF1ZW5jZVQsIHR5cGVuYW1lIFJhbmdlMVQsIHR5cGVuYW1lIFJhbmdlMlQ+Ci0gICAgICAgIGlubGluZSBTZXF1ZW5jZVQgcmVwbGFjZV9hbGxfY29weSggCi0gICAgICAgICAgICBjb25zdCBTZXF1ZW5jZVQmIElucHV0LAotICAgICAgICAgICAgY29uc3QgUmFuZ2UxVCYgU2VhcmNoLAotICAgICAgICAgICAgY29uc3QgUmFuZ2UyVCYgRm9ybWF0ICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZmluZF9mb3JtYXRfYWxsX2NvcHkoIAotICAgICAgICAgICAgICAgIElucHV0LAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Zmlyc3RfZmluZGVyKFNlYXJjaCksCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpjb25zdF9mb3JtYXR0ZXIoRm9ybWF0KSApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8hIFJlcGxhY2UgYWxsIGFsZ29yaXRobQotICAgICAgICAvKiEKLSAgICAgICAgICAgIFJlcGxhY2UgYWxsIG9jY3VycmVuY2VzIG9mIHRoZSBzZWFyY2ggc3RyaW5nIGluIHRoZSBpbnB1dCAKLSAgICAgICAgICAgIHdpdGggdGhlIGZvcm1hdCBzdHJpbmcuIFRoZSBpbnB1dCBzZXF1ZW5jZSBpcyBtb2RpZmllZCBpbi1wbGFjZS4KLQotICAgICAgICAgICAgXHBhcmFtIElucHV0IEFuIGlucHV0IHN0cmluZwotICAgICAgICAgICAgXHBhcmFtIFNlYXJjaCBBIHN1YnN0cmluZyB0byBiZSBzZWFyY2hlZCBmb3IgCi0gICAgICAgICAgICBccGFyYW0gRm9ybWF0IEEgc3Vic3RpdHV0ZSBzdHJpbmcKLSAgICAgICAgICAgIFxyZXR1cm4gQSByZWZlcmVuY2UgdG8gdGhlIG1vZGlmaWVkIGlucHV0Ci0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNlcXVlbmNlVCwgdHlwZW5hbWUgUmFuZ2UxVCwgdHlwZW5hbWUgUmFuZ2UyVD4KLSAgICAgICAgaW5saW5lIHZvaWQgcmVwbGFjZV9hbGwoIAotICAgICAgICAgICAgU2VxdWVuY2VUJiBJbnB1dCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMVQmIFNlYXJjaCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMlQmIEZvcm1hdCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZmluZF9mb3JtYXRfYWxsKCAKLSAgICAgICAgICAgICAgICBJbnB1dCwgCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpmaXJzdF9maW5kZXIoU2VhcmNoKSwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmNvbnN0X2Zvcm1hdHRlcihGb3JtYXQpICk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0vLyAgcmVwbGFjZV9hbGwgKCBjYXNlIGluc2Vuc2l0aXZlICkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgICAgIC8vISBSZXBsYWNlIGFsbCBhbGdvcml0aG0gKCBjYXNlIGluc2Vuc2l0aXZlICkKLSAgICAgICAgLyohCi0gICAgICAgICAgICBSZXBsYWNlIGFsbCBvY2N1cnJlbmNlcyBvZiB0aGUgc2VhcmNoIHN0cmluZyBpbiB0aGUgaW5wdXQgCi0gICAgICAgICAgICB3aXRoIHRoZSBmb3JtYXQgc3RyaW5nLiAKLSAgICAgICAgICAgIFRoZSByZXN1bHQgaXMgYSBtb2RpZmllZCBjb3B5IG9mIHRoZSBpbnB1dC4gSXQgaXMgcmV0dXJuZWQgYXMgYSBzZXF1ZW5jZSAKLSAgICAgICAgICAgIG9yIGNvcGllZCB0byB0aGUgb3V0cHV0IGl0ZXJhdG9yLgotICAgICAgICAgICAgU2VhcmNoaW5nIGlzIGNhc2UgaW5zZW5zaXRpdmUuCi0KLSAgICAgICAgICAgIFxwYXJhbSBPdXRwdXQgQW4gb3V0cHV0IGl0ZXJhdG9yIHRvIHdoaWNoIHRoZSByZXN1bHQgd2lsbCBiZSBjb3BpZWQKLSAgICAgICAgICAgIFxwYXJhbSBJbnB1dCBBbiBpbnB1dCBzdHJpbmcKLSAgICAgICAgICAgIFxwYXJhbSBTZWFyY2ggQSBzdWJzdHJpbmcgdG8gYmUgc2VhcmNoZWQgZm9yIAotICAgICAgICAgICAgXHBhcmFtIEZvcm1hdCBBIHN1YnN0aXR1dGUgc3RyaW5nCi0gICAgICAgICAgICBccGFyYW0gTG9jIEEgbG9jYWxlIHVzZWQgZm9yIGNhc2UgaW5zZW5zaXRpdmUgY29tcGFyaXNvbgotICAgICAgICAgICAgXHJldHVybiBBbiBvdXRwdXQgaXRlcmF0b3IgcG9pbnRpbmcganVzdCBhZnRlciB0aGUgbGFzdCBpbnNlcnRlZCBjaGFyYWN0ZXIgb3IKLSAgICAgICAgICAgICAgICAgICAgYSBtb2RpZmllZCBjb3B5IG9mIHRoZSBpbnB1dCAKLQotICAgICAgICAgICAgXG5vdGUgVGhlIHNlY29uZCB2YXJpYW50IG9mIHRoaXMgZnVuY3Rpb24gcHJvdmlkZXMgdGhlIHN0cm9uZyBleGNlcHRpb24tc2FmZXR5IGd1YXJhbnRlZQotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICAgIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yVCwKLSAgICAgICAgICAgIHR5cGVuYW1lIFJhbmdlMVQsIAotICAgICAgICAgICAgdHlwZW5hbWUgUmFuZ2UyVCwKLSAgICAgICAgICAgIHR5cGVuYW1lIFJhbmdlM1Q+Ci0gICAgICAgIGlubGluZSBPdXRwdXRJdGVyYXRvclQgaXJlcGxhY2VfYWxsX2NvcHkoCi0gICAgICAgICAgICBPdXRwdXRJdGVyYXRvclQgT3V0cHV0LAotICAgICAgICAgICAgY29uc3QgUmFuZ2UxVCYgSW5wdXQsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTJUJiBTZWFyY2gsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTNUJiBGb3JtYXQsCi0gICAgICAgICAgICBjb25zdCBzdGQ6OmxvY2FsZSYgTG9jPXN0ZDo6bG9jYWxlKCkgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpmaW5kX2Zvcm1hdF9hbGxfY29weSgKLSAgICAgICAgICAgICAgICBPdXRwdXQsCi0gICAgICAgICAgICAgICAgSW5wdXQsCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpmaXJzdF9maW5kZXIoU2VhcmNoLCBpc19pZXF1YWwoTG9jKSksCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpjb25zdF9mb3JtYXR0ZXIoRm9ybWF0KSApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8hIFJlcGxhY2UgYWxsIGFsZ29yaXRobSAoIGNhc2UgaW5zZW5zaXRpdmUgKQotICAgICAgICAvKiEKLSAgICAgICAgICAgIFxvdmVybG9hZAotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZXF1ZW5jZVQsIHR5cGVuYW1lIFJhbmdlMVQsIHR5cGVuYW1lIFJhbmdlMlQ+Ci0gICAgICAgIGlubGluZSBTZXF1ZW5jZVQgaXJlcGxhY2VfYWxsX2NvcHkoIAotICAgICAgICAgICAgY29uc3QgU2VxdWVuY2VUJiBJbnB1dCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMVQmIFNlYXJjaCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMlQmIEZvcm1hdCwKLSAgICAgICAgICAgIGNvbnN0IHN0ZDo6bG9jYWxlJiBMb2M9c3RkOjpsb2NhbGUoKSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpbmRfZm9ybWF0X2FsbF9jb3B5KCAKLSAgICAgICAgICAgICAgICBJbnB1dCwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpcnN0X2ZpbmRlcihTZWFyY2gsIGlzX2llcXVhbChMb2MpKSwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmNvbnN0X2Zvcm1hdHRlcihGb3JtYXQpICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyEgUmVwbGFjZSBhbGwgYWxnb3JpdGhtICggY2FzZSBpbnNlbnNpdGl2ZSApCi0gICAgICAgIC8qIQotICAgICAgICAgICAgUmVwbGFjZSBhbGwgb2NjdXJyZW5jZXMgb2YgdGhlIHNlYXJjaCBzdHJpbmcgaW4gdGhlIGlucHV0IAotICAgICAgICAgICAgd2l0aCB0aGUgZm9ybWF0IHN0cmluZy5UaGUgaW5wdXQgc2VxdWVuY2UgaXMgbW9kaWZpZWQgaW4tcGxhY2UuCi0gICAgICAgICAgICBTZWFyY2hpbmcgaXMgY2FzZSBpbnNlbnNpdGl2ZS4KLQotICAgICAgICAgICAgXHBhcmFtIElucHV0IEFuIGlucHV0IHN0cmluZwotICAgICAgICAgICAgXHBhcmFtIFNlYXJjaCBBIHN1YnN0cmluZyB0byBiZSBzZWFyY2hlZCBmb3IgCi0gICAgICAgICAgICBccGFyYW0gRm9ybWF0IEEgc3Vic3RpdHV0ZSBzdHJpbmcKLSAgICAgICAgICAgIFxwYXJhbSBMb2MgQSBsb2NhbGUgdXNlZCBmb3IgY2FzZSBpbnNlbnNpdGl2ZSBjb21wYXJpc29uCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNlcXVlbmNlVCwgdHlwZW5hbWUgUmFuZ2UxVCwgdHlwZW5hbWUgUmFuZ2UyVD4KLSAgICAgICAgaW5saW5lIHZvaWQgaXJlcGxhY2VfYWxsKCAKLSAgICAgICAgICAgIFNlcXVlbmNlVCYgSW5wdXQsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTFUJiBTZWFyY2gsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTJUJiBGb3JtYXQsCi0gICAgICAgICAgICBjb25zdCBzdGQ6OmxvY2FsZSYgTG9jPXN0ZDo6bG9jYWxlKCkgKQotICAgICAgICB7Ci0gICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpbmRfZm9ybWF0X2FsbCggCi0gICAgICAgICAgICAgICAgSW5wdXQsIAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Zmlyc3RfZmluZGVyKFNlYXJjaCwgaXNfaWVxdWFsKExvYykpLAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Y29uc3RfZm9ybWF0dGVyKEZvcm1hdCkgKTsKLSAgICAgICAgfQotICAgICAgICAKLS8vICByZXBsYWNlX2hlYWQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgICAgIC8vISBSZXBsYWNlIGhlYWQgYWxnb3JpdGhtCi0gICAgICAgIC8qIQotICAgICAgICAgICAgUmVwbGFjZSB0aGUgaGVhZCBvZiB0aGUgaW5wdXQgd2l0aCB0aGUgZ2l2ZW4gZm9ybWF0IHN0cmluZy4gCi0gICAgICAgICAgICBUaGUgaGVhZCBpcyBhIHByZWZpeCBvZiBhIHN0cmluZyBvZiBnaXZlbiBzaXplLiAKLSAgICAgICAgICAgIElmIHRoZSBzZXF1ZW5jZSBpcyBzaG9ydGVyIHRoZW4gcmVxdWlyZWQsIHdob2xlIHN0cmluZyBpZiAKLSAgICAgICAgICAgIGNvbnNpZGVyZWQgdG8gYmUgdGhlIGhlYWQuIAotICAgICAgICAgICAgVGhlIHJlc3VsdCBpcyBhIG1vZGlmaWVkIGNvcHkgb2YgdGhlIGlucHV0LiBJdCBpcyByZXR1cm5lZCBhcyBhIHNlcXVlbmNlIAotICAgICAgICAgICAgb3IgY29waWVkIHRvIHRoZSBvdXRwdXQgaXRlcmF0b3IuCi0gICAgICAgICAgICAKLSAgICAgICAgICAgIFxwYXJhbSBPdXRwdXQgQW4gb3V0cHV0IGl0ZXJhdG9yIHRvIHdoaWNoIHRoZSByZXN1bHQgd2lsbCBiZSBjb3BpZWQKLSAgICAgICAgICAgIFxwYXJhbSBJbnB1dCBBbiBpbnB1dCBzdHJpbmcKLSAgICAgICAgICAgIFxwYXJhbSBOIExlbmd0aCBvZiB0aGUgaGVhZC4KLSAgICAgICAgICAgICAgICBGb3IgTj49MCwgYXQgbW9zdCBOIGNoYXJhY3RlcnMgYXJlIGV4dHJhY3RlZC4KLSAgICAgICAgICAgICAgICBGb3IgTjwwLCBzaXplKElucHV0KS18TnwgY2hhcmFjdGVycyBhcmUgZXh0cmFjdGVkLgotICAgICAgICAgICAgXHBhcmFtIEZvcm1hdCBBIHN1YnN0aXR1dGUgc3RyaW5nCi0gICAgICAgICAgICBccmV0dXJuIEFuIG91dHB1dCBpdGVyYXRvciBwb2ludGluZyBqdXN0IGFmdGVyIHRoZSBsYXN0IGluc2VydGVkIGNoYXJhY3RlciBvcgotICAgICAgICAgICAgICAgIGEgbW9kaWZpZWQgY29weSBvZiB0aGUgaW5wdXQgIAotCi0gICAgICAgICAgICBcbm90ZSBUaGUgc2Vjb25kIHZhcmlhbnQgb2YgdGhpcyBmdW5jdGlvbiBwcm92aWRlcyB0aGUgc3Ryb25nIGV4Y2VwdGlvbi1zYWZldHkgZ3VhcmFudGVlCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPAotICAgICAgICAgICAgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3JULAotICAgICAgICAgICAgdHlwZW5hbWUgUmFuZ2UxVCwgCi0gICAgICAgICAgICB0eXBlbmFtZSBSYW5nZTJUPgotICAgICAgICBpbmxpbmUgT3V0cHV0SXRlcmF0b3JUIHJlcGxhY2VfaGVhZF9jb3B5KAotICAgICAgICAgICAgT3V0cHV0SXRlcmF0b3JUIE91dHB1dCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMVQmIElucHV0LAotICAgICAgICAgICAgaW50IE4sCi0gICAgICAgICAgICBjb25zdCBSYW5nZTJUJiBGb3JtYXQgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpmaW5kX2Zvcm1hdF9jb3B5KAotICAgICAgICAgICAgICAgIE91dHB1dCwKLSAgICAgICAgICAgICAgICBJbnB1dCwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmhlYWRfZmluZGVyKE4pLAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Y29uc3RfZm9ybWF0dGVyKEZvcm1hdCkgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vISBSZXBsYWNlIGhlYWQgYWxnb3JpdGhtCi0gICAgICAgIC8qIQotICAgICAgICAgICAgXG92ZXJsb2FkCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNlcXVlbmNlVCwgdHlwZW5hbWUgUmFuZ2VUPgotICAgICAgICBpbmxpbmUgU2VxdWVuY2VUIHJlcGxhY2VfaGVhZF9jb3B5KCAKLSAgICAgICAgICAgIGNvbnN0IFNlcXVlbmNlVCYgSW5wdXQsCi0gICAgICAgICAgICBpbnQgTiwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlVCYgRm9ybWF0ICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZmluZF9mb3JtYXRfY29weSggCi0gICAgICAgICAgICAgICAgSW5wdXQsCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpoZWFkX2ZpbmRlcihOKSwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmNvbnN0X2Zvcm1hdHRlcihGb3JtYXQpICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyEgUmVwbGFjZSBoZWFkIGFsZ29yaXRobQotICAgICAgICAvKiEKLSAgICAgICAgICAgIFJlcGxhY2UgdGhlIGhlYWQgb2YgdGhlIGlucHV0IHdpdGggdGhlIGdpdmVuIGZvcm1hdCBzdHJpbmcuIAotICAgICAgICAgICAgVGhlIGhlYWQgaXMgYSBwcmVmaXggb2YgYSBzdHJpbmcgb2YgZ2l2ZW4gc2l6ZS4gCi0gICAgICAgICAgICBJZiB0aGUgc2VxdWVuY2UgaXMgc2hvcnRlciB0aGVuIHJlcXVpcmVkLCB0aGUgd2hvbGUgc3RyaW5nIGlzIAotICAgICAgICAgICAgY29uc2lkZXJlZCB0byBiZSB0aGUgaGVhZC4gVGhlIGlucHV0IHNlcXVlbmNlIGlzIG1vZGlmaWVkIGluLXBsYWNlLgotCi0gICAgICAgICAgICBccGFyYW0gSW5wdXQgQW4gaW5wdXQgc3RyaW5nCi0gICAgICAgICAgICBccGFyYW0gTiBMZW5ndGggb2YgdGhlIGhlYWQuCi0gICAgICAgICAgICAgICAgRm9yIE4+PTAsIGF0IG1vc3QgTiBjaGFyYWN0ZXJzIGFyZSBleHRyYWN0ZWQuCi0gICAgICAgICAgICAgICAgRm9yIE48MCwgc2l6ZShJbnB1dCktfE58IGNoYXJhY3RlcnMgYXJlIGV4dHJhY3RlZC4KLSAgICAgICAgICAgIFxwYXJhbSBGb3JtYXQgQSBzdWJzdGl0dXRlIHN0cmluZwotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZXF1ZW5jZVQsIHR5cGVuYW1lIFJhbmdlVD4KLSAgICAgICAgaW5saW5lIHZvaWQgcmVwbGFjZV9oZWFkKCAKLSAgICAgICAgICAgIFNlcXVlbmNlVCYgSW5wdXQsCi0gICAgICAgICAgICBpbnQgTiwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlVCYgRm9ybWF0ICkKLSAgICAgICAgewotICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpmaW5kX2Zvcm1hdCggCi0gICAgICAgICAgICAgICAgSW5wdXQsIAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6aGVhZF9maW5kZXIoTiksCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpjb25zdF9mb3JtYXR0ZXIoRm9ybWF0KSApOwotICAgICAgICB9Ci0KLS8vICByZXBsYWNlX3RhaWwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgICAgIC8vISBSZXBsYWNlIHRhaWwgYWxnb3JpdGhtCi0gICAgICAgIC8qIQotICAgICAgICAgICAgUmVwbGFjZSB0aGUgdGFpbCBvZiB0aGUgaW5wdXQgd2l0aCB0aGUgZ2l2ZW4gZm9ybWF0IHN0cmluZy4gCi0gICAgICAgICAgICBUaGUgdGFpbCBpcyBhIHN1ZmZpeCBvZiBhIHN0cmluZyBvZiBnaXZlbiBzaXplLiAKLSAgICAgICAgICAgIElmIHRoZSBzZXF1ZW5jZSBpcyBzaG9ydGVyIHRoZW4gcmVxdWlyZWQsIHdob2xlIHN0cmluZyBpcyAKLSAgICAgICAgICAgIGNvbnNpZGVyZWQgdG8gYmUgdGhlIHRhaWwuIAotICAgICAgICAgICAgVGhlIHJlc3VsdCBpcyBhIG1vZGlmaWVkIGNvcHkgb2YgdGhlIGlucHV0LiBJdCBpcyByZXR1cm5lZCBhcyBhIHNlcXVlbmNlIAotICAgICAgICAgICAgb3IgY29waWVkIHRvIHRoZSBvdXRwdXQgaXRlcmF0b3IuCi0KLSAgICAgICAgICAgIFxwYXJhbSBPdXRwdXQgQW4gb3V0cHV0IGl0ZXJhdG9yIHRvIHdoaWNoIHRoZSByZXN1bHQgd2lsbCBiZSBjb3BpZWQKLSAgICAgICAgICAgIFxwYXJhbSBJbnB1dCBBbiBpbnB1dCBzdHJpbmcKLSAgICAgICAgICAgIFxwYXJhbSBOIExlbmd0aCBvZiB0aGUgdGFpbC4KLSAgICAgICAgICAgICAgICBGb3IgTj49MCwgYXQgbW9zdCBOIGNoYXJhY3RlcnMgYXJlIGV4dHJhY3RlZC4KLSAgICAgICAgICAgICAgICBGb3IgTjwwLCBzaXplKElucHV0KS18TnwgY2hhcmFjdGVycyBhcmUgZXh0cmFjdGVkLgotICAgICAgICAgICAgXHBhcmFtIEZvcm1hdCBBIHN1YnN0aXR1dGUgc3RyaW5nCi0gICAgICAgICAgICBccmV0dXJuIEFuIG91dHB1dCBpdGVyYXRvciBwb2ludGluZyBqdXN0IGFmdGVyIHRoZSBsYXN0IGluc2VydGVkIGNoYXJhY3RlciBvcgotICAgICAgICAgICAgICAgICAgICBhIG1vZGlmaWVkIGNvcHkgb2YgdGhlIGlucHV0ICAgCi0KLSAgICAgICAgICAgICAgXG5vdGUgVGhlIHNlY29uZCB2YXJpYW50IG9mIHRoaXMgZnVuY3Rpb24gcHJvdmlkZXMgdGhlIHN0cm9uZyBleGNlcHRpb24tc2FmZXR5IGd1YXJhbnRlZQotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICAgIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yVCwKLSAgICAgICAgICAgIHR5cGVuYW1lIFJhbmdlMVQsIAotICAgICAgICAgICAgdHlwZW5hbWUgUmFuZ2UyVD4KLSAgICAgICAgaW5saW5lIE91dHB1dEl0ZXJhdG9yVCByZXBsYWNlX3RhaWxfY29weSgKLSAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yVCBPdXRwdXQsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTFUJiBJbnB1dCwKLSAgICAgICAgICAgIGludCBOLAotICAgICAgICAgICAgY29uc3QgUmFuZ2UyVCYgRm9ybWF0ICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZmluZF9mb3JtYXRfY29weSgKLSAgICAgICAgICAgICAgICBPdXRwdXQsCi0gICAgICAgICAgICAgICAgSW5wdXQsCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjp0YWlsX2ZpbmRlcihOKSwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmNvbnN0X2Zvcm1hdHRlcihGb3JtYXQpICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyEgUmVwbGFjZSB0YWlsIGFsZ29yaXRobQotICAgICAgICAvKiEKLSAgICAgICAgICAgIFxvdmVybG9hZAotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZXF1ZW5jZVQsIHR5cGVuYW1lIFJhbmdlVD4KLSAgICAgICAgaW5saW5lIFNlcXVlbmNlVCByZXBsYWNlX3RhaWxfY29weSggCi0gICAgICAgICAgICBjb25zdCBTZXF1ZW5jZVQmIElucHV0LAotICAgICAgICAgICAgaW50IE4sCi0gICAgICAgICAgICBjb25zdCBSYW5nZVQmIEZvcm1hdCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpbmRfZm9ybWF0X2NvcHkoIAotICAgICAgICAgICAgICAgIElucHV0LAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6dGFpbF9maW5kZXIoTiksCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpjb25zdF9mb3JtYXR0ZXIoRm9ybWF0KSApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8hIFJlcGxhY2UgdGFpbCBhbGdvcml0aG0KLSAgICAgICAgLyohCi0gICAgICAgICAgICBSZXBsYWNlIHRoZSB0YWlsIG9mIHRoZSBpbnB1dCB3aXRoIHRoZSBnaXZlbiBmb3JtYXQgc2VxdWVuY2UuIAotICAgICAgICAgICAgVGhlIHRhaWwgaXMgYSBzdWZmaXggb2YgYSBzdHJpbmcgb2YgZ2l2ZW4gc2l6ZS4gCi0gICAgICAgICAgICBJZiB0aGUgc2VxdWVuY2UgaXMgc2hvcnRlciB0aGVuIHJlcXVpcmVkLCB0aGUgd2hvbGUgc3RyaW5nIGlzIAotICAgICAgICAgICAgY29uc2lkZXJlZCB0byBiZSB0aGUgdGFpbC4gVGhlIGlucHV0IHNlcXVlbmNlIGlzIG1vZGlmaWVkIGluLXBsYWNlLgotCi0gICAgICAgICAgICBccGFyYW0gSW5wdXQgQW4gaW5wdXQgc3RyaW5nCi0gICAgICAgICAgICBccGFyYW0gTiBMZW5ndGggb2YgdGhlIHRhaWwuCi0gICAgICAgICAgICAgICAgRm9yIE4+PTAsIGF0IG1vc3QgTiBjaGFyYWN0ZXJzIGFyZSBleHRyYWN0ZWQuCi0gICAgICAgICAgICAgICAgRm9yIE48MCwgc2l6ZShJbnB1dCktfE58IGNoYXJhY3RlcnMgYXJlIGV4dHJhY3RlZC4KLSAgICAgICAgICAgIFxwYXJhbSBGb3JtYXQgQSBzdWJzdGl0dXRlIHN0cmluZwotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZXF1ZW5jZVQsIHR5cGVuYW1lIFJhbmdlVD4KLSAgICAgICAgaW5saW5lIHZvaWQgcmVwbGFjZV90YWlsKCAKLSAgICAgICAgICAgIFNlcXVlbmNlVCYgSW5wdXQsCi0gICAgICAgICAgICBpbnQgTiwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlVCYgRm9ybWF0ICkKLSAgICAgICAgewotICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpmaW5kX2Zvcm1hdCggCi0gICAgICAgICAgICAgICAgSW5wdXQsIAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6dGFpbF9maW5kZXIoTiksCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpjb25zdF9mb3JtYXR0ZXIoRm9ybWF0KSApOwotICAgICAgICB9Ci0KLSAgICB9IC8vIG5hbWVzcGFjZSBhbGdvcml0aG0KLQotICAgIC8vIHB1bGwgbmFtZXMgdG8gdGhlIGJvb3N0IG5hbWVzcGFjZQotICAgIHVzaW5nIGFsZ29yaXRobTo6cmVwbGFjZV9yYW5nZV9jb3B5OwotICAgIHVzaW5nIGFsZ29yaXRobTo6cmVwbGFjZV9yYW5nZTsKLSAgICB1c2luZyBhbGdvcml0aG06OnJlcGxhY2VfZmlyc3RfY29weTsKLSAgICB1c2luZyBhbGdvcml0aG06OnJlcGxhY2VfZmlyc3Q7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjppcmVwbGFjZV9maXJzdF9jb3B5OwotICAgIHVzaW5nIGFsZ29yaXRobTo6aXJlcGxhY2VfZmlyc3Q7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjpyZXBsYWNlX2xhc3RfY29weTsKLSAgICB1c2luZyBhbGdvcml0aG06OnJlcGxhY2VfbGFzdDsKLSAgICB1c2luZyBhbGdvcml0aG06OmlyZXBsYWNlX2xhc3RfY29weTsKLSAgICB1c2luZyBhbGdvcml0aG06OmlyZXBsYWNlX2xhc3Q7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjpyZXBsYWNlX250aF9jb3B5OwotICAgIHVzaW5nIGFsZ29yaXRobTo6cmVwbGFjZV9udGg7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjppcmVwbGFjZV9udGhfY29weTsKLSAgICB1c2luZyBhbGdvcml0aG06OmlyZXBsYWNlX250aDsKLSAgICB1c2luZyBhbGdvcml0aG06OnJlcGxhY2VfYWxsX2NvcHk7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjpyZXBsYWNlX2FsbDsKLSAgICB1c2luZyBhbGdvcml0aG06OmlyZXBsYWNlX2FsbF9jb3B5OwotICAgIHVzaW5nIGFsZ29yaXRobTo6aXJlcGxhY2VfYWxsOwotICAgIHVzaW5nIGFsZ29yaXRobTo6cmVwbGFjZV9oZWFkX2NvcHk7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjpyZXBsYWNlX2hlYWQ7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjpyZXBsYWNlX3RhaWxfY29weTsKLSAgICB1c2luZyBhbGdvcml0aG06OnJlcGxhY2VfdGFpbDsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyBORE5CT09TVF9SRVBMQUNFX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL3NlcXVlbmNlX3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvc2VxdWVuY2VfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTMzN2ZhMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvc2VxdWVuY2VfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5MyArMCwwIEBACi0vLyAgQm9vc3Qgc3RyaW5nX2FsZ28gbGlicmFyeSBzZXF1ZW5jZV90cmFpdHMuaHBwIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IFBhdm9sIERyb2JhIDIwMDItMjAwMy4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgICAgICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvIGZvciB1cGRhdGVzLCBkb2N1bWVudGF0aW9uLCBhbmQgcmV2aXNpb24gaGlzdG9yeS4KLQotI2lmbmRlZiBORE5CT09TVF9TVFJJTkdfU0VRVUVOQ0VfVFJBSVRTX0hQUAotI2RlZmluZSBORE5CT09TVF9TVFJJTkdfU0VRVUVOQ0VfVFJBSVRTX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy95ZXNfbm9fdHlwZS5ocHA+Ci0KLS8qISBcZmlsZQotICAgIFRyYWl0cyBkZWZpbmVkIGluIHRoaXMgaGVhZGVyIGFyZSB1c2VkIGJ5IHZhcmlvdXMgYWxnb3JpdGhtcyB0byBhY2hpZXZlCi0gICAgYmV0dGVyIHBlcmZvcm1hbmNlIGZvciBzcGVjaWZpYyBjb250YWluZXJzLgotICAgIFRyYWl0cyBwcm92aWRlIGZhaWwtc2FmZSBkZWZhdWx0cy4gSWYgYSBjb250YWluZXIgc3VwcG9ydHMgc29tZSBvZiB0aGVzZQotICAgIGZlYXR1cmVzLCBpdCBpcyBwb3NzaWJsZSB0byBzcGVjaWFsaXplIHRoZSBzcGVjaWZpYyB0cmFpdCBmb3IgdGhpcyBjb250YWluZXIuCi0gICAgRm9yIGxhY2tpbmcgY29tcGlsZXJzLCBpdCBpcyBwb3NzaWJsZSBvZiBkZWZpbmUgYW4gb3ZlcnJpZGUgZm9yIGEgc3BlY2lmaWMgdGVzdGVyCi0gICAgZnVuY3Rpb24uCi0KLSAgICBEdWUgdG8gYSBsYW5ndWFnZSByZXN0cmljdGlvbiwgaXQgaXMgbm90IGN1cnJlbnRseSBwb3NzaWJsZSB0byBkZWZpbmUgc3BlY2lhbGl6YXRpb25zIGZvcgotICAgIHN0bCBjb250YWluZXJzIHdpdGhvdXQgaW5jbHVkaW5nIHRoZSBjb3JyZXNwb25kaW5nIGhlYWRlci4gVG8gZGVjcmVhc2UgdGhlIG92ZXJoZWFkCi0gICAgbmVlZGVkIGJ5IHRoaXMgaW5jbHVzaW9uLCB1c2VyIGNhbiBzZWxlY3RpdmVseSBpbmNsdWRlIGEgc3BlY2lhbGl6YXRpb24KLSAgICBoZWFkZXIgZm9yIGEgc3BlY2lmaWMgY29udGFpbmVyLiBUaGV5IGFyZSBsb2NhdGVkIGluIG5kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvc3RsCi0gICAgZGlyZWN0b3J5LiBBbHRlcm5hdGl2ZWx5IHNoZSBjYW4gaW5jbHVkZSBuZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL3N0ZF9jb2xsZWN0aW9uX3RyYWl0cy5ocHAKLSAgICBoZWFkZXIgd2hpY2ggY29udGFpbnMgc3BlY2lhbGl6YXRpb25zIGZvciBhbGwgc3RsIGNvbnRhaW5lcnMuCi0qLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIG5hbWVzcGFjZSBhbGdvcml0aG0gewotCi0vLyAgc2VxdWVuY2UgdHJhaXRzICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSNpZmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLSAgICAgICAgLy8hIE5hdGl2ZSByZXBsYWNlIHRlc3RlcgotICAgICAgICAvKiEKLSAgICAgICAgICAgIERlY2xhcmUgYW4gb3ZlcnJpZGUgb2YgdGhpcyB0ZXN0ZXIgZnVuY3Rpb24gd2l0aCByZXR1cm4KLSAgICAgICAgICAgIHR5cGUgbmRuYm9vc3Q6OnN0cmluZ19hbGdvOjp5ZXNfdHlwZSBmb3IgYSBzZXF1ZW5jZSB3aXRoIHRoaXMgcHJvcGVydHkuCi0KLSAgICAgICAgICAgIFxyZXR1cm4geWVzX3R5cGUgaWYgdGhlIGNvbnRhaW5lciBoYXMgYmFzaWNfc3RyaW5nIGxpa2UgbmF0aXZlIHJlcGxhY2UKLSAgICAgICAgICAgIG1ldGhvZC4KLSAgICAgICAgKi8KLSAgICAgICAgbm9fdHlwZSBoYXNfbmF0aXZlX3JlcGxhY2VfdGVzdGVyKC4uLik7Ci0KLSAgICAgICAgLy8hIFN0YWJsZSBpdGVyYXRvcnMgdGVzdGVyCi0gICAgICAgIC8qIQotICAgICAgICAgICAgRGVjbGFyZSBhbiBvdmVycmlkZSBvZiB0aGlzIHRlc3RlciBmdW5jdGlvbiB3aXRoIHJldHVybgotICAgICAgICAgICAgdHlwZSBuZG5ib29zdDo6c3RyaW5nX2FsZ286Onllc190eXBlIGZvciBhIHNlcXVlbmNlIHdpdGggdGhpcyBwcm9wZXJ0eS4KLQotICAgICAgICAgICAgXHJldHVybiB5ZXNfdHlwZSBpZiB0aGUgc2VxdWVuY2UncyBpbnNlcnQvcmVwbGFjZS9lcmFzZSBtZXRob2RzIGRvIG5vdCBpbnZhbGlkYXRlCi0gICAgICAgICAgICBleGlzdGluZyBpdGVyYXRvcnMuCi0gICAgICAgICovCi0gICAgICAgIG5vX3R5cGUgaGFzX3N0YWJsZV9pdGVyYXRvcnNfdGVzdGVyKC4uLik7Ci0KLSAgICAgICAgLy8hIGNvbnN0IHRpbWUgaW5zZXJ0IHRlc3RlcgotICAgICAgICAvKiEKLSAgICAgICAgICAgIERlY2xhcmUgYW4gb3ZlcnJpZGUgb2YgdGhpcyB0ZXN0ZXIgZnVuY3Rpb24gd2l0aCByZXR1cm4KLSAgICAgICAgICAgIHR5cGUgbmRuYm9vc3Q6OnN0cmluZ19hbGdvOjp5ZXNfdHlwZSBmb3IgYSBzZXF1ZW5jZSB3aXRoIHRoaXMgcHJvcGVydHkuCi0KLSAgICAgICAgICAgIFxyZXR1cm4geWVzX3R5cGUgaWYgdGhlIHNlcXVlbmNlJ3MgaW5zZXJ0IG1ldGhvZCBpcyB3b3JraW5nIGluIGNvbnN0YW50IHRpbWUKLSAgICAgICAgKi8KLSAgICAgICAgbm9fdHlwZSBoYXNfY29uc3RfdGltZV9pbnNlcnRfdGVzdGVyKC4uLik7Ci0KLSAgICAgICAgLy8hIGNvbnN0IHRpbWUgZXJhc2UgdGVzdGVyCi0gICAgICAgIC8qIQotICAgICAgICAgICAgRGVjbGFyZSBhbiBvdmVycmlkZSBvZiB0aGlzIHRlc3RlciBmdW5jdGlvbiB3aXRoIHJldHVybgotICAgICAgICAgICAgdHlwZSBuZG5ib29zdDo6c3RyaW5nX2FsZ286Onllc190eXBlIGZvciBhIHNlcXVlbmNlIHdpdGggdGhpcyBwcm9wZXJ0eS4KLQotICAgICAgICAgICAgXHJldHVybiB5ZXNfdHlwZSBpZiB0aGUgc2VxdWVuY2UncyBlcmFzZSBtZXRob2QgaXMgd29ya2luZyBpbiBjb25zdGFudCB0aW1lCi0gICAgICAgICovCi0gICAgICAgIG5vX3R5cGUgaGFzX2NvbnN0X3RpbWVfZXJhc2VfdGVzdGVyKC4uLik7Ci0KLSNlbmRpZiAvL05ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotICAgICAgICAvLyEgTmF0aXZlIHJlcGxhY2UgdHJhaXQKLSAgICAgICAgLyohCi0gICAgICAgICAgICBUaGlzIHRyYWl0IHNwZWNpZmllcyB0aGF0IHRoZSBzZXF1ZW5jZSBoYXMgXGMgc3RkOjpzdHJpbmcgbGlrZSByZXBsYWNlIG1ldGhvZAotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci0gICAgICAgIGNsYXNzIGhhc19uYXRpdmVfcmVwbGFjZQotICAgICAgICB7Ci0KLSNpZmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0gICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICBzdGF0aWMgVCogdDsKLSAgICAgICAgcHVibGljOgotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlPSgKLSAgICAgICAgICAgICAgICBzaXplb2YoaGFzX25hdGl2ZV9yZXBsYWNlX3Rlc3Rlcih0KSk9PXNpemVvZih5ZXNfdHlwZSkgKSApOwotI2Vsc2UgIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSAgICAgICAgcHVibGljOgotIyAgICBpZiBORE5CT09TVF9XT1JLQVJPVU5EKCBfX0lCTUNQUF9fLCA8PSA2MDAgKQotICAgICAgICAgICAgZW51bSB7IHZhbHVlID0gZmFsc2UgfTsKLSMgICAgZWxzZQotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlPWZhbHNlKTsKLSMgICAgZW5kaWYgLy8gTkROQk9PU1RfV09SS0FST1VORCggX19JQk1DUFBfXywgPD0gNjAwICkKLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLQotICAgICAgICAgICAgdHlwZWRlZiBtcGw6OmJvb2xfPGhhc19uYXRpdmVfcmVwbGFjZTxUPjo6dmFsdWU+IHR5cGU7Ci0gICAgICAgIH07Ci0KLQotICAgICAgICAvLyEgU3RhYmxlIGl0ZXJhdG9ycyB0cmFpdAotICAgICAgICAvKiEKLSAgICAgICAgICAgIFRoaXMgdHJhaXQgc3BlY2lmaWVzIHRoYXQgdGhlIHNlcXVlbmNlIGhhcyBzdGFibGUgaXRlcmF0b3JzLiBJdCBtZWFucwotICAgICAgICAgICAgdGhhdCBvcGVyYXRpb25zIGxpa2UgaW5zZXJ0L2VyYXNlL3JlcGxhY2UgZG8gbm90IGludmFsaWRhdGUgaXRlcmF0b3JzLgotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci0gICAgICAgIGNsYXNzIGhhc19zdGFibGVfaXRlcmF0b3JzCi0gICAgICAgIHsKLSNpZmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0gICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICBzdGF0aWMgVCogdDsKLSAgICAgICAgcHVibGljOgotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlPSgKLSAgICAgICAgICAgICAgICBzaXplb2YoaGFzX3N0YWJsZV9pdGVyYXRvcnNfdGVzdGVyKHQpKT09c2l6ZW9mKHllc190eXBlKSApICk7Ci0jZWxzZSAgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotICAgICAgICBwdWJsaWM6Ci0jICAgIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoIF9fSUJNQ1BQX18sIDw9IDYwMCApCi0gICAgICAgICAgICBlbnVtIHsgdmFsdWUgPSBmYWxzZSB9OwotIyAgICBlbHNlCi0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWU9ZmFsc2UpOwotIyAgICBlbmRpZiAvLyBORE5CT09TVF9XT1JLQVJPVU5EKCBfX0lCTUNQUF9fLCA8PSA2MDAgKQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotICAgICAgICAgICAgdHlwZWRlZiBtcGw6OmJvb2xfPGhhc19zdGFibGVfaXRlcmF0b3JzPFQ+Ojp2YWx1ZT4gdHlwZTsKLSAgICAgICAgfTsKLQotCi0gICAgICAgIC8vISBDb25zdCB0aW1lIGluc2VydCB0cmFpdAotICAgICAgICAvKiEKLSAgICAgICAgICAgIFRoaXMgdHJhaXQgc3BlY2lmaWVzIHRoYXQgdGhlIHNlcXVlbmNlJ3MgaW5zZXJ0IG1ldGhvZCBoYXMKLSAgICAgICAgICAgIGNvbnN0YW50IHRpbWUgY29tcGxleGl0eS4KLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotICAgICAgICBjbGFzcyBoYXNfY29uc3RfdGltZV9pbnNlcnQKLSAgICAgICAgewotI2lmZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIHN0YXRpYyBUKiB0OwotICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWU9KAotICAgICAgICAgICAgICAgIHNpemVvZihoYXNfY29uc3RfdGltZV9pbnNlcnRfdGVzdGVyKHQpKT09c2l6ZW9mKHllc190eXBlKSApICk7Ci0jZWxzZSAgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotICAgICAgICBwdWJsaWM6Ci0jICAgIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoIF9fSUJNQ1BQX18sIDw9IDYwMCApCi0gICAgICAgICAgICBlbnVtIHsgdmFsdWUgPSBmYWxzZSB9OwotIyAgICBlbHNlCi0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWU9ZmFsc2UpOwotIyAgICBlbmRpZiAvLyBORE5CT09TVF9XT1JLQVJPVU5EKCBfX0lCTUNQUF9fLCA8PSA2MDAgKQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotICAgICAgICAgICAgdHlwZWRlZiBtcGw6OmJvb2xfPGhhc19jb25zdF90aW1lX2luc2VydDxUPjo6dmFsdWU+IHR5cGU7Ci0gICAgICAgIH07Ci0KLQotICAgICAgICAvLyEgQ29uc3QgdGltZSBlcmFzZSB0cmFpdAotICAgICAgICAvKiEKLSAgICAgICAgICAgIFRoaXMgdHJhaXQgc3BlY2lmaWVzIHRoYXQgdGhlIHNlcXVlbmNlJ3MgZXJhc2UgbWV0aG9kIGhhcwotICAgICAgICAgICAgY29uc3RhbnQgdGltZSBjb21wbGV4aXR5LgotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci0gICAgICAgIGNsYXNzIGhhc19jb25zdF90aW1lX2VyYXNlCi0gICAgICAgIHsKLSNpZmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0gICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICBzdGF0aWMgVCogdDsKLSAgICAgICAgcHVibGljOgotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlPSgKLSAgICAgICAgICAgICAgICBzaXplb2YoaGFzX2NvbnN0X3RpbWVfZXJhc2VfdGVzdGVyKHQpKT09c2l6ZW9mKHllc190eXBlKSApICk7Ci0jZWxzZSAgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotICAgICAgICBwdWJsaWM6Ci0jICAgIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoIF9fSUJNQ1BQX18sIDw9IDYwMCApCi0gICAgICAgICAgICBlbnVtIHsgdmFsdWUgPSBmYWxzZSB9OwotIyAgICBlbHNlCi0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWU9ZmFsc2UpOwotIyAgICBlbmRpZiAvLyBORE5CT09TVF9XT1JLQVJPVU5EKCBfX0lCTUNQUF9fLCA8PSA2MDAgKQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotICAgICAgICAgICAgdHlwZWRlZiBtcGw6OmJvb2xfPGhhc19jb25zdF90aW1lX2VyYXNlPFQ+Ojp2YWx1ZT4gdHlwZTsKLSAgICAgICAgfTsKLQotICAgIH0gLy8gbmFtZXNwYWNlIGFsZ29yaXRobQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1NUUklOR19TRVFVRU5DRV9UUkFJVFNfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcveWVzX25vX3R5cGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL3llc19ub190eXBlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTdmMWQ4ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcveWVzX25vX3R5cGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotLy8gIEJvb3N0IHN0cmluZ19hbGdvIGxpYnJhcnkgeWVzX25vX3R5cGUuaHBwIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IFBhdm9sIERyb2JhIDIwMDItMjAwMy4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgICAgICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvIGZvciB1cGRhdGVzLCBkb2N1bWVudGF0aW9uLCBhbmQgcmV2aXNpb24gaGlzdG9yeS4KLQotI2lmbmRlZiBORE5CT09TVF9TVFJJTkdfWUVTX05PX1RZUEVfREVUQUlMX0hQUAotI2RlZmluZSBORE5CT09TVF9TVFJJTkdfWUVTX05PX1RZUEVfREVUQUlMX0hQUAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIG5hbWVzcGFjZSBhbGdvcml0aG0gewotCi0gICAgICAgIC8vIHRha2VuIGZyb20gYm9vc3QgbWFpbGluZy1saXN0Ci0gICAgICAgIC8vIHdoZW4geWVzX25vX3R5cGUgd2lsbCBiZWNvbWUgb2ZmaWNpYWxseQotICAgICAgICAvLyBhIHBhcnQgb2YgYm9vc3QgZGlzdHJpYnV0aW9uLCB0aGlzIGhlYWRlcgotICAgICAgICAvLyB3aWxsIGJlIGRlcHJlY2F0ZWQKLSAgICAgICAgdGVtcGxhdGU8aW50IEk+IHN0cnVjdCBzaXplX2Rlc2NyaXB0b3IgCi0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgY2hhciAoJiB0eXBlKVtJXTsKLSAgICAgICAgfTsgCi0KLSAgICAgICAgdHlwZWRlZiBzaXplX2Rlc2NyaXB0b3I8MT46OnR5cGUgeWVzX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgc2l6ZV9kZXNjcmlwdG9yPDI+Ojp0eXBlIG5vX3R5cGU7Ci0KLSAgICB9IC8vIG5hbWVzcGFjZSBhbGdvcml0aG0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLQotI2VuZGlmICAvLyBORE5CT09TVF9TVFJJTkdfWUVTX05PX1RZUEVfREVUQUlMX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9hbGlnbmVkX3N0b3JhZ2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9hbGlnbmVkX3N0b3JhZ2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NzYxMzJlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvYWxpZ25lZF9zdG9yYWdlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4MSArMCwwIEBACi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBib29zdCBhbGlnbmVkX3N0b3JhZ2UuaHBwIGhlYWRlciBmaWxlCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIHVwZGF0ZXMsIGRvY3VtZW50YXRpb24sIGFuZCByZXZpc2lvbiBoaXN0b3J5LgotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDAzCi0vLyBFcmljIEZyaWVkbWFuLCBJdGF5IE1hbWFuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX0FMSUdORURfU1RPUkFHRV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfQUxJR05FRF9TVE9SQUdFX0hQUAotCi0jaW5jbHVkZSA8Y3N0ZGRlZj4gLy8gZm9yIHN0ZDo6c2l6ZV90Ci0KLSNpbmNsdWRlICJuZG5ib29zdC9jb25maWcuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9hbGlnbm1lbnRfb2YuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL3R5cGVfd2l0aF9hbGlnbm1lbnQuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvZC5ocHAiCi0KLSNpbmNsdWRlICJuZG5ib29zdC9tcGwvZXZhbF9pZi5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbXBsL2lkZW50aXR5LmhwcCIKLQotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHAiCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgeyBuYW1lc3BhY2UgYWxpZ25lZF9zdG9yYWdlIHsKLQotTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKAotICAgICAgc3RkOjpzaXplX3QKLSAgICAsIGFsaWdubWVudF9vZl9tYXhfYWxpZ24gPSA6Om5kbmJvb3N0OjphbGlnbm1lbnRfb2Y8bWF4X2FsaWduPjo6dmFsdWUKLSAgICApOwotCi0vLwotLy8gVG8gYmUgVFIxIGNvbmZvcm1pbmcgdGhpcyBtdXN0IGJlIGEgUE9EIHR5cGU6Ci0vLwotdGVtcGxhdGUgPAotICAgICAgc3RkOjpzaXplX3Qgc2l6ZV8KLSAgICAsIHN0ZDo6c2l6ZV90IGFsaWdubWVudF8KLT4KLXN0cnVjdCBhbGlnbmVkX3N0b3JhZ2VfaW1wCi17Ci0gICAgdW5pb24gZGF0YV90Ci0gICAgewotICAgICAgICBjaGFyIGJ1ZltzaXplX107Ci0KLSAgICAgICAgdHlwZW5hbWUgbXBsOjpldmFsX2lmX2M8Ci0gICAgICAgICAgICAgIGFsaWdubWVudF8gPT0gc3RkOjpzaXplX3QoLTEpCi0gICAgICAgICAgICAsIG1wbDo6aWRlbnRpdHk8ZGV0YWlsOjptYXhfYWxpZ24+Ci0gICAgICAgICAgICAsIHR5cGVfd2l0aF9hbGlnbm1lbnQ8YWxpZ25tZW50Xz4KLSAgICAgICAgICAgID46OnR5cGUgYWxpZ25fOwotICAgIH0gZGF0YV87Ci0gICAgdm9pZCogYWRkcmVzcygpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8YWxpZ25lZF9zdG9yYWdlX2ltcCo+KHRoaXMpOyB9Ci19OwotCi10ZW1wbGF0ZTwgc3RkOjpzaXplX3QgYWxpZ25tZW50XyA+Ci1zdHJ1Y3QgYWxpZ25lZF9zdG9yYWdlX2ltcDwwdSxhbGlnbm1lbnRfPgotewotICAgIC8qIGludGVudGlvbmFsbHkgZW1wdHkgKi8KLSAgICB2b2lkKiBhZGRyZXNzKCkgY29uc3QgeyByZXR1cm4gMDsgfQotfTsKLQotfX0gLy8gbmFtZXNwYWNlIGRldGFpbDo6YWxpZ25lZF9zdG9yYWdlCi0KLXRlbXBsYXRlIDwKLSAgICAgIHN0ZDo6c2l6ZV90IHNpemVfCi0gICAgLCBzdGQ6OnNpemVfdCBhbGlnbm1lbnRfID0gc3RkOjpzaXplX3QoLTEpCi0+Ci1jbGFzcyBhbGlnbmVkX3N0b3JhZ2UgOiAKLSNpZm5kZWYgX19CT1JMQU5EQ19fCi0gICBwcml2YXRlIAotI2Vsc2UKLSAgIHB1YmxpYwotI2VuZGlmCi0gICBkZXRhaWw6OmFsaWduZWRfc3RvcmFnZTo6YWxpZ25lZF9zdG9yYWdlX2ltcDxzaXplXywgYWxpZ25tZW50Xz4gCi17Ci0gCi1wdWJsaWM6IC8vIGNvbnN0YW50cwotCi0gICAgdHlwZWRlZiBkZXRhaWw6OmFsaWduZWRfc3RvcmFnZTo6YWxpZ25lZF9zdG9yYWdlX2ltcDxzaXplXywgYWxpZ25tZW50Xz4gdHlwZTsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCgKLSAgICAgICAgICBzdGQ6OnNpemVfdAotICAgICAgICAsIHNpemUgPSBzaXplXwotICAgICAgICApOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCgKLSAgICAgICAgICBzdGQ6OnNpemVfdAotICAgICAgICAsIGFsaWdubWVudCA9ICgKLSAgICAgICAgICAgICAgYWxpZ25tZW50XyA9PSBzdGQ6OnNpemVfdCgtMSkKLSAgICAgICAgICAgID8gOjpuZG5ib29zdDo6ZGV0YWlsOjphbGlnbmVkX3N0b3JhZ2U6OmFsaWdubWVudF9vZl9tYXhfYWxpZ24KLSAgICAgICAgICAgIDogYWxpZ25tZW50XwotICAgICAgICAgICAgKQotICAgICAgICApOwotCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiZcCi0gICAgKF9fR05VQ19fID4gIDMpIHx8XAotICAgIChfX0dOVUNfXyA9PSAzICYmIChfX0dOVUNfTUlOT1JfXyA+ICAyIHx8XAotICAgICAgICAgICAgICAgICAgICAgIChfX0dOVUNfTUlOT1JfXyA9PSAyICYmIF9fR05VQ19QQVRDSExFVkVMX18gPj0zKSkpCi0KLXByaXZhdGU6IC8vIG5vbmNvcHlhYmxlCi0KLSAgICBhbGlnbmVkX3N0b3JhZ2UoY29uc3QgYWxpZ25lZF9zdG9yYWdlJik7Ci0gICAgYWxpZ25lZF9zdG9yYWdlJiBvcGVyYXRvcj0oY29uc3QgYWxpZ25lZF9zdG9yYWdlJik7Ci0KLSNlbHNlIC8vIGdjYyBsZXNzIHRoYW4gMy4yLjMKLQotcHVibGljOiAvLyBfc2hvdWxkXyBiZSBub25jb3B5YWJsZSwgYnV0IEdDQyBjb21waWxlciBlbWl0cyBlcnJvcgotCi0gICAgYWxpZ25lZF9zdG9yYWdlKGNvbnN0IGFsaWduZWRfc3RvcmFnZSYpOwotICAgIGFsaWduZWRfc3RvcmFnZSYgb3BlcmF0b3I9KGNvbnN0IGFsaWduZWRfc3RvcmFnZSYpOwotCi0jZW5kaWYgLy8gZ2NjIDwgMy4yLjMgd29ya2Fyb3VuZAotCi1wdWJsaWM6IC8vIHN0cnVjdG9ycwotCi0gICAgYWxpZ25lZF9zdG9yYWdlKCkKLSAgICB7Ci0gICAgfQotCi0gICAgfmFsaWduZWRfc3RvcmFnZSgpCi0gICAgewotICAgIH0KLQotcHVibGljOiAvLyBhY2Nlc3NvcnMKLQotICAgIHZvaWQqIGFkZHJlc3MoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHR5cGUqPih0aGlzKS0+YWRkcmVzcygpOwotICAgIH0KLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLQotICAgIGNvbnN0IHZvaWQqIGFkZHJlc3MoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHR5cGUqPih0aGlzKS0+YWRkcmVzcygpOwotICAgIH0KLQotI2Vsc2UgLy8gTVNWQzYKLQotICAgIGNvbnN0IHZvaWQqIGFkZHJlc3MoKSBjb25zdDsKLQotI2VuZGlmIC8vIE1TVkM2IHdvcmthcm91bmQKLQotfTsKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotCi0vLyBNU1ZDNiBzZWVtcyBub3QgdG8gbGlrZSBpbmxpbmUgZnVuY3Rpb25zIHdpdGggY29uc3Qgdm9pZCogcmV0dXJucywgc28gd2UKLS8vIGRlY2xhcmUgdGhlIGZvbGxvd2luZyBoZXJlOgotCi10ZW1wbGF0ZSA8c3RkOjpzaXplX3QgUywgc3RkOjpzaXplX3QgQT4KLWNvbnN0IHZvaWQqIGFsaWduZWRfc3RvcmFnZTxTLEE+OjphZGRyZXNzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gY29uc3RfY2FzdDwgYWxpZ25lZF9zdG9yYWdlPFMsQT4qID4odGhpcyktPmFkZHJlc3MoKTsKLX0KLQotI2VuZGlmIC8vIE1TVkM2IHdvcmthcm91bmQKLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0vLwotLy8gTWFrZSBzdXJlIHRoYXQgaXNfcG9kIHJlY29nbmlzZXMgYWxpZ25lZF9zdG9yYWdlPD46OnR5cGUKLS8vIGFzIGEgUE9EIChOb3RlIHRoYXQgYWxpZ25lZF9zdG9yYWdlPD4gaXRzZWxmIGlzIG5vdCBhIFBPRCk6Ci0vLwotdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IHNpemVfLCBzdGQ6OnNpemVfdCBhbGlnbm1lbnRfPgotc3RydWN0IGlzX3BvZDxuZG5ib29zdDo6ZGV0YWlsOjphbGlnbmVkX3N0b3JhZ2U6OmFsaWduZWRfc3RvcmFnZV9pbXA8c2l6ZV8sYWxpZ25tZW50Xz4gPgotICAgTkROQk9PU1RfVFRfQVVYX0JPT0xfQ19CQVNFKHRydWUpCi17IAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1ZBTFVFX0RFQ0wodHJ1ZSkKLX07IAotI2VuZGlmCi0KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcCIKLQotI2VuZGlmIC8vIE5ETkJPT1NUX0FMSUdORURfU1RPUkFHRV9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvYW55LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvYW55LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWVlZmI2NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2FueS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMTIgKzAsMCBAQAotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvYW55IGZvciBEb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0FOWV9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9BTllfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vIHdoYXQ6ICB2YXJpYW50IHR5cGUgbmRuYm9vc3Q6OmFueQotLy8gd2hvOiAgIGNvbnRyaWJ1dGVkIGJ5IEtldmxpbiBIZW5uZXksCi0vLyAgICAgICAgd2l0aCBmZWF0dXJlcyBjb250cmlidXRlZCBhbmQgYnVncyBmb3VuZCBieQotLy8gICAgICAgIEFudG9ueSBQb2x1a2hpbiwgRWQgQnJleSwgTWFyayBSb2RnZXJzLCAKLS8vICAgICAgICBQZXRlciBEaW1vdiwgYW5kIEphbWVzIEN1cnJhbgotLy8gd2hlbjogIEp1bHkgMjAwMSwgQXBscmlsIDIwMTMKLQotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDx0eXBlaW5mbz4KLQotI2luY2x1ZGUgIm5kbmJvb3N0L2NvbmZpZy5ocHAiCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3JlZmVyZW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90aHJvd19leGNlcHRpb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZW5hYmxlX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLQotLy8gU2VlIG5kbmJvb3N0L3B5dGhvbi90eXBlX2lkLmhwcAotLy8gVE9ETzogYWRkIE5ETkJPT1NUX1RZUEVJRF9DT01QQVJFX0JZX05BTUUgdG8gY29uZmlnLmhwcAotIyBpZiAoZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPj0gMykgXAotIHx8IGRlZmluZWQoX0FJWCkgXAotIHx8ICggICBkZWZpbmVkKF9fc2dpKSAmJiBkZWZpbmVkKF9faG9zdF9taXBzKSkgXAotIHx8IChkZWZpbmVkKF9faHB1eCkgJiYgZGVmaW5lZChfX0hQX2FDQykpIFwKLSB8fCAoZGVmaW5lZChsaW51eCkgJiYgZGVmaW5lZChfX0lOVEVMX0NPTVBJTEVSKSAmJiBkZWZpbmVkKF9fSUNDKSkKLSMgIGRlZmluZSBORE5CT09TVF9BVVhfQU5ZX1RZUEVfSURfTkFNRQotI2luY2x1ZGUgPGNzdHJpbmc+Ci0jIGVuZGlmIAotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICBjbGFzcyBhbnkKLSAgICB7Ci0gICAgcHVibGljOiAvLyBzdHJ1Y3RvcnMKLQotICAgICAgICBhbnkoKSBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICAgIDogY29udGVudCgwKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGU+Ci0gICAgICAgIGFueShjb25zdCBWYWx1ZVR5cGUgJiB2YWx1ZSkKLSAgICAgICAgICA6IGNvbnRlbnQobmV3IGhvbGRlcjxWYWx1ZVR5cGU+KHZhbHVlKSkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgYW55KGNvbnN0IGFueSAmIG90aGVyKQotICAgICAgICAgIDogY29udGVudChvdGhlci5jb250ZW50ID8gb3RoZXIuY29udGVudC0+Y2xvbmUoKSA6IDApCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0gICAgICAgIC8vIE1vdmUgY29uc3RydWN0b3IKLSAgICAgICAgYW55KGFueSYmIG90aGVyKSBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICAgIDogY29udGVudChvdGhlci5jb250ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBvdGhlci5jb250ZW50ID0gMDsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFBlcmZlY3QgZm9yd2FyZGluZyBvZiBWYWx1ZVR5cGUKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlPgotICAgICAgICBhbnkoVmFsdWVUeXBlJiYgdmFsdWUsIHR5cGVuYW1lIG5kbmJvb3N0OjpkaXNhYmxlX2lmPG5kbmJvb3N0Ojppc19zYW1lPGFueSYsIFZhbHVlVHlwZT4gPjo6dHlwZSogPSAwKQotICAgICAgICAgIDogY29udGVudChuZXcgaG9sZGVyPCB0eXBlbmFtZSByZW1vdmVfcmVmZXJlbmNlPFZhbHVlVHlwZT46OnR5cGUgPihzdGF0aWNfY2FzdDxWYWx1ZVR5cGUmJj4odmFsdWUpKSkKLSAgICAgICAgewotICAgICAgICB9Ci0jZW5kaWYKLQotICAgICAgICB+YW55KCkgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgZGVsZXRlIGNvbnRlbnQ7Ci0gICAgICAgIH0KLQotICAgIHB1YmxpYzogLy8gbW9kaWZpZXJzCi0KLSAgICAgICAgYW55ICYgc3dhcChhbnkgJiByaHMpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6c3dhcChjb250ZW50LCByaHMuY29udGVudCk7Ci0gICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIH0KLQotCi0jaWZkZWYgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlPgotICAgICAgICBhbnkgJiBvcGVyYXRvcj0oY29uc3QgVmFsdWVUeXBlICYgcmhzKQotICAgICAgICB7Ci0gICAgICAgICAgICBhbnkocmhzKS5zd2FwKCp0aGlzKTsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotCi0gICAgICAgIGFueSAmIG9wZXJhdG9yPShhbnkgcmhzKQotICAgICAgICB7Ci0gICAgICAgICAgICBhbnkocmhzKS5zd2FwKCp0aGlzKTsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotCi0jZWxzZSAKLSAgICAgICAgYW55ICYgb3BlcmF0b3I9KGNvbnN0IGFueSYgcmhzKQotICAgICAgICB7Ci0gICAgICAgICAgICBhbnkocmhzKS5zd2FwKCp0aGlzKTsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIG1vdmUgYXNzaWduZW1lbnQKLSAgICAgICAgYW55ICYgb3BlcmF0b3I9KGFueSYmIHJocykgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmhzLnN3YXAoKnRoaXMpOwotICAgICAgICAgICAgYW55KCkuc3dhcChyaHMpOwotICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gUGVyZmVjdCBmb3J3YXJkaW5nIG9mIFZhbHVlVHlwZQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVmFsdWVUeXBlPgotICAgICAgICBhbnkgJiBvcGVyYXRvcj0oVmFsdWVUeXBlJiYgcmhzKQotICAgICAgICB7Ci0gICAgICAgICAgICBhbnkoc3RhdGljX2Nhc3Q8VmFsdWVUeXBlJiY+KHJocykpLnN3YXAoKnRoaXMpOwotICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICB9Ci0jZW5kaWYKLQotICAgIHB1YmxpYzogLy8gcXVlcmllcwotCi0gICAgICAgIGJvb2wgZW1wdHkoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gIWNvbnRlbnQ7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdCBzdGQ6OnR5cGVfaW5mbyAmIHR5cGUoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gY29udGVudCA/IGNvbnRlbnQtPnR5cGUoKSA6IHR5cGVpZCh2b2lkKTsKLSAgICAgICAgfQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX01FTUJFUl9URU1QTEFURV9GUklFTkRTCi0gICAgcHJpdmF0ZTogLy8gdHlwZXMKLSNlbHNlCi0gICAgcHVibGljOiAvLyB0eXBlcyAocHVibGljIHNvIGFueV9jYXN0IGNhbiBiZSBub24tZnJpZW5kKQotI2VuZGlmCi0KLSAgICAgICAgY2xhc3MgcGxhY2Vob2xkZXIKLSAgICAgICAgewotICAgICAgICBwdWJsaWM6IC8vIHN0cnVjdG9ycwotCi0gICAgICAgICAgICB2aXJ0dWFsIH5wbGFjZWhvbGRlcigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljOiAvLyBxdWVyaWVzCi0KLSAgICAgICAgICAgIHZpcnR1YWwgY29uc3Qgc3RkOjp0eXBlX2luZm8gJiB0eXBlKCkgY29uc3QgPSAwOwotCi0gICAgICAgICAgICB2aXJ0dWFsIHBsYWNlaG9sZGVyICogY2xvbmUoKSBjb25zdCA9IDA7Ci0KLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGU+Ci0gICAgICAgIGNsYXNzIGhvbGRlciA6IHB1YmxpYyBwbGFjZWhvbGRlcgotICAgICAgICB7Ci0gICAgICAgIHB1YmxpYzogLy8gc3RydWN0b3JzCi0KLSAgICAgICAgICAgIGhvbGRlcihjb25zdCBWYWx1ZVR5cGUgJiB2YWx1ZSkKLSAgICAgICAgICAgICAgOiBoZWxkKHZhbHVlKQotICAgICAgICAgICAgewotICAgICAgICAgICAgfQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0gICAgICAgICAgICBob2xkZXIoVmFsdWVUeXBlJiYgdmFsdWUpCi0gICAgICAgICAgICAgIDogaGVsZChzdGF0aWNfY2FzdDwgVmFsdWVUeXBlJiYgPih2YWx1ZSkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgcHVibGljOiAvLyBxdWVyaWVzCi0KLSAgICAgICAgICAgIHZpcnR1YWwgY29uc3Qgc3RkOjp0eXBlX2luZm8gJiB0eXBlKCkgY29uc3QKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHlwZWlkKFZhbHVlVHlwZSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZpcnR1YWwgcGxhY2Vob2xkZXIgKiBjbG9uZSgpIGNvbnN0Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBob2xkZXIoaGVsZCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljOiAvLyByZXByZXNlbnRhdGlvbgotCi0gICAgICAgICAgICBWYWx1ZVR5cGUgaGVsZDsKLQotICAgICAgICBwcml2YXRlOiAvLyBpbnRlbnRpb25hbGx5IGxlZnQgdW5pbXBsZW1lbnRlZAotICAgICAgICAgICAgaG9sZGVyICYgb3BlcmF0b3I9KGNvbnN0IGhvbGRlciAmKTsKLSAgICAgICAgfTsKLQotI2lmbmRlZiBORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVfRlJJRU5EUwotCi0gICAgcHJpdmF0ZTogLy8gcmVwcmVzZW50YXRpb24KLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGU+Ci0gICAgICAgIGZyaWVuZCBWYWx1ZVR5cGUgKiBhbnlfY2FzdChhbnkgKikgTkROQk9PU1RfTk9FWENFUFQ7Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlPgotICAgICAgICBmcmllbmQgVmFsdWVUeXBlICogdW5zYWZlX2FueV9jYXN0KGFueSAqKSBORE5CT09TVF9OT0VYQ0VQVDsKLQotI2Vsc2UKLQotICAgIHB1YmxpYzogLy8gcmVwcmVzZW50YXRpb24gKHB1YmxpYyBzbyBhbnlfY2FzdCBjYW4gYmUgbm9uLWZyaWVuZCkKLQotI2VuZGlmCi0KLSAgICAgICAgcGxhY2Vob2xkZXIgKiBjb250ZW50OwotCi0gICAgfTsKLSAKLSAgICBpbmxpbmUgdm9pZCBzd2FwKGFueSAmIGxocywgYW55ICYgcmhzKSBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgbGhzLnN3YXAocmhzKTsKLSAgICB9Ci0KLSAgICBjbGFzcyBiYWRfYW55X2Nhc3QgOiBwdWJsaWMgc3RkOjpiYWRfY2FzdAotICAgIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgY29uc3QgY2hhciAqIHdoYXQoKSBjb25zdCB0aHJvdygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAibmRuYm9vc3Q6OmJhZF9hbnlfY2FzdDogIgotICAgICAgICAgICAgICAgICAgICJmYWlsZWQgY29udmVyc2lvbiB1c2luZyBuZG5ib29zdDo6YW55X2Nhc3QiOwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHlwZT4KLSAgICBWYWx1ZVR5cGUgKiBhbnlfY2FzdChhbnkgKiBvcGVyYW5kKSBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIG9wZXJhbmQgJiYgCi0jaWZkZWYgTkROQk9PU1RfQVVYX0FOWV9UWVBFX0lEX05BTUUKLSAgICAgICAgICAgIHN0ZDo6c3RyY21wKG9wZXJhbmQtPnR5cGUoKS5uYW1lKCksIHR5cGVpZChWYWx1ZVR5cGUpLm5hbWUoKSkgPT0gMAotI2Vsc2UKLSAgICAgICAgICAgIG9wZXJhbmQtPnR5cGUoKSA9PSB0eXBlaWQoVmFsdWVUeXBlKQotI2VuZGlmCi0gICAgICAgICAgICA/ICZzdGF0aWNfY2FzdDxhbnk6OmhvbGRlcjxWYWx1ZVR5cGU+ICo+KG9wZXJhbmQtPmNvbnRlbnQpLT5oZWxkCi0gICAgICAgICAgICA6IDA7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlPgotICAgIGlubGluZSBjb25zdCBWYWx1ZVR5cGUgKiBhbnlfY2FzdChjb25zdCBhbnkgKiBvcGVyYW5kKSBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIGFueV9jYXN0PFZhbHVlVHlwZT4oY29uc3RfY2FzdDxhbnkgKj4ob3BlcmFuZCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHlwZT4KLSAgICBWYWx1ZVR5cGUgYW55X2Nhc3QoYW55ICYgb3BlcmFuZCkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByZW1vdmVfcmVmZXJlbmNlPFZhbHVlVHlwZT46OnR5cGUgbm9ucmVmOwotCi0jaWZkZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotICAgICAgICAvLyBJZiAnbm9ucmVmJyBpcyBzdGlsbCByZWZlcmVuY2UgdHlwZSwgaXQgbWVhbnMgdGhlIHVzZXIgaGFzIG5vdAotICAgICAgICAvLyBzcGVjaWFsaXplZCAncmVtb3ZlX3JlZmVyZW5jZScuCi0KLSAgICAgICAgLy8gUGxlYXNlIHVzZSBORE5CT09TVF9CUk9LRU5fQ09NUElMRVJfVFlQRV9UUkFJVFNfU1BFQ0lBTElaQVRJT04gbWFjcm8KLSAgICAgICAgLy8gdG8gZ2VuZXJhdGUgc3BlY2lhbGl6YXRpb24gb2YgcmVtb3ZlX3JlZmVyZW5jZSBmb3IgeW91ciBjbGFzcwotICAgICAgICAvLyBTZWUgdHlwZSB0cmFpdHMgbGlicmFyeSBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzCi0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoIWlzX3JlZmVyZW5jZTxub25yZWY+Ojp2YWx1ZSk7Ci0jZW5kaWYKLQotICAgICAgICBub25yZWYgKiByZXN1bHQgPSBhbnlfY2FzdDxub25yZWY+KCZvcGVyYW5kKTsKLSAgICAgICAgaWYoIXJlc3VsdCkKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oYmFkX2FueV9jYXN0KCkpOwotICAgICAgICByZXR1cm4gKnJlc3VsdDsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGU+Ci0gICAgaW5saW5lIFZhbHVlVHlwZSBhbnlfY2FzdChjb25zdCBhbnkgJiBvcGVyYW5kKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJlbW92ZV9yZWZlcmVuY2U8VmFsdWVUeXBlPjo6dHlwZSBub25yZWY7Ci0KLSNpZmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0gICAgICAgIC8vIFRoZSBjb21tZW50IGluIHRoZSBhYm92ZSB2ZXJzaW9uIG9mICdhbnlfY2FzdCcgZXhwbGFpbnMgd2hlbiB0aGlzCi0gICAgICAgIC8vIGFzc2VydCBpcyBmaXJlZCBhbmQgd2hhdCB0byBkby4KLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCghaXNfcmVmZXJlbmNlPG5vbnJlZj46OnZhbHVlKTsKLSNlbmRpZgotCi0gICAgICAgIHJldHVybiBhbnlfY2FzdDxjb25zdCBub25yZWYgJj4oY29uc3RfY2FzdDxhbnkgJj4ob3BlcmFuZCkpOwotICAgIH0KLQotICAgIC8vIE5vdGU6IFRoZSAidW5zYWZlIiB2ZXJzaW9ucyBvZiBhbnlfY2FzdCBhcmUgbm90IHBhcnQgb2YgdGhlCi0gICAgLy8gcHVibGljIGludGVyZmFjZSBhbmQgbWF5IGJlIHJlbW92ZWQgYXQgYW55IHRpbWUuIFRoZXkgYXJlCi0gICAgLy8gcmVxdWlyZWQgd2hlcmUgd2Uga25vdyB3aGF0IHR5cGUgaXMgc3RvcmVkIGluIHRoZSBhbnkgYW5kIGNhbid0Ci0gICAgLy8gdXNlIHR5cGVpZCgpIGNvbXBhcmlzb24sIGUuZy4sIHdoZW4gb3VyIHR5cGVzIG1heSB0cmF2ZWwgYWNyb3NzCi0gICAgLy8gZGlmZmVyZW50IHNoYXJlZCBsaWJyYXJpZXMuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlPgotICAgIGlubGluZSBWYWx1ZVR5cGUgKiB1bnNhZmVfYW55X2Nhc3QoYW55ICogb3BlcmFuZCkgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiAmc3RhdGljX2Nhc3Q8YW55Ojpob2xkZXI8VmFsdWVUeXBlPiAqPihvcGVyYW5kLT5jb250ZW50KS0+aGVsZDsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGU+Ci0gICAgaW5saW5lIGNvbnN0IFZhbHVlVHlwZSAqIHVuc2FmZV9hbnlfY2FzdChjb25zdCBhbnkgKiBvcGVyYW5kKSBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIHVuc2FmZV9hbnlfY2FzdDxWYWx1ZVR5cGU+KGNvbnN0X2Nhc3Q8YW55ICo+KG9wZXJhbmQpKTsKLSAgICB9Ci19Ci0KLS8vIENvcHlyaWdodCBLZXZsaW4gSGVubmV5LCAyMDAwLCAyMDAxLCAyMDAyLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2FycmF5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvYXJyYXkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMTdmY2JjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvYXJyYXkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDQ2ICswLDAgQEAKLS8qIFRoZSBmb2xsb3dpbmcgY29kZSBkZWNsYXJlcyBjbGFzcyBhcnJheSwKLSAqIGFuIFNUTCBjb250YWluZXIgKGFzIHdyYXBwZXIpIGZvciBhcnJheXMgb2YgY29uc3RhbnQgc2l6ZS4KLSAqCi0gKiBTZWUKLSAqICAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9hcnJheS8KLSAqIGZvciBkb2N1bWVudGF0aW9uLgotICoKLSAqIFRoZSBvcmlnaW5hbCBhdXRob3Igc2l0ZSBpcyBhdDogaHR0cDovL3d3dy5qb3N1dHRpcy5jb20vCi0gKgotICogKEMpIENvcHlyaWdodCBOaWNvbGFpIE0uIEpvc3V0dGlzIDIwMDEuCi0gKgotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0gKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqIDE0IEFwciAyMDEyIC0gKG10YykgQWRkZWQgc3VwcG9ydCBmb3IgbmRuYm9vc3Q6Omhhc2gKLSAqIDI4IERlYyAyMDEwIC0gKG10YykgQWRkZWQgY2JlZ2luIGFuZCBjZW5kIChhbmQgY3JiZWdpbiBhbmQgY3JlbmQpIGZvciBDKytPeCBjb21wYXRpYmlsaXR5LgotICogMTAgTWFyIDIwMTAgLSAobXRjKSBmaWxsIG1ldGhvZCBhZGRlZCwgbWF0Y2hpbmcgcmVzb2x1dGlvbiBvZiB0aGUgc3RhbmRhcmQgbGlicmFyeSB3b3JraW5nIGdyb3VwLgotICogICAgICBTZWUgPGh0dHA6Ly93d3cub3Blbi1zdGQub3JnL2p0YzEvc2MyMi93ZzIxL2RvY3MvbHdnLWRlZmVjdHMuaHRtbCM3NzY+IG9yIFRyYWMgaXNzdWUgIzMxNjgKLSAqICAgICAgRXZlbnR1YWxseSwgd2Ugc2hvdWxkIHJlbW92ZSAiYXNzaWduIiB3aGljaCBpcyBub3cgYSBzeW5vbnltIGZvciAiZmlsbCIgKE1hcnNoYWxsIENsb3cpCi0gKiAxMCBNYXIgMjAxMCAtIGFkZGVkIHdvcmthcm91bmQgZm9yIFNVTkNDIGFuZCAhU1RMUG9ydCBbdHJhYyAjMzg5M10gKE1hcnNoYWxsIENsb3cpCi0gKiAyOSBKYW4gMjAwNCAtIGNfYXJyYXkoKSBhZGRlZCwgTkROQk9PU1RfTk9fUFJJVkFURV9JTl9BR0dSRUdBVEUgcmVtb3ZlZCAoTmljbyBKb3N1dHRpcykKLSAqIDIzIEF1ZyAyMDAyIC0gZml4IGZvciBOb24tTVNWQyBjb21waWxlcnMgY29tYmluZWQgd2l0aCBNU1ZDIGxpYnJhcmllcy4KLSAqIDA1IEF1ZyAyMDAxIC0gbWlub3IgdXBkYXRlIChOaWNvIEpvc3V0dGlzKQotICogMjAgSmFuIDIwMDEgLSBTVExwb3J0IGZpeCAoQmVtYW4gRGF3ZXMpCi0gKiAyOSBTZXAgMjAwMCAtIEluaXRpYWwgUmV2aXNpb24gKE5pY28gSm9zdXR0aXMpCi0gKgotICogSmFuIDI5LCAyMDA0Ci0gKi8KLSNpZm5kZWYgTkROQk9PU1RfQVJSQVlfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0FSUkFZX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA+PSAxNDAwKSAgCi0jIHByYWdtYSB3YXJuaW5nKHB1c2gpICAKLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0OTk2KSAvLyAnc3RkOjplcXVhbCc6IEZ1bmN0aW9uIGNhbGwgd2l0aCBwYXJhbWV0ZXJzIHRoYXQgbWF5IGJlIHVuc2FmZQotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ1MTApIC8vIG5kbmJvb3N0OjphcnJheTxULE4+JyA6IGRlZmF1bHQgY29uc3RydWN0b3IgY291bGQgbm90IGJlIGdlbmVyYXRlZCAKLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0NjEwKSAvLyB3YXJuaW5nIEM0NjEwOiBjbGFzcyAnbmRuYm9vc3Q6OmFycmF5PFQsTj4nIGNhbiBuZXZlciBiZSBpbnN0YW50aWF0ZWQgLSB1c2VyIGRlZmluZWQgY29uc3RydWN0b3IgcmVxdWlyZWQgCi0jZW5kaWYKLQotI2luY2x1ZGUgPGNzdGRkZWY+Ci0jaW5jbHVkZSA8c3RkZXhjZXB0PgotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3dhcC5ocHA+Ci0KLS8vIEhhbmRsZXMgYnJva2VuIHN0YW5kYXJkIGxpYnJhcmllcyBiZXR0ZXIgdGhhbiA8aXRlcmF0b3I+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL2l0ZXJhdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90aHJvd19leGNlcHRpb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uYWwvaGFzaF9md2QuaHBwPgotI2luY2x1ZGUgPGFsZ29yaXRobT4KLQotLy8gRklYRVMgZm9yIGJyb2tlbiBjb21waWxlcnMKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBULCBzdGQ6OnNpemVfdCBOPgotICAgIGNsYXNzIGFycmF5IHsKLSAgICAgIHB1YmxpYzoKLSAgICAgICAgVCBlbGVtc1tOXTsgICAgLy8gZml4ZWQtc2l6ZSBhcnJheSBvZiBlbGVtZW50cyBvZiB0eXBlIFQKLQotICAgICAgcHVibGljOgotICAgICAgICAvLyB0eXBlIGRlZmluaXRpb25zCi0gICAgICAgIHR5cGVkZWYgVCAgICAgICAgICAgICAgdmFsdWVfdHlwZTsKLSAgICAgICAgdHlwZWRlZiBUKiAgICAgICAgICAgICBpdGVyYXRvcjsKLSAgICAgICAgdHlwZWRlZiBjb25zdCBUKiAgICAgICBjb25zdF9pdGVyYXRvcjsKLSAgICAgICAgdHlwZWRlZiBUJiAgICAgICAgICAgICByZWZlcmVuY2U7Ci0gICAgICAgIHR5cGVkZWYgY29uc3QgVCYgICAgICAgY29uc3RfcmVmZXJlbmNlOwotICAgICAgICB0eXBlZGVmIHN0ZDo6c2l6ZV90ICAgIHNpemVfdHlwZTsKLSAgICAgICAgdHlwZWRlZiBzdGQ6OnB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7Ci0KLSAgICAgICAgLy8gaXRlcmF0b3Igc3VwcG9ydAotICAgICAgICBpdGVyYXRvciAgICAgICAgYmVnaW4oKSAgICAgICB7IHJldHVybiBlbGVtczsgfQotICAgICAgICBjb25zdF9pdGVyYXRvciAgYmVnaW4oKSBjb25zdCB7IHJldHVybiBlbGVtczsgfQotICAgICAgICBjb25zdF9pdGVyYXRvciBjYmVnaW4oKSBjb25zdCB7IHJldHVybiBlbGVtczsgfQotICAgICAgICAKLSAgICAgICAgaXRlcmF0b3IgICAgICAgIGVuZCgpICAgICAgIHsgcmV0dXJuIGVsZW1zK047IH0KLSAgICAgICAgY29uc3RfaXRlcmF0b3IgIGVuZCgpIGNvbnN0IHsgcmV0dXJuIGVsZW1zK047IH0KLSAgICAgICAgY29uc3RfaXRlcmF0b3IgY2VuZCgpIGNvbnN0IHsgcmV0dXJuIGVsZW1zK047IH0KLQotICAgICAgICAvLyByZXZlcnNlIGl0ZXJhdG9yIHN1cHBvcnQKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSAmJiAhZGVmaW5lZChORE5CT09TVF9NU1ZDX1NURF9JVEVSQVRPUikgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fU1REX0lURVJBVE9SX1RSQUlUUykKLSAgICAgICAgdHlwZWRlZiBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8aXRlcmF0b3I+IHJldmVyc2VfaXRlcmF0b3I7Ci0gICAgICAgIHR5cGVkZWYgc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPGNvbnN0X2l0ZXJhdG9yPiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yOwotI2VsaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID09IDEzMDApICYmIGRlZmluZWQoTkROQk9PU1RfRElOS1VNV0FSRV9TVERMSUIpICYmIChORE5CT09TVF9ESU5LVU1XQVJFX1NURExJQiA9PSAzMTApCi0gICAgICAgIC8vIHdvcmthcm91bmQgZm9yIGJyb2tlbiByZXZlcnNlX2l0ZXJhdG9yIGluIFZDNwotICAgICAgICB0eXBlZGVmIHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxzdGQ6Ol9QdHJpdDx2YWx1ZV90eXBlLCBkaWZmZXJlbmNlX3R5cGUsIGl0ZXJhdG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2UsIGl0ZXJhdG9yLCByZWZlcmVuY2U+ID4gcmV2ZXJzZV9pdGVyYXRvcjsKLSAgICAgICAgdHlwZWRlZiBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8c3RkOjpfUHRyaXQ8dmFsdWVfdHlwZSwgZGlmZmVyZW5jZV90eXBlLCBjb25zdF9pdGVyYXRvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RfcmVmZXJlbmNlLCBpdGVyYXRvciwgcmVmZXJlbmNlPiA+IGNvbnN0X3JldmVyc2VfaXRlcmF0b3I7Ci0jZWxpZiBkZWZpbmVkKF9SV1NURF9OT19DTEFTU19QQVJUSUFMX1NQRUMpIAotICAgICAgICB0eXBlZGVmIHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxpdGVyYXRvciwgc3RkOjpyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZywgCi0gICAgICAgICAgICAgIHZhbHVlX3R5cGUsIHJlZmVyZW5jZSwgaXRlcmF0b3IsIGRpZmZlcmVuY2VfdHlwZT4gcmV2ZXJzZV9pdGVyYXRvcjsgCi0gICAgICAgIHR5cGVkZWYgc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPGNvbnN0X2l0ZXJhdG9yLCBzdGQ6OnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnLAotICAgICAgICAgICAgICB2YWx1ZV90eXBlLCBjb25zdF9yZWZlcmVuY2UsIGNvbnN0X2l0ZXJhdG9yLCBkaWZmZXJlbmNlX3R5cGU+IGNvbnN0X3JldmVyc2VfaXRlcmF0b3I7Ci0jZWxzZQotICAgICAgICAvLyB3b3JrYXJvdW5kIGZvciBicm9rZW4gcmV2ZXJzZV9pdGVyYXRvciBpbXBsZW1lbnRhdGlvbnMKLSAgICAgICAgdHlwZWRlZiBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8aXRlcmF0b3IsVD4gcmV2ZXJzZV9pdGVyYXRvcjsKLSAgICAgICAgdHlwZWRlZiBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8Y29uc3RfaXRlcmF0b3IsVD4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcjsKLSNlbmRpZgotCi0gICAgICAgIHJldmVyc2VfaXRlcmF0b3IgcmJlZ2luKCkgeyByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihlbmQoKSk7IH0KLSAgICAgICAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciByYmVnaW4oKSBjb25zdCB7Ci0gICAgICAgICAgICByZXR1cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcihlbmQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciBjcmJlZ2luKCkgY29uc3QgewotICAgICAgICAgICAgcmV0dXJuIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IoZW5kKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV2ZXJzZV9pdGVyYXRvciByZW5kKCkgeyByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihiZWdpbigpKTsgfQotICAgICAgICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIHJlbmQoKSBjb25zdCB7Ci0gICAgICAgICAgICByZXR1cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcihiZWdpbigpKTsKLSAgICAgICAgfQotICAgICAgICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIGNyZW5kKCkgY29uc3QgewotICAgICAgICAgICAgcmV0dXJuIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBvcGVyYXRvcltdCi0gICAgICAgIHJlZmVyZW5jZSBvcGVyYXRvcltdKHNpemVfdHlwZSBpKSAKLSAgICAgICAgeyAKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVF9NU0coIGkgPCBOLCAib3V0IG9mIHJhbmdlIiApOwotICAgICAgICAgICAgcmV0dXJuIGVsZW1zW2ldOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBjb25zdF9yZWZlcmVuY2Ugb3BlcmF0b3JbXShzaXplX3R5cGUgaSkgY29uc3QgCi0gICAgICAgIHsgICAgIAotICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUX01TRyggaSA8IE4sICJvdXQgb2YgcmFuZ2UiICk7Ci0gICAgICAgICAgICByZXR1cm4gZWxlbXNbaV07IAotICAgICAgICB9Ci0KLSAgICAgICAgLy8gYXQoKSB3aXRoIHJhbmdlIGNoZWNrCi0gICAgICAgIHJlZmVyZW5jZSBhdChzaXplX3R5cGUgaSkgeyByYW5nZWNoZWNrKGkpOyByZXR1cm4gZWxlbXNbaV07IH0KLSAgICAgICAgY29uc3RfcmVmZXJlbmNlIGF0KHNpemVfdHlwZSBpKSBjb25zdCB7IHJhbmdlY2hlY2soaSk7IHJldHVybiBlbGVtc1tpXTsgfQotICAgIAotICAgICAgICAvLyBmcm9udCgpIGFuZCBiYWNrKCkKLSAgICAgICAgcmVmZXJlbmNlIGZyb250KCkgCi0gICAgICAgIHsgCi0gICAgICAgICAgICByZXR1cm4gZWxlbXNbMF07IAotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBjb25zdF9yZWZlcmVuY2UgZnJvbnQoKSBjb25zdCAKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVsZW1zWzBdOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICByZWZlcmVuY2UgYmFjaygpIAotICAgICAgICB7IAotICAgICAgICAgICAgcmV0dXJuIGVsZW1zW04tMV07IAotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBjb25zdF9yZWZlcmVuY2UgYmFjaygpIGNvbnN0IAotICAgICAgICB7IAotICAgICAgICAgICAgcmV0dXJuIGVsZW1zW04tMV07IAotICAgICAgICB9Ci0KLSAgICAgICAgLy8gc2l6ZSBpcyBjb25zdGFudAotICAgICAgICBzdGF0aWMgc2l6ZV90eXBlIHNpemUoKSB7IHJldHVybiBOOyB9Ci0gICAgICAgIHN0YXRpYyBib29sIGVtcHR5KCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAgICAgc3RhdGljIHNpemVfdHlwZSBtYXhfc2l6ZSgpIHsgcmV0dXJuIE47IH0KLSAgICAgICAgZW51bSB7IHN0YXRpY19zaXplID0gTiB9OwotCi0gICAgICAgIC8vIHN3YXAgKG5vdGU6IGxpbmVhciBjb21wbGV4aXR5KQotICAgICAgICB2b2lkIHN3YXAgKGFycmF5PFQsTj4mIHkpIHsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90eXBlIGkgPSAwOyBpIDwgTjsgKytpKQotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojpzd2FwKGVsZW1zW2ldLHkuZWxlbXNbaV0pOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gZGlyZWN0IGFjY2VzcyB0byBkYXRhIChyZWFkLW9ubHkpCi0gICAgICAgIGNvbnN0IFQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBlbGVtczsgfQotICAgICAgICBUKiBkYXRhKCkgeyByZXR1cm4gZWxlbXM7IH0KLQotICAgICAgICAvLyB1c2UgYXJyYXkgYXMgQyBhcnJheSAoZGlyZWN0IHJlYWQvd3JpdGUgYWNjZXNzIHRvIGRhdGEpCi0gICAgICAgIFQqIGNfYXJyYXkoKSB7IHJldHVybiBlbGVtczsgfQotCi0gICAgICAgIC8vIGFzc2lnbm1lbnQgd2l0aCB0eXBlIGNvbnZlcnNpb24KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQyPgotICAgICAgICBhcnJheTxULE4+JiBvcGVyYXRvcj0gKGNvbnN0IGFycmF5PFQyLE4+JiByaHMpIHsKLSAgICAgICAgICAgIHN0ZDo6Y29weShyaHMuYmVnaW4oKSxyaHMuZW5kKCksIGJlZ2luKCkpOwotICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gYXNzaWduIG9uZSB2YWx1ZSB0byBhbGwgZWxlbWVudHMKLSAgICAgICAgdm9pZCBhc3NpZ24gKGNvbnN0IFQmIHZhbHVlKSB7IGZpbGwgKCB2YWx1ZSApOyB9ICAgIC8vIEEgc3lub255bSBmb3IgZmlsbAotICAgICAgICB2b2lkIGZpbGwgICAoY29uc3QgVCYgdmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6ZmlsbF9uKGJlZ2luKCksc2l6ZSgpLHZhbHVlKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIGNoZWNrIHJhbmdlIChtYXkgYmUgcHJpdmF0ZSBiZWNhdXNlIGl0IGlzIHN0YXRpYykKLSAgICAgICAgc3RhdGljIHZvaWQgcmFuZ2VjaGVjayAoc2l6ZV90eXBlIGkpIHsKLSAgICAgICAgICAgIGlmIChpID49IHNpemUoKSkgewotICAgICAgICAgICAgICAgIHN0ZDo6b3V0X29mX3JhbmdlIGUoImFycmF5PD46IGluZGV4IG91dCBvZiByYW5nZSIpOwotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgIH07Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotICAgIHRlbXBsYXRlPCBjbGFzcyBUID4KLSAgICBjbGFzcyBhcnJheTwgVCwgMCA+IHsKLQotICAgICAgcHVibGljOgotICAgICAgICAvLyB0eXBlIGRlZmluaXRpb25zCi0gICAgICAgIHR5cGVkZWYgVCAgICAgICAgICAgICAgdmFsdWVfdHlwZTsKLSAgICAgICAgdHlwZWRlZiBUKiAgICAgICAgICAgICBpdGVyYXRvcjsKLSAgICAgICAgdHlwZWRlZiBjb25zdCBUKiAgICAgICBjb25zdF9pdGVyYXRvcjsKLSAgICAgICAgdHlwZWRlZiBUJiAgICAgICAgICAgICByZWZlcmVuY2U7Ci0gICAgICAgIHR5cGVkZWYgY29uc3QgVCYgICAgICAgY29uc3RfcmVmZXJlbmNlOwotICAgICAgICB0eXBlZGVmIHN0ZDo6c2l6ZV90ICAgIHNpemVfdHlwZTsKLSAgICAgICAgdHlwZWRlZiBzdGQ6OnB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7Ci0KLSAgICAgICAgLy8gaXRlcmF0b3Igc3VwcG9ydAotICAgICAgICBpdGVyYXRvciAgICAgICAgYmVnaW4oKSAgICAgICB7IHJldHVybiAgICAgICBpdGVyYXRvciggcmVpbnRlcnByZXRfY2FzdDwgICAgICAgVCAqID4oIHRoaXMgKSApOyB9Ci0gICAgICAgIGNvbnN0X2l0ZXJhdG9yICBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKCByZWludGVycHJldF9jYXN0PCBjb25zdCBUICogPiggdGhpcyApICk7IH0KLSAgICAgICAgY29uc3RfaXRlcmF0b3IgY2JlZ2luKCkgY29uc3QgeyByZXR1cm4gY29uc3RfaXRlcmF0b3IoIHJlaW50ZXJwcmV0X2Nhc3Q8IGNvbnN0IFQgKiA+KCB0aGlzICkgKTsgfQotCi0gICAgICAgIGl0ZXJhdG9yICAgICAgICBlbmQoKSAgICAgICB7IHJldHVybiAgYmVnaW4oKTsgfQotICAgICAgICBjb25zdF9pdGVyYXRvciAgZW5kKCkgY29uc3QgeyByZXR1cm4gIGJlZ2luKCk7IH0KLSAgICAgICAgY29uc3RfaXRlcmF0b3IgY2VuZCgpIGNvbnN0IHsgcmV0dXJuIGNiZWdpbigpOyB9Ci0KLSAgICAgICAgLy8gcmV2ZXJzZSBpdGVyYXRvciBzdXBwb3J0Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgJiYgIWRlZmluZWQoTkROQk9PU1RfTVNWQ19TVERfSVRFUkFUT1IpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9JVEVSQVRPUl9UUkFJVFMpCi0gICAgICAgIHR5cGVkZWYgc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPGl0ZXJhdG9yPiByZXZlcnNlX2l0ZXJhdG9yOwotICAgICAgICB0eXBlZGVmIHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxjb25zdF9pdGVyYXRvcj4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcjsKLSNlbGlmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA9PSAxMzAwKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0RJTktVTVdBUkVfU1RETElCKSAmJiAoTkROQk9PU1RfRElOS1VNV0FSRV9TVERMSUIgPT0gMzEwKQotICAgICAgICAvLyB3b3JrYXJvdW5kIGZvciBicm9rZW4gcmV2ZXJzZV9pdGVyYXRvciBpbiBWQzcKLSAgICAgICAgdHlwZWRlZiBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8c3RkOjpfUHRyaXQ8dmFsdWVfdHlwZSwgZGlmZmVyZW5jZV90eXBlLCBpdGVyYXRvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlLCBpdGVyYXRvciwgcmVmZXJlbmNlPiA+IHJldmVyc2VfaXRlcmF0b3I7Ci0gICAgICAgIHR5cGVkZWYgc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPHN0ZDo6X1B0cml0PHZhbHVlX3R5cGUsIGRpZmZlcmVuY2VfdHlwZSwgY29uc3RfaXRlcmF0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X3JlZmVyZW5jZSwgaXRlcmF0b3IsIHJlZmVyZW5jZT4gPiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yOwotI2VsaWYgZGVmaW5lZChfUldTVERfTk9fQ0xBU1NfUEFSVElBTF9TUEVDKSAKLSAgICAgICAgdHlwZWRlZiBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8aXRlcmF0b3IsIHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcsIAotICAgICAgICAgICAgICB2YWx1ZV90eXBlLCByZWZlcmVuY2UsIGl0ZXJhdG9yLCBkaWZmZXJlbmNlX3R5cGU+IHJldmVyc2VfaXRlcmF0b3I7IAotICAgICAgICB0eXBlZGVmIHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxjb25zdF9pdGVyYXRvciwgc3RkOjpyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZywKLSAgICAgICAgICAgICAgdmFsdWVfdHlwZSwgY29uc3RfcmVmZXJlbmNlLCBjb25zdF9pdGVyYXRvciwgZGlmZmVyZW5jZV90eXBlPiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yOwotI2Vsc2UKLSAgICAgICAgLy8gd29ya2Fyb3VuZCBmb3IgYnJva2VuIHJldmVyc2VfaXRlcmF0b3IgaW1wbGVtZW50YXRpb25zCi0gICAgICAgIHR5cGVkZWYgc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPGl0ZXJhdG9yLFQ+IHJldmVyc2VfaXRlcmF0b3I7Ci0gICAgICAgIHR5cGVkZWYgc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPGNvbnN0X2l0ZXJhdG9yLFQ+IGNvbnN0X3JldmVyc2VfaXRlcmF0b3I7Ci0jZW5kaWYKLQotICAgICAgICByZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoZW5kKCkpOyB9Ci0gICAgICAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgcmJlZ2luKCkgY29uc3QgewotICAgICAgICAgICAgcmV0dXJuIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IoZW5kKCkpOwotICAgICAgICB9Ci0gICAgICAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgY3JiZWdpbigpIGNvbnN0IHsKLSAgICAgICAgICAgIHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldmVyc2VfaXRlcmF0b3IgcmVuZCgpIHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7IH0KLSAgICAgICAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciByZW5kKCkgY29uc3QgewotICAgICAgICAgICAgcmV0dXJuIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7Ci0gICAgICAgIH0KLSAgICAgICAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciBjcmVuZCgpIGNvbnN0IHsKLSAgICAgICAgICAgIHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKGJlZ2luKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gb3BlcmF0b3JbXQotICAgICAgICByZWZlcmVuY2Ugb3BlcmF0b3JbXShzaXplX3R5cGUgLyppKi8pCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmYWlsZWRfcmFuZ2VjaGVjaygpOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3RfcmVmZXJlbmNlIG9wZXJhdG9yW10oc2l6ZV90eXBlIC8qaSovKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZmFpbGVkX3JhbmdlY2hlY2soKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIGF0KCkgd2l0aCByYW5nZSBjaGVjawotICAgICAgICByZWZlcmVuY2UgYXQoc2l6ZV90eXBlIC8qaSovKSAgICAgICAgICAgICAgIHsgICByZXR1cm4gZmFpbGVkX3JhbmdlY2hlY2soKTsgfQotICAgICAgICBjb25zdF9yZWZlcmVuY2UgYXQoc2l6ZV90eXBlIC8qaSovKSBjb25zdCAgIHsgICByZXR1cm4gZmFpbGVkX3JhbmdlY2hlY2soKTsgfQotCi0gICAgICAgIC8vIGZyb250KCkgYW5kIGJhY2soKQotICAgICAgICByZWZlcmVuY2UgZnJvbnQoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZmFpbGVkX3JhbmdlY2hlY2soKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0X3JlZmVyZW5jZSBmcm9udCgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmYWlsZWRfcmFuZ2VjaGVjaygpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmVmZXJlbmNlIGJhY2soKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZmFpbGVkX3JhbmdlY2hlY2soKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0X3JlZmVyZW5jZSBiYWNrKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZhaWxlZF9yYW5nZWNoZWNrKCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBzaXplIGlzIGNvbnN0YW50Ci0gICAgICAgIHN0YXRpYyBzaXplX3R5cGUgc2l6ZSgpIHsgcmV0dXJuIDA7IH0KLSAgICAgICAgc3RhdGljIGJvb2wgZW1wdHkoKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIHN0YXRpYyBzaXplX3R5cGUgbWF4X3NpemUoKSB7IHJldHVybiAwOyB9Ci0gICAgICAgIGVudW0geyBzdGF0aWNfc2l6ZSA9IDAgfTsKLQotICAgICAgICB2b2lkIHN3YXAgKGFycmF5PFQsMD4mIC8qeSovKSB7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBkaXJlY3QgYWNjZXNzIHRvIGRhdGEgKHJlYWQtb25seSkKLSAgICAgICAgY29uc3QgVCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLSAgICAgICAgVCogZGF0YSgpIHsgcmV0dXJuIDA7IH0KLQotICAgICAgICAvLyB1c2UgYXJyYXkgYXMgQyBhcnJheSAoZGlyZWN0IHJlYWQvd3JpdGUgYWNjZXNzIHRvIGRhdGEpCi0gICAgICAgIFQqIGNfYXJyYXkoKSB7IHJldHVybiAwOyB9Ci0KLSAgICAgICAgLy8gYXNzaWdubWVudCB3aXRoIHR5cGUgY29udmVyc2lvbgotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDI+Ci0gICAgICAgIGFycmF5PFQsMD4mIG9wZXJhdG9yPSAoY29uc3QgYXJyYXk8VDIsMD4mICkgewotICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gYXNzaWduIG9uZSB2YWx1ZSB0byBhbGwgZWxlbWVudHMKLSAgICAgICAgdm9pZCBhc3NpZ24gKGNvbnN0IFQmIHZhbHVlKSB7IGZpbGwgKCB2YWx1ZSApOyB9Ci0gICAgICAgIHZvaWQgZmlsbCAgIChjb25zdCBUJiApIHt9Ci0gICAgICAgIAotICAgICAgICAvLyBjaGVjayByYW5nZSAobWF5IGJlIHByaXZhdGUgYmVjYXVzZSBpdCBpcyBzdGF0aWMpCi0gICAgICAgIHN0YXRpYyByZWZlcmVuY2UgZmFpbGVkX3JhbmdlY2hlY2sgKCkgewotICAgICAgICAgICAgICAgIHN0ZDo6b3V0X29mX3JhbmdlIGUoImF0dGVtcHQgdG8gYWNjZXNzIGVsZW1lbnQgb2YgYW4gZW1wdHkgYXJyYXkiKTsKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGUpOwotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fRVhDRVBUSU9OUykgfHwgKCFkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmICFkZWZpbmVkKF9fUEFUSFNDQUxFX18pKQotICAgICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byByZXR1cm4gc29tZXRoaW5nIGhlcmUgdG8ga2VlcAotICAgICAgICAgICAgICAgIC8vIHNvbWUgY29tcGlsZXJzIGhhcHB5OiBob3dldmVyIHdlIHdpbGwgbmV2ZXIKLSAgICAgICAgICAgICAgICAvLyBhY3R1YWxseSBnZXQgaGVyZS4uLi4KLSAgICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgIHN0YXRpYyBUIHBsYWNlaG9sZGVyOwotICAgICAgICAgICAgICAgIHJldHVybiBwbGFjZWhvbGRlcjsKLSNlbmRpZgotICAgICAgICAgICAgfQotICAgIH07Ci0jZW5kaWYKLQotICAgIC8vIGNvbXBhcmlzb25zCi0gICAgdGVtcGxhdGU8Y2xhc3MgVCwgc3RkOjpzaXplX3QgTj4KLSAgICBib29sIG9wZXJhdG9yPT0gKGNvbnN0IGFycmF5PFQsTj4mIHgsIGNvbnN0IGFycmF5PFQsTj4mIHkpIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6ZXF1YWwoeC5iZWdpbigpLCB4LmVuZCgpLCB5LmJlZ2luKCkpOwotICAgIH0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBULCBzdGQ6OnNpemVfdCBOPgotICAgIGJvb2wgb3BlcmF0b3I8IChjb25zdCBhcnJheTxULE4+JiB4LCBjb25zdCBhcnJheTxULE4+JiB5KSB7Ci0gICAgICAgIHJldHVybiBzdGQ6OmxleGljb2dyYXBoaWNhbF9jb21wYXJlKHguYmVnaW4oKSx4LmVuZCgpLHkuYmVnaW4oKSx5LmVuZCgpKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8Y2xhc3MgVCwgc3RkOjpzaXplX3QgTj4KLSAgICBib29sIG9wZXJhdG9yIT0gKGNvbnN0IGFycmF5PFQsTj4mIHgsIGNvbnN0IGFycmF5PFQsTj4mIHkpIHsKLSAgICAgICAgcmV0dXJuICEoeD09eSk7Ci0gICAgfQotICAgIHRlbXBsYXRlPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4+Ci0gICAgYm9vbCBvcGVyYXRvcj4gKGNvbnN0IGFycmF5PFQsTj4mIHgsIGNvbnN0IGFycmF5PFQsTj4mIHkpIHsKLSAgICAgICAgcmV0dXJuIHk8eDsKLSAgICB9Ci0gICAgdGVtcGxhdGU8Y2xhc3MgVCwgc3RkOjpzaXplX3QgTj4KLSAgICBib29sIG9wZXJhdG9yPD0gKGNvbnN0IGFycmF5PFQsTj4mIHgsIGNvbnN0IGFycmF5PFQsTj4mIHkpIHsKLSAgICAgICAgcmV0dXJuICEoeTx4KTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8Y2xhc3MgVCwgc3RkOjpzaXplX3QgTj4KLSAgICBib29sIG9wZXJhdG9yPj0gKGNvbnN0IGFycmF5PFQsTj4mIHgsIGNvbnN0IGFycmF5PFQsTj4mIHkpIHsKLSAgICAgICAgcmV0dXJuICEoeDx5KTsKLSAgICB9Ci0KLSAgICAvLyBnbG9iYWwgc3dhcCgpCi0gICAgdGVtcGxhdGU8Y2xhc3MgVCwgc3RkOjpzaXplX3QgTj4KLSAgICBpbmxpbmUgdm9pZCBzd2FwIChhcnJheTxULE4+JiB4LCBhcnJheTxULE4+JiB5KSB7Ci0gICAgICAgIHguc3dhcCh5KTsKLSAgICB9Ci0KLSNpZiBkZWZpbmVkKF9fU1VOUFJPX0NDKQotLy8gIFRyYWMgdGlja2V0ICM0NzU3OyB0aGUgU3VuIFNvbGFyaXMgY29tcGlsZXIgY2FuJ3QgaGFuZGxlCi0vLyAgc3ludGF4IGxpa2UgJ1QoJmdldF9jX2FycmF5KG5kbmJvb3N0OjphcnJheTxULE4+JiBhcmcpKVtOXScKLS8vICAKLS8vICBXZSBjYW4ndCBqdXN0IHVzZSB0aGlzIGZvciBhbGwgY29tcGlsZXJzLCBiZWNhdXNlIHRoZSAKLS8vICAgICAgYm9ybGFuZCBjb21waWxlcnMgY2FuJ3QgaGFuZGxlIHRoaXMgZm9ybS4gCi0gICAgbmFtZXNwYWNlIGRldGFpbCB7Ci0gICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IE4+IHN0cnVjdCBjX2FycmF5Ci0gICAgICAgewotICAgICAgICAgICB0eXBlZGVmIFQgdHlwZVtOXTsKLSAgICAgICB9OwotICAgIH0KLSAgICAKLSAgIC8vIFNwZWNpZmljIGZvciBuZG5ib29zdDo6YXJyYXk6IHNpbXBseSByZXR1cm5zIGl0cyBlbGVtcyBkYXRhIG1lbWJlci4KLSAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBOPgotICAgdHlwZW5hbWUgZGV0YWlsOjpjX2FycmF5PFQsTj46OnR5cGUmIGdldF9jX2FycmF5KG5kbmJvb3N0OjphcnJheTxULE4+JiBhcmcpCi0gICB7Ci0gICAgICAgcmV0dXJuIGFyZy5lbGVtczsKLSAgIH0KLQotICAgLy8gU3BlY2lmaWMgZm9yIG5kbmJvb3N0OjphcnJheTogc2ltcGx5IHJldHVybnMgaXRzIGVsZW1zIGRhdGEgbWVtYmVyLgotICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IE4+Ci0gICB0eXBlbmFtZSBjb25zdCBkZXRhaWw6OmNfYXJyYXk8VCxOPjo6dHlwZSYgZ2V0X2NfYXJyYXkoY29uc3QgbmRuYm9vc3Q6OmFycmF5PFQsTj4mIGFyZykKLSAgIHsKLSAgICAgICByZXR1cm4gYXJnLmVsZW1zOwotICAgfQotI2Vsc2UKLS8vIFNwZWNpZmljIGZvciBuZG5ib29zdDo6YXJyYXk6IHNpbXBseSByZXR1cm5zIGl0cyBlbGVtcyBkYXRhIG1lbWJlci4KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc3RkOjpzaXplX3QgTj4KLSAgICBUKCZnZXRfY19hcnJheShuZG5ib29zdDo6YXJyYXk8VCxOPiYgYXJnKSlbTl0KLSAgICB7Ci0gICAgICAgIHJldHVybiBhcmcuZWxlbXM7Ci0gICAgfQotICAgIAotICAgIC8vIENvbnN0IHZlcnNpb24uCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IE4+Ci0gICAgY29uc3QgVCgmZ2V0X2NfYXJyYXkoY29uc3QgbmRuYm9vc3Q6OmFycmF5PFQsTj4mIGFyZykpW05dCi0gICAgewotICAgICAgICByZXR1cm4gYXJnLmVsZW1zOwotICAgIH0KLSNlbmRpZgotICAgIAotI2lmIDAKLSAgICAvLyBPdmVybG9hZCBmb3Igc3RkOjphcnJheSwgYXNzdW1pbmcgdGhhdCBzdGQ6OmFycmF5IHdpbGwgaGF2ZQotICAgIC8vIGV4cGxpY2l0IGNvbnZlcnNpb24gZnVuY3Rpb25zIGFzIGRpc2N1c3NlZCBhdCB0aGUgV0cyMSBtZWV0aW5nCi0gICAgLy8gaW4gU3VtbWl0LCBNYXJjaCAyMDA5LgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBOPgotICAgIFQoJmdldF9jX2FycmF5KHN0ZDo6YXJyYXk8VCxOPiYgYXJnKSlbTl0KLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKCYpW05dPihhcmcpOwotICAgIH0KLSAgICAKLSAgICAvLyBDb25zdCB2ZXJzaW9uLgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBOPgotICAgIGNvbnN0IFQoJmdldF9jX2FycmF5KGNvbnN0IHN0ZDo6YXJyYXk8VCxOPiYgYXJnKSlbTl0KLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKCYpW05dPihhcmcpOwotICAgIH0KLSNlbmRpZgotCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBULCBzdGQ6OnNpemVfdCBOPgotICAgIHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoY29uc3QgYXJyYXk8VCxOPiYgYXJyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpoYXNoX3JhbmdlKGFyci5iZWdpbigpLCBhcnIuZW5kKCkpOwotICAgIH0KLQotfSAvKiBuYW1lc3BhY2UgbmRuYm9vc3QgKi8KLQotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA+PSAxNDAwKSAgCi0jIHByYWdtYSB3YXJuaW5nKHBvcCkgIAotI2VuZGlmIAotCi0jZW5kaWYgLypORE5CT09TVF9BUlJBWV9IUFAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9hc3NlcnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9hc3NlcnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzdhNjcyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvYXNzZXJ0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzNiArMCwwIEBACi0vLwotLy8gIG5kbmJvb3N0L2Fzc2VydC5ocHAgLSBORE5CT09TVF9BU1NFUlQoZXhwcikKLS8vICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUX01TRyhleHByLCBtc2cpCi0vLyAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1ZFUklGWShleHByKQotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDIgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZC4KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDcgUGV0ZXIgRGltb3YKLS8vICBDb3B5cmlnaHQgKGMpIEJlbWFuIERhd2VzIDIwMTEKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gIE5vdGU6IFRoZXJlIGFyZSBubyBpbmNsdWRlIGd1YXJkcy4gVGhpcyBpcyBpbnRlbnRpb25hbC4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdXRpbGl0eS9hc3NlcnQuaHRtbCBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0KLS8vCi0vLyBTdG9wIGluc3BlY3QgY29tcGxhaW5pbmcgYWJvdXQgdXNlIG9mICdhc3NlcnQnOgotLy8KLS8vIGJvb3N0aW5zcGVjdDpuYWFzc2VydF9tYWNybwotLy8KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9BU1NFUlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jdW5kZWYgTkROQk9PU1RfQVNTRVJUCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0RJU0FCTEVfQVNTRVJUUykKLQotIyBkZWZpbmUgTkROQk9PU1RfQVNTRVJUKGV4cHIpICgodm9pZCkwKQotCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0VOQUJMRV9BU1NFUlRfSEFORExFUikKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2N1cnJlbnRfZnVuY3Rpb24uaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgdm9pZCBhc3NlcnRpb25fZmFpbGVkKGNoYXIgY29uc3QgKiBleHByLAotICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBjb25zdCAqIGZ1bmN0aW9uLCBjaGFyIGNvbnN0ICogZmlsZSwgbG9uZyBsaW5lKTsgLy8gdXNlciBkZWZpbmVkCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZGVmaW5lIE5ETkJPT1NUX0FTU0VSVChleHByKSAoKGV4cHIpIFwKLSAgPyAoKHZvaWQpMCkgXAotICA6IDo6bmRuYm9vc3Q6OmFzc2VydGlvbl9mYWlsZWQoI2V4cHIsIE5ETkJPT1NUX0NVUlJFTlRfRlVOQ1RJT04sIF9fRklMRV9fLCBfX0xJTkVfXykpCi0KLSNlbHNlCi0jIGluY2x1ZGUgPGFzc2VydC5oPiAvLyAuaCB0byBzdXBwb3J0IG9sZCBsaWJyYXJpZXMgdy9vIDxjYXNzZXJ0PiAtIGVmZmVjdCBpcyB0aGUgc2FtZQotIyBkZWZpbmUgTkROQk9PU1RfQVNTRVJUKGV4cHIpIGFzc2VydChleHByKQotI2VuZGlmCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVF9NU0cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotIyB1bmRlZiBORE5CT09TVF9BU1NFUlRfTVNHCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0RJU0FCTEVfQVNTRVJUUykgfHwgZGVmaW5lZChOREVCVUcpCi0KLSAgI2RlZmluZSBORE5CT09TVF9BU1NFUlRfTVNHKGV4cHIsIG1zZykgKCh2b2lkKTApCi0KLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfRU5BQkxFX0FTU0VSVF9IQU5ETEVSKQotCi0gICNpbmNsdWRlIDxuZG5ib29zdC9jdXJyZW50X2Z1bmN0aW9uLmhwcD4KLQotICBuYW1lc3BhY2UgbmRuYm9vc3QKLSAgewotICAgIHZvaWQgYXNzZXJ0aW9uX2ZhaWxlZF9tc2coY2hhciBjb25zdCAqIGV4cHIsIGNoYXIgY29uc3QgKiBtc2csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGNvbnN0ICogZnVuY3Rpb24sIGNoYXIgY29uc3QgKiBmaWxlLCBsb25nIGxpbmUpOyAvLyB1c2VyIGRlZmluZWQKLSAgfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotICAjZGVmaW5lIE5ETkJPT1NUX0FTU0VSVF9NU0coZXhwciwgbXNnKSAoKGV4cHIpIFwKLSAgICA/ICgodm9pZCkwKSBcCi0gICAgOiA6Om5kbmJvb3N0Ojphc3NlcnRpb25fZmFpbGVkX21zZygjZXhwciwgbXNnLCBORE5CT09TVF9DVVJSRU5UX0ZVTkNUSU9OLCBfX0ZJTEVfXywgX19MSU5FX18pKQotCi0jZWxzZQotICAjaWZuZGVmIE5ETkJPT1NUX0FTU0VSVF9IUFAKLSAgICAjZGVmaW5lIE5ETkJPT1NUX0FTU0VSVF9IUFAKLSAgICAjaW5jbHVkZSA8Y3N0ZGxpYj4KLSAgICAjaW5jbHVkZSA8aW9zdHJlYW0+Ci0gICAgI2luY2x1ZGUgPG5kbmJvb3N0L2N1cnJlbnRfZnVuY3Rpb24uaHBwPgotCi0gICAgLy8gIElERSdzIGxpa2UgVmlzdWFsIFN0dWRpbyBwZXJmb3JtIGJldHRlciBpZiBvdXRwdXQgZ29lcyB0byBzdGQ6OmNvdXQgb3IKLSAgICAvLyAgc29tZSBvdGhlciBzdHJlYW0sIHNvIGFsbG93IHVzZXIgdG8gY29uZmlndXJlIG91dHB1dCBzdHJlYW06Ci0gICAgI2lmbmRlZiBORE5CT09TVF9BU1NFUlRfTVNHX09TVFJFQU0KLSAgICAjIGRlZmluZSBORE5CT09TVF9BU1NFUlRfTVNHX09TVFJFQU0gc3RkOjpjZXJyCi0gICAgI2VuZGlmCi0KLSAgICBuYW1lc3BhY2UgbmRuYm9vc3QKLSAgICB7IAotICAgICAgbmFtZXNwYWNlIGFzc2VydGlvbiAKLSAgICAgIHsgCi0gICAgICAgIG5hbWVzcGFjZSBkZXRhaWwKLSAgICAgICAgewotICAgICAgICAgIGlubGluZSB2b2lkIGFzc2VydGlvbl9mYWlsZWRfbXNnKGNoYXIgY29uc3QgKiBleHByLCBjaGFyIGNvbnN0ICogbXNnLCBjaGFyIGNvbnN0ICogZnVuY3Rpb24sCi0gICAgICAgICAgICBjaGFyIGNvbnN0ICogZmlsZSwgbG9uZyBsaW5lKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVF9NU0dfT1NUUkVBTQotICAgICAgICAgICAgICA8PCAiKioqKiogSW50ZXJuYWwgUHJvZ3JhbSBFcnJvciAtIGFzc2VydGlvbiAoIiA8PCBleHByIDw8ICIpIGZhaWxlZCBpbiAiCi0gICAgICAgICAgICAgIDw8IGZ1bmN0aW9uIDw8ICI6XG4iCi0gICAgICAgICAgICAgIDw8IGZpbGUgPDwgJygnIDw8IGxpbmUgPDwgIik6ICIgPDwgbXNnIDw8IHN0ZDo6ZW5kbDsKLQkJCSNpZmRlZiBVTkRFUl9DRQotCQkJCS8vIFRoZSBXaW5kb3dzIENFIENSVCBsaWJyYXJ5IGRvZXMgbm90IGhhdmUgYWJvcnQoKSBzbyB1c2UgZXhpdCgtMSkgaW5zdGVhZC4KLQkJCQlzdGQ6OmV4aXQoLTEpOwotCQkJI2Vsc2UKLQkJCQlzdGQ6OmFib3J0KCk7Ci0JCQkjZW5kaWYKLSAgICAgICAgICB9Ci0gICAgICAgIH0gLy8gZGV0YWlsCi0gICAgICB9IC8vIGFzc2VydGlvbgotICAgIH0gLy8gZGV0YWlsCi0gICNlbmRpZgotCi0gICNkZWZpbmUgTkROQk9PU1RfQVNTRVJUX01TRyhleHByLCBtc2cpICgoZXhwcikgXAotICAgID8gKCh2b2lkKTApIFwKLSAgICA6IDo6bmRuYm9vc3Q6OmFzc2VydGlvbjo6ZGV0YWlsOjphc3NlcnRpb25fZmFpbGVkX21zZygjZXhwciwgbXNnLCBcCi0gICAgICAgICAgTkROQk9PU1RfQ1VSUkVOVF9GVU5DVElPTiwgX19GSUxFX18sIF9fTElORV9fKSkKLSNlbmRpZgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1ZFUklGWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSN1bmRlZiBORE5CT09TVF9WRVJJRlkKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfRElTQUJMRV9BU1NFUlRTKSB8fCAoICFkZWZpbmVkKE5ETkJPT1NUX0VOQUJMRV9BU1NFUlRfSEFORExFUikgJiYgZGVmaW5lZChOREVCVUcpICkKLQotIyBkZWZpbmUgTkROQk9PU1RfVkVSSUZZKGV4cHIpICgodm9pZCkoZXhwcikpCi0KLSNlbHNlCi0KLSMgZGVmaW5lIE5ETkJPT1NUX1ZFUklGWShleHByKSBORE5CT09TVF9BU1NFUlQoZXhwcikKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2JpbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9iaW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzY1M2M4Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2JpbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9CSU5EX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9CSU5EX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICBiaW5kLmhwcCAtIGJpbmRzIGZ1bmN0aW9uIG9iamVjdHMgdG8gYXJndW1lbnRzCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwOSBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2JpbmQvYmluZC5odG1sIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2JpbmQvYmluZC5ocHA+Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0JJTkRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2JpbmQvYXBwbHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9iaW5kL2FwcGx5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTFkOTZiZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2JpbmQvYXBwbHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzQgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9CSU5EX0FQUExZX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9CSU5EX0FQUExZX0hQUF9JTkNMVURFRAotCi0vLwotLy8gIGFwcGx5LmhwcAotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDMgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZC4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotdGVtcGxhdGU8Y2xhc3MgUj4gc3RydWN0IGFwcGx5Ci17Ci0gICAgdHlwZWRlZiBSIHJlc3VsdF90eXBlOwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRj4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShGICYgZikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmKCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgQTE+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoRiAmIGYsIEExICYgYTEpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZihhMSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgQTEsIGNsYXNzIEEyPiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEYgJiBmLCBBMSAmIGExLCBBMiAmIGEyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGYoYTEsIGEyKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzPiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEYgJiBmLCBBMSAmIGExLCBBMiAmIGEyLCBBMyAmIGEzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGYoYTEsIGEyLCBhMyk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQ+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoRiAmIGYsIEExICYgYTEsIEEyICYgYTIsIEEzICYgYTMsIEE0ICYgYTQpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZihhMSwgYTIsIGEzLCBhNCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEYgJiBmLCBBMSAmIGExLCBBMiAmIGEyLCBBMyAmIGEzLCBBNCAmIGE0LCBBNSAmIGE1KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGYoYTEsIGEyLCBhMywgYTQsIGE1KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEYgJiBmLCBBMSAmIGExLCBBMiAmIGEyLCBBMyAmIGEzLCBBNCAmIGE0LCBBNSAmIGE1LCBBNiAmIGE2KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGYoYTEsIGEyLCBhMywgYTQsIGE1LCBhNik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTc+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoRiAmIGYsIEExICYgYTEsIEEyICYgYTIsIEEzICYgYTMsIEE0ICYgYTQsIEE1ICYgYTUsIEE2ICYgYTYsIEE3ICYgYTcpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZihhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNyk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEYgJiBmLCBBMSAmIGExLCBBMiAmIGEyLCBBMyAmIGEzLCBBNCAmIGE0LCBBNSAmIGE1LCBBNiAmIGE2LCBBNyAmIGE3LCBBOCAmIGE4KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGYoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTgsIGNsYXNzIEE5PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEYgJiBmLCBBMSAmIGExLCBBMiAmIGEyLCBBMyAmIGEzLCBBNCAmIGE0LCBBNSAmIGE1LCBBNiAmIGE2LCBBNyAmIGE3LCBBOCAmIGE4LCBBOSAmIGE5KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGYoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSk7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfQklORF9BUFBMWV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvYmluZC9hcmcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9iaW5kL2FyZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0MjBlN2YuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9iaW5kL2FyZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX0JJTkRfQVJHX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9CSU5EX0FSR19IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgYmluZC9hcmcuaHBwCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMiBQZXRlciBEaW1vdiBhbmQgTXVsdGkgTWVkaWEgTHRkLgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvYmluZC9iaW5kLmh0bWwgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pc19wbGFjZWhvbGRlci5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi10ZW1wbGF0ZTwgaW50IEkgPiBzdHJ1Y3QgYXJnCi17Ci0gICAgYXJnKCkKLSAgICB7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8IGNsYXNzIFQgPiBhcmcoIFQgY29uc3QgJiAvKiB0ICovICkKLSAgICB7Ci0gICAgICAgIC8vIHN0YXRpYyBhc3NlcnQgSSA9PSBpc19wbGFjZWhvbGRlcjxUPjo6dmFsdWUKLSAgICAgICAgdHlwZWRlZiBjaGFyIFRfbXVzdF9iZV9wbGFjZWhvbGRlclsgSSA9PSBpc19wbGFjZWhvbGRlcjxUPjo6dmFsdWU/IDE6IC0xIF07Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8IGludCBJID4gYm9vbCBvcGVyYXRvcj09KCBhcmc8ST4gY29uc3QgJiwgYXJnPEk+IGNvbnN0ICYgKQotewotICAgIHJldHVybiB0cnVlOwotfQotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gKQotCi10ZW1wbGF0ZTwgaW50IEkgPiBzdHJ1Y3QgaXNfcGxhY2Vob2xkZXI8IGFyZzxJPiA+Ci17Ci0gICAgZW51bSBfdnQgeyB2YWx1ZSA9IEkgfTsKLX07Ci0KLXRlbXBsYXRlPCBpbnQgSSA+IHN0cnVjdCBpc19wbGFjZWhvbGRlcjwgYXJnPEk+ICgqKSAoKSA+Ci17Ci0gICAgZW51bSBfdnQgeyB2YWx1ZSA9IEkgfTsKLX07Ci0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9CSU5EX0FSR19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvYmluZC9iaW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvYmluZC9iaW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmYwYmIyYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2JpbmQvYmluZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNzUxICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfQklORF9CSU5EX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9CSU5EX0JJTkRfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIGJpbmQuaHBwIC0gYmluZHMgZnVuY3Rpb24gb2JqZWN0cyB0byBhcmd1bWVudHMKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLTIwMDQgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZC4KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEgRGF2aWQgQWJyYWhhbXMKLS8vICBDb3B5cmlnaHQgKGMpIDIwMDUgUGV0ZXIgRGltb3YKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2JpbmQvYmluZC5odG1sIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tZW1fZm4uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lzX3BsYWNlaG9sZGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL2FyZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Zpc2l0X2VhY2guaHBwPgotCi0vLyBCb3JsYW5kLXNwZWNpZmljIGJ1ZywgdmlzaXRfZWFjaCgpIHNpbGVudGx5IGZhaWxzIHRvIHByb2R1Y2UgY29kZQotCi0jaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pCi0jICBkZWZpbmUgTkROQk9PU1RfQklORF9WSVNJVF9FQUNIIG5kbmJvb3N0Ojp2aXNpdF9lYWNoCi0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX0JJTkRfVklTSVRfRUFDSCB2aXNpdF9lYWNoCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2JpbmQvc3RvcmFnZS5ocHA+Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ1MTIpIC8vIGFzc2lnbm1lbnQgb3BlcmF0b3IgY291bGQgbm90IGJlIGdlbmVyYXRlZAotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi10ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyB3ZWFrX3B0cjsKLQotbmFtZXNwYWNlIF9iaSAvLyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzCi17Ci0KLS8vIHJlc3VsdF90cmFpdHMKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRj4gc3RydWN0IHJlc3VsdF90cmFpdHMKLXsKLSAgICB0eXBlZGVmIFIgdHlwZTsKLX07Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORykKLQotc3RydWN0IHVuc3BlY2lmaWVkIHt9OwotCi10ZW1wbGF0ZTxjbGFzcyBGPiBzdHJ1Y3QgcmVzdWx0X3RyYWl0czx1bnNwZWNpZmllZCwgRj4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnJlc3VsdF90eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBGPiBzdHJ1Y3QgcmVzdWx0X3RyYWl0czwgdW5zcGVjaWZpZWQsIHJlZmVyZW5jZV93cmFwcGVyPEY+ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnJlc3VsdF90eXBlIHR5cGU7Ci19OwotCi0jZW5kaWYKLQotLy8gcmVmX2NvbXBhcmUKLQotdGVtcGxhdGU8Y2xhc3MgVD4gYm9vbCByZWZfY29tcGFyZSggVCBjb25zdCAmIGEsIFQgY29uc3QgJiBiLCBsb25nICkKLXsKLSAgICByZXR1cm4gYSA9PSBiOwotfQotCi10ZW1wbGF0ZTxpbnQgST4gYm9vbCByZWZfY29tcGFyZSggYXJnPEk+IGNvbnN0ICYsIGFyZzxJPiBjb25zdCAmLCBpbnQgKQotewotICAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZTxpbnQgST4gYm9vbCByZWZfY29tcGFyZSggYXJnPEk+ICgqKSAoKSwgYXJnPEk+ICgqKSAoKSwgaW50ICkKLXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gYm9vbCByZWZfY29tcGFyZSggcmVmZXJlbmNlX3dyYXBwZXI8VD4gY29uc3QgJiBhLCByZWZlcmVuY2Vfd3JhcHBlcjxUPiBjb25zdCAmIGIsIGludCApCi17Ci0gICAgcmV0dXJuIGEuZ2V0X3BvaW50ZXIoKSA9PSBiLmdldF9wb2ludGVyKCk7Ci19Ci0KLS8vIGJpbmRfdCBmb3J3YXJkIGRlY2xhcmF0aW9uIGZvciBsaXN0TgotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBMPiBjbGFzcyBiaW5kX3Q7Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEw+IGJvb2wgcmVmX2NvbXBhcmUoIGJpbmRfdDxSLCBGLCBMPiBjb25zdCAmIGEsIGJpbmRfdDxSLCBGLCBMPiBjb25zdCAmIGIsIGludCApCi17Ci0gICAgcmV0dXJuIGEuY29tcGFyZSggYiApOwotfQotCi0vLyB2YWx1ZQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyB2YWx1ZQotewotcHVibGljOgotCi0gICAgdmFsdWUoVCBjb25zdCAmIHQpOiB0Xyh0KSB7fQotCi0gICAgVCAmIGdldCgpIHsgcmV0dXJuIHRfOyB9Ci0gICAgVCBjb25zdCAmIGdldCgpIGNvbnN0IHsgcmV0dXJuIHRfOyB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0odmFsdWUgY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdF8gPT0gcmhzLnRfOwotICAgIH0KLQotcHJpdmF0ZToKLQotICAgIFQgdF87Ci19OwotCi0vLyByZWZfY29tcGFyZSBmb3Igd2Vha19wdHIKLQotdGVtcGxhdGU8Y2xhc3MgVD4gYm9vbCByZWZfY29tcGFyZSggdmFsdWU8IHdlYWtfcHRyPFQ+ID4gY29uc3QgJiBhLCB2YWx1ZTwgd2Vha19wdHI8VD4gPiBjb25zdCAmIGIsIGludCApCi17Ci0gICAgcmV0dXJuICEoYS5nZXQoKSA8IGIuZ2V0KCkpICYmICEoYi5nZXQoKSA8IGEuZ2V0KCkpOwotfQotCi0vLyB0eXBlCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIHR5cGUge307Ci0KLS8vIHVud3JhcAotCi10ZW1wbGF0ZTxjbGFzcyBGPiBzdHJ1Y3QgdW53cmFwcGVyCi17Ci0gICAgc3RhdGljIGlubGluZSBGICYgdW53cmFwKCBGICYgZiwgbG9uZyApCi0gICAgewotICAgICAgICByZXR1cm4gZjsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBGMj4gc3RhdGljIGlubGluZSBGMiAmIHVud3JhcCggcmVmZXJlbmNlX3dyYXBwZXI8RjI+IHJmLCBpbnQgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHJmLmdldCgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQ+IHN0YXRpYyBpbmxpbmUgX21maTo6ZG08UiwgVD4gdW53cmFwKCBSIFQ6OiogcG0sIGludCApCi0gICAgewotICAgICAgICByZXR1cm4gX21maTo6ZG08UiwgVD4oIHBtICk7Ci0gICAgfQotfTsKLQotLy8gbGlzdE4KLQotY2xhc3MgbGlzdDAKLXsKLXB1YmxpYzoKLQotICAgIGxpc3QwKCkge30KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IFQgJiBvcGVyYXRvcltdIChfYmk6OnZhbHVlPFQ+ICYgdikgY29uc3QgeyByZXR1cm4gdi5nZXQoKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gVCBjb25zdCAmIG9wZXJhdG9yW10gKF9iaTo6dmFsdWU8VD4gY29uc3QgJiB2KSBjb25zdCB7IHJldHVybiB2LmdldCgpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBUICYgb3BlcmF0b3JbXSAocmVmZXJlbmNlX3dyYXBwZXI8VD4gY29uc3QgJiB2KSBjb25zdCB7IHJldHVybiB2LmdldCgpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBMPiB0eXBlbmFtZSByZXN1bHRfdHJhaXRzPFIsIEY+Ojp0eXBlIG9wZXJhdG9yW10gKGJpbmRfdDxSLCBGLCBMPiAmIGIpIGNvbnN0IHsgcmV0dXJuIGIuZXZhbCgqdGhpcyk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEw+IHR5cGVuYW1lIHJlc3VsdF90cmFpdHM8UiwgRj46OnR5cGUgb3BlcmF0b3JbXSAoYmluZF90PFIsIEYsIEw+IGNvbnN0ICYgYikgY29uc3QgeyByZXR1cm4gYi5ldmFsKCp0aGlzKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgQT4gUiBvcGVyYXRvcigpKHR5cGU8Uj4sIEYgJiBmLCBBICYsIGxvbmcpCi0gICAgewotICAgICAgICByZXR1cm4gdW53cmFwcGVyPEY+Ojp1bndyYXAoZiwgMCkoKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBBPiBSIG9wZXJhdG9yKCkodHlwZTxSPiwgRiBjb25zdCAmIGYsIEEgJiwgbG9uZykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB1bndyYXBwZXI8RiBjb25zdD46OnVud3JhcChmLCAwKSgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEYsIGNsYXNzIEE+IHZvaWQgb3BlcmF0b3IoKSh0eXBlPHZvaWQ+LCBGICYgZiwgQSAmLCBpbnQpCi0gICAgewotICAgICAgICB1bndyYXBwZXI8Rj46OnVud3JhcChmLCAwKSgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEYsIGNsYXNzIEE+IHZvaWQgb3BlcmF0b3IoKSh0eXBlPHZvaWQ+LCBGIGNvbnN0ICYgZiwgQSAmLCBpbnQpIGNvbnN0Ci0gICAgewotICAgICAgICB1bndyYXBwZXI8RiBjb25zdD46OnVud3JhcChmLCAwKSgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFY+IHZvaWQgYWNjZXB0KFYgJikgY29uc3QKLSAgICB7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGxpc3QwIGNvbnN0ICYpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci19OwotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotLy8gTVNWQyBpcyBicmlnaHQgZW5vdWdoIHRvIHJlYWxpc2UgdGhhdCB0aGUgcGFyYW1ldGVyIHJocyAKLS8vIGluIG9wZXJhdG9yPT1tYXkgYmUgdW51c2VkIGZvciBzb21lIHRlbXBsYXRlIGFyZ3VtZW50IHR5cGVzOgotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTAwKQotI2VuZGlmCi0KLXRlbXBsYXRlPCBjbGFzcyBBMSA+IGNsYXNzIGxpc3QxOiBwcml2YXRlIHN0b3JhZ2UxPCBBMSA+Ci17Ci1wcml2YXRlOgotCi0gICAgdHlwZWRlZiBzdG9yYWdlMTwgQTEgPiBiYXNlX3R5cGU7Ci0KLXB1YmxpYzoKLQotICAgIGV4cGxpY2l0IGxpc3QxKCBBMSBhMSApOiBiYXNlX3R5cGUoIGExICkge30KLQotICAgIEExIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8MT4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTFfOyB9Ci0KLSAgICBBMSBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDE+ICgqKSAoKSkgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphMV87IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IFQgJiBvcGVyYXRvcltdICggX2JpOjp2YWx1ZTxUPiAmIHYgKSBjb25zdCB7IHJldHVybiB2LmdldCgpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBUIGNvbnN0ICYgb3BlcmF0b3JbXSAoIF9iaTo6dmFsdWU8VD4gY29uc3QgJiB2ICkgY29uc3QgeyByZXR1cm4gdi5nZXQoKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gVCAmIG9wZXJhdG9yW10gKHJlZmVyZW5jZV93cmFwcGVyPFQ+IGNvbnN0ICYgdikgY29uc3QgeyByZXR1cm4gdi5nZXQoKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgTD4gdHlwZW5hbWUgcmVzdWx0X3RyYWl0czxSLCBGPjo6dHlwZSBvcGVyYXRvcltdIChiaW5kX3Q8UiwgRiwgTD4gJiBiKSBjb25zdCB7IHJldHVybiBiLmV2YWwoKnRoaXMpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBMPiB0eXBlbmFtZSByZXN1bHRfdHJhaXRzPFIsIEY+Ojp0eXBlIG9wZXJhdG9yW10gKGJpbmRfdDxSLCBGLCBMPiBjb25zdCAmIGIpIGNvbnN0IHsgcmV0dXJuIGIuZXZhbCgqdGhpcyk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEE+IFIgb3BlcmF0b3IoKSh0eXBlPFI+LCBGICYgZiwgQSAmIGEsIGxvbmcpCi0gICAgewotICAgICAgICByZXR1cm4gdW53cmFwcGVyPEY+Ojp1bndyYXAoZiwgMCkoYVtiYXNlX3R5cGU6OmExX10pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEE+IFIgb3BlcmF0b3IoKSh0eXBlPFI+LCBGIGNvbnN0ICYgZiwgQSAmIGEsIGxvbmcpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdW53cmFwcGVyPEYgY29uc3Q+Ojp1bndyYXAoZiwgMCkoYVtiYXNlX3R5cGU6OmExX10pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEYsIGNsYXNzIEE+IHZvaWQgb3BlcmF0b3IoKSh0eXBlPHZvaWQ+LCBGICYgZiwgQSAmIGEsIGludCkKLSAgICB7Ci0gICAgICAgIHVud3JhcHBlcjxGPjo6dW53cmFwKGYsIDApKGFbYmFzZV90eXBlOjphMV9dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBBPiB2b2lkIG9wZXJhdG9yKCkodHlwZTx2b2lkPiwgRiBjb25zdCAmIGYsIEEgJiBhLCBpbnQpIGNvbnN0Ci0gICAgewotICAgICAgICB1bndyYXBwZXI8RiBjb25zdD46OnVud3JhcChmLCAwKShhW2Jhc2VfdHlwZTo6YTFfXSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVj4gdm9pZCBhY2NlcHQoViAmIHYpIGNvbnN0Ci0gICAgewotICAgICAgICBiYXNlX3R5cGU6OmFjY2VwdCh2KTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0obGlzdDEgY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gcmVmX2NvbXBhcmUoYmFzZV90eXBlOjphMV8sIHJocy5hMV8sIDApOwotICAgIH0KLX07Ci0KLXN0cnVjdCBsb2dpY2FsX2FuZDsKLXN0cnVjdCBsb2dpY2FsX29yOwotCi10ZW1wbGF0ZTwgY2xhc3MgQTEsIGNsYXNzIEEyID4gY2xhc3MgbGlzdDI6IHByaXZhdGUgc3RvcmFnZTI8IEExLCBBMiA+Ci17Ci1wcml2YXRlOgotCi0gICAgdHlwZWRlZiBzdG9yYWdlMjwgQTEsIEEyID4gYmFzZV90eXBlOwotCi1wdWJsaWM6Ci0KLSAgICBsaXN0MiggQTEgYTEsIEEyIGEyICk6IGJhc2VfdHlwZSggYTEsIGEyICkge30KLQotICAgIEExIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8MT4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTFfOyB9Ci0gICAgQTIgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwyPikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphMl87IH0KLQotICAgIEExIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8MT4gKCopICgpKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmExXzsgfQotICAgIEEyIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8Mj4gKCopICgpKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmEyXzsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gVCAmIG9wZXJhdG9yW10gKF9iaTo6dmFsdWU8VD4gJiB2KSBjb25zdCB7IHJldHVybiB2LmdldCgpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBUIGNvbnN0ICYgb3BlcmF0b3JbXSAoX2JpOjp2YWx1ZTxUPiBjb25zdCAmIHYpIGNvbnN0IHsgcmV0dXJuIHYuZ2V0KCk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IFQgJiBvcGVyYXRvcltdIChyZWZlcmVuY2Vfd3JhcHBlcjxUPiBjb25zdCAmIHYpIGNvbnN0IHsgcmV0dXJuIHYuZ2V0KCk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEw+IHR5cGVuYW1lIHJlc3VsdF90cmFpdHM8UiwgRj46OnR5cGUgb3BlcmF0b3JbXSAoYmluZF90PFIsIEYsIEw+ICYgYikgY29uc3QgeyByZXR1cm4gYi5ldmFsKCp0aGlzKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgTD4gdHlwZW5hbWUgcmVzdWx0X3RyYWl0czxSLCBGPjo6dHlwZSBvcGVyYXRvcltdIChiaW5kX3Q8UiwgRiwgTD4gY29uc3QgJiBiKSBjb25zdCB7IHJldHVybiBiLmV2YWwoKnRoaXMpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBBPiBSIG9wZXJhdG9yKCkodHlwZTxSPiwgRiAmIGYsIEEgJiBhLCBsb25nKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHVud3JhcHBlcjxGPjo6dW53cmFwKGYsIDApKGFbYmFzZV90eXBlOjphMV9dLCBhW2Jhc2VfdHlwZTo6YTJfXSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgQT4gUiBvcGVyYXRvcigpKHR5cGU8Uj4sIEYgY29uc3QgJiBmLCBBICYgYSwgbG9uZykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB1bndyYXBwZXI8RiBjb25zdD46OnVud3JhcChmLCAwKShhW2Jhc2VfdHlwZTo6YTFfXSwgYVtiYXNlX3R5cGU6OmEyX10pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEYsIGNsYXNzIEE+IHZvaWQgb3BlcmF0b3IoKSh0eXBlPHZvaWQ+LCBGICYgZiwgQSAmIGEsIGludCkKLSAgICB7Ci0gICAgICAgIHVud3JhcHBlcjxGPjo6dW53cmFwKGYsIDApKGFbYmFzZV90eXBlOjphMV9dLCBhW2Jhc2VfdHlwZTo6YTJfXSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgQT4gdm9pZCBvcGVyYXRvcigpKHR5cGU8dm9pZD4sIEYgY29uc3QgJiBmLCBBICYgYSwgaW50KSBjb25zdAotICAgIHsKLSAgICAgICAgdW53cmFwcGVyPEYgY29uc3Q+Ojp1bndyYXAoZiwgMCkoYVtiYXNlX3R5cGU6OmExX10sIGFbYmFzZV90eXBlOjphMl9dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBPiBib29sIG9wZXJhdG9yKCkoIHR5cGU8Ym9vbD4sIGxvZ2ljYWxfYW5kICYgLypmKi8sIEEgJiBhLCBpbnQgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFbIGJhc2VfdHlwZTo6YTFfIF0gJiYgYVsgYmFzZV90eXBlOjphMl8gXTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBPiBib29sIG9wZXJhdG9yKCkoIHR5cGU8Ym9vbD4sIGxvZ2ljYWxfYW5kIGNvbnN0ICYgLypmKi8sIEEgJiBhLCBpbnQgKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGFbIGJhc2VfdHlwZTo6YTFfIF0gJiYgYVsgYmFzZV90eXBlOjphMl8gXTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBPiBib29sIG9wZXJhdG9yKCkoIHR5cGU8Ym9vbD4sIGxvZ2ljYWxfb3IgJiAvKmYqLywgQSAmIGEsIGludCApCi0gICAgewotICAgICAgICByZXR1cm4gYVsgYmFzZV90eXBlOjphMV8gXSB8fCBhWyBiYXNlX3R5cGU6OmEyXyBdOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEE+IGJvb2wgb3BlcmF0b3IoKSggdHlwZTxib29sPiwgbG9naWNhbF9vciBjb25zdCAmIC8qZiovLCBBICYgYSwgaW50ICkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBhWyBiYXNlX3R5cGU6OmExXyBdIHx8IGFbIGJhc2VfdHlwZTo6YTJfIF07Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVj4gdm9pZCBhY2NlcHQoViAmIHYpIGNvbnN0Ci0gICAgewotICAgICAgICBiYXNlX3R5cGU6OmFjY2VwdCh2KTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0obGlzdDIgY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gcmVmX2NvbXBhcmUoYmFzZV90eXBlOjphMV8sIHJocy5hMV8sIDApICYmIHJlZl9jb21wYXJlKGJhc2VfdHlwZTo6YTJfLCByaHMuYTJfLCAwKTsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMyA+IGNsYXNzIGxpc3QzOiBwcml2YXRlIHN0b3JhZ2UzPCBBMSwgQTIsIEEzID4KLXsKLXByaXZhdGU6Ci0KLSAgICB0eXBlZGVmIHN0b3JhZ2UzPCBBMSwgQTIsIEEzID4gYmFzZV90eXBlOwotCi1wdWJsaWM6Ci0KLSAgICBsaXN0MyggQTEgYTEsIEEyIGEyLCBBMyBhMyApOiBiYXNlX3R5cGUoIGExLCBhMiwgYTMgKSB7fQotCi0gICAgQTEgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwxPikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphMV87IH0KLSAgICBBMiBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDI+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmEyXzsgfQotICAgIEEzIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8Mz4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTNfOyB9Ci0KLSAgICBBMSBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDE+ICgqKSAoKSkgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphMV87IH0KLSAgICBBMiBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDI+ICgqKSAoKSkgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphMl87IH0KLSAgICBBMyBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDM+ICgqKSAoKSkgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphM187IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IFQgJiBvcGVyYXRvcltdIChfYmk6OnZhbHVlPFQ+ICYgdikgY29uc3QgeyByZXR1cm4gdi5nZXQoKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gVCBjb25zdCAmIG9wZXJhdG9yW10gKF9iaTo6dmFsdWU8VD4gY29uc3QgJiB2KSBjb25zdCB7IHJldHVybiB2LmdldCgpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBUICYgb3BlcmF0b3JbXSAocmVmZXJlbmNlX3dyYXBwZXI8VD4gY29uc3QgJiB2KSBjb25zdCB7IHJldHVybiB2LmdldCgpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBMPiB0eXBlbmFtZSByZXN1bHRfdHJhaXRzPFIsIEY+Ojp0eXBlIG9wZXJhdG9yW10gKGJpbmRfdDxSLCBGLCBMPiAmIGIpIGNvbnN0IHsgcmV0dXJuIGIuZXZhbCgqdGhpcyk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEw+IHR5cGVuYW1lIHJlc3VsdF90cmFpdHM8UiwgRj46OnR5cGUgb3BlcmF0b3JbXSAoYmluZF90PFIsIEYsIEw+IGNvbnN0ICYgYikgY29uc3QgeyByZXR1cm4gYi5ldmFsKCp0aGlzKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgQT4gUiBvcGVyYXRvcigpKHR5cGU8Uj4sIEYgJiBmLCBBICYgYSwgbG9uZykKLSAgICB7Ci0gICAgICAgIHJldHVybiB1bndyYXBwZXI8Rj46OnVud3JhcChmLCAwKShhW2Jhc2VfdHlwZTo6YTFfXSwgYVtiYXNlX3R5cGU6OmEyX10sIGFbYmFzZV90eXBlOjphM19dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBBPiBSIG9wZXJhdG9yKCkodHlwZTxSPiwgRiBjb25zdCAmIGYsIEEgJiBhLCBsb25nKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHVud3JhcHBlcjxGIGNvbnN0Pjo6dW53cmFwKGYsIDApKGFbYmFzZV90eXBlOjphMV9dLCBhW2Jhc2VfdHlwZTo6YTJfXSwgYVtiYXNlX3R5cGU6OmEzX10pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEYsIGNsYXNzIEE+IHZvaWQgb3BlcmF0b3IoKSh0eXBlPHZvaWQ+LCBGICYgZiwgQSAmIGEsIGludCkKLSAgICB7Ci0gICAgICAgIHVud3JhcHBlcjxGPjo6dW53cmFwKGYsIDApKGFbYmFzZV90eXBlOjphMV9dLCBhW2Jhc2VfdHlwZTo6YTJfXSwgYVtiYXNlX3R5cGU6OmEzX10pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEYsIGNsYXNzIEE+IHZvaWQgb3BlcmF0b3IoKSh0eXBlPHZvaWQ+LCBGIGNvbnN0ICYgZiwgQSAmIGEsIGludCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHVud3JhcHBlcjxGIGNvbnN0Pjo6dW53cmFwKGYsIDApKGFbYmFzZV90eXBlOjphMV9dLCBhW2Jhc2VfdHlwZTo6YTJfXSwgYVtiYXNlX3R5cGU6OmEzX10pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFY+IHZvaWQgYWNjZXB0KFYgJiB2KSBjb25zdAotICAgIHsKLSAgICAgICAgYmFzZV90eXBlOjphY2NlcHQodik7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGxpc3QzIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICAKLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmExXywgcmhzLmExXywgMCApICYmCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphMl8sIHJocy5hMl8sIDAgKSAmJgotICAgICAgICAgICAgcmVmX2NvbXBhcmUoIGJhc2VfdHlwZTo6YTNfLCByaHMuYTNfLCAwICk7Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8IGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0ID4gY2xhc3MgbGlzdDQ6IHByaXZhdGUgc3RvcmFnZTQ8IEExLCBBMiwgQTMsIEE0ID4KLXsKLXByaXZhdGU6Ci0KLSAgICB0eXBlZGVmIHN0b3JhZ2U0PCBBMSwgQTIsIEEzLCBBNCA+IGJhc2VfdHlwZTsKLQotcHVibGljOgotCi0gICAgbGlzdDQoIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0ICk6IGJhc2VfdHlwZSggYTEsIGEyLCBhMywgYTQgKSB7fQotCi0gICAgQTEgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwxPikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphMV87IH0KLSAgICBBMiBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDI+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmEyXzsgfQotICAgIEEzIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8Mz4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTNfOyB9Ci0gICAgQTQgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw0PikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphNF87IH0KLQotICAgIEExIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8MT4gKCopICgpKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmExXzsgfQotICAgIEEyIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8Mj4gKCopICgpKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmEyXzsgfQotICAgIEEzIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8Mz4gKCopICgpKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmEzXzsgfQotICAgIEE0IG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8ND4gKCopICgpKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmE0XzsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gVCAmIG9wZXJhdG9yW10gKF9iaTo6dmFsdWU8VD4gJiB2KSBjb25zdCB7IHJldHVybiB2LmdldCgpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBUIGNvbnN0ICYgb3BlcmF0b3JbXSAoX2JpOjp2YWx1ZTxUPiBjb25zdCAmIHYpIGNvbnN0IHsgcmV0dXJuIHYuZ2V0KCk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IFQgJiBvcGVyYXRvcltdIChyZWZlcmVuY2Vfd3JhcHBlcjxUPiBjb25zdCAmIHYpIGNvbnN0IHsgcmV0dXJuIHYuZ2V0KCk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEw+IHR5cGVuYW1lIHJlc3VsdF90cmFpdHM8UiwgRj46OnR5cGUgb3BlcmF0b3JbXSAoYmluZF90PFIsIEYsIEw+ICYgYikgY29uc3QgeyByZXR1cm4gYi5ldmFsKCp0aGlzKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgTD4gdHlwZW5hbWUgcmVzdWx0X3RyYWl0czxSLCBGPjo6dHlwZSBvcGVyYXRvcltdIChiaW5kX3Q8UiwgRiwgTD4gY29uc3QgJiBiKSBjb25zdCB7IHJldHVybiBiLmV2YWwoKnRoaXMpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBBPiBSIG9wZXJhdG9yKCkodHlwZTxSPiwgRiAmIGYsIEEgJiBhLCBsb25nKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHVud3JhcHBlcjxGPjo6dW53cmFwKGYsIDApKGFbYmFzZV90eXBlOjphMV9dLCBhW2Jhc2VfdHlwZTo6YTJfXSwgYVtiYXNlX3R5cGU6OmEzX10sIGFbYmFzZV90eXBlOjphNF9dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBBPiBSIG9wZXJhdG9yKCkodHlwZTxSPiwgRiBjb25zdCAmIGYsIEEgJiBhLCBsb25nKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHVud3JhcHBlcjxGIGNvbnN0Pjo6dW53cmFwKGYsIDApKGFbYmFzZV90eXBlOjphMV9dLCBhW2Jhc2VfdHlwZTo6YTJfXSwgYVtiYXNlX3R5cGU6OmEzX10sIGFbYmFzZV90eXBlOjphNF9dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBBPiB2b2lkIG9wZXJhdG9yKCkodHlwZTx2b2lkPiwgRiAmIGYsIEEgJiBhLCBpbnQpCi0gICAgewotICAgICAgICB1bndyYXBwZXI8Rj46OnVud3JhcChmLCAwKShhW2Jhc2VfdHlwZTo6YTFfXSwgYVtiYXNlX3R5cGU6OmEyX10sIGFbYmFzZV90eXBlOjphM19dLCBhW2Jhc2VfdHlwZTo6YTRfXSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgQT4gdm9pZCBvcGVyYXRvcigpKHR5cGU8dm9pZD4sIEYgY29uc3QgJiBmLCBBICYgYSwgaW50KSBjb25zdAotICAgIHsKLSAgICAgICAgdW53cmFwcGVyPEYgY29uc3Q+Ojp1bndyYXAoZiwgMCkoYVtiYXNlX3R5cGU6OmExX10sIGFbYmFzZV90eXBlOjphMl9dLCBhW2Jhc2VfdHlwZTo6YTNfXSwgYVtiYXNlX3R5cGU6OmE0X10pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFY+IHZvaWQgYWNjZXB0KFYgJiB2KSBjb25zdAotICAgIHsKLSAgICAgICAgYmFzZV90eXBlOjphY2NlcHQodik7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGxpc3Q0IGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmExXywgcmhzLmExXywgMCApICYmCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphMl8sIHJocy5hMl8sIDAgKSAmJgotICAgICAgICAgICAgcmVmX2NvbXBhcmUoIGJhc2VfdHlwZTo6YTNfLCByaHMuYTNfLCAwICkgJiYKLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmE0XywgcmhzLmE0XywgMCApOwotICAgIH0KLX07Ci0KLXRlbXBsYXRlPCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUgPiBjbGFzcyBsaXN0NTogcHJpdmF0ZSBzdG9yYWdlNTwgQTEsIEEyLCBBMywgQTQsIEE1ID4KLXsKLXByaXZhdGU6Ci0KLSAgICB0eXBlZGVmIHN0b3JhZ2U1PCBBMSwgQTIsIEEzLCBBNCwgQTUgPiBiYXNlX3R5cGU7Ci0KLXB1YmxpYzoKLQotICAgIGxpc3Q1KCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUgKTogYmFzZV90eXBlKCBhMSwgYTIsIGEzLCBhNCwgYTUgKSB7fQotCi0gICAgQTEgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwxPikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphMV87IH0KLSAgICBBMiBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDI+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmEyXzsgfQotICAgIEEzIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8Mz4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTNfOyB9Ci0gICAgQTQgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw0PikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphNF87IH0KLSAgICBBNSBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDU+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmE1XzsgfQotCi0gICAgQTEgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwxPiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTFfOyB9Ci0gICAgQTIgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwyPiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTJfOyB9Ci0gICAgQTMgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwzPiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTNfOyB9Ci0gICAgQTQgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw0PiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTRfOyB9Ci0gICAgQTUgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw1PiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTVfOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBUICYgb3BlcmF0b3JbXSAoX2JpOjp2YWx1ZTxUPiAmIHYpIGNvbnN0IHsgcmV0dXJuIHYuZ2V0KCk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IFQgY29uc3QgJiBvcGVyYXRvcltdIChfYmk6OnZhbHVlPFQ+IGNvbnN0ICYgdikgY29uc3QgeyByZXR1cm4gdi5nZXQoKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gVCAmIG9wZXJhdG9yW10gKHJlZmVyZW5jZV93cmFwcGVyPFQ+IGNvbnN0ICYgdikgY29uc3QgeyByZXR1cm4gdi5nZXQoKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgTD4gdHlwZW5hbWUgcmVzdWx0X3RyYWl0czxSLCBGPjo6dHlwZSBvcGVyYXRvcltdIChiaW5kX3Q8UiwgRiwgTD4gJiBiKSBjb25zdCB7IHJldHVybiBiLmV2YWwoKnRoaXMpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBMPiB0eXBlbmFtZSByZXN1bHRfdHJhaXRzPFIsIEY+Ojp0eXBlIG9wZXJhdG9yW10gKGJpbmRfdDxSLCBGLCBMPiBjb25zdCAmIGIpIGNvbnN0IHsgcmV0dXJuIGIuZXZhbCgqdGhpcyk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEE+IFIgb3BlcmF0b3IoKSh0eXBlPFI+LCBGICYgZiwgQSAmIGEsIGxvbmcpCi0gICAgewotICAgICAgICByZXR1cm4gdW53cmFwcGVyPEY+Ojp1bndyYXAoZiwgMCkoYVtiYXNlX3R5cGU6OmExX10sIGFbYmFzZV90eXBlOjphMl9dLCBhW2Jhc2VfdHlwZTo6YTNfXSwgYVtiYXNlX3R5cGU6OmE0X10sIGFbYmFzZV90eXBlOjphNV9dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBBPiBSIG9wZXJhdG9yKCkodHlwZTxSPiwgRiBjb25zdCAmIGYsIEEgJiBhLCBsb25nKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHVud3JhcHBlcjxGIGNvbnN0Pjo6dW53cmFwKGYsIDApKGFbYmFzZV90eXBlOjphMV9dLCBhW2Jhc2VfdHlwZTo6YTJfXSwgYVtiYXNlX3R5cGU6OmEzX10sIGFbYmFzZV90eXBlOjphNF9dLCBhW2Jhc2VfdHlwZTo6YTVfXSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgQT4gdm9pZCBvcGVyYXRvcigpKHR5cGU8dm9pZD4sIEYgJiBmLCBBICYgYSwgaW50KQotICAgIHsKLSAgICAgICAgdW53cmFwcGVyPEY+Ojp1bndyYXAoZiwgMCkoYVtiYXNlX3R5cGU6OmExX10sIGFbYmFzZV90eXBlOjphMl9dLCBhW2Jhc2VfdHlwZTo6YTNfXSwgYVtiYXNlX3R5cGU6OmE0X10sIGFbYmFzZV90eXBlOjphNV9dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBBPiB2b2lkIG9wZXJhdG9yKCkodHlwZTx2b2lkPiwgRiBjb25zdCAmIGYsIEEgJiBhLCBpbnQpIGNvbnN0Ci0gICAgewotICAgICAgICB1bndyYXBwZXI8RiBjb25zdD46OnVud3JhcChmLCAwKShhW2Jhc2VfdHlwZTo6YTFfXSwgYVtiYXNlX3R5cGU6OmEyX10sIGFbYmFzZV90eXBlOjphM19dLCBhW2Jhc2VfdHlwZTo6YTRfXSwgYVtiYXNlX3R5cGU6OmE1X10pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFY+IHZvaWQgYWNjZXB0KFYgJiB2KSBjb25zdAotICAgIHsKLSAgICAgICAgYmFzZV90eXBlOjphY2NlcHQodik7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGxpc3Q1IGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmExXywgcmhzLmExXywgMCApICYmCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphMl8sIHJocy5hMl8sIDAgKSAmJgotICAgICAgICAgICAgcmVmX2NvbXBhcmUoIGJhc2VfdHlwZTo6YTNfLCByaHMuYTNfLCAwICkgJiYKLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmE0XywgcmhzLmE0XywgMCApICYmCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphNV8sIHJocy5hNV8sIDAgKTsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2PiBjbGFzcyBsaXN0NjogcHJpdmF0ZSBzdG9yYWdlNjwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiA+Ci17Ci1wcml2YXRlOgotCi0gICAgdHlwZWRlZiBzdG9yYWdlNjwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiA+IGJhc2VfdHlwZTsKLQotcHVibGljOgotCi0gICAgbGlzdDYoIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYgKTogYmFzZV90eXBlKCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2ICkge30KLQotICAgIEExIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8MT4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTFfOyB9Ci0gICAgQTIgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwyPikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphMl87IH0KLSAgICBBMyBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDM+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmEzXzsgfQotICAgIEE0IG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8ND4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTRfOyB9Ci0gICAgQTUgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw1PikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphNV87IH0KLSAgICBBNiBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDY+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmE2XzsgfQotCi0gICAgQTEgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwxPiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTFfOyB9Ci0gICAgQTIgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwyPiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTJfOyB9Ci0gICAgQTMgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwzPiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTNfOyB9Ci0gICAgQTQgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw0PiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTRfOyB9Ci0gICAgQTUgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw1PiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTVfOyB9Ci0gICAgQTYgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw2PiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTZfOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBUICYgb3BlcmF0b3JbXSAoX2JpOjp2YWx1ZTxUPiAmIHYpIGNvbnN0IHsgcmV0dXJuIHYuZ2V0KCk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IFQgY29uc3QgJiBvcGVyYXRvcltdIChfYmk6OnZhbHVlPFQ+IGNvbnN0ICYgdikgY29uc3QgeyByZXR1cm4gdi5nZXQoKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gVCAmIG9wZXJhdG9yW10gKHJlZmVyZW5jZV93cmFwcGVyPFQ+IGNvbnN0ICYgdikgY29uc3QgeyByZXR1cm4gdi5nZXQoKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgTD4gdHlwZW5hbWUgcmVzdWx0X3RyYWl0czxSLCBGPjo6dHlwZSBvcGVyYXRvcltdIChiaW5kX3Q8UiwgRiwgTD4gJiBiKSBjb25zdCB7IHJldHVybiBiLmV2YWwoKnRoaXMpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBMPiB0eXBlbmFtZSByZXN1bHRfdHJhaXRzPFIsIEY+Ojp0eXBlIG9wZXJhdG9yW10gKGJpbmRfdDxSLCBGLCBMPiBjb25zdCAmIGIpIGNvbnN0IHsgcmV0dXJuIGIuZXZhbCgqdGhpcyk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEE+IFIgb3BlcmF0b3IoKSh0eXBlPFI+LCBGICYgZiwgQSAmIGEsIGxvbmcpCi0gICAgewotICAgICAgICByZXR1cm4gdW53cmFwcGVyPEY+Ojp1bndyYXAoZiwgMCkoYVtiYXNlX3R5cGU6OmExX10sIGFbYmFzZV90eXBlOjphMl9dLCBhW2Jhc2VfdHlwZTo6YTNfXSwgYVtiYXNlX3R5cGU6OmE0X10sIGFbYmFzZV90eXBlOjphNV9dLCBhW2Jhc2VfdHlwZTo6YTZfXSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgQT4gUiBvcGVyYXRvcigpKHR5cGU8Uj4sIEYgY29uc3QgJiBmLCBBICYgYSwgbG9uZykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB1bndyYXBwZXI8RiBjb25zdD46OnVud3JhcChmLCAwKShhW2Jhc2VfdHlwZTo6YTFfXSwgYVtiYXNlX3R5cGU6OmEyX10sIGFbYmFzZV90eXBlOjphM19dLCBhW2Jhc2VfdHlwZTo6YTRfXSwgYVtiYXNlX3R5cGU6OmE1X10sIGFbYmFzZV90eXBlOjphNl9dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBBPiB2b2lkIG9wZXJhdG9yKCkodHlwZTx2b2lkPiwgRiAmIGYsIEEgJiBhLCBpbnQpCi0gICAgewotICAgICAgICB1bndyYXBwZXI8Rj46OnVud3JhcChmLCAwKShhW2Jhc2VfdHlwZTo6YTFfXSwgYVtiYXNlX3R5cGU6OmEyX10sIGFbYmFzZV90eXBlOjphM19dLCBhW2Jhc2VfdHlwZTo6YTRfXSwgYVtiYXNlX3R5cGU6OmE1X10sIGFbYmFzZV90eXBlOjphNl9dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBBPiB2b2lkIG9wZXJhdG9yKCkodHlwZTx2b2lkPiwgRiBjb25zdCAmIGYsIEEgJiBhLCBpbnQpIGNvbnN0Ci0gICAgewotICAgICAgICB1bndyYXBwZXI8RiBjb25zdD46OnVud3JhcChmLCAwKShhW2Jhc2VfdHlwZTo6YTFfXSwgYVtiYXNlX3R5cGU6OmEyX10sIGFbYmFzZV90eXBlOjphM19dLCBhW2Jhc2VfdHlwZTo6YTRfXSwgYVtiYXNlX3R5cGU6OmE1X10sIGFbYmFzZV90eXBlOjphNl9dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiB2b2lkIGFjY2VwdChWICYgdikgY29uc3QKLSAgICB7Ci0gICAgICAgIGJhc2VfdHlwZTo6YWNjZXB0KHYpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShsaXN0NiBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybgotCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphMV8sIHJocy5hMV8sIDAgKSAmJgotICAgICAgICAgICAgcmVmX2NvbXBhcmUoIGJhc2VfdHlwZTo6YTJfLCByaHMuYTJfLCAwICkgJiYKLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmEzXywgcmhzLmEzXywgMCApICYmCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphNF8sIHJocy5hNF8sIDAgKSAmJgotICAgICAgICAgICAgcmVmX2NvbXBhcmUoIGJhc2VfdHlwZTo6YTVfLCByaHMuYTVfLCAwICkgJiYKLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmE2XywgcmhzLmE2XywgMCApOwotICAgIH0KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PiBjbGFzcyBsaXN0NzogcHJpdmF0ZSBzdG9yYWdlNzwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcgPgotewotcHJpdmF0ZToKLQotICAgIHR5cGVkZWYgc3RvcmFnZTc8IEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3ID4gYmFzZV90eXBlOwotCi1wdWJsaWM6Ci0KLSAgICBsaXN0NyggQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcgKTogYmFzZV90eXBlKCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNyApIHt9Ci0KLSAgICBBMSBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDE+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmExXzsgfQotICAgIEEyIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8Mj4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTJfOyB9Ci0gICAgQTMgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwzPikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphM187IH0KLSAgICBBNCBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDQ+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmE0XzsgfQotICAgIEE1IG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8NT4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTVfOyB9Ci0gICAgQTYgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw2PikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphNl87IH0KLSAgICBBNyBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDc+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmE3XzsgfQotCi0gICAgQTEgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwxPiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTFfOyB9Ci0gICAgQTIgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwyPiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTJfOyB9Ci0gICAgQTMgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwzPiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTNfOyB9Ci0gICAgQTQgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw0PiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTRfOyB9Ci0gICAgQTUgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw1PiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTVfOyB9Ci0gICAgQTYgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw2PiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTZfOyB9Ci0gICAgQTcgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw3PiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTdfOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBUICYgb3BlcmF0b3JbXSAoX2JpOjp2YWx1ZTxUPiAmIHYpIGNvbnN0IHsgcmV0dXJuIHYuZ2V0KCk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IFQgY29uc3QgJiBvcGVyYXRvcltdIChfYmk6OnZhbHVlPFQ+IGNvbnN0ICYgdikgY29uc3QgeyByZXR1cm4gdi5nZXQoKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gVCAmIG9wZXJhdG9yW10gKHJlZmVyZW5jZV93cmFwcGVyPFQ+IGNvbnN0ICYgdikgY29uc3QgeyByZXR1cm4gdi5nZXQoKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgTD4gdHlwZW5hbWUgcmVzdWx0X3RyYWl0czxSLCBGPjo6dHlwZSBvcGVyYXRvcltdIChiaW5kX3Q8UiwgRiwgTD4gJiBiKSBjb25zdCB7IHJldHVybiBiLmV2YWwoKnRoaXMpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBMPiB0eXBlbmFtZSByZXN1bHRfdHJhaXRzPFIsIEY+Ojp0eXBlIG9wZXJhdG9yW10gKGJpbmRfdDxSLCBGLCBMPiBjb25zdCAmIGIpIGNvbnN0IHsgcmV0dXJuIGIuZXZhbCgqdGhpcyk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEE+IFIgb3BlcmF0b3IoKSh0eXBlPFI+LCBGICYgZiwgQSAmIGEsIGxvbmcpCi0gICAgewotICAgICAgICByZXR1cm4gdW53cmFwcGVyPEY+Ojp1bndyYXAoZiwgMCkoYVtiYXNlX3R5cGU6OmExX10sIGFbYmFzZV90eXBlOjphMl9dLCBhW2Jhc2VfdHlwZTo6YTNfXSwgYVtiYXNlX3R5cGU6OmE0X10sIGFbYmFzZV90eXBlOjphNV9dLCBhW2Jhc2VfdHlwZTo6YTZfXSwgYVtiYXNlX3R5cGU6OmE3X10pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEE+IFIgb3BlcmF0b3IoKSh0eXBlPFI+LCBGIGNvbnN0ICYgZiwgQSAmIGEsIGxvbmcpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdW53cmFwcGVyPEYgY29uc3Q+Ojp1bndyYXAoZiwgMCkoYVtiYXNlX3R5cGU6OmExX10sIGFbYmFzZV90eXBlOjphMl9dLCBhW2Jhc2VfdHlwZTo6YTNfXSwgYVtiYXNlX3R5cGU6OmE0X10sIGFbYmFzZV90eXBlOjphNV9dLCBhW2Jhc2VfdHlwZTo6YTZfXSwgYVtiYXNlX3R5cGU6OmE3X10pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEYsIGNsYXNzIEE+IHZvaWQgb3BlcmF0b3IoKSh0eXBlPHZvaWQ+LCBGICYgZiwgQSAmIGEsIGludCkKLSAgICB7Ci0gICAgICAgIHVud3JhcHBlcjxGPjo6dW53cmFwKGYsIDApKGFbYmFzZV90eXBlOjphMV9dLCBhW2Jhc2VfdHlwZTo6YTJfXSwgYVtiYXNlX3R5cGU6OmEzX10sIGFbYmFzZV90eXBlOjphNF9dLCBhW2Jhc2VfdHlwZTo6YTVfXSwgYVtiYXNlX3R5cGU6OmE2X10sIGFbYmFzZV90eXBlOjphN19dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBBPiB2b2lkIG9wZXJhdG9yKCkodHlwZTx2b2lkPiwgRiBjb25zdCAmIGYsIEEgJiBhLCBpbnQpIGNvbnN0Ci0gICAgewotICAgICAgICB1bndyYXBwZXI8RiBjb25zdD46OnVud3JhcChmLCAwKShhW2Jhc2VfdHlwZTo6YTFfXSwgYVtiYXNlX3R5cGU6OmEyX10sIGFbYmFzZV90eXBlOjphM19dLCBhW2Jhc2VfdHlwZTo6YTRfXSwgYVtiYXNlX3R5cGU6OmE1X10sIGFbYmFzZV90eXBlOjphNl9dLCBhW2Jhc2VfdHlwZTo6YTdfXSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVj4gdm9pZCBhY2NlcHQoViAmIHYpIGNvbnN0Ci0gICAgewotICAgICAgICBiYXNlX3R5cGU6OmFjY2VwdCh2KTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0obGlzdDcgY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4KLQotICAgICAgICAgICAgcmVmX2NvbXBhcmUoIGJhc2VfdHlwZTo6YTFfLCByaHMuYTFfLCAwICkgJiYKLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmEyXywgcmhzLmEyXywgMCApICYmCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphM18sIHJocy5hM18sIDAgKSAmJgotICAgICAgICAgICAgcmVmX2NvbXBhcmUoIGJhc2VfdHlwZTo6YTRfLCByaHMuYTRfLCAwICkgJiYKLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmE1XywgcmhzLmE1XywgMCApICYmCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphNl8sIHJocy5hNl8sIDAgKSAmJgotICAgICAgICAgICAgcmVmX2NvbXBhcmUoIGJhc2VfdHlwZTo6YTdfLCByaHMuYTdfLCAwICk7Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8IGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCA+IGNsYXNzIGxpc3Q4OiBwcml2YXRlIHN0b3JhZ2U4PCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTggPgotewotcHJpdmF0ZToKLQotICAgIHR5cGVkZWYgc3RvcmFnZTg8IEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCA+IGJhc2VfdHlwZTsKLQotcHVibGljOgotCi0gICAgbGlzdDgoIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3LCBBOCBhOCApOiBiYXNlX3R5cGUoIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCApIHt9Ci0KLSAgICBBMSBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDE+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmExXzsgfQotICAgIEEyIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8Mj4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTJfOyB9Ci0gICAgQTMgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwzPikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphM187IH0KLSAgICBBNCBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDQ+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmE0XzsgfQotICAgIEE1IG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8NT4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTVfOyB9Ci0gICAgQTYgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw2PikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphNl87IH0KLSAgICBBNyBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDc+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmE3XzsgfQotICAgIEE4IG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8OD4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YThfOyB9Ci0KLSAgICBBMSBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDE+ICgqKSAoKSkgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphMV87IH0KLSAgICBBMiBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDI+ICgqKSAoKSkgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphMl87IH0KLSAgICBBMyBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDM+ICgqKSAoKSkgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphM187IH0KLSAgICBBNCBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDQ+ICgqKSAoKSkgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphNF87IH0KLSAgICBBNSBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDU+ICgqKSAoKSkgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphNV87IH0KLSAgICBBNiBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDY+ICgqKSAoKSkgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphNl87IH0KLSAgICBBNyBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDc+ICgqKSAoKSkgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphN187IH0KLSAgICBBOCBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDg+ICgqKSAoKSkgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphOF87IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IFQgJiBvcGVyYXRvcltdIChfYmk6OnZhbHVlPFQ+ICYgdikgY29uc3QgeyByZXR1cm4gdi5nZXQoKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gVCBjb25zdCAmIG9wZXJhdG9yW10gKF9iaTo6dmFsdWU8VD4gY29uc3QgJiB2KSBjb25zdCB7IHJldHVybiB2LmdldCgpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBUICYgb3BlcmF0b3JbXSAocmVmZXJlbmNlX3dyYXBwZXI8VD4gY29uc3QgJiB2KSBjb25zdCB7IHJldHVybiB2LmdldCgpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBMPiB0eXBlbmFtZSByZXN1bHRfdHJhaXRzPFIsIEY+Ojp0eXBlIG9wZXJhdG9yW10gKGJpbmRfdDxSLCBGLCBMPiAmIGIpIGNvbnN0IHsgcmV0dXJuIGIuZXZhbCgqdGhpcyk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEw+IHR5cGVuYW1lIHJlc3VsdF90cmFpdHM8UiwgRj46OnR5cGUgb3BlcmF0b3JbXSAoYmluZF90PFIsIEYsIEw+IGNvbnN0ICYgYikgY29uc3QgeyByZXR1cm4gYi5ldmFsKCp0aGlzKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgQT4gUiBvcGVyYXRvcigpKHR5cGU8Uj4sIEYgJiBmLCBBICYgYSwgbG9uZykKLSAgICB7Ci0gICAgICAgIHJldHVybiB1bndyYXBwZXI8Rj46OnVud3JhcChmLCAwKShhW2Jhc2VfdHlwZTo6YTFfXSwgYVtiYXNlX3R5cGU6OmEyX10sIGFbYmFzZV90eXBlOjphM19dLCBhW2Jhc2VfdHlwZTo6YTRfXSwgYVtiYXNlX3R5cGU6OmE1X10sIGFbYmFzZV90eXBlOjphNl9dLCBhW2Jhc2VfdHlwZTo6YTdfXSwgYVtiYXNlX3R5cGU6OmE4X10pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEE+IFIgb3BlcmF0b3IoKSh0eXBlPFI+LCBGIGNvbnN0ICYgZiwgQSAmIGEsIGxvbmcpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdW53cmFwcGVyPEYgY29uc3Q+Ojp1bndyYXAoZiwgMCkoYVtiYXNlX3R5cGU6OmExX10sIGFbYmFzZV90eXBlOjphMl9dLCBhW2Jhc2VfdHlwZTo6YTNfXSwgYVtiYXNlX3R5cGU6OmE0X10sIGFbYmFzZV90eXBlOjphNV9dLCBhW2Jhc2VfdHlwZTo6YTZfXSwgYVtiYXNlX3R5cGU6OmE3X10sIGFbYmFzZV90eXBlOjphOF9dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBBPiB2b2lkIG9wZXJhdG9yKCkodHlwZTx2b2lkPiwgRiAmIGYsIEEgJiBhLCBpbnQpCi0gICAgewotICAgICAgICB1bndyYXBwZXI8Rj46OnVud3JhcChmLCAwKShhW2Jhc2VfdHlwZTo6YTFfXSwgYVtiYXNlX3R5cGU6OmEyX10sIGFbYmFzZV90eXBlOjphM19dLCBhW2Jhc2VfdHlwZTo6YTRfXSwgYVtiYXNlX3R5cGU6OmE1X10sIGFbYmFzZV90eXBlOjphNl9dLCBhW2Jhc2VfdHlwZTo6YTdfXSwgYVtiYXNlX3R5cGU6OmE4X10pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEYsIGNsYXNzIEE+IHZvaWQgb3BlcmF0b3IoKSh0eXBlPHZvaWQ+LCBGIGNvbnN0ICYgZiwgQSAmIGEsIGludCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHVud3JhcHBlcjxGIGNvbnN0Pjo6dW53cmFwKGYsIDApKGFbYmFzZV90eXBlOjphMV9dLCBhW2Jhc2VfdHlwZTo6YTJfXSwgYVtiYXNlX3R5cGU6OmEzX10sIGFbYmFzZV90eXBlOjphNF9dLCBhW2Jhc2VfdHlwZTo6YTVfXSwgYVtiYXNlX3R5cGU6OmE2X10sIGFbYmFzZV90eXBlOjphN19dLCBhW2Jhc2VfdHlwZTo6YThfXSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVj4gdm9pZCBhY2NlcHQoViAmIHYpIGNvbnN0Ci0gICAgewotICAgICAgICBiYXNlX3R5cGU6OmFjY2VwdCh2KTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0obGlzdDggY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIAotICAgICAgICAgICAgcmVmX2NvbXBhcmUoIGJhc2VfdHlwZTo6YTFfLCByaHMuYTFfLCAwICkgJiYKLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmEyXywgcmhzLmEyXywgMCApICYmCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphM18sIHJocy5hM18sIDAgKSAmJgotICAgICAgICAgICAgcmVmX2NvbXBhcmUoIGJhc2VfdHlwZTo6YTRfLCByaHMuYTRfLCAwICkgJiYKLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmE1XywgcmhzLmE1XywgMCApICYmCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphNl8sIHJocy5hNl8sIDAgKSAmJgotICAgICAgICAgICAgcmVmX2NvbXBhcmUoIGJhc2VfdHlwZTo6YTdfLCByaHMuYTdfLCAwICkgJiYKLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmE4XywgcmhzLmE4XywgMCApOwotICAgIH0KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCwgY2xhc3MgQTk+IGNsYXNzIGxpc3Q5OiBwcml2YXRlIHN0b3JhZ2U5PCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsIEE5ID4KLXsKLXByaXZhdGU6Ci0KLSAgICB0eXBlZGVmIHN0b3JhZ2U5PCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsIEE5ID4gYmFzZV90eXBlOwotCi1wdWJsaWM6Ci0KLSAgICBsaXN0OSggQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcsIEE4IGE4LCBBOSBhOSApOiBiYXNlX3R5cGUoIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkgKSB7fQotCi0gICAgQTEgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwxPikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphMV87IH0KLSAgICBBMiBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDI+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmEyXzsgfQotICAgIEEzIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8Mz4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTNfOyB9Ci0gICAgQTQgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw0PikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphNF87IH0KLSAgICBBNSBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDU+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmE1XzsgfQotICAgIEE2IG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8Nj4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTZfOyB9Ci0gICAgQTcgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw3PikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphN187IH0KLSAgICBBOCBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDg+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmE4XzsgfQotICAgIEE5IG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8OT4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTlfOyB9Ci0KLSAgICBBMSBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDE+ICgqKSAoKSkgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphMV87IH0KLSAgICBBMiBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDI+ICgqKSAoKSkgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphMl87IH0KLSAgICBBMyBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDM+ICgqKSAoKSkgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphM187IH0KLSAgICBBNCBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDQ+ICgqKSAoKSkgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphNF87IH0KLSAgICBBNSBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDU+ICgqKSAoKSkgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphNV87IH0KLSAgICBBNiBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDY+ICgqKSAoKSkgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphNl87IH0KLSAgICBBNyBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDc+ICgqKSAoKSkgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphN187IH0KLSAgICBBOCBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDg+ICgqKSAoKSkgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphOF87IH0KLSAgICBBOSBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDk+ICgqKSAoKSkgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphOV87IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IFQgJiBvcGVyYXRvcltdIChfYmk6OnZhbHVlPFQ+ICYgdikgY29uc3QgeyByZXR1cm4gdi5nZXQoKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gVCBjb25zdCAmIG9wZXJhdG9yW10gKF9iaTo6dmFsdWU8VD4gY29uc3QgJiB2KSBjb25zdCB7IHJldHVybiB2LmdldCgpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBUICYgb3BlcmF0b3JbXSAocmVmZXJlbmNlX3dyYXBwZXI8VD4gY29uc3QgJiB2KSBjb25zdCB7IHJldHVybiB2LmdldCgpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBMPiB0eXBlbmFtZSByZXN1bHRfdHJhaXRzPFIsIEY+Ojp0eXBlIG9wZXJhdG9yW10gKGJpbmRfdDxSLCBGLCBMPiAmIGIpIGNvbnN0IHsgcmV0dXJuIGIuZXZhbCgqdGhpcyk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEw+IHR5cGVuYW1lIHJlc3VsdF90cmFpdHM8UiwgRj46OnR5cGUgb3BlcmF0b3JbXSAoYmluZF90PFIsIEYsIEw+IGNvbnN0ICYgYikgY29uc3QgeyByZXR1cm4gYi5ldmFsKCp0aGlzKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgQT4gUiBvcGVyYXRvcigpKHR5cGU8Uj4sIEYgJiBmLCBBICYgYSwgbG9uZykKLSAgICB7Ci0gICAgICAgIHJldHVybiB1bndyYXBwZXI8Rj46OnVud3JhcChmLCAwKShhW2Jhc2VfdHlwZTo6YTFfXSwgYVtiYXNlX3R5cGU6OmEyX10sIGFbYmFzZV90eXBlOjphM19dLCBhW2Jhc2VfdHlwZTo6YTRfXSwgYVtiYXNlX3R5cGU6OmE1X10sIGFbYmFzZV90eXBlOjphNl9dLCBhW2Jhc2VfdHlwZTo6YTdfXSwgYVtiYXNlX3R5cGU6OmE4X10sIGFbYmFzZV90eXBlOjphOV9dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBBPiBSIG9wZXJhdG9yKCkodHlwZTxSPiwgRiBjb25zdCAmIGYsIEEgJiBhLCBsb25nKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHVud3JhcHBlcjxGIGNvbnN0Pjo6dW53cmFwKGYsIDApKGFbYmFzZV90eXBlOjphMV9dLCBhW2Jhc2VfdHlwZTo6YTJfXSwgYVtiYXNlX3R5cGU6OmEzX10sIGFbYmFzZV90eXBlOjphNF9dLCBhW2Jhc2VfdHlwZTo6YTVfXSwgYVtiYXNlX3R5cGU6OmE2X10sIGFbYmFzZV90eXBlOjphN19dLCBhW2Jhc2VfdHlwZTo6YThfXSwgYVtiYXNlX3R5cGU6OmE5X10pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEYsIGNsYXNzIEE+IHZvaWQgb3BlcmF0b3IoKSh0eXBlPHZvaWQ+LCBGICYgZiwgQSAmIGEsIGludCkKLSAgICB7Ci0gICAgICAgIHVud3JhcHBlcjxGPjo6dW53cmFwKGYsIDApKGFbYmFzZV90eXBlOjphMV9dLCBhW2Jhc2VfdHlwZTo6YTJfXSwgYVtiYXNlX3R5cGU6OmEzX10sIGFbYmFzZV90eXBlOjphNF9dLCBhW2Jhc2VfdHlwZTo6YTVfXSwgYVtiYXNlX3R5cGU6OmE2X10sIGFbYmFzZV90eXBlOjphN19dLCBhW2Jhc2VfdHlwZTo6YThfXSwgYVtiYXNlX3R5cGU6OmE5X10pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEYsIGNsYXNzIEE+IHZvaWQgb3BlcmF0b3IoKSh0eXBlPHZvaWQ+LCBGIGNvbnN0ICYgZiwgQSAmIGEsIGludCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHVud3JhcHBlcjxGIGNvbnN0Pjo6dW53cmFwKGYsIDApKGFbYmFzZV90eXBlOjphMV9dLCBhW2Jhc2VfdHlwZTo6YTJfXSwgYVtiYXNlX3R5cGU6OmEzX10sIGFbYmFzZV90eXBlOjphNF9dLCBhW2Jhc2VfdHlwZTo6YTVfXSwgYVtiYXNlX3R5cGU6OmE2X10sIGFbYmFzZV90eXBlOjphN19dLCBhW2Jhc2VfdHlwZTo6YThfXSwgYVtiYXNlX3R5cGU6OmE5X10pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFY+IHZvaWQgYWNjZXB0KFYgJiB2KSBjb25zdAotICAgIHsKLSAgICAgICAgYmFzZV90eXBlOjphY2NlcHQodik7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGxpc3Q5IGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmExXywgcmhzLmExXywgMCApICYmCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphMl8sIHJocy5hMl8sIDAgKSAmJgotICAgICAgICAgICAgcmVmX2NvbXBhcmUoIGJhc2VfdHlwZTo6YTNfLCByaHMuYTNfLCAwICkgJiYKLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmE0XywgcmhzLmE0XywgMCApICYmCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphNV8sIHJocy5hNV8sIDAgKSAmJgotICAgICAgICAgICAgcmVmX2NvbXBhcmUoIGJhc2VfdHlwZTo6YTZfLCByaHMuYTZfLCAwICkgJiYKLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmE3XywgcmhzLmE3XywgMCApICYmCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphOF8sIHJocy5hOF8sIDAgKSAmJgotICAgICAgICAgICAgcmVmX2NvbXBhcmUoIGJhc2VfdHlwZTo6YTlfLCByaHMuYTlfLCAwICk7Ci0gICAgfQotfTsKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotLy8gYmluZF90Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVk9JRF9SRVRVUk5TCi0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEw+IGNsYXNzIGJpbmRfdAotewotcHVibGljOgotCi0gICAgdHlwZWRlZiBiaW5kX3QgdGhpc190eXBlOwotCi0gICAgYmluZF90KEYgZiwgTCBjb25zdCAmIGwpOiBmXyhmKSwgbF8obCkge30KLQotI2RlZmluZSBORE5CT09TVF9CSU5EX1JFVFVSTiByZXR1cm4KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL2JpbmRfdGVtcGxhdGUuaHBwPgotI3VuZGVmIE5ETkJPT1NUX0JJTkRfUkVUVVJOCi0KLX07Ci0KLSNlbHNlCi0KLXRlbXBsYXRlPGNsYXNzIFI+IHN0cnVjdCBiaW5kX3RfZ2VuZXJhdG9yCi17Ci0KLXRlbXBsYXRlPGNsYXNzIEYsIGNsYXNzIEw+IGNsYXNzIGltcGxlbWVudGF0aW9uCi17Ci1wdWJsaWM6Ci0KLSAgICB0eXBlZGVmIGltcGxlbWVudGF0aW9uIHRoaXNfdHlwZTsKLQotICAgIGltcGxlbWVudGF0aW9uKEYgZiwgTCBjb25zdCAmIGwpOiBmXyhmKSwgbF8obCkge30KLQotI2RlZmluZSBORE5CT09TVF9CSU5EX1JFVFVSTiByZXR1cm4KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL2JpbmRfdGVtcGxhdGUuaHBwPgotI3VuZGVmIE5ETkJPT1NUX0JJTkRfUkVUVVJOCi0KLX07Ci0KLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGJpbmRfdF9nZW5lcmF0b3I8dm9pZD4KLXsKLQotdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgTD4gY2xhc3MgaW1wbGVtZW50YXRpb24KLXsKLXByaXZhdGU6Ci0KLSAgICB0eXBlZGVmIHZvaWQgUjsKLQotcHVibGljOgotCi0gICAgdHlwZWRlZiBpbXBsZW1lbnRhdGlvbiB0aGlzX3R5cGU7Ci0KLSAgICBpbXBsZW1lbnRhdGlvbihGIGYsIEwgY29uc3QgJiBsKTogZl8oZiksIGxfKGwpIHt9Ci0KLSNkZWZpbmUgTkROQk9PU1RfQklORF9SRVRVUk4KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL2JpbmRfdGVtcGxhdGUuaHBwPgotI3VuZGVmIE5ETkJPT1NUX0JJTkRfUkVUVVJOCi0KLX07Ci0KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFIyLCBjbGFzcyBGLCBjbGFzcyBMPiBjbGFzcyBiaW5kX3Q6IHB1YmxpYyBiaW5kX3RfZ2VuZXJhdG9yPFIyPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIGltcGxlbWVudGF0aW9uPEYsIEw+Ci17Ci1wdWJsaWM6Ci0KLSAgICBiaW5kX3QoRiBmLCBMIGNvbnN0ICYgbCk6IGJpbmRfdF9nZW5lcmF0b3I8UjI+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgaW1wbGVtZW50YXRpb248RiwgTD4oZiwgbCkge30KLQotfTsKLQotI2VuZGlmCi0KLS8vIGZ1bmN0aW9uX2VxdWFsCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQVJHVU1FTlRfREVQRU5ERU5UX0xPT0tVUAotCi0vLyBwdXQgb3ZlcmxvYWRzIGluIF9iaSwgcmVseSBvbiBBREwKLQotIyBpZm5kZWYgTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgTD4gYm9vbCBmdW5jdGlvbl9lcXVhbCggYmluZF90PFIsIEYsIEw+IGNvbnN0ICYgYSwgYmluZF90PFIsIEYsIEw+IGNvbnN0ICYgYiApCi17Ci0gICAgcmV0dXJuIGEuY29tcGFyZShiKTsKLX0KLQotIyBlbHNlCi0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEw+IGJvb2wgZnVuY3Rpb25fZXF1YWxfaW1wbCggYmluZF90PFIsIEYsIEw+IGNvbnN0ICYgYSwgYmluZF90PFIsIEYsIEw+IGNvbnN0ICYgYiwgaW50ICkKLXsKLSAgICByZXR1cm4gYS5jb21wYXJlKGIpOwotfQotCi0jIGVuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcKLQotI2Vsc2UgLy8gTkROQk9PU1RfTk9fQVJHVU1FTlRfREVQRU5ERU5UX0xPT0tVUAotCi0vLyBwdXQgb3ZlcmxvYWRzIGluIGJvb3N0Ci0KLX0gLy8gbmFtZXNwYWNlIF9iaQotCi0jIGlmbmRlZiBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORwotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBMPiBib29sIGZ1bmN0aW9uX2VxdWFsKCBfYmk6OmJpbmRfdDxSLCBGLCBMPiBjb25zdCAmIGEsIF9iaTo6YmluZF90PFIsIEYsIEw+IGNvbnN0ICYgYiApCi17Ci0gICAgcmV0dXJuIGEuY29tcGFyZShiKTsKLX0KLQotIyBlbHNlCi0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEw+IGJvb2wgZnVuY3Rpb25fZXF1YWxfaW1wbCggX2JpOjpiaW5kX3Q8UiwgRiwgTD4gY29uc3QgJiBhLCBfYmk6OmJpbmRfdDxSLCBGLCBMPiBjb25zdCAmIGIsIGludCApCi17Ci0gICAgcmV0dXJuIGEuY29tcGFyZShiKTsKLX0KLQotIyBlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HCi0KLW5hbWVzcGFjZSBfYmkKLXsKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX0FSR1VNRU5UX0RFUEVOREVOVF9MT09LVVAKLQotLy8gYWRkX3ZhbHVlCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSB8fCAoX19TVU5QUk9fQ0MgPj0gMHg1MzApCi0KLSNpZiBkZWZpbmVkKCBfX0JPUkxBTkRDX18gKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKCBfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU4MikgKQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3QgYWRkX3ZhbHVlCi17Ci0gICAgdHlwZWRlZiBfYmk6OnZhbHVlPFQ+IHR5cGU7Ci19OwotCi0jZWxzZQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgaW50IEkgPiBzdHJ1Y3QgYWRkX3ZhbHVlXzIKLXsKLSAgICB0eXBlZGVmIG5kbmJvb3N0Ojphcmc8ST4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPCBjbGFzcyBUID4gc3RydWN0IGFkZF92YWx1ZV8yPCBULCAwID4KLXsKLSAgICB0eXBlZGVmIF9iaTo6dmFsdWU8IFQgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IGFkZF92YWx1ZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3ZhbHVlXzI8IFQsIG5kbmJvb3N0Ojppc19wbGFjZWhvbGRlcjwgVCA+Ojp2YWx1ZSA+Ojp0eXBlIHR5cGU7Ci19OwotCi0jZW5kaWYKLQotdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IGFkZF92YWx1ZTwgdmFsdWU8VD4gPgotewotICAgIHR5cGVkZWYgX2JpOjp2YWx1ZTxUPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IGFkZF92YWx1ZTwgcmVmZXJlbmNlX3dyYXBwZXI8VD4gPgotewotICAgIHR5cGVkZWYgcmVmZXJlbmNlX3dyYXBwZXI8VD4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGludCBJPiBzdHJ1Y3QgYWRkX3ZhbHVlPCBhcmc8ST4gPgotewotICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmFyZzxJPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8aW50IEk+IHN0cnVjdCBhZGRfdmFsdWU8IGFyZzxJPiAoKikgKCkgPgotewotICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmFyZzxJPiAoKnR5cGUpICgpOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgTD4gc3RydWN0IGFkZF92YWx1ZTwgYmluZF90PFIsIEYsIEw+ID4KLXsKLSAgICB0eXBlZGVmIGJpbmRfdDxSLCBGLCBMPiB0eXBlOwotfTsKLQotI2Vsc2UKLQotdGVtcGxhdGU8aW50IEk+IHN0cnVjdCBfYXZ0XzA7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IF9hdnRfMDwxPgotewotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBpbm5lcgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IF9hdnRfMDwyPgotewotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBpbm5lcgotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2YWx1ZTxUPiB0eXBlOwotICAgIH07Ci19OwotCi10eXBlZGVmIGNoYXIgKCZfYXZ0X3IxKSBbMV07Ci10eXBlZGVmIGNoYXIgKCZfYXZ0X3IyKSBbMl07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IF9hdnRfcjEgX2F2dF9mKHZhbHVlPFQ+KTsKLXRlbXBsYXRlPGNsYXNzIFQ+IF9hdnRfcjEgX2F2dF9mKHJlZmVyZW5jZV93cmFwcGVyPFQ+KTsKLXRlbXBsYXRlPGludCBJPiBfYXZ0X3IxIF9hdnRfZihhcmc8ST4pOwotdGVtcGxhdGU8aW50IEk+IF9hdnRfcjEgX2F2dF9mKGFyZzxJPiAoKikgKCkpOwotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgTD4gX2F2dF9yMSBfYXZ0X2YoYmluZF90PFIsIEYsIEw+KTsKLQotX2F2dF9yMiBfYXZ0X2YoLi4uKTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IGFkZF92YWx1ZQotewotICAgIHN0YXRpYyBUIHQoKTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9hdnRfMDxzaXplb2YoX2F2dF9mKHQoKSkpPjo6dGVtcGxhdGUgaW5uZXI8VD46OnR5cGUgdHlwZTsKLX07Ci0KLSNlbmRpZgotCi0vLyBsaXN0X2F2X04KLQotdGVtcGxhdGU8Y2xhc3MgQTE+IHN0cnVjdCBsaXN0X2F2XzEKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBMT46OnR5cGUgQjE7Ci0gICAgdHlwZWRlZiBsaXN0MTxCMT4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMj4gc3RydWN0IGxpc3RfYXZfMgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3ZhbHVlPEExPjo6dHlwZSBCMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBMj46OnR5cGUgQjI7Ci0gICAgdHlwZWRlZiBsaXN0MjxCMSwgQjI+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzPiBzdHJ1Y3QgbGlzdF9hdl8zCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTE+Ojp0eXBlIEIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3ZhbHVlPEEyPjo6dHlwZSBCMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBMz46OnR5cGUgQjM7Ci0gICAgdHlwZWRlZiBsaXN0MzxCMSwgQjIsIEIzPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQ+IHN0cnVjdCBsaXN0X2F2XzQKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBMT46OnR5cGUgQjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTI+Ojp0eXBlIEIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3ZhbHVlPEEzPjo6dHlwZSBCMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBND46OnR5cGUgQjQ7Ci0gICAgdHlwZWRlZiBsaXN0NDxCMSwgQjIsIEIzLCBCND4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNT4gc3RydWN0IGxpc3RfYXZfNQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3ZhbHVlPEExPjo6dHlwZSBCMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBMj46OnR5cGUgQjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTM+Ojp0eXBlIEIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3ZhbHVlPEE0Pjo6dHlwZSBCNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBNT46OnR5cGUgQjU7Ci0gICAgdHlwZWRlZiBsaXN0NTxCMSwgQjIsIEIzLCBCNCwgQjU+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2PiBzdHJ1Y3QgbGlzdF9hdl82Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTE+Ojp0eXBlIEIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3ZhbHVlPEEyPjo6dHlwZSBCMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBMz46OnR5cGUgQjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTQ+Ojp0eXBlIEI0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3ZhbHVlPEE1Pjo6dHlwZSBCNTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBNj46OnR5cGUgQjY7Ci0gICAgdHlwZWRlZiBsaXN0NjxCMSwgQjIsIEIzLCBCNCwgQjUsIEI2PiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTc+IHN0cnVjdCBsaXN0X2F2XzcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBMT46OnR5cGUgQjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTI+Ojp0eXBlIEIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3ZhbHVlPEEzPjo6dHlwZSBCMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBND46OnR5cGUgQjQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTU+Ojp0eXBlIEI1OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3ZhbHVlPEE2Pjo6dHlwZSBCNjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBNz46OnR5cGUgQjc7Ci0gICAgdHlwZWRlZiBsaXN0NzxCMSwgQjIsIEIzLCBCNCwgQjUsIEI2LCBCNz4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOD4gc3RydWN0IGxpc3RfYXZfOAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3ZhbHVlPEExPjo6dHlwZSBCMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBMj46OnR5cGUgQjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTM+Ojp0eXBlIEIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3ZhbHVlPEE0Pjo6dHlwZSBCNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBNT46OnR5cGUgQjU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTY+Ojp0eXBlIEI2OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3ZhbHVlPEE3Pjo6dHlwZSBCNzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBOD46OnR5cGUgQjg7Ci0gICAgdHlwZWRlZiBsaXN0ODxCMSwgQjIsIEIzLCBCNCwgQjUsIEI2LCBCNywgQjg+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTgsIGNsYXNzIEE5PiBzdHJ1Y3QgbGlzdF9hdl85Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTE+Ojp0eXBlIEIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3ZhbHVlPEEyPjo6dHlwZSBCMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBMz46OnR5cGUgQjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTQ+Ojp0eXBlIEI0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3ZhbHVlPEE1Pjo6dHlwZSBCNTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBNj46OnR5cGUgQjY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTc+Ojp0eXBlIEI3OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3ZhbHVlPEE4Pjo6dHlwZSBCODsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBOT46OnR5cGUgQjk7Ci0gICAgdHlwZWRlZiBsaXN0OTxCMSwgQjIsIEIzLCBCNCwgQjUsIEI2LCBCNywgQjgsIEI5PiB0eXBlOwotfTsKLQotLy8gb3BlcmF0b3IhCi0KLXN0cnVjdCBsb2dpY2FsX25vdAotewotICAgIHRlbXBsYXRlPGNsYXNzIFY+IGJvb2wgb3BlcmF0b3IoKShWIGNvbnN0ICYgdikgY29uc3QgeyByZXR1cm4gIXY7IH0KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEw+Ci0gICAgYmluZF90PCBib29sLCBsb2dpY2FsX25vdCwgbGlzdDE8IGJpbmRfdDxSLCBGLCBMPiA+ID4KLSAgICBvcGVyYXRvciEgKGJpbmRfdDxSLCBGLCBMPiBjb25zdCAmIGYpCi17Ci0gICAgdHlwZWRlZiBsaXN0MTwgYmluZF90PFIsIEYsIEw+ID4gbGlzdF90eXBlOwotICAgIHJldHVybiBiaW5kX3Q8Ym9vbCwgbG9naWNhbF9ub3QsIGxpc3RfdHlwZT4gKCBsb2dpY2FsX25vdCgpLCBsaXN0X3R5cGUoZikgKTsKLX0KLQotLy8gcmVsYXRpb25hbCBvcGVyYXRvcnMKLQotI2RlZmluZSBORE5CT09TVF9CSU5EX09QRVJBVE9SKCBvcCwgbmFtZSApIFwKLVwKLXN0cnVjdCBuYW1lIFwKLXsgXAotICAgIHRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIFc+IGJvb2wgb3BlcmF0b3IoKShWIGNvbnN0ICYgdiwgVyBjb25zdCAmIHcpIGNvbnN0IHsgcmV0dXJuIHYgb3AgdzsgfSBcCi19OyBcCi0gXAotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgTCwgY2xhc3MgQTI+IFwKLSAgICBiaW5kX3Q8IGJvb2wsIG5hbWUsIGxpc3QyPCBiaW5kX3Q8UiwgRiwgTD4sIHR5cGVuYW1lIGFkZF92YWx1ZTxBMj46OnR5cGUgPiA+IFwKLSAgICBvcGVyYXRvciBvcCAoYmluZF90PFIsIEYsIEw+IGNvbnN0ICYgZiwgQTIgYTIpIFwKLXsgXAotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3ZhbHVlPEEyPjo6dHlwZSBCMjsgXAotICAgIHR5cGVkZWYgbGlzdDI8IGJpbmRfdDxSLCBGLCBMPiwgQjI+IGxpc3RfdHlwZTsgXAotICAgIHJldHVybiBiaW5kX3Q8Ym9vbCwgbmFtZSwgbGlzdF90eXBlPiAoIG5hbWUoKSwgbGlzdF90eXBlKGYsIGEyKSApOyBcCi19Ci0KLU5ETkJPT1NUX0JJTkRfT1BFUkFUT1IoID09LCBlcXVhbCApCi1ORE5CT09TVF9CSU5EX09QRVJBVE9SKCAhPSwgbm90X2VxdWFsICkKLQotTkROQk9PU1RfQklORF9PUEVSQVRPUiggPCwgbGVzcyApCi1ORE5CT09TVF9CSU5EX09QRVJBVE9SKCA8PSwgbGVzc19lcXVhbCApCi0KLU5ETkJPT1NUX0JJTkRfT1BFUkFUT1IoID4sIGdyZWF0ZXIgKQotTkROQk9PU1RfQklORF9PUEVSQVRPUiggPj0sIGdyZWF0ZXJfZXF1YWwgKQotCi1ORE5CT09TVF9CSU5EX09QRVJBVE9SKCAmJiwgbG9naWNhbF9hbmQgKQotTkROQk9PU1RfQklORF9PUEVSQVRPUiggfHwsIGxvZ2ljYWxfb3IgKQotCi0jdW5kZWYgTkROQk9PU1RfQklORF9PUEVSQVRPUgotCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPCAzKQotCi0vLyByZXNvbHZlIGFtYmlndWl0eSB3aXRoIHJlbF9vcHMKLQotI2RlZmluZSBORE5CT09TVF9CSU5EX09QRVJBVE9SKCBvcCwgbmFtZSApIFwKLVwKLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEw+IFwKLSAgICBiaW5kX3Q8IGJvb2wsIG5hbWUsIGxpc3QyPCBiaW5kX3Q8UiwgRiwgTD4sIGJpbmRfdDxSLCBGLCBMPiA+ID4gXAotICAgIG9wZXJhdG9yIG9wIChiaW5kX3Q8UiwgRiwgTD4gY29uc3QgJiBmLCBiaW5kX3Q8UiwgRiwgTD4gY29uc3QgJiBnKSBcCi17IFwKLSAgICB0eXBlZGVmIGxpc3QyPCBiaW5kX3Q8UiwgRiwgTD4sIGJpbmRfdDxSLCBGLCBMPiA+IGxpc3RfdHlwZTsgXAotICAgIHJldHVybiBiaW5kX3Q8Ym9vbCwgbmFtZSwgbGlzdF90eXBlPiAoIG5hbWUoKSwgbGlzdF90eXBlKGYsIGcpICk7IFwKLX0KLQotTkROQk9PU1RfQklORF9PUEVSQVRPUiggIT0sIG5vdF9lcXVhbCApCi1ORE5CT09TVF9CSU5EX09QRVJBVE9SKCA8PSwgbGVzc19lcXVhbCApCi1ORE5CT09TVF9CSU5EX09QRVJBVE9SKCA+LCBncmVhdGVyICkKLU5ETkJPT1NUX0JJTkRfT1BFUkFUT1IoID49LCBncmVhdGVyX2VxdWFsICkKLQotI2VuZGlmCi0KLS8vIHZpc2l0X2VhY2gsIEFETAotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0FSR1VNRU5UX0RFUEVOREVOVF9MT09LVVAgKSAmJiAhZGVmaW5lZCggX19CT1JMQU5EQ19fICkgXAotICAgJiYgIShkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSAzICYmIF9fR05VQ19NSU5PUl9fIDw9IDMpCi0KLXRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIFQ+IHZvaWQgdmlzaXRfZWFjaCggViAmIHYsIHZhbHVlPFQ+IGNvbnN0ICYgdCwgaW50ICkKLXsKLSAgICB1c2luZyBuZG5ib29zdDo6dmlzaXRfZWFjaDsKLSAgICBORE5CT09TVF9CSU5EX1ZJU0lUX0VBQ0goIHYsIHQuZ2V0KCksIDAgKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgViwgY2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgTD4gdm9pZCB2aXNpdF9lYWNoKCBWICYgdiwgYmluZF90PFIsIEYsIEw+IGNvbnN0ICYgdCwgaW50ICkKLXsKLSAgICB0LmFjY2VwdCggdiApOwotfQotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgX2JpCi0KLS8vIHZpc2l0X2VhY2gsIG5vIEFETAotCi0jaWYgZGVmaW5lZCggTkROQk9PU1RfTk9fQVJHVU1FTlRfREVQRU5ERU5UX0xPT0tVUCApIHx8IGRlZmluZWQoIF9fQk9STEFORENfXyApIFwKLSAgfHwgKGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDMgJiYgX19HTlVDX01JTk9SX18gPD0gMykKLQotdGVtcGxhdGU8Y2xhc3MgViwgY2xhc3MgVD4gdm9pZCB2aXNpdF9lYWNoKCBWICYgdiwgX2JpOjp2YWx1ZTxUPiBjb25zdCAmIHQsIGludCApCi17Ci0gICAgTkROQk9PU1RfQklORF9WSVNJVF9FQUNIKCB2LCB0LmdldCgpLCAwICk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEw+IHZvaWQgdmlzaXRfZWFjaCggViAmIHYsIF9iaTo6YmluZF90PFIsIEYsIEw+IGNvbnN0ICYgdCwgaW50ICkKLXsKLSAgICB0LmFjY2VwdCggdiApOwotfQotCi0jZW5kaWYKLQotLy8gaXNfYmluZF9leHByZXNzaW9uCi0KLXRlbXBsYXRlPCBjbGFzcyBUID4gc3RydWN0IGlzX2JpbmRfZXhwcmVzc2lvbgotewotICAgIGVudW0gX3Z0IHsgdmFsdWUgPSAwIH07Ci19OwotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gKQotCi10ZW1wbGF0ZTwgY2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgTCA+IHN0cnVjdCBpc19iaW5kX2V4cHJlc3Npb248IF9iaTo6YmluZF90PCBSLCBGLCBMID4gPgotewotICAgIGVudW0gX3Z0IHsgdmFsdWUgPSAxIH07Ci19OwotCi0jZW5kaWYKLQotLy8gYmluZAotCi0jaWZuZGVmIE5ETkJPT1NUX0JJTkQKLSNkZWZpbmUgTkROQk9PU1RfQklORCBiaW5kCi0jZW5kaWYKLQotLy8gZ2VuZXJpYyBmdW5jdGlvbiBvYmplY3RzCi0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEY+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgRiwgX2JpOjpsaXN0MD4KLSAgICBORE5CT09TVF9CSU5EKEYgZikKLXsKLSAgICB0eXBlZGVmIF9iaTo6bGlzdDAgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+IChmLCBsaXN0X3R5cGUoKSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEExPgotICAgIF9iaTo6YmluZF90PFIsIEYsIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8xPEExPjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKEYgZiwgQTEgYTEpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMTxBMT46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+IChmLCBsaXN0X3R5cGUoYTEpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgQTEsIGNsYXNzIEEyPgotICAgIF9iaTo6YmluZF90PFIsIEYsIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8yPEExLCBBMj46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChGIGYsIEExIGExLCBBMiBhMikKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8yPEExLCBBMj46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+IChmLCBsaXN0X3R5cGUoYTEsIGEyKSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTM+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgRiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzM8QTEsIEEyLCBBMz46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChGIGYsIEExIGExLCBBMiBhMiwgQTMgYTMpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMzxBMSwgQTIsIEEzPjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFIsIEYsIGxpc3RfdHlwZT4oZiwgbGlzdF90eXBlKGExLCBhMiwgYTMpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQ+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgRiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzQ8QTEsIEEyLCBBMywgQTQ+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoRiBmLCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl80PEExLCBBMiwgQTMsIEE0Pjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFIsIEYsIGxpc3RfdHlwZT4oZiwgbGlzdF90eXBlKGExLCBhMiwgYTMsIGE0KSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNT4KLSAgICBfYmk6OmJpbmRfdDxSLCBGLCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNTxBMSwgQTIsIEEzLCBBNCwgQTU+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoRiBmLCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNTxBMSwgQTIsIEEzLCBBNCwgQTU+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPihmLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1KSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTY+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgRiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzY8QTEsIEEyLCBBMywgQTQsIEE1LCBBNj46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChGIGYsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNjxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2Pjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFIsIEYsIGxpc3RfdHlwZT4oZiwgbGlzdF90eXBlKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTc+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgRiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzc8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTc+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoRiBmLCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2LCBBNyBhNykKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl83PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3Pjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFIsIEYsIGxpc3RfdHlwZT4oZiwgbGlzdF90eXBlKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOD4KLSAgICBfYmk6OmJpbmRfdDxSLCBGLCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfODxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTg+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoRiBmLCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2LCBBNyBhNywgQTggYTgpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfODxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTg+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPihmLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCwgY2xhc3MgQTk+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgRiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzk8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOT46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChGIGYsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3LCBBOCBhOCwgQTkgYTkpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfOTxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsIEE5Pjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFIsIEYsIGxpc3RfdHlwZT4oZiwgbGlzdF90eXBlKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkpKTsKLX0KLQotLy8gZ2VuZXJpYyBmdW5jdGlvbiBvYmplY3RzLCBhbHRlcm5hdGl2ZSBzeW50YXgKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRj4KLSAgICBfYmk6OmJpbmRfdDxSLCBGLCBfYmk6Omxpc3QwPgotICAgIE5ETkJPT1NUX0JJTkQobmRuYm9vc3Q6OnR5cGU8Uj4sIEYgZikKLXsKLSAgICB0eXBlZGVmIF9iaTo6bGlzdDAgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+IChmLCBsaXN0X3R5cGUoKSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEExPgotICAgIF9iaTo6YmluZF90PFIsIEYsIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8xPEExPjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKG5kbmJvb3N0Ojp0eXBlPFI+LCBGIGYsIEExIGExKQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzE8QTE+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPiAoZiwgbGlzdF90eXBlKGExKSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEExLCBjbGFzcyBBMj4KLSAgICBfYmk6OmJpbmRfdDxSLCBGLCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMjxBMSwgQTI+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQobmRuYm9vc3Q6OnR5cGU8Uj4sIEYgZiwgQTEgYTEsIEEyIGEyKQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzI8QTEsIEEyPjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFIsIEYsIGxpc3RfdHlwZT4gKGYsIGxpc3RfdHlwZShhMSwgYTIpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMz4KLSAgICBfYmk6OmJpbmRfdDxSLCBGLCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMzxBMSwgQTIsIEEzPjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKG5kbmJvb3N0Ojp0eXBlPFI+LCBGIGYsIEExIGExLCBBMiBhMiwgQTMgYTMpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMzxBMSwgQTIsIEEzPjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFIsIEYsIGxpc3RfdHlwZT4oZiwgbGlzdF90eXBlKGExLCBhMiwgYTMpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQ+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgRiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzQ8QTEsIEEyLCBBMywgQTQ+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQobmRuYm9vc3Q6OnR5cGU8Uj4sIEYgZiwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNDxBMSwgQTIsIEEzLCBBND46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KGYsIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCkpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgRiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzU8QTEsIEEyLCBBMywgQTQsIEE1Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKG5kbmJvb3N0Ojp0eXBlPFI+LCBGIGYsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl81PEExLCBBMiwgQTMsIEE0LCBBNT46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KGYsIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNj4KLSAgICBfYmk6OmJpbmRfdDxSLCBGLCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNjxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKG5kbmJvb3N0Ojp0eXBlPFI+LCBGIGYsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNjxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2Pjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFIsIEYsIGxpc3RfdHlwZT4oZiwgbGlzdF90eXBlKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTc+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgRiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzc8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTc+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQobmRuYm9vc3Q6OnR5cGU8Uj4sIEYgZiwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNzxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNz46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KGYsIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNykpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTg+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgRiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzg8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKG5kbmJvb3N0Ojp0eXBlPFI+LCBGIGYsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3LCBBOCBhOCkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl84PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOD46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KGYsIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOT4KLSAgICBfYmk6OmJpbmRfdDxSLCBGLCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfOTxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsIEE5Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKG5kbmJvb3N0Ojp0eXBlPFI+LCBGIGYsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3LCBBOCBhOCwgQTkgYTkpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfOTxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsIEE5Pjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFIsIEYsIGxpc3RfdHlwZT4oZiwgbGlzdF90eXBlKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkpKTsKLX0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HKQotCi0vLyBhZGFwdGFibGUgZnVuY3Rpb24gb2JqZWN0cwotCi10ZW1wbGF0ZTxjbGFzcyBGPgotICAgIF9iaTo6YmluZF90PF9iaTo6dW5zcGVjaWZpZWQsIEYsIF9iaTo6bGlzdDA+Ci0gICAgTkROQk9PU1RfQklORChGIGYpCi17Ci0gICAgdHlwZWRlZiBfYmk6Omxpc3QwIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8X2JpOjp1bnNwZWNpZmllZCwgRiwgbGlzdF90eXBlPiAoZiwgbGlzdF90eXBlKCkpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBBMT4KLSAgICBfYmk6OmJpbmRfdDxfYmk6OnVuc3BlY2lmaWVkLCBGLCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMTxBMT46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChGIGYsIEExIGExKQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzE8QTE+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8X2JpOjp1bnNwZWNpZmllZCwgRiwgbGlzdF90eXBlPiAoZiwgbGlzdF90eXBlKGExKSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIEYsIGNsYXNzIEExLCBjbGFzcyBBMj4KLSAgICBfYmk6OmJpbmRfdDxfYmk6OnVuc3BlY2lmaWVkLCBGLCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMjxBMSwgQTI+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoRiBmLCBBMSBhMSwgQTIgYTIpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMjxBMSwgQTI+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8X2JpOjp1bnNwZWNpZmllZCwgRiwgbGlzdF90eXBlPiAoZiwgbGlzdF90eXBlKGExLCBhMikpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzPgotICAgIF9iaTo6YmluZF90PF9iaTo6dW5zcGVjaWZpZWQsIEYsIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8zPEExLCBBMiwgQTM+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoRiBmLCBBMSBhMSwgQTIgYTIsIEEzIGEzKQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzM8QTEsIEEyLCBBMz46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxfYmk6OnVuc3BlY2lmaWVkLCBGLCBsaXN0X3R5cGU+KGYsIGxpc3RfdHlwZShhMSwgYTIsIGEzKSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIEYsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PgotICAgIF9iaTo6YmluZF90PF9iaTo6dW5zcGVjaWZpZWQsIEYsIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl80PEExLCBBMiwgQTMsIEE0Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKEYgZiwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNDxBMSwgQTIsIEEzLCBBND46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxfYmk6OnVuc3BlY2lmaWVkLCBGLCBsaXN0X3R5cGU+KGYsIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCkpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+Ci0gICAgX2JpOjpiaW5kX3Q8X2JpOjp1bnNwZWNpZmllZCwgRiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzU8QTEsIEEyLCBBMywgQTQsIEE1Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKEYgZiwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1KQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzU8QTEsIEEyLCBBMywgQTQsIEE1Pjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PF9iaTo6dW5zcGVjaWZpZWQsIEYsIGxpc3RfdHlwZT4oZiwgbGlzdF90eXBlKGExLCBhMiwgYTMsIGE0LCBhNSkpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2PgotICAgIF9iaTo6YmluZF90PF9iaTo6dW5zcGVjaWZpZWQsIEYsIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl82PEExLCBBMiwgQTMsIEE0LCBBNSwgQTY+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoRiBmLCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2KQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzY8QTEsIEEyLCBBMywgQTQsIEE1LCBBNj46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxfYmk6OnVuc3BlY2lmaWVkLCBGLCBsaXN0X3R5cGU+KGYsIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIEYsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PgotICAgIF9iaTo6YmluZF90PF9iaTo6dW5zcGVjaWZpZWQsIEYsIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl83PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKEYgZiwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNzxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNz46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxfYmk6OnVuc3BlY2lmaWVkLCBGLCBsaXN0X3R5cGU+KGYsIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNykpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTg+Ci0gICAgX2JpOjpiaW5kX3Q8X2JpOjp1bnNwZWNpZmllZCwgRiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzg8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKEYgZiwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcsIEE4IGE4KQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzg8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4Pjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PF9iaTo6dW5zcGVjaWZpZWQsIEYsIGxpc3RfdHlwZT4oZiwgbGlzdF90eXBlKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCkpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTgsIGNsYXNzIEE5PgotICAgIF9iaTo6YmluZF90PF9iaTo6dW5zcGVjaWZpZWQsIEYsIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl85PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgQTk+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoRiBmLCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2LCBBNyBhNywgQTggYTgsIEE5IGE5KQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzk8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOT46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxfYmk6OnVuc3BlY2lmaWVkLCBGLCBsaXN0X3R5cGU+KGYsIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5KSk7Ci19Ci0KLSNlbmRpZiAvLyAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORykKLQotLy8gZnVuY3Rpb24gcG9pbnRlcnMKLQotI2RlZmluZSBORE5CT09TVF9CSU5EX0NDCi0jZGVmaW5lIE5ETkJPT1NUX0JJTkRfU1QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2JpbmQvYmluZF9jYy5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9CSU5EX0NDCi0jdW5kZWYgTkROQk9PU1RfQklORF9TVAotCi0jaWZkZWYgTkROQk9PU1RfQklORF9FTkFCTEVfU1REQ0FMTAotCi0jZGVmaW5lIE5ETkJPT1NUX0JJTkRfQ0MgX19zdGRjYWxsCi0jZGVmaW5lIE5ETkJPT1NUX0JJTkRfU1QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2JpbmQvYmluZF9jYy5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9CSU5EX0NDCi0jdW5kZWYgTkROQk9PU1RfQklORF9TVAotCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX0JJTkRfRU5BQkxFX0ZBU1RDQUxMCi0KLSNkZWZpbmUgTkROQk9PU1RfQklORF9DQyBfX2Zhc3RjYWxsCi0jZGVmaW5lIE5ETkJPT1NUX0JJTkRfU1QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2JpbmQvYmluZF9jYy5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9CSU5EX0NDCi0jdW5kZWYgTkROQk9PU1RfQklORF9TVAotCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX0JJTkRfRU5BQkxFX1BBU0NBTAotCi0jZGVmaW5lIE5ETkJPT1NUX0JJTkRfU1QgcGFzY2FsCi0jZGVmaW5lIE5ETkJPT1NUX0JJTkRfQ0MKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2JpbmQvYmluZF9jYy5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9CSU5EX1NUCi0jdW5kZWYgTkROQk9PU1RfQklORF9DQwotCi0jZW5kaWYKLQotLy8gbWVtYmVyIGZ1bmN0aW9uIHBvaW50ZXJzCi0KLSNkZWZpbmUgTkROQk9PU1RfQklORF9NRl9OQU1FKFgpIFgKLSNkZWZpbmUgTkROQk9PU1RfQklORF9NRl9DQwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC9iaW5kX21mX2NjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL2JpbmRfbWYyX2NjLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX0JJTkRfTUZfTkFNRQotI3VuZGVmIE5ETkJPT1NUX0JJTkRfTUZfQ0MKLQotI2lmZGVmIE5ETkJPT1NUX01FTV9GTl9FTkFCTEVfQ0RFQ0wKLQotI2RlZmluZSBORE5CT09TVF9CSU5EX01GX05BTUUoWCkgWCMjX2NkZWNsCi0jZGVmaW5lIE5ETkJPT1NUX0JJTkRfTUZfQ0MgX19jZGVjbAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC9iaW5kX21mX2NjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL2JpbmRfbWYyX2NjLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX0JJTkRfTUZfTkFNRQotI3VuZGVmIE5ETkJPT1NUX0JJTkRfTUZfQ0MKLQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NRU1fRk5fRU5BQkxFX1NURENBTEwKLQotI2RlZmluZSBORE5CT09TVF9CSU5EX01GX05BTUUoWCkgWCMjX3N0ZGNhbGwKLSNkZWZpbmUgTkROQk9PU1RfQklORF9NRl9DQyBfX3N0ZGNhbGwKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2JpbmQvYmluZF9tZl9jYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC9iaW5kX21mMl9jYy5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9CSU5EX01GX05BTUUKLSN1bmRlZiBORE5CT09TVF9CSU5EX01GX0NDCi0KLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTUVNX0ZOX0VOQUJMRV9GQVNUQ0FMTAotCi0jZGVmaW5lIE5ETkJPT1NUX0JJTkRfTUZfTkFNRShYKSBYIyNfZmFzdGNhbGwKLSNkZWZpbmUgTkROQk9PU1RfQklORF9NRl9DQyBfX2Zhc3RjYWxsCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL2JpbmRfbWZfY2MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2JpbmQvYmluZF9tZjJfY2MuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfQklORF9NRl9OQU1FCi0jdW5kZWYgTkROQk9PU1RfQklORF9NRl9DQwotCi0jZW5kaWYKLQotLy8gZGF0YSBtZW1iZXIgcG9pbnRlcnMKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgfHwgZGVmaW5lZChORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORykgXAotICAgIHx8ICggZGVmaW5lZChfX0JPUkxBTkRDX18pICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoIF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKCAweDYyMCApICkgKQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMT4KLV9iaTo6YmluZF90PCBSLCBfbWZpOjpkbTxSLCBUPiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzE8QTE+Ojp0eXBlID4KLSAgICBORE5CT09TVF9CSU5EKFIgVDo6KmYsIEExIGExKQotewotICAgIHR5cGVkZWYgX21maTo6ZG08UiwgVD4gRjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8xPEExPjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFIsIEYsIGxpc3RfdHlwZT4oIEYoZiksIGxpc3RfdHlwZShhMSkgKTsKLX0KLQotI2Vsc2UKLQotbmFtZXNwYWNlIF9iaQotewotCi10ZW1wbGF0ZTwgY2xhc3MgUG0sIGludCBJID4gc3RydWN0IGFkZF9jcmVmOwotCi10ZW1wbGF0ZTwgY2xhc3MgTSwgY2xhc3MgVCA+IHN0cnVjdCBhZGRfY3JlZjwgTSBUOjoqLCAwID4KLXsKLSAgICB0eXBlZGVmIE0gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPCBjbGFzcyBNLCBjbGFzcyBUID4gc3RydWN0IGFkZF9jcmVmPCBNIFQ6OiosIDEgPgotewotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDE4MCkKLSNlbmRpZgotICAgIHR5cGVkZWYgTSBjb25zdCAmIHR5cGU7Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotfTsKLQotdGVtcGxhdGU8IGNsYXNzIFIsIGNsYXNzIFQgPiBzdHJ1Y3QgYWRkX2NyZWY8IFIgKFQ6OiopICgpLCAxID4KLXsKLSAgICB0eXBlZGVmIHZvaWQgdHlwZTsKLX07Ci0KLSNpZiAhZGVmaW5lZChfX0lCTUNQUF9fKSB8fCBfX0lCTUNQUF9GVU5DX0NWX1RNUExfQVJHX0RFRFVDVElPTgotCi10ZW1wbGF0ZTwgY2xhc3MgUiwgY2xhc3MgVCA+IHN0cnVjdCBhZGRfY3JlZjwgUiAoVDo6KikgKCkgY29uc3QsIDEgPgotewotICAgIHR5cGVkZWYgdm9pZCB0eXBlOwotfTsKLQotI2VuZGlmIC8vIF9fSUJNQ1BQX18KLQotdGVtcGxhdGU8Y2xhc3MgUj4gc3RydWN0IGlzcmVmCi17Ci0gICAgZW51bSB2YWx1ZV90eXBlIHsgdmFsdWUgPSAwIH07Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBSPiBzdHJ1Y3QgaXNyZWY8IFImID4KLXsKLSAgICBlbnVtIHZhbHVlX3R5cGUgeyB2YWx1ZSA9IDEgfTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFI+IHN0cnVjdCBpc3JlZjwgUiogPgotewotICAgIGVudW0gdmFsdWVfdHlwZSB7IHZhbHVlID0gMSB9OwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgUG0sIGNsYXNzIEExPiBzdHJ1Y3QgZG1fcmVzdWx0Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfY3JlZjwgUG0sIDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgUG0sIGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEw+IHN0cnVjdCBkbV9yZXN1bHQ8IFBtLCBiaW5kX3Q8UiwgRiwgTD4gPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmluZF90PFIsIEYsIEw+OjpyZXN1bHRfdHlwZSByZXN1bHRfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF9jcmVmPCBQbSwgaXNyZWY8IHJlc3VsdF90eXBlID46OnZhbHVlID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIF9iaQotCi10ZW1wbGF0ZTwgY2xhc3MgQTEsIGNsYXNzIE0sIGNsYXNzIFQgPgotCi1fYmk6OmJpbmRfdDwKLSAgICB0eXBlbmFtZSBfYmk6OmRtX3Jlc3VsdDwgTSBUOjoqLCBBMSA+Ojp0eXBlLAotICAgIF9tZmk6OmRtPE0sIFQ+LAotICAgIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8xPEExPjo6dHlwZQotPgotCi1ORE5CT09TVF9CSU5EKCBNIFQ6OipmLCBBMSBhMSApCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6OmRtX3Jlc3VsdDwgTSBUOjoqLCBBMSA+Ojp0eXBlIHJlc3VsdF90eXBlOwotICAgIHR5cGVkZWYgX21maTo6ZG08TSwgVD4gRjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8xPEExPjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PCByZXN1bHRfdHlwZSwgRiwgbGlzdF90eXBlID4oIEYoIGYgKSwgbGlzdF90eXBlKCBhMSApICk7Ci19Ci0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWZuZGVmIE5ETkJPT1NUX0JJTkRfTk9fUExBQ0VIT0xERVJTCi0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvYmluZC9wbGFjZWhvbGRlcnMuaHBwPgotCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgcHJhZ21hIHdhcm5pbmcoZGVmYXVsdDogNDUxMikgLy8gYXNzaWdubWVudCBvcGVyYXRvciBjb3VsZCBub3QgYmUgZ2VuZXJhdGVkCi0jIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9CSU5EX0JJTkRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2JpbmQvYmluZF9jYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2JpbmQvYmluZF9jYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiOTVlNmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9iaW5kL2JpbmRfY2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE3ICswLDAgQEAKLS8vCi0vLyAgYmluZC9iaW5kX2NjLmhwcCAtIHN1cHBvcnQgZm9yIGRpZmZlcmVudCBjYWxsaW5nIGNvbnZlbnRpb25zCi0vLwotLy8gIERvIG5vdCBpbmNsdWRlIHRoaXMgaGVhZGVyIGRpcmVjdGx5LgotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZC4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2JpbmQvYmluZC5odG1sIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLQotdGVtcGxhdGU8Y2xhc3MgUj4KLSAgICBfYmk6OmJpbmRfdDxSLCBORE5CT09TVF9CSU5EX1NUIFIgKE5ETkJPT1NUX0JJTkRfQ0MgKikgKCksIF9iaTo6bGlzdDA+Ci0gICAgTkROQk9PU1RfQklORChORE5CT09TVF9CSU5EX1NUIFIgKE5ETkJPT1NUX0JJTkRfQ0MgKmYpICgpKQotewotICAgIHR5cGVkZWYgTkROQk9PU1RfQklORF9TVCBSIChORE5CT09TVF9CSU5EX0NDICpGKSAoKTsKLSAgICB0eXBlZGVmIF9iaTo6bGlzdDAgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+IChmLCBsaXN0X3R5cGUoKSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEIxLCBjbGFzcyBBMT4KLSAgICBfYmk6OmJpbmRfdDxSLCBORE5CT09TVF9CSU5EX1NUIFIgKE5ETkJPT1NUX0JJTkRfQ0MgKikgKEIxKSwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzE8QTE+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoTkROQk9PU1RfQklORF9TVCBSIChORE5CT09TVF9CSU5EX0NDICpmKSAoQjEpLCBBMSBhMSkKLXsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX0JJTkRfU1QgUiAoTkROQk9PU1RfQklORF9DQyAqRikgKEIxKTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8xPEExPjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFIsIEYsIGxpc3RfdHlwZT4gKGYsIGxpc3RfdHlwZShhMSkpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEExLCBjbGFzcyBBMj4KLSAgICBfYmk6OmJpbmRfdDxSLCBORE5CT09TVF9CSU5EX1NUIFIgKE5ETkJPT1NUX0JJTkRfQ0MgKikgKEIxLCBCMiksIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8yPEExLCBBMj46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChORE5CT09TVF9CSU5EX1NUIFIgKE5ETkJPT1NUX0JJTkRfQ0MgKmYpIChCMSwgQjIpLCBBMSBhMSwgQTIgYTIpCi17Ci0gICAgdHlwZWRlZiBORE5CT09TVF9CSU5EX1NUIFIgKE5ETkJPT1NUX0JJTkRfQ0MgKkYpIChCMSwgQjIpOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzI8QTEsIEEyPjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFIsIEYsIGxpc3RfdHlwZT4gKGYsIGxpc3RfdHlwZShhMSwgYTIpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLAotICAgIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTM+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgTkROQk9PU1RfQklORF9TVCBSIChORE5CT09TVF9CSU5EX0NDICopIChCMSwgQjIsIEIzKSwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzM8QTEsIEEyLCBBMz46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChORE5CT09TVF9CSU5EX1NUIFIgKE5ETkJPT1NUX0JJTkRfQ0MgKmYpIChCMSwgQjIsIEIzKSwgQTEgYTEsIEEyIGEyLCBBMyBhMykKLXsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX0JJTkRfU1QgUiAoTkROQk9PU1RfQklORF9DQyAqRikgKEIxLCBCMiwgQjMpOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzM8QTEsIEEyLCBBMz46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KGYsIGxpc3RfdHlwZShhMSwgYTIsIGEzKSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsCi0gICAgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsCi0gICAgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQ+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgTkROQk9PU1RfQklORF9TVCBSIChORE5CT09TVF9CSU5EX0NDICopIChCMSwgQjIsIEIzLCBCNCksIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl80PEExLCBBMiwgQTMsIEE0Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKE5ETkJPT1NUX0JJTkRfU1QgUiAoTkROQk9PU1RfQklORF9DQyAqZikgKEIxLCBCMiwgQjMsIEI0KSwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQpCi17Ci0gICAgdHlwZWRlZiBORE5CT09TVF9CSU5EX1NUIFIgKE5ETkJPT1NUX0JJTkRfQ0MgKkYpIChCMSwgQjIsIEIzLCBCNCk7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNDxBMSwgQTIsIEEzLCBBND46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KGYsIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCkpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLAotICAgIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjMsIGNsYXNzIEI0LCBjbGFzcyBCNSwKLSAgICBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgTkROQk9PU1RfQklORF9TVCBSIChORE5CT09TVF9CSU5EX0NDICopIChCMSwgQjIsIEIzLCBCNCwgQjUpLCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNTxBMSwgQTIsIEEzLCBBNCwgQTU+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoTkROQk9PU1RfQklORF9TVCBSIChORE5CT09TVF9CSU5EX0NDICpmKSAoQjEsIEIyLCBCMywgQjQsIEI1KSwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1KQotewotICAgIHR5cGVkZWYgTkROQk9PU1RfQklORF9TVCBSIChORE5CT09TVF9CSU5EX0NDICpGKSAoQjEsIEIyLCBCMywgQjQsIEI1KTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl81PEExLCBBMiwgQTMsIEE0LCBBNT46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KGYsIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjUsIGNsYXNzIEI2LAotICAgIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTY+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgTkROQk9PU1RfQklORF9TVCBSIChORE5CT09TVF9CSU5EX0NDICopIChCMSwgQjIsIEIzLCBCNCwgQjUsIEI2KSwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzY8QTEsIEEyLCBBMywgQTQsIEE1LCBBNj46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChORE5CT09TVF9CSU5EX1NUIFIgKE5ETkJPT1NUX0JJTkRfQ0MgKmYpIChCMSwgQjIsIEIzLCBCNCwgQjUsIEI2KSwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNikKLXsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX0JJTkRfU1QgUiAoTkROQk9PU1RfQklORF9DQyAqRikgKEIxLCBCMiwgQjMsIEI0LCBCNSwgQjYpOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzY8QTEsIEEyLCBBMywgQTQsIEE1LCBBNj46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KGYsIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsCi0gICAgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsIGNsYXNzIEI1LCBjbGFzcyBCNiwgY2xhc3MgQjcsCi0gICAgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTc+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgTkROQk9PU1RfQklORF9TVCBSIChORE5CT09TVF9CSU5EX0NDICopIChCMSwgQjIsIEIzLCBCNCwgQjUsIEI2LCBCNyksIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl83PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKE5ETkJPT1NUX0JJTkRfU1QgUiAoTkROQk9PU1RfQklORF9DQyAqZikgKEIxLCBCMiwgQjMsIEI0LCBCNSwgQjYsIEI3KSwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcpCi17Ci0gICAgdHlwZWRlZiBORE5CT09TVF9CSU5EX1NUIFIgKE5ETkJPT1NUX0JJTkRfQ0MgKkYpIChCMSwgQjIsIEIzLCBCNCwgQjUsIEI2LCBCNyk7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNzxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNz46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KGYsIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNykpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLAotICAgIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjMsIGNsYXNzIEI0LCBjbGFzcyBCNSwgY2xhc3MgQjYsIGNsYXNzIEI3LCBjbGFzcyBCOCwKLSAgICBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTg+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgTkROQk9PU1RfQklORF9TVCBSIChORE5CT09TVF9CSU5EX0NDICopIChCMSwgQjIsIEIzLCBCNCwgQjUsIEI2LCBCNywgQjgpLCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfODxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTg+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoTkROQk9PU1RfQklORF9TVCBSIChORE5CT09TVF9CSU5EX0NDICpmKSAoQjEsIEIyLCBCMywgQjQsIEI1LCBCNiwgQjcsIEI4KSwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcsIEE4IGE4KQotewotICAgIHR5cGVkZWYgTkROQk9PU1RfQklORF9TVCBSIChORE5CT09TVF9CSU5EX0NDICpGKSAoQjEsIEIyLCBCMywgQjQsIEI1LCBCNiwgQjcsIEI4KTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl84PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOD46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KGYsIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjUsIGNsYXNzIEI2LCBjbGFzcyBCNywgY2xhc3MgQjgsIGNsYXNzIEI5LAotICAgIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCwgY2xhc3MgQTk+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgTkROQk9PU1RfQklORF9TVCBSIChORE5CT09TVF9CSU5EX0NDICopIChCMSwgQjIsIEIzLCBCNCwgQjUsIEI2LCBCNywgQjgsIEI5KSwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzk8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOT46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChORE5CT09TVF9CSU5EX1NUIFIgKE5ETkJPT1NUX0JJTkRfQ0MgKmYpIChCMSwgQjIsIEIzLCBCNCwgQjUsIEI2LCBCNywgQjgsIEI5KSwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcsIEE4IGE4LCBBOSBhOSkKLXsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX0JJTkRfU1QgUiAoTkROQk9PU1RfQklORF9DQyAqRikgKEIxLCBCMiwgQjMsIEI0LCBCNSwgQjYsIEI3LCBCOCwgQjkpOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzk8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOT46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KGYsIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5KSk7Ci19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2JpbmQvYmluZF9tZjJfY2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9iaW5kL2JpbmRfbWYyX2NjLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTYzZGVlZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2JpbmQvYmluZF9tZjJfY2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjI4ICswLDAgQEAKLS8vCi0vLyAgYmluZC9iaW5kX21mMl9jYy5ocHAgLSBtZW1iZXIgZnVuY3Rpb25zLCB0eXBlPD4gc3ludGF4Ci0vLwotLy8gIERvIG5vdCBpbmNsdWRlIHRoaXMgaGVhZGVyIGRpcmVjdGx5LgotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZC4KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDggUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dAotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9iaW5kL2JpbmQuaHRtbCBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0KLS8vIDAKLQotdGVtcGxhdGU8Y2xhc3MgUnQyLCBjbGFzcyBSLCBjbGFzcyBULAotICAgIGNsYXNzIEExPgotICAgIF9iaTo6YmluZF90PFJ0MiwgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKG1mMCk8UiwgVD4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8xPEExPjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKG5kbmJvb3N0Ojp0eXBlPFJ0Mj4sIFIgKE5ETkJPT1NUX0JJTkRfTUZfQ0MgVDo6KmYpICgpLCBBMSBhMSkKLXsKLSAgICB0eXBlZGVmIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShtZjApPFIsIFQ+IEY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMTxBMT46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSdDIsIEYsIGxpc3RfdHlwZT4oRihmKSwgbGlzdF90eXBlKGExKSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFJ0MiwgY2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBBMT4KLSAgICBfYmk6OmJpbmRfdDxSdDIsIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWYwKTxSLCBUPiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzE8QTE+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQobmRuYm9vc3Q6OnR5cGU8UnQyPiwgUiAoTkROQk9PU1RfQklORF9NRl9DQyBUOjoqZikgKCkgY29uc3QsIEExIGExKQotewotICAgIHR5cGVkZWYgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKGNtZjApPFIsIFQ+IEY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMTxBMT46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSdDIsIEYsIGxpc3RfdHlwZT4oRihmKSwgbGlzdF90eXBlKGExKSk7Ci19Ci0KLS8vIDEKLQotdGVtcGxhdGU8Y2xhc3MgUnQyLCBjbGFzcyBSLCBjbGFzcyBULAotICAgIGNsYXNzIEIxLAotICAgIGNsYXNzIEExLCBjbGFzcyBBMj4KLSAgICBfYmk6OmJpbmRfdDxSdDIsIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShtZjEpPFIsIFQsIEIxPiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzI8QTEsIEEyPjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKG5kbmJvb3N0Ojp0eXBlPFJ0Mj4sIFIgKE5ETkJPT1NUX0JJTkRfTUZfQ0MgVDo6KmYpIChCMSksIEExIGExLCBBMiBhMikKLXsKLSAgICB0eXBlZGVmIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShtZjEpPFIsIFQsIEIxPiBGOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzI8QTEsIEEyPjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFJ0MiwgRiwgbGlzdF90eXBlPihGKGYpLCBsaXN0X3R5cGUoYTEsIGEyKSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFJ0MiwgY2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwKLSAgICBjbGFzcyBBMSwgY2xhc3MgQTI+Ci0gICAgX2JpOjpiaW5kX3Q8UnQyLCBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUoY21mMSk8UiwgVCwgQjE+LCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMjxBMSwgQTI+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQobmRuYm9vc3Q6OnR5cGU8UnQyPiwgUiAoTkROQk9PU1RfQklORF9NRl9DQyBUOjoqZikgKEIxKSBjb25zdCwgQTEgYTEsIEEyIGEyKQotewotICAgIHR5cGVkZWYgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKGNtZjEpPFIsIFQsIEIxPiBGOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzI8QTEsIEEyPjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFJ0MiwgRiwgbGlzdF90eXBlPihGKGYpLCBsaXN0X3R5cGUoYTEsIGEyKSk7Ci19Ci0KLS8vIDIKLQotdGVtcGxhdGU8Y2xhc3MgUnQyLCBjbGFzcyBSLCBjbGFzcyBULAotICAgIGNsYXNzIEIxLCBjbGFzcyBCMiwKLSAgICBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzPgotICAgIF9iaTo6YmluZF90PFJ0MiwgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKG1mMik8UiwgVCwgQjEsIEIyPiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzM8QTEsIEEyLCBBMz46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChuZG5ib29zdDo6dHlwZTxSdDI+LCBSIChORE5CT09TVF9CSU5EX01GX0NDIFQ6OipmKSAoQjEsIEIyKSwgQTEgYTEsIEEyIGEyLCBBMyBhMykKLXsKLSAgICB0eXBlZGVmIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShtZjIpPFIsIFQsIEIxLCBCMj4gRjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8zPEExLCBBMiwgQTM+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UnQyLCBGLCBsaXN0X3R5cGU+KEYoZiksIGxpc3RfdHlwZShhMSwgYTIsIGEzKSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFJ0MiwgY2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsCi0gICAgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMz4KLSAgICBfYmk6OmJpbmRfdDxSdDIsIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWYyKTxSLCBULCBCMSwgQjI+LCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMzxBMSwgQTIsIEEzPjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKG5kbmJvb3N0Ojp0eXBlPFJ0Mj4sIFIgKE5ETkJPT1NUX0JJTkRfTUZfQ0MgVDo6KmYpIChCMSwgQjIpIGNvbnN0LCBBMSBhMSwgQTIgYTIsIEEzIGEzKQotewotICAgIHR5cGVkZWYgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKGNtZjIpPFIsIFQsIEIxLCBCMj4gRjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8zPEExLCBBMiwgQTM+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UnQyLCBGLCBsaXN0X3R5cGU+KEYoZiksIGxpc3RfdHlwZShhMSwgYTIsIGEzKSk7Ci19Ci0KLS8vIDMKLQotdGVtcGxhdGU8Y2xhc3MgUnQyLCBjbGFzcyBSLCBjbGFzcyBULAotICAgIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjMsCi0gICAgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQ+Ci0gICAgX2JpOjpiaW5kX3Q8UnQyLCBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWYzKTxSLCBULCBCMSwgQjIsIEIzPiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzQ8QTEsIEEyLCBBMywgQTQ+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQobmRuYm9vc3Q6OnR5cGU8UnQyPiwgUiAoTkROQk9PU1RfQklORF9NRl9DQyBUOjoqZikgKEIxLCBCMiwgQjMpLCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCkKLXsKLSAgICB0eXBlZGVmIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShtZjMpPFIsIFQsIEIxLCBCMiwgQjM+IEY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNDxBMSwgQTIsIEEzLCBBND46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSdDIsIEYsIGxpc3RfdHlwZT4oRihmKSwgbGlzdF90eXBlKGExLCBhMiwgYTMsIGE0KSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFJ0MiwgY2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLAotICAgIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PgotICAgIF9iaTo6YmluZF90PFJ0MiwgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKGNtZjMpPFIsIFQsIEIxLCBCMiwgQjM+LCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNDxBMSwgQTIsIEEzLCBBND46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChuZG5ib29zdDo6dHlwZTxSdDI+LCBSIChORE5CT09TVF9CSU5EX01GX0NDIFQ6OipmKSAoQjEsIEIyLCBCMykgY29uc3QsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0KQotewotICAgIHR5cGVkZWYgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKGNtZjMpPFIsIFQsIEIxLCBCMiwgQjM+IEY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNDxBMSwgQTIsIEEzLCBBND46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSdDIsIEYsIGxpc3RfdHlwZT4oRihmKSwgbGlzdF90eXBlKGExLCBhMiwgYTMsIGE0KSk7Ci19Ci0KLS8vIDQKLQotdGVtcGxhdGU8Y2xhc3MgUnQyLCBjbGFzcyBSLCBjbGFzcyBULAotICAgIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjMsIGNsYXNzIEI0LAotICAgIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNT4KLSAgICBfYmk6OmJpbmRfdDxSdDIsIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShtZjQpPFIsIFQsIEIxLCBCMiwgQjMsIEI0PiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzU8QTEsIEEyLCBBMywgQTQsIEE1Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKG5kbmJvb3N0Ojp0eXBlPFJ0Mj4sIFIgKE5ETkJPT1NUX0JJTkRfTUZfQ0MgVDo6KmYpIChCMSwgQjIsIEIzLCBCNCksIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSkKLXsKLSAgICB0eXBlZGVmIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShtZjQpPFIsIFQsIEIxLCBCMiwgQjMsIEI0PiBGOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzU8QTEsIEEyLCBBMywgQTQsIEE1Pjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFJ0MiwgRiwgbGlzdF90eXBlPihGKGYpLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1KSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFJ0MiwgY2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwKLSAgICBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+Ci0gICAgX2JpOjpiaW5kX3Q8UnQyLCBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUoY21mNCk8UiwgVCwgQjEsIEIyLCBCMywgQjQ+LCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNTxBMSwgQTIsIEEzLCBBNCwgQTU+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQobmRuYm9vc3Q6OnR5cGU8UnQyPiwgUiAoTkROQk9PU1RfQklORF9NRl9DQyBUOjoqZikgKEIxLCBCMiwgQjMsIEI0KSBjb25zdCwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1KQotewotICAgIHR5cGVkZWYgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKGNtZjQpPFIsIFQsIEIxLCBCMiwgQjMsIEI0PiBGOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzU8QTEsIEEyLCBBMywgQTQsIEE1Pjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFJ0MiwgRiwgbGlzdF90eXBlPihGKGYpLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1KSk7Ci19Ci0KLS8vIDUKLQotdGVtcGxhdGU8Y2xhc3MgUnQyLCBjbGFzcyBSLCBjbGFzcyBULAotICAgIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjMsIGNsYXNzIEI0LCBjbGFzcyBCNSwKLSAgICBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2PgotICAgIF9iaTo6YmluZF90PFJ0MiwgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKG1mNSk8UiwgVCwgQjEsIEIyLCBCMywgQjQsIEI1PiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzY8QTEsIEEyLCBBMywgQTQsIEE1LCBBNj46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChuZG5ib29zdDo6dHlwZTxSdDI+LCBSIChORE5CT09TVF9CSU5EX01GX0NDIFQ6OipmKSAoQjEsIEIyLCBCMywgQjQsIEI1KSwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNikKLXsKLSAgICB0eXBlZGVmIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShtZjUpPFIsIFQsIEIxLCBCMiwgQjMsIEI0LCBCNT4gRjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl82PEExLCBBMiwgQTMsIEE0LCBBNSwgQTY+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UnQyLCBGLCBsaXN0X3R5cGU+KEYoZiksIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFJ0MiwgY2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjUsCi0gICAgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNj4KLSAgICBfYmk6OmJpbmRfdDxSdDIsIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWY1KTxSLCBULCBCMSwgQjIsIEIzLCBCNCwgQjU+LCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNjxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKG5kbmJvb3N0Ojp0eXBlPFJ0Mj4sIFIgKE5ETkJPT1NUX0JJTkRfTUZfQ0MgVDo6KmYpIChCMSwgQjIsIEIzLCBCNCwgQjUpIGNvbnN0LCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2KQotewotICAgIHR5cGVkZWYgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKGNtZjUpPFIsIFQsIEIxLCBCMiwgQjMsIEI0LCBCNT4gRjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl82PEExLCBBMiwgQTMsIEE0LCBBNSwgQTY+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UnQyLCBGLCBsaXN0X3R5cGU+KEYoZiksIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KSk7Ci19Ci0KLS8vIDYKLQotdGVtcGxhdGU8Y2xhc3MgUnQyLCBjbGFzcyBSLCBjbGFzcyBULAotICAgIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjMsIGNsYXNzIEI0LCBjbGFzcyBCNSwgY2xhc3MgQjYsCi0gICAgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTc+Ci0gICAgX2JpOjpiaW5kX3Q8UnQyLCBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWY2KTxSLCBULCBCMSwgQjIsIEIzLCBCNCwgQjUsIEI2PiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzc8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTc+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQobmRuYm9vc3Q6OnR5cGU8UnQyPiwgUiAoTkROQk9PU1RfQklORF9NRl9DQyBUOjoqZikgKEIxLCBCMiwgQjMsIEI0LCBCNSwgQjYpLCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2LCBBNyBhNykKLXsKLSAgICB0eXBlZGVmIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShtZjYpPFIsIFQsIEIxLCBCMiwgQjMsIEI0LCBCNSwgQjY+IEY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNzxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNz46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSdDIsIEYsIGxpc3RfdHlwZT4oRihmKSwgbGlzdF90eXBlKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFJ0MiwgY2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjUsIGNsYXNzIEI2LAotICAgIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PgotICAgIF9iaTo6YmluZF90PFJ0MiwgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKGNtZjYpPFIsIFQsIEIxLCBCMiwgQjMsIEI0LCBCNSwgQjY+LCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNzxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNz46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChuZG5ib29zdDo6dHlwZTxSdDI+LCBSIChORE5CT09TVF9CSU5EX01GX0NDIFQ6OipmKSAoQjEsIEIyLCBCMywgQjQsIEI1LCBCNikgY29uc3QsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3KQotewotICAgIHR5cGVkZWYgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKGNtZjYpPFIsIFQsIEIxLCBCMiwgQjMsIEI0LCBCNSwgQjY+IEY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNzxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNz46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSdDIsIEYsIGxpc3RfdHlwZT4oRihmKSwgbGlzdF90eXBlKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KSk7Ci19Ci0KLS8vIDcKLQotdGVtcGxhdGU8Y2xhc3MgUnQyLCBjbGFzcyBSLCBjbGFzcyBULAotICAgIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjMsIGNsYXNzIEI0LCBjbGFzcyBCNSwgY2xhc3MgQjYsIGNsYXNzIEI3LAotICAgIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOD4KLSAgICBfYmk6OmJpbmRfdDxSdDIsIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShtZjcpPFIsIFQsIEIxLCBCMiwgQjMsIEI0LCBCNSwgQjYsIEI3PiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzg8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKG5kbmJvb3N0Ojp0eXBlPFJ0Mj4sIFIgKE5ETkJPT1NUX0JJTkRfTUZfQ0MgVDo6KmYpIChCMSwgQjIsIEIzLCBCNCwgQjUsIEI2LCBCNyksIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3LCBBOCBhOCkKLXsKLSAgICB0eXBlZGVmIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShtZjcpPFIsIFQsIEIxLCBCMiwgQjMsIEI0LCBCNSwgQjYsIEI3PiBGOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzg8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4Pjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFJ0MiwgRiwgbGlzdF90eXBlPihGKGYpLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFJ0MiwgY2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjUsIGNsYXNzIEI2LCBjbGFzcyBCNywKLSAgICBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTg+Ci0gICAgX2JpOjpiaW5kX3Q8UnQyLCBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUoY21mNyk8UiwgVCwgQjEsIEIyLCBCMywgQjQsIEI1LCBCNiwgQjc+LCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfODxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTg+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQobmRuYm9vc3Q6OnR5cGU8UnQyPiwgUiAoTkROQk9PU1RfQklORF9NRl9DQyBUOjoqZikgKEIxLCBCMiwgQjMsIEI0LCBCNSwgQjYsIEI3KSBjb25zdCwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcsIEE4IGE4KQotewotICAgIHR5cGVkZWYgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKGNtZjcpPFIsIFQsIEIxLCBCMiwgQjMsIEI0LCBCNSwgQjYsIEI3PiBGOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzg8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4Pjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFJ0MiwgRiwgbGlzdF90eXBlPihGKGYpLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KSk7Ci19Ci0KLS8vIDgKLQotdGVtcGxhdGU8Y2xhc3MgUnQyLCBjbGFzcyBSLCBjbGFzcyBULAotICAgIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjMsIGNsYXNzIEI0LCBjbGFzcyBCNSwgY2xhc3MgQjYsIGNsYXNzIEI3LCBjbGFzcyBCOCwKLSAgICBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTgsIGNsYXNzIEE5PgotICAgIF9iaTo6YmluZF90PFJ0MiwgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKG1mOCk8UiwgVCwgQjEsIEIyLCBCMywgQjQsIEI1LCBCNiwgQjcsIEI4PiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzk8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOT46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChuZG5ib29zdDo6dHlwZTxSdDI+LCBSIChORE5CT09TVF9CSU5EX01GX0NDIFQ6OipmKSAoQjEsIEIyLCBCMywgQjQsIEI1LCBCNiwgQjcsIEI4KSwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcsIEE4IGE4LCBBOSBhOSkKLXsKLSAgICB0eXBlZGVmIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShtZjgpPFIsIFQsIEIxLCBCMiwgQjMsIEI0LCBCNSwgQjYsIEI3LCBCOD4gRjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl85PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgQTk+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UnQyLCBGLCBsaXN0X3R5cGU+KEYoZiksIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5KSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFJ0MiwgY2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjUsIGNsYXNzIEI2LCBjbGFzcyBCNywgY2xhc3MgQjgsCi0gICAgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOT4KLSAgICBfYmk6OmJpbmRfdDxSdDIsIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWY4KTxSLCBULCBCMSwgQjIsIEIzLCBCNCwgQjUsIEI2LCBCNywgQjg+LCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfOTxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsIEE5Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKG5kbmJvb3N0Ojp0eXBlPFJ0Mj4sIFIgKE5ETkJPT1NUX0JJTkRfTUZfQ0MgVDo6KmYpIChCMSwgQjIsIEIzLCBCNCwgQjUsIEI2LCBCNywgQjgpIGNvbnN0LCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2LCBBNyBhNywgQTggYTgsIEE5IGE5KQotewotICAgIHR5cGVkZWYgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKGNtZjgpPFIsIFQsIEIxLCBCMiwgQjMsIEI0LCBCNSwgQjYsIEI3LCBCOD4gRjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl85PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgQTk+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UnQyLCBGLCBsaXN0X3R5cGU+KEYoZiksIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5KSk7Ci19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2JpbmQvYmluZF9tZl9jYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2JpbmQvYmluZF9tZl9jYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0MTA4ZTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9iaW5kL2JpbmRfbWZfY2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjI3ICswLDAgQEAKLS8vCi0vLyAgYmluZC9iaW5kX21mX2NjLmhwcCAtIHN1cHBvcnQgZm9yIGRpZmZlcmVudCBjYWxsaW5nIGNvbnZlbnRpb25zCi0vLwotLy8gIERvIG5vdCBpbmNsdWRlIHRoaXMgaGVhZGVyIGRpcmVjdGx5LgotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZC4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2JpbmQvYmluZC5odG1sIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLQotLy8gMAotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULAotICAgIGNsYXNzIEExPgotICAgIF9iaTo6YmluZF90PFIsIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShtZjApPFIsIFQ+LCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMTxBMT46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChSIChORE5CT09TVF9CSU5EX01GX0NDIFQ6OipmKSAoKSwgQTEgYTEpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWYwKTxSLCBUPiBGOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzE8QTE+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPihGKGYpLCBsaXN0X3R5cGUoYTEpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBBMT4KLSAgICBfYmk6OmJpbmRfdDxSLCBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUoY21mMCk8UiwgVD4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8xPEExPjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKFIgKE5ETkJPT1NUX0JJTkRfTUZfQ0MgVDo6KmYpICgpIGNvbnN0LCBBMSBhMSkKLXsKLSAgICB0eXBlZGVmIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWYwKTxSLCBUPiBGOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzE8QTE+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPihGKGYpLCBsaXN0X3R5cGUoYTEpKTsKLX0KLQotLy8gMQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULAotICAgIGNsYXNzIEIxLAotICAgIGNsYXNzIEExLCBjbGFzcyBBMj4KLSAgICBfYmk6OmJpbmRfdDxSLCBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWYxKTxSLCBULCBCMT4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8yPEExLCBBMj46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChSIChORE5CT09TVF9CSU5EX01GX0NDIFQ6OipmKSAoQjEpLCBBMSBhMSwgQTIgYTIpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWYxKTxSLCBULCBCMT4gRjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8yPEExLCBBMj46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KEYoZiksIGxpc3RfdHlwZShhMSwgYTIpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwKLSAgICBjbGFzcyBBMSwgY2xhc3MgQTI+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKGNtZjEpPFIsIFQsIEIxPiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzI8QTEsIEEyPjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKFIgKE5ETkJPT1NUX0JJTkRfTUZfQ0MgVDo6KmYpIChCMSkgY29uc3QsIEExIGExLCBBMiBhMikKLXsKLSAgICB0eXBlZGVmIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWYxKTxSLCBULCBCMT4gRjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8yPEExLCBBMj46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KEYoZiksIGxpc3RfdHlwZShhMSwgYTIpKTsKLX0KLQotLy8gMgotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULAotICAgIGNsYXNzIEIxLCBjbGFzcyBCMiwKLSAgICBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzPgotICAgIF9iaTo6YmluZF90PFIsIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShtZjIpPFIsIFQsIEIxLCBCMj4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8zPEExLCBBMiwgQTM+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoUiAoTkROQk9PU1RfQklORF9NRl9DQyBUOjoqZikgKEIxLCBCMiksIEExIGExLCBBMiBhMiwgQTMgYTMpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWYyKTxSLCBULCBCMSwgQjI+IEY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMzxBMSwgQTIsIEEzPjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFIsIEYsIGxpc3RfdHlwZT4oRihmKSwgbGlzdF90eXBlKGExLCBhMiwgYTMpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsCi0gICAgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMz4KLSAgICBfYmk6OmJpbmRfdDxSLCBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUoY21mMik8UiwgVCwgQjEsIEIyPiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzM8QTEsIEEyLCBBMz46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChSIChORE5CT09TVF9CSU5EX01GX0NDIFQ6OipmKSAoQjEsIEIyKSBjb25zdCwgQTEgYTEsIEEyIGEyLCBBMyBhMykKLXsKLSAgICB0eXBlZGVmIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWYyKTxSLCBULCBCMSwgQjI+IEY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMzxBMSwgQTIsIEEzPjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFIsIEYsIGxpc3RfdHlwZT4oRihmKSwgbGlzdF90eXBlKGExLCBhMiwgYTMpKTsKLX0KLQotLy8gMwotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULAotICAgIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjMsCi0gICAgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQ+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKG1mMyk8UiwgVCwgQjEsIEIyLCBCMz4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl80PEExLCBBMiwgQTMsIEE0Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKFIgKE5ETkJPT1NUX0JJTkRfTUZfQ0MgVDo6KmYpIChCMSwgQjIsIEIzKSwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWYzKTxSLCBULCBCMSwgQjIsIEIzPiBGOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzQ8QTEsIEEyLCBBMywgQTQ+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPihGKGYpLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLAotICAgIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PgotICAgIF9iaTo6YmluZF90PFIsIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWYzKTxSLCBULCBCMSwgQjIsIEIzPiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzQ8QTEsIEEyLCBBMywgQTQ+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoUiAoTkROQk9PU1RfQklORF9NRl9DQyBUOjoqZikgKEIxLCBCMiwgQjMpIGNvbnN0LCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCkKLXsKLSAgICB0eXBlZGVmIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWYzKTxSLCBULCBCMSwgQjIsIEIzPiBGOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzQ8QTEsIEEyLCBBMywgQTQ+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPihGKGYpLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQpKTsKLX0KLQotLy8gNAotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULAotICAgIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjMsIGNsYXNzIEI0LAotICAgIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNT4KLSAgICBfYmk6OmJpbmRfdDxSLCBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWY0KTxSLCBULCBCMSwgQjIsIEIzLCBCND4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl81PEExLCBBMiwgQTMsIEE0LCBBNT46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChSIChORE5CT09TVF9CSU5EX01GX0NDIFQ6OipmKSAoQjEsIEIyLCBCMywgQjQpLCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWY0KTxSLCBULCBCMSwgQjIsIEIzLCBCND4gRjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl81PEExLCBBMiwgQTMsIEE0LCBBNT46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KEYoZiksIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwKLSAgICBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKGNtZjQpPFIsIFQsIEIxLCBCMiwgQjMsIEI0PiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzU8QTEsIEEyLCBBMywgQTQsIEE1Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKFIgKE5ETkJPT1NUX0JJTkRfTUZfQ0MgVDo6KmYpIChCMSwgQjIsIEIzLCBCNCkgY29uc3QsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSkKLXsKLSAgICB0eXBlZGVmIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWY0KTxSLCBULCBCMSwgQjIsIEIzLCBCND4gRjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl81PEExLCBBMiwgQTMsIEE0LCBBNT46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KEYoZiksIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUpKTsKLX0KLQotLy8gNQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULAotICAgIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjMsIGNsYXNzIEI0LCBjbGFzcyBCNSwKLSAgICBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2PgotICAgIF9iaTo6YmluZF90PFIsIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShtZjUpPFIsIFQsIEIxLCBCMiwgQjMsIEI0LCBCNT4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl82PEExLCBBMiwgQTMsIEE0LCBBNSwgQTY+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoUiAoTkROQk9PU1RfQklORF9NRl9DQyBUOjoqZikgKEIxLCBCMiwgQjMsIEI0LCBCNSksIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWY1KTxSLCBULCBCMSwgQjIsIEIzLCBCNCwgQjU+IEY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNjxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2Pjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFIsIEYsIGxpc3RfdHlwZT4oRihmKSwgbGlzdF90eXBlKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjUsCi0gICAgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNj4KLSAgICBfYmk6OmJpbmRfdDxSLCBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUoY21mNSk8UiwgVCwgQjEsIEIyLCBCMywgQjQsIEI1PiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzY8QTEsIEEyLCBBMywgQTQsIEE1LCBBNj46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChSIChORE5CT09TVF9CSU5EX01GX0NDIFQ6OipmKSAoQjEsIEIyLCBCMywgQjQsIEI1KSBjb25zdCwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNikKLXsKLSAgICB0eXBlZGVmIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWY1KTxSLCBULCBCMSwgQjIsIEIzLCBCNCwgQjU+IEY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNjxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2Pjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFIsIEYsIGxpc3RfdHlwZT4oRihmKSwgbGlzdF90eXBlKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpKTsKLX0KLQotLy8gNgotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULAotICAgIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjMsIGNsYXNzIEI0LCBjbGFzcyBCNSwgY2xhc3MgQjYsCi0gICAgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTc+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKG1mNik8UiwgVCwgQjEsIEIyLCBCMywgQjQsIEI1LCBCNj4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl83PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKFIgKE5ETkJPT1NUX0JJTkRfTUZfQ0MgVDo6KmYpIChCMSwgQjIsIEIzLCBCNCwgQjUsIEI2KSwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWY2KTxSLCBULCBCMSwgQjIsIEIzLCBCNCwgQjUsIEI2PiBGOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzc8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTc+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPihGKGYpLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjUsIGNsYXNzIEI2LAotICAgIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PgotICAgIF9iaTo6YmluZF90PFIsIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWY2KTxSLCBULCBCMSwgQjIsIEIzLCBCNCwgQjUsIEI2PiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzc8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTc+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoUiAoTkROQk9PU1RfQklORF9NRl9DQyBUOjoqZikgKEIxLCBCMiwgQjMsIEI0LCBCNSwgQjYpIGNvbnN0LCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2LCBBNyBhNykKLXsKLSAgICB0eXBlZGVmIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWY2KTxSLCBULCBCMSwgQjIsIEIzLCBCNCwgQjUsIEI2PiBGOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzc8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTc+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPihGKGYpLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpKTsKLX0KLQotLy8gNwotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULAotICAgIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjMsIGNsYXNzIEI0LCBjbGFzcyBCNSwgY2xhc3MgQjYsIGNsYXNzIEI3LAotICAgIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOD4KLSAgICBfYmk6OmJpbmRfdDxSLCBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWY3KTxSLCBULCBCMSwgQjIsIEIzLCBCNCwgQjUsIEI2LCBCNz4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl84PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOD46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChSIChORE5CT09TVF9CSU5EX01GX0NDIFQ6OipmKSAoQjEsIEIyLCBCMywgQjQsIEI1LCBCNiwgQjcpLCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2LCBBNyBhNywgQTggYTgpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWY3KTxSLCBULCBCMSwgQjIsIEIzLCBCNCwgQjUsIEI2LCBCNz4gRjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl84PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOD46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KEYoZiksIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjUsIGNsYXNzIEI2LCBjbGFzcyBCNywKLSAgICBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTg+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKGNtZjcpPFIsIFQsIEIxLCBCMiwgQjMsIEI0LCBCNSwgQjYsIEI3PiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzg8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKFIgKE5ETkJPT1NUX0JJTkRfTUZfQ0MgVDo6KmYpIChCMSwgQjIsIEIzLCBCNCwgQjUsIEI2LCBCNykgY29uc3QsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3LCBBOCBhOCkKLXsKLSAgICB0eXBlZGVmIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWY3KTxSLCBULCBCMSwgQjIsIEIzLCBCNCwgQjUsIEI2LCBCNz4gRjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl84PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOD46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KEYoZiksIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpKTsKLX0KLQotLy8gOAotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULAotICAgIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjMsIGNsYXNzIEI0LCBjbGFzcyBCNSwgY2xhc3MgQjYsIGNsYXNzIEI3LCBjbGFzcyBCOCwKLSAgICBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTgsIGNsYXNzIEE5PgotICAgIF9iaTo6YmluZF90PFIsIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShtZjgpPFIsIFQsIEIxLCBCMiwgQjMsIEI0LCBCNSwgQjYsIEI3LCBCOD4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl85PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgQTk+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoUiAoTkROQk9PU1RfQklORF9NRl9DQyBUOjoqZikgKEIxLCBCMiwgQjMsIEI0LCBCNSwgQjYsIEI3LCBCOCksIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3LCBBOCBhOCwgQTkgYTkpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWY4KTxSLCBULCBCMSwgQjIsIEIzLCBCNCwgQjUsIEI2LCBCNywgQjg+IEY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfOTxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsIEE5Pjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFIsIEYsIGxpc3RfdHlwZT4oRihmKSwgbGlzdF90eXBlKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjUsIGNsYXNzIEI2LCBjbGFzcyBCNywgY2xhc3MgQjgsCi0gICAgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOT4KLSAgICBfYmk6OmJpbmRfdDxSLCBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUoY21mOCk8UiwgVCwgQjEsIEIyLCBCMywgQjQsIEI1LCBCNiwgQjcsIEI4PiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzk8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOT46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChSIChORE5CT09TVF9CSU5EX01GX0NDIFQ6OipmKSAoQjEsIEIyLCBCMywgQjQsIEI1LCBCNiwgQjcsIEI4KSBjb25zdCwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcsIEE4IGE4LCBBOSBhOSkKLXsKLSAgICB0eXBlZGVmIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWY4KTxSLCBULCBCMSwgQjIsIEIzLCBCNCwgQjUsIEI2LCBCNywgQjg+IEY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfOTxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsIEE5Pjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFIsIEYsIGxpc3RfdHlwZT4oRihmKSwgbGlzdF90eXBlKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkpKTsKLX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvYmluZC9iaW5kX3RlbXBsYXRlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvYmluZC9iaW5kX3RlbXBsYXRlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjMwMzdlYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2JpbmQvYmluZF90ZW1wbGF0ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNDUgKzAsMCBAQAotLy8KLS8vICBiaW5kL2JpbmRfdGVtcGxhdGUuaHBwCi0vLwotLy8gIERvIG5vdCBpbmNsdWRlIHRoaXMgaGVhZGVyIGRpcmVjdGx5LgotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEtMjAwNCBQZXRlciBEaW1vdiBhbmQgTXVsdGkgTWVkaWEgTHRkLgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvYmluZC9iaW5kLmh0bWwgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXN1bHRfdHJhaXRzPFIsIEY+Ojp0eXBlIHJlc3VsdF90eXBlOwotCi0gICAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKSgpCi0gICAgewotICAgICAgICBsaXN0MCBhOwotICAgICAgICBORE5CT09TVF9CSU5EX1JFVFVSTiBsXyh0eXBlPHJlc3VsdF90eXBlPigpLCBmXywgYSwgMCk7Ci0gICAgfQotCi0gICAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKSgpIGNvbnN0Ci0gICAgewotICAgICAgICBsaXN0MCBhOwotICAgICAgICBORE5CT09TVF9CSU5EX1JFVFVSTiBsXyh0eXBlPHJlc3VsdF90eXBlPigpLCBmXywgYSwgMCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTE+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSkKLSAgICB7Ci0gICAgICAgIGxpc3QxPEExICY+IGEoYTEpOwotICAgICAgICBORE5CT09TVF9CSU5EX1JFVFVSTiBsXyh0eXBlPHJlc3VsdF90eXBlPigpLCBmXywgYSwgMCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTE+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSkgY29uc3QKLSAgICB7Ci0gICAgICAgIGxpc3QxPEExICY+IGEoYTEpOwotICAgICAgICBORE5CT09TVF9CSU5EX1JFVFVSTiBsXyh0eXBlPHJlc3VsdF90eXBlPigpLCBmXywgYSwgMCk7Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcpIFwKLSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0VER19WRVJTSU9OX18sIDw9IDIzOCkKLQotICAgIHRlbXBsYXRlPGNsYXNzIEExPiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExIGNvbnN0ICYgYTEpCi0gICAgewotICAgICAgICBsaXN0MTxBMSBjb25zdCAmPiBhKGExKTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExPiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExIGNvbnN0ICYgYTEpIGNvbnN0Ci0gICAgewotICAgICAgICBsaXN0MTxBMSBjb25zdCAmPiBhKGExKTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTI+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSwgQTIgJiBhMikKLSAgICB7Ci0gICAgICAgIGxpc3QyPEExICYsIEEyICY+IGEoYTEsIGEyKTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMj4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSAmIGExLCBBMiAmIGEyKSBjb25zdAotICAgIHsKLSAgICAgICAgbGlzdDI8QTEgJiwgQTIgJj4gYShhMSwgYTIpOwotICAgICAgICBORE5CT09TVF9CSU5EX1JFVFVSTiBsXyh0eXBlPHJlc3VsdF90eXBlPigpLCBmXywgYSwgMCk7Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcpIFwKLSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0VER19WRVJTSU9OX18sIDw9IDIzOCkKLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMj4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExLCBBMiAmIGEyKQotICAgIHsKLSAgICAgICAgbGlzdDI8QTEgY29uc3QgJiwgQTIgJj4gYShhMSwgYTIpOwotICAgICAgICBORE5CT09TVF9CSU5EX1JFVFVSTiBsXyh0eXBlPHJlc3VsdF90eXBlPigpLCBmXywgYSwgMCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyPiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExIGNvbnN0ICYgYTEsIEEyICYgYTIpIGNvbnN0Ci0gICAgewotICAgICAgICBsaXN0MjxBMSBjb25zdCAmLCBBMiAmPiBhKGExLCBhMik7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMj4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSAmIGExLCBBMiBjb25zdCAmIGEyKQotICAgIHsKLSAgICAgICAgbGlzdDI8QTEgJiwgQTIgY29uc3QgJj4gYShhMSwgYTIpOwotICAgICAgICBORE5CT09TVF9CSU5EX1JFVFVSTiBsXyh0eXBlPHJlc3VsdF90eXBlPigpLCBmXywgYSwgMCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyPiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExICYgYTEsIEEyIGNvbnN0ICYgYTIpIGNvbnN0Ci0gICAgewotICAgICAgICBsaXN0MjxBMSAmLCBBMiBjb25zdCAmPiBhKGExLCBhMik7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMj4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyKQotICAgIHsKLSAgICAgICAgbGlzdDI8QTEgY29uc3QgJiwgQTIgY29uc3QgJj4gYShhMSwgYTIpOwotICAgICAgICBORE5CT09TVF9CSU5EX1JFVFVSTiBsXyh0eXBlPHJlc3VsdF90eXBlPigpLCBmXywgYSwgMCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyPiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIpIGNvbnN0Ci0gICAgewotICAgICAgICBsaXN0MjxBMSBjb25zdCAmLCBBMiBjb25zdCAmPiBhKGExLCBhMik7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMz4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSAmIGExLCBBMiAmIGEyLCBBMyAmIGEzKQotICAgIHsKLSAgICAgICAgbGlzdDM8QTEgJiwgQTIgJiwgQTMgJj4gYShhMSwgYTIsIGEzKTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTM+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSwgQTIgJiBhMiwgQTMgJiBhMykgY29uc3QKLSAgICB7Ci0gICAgICAgIGxpc3QzPEExICYsIEEyICYsIEEzICY+IGEoYTEsIGEyLCBhMyk7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORykgXAotICYmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fRURHX1ZFUlNJT05fXywgPD0gMjM4KQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMz4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzKQotICAgIHsKLSAgICAgICAgbGlzdDM8QTEgY29uc3QgJiwgQTIgY29uc3QgJiwgQTMgY29uc3QgJj4gYShhMSwgYTIsIGEzKTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTM+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMykgY29uc3QKLSAgICB7Ci0gICAgICAgIGxpc3QzPEExIGNvbnN0ICYsIEEyIGNvbnN0ICYsIEEzIGNvbnN0ICY+IGEoYTEsIGEyLCBhMyk7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQ+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSwgQTIgJiBhMiwgQTMgJiBhMywgQTQgJiBhNCkKLSAgICB7Ci0gICAgICAgIGxpc3Q0PEExICYsIEEyICYsIEEzICYsIEE0ICY+IGEoYTEsIGEyLCBhMywgYTQpOwotICAgICAgICBORE5CT09TVF9CSU5EX1JFVFVSTiBsXyh0eXBlPHJlc3VsdF90eXBlPigpLCBmXywgYSwgMCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQ+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSwgQTIgJiBhMiwgQTMgJiBhMywgQTQgJiBhNCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGxpc3Q0PEExICYsIEEyICYsIEEzICYsIEE0ICY+IGEoYTEsIGEyLCBhMywgYTQpOwotICAgICAgICBORE5CT09TVF9CSU5EX1JFVFVSTiBsXyh0eXBlPHJlc3VsdF90eXBlPigpLCBmXywgYSwgMCk7Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcpIFwKLSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0VER19WRVJTSU9OX18sIDw9IDIzOCkKLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQpCi0gICAgewotICAgICAgICBsaXN0NDxBMSBjb25zdCAmLCBBMiBjb25zdCAmLCBBMyBjb25zdCAmLCBBNCBjb25zdCAmPiBhKGExLCBhMiwgYTMsIGE0KTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQpIGNvbnN0Ci0gICAgewotICAgICAgICBsaXN0NDxBMSBjb25zdCAmLCBBMiBjb25zdCAmLCBBMyBjb25zdCAmLCBBNCBjb25zdCAmPiBhKGExLCBhMiwgYTMsIGE0KTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSwgQTIgJiBhMiwgQTMgJiBhMywgQTQgJiBhNCwgQTUgJiBhNSkKLSAgICB7Ci0gICAgICAgIGxpc3Q1PEExICYsIEEyICYsIEEzICYsIEE0ICYsIEE1ICY+IGEoYTEsIGEyLCBhMywgYTQsIGE1KTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNT4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSAmIGExLCBBMiAmIGEyLCBBMyAmIGEzLCBBNCAmIGE0LCBBNSAmIGE1KSBjb25zdAotICAgIHsKLSAgICAgICAgbGlzdDU8QTEgJiwgQTIgJiwgQTMgJiwgQTQgJiwgQTUgJj4gYShhMSwgYTIsIGEzLCBhNCwgYTUpOwotICAgICAgICBORE5CT09TVF9CSU5EX1JFVFVSTiBsXyh0eXBlPHJlc3VsdF90eXBlPigpLCBmXywgYSwgMCk7Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcpIFwKLSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0VER19WRVJTSU9OX18sIDw9IDIzOCkKLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNT4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzLCBBNCBjb25zdCAmIGE0LCBBNSBjb25zdCAmIGE1KQotICAgIHsKLSAgICAgICAgbGlzdDU8QTEgY29uc3QgJiwgQTIgY29uc3QgJiwgQTMgY29uc3QgJiwgQTQgY29uc3QgJiwgQTUgY29uc3QgJj4gYShhMSwgYTIsIGEzLCBhNCwgYTUpOwotICAgICAgICBORE5CT09TVF9CSU5EX1JFVFVSTiBsXyh0eXBlPHJlc3VsdF90eXBlPigpLCBmXywgYSwgMCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQsIEE1IGNvbnN0ICYgYTUpIGNvbnN0Ci0gICAgewotICAgICAgICBsaXN0NTxBMSBjb25zdCAmLCBBMiBjb25zdCAmLCBBMyBjb25zdCAmLCBBNCBjb25zdCAmLCBBNSBjb25zdCAmPiBhKGExLCBhMiwgYTMsIGE0LCBhNSk7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNj4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSAmIGExLCBBMiAmIGEyLCBBMyAmIGEzLCBBNCAmIGE0LCBBNSAmIGE1LCBBNiAmIGE2KQotICAgIHsKLSAgICAgICAgbGlzdDY8QTEgJiwgQTIgJiwgQTMgJiwgQTQgJiwgQTUgJiwgQTYgJj4gYShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTY+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSwgQTIgJiBhMiwgQTMgJiBhMywgQTQgJiBhNCwgQTUgJiBhNSwgQTYgJiBhNikgY29uc3QKLSAgICB7Ci0gICAgICAgIGxpc3Q2PEExICYsIEEyICYsIEEzICYsIEE0ICYsIEE1ICYsIEE2ICY+IGEoYTEsIGEyLCBhMywgYTQsIGE1LCBhNik7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORykgXAotICYmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fRURHX1ZFUlNJT05fXywgPD0gMjM4KQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNj4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzLCBBNCBjb25zdCAmIGE0LCBBNSBjb25zdCAmIGE1LCBBNiBjb25zdCAmIGE2KQotICAgIHsKLSAgICAgICAgbGlzdDY8QTEgY29uc3QgJiwgQTIgY29uc3QgJiwgQTMgY29uc3QgJiwgQTQgY29uc3QgJiwgQTUgY29uc3QgJiwgQTYgY29uc3QgJj4gYShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTY+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMywgQTQgY29uc3QgJiBhNCwgQTUgY29uc3QgJiBhNSwgQTYgY29uc3QgJiBhNikgY29uc3QKLSAgICB7Ci0gICAgICAgIGxpc3Q2PEExIGNvbnN0ICYsIEEyIGNvbnN0ICYsIEEzIGNvbnN0ICYsIEE0IGNvbnN0ICYsIEE1IGNvbnN0ICYsIEE2IGNvbnN0ICY+IGEoYTEsIGEyLCBhMywgYTQsIGE1LCBhNik7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTc+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSwgQTIgJiBhMiwgQTMgJiBhMywgQTQgJiBhNCwgQTUgJiBhNSwgQTYgJiBhNiwgQTcgJiBhNykKLSAgICB7Ci0gICAgICAgIGxpc3Q3PEExICYsIEEyICYsIEEzICYsIEE0ICYsIEE1ICYsIEE2ICYsIEE3ICY+IGEoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpOwotICAgICAgICBORE5CT09TVF9CSU5EX1JFVFVSTiBsXyh0eXBlPHJlc3VsdF90eXBlPigpLCBmXywgYSwgMCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTc+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSwgQTIgJiBhMiwgQTMgJiBhMywgQTQgJiBhNCwgQTUgJiBhNSwgQTYgJiBhNiwgQTcgJiBhNykgY29uc3QKLSAgICB7Ci0gICAgICAgIGxpc3Q3PEExICYsIEEyICYsIEEzICYsIEE0ICYsIEE1ICYsIEE2ICYsIEE3ICY+IGEoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpOwotICAgICAgICBORE5CT09TVF9CSU5EX1JFVFVSTiBsXyh0eXBlPHJlc3VsdF90eXBlPigpLCBmXywgYSwgMCk7Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcpIFwKLSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0VER19WRVJTSU9OX18sIDw9IDIzOCkKLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQsIEE1IGNvbnN0ICYgYTUsIEE2IGNvbnN0ICYgYTYsIEE3IGNvbnN0ICYgYTcpCi0gICAgewotICAgICAgICBsaXN0NzxBMSBjb25zdCAmLCBBMiBjb25zdCAmLCBBMyBjb25zdCAmLCBBNCBjb25zdCAmLCBBNSBjb25zdCAmLCBBNiBjb25zdCAmLCBBNyBjb25zdCAmPiBhKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQsIEE1IGNvbnN0ICYgYTUsIEE2IGNvbnN0ICYgYTYsIEE3IGNvbnN0ICYgYTcpIGNvbnN0Ci0gICAgewotICAgICAgICBsaXN0NzxBMSBjb25zdCAmLCBBMiBjb25zdCAmLCBBMyBjb25zdCAmLCBBNCBjb25zdCAmLCBBNSBjb25zdCAmLCBBNiBjb25zdCAmLCBBNyBjb25zdCAmPiBhKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTg+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSwgQTIgJiBhMiwgQTMgJiBhMywgQTQgJiBhNCwgQTUgJiBhNSwgQTYgJiBhNiwgQTcgJiBhNywgQTggJiBhOCkKLSAgICB7Ci0gICAgICAgIGxpc3Q4PEExICYsIEEyICYsIEEzICYsIEE0ICYsIEE1ICYsIEE2ICYsIEE3ICYsIEE4ICY+IGEoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOD4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSAmIGExLCBBMiAmIGEyLCBBMyAmIGEzLCBBNCAmIGE0LCBBNSAmIGE1LCBBNiAmIGE2LCBBNyAmIGE3LCBBOCAmIGE4KSBjb25zdAotICAgIHsKLSAgICAgICAgbGlzdDg8QTEgJiwgQTIgJiwgQTMgJiwgQTQgJiwgQTUgJiwgQTYgJiwgQTcgJiwgQTggJj4gYShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpOwotICAgICAgICBORE5CT09TVF9CSU5EX1JFVFVSTiBsXyh0eXBlPHJlc3VsdF90eXBlPigpLCBmXywgYSwgMCk7Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcpIFwKLSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0VER19WRVJTSU9OX18sIDw9IDIzOCkKLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOD4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzLCBBNCBjb25zdCAmIGE0LCBBNSBjb25zdCAmIGE1LCBBNiBjb25zdCAmIGE2LCBBNyBjb25zdCAmIGE3LCBBOCBjb25zdCAmIGE4KQotICAgIHsKLSAgICAgICAgbGlzdDg8QTEgY29uc3QgJiwgQTIgY29uc3QgJiwgQTMgY29uc3QgJiwgQTQgY29uc3QgJiwgQTUgY29uc3QgJiwgQTYgY29uc3QgJiwgQTcgY29uc3QgJiwgQTggY29uc3QgJj4gYShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpOwotICAgICAgICBORE5CT09TVF9CSU5EX1JFVFVSTiBsXyh0eXBlPHJlc3VsdF90eXBlPigpLCBmXywgYSwgMCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQsIEE1IGNvbnN0ICYgYTUsIEE2IGNvbnN0ICYgYTYsIEE3IGNvbnN0ICYgYTcsIEE4IGNvbnN0ICYgYTgpIGNvbnN0Ci0gICAgewotICAgICAgICBsaXN0ODxBMSBjb25zdCAmLCBBMiBjb25zdCAmLCBBMyBjb25zdCAmLCBBNCBjb25zdCAmLCBBNSBjb25zdCAmLCBBNiBjb25zdCAmLCBBNyBjb25zdCAmLCBBOCBjb25zdCAmPiBhKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCk7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOT4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSAmIGExLCBBMiAmIGEyLCBBMyAmIGEzLCBBNCAmIGE0LCBBNSAmIGE1LCBBNiAmIGE2LCBBNyAmIGE3LCBBOCAmIGE4LCBBOSAmIGE5KQotICAgIHsKLSAgICAgICAgbGlzdDk8QTEgJiwgQTIgJiwgQTMgJiwgQTQgJiwgQTUgJiwgQTYgJiwgQTcgJiwgQTggJiwgQTkgJj4gYShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5KTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCwgY2xhc3MgQTk+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSwgQTIgJiBhMiwgQTMgJiBhMywgQTQgJiBhNCwgQTUgJiBhNSwgQTYgJiBhNiwgQTcgJiBhNywgQTggJiBhOCwgQTkgJiBhOSkgY29uc3QKLSAgICB7Ci0gICAgICAgIGxpc3Q5PEExICYsIEEyICYsIEEzICYsIEE0ICYsIEE1ICYsIEE2ICYsIEE3ICYsIEE4ICYsIEE5ICY+IGEoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSk7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORykgXAotICYmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fRURHX1ZFUlNJT05fXywgPD0gMjM4KQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOT4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzLCBBNCBjb25zdCAmIGE0LCBBNSBjb25zdCAmIGE1LCBBNiBjb25zdCAmIGE2LCBBNyBjb25zdCAmIGE3LCBBOCBjb25zdCAmIGE4LCBBOSBjb25zdCAmIGE5KQotICAgIHsKLSAgICAgICAgbGlzdDk8QTEgY29uc3QgJiwgQTIgY29uc3QgJiwgQTMgY29uc3QgJiwgQTQgY29uc3QgJiwgQTUgY29uc3QgJiwgQTYgY29uc3QgJiwgQTcgY29uc3QgJiwgQTggY29uc3QgJiwgQTkgY29uc3QgJj4gYShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5KTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCwgY2xhc3MgQTk+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMywgQTQgY29uc3QgJiBhNCwgQTUgY29uc3QgJiBhNSwgQTYgY29uc3QgJiBhNiwgQTcgY29uc3QgJiBhNywgQTggY29uc3QgJiBhOCwgQTkgY29uc3QgJiBhOSkgY29uc3QKLSAgICB7Ci0gICAgICAgIGxpc3Q5PEExIGNvbnN0ICYsIEEyIGNvbnN0ICYsIEEzIGNvbnN0ICYsIEE0IGNvbnN0ICYsIEE1IGNvbnN0ICYsIEE2IGNvbnN0ICYsIEE3IGNvbnN0ICYsIEE4IGNvbnN0ICYsIEE5IGNvbnN0ICY+IGEoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSk7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQT4gcmVzdWx0X3R5cGUgZXZhbChBICYgYSkKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBPiByZXN1bHRfdHlwZSBldmFsKEEgJiBhKSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFY+IHZvaWQgYWNjZXB0KFYgJiB2KSBjb25zdAotICAgIHsKLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQVJHVU1FTlRfREVQRU5ERU5UX0xPT0tVUCApICYmICFkZWZpbmVkKCBfX0JPUkxBTkRDX18gKQotCi0gICAgICAgIHVzaW5nIG5kbmJvb3N0Ojp2aXNpdF9lYWNoOwotCi0jZW5kaWYKLSAgICAgICAgTkROQk9PU1RfQklORF9WSVNJVF9FQUNIKHYsIGZfLCAwKTsKLSAgICAgICAgbF8uYWNjZXB0KHYpOwotICAgIH0KLQotICAgIGJvb2wgY29tcGFyZSh0aGlzX3R5cGUgY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gcmVmX2NvbXBhcmUoZl8sIHJocy5mXywgMCkgJiYgbF8gPT0gcmhzLmxfOwotICAgIH0KLQotcHJpdmF0ZToKLQotICAgIEYgZl87Ci0gICAgTCBsXzsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvYmluZC9tYWtlX2FkYXB0YWJsZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2JpbmQvbWFrZV9hZGFwdGFibGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MTllZGRkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvYmluZC9tYWtlX2FkYXB0YWJsZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODcgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9CSU5EX01BS0VfQURBUFRBQkxFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9CSU5EX01BS0VfQURBUFRBQkxFX0hQUF9JTkNMVURFRAotCi0vLwotLy8gIG1ha2VfYWRhcHRhYmxlLmhwcAotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDIgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZC4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIF9iaQotewotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGPiBjbGFzcyBhZjAKLXsKLXB1YmxpYzoKLQotICAgIHR5cGVkZWYgUiByZXN1bHRfdHlwZTsKLQotICAgIGV4cGxpY2l0IGFmMChGIGYpOiBmXyhmKQotICAgIHsKLSAgICB9Ci0KLSAgICByZXN1bHRfdHlwZSBvcGVyYXRvcigpKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXygpOwotICAgIH0KLQotICAgIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKCk7Ci0gICAgfQotCi1wcml2YXRlOgotCi0gICAgRiBmXzsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEExLCBjbGFzcyBGPiBjbGFzcyBhZjEKLXsKLXB1YmxpYzoKLQotICAgIHR5cGVkZWYgUiByZXN1bHRfdHlwZTsKLSAgICB0eXBlZGVmIEExIGFyZ3VtZW50X3R5cGU7Ci0gICAgdHlwZWRlZiBBMSBhcmcxX3R5cGU7Ci0KLSAgICBleHBsaWNpdCBhZjEoRiBmKTogZl8oZikKLSAgICB7Ci0gICAgfQotCi0gICAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBhMSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyhhMSk7Ci0gICAgfQotCi0gICAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBhMSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyhhMSk7Ci0gICAgfQotCi1wcml2YXRlOgotCi0gICAgRiBmXzsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgRj4gY2xhc3MgYWYyCi17Ci1wdWJsaWM6Ci0KLSAgICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0gICAgdHlwZWRlZiBBMSBmaXJzdF9hcmd1bWVudF90eXBlOwotICAgIHR5cGVkZWYgQTIgc2Vjb25kX2FyZ3VtZW50X3R5cGU7Ci0gICAgdHlwZWRlZiBBMSBhcmcxX3R5cGU7Ci0gICAgdHlwZWRlZiBBMiBhcmcyX3R5cGU7Ci0KLSAgICBleHBsaWNpdCBhZjIoRiBmKTogZl8oZikKLSAgICB7Ci0gICAgfQotCi0gICAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBhMSwgQTIgYTIpCi0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyKTsKLSAgICB9Ci0KLSAgICByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExIGExLCBBMiBhMikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyhhMSwgYTIpOwotICAgIH0KLQotcHJpdmF0ZToKLQotICAgIEYgZl87Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBGPiBjbGFzcyBhZjMKLXsKLXB1YmxpYzoKLQotICAgIHR5cGVkZWYgUiByZXN1bHRfdHlwZTsKLSAgICB0eXBlZGVmIEExIGFyZzFfdHlwZTsKLSAgICB0eXBlZGVmIEEyIGFyZzJfdHlwZTsKLSAgICB0eXBlZGVmIEEzIGFyZzNfdHlwZTsKLQotICAgIGV4cGxpY2l0IGFmMyhGIGYpOiBmXyhmKQotICAgIHsKLSAgICB9Ci0KLSAgICByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExIGExLCBBMiBhMiwgQTMgYTMpCi0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyLCBhMyk7Ci0gICAgfQotCi0gICAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBhMSwgQTIgYTIsIEEzIGEzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExLCBhMiwgYTMpOwotICAgIH0KLQotcHJpdmF0ZToKLQotICAgIEYgZl87Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgRj4gY2xhc3MgYWY0Ci17Ci1wdWJsaWM6Ci0KLSAgICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0gICAgdHlwZWRlZiBBMSBhcmcxX3R5cGU7Ci0gICAgdHlwZWRlZiBBMiBhcmcyX3R5cGU7Ci0gICAgdHlwZWRlZiBBMyBhcmczX3R5cGU7Ci0gICAgdHlwZWRlZiBBNCBhcmc0X3R5cGU7Ci0KLSAgICBleHBsaWNpdCBhZjQoRiBmKTogZl8oZikKLSAgICB7Ci0gICAgfQotCi0gICAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyhhMSwgYTIsIGEzLCBhNCk7Ci0gICAgfQotCi0gICAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyhhMSwgYTIsIGEzLCBhNCk7Ci0gICAgfQotCi1wcml2YXRlOgotCi0gICAgRiBmXzsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIF9iaQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGPiBfYmk6OmFmMDxSLCBGPiBtYWtlX2FkYXB0YWJsZShGIGYpCi17Ci0gICAgcmV0dXJuIF9iaTo6YWYwPFIsIEY+KGYpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBBMSwgY2xhc3MgRj4gX2JpOjphZjE8UiwgQTEsIEY+IG1ha2VfYWRhcHRhYmxlKEYgZikKLXsKLSAgICByZXR1cm4gX2JpOjphZjE8UiwgQTEsIEY+KGYpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEY+IF9iaTo6YWYyPFIsIEExLCBBMiwgRj4gbWFrZV9hZGFwdGFibGUoRiBmKQotewotICAgIHJldHVybiBfYmk6OmFmMjxSLCBBMSwgQTIsIEY+KGYpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBGPiBfYmk6OmFmMzxSLCBBMSwgQTIsIEEzLCBGPiBtYWtlX2FkYXB0YWJsZShGIGYpCi17Ci0gICAgcmV0dXJuIF9iaTo6YWYzPFIsIEExLCBBMiwgQTMsIEY+KGYpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgRj4gX2JpOjphZjQ8UiwgQTEsIEEyLCBBMywgQTQsIEY+IG1ha2VfYWRhcHRhYmxlKEYgZikKLXsKLSAgICByZXR1cm4gX2JpOjphZjQ8UiwgQTEsIEEyLCBBMywgQTQsIEY+KGYpOwotfQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9CSU5EX01BS0VfQURBUFRBQkxFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9iaW5kL21lbV9mbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2JpbmQvbWVtX2ZuLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjJhOTE1ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2JpbmQvbWVtX2ZuLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM4OSArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX0JJTkRfTUVNX0ZOX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9CSU5EX01FTV9GTl9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgbWVtX2ZuLmhwcCAtIGEgZ2VuZXJhbGl6YXRpb24gb2Ygc3RkOjptZW1fZnVuW19yZWZdCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiBQZXRlciBEaW1vdiBhbmQgTXVsdGkgTWVkaWEgTHRkLgotLy8gIENvcHlyaWdodCAoYykgMjAwMSBEYXZpZCBBYnJhaGFtcwotLy8gIENvcHlyaWdodCAoYykgMjAwMy0yMDA1IFBldGVyIERpbW92Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9iaW5kL21lbV9mbi5odG1sIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZ2V0X3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1ZPSURfUkVUVVJOUykKLQotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fQ0xBU1NfRiAsIGNsYXNzIEYKLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX1RZUEVERUYoWCkKLQotbmFtZXNwYWNlIF9tZmkgLy8gbWVtX2Z1bl9pbXBsCi17Ci0KLXRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCBtZgotewotCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gcmV0dXJuCi0KLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX05BTUUoWCkgaW5uZXJfIyNYCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9DQwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC9tZW1fZm5fdGVtcGxhdGUuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX0NDCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX05BTUUKLQotI2lmZGVmIE5ETkJPT1NUX01FTV9GTl9FTkFCTEVfQ0RFQ0wKLQotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fTkFNRShYKSBpbm5lcl8jI1gjI19jZGVjbAotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fQ0MgX19jZGVjbAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC9tZW1fZm5fdGVtcGxhdGUuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX0NDCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX05BTUUKLQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NRU1fRk5fRU5BQkxFX1NURENBTEwKLQotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fTkFNRShYKSBpbm5lcl8jI1gjI19zdGRjYWxsCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9DQyBfX3N0ZGNhbGwKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2JpbmQvbWVtX2ZuX3RlbXBsYXRlLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9DQwotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9OQU1FCi0KLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTUVNX0ZOX0VOQUJMRV9GQVNUQ0FMTAotCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9OQU1FKFgpIGlubmVyXyMjWCMjX2Zhc3RjYWxsCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9DQyBfX2Zhc3RjYWxsCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL21lbV9mbl90ZW1wbGF0ZS5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fQ0MKLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fTkFNRQotCi0jZW5kaWYKLQotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4KLQotfTsgLy8gc3RydWN0IG1mPFY+Ci0KLXRlbXBsYXRlPD4gc3RydWN0IG1mPHZvaWQ+Ci17Ci0KLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTgotCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9OQU1FKFgpIGlubmVyXyMjWAotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fQ0MKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2JpbmQvbWVtX2ZuX3RlbXBsYXRlLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9DQwotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9OQU1FCi0KLSNpZmRlZiBORE5CT09TVF9NRU1fRk5fRU5BQkxFX0NERUNMCi0KLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX05BTUUoWCkgaW5uZXJfIyNYIyNfY2RlY2wKLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX0NDIF9fY2RlY2wKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2JpbmQvbWVtX2ZuX3RlbXBsYXRlLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9DQwotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9OQU1FCi0KLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTUVNX0ZOX0VOQUJMRV9TVERDQUxMCi0KLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX05BTUUoWCkgaW5uZXJfIyNYIyNfc3RkY2FsbAotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fQ0MgX19zdGRjYWxsCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL21lbV9mbl90ZW1wbGF0ZS5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fQ0MKLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fTkFNRQotCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01FTV9GTl9FTkFCTEVfRkFTVENBTEwKLQotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fTkFNRShYKSBpbm5lcl8jI1gjI19mYXN0Y2FsbAotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fQ0MgX19mYXN0Y2FsbAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC9tZW1fZm5fdGVtcGxhdGUuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX0NDCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX05BTUUKLQotI2VuZGlmCi0KLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fUkVUVVJOCi0KLX07IC8vIHN0cnVjdCBtZjx2b2lkPgotCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX0NMQVNTX0YKLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fVFlQRURFRl9GCi0KLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX05BTUUoWCkgWAotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fTkFNRTIoWCkgaW5uZXJfIyNYCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9DQwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC9tZW1fZm5fdncuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX05BTUUKLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fTkFNRTIKLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fQ0MKLQotI2lmZGVmIE5ETkJPT1NUX01FTV9GTl9FTkFCTEVfQ0RFQ0wKLQotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fTkFNRShYKSBYIyNfY2RlY2wKLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX05BTUUyKFgpIGlubmVyXyMjWCMjX2NkZWNsCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9DQyBfX2NkZWNsCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL21lbV9mbl92dy5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fTkFNRQotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9OQU1FMgotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9DQwotCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01FTV9GTl9FTkFCTEVfU1REQ0FMTAotCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9OQU1FKFgpIFgjI19zdGRjYWxsCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9OQU1FMihYKSBpbm5lcl8jI1gjI19zdGRjYWxsCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9DQyBfX3N0ZGNhbGwKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2JpbmQvbWVtX2ZuX3Z3LmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9OQU1FCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX05BTUUyCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX0NDCi0KLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTUVNX0ZOX0VOQUJMRV9GQVNUQ0FMTAotCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9OQU1FKFgpIFgjI19mYXN0Y2FsbAotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fTkFNRTIoWCkgaW5uZXJfIyNYIyNfZmFzdGNhbGwKLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX0NDIF9fZmFzdGNhbGwKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2JpbmQvbWVtX2ZuX3Z3LmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9OQU1FCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX05BTUUyCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX0NDCi0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBfbWZpCi0KLSNlbHNlIC8vICNpZmRlZiBORE5CT09TVF9OT19WT0lEX1JFVFVSTlMKLQotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fQ0xBU1NfRgotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fVFlQRURFRihYKSB0eXBlZGVmIFg7Ci0KLW5hbWVzcGFjZSBfbWZpCi17Ci0KLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiByZXR1cm4KLQotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fTkFNRShYKSBYCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9DQwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC9tZW1fZm5fdGVtcGxhdGUuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX0NDCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX05BTUUKLQotI2lmZGVmIE5ETkJPT1NUX01FTV9GTl9FTkFCTEVfQ0RFQ0wKLQotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fTkFNRShYKSBYIyNfY2RlY2wKLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX0NDIF9fY2RlY2wKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2JpbmQvbWVtX2ZuX3RlbXBsYXRlLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9DQwotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9OQU1FCi0KLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTUVNX0ZOX0VOQUJMRV9TVERDQUxMCi0KLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX05BTUUoWCkgWCMjX3N0ZGNhbGwKLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX0NDIF9fc3RkY2FsbAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC9tZW1fZm5fdGVtcGxhdGUuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX0NDCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX05BTUUKLQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NRU1fRk5fRU5BQkxFX0ZBU1RDQUxMCi0KLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX05BTUUoWCkgWCMjX2Zhc3RjYWxsCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9DQyBfX2Zhc3RjYWxsCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL21lbV9mbl90ZW1wbGF0ZS5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fQ0MKLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fTkFNRQotCi0jZW5kaWYKLQotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4KLQotfSAvLyBuYW1lc3BhY2UgX21maQotCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX0NMQVNTX0YKLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fVFlQRURFRgotCi0jZW5kaWYgLy8gI2lmZGVmIE5ETkJPT1NUX05PX1ZPSURfUkVUVVJOUwotCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9OQU1FKFgpIFgKLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX0NDCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL21lbV9mbl9jYy5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fTkFNRQotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9DQwotCi0jaWZkZWYgTkROQk9PU1RfTUVNX0ZOX0VOQUJMRV9DREVDTAotCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9OQU1FKFgpIFgjI19jZGVjbAotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fQ0MgX19jZGVjbAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC9tZW1fZm5fY2MuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX05BTUUKLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fQ0MKLQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NRU1fRk5fRU5BQkxFX1NURENBTEwKLQotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fTkFNRShYKSBYIyNfc3RkY2FsbAotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fQ0MgX19zdGRjYWxsCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL21lbV9mbl9jYy5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fTkFNRQotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9DQwotCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01FTV9GTl9FTkFCTEVfRkFTVENBTEwKLQotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fTkFNRShYKSBYIyNfZmFzdGNhbGwKLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX0NDIF9fZmFzdGNhbGwKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2JpbmQvbWVtX2ZuX2NjLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9OQU1FCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX0NDCi0KLSNlbmRpZgotCi0vLyBkYXRhIG1lbWJlciBzdXBwb3J0Ci0KLW5hbWVzcGFjZSBfbWZpCi17Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQ+IGNsYXNzIGRtCi17Ci1wdWJsaWM6Ci0KLSAgICB0eXBlZGVmIFIgY29uc3QgJiByZXN1bHRfdHlwZTsKLSAgICB0eXBlZGVmIFQgY29uc3QgKiBhcmd1bWVudF90eXBlOwotCi1wcml2YXRlOgotICAgIAotICAgIHR5cGVkZWYgUiAoVDo6KkYpOwotICAgIEYgZl87Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBSIGNvbnN0ICYgY2FsbChVICYgdSwgVCBjb25zdCAqKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICh1LipmXyk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVT4gUiBjb25zdCAmIGNhbGwoVSAmIHUsIHZvaWQgY29uc3QgKikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAoZ2V0X3BvaW50ZXIodSktPipmXyk7Ci0gICAgfQotCi1wdWJsaWM6Ci0gICAgCi0gICAgZXhwbGljaXQgZG0oRiBmKTogZl8oZikge30KLQotICAgIFIgJiBvcGVyYXRvcigpKFQgKiBwKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIChwLT4qZl8pOwotICAgIH0KLQotICAgIFIgY29uc3QgJiBvcGVyYXRvcigpKFQgY29uc3QgKiBwKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIChwLT4qZl8pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFU+IFIgY29uc3QgJiBvcGVyYXRvcigpKFUgY29uc3QgJiB1KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGNhbGwodSwgJnUpOwotICAgIH0KLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApICYmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIDwgMHgzMjAwKQotCi0gICAgUiAmIG9wZXJhdG9yKCkoVCAmIHQpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gKHQuKmZfKTsKLSAgICB9Ci0KLSAgICBSIGNvbnN0ICYgb3BlcmF0b3IoKShUIGNvbnN0ICYgdCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAodC4qZl8pOwotICAgIH0KLQotI2VuZGlmCi0KLSAgICBib29sIG9wZXJhdG9yPT0oZG0gY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8gPT0gcmhzLmZfOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShkbSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyAhPSByaHMuZl87Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgX21maQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBUPiBfbWZpOjpkbTxSLCBUPiBtZW1fZm4oUiBUOjoqZikKLXsKLSAgICByZXR1cm4gX21maTo6ZG08UiwgVD4oZik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0JJTkRfTUVNX0ZOX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9iaW5kL21lbV9mbl9jYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2JpbmQvbWVtX2ZuX2NjLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTA5NGQzYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2JpbmQvbWVtX2ZuX2NjLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBACi0vLwotLy8gIGJpbmQvbWVtX2ZuX2NjLmhwcCAtIHN1cHBvcnQgZm9yIGRpZmZlcmVudCBjYWxsaW5nIGNvbnZlbnRpb25zCi0vLwotLy8gIERvIG5vdCBpbmNsdWRlIHRoaXMgaGVhZGVyIGRpcmVjdGx5LgotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZC4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2JpbmQvbWVtX2ZuLmh0bWwgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBUPiBfbWZpOjpORE5CT09TVF9NRU1fRk5fTkFNRShtZjApPFIsIFQ+IG1lbV9mbihSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KmYpICgpKQotewotICAgIHJldHVybiBfbWZpOjpORE5CT09TVF9NRU1fRk5fTkFNRShtZjApPFIsIFQ+KGYpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBUPiBfbWZpOjpORE5CT09TVF9NRU1fRk5fTkFNRShjbWYwKTxSLCBUPiBtZW1fZm4oUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipmKSAoKSBjb25zdCkKLXsKLSAgICByZXR1cm4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUoY21mMCk8UiwgVD4oZik7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExPiBfbWZpOjpORE5CT09TVF9NRU1fRk5fTkFNRShtZjEpPFIsIFQsIEExPiBtZW1fZm4oUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipmKSAoQTEpKQotewotICAgIHJldHVybiBfbWZpOjpORE5CT09TVF9NRU1fRk5fTkFNRShtZjEpPFIsIFQsIEExPihmKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwgY2xhc3MgQTE+IF9tZmk6Ok5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjEpPFIsIFQsIEExPiBtZW1fZm4oUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipmKSAoQTEpIGNvbnN0KQotewotICAgIHJldHVybiBfbWZpOjpORE5CT09TVF9NRU1fRk5fTkFNRShjbWYxKTxSLCBULCBBMT4oZik7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMj4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUobWYyKTxSLCBULCBBMSwgQTI+IG1lbV9mbihSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KmYpIChBMSwgQTIpKQotewotICAgIHJldHVybiBfbWZpOjpORE5CT09TVF9NRU1fRk5fTkFNRShtZjIpPFIsIFQsIEExLCBBMj4oZik7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMj4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUoY21mMik8UiwgVCwgQTEsIEEyPiBtZW1fZm4oUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipmKSAoQTEsIEEyKSBjb25zdCkKLXsKLSAgICByZXR1cm4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUoY21mMik8UiwgVCwgQTEsIEEyPihmKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMz4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUobWYzKTxSLCBULCBBMSwgQTIsIEEzPiBtZW1fZm4oUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipmKSAoQTEsIEEyLCBBMykpCi17Ci0gICAgcmV0dXJuIF9tZmk6Ok5ETkJPT1NUX01FTV9GTl9OQU1FKG1mMyk8UiwgVCwgQTEsIEEyLCBBMz4oZik7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTM+IF9tZmk6Ok5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjMpPFIsIFQsIEExLCBBMiwgQTM+IG1lbV9mbihSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KmYpIChBMSwgQTIsIEEzKSBjb25zdCkKLXsKLSAgICByZXR1cm4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUoY21mMyk8UiwgVCwgQTEsIEEyLCBBMz4oZik7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PiBfbWZpOjpORE5CT09TVF9NRU1fRk5fTkFNRShtZjQpPFIsIFQsIEExLCBBMiwgQTMsIEE0PiBtZW1fZm4oUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipmKSAoQTEsIEEyLCBBMywgQTQpKQotewotICAgIHJldHVybiBfbWZpOjpORE5CT09TVF9NRU1fRk5fTkFNRShtZjQpPFIsIFQsIEExLCBBMiwgQTMsIEE0PihmKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQ+IF9tZmk6Ok5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjQpPFIsIFQsIEExLCBBMiwgQTMsIEE0PiBtZW1fZm4oUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipmKSAoQTEsIEEyLCBBMywgQTQpIGNvbnN0KQotewotICAgIHJldHVybiBfbWZpOjpORE5CT09TVF9NRU1fRk5fTkFNRShjbWY0KTxSLCBULCBBMSwgQTIsIEEzLCBBND4oZik7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNT4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUobWY1KTxSLCBULCBBMSwgQTIsIEEzLCBBNCwgQTU+IG1lbV9mbihSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KmYpIChBMSwgQTIsIEEzLCBBNCwgQTUpKQotewotICAgIHJldHVybiBfbWZpOjpORE5CT09TVF9NRU1fRk5fTkFNRShtZjUpPFIsIFQsIEExLCBBMiwgQTMsIEE0LCBBNT4oZik7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNT4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUoY21mNSk8UiwgVCwgQTEsIEEyLCBBMywgQTQsIEE1PiBtZW1fZm4oUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipmKSAoQTEsIEEyLCBBMywgQTQsIEE1KSBjb25zdCkKLXsKLSAgICByZXR1cm4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUoY21mNSk8UiwgVCwgQTEsIEEyLCBBMywgQTQsIEE1PihmKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNj4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUobWY2KTxSLCBULCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2PiBtZW1fZm4oUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipmKSAoQTEsIEEyLCBBMywgQTQsIEE1LCBBNikpCi17Ci0gICAgcmV0dXJuIF9tZmk6Ok5ETkJPT1NUX01FTV9GTl9OQU1FKG1mNik8UiwgVCwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNj4oZik7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTY+IF9tZmk6Ok5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjYpPFIsIFQsIEExLCBBMiwgQTMsIEE0LCBBNSwgQTY+IG1lbV9mbihSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KmYpIChBMSwgQTIsIEEzLCBBNCwgQTUsIEE2KSBjb25zdCkKLXsKLSAgICByZXR1cm4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUoY21mNik8UiwgVCwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNj4oZik7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PiBfbWZpOjpORE5CT09TVF9NRU1fRk5fTkFNRShtZjcpPFIsIFQsIEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3PiBtZW1fZm4oUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipmKSAoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcpKQotewotICAgIHJldHVybiBfbWZpOjpORE5CT09TVF9NRU1fRk5fTkFNRShtZjcpPFIsIFQsIEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3PihmKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTc+IF9tZmk6Ok5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjcpPFIsIFQsIEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3PiBtZW1fZm4oUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipmKSAoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcpIGNvbnN0KQotewotICAgIHJldHVybiBfbWZpOjpORE5CT09TVF9NRU1fRk5fTkFNRShjbWY3KTxSLCBULCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNz4oZik7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOD4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUobWY4KTxSLCBULCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTg+IG1lbV9mbihSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KmYpIChBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgpKQotewotICAgIHJldHVybiBfbWZpOjpORE5CT09TVF9NRU1fRk5fTkFNRShtZjgpPFIsIFQsIEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOD4oZik7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOD4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUoY21mOCk8UiwgVCwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4PiBtZW1fZm4oUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipmKSAoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4KSBjb25zdCkKLXsKLSAgICByZXR1cm4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUoY21mOCk8UiwgVCwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4PihmKTsKLX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvYmluZC9tZW1fZm5fdGVtcGxhdGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9iaW5kL21lbV9mbl90ZW1wbGF0ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlYTI0ZTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9iaW5kL21lbV9mbl90ZW1wbGF0ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDQ3ICswLDAgQEAKLS8vCi0vLyAgYmluZC9tZW1fZm5fdGVtcGxhdGUuaHBwCi0vLwotLy8gIERvIG5vdCBpbmNsdWRlIHRoaXMgaGVhZGVyIGRpcmVjdGx5Ci0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMSBQZXRlciBEaW1vdiBhbmQgTXVsdGkgTWVkaWEgTHRkLgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvYmluZC9tZW1fZm4uaHRtbCBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORykKLSMgZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9FTkFCTEVfQ09OU1RfT1ZFUkxPQURTCi0jZW5kaWYKLQotLy8gbWYwCi0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfTUVNX0ZOX0NMQVNTX0Y+IGNsYXNzIE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mMCkKLXsKLXB1YmxpYzoKLQotICAgIHR5cGVkZWYgUiByZXN1bHRfdHlwZTsKLSAgICB0eXBlZGVmIFQgKiBhcmd1bWVudF90eXBlOwotCi1wcml2YXRlOgotICAgIAotICAgIE5ETkJPT1NUX01FTV9GTl9UWVBFREVGKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqRikgKCkpCi0gICAgRiBmXzsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFU+IFIgY2FsbChVICYgdSwgVCBjb25zdCAqKSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAodS4qZl8pKCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVT4gUiBjYWxsKFUgJiB1LCB2b2lkIGNvbnN0ICopIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIChnZXRfcG9pbnRlcih1KS0+KmZfKSgpOwotICAgIH0KLQotcHVibGljOgotICAgIAotICAgIGV4cGxpY2l0IE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mMCkoRiBmKTogZl8oZikge30KLQotICAgIFIgb3BlcmF0b3IoKShUICogcCkgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHAtPipmXykoKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBSIG9wZXJhdG9yKCkoVSAmIHUpIGNvbnN0Ci0gICAgewotICAgICAgICBVIGNvbnN0ICogcCA9IDA7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gY2FsbCh1LCBwKTsKLSAgICB9Ci0KLSNpZmRlZiBORE5CT09TVF9NRU1fRk5fRU5BQkxFX0NPTlNUX09WRVJMT0FEUwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVT4gUiBvcGVyYXRvcigpKFUgY29uc3QgJiB1KSBjb25zdAotICAgIHsKLSAgICAgICAgVSBjb25zdCAqIHAgPSAwOwotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIGNhbGwodSwgcCk7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIFIgb3BlcmF0b3IoKShUICYgdCkgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHQuKmZfKSgpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShORE5CT09TVF9NRU1fRk5fTkFNRShtZjApIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfID09IHJocy5mXzsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oTkROQk9PU1RfTUVNX0ZOX05BTUUobWYwKSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyAhPSByaHMuZl87Ci0gICAgfQotfTsKLQotLy8gY21mMAotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX01FTV9GTl9DTEFTU19GPiBjbGFzcyBORE5CT09TVF9NRU1fRk5fTkFNRShjbWYwKQotewotcHVibGljOgotCi0gICAgdHlwZWRlZiBSIHJlc3VsdF90eXBlOwotICAgIHR5cGVkZWYgVCBjb25zdCAqIGFyZ3VtZW50X3R5cGU7Ci0KLXByaXZhdGU6Ci0gICAgCi0gICAgTkROQk9PU1RfTUVNX0ZOX1RZUEVERUYoUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipGKSAoKSBjb25zdCkKLSAgICBGIGZfOwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVT4gUiBjYWxsKFUgJiB1LCBUIGNvbnN0ICopIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOICh1LipmXykoKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBSIGNhbGwoVSAmIHUsIHZvaWQgY29uc3QgKikgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKGdldF9wb2ludGVyKHUpLT4qZl8pKCk7Ci0gICAgfQotCi1wdWJsaWM6Ci0gICAgCi0gICAgZXhwbGljaXQgTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mMCkoRiBmKTogZl8oZikge30KLQotICAgIHRlbXBsYXRlPGNsYXNzIFU+IFIgb3BlcmF0b3IoKShVIGNvbnN0ICYgdSkgY29uc3QKLSAgICB7Ci0gICAgICAgIFUgY29uc3QgKiBwID0gMDsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiBjYWxsKHUsIHApOwotICAgIH0KLQotICAgIFIgb3BlcmF0b3IoKShUIGNvbnN0ICYgdCkgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHQuKmZfKSgpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShORE5CT09TVF9NRU1fRk5fTkFNRShjbWYwKSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyA9PSByaHMuZl87Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjApIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfICE9IHJocy5mXzsKLSAgICB9Ci19OwotCi0vLyBtZjEKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwgY2xhc3MgQTEgTkROQk9PU1RfTUVNX0ZOX0NMQVNTX0Y+IGNsYXNzIE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mMSkKLXsKLXB1YmxpYzoKLQotICAgIHR5cGVkZWYgUiByZXN1bHRfdHlwZTsKLSAgICB0eXBlZGVmIFQgKiBmaXJzdF9hcmd1bWVudF90eXBlOwotICAgIHR5cGVkZWYgQTEgc2Vjb25kX2FyZ3VtZW50X3R5cGU7Ci0KLXByaXZhdGU6Ci0gICAgCi0gICAgTkROQk9PU1RfTUVNX0ZOX1RZUEVERUYoUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipGKSAoQTEpKQotICAgIEYgZl87Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcyBCMT4gUiBjYWxsKFUgJiB1LCBUIGNvbnN0ICosIEIxICYgYjEpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOICh1LipmXykoYjEpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzIEIxPiBSIGNhbGwoVSAmIHUsIHZvaWQgY29uc3QgKiwgQjEgJiBiMSkgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKGdldF9wb2ludGVyKHUpLT4qZl8pKGIxKTsKLSAgICB9Ci0KLXB1YmxpYzoKLSAgICAKLSAgICBleHBsaWNpdCBORE5CT09TVF9NRU1fRk5fTkFNRShtZjEpKEYgZik6IGZfKGYpIHt9Ci0KLSAgICBSIG9wZXJhdG9yKCkoVCAqIHAsIEExIGExKSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAocC0+KmZfKShhMSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVT4gUiBvcGVyYXRvcigpKFUgJiB1LCBBMSBhMSkgY29uc3QKLSAgICB7Ci0gICAgICAgIFUgY29uc3QgKiBwID0gMDsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiBjYWxsKHUsIHAsIGExKTsKLSAgICB9Ci0KLSNpZmRlZiBORE5CT09TVF9NRU1fRk5fRU5BQkxFX0NPTlNUX09WRVJMT0FEUwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVT4gUiBvcGVyYXRvcigpKFUgY29uc3QgJiB1LCBBMSBhMSkgY29uc3QKLSAgICB7Ci0gICAgICAgIFUgY29uc3QgKiBwID0gMDsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiBjYWxsKHUsIHAsIGExKTsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgUiBvcGVyYXRvcigpKFQgJiB0LCBBMSBhMSkgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHQuKmZfKShhMSk7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mMSkgY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8gPT0gcmhzLmZfOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShORE5CT09TVF9NRU1fRk5fTkFNRShtZjEpIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfICE9IHJocy5mXzsKLSAgICB9Ci19OwotCi0vLyBjbWYxCi0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExIE5ETkJPT1NUX01FTV9GTl9DTEFTU19GPiBjbGFzcyBORE5CT09TVF9NRU1fRk5fTkFNRShjbWYxKQotewotcHVibGljOgotCi0gICAgdHlwZWRlZiBSIHJlc3VsdF90eXBlOwotICAgIHR5cGVkZWYgVCBjb25zdCAqIGZpcnN0X2FyZ3VtZW50X3R5cGU7Ci0gICAgdHlwZWRlZiBBMSBzZWNvbmRfYXJndW1lbnRfdHlwZTsKLQotcHJpdmF0ZToKLSAgICAKLSAgICBORE5CT09TVF9NRU1fRk5fVFlQRURFRihSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KkYpIChBMSkgY29uc3QpCi0gICAgRiBmXzsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzIEIxPiBSIGNhbGwoVSAmIHUsIFQgY29uc3QgKiwgQjEgJiBiMSkgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHUuKmZfKShiMSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MgQjE+IFIgY2FsbChVICYgdSwgdm9pZCBjb25zdCAqLCBCMSAmIGIxKSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAoZ2V0X3BvaW50ZXIodSktPipmXykoYjEpOwotICAgIH0KLQotcHVibGljOgotICAgIAotICAgIGV4cGxpY2l0IE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjEpKEYgZik6IGZfKGYpIHt9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBSIG9wZXJhdG9yKCkoVSBjb25zdCAmIHUsIEExIGExKSBjb25zdAotICAgIHsKLSAgICAgICAgVSBjb25zdCAqIHAgPSAwOwotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIGNhbGwodSwgcCwgYTEpOwotICAgIH0KLQotICAgIFIgb3BlcmF0b3IoKShUIGNvbnN0ICYgdCwgQTEgYTEpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOICh0LipmXykoYTEpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShORE5CT09TVF9NRU1fRk5fTkFNRShjbWYxKSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyA9PSByaHMuZl87Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjEpIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfICE9IHJocy5mXzsKLSAgICB9Ci19OwotCi0vLyBtZjIKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyIE5ETkJPT1NUX01FTV9GTl9DTEFTU19GPiBjbGFzcyBORE5CT09TVF9NRU1fRk5fTkFNRShtZjIpCi17Ci1wdWJsaWM6Ci0KLSAgICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0KLXByaXZhdGU6Ci0gICAgCi0gICAgTkROQk9PU1RfTUVNX0ZOX1RZUEVERUYoUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipGKSAoQTEsIEEyKSkKLSAgICBGIGZfOwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MgQjEsIGNsYXNzIEIyPiBSIGNhbGwoVSAmIHUsIFQgY29uc3QgKiwgQjEgJiBiMSwgQjIgJiBiMikgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHUuKmZfKShiMSwgYjIpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzIEIxLCBjbGFzcyBCMj4gUiBjYWxsKFUgJiB1LCB2b2lkIGNvbnN0ICosIEIxICYgYjEsIEIyICYgYjIpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIChnZXRfcG9pbnRlcih1KS0+KmZfKShiMSwgYjIpOwotICAgIH0KLQotcHVibGljOgotICAgIAotICAgIGV4cGxpY2l0IE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mMikoRiBmKTogZl8oZikge30KLQotICAgIFIgb3BlcmF0b3IoKShUICogcCwgQTEgYTEsIEEyIGEyKSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAocC0+KmZfKShhMSwgYTIpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFU+IFIgb3BlcmF0b3IoKShVICYgdSwgQTEgYTEsIEEyIGEyKSBjb25zdAotICAgIHsKLSAgICAgICAgVSBjb25zdCAqIHAgPSAwOwotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIGNhbGwodSwgcCwgYTEsIGEyKTsKLSAgICB9Ci0KLSNpZmRlZiBORE5CT09TVF9NRU1fRk5fRU5BQkxFX0NPTlNUX09WRVJMT0FEUwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVT4gUiBvcGVyYXRvcigpKFUgY29uc3QgJiB1LCBBMSBhMSwgQTIgYTIpIGNvbnN0Ci0gICAgewotICAgICAgICBVIGNvbnN0ICogcCA9IDA7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gY2FsbCh1LCBwLCBhMSwgYTIpOwotICAgIH0KLQotI2VuZGlmCi0KLSAgICBSIG9wZXJhdG9yKCkoVCAmIHQsIEExIGExLCBBMiBhMikgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHQuKmZfKShhMSwgYTIpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShORE5CT09TVF9NRU1fRk5fTkFNRShtZjIpIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfID09IHJocy5mXzsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oTkROQk9PU1RfTUVNX0ZOX05BTUUobWYyKSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyAhPSByaHMuZl87Ci0gICAgfQotfTsKLQotLy8gY21mMgotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIgTkROQk9PU1RfTUVNX0ZOX0NMQVNTX0Y+IGNsYXNzIE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjIpCi17Ci1wdWJsaWM6Ci0KLSAgICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0KLXByaXZhdGU6Ci0gICAgCi0gICAgTkROQk9PU1RfTUVNX0ZOX1RZUEVERUYoUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipGKSAoQTEsIEEyKSBjb25zdCkKLSAgICBGIGZfOwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MgQjEsIGNsYXNzIEIyPiBSIGNhbGwoVSAmIHUsIFQgY29uc3QgKiwgQjEgJiBiMSwgQjIgJiBiMikgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHUuKmZfKShiMSwgYjIpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzIEIxLCBjbGFzcyBCMj4gUiBjYWxsKFUgJiB1LCB2b2lkIGNvbnN0ICosIEIxICYgYjEsIEIyICYgYjIpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIChnZXRfcG9pbnRlcih1KS0+KmZfKShiMSwgYjIpOwotICAgIH0KLQotcHVibGljOgotICAgIAotICAgIGV4cGxpY2l0IE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjIpKEYgZik6IGZfKGYpIHt9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBSIG9wZXJhdG9yKCkoVSBjb25zdCAmIHUsIEExIGExLCBBMiBhMikgY29uc3QKLSAgICB7Ci0gICAgICAgIFUgY29uc3QgKiBwID0gMDsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiBjYWxsKHUsIHAsIGExLCBhMik7Ci0gICAgfQotCi0gICAgUiBvcGVyYXRvcigpKFQgY29uc3QgJiB0LCBBMSBhMSwgQTIgYTIpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOICh0LipmXykoYTEsIGEyKTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mMikgY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8gPT0gcmhzLmZfOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShORE5CT09TVF9NRU1fRk5fTkFNRShjbWYyKSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyAhPSByaHMuZl87Ci0gICAgfQotfTsKLQotLy8gbWYzCi0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMgTkROQk9PU1RfTUVNX0ZOX0NMQVNTX0Y+IGNsYXNzIE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mMykKLXsKLXB1YmxpYzoKLQotICAgIHR5cGVkZWYgUiByZXN1bHRfdHlwZTsKLQotcHJpdmF0ZToKLSAgICAKLSAgICBORE5CT09TVF9NRU1fRk5fVFlQRURFRihSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KkYpIChBMSwgQTIsIEEzKSkKLSAgICBGIGZfOwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMz4gUiBjYWxsKFUgJiB1LCBUIGNvbnN0ICosIEIxICYgYjEsIEIyICYgYjIsIEIzICYgYjMpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOICh1LipmXykoYjEsIGIyLCBiMyk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMz4gUiBjYWxsKFUgJiB1LCB2b2lkIGNvbnN0ICosIEIxICYgYjEsIEIyICYgYjIsIEIzICYgYjMpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIChnZXRfcG9pbnRlcih1KS0+KmZfKShiMSwgYjIsIGIzKTsKLSAgICB9Ci0KLXB1YmxpYzoKLSAgICAKLSAgICBleHBsaWNpdCBORE5CT09TVF9NRU1fRk5fTkFNRShtZjMpKEYgZik6IGZfKGYpIHt9Ci0KLSAgICBSIG9wZXJhdG9yKCkoVCAqIHAsIEExIGExLCBBMiBhMiwgQTMgYTMpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIChwLT4qZl8pKGExLCBhMiwgYTMpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFU+IFIgb3BlcmF0b3IoKShVICYgdSwgQTEgYTEsIEEyIGEyLCBBMyBhMykgY29uc3QKLSAgICB7Ci0gICAgICAgIFUgY29uc3QgKiBwID0gMDsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiBjYWxsKHUsIHAsIGExLCBhMiwgYTMpOwotICAgIH0KLQotI2lmZGVmIE5ETkJPT1NUX01FTV9GTl9FTkFCTEVfQ09OU1RfT1ZFUkxPQURTCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBSIG9wZXJhdG9yKCkoVSBjb25zdCAmIHUsIEExIGExLCBBMiBhMiwgQTMgYTMpIGNvbnN0Ci0gICAgewotICAgICAgICBVIGNvbnN0ICogcCA9IDA7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gY2FsbCh1LCBwLCBhMSwgYTIsIGEzKTsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgUiBvcGVyYXRvcigpKFQgJiB0LCBBMSBhMSwgQTIgYTIsIEEzIGEzKSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAodC4qZl8pKGExLCBhMiwgYTMpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShORE5CT09TVF9NRU1fRk5fTkFNRShtZjMpIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfID09IHJocy5mXzsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oTkROQk9PU1RfTUVNX0ZOX05BTUUobWYzKSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyAhPSByaHMuZl87Ci0gICAgfQotfTsKLQotLy8gY21mMwotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzIE5ETkJPT1NUX01FTV9GTl9DTEFTU19GPiBjbGFzcyBORE5CT09TVF9NRU1fRk5fTkFNRShjbWYzKQotewotcHVibGljOgotCi0gICAgdHlwZWRlZiBSIHJlc3VsdF90eXBlOwotCi1wcml2YXRlOgotCi0gICAgTkROQk9PU1RfTUVNX0ZOX1RZUEVERUYoUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipGKSAoQTEsIEEyLCBBMykgY29uc3QpCi0gICAgRiBmXzsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjM+IFIgY2FsbChVICYgdSwgVCBjb25zdCAqLCBCMSAmIGIxLCBCMiAmIGIyLCBCMyAmIGIzKSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAodS4qZl8pKGIxLCBiMiwgYjMpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjM+IFIgY2FsbChVICYgdSwgdm9pZCBjb25zdCAqLCBCMSAmIGIxLCBCMiAmIGIyLCBCMyAmIGIzKSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAoZ2V0X3BvaW50ZXIodSktPipmXykoYjEsIGIyLCBiMyk7Ci0gICAgfQotCi1wdWJsaWM6Ci0KLSAgICBleHBsaWNpdCBORE5CT09TVF9NRU1fRk5fTkFNRShjbWYzKShGIGYpOiBmXyhmKSB7fQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVT4gUiBvcGVyYXRvcigpKFUgY29uc3QgJiB1LCBBMSBhMSwgQTIgYTIsIEEzIGEzKSBjb25zdAotICAgIHsKLSAgICAgICAgVSBjb25zdCAqIHAgPSAwOwotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIGNhbGwodSwgcCwgYTEsIGEyLCBhMyk7Ci0gICAgfQotCi0gICAgUiBvcGVyYXRvcigpKFQgY29uc3QgJiB0LCBBMSBhMSwgQTIgYTIsIEEzIGEzKSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAodC4qZl8pKGExLCBhMiwgYTMpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShORE5CT09TVF9NRU1fRk5fTkFNRShjbWYzKSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyA9PSByaHMuZl87Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjMpIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfICE9IHJocy5mXzsKLSAgICB9Ci19OwotCi0vLyBtZjQKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQgTkROQk9PU1RfTUVNX0ZOX0NMQVNTX0Y+IGNsYXNzIE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mNCkKLXsKLXB1YmxpYzoKLQotICAgIHR5cGVkZWYgUiByZXN1bHRfdHlwZTsKLQotcHJpdmF0ZToKLSAgICAKLSAgICBORE5CT09TVF9NRU1fRk5fVFlQRURFRihSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KkYpIChBMSwgQTIsIEEzLCBBNCkpCi0gICAgRiBmXzsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjMsIGNsYXNzIEI0PiBSIGNhbGwoVSAmIHUsIFQgY29uc3QgKiwgQjEgJiBiMSwgQjIgJiBiMiwgQjMgJiBiMywgQjQgJiBiNCkgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHUuKmZfKShiMSwgYjIsIGIzLCBiNCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQ+IFIgY2FsbChVICYgdSwgdm9pZCBjb25zdCAqLCBCMSAmIGIxLCBCMiAmIGIyLCBCMyAmIGIzLCBCNCAmIGI0KSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAoZ2V0X3BvaW50ZXIodSktPipmXykoYjEsIGIyLCBiMywgYjQpOwotICAgIH0KLQotcHVibGljOgotICAgIAotICAgIGV4cGxpY2l0IE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mNCkoRiBmKTogZl8oZikge30KLQotICAgIFIgb3BlcmF0b3IoKShUICogcCwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIChwLT4qZl8pKGExLCBhMiwgYTMsIGE0KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBSIG9wZXJhdG9yKCkoVSAmIHUsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0KSBjb25zdAotICAgIHsKLSAgICAgICAgVSBjb25zdCAqIHAgPSAwOwotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIGNhbGwodSwgcCwgYTEsIGEyLCBhMywgYTQpOwotICAgIH0KLQotI2lmZGVmIE5ETkJPT1NUX01FTV9GTl9FTkFCTEVfQ09OU1RfT1ZFUkxPQURTCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBSIG9wZXJhdG9yKCkoVSBjb25zdCAmIHUsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0KSBjb25zdAotICAgIHsKLSAgICAgICAgVSBjb25zdCAqIHAgPSAwOwotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIGNhbGwodSwgcCwgYTEsIGEyLCBhMywgYTQpOwotICAgIH0KLQotI2VuZGlmCi0KLSAgICBSIG9wZXJhdG9yKCkoVCAmIHQsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0KSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAodC4qZl8pKGExLCBhMiwgYTMsIGE0KTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oTkROQk9PU1RfTUVNX0ZOX05BTUUobWY0KSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyA9PSByaHMuZl87Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mNCkgY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8gIT0gcmhzLmZfOwotICAgIH0KLX07Ci0KLS8vIGNtZjQKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQgTkROQk9PU1RfTUVNX0ZOX0NMQVNTX0Y+IGNsYXNzIE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjQpCi17Ci1wdWJsaWM6Ci0KLSAgICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0KLXByaXZhdGU6Ci0gICAgCi0gICAgTkROQk9PU1RfTUVNX0ZOX1RZUEVERUYoUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipGKSAoQTEsIEEyLCBBMywgQTQpIGNvbnN0KQotICAgIEYgZl87Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCND4gUiBjYWxsKFUgJiB1LCBUIGNvbnN0ICosIEIxICYgYjEsIEIyICYgYjIsIEIzICYgYjMsIEI0ICYgYjQpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOICh1LipmXykoYjEsIGIyLCBiMywgYjQpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjMsIGNsYXNzIEI0PiBSIGNhbGwoVSAmIHUsIHZvaWQgY29uc3QgKiwgQjEgJiBiMSwgQjIgJiBiMiwgQjMgJiBiMywgQjQgJiBiNCkgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKGdldF9wb2ludGVyKHUpLT4qZl8pKGIxLCBiMiwgYjMsIGI0KTsKLSAgICB9Ci0KLXB1YmxpYzoKLSAgICAKLSAgICBleHBsaWNpdCBORE5CT09TVF9NRU1fRk5fTkFNRShjbWY0KShGIGYpOiBmXyhmKSB7fQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVT4gUiBvcGVyYXRvcigpKFUgY29uc3QgJiB1LCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCkgY29uc3QKLSAgICB7Ci0gICAgICAgIFUgY29uc3QgKiBwID0gMDsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiBjYWxsKHUsIHAsIGExLCBhMiwgYTMsIGE0KTsKLSAgICB9Ci0KLSAgICBSIG9wZXJhdG9yKCkoVCBjb25zdCAmIHQsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0KSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAodC4qZl8pKGExLCBhMiwgYTMsIGE0KTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mNCkgY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8gPT0gcmhzLmZfOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShORE5CT09TVF9NRU1fRk5fTkFNRShjbWY0KSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyAhPSByaHMuZl87Ci0gICAgfQotfTsKLQotLy8gbWY1Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSBORE5CT09TVF9NRU1fRk5fQ0xBU1NfRj4gY2xhc3MgTkROQk9PU1RfTUVNX0ZOX05BTUUobWY1KQotewotcHVibGljOgotCi0gICAgdHlwZWRlZiBSIHJlc3VsdF90eXBlOwotCi1wcml2YXRlOgotICAgIAotICAgIE5ETkJPT1NUX01FTV9GTl9UWVBFREVGKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqRikgKEExLCBBMiwgQTMsIEE0LCBBNSkpCi0gICAgRiBmXzsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjMsIGNsYXNzIEI0LCBjbGFzcyBCNT4gUiBjYWxsKFUgJiB1LCBUIGNvbnN0ICosIEIxICYgYjEsIEIyICYgYjIsIEIzICYgYjMsIEI0ICYgYjQsIEI1ICYgYjUpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOICh1LipmXykoYjEsIGIyLCBiMywgYjQsIGI1KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjU+IFIgY2FsbChVICYgdSwgdm9pZCBjb25zdCAqLCBCMSAmIGIxLCBCMiAmIGIyLCBCMyAmIGIzLCBCNCAmIGI0LCBCNSAmIGI1KSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAoZ2V0X3BvaW50ZXIodSktPipmXykoYjEsIGIyLCBiMywgYjQsIGI1KTsKLSAgICB9Ci0KLXB1YmxpYzoKLSAgICAKLSAgICBleHBsaWNpdCBORE5CT09TVF9NRU1fRk5fTkFNRShtZjUpKEYgZik6IGZfKGYpIHt9Ci0KLSAgICBSIG9wZXJhdG9yKCkoVCAqIHAsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSkgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHAtPipmXykoYTEsIGEyLCBhMywgYTQsIGE1KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBSIG9wZXJhdG9yKCkoVSAmIHUsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSkgY29uc3QKLSAgICB7Ci0gICAgICAgIFUgY29uc3QgKiBwID0gMDsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiBjYWxsKHUsIHAsIGExLCBhMiwgYTMsIGE0LCBhNSk7Ci0gICAgfQotCi0jaWZkZWYgTkROQk9PU1RfTUVNX0ZOX0VOQUJMRV9DT05TVF9PVkVSTE9BRFMKLQotICAgIHRlbXBsYXRlPGNsYXNzIFU+IFIgb3BlcmF0b3IoKShVIGNvbnN0ICYgdSwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1KSBjb25zdAotICAgIHsKLSAgICAgICAgVSBjb25zdCAqIHAgPSAwOwotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIGNhbGwodSwgcCwgYTEsIGEyLCBhMywgYTQsIGE1KTsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgUiBvcGVyYXRvcigpKFQgJiB0LCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOICh0LipmXykoYTEsIGEyLCBhMywgYTQsIGE1KTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oTkROQk9PU1RfTUVNX0ZOX05BTUUobWY1KSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyA9PSByaHMuZl87Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mNSkgY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8gIT0gcmhzLmZfOwotICAgIH0KLX07Ci0KLS8vIGNtZjUKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1IE5ETkJPT1NUX01FTV9GTl9DTEFTU19GPiBjbGFzcyBORE5CT09TVF9NRU1fRk5fTkFNRShjbWY1KQotewotcHVibGljOgotCi0gICAgdHlwZWRlZiBSIHJlc3VsdF90eXBlOwotCi1wcml2YXRlOgotICAgIAotICAgIE5ETkJPT1NUX01FTV9GTl9UWVBFREVGKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqRikgKEExLCBBMiwgQTMsIEE0LCBBNSkgY29uc3QpCi0gICAgRiBmXzsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjMsIGNsYXNzIEI0LCBjbGFzcyBCNT4gUiBjYWxsKFUgJiB1LCBUIGNvbnN0ICosIEIxICYgYjEsIEIyICYgYjIsIEIzICYgYjMsIEI0ICYgYjQsIEI1ICYgYjUpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOICh1LipmXykoYjEsIGIyLCBiMywgYjQsIGI1KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjU+IFIgY2FsbChVICYgdSwgdm9pZCBjb25zdCAqLCBCMSAmIGIxLCBCMiAmIGIyLCBCMyAmIGIzLCBCNCAmIGI0LCBCNSAmIGI1KSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAoZ2V0X3BvaW50ZXIodSktPipmXykoYjEsIGIyLCBiMywgYjQsIGI1KTsKLSAgICB9Ci0KLXB1YmxpYzoKLSAgICAKLSAgICBleHBsaWNpdCBORE5CT09TVF9NRU1fRk5fTkFNRShjbWY1KShGIGYpOiBmXyhmKSB7fQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVT4gUiBvcGVyYXRvcigpKFUgY29uc3QgJiB1LCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUpIGNvbnN0Ci0gICAgewotICAgICAgICBVIGNvbnN0ICogcCA9IDA7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gY2FsbCh1LCBwLCBhMSwgYTIsIGEzLCBhNCwgYTUpOwotICAgIH0KLQotICAgIFIgb3BlcmF0b3IoKShUIGNvbnN0ICYgdCwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1KSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAodC4qZl8pKGExLCBhMiwgYTMsIGE0LCBhNSk7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjUpIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfID09IHJocy5mXzsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mNSkgY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8gIT0gcmhzLmZfOwotICAgIH0KLX07Ci0KLS8vIG1mNgotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2IE5ETkJPT1NUX01FTV9GTl9DTEFTU19GPiBjbGFzcyBORE5CT09TVF9NRU1fRk5fTkFNRShtZjYpCi17Ci1wdWJsaWM6Ci0KLSAgICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0KLXByaXZhdGU6Ci0KLSAgICBORE5CT09TVF9NRU1fRk5fVFlQRURFRihSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KkYpIChBMSwgQTIsIEEzLCBBNCwgQTUsIEE2KSkKLSAgICBGIGZfOwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsIGNsYXNzIEI1LCBjbGFzcyBCNj4gUiBjYWxsKFUgJiB1LCBUIGNvbnN0ICosIEIxICYgYjEsIEIyICYgYjIsIEIzICYgYjMsIEI0ICYgYjQsIEI1ICYgYjUsIEI2ICYgYjYpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOICh1LipmXykoYjEsIGIyLCBiMywgYjQsIGI1LCBiNik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsIGNsYXNzIEI1LCBjbGFzcyBCNj4gUiBjYWxsKFUgJiB1LCB2b2lkIGNvbnN0ICosIEIxICYgYjEsIEIyICYgYjIsIEIzICYgYjMsIEI0ICYgYjQsIEI1ICYgYjUsIEI2ICYgYjYpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIChnZXRfcG9pbnRlcih1KS0+KmZfKShiMSwgYjIsIGIzLCBiNCwgYjUsIGI2KTsKLSAgICB9Ci0KLXB1YmxpYzoKLQotICAgIGV4cGxpY2l0IE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mNikoRiBmKTogZl8oZikge30KLQotICAgIFIgb3BlcmF0b3IoKShUICogcCwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNikgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHAtPipmXykoYTEsIGEyLCBhMywgYTQsIGE1LCBhNik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVT4gUiBvcGVyYXRvcigpKFUgJiB1LCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2KSBjb25zdAotICAgIHsKLSAgICAgICAgVSBjb25zdCAqIHAgPSAwOwotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIGNhbGwodSwgcCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNik7Ci0gICAgfQotCi0jaWZkZWYgTkROQk9PU1RfTUVNX0ZOX0VOQUJMRV9DT05TVF9PVkVSTE9BRFMKLQotICAgIHRlbXBsYXRlPGNsYXNzIFU+IFIgb3BlcmF0b3IoKShVIGNvbnN0ICYgdSwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNikgY29uc3QKLSAgICB7Ci0gICAgICAgIFUgY29uc3QgKiBwID0gMDsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiBjYWxsKHUsIHAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpOwotICAgIH0KLQotI2VuZGlmCi0KLSAgICBSIG9wZXJhdG9yKCkoVCAmIHQsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOICh0LipmXykoYTEsIGEyLCBhMywgYTQsIGE1LCBhNik7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mNikgY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8gPT0gcmhzLmZfOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShORE5CT09TVF9NRU1fRk5fTkFNRShtZjYpIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfICE9IHJocy5mXzsKLSAgICB9Ci19OwotCi0vLyBjbWY2Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYgTkROQk9PU1RfTUVNX0ZOX0NMQVNTX0Y+IGNsYXNzIE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjYpCi17Ci1wdWJsaWM6Ci0KLSAgICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0KLXByaXZhdGU6Ci0gICAgCi0gICAgTkROQk9PU1RfTUVNX0ZOX1RZUEVERUYoUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipGKSAoQTEsIEEyLCBBMywgQTQsIEE1LCBBNikgY29uc3QpCi0gICAgRiBmXzsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjMsIGNsYXNzIEI0LCBjbGFzcyBCNSwgY2xhc3MgQjY+IFIgY2FsbChVICYgdSwgVCBjb25zdCAqLCBCMSAmIGIxLCBCMiAmIGIyLCBCMyAmIGIzLCBCNCAmIGI0LCBCNSAmIGI1LCBCNiAmIGI2KSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAodS4qZl8pKGIxLCBiMiwgYjMsIGI0LCBiNSwgYjYpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjMsIGNsYXNzIEI0LCBjbGFzcyBCNSwgY2xhc3MgQjY+IFIgY2FsbChVICYgdSwgdm9pZCBjb25zdCAqLCBCMSAmIGIxLCBCMiAmIGIyLCBCMyAmIGIzLCBCNCAmIGI0LCBCNSAmIGI1LCBCNiAmIGI2KSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAoZ2V0X3BvaW50ZXIodSktPipmXykoYjEsIGIyLCBiMywgYjQsIGI1LCBiNik7Ci0gICAgfQotCi1wdWJsaWM6Ci0gICAgCi0gICAgZXhwbGljaXQgTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mNikoRiBmKTogZl8oZikge30KLQotICAgIHRlbXBsYXRlPGNsYXNzIFU+IFIgb3BlcmF0b3IoKShVIGNvbnN0ICYgdSwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNikgY29uc3QKLSAgICB7Ci0gICAgICAgIFUgY29uc3QgKiBwID0gMDsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiBjYWxsKHUsIHAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpOwotICAgIH0KLQotICAgIFIgb3BlcmF0b3IoKShUIGNvbnN0ICYgdCwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNikgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHQuKmZfKShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mNikgY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8gPT0gcmhzLmZfOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShORE5CT09TVF9NRU1fRk5fTkFNRShjbWY2KSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyAhPSByaHMuZl87Ci0gICAgfQotfTsKLQotLy8gbWY3Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3IE5ETkJPT1NUX01FTV9GTl9DTEFTU19GPiBjbGFzcyBORE5CT09TVF9NRU1fRk5fTkFNRShtZjcpCi17Ci1wdWJsaWM6Ci0KLSAgICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0KLXByaXZhdGU6Ci0gICAgCi0gICAgTkROQk9PU1RfTUVNX0ZOX1RZUEVERUYoUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipGKSAoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcpKQotICAgIEYgZl87Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjUsIGNsYXNzIEI2LCBjbGFzcyBCNz4gUiBjYWxsKFUgJiB1LCBUIGNvbnN0ICosIEIxICYgYjEsIEIyICYgYjIsIEIzICYgYjMsIEI0ICYgYjQsIEI1ICYgYjUsIEI2ICYgYjYsIEI3ICYgYjcpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOICh1LipmXykoYjEsIGIyLCBiMywgYjQsIGI1LCBiNiwgYjcpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjMsIGNsYXNzIEI0LCBjbGFzcyBCNSwgY2xhc3MgQjYsIGNsYXNzIEI3PiBSIGNhbGwoVSAmIHUsIHZvaWQgY29uc3QgKiwgQjEgJiBiMSwgQjIgJiBiMiwgQjMgJiBiMywgQjQgJiBiNCwgQjUgJiBiNSwgQjYgJiBiNiwgQjcgJiBiNykgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKGdldF9wb2ludGVyKHUpLT4qZl8pKGIxLCBiMiwgYjMsIGI0LCBiNSwgYjYsIGI3KTsKLSAgICB9Ci0KLXB1YmxpYzoKLSAgICAKLSAgICBleHBsaWNpdCBORE5CT09TVF9NRU1fRk5fTkFNRShtZjcpKEYgZik6IGZfKGYpIHt9Ci0KLSAgICBSIG9wZXJhdG9yKCkoVCAqIHAsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3KSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAocC0+KmZfKShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNyk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVT4gUiBvcGVyYXRvcigpKFUgJiB1LCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2LCBBNyBhNykgY29uc3QKLSAgICB7Ci0gICAgICAgIFUgY29uc3QgKiBwID0gMDsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiBjYWxsKHUsIHAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KTsKLSAgICB9Ci0KLSNpZmRlZiBORE5CT09TVF9NRU1fRk5fRU5BQkxFX0NPTlNUX09WRVJMT0FEUwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVT4gUiBvcGVyYXRvcigpKFUgY29uc3QgJiB1LCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2LCBBNyBhNykgY29uc3QKLSAgICB7Ci0gICAgICAgIFUgY29uc3QgKiBwID0gMDsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiBjYWxsKHUsIHAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KTsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgUiBvcGVyYXRvcigpKFQgJiB0LCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2LCBBNyBhNykgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHQuKmZfKShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNyk7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mNykgY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8gPT0gcmhzLmZfOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShORE5CT09TVF9NRU1fRk5fTkFNRShtZjcpIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfICE9IHJocy5mXzsKLSAgICB9Ci19OwotCi0vLyBjbWY3Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3IE5ETkJPT1NUX01FTV9GTl9DTEFTU19GPiBjbGFzcyBORE5CT09TVF9NRU1fRk5fTkFNRShjbWY3KQotewotcHVibGljOgotCi0gICAgdHlwZWRlZiBSIHJlc3VsdF90eXBlOwotCi1wcml2YXRlOgotICAgIAotICAgIE5ETkJPT1NUX01FTV9GTl9UWVBFREVGKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqRikgKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3KSBjb25zdCkKLSAgICBGIGZfOwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsIGNsYXNzIEI1LCBjbGFzcyBCNiwgY2xhc3MgQjc+IFIgY2FsbChVICYgdSwgVCBjb25zdCAqLCBCMSAmIGIxLCBCMiAmIGIyLCBCMyAmIGIzLCBCNCAmIGI0LCBCNSAmIGI1LCBCNiAmIGI2LCBCNyAmIGI3KSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAodS4qZl8pKGIxLCBiMiwgYjMsIGI0LCBiNSwgYjYsIGI3KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjUsIGNsYXNzIEI2LCBjbGFzcyBCNz4gUiBjYWxsKFUgJiB1LCB2b2lkIGNvbnN0ICosIEIxICYgYjEsIEIyICYgYjIsIEIzICYgYjMsIEI0ICYgYjQsIEI1ICYgYjUsIEI2ICYgYjYsIEI3ICYgYjcpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIChnZXRfcG9pbnRlcih1KS0+KmZfKShiMSwgYjIsIGIzLCBiNCwgYjUsIGI2LCBiNyk7Ci0gICAgfQotCi1wdWJsaWM6Ci0gICAgCi0gICAgZXhwbGljaXQgTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mNykoRiBmKTogZl8oZikge30KLQotICAgIHRlbXBsYXRlPGNsYXNzIFU+IFIgb3BlcmF0b3IoKShVIGNvbnN0ICYgdSwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcpIGNvbnN0Ci0gICAgewotICAgICAgICBVIGNvbnN0ICogcCA9IDA7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gY2FsbCh1LCBwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNyk7Ci0gICAgfQotCi0gICAgUiBvcGVyYXRvcigpKFQgY29uc3QgJiB0LCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2LCBBNyBhNykgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHQuKmZfKShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNyk7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjcpIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfID09IHJocy5mXzsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mNykgY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8gIT0gcmhzLmZfOwotICAgIH0KLX07Ci0KLS8vIG1mOAotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTggTkROQk9PU1RfTUVNX0ZOX0NMQVNTX0Y+IGNsYXNzIE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mOCkKLXsKLXB1YmxpYzoKLQotICAgIHR5cGVkZWYgUiByZXN1bHRfdHlwZTsKLQotcHJpdmF0ZToKLSAgICAKLSAgICBORE5CT09TVF9NRU1fRk5fVFlQRURFRihSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KkYpIChBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgpKQotICAgIEYgZl87Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjUsIGNsYXNzIEI2LCBjbGFzcyBCNywgY2xhc3MgQjg+IFIgY2FsbChVICYgdSwgVCBjb25zdCAqLCBCMSAmIGIxLCBCMiAmIGIyLCBCMyAmIGIzLCBCNCAmIGI0LCBCNSAmIGI1LCBCNiAmIGI2LCBCNyAmIGI3LCBCOCAmIGI4KSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAodS4qZl8pKGIxLCBiMiwgYjMsIGI0LCBiNSwgYjYsIGI3LCBiOCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsIGNsYXNzIEI1LCBjbGFzcyBCNiwgY2xhc3MgQjcsIGNsYXNzIEI4PiBSIGNhbGwoVSAmIHUsIHZvaWQgY29uc3QgKiwgQjEgJiBiMSwgQjIgJiBiMiwgQjMgJiBiMywgQjQgJiBiNCwgQjUgJiBiNSwgQjYgJiBiNiwgQjcgJiBiNywgQjggJiBiOCkgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKGdldF9wb2ludGVyKHUpLT4qZl8pKGIxLCBiMiwgYjMsIGI0LCBiNSwgYjYsIGI3LCBiOCk7Ci0gICAgfQotCi1wdWJsaWM6Ci0gICAgCi0gICAgZXhwbGljaXQgTkROQk9PU1RfTUVNX0ZOX05BTUUobWY4KShGIGYpOiBmXyhmKSB7fQotCi0gICAgUiBvcGVyYXRvcigpKFQgKiBwLCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2LCBBNyBhNywgQTggYTgpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIChwLT4qZl8pKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVT4gUiBvcGVyYXRvcigpKFUgJiB1LCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2LCBBNyBhNywgQTggYTgpIGNvbnN0Ci0gICAgewotICAgICAgICBVIGNvbnN0ICogcCA9IDA7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gY2FsbCh1LCBwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpOwotICAgIH0KLQotI2lmZGVmIE5ETkJPT1NUX01FTV9GTl9FTkFCTEVfQ09OU1RfT1ZFUkxPQURTCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBSIG9wZXJhdG9yKCkoVSBjb25zdCAmIHUsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3LCBBOCBhOCkgY29uc3QKLSAgICB7Ci0gICAgICAgIFUgY29uc3QgKiBwID0gMDsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiBjYWxsKHUsIHAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCk7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIFIgb3BlcmF0b3IoKShUICYgdCwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcsIEE4IGE4KSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAodC4qZl8pKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCk7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mOCkgY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8gPT0gcmhzLmZfOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShORE5CT09TVF9NRU1fRk5fTkFNRShtZjgpIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfICE9IHJocy5mXzsKLSAgICB9Ci19OwotCi0vLyBjbWY4Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCBORE5CT09TVF9NRU1fRk5fQ0xBU1NfRj4gY2xhc3MgTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mOCkKLXsKLXB1YmxpYzoKLQotICAgIHR5cGVkZWYgUiByZXN1bHRfdHlwZTsKLQotcHJpdmF0ZToKLSAgICAKLSAgICBORE5CT09TVF9NRU1fRk5fVFlQRURFRihSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KkYpIChBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgpIGNvbnN0KQotICAgIEYgZl87Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjUsIGNsYXNzIEI2LCBjbGFzcyBCNywgY2xhc3MgQjg+IFIgY2FsbChVICYgdSwgVCBjb25zdCAqLCBCMSAmIGIxLCBCMiAmIGIyLCBCMyAmIGIzLCBCNCAmIGI0LCBCNSAmIGI1LCBCNiAmIGI2LCBCNyAmIGI3LCBCOCAmIGI4KSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAodS4qZl8pKGIxLCBiMiwgYjMsIGI0LCBiNSwgYjYsIGI3LCBiOCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsIGNsYXNzIEI1LCBjbGFzcyBCNiwgY2xhc3MgQjcsIGNsYXNzIEI4PiBSIGNhbGwoVSAmIHUsIHZvaWQgY29uc3QgKiwgQjEgJiBiMSwgQjIgJiBiMiwgQjMgJiBiMywgQjQgJiBiNCwgQjUgJiBiNSwgQjYgJiBiNiwgQjcgJiBiNywgQjggJiBiOCkgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKGdldF9wb2ludGVyKHUpLT4qZl8pKGIxLCBiMiwgYjMsIGI0LCBiNSwgYjYsIGI3LCBiOCk7Ci0gICAgfQotCi1wdWJsaWM6Ci0gICAgCi0gICAgZXhwbGljaXQgTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mOCkoRiBmKTogZl8oZikge30KLQotICAgIFIgb3BlcmF0b3IoKShUIGNvbnN0ICogcCwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcsIEE4IGE4KSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAocC0+KmZfKShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFU+IFIgb3BlcmF0b3IoKShVIGNvbnN0ICYgdSwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcsIEE4IGE4KSBjb25zdAotICAgIHsKLSAgICAgICAgVSBjb25zdCAqIHAgPSAwOwotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIGNhbGwodSwgcCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KTsKLSAgICB9Ci0KLSAgICBSIG9wZXJhdG9yKCkoVCBjb25zdCAmIHQsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3LCBBOCBhOCkgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHQuKmZfKShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShORE5CT09TVF9NRU1fRk5fTkFNRShjbWY4KSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyA9PSByaHMuZl87Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjgpIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfICE9IHJocy5mXzsKLSAgICB9Ci19OwotCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX0VOQUJMRV9DT05TVF9PVkVSTE9BRFMKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvYmluZC9tZW1fZm5fdncuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9iaW5kL21lbV9mbl92dy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmZmE2NjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9iaW5kL21lbV9mbl92dy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzAgKzAsMCBAQAotLy8KLS8vICBiaW5kL21lbV9mbl92dy5ocHAgLSB2b2lkIHJldHVybiBoZWxwZXIgd3JhcHBlcnMKLS8vCi0vLyAgRG8gbm90IGluY2x1ZGUgdGhpcyBoZWFkZXIgZGlyZWN0bHkKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9iaW5kL21lbV9mbi5odG1sIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVD4gc3RydWN0IE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mMCk6IHB1YmxpYyBtZjxSPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIE5ETkJPT1NUX01FTV9GTl9OQU1FMihtZjApPFIsIFQsIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqKSAoKT4KLXsKLSAgICB0eXBlZGVmIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqRikgKCk7Ci0gICAgZXhwbGljaXQgTkROQk9PU1RfTUVNX0ZOX05BTUUobWYwKShGIGYpOiBtZjxSPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIE5ETkJPT1NUX01FTV9GTl9OQU1FMihtZjApPFIsIFQsIEY+KGYpIHt9Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBUPiBzdHJ1Y3QgTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mMCk6IHB1YmxpYyBtZjxSPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIE5ETkJPT1NUX01FTV9GTl9OQU1FMihjbWYwKTxSLCBULCBSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KikgKCkgY29uc3Q+Ci17Ci0gICAgdHlwZWRlZiBSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KkYpICgpIGNvbnN0OwotICAgIGV4cGxpY2l0IE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjApKEYgZik6IG1mPFI+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgTkROQk9PU1RfTUVNX0ZOX05BTUUyKGNtZjApPFIsIFQsIEY+KGYpIHt9Ci19OwotCi0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExPiBzdHJ1Y3QgTkROQk9PU1RfTUVNX0ZOX05BTUUobWYxKTogcHVibGljIG1mPFI+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgTkROQk9PU1RfTUVNX0ZOX05BTUUyKG1mMSk8UiwgVCwgQTEsIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqKSAoQTEpPgotewotICAgIHR5cGVkZWYgUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipGKSAoQTEpOwotICAgIGV4cGxpY2l0IE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mMSkoRiBmKTogbWY8Uj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBORE5CT09TVF9NRU1fRk5fTkFNRTIobWYxKTxSLCBULCBBMSwgRj4oZikge30KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExPiBzdHJ1Y3QgTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mMSk6IHB1YmxpYyBtZjxSPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIE5ETkJPT1NUX01FTV9GTl9OQU1FMihjbWYxKTxSLCBULCBBMSwgUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OiopIChBMSkgY29uc3Q+Ci17Ci0gICAgdHlwZWRlZiBSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KkYpIChBMSkgY29uc3Q7Ci0gICAgZXhwbGljaXQgTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mMSkoRiBmKTogbWY8Uj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBORE5CT09TVF9NRU1fRk5fTkFNRTIoY21mMSk8UiwgVCwgQTEsIEY+KGYpIHt9Ci19OwotCi0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMj4gc3RydWN0IE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mMik6IHB1YmxpYyBtZjxSPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIE5ETkJPT1NUX01FTV9GTl9OQU1FMihtZjIpPFIsIFQsIEExLCBBMiwgUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OiopIChBMSwgQTIpPgotewotICAgIHR5cGVkZWYgUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipGKSAoQTEsIEEyKTsKLSAgICBleHBsaWNpdCBORE5CT09TVF9NRU1fRk5fTkFNRShtZjIpKEYgZik6IG1mPFI+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgTkROQk9PU1RfTUVNX0ZOX05BTUUyKG1mMik8UiwgVCwgQTEsIEEyLCBGPihmKSB7fQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyPiBzdHJ1Y3QgTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mMik6IHB1YmxpYyBtZjxSPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIE5ETkJPT1NUX01FTV9GTl9OQU1FMihjbWYyKTxSLCBULCBBMSwgQTIsIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqKSAoQTEsIEEyKSBjb25zdD4KLXsKLSAgICB0eXBlZGVmIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqRikgKEExLCBBMikgY29uc3Q7Ci0gICAgZXhwbGljaXQgTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mMikoRiBmKTogbWY8Uj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBORE5CT09TVF9NRU1fRk5fTkFNRTIoY21mMik8UiwgVCwgQTEsIEEyLCBGPihmKSB7fQotfTsKLQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzPiBzdHJ1Y3QgTkROQk9PU1RfTUVNX0ZOX05BTUUobWYzKTogcHVibGljIG1mPFI+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgTkROQk9PU1RfTUVNX0ZOX05BTUUyKG1mMyk8UiwgVCwgQTEsIEEyLCBBMywgUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OiopIChBMSwgQTIsIEEzKT4KLXsKLSAgICB0eXBlZGVmIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqRikgKEExLCBBMiwgQTMpOwotICAgIGV4cGxpY2l0IE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mMykoRiBmKTogbWY8Uj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBORE5CT09TVF9NRU1fRk5fTkFNRTIobWYzKTxSLCBULCBBMSwgQTIsIEEzLCBGPihmKSB7fQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMz4gc3RydWN0IE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjMpOiBwdWJsaWMgbWY8Uj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBORE5CT09TVF9NRU1fRk5fTkFNRTIoY21mMyk8UiwgVCwgQTEsIEEyLCBBMywgUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OiopIChBMSwgQTIsIEEzKSBjb25zdD4KLXsKLSAgICB0eXBlZGVmIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqRikgKEExLCBBMiwgQTMpIGNvbnN0OwotICAgIGV4cGxpY2l0IE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjMpKEYgZik6IG1mPFI+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgTkROQk9PU1RfTUVNX0ZOX05BTUUyKGNtZjMpPFIsIFQsIEExLCBBMiwgQTMsIEY+KGYpIHt9Ci19OwotCi0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PiBzdHJ1Y3QgTkROQk9PU1RfTUVNX0ZOX05BTUUobWY0KTogcHVibGljIG1mPFI+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgTkROQk9PU1RfTUVNX0ZOX05BTUUyKG1mNCk8UiwgVCwgQTEsIEEyLCBBMywgQTQsIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqKSAoQTEsIEEyLCBBMywgQTQpPgotewotICAgIHR5cGVkZWYgUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipGKSAoQTEsIEEyLCBBMywgQTQpOwotICAgIGV4cGxpY2l0IE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mNCkoRiBmKTogbWY8Uj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBORE5CT09TVF9NRU1fRk5fTkFNRTIobWY0KTxSLCBULCBBMSwgQTIsIEEzLCBBNCwgRj4oZikge30KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PiBzdHJ1Y3QgTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mNCk6IHB1YmxpYyBtZjxSPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIE5ETkJPT1NUX01FTV9GTl9OQU1FMihjbWY0KTxSLCBULCBBMSwgQTIsIEEzLCBBNCwgUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OiopIChBMSwgQTIsIEEzLCBBNCkgY29uc3Q+Ci17Ci0gICAgdHlwZWRlZiBSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KkYpIChBMSwgQTIsIEEzLCBBNCkgY29uc3Q7Ci0gICAgZXhwbGljaXQgTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mNCkoRiBmKTogbWY8Uj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBORE5CT09TVF9NRU1fRk5fTkFNRTIoY21mNCk8UiwgVCwgQTEsIEEyLCBBMywgQTQsIEY+KGYpIHt9Ci19OwotCi0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNT4gc3RydWN0IE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mNSk6IHB1YmxpYyBtZjxSPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIE5ETkJPT1NUX01FTV9GTl9OQU1FMihtZjUpPFIsIFQsIEExLCBBMiwgQTMsIEE0LCBBNSwgUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OiopIChBMSwgQTIsIEEzLCBBNCwgQTUpPgotewotICAgIHR5cGVkZWYgUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipGKSAoQTEsIEEyLCBBMywgQTQsIEE1KTsKLSAgICBleHBsaWNpdCBORE5CT09TVF9NRU1fRk5fTkFNRShtZjUpKEYgZik6IG1mPFI+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgTkROQk9PU1RfTUVNX0ZOX05BTUUyKG1mNSk8UiwgVCwgQTEsIEEyLCBBMywgQTQsIEE1LCBGPihmKSB7fQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1PiBzdHJ1Y3QgTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mNSk6IHB1YmxpYyBtZjxSPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIE5ETkJPT1NUX01FTV9GTl9OQU1FMihjbWY1KTxSLCBULCBBMSwgQTIsIEEzLCBBNCwgQTUsIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqKSAoQTEsIEEyLCBBMywgQTQsIEE1KSBjb25zdD4KLXsKLSAgICB0eXBlZGVmIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqRikgKEExLCBBMiwgQTMsIEE0LCBBNSkgY29uc3Q7Ci0gICAgZXhwbGljaXQgTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mNSkoRiBmKTogbWY8Uj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBORE5CT09TVF9NRU1fRk5fTkFNRTIoY21mNSk8UiwgVCwgQTEsIEEyLCBBMywgQTQsIEE1LCBGPihmKSB7fQotfTsKLQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2PiBzdHJ1Y3QgTkROQk9PU1RfTUVNX0ZOX05BTUUobWY2KTogcHVibGljIG1mPFI+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgTkROQk9PU1RfTUVNX0ZOX05BTUUyKG1mNik8UiwgVCwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OiopIChBMSwgQTIsIEEzLCBBNCwgQTUsIEE2KT4KLXsKLSAgICB0eXBlZGVmIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqRikgKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYpOwotICAgIGV4cGxpY2l0IE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mNikoRiBmKTogbWY8Uj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBORE5CT09TVF9NRU1fRk5fTkFNRTIobWY2KTxSLCBULCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBGPihmKSB7fQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNj4gc3RydWN0IE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjYpOiBwdWJsaWMgbWY8Uj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBORE5CT09TVF9NRU1fRk5fTkFNRTIoY21mNik8UiwgVCwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OiopIChBMSwgQTIsIEEzLCBBNCwgQTUsIEE2KSBjb25zdD4KLXsKLSAgICB0eXBlZGVmIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqRikgKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYpIGNvbnN0OwotICAgIGV4cGxpY2l0IE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjYpKEYgZik6IG1mPFI+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgTkROQk9PU1RfTUVNX0ZOX05BTUUyKGNtZjYpPFIsIFQsIEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEY+KGYpIHt9Ci19OwotCi0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PiBzdHJ1Y3QgTkROQk9PU1RfTUVNX0ZOX05BTUUobWY3KTogcHVibGljIG1mPFI+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgTkROQk9PU1RfTUVNX0ZOX05BTUUyKG1mNyk8UiwgVCwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqKSAoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcpPgotewotICAgIHR5cGVkZWYgUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipGKSAoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcpOwotICAgIGV4cGxpY2l0IE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mNykoRiBmKTogbWY8Uj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBORE5CT09TVF9NRU1fRk5fTkFNRTIobWY3KTxSLCBULCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgRj4oZikge30KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PiBzdHJ1Y3QgTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mNyk6IHB1YmxpYyBtZjxSPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIE5ETkJPT1NUX01FTV9GTl9OQU1FMihjbWY3KTxSLCBULCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OiopIChBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNykgY29uc3Q+Ci17Ci0gICAgdHlwZWRlZiBSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KkYpIChBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNykgY29uc3Q7Ci0gICAgZXhwbGljaXQgTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mNykoRiBmKTogbWY8Uj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBORE5CT09TVF9NRU1fRk5fTkFNRTIoY21mNyk8UiwgVCwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEY+KGYpIHt9Ci19OwotCi0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOD4gc3RydWN0IE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mOCk6IHB1YmxpYyBtZjxSPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIE5ETkJPT1NUX01FTV9GTl9OQU1FMihtZjgpPFIsIFQsIEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OiopIChBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgpPgotewotICAgIHR5cGVkZWYgUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipGKSAoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4KTsKLSAgICBleHBsaWNpdCBORE5CT09TVF9NRU1fRk5fTkFNRShtZjgpKEYgZik6IG1mPFI+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgTkROQk9PU1RfTUVNX0ZOX05BTUUyKG1mOCk8UiwgVCwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBGPihmKSB7fQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4PiBzdHJ1Y3QgTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mOCk6IHB1YmxpYyBtZjxSPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIE5ETkJPT1NUX01FTV9GTl9OQU1FMihjbWY4KTxSLCBULCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqKSAoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4KSBjb25zdD4KLXsKLSAgICB0eXBlZGVmIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqRikgKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCkgY29uc3Q7Ci0gICAgZXhwbGljaXQgTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mOCkoRiBmKTogbWY8Uj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBORE5CT09TVF9NRU1fRk5fTkFNRTIoY21mOCk8UiwgVCwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBGPihmKSB7fQotfTsKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9iaW5kL3BsYWNlaG9sZGVycy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2JpbmQvcGxhY2Vob2xkZXJzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWIzODNmNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2JpbmQvcGxhY2Vob2xkZXJzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfQklORF9QTEFDRUhPTERFUlNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0JJTkRfUExBQ0VIT0xERVJTX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICBiaW5kL3BsYWNlaG9sZGVycy5ocHAgLSBfTiBkZWZpbml0aW9ucwotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDIgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZC4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2JpbmQvYmluZC5odG1sIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2JpbmQvYXJnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi1uYW1lc3BhY2UKLXsKLQotI2lmIGRlZmluZWQoX19CT1JMQU5EQ19fKSB8fCBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPCA0KQotCi1zdGF0aWMgaW5saW5lIG5kbmJvb3N0Ojphcmc8MT4gXzEoKSB7IHJldHVybiBuZG5ib29zdDo6YXJnPDE+KCk7IH0KLXN0YXRpYyBpbmxpbmUgbmRuYm9vc3Q6OmFyZzwyPiBfMigpIHsgcmV0dXJuIG5kbmJvb3N0Ojphcmc8Mj4oKTsgfQotc3RhdGljIGlubGluZSBuZG5ib29zdDo6YXJnPDM+IF8zKCkgeyByZXR1cm4gbmRuYm9vc3Q6OmFyZzwzPigpOyB9Ci1zdGF0aWMgaW5saW5lIG5kbmJvb3N0Ojphcmc8ND4gXzQoKSB7IHJldHVybiBuZG5ib29zdDo6YXJnPDQ+KCk7IH0KLXN0YXRpYyBpbmxpbmUgbmRuYm9vc3Q6OmFyZzw1PiBfNSgpIHsgcmV0dXJuIG5kbmJvb3N0Ojphcmc8NT4oKTsgfQotc3RhdGljIGlubGluZSBuZG5ib29zdDo6YXJnPDY+IF82KCkgeyByZXR1cm4gbmRuYm9vc3Q6OmFyZzw2PigpOyB9Ci1zdGF0aWMgaW5saW5lIG5kbmJvb3N0Ojphcmc8Nz4gXzcoKSB7IHJldHVybiBuZG5ib29zdDo6YXJnPDc+KCk7IH0KLXN0YXRpYyBpbmxpbmUgbmRuYm9vc3Q6OmFyZzw4PiBfOCgpIHsgcmV0dXJuIG5kbmJvb3N0Ojphcmc8OD4oKTsgfQotc3RhdGljIGlubGluZSBuZG5ib29zdDo6YXJnPDk+IF85KCkgeyByZXR1cm4gbmRuYm9vc3Q6OmFyZzw5PigpOyB9Ci0KLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgfHwgKGRlZmluZWQoX19ERUNDWFhfVkVSKSAmJiBfX0RFQ0NYWF9WRVIgPD0gNjA1OTAwMzEpIHx8IGRlZmluZWQoX19NV0VSS1NfXykgfHwgXAotICAgIGRlZmluZWQoX19HTlVDX18pICYmIChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgMikgIAotCi1zdGF0aWMgbmRuYm9vc3Q6OmFyZzwxPiBfMTsKLXN0YXRpYyBuZG5ib29zdDo6YXJnPDI+IF8yOwotc3RhdGljIG5kbmJvb3N0Ojphcmc8Mz4gXzM7Ci1zdGF0aWMgbmRuYm9vc3Q6OmFyZzw0PiBfNDsKLXN0YXRpYyBuZG5ib29zdDo6YXJnPDU+IF81Owotc3RhdGljIG5kbmJvb3N0Ojphcmc8Nj4gXzY7Ci1zdGF0aWMgbmRuYm9vc3Q6OmFyZzw3PiBfNzsKLXN0YXRpYyBuZG5ib29zdDo6YXJnPDg+IF84Owotc3RhdGljIG5kbmJvb3N0Ojphcmc8OT4gXzk7Ci0KLSNlbHNlCi0KLW5kbmJvb3N0Ojphcmc8MT4gXzE7Ci1uZG5ib29zdDo6YXJnPDI+IF8yOwotbmRuYm9vc3Q6OmFyZzwzPiBfMzsKLW5kbmJvb3N0Ojphcmc8ND4gXzQ7Ci1uZG5ib29zdDo6YXJnPDU+IF81OwotbmRuYm9vc3Q6OmFyZzw2PiBfNjsKLW5kbmJvb3N0Ojphcmc8Nz4gXzc7Ci1uZG5ib29zdDo6YXJnPDg+IF84OwotbmRuYm9vc3Q6OmFyZzw5PiBfOTsKLQotI2VuZGlmCi0KLX0gLy8gdW5uYW1lZCBuYW1lc3BhY2UKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfQklORF9QTEFDRUhPTERFUlNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2JpbmQvcHJvdGVjdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2JpbmQvcHJvdGVjdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkZmJiMWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9iaW5kL3Byb3RlY3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzA0ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfQklORF9QUk9URUNUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9CSU5EX1BST1RFQ1RfSFBQX0lOQ0xVREVECi0KLS8vCi0vLyAgcHJvdGVjdC5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAyIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLyAgQ29weXJpZ2h0IChjKSAyMDA5IFN0ZXZlbiBXYXRhbmFiZQotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBfYmkKLXsKLQotdGVtcGxhdGU8Y2xhc3MgRj4gY2xhc3MgcHJvdGVjdGVkX2JpbmRfdAotewotcHVibGljOgotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjpyZXN1bHRfdHlwZSByZXN1bHRfdHlwZTsKLQotICAgIGV4cGxpY2l0IHByb3RlY3RlZF9iaW5kX3QoRiBmKTogZl8oZikKLSAgICB7Ci0gICAgfQotCi0gICAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKSgpCi0gICAgewotICAgICAgICByZXR1cm4gZl8oKTsKLSAgICB9Ci0KLSAgICByZXN1bHRfdHlwZSBvcGVyYXRvcigpKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXygpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExPiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExICYgYTEpCi0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExPiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExICYgYTEpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEpOwotICAgIH0KLQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcpIFwKLSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0VER19WRVJTSU9OX18sIDw9IDIzOCkKLQotICAgIHRlbXBsYXRlPGNsYXNzIEExPiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKGNvbnN0IEExICYgYTEpCi0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExPiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKGNvbnN0IEExICYgYTEpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEpOwotICAgIH0KLQotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTI+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSwgQTIgJiBhMikKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyhhMSwgYTIpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMj4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSAmIGExLCBBMiAmIGEyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExLCBhMik7Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcpIFwKLSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0VER19WRVJTSU9OX18sIDw9IDIzOCkKLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMj4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExLCBBMiAmIGEyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExLCBhMik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyPiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExIGNvbnN0ICYgYTEsIEEyICYgYTIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTI+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSwgQTIgY29uc3QgJiBhMikKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyhhMSwgYTIpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMj4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSAmIGExLCBBMiBjb25zdCAmIGEyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExLCBhMik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyPiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIpCi0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTI+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyhhMSwgYTIpOwotICAgIH0KLQotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzPiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExICYgYTEsIEEyICYgYTIsIEEzICYgYTMpCi0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyLCBhMyk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMz4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSAmIGExLCBBMiAmIGEyLCBBMyAmIGEzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExLCBhMiwgYTMpOwotICAgIH0KLSAgICAKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORykgXAotICYmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fRURHX1ZFUlNJT05fXywgPD0gMjM4KQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMz4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExLCBhMiwgYTMpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTM+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyhhMSwgYTIsIGEzKTsKLSAgICB9Ci0gICAgCi0jZW5kaWYKLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExICYgYTEsIEEyICYgYTIsIEEzICYgYTMsIEE0ICYgYTQpCi0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyLCBhMywgYTQpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExICYgYTEsIEEyICYgYTIsIEEzICYgYTMsIEE0ICYgYTQpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyLCBhMywgYTQpOwotICAgIH0KLSAgICAKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORykgXAotICYmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fRURHX1ZFUlNJT05fXywgPD0gMjM4KQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQ+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMywgQTQgY29uc3QgJiBhNCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyhhMSwgYTIsIGEzLCBhNCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQ+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMywgQTQgY29uc3QgJiBhNCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyhhMSwgYTIsIGEzLCBhNCk7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNT4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSAmIGExLCBBMiAmIGEyLCBBMyAmIGEzLCBBNCAmIGE0LCBBNSAmIGE1KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExLCBhMiwgYTMsIGE0LCBhNSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExICYgYTEsIEEyICYgYTIsIEEzICYgYTMsIEE0ICYgYTQsIEE1ICYgYTUpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyLCBhMywgYTQsIGE1KTsKLSAgICB9Ci0gICAgCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcpIFwKLSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0VER19WRVJTSU9OX18sIDw9IDIzOCkKLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNT4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzLCBBNCBjb25zdCAmIGE0LCBBNSBjb25zdCAmIGE1KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExLCBhMiwgYTMsIGE0LCBhNSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQsIEE1IGNvbnN0ICYgYTUpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyLCBhMywgYTQsIGE1KTsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNj4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSAmIGExLCBBMiAmIGEyLCBBMyAmIGEzLCBBNCAmIGE0LCBBNSAmIGE1LCBBNiAmIGE2KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTY+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSwgQTIgJiBhMiwgQTMgJiBhMywgQTQgJiBhNCwgQTUgJiBhNSwgQTYgJiBhNikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyhhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KTsKLSAgICB9Ci0gICAgCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcpIFwKLSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0VER19WRVJTSU9OX18sIDw9IDIzOCkKLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTY+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMywgQTQgY29uc3QgJiBhNCwgQTUgY29uc3QgJiBhNSwgQTYgY29uc3QgJiBhNikKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyhhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQsIEE1IGNvbnN0ICYgYTUsIEE2IGNvbnN0ICYgYTYpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyLCBhMywgYTQsIGE1LCBhNik7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExICYgYTEsIEEyICYgYTIsIEEzICYgYTMsIEE0ICYgYTQsIEE1ICYgYTUsIEE2ICYgYTYsIEE3ICYgYTcpCi0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExICYgYTEsIEEyICYgYTIsIEEzICYgYTMsIEE0ICYgYTQsIEE1ICYgYTUsIEE2ICYgYTYsIEE3ICYgYTcpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpOwotICAgIH0KLSAgICAKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORykgXAotICYmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fRURHX1ZFUlNJT05fXywgPD0gMjM4KQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTc+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMywgQTQgY29uc3QgJiBhNCwgQTUgY29uc3QgJiBhNSwgQTYgY29uc3QgJiBhNiwgQTcgY29uc3QgJiBhNykKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyhhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNyk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTc+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMywgQTQgY29uc3QgJiBhNCwgQTUgY29uc3QgJiBhNSwgQTYgY29uc3QgJiBhNiwgQTcgY29uc3QgJiBhNykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyhhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNyk7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOD4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSAmIGExLCBBMiAmIGEyLCBBMyAmIGEzLCBBNCAmIGE0LCBBNSAmIGE1LCBBNiAmIGE2LCBBNyAmIGE3LCBBOCAmIGE4KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExICYgYTEsIEEyICYgYTIsIEEzICYgYTMsIEE0ICYgYTQsIEE1ICYgYTUsIEE2ICYgYTYsIEE3ICYgYTcsIEE4ICYgYTgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KTsKLSAgICB9Ci0gICAgCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcpIFwKLSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0VER19WRVJTSU9OX18sIDw9IDIzOCkKLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOD4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzLCBBNCBjb25zdCAmIGE0LCBBNSBjb25zdCAmIGE1LCBBNiBjb25zdCAmIGE2LCBBNyBjb25zdCAmIGE3LCBBOCBjb25zdCAmIGE4KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQsIEE1IGNvbnN0ICYgYTUsIEE2IGNvbnN0ICYgYTYsIEE3IGNvbnN0ICYgYTcsIEE4IGNvbnN0ICYgYTgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KTsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOT4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSAmIGExLCBBMiAmIGEyLCBBMyAmIGEzLCBBNCAmIGE0LCBBNSAmIGE1LCBBNiAmIGE2LCBBNyAmIGE3LCBBOCAmIGE4LCBBOSAmIGE5KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCwgY2xhc3MgQTk+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSwgQTIgJiBhMiwgQTMgJiBhMywgQTQgJiBhNCwgQTUgJiBhNSwgQTYgJiBhNiwgQTcgJiBhNywgQTggJiBhOCwgQTkgJiBhOSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyhhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5KTsKLSAgICB9Ci0gICAgCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcpIFwKLSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0VER19WRVJTSU9OX18sIDw9IDIzOCkKLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCwgY2xhc3MgQTk+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMywgQTQgY29uc3QgJiBhNCwgQTUgY29uc3QgJiBhNSwgQTYgY29uc3QgJiBhNiwgQTcgY29uc3QgJiBhNywgQTggY29uc3QgJiBhOCwgQTkgY29uc3QgJiBhOSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyhhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTgsIGNsYXNzIEE5PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQsIEE1IGNvbnN0ICYgYTUsIEE2IGNvbnN0ICYgYTYsIEE3IGNvbnN0ICYgYTcsIEE4IGNvbnN0ICYgYTgsIEE5IGNvbnN0ICYgYTkpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSk7Ci0gICAgfQotCi0jZW5kaWYKLQotcHJpdmF0ZToKLQotICAgIEYgZl87Ci19OwotCi19IC8vIG5hbWVzcGFjZSBfYmkKLQotdGVtcGxhdGU8Y2xhc3MgRj4gX2JpOjpwcm90ZWN0ZWRfYmluZF90PEY+IHByb3RlY3QoRiBmKQotewotICAgIHJldHVybiBfYmk6OnByb3RlY3RlZF9iaW5kX3Q8Rj4oZik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0JJTkRfUFJPVEVDVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvYmluZC9zdG9yYWdlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvYmluZC9zdG9yYWdlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjUwOTI4Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2JpbmQvc3RvcmFnZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NzUgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9CSU5EX1NUT1JBR0VfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0JJTkRfU1RPUkFHRV9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgYmluZC9zdG9yYWdlLmhwcAotLy8KLS8vICBuZG5ib29zdC9iaW5kLmhwcCBzdXBwb3J0IGhlYWRlciwgb3B0aW1pemVkIHN0b3JhZ2UKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDA2IFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQKLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvYmluZC9iaW5kLmh0bWwgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL2FyZy5ocHA+Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ1MTIpIC8vIGFzc2lnbm1lbnQgb3BlcmF0b3IgY291bGQgbm90IGJlIGdlbmVyYXRlZAotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgX2JpCi17Ci0KLS8vIDEKLQotdGVtcGxhdGU8Y2xhc3MgQTE+IHN0cnVjdCBzdG9yYWdlMQotewotICAgIGV4cGxpY2l0IHN0b3JhZ2UxKCBBMSBhMSApOiBhMV8oIGExICkge30KLQotICAgIHRlbXBsYXRlPGNsYXNzIFY+IHZvaWQgYWNjZXB0KFYgJiB2KSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfQklORF9WSVNJVF9FQUNIKHYsIGExXywgMCk7Ci0gICAgfQotCi0gICAgQTEgYTFfOwotfTsKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICkgJiYgIWRlZmluZWQoIF9fQk9STEFORENfXyApCi0KLXRlbXBsYXRlPGludCBJPiBzdHJ1Y3Qgc3RvcmFnZTE8IG5kbmJvb3N0Ojphcmc8ST4gPgotewotICAgIGV4cGxpY2l0IHN0b3JhZ2UxKCBuZG5ib29zdDo6YXJnPEk+ICkge30KLQotICAgIHRlbXBsYXRlPGNsYXNzIFY+IHZvaWQgYWNjZXB0KFYgJikgY29uc3QgeyB9Ci0KLSAgICBzdGF0aWMgbmRuYm9vc3Q6OmFyZzxJPiBhMV8oKSB7IHJldHVybiBuZG5ib29zdDo6YXJnPEk+KCk7IH0KLX07Ci0KLXRlbXBsYXRlPGludCBJPiBzdHJ1Y3Qgc3RvcmFnZTE8IG5kbmJvb3N0Ojphcmc8ST4gKCopICgpID4KLXsKLSAgICBleHBsaWNpdCBzdG9yYWdlMSggbmRuYm9vc3Q6OmFyZzxJPiAoKikgKCkgKSB7fQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVj4gdm9pZCBhY2NlcHQoViAmKSBjb25zdCB7IH0KLQotICAgIHN0YXRpYyBuZG5ib29zdDo6YXJnPEk+IGExXygpIHsgcmV0dXJuIG5kbmJvb3N0Ojphcmc8ST4oKTsgfQotfTsKLQotI2VuZGlmCi0KLS8vIDIKLQotdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyPiBzdHJ1Y3Qgc3RvcmFnZTI6IHB1YmxpYyBzdG9yYWdlMTxBMT4KLXsKLSAgICB0eXBlZGVmIHN0b3JhZ2UxPEExPiBpbmhlcml0ZWQ7Ci0KLSAgICBzdG9yYWdlMiggQTEgYTEsIEEyIGEyICk6IHN0b3JhZ2UxPEExPiggYTEgKSwgYTJfKCBhMiApIHt9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiB2b2lkIGFjY2VwdChWICYgdikgY29uc3QKLSAgICB7Ci0gICAgICAgIGluaGVyaXRlZDo6YWNjZXB0KHYpOwotICAgICAgICBORE5CT09TVF9CSU5EX1ZJU0lUX0VBQ0godiwgYTJfLCAwKTsKLSAgICB9Ci0KLSAgICBBMiBhMl87Ci19OwotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gKQotCi10ZW1wbGF0ZTxjbGFzcyBBMSwgaW50IEk+IHN0cnVjdCBzdG9yYWdlMjwgQTEsIG5kbmJvb3N0Ojphcmc8ST4gPjogcHVibGljIHN0b3JhZ2UxPEExPgotewotICAgIHR5cGVkZWYgc3RvcmFnZTE8QTE+IGluaGVyaXRlZDsKLQotICAgIHN0b3JhZ2UyKCBBMSBhMSwgbmRuYm9vc3Q6OmFyZzxJPiApOiBzdG9yYWdlMTxBMT4oIGExICkge30KLQotICAgIHRlbXBsYXRlPGNsYXNzIFY+IHZvaWQgYWNjZXB0KFYgJiB2KSBjb25zdAotICAgIHsKLSAgICAgICAgaW5oZXJpdGVkOjphY2NlcHQodik7Ci0gICAgfQotCi0gICAgc3RhdGljIG5kbmJvb3N0Ojphcmc8ST4gYTJfKCkgeyByZXR1cm4gbmRuYm9vc3Q6OmFyZzxJPigpOyB9Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBBMSwgaW50IEk+IHN0cnVjdCBzdG9yYWdlMjwgQTEsIG5kbmJvb3N0Ojphcmc8ST4gKCopICgpID46IHB1YmxpYyBzdG9yYWdlMTxBMT4KLXsKLSAgICB0eXBlZGVmIHN0b3JhZ2UxPEExPiBpbmhlcml0ZWQ7Ci0KLSAgICBzdG9yYWdlMiggQTEgYTEsIG5kbmJvb3N0Ojphcmc8ST4gKCopICgpICk6IHN0b3JhZ2UxPEExPiggYTEgKSB7fQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVj4gdm9pZCBhY2NlcHQoViAmIHYpIGNvbnN0Ci0gICAgewotICAgICAgICBpbmhlcml0ZWQ6OmFjY2VwdCh2KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgbmRuYm9vc3Q6OmFyZzxJPiBhMl8oKSB7IHJldHVybiBuZG5ib29zdDo6YXJnPEk+KCk7IH0KLX07Ci0KLSNlbmRpZgotCi0vLyAzCi0KLXRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTM+IHN0cnVjdCBzdG9yYWdlMzogcHVibGljIHN0b3JhZ2UyPCBBMSwgQTIgPgotewotICAgIHR5cGVkZWYgc3RvcmFnZTI8QTEsIEEyPiBpbmhlcml0ZWQ7Ci0KLSAgICBzdG9yYWdlMyggQTEgYTEsIEEyIGEyLCBBMyBhMyApOiBzdG9yYWdlMjxBMSwgQTI+KCBhMSwgYTIgKSwgYTNfKCBhMyApIHt9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiB2b2lkIGFjY2VwdChWICYgdikgY29uc3QKLSAgICB7Ci0gICAgICAgIGluaGVyaXRlZDo6YWNjZXB0KHYpOwotICAgICAgICBORE5CT09TVF9CSU5EX1ZJU0lUX0VBQ0godiwgYTNfLCAwKTsKLSAgICB9Ci0KLSAgICBBMyBhM187Ci19OwotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gKQotCi10ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGludCBJPiBzdHJ1Y3Qgc3RvcmFnZTM8IEExLCBBMiwgbmRuYm9vc3Q6OmFyZzxJPiA+OiBwdWJsaWMgc3RvcmFnZTI8IEExLCBBMiA+Ci17Ci0gICAgdHlwZWRlZiBzdG9yYWdlMjxBMSwgQTI+IGluaGVyaXRlZDsKLQotICAgIHN0b3JhZ2UzKCBBMSBhMSwgQTIgYTIsIG5kbmJvb3N0Ojphcmc8ST4gKTogc3RvcmFnZTI8QTEsIEEyPiggYTEsIGEyICkge30KLQotICAgIHRlbXBsYXRlPGNsYXNzIFY+IHZvaWQgYWNjZXB0KFYgJiB2KSBjb25zdAotICAgIHsKLSAgICAgICAgaW5oZXJpdGVkOjphY2NlcHQodik7Ci0gICAgfQotCi0gICAgc3RhdGljIG5kbmJvb3N0Ojphcmc8ST4gYTNfKCkgeyByZXR1cm4gbmRuYm9vc3Q6OmFyZzxJPigpOyB9Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGludCBJPiBzdHJ1Y3Qgc3RvcmFnZTM8IEExLCBBMiwgbmRuYm9vc3Q6OmFyZzxJPiAoKikgKCkgPjogcHVibGljIHN0b3JhZ2UyPCBBMSwgQTIgPgotewotICAgIHR5cGVkZWYgc3RvcmFnZTI8QTEsIEEyPiBpbmhlcml0ZWQ7Ci0KLSAgICBzdG9yYWdlMyggQTEgYTEsIEEyIGEyLCBuZG5ib29zdDo6YXJnPEk+ICgqKSAoKSApOiBzdG9yYWdlMjxBMSwgQTI+KCBhMSwgYTIgKSB7fQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVj4gdm9pZCBhY2NlcHQoViAmIHYpIGNvbnN0Ci0gICAgewotICAgICAgICBpbmhlcml0ZWQ6OmFjY2VwdCh2KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgbmRuYm9vc3Q6OmFyZzxJPiBhM18oKSB7IHJldHVybiBuZG5ib29zdDo6YXJnPEk+KCk7IH0KLX07Ci0KLSNlbmRpZgotCi0vLyA0Ci0KLXRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PiBzdHJ1Y3Qgc3RvcmFnZTQ6IHB1YmxpYyBzdG9yYWdlMzwgQTEsIEEyLCBBMyA+Ci17Ci0gICAgdHlwZWRlZiBzdG9yYWdlMzxBMSwgQTIsIEEzPiBpbmhlcml0ZWQ7Ci0KLSAgICBzdG9yYWdlNCggQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQgKTogc3RvcmFnZTM8QTEsIEEyLCBBMz4oIGExLCBhMiwgYTMgKSwgYTRfKCBhNCApIHt9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiB2b2lkIGFjY2VwdChWICYgdikgY29uc3QKLSAgICB7Ci0gICAgICAgIGluaGVyaXRlZDo6YWNjZXB0KHYpOwotICAgICAgICBORE5CT09TVF9CSU5EX1ZJU0lUX0VBQ0godiwgYTRfLCAwKTsKLSAgICB9Ci0KLSAgICBBNCBhNF87Ci19OwotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gKQotCi10ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBpbnQgST4gc3RydWN0IHN0b3JhZ2U0PCBBMSwgQTIsIEEzLCBuZG5ib29zdDo6YXJnPEk+ID46IHB1YmxpYyBzdG9yYWdlMzwgQTEsIEEyLCBBMyA+Ci17Ci0gICAgdHlwZWRlZiBzdG9yYWdlMzxBMSwgQTIsIEEzPiBpbmhlcml0ZWQ7Ci0KLSAgICBzdG9yYWdlNCggQTEgYTEsIEEyIGEyLCBBMyBhMywgbmRuYm9vc3Q6OmFyZzxJPiApOiBzdG9yYWdlMzxBMSwgQTIsIEEzPiggYTEsIGEyLCBhMyApIHt9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiB2b2lkIGFjY2VwdChWICYgdikgY29uc3QKLSAgICB7Ci0gICAgICAgIGluaGVyaXRlZDo6YWNjZXB0KHYpOwotICAgIH0KLQotICAgIHN0YXRpYyBuZG5ib29zdDo6YXJnPEk+IGE0XygpIHsgcmV0dXJuIG5kbmJvb3N0Ojphcmc8ST4oKTsgfQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgaW50IEk+IHN0cnVjdCBzdG9yYWdlNDwgQTEsIEEyLCBBMywgbmRuYm9vc3Q6OmFyZzxJPiAoKikgKCkgPjogcHVibGljIHN0b3JhZ2UzPCBBMSwgQTIsIEEzID4KLXsKLSAgICB0eXBlZGVmIHN0b3JhZ2UzPEExLCBBMiwgQTM+IGluaGVyaXRlZDsKLQotICAgIHN0b3JhZ2U0KCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBuZG5ib29zdDo6YXJnPEk+ICgqKSAoKSApOiBzdG9yYWdlMzxBMSwgQTIsIEEzPiggYTEsIGEyLCBhMyApIHt9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiB2b2lkIGFjY2VwdChWICYgdikgY29uc3QKLSAgICB7Ci0gICAgICAgIGluaGVyaXRlZDo6YWNjZXB0KHYpOwotICAgIH0KLQotICAgIHN0YXRpYyBuZG5ib29zdDo6YXJnPEk+IGE0XygpIHsgcmV0dXJuIG5kbmJvb3N0Ojphcmc8ST4oKTsgfQotfTsKLQotI2VuZGlmCi0KLS8vIDUKLQotdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1PiBzdHJ1Y3Qgc3RvcmFnZTU6IHB1YmxpYyBzdG9yYWdlNDwgQTEsIEEyLCBBMywgQTQgPgotewotICAgIHR5cGVkZWYgc3RvcmFnZTQ8QTEsIEEyLCBBMywgQTQ+IGluaGVyaXRlZDsKLQotICAgIHN0b3JhZ2U1KCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUgKTogc3RvcmFnZTQ8QTEsIEEyLCBBMywgQTQ+KCBhMSwgYTIsIGEzLCBhNCApLCBhNV8oIGE1ICkge30KLQotICAgIHRlbXBsYXRlPGNsYXNzIFY+IHZvaWQgYWNjZXB0KFYgJiB2KSBjb25zdAotICAgIHsKLSAgICAgICAgaW5oZXJpdGVkOjphY2NlcHQodik7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfVklTSVRfRUFDSCh2LCBhNV8sIDApOwotICAgIH0KLQotICAgIEE1IGE1XzsKLX07Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTiApCi0KLXRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBpbnQgST4gc3RydWN0IHN0b3JhZ2U1PCBBMSwgQTIsIEEzLCBBNCwgbmRuYm9vc3Q6OmFyZzxJPiA+OiBwdWJsaWMgc3RvcmFnZTQ8IEExLCBBMiwgQTMsIEE0ID4KLXsKLSAgICB0eXBlZGVmIHN0b3JhZ2U0PEExLCBBMiwgQTMsIEE0PiBpbmhlcml0ZWQ7Ci0KLSAgICBzdG9yYWdlNSggQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIG5kbmJvb3N0Ojphcmc8ST4gKTogc3RvcmFnZTQ8QTEsIEEyLCBBMywgQTQ+KCBhMSwgYTIsIGEzLCBhNCApIHt9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiB2b2lkIGFjY2VwdChWICYgdikgY29uc3QKLSAgICB7Ci0gICAgICAgIGluaGVyaXRlZDo6YWNjZXB0KHYpOwotICAgIH0KLQotICAgIHN0YXRpYyBuZG5ib29zdDo6YXJnPEk+IGE1XygpIHsgcmV0dXJuIG5kbmJvb3N0Ojphcmc8ST4oKTsgfQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGludCBJPiBzdHJ1Y3Qgc3RvcmFnZTU8IEExLCBBMiwgQTMsIEE0LCBuZG5ib29zdDo6YXJnPEk+ICgqKSAoKSA+OiBwdWJsaWMgc3RvcmFnZTQ8IEExLCBBMiwgQTMsIEE0ID4KLXsKLSAgICB0eXBlZGVmIHN0b3JhZ2U0PEExLCBBMiwgQTMsIEE0PiBpbmhlcml0ZWQ7Ci0KLSAgICBzdG9yYWdlNSggQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIG5kbmJvb3N0Ojphcmc8ST4gKCopICgpICk6IHN0b3JhZ2U0PEExLCBBMiwgQTMsIEE0PiggYTEsIGEyLCBhMywgYTQgKSB7fQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVj4gdm9pZCBhY2NlcHQoViAmIHYpIGNvbnN0Ci0gICAgewotICAgICAgICBpbmhlcml0ZWQ6OmFjY2VwdCh2KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgbmRuYm9vc3Q6OmFyZzxJPiBhNV8oKSB7IHJldHVybiBuZG5ib29zdDo6YXJnPEk+KCk7IH0KLX07Ci0KLSNlbmRpZgotCi0vLyA2Ci0KLXRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTY+IHN0cnVjdCBzdG9yYWdlNjogcHVibGljIHN0b3JhZ2U1PCBBMSwgQTIsIEEzLCBBNCwgQTUgPgotewotICAgIHR5cGVkZWYgc3RvcmFnZTU8QTEsIEEyLCBBMywgQTQsIEE1PiBpbmhlcml0ZWQ7Ci0KLSAgICBzdG9yYWdlNiggQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiApOiBzdG9yYWdlNTxBMSwgQTIsIEEzLCBBNCwgQTU+KCBhMSwgYTIsIGEzLCBhNCwgYTUgKSwgYTZfKCBhNiApIHt9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiB2b2lkIGFjY2VwdChWICYgdikgY29uc3QKLSAgICB7Ci0gICAgICAgIGluaGVyaXRlZDo6YWNjZXB0KHYpOwotICAgICAgICBORE5CT09TVF9CSU5EX1ZJU0lUX0VBQ0godiwgYTZfLCAwKTsKLSAgICB9Ci0KLSAgICBBNiBhNl87Ci19OwotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gKQotCi10ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGludCBJPiBzdHJ1Y3Qgc3RvcmFnZTY8IEExLCBBMiwgQTMsIEE0LCBBNSwgbmRuYm9vc3Q6OmFyZzxJPiA+OiBwdWJsaWMgc3RvcmFnZTU8IEExLCBBMiwgQTMsIEE0LCBBNSA+Ci17Ci0gICAgdHlwZWRlZiBzdG9yYWdlNTxBMSwgQTIsIEEzLCBBNCwgQTU+IGluaGVyaXRlZDsKLQotICAgIHN0b3JhZ2U2KCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIG5kbmJvb3N0Ojphcmc8ST4gKTogc3RvcmFnZTU8QTEsIEEyLCBBMywgQTQsIEE1PiggYTEsIGEyLCBhMywgYTQsIGE1ICkge30KLQotICAgIHRlbXBsYXRlPGNsYXNzIFY+IHZvaWQgYWNjZXB0KFYgJiB2KSBjb25zdAotICAgIHsKLSAgICAgICAgaW5oZXJpdGVkOjphY2NlcHQodik7Ci0gICAgfQotCi0gICAgc3RhdGljIG5kbmJvb3N0Ojphcmc8ST4gYTZfKCkgeyByZXR1cm4gbmRuYm9vc3Q6OmFyZzxJPigpOyB9Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGludCBJPiBzdHJ1Y3Qgc3RvcmFnZTY8IEExLCBBMiwgQTMsIEE0LCBBNSwgbmRuYm9vc3Q6OmFyZzxJPiAoKikgKCkgPjogcHVibGljIHN0b3JhZ2U1PCBBMSwgQTIsIEEzLCBBNCwgQTUgPgotewotICAgIHR5cGVkZWYgc3RvcmFnZTU8QTEsIEEyLCBBMywgQTQsIEE1PiBpbmhlcml0ZWQ7Ci0KLSAgICBzdG9yYWdlNiggQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBuZG5ib29zdDo6YXJnPEk+ICgqKSAoKSApOiBzdG9yYWdlNTxBMSwgQTIsIEEzLCBBNCwgQTU+KCBhMSwgYTIsIGEzLCBhNCwgYTUgKSB7fQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVj4gdm9pZCBhY2NlcHQoViAmIHYpIGNvbnN0Ci0gICAgewotICAgICAgICBpbmhlcml0ZWQ6OmFjY2VwdCh2KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgbmRuYm9vc3Q6OmFyZzxJPiBhNl8oKSB7IHJldHVybiBuZG5ib29zdDo6YXJnPEk+KCk7IH0KLX07Ci0KLSNlbmRpZgotCi0vLyA3Ci0KLXRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PiBzdHJ1Y3Qgc3RvcmFnZTc6IHB1YmxpYyBzdG9yYWdlNjwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiA+Ci17Ci0gICAgdHlwZWRlZiBzdG9yYWdlNjxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2PiBpbmhlcml0ZWQ7Ci0KLSAgICBzdG9yYWdlNyggQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcgKTogc3RvcmFnZTY8QTEsIEEyLCBBMywgQTQsIEE1LCBBNj4oIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYgKSwgYTdfKCBhNyApIHt9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiB2b2lkIGFjY2VwdChWICYgdikgY29uc3QKLSAgICB7Ci0gICAgICAgIGluaGVyaXRlZDo6YWNjZXB0KHYpOwotICAgICAgICBORE5CT09TVF9CSU5EX1ZJU0lUX0VBQ0godiwgYTdfLCAwKTsKLSAgICB9Ci0KLSAgICBBNyBhN187Ci19OwotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gKQotCi10ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBpbnQgST4gc3RydWN0IHN0b3JhZ2U3PCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBuZG5ib29zdDo6YXJnPEk+ID46IHB1YmxpYyBzdG9yYWdlNjwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiA+Ci17Ci0gICAgdHlwZWRlZiBzdG9yYWdlNjxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2PiBpbmhlcml0ZWQ7Ci0KLSAgICBzdG9yYWdlNyggQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgbmRuYm9vc3Q6OmFyZzxJPiApOiBzdG9yYWdlNjxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2PiggYTEsIGEyLCBhMywgYTQsIGE1LCBhNiApIHt9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiB2b2lkIGFjY2VwdChWICYgdikgY29uc3QKLSAgICB7Ci0gICAgICAgIGluaGVyaXRlZDo6YWNjZXB0KHYpOwotICAgIH0KLQotICAgIHN0YXRpYyBuZG5ib29zdDo6YXJnPEk+IGE3XygpIHsgcmV0dXJuIG5kbmJvb3N0Ojphcmc8ST4oKTsgfQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgaW50IEk+IHN0cnVjdCBzdG9yYWdlNzwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgbmRuYm9vc3Q6OmFyZzxJPiAoKikgKCkgPjogcHVibGljIHN0b3JhZ2U2PCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2ID4KLXsKLSAgICB0eXBlZGVmIHN0b3JhZ2U2PEExLCBBMiwgQTMsIEE0LCBBNSwgQTY+IGluaGVyaXRlZDsKLQotICAgIHN0b3JhZ2U3KCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2LCBuZG5ib29zdDo6YXJnPEk+ICgqKSAoKSApOiBzdG9yYWdlNjxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2PiggYTEsIGEyLCBhMywgYTQsIGE1LCBhNiApIHt9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiB2b2lkIGFjY2VwdChWICYgdikgY29uc3QKLSAgICB7Ci0gICAgICAgIGluaGVyaXRlZDo6YWNjZXB0KHYpOwotICAgIH0KLQotICAgIHN0YXRpYyBuZG5ib29zdDo6YXJnPEk+IGE3XygpIHsgcmV0dXJuIG5kbmJvb3N0Ojphcmc8ST4oKTsgfQotfTsKLQotI2VuZGlmCi0KLS8vIDgKLQotdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4PiBzdHJ1Y3Qgc3RvcmFnZTg6IHB1YmxpYyBzdG9yYWdlNzwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcgPgotewotICAgIHR5cGVkZWYgc3RvcmFnZTc8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTc+IGluaGVyaXRlZDsKLQotICAgIHN0b3JhZ2U4KCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2LCBBNyBhNywgQTggYTggKTogc3RvcmFnZTc8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTc+KCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNyApLCBhOF8oIGE4ICkge30KLQotICAgIHRlbXBsYXRlPGNsYXNzIFY+IHZvaWQgYWNjZXB0KFYgJiB2KSBjb25zdAotICAgIHsKLSAgICAgICAgaW5oZXJpdGVkOjphY2NlcHQodik7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfVklTSVRfRUFDSCh2LCBhOF8sIDApOwotICAgIH0KLQotICAgIEE4IGE4XzsKLX07Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTiApCi0KLXRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBpbnQgST4gc3RydWN0IHN0b3JhZ2U4PCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgbmRuYm9vc3Q6OmFyZzxJPiA+OiBwdWJsaWMgc3RvcmFnZTc8IEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3ID4KLXsKLSAgICB0eXBlZGVmIHN0b3JhZ2U3PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3PiBpbmhlcml0ZWQ7Ci0KLSAgICBzdG9yYWdlOCggQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcsIG5kbmJvb3N0Ojphcmc8ST4gKTogc3RvcmFnZTc8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTc+KCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNyApIHt9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiB2b2lkIGFjY2VwdChWICYgdikgY29uc3QKLSAgICB7Ci0gICAgICAgIGluaGVyaXRlZDo6YWNjZXB0KHYpOwotICAgIH0KLQotICAgIHN0YXRpYyBuZG5ib29zdDo6YXJnPEk+IGE4XygpIHsgcmV0dXJuIG5kbmJvb3N0Ojphcmc8ST4oKTsgfQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGludCBJPiBzdHJ1Y3Qgc3RvcmFnZTg8IEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBuZG5ib29zdDo6YXJnPEk+ICgqKSAoKSA+OiBwdWJsaWMgc3RvcmFnZTc8IEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3ID4KLXsKLSAgICB0eXBlZGVmIHN0b3JhZ2U3PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3PiBpbmhlcml0ZWQ7Ci0KLSAgICBzdG9yYWdlOCggQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcsIG5kbmJvb3N0Ojphcmc8ST4gKCopICgpICk6IHN0b3JhZ2U3PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3PiggYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcgKSB7fQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVj4gdm9pZCBhY2NlcHQoViAmIHYpIGNvbnN0Ci0gICAgewotICAgICAgICBpbmhlcml0ZWQ6OmFjY2VwdCh2KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgbmRuYm9vc3Q6OmFyZzxJPiBhOF8oKSB7IHJldHVybiBuZG5ib29zdDo6YXJnPEk+KCk7IH0KLX07Ci0KLSNlbmRpZgotCi0vLyA5Ci0KLXRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCwgY2xhc3MgQTk+IHN0cnVjdCBzdG9yYWdlOTogcHVibGljIHN0b3JhZ2U4PCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTggPgotewotICAgIHR5cGVkZWYgc3RvcmFnZTg8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4PiBpbmhlcml0ZWQ7Ci0KLSAgICBzdG9yYWdlOSggQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcsIEE4IGE4LCBBOSBhOSApOiBzdG9yYWdlODxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTg+KCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTggKSwgYTlfKCBhOSApIHt9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiB2b2lkIGFjY2VwdChWICYgdikgY29uc3QKLSAgICB7Ci0gICAgICAgIGluaGVyaXRlZDo6YWNjZXB0KHYpOwotICAgICAgICBORE5CT09TVF9CSU5EX1ZJU0lUX0VBQ0godiwgYTlfLCAwKTsKLSAgICB9Ci0KLSAgICBBOSBhOV87Ci19OwotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gKQotCi10ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTgsIGludCBJPiBzdHJ1Y3Qgc3RvcmFnZTk8IEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgbmRuYm9vc3Q6OmFyZzxJPiA+OiBwdWJsaWMgc3RvcmFnZTg8IEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCA+Ci17Ci0gICAgdHlwZWRlZiBzdG9yYWdlODxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTg+IGluaGVyaXRlZDsKLQotICAgIHN0b3JhZ2U5KCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2LCBBNyBhNywgQTggYTgsIG5kbmJvb3N0Ojphcmc8ST4gKTogc3RvcmFnZTg8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4PiggYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4ICkge30KLQotICAgIHRlbXBsYXRlPGNsYXNzIFY+IHZvaWQgYWNjZXB0KFYgJiB2KSBjb25zdAotICAgIHsKLSAgICAgICAgaW5oZXJpdGVkOjphY2NlcHQodik7Ci0gICAgfQotCi0gICAgc3RhdGljIG5kbmJvb3N0Ojphcmc8ST4gYTlfKCkgeyByZXR1cm4gbmRuYm9vc3Q6OmFyZzxJPigpOyB9Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTgsIGludCBJPiBzdHJ1Y3Qgc3RvcmFnZTk8IEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgbmRuYm9vc3Q6OmFyZzxJPiAoKikgKCkgPjogcHVibGljIHN0b3JhZ2U4PCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTggPgotewotICAgIHR5cGVkZWYgc3RvcmFnZTg8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4PiBpbmhlcml0ZWQ7Ci0KLSAgICBzdG9yYWdlOSggQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcsIEE4IGE4LCBuZG5ib29zdDo6YXJnPEk+ICgqKSAoKSApOiBzdG9yYWdlODxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTg+KCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTggKSB7fQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVj4gdm9pZCBhY2NlcHQoViAmIHYpIGNvbnN0Ci0gICAgewotICAgICAgICBpbmhlcml0ZWQ6OmFjY2VwdCh2KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgbmRuYm9vc3Q6OmFyZzxJPiBhOV8oKSB7IHJldHVybiBuZG5ib29zdDo6YXJnPEk+KCk7IH0KLX07Ci0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBfYmkKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgcHJhZ21hIHdhcm5pbmcoZGVmYXVsdDogNDUxMikgLy8gYXNzaWdubWVudCBvcGVyYXRvciBjb3VsZCBub3QgYmUgZ2VuZXJhdGVkCi0jIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9CSU5EX1NUT1JBR0VfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2JsYW5rLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvYmxhbmsuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZGQ2ZTQ3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvYmxhbmsuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA2ICswLDAgQEAKLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIGJvb3N0IGJsYW5rLmhwcCBoZWFkZXIgZmlsZQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciB1cGRhdGVzLCBkb2N1bWVudGF0aW9uLCBhbmQgcmV2aXNpb24gaGlzdG9yeS4KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDMKLS8vIEVyaWMgRnJpZWRtYW4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfQkxBTktfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0JMQU5LX0hQUAotCi0jaW5jbHVkZSAibmRuYm9vc3QvYmxhbmtfZndkLmhwcCIKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lPU1RSRUFNKQotI2luY2x1ZGUgPGlvc2Z3ZD4gLy8gZm9yIHN0ZDo6YmFzaWNfb3N0cmVhbSBmb3J3YXJkIGRlY2xhcmUKLSNpbmNsdWRlICJuZG5ib29zdC9kZXRhaWwvdGVtcGxhdGVkX3N0cmVhbXMuaHBwIgotI2VuZGlmIC8vIE5ETkJPT1NUX05PX0lPU1RSRUFNCi0KLSNpbmNsdWRlICJuZG5ib29zdC9tcGwvYm9vbC5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZW1wdHkuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvZC5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc3RhdGVsZXNzLmhwcCIKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotc3RydWN0IGJsYW5rCi17Ci19OwotCi0vLyB0eXBlIHRyYWl0cyBzcGVjaWFsaXphdGlvbnMKLS8vCi0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXNfcG9kPCBibGFuayA+Ci0gICAgOiBtcGw6OnRydWVfCi17Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGlzX2VtcHR5PCBibGFuayA+Ci0gICAgOiBtcGw6OnRydWVfCi17Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGlzX3N0YXRlbGVzczwgYmxhbmsgPgotICAgIDogbXBsOjp0cnVlXwotewotfTsKLQotLy8gcmVsYXRpb25hbCBvcGVyYXRvcnMKLS8vCi0KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgYmxhbmsmLCBjb25zdCBibGFuayYpCi17Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPD0oY29uc3QgYmxhbmsmLCBjb25zdCBibGFuayYpCi17Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPj0oY29uc3QgYmxhbmsmLCBjb25zdCBibGFuayYpCi17Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgYmxhbmsmLCBjb25zdCBibGFuayYpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29uc3QgYmxhbmsmLCBjb25zdCBibGFuayYpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj4oY29uc3QgYmxhbmsmLCBjb25zdCBibGFuayYpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi0vLyBzdHJlYW1pbmcgc3VwcG9ydAotLy8KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19JT1NUUkVBTSkKLQotTkROQk9PU1RfVEVNUExBVEVEX1NUUkVBTV9URU1QTEFURShFLFQpCi1pbmxpbmUgTkROQk9PU1RfVEVNUExBVEVEX1NUUkVBTShvc3RyZWFtLCBFLFQpJiBvcGVyYXRvcjw8KAotICAgICAgTkROQk9PU1RfVEVNUExBVEVEX1NUUkVBTShvc3RyZWFtLCBFLFQpJiBvdXQKLSAgICAsIGNvbnN0IGJsYW5rJgotICAgICkKLXsKLSAgICAvLyAob3V0cHV0IG5vdGhpbmcpCi0gICAgcmV0dXJuIG91dDsKLX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX0lPU1RSRUFNCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9CTEFOS19IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvYmxhbmtfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvYmxhbmtfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWI2NjgyNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2JsYW5rX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBib29zdCBibGFua19md2QuaHBwIGhlYWRlciBmaWxlCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIHVwZGF0ZXMsIGRvY3VtZW50YXRpb24sIGFuZCByZXZpc2lvbiBoaXN0b3J5LgotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMwotLy8gRXJpYyBGcmllZG1hbgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9CTEFOS19GV0RfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0JMQU5LX0ZXRF9IUFAKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotc3RydWN0IGJsYW5rOwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfQkxBTktfRldEX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jYWxsX3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NhbGxfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2FiYmQ4NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NhbGxfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3V0aWxpdHkgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLS8vICBTZWUgbmRuYm9vc3QvZGV0YWlsL2NhbGxfdHJhaXRzLmhwcCBhbmQgbmRuYm9vc3QvZGV0YWlsL29iX2NhbGxfdHJhaXRzLmhwcAotLy8gIGZvciBmdWxsIGNvcHlyaWdodCBub3RpY2VzLgotCi0jaWZuZGVmIE5ETkJPT1NUX0NBTExfVFJBSVRTX0hQUAotI2RlZmluZSBORE5CT09TVF9DQUxMX1RSQUlUU19IUFAKLQotI2lmbmRlZiBORE5CT09TVF9DT05GSUdfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9vYl9jYWxsX3RyYWl0cy5ocHA+Ci0jZWxzZQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9jYWxsX3RyYWl0cy5ocHA+Ci0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX0NBTExfVFJBSVRTX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jZXJybm8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jZXJybm8uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZGI4MzYzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY2Vycm5vLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzMSArMCwwIEBACi0vLyAgQm9vc3QgY2Vycm5vLmhwcCBoZWFkZXIgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IEJlbWFuIERhd2VzIDIwMDUuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vICBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBsaWJyYXJ5IGhvbWUgcGFnZSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3N5c3RlbQotCi0jaWZuZGVmIE5ETkJPT1NUX0NFUlJOT19IUFAKLSNkZWZpbmUgTkROQk9PU1RfQ0VSUk5PX0hQUAotCi0jaW5jbHVkZSA8Y2Vycm5vPgotCi0vLyAgc3VwcGx5IGVycm5vIHZhbHVlcyBsaWtlbHkgdG8gYmUgbWlzc2luZywgcGFydGljdWxhcmx5IG9uIFdpbmRvd3MKLQotI2lmbmRlZiBFQUZOT1NVUFBPUlQKLSNkZWZpbmUgRUFGTk9TVVBQT1JUIDk5MDEKLSNlbmRpZgotCi0jaWZuZGVmIEVBRERSSU5VU0UKLSNkZWZpbmUgRUFERFJJTlVTRSA5OTAyCi0jZW5kaWYKLQotI2lmbmRlZiBFQUREUk5PVEFWQUlMCi0jZGVmaW5lIEVBRERSTk9UQVZBSUwgOTkwMwotI2VuZGlmCi0KLSNpZm5kZWYgRUlTQ09OTgotI2RlZmluZSBFSVNDT05OIDk5MDQKLSNlbmRpZgotCi0jaWZuZGVmIEVCQURNU0cKLSNkZWZpbmUgRUJBRE1TRyA5OTA1Ci0jZW5kaWYKLQotI2lmbmRlZiBFQ09OTkFCT1JURUQKLSNkZWZpbmUgRUNPTk5BQk9SVEVEIDk5MDYKLSNlbmRpZgotCi0jaWZuZGVmIEVBTFJFQURZCi0jZGVmaW5lIEVBTFJFQURZIDk5MDcKLSNlbmRpZgotCi0jaWZuZGVmIEVDT05OUkVGVVNFRAotI2RlZmluZSBFQ09OTlJFRlVTRUQgOTkwOAotI2VuZGlmCi0KLSNpZm5kZWYgRUNPTk5SRVNFVAotI2RlZmluZSBFQ09OTlJFU0VUIDk5MDkKLSNlbmRpZgotCi0jaWZuZGVmIEVERVNUQUREUlJFUQotI2RlZmluZSBFREVTVEFERFJSRVEgOTkxMAotI2VuZGlmCi0KLSNpZm5kZWYgRUhPU1RVTlJFQUNICi0jZGVmaW5lIEVIT1NUVU5SRUFDSCA5OTExCi0jZW5kaWYKLQotI2lmbmRlZiBFSURSTQotI2RlZmluZSBFSURSTSA5OTEyCi0jZW5kaWYKLQotI2lmbmRlZiBFTVNHU0laRQotI2RlZmluZSBFTVNHU0laRSA5OTEzCi0jZW5kaWYKLQotI2lmbmRlZiBFTkVURE9XTgotI2RlZmluZSBFTkVURE9XTiA5OTE0Ci0jZW5kaWYKLQotI2lmbmRlZiBFTkVUUkVTRVQKLSNkZWZpbmUgRU5FVFJFU0VUIDk5MTUKLSNlbmRpZgotCi0jaWZuZGVmIEVORVRVTlJFQUNICi0jZGVmaW5lIEVORVRVTlJFQUNIIDk5MTYKLSNlbmRpZgotCi0jaWZuZGVmIEVOT0JVRlMKLSNkZWZpbmUgRU5PQlVGUyA5OTE3Ci0jZW5kaWYKLQotI2lmbmRlZiBFTk9MSU5LCi0jZGVmaW5lIEVOT0xJTksgOTkxOAotI2VuZGlmCi0KLSNpZm5kZWYgRU5PREFUQQotI2RlZmluZSBFTk9EQVRBIDk5MTkKLSNlbmRpZgotCi0jaWZuZGVmIEVOT01TRwotI2RlZmluZSBFTk9NU0cgOTkyMAotI2VuZGlmCi0KLSNpZm5kZWYgRU5PUFJPVE9PUFQKLSNkZWZpbmUgRU5PUFJPVE9PUFQgOTkyMQotI2VuZGlmCi0KLSNpZm5kZWYgRU5PU1IKLSNkZWZpbmUgRU5PU1IgOTkyMgotI2VuZGlmCi0KLSNpZm5kZWYgRU5PVFNPQ0sKLSNkZWZpbmUgRU5PVFNPQ0sgOTkyMwotI2VuZGlmCi0KLSNpZm5kZWYgRU5PU1RSCi0jZGVmaW5lIEVOT1NUUiA5OTI0Ci0jZW5kaWYKLQotI2lmbmRlZiBFTk9UQ09OTgotI2RlZmluZSBFTk9UQ09OTiA5OTI1Ci0jZW5kaWYKLQotI2lmbmRlZiBFTk9UU1VQCi0jZGVmaW5lIEVOT1RTVVAgOTkyNgotI2VuZGlmCi0KLSNpZm5kZWYgRUNBTkNFTEVECi0jZGVmaW5lIEVDQU5DRUxFRCA5OTI3Ci0jZW5kaWYKLQotI2lmbmRlZiBFSU5QUk9HUkVTUwotI2RlZmluZSBFSU5QUk9HUkVTUyA5OTI4Ci0jZW5kaWYKLQotI2lmbmRlZiBFT1BOT1RTVVBQCi0jZGVmaW5lIEVPUE5PVFNVUFAgOTkyOQotI2VuZGlmCi0KLSNpZm5kZWYgRVdPVUxEQkxPQ0sKLSNkZWZpbmUgRVdPVUxEQkxPQ0sgOTkzMAotI2VuZGlmCi0KLSNpZm5kZWYgRU9XTkVSREVBRAotI2RlZmluZSBFT1dORVJERUFEICA5OTMxCi0jZW5kaWYKLQotI2lmbmRlZiBFUFJPVE8KLSNkZWZpbmUgRVBST1RPIDk5MzIKLSNlbmRpZgotCi0jaWZuZGVmIEVQUk9UT05PU1VQUE9SVAotI2RlZmluZSBFUFJPVE9OT1NVUFBPUlQgOTkzMwotI2VuZGlmCi0KLSNpZm5kZWYgRU5PVFJFQ09WRVJBQkxFCi0jZGVmaW5lIEVOT1RSRUNPVkVSQUJMRSA5OTM0Ci0jZW5kaWYKLQotI2lmbmRlZiBFVElNRQotI2RlZmluZSBFVElNRSA5OTM1Ci0jZW5kaWYKLQotI2lmbmRlZiBFVFhUQlNZCi0jZGVmaW5lIEVUWFRCU1kgOTkzNgotI2VuZGlmCi0KLSNpZm5kZWYgRVRJTUVET1VUCi0jZGVmaW5lIEVUSU1FRE9VVCA5OTM4Ci0jZW5kaWYKLQotI2lmbmRlZiBFTE9PUAotI2RlZmluZSBFTE9PUCA5OTM5Ci0jZW5kaWYKLQotI2lmbmRlZiBFT1ZFUkZMT1cKLSNkZWZpbmUgRU9WRVJGTE9XIDk5NDAKLSNlbmRpZgotCi0jaWZuZGVmIEVQUk9UT1RZUEUKLSNkZWZpbmUgRVBST1RPVFlQRSA5OTQxCi0jZW5kaWYKLQotI2lmbmRlZiBFTk9TWVMKLSNkZWZpbmUgRU5PU1lTIDk5NDIKLSNlbmRpZgotCi0jaWZuZGVmIEVJTlZBTAotI2RlZmluZSBFSU5WQUwgOTk0MwotI2VuZGlmCi0KLSNpZm5kZWYgRVJBTkdFCi0jZGVmaW5lIEVSQU5HRSA5OTQ0Ci0jZW5kaWYKLQotI2lmbmRlZiBFSUxTRVEKLSNkZWZpbmUgRUlMU0VRIDk5NDUKLSNlbmRpZgotCi0vLyAgV2luZG93cyBNb2JpbGUgZG9lc24ndCBhcHBlYXIgdG8gZGVmaW5lIHRoZXNlOgotCi0jaWZuZGVmIEUyQklHCi0jZGVmaW5lIEUyQklHIDk5NDYKLSNlbmRpZgotCi0jaWZuZGVmIEVET00KLSNkZWZpbmUgRURPTSA5OTQ3Ci0jZW5kaWYKLQotI2lmbmRlZiBFRkFVTFQKLSNkZWZpbmUgRUZBVUxUIDk5NDgKLSNlbmRpZgotCi0jaWZuZGVmIEVCQURGCi0jZGVmaW5lIEVCQURGIDk5NDkKLSNlbmRpZgotCi0jaWZuZGVmIEVQSVBFCi0jZGVmaW5lIEVQSVBFIDk5NTAKLSNlbmRpZgotCi0jaWZuZGVmIEVYREVWCi0jZGVmaW5lIEVYREVWIDk5NTEKLSNlbmRpZgotCi0jaWZuZGVmIEVCVVNZCi0jZGVmaW5lIEVCVVNZIDk5NTIKLSNlbmRpZgotCi0jaWZuZGVmIEVOT1RFTVBUWQotI2RlZmluZSBFTk9URU1QVFkgOTk1MwotI2VuZGlmCi0KLSNpZm5kZWYgRU5PRVhFQwotI2RlZmluZSBFTk9FWEVDIDk5NTQKLSNlbmRpZgotCi0jaWZuZGVmIEVFWElTVAotI2RlZmluZSBFRVhJU1QgOTk1NQotI2VuZGlmCi0KLSNpZm5kZWYgRUZCSUcKLSNkZWZpbmUgRUZCSUcgOTk1NgotI2VuZGlmCi0KLSNpZm5kZWYgRU5BTUVUT09MT05HCi0jZGVmaW5lIEVOQU1FVE9PTE9ORyA5OTU3Ci0jZW5kaWYKLQotI2lmbmRlZiBFTk9UVFkKLSNkZWZpbmUgRU5PVFRZIDk5NTgKLSNlbmRpZgotCi0jaWZuZGVmIEVJTlRSCi0jZGVmaW5lIEVJTlRSIDk5NTkKLSNlbmRpZgotCi0jaWZuZGVmIEVTUElQRQotI2RlZmluZSBFU1BJUEUgOTk2MAotI2VuZGlmCi0KLSNpZm5kZWYgRUlPCi0jZGVmaW5lIEVJTyA5OTYxCi0jZW5kaWYKLQotI2lmbmRlZiBFSVNESVIKLSNkZWZpbmUgRUlTRElSIDk5NjIKLSNlbmRpZgotCi0jaWZuZGVmIEVDSElMRAotI2RlZmluZSBFQ0hJTEQgOTk2MwotI2VuZGlmCi0KLSNpZm5kZWYgRU5PTENLCi0jZGVmaW5lIEVOT0xDSyA5OTY0Ci0jZW5kaWYKLQotI2lmbmRlZiBFTk9TUEMKLSNkZWZpbmUgRU5PU1BDIDk5NjUKLSNlbmRpZgotCi0jaWZuZGVmIEVOWElPCi0jZGVmaW5lIEVOWElPIDk5NjYKLSNlbmRpZgotCi0jaWZuZGVmIEVOT0RFVgotI2RlZmluZSBFTk9ERVYgOTk2NwotI2VuZGlmCi0KLSNpZm5kZWYgRU5PRU5UCi0jZGVmaW5lIEVOT0VOVCA5OTY4Ci0jZW5kaWYKLQotI2lmbmRlZiBFU1JDSAotI2RlZmluZSBFU1JDSCA5OTY5Ci0jZW5kaWYKLQotI2lmbmRlZiBFTk9URElSCi0jZGVmaW5lIEVOT1RESVIgOTk3MAotI2VuZGlmCi0KLSNpZm5kZWYgRU5PTUVNCi0jZGVmaW5lIEVOT01FTSA5OTcxCi0jZW5kaWYKLQotI2lmbmRlZiBFUEVSTQotI2RlZmluZSBFUEVSTSA5OTcyCi0jZW5kaWYKLQotI2lmbmRlZiBFQUNDRVMKLSNkZWZpbmUgRUFDQ0VTIDk5NzMKLSNlbmRpZgotCi0jaWZuZGVmIEVST0ZTCi0jZGVmaW5lIEVST0ZTIDk5NzQKLSNlbmRpZgotCi0jaWZuZGVmIEVERUFETEsKLSNkZWZpbmUgRURFQURMSyA5OTc1Ci0jZW5kaWYKLQotI2lmbmRlZiBFQUdBSU4KLSNkZWZpbmUgRUFHQUlOIDk5NzYKLSNlbmRpZgotCi0jaWZuZGVmIEVORklMRQotI2RlZmluZSBFTkZJTEUgOTk3NwotI2VuZGlmCi0KLSNpZm5kZWYgRU1GSUxFCi0jZGVmaW5lIEVNRklMRSA5OTc4Ci0jZW5kaWYKLQotI2lmbmRlZiBFTUxJTksKLSNkZWZpbmUgRU1MSU5LIDk5NzkKLSNlbmRpZgotCi0jZW5kaWYgLy8gaW5jbHVkZSBndWFyZApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jaGVja2VkX2RlbGV0ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NoZWNrZWRfZGVsZXRlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDk4MDUxMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NoZWNrZWRfZGVsZXRlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfQ0hFQ0tFRF9ERUxFVEVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0NIRUNLRURfREVMRVRFX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICBuZG5ib29zdC9jaGVja2VkX2RlbGV0ZS5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAyLCAyMDAzIFBldGVyIERpbW92Ci0vLyAgQ29weXJpZ2h0IChjKSAyMDAzIERhbmllbCBGcmV5Ci0vLyAgQ29weXJpZ2h0IChjKSAyMDAzIEhvd2FyZCBIaW5uYW50Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy91dGlsaXR5L2NoZWNrZWRfZGVsZXRlLmh0bWwgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotLy8gdmVyaWZ5IHRoYXQgdHlwZXMgYXJlIGNvbXBsZXRlIGZvciBpbmNyZWFzZWQgc2FmZXR5Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB2b2lkIGNoZWNrZWRfZGVsZXRlKFQgKiB4KQotewotICAgIC8vIGludGVudGlvbmFsbHkgY29tcGxleCAtIHNpbXBsaWZpY2F0aW9uIGNhdXNlcyByZWdyZXNzaW9ucwotICAgIHR5cGVkZWYgY2hhciB0eXBlX211c3RfYmVfY29tcGxldGVbIHNpemVvZihUKT8gMTogLTEgXTsKLSAgICAodm9pZCkgc2l6ZW9mKHR5cGVfbXVzdF9iZV9jb21wbGV0ZSk7Ci0gICAgZGVsZXRlIHg7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB2b2lkIGNoZWNrZWRfYXJyYXlfZGVsZXRlKFQgKiB4KQotewotICAgIHR5cGVkZWYgY2hhciB0eXBlX211c3RfYmVfY29tcGxldGVbIHNpemVvZihUKT8gMTogLTEgXTsKLSAgICAodm9pZCkgc2l6ZW9mKHR5cGVfbXVzdF9iZV9jb21wbGV0ZSk7Ci0gICAgZGVsZXRlIFtdIHg7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBjaGVja2VkX2RlbGV0ZXIKLXsKLSAgICB0eXBlZGVmIHZvaWQgcmVzdWx0X3R5cGU7Ci0gICAgdHlwZWRlZiBUICogYXJndW1lbnRfdHlwZTsKLQotICAgIHZvaWQgb3BlcmF0b3IoKShUICogeCkgY29uc3QKLSAgICB7Ci0gICAgICAgIC8vIG5kbmJvb3N0OjogZGlzYWJsZXMgQURMCi0gICAgICAgIG5kbmJvb3N0OjpjaGVja2VkX2RlbGV0ZSh4KTsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3QgY2hlY2tlZF9hcnJheV9kZWxldGVyCi17Ci0gICAgdHlwZWRlZiB2b2lkIHJlc3VsdF90eXBlOwotICAgIHR5cGVkZWYgVCAqIGFyZ3VtZW50X3R5cGU7Ci0KLSAgICB2b2lkIG9wZXJhdG9yKCkoVCAqIHgpIGNvbnN0Ci0gICAgewotICAgICAgICBuZG5ib29zdDo6Y2hlY2tlZF9hcnJheV9kZWxldGUoeCk7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX0NIRUNLRURfREVMRVRFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25jZXB0L2Fzc2VydC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmNlcHQvYXNzZXJ0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDk0NzgxZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmNlcHQvYXNzZXJ0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDA2LiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QKLS8vIFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jaWZuZGVmIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUX05ETkJPT1NUX0RXQTIwMDY0MzBfSFBQCi0jIGRlZmluZSBORE5CT09TVF9DT05DRVBUX0FTU0VSVF9ORE5CT09TVF9EV0EyMDA2NDMwX0hQUAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotLy8gVGhlIG9sZCBwcm90b2NvbCB1c2VkIGEgY29uc3RyYWludHMoKSBtZW1iZXIgZnVuY3Rpb24gaW4gY29uY2VwdAotLy8gY2hlY2tpbmcgY2xhc3Nlcy4gIElmIHRoZSBjb21waWxlciBzdXBwb3J0cyBTRklOQUUsIHdlIGNhbiBkZXRlY3QKLS8vIHRoYXQgZnVuY3Rpb24gYW5kIHNlYW1sZXNzbHkgc3VwcG9ydCB0aGUgb2xkIGNvbmNlcHQgY2hlY2tpbmcKLS8vIGNsYXNzZXMuICBJbiB0aGlzIHJlbGVhc2UsIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgb2xkCi0vLyBjb25jZXB0IGNoZWNraW5nIGNsYXNzZXMgaXMgZW5hYmxlZCBieSBkZWZhdWx0LCB3aGVyZSBhdmFpbGFibGUuCi0vLyBUaGUgb2xkIHByb3RvY29sIGlzIGRlcHJlY2F0ZWQsIHRob3VnaCwgYW5kIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKLS8vIHdpbGwgbm8gbG9uZ2VyIGJlIHRoZSBkZWZhdWx0IGluIHRoZSBuZXh0IHJlbGVhc2UuCi0KLSMgaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fT0xEX0NPTkNFUFRfU1VQUE9SVCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9OT19TRklOQUUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAmJiAhKE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sID09IDMpICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX01JTk9SX18sIDwgNCkpIFwKLSAgICAmJiAhKE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sID09IDIpKQotCi0vLyBOb3RlOiBnY2MtMi45NiB0aHJvdWdoIDMuMy54IGhhdmUgc29tZSBTRklOQUUsIGJ1dCBubyBhYmlsaXR5IHRvCi0vLyBjaGVjayBmb3IgdGhlIHByZXNlbmNlIG9mIHBhcnRpY3VsYXJtZW1iZXIgZnVuY3Rpb25zLgotCi0jICBkZWZpbmUgTkROQk9PU1RfT0xEX0NPTkNFUFRfU1VQUE9SVAotCi0jIGVuZGlmCi0KLSMgaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgaW5jbHVkZSA8bmRuYm9vc3QvY29uY2VwdC9kZXRhaWwvbXN2Yy5ocHA+Ci0jIGVsaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU2NCkpCi0jICBpbmNsdWRlIDxuZG5ib29zdC9jb25jZXB0L2RldGFpbC9ib3JsYW5kLmhwcD4KLSMgZWxzZSAKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmNlcHQvZGV0YWlsL2dlbmVyYWwuaHBwPgotIyBlbmRpZgotCi0gIC8vIFVzYWdlLCBpbiBjbGFzcyBvciBmdW5jdGlvbiBjb250ZXh0OgotICAvLwotICAvLyAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKFVuYXJ5RnVuY3Rpb25Db25jZXB0PEYsYm9vbCxpbnQ+KSk7Ci0gIC8vCi0jIGRlZmluZSBORE5CT09TVF9DT05DRVBUX0FTU0VSVChNb2RlbEluUGFyZW5zKSBcCi0gICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlRfRk4odm9pZCgqKU1vZGVsSW5QYXJlbnMpCi0KLSNlbmRpZiAvLyBORE5CT09TVF9DT05DRVBUX0FTU0VSVF9ORE5CT09TVF9EV0EyMDA2NDMwX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25jZXB0L2RldGFpbC9iYWNrd2FyZF9jb21wYXRpYmlsaXR5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uY2VwdC9kZXRhaWwvYmFja3dhcmRfY29tcGF0aWJpbGl0eS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhNzliOTUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25jZXB0L2RldGFpbC9iYWNrd2FyZF9jb21wYXRpYmlsaXR5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDA5LiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QKLS8vIFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jaWZuZGVmIE5ETkJPT1NUX0NPTkNFUFRfQkFDS1dBUkRfQ09NUEFUSUJJTElUWV9ORE5CT09TVF9EV0EyMDA5NjhfSFBQCi0jIGRlZmluZSBORE5CT09TVF9DT05DRVBUX0JBQ0tXQVJEX0NPTVBBVElCSUxJVFlfTkROQk9PU1RfRFdBMjAwOTY4X0hQUAotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgbmFtZXNwYWNlIGNvbmNlcHRzIHt9Ci0KLSMgaWYgZGVmaW5lZChORE5CT09TVF9IQVNfQ09OQ0VQVFMpICYmICFkZWZpbmVkKE5ETkJPT1NUX0NPTkNFUFRfTk9fQkFDS1dBUkRfS0VZV09SRCkKLSAgbmFtZXNwYWNlIGNvbmNlcHQgPSBjb25jZXB0czsKLSMgZW5kaWYgCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdDo6Y29uY2VwdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfQ09OQ0VQVF9CQUNLV0FSRF9DT01QQVRJQklMSVRZX05ETkJPT1NUX0RXQTIwMDk2OF9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uY2VwdC9kZXRhaWwvYm9ybGFuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmNlcHQvZGV0YWlsL2JvcmxhbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZWMyOWQ5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uY2VwdC9kZXRhaWwvYm9ybGFuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwNi4gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0Ci0vLyBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotI2lmbmRlZiBORE5CT09TVF9DT05DRVBUX0RFVEFJTF9CT1JMQU5EX05ETkJPT1NUX0RXQTIwMDY0MjlfSFBQCi0jIGRlZmluZSBORE5CT09TVF9DT05DRVBUX0RFVEFJTF9CT1JMQU5EX05ETkJPT1NUX0RXQTIwMDY0MjlfSFBQCi0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmNlcHQvZGV0YWlsL2JhY2t3YXJkX2NvbXBhdGliaWxpdHkuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgY29uY2VwdHMgewotCi10ZW1wbGF0ZSA8Y2xhc3MgTW9kZWxGblB0cj4KLXN0cnVjdCByZXF1aXJlOwotCi10ZW1wbGF0ZSA8Y2xhc3MgTW9kZWw+Ci1zdHJ1Y3QgcmVxdWlyZTx2b2lkKCopKE1vZGVsKT4KLXsKLSAgICBlbnVtIHsgaW5zdGFudGlhdGUgPSBzaXplb2YoKCgoTW9kZWwqKTApLT5+TW9kZWwoKSksIDMpIH07Ci19OwotCi0jICBkZWZpbmUgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlRfRk4oIE1vZGVsRm5QdHIgKSAgICAgICAgIFwKLSAgZW51bSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICBORE5CT09TVF9QUF9DQVQoYm9vc3RfY29uY2VwdF9jaGVjayxfX0xJTkVfXykgPSAgICAgIFwKLSAgICAgIG5kbmJvb3N0Ojpjb25jZXB0czo6cmVxdWlyZTxNb2RlbEZuUHRyPjo6aW5zdGFudGlhdGUgIFwKLSAgfQotCi19fSAvLyBuYW1lc3BhY2UgbmRuYm9vc3Q6OmNvbmNlcHQKLQotI2VuZGlmIC8vIE5ETkJPT1NUX0NPTkNFUFRfREVUQUlMX0JPUkxBTkRfTkROQk9PU1RfRFdBMjAwNjQyOV9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uY2VwdC9kZXRhaWwvY29uY2VwdF9kZWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25jZXB0L2RldGFpbC9jb25jZXB0X2RlZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiODEwMmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25jZXB0L2RldGFpbC9jb25jZXB0X2RlZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwNi4gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0Ci0vLyBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotI2lmbmRlZiBORE5CT09TVF9DT05DRVBUX0RFVEFJTF9DT05DRVBUX0RFRl9ORE5CT09TVF9EV0EyMDA2NTFfSFBQCi0jIGRlZmluZSBORE5CT09TVF9DT05DRVBUX0RFVEFJTF9DT05DRVBUX0RFRl9ORE5CT09TVF9EV0EyMDA2NTFfSFBQCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZm9yX2VhY2hfaS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZW51bS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb21tYV9pZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotI2VuZGlmIC8vIE5ETkJPT1NUX0NPTkNFUFRfREVUQUlMX0NPTkNFUFRfREVGX05ETkJPT1NUX0RXQTIwMDY1MV9IUFAKLQotLy8gTkROQk9PU1RfY29uY2VwdChTb21lTmFtZSwgKHAxKShwMikuLi4ocE4pKQotLy8KLS8vIEV4cGFuZHMgdG8gInRlbXBsYXRlIDxjbGFzcyBwMSwgY2xhc3MgcDIsIC4uLmNsYXNzIHBOPiBzdHJ1Y3QgU29tZU5hbWUiCi0vLwotLy8gQWxzbyBkZWZpbmVzIGFuIGVxdWl2YWxlbnQgU29tZU5hbWVDb25jZXB0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LgotLy8gTWF5YmUgaW4gdGhlIG5leHQgcmVsZWFzZSB3ZSBjYW4ga2lsbCBvZmYgdGhlICJDb25jZXB0IiBzdWZmaXggZm9yIGdvb2QuCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPD0gMykKLSMgZGVmaW5lIE5ETkJPT1NUX2NvbmNlcHQobmFtZSwgcGFyYW1zKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlIDwgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0koTkROQk9PU1RfQ09OQ0VQVF90eXBlbmFtZSx+LHBhcmFtcykgPiAgICAgICBcCi0gICAgc3RydWN0IG5hbWU7IC8qIGZvcndhcmQgZGVjbGFyYXRpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlIDwgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0koTkROQk9PU1RfQ09OQ0VQVF90eXBlbmFtZSx+LHBhcmFtcykgPiAgICAgICBcCi0gICAgc3RydWN0IE5ETkJPT1NUX1BQX0NBVChuYW1lLENvbmNlcHQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIDogbmFtZTwgTkROQk9PU1RfUFBfU0VRX0VOVU0ocGFyYW1zKSA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIC8qIGF0IGxlYXN0IDIuOTYgYW5kIDMuNC4zIGJvdGggbmVlZCB0aGlzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfUFBfQ0FUKG5hbWUsQ29uY2VwdCkoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZSA8IE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JKE5ETkJPT1NUX0NPTkNFUFRfdHlwZW5hbWUsfixwYXJhbXMpID4gICAgICAgXAotICAgIHN0cnVjdCBuYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotI2Vsc2UKLSMgZGVmaW5lIE5ETkJPT1NUX2NvbmNlcHQobmFtZSwgcGFyYW1zKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlIDwgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0koTkROQk9PU1RfQ09OQ0VQVF90eXBlbmFtZSx+LHBhcmFtcykgPiAgICAgICBcCi0gICAgc3RydWN0IG5hbWU7IC8qIGZvcndhcmQgZGVjbGFyYXRpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlIDwgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0koTkROQk9PU1RfQ09OQ0VQVF90eXBlbmFtZSx+LHBhcmFtcykgPiAgICAgICBcCi0gICAgc3RydWN0IE5ETkJPT1NUX1BQX0NBVChuYW1lLENvbmNlcHQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIDogbmFtZTwgTkROQk9PU1RfUFBfU0VRX0VOVU0ocGFyYW1zKSA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlIDwgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0koTkROQk9PU1RfQ09OQ0VQVF90eXBlbmFtZSx+LHBhcmFtcykgPiAgICAgICBcCi0gICAgc3RydWN0IG5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0jZW5kaWYKLSAgICAKLS8vIEhlbHBlciBmb3IgTkROQk9PU1RfY29uY2VwdCwgYWJvdmUuCi0jIGRlZmluZSBORE5CT09TVF9DT05DRVBUX3R5cGVuYW1lKHIsIGlnbm9yZWQsIGluZGV4LCB0KSBcCi0gICAgTkROQk9PU1RfUFBfQ09NTUFfSUYoaW5kZXgpIHR5cGVuYW1lIHQKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25jZXB0L2RldGFpbC9jb25jZXB0X3VuZGVmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uY2VwdC9kZXRhaWwvY29uY2VwdF91bmRlZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1NjM4NzYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25jZXB0L2RldGFpbC9jb25jZXB0X3VuZGVmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDYuIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdAotLy8gU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgdW5kZWYgTkROQk9PU1RfY29uY2VwdF90eXBlbmFtZQotIyB1bmRlZiBORE5CT09TVF9jb25jZXB0CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmNlcHQvZGV0YWlsL2dlbmVyYWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25jZXB0L2RldGFpbC9nZW5lcmFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmJhNGM0OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmNlcHQvZGV0YWlsL2dlbmVyYWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDYuIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdAotLy8gU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSNpZm5kZWYgTkROQk9PU1RfQ09OQ0VQVF9ERVRBSUxfR0VORVJBTF9ORE5CT09TVF9EV0EyMDA2NDI5X0hQUAotIyBkZWZpbmUgTkROQk9PU1RfQ09OQ0VQVF9ERVRBSUxfR0VORVJBTF9ORE5CT09TVF9EV0EyMDA2NDI5X0hQUAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9jb25jZXB0L2RldGFpbC9iYWNrd2FyZF9jb21wYXRpYmlsaXR5LmhwcD4KLQotIyBpZmRlZiBORE5CT09TVF9PTERfQ09OQ0VQVF9TVVBQT1JUCi0jICBpbmNsdWRlIDxuZG5ib29zdC9jb25jZXB0L2RldGFpbC9oYXNfY29uc3RyYWludHMuaHBwPgotIyAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSMgZW5kaWYKLQotLy8gVGhpcyBpbXBsZW1lbnRhdGlvbiB3b3JrcyBvbiBDb21lYXUgYW5kIEdDQywgYWxsIHRoZSB3YXkgYmFjayB0bwotLy8gMi45NQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGNvbmNlcHRzIHsKLQotdGVtcGxhdGUgPGNsYXNzIE1vZGVsRm4+Ci1zdHJ1Y3QgcmVxdWlyZW1lbnRfOwotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0gIHRlbXBsYXRlIDx2b2lkKCopKCk+IHN0cnVjdCBpbnN0YW50aWF0ZSB7fTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIE1vZGVsPgotc3RydWN0IHJlcXVpcmVtZW50Ci17Ci0gICAgc3RhdGljIHZvaWQgZmFpbGVkKCkgeyAoKE1vZGVsKikwKS0+fk1vZGVsKCk7IH0KLX07Ci0KLXN0cnVjdCBmYWlsZWQge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBNb2RlbD4KLXN0cnVjdCByZXF1aXJlbWVudDxmYWlsZWQgKioqKioqKioqKioqIE1vZGVsOjoqKioqKioqKioqKio+Ci17Ci0gICAgc3RhdGljIHZvaWQgZmFpbGVkKCkgeyAoKE1vZGVsKikwKS0+fk1vZGVsKCk7IH0KLX07Ci0KLSMgaWZkZWYgTkROQk9PU1RfT0xEX0NPTkNFUFRfU1VQUE9SVAotCi10ZW1wbGF0ZSA8Y2xhc3MgTW9kZWw+Ci1zdHJ1Y3QgY29uc3RyYWludAotewotICAgIHN0YXRpYyB2b2lkIGZhaWxlZCgpIHsgKChNb2RlbCopMCktPmNvbnN0cmFpbnRzKCk7IH0KLX07Ci0gIAotdGVtcGxhdGUgPGNsYXNzIE1vZGVsPgotc3RydWN0IHJlcXVpcmVtZW50Xzx2b2lkKCopKE1vZGVsKT4KLSAgOiBtcGw6OmlmXzwKLSAgICAgICAgY29uY2VwdHM6Om5vdF9zYXRpc2ZpZWQ8TW9kZWw+Ci0gICAgICAsIGNvbnN0cmFpbnQ8TW9kZWw+Ci0gICAgICAsIHJlcXVpcmVtZW50PGZhaWxlZCAqKioqKioqKioqKiogTW9kZWw6OioqKioqKioqKioqKj4KLSAgICA+Ojp0eXBlCi17fTsKLSAgCi0jIGVsc2UKLQotLy8gRm9yIEdDQy0yLngsIHRoZXNlIGNhbid0IGhhdmUgZXhhY3RseSB0aGUgc2FtZSBuYW1lCi10ZW1wbGF0ZSA8Y2xhc3MgTW9kZWw+Ci1zdHJ1Y3QgcmVxdWlyZW1lbnRfPHZvaWQoKikoTW9kZWwpPgotICAgIDogcmVxdWlyZW1lbnQ8ZmFpbGVkICoqKioqKioqKioqKiBNb2RlbDo6KioqKioqKioqKioqPgote307Ci0gIAotIyBlbmRpZgotCi0jICBkZWZpbmUgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlRfRk4oIE1vZGVsRm5QdHIgKSAgICAgICAgICAgICBcCi0gICAgdHlwZWRlZiA6Om5kbmJvb3N0Ojpjb25jZXB0czo6ZGV0YWlsOjppbnN0YW50aWF0ZTwgICAgICAgICAgXAotICAgICY6Om5kbmJvb3N0Ojpjb25jZXB0czo6cmVxdWlyZW1lbnRfPE1vZGVsRm5QdHI+OjpmYWlsZWQ+ICAgIFwKLSAgICAgIE5ETkJPT1NUX1BQX0NBVChib29zdF9jb25jZXB0X2NoZWNrLF9fTElORV9fKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfQ09OQ0VQVF9ERVRBSUxfR0VORVJBTF9ORE5CT09TVF9EV0EyMDA2NDI5X0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25jZXB0L2RldGFpbC9oYXNfY29uc3RyYWludHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25jZXB0L2RldGFpbC9oYXNfY29uc3RyYWludHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZmM5NmQ1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uY2VwdC9kZXRhaWwvaGFzX2NvbnN0cmFpbnRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDA2LiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QKLS8vIFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jaWZuZGVmIE5ETkJPT1NUX0NPTkNFUFRfREVUQUlMX0hBU19DT05TVFJBSU5UU19ORE5CT09TVF9EV0EyMDA2NDI5X0hQUAotIyBkZWZpbmUgTkROQk9PU1RfQ09OQ0VQVF9ERVRBSUxfSEFTX0NPTlNUUkFJTlRTX05ETkJPT1NUX0RXQTIwMDY0MjlfSFBQCi0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmNlcHQvZGV0YWlsL2JhY2t3YXJkX2NvbXBhdGliaWxpdHkuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgY29uY2VwdHMgewotCi1uYW1lc3BhY2UgZGV0YWlsCi17IAotCi0vLyBIZXJlIHdlIGltcGxlbWVudCB0aGUgbWV0YWZ1bmN0aW9uIHRoYXQgZGV0ZWN0cyB3aGV0aGVyIGEKLS8vIGNvbnN0cmFpbnRzIG1ldGFmdW5jdGlvbiBleGlzdHMKLSAgdHlwZWRlZiBjaGFyIHllczsKLSAgdHlwZWRlZiBjaGFyICgmbm8pWzJdOwotCi0gIHRlbXBsYXRlIDxjbGFzcyBNb2RlbCwgdm9pZCAoTW9kZWw6OiopKCk+Ci0gIHN0cnVjdCB3cmFwX2NvbnN0cmFpbnRzIHt9OwotICAgIAotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19TVU5QUk9fQ0MsIDw9IDB4NTgwKSB8fCBkZWZpbmVkKF9fQ1VEQUNDX18pCi0gIC8vIFdvcmsgYXJvdW5kIHRoZSBmb2xsb3dpbmcgYm9ndXMgZXJyb3IgaW4gU3VuIFN0dWRpbyAxMSwgYnkKLSAgLy8gdHVybmluZyBvZmYgdGhlIGhhc19jb25zdHJhaW50cyBmdW5jdGlvbiBlbnRpcmVseToKLSAgLy8gICAgRXJyb3I6IGNvbXBsZXggZXhwcmVzc2lvbiBub3QgYWxsb3dlZCBpbiBkZXBlbmRlbnQgdGVtcGxhdGUKLSAgLy8gICAgYXJndW1lbnQgZXhwcmVzc2lvbgotICBpbmxpbmUgbm8gaGFzX2NvbnN0cmFpbnRzXyguLi4pOwotI2Vsc2UKLSAgdGVtcGxhdGUgPGNsYXNzIE1vZGVsPgotICBpbmxpbmUgeWVzIGhhc19jb25zdHJhaW50c18oTW9kZWwqLCB3cmFwX2NvbnN0cmFpbnRzPE1vZGVsLCZNb2RlbDo6Y29uc3RyYWludHM+KiA9IDApOwotICBpbmxpbmUgbm8gaGFzX2NvbnN0cmFpbnRzXyguLi4pOwotI2VuZGlmCi19Ci0KLS8vIFRoaXMgd291bGQgYmUgY2FsbGVkICJkZXRhaWw6Omhhc19jb25zdHJhaW50cywiIGJ1dCBpdCBoYXMgYSBzdHJvbmcKLS8vIHRlbmRlbmN5IHRvIHNob3cgdXAgaW4gZXJyb3IgbWVzc2FnZXMuCi10ZW1wbGF0ZSA8Y2xhc3MgTW9kZWw+Ci1zdHJ1Y3Qgbm90X3NhdGlzZmllZAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCgKLSAgICAgICAgYm9vbAotICAgICAgLCB2YWx1ZSA9IHNpemVvZiggZGV0YWlsOjpoYXNfY29uc3RyYWludHNfKChNb2RlbCopMCkgKSA9PSBzaXplb2YoZGV0YWlsOjp5ZXMpICk7Ci0gICAgdHlwZWRlZiBtcGw6OmJvb2xfPHZhbHVlPiB0eXBlOwotfTsKLQotfX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ojpjb25jZXB0czo6ZGV0YWlsCi0KLSNlbmRpZiAvLyBORE5CT09TVF9DT05DRVBUX0RFVEFJTF9IQVNfQ09OU1RSQUlOVFNfTkROQk9PU1RfRFdBMjAwNjQyOV9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uY2VwdC9kZXRhaWwvbXN2Yy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmNlcHQvZGV0YWlsL21zdmMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDAyZmY4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uY2VwdC9kZXRhaWwvbXN2Yy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAsMCBAQAotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDYuIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdAotLy8gU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSNpZm5kZWYgTkROQk9PU1RfQ09OQ0VQVF9DSEVDS19NU1ZDX05ETkJPT1NUX0RXQTIwMDY0MjlfSFBQCi0jIGRlZmluZSBORE5CT09TVF9DT05DRVBUX0NIRUNLX01TVkNfTkROQk9PU1RfRFdBMjAwNjQyOV9IUFAKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvY29uY2VwdC9kZXRhaWwvYmFja3dhcmRfY29tcGF0aWJpbGl0eS5ocHA+Ci0KLSMgaWZkZWYgTkROQk9PU1RfT0xEX0NPTkNFUFRfU1VQUE9SVAotIyAgaW5jbHVkZSA8bmRuYm9vc3QvY29uY2VwdC9kZXRhaWwvaGFzX2NvbnN0cmFpbnRzLmhwcD4KLSMgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jIGVuZGlmCi0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGNvbmNlcHRzIHsKLQotCi10ZW1wbGF0ZSA8Y2xhc3MgTW9kZWw+Ci1zdHJ1Y3QgY2hlY2sKLXsKLSAgICB2aXJ0dWFsIHZvaWQgZmFpbGVkKE1vZGVsKiB4KQotICAgIHsKLSAgICAgICAgeC0+fk1vZGVsKCk7Ci0gICAgfQotfTsKLQotIyBpZm5kZWYgTkROQk9PU1RfTk9fUEFSVElBTF9TUEVDSUFMSVpBVElPTgotc3RydWN0IGZhaWxlZCB7fTsKLXRlbXBsYXRlIDxjbGFzcyBNb2RlbD4KLXN0cnVjdCBjaGVjazxmYWlsZWQgKioqKioqKioqKioqIE1vZGVsOjoqKioqKioqKioqKio+Ci17Ci0gICAgdmlydHVhbCB2b2lkIGZhaWxlZChNb2RlbCogeCkKLSAgICB7Ci0gICAgICAgIHgtPn5Nb2RlbCgpOwotICAgIH0KLX07Ci0jIGVuZGlmCi0KLSMgaWZkZWYgTkROQk9PU1RfT0xEX0NPTkNFUFRfU1VQUE9SVAotICAKLW5hbWVzcGFjZSBkZXRhaWwKLXsKLSAgLy8gTm8gbmVlZCBmb3IgYSB2aXJ0dWFsIGZ1bmN0aW9uIGhlcmUsIHNpbmNlIGV2YWx1YXRpbmcKLSAgLy8gbm90X3NhdGlzZmllZCBiZWxvdyB3aWxsIGhhdmUgYWxyZWFkeSBpbnN0YW50aWF0ZWQgdGhlCi0gIC8vIGNvbnN0cmFpbnRzKCkgbWVtYmVyLgotICBzdHJ1Y3QgY29uc3RyYWludCB7fTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIE1vZGVsPgotc3RydWN0IHJlcXVpcmUKLSAgOiBtcGw6OmlmX2M8Ci0gICAgICAgIG5vdF9zYXRpc2ZpZWQ8TW9kZWw+Ojp2YWx1ZQotICAgICAgLCBkZXRhaWw6OmNvbnN0cmFpbnQKLSMgaWZuZGVmIE5ETkJPT1NUX05PX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSAgICAgICwgY2hlY2s8TW9kZWw+Ci0jIGVsc2UKLSAgICAgICwgY2hlY2s8ZmFpbGVkICoqKioqKioqKioqKiBNb2RlbDo6KioqKioqKioqKioqPgotIyBlbmRpZiAKLSAgICAgICAgPjo6dHlwZQote307Ci0gICAgICAKLSMgZWxzZQotICAKLXRlbXBsYXRlIDxjbGFzcyBNb2RlbD4KLXN0cnVjdCByZXF1aXJlCi0jIGlmbmRlZiBORE5CT09TVF9OT19QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0gICAgOiBjaGVjazxNb2RlbD4KLSMgZWxzZQotICAgIDogY2hlY2s8ZmFpbGVkICoqKioqKioqKioqKiBNb2RlbDo6KioqKioqKioqKioqPgotIyBlbmRpZiAKLXt9OwotICAKLSMgZW5kaWYKLSAgICAKLSMgaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA9PSAxMzEwKQotCi0vLwotLy8gVGhlIGl0ZXJhdG9yIGxpYnJhcnkgc2VlcyBzb21lIHJlYWxseSBzdHJhbmdlIGVycm9ycyB1bmxlc3Mgd2UKLS8vIGRvIHRoaW5ncyB0aGlzIHdheS4KLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgTW9kZWw+Ci1zdHJ1Y3QgcmVxdWlyZTx2b2lkKCopKE1vZGVsKT4KLXsKLSAgICB2aXJ0dWFsIHZvaWQgZmFpbGVkKE1vZGVsKikKLSAgICB7Ci0gICAgICAgIHJlcXVpcmU8TW9kZWw+KCk7Ci0gICAgfQotfTsKLQotIyBkZWZpbmUgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlRfRk4oIE1vZGVsRm5QdHIgKSAgICAgIFwKLWVudW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1BQX0NBVChib29zdF9jb25jZXB0X2NoZWNrLF9fTElORV9fKSA9ICAgIFwKLSAgICBzaXplb2YoOjpuZG5ib29zdDo6Y29uY2VwdHM6OnJlcXVpcmU8TW9kZWxGblB0cj4pICAgIFwKLX0KLSAgCi0jIGVsc2UgLy8gTm90IHZjLTcuMQotICAKLXRlbXBsYXRlIDxjbGFzcyBNb2RlbD4KLXJlcXVpcmU8TW9kZWw+Ci1yZXF1aXJlXyh2b2lkKCopKE1vZGVsKSk7Ci0gIAotIyBkZWZpbmUgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlRfRk4oIE1vZGVsRm5QdHIgKSAgICAgICAgICBcCi1lbnVtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1BQX0NBVChib29zdF9jb25jZXB0X2NoZWNrLF9fTElORV9fKSA9ICAgICAgICBcCi0gICAgICBzaXplb2YoOjpuZG5ib29zdDo6Y29uY2VwdHM6OnJlcXVpcmVfKChNb2RlbEZuUHRyKTApKSBcCi19Ci0gIAotIyBlbmRpZgotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX0NPTkNFUFRfQ0hFQ0tfTVNWQ19ORE5CT09TVF9EV0EyMDA2NDI5X0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25jZXB0L3VzYWdlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uY2VwdC91c2FnZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyZTQ5NzYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25jZXB0L3VzYWdlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDA2LiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QKLS8vIFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jaWZuZGVmIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0VfTkROQk9PU1RfRFdBMjAwNjkxOV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0VfTkROQk9PU1RfRFdBMjAwNjkxOV9IUFAKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9jb25jZXB0L2Fzc2VydC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvY29uY2VwdC9kZXRhaWwvYmFja3dhcmRfY29tcGF0aWJpbGl0eS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBjb25jZXB0cyB7IAotCi0jIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sID09IDIpCi0KLSMgIGRlZmluZSBORE5CT09TVF9DT05DRVBUX1VTQUdFKG1vZGVsKSB+bW9kZWwoKQotCi0jIGVsc2UgCi0KLXRlbXBsYXRlIDxjbGFzcyBNb2RlbD4KLXN0cnVjdCB1c2FnZV9yZXF1aXJlbWVudHMKLXsKLSAgICB+dXNhZ2VfcmVxdWlyZW1lbnRzKCkgeyAoKE1vZGVsKikwKS0+fk1vZGVsKCk7IH0KLX07Ci0KLSMgIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sIDw9IDMpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShtb2RlbCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICBtb2RlbCgpOyAvKiBhdCBsZWFzdCAyLjk2IGFuZCAzLjQuMyBib3RoIG5lZWQgdGhpcyA6KCAqLyAgICAgICAgICAgXAotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKG5kbmJvb3N0Ojpjb25jZXB0czo6dXNhZ2VfcmVxdWlyZW1lbnRzPG1vZGVsPikpOyBcCi0gICAgICB+bW9kZWwoKQotCi0jICBlbHNlCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShtb2RlbCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgobmRuYm9vc3Q6OmNvbmNlcHRzOjp1c2FnZV9yZXF1aXJlbWVudHM8bW9kZWw+KSk7IFwKLSAgICAgIH5tb2RlbCgpCi0KLSMgIGVuZGlmCi0KLSMgZW5kaWYgCi0KLX19IC8vIG5hbWVzcGFjZSBuZG5ib29zdDo6Y29uY2VwdHMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0VfTkROQk9PU1RfRFdBMjAwNjkxOV9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uY2VwdF9jaGVjay5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmNlcHRfY2hlY2suaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTQzNGYzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uY2VwdF9jaGVjay5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDgzICswLDAgQEAKLS8vCi0vLyAoQykgQ29weXJpZ2h0IEplcmVteSBTaWVrIDIwMDAuCi0vLyBDb3B5cmlnaHQgMjAwMiBUaGUgVHJ1c3RlZXMgb2YgSW5kaWFuYSBVbml2ZXJzaXR5LgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBSZXZpc2lvbiBIaXN0b3J5OgotLy8gICAwNSBNYXkgICAyMDAxOiBXb3JrYXJvdW5kcyBmb3IgSFAgYUNDIGZyb20gVGhvbWFzIE1hdGVsaWNoLiAoSmVyZW15IFNpZWspCi0vLyAgIDAyIEFwcmlsIDIwMDE6IFJlbW92ZWQgbGltaXRzIGhlYWRlciBhbHRvZ2V0aGVyLiAoSmVyZW15IFNpZWspCi0vLyAgIDAxIEFwcmlsIDIwMDE6IE1vZGlmaWVkIHRvIHVzZSBuZXcgPG5kbmJvb3N0L2xpbWl0cy5ocHA+IGhlYWRlci4gKEpNYWRkb2NrKQotLy8KLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvY29uY2VwdF9jaGVjayBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9DT05DRVBUX0NIRUNLU19IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX0NPTkNFUFRfQ0hFQ0tTX0hQUAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmNlcHQvYXNzZXJ0LmhwcD4KLQotIyBpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbnZlcnNpb25fdHJhaXRzLmhwcD4KLSMgaW5jbHVkZSA8dXRpbGl0eT4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvaWQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXNzZXJ0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9pdGVyYXRvci5ocHA+Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvY29uY2VwdC91c2FnZS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmNlcHQvZGV0YWlsL2NvbmNlcHRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLSAgLy8KLSAgLy8gQmFja3dhcmQgY29tcGF0aWJpbGl0eQotICAvLwotCi0gIHRlbXBsYXRlIDxjbGFzcyBNb2RlbD4KLSAgaW5saW5lIHZvaWQgZnVuY3Rpb25fcmVxdWlyZXMoTW9kZWwqID0gMCkKLSAgewotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKE1vZGVsKSk7Ci0gIH0KLSAgdGVtcGxhdGUgPGNsYXNzIFQ+IGlubGluZSB2b2lkIGlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhUIGNvbnN0Jikge30KLQotIyAgZGVmaW5lIE5ETkJPT1NUX0NMQVNTX1JFUVVJUkUodHlwZV92YXIsIG5zLCBjb25jZXB0KSAgICBcCi0gICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKG5zOjpjb25jZXB0PHR5cGVfdmFyPikpCi0KLSMgIGRlZmluZSBORE5CT09TVF9DTEFTU19SRVFVSVJFMih0eXBlX3ZhcjEsIHR5cGVfdmFyMiwgbnMsIGNvbmNlcHQpICAgXAotICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKChuczo6Y29uY2VwdDx0eXBlX3ZhcjEsdHlwZV92YXIyPikpCi0KLSMgIGRlZmluZSBORE5CT09TVF9DTEFTU19SRVFVSVJFMyh0djEsIHR2MiwgdHYzLCBucywgY29uY2VwdCkgIFwKLSAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgobnM6OmNvbmNlcHQ8dHYxLHR2Mix0djM+KSkKLQotIyAgZGVmaW5lIE5ETkJPT1NUX0NMQVNTX1JFUVVJUkU0KHR2MSwgdHYyLCB0djMsIHR2NCwgbnMsIGNvbmNlcHQpIFwKLSAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgobnM6OmNvbmNlcHQ8dHYxLHR2Mix0djMsdHY0PikpCi0KLQotICAvLwotICAvLyBCZWdpbiBjb25jZXB0IGRlZmluaXRpb25zCi0gIC8vCi0gIE5ETkJPT1NUX2NvbmNlcHQoSW50ZWdlciwgKFQpKQotICB7Ci0gICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKEludGVnZXIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHguZXJyb3JfdHlwZV9tdXN0X2JlX2FuX2ludGVnZXJfdHlwZSgpOwotICAgICAgICB9Ci0gICBwcml2YXRlOgotICAgICAgVCB4OwotICB9OwotCi0gIHRlbXBsYXRlIDw+IHN0cnVjdCBJbnRlZ2VyPGNoYXI+IHt9OwotICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSW50ZWdlcjxzaWduZWQgY2hhcj4ge307Ci0gIHRlbXBsYXRlIDw+IHN0cnVjdCBJbnRlZ2VyPHVuc2lnbmVkIGNoYXI+IHt9OwotICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSW50ZWdlcjxzaG9ydD4ge307Ci0gIHRlbXBsYXRlIDw+IHN0cnVjdCBJbnRlZ2VyPHVuc2lnbmVkIHNob3J0PiB7fTsKLSAgdGVtcGxhdGUgPD4gc3RydWN0IEludGVnZXI8aW50PiB7fTsKLSAgdGVtcGxhdGUgPD4gc3RydWN0IEludGVnZXI8dW5zaWduZWQgaW50PiB7fTsKLSAgdGVtcGxhdGUgPD4gc3RydWN0IEludGVnZXI8bG9uZz4ge307Ci0gIHRlbXBsYXRlIDw+IHN0cnVjdCBJbnRlZ2VyPHVuc2lnbmVkIGxvbmc+IHt9OwotIyBpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi0gIHRlbXBsYXRlIDw+IHN0cnVjdCBJbnRlZ2VyPCA6Om5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZT4ge307Ci0gIHRlbXBsYXRlIDw+IHN0cnVjdCBJbnRlZ2VyPCA6Om5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGU+IHt9OwotIyBlbGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX01TX0lOVDY0KQotICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSW50ZWdlcjxfX2ludDY0PiB7fTsKLSAgdGVtcGxhdGUgPD4gc3RydWN0IEludGVnZXI8dW5zaWduZWQgX19pbnQ2ND4ge307Ci0jIGVuZGlmCi0KLSAgTkROQk9PU1RfY29uY2VwdChTaWduZWRJbnRlZ2VyLChUKSkgewotICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoU2lnbmVkSW50ZWdlcikgewotICAgICAgeC5lcnJvcl90eXBlX211c3RfYmVfYV9zaWduZWRfaW50ZWdlcl90eXBlKCk7Ci0gICAgfQotICAgcHJpdmF0ZToKLSAgICBUIHg7Ci0gIH07Ci0gIHRlbXBsYXRlIDw+IHN0cnVjdCBTaWduZWRJbnRlZ2VyPHNpZ25lZCBjaGFyPiB7IH07Ci0gIHRlbXBsYXRlIDw+IHN0cnVjdCBTaWduZWRJbnRlZ2VyPHNob3J0PiB7fTsKLSAgdGVtcGxhdGUgPD4gc3RydWN0IFNpZ25lZEludGVnZXI8aW50PiB7fTsKLSAgdGVtcGxhdGUgPD4gc3RydWN0IFNpZ25lZEludGVnZXI8bG9uZz4ge307Ci0jIGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykKLSAgdGVtcGxhdGUgPD4gc3RydWN0IFNpZ25lZEludGVnZXI8IDo6bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlPiB7fTsKLSMgZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19NU19JTlQ2NCkKLSAgdGVtcGxhdGUgPD4gc3RydWN0IFNpZ25lZEludGVnZXI8X19pbnQ2ND4ge307Ci0jIGVuZGlmCi0KLSAgTkROQk9PU1RfY29uY2VwdChVbnNpZ25lZEludGVnZXIsKFQpKSB7Ci0gICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShVbnNpZ25lZEludGVnZXIpIHsKLSAgICAgIHguZXJyb3JfdHlwZV9tdXN0X2JlX2FuX3Vuc2lnbmVkX2ludGVnZXJfdHlwZSgpOwotICAgIH0KLSAgIHByaXZhdGU6Ci0gICAgVCB4OwotICB9OwotCi0gIHRlbXBsYXRlIDw+IHN0cnVjdCBVbnNpZ25lZEludGVnZXI8dW5zaWduZWQgY2hhcj4ge307Ci0gIHRlbXBsYXRlIDw+IHN0cnVjdCBVbnNpZ25lZEludGVnZXI8dW5zaWduZWQgc2hvcnQ+IHt9OwotICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgVW5zaWduZWRJbnRlZ2VyPHVuc2lnbmVkIGludD4ge307Ci0gIHRlbXBsYXRlIDw+IHN0cnVjdCBVbnNpZ25lZEludGVnZXI8dW5zaWduZWQgbG9uZz4ge307Ci0jIGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykKLSAgdGVtcGxhdGUgPD4gc3RydWN0IFVuc2lnbmVkSW50ZWdlcjwgOjpuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlPiB7fTsKLSMgZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19NU19JTlQ2NCkKLSAgdGVtcGxhdGUgPD4gc3RydWN0IFVuc2lnbmVkSW50ZWdlcjx1bnNpZ25lZCBfX2ludDY0PiB7fTsKLSMgZW5kaWYKLQotICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAvLyBCYXNpYyBDb25jZXB0cwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoRGVmYXVsdENvbnN0cnVjdGlibGUsKFRUKSkKLSAgewotICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoRGVmYXVsdENvbnN0cnVjdGlibGUpIHsKLSAgICAgIFRUIGE7ICAgICAgICAgICAgICAgLy8gcmVxdWlyZSBkZWZhdWx0IGNvbnN0cnVjdG9yCi0gICAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcoYSk7Ci0gICAgfQotICB9OwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoQXNzaWduYWJsZSwoVFQpKQotICB7Ci0gICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShBc3NpZ25hYmxlKSB7Ci0jaWYgIWRlZmluZWQoX0lURVJBVE9SXykgLy8gYmFja19pbnNlcnRfaXRlcmF0b3IgYnJva2VuIGZvciBWQysrIFNUTAotICAgICAgYSA9IGI7ICAgICAgICAgICAgIC8vIHJlcXVpcmUgYXNzaWdubWVudCBvcGVyYXRvcgotI2VuZGlmCi0gICAgICBjb25zdF9jb25zdHJhaW50cyhiKTsKLSAgICB9Ci0gICBwcml2YXRlOgotICAgIHZvaWQgY29uc3RfY29uc3RyYWludHMoY29uc3QgVFQmIHgpIHsKLSNpZiAhZGVmaW5lZChfSVRFUkFUT1JfKSAvLyBiYWNrX2luc2VydF9pdGVyYXRvciBicm9rZW4gZm9yIFZDKysgU1RMCi0gICAgICBhID0geDsgICAgICAgICAgICAgIC8vIGNvbnN0IHJlcXVpcmVkIGZvciBhcmd1bWVudCB0byBhc3NpZ25tZW50Ci0jZWxzZQotICAgICAgaWdub3JlX3VudXNlZF92YXJpYWJsZV93YXJuaW5nKHgpOwotI2VuZGlmCi0gICAgfQotICAgcHJpdmF0ZToKLSAgICBUVCBhOwotICAgIFRUIGI7Ci0gIH07Ci0KLQotICBORE5CT09TVF9jb25jZXB0KENvcHlDb25zdHJ1Y3RpYmxlLChUVCkpCi0gIHsKLSAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKENvcHlDb25zdHJ1Y3RpYmxlKSB7Ci0gICAgICBUVCBhKGIpOyAgICAgICAgICAgIC8vIHJlcXVpcmUgY29weSBjb25zdHJ1Y3RvcgotICAgICAgVFQqIHB0ciA9ICZhOyAgICAgICAvLyByZXF1aXJlIGFkZHJlc3Mgb2Ygb3BlcmF0b3IKLSAgICAgIGNvbnN0X2NvbnN0cmFpbnRzKGEpOwotICAgICAgaWdub3JlX3VudXNlZF92YXJpYWJsZV93YXJuaW5nKHB0cik7Ci0gICAgfQotICAgcHJpdmF0ZToKLSAgICB2b2lkIGNvbnN0X2NvbnN0cmFpbnRzKGNvbnN0IFRUJiBhKSB7Ci0gICAgICBUVCBjKGEpOyAgICAgICAgICAgIC8vIHJlcXVpcmUgY29uc3QgY29weSBjb25zdHJ1Y3RvcgotICAgICAgY29uc3QgVFQqIHB0ciA9ICZhOyAvLyByZXF1aXJlIGNvbnN0IGFkZHJlc3Mgb2Ygb3BlcmF0b3IKLSAgICAgIGlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhjKTsKLSAgICAgIGlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhwdHIpOwotICAgIH0KLSAgICBUVCBiOwotICB9OwotCi0jaWYgKGRlZmluZWQgX01TQ19WRVIpCi0jIHByYWdtYSB3YXJuaW5nKCBwdXNoICkKLSMgcHJhZ21hIHdhcm5pbmcoIGRpc2FibGUgOiA0NTEwICkgLy8gZGVmYXVsdCBjb25zdHJ1Y3RvciBjb3VsZCBub3QgYmUgZ2VuZXJhdGVkCi0jIHByYWdtYSB3YXJuaW5nKCBkaXNhYmxlIDogNDYxMCApIC8vIG9iamVjdCAnY2xhc3MnIGNhbiBuZXZlciBiZSBpbnN0YW50aWF0ZWQgLSB1c2VyLWRlZmluZWQgY29uc3RydWN0b3IgcmVxdWlyZWQKLSNlbmRpZgotICAvLyBUaGUgU0dJIFNUTCB2ZXJzaW9uIG9mIEFzc2lnbmFibGUgcmVxdWlyZXMgY29weSBjb25zdHJ1Y3RvciBhbmQgb3BlcmF0b3I9Ci0gIE5ETkJPT1NUX2NvbmNlcHQoU0dJQXNzaWduYWJsZSwoVFQpKQotICB7Ci0gICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShTR0lBc3NpZ25hYmxlKSB7Ci0gICAgICBUVCBjKGEpOwotI2lmICFkZWZpbmVkKF9JVEVSQVRPUl8pIC8vIGJhY2tfaW5zZXJ0X2l0ZXJhdG9yIGJyb2tlbiBmb3IgVkMrKyBTVEwKLSAgICAgIGEgPSBiOyAgICAgICAgICAgICAgLy8gcmVxdWlyZSBhc3NpZ25tZW50IG9wZXJhdG9yCi0jZW5kaWYKLSAgICAgIGNvbnN0X2NvbnN0cmFpbnRzKGIpOwotICAgICAgaWdub3JlX3VudXNlZF92YXJpYWJsZV93YXJuaW5nKGMpOwotICAgIH0KLSAgIHByaXZhdGU6Ci0gICAgdm9pZCBjb25zdF9jb25zdHJhaW50cyhjb25zdCBUVCYgeCkgewotICAgICAgVFQgYyh4KTsKLSNpZiAhZGVmaW5lZChfSVRFUkFUT1JfKSAvLyBiYWNrX2luc2VydF9pdGVyYXRvciBicm9rZW4gZm9yIFZDKysgU1RMCi0gICAgICBhID0geDsgICAgICAgICAgICAgIC8vIGNvbnN0IHJlcXVpcmVkIGZvciBhcmd1bWVudCB0byBhc3NpZ25tZW50Ci0jZW5kaWYKLSAgICAgIGlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhjKTsKLSAgICB9Ci0gICAgVFQgYTsKLSAgICBUVCBiOwotICB9OwotI2lmIChkZWZpbmVkIF9NU0NfVkVSKQotIyBwcmFnbWEgd2FybmluZyggcG9wICkKLSNlbmRpZgotCi0gIE5ETkJPT1NUX2NvbmNlcHQoQ29udmVydGlibGUsKFgpKFkpKQotICB7Ci0gICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShDb252ZXJ0aWJsZSkgewotICAgICAgWSB5ID0geDsKLSAgICAgIGlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyh5KTsKLSAgICB9Ci0gICBwcml2YXRlOgotICAgIFggeDsKLSAgfTsKLQotICAvLyBUaGUgQysrIHN0YW5kYXJkIHJlcXVpcmVtZW50cyBmb3IgbWFueSBjb25jZXB0cyB0YWxrIGFib3V0IHJldHVybgotICAvLyB0eXBlcyB0aGF0IG11c3QgYmUgImNvbnZlcnRpYmxlIHRvIGJvb2wiLiAgVGhlIHByb2JsZW0gd2l0aCB0aGlzCi0gIC8vIHJlcXVpcmVtZW50IGlzIHRoYXQgaXQgbGVhdmVzIHRoZSBkb29yIG9wZW4gZm9yIGV2aWwgcHJveGllcyB0aGF0Ci0gIC8vIGRlZmluZSB0aGluZ3MgbGlrZSBvcGVyYXRvcnx8IHdpdGggc3RyYW5nZSByZXR1cm4gdHlwZXMuICBUd28KLSAgLy8gcG9zc2libGUgc29sdXRpb25zIGFyZToKLSAgLy8gMSkgcmVxdWlyZSB0aGUgcmV0dXJuIHR5cGUgdG8gYmUgZXhhY3RseSBib29sCi0gIC8vIDIpIHN0YXkgd2l0aCBjb252ZXJ0aWJsZSB0byBib29sLCBhbmQgYWxzbwotICAvLyAgICBzcGVjaWZ5IHN0dWZmIGFib3V0IGFsbCB0aGUgbG9naWNhbCBvcGVyYXRvcnMuCi0gIC8vIEZvciBub3cgd2UganVzdCB0ZXN0IGZvciBjb252ZXJ0aWJsZSB0byBib29sLgotICB0ZW1wbGF0ZSA8Y2xhc3MgVFQ+Ci0gIHZvaWQgcmVxdWlyZV9ib29sZWFuX2V4cHIoY29uc3QgVFQmIHQpIHsKLSAgICBib29sIHggPSB0OwotICAgIGlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyh4KTsKLSAgfQotCi0gIE5ETkJPT1NUX2NvbmNlcHQoRXF1YWxpdHlDb21wYXJhYmxlLChUVCkpCi0gIHsKLSAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKEVxdWFsaXR5Q29tcGFyYWJsZSkgewotICAgICAgcmVxdWlyZV9ib29sZWFuX2V4cHIoYSA9PSBiKTsKLSAgICAgIHJlcXVpcmVfYm9vbGVhbl9leHByKGEgIT0gYik7Ci0gICAgfQotICAgcHJpdmF0ZToKLSAgICBUVCBhLCBiOwotICB9OwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoTGVzc1RoYW5Db21wYXJhYmxlLChUVCkpCi0gIHsKLSAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKExlc3NUaGFuQ29tcGFyYWJsZSkgewotICAgICAgcmVxdWlyZV9ib29sZWFuX2V4cHIoYSA8IGIpOwotICAgIH0KLSAgIHByaXZhdGU6Ci0gICAgVFQgYSwgYjsKLSAgfTsKLQotICAvLyBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gU0dJIFNUTCdzIExlc3NUaGFuQ29tcGFyYWJsZS4KLSAgTkROQk9PU1RfY29uY2VwdChDb21wYXJhYmxlLChUVCkpCi0gIHsKLSAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKENvbXBhcmFibGUpIHsKLSAgICAgIHJlcXVpcmVfYm9vbGVhbl9leHByKGEgPCBiKTsKLSAgICAgIHJlcXVpcmVfYm9vbGVhbl9leHByKGEgPiBiKTsKLSAgICAgIHJlcXVpcmVfYm9vbGVhbl9leHByKGEgPD0gYik7Ci0gICAgICByZXF1aXJlX2Jvb2xlYW5fZXhwcihhID49IGIpOwotICAgIH0KLSAgIHByaXZhdGU6Ci0gICAgVFQgYSwgYjsKLSAgfTsKLQotI2RlZmluZSBORE5CT09TVF9ERUZJTkVfQklOQVJZX1BSRURJQ0FURV9PUF9DT05TVFJBSU5UKE9QLE5BTUUpICAgIFwKLSAgTkROQk9PU1RfY29uY2VwdChOQU1FLCAoRmlyc3QpKFNlY29uZCkpICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShOQU1FKSB7ICh2b2lkKWNvbnN0cmFpbnRzXygpOyB9ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgcHJpdmF0ZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGJvb2wgY29uc3RyYWludHNfKCkgeyByZXR1cm4gYSBPUCBiOyB9ICAgICAgICAgICAgICAgICAgXAotICAgICAgICBGaXJzdCBhOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgU2Vjb25kIGI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIH0KLQotI2RlZmluZSBORE5CT09TVF9ERUZJTkVfQklOQVJZX09QRVJBVE9SX0NPTlNUUkFJTlQoT1AsTkFNRSkgICAgXAotICBORE5CT09TVF9jb25jZXB0KE5BTUUsIChSZXQpKEZpcnN0KShTZWNvbmQpKSAgICAgICAgICAgICAgICAgXAotICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShOQU1FKSB7ICh2b2lkKWNvbnN0cmFpbnRzXygpOyB9ICAgICAgICAgICAgICAgICAgICAgXAotICBwcml2YXRlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgUmV0IGNvbnN0cmFpbnRzXygpIHsgcmV0dXJuIGEgT1AgYjsgfSAgICAgICAgICAgICAgICAgXAotICAgICAgRmlyc3QgYTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgU2Vjb25kIGI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB9Ci0KLSAgTkROQk9PU1RfREVGSU5FX0JJTkFSWV9QUkVESUNBVEVfT1BfQ09OU1RSQUlOVCg9PSwgRXF1YWxPcCk7Ci0gIE5ETkJPT1NUX0RFRklORV9CSU5BUllfUFJFRElDQVRFX09QX0NPTlNUUkFJTlQoIT0sIE5vdEVxdWFsT3ApOwotICBORE5CT09TVF9ERUZJTkVfQklOQVJZX1BSRURJQ0FURV9PUF9DT05TVFJBSU5UKDwsIExlc3NUaGFuT3ApOwotICBORE5CT09TVF9ERUZJTkVfQklOQVJZX1BSRURJQ0FURV9PUF9DT05TVFJBSU5UKDw9LCBMZXNzRXF1YWxPcCk7Ci0gIE5ETkJPT1NUX0RFRklORV9CSU5BUllfUFJFRElDQVRFX09QX0NPTlNUUkFJTlQoPiwgR3JlYXRlclRoYW5PcCk7Ci0gIE5ETkJPT1NUX0RFRklORV9CSU5BUllfUFJFRElDQVRFX09QX0NPTlNUUkFJTlQoPj0sIEdyZWF0ZXJFcXVhbE9wKTsKLQotICBORE5CT09TVF9ERUZJTkVfQklOQVJZX09QRVJBVE9SX0NPTlNUUkFJTlQoKywgUGx1c09wKTsKLSAgTkROQk9PU1RfREVGSU5FX0JJTkFSWV9PUEVSQVRPUl9DT05TVFJBSU5UKCosIFRpbWVzT3ApOwotICBORE5CT09TVF9ERUZJTkVfQklOQVJZX09QRVJBVE9SX0NPTlNUUkFJTlQoLywgRGl2aWRlT3ApOwotICBORE5CT09TVF9ERUZJTkVfQklOQVJZX09QRVJBVE9SX0NPTlNUUkFJTlQoLSwgU3VidHJhY3RPcCk7Ci0gIE5ETkJPT1NUX0RFRklORV9CSU5BUllfT1BFUkFUT1JfQ09OU1RSQUlOVCglLCBNb2RPcCk7Ci0KLSAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgLy8gRnVuY3Rpb24gT2JqZWN0IENvbmNlcHRzCi0KLSAgTkROQk9PU1RfY29uY2VwdChHZW5lcmF0b3IsKEZ1bmMpKFJldHVybikpCi0gIHsKLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoR2VuZXJhdG9yKSB7IHRlc3QoaXNfdm9pZDxSZXR1cm4+KCkpOyB9Ci0KLSAgIHByaXZhdGU6Ci0gICAgICB2b2lkIHRlc3QobmRuYm9vc3Q6Om1wbDo6ZmFsc2VfKQotICAgICAgewotICAgICAgICAgIC8vIERvIHdlIHJlYWxseSB3YW50IGEgcmVmZXJlbmNlIGhlcmU/Ci0gICAgICAgICAgY29uc3QgUmV0dXJuJiByID0gZigpOwotICAgICAgICAgIGlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhyKTsKLSAgICAgIH0KLQotICAgICAgdm9pZCB0ZXN0KG5kbmJvb3N0OjptcGw6OnRydWVfKQotICAgICAgewotICAgICAgICAgIGYoKTsKLSAgICAgIH0KLQotICAgICAgRnVuYyBmOwotICB9OwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoVW5hcnlGdW5jdGlvbiwoRnVuYykoUmV0dXJuKShBcmcpKQotICB7Ci0gICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKFVuYXJ5RnVuY3Rpb24pIHsgdGVzdChpc192b2lkPFJldHVybj4oKSk7IH0KLQotICAgcHJpdmF0ZToKLSAgICAgIHZvaWQgdGVzdChuZG5ib29zdDo6bXBsOjpmYWxzZV8pCi0gICAgICB7Ci0gICAgICAgICAgZihhcmcpOyAgICAgICAgICAgICAgIC8vICJwcmltaW5nIHRoZSBwdW1wIiB0aGlzIHdheSBrZWVwcyBtc3ZjNiBoYXBweSAoSUNFKQotICAgICAgICAgIFJldHVybiByID0gZihhcmcpOwotICAgICAgICAgIGlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhyKTsKLSAgICAgIH0KLQotICAgICAgdm9pZCB0ZXN0KG5kbmJvb3N0OjptcGw6OnRydWVfKQotICAgICAgewotICAgICAgICAgIGYoYXJnKTsKLSAgICAgIH0KLQotI2lmIChORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCBORE5CT09TVF9URVNURURfQVQoNCkgXAotICAgICAgICAgICAgICAgICAgICAgICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sID4gMykpKQotICAgICAgLy8gRGVjbGFyZSBhIGR1bW15IGNvbnN0cnVrdG9yIHRvIG1ha2UgZ2NjIGhhcHB5LgotICAgICAgLy8gSXQgc2VlbXMgdGhlIGNvbXBpbGVyIGNhbiBub3QgZ2VuZXJhdGUgYSBzZW5zaWJsZSBjb25zdHJ1Y3RvciB3aGVuIHRoaXMgaXMgaW5zdGFudGlhdGVkIHdpdGggYSByZWZlbmNlIHR5cGUuCi0gICAgICAvLyAod2FybmluZzogbm9uLXN0YXRpYyByZWZlcmVuY2UgImNvbnN0IGRvdWJsZSYgbmRuYm9vc3Q6OlVuYXJ5RnVuY3Rpb248WW91ckNsYXNzSGVyZT46OmFyZyIKLSAgICAgIC8vIGluIGNsYXNzIHdpdGhvdXQgYSBjb25zdHJ1Y3RvciBbLVd1bmluaXRpYWxpemVkXSkKLSAgICAgIFVuYXJ5RnVuY3Rpb24oKTsKLSNlbmRpZgotCi0gICAgICBGdW5jIGY7Ci0gICAgICBBcmcgYXJnOwotICB9OwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoQmluYXJ5RnVuY3Rpb24sKEZ1bmMpKFJldHVybikoRmlyc3QpKFNlY29uZCkpCi0gIHsKLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoQmluYXJ5RnVuY3Rpb24pIHsgdGVzdChpc192b2lkPFJldHVybj4oKSk7IH0KLSAgIHByaXZhdGU6Ci0gICAgICB2b2lkIHRlc3QobmRuYm9vc3Q6Om1wbDo6ZmFsc2VfKQotICAgICAgewotICAgICAgICAgIGYoZmlyc3Qsc2Vjb25kKTsKLSAgICAgICAgICBSZXR1cm4gciA9IGYoZmlyc3QsIHNlY29uZCk7IC8vIHJlcXVpcmUgb3BlcmF0b3IoKQotICAgICAgICAgICh2b2lkKXI7Ci0gICAgICB9Ci0KLSAgICAgIHZvaWQgdGVzdChuZG5ib29zdDo6bXBsOjp0cnVlXykKLSAgICAgIHsKLSAgICAgICAgICBmKGZpcnN0LHNlY29uZCk7Ci0gICAgICB9Ci0KLSNpZiAoTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgTkROQk9PU1RfVEVTVEVEX0FUKDQpIFwKLSAgICAgICAgICAgICAgICAgICAgICAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA+IDMpKSkKLSAgICAgIC8vIERlY2xhcmUgYSBkdW1teSBjb25zdHJ1Y3RvciB0byBtYWtlIGdjYyBoYXBweS4KLSAgICAgIC8vIEl0IHNlZW1zIHRoZSBjb21waWxlciBjYW4gbm90IGdlbmVyYXRlIGEgc2Vuc2libGUgY29uc3RydWN0b3Igd2hlbiB0aGlzIGlzIGluc3RhbnRpYXRlZCB3aXRoIGEgcmVmZW5jZSB0eXBlLgotICAgICAgLy8gKHdhcm5pbmc6IG5vbi1zdGF0aWMgcmVmZXJlbmNlICJjb25zdCBkb3VibGUmIG5kbmJvb3N0OjpCaW5hcnlGdW5jdGlvbjxZb3VyQ2xhc3NIZXJlPjo6YXJnIgotICAgICAgLy8gaW4gY2xhc3Mgd2l0aG91dCBhIGNvbnN0cnVjdG9yIFstV3VuaW5pdGlhbGl6ZWRdKQotICAgICAgQmluYXJ5RnVuY3Rpb24oKTsKLSNlbmRpZgotCi0gICAgICBGdW5jIGY7Ci0gICAgICBGaXJzdCBmaXJzdDsKLSAgICAgIFNlY29uZCBzZWNvbmQ7Ci0gIH07Ci0KLSAgTkROQk9PU1RfY29uY2VwdChVbmFyeVByZWRpY2F0ZSwoRnVuYykoQXJnKSkKLSAgewotICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoVW5hcnlQcmVkaWNhdGUpIHsKLSAgICAgIHJlcXVpcmVfYm9vbGVhbl9leHByKGYoYXJnKSk7IC8vIHJlcXVpcmUgb3BlcmF0b3IoKSByZXR1cm5pbmcgYm9vbAotICAgIH0KLSAgIHByaXZhdGU6Ci0jaWYgKE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCg0KSBcCi0gICAgICAgICAgICAgICAgICAgICAgJiYgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPiAzKSkpCi0gICAgICAvLyBEZWNsYXJlIGEgZHVtbXkgY29uc3RydWN0b3IgdG8gbWFrZSBnY2MgaGFwcHkuCi0gICAgICAvLyBJdCBzZWVtcyB0aGUgY29tcGlsZXIgY2FuIG5vdCBnZW5lcmF0ZSBhIHNlbnNpYmxlIGNvbnN0cnVjdG9yIHdoZW4gdGhpcyBpcyBpbnN0YW50aWF0ZWQgd2l0aCBhIHJlZmVuY2UgdHlwZS4KLSAgICAgIC8vICh3YXJuaW5nOiBub24tc3RhdGljIHJlZmVyZW5jZSAiY29uc3QgZG91YmxlJiBuZG5ib29zdDo6VW5hcnlQcmVkaWNhdGU8WW91ckNsYXNzSGVyZT46OmFyZyIKLSAgICAgIC8vIGluIGNsYXNzIHdpdGhvdXQgYSBjb25zdHJ1Y3RvciBbLVd1bmluaXRpYWxpemVkXSkKLSAgICAgIFVuYXJ5UHJlZGljYXRlKCk7Ci0jZW5kaWYKLQotICAgIEZ1bmMgZjsKLSAgICBBcmcgYXJnOwotICB9OwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoQmluYXJ5UHJlZGljYXRlLChGdW5jKShGaXJzdCkoU2Vjb25kKSkKLSAgewotICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoQmluYXJ5UHJlZGljYXRlKSB7Ci0gICAgICByZXF1aXJlX2Jvb2xlYW5fZXhwcihmKGEsIGIpKTsgLy8gcmVxdWlyZSBvcGVyYXRvcigpIHJldHVybmluZyBib29sCi0gICAgfQotICAgcHJpdmF0ZToKLSNpZiAoTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgTkROQk9PU1RfVEVTVEVEX0FUKDQpIFwKLSAgICAgICAgICAgICAgICAgICAgICAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA+IDMpKSkKLSAgICAgIC8vIERlY2xhcmUgYSBkdW1teSBjb25zdHJ1Y3RvciB0byBtYWtlIGdjYyBoYXBweS4KLSAgICAgIC8vIEl0IHNlZW1zIHRoZSBjb21waWxlciBjYW4gbm90IGdlbmVyYXRlIGEgc2Vuc2libGUgY29uc3RydWN0b3Igd2hlbiB0aGlzIGlzIGluc3RhbnRpYXRlZCB3aXRoIGEgcmVmZW5jZSB0eXBlLgotICAgICAgLy8gKHdhcm5pbmc6IG5vbi1zdGF0aWMgcmVmZXJlbmNlICJjb25zdCBkb3VibGUmIG5kbmJvb3N0OjpCaW5hcnlQcmVkaWNhdGU8WW91ckNsYXNzSGVyZT46OmFyZyIKLSAgICAgIC8vIGluIGNsYXNzIHdpdGhvdXQgYSBjb25zdHJ1Y3RvciBbLVd1bmluaXRpYWxpemVkXSkKLSAgICAgIEJpbmFyeVByZWRpY2F0ZSgpOwotI2VuZGlmCi0gICAgRnVuYyBmOwotICAgIEZpcnN0IGE7Ci0gICAgU2Vjb25kIGI7Ci0gIH07Ci0KLSAgLy8gdXNlIHRoaXMgd2hlbiBmdW5jdG9yIGlzIHVzZWQgaW5zaWRlIGEgY29udGFpbmVyIGNsYXNzIGxpa2Ugc3RkOjpzZXQKLSAgTkROQk9PU1RfY29uY2VwdChDb25zdF9CaW5hcnlQcmVkaWNhdGUsKEZ1bmMpKEZpcnN0KShTZWNvbmQpKQotICAgIDogQmluYXJ5UHJlZGljYXRlPEZ1bmMsIEZpcnN0LCBTZWNvbmQ+Ci0gIHsKLSAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKENvbnN0X0JpbmFyeVByZWRpY2F0ZSkgewotICAgICAgY29uc3RfY29uc3RyYWludHMoZik7Ci0gICAgfQotICAgcHJpdmF0ZToKLSAgICB2b2lkIGNvbnN0X2NvbnN0cmFpbnRzKGNvbnN0IEZ1bmMmIGZ1bikgewotICAgICAgLy8gb3BlcmF0b3IoKSBtdXN0IGJlIGEgY29uc3QgbWVtYmVyIGZ1bmN0aW9uCi0gICAgICByZXF1aXJlX2Jvb2xlYW5fZXhwcihmdW4oYSwgYikpOwotICAgIH0KLSNpZiAoTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgTkROQk9PU1RfVEVTVEVEX0FUKDQpIFwKLSAgICAgICAgICAgICAgICAgICAgICAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA+IDMpKSkKLSAgICAgIC8vIERlY2xhcmUgYSBkdW1teSBjb25zdHJ1Y3RvciB0byBtYWtlIGdjYyBoYXBweS4KLSAgICAgIC8vIEl0IHNlZW1zIHRoZSBjb21waWxlciBjYW4gbm90IGdlbmVyYXRlIGEgc2Vuc2libGUgY29uc3RydWN0b3Igd2hlbiB0aGlzIGlzIGluc3RhbnRpYXRlZCB3aXRoIGEgcmVmZW5jZSB0eXBlLgotICAgICAgLy8gKHdhcm5pbmc6IG5vbi1zdGF0aWMgcmVmZXJlbmNlICJjb25zdCBkb3VibGUmIG5kbmJvb3N0OjpDb25zdF9CaW5hcnlQcmVkaWNhdGU8WW91ckNsYXNzSGVyZT46OmFyZyIKLSAgICAgIC8vIGluIGNsYXNzIHdpdGhvdXQgYSBjb25zdHJ1Y3RvciBbLVd1bmluaXRpYWxpemVkXSkKLSAgICAgIENvbnN0X0JpbmFyeVByZWRpY2F0ZSgpOwotI2VuZGlmCi0KLSAgICBGdW5jIGY7Ci0gICAgRmlyc3QgYTsKLSAgICBTZWNvbmQgYjsKLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KEFkYXB0YWJsZUdlbmVyYXRvciwoRnVuYykoUmV0dXJuKSkKLSAgICA6IEdlbmVyYXRvcjxGdW5jLCB0eXBlbmFtZSBGdW5jOjpyZXN1bHRfdHlwZT4KLSAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBGdW5jOjpyZXN1bHRfdHlwZSByZXN1bHRfdHlwZTsKLQotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShBZGFwdGFibGVHZW5lcmF0b3IpCi0gICAgICB7Ci0gICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKENvbnZlcnRpYmxlPHJlc3VsdF90eXBlLCBSZXR1cm4+KSk7Ci0gICAgICB9Ci0gIH07Ci0KLSAgTkROQk9PU1RfY29uY2VwdChBZGFwdGFibGVVbmFyeUZ1bmN0aW9uLChGdW5jKShSZXR1cm4pKEFyZykpCi0gICAgOiBVbmFyeUZ1bmN0aW9uPEZ1bmMsIHR5cGVuYW1lIEZ1bmM6OnJlc3VsdF90eXBlLCB0eXBlbmFtZSBGdW5jOjphcmd1bWVudF90eXBlPgotICB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIEZ1bmM6OmFyZ3VtZW50X3R5cGUgYXJndW1lbnRfdHlwZTsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgRnVuYzo6cmVzdWx0X3R5cGUgcmVzdWx0X3R5cGU7Ci0KLSAgICAgIH5BZGFwdGFibGVVbmFyeUZ1bmN0aW9uKCkKLSAgICAgIHsKLSAgICAgICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoQ29udmVydGlibGU8cmVzdWx0X3R5cGUsIFJldHVybj4pKTsKLSAgICAgICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoQ29udmVydGlibGU8QXJnLCBhcmd1bWVudF90eXBlPikpOwotICAgICAgfQotICB9OwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoQWRhcHRhYmxlQmluYXJ5RnVuY3Rpb24sKEZ1bmMpKFJldHVybikoRmlyc3QpKFNlY29uZCkpCi0gICAgOiBCaW5hcnlGdW5jdGlvbjwKLSAgICAgICAgICBGdW5jCi0gICAgICAgICwgdHlwZW5hbWUgRnVuYzo6cmVzdWx0X3R5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBGdW5jOjpmaXJzdF9hcmd1bWVudF90eXBlCi0gICAgICAgICwgdHlwZW5hbWUgRnVuYzo6c2Vjb25kX2FyZ3VtZW50X3R5cGUKLSAgICAgID4KLSAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBGdW5jOjpmaXJzdF9hcmd1bWVudF90eXBlIGZpcnN0X2FyZ3VtZW50X3R5cGU7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIEZ1bmM6OnNlY29uZF9hcmd1bWVudF90eXBlIHNlY29uZF9hcmd1bWVudF90eXBlOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBGdW5jOjpyZXN1bHRfdHlwZSByZXN1bHRfdHlwZTsKLQotICAgICAgfkFkYXB0YWJsZUJpbmFyeUZ1bmN0aW9uKCkKLSAgICAgIHsKLSAgICAgICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoQ29udmVydGlibGU8cmVzdWx0X3R5cGUsIFJldHVybj4pKTsKLSAgICAgICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoQ29udmVydGlibGU8Rmlyc3QsIGZpcnN0X2FyZ3VtZW50X3R5cGU+KSk7Ci0gICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKENvbnZlcnRpYmxlPFNlY29uZCwgc2Vjb25kX2FyZ3VtZW50X3R5cGU+KSk7Ci0gICAgICB9Ci0gIH07Ci0KLSAgTkROQk9PU1RfY29uY2VwdChBZGFwdGFibGVQcmVkaWNhdGUsKEZ1bmMpKEFyZykpCi0gICAgOiBVbmFyeVByZWRpY2F0ZTxGdW5jLCBBcmc+Ci0gICAgLCBBZGFwdGFibGVVbmFyeUZ1bmN0aW9uPEZ1bmMsIGJvb2wsIEFyZz4KLSAgewotICB9OwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoQWRhcHRhYmxlQmluYXJ5UHJlZGljYXRlLChGdW5jKShGaXJzdCkoU2Vjb25kKSkKLSAgICA6IEJpbmFyeVByZWRpY2F0ZTxGdW5jLCBGaXJzdCwgU2Vjb25kPgotICAgICwgQWRhcHRhYmxlQmluYXJ5RnVuY3Rpb248RnVuYywgYm9vbCwgRmlyc3QsIFNlY29uZD4KLSAgewotICB9OwotCi0gIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gIC8vIEl0ZXJhdG9yIENvbmNlcHRzCi0KLSAgTkROQk9PU1RfY29uY2VwdChJbnB1dEl0ZXJhdG9yLChUVCkpCi0gICAgOiBBc3NpZ25hYmxlPFRUPgotICAgICwgRXF1YWxpdHlDb21wYXJhYmxlPFRUPgotICB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0czxUVD46OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6aXRlcmF0b3JfdHJhaXRzPFRUPjo6ZGlmZmVyZW5jZV90eXBlIGRpZmZlcmVuY2VfdHlwZTsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6aXRlcmF0b3JfdHJhaXRzPFRUPjo6cmVmZXJlbmNlIHJlZmVyZW5jZTsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6aXRlcmF0b3JfdHJhaXRzPFRUPjo6cG9pbnRlciBwb2ludGVyOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjppdGVyYXRvcl90cmFpdHM8VFQ+OjppdGVyYXRvcl9jYXRlZ29yeSBpdGVyYXRvcl9jYXRlZ29yeTsKLQotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShJbnB1dEl0ZXJhdG9yKQotICAgICAgewotICAgICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoU2lnbmVkSW50ZWdlcjxkaWZmZXJlbmNlX3R5cGU+KSk7Ci0gICAgICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKChDb252ZXJ0aWJsZTxpdGVyYXRvcl9jYXRlZ29yeSwgc3RkOjppbnB1dF9pdGVyYXRvcl90YWc+KSk7Ci0KLSAgICAgICAgVFQgaihpKTsKLSAgICAgICAgKHZvaWQpKmk7ICAgICAgICAgICAvLyByZXF1aXJlIGRlcmVmZXJlbmNlIG9wZXJhdG9yCi0gICAgICAgICsrajsgICAgICAgICAgICAgICAgLy8gcmVxdWlyZSBwcmVpbmNyZW1lbnQgb3BlcmF0b3IKLSAgICAgICAgaSsrOyAgICAgICAgICAgICAgICAvLyByZXF1aXJlIHBvc3RpbmNyZW1lbnQgb3BlcmF0b3IKLSAgICAgIH0KLSAgIHByaXZhdGU6Ci0gICAgVFQgaTsKLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KE91dHB1dEl0ZXJhdG9yLChUVCkoVmFsdWVUKSkKLSAgICA6IEFzc2lnbmFibGU8VFQ+Ci0gIHsKLSAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKE91dHB1dEl0ZXJhdG9yKSB7Ci0KLSAgICAgICsraTsgICAgICAgICAgICAgICAgLy8gcmVxdWlyZSBwcmVpbmNyZW1lbnQgb3BlcmF0b3IKLSAgICAgIGkrKzsgICAgICAgICAgICAgICAgLy8gcmVxdWlyZSBwb3N0aW5jcmVtZW50IG9wZXJhdG9yCi0gICAgICAqaSsrID0gdDsgICAgICAgICAgIC8vIHJlcXVpcmUgcG9zdGluY3JlbWVudCBhbmQgYXNzaWdubWVudAotICAgIH0KLSAgIHByaXZhdGU6Ci0gICAgVFQgaSwgajsKLSAgICBWYWx1ZVQgdDsKLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KEZvcndhcmRJdGVyYXRvciwoVFQpKQotICAgIDogSW5wdXRJdGVyYXRvcjxUVD4KLSAgewotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShGb3J3YXJkSXRlcmF0b3IpCi0gICAgICB7Ci0gICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKENvbnZlcnRpYmxlPAotICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIEZvcndhcmRJdGVyYXRvcjo6aXRlcmF0b3JfY2F0ZWdvcnkKLSAgICAgICAgICAgICwgc3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZwotICAgICAgICAgID4pKTsKLQotICAgICAgICAgIHR5cGVuYW1lIElucHV0SXRlcmF0b3I8VFQ+OjpyZWZlcmVuY2UgciA9ICppOwotICAgICAgICAgIGlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhyKTsKLSAgICAgIH0KLQotICAgcHJpdmF0ZToKLSAgICAgIFRUIGk7Ci0gIH07Ci0KLSAgTkROQk9PU1RfY29uY2VwdChNdXRhYmxlX0ZvcndhcmRJdGVyYXRvciwoVFQpKQotICAgIDogRm9yd2FyZEl0ZXJhdG9yPFRUPgotICB7Ci0gICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKE11dGFibGVfRm9yd2FyZEl0ZXJhdG9yKSB7Ci0gICAgICAgICppKysgPSAqaTsgICAgICAgICAvLyByZXF1aXJlIHBvc3RpbmNyZW1lbnQgYW5kIGFzc2lnbm1lbnQKLSAgICAgIH0KLSAgIHByaXZhdGU6Ci0gICAgICBUVCBpOwotICB9OwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoQmlkaXJlY3Rpb25hbEl0ZXJhdG9yLChUVCkpCi0gICAgOiBGb3J3YXJkSXRlcmF0b3I8VFQ+Ci0gIHsKLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoQmlkaXJlY3Rpb25hbEl0ZXJhdG9yKQotICAgICAgewotICAgICAgICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKChDb252ZXJ0aWJsZTwKLSAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBCaWRpcmVjdGlvbmFsSXRlcmF0b3I6Oml0ZXJhdG9yX2NhdGVnb3J5Ci0gICAgICAgICAgICAsIHN0ZDo6YmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcKLSAgICAgICAgICA+KSk7Ci0KLSAgICAgICAgICAtLWk7ICAgICAgICAgICAgICAgIC8vIHJlcXVpcmUgcHJlZGVjcmVtZW50IG9wZXJhdG9yCi0gICAgICAgICAgaS0tOyAgICAgICAgICAgICAgICAvLyByZXF1aXJlIHBvc3RkZWNyZW1lbnQgb3BlcmF0b3IKLSAgICAgIH0KLSAgIHByaXZhdGU6Ci0gICAgICBUVCBpOwotICB9OwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoTXV0YWJsZV9CaWRpcmVjdGlvbmFsSXRlcmF0b3IsKFRUKSkKLSAgICA6IEJpZGlyZWN0aW9uYWxJdGVyYXRvcjxUVD4KLSAgICAsIE11dGFibGVfRm9yd2FyZEl0ZXJhdG9yPFRUPgotICB7Ci0gICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKE11dGFibGVfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yKQotICAgICAgewotICAgICAgICAgICppLS0gPSAqaTsgICAgICAgICAgICAgICAgICAvLyByZXF1aXJlIHBvc3RkZWNyZW1lbnQgYW5kIGFzc2lnbm1lbnQKLSAgICAgIH0KLSAgIHByaXZhdGU6Ci0gICAgICBUVCBpOwotICB9OwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoUmFuZG9tQWNjZXNzSXRlcmF0b3IsKFRUKSkKLSAgICA6IEJpZGlyZWN0aW9uYWxJdGVyYXRvcjxUVD4KLSAgICAsIENvbXBhcmFibGU8VFQ+Ci0gIHsKLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoUmFuZG9tQWNjZXNzSXRlcmF0b3IpCi0gICAgICB7Ci0gICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKENvbnZlcnRpYmxlPAotICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIEJpZGlyZWN0aW9uYWxJdGVyYXRvcjxUVD46Oml0ZXJhdG9yX2NhdGVnb3J5Ci0gICAgICAgICAgICAsIHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcKLSAgICAgICAgICA+KSk7Ci0KLSAgICAgICAgICBpICs9IG47ICAgICAgICAgICAgIC8vIHJlcXVpcmUgYXNzaWdubWVudCBhZGRpdGlvbiBvcGVyYXRvcgotICAgICAgICAgIGkgPSBpICsgbjsgaSA9IG4gKyBpOyAvLyByZXF1aXJlIGFkZGl0aW9uIHdpdGggZGlmZmVyZW5jZSB0eXBlCi0gICAgICAgICAgaSAtPSBuOyAgICAgICAgICAgICAvLyByZXF1aXJlIGFzc2lnbm1lbnQgc3VidHJhY3Rpb24gb3BlcmF0b3IKLSAgICAgICAgICBpID0gaSAtIG47ICAgICAgICAgICAgICAgICAgLy8gcmVxdWlyZSBzdWJ0cmFjdGlvbiB3aXRoIGRpZmZlcmVuY2UgdHlwZQotICAgICAgICAgIG4gPSBpIC0gajsgICAgICAgICAgICAgICAgICAvLyByZXF1aXJlIGRpZmZlcmVuY2Ugb3BlcmF0b3IKLSAgICAgICAgICAodm9pZClpW25dOyAgICAgICAgICAgICAgICAgLy8gcmVxdWlyZSBlbGVtZW50IGFjY2VzcyBvcGVyYXRvcgotICAgICAgfQotCi0gICBwcml2YXRlOgotICAgIFRUIGEsIGI7Ci0gICAgVFQgaSwgajsKLSAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0czxUVD46OmRpZmZlcmVuY2VfdHlwZSBuOwotICB9OwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoTXV0YWJsZV9SYW5kb21BY2Nlc3NJdGVyYXRvciwoVFQpKQotICAgIDogUmFuZG9tQWNjZXNzSXRlcmF0b3I8VFQ+Ci0gICAgLCBNdXRhYmxlX0JpZGlyZWN0aW9uYWxJdGVyYXRvcjxUVD4KLSAgewotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShNdXRhYmxlX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yKQotICAgICAgewotICAgICAgICAgIGlbbl0gPSAqaTsgICAgICAgICAgICAgICAgICAvLyByZXF1aXJlIGVsZW1lbnQgYWNjZXNzIGFuZCBhc3NpZ25tZW50Ci0gICAgICB9Ci0gICBwcml2YXRlOgotICAgIFRUIGk7Ci0gICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6aXRlcmF0b3JfdHJhaXRzPFRUPjo6ZGlmZmVyZW5jZV90eXBlIG47Ci0gIH07Ci0KLSAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgLy8gQ29udGFpbmVyIHMKLQotICBORE5CT09TVF9jb25jZXB0KENvbnRhaW5lciwoQykpCi0gICAgOiBBc3NpZ25hYmxlPEM+Ci0gIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEM6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEM6OmRpZmZlcmVuY2VfdHlwZSBkaWZmZXJlbmNlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBDOjpzaXplX3R5cGUgc2l6ZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgQzo6Y29uc3RfcmVmZXJlbmNlIGNvbnN0X3JlZmVyZW5jZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEM6OmNvbnN0X3BvaW50ZXIgY29uc3RfcG9pbnRlcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEM6OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwotCi0gICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKENvbnRhaW5lcikKLSAgICAgIHsKLSAgICAgICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoSW5wdXRJdGVyYXRvcjxjb25zdF9pdGVyYXRvcj4pKTsKLSAgICAgICAgICBjb25zdF9jb25zdHJhaW50cyhjKTsKLSAgICAgIH0KLQotICAgcHJpdmF0ZToKLSAgICAgIHZvaWQgY29uc3RfY29uc3RyYWludHMoY29uc3QgQyYgY2MpIHsKLSAgICAgICAgICBpID0gY2MuYmVnaW4oKTsKLSAgICAgICAgICBpID0gY2MuZW5kKCk7Ci0gICAgICAgICAgbiA9IGNjLnNpemUoKTsKLSAgICAgICAgICBuID0gY2MubWF4X3NpemUoKTsKLSAgICAgICAgICBiID0gY2MuZW1wdHkoKTsKLSAgICAgIH0KLSAgICAgIEMgYzsKLSAgICAgIGJvb2wgYjsKLSAgICAgIGNvbnN0X2l0ZXJhdG9yIGk7Ci0gICAgICBzaXplX3R5cGUgbjsKLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KE11dGFibGVfQ29udGFpbmVyLChDKSkKLSAgICA6IENvbnRhaW5lcjxDPgotICB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIEM6OnJlZmVyZW5jZSByZWZlcmVuY2U7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIEM6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBDOjpwb2ludGVyIHBvaW50ZXI7Ci0KLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoTXV0YWJsZV9Db250YWluZXIpCi0gICAgICB7Ci0gICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKAotICAgICAgICAgICAgICAgQXNzaWduYWJsZTx0eXBlbmFtZSBNdXRhYmxlX0NvbnRhaW5lcjo6dmFsdWVfdHlwZT4pKTsKLQotICAgICAgICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKChJbnB1dEl0ZXJhdG9yPGl0ZXJhdG9yPikpOwotCi0gICAgICAgICAgaSA9IGMuYmVnaW4oKTsKLSAgICAgICAgICBpID0gYy5lbmQoKTsKLSAgICAgICAgICBjLnN3YXAoYzIpOwotICAgICAgfQotCi0gICBwcml2YXRlOgotICAgICAgaXRlcmF0b3IgaTsKLSAgICAgIEMgYywgYzI7Ci0gIH07Ci0KLSAgTkROQk9PU1RfY29uY2VwdChGb3J3YXJkQ29udGFpbmVyLChDKSkKLSAgICA6IENvbnRhaW5lcjxDPgotICB7Ci0gICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKEZvcndhcmRDb250YWluZXIpCi0gICAgICB7Ci0gICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKAotICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yPAotICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBGb3J3YXJkQ29udGFpbmVyOjpjb25zdF9pdGVyYXRvcgotICAgICAgICAgICAgICAgPikpOwotICAgICAgfQotICB9OwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoTXV0YWJsZV9Gb3J3YXJkQ29udGFpbmVyLChDKSkKLSAgICA6IEZvcndhcmRDb250YWluZXI8Qz4KLSAgICAsIE11dGFibGVfQ29udGFpbmVyPEM+Ci0gIHsKLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoTXV0YWJsZV9Gb3J3YXJkQ29udGFpbmVyKQotICAgICAgewotICAgICAgICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKCgKLSAgICAgICAgICAgICAgIE11dGFibGVfRm9yd2FyZEl0ZXJhdG9yPAotICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE11dGFibGVfRm9yd2FyZENvbnRhaW5lcjo6aXRlcmF0b3IKLSAgICAgICAgICAgICAgID4pKTsKLSAgICAgIH0KLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KFJldmVyc2libGVDb250YWluZXIsKEMpKQotICAgIDogRm9yd2FyZENvbnRhaW5lcjxDPgotICB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICAgIEM6OmNvbnN0X3JldmVyc2VfaXRlcmF0b3IKLSAgICAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3I7Ci0KLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoUmV2ZXJzaWJsZUNvbnRhaW5lcikKLSAgICAgIHsKLSAgICAgICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoCi0gICAgICAgICAgICAgIEJpZGlyZWN0aW9uYWxJdGVyYXRvcjwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFJldmVyc2libGVDb250YWluZXI6OmNvbnN0X2l0ZXJhdG9yPikpOwotCi0gICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKEJpZGlyZWN0aW9uYWxJdGVyYXRvcjxjb25zdF9yZXZlcnNlX2l0ZXJhdG9yPikpOwotCi0gICAgICAgICAgY29uc3RfY29uc3RyYWludHMoYyk7Ci0gICAgICB9Ci0gICBwcml2YXRlOgotICAgICAgdm9pZCBjb25zdF9jb25zdHJhaW50cyhjb25zdCBDJiBjYykKLSAgICAgIHsKLSAgICAgICAgICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIGkgPSBjYy5yYmVnaW4oKTsKLSAgICAgICAgICBpID0gY2MucmVuZCgpOwotICAgICAgfQotICAgICAgQyBjOwotICB9OwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoTXV0YWJsZV9SZXZlcnNpYmxlQ29udGFpbmVyLChDKSkKLSAgICA6IE11dGFibGVfRm9yd2FyZENvbnRhaW5lcjxDPgotICAgICwgUmV2ZXJzaWJsZUNvbnRhaW5lcjxDPgotICB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIEM6OnJldmVyc2VfaXRlcmF0b3IgcmV2ZXJzZV9pdGVyYXRvcjsKLQotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShNdXRhYmxlX1JldmVyc2libGVDb250YWluZXIpCi0gICAgICB7Ci0gICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBNdXRhYmxlX0ZvcndhcmRDb250YWluZXI8Qz46Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgICAgICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKChNdXRhYmxlX0JpZGlyZWN0aW9uYWxJdGVyYXRvcjxpdGVyYXRvcj4pKTsKLSAgICAgICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoTXV0YWJsZV9CaWRpcmVjdGlvbmFsSXRlcmF0b3I8cmV2ZXJzZV9pdGVyYXRvcj4pKTsKLQotICAgICAgICAgIHJldmVyc2VfaXRlcmF0b3IgaSA9IGMucmJlZ2luKCk7Ci0gICAgICAgICAgaSA9IGMucmVuZCgpOwotICAgICAgfQotICAgcHJpdmF0ZToKLSAgICAgIEMgYzsKLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KFJhbmRvbUFjY2Vzc0NvbnRhaW5lciwoQykpCi0gICAgOiBSZXZlcnNpYmxlQ29udGFpbmVyPEM+Ci0gIHsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQzo6c2l6ZV90eXBlIHNpemVfdHlwZTsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQzo6Y29uc3RfcmVmZXJlbmNlIGNvbnN0X3JlZmVyZW5jZTsKLQotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShSYW5kb21BY2Nlc3NDb250YWluZXIpCi0gICAgICB7Ci0gICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKAotICAgICAgICAgICAgICBSYW5kb21BY2Nlc3NJdGVyYXRvcjwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFJhbmRvbUFjY2Vzc0NvbnRhaW5lcjo6Y29uc3RfaXRlcmF0b3IKLSAgICAgICAgICAgICAgPikpOwotCi0gICAgICAgICAgY29uc3RfY29uc3RyYWludHMoYyk7Ci0gICAgICB9Ci0gICBwcml2YXRlOgotICAgICAgdm9pZCBjb25zdF9jb25zdHJhaW50cyhjb25zdCBDJiBjYykKLSAgICAgIHsKLSAgICAgICAgICBjb25zdF9yZWZlcmVuY2UgciA9IGNjW25dOwotICAgICAgICAgIGlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhyKTsKLSAgICAgIH0KLQotICAgICAgQyBjOwotICAgICAgc2l6ZV90eXBlIG47Ci0gIH07Ci0KLSAgTkROQk9PU1RfY29uY2VwdChNdXRhYmxlX1JhbmRvbUFjY2Vzc0NvbnRhaW5lciwoQykpCi0gICAgOiBNdXRhYmxlX1JldmVyc2libGVDb250YWluZXI8Qz4KLSAgICAsIFJhbmRvbUFjY2Vzc0NvbnRhaW5lcjxDPgotICB7Ci0gICBwcml2YXRlOgotICAgICAgdHlwZWRlZiBNdXRhYmxlX1JhbmRvbUFjY2Vzc0NvbnRhaW5lciBzZWxmOwotICAgcHVibGljOgotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShNdXRhYmxlX1JhbmRvbUFjY2Vzc0NvbnRhaW5lcikKLSAgICAgIHsKLSAgICAgICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoTXV0YWJsZV9SYW5kb21BY2Nlc3NJdGVyYXRvcjx0eXBlbmFtZSBzZWxmOjppdGVyYXRvcj4pKTsKLSAgICAgICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoTXV0YWJsZV9SYW5kb21BY2Nlc3NJdGVyYXRvcjx0eXBlbmFtZSBzZWxmOjpyZXZlcnNlX2l0ZXJhdG9yPikpOwotCi0gICAgICAgICAgdHlwZW5hbWUgc2VsZjo6cmVmZXJlbmNlIHIgPSBjW2ldOwotICAgICAgICAgIGlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhyKTsKLSAgICAgIH0KLQotICAgcHJpdmF0ZToKLSAgICAgIHR5cGVuYW1lIE11dGFibGVfUmV2ZXJzaWJsZUNvbnRhaW5lcjxDPjo6c2l6ZV90eXBlIGk7Ci0gICAgICBDIGM7Ci0gIH07Ci0KLSAgLy8gQSBTZXF1ZW5jZSBpcyBpbmhlcmVudGx5IG11dGFibGUKLSAgTkROQk9PU1RfY29uY2VwdChTZXF1ZW5jZSwoUykpCi0gICAgOiBNdXRhYmxlX0ZvcndhcmRDb250YWluZXI8Uz4KLSAgICAgIC8vIE1hdHQgQXVzdGVybidzIGJvb2sgcHV0cyBEZWZhdWx0Q29uc3RydWN0aWJsZSBoZXJlLCB0aGUgQysrCi0gICAgICAvLyBzdGFuZGFyZCBwbGFjZXMgaXQgaW4gQ29udGFpbmVyIC0tSkdTCi0gICAgICAvLyAuLi4gc28gd2h5IGFyZW4ndCB3ZSBmb2xsb3dpbmcgdGhlIHN0YW5kYXJkPyAgLS1EV0EKLSAgICAsIERlZmF1bHRDb25zdHJ1Y3RpYmxlPFM+Ci0gIHsKLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoU2VxdWVuY2UpCi0gICAgICB7Ci0gICAgICAgICAgUwotICAgICAgICAgICAgICBjKG4pLAotICAgICAgICAgICAgICBjMihuLCB0KSwKLSAgICAgICAgICAgICAgYzMoZmlyc3QsIGxhc3QpOwotCi0gICAgICAgICAgYy5pbnNlcnQocCwgdCk7Ci0gICAgICAgICAgYy5pbnNlcnQocCwgbiwgdCk7Ci0gICAgICAgICAgYy5pbnNlcnQocCwgZmlyc3QsIGxhc3QpOwotCi0gICAgICAgICAgYy5lcmFzZShwKTsKLSAgICAgICAgICBjLmVyYXNlKHAsIHEpOwotCi0gICAgICAgICAgdHlwZW5hbWUgU2VxdWVuY2U6OnJlZmVyZW5jZSByID0gYy5mcm9udCgpOwotCi0gICAgICAgICAgaWdub3JlX3VudXNlZF92YXJpYWJsZV93YXJuaW5nKGMpOwotICAgICAgICAgIGlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhjMik7Ci0gICAgICAgICAgaWdub3JlX3VudXNlZF92YXJpYWJsZV93YXJuaW5nKGMzKTsKLSAgICAgICAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcocik7Ci0gICAgICAgICAgY29uc3RfY29uc3RyYWludHMoYyk7Ci0gICAgICB9Ci0gICBwcml2YXRlOgotICAgICAgdm9pZCBjb25zdF9jb25zdHJhaW50cyhjb25zdCBTJiBjKSB7Ci0gICAgICAgICAgdHlwZW5hbWUgU2VxdWVuY2U6OmNvbnN0X3JlZmVyZW5jZSByID0gYy5mcm9udCgpOwotICAgICAgICAgIGlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhyKTsKLSAgICAgIH0KLQotICAgICAgdHlwZW5hbWUgUzo6dmFsdWVfdHlwZSB0OwotICAgICAgdHlwZW5hbWUgUzo6c2l6ZV90eXBlIG47Ci0gICAgICB0eXBlbmFtZSBTOjp2YWx1ZV90eXBlKiBmaXJzdCwgKmxhc3Q7Ci0gICAgICB0eXBlbmFtZSBTOjppdGVyYXRvciBwLCBxOwotICB9OwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoRnJvbnRJbnNlcnRpb25TZXF1ZW5jZSwoUykpCi0gICAgOiBTZXF1ZW5jZTxTPgotICB7Ci0gICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKEZyb250SW5zZXJ0aW9uU2VxdWVuY2UpCi0gICAgICB7Ci0gICAgICAgICAgYy5wdXNoX2Zyb250KHQpOwotICAgICAgICAgIGMucG9wX2Zyb250KCk7Ci0gICAgICB9Ci0gICBwcml2YXRlOgotICAgICAgUyBjOwotICAgICAgdHlwZW5hbWUgUzo6dmFsdWVfdHlwZSB0OwotICB9OwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoQmFja0luc2VydGlvblNlcXVlbmNlLChTKSkKLSAgICA6IFNlcXVlbmNlPFM+Ci0gIHsKLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoQmFja0luc2VydGlvblNlcXVlbmNlKQotICAgICAgewotICAgICAgICAgIGMucHVzaF9iYWNrKHQpOwotICAgICAgICAgIGMucG9wX2JhY2soKTsKLSAgICAgICAgICB0eXBlbmFtZSBCYWNrSW5zZXJ0aW9uU2VxdWVuY2U6OnJlZmVyZW5jZSByID0gYy5iYWNrKCk7Ci0gICAgICAgICAgaWdub3JlX3VudXNlZF92YXJpYWJsZV93YXJuaW5nKHIpOwotICAgICAgICAgIGNvbnN0X2NvbnN0cmFpbnRzKGMpOwotICAgICAgfQotICAgcHJpdmF0ZToKLSAgICAgIHZvaWQgY29uc3RfY29uc3RyYWludHMoY29uc3QgUyYgY2MpIHsKLSAgICAgICAgICB0eXBlbmFtZSBCYWNrSW5zZXJ0aW9uU2VxdWVuY2U6OmNvbnN0X3JlZmVyZW5jZQotICAgICAgICAgICAgICByID0gY2MuYmFjaygpOwotICAgICAgICAgIGlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhyKTsKLSAgICAgIH07Ci0gICAgICBTIGM7Ci0gICAgICB0eXBlbmFtZSBTOjp2YWx1ZV90eXBlIHQ7Ci0gIH07Ci0KLSAgTkROQk9PU1RfY29uY2VwdChBc3NvY2lhdGl2ZUNvbnRhaW5lciwoQykpCi0gICAgOiBGb3J3YXJkQ29udGFpbmVyPEM+Ci0gICAgLCBEZWZhdWx0Q29uc3RydWN0aWJsZTxDPgotICB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIEM6OmtleV90eXBlIGtleV90eXBlOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBDOjprZXlfY29tcGFyZSBrZXlfY29tcGFyZTsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQzo6dmFsdWVfY29tcGFyZSB2YWx1ZV9jb21wYXJlOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBDOjppdGVyYXRvciBpdGVyYXRvcjsKLQotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShBc3NvY2lhdGl2ZUNvbnRhaW5lcikKLSAgICAgIHsKLSAgICAgICAgICBpID0gYy5maW5kKGspOwotICAgICAgICAgIHIgPSBjLmVxdWFsX3JhbmdlKGspOwotICAgICAgICAgIGMuZXJhc2Uoayk7Ci0gICAgICAgICAgYy5lcmFzZShpKTsKLSAgICAgICAgICBjLmVyYXNlKHIuZmlyc3QsIHIuc2Vjb25kKTsKLSAgICAgICAgICBjb25zdF9jb25zdHJhaW50cyhjKTsKLSAgICAgICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoQmluYXJ5UHJlZGljYXRlPGtleV9jb21wYXJlLGtleV90eXBlLGtleV90eXBlPikpOwotCi0gICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBc3NvY2lhdGl2ZUNvbnRhaW5lcjo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlXzsKLSAgICAgICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoQmluYXJ5UHJlZGljYXRlPHZhbHVlX2NvbXBhcmUsdmFsdWVfdHlwZV8sdmFsdWVfdHlwZV8+KSk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIFJlZHVuZGFudCB3aXRoIHRoZSBiYXNlIGNvbmNlcHQsIGJ1dCBpdCBoZWxwcyBiZWxvdy4KLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQzo6Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7Ci0gICBwcml2YXRlOgotICAgICAgdm9pZCBjb25zdF9jb25zdHJhaW50cyhjb25zdCBDJiBjYykKLSAgICAgIHsKLSAgICAgICAgICBjaSA9IGNjLmZpbmQoayk7Ci0gICAgICAgICAgbiA9IGNjLmNvdW50KGspOwotICAgICAgICAgIGNyID0gY2MuZXF1YWxfcmFuZ2Uoayk7Ci0gICAgICB9Ci0KLSAgICAgIEMgYzsKLSAgICAgIGl0ZXJhdG9yIGk7Ci0gICAgICBzdGQ6OnBhaXI8aXRlcmF0b3IsaXRlcmF0b3I+IHI7Ci0gICAgICBjb25zdF9pdGVyYXRvciBjaTsKLSAgICAgIHN0ZDo6cGFpcjxjb25zdF9pdGVyYXRvcixjb25zdF9pdGVyYXRvcj4gY3I7Ci0gICAgICB0eXBlbmFtZSBDOjprZXlfdHlwZSBrOwotICAgICAgdHlwZW5hbWUgQzo6c2l6ZV90eXBlIG47Ci0gIH07Ci0KLSAgTkROQk9PU1RfY29uY2VwdChVbmlxdWVBc3NvY2lhdGl2ZUNvbnRhaW5lciwoQykpCi0gICAgOiBBc3NvY2lhdGl2ZUNvbnRhaW5lcjxDPgotICB7Ci0gICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKFVuaXF1ZUFzc29jaWF0aXZlQ29udGFpbmVyKQotICAgICAgewotICAgICAgICAgIEMgYyhmaXJzdCwgbGFzdCk7Ci0KLSAgICAgICAgICBwb3NfZmxhZyA9IGMuaW5zZXJ0KHQpOwotICAgICAgICAgIGMuaW5zZXJ0KGZpcnN0LCBsYXN0KTsKLQotICAgICAgICAgIGlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhjKTsKLSAgICAgIH0KLSAgIHByaXZhdGU6Ci0gICAgICBzdGQ6OnBhaXI8dHlwZW5hbWUgQzo6aXRlcmF0b3IsIGJvb2w+IHBvc19mbGFnOwotICAgICAgdHlwZW5hbWUgQzo6dmFsdWVfdHlwZSB0OwotICAgICAgdHlwZW5hbWUgQzo6dmFsdWVfdHlwZSogZmlyc3QsICpsYXN0OwotICB9OwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoTXVsdGlwbGVBc3NvY2lhdGl2ZUNvbnRhaW5lciwoQykpCi0gICAgOiBBc3NvY2lhdGl2ZUNvbnRhaW5lcjxDPgotICB7Ci0gICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKE11bHRpcGxlQXNzb2NpYXRpdmVDb250YWluZXIpCi0gICAgICB7Ci0gICAgICAgICAgQyBjKGZpcnN0LCBsYXN0KTsKLQotICAgICAgICAgIHBvcyA9IGMuaW5zZXJ0KHQpOwotICAgICAgICAgIGMuaW5zZXJ0KGZpcnN0LCBsYXN0KTsKLQotICAgICAgICAgIGlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhjKTsKLSAgICAgICAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcocG9zKTsKLSAgICAgIH0KLSAgIHByaXZhdGU6Ci0gICAgICB0eXBlbmFtZSBDOjppdGVyYXRvciBwb3M7Ci0gICAgICB0eXBlbmFtZSBDOjp2YWx1ZV90eXBlIHQ7Ci0gICAgICB0eXBlbmFtZSBDOjp2YWx1ZV90eXBlKiBmaXJzdCwgKmxhc3Q7Ci0gIH07Ci0KLSAgTkROQk9PU1RfY29uY2VwdChTaW1wbGVBc3NvY2lhdGl2ZUNvbnRhaW5lciwoQykpCi0gICAgOiBBc3NvY2lhdGl2ZUNvbnRhaW5lcjxDPgotICB7Ci0gICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKFNpbXBsZUFzc29jaWF0aXZlQ29udGFpbmVyKQotICAgICAgewotICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQzo6a2V5X3R5cGUga2V5X3R5cGU7Ci0gICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBDOjp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FTU0VSVCgobmRuYm9vc3Q6OmlzX3NhbWU8a2V5X3R5cGUsdmFsdWVfdHlwZT4pKTsKLSAgICAgIH0KLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KFBhaXJBc3NvY2lhdGl2ZUNvbnRhaW5lciwoQykpCi0gICAgOiBBc3NvY2lhdGl2ZUNvbnRhaW5lcjxDPgotICB7Ci0gICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKFBhaXJBc3NvY2lhdGl2ZUNvbnRhaW5lcikKLSAgICAgIHsKLSAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEM6OmtleV90eXBlIGtleV90eXBlOwotICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQzo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQzo6bWFwcGVkX3R5cGUgbWFwcGVkX3R5cGU7Ci0gICAgICAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8Y29uc3Qga2V5X3R5cGUsIG1hcHBlZF90eXBlPiByZXF1aXJlZF92YWx1ZV90eXBlOwotICAgICAgICAgIE5ETkJPT1NUX01QTF9BU1NFUlQoKG5kbmJvb3N0Ojppc19zYW1lPHZhbHVlX3R5cGUscmVxdWlyZWRfdmFsdWVfdHlwZT4pKTsKLSAgICAgIH0KLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KFNvcnRlZEFzc29jaWF0aXZlQ29udGFpbmVyLChDKSkKLSAgICA6IEFzc29jaWF0aXZlQ29udGFpbmVyPEM+Ci0gICAgLCBSZXZlcnNpYmxlQ29udGFpbmVyPEM+Ci0gIHsKLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoU29ydGVkQXNzb2NpYXRpdmVDb250YWluZXIpCi0gICAgICB7Ci0gICAgICAgICAgQwotICAgICAgICAgICAgICBjKGtjKSwKLSAgICAgICAgICAgICAgYzIoZmlyc3QsIGxhc3QpLAotICAgICAgICAgICAgICBjMyhmaXJzdCwgbGFzdCwga2MpOwotCi0gICAgICAgICAgcCA9IGMudXBwZXJfYm91bmQoayk7Ci0gICAgICAgICAgcCA9IGMubG93ZXJfYm91bmQoayk7Ci0gICAgICAgICAgciA9IGMuZXF1YWxfcmFuZ2Uoayk7Ci0KLSAgICAgICAgICBjLmluc2VydChwLCB0KTsKLQotICAgICAgICAgIGlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhjKTsKLSAgICAgICAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcoYzIpOwotICAgICAgICAgIGlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhjMyk7Ci0gICAgICAgICAgY29uc3RfY29uc3RyYWludHMoYyk7Ci0gICAgICB9Ci0KLSAgICAgIHZvaWQgY29uc3RfY29uc3RyYWludHMoY29uc3QgQyYgYykKLSAgICAgIHsKLSAgICAgICAgICBrYyA9IGMua2V5X2NvbXAoKTsKLSAgICAgICAgICB2YyA9IGMudmFsdWVfY29tcCgpOwotCi0gICAgICAgICAgY3AgPSBjLnVwcGVyX2JvdW5kKGspOwotICAgICAgICAgIGNwID0gYy5sb3dlcl9ib3VuZChrKTsKLSAgICAgICAgICBjciA9IGMuZXF1YWxfcmFuZ2Uoayk7Ci0gICAgICB9Ci0KLSAgIHByaXZhdGU6Ci0gICAgICB0eXBlbmFtZSBDOjprZXlfY29tcGFyZSBrYzsKLSAgICAgIHR5cGVuYW1lIEM6OnZhbHVlX2NvbXBhcmUgdmM7Ci0gICAgICB0eXBlbmFtZSBDOjp2YWx1ZV90eXBlIHQ7Ci0gICAgICB0eXBlbmFtZSBDOjprZXlfdHlwZSBrOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBDOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQzo6Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7Ci0KLSAgICAgIHR5cGVkZWYgU29ydGVkQXNzb2NpYXRpdmVDb250YWluZXIgc2VsZjsKLSAgICAgIGl0ZXJhdG9yIHA7Ci0gICAgICBjb25zdF9pdGVyYXRvciBjcDsKLSAgICAgIHN0ZDo6cGFpcjx0eXBlbmFtZSBzZWxmOjppdGVyYXRvcix0eXBlbmFtZSBzZWxmOjppdGVyYXRvcj4gcjsKLSAgICAgIHN0ZDo6cGFpcjx0eXBlbmFtZSBzZWxmOjpjb25zdF9pdGVyYXRvcix0eXBlbmFtZSBzZWxmOjpjb25zdF9pdGVyYXRvcj4gY3I7Ci0gICAgICB0eXBlbmFtZSBDOjp2YWx1ZV90eXBlKiBmaXJzdCwgKmxhc3Q7Ci0gIH07Ci0KLSAgLy8gSGFzaGVkQXNzb2NpYXRpdmVDb250YWluZXIKLQotICBORE5CT09TVF9jb25jZXB0KENvbGxlY3Rpb24sKEMpKQotICB7Ci0gICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKENvbGxlY3Rpb24pCi0gICAgICB7Ci0gICAgICAgIG5kbmJvb3N0OjpmdW5jdGlvbl9yZXF1aXJlczxuZG5ib29zdDo6SW5wdXRJdGVyYXRvckNvbmNlcHQ8aXRlcmF0b3I+ID4oKTsKLSAgICAgICAgbmRuYm9vc3Q6OmZ1bmN0aW9uX3JlcXVpcmVzPG5kbmJvb3N0OjpJbnB1dEl0ZXJhdG9yQ29uY2VwdDxjb25zdF9pdGVyYXRvcj4gPigpOwotICAgICAgICBuZG5ib29zdDo6ZnVuY3Rpb25fcmVxdWlyZXM8bmRuYm9vc3Q6OkNvcHlDb25zdHJ1Y3RpYmxlQ29uY2VwdDx2YWx1ZV90eXBlPiA+KCk7Ci0gICAgICAgIGNvbnN0X2NvbnN0cmFpbnRzKGMpOwotICAgICAgICBpID0gYy5iZWdpbigpOwotICAgICAgICBpID0gYy5lbmQoKTsKLSAgICAgICAgYy5zd2FwKGMpOwotICAgICAgfQotCi0gICAgICB2b2lkIGNvbnN0X2NvbnN0cmFpbnRzKGNvbnN0IEMmIGNjKSB7Ci0gICAgICAgIGNpID0gY2MuYmVnaW4oKTsKLSAgICAgICAgY2kgPSBjYy5lbmQoKTsKLSAgICAgICAgbiA9IGNjLnNpemUoKTsKLSAgICAgICAgYiA9IGNjLmVtcHR5KCk7Ci0gICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBDOjp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIEM6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBDOjpjb25zdF9pdGVyYXRvciBjb25zdF9pdGVyYXRvcjsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQzo6cmVmZXJlbmNlIHJlZmVyZW5jZTsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQzo6Y29uc3RfcmVmZXJlbmNlIGNvbnN0X3JlZmVyZW5jZTsKLSAgICAgIC8vIHR5cGVkZWYgdHlwZW5hbWUgQzo6cG9pbnRlciBwb2ludGVyOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBDOjpkaWZmZXJlbmNlX3R5cGUgZGlmZmVyZW5jZV90eXBlOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBDOjpzaXplX3R5cGUgc2l6ZV90eXBlOwotCi0gICAgICBDIGM7Ci0gICAgICBib29sIGI7Ci0gICAgICBpdGVyYXRvciBpOwotICAgICAgY29uc3RfaXRlcmF0b3IgY2k7Ci0gICAgICBzaXplX3R5cGUgbjsKLSAgfTsKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvY29uY2VwdC9kZXRhaWwvY29uY2VwdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9DT05DRVBUX0NIRUNLU19IUFAKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjM4ZDRiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8vICBCb29zdCBjb25maWcuaHBwIGNvbmZpZ3VyYXRpb24gaGVhZGVyIGZpbGUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAyLiAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9jb25maWcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLS8vICBCb29zdCBjb25maWcuaHBwIHBvbGljeSBhbmQgcmF0aW9uYWxlIGRvY3VtZW50YXRpb24gaGFzIGJlZW4gbW92ZWQgdG8KLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2NvbmZpZwotLy8KLS8vICBDQVVUSU9OOiBUaGlzIGZpbGUgaXMgaW50ZW5kZWQgdG8gYmUgY29tcGxldGVseSBzdGFibGUgLQotLy8gICAgICAgICAgIERPIE5PVCBNT0RJRlkgVEhJUyBGSUxFIQotLy8KLQotI2lmbmRlZiBORE5CT09TVF9DT05GSUdfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0NPTkZJR19IUFAKLQotLy8gaWYgd2UgZG9uJ3QgaGF2ZSBhIHVzZXIgY29uZmlnLCB0aGVuIHVzZSB0aGUgZGVmYXVsdCBsb2NhdGlvbjoKLSNpZiAhZGVmaW5lZChORE5CT09TVF9VU0VSX0NPTkZJRykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fVVNFUl9DT05GSUcpCi0jICBkZWZpbmUgTkROQk9PU1RfVVNFUl9DT05GSUcgPG5kbmJvb3N0L2NvbmZpZy91c2VyLmhwcD4KLSNlbmRpZgotLy8gaW5jbHVkZSBpdCBmaXJzdDoKLSNpZmRlZiBORE5CT09TVF9VU0VSX0NPTkZJRwotIyAgaW5jbHVkZSBORE5CT09TVF9VU0VSX0NPTkZJRwotI2VuZGlmCi0KLS8vIGlmIHdlIGRvbid0IGhhdmUgYSBjb21waWxlciBjb25maWcgc2V0LCB0cnkgYW5kIGZpbmQgb25lOgotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0NPTVBJTEVSX0NPTkZJRykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ09NUElMRVJfQ09ORklHKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19DT05GSUcpCi0jICBpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvc2VsZWN0X2NvbXBpbGVyX2NvbmZpZy5ocHA+Ci0jZW5kaWYKLS8vIGlmIHdlIGhhdmUgYSBjb21waWxlciBjb25maWcsIGluY2x1ZGUgaXQgbm93OgotI2lmZGVmIE5ETkJPT1NUX0NPTVBJTEVSX0NPTkZJRwotIyAgaW5jbHVkZSBORE5CT09TVF9DT01QSUxFUl9DT05GSUcKLSNlbmRpZgotCi0vLyBpZiB3ZSBkb24ndCBoYXZlIGEgc3RkIGxpYnJhcnkgY29uZmlnIHNldCwgdHJ5IGFuZCBmaW5kIG9uZToKLSNpZiAhZGVmaW5lZChORE5CT09TVF9TVERMSUJfQ09ORklHKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19TVERMSUJfQ09ORklHKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19DT05GSUcpICYmIGRlZmluZWQoX19jcGx1c3BsdXMpCi0jICBpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvc2VsZWN0X3N0ZGxpYl9jb25maWcuaHBwPgotI2VuZGlmCi0vLyBpZiB3ZSBoYXZlIGEgc3RkIGxpYnJhcnkgY29uZmlnLCBpbmNsdWRlIGl0IG5vdzoKLSNpZmRlZiBORE5CT09TVF9TVERMSUJfQ09ORklHCi0jICBpbmNsdWRlIE5ETkJPT1NUX1NURExJQl9DT05GSUcKLSNlbmRpZgotCi0vLyBpZiB3ZSBkb24ndCBoYXZlIGEgcGxhdGZvcm0gY29uZmlnIHNldCwgdHJ5IGFuZCBmaW5kIG9uZToKLSNpZiAhZGVmaW5lZChORE5CT09TVF9QTEFURk9STV9DT05GSUcpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1BMQVRGT1JNX0NPTkZJRykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ09ORklHKQotIyAgaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL3NlbGVjdF9wbGF0Zm9ybV9jb25maWcuaHBwPgotI2VuZGlmCi0vLyBpZiB3ZSBoYXZlIGEgcGxhdGZvcm0gY29uZmlnLCBpbmNsdWRlIGl0IG5vdzoKLSNpZmRlZiBORE5CT09TVF9QTEFURk9STV9DT05GSUcKLSMgIGluY2x1ZGUgTkROQk9PU1RfUExBVEZPUk1fQ09ORklHCi0jZW5kaWYKLQotLy8gZ2V0IGNvbmZpZyBzdWZmaXggY29kZToKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvc3VmZml4LmhwcD4KLQotI2VuZGlmICAvLyBORE5CT09TVF9DT05GSUdfSFBQCi0KLQotCi0KLQotCi0KLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvYWJpL2JvcmxhbmRfcHJlZml4LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2FiaS9ib3JsYW5kX3ByZWZpeC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhMGU1YWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvYWJpL2JvcmxhbmRfcHJlZml4LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAzLiAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBmb3IgQysrIEJ1aWxkZXIgdGhlIGZvbGxvd2luZyBvcHRpb25zIGVmZmVjdCB0aGUgQUJJOgotLy8KLS8vICAtYiAob24gb3Igb2ZmIC0gZWZmZWN0IGVtdW0gc2l6ZXMpCi0vLyAgLVZ4ICAob24gb3Igb2ZmIC0gZW1wdHkgbWVtYmVycykKLS8vICAtVmUgKG9uIG9yIG9mZiAtIGVtcHR5IGJhc2UgY2xhc3NlcykKLS8vICAtYVggKGFsaWdubWVudCAtIDUgb3B0aW9ucykuCi0vLyAgLXBYIChDYWxsaW5nIGNvbnZlbnRpb24gLSA0IG9wdGlvbnMpCi0vLyAgLVZtWCAobWVtYmVyIHBvaW50ZXIgc2l6ZSBhbmQgbGF5b3V0IC0gNSBvcHRpb25zKQotLy8gIC1WQyAob24gb3Igb2ZmLCBjaGFuZ2VzIG5hbWUgbWFuZ2xpbmcpCi0vLyAgLVZsIChvbiBvciBvZmYsIGNoYW5nZXMgc3RydWN0IGxheW91dCkuCi0KLS8vICBJbiBhZGRpdGlvbiB0aGUgZm9sbG93aW5nIHdhcm5pbmdzIGFyZSBzdWZmaWNpZW50bHkgYW5ub3lpbmcgKGFuZAotLy8gIHVuZml4YWJsZSkgdG8gaGF2ZSB0aGVtIHR1cm5lZCBvZmYgYnkgZGVmYXVsdDoKLS8vCi0vLyAgODAyNyAtIGZ1bmN0aW9ucyBjb250YWluaW5nIFtmb3J8d2hpbGVdIGxvb3BzIGFyZSBub3QgZXhwYW5kZWQgaW5saW5lCi0vLyAgODAyNiAtIGZ1bmN0aW9ucyB0YWtpbmcgY2xhc3MgYnkgdmFsdWUgYXJndW1lbnRzIGFyZSBub3QgZXhwYW5kZWQgaW5saW5lCi0KLSNwcmFnbWEgbm9wdXNob3B0d2FybgotIyAgcHJhZ21hIG9wdGlvbiBwdXNoIC1hOCAtVngtIC1WZS0gLWItIC1wYyAtVm12IC1WQy0gLVZsLSAtdy04MDI3IC13LTgwMjYKLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2FiaS9ib3JsYW5kX3N1ZmZpeC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9hYmkvYm9ybGFuZF9zdWZmaXguaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NDA1MzVmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2FiaS9ib3JsYW5kX3N1ZmZpeC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMy4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jICBwcmFnbWEgb3B0aW9uIHBvcAotI3ByYWdtYSBub3B1c2hvcHR3YXJuCi0KLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvYWJpL21zdmNfcHJlZml4LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2FiaS9tc3ZjX3ByZWZpeC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3ZjA2Y2QuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvYWJpL21zdmNfcHJlZml4LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAzLiAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vCi0vLyBCb29zdCBiaW5hcmllcyBhcmUgYnVpbHQgd2l0aCB0aGUgY29tcGlsZXIncyBkZWZhdWx0IEFCSSBzZXR0aW5ncywKLS8vIGlmIHRoZSB1c2VyIGNoYW5nZXMgdGhlaXIgZGVmYXVsdCBhbGlnbm1lbnQgaW4gdGhlIFZTIElERSB0aGVuIHRoZWlyCi0vLyBjb2RlIHdpbGwgbm8gbG9uZ2VyIGJlIGJpbmFyeSBjb21wYXRpYmxlIHdpdGggdGhlIGJqYW0gYnVpbHQgYmluYXJpZXMKLS8vIHVubGVzcyB0aGlzIGhlYWRlciBpcyBpbmNsdWRlZCB0byBmb3JjZSBCb29zdCBjb2RlIGludG8gYSBjb25zaXN0ZW50IEFCSS4KLS8vCi0vLyBOb3RlIHRoYXQgaW5jbHVzaW9uIG9mIHRoaXMgaGVhZGVyIGlzIG9ubHkgbmVjZXNzYXJ5IGZvciBsaWJyYXJpZXMgd2l0aCAKLS8vIHNlcGFyYXRlIHNvdXJjZSwgaGVhZGVyIG9ubHkgbGlicmFyaWVzIERPIE5PVCBuZWVkIHRoaXMgYXMgbG9uZyBhcyBhbGwKLS8vIHRyYW5zbGF0aW9uIHVuaXRzIGFyZSBidWlsdCB3aXRoIHRoZSBzYW1lIG9wdGlvbnMuCi0vLwotI2lmIGRlZmluZWQoX01fWDY0KQotIyAgcHJhZ21hIHBhY2socHVzaCwxNikKLSNlbHNlCi0jICBwcmFnbWEgcGFjayhwdXNoLDgpCi0jZW5kaWYKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9hYmkvbXN2Y19zdWZmaXguaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvYWJpL21zdmNfc3VmZml4LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTY0ZDc4My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9hYmkvbXN2Y19zdWZmaXguaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMy4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jcHJhZ21hIHBhY2socG9wKQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2FiaV9wcmVmaXguaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvYWJpX3ByZWZpeC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxMjk5ZWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvYWJpX3ByZWZpeC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi0vLyAgYWJpX3ByZWZpeCBoZWFkZXIgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAoYykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAzCi0gICAKLS8vIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotI2lmbmRlZiBORE5CT09TVF9DT05GSUdfQUJJX1BSRUZJWF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX0NPTkZJR19BQklfUFJFRklYX0hQUAotI2Vsc2UKLSMgZXJyb3IgZG91YmxlIGluY2x1c2lvbiBvZiBoZWFkZXIgbmRuYm9vc3QvY29uZmlnL2FiaV9wcmVmaXguaHBwIGlzIGFuIGVycm9yCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLS8vIHRoaXMgbXVzdCBvY2N1ciBhZnRlciBhbGwgb3RoZXIgaW5jbHVkZXMgYW5kIGJlZm9yZSBhbnkgY29kZSBhcHBlYXJzOgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoIF9fQk9STEFORENfXyApCi0jcHJhZ21hIG5vcHVzaG9wdHdhcm4KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9hYmlfc3VmZml4LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2FiaV9zdWZmaXguaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZDY1YjgzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2FiaV9zdWZmaXguaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotLy8gIGFiaV9zdWZmZml4IGhlYWRlciAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vIChjKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDMKLSAgIAotLy8gVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLyBUaGlzIGhlYWRlciBzaG91bGQgYmUgI2luY2x1ZGVkIEFGVEVSIGNvZGUgdGhhdCB3YXMgcHJlY2VkZWQgYnkgYSAjaW5jbHVkZQotLy8gPG5kbmJvb3N0L2NvbmZpZy9hYmlfcHJlZml4LmhwcD4uCi0KLSNpZm5kZWYgTkROQk9PU1RfQ09ORklHX0FCSV9QUkVGSVhfSFBQCi0jIGVycm9yIEhlYWRlciBuZG5ib29zdC9jb25maWcvYWJpX3N1ZmZpeC5ocHAgbXVzdCBvbmx5IGJlIHVzZWQgYWZ0ZXIgbmRuYm9vc3QvY29uZmlnL2FiaV9wcmVmaXguaHBwCi0jZWxzZQotIyB1bmRlZiBORE5CT09TVF9DT05GSUdfQUJJX1BSRUZJWF9IUFAKLSNlbmRpZgotCi0vLyB0aGUgc3VmZml4IGhlYWRlciBvY2N1cnMgYWZ0ZXIgYWxsIG9mIG91ciBjb2RlOgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoIF9fQk9STEFORENfXyApCi0jcHJhZ21hIG5vcHVzaG9wdHdhcm4KLSNlbmRpZgotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2F1dG9fbGluay5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9hdXRvX2xpbmsuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NWNiNGFiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2F1dG9fbGluay5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MjMgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDMuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIGF1dG9fbGluay5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IEF1dG9tYXRpYyBsaWJyYXJ5IGluY2x1c2lvbiBmb3IgQm9ybGFuZC9NaWNyb3NvZnQgY29tcGlsZXJzLgotICAqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi1VU0FHRToKLX5+fn5+fgotCi1CZWZvcmUgaW5jbHVkaW5nIHRoaXMgaGVhZGVyIHlvdSBtdXN0IGRlZmluZSBvbmUgb3IgbW9yZSBvZiBkZWZpbmUgdGhlIGZvbGxvd2luZyBtYWNyb3M6Ci0KLU5ETkJPT1NUX0xJQl9OQU1FOiAgICAgICAgICAgUmVxdWlyZWQ6IEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGJhc2VuYW1lIG9mIHRoZSBsaWJyYXJ5LAotICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZXhhbXBsZSBib29zdF9yZWdleC4KLU5ETkJPT1NUX0xJQl9UT09MU0VUOiAgICAgICAgT3B0aW9uYWw6IHRoZSBiYXNlIG5hbWUgb2YgdGhlIHRvb2xzZXQuCi1ORE5CT09TVF9EWU5fTElOSzogICAgICAgICAgIE9wdGlvbmFsOiB3aGVuIHNldCBsaW5rIHRvIGRsbCByYXRoZXIgdGhhbiBzdGF0aWMgbGlicmFyeS4KLU5ETkJPT1NUX0xJQl9ESUFHTk9TVElDOiAgICAgT3B0aW9uYWw6IHdoZW4gc2V0IHRoZSBoZWFkZXIgd2lsbCBwcmludCBvdXQgdGhlIG5hbWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIGxpYnJhcnkgc2VsZWN0ZWQgKHVzZWZ1bCBmb3IgZGVidWdnaW5nKS4KLU5ETkJPT1NUX0FVVE9fTElOS19OT01BTkdMRTogU3BlY2lmaWVzIHRoYXQgd2Ugc2hvdWxkIGxpbmsgdG8gTkROQk9PU1RfTElCX05BTUUubGliLAotICAgICAgICAgICAgICAgICAgICAgICAgICByYXRoZXIgdGhhbiBhIG1hbmdsZWQtbmFtZSB2ZXJzaW9uLgotTkROQk9PU1RfQVVUT19MSU5LX1RBR0dFRDogICBTcGVjaWZpZXMgdGhhdCB3ZSBsaW5rIHRvIGxpYnJhcmllcyBidWlsdCB3aXRoIHRoZSAtLWxheW91dD10YWdnZWQgb3B0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIGVzc2VudGlhbGx5IHRoZSBzYW1lIGFzIHRoZSBkZWZhdWx0IG5hbWUtbWFuZ2xlZCB2ZXJzaW9uLCBidXQgd2l0aG91dAotICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgY29tcGlsZXIgbmFtZSBhbmQgdmVyc2lvbiwgb3IgdGhlIEJvb3N0IHZlcnNpb24uICBKdXN0IHRoZSBidWlsZCBvcHRpb25zLgotCi1UaGVzZSBtYWNyb3Mgd2lsbCBiZSB1bmRlZidlZCBhdCB0aGUgZW5kIG9mIHRoZSBoZWFkZXIsIGZ1cnRoZXIgdGhpcyBoZWFkZXIKLWhhcyBubyBpbmNsdWRlIGd1YXJkcyAtIHNvIGJlIHN1cmUgdG8gaW5jbHVkZSBpdCBvbmx5IG9uY2UgZnJvbSB5b3VyIGxpYnJhcnkhCi0KLUFsZ29yaXRobToKLX5+fn5+fn5+fn4KLQotTGlicmFyaWVzIGZvciBCb3JsYW5kIGFuZCBNaWNyb3NvZnQgY29tcGlsZXJzIGFyZSBhdXRvbWF0aWNhbGx5Ci1zZWxlY3RlZCBoZXJlLCB0aGUgbmFtZSBvZiB0aGUgbGliIGlzIHNlbGVjdGVkIGFjY29yZGluZyB0byB0aGUgZm9sbG93aW5nCi1mb3JtdWxhOgotCi1ORE5CT09TVF9MSUJfUFJFRklYCi0gICArIE5ETkJPT1NUX0xJQl9OQU1FCi0gICArICJfIgotICAgKyBORE5CT09TVF9MSUJfVE9PTFNFVAotICAgKyBORE5CT09TVF9MSUJfVEhSRUFEX09QVAotICAgKyBORE5CT09TVF9MSUJfUlRfT1BUCi0gICAiLSIKLSAgICsgTkROQk9PU1RfTElCX1ZFUlNJT04KLQotVGhlc2UgYXJlIGRlZmluZWQgYXM6Ci0KLU5ETkJPT1NUX0xJQl9QUkVGSVg6ICAgICAibGliIiBmb3Igc3RhdGljIGxpYnJhcmllcyBvdGhlcndpc2UgIiIuCi0KLU5ETkJPT1NUX0xJQl9OQU1FOiAgICAgICBUaGUgYmFzZSBuYW1lIG9mIHRoZSBsaWIgKCBmb3IgZXhhbXBsZSBib29zdF9yZWdleCkuCi0KLU5ETkJPT1NUX0xJQl9UT09MU0VUOiAgICBUaGUgY29tcGlsZXIgdG9vbHNldCBuYW1lICh2YzYsIHZjNywgYmNiNSBldGMpLgotCi1ORE5CT09TVF9MSUJfVEhSRUFEX09QVDogIi1tdCIgZm9yIG11bHRpdGhyZWFkIGJ1aWxkcywgb3RoZXJ3aXNlIG5vdGhpbmcuCi0KLU5ETkJPT1NUX0xJQl9SVF9PUFQ6ICAgICBBIHN1ZmZpeCB0aGF0IGluZGljYXRlcyB0aGUgcnVudGltZSBsaWJyYXJ5IHVzZWQsCi0gICAgICAgICAgICAgICAgICAgICAgY29udGFpbnMgb25lIG9yIG1vcmUgb2YgdGhlIGZvbGxvd2luZyBsZXR0ZXJzIGFmdGVyCi0gICAgICAgICAgICAgICAgICAgICAgYSBoeXBoZW46Ci0KLSAgICAgICAgICAgICAgICAgICAgICBzICAgICAgc3RhdGljIHJ1bnRpbWUgKGR5bmFtaWMgaWYgbm90IHByZXNlbnQpLgotICAgICAgICAgICAgICAgICAgICAgIGcgICAgICBkZWJ1Zy9kaWFnbm9zdGljIHJ1bnRpbWUgKHJlbGVhc2UgaWYgbm90IHByZXNlbnQpLgotICAgICAgICAgICAgICAgICAgICAgIHkgICAgICBQeXRob24gZGVidWcvZGlhZ25vc3RpYyBydW50aW1lIChyZWxlYXNlIGlmIG5vdCBwcmVzZW50KS4KLSAgICAgICAgICAgICAgICAgICAgICBkICAgICAgZGVidWcgYnVpbGQgKHJlbGVhc2UgaWYgbm90IHByZXNlbnQpLgotICAgICAgICAgICAgICAgICAgICAgIHAgICAgICBTVExwb3J0IGJ1aWxkLgotICAgICAgICAgICAgICAgICAgICAgIG4gICAgICBTVExwb3J0IGJ1aWxkIHdpdGhvdXQgaXRzIElPU3RyZWFtcy4KLQotTkROQk9PU1RfTElCX1ZFUlNJT046ICAgIFRoZSBCb29zdCB2ZXJzaW9uLCBpbiB0aGUgZm9ybSB4X3ksIGZvciBCb29zdCB2ZXJzaW9uIHgueS4KLQotCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotIyAgaWZuZGVmIE5ETkJPT1NUX0NPTkZJR19IUFAKLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jICBlbmRpZgotI2VsaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRlZmluZWQoX19NV0VSS1NfXykgJiYgIWRlZmluZWQoX19FREdfVkVSU0lPTl9fKQotLy8KLS8vIEMgbGFuZ3VhZ2UgY29tcGF0YWJpbGl0eSAobm8sIGhvbmVzdGx5KQotLy8KLSMgIGRlZmluZSBORE5CT09TVF9NU1ZDIF9NU0NfVkVSCi0jICBkZWZpbmUgTkROQk9PU1RfU1RSSU5HSVpFKFgpIE5ETkJPT1NUX0RPX1NUUklOR0laRShYKQotIyAgZGVmaW5lIE5ETkJPT1NUX0RPX1NUUklOR0laRShYKSAjWAotI2VuZGlmCi0vLwotLy8gT25seSBpbmNsdWRlIHdoYXQgZm9sbG93cyBmb3Iga25vd24gYW5kIHN1cHBvcnRlZCBjb21waWxlcnM6Ci0vLwotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgXAotICAgIHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKSBcCi0gICAgfHwgKGRlZmluZWQoX19NV0VSS1NfXykgJiYgZGVmaW5lZChfV0lOMzIpICYmIChfX01XRVJLU19fID49IDB4MzAwMCkpIFwKLSAgICB8fCAoZGVmaW5lZChfX0lDTCkgJiYgZGVmaW5lZChfTVNDX0VYVEVOU0lPTlMpICYmIChfTVNDX1ZFUiA+PSAxMjAwKSkKLQotI2lmbmRlZiBORE5CT09TVF9WRVJTSU9OX0hQUAotIyAgaW5jbHVkZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9MSUJfTkFNRQotIyAgZXJyb3IgIk1hY3JvIE5ETkJPT1NUX0xJQl9OQU1FIG5vdCBzZXQgKGludGVybmFsIGVycm9yKSIKLSNlbmRpZgotCi0vLwotLy8gZXJyb3IgY2hlY2s6Ci0vLwotI2lmIGRlZmluZWQoX19NU1ZDX1JVTlRJTUVfQ0hFQ0tTKSAmJiAhZGVmaW5lZChfREVCVUcpCi0jICBwcmFnbWEgbWVzc2FnZSgiVXNpbmcgdGhlIC9SVEMgb3B0aW9uIHdpdGhvdXQgc3BlY2lmeWluZyBhIGRlYnVnIHJ1bnRpbWUgd2lsbCBsZWFkIHRvIGxpbmtlciBlcnJvcnMiKQotIyAgcHJhZ21hIG1lc3NhZ2UoIkhpbnQ6IGdvIHRvIHRoZSBjb2RlIGdlbmVyYXRpb24gb3B0aW9ucyBhbmQgc3dpdGNoIHRvIG9uZSBvZiB0aGUgZGVidWdnaW5nIHJ1bnRpbWVzIikKLSMgIGVycm9yICJJbmNvbXBhdGlibGUgYnVpbGQgb3B0aW9ucyIKLSNlbmRpZgotLy8KLS8vIHNlbGVjdCB0b29sc2V0IGlmIG5vdCBkZWZpbmVkIGFscmVhZHk6Ci0vLwotI2lmbmRlZiBORE5CT09TVF9MSUJfVE9PTFNFVAotIyAgaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiAoTkROQk9PU1RfTVNWQyA8IDEyMDApCi0gICAgLy8gTm90ZTogbm8gY29tcGlsZXJzIGJlZm9yZSAxMjAwIGFyZSBzdXBwb3J0ZWQKLSMgIGVsaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiAoTkROQk9PU1RfTVNWQyA8IDEzMDApCi0KLSMgICAgaWZkZWYgVU5ERVJfQ0UKLSAgICAgICAvLyBlVkM0OgotIyAgICAgIGRlZmluZSBORE5CT09TVF9MSUJfVE9PTFNFVCAiZXZjNCIKLSMgICAgZWxzZQotICAgICAgIC8vIHZjNjoKLSMgICAgICBkZWZpbmUgTkROQk9PU1RfTElCX1RPT0xTRVQgInZjNiIKLSMgICAgZW5kaWYKLQotIyAgZWxpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIChORE5CT09TVF9NU1ZDIDwgMTMxMCkKLQotICAgICAvLyB2Yzc6Ci0jICAgIGRlZmluZSBORE5CT09TVF9MSUJfVE9PTFNFVCAidmM3IgotCi0jICBlbGlmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgKE5ETkJPT1NUX01TVkMgPCAxNDAwKQotCi0gICAgIC8vIHZjNzE6Ci0jICAgIGRlZmluZSBORE5CT09TVF9MSUJfVE9PTFNFVCAidmM3MSIKLQotIyAgZWxpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIChORE5CT09TVF9NU1ZDIDwgMTUwMCkKLQotICAgICAvLyB2YzgwOgotIyAgICBkZWZpbmUgTkROQk9PU1RfTElCX1RPT0xTRVQgInZjODAiCi0KLSMgIGVsaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiAoTkROQk9PU1RfTVNWQyA8IDE2MDApCi0KLSAgICAgLy8gdmM5MDoKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9UT09MU0VUICJ2YzkwIgotCi0jICBlbGlmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgKE5ETkJPT1NUX01TVkMgPCAxNzAwKQotCi0gICAgIC8vIHZjMTA6Ci0jICAgIGRlZmluZSBORE5CT09TVF9MSUJfVE9PTFNFVCAidmMxMDAiCi0KLSMgIGVsaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotCi0gICAgIC8vIHZjMTE6Ci0jICAgIGRlZmluZSBORE5CT09TVF9MSUJfVE9PTFNFVCAidmMxMTAiCi0KLSMgIGVsaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pCi0KLSAgICAgLy8gQ0J1aWxkZXIgNjoKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9UT09MU0VUICJiY2IiCi0KLSMgIGVsaWYgZGVmaW5lZChfX0lDTCkKLQotICAgICAvLyBJbnRlbCBDKyssIG5vIHZlcnNpb24gbnVtYmVyOgotIyAgICBkZWZpbmUgTkROQk9PU1RfTElCX1RPT0xTRVQgIml3IgotCi0jICBlbGlmIGRlZmluZWQoX19NV0VSS1NfXykgJiYgKF9fTVdFUktTX18gPD0gMHgzMUZGICkKLQotICAgICAvLyBNZXRyb3dlcmtzIENvZGVXYXJyaW9yIDgueAotIyAgICBkZWZpbmUgTkROQk9PU1RfTElCX1RPT0xTRVQgImN3OCIKLQotIyAgZWxpZiBkZWZpbmVkKF9fTVdFUktTX18pICYmIChfX01XRVJLU19fIDw9IDB4MzJGRiApCi0KLSAgICAgLy8gTWV0cm93ZXJrcyBDb2RlV2FycmlvciA5LngKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9UT09MU0VUICJjdzkiCi0KLSMgIGVuZGlmCi0jZW5kaWYgLy8gTkROQk9PU1RfTElCX1RPT0xTRVQKLQotLy8KLS8vIHNlbGVjdCB0aHJlYWQgb3B0OgotLy8KLSNpZiBkZWZpbmVkKF9NVCkgfHwgZGVmaW5lZChfX01UX18pCi0jICBkZWZpbmUgTkROQk9PU1RfTElCX1RIUkVBRF9PUFQgIi1tdCIKLSNlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfTElCX1RIUkVBRF9PUFQKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX01XRVJLU19fKQotCi0jICBpZmRlZiBfRExMCi0KLSMgICAgIGlmIChkZWZpbmVkKF9fU0dJX1NUTF9QT1JUKSB8fCBkZWZpbmVkKF9TVExQT1JUX1ZFUlNJT04pKSAmJiAoZGVmaW5lZChfU1RMUF9PV05fSU9TVFJFQU1TKSB8fCBkZWZpbmVkKF9fU1RMX09XTl9JT1NUUkVBTVMpKQotCi0jICAgICAgICBpZiBkZWZpbmVkKF9ERUJVRykgJiYgKGRlZmluZWQoX19TVExfREVCVUcpIHx8IGRlZmluZWQoX1NUTFBfREVCVUcpKVwKLSAgICAgICAgICAgICAgICYmIGRlZmluZWQoTkROQk9PU1RfREVCVUdfUFlUSE9OKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0xJTktJTkdfUFlUSE9OKQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9MSUJfUlRfT1BUICItZ3lkcCIKLSMgICAgICAgIGVsaWYgZGVmaW5lZChfREVCVUcpICYmIChkZWZpbmVkKF9fU1RMX0RFQlVHKSB8fCBkZWZpbmVkKF9TVExQX0RFQlVHKSkKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTElCX1JUX09QVCAiLWdkcCIKLSMgICAgICAgIGVsaWYgZGVmaW5lZChfREVCVUcpXAotICAgICAgICAgICAgICAgJiYgZGVmaW5lZChORE5CT09TVF9ERUJVR19QWVRIT04pICYmIGRlZmluZWQoTkROQk9PU1RfTElOS0lOR19QWVRIT04pCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9SVF9PUFQgIi1neWRwIgotIyAgICAgICAgICAgIHByYWdtYSBtZXNzYWdlKCJ3YXJuaW5nOiBTVExwb3J0IGRlYnVnIHZlcnNpb25zIGFyZSBidWlsdCB3aXRoIC9EX1NUTFBfREVCVUc9MSIpCi0jICAgICAgICAgICAgZXJyb3IgIkJ1aWxkIG9wdGlvbnMgYXJlbid0IGNvbXBhdGlibGUgd2l0aCBwcmUtYnVpbHQgbGlicmFyaWVzIgotIyAgICAgICAgZWxpZiBkZWZpbmVkKF9ERUJVRykKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTElCX1JUX09QVCAiLWdkcCIKLSMgICAgICAgICAgICBwcmFnbWEgbWVzc2FnZSgid2FybmluZzogU1RMcG9ydCBkZWJ1ZyB2ZXJzaW9ucyBhcmUgYnVpbHQgd2l0aCAvRF9TVExQX0RFQlVHPTEiKQotIyAgICAgICAgICAgIGVycm9yICJCdWlsZCBvcHRpb25zIGFyZW4ndCBjb21wYXRpYmxlIHdpdGggcHJlLWJ1aWx0IGxpYnJhcmllcyIKLSMgICAgICAgIGVsc2UKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTElCX1JUX09QVCAiLXAiCi0jICAgICAgICBlbmRpZgotCi0jICAgICBlbGlmIGRlZmluZWQoX19TR0lfU1RMX1BPUlQpIHx8IGRlZmluZWQoX1NUTFBPUlRfVkVSU0lPTikKLQotIyAgICAgICAgaWYgZGVmaW5lZChfREVCVUcpICYmIChkZWZpbmVkKF9fU1RMX0RFQlVHKSB8fCBkZWZpbmVkKF9TVExQX0RFQlVHKSlcCi0gICAgICAgICAgICAgICAmJiBkZWZpbmVkKE5ETkJPT1NUX0RFQlVHX1BZVEhPTikgJiYgZGVmaW5lZChORE5CT09TVF9MSU5LSU5HX1BZVEhPTikKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTElCX1JUX09QVCAiLWd5ZHBuIgotIyAgICAgICAgZWxpZiBkZWZpbmVkKF9ERUJVRykgJiYgKGRlZmluZWQoX19TVExfREVCVUcpIHx8IGRlZmluZWQoX1NUTFBfREVCVUcpKQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9MSUJfUlRfT1BUICItZ2RwbiIKLSMgICAgICAgIGVsaWYgZGVmaW5lZChfREVCVUcpXAotICAgICAgICAgICAgICAgJiYgZGVmaW5lZChORE5CT09TVF9ERUJVR19QWVRIT04pICYmIGRlZmluZWQoTkROQk9PU1RfTElOS0lOR19QWVRIT04pCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9SVF9PUFQgIi1neWRwbiIKLSMgICAgICAgICAgICBwcmFnbWEgbWVzc2FnZSgid2FybmluZzogU1RMcG9ydCBkZWJ1ZyB2ZXJzaW9ucyBhcmUgYnVpbHQgd2l0aCAvRF9TVExQX0RFQlVHPTEiKQotIyAgICAgICAgICAgIGVycm9yICJCdWlsZCBvcHRpb25zIGFyZW4ndCBjb21wYXRpYmxlIHdpdGggcHJlLWJ1aWx0IGxpYnJhcmllcyIKLSMgICAgICAgIGVsaWYgZGVmaW5lZChfREVCVUcpCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9SVF9PUFQgIi1nZHBuIgotIyAgICAgICAgICAgIHByYWdtYSBtZXNzYWdlKCJ3YXJuaW5nOiBTVExwb3J0IGRlYnVnIHZlcnNpb25zIGFyZSBidWlsdCB3aXRoIC9EX1NUTFBfREVCVUc9MSIpCi0jICAgICAgICAgICAgZXJyb3IgIkJ1aWxkIG9wdGlvbnMgYXJlbid0IGNvbXBhdGlibGUgd2l0aCBwcmUtYnVpbHQgbGlicmFyaWVzIgotIyAgICAgICAgZWxzZQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9MSUJfUlRfT1BUICItcG4iCi0jICAgICAgICBlbmRpZgotCi0jICAgICBlbHNlCi0KLSMgICAgICAgIGlmIGRlZmluZWQoX0RFQlVHKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0RFQlVHX1BZVEhPTikgJiYgZGVmaW5lZChORE5CT09TVF9MSU5LSU5HX1BZVEhPTikKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTElCX1JUX09QVCAiLWd5ZCIKLSMgICAgICAgIGVsaWYgZGVmaW5lZChfREVCVUcpCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9SVF9PUFQgIi1nZCIKLSMgICAgICAgIGVsc2UKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTElCX1JUX09QVAotIyAgICAgICAgZW5kaWYKLQotIyAgICAgZW5kaWYKLQotIyAgZWxzZQotCi0jICAgICBpZiAoZGVmaW5lZChfX1NHSV9TVExfUE9SVCkgfHwgZGVmaW5lZChfU1RMUE9SVF9WRVJTSU9OKSkgJiYgKGRlZmluZWQoX1NUTFBfT1dOX0lPU1RSRUFNUykgfHwgZGVmaW5lZChfX1NUTF9PV05fSU9TVFJFQU1TKSkKLQotIyAgICAgICAgaWYgZGVmaW5lZChfREVCVUcpICYmIChkZWZpbmVkKF9fU1RMX0RFQlVHKSB8fCBkZWZpbmVkKF9TVExQX0RFQlVHKSlcCi0gICAgICAgICAgICAgICAmJiBkZWZpbmVkKE5ETkJPT1NUX0RFQlVHX1BZVEhPTikgJiYgZGVmaW5lZChORE5CT09TVF9MSU5LSU5HX1BZVEhPTikKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTElCX1JUX09QVCAiLXNneWRwIgotIyAgICAgICAgZWxpZiBkZWZpbmVkKF9ERUJVRykgJiYgKGRlZmluZWQoX19TVExfREVCVUcpIHx8IGRlZmluZWQoX1NUTFBfREVCVUcpKQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9MSUJfUlRfT1BUICItc2dkcCIKLSMgICAgICAgIGVsaWYgZGVmaW5lZChfREVCVUcpXAotICAgICAgICAgICAgICAgJiYgZGVmaW5lZChORE5CT09TVF9ERUJVR19QWVRIT04pICYmIGRlZmluZWQoTkROQk9PU1RfTElOS0lOR19QWVRIT04pCi0jICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9MSUJfUlRfT1BUICItc2d5ZHAiCi0jICAgICAgICAgICAgcHJhZ21hIG1lc3NhZ2UoIndhcm5pbmc6IFNUTHBvcnQgZGVidWcgdmVyc2lvbnMgYXJlIGJ1aWx0IHdpdGggL0RfU1RMUF9ERUJVRz0xIikKLSMgICAgICAgICAgICBlcnJvciAiQnVpbGQgb3B0aW9ucyBhcmVuJ3QgY29tcGF0aWJsZSB3aXRoIHByZS1idWlsdCBsaWJyYXJpZXMiCi0jICAgICAgICBlbGlmIGRlZmluZWQoX0RFQlVHKQotIyAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTElCX1JUX09QVCAiLXNnZHAiCi0jICAgICAgICAgICAgcHJhZ21hIG1lc3NhZ2UoIndhcm5pbmc6IFNUTHBvcnQgZGVidWcgdmVyc2lvbnMgYXJlIGJ1aWx0IHdpdGggL0RfU1RMUF9ERUJVRz0xIikKLSMgICAgICAgICAgICBlcnJvciAiQnVpbGQgb3B0aW9ucyBhcmVuJ3QgY29tcGF0aWJsZSB3aXRoIHByZS1idWlsdCBsaWJyYXJpZXMiCi0jICAgICAgICBlbHNlCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9SVF9PUFQgIi1zcCIKLSMgICAgICAgIGVuZGlmCi0KLSMgICAgIGVsaWYgZGVmaW5lZChfX1NHSV9TVExfUE9SVCkgfHwgZGVmaW5lZChfU1RMUE9SVF9WRVJTSU9OKQotCi0jICAgICAgICBpZiBkZWZpbmVkKF9ERUJVRykgJiYgKGRlZmluZWQoX19TVExfREVCVUcpIHx8IGRlZmluZWQoX1NUTFBfREVCVUcpKVwKLSAgICAgICAgICAgICAgICYmIGRlZmluZWQoTkROQk9PU1RfREVCVUdfUFlUSE9OKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0xJTktJTkdfUFlUSE9OKQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9MSUJfUlRfT1BUICItc2d5ZHBuIgotIyAgICAgICAgZWxpZiBkZWZpbmVkKF9ERUJVRykgJiYgKGRlZmluZWQoX19TVExfREVCVUcpIHx8IGRlZmluZWQoX1NUTFBfREVCVUcpKQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9MSUJfUlRfT1BUICItc2dkcG4iCi0jICAgICAgICBlbGlmIGRlZmluZWQoX0RFQlVHKVwKLSAgICAgICAgICAgICAgICYmIGRlZmluZWQoTkROQk9PU1RfREVCVUdfUFlUSE9OKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0xJTktJTkdfUFlUSE9OKQotIyAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTElCX1JUX09QVCAiLXNneWRwbiIKLSMgICAgICAgICAgICBwcmFnbWEgbWVzc2FnZSgid2FybmluZzogU1RMcG9ydCBkZWJ1ZyB2ZXJzaW9ucyBhcmUgYnVpbHQgd2l0aCAvRF9TVExQX0RFQlVHPTEiKQotIyAgICAgICAgICAgIGVycm9yICJCdWlsZCBvcHRpb25zIGFyZW4ndCBjb21wYXRpYmxlIHdpdGggcHJlLWJ1aWx0IGxpYnJhcmllcyIKLSMgICAgICAgIGVsaWYgZGVmaW5lZChfREVCVUcpCi0jICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9MSUJfUlRfT1BUICItc2dkcG4iCi0jICAgICAgICAgICAgcHJhZ21hIG1lc3NhZ2UoIndhcm5pbmc6IFNUTHBvcnQgZGVidWcgdmVyc2lvbnMgYXJlIGJ1aWx0IHdpdGggL0RfU1RMUF9ERUJVRz0xIikKLSMgICAgICAgICAgICBlcnJvciAiQnVpbGQgb3B0aW9ucyBhcmVuJ3QgY29tcGF0aWJsZSB3aXRoIHByZS1idWlsdCBsaWJyYXJpZXMiCi0jICAgICAgICBlbHNlCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9SVF9PUFQgIi1zcG4iCi0jICAgICAgICBlbmRpZgotCi0jICAgICBlbHNlCi0KLSMgICAgICAgIGlmIGRlZmluZWQoX0RFQlVHKVwKLSAgICAgICAgICAgICAgICYmIGRlZmluZWQoTkROQk9PU1RfREVCVUdfUFlUSE9OKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0xJTktJTkdfUFlUSE9OKQotIyAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTElCX1JUX09QVCAiLXNneWQiCi0jICAgICAgICBlbGlmIGRlZmluZWQoX0RFQlVHKQotIyAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTElCX1JUX09QVCAiLXNnZCIKLSMgICAgICAgIGVsc2UKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTElCX1JUX09QVCAiLXMiCi0jICAgICAgICBlbmRpZgotCi0jICAgICBlbmRpZgotCi0jICBlbmRpZgotCi0jZWxpZiBkZWZpbmVkKF9fQk9STEFORENfXykKLQotLy8KLS8vIGZpZ3VyZSBvdXQgd2hldGhlciB3ZSB3YW50IHRoZSBkZWJ1ZyBidWlsZHMgb3Igbm90OgotLy8KLSNpZiBfX0JPUkxBTkRDX18gPiAweDU2MQotI3ByYWdtYSBkZWZpbmVvbm9wdGlvbiBORE5CT09TVF9CT1JMQU5EX0RFQlVHIC12Ci0jZW5kaWYKLS8vCi0vLyBzYW5pdHkgY2hlY2s6Ci0vLwotI2lmIGRlZmluZWQoX19TVExfREVCVUcpIHx8IGRlZmluZWQoX1NUTFBfREVCVUcpCi0jZXJyb3IgIlByZS1idWlsdCB2ZXJzaW9ucyBvZiB0aGUgQm9vc3QgbGlicmFyaWVzIGFyZSBub3QgcHJvdmlkZWQgaW4gU1RMcG9ydC1kZWJ1ZyBmb3JtIgotI2VuZGlmCi0KLSMgIGlmZGVmIF9SVExETEwKLQotIyAgICAgaWYgZGVmaW5lZChORE5CT09TVF9CT1JMQU5EX0RFQlVHKVwKLSAgICAgICAgICAgICAgICYmIGRlZmluZWQoTkROQk9PU1RfREVCVUdfUFlUSE9OKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0xJTktJTkdfUFlUSE9OKQotIyAgICAgICAgIGRlZmluZSBORE5CT09TVF9MSUJfUlRfT1BUICIteWQiCi0jICAgICBlbGlmIGRlZmluZWQoTkROQk9PU1RfQk9STEFORF9ERUJVRykKLSMgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTElCX1JUX09QVCAiLWQiCi0jICAgICBlbGlmIGRlZmluZWQoTkROQk9PU1RfREVCVUdfUFlUSE9OKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0xJTktJTkdfUFlUSE9OKQotIyAgICAgICAgIGRlZmluZSBORE5CT09TVF9MSUJfUlRfT1BUIC15Ci0jICAgICBlbHNlCi0jICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9SVF9PUFQKLSMgICAgIGVuZGlmCi0KLSMgIGVsc2UKLQotIyAgICAgaWYgZGVmaW5lZChORE5CT09TVF9CT1JMQU5EX0RFQlVHKVwKLSAgICAgICAgICAgICAgICYmIGRlZmluZWQoTkROQk9PU1RfREVCVUdfUFlUSE9OKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0xJTktJTkdfUFlUSE9OKQotIyAgICAgICAgIGRlZmluZSBORE5CT09TVF9MSUJfUlRfT1BUICItc3lkIgotIyAgICAgZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0JPUkxBTkRfREVCVUcpCi0jICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9SVF9PUFQgIi1zZCIKLSMgICAgIGVsaWYgZGVmaW5lZChORE5CT09TVF9ERUJVR19QWVRIT04pICYmIGRlZmluZWQoTkROQk9PU1RfTElOS0lOR19QWVRIT04pCi0jICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9SVF9PUFQgIi1zeSIKLSMgICAgIGVsc2UKLSMgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTElCX1JUX09QVCAiLXMiCi0jICAgICBlbmRpZgotCi0jICBlbmRpZgotCi0jZW5kaWYKLQotLy8KLS8vIHNlbGVjdCBsaW5rYWdlIG9wdDoKLS8vCi0jaWYgKGRlZmluZWQoX0RMTCkgfHwgZGVmaW5lZChfUlRMRExMKSkgJiYgZGVmaW5lZChORE5CT09TVF9EWU5fTElOSykKLSMgIGRlZmluZSBORE5CT09TVF9MSUJfUFJFRklYCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0RZTl9MSU5LKQotIyAgZXJyb3IgIk1peGluZyBhIGRsbCBib29zdCBsaWJyYXJ5IHdpdGggYSBzdGF0aWMgcnVudGltZSBpcyBhIHJlYWxseSBiYWQgaWRlYS4uLiIKLSNlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfTElCX1BSRUZJWCAibGliIgotI2VuZGlmCi0KLS8vCi0vLyBub3cgaW5jbHVkZSB0aGUgbGliOgotLy8KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0xJQl9OQU1FKSBcCi0gICAgICAmJiBkZWZpbmVkKE5ETkJPT1NUX0xJQl9QUkVGSVgpIFwKLSAgICAgICYmIGRlZmluZWQoTkROQk9PU1RfTElCX1RPT0xTRVQpIFwKLSAgICAgICYmIGRlZmluZWQoTkROQk9PU1RfTElCX1RIUkVBRF9PUFQpIFwKLSAgICAgICYmIGRlZmluZWQoTkROQk9PU1RfTElCX1JUX09QVCkgXAotICAgICAgJiYgZGVmaW5lZChORE5CT09TVF9MSUJfVkVSU0lPTikKLQotI2lmZGVmIE5ETkJPT1NUX0FVVE9fTElOS19UQUdHRUQKLSMgIHByYWdtYSBjb21tZW50KGxpYiwgTkROQk9PU1RfTElCX1BSRUZJWCBORE5CT09TVF9TVFJJTkdJWkUoTkROQk9PU1RfTElCX05BTUUpIE5ETkJPT1NUX0xJQl9USFJFQURfT1BUIE5ETkJPT1NUX0xJQl9SVF9PUFQgIi5saWIiKQotIyAgaWZkZWYgTkROQk9PU1RfTElCX0RJQUdOT1NUSUMKLSMgICAgIHByYWdtYSBtZXNzYWdlICgiTGlua2luZyB0byBsaWIgZmlsZTogIiBORE5CT09TVF9MSUJfUFJFRklYIE5ETkJPT1NUX1NUUklOR0laRShORE5CT09TVF9MSUJfTkFNRSkgTkROQk9PU1RfTElCX1RIUkVBRF9PUFQgTkROQk9PU1RfTElCX1JUX09QVCAiLmxpYiIpCi0jICBlbmRpZgotI2VsaWYgZGVmaW5lZChORE5CT09TVF9BVVRPX0xJTktfTk9NQU5HTEUpCi0jICBwcmFnbWEgY29tbWVudChsaWIsIE5ETkJPT1NUX1NUUklOR0laRShORE5CT09TVF9MSUJfTkFNRSkgIi5saWIiKQotIyAgaWZkZWYgTkROQk9PU1RfTElCX0RJQUdOT1NUSUMKLSMgICAgIHByYWdtYSBtZXNzYWdlICgiTGlua2luZyB0byBsaWIgZmlsZTogIiBORE5CT09TVF9TVFJJTkdJWkUoTkROQk9PU1RfTElCX05BTUUpICIubGliIikKLSMgIGVuZGlmCi0jZWxzZQotIyAgcHJhZ21hIGNvbW1lbnQobGliLCBORE5CT09TVF9MSUJfUFJFRklYIE5ETkJPT1NUX1NUUklOR0laRShORE5CT09TVF9MSUJfTkFNRSkgIi0iIE5ETkJPT1NUX0xJQl9UT09MU0VUIE5ETkJPT1NUX0xJQl9USFJFQURfT1BUIE5ETkJPT1NUX0xJQl9SVF9PUFQgIi0iIE5ETkJPT1NUX0xJQl9WRVJTSU9OICIubGliIikKLSMgIGlmZGVmIE5ETkJPT1NUX0xJQl9ESUFHTk9TVElDCi0jICAgICBwcmFnbWEgbWVzc2FnZSAoIkxpbmtpbmcgdG8gbGliIGZpbGU6ICIgTkROQk9PU1RfTElCX1BSRUZJWCBORE5CT09TVF9TVFJJTkdJWkUoTkROQk9PU1RfTElCX05BTUUpICItIiBORE5CT09TVF9MSUJfVE9PTFNFVCBORE5CT09TVF9MSUJfVEhSRUFEX09QVCBORE5CT09TVF9MSUJfUlRfT1BUICItIiBORE5CT09TVF9MSUJfVkVSU0lPTiAiLmxpYiIpCi0jICBlbmRpZgotI2VuZGlmCi0KLSNlbHNlCi0jICBlcnJvciAic29tZSByZXF1aXJlZCBtYWNyb3Mgd2hlcmUgbm90IGRlZmluZWQgKGludGVybmFsIGxvZ2ljIGVycm9yKS4iCi0jZW5kaWYKLQotCi0jZW5kaWYgLy8gX01TQ19WRVIgfHwgX19CT1JMQU5EQ19fCi0KLS8vCi0vLyBmaW5hbGx5IHVuZGVmIGFueSBtYWNyb3Mgd2UgbWF5IGhhdmUgc2V0OgotLy8KLSNpZmRlZiBORE5CT09TVF9MSUJfUFJFRklYCi0jICB1bmRlZiBORE5CT09TVF9MSUJfUFJFRklYCi0jZW5kaWYKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0xJQl9OQU1FKQotIyAgdW5kZWYgTkROQk9PU1RfTElCX05BTUUKLSNlbmRpZgotLy8gRG9uJ3QgdW5kZWYgdGhpcyBvbmU6IGl0IGNhbiBiZSBzZXQgYnkgdGhlIHVzZXIgYW5kIHNob3VsZCBiZSB0aGUgCi0vLyBzYW1lIGZvciBhbGwgbGlicmFyaWVzOgotLy8jaWYgZGVmaW5lZChORE5CT09TVF9MSUJfVE9PTFNFVCkKLS8vIyAgdW5kZWYgTkROQk9PU1RfTElCX1RPT0xTRVQKLS8vI2VuZGlmCi0jaWYgZGVmaW5lZChORE5CT09TVF9MSUJfVEhSRUFEX09QVCkKLSMgIHVuZGVmIE5ETkJPT1NUX0xJQl9USFJFQURfT1BUCi0jZW5kaWYKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0xJQl9SVF9PUFQpCi0jICB1bmRlZiBORE5CT09TVF9MSUJfUlRfT1BUCi0jZW5kaWYKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0xJQl9MSU5LX09QVCkKLSMgIHVuZGVmIE5ETkJPT1NUX0xJQl9MSU5LX09QVAotI2VuZGlmCi0jaWYgZGVmaW5lZChORE5CT09TVF9MSUJfREVCVUdfT1BUKQotIyAgdW5kZWYgTkROQk9PU1RfTElCX0RFQlVHX09QVAotI2VuZGlmCi0jaWYgZGVmaW5lZChORE5CT09TVF9EWU5fTElOSykKLSMgIHVuZGVmIE5ETkJPT1NUX0RZTl9MSU5LCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvYm9ybGFuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9ib3JsYW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzgyNjIzMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9ib3JsYW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4OCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMSAtIDIwMDMuCi0vLyAgKEMpIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAyIC0gMjAwMy4KLS8vICAoQykgQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyAgQm9ybGFuZCBDKysgY29tcGlsZXIgc2V0dXA6Ci0KLS8vCi0vLyB2ZXJzaW9ucyBjaGVjazoKLS8vIHdlIGRvbid0IHN1cHBvcnQgQm9ybGFuZCBwcmlvciB0byB2ZXJzaW9uIDUuNDoKLSNpZiBfX0JPUkxBTkRDX18gPCAweDU0MAotIyAgZXJyb3IgIkNvbXBpbGVyIG5vdCBzdXBwb3J0ZWQgb3IgY29uZmlndXJlZCAtIHBsZWFzZSByZWNvbmZpZ3VyZSIKLSNlbmRpZgotCi0vLyBsYXN0IGtub3duIGNvbXBpbGVyIHZlcnNpb246Ci0jaWYgKF9fQk9STEFORENfXyA+IDB4NjEzKQotLy8jICBpZiBkZWZpbmVkKE5ETkJPT1NUX0FTU0VSVF9DT05GSUcpCi0jICAgICBlcnJvciAiVW5rbm93biBjb21waWxlciB2ZXJzaW9uIC0gcGxlYXNlIHJ1biB0aGUgY29uZmlndXJlIHRlc3RzIGFuZCByZXBvcnQgdGhlIHJlc3VsdHMiCi0vLyMgIGVsc2UKLS8vIyAgICAgcHJhZ21hIG1lc3NhZ2UoICJVbmtub3duIGNvbXBpbGVyIHZlcnNpb24gLSBwbGVhc2UgcnVuIHRoZSBjb25maWd1cmUgdGVzdHMgYW5kIHJlcG9ydCB0aGUgcmVzdWx0cyIpCi0vLyMgIGVuZGlmCi0jZWxpZiAoX19CT1JMQU5EQ19fID09IDB4NjAwKQotIyAgZXJyb3IgIkNCdWlsZGVyWCBwcmV2aWV3IGNvbXBpbGVyIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQiCi0jZW5kaWYKLQotLy8KLS8vIFN1cHBvcnQgbWFjcm9zIHRvIGhlbHAgd2l0aCBzdGFuZGFyZCBsaWJyYXJ5IGRldGVjdGlvbgotI2lmIChfX0JPUkxBTkRDX18gPCAweDU2MCkgfHwgZGVmaW5lZChfVVNFX09MRF9SV19TVEwpCi0jICBkZWZpbmUgTkROQk9PU1RfQkNCX1dJVEhfUk9HVUVfV0FWRQotI2VsaWYgX19CT1JMQU5EQ19fIDwgMHg1NzAKLSMgIGRlZmluZSBORE5CT09TVF9CQ0JfV0lUSF9TVExQT1JUCi0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX0JDQl9XSVRIX0RJTktVTVdBUkUKLSNlbmRpZgotCi0vLwotLy8gVmVyc2lvbiA1LjAgYW5kIGJlbG93OgotIyAgIGlmIF9fQk9STEFORENfXyA8PSAweDA1NTAKLS8vIEJvcmxhbmQgQysrQnVpbGRlciA0IGFuZCA1OgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX01FTUJFUl9URU1QTEFURV9GUklFTkRTCi0jICAgICBpZiBfX0JPUkxBTkRDX18gPT0gMHgwNTUwCi0vLyBCb3JsYW5kIEMrK0J1aWxkZXIgNSwgY29tbWFuZC1saW5lIGNvbXBpbGVyIDUuNToKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX05PX09QRVJBVE9SU19JTl9OQU1FU1BBQ0UKLSMgICAgIGVuZGlmCi0vLyBWYXJpYWRpYyBtYWNyb3MgZG8gbm90IGV4aXN0IGZvciBDKysgQnVpbGRlciB2ZXJzaW9ucyA1IGFuZCBiZWxvdwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19NQUNST1MKLSMgICBlbmRpZgotCi0vLyBWZXJzaW9uIDUuNTEgYW5kIGJlbG93OgotI2lmIChfX0JPUkxBTkRDX18gPD0gMHg1NTEpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1ZfU1BFQ0lBTElaQVRJT05TCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLSMgIGRlZmluZSBORE5CT09TVF9OT19ERURVQ0VEX1RZUEVOQU1FCi0vLyB3b3JrYXJvdW5kIGZvciBtaXNzaW5nIFdDSEFSX01BWC9XQ0hBUl9NSU46Ci0jaWZkZWYgX19jcGx1c3BsdXMKLSNpbmNsdWRlIDxjbGltaXRzPgotI2luY2x1ZGUgPGN3Y2hhcj4KLSNlbHNlCi0jaW5jbHVkZSA8bGltaXRzLmg+Ci0jaW5jbHVkZSA8d2NoYXIuaD4KLSNlbmRpZiAvLyBfX2NwbHVzcGx1cwotI2lmbmRlZiBXQ0hBUl9NQVgKLSMgIGRlZmluZSBXQ0hBUl9NQVggMHhmZmZmCi0jZW5kaWYKLSNpZm5kZWYgV0NIQVJfTUlOCi0jICBkZWZpbmUgV0NIQVJfTUlOIDAKLSNlbmRpZgotI2VuZGlmCi0KLS8vIEJvcmxhbmQgQysrIEJ1aWxkZXIgNiBhbmQgYmVsb3c6Ci0jaWYgKF9fQk9STEFORENfXyA8PSAweDU2NCkKLQotIyAgaWYgZGVmaW5lZChOREVCVUcpICYmIGRlZmluZWQoX19jcGx1c3BsdXMpCi0gICAgICAvLyBmaXggYnJva2VuIDxjc3RyaW5nPiBzbyB0aGF0IEJvb3N0LnRlc3Qgd29ya3M6Ci0jICAgICBpbmNsdWRlIDxjc3RyaW5nPgotIyAgICAgdW5kZWYgc3RyY21wCi0jICBlbmRpZgotICAgLy8gZml4IGJyb2tlbiBlcnJubyBkZWNsYXJhdGlvbjoKLSMgIGluY2x1ZGUgPGVycm5vLmg+Ci0jICBpZm5kZWYgZXJybm8KLSMgICAgIGRlZmluZSBlcnJubyBlcnJubwotIyAgZW5kaWYKLQotI2VuZGlmCi0KLS8vCi0vLyBuZXcgYnVnIGluIDUuNjE6Ci0jaWYgKF9fQk9STEFORENfXyA+PSAweDU2MSkgJiYgKF9fQk9STEFORENfXyA8PSAweDU4MCkKLSAgIC8vIHRoaXMgc2VlbXMgdG8gYmUgbmVlZGVkIGJ5IHRoZSBjb21tYW5kIGxpbmUgY29tcGlsZXIsIGJ1dCBub3QgdGhlIElERToKLSMgIGRlZmluZSBORE5CT09TVF9OT19NRU1CRVJfRlVOQ1RJT05fU1BFQ0lBTElaQVRJT05TCi0jZW5kaWYKLQotLy8gQm9ybGFuZCBDKysgQnVpbGRlciAyMDA2IFVwZGF0ZSAyIGFuZCBiZWxvdzoKLSNpZiAoX19CT1JMQU5EQ19fIDw9IDB4NTgyKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NGSU5BRQotIyAgZGVmaW5lIE5ETkJPT1NUX0JDQl9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OX0JVRwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1RFTVBMQVRFX1RFTVBMQVRFUwotCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fUFJJVkFURV9JTl9BR0dSRUdBVEUKLQotIyAgaWZkZWYgX1dJTjMyCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fU1dQUklOVEYKLSMgIGVsaWYgZGVmaW5lZChsaW51eCkgfHwgZGVmaW5lZChfX2xpbnV4X18pIHx8IGRlZmluZWQoX19saW51eCkKLSAgICAgIC8vIHdlIHNob3VsZCByZWFsbHkgYmUgYWJsZSB0byBkbyB3aXRob3V0IHRoaXMKLSAgICAgIC8vIGJ1dCB0aGUgd2NzKiBmdW5jdGlvbnMgYXJlbid0IGltcG9ydGVkIGludG8gc3RkOjoKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRQotICAgICAgLy8gX0NQUFVOV0lORCBkb2Vzbid0IGdldCBhdXRvbWF0aWNhbGx5IHNldCBmb3Igc29tZSByZWFzb246Ci0jICAgICBwcmFnbWEgZGVmaW5lb25vcHRpb24gTkROQk9PU1RfQ1BQVU5XSU5EIC14Ci0jICBlbmRpZgotI2VuZGlmCi0KLSNpZiAoX19CT1JMQU5EQ19fIDw9IDB4NjEzKSAgLy8gQmVtYW4gaGFzIGFza2VkIEFsaXNkYWlyIGZvciBtb3JlIGluZm8KLSAgIC8vIHdlIHNob3VsZG4ndCByZWFsbHkgbmVlZCB0aGlzIC0gYnV0IHRvbyBtYW55IHRoaW5ncyBjaG9rZQotICAgLy8gd2l0aG91dCBpdCwgdGhpcyBuZWVkcyBtb3JlIGludmVzdGlnYXRpb246Ci0jICBkZWZpbmUgTkROQk9PU1RfTk9fTElNSVRTX0NPTVBJTEVfVElNRV9DT05TVEFOVFMKLSMgIGRlZmluZSBORE5CT09TVF9OT19JU19BQlNUUkFDVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RZUEVfU1BFQ0lBTElaQVRJT05TCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fVVNJTkdfVEVNUExBVEUKLSMgIGRlZmluZSBORE5CT09TVF9TUF9OT19TUF9DT05WRVJUSUJMRQotCi0vLyBUZW1wb3Jhcnkgd29ya2Fyb3VuZAotI2RlZmluZSBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0jZW5kaWYKLQotLy8gQm9ybGFuZCBDKysgQnVpbGRlciAyMDA4IGFuZCBiZWxvdzoKLSMgIGRlZmluZSBORE5CT09TVF9OT19JTlRFR1JBTF9JTlQ2NF9UCi0jICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fU0NPUEVfVVNJTkdfREVDTEFSQVRJT05fQlJFQUtTX0FETAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0RFUEVOREVOVF9ORVNURURfREVSSVZBVElPTlMKLSMgIGRlZmluZSBORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVfRlJJRU5EUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1RXT19QSEFTRV9OQU1FX0xPT0tVUAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1VTSU5HX0RFQ0xBUkFUSU9OX09WRVJMT0FEU19GUk9NX1RZUEVOQU1FX0JBU0UKLSMgIGRlZmluZSBORE5CT09TVF9OT19ORVNURURfRlJJRU5EU0hJUAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1RZUEVOQU1FX1dJVEhfQ1RPUgotI2lmIChfX0JPUkxBTkRDX18gPCAweDYwMCkKLSMgIGRlZmluZSBORE5CT09TVF9JTExFR0FMX0NWX1JFRkVSRU5DRVMKLSNlbmRpZgotCi0vLwotLy8gIFBvc2l0aXZlIEZlYXR1cmUgZGV0ZWN0aW9uCi0vLwotLy8gQm9ybGFuZCBDKysgQnVpbGRlciAyMDA4IGFuZCBiZWxvdzoKLSNpZiAoX19CT1JMQU5EQ19fID49IDB4NTk5KQotIyAgcHJhZ21hIGRlZmluZW9ub3B0aW9uIE5ETkJPT1NUX0NPREVHRUFSXzBYX1NVUFBPUlQgLUF4Ci0jZW5kaWYKLS8vCi0vLyBDKysweCBNYWNyb3M6Ci0vLwotI2lmICFkZWZpbmVkKCBORE5CT09TVF9DT0RFR0VBUl8wWF9TVVBQT1JUICkgfHwgKF9fQk9STEFORENfXyA8IDB4NjEwKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NIQVIxNl9UCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjMyX1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0VYUExJQ0lUX0NPTlZFUlNJT05fT1BFUkFUT1JTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfRVhURVJOX1RFTVBMQVRFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMgCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfU0NPUEVEX0VOVU1TCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfU1RBVElDX0FTU0VSVAotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfQUxJR05PRgotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19DSEFSMTZfVAotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19DSEFSMzJfVAotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19ERUNMVFlQRQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19FWFBMSUNJVF9DT05WRVJTSU9OX09QUwotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19SRUZfUVVBTElGSUVSCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1JWQUxVRV9SRUZTCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1NUQVRJQ19BU1NFUlQKLSNlbmRpZgotCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0FVVE9fREVDTEFSQVRJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0FVVE9fTVVMVElERUNMQVJBVElPTlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQ09OU1RFWFBSCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFX04zMjc2Ci0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFRkFVTFRFRF9GVU5DVElPTlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVMRVRFRF9GVU5DVElPTlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfRlVOQ1RJT05fVEVNUExBVEVfREVGQVVMVF9BUkdTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9JTklUSUFMSVpFUl9MSVNUCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0xBTUJEQVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTE9DQUxfQ0xBU1NfVEVNUExBVEVfUEFSQU1FVEVSUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9OVUxMUFRSCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JBTkdFX0JBU0VEX0ZPUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9SQVdfTElURVJBTFMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfU0NPUEVEX0VOVU1TCi0jZGVmaW5lIE5ETkJPT1NUX05PX1NGSU5BRV9FWFBSCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1RFTVBMQVRFX0FMSUFTRVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVU5JQ09ERV9MSVRFUkFMUyAgICAvLyBVVEYtOCBzdGlsbCBub3Qgc3VwcG9ydGVkCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9OT0VYQ0VQVAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VTklGSUVEX0lOSVRJQUxJWkFUSU9OX1NZTlRBWAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VU0VSX0RFRklORURfTElURVJBTFMKLQotI2lmIF9fQk9STEFORENfXyA+PSAweDU5MAotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUjFfSEFTSAotCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX01BQ1JPX1VTRV9GQUNFVAotI2VuZGlmCi0KLS8vCi0vLyBQb3N0IDB4NTYxIHdlIGhhdmUgbG9uZyBsb25nIGFuZCBzdGRpbnQuaDoKLSNpZiBfX0JPUkxBTkRDX18gPj0gMHg1NjEKLSMgIGlmbmRlZiBfX05PX0xPTkdfTE9ORwotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19MT05HX0xPTkcKLSMgIGVsc2UKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19MT05HX0xPTkcKLSMgIGVuZGlmCi0gICAvLyBPbiBub24tV2luMzIgcGxhdGZvcm1zIGxldCB0aGUgcGxhdGZvcm0gY29uZmlnIGZpZ3VyZSB0aGlzIG91dDoKLSMgIGlmZGVmIF9XSU4zMgotIyAgICAgIGRlZmluZSBORE5CT09TVF9IQVNfU1RESU5UX0gKLSMgIGVuZGlmCi0jZW5kaWYKLQotLy8gQm9ybGFuZCBDKytCdWlsZGVyIDYgZGVmYXVsdHMgdG8gdXNpbmcgU1RMUG9ydC4gIElmIF9VU0VfT0xEX1JXX1NUTCBpcwotLy8gZGVmaW5lZCwgdGhlbiB3ZSBoYXZlIDB4NTYwIG9yIGdyZWF0ZXIgd2l0aCB0aGUgUm9ndWUgV2F2ZSBpbXBsZW1lbnRhdGlvbgotLy8gd2hpY2ggcHJlc3VtYWJseSBoYXMgdGhlIHN0ZDo6REJMX01BWCBidWcuCi0jaWYgZGVmaW5lZCggTkROQk9PU1RfQkNCX1dJVEhfUk9HVUVfV0FWRSApCi0vLyA8Y2xpbWl0cz4gaXMgcGFydGx5IGJyb2tlbiwgc29tZSBtYWNyb3MgZGVmaW5lIHN5bWJvbHMgdGhhdCBhcmUgcmVhbGx5IGluCi0vLyBuYW1lc3BhY2Ugc3RkLCBzbyB5b3UgZW5kIHVwIGhhdmluZyB0byB1c2UgaWxsZWdhbCBjb25zdHJ1Y3RzIGxpa2UKLS8vIHN0ZDo6REJMX01BWCwgYXMgYSBmaXggd2UnbGwganVzdCBpbmNsdWRlIGZsb2F0LmggYW5kIGhhdmUgZG9uZSB3aXRoOgotI2luY2x1ZGUgPGZsb2F0Lmg+Ci0jZW5kaWYKLS8vCi0vLyBfX2ludDY0OgotLy8KLSNpZiAoX19CT1JMQU5EQ19fID49IDB4NTMwKSAmJiAhZGVmaW5lZChfX1NUUklDVF9BTlNJX18pCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX01TX0lOVDY0Ci0jZW5kaWYKLS8vCi0vLyBjaGVjayBmb3IgZXhjZXB0aW9uIGhhbmRsaW5nIHN1cHBvcnQ6Ci0vLwotI2lmICFkZWZpbmVkKF9DUFBVTldJTkQpICYmICFkZWZpbmVkKE5ETkJPT1NUX0NQUFVOV0lORCkgJiYgIWRlZmluZWQoX19FWENFUFRJT05TKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19FWENFUFRJT05TKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLSNlbmRpZgotLy8KLS8vIGFsbCB2ZXJzaW9ucyBoYXZlIGEgPGRpcmVudC5oPjoKLS8vCi0jaWZuZGVmIF9fU1RSSUNUX0FOU0lfXwotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19ESVJFTlRfSAotI2VuZGlmCi0vLwotLy8gYWxsIHZlcnNpb25zIHN1cHBvcnQgX19kZWNsc3BlYzoKLS8vCi0jaWYgZGVmaW5lZChfX1NUUklDVF9BTlNJX18pCi0vLyBjb25maWcvcGxhdGZvcm0vd2luMzIuaHBwIHdpbGwgZGVmaW5lIE5ETkJPT1NUX1NZTUJPTF9FWFBPUlQsIGV0Yy4sIHVubGVzcyBhbHJlYWR5IGRlZmluZWQgIAotIyAgZGVmaW5lIE5ETkJPT1NUX1NZTUJPTF9FWFBPUlQKLSNlbmRpZgotLy8KLS8vIEFCSSBmaXhpbmcgaGVhZGVyczoKLS8vCi0jaWYgX19CT1JMQU5EQ19fICE9IDB4NjAwIC8vIG5vdCBpbXBsZW1lbnRlZCBmb3IgdmVyc2lvbiA2IGNvbXBpbGVyIHlldAotI2lmbmRlZiBORE5CT09TVF9BQklfUFJFRklYCi0jICBkZWZpbmUgTkROQk9PU1RfQUJJX1BSRUZJWCAibmRuYm9vc3QvY29uZmlnL2FiaS9ib3JsYW5kX3ByZWZpeC5ocHAiCi0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfQUJJX1NVRkZJWAotIyAgZGVmaW5lIE5ETkJPT1NUX0FCSV9TVUZGSVggIm5kbmJvb3N0L2NvbmZpZy9hYmkvYm9ybGFuZF9zdWZmaXguaHBwIgotI2VuZGlmCi0jZW5kaWYKLS8vCi0vLyBEaXNhYmxlIFdpbjMyIHN1cHBvcnQgaW4gQU5TSSBtb2RlOgotLy8KLSNpZiBfX0JPUkxBTkRDX18gPCAweDYwMAotIyAgcHJhZ21hIGRlZmluZW9ub3B0aW9uIE5ETkJPT1NUX0RJU0FCTEVfV0lOMzIgLUEKLSNlbGlmIGRlZmluZWQoX19TVFJJQ1RfQU5TSV9fKQotIyAgZGVmaW5lIE5ETkJPT1NUX0RJU0FCTEVfV0lOMzIKLSNlbmRpZgotLy8KLS8vIE1TVkMgY29tcGF0aWJpbGl0eSBtb2RlIGRvZXMgc29tZSBuYXN0eSB0aGluZ3M6Ci0vLyBUT0RPOiBsb29rIHVwIGlmIHRoaXMgZG9lc24ndCBhcHBseSB0byB0aGUgd2hvbGUgMTJ4eCByYW5nZQotLy8KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPD0gMTIwMCkKLSMgIGRlZmluZSBORE5CT09TVF9OT19BUkdVTUVOVF9ERVBFTkRFTlRfTE9PS1VQCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fVk9JRF9SRVRVUk5TCi0jZW5kaWYKLQotLy8gQm9ybGFuZCBkaWQgbm90IGltcGxlbWVudCB2YWx1ZS1pbml0aWFsaXphdGlvbiBjb21wbGV0ZWx5LCBhcyBJIHJlcG9ydGVkCi0vLyBpbiAyMDA3LCBCb3JsYW5kIFJlcG9ydCA1MTg1NCwgIlZhbHVlLWluaXRpYWxpemF0aW9uOiBQT0Qgc3RydWN0IHNob3VsZCBiZQotLy8gemVyby1pbml0aWFsaXplZCIsIGh0dHA6Ly9xYy5lbWJhcmNhZGVyby5jb20vd2MvcWNtYWluLmFzcHg/ZD01MTg1NAotLy8gU2VlIGFsc286IGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdXRpbGl0eS92YWx1ZV9pbml0Lmh0bSNjb21waWxlcl9pc3N1ZXMKLS8vIChOaWVscyBEZWtrZXIsIExLRUIsIEFwcmlsIDIwMTApCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NPTVBMRVRFX1ZBTFVFX0lOSVRJQUxJWkFUSU9OCi0KLSNkZWZpbmUgTkROQk9PU1RfQ09NUElMRVIgIkJvcmxhbmQgQysrIHZlcnNpb24gIiBORE5CT09TVF9TVFJJTkdJWkUoX19CT1JMQU5EQ19fKQotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9jbGFuZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9jbGFuZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4YWIzNWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvY2xhbmcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTU4ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgRG91Z2xhcyBHcmVnb3IgMjAxMAotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLS8vIENsYW5nIGNvbXBpbGVyIHNldHVwLgotCi0jaWYgIV9faGFzX2ZlYXR1cmUoY3h4X2V4Y2VwdGlvbnMpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0VYQ0VQVElPTlMpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fRVhDRVBUSU9OUwotI2VuZGlmCi0KLSNpZiAhX19oYXNfZmVhdHVyZShjeHhfcnR0aSkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fUlRUSSkKLSMgIGRlZmluZSBORE5CT09TVF9OT19SVFRJCi0jZW5kaWYKLQotI2lmICFfX2hhc19mZWF0dXJlKGN4eF9ydHRpKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19UWVBFSUQpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fVFlQRUlECi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19pbnQ2NCkgJiYgIWRlZmluZWQoX19HTlVDX18pCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX01TX0lOVDY0Ci0jZW5kaWYKLQotI2RlZmluZSBORE5CT09TVF9IQVNfTlJWTwotCi0vLyBDbGFuZyBzdXBwb3J0cyAibG9uZyBsb25nIiBpbiBhbGwgY29tcGlsYXRpb24gbW9kZXMuCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19MT05HX0xPTkcKLQotLy8KLS8vIER5bmFtaWMgc2hhcmVkIG9iamVjdCAoRFNPKSBhbmQgZHluYW1pYy1saW5rIGxpYnJhcnkgKERMTCkgc3VwcG9ydAotLy8KLSNpZiAhZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fV0lOMzJfXykgJiYgIWRlZmluZWQoV0lOMzIpCi0jICBkZWZpbmUgTkROQk9PU1RfU1lNQk9MX0VYUE9SVCBfX2F0dHJpYnV0ZV9fKChfX3Zpc2liaWxpdHlfXygiZGVmYXVsdCIpKSkKLSMgIGRlZmluZSBORE5CT09TVF9TWU1CT0xfSU1QT1JUCi0jICBkZWZpbmUgTkROQk9PU1RfU1lNQk9MX1ZJU0lCTEUgX19hdHRyaWJ1dGVfXygoX192aXNpYmlsaXR5X18oImRlZmF1bHQiKSkpCi0jZW5kaWYKLQotLy8gCi0vLyBUaGUgTkROQk9PU1RfRkFMTFRIUk9VR0ggbWFjcm8gY2FuIGJlIHVzZWQgdG8gYW5ub3RhdGUgaW1wbGljaXQgZmFsbC10aHJvdWdoIAotLy8gYmV0d2VlbiBzd2l0Y2ggbGFiZWxzLiAKLS8vIAotI2lmIF9fY3BsdXNwbHVzID49IDIwMTEwM0wgJiYgZGVmaW5lZChfX2hhc193YXJuaW5nKSAKLSMgIGlmIF9faGFzX2ZlYXR1cmUoY3h4X2F0dHJpYnV0ZXMpICYmIF9faGFzX3dhcm5pbmcoIi1XaW1wbGljaXQtZmFsbHRocm91Z2giKSAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZBTExUSFJPVUdIIFtbY2xhbmc6OmZhbGx0aHJvdWdoXV0gCi0jICBlbmRpZiAKLSNlbmRpZiAKLQotI2lmICFfX2hhc19mZWF0dXJlKGN4eF9hdXRvX3R5cGUpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQVVUT19ERUNMQVJBVElPTlMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVVRPX01VTFRJREVDTEFSQVRJT05TCi0jZW5kaWYKLQotI2lmICEoZGVmaW5lZChfX0dYWF9FWFBFUklNRU5UQUxfQ1hYMFhfXykgfHwgX19jcGx1c3BsdXMgPj0gMjAxMTAzTCkKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9DSEFSMTZfVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NIQVIzMl9UCi0jZW5kaWYKLQotI2lmICFfX2hhc19mZWF0dXJlKGN4eF9jb25zdGV4cHIpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQ09OU1RFWFBSCi0jZW5kaWYKLQotI2lmICFfX2hhc19mZWF0dXJlKGN4eF9kZWNsdHlwZSkKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRQotI2VuZGlmCi0KLSNpZiAhX19oYXNfZmVhdHVyZShjeHhfZGVjbHR5cGVfaW5jb21wbGV0ZV9yZXR1cm5fdHlwZXMpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEVfTjMyNzYKLSNlbmRpZgotCi0jaWYgIV9faGFzX2ZlYXR1cmUoY3h4X2RlZmF1bHRlZF9mdW5jdGlvbnMpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVGQVVMVEVEX0ZVTkNUSU9OUwotI2VuZGlmCi0KLSNpZiAhX19oYXNfZmVhdHVyZShjeHhfZGVsZXRlZF9mdW5jdGlvbnMpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVMRVRFRF9GVU5DVElPTlMKLSNlbmRpZgotCi0jaWYgIV9faGFzX2ZlYXR1cmUoY3h4X2V4cGxpY2l0X2NvbnZlcnNpb25zKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0VYUExJQ0lUX0NPTlZFUlNJT05fT1BFUkFUT1JTCi0jZW5kaWYKLQotI2lmICFfX2hhc19mZWF0dXJlKGN4eF9kZWZhdWx0X2Z1bmN0aW9uX3RlbXBsYXRlX2FyZ3MpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfRlVOQ1RJT05fVEVNUExBVEVfREVGQVVMVF9BUkdTCi0jZW5kaWYKLQotI2lmICFfX2hhc19mZWF0dXJlKGN4eF9nZW5lcmFsaXplZF9pbml0aWFsaXplcnMpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QKLSNlbmRpZgotCi0jaWYgIV9faGFzX2ZlYXR1cmUoY3h4X2xhbWJkYXMpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTEFNQkRBUwotI2VuZGlmCi0KLSNpZiAhX19oYXNfZmVhdHVyZShjeHhfbG9jYWxfdHlwZV90ZW1wbGF0ZV9hcmdzKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0xPQ0FMX0NMQVNTX1RFTVBMQVRFX1BBUkFNRVRFUlMKLSNlbmRpZgotCi0jaWYgIV9faGFzX2ZlYXR1cmUoY3h4X25vZXhjZXB0KQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05PRVhDRVBUCi0jZW5kaWYKLQotI2lmICFfX2hhc19mZWF0dXJlKGN4eF9udWxscHRyKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05VTExQVFIKLSNlbmRpZgotCi0jaWYgIV9faGFzX2ZlYXR1cmUoY3h4X3JhbmdlX2ZvcikKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9SQU5HRV9CQVNFRF9GT1IKLSNlbmRpZgotCi0jaWYgIV9faGFzX2ZlYXR1cmUoY3h4X3Jhd19zdHJpbmdfbGl0ZXJhbHMpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUkFXX0xJVEVSQUxTCi0jZW5kaWYKLQotI2lmICFfX2hhc19mZWF0dXJlKGN4eF9nZW5lcmFsaXplZF9pbml0aWFsaXplcnMpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVU5JRklFRF9JTklUSUFMSVpBVElPTl9TWU5UQVgKLSNlbmRpZgotCi0jaWYgIV9faGFzX2ZlYXR1cmUoY3h4X3J2YWx1ZV9yZWZlcmVuY2VzKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0jZW5kaWYKLQotI2lmICFfX2hhc19mZWF0dXJlKGN4eF9zdHJvbmdfZW51bXMpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfU0NPUEVEX0VOVU1TCi0jZW5kaWYKLQotI2lmICFfX2hhc19mZWF0dXJlKGN4eF9zdGF0aWNfYXNzZXJ0KQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NUQVRJQ19BU1NFUlQKLSNlbmRpZgotCi0jaWYgIV9faGFzX2ZlYXR1cmUoY3h4X2FsaWFzX3RlbXBsYXRlcykKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9URU1QTEFURV9BTElBU0VTCi0jZW5kaWYKLQotI2lmICFfX2hhc19mZWF0dXJlKGN4eF91bmljb2RlX2xpdGVyYWxzKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1VOSUNPREVfTElURVJBTFMKLSNlbmRpZgotCi0jaWYgIV9faGFzX2ZlYXR1cmUoY3h4X3ZhcmlhZGljX3RlbXBsYXRlcykKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMKLSNlbmRpZgotCi0jaWYgIV9faGFzX2ZlYXR1cmUoY3h4X3VzZXJfbGl0ZXJhbHMpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVVNFUl9ERUZJTkVEX0xJVEVSQUxTCi0jZW5kaWYKLQotLy8gQ2xhbmcgYWx3YXlzIHN1cHBvcnRzIHZhcmlhZGljIG1hY3JvcwotLy8gQ2xhbmcgYWx3YXlzIHN1cHBvcnRzIGV4dGVybiB0ZW1wbGF0ZXMKLQotI2lmbmRlZiBORE5CT09TVF9DT01QSUxFUgotIyAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSICJDbGFuZyB2ZXJzaW9uICIgX19jbGFuZ192ZXJzaW9uX18KLSNlbmRpZgotCi0vLyBNYWNybyB1c2VkIHRvIGlkZW50aWZ5IHRoZSBDbGFuZyBjb21waWxlci4KLSNkZWZpbmUgTkROQk9PU1RfQ0xBTkcgMQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9jb2RlZ2Vhci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9jb2RlZ2Vhci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0NmM5YWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvY29kZWdlYXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTgwICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAxIC0gMjAwMy4KLS8vICAoQykgQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDIgLSAyMDAzLgotLy8gIChDKSBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLS8vICBDb2RlR2VhciBDKysgY29tcGlsZXIgc2V0dXA6Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfV0lUSF9DT0RFR0VBUl9XQVJOSU5HUyApCi0vLyB0aGVzZSB3YXJuaW5ncyBvY2N1ciBmcmVxdWVudGx5IGluIG9wdGltaXplZCB0ZW1wbGF0ZSBjb2RlCi0jIHByYWdtYSB3YXJuIC04MDA0IC8vIHZhciBhc3NpZ25lZCB2YWx1ZSwgYnV0IG5ldmVyIHVzZWQKLSMgcHJhZ21hIHdhcm4gLTgwMDggLy8gY29uZGl0aW9uIGFsd2F5cyB0cnVlL2ZhbHNlCi0jIHByYWdtYSB3YXJuIC04MDY2IC8vIGRlYWQgY29kZSBjYW4gbmV2ZXIgZXhlY3V0ZQotIyBwcmFnbWEgd2FybiAtODEwNCAvLyBzdGF0aWMgbWVtYmVycyB3aXRoIGN0b3JzIG5vdCB0aHJlYWRzYWZlCi0jIHByYWdtYSB3YXJuIC04MTA1IC8vIHJlZmVyZW5jZSBtZW1iZXIgaW4gY2xhc3Mgd2l0aG91dCBjdG9ycwotI2VuZGlmCi0vLwotLy8gdmVyc2lvbnMgY2hlY2s6Ci0vLyBsYXN0IGtub3duIGFuZCBjaGVja2VkIHZlcnNpb24gaXMgMHg2MjEKLSNpZiAoX19DT0RFR0VBUkNfXyA+IDB4NjIxKQotIyAgaWYgZGVmaW5lZChORE5CT09TVF9BU1NFUlRfQ09ORklHKQotIyAgICAgZXJyb3IgIlVua25vd24gY29tcGlsZXIgdmVyc2lvbiAtIHBsZWFzZSBydW4gdGhlIGNvbmZpZ3VyZSB0ZXN0cyBhbmQgcmVwb3J0IHRoZSByZXN1bHRzIgotIyAgZWxzZQotIyAgICAgcHJhZ21hIG1lc3NhZ2UoICJVbmtub3duIGNvbXBpbGVyIHZlcnNpb24gLSBwbGVhc2UgcnVuIHRoZSBjb25maWd1cmUgdGVzdHMgYW5kIHJlcG9ydCB0aGUgcmVzdWx0cyIpCi0jICBlbmRpZgotI2VuZGlmCi0KLS8vIENvZGVHZWFyIEMrKyBCdWlsZGVyIDIwMDkKLSNpZiAoX19DT0RFR0VBUkNfXyA8PSAweDYxMykKLSMgIGRlZmluZSBORE5CT09TVF9OT19JTlRFR1JBTF9JTlQ2NF9UCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fREVQRU5ERU5UX05FU1RFRF9ERVJJVkFUSU9OUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1BSSVZBVEVfSU5fQUdHUkVHQVRFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fVVNJTkdfREVDTEFSQVRJT05fT1ZFUkxPQURTX0ZST01fVFlQRU5BTUVfQkFTRQotICAgLy8gd2Ugc2hvdWxkbid0IHJlYWxseSBuZWVkIHRoaXMgLSBidXQgdG9vIG1hbnkgdGhpbmdzIGNob2tlCi0gICAvLyB3aXRob3V0IGl0LCB0aGlzIG5lZWRzIG1vcmUgaW52ZXN0aWdhdGlvbjoKLSMgIGRlZmluZSBORE5CT09TVF9OT19MSU1JVFNfQ09NUElMRV9USU1FX0NPTlNUQU5UUwotIyAgZGVmaW5lIE5ETkJPT1NUX1NQX05PX1NQX0NPTlZFUlRJQkxFCi0jZW5kaWYKLQotLy8gQ29kZUdlYXIgQysrIEJ1aWxkZXIgMjAxMAotI2lmIChfX0NPREVHRUFSQ19fIDw9IDB4NjIxKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1RZUEVOQU1FX1dJVEhfQ1RPUiAgICAvLyBDYW5ub3QgdXNlIHR5cGVuYW1lIGtleXdvcmQgd2hlbiBtYWtpbmcgdGVtcG9yYXJpZXMgb2YgYSBkZXBlbmRhbnQgdHlwZQotIyAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX1NDT1BFX1VTSU5HX0RFQ0xBUkFUSU9OX0JSRUFLU19BREwKLSMgIGRlZmluZSBORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVfRlJJRU5EUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX05FU1RFRF9GUklFTkRTSElQICAgICAvLyBUQzEgZ2l2ZXMgbmVzdGVkIGNsYXNzZXMgYWNjZXNzIHJpZ2h0cyBhcyBhbnkgb3RoZXIgbWVtYmVyCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fVVNJTkdfVEVNUExBVEUKLSMgIGRlZmluZSBORE5CT09TVF9OT19UV09fUEhBU0VfTkFNRV9MT09LVVAKLS8vIFRlbXBvcmFyeSBoYWNrLCB1bnRpbCBzcGVjaWZpYyBNUEwgcHJlcHJvY2Vzc2VkIGhlYWRlcnMgYXJlIGdlbmVyYXRlZAotIyAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLQotLy8gQ29kZUdlYXIgaGFzIG5vdCB5ZXQgY29tcGxldGVseSBpbXBsZW1lbnRlZCB2YWx1ZS1pbml0aWFsaXphdGlvbiwgZm9yCi0vLyBleGFtcGxlIGZvciBhcnJheSB0eXBlcywgYXMgSSByZXBvcnRlZCBpbiAyMDEwOiBFbWJhcmNhZGVybyBSZXBvcnQgODM3NTEsCi0vLyAiVmFsdWUtaW5pdGlhbGl6YXRpb246IGFycmF5cyBzaG91bGQgaGF2ZSBlYWNoIGVsZW1lbnQgdmFsdWUtaW5pdGlhbGl6ZWQiLAotLy8gaHR0cDovL3FjLmVtYmFyY2FkZXJvLmNvbS93Yy9xY21haW4uYXNweD9kPTgzNzUxCi0vLyBMYXN0IGNoZWNrZWQgdmVyc2lvbjogRW1iYXJjYWRlcm8gQysrIDYuMjEKLS8vIFNlZSBhbHNvOiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3V0aWxpdHkvdmFsdWVfaW5pdC5odG0jY29tcGlsZXJfaXNzdWVzCi0vLyAoTmllbHMgRGVra2VyLCBMS0VCLCBBcHJpbCAyMDEwKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NPTVBMRVRFX1ZBTFVFX0lOSVRJQUxJWkFUSU9OCi0KLSMgIGlmIGRlZmluZWQoTkRFQlVHKSAmJiBkZWZpbmVkKF9fY3BsdXNwbHVzKQotICAgICAgLy8gZml4IGJyb2tlbiA8Y3N0cmluZz4gc28gdGhhdCBCb29zdC50ZXN0IHdvcmtzOgotIyAgICAgaW5jbHVkZSA8Y3N0cmluZz4KLSMgICAgIHVuZGVmIHN0cmNtcAotIyAgZW5kaWYKLSAgIC8vIGZpeCBicm9rZW4gZXJybm8gZGVjbGFyYXRpb246Ci0jICBpbmNsdWRlIDxlcnJuby5oPgotIyAgaWZuZGVmIGVycm5vCi0jICAgICBkZWZpbmUgZXJybm8gZXJybm8KLSMgIGVuZGlmCi0KLSNlbmRpZgotLy8KLS8vIEMrKzB4IG1hY3JvczoKLS8vCi0jaWYgKF9fQ09ERUdFQVJDX18gPD0gMHg2MjApCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NUQVRJQ19BU1NFUlQKLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19TVEFUSUNfQVNTRVJUCi0jZW5kaWYKLSNkZWZpbmUgTkROQk9PU1RfSEFTX0NIQVIxNl9UCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19DSEFSMzJfVAotI2RlZmluZSBORE5CT09TVF9IQVNfTE9OR19MT05HCi0vLyAjZGVmaW5lIE5ETkJPT1NUX0hBU19BTElHTk9GCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19ERUNMVFlQRQotI2RlZmluZSBORE5CT09TVF9IQVNfRVhQTElDSVRfQ09OVkVSU0lPTl9PUFMKLS8vICNkZWZpbmUgTkROQk9PU1RfSEFTX1JWQUxVRV9SRUZTCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19TQ09QRURfRU5VTQotLy8gI2RlZmluZSBORE5CT09TVF9IQVNfU1RBVElDX0FTU0VSVAotI2RlZmluZSBORE5CT09TVF9IQVNfU1REX1RZUEVfVFJBSVRTCi0KLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQVVUT19ERUNMQVJBVElPTlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQVVUT19NVUxUSURFQ0xBUkFUSU9OUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9DT05TVEVYUFIKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVGQVVMVEVEX0ZVTkNUSU9OUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUxFVEVEX0ZVTkNUSU9OUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9FWFRFUk5fVEVNUExBVEUKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfRlVOQ1RJT05fVEVNUExBVEVfREVGQVVMVF9BUkdTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0xBTUJEQVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTE9DQUxfQ0xBU1NfVEVNUExBVEVfUEFSQU1FVEVSUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9OT0VYQ0VQVAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9OVUxMUFRSCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JBTkdFX0JBU0VEX0ZPUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9SQVdfTElURVJBTFMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fU0ZJTkFFX0VYUFIKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVEVNUExBVEVfQUxJQVNFUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VTklDT0RFX0xJVEVSQUxTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VTklGSUVEX0lOSVRJQUxJWkFUSU9OX1NZTlRBWAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VU0VSX0RFRklORURfTElURVJBTFMKLQotLy8KLS8vIFRSMSBtYWNyb3M6Ci0vLwotI2RlZmluZSBORE5CT09TVF9IQVNfVFIxX0hBU0gKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1RSMV9UWVBFX1RSQUlUUwotI2RlZmluZSBORE5CT09TVF9IQVNfVFIxX1VOT1JERVJFRF9NQVAKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1RSMV9VTk9SREVSRURfU0VUCi0KLSNkZWZpbmUgTkROQk9PU1RfSEFTX01BQ1JPX1VTRV9GQUNFVAotCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9JTklUSUFMSVpFUl9MSVNUCi0KLS8vIE9uIG5vbi1XaW4zMiBwbGF0Zm9ybXMgbGV0IHRoZSBwbGF0Zm9ybSBjb25maWcgZmlndXJlIHRoaXMgb3V0OgotI2lmZGVmIF9XSU4zMgotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19TVERJTlRfSAotI2VuZGlmCi0KLS8vCi0vLyBfX2ludDY0OgotLy8KLSNpZiAhZGVmaW5lZChfX1NUUklDVF9BTlNJX18pCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX01TX0lOVDY0Ci0jZW5kaWYKLS8vCi0vLyBjaGVjayBmb3IgZXhjZXB0aW9uIGhhbmRsaW5nIHN1cHBvcnQ6Ci0vLwotI2lmICFkZWZpbmVkKF9DUFBVTldJTkQpICYmICFkZWZpbmVkKE5ETkJPT1NUX0NQUFVOV0lORCkgJiYgIWRlZmluZWQoX19FWENFUFRJT05TKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19FWENFUFRJT05TKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLSNlbmRpZgotLy8KLS8vIGFsbCB2ZXJzaW9ucyBoYXZlIGEgPGRpcmVudC5oPjoKLS8vCi0jaWYgIWRlZmluZWQoX19TVFJJQ1RfQU5TSV9fKQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19ESVJFTlRfSAotI2VuZGlmCi0vLwotLy8gYWxsIHZlcnNpb25zIHN1cHBvcnQgX19kZWNsc3BlYzoKLS8vCi0jaWYgZGVmaW5lZChfX1NUUklDVF9BTlNJX18pCi0vLyBjb25maWcvcGxhdGZvcm0vd2luMzIuaHBwIHdpbGwgZGVmaW5lIE5ETkJPT1NUX1NZTUJPTF9FWFBPUlQsIGV0Yy4sIHVubGVzcyBhbHJlYWR5IGRlZmluZWQgIAotIyAgZGVmaW5lIE5ETkJPT1NUX1NZTUJPTF9FWFBPUlQKLSNlbmRpZgotLy8KLS8vIEFCSSBmaXhpbmcgaGVhZGVyczoKLS8vCi0jaWZuZGVmIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSMgIGRlZmluZSBORE5CT09TVF9BQklfUFJFRklYICJuZG5ib29zdC9jb25maWcvYWJpL2JvcmxhbmRfcHJlZml4LmhwcCIKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9BQklfU1VGRklYCi0jICBkZWZpbmUgTkROQk9PU1RfQUJJX1NVRkZJWCAibmRuYm9vc3QvY29uZmlnL2FiaS9ib3JsYW5kX3N1ZmZpeC5ocHAiCi0jZW5kaWYKLS8vCi0vLyBEaXNhYmxlIFdpbjMyIHN1cHBvcnQgaW4gQU5TSSBtb2RlOgotLy8KLSMgIHByYWdtYSBkZWZpbmVvbm9wdGlvbiBORE5CT09TVF9ESVNBQkxFX1dJTjMyIC1BCi0vLwotLy8gTVNWQyBjb21wYXRpYmlsaXR5IG1vZGUgZG9lcyBzb21lIG5hc3R5IHRoaW5nczoKLS8vIFRPRE86IGxvb2sgdXAgaWYgdGhpcyBkb2Vzbid0IGFwcGx5IHRvIHRoZSB3aG9sZSAxMnh4IHJhbmdlCi0vLwotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA8PSAxMjAwKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0FSR1VNRU5UX0RFUEVOREVOVF9MT09LVVAKLSMgIGRlZmluZSBORE5CT09TVF9OT19WT0lEX1JFVFVSTlMKLSNlbmRpZgotCi0jZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSICJDb2RlR2VhciBDKysgdmVyc2lvbiAiIE5ETkJPT1NUX1NUUklOR0laRShfX0NPREVHRUFSQ19fKQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9jb21lYXUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvY29tZWF1LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDIzOGJlOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9jb21lYXUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEuIAotLy8gIChDKSBDb3B5cmlnaHQgRG91Z2xhcyBHcmVnb3IgMjAwMS4gCi0vLyAgKEMpIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxLiAKLS8vICAoQykgQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMy4gCi0vLyAgKEMpIENvcHlyaWdodCBCZW1hbiBEYXdlcyAyMDAzLiAKLS8vICAoQykgQ29weXJpZ2h0IEplbnMgTWF1cmVyIDIwMDMuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIENvbWVhdSBDKysgY29tcGlsZXIgc2V0dXA6Ci0KLSNpbmNsdWRlICJuZG5ib29zdC9jb25maWcvY29tcGlsZXIvY29tbW9uX2VkZy5ocHAiCi0KLSNpZiAoX19DT01PX1ZFUlNJT05fXyA8PSA0MjQ1KQotCi0jICBpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA8PSAxMzAwCi0jICAgICBpZiBfTVNDX1ZFUiA+IDEwMAotICAgICAgICAgLy8gb25seSBzZXQgdGhpcyBpbiBub24tc3RyaWN0IG1vZGU6Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfTk9fQVJHVU1FTlRfREVQRU5ERU5UX0xPT0tVUAotIyAgICAgZW5kaWYKLSMgIGVuZGlmCi0KLS8vIFZvaWQgcmV0dXJucyBkb24ndCB3b3JrIHdoZW4gZW11bGF0aW5nIFZDIDYgKFBldGVyIERpbW92KQotLy8gVE9ETzogbG9vayB1cCBpZiB0aGlzIGRvZXNuJ3QgYXBwbHkgdG8gdGhlIHdob2xlIDEyeHggcmFuZ2UKLSMgIGlmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA8IDEzMDApCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fVk9JRF9SRVRVUk5TCi0jICBlbmRpZgotCi0jZW5kaWYgIC8vIHZlcnNpb24gNDI0NQotCi0vLwotLy8gZW5hYmxlIF9faW50NjQgc3VwcG9ydCBpbiBWQyBlbXVsYXRpb24gbW9kZQotLy8KLSMgIGlmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMjAwKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19NU19JTlQ2NAotIyAgZW5kaWYKLQotI2RlZmluZSBORE5CT09TVF9DT01QSUxFUiAiQ29tZWF1IGNvbXBpbGVyIHZlcnNpb24gIiBORE5CT09TVF9TVFJJTkdJWkUoX19DT01PX1ZFUlNJT05fXykKLQotLy8KLS8vIHZlcnNpb25zIGNoZWNrOgotLy8gd2UgZG9uJ3Qga25vdyBDb21lYXUgcHJpb3IgdG8gdmVyc2lvbiA0MjQ1OgotI2lmIF9fQ09NT19WRVJTSU9OX18gPCA0MjQ1Ci0jICBlcnJvciAiQ29tcGlsZXIgbm90IGNvbmZpZ3VyZWQgLSBwbGVhc2UgcmVjb25maWd1cmUiCi0jZW5kaWYKLS8vCi0vLyBsYXN0IGtub3duIGFuZCBjaGVja2VkIHZlcnNpb24gaXMgNDI0NToKLSNpZiAoX19DT01PX1ZFUlNJT05fXyA+IDQyNDUpCi0jICBpZiBkZWZpbmVkKE5ETkJPT1NUX0FTU0VSVF9DT05GSUcpCi0jICAgICBlcnJvciAiVW5rbm93biBjb21waWxlciB2ZXJzaW9uIC0gcGxlYXNlIHJ1biB0aGUgY29uZmlndXJlIHRlc3RzIGFuZCByZXBvcnQgdGhlIHJlc3VsdHMiCi0jICBlbmRpZgotI2VuZGlmCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2NvbW1vbl9lZGcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvY29tbW9uX2VkZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1MTgxYWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvY29tbW9uX2VkZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDQgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEgLSAyMDAyLiAKLS8vICAoQykgQ29weXJpZ2h0IEplbnMgTWF1cmVyIDIwMDEuIAotLy8gIChDKSBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMi4gCi0vLyAgKEMpIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDIuIAotLy8gIChDKSBDb3B5cmlnaHQgTWFya3VzIFNjaG9lcGZsaW4gMjAwNS4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLS8vCi0vLyBPcHRpb25zIGNvbW1vbiB0byBhbGwgZWRnIGJhc2VkIGNvbXBpbGVycy4KLS8vCi0vLyBUaGlzIGlzIGluY2x1ZGVkIGZyb20gd2l0aGluIHRoZSBpbmRpdmlkdWFsIGNvbXBpbGVyIG1pbmktY29uZmlncy4KLQotI2lmbmRlZiAgX19FREdfVkVSU0lPTl9fCi0jICBlcnJvciBUaGlzIGZpbGUgcmVxdWlyZXMgdGhhdCBfX0VER19WRVJTSU9OX18gYmUgZGVmaW5lZC4KLSNlbmRpZgotCi0jaWYgKF9fRURHX1ZFUlNJT05fXyA8PSAyMzgpCi0jICAgZGVmaW5lIE5ETkJPT1NUX05PX0lOVEVHUkFMX0lOVDY0X1QKLSMgICBkZWZpbmUgTkROQk9PU1RfTk9fU0ZJTkFFCi0jZW5kaWYKLQotI2lmIChfX0VER19WRVJTSU9OX18gPD0gMjQwKQotIyAgIGRlZmluZSBORE5CT09TVF9OT19WT0lEX1JFVFVSTlMKLSNlbmRpZgotCi0jaWYgKF9fRURHX1ZFUlNJT05fXyA8PSAyNDEpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0FSR1VNRU5UX0RFUEVOREVOVF9MT09LVVApCi0jICAgZGVmaW5lIE5ETkJPT1NUX05PX0FSR1VNRU5UX0RFUEVOREVOVF9MT09LVVAKLSNlbmRpZgotCi0jaWYgKF9fRURHX1ZFUlNJT05fXyA8PSAyNDQpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1RFTVBMQVRFUykKLSMgICBkZWZpbmUgTkROQk9PU1RfTk9fVEVNUExBVEVfVEVNUExBVEVTCi0jZW5kaWYgCi0KLSNpZiAoX19FREdfVkVSU0lPTl9fIDwgMzAwKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19JU19BQlNUUkFDVCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTk9fSVNfQUJTVFJBQ1QKLSNlbmRpZiAKLQotI2lmIChfX0VER19WRVJTSU9OX18gPD0gMzAzKSAmJiAhZGVmaW5lZChORE5CT09TVF9GVU5DVElPTl9TQ09QRV9VU0lOR19ERUNMQVJBVElPTl9CUkVBS1NfQURMKQotIyAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl9TQ09QRV9VU0lOR19ERUNMQVJBVElPTl9CUkVBS1NfQURMCi0jZW5kaWYgCi0KLS8vIFNlZSBhbHNvIGthaS5ocHAgd2hpY2ggY2hlY2tzIGEgS2FpLXNwZWNpZmljIHN5bWJvbCBmb3IgRUgKLSMgaWYgIWRlZmluZWQoX19LQ0MpICYmICFkZWZpbmVkKF9fRVhDRVBUSU9OUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fRVhDRVBUSU9OUykKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19FWENFUFRJT05TCi0jIGVuZGlmCi0KLSMgaWYgIWRlZmluZWQoX19OT19MT05HX0xPTkcpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX0xPTkdfTE9ORwotIyBlbHNlCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fTE9OR19MT05HCi0jIGVuZGlmCi0KLS8vCi0vLyBDKysweCBmZWF0dXJlcwotLy8KLS8vICAgU2VlIGFib3ZlIGZvciBORE5CT09TVF9OT19MT05HX0xPTkcKLS8vCi0jaWYgKF9fRURHX1ZFUlNJT05fXyA8IDMxMCkKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9FWFRFUk5fVEVNUExBVEUKLSNlbmRpZgotI2lmIChfX0VER19WRVJTSU9OX18gPD0gMzEwKQotLy8gTm8gc3VwcG9ydCBmb3IgaW5pdGlhbGl6ZXIgbGlzdHMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVAotI2VuZGlmCi0jaWYgKF9fRURHX1ZFUlNJT05fXyA8IDQwMCkKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19NQUNST1MKLSNlbmRpZgotCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0FVVE9fREVDTEFSQVRJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0FVVE9fTVVMVElERUNMQVJBVElPTlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjE2X1QKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjMyX1QKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQ09OU1RFWFBSCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFX04zMjc2Ci0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFRkFVTFRFRF9GVU5DVElPTlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVMRVRFRF9GVU5DVElPTlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfRVhQTElDSVRfQ09OVkVSU0lPTl9PUEVSQVRPUlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfRlVOQ1RJT05fVEVNUExBVEVfREVGQVVMVF9BUkdTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0xBTUJEQVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTE9DQUxfQ0xBU1NfVEVNUExBVEVfUEFSQU1FVEVSUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9OT0VYQ0VQVAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9OVUxMUFRSCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JBTkdFX0JBU0VEX0ZPUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9SQVdfTElURVJBTFMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfU0NPUEVEX0VOVU1TCi0jZGVmaW5lIE5ETkJPT1NUX05PX1NGSU5BRV9FWFBSCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NUQVRJQ19BU1NFUlQKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVEVNUExBVEVfQUxJQVNFUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VTklDT0RFX0xJVEVSQUxTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VTklGSUVEX0lOSVRJQUxJWkFUSU9OX1NZTlRBWAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VU0VSX0RFRklORURfTElURVJBTFMKLQotI2lmZGVmIGNfcGx1c3BsdXMKLS8vIEVERyBoYXMgImxvbmcgbG9uZyIgaW4gbm9uLXN0cmljdCBtb2RlCi0vLyBIb3dldmVyLCBzb21lIGxpYnJhcmllcyBoYXZlIGluc3VmZmljaWVudCAibG9uZyBsb25nIiBzdXBwb3J0Ci0vLyAjZGVmaW5lIE5ETkJPT1NUX0hBU19MT05HX0xPTkcKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvY29tcGFxX2N4eC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9jb21wYXFfY3h4LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Y4YjVlNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9jb21wYXFfY3h4LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAxIC0gMjAwMy4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyAgVHJ1NjQgQysrIGNvbXBpbGVyIHNldHVwIChub3cgSFApOgotCi0jZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSICJIUCBUcnU2NCBDKysgIiBORE5CT09TVF9TVFJJTkdJWkUoX19ERUNDWFhfVkVSKQotCi0jaW5jbHVkZSAibmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2NvbW1vbl9lZGcuaHBwIgotCi0vLwotLy8gdmVyc2lvbnMgY2hlY2s6Ci0vLyBOb3RoaW5nIHRvIGRvIGhlcmU/Ci0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9jcmF5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2NyYXkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTg2MTE4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2NyYXkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMTEuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIEdyZWVuaGlsbHMgQyBjb21waWxlciBzZXR1cDoKLQotI2RlZmluZSBORE5CT09TVF9DT01QSUxFUiAiQ3JheSBDIHZlcnNpb24gIiBORE5CT09TVF9TVFJJTkdJWkUoX1JFTEVBU0UpCi0KLSNpZiBfUkVMRUFTRSA8IDcKLSMgIGVycm9yICJCb29zdCBpcyBub3QgY29uZmlndXJlZCBmb3IgQ3JheSBjb21waWxlcnMgcHJpb3IgdG8gdmVyc2lvbiA3LCBwbGVhc2UgdHJ5IHRoZSBjb25maWd1cmUgc2NyaXB0LiIKLSNlbmRpZgotCi0vLwotLy8gQ2hlY2sgdGhpcyBpcyBhIHJlY2VudCBFREcgYmFzZWQgY29tcGlsZXIsIG90aGVyd2lzZSB3ZSBkb24ndCBzdXBwb3J0IGl0IGhlcmU6Ci0vLwotI2lmbmRlZiBfX0VER19WRVJTSU9OX18KLSMgIGVycm9yICJVbnN1cHBvcnRlZCBDcmF5IGNvbXBpbGVyLCBwbGVhc2UgdHJ5IHJ1bm5pbmcgdGhlIGNvbmZpZ3VyZSBzY3JpcHQuIgotI2VuZGlmCi0KLSNpbmNsdWRlICJuZG5ib29zdC9jb25maWcvY29tcGlsZXIvY29tbW9uX2VkZy5ocHAiCi0KLS8vCi0vLyBDcmF5IHBlY3VsaWFyaXRpZXMsIHByb2JhYmx5IHZlcnNpb24gNyBzcGVjaWZpYzoKLS8vCi0jdW5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfQVVUT19ERUNMQVJBVElPTlMKLSN1bmRlZiBORE5CT09TVF9OT19DWFgxMV9BVVRPX01VTFRJREVDTEFSQVRJT05TCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19OUlZPCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VTklGSUVEX0lOSVRJQUxJWkFUSU9OX1NZTlRBWAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VTklDT0RFX0xJVEVSQUxTCi0jZGVmaW5lIE5ETkJPT1NUX05PX1RXT19QSEFTRV9OQU1FX0xPT0tVUAotI2RlZmluZSBORE5CT09TVF9IQVNfTlJWTwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9URU1QTEFURV9BTElBU0VTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NUQVRJQ19BU1NFUlQKLSNkZWZpbmUgTkROQk9PU1RfTk9fU0ZJTkFFX0VYUFIKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfU0NPUEVEX0VOVU1TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JBTkdFX0JBU0VEX0ZPUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9SQVdfTElURVJBTFMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTlVMTFBUUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9OT0VYQ0VQVAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9MQU1CREFTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0xPQ0FMX0NMQVNTX1RFTVBMQVRFX1BBUkFNRVRFUlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfRlVOQ1RJT05fVEVNUExBVEVfREVGQVVMVF9BUkdTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0VYUExJQ0lUX0NPTlZFUlNJT05fT1BFUkFUT1JTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFTEVURURfRlVOQ1RJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFRkFVTFRFRF9GVU5DVElPTlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEVfTjMyNzYKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEUKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQ09OU1RFWFBSCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1VTRVJfREVGSU5FRF9MSVRFUkFMUwotI2RlZmluZSBORE5CT09TVF9OT19DT01QTEVURV9WQUxVRV9JTklUSUFMSVpBVElPTgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9DSEFSMzJfVAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9DSEFSMTZfVAotLy8jZGVmaW5lIE5ETkJPT1NUX0JDQl9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OX0JVRwotI2RlZmluZSBORE5CT09TVF9NQVRIX0RJU0FCTEVfU1REX0ZQQ0xBU1NJRlkKLS8vI2RlZmluZSBORE5CT09TVF9IQVNfRlBDTEFTU0lGWQotCi0jZGVmaW5lIE5ETkJPT1NUX1NQX1VTRV9QVEhSRUFEUyAKLSNkZWZpbmUgTkROQk9PU1RfQUNfVVNFX1BUSFJFQURTIAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9kaWdpdGFsbWFycy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9kaWdpdGFsbWFycy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxY2IzYjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvZGlnaXRhbG1hcnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA0ICswLDAgQEAKLS8vICBDb3B5cmlnaHQgKEMpIENocmlzdG9mIE1lZXJ3YWxkIDIwMDMKLS8vICBDb3B5cmlnaHQgKEMpIERhbiBXYXRraW5zIDIwMDMKLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgRGlnaXRhbCBNYXJzIEMrKyBjb21waWxlciBzZXR1cDoKLSNkZWZpbmUgTkROQk9PU1RfQ09NUElMRVIgX19ETUNfVkVSU0lPTl9TVFJJTkdfXwotCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19MT05HX0xPTkcKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1BSQUdNQV9PTkNFCi0KLSNpZiAoX19ETUNfXyA8PSAweDgzMykKLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fU0NPUEVfVVNJTkdfREVDTEFSQVRJT05fQlJFQUtTX0FETAotI2RlZmluZSBORE5CT09TVF9OT19URU1QTEFURV9URU1QTEFURVMKLSNkZWZpbmUgTkROQk9PU1RfTkVFRFNfVE9LRU5fUEFTVElOR19PUF9GT1JfVE9LRU5TX0pVWFRBUE9TSU5HCi0jZGVmaW5lIE5ETkJPT1NUX05PX0FSUkFZX1RZUEVfU1BFQ0lBTElaQVRJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0VYUExJQ0lUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1VNRU5UUwotI2VuZGlmCi0jaWYgKF9fRE1DX18gPD0gMHg4NDApIHx8ICFkZWZpbmVkKE5ETkJPT1NUX1NUUklDVF9DT05GSUcpCi0jZGVmaW5lIE5ETkJPT1NUX05PX0VYUExJQ0lUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1VNRU5UUwotI2RlZmluZSBORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVfRlJJRU5EUwotI2RlZmluZSBORE5CT09TVF9OT19PUEVSQVRPUlNfSU5fTkFNRVNQQUNFCi0jZGVmaW5lIE5ETkJPT1NUX05PX1VOUkVBQ0hBQkxFX1JFVFVSTl9ERVRFQ1RJT04KLSNkZWZpbmUgTkROQk9PU1RfTk9fU0ZJTkFFCi0jZGVmaW5lIE5ETkJPT1NUX05PX1VTSU5HX1RFTVBMQVRFCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX1NDT1BFX1VTSU5HX0RFQ0xBUkFUSU9OX0JSRUFLU19BREwKLSNlbmRpZgotCi0vLwotLy8gaGFzIG1hY3JvczoKLSNpZiAoX19ETUNfXyA+PSAweDg0MCkKLSNkZWZpbmUgTkROQk9PU1RfSEFTX0RJUkVOVF9ICi0jZGVmaW5lIE5ETkJPT1NUX0hBU19TVERJTlRfSAotI2RlZmluZSBORE5CT09TVF9IQVNfV0lOVEhSRUFEUwotI2VuZGlmCi0KLSNpZiAoX19ETUNfXyA+PSAweDg0NykKLSNkZWZpbmUgTkROQk9PU1RfSEFTX0VYUE0xCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19MT0cxUAotI2VuZGlmCi0KLS8vCi0vLyBJcyB0aGlzIHJlYWxseSB0aGUgYmVzdCB3YXkgdG8gZGV0ZWN0IHdoZXRoZXIgdGhlIHN0ZCBsaWIgaXMgaW4gbmFtZXNwYWNlIHN0ZD8KLS8vCi0jaWZkZWYgX19jcGx1c3BsdXMKLSNpbmNsdWRlIDxjc3RkZGVmPgotI2VuZGlmCi0jaWYgIWRlZmluZWQoX19TVExfSU1QT1JUX1ZFTkRPUl9DU1REKSAmJiAhZGVmaW5lZChfU1RMUF9JTVBPUlRfVkVORE9SX0NTVEQpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UKLSNlbmRpZgotCi0KLS8vIGNoZWNrIGZvciBleGNlcHRpb24gaGFuZGxpbmcgc3VwcG9ydDoKLSNpZiAhZGVmaW5lZChfQ1BQVU5XSU5EKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19FWENFUFRJT05TKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLSNlbmRpZgotCi0vLwotLy8gQysrMHggZmVhdHVyZXMKLS8vCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0FVVE9fREVDTEFSQVRJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0FVVE9fTVVMVElERUNMQVJBVElPTlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjE2X1QKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjMyX1QKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQ09OU1RFWFBSCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFX04zMjc2Ci0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFRkFVTFRFRF9GVU5DVElPTlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVMRVRFRF9GVU5DVElPTlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfRVhQTElDSVRfQ09OVkVSU0lPTl9PUEVSQVRPUlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfRVhURVJOX1RFTVBMQVRFCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9JTklUSUFMSVpFUl9MSVNUCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0xBTUJEQVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTE9DQUxfQ0xBU1NfVEVNUExBVEVfUEFSQU1FVEVSUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9OT0VYQ0VQVAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9OVUxMUFRSCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JBTkdFX0JBU0VEX0ZPUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9SQVdfTElURVJBTFMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfU0NPUEVEX0VOVU1TCi0jZGVmaW5lIE5ETkJPT1NUX05PX1NGSU5BRV9FWFBSCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NUQVRJQ19BU1NFUlQKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVEVNUExBVEVfQUxJQVNFUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VTklDT0RFX0xJVEVSQUxTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VTklGSUVEX0lOSVRJQUxJWkFUSU9OX1NZTlRBWAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VU0VSX0RFRklORURfTElURVJBTFMKLQotI2lmIChfX0RNQ19fIDwgMHg4MTIpCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX01BQ1JPUwotI2VuZGlmCi0KLSNpZiBfX0RNQ19fIDwgMHg4MDAKLSNlcnJvciAiQ29tcGlsZXIgbm90IHN1cHBvcnRlZCBvciBjb25maWd1cmVkIC0gcGxlYXNlIHJlY29uZmlndXJlIgotI2VuZGlmCi0vLwotLy8gbGFzdCBrbm93biBhbmQgY2hlY2tlZCB2ZXJzaW9uIGlzIC4uLjoKLSNpZiAoX19ETUNfXyA+IDB4ODQ4KQotIyAgaWYgZGVmaW5lZChORE5CT09TVF9BU1NFUlRfQ09ORklHKQotIyAgICAgZXJyb3IgIlVua25vd24gY29tcGlsZXIgdmVyc2lvbiAtIHBsZWFzZSBydW4gdGhlIGNvbmZpZ3VyZSB0ZXN0cyBhbmQgcmVwb3J0IHRoZSByZXN1bHRzIgotIyAgZW5kaWYKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvZ2NjLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2djYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyZDUxMzAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvZ2NjLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4MCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMSAtIDIwMDMuIAotLy8gIChDKSBDb3B5cmlnaHQgRGFyaW4gQWRsZXIgMjAwMSAtIDIwMDIuIAotLy8gIChDKSBDb3B5cmlnaHQgSmVucyBNYXVyZXIgMjAwMSAtIDIwMDIuIAotLy8gIChDKSBDb3B5cmlnaHQgQmVtYW4gRGF3ZXMgMjAwMSAtIDIwMDMuIAotLy8gIChDKSBDb3B5cmlnaHQgRG91Z2xhcyBHcmVnb3IgMjAwMi4gCi0vLyAgKEMpIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAyIC0gMjAwMy4gCi0vLyAgKEMpIENvcHlyaWdodCBTeW5nZSBUb2RvIDIwMDMuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIEdOVSBDKysgY29tcGlsZXIgc2V0dXAuCi0KLS8vCi0vLyBEZWZpbmUgTkROQk9PU1RfR0NDIHNvIHdlIGtub3cgdGhpcyBpcyAicmVhbCIgR0NDIGFuZCBub3Qgc29tZSBwcmV0ZW5kZXI6Ci0vLwotI2lmICFkZWZpbmVkKF9fQ1VEQUNDX18pCi0jZGVmaW5lIE5ETkJPT1NUX0dDQyAoX19HTlVDX18gKiAxMDAwMCArIF9fR05VQ19NSU5PUl9fICogMTAwICsgX19HTlVDX1BBVENITEVWRUxfXykKLSNlbmRpZgotCi0jaWYgX19HTlVDX18gPCAzCi0jICAgaWYgX19HTlVDX01JTk9SX18gPT0gOTEKLSAgICAgICAvLyBlZ2NzIDEuMSB3b24ndCBwYXJzZSBzaGFyZWRfcHRyLmhwcCB3aXRob3V0IHRoaXM6Ci0jICAgICAgZGVmaW5lIE5ETkJPT1NUX05PX0FVVE9fUFRSCi0jICAgZW5kaWYKLSMgICBpZiBfX0dOVUNfTUlOT1JfXyA8IDk1Ci0gICAgICAvLwotICAgICAgLy8gUHJpb3IgdG8gZ2NjIDIuOTUgbWVtYmVyIHRlbXBsYXRlcyBvbmx5IHBhcnRseQotICAgICAgLy8gd29yayAtIGRlZmluZSBORE5CT09TVF9NU1ZDNl9NRU1CRVJfVEVNUExBVEVTCi0gICAgICAvLyBpbnN0ZWFkIHNpbmNlIGlubGluZSBtZW1iZXIgdGVtcGxhdGVzIG1vc3RseSB3b3JrLgotICAgICAgLy8KLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVTCi0jICAgICBpZiBfX0dOVUNfTUlOT1JfXyA+PSA5Ci0jICAgICAgIGRlZmluZSBORE5CT09TVF9NU1ZDNl9NRU1CRVJfVEVNUExBVEVTCi0jICAgICBlbmRpZgotIyAgIGVuZGlmCi0KLSMgICBpZiBfX0dOVUNfTUlOT1JfXyA8IDk2Ci0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fU0ZJTkFFCi0jICAgZW5kaWYKLQotIyAgIGlmIF9fR05VQ19NSU5PUl9fIDw9IDk3Ci0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFX0ZSSUVORFMKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19PUEVSQVRPUlNfSU5fTkFNRVNQQUNFCi0jICAgZW5kaWYKLQotIyAgIGRlZmluZSBORE5CT09TVF9OT19VU0lOR19ERUNMQVJBVElPTl9PVkVSTE9BRFNfRlJPTV9UWVBFTkFNRV9CQVNFCi0jICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX1NDT1BFX1VTSU5HX0RFQ0xBUkFUSU9OX0JSRUFLU19BREwKLSMgICBkZWZpbmUgTkROQk9PU1RfTk9fSVNfQUJTVFJBQ1QKLSMgICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfRVhURVJOX1RFTVBMQVRFCi0vLyBWYXJpYWRpYyBtYWNyb3MgZG8gbm90IGV4aXN0IGZvciBnY2MgdmVyc2lvbnMgYmVmb3JlIDMuMAotIyAgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19NQUNST1MKLSNlbGlmIF9fR05VQ19fID09IDMKLSMgIGlmIGRlZmluZWQgKF9fUEFUSFNDQUxFX18pCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fVFdPX1BIQVNFX05BTUVfTE9PS1VQCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fSVNfQUJTVFJBQ1QKLSMgIGVuZGlmCi0gICAvLwotICAgLy8gZ2NjLTMueCBwcm9ibGVtczoKLSAgIC8vCi0gICAvLyBCdWcgc3BlY2lmaWMgdG8gZ2NjIDMuMSBhbmQgMy4yOgotICAgLy8KLSMgIGlmICgoX19HTlVDX01JTk9SX18gPT0gMSkgfHwgKF9fR05VQ19NSU5PUl9fID09IDIpKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX0VYUExJQ0lUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1VNRU5UUwotIyAgZW5kaWYKLSMgIGlmIF9fR05VQ19NSU5PUl9fIDwgNAotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX0lTX0FCU1RSQUNUCi0jICBlbmRpZgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0VYVEVSTl9URU1QTEFURQotI2VuZGlmCi0jaWYgX19HTlVDX18gPCA0Ci0vLwotLy8gQWxsIHByb2JsZW1zIHRvIGdjYy0zLnggYW5kIGVhcmxpZXIgaGVyZToKLS8vCi0jZGVmaW5lIE5ETkJPT1NUX05PX1RXT19QSEFTRV9OQU1FX0xPT0tVUAotIyAgaWZkZWYgX19PUEVONjRfXwotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX0lTX0FCU1RSQUNUCi0jICBlbmRpZgotI2VuZGlmCi0KLSNpZiBfX0dOVUNfXyA8IDQgfHwgKCBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNCApCi0vLyBQcmV2aW91cyB2ZXJzaW9ucyBvZiBHQ0MgZGlkIG5vdCBjb21wbGV0ZWx5IGltcGxlbWVudCB2YWx1ZS1pbml0aWFsaXphdGlvbjoKLS8vIEdDQyBCdWcgMzAxMTEsICJWYWx1ZS1pbml0aWFsaXphdGlvbiBvZiBQT0QgYmFzZSBjbGFzcyBkb2Vzbid0IGluaXRpYWxpemUKLS8vIG1lbWJlcnMiLCByZXBvcnRlZCBieSBKb25hdGhhbiBXYWtlbHkgaW4gMjAwNiwKLS8vIGh0dHA6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MzAxMTEgKGZpeGVkIGZvciBHQ0MgNC40KQotLy8gR0NDIEJ1ZyAzMzkxNiwgIkRlZmF1bHQgY29uc3RydWN0b3IgZmFpbHMgdG8gaW5pdGlhbGl6ZSBhcnJheSBtZW1iZXJzIiwKLS8vIHJlcG9ydGVkIGJ5IE1pY2hhZWwgRWxpemFiZXRoIENoYXN0YWluIGluIDIwMDcsCi0vLyBodHRwOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTMzOTE2IChmaXhlZCBmb3IgR0NDIDQuMi40KQotLy8gU2VlIGFsc286IGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdXRpbGl0eS92YWx1ZV9pbml0Lmh0bSNjb21waWxlcl9pc3N1ZXMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ09NUExFVEVfVkFMVUVfSU5JVElBTElaQVRJT04KLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoX19FWENFUFRJT05TKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19FWENFUFRJT05TKQotIyBkZWZpbmUgTkROQk9PU1RfTk9fRVhDRVBUSU9OUwotI2VuZGlmCi0KLQotLy8KLS8vIFRocmVhZGluZyBzdXBwb3J0OiBUdXJuIHRoaXMgb24gdW5jb25kaXRpb25hbGx5IGhlcmUgKGV4Y2VwdCBmb3IKLS8vIHRob3NlIHBsYXRmb3JtcyB3aGVyZSB3ZSBjYW4ga25vdyBmb3Igc3VyZSkuIEl0IHdpbGwgZ2V0IHR1cm5lZCBvZmYgYWdhaW4KLS8vIGxhdGVyIGlmIG5vIHRocmVhZGluZyBBUEkgaXMgZGV0ZWN0ZWQuCi0vLwotI2lmICFkZWZpbmVkKF9fTUlOR1czMl9fKSAmJiAhZGVmaW5lZChsaW51eCkgJiYgIWRlZmluZWQoX19saW51eCkgJiYgIWRlZmluZWQoX19saW51eF9fKQotIyBkZWZpbmUgTkROQk9PU1RfSEFTX1RIUkVBRFMKLSNlbmRpZiAKLQotLy8KLS8vIGdjYyBoYXMgImxvbmcgbG9uZyIKLS8vCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19MT05HX0xPTkcKLQotLy8KLS8vIGdjYyBpbXBsZW1lbnRzIHRoZSBuYW1lZCByZXR1cm4gdmFsdWUgb3B0aW1pemF0aW9uIHNpbmNlIHZlcnNpb24gMy4xCi0vLwotI2lmIF9fR05VQ19fID4gMyB8fCAoIF9fR05VQ19fID09IDMgJiYgX19HTlVDX01JTk9SX18gPj0gMSApCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19OUlZPCi0jZW5kaWYKLQotLy8KLS8vIER5bmFtaWMgc2hhcmVkIG9iamVjdCAoRFNPKSBhbmQgZHluYW1pYy1saW5rIGxpYnJhcnkgKERMTCkgc3VwcG9ydAotLy8KLSNpZiBfX0dOVUNfXyA+PSA0Ci0jICBpZiAoZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19XSU4zMl9fKSB8fCBkZWZpbmVkKFdJTjMyKSkgJiYgIWRlZmluZWQoX19DWUdXSU5fXykKLSAgICAgLy8gQWxsIFdpbjMyIGRldmVsb3BtZW50IGVudmlyb25tZW50cywgaW5jbHVkaW5nIDY0LWJpdCBXaW5kb3dzIGFuZCBNaW5HVywgZGVmaW5lIAotICAgICAvLyBfV0lOMzIgb3Igb25lIG9mIGl0cyB2YXJpYW50IHNwZWxsaW5ncy4gTm90ZSB0aGF0IEN5Z3dpbiBpcyBhIFBPU0lYIGVudmlyb25tZW50LAotICAgICAvLyBzbyBkb2VzIG5vdCBkZWZpbmUgX1dJTjMyIG9yIGl0cyB2YXJpYW50cy4KLSMgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19ERUNMU1BFQwotIyAgICBkZWZpbmUgTkROQk9PU1RfU1lNQk9MX0VYUE9SVCBfX2F0dHJpYnV0ZV9fKChkbGxleHBvcnQpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfU1lNQk9MX0lNUE9SVCBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKQotIyAgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfU1lNQk9MX0VYUE9SVCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfU1lNQk9MX0lNUE9SVAotIyAgZW5kaWYKLSMgIGRlZmluZSBORE5CT09TVF9TWU1CT0xfVklTSUJMRSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKQotI2Vsc2UKLS8vIGNvbmZpZy9wbGF0Zm9ybS93aW4zMi5ocHAgd2lsbCBkZWZpbmUgTkROQk9PU1RfU1lNQk9MX0VYUE9SVCwgZXRjLiwgdW5sZXNzIGFscmVhZHkgZGVmaW5lZCAgCi0jICBkZWZpbmUgTkROQk9PU1RfU1lNQk9MX0VYUE9SVAotI2VuZGlmCi0KLS8vCi0vLyBSVFRJIGFuZCB0eXBlaW5mbyBkZXRlY3Rpb24gaXMgcG9zc2libGUgcG9zdCBnY2MtNC4zOgotLy8KLSNpZiBfX0dOVUNfXyAqIDEwMCArIF9fR05VQ19NSU5PUl9fID49IDQwMwotIyAgaWZuZGVmIF9fR1hYX1JUVEkKLSMgICAgIGlmbmRlZiBORE5CT09TVF9OT19UWVBFSUQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9OT19UWVBFSUQKLSMgICAgIGVuZGlmCi0jICAgICBpZm5kZWYgTkROQk9PU1RfTk9fUlRUSQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1JUVEkKLSMgICAgIGVuZGlmCi0jICBlbmRpZgotI2VuZGlmCi0KLS8vCi0vLyBSZWNlbnQgR0NDIHZlcnNpb25zIGhhdmUgX19pbnQxMjggd2hlbiBpbiA2NC1iaXQgbW9kZS4KLS8vCi0vLyBXZSBkaXNhYmxlIHRoaXMgaWYgdGhlIGNvbXBpbGVyIGlzIHJlYWxseSBudmNjIGFzIGl0Ci0vLyBkb2Vzbid0IGFjdHVhbGx5IHN1cHBvcnQgX19pbnQxMjggYXMgb2YgQ1VEQV9WRVJTSU9OPTUwMDAKLS8vIGV2ZW4gdGhvdWdoIGl0IGRlZmluZXMgX19TSVpFT0ZfSU5UMTI4X18uICAKLS8vIFNlZSBodHRwczovL3N2bi5ib29zdC5vcmcvdHJhYy9ib29zdC90aWNrZXQvODA0OAotLy8gT25seSByZS1lbmFibGUgdGhpcyBmb3IgbnZjYyBpZiB5b3UncmUgYWJzb2x1dGVseSBzdXJlCi0vLyBvZiB0aGUgY2lyY3Vtc3RhbmNlcyB1bmRlciB3aGljaCBpdCdzIHN1cHBvcnRlZDoKLS8vCi0jaWYgZGVmaW5lZChfX1NJWkVPRl9JTlQxMjhfXykgJiYgIWRlZmluZWQoX19DVURBQ0NfXykKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfSU5UMTI4Ci0jZW5kaWYKLQotLy8gQysrMHggZmVhdHVyZXMgaW4gNC4zLm4gYW5kIGxhdGVyCi0vLwotI2lmIChfX0dOVUNfXyA+IDQgfHwgKF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPiAyKSkgJiYgZGVmaW5lZChfX0dYWF9FWFBFUklNRU5UQUxfQ1hYMFhfXykKLS8vIEMrKzB4IGZlYXR1cmVzIGFyZSBvbmx5IGVuYWJsZWQgd2hlbiAtc3RkPWMrKzB4IG9yIC1zdGQ9Z251KysweCBhcmUKLS8vIHBhc3NlZCBvbiB0aGUgY29tbWFuZCBsaW5lLCB3aGljaCBpbiB0dXJuIGRlZmluZXMKLS8vIF9fR1hYX0VYUEVSSU1FTlRBTF9DWFgwWF9fLgotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19ERUNMVFlQRQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19SVkFMVUVfUkVGUwotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19TVEFUSUNfQVNTRVJUCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1ZBUklBRElDX1RNUEwKLSNlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEUKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9GVU5DVElPTl9URU1QTEFURV9ERUZBVUxUX0FSR1MKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NUQVRJQ19BU1NFUlQKLQotLy8gVmFyaWFkaWMgdGVtcGxhdGVzIGNvbXBpbGVyOiAKLS8vICAgaHR0cDovL3d3dy5nZW5lcmljLXByb2dyYW1taW5nLm9yZy9+ZGdyZWdvci9jcHAvdmFyaWFkaWMtdGVtcGxhdGVzLmh0bWwKLSMgIGlmIGRlZmluZWQoX19WQVJJQURJQ19URU1QTEFURVMpIHx8IChfX0dOVUNfXyA+IDQpIHx8ICgoX19HTlVDX18gPT0gNCkgJiYgKF9fR05VQ19NSU5PUl9fID49IDQpICYmIGRlZmluZWQoX19HWFhfRVhQRVJJTUVOVEFMX0NYWDBYX18pKQotIyAgICBkZWZpbmUgTkROQk9PU1RfSEFTX1ZBUklBRElDX1RNUEwKLSMgIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUwotIyAgZW5kaWYKLSNlbmRpZgotCi0vLyBDKysweCBmZWF0dXJlcyBpbiA0LjQubiBhbmQgbGF0ZXIKLS8vCi0jaWYgX19HTlVDX18gPCA0IHx8IChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNCkgfHwgIWRlZmluZWQoX19HWFhfRVhQRVJJTUVOVEFMX0NYWDBYX18pCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQVVUT19ERUNMQVJBVElPTlMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVVRPX01VTFRJREVDTEFSQVRJT05TCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjE2X1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9DSEFSMzJfVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9JTklUSUFMSVpFUl9MSVNUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVGQVVMVEVEX0ZVTkNUSU9OUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFTEVURURfRlVOQ1RJT05TCi0jZW5kaWYKLQotI2lmIF9fR05VQ19fIDwgNCB8fCAoX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDUpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU0ZJTkFFX0VYUFIKLSNlbmRpZgotCi0vLyBDKysweCBmZWF0dXJlcyBpbiA0LjUuMCBhbmQgbGF0ZXIKLS8vCi0jaWYgX19HTlVDX18gPCA0IHx8IChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNSkgfHwgIWRlZmluZWQoX19HWFhfRVhQRVJJTUVOVEFMX0NYWDBYX18pCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfRVhQTElDSVRfQ09OVkVSU0lPTl9PUEVSQVRPUlMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9MQU1CREFTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTE9DQUxfQ0xBU1NfVEVNUExBVEVfUEFSQU1FVEVSUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JBV19MSVRFUkFMUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1VOSUNPREVfTElURVJBTFMKLSNlbmRpZgotCi0vLyBDKysweCBmZWF0dXJlcyBpbiA0LjUuMSBhbmQgbGF0ZXIKLS8vCi0jaWYgKF9fR05VQ19fKjEwMDAwICsgX19HTlVDX01JTk9SX18qMTAwICsgX19HTlVDX1BBVENITEVWRUxfXyA8IDQwNTAxKSB8fCAhZGVmaW5lZChfX0dYWF9FWFBFUklNRU5UQUxfQ1hYMFhfXykKLS8vIHNjb3BlZCBlbnVtcyBoYXZlIGEgc2VyaW91cyBidWcgaW4gNC40LjAsIHNvIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9TQ09QRURfRU5VTVMgYmVmb3JlIDQuNS4xCi0vLyBTZWUgaHR0cDovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0zODA2NAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NDT1BFRF9FTlVNUwotI2VuZGlmCi0KLS8vIEMrKzB4IGZlYXR1cmVzIGluIDQuNi5uIGFuZCBsYXRlcgotLy8KLSNpZiBfX0dOVUNfXyA8IDQgfHwgKF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2KSB8fCAhZGVmaW5lZChfX0dYWF9FWFBFUklNRU5UQUxfQ1hYMFhfXykKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQ09OU1RFWFBSCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05PRVhDRVBUCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05VTExQVFIKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUkFOR0VfQkFTRURfRk9SCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1VOSUZJRURfSU5JVElBTElaQVRJT05fU1lOVEFYCi0jZW5kaWYKLQotLy8gQysrMHggZmVhdHVyZXMgaW4gNC43Lm4gYW5kIGxhdGVyCi0vLwotI2lmIF9fR05VQ19fIDwgNCB8fCAoX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcpIHx8ICFkZWZpbmVkKF9fR1hYX0VYUEVSSU1FTlRBTF9DWFgwWF9fKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1RFTVBMQVRFX0FMSUFTRVMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9VU0VSX0RFRklORURfTElURVJBTFMKLSNlbmRpZgotCi0vLyBDKysweCBmZWF0dXJlcyBpbiA0LjguMSBhbmQgbGF0ZXIKLS8vCi0jaWYgKF9fR05VQ19fKjEwMDAwICsgX19HTlVDX01JTk9SX18qMTAwICsgX19HTlVDX1BBVENITEVWRUxfXyA8IDQwODAxKSB8fCAhZGVmaW5lZChfX0dYWF9FWFBFUklNRU5UQUxfQ1hYMFhfXykKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRV9OMzI3NgotI2VuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfQ09NUElMRVIKLSMgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUiAiR05VIEMrKyB2ZXJzaW9uICIgX19WRVJTSU9OX18KLSNlbmRpZgotCi0vLyBDb25jZXB0R0NDIGNvbXBpbGVyOgotLy8gICBodHRwOi8vd3d3LmdlbmVyaWMtcHJvZ3JhbW1pbmcub3JnL3NvZnR3YXJlL0NvbmNlcHRHQ0MvCi0jaWZkZWYgX19HWFhfQ09OQ0VQVFNfXwotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19DT05DRVBUUwotIyAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSICJDb25jZXB0R0NDIHZlcnNpb24gIiBfX1ZFUlNJT05fXwotI2VuZGlmCi0KLS8vIHZlcnNpb25zIGNoZWNrOgotLy8gd2UgZG9uJ3Qga25vdyBnY2MgcHJpb3IgdG8gdmVyc2lvbiAyLjkwOgotI2lmIChfX0dOVUNfXyA9PSAyKSAmJiAoX19HTlVDX01JTk9SX18gPCA5MCkKLSMgIGVycm9yICJDb21waWxlciBub3QgY29uZmlndXJlZCAtIHBsZWFzZSByZWNvbmZpZ3VyZSIKLSNlbmRpZgotLy8KLS8vIGxhc3Qga25vd24gYW5kIGNoZWNrZWQgdmVyc2lvbiBpcyA0LjYgKFByZS1yZWxlYXNlKToKLSNpZiAoX19HTlVDX18gPiA0KSB8fCAoKF9fR05VQ19fID09IDQpICYmIChfX0dOVUNfTUlOT1JfXyA+IDYpKQotIyAgaWYgZGVmaW5lZChORE5CT09TVF9BU1NFUlRfQ09ORklHKQotIyAgICAgZXJyb3IgIlVua25vd24gY29tcGlsZXIgdmVyc2lvbiAtIHBsZWFzZSBydW4gdGhlIGNvbmZpZ3VyZSB0ZXN0cyBhbmQgcmVwb3J0IHRoZSByZXN1bHRzIgotIyAgZWxzZQotLy8gd2UgZG9uJ3QgZW1pdCB3YXJuaW5ncyBoZXJlIGFueW1vcmUgc2luY2UgdGhlcmUgYXJlIG5vIGRlZmVjdCBtYWNyb3MgZGVmaW5lZCBmb3IKLS8vIGdjYyBwb3N0IDMuNCwgc28gYW55IGZhaWx1cmVzIGFyZSBnY2MgcmVncmVzc2lvbnMuLi4KLS8vIyAgICAgd2FybmluZyAiVW5rbm93biBjb21waWxlciB2ZXJzaW9uIC0gcGxlYXNlIHJ1biB0aGUgY29uZmlndXJlIHRlc3RzIGFuZCByZXBvcnQgdGhlIHJlc3VsdHMiCi0jICBlbmRpZgotI2VuZGlmCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvZ2NjX3htbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9nY2NfeG1sLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTdmOWY3OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9nY2NfeG1sLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDA2LiAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLS8vICBHQ0MtWE1MIEMrKyBjb21waWxlciBzZXR1cDoKLQotIyAgaWYgIWRlZmluZWQoX19HQ0NYTUxfR05VQ19fKSB8fCAoKF9fR0NDWE1MX0dOVUNfXyA8PSAzKSAmJiAoX19HQ0NYTUxfR05VQ19NSU5PUl9fIDw9IDMpKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX0lTX0FCU1RSQUNUCi0jICBlbmRpZgotCi0vLwotLy8gVGhyZWFkaW5nIHN1cHBvcnQ6IFR1cm4gdGhpcyBvbiB1bmNvbmRpdGlvbmFsbHkgaGVyZSAoZXhjZXB0IGZvcgotLy8gdGhvc2UgcGxhdGZvcm1zIHdoZXJlIHdlIGNhbiBrbm93IGZvciBzdXJlKS4gSXQgd2lsbCBnZXQgdHVybmVkIG9mZiBhZ2FpbgotLy8gbGF0ZXIgaWYgbm8gdGhyZWFkaW5nIEFQSSBpcyBkZXRlY3RlZC4KLS8vCi0jaWYgIWRlZmluZWQoX19NSU5HVzMyX18pICYmICFkZWZpbmVkKF9NU0NfVkVSKSAmJiAhZGVmaW5lZChsaW51eCkgJiYgIWRlZmluZWQoX19saW51eCkgJiYgIWRlZmluZWQoX19saW51eF9fKQotIyBkZWZpbmUgTkROQk9PU1RfSEFTX1RIUkVBRFMKLSNlbmRpZiAKLQotLy8KLS8vIGdjYyBoYXMgImxvbmcgbG9uZyIKLS8vCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19MT05HX0xPTkcKLQotLy8gQysrMHggZmVhdHVyZXM6Ci0vLwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NPTlNURVhQUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05VTExQVFIKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9URU1QTEFURV9BTElBU0VTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEUKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRV9OMzI3NgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0ZVTkNUSU9OX1RFTVBMQVRFX0RFRkFVTFRfQVJHUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfU1RBVElDX0FTU0VSVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX01BQ1JPUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0FVVE9fREVDTEFSQVRJT05TCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQVVUT19NVUxUSURFQ0xBUkFUSU9OUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NIQVIxNl9UCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjMyX1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUZBVUxURURfRlVOQ1RJT05TCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVMRVRFRF9GVU5DVElPTlMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NDT1BFRF9FTlVNUyAgCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU0ZJTkFFX0VYUFIKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9FWFBMSUNJVF9DT05WRVJTSU9OX09QRVJBVE9SUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0xBTUJEQVMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9MT0NBTF9DTEFTU19URU1QTEFURV9QQVJBTUVURVJTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUkFOR0VfQkFTRURfRk9SCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUkFXX0xJVEVSQUxTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVU5JQ09ERV9MSVRFUkFMUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05PRVhDRVBUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVU5JRklFRF9JTklUSUFMSVpBVElPTl9TWU5UQVgKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9VU0VSX0RFRklORURfTElURVJBTFMKLQotI2RlZmluZSBORE5CT09TVF9DT01QSUxFUiAiR0NDLVhNTCBDKysgdmVyc2lvbiAiIF9fR0NDWE1MX18KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9ncmVlbmhpbGxzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2dyZWVuaGlsbHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTY4OTdkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2dyZWVuaGlsbHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIEdyZWVuaGlsbHMgQysrIGNvbXBpbGVyIHNldHVwOgotCi0jZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSICJHcmVlbmhpbGxzIEMrKyB2ZXJzaW9uICIgTkROQk9PU1RfU1RSSU5HSVpFKF9fZ2hzKQotCi0jaW5jbHVkZSAibmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2NvbW1vbl9lZGcuaHBwIgotCi0vLwotLy8gdmVyc2lvbnMgY2hlY2s6Ci0vLyB3ZSBkb24ndCBzdXBwb3J0IEdyZWVuaGlsbHMgcHJpb3IgdG8gdmVyc2lvbiAwOgotI2lmIF9fZ2hzIDwgMAotIyAgZXJyb3IgIkNvbXBpbGVyIG5vdCBzdXBwb3J0ZWQgb3IgY29uZmlndXJlZCAtIHBsZWFzZSByZWNvbmZpZ3VyZSIKLSNlbmRpZgotLy8KLS8vIGxhc3Qga25vd24gYW5kIGNoZWNrZWQgdmVyc2lvbiBpcyAwOgotI2lmIChfX2docyA+IDApCi0jICBpZiBkZWZpbmVkKE5ETkJPT1NUX0FTU0VSVF9DT05GSUcpCi0jICAgICBlcnJvciAiVW5rbm93biBjb21waWxlciB2ZXJzaW9uIC0gcGxlYXNlIHJ1biB0aGUgY29uZmlndXJlIHRlc3RzIGFuZCByZXBvcnQgdGhlIHJlc3VsdHMiCi0jICBlbmRpZgotI2VuZGlmCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvaHBfYWNjLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2hwX2FjYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4NDM4ZTguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvaHBfYWNjLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMSAtIDIwMDMuIAotLy8gIChDKSBDb3B5cmlnaHQgSmVucyBNYXVyZXIgMjAwMSAtIDIwMDMuIAotLy8gIChDKSBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLiAKLS8vICAoQykgQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDIgLSAyMDAzLiAKLS8vICAoQykgQ29weXJpZ2h0IFRvb24gS25hcGVuIDIwMDMuIAotLy8gIChDKSBDb3B5cmlnaHQgQm9yaXMgR3ViZW5rbyAyMDA2IC0gMjAwNy4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLS8vICBIUCBhQ0MgQysrIGNvbXBpbGVyIHNldHVwOgotCi0jaWYgZGVmaW5lZChfX0VER19fKQotI2luY2x1ZGUgIm5kbmJvb3N0L2NvbmZpZy9jb21waWxlci9jb21tb25fZWRnLmhwcCIKLSNlbmRpZgotCi0jaWYgKF9fSFBfYUNDIDw9IDMzMTAwKQotIyAgICBkZWZpbmUgTkROQk9PU1RfTk9fSU5URUdSQUxfSU5UNjRfVAotIyAgICBkZWZpbmUgTkROQk9PU1RfTk9fT1BFUkFUT1JTX0lOX05BTUVTUEFDRQotIyAgaWYgIWRlZmluZWQoX05BTUVTUEFDRV9TVEQpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX0xPQ0FMRQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1NUUklOR1NUUkVBTQotIyAgZW5kaWYKLSNlbmRpZgotCi0jaWYgKF9fSFBfYUNDIDw9IDMzMzAwKQotLy8gbWVtYmVyIHRlbXBsYXRlcyBhcmUgc3VmZmljaWVudGx5IGJyb2tlbiB0aGF0IHdlIGRpc2FibGUgdGhlbSBmb3Igbm93Ci0jICAgIGRlZmluZSBORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVTCi0jICAgIGRlZmluZSBORE5CT09TVF9OT19ERVBFTkRFTlRfTkVTVEVEX0RFUklWQVRJT05TCi0jICAgIGRlZmluZSBORE5CT09TVF9OT19VU0lOR19ERUNMQVJBVElPTl9PVkVSTE9BRFNfRlJPTV9UWVBFTkFNRV9CQVNFCi0jZW5kaWYKLQotI2lmIChfX0hQX2FDQyA8PSAzODAwMCkKLSMgIGRlZmluZSBORE5CT09TVF9OT19UV09fUEhBU0VfTkFNRV9MT09LVVAKLSNlbmRpZgotCi0jaWYgKF9fSFBfYUNDID4gNTAwMDApICYmIChfX0hQX2FDQyA8IDYwMDAwKQotIyAgICBkZWZpbmUgTkROQk9PU1RfTk9fVU5SRUFDSEFCTEVfUkVUVVJOX0RFVEVDVElPTgotIyAgICBkZWZpbmUgTkROQk9PU1RfTk9fVEVNUExBVEVfVEVNUExBVEVTCi0jICAgIGRlZmluZSBORE5CT09TVF9OT19TV1BSSU5URgotIyAgICBkZWZpbmUgTkROQk9PU1RfTk9fREVQRU5ERU5UX1RZUEVTX0lOX1RFTVBMQVRFX1ZBTFVFX1BBUkFNRVRFUlMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX05PX0lTX0FCU1RSQUNUCi0jICAgIGRlZmluZSBORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVfRlJJRU5EUwotI2VuZGlmIAotCi0vLyBvcHRpb25hbCBmZWF0dXJlcyByYXRoZXIgdGhhbiBkZWZlY3RzOgotI2lmIChfX0hQX2FDQyA+PSAzMzkwMCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19MT05HX0xPTkcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19QQVJUSUFMX1NURF9BTExPQ0FUT1IKLSNlbmRpZgotCi0jaWYgKF9fSFBfYUNDID49IDUwMDAwICkgJiYgKF9fSFBfYUNDIDw9IDUzODAwICkgfHwgKF9fSFBfYUNDIDwgMzEzMDAgKQotIyAgICBkZWZpbmUgTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFX0tFWVdPUkQKLSNlbmRpZgotCi0vLyBUaGlzIG1hY3JvIHNob3VsZCBub3QgYmUgZGVmaW5lZCB3aGVuIGNvbXBpbGluZyBpbiBzdHJpY3QgYW5zaQotLy8gbW9kZSwgYnV0LCBjdXJyZW50bHksIHdlIGRvbid0IGhhdmUgdGhlIGFiaWxpdHkgdG8gZGV0ZXJtaW5lCi0vLyB3aGF0IHN0YW5kYXJkIG1vZGUgd2UgYXJlIGNvbXBpbGluZyB3aXRoLiBTb21lIGZ1dHVyZSB2ZXJzaW9uCi0vLyBvZiBhQ0M2IGNvbXBpbGVyIHdpbGwgcHJvdmlkZSBwcmVkZWZpbmVkIG1hY3JvcyByZWZsZWN0aW5nIHRoZQotLy8gY29tcGlsYXRpb24gb3B0aW9ucywgaW5jbHVkaW5nIHRoZSBzdGFuZGFyZCBtb2RlLgotI2lmIChfX0hQX2FDQyA+PSA2MDAwMCkgfHwgKChfX0hQX2FDQyA+IDM4MDAwKSAmJiBkZWZpbmVkKF9faHB4c3RkOTgpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfTk9fVFdPX1BIQVNFX05BTUVfTE9PS1VQCi0jZW5kaWYKLQotI2RlZmluZSBORE5CT09TVF9DT01QSUxFUiAiSFAgYUNDIHZlcnNpb24gIiBORE5CT09TVF9TVFJJTkdJWkUoX19IUF9hQ0MpCi0KLS8vCi0vLyB2ZXJzaW9ucyBjaGVjazoKLS8vIHdlIGRvbid0IHN1cHBvcnQgSFAgYUNDIHByaW9yIHRvIHZlcnNpb24gMzMwMDA6Ci0jaWYgX19IUF9hQ0MgPCAzMzAwMAotIyAgZXJyb3IgIkNvbXBpbGVyIG5vdCBzdXBwb3J0ZWQgb3IgY29uZmlndXJlZCAtIHBsZWFzZSByZWNvbmZpZ3VyZSIKLSNlbmRpZgotCi0vLwotLy8gRXh0ZW5kZWQgY2hlY2tzIGZvciBzdXBwb3J0aW5nIGFDQyBvbiBQQS1SSVNDCi0jaWYgX19IUF9hQ0MgPiAzMDAwMCAmJiBfX0hQX2FDQyA8IDUwMDAwCi0jICBpZiBfX0hQX2FDQyA8IDM4MDAwCi0gICAgICAvLyB2ZXJzaW9ucyBwcmlvciB0byB2ZXJzaW9uIEEuMDMuODAgbm90IHN1cHBvcnRlZAotIyAgICAgZXJyb3IgIkNvbXBpbGVyIHZlcnNpb24gbm90IHN1cHBvcnRlZCAtIHZlcnNpb24gQS4wMy44MCBvciBoaWdoZXIgaXMgcmVxdWlyZWQiCi0jICBlbGlmICFkZWZpbmVkKF9faHB4c3RkOTgpCi0gICAgICAvLyBtdXN0IGNvbXBpbGUgdXNpbmcgdGhlIG9wdGlvbiAraHB4c3RkOTggd2l0aCB2ZXJzaW9uIEEuMDMuODAgYW5kIGFib3ZlCi0jICAgICBlcnJvciAiQ29tcGlsZXIgb3B0aW9uICcraHB4c3RkOTgnIGlzIHJlcXVpcmVkIGZvciBwcm9wZXIgc3VwcG9ydCIKLSMgIGVuZGlmIC8vUEEtUklTQwotI2VuZGlmCi0KLS8vCi0vLyBDKysweCBmZWF0dXJlcwotLy8KLS8vICAgU2VlIGJvb3N0XGNvbmZpZ1xzdWZmaXguaHBwIGZvciBORE5CT09TVF9OT19MT05HX0xPTkcKLS8vCi0jaWYgIWRlZmluZWQoX19FREdfXykKLQotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVVRPX0RFQ0xBUkFUSU9OUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVVRPX01VTFRJREVDTEFSQVRJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NIQVIxNl9UCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NIQVIzMl9UCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NPTlNURVhQUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRQotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRV9OMzI3NgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUZBVUxURURfRlVOQ1RJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFTEVURURfRlVOQ1RJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0VYUExJQ0lUX0NPTlZFUlNJT05fT1BFUkFUT1JTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0VYVEVSTl9URU1QTEFURQotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9GVU5DVElPTl9URU1QTEFURV9ERUZBVUxUX0FSR1MKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTEFNQkRBUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9MT0NBTF9DTEFTU19URU1QTEFURV9QQVJBTUVURVJTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05PRVhDRVBUCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05VTExQVFIKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUkFOR0VfQkFTRURfRk9SCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JBV19MSVRFUkFMUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9TQ09QRURfRU5VTVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fU0ZJTkFFX0VYUFIKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfU1RBVElDX0FTU0VSVAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9URU1QTEFURV9BTElBU0VTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1VOSUNPREVfTElURVJBTFMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1VTRVJfREVGSU5FRF9MSVRFUkFMUwotCi0vKiAKLSAgU2VlIGh0dHBzOi8vZm9ydW1zMTMuaXRyYy5ocC5jb20vc2VydmljZS9mb3J1bXMvcXVlc3Rpb25hbnN3ZXIuZG8/dGhyZWFkSWQ9MTQ0MzMzMSBhbmQKLSAgICAgIGh0dHBzOi8vZm9ydW1zMTMuaXRyYy5ocC5jb20vc2VydmljZS9mb3J1bXMvcXVlc3Rpb25hbnN3ZXIuZG8/dGhyZWFkSWQ9MTQ0MzQzNgotKi8KLQotI2lmIChfX0hQX2FDQyA8IDYyNTAwKSB8fCAhZGVmaW5lZChIUF9DWFgweF9TT1VSQ0UpCi0gICNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfTUFDUk9TCi0jZW5kaWYKLQotI2VuZGlmCi0KLS8vCi0vLyBsYXN0IGtub3duIGFuZCBjaGVja2VkIHZlcnNpb24gZm9yIEhQLVVYL2lhNjQgaXMgNjEzMDAKLS8vIGxhc3Qga25vd24gYW5kIGNoZWNrZWQgdmVyc2lvbiBmb3IgUEEtUklTQyBpcyAzODAwMAotI2lmICgoX19IUF9hQ0MgPiA2MTMwMCkgfHwgKChfX0hQX2FDQyA+IDM4MDAwKSAmJiBkZWZpbmVkKF9faHB4c3RkOTgpKSkKLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfQVNTRVJUX0NPTkZJRykKLSMgICAgIGVycm9yICJVbmtub3duIGNvbXBpbGVyIHZlcnNpb24gLSBwbGVhc2UgcnVuIHRoZSBjb25maWd1cmUgdGVzdHMgYW5kIHJlcG9ydCB0aGUgcmVzdWx0cyIKLSMgIGVuZGlmCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2ludGVsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2ludGVsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTIxNjgzMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9pbnRlbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNzIgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEtOC4KLS8vICAoQykgQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEuCi0vLyAgKEMpIENvcHlyaWdodCBKZW5zIE1hdXJlciAyMDAxLgotLy8gIChDKSBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMiAtIDIwMDMuCi0vLyAgKEMpIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDIgLSAyMDAzLgotLy8gIChDKSBDb3B5cmlnaHQgR3VpbGxhdW1lIE1lbHF1aW9uZCAyMDAyIC0gMjAwMy4KLS8vICAoQykgQ29weXJpZ2h0IEJlbWFuIERhd2VzIDIwMDMuCi0vLyAgKEMpIENvcHlyaWdodCBNYXJ0aW4gV2lsbGUgMjAwMy4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyAgSW50ZWwgY29tcGlsZXIgc2V0dXA6Ci0KLSNpbmNsdWRlICJuZG5ib29zdC9jb25maWcvY29tcGlsZXIvY29tbW9uX2VkZy5ocHAiCi0KLSNpZiBkZWZpbmVkKF9fSU5URUxfQ09NUElMRVIpCi0jICBkZWZpbmUgTkROQk9PU1RfSU5URUxfQ1hYX1ZFUlNJT04gX19JTlRFTF9DT01QSUxFUgotI2VsaWYgZGVmaW5lZChfX0lDTCkKLSMgIGRlZmluZSBORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTiBfX0lDTAotI2VsaWYgZGVmaW5lZChfX0lDQykKLSMgIGRlZmluZSBORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTiBfX0lDQwotI2VsaWYgZGVmaW5lZChfX0VDQykKLSMgIGRlZmluZSBORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTiBfX0VDQwotI2VuZGlmCi0KLS8vIEZsYWdzIGRldGVybWluZWQgYnkgY29tcGFyaW5nIG91dHB1dCBvZiAnaWNwYyAtZE0gLUUnIHdpdGggYW5kIHdpdGhvdXQgJy1zdGQ9YysrMHgnCi0jaWYgKCEoZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX1dJTjY0KSkgJiYgZGVmaW5lZChfX1NURENfSE9TVEVEX18pICYmIChfX1NURENfSE9TVEVEX18gJiYgKE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OIDw9IDEyMDApKSkgfHwgZGVmaW5lZChfX0dYWF9FWFBFUklNRU5UQUxfQ1BQMFhfXykKLSMgIGRlZmluZSBORE5CT09TVF9JTlRFTF9TVERDWFgwWAotI2VuZGlmCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDE2MDApCi0jICBkZWZpbmUgTkROQk9PU1RfSU5URUxfU1REQ1hYMFgKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfSU5URUxfU1REQ1hYMFgKLSNkZWZpbmUgTkROQk9PU1RfQ09NUElMRVIgIkludGVsIEMrKyBDKysweCBtb2RlIHZlcnNpb24gIiBORE5CT09TVF9TVFJJTkdJWkUoTkROQk9PU1RfSU5URUxfQ1hYX1ZFUlNJT04pCi0jZWxzZQotI2RlZmluZSBORE5CT09TVF9DT01QSUxFUiAiSW50ZWwgQysrIHZlcnNpb24gIiBORE5CT09TVF9TVFJJTkdJWkUoTkROQk9PU1RfSU5URUxfQ1hYX1ZFUlNJT04pCi0jZW5kaWYKLSNkZWZpbmUgTkROQk9PU1RfSU5URUwgTkROQk9PU1RfSU5URUxfQ1hYX1ZFUlNJT04KLQotI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9XSU42NCkKLSMgIGRlZmluZSBORE5CT09TVF9JTlRFTF9XSU4gTkROQk9PU1RfSU5URUwKLSNlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfSU5URUxfTElOVVggTkROQk9PU1RfSU5URUwKLSNlbmRpZgotCi0jaWYgKE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OIDw9IDUwMCkgJiYgZGVmaW5lZChfTVNDX1ZFUikKLSMgIGRlZmluZSBORE5CT09TVF9OT19FWFBMSUNJVF9GVU5DVElPTl9URU1QTEFURV9BUkdVTUVOVFMKLSMgIGRlZmluZSBORE5CT09TVF9OT19URU1QTEFURV9URU1QTEFURVMKLSNlbmRpZgotCi0jaWYgKE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OIDw9IDYwMCkKLQotIyAgaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSIDw9IDEzMDApIC8vIGFkZGVkIGNoZWNrIGZvciA8PSBWQyA3IChQZXRlciBEaW1vdikKLQotLy8gQm9vc3QgbGlicmFyaWVzIGFzc3VtZSBzdHJvbmcgc3RhbmRhcmQgY29uZm9ybWFuY2UgdW5sZXNzIG90aGVyd2lzZQotLy8gaW5kaWNhdGVkIGJ5IGEgY29uZmlnIG1hY3JvLiBBcyBjb25maWd1cmVkIGJ5IEludGVsLCB0aGUgRURHIGZyb250LWVuZAotLy8gcmVxdWlyZXMgY2VydGFpbiBjb21waWxlciBvcHRpb25zIGJlIHNldCB0byBhY2hpZXZlIHRoYXQgc3Ryb25nIGNvbmZvcm1hbmNlLgotLy8gUGFydGljdWxhcmx5IC9Rb3B0aW9uLGMsLS1hcmdfZGVwX2xvb2t1cCAocmVwb3J0ZWQgYnkgS2lyayBLbG9iZSAmIFRob21hcyBXaXR0KQotLy8gYW5kIC9aYzp3Y2hhcl90LGZvclNjb3BlLiBTZWUgYm9vc3Qtcm9vdC90b29scy9idWlsZC9pbnRlbC13aW4zMi10b29scy5qYW0gZm9yCi0vLyBkZXRhaWxzIGFzIHRoZXkgYXBwbHkgdG8gcGFydGljdWxhciB2ZXJzaW9ucyBvZiB0aGUgY29tcGlsZXIuIFdoZW4gdGhlCi0vLyBjb21waWxlciBkb2VzIG5vdCBwcmVkZWZpbmUgYSBtYWNybyBpbmRpY2F0aW5nIGlmIGFuIG9wdGlvbiBoYXMgYmVlbiBzZXQsCi0vLyB0aGlzIGNvbmZpZyBmaWxlIHNpbXBseSBhc3N1bWVzIHRoZSBvcHRpb24gaGFzIGJlZW4gc2V0LgotLy8gVGh1cyBORE5CT09TVF9OT19BUkdVTUVOVF9ERVBFTkRFTlRfTE9PS1VQIHdpbGwgbm90IGJlIGRlZmluZWQsIGV2ZW4gaWYKLS8vIHRoZSBjb21waWxlciBvcHRpb24gaXMgbm90IGVuYWJsZWQuCi0KLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19TV1BSSU5URgotIyAgZW5kaWYKLQotLy8gVm9pZCByZXR1cm5zLCA2NCBiaXQgaW50ZWdyYWxzIGRvbid0IHdvcmsgd2hlbiBlbXVsYXRpbmcgVkMgNiAoUGV0ZXIgRGltb3YpCi0KLSMgIGlmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA8PSAxMjAwKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1ZPSURfUkVUVVJOUwotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX0lOVEVHUkFMX0lOVDY0X1QKLSMgIGVuZGlmCi0KLSNlbmRpZgotCi0jaWYgKE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OIDw9IDcxMCkgJiYgZGVmaW5lZChfV0lOMzIpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fUE9JTlRFUl9UT19NRU1CRVJfVEVNUExBVEVfUEFSQU1FVEVSUwotI2VuZGlmCi0KLS8vIFNlZSBodHRwOi8vYXNwbi5hY3RpdmVzdGF0ZS5jb20vQVNQTi9NYWlsL01lc3NhZ2UvYm9vc3QvMTYxNDg2NAotI2lmIE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OIDwgNjAwCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QKLSNlbHNlCi0vLyBXZSBzaG91bGQgdGVzdCB0aGUgbWFjcm8gX1dDSEFSX1RfREVGSU5FRCB0byBjaGVjayBpZiB0aGUgY29tcGlsZXIKLS8vIHN1cHBvcnRzIHdjaGFyX3QgbmF0aXZlbHkuICpCVVQqIHRoZXJlIGlzIGEgcHJvYmxlbSBoZXJlOiB0aGUgc3RhbmRhcmQKLS8vIGhlYWRlcnMgZGVmaW5lIHRoaXMgbWFjcm8gaWYgdGhleSB0eXBlZGVmIHdjaGFyX3QuIEFueXdheSwgd2UncmUgbHVja3kKLS8vIGJlY2F1c2UgdGhleSBkZWZpbmUgaXQgd2l0aG91dCBhIHZhbHVlLCB3aGlsZSBJbnRlbCBDKysgZGVmaW5lcyBpdAotLy8gdG8gMS4gU28gd2UgY2FuIGNoZWNrIGl0cyB2YWx1ZSB0byBzZWUgaWYgdGhlIG1hY3JvIHdhcyBkZWZpbmVkIG5hdGl2ZWx5Ci0vLyBvciBub3QuCi0vLyBVbmRlciBVTklYLCB0aGUgc2l0dWF0aW9uIGlzIGV4YWN0bHkgdGhlIHNhbWUsIGJ1dCB0aGUgbWFjcm8gX1dDSEFSX1QKLS8vIGlzIHVzZWQgaW5zdGVhZC4KLSMgIGlmICgoX1dDSEFSX1RfREVGSU5FRCArIDApID09IDApICYmICgoX1dDSEFSX1QgKyAwKSA9PSAwKQotIyAgICBkZWZpbmUgTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QKLSMgIGVuZGlmCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKE5ETkJPT1NUX0ZVTkNUSU9OX1NDT1BFX1VTSU5HX0RFQ0xBUkFUSU9OX0JSRUFLU19BREwpCi0vLwotLy8gRmlndXJlIG91dCB3aGVuIEludGVsIGlzIGVtdWxhdGluZyB0aGlzIGdjYyBidWcKLS8vIChBbGwgSW50ZWwgdmVyc2lvbnMgcHJpb3IgdG8gOS4wLjI2LCBhbmQgdmVyc2lvbnMKLS8vIGxhdGVyIHRoYW4gdGhhdCBpZiB0aGV5IGFyZSBzZXQgdXAgdG8gZW11bGF0ZSBnY2MgMy4yCi0vLyBvciBlYXJsaWVyKToKLS8vCi0jICBpZiAoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA8PSAyKSkgfHwgKE5ETkJPT1NUX0lOVEVMIDwgOTAwKSB8fCAoX19JTlRFTF9DT01QSUxFUl9CVUlMRF9EQVRFIDwgMjAwNTA5MTIpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fU0NPUEVfVVNJTkdfREVDTEFSQVRJT05fQlJFQUtTX0FETAotIyAgZW5kaWYKLSNlbmRpZgotI2lmIChkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPCA0KSkgfHwgZGVmaW5lZChfV0lOMzIpIHx8IChORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTiA8PSAxMjAwKQotLy8gR0NDIG9yIFZDIGVtdWxhdGlvbjoKLSNkZWZpbmUgTkROQk9PU1RfTk9fVFdPX1BIQVNFX05BTUVfTE9PS1VQCi0jZW5kaWYKLS8vCi0vLyBWZXJpZnkgdGhhdCB3ZSBoYXZlIGFjdHVhbGx5IGdvdCBORE5CT09TVF9OT19JTlRSSU5TSUNfV0NIQVJfVAotLy8gc2V0IGNvcnJlY3RseSwgaWYgd2UgZG9uJ3QgZG8gdGhpcyBub3csIHdlIHdpbGwgZ2V0IGVycm9ycyBsYXRlcgotLy8gaW4gdHlwZV90cmFpdHMgY29kZSBhbW9uZyBvdGhlciB0aGluZ3MsIGdldHRpbmcgdGhpcyBjb3JyZWN0Ci0vLyBmb3IgdGhlIEludGVsIGNvbXBpbGVyIGlzIGFjdHVhbGx5IHJlbWFya2FibHkgZnJhZ2lsZSBhbmQgdHJpY2t5OgotLy8KLSNpZmRlZiBfX2NwbHVzcGx1cwotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QpCi0jaW5jbHVkZSA8Y3djaGFyPgotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXNzZXJ0X25vX2ludHJpbnNpY193Y2hhcl90OwotdGVtcGxhdGU8PiBzdHJ1Y3QgYXNzZXJ0X25vX2ludHJpbnNpY193Y2hhcl90PHdjaGFyX3Q+IHsgdHlwZWRlZiB2b2lkIHR5cGU7IH07Ci0vLyBpZiB5b3Ugc2VlIGFuIGVycm9yIGhlcmUgdGhlbiB5b3UgbmVlZCB0byB1bnNldCBORE5CT09TVF9OT19JTlRSSU5TSUNfV0NIQVJfVAotLy8gd2hlcmUgaXQgaXMgZGVmaW5lZCBhYm92ZToKLXR5cGVkZWYgYXNzZXJ0X25vX2ludHJpbnNpY193Y2hhcl90PHVuc2lnbmVkIHNob3J0Pjo6dHlwZSBhc3NlcnRfbm9faW50cmluc2ljX3djaGFyX3RfOwotI2Vsc2UKLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGFzc2VydF9pbnRyaW5zaWNfd2NoYXJfdDsKLXRlbXBsYXRlPD4gc3RydWN0IGFzc2VydF9pbnRyaW5zaWNfd2NoYXJfdDx3Y2hhcl90PiB7fTsKLS8vIGlmIHlvdSBzZWUgYW4gZXJyb3IgaGVyZSB0aGVuIGRlZmluZSBORE5CT09TVF9OT19JTlRSSU5TSUNfV0NIQVJfVCBvbiB0aGUgY29tbWFuZCBsaW5lOgotdGVtcGxhdGU8PiBzdHJ1Y3QgYXNzZXJ0X2ludHJpbnNpY193Y2hhcl90PHVuc2lnbmVkIHNob3J0PiB7fTsKLSNlbmRpZgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIrMCA+PSAxMDAwKQotIyAgaWYgX01TQ19WRVIgPj0gMTIwMAotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19NU19JTlQ2NAotIyAgZW5kaWYKLSMgIGRlZmluZSBORE5CT09TVF9OT19TV1BSSU5URgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1RXT19QSEFTRV9OQU1FX0xPT0tVUAotI2VsaWYgZGVmaW5lZChfV0lOMzIpCi0jICBkZWZpbmUgTkROQk9PU1RfRElTQUJMRV9XSU4zMgotI2VuZGlmCi0KLS8vIEkgY2hlY2tlZCB2ZXJzaW9uIDYuMCBidWlsZCAwMjAzMTJaLCBpdCBpbXBsZW1lbnRzIHRoZSBOUlZPLgotLy8gQ29ycmVjdCB0aGlzIGFzIHlvdSBmaW5kIG91dCB3aGljaCB2ZXJzaW9uIG9mIHRoZSBjb21waWxlcgotLy8gaW1wbGVtZW50ZWQgdGhlIE5SVk8gZmlyc3QuICAoRGFuaWVsIEZyZXkpCi0jaWYgKE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OID49IDYwMCkKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfTlJWTwotI2VuZGlmCi0KLS8vCi0vLyB2ZXJzaW9ucyBjaGVjazoKLS8vIHdlIGRvbid0IHN1cHBvcnQgSW50ZWwgcHJpb3IgdG8gdmVyc2lvbiA1LjA6Ci0jaWYgTkROQk9PU1RfSU5URUxfQ1hYX1ZFUlNJT04gPCA1MDAKLSMgIGVycm9yICJDb21waWxlciBub3Qgc3VwcG9ydGVkIG9yIGNvbmZpZ3VyZWQgLSBwbGVhc2UgcmVjb25maWd1cmUiCi0jZW5kaWYKLQotLy8gSW50ZWwgb24gTWFjT1MgcmVxdWlyZXMKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgZGVmaW5lZChfX0lOVEVMX0NPTVBJTEVSKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1RXT19QSEFTRV9OQU1FX0xPT0tVUAotI2VuZGlmCi0KLS8vIEludGVsIG9uIEFsdGl4IEl0YW5pdW0KLSNpZiBkZWZpbmVkKF9faXRhbml1bV9fKSAmJiBkZWZpbmVkKF9fSU5URUxfQ09NUElMRVIpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fVFdPX1BIQVNFX05BTUVfTE9PS1VQCi0jZW5kaWYKLQotLy8KLS8vIEFuIGF0dGVtcHQgdG8gdmFsdWUtaW5pdGlhbGl6ZSBhIHBvaW50ZXItdG8tbWVtYmVyIG1heSB0cmlnZ2VyIGFuCi0vLyBpbnRlcm5hbCBlcnJvciBvbiBJbnRlbCA8PSAxMS4xIChsYXN0IGNoZWNrZWQgdmVyc2lvbiksIGFzIHdhcyAKLS8vIHJlcG9ydGVkIGJ5IEpvaG4gTWFkZG9jaywgSW50ZWwgc3VwcG9ydCBpc3N1ZSA1ODk4MzIsIE1heSAyMDEwLgotLy8gTW9yZW92ZXIsIGFjY29yZGluZyB0byB0ZXN0IHJlc3VsdHMgZnJvbSBIdWFuZy1WaXN0YS14ODZfMzJfaW50ZWwsCi0vLyBpbnRlbC12Yzktd2luLTExLjEgbWF5IGxlYXZlIGEgbm9uLVBPRCBhcnJheSB1bmluaXRpYWxpemVkLCBpbiBzb21lIAotLy8gY2FzZXMgd2hlbiBpdCBzaG91bGQgYmUgdmFsdWUtaW5pdGlhbGl6ZWQuCi0vLyAoTmllbHMgRGVra2VyLCBMS0VCLCBNYXkgMjAxMCkKLS8vIEFwcGFyZW50bHkgSW50ZWwgMTIuMSAoY29tcGlsZXIgdmVyc2lvbiBudW1iZXIgOTk5OSAhISkgaGFzIHRoZSBzYW1lIGlzc3VlIChjb21waWxlciByZWdyZXNzaW9uKS4KLSNpZiBkZWZpbmVkKF9fSU5URUxfQ09NUElMRVIpCi0jICBpZiAoX19JTlRFTF9DT01QSUxFUiA8PSAxMTEwKSB8fCAoX19JTlRFTF9DT01QSUxFUiA9PSA5OTk5KSB8fCAoZGVmaW5lZChfV0lOMzIpICYmIChfX0lOVEVMX0NPTVBJTEVSIDwgMTUwMCkpCi0jICAgIGRlZmluZSBORE5CT09TVF9OT19DT01QTEVURV9WQUxVRV9JTklUSUFMSVpBVElPTgotIyAgZW5kaWYKLSNlbmRpZgotCi0vLwotLy8gRHluYW1pYyBzaGFyZWQgb2JqZWN0IChEU08pIGFuZCBkeW5hbWljLWxpbmsgbGlicmFyeSAoRExMKSBzdXBwb3J0Ci0vLwotI2lmIGRlZmluZWQoX19HTlVDX18pICYmIChfX0dOVUNfXyA+PSA0KQotIyAgZGVmaW5lIE5ETkJPT1NUX1NZTUJPTF9FWFBPUlQgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKLSMgIGRlZmluZSBORE5CT09TVF9TWU1CT0xfSU1QT1JUCi0jICBkZWZpbmUgTkROQk9PU1RfU1lNQk9MX1ZJU0lCTEUgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKLSNlbmRpZgotLy8KLS8vIEMrKzB4IGZlYXR1cmVzCi0vLyAgICAgLSBJQ0MgYWRkZWQgc3RhdGljX2Fzc2VydCBpbiAxMS4wIChmaXJzdCB2ZXJzaW9uIHdpdGggQysrMHggc3VwcG9ydCkKLS8vCi0jaWYgZGVmaW5lZChORE5CT09TVF9JTlRFTF9TVERDWFgwWCkKLSMgIHVuZGVmICBORE5CT09TVF9OT19DWFgxMV9TVEFUSUNfQVNTRVJUCi0vLwotLy8gVGhlc2UgcGFzcyBvdXIgdGVzdCBjYXNlcywgYnV0IGFyZW4ndCBvZmZpY2lhbGx5IHN1cHBvcnRlZCBhY2NvcmRpbmcgdG86Ci0vLyBodHRwOi8vc29mdHdhcmUuaW50ZWwuY29tL2VuLXVzL2FydGljbGVzL2MweC1mZWF0dXJlcy1zdXBwb3J0ZWQtYnktaW50ZWwtYy1jb21waWxlci8KLS8vCi0vLyMgIHVuZGVmICBORE5CT09TVF9OT19DWFgxMV9MQU1CREFTCi0vLyMgIHVuZGVmICBORE5CT09TVF9OT19DWFgxMV9MT0NBTF9DTEFTU19URU1QTEFURV9QQVJBTUVURVJTCi0vLyMgIHVuZGVmICBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRQotLy8jICB1bmRlZiAgTkROQk9PU1RfTk9fQ1hYMTFfQVVUT19ERUNMQVJBVElPTlMKLS8vIyAgdW5kZWYgIE5ETkJPT1NUX05PX0NYWDExX0FVVE9fTVVMVElERUNMQVJBVElPTlMKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9JTlRFTF9TVERDWFgwWCkgJiYgKE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OID49IDEyMDApCi0vLyMgIHVuZGVmICBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUyAvLyBFbmFibGluZyB0aGlzIGJyZWFrcyBGaWxlc3lzdGVtIGFuZCBFeGNlcHRpb24gbGlicmFyaWVzCi0vLyMgIHVuZGVmICBORE5CT09TVF9OT19DWFgxMV9TQ09QRURfRU5VTVMgIC8vIGRvZXNuJ3QgcmVhbGx5IHdvcmshIQotIyAgdW5kZWYgIE5ETkJPT1NUX05PX0NYWDExX0RFTEVURURfRlVOQ1RJT05TCi0jICB1bmRlZiAgTkROQk9PU1RfTk9fQ1hYMTFfREVGQVVMVEVEX0ZVTkNUSU9OUwotIyAgdW5kZWYgIE5ETkJPT1NUX05PX0NYWDExX0xBTUJEQVMKLSMgIHVuZGVmICBORE5CT09TVF9OT19DWFgxMV9MT0NBTF9DTEFTU19URU1QTEFURV9QQVJBTUVURVJTCi0jICB1bmRlZiAgTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEUKLSMgIHVuZGVmICBORE5CT09TVF9OT19DWFgxMV9BVVRPX0RFQ0xBUkFUSU9OUwotIyAgdW5kZWYgIE5ETkJPT1NUX05PX0NYWDExX0FVVE9fTVVMVElERUNMQVJBVElPTlMKLSNlbmRpZgotCi0vLyBpY2wgVmVyc2lvbiAxMi4xLjAuMjMzIEJ1aWxkIDIwMTEwODExIGFuZCBwb3NzaWJseSBzb21lIG90aGVyIGJ1aWxkcwotLy8gaGFkIGFuIGluY29ycmVjdCBfX0lOVEVMX0NPTVBJTEVSIHZhbHVlIG9mIDk5OTkuIEludGVsIHNheSB0aGlzIGhhcyBiZWVuIGZpeGVkLiAKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0lOVEVMX1NURENYWDBYKSAmJiAoTkROQk9PU1RfSU5URUxfQ1hYX1ZFUlNJT04gPiAxMjAwKQotIyAgdW5kZWYgIE5ETkJPT1NUX05PX0NYWDExX0ZVTkNUSU9OX1RFTVBMQVRFX0RFRkFVTFRfQVJHUwotIyAgdW5kZWYgIE5ETkJPT1NUX05PX0NYWDExX05VTExQVFIKLSMgIHVuZGVmICBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotIyAgdW5kZWYgIE5ETkJPT1NUX05PX1NGSU5BRV9FWFBSCi0jICB1bmRlZiAgTkROQk9PU1RfTk9fQ1hYMTFfVEVNUExBVEVfQUxJQVNFUwotIyAgdW5kZWYgIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUwotCi0vLyBodHRwOi8vc29mdHdhcmUuaW50ZWwuY29tL2VuLXVzL2FydGljbGVzL2MweC1mZWF0dXJlcy1zdXBwb3J0ZWQtYnktaW50ZWwtYy1jb21waWxlci8KLS8vIGNvbnRpbnVlcyB0byBsaXN0IHNjb3BlZCBlbnVtIHN1cHBvcnQgYXMgIlBhcnRpYWwiIAotLy8jICB1bmRlZiAgTkROQk9PU1RfTk9fQ1hYMTFfU0NPUEVEX0VOVU1TIAotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPD0gMTcwMCkKLS8vCi0vLyBBbHRob3VnaCB0aGUgSW50ZWwgY29tcGlsZXIgaXMgY2FwYWJsZSBvZiBzdXBwb3J0aW5nIHRoZXNlLCBpdCBhcHBlYXJzIG5vdCB0byBpbiBNU1ZDIGNvbXBhdGliaWxpdHkgbW9kZToKLS8vCi0jICBkZWZpbmUgIE5ETkJPT1NUX05PX0NYWDExX0hEUl9JTklUSUFMSVpFUl9MSVNUCi0jICBkZWZpbmUgIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUwotIyAgZGVmaW5lICBORE5CT09TVF9OT19DWFgxMV9ERUxFVEVEX0ZVTkNUSU9OUwotIyAgZGVmaW5lICBORE5CT09TVF9OT19DWFgxMV9ERUZBVUxURURfRlVOQ1RJT05TCi0jICBkZWZpbmUgIE5ETkJPT1NUX05PX0NYWDExX1RFTVBMQVRFX0FMSUFTRVMKLSNlbmRpZgotCi0jaWYgKE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OIDwgMTIwMCkKLS8vCi0vLyBmZW52LmggYXBwZWFycyBub3QgdG8gd29yayB3aXRoIEludGVsIHByaW9yIHRvIDEyLjA6Ci0vLwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0ZFTlZfSAotI2VuZGlmCi0KLS8vCi0vLyBsYXN0IGtub3duIGFuZCBjaGVja2VkIHZlcnNpb246Ci0jaWYgKE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OID4gMTIwMCkKLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfQVNTRVJUX0NPTkZJRykKLSMgICAgIGVycm9yICJVbmtub3duIGNvbXBpbGVyIHZlcnNpb24gLSBwbGVhc2UgcnVuIHRoZSBjb25maWd1cmUgdGVzdHMgYW5kIHJlcG9ydCB0aGUgcmVzdWx0cyIKLSMgIGVsaWYgZGVmaW5lZChfTVNDX1ZFUikKLS8vCi0vLyAgICAgIFdlIGRvbid0IGVtaXQgdGhpcyB3YXJuaW5nIGFueSBtb3JlLCBzaW5jZSB3ZSBoYXZlIHNvIGZldwotLy8gICAgICBkZWZlY3QgbWFjcm9zIHNldCBhbnl3YXkgKGp1c3QgdGhlIG9uZSkuCi0vLwotLy8jICAgICBwcmFnbWEgbWVzc2FnZSgiVW5rbm93biBjb21waWxlciB2ZXJzaW9uIC0gcGxlYXNlIHJ1biB0aGUgY29uZmlndXJlIHRlc3RzIGFuZCByZXBvcnQgdGhlIHJlc3VsdHMiKQotIyAgZW5kaWYKLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9rYWkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIva2FpLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzgzMjBmNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9rYWkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEuIAotLy8gIChDKSBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMi4gCi0vLyAgKEMpIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDIuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIEthaSBDKysgY29tcGlsZXIgc2V0dXA6Ci0KLSNpbmNsdWRlICJuZG5ib29zdC9jb25maWcvY29tcGlsZXIvY29tbW9uX2VkZy5ocHAiCi0KLSMgICBpZiAoX19LQ0NfVkVSU0lPTiA8PSA0MDAxKSB8fCAhZGVmaW5lZChORE5CT09TVF9TVFJJQ1RfQ09ORklHKQotICAgICAgLy8gYXQgbGVhc3Qgb24gU3VuLCB0aGUgY29udGVudHMgb2YgPGN3Y2hhcj4gaXMgbm90IGluIG5hbWVzcGFjZSBzdGQKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRQotIyAgIGVuZGlmCi0KLS8vIHNlZSBhbHNvIGNvbW1vbl9lZGcuaHBwIHdoaWNoIG5lZWRzIGEgc3BlY2lhbCBjaGVjayBmb3IgX19LQ0MKLSMgaWYgIWRlZmluZWQoX0VYQ0VQVElPTlMpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0VYQ0VQVElPTlMpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fRVhDRVBUSU9OUwotIyBlbmRpZgotCi0vLwotLy8gbGFzdCBrbm93biBhbmQgY2hlY2tlZCB2ZXJzaW9uIGlzIDQwMDE6Ci0jaWYgKF9fS0NDX1ZFUlNJT04gPiA0MDAxKQotIyAgaWYgZGVmaW5lZChORE5CT09TVF9BU1NFUlRfQ09ORklHKQotIyAgICAgZXJyb3IgIlVua25vd24gY29tcGlsZXIgdmVyc2lvbiAtIHBsZWFzZSBydW4gdGhlIGNvbmZpZ3VyZSB0ZXN0cyBhbmQgcmVwb3J0IHRoZSByZXN1bHRzIgotIyAgZW5kaWYKLSNlbmRpZgotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvbWV0cm93ZXJrcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9tZXRyb3dlcmtzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTUxNjFjZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9tZXRyb3dlcmtzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMS4gCi0vLyAgKEMpIENvcHlyaWdodCBEYXJpbiBBZGxlciAyMDAxLiAKLS8vICAoQykgQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEuIAotLy8gIChDKSBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMSAtIDIwMDIuIAotLy8gIChDKSBDb3B5cmlnaHQgQmVtYW4gRGF3ZXMgMjAwMSAtIDIwMDMuIAotLy8gIChDKSBDb3B5cmlnaHQgU3RlZmFuIFNsYXBldGEgMjAwNC4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyAgTWV0cm93ZXJrcyBDKysgY29tcGlsZXIgc2V0dXA6Ci0KLS8vIGxvY2FsZSBzdXBwb3J0IGlzIGRpc2FibGVkIHdoZW4gbGlua2luZyB3aXRoIHRoZSBkeW5hbWljIHJ1bnRpbWUKLSMgICBpZmRlZiBfTVNMX05PX0xPQ0FMRQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9MT0NBTEUKLSMgICBlbmRpZiAKLQotIyAgIGlmIF9fTVdFUktTX18gPD0gMHgyMzAxICAvLyA1LjMKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORwotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1BPSU5URVJfVE9fTUVNQkVSX0NPTlNUCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fREVQRU5ERU5UX1RZUEVTX0lOX1RFTVBMQVRFX1ZBTFVFX1BBUkFNRVRFUlMKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVfS0VZV09SRAotIyAgIGVuZGlmCi0KLSMgICBpZiBfX01XRVJLU19fIDw9IDB4MjQwMSAgLy8gNi4yCi0vLyMgICAgIGRlZmluZSBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORwotIyAgIGVuZGlmCi0KLSMgICBpZihfX01XRVJLU19fIDw9IDB4MjQwNykgIC8vIDcueAotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX01FTUJFUl9GVU5DVElPTl9TUEVDSUFMSVpBVElPTlMKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19VTlJFQUNIQUJMRV9SRVRVUk5fREVURUNUSU9OCi0jICAgZW5kaWYKLQotIyAgIGlmKF9fTVdFUktTX18gPD0gMHgzMDAzKSAgLy8gOC54Ci0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fU0ZJTkFFCi0jICAgIGVuZGlmCi0KLS8vIHRoZSAifHwgIWRlZmluZWQoTkROQk9PU1RfU1RSSUNUX0NPTkZJRykiIHBhcnQgc2hvdWxkIGFwcGx5IHRvIHRoZSBsYXN0Ci0vLyB0ZXN0ZWQgdmVyc2lvbiAqb25seSo6Ci0jICAgaWYoX19NV0VSS1NfXyA8PSAweDMyMDcpIHx8ICFkZWZpbmVkKE5ETkJPT1NUX1NUUklDVF9DT05GSUcpIC8vIDkuNgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX01FTUJFUl9URU1QTEFURV9GUklFTkRTCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fSVNfQUJTVFJBQ1QKLSMgICAgZW5kaWYKLQotI2lmICFfX29wdGlvbih3Y2hhcl90eXBlKQotIyAgIGRlZmluZSBORE5CT09TVF9OT19JTlRSSU5TSUNfV0NIQVJfVAotI2VuZGlmCi0KLSNpZiAhX19vcHRpb24oZXhjZXB0aW9ucykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fRVhDRVBUSU9OUykKLSMgICBkZWZpbmUgTkROQk9PU1RfTk9fRVhDRVBUSU9OUwotI2VuZGlmCi0KLSNpZiAoX19JTlRFTF9fICYmIF9XSU4zMikgfHwgKF9fUE9XRVJQQ19fICYmIG1hY2ludG9zaCkKLSMgICBpZiBfX01XRVJLU19fID09IDB4MzAwMAotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX1ZFUlNJT04gOC4wCi0jICAgZWxpZiBfX01XRVJLU19fID09IDB4MzAwMQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX1ZFUlNJT04gOC4xCi0jICAgZWxpZiBfX01XRVJLU19fID09IDB4MzAwMgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX1ZFUlNJT04gOC4yCi0jICAgZWxpZiBfX01XRVJLU19fID09IDB4MzAwMwotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX1ZFUlNJT04gOC4zCi0jICAgZWxpZiBfX01XRVJLU19fID09IDB4MzIwMAotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX1ZFUlNJT04gOS4wCi0jICAgZWxpZiBfX01XRVJLU19fID09IDB4MzIwMQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX1ZFUlNJT04gOS4xCi0jICAgZWxpZiBfX01XRVJLU19fID09IDB4MzIwMgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX1ZFUlNJT04gOS4yCi0jICAgZWxpZiBfX01XRVJLU19fID09IDB4MzIwNAotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX1ZFUlNJT04gOS4zCi0jICAgZWxpZiBfX01XRVJLU19fID09IDB4MzIwNQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX1ZFUlNJT04gOS40Ci0jICAgZWxpZiBfX01XRVJLU19fID09IDB4MzIwNgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX1ZFUlNJT04gOS41Ci0jICAgZWxpZiBfX01XRVJLU19fID09IDB4MzIwNwotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX1ZFUlNJT04gOS42Ci0jICAgZWxzZQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX1ZFUlNJT04gX19NV0VSS1NfXwotIyAgIGVuZGlmCi0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX1ZFUlNJT04gX19NV0VSS1NfXwotI2VuZGlmCi0KLS8vCi0vLyBDKysweCBmZWF0dXJlcwotLy8KLS8vICAgU2VlIGJvb3N0XGNvbmZpZ1xzdWZmaXguaHBwIGZvciBORE5CT09TVF9OT19MT05HX0xPTkcKLS8vCi0jaWYgX19NV0VSS1NfXyA+IDB4MzIwNiAmJiBfX29wdGlvbihydmFsdWVfcmVmcykKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfUlZBTFVFX1JFRlMKLSNlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMgICAgICAgICAgICAgIAotI2VuZGlmCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0FVVE9fREVDTEFSQVRJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0FVVE9fTVVMVElERUNMQVJBVElPTlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjE2X1QKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjMyX1QKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQ09OU1RFWFBSCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFX04zMjc2Ci0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFRkFVTFRFRF9GVU5DVElPTlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVMRVRFRF9GVU5DVElPTlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfRVhQTElDSVRfQ09OVkVSU0lPTl9PUEVSQVRPUlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfRVhURVJOX1RFTVBMQVRFCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0ZVTkNUSU9OX1RFTVBMQVRFX0RFRkFVTFRfQVJHUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9MQU1CREFTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0xPQ0FMX0NMQVNTX1RFTVBMQVRFX1BBUkFNRVRFUlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTk9FWENFUFQKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTlVMTFBUUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9SQU5HRV9CQVNFRF9GT1IKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUkFXX0xJVEVSQUxTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NDT1BFRF9FTlVNUwotI2RlZmluZSBORE5CT09TVF9OT19TRklOQUVfRVhQUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9TVEFUSUNfQVNTRVJUCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1RFTVBMQVRFX0FMSUFTRVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVU5JQ09ERV9MSVRFUkFMUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfTUFDUk9TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1VOSUZJRURfSU5JVElBTElaQVRJT05fU1lOVEFYCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1VTRVJfREVGSU5FRF9MSVRFUkFMUwotCi0jZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSICJNZXRyb3dlcmtzIENvZGVXYXJyaW9yIEMrKyB2ZXJzaW9uICIgTkROQk9PU1RfU1RSSU5HSVpFKE5ETkJPT1NUX0NPTVBJTEVSX1ZFUlNJT04pCi0KLS8vCi0vLyB2ZXJzaW9ucyBjaGVjazoKLS8vIHdlIGRvbid0IHN1cHBvcnQgTWV0cm93ZXJrcyBwcmlvciB0byB2ZXJzaW9uIDUuMzoKLSNpZiBfX01XRVJLU19fIDwgMHgyMzAxCi0jICBlcnJvciAiQ29tcGlsZXIgbm90IHN1cHBvcnRlZCBvciBjb25maWd1cmVkIC0gcGxlYXNlIHJlY29uZmlndXJlIgotI2VuZGlmCi0vLwotLy8gbGFzdCBrbm93biBhbmQgY2hlY2tlZCB2ZXJzaW9uOgotI2lmIChfX01XRVJLU19fID4gMHgzMjA1KQotIyAgaWYgZGVmaW5lZChORE5CT09TVF9BU1NFUlRfQ09ORklHKQotIyAgICAgZXJyb3IgIlVua25vd24gY29tcGlsZXIgdmVyc2lvbiAtIHBsZWFzZSBydW4gdGhlIGNvbmZpZ3VyZSB0ZXN0cyBhbmQgcmVwb3J0IHRoZSByZXN1bHRzIgotIyAgZW5kaWYKLSNlbmRpZgotCi0KLQotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9tcHcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvbXB3LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODNhYTI3NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9tcHcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEgLSAyMDAyLiAKLS8vICAoQykgQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyAgTVBXIEMrKyBjb21waWxlcnMgc2V0dXA6Ci0KLSMgICBpZiAgICBkZWZpbmVkKF9fU0NfXykKLSMgICAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUiAiTVBXIFNDcHAgdmVyc2lvbiAiIE5ETkJPT1NUX1NUUklOR0laRShfX1NDX18pCi0jICAgZWxpZiBkZWZpbmVkKF9fTVJDX18pCi0jICAgICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVIgIk1QVyBNckNwcCB2ZXJzaW9uICIgTkROQk9PU1RfU1RSSU5HSVpFKF9fTVJDX18pCi0jICAgZWxzZQotIyAgICAgZXJyb3IgIlVzaW5nIE1QVyBjb21waWxlciBjb25maWd1cmF0aW9uIGJ5IG1pc3Rha2UuICBQbGVhc2UgdXBkYXRlLiIKLSMgICBlbmRpZgotCi0vLwotLy8gTVBXIDguOTA6Ci0vLwotI2lmIChNUFdfQ1BMVVMgPD0gMHg4OTApIHx8ICFkZWZpbmVkKE5ETkJPT1NUX1NUUklDVF9DT05GSUcpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1ZfU1BFQ0lBTElaQVRJT05TCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fREVQRU5ERU5UX05FU1RFRF9ERVJJVkFUSU9OUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0RFUEVOREVOVF9UWVBFU19JTl9URU1QTEFURV9WQUxVRV9QQVJBTUVURVJTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fSU5DTEFTU19NRU1CRVJfSU5JVElBTElaQVRJT04KLSMgIGRlZmluZSBORE5CT09TVF9OT19JTlRSSU5TSUNfV0NIQVJfVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSMgIGRlZmluZSBORE5CT09TVF9OT19VU0lOR19URU1QTEFURQotCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1dDSEFSCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fTElNSVRTX0NPTVBJTEVfVElNRV9DT05TVEFOVFMKLQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9BTExPQ0FUT1IgLyogYWN0dWFsbHkgYSBidWcgd2l0aCBjb25zdCByZWZlcmVuY2Ugb3ZlcmxvYWRpbmcgKi8KLQotI2VuZGlmCi0KLS8vCi0vLyBDKysweCBmZWF0dXJlcwotLy8KLS8vICAgU2VlIGJvb3N0XGNvbmZpZ1xzdWZmaXguaHBwIGZvciBORE5CT09TVF9OT19MT05HX0xPTkcKLS8vCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0FVVE9fREVDTEFSQVRJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0FVVE9fTVVMVElERUNMQVJBVElPTlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjE2X1QKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjMyX1QKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQ09OU1RFWFBSCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFX04zMjc2Ci0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFRkFVTFRFRF9GVU5DVElPTlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVMRVRFRF9GVU5DVElPTlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfRVhQTElDSVRfQ09OVkVSU0lPTl9PUEVSQVRPUlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfRVhURVJOX1RFTVBMQVRFCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0ZVTkNUSU9OX1RFTVBMQVRFX0RFRkFVTFRfQVJHUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9MQU1CREFTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0xPQ0FMX0NMQVNTX1RFTVBMQVRFX1BBUkFNRVRFUlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTk9FWENFUFQKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTlVMTFBUUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9SQU5HRV9CQVNFRF9GT1IKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUkFXX0xJVEVSQUxTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NDT1BFRF9FTlVNUwotI2RlZmluZSBORE5CT09TVF9OT19TRklOQUVfRVhQUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9TVEFUSUNfQVNTRVJUCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1RFTVBMQVRFX0FMSUFTRVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVU5JQ09ERV9MSVRFUkFMUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfTUFDUk9TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1VOSUZJRURfSU5JVElBTElaQVRJT05fU1lOVEFYCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1VTRVJfREVGSU5FRF9MSVRFUkFMUwotCi0vLwotLy8gdmVyc2lvbnMgY2hlY2s6Ci0vLyB3ZSBkb24ndCBzdXBwb3J0IE1QVyBwcmlvciB0byB2ZXJzaW9uIDguOToKLSNpZiBNUFdfQ1BMVVMgPCAweDg5MAotIyAgZXJyb3IgIkNvbXBpbGVyIG5vdCBzdXBwb3J0ZWQgb3IgY29uZmlndXJlZCAtIHBsZWFzZSByZWNvbmZpZ3VyZSIKLSNlbmRpZgotLy8KLS8vIGxhc3Qga25vd24gYW5kIGNoZWNrZWQgdmVyc2lvbiBpcyAweDg5MDoKLSNpZiAoTVBXX0NQTFVTID4gMHg4OTApCi0jICBpZiBkZWZpbmVkKE5ETkJPT1NUX0FTU0VSVF9DT05GSUcpCi0jICAgICBlcnJvciAiVW5rbm93biBjb21waWxlciB2ZXJzaW9uIC0gcGxlYXNlIHJ1biB0aGUgY29uZmlndXJlIHRlc3RzIGFuZCByZXBvcnQgdGhlIHJlc3VsdHMiCi0jICBlbmRpZgotI2VuZGlmCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvbnZjYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9udmNjLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzM1MDdjZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9udmNjLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEVyaWMgSm91cmRhbm5lYXUsIEpvZWwgRmFsY291IDIwMTAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLS8vICBOVklESUEgQ1VEQSBDKysgY29tcGlsZXIgc2V0dXAKLQotI2lmbmRlZiBORE5CT09TVF9DT01QSUxFUgotIyAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSICJOVklESUEgQ1VEQSBDKysgQ29tcGlsZXIiCi0jZW5kaWYKLQotLy8gTlZJRElBIFNwZWNpZmljIHN1cHBvcnQKLS8vIE5ETkJPT1NUX0dQVV9FTkFCTEVEIDogRmxhZyBhIGZ1bmN0aW9uIG9yIGEgbWV0aG9kIGFzIGJlaW5nIGVuYWJsZWQgb24gdGhlIGhvc3QgYW5kIGRldmljZQotI2RlZmluZSBORE5CT09TVF9HUFVfRU5BQkxFRCBfX2hvc3RfXyBfX2RldmljZV9fCi0KLS8vIEJvb3N0IHN1cHBvcnQgbWFjcm8gZm9yIE5WQ0MgCi0vLyBOVkNDIEJhc2ljYWxseSBiZWhhdmVzIGxpa2Ugc29tZSBmbGF2b3Igb2YgTVNWQzYgKyBzb21lIHNwZWNpZmljIHF1aXJrcwotI2lmZGVmIF9fR05VQ19fCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvY29tcGlsZXIvZ2NjLmhwcD4KLQotI2VsaWYgZGVmaW5lZChfTVNDX1ZFUikKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9jb21waWxlci92aXN1YWxjLmhwcD4KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9wYXRoc2NhbGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvcGF0aHNjYWxlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWRkYWViOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9wYXRoc2NhbGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgQnJ5Y2UgTGVsYmFjaCAyMDExCi0KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLS8vIFBhdGhTY2FsZSBFS09QYXRoIEMrKyBDb21waWxlcgotCi0jaWZuZGVmIE5ETkJPT1NUX0NPTVBJTEVSCi0jICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVIgIlBhdGhTY2FsZSBFS09QYXRoIEMrKyBDb21waWxlciB2ZXJzaW9uICIgX19QQVRIU0NBTEVfXwotI2VuZGlmCi0KLSNpZiBfX1BBVEhDQ19fID49IDQKLSMgIGRlZmluZSBORE5CT09TVF9NU1ZDNl9NRU1CRVJfVEVNUExBVEVTCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1VOSVNURF9ICi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1NURElOVF9ICi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1NJR0FDVElPTgotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19TQ0hFRF9ZSUVMRAotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19USFJFQURTCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1BUSFJFQURTCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1BUSFJFQURfWUlFTEQKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfUFRIUkVBRF9NVVRFWEFUVFJfU0VUVFlQRQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19QQVJUSUFMX1NURF9BTExPQ0FUT1IKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfTlJWTwotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19OTF9UWVBFU19ICi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX05BTk9TTEVFUAotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19MT05HX0xPTkcKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfTE9HMVAKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfR0VUVElNRU9GREFZCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX0VYUE0xCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX0RJUkVOVF9ICi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX0NMT0NLX0dFVFRJTUUKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9VTklDT0RFX0xJVEVSQUxTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVEVNUExBVEVfQUxJQVNFUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NUQVRJQ19BU1NFUlQKLSMgIGRlZmluZSBORE5CT09TVF9OT19TRklOQUVfRVhQUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NDT1BFRF9FTlVNUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUkFOR0VfQkFTRURfRk9SCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUkFXX0xJVEVSQUxTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTlVMTFBUUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05VTUVSSUNfTElNSVRTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTk9FWENFUFQKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9MQU1CREFTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTE9DQUxfQ0xBU1NfVEVNUExBVEVfUEFSQU1FVEVSUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX01TX0lOVDY0X05VTUVSSUNfTElNSVRTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfRlVOQ1RJT05fVEVNUExBVEVfREVGQVVMVF9BUkdTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfRVhQTElDSVRfQ09OVkVSU0lPTl9PUEVSQVRPUlMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUxFVEVEX0ZVTkNUSU9OUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFRkFVTFRFRF9GVU5DVElPTlMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFX04zMjc2Ci0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQ09OU1RFWFBSCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ09NUExFVEVfVkFMVUVfSU5JVElBTElaQVRJT04KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9DSEFSMzJfVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NIQVIxNl9UCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQVVUT19NVUxUSURFQ0xBUkFUSU9OUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0FVVE9fREVDTEFSQVRJT05TCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVU5JRklFRF9JTklUSUFMSVpBVElPTl9TWU5UQVgKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVU5PUkRFUkVEX1NFVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9VTk9SREVSRURfTUFQCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RZUEVJTkRFWAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UVVBMRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9USFJFQUQKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfU1lTVEVNX0VSUk9SCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1JFR0VYCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1JBVElPCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1JBTkRPTQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9NVVRFWAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9JTklUSUFMSVpFUl9MSVNUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0ZVVFVSRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GT1JXQVJEX0xJU1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQ09ORElUSU9OX1ZBUklBQkxFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NPREVDVlQKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQ0hST05PCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVVNFUl9ERUZJTkVEX0xJVEVSQUxTCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvcGdpLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL3BnaS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3YTkyZGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvcGdpLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExOSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBOb2VsIEJlbGNvdXJ0IDIwMDcuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIFBHSSBDKysgY29tcGlsZXIgc2V0dXA6Ci0KLSNkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfVkVSU0lPTiBfX1BHSUNfXyMjX19QR0lDX01JTk9SX18KLSNkZWZpbmUgTkROQk9PU1RfQ09NUElMRVIgIlBHSSBjb21waWxlciB2ZXJzaW9uICIgTkROQk9PU1RfU1RSSU5HSVpFKE5ETkJPT1NUX0NPTVBJTEVSX1ZFUlNJT04pCi0KLS8vCi0vLyBUaHJlYWRpbmcgc3VwcG9ydDoKLS8vIFR1cm4gdGhpcyBvbiB1bmNvbmRpdGlvbmFsbHkgaGVyZSwgaXQgd2lsbCBnZXQgdHVybmVkIG9mZiBhZ2FpbiBsYXRlcgotLy8gaWYgbm8gdGhyZWFkaW5nIEFQSSBpcyBkZXRlY3RlZC4KLS8vCi0KLSNpZiBfX1BHSUNfXyA+PSAxMQotCi0vLyBvcHRpb25zIHJlcXVlc3RlZCBieSBjb25maWd1cmUgLS1lbmFibGUtdGVzdAotI2RlZmluZSBORE5CT09TVF9IQVNfUFRIUkVBRFMKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1RIUkVBRFMKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1BUSFJFQURfWUlFTEQKLSNkZWZpbmUgTkROQk9PU1RfSEFTX05SVk8KLSNkZWZpbmUgTkROQk9PU1RfSEFTX0xPTkdfTE9ORwotCi0vLyBvcHRpb25zIC0tZW5hYmxlLXRlc3Qgd2FudHMgdW5kZWZpbmVkCi0jdW5kZWYgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UKLSN1bmRlZiBORE5CT09TVF9OT19FWENFUFRJT05fU1REX05BTUVTUEFDRQotI3VuZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUKLQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTl9TQ09QRV9VU0lOR19ERUNMQVJBVElPTl9CUkVBS1NfQURMCi0jZGVmaW5lIE5ETkJPT1NUX05PX1RXT19QSEFTRV9OQU1FX0xPT0tVUAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVVRPX01VTFRJREVDTEFSQVRJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0FVVE9fREVDTEFSQVRJT05TCi0KLSNlbGlmIF9fUEdJQ19fID49IDEwCi0KLS8vIG9wdGlvbnMgcmVxdWVzdGVkIGJ5IGNvbmZpZ3VyZSAtLWVuYWJsZS10ZXN0Ci0jZGVmaW5lIE5ETkJPT1NUX0hBU19USFJFQURTCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19OUlZPCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19MT05HX0xPTkcKLQotLy8gb3B0aW9ucyAtLWVuYWJsZS10ZXN0IHdhbnRzIHVuZGVmaW5lZAotI3VuZGVmIE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFCi0jdW5kZWYgTkROQk9PU1RfTk9fRVhDRVBUSU9OX1NURF9OQU1FU1BBQ0UKLSN1bmRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FCi0KLSNlbGlmIF9fUEdJQ19fID49IDcKLQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTl9TQ09QRV9VU0lOR19ERUNMQVJBVElPTl9CUkVBS1NfQURMCi0jZGVmaW5lIE5ETkJPT1NUX05PX1RXT19QSEFTRV9OQU1FX0xPT0tVUAotI2RlZmluZSBORE5CT09TVF9OT19TV1BSSU5URgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVVRPX01VTFRJREVDTEFSQVRJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0FVVE9fREVDTEFSQVRJT05TCi0KLSNlbHNlCi0KLSMgIGVycm9yICJQZ2kgY29tcGlsZXIgbm90IGNvbmZpZ3VyZWQgLSBwbGVhc2UgcmVjb25maWd1cmUiCi0KLSNlbmRpZgotLy8KLS8vIEMrKzB4IGZlYXR1cmVzCi0vLwotLy8gICBTZWUgYm9vc3RcY29uZmlnXHN1ZmZpeC5ocHAgZm9yIE5ETkJPT1NUX05PX0xPTkdfTE9ORwotLy8KLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjE2X1QKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjMyX1QKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQ09OU1RFWFBSCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFX04zMjc2Ci0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFRkFVTFRFRF9GVU5DVElPTlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVMRVRFRF9GVU5DVElPTlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfRVhQTElDSVRfQ09OVkVSU0lPTl9PUEVSQVRPUlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfRVhURVJOX1RFTVBMQVRFCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0ZVTkNUSU9OX1RFTVBMQVRFX0RFRkFVTFRfQVJHUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9MQU1CREFTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0xPQ0FMX0NMQVNTX1RFTVBMQVRFX1BBUkFNRVRFUlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTk9FWENFUFQKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTlVMTFBUUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9OVU1FUklDX0xJTUlUUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9SQU5HRV9CQVNFRF9GT1IKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUkFXX0xJVEVSQUxTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NDT1BFRF9FTlVNUwotI2RlZmluZSBORE5CT09TVF9OT19TRklOQUVfRVhQUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9TVEFUSUNfQVNTRVJUCi0jZGVmaW5lIE5ETkJPT1NUX05PX1NXUFJJTlRGCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1RFTVBMQVRFX0FMSUFTRVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVU5JQ09ERV9MSVRFUkFMUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfTUFDUk9TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1VOSUZJRURfSU5JVElBTElaQVRJT05fU1lOVEFYCi0KLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1VOT1JERVJFRF9TRVQKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1VOT1JERVJFRF9NQVAKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RZUEVJTkRFWAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVFlQRV9UUkFJVFMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RVUExFCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9USFJFQUQKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1NZU1RFTV9FUlJPUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfUkVHRVgKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1JBVElPCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9SQU5ET00KLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX01VVEVYCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9JTklUSUFMSVpFUl9MSVNUCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GVVRVUkUKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0ZPUldBUkRfTElTVAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQ09ORElUSU9OX1ZBUklBQkxFCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9DT0RFQ1ZUCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9DSFJPTk8KLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0FSUkFZCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1VTRVJfREVGSU5FRF9MSVRFUkFMUwotCi0vLwotLy8gdmVyc2lvbiBjaGVjazoKLS8vIHByb2JhYmx5IG5vdGhpbmcgdG8gZG8gaGVyZT8KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvc2dpX21pcHNwcm8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvc2dpX21pcHNwcm8uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZWJlMjQ1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL3NnaV9taXBzcHJvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAxIC0gMjAwMi4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyAgU0dJIEMrKyBjb21waWxlciBzZXR1cDoKLQotI2RlZmluZSBORE5CT09TVF9DT01QSUxFUiAiU0dJIElyaXggY29tcGlsZXIgdmVyc2lvbiAiIE5ETkJPT1NUX1NUUklOR0laRShfQ09NUElMRVJfVkVSU0lPTikKLQotI2luY2x1ZGUgIm5kbmJvb3N0L2NvbmZpZy9jb21waWxlci9jb21tb25fZWRnLmhwcCIKLQotLy8KLS8vIFRocmVhZGluZyBzdXBwb3J0OgotLy8gVHVybiB0aGlzIG9uIHVuY29uZGl0aW9uYWxseSBoZXJlLCBpdCB3aWxsIGdldCB0dXJuZWQgb2ZmIGFnYWluIGxhdGVyCi0vLyBpZiBubyB0aHJlYWRpbmcgQVBJIGlzIGRldGVjdGVkLgotLy8KLSNkZWZpbmUgTkROQk9PU1RfSEFTX1RIUkVBRFMKLSNkZWZpbmUgTkROQk9PU1RfTk9fVFdPX1BIQVNFX05BTUVfTE9PS1VQCi0KLSN1bmRlZiBORE5CT09TVF9OT19TV1BSSU5URgotI3VuZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUKLQotLy8KLS8vIHZlcnNpb24gY2hlY2s6Ci0vLyBwcm9iYWJseSBub3RoaW5nIHRvIGRvIGhlcmU/Ci0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvc3VucHJvX2NjLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL3N1bnByb19jYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiMzQ0ZTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvc3VucHJvX2NjLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1MCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMS4gCi0vLyAgKEMpIENvcHlyaWdodCBKZW5zIE1hdXJlciAyMDAxIC0gMjAwMy4gCi0vLyAgKEMpIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAyLiAKLS8vICAoQykgQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMiAtIDIwMDMuIAotLy8gIChDKSBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMi4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyAgU3VuIEMrKyBjb21waWxlciBzZXR1cDoKLQotIyAgICBpZiBfX1NVTlBST19DQyA8PSAweDUwMAotIyAgICAgIGRlZmluZSBORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVTCi0jICAgICAgZGVmaW5lIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HCi0jICAgIGVuZGlmCi0KLSMgICAgaWYgKF9fU1VOUFJPX0NDIDw9IDB4NTIwKQotICAgICAgIC8vCi0gICAgICAgLy8gU3VucHJvIDUuMiBhbmQgZWFybGVyOgotICAgICAgIC8vCi0gICAgICAgLy8gYWx0aG91Z2ggc3VucHJvIDUuMiBzdXBwb3J0cyB0aGUgc3ludGF4IGZvcgotICAgICAgIC8vIGlubGluZSBpbml0aWFsaXphdGlvbiBpdCBvZnRlbiBnZXRzIHRoZSB2YWx1ZQotICAgICAgIC8vIHdyb25nLCBlc3BlY2lhbGx5IHdoZXJlIHRoZSB2YWx1ZSBpcyBjb21wdXRlZAotICAgICAgIC8vIGZyb20gb3RoZXIgY29uc3RhbnRzIChKIE1hZGRvY2sgNnRoIE1heSAyMDAxKQotIyAgICAgIGRlZmluZSBORE5CT09TVF9OT19JTkNMQVNTX01FTUJFUl9JTklUSUFMSVpBVElPTgotCi0gICAgICAgLy8gQWx0aG91Z2ggc3VucHJvIDUuMiBzdXBwb3J0cyB0aGUgc3ludGF4IGZvcgotICAgICAgIC8vIHBhcnRpYWwgc3BlY2lhbGl6YXRpb24sIGl0IG9mdGVuIHNlZW1zIHRvCi0gICAgICAgLy8gYmluZCB0byB0aGUgd3Jvbmcgc3BlY2lhbGl6YXRpb24uICBCZXR0ZXIKLSAgICAgICAvLyB0byBkaXNhYmxlIGl0IHVudGlsIHN1cHBwb3J0IGJlY29tZXMgbW9yZSBzdGFibGUKLSAgICAgICAvLyAoSiBNYWRkb2NrIDZ0aCBNYXkgMjAwMSkuCi0jICAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSMgICAgZW5kaWYKLQotIyAgICBpZiAoX19TVU5QUk9fQ0MgPD0gMHg1MzApIAotICAgICAgIC8vIFJlcXVlc3RpbmcgZGVidWcgaW5mbyAoLWcpIHdpdGggQm9vc3QuUHl0aG9uIHJlc3VsdHMKLSAgICAgICAvLyBpbiBhbiBpbnRlcm5hbCBjb21waWxlciBlcnJvciBmb3IgInN0YXRpYyBjb25zdCIKLSAgICAgICAvLyBpbml0aWFsaXplZCBpbi1jbGFzcy4KLSAgICAgICAvLyAgICA+PiBBc3NlcnRpb246ICAgKC4uL2xpbmtzL2RiZ19jc3RhYnMuY2MsIGxpbmUgNjExKQotICAgICAgIC8vICAgICAgICAgd2hpbGUgcHJvY2Vzc2luZyAuLi90ZXN0LmNwcCBhdCBsaW5lIDAuCi0gICAgICAgLy8gKEplbnMgTWF1cmVyIGFjY29yZGluZyB0byBHb3R0ZnJpZWQgR2Fuc3NhdWdlIDA0IE1hciAyMDAyKQotIyAgICAgIGRlZmluZSBORE5CT09TVF9OT19JTkNMQVNTX01FTUJFUl9JTklUSUFMSVpBVElPTgotCi0gICAgICAgLy8gU3VuUHJvIDUuMyBoYXMgYmV0dGVyIHN1cHBvcnQgZm9yIHBhcnRpYWwgc3BlY2lhbGl6YXRpb24sCi0gICAgICAgLy8gYnV0IGJyZWFrcyB3aGVuIGNvbXBpbGluZyBzdGQ6Omxlc3M8c2hhcmVkX3B0cjxUPiA+Ci0gICAgICAgLy8gKEplbnMgTWF1cmVyIDQgTm92IDIwMDEpLgotCi0gICAgICAgLy8gc3RkOjpsZXNzIHNwZWNpYWxpemF0aW9uIGZpeGVkIGFzIHJlcG9ydGVkIGJ5IEdlb3JnZQotICAgICAgIC8vIEhlaW50emVsbWFuOyBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uIHJlLWVuYWJsZWQKLSAgICAgICAvLyAoUGV0ZXIgRGltb3YgMTcgSmFuIDIwMDIpCi0KLS8vIyAgICAgIGRlZmluZSBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLSAgICAgICAvLyBpbnRlZ3JhbCBjb25zdGFudCBleHByZXNzaW9ucyB3aXRoIDY0IGJpdCBudW1iZXJzIGZhaWwKLSMgICAgICBkZWZpbmUgTkROQk9PU1RfTk9fSU5URUdSQUxfSU5UNjRfVAotIyAgICBlbmRpZgotCi0jICAgIGlmIChfX1NVTlBST19DQyA8IDB4NTcwKSAKLSMgICAgICBkZWZpbmUgTkROQk9PU1RfTk9fVEVNUExBVEVfVEVNUExBVEVTCi0gICAgICAgLy8gc2VlIGh0dHA6Ly9saXN0cy5ib29zdC5vcmcvTWFpbEFyY2hpdmVzL2Jvb3N0L21zZzQ3MTg0LnBocAotICAgICAgIC8vIGFuZCBodHRwOi8vbGlzdHMuYm9vc3Qub3JnL01haWxBcmNoaXZlcy9ib29zdC9tc2c0NzIyMC5waHAKLSMgICAgICBkZWZpbmUgTkROQk9PU1RfTk9fSU5DTEFTU19NRU1CRVJfSU5JVElBTElaQVRJT04KLSMgICAgICBkZWZpbmUgTkROQk9PU1RfTk9fU0ZJTkFFCi0jICAgICAgZGVmaW5lIE5ETkJPT1NUX05PX0FSUkFZX1RZUEVfU1BFQ0lBTElaQVRJT05TCi0jICAgIGVuZGlmCi0jICAgIGlmIChfX1NVTlBST19DQyA8PSAweDU4MCkgCi0jICAgICAgZGVmaW5lIE5ETkJPT1NUX05PX0lTX0FCU1RSQUNUCi0jICAgIGVuZGlmCi0KLSMgICAgaWYgKF9fU1VOUFJPX0NDIDw9IDB4NTEwMCkKLSAgICAgICAvLyBTdW4gNS4xMCBtYXkgbm90IGNvcnJlY3RseSB2YWx1ZS1pbml0aWFsaXplIG9iamVjdHMgb2YKLSAgICAgICAvLyBzb21lIHVzZXIgZGVmaW5lZCB0eXBlcywgYXMgd2FzIHJlcG9ydGVkIGluIEFwcmlsIDIwMTAKLSAgICAgICAvLyAoQ1IgNjk0NzAxNiksIGFuZCBjb25maXJtZWQgYnkgU3RldmUgQ2xhbWFnZS4KLSAgICAgICAvLyAoTmllbHMgRGVra2VyLCBMS0VCLCBNYXkgMjAxMCkuCi0jICAgICAgZGVmaW5lIE5ETkJPT1NUX05PX0NPTVBMRVRFX1ZBTFVFX0lOSVRJQUxJWkFUSU9OCi0jICAgIGVuZGlmCi0KLS8vCi0vLyBEeW5hbWljIHNoYXJlZCBvYmplY3QgKERTTykgYW5kIGR5bmFtaWMtbGluayBsaWJyYXJ5IChETEwpIHN1cHBvcnQKLS8vCi0jaWYgX19TVU5QUk9fQ0MgPiAweDUwMAotIyAgZGVmaW5lIE5ETkJPT1NUX1NZTUJPTF9FWFBPUlQgX19nbG9iYWwKLSMgIGRlZmluZSBORE5CT09TVF9TWU1CT0xfSU1QT1JUIF9fZ2xvYmFsCi0jICBkZWZpbmUgTkROQk9PU1RfU1lNQk9MX1ZJU0lCTEUgX19nbG9iYWwKLSNlbmRpZgotCi0KLQotLy8KLS8vIElzc3VlcyB0aGF0IGVmZmVjdCBhbGwga25vd24gdmVyc2lvbnM6Ci0vLwotI2RlZmluZSBORE5CT09TVF9OT19UV09fUEhBU0VfTkFNRV9MT09LVVAKLSNkZWZpbmUgTkROQk9PU1RfTk9fQURMX0JBUlJJRVIKLQotLy8KLS8vIEMrKzB4IGZlYXR1cmVzCi0vLwotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19MT05HX0xPTkcKLQotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVVRPX0RFQ0xBUkFUSU9OUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVVRPX01VTFRJREVDTEFSQVRJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NIQVIxNl9UCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NIQVIzMl9UCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NPTlNURVhQUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRQotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRV9OMzI3NgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUZBVUxURURfRlVOQ1RJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFTEVURURfRlVOQ1RJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0VYUExJQ0lUX0NPTlZFUlNJT05fT1BFUkFUT1JTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0VYVEVSTl9URU1QTEFURQotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9GVU5DVElPTl9URU1QTEFURV9ERUZBVUxUX0FSR1MKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTEFNQkRBUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9MT0NBTF9DTEFTU19URU1QTEFURV9QQVJBTUVURVJTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05PRVhDRVBUCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05VTExQVFIKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUkFOR0VfQkFTRURfRk9SCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JBV19MSVRFUkFMUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9TQ09QRURfRU5VTVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fU0ZJTkFFX0VYUFIKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfU1RBVElDX0FTU0VSVAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9URU1QTEFURV9BTElBU0VTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1VOSUNPREVfTElURVJBTFMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX01BQ1JPUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VTklGSUVEX0lOSVRJQUxJWkFUSU9OX1NZTlRBWAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VU0VSX0RFRklORURfTElURVJBTFMKLQotLy8KLS8vIFZlcnNpb24KLS8vCi0KLSNkZWZpbmUgTkROQk9PU1RfQ09NUElMRVIgIlN1biBjb21waWxlciB2ZXJzaW9uICIgTkROQk9PU1RfU1RSSU5HSVpFKF9fU1VOUFJPX0NDKQotCi0vLwotLy8gdmVyc2lvbnMgY2hlY2s6Ci0vLyB3ZSBkb24ndCBzdXBwb3J0IHN1bnBybyBwcmlvciB0byB2ZXJzaW9uIDQ6Ci0jaWYgX19TVU5QUk9fQ0MgPCAweDQwMAotI2Vycm9yICJDb21waWxlciBub3Qgc3VwcG9ydGVkIG9yIGNvbmZpZ3VyZWQgLSBwbGVhc2UgcmVjb25maWd1cmUiCi0jZW5kaWYKLS8vCi0vLyBsYXN0IGtub3duIGFuZCBjaGVja2VkIHZlcnNpb24gaXMgMHg1OTA6Ci0jaWYgKF9fU1VOUFJPX0NDID4gMHg1OTApCi0jICBpZiBkZWZpbmVkKE5ETkJPT1NUX0FTU0VSVF9DT05GSUcpCi0jICAgICBlcnJvciAiVW5rbm93biBjb21waWxlciB2ZXJzaW9uIC0gcGxlYXNlIHJ1biB0aGUgY29uZmlndXJlIHRlc3RzIGFuZCByZXBvcnQgdGhlIHJlc3VsdHMiCi0jICBlbmRpZgotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci92YWNwcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci92YWNwcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2Njc2NTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvdmFjcHAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTMxICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAxIC0gMjAwMy4gCi0vLyAgKEMpIENvcHlyaWdodCBUb29uIEtuYXBlbiAyMDAxIC0gMjAwMy4gCi0vLyAgKEMpIENvcHlyaWdodCBMaWUtUXVhbiBMZWUgMjAwMS4gCi0vLyAgKEMpIENvcHlyaWdodCBNYXJrdXMgU2Nob2VwZmxpbiAyMDAyIC0gMjAwMy4gCi0vLyAgKEMpIENvcHlyaWdodCBCZW1hbiBEYXdlcyAyMDAyIC0gMjAwMy4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyAgVmlzdWFsIEFnZSAoSUJNKSBDKysgY29tcGlsZXIgc2V0dXA6Ci0KLSNpZiBfX0lCTUNQUF9fIDw9IDUwMQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX01FTUJFUl9URU1QTEFURV9GUklFTkRTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fTUVNQkVSX0ZVTkNUSU9OX1NQRUNJQUxJWkFUSU9OUwotI2VuZGlmCi0KLSNpZiAoX19JQk1DUFBfXyA8PSA1MDIpIAotLy8gQWN0dWFsbHkgdGhlIGNvbXBpbGVyIHN1cHBvcnRzIGluY2xhc3MgbWVtYmVyIGluaXRpYWxpemF0aW9uIGJ1dCBpdAotLy8gcmVxdWlyZXMgYSBkZWZpbml0aW9uIGZvciB0aGUgY2xhc3MgbWVtYmVyIGFuZCBpdCBkb2Vzbid0IHJlY29nbml6ZQotLy8gaXQgYXMgYW4gaW50ZWdyYWwgY29uc3RhbnQgZXhwcmVzc2lvbiB3aGVuIHVzZWQgYXMgYSB0ZW1wbGF0ZSBhcmd1bWVudC4KLSMgIGRlZmluZSBORE5CT09TVF9OT19JTkNMQVNTX01FTUJFUl9JTklUSUFMSVpBVElPTgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0lOVEVHUkFMX0lOVDY0X1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVfS0VZV09SRAotI2VuZGlmCi0KLSNpZiAoX19JQk1DUFBfXyA8PSA2MDApIHx8ICFkZWZpbmVkKE5ETkJPT1NUX1NUUklDVF9DT05GSUcpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fUE9JTlRFUl9UT19NRU1CRVJfVEVNUExBVEVfUEFSQU1FVEVSUwotI2VuZGlmCi0KLSNpZiAoX19JQk1DUFBfXyA8PSAxMTEwKQotLy8gWEwgQysrIFYxMS4xIGFuZCBlYXJsaWVyIHZlcnNpb25zIG1heSBub3QgYWx3YXlzIHZhbHVlLWluaXRpYWxpemUgIAotLy8gYSB0ZW1wb3Jhcnkgb2JqZWN0IFQoKSwgd2hlbiBUIGlzIGEgbm9uLVBPRCBhZ2dyZWdhdGUgY2xhc3MgdHlwZS4gCi0vLyBNaWNoYWVsIFdvbmcgKElCTSBDYW5hZGEgTHRkKSBoYXMgY29uZmlybWVkIHRoaXMgaXNzdWUgYW5kIGdhdmUgaXQgCi0vLyBoaWdoIHByaW9yaXR5LiAtLSBOaWVscyBEZWtrZXIgKExLRUIpLCBNYXkgMjAxMC4KLSMgIGRlZmluZSBORE5CT09TVF9OT19DT01QTEVURV9WQUxVRV9JTklUSUFMSVpBVElPTgotI2VuZGlmCi0KLS8vCi0vLyBPbiBBSVggdGhyZWFkIHN1cHBvcnQgc2VlbXMgdG8gYmUgaW5kaWNhdGVkIGJ5IF9USFJFQURfU0FGRToKLS8vCi0jaWZkZWYgX1RIUkVBRF9TQUZFCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1RIUkVBRFMKLSNlbmRpZgotCi0jZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSICJJQk0gVmlzdWFsIEFnZSB2ZXJzaW9uICIgTkROQk9PU1RfU1RSSU5HSVpFKF9fSUJNQ1BQX18pCi0KLS8vCi0vLyB2ZXJzaW9ucyBjaGVjazoKLS8vIHdlIGRvbid0IHN1cHBvcnQgVmlzdWFsIGFnZSBwcmlvciB0byB2ZXJzaW9uIDU6Ci0jaWYgX19JQk1DUFBfXyA8IDUwMAotI2Vycm9yICJDb21waWxlciBub3Qgc3VwcG9ydGVkIG9yIGNvbmZpZ3VyZWQgLSBwbGVhc2UgcmVjb25maWd1cmUiCi0jZW5kaWYKLS8vCi0vLyBsYXN0IGtub3duIGFuZCBjaGVja2VkIHZlcnNpb24gaXMgMTIxMDoKLSNpZiAoX19JQk1DUFBfXyA+IDEyMTApCi0jICBpZiBkZWZpbmVkKE5ETkJPT1NUX0FTU0VSVF9DT05GSUcpCi0jICAgICBlcnJvciAiVW5rbm93biBjb21waWxlciB2ZXJzaW9uIC0gcGxlYXNlIHJ1biB0aGUgY29uZmlndXJlIHRlc3RzIGFuZCByZXBvcnQgdGhlIHJlc3VsdHMiCi0jICBlbmRpZgotI2VuZGlmCi0KLS8vIFNvbWUgdmVyc2lvbnMgb2YgdGhlIGNvbXBpbGVyIGhhdmUgaXNzdWVzIHdpdGggZGVmYXVsdCBhcmd1bWVudHMgb24gcGFydGlhbCBzcGVjaWFsaXphdGlvbnMKLSNpZiBfX0lCTUNQUF9fIDw9IDEwMTAKLSNkZWZpbmUgTkROQk9PU1RfTk9fUEFSVElBTF9TUEVDSUFMSVpBVElPTl9JTVBMSUNJVF9ERUZBVUxUX0FSR1MKLSNlbmRpZgotCi0vLwotLy8gQysrMHggZmVhdHVyZXMKLS8vCi0vLyAgIFNlZSBib29zdFxjb25maWdcc3VmZml4LmhwcCBmb3IgTkROQk9PU1RfTk9fTE9OR19MT05HCi0vLwotI2lmICEgX19JQk1DUFBfQVVUT19UWVBFREVEVUNUSU9OCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQVVUT19ERUNMQVJBVElPTlMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVVRPX01VTFRJREVDTEFSQVRJT05TCi0jZW5kaWYKLSNpZiAhIF9fSUJNQ1BQX1VURl9MSVRFUkFMX18KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9DSEFSMTZfVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NIQVIzMl9UCi0jZW5kaWYKLSNpZiAhIF9fSUJNQ1BQX0NPTlNURVhQUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NPTlNURVhQUgotI2VuZGlmCi0jaWYgISBfX0lCTUNQUF9ERUNMVFlQRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFCi0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19ERUNMVFlQRQotI2VuZGlmCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFX04zMjc2Ci0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFRkFVTFRFRF9GVU5DVElPTlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVMRVRFRF9GVU5DVElPTlMKLSNpZiAhIF9fSUJNQ1BQX0VYUExJQ0lUX0NPTlZFUlNJT05fT1BFUkFUT1JTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfRVhQTElDSVRfQ09OVkVSU0lPTl9PUEVSQVRPUlMKLSNlbmRpZgotI2lmICEgX19JQk1DUFBfRVhURVJOX1RFTVBMQVRFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfRVhURVJOX1RFTVBMQVRFCi0jZW5kaWYKLSNpZiAhIF9fSUJNQ1BQX1ZBUklBRElDX1RFTVBMQVRFUwotLy8gbm90IGVuYWJsZWQgc2VwYXJhdGVseSBhdCB0aGlzIHRpbWUKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9GVU5DVElPTl9URU1QTEFURV9ERUZBVUxUX0FSR1MKLSNlbmRpZgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9MQU1CREFTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0xPQ0FMX0NMQVNTX1RFTVBMQVRFX1BBUkFNRVRFUlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTk9FWENFUFQKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTlVMTFBUUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9SQU5HRV9CQVNFRF9GT1IKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUkFXX0xJVEVSQUxTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1VTRVJfREVGSU5FRF9MSVRFUkFMUwotI2lmICEgX19JQk1DUFBfUlZBTFVFX1JFRkVSRU5DRVMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotI2VuZGlmCi0jaWYgISBfX0lCTUNQUF9TQ09QRURfRU5VTQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NDT1BFRF9FTlVNUwotI2VuZGlmCi0jZGVmaW5lIE5ETkJPT1NUX05PX1NGSU5BRV9FWFBSCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1VOSUZJRURfSU5JVElBTElaQVRJT05fU1lOVEFYCi0jaWYgISBfX0lCTUNQUF9TVEFUSUNfQVNTRVJUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfU1RBVElDX0FTU0VSVAotI2VuZGlmCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1RFTVBMQVRFX0FMSUFTRVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVU5JQ09ERV9MSVRFUkFMUwotI2lmICEgX19JQk1DUFBfVkFSSUFESUNfVEVNUExBVEVTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTCi0jZW5kaWYKLSNpZiAhIF9fQzk5X01BQ1JPX1dJVEhfVkFfQVJHUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX01BQ1JPUwotI2VuZGlmCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci92aXN1YWxjLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL3Zpc3VhbGMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYmE5ZDE2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL3Zpc3VhbGMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzI0ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAxIC0gMjAwMy4gCi0vLyAgKEMpIENvcHlyaWdodCBEYXJpbiBBZGxlciAyMDAxIC0gMjAwMi4gCi0vLyAgKEMpIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxLiAKLS8vICAoQykgQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi4gCi0vLyAgKEMpIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAyIC0gMjAwMy4gCi0vLyAgKEMpIENvcHlyaWdodCBCZW1hbiBEYXdlcyAyMDAyIC0gMjAwMy4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotLy8KLS8vICBNaWNyb3NvZnQgVmlzdWFsIEMrKyBjb21waWxlciBzZXR1cDoKLS8vCi0vLyAgV2UgbmVlZCB0byBiZSBjYXJlZnVsIHdpdGggdGhlIGNoZWNrcyBpbiB0aGlzIGZpbGUsIGFzIGNvbnRyYXJ5Ci0vLyAgdG8gcG9wdWxhciBiZWxpZWYgdGhlcmUgYXJlIHZlcnNpb25zIHdpdGggX01TQ19WRVIgd2l0aCB0aGUgZmluYWwKLS8vICBkaWdpdCBub24temVybyAobWFpbmx5IHRoZSBNSVBTIGNyb3NzIGNvbXBpbGVyKS4KLS8vCi0vLyAgU28gd2UgZWl0aGVyIHRlc3QgX01TQ19WRVIgPj0gWFhYWCBvciBlbHNlIF9NU0NfVkVSIDwgWFhYWC4KLS8vICBObyBvdGhlciBjb21wYXJpc29ucyAoPT0sID4sIG9yIDw9KSBhcmUgc2FmZS4KLS8vCi0KLSNkZWZpbmUgTkROQk9PU1RfTVNWQyBfTVNDX1ZFUgotCi0vLwotLy8gSGVscGVyIG1hY3JvIE5ETkJPT1NUX01TVkNfRlVMTF9WRVIgZm9yIHVzZSBpbiBCb29zdCBjb2RlOgotLy8KLSNpZiBfTVNDX0ZVTExfVkVSID4gMTAwMDAwMDAwCi0jICBkZWZpbmUgTkROQk9PU1RfTVNWQ19GVUxMX1ZFUiBfTVNDX0ZVTExfVkVSCi0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX01TVkNfRlVMTF9WRVIgKF9NU0NfRlVMTF9WRVIgKiAxMCkKLSNlbmRpZgotCi0vLyBBdHRlbXB0IHRvIHN1cHByZXNzIFZDNiB3YXJuaW5ncyBhYm91dCB0aGUgbGVuZ3RoIG9mIGRlY29yYXRlZCBuYW1lcyAob2Jzb2xldGUpOgotI3ByYWdtYSB3YXJuaW5nKCBkaXNhYmxlIDogNDUwMyApIC8vIHdhcm5pbmc6IGRlY29yYXRlZCBuYW1lIGxlbmd0aCBleGNlZWRlZAotCi0vLwotLy8gdmVyc2lvbnMgY2hlY2s6Ci0vLyB3ZSBkb24ndCBzdXBwb3J0IFZpc3VhbCBDKysgcHJpb3IgdG8gdmVyc2lvbiA2OgotI2lmIF9NU0NfVkVSIDwgMTIwMAotIyAgZXJyb3IgIkNvbXBpbGVyIG5vdCBzdXBwb3J0ZWQgb3IgY29uZmlndXJlZCAtIHBsZWFzZSByZWNvbmZpZ3VyZSIKLSNlbmRpZgotCi0jaWYgX01TQ19WRVIgPCAxMzAwICAvLyAxMjAwID09IFZDKysgNi4wLCAxMjAwLTEyMDIgPT0gZVZDKys0Ci0jICBwcmFnbWEgd2FybmluZyggZGlzYWJsZSA6IDQ3ODYgKSAvLyBpZGVudCB0cnVuYyB0byAnMjU1JyBjaGFycyBpbiBkZWJ1ZyBpbmZvCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fREVQRU5ERU5UX1RZUEVTX0lOX1RFTVBMQVRFX1ZBTFVFX1BBUkFNRVRFUlMKLSMgIGRlZmluZSBORE5CT09TVF9OT19WT0lEX1JFVFVSTlMKLSMgIGRlZmluZSBORE5CT09TVF9OT19FWENFUFRJT05fU1REX05BTUVTUEFDRQotCi0jICBpZiBfTVNDX1ZFUiA9PSAxMjAyCi0jICAgIGRlZmluZSBORE5CT09TVF9OT19TVERfVFlQRUlORk8KLSMgIGVuZGlmCi0KLSNlbmRpZgotCi0vLy8gVmlzdWFsIFN0dWRpbyBoYXMgbm8gZmVudi5oCi0jZGVmaW5lIE5ETkJPT1NUX05PX0ZFTlZfSAotCi0jaWYgKF9NU0NfVkVSIDwgMTMxMCkgIC8vIDEzMFggPT0gVkMrKyA3LjAKLQotIyAgaWYgIWRlZmluZWQoX01TQ19FWFRFTlNJT05TKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19ERVBFTkRFTlRfVFlQRVNfSU5fVEVNUExBVEVfVkFMVUVfUEFSQU1FVEVSUykgICAgICAvLyBWQzcgYnVnIHdpdGggL1phCi0jICAgIGRlZmluZSBORE5CT09TVF9OT19ERVBFTkRFTlRfVFlQRVNfSU5fVEVNUExBVEVfVkFMVUVfUEFSQU1FVEVSUwotIyAgZW5kaWYKLQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0VYUExJQ0lUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1VNRU5UUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0lOQ0xBU1NfTUVNQkVSX0lOSVRJQUxJWkFUSU9OCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fUFJJVkFURV9JTl9BR0dSRUdBVEUKLSMgIGRlZmluZSBORE5CT09TVF9OT19BUkdVTUVOVF9ERVBFTkRFTlRfTE9PS1VQCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fSU5URUdSQUxfSU5UNjRfVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0RFRFVDRURfVFlQRU5BTUUKLSMgIGRlZmluZSBORE5CT09TVF9OT19VU0lOR19ERUNMQVJBVElPTl9PVkVSTE9BRFNfRlJPTV9UWVBFTkFNRV9CQVNFCi0KLS8vICAgIFZDKysgNi83IGhhcyBtZW1iZXIgdGVtcGxhdGVzIGJ1dCB0aGV5IGhhdmUgbnVtZXJvdXMgcHJvYmxlbXMgaW5jbHVkaW5nCi0vLyAgICBjYXNlcyBvZiBzaWxlbnQgZmFpbHVyZSwgc28gZm9yIHNhZmV0eSB3ZSBkZWZpbmU6Ci0jICBkZWZpbmUgTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFUwotLy8gICAgRm9yIFZDKysgZXhwZXJ0cyB3aXNoaW5nIHRvIGF0dGVtcHQgd29ya2Fyb3VuZHMsIHdlIGRlZmluZToKLSMgIGRlZmluZSBORE5CT09TVF9NU1ZDNl9NRU1CRVJfVEVNUExBVEVTCi0KLSMgIGRlZmluZSBORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVfRlJJRU5EUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSMgIGRlZmluZSBORE5CT09TVF9OT19DVl9WT0lEX1NQRUNJQUxJWkFUSU9OUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fVVNJTkdfVEVNUExBVEUKLSMgIGRlZmluZSBORE5CT09TVF9OT19TV1BSSU5URgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1RFTVBMQVRFX1RFTVBMQVRFUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NGSU5BRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1BPSU5URVJfVE9fTUVNQkVSX1RFTVBMQVRFX1BBUkFNRVRFUlMKLSMgIGRlZmluZSBORE5CT09TVF9OT19JU19BQlNUUkFDVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RZUEVfU1BFQ0lBTElaQVRJT05TCi0vLyBUT0RPOiB3aGF0IHZlcnNpb24gaXMgbWVhbnQgaGVyZT8gSGF2ZSB0aGVyZSByZWFsbHkgYmVlbiBhbnkgZml4ZXMgaW4gY2wgMTIuMDEgKGFzIGUuZy4gc2hpcHBlZCB3aXRoIGVWQzQpPwotIyAgaWYgKF9NU0NfVkVSID49IDEzMDApCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fTUVNQkVSX0ZVTkNUSU9OX1NQRUNJQUxJWkFUSU9OUwotIyAgZW5kaWYKLQotI2VuZGlmCi0KLSNpZiBfTVNDX1ZFUiA8IDE0MDAgCi0vLyBhbHRob3VnaCBhIGNvbmZvcm1pbmcgc2lnbmF0dXJlIGZvciBzd3ByaW50IGV4aXN0cyBpbiBWQzcuMQotLy8gaXQgYXBwZWFycyBub3QgdG8gYWN0dWFsbHkgd29yazoKLSMgIGRlZmluZSBORE5CT09TVF9OT19TV1BSSU5URgotLy8gT3VyIGV4dGVybiB0ZW1wbGF0ZSB0ZXN0cyBhbHNvIGZhaWwgZm9yIHRoaXMgY29tcGlsZXI6Ci0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfRVhURVJOX1RFTVBMQVRFCi0vLyBWYXJpYWRpYyBtYWNyb3MgZG8gbm90IGV4aXN0IGZvciBWQzcuMSBhbmQgbG93ZXIKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19NQUNST1MKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChVTkRFUl9DRSkKLS8vIFdpbmRvd3MgQ0UgZG9lcyBub3QgaGF2ZSBhIGNvbmZvcm1pbmcgc2lnbmF0dXJlIGZvciBzd3ByaW50ZgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NXUFJJTlRGCi0jZW5kaWYKLQotI2lmIF9NU0NfVkVSIDwgMTUwMCAgLy8gMTQwWCA9PSBWQysrIDguMAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX01FTUJFUl9URU1QTEFURV9GUklFTkRTCi0jZW5kaWYKLQotI2lmIF9NU0NfVkVSIDwgMTYwMCAgLy8gMTUwWCA9PSBWQysrIDkuMAotICAgLy8gQSBidWcgaW4gVkM5OgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0FETF9CQVJSSUVSCi0jZW5kaWYKLQotCi0vLyBNU1ZDIChpbmNsdWRpbmcgdGhlIGxhdGVzdCBjaGVja2VkIHZlcnNpb24pIGhhcyBub3QgeWV0IGNvbXBsZXRlbHkgCi0vLyBpbXBsZW1lbnRlZCB2YWx1ZS1pbml0aWFsaXphdGlvbiwgYXMgaXMgcmVwb3J0ZWQ6Ci0vLyAiVkMrKyBkb2VzIG5vdCB2YWx1ZS1pbml0aWFsaXplIG1lbWJlcnMgb2YgZGVyaXZlZCBjbGFzc2VzIHdpdGhvdXQgCi0vLyB1c2VyLWRlY2xhcmVkIGNvbnN0cnVjdG9yIiwgcmVwb3J0ZWQgaW4gMjAwOSBieSBTeWx2ZXN0ZXIgSGVzcDoKLS8vIGh0dHBzOi8vY29ubmVjdC5taWNyb3NvZnQuY29tL1Zpc3VhbFN0dWRpby9mZWVkYmFjay9kZXRhaWxzLzQ4NDI5NQotLy8gIlByZXNlbmNlIG9mIGNvcHkgY29uc3RydWN0b3IgYnJlYWtzIG1lbWJlciBjbGFzcyBpbml0aWFsaXphdGlvbiIsCi0vLyByZXBvcnRlZCBpbiAyMDA5IGJ5IEFsZXggVmFrdWxlbmtvOgotLy8gaHR0cHM6Ly9jb25uZWN0Lm1pY3Jvc29mdC5jb20vVmlzdWFsU3R1ZGlvL2ZlZWRiYWNrL2RldGFpbHMvNDk5NjA2Ci0vLyAiVmFsdWUtaW5pdGlhbGl6YXRpb24gaW4gbmV3LWV4cHJlc3Npb24iLCByZXBvcnRlZCBpbiAyMDA1IGJ5Ci0vLyBQYXZlbCBLdXpuZXRzb3YgKE1ldGFDb21tdW5pY2F0aW9ucyBFbmdpbmVlcmluZyk6Ci0vLyBodHRwczovL2Nvbm5lY3QubWljcm9zb2Z0LmNvbS9WaXN1YWxTdHVkaW8vZmVlZGJhY2svZGV0YWlscy8xMDA3NDQKLS8vIFNlZSBhbHNvOiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3V0aWxpdHkvdmFsdWVfaW5pdC5odG0jY29tcGlsZXJfaXNzdWVzCi0vLyAoTmllbHMgRGVra2VyLCBMS0VCLCBNYXkgMjAxMCkKLSMgIGRlZmluZSBORE5CT09TVF9OT19DT01QTEVURV9WQUxVRV9JTklUSUFMSVpBVElPTgotCi0jaWZuZGVmIF9OQVRJVkVfV0NIQVJfVF9ERUZJTkVECi0jICBkZWZpbmUgTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfV0lOMzJfV0NFKSB8fCBkZWZpbmVkKFVOREVSX0NFKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NXUFJJTlRGCi0jZW5kaWYKLQotLy8gd2UgaGF2ZSBUaHJlYWRFeCBvciBHZXRTeXN0ZW1UaW1lQXNGaWxlVGltZSB1bmxlc3Mgd2UncmUgcnVubmluZyBXaW5kb3dzQ0UKLSNpZiAhZGVmaW5lZChfV0lOMzJfV0NFKSAmJiAhZGVmaW5lZChVTkRFUl9DRSkKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfVEhSRUFERVgKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfR0VUU1lTVEVNVElNRUFTRklMRVRJTUUKLSNlbmRpZgotCi0vLyAgIAotLy8gY2hlY2sgZm9yIGV4Y2VwdGlvbiBoYW5kbGluZyBzdXBwb3J0OiAgIAotI2lmICFkZWZpbmVkKF9DUFBVTldJTkQpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0VYQ0VQVElPTlMpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fRVhDRVBUSU9OUyAgIAotI2VuZGlmIAotCi0vLwotLy8gX19pbnQ2NCBzdXBwb3J0OgotLy8KLSNpZiAoX01TQ19WRVIgPj0gMTIwMCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX01TX0lOVDY0Ci0jZW5kaWYKLSNpZiAoX01TQ19WRVIgPj0gMTMxMCkgJiYgKGRlZmluZWQoX01TQ19FWFRFTlNJT05TKSB8fCAoX01TQ19WRVIgPj0gMTQwMCkpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19MT05HX0xPTkcKLSNlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX05PX0xPTkdfTE9ORwotI2VuZGlmCi0jaWYgKF9NU0NfVkVSID49IDE0MDApICYmICFkZWZpbmVkKF9ERUJVRykKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX05SVk8KLSNlbmRpZgotLy8KLS8vIGRpc2FibGUgV2luMzIgQVBJJ3MgaWYgY29tcGlsZXIgZXh0ZW50aW9ucyBhcmUKLS8vIHR1cm5lZCBvZmY6Ci0vLwotI2lmICFkZWZpbmVkKF9NU0NfRVhURU5TSU9OUykgJiYgIWRlZmluZWQoTkROQk9PU1RfRElTQUJMRV9XSU4zMikKLSMgIGRlZmluZSBORE5CT09TVF9ESVNBQkxFX1dJTjMyCi0jZW5kaWYKLSNpZiAhZGVmaW5lZChfQ1BQUlRUSSkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fUlRUSSkKLSMgIGRlZmluZSBORE5CT09TVF9OT19SVFRJCi0jZW5kaWYKLQotLy8KLS8vIFRSMSBmZWF0dXJlczoKLS8vCi0jaWYgX01TQ19WRVIgPj0gMTcwMAotLy8gIyBkZWZpbmUgTkROQk9PU1RfSEFTX1RSMV9IQVNICQkJLy8gZG9uJ3Qga25vdyBpZiB0aGlzIGlzIHRydWUgeWV0LgotLy8gIyBkZWZpbmUgTkROQk9PU1RfSEFTX1RSMV9UWVBFX1RSQUlUUwkvLyBkb24ndCBrbm93IGlmIHRoaXMgaXMgdHJ1ZSB5ZXQuCi0jIGRlZmluZSBORE5CT09TVF9IQVNfVFIxX1VOT1JERVJFRF9NQVAKLSMgZGVmaW5lIE5ETkJPT1NUX0hBU19UUjFfVU5PUkRFUkVEX1NFVAotI2VuZGlmCi0KLS8vCi0vLyBDKysweCBmZWF0dXJlcwotLy8KLS8vICAgU2VlIGFib3ZlIGZvciBORE5CT09TVF9OT19MT05HX0xPTkcKLQotLy8gQysrIGZlYXR1cmVzIHN1cHBvcnRlZCBieSBWQysrIDEwIChha2EgMjAxMCkKLS8vCi0jaWYgX01TQ19WRVIgPCAxNjAwCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQVVUT19ERUNMQVJBVElPTlMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVVRPX01VTFRJREVDTEFSQVRJT05TCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTEFNQkRBUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfU1RBVElDX0FTU0VSVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05VTExQVFIKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRQotI2VuZGlmIC8vIF9NU0NfVkVSIDwgMTYwMAotCi0jaWYgX01TQ19WRVIgPj0gMTYwMAotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19TVERJTlRfSAotI2VuZGlmCi0KLS8vIEMrKyBmZWF0dXJlcyBzdXBwb3J0ZWQgYnkgVkMrKyAxMSAoYWthIDIwMTIpCi0vLwotI2lmIF9NU0NfVkVSIDwgMTcwMAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JBTkdFX0JBU0VEX0ZPUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NDT1BFRF9FTlVNUwotI2VuZGlmIC8vIF9NU0NfVkVSIDwgMTcwMAotCi0vLyBDKysxMSBmZWF0dXJlcyBzdXBwb3J0ZWQgYnkgVkMrKyAxMSAoYWthIDIwMTIpIE5vdmVtYmVyIDIwMTIgQ1RQCi0vLyBCZWNhdXNlIHRoZSBDVFAgaXMgdW5zdXBwb3J0ZWQsIHVucmVsZWFzZSwgYW5kIG9ubHkgYWxwaGEgcXVhbGl0eSwKLS8vIGl0IGlzIG9ubHkgc3VwcG9ydGVkIGlmIE5ETkJPT1NUX01TVkNfRU5BQkxFXzIwMTJfTk9WX0NUUCBpcyBkZWZpbmVkLgotLy8KLSNpZiBfTVNDX0ZVTExfVkVSIDwgMTcwMDUxMDI1IHx8ICFkZWZpbmVkKE5ETkJPT1NUX01TVkNfRU5BQkxFXzIwMTJfTk9WX0NUUCkKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9FWFBMSUNJVF9DT05WRVJTSU9OX09QRVJBVE9SUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0ZVTkNUSU9OX1RFTVBMQVRFX0RFRkFVTFRfQVJHUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JBV19MSVRFUkFMUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1VOSUZJRURfSU5JVElBTElaQVRJT05fU1lOVEFYCi0jZW5kaWYKLQotLy8gQysrMTEgZmVhdHVyZXMgbm90IHN1cHBvcnRlZCBieSBhbnkgdmVyc2lvbnMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjE2X1QKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjMyX1QKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQ09OU1RFWFBSCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFX04zMjc2Ci0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFRkFVTFRFRF9GVU5DVElPTlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVMRVRFRF9GVU5DVElPTlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTk9FWENFUFQKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVEVNUExBVEVfQUxJQVNFUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VTklDT0RFX0xJVEVSQUxTCi0jZGVmaW5lIE5ETkJPT1NUX05PX1NGSU5BRV9FWFBSCi0jZGVmaW5lIE5ETkJPT1NUX05PX1RXT19QSEFTRV9OQU1FX0xPT0tVUAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VU0VSX0RFRklORURfTElURVJBTFMKLQotLy8KLS8vIHByZWZpeCBhbmQgc3VmZml4IGhlYWRlcnM6Ci0vLwotI2lmbmRlZiBORE5CT09TVF9BQklfUFJFRklYCi0jICBkZWZpbmUgTkROQk9PU1RfQUJJX1BSRUZJWCAibmRuYm9vc3QvY29uZmlnL2FiaS9tc3ZjX3ByZWZpeC5ocHAiCi0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfQUJJX1NVRkZJWAotIyAgZGVmaW5lIE5ETkJPT1NUX0FCSV9TVUZGSVggIm5kbmJvb3N0L2NvbmZpZy9hYmkvbXN2Y19zdWZmaXguaHBwIgotI2VuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfQ09NUElMRVIKLS8vIFRPRE86Ci0vLyB0aGVzZSB0aGluZ3MgYXJlIG1vc3RseSBib2d1cy4gMTIwMCBtZWFucyB2ZXJzaW9uIDEyLjAgb2YgdGhlIGNvbXBpbGVyLiBUaGUgCi0vLyBhcnRpZmljaWFsIHZlcnNpb25zIGFzc2lnbmVkIHRvIHRoZW0gb25seSByZWZlciB0byB0aGUgdmVyc2lvbnMgb2Ygc29tZSBJREUKLS8vIHRoZXNlIGNvbXBpbGVycyBoYXZlIGJlZW4gc2hpcHBlZCB3aXRoLCBhbmQgZXZlbiB0aGF0IGlzIG5vdCBhbGwgb2YgaXQuIFNvbWUKLS8vIHdlcmUgc2hpcHBlZCB3aXRoIGZyZWVseSBkb3dubG9hZGFibGUgU0RLcywgb3RoZXJzIGFzIGNyb3NzY29tcGlsZXJzIGluIGVWQy4KLS8vIElPVywgeW91IGNhbid0IHVzZSB0aGVzZSAndmVyc2lvbnMnIGluIGFueSBzZW5zaWJsZSB3YXkuIFNvcnJ5LgotIyBpZiBkZWZpbmVkKFVOREVSX0NFKQotIyAgIGlmIF9NU0NfVkVSIDwgMTIwMAotICAgICAgLy8gTm90ZTogdGhlc2UgYXJlIHNvIGZhciBvZmYsIHRoZXkgYXJlIG5vdCByZWFsbHkgc3VwcG9ydGVkCi0jICAgZWxpZiBfTVNDX1ZFUiA8IDEzMDAgLy8gZVZDKysgNCBjb21lcyB3aXRoIDEyMDAtMTIwMgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX1ZFUlNJT04gZXZjNC4wCi0jICAgZWxpZiBfTVNDX1ZFUiA8IDE0MDAKLSAgICAgIC8vIE5vdGU6IEknbSBub3QgYXdhcmUgb2YgYW55IENFIGNvbXBpbGVyIHdpdGggdmVyc2lvbiAxM3h4Ci0jICAgICAgaWYgZGVmaW5lZChORE5CT09TVF9BU1NFUlRfQ09ORklHKQotIyAgICAgICAgIGVycm9yICJVbmtub3duIEVWQysrIGNvbXBpbGVyIHZlcnNpb24gLSBwbGVhc2UgcnVuIHRoZSBjb25maWd1cmUgdGVzdHMgYW5kIHJlcG9ydCB0aGUgcmVzdWx0cyIKLSMgICAgICBlbHNlCi0jICAgICAgICAgcHJhZ21hIG1lc3NhZ2UoIlVua25vd24gRVZDKysgY29tcGlsZXIgdmVyc2lvbiAtIHBsZWFzZSBydW4gdGhlIGNvbmZpZ3VyZSB0ZXN0cyBhbmQgcmVwb3J0IHRoZSByZXN1bHRzIikKLSMgICAgICBlbmRpZgotIyAgIGVsaWYgX01TQ19WRVIgPCAxNTAwCi0jICAgICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfVkVSU0lPTiBldmM4Ci0jICAgZWxpZiBfTVNDX1ZFUiA8IDE2MDAKLSMgICAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OIGV2YzkKLSMgICBlbGlmIF9NU0NfVkVSIDwgMTcwMAotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX1ZFUlNJT04gZXZjMTAKLSMgICBlbGlmIF9NU0NfVkVSIDwgMTgwMCAKLSMgICAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OIGV2YzExIAotIyAgIGVsc2UKLSMgICAgICBpZiBkZWZpbmVkKE5ETkJPT1NUX0FTU0VSVF9DT05GSUcpCi0jICAgICAgICAgZXJyb3IgIlVua25vd24gRVZDKysgY29tcGlsZXIgdmVyc2lvbiAtIHBsZWFzZSBydW4gdGhlIGNvbmZpZ3VyZSB0ZXN0cyBhbmQgcmVwb3J0IHRoZSByZXN1bHRzIgotIyAgICAgIGVsc2UKLSMgICAgICAgICBwcmFnbWEgbWVzc2FnZSgiVW5rbm93biBFVkMrKyBjb21waWxlciB2ZXJzaW9uIC0gcGxlYXNlIHJ1biB0aGUgY29uZmlndXJlIHRlc3RzIGFuZCByZXBvcnQgdGhlIHJlc3VsdHMiKQotIyAgICAgIGVuZGlmCi0jICAgZW5kaWYKLSMgZWxzZQotIyAgIGlmIF9NU0NfVkVSIDwgMTIwMAotICAgICAgLy8gTm90ZTogdGhlc2UgYXJlIHNvIGZhciBvZmYsIHRoZXkgYXJlIG5vdCByZWFsbHkgc3VwcG9ydGVkCi0jICAgICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfVkVSU0lPTiA1LjAKLSMgICBlbGlmIF9NU0NfVkVSIDwgMTMwMAotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfVkVSU0lPTiA2LjAKLSMgICBlbGlmIF9NU0NfVkVSIDwgMTMxMAotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX1ZFUlNJT04gNy4wCi0jICAgZWxpZiBfTVNDX1ZFUiA8IDE0MDAKLSMgICAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OIDcuMQotIyAgIGVsaWYgX01TQ19WRVIgPCAxNTAwCi0jICAgICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfVkVSU0lPTiA4LjAKLSMgICBlbGlmIF9NU0NfVkVSIDwgMTYwMAotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX1ZFUlNJT04gOS4wCi0jICAgZWxpZiBfTVNDX1ZFUiA8IDE3MDAKLSMgICAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OIDEwLjAKLSMgICBlbGlmIF9NU0NfVkVSIDwgMTgwMCAKLSMgICAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OIDExLjAgCi0jICAgZWxzZQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX1ZFUlNJT04gX01TQ19WRVIKLSMgICBlbmRpZgotIyBlbmRpZgotCi0jICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVIgIk1pY3Jvc29mdCBWaXN1YWwgQysrIHZlcnNpb24gIiBORE5CT09TVF9TVFJJTkdJWkUoTkROQk9PU1RfQ09NUElMRVJfVkVSU0lPTikKLSNlbmRpZgotCi0vLwotLy8gbGFzdCBrbm93biBhbmQgY2hlY2tlZCB2ZXJzaW9uIGlzIDE3MDAgKFZDMTEsIGFrYSAyMDExKToKLSNpZiAoX01TQ19WRVIgPiAxNzAwKQotIyAgaWYgZGVmaW5lZChORE5CT09TVF9BU1NFUlRfQ09ORklHKQotIyAgICAgZXJyb3IgIlVua25vd24gY29tcGlsZXIgdmVyc2lvbiAtIHBsZWFzZSBydW4gdGhlIGNvbmZpZ3VyZSB0ZXN0cyBhbmQgcmVwb3J0IHRoZSByZXN1bHRzIgotIyAgZWxzZQotIyAgICAgcHJhZ21hIG1lc3NhZ2UoIlVua25vd24gY29tcGlsZXIgdmVyc2lvbiAtIHBsZWFzZSBydW4gdGhlIGNvbmZpZ3VyZSB0ZXN0cyBhbmQgcmVwb3J0IHRoZSByZXN1bHRzIikKLSMgIGVuZGlmCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL25vX3RyMS9jbWF0aC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9ub190cjEvY21hdGguaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjNiZGI3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL25vX3RyMS9jbWF0aC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwOC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFRoZSBhaW0gb2YgdGhpcyBoZWFkZXIgaXMganVzdCB0byBpbmNsdWRlIDxjbWF0aD4gYnV0IHRvIGRvCi0vLyBzbyBpbiBhIHdheSB0aGF0IGRvZXMgbm90IHJlc3VsdCBpbiByZWN1cnNpdmUgaW5jbHVzaW9uIG9mCi0vLyB0aGUgQm9vc3QgVFIxIGNvbXBvbmVudHMgaWYgbmRuYm9vc3QvdHIxL3RyMS9jbWF0aCBpcyBpbiB0aGUKLS8vIGluY2x1ZGUgc2VhcmNoIHBhdGguICBXZSBoYXZlIHRvIGRvIHRoaXMgdG8gYXZvaWQgY2lyY3VsYXIKLS8vIGRlcGVuZGVuY2llczoKLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfQ09ORklHX0NNQVRICi0jICBkZWZpbmUgTkROQk9PU1RfQ09ORklHX0NNQVRICi0KLSMgIGlmbmRlZiBORE5CT09TVF9UUjFfTk9fUkVDVVJTSU9OCi0jICAgICBkZWZpbmUgTkROQk9PU1RfVFIxX05PX1JFQ1VSU0lPTgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0NPTkZJR19OT19DTUFUSF9SRUNVUlNJT04KLSMgIGVuZGlmCi0KLSMgIGluY2x1ZGUgPGNtYXRoPgotCi0jICBpZmRlZiBORE5CT09TVF9DT05GSUdfTk9fQ01BVEhfUkVDVVJTSU9OCi0jICAgICB1bmRlZiBORE5CT09TVF9UUjFfTk9fUkVDVVJTSU9OCi0jICAgICB1bmRlZiBORE5CT09TVF9DT05GSUdfTk9fQ01BVEhfUkVDVVJTSU9OCi0jICBlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL25vX3RyMS9jb21wbGV4LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL25vX3RyMS9jb21wbGV4LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2MyMjY2Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9ub190cjEvY29tcGxleC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwNS4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFRoZSBhaW0gb2YgdGhpcyBoZWFkZXIgaXMganVzdCB0byBpbmNsdWRlIDxjb21wbGV4PiBidXQgdG8gZG8KLS8vIHNvIGluIGEgd2F5IHRoYXQgZG9lcyBub3QgcmVzdWx0IGluIHJlY3Vyc2l2ZSBpbmNsdXNpb24gb2YKLS8vIHRoZSBCb29zdCBUUjEgY29tcG9uZW50cyBpZiBuZG5ib29zdC90cjEvdHIxL2NvbXBsZXggaXMgaW4gdGhlCi0vLyBpbmNsdWRlIHNlYXJjaCBwYXRoLiAgV2UgaGF2ZSB0byBkbyB0aGlzIHRvIGF2b2lkIGNpcmN1bGFyCi0vLyBkZXBlbmRlbmNpZXM6Ci0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX0NPTkZJR19DT01QTEVYCi0jICBkZWZpbmUgTkROQk9PU1RfQ09ORklHX0NPTVBMRVgKLQotIyAgaWZuZGVmIE5ETkJPT1NUX1RSMV9OT19SRUNVUlNJT04KLSMgICAgIGRlZmluZSBORE5CT09TVF9UUjFfTk9fUkVDVVJTSU9OCi0jICAgICBkZWZpbmUgTkROQk9PU1RfQ09ORklHX05PX0NPTVBMRVhfUkVDVVJTSU9OCi0jICBlbmRpZgotCi0jICBpbmNsdWRlIDxjb21wbGV4PgotCi0jICBpZmRlZiBORE5CT09TVF9DT05GSUdfTk9fQ09NUExFWF9SRUNVUlNJT04KLSMgICAgIHVuZGVmIE5ETkJPT1NUX1RSMV9OT19SRUNVUlNJT04KLSMgICAgIHVuZGVmIE5ETkJPT1NUX0NPTkZJR19OT19DT01QTEVYX1JFQ1VSU0lPTgotIyAgZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9ub190cjEvZnVuY3Rpb25hbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9ub190cjEvZnVuY3Rpb25hbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlN2ZiNWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvbm9fdHIxL2Z1bmN0aW9uYWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDUuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBUaGUgYWltIG9mIHRoaXMgaGVhZGVyIGlzIGp1c3QgdG8gaW5jbHVkZSA8ZnVuY3Rpb25hbD4gYnV0IHRvIGRvCi0vLyBzbyBpbiBhIHdheSB0aGF0IGRvZXMgbm90IHJlc3VsdCBpbiByZWN1cnNpdmUgaW5jbHVzaW9uIG9mCi0vLyB0aGUgQm9vc3QgVFIxIGNvbXBvbmVudHMgaWYgbmRuYm9vc3QvdHIxL3RyMS9mdW5jdGlvbmFsIGlzIGluIHRoZQotLy8gaW5jbHVkZSBzZWFyY2ggcGF0aC4gIFdlIGhhdmUgdG8gZG8gdGhpcyB0byBhdm9pZCBjaXJjdWxhcgotLy8gZGVwZW5kZW5jaWVzOgotLy8KLQotI2lmbmRlZiBORE5CT09TVF9DT05GSUdfRlVOQ1RJT05BTAotIyAgZGVmaW5lIE5ETkJPT1NUX0NPTkZJR19GVU5DVElPTkFMCi0KLSMgIGlmbmRlZiBORE5CT09TVF9UUjFfTk9fUkVDVVJTSU9OCi0jICAgICBkZWZpbmUgTkROQk9PU1RfVFIxX05PX1JFQ1VSU0lPTgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0NPTkZJR19OT19GVU5DVElPTkFMX1JFQ1VSU0lPTgotIyAgZW5kaWYKLQotIyAgaW5jbHVkZSA8ZnVuY3Rpb25hbD4KLQotIyAgaWZkZWYgTkROQk9PU1RfQ09ORklHX05PX0ZVTkNUSU9OQUxfUkVDVVJTSU9OCi0jICAgICB1bmRlZiBORE5CT09TVF9UUjFfTk9fUkVDVVJTSU9OCi0jICAgICB1bmRlZiBORE5CT09TVF9DT05GSUdfTk9fRlVOQ1RJT05BTF9SRUNVUlNJT04KLSMgIGVuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvbm9fdHIxL21lbW9yeS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9ub190cjEvbWVtb3J5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTUzMjI2Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9ub190cjEvbWVtb3J5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDA1LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gVGhlIGFpbSBvZiB0aGlzIGhlYWRlciBpcyBqdXN0IHRvIGluY2x1ZGUgPG1lbW9yeT4gYnV0IHRvIGRvCi0vLyBzbyBpbiBhIHdheSB0aGF0IGRvZXMgbm90IHJlc3VsdCBpbiByZWN1cnNpdmUgaW5jbHVzaW9uIG9mCi0vLyB0aGUgQm9vc3QgVFIxIGNvbXBvbmVudHMgaWYgbmRuYm9vc3QvdHIxL3RyMS9tZW1vcnkgaXMgaW4gdGhlCi0vLyBpbmNsdWRlIHNlYXJjaCBwYXRoLiAgV2UgaGF2ZSB0byBkbyB0aGlzIHRvIGF2b2lkIGNpcmN1bGFyCi0vLyBkZXBlbmRlbmNpZXM6Ci0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX0NPTkZJR19NRU1PUlkKLSMgIGRlZmluZSBORE5CT09TVF9DT05GSUdfTUVNT1JZCi0KLSMgIGlmbmRlZiBORE5CT09TVF9UUjFfTk9fUkVDVVJTSU9OCi0jICAgICBkZWZpbmUgTkROQk9PU1RfVFIxX05PX1JFQ1VSU0lPTgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0NPTkZJR19OT19NRU1PUllfUkVDVVJTSU9OCi0jICBlbmRpZgotCi0jICBpbmNsdWRlIDxtZW1vcnk+Ci0KLSMgIGlmZGVmIE5ETkJPT1NUX0NPTkZJR19OT19NRU1PUllfUkVDVVJTSU9OCi0jICAgICB1bmRlZiBORE5CT09TVF9UUjFfTk9fUkVDVVJTSU9OCi0jICAgICB1bmRlZiBORE5CT09TVF9DT05GSUdfTk9fTUVNT1JZX1JFQ1VSU0lPTgotIyAgZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9ub190cjEvdXRpbGl0eS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9ub190cjEvdXRpbGl0eS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1NWI2NWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvbm9fdHIxL3V0aWxpdHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDUuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBUaGUgYWltIG9mIHRoaXMgaGVhZGVyIGlzIGp1c3QgdG8gaW5jbHVkZSA8dXRpbGl0eT4gYnV0IHRvIGRvCi0vLyBzbyBpbiBhIHdheSB0aGF0IGRvZXMgbm90IHJlc3VsdCBpbiByZWN1cnNpdmUgaW5jbHVzaW9uIG9mCi0vLyB0aGUgQm9vc3QgVFIxIGNvbXBvbmVudHMgaWYgbmRuYm9vc3QvdHIxL3RyMS91dGlsaXR5IGlzIGluIHRoZQotLy8gaW5jbHVkZSBzZWFyY2ggcGF0aC4gIFdlIGhhdmUgdG8gZG8gdGhpcyB0byBhdm9pZCBjaXJjdWxhcgotLy8gZGVwZW5kZW5jaWVzOgotLy8KLQotI2lmbmRlZiBORE5CT09TVF9DT05GSUdfVVRJTElUWQotIyAgZGVmaW5lIE5ETkJPT1NUX0NPTkZJR19VVElMSVRZCi0KLSMgIGlmbmRlZiBORE5CT09TVF9UUjFfTk9fUkVDVVJTSU9OCi0jICAgICBkZWZpbmUgTkROQk9PU1RfVFIxX05PX1JFQ1VSU0lPTgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0NPTkZJR19OT19VVElMSVRZX1JFQ1VSU0lPTgotIyAgZW5kaWYKLQotIyAgaW5jbHVkZSA8dXRpbGl0eT4KLQotIyAgaWZkZWYgTkROQk9PU1RfQ09ORklHX05PX1VUSUxJVFlfUkVDVVJTSU9OCi0jICAgICB1bmRlZiBORE5CT09TVF9UUjFfTk9fUkVDVVJTSU9OCi0jICAgICB1bmRlZiBORE5CT09TVF9DT05GSUdfTk9fVVRJTElUWV9SRUNVUlNJT04KLSMgIGVuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vYWl4LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL2FpeC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjOGJkOTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vYWl4LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAxIC0gMjAwMi4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyAgSUJNL0FpeCBzcGVjaWZpYyBjb25maWcgb3B0aW9uczoKLQotI2RlZmluZSBORE5CT09TVF9QTEFURk9STSAiSUJNIEFpeCIKLQotI2RlZmluZSBORE5CT09TVF9IQVNfVU5JU1REX0gKLSNkZWZpbmUgTkROQk9PU1RfSEFTX05MX1RZUEVTX0gKLSNkZWZpbmUgTkROQk9PU1RfSEFTX05BTk9TTEVFUAotI2RlZmluZSBORE5CT09TVF9IQVNfQ0xPQ0tfR0VUVElNRQotCi0vLyBUaGlzIG5lZWRzIHN1cHBvcnQgaW4gIm5kbmJvb3N0L2NzdGRpbnQuaHBwIiBleGFjdGx5IGxpa2UgRnJlZUJTRC4KLS8vIFRoaXMgcGxhdGZvcm0gaGFzIGhlYWRlciBuYW1lZCA8aW50dHlwZXMuaD4gd2hpY2ggaW5jbHVkZXMgYWxsCi0vLyB0aGUgdGhpbmdzIG5lZWRlZC4KLSNkZWZpbmUgTkROQk9PU1RfSEFTX1NURElOVF9ICi0KLS8vIFRocmVhZGluZyBBUEknczoKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1BUSFJFQURTCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19QVEhSRUFEX0RFTEFZX05QCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19TQ0hFRF9ZSUVMRAotLy8jZGVmaW5lIE5ETkJPT1NUX0hBU19QVEhSRUFEX1lJRUxECi0KLS8vIGJvaWxlcnBsYXRlIGNvZGU6Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL3Bvc2l4X2ZlYXR1cmVzLmhwcD4KLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vYW1pZ2Fvcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9hbWlnYW9zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjZkMmRkNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9hbWlnYW9zLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAyLiAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLSNkZWZpbmUgTkROQk9PU1RfUExBVEZPUk0gIkFtaWdhT1MiCi0KLSNkZWZpbmUgTkROQk9PU1RfRElTQUJMRV9USFJFQURTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NXQ0hBUgotI2RlZmluZSBORE5CT09TVF9OT19TVERfV1NUUklORwotI2RlZmluZSBORE5CT09TVF9OT19JTlRSSU5TSUNfV0NIQVJfVAotIAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9iZW9zLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL2Jlb3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZGFiMGIwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL2Jlb3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIEJlT1Mgc3BlY2lmaWMgY29uZmlnIG9wdGlvbnM6Ci0KLSNkZWZpbmUgTkROQk9PU1RfUExBVEZPUk0gIkJlT1MiCi0KLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1dDSEFSCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NXQ1RZUEUKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1VOSVNURF9ICi0KLSNkZWZpbmUgTkROQk9PU1RfSEFTX0JFVEhSRUFEUwotCi0jaWZuZGVmIE5ETkJPT1NUX0RJU0FCTEVfVEhSRUFEUwotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19USFJFQURTCi0jZW5kaWYKLQotLy8gYm9pbGVycGxhdGUgY29kZToKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvcG9zaXhfZmVhdHVyZXMuaHBwPgotIAotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL2JzZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9ic2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjU0NTExLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL2JzZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMSAtIDIwMDMuIAotLy8gIChDKSBDb3B5cmlnaHQgRGFyaW4gQWRsZXIgMjAwMS4gCi0vLyAgKEMpIENvcHlyaWdodCBEb3VnbGFzIEdyZWdvciAyMDAyLiAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLS8vICBnZW5lcmljIEJTRCBjb25maWcgb3B0aW9uczoKLQotI2lmICFkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX05ldEJTRF9fKSAmJiAhZGVmaW5lZChfX09wZW5CU0RfXykgJiYgIWRlZmluZWQoX19EcmFnb25GbHlfXykKLSNlcnJvciAiVGhpcyBwbGF0Zm9ybSBpcyBub3QgQlNEIgotI2VuZGlmCi0KLSNpZmRlZiBfX0ZyZWVCU0RfXwotI2RlZmluZSBORE5CT09TVF9QTEFURk9STSAiRnJlZUJTRCAiIE5ETkJPT1NUX1NUUklOR0laRShfX0ZyZWVCU0RfXykKLSNlbGlmIGRlZmluZWQoX19OZXRCU0RfXykKLSNkZWZpbmUgTkROQk9PU1RfUExBVEZPUk0gIk5ldEJTRCAiIE5ETkJPT1NUX1NUUklOR0laRShfX05ldEJTRF9fKQotI2VsaWYgZGVmaW5lZChfX09wZW5CU0RfXykKLSNkZWZpbmUgTkROQk9PU1RfUExBVEZPUk0gIk9wZW5CU0QgIiBORE5CT09TVF9TVFJJTkdJWkUoX19PcGVuQlNEX18pCi0jZWxpZiBkZWZpbmVkKF9fRHJhZ29uRmx5X18pCi0jZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNICJEcmFnb25GbHkgIiBORE5CT09TVF9TVFJJTkdJWkUoX19EcmFnb25GbHlfXykKLSNlbmRpZgotCi0vLwotLy8gaXMgdGhpcyB0aGUgY29ycmVjdCB2ZXJzaW9uIGNoZWNrPwotLy8gRnJlZUJTRCBoYXMgPG5sX3R5cGVzLmg+IGJ1dCBkb2VzIG5vdAotLy8gYWR2ZXJ0aXNlIHRoZSBmYWN0IGluIDx1bmlzdGQuaD46Ci0vLwotI2lmIChkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAoX19GcmVlQlNEX18gPj0gMykpIHx8IGRlZmluZWQoX19EcmFnb25GbHlfXykKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfTkxfVFlQRVNfSAotI2VuZGlmCi0KLS8vCi0vLyBGcmVlQlNEIDMueCBoYXMgcHRocmVhZHMgc3VwcG9ydCwgYnV0IGRlZmluZXMgX1BPU0lYX1RIUkVBRFMgaW4gPHB0aHJlYWQuaD4KLS8vIGFuZCBub3QgaW4gPHVuaXN0ZC5oPgotLy8KLSNpZiAoZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgKF9fRnJlZUJTRF9fIDw9IDMpKVwKLSAgIHx8IGRlZmluZWQoX19PcGVuQlNEX18pIHx8IGRlZmluZWQoX19EcmFnb25GbHlfXykgCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1BUSFJFQURTCi0jZW5kaWYKLQotLy8KLS8vIE5vIHdpZGUgY2hhcmFjdGVyIHN1cHBvcnQgaW4gdGhlIEJTRCBoZWFkZXIgZmlsZXM6Ci0vLwotI2lmIGRlZmluZWQoX19OZXRCU0RfXykKLSNkZWZpbmUgX19OZXRCU0RfR0NDX18gKF9fR05VQ19fICAgICAgICAgKiAxMDAwMDAwIFwKLSAgICAgICAgICAgICAgICAgICAgICAgKyBfX0dOVUNfTUlOT1JfXyAqICAgIDEwMDAgXAotICAgICAgICAgICAgICAgICAgICAgICArIF9fR05VQ19QQVRDSExFVkVMX18pCi0vLyBYWFggLSB0aGUgZm9sbG93aW5nIGlzIHJlcXVpcmVkIHVudGlsIGMrK2NvbmZpZy5oCi0vLyAgICAgICBkZWZpbmVzIF9HTElCQ1hYX0hBVkVfU1dQUklOVEYgYW5kIGZyaWVuZHMKLS8vICAgICAgIG9yIHRoZSBwcmVwcm9jZXNzb3IgY29uZGl0aW9uYWxzIGFyZSByZW1vdmVkCi0vLyAgICAgICBmcm9tIHRoZSBjd2NoYXIgaGVhZGVyLgotI2RlZmluZSBfR0xJQkNYWF9IQVZFX1NXUFJJTlRGIDEKLSNlbmRpZgotCi0jaWYgISgoZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgKF9fRnJlZUJTRF9fID49IDUpKSBcCi0gICAgICB8fCAoZGVmaW5lZChfX05ldEJTRF9HQ0NfXykgJiYgKF9fTmV0QlNEX0dDQ19fID49IDIwOTUwMDMpKSB8fCBkZWZpbmVkKF9fRHJhZ29uRmx5X18pKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NXQ0hBUgotI2VuZGlmCi0vLwotLy8gVGhlIEJTRCA8Y3R5cGUuaD4gaGFzIG1hY3JvcyBvbmx5LCBubyBmdW5jdGlvbnM6Ci0vLwotI2lmICFkZWZpbmVkKF9fT3BlbkJTRF9fKSB8fCBkZWZpbmVkKF9fRHJhZ29uRmx5X18pCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1RZUEVfRlVOQ1RJT05TCi0jZW5kaWYKLQotLy8KLS8vIHRocmVhZCBBUEkncyBub3QgYXV0byBkZXRlY3RlZDoKLS8vCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19TQ0hFRF9ZSUVMRAotI2RlZmluZSBORE5CT09TVF9IQVNfTkFOT1NMRUVQCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19HRVRUSU1FT0ZEQVkKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1BUSFJFQURfTVVURVhBVFRSX1NFVFRZUEUKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1NJR0FDVElPTgotCi0vLyBib2lsZXJwbGF0ZSBjb2RlOgotI2RlZmluZSBORE5CT09TVF9IQVNfVU5JU1REX0gKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvcG9zaXhfZmVhdHVyZXMuaHBwPgotCi0KLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vY3JheS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9jcmF5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjAwY2RhYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9jcmF5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDExLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIFNHSSBJcml4IHNwZWNpZmljIGNvbmZpZyBvcHRpb25zOgotCi0jZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNICJDcmF5IgotCi0vLyBib2lsZXJwbGF0ZSBjb2RlOgotI2RlZmluZSBORE5CT09TVF9IQVNfVU5JU1REX0gKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvcG9zaXhfZmVhdHVyZXMuaHBwPgotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vY3lnd2luLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL2N5Z3dpbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwMDIyZmYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vY3lnd2luLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAxIC0gMjAwMy4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyAgY3lnd2luIHNwZWNpZmljIGNvbmZpZyBvcHRpb25zOgotCi0jZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNICJDeWd3aW4iCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19ESVJFTlRfSAotI2RlZmluZSBORE5CT09TVF9IQVNfTE9HMVAKLSNkZWZpbmUgTkROQk9PU1RfSEFTX0VYUE0xCi0KLS8vCi0vLyBUaHJlYWRpbmcgQVBJOgotLy8gU2VlIGlmIHdlIGhhdmUgUE9TSVggdGhyZWFkcywgaWYgd2UgZG8gdXNlIHRoZW0sIG90aGVyd2lzZQotLy8gcmV2ZXJ0IHRvIG5hdGl2ZSBXaW4gdGhyZWFkcy4KLSNkZWZpbmUgTkROQk9PU1RfSEFTX1VOSVNURF9ICi0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jaWYgZGVmaW5lZChfUE9TSVhfVEhSRUFEUykgJiYgKF9QT1NJWF9USFJFQURTKzAgPj0gMCkgJiYgIWRlZmluZWQoTkROQk9PU1RfSEFTX1dJTlRIUkVBRFMpCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1BUSFJFQURTCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1NDSEVEX1lJRUxECi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX0dFVFRJTUVPRkRBWQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19QVEhSRUFEX01VVEVYQVRUUl9TRVRUWVBFCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1NJR0FDVElPTgotI2Vsc2UKLSMgIGlmICFkZWZpbmVkKE5ETkJPT1NUX0hBU19XSU5USFJFQURTKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19XSU5USFJFQURTCi0jICBlbmRpZgotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19GVElNRQotI2VuZGlmCi0KLS8vCi0vLyBmaW5kIG91dCBpZiB3ZSBoYXZlIGEgc3RkaW50LmgsIHRoZXJlIHNob3VsZCBiZSBhIGJldHRlciB3YXkgdG8gZG8gdGhpczoKLS8vCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWZkZWYgX1NURElOVF9ICi0jZGVmaW5lIE5ETkJPT1NUX0hBU19TVERJTlRfSAotI2VuZGlmCi0KLS8vLyBDeWd3aW4gaGFzIG5vIGZlbnYuaAotI2RlZmluZSBORE5CT09TVF9OT19GRU5WX0gKLQotLy8gYm9pbGVycGxhdGUgY29kZToKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvcG9zaXhfZmVhdHVyZXMuaHBwPgotCi0vLwotLy8gQ3lnd2luIGxpZXMgYWJvdXQgWFNJIGNvbmZvcm1hbmNlLCB0aGVyZSBpcyBubyBubF90eXBlcy5oOgotLy8KLSNpZmRlZiBORE5CT09TVF9IQVNfTkxfVFlQRVNfSAotIyAgdW5kZWYgTkROQk9PU1RfSEFTX05MX1RZUEVTX0gKLSNlbmRpZgotIAotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9ocHV4LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL2hwdXguaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTQwYTJlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL2hwdXguaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEgLSAyMDAzLiAKLS8vICAoQykgQ29weXJpZ2h0IEplbnMgTWF1cmVyIDIwMDEgLSAyMDAzLiAKLS8vICAoQykgQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDIuIAotLy8gIChDKSBDb3B5cmlnaHQgVG9vbiBLbmFwZW4gMjAwMy4gCi0vLyAgKEMpIENvcHlyaWdodCBCb3JpcyBHdWJlbmtvIDIwMDYgLSAyMDA3LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIGhwdXggc3BlY2lmaWMgY29uZmlnIG9wdGlvbnM6Ci0KLSNkZWZpbmUgTkROQk9PU1RfUExBVEZPUk0gIkhQLVVYIgotCi0vLyBJbiBwcmluY2lwbGUsIEhQLVVYIGhhcyBhIG5pY2UgPHN0ZGludC5oPiB1bmRlciB0aGUgbmFtZSA8aW50dHlwZXMuaD4KLS8vIEhvd2V2ZXIsIGl0IGhhcyB0aGUgZm9sbG93aW5nIHByb2JsZW06Ci0vLyBVc2Ugb2YgVUlOVDMyX0MoMCkgcmVzdWx0cyBpbiAiMHUgbCIgZm9yIHRoZSBwcmVwcm9jZXNzZWQgc291cmNlCi0vLyAodmVyaWZ5YWJsZSB3aXRoIGdjYyAyLjk1LjMpCi0jaWYgKGRlZmluZWQoX19HTlVDX18pICYmIChfX0dOVUNfXyA+PSAzKSkgfHwgZGVmaW5lZChfX0hQX2FDQykKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfU1RESU5UX0gKLSNlbmRpZgotCi0jaWYgIShkZWZpbmVkKF9fSFBfYUNDKSB8fCAhZGVmaW5lZChfSU5DTFVERV9fU1REQ19BMV9TT1VSQ0UpKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NXUFJJTlRGCi0jZW5kaWYKLSNpZiBkZWZpbmVkKF9fSFBfYUNDKSAmJiAhZGVmaW5lZChfSU5DTFVERV9fU1REQ19BMV9TT1VSQ0UpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1dDVFlQRQotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fR05VQ19fKQotIyAgaWYgKF9fR05VQ19fIDwgMykgfHwgKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPCAzKSkKLSAgICAgIC8vIEdOVSBDIG9uIEhQLVVYIGRvZXMgbm90IHN1cHBvcnQgdGhyZWFkcyAoY2hlY2tlZCB1cCB0byBnY2MgMy4zKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0RJU0FCTEVfVEhSRUFEUwotIyAgZWxpZiAhZGVmaW5lZChORE5CT09TVF9ESVNBQkxFX1RIUkVBRFMpCi0gICAgICAvLyB0aHJlYWRzIHN1cHBvcnRlZCBmcm9tIGdjYy0zLjMgb253YXJkczoKLSMgICAgIGRlZmluZSBORE5CT09TVF9IQVNfVEhSRUFEUwotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19QVEhSRUFEUwotIyAgZW5kaWYKLSNlbGlmIGRlZmluZWQoX19IUF9hQ0MpICYmICFkZWZpbmVkKE5ETkJPT1NUX0RJU0FCTEVfVEhSRUFEUykKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfUFRIUkVBRFMKLSNlbmRpZgotCi0vLyBib2lsZXJwbGF0ZSBjb2RlOgotI2RlZmluZSBORE5CT09TVF9IQVNfVU5JU1REX0gKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvcG9zaXhfZmVhdHVyZXMuaHBwPgotCi0vLyB0aGUgZm9sbG93aW5nIGFyZSBhbHdheXMgYXZhaWxhYmxlOgotI2lmbmRlZiBORE5CT09TVF9IQVNfR0VUVElNRU9GREFZCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX0dFVFRJTUVPRkRBWQotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX0hBU19TQ0hFRF9ZSUVMRAotIyAgICBkZWZpbmUgTkROQk9PU1RfSEFTX1NDSEVEX1lJRUxECi0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfSEFTX1BUSFJFQURfTVVURVhBVFRSX1NFVFRZUEUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19QVEhSRUFEX01VVEVYQVRUUl9TRVRUWVBFCi0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfSEFTX05MX1RZUEVTX0gKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19OTF9UWVBFU19ICi0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfSEFTX05BTk9TTEVFUAotIyAgICBkZWZpbmUgTkROQk9PU1RfSEFTX05BTk9TTEVFUAotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX0hBU19HRVRUSU1FT0ZEQVkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19HRVRUSU1FT0ZEQVkKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9IQVNfRElSRU5UX0gKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19ESVJFTlRfSAotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX0hBU19DTE9DS19HRVRUSU1FCi0jICAgIGRlZmluZSBORE5CT09TVF9IQVNfQ0xPQ0tfR0VUVElNRQotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX0hBU19TSUdBQ1RJT04KLSMgIGRlZmluZSBORE5CT09TVF9IQVNfU0lHQUNUSU9OCi0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfSEFTX05SVk8gCi0jICBpZm5kZWYgX19wYXJpc2MKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19OUlZPCi0jICBlbmRpZgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX0hBU19MT0cxUCAKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfTE9HMVAKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9IQVNfRVhQTTEKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfRVhQTTEKLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9pcml4LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL2lyaXguaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTJkODIxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL2lyaXguaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEgLSAyMDAzLiAKLS8vICAoQykgQ29weXJpZ2h0IEplbnMgTWF1cmVyIDIwMDMuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyAgU0dJIElyaXggc3BlY2lmaWMgY29uZmlnIG9wdGlvbnM6Ci0KLSNkZWZpbmUgTkROQk9PU1RfUExBVEZPUk0gIlNHSSBJcml4IgotCi0jZGVmaW5lIE5ETkJPT1NUX05PX1NXUFJJTlRGIAotLy8KLS8vIHRoZXNlIGFyZSBub3QgYXV0byBkZXRlY3RlZCBieSBQT1NJWCBmZWF0dXJlIHRlc3RzOgotLy8KLSNkZWZpbmUgTkROQk9PU1RfSEFTX0dFVFRJTUVPRkRBWQotI2RlZmluZSBORE5CT09TVF9IQVNfUFRIUkVBRF9NVVRFWEFUVFJfU0VUVFlQRQotCi0jaWZkZWYgX19HTlVDX18KLSAgIC8vIEdOVSBDIG9uIElSSVggZG9lcyBub3Qgc3VwcG9ydCB0aHJlYWRzIChjaGVja2VkIHVwIHRvIGdjYyAzLjMpCi0jICBkZWZpbmUgTkROQk9PU1RfRElTQUJMRV9USFJFQURTCi0jZW5kaWYKLQotLy8gYm9pbGVycGxhdGUgY29kZToKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1VOSVNURF9ICi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL3Bvc2l4X2ZlYXR1cmVzLmhwcD4KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL2xpbnV4LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL2xpbnV4LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTA3MzYzNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9saW51eC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEgLSAyMDAzLiAKLS8vICAoQykgQ29weXJpZ2h0IEplbnMgTWF1cmVyIDIwMDEgLSAyMDAzLiAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLS8vICBsaW51eCBzcGVjaWZpYyBjb25maWcgb3B0aW9uczoKLQotI2RlZmluZSBORE5CT09TVF9QTEFURk9STSAibGludXgiCi0KLS8vIG1ha2Ugc3VyZSB3ZSBoYXZlIF9fR0xJQkNfUFJFUkVRIGlmIGF2YWlsYWJsZSBhdCBhbGwKLSNpZmRlZiBfX2NwbHVzcGx1cwotI2luY2x1ZGUgPGNzdGRsaWI+Ci0jZWxzZQotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2VuZGlmCi0KLS8vCi0vLyA8c3RkaW50Lmg+IGFkZGVkIHRvIGdsaWJjIDIuMS4xCi0vLyBXZSBjYW4gb25seSB0ZXN0IGZvciAyLjEgdGhvdWdoOgotLy8KLSNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgKChfX0dMSUJDX18gPiAyKSB8fCAoKF9fR0xJQkNfXyA9PSAyKSAmJiAoX19HTElCQ19NSU5PUl9fID49IDEpKSkKLSAgIC8vIDxzdGRpbnQuaD4gZGVmaW5lcyBpbnQ2NF90IHVuY29uZGl0aW9uYWxseSwgYnV0IDxzeXMvdHlwZXMuaD4gZGVmaW5lcwotICAgLy8gaW50NjRfdCBvbmx5IGlmIF9fR05VQ19fLiAgVGh1cywgYXNzdW1lIGEgZnVsbHkgdXNhYmxlIDxzdGRpbnQuaD4KLSAgIC8vIG9ubHkgd2hlbiB1c2luZyBHQ0MuCi0jICBpZiBkZWZpbmVkIF9fR05VQ19fCi0jICAgIGRlZmluZSBORE5CT09TVF9IQVNfU1RESU5UX0gKLSMgIGVuZGlmCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19MSUJDT01PX18pCi0gICAvLwotICAgLy8gY29tbyBvbiBsaW51eCBkb2Vzbid0IGhhdmUgc3RkOjogYyBmdW5jdGlvbnM6Ci0gICAvLyBOT1RFOiB2ZXJzaW9ucyBvZiBsaWJjb21vIHByaW9yIHRvIGJldGEyOCBoYXZlIG9jdGFsIHZlcnNpb24gbnVtYmVyaW5nLAotICAgLy8gZS5nLiB2ZXJzaW9uIDI1IGlzIDIxIChkZWMpCi0gICAvLwotIyAgaWYgX19MSUJDT01PX1ZFUlNJT05fXyA8PSAyMAotIyAgICBkZWZpbmUgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UKLSMgIGVuZGlmCi0KLSMgIGlmIF9fTElCQ09NT19WRVJTSU9OX18gPD0gMjEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX05PX1NXUFJJTlRGCi0jICBlbmRpZgotCi0jZW5kaWYKLQotLy8KLS8vIElmIGdsaWJjIGlzIHBhc3QgdmVyc2lvbiAyIHRoZW4gd2UgZGVmaW5pdGVseSBoYXZlCi0vLyBnZXR0aW1lb2ZkYXksIGVhcmxpZXIgdmVyc2lvbnMgbWF5IG9yIG1heSBub3QgaGF2ZSBpdDoKLS8vCi0jaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIChfX0dMSUJDX18gPj0gMikKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfR0VUVElNRU9GREFZCi0jZW5kaWYKLQotI2lmZGVmIF9fVVNFX1BPU0lYMTk5MzA5Ci0jICBkZWZpbmUgTkROQk9PU1RfSEFTX05BTk9TTEVFUAotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgZGVmaW5lZChfX0dMSUJDX1BSRVJFUSkKLS8vIF9fR0xJQkNfUFJFUkVRIGlzIGF2YWlsYWJsZSBzaW5jZSAyLjEuMgotCi0gICAvLyBzd3ByaW50ZiBpcyBhdmFpbGFibGUgc2luY2UgZ2xpYmMgMi4yLjAKLSMgIGlmICFfX0dMSUJDX1BSRVJFUSgyLDIpIHx8ICghZGVmaW5lZChfX1VTRV9JU09DOTkpICYmICFkZWZpbmVkKF9fVVNFX1VOSVg5OCkpCi0jICAgIGRlZmluZSBORE5CT09TVF9OT19TV1BSSU5URgotIyAgZW5kaWYKLSNlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1dQUklOVEYKLSNlbmRpZgotCi0vLyBib2lsZXJwbGF0ZSBjb2RlOgotI2RlZmluZSBORE5CT09TVF9IQVNfVU5JU1REX0gKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvcG9zaXhfZmVhdHVyZXMuaHBwPgotI2RlZmluZSBORE5CT09TVF9IQVNfUFRIUkVBRF9ZSUVMRAotCi0jaWZuZGVmIF9fR05VQ19fCi0vLwotLy8gaWYgdGhlIGNvbXBpbGVyIGlzIG5vdCBnY2Mgd2Ugc3RpbGwgbmVlZCB0byBiZSBhYmxlIHRvIHBhcnNlCi0vLyB0aGUgR05VIHN5c3RlbSBoZWFkZXJzLCBzb21lIG9mIHdoaWNoIChtYWlubHkgPHN0ZGludC5oPikKLS8vIHVzZSBHTlUgc3BlY2lmaWMgZXh0ZW5zaW9uczoKLS8vCi0jICBpZm5kZWYgX19leHRlbnNpb25fXwotIyAgICAgZGVmaW5lIF9fZXh0ZW5zaW9uX18KLSMgIGVuZGlmCi0jICBpZm5kZWYgX19jb25zdF9fCi0jICAgICBkZWZpbmUgX19jb25zdF9fIGNvbnN0Ci0jICBlbmRpZgotIyAgaWZuZGVmIF9fdm9sYXRpbGVfXwotIyAgICAgZGVmaW5lIF9fdm9sYXRpbGVfXyB2b2xhdGlsZQotIyAgZW5kaWYKLSMgIGlmbmRlZiBfX3NpZ25lZF9fCi0jICAgICBkZWZpbmUgX19zaWduZWRfXyBzaWduZWQKLSMgIGVuZGlmCi0jICBpZm5kZWYgX190eXBlb2ZfXwotIyAgICAgZGVmaW5lIF9fdHlwZW9mX18gdHlwZW9mCi0jICBlbmRpZgotIyAgaWZuZGVmIF9faW5saW5lX18KLSMgICAgIGRlZmluZSBfX2lubGluZV9fIGlubGluZQotIyAgZW5kaWYKLSNlbmRpZgotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL21hY29zLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL21hY29zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzY5MjJkYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9tYWNvcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NyArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMSAtIDIwMDMuIAotLy8gIChDKSBDb3B5cmlnaHQgRGFyaW4gQWRsZXIgMjAwMSAtIDIwMDIuIAotLy8gIChDKSBDb3B5cmlnaHQgQmlsbCBLZW1wZiAyMDAyLiAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLS8vICBNYWMgT1Mgc3BlY2lmaWMgY29uZmlnIG9wdGlvbnM6Ci0KLSNkZWZpbmUgTkROQk9PU1RfUExBVEZPUk0gIk1hYyBPUyIKLQotI2lmIF9fTUFDSF9fICYmICFkZWZpbmVkKF9NU0xfVVNJTkdfTVNMX0MpCi0KLS8vIFVzaW5nIHRoZSBNYWMgT1MgWCBzeXN0ZW0gQlNELXN0eWxlIEMgbGlicmFyeS4KLQotIyAgaWZuZGVmIE5ETkJPT1NUX0hBU19VTklTVERfSAotIyAgICBkZWZpbmUgTkROQk9PU1RfSEFTX1VOSVNURF9ICi0jICBlbmRpZgotLy8KLS8vIEJlZ2luIGJ5IGluY2x1ZGluZyBvdXIgYm9pbGVycGxhdGUgY29kZSBmb3IgUE9TSVgKLS8vIGZlYXR1cmUgZGV0ZWN0aW9uLCB0aGlzIGlzIHNhZmUgZXZlbiB3aGVuIHVzaW5nCi0vLyB0aGUgTVNMIGFzIE1ldHJvd2Vya3Mgc3VwcGx5IHRoZWlyIG93biA8dW5pc3RkLmg+Ci0vLyB0byByZXBsYWNlIHRoZSBwbGF0Zm9ybS1uYXRpdmUgQlNEIG9uZS4gRysrIHVzZXJzCi0vLyBzaG91bGQgYWxzbyBhbHdheXMgYmUgYWJsZSB0byBkbyB0aGlzIG9uIE1heE9TIFguCi0vLwotIyAgaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL3Bvc2l4X2ZlYXR1cmVzLmhwcD4KLSMgIGlmbmRlZiBORE5CT09TVF9IQVNfU1RESU5UX0gKLSMgICAgIGRlZmluZSBORE5CT09TVF9IQVNfU1RESU5UX0gKLSMgIGVuZGlmCi0KLS8vCi0vLyBCU0QgcnVudGltZSBoYXMgcHRocmVhZHMsIHNpZ2FjdGlvbiwgc2NoZWRfeWllbGQgYW5kIGdldHRpbWVvZmRheSwKLS8vIG9mIHRoZXNlIG9ubHkgcHRocmVhZHMgYXJlIGFkdmVydGlzZWQgaW4gPHVuaXN0ZC5oPiwgc28gc2V0IHRoZSAKLS8vIG90aGVyIG9wdGlvbnMgZXhwbGljaXRseToKLS8vCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1NDSEVEX1lJRUxECi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX0dFVFRJTUVPRkRBWQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19TSUdBQ1RJT04KLQotIyAgaWYgKF9fR05VQ19fIDwgMykgJiYgIWRlZmluZWQoIF9fQVBQTEVfQ0NfXykKLQotLy8gR0NDIHN0cmFuZ2UgImlnbm9yZSBzdGQiIG1vZGUgd29ya3MgYmV0dGVyIGlmIHlvdSBwcmV0ZW5kIGV2ZXJ5dGhpbmcKLS8vIGlzIGluIHRoZSBzdGQgbmFtZXNwYWNlLCBmb3IgdGhlIG1vc3QgcGFydC4KLQotIyAgICBkZWZpbmUgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UKLSMgIGVuZGlmCi0KLSMgIGlmIChfX0dOVUNfXyA9PSA0KQotCi0vLyBCb3RoIGdjYyBhbmQgaW50ZWwgcmVxdWlyZSB0aGVzZS4gIAotIyAgICBkZWZpbmUgTkROQk9PU1RfSEFTX1BUSFJFQURfTVVURVhBVFRSX1NFVFRZUEUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19OQU5PU0xFRVAKLQotIyAgZW5kaWYKLQotI2Vsc2UKLQotLy8gVXNpbmcgdGhlIE1TTCBDIGxpYnJhcnkuCi0KLS8vIFdlIHdpbGwgZXZlbnR1YWxseSBzdXBwb3J0IHRocmVhZHMgaW4gbm9uLUNhcmJvbiBidWlsZHMsIGJ1dCB3ZSBkbwotLy8gbm90IHN1cHBvcnQgdGhpcyB5ZXQuCi0jICBpZiAoIGRlZmluZWQoVEFSR0VUX0FQSV9NQUNfQ0FSQk9OKSAmJiBUQVJHRVRfQVBJX01BQ19DQVJCT04gKSB8fCAoIGRlZmluZWQoVEFSR0VUX0NBUkJPTikgJiYgVEFSR0VUX0NBUkJPTiApCi0KLSMgIGlmICFkZWZpbmVkKE5ETkJPT1NUX0hBU19QVEhSRUFEUykKLS8vIE1QVGFza3Mgc3VwcG9ydCBpcyBkZXByZWNhdGVkL3JlbW92ZWQgZnJvbSBCb29zdDoKLS8vIyAgICBkZWZpbmUgTkROQk9PU1RfSEFTX01QVEFTS1MKLSMgIGVsaWYgKCBfX2Rlc3Rfb3MgPT0gX19tYWNfb3NfeCApCi0vLyBXZSBhcmUgZG9pbmcgYSBDYXJib24vTWFjaC1PL01TTCBidWlsZCB3aGljaCBoYXMgcHRocmVhZHMsIGJ1dCBvbmx5IHRoZQotLy8gZ2V0dGltZW9mZGF5IGFuZCBubyBwb3NpeC4KLSMgIGRlZmluZSBORE5CT09TVF9IQVNfR0VUVElNRU9GREFZCi0jICBlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfSEFTX1BUSFJFQURTCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1RIUkVBRFMKLSNlbmRpZgotCi0vLyBUaGUgcmVtb3RlIGNhbGwgbWFuYWdlciBkZXBlbmRzIG9uIHRoaXMuCi0jICAgIGRlZmluZSBORE5CT09TVF9CSU5EX0VOQUJMRV9QQVNDQUwKLQotIyAgZW5kaWYKLQotI2VuZGlmCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9xbnhudG8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vcW54bnRvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTcyYmY1Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9xbnhudG8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSmltIERvdWdsYXMgMjAwNS4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyAgUU5YIHNwZWNpZmljIGNvbmZpZyBvcHRpb25zOgotCi0jZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNICJRTlgiCi0KLSNkZWZpbmUgTkROQk9PU1RfSEFTX1VOSVNURF9ICi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL3Bvc2l4X2ZlYXR1cmVzLmhwcD4KLQotLy8gUU5YIGNsYWltcyBYT3BlbiB2ZXJzaW9uIDUgY29tcGF0aWJpbGl0eSwgYnV0IGRvZXNuJ3QgaGF2ZSBhbiBubF90eXBlcy5oCi0vLyBvciBsb2cxcCBhbmQgZXhwbTE6Ci0jdW5kZWYgIE5ETkJPT1NUX0hBU19OTF9UWVBFU19ICi0jdW5kZWYgIE5ETkJPT1NUX0hBU19MT0cxUAotI3VuZGVmICBORE5CT09TVF9IQVNfRVhQTTEKLQotI2RlZmluZSBORE5CT09TVF9IQVNfUFRIUkVBRFMKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1BUSFJFQURfTVVURVhBVFRSX1NFVFRZUEUKLQotI2RlZmluZSBORE5CT09TVF9IQVNfR0VUVElNRU9GREFZCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19DTE9DS19HRVRUSU1FCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19OQU5PU0xFRVAKLQotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9zb2xhcmlzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL3NvbGFyaXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOWNlNDFlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL3NvbGFyaXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEgLSAyMDAzLiAKLS8vICAoQykgQ29weXJpZ2h0IEplbnMgTWF1cmVyIDIwMDMuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIHN1biBzcGVjaWZpYyBjb25maWcgb3B0aW9uczoKLQotI2RlZmluZSBORE5CT09TVF9QTEFURk9STSAiU3VuIFNvbGFyaXMiCi0KLSNkZWZpbmUgTkROQk9PU1RfSEFTX0dFVFRJTUVPRkRBWQotCi0vLyBib2lsZXJwbGF0ZSBjb2RlOgotI2RlZmluZSBORE5CT09TVF9IQVNfVU5JU1REX0gKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvcG9zaXhfZmVhdHVyZXMuaHBwPgotCi0vLwotLy8gcHRocmVhZHMgZG9uJ3QgYWN0dWFsbHkgd29yayB3aXRoIGdjYyB1bmxlc3MgX1BUSFJFQURTIGlzIGRlZmluZWQ6Ci0vLwotI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX1BPU0lYX1RIUkVBRFMpICYmICFkZWZpbmVkKF9QVEhSRUFEUykKLSMgdW5kZWYgTkROQk9PU1RfSEFTX1BUSFJFQURTCi0jZW5kaWYKLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vc3ltYmlhbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9zeW1iaWFuLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWIzMjE5My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9zeW1iaWFuLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IFl1cml5IEtyYXNub3NjaGVrIDIwMDkuIAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEgLSAyMDAzLiAKLS8vICAoQykgQ29weXJpZ2h0IEplbnMgTWF1cmVyIDIwMDEgLSAyMDAzLiAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLS8vICBzeW1iaWFuIHNwZWNpZmljIGNvbmZpZyBvcHRpb25zOgotCi0KLSNkZWZpbmUgTkROQk9PU1RfUExBVEZPUk0gIlN5bWJpYW4iCi0jZGVmaW5lIE5ETkJPT1NUX1NZTUJJQU4gMQotCi0KLSNpZiBkZWZpbmVkKF9fUzYwXzNYX18pCi0vLyBPcGVuIEMgLyBDKysgcGx1Z2luIHdhcyBpbnRyb2R1c2VkIGluIHRoaXMgU0RLLCBlYXJsaWVyIHZlcnNpb25zIGRvbid0IGhhdmUgQ1JUIC8gU1RMCi0jICBkZWZpbmUgTkROQk9PU1RfUzYwXzNyZF9FRElUSU9OX0ZQMl9PUl9MQVRFUl9TREsKLS8vIG1ha2Ugc3VyZSB3ZSBoYXZlIF9fR0xJQkNfUFJFUkVRIGlmIGF2YWlsYWJsZSBhdCBhbGwKLSNpZmRlZiBfX2NwbHVzcGx1cwotI2luY2x1ZGUgPGNzdGRsaWI+Ci0jZWxzZQotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2VuZGlmLy8gYm9pbGVycGxhdGUgY29kZToKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfVU5JU1REX0gKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9wb3NpeF9mZWF0dXJlcy5ocHA+Ci0vLyBTNjAgU0RLIGRlZmluZXMgX1BPU0lYX1ZFUlNJT04gYXMgUE9TSVguMQotIyAgaWZuZGVmIE5ETkJPT1NUX0hBU19TVERJTlRfSAotIyAgICBkZWZpbmUgTkROQk9PU1RfSEFTX1NURElOVF9ICi0jICBlbmRpZgotIyAgaWZuZGVmIE5ETkJPT1NUX0hBU19HRVRUSU1FT0ZEQVkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19HRVRUSU1FT0ZEQVkKLSMgIGVuZGlmCi0jICBpZm5kZWYgTkROQk9PU1RfSEFTX0RJUkVOVF9ICi0jICAgIGRlZmluZSBORE5CT09TVF9IQVNfRElSRU5UX0gKLSMgIGVuZGlmCi0jICBpZm5kZWYgTkROQk9PU1RfSEFTX1NJR0FDVElPTgotIyAgICBkZWZpbmUgTkROQk9PU1RfSEFTX1NJR0FDVElPTgotIyAgZW5kaWYKLSMgIGlmbmRlZiBORE5CT09TVF9IQVNfUFRIUkVBRFMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19QVEhSRUFEUwotIyAgZW5kaWYKLSMgIGlmbmRlZiBORE5CT09TVF9IQVNfTkFOT1NMRUVQCi0jICAgIGRlZmluZSBORE5CT09TVF9IQVNfTkFOT1NMRUVQCi0jICBlbmRpZgotIyAgaWZuZGVmIE5ETkJPT1NUX0hBU19TQ0hFRF9ZSUVMRAotIyAgICBkZWZpbmUgTkROQk9PU1RfSEFTX1NDSEVEX1lJRUxECi0jICBlbmRpZgotIyAgaWZuZGVmIE5ETkJPT1NUX0hBU19QVEhSRUFEX01VVEVYQVRUUl9TRVRUWVBFCi0jICAgIGRlZmluZSBORE5CT09TVF9IQVNfUFRIUkVBRF9NVVRFWEFUVFJfU0VUVFlQRQotIyAgZW5kaWYKLSMgIGlmbmRlZiBORE5CT09TVF9IQVNfTE9HMVAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19MT0cxUAotIyAgZW5kaWYKLSMgIGlmbmRlZiBORE5CT09TVF9IQVNfRVhQTTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19FWFBNMQotIyAgZW5kaWYKLSMgIGlmbmRlZiBORE5CT09TVF9QT1NJWF9BUEkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BPU0lYX0FQSQotIyAgZW5kaWYKLS8vIGVuZGlhbmVzcyBzdXBwb3J0Ci0jICBpbmNsdWRlIDxzeXMvZW5kaWFuLmg+Ci0vLyBTeW1iaWFuIFNESyBwcm92aWRlcyBfQllURV9PUkRFUiBpbnN0ZWFkIG9mIF9fQllURV9PUkRFUgotIyAgaWZuZGVmIF9fTElUVExFX0VORElBTgotIyAgICBpZmRlZiBfTElUVExFX0VORElBTgotIyAgICAgIGRlZmluZSBfX0xJVFRMRV9FTkRJQU4gX0xJVFRMRV9FTkRJQU4KLSMgICAgZWxzZQotIyAgICAgIGRlZmluZSBfX0xJVFRMRV9FTkRJQU4gMTIzNAotIyAgICBlbmRpZgotIyAgZW5kaWYKLSMgIGlmbmRlZiBfX0JJR19FTkRJQU4KLSMgICAgaWZkZWYgX0JJR19FTkRJQU4KLSMgICAgICBkZWZpbmUgX19CSUdfRU5ESUFOIF9CSUdfRU5ESUFOCi0jICAgIGVsc2UKLSMgICAgICBkZWZpbmUgX19CSUdfRU5ESUFOIDQzMjEKLSMgICAgZW5kaWYKLSMgIGVuZGlmCi0jICBpZm5kZWYgX19CWVRFX09SREVSCi0jICAgIGRlZmluZSBfX0JZVEVfT1JERVIgX19MSVRUTEVfRU5ESUFOIC8vIFN5bWJpYW4gaXMgTEUKLSMgIGVuZGlmCi0vLyBLbm93biBsaW1pdGF0aW9ucwotIyAgZGVmaW5lIE5ETkJPT1NUX0FTSU9fRElTQUJMRV9TRVJJQUxfUE9SVAotIyAgZGVmaW5lIE5ETkJPT1NUX0RBVEVfVElNRV9OT19MT0NBTEUKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfV1NUUklORwotIyAgZGVmaW5lIE5ETkJPT1NUX0VYQ0VQVElPTl9ESVNBQkxFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fRVhDRVBUSU9OUwotCi0jZWxzZSAvLyBUT0RPOiBNb3JlIHBsYXRmb3JtIHN1cHBvcnQgZS5nLiBVSVEKLSMgIGVycm9yICJVbnN1cHBvdGVkIFN5bWJpYW4gU0RLIgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fV0lOU0NXX18pICYmICFkZWZpbmVkKE5ETkJPT1NUX0RJU0FCTEVfV0lOMzIpCi0jICBkZWZpbmUgTkROQk9PU1RfRElTQUJMRV9XSU4zMiAvLyB3aW5zY3cgZGVmaW5lcyBXSU4zMiBtYWNybwotI2VuZGlmCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vdm1zLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL3Ztcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1Zjc0NTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vdm1zLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEFydHlvbSBCZWlsaXMgMjAxMC4gIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlICAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KSAKLQotI2lmbmRlZiBORE5CT09TVF9DT05GSUdfUExBVEZPUk1fVk1TX0hQUCAKLSNkZWZpbmUgTkROQk9PU1RfQ09ORklHX1BMQVRGT1JNX1ZNU19IUFAgCi0KLSNkZWZpbmUgTkROQk9PU1RfUExBVEZPUk0gIk9wZW5WTVMiIAotCi0jdW5kZWYgIE5ETkJPT1NUX0hBU19TVERJTlRfSCAKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1VOSVNURF9IIAotI2RlZmluZSBORE5CT09TVF9IQVNfTkxfVFlQRVNfSCAKLSNkZWZpbmUgTkROQk9PU1RfSEFTX0dFVFRJTUVPRkRBWSAKLSNkZWZpbmUgTkROQk9PU1RfSEFTX0RJUkVOVF9IIAotI2RlZmluZSBORE5CT09TVF9IQVNfUFRIUkVBRFMgCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19OQU5PU0xFRVAgCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19DTE9DS19HRVRUSU1FIAotI2RlZmluZSBORE5CT09TVF9IQVNfUFRIUkVBRF9NVVRFWEFUVFJfU0VUVFlQRSAKLSNkZWZpbmUgTkROQk9PU1RfSEFTX0xPRzFQIAotI2RlZmluZSBORE5CT09TVF9IQVNfRVhQTTEgCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19USFJFQURTIAotI3VuZGVmICBORE5CT09TVF9IQVNfU0NIRURfWUlFTEQgCi0KLSNlbmRpZiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL3Z4d29ya3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vdnh3b3Jrcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyNTA0NGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vdnh3b3Jrcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNjkgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgRHVzdGluIFNwaWN1enphIDIwMDkuCi0vLyAgICAgIEFkYXB0ZWQgdG8gdnhXb3JrcyA2LjkgYnkgUGV0ZXIgQnJvY2thbXAgMjAxMi4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyAgU2luY2UgV1JTIGRvZXMgbm90IHlldCBwcm9wZXJseSBzdXBwb3J0IGJvb3N0IHVuZGVyIHZ4V29ya3MKLS8vICBhbmQgdGhpcyBmaWxlIHdhcyBiYWRseSBvdXRkYXRlZCwgYnV0IEkgd2FzIGtlZW4gb24gdXNpbmcgaXQsCi0vLyAgSSBwYXRjaGVkIGJvb3N0IG15c2VsZiB0byBtYWtlIHRoaW5ncyB3b3JrLiBUaGlzIGhhcyBiZWVuIHRlc3RlZAotLy8gIGFuZCBhZGFwdGVkIGJ5IG1lIGZvciB2eFdvcmtzIDYuOSAqb25seSosIGFzIEknbSBsYWNraW5nIGFjY2VzcwotLy8gIHRvIGVhcmxpZXIgNi5YIHZlcnNpb25zISBUaGUgb25seSB0aGluZyBJIGtub3cgZm9yIHN1cmUgaXMgdGhhdAotLy8gIHZlcnkgb2xkIHZlcnNpb25zIG9mIHZ4V29ya3MgKG5hbWVseSBldmVyeXRoaW5nIGJlbG93IDYueCkgYXJlCi0vLyAgYWJzb2x1dGVseSB1bmFibGUgdG8gdXNlIGJvb3N0LiBUaGlzIGlzIG1haW5seSBkdWUgdG8gdGhlIGNvbXBsZXRlbHkKLS8vICBvdXRkYXRlZCBsaWJyYXJpZXMgYW5kIGFuY2llbnQgY29tcGlsZXIgKEdDQyAyLjk2IG9yIHdvcnNlKS4gRG8KLS8vICBub3QgZXZlbiB0aGluayBvZiBnZXR0aW5nIHRoaXMgdG8gd29yaywgYSBtaXNlcmFibGUgZmFpbHVyZSB3aWxsCi0vLyAgYmUgZ3VhcmFudGVlZCEKLS8vICBFcXVhbGx5LCB0aGlzIGZpbGUgaGFzIGJlZW4gdGVzdGVkIGZvciBSVFBzIChSZWFsIFRpbWUgUHJvY2Vzc2VzKQotLy8gIG9ubHksIG5vdCBmb3IgREtNcyAoRG93bmxvYWRhYmxlIEtlcm5lbCBNb2R1bGVzKS4gVGhlc2UgdHdvIHR5cGVzCi0vLyAgb2YgZXhlY3V0YWJsZXMgZGlmZmVyIGxhcmdlbHkgaW4gdGhlIGF2YWlsYWJsZSBmdW5jdGlvbmFsaXR5IG9mCi0vLyAgdGhlIEMtbGlicmFyeSwgU1RMLCBhbmQgc28gb24uIEEgREtNIHVzZXMgYSBsaWJyYXJ5IHNpbWlsYXIgdG8gdGhvc2UKLS8vICBvZiB2eFdvcmtzIDUuWCAtIHdpdGggYWxsIGl0cyBsaW1pdGF0aW9ucyBhbmQgaW5jb21wYXRpYmlsaXRpZXMKLS8vICB3aXRoIHJlc3BlY3QgdG8gQU5TSSBDKysgYW5kIFNUTC4gU28gcHJvYmFibHkgdGhlcmUgbWlnaHQgYmUgcHJvYmxlbXMKLS8vICB3aXRoIHRoZSB1c2FnZSBvZiBib29zdCBmcm9tIERLTXMuIFdSUyBvciBhbnkgdm9sdXRlZXJzIGFyZSBmcmVlIHRvCi0vLyAgcHJvdmUgdGhlIG9wcG9zaXRlIQotCi0vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLy8KLS8vIFNvbWUgaW1wb3J0YW50IGluZm9ybWF0aW9uIHJlZ2FyZGluZyB0aGUgdXNhZ2Ugb2YgUE9TSVggc2VtYXBob3JlczoKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vCi0vLyBWeFdvcmtzIGFzIGEgcmVhbCB0aW1lIG9wZXJhdGluZyBzeXN0ZW0gaGFuZGxlcyB0aHJlYWRzIHNvbWV3aGF0Ci0vLyBkaWZmZXJlbnQgZnJvbSB3aGF0ICJub3JtYWwiIE9TZXMgZG8sIHJlZ2FyZGluZyB0aGVpciBzY2hlZHVsaW5nIQotLy8gVGhpcyBjb3VsZCBsZWFkIHRvIGEgc2NlbmFyaW8gY2FsbGVkICJwcmlvcml0eSBpbnZlcnNpb24iIHdoZW4gdXNpbmcKLS8vIHNlbWFwaG9yZXMsIHNlZSBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1ByaW9yaXR5X2ludmVyc2lvbi4KLS8vCi0vLyBOb3csIFZ4V29ya3MgUE9TSVgtc2VtYXBob3JlcyBmb3IgREtNJ3MgZGVmYXVsdCB0byB0aGUgdXNhZ2Ugb2YKLS8vIHByaW9yaXR5IGludmVydGluZyBzZW1hcGhvcmVzLCB3aGljaCBpcyBmaW5lLiBPbiB0aGUgb3RoZXIgaGFuZCwKLS8vIGZvciBSVFAncyBpdCBkZWZhdWx0cyB0byB1c2luZyBub24gcHJpb3JpdHkgaW52ZXJ0aW5nIHNlbWFwaG9yZXMsCi0vLyB3aGljaCBjb3VsZCBlYXNpbHkgcG9zZSBhIHNlcmlvdXMgcHJvYmxlbSBmb3IgYSByZWFsIHRpbWUgcHJvY2VzcywKLS8vIGkuZS4gZGVhZGxvY2tzISBUbyBvdmVyY29tZSB0aGlzIHR3byBwb3NzaWJpbGl0aWVzIGRvIGV4aXN0OgotLy8KLS8vIGEpIFBhdGNoIGV2ZXJ5IHBpZWNlIG9mIGJvb3N0IHRoYXQgdXNlcyBzZW1hcGhvcmVzIHRvIGluc3RhbmNpYXRlCi0vLyAgICB0aGUgcHJvcGVyIHR5cGUgb2Ygc2VtYXBob3Jlcy4gVGhpcyBpcyBub24taW50cnVzaXZlIHdpdGggcmVzcGVjdAotLy8gICAgdG8gdGhlIE9TIGFuZCBjb3VsZCByZWxhdGl2ZWx5IGVhc3kgYmVlbiBkb25lIGJ5IGdpdmluZyBhbGwKLS8vICAgIHNlbWFwaG9yZXMgYXR0cmlidXRlcyBkZXZpYXRpbmcgZnJvbSB0aGUgZGVmYXVsdCAoZm9yIGluLWRlcHRoCi0vLyAgICBpbmZvcm1hdGlvbiBzZWUgdGhlIFBPU0lYIGZ1bmN0aW9ucyBwdGhyZWFkX211dGV4YXR0cl9pbml0KCkKLS8vICAgIGFuZCBwdGhyZWFkX211dGV4YXR0cl9zZXRwcm90b2NvbCgpKS4gSG93ZXZlciB0aGlzIGJyZWFrcyBhbGwKLS8vICAgIHRvbyBlYXNpbHksIGFzIHdpdGggZXZlcnkgbmV3IHZlcnNpb24gc29tZSBib29zdCBsaWJyYXJ5IGNvdWxkCi0vLyAgICBhbGwgaW4gYSBzdWRkZW4gc3RhcnQgdXNpbmcgc2VtYXBob3JlcywgcmVzdXJyZWN0aW5nIHRoZSB2ZXJ5Ci0vLyAgICBzYW1lLCBoYXJkIHRvIGxvY2F0ZSBwcm9ibGVtIG92ZXIgYW5kIG92ZXIgYWdhaW4hCi0vLwotLy8gYikgV2UgY291bGQgY2hhbmdlIHRoZSBkZWZhdWx0IHByb3BlcnRpZXMgZm9yIFBPU0lYLXNlbWFwaG9yZXMKLS8vICAgIHRoYXQgVnhXb3JrcyB1c2VzIGZvciBSVFAncyBhbmQgdGhpcyBpcyBiZWluZyBzdWdnZXN0ZWQgaGVyZSwKLS8vICAgIGFzIGl0IHdpbGwgbW9yZSBvciBsZXNzIHNlYW1sZXNzbHkgaW50ZWdyYXRlIHdpdGggYm9vc3QuIEkgZ290Ci0vLyAgICB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGZyb20gV1JTIGhvdyB0byBkbyB0aGlzLCBjb21wYXJlCi0vLyAgICBXaW5kIFJpdmVyIFRTUiMgMTIwOTc2ODoKLS8vCi0vLyBJbnN0cnVjdGlvbnMgZm9yIGNoYW5naW5nIHRoZSBkZWZhdWx0IHByb3BlcnRpZXMgb2YgUE9TSVgtCi0vLyBzZW1hcGhvcmVzIGZvciBSVFAncyBpbiBWeFdvcmtzIDYuOToKLS8vIC0gRWRpdCB0aGUgZmlsZSAvdnh3b3Jrcy02LjkvdGFyZ2V0L3Vzci9zcmMvcG9zaXgvcHRocmVhZExpYi5jCi0vLyAgIGluIHRoZSByb290IG9mIHlvdXIgV29ya2JlbmNoLWluc3RhbGxhdGlvbi4KLS8vIC0gQXJvdW5kIGxpbmUgOTE3IHRoZXJlIHNob3VsZCBiZSB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZGVmYXVsdAotLy8gICBtdXRleCBhdHRyaWJ1dGVzOgotLy8KLS8vICAgTE9DQUwgcHRocmVhZF9tdXRleGF0dHJfdCBkZWZhdWx0TXV0ZXhBdHRyID0KLS8vICAgICAgIHsKLS8vICAgICAgIFBUSFJFQURfSU5JVElBTElaRURfT0JKLCBQVEhSRUFEX1BSSU9fTk9ORSwgMCwKLS8vICAgICAgIFBUSFJFQURfTVVURVhfREVGQVVMVAotLy8gICAgICAgfTsKLS8vCi0vLyAgIEhlcmUsIHJlcGxhY2UgUFRIUkVBRF9QUklPX05PTkUgYnkgUFRIUkVBRF9QUklPX0lOSEVSSVQuCi0vLyAtIEFyb3VuZCBsaW5lIDEyMzYgdGhlcmUgc2hvdWxkIGJlIGEgZGVmaW5pdGlvbiBmb3IgdGhlIGZ1bmN0aW9uCi0vLyAgIHB0aHJlYWRfbXV0ZXhhdHRyX2luaXQoKS4gQSBjb3VwbGUgb2YgbGluZXMgYmVsb3cgeW91IHNob3VsZAotLy8gICBmaW5kIGEgYmxvY2sgb2YgY29kZSBsaWtlIHRoaXM6Ci0vLwotLy8gICBwQXR0ci0+bXV0ZXhBdHRyU3RhdHVzICAgICAgPSBQVEhSRUFEX0lOSVRJQUxJWkVEX09CSjsKLS8vICAgcEF0dHItPm11dGV4QXR0clByb3RvY29sICAgID0gUFRIUkVBRF9QUklPX05PTkU7Ci0vLyAgIHBBdHRyLT5tdXRleEF0dHJQcmlvY2VpbGluZyA9IDA7Ci0vLyAgIHBBdHRyLT5tdXRleEF0dHJUeXBlICAgICAgICA9IFBUSFJFQURfTVVURVhfREVGQVVMVDsKLS8vCi0vLyAgIEhlcmUgYWdhaW4sIHJlcGxhY2UgUFRIUkVBRF9QUklPX05PTkUgYnkgUFRIUkVBRF9QUklPX0lOSEVSSVQuCi0vLyAtIEZpbmFsbHksIHJlYnVpbGQgeW91ciBWU0IuIFRoaXMgd2lsbCBjcmVhdGUgYSBuZXcgVnhXb3JrcyBrZXJuZWwKLS8vICAgd2l0aCB0aGUgY2hhbmdlZCBwcm9wZXJ0aWVzLiBUaGF0J3MgaXQhIE5vdywgdXNpbmcgYm9vc3Qgc2hvdWxkCi0vLyAgIG5vIGxvbmdlciBjYXVzZSBhbnkgcHJvYmxlbXMgd2l0aCB0YXNrIGRlYWRsb2NrcyEKLS8vCi0vLyBBbmQgaGVyZSdzIGFub3RoZXIgdXNlZnVsIHBpZWNlIG9mIGluZm9ybWF0aW9uIGNvbmNlcm5pbmcgVnhXb3JrcycKLS8vIFBPU0lYLWZ1bmN0aW9uYWxpdHkgaW4gZ2VuZXJhbDoKLS8vIFZ4V29ya3MgaXMgbm90IGEgZ2VudWluZSBQT1NJWC1PUyBpbiBpdHNlbGYsIHJhdGhlciBpdCBpcyB1c2luZyBhCi0vLyBraW5kIG9mIGNvbXBhdGliaWxpdHkgbGF5ZXIgKHNvcnQgb2YgYSB3cmFwcGVyKSB0byBlbXVsYXRlIHRoZQotLy8gUE9TSVgtZnVuY3Rpb25hbGl0eSBieSB1c2luZyBpdHMgb3duIHJlc291cmNlcyBhbmQgZnVuY3Rpb25zLgotLy8gQXQgdGhlIHRpbWUgYSB0YXNrICh0aHJlYWQpIGNhbGxzIGl0J3MgZmlyc3QgUE9TSVgtZnVuY3Rpb24gZHVyaW5nCi0vLyBydW50aW1lIGl0IGlzIGJlaW5nIHRyYW5zZm9ybWVkIGJ5IHRoZSBPUyBpbnRvIGEgUE9TSVgtdGhyZWFkLgotLy8gVGhpcyB0cmFuc2Zvcm1hdGlvbiBkb2VzIGluY2x1ZGUgYSBjYWxsIHRvIG1hbGxvYygpIHRvIGFsbG9jYXRlIHRoZQotLy8gbWVtb3J5IHJlcXVpcmVkIGZvciB0aGUgaG91c2VrZWVwaW5nIG9mIFBPU0lYLXRocmVhZHMuIEluIGEgaGlnaAotLy8gcHJpb3JpdHkgUlRQIHRoaXMgbWFsbG9jKCkgY2FsbCBtYXkgYmUgaGlnaGx5IHVuZGVzaXJhYmxlLCBhcyBpdHMKLS8vIHRpbWluZyBpcyBtb3JlIG9yIGxlc3MgdW5wcmVkaWN0YWJsZSAoZGVwZW5kaW5nIG9uIHdoYXQgeW91ciBhY3R1YWwKLS8vIGhlYXAgbG9va3MgbGlrZSkuIFlvdSBjYW4gY2lyY3VtdmVudCB0aGlzIHByb2JsZW0gYnkgY2FsbGluZyB0aGUKLS8vIGZ1bmN0aW9uIHRocmVhZF9zZWxmKCkgYXQgYSB3ZWxsIGRlZmluZWQgcG9pbnQgaW4gdGhlIGNvZGUgb2YgdGhlCi0vLyB0YXNrLCBlLmcuIHNob3J0bHkgYWZ0ZXIgdGhlIHRhc2sgc3Bhd25zIHVwLiBUaGVyZWJ5IHlvdSBhcmUgYWJsZQotLy8gdG8gZGVmaW5lIHRoZSB0aW1lIHdoZW4gdGhlIHRhc2stdHJhbnNmb3JtYXRpb24gd2lsbCB0YWtlIHBsYWNlIGFuZAotLy8geW91IGNvdWxkIHNoaWZ0IGl0IHRvIGFuIHVuY3JpdGljYWwgcG9pbnQgd2hlcmUgYSBtYWxsb2MoKSBjYWxsIGlzCi0vLyB0b2xlcmFibGUuIFNvLCBpZiB0aGlzIGNvdWxkIHBvc2UgYSBwcm9ibGVtIGZvciB5b3VyIGNvZGUsIHJlbWVtYmVyCi0vLyB0byBjYWxsIHRocmVhZF9zZWxmKCkgZnJvbSB0aGUgYWZmZWN0ZWQgdGFzayBhdCBhbiBlYXJseSBzdGFnZS4KLS8vCi0vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0vLyBCbG9jayBvdXQgYWxsIHZlcnNpb25zIGJlZm9yZSB2eFdvcmtzIDYueCwgYXMgdGhlc2UgZG9uJ3Qgd29yazoKLS8vIEluY2x1ZGUgaGVhZGVyIHdpdGggdGhlIHZ4V29ya3MgdmVyc2lvbiBpbmZvcm1hdGlvbiBhbmQgcXVlcnkgdGhlbQotI2luY2x1ZGUgPHZlcnNpb24uaD4KLSNpZiAhZGVmaW5lZChfV1JTX1ZYV09SS1NfTUFKT1IpIHx8IChfV1JTX1ZYV09SS1NfTUFKT1IgPCA2KQotIyAgZXJyb3IgIlRoZSB2eFdvcmtzIHZlcnNpb24geW91J3JlIHVzaW5nIGlzIHNvIGJhZGx5IG91dGRhdGVkLFwKLSAgICAgICAgICBpdCBkb2Vzbid0IHdvcmsgYXQgYWxsIHdpdGggYm9vc3QsIHNvcnJ5LCBubyBjaGFuY2UhIgotI2VuZGlmCi0KLS8vIEhhbmRsZSB2ZXJzaW9ucyBhYm92ZSA1LlggYnV0IGJlbG93IDYuOQotI2lmIChfV1JTX1ZYV09SS1NfTUFKT1IgPT0gNikgJiYgKF9XUlNfVlhXT1JLU19NSU5PUiA8IDkpCi0vLyBUT0RPOiBTdGFydGluZyBmcm9tIHdoYXQgdmVyc2lvbiBkb2VzIHZ4V29ya3Mgd29yayB3aXRoIGJvb3N0PwotLy8gV2UgY2FuJ3QgcmVhc29uYWJseSBpbnNlcnQgYSAjd2FybmluZyAiIiBhcyBhIHVzZXIgaGludCBoZXJlLAotLy8gYXMgdGhpcyB3aWxsIHNob3cgdXAgd2l0aCBldmVyeSBmaWxlIGluY2x1ZGluZyBzb21lIGJvb3N0IGhlYWRlciwKLS8vIGJhZGx5IGJ1Z2dpbmcgdGhlIHVzZXIuLi4gU28gZm9yIHRoZSB0aW1lIGJlaW5nIHdlIGp1c3QgbGVhdmUgaXQuCi0jZW5kaWYKLQotLy8gdnhXb3JrcyBzcGVjaWZpYyBjb25maWcgb3B0aW9uczoKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNICJ2eFdvcmtzIgotCi0vLyBTcGVjaWFsIGJlaGF2aW91ciBmb3IgREtNczoKLSNpZmRlZiBfV1JTX0tFUk5FTAotICAvLyBES01zIGRvIG5vdCBoYXZlIHRoZSA8Y3djaGFyPi1oZWFkZXIsCi0gIC8vIGJ1dCBhcHBhcmVudGx5IHRoZXkgZG8gaGF2ZSBhbiBpbnRyaW5zaWMgd2NoYXJfdCBtZWFud2hpbGUhCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1dDSEFSCi0KLSAgLy8gTG90cyBvZiB3aWRlLWZ1bmN0aW9ucyBhbmQgLWhlYWRlcnMgYXJlIHVuYXZhaWxhYmxlIGZvciBES01zIGFzIHdlbGw6Ci0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1dDVFlQRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NXUFJJTlRGCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX1dTVFJJTkcKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfV1NUUkVBTUJVRgotI2VuZGlmCi0KLS8vIEdlbmVyYWxseSBhdmFpbGFibGUgaGVhZGVyczoKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1VOSVNURF9ICi0jZGVmaW5lIE5ETkJPT1NUX0hBU19TVERJTlRfSAotI2RlZmluZSBORE5CT09TVF9IQVNfRElSRU5UX0gKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1NMSVNUCi0KLS8vIHZ4V29ya3MgZG9lcyBub3QgaGF2ZSBpbnN0YWxsZWQgYW4gaWNvbnYtbGlicmFyeSBieSBkZWZhdWx0LAotLy8gc28gdW5mb3J0dW5hdGVseSBubyBVbmljb2RlIHN1cHBvcnQgZnJvbSBzY3JhdGNoIGlzIGF2YWlsYWJsZSEKLS8vIFRodXMsIGluc3RlYWQgaXQgaXMgc3VnZ2VzdGVkIHRvIHN3aXRjaCB0byBJQ1UsIGFzIHRoaXMgc2VlbXMKLS8vIHRvIGJlIHRoZSBtb3N0IGNvbXBsZXRlIGFuZCBwb3J0YWJsZSBvcHRpb24uLi4KLSNkZWZpbmUgTkROQk9PU1RfTE9DQUxFX1dJVEhfSUNVCi0KLS8vIEdlbmVyYWxseSBhdmFpbGFibGUgZnVuY3Rpb25hbGl0eToKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1RIUkVBRFMKLSNkZWZpbmUgTkROQk9PU1RfSEFTX05BTk9TTEVFUAotI2RlZmluZSBORE5CT09TVF9IQVNfR0VUVElNRU9GREFZCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19DTE9DS19HRVRUSU1FCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19NQUNST19VU0VfRkFDRVQKLQotLy8gR2VuZXJhbGx5IHVuYXZhaWxhYmxlIGZ1bmN0aW9uYWxpdHksIGRlbGl2ZXJlZCBieSBib29zdCdzIHRlc3QgZnVuY3Rpb246Ci0vLyNkZWZpbmUgTkROQk9PU1RfTk9fREVEVUNFRF9UWVBFTkFNRSAvLyBDb21tZW50ZWQgdGhpcyBvdXQsIGJvb3N0J3MgdGVzdCBnaXZlcyBhbiBlcnJvcm5lb3VzIHJlc3VsdCEKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfRVhURVJOX1RFTVBMQVRFCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX01BQ1JPUwotCi0vLyBHZW5lcmFsbHkgYXZhaWxhYmxlIHRocmVhZGluZyBBUEknczoKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1BUSFJFQURTCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19TQ0hFRF9ZSUVMRAotI2RlZmluZSBORE5CT09TVF9IQVNfU0lHQUNUSU9OCi0KLS8vIEZ1bmN0aW9uYWxpdHkgYXZhaWxhYmxlIGZvciBSVFBzIG9ubHk6Ci0jaWZkZWYgX19SVFBfXwotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19QVEhSRUFEX01VVEVYQVRUUl9TRVRUWVBFCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX0xPRzFQCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX0VYUE0xCi0jZW5kaWYKLQotLy8gRnVuY3Rpb25hbGl0eSBhdmFpbGFibGUgZm9yIERLTXMgb25seToKLSNpZmRlZiBfV1JTX0tFUk5FTAotICAvLyBMdWNraWx5LCBhdCB0aGUgbW9tZW50IHRoZXJlIHNlZW1zIHRvIGJlIG5vbmUhCi0jZW5kaWYKLQotLy8gVGhlc2UgI2RlZmluZXMgYWxsb3cgcG9zaXhfZmVhdHVyZXMgdG8gd29yaywgc2luY2UgdnhXb3JrcyBkb2Vzbid0Ci0vLyAjZGVmaW5lIHRoZW0gaXRzZWxmIGZvciBES01zIChmb3IgUlRQcyBvbiB0aGUgY29udHJhcnkgaXQgZG9lcyk6Ci0jaWZkZWYgX1dSU19LRVJORUwKLSMgIGlmbmRlZiBfUE9TSVhfVElNRVJTCi0jICAgIGRlZmluZSBfUE9TSVhfVElNRVJTICAxCi0jICBlbmRpZgotIyAgaWZuZGVmIF9QT1NJWF9USFJFQURTCi0jICAgIGRlZmluZSBfUE9TSVhfVEhSRUFEUyAxCi0jICBlbmRpZgotI2VuZGlmCi0KLS8vIHZ4V29ya3MgZG9lc24ndCB3b3JrIHdpdGggYXNpbyBzZXJpYWwgcG9ydHM6Ci0jZGVmaW5lIE5ETkJPT1NUX0FTSU9fRElTQUJMRV9TRVJJQUxfUE9SVAotLy8gVE9ETzogVGhlIHByb2JsZW0gaGVyZSBzZWVtcyB0byBiZWUgdGhhdCB2eFdvcmtzIHVzZXMgaXRzIG93biwgdmVyeSBzcGVjaWZpYwotLy8gICAgICAgd2F5cyB0byBoYW5kbGUgc2VyaWFsIHBvcnRzLCBpbmNvbXBhdGlibGUgd2l0aCBQT1NJWCBvciBhbnl0aGluZy4uLgotLy8gICAgICAgTWF5YmUgYSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiB3b3VsZCBiZSBwb3NzaWJsZSwgYnV0IHVudGlsIHRoZQotLy8gICAgICAgc3RyYWlnaHQgbmVlZCBhcmlzZXMuLi4gVGhpcyBpbXBsZW1lbnRhdGlvbiB3b3VsZCBwcmVzdW1hYmx5IGNvbnNpc3QKLS8vICAgICAgIG9mIHNvbWUgdnhXb3JrcyBzcGVjaWZpYyBpb2N0bC1jYWxscywgZXRjLiBBbnkgdm9sdXRlZXJzPwotCi0vLyB2eFdvcmtzLWFyb3VuZDogPHRpbWUuaD4gI2RlZmluZXMgQ0xPQ0tTX1BFUl9TRUMgYXMgc3lzQ2xrUmF0ZUdldCgpIGJ1dAotLy8gICAgICAgICAgICAgICAgIG1pc2VyYWJseSBmYWlscyB0byAjaW5jbHVkZSB0aGUgcmVxdWlyZWQgPHN5c0xpYi5oPiB0byBtYWtlCi0vLyAgICAgICAgICAgICAgICAgc3lzQ2xrUmF0ZUdldCgpIGF2YWlsYWJsZSEgU28gd2UgbWFudWFsbHkgaW5jbHVkZSBpdCBoZXJlLgotI2lmZGVmIF9fUlRQX18KLSMgIGluY2x1ZGUgPHRpbWUuaD4KLSMgIGluY2x1ZGUgPHN5c0xpYi5oPgotI2VuZGlmCi0KLS8vIHZ4V29ya3MtYXJvdW5kOiBJbiA8c3RkaW50Lmg+IHRoZSBtYWNyb3MgSU5UMzJfQygpLCBVSU5UMzJfQygpLCBJTlQ2NF9DKCkgYW5kCi0vLyAgICAgICAgICAgICAgICAgVUlOVDY0X0MoKSBhcmUgZGVmaW5lZCBlcnJvcm5lb3VzbHksIHlpZWxkaW5nIG5vdCBhIHNpZ25lZC8KLS8vICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nL2xvbmcgbG9uZyB0eXBlLCBidXQgYSBzaWduZWQvdW5zaWduZWQgaW50L2xvbmcKLS8vICAgICAgICAgICAgICAgICB0eXBlLiBFdmVudHVhbGx5IHRoaXMgbGVhZHMgdG8gY29tcGlsZSBlcnJvcnMgaW4gcmF0aW9fZndkLmhwcCwKLS8vICAgICAgICAgICAgICAgICB3aGVuIHRyeWluZyB0byBkZWZpbmUgc2V2ZXJhbCBjb25zdGFudHMgd2hpY2ggZG8gbm90IGZpdCBpbnRvIGEKLS8vICAgICAgICAgICAgICAgICBsb25nIHR5cGUhIFdlIGNvcnJlY3QgdGhlbSBoZXJlIGJ5IHJlZGVmaW5pbmcuCi0jaW5jbHVkZSA8Y3N0ZGludD4KLQotLy8gU29tZSBtYWNyby1tYWdpYyB0byBkbyB0aGUgam9iCi0jZGVmaW5lIFZYX0pPSU4oWCwgWSkgICAgIFZYX0RPX0pPSU4oWCwgWSkKLSNkZWZpbmUgVlhfRE9fSk9JTihYLCBZKSAgVlhfRE9fSk9JTjIoWCwgWSkKLSNkZWZpbmUgVlhfRE9fSk9JTjIoWCwgWSkgWCMjWQotCi0vLyBDb3JyZWN0bHkgc2V0dXAgdGhlIG1hY3JvcwotI3VuZGVmICBJTlQzMl9DCi0jdW5kZWYgIFVJTlQzMl9DCi0jdW5kZWYgIElOVDY0X0MKLSN1bmRlZiAgVUlOVDY0X0MKLSNkZWZpbmUgSU5UMzJfQyh4KSAgVlhfSk9JTih4LCBMKQotI2RlZmluZSBVSU5UMzJfQyh4KSBWWF9KT0lOKHgsIFVMKQotI2RlZmluZSBJTlQ2NF9DKHgpICBWWF9KT0lOKHgsIExMKQotI2RlZmluZSBVSU5UNjRfQyh4KSBWWF9KT0lOKHgsIFVMTCkKLQotLy8gI2luY2x1ZGUgTGlicmFyaWVzIHJlcXVpcmVkIGZvciB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uIGFkYXB0aW9uCi0jaW5jbHVkZSA8aW9MaWIuaD4KLSNpbmNsdWRlIDx0aWNrTGliLmg+Ci0jaW5jbHVkZSA8c3lzL3RpbWUuaD4KLQotLy8gVXNlIEMtbGlua2FnZSBmb3IgdGhlIGZvbGxvd2luZyBoZWxwZXIgZnVuY3Rpb25zCi1leHRlcm4gIkMiIHsKLQotLy8gdnhXb3Jrcy1hcm91bmQ6IFRoZSByZXF1aXJlZCBmdW5jdGlvbnMgZ2V0cmxpbWl0KCkgYW5kIGdldHJsaW1pdCgpIGFyZSBtaXNzaW5nLgotLy8gICAgICAgICAgICAgICAgIEJ1dCB3ZSBoYXZlIHRoZSBzaW1pbGFyIGZ1bmN0aW9ucyBnZXRwcmxpbWl0KCkgYW5kIHNldHBybGltaXQoKSwKLS8vICAgICAgICAgICAgICAgICB3aGljaCBtYXkgc2VydmUgdGhlIHB1cnBvc2UuCi0vLyAgICAgICAgICAgICAgICAgUHJvYmxlbTogVGhlIHZ4V29ya3MtZG9jdW1lbnRhdGlvbiByZWdhcmRpbmcgdGhlc2UgZnVuY3Rpb25zCi0vLyAgICAgICAgICAgICAgICAgZG9lc24ndCBkZXNlcnZlIGl0cyBuYW1lISBJdCBpc24ndCBkb2N1bWVudGVkIHdoYXQgdGhlIGZpcnN0IHR3bwotLy8gICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMgaWR0eXBlIGFuZCBpZCBtZWFuLCBzbyB3ZSBtdXN0IGZhbGwgYmFjayB0byBhbiBlZHVjYXRlZAotLy8gICAgICAgICAgICAgICAgIGd1ZXNzIC0gbnVsbCwgYXJnaC4uLiA6LS8KLQotLy8gVE9ETzogZ2V0cHJsaW1pdCgpIGFuZCBzZXRwcmxpbWl0KCkgZG8gZXhpc3QgZm9yIFJUUHMgb25seSwgZm9yIHdoYXRldmVyIHJlYXNvbi4KLS8vICAgICAgIFRodXMgZm9yIERLTXMgdGhlcmUgd291bGQgaGF2ZSB0byBiZSBhbm90aGVyIGltcGxlbWVudGF0aW9uLgotI2lmZGVmIF9fUlRQX18KLSAgaW5saW5lIGludCBnZXRybGltaXQoaW50IHJlc291cmNlLCBzdHJ1Y3QgcmxpbWl0ICpybHApewotICAgIHJldHVybiBnZXRwcmxpbWl0KDAsIDAsIHJlc291cmNlLCBybHApOwotICB9Ci0KLSAgaW5saW5lIGludCBzZXRybGltaXQoaW50IHJlc291cmNlLCBjb25zdCBzdHJ1Y3QgcmxpbWl0ICpybHApewotICAgIHJldHVybiBzZXRwcmxpbWl0KDAsIDAsIHJlc291cmNlLCBjb25zdF9jYXN0PHN0cnVjdCBybGltaXQqPihybHApKTsKLSAgfQotI2VuZGlmCi0KLS8vIHZ4V29ya3MgaGFzIGZ0cnVuY2F0ZSgpIG9ubHksIHNvIHdlIGRvIHNpbXVsYXRlIHRydW5jYXRlKCk6Ci1pbmxpbmUgaW50IHRydW5jYXRlKGNvbnN0IGNoYXIgKnAsIG9mZl90IGwpewotICBpbnQgZmQgPSBvcGVuKHAsIE9fV1JPTkxZKTsKLSAgaWYgKGZkID09IC0xKXsKLSAgICBlcnJubyA9IEVBQ0NFUzsKLSAgICByZXR1cm4gLTE7Ci0gIH0KLSAgaWYgKGZ0cnVuY2F0ZShmZCwgbCkgPT0gLTEpewotICAgIGNsb3NlKGZkKTsKLSAgICBlcnJubyA9IEVBQ0NFUzsKLSAgICByZXR1cm4gLTE7Ci0gIH0KLSAgcmV0dXJuIGNsb3NlKGZkKTsKLX0KLQotLy8gRmFrZSBzeW1saW5rIGhhbmRsaW5nIGJ5IGR1bW15IGZ1bmN0aW9uczoKLWlubGluZSBpbnQgc3ltbGluayhjb25zdCBjaGFyKiwgY29uc3QgY2hhciopewotICAvLyB2eFdvcmtzIGhhcyBubyBzeW1saW5rcyAtPiBhbHdheXMgcmV0dXJuIGFuIGVycm9yIQotICBlcnJubyA9IEVBQ0NFUzsKLSAgcmV0dXJuIC0xOwotfQotCi1pbmxpbmUgc3NpemVfdCByZWFkbGluayhjb25zdCBjaGFyKiwgY2hhciosIHNpemVfdCl7Ci0gIC8vIHZ4V29ya3MgaGFzIG5vIHN5bWxpbmtzIC0+IGFsd2F5cyByZXR1cm4gYW4gZXJyb3IhCi0gIGVycm5vID0gRUFDQ0VTOwotICByZXR1cm4gLTE7Ci19Ci0KLS8vIHZ4V29ya3MgY2xhaW1zIHRvIGltcGxlbWVudCBnZXR0aW1lb2ZkYXkgaW4gc3lzL3RpbWUuaAotLy8gYnV0IG5ldmVydGhlbGVzcyBkb2VzIG5vdCBwcm92aWRlIGl0ISBTZWUKLS8vIGh0dHBzOi8vc3VwcG9ydC53aW5kcml2ZXIuY29tL29sc1BvcnRhbC9mYWNlcy9tYWludGVuYW5jZS90ZWNodGlwRGV0YWlsX25vSGVhZGVyLmpzcHg/ZG9jSWQ9MTY0NDImY29udGVudElkPVdSX1RFQ0hUSVBfMDA2MjU2Ci0vLyBXZSBpbXBsZW1lbnQgYSBzdXJyb2dhdGUgdmVyc2lvbiBoZXJlIHZpYSBjbG9ja19nZXR0aW1lOgotaW5saW5lIGludCBnZXR0aW1lb2ZkYXkoc3RydWN0IHRpbWV2YWwgKnR2LCB2b2lkICogLyp0enYqLykgewotICBzdHJ1Y3QgdGltZXNwZWMgdHM7Ci0gIGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCAmdHMpOwotICB0di0+dHZfc2VjICA9IHRzLnR2X3NlYzsKLSAgdHYtPnR2X3VzZWMgPSB0cy50dl9uc2VjIC8gMTAwMDsKLSAgcmV0dXJuIDA7Ci19Ci0KLS8vIHZ4V29ya3MgZG9lcyBwcm92aWRlIG5laXRoZXIgc3RydWN0IHRtcyBub3IgZnVuY3Rpb24gdGltZXMoKSEKLS8vIFdlIGltcGxlbWVudCBhbiBlbXB0eSBkdW1teS1mdW5jdGlvbiwgc2ltcGx5IHNldHRpbmcgdGhlIHVzZXIKLS8vIGFuZCBzeXN0ZW0gdGltZSB0byB0aGUgaGFsZiBvZiB0aGV3IGFjdHVhbCBzeXN0ZW0gdGlja3MtdmFsdWUKLS8vIGFuZCB0aGUgY2hpbGQgdXNlciBhbmQgc3lzdGVtIHRpbWUgdG8gMC4KLS8vIFJhdGhlciB1Z2x5IGJ1dCBhdCBsZWFzdCBpdCBzdXBwcmVzc2VzIGNvbXBpbGVyIGVycm9ycy4uLgotLy8gVW5mb3J0dW5hdGVseSwgdGhpcyBvZiBjb3Vyc2UgKmRvZXMqIGhhdmUgYW4gc2V2ZXJlIGltcGFjdCBvbgotLy8gZGVwZW5kYW50IGxpYnJhcmllcywgYWN0dWFsbHkgdGhpcyBpcyBjaHJvbm8gb25seSEgSGVyZSBpdCB3aWxsCi0vLyBub3QgYmUgcG9zc2libGUgdG8gY29ycmVjdGx5IHVzZSB1c2VyIGFuZCBzeXN0ZW0gdGltZXMhIEJ1dAotLy8gYXMgdnhXb3JrcyBpcyBsYWNraW5nIHRoZSBhYmlsaXR5IHRvIGNhbGN1bGF0ZSB1c2VyIGFuZCBzeXN0ZW0KLS8vIHByb2Nlc3MgdGltZXMgdGhlcmUgc2VlbXMgdG8gYmUgbm8gb3RoZXIgcG9zc2libGUgc29sdXRpb24uCi1zdHJ1Y3QgdG1zewotICBjbG9ja190IHRtc191dGltZTsgIC8vIFVzZXIgQ1BVIHRpbWUKLSAgY2xvY2tfdCB0bXNfc3RpbWU7ICAvLyBTeXN0ZW0gQ1BVIHRpbWUKLSAgY2xvY2tfdCB0bXNfY3V0aW1lOyAvLyBVc2VyIENQVSB0aW1lIG9mIHRlcm1pbmF0ZWQgY2hpbGQgcHJvY2Vzc2VzCi0gIGNsb2NrX3QgdG1zX2NzdGltZTsgLy8gU3lzdGVtIENQVSB0aW1lIG9mIHRlcm1pbmF0ZWQgY2hpbGQgcHJvY2Vzc2VzCi19OwotCi1pbmxpbmUgY2xvY2tfdCB0aW1lcyhzdHJ1Y3QgdG1zICp0KXsKLSAgc3RydWN0IHRpbWVzcGVjIHRzOwotICBjbG9ja19nZXR0aW1lKENMT0NLX1RIUkVBRF9DUFVUSU1FX0lELCAmdHMpOwotICBjbG9ja190IHRpY2tzKHN0YXRpY19jYXN0PGNsb2NrX3Q+KHN0YXRpY19jYXN0PGRvdWJsZT4odHMudHZfc2VjKSAgKiBDTE9DS1NfUEVSX1NFQyArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPih0cy50dl9uc2VjKSAqIENMT0NLU19QRVJfU0VDIC8gMTAwMDAwMC4wKSk7Ci0gIHQtPnRtc191dGltZSAgPSB0aWNrcy8yVTsKLSAgdC0+dG1zX3N0aW1lICA9IHRpY2tzLzJVOwotICB0LT50bXNfY3V0aW1lID0gMDsgLy8gdnhXb3JrcyBpcyBsYWNraW5nIHRoZSBjb25jZXB0IG9mIGEgY2hpbGQgcHJvY2VzcyEKLSAgdC0+dG1zX2NzdGltZSA9IDA7IC8vIC0+IFNldCB0aGUgd2FpdCB0aW1lcyBmb3IgY2hpbGRzIHRvIDAKLSAgcmV0dXJuIHRpY2tzOwotfQotCi19IC8vIGV4dGVybiAiQyIKLQotLy8gUHV0IHRoZSBzZWxmbWFkZSBmdW5jdGlvbnMgaW50byB0aGUgc3RkLW5hbWVzcGFjZSwganVzdCBpbiBjYXNlCi1uYW1lc3BhY2Ugc3RkIHsKLSMgaWZkZWYgX19SVFBfXwotICAgIHVzaW5nIDo6Z2V0cmxpbWl0OwotICAgIHVzaW5nIDo6c2V0cmxpbWl0OwotIyBlbmRpZgotICB1c2luZyA6OnRydW5jYXRlOwotICB1c2luZyA6OnN5bWxpbms7Ci0gIHVzaW5nIDo6cmVhZGxpbms7Ci0gIHVzaW5nIDo6dGltZXM7Ci0gIHVzaW5nIDo6Z2V0dGltZW9mZGF5OwotfQotCi0vLyBTb21lIG1vcmUgbWFjcm8tbWFnaWM6Ci0vLyB2eFdvcmtzLWFyb3VuZDogU29tZSBmdW5jdGlvbnMgYXJlIG5vdCBwcmVzZW50IG9yIGJyb2tlbiBpbiB2eFdvcmtzCi0vLyAgICAgICAgICAgICAgICAgYnV0IG1heSBiZSBwYXRjaGVkIHRvIGxpZmUgdmlhIGhlbHBlciBtYWNyb3MuLi4KLQotLy8gSW5jbHVkZSBzaWduYWwuaCB3aGljaCBtaWdodCBjb250YWluIGEgdHlwbyB0byBiZSBjb3JyZWN0ZWQgaGVyZQotI2luY2x1ZGUgPHNpZ25hbC5oPgotCi0jZGVmaW5lIGdldHBhZ2VzaXplKCkgICAgc3lzY29uZihfU0NfUEFHRVNJWkUpICAgICAgICAgLy8gZ2V0cGFnZXNpemUgaXMgZGVwcmVjYXRlZCBhbnl3YXkhCi0jaWZuZGVmIFNfSVNTT0NLCi0jICBkZWZpbmUgU19JU1NPQ0sobW9kZSkgKChtb2RlICYgU19JRk1UKSA9PSBTX0lGU09DSykgLy8gSXMgZmlsZSBhIHNvY2tldD8KLSNlbmRpZgotI2RlZmluZSBsc3RhdChwLCBiKSAgICAgIHN0YXQocCwgYikgICAgICAgICAgICAgICAgICAgIC8vIGxzdGF0KCkgPT0gc3RhdCgpLCBhcyB2eFdvcmtzIGhhcyBubyBzeW1saW5rcyEKLSNpZm5kZWYgRlBFX0ZMVElOVgotIyAgZGVmaW5lIEZQRV9GTFRJTlYgICAgIChGUEVfRkxUU1VCKzEpICAgICAgICAgICAgICAgIC8vIHZ4V29ya3MgaGFzIG5vIEZQRV9GTFRJTlYsIHNvIGRlZmluZSBvbmUgYXMgYSBkdW1teQotI2VuZGlmCi0jaWYgIWRlZmluZWQoQlVTX0FEUkFMTikgJiYgZGVmaW5lZChCVVNfQURSQUxOUikKLSMgIGRlZmluZSBCVVNfQURSQUxOICAgICBCVVNfQURSQUxOUiAgICAgICAgICAgICAgICAgICAvLyBDb3JyZWN0IGEgc3VwcG9zZWQgdHlwbyBpbiB2eFdvcmtzJyA8c2lnbmFsLmg+Ci0jZW5kaWYKLS8vdHlwZWRlZiBpbnQgICAgICAgICAgICAgIGxvY2FsZV90OyAgICAgICAgICAgICAgICAgICAgIC8vIGxvY2FsZV90IGlzIGEgUE9TSVgtZXh0ZW5zaW9uLCBjdXJyZW50bHkgdW5wcmVzZW50IGluIHZ4V29ya3MhCi0KLS8vICNpbmNsdWRlIGJvaWxlcnBsYXRlIGNvZGU6Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL3Bvc2l4X2ZlYXR1cmVzLmhwcD4KLQotLy8gdnhXb3JrcyBsaWVzIGFib3V0IFhTSSBjb25mb3JtYW5jZSwgdGhlcmUgaXMgbm8gbmxfdHlwZXMuaDoKLSN1bmRlZiBORE5CT09TVF9IQVNfTkxfVFlQRVNfSApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vd2luMzIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vd2luMzIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzRlMWRhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL3dpbjMyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAxIC0gMjAwMy4gCi0vLyAgKEMpIENvcHlyaWdodCBCaWxsIEtlbXBmIDIwMDEuIAotLy8gIChDKSBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAzLiAKLS8vICAoQykgQ29weXJpZ2h0IFJlbmUgUml2ZXJhIDIwMDUuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyAgV2luMzIgc3BlY2lmaWMgY29uZmlnIG9wdGlvbnM6Ci0KLSNkZWZpbmUgTkROQk9PU1RfUExBVEZPUk0gIldpbjMyIgotCi0vLyAgR2V0IHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgTWluR1cgcnVudGltZSwgaS5lLiBfX01JTkdXMzJfKlZFUlNJT04uCi0jaWYgZGVmaW5lZChfX01JTkdXMzJfXykKLSMgIGluY2x1ZGUgPF9taW5ndy5oPgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19TV1BSSU5URikKLSMgIGRlZmluZSBORE5CT09TVF9OT19TV1BSSU5URgotI2VuZGlmCi0KLS8vICBEZWZhdWx0IGRlZmluZXMgZm9yIE5ETkJPT1NUX1NZTUJPTF9FWFBPUlQgYW5kIE5ETkJPT1NUX1NZTUJPTF9JTVBPUlQKLS8vICBJZiBhIGNvbXBpbGVyIGRvZXNuJ3Qgc3VwcG9ydCBfX2RlY2xzcGVjKGRsbGV4cG9ydCkvX19kZWNsc3BlYyhkbGxpbXBvcnQpLAotLy8gIGl0cyBuZG5ib29zdC9jb25maWcvY29tcGlsZXIvIGZpbGUgbXVzdCBkZWZpbmUgTkROQk9PU1RfU1lNQk9MX0VYUE9SVCBhbmQKLS8vICBORE5CT09TVF9TWU1CT0xfSU1QT1JUCi0jaWZuZGVmIE5ETkJPT1NUX1NZTUJPTF9FWFBPUlQKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfREVDTFNQRUMKLSMgIGRlZmluZSBORE5CT09TVF9TWU1CT0xfRVhQT1JUIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQotIyAgZGVmaW5lIE5ETkJPT1NUX1NZTUJPTF9JTVBPUlQgX19kZWNsc3BlYyhkbGxpbXBvcnQpCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19NSU5HVzMyX18pICYmICgoX19NSU5HVzMyX01BSk9SX1ZFUlNJT04gPiAyKSB8fCAoKF9fTUlOR1czMl9NQUpPUl9WRVJTSU9OID09IDIpICYmIChfX01JTkdXMzJfTUlOT1JfVkVSU0lPTiA+PSAwKSkpCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1NURElOVF9ICi0jICBpZm5kZWYgX19TVERDX0xJTUlUX01BQ1JPUwotIyAgICAgZGVmaW5lIF9fU1REQ19MSU1JVF9NQUNST1MKLSMgIGVuZGlmCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX0RJUkVOVF9ICi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1VOSVNURF9ICi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19NSU5HVzMyX18pICYmIChfX0dOVUNfXyA+PSA0KQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19FWFBNMQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19MT0cxUAotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19HRVRUSU1FT0ZEQVkKLSNlbmRpZgotLy8KLS8vIFdpbjMyIHdpbGwgbm9ybWFsbHkgYmUgdXNpbmcgbmF0aXZlIFdpbjMyIHRocmVhZHMsCi0vLyBidXQgdGhlcmUgaXMgYSBwdGhyZWFkIGxpYnJhcnkgYXZhbGlhYmxlIGFzIGFuIG9wdGlvbiwKLS8vIHdlIHVzZWQgdG8gZGlzYWJsZSB0aGlzIHdoZW4gTkROQk9PU1RfRElTQUJMRV9XSU4zMiB3YXMgCi0vLyBkZWZpbmVkIGJ1dCBubyBsb25nZXIgLSB0aGlzIHNob3VsZCBhbGxvdyBzb21lCi0vLyBmaWxlcyB0byBiZSBjb21waWxlZCBpbiBzdHJpY3QgbW9kZSAtIHdoaWxlIG1haW50YWluaW5nCi0vLyBhIGNvbnNpc3RlbnQgc2V0dGluZyBvZiBORE5CT09TVF9IQVNfVEhSRUFEUyBhY3Jvc3MKLS8vIGFsbCB0cmFuc2xhdGlvbiB1bml0cyAobmVlZGVkIGZvciBzaGFyZWRfcHRyIGV0YykuCi0vLwotCi0jaWZkZWYgX1dJTjMyX1dDRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0FOU0lfQVBJUwotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfR0VUU1lTVEVNVElNRUFTRklMRVRJTUUKLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX0hBU19QVEhSRUFEUwotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19XSU5USFJFQURTCi0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9ESVNBQkxFX1dJTjMyCi0vLyBXRUs6IEFkZGVkCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19GVElNRQotI2RlZmluZSBORE5CT09TVF9XSU5ET1dTIDEKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wb3NpeF9mZWF0dXJlcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wb3NpeF9mZWF0dXJlcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyY2M3MjQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcG9zaXhfZmVhdHVyZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTUgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEgLSAyMDAzLiAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gQWxsIFBPU0lYIGZlYXR1cmUgdGVzdHMgZ28gaW4gdGhpcyBmaWxlLAotLy8gTm90ZSB0aGF0IHdlIHRlc3QgX1BPU0lYX0NfU09VUkNFIGFuZCBfWE9QRU5fU09VUkNFIGFzIHdlbGwKLS8vIF9QT1NJWF9WRVJTSU9OIGFuZCBfWE9QRU5fVkVSU0lPTjogb24gc29tZSBzeXN0ZW1zIFBPU0lYIEFQSSdzCi0vLyBtYXkgYmUgcHJlc2VudCBidXQgbm9uZS1mdW5jdGlvbmFsIHVubGVzcyBfUE9TSVhfQ19TT1VSQ0UgYW5kCi0vLyBfWE9QRU5fU09VUkNFIGhhdmUgYmVlbiBkZWZpbmVkIHRvIHRoZSByaWdodCB2YWx1ZSAoaXQncyB1cAotLy8gdG8gdGhlIHVzZXIgdG8gZG8gdGhpcyAqYmVmb3JlKiBpbmNsdWRpbmcgYW55IGhlYWRlciwgYWx0aG91Z2gKLS8vIGluIG1vc3QgY2FzZXMgdGhlIGNvbXBpbGVyIHdpbGwgZG8gdGhpcyBmb3IgeW91KS4KLQotIyAgaWYgZGVmaW5lZChORE5CT09TVF9IQVNfVU5JU1REX0gpCi0jICAgICBpbmNsdWRlIDx1bmlzdGQuaD4KLQotICAgICAgLy8gWE9wZW4gaGFzIDxubF90eXBlcy5oPiwgYnV0IGlzIHRoaXMgdGhlIGNvcnJlY3QgdmVyc2lvbiBjaGVjaz8KLSMgICAgIGlmIGRlZmluZWQoX1hPUEVOX1ZFUlNJT04pICYmIChfWE9QRU5fVkVSU0lPTiA+PSAzKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19OTF9UWVBFU19ICi0jICAgICBlbmRpZgotCi0gICAgICAvLyBQT1NJWCB2ZXJzaW9uIDYgcmVxdWlyZXMgPHN0ZGludC5oPgotIyAgICAgaWYgZGVmaW5lZChfUE9TSVhfVkVSU0lPTikgJiYgKF9QT1NJWF9WRVJTSU9OID49IDIwMDEwMCkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9IQVNfU1RESU5UX0gKLSMgICAgIGVuZGlmCi0KLSAgICAgIC8vIFBPU0lYIHZlcnNpb24gMiByZXF1aXJlcyA8ZGlyZW50Lmg+Ci0jICAgICBpZiBkZWZpbmVkKF9QT1NJWF9WRVJTSU9OKSAmJiAoX1BPU0lYX1ZFUlNJT04gPj0gMTk5MDA5TCkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9IQVNfRElSRU5UX0gKLSMgICAgIGVuZGlmCi0KLSAgICAgIC8vIFBPU0lYIHZlcnNpb24gMyByZXF1aXJlcyA8c2lnbmFsLmg+IHRvIGhhdmUgc2lnYWN0aW9uOgotIyAgICAgaWYgZGVmaW5lZChfUE9TSVhfVkVSU0lPTikgJiYgKF9QT1NJWF9WRVJTSU9OID49IDE5OTUwNkwpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX1NJR0FDVElPTgotIyAgICAgZW5kaWYKLSAgICAgIC8vIFBPU0lYIGRlZmluZXMgX1BPU0lYX1RIUkVBRFMgPiAwIGZvciBwdGhyZWFkIHN1cHBvcnQsCi0gICAgICAvLyBob3dldmVyIHNvbWUgcGxhdGZvcm1zIGRlZmluZSBfUE9TSVhfVEhSRUFEUyB3aXRob3V0Ci0gICAgICAvLyBhIHZhbHVlLCBoZW5jZSB0aGUgKF9QT1NJWF9USFJFQURTKzAgPj0gMCkgY2hlY2suCi0gICAgICAvLyBTdHJpY3RseSBzcGVha2luZyB0aGlzIG1heSBjYXRjaCBwbGF0Zm9ybXMgd2l0aCBhCi0gICAgICAvLyBub24tZnVuY3Rpb25pbmcgc3R1YiA8cHRocmVhZHMuaD4sIGJ1dCBzdWNoIG9jY3VycmVuY2VzIHNob3VsZAotICAgICAgLy8gb2NjdXIgdmVyeSByYXJlbHkgaWYgYXQgYWxsLgotIyAgICAgaWYgZGVmaW5lZChfUE9TSVhfVEhSRUFEUykgJiYgKF9QT1NJWF9USFJFQURTKzAgPj0gMCkgJiYgIWRlZmluZWQoTkROQk9PU1RfSEFTX1dJTlRIUkVBRFMpICYmICFkZWZpbmVkKE5ETkJPT1NUX0hBU19NUFRBU0tTKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19QVEhSRUFEUwotIyAgICAgZW5kaWYKLQotICAgICAgLy8gTkROQk9PU1RfSEFTX05BTk9TTEVFUDoKLSAgICAgIC8vIFRoaXMgaXMgcHJlZGljYXRlZCBvbiBfUE9TSVhfVElNRVJTIG9yIF9YT1BFTl9SRUFMVElNRToKLSMgICAgIGlmIChkZWZpbmVkKF9QT1NJWF9USU1FUlMpICYmIChfUE9TSVhfVElNRVJTKzAgPj0gMCkpIFwKLSAgICAgICAgICAgICB8fCAoZGVmaW5lZChfWE9QRU5fUkVBTFRJTUUpICYmIChfWE9QRU5fUkVBTFRJTUUrMCA+PSAwKSkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9IQVNfTkFOT1NMRUVQCi0jICAgICBlbmRpZgotCi0gICAgICAvLyBORE5CT09TVF9IQVNfQ0xPQ0tfR0VUVElNRToKLSAgICAgIC8vIFRoaXMgaXMgcHJlZGljYXRlZCBvbiBfUE9TSVhfVElNRVJTIChhbHNvIG9uIF9YT1BFTl9SRUFMVElNRQotICAgICAgLy8gYnV0IGF0IGxlYXN0IG9uZSBwbGF0Zm9ybSAtIGxpbnV4IC0gZGVmaW5lcyB0aGF0IGZsYWcgd2l0aG91dAotICAgICAgLy8gZGVmaW5pbmcgY2xvY2tfZ2V0dGltZSk6Ci0jICAgICBpZiAoZGVmaW5lZChfUE9TSVhfVElNRVJTKSAmJiAoX1BPU0lYX1RJTUVSUyswID49IDApKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19DTE9DS19HRVRUSU1FCi0jICAgICBlbmRpZgotCi0gICAgICAvLyBORE5CT09TVF9IQVNfU0NIRURfWUlFTEQ6Ci0gICAgICAvLyBUaGlzIGlzIHByZWRpY2F0ZWQgb24gX1BPU0lYX1BSSU9SSVRZX1NDSEVEVUxJTkcgb3IKLSAgICAgIC8vIG9uIF9QT1NJWF9USFJFQURfUFJJT1JJVFlfU0NIRURVTElORyBvciBvbiBfWE9QRU5fUkVBTFRJTUUuCi0jICAgICBpZiBkZWZpbmVkKF9QT1NJWF9QUklPUklUWV9TQ0hFRFVMSU5HKSAmJiAoX1BPU0lYX1BSSU9SSVRZX1NDSEVEVUxJTkcrMCA+IDApXAotICAgICAgICAgICAgfHwgKGRlZmluZWQoX1BPU0lYX1RIUkVBRF9QUklPUklUWV9TQ0hFRFVMSU5HKSAmJiAoX1BPU0lYX1RIUkVBRF9QUklPUklUWV9TQ0hFRFVMSU5HKzAgPiAwKSlcCi0gICAgICAgICAgICB8fCAoZGVmaW5lZChfWE9QRU5fUkVBTFRJTUUpICYmIChfWE9QRU5fUkVBTFRJTUUrMCA+PSAwKSkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9IQVNfU0NIRURfWUlFTEQKLSMgICAgIGVuZGlmCi0KLSAgICAgIC8vIE5ETkJPT1NUX0hBU19HRVRUSU1FT0ZEQVk6Ci0gICAgICAvLyBORE5CT09TVF9IQVNfUFRIUkVBRF9NVVRFWEFUVFJfU0VUVFlQRToKLSAgICAgIC8vIFRoZXNlIGFyZSBwcmVkaWNhdGVkIG9uIF9YT1BFTl9WRVJTSU9OLCBhbmQgYXBwZWFycyB0byBiZSBmaXJzdCByZWxlYXNlZAotICAgICAgLy8gaW4gaXNzdWUgNCwgdmVyc2lvbiAyIChfWE9QRU5fVkVSU0lPTiA+IDUwMCkuCi0gICAgICAvLyBMaWtld2lzZSBmb3IgdGhlIGZ1bmN0aW9ucyBsb2cxcCBhbmQgZXhwbTEuCi0jICAgICBpZiBkZWZpbmVkKF9YT1BFTl9WRVJTSU9OKSAmJiAoX1hPUEVOX1ZFUlNJT04rMCA+PSA1MDApCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX0dFVFRJTUVPRkRBWQotIyAgICAgICAgaWYgZGVmaW5lZChfWE9QRU5fU09VUkNFKSAmJiAoX1hPUEVOX1NPVVJDRSswID49IDUwMCkKLSMgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9IQVNfUFRIUkVBRF9NVVRFWEFUVFJfU0VUVFlQRQotIyAgICAgICAgZW5kaWYKLSMgICAgICAgIGlmbmRlZiBORE5CT09TVF9IQVNfTE9HMVAKLSMgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9IQVNfTE9HMVAKLSMgICAgICAgIGVuZGlmCi0jICAgICAgICBpZm5kZWYgTkROQk9PU1RfSEFTX0VYUE0xCi0jICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX0VYUE0xCi0jICAgICAgICBlbmRpZgotIyAgICAgZW5kaWYKLQotIyAgZW5kaWYKLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcmVxdWlyZXNfdGhyZWFkcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9yZXF1aXJlc190aHJlYWRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2I3OTNhNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9yZXF1aXJlc190aHJlYWRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAzLiAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLQotI2lmbmRlZiBORE5CT09TVF9DT05GSUdfUkVRVUlSRVNfVEhSRUFEU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfQ09ORklHX1JFUVVJUkVTX1RIUkVBRFNfSFBQCi0KLSNpZm5kZWYgTkROQk9PU1RfQ09ORklHX0hQUAotIyAgaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9ESVNBQkxFX1RIUkVBRFMpCi0KLS8vCi0vLyBzcGVjaWFsIGNhc2UgdG8gaGFuZGxlIHZlcnNpb25zIG9mIGdjYyB3aGljaCBkb24ndCBjdXJyZW50bHkgc3VwcG9ydCB0aHJlYWRzOgotLy8KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKF9fR05VQ19fIDwgMykgfHwgKF9fR05VQ19NSU5PUl9fIDw9IDMpIHx8ICFkZWZpbmVkKE5ETkJPT1NUX1NUUklDVF9DT05GSUcpKQotLy8KLS8vIHRoaXMgaXMgY2hlY2tlZCB1cCB0byBnY2MgMy4zOgotLy8KLSNpZiBkZWZpbmVkKF9fc2dpKSB8fCBkZWZpbmVkKF9faHB1eCkKLSMgIGVycm9yICJNdWx0aS10aHJlYWRlZCBwcm9ncmFtcyBhcmUgbm90IHN1cHBvcnRlZCBieSBnY2Mgb24gSFBVWCBvciBJcml4IChsYXN0IGNoZWNrZWQgd2l0aCBnY2MgMy4zKSIKLSNlbmRpZgotCi0jZW5kaWYKLQotIyAgZXJyb3IgIlRocmVhZGluZyBzdXBwb3J0IHVuYXZhbGlhYmxlOiBpdCBoYXMgYmVlbiBleHBsaWNpdGx5IGRpc2FibGVkIHdpdGggTkROQk9PU1RfRElTQUJMRV9USFJFQURTIgotCi0jZWxpZiAhZGVmaW5lZChORE5CT09TVF9IQVNfVEhSRUFEUykKLQotIyBpZiBkZWZpbmVkIF9fQ09NT19fCi0vLyAgQ29tZWF1IEMrKwotIyAgIGVycm9yICJDb21waWxlciB0aHJlYWRpbmcgc3VwcG9ydCBpcyBub3QgdHVybmVkIG9uLiBQbGVhc2Ugc2V0IHRoZSBjb3JyZWN0IGNvbW1hbmQgbGluZSBvcHRpb25zIGZvciB0aHJlYWRpbmc6IC1EX01UIChXaW5kb3dzKSBvciAtRF9SRUVOVFJBTlQgKFVuaXgpIgotCi0jZWxpZiBkZWZpbmVkKF9fSU5URUxfQ09NUElMRVIpIHx8IGRlZmluZWQoX19JQ0wpIHx8IGRlZmluZWQoX19JQ0MpIHx8IGRlZmluZWQoX19FQ0MpCi0vLyAgSW50ZWwKLSNpZmRlZiBfV0lOMzIKLSMgIGVycm9yICJDb21waWxlciB0aHJlYWRpbmcgc3VwcG9ydCBpcyBub3QgdHVybmVkIG9uLiBQbGVhc2Ugc2V0IHRoZSBjb3JyZWN0IGNvbW1hbmQgbGluZSBvcHRpb25zIGZvciB0aHJlYWRpbmc6IGVpdGhlciAvTVQgL01UZCAvTUQgb3IgL01EZCIKLSNlbHNlCi0jICAgZXJyb3IgIkNvbXBpbGVyIHRocmVhZGluZyBzdXBwb3J0IGlzIG5vdCB0dXJuZWQgb24uIFBsZWFzZSBzZXQgdGhlIGNvcnJlY3QgY29tbWFuZCBsaW5lIG9wdGlvbnMgZm9yIHRocmVhZGluZzogLW9wZW5tcCIKLSNlbmRpZgotCi0jIGVsaWYgZGVmaW5lZCBfX0dOVUNfXwotLy8gIEdOVSBDKys6Ci0jICAgZXJyb3IgIkNvbXBpbGVyIHRocmVhZGluZyBzdXBwb3J0IGlzIG5vdCB0dXJuZWQgb24uIFBsZWFzZSBzZXQgdGhlIGNvcnJlY3QgY29tbWFuZCBsaW5lIG9wdGlvbnMgZm9yIHRocmVhZGluZzogLXB0aHJlYWQgKExpbnV4KSwgLXB0aHJlYWRzIChTb2xhcmlzKSBvciAtbXRocmVhZHMgKE1pbmd3MzIpIgotCi0jZWxpZiBkZWZpbmVkIF9fc2dpCi0vLyAgU0dJIE1JUFNwcm8gQysrCi0jICAgZXJyb3IgIkNvbXBpbGVyIHRocmVhZGluZyBzdXBwb3J0IGlzIG5vdCB0dXJuZWQgb24uIFBsZWFzZSBzZXQgdGhlIGNvcnJlY3QgY29tbWFuZCBsaW5lIG9wdGlvbnMgZm9yIHRocmVhZGluZzogLURfU0dJX01QX1NPVVJDRSIKLQotI2VsaWYgZGVmaW5lZCBfX0RFQ0NYWAotLy8gIENvbXBhcSBUcnU2NCBVbml4IGN4eAotIyAgIGVycm9yICJDb21waWxlciB0aHJlYWRpbmcgc3VwcG9ydCBpcyBub3QgdHVybmVkIG9uLiBQbGVhc2Ugc2V0IHRoZSBjb3JyZWN0IGNvbW1hbmQgbGluZSBvcHRpb25zIGZvciB0aHJlYWRpbmc6IC1wdGhyZWFkIgotCi0jZWxpZiBkZWZpbmVkIF9fQk9STEFORENfXwotLy8gIEJvcmxhbmQKLSMgICBlcnJvciAiQ29tcGlsZXIgdGhyZWFkaW5nIHN1cHBvcnQgaXMgbm90IHR1cm5lZCBvbi4gUGxlYXNlIHNldCB0aGUgY29ycmVjdCBjb21tYW5kIGxpbmUgb3B0aW9ucyBmb3IgdGhyZWFkaW5nOiAtdFdNIgotCi0jZWxpZiBkZWZpbmVkICBfX01XRVJLU19fCi0vLyAgTWV0cm93ZXJrcyBDb2RlV2FycmlvcgotIyAgIGVycm9yICJDb21waWxlciB0aHJlYWRpbmcgc3VwcG9ydCBpcyBub3QgdHVybmVkIG9uLiBQbGVhc2Ugc2V0IHRoZSBjb3JyZWN0IGNvbW1hbmQgbGluZSBvcHRpb25zIGZvciB0aHJlYWRpbmc6IGVpdGhlciAtcnVudGltZSBzbSwgLXJ1bnRpbWUgc21kLCAtcnVudGltZSBkbSwgb3IgLXJ1bnRpbWUgZG1kIgotCi0jZWxpZiBkZWZpbmVkICBfX1NVTlBST19DQwotLy8gIFN1biBXb3Jrc2hvcCBDb21waWxlciBDKysKLSMgICBlcnJvciAiQ29tcGlsZXIgdGhyZWFkaW5nIHN1cHBvcnQgaXMgbm90IHR1cm5lZCBvbi4gUGxlYXNlIHNldCB0aGUgY29ycmVjdCBjb21tYW5kIGxpbmUgb3B0aW9ucyBmb3IgdGhyZWFkaW5nOiAtbXQiCi0KLSNlbGlmIGRlZmluZWQgX19IUF9hQ0MKLS8vICBIUCBhQ0MKLSMgICBlcnJvciAiQ29tcGlsZXIgdGhyZWFkaW5nIHN1cHBvcnQgaXMgbm90IHR1cm5lZCBvbi4gUGxlYXNlIHNldCB0aGUgY29ycmVjdCBjb21tYW5kIGxpbmUgb3B0aW9ucyBmb3IgdGhyZWFkaW5nOiAtbXQiCi0KLSNlbGlmIGRlZmluZWQoX19JQk1DUFBfXykKLS8vICBJQk0gVmlzdWFsIEFnZQotIyAgIGVycm9yICJDb21waWxlciB0aHJlYWRpbmcgc3VwcG9ydCBpcyBub3QgdHVybmVkIG9uLiBQbGVhc2UgY29tcGlsZSB0aGUgY29kZSB3aXRoIHRoZSB4bENfciBjb21waWxlciIKLQotI2VsaWYgZGVmaW5lZCBfTVNDX1ZFUgotLy8gIE1pY3Jvc29mdCBWaXN1YWwgQysrCi0vLwotLy8gIE11c3QgcmVtYWluIHRoZSBsYXN0ICNlbGlmIHNpbmNlIHNvbWUgb3RoZXIgdmVuZG9ycyAoTWV0cm93ZXJrcywgZm9yCi0vLyAgZXhhbXBsZSkgYWxzbyAjZGVmaW5lIF9NU0NfVkVSCi0jICBlcnJvciAiQ29tcGlsZXIgdGhyZWFkaW5nIHN1cHBvcnQgaXMgbm90IHR1cm5lZCBvbi4gUGxlYXNlIHNldCB0aGUgY29ycmVjdCBjb21tYW5kIGxpbmUgb3B0aW9ucyBmb3IgdGhyZWFkaW5nOiBlaXRoZXIgL01UIC9NVGQgL01EIG9yIC9NRGQiCi0KLSNlbHNlCi0KLSMgIGVycm9yICJDb21waWxlciB0aHJlYWRpbmcgc3VwcG9ydCBpcyBub3QgdHVybmVkIG9uLiAgUGxlYXNlIGNvbnN1bHQgeW91ciBjb21waWxlcidzIGRvY3VtZW50YXRpb24gZm9yIHRoZSBhcHByb3ByaWF0ZSBvcHRpb25zIHRvIHVzZSIKLQotI2VuZGlmIC8vIGNvbXBpbGVycwotCi0jZW5kaWYgLy8gTkROQk9PU1RfSEFTX1RIUkVBRFMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX0NPTkZJR19SRVFVSVJFU19USFJFQURTX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc2VsZWN0X2NvbXBpbGVyX2NvbmZpZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9zZWxlY3RfY29tcGlsZXJfY29uZmlnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWRkYWYyZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9zZWxlY3RfY29tcGlsZXJfY29uZmlnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMiArMCwwIEBACi0vLyAgQm9vc3QgY29tcGlsZXIgY29uZmlndXJhdGlvbiBzZWxlY3Rpb24gaGVhZGVyIGZpbGUKLQotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEgLSAyMDAzLiAKLS8vICAoQykgQ29weXJpZ2h0IE1hcnRpbiBXaWxsZSAyMDAzLgotLy8gIChDKSBDb3B5cmlnaHQgR3VpbGxhdW1lIE1lbHF1aW9uZCAyMDAzLgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyBsb2NhdGUgd2hpY2ggY29tcGlsZXIgd2UgYXJlIHVzaW5nIGFuZCBkZWZpbmUKLS8vIE5ETkJPT1NUX0NPTVBJTEVSX0NPTkZJRyBhcyBuZWVkZWQ6IAotCi0jaWYgZGVmaW5lZChfX0dDQ1hNTF9fKQotLy8gR0NDLVhNTCBlbXVsYXRlcyBvdGhlciBjb21waWxlcnMsIGl0IGhhcyB0byBhcHBlYXIgZmlyc3QgaGVyZSEKLSMgICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfQ09ORklHICJuZG5ib29zdC9jb25maWcvY29tcGlsZXIvZ2NjX3htbC5ocHAiCi0KLSNlbGlmIGRlZmluZWQoX0NSQVlDKQotLy8gRURHIGJhc2VkIENyYXkgY29tcGlsZXI6Ci0jICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2NyYXkuaHBwIgotCi0jZWxpZiBkZWZpbmVkIF9fQ1VEQUNDX18KLS8vICBOVklESUEgQ1VEQSBDKysgY29tcGlsZXIgZm9yIEdQVQotIyAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9jb21waWxlci9udmNjLmhwcCIKLQotI2VsaWYgZGVmaW5lZCBfX0NPTU9fXwotLy8gIENvbWVhdSBDKysKLSMgICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfQ09ORklHICJuZG5ib29zdC9jb25maWcvY29tcGlsZXIvY29tZWF1LmhwcCIKLQotI2VsaWYgZGVmaW5lZChfX1BBVEhTQ0FMRV9fKSAmJiAoX19QQVRIQ0NfXyA+PSA0KQotLy8gUGF0aFNjYWxlIEVLT1BhdGggY29tcGlsZXIgKGhhcyB0byBjb21lIGJlZm9yZSBjbGFuZyBhbmQgZ2NjKQotIyAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9jb21waWxlci9wYXRoc2NhbGUuaHBwIgotCi0jZWxpZiBkZWZpbmVkKF9fSU5URUxfQ09NUElMRVIpIHx8IGRlZmluZWQoX19JQ0wpIHx8IGRlZmluZWQoX19JQ0MpIHx8IGRlZmluZWQoX19FQ0MpCi0vLyAgSW50ZWwKLSMgICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfQ09ORklHICJuZG5ib29zdC9jb25maWcvY29tcGlsZXIvaW50ZWwuaHBwIgotCi0jZWxpZiBkZWZpbmVkIF9fY2xhbmdfXwotLy8gIENsYW5nIEMrKyBlbXVsYXRlcyBHQ0MsIHNvIGl0IGhhcyB0byBhcHBlYXIgZWFybHkuCi0jICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2NsYW5nLmhwcCIKLQotI2VsaWYgZGVmaW5lZCBfX0RNQ19fCi0vLyAgRGlnaXRhbCBNYXJzIEMrKwotIyAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9jb21waWxlci9kaWdpdGFsbWFycy5ocHAiCi0KLSMgZWxpZiBkZWZpbmVkIF9fR05VQ19fCi0vLyAgR05VIEMrKzoKLSMgICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfQ09ORklHICJuZG5ib29zdC9jb25maWcvY29tcGlsZXIvZ2NjLmhwcCIKLQotI2VsaWYgZGVmaW5lZCBfX0tDQwotLy8gIEthaSBDKysKLSMgICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfQ09ORklHICJuZG5ib29zdC9jb25maWcvY29tcGlsZXIva2FpLmhwcCIKLQotI2VsaWYgZGVmaW5lZCBfX3NnaQotLy8gIFNHSSBNSVBTcHJvIEMrKwotIyAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9jb21waWxlci9zZ2lfbWlwc3Byby5ocHAiCi0KLSNlbGlmIGRlZmluZWQgX19ERUNDWFgKLS8vICBDb21wYXEgVHJ1NjQgVW5peCBjeHgKLSMgICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfQ09ORklHICJuZG5ib29zdC9jb25maWcvY29tcGlsZXIvY29tcGFxX2N4eC5ocHAiCi0KLSNlbGlmIGRlZmluZWQgX19naHMKLS8vICBHcmVlbmhpbGxzIEMrKwotIyAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9jb21waWxlci9ncmVlbmhpbGxzLmhwcCIKLQotI2VsaWYgZGVmaW5lZCBfX0NPREVHRUFSQ19fCi0vLyAgQ29kZUdlYXIgLSBtdXN0IGJlIGNoZWNrZWQgZm9yIGJlZm9yZSBCb3JsYW5kCi0jICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2NvZGVnZWFyLmhwcCIKLQotI2VsaWYgZGVmaW5lZCBfX0JPUkxBTkRDX18KLS8vICBCb3JsYW5kCi0jICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2JvcmxhbmQuaHBwIgotCi0jZWxpZiBkZWZpbmVkICBfX01XRVJLU19fCi0vLyAgTWV0cm93ZXJrcyBDb2RlV2FycmlvcgotIyAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9jb21waWxlci9tZXRyb3dlcmtzLmhwcCIKLQotI2VsaWYgZGVmaW5lZCAgX19TVU5QUk9fQ0MKLS8vICBTdW4gV29ya3Nob3AgQ29tcGlsZXIgQysrCi0jICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL3N1bnByb19jYy5ocHAiCi0KLSNlbGlmIGRlZmluZWQgX19IUF9hQ0MKLS8vICBIUCBhQ0MKLSMgICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfQ09ORklHICJuZG5ib29zdC9jb25maWcvY29tcGlsZXIvaHBfYWNjLmhwcCIKLQotI2VsaWYgZGVmaW5lZChfX01SQ19fKSB8fCBkZWZpbmVkKF9fU0NfXykKLS8vICBNUFcgTXJDcHAgb3IgU0NwcAotIyAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9jb21waWxlci9tcHcuaHBwIgotCi0jZWxpZiBkZWZpbmVkKF9fSUJNQ1BQX18pCi0vLyAgSUJNIFZpc3VhbCBBZ2UKLSMgICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfQ09ORklHICJuZG5ib29zdC9jb25maWcvY29tcGlsZXIvdmFjcHAuaHBwIgotCi0jZWxpZiBkZWZpbmVkKF9fUEdJKQotLy8gIFBvcnRsYW5kIEdyb3VwIEluYy4KLSMgICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfQ09ORklHICJuZG5ib29zdC9jb25maWcvY29tcGlsZXIvcGdpLmhwcCIKLQotI2VsaWYgZGVmaW5lZCBfTVNDX1ZFUgotLy8gIE1pY3Jvc29mdCBWaXN1YWwgQysrCi0vLwotLy8gIE11c3QgcmVtYWluIHRoZSBsYXN0ICNlbGlmIHNpbmNlIHNvbWUgb3RoZXIgdmVuZG9ycyAoTWV0cm93ZXJrcywgZm9yCi0vLyAgZXhhbXBsZSkgYWxzbyAjZGVmaW5lIF9NU0NfVkVSCi0jICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL3Zpc3VhbGMuaHBwIgotCi0jZWxpZiBkZWZpbmVkIChORE5CT09TVF9BU1NFUlRfQ09ORklHKQotLy8gdGhpcyBtdXN0IGNvbWUgbGFzdCAtIGdlbmVyYXRlIGFuIGVycm9yIGlmIHdlIGRvbid0Ci0vLyByZWNvZ25pc2UgdGhlIGNvbXBpbGVyOgotIyAgZXJyb3IgIlVua25vd24gY29tcGlsZXIgLSBwbGVhc2UgY29uZmlndXJlIChodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2NvbmZpZy9jb25maWcuaHRtI2NvbmZpZ3VyaW5nKSBhbmQgcmVwb3J0IHRoZSByZXN1bHRzIHRvIHRoZSBtYWluIGJvb3N0IG1haWxpbmcgbGlzdCAoaHR0cDovL3d3dy5ib29zdC5vcmcvbW9yZS9tYWlsaW5nX2xpc3RzLmh0bSNtYWluKSIKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9zZWxlY3RfcGxhdGZvcm1fY29uZmlnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3NlbGVjdF9wbGF0Zm9ybV9jb25maWcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDQzODcxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3NlbGVjdF9wbGF0Zm9ybV9jb25maWcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLS8vICBCb29zdCBjb21waWxlciBjb25maWd1cmF0aW9uIHNlbGVjdGlvbiBoZWFkZXIgZmlsZQotCi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMSAtIDIwMDIuIAotLy8gIChDKSBDb3B5cmlnaHQgSmVucyBNYXVyZXIgMjAwMS4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyBsb2NhdGUgd2hpY2ggcGxhdGZvcm0gd2UgYXJlIG9uIGFuZCBkZWZpbmUgTkROQk9PU1RfUExBVEZPUk1fQ09ORklHIGFzIG5lZWRlZC4KLS8vIE5vdGUgdGhhdCB3ZSBkZWZpbmUgdGhlIGhlYWRlcnMgdG8gaW5jbHVkZSB1c2luZyAiaGVhZGVyX25hbWUiIG5vdAotLy8gPGhlYWRlcl9uYW1lPiBpbiBvcmRlciB0byBwcmV2ZW50IG1hY3JvIGV4cGFuc2lvbiB3aXRoaW4gdGhlIGhlYWRlcgotLy8gbmFtZSAoZm9yIGV4YW1wbGUgImxpbnV4IiBpcyBhIG1hY3JvIG9uIGxpbnV4IHN5c3RlbXMpLgotCi0jaWYgKGRlZmluZWQobGludXgpIHx8IGRlZmluZWQoX19saW51eCkgfHwgZGVmaW5lZChfX2xpbnV4X18pIHx8IGRlZmluZWQoX19HTlVfXykgfHwgZGVmaW5lZChfX0dMSUJDX18pKSAmJiAhZGVmaW5lZChfQ1JBWUMpCi0vLyBsaW51eCwgYWxzbyBvdGhlciBwbGF0Zm9ybXMgKEh1cmQgZXRjKSB0aGF0IHVzZSBHTElCQywgc2hvdWxkIHRoZXNlIHJlYWxseSBoYXZlIHRoZWlyIG93biBjb25maWcgaGVhZGVycyB0aG91Z2g/Ci0jICBkZWZpbmUgTkROQk9PU1RfUExBVEZPUk1fQ09ORklHICJuZG5ib29zdC9jb25maWcvcGxhdGZvcm0vbGludXguaHBwIgotCi0jZWxpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fTmV0QlNEX18pIHx8IGRlZmluZWQoX19PcGVuQlNEX18pIHx8IGRlZmluZWQoX19EcmFnb25GbHlfXykKLS8vIEJTRDoKLSMgIGRlZmluZSBORE5CT09TVF9QTEFURk9STV9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9ic2QuaHBwIgotCi0jZWxpZiBkZWZpbmVkKHN1bikgfHwgZGVmaW5lZChfX3N1bikKLS8vIHNvbGFyaXM6Ci0jICBkZWZpbmUgTkROQk9PU1RfUExBVEZPUk1fQ09ORklHICJuZG5ib29zdC9jb25maWcvcGxhdGZvcm0vc29sYXJpcy5ocHAiCi0KLSNlbGlmIGRlZmluZWQoX19zZ2kpCi0vLyBTR0kgSXJpeDoKLSMgIGRlZmluZSBORE5CT09TVF9QTEFURk9STV9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9pcml4LmhwcCIKLQotI2VsaWYgZGVmaW5lZChfX2hwdXgpCi0vLyBocCB1bml4OgotIyAgZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL2hwdXguaHBwIgotCi0jZWxpZiBkZWZpbmVkKF9fQ1lHV0lOX18pCi0vLyBjeWd3aW4gaXMgbm90IHdpbjMyOgotIyAgZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL2N5Z3dpbi5ocHAiCi0KLSNlbGlmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fV0lOMzJfXykgfHwgZGVmaW5lZChXSU4zMikKLS8vIHdpbjMyOgotIyAgZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL3dpbjMyLmhwcCIKLQotI2VsaWYgZGVmaW5lZChfX0JFT1NfXykKLS8vIEJlT1MKLSMgIGRlZmluZSBORE5CT09TVF9QTEFURk9STV9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9iZW9zLmhwcCIKLQotI2VsaWYgZGVmaW5lZChtYWNpbnRvc2gpIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfQ0NfXykKLS8vIE1hY09TCi0jICBkZWZpbmUgTkROQk9PU1RfUExBVEZPUk1fQ09ORklHICJuZG5ib29zdC9jb25maWcvcGxhdGZvcm0vbWFjb3MuaHBwIgotCi0jZWxpZiBkZWZpbmVkKF9fSUJNQ1BQX18pIHx8IGRlZmluZWQoX0FJWCkKLS8vIElCTQotIyAgZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL2FpeC5ocHAiCi0KLSNlbGlmIGRlZmluZWQoX19hbWlnYW9zX18pCi0vLyBBbWlnYU9TCi0jICBkZWZpbmUgTkROQk9PU1RfUExBVEZPUk1fQ09ORklHICJuZG5ib29zdC9jb25maWcvcGxhdGZvcm0vYW1pZ2Fvcy5ocHAiCi0KLSNlbGlmIGRlZmluZWQoX19RTlhOVE9fXykKLS8vIFFOWDoKLSMgIGRlZmluZSBORE5CT09TVF9QTEFURk9STV9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9xbnhudG8uaHBwIgotCi0jZWxpZiBkZWZpbmVkKF9fVlhXT1JLU19fKQotLy8gdnhXb3JrczoKLSMgIGRlZmluZSBORE5CT09TVF9QTEFURk9STV9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS92eHdvcmtzLmhwcCIKLQotI2VsaWYgZGVmaW5lZChfX1NZTUJJQU4zMl9fKSAKLS8vIFN5bWJpYW46IAotIyAgZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL3N5bWJpYW4uaHBwIiAKLQotI2VsaWYgZGVmaW5lZChfQ1JBWUMpCi0vLyBDcmF5OgotIyAgZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL2NyYXkuaHBwIiAKLQotI2VsaWYgZGVmaW5lZChfX1ZNUykgCi0vLyBWTVM6Ci0jICBkZWZpbmUgTkROQk9PU1RfUExBVEZPUk1fQ09ORklHICJuZG5ib29zdC9jb25maWcvcGxhdGZvcm0vdm1zLmhwcCIgCi0jZWxzZQotCi0jICBpZiBkZWZpbmVkKHVuaXgpIFwKLSAgICAgIHx8IGRlZmluZWQoX191bml4KSBcCi0gICAgICB8fCBkZWZpbmVkKF9YT1BFTl9TT1VSQ0UpIFwKLSAgICAgIHx8IGRlZmluZWQoX1BPU0lYX1NPVVJDRSkKLQotICAgLy8gZ2VuZXJpYyB1bml4IHBsYXRmb3JtOgotCi0jICBpZm5kZWYgTkROQk9PU1RfSEFTX1VOSVNURF9ICi0jICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX1VOSVNURF9ICi0jICBlbmRpZgotCi0jICBpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvcG9zaXhfZmVhdHVyZXMuaHBwPgotCi0jICBlbmRpZgotCi0jICBpZiBkZWZpbmVkIChORE5CT09TVF9BU1NFUlRfQ09ORklHKQotICAgICAgLy8gdGhpcyBtdXN0IGNvbWUgbGFzdCAtIGdlbmVyYXRlIGFuIGVycm9yIGlmIHdlIGRvbid0Ci0gICAgICAvLyByZWNvZ25pc2UgdGhlIHBsYXRmb3JtOgotIyAgICAgZXJyb3IgIlVua25vd24gcGxhdGZvcm0gLSBwbGVhc2UgY29uZmlndXJlIGFuZCByZXBvcnQgdGhlIHJlc3VsdHMgdG8gYm9vc3Qub3JnIgotIyAgZW5kaWYKLQotI2VuZGlmCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9zZWxlY3Rfc3RkbGliX2NvbmZpZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9zZWxlY3Rfc3RkbGliX2NvbmZpZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3Y2FlZGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc2VsZWN0X3N0ZGxpYl9jb25maWcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBAQAotLy8gIEJvb3N0IGNvbXBpbGVyIGNvbmZpZ3VyYXRpb24gc2VsZWN0aW9uIGhlYWRlciBmaWxlCi0KLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAxIC0gMjAwMy4gCi0vLyAgKEMpIENvcHlyaWdodCBKZW5zIE1hdXJlciAyMDAxIC0gMjAwMi4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLS8vIGxvY2F0ZSB3aGljaCBzdGQgbGliIHdlIGFyZSB1c2luZyBhbmQgZGVmaW5lIE5ETkJPT1NUX1NURExJQl9DT05GSUcgYXMgbmVlZGVkOgotCi0vLyBGaXJzdCBpbmNsdWRlIDxjc3RkZGVmPiB0byBkZXRlcm1pbmUgaWYgc29tZSB2ZXJzaW9uIG9mIFNUTHBvcnQgaXMgaW4gdXNlIGFzIHRoZSBzdGQgbGliCi0vLyAoZG8gbm90IHJlbHkgb24gdGhpcyBoZWFkZXIgYmVpbmcgaW5jbHVkZWQgc2luY2UgdXNlcnMgY2FuIHNob3J0LWNpcmN1aXQgdGhpcyBoZWFkZXIgCi0vLyAgaWYgdGhleSBrbm93IHdob3NlIHN0ZCBsaWIgdGhleSBhcmUgdXNpbmcuKQotI2lmZGVmIF9fY3BsdXNwbHVzCi0jICBpbmNsdWRlIDxjc3RkZGVmPgotI2Vsc2UKLSMgIGluY2x1ZGUgPHN0ZGRlZi5oPgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fU0dJX1NUTF9QT1JUKSB8fCBkZWZpbmVkKF9TVExQT1JUX1ZFUlNJT04pCi0vLyBTVExQb3J0IGxpYnJhcnk7IHRoaXMgX211c3RfIGNvbWUgZmlyc3QsIG90aGVyd2lzZSBzaW5jZQotLy8gU1RMcG9ydCB0eXBpY2FsbHkgc2l0cyBvbiB0b3Agb2Ygc29tZSBvdGhlciBsaWJyYXJ5LCB3ZQotLy8gY2FuIGVuZCB1cCBkZXRlY3RpbmcgdGhhdCBmaXJzdCByYXRoZXIgdGhhbiBTVExwb3J0OgotIyAgZGVmaW5lIE5ETkJPT1NUX1NURExJQl9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9zdGRsaWIvc3RscG9ydC5ocHAiCi0KLSNlbHNlCi0KLS8vIElmIG91ciBzdGQgbGliIHdhcyBub3Qgc29tZSB2ZXJzaW9uIG9mIFNUTHBvcnQsIHRoZW4gaW5jbHVkZSA8dXRpbGl0eT4gYXMgaXQgaXMgYWJvdXQgCi0vLyB0aGUgc21hbGxlc3Qgb2YgdGhlIHN0ZCBsaWIgaGVhZGVycyB0aGF0IGluY2x1ZGVzIHJlYWwgQysrIHN0dWZmLiAgKFNvbWUgc3RkIGxpYnMgZG8gbm90Ci0vLyBpbmNsdWRlIHRoZWlyIEMrKy1yZWxhdGVkIG1hY3JvcyBpbiA8Y3N0ZGRlZj4gc28gdGhpcyBhZGRpdGlvbmFsIGluY2x1ZGUgbWFrZXMgc3VyZQotLy8gd2UgZ2V0IHRob3NlIGRlZmluaXRpb25zKQotLy8gKGFnYWluIGRvIG5vdCByZWx5IG9uIHRoaXMgaGVhZGVyIGJlaW5nIGluY2x1ZGVkIHNpbmNlIHVzZXJzIGNhbiBzaG9ydC1jaXJjdWl0IHRoaXMgCi0vLyAgaGVhZGVyIGlmIHRoZXkga25vdyB3aG9zZSBzdGQgbGliIHRoZXkgYXJlIHVzaW5nLikKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvbm9fdHIxL3V0aWxpdHkuaHBwPgotCi0jaWYgZGVmaW5lZChfX0xJQkNPTU9fXykKLS8vIENvbWVhdSBTVEw6Ci0jZGVmaW5lIE5ETkJPT1NUX1NURExJQl9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9zdGRsaWIvbGliY29tby5ocHAiCi0KLSNlbGlmIGRlZmluZWQoX19TVERfUldDT01QSUxFUl9IX18pIHx8IGRlZmluZWQoX1JXU1REX1ZFUikKLS8vIFJvZ3VlIFdhdmUgbGlicmFyeToKLSMgIGRlZmluZSBORE5CT09TVF9TVERMSUJfQ09ORklHICJuZG5ib29zdC9jb25maWcvc3RkbGliL3JvZ3Vld2F2ZS5ocHAiCi0KLSNlbGlmIGRlZmluZWQoX0xJQkNQUF9WRVJTSU9OKQotLy8gbGliYysrCi0jICBkZWZpbmUgTkROQk9PU1RfU1RETElCX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL3N0ZGxpYi9saWJjcHAuaHBwIgotCi0jZWxpZiBkZWZpbmVkKF9fR0xJQkNQUF9fKSB8fCBkZWZpbmVkKF9fR0xJQkNYWF9fKQotLy8gR05VIGxpYnN0ZGMrKyAzCi0jICBkZWZpbmUgTkROQk9PU1RfU1RETElCX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL3N0ZGxpYi9saWJzdGRjcHAzLmhwcCIKLQotI2VsaWYgZGVmaW5lZChfX1NUTF9DT05GSUdfSCkKLS8vIGdlbmVyaWMgU0dJIFNUTAotIyAgZGVmaW5lIE5ETkJPT1NUX1NURExJQl9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9zdGRsaWIvc2dpLmhwcCIKLQotI2VsaWYgZGVmaW5lZChfX01TTF9DUFBfXykKLS8vIE1TTCBzdGFuZGFyZCBsaWI6Ci0jICBkZWZpbmUgTkROQk9PU1RfU1RETElCX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL3N0ZGxpYi9tc2wuaHBwIgotCi0jZWxpZiBkZWZpbmVkKF9fSUJNQ1BQX18pCi0vLyB0YWtlIHRoZSBkZWZhdWx0IFZBQ1BQIHN0ZCBsaWIKLSMgIGRlZmluZSBORE5CT09TVF9TVERMSUJfQ09ORklHICJuZG5ib29zdC9jb25maWcvc3RkbGliL3ZhY3BwLmhwcCIKLQotI2VsaWYgZGVmaW5lZChNU0lQTF9DT01QSUxFX0gpCi0vLyBNb2RlbmEgQysrIHN0YW5kYXJkIGxpYnJhcnkKLSMgIGRlZmluZSBORE5CT09TVF9TVERMSUJfQ09ORklHICJuZG5ib29zdC9jb25maWcvc3RkbGliL21vZGVuYS5ocHAiCi0KLSNlbGlmIChkZWZpbmVkKF9ZVkFMUykgJiYgIWRlZmluZWQoX19JQk1DUFBfXykpIHx8IGRlZmluZWQoX0NQUExJQl9WRVIpCi0vLyBEaW5rdW13YXJlIExpYnJhcnkgKHRoaXMgaGFzIHRvIGFwcGVhciBhZnRlciBhbnkgcG9zc2libGUgcmVwbGFjZW1lbnQgbGlicmFyaWVzKToKLSMgIGRlZmluZSBORE5CT09TVF9TVERMSUJfQ09ORklHICJuZG5ib29zdC9jb25maWcvc3RkbGliL2Rpbmt1bXdhcmUuaHBwIgotCi0jZWxpZiBkZWZpbmVkIChORE5CT09TVF9BU1NFUlRfQ09ORklHKQotLy8gdGhpcyBtdXN0IGNvbWUgbGFzdCAtIGdlbmVyYXRlIGFuIGVycm9yIGlmIHdlIGRvbid0Ci0vLyByZWNvZ25pc2UgdGhlIGxpYnJhcnk6Ci0jICBlcnJvciAiVW5rbm93biBzdGFuZGFyZCBsaWJyYXJ5IC0gcGxlYXNlIGNvbmZpZ3VyZSBhbmQgcmVwb3J0IHRoZSByZXN1bHRzIHRvIGJvb3N0Lm9yZyIKLQotI2VuZGlmCi0KLSNlbmRpZgotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc3RkbGliL2Rpbmt1bXdhcmUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc3RkbGliL2Rpbmt1bXdhcmUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNmNlNTM2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3N0ZGxpYi9kaW5rdW13YXJlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1NSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMSAtIDIwMDMuCi0vLyAgKEMpIENvcHlyaWdodCBKZW5zIE1hdXJlciAyMDAxLgotLy8gIChDKSBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMS4KLS8vICAoQykgQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDIuCi0vLyAgKEMpIENvcHlyaWdodCBHdWlsbGF1bWUgTWVscXVpb25kIDIwMDMuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIERpbmt1bXdhcmUgc3RhbmRhcmQgbGlicmFyeSBjb25maWc6Ci0KLSNpZiAhZGVmaW5lZChfWVZBTFMpICYmICFkZWZpbmVkKF9DUFBMSUJfVkVSKQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9ub190cjEvdXRpbGl0eS5ocHA+Ci0jaWYgIWRlZmluZWQoX1lWQUxTKSAmJiAhZGVmaW5lZChfQ1BQTElCX1ZFUikKLSNlcnJvciBUaGlzIGlzIG5vdCB0aGUgRGlua3Vtd2FyZSBsaWIhCi0jZW5kaWYKLSNlbmRpZgotCi0KLSNpZiBkZWZpbmVkKF9DUFBMSUJfVkVSKSAmJiAoX0NQUExJQl9WRVIgPj0gMzA2KQotICAgLy8gZnVsbCBkaW5rdW13YXJlIDMuMDYgYW5kIGFib3ZlCi0gICAvLyBmdWxseSBjb25mb3JtaW5nIHByb3ZpZGVkIHRoZSBjb21waWxlciBzdXBwb3J0cyBpdDoKLSMgIGlmICEoZGVmaW5lZChfR0xPQkFMX1VTSU5HKSAmJiAoX0dMT0JBTF9VU0lORyswID4gMCkpICYmICFkZWZpbmVkKF9fQk9STEFORENfXykgJiYgIWRlZmluZWQoX1NURCkgJiYgIShkZWZpbmVkKF9fSUNDKSAmJiAoX19JQ0MgPj0gNzAwKSkgICAvLyBjYW4gYmUgZGVmaW5lZCBpbiB5dmFscy5oCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UKLSMgIGVuZGlmCi0jICBpZiAhKGRlZmluZWQoX0hBU19NRU1CRVJfVEVNUExBVEVTX1JFQklORCkgJiYgKF9IQVNfTUVNQkVSX1RFTVBMQVRFU19SRUJJTkQrMCA+IDApKSAmJiAhKGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+IDEzMDApKSAmJiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX0FMTE9DQVRPUgotIyAgZW5kaWYKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfUEFSVElBTF9TVERfQUxMT0NBVE9SCi0jICBpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIChORE5CT09TVF9NU1ZDIDwgMTMwMCkKLSAgICAgIC8vIGlmIHRoaXMgbGliIHZlcnNpb24gaXMgc2V0IHVwIGZvciB2YzYgdGhlbiB0aGVyZSBpcyBubyBzdGQ6OnVzZV9mYWNldDoKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19TVERfVVNFX0ZBQ0VUCi0jICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RXT19BUkdfVVNFX0ZBQ0VUCi0gICAgICAvLyBDIGxpYiBmdW5jdGlvbnMgYXJlbid0IGluIG5hbWVzcGFjZSBzdGQgZWl0aGVyOgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFCi0gICAgICAvLyBhbmQgbm9yIGlzIDxleGNlcHRpb24+Ci0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fRVhDRVBUSU9OX1NURF9OQU1FU1BBQ0UKLSMgIGVuZGlmCi0vLyBUaGVyZSdzIG5vIG51bWVyaWNfbGltaXRzPGxvbmcgbG9uZz4gc3VwcG9ydCB1bmxlc3MgX0xPTkdMT05HIGlzIGRlZmluZWQ6Ci0jICBpZiAhZGVmaW5lZChfTE9OR0xPTkcpICYmIChfQ1BQTElCX1ZFUiA8PSAzMTApCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fTVNfSU5UNjRfTlVNRVJJQ19MSU1JVFMKLSMgIGVuZGlmCi0vLyAzLjA2IGFwcGVhcnMgdG8gaGF2ZSAobm9uLXNnaSB2ZXJzaW9ucyBvZikgPGhhc2hfc2V0PiAmIDxoYXNoX21hcD4sCi0vLyBhbmQgbm8gPHNsaXN0PiBhdCBhbGwKLSNlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfTVNWQ19TVERfSVRFUkFUT1IgMQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9JVEVSQVRPUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1RFTVBMQVRFRF9JVEVSQVRPUl9DT05TVFJVQ1RPUlMKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfQUxMT0NBVE9SCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfVVNFX0ZBQ0VUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX09VVFBVVF9JVEVSQVRPUl9BU1NJR04KLSMgIGRlZmluZSBORE5CT09TVF9IQVNfTUFDUk9fVVNFX0ZBQ0VUCi0jICBpZm5kZWYgX0NQUExJQl9WRVIKLSAgICAgIC8vIFVwZGF0ZWQgRGlua3VtIGxpYnJhcnkgZGVmaW5lcyB0aGlzLCBhbmQgcHJvdmlkZXMKLSAgICAgIC8vIGl0cyBvd24gbWluIGFuZCBtYXggZGVmaW5pdGlvbnMsIGFzIGRvZXMgTVRBIHZlcnNpb24uCi0jICAgICBpZm5kZWYgX19NVEFfXyAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9OT19TVERfTUlOX01BWAotIyAgICAgZW5kaWYKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19NU19JTlQ2NF9OVU1FUklDX0xJTUlUUwotIyAgZW5kaWYKLSNlbmRpZgotCi0vLwotLy8gc3RkIGV4dGVuc2lvbiBuYW1lc3BhY2UgaXMgc3RkZXh0IGZvciB2YzcuMSBhbmQgbGF0ZXIsIAotLy8gdGhlIHNhbWUgYXBwbGllcyB0byBvdGhlciBjb21waWxlcnMgdGhhdCBzaXQgb24gdG9wCi0vLyBvZiB2YzcuMSAoSW50ZWwgYW5kIENvbWVhdSk6Ci0vLwotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMzEwKSAmJiAhZGVmaW5lZChfX0JPUkxBTkRDX18pCi0jICBkZWZpbmUgTkROQk9PU1RfU1REX0VYVEVOU0lPTl9OQU1FU1BBQ0Ugc3RkZXh0Ci0jZW5kaWYKLQotCi0jaWYgKGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA8PSAxMzAwKSAmJiAhZGVmaW5lZChfX0JPUkxBTkRDX18pKSB8fCAhZGVmaW5lZChfQ1BQTElCX1ZFUikgfHwgKF9DUFBMSUJfVkVSIDwgMzA2KQotICAgLy8gaWYgd2UncmUgdXNpbmcgYSBkaW5rdW0gbGliIHRoYXQncwotICAgLy8gYmVlbiBjb25maWd1cmVkIGZvciBWQzYvNyB0aGVuIHRoZXJlIGlzCi0gICAvLyBubyBpdGVyYXRvciB0cmFpdHMgKHRydWUgZXZlbiBmb3IgaWNsKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9JVEVSQVRPUl9UUkFJVFMKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX0lDTCkgJiYgKF9fSUNMIDwgODAwKSAmJiBkZWZpbmVkKF9DUFBMSUJfVkVSKSAmJiAoX0NQUExJQl9WRVIgPD0gMzEwKQotLy8gSW50ZWwgQysrIGNob2tlcyBvdmVyIGFueSBub24tdHJpdmlhbCB1c2Ugb2YgPGxvY2FsZT4KLS8vIHRoaXMgbWF5IGJlIGFuIG92ZXJseSByZXN0cmljdGl2ZSBkZWZpbmUsIGJ1dCByZWdleCBmYWlscyB3aXRob3V0IGl0OgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9MT0NBTEUKLSNlbmRpZgotCi0jaW5jbHVkZSA8dHlwZWluZm8+Ci0jaWYgKCAoIV9IQVNfRVhDRVBUSU9OUyAmJiAhZGVmaW5lZChfX2doc19fKSkgfHwgKCFfSEFTX05BTUVTUEFDRSAmJiBkZWZpbmVkKF9fZ2hzX18pKSApICYmICFkZWZpbmVkKF9fVElfQ09NUElMRVJfVkVSU0lPTl9fKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9UWVBFSU5GTyAgICAKLSNlbmRpZiAgCi0KLS8vICBDKysweCBoZWFkZXJzIGltcGxlbWVudGVkIGluIDUyMCAoYXMgc2hpcHBlZCBieSBNaWNyb3NvZnQpCi0vLwotI2lmICFkZWZpbmVkKF9DUFBMSUJfVkVSKSB8fCBfQ1BQTElCX1ZFUiA8IDUyMAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9BUlJBWQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9DT0RFQ1ZUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0ZPUldBUkRfTElTVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9JTklUSUFMSVpFUl9MSVNUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1JBTkRPTQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9SRUdFWAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9TWVNURU1fRVJST1IKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVU5PUkRFUkVEX01BUAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9VTk9SREVSRURfU0VUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RVUExFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RZUEVJTkRFWAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GVU5DVElPTkFMCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTlVNRVJJQ19MSU1JVFMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9TTUFSVF9QVFIKLSNlbmRpZgotCi0jaWYgKCFkZWZpbmVkKF9IQVNfVFIxX0lNUE9SVFMpIHx8IChfSEFTX1RSMV9JTVBPUlRTKzAgPT0gMCkpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9UVVBMRSkKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVFVQTEUKLSNlbmRpZgotCi0vLyAgQysrMHggaGVhZGVycyBpbXBsZW1lbnRlZCBpbiA1NDAgKGFzIHNoaXBwZWQgYnkgTWljcm9zb2Z0KQotLy8KLSNpZiAhZGVmaW5lZChfQ1BQTElCX1ZFUikgfHwgX0NQUExJQl9WRVIgPCA1NDAKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVFlQRV9UUkFJVFMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQ0hST05PCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NPTkRJVElPTl9WQVJJQUJMRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GVVRVUkUKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfTVVURVgKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfUkFUSU8KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVEhSRUFECi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQUxMT0NBVE9SCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQVRPTUlDX1NNQVJUX1BUUgotI2VuZGlmCi0KLS8vCi0vLyAgQysrMHggaGVhZGVycyBub3QgeWV0IChmdWxseSkgaW1wbGVtZW50ZWQ6Ci0vLwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9JTklUSUFMSVpFUl9MSVNUCi0KLSNpZmRlZiBfQ1BQTElCX1ZFUgotIyAgZGVmaW5lIE5ETkJPT1NUX0RJTktVTVdBUkVfU1RETElCIF9DUFBMSUJfVkVSCi0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX0RJTktVTVdBUkVfU1RETElCIDEKLSNlbmRpZgotCi0jaWZkZWYgX0NQUExJQl9WRVIKLSMgIGRlZmluZSBORE5CT09TVF9TVERMSUIgIkRpbmt1bXdhcmUgc3RhbmRhcmQgbGlicmFyeSB2ZXJzaW9uICIgTkROQk9PU1RfU1RSSU5HSVpFKF9DUFBMSUJfVkVSKQotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9TVERMSUIgIkRpbmt1bXdhcmUgc3RhbmRhcmQgbGlicmFyeSB2ZXJzaW9uIDEueCIKLSNlbmRpZgotCi0KLQotCi0KLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc3RkbGliL2xpYmNvbW8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc3RkbGliL2xpYmNvbW8uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZjIwYTE2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3N0ZGxpYi9saWJjb21vLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAyIC0gMjAwMy4gCi0vLyAgKEMpIENvcHlyaWdodCBKZW5zIE1hdXJlciAyMDAyIC0gMjAwMy4gCi0vLyAgKEMpIENvcHlyaWdodCBCZW1hbiBEYXdlcyAyMDAyIC0gMjAwMy4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyAgQ29tZWF1IFNUTDoKLQotI2lmICFkZWZpbmVkKF9fTElCQ09NT19fKQotIyAgaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL25vX3RyMS91dGlsaXR5LmhwcD4KLSMgIGlmICFkZWZpbmVkKF9fTElCQ09NT19fKQotIyAgICAgIGVycm9yICJUaGlzIGlzIG5vdCB0aGUgQ29tZWF1IFNUTCEiCi0jICBlbmRpZgotI2VuZGlmCi0KLS8vCi0vLyBzdGQ6OnN0cmVhbWJ1Zjx3Y2hhcl90PiBpcyBub24tc3RhbmRhcmQKLS8vIE5PVEU6IHZlcnNpb25zIG9mIGxpYmNvbW8gcHJpb3IgdG8gYmV0YTI4IGhhdmUgb2N0YWwgdmVyc2lvbiBudW1iZXJpbmcsCi0vLyBlLmcuIHZlcnNpb24gMjUgaXMgMjEgKGRlYykKLSNpZiBfX0xJQkNPTU9fVkVSU0lPTl9fIDw9IDIyCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX1dTVFJFQU1CVUYKLSNlbmRpZgotCi0jaWYgKF9fTElCQ09NT19WRVJTSU9OX18gPD0gMzEpICYmIGRlZmluZWQoX1dJTjMyKQotI2RlZmluZSBORE5CT09TVF9OT19TV1BSSU5URgotI2VuZGlmCi0KLSNpZiBfX0xJQkNPTU9fVkVSU0lPTl9fID49IDMxCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX0hBU0gKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfU0xJU1QKLSNlbmRpZgotCi0vLyAgQysrMHggaGVhZGVycyBub3QgeWV0IGltcGxlbWVudGVkCi0vLwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9BUlJBWQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9DSFJPTk8KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQ09ERUNWVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9DT05ESVRJT05fVkFSSUFCTEUKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfRk9SV0FSRF9MSVNUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0ZVVFVSRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9JTklUSUFMSVpFUl9MSVNUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX01VVEVYCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1JBTkRPTQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9SQVRJTwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9SRUdFWAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9TWVNURU1fRVJST1IKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVEhSRUFECi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RVUExFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RZUEVfVFJBSVRTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RZUEVJTkRFWAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9VTk9SREVSRURfTUFQCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1VOT1JERVJFRF9TRVQKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9OVU1FUklDX0xJTUlUUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0FMTE9DQVRPUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0FUT01JQ19TTUFSVF9QVFIKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9TTUFSVF9QVFIKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfRlVOQ1RJT05BTAotCi0vLwotLy8gSW50cmluc2ljIHR5cGVfdHJhaXRzIHN1cHBvcnQuCi0vLyBUaGUgU0dJIFNUTCBoYXMgaXQncyBvd24gX190eXBlX3RyYWl0cyBjbGFzcywgd2hpY2gKLS8vIGhhcyBpbnRyaW5zaWMgY29tcGlsZXIgc3VwcG9ydCB3aXRoIFNHSSdzIGNvbXBpbGVycy4KLS8vIFdoYXRldmVyIG1hcCBTR0kgc3R5bGUgdHlwZSB0cmFpdHMgdG8gYm9vc3QgZXF1aXZhbGVudHM6Ci0vLwotI2RlZmluZSBORE5CT09TVF9IQVNfU0dJX1RZUEVfVFJBSVRTCi0KLSNkZWZpbmUgTkROQk9PU1RfU1RETElCICJDb21lYXUgc3RhbmRhcmQgbGlicmFyeSAiIE5ETkJPT1NUX1NUUklOR0laRShfX0xJQkNPTU9fVkVSU0lPTl9fKQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3N0ZGxpYi9saWJjcHAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc3RkbGliL2xpYmNwcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0ZWU2NzguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc3RkbGliL2xpYmNwcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBDaHJpc3RvcGhlciBKZWZmZXJzb24gMjAxMS4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyAgY29uZmlnIGZvciBsaWJjKysKLS8vICBNaWdodCBuZWVkIG1vcmUgaW4gaGVyZSBsYXRlci4KLQotI2lmICFkZWZpbmVkKF9MSUJDUFBfVkVSU0lPTikKLSMgIGluY2x1ZGUgPGNpc282NDY+Ci0jICBpZiAhZGVmaW5lZChfTElCQ1BQX1ZFUlNJT04pCi0jICAgICAgZXJyb3IgIlRoaXMgaXMgbm90IGxpYmMrKyEiCi0jICBlbmRpZgotI2VuZGlmCi0KLSNkZWZpbmUgTkROQk9PU1RfU1RETElCICJsaWJjKysgdmVyc2lvbiAiIE5ETkJPT1NUX1NUUklOR0laRShfTElCQ1BQX1ZFUlNJT04pCi0KLSNkZWZpbmUgTkROQk9PU1RfSEFTX1RIUkVBRFMKLQotI2lmZGVmIF9MSUJDUFBfSEFTX05PX1ZBUklBRElDUwotIyAgICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RVUExFCi0jZW5kaWYKLQotLy8KLS8vIFRoZXNlIGFwcGVhciB0byBiZSB1bnVzYWJsZS9pbmNvbXBsZXRlIHNvIGZhcjoKLS8vCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NIUk9OTwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GVVRVUkUKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVFlQRV9UUkFJVFMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVE9NSUNfU01BUlRfUFRSCi0KLS8vIGxpYmMrKyB1c2VzIGEgbm9uLXN0YW5kYXJkIG1lc3NhZ2VzX2Jhc2UKLSNkZWZpbmUgTkROQk9PU1RfTk9fU1REX01FU1NBR0VTCi0KLS8vICAtLS0gZW5kIC0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc3RkbGliL2xpYnN0ZGNwcDMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc3RkbGliL2xpYnN0ZGNwcDMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YTBkOTkwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3N0ZGxpYi9saWJzdGRjcHAzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2NiArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMS4KLS8vICAoQykgQ29weXJpZ2h0IEplbnMgTWF1cmVyIDIwMDEuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIGNvbmZpZyBmb3IgbGlic3RkYysrIHYzCi0vLyAgbm90IG11Y2ggdG8gZ28gaW4gaGVyZToKLQotI2RlZmluZSBORE5CT09TVF9HTlVfU1RETElCIDEKLQotI2lmZGVmIF9fR0xJQkNYWF9fCi0jZGVmaW5lIE5ETkJPT1NUX1NURExJQiAiR05VIGxpYnN0ZGMrKyB2ZXJzaW9uICIgTkROQk9PU1RfU1RSSU5HSVpFKF9fR0xJQkNYWF9fKQotI2Vsc2UKLSNkZWZpbmUgTkROQk9PU1RfU1RETElCICJHTlUgbGlic3RkYysrIHZlcnNpb24gIiBORE5CT09TVF9TVFJJTkdJWkUoX19HTElCQ1BQX18pCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKF9HTElCQ1BQX1VTRV9XQ0hBUl9UKSAmJiAhZGVmaW5lZChfR0xJQkNYWF9VU0VfV0NIQVJfVCkKLSMgIGRlZmluZSBORE5CT09TVF9OT19DV0NIQVIKLSMgIGRlZmluZSBORE5CT09TVF9OT19DV0NUWVBFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX1dTVFJJTkcKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfV1NUUkVBTUJVRgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fb3NmX18pICYmICFkZWZpbmVkKF9SRUVOVFJBTlQpIFwKLSAgJiYgKCBkZWZpbmVkKF9HTElCQ1hYX0hBVkVfR1RIUl9ERUZBVUxUKSB8fCBkZWZpbmVkKF9HTElCQ1BQX0hBVkVfR1RIUl9ERUZBVUxUKSApCi0vLyBHQ0MgMyBvbiBUcnU2NCBmb3JjZXMgdGhlIGRlZmluaXRpb24gb2YgX1JFRU5UUkFOVCB3aGVuIGFueSBzdGQgbGliIGhlYWRlcgotLy8gZmlsZSBpcyBpbmNsdWRlZCwgdGhlcmVmb3JlIGZvciBjb25zaXN0ZW5jeSB3ZSBkZWZpbmUgaXQgaGVyZSBhcyB3ZWxsLgotIyAgZGVmaW5lIF9SRUVOVFJBTlQKLSNlbmRpZgotCi0jaWZkZWYgX19HTElCQ1hYX18gLy8gZ2NjIDMuNCBhbmQgZ3JlYXRlcjoKLSMgIGlmIGRlZmluZWQoX0dMSUJDWFhfSEFWRV9HVEhSX0RFRkFVTFQpIFwKLSAgICAgICAgfHwgZGVmaW5lZChfR0xJQkNYWF9fUFRIUkVBRFMpIFwKLSAgICAgICAgfHwgZGVmaW5lZChfR0xJQkNYWF9IQVNfR1RIUkVBRFMpIFwKLSAgICAgICAgfHwgZGVmaW5lZChfV0lOMzIpIFwKLSAgICAgICAgfHwgZGVmaW5lZChfQUlYKQotICAgICAgLy8KLSAgICAgIC8vIElmIHRoZSBzdGQgbGliIGhhcyB0aHJlYWQgc3VwcG9ydCB0dXJuZWQgb24sIHRoZW4gdHVybiBpdCBvbiBpbiBCb29zdAotICAgICAgLy8gYXMgd2VsbC4gIFdlIGRvIHRoaXMgYmVjYXVzZSBzb21lIGdjYy0zLjQgc3RkIGxpYiBoZWFkZXJzIGRlZmluZSBfUkVFTlRBTlQKLSAgICAgIC8vIHdoaWxlIG90aGVycyBkbyBub3QuLi4KLSAgICAgIC8vCi0jICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RIUkVBRFMKLSMgIGVsc2UKLSMgICAgIGRlZmluZSBORE5CT09TVF9ESVNBQkxFX1RIUkVBRFMKLSMgIGVuZGlmCi0jZWxpZiBkZWZpbmVkKF9fR0xJQkNQUF9fKSBcCi0gICAgICAgICYmICFkZWZpbmVkKF9HTElCQ1BQX0hBVkVfR1RIUl9ERUZBVUxUKSBcCi0gICAgICAgICYmICFkZWZpbmVkKF9HTElCQ1BQX19QVEhSRUFEUykKLSAgIC8vIGRpc2FibGUgdGhyZWFkIHN1cHBvcnQgaWYgdGhlIHN0ZCBsaWIgd2FzIGJ1aWx0IHNpbmdsZSB0aHJlYWRlZDoKLSMgIGRlZmluZSBORE5CT09TVF9ESVNBQkxFX1RIUkVBRFMKLSNlbmRpZgotCi0jaWYgKGRlZmluZWQobGludXgpIHx8IGRlZmluZWQoX19saW51eCkgfHwgZGVmaW5lZChfX2xpbnV4X18pKSAmJiBkZWZpbmVkKF9fYXJtX18pICYmIGRlZmluZWQoX0dMSUJDUFBfSEFWRV9HVEhSX0RFRkFVTFQpCi0vLyBsaW51eCBvbiBhcm0gYXBwYXJlbnRseSBkb2Vzbid0IGRlZmluZSBfUkVFTlRSQU5UCi0vLyBzbyBqdXN0IHR1cm4gb24gdGhyZWFkaW5nIHN1cHBvcnQgd2hlbmV2ZXIgdGhlIHN0ZCBsaWIgaXMgdGhyZWFkIHNhZmU6Ci0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1RIUkVBRFMKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoX0dMSUJDUFBfVVNFX0xPTkdfTE9ORykgXAotICAgICYmICFkZWZpbmVkKF9HTElCQ1hYX1VTRV9MT05HX0xPTkcpXAotICAgICYmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykKLS8vIE1heSBoYXZlIGJlZW4gc2V0IGJ5IGNvbXBpbGVyLyouaHBwLCBidXQgImxvbmcgbG9uZyIgd2l0aG91dCBsaWJyYXJ5Ci0vLyBzdXBwb3J0IGlzIHVzZWxlc3MuCi0jICB1bmRlZiBORE5CT09TVF9IQVNfTE9OR19MT05HCi0jZW5kaWYKLQotLy8gQXBwbGUgZG9lc24ndCBzZWVtIHRvIHJlbGlhYmx5IGRlZmluZWQgYSAqdW5peCogbWFjcm8KLSNpZiAhZGVmaW5lZChDWUdXSU4pICYmICggIGRlZmluZWQoX191bml4X18pICBcCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBkZWZpbmVkKF9fdW5peCkgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgfHwgZGVmaW5lZCh1bml4KSAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IGRlZmluZWQoX19BUFBMRV9fKSBcCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBkZWZpbmVkKF9fQVBQTEUpICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgfHwgZGVmaW5lZChBUFBMRSkpCi0jICBpbmNsdWRlIDx1bmlzdGQuaD4KLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX0dMSUJDWFhfXykgfHwgKGRlZmluZWQoX19HTElCQ1BQX18pICYmIF9fR0xJQkNQUF9fPj0yMDAyMDUxNCkgLy8gR0NDID49IDMuMS4wCi0jICBkZWZpbmUgTkROQk9PU1RfU1REX0VYVEVOU0lPTl9OQU1FU1BBQ0UgX19nbnVfY3h4Ci0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1NMSVNUCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX0hBU0gKLSMgIGRlZmluZSBORE5CT09TVF9TTElTVF9IRUFERVIgPGV4dC9zbGlzdD4KLSMgaWYgIWRlZmluZWQoX19HTlVDX18pIHx8IF9fR05VQ19fIDwgNCB8fCAoX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDMpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU0hfU0VUX0hFQURFUiA8ZXh0L2hhc2hfc2V0PgotIyAgIGRlZmluZSBORE5CT09TVF9IQVNIX01BUF9IRUFERVIgPGV4dC9oYXNoX21hcD4KLSMgZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNIX1NFVF9IRUFERVIgPGJhY2t3YXJkL2hhc2hfc2V0PgotIyAgIGRlZmluZSBORE5CT09TVF9IQVNIX01BUF9IRUFERVIgPGJhY2t3YXJkL2hhc2hfbWFwPgotIyBlbmRpZgotI2VuZGlmCi0KLS8vICBzdGRsaWJjKysgQysrMHggc3VwcG9ydCBpcyBkZXRlY3RlZCB2aWEgX19HTlVDX18sIF9fR05VQ19NSU5PUl9fLCBhbmQgcG9zc2libHkKLS8vICBfX0dOVUNfUEFUQ0hMRVZFTF9fIGF0IHRoZSBzdWdnZXN0aW9uIG9mIEpvbmF0aGFuIFdha2VseSwgb25lIG9mIHRoZSBzdGRsaWJjKysKLS8vICBkZXZlbG9wZXJzLiBIZSBhbHNvIGNvbW1lbnRlZDoKLS8vCi0vLyAgICAgICAiSSdtIG5vdCBzdXJlIGhvdyB1c2VmdWwgX19HTElCQ1hYX18gaXMgZm9yIHlvdXIgcHVycG9zZXMsIGZvciBpbnN0YW5jZSBpbgotLy8gICAgICAgR0NDIDQuMi40IGl0IGlzIHNldCB0byAyMDA4MDUxOSBidXQgaW4gR0NDIDQuMy4wIGl0IGlzIHNldCB0byAyMDA4MDMwNS4KLS8vICAgICAgIEFsdGhvdWdoIDQuMy4wIHdhcyByZWxlYXNlZCBlYXJsaWVyIHRoYW4gNC4yLjQsIGl0IGhhcyBiZXR0ZXIgQysrMHggc3VwcG9ydAotLy8gICAgICAgdGhhbiBhbnkgcmVsZWFzZSBpbiB0aGUgNC4yIHNlcmllcy4iCi0vLwotLy8gIEFub3RoZXIgcmVzb3VyY2UgZm9yIHVuZGVyc3RhbmRpbmcgc3RkbGliYysrIGZlYXR1cmVzIGlzOgotLy8gIGh0dHA6Ly9nY2MuZ251Lm9yZy9vbmxpbmVkb2NzL2xpYnN0ZGMrKy9tYW51YWwvc3RhdHVzLmh0bWwjbWFudWFsLmludHJvLnN0YXR1cy5zdGFuZGFyZC4yMDB4Ci0KLS8vICBDKysweCBoZWFkZXJzIGluIEdDQyA0LjMuMCBhbmQgbGF0ZXIKLS8vCi0jaWYgX19HTlVDX18gPCA0IHx8IChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgMykgfHwgIWRlZmluZWQoX19HWFhfRVhQRVJJTUVOVEFMX0NYWDBYX18pCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0FSUkFZCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1JFR0VYCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RVUExFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1VOT1JERVJFRF9NQVAKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVU5PUkRFUkVEX1NFVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GVU5DVElPTkFMCi0jZW5kaWYKLQotLy8gIEMrKzB4IGhlYWRlcnMgaW4gR0NDIDQuNC4wIGFuZCBsYXRlcgotLy8KLSNpZiBfX0dOVUNfXyA8IDQgfHwgKF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA0KSB8fCAhZGVmaW5lZChfX0dYWF9FWFBFUklNRU5UQUxfQ1hYMFhfXykKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQ09ORElUSU9OX1ZBUklBQkxFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0ZPUldBUkRfTElTVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9JTklUSUFMSVpFUl9MSVNUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX01VVEVYCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1JBVElPCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1NZU1RFTV9FUlJPUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NNQVJUX1BUUgotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfVFIxX0NPTVBMRVhfSU5WRVJTRV9UUklHIAotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUjFfQ09NUExFWF9PVkVSTE9BRFMgCi0jZW5kaWYKLQotI2lmICghZGVmaW5lZChfR0xJQkNYWF9IQVNfR1RIUkVBRFMpIHx8ICFkZWZpbmVkKF9HTElCQ1hYX1VTRV9DOTlfU1RESU5UX1RSMSkpICYmICghZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfQ09ORElUSU9OX1ZBUklBQkxFKSB8fCAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfTVVURVgpKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9DT05ESVRJT05fVkFSSUFCTEUKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfTVVURVgKLSNlbmRpZgotCi0vLyAgQysrMHggZmVhdHVyZXMgaW4gR0NDIDQuNS4wIGFuZCBsYXRlcgotLy8KLSNpZiBfX0dOVUNfXyA8IDQgfHwgKF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA1KSB8fCAhZGVmaW5lZChfX0dYWF9FWFBFUklNRU5UQUxfQ1hYMFhfXykKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9OVU1FUklDX0xJTUlUUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GVVRVUkUKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfUkFORE9NCi0jZW5kaWYKLQotLy8gIEMrKzB4IGZlYXR1cmVzIGluIEdDQyA0LjYuMCBhbmQgbGF0ZXIKLS8vCi0jaWYgX19HTlVDX18gPCA0IHx8IChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNikgfHwgIWRlZmluZWQoX19HWFhfRVhQRVJJTUVOVEFMX0NYWDBYX18pCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RZUEVJTkRFWAotI2VuZGlmCi0KLS8vICBDKysweCBmZWF0dXJlcyBpbiBHQ0MgNC43LjAgYW5kIGxhdGVyCi0vLwotI2lmIF9fR05VQ19fIDwgNCB8fCAoX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcpIHx8ICFkZWZpbmVkKF9fR1hYX0VYUEVSSU1FTlRBTF9DWFgwWF9fKQotLy8gTm90ZSB0aGF0IGFsdGhvdWdoIDxjaHJvbm8+IGV4aXN0ZWQgcHJpb3IgdG8gNC43LCAic3RlYWRfY2xvY2siIGlzIHNwZWxsZWQgIm1vbm90b25pY19jbG9jayIKLS8vIHNvIDQuNy4wIGlzIHRoZSBmaXJzdCB0cnVlbHkgY29uZm9ybWluZyBvbmUuCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NIUk9OTwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0FMTE9DQVRPUgotI2VuZGlmCi0vLyAgQysrMHggaGVhZGVycyBub3QgeWV0IChmdWxseSEpIGltcGxlbWVudGVkCi0vLwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9USFJFQUQKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVFlQRV9UUkFJVFMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQ09ERUNWVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0FUT01JQ19TTUFSVF9QVFIKLQotLy8gIC0tLSBlbmQgLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9zdGRsaWIvbW9kZW5hLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3N0ZGxpYi9tb2RlbmEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NmZiOTUyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3N0ZGxpYi9tb2RlbmEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSmVucyBNYXVyZXIgMjAwMS4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyAgTW9kZW5hIEMrKyBzdGFuZGFyZCBsaWJyYXJ5IChjb21lcyB3aXRoIEtBSSBDKyspCi0KLSNpZiAhZGVmaW5lZChNU0lQTF9DT01QSUxFX0gpCi0jICBpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvbm9fdHIxL3V0aWxpdHkuaHBwPgotIyAgaWYgIWRlZmluZWQoX19NU0lQTF9DT01QSUxFX0gpCi0jICAgICAgZXJyb3IgIlRoaXMgaXMgbm90IHRoZSBNb2RlbmEgQysrIGxpYnJhcnkhIgotIyAgZW5kaWYKLSNlbmRpZgotCi0jaWZuZGVmIE1TSVBMX05MX1RZUEVTCi0jZGVmaW5lIE5ETkJPT1NUX05PX1NURF9NRVNTQUdFUwotI2VuZGlmCi0KLSNpZm5kZWYgTVNJUExfV0NIQVJUCi0jZGVmaW5lIE5ETkJPT1NUX05PX1NURF9XU1RSSU5HCi0jZW5kaWYKLQotLy8gIEMrKzB4IGhlYWRlcnMgbm90IHlldCBpbXBsZW1lbnRlZAotLy8KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQVJSQVkKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQ0hST05PCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NPREVDVlQKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQ09ORElUSU9OX1ZBUklBQkxFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0ZPUldBUkRfTElTVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GVVRVUkUKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9NVVRFWAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9SQU5ET00KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfUkFUSU8KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfUkVHRVgKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfU1lTVEVNX0VSUk9SCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RIUkVBRAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UVVBMRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UWVBFX1RSQUlUUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UWVBFSU5ERVgKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVU5PUkRFUkVEX01BUAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9VTk9SREVSRURfU0VUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTlVNRVJJQ19MSU1JVFMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9BTExPQ0FUT1IKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVE9NSUNfU01BUlRfUFRSCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfU01BUlRfUFRSCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0ZVTkNUSU9OQUwKLQotI2RlZmluZSBORE5CT09TVF9TVERMSUIgIk1vZGVuYSBDKysgc3RhbmRhcmQgbGlicmFyeSIKLQotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9zdGRsaWIvbXNsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3N0ZGxpYi9tc2wuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjkyZTJmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3N0ZGxpYi9tc2wuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEuIAotLy8gIChDKSBDb3B5cmlnaHQgRGFyaW4gQWRsZXIgMjAwMS4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyAgTWV0cm93ZXJrcyBzdGFuZGFyZCBsaWJyYXJ5OgotCi0jaWZuZGVmIF9fTVNMX0NQUF9fCi0jICBpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvbm9fdHIxL3V0aWxpdHkuaHBwPgotIyAgaWZuZGVmIF9fTVNMX0NQUF9fCi0jICAgICBlcnJvciBUaGlzIGlzIG5vdCB0aGUgTVNMIHN0YW5kYXJkIGxpYnJhcnkhCi0jICBlbmRpZgotI2VuZGlmCi0KLSNpZiBfX01TTF9DUFBfXyA+PSAweDYwMDAgIC8vIFBybyA2Ci0jICBkZWZpbmUgTkROQk9PU1RfSEFTX0hBU0gKLSMgIGRlZmluZSBORE5CT09TVF9TVERfRVhURU5TSU9OX05BTUVTUEFDRSBNZXRyb3dlcmtzCi0jZW5kaWYKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1NMSVNUCi0KLSNpZiBfX01TTF9DUFBfXyA8IDB4NjIwOQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9NRVNTQUdFUwotI2VuZGlmCi0KLS8vIGNoZWNrIEMgbGliIHZlcnNpb24gZm9yIDxzdGRpbnQuaD4KLSNpbmNsdWRlIDxjc3RkZGVmPgotCi0jaWYgZGVmaW5lZChfX01TTF9fKSAmJiAoX19NU0xfXyA+PSAweDUwMDApCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1NURElOVF9ICi0jICBpZiAhZGVmaW5lZChfX1BBTE1PU19UUkFQU19fKQotIyAgICBkZWZpbmUgTkROQk9PU1RfSEFTX1VOSVNURF9ICi0jICBlbmRpZgotICAgLy8gYm9pbGVycGxhdGUgY29kZToKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9wb3NpeF9mZWF0dXJlcy5ocHA+Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoX01XTVQpIHx8IF9NU0xfVEhSRUFEU0FGRQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19USFJFQURTCi0jZW5kaWYKLQotI2lmZGVmIF9NU0xfTk9fRVhQTElDSVRfRlVOQ19URU1QTEFURV9BUkcKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfVVNFX0ZBQ0VUCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1RXT19BUkdfVVNFX0ZBQ0VUCi0jZW5kaWYKLQotLy8gIEMrKzB4IGhlYWRlcnMgbm90IHlldCBpbXBsZW1lbnRlZAotLy8KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQVJSQVkKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQ0hST05PCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NPREVDVlQKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQ09ORElUSU9OX1ZBUklBQkxFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0ZPUldBUkRfTElTVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GVVRVUkUKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9NVVRFWAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9SQU5ET00KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfUkFUSU8KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfUkVHRVgKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfU1lTVEVNX0VSUk9SCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RIUkVBRAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UVVBMRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UWVBFX1RSQUlUUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UWVBFSU5ERVgKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVU5PUkRFUkVEX01BUAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9VTk9SREVSRURfU0VUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTlVNRVJJQ19MSU1JVFMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9BTExPQ0FUT1IKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVE9NSUNfU01BUlRfUFRSCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfU01BUlRfUFRSCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0ZVTkNUSU9OQUwKLQotI2RlZmluZSBORE5CT09TVF9TVERMSUIgIk1ldHJvd2Vya3MgU3RhbmRhcmQgTGlicmFyeSB2ZXJzaW9uICIgTkROQk9PU1RfU1RSSU5HSVpFKF9fTVNMX0NQUF9fKQotCi0KLQotCi0KLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc3RkbGliL3JvZ3Vld2F2ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9zdGRsaWIvcm9ndWV3YXZlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTU1YzQ5MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9zdGRsaWIvcm9ndWV3YXZlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4NiArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMSAtIDIwMDMuIAotLy8gIChDKSBDb3B5cmlnaHQgSmVucyBNYXVyZXIgMjAwMS4gCi0vLyAgKEMpIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAzLiAKLS8vICAoQykgQ29weXJpZ2h0IEJvcmlzIEd1YmVua28gMjAwNy4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyAgUm9ndWUgV2F2ZSBzdGQgbGliOgotCi0jZGVmaW5lIE5ETkJPT1NUX1JXX1NURExJQiAxIAotCi0jaWYgIWRlZmluZWQoX19TVERfUldDT01QSUxFUl9IX18pICYmICFkZWZpbmVkKF9SV1NURF9WRVIpCi0jICBpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvbm9fdHIxL3V0aWxpdHkuaHBwPgotIyAgaWYgIWRlZmluZWQoX19TVERfUldDT01QSUxFUl9IX18pICYmICFkZWZpbmVkKF9SV1NURF9WRVIpCi0jICAgICBlcnJvciBUaGlzIGlzIG5vdCB0aGUgUm9ndWUgV2F2ZSBzdGFuZGFyZCBsaWJyYXJ5Ci0jICBlbmRpZgotI2VuZGlmCi0vLwotLy8gZmlndXJlIG91dCBhIGNvbnNpc3RlbnQgdmVyc2lvbiBudW1iZXI6Ci0vLwotI2lmbmRlZiBfUldTVERfVkVSCi0jICBkZWZpbmUgTkROQk9PU1RfUldTVERfVkVSIDB4MDEwMDAwCi0jZWxpZiBfUldTVERfVkVSIDwgMHgwMTAwMDAKLSMgIGRlZmluZSBORE5CT09TVF9SV1NURF9WRVIgKF9SV1NURF9WRVIgPDwgOCkKLSNlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfUldTVERfVkVSIF9SV1NURF9WRVIKLSNlbmRpZgotCi0jaWZuZGVmIF9SV1NURF9WRVIKLSMgIGRlZmluZSBORE5CT09TVF9TVERMSUIgIlJvZ3VlIFdhdmUgc3RhbmRhcmQgbGlicmFyeSB2ZXJzaW9uIChVbmtub3duIHZlcnNpb24pIgotI2VsaWYgX1JXU1REX1ZFUiA8IDB4MDQwMTAyMDAKLSAjICBkZWZpbmUgTkROQk9PU1RfU1RETElCICJSb2d1ZSBXYXZlIHN0YW5kYXJkIGxpYnJhcnkgdmVyc2lvbiAiIE5ETkJPT1NUX1NUUklOR0laRShfUldTVERfVkVSKQotI2Vsc2UKLSMgIGlmZGVmIF9SV1NURF9WRVJfU1RSCi0jICAgIGRlZmluZSBORE5CT09TVF9TVERMSUIgIkFwYWNoZSBTVERDWFggc3RhbmRhcmQgbGlicmFyeSB2ZXJzaW9uICIgX1JXU1REX1ZFUl9TVFIKLSMgIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1NURExJQiAiQXBhY2hlIFNURENYWCBzdGFuZGFyZCBsaWJyYXJ5IHZlcnNpb24gIiBORE5CT09TVF9TVFJJTkdJWkUoX1JXU1REX1ZFUikKLSMgIGVuZGlmCi0jZW5kaWYKLQotLy8KLS8vIFByaW9yIHRvIHZlcnNpb24gMi4yLjAgdGhlIHByaW1hcnkgdGVtcGxhdGUgZm9yIHN0ZDo6bnVtZXJpY19saW1pdHMKLS8vIGRvZXMgbm90IGhhdmUgY29tcGlsZSB0aW1lIGNvbnN0YW50cywgZXZlbiB0aG91Z2ggc3BlY2lhbGl6YXRpb25zIG9mIHRoYXQKLS8vIHRlbXBsYXRlIGRvOgotLy8KLSNpZiBORE5CT09TVF9SV1NURF9WRVIgPCAweDAyMDIwMAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0xJTUlUU19DT01QSUxFX1RJTUVfQ09OU1RBTlRTCi0jZW5kaWYKLQotLy8gU3VuIENDIDUuNSBwYXRjaCAxMTM4MTctMDcgYWRkcyBsb25nIGxvbmcgc3BlY2lhbGl6YXRpb24sIGJ1dCBkb2VzIG5vdCBjaGFuZ2UgdGhlCi0vLyBsaWJyYXJ5IHZlcnNpb24gbnVtYmVyIChodHRwOi8vc3Vuc29sdmU2LnN1bi5jb20vc2VhcmNoL2RvY3VtZW50LmRvP2Fzc2V0a2V5PTEtMjEtMTEzODE3KToKLSNpZiBORE5CT09TVF9SV1NURF9WRVIgPD0gMHgwMjAxMDEgJiYgKCFkZWZpbmVkKF9fU1VOUFJPX0NDKSB8fCAoX19TVU5QUk9fQ0MgPCAweDU1MCkpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fTE9OR19MT05HX05VTUVSSUNfTElNSVRTCi0jIGVuZGlmCi0KLS8vCi0vLyBCb3JsYW5kIHZlcnNpb24gb2YgbnVtZXJpY19saW1pdHMgbGFja3MgX19pbnQ2NCBzcGVjaWFsaXNhdGlvbjoKLS8vCi0jaWZkZWYgX19CT1JMQU5EQ19fCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fTVNfSU5UNjRfTlVNRVJJQ19MSU1JVFMKLSNlbmRpZgotCi0vLwotLy8gTm8gc3RkOjppdGVyYXRvciBpZiBpdCBjYW4ndCBmaWd1cmUgb3V0IGRlZmF1bHQgdGVtcGxhdGUgYXJnczoKLS8vCi0jaWYgZGVmaW5lZChfUldTVERfTk9fU0lNUExFX0RFRkFVTFRfVEVNUExBVEVTKSB8fCBkZWZpbmVkKFJXU1REX05PX1NJTVBMRV9ERUZBVUxUX1RFTVBMQVRFUykgfHwgKE5ETkJPT1NUX1JXU1REX1ZFUiA8IDB4MDIwMDAwKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9JVEVSQVRPUgotI2VuZGlmCi0KLS8vCi0vLyBObyBpdGVyYXRvciB0cmFpdHMgd2l0aG91dCBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uOgotLy8KLSNpZiBkZWZpbmVkKF9SV1NURF9OT19DTEFTU19QQVJUSUFMX1NQRUMpIHx8IGRlZmluZWQoUldTVERfTk9fQ0xBU1NfUEFSVElBTF9TUEVDKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9JVEVSQVRPUl9UUkFJVFMKLSNlbmRpZgotCi0vLwotLy8gUHJpb3IgdG8gdmVyc2lvbiAyLjAsIHN0ZDo6YXV0b19wdHIgd2FzIGJ1Z2d5LCBhbmQgdGhlcmUgd2VyZSBubwotLy8gbmV3LXN0eWxlIGlvc3RyZWFtcywgYW5kIG5vIGNvbmZvcm1hbnQgc3RkOjphbGxvY2F0b3I6Ci0vLwotI2lmIChORE5CT09TVF9SV1NURF9WRVIgPCAweDAyMDAwMCkKLSMgIGRlZmluZSBORE5CT09TVF9OT19BVVRPX1BUUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NUUklOR1NUUkVBTQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9BTExPQ0FUT1IKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfTE9DQUxFCi0jZW5kaWYKLQotLy8KLS8vIE5vIHRlbXBsYXRlIGl0ZXJhdG9yIGNvbnN0cnVjdG9ycyB3aXRob3V0IG1lbWJlciB0ZW1wbGF0ZSBzdXBwb3J0OgotLy8KLSNpZiBkZWZpbmVkKFJXU1REX05PX01FTUJFUl9URU1QTEFURVMpIHx8IGRlZmluZWQoX1JXU1REX05PX01FTUJFUl9URU1QTEFURVMpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fVEVNUExBVEVEX0lURVJBVE9SX0NPTlNUUlVDVE9SUwotI2VuZGlmCi0KLS8vCi0vLyBSVyBkZWZpbmVzIF9SV1NURF9BTExPQ0FUT1IgaWYgdGhlIGFsbG9jYXRvciBpcyBjb25mb3JtYW50IGFuZCBpbiB1c2UKLS8vICh0aGUgb3IgX0hQQUNDXyBwYXJ0IGlzIGEgaGFjayAtIHRoZSBsaWJyYXJ5IHNlZW1zIHRvIGRlZmluZSBfUldTVERfQUxMT0NBVE9SCi0vLyBvbiBIUCBhQ0Mgc3lzdGVtcyBldmVuIHRob3VnaCB0aGUgYWxsb2NhdG9yIGlzIGluIGZhY3QgYnJva2VuKToKLS8vCi0jaWYgIWRlZmluZWQoX1JXU1REX0FMTE9DQVRPUikgfHwgKGRlZmluZWQoX19IUF9hQ0MpICYmIF9fSFBfYUNDIDw9IDMzMTAwKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9BTExPQ0FUT1IKLSNlbmRpZgotCi0vLwotLy8gSWYgd2UgaGF2ZSBhIHN0ZDo6bG9jYWxlLCB3ZSBzdGlsbCBtYXkgbm90IGhhdmUgc3RkOjp1c2VfZmFjZXQ6Ci0vLwotI2lmIGRlZmluZWQoX1JXU1REX05PX1RFTVBMQVRFX09OX1JFVFVSTl9UWVBFKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19TVERfTE9DQUxFKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9VU0VfRkFDRVQKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfVFdPX0FSR19VU0VfRkFDRVQKLSNlbmRpZgotCi0vLwotLy8gVGhlcmUncyBubyBzdGQ6OmRpc3RhbmNlIHByaW9yIHRvIHZlcnNpb24gMiwgb3Igd2l0aG91dAotLy8gcGFydGlhbCBzcGVjaWFsaXphdGlvbiBzdXBwb3J0OgotLy8KLSNpZiAoTkROQk9PU1RfUldTVERfVkVSIDwgMHgwMjAwMDApIHx8IGRlZmluZWQoX1JXU1REX05PX0NMQVNTX1BBUlRJQUxfU1BFQykKLSAgICAjZGVmaW5lIE5ETkJPT1NUX05PX1NURF9ESVNUQU5DRQotI2VuZGlmCi0KLS8vCi0vLyBTb21lIHZlcnNpb25zIG9mIHRoZSByb2d1ZSB3YXZlIGxpYnJhcnkgZG9uJ3QgaGF2ZSBhc3NpZ25hYmxlCi0vLyBPdXRwdXRJdGVyYXRvcnM6Ci0vLwotI2lmIE5ETkJPT1NUX1JXU1REX1ZFUiA8IDB4MDIwMTAwCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX09VVFBVVF9JVEVSQVRPUl9BU1NJR04KLSNlbmRpZgotCi0vLwotLy8gRGlzYWJsZSBORE5CT09TVF9IQVNfTE9OR19MT05HIHdoZW4gdGhlIGxpYnJhcnkgaGFzIG5vIHN1cHBvcnQgZm9yIGl0LgotLy8KLSNpZiAhZGVmaW5lZChfUldTVERfTE9OR19MT05HKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi0jICB1bmRlZiBORE5CT09TVF9IQVNfTE9OR19MT05HCi0jZW5kaWYKLQotLy8KLS8vIGNoZWNrIHRoYXQgb24gSFAtVVgsIHRoZSBwcm9wZXIgUlcgbGlicmFyeSBpcyB1c2VkCi0vLwotI2lmIGRlZmluZWQoX19IUF9hQ0MpICYmICFkZWZpbmVkKF9IUF9OQU1FU1BBQ0VfU1REKQotIyAgZXJyb3IgIkJvb3N0IHJlcXVpcmVzIFN0YW5kYXJkIFJXIGxpYnJhcnkuIFBsZWFzZSBjb21waWxlIGFuZCBsaW5rIHdpdGggLUFBIgotI2VuZGlmCi0KLS8vCi0vLyBEZWZpbmUgbWFjcm9zIHNwZWNpZmljIHRvIFJXIFYyLjIgb24gSFAtVVgKLS8vCi0jaWYgZGVmaW5lZChfX0hQX2FDQykgJiYgKE5ETkJPT1NUX1JXU1REX1ZFUiA9PSAweDAyMDIwMTAwKQotIyAgaWZuZGVmIF9fSFBfVEMxX01BS0VfUEFJUgotIyAgICBkZWZpbmUgX19IUF9UQzFfTUFLRV9QQUlSCi0jICBlbmRpZgotIyAgaWZuZGVmIF9IUF9JTlNUQU5USUFURV9TVEQyX1ZMCi0jICAgIGRlZmluZSBfSFBfSU5TVEFOVElBVEVfU1REMl9WTAotIyAgZW5kaWYKLSNlbmRpZgotCi0jaWYgX1JXU1REX1ZFUiA8IDB4MDUwMDAwMDAKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQVJSQVkKLSNlbmRpZgotLy8gdHlwZV90cmFpdHMgaGVhZGVyIGlzIGluY29tcGxldGU6Ci0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RZUEVfVFJBSVRTCi0vLwotLy8gIEMrKzB4IGhlYWRlcnMgbm90IHlldCBpbXBsZW1lbnRlZAotLy8KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQ0hST05PCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NPREVDVlQKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQ09ORElUSU9OX1ZBUklBQkxFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0ZPUldBUkRfTElTVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GVVRVUkUKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9NVVRFWAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9SQU5ET00KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfUkFUSU8KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfUkVHRVgKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfU1lTVEVNX0VSUk9SCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RIUkVBRAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UVVBMRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UWVBFSU5ERVgKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVU5PUkRFUkVEX01BUAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9VTk9SREVSRURfU0VUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTlVNRVJJQ19MSU1JVFMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9BTExPQ0FUT1IKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVE9NSUNfU01BUlRfUFRSCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfU01BUlRfUFRSCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0ZVTkNUSU9OQUwKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc3RkbGliL3NnaS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9zdGRsaWIvc2dpLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmUxNGY0ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9zdGRsaWIvc2dpLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0OCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMSAtIDIwMDMuIAotLy8gIChDKSBDb3B5cmlnaHQgRGFyaW4gQWRsZXIgMjAwMS4gCi0vLyAgKEMpIENvcHlyaWdodCBKZW5zIE1hdXJlciAyMDAxIC0gMjAwMy4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyAgZ2VuZXJpYyBTR0kgU1RMOgotCi0jaWYgIWRlZmluZWQoX19TVExfQ09ORklHX0gpCi0jICBpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvbm9fdHIxL3V0aWxpdHkuaHBwPgotIyAgaWYgIWRlZmluZWQoX19TVExfQ09ORklHX0gpCi0jICAgICAgZXJyb3IgIlRoaXMgaXMgbm90IHRoZSBTR0kgU1RMISIKLSMgIGVuZGlmCi0jZW5kaWYKLQotLy8KLS8vIE5vIHN0ZDo6aXRlcmF0b3IgdHJhaXRzIHdpdGhvdXQgcGFydGlhbCBzcGVjaWFsaXNhdGlvbjoKLS8vCi0jaWYgIWRlZmluZWQoX19TVExfQ0xBU1NfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfSVRFUkFUT1JfVFJBSVRTCi0jZW5kaWYKLQotLy8KLS8vIE5vIHN0ZDo6c3RyaW5nc3RyZWFtIHdpdGggZ2NjIDwgMwotLy8KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPCAzKSAmJiBcCi0gICAgICgoX19HTlVDX01JTk9SX18gPCA5NSkgfHwgKF9fR05VQ19NSU5PUl9fID09IDk2KSkgJiYgXAotICAgICAhZGVmaW5lZChfX1NUTF9VU0VfTkVXX0lPU1RSRUFNUykgfHwgXAotICAgZGVmaW5lZChfX0FQUExFX0NDX18pCi0gICAvLyBOb3RlIHRoYXQgd2Ugb25seSBzZXQgdGhpcyBmb3IgR05VIEMrKyBwcmlvciB0byAyLjk1IHNpbmNlIHRoZQotICAgLy8gbGF0ZXN0IHBhdGNoZXMgZm9yIHRoYXQgcmVsZWFzZSBkbyBjb250YWluIGEgbWluaW1hbCA8c3N0cmVhbT4KLSAgIC8vIElmIHlvdSBhcmUgcnVubmluZyBhIDIuOTUgcmVsZWFzZSBwcmlvciB0byAyLjk1LjMgdGhlbiB0aGlzIHdpbGwgbmVlZAotICAgLy8gc2V0dGluZywgYnV0IHRoZXJlIGlzIG5vIHdheSB0byBkZXRlY3QgdGhhdCBhdXRvbWF0aWNhbGx5IChvdGhlcgotICAgLy8gdGhhbiBieSBydW5uaW5nIHRoZSBjb25maWd1cmUgc2NyaXB0KS4KLSAgIC8vIEFsc28sIHRoZSB1bm9mZmljaWFsIEdOVSBDKysgMi45NiBpbmNsdWRlZCBpbiBSZWRIYXQgNy4xIGRvZXNuJ3QKLSAgIC8vIGhhdmUgPHNzdHJlYW0+LgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NUUklOR1NUUkVBTQotI2VuZGlmCi0KLS8vIEFwcGxlIGRvZXNuJ3Qgc2VlbSB0byByZWxpYWJseSBkZWZpbmVkIGEgKnVuaXgqIG1hY3JvCi0jaWYgIWRlZmluZWQoQ1lHV0lOKSAmJiAoICBkZWZpbmVkKF9fdW5peF9fKSAgXAotICAgICAgICAgICAgICAgICAgICAgICAgfHwgZGVmaW5lZChfX3VuaXgpICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IGRlZmluZWQodW5peCkgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBkZWZpbmVkKF9fQVBQTEVfXykgXAotICAgICAgICAgICAgICAgICAgICAgICAgfHwgZGVmaW5lZChfX0FQUExFKSAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IGRlZmluZWQoQVBQTEUpKQotIyAgaW5jbHVkZSA8dW5pc3RkLmg+Ci0jZW5kaWYKLQotCi0vLwotLy8gQXNzdW1lIG5vIHN0ZDo6bG9jYWxlIHdpdGhvdXQgb3duIGlvc3RyZWFtcyAodGhpcyBtYXkgYmUgYW4KLS8vIGluY29ycmVjdCBhc3N1bXB0aW9uIGluIHNvbWUgY2FzZXMpOgotLy8KLSNpZiAhZGVmaW5lZChfX1NHSV9TVExfT1dOX0lPU1RSRUFNUykgJiYgIWRlZmluZWQoX19TVExfVVNFX05FV19JT1NUUkVBTVMpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX0xPQ0FMRQotI2VuZGlmCi0KLS8vCi0vLyBPcmlnaW5hbCBuYXRpdmUgU0dJIHN0cmVhbXMgaGF2ZSBub24tc3RhbmRhcmQgc3RkOjptZXNzYWdlcyBmYWNldDoKLS8vCi0jaWYgZGVmaW5lZChfX3NnaSkgJiYgKF9DT01QSUxFUl9WRVJTSU9OIDw9IDY1MCkgJiYgIWRlZmluZWQoX19TR0lfU1RMX09XTl9JT1NUUkVBTVMpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX0xPQ0FMRQotI2VuZGlmCi0KLS8vCi0vLyBTR0kncyBuZXcgaW9zdHJlYW1zIGhhdmUgbWlzc2luZyAiY29uc3QiIGluIG1lc3NhZ2VzPD46Om9wZW4KLS8vCi0jaWYgZGVmaW5lZChfX3NnaSkgJiYgKF9DT01QSUxFUl9WRVJTSU9OIDw9IDc0MCkgJiYgZGVmaW5lZChfX1NUTF9VU0VfTkVXX0lPU1RSRUFNUykKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfTUVTU0FHRVMKLSNlbmRpZgotCi0vLwotLy8gTm8gdGVtcGxhdGUgaXRlcmF0b3IgY29uc3RydWN0b3JzLCBvciBzdGQ6OmFsbG9jYXRvcgotLy8gd2l0aG91dCBtZW1iZXIgdGVtcGxhdGVzOgotLy8KLSNpZiAhZGVmaW5lZChfX1NUTF9NRU1CRVJfVEVNUExBVEVTKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1RFTVBMQVRFRF9JVEVSQVRPUl9DT05TVFJVQ1RPUlMKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfQUxMT0NBVE9SCi0jZW5kaWYKLQotLy8KLS8vIFdlIGFsd2F5cyBoYXZlIFNHSSBzdHlsZSBoYXNoX3NldCwgaGFzaF9tYXAsIGFuZCBzbGlzdDoKLS8vCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19IQVNICi0jZGVmaW5lIE5ETkJPT1NUX0hBU19TTElTVAotCi0vLwotLy8gSWYgdGhpcyBpcyBHTlUgbGlic3RkYysrMiwgdGhlbiBubyA8bGltaXRzPiBhbmQgbm8gc3RkOjp3c3RyaW5nOgotLy8KLSNpZiAoZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fIDwgMykpCi0jICBpbmNsdWRlIDxzdHJpbmc+Ci0jICBpZiBkZWZpbmVkKF9fQkFTVFJJTkdfXykKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19MSU1JVFMKLS8vIE5vdGU6IDxuZG5ib29zdC9saW1pdHMuaHBwPiB3aWxsIHByb3ZpZGUgY29tcGlsZS10aW1lIGNvbnN0YW50cwotIyAgICAgdW5kZWYgTkROQk9PU1RfTk9fTElNSVRTX0NPTVBJTEVfVElNRV9DT05TVEFOVFMKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19TVERfV1NUUklORwotIyAgZW5kaWYKLSNlbmRpZgotCi0vLwotLy8gVGhlcmUgaXMgbm8gc3RhbmRhcmQgaXRlcmF0b3IgdW5sZXNzIHdlIGhhdmUgbmFtZXNwYWNlIHN1cHBvcnQ6Ci0vLwotI2lmICFkZWZpbmVkKF9fU1RMX1VTRV9OQU1FU1BBQ0VTKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9JVEVSQVRPUgotI2VuZGlmCi0KLS8vCi0vLyBJbnRyaW5zaWMgdHlwZV90cmFpdHMgc3VwcG9ydC4KLS8vIFRoZSBTR0kgU1RMIGhhcyBpdCdzIG93biBfX3R5cGVfdHJhaXRzIGNsYXNzLCB3aGljaAotLy8gaGFzIGludHJpbnNpYyBjb21waWxlciBzdXBwb3J0IHdpdGggU0dJJ3MgY29tcGlsZXJzLgotLy8gV2hhdGV2ZXIgbWFwIFNHSSBzdHlsZSB0eXBlIHRyYWl0cyB0byBib29zdCBlcXVpdmFsZW50czoKLS8vCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19TR0lfVFlQRV9UUkFJVFMKLQotLy8gIEMrKzB4IGhlYWRlcnMgbm90IHlldCBpbXBsZW1lbnRlZAotLy8KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQVJSQVkKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQ0hST05PCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NPREVDVlQKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQ09ORElUSU9OX1ZBUklBQkxFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0ZPUldBUkRfTElTVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GVVRVUkUKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9NVVRFWAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9SQU5ET00KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfUkFUSU8KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfUkVHRVgKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfU1lTVEVNX0VSUk9SCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RIUkVBRAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UVVBMRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UWVBFX1RSQUlUUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UWVBFSU5ERVgKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVU5PUkRFUkVEX01BUAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9VTk9SREVSRURfU0VUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTlVNRVJJQ19MSU1JVFMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9BTExPQ0FUT1IKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVE9NSUNfU01BUlRfUFRSCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfU01BUlRfUFRSCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0ZVTkNUSU9OQUwKLQotI2RlZmluZSBORE5CT09TVF9TVERMSUIgIlNHSSBzdGFuZGFyZCBsaWJyYXJ5IgotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc3RkbGliL3N0bHBvcnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc3RkbGliL3N0bHBvcnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNWRkNzE5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3N0ZGxpYi9zdGxwb3J0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0MyArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMSAtIDIwMDIuIAotLy8gIChDKSBDb3B5cmlnaHQgRGFyaW4gQWRsZXIgMjAwMS4gCi0vLyAgKEMpIENvcHlyaWdodCBKZW5zIE1hdXJlciAyMDAxLiAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLS8vICBTVExQb3J0IHN0YW5kYXJkIGxpYnJhcnkgY29uZmlnOgotCi0jaWYgIWRlZmluZWQoX19TR0lfU1RMX1BPUlQpICYmICFkZWZpbmVkKF9TVExQT1JUX1ZFUlNJT04pCi0jICBpbmNsdWRlIDxjc3RkZGVmPgotIyAgaWYgIWRlZmluZWQoX19TR0lfU1RMX1BPUlQpICYmICFkZWZpbmVkKF9TVExQT1JUX1ZFUlNJT04pCi0jICAgICAgZXJyb3IgIlRoaXMgaXMgbm90IFNUTFBvcnQhIgotIyAgZW5kaWYKLSNlbmRpZgotCi0vLyBBcHBsZSBkb2Vzbid0IHNlZW0gdG8gcmVsaWFibHkgZGVmaW5lZCBhICp1bml4KiBtYWNybwotI2lmICFkZWZpbmVkKENZR1dJTikgJiYgKCAgZGVmaW5lZChfX3VuaXhfXykgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IGRlZmluZWQoX191bml4KSAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBkZWZpbmVkKHVuaXgpICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgfHwgZGVmaW5lZChfX0FQUExFX18pIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IGRlZmluZWQoX19BUFBMRSkgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBkZWZpbmVkKEFQUExFKSkKLSMgIGluY2x1ZGUgPHVuaXN0ZC5oPgotI2VuZGlmCi0KLS8vCi0vLyBfX1NUTF9TVEFUSUNfQ09OU1RfSU5JVF9CVUcgaW1wbGllcyBORE5CT09TVF9OT19MSU1JVFNfQ09NUElMRV9USU1FX0NPTlNUQU5UUwotLy8gZm9yIHZlcnNpb25zIHByaW9yIHRvIDQuMShiZXRhKQotLy8KLSNpZiAoZGVmaW5lZChfX1NUTF9TVEFUSUNfQ09OU1RfSU5JVF9CVUcpIHx8IGRlZmluZWQoX1NUTFBfU1RBVElDX0NPTlNUX0lOSVRfQlVHKSkgJiYgKF9fU0dJX1NUTF9QT1JUIDw9IDB4NDAwKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0xJTUlUU19DT01QSUxFX1RJTUVfQ09OU1RBTlRTCi0jZW5kaWYKLQotLy8KLS8vIElmIFNUTHBvcnQgdGhpbmtzIHRoYXQgdGhlcmUgaXMgbm8gcGFydGlhbCBzcGVjaWFsaXNhdGlvbiwgdGhlbiB0aGVyZSBpcyBubwotLy8gc3RkOjppdGVyYXRvciB0cmFpdHM6Ci0vLwotI2lmICEoZGVmaW5lZChfU1RMUF9DTEFTU19QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSB8fCBkZWZpbmVkKF9fU1RMX0NMQVNTX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9JVEVSQVRPUl9UUkFJVFMKLSNlbmRpZgotCi0vLwotLy8gTm8gbmV3IHN0eWxlIGlvc3RyZWFtcyBvbiBHQ0Mgd2l0aG91dCBTVExwb3J0J3MgaW9zdHJlYW1zIGVuYWJsZWQ6Ci0vLwotI2lmIChkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPCAzKSkgJiYgIShkZWZpbmVkKF9fU0dJX1NUTF9PV05fSU9TVFJFQU1TKSB8fCBkZWZpbmVkKF9TVExQX09XTl9JT1NUUkVBTVMpKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NUUklOR1NUUkVBTQotI2VuZGlmCi0KLS8vCi0vLyBObyBuZXcgaW9zdHJlYW1zIGltcGxpZXMgbm8gc3RkOjpsb2NhbGUsIGFuZCBubyBzdGQ6OnN0cmluZ3N0cmVhbToKLS8vCi0jaWYgZGVmaW5lZChfX1NUTF9OT19JT1NUUkVBTVMpIHx8IGRlZmluZWQoX19TVExfTk9fTkVXX0lPU1RSRUFNUykgfHwgZGVmaW5lZChfU1RMUF9OT19JT1NUUkVBTVMpIHx8IGRlZmluZWQoX1NUTFBfTk9fTkVXX0lPU1RSRUFNUykKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfTE9DQUxFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1RSSU5HU1RSRUFNCi0jZW5kaWYKLQotLy8KLS8vIElmIHRoZSBzdHJlYW1zIGFyZSBub3QgbmF0aXZlLCBhbmQgd2UgaGF2ZSBhICJ1c2luZyA6OngiIGNvbXBpbGVyIGJ1ZwotLy8gdGhlbiB0aGUgaW8gc3RyZWFtIGZhY2V0cyBhcmUgbm90IGF2YWlsYWJsZSBpbiBuYW1lc3BhY2Ugc3RkOjoKLS8vCi0jaWZkZWYgX1NUTFBPUlRfVkVSU0lPTgotIyAgaWYgIShfU1RMUE9SVF9WRVJTSU9OID49IDB4NTAwKSAmJiAhZGVmaW5lZChfU1RMUF9PV05fSU9TVFJFQU1TKSAmJiBkZWZpbmVkKF9TVExQX1VTRV9OQU1FU1BBQ0VTKSAmJiBkZWZpbmVkKE5ETkJPT1NUX05PX1VTSU5HX1RFTVBMQVRFKSAmJiAhZGVmaW5lZChfX0JPUkxBTkRDX18pCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX0xPQ0FMRQotIyAgZW5kaWYKLSNlbHNlCi0jICBpZiAhZGVmaW5lZChfX1NHSV9TVExfT1dOX0lPU1RSRUFNUykgJiYgZGVmaW5lZChfX1NUTF9VU0VfTkFNRVNQQUNFUykgJiYgZGVmaW5lZChORE5CT09TVF9OT19VU0lOR19URU1QTEFURSkgJiYgIWRlZmluZWQoX19CT1JMQU5EQ19fKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9MT0NBTEUKLSMgIGVuZGlmCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX1NUTFBPUlRfVkVSU0lPTikgJiYgKF9TVExQT1JUX1ZFUlNJT04gPj0gMHg1MjApCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSMV9VTk9SREVSRURfU0VUCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSMV9VTk9SREVSRURfTUFQCi0jZW5kaWYKLS8vCi0vLyBXaXRob3V0IG1lbWJlciB0ZW1wbGF0ZSBzdXBwb3J0IGVuYWJsZWQsIHRoZWlyIGFyZSBubyB0ZW1wbGF0ZQotLy8gaXRlcmF0ZSBjb25zdHJ1Y3RvcnMsIGFuZCBubyBzdGQ6OmFsbG9jYXRvcjoKLS8vCi0jaWYgIShkZWZpbmVkKF9fU1RMX01FTUJFUl9URU1QTEFURVMpIHx8IGRlZmluZWQoX1NUTFBfTUVNQkVSX1RFTVBMQVRFUykpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fVEVNUExBVEVEX0lURVJBVE9SX0NPTlNUUlVDVE9SUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9BTExPQ0FUT1IKLSNlbmRpZgotLy8KLS8vIGhvd2V2ZXIgd2UgYWx3YXlzIGhhdmUgYXQgbGVhc3QgYSBwYXJ0aWFsIGFsbG9jYXRvcjoKLS8vCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19QQVJUSUFMX1NURF9BTExPQ0FUT1IKLQotI2lmICFkZWZpbmVkKF9TVExQX01FTUJFUl9URU1QTEFURV9DTEFTU0VTKSB8fCBkZWZpbmVkKF9TVExQX0RPTlRfU1VQUE9SVF9SRUJJTkRfTUVNQkVSX1RFTVBMQVRFKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9BTExPQ0FUT1IKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfU1RMUF9OT19NRU1CRVJfVEVNUExBVEVfS0VZV09SRCkgJiYgZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiAoTkROQk9PU1RfTVNWQyA8PSAxMzAwKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9BTExPQ0FUT1IKLSNlbmRpZgotCi0vLwotLy8gSWYgU1RMcG9ydCB0aGlua3MgdGhlcmUgaXMgbm8gd2NoYXJfdCBhdCBhbGwsIHRoZW4gd2UgaGF2ZSB0byBkaXNhYmxlCi0vLyB0aGUgc3VwcG9ydCBmb3IgdGhlIHJlbGV2YW50IHNwZWNpbGF6YXRpb25zIG9mIHN0ZDo6IHRlbXBsYXRlcy4KLS8vCi0jaWYgIWRlZmluZWQoX1NUTFBfSEFTX1dDSEFSX1QpICYmICFkZWZpbmVkKF9TVExQX1dDSEFSX1RfSVNfVVNIT1JUKQotIyAgaWZuZGVmICBORE5CT09TVF9OT19TVERfV1NUUklORwotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9XU1RSSU5HCi0jICBlbmRpZgotIyAgaWZuZGVmICBORE5CT09TVF9OT19TVERfV1NUUkVBTUJVRgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9XU1RSRUFNQlVGCi0jICBlbmRpZgotI2VuZGlmCi0KLS8vCi0vLyBXZSBhbHdheXMgaGF2ZSBTR0kgc3R5bGUgaGFzaF9zZXQsIGhhc2hfbWFwLCBhbmQgc2xpc3Q6Ci0vLwotI2lmbmRlZiBfU1RMUF9OT19FWFRFTlNJT05TCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19IQVNICi0jZGVmaW5lIE5ETkJPT1NUX0hBU19TTElTVAotI2VuZGlmCi0KLS8vCi0vLyBTVExwb3J0IGRvZXMgYSBnb29kIGpvYiBvZiBpbXBvcnRpbmcgbmFtZXMgaW50byBuYW1lc3BhY2Ugc3RkOjosCi0vLyBidXQgZG9lc24ndCBhbHdheXMgZ2V0IHRoZW0gYWxsLCBkZWZpbmUgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UsIHNpbmNlIG91cgotLy8gd29ya2Fyb3VuZCBkb2VzIG5vdCBjb25mbGljdCB3aXRoIFNUTHBvcnRzOgotLy8KLS8vCi0vLyBIYXJvbGQgSG93ZSBzYXlzOgotLy8gQm9ybGFuZCBzd2l0Y2hlZCB0byBTVExwb3J0IGluIEJDQjYuIERlZmluaW5nIE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFIHdpdGgKLS8vIEJDQjYgZG9lcyBjYXVzZSBwcm9ibGVtcy4gSWYgd2UgZGV0ZWN0IEMrKyBCdWlsZGVyLCB0aGVuIGRvbid0IGRlZmluZSAKLS8vIE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFCi0vLwotI2lmICFkZWZpbmVkKF9fQk9STEFORENfXykgJiYgIWRlZmluZWQoX19ETUNfXykKLS8vCi0vLyBJZiBTVExwb3J0IGlzIHVzaW5nIGl0J3Mgb3duIG5hbWVzcGFjZSwgYW5kIHRoZSByZWFsIG5hbWVzIGFyZSBpbgotLy8gdGhlIGdsb2JhbCBuYW1lc3BhY2UsIHRoZW4gd2UgZHVwbGljYXRlIFNUTHBvcnQncyB1c2luZyBkZWNsYXJhdGlvbnMKLS8vIChieSBkZWZpbmluZyBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSksIHdlIGRvIHRoaXMgYmVjYXVzZSBTVExwb3J0IGRvZXNuJ3QKLS8vIG5lY2Vzc2FyaWx5IGltcG9ydCBhbGwgdGhlIG5hbWVzIHdlIG5lZWQgaW50byBuYW1lc3BhY2Ugc3RkOjoKLS8vIAotIyAgaWYgKGRlZmluZWQoX19TVExfSU1QT1JUX1ZFTkRPUl9DU1REKSBcCi0gICAgICAgICB8fCBkZWZpbmVkKF9fU1RMX1VTRV9PV05fTkFNRVNQQUNFKSBcCi0gICAgICAgICB8fCBkZWZpbmVkKF9TVExQX0lNUE9SVF9WRU5ET1JfQ1NURCkgXAotICAgICAgICAgfHwgZGVmaW5lZChfU1RMUF9VU0VfT1dOX05BTUVTUEFDRSkpIFwKLSAgICAgICYmIChkZWZpbmVkKF9fU1RMX1ZFTkRPUl9HTE9CQUxfQ1NURCkgfHwgZGVmaW5lZCAoX1NUTFBfVkVORE9SX0dMT0JBTF9DU1REKSkKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX0VYQ0VQVElPTl9TVERfTkFNRVNQQUNFCi0jICBlbmRpZgotI2VsaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pICYmIF9fQk9STEFORENfXyA8IDB4NTYwCi0vLyBTVExwb3J0IGRvZXNuJ3QgaW1wb3J0IHN0ZDo6YWJzIGNvcnJlY3RseToKLSNpbmNsdWRlIDxzdGRsaWIuaD4KLW5hbWVzcGFjZSBzdGQgeyB1c2luZyA6OmFiczsgfQotLy8gYW5kIHN0cmNtcC9zdHJjcHkgZG9uJ3QgZ2V0IGltcG9ydGVkIGVpdGhlciAoJ2NvcyB0aGV5IGFyZSBtYWNyb3MpCi0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaWZkZWYgc3RyY3B5Ci0jICB1bmRlZiBzdHJjcHkKLSNlbmRpZgotI2lmZGVmIHN0cmNtcAotIyAgdW5kZWYgc3RyY21wCi0jZW5kaWYKLSNpZmRlZiBfU1RMUF9WRU5ET1JfQ1NURAotbmFtZXNwYWNlIHN0ZHsgdXNpbmcgX1NUTFBfVkVORE9SX0NTVEQ6OnN0cmNtcDsgdXNpbmcgX1NUTFBfVkVORE9SX0NTVEQ6OnN0cmNweTsgfQotI2VuZGlmCi0jZW5kaWYKLQotLy8KLS8vIHN0ZDo6dXNlX2ZhY2V0IG1heSBiZSBub24tc3RhbmRhcmQsIHVzZXMgYSBjbGFzcyBpbnN0ZWFkOgotLy8KLSNpZiBkZWZpbmVkKF9fU1RMX05PX0VYUExJQ0lUX0ZVTkNUSU9OX1RNUExfQVJHUykgfHwgZGVmaW5lZChfU1RMUF9OT19FWFBMSUNJVF9GVU5DVElPTl9UTVBMX0FSR1MpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX1VTRV9GQUNFVAotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19TVExQX1VTRV9GQUNFVAotI2VuZGlmCi0KLS8vCi0vLyBJZiBTVExwb3J0IHRoaW5rcyB0aGVyZSBhcmUgbm8gd2lkZSBmdW5jdGlvbnMsIDxjd2NoYXI+IGV0Yy4gaXMgbm90IHdvcmtpbmc7IGJ1dAotLy8gb25seSBpZiBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSBpcyBub3QgZGVmaW5lZCAoaWYgaXQgaXMgdGhlbiB3ZSBkbyB0aGUgaW1wb3J0IAotLy8gaW50byBzdGQ6OiBvdXJzZWx2ZXMpLgotLy8KLSNpZiBkZWZpbmVkKF9TVExQX05PX05BVElWRV9XSURFX0ZVTkNUSU9OUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1dDSEFSCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1dDVFlQRQotI2VuZGlmCi0KLS8vCi0vLyBJZiBTVExwb3J0IGZvciBzb21lIHJlYXNvbiB3YXMgY29uZmlndXJlZCBzbyB0aGF0IGl0IHRoaW5rcyB0aGF0IHdjaGFyX3QKLS8vIGlzIG5vdCBhbiBpbnRyaW5zaWMgdHlwZSwgdGhlbiB3ZSBoYXZlIHRvIGRpc2FibGUgdGhlIHN1cHBvcnQgZm9yIGl0IGFzCi0vLyB3ZWxsICh3ZSB3b3VsZCBiZSBtaXNzaW5nIHJlcXVpcmVkIHNwZWNpYWxpemF0aW9ucyBvdGhlcndpc2UpLgotLy8KLSNpZiAhZGVmaW5lZCggX1NUTFBfSEFTX1dDSEFSX1QpIHx8IGRlZmluZWQoX1NUTFBfV0NIQVJfVF9JU19VU0hPUlQpCi0jICB1bmRlZiAgTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19JTlRSSU5TSUNfV0NIQVJfVAotI2VuZGlmCi0KLS8vCi0vLyBCb3JsYW5kIHNoaXBzIGEgdmVyc2lvbiBvZiBTVExwb3J0IHdpdGggQysrIEJ1aWxkZXIgNiB0aGF0IGxhY2tzCi0vLyBoYXNodGFibGVzIGFuZCB0aGUgbGlrZToKLS8vCi0jaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pICYmIChfX0JPUkxBTkRDX18gPT0gMHg1NjApCi0jICB1bmRlZiBORE5CT09TVF9IQVNfSEFTSAotI2VuZGlmCi0KLS8vCi0vLyBnY2MtMi45NS4zL1NUTFBvcnQgZG9lcyBub3QgbGlrZSB0aGUgdXNpbmcgZGVjbGFyYXRpb25zIHdlIHVzZSB0byBnZXQgQURMIHdpdGggc3RkOjptaW4vbWF4Ci0vLwotI2lmIGRlZmluZWQoX19HTlVDX18pICYmIChfX0dOVUNfXyA8IDMpCi0jICBpbmNsdWRlIDxhbGdvcml0aG0+IC8vIGZvciBzdGQ6Om1pbiBhbmQgc3RkOjptYXgKLSMgIGRlZmluZSBORE5CT09TVF9VU0lOR19TVERfTUlOKCkgKCh2b2lkKTApCi0jICBkZWZpbmUgTkROQk9PU1RfVVNJTkdfU1REX01BWCgpICgodm9pZCkwKQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgdXNpbmcgc3RkOjptaW47IHVzaW5nIHN0ZDo6bWF4OyB9Ci0jZW5kaWYKLQotLy8gIEMrKzB4IGhlYWRlcnMgbm90IHlldCBpbXBsZW1lbnRlZAotLy8KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQVJSQVkKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQ0hST05PCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NPREVDVlQKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQ09ORElUSU9OX1ZBUklBQkxFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0ZPUldBUkRfTElTVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GVVRVUkUKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9NVVRFWAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9SQU5ET00KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfUkFUSU8KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfUkVHRVgKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfU1lTVEVNX0VSUk9SCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RIUkVBRAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UVVBMRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UWVBFX1RSQUlUUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UWVBFSU5ERVgKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVU5PUkRFUkVEX01BUAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9VTk9SREVSRURfU0VUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTlVNRVJJQ19MSU1JVFMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9BTExPQ0FUT1IKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVE9NSUNfU01BUlRfUFRSCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfU01BUlRfUFRSCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0ZVTkNUSU9OQUwKLQotI2RlZmluZSBORE5CT09TVF9TVERMSUIgIlNUTFBvcnQgc3RhbmRhcmQgbGlicmFyeSB2ZXJzaW9uICIgTkROQk9PU1RfU1RSSU5HSVpFKF9fU0dJX1NUTF9QT1JUKQotCi0KLQotCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3N0ZGxpYi92YWNwcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9zdGRsaWIvdmFjcHAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNDcxOWI3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3N0ZGxpYi92YWNwcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMSAtIDIwMDIuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotI2lmIF9fSUJNQ1BQX18gPD0gNTAxCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX0FMTE9DQVRPUgotI2VuZGlmCi0KLSNkZWZpbmUgTkROQk9PU1RfSEFTX01BQ1JPX1VTRV9GQUNFVAotI2RlZmluZSBORE5CT09TVF9OT19TVERfTUVTU0FHRVMKLQotLy8gQXBwbGUgZG9lc24ndCBzZWVtIHRvIHJlbGlhYmx5IGRlZmluZWQgYSAqdW5peCogbWFjcm8KLSNpZiAhZGVmaW5lZChDWUdXSU4pICYmICggIGRlZmluZWQoX191bml4X18pICBcCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBkZWZpbmVkKF9fdW5peCkgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgfHwgZGVmaW5lZCh1bml4KSAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IGRlZmluZWQoX19BUFBMRV9fKSBcCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBkZWZpbmVkKF9fQVBQTEUpICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgfHwgZGVmaW5lZChBUFBMRSkpCi0jICBpbmNsdWRlIDx1bmlzdGQuaD4KLSNlbmRpZgotCi0vLyAgQysrMHggaGVhZGVycyBub3QgeWV0IGltcGxlbWVudGVkCi0vLwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9BUlJBWQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9DSFJPTk8KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQ09ERUNWVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9DT05ESVRJT05fVkFSSUFCTEUKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfRk9SV0FSRF9MSVNUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0ZVVFVSRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9JTklUSUFMSVpFUl9MSVNUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX01VVEVYCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1JBTkRPTQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9SQVRJTwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9SRUdFWAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9TWVNURU1fRVJST1IKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVEhSRUFECi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RVUExFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RZUEVfVFJBSVRTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RZUEVJTkRFWAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9VTk9SREVSRURfTUFQCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1VOT1JERVJFRF9TRVQKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9OVU1FUklDX0xJTUlUUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0FMTE9DQVRPUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0FUT01JQ19TTUFSVF9QVFIKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9TTUFSVF9QVFIKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfRlVOQ1RJT05BTAotCi0jZGVmaW5lIE5ETkJPT1NUX1NURExJQiAiVmlzdWFsIEFnZSBkZWZhdWx0IHN0YW5kYXJkIGxpYnJhcnkiCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9zdWZmaXguaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc3VmZml4LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2RmZDdkYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9zdWZmaXguaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTMzICswLDAgQEAKLS8vICBCb29zdCBjb25maWcuaHBwIGNvbmZpZ3VyYXRpb24gaGVhZGVyIGZpbGUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0vLwlib29zdGluc3BlY3Q6bmRwcmVjYXRlZF9tYWNyb3MJLS0gdGVsbCB0aGUgaW5zcGVjdCB0b29sIHRvIGlnbm9yZSB0aGlzIGZpbGUKLQotLy8gIENvcHlyaWdodCAoYykgMjAwMS0yMDAzIEpvaG4gTWFkZG9jawotLy8gIENvcHlyaWdodCAoYykgMjAwMSBEYXJpbiBBZGxlcgotLy8gIENvcHlyaWdodCAoYykgMjAwMSBQZXRlciBEaW1vdgotLy8gIENvcHlyaWdodCAoYykgMjAwMiBCaWxsIEtlbXBmIAotLy8gIENvcHlyaWdodCAoYykgMjAwMiBKZW5zIE1hdXJlcgotLy8gIENvcHlyaWdodCAoYykgMjAwMi0yMDAzIERhdmlkIEFicmFoYW1zCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAzIEdlbm5hcm8gUHJvdGEKLS8vICBDb3B5cmlnaHQgKGMpIDIwMDMgRXJpYyBGcmllZG1hbgotLy8gIENvcHlyaWdodCAoYykgMjAxMCBFcmljIEpvdXJkYW5uZWF1LCBKb2VsIEZhbGNvdQotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnLyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIEJvb3N0IGNvbmZpZy5ocHAgcG9saWN5IGFuZCByYXRpb25hbGUgZG9jdW1lbnRhdGlvbiBoYXMgYmVlbiBtb3ZlZCB0bwotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvY29uZmlnLwotLy8KLS8vICBUaGlzIGZpbGUgaXMgaW50ZW5kZWQgdG8gYmUgc3RhYmxlLCBhbmQgcmVsYXRpdmVseSB1bmNoYW5naW5nLgotLy8gIEl0IHNob3VsZCBjb250YWluIGJvaWxlcnBsYXRlIGNvZGUgb25seSAtIG5vIGNvbXBpbGVyIHNwZWNpZmljCi0vLyAgY29kZSB1bmxlc3MgaXQgaXMgdW5hdm9pZGFibGUgLSBubyBjaGFuZ2VzIHVubGVzcyB1bmF2b2lkYWJsZS4KLQotI2lmbmRlZiBORE5CT09TVF9DT05GSUdfU1VGRklYX0hQUAotI2RlZmluZSBORE5CT09TVF9DT05GSUdfU1VGRklYX0hQUAotCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fID49IDQpCi0vLwotLy8gU29tZSBHQ0MtNC54IHZlcnNpb25zIGlzc3VlIHdhcm5pbmdzIGV2ZW4gd2hlbiBfX2V4dGVuc2lvbl9fIGlzIHVzZWQsCi0vLyBzbyB1c2UgdGhpcyBhcyBhIHdvcmthcm91bmQ6Ci0vLwotI3ByYWdtYSBHQ0Mgc3lzdGVtX2hlYWRlcgotI2VuZGlmCi0KLS8vCi0vLyBlbnN1cmUgdGhhdCB2aXNpYmlsaXR5IG1hY3JvcyBhcmUgYWx3YXlzIGRlZmluZWQsIHRodXMgc3ltcGxpZnlpbmcgdXNlCi0vLwotI2lmbmRlZiBORE5CT09TVF9TWU1CT0xfRVhQT1JUCi0jIGRlZmluZSBORE5CT09TVF9TWU1CT0xfRVhQT1JUCi0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfU1lNQk9MX0lNUE9SVAotIyBkZWZpbmUgTkROQk9PU1RfU1lNQk9MX0lNUE9SVAotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1NZTUJPTF9WSVNJQkxFCi0jIGRlZmluZSBORE5CT09TVF9TWU1CT0xfVklTSUJMRQotI2VuZGlmCi0KLS8vCi0vLyBsb29rIGZvciBsb25nIGxvbmcgYnkgbG9va2luZyBmb3IgdGhlIGFwcHJvcHJpYXRlIG1hY3JvcyBpbiA8bGltaXRzLmg+LgotLy8gTm90ZSB0aGF0IHdlIHVzZSBsaW1pdHMuaCByYXRoZXIgdGhhbiBjbGltaXRzIGZvciBtYXhpbWFsIHBvcnRhYmlsaXR5LAotLy8gcmVtZW1iZXIgdGhhdCBzaW5jZSB0aGVzZSBqdXN0IGRlY2xhcmUgYSBidW5jaCBvZiBtYWNyb3MsIHRoZXJlIHNob3VsZCBiZQotLy8gbm8gbmFtZXNwYWNlIGlzc3VlcyBmcm9tIHRoaXMuCi0vLwotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0xPTkdfTE9ORykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgIWRlZmluZWQoX19CT1JMQU5EQ19fKQotIyBpbmNsdWRlIDxsaW1pdHMuaD4KLSMgaWYgKGRlZmluZWQoVUxMT05HX01BWCkgfHwgZGVmaW5lZChVTE9OR19MT05HX01BWCkgfHwgZGVmaW5lZChVTE9OR0xPTkdfTUFYKSkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX0xPTkdfTE9ORwotIyBlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX05PX0xPTkdfTE9ORwotIyBlbmRpZgotI2VuZGlmCi0KLS8vIEdDQyAzLnggd2lsbCBjbGVhbiB1cCBhbGwgb2YgdGhvc2UgbmFzdHkgbWFjcm8gZGVmaW5pdGlvbnMgdGhhdAotLy8gTkROQk9PU1RfTk9fQ1RZUEVfRlVOQ1RJT05TIGlzIGludGVuZGVkIHRvIGhlbHAgd29yayBhcm91bmQsIHNvIHVuZGVmaW5lCi0vLyBpdCB1bmRlciBHQ0MgMy54LgotI2lmIGRlZmluZWQoX19HTlVDX18pICYmIChfX0dOVUNfXyA+PSAzKSAmJiBkZWZpbmVkKE5ETkJPT1NUX05PX0NUWVBFX0ZVTkNUSU9OUykKLSMgIHVuZGVmIE5ETkJPT1NUX05PX0NUWVBFX0ZVTkNUSU9OUwotI2VuZGlmCi0KLS8vCi0vLyBBc3N1bWUgYW55IGV4dGVuc2lvbnMgYXJlIGluIG5hbWVzcGFjZSBzdGQ6OiB1bmxlc3Mgc3RhdGVkIG90aGVyd2lzZToKLS8vCi0jICBpZm5kZWYgTkROQk9PU1RfU1REX0VYVEVOU0lPTl9OQU1FU1BBQ0UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1NURF9FWFRFTlNJT05fTkFNRVNQQUNFIHN0ZAotIyAgZW5kaWYKLQotLy8KLS8vIElmIGN2LXF1YWxpZmllZCBzcGVjaWFsaXphdGlvbnMgYXJlIG5vdCBhbGxvd2VkLCB0aGVuIG5laXRoZXIgYXJlIGN2LXZvaWQgb25lczoKLS8vCi0jICBpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NWX1NQRUNJQUxJWkFUSU9OUykgXAotICAgICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLSMgIGVuZGlmCi0KLS8vCi0vLyBJZiB0aGVyZSBpcyBubyBudW1lcmljX2xpbWl0cyB0ZW1wbGF0ZSwgdGhlbiBpdCBjYW4ndCBoYXZlIGFueSBjb21waWxlIHRpbWUKLS8vIGNvbnN0YW50cyBlaXRoZXIhCi0vLwotIyAgaWYgZGVmaW5lZChORE5CT09TVF9OT19MSU1JVFMpIFwKLSAgICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0xJTUlUU19DT01QSUxFX1RJTUVfQ09OU1RBTlRTKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX0xJTUlUU19DT01QSUxFX1RJTUVfQ09OU1RBTlRTCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fTVNfSU5UNjRfTlVNRVJJQ19MSU1JVFMKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19MT05HX0xPTkdfTlVNRVJJQ19MSU1JVFMKLSMgIGVuZGlmCi0KLS8vCi0vLyBpZiB0aGVyZSBpcyBubyBsb25nIGxvbmcgdGhlbiB0aGVyZSBpcyBubyBzcGVjaWFsaXNhdGlvbgotLy8gZm9yIG51bWVyaWNfbGltaXRzPGxvbmcgbG9uZz4gZWl0aGVyOgotLy8KLSNpZiAhZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19MT05HX0xPTkdfTlVNRVJJQ19MSU1JVFMpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fTE9OR19MT05HX05VTUVSSUNfTElNSVRTCi0jZW5kaWYKLQotLy8KLS8vIGlmIHRoZXJlIGlzIG5vIF9faW50NjQgdGhlbiB0aGVyZSBpcyBubyBzcGVjaWFsaXNhdGlvbgotLy8gZm9yIG51bWVyaWNfbGltaXRzPF9faW50NjQ+IGVpdGhlcjoKLS8vCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfSEFTX01TX0lOVDY0KSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19NU19JTlQ2NF9OVU1FUklDX0xJTUlUUykKLSMgIGRlZmluZSBORE5CT09TVF9OT19NU19JTlQ2NF9OVU1FUklDX0xJTUlUUwotI2VuZGlmCi0KLS8vCi0vLyBpZiBtZW1iZXIgdGVtcGxhdGVzIGFyZSBzdXBwb3J0ZWQgdGhlbiBzbyBpcyB0aGUKLS8vIFZDNiBzdWJzZXQgb2YgbWVtYmVyIHRlbXBsYXRlczoKLS8vCi0jICBpZiAhZGVmaW5lZChORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVTKSBcCi0gICAgICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVNWQzZfTUVNQkVSX1RFTVBMQVRFUykKLSMgICAgIGRlZmluZSBORE5CT09TVF9NU1ZDNl9NRU1CRVJfVEVNUExBVEVTCi0jICBlbmRpZgotCi0vLwotLy8gV2l0aG91dCBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uLCBjYW4ndCB0ZXN0IGZvciBwYXJ0aWFsIHNwZWNpYWxpc2F0aW9uIGJ1Z3M6Ci0vLwotIyAgaWYgZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSBcCi0gICAgICAmJiAhZGVmaW5lZChORE5CT09TVF9CQ0JfUEFSVElBTF9TUEVDSUFMSVpBVElPTl9CVUcpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfQkNCX1BBUlRJQUxfU1BFQ0lBTElaQVRJT05fQlVHCi0jICBlbmRpZgotCi0vLwotLy8gV2l0aG91dCBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uLCB3ZSBjYW4ndCBoYXZlIGFycmF5LXR5cGUgcGFydGlhbCBzcGVjaWFsaXNhdGlvbnM6Ci0vLwotIyAgaWYgZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSBcCi0gICAgICAmJiAhZGVmaW5lZChORE5CT09TVF9OT19BUlJBWV9UWVBFX1NQRUNJQUxJWkFUSU9OUykKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19BUlJBWV9UWVBFX1NQRUNJQUxJWkFUSU9OUwotIyAgZW5kaWYKLQotLy8KLS8vIFdpdGhvdXQgcGFydGlhbCBzcGVjaWFsaXphdGlvbiwgc3RkOjppdGVyYXRvcl90cmFpdHMgY2FuJ3Qgd29yazoKLS8vCi0jICBpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pIFwKLSAgICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9JVEVSQVRPUl9UUkFJVFMpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX0lURVJBVE9SX1RSQUlUUwotIyAgZW5kaWYKLQotLy8KLS8vIFdpdGhvdXQgcGFydGlhbCBzcGVjaWFsaXphdGlvbiwgcGFydGlhbCAKLS8vIHNwZWNpYWxpemF0aW9uIHdpdGggZGVmYXVsdCBhcmdzIHdvbid0IHdvcmsgZWl0aGVyOgotLy8KLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgXAotICAgICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fUEFSVElBTF9TUEVDSUFMSVpBVElPTl9JTVBMSUNJVF9ERUZBVUxUX0FSR1MpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fUEFSVElBTF9TUEVDSUFMSVpBVElPTl9JTVBMSUNJVF9ERUZBVUxUX0FSR1MKLSMgIGVuZGlmCi0KLS8vCi0vLyBXaXRob3V0IG1lbWJlciB0ZW1wbGF0ZSBzdXBwb3J0LCB3ZSBjYW4ndCBoYXZlIHRlbXBsYXRlIGNvbnN0cnVjdG9ycwotLy8gaW4gdGhlIHN0YW5kYXJkIGxpYnJhcnkgZWl0aGVyOgotLy8KLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFUykgXAotICAgICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVNWQzZfTUVNQkVSX1RFTVBMQVRFUykgXAotICAgICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVEX0lURVJBVE9SX0NPTlNUUlVDVE9SUykKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19URU1QTEFURURfSVRFUkFUT1JfQ09OU1RSVUNUT1JTCi0jICBlbmRpZgotCi0vLwotLy8gV2l0aG91dCBtZW1iZXIgdGVtcGxhdGUgc3VwcG9ydCwgd2UgY2FuJ3QgaGF2ZSBhIGNvbmZvcm1pbmcKLS8vIHN0ZDo6YWxsb2NhdG9yIHRlbXBsYXRlIGVpdGhlcjoKLS8vCi0jICBpZiBkZWZpbmVkKE5ETkJPT1NUX05PX01FTUJFUl9URU1QTEFURVMpIFwKLSAgICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01TVkM2X01FTUJFUl9URU1QTEFURVMpIFwKLSAgICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9BTExPQ0FUT1IpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX0FMTE9DQVRPUgotIyAgZW5kaWYKLQotLy8KLS8vIHdpdGhvdXQgQURMIHN1cHBvcnQgdGhlbiB1c2luZyBkZWNsYXJhdGlvbnMgd2lsbCBicmVhayBBREwgYXMgd2VsbDoKLS8vCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19BUkdVTUVOVF9ERVBFTkRFTlRfTE9PS1VQKSAmJiAhZGVmaW5lZChORE5CT09TVF9GVU5DVElPTl9TQ09QRV9VU0lOR19ERUNMQVJBVElPTl9CUkVBS1NfQURMKQotIyAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX1NDT1BFX1VTSU5HX0RFQ0xBUkFUSU9OX0JSRUFLU19BREwKLSNlbmRpZgotCi0vLwotLy8gV2l0aG91dCB0eXBlaWQgc3VwcG9ydCB3ZSBoYXZlIG5vIGR5bmFtaWMgUlRUSSBlaXRoZXI6Ci0vLwotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fVFlQRUlEKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19SVFRJKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1JUVEkKLSNlbmRpZgotCi0vLwotLy8gSWYgd2UgaGF2ZSBhIHN0YW5kYXJkIGFsbG9jYXRvciwgdGhlbiB3ZSBoYXZlIGEgcGFydGlhbCBvbmUgYXMgd2VsbDoKLS8vCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fU1REX0FMTE9DQVRPUikKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfUEFSVElBTF9TVERfQUxMT0NBVE9SCi0jZW5kaWYKLQotLy8KLS8vIFdlIGNhbid0IGhhdmUgYSB3b3JraW5nIHN0ZDo6dXNlX2ZhY2V0IGlmIHRoZXJlIGlzIG5vIHN0ZDo6bG9jYWxlOgotLy8KLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REX0xPQ0FMRSkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fU1REX1VTRV9GQUNFVCkKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19TVERfVVNFX0ZBQ0VUCi0jICBlbmRpZgotCi0vLwotLy8gV2UgY2FuJ3QgaGF2ZSBhIHN0ZDo6bWVzc2FnZXMgZmFjZXQgaWYgdGhlcmUgaXMgbm8gc3RkOjpsb2NhbGU6Ci0vLwotIyAgaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERfTE9DQUxFKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19TVERfTUVTU0FHRVMpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX01FU1NBR0VTCi0jICBlbmRpZgotCi0vLwotLy8gV2UgY2FuJ3QgaGF2ZSBhIHdvcmtpbmcgc3RkOjp3c3RyZWFtYnVmIGlmIHRoZXJlIGlzIG5vIHN0ZDo6bG9jYWxlOgotLy8KLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REX0xPQ0FMRSkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fU1REX1dTVFJFQU1CVUYpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX1dTVFJFQU1CVUYKLSMgIGVuZGlmCi0KLS8vCi0vLyBXZSBjYW4ndCBoYXZlIGEgPGN3Y3R5cGU+IGlmIHRoZXJlIGlzIG5vIDxjd2NoYXI+OgotLy8KLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1dDSEFSKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19DV0NUWVBFKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX0NXQ1RZUEUKLSMgIGVuZGlmCi0KLS8vCi0vLyBXZSBjYW4ndCBoYXZlIGEgc3dwcmludGYgaWYgdGhlcmUgaXMgbm8gPGN3Y2hhcj46Ci0vLwotIyAgaWYgZGVmaW5lZChORE5CT09TVF9OT19DV0NIQVIpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NXUFJJTlRGKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1NXUFJJTlRGCi0jICBlbmRpZgotCi0vLwotLy8gSWYgV2luMzIgc3VwcG9ydCBpcyB0dXJuZWQgb2ZmLCB0aGVuIHdlIG11c3QgdHVybiBvZmYKLS8vIHRocmVhZGluZyBzdXBwb3J0IGFsc28sIHVubGVzcyB0aGVyZSBpcyBzb21lIG90aGVyCi0vLyB0aHJlYWQgQVBJIGVuYWJsZWQ6Ci0vLwotI2lmIGRlZmluZWQoTkROQk9PU1RfRElTQUJMRV9XSU4zMikgJiYgZGVmaW5lZChfV0lOMzIpIFwKLSAgICYmICFkZWZpbmVkKE5ETkJPT1NUX0RJU0FCTEVfVEhSRUFEUykgJiYgIWRlZmluZWQoTkROQk9PU1RfSEFTX1BUSFJFQURTKQotIyAgZGVmaW5lIE5ETkJPT1NUX0RJU0FCTEVfVEhSRUFEUwotI2VuZGlmCi0KLS8vCi0vLyBUdXJuIG9uIHRocmVhZGluZyBzdXBwb3J0IGlmIHRoZSBjb21waWxlciB0aGlua3MgdGhhdCBpdCdzIGluCi0vLyBtdWx0aXRocmVhZGVkIG1vZGUuICBXZSBwdXQgdGhpcyBoZXJlIGJlY2F1c2UgdGhlcmUgYXJlIG9ubHkgYQotLy8gbGltaXRlZCBudW1iZXIgb2YgbWFjcm9zIHRoYXQgaWRlbnRpZnkgdGhpcyAoaWYgdGhlcmUncyBhbnkgbWlzc2luZwotLy8gZnJvbSBoZXJlIHRoZW4gYWRkIHRvIHRoZSBhcHByb3ByaWF0ZSBjb21waWxlciBzZWN0aW9uKToKLS8vCi0jaWYgKGRlZmluZWQoX19NVF9fKSB8fCBkZWZpbmVkKF9NVCkgfHwgZGVmaW5lZChfUkVFTlRSQU5UKSBcCi0gICAgfHwgZGVmaW5lZChfUFRIUkVBRFMpIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fRHJhZ29uRmx5X18pKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfSEFTX1RIUkVBRFMpCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1RIUkVBRFMKLSNlbmRpZgotCi0vLwotLy8gVHVybiB0aHJlYWRpbmcgc3VwcG9ydCBvZmYgaWYgTkROQk9PU1RfRElTQUJMRV9USFJFQURTIGlzIGRlZmluZWQ6Ci0vLwotI2lmIGRlZmluZWQoTkROQk9PU1RfRElTQUJMRV9USFJFQURTKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0hBU19USFJFQURTKQotIyAgdW5kZWYgTkROQk9PU1RfSEFTX1RIUkVBRFMKLSNlbmRpZgotCi0vLwotLy8gVHVybiB0aHJlYWRpbmcgc3VwcG9ydCBvZmYgaWYgd2UgZG9uJ3QgcmVjb2duaXNlIHRoZSB0aHJlYWRpbmcgQVBJOgotLy8KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19USFJFQURTKSAmJiAhZGVmaW5lZChORE5CT09TVF9IQVNfUFRIUkVBRFMpXAotICAgICAgJiYgIWRlZmluZWQoTkROQk9PU1RfSEFTX1dJTlRIUkVBRFMpICYmICFkZWZpbmVkKE5ETkJPT1NUX0hBU19CRVRIUkVBRFMpXAotICAgICAgJiYgIWRlZmluZWQoTkROQk9PU1RfSEFTX01QVEFTS1MpCi0jICB1bmRlZiBORE5CT09TVF9IQVNfVEhSRUFEUwotI2VuZGlmCi0KLS8vCi0vLyBUdXJuIHRocmVhZGluZyBkZXRhaWwgbWFjcm9zIG9mZiBpZiB3ZSBkb24ndCAod2FudCB0bykgdXNlIHRocmVhZGluZwotLy8KLSNpZm5kZWYgTkROQk9PU1RfSEFTX1RIUkVBRFMKLSMgIHVuZGVmIE5ETkJPT1NUX0hBU19QVEhSRUFEUwotIyAgdW5kZWYgTkROQk9PU1RfSEFTX1BUSFJFQURfTVVURVhBVFRSX1NFVFRZUEUKLSMgIHVuZGVmIE5ETkJPT1NUX0hBU19QVEhSRUFEX1lJRUxECi0jICB1bmRlZiBORE5CT09TVF9IQVNfUFRIUkVBRF9ERUxBWV9OUAotIyAgdW5kZWYgTkROQk9PU1RfSEFTX1dJTlRIUkVBRFMKLSMgIHVuZGVmIE5ETkJPT1NUX0hBU19CRVRIUkVBRFMKLSMgIHVuZGVmIE5ETkJPT1NUX0hBU19NUFRBU0tTCi0jZW5kaWYKLQotLy8KLS8vIElmIHRoZSBjb21waWxlciBjbGFpbXMgdG8gYmUgQzk5IGNvbmZvcm1hbnQsIHRoZW4gaXQgaGFkIGJldHRlcgotLy8gaGF2ZSBhIDxzdGRpbnQuaD46Ci0vLwotIyAgaWYgZGVmaW5lZChfX1NURENfVkVSU0lPTl9fKSAmJiAoX19TVERDX1ZFUlNJT05fXyA+PSAxOTk5MDEpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX1NURElOVF9ICi0jICAgICBpZm5kZWYgTkROQk9PU1RfSEFTX0xPRzFQCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX0xPRzFQCi0jICAgICBlbmRpZgotIyAgICAgaWZuZGVmIE5ETkJPT1NUX0hBU19FWFBNMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19FWFBNMQotIyAgICAgZW5kaWYKLSMgIGVuZGlmCi0KLS8vCi0vLyBEZWZpbmUgTkROQk9PU1RfTk9fU0xJU1QgYW5kIE5ETkJPT1NUX05PX0hBU0ggaWYgcmVxdWlyZWQuCi0vLyBOb3RlIHRoYXQgdGhpcyBpcyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgb25seS4KLS8vCi0jICBpZiAhZGVmaW5lZChORE5CT09TVF9IQVNfU0xJU1QpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NMSVNUKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1NMSVNUCi0jICBlbmRpZgotCi0jICBpZiAhZGVmaW5lZChORE5CT09TVF9IQVNfSEFTSCkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fSEFTSCkKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19IQVNICi0jICBlbmRpZgotCi0vLwotLy8gU2V0IE5ETkJPT1NUX1NMSVNUX0hFQURFUiBpZiBub3Qgc2V0IGFscmVhZHk6Ci0vLwotI2lmIGRlZmluZWQoTkROQk9PU1RfSEFTX1NMSVNUKSAmJiAhZGVmaW5lZChORE5CT09TVF9TTElTVF9IRUFERVIpCi0jICBkZWZpbmUgTkROQk9PU1RfU0xJU1RfSEVBREVSIDxzbGlzdD4KLSNlbmRpZgotCi0vLwotLy8gU2V0IE5ETkJPT1NUX0hBU0hfU0VUX0hFQURFUiBpZiBub3Qgc2V0IGFscmVhZHk6Ci0vLwotI2lmIGRlZmluZWQoTkROQk9PU1RfSEFTX0hBU0gpICYmICFkZWZpbmVkKE5ETkJPT1NUX0hBU0hfU0VUX0hFQURFUikKLSMgIGRlZmluZSBORE5CT09TVF9IQVNIX1NFVF9IRUFERVIgPGhhc2hfc2V0PgotI2VuZGlmCi0KLS8vCi0vLyBTZXQgTkROQk9PU1RfSEFTSF9NQVBfSEVBREVSIGlmIG5vdCBzZXQgYWxyZWFkeToKLS8vCi0jaWYgZGVmaW5lZChORE5CT09TVF9IQVNfSEFTSCkgJiYgIWRlZmluZWQoTkROQk9PU1RfSEFTSF9NQVBfSEVBREVSKQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU0hfTUFQX0hFQURFUiA8aGFzaF9tYXA+Ci0jZW5kaWYKLQotLy8gIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotLy8gIFRoaXMgbWFjcm8gZ2V0cyBzZXQgaWYgd2UgaGF2ZSBoZWFkZXJzIHRoYXQgZml4IHRoZSBBQkksCi0vLyAgYW5kIHByZXZlbnQgT0RSIHZpb2xhdGlvbnMgd2hlbiBsaW5raW5nIHRvIGV4dGVybmFsIGxpYnJhcmllczoKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0FCSV9QUkVGSVgpICYmIGRlZmluZWQoTkROQk9PU1RfQUJJX1NVRkZJWCkgJiYgIWRlZmluZWQoTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTKQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19BQklfSEVBREVSUykgJiYgZGVmaW5lZChORE5CT09TVF9ESVNBQkxFX0FCSV9IRUFERVJTKQotIyAgdW5kZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jZW5kaWYKLQotLy8gIE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFIHdvcmthcm91bmQgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLS8vICBCZWNhdXNlIHN0ZDo6c2l6ZV90IHVzYWdlIGlzIHNvIGNvbW1vbiwgZXZlbiBpbiBib29zdCBoZWFkZXJzIHdoaWNoIGRvIG5vdAotLy8gIG90aGVyd2lzZSB1c2UgdGhlIEMgbGlicmFyeSwgdGhlIDxjc3RkZGVmPiB3b3JrYXJvdW5kIGlzIGluY2x1ZGVkIGhlcmUgc28KLS8vICB0aGF0IHVnbHkgd29ya2Fyb3VuZCBjb2RlIG5lZWQgbm90IGFwcGVhciBpbiBtYW55IG90aGVyIGJvb3N0IGhlYWRlcnMuCi0vLyAgTk9URSBXRUxMOiBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3Igbm9uLWNvbmZvcm1pbmcgY29tcGlsZXJzOyA8Y3N0ZGRlZj4KLS8vICBtdXN0IHN0aWxsIGJlICNpbmNsdWRlZCBpbiB0aGUgdXN1YWwgcGxhY2VzIHNvIHRoYXQgPGNzdGRkZWY+IGluY2x1c2lvbgotLy8gIHdvcmtzIGFzIGV4cGVjdGVkIHdpdGggc3RhbmRhcmQgY29uZm9ybWluZyBjb21waWxlcnMuICBUaGUgcmVzdWx0aW5nCi0vLyAgZG91YmxlIGluY2x1c2lvbiBvZiA8Y3N0ZGRlZj4gaXMgaGFybWxlc3MuCi0KLSMgaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSkgJiYgZGVmaW5lZChfX2NwbHVzcGx1cykKLSMgICBpbmNsdWRlIDxjc3RkZGVmPgotICAgIG5hbWVzcGFjZSBzdGQgeyB1c2luZyA6OnB0cmRpZmZfdDsgdXNpbmcgOjpzaXplX3Q7IH0KLSMgZW5kaWYKLQotLy8gIFdvcmthcm91bmQgZm9yIHRoZSB1bmZvcnR1bmF0ZSBtaW4vbWF4IG1hY3JvcyBkZWZpbmVkIGJ5IHNvbWUgcGxhdGZvcm0gaGVhZGVycwotCi0jZGVmaW5lIE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OCi0KLSNpZm5kZWYgTkROQk9PU1RfVVNJTkdfU1REX01JTgotIyAgZGVmaW5lIE5ETkJPT1NUX1VTSU5HX1NURF9NSU4oKSB1c2luZyBzdGQ6Om1pbgotI2VuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfVVNJTkdfU1REX01BWAotIyAgZGVmaW5lIE5ETkJPT1NUX1VTSU5HX1NURF9NQVgoKSB1c2luZyBzdGQ6Om1heAotI2VuZGlmCi0KLS8vICBORE5CT09TVF9OT19TVERfTUlOX01BWCB3b3JrYXJvdW5kICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REX01JTl9NQVgpICYmIGRlZmluZWQoX19jcGx1c3BsdXMpCi0KLW5hbWVzcGFjZSBzdGQgewotICB0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgotICBpbmxpbmUgY29uc3QgX1RwJiBtaW4gTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKGNvbnN0IF9UcCYgX19hLCBjb25zdCBfVHAmIF9fYikgewotICAgIHJldHVybiBfX2IgPCBfX2EgPyBfX2IgOiBfX2E7Ci0gIH0KLSAgdGVtcGxhdGUgPGNsYXNzIF9UcD4KLSAgaW5saW5lIGNvbnN0IF9UcCYgbWF4IE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OIChjb25zdCBfVHAmIF9fYSwgY29uc3QgX1RwJiBfX2IpIHsKLSAgICByZXR1cm4gIF9fYSA8IF9fYiA/IF9fYiA6IF9fYTsKLSAgfQotfQotCi0jICBlbmRpZgotCi0vLyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQgd29ya2Fyb3VuZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy8KLS8vIE9uIGNvbXBpbGVycyB3aGljaCBkb24ndCBhbGxvdyBpbi1jbGFzcyBpbml0aWFsaXphdGlvbiBvZiBzdGF0aWMgaW50ZWdyYWwKLS8vIGNvbnN0YW50IG1lbWJlcnMsIHdlIG11c3QgdXNlIGVudW1zIGFzIGEgd29ya2Fyb3VuZCBpZiB3ZSB3YW50IHRoZSBjb25zdGFudHMKLS8vIHRvIGJlIGF2YWlsYWJsZSBhdCBjb21waWxlLXRpbWUuIFRoaXMgbWFjcm8gZ2l2ZXMgdXMgYSBjb252ZW5pZW50IHdheSB0bwotLy8gZGVjbGFyZSBzdWNoIGNvbnN0YW50cy4KLQotIyAgaWZkZWYgTkROQk9PU1RfTk9fSU5DTEFTU19NRU1CRVJfSU5JVElBTElaQVRJT04KLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh0eXBlLCBhc3NpZ25tZW50KSBlbnVtIHsgYXNzaWdubWVudCB9Ci0jICBlbHNlCi0jICAgICBkZWZpbmUgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHR5cGUsIGFzc2lnbm1lbnQpIHN0YXRpYyBjb25zdCB0eXBlIGFzc2lnbm1lbnQKLSMgIGVuZGlmCi0KLS8vIE5ETkJPT1NUX1VTRV9GQUNFVCAvIEhBU19GQUNFVCB3b3JrYXJvdW5kIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotLy8gV2hlbiB0aGUgc3RhbmRhcmQgbGlicmFyeSBkb2VzIG5vdCBoYXZlIGEgY29uZm9ybWluZyBzdGQ6OnVzZV9mYWNldCB0aGVyZQotLy8gYXJlIHZhcmlvdXMgd29ya2Fyb3VuZHMgYXZhaWxhYmxlLCBidXQgdGhleSBkaWZmZXIgZnJvbSBsaWJyYXJ5IHRvIGxpYnJhcnkuCi0vLyBUaGUgc2FtZSBwcm9ibGVtIG9jY3VycyB3aXRoIGhhc19mYWNldC4KLS8vIFRoZXNlIG1hY3JvcyBwcm92aWRlIGEgY29uc2lzdGVudCB3YXkgdG8gYWNjZXNzIGEgbG9jYWxlJ3MgZmFjZXRzLgotLy8gVXNhZ2U6Ci0vLyAgICByZXBsYWNlCi0vLyAgICAgICBzdGQ6OnVzZV9mYWNldDxUeXBlPihsb2MpOwotLy8gICAgd2l0aAotLy8gICAgICAgTkROQk9PU1RfVVNFX0ZBQ0VUKFR5cGUsIGxvYyk7Ci0vLyAgICBOb3RlIGRvIG5vdCBhZGQgYSBzdGQ6OiBwcmVmaXggdG8gdGhlIGZyb250IG9mIE5ETkJPT1NUX1VTRV9GQUNFVCEKLS8vICBVc2UgZm9yIE5ETkJPT1NUX0hBU19GQUNFVCBpcyBhbmFsb2dvdXMuCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9VU0VfRkFDRVQpCi0jICBpZmRlZiBORE5CT09TVF9IQVNfVFdPX0FSR19VU0VfRkFDRVQKLSMgICAgIGRlZmluZSBORE5CT09TVF9VU0VfRkFDRVQoVHlwZSwgbG9jKSBzdGQ6OnVzZV9mYWNldChsb2MsIHN0YXRpY19jYXN0PFR5cGUqPigwKSkKLSMgICAgIGRlZmluZSBORE5CT09TVF9IQVNfRkFDRVQoVHlwZSwgbG9jKSBzdGQ6Omhhc19mYWNldChsb2MsIHN0YXRpY19jYXN0PFR5cGUqPigwKSkKLSMgIGVsaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTUFDUk9fVVNFX0ZBQ0VUKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1VTRV9GQUNFVChUeXBlLCBsb2MpIHN0ZDo6X1VTRShsb2MsIFR5cGUpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX0ZBQ0VUKFR5cGUsIGxvYykgc3RkOjpfSEFTKGxvYywgVHlwZSkKLSMgIGVsaWYgZGVmaW5lZChORE5CT09TVF9IQVNfU1RMUF9VU0VfRkFDRVQpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfVVNFX0ZBQ0VUKFR5cGUsIGxvYykgKCpzdGQ6Ol9Vc2VfZmFjZXQ8VHlwZSA+KGxvYykpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX0ZBQ0VUKFR5cGUsIGxvYykgc3RkOjpoYXNfZmFjZXQ8IFR5cGUgPihsb2MpCi0jICBlbmRpZgotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9VU0VfRkFDRVQoVHlwZSwgbG9jKSBzdGQ6OnVzZV9mYWNldDwgVHlwZSA+KGxvYykKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfRkFDRVQoVHlwZSwgbG9jKSBzdGQ6Omhhc19mYWNldDwgVHlwZSA+KGxvYykKLSNlbmRpZgotCi0vLyBORE5CT09TVF9ORVNURURfVEVNUExBVEUgd29ya2Fyb3VuZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotLy8gTWVtYmVyIHRlbXBsYXRlcyBhcmUgc3VwcG9ydGVkIGJ5IHNvbWUgY29tcGlsZXJzIGV2ZW4gdGhvdWdoIHRoZXkgY2FuJ3QgdXNlCi0vLyB0aGUgQTo6dGVtcGxhdGUgbWVtYmVyPFU+IHN5bnRheCwgYXMgYSB3b3JrYXJvdW5kIHJlcGxhY2U6Ci0vLwotLy8gdHlwZWRlZiB0eXBlbmFtZSBBOjp0ZW1wbGF0ZSByZWJpbmQ8VT4gYmluZGVyOwotLy8KLS8vIHdpdGg6Ci0vLwotLy8gdHlwZWRlZiB0eXBlbmFtZSBBOjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgcmViaW5kPFU+IGJpbmRlcjsKLQotI2lmbmRlZiBORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVfS0VZV09SRAotIyAgZGVmaW5lIE5ETkJPT1NUX05FU1RFRF9URU1QTEFURSB0ZW1wbGF0ZQotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9ORVNURURfVEVNUExBVEUKLSNlbmRpZgotCi0vLyBORE5CT09TVF9VTlJFQUNIQUJMRV9SRVRVUk4oeCkgd29ya2Fyb3VuZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLS8vIE5vcm1hbGx5IGV2YWx1YXRlcyB0byBub3RoaW5nLCB1bmxlc3MgTkROQk9PU1RfTk9fVU5SRUFDSEFCTEVfUkVUVVJOX0RFVEVDVElPTgotLy8gaXMgZGVmaW5lZCwgaW4gd2hpY2ggY2FzZSBpdCBldmFsdWF0ZXMgdG8gcmV0dXJuIHg7IFVzZSB3aGVuIHlvdSBoYXZlIGEgcmV0dXJuCi0vLyBzdGF0ZW1lbnQgdGhhdCBjYW4gbmV2ZXIgYmUgcmVhY2hlZC4KLQotI2lmZGVmIE5ETkJPT1NUX05PX1VOUkVBQ0hBQkxFX1JFVFVSTl9ERVRFQ1RJT04KLSMgIGRlZmluZSBORE5CT09TVF9VTlJFQUNIQUJMRV9SRVRVUk4oeCkgcmV0dXJuIHg7Ci0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX1VOUkVBQ0hBQkxFX1JFVFVSTih4KQotI2VuZGlmCi0KLS8vIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgd29ya2Fyb3VuZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotLy8KLS8vIFNvbWUgY29tcGlsZXJzIGRvbid0IHN1cHBvcnQgdGhlIHVzZSBvZiBgdHlwZW5hbWUnIGZvciBkZXBlbmRlbnQKLS8vIHR5cGVzIGluIGRlZHVjZWQgY29udGV4dHMsIGUuZy4KLS8vCi0vLyAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IHZvaWQgZihULCB0eXBlbmFtZSBUOjp0eXBlKTsKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5eXl5eXl5eCi0vLyBSZXBsYWNlIHRoZXNlIGRlY2xhcmF0aW9ucyB3aXRoOgotLy8KLS8vICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gdm9pZCBmKFQsIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgVDo6dHlwZSk7Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fREVEVUNFRF9UWVBFTkFNRQotIyAgZGVmaW5lIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgdHlwZW5hbWUKLSNlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRQotI2VuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVFlQRU5BTUVfV0lUSF9DVE9SCi0jICBkZWZpbmUgTkROQk9PU1RfQ1RPUl9UWVBFTkFNRSB0eXBlbmFtZQotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9DVE9SX1RZUEVOQU1FCi0jZW5kaWYKLQotLy8gbG9uZyBsb25nIHdvcmthcm91bmQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLS8vIE9uIGdjYyAoYW5kIG1heWJlIG90aGVyIGNvbXBpbGVycz8pIGxvbmcgbG9uZyBpcyBhbHdheSBzdXBwb3J0ZWQKLS8vIGJ1dCBpdCdzIHVzZSBtYXkgZ2VuZXJhdGUgZWl0aGVyIHdhcm5pbmdzICh3aXRoIC1hbnNpKSwgb3IgZXJyb3JzCi0vLyAod2l0aCAtcGVkYW50aWMgLWFuc2kpIHVubGVzcyBpdCdzIHVzZSBpcyBwcmVmaXhlZCBieSBfX2V4dGVuc2lvbl9fCi0vLwotI2lmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykgJiYgZGVmaW5lZChfX2NwbHVzcGx1cykKLW5hbWVzcGFjZSBuZG5ib29zdHsKLSMgIGlmZGVmIF9fR05VQ19fCi0gICBfX2V4dGVuc2lvbl9fIHR5cGVkZWYgbG9uZyBsb25nIGxvbmdfbG9uZ190eXBlOwotICAgX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1bG9uZ19sb25nX3R5cGU7Ci0jICBlbHNlCi0gICB0eXBlZGVmIGxvbmcgbG9uZyBsb25nX2xvbmdfdHlwZTsKLSAgIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHVsb25nX2xvbmdfdHlwZTsKLSMgIGVuZGlmCi19Ci0jZW5kaWYKLS8vIHNhbWUgYWdhaW4gZm9yIF9faW50MTI4OgotI2lmIGRlZmluZWQoTkROQk9PU1RfSEFTX0lOVDEyOCkgJiYgZGVmaW5lZChfX2NwbHVzcGx1cykKLW5hbWVzcGFjZSBuZG5ib29zdHsKLSMgIGlmZGVmIF9fR05VQ19fCi0gICBfX2V4dGVuc2lvbl9fIHR5cGVkZWYgX19pbnQxMjggaW50MTI4X3R5cGU7Ci0gICBfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgX19pbnQxMjggdWludDEyOF90eXBlOwotIyAgZWxzZQotICAgdHlwZWRlZiBfX2ludDEyOCBpbnQxMjhfdHlwZTsKLSAgIHR5cGVkZWYgdW5zaWduZWQgX19pbnQxMjggdWludDEyOF90eXBlOwotIyAgZW5kaWYKLX0KLSNlbmRpZgotCi0vLyBORE5CT09TVF9bQVBQRU5EX11FWFBMSUNJVF9URU1QTEFURV9bTk9OX11UWVBFIG1hY3JvcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0vLwotLy8gU29tZSBjb21waWxlcnMgaGF2ZSBwcm9ibGVtcyB3aXRoIGZ1bmN0aW9uIHRlbXBsYXRlcyB3aG9zZSB0ZW1wbGF0ZQotLy8gcGFyYW1ldGVycyBkb24ndCBhcHBlYXIgaW4gdGhlIGZ1bmN0aW9uIHBhcmFtZXRlciBsaXN0IChiYXNpY2FsbHkKLS8vIHRoZXkganVzdCBsaW5rIG9uZSBpbnN0YW50aWF0aW9uIG9mIHRoZSB0ZW1wbGF0ZSBpbiB0aGUgZmluYWwKLS8vIGV4ZWN1dGFibGUpLiBUaGVzZSBtYWNyb3MgcHJvdmlkZSBhIHVuaWZvcm0gd2F5IHRvIGNvcGUgd2l0aCB0aGUKLS8vIHByb2JsZW0gd2l0aCBubyBlZmZlY3RzIG9uIHRoZSBjYWxsaW5nIHN5bnRheC4KLQotLy8gRXhhbXBsZToKLS8vCi0vLyAgI2luY2x1ZGUgPGlvc3RyZWFtPgotLy8gICNpbmNsdWRlIDxvc3RyZWFtPgotLy8gICNpbmNsdWRlIDx0eXBlaW5mbz4KLS8vCi0vLyAgdGVtcGxhdGUgPGludCBuPgotLy8gIHZvaWQgZigpIHsgc3RkOjpjb3V0IDw8IG4gPDwgJyAnOyB9Ci0vLwotLy8gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotLy8gIHZvaWQgZygpIHsgc3RkOjpjb3V0IDw8IHR5cGVpZChUKS5uYW1lKCkgPDwgJyAnOyB9Ci0vLwotLy8gIGludCBtYWluKCkgewotLy8gICAgZjwxPigpOwotLy8gICAgZjwyPigpOwotLy8KLS8vICAgIGc8aW50PigpOwotLy8gICAgZzxkb3VibGU+KCk7Ci0vLyAgfQotLy8KLS8vIFdpdGggVkMrKyA2LjAgdGhlIG91dHB1dCBpczoKLS8vCi0vLyAgIDIgMiBkb3VibGUgZG91YmxlCi0vLwotLy8gVG8gZml4IGl0LCB3cml0ZQotLy8KLS8vICAgdGVtcGxhdGUgPGludCBuPgotLy8gICB2b2lkIGYoTkROQk9PU1RfRVhQTElDSVRfVEVNUExBVEVfTk9OX1RZUEUoaW50LCBuKSkgeyAuLi4gfQotLy8KLS8vICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0vLyAgIHZvaWQgZyhORE5CT09TVF9FWFBMSUNJVF9URU1QTEFURV9UWVBFKFQpKSB7IC4uLiB9Ci0vLwotCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0VYUExJQ0lUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1VNRU5UUykgJiYgZGVmaW5lZChfX2NwbHVzcGx1cykKLQotIyAgaW5jbHVkZSAibmRuYm9vc3QvdHlwZS5ocHAiCi0jICBpbmNsdWRlICJuZG5ib29zdC9ub25fdHlwZS5ocHAiCi0KLSMgIGRlZmluZSBORE5CT09TVF9FWFBMSUNJVF9URU1QTEFURV9UWVBFKHQpICAgICAgICAgICAgICBuZG5ib29zdDo6dHlwZTx0PiogPSAwCi0jICBkZWZpbmUgTkROQk9PU1RfRVhQTElDSVRfVEVNUExBVEVfVFlQRV9TUEVDKHQpICAgICAgICAgbmRuYm9vc3Q6OnR5cGU8dD4qCi0jICBkZWZpbmUgTkROQk9PU1RfRVhQTElDSVRfVEVNUExBVEVfTk9OX1RZUEUodCwgdikgICAgICAgbmRuYm9vc3Q6Om5vbl90eXBlPHQsIHY+KiA9IDAKLSMgIGRlZmluZSBORE5CT09TVF9FWFBMSUNJVF9URU1QTEFURV9OT05fVFlQRV9TUEVDKHQsIHYpICBuZG5ib29zdDo6bm9uX3R5cGU8dCwgdj4qCi0KLSMgIGRlZmluZSBORE5CT09TVF9BUFBFTkRfRVhQTElDSVRfVEVNUExBVEVfVFlQRSh0KSAgICAgICAgXAotICAgICAgICAgICAgICwgTkROQk9PU1RfRVhQTElDSVRfVEVNUExBVEVfVFlQRSh0KQotIyAgZGVmaW5lIE5ETkJPT1NUX0FQUEVORF9FWFBMSUNJVF9URU1QTEFURV9UWVBFX1NQRUModCkgICBcCi0gICAgICAgICAgICAgLCBORE5CT09TVF9FWFBMSUNJVF9URU1QTEFURV9UWVBFX1NQRUModCkKLSMgIGRlZmluZSBORE5CT09TVF9BUFBFTkRfRVhQTElDSVRfVEVNUExBVEVfTk9OX1RZUEUodCwgdikgXAotICAgICAgICAgICAgICwgTkROQk9PU1RfRVhQTElDSVRfVEVNUExBVEVfTk9OX1RZUEUodCwgdikKLSMgIGRlZmluZSBORE5CT09TVF9BUFBFTkRfRVhQTElDSVRfVEVNUExBVEVfTk9OX1RZUEVfU1BFQyh0LCB2KSAgICBcCi0gICAgICAgICAgICAgLCBORE5CT09TVF9FWFBMSUNJVF9URU1QTEFURV9OT05fVFlQRV9TUEVDKHQsIHYpCi0KLSNlbHNlCi0KLS8vIG5vIHdvcmthcm91bmQgbmVlZGVkOiBleHBhbmQgdG8gbm90aGluZwotCi0jICBkZWZpbmUgTkROQk9PU1RfRVhQTElDSVRfVEVNUExBVEVfVFlQRSh0KQotIyAgZGVmaW5lIE5ETkJPT1NUX0VYUExJQ0lUX1RFTVBMQVRFX1RZUEVfU1BFQyh0KQotIyAgZGVmaW5lIE5ETkJPT1NUX0VYUExJQ0lUX1RFTVBMQVRFX05PTl9UWVBFKHQsIHYpCi0jICBkZWZpbmUgTkROQk9PU1RfRVhQTElDSVRfVEVNUExBVEVfTk9OX1RZUEVfU1BFQyh0LCB2KQotCi0jICBkZWZpbmUgTkROQk9PU1RfQVBQRU5EX0VYUExJQ0lUX1RFTVBMQVRFX1RZUEUodCkKLSMgIGRlZmluZSBORE5CT09TVF9BUFBFTkRfRVhQTElDSVRfVEVNUExBVEVfVFlQRV9TUEVDKHQpCi0jICBkZWZpbmUgTkROQk9PU1RfQVBQRU5EX0VYUExJQ0lUX1RFTVBMQVRFX05PTl9UWVBFKHQsIHYpCi0jICBkZWZpbmUgTkROQk9PU1RfQVBQRU5EX0VYUExJQ0lUX1RFTVBMQVRFX05PTl9UWVBFX1NQRUModCwgdikKLQotCi0jZW5kaWYgLy8gZGVmaW5lZCBORE5CT09TVF9OT19FWFBMSUNJVF9GVU5DVElPTl9URU1QTEFURV9BUkdVTUVOVFMKLQotLy8gV2hlbiBORE5CT09TVF9OT19TVERfVFlQRUlORk8gaXMgZGVmaW5lZCwgd2UgY2FuIGp1c3QgaW1wb3J0Ci0vLyB0aGUgZ2xvYmFsIGRlZmluaXRpb24gaW50byBzdGQgbmFtZXNwYWNlOgotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REX1RZUEVJTkZPKSAmJiBkZWZpbmVkKF9fY3BsdXNwbHVzKQotI2luY2x1ZGUgPHR5cGVpbmZvPgotbmFtZXNwYWNlIHN0ZHsgdXNpbmcgOjp0eXBlX2luZm87IH0KLSNlbmRpZgotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLwotLy8gSGVscGVyIG1hY3JvIE5ETkJPT1NUX1NUUklOR0laRToKLS8vIENvbnZlcnRzIHRoZSBwYXJhbWV0ZXIgWCB0byBhIHN0cmluZyBhZnRlciBtYWNybyByZXBsYWNlbWVudAotLy8gb24gWCBoYXMgYmVlbiBwZXJmb3JtZWQuCi0vLwotI2RlZmluZSBORE5CT09TVF9TVFJJTkdJWkUoWCkgTkROQk9PU1RfRE9fU1RSSU5HSVpFKFgpCi0jZGVmaW5lIE5ETkJPT1NUX0RPX1NUUklOR0laRShYKSAjWAotCi0vLwotLy8gSGVscGVyIG1hY3JvIE5ETkJPT1NUX0pPSU46Ci0vLyBUaGUgZm9sbG93aW5nIHBpZWNlIG9mIG1hY3JvIG1hZ2ljIGpvaW5zIHRoZSB0d28KLS8vIGFyZ3VtZW50cyB0b2dldGhlciwgZXZlbiB3aGVuIG9uZSBvZiB0aGUgYXJndW1lbnRzIGlzCi0vLyBpdHNlbGYgYSBtYWNybyAoc2VlIDE2LjMuMSBpbiBDKysgc3RhbmRhcmQpLiAgVGhlIGtleQotLy8gaXMgdGhhdCBtYWNybyBleHBhbnNpb24gb2YgbWFjcm8gYXJndW1lbnRzIGRvZXMgbm90Ci0vLyBvY2N1ciBpbiBORE5CT09TVF9ET19KT0lOMiBidXQgZG9lcyBpbiBORE5CT09TVF9ET19KT0lOLgotLy8KLSNkZWZpbmUgTkROQk9PU1RfSk9JTiggWCwgWSApIE5ETkJPT1NUX0RPX0pPSU4oIFgsIFkgKQotI2RlZmluZSBORE5CT09TVF9ET19KT0lOKCBYLCBZICkgTkROQk9PU1RfRE9fSk9JTjIoWCxZKQotI2RlZmluZSBORE5CT09TVF9ET19KT0lOMiggWCwgWSApIFgjI1kKLQotLy8KLS8vIFNldCBzb21lIGRlZmF1bHQgdmFsdWVzIGZvciBjb21waWxlci9saWJyYXJ5L3BsYXRmb3JtIG5hbWVzLgotLy8gVGhlc2UgYXJlIGZvciBkZWJ1Z2dpbmcgY29uZmlnIHNldHVwIG9ubHk6Ci0vLwotIyAgaWZuZGVmIE5ETkJPT1NUX0NPTVBJTEVSCi0jICAgICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVIgIlVua25vd24gSVNPIEMrKyBDb21waWxlciIKLSMgIGVuZGlmCi0jICBpZm5kZWYgTkROQk9PU1RfU1RETElCCi0jICAgICBkZWZpbmUgTkROQk9PU1RfU1RETElCICJVbmtub3duIElTTyBzdGFuZGFyZCBsaWJyYXJ5IgotIyAgZW5kaWYKLSMgIGlmbmRlZiBORE5CT09TVF9QTEFURk9STQotIyAgICAgaWYgZGVmaW5lZCh1bml4KSB8fCBkZWZpbmVkKF9fdW5peCkgfHwgZGVmaW5lZChfWE9QRU5fU09VUkNFKSBcCi0gICAgICAgICB8fCBkZWZpbmVkKF9QT1NJWF9TT1VSQ0UpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUExBVEZPUk0gIkdlbmVyaWMgVW5peCIKLSMgICAgIGVsc2UKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QTEFURk9STSAiVW5rbm93biIKLSMgICAgIGVuZGlmCi0jICBlbmRpZgotCi0vLwotLy8gU2V0IHNvbWUgZGVmYXVsdCB2YWx1ZXMgR1BVIHN1cHBvcnQKLS8vCi0jICBpZm5kZWYgTkROQk9PU1RfR1BVX0VOQUJMRUQKLSMgIGRlZmluZSBORE5CT09TVF9HUFVfRU5BQkxFRCAKLSMgIGVuZGlmCi0KLS8vIE5ETkJPT1NUX0ZPUkNFSU5MSU5FIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0vLyBNYWNybyB0byB1c2UgaW4gcGxhY2Ugb2YgJ2lubGluZScgdG8gZm9yY2UgYSBmdW5jdGlvbiB0byBiZSBpbmxpbmUKLSNpZiAhZGVmaW5lZChORE5CT09TVF9GT1JDRUlOTElORSkKLSMgIGlmIGRlZmluZWQoX01TQ19WRVIpCi0jICAgIGRlZmluZSBORE5CT09TVF9GT1JDRUlOTElORSBfX2ZvcmNlaW5saW5lCi0jICBlbGlmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID4gMwotICAgICAvLyBDbGFuZyBhbHNvIGRlZmluZXMgX19HTlVDX18gKGFzIDQpCi0jICAgIGRlZmluZSBORE5CT09TVF9GT1JDRUlOTElORSBpbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fYWx3YXlzX2lubGluZV9fKSkKLSMgIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZPUkNFSU5MSU5FIGlubGluZQotIyAgZW5kaWYKLSNlbmRpZgotCi0vLwotLy8gU2V0IE5ETkJPT1NUX05PX0RFQ0xUWVBFX04zMjc2IHdoZW4gTkROQk9PU1RfTk9fREVDTFRZUEUgaXMgZGVmaW5lZAotLy8KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRV9OMzI3NikKLSNkZWZpbmUJTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEVfTjMyNzYgTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEUKLSNlbmRpZgotCi0vLyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0gRGVwcmVjYXRlZCBtYWNyb3MgZm9yIDEuNTAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyAgVGhlc2Ugd2lsbCBnbyBhd2F5IGluIGEgZnV0dXJlIHJlbGVhc2UKLQotLy8gIFVzZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVU5PUkRFUkVEX1NFVCBvciBORE5CT09TVF9OT19DWFgxMV9IRFJfVU5PUkRFUkVEX01BUAotLy8gICAgICAgICAgIGluc3RlYWQgb2YgTkROQk9PU1RfTk9fU1REX1VOT1JERVJFRAotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX1VOT1JERVJFRF9NQVApIHx8IGRlZmluZWQgKE5ETkJPT1NUX05PX0NYWDExX0hEUl9VTk9SREVSRURfU0VUKQotIyBpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfU1REX1VOT1JERVJFRAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NURF9VTk9SREVSRUQKLSMgZW5kaWYKLSNlbmRpZgotCi0vLyAgVXNlIE5ETkJPT1NUX05PX0NYWDExX0hEUl9JTklUSUFMSVpFUl9MSVNUIGluc3RlYWQgb2YgTkROQk9PU1RfTk9fSU5JVElBTElaRVJfTElTVFMKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9JTklUSUFMSVpFUl9MSVNUKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19JTklUSUFMSVpFUl9MSVNUUykKLSMgIGRlZmluZSBORE5CT09TVF9OT19JTklUSUFMSVpFUl9MSVNUUwotI2VuZGlmCi0KLS8vICBVc2UgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0FSUkFZIGluc3RlYWQgb2YgTkROQk9PU1RfTk9fMFhfSERSX0FSUkFZCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfQVJSQVkpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PXzBYX0hEUl9BUlJBWSkKLSMgIGRlZmluZSBORE5CT09TVF9OT18wWF9IRFJfQVJSQVkKLSNlbmRpZgotLy8gIFVzZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQ0hST05PIGluc3RlYWQgb2YgTkROQk9PU1RfTk9fMFhfSERSX0NIUk9OTwotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NIUk9OTykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fMFhfSERSX0NIUk9OTykKLSMgIGRlZmluZSBORE5CT09TVF9OT18wWF9IRFJfQ0hST05PCi0jZW5kaWYKLS8vICBVc2UgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NPREVDVlQgaW5zdGVhZCBvZiBORE5CT09TVF9OT18wWF9IRFJfQ09ERUNWVAotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NPREVDVlQpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PXzBYX0hEUl9DT0RFQ1ZUKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PXzBYX0hEUl9DT0RFQ1ZUCi0jZW5kaWYKLS8vICBVc2UgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NPTkRJVElPTl9WQVJJQUJMRSBpbnN0ZWFkIG9mIE5ETkJPT1NUX05PXzBYX0hEUl9DT05ESVRJT05fVkFSSUFCTEUKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9DT05ESVRJT05fVkFSSUFCTEUpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PXzBYX0hEUl9DT05ESVRJT05fVkFSSUFCTEUpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fMFhfSERSX0NPTkRJVElPTl9WQVJJQUJMRQotI2VuZGlmCi0vLyAgVXNlIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GT1JXQVJEX0xJU1QgaW5zdGVhZCBvZiBORE5CT09TVF9OT18wWF9IRFJfRk9SV0FSRF9MSVNUCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfRk9SV0FSRF9MSVNUKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT18wWF9IRFJfRk9SV0FSRF9MSVNUKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PXzBYX0hEUl9GT1JXQVJEX0xJU1QKLSNlbmRpZgotLy8gIFVzZSBORE5CT09TVF9OT19DWFgxMV9IRFJfRlVUVVJFIGluc3RlYWQgb2YgTkROQk9PU1RfTk9fMFhfSERSX0ZVVFVSRQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX0ZVVFVSRSkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fMFhfSERSX0ZVVFVSRSkKLSMgIGRlZmluZSBORE5CT09TVF9OT18wWF9IRFJfRlVUVVJFCi0jZW5kaWYKLQotLy8gIFVzZSBORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVCAKLS8vICBpbnN0ZWFkIG9mIE5ETkJPT1NUX05PXzBYX0hEUl9JTklUSUFMSVpFUl9MSVNUIG9yIE5ETkJPT1NUX05PX0lOSVRJQUxJWkVSX0xJU1RTCi0jaWZkZWYgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QKLSMgaWZuZGVmIE5ETkJPT1NUX05PXzBYX0hEUl9JTklUSUFMSVpFUl9MSVNUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fMFhfSERSX0lOSVRJQUxJWkVSX0xJU1QKLSMgZW5kaWYKLSMgaWZuZGVmIE5ETkJPT1NUX05PX0lOSVRJQUxJWkVSX0xJU1RTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fSU5JVElBTElaRVJfTElTVFMKLSMgZW5kaWYKLSNlbmRpZgotCi0vLyAgVXNlIE5ETkJPT1NUX05PX0NYWDExX0hEUl9NVVRFWCBpbnN0ZWFkIG9mIE5ETkJPT1NUX05PXzBYX0hEUl9NVVRFWAotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX01VVEVYKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT18wWF9IRFJfTVVURVgpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fMFhfSERSX01VVEVYCi0jZW5kaWYKLS8vICBVc2UgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1JBTkRPTSBpbnN0ZWFkIG9mIE5ETkJPT1NUX05PXzBYX0hEUl9SQU5ET00KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9SQU5ET00pICYmICFkZWZpbmVkKE5ETkJPT1NUX05PXzBYX0hEUl9SQU5ET00pCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fMFhfSERSX1JBTkRPTQotI2VuZGlmCi0vLyAgVXNlIE5ETkJPT1NUX05PX0NYWDExX0hEUl9SQVRJTyBpbnN0ZWFkIG9mIE5ETkJPT1NUX05PXzBYX0hEUl9SQVRJTwotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX1JBVElPKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT18wWF9IRFJfUkFUSU8pCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fMFhfSERSX1JBVElPCi0jZW5kaWYKLS8vICBVc2UgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1JFR0VYIGluc3RlYWQgb2YgTkROQk9PU1RfTk9fMFhfSERSX1JFR0VYCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfUkVHRVgpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PXzBYX0hEUl9SRUdFWCkKLSMgIGRlZmluZSBORE5CT09TVF9OT18wWF9IRFJfUkVHRVgKLSNlbmRpZgotLy8gIFVzZSBORE5CT09TVF9OT19DWFgxMV9IRFJfU1lTVEVNX0VSUk9SIGluc3RlYWQgb2YgTkROQk9PU1RfTk9fMFhfSERSX1NZU1RFTV9FUlJPUgotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX1NZU1RFTV9FUlJPUikgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fMFhfSERSX1NZU1RFTV9FUlJPUikKLSMgIGRlZmluZSBORE5CT09TVF9OT18wWF9IRFJfU1lTVEVNX0VSUk9SCi0jZW5kaWYKLS8vICBVc2UgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RIUkVBRCBpbnN0ZWFkIG9mIE5ETkJPT1NUX05PXzBYX0hEUl9USFJFQUQKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9USFJFQUQpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PXzBYX0hEUl9USFJFQUQpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fMFhfSERSX1RIUkVBRAotI2VuZGlmCi0vLyAgVXNlIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UVVBMRSBpbnN0ZWFkIG9mIE5ETkJPT1NUX05PXzBYX0hEUl9UVVBMRQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RVUExFKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT18wWF9IRFJfVFVQTEUpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fMFhfSERSX1RVUExFCi0jZW5kaWYKLS8vICBVc2UgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RZUEVfVFJBSVRTIGluc3RlYWQgb2YgTkROQk9PU1RfTk9fMFhfSERSX1RZUEVfVFJBSVRTCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfVFlQRV9UUkFJVFMpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PXzBYX0hEUl9UWVBFX1RSQUlUUykKLSMgIGRlZmluZSBORE5CT09TVF9OT18wWF9IRFJfVFlQRV9UUkFJVFMKLSNlbmRpZgotLy8gIFVzZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVFlQRUlOREVYIGluc3RlYWQgb2YgTkROQk9PU1RfTk9fMFhfSERSX1RZUEVJTkRFWAotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RZUEVJTkRFWCkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fMFhfSERSX1RZUEVJTkRFWCkKLSMgIGRlZmluZSBORE5CT09TVF9OT18wWF9IRFJfVFlQRUlOREVYCi0jZW5kaWYKLS8vICBVc2UgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1VOT1JERVJFRF9NQVAgaW5zdGVhZCBvZiBORE5CT09TVF9OT18wWF9IRFJfVU5PUkRFUkVEX01BUAotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX1VOT1JERVJFRF9NQVApICYmICFkZWZpbmVkKE5ETkJPT1NUX05PXzBYX0hEUl9VTk9SREVSRURfTUFQKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PXzBYX0hEUl9VTk9SREVSRURfTUFQCi0jZW5kaWYKLS8vICBVc2UgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1VOT1JERVJFRF9TRVQgaW5zdGVhZCBvZiBORE5CT09TVF9OT18wWF9IRFJfVU5PUkRFUkVEX1NFVAotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX1VOT1JERVJFRF9TRVQpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PXzBYX0hEUl9VTk9SREVSRURfU0VUKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PXzBYX0hEUl9VTk9SREVSRURfU0VUCi0jZW5kaWYKLQotLy8gIC0tLS0tLS0tLS0tLS0tLS0tLSBFbmQgb2YgZGVwcmVjYXRlZCBtYWNyb3MgZm9yIDEuNTAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vICAtLS0tLS0tLS0tLS0tLS0tLS0tLSBEZXByZWNhdGVkIG1hY3JvcyBmb3IgMS41MSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vICBUaGVzZSB3aWxsIGdvIGF3YXkgaW4gYSBmdXR1cmUgcmVsZWFzZQotCi0vLyAgVXNlICAgICBORE5CT09TVF9OT19DWFgxMV9BVVRPX0RFQ0xBUkFUSU9OUyBpbnN0ZWFkIG9mICAgTkROQk9PU1RfTk9fQVVUT19ERUNMQVJBVElPTlMKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0FVVE9fREVDTEFSQVRJT05TKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19BVVRPX0RFQ0xBUkFUSU9OUykKLSMgIGRlZmluZSBORE5CT09TVF9OT19BVVRPX0RFQ0xBUkFUSU9OUwotI2VuZGlmCi0vLyAgVXNlICAgICBORE5CT09TVF9OT19DWFgxMV9BVVRPX01VTFRJREVDTEFSQVRJT05TIGluc3RlYWQgb2YgICBORE5CT09TVF9OT19BVVRPX01VTFRJREVDTEFSQVRJT05TCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9BVVRPX01VTFRJREVDTEFSQVRJT05TKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19BVVRPX01VTFRJREVDTEFSQVRJT05TKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0FVVE9fTVVMVElERUNMQVJBVElPTlMKLSNlbmRpZgotLy8gIFVzZSAgICAgTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjE2X1QgaW5zdGVhZCBvZiAgIE5ETkJPT1NUX05PX0NIQVIxNl9UCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9DSEFSMTZfVCkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ0hBUjE2X1QpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ0hBUjE2X1QKLSNlbmRpZgotLy8gIFVzZSAgICAgTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjMyX1QgaW5zdGVhZCBvZiAgIE5ETkJPT1NUX05PX0NIQVIzMl9UCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9DSEFSMzJfVCkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ0hBUjMyX1QpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ0hBUjMyX1QKLSNlbmRpZgotLy8gIFVzZSAgICAgTkROQk9PU1RfTk9fQ1hYMTFfVEVNUExBVEVfQUxJQVNFUyBpbnN0ZWFkIG9mICAgTkROQk9PU1RfTk9fVEVNUExBVEVfQUxJQVNFUwotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVEVNUExBVEVfQUxJQVNFUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfQUxJQVNFUykKLSMgIGRlZmluZSBORE5CT09TVF9OT19URU1QTEFURV9BTElBU0VTCi0jZW5kaWYKLS8vICBVc2UgICAgIE5ETkJPT1NUX05PX0NYWDExX0NPTlNURVhQUiBpbnN0ZWFkIG9mICAgTkROQk9PU1RfTk9fQ09OU1RFWFBSCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9DT05TVEVYUFIpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NPTlNURVhQUikKLSMgIGRlZmluZSBORE5CT09TVF9OT19DT05TVEVYUFIKLSNlbmRpZgotLy8gIFVzZSAgICAgTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEVfTjMyNzYgaW5zdGVhZCBvZiAgIE5ETkJPT1NUX05PX0RFQ0xUWVBFX04zMjc2Ci0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRV9OMzI3NikgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fREVDTFRZUEVfTjMyNzYpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fREVDTFRZUEVfTjMyNzYKLSNlbmRpZgotLy8gIFVzZSAgICAgTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEUgaW5zdGVhZCBvZiAgIE5ETkJPT1NUX05PX0RFQ0xUWVBFCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRSkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fREVDTFRZUEUpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fREVDTFRZUEUKLSNlbmRpZgotLy8gIFVzZSAgICAgTkROQk9PU1RfTk9fQ1hYMTFfREVGQVVMVEVEX0ZVTkNUSU9OUyBpbnN0ZWFkIG9mICAgTkROQk9PU1RfTk9fREVGQVVMVEVEX0ZVTkNUSU9OUwotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfREVGQVVMVEVEX0ZVTkNUSU9OUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fREVGQVVMVEVEX0ZVTkNUSU9OUykKLSMgIGRlZmluZSBORE5CT09TVF9OT19ERUZBVUxURURfRlVOQ1RJT05TCi0jZW5kaWYKLS8vICBVc2UgICAgIE5ETkJPT1NUX05PX0NYWDExX0RFTEVURURfRlVOQ1RJT05TIGluc3RlYWQgb2YgICBORE5CT09TVF9OT19ERUxFVEVEX0ZVTkNUSU9OUwotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfREVMRVRFRF9GVU5DVElPTlMpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0RFTEVURURfRlVOQ1RJT05TKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0RFTEVURURfRlVOQ1RJT05TCi0jZW5kaWYKLS8vICBVc2UgICAgIE5ETkJPT1NUX05PX0NYWDExX0VYUExJQ0lUX0NPTlZFUlNJT05fT1BFUkFUT1JTIGluc3RlYWQgb2YgICBORE5CT09TVF9OT19FWFBMSUNJVF9DT05WRVJTSU9OX09QRVJBVE9SUwotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfRVhQTElDSVRfQ09OVkVSU0lPTl9PUEVSQVRPUlMpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0VYUExJQ0lUX0NPTlZFUlNJT05fT1BFUkFUT1JTKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0VYUExJQ0lUX0NPTlZFUlNJT05fT1BFUkFUT1JTCi0jZW5kaWYKLS8vICBVc2UgICAgIE5ETkJPT1NUX05PX0NYWDExX0VYVEVSTl9URU1QTEFURSBpbnN0ZWFkIG9mICAgTkROQk9PU1RfTk9fRVhURVJOX1RFTVBMQVRFCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9FWFRFUk5fVEVNUExBVEUpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0VYVEVSTl9URU1QTEFURSkKLSMgIGRlZmluZSBORE5CT09TVF9OT19FWFRFUk5fVEVNUExBVEUKLSNlbmRpZgotLy8gIFVzZSAgICAgTkROQk9PU1RfTk9fQ1hYMTFfRlVOQ1RJT05fVEVNUExBVEVfREVGQVVMVF9BUkdTIGluc3RlYWQgb2YgICBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9ERUZBVUxUX0FSR1MKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0ZVTkNUSU9OX1RFTVBMQVRFX0RFRkFVTFRfQVJHUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfREVGQVVMVF9BUkdTKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX0RFRkFVTFRfQVJHUwotI2VuZGlmCi0vLyAgVXNlICAgICBORE5CT09TVF9OT19DWFgxMV9MQU1CREFTIGluc3RlYWQgb2YgICBORE5CT09TVF9OT19MQU1CREFTCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9MQU1CREFTKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19MQU1CREFTKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0xBTUJEQVMKLSNlbmRpZgotLy8gIFVzZSAgICAgTkROQk9PU1RfTk9fQ1hYMTFfTE9DQUxfQ0xBU1NfVEVNUExBVEVfUEFSQU1FVEVSUyBpbnN0ZWFkIG9mICAgTkROQk9PU1RfTk9fTE9DQUxfQ0xBU1NfVEVNUExBVEVfUEFSQU1FVEVSUwotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfTE9DQUxfQ0xBU1NfVEVNUExBVEVfUEFSQU1FVEVSUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fTE9DQUxfQ0xBU1NfVEVNUExBVEVfUEFSQU1FVEVSUykKLSMgIGRlZmluZSBORE5CT09TVF9OT19MT0NBTF9DTEFTU19URU1QTEFURV9QQVJBTUVURVJTCi0jZW5kaWYKLS8vICBVc2UgICAgIE5ETkJPT1NUX05PX0NYWDExX05PRVhDRVBUIGluc3RlYWQgb2YgICBORE5CT09TVF9OT19OT0VYQ0VQVAotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfTk9FWENFUFQpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX05PRVhDRVBUKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX05PRVhDRVBUCi0jZW5kaWYKLS8vICBVc2UgICAgIE5ETkJPT1NUX05PX0NYWDExX05VTExQVFIgaW5zdGVhZCBvZiAgIE5ETkJPT1NUX05PX05VTExQVFIKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX05VTExQVFIpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX05VTExQVFIpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fTlVMTFBUUgotI2VuZGlmCi0vLyAgVXNlICAgICBORE5CT09TVF9OT19DWFgxMV9SQVdfTElURVJBTFMgaW5zdGVhZCBvZiAgIE5ETkJPT1NUX05PX1JBV19MSVRFUkFMUwotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfUkFXX0xJVEVSQUxTKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19SQVdfTElURVJBTFMpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fUkFXX0xJVEVSQUxTCi0jZW5kaWYKLS8vICBVc2UgICAgIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTIGluc3RlYWQgb2YgICBORE5CT09TVF9OT19SVkFMVUVfUkVGRVJFTkNFUwotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1JWQUxVRV9SRUZFUkVOQ0VTKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1JWQUxVRV9SRUZFUkVOQ0VTCi0jZW5kaWYKLS8vICBVc2UgICAgIE5ETkJPT1NUX05PX0NYWDExX1NDT1BFRF9FTlVNUyBpbnN0ZWFkIG9mICAgTkROQk9PU1RfTk9fU0NPUEVEX0VOVU1TCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9TQ09QRURfRU5VTVMpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NDT1BFRF9FTlVNUykKLSMgIGRlZmluZSBORE5CT09TVF9OT19TQ09QRURfRU5VTVMKLSNlbmRpZgotLy8gIFVzZSAgICAgTkROQk9PU1RfTk9fQ1hYMTFfU1RBVElDX0FTU0VSVCBpbnN0ZWFkIG9mICAgTkROQk9PU1RfTk9fU1RBVElDX0FTU0VSVAotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfU1RBVElDX0FTU0VSVCkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fU1RBVElDX0FTU0VSVCkKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVEFUSUNfQVNTRVJUCi0jZW5kaWYKLS8vICBVc2UgICAgIE5ETkJPT1NUX05PX0NYWDExX1NURF9VTk9SREVSRUQgaW5zdGVhZCBvZiAgIE5ETkJPT1NUX05PX1NURF9VTk9SREVSRUQKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1NURF9VTk9SREVSRUQpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9VTk9SREVSRUQpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX1VOT1JERVJFRAotI2VuZGlmCi0vLyAgVXNlICAgICBORE5CT09TVF9OT19DWFgxMV9VTklDT0RFX0xJVEVSQUxTIGluc3RlYWQgb2YgICBORE5CT09TVF9OT19VTklDT0RFX0xJVEVSQUxTCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9VTklDT0RFX0xJVEVSQUxTKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19VTklDT0RFX0xJVEVSQUxTKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1VOSUNPREVfTElURVJBTFMKLSNlbmRpZgotLy8gIFVzZSAgICAgTkROQk9PU1RfTk9fQ1hYMTFfVU5JRklFRF9JTklUSUFMSVpBVElPTl9TWU5UQVggaW5zdGVhZCBvZiAgIE5ETkJPT1NUX05PX1VOSUZJRURfSU5JVElBTElaQVRJT05fU1lOVEFYCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9VTklGSUVEX0lOSVRJQUxJWkFUSU9OX1NZTlRBWCkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fVU5JRklFRF9JTklUSUFMSVpBVElPTl9TWU5UQVgpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fVU5JRklFRF9JTklUSUFMSVpBVElPTl9TWU5UQVgKLSNlbmRpZgotLy8gIFVzZSAgICAgTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTIGluc3RlYWQgb2YgICBORE5CT09TVF9OT19WQVJJQURJQ19URU1QTEFURVMKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fVkFSSUFESUNfVEVNUExBVEVTKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1ZBUklBRElDX1RFTVBMQVRFUwotI2VuZGlmCi0vLyAgVXNlICAgICBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19NQUNST1MgaW5zdGVhZCBvZiAgIE5ETkJPT1NUX05PX1ZBUklBRElDX01BQ1JPUwotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfTUFDUk9TKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19WQVJJQURJQ19NQUNST1MpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fVkFSSUFESUNfTUFDUk9TCi0jZW5kaWYKLS8vICBVc2UgICAgIE5ETkJPT1NUX05PX0NYWDExX05VTUVSSUNfTElNSVRTIGluc3RlYWQgb2YgICBORE5CT09TVF9OT19OVU1FUklDX0xJTUlUU19MT1dFU1QKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX05VTUVSSUNfTElNSVRTKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19OVU1FUklDX0xJTUlUU19MT1dFU1QpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fTlVNRVJJQ19MSU1JVFNfTE9XRVNUCi0jZW5kaWYKLS8vICAtLS0tLS0tLS0tLS0tLS0tLS0gRW5kIG9mIGRlcHJlY2F0ZWQgbWFjcm9zIGZvciAxLjUxIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0KLQotLy8KLS8vIEhlbHBlciBtYWNyb3MgTkROQk9PU1RfTk9FWENFUFQsIE5ETkJPT1NUX05PRVhDRVBUX0lGLCBORE5CT09TVF9OT0VYQ0VQVF9FWFBSCi0vLyBUaGVzZSBhaWQgdGhlIHRyYW5zaXRpb24gdG8gQysrMTEgd2hpbGUgc3RpbGwgc3VwcG9ydGluZyBDKyswMyBjb21waWxlcnMKLS8vCi0jaWZkZWYgTkROQk9PU1RfTk9fQ1hYMTFfTk9FWENFUFQKLSMgIGRlZmluZSBORE5CT09TVF9OT0VYQ0VQVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PRVhDRVBUX09SX05PVEhST1cgdGhyb3coKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PRVhDRVBUX0lGKFByZWRpY2F0ZSkKLSMgIGRlZmluZSBORE5CT09TVF9OT0VYQ0VQVF9FWFBSKEV4cHJlc3Npb24pIGZhbHNlCi0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX05PRVhDRVBUIG5vZXhjZXB0Ci0jICBkZWZpbmUgTkROQk9PU1RfTk9FWENFUFRfT1JfTk9USFJPVyBub2V4Y2VwdAotIyAgZGVmaW5lIE5ETkJPT1NUX05PRVhDRVBUX0lGKFByZWRpY2F0ZSkgbm9leGNlcHQoKFByZWRpY2F0ZSkpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9FWENFUFRfRVhQUihFeHByZXNzaW9uKSBub2V4Y2VwdCgoRXhwcmVzc2lvbikpCi0jZW5kaWYKLS8vCi0vLyBIZWxwZXIgbWFjcm8gTkROQk9PU1RfRkFMTFRIUk9VR0ggCi0vLyBGYWxsYmFjayBkZWZpbml0aW9uIG9mIE5ETkJPT1NUX0ZBTExUSFJPVUdIIG1hY3JvIHVzZWQgdG8gbWFyayBpbnRlbmRlZCAKLS8vIGZhbGwtdGhyb3VnaCBiZXR3ZWVuIGNhc2UgbGFiZWxzIGluIGEgc3dpdGNoIHN0YXRlbWVudC4gV2UgdXNlIGEgZGVmaW5pdGlvbiAKLS8vIHRoYXQgcmVxdWlyZXMgYSBzZW1pY29sb24gYWZ0ZXIgaXQgdG8gYXZvaWQgYXQgbGVhc3Qgb25lIHR5cGUgb2YgbWlzdXNlIGV2ZW4gCi0vLyBvbiB1bnN1cHBvcnRlZCBjb21waWxlcnMuIAotLy8gCi0jaWZuZGVmIE5ETkJPT1NUX0ZBTExUSFJPVUdIIAotIyAgZGVmaW5lIE5ETkJPT1NUX0ZBTExUSFJPVUdIICgodm9pZCkwKSAKLSNlbmRpZiAKLQotLy8KLS8vIGNvbnN0ZXhwciB3b3JrYXJvdW5kcwotLy8gCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9DT05TVEVYUFIpCi0jZGVmaW5lIE5ETkJPT1NUX0NPTlNURVhQUgotI2RlZmluZSBORE5CT09TVF9DT05TVEVYUFJfT1JfQ09OU1QgY29uc3QKLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX0NPTlNURVhQUiBjb25zdGV4cHIKLSNkZWZpbmUgTkROQk9PU1RfQ09OU1RFWFBSX09SX0NPTlNUIGNvbnN0ZXhwcgotI2VuZGlmCi0KLSNkZWZpbmUgTkROQk9PU1RfU1RBVElDX0NPTlNURVhQUiAgc3RhdGljIE5ETkJPT1NUX0NPTlNURVhQUl9PUl9DT05TVAotCi0vLwotLy8gU2V0IE5ETkJPT1NUX0hBU19TVEFUSUNfQVNTRVJUIHdoZW4gTkROQk9PU1RfTk9fQ1hYMTFfU1RBVElDX0FTU0VSVCBpcyBub3QgZGVmaW5lZAotLy8KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9TVEFUSUNfQVNTRVJUKSAmJiAhZGVmaW5lZChORE5CT09TVF9IQVNfU1RBVElDX0FTU0VSVCkKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfU1RBVElDX0FTU0VSVAotI2VuZGlmCi0KLS8vCi0vLyBTZXQgTkROQk9PU1RfSEFTX1JWQUxVRV9SRUZTIHdoZW4gTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMgaXMgbm90IGRlZmluZWQKLS8vCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMpICYmICFkZWZpbmVkKE5ETkJPT1NUX0hBU19SVkFMVUVfUkVGUykKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1JWQUxVRV9SRUZTCi0jZW5kaWYKLQotLy8KLS8vIFNldCBORE5CT09TVF9IQVNfVkFSSUFESUNfVE1QTCB3aGVuIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUyBpcyBub3QgZGVmaW5lZAotLy8KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMpICYmICFkZWZpbmVkKE5ETkJPT1NUX0hBU19WQVJJQURJQ19UTVBMKQotI2RlZmluZSBORE5CT09TVF9IQVNfVkFSSUFESUNfVE1QTAotI2VuZGlmCi0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy91c2VyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3VzZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZTA2MDc1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3VzZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTI0ICswLDAgQEAKLS8vICBuZG5ib29zdC9jb25maWcvdXNlci5ocHAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAxLiAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBEbyBub3QgY2hlY2sgaW4gbW9kaWZpZWQgdmVyc2lvbnMgb2YgdGhpcyBmaWxlLAotLy8gIFRoaXMgZmlsZSBtYXkgYmUgY3VzdG9taXplZCBieSB0aGUgZW5kIHVzZXIsIGJ1dCBub3QgYnkgYm9vc3QuCi0KLS8vCi0vLyAgVXNlIHRoaXMgZmlsZSB0byBkZWZpbmUgYSBzaXRlIGFuZCBjb21waWxlciBzcGVjaWZpYwotLy8gIGNvbmZpZ3VyYXRpb24gcG9saWN5OgotLy8KLQotLy8gZGVmaW5lIHRoaXMgdG8gbG9jYXRlIGEgY29tcGlsZXIgY29uZmlnIGZpbGU6Ci0vLyAjZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX0NPTkZJRyA8bXloZWFkZXI+Ci0KLS8vIGRlZmluZSB0aGlzIHRvIGxvY2F0ZSBhIHN0ZGxpYiBjb25maWcgZmlsZToKLS8vICNkZWZpbmUgTkROQk9PU1RfU1RETElCX0NPTkZJRyAgIDxteWhlYWRlcj4KLQotLy8gZGVmaW5lIHRoaXMgdG8gbG9jYXRlIGEgcGxhdGZvcm0gY29uZmlnIGZpbGU6Ci0vLyAjZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNX0NPTkZJRyA8bXloZWFkZXI+Ci0KLS8vIGRlZmluZSB0aGlzIHRvIGRpc2FibGUgY29tcGlsZXIgY29uZmlnLAotLy8gdXNlIGlmIHlvdXIgY29tcGlsZXIgY29uZmlnIGhhcyBub3RoaW5nIHRvIHNldDoKLS8vICNkZWZpbmUgTkROQk9PU1RfTk9fQ09NUElMRVJfQ09ORklHCi0KLS8vIGRlZmluZSB0aGlzIHRvIGRpc2FibGUgc3RkbGliIGNvbmZpZywKLS8vIHVzZSBpZiB5b3VyIHN0ZGxpYiBjb25maWcgaGFzIG5vdGhpbmcgdG8gc2V0OgotLy8gI2RlZmluZSBORE5CT09TVF9OT19TVERMSUJfQ09ORklHCi0KLS8vIGRlZmluZSB0aGlzIHRvIGRpc2FibGUgcGxhdGZvcm0gY29uZmlnLAotLy8gdXNlIGlmIHlvdXIgcGxhdGZvcm0gY29uZmlnIGhhcyBub3RoaW5nIHRvIHNldDoKLS8vICNkZWZpbmUgTkROQk9PU1RfTk9fUExBVEZPUk1fQ09ORklHCi0KLS8vIGRlZmluZSB0aGlzIHRvIGRpc2FibGUgYWxsIGNvbmZpZyBvcHRpb25zLAotLy8gZXhjbHVkaW5nIHRoZSB1c2VyIGNvbmZpZy4gIFVzZSBpZiB5b3VyCi0vLyBzZXR1cCBpcyBmdWxseSBJU08gY29tcGxpYW50LCBhbmQgaGFzIG5vCi0vLyB1c2VmdWwgZXh0ZW5zaW9ucywgb3IgZm9yIGF1dG9jb25mIGdlbmVyYXRlZAotLy8gc2V0dXBzOgotLy8gI2RlZmluZSBORE5CT09TVF9OT19DT05GSUcKLQotLy8gZGVmaW5lIHRoaXMgdG8gbWFrZSB0aGUgY29uZmlnICJvcHRpbWlzdGljIgotLy8gYWJvdXQgdW5rbm93biBjb21waWxlciB2ZXJzaW9ucy4gIE5vcm1hbGx5Ci0vLyB1bmtub3duIGNvbXBpbGVyIHZlcnNpb25zIGFyZSBhc3N1bWVkIHRvIGhhdmUKLS8vIGFsbCB0aGUgZGVmZWN0cyBvZiB0aGUgbGFzdCBrbm93biB2ZXJzaW9uLCBob3dldmVyCi0vLyBzZXR0aW5nIHRoaXMgZmxhZywgY2F1c2VzIHRoZSBjb25maWcgdG8gYXNzdW1lCi0vLyB0aGF0IHVua25vd24gY29tcGlsZXIgdmVyc2lvbnMgYXJlIGZ1bGx5IGNvbmZvcm1hbnQKLS8vIHdpdGggdGhlIHN0YW5kYXJkOgotLy8gI2RlZmluZSBORE5CT09TVF9TVFJJQ1RfQ09ORklHCi0KLS8vIGRlZmluZSB0aGlzIHRvIGNhdXNlIHRoZSBjb25maWcgdG8gaGFsdCBjb21waWxhdGlvbgotLy8gd2l0aCBhbiAjZXJyb3IgaWYgaXQgZW5jb3VudGVycyBhbnl0aGluZyB1bmtub3duIC0tCi0vLyBlaXRoZXIgYW4gdW5rbm93biBjb21waWxlciB2ZXJzaW9uIG9yIGFuIHVua25vd24KLS8vIGNvbXBpbGVyL3BsYXRmb3JtL2xpYnJhcnk6Ci0vLyAjZGVmaW5lIE5ETkJPT1NUX0FTU0VSVF9DT05GSUcKLQotCi0vLyBkZWZpbmUgaWYgeW91IHdhbnQgdG8gZGlzYWJsZSB0aHJlYWRpbmcgc3VwcG9ydCwgZXZlbgotLy8gd2hlbiBhdmFpbGFibGU6Ci0vLyAjZGVmaW5lIE5ETkJPT1NUX0RJU0FCTEVfVEhSRUFEUwotCi0vLyBkZWZpbmUgd2hlbiB5b3Ugd2FudCB0byBkaXNhYmxlIFdpbjMyIHNwZWNpZmljIGZlYXR1cmVzCi0vLyBldmVuIHdoZW4gYXZhaWxhYmxlOgotLy8gI2RlZmluZSBORE5CT09TVF9ESVNBQkxFX1dJTjMyCi0KLS8vIE5ETkJPT1NUX0RJU0FCTEVfQUJJX0hFQURFUlM6IFN0b3BzIGJvb3N0IGhlYWRlcnMgZnJvbSBpbmNsdWRpbmcgYW55IAotLy8gcHJlZml4L3N1ZmZpeCBoZWFkZXJzIHRoYXQgbm9ybWFsbHkgY29udHJvbCB0aGluZ3MgbGlrZSBzdHJ1Y3QgCi0vLyBwYWNraW5nIGFuZCBhbGlnbm1lbnQuIAotLy8gI2RlZmluZSBORE5CT09TVF9ESVNBQkxFX0FCSV9IRUFERVJTCi0KLS8vIE5ETkJPT1NUX0FCSV9QUkVGSVg6IEEgcHJlZml4IGhlYWRlciB0byBpbmNsdWRlIGluIHBsYWNlIG9mIHdoYXRldmVyCi0vLyBib29zdC5jb25maWcgd291bGQgbm9ybWFsbHkgc2VsZWN0LCBhbnkgcmVwbGFjZW1lbnQgc2hvdWxkIHNldCB1cCAKLS8vIHN0cnVjdCBwYWNraW5nIGFuZCBhbGlnbm1lbnQgb3B0aW9ucyBhcyByZXF1aXJlZC4gCi0vLyAjZGVmaW5lIE5ETkJPT1NUX0FCSV9QUkVGSVggbXktaGVhZGVyLW5hbWUKLQotLy8gTkROQk9PU1RfQUJJX1NVRkZJWDogQSBzdWZmaXggaGVhZGVyIHRvIGluY2x1ZGUgaW4gcGxhY2Ugb2Ygd2hhdGV2ZXIgCi0vLyBib29zdC5jb25maWcgd291bGQgbm9ybWFsbHkgc2VsZWN0LCBhbnkgcmVwbGFjZW1lbnQgc2hvdWxkIHVuZG8gCi0vLyB0aGUgZWZmZWN0cyBvZiB0aGUgcHJlZml4IGhlYWRlci4gCi0vLyAjZGVmaW5lIE5ETkJPT1NUX0FCSV9TVUZGSVggbXktaGVhZGVyLW5hbWUKLQotLy8gTkROQk9PU1RfQUxMX0RZTl9MSU5LOiBGb3JjZXMgYWxsIGxpYnJhcmllcyB0aGF0IGhhdmUgc2VwYXJhdGUgc291cmNlLCAKLS8vIHRvIGJlIGxpbmtlZCBhcyBkbGwncyByYXRoZXIgdGhhbiBzdGF0aWMgbGlicmFyaWVzIG9uIE1pY3Jvc29mdCBXaW5kb3dzIAotLy8gKHRoaXMgbWFjcm8gaXMgdXNlZCB0byB0dXJuIG9uIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBtb2RpZmllcnMsIHNvIHRoYXQgCi0vLyB0aGUgY29tcGlsZXIga25vd3Mgd2hpY2ggc3ltYm9scyB0byBsb29rIGZvciBpbiBhIGRsbCByYXRoZXIgdGhhbiBpbiBhIAotLy8gc3RhdGljIGxpYnJhcnkpLiAgTm90ZSB0aGF0IHRoZXJlIG1heSBiZSBzb21lIGxpYnJhcmllcyB0aGF0IGNhbiBvbmx5IAotLy8gYmUgc3RhdGljYWxseSBsaW5rZWQgKEJvb3N0LlRlc3QgZm9yIGV4YW1wbGUpIGFuZCBvdGhlcnMgd2hpY2ggbWF5IG9ubHkgCi0vLyBiZSBkeW5hbWljYWxseSBsaW5rZWQgKEJvb3N0LlRocmVhZHMgZm9yIGV4YW1wbGUpLCBpbiB0aGVzZSBjYXNlcyB0aGlzIAotLy8gbWFjcm8gaGFzIG5vIGVmZmVjdC4KLS8vICNkZWZpbmUgTkROQk9PU1RfQUxMX0RZTl9MSU5LCi0gCi0vLyBORE5CT09TVF9XSEFURVZFUl9EWU5fTElOSzogRm9yY2VzIGxpYnJhcnkgIndoYXRldmVyIiB0byBiZSBsaW5rZWQgYXMgYSBkbGwgCi0vLyByYXRoZXIgdGhhbiBhIHN0YXRpYyBsaWJyYXJ5IG9uIE1pY3Jvc29mdCBXaW5kb3dzOiByZXBsYWNlIHRoZSBXSEFURVZFUiAKLS8vIHBhcnQgb2YgdGhlIG1hY3JvIG5hbWUgd2l0aCB0aGUgbmFtZSBvZiB0aGUgbGlicmFyeSB0aGF0IHlvdSB3YW50IHRvIAotLy8gZHluYW1pY2FsbHkgbGluayB0bywgZm9yIGV4YW1wbGUgdXNlIE5ETkJPT1NUX0RBVEVfVElNRV9EWU5fTElOSyBvciAKLS8vIE5ETkJPT1NUX1JFR0VYX0RZTl9MSU5LIGV0YyAodGhpcyBtYWNybyBpcyB1c2VkIHRvIHR1cm4gb24gX19kZWNsc3BlYyhkbGxpbXBvcnQpIAotLy8gbW9kaWZpZXJzLCBzbyB0aGF0IHRoZSBjb21waWxlciBrbm93cyB3aGljaCBzeW1ib2xzIHRvIGxvb2sgZm9yIGluIGEgZGxsIAotLy8gcmF0aGVyIHRoYW4gaW4gYSBzdGF0aWMgbGlicmFyeSkuICAKLS8vIE5vdGUgdGhhdCB0aGVyZSBtYXkgYmUgc29tZSBsaWJyYXJpZXMgdGhhdCBjYW4gb25seSBiZSBzdGF0aWNhbGx5IGxpbmtlZCAKLS8vIChCb29zdC5UZXN0IGZvciBleGFtcGxlKSBhbmQgb3RoZXJzIHdoaWNoIG1heSBvbmx5IGJlIGR5bmFtaWNhbGx5IGxpbmtlZCAKLS8vIChCb29zdC5UaHJlYWRzIGZvciBleGFtcGxlKSwgaW4gdGhlc2UgY2FzZXMgdGhpcyBtYWNybyBpcyB1bnN1cHBvcnRlZC4KLS8vICNkZWZpbmUgTkROQk9PU1RfV0hBVEVWRVJfRFlOX0xJTksKLSAKLS8vIE5ETkJPT1NUX0FMTF9OT19MSUI6IFRlbGxzIHRoZSBjb25maWcgc3lzdGVtIG5vdCB0byBhdXRvbWF0aWNhbGx5IHNlbGVjdCAKLS8vIHdoaWNoIGxpYnJhcmllcyB0byBsaW5rIGFnYWluc3QuICAKLS8vIE5vcm1hbGx5IGlmIGEgY29tcGlsZXIgc3VwcG9ydHMgI3ByYWdtYSBsaWIsIHRoZW4gdGhlIGNvcnJlY3QgbGlicmFyeSAKLS8vIGJ1aWxkIHZhcmlhbnQgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHNlbGVjdGVkIGFuZCBsaW5rZWQgYWdhaW5zdCwgCi0vLyBzaW1wbHkgYnkgdGhlIGFjdCBvZiBpbmNsdWRpbmcgb25lIG9mIHRoYXQgbGlicmFyeSdzIGhlYWRlcnMuICAKLS8vIFRoaXMgbWFjcm8gdHVybnMgdGhhdCBmZWF0dXJlIG9mZi4KLS8vICNkZWZpbmUgTkROQk9PU1RfQUxMX05PX0xJQgotIAotLy8gTkROQk9PU1RfV0hBVEVWRVJfTk9fTElCOiBUZWxscyB0aGUgY29uZmlnIHN5c3RlbSBub3QgdG8gYXV0b21hdGljYWxseSAKLS8vIHNlbGVjdCB3aGljaCBsaWJyYXJ5IHRvIGxpbmsgYWdhaW5zdCBmb3IgbGlicmFyeSAid2hhdGV2ZXIiLCAKLS8vIHJlcGxhY2UgV0hBVEVWRVIgaW4gdGhlIG1hY3JvIG5hbWUgd2l0aCB0aGUgbmFtZSBvZiB0aGUgbGlicmFyeTsgCi0vLyBmb3IgZXhhbXBsZSBORE5CT09TVF9EQVRFX1RJTUVfTk9fTElCIG9yIE5ETkJPT1NUX1JFR0VYX05PX0xJQi4gIAotLy8gTm9ybWFsbHkgaWYgYSBjb21waWxlciBzdXBwb3J0cyAjcHJhZ21hIGxpYiwgdGhlbiB0aGUgY29ycmVjdCBsaWJyYXJ5IAotLy8gYnVpbGQgdmFyaWFudCB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgc2VsZWN0ZWQgYW5kIGxpbmtlZCBhZ2FpbnN0LCBzaW1wbHkgCi0vLyBieSB0aGUgYWN0IG9mIGluY2x1ZGluZyBvbmUgb2YgdGhhdCBsaWJyYXJ5J3MgaGVhZGVycy4gIFRoaXMgbWFjcm8gdHVybnMgCi0vLyB0aGF0IGZlYXR1cmUgb2ZmLgotLy8gI2RlZmluZSBORE5CT09TVF9XSEFURVZFUl9OT19MSUIKLSAKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy93YXJuaW5nX2Rpc2FibGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvd2FybmluZ19kaXNhYmxlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWYzN2EwYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy93YXJuaW5nX2Rpc2FibGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLy8gIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwOAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyAgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gIFRoaXMgZmlsZSBleGlzdHMgdG8gdHVybiBvZmYgc29tZSBvdmVybHktcGVkYW50aWMgd2FybmluZyBlbWl0dGVkCi0vLyAgYnkgY2VydGFpbiBjb21waWxlcnMuICBZb3Ugc2hvdWxkIGluY2x1ZGUgdGhpcyBoZWFkZXIgb25seSBpbjoKLS8vCi0vLyAgKiBBIHRlc3QgY2FzZSwgYmVmb3JlIGFueSBvdGhlciBoZWFkZXJzLCBvciwKLS8vICAqIEEgbGlicmFyeSBzb3VyY2UgZmlsZSBiZWZvcmUgYW55IG90aGVyIGhlYWRlcnMuCi0vLwotLy8gIElUIFNIT1VMRCBOT1QgQkUgSU5DTFVERUQgQlkgQU5ZIEJPT1NUIEhFQURFUi4KLS8vCi0vLyAgWU9VIFNIT1VMRCBOT1QgSU5DTFVERSBJVCBJRiBZT1UgQ0FOIFJFQVNPTkFCTFkgRklYIFRIRSBXQVJOSU5HLgotLy8KLS8vICBUaGUgb25seSB3YXJuaW5ncyBkaXNhYmxlZCBoZXJlIGFyZSB0aG9zZSB0aGF0IGFyZToKLS8vCi0vLyAgKiBRdWl0ZSB1bnJlYXNvbmFibHkgcGVkYW50aWMuCi0vLyAgKiBHZW5lcmFsbHkgb25seSBlbWl0dGVkIGJ5IGEgc2luZ2xlIGNvbXBpbGVyLgotLy8gICogQ2FuJ3QgZWFzaWx5IGJlIGZpeGVkOiBmb3IgZXhhbXBsZSBpZiB0aGUgdmVuZG9ycyBvd24gc3RkIGxpYiAKLS8vICAgIGNvZGUgZW1pdHMgdGhlc2Ugd2FybmluZ3MhCi0vLwotLy8gIE5vdGUgdGhhdCBUSElTIEhFQURFUiBNVVNUIE5PVCBJTkNMVURFIEFOWSBPVEhFUiBIRUFERVJTOgotLy8gIG5vdCBldmVuIHN0ZCBsaWJyYXJ5IG9uZXMhICBEb2luZyBzbyBtYXkgdHVybiB0aGUgd2FybmluZwotLy8gIG9mZiB0b28gbGF0ZSB0byBiZSBvZiBhbnkgdXNlLiAgRm9yIGV4YW1wbGUgdGhlIFZDKysgQzQ5OTYKLS8vICB3YXJuaW5nIGNhbiBiZSBlbWl0dGVkIGZyb20gPGlvc2Z3ZD4gaWYgdGhhdCBoZWFkZXIgaXMgaW5jbHVkZWQKLS8vICBiZWZvcmUgb3IgYnkgdGhpcyBvbmUgOi0oCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX0NPTkZJR19XQVJOSU5HX0RJU0FCTEVfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0NPTkZJR19XQVJOSU5HX0RJU0FCTEVfSFBQCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTQwMCkgCi0gICAvLyBFcnJvciAnZnVuY3Rpb24nOiB3YXMgZGVjbGFyZWQgZGVwcmVjYXRlZAotICAgLy8gaHR0cDovL21zZG4yLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS90dGN6MGJ5cyhWUy44MCkuYXNweAotICAgLy8gVGhpcyBlcnJvciBpcyBlbWl0dGVkIHdoZW4geW91IHVzZSBzb21lIHBlcmZlY3RseSBjb25mb3JtaW5nCi0gICAvLyBzdGQgbGliIGZ1bmN0aW9ucyBpbiBhIHBlcmZlY3RseSBjb3JyZWN0IHdheSwgYW5kIGFsc28gYnkKLSAgIC8vIHNvbWUgb2YgTWljcm9zb2Z0J3Mgb3duIHN0ZCBsaWIgY29kZSAhCi0jICBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ5OTYpCi0jZW5kaWYKLSNpZiBkZWZpbmVkKF9fSU5URUxfQ09NUElMRVIpIHx8IGRlZmluZWQoX19JQ0wpCi0gICAvLyBBcyBhYm92ZTogZ2l2ZXMgd2FybmluZyB3aGVuIGEgImRlcHJlY2F0ZWQiCi0gICAvLyBzdGQgbGlicmFyeSBmdW5jdGlvbiBpcyBlbmNvdW50ZXJlZC4KLSMgIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6MTc4NikKLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfQ09ORklHX1dBUk5JTkdfRElTQUJMRV9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29udGFpbmVyL2NvbnRhaW5lcl9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb250YWluZXIvY29udGFpbmVyX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyNGI0NjUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb250YWluZXIvY29udGFpbmVyX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNzMgKzAsMCBAQAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gKEMpIENvcHlyaWdodCBJb24gR2F6dGFuYWdhIDIwMDUtMjAxMi4gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0Ci0vLyBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2NvbnRhaW5lciBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotI2lmbmRlZiBORE5CT09TVF9DT05UQUlORVJfQ09OVEFJTkVSX0ZXRF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfQ09OVEFJTkVSX0NPTlRBSU5FUl9GV0RfSFBQCi0KLSNpZiAoZGVmaW5lZCBfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEyMDApCi0jICBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gICAgICAgICAgICAgICAgICAgICAgICBTdGFuZGFyZCBwcmVkZWNsYXJhdGlvbnMKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0vLy8gQGNvbmQKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotbmFtZXNwYWNlIGludHJ1c2l2ZXsKLSAgIC8vQ3JlYXRlIG5hbWVzcGFjZSB0byBhdm9pZCBjb21waWxhdGlvbiBlcnJvcnMKLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdHsgbmFtZXNwYWNlIGNvbnRhaW5lcnsgbmFtZXNwYWNlIGNvbnRhaW5lcl9kZXRhaWx7Ci0KLW5hbWVzcGFjZSBiaSA9IG5kbmJvb3N0OjppbnRydXNpdmU7Ci0KLX19fQotCi0jaW5jbHVkZSA8dXRpbGl0eT4KLSNpbmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KLSNpbmNsdWRlIDxpb3Nmd2Q+Ci0jaW5jbHVkZSA8c3RyaW5nPgotCi0vLy8gQGVuZGNvbmQKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGFpbmVycwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgY29udGFpbmVyIHsKLQotLy92ZWN0b3IgY2xhc3MKLXRlbXBsYXRlIDxjbGFzcyBUCi0gICAgICAgICAsY2xhc3MgQWxsb2NhdG9yID0gc3RkOjphbGxvY2F0b3I8VD4gPgotY2xhc3MgdmVjdG9yOwotCi0vL3ZlY3RvciBjbGFzcwotdGVtcGxhdGUgPGNsYXNzIFQKLSAgICAgICAgICxjbGFzcyBBbGxvY2F0b3IgPSBzdGQ6OmFsbG9jYXRvcjxUPiA+Ci1jbGFzcyBzdGFibGVfdmVjdG9yOwotCi0vL3ZlY3RvciBjbGFzcwotdGVtcGxhdGUgPGNsYXNzIFQKLSAgICAgICAgICxjbGFzcyBBbGxvY2F0b3IgPSBzdGQ6OmFsbG9jYXRvcjxUPiA+Ci1jbGFzcyBkZXF1ZTsKLQotLy9saXN0IGNsYXNzCi10ZW1wbGF0ZSA8Y2xhc3MgVAotICAgICAgICAgLGNsYXNzIEFsbG9jYXRvciA9IHN0ZDo6YWxsb2NhdG9yPFQ+ID4KLWNsYXNzIGxpc3Q7Ci0KLS8vc2xpc3QgY2xhc3MKLXRlbXBsYXRlIDxjbGFzcyBUCi0gICAgICAgICAsY2xhc3MgQWxsb2NhdG9yID0gc3RkOjphbGxvY2F0b3I8VD4gPgotY2xhc3Mgc2xpc3Q7Ci0KLS8vc2V0IGNsYXNzCi10ZW1wbGF0ZSA8Y2xhc3MgS2V5Ci0gICAgICAgICAsY2xhc3MgQ29tcGFyZSAgPSBzdGQ6Omxlc3M8S2V5PgotICAgICAgICAgLGNsYXNzIEFsbG9jYXRvciA9IHN0ZDo6YWxsb2NhdG9yPEtleT4gPgotY2xhc3Mgc2V0OwotCi0vL211bHRpc2V0IGNsYXNzCi10ZW1wbGF0ZSA8Y2xhc3MgS2V5Ci0gICAgICAgICAsY2xhc3MgQ29tcGFyZSAgPSBzdGQ6Omxlc3M8S2V5PgotICAgICAgICAgLGNsYXNzIEFsbG9jYXRvciA9IHN0ZDo6YWxsb2NhdG9yPEtleT4gPgotY2xhc3MgbXVsdGlzZXQ7Ci0KLS8vbWFwIGNsYXNzCi10ZW1wbGF0ZSA8Y2xhc3MgS2V5Ci0gICAgICAgICAsY2xhc3MgVAotICAgICAgICAgLGNsYXNzIENvbXBhcmUgID0gc3RkOjpsZXNzPEtleT4KLSAgICAgICAgICxjbGFzcyBBbGxvY2F0b3IgPSBzdGQ6OmFsbG9jYXRvcjxzdGQ6OnBhaXI8Y29uc3QgS2V5LCBUPiA+ID4KLWNsYXNzIG1hcDsKLQotLy9tdWx0aW1hcCBjbGFzcwotdGVtcGxhdGUgPGNsYXNzIEtleQotICAgICAgICAgLGNsYXNzIFQKLSAgICAgICAgICxjbGFzcyBDb21wYXJlICA9IHN0ZDo6bGVzczxLZXk+Ci0gICAgICAgICAsY2xhc3MgQWxsb2NhdG9yID0gc3RkOjphbGxvY2F0b3I8c3RkOjpwYWlyPGNvbnN0IEtleSwgVD4gPiA+Ci1jbGFzcyBtdWx0aW1hcDsKLQotLy9mbGF0X3NldCBjbGFzcwotdGVtcGxhdGUgPGNsYXNzIEtleQotICAgICAgICAgLGNsYXNzIENvbXBhcmUgID0gc3RkOjpsZXNzPEtleT4KLSAgICAgICAgICxjbGFzcyBBbGxvY2F0b3IgPSBzdGQ6OmFsbG9jYXRvcjxLZXk+ID4KLWNsYXNzIGZsYXRfc2V0OwotCi0vL2ZsYXRfbXVsdGlzZXQgY2xhc3MKLXRlbXBsYXRlIDxjbGFzcyBLZXkKLSAgICAgICAgICxjbGFzcyBDb21wYXJlICA9IHN0ZDo6bGVzczxLZXk+Ci0gICAgICAgICAsY2xhc3MgQWxsb2NhdG9yID0gc3RkOjphbGxvY2F0b3I8S2V5PiA+Ci1jbGFzcyBmbGF0X211bHRpc2V0OwotCi0vL2ZsYXRfbWFwIGNsYXNzCi10ZW1wbGF0ZSA8Y2xhc3MgS2V5Ci0gICAgICAgICAsY2xhc3MgVAotICAgICAgICAgLGNsYXNzIENvbXBhcmUgID0gc3RkOjpsZXNzPEtleT4KLSAgICAgICAgICxjbGFzcyBBbGxvY2F0b3IgPSBzdGQ6OmFsbG9jYXRvcjxzdGQ6OnBhaXI8S2V5LCBUPiA+ID4KLWNsYXNzIGZsYXRfbWFwOwotCi0vL2ZsYXRfbXVsdGltYXAgY2xhc3MKLXRlbXBsYXRlIDxjbGFzcyBLZXkKLSAgICAgICAgICxjbGFzcyBUCi0gICAgICAgICAsY2xhc3MgQ29tcGFyZSAgPSBzdGQ6Omxlc3M8S2V5PgotICAgICAgICAgLGNsYXNzIEFsbG9jYXRvciA9IHN0ZDo6YWxsb2NhdG9yPHN0ZDo6cGFpcjxLZXksIFQ+ID4gPgotY2xhc3MgZmxhdF9tdWx0aW1hcDsKLQotLy9iYXNpY19zdHJpbmcgY2xhc3MKLXRlbXBsYXRlIDxjbGFzcyBDaGFyVAotICAgICAgICAgLGNsYXNzIFRyYWl0cyA9IHN0ZDo6Y2hhcl90cmFpdHM8Q2hhclQ+Ci0gICAgICAgICAsY2xhc3MgQWxsb2NhdG9yICA9IHN0ZDo6YWxsb2NhdG9yPENoYXJUPiA+Ci1jbGFzcyBiYXNpY19zdHJpbmc7Ci0KLS8vISBUeXBlIHVzZWQgdG8gdGFnIHRoYXQgdGhlIGlucHV0IHJhbmdlIGlzCi0vLyEgZ3VhcmFudGVlZCB0byBiZSBvcmRlcmVkCi1zdHJ1Y3Qgb3JkZXJlZF9yYW5nZV90Ci17fTsKLQotLy8hIFR5cGUgdXNlZCB0byB0YWcgdGhhdCB0aGUgaW5wdXQgcmFuZ2UgaXMKLS8vISBndWFyYW50ZWVkIHRvIGJlIG9yZGVyZWQgYW5kIHVuaXF1ZQotc3RydWN0IG9yZGVyZWRfdW5pcXVlX3JhbmdlX3QKLSAgIDogcHVibGljIG9yZGVyZWRfcmFuZ2VfdAote307Ci0KLS8vISBWYWx1ZSB1c2VkIHRvIHRhZyB0aGF0IHRoZSBpbnB1dCByYW5nZSBpcwotLy8hIGd1YXJhbnRlZWQgdG8gYmUgb3JkZXJlZAotc3RhdGljIGNvbnN0IG9yZGVyZWRfcmFuZ2VfdCBvcmRlcmVkX3JhbmdlID0gb3JkZXJlZF9yYW5nZV90KCk7Ci0KLS8vISBWYWx1ZSB1c2VkIHRvIHRhZyB0aGF0IHRoZSBpbnB1dCByYW5nZSBpcwotLy8hIGd1YXJhbnRlZWQgdG8gYmUgb3JkZXJlZCBhbmQgdW5pcXVlCi1zdGF0aWMgY29uc3Qgb3JkZXJlZF91bmlxdWVfcmFuZ2VfdCBvcmRlcmVkX3VuaXF1ZV9yYW5nZSA9IG9yZGVyZWRfdW5pcXVlX3JhbmdlX3QoKTsKLQotLy8vIEBjb25kCi0KLW5hbWVzcGFjZSBkZXRhaWxfcmVhbGx5X2RlZXBfbmFtZXNwYWNlIHsKLQotLy9PdGhlcndpc2UsIGdjYyBpc3N1ZXMgYSB3YXJuaW5nIG9mIHByZXZpb3VzbHkgZGVmaW5lZAotLy9hbm9ueW1vdXNfaW5zdGFuY2UgYW5kIHVuaXF1ZV9pbnN0YW5jZQotc3RydWN0IGR1bW15Ci17Ci0gICBkdW1teSgpCi0gICB7Ci0gICAgICAodm9pZClvcmRlcmVkX3JhbmdlOwotICAgICAgKHZvaWQpb3JkZXJlZF91bmlxdWVfcmFuZ2U7Ci0gICB9Ci19OwotCi19ICAvL2RldGFpbF9yZWFsbHlfZGVlcF9uYW1lc3BhY2UgewotCi0vLy8gQGVuZGNvbmQKLQotfX0gIC8vbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGNvbnRhaW5lciB7Ci0KLSNlbmRpZiAvLyNpZm5kZWYgTkROQk9PU1RfQ09OVEFJTkVSX0NPTlRBSU5FUl9GV0RfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NyZWdleC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NyZWdleC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzODRhMmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jcmVnZXguaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLSAKLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JlZ2V4IGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIGNyZWdleC5jcHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIFBPU0lYIEFQSSBmdW5jdGlvbnMKLSAgKiAgICAgICAgICAgICAgICArIG5kbmJvb3N0OjpSZWdFeCBoaWdoIGxldmVsIHdyYXBwZXIuCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVfQ1JFR0VYX0hQUAotI2RlZmluZSBORE5CT09TVF9SRV9DUkVHRVhfSFBQCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfQ09ORklHX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L2NvbmZpZy5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L2NyZWdleC5ocHA+Ci0KLSNlbmRpZiAvKiBpbmNsdWRlIGd1YXJkICovCi0KLQotCi0KLQotCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY3N0ZGludC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NzdGRpbnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YWJjOTQ0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY3N0ZGludC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MDggKzAsMCBAQAotLy8gIGJvb3N0IGNzdGRpbnQuaHBwIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgKEMpIENvcHlyaWdodCBCZW1hbiBEYXdlcyAxOTk5LiAKLS8vICAoQykgQ29weXJpZ2h0IEplbnMgTWF1ZXIgMjAwMSAgCi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMSAKLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QKLS8vICBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2ludGVnZXIgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICBSZXZpc2lvbiBIaXN0b3J5Ci0vLyAgIDMxIE9jdCAwMSAgdXNlIE5ETkJPT1NUX0hBU19MT05HX0xPTkcgdG8gY2hlY2sgZm9yICJsb25nIGxvbmciIChKZW5zIE0uKQotLy8gICAxNiBBcHIgMDEgIGNoZWNrIExPTkdMT05HX01BWCB3aGVuIGxvb2tpbmcgZm9yICJsb25nIGxvbmciIChKZW5zIE1hdXJlcikKLS8vICAgMjMgSmFuIDAxICBwcmVmZXIgImxvbmciIG92ZXIgImludCIgZm9yIGludDMyX3QgYW5kIGludG1heF90IChKZW5zIE1hdXJlcikKLS8vICAgMTIgTm92IDAwICBNZXJnZWQgPG5kbmJvb3N0L3N0ZGludC5oPiAoSmVucyBNYXVyZXIpCi0vLyAgIDIzIFNlcCAwMCAgQWRkZWQgSU5UWFhfQyBtYWNybyBzdXBwb3J0IChKb2huIE1hZGRvY2spLgotLy8gICAyMiBTZXAgMDAgIEJldHRlciA2NC1iaXQgc3VwcG9ydCAoSm9obiBNYWRkb2NrKQotLy8gICAyOSBKdW4gMDAgIFJlaW1wbGVtZW50IHRvIGF2b2lkIGluY2x1ZGluZyBzdGRpbnQuaCB3aXRoaW4gbmFtZXNwYWNlIG5kbmJvb3N0Ci0vLyAgICA4IEF1ZyA5OSAgSW5pdGlhbCB2ZXJzaW9uIChCZW1hbiBEYXdlcykKLQotCi0jaWZuZGVmIE5ETkJPT1NUX0NTVERJTlRfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0NTVERJTlRfSFBQCi0KLS8vCi0vLyBTaW5jZSB3ZSBhbHdheXMgZGVmaW5lIHRoZSBJTlQjX0MgbWFjcm9zIGFzIHBlciBDKysweCwgCi0vLyBkZWZpbmUgX19TVERDX0NPTlNUQU5UX01BQ1JPUyBzbyB0aGF0IDxzdGRpbnQuaD4gZG9lcyB0aGUgcmlnaHQKLS8vIHRoaW5nIGlmIHBvc3NpYmxlLCBhbmQgc28gdGhhdCB0aGUgdXNlciBrbm93cyB0aGF0IHRoZSBtYWNyb3MgCi0vLyBhcmUgYWN0dWFsbHkgZGVmaW5lZCBhcyBwZXIgQzk5LgotLy8KLSNpZm5kZWYgX19TVERDX0NPTlNUQU5UX01BQ1JPUwotIyAgZGVmaW5lIF9fU1REQ19DT05TVEFOVF9NQUNST1MKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotLy8KLS8vIE5vdGUgdGhhdCBHTElCQyBpcyBhIGJpdCBpbmNvbnNpc3RlbnQgYWJvdXQgd2hldGhlciBpbnQ2NF90IGlzIGRlZmluZWQgb3Igbm90Ci0vLyBkZXBlbmRpbmcgdXBvbiB3aGF0IGhlYWRlcnMgaGFwcGVuIHRvIGhhdmUgYmVlbiBpbmNsdWRlZCBmaXJzdC4uLgotLy8gc28gd2UgZGlzYWJsZSB1c2Ugb2Ygc3RkaW50Lmggd2hlbiBHTElCQyBkb2VzIG5vdCBkZWZpbmUgX19HTElCQ19IQVZFX0xPTkdfTE9ORy4KLS8vIFNlZSBodHRwczovL3N2bi5ib29zdC5vcmcvdHJhYy9ib29zdC90aWNrZXQvMzU0OCBhbmQgaHR0cDovL3NvdXJjZXMucmVkaGF0LmNvbS9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MTA5OTAKLS8vCi0jaWYgZGVmaW5lZChORE5CT09TVF9IQVNfU1RESU5UX0gpICYmICghZGVmaW5lZChfX0dMSUJDX18pIHx8IGRlZmluZWQoX19HTElCQ19IQVZFX0xPTkdfTE9ORykpCi0KLS8vIFRoZSBmb2xsb3dpbmcgI2luY2x1ZGUgaXMgYW4gaW1wbGVtZW50YXRpb24gYXJ0aWZhY3Q7IG5vdCBwYXJ0IG9mIGludGVyZmFjZS4KLSMgaWZkZWYgX19ocHV4Ci0vLyBIUC1VWCBoYXMgYSB2YWd1ZWx5IG5pY2UgPHN0ZGludC5oPiBpbiBhIG5vbi1zdGFuZGFyZCBsb2NhdGlvbgotIyAgIGluY2x1ZGUgPGludHR5cGVzLmg+Ci0jICAgaWZkZWYgX19TVERDXzMyX01PREVfXwotICAgICAgLy8gdGhpcyBpcyB0cmlnZ2VyZWQgd2l0aCBHQ0MsIGJlY2F1c2UgaXQgZGVmaW5lcyBfX2NwbHVzcGx1cyA8IDE5OTcwN0wKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19JTlQ2NF9UCi0jICAgZW5kaWYgCi0jIGVsaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0lCTUNQUF9fKSB8fCBkZWZpbmVkKF9BSVgpCi0jICAgaW5jbHVkZSA8aW50dHlwZXMuaD4KLSMgZWxzZQotIyAgIGluY2x1ZGUgPHN0ZGludC5oPgotCi0vLyBUaGVyZSBpcyBhIGJ1ZyBpbiBDeWd3aW4gdHdvIF9DIG1hY3JvcwotIyAgIGlmIGRlZmluZWQoX19TVERDX0NPTlNUQU5UX01BQ1JPUykgJiYgZGVmaW5lZChfX0NZR1dJTl9fKQotIyAgICAgdW5kZWYgSU5UTUFYX0MKLSMgICAgIHVuZGVmIFVJTlRNQVhfQwotIyAgICAgZGVmaW5lIElOVE1BWF9DKGMpIGMjI0xMCi0jICAgICBkZWZpbmUgVUlOVE1BWF9DKGMpIGMjI1VMTAotIyAgIGVuZGlmCi0KLSMgZW5kaWYKLQotI2lmZGVmIF9fUU5YX18KLQotLy8gUU5YIChEaW5rdW13YXJlIHN0ZGxpYikgZGVmaW5lcyB0aGVzZSBhcyBub24tc3RhbmRhcmQgbmFtZXMuCi0vLyBSZWZsZWN0IHRvIHRoZSBzdGFuZGFyZCBuYW1lcy4KLQotdHlwZWRlZiA6OmludGxlYXN0OF90IGludF9sZWFzdDhfdDsKLXR5cGVkZWYgOjppbnRmYXN0OF90IGludF9mYXN0OF90OwotdHlwZWRlZiA6OnVpbnRsZWFzdDhfdCB1aW50X2xlYXN0OF90OwotdHlwZWRlZiA6OnVpbnRmYXN0OF90IHVpbnRfZmFzdDhfdDsKLQotdHlwZWRlZiA6OmludGxlYXN0MTZfdCBpbnRfbGVhc3QxNl90OwotdHlwZWRlZiA6OmludGZhc3QxNl90IGludF9mYXN0MTZfdDsKLXR5cGVkZWYgOjp1aW50bGVhc3QxNl90IHVpbnRfbGVhc3QxNl90OwotdHlwZWRlZiA6OnVpbnRmYXN0MTZfdCB1aW50X2Zhc3QxNl90OwotCi10eXBlZGVmIDo6aW50bGVhc3QzMl90IGludF9sZWFzdDMyX3Q7Ci10eXBlZGVmIDo6aW50ZmFzdDMyX3QgaW50X2Zhc3QzMl90OwotdHlwZWRlZiA6OnVpbnRsZWFzdDMyX3QgdWludF9sZWFzdDMyX3Q7Ci10eXBlZGVmIDo6dWludGZhc3QzMl90IHVpbnRfZmFzdDMyX3Q7Ci0KLSMgaWZuZGVmIE5ETkJPT1NUX05PX0lOVDY0X1QKLQotdHlwZWRlZiA6OmludGxlYXN0NjRfdCBpbnRfbGVhc3Q2NF90OwotdHlwZWRlZiA6OmludGZhc3Q2NF90IGludF9mYXN0NjRfdDsKLXR5cGVkZWYgOjp1aW50bGVhc3Q2NF90IHVpbnRfbGVhc3Q2NF90OwotdHlwZWRlZiA6OnVpbnRmYXN0NjRfdCB1aW50X2Zhc3Q2NF90OwotCi0jIGVuZGlmCi0KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotICB1c2luZyA6OmludDhfdDsgICAgICAgICAgICAgCi0gIHVzaW5nIDo6aW50X2xlYXN0OF90OyAgICAgICAKLSAgdXNpbmcgOjppbnRfZmFzdDhfdDsgICAgICAgIAotICB1c2luZyA6OnVpbnQ4X3Q7ICAgICAgICAgICAgCi0gIHVzaW5nIDo6dWludF9sZWFzdDhfdDsgICAgICAKLSAgdXNpbmcgOjp1aW50X2Zhc3Q4X3Q7ICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgCi0gIHVzaW5nIDo6aW50MTZfdDsgICAgICAgICAgICAKLSAgdXNpbmcgOjppbnRfbGVhc3QxNl90OyAgICAgIAotICB1c2luZyA6OmludF9mYXN0MTZfdDsgICAgICAgCi0gIHVzaW5nIDo6dWludDE2X3Q7ICAgICAgICAgICAKLSAgdXNpbmcgOjp1aW50X2xlYXN0MTZfdDsgICAgIAotICB1c2luZyA6OnVpbnRfZmFzdDE2X3Q7ICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAKLSAgdXNpbmcgOjppbnQzMl90OyAgICAgICAgICAgIAotICB1c2luZyA6OmludF9sZWFzdDMyX3Q7ICAgICAgCi0gIHVzaW5nIDo6aW50X2Zhc3QzMl90OyAgICAgICAKLSAgdXNpbmcgOjp1aW50MzJfdDsgICAgICAgICAgIAotICB1c2luZyA6OnVpbnRfbGVhc3QzMl90OyAgICAgCi0gIHVzaW5nIDo6dWludF9mYXN0MzJfdDsgICAgICAKLSAgICAgICAgICAgICAgICAgICAgIAotIyBpZm5kZWYgTkROQk9PU1RfTk9fSU5UNjRfVAotCi0gIHVzaW5nIDo6aW50NjRfdDsgICAgICAgICAgICAKLSAgdXNpbmcgOjppbnRfbGVhc3Q2NF90OyAgICAgIAotICB1c2luZyA6OmludF9mYXN0NjRfdDsgICAgICAgCi0gIHVzaW5nIDo6dWludDY0X3Q7ICAgICAgICAgICAKLSAgdXNpbmcgOjp1aW50X2xlYXN0NjRfdDsgICAgIAotICB1c2luZyA6OnVpbnRfZmFzdDY0X3Q7ICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAKLSMgZW5kaWYKLQotICB1c2luZyA6OmludG1heF90OyAgICAgIAotICB1c2luZyA6OnVpbnRtYXhfdDsgICAgIAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZWxpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAoX19GcmVlQlNEX18gPD0gNCkgfHwgZGVmaW5lZChfX29zZl9fKSB8fCBkZWZpbmVkKF9fVk1TKQotLy8gRnJlZUJTRCBhbmQgVHJ1NjQgaGF2ZSBhbiA8aW50dHlwZXMuaD4gdGhhdCBjb250YWlucyBtdWNoIG9mIHdoYXQgd2UgbmVlZC4KLSMgaW5jbHVkZSA8aW50dHlwZXMuaD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotICB1c2luZyA6OmludDhfdDsgICAgICAgICAgICAgCi0gIHR5cGVkZWYgaW50OF90IGludF9sZWFzdDhfdDsgICAgICAgCi0gIHR5cGVkZWYgaW50OF90IGludF9mYXN0OF90OyAgICAgICAgCi0gIHVzaW5nIDo6dWludDhfdDsgICAgICAgICAgICAKLSAgdHlwZWRlZiB1aW50OF90IHVpbnRfbGVhc3Q4X3Q7ICAgICAgCi0gIHR5cGVkZWYgdWludDhfdCB1aW50X2Zhc3Q4X3Q7ICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgCi0gIHVzaW5nIDo6aW50MTZfdDsgICAgICAgICAgICAKLSAgdHlwZWRlZiBpbnQxNl90IGludF9sZWFzdDE2X3Q7ICAgICAgCi0gIHR5cGVkZWYgaW50MTZfdCBpbnRfZmFzdDE2X3Q7ICAgICAgIAotICB1c2luZyA6OnVpbnQxNl90OyAgICAgICAgICAgCi0gIHR5cGVkZWYgdWludDE2X3QgdWludF9sZWFzdDE2X3Q7ICAgICAKLSAgdHlwZWRlZiB1aW50MTZfdCB1aW50X2Zhc3QxNl90OyAgICAgIAotICAgICAgICAgICAgICAgICAgICAgCi0gIHVzaW5nIDo6aW50MzJfdDsgICAgICAgICAgICAKLSAgdHlwZWRlZiBpbnQzMl90IGludF9sZWFzdDMyX3Q7ICAgICAgCi0gIHR5cGVkZWYgaW50MzJfdCBpbnRfZmFzdDMyX3Q7ICAgICAgIAotICB1c2luZyA6OnVpbnQzMl90OyAgICAgICAgICAgCi0gIHR5cGVkZWYgdWludDMyX3QgdWludF9sZWFzdDMyX3Q7ICAgICAKLSAgdHlwZWRlZiB1aW50MzJfdCB1aW50X2Zhc3QzMl90OyAgICAgIAotICAgICAgICAgCi0jIGlmbmRlZiBORE5CT09TVF9OT19JTlQ2NF9UICAgICAgICAgIAotCi0gIHVzaW5nIDo6aW50NjRfdDsgICAgICAgICAgICAKLSAgdHlwZWRlZiBpbnQ2NF90IGludF9sZWFzdDY0X3Q7ICAgICAgCi0gIHR5cGVkZWYgaW50NjRfdCBpbnRfZmFzdDY0X3Q7ICAgICAgIAotICB1c2luZyA6OnVpbnQ2NF90OyAgICAgICAgICAgCi0gIHR5cGVkZWYgdWludDY0X3QgdWludF9sZWFzdDY0X3Q7ICAgICAKLSAgdHlwZWRlZiB1aW50NjRfdCB1aW50X2Zhc3Q2NF90OyAgICAgIAotCi0gIHR5cGVkZWYgaW50NjRfdCBpbnRtYXhfdDsKLSAgdHlwZWRlZiB1aW50NjRfdCB1aW50bWF4X3Q7Ci0KLSMgZWxzZQotCi0gIHR5cGVkZWYgaW50MzJfdCBpbnRtYXhfdDsKLSAgdHlwZWRlZiB1aW50MzJfdCB1aW50bWF4X3Q7Ci0KLSMgZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2Vsc2UgIC8vIE5ETkJPT1NUX0hBU19TVERJTlRfSAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2xpbWl0cy5ocHA+IC8vIGltcGxlbWVudGF0aW9uIGFydGlmYWN0OyBub3QgcGFydCBvZiBpbnRlcmZhY2UKLSMgaW5jbHVkZSA8bGltaXRzLmg+ICAgICAgICAgLy8gbmVlZGVkIGZvciBsaW1pdHMgbWFjcm9zCi0KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLS8vICBUaGVzZSBhcmUgZmFpcmx5IHNhZmUgZ3Vlc3NlcyBmb3Igc29tZSAxNi1iaXQsIGFuZCBtb3N0IDMyLWJpdCBhbmQgNjQtYml0Ci0vLyAgcGxhdGZvcm1zLiAgRm9yIG90aGVyIHN5c3RlbXMsIHRoZXkgd2lsbCBoYXZlIHRvIGJlIGhhbmQgdGFpbG9yZWQuCi0vLwotLy8gIEJlY2F1c2UgdGhlIGZhc3QgdHlwZXMgYXJlIGFzc3VtZWQgdG8gYmUgdGhlIHNhbWUgYXMgdGhlIHVuZGVjb3JhdGVkIHR5cGVzLAotLy8gIGl0IG1heSBiZSBwb3NzaWJsZSB0byBoYW5kIHRhaWxvciBhIG1vcmUgZWZmaWNpZW50IGltcGxlbWVudGF0aW9uLiAgU3VjaAotLy8gIGFuIG9wdGltaXphdGlvbiBtYXkgYmUgaWxsdXNpb25hcnk7IG9uIHRoZSBJbnRlbCB4ODYtZmFtaWx5IDM4NiBvbiwgZm9yCi0vLyAgZXhhbXBsZSwgYnl0ZSBhcml0aG1ldGljIGFuZCBsb2FkL3N0b3JlcyBhcmUgYXMgZmFzdCBhcyAiaW50IiBzaXplZCBvbmVzLgotCi0vLyAgOC1iaXQgdHlwZXMgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSMgaWYgVUNIQVJfTUFYID09IDB4ZmYKLSAgICAgdHlwZWRlZiBzaWduZWQgY2hhciAgICAgaW50OF90OwotICAgICB0eXBlZGVmIHNpZ25lZCBjaGFyICAgICBpbnRfbGVhc3Q4X3Q7Ci0gICAgIHR5cGVkZWYgc2lnbmVkIGNoYXIgICAgIGludF9mYXN0OF90OwotICAgICB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgICB1aW50OF90OwotICAgICB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgICB1aW50X2xlYXN0OF90OwotICAgICB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgICB1aW50X2Zhc3Q4X3Q7Ci0jIGVsc2UKLSMgICAgZXJyb3IgZGVmYXVsdHMgbm90IGNvcnJlY3Q7IHlvdSBtdXN0IGhhbmQgbW9kaWZ5IG5kbmJvb3N0L2NzdGRpbnQuaHBwCi0jIGVuZGlmCi0KLS8vICAxNi1iaXQgdHlwZXMgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotIyBpZiBVU0hSVF9NQVggPT0gMHhmZmZmCi0jICBpZiBkZWZpbmVkKF9fY3JheXgxKQotICAgICAvLyBUaGUgQ3JheSBYMSBoYXMgYSAxNi1iaXQgc2hvcnQsIGhvd2V2ZXIgaXQgaXMgbm90IHJlY29tbWVuZAotICAgICAvLyBmb3IgdXNlIGluIHBlcmZvcm1hbmNlIGNyaXRpY2FsIGNvZGUuCi0gICAgIHR5cGVkZWYgc2hvcnQgICAgICAgICAgIGludDE2X3Q7Ci0gICAgIHR5cGVkZWYgc2hvcnQgICAgICAgICAgIGludF9sZWFzdDE2X3Q7Ci0gICAgIHR5cGVkZWYgaW50ICAgICAgICAgICAgIGludF9mYXN0MTZfdDsKLSAgICAgdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCAgdWludDE2X3Q7Ci0gICAgIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgIHVpbnRfbGVhc3QxNl90OwotICAgICB0eXBlZGVmIHVuc2lnbmVkIGludCAgICB1aW50X2Zhc3QxNl90OwotIyAgZWxzZQotICAgICB0eXBlZGVmIHNob3J0ICAgICAgICAgICBpbnQxNl90OwotICAgICB0eXBlZGVmIHNob3J0ICAgICAgICAgICBpbnRfbGVhc3QxNl90OwotICAgICB0eXBlZGVmIHNob3J0ICAgICAgICAgICBpbnRfZmFzdDE2X3Q7Ci0gICAgIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgIHVpbnQxNl90OwotICAgICB0eXBlZGVmIHVuc2lnbmVkIHNob3J0ICB1aW50X2xlYXN0MTZfdDsKLSAgICAgdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCAgdWludF9mYXN0MTZfdDsKLSMgIGVuZGlmCi0jIGVsaWYgKFVTSFJUX01BWCA9PSAweGZmZmZmZmZmKSAmJiBkZWZpbmVkKF9fTVRBX18pIAotICAgICAgLy8gT24gTVRBIC8gWE1UIHNob3J0IGlzIDMyIGJpdHMgdW5sZXNzIHRoZSAtc2hvcnQxNiBjb21waWxlciBmbGFnIGlzIHNwZWNpZmllZCAKLSAgICAgIC8vIE1UQSAvIFhNVCBkb2VzIHN1cHBvcnQgdGhlIGZvbGxvd2luZyBub24tc3RhbmRhcmQgaW50ZWdlciB0eXBlcyAKLSAgICAgIHR5cGVkZWYgX19zaG9ydDE2ICAgICAgICAgICBpbnQxNl90OyAKLSAgICAgIHR5cGVkZWYgX19zaG9ydDE2ICAgICAgICAgICBpbnRfbGVhc3QxNl90OyAKLSAgICAgIHR5cGVkZWYgX19zaG9ydDE2ICAgICAgICAgICBpbnRfZmFzdDE2X3Q7IAotICAgICAgdHlwZWRlZiB1bnNpZ25lZCBfX3Nob3J0MTYgIHVpbnQxNl90OyAKLSAgICAgIHR5cGVkZWYgdW5zaWduZWQgX19zaG9ydDE2ICB1aW50X2xlYXN0MTZfdDsgCi0gICAgICB0eXBlZGVmIHVuc2lnbmVkIF9fc2hvcnQxNiAgdWludF9mYXN0MTZfdDsgCi0jIGVsaWYgKFVTSFJUX01BWCA9PSAweGZmZmZmZmZmKSAmJiBkZWZpbmVkKENSQVkpCi0gICAgIC8vIG5vIDE2LWJpdCB0eXBlcyBvbiBDcmF5OgotICAgICB0eXBlZGVmIHNob3J0ICAgICAgICAgICBpbnRfbGVhc3QxNl90OwotICAgICB0eXBlZGVmIHNob3J0ICAgICAgICAgICBpbnRfZmFzdDE2X3Q7Ci0gICAgIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgIHVpbnRfbGVhc3QxNl90OwotICAgICB0eXBlZGVmIHVuc2lnbmVkIHNob3J0ICB1aW50X2Zhc3QxNl90OwotIyBlbHNlCi0jICAgIGVycm9yIGRlZmF1bHRzIG5vdCBjb3JyZWN0OyB5b3UgbXVzdCBoYW5kIG1vZGlmeSBuZG5ib29zdC9jc3RkaW50LmhwcAotIyBlbmRpZgotCi0vLyAgMzItYml0IHR5cGVzICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSMgaWYgVUlOVF9NQVggPT0gMHhmZmZmZmZmZgotICAgICB0eXBlZGVmIGludCAgICAgICAgICAgICBpbnQzMl90OwotICAgICB0eXBlZGVmIGludCAgICAgICAgICAgICBpbnRfbGVhc3QzMl90OwotICAgICB0eXBlZGVmIGludCAgICAgICAgICAgICBpbnRfZmFzdDMyX3Q7Ci0gICAgIHR5cGVkZWYgdW5zaWduZWQgaW50ICAgIHVpbnQzMl90OwotICAgICB0eXBlZGVmIHVuc2lnbmVkIGludCAgICB1aW50X2xlYXN0MzJfdDsKLSAgICAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgICAgdWludF9mYXN0MzJfdDsKLSMgZWxpZiAoVVNIUlRfTUFYID09IDB4ZmZmZmZmZmYpCi0gICAgIHR5cGVkZWYgc2hvcnQgICAgICAgICAgICAgaW50MzJfdDsKLSAgICAgdHlwZWRlZiBzaG9ydCAgICAgICAgICAgICBpbnRfbGVhc3QzMl90OwotICAgICB0eXBlZGVmIHNob3J0ICAgICAgICAgICAgIGludF9mYXN0MzJfdDsKLSAgICAgdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCAgICB1aW50MzJfdDsKLSAgICAgdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCAgICB1aW50X2xlYXN0MzJfdDsKLSAgICAgdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCAgICB1aW50X2Zhc3QzMl90OwotIyBlbGlmIFVMT05HX01BWCA9PSAweGZmZmZmZmZmCi0gICAgIHR5cGVkZWYgbG9uZyAgICAgICAgICAgIGludDMyX3Q7Ci0gICAgIHR5cGVkZWYgbG9uZyAgICAgICAgICAgIGludF9sZWFzdDMyX3Q7Ci0gICAgIHR5cGVkZWYgbG9uZyAgICAgICAgICAgIGludF9mYXN0MzJfdDsKLSAgICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nICAgdWludDMyX3Q7Ci0gICAgIHR5cGVkZWYgdW5zaWduZWQgbG9uZyAgIHVpbnRfbGVhc3QzMl90OwotICAgICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgICB1aW50X2Zhc3QzMl90OwotIyBlbGlmIChVSU5UX01BWCA9PSAweGZmZmZmZmZmZmZmZmZmZmYpICYmIGRlZmluZWQoX19NVEFfXykgCi0gICAgICAvLyBJbnRlZ2VycyBhcmUgNjQgYml0cyBvbiB0aGUgTVRBIC8gWE1UIAotICAgICAgdHlwZWRlZiBfX2ludDMyICAgICAgICAgICBpbnQzMl90OyAKLSAgICAgIHR5cGVkZWYgX19pbnQzMiAgICAgICAgICAgaW50X2xlYXN0MzJfdDsgCi0gICAgICB0eXBlZGVmIF9faW50MzIgICAgICAgICAgIGludF9mYXN0MzJfdDsgCi0gICAgICB0eXBlZGVmIHVuc2lnbmVkIF9faW50MzIgIHVpbnQzMl90OyAKLSAgICAgIHR5cGVkZWYgdW5zaWduZWQgX19pbnQzMiAgdWludF9sZWFzdDMyX3Q7IAotICAgICAgdHlwZWRlZiB1bnNpZ25lZCBfX2ludDMyICB1aW50X2Zhc3QzMl90OyAKLSMgZWxzZQotIyAgICBlcnJvciBkZWZhdWx0cyBub3QgY29ycmVjdDsgeW91IG11c3QgaGFuZCBtb2RpZnkgbmRuYm9vc3QvY3N0ZGludC5ocHAKLSMgZW5kaWYKLQotLy8gIDY0LWJpdCB0eXBlcyArIGludG1heF90IGFuZCB1aW50bWF4X3QgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jIGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykgJiYgXAotICAgIWRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgIWRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiBcCi0gICAoIWRlZmluZWQoX19HTElCQ1BQX18pIHx8IGRlZmluZWQoX0dMSUJDUFBfVVNFX0xPTkdfTE9ORykpICYmIFwKLSAgIChkZWZpbmVkKFVMTE9OR19NQVgpIHx8IGRlZmluZWQoVUxPTkdfTE9OR19NQVgpIHx8IGRlZmluZWQoVUxPTkdMT05HX01BWCkpCi0jICAgIGlmIGRlZmluZWQoX19ocHV4KQotICAgICAvLyBIUC1VWCdzIHZhbHVlIG9mIFVMT05HX0xPTkdfTUFYIGlzIHVudXNhYmxlIGluIHByZXByb2Nlc3NvciBleHByZXNzaW9ucwotIyAgICBlbGlmIChkZWZpbmVkKFVMTE9OR19NQVgpICYmIFVMTE9OR19NQVggPT0gMTg0NDY3NDQwNzM3MDk1NTE2MTVVTEwpIHx8IChkZWZpbmVkKFVMT05HX0xPTkdfTUFYKSAmJiBVTE9OR19MT05HX01BWCA9PSAxODQ0Njc0NDA3MzcwOTU1MTYxNVVMTCkgfHwgKGRlZmluZWQoVUxPTkdMT05HX01BWCkgJiYgVUxPTkdMT05HX01BWCA9PSAxODQ0Njc0NDA3MzcwOTU1MTYxNVVMTCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMioqNjQgLSAxCi0jICAgIGVsc2UKLSMgICAgICAgZXJyb3IgZGVmYXVsdHMgbm90IGNvcnJlY3Q7IHlvdSBtdXN0IGhhbmQgbW9kaWZ5IG5kbmJvb3N0L2NzdGRpbnQuaHBwCi0jICAgIGVuZGlmCi0KLSAgICAgdHlwZWRlZiAgOjpuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUgICAgICAgICAgICBpbnRtYXhfdDsKLSAgICAgdHlwZWRlZiAgOjpuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlICAgdWludG1heF90OwotICAgICB0eXBlZGVmICA6Om5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSAgICAgICAgICAgIGludDY0X3Q7Ci0gICAgIHR5cGVkZWYgIDo6bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlICAgICAgICAgICAgaW50X2xlYXN0NjRfdDsKLSAgICAgdHlwZWRlZiAgOjpuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUgICAgICAgICAgICBpbnRfZmFzdDY0X3Q7Ci0gICAgIHR5cGVkZWYgIDo6bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZSAgIHVpbnQ2NF90OwotICAgICB0eXBlZGVmICA6Om5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUgICB1aW50X2xlYXN0NjRfdDsKLSAgICAgdHlwZWRlZiAgOjpuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlICAgdWludF9mYXN0NjRfdDsKLQotIyBlbGlmIFVMT05HX01BWCAhPSAweGZmZmZmZmZmCi0KLSMgICAgaWYgVUxPTkdfTUFYID09IDE4NDQ2NzQ0MDczNzA5NTUxNjE1IC8vIDIqKjY0IC0gMQotICAgICB0eXBlZGVmIGxvbmcgICAgICAgICAgICAgICAgIGludG1heF90OwotICAgICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgICAgICAgIHVpbnRtYXhfdDsKLSAgICAgdHlwZWRlZiBsb25nICAgICAgICAgICAgICAgICBpbnQ2NF90OwotICAgICB0eXBlZGVmIGxvbmcgICAgICAgICAgICAgICAgIGludF9sZWFzdDY0X3Q7Ci0gICAgIHR5cGVkZWYgbG9uZyAgICAgICAgICAgICAgICAgaW50X2Zhc3Q2NF90OwotICAgICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgICAgICAgIHVpbnQ2NF90OwotICAgICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgICAgICAgIHVpbnRfbGVhc3Q2NF90OwotICAgICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgICAgICAgIHVpbnRfZmFzdDY0X3Q7Ci0jICAgIGVsc2UKLSMgICAgICAgZXJyb3IgZGVmYXVsdHMgbm90IGNvcnJlY3Q7IHlvdSBtdXN0IGhhbmQgbW9kaWZ5IG5kbmJvb3N0L2NzdGRpbnQuaHBwCi0jICAgIGVuZGlmCi0jIGVsaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKQotICAgICBfX2V4dGVuc2lvbl9fIHR5cGVkZWYgbG9uZyBsb25nICAgICAgICAgICAgaW50bWF4X3Q7Ci0gICAgIF9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgICB1aW50bWF4X3Q7Ci0gICAgIF9fZXh0ZW5zaW9uX18gdHlwZWRlZiBsb25nIGxvbmcgICAgICAgICAgICBpbnQ2NF90OwotICAgICBfX2V4dGVuc2lvbl9fIHR5cGVkZWYgbG9uZyBsb25nICAgICAgICAgICAgaW50X2xlYXN0NjRfdDsKLSAgICAgX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgbG9uZyAgICAgICAgICAgIGludF9mYXN0NjRfdDsKLSAgICAgX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyAgIHVpbnQ2NF90OwotICAgICBfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nICAgdWludF9sZWFzdDY0X3Q7Ci0gICAgIF9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgICB1aW50X2Zhc3Q2NF90OwotIyBlbGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX01TX0lOVDY0KQotICAgICAvLwotICAgICAvLyB3ZSBoYXZlIEJvcmxhbmQvSW50ZWwvTWljcm9zb2Z0IF9faW50NjQ6Ci0gICAgIC8vCi0gICAgIHR5cGVkZWYgX19pbnQ2NCAgICAgICAgICAgICBpbnRtYXhfdDsKLSAgICAgdHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0ICAgIHVpbnRtYXhfdDsKLSAgICAgdHlwZWRlZiBfX2ludDY0ICAgICAgICAgICAgIGludDY0X3Q7Ci0gICAgIHR5cGVkZWYgX19pbnQ2NCAgICAgICAgICAgICBpbnRfbGVhc3Q2NF90OwotICAgICB0eXBlZGVmIF9faW50NjQgICAgICAgICAgICAgaW50X2Zhc3Q2NF90OwotICAgICB0eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgICAgdWludDY0X3Q7Ci0gICAgIHR5cGVkZWYgdW5zaWduZWQgX19pbnQ2NCAgICB1aW50X2xlYXN0NjRfdDsKLSAgICAgdHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0ICAgIHVpbnRfZmFzdDY0X3Q7Ci0jIGVsc2UgLy8gYXNzdW1lIG5vIDY0LWJpdCBpbnRlZ2VycwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0lOVDY0X1QKLSAgICAgdHlwZWRlZiBpbnQzMl90ICAgICAgICAgICAgICBpbnRtYXhfdDsKLSAgICAgdHlwZWRlZiB1aW50MzJfdCAgICAgICAgICAgICB1aW50bWF4X3Q7Ci0jIGVuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX0hBU19TVERJTlRfSAotCi0jZW5kaWYgLy8gTkROQk9PU1RfQ1NURElOVF9IUFAKLQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi1NYWNybyBkZWZpbml0aW9uIHNlY3Rpb246Ci0KLUFkZGVkIDIzcmQgU2VwdGVtYmVyIDIwMDAgKEpvaG4gTWFkZG9jaykuCi1Nb2RpZmllZCAxMXRoIFNlcHRlbWJlciAyMDAxIHRvIGJlIGV4Y2x1ZGVkIHdoZW4KLU5ETkJPT1NUX0hBU19TVERJTlRfSCBpcyBkZWZpbmVkIChKb2huIE1hZGRvY2spLgotTW9kaWZpZWQgMTF0aCBEZWMgMjAwOSB0byBhbHdheXMgZGVmaW5lIHRoZQotSU5UI19DIG1hY3JvcyBpZiB0aGV5J3JlIG5vdCBhbHJlYWR5IGRlZmluZWQgKEpvaG4gTWFkZG9jaykuCi0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX19TVERDX0NPTlNUQU5UX01BQ1JPU19ERUZJTkVEKSAmJiBcCi0gICAoIWRlZmluZWQoSU5UOF9DKSB8fCAhZGVmaW5lZChJTlQxNl9DKSB8fCAhZGVmaW5lZChJTlQzMl9DKSB8fCAhZGVmaW5lZChJTlQ2NF9DKSkKLS8vCi0vLyBGb3IgdGhlIGZvbGxvd2luZyBjb2RlIHdlIGdldCBzZXZlcmFsIHdhcm5pbmdzIGFsb25nIHRoZSBsaW5lcyBvZjogCi0vLyAKLS8vIG5kbmJvb3N0L2NzdGRpbnQuaHBwOjQyODozNTogZXJyb3I6IHVzZSBvZiBDOTkgbG9uZyBsb25nIGludGVnZXIgY29uc3RhbnQgCi0vLyAKLS8vIFNvIHdlIGRlY2xhcmUgdGhpcyBhIHN5c3RlbSBoZWFkZXIgdG8gc3VwcHJlc3MgdGhlc2Ugd2FybmluZ3MuIAotLy8KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPj0gNCkgCi0jcHJhZ21hIEdDQyBzeXN0ZW1faGVhZGVyIAotI2VuZGlmIAotCi0jaW5jbHVkZSA8bGltaXRzLmg+Ci0jIGRlZmluZSBORE5CT09TVF9fU1REQ19DT05TVEFOVF9NQUNST1NfREVGSU5FRAotIyBpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19NU19JTlQ2NCkKLS8vCi0vLyBCb3JsYW5kL0ludGVsL01pY3Jvc29mdCBjb21waWxlcnMgaGF2ZSB3aWR0aCBzcGVjaWZpYyBzdWZmaXhlczoKLS8vCi0jaWZuZGVmIElOVDhfQwotIyAgZGVmaW5lIElOVDhfQyh2YWx1ZSkgICAgIHZhbHVlIyNpOAotI2VuZGlmCi0jaWZuZGVmIElOVDE2X0MKLSMgIGRlZmluZSBJTlQxNl9DKHZhbHVlKSAgICB2YWx1ZSMjaTE2Ci0jZW5kaWYKLSNpZm5kZWYgSU5UMzJfQwotIyAgZGVmaW5lIElOVDMyX0ModmFsdWUpICAgIHZhbHVlIyNpMzIKLSNlbmRpZgotI2lmbmRlZiBJTlQ2NF9DCi0jICBkZWZpbmUgSU5UNjRfQyh2YWx1ZSkgICAgdmFsdWUjI2k2NAotI2VuZGlmCi0jICBpZmRlZiBfX0JPUkxBTkRDX18KLSAgICAvLyBCb3JsYW5kIGJ1ZzogYXBwZW5kaW5nIHVpOCBtYWtlcyB0aGUgdHlwZSBhIHNpZ25lZCBjaGFyCi0jICAgZGVmaW5lIFVJTlQ4X0ModmFsdWUpICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHZhbHVlIyN1KQotIyAgZWxzZQotIyAgIGRlZmluZSBVSU5UOF9DKHZhbHVlKSAgICB2YWx1ZSMjdWk4Ci0jICBlbmRpZgotI2lmbmRlZiBVSU5UMTZfQwotIyAgZGVmaW5lIFVJTlQxNl9DKHZhbHVlKSAgIHZhbHVlIyN1aTE2Ci0jZW5kaWYKLSNpZm5kZWYgVUlOVDMyX0MKLSMgIGRlZmluZSBVSU5UMzJfQyh2YWx1ZSkgICB2YWx1ZSMjdWkzMgotI2VuZGlmCi0jaWZuZGVmIFVJTlQ2NF9DCi0jICBkZWZpbmUgVUlOVDY0X0ModmFsdWUpICAgdmFsdWUjI3VpNjQKLSNlbmRpZgotI2lmbmRlZiBJTlRNQVhfQwotIyAgZGVmaW5lIElOVE1BWF9DKHZhbHVlKSAgIHZhbHVlIyNpNjQKLSMgIGRlZmluZSBVSU5UTUFYX0ModmFsdWUpICB2YWx1ZSMjdWk2NAotI2VuZGlmCi0KLSMgZWxzZQotLy8gIGRvIGl0IHRoZSBvbGQgZmFzaGlvbmVkIHdheToKLQotLy8gIDgtYml0IHR5cGVzICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jICBpZiAoVUNIQVJfTUFYID09IDB4ZmYpICYmICFkZWZpbmVkKElOVDhfQykKLSMgICBkZWZpbmUgSU5UOF9DKHZhbHVlKSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6aW50OF90Pih2YWx1ZSkKLSMgICBkZWZpbmUgVUlOVDhfQyh2YWx1ZSkgc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OnVpbnQ4X3Q+KHZhbHVlIyN1KQotIyAgZW5kaWYKLQotLy8gIDE2LWJpdCB0eXBlcyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jICBpZiAoVVNIUlRfTUFYID09IDB4ZmZmZikgJiYgIWRlZmluZWQoSU5UMTZfQykKLSMgICBkZWZpbmUgSU5UMTZfQyh2YWx1ZSkgc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmludDE2X3Q+KHZhbHVlKQotIyAgIGRlZmluZSBVSU5UMTZfQyh2YWx1ZSkgc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OnVpbnQxNl90Pih2YWx1ZSMjdSkKLSMgIGVuZGlmCi0KLS8vICAzMi1iaXQgdHlwZXMgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSNpZm5kZWYgSU5UMzJfQwotIyAgaWYgKFVJTlRfTUFYID09IDB4ZmZmZmZmZmYpCi0jICAgZGVmaW5lIElOVDMyX0ModmFsdWUpIHZhbHVlCi0jICAgZGVmaW5lIFVJTlQzMl9DKHZhbHVlKSB2YWx1ZSMjdQotIyAgZWxpZiBVTE9OR19NQVggPT0gMHhmZmZmZmZmZgotIyAgIGRlZmluZSBJTlQzMl9DKHZhbHVlKSB2YWx1ZSMjTAotIyAgIGRlZmluZSBVSU5UMzJfQyh2YWx1ZSkgdmFsdWUjI3VMCi0jICBlbmRpZgotI2VuZGlmCi0KLS8vICA2NC1iaXQgdHlwZXMgKyBpbnRtYXhfdCBhbmQgdWludG1heF90ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSNpZm5kZWYgSU5UNjRfQwotIyAgaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKSAmJiBcCi0gICAgKGRlZmluZWQoVUxMT05HX01BWCkgfHwgZGVmaW5lZChVTE9OR19MT05HX01BWCkgfHwgZGVmaW5lZChVTE9OR0xPTkdfTUFYKSB8fCBkZWZpbmVkKF9MTE9OR19NQVgpKQotCi0jICAgIGlmIGRlZmluZWQoX19ocHV4KQotICAgICAgICAvLyBIUC1VWCdzIHZhbHVlIG9mIFVMT05HX0xPTkdfTUFYIGlzIHVudXNhYmxlIGluIHByZXByb2Nlc3NvciBleHByZXNzaW9ucwotIyAgICAgICBkZWZpbmUgSU5UNjRfQyh2YWx1ZSkgdmFsdWUjI0xMCi0jICAgICAgIGRlZmluZSBVSU5UNjRfQyh2YWx1ZSkgdmFsdWUjI3VMTAotIyAgICBlbGlmIChkZWZpbmVkKFVMTE9OR19NQVgpICYmIFVMTE9OR19NQVggPT0gMTg0NDY3NDQwNzM3MDk1NTE2MTVVTEwpIHx8ICBcCi0gICAgICAgIChkZWZpbmVkKFVMT05HX0xPTkdfTUFYKSAmJiBVTE9OR19MT05HX01BWCA9PSAxODQ0Njc0NDA3MzcwOTU1MTYxNVVMTCkgfHwgIFwKLSAgICAgICAgKGRlZmluZWQoVUxPTkdMT05HX01BWCkgJiYgVUxPTkdMT05HX01BWCA9PSAxODQ0Njc0NDA3MzcwOTU1MTYxNVVMTCkgfHwgXAotICAgICAgICAoZGVmaW5lZChfTExPTkdfTUFYKSAmJiBfTExPTkdfTUFYID09IDE4NDQ2NzQ0MDczNzA5NTUxNjE1VUxMKQotCi0jICAgICAgIGRlZmluZSBJTlQ2NF9DKHZhbHVlKSB2YWx1ZSMjTEwKLSMgICAgICAgZGVmaW5lIFVJTlQ2NF9DKHZhbHVlKSB2YWx1ZSMjdUxMCi0jICAgIGVsc2UKLSMgICAgICAgZXJyb3IgZGVmYXVsdHMgbm90IGNvcnJlY3Q7IHlvdSBtdXN0IGhhbmQgbW9kaWZ5IG5kbmJvb3N0L2NzdGRpbnQuaHBwCi0jICAgIGVuZGlmCi0jICBlbGlmIFVMT05HX01BWCAhPSAweGZmZmZmZmZmCi0KLSMgICAgaWYgVUxPTkdfTUFYID09IDE4NDQ2NzQ0MDczNzA5NTUxNjE1VSAvLyAyKio2NCAtIDEKLSMgICAgICAgZGVmaW5lIElOVDY0X0ModmFsdWUpIHZhbHVlIyNMCi0jICAgICAgIGRlZmluZSBVSU5UNjRfQyh2YWx1ZSkgdmFsdWUjI3VMCi0jICAgIGVsc2UKLSMgICAgICAgZXJyb3IgZGVmYXVsdHMgbm90IGNvcnJlY3Q7IHlvdSBtdXN0IGhhbmQgbW9kaWZ5IG5kbmJvb3N0L2NzdGRpbnQuaHBwCi0jICAgIGVuZGlmCi0jICBlbGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykKLSAgICAgLy8gVXN1YWwgbWFjcm9zIG5vdCBkZWZpbmVkLCB3b3JrIHRoaW5ncyBvdXQgZm9yIG91cnNlbHZlczoKLSMgICAgaWYofjB1TEwgPT0gMTg0NDY3NDQwNzM3MDk1NTE2MTVVTEwpCi0jICAgICAgIGRlZmluZSBJTlQ2NF9DKHZhbHVlKSB2YWx1ZSMjTEwKLSMgICAgICAgZGVmaW5lIFVJTlQ2NF9DKHZhbHVlKSB2YWx1ZSMjdUxMCi0jICAgIGVsc2UKLSMgICAgICAgZXJyb3IgZGVmYXVsdHMgbm90IGNvcnJlY3Q7IHlvdSBtdXN0IGhhbmQgbW9kaWZ5IG5kbmJvb3N0L2NzdGRpbnQuaHBwCi0jICAgIGVuZGlmCi0jICBlbHNlCi0jICAgIGVycm9yIGRlZmF1bHRzIG5vdCBjb3JyZWN0OyB5b3UgbXVzdCBoYW5kIG1vZGlmeSBuZG5ib29zdC9jc3RkaW50LmhwcAotIyAgZW5kaWYKLQotIyAgaWZkZWYgTkROQk9PU1RfTk9fSU5UNjRfVAotIyAgIGRlZmluZSBJTlRNQVhfQyh2YWx1ZSkgSU5UMzJfQyh2YWx1ZSkKLSMgICBkZWZpbmUgVUlOVE1BWF9DKHZhbHVlKSBVSU5UMzJfQyh2YWx1ZSkKLSMgIGVsc2UKLSMgICBkZWZpbmUgSU5UTUFYX0ModmFsdWUpIElOVDY0X0ModmFsdWUpCi0jICAgZGVmaW5lIFVJTlRNQVhfQyh2YWx1ZSkgVUlOVDY0X0ModmFsdWUpCi0jICBlbmRpZgotI2VuZGlmCi0jIGVuZGlmIC8vIEJvcmxhbmQvTWljcm9zb2Z0IHNwZWNpZmljIHdpZHRoIHN1ZmZpeGVzCi0KLSNlbmRpZiAvLyBJTlQjX0MgbWFjcm9zLgotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NzdGRsaWIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jc3RkbGliLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzNkMTI0Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NzdGRsaWIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotLy8gIG5kbmJvb3N0L2NzdGRsaWIuaHBwIGhlYWRlciAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCBCZW1hbiBEYXdlcyAyMDAxLiAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0Ci0vLyAgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy91dGlsaXR5L2NzdGRsaWIuaHRtbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gIFJldmlzaW9uIEhpc3RvcnkKLS8vICAgMjYgRmViIDAxICBJbml0aWFsIHZlcnNpb24gKEJlbWFuIERhd2VzKQotCi0jaWZuZGVmIE5ETkJPT1NUX0NTVERMSUJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0NTVERMSUJfSFBQCi0KLSNpbmNsdWRlIDxjc3RkbGliPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgIC8vICBUaGUgaW50ZW50IGlzIHRvIHByb3Bvc2UgdGhlIGZvbGxvd2luZyBmb3IgYWRkaXRpb24gdG8gbmFtZXNwYWNlIHN0ZAotICAgLy8gIGluIHRoZSBDKysgU3RhbmRhcmQgTGlicmFyeSwgYW5kIHRvIHRoZW4gZGVwcmVjYXRlIEVYSVRfU1VDQ0VTUyBhbmQKLSAgIC8vICBFWElUX0ZBSUxVUkUuICBBcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwsIHRoaXMgaGVhZGVyIGRlZmluZXMgdGhlCi0gICAvLyAgbmV3IGNvbnN0YW50cyBpbiB0ZXJtcyBvZiBFWElUX1NVQ0NFU1MgYW5kIEVYSVRfRkFJTFVSRS4gIEluIGEgbmV3Ci0gICAvLyAgc3RhbmRhcmQsIHRoZSBjb25zdGFudHMgd291bGQgYmUgaW1wbGVtZW50YXRpb24tZGVmaW5lZCwgYWx0aG91Z2ggaXQKLSAgIC8vICBtaWdodCBiZSB3b3J0aHdoaWxlIHRvICJzdWdnZXN0IiAod2hpY2ggYSBzdGFuZGFyZCBpcyBhbGxvd2VkIHRvIGRvKQotICAgLy8gIHZhbHVlcyBvZiAwIGFuZCAxIHJlc3BlY3RpdmVseS4KLQotICAgLy8gIFJhdGlvbmFsZSBmb3IgaGF2aW5nIG11bHRpcGxlIGZhaWx1cmUgdmFsdWVzOiBzb21lIGVudmlyb25tZW50cyBtYXkKLSAgIC8vICB3aXNoIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gZGlmZmVyZW50IGNsYXNzZXMgb2YgZXJyb3JzLgotICAgLy8gIFJhdGlvbmFsZSBmb3IgY2hvaWNlIG9mIHZhbHVlczogcHJvZ3JhbXMgb2Z0ZW4gdXNlIHZhbHVlcyA8IDEwMCBmb3IKLSAgIC8vICB0aGVpciBvd24gZXJyb3IgcmVwb3J0aW5nLiAgVmFsdWVzID4gMjU1IGFyZSBzb21ldGltZXMgcmVzZXJ2ZWQgZm9yCi0gICAvLyAgc3lzdGVtIGRldGVjdGVkIGVycm9ycy4gIDIwMC8yMDEgd2VyZSBzdWdnZXN0ZWQgdG8gbWluaW1pemUgY29uZmxpY3QuCi0KLSAgIGNvbnN0IGludCBleGl0X3N1Y2Nlc3MgPSBFWElUX1NVQ0NFU1M7ICAvLyBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkIHZhbHVlCi0gICBjb25zdCBpbnQgZXhpdF9mYWlsdXJlID0gRVhJVF9GQUlMVVJFOyAgLy8gaW1wbGVtZW50YXRpb24tZGVmaW5lZCB2YWx1ZQotICAgY29uc3QgaW50IGV4aXRfZXhjZXB0aW9uX2ZhaWx1cmUgPSAyMDA7IC8vIG90aGVyd2lzZSB1bmNhdWdodCBleGNlcHRpb24KLSAgIGNvbnN0IGludCBleGl0X3Rlc3RfZmFpbHVyZSA9IDIwMTsgICAgICAvLyByZXBvcnRfZXJyb3Igb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgcmVwb3J0X2NyaXRpY2FsX2Vycm9yIGNhbGxlZC4KLX0KLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY3VycmVudF9mdW5jdGlvbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2N1cnJlbnRfZnVuY3Rpb24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTFmOWZhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY3VycmVudF9mdW5jdGlvbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX0NVUlJFTlRfRlVOQ1RJT05fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0NVUlJFTlRfRlVOQ1RJT05fSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIG5kbmJvb3N0L2N1cnJlbnRfZnVuY3Rpb24uaHBwIC0gTkROQk9PU1RfQ1VSUkVOVF9GVU5DVElPTgotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDIgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZC4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdXRpbGl0eS9jdXJyZW50X2Z1bmN0aW9uLmh0bWwKLS8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLWlubGluZSB2b2lkIGN1cnJlbnRfZnVuY3Rpb25faGVscGVyKCkKLXsKLQotI2lmIGRlZmluZWQoX19HTlVDX18pIHx8IChkZWZpbmVkKF9fTVdFUktTX18pICYmIChfX01XRVJLU19fID49IDB4MzAwMCkpIHx8IChkZWZpbmVkKF9fSUNDKSAmJiAoX19JQ0MgPj0gNjAwKSkgfHwgZGVmaW5lZChfX2doc19fKQotCi0jIGRlZmluZSBORE5CT09TVF9DVVJSRU5UX0ZVTkNUSU9OIF9fUFJFVFRZX0ZVTkNUSU9OX18KLQotI2VsaWYgZGVmaW5lZChfX0RNQ19fKSAmJiAoX19ETUNfXyA+PSAweDgxMCkKLQotIyBkZWZpbmUgTkROQk9PU1RfQ1VSUkVOVF9GVU5DVElPTiBfX1BSRVRUWV9GVU5DVElPTl9fCi0KLSNlbGlmIGRlZmluZWQoX19GVU5DU0lHX18pCi0KLSMgZGVmaW5lIE5ETkJPT1NUX0NVUlJFTlRfRlVOQ1RJT04gX19GVU5DU0lHX18KLQotI2VsaWYgKGRlZmluZWQoX19JTlRFTF9DT01QSUxFUikgJiYgKF9fSU5URUxfQ09NUElMRVIgPj0gNjAwKSkgfHwgKGRlZmluZWQoX19JQk1DUFBfXykgJiYgKF9fSUJNQ1BQX18gPj0gNTAwKSkKLQotIyBkZWZpbmUgTkROQk9PU1RfQ1VSUkVOVF9GVU5DVElPTiBfX0ZVTkNUSU9OX18KLQotI2VsaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pICYmIChfX0JPUkxBTkRDX18gPj0gMHg1NTApCi0KLSMgZGVmaW5lIE5ETkJPT1NUX0NVUlJFTlRfRlVOQ1RJT04gX19GVU5DX18KLQotI2VsaWYgZGVmaW5lZChfX1NURENfVkVSU0lPTl9fKSAmJiAoX19TVERDX1ZFUlNJT05fXyA+PSAxOTk5MDEpCi0KLSMgZGVmaW5lIE5ETkJPT1NUX0NVUlJFTlRfRlVOQ1RJT04gX19mdW5jX18KLQotI2Vsc2UKLQotIyBkZWZpbmUgTkROQk9PU1RfQ1VSUkVOVF9GVU5DVElPTiAiKHVua25vd24pIgotCi0jZW5kaWYKLQotfQotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfQ1VSUkVOVF9GVU5DVElPTl9IUFBfSU5DTFVERUQKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvYmluYXJ5X3NlYXJjaC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9iaW5hcnlfc2VhcmNoLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTY2MzI2Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9iaW5hcnlfc2VhcmNoLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxNiArMCwwIEBACi0vLyBDb3B5cmlnaHQgKGMpICAyMDAwIERhdmlkIEFicmFoYW1zLiAKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8gCi0vLyBDb3B5cmlnaHQgKGMpIDE5OTQKLS8vIEhld2xldHQtUGFja2FyZCBDb21wYW55Ci0vLyAKLS8vIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGRpc3RyaWJ1dGUgYW5kIHNlbGwgdGhpcyBzb2Z0d2FyZQotLy8gYW5kIGl0cyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBpcyBoZXJlYnkgZ3JhbnRlZCB3aXRob3V0IGZlZSwKLS8vIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5kCi0vLyB0aGF0IGJvdGggdGhhdCBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhcgotLy8gaW4gc3VwcG9ydGluZyBkb2N1bWVudGF0aW9uLiAgSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkgbWFrZXMgbm8KLS8vIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZSBmb3IgYW55Ci0vLyBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS4KLS8vIAotLy8gQ29weXJpZ2h0IChjKSAxOTk2Ci0vLyBTaWxpY29uIEdyYXBoaWNzIENvbXB1dGVyIFN5c3RlbXMsIEluYy4KLS8vIAotLy8gUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgZGlzdHJpYnV0ZSBhbmQgc2VsbCB0aGlzIHNvZnR3YXJlCi0vLyBhbmQgaXRzIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlzIGhlcmVieSBncmFudGVkIHdpdGhvdXQgZmVlLAotLy8gcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcyBhbmQKLS8vIHRoYXQgYm90aCB0aGF0IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgYXBwZWFyCi0vLyBpbiBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24uICBTaWxpY29uIEdyYXBoaWNzIG1ha2VzIG5vCi0vLyByZXByZXNlbnRhdGlvbnMgYWJvdXQgdGhlIHN1aXRhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUgZm9yIGFueQotLy8gcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuCi0vLyAKLSNpZm5kZWYgQklOQVJZX1NFQVJDSF9ORE5CT09TVF9EV0FfMTIyNjAwX0hfCi0jIGRlZmluZSBCSU5BUllfU0VBUkNIX05ETkJPT1NUX0RXQV8xMjI2MDBfSF8KLQotIyBpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvaXRlcmF0b3IuaHBwPgotIyBpbmNsdWRlIDx1dGlsaXR5PgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGUgPGNsYXNzIEZvcndhcmRJdGVyLCBjbGFzcyBUcD4KLUZvcndhcmRJdGVyIGxvd2VyX2JvdW5kKEZvcndhcmRJdGVyIGZpcnN0LCBGb3J3YXJkSXRlciBsYXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUcCYgdmFsKSAKLXsKLSAgICB0eXBlZGVmIGRldGFpbDo6aXRlcmF0b3JfdHJhaXRzPEZvcndhcmRJdGVyPiB0cmFpdHM7Ci0gICAgCi0gICAgdHlwZW5hbWUgdHJhaXRzOjpkaWZmZXJlbmNlX3R5cGUgbGVuID0gbmRuYm9vc3Q6OmRldGFpbDo6ZGlzdGFuY2UoZmlyc3QsIGxhc3QpOwotICAgIHR5cGVuYW1lIHRyYWl0czo6ZGlmZmVyZW5jZV90eXBlIGhhbGY7Ci0gICAgRm9yd2FyZEl0ZXIgbWlkZGxlOwotCi0gICAgd2hpbGUgKGxlbiA+IDApIHsKLSAgICAgIGhhbGYgPSBsZW4gPj4gMTsKLSAgICAgIG1pZGRsZSA9IGZpcnN0OwotICAgICAgc3RkOjphZHZhbmNlKG1pZGRsZSwgaGFsZik7Ci0gICAgICBpZiAoKm1pZGRsZSA8IHZhbCkgewotICAgICAgICBmaXJzdCA9IG1pZGRsZTsKLSAgICAgICAgKytmaXJzdDsKLSAgICAgICAgbGVuID0gbGVuIC0gaGFsZiAtIDE7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICAgIGxlbiA9IGhhbGY7Ci0gICAgfQotICAgIHJldHVybiBmaXJzdDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEZvcndhcmRJdGVyLCBjbGFzcyBUcCwgY2xhc3MgQ29tcGFyZT4KLUZvcndhcmRJdGVyIGxvd2VyX2JvdW5kKEZvcndhcmRJdGVyIGZpcnN0LCBGb3J3YXJkSXRlciBsYXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHAmIHZhbCwgQ29tcGFyZSBjb21wKQotewotICB0eXBlZGVmIGRldGFpbDo6aXRlcmF0b3JfdHJhaXRzPEZvcndhcmRJdGVyPiB0cmFpdHM7Ci0KLSAgdHlwZW5hbWUgdHJhaXRzOjpkaWZmZXJlbmNlX3R5cGUgbGVuID0gbmRuYm9vc3Q6OmRldGFpbDo6ZGlzdGFuY2UoZmlyc3QsIGxhc3QpOwotICB0eXBlbmFtZSB0cmFpdHM6OmRpZmZlcmVuY2VfdHlwZSBoYWxmOwotICBGb3J3YXJkSXRlciBtaWRkbGU7Ci0KLSAgd2hpbGUgKGxlbiA+IDApIHsKLSAgICBoYWxmID0gbGVuID4+IDE7Ci0gICAgbWlkZGxlID0gZmlyc3Q7Ci0gICAgc3RkOjphZHZhbmNlKG1pZGRsZSwgaGFsZik7Ci0gICAgaWYgKGNvbXAoKm1pZGRsZSwgdmFsKSkgewotICAgICAgZmlyc3QgPSBtaWRkbGU7Ci0gICAgICArK2ZpcnN0OwotICAgICAgbGVuID0gbGVuIC0gaGFsZiAtIDE7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIGxlbiA9IGhhbGY7Ci0gIH0KLSAgcmV0dXJuIGZpcnN0OwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgRm9yd2FyZEl0ZXIsIGNsYXNzIFRwPgotRm9yd2FyZEl0ZXIgdXBwZXJfYm91bmQoRm9yd2FyZEl0ZXIgZmlyc3QsIEZvcndhcmRJdGVyIGxhc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUcCYgdmFsKQotewotICB0eXBlZGVmIGRldGFpbDo6aXRlcmF0b3JfdHJhaXRzPEZvcndhcmRJdGVyPiB0cmFpdHM7Ci0KLSAgdHlwZW5hbWUgdHJhaXRzOjpkaWZmZXJlbmNlX3R5cGUgbGVuID0gbmRuYm9vc3Q6OmRldGFpbDo6ZGlzdGFuY2UoZmlyc3QsIGxhc3QpOwotICB0eXBlbmFtZSB0cmFpdHM6OmRpZmZlcmVuY2VfdHlwZSBoYWxmOwotICBGb3J3YXJkSXRlciBtaWRkbGU7Ci0KLSAgd2hpbGUgKGxlbiA+IDApIHsKLSAgICBoYWxmID0gbGVuID4+IDE7Ci0gICAgbWlkZGxlID0gZmlyc3Q7Ci0gICAgc3RkOjphZHZhbmNlKG1pZGRsZSwgaGFsZik7Ci0gICAgaWYgKHZhbCA8ICptaWRkbGUpCi0gICAgICBsZW4gPSBoYWxmOwotICAgIGVsc2UgewotICAgICAgZmlyc3QgPSBtaWRkbGU7Ci0gICAgICArK2ZpcnN0OwotICAgICAgbGVuID0gbGVuIC0gaGFsZiAtIDE7Ci0gICAgfQotICB9Ci0gIHJldHVybiBmaXJzdDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEZvcndhcmRJdGVyLCBjbGFzcyBUcCwgY2xhc3MgQ29tcGFyZT4KLUZvcndhcmRJdGVyIHVwcGVyX2JvdW5kKEZvcndhcmRJdGVyIGZpcnN0LCBGb3J3YXJkSXRlciBsYXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHAmIHZhbCwgQ29tcGFyZSBjb21wKQotewotICB0eXBlZGVmIGRldGFpbDo6aXRlcmF0b3JfdHJhaXRzPEZvcndhcmRJdGVyPiB0cmFpdHM7Ci0KLSAgdHlwZW5hbWUgdHJhaXRzOjpkaWZmZXJlbmNlX3R5cGUgbGVuID0gbmRuYm9vc3Q6OmRldGFpbDo6ZGlzdGFuY2UoZmlyc3QsIGxhc3QpOwotICB0eXBlbmFtZSB0cmFpdHM6OmRpZmZlcmVuY2VfdHlwZSBoYWxmOwotICBGb3J3YXJkSXRlciBtaWRkbGU7Ci0KLSAgd2hpbGUgKGxlbiA+IDApIHsKLSAgICBoYWxmID0gbGVuID4+IDE7Ci0gICAgbWlkZGxlID0gZmlyc3Q7Ci0gICAgc3RkOjphZHZhbmNlKG1pZGRsZSwgaGFsZik7Ci0gICAgaWYgKGNvbXAodmFsLCAqbWlkZGxlKSkKLSAgICAgIGxlbiA9IGhhbGY7Ci0gICAgZWxzZSB7Ci0gICAgICBmaXJzdCA9IG1pZGRsZTsKLSAgICAgICsrZmlyc3Q7Ci0gICAgICBsZW4gPSBsZW4gLSBoYWxmIC0gMTsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuIGZpcnN0OwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgRm9yd2FyZEl0ZXIsIGNsYXNzIFRwPgotc3RkOjpwYWlyPEZvcndhcmRJdGVyLCBGb3J3YXJkSXRlcj4KLWVxdWFsX3JhbmdlKEZvcndhcmRJdGVyIGZpcnN0LCBGb3J3YXJkSXRlciBsYXN0LCBjb25zdCBUcCYgdmFsKQotewotICB0eXBlZGVmIGRldGFpbDo6aXRlcmF0b3JfdHJhaXRzPEZvcndhcmRJdGVyPiB0cmFpdHM7Ci0KLSAgdHlwZW5hbWUgdHJhaXRzOjpkaWZmZXJlbmNlX3R5cGUgbGVuID0gbmRuYm9vc3Q6OmRldGFpbDo6ZGlzdGFuY2UoZmlyc3QsIGxhc3QpOwotICB0eXBlbmFtZSB0cmFpdHM6OmRpZmZlcmVuY2VfdHlwZSBoYWxmOwotICBGb3J3YXJkSXRlciBtaWRkbGUsIGxlZnQsIHJpZ2h0OwotCi0gIHdoaWxlIChsZW4gPiAwKSB7Ci0gICAgaGFsZiA9IGxlbiA+PiAxOwotICAgIG1pZGRsZSA9IGZpcnN0OwotICAgIHN0ZDo6YWR2YW5jZShtaWRkbGUsIGhhbGYpOwotICAgIGlmICgqbWlkZGxlIDwgdmFsKSB7Ci0gICAgICBmaXJzdCA9IG1pZGRsZTsKLSAgICAgICsrZmlyc3Q7Ci0gICAgICBsZW4gPSBsZW4gLSBoYWxmIC0gMTsKLSAgICB9Ci0gICAgZWxzZSBpZiAodmFsIDwgKm1pZGRsZSkKLSAgICAgIGxlbiA9IGhhbGY7Ci0gICAgZWxzZSB7Ci0gICAgICBsZWZ0ID0gbmRuYm9vc3Q6OmRldGFpbDo6bG93ZXJfYm91bmQoZmlyc3QsIG1pZGRsZSwgdmFsKTsKLSAgICAgIHN0ZDo6YWR2YW5jZShmaXJzdCwgbGVuKTsKLSAgICAgIHJpZ2h0ID0gbmRuYm9vc3Q6OmRldGFpbDo6dXBwZXJfYm91bmQoKyttaWRkbGUsIGZpcnN0LCB2YWwpOwotICAgICAgcmV0dXJuIHN0ZDo6cGFpcjxGb3J3YXJkSXRlciwgRm9yd2FyZEl0ZXI+KGxlZnQsIHJpZ2h0KTsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuIHN0ZDo6cGFpcjxGb3J3YXJkSXRlciwgRm9yd2FyZEl0ZXI+KGZpcnN0LCBmaXJzdCk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBGb3J3YXJkSXRlciwgY2xhc3MgVHAsIGNsYXNzIENvbXBhcmU+Ci1zdGQ6OnBhaXI8Rm9yd2FyZEl0ZXIsIEZvcndhcmRJdGVyPgotZXF1YWxfcmFuZ2UoRm9yd2FyZEl0ZXIgZmlyc3QsIEZvcndhcmRJdGVyIGxhc3QsIGNvbnN0IFRwJiB2YWwsCi0gICAgICAgICAgICAgIENvbXBhcmUgY29tcCkKLXsKLSAgdHlwZWRlZiBkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcj4gdHJhaXRzOwotCi0gIHR5cGVuYW1lIHRyYWl0czo6ZGlmZmVyZW5jZV90eXBlIGxlbiA9IG5kbmJvb3N0OjpkZXRhaWw6OmRpc3RhbmNlKGZpcnN0LCBsYXN0KTsKLSAgdHlwZW5hbWUgdHJhaXRzOjpkaWZmZXJlbmNlX3R5cGUgaGFsZjsKLSAgRm9yd2FyZEl0ZXIgbWlkZGxlLCBsZWZ0LCByaWdodDsKLQotICB3aGlsZSAobGVuID4gMCkgewotICAgIGhhbGYgPSBsZW4gPj4gMTsKLSAgICBtaWRkbGUgPSBmaXJzdDsKLSAgICBzdGQ6OmFkdmFuY2UobWlkZGxlLCBoYWxmKTsKLSAgICBpZiAoY29tcCgqbWlkZGxlLCB2YWwpKSB7Ci0gICAgICBmaXJzdCA9IG1pZGRsZTsKLSAgICAgICsrZmlyc3Q7Ci0gICAgICBsZW4gPSBsZW4gLSBoYWxmIC0gMTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoY29tcCh2YWwsICptaWRkbGUpKQotICAgICAgbGVuID0gaGFsZjsKLSAgICBlbHNlIHsKLSAgICAgIGxlZnQgPSBuZG5ib29zdDo6ZGV0YWlsOjpsb3dlcl9ib3VuZChmaXJzdCwgbWlkZGxlLCB2YWwsIGNvbXApOwotICAgICAgc3RkOjphZHZhbmNlKGZpcnN0LCBsZW4pOwotICAgICAgcmlnaHQgPSBuZG5ib29zdDo6ZGV0YWlsOjp1cHBlcl9ib3VuZCgrK21pZGRsZSwgZmlyc3QsIHZhbCwgY29tcCk7Ci0gICAgICByZXR1cm4gc3RkOjpwYWlyPEZvcndhcmRJdGVyLCBGb3J3YXJkSXRlcj4obGVmdCwgcmlnaHQpOwotICAgIH0KLSAgfQotICByZXR1cm4gc3RkOjpwYWlyPEZvcndhcmRJdGVyLCBGb3J3YXJkSXRlcj4oZmlyc3QsIGZpcnN0KTsKLX0gICAgICAgICAgIAotCi10ZW1wbGF0ZSA8Y2xhc3MgRm9yd2FyZEl0ZXIsIGNsYXNzIFRwPgotYm9vbCBiaW5hcnlfc2VhcmNoKEZvcndhcmRJdGVyIGZpcnN0LCBGb3J3YXJkSXRlciBsYXN0LAotICAgICAgICAgICAgICAgICAgIGNvbnN0IFRwJiB2YWwpIHsKLSAgRm9yd2FyZEl0ZXIgaSA9IG5kbmJvb3N0OjpkZXRhaWw6Omxvd2VyX2JvdW5kKGZpcnN0LCBsYXN0LCB2YWwpOwotICByZXR1cm4gaSAhPSBsYXN0ICYmICEodmFsIDwgKmkpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgRm9yd2FyZEl0ZXIsIGNsYXNzIFRwLCBjbGFzcyBDb21wYXJlPgotYm9vbCBiaW5hcnlfc2VhcmNoKEZvcndhcmRJdGVyIGZpcnN0LCBGb3J3YXJkSXRlciBsYXN0LAotICAgICAgICAgICAgICAgICAgIGNvbnN0IFRwJiB2YWwsCi0gICAgICAgICAgICAgICAgICAgQ29tcGFyZSBjb21wKSB7Ci0gIEZvcndhcmRJdGVyIGkgPSBuZG5ib29zdDo6ZGV0YWlsOjpsb3dlcl9ib3VuZChmaXJzdCwgbGFzdCwgdmFsLCBjb21wKTsKLSAgcmV0dXJuIGkgIT0gbGFzdCAmJiAhY29tcCh2YWwsICppKTsKLX0KLQotfX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0OjpkZXRhaWwKLQotI2VuZGlmIC8vIEJJTkFSWV9TRUFSQ0hfTkROQk9PU1RfRFdBXzEyMjYwMF9IXwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvYml0bWFzay5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9iaXRtYXNrLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTVkY2U0YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9iaXRtYXNrLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8vICBuZG5ib29zdC9kZXRhaWwvYml0bWFzay5ocHAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBDb3B5cmlnaHQgQmVtYW4gRGF3ZXMgMjAwNgotCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0KLS8vICBVc2FnZTogIGVudW0gZm9vIHsgYT0xLCBiPTIsIGM9NCB9OwotLy8gICAgICAgICAgTkROQk9PU1RfQklUTUFTSyggZm9vICk7Ci0vLwotLy8gICAgICAgICAgdm9pZCBmKCBmb28gYXJnICk7Ci0vLyAgICAgICAgICAuLi4KLS8vICAgICAgICAgIGYoIGEgfCBjICk7Ci0KLSNpZm5kZWYgTkROQk9PU1RfQklUTUFTS19IUFAKLSNkZWZpbmUgTkROQk9PU1RfQklUTUFTS19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NzdGRpbnQuaHBwPgotCi0jZGVmaW5lIE5ETkJPT1NUX0JJVE1BU0soQml0bWFzaykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBpbmxpbmUgQml0bWFzayBvcGVyYXRvcnwgKEJpdG1hc2sgeCAsIEJpdG1hc2sgeSApICAgICAgICAgICAgICAgICAgICAgICBcCi0gIHsgcmV0dXJuIHN0YXRpY19jYXN0PEJpdG1hc2s+KCBzdGF0aWNfY2FzdDxuZG5ib29zdDo6aW50X2xlYXN0MzJfdD4oeCkgICAgIFwKLSAgICAgIHwgc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmludF9sZWFzdDMyX3Q+KHkpKTsgfSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGlubGluZSBCaXRtYXNrIG9wZXJhdG9yJiAoQml0bWFzayB4ICwgQml0bWFzayB5ICkgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Qml0bWFzaz4oIHN0YXRpY19jYXN0PG5kbmJvb3N0OjppbnRfbGVhc3QzMl90Pih4KSAgICAgXAotICAgICAgJiBzdGF0aWNfY2FzdDxuZG5ib29zdDo6aW50X2xlYXN0MzJfdD4oeSkpOyB9ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgaW5saW5lIEJpdG1hc2sgb3BlcmF0b3JeIChCaXRtYXNrIHggLCBCaXRtYXNrIHkgKSAgICAgICAgICAgICAgICAgICAgICAgXAotICB7IHJldHVybiBzdGF0aWNfY2FzdDxCaXRtYXNrPiggc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmludF9sZWFzdDMyX3Q+KHgpICAgICBcCi0gICAgICBeIHN0YXRpY19jYXN0PG5kbmJvb3N0OjppbnRfbGVhc3QzMl90Pih5KSk7IH0gICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBpbmxpbmUgQml0bWFzayBvcGVyYXRvcn4gKEJpdG1hc2sgeCApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIHsgcmV0dXJuIHN0YXRpY19jYXN0PEJpdG1hc2s+KH5zdGF0aWNfY2FzdDxuZG5ib29zdDo6aW50X2xlYXN0MzJfdD4oeCkpOyB9IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBpbmxpbmUgQml0bWFzayAmIG9wZXJhdG9yJj0oQml0bWFzayAmIHggLCBCaXRtYXNrIHkpICAgICAgICAgICAgICAgICAgICBcCi0gIHsgeCA9IHggJiB5IDsgcmV0dXJuIHggOyB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBpbmxpbmUgQml0bWFzayAmIG9wZXJhdG9yfD0oQml0bWFzayAmIHggLCBCaXRtYXNrIHkpICAgICAgICAgICAgICAgICAgICBcCi0gIHsgeCA9IHggfCB5IDsgcmV0dXJuIHggOyB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBpbmxpbmUgQml0bWFzayAmIG9wZXJhdG9yXj0oQml0bWFzayAmIHggLCBCaXRtYXNrIHkpICAgICAgICAgICAgICAgICAgICBcCi0gIHsgeCA9IHggXiB5IDsgcmV0dXJuIHggOyB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotCi0jZW5kaWYgLy8gTkROQk9PU1RfQklUTUFTS19IUFAKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvY2FsbF90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvY2FsbF90cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MTBmNGFlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL2NhbGxfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3MiArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy91dGlsaXR5IGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0vLyBjYWxsX3RyYWl0czogZGVmaW5lcyB0eXBlZGVmcyBmb3IgZnVuY3Rpb24gdXNhZ2UKLS8vIChzZWUgbGlicy91dGlsaXR5L2NhbGxfdHJhaXRzLmh0bSkKLQotLyogUmVsZWFzZSBub3RlczoKLSAgIDIzcmQgSnVseSAyMDAwOgotICAgICAgRml4ZWQgYXJyYXkgc3BlY2lhbGl6YXRpb24uIChKTSkKLSAgICAgIEFkZGVkIEJvcmxhbmQgc3BlY2lmaWMgZml4ZXMgZm9yIHJlZmVyZW5jZSB0eXBlcwotICAgICAgKGlzc3VlIHJhaXNlZCBieSBTdGV2ZSBDbGVhcnkpLgotKi8KLQotI2lmbmRlZiBORE5CT09TVF9ERVRBSUxfQ0FMTF9UUkFJVFNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9DQUxMX1RSQUlUU19IUFAKLQotI2lmbmRlZiBORE5CT09TVF9DT05GSUdfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNlbmRpZgotI2luY2x1ZGUgPGNzdGRkZWY+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcml0aG1ldGljLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19lbnVtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2ludGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotbmFtZXNwYWNlIGRldGFpbHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIGJvb2wgc21hbGxfPgotc3RydWN0IGN0X2ltcDIKLXsKLSAgIHR5cGVkZWYgY29uc3QgVCYgcGFyYW1fdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGN0X2ltcDI8VCwgdHJ1ZT4KLXsKLSAgIHR5cGVkZWYgY29uc3QgVCBwYXJhbV90eXBlOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIGJvb2wgaXNwLCBib29sIGIxLCBib29sIGIyPgotc3RydWN0IGN0X2ltcAotewotICAgdHlwZWRlZiBjb25zdCBUJiBwYXJhbV90eXBlOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIGJvb2wgaXNwLCBib29sIGIyPgotc3RydWN0IGN0X2ltcDxULCBpc3AsIHRydWUsIGIyPgotewotICAgdHlwZWRlZiB0eXBlbmFtZSBjdF9pbXAyPFQsIHNpemVvZihUKSA8PSBzaXplb2Yodm9pZCopPjo6cGFyYW1fdHlwZSBwYXJhbV90eXBlOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIGJvb2wgaXNwLCBib29sIGIxPgotc3RydWN0IGN0X2ltcDxULCBpc3AsIGIxLCB0cnVlPgotewotICAgdHlwZWRlZiB0eXBlbmFtZSBjdF9pbXAyPFQsIHNpemVvZihUKSA8PSBzaXplb2Yodm9pZCopPjo6cGFyYW1fdHlwZSBwYXJhbV90eXBlOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIGJvb2wgYjEsIGJvb2wgYjI+Ci1zdHJ1Y3QgY3RfaW1wPFQsIHRydWUsIGIxLCBiMj4KLXsKLSAgIHR5cGVkZWYgY29uc3QgVCBwYXJhbV90eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBjYWxsX3RyYWl0cwotewotcHVibGljOgotICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIFQmIHJlZmVyZW5jZTsKLSAgIHR5cGVkZWYgY29uc3QgVCYgY29uc3RfcmVmZXJlbmNlOwotICAgLy8KLSAgIC8vIEMrKyBCdWlsZGVyIHdvcmthcm91bmQ6IHdlIHNob3VsZCBiZSBhYmxlIHRvIGRlZmluZSBhIGNvbXBpbGUgdGltZQotICAgLy8gY29uc3RhbnQgYW5kIHBhc3MgdGhhdCBhcyBhIHNpbmdsZSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgdG8gY3RfaW1wPFQsYm9vbD4sCi0gICAvLyBob3dldmVyIGNvbXBpbGVyIGJ1Z3MgcHJldmVudCB0aGlzIC0gaW5zdGVhZCBwYXNzIHRocmVlIGJvb2wncyB0bwotICAgLy8gY3RfaW1wPFQsYm9vbCxib29sLGJvb2w+IGFuZCBhZGQgYW4gZXh0cmEgcGFydGlhbCBzcGVjaWFsaXNhdGlvbgotICAgLy8gb2YgY3RfaW1wIHRvIGhhbmRsZSB0aGUgbG9naWMuIChKTSkKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6Y3RfaW1wPAotICAgICAgVCwKLSAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8VD46OnZhbHVlLAotICAgICAgOjpuZG5ib29zdDo6aXNfYXJpdGhtZXRpYzxUPjo6dmFsdWUsCi0gICAgICA6Om5kbmJvb3N0Ojppc19lbnVtPFQ+Ojp2YWx1ZQotICAgPjo6cGFyYW1fdHlwZSBwYXJhbV90eXBlOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgY2FsbF90cmFpdHM8VCY+Ci17Ci0gICB0eXBlZGVmIFQmIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIFQmIHJlZmVyZW5jZTsKLSAgIHR5cGVkZWYgY29uc3QgVCYgY29uc3RfcmVmZXJlbmNlOwotICAgdHlwZWRlZiBUJiBwYXJhbV90eXBlOyAgLy8gaGggcmVtb3ZlZCBjb25zdAotfTsKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoIF9fQk9STEFORENfXywgIDwgMHg1QTAgKQotLy8gdGhlc2UgYXJlIGlsbGVnYWwgc3BlY2lhbGlzYXRpb25zOyBjdi1xdWFsaWZpZXMgYXBwbGllZCB0bwotLy8gcmVmZXJlbmNlcyBoYXZlIG5vIGVmZmVjdCBhY2NvcmRpbmcgdG8gWzguMy4ycDFdLAotLy8gQysrIEJ1aWxkZXIgcmVxdWlyZXMgdGhlbSB0aG91Z2ggYXMgaXQgdHJlYXRzIGN2LXF1YWxpZmllZAotLy8gcmVmZXJlbmNlcyBhcyBkaXN0aW5jdCB0eXBlcy4uLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgY2FsbF90cmFpdHM8VCZjb25zdD4KLXsKLSAgIHR5cGVkZWYgVCYgdmFsdWVfdHlwZTsKLSAgIHR5cGVkZWYgVCYgcmVmZXJlbmNlOwotICAgdHlwZWRlZiBjb25zdCBUJiBjb25zdF9yZWZlcmVuY2U7Ci0gICB0eXBlZGVmIFQmIHBhcmFtX3R5cGU7ICAvLyBoaCByZW1vdmVkIGNvbnN0Ci19OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgY2FsbF90cmFpdHM8VCZ2b2xhdGlsZT4KLXsKLSAgIHR5cGVkZWYgVCYgdmFsdWVfdHlwZTsKLSAgIHR5cGVkZWYgVCYgcmVmZXJlbmNlOwotICAgdHlwZWRlZiBjb25zdCBUJiBjb25zdF9yZWZlcmVuY2U7Ci0gICB0eXBlZGVmIFQmIHBhcmFtX3R5cGU7ICAvLyBoaCByZW1vdmVkIGNvbnN0Ci19OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgY2FsbF90cmFpdHM8VCZjb25zdCB2b2xhdGlsZT4KLXsKLSAgIHR5cGVkZWYgVCYgdmFsdWVfdHlwZTsKLSAgIHR5cGVkZWYgVCYgcmVmZXJlbmNlOwotICAgdHlwZWRlZiBjb25zdCBUJiBjb25zdF9yZWZlcmVuY2U7Ci0gICB0eXBlZGVmIFQmIHBhcmFtX3R5cGU7ICAvLyBoaCByZW1vdmVkIGNvbnN0Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBjYWxsX3RyYWl0czwgVCAqID4KLXsKLSAgIHR5cGVkZWYgVCAqIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIFQgKiAmIHJlZmVyZW5jZTsKLSAgIHR5cGVkZWYgVCAqIGNvbnN0ICYgY29uc3RfcmVmZXJlbmNlOwotICAgdHlwZWRlZiBUICogY29uc3QgcGFyYW1fdHlwZTsgIC8vIGhoIHJlbW92ZWQgY29uc3QKLX07Ci0jZW5kaWYKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19BUlJBWV9UWVBFX1NQRUNJQUxJWkFUSU9OUykKLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBOPgotc3RydWN0IGNhbGxfdHJhaXRzPFQgW05dPgotewotcHJpdmF0ZToKLSAgIHR5cGVkZWYgVCBhcnJheV90eXBlW05dOwotcHVibGljOgotICAgLy8gZGVncmFkZXMgYXJyYXkgdG8gcG9pbnRlcjoKLSAgIHR5cGVkZWYgY29uc3QgVCogdmFsdWVfdHlwZTsKLSAgIHR5cGVkZWYgYXJyYXlfdHlwZSYgcmVmZXJlbmNlOwotICAgdHlwZWRlZiBjb25zdCBhcnJheV90eXBlJiBjb25zdF9yZWZlcmVuY2U7Ci0gICB0eXBlZGVmIGNvbnN0IFQqIGNvbnN0IHBhcmFtX3R5cGU7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc3RkOjpzaXplX3QgTj4KLXN0cnVjdCBjYWxsX3RyYWl0czxjb25zdCBUIFtOXT4KLXsKLXByaXZhdGU6Ci0gICB0eXBlZGVmIGNvbnN0IFQgYXJyYXlfdHlwZVtOXTsKLXB1YmxpYzoKLSAgIC8vIGRlZ3JhZGVzIGFycmF5IHRvIHBvaW50ZXI6Ci0gICB0eXBlZGVmIGNvbnN0IFQqIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIGFycmF5X3R5cGUmIHJlZmVyZW5jZTsKLSAgIHR5cGVkZWYgY29uc3QgYXJyYXlfdHlwZSYgY29uc3RfcmVmZXJlbmNlOwotICAgdHlwZWRlZiBjb25zdCBUKiBjb25zdCBwYXJhbV90eXBlOwotfTsKLSNlbmRpZgotCi19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9ERVRBSUxfQ0FMTF9UUkFJVFNfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9jb250YWluZXJfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL2NvbnRhaW5lcl9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MDgxZjA3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL2NvbnRhaW5lcl9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTYyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IDIwMDUtMjAxMSBEYW5pZWwgSmFtZXMuCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gTm90ZTogaWYgeW91IGNoYW5nZSB0aGlzIGluY2x1ZGUgZ3VhcmQsIHlvdSBhbHNvIG5lZWQgdG8gY2hhbmdlCi0vLyBjb250YWluZXJfZndkX2NvbXBpbGVfZmFpbC5jcHAKLSNpZiAhZGVmaW5lZChORE5CT09TVF9ERVRBSUxfQ09OVEFJTkVSX0ZXRF9IUFApCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9DT05UQUlORVJfRldEX0hQUAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApICYmIFwKLSAgICAhZGVmaW5lZChORE5CT09TVF9ERVRBSUxfVEVTVF9DT05GSUdfT05MWSkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8gRGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9OT19DT05UQUlORVJfRldEIGlmIHlvdSBkb24ndCB3YW50IHRoaXMgaGVhZGVyIHRvICAgICAgLy8KLS8vIGZvcndhcmQgZGVjbGFyZSBzdGFuZGFyZCBjb250YWluZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8gTkROQk9PU1RfREVUQUlMX0NPTlRBSU5FUl9GV0QgdG8gbWFrZSBpdCBmb3dhcmQgZGVjbGFyZSBjb250YWluZXJzIGV2ZW4gaWYgaXQgLy8KLS8vIG5vcm1hbGx5IGRvZXNuJ3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8gTkROQk9PU1RfREVUQUlMX05PX0NPTlRBSU5FUl9GV0Qgb3ZlcnJpZGVzIE5ETkJPT1NUX0RFVEFJTF9DT05UQUlORVJfRldELiAgICAgICAgLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfREVUQUlMX05PX0NPTlRBSU5FUl9GV0QpCi0jICBpZiBkZWZpbmVkKE5ETkJPT1NUX0RFVEFJTF9DT05UQUlORVJfRldEKQotICAgICAvLyBGb3JjZSBmb3J3YXJkIGRlY2xhcmF0aW9ucy4KLSMgIGVsaWYgZGVmaW5lZChfX1NHSV9TVExfUE9SVCkgfHwgZGVmaW5lZChfU1RMUE9SVF9WRVJTSU9OKQotICAgICAvLyBTVExwb3J0Ci0jICAgIGRlZmluZSBORE5CT09TVF9ERVRBSUxfTk9fQ09OVEFJTkVSX0ZXRAotIyAgZWxpZiBkZWZpbmVkKF9fTElCQ09NT19fKQotICAgICAvLyBDb21lYXUgU1RMOgotIyAgICBkZWZpbmUgTkROQk9PU1RfREVUQUlMX05PX0NPTlRBSU5FUl9GV0QKLSMgIGVsaWYgZGVmaW5lZChfX1NURF9SV0NPTVBJTEVSX0hfXykgfHwgZGVmaW5lZChfUldTVERfVkVSKQotICAgICAvLyBSb2d1ZSBXYXZlIGxpYnJhcnk6Ci0jICAgIGRlZmluZSBORE5CT09TVF9ERVRBSUxfTk9fQ09OVEFJTkVSX0ZXRAotIyAgZWxpZiBkZWZpbmVkKF9MSUJDUFBfVkVSU0lPTikKLSAgICAgLy8gbGliYysrCi0jICAgIGRlZmluZSBORE5CT09TVF9ERVRBSUxfTk9fQ09OVEFJTkVSX0ZXRAotIyAgZWxpZiBkZWZpbmVkKF9fR0xJQkNQUF9fKSB8fCBkZWZpbmVkKF9fR0xJQkNYWF9fKQotICAgICAvLyBHTlUgbGlic3RkYysrIDMKLSAgICAgLy8KLSAgICAgLy8gRGlzYWJsZSBmb3J3YXJkaW5nIGZvciBhbGwgcmVjZW50IHZlcnNpb25zLCBhcyB0aGUgbGlicmFyeSBoYXMgYQotICAgICAvLyB2ZXJzaW9uZWQgbmFtZXNwYWNlIG1vZGUsIGFuZCBJIGRvbid0IGtub3cgaG93IHRvIGRldGVjdCBpdC4KLSMgICAgaWYgX19HTElCQ1hYX18gPj0gMjAwNzA1MTMgXAotICAgICAgICB8fCBkZWZpbmVkKF9HTElCQ1hYX0RFQlVHKSBcCi0gICAgICAgIHx8IGRlZmluZWQoX0dMSUJDWFhfUEFSQUxMRUwpIFwKLSAgICAgICAgfHwgZGVmaW5lZChfR0xJQkNYWF9QUk9GSUxFKQotIyAgICAgIGRlZmluZSBORE5CT09TVF9ERVRBSUxfTk9fQ09OVEFJTkVSX0ZXRAotIyAgICBlbHNlCi0jICAgICAgaWYgZGVmaW5lZChfX0dMSUJDWFhfXykgJiYgX19HTElCQ1hYX18gPj0gMjAwNDA1MzAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9DT05UQUlORVJfRldEX0NPTVBMRVhfU1RSVUNUCi0jICAgICAgZW5kaWYKLSMgICAgZW5kaWYKLSMgIGVsaWYgZGVmaW5lZChfX1NUTF9DT05GSUdfSCkKLSAgICAgLy8gZ2VuZXJpYyBTR0kgU1RMCi0gICAgIC8vCi0gICAgIC8vIEZvcndhcmQgZGVjbGFyYXRpb24gc2VlbXMgdG8gYmUgb2theSwgYnV0IGl0IGhhcyBhIGNvdXBsZSBvZiBvZGQKLSAgICAgLy8gaW1wbGVtZW50YXRpb25zLgotIyAgICBkZWZpbmUgTkROQk9PU1RfQ09OVEFJTkVSX0ZXRF9CQURfQklUU0VUCi0jICAgIGlmICFkZWZpbmVkKF9fU1RMX05PTl9UWVBFX1RNUExfUEFSQU1fQlVHKQotIyAgICAgIGRlZmluZSBORE5CT09TVF9DT05UQUlORVJfRldEX0JBRF9ERVFVRQotIyAgICAgZW5kaWYKLSMgIGVsaWYgZGVmaW5lZChfX01TTF9DUFBfXykKLSAgICAgLy8gTVNMIHN0YW5kYXJkIGxpYjoKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9OT19DT05UQUlORVJfRldECi0jICBlbGlmIGRlZmluZWQoX19JQk1DUFBfXykKLSAgICAgLy8gVGhlIGRlZmF1bHQgVkFDUFAgc3RkIGxpYiwgZm9yd2FyZCBkZWNsYXJhdGlvbiBzZWVtcyB0byBiZSBmaW5lLgotIyAgZWxpZiBkZWZpbmVkKE1TSVBMX0NPTVBJTEVfSCkKLSAgICAgLy8gTW9kZW5hIEMrKyBzdGFuZGFyZCBsaWJyYXJ5Ci0jICAgIGRlZmluZSBORE5CT09TVF9ERVRBSUxfTk9fQ09OVEFJTkVSX0ZXRAotIyAgZWxpZiAoZGVmaW5lZChfWVZBTFMpICYmICFkZWZpbmVkKF9fSUJNQ1BQX18pKSB8fCBkZWZpbmVkKF9DUFBMSUJfVkVSKQotICAgICAvLyBEaW5rdW13YXJlIExpYnJhcnkgKHRoaXMgaGFzIHRvIGFwcGVhciBhZnRlciBhbnkgcG9zc2libGUgcmVwbGFjZW1lbnQKLSAgICAgLy8gbGlicmFyaWVzKQotIyAgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfREVUQUlMX05PX0NPTlRBSU5FUl9GV0QKLSMgIGVuZGlmCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0RFVEFJTF9URVNUX0NPTkZJR19PTkxZKQotCi0jaWYgZGVmaW5lZChORE5CT09TVF9ERVRBSUxfTk9fQ09OVEFJTkVSX0ZXRCkgJiYgXAotICAgICFkZWZpbmVkKE5ETkJPT1NUX0RFVEFJTF9URVNUX0ZPUkNFX0NPTlRBSU5FUl9GV0QpCi0KLSNpbmNsdWRlIDxkZXF1ZT4KLSNpbmNsdWRlIDxsaXN0PgotI2luY2x1ZGUgPHZlY3Rvcj4KLSNpbmNsdWRlIDxtYXA+Ci0jaW5jbHVkZSA8c2V0PgotI2luY2x1ZGUgPGJpdHNldD4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8Y29tcGxleD4KLQotI2Vsc2UKLQotI2luY2x1ZGUgPGNzdGRkZWY+Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0NPTlRBSU5FUl9GV0RfQkFEX0RFUVVFKQotI2luY2x1ZGUgPGRlcXVlPgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0NPTlRBSU5FUl9GV0RfQkFEX0JJVFNFVCkKLSNpbmNsdWRlIDxiaXRzZXQ+Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDA5OSkgLy8gc3RydWN0L2NsYXNzIG1pc21hdGNoIGluIGZ3ZCBkZWNsYXJhdGlvbnMKLSNlbmRpZgotCi1uYW1lc3BhY2Ugc3RkCi17Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGNsYXNzIGFsbG9jYXRvcjsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPiBjbGFzcyBiYXNpY19zdHJpbmc7Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA8IDMpICYmICFkZWZpbmVkKF9fU0dJX1NUTF9QT1JUKSAmJiAhZGVmaW5lZChfU1RMUE9SVF9WRVJTSU9OKQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIGNoYXJUPiBzdHJ1Y3Qgc3RyaW5nX2NoYXJfdHJhaXRzOwotI2Vsc2UKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+IHN0cnVjdCBjaGFyX3RyYWl0czsKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9DT05UQUlORVJfRldEX0NPTVBMRVhfU1RSVUNUKQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgY29tcGxleDsKLSNlbHNlCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGNsYXNzIGNvbXBsZXg7Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0NPTlRBSU5FUl9GV0RfQkFEX0RFUVVFKQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBBbGxvY2F0b3I+IGNsYXNzIGRlcXVlOwotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQWxsb2NhdG9yPiBjbGFzcyBsaXN0OwotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBBbGxvY2F0b3I+IGNsYXNzIHZlY3RvcjsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgS2V5LCBjbGFzcyBULCBjbGFzcyBDb21wYXJlLCBjbGFzcyBBbGxvY2F0b3I+IGNsYXNzIG1hcDsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgS2V5LCBjbGFzcyBULCBjbGFzcyBDb21wYXJlLCBjbGFzcyBBbGxvY2F0b3I+Ci0gICAgY2xhc3MgbXVsdGltYXA7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIEtleSwgY2xhc3MgQ29tcGFyZSwgY2xhc3MgQWxsb2NhdG9yPiBjbGFzcyBzZXQ7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIEtleSwgY2xhc3MgQ29tcGFyZSwgY2xhc3MgQWxsb2NhdG9yPiBjbGFzcyBtdWx0aXNldDsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0NPTlRBSU5FUl9GV0RfQkFEX0JJVFNFVCkKLSAgICB0ZW1wbGF0ZSA8c2l6ZV90IE4+IGNsYXNzIGJpdHNldDsKLSNlbmRpZgotICAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+IHN0cnVjdCBwYWlyOwotfQotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfREVUQUlMX05PX0NPTlRBSU5FUl9GV0QgJiYKLSAgICAgICAvLyAhZGVmaW5lZChORE5CT09TVF9ERVRBSUxfVEVTVF9GT1JDRV9DT05UQUlORVJfRldEKQotCi0jZW5kaWYgLy8gTkROQk9PU1RfREVUQUlMX1RFU1RfQ09ORklHX09OTFkKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9lbmRpYW4uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvZW5kaWFuLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzA3YmQwMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9lbmRpYW4uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTI2ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA1IENhbGViIEVwc3RlaW4KLS8vIENvcHlyaWdodCAyMDA2IEpvaG4gTWFkZG9jawotLy8gQ29weXJpZ2h0IDIwMTAgUmVuZSBSaXZlcmEKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnktCi0vLyBpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTcKLSAqIFNpbGljb24gR3JhcGhpY3MgQ29tcHV0ZXIgU3lzdGVtcywgSW5jLgotICoKLSAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGRpc3RyaWJ1dGUgYW5kIHNlbGwgdGhpcyBzb2Z0d2FyZQotICogYW5kIGl0cyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBpcyBoZXJlYnkgZ3JhbnRlZCB3aXRob3V0IGZlZSwKLSAqIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5kCi0gKiB0aGF0IGJvdGggdGhhdCBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhcgotICogaW4gc3VwcG9ydGluZyBkb2N1bWVudGF0aW9uLiAgU2lsaWNvbiBHcmFwaGljcyBtYWtlcyBubwotICogcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlIGZvciBhbnkKLSAqIHB1cnBvc2UuICBJdCBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgZXhwcmVzcyBvciBpbXBsaWVkIHdhcnJhbnR5LgotICovCi0KLS8qCi0gKiBDb3B5cmlnaHQgbm90aWNlIHJlcHJvZHVjZWQgZnJvbSA8bmRuYm9vc3QvZGV0YWlsL2xpbWl0cy5ocHA+LCBmcm9tCi0gKiB3aGljaCB0aGlzIGNvZGUgd2FzIG9yaWdpbmFsbHkgdGFrZW4uCi0gKgotICogTW9kaWZpZWQgYnkgQ2FsZWIgRXBzdGVpbiB0byB1c2UgPGVuZGlhbi5oPiB3aXRoIEdOVSBsaWJjIGFuZCB0bwotICogZGVmaW5lZCB0aGUgTkROQk9PU1RfRU5ESUFOIG1hY3JvLgotICovCi0KLSNpZm5kZWYgTkROQk9PU1RfREVUQUlMX0VORElBTl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0VORElBTl9IUFAKLQotLy8KLS8vIFNwZWNpYWwgY2FzZXMgY29tZSBmaXJzdDoKLS8vCi0jaWYgZGVmaW5lZCAoX19HTElCQ19fKQotLy8gR05VIGxpYmMgb2ZmZXJzIHRoZSBoZWxwZnVsIGhlYWRlciA8ZW5kaWFuLmg+IHdoaWNoIGRlZmluZXMKLS8vIF9fQllURV9PUkRFUgotIyBpbmNsdWRlIDxlbmRpYW4uaD4KLSMgaWYgKF9fQllURV9PUkRFUiA9PSBfX0xJVFRMRV9FTkRJQU4pCi0jICBkZWZpbmUgTkROQk9PU1RfTElUVExFX0VORElBTgotIyBlbGlmIChfX0JZVEVfT1JERVIgPT0gX19CSUdfRU5ESUFOKQotIyAgZGVmaW5lIE5ETkJPT1NUX0JJR19FTkRJQU4KLSMgZWxpZiAoX19CWVRFX09SREVSID09IF9fUERQX0VORElBTikKLSMgIGRlZmluZSBORE5CT09TVF9QRFBfRU5ESUFOCi0jIGVsc2UKLSMgIGVycm9yIFVua25vd24gbWFjaGluZSBlbmRpYW5uZXNzIGRldGVjdGVkLgotIyBlbmRpZgotIyBkZWZpbmUgTkROQk9PU1RfQllURV9PUkRFUiBfX0JZVEVfT1JERVIKLQotI2VsaWYgZGVmaW5lZChfX05ldEJTRF9fKSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBcCi0gICAgZGVmaW5lZChfX09wZW5CU0RfXykgfHwgKF9fRHJhZ29uRmx5X18pCi0vLwotLy8gQlNEIGhhcyBlbmRpYW4uaCwgc2VlIGh0dHBzOi8vc3ZuLmJvb3N0Lm9yZy90cmFjL2Jvb3N0L3RpY2tldC82MDEzCi0jICBpZiBkZWZpbmVkKF9fT3BlbkJTRF9fKQotIyAgaW5jbHVkZSA8bWFjaGluZS9lbmRpYW4uaD4KLSMgIGVsc2UKLSMgIGluY2x1ZGUgPHN5cy9lbmRpYW4uaD4KLSMgIGVuZGlmCi0jIGlmIChfQllURV9PUkRFUiA9PSBfTElUVExFX0VORElBTikKLSMgIGRlZmluZSBORE5CT09TVF9MSVRUTEVfRU5ESUFOCi0jIGVsaWYgKF9CWVRFX09SREVSID09IF9CSUdfRU5ESUFOKQotIyAgZGVmaW5lIE5ETkJPT1NUX0JJR19FTkRJQU4KLSMgZWxpZiAoX0JZVEVfT1JERVIgPT0gX1BEUF9FTkRJQU4pCi0jICBkZWZpbmUgTkROQk9PU1RfUERQX0VORElBTgotIyBlbHNlCi0jICBlcnJvciBVbmtub3duIG1hY2hpbmUgZW5kaWFubmVzcyBkZXRlY3RlZC4KLSMgZW5kaWYKLSMgZGVmaW5lIE5ETkJPT1NUX0JZVEVfT1JERVIgX0JZVEVfT1JERVIKLQotI2VsaWYgZGVmaW5lZCggX19BTkRST0lEX18gKQotLy8gQWRyb2lkIHNwZWNpZmljIGNvZGUsIHNlZTogaHR0cHM6Ly9zdm4uYm9vc3Qub3JnL3RyYWMvYm9vc3QvdGlja2V0Lzc1MjgKLS8vIEhlcmUgd2UgY2FuIHVzZSBtYWNoaW5lL190eXBlcy5oLCBzZWU6Ci0vLyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzYyMTI5NTEvZW5kaWFubmVzcy1vZi1hbmRyb2lkLW5kawotIyBpbmNsdWRlICJtYWNoaW5lL190eXBlcy5oIgotIyBpZmRlZiBfX0FSTUVCX18KLSMgIGRlZmluZSBORE5CT09TVF9CSUdfRU5ESUFOCi0jICBkZWZpbmUgTkROQk9PU1RfQllURV9PUkRFUiA0MzIxCi0jIGVsc2UKLSMgIGRlZmluZSBORE5CT09TVF9MSVRUTEVfRU5ESUFOCi0jICBkZWZpbmUgTkROQk9PU1RfQllURV9PUkRFUiAxMjM0Ci0jIGVuZGlmIC8vIF9fQVJNRUJfXwotCi0jZWxpZiBkZWZpbmVkKCBfWEJPWCApCi0vLwotLy8gWEJveCBpcyBhbHdheXMgYmlnIGVuZGlhbj8/Ci0vLwotIyBkZWZpbmUgTkROQk9PU1RfQklHX0VORElBTgotIyBkZWZpbmUgTkROQk9PU1RfQllURV9PUkRFUiA0MzIxCi0KLSNlbGlmIGRlZmluZWQoX0JJR19FTkRJQU4pICYmICFkZWZpbmVkKF9MSVRUTEVfRU5ESUFOKSB8fCBcCi0gICAgZGVmaW5lZChfX0JJR19FTkRJQU5fXykgJiYgIWRlZmluZWQoX19MSVRUTEVfRU5ESUFOX18pIHx8IFwKLSAgICBkZWZpbmVkKF9fQklHRU5ESUFOX18pICYmICFkZWZpbmVkKF9fTElUVExFRU5ESUFOX18pIHx8IFwKLSAgICBkZWZpbmVkKF9TVExQX0JJR19FTkRJQU4pICYmICFkZWZpbmVkKF9TVExQX0xJVFRMRV9FTkRJQU4pCi0jIGRlZmluZSBORE5CT09TVF9CSUdfRU5ESUFOCi0jIGRlZmluZSBORE5CT09TVF9CWVRFX09SREVSIDQzMjEKLSNlbGlmIGRlZmluZWQoX0xJVFRMRV9FTkRJQU4pICYmICFkZWZpbmVkKF9CSUdfRU5ESUFOKSB8fCBcCi0gICAgZGVmaW5lZChfX0xJVFRMRV9FTkRJQU5fXykgJiYgIWRlZmluZWQoX19CSUdfRU5ESUFOX18pIHx8IFwKLSAgICBkZWZpbmVkKF9fTElUVExFRU5ESUFOX18pICYmICFkZWZpbmVkKF9fQklHRU5ESUFOX18pIHx8IFwKLSAgICBkZWZpbmVkKF9TVExQX0xJVFRMRV9FTkRJQU4pICYmICFkZWZpbmVkKF9TVExQX0JJR19FTkRJQU4pCi0jIGRlZmluZSBORE5CT09TVF9MSVRUTEVfRU5ESUFOCi0jIGRlZmluZSBORE5CT09TVF9CWVRFX09SREVSIDEyMzQKLSNlbGlmIGRlZmluZWQoX19zcGFyYykgfHwgZGVmaW5lZChfX3NwYXJjX18pIFwKLSAgIHx8IGRlZmluZWQoX1BPV0VSKSB8fCBkZWZpbmVkKF9fcG93ZXJwY19fKSBcCi0gICB8fCBkZWZpbmVkKF9fcHBjX18pIHx8IGRlZmluZWQoX19ocHV4KSB8fCBkZWZpbmVkKF9faHBwYSkgXAotICAgfHwgZGVmaW5lZChfTUlQU0VCKSB8fCBkZWZpbmVkKF9QT1dFUikgXAotICAgfHwgZGVmaW5lZChfX3MzOTBfXykgfHwgZGVmaW5lZChfX0FSTUVCX18pCi0jIGRlZmluZSBORE5CT09TVF9CSUdfRU5ESUFOCi0jIGRlZmluZSBORE5CT09TVF9CWVRFX09SREVSIDQzMjEKLSNlbGlmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19hbHBoYV9fKSBcCi0gICB8fCBkZWZpbmVkKF9faWE2NCkgfHwgZGVmaW5lZChfX2lhNjRfXykgXAotICAgfHwgZGVmaW5lZChfTV9JWDg2KSB8fCBkZWZpbmVkKF9NX0lBNjQpIFwKLSAgIHx8IGRlZmluZWQoX01fQUxQSEEpIHx8IGRlZmluZWQoX19hbWQ2NCkgXAotICAgfHwgZGVmaW5lZChfX2FtZDY0X18pIHx8IGRlZmluZWQoX01fQU1ENjQpIFwKLSAgIHx8IGRlZmluZWQoX194ODZfNjQpIHx8IGRlZmluZWQoX194ODZfNjRfXykgXAotICAgfHwgZGVmaW5lZChfTV9YNjQpIHx8IGRlZmluZWQoX19iZmluX18pIFwKLSAgIHx8IGRlZmluZWQoX19BUk1FTF9fKSBcCi0gICB8fCAoZGVmaW5lZChfV0lOMzIpICYmIGRlZmluZWQoX19BUk1fXykgJiYgZGVmaW5lZChfTVNDX1ZFUikpIC8vIEFSTSBXaW5kb3dzIENFIGRvbid0IGRlZmluZSBhbnl0aGluZyByZWFzb25hYmx5IHVuaXF1ZSwgYnV0IHRoZXJlIGFyZSBubyBiaWctZW5kaWFuIFdpbmRvd3MgdmVyc2lvbnMgCi0KLSMgZGVmaW5lIE5ETkJPT1NUX0xJVFRMRV9FTkRJQU4KLSMgZGVmaW5lIE5ETkJPT1NUX0JZVEVfT1JERVIgMTIzNAotI2Vsc2UKLSMgZXJyb3IgVGhlIGZpbGUgbmRuYm9vc3QvZGV0YWlsL2VuZGlhbi5ocHAgbmVlZHMgdG8gYmUgc2V0IHVwIGZvciB5b3VyIENQVSB0eXBlLgotI2VuZGlmCi0KLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL2ZlbnYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvZmVudi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwZWRjYjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvZmVudi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAgQ29weXJpZ2h0IChjKSAyMDEwICAgICAgQnJ5Y2UgTGVsYmFjaAotCi0gICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotICAgIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fRkVOVl9IKQotICAjZXJyb3IgVGhpcyBwbGF0Zm9ybSBkb2VzIG5vdCBoYXZlIGEgZmxvYXRpbmcgcG9pbnQgZW52aXJvbm1lbnQKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfREVUQUlMX0ZFTlZfSFBQKQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfRkVOVl9IUFAKLQotLyogSWYgd2UncmUgdXNpbmcgY2xhbmcgKyBnbGliYywgd2UgaGF2ZSB0byBnZXQgaGFja3kuIAotICogU2VlIGh0dHA6Ly9sbHZtLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD02OTA3ICovCi0jaWYgZGVmaW5lZChfX2NsYW5nX18pICAgICAgICYmICAoX19jbGFuZ19tYWpvcl9fIDwgMykgJiYgICAgXAotICAgIGRlZmluZWQoX19HTlVfTElCUkFSWV9fKSAmJiAvKiB1cCB0byB2ZXJzaW9uIDUgKi8gXAotICAgIGRlZmluZWQoX19HTElCQ19fKSAmJiAgICAgICAgIC8qIHZlcnNpb24gNiArICovIFwKLSAgICAhZGVmaW5lZChfRkVOVl9IKQotICAjZGVmaW5lIF9GRU5WX0gKLQotICAjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLSAgI2luY2x1ZGUgPGJpdHMvZmVudi5oPgotCi0gIGV4dGVybiAiQyIgewotICAgIGV4dGVybiBpbnQgZmVnZXRleGNlcHRmbGFnIChmZXhjZXB0X3QqLCBpbnQpIF9fVEhST1c7Ci0gICAgZXh0ZXJuIGludCBmZXNldGV4Y2VwdGZsYWcgKF9fY29uc3QgZmV4Y2VwdF90KiwgaW50KSBfX1RIUk9XOwotICAgIGV4dGVybiBpbnQgZmVjbGVhcmV4Y2VwdCAoaW50KSBfX1RIUk9XOwotICAgIGV4dGVybiBpbnQgZmVyYWlzZWV4Y2VwdCAoaW50KSBfX1RIUk9XOwotICAgIGV4dGVybiBpbnQgZmV0ZXN0ZXhjZXB0IChpbnQpIF9fVEhST1c7Ci0gICAgZXh0ZXJuIGludCBmZWdldHJvdW5kICh2b2lkKSBfX1RIUk9XOwotICAgIGV4dGVybiBpbnQgZmVzZXRyb3VuZCAoaW50KSBfX1RIUk9XOwotICAgIGV4dGVybiBpbnQgZmVnZXRlbnYgKGZlbnZfdCopIF9fVEhST1c7Ci0gICAgZXh0ZXJuIGludCBmZXNldGVudiAoX19jb25zdCBmZW52X3QqKSBfX1RIUk9XOwotICAgIGV4dGVybiBpbnQgZmV1cGRhdGVlbnYgKF9fY29uc3QgZmVudl90KikgX19USFJPVzsKLSAgICBleHRlcm4gaW50IGZlaG9sZGV4Y2VwdCAoZmVudl90KikgX19USFJPVzsKLQotICAgICNpZmRlZiBfX1VTRV9HTlUKLSAgICAgIGV4dGVybiBpbnQgZmVlbmFibGVleGNlcHQgKGludCkgX19USFJPVzsKLSAgICAgIGV4dGVybiBpbnQgZmVkaXNhYmxlZXhjZXB0IChpbnQpIF9fVEhST1c7Ci0gICAgICBleHRlcm4gaW50IGZlZ2V0ZXhjZXB0ICh2b2lkKSBfX1RIUk9XOwotICAgICNlbmRpZgotICB9Ci0KLSAgbmFtZXNwYWNlIHN0ZCB7IG5hbWVzcGFjZSB0cjEgewotICAgIHVzaW5nIDo6ZmVudl90OwotICAgIHVzaW5nIDo6ZmV4Y2VwdF90OwotICAgIHVzaW5nIDo6ZmVnZXRleGNlcHRmbGFnOwotICAgIHVzaW5nIDo6ZmVzZXRleGNlcHRmbGFnOwotICAgIHVzaW5nIDo6ZmVjbGVhcmV4Y2VwdDsKLSAgICB1c2luZyA6OmZlcmFpc2VleGNlcHQ7Ci0gICAgdXNpbmcgOjpmZXRlc3RleGNlcHQ7Ci0gICAgdXNpbmcgOjpmZWdldHJvdW5kOwotICAgIHVzaW5nIDo6ZmVzZXRyb3VuZDsKLSAgICB1c2luZyA6OmZlZ2V0ZW52OwotICAgIHVzaW5nIDo6ZmVzZXRlbnY7Ci0gICAgdXNpbmcgOjpmZXVwZGF0ZWVudjsKLSAgICB1c2luZyA6OmZlaG9sZGV4Y2VwdDsKLSAgfSB9Ci0KLSNlbHNlIC8qIGlmIHdlJ3JlIG5vdCB1c2luZyBHTlUncyBDIHN0ZGxpYiwgZmVudi5oIHNob3VsZCB3b3JrIHdpdGggY2xhbmcgKi8KLSAgI2lmIGRlZmluZWQoX19TVU5QUk9fQ0MpIC8qIGxvbCBzdW5jYyAqLwotICAgICNpbmNsdWRlIDxzdGRpby5oPgotICAjZW5kaWYKLSAgCi0gICNpbmNsdWRlIDxmZW52Lmg+Ci0KLSNlbmRpZgotCi0jZW5kaWYgLyogTkROQk9PU1RfREVUQUlMX0ZFTlZfSFBQICovCi0gCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9pbmRpcmVjdF90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvaW5kaXJlY3RfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGNkOTE1OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9pbmRpcmVjdF90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDg3ICswLDAgQEAKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAyLgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotI2lmbmRlZiBJTkRJUkVDVF9UUkFJVFNfTkROQk9PU1RfRFdBMjAwMjEzMV9IUFAKLSMgZGVmaW5lIElORElSRUNUX1RSQUlUU19ORE5CT09TVF9EV0EyMDAyMTMxX0hQUAotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19mdW5jdGlvbi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3JlZmVyZW5jZS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvaW50ZXIuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jbGFzcy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnN0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9sYXRpbGUuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlci5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX21lbWJlcl9wb2ludGVyLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3JlZmVyZW5jZS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9wb2ludGVyLmhwcD4KLQotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX2FuZC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotIyBpbmNsdWRlIDxuZG5ib29zdC9tcGwvZXZhbF9pZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FuZC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9ub3QuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0KLSMgIGlmZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvaXNfZnVuY3Rpb25fcmVmX3Rlc3Rlci5ocHA+Ci0jICBlbmRpZiAKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLW5hbWVzcGFjZSBpbmRpcmVjdF90cmFpdHMgewotCi0jICBpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfcmVmZXJlbmNlX3RvX2NvbnN0IDogbXBsOjpmYWxzZV8KLXsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3JlZmVyZW5jZV90b19jb25zdDxUIGNvbnN0Jj4gOiBtcGw6OnRydWVfCi17Ci19OwotCi0jICAgaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiBfTVNDX0ZVTExfVkVSIDw9IDEzMTAyMTQwIC8vIHZjNy4wMSBhbHBoYSB3b3JrYXJvdW5kCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IGlzX3JlZmVyZW5jZV90b19jb25zdDxUIGNvbnN0IHZvbGF0aWxlJj4gOiBtcGw6OnRydWVfCi17Ci19OwotIyAgIGVuZGlmIAotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19yZWZlcmVuY2VfdG9fZnVuY3Rpb24gOiBtcGw6OmZhbHNlXwotewotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfcmVmZXJlbmNlX3RvX2Z1bmN0aW9uPFQmPiA6IGlzX2Z1bmN0aW9uPFQ+Ci17Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19wb2ludGVyX3RvX2Z1bmN0aW9uIDogbXBsOjpmYWxzZV8KLXsKLX07Ci0KLS8vIFRoZXJlJ3Mgbm8gc3VjaCB0aGluZyBhcyBhIHBvaW50ZXItdG8tY3YtZnVuY3Rpb24sIHNvIHdlIGRvbid0IG5lZWQKLS8vIHNwZWNpYWxpemF0aW9ucyBmb3IgdGhvc2UKLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3BvaW50ZXJfdG9fZnVuY3Rpb248VCo+IDogaXNfZnVuY3Rpb248VD4KLXsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3JlZmVyZW5jZV90b19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcl9pbXBsIDogbXBsOjpmYWxzZV8KLXsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3JlZmVyZW5jZV90b19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcl9pbXBsPFQmPgotICAgIDogaXNfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXI8dHlwZW5hbWUgcmVtb3ZlX2N2PFQ+Ojp0eXBlPgotewotfTsKLQotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19yZWZlcmVuY2VfdG9fbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXIKLSAgICA6IGlzX3JlZmVyZW5jZV90b19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcl9pbXBsPFQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLGlzX3JlZmVyZW5jZV90b19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlciwoVCkpCi19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19yZWZlcmVuY2VfdG9fZnVuY3Rpb25fcG9pbnRlcl9hdXgKLSAgICA6IG1wbDo6YW5kXzwKLSAgICAgICAgICBpc19yZWZlcmVuY2U8VD4KLSAgICAgICAgLCBpc19wb2ludGVyX3RvX2Z1bmN0aW9uPAotICAgICAgICAgICAgICB0eXBlbmFtZSByZW1vdmVfY3Y8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSByZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0eXBlCi0gICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICA+Ci0gICAgICA+Ci17Ci0gICAgLy8gVGhlcmUncyBubyBzdWNoIHRoaW5nIGFzIGEgcG9pbnRlci10by1jdi1mdW5jdGlvbiwgc28gd2UgZG9uJ3QgbmVlZCBzcGVjaWFsaXphdGlvbnMgZm9yIHRob3NlCi19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19yZWZlcmVuY2VfdG9fZnVuY3Rpb25fcG9pbnRlcgotICAgIDogbXBsOjppZl88Ci0gICAgICAgICAgaXNfcmVmZXJlbmNlX3RvX2Z1bmN0aW9uPFQ+Ci0gICAgICAgICwgbXBsOjpmYWxzZV8KLSAgICAgICAgLCBpc19yZWZlcmVuY2VfdG9fZnVuY3Rpb25fcG9pbnRlcl9hdXg8VD4KLSAgICAgPjo6dHlwZQotewotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfcmVmZXJlbmNlX3RvX25vbl9jb25zdAotICAgIDogbXBsOjphbmRfPAotICAgICAgICAgIGlzX3JlZmVyZW5jZTxUPgotICAgICAgICAsIG1wbDo6bm90XzwKLSAgICAgICAgICAgICBpc19yZWZlcmVuY2VfdG9fY29uc3Q8VD4KLSAgICAgICAgICA+Ci0gICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19yZWZlcmVuY2VfdG9fdm9sYXRpbGUgOiBtcGw6OmZhbHNlXwotewotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfcmVmZXJlbmNlX3RvX3ZvbGF0aWxlPFQgdm9sYXRpbGUmPiA6IG1wbDo6dHJ1ZV8KLXsKLX07Ci0KLSMgICBpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIF9NU0NfRlVMTF9WRVIgPD0gMTMxMDIxNDAgLy8gdmM3LjAxIGFscGhhIHdvcmthcm91bmQKLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3JlZmVyZW5jZV90b192b2xhdGlsZTxUIGNvbnN0IHZvbGF0aWxlJj4gOiBtcGw6OnRydWVfCi17Ci19OwotIyAgIGVuZGlmIAotCi0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3JlZmVyZW5jZV90b19wb2ludGVyIDogbXBsOjpmYWxzZV8KLXsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3JlZmVyZW5jZV90b19wb2ludGVyPFQqJj4gOiBtcGw6OnRydWVfCi17Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19yZWZlcmVuY2VfdG9fcG9pbnRlcjxUKiBjb25zdCY+IDogbXBsOjp0cnVlXwotewotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfcmVmZXJlbmNlX3RvX3BvaW50ZXI8VCogdm9sYXRpbGUmPiA6IG1wbDo6dHJ1ZV8KLXsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3JlZmVyZW5jZV90b19wb2ludGVyPFQqIGNvbnN0IHZvbGF0aWxlJj4gOiBtcGw6OnRydWVfCi17Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19yZWZlcmVuY2VfdG9fY2xhc3MKLSAgICA6IG1wbDo6YW5kXzwKLSAgICAgICAgICBpc19yZWZlcmVuY2U8VD4KLSAgICAgICAgLCBpc19jbGFzczwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX2N2PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZQotICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgPgotICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSxpc19yZWZlcmVuY2VfdG9fY2xhc3MsKFQpKQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfcG9pbnRlcl90b19jbGFzcwotICAgIDogbXBsOjphbmRfPAotICAgICAgICAgIGlzX3BvaW50ZXI8VD4KLSAgICAgICAgLCBpc19jbGFzczwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX2N2PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX3BvaW50ZXI8VD46OnR5cGUKLSAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgID4KLSAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEsaXNfcG9pbnRlcl90b19jbGFzcywoVCkpCi19OwotCi0jICBlbHNlCi0KLXVzaW5nIG5hbWVzcGFjZSBuZG5ib29zdDo6ZGV0YWlsOjppc19mdW5jdGlvbl9yZWZfdGVzdGVyXzsKLQotdHlwZWRlZiBjaGFyICgmaW5uZXJfeWVzX3R5cGUpWzNdOwotdHlwZWRlZiBjaGFyICgmaW5uZXJfbm9fdHlwZSlbMl07Ci10eXBlZGVmIGNoYXIgKCZvdXRlcl9ub190eXBlKVsxXTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFY+Ci1zdHJ1Y3QgaXNfY29uc3RfaGVscAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl88Ci0gICAgICAgICAgaXNfY29uc3Q8Vj4KLSAgICAgICAgLCBpbm5lcl95ZXNfdHlwZQotICAgICAgICAsIGlubmVyX25vX3R5cGUKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFY+Ci1zdHJ1Y3QgaXNfdm9sYXRpbGVfaGVscAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl88Ci0gICAgICAgICAgaXNfdm9sYXRpbGU8Vj4KLSAgICAgICAgLCBpbm5lcl95ZXNfdHlwZQotICAgICAgICAsIGlubmVyX25vX3R5cGUKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFY+Ci1zdHJ1Y3QgaXNfcG9pbnRlcl9oZWxwCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzwKLSAgICAgICAgICBpc19wb2ludGVyPFY+Ci0gICAgICAgICwgaW5uZXJfeWVzX3R5cGUKLSAgICAgICAgLCBpbm5lcl9ub190eXBlCi0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBWPgotc3RydWN0IGlzX2NsYXNzX2hlbHAKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgICAgIGlzX2NsYXNzPFY+Ci0gICAgICAgICwgaW5uZXJfeWVzX3R5cGUKLSAgICAgICAgLCBpbm5lcl9ub190eXBlCi0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3JlZmVyZW5jZV90b19mdW5jdGlvbl9hdXgKLXsKLSAgICBzdGF0aWMgVCB0OwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCgKLSAgICAgICAgYm9vbCwgdmFsdWUgPSBzaXplb2YoZGV0YWlsOjppc19mdW5jdGlvbl9yZWZfdGVzdGVyKHQsMCkpID09IHNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUpKTsKLSAgICB0eXBlZGVmIG1wbDo6Ym9vbF88dmFsdWU+IHR5cGU7Ci0gfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfcmVmZXJlbmNlX3RvX2Z1bmN0aW9uCi0gICAgOiBtcGw6OmlmXzxpc19yZWZlcmVuY2U8VD4sIGlzX3JlZmVyZW5jZV90b19mdW5jdGlvbl9hdXg8VD4sIG1wbDo6Ym9vbF88ZmFsc2U+ID46OnR5cGUKLXsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3BvaW50ZXJfdG9fZnVuY3Rpb25fYXV4Ci17Ci0gICAgc3RhdGljIFQgdDsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoCi0gICAgICAgIGJvb2wsIHZhbHVlCi0gICAgICAgID0gc2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppc19mdW5jdGlvbl9wdHJfdGVzdGVyKHQpKSA9PSBzaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlKSk7Ci0gICAgdHlwZWRlZiBtcGw6OmJvb2xfPHZhbHVlPiB0eXBlOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfcG9pbnRlcl90b19mdW5jdGlvbgotICAgIDogbXBsOjppZl88aXNfcG9pbnRlcjxUPiwgaXNfcG9pbnRlcl90b19mdW5jdGlvbl9hdXg8VD4sIG1wbDo6Ym9vbF88ZmFsc2U+ID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEsaXNfcG9pbnRlcl90b19mdW5jdGlvbiwoVCkpCi19OwotCi1zdHJ1Y3QgZmFsc2VfaGVscGVyMQotewotICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgIHN0cnVjdCBhcHBseSA6IG1wbDo6ZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVj4KLXR5cGVuYW1lIGlzX2NvbnN0X2hlbHA8Vj46OnR5cGUgcmVmZXJlbmNlX3RvX2NvbnN0X2hlbHBlcihWJik7ICAgIAotb3V0ZXJfbm9fdHlwZQotcmVmZXJlbmNlX3RvX2NvbnN0X2hlbHBlciguLi4pOwotCi1zdHJ1Y3QgdHJ1ZV9oZWxwZXIxCi17Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICBzdGF0aWMgVCB0OwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoCi0gICAgICAgICAgICBib29sLCB2YWx1ZQotICAgICAgICAgICAgPSBzaXplb2YocmVmZXJlbmNlX3RvX2NvbnN0X2hlbHBlcih0KSkgPT0gc2l6ZW9mKGlubmVyX3llc190eXBlKSk7Ci0gICAgICAgIHR5cGVkZWYgbXBsOjpib29sXzx2YWx1ZT4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGUgPGJvb2wgcmVmID0gdHJ1ZT4KLXN0cnVjdCBpc19yZWZlcmVuY2VfdG9fY29uc3RfaGVscGVyMSA6IHRydWVfaGVscGVyMQotewotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBpc19yZWZlcmVuY2VfdG9fY29uc3RfaGVscGVyMTxmYWxzZT4gOiBmYWxzZV9oZWxwZXIxCi17Ci19OwotCi0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3JlZmVyZW5jZV90b19jb25zdAotICAgIDogaXNfcmVmZXJlbmNlX3RvX2NvbnN0X2hlbHBlcjE8aXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZT46OnRlbXBsYXRlIGFwcGx5PFQ+Ci17Ci19OwotCi0KLXRlbXBsYXRlIDxib29sIHJlZiA9IHRydWU+Ci1zdHJ1Y3QgaXNfcmVmZXJlbmNlX3RvX25vbl9jb25zdF9oZWxwZXIxCi17Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICBzdGF0aWMgVCB0OwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoCi0gICAgICAgICAgICBib29sLCB2YWx1ZQotICAgICAgICAgICAgPSBzaXplb2YocmVmZXJlbmNlX3RvX2NvbnN0X2hlbHBlcih0KSkgPT0gc2l6ZW9mKGlubmVyX25vX3R5cGUpKTsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgbXBsOjpib29sXzx2YWx1ZT4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBpc19yZWZlcmVuY2VfdG9fbm9uX2NvbnN0X2hlbHBlcjE8ZmFsc2U+IDogZmFsc2VfaGVscGVyMQotewotfTsKLQotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19yZWZlcmVuY2VfdG9fbm9uX2NvbnN0Ci0gICAgOiBpc19yZWZlcmVuY2VfdG9fbm9uX2NvbnN0X2hlbHBlcjE8aXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZT46OnRlbXBsYXRlIGFwcGx5PFQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLGlzX3JlZmVyZW5jZV90b19ub25fY29uc3QsKFQpKQotfTsKLQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVj4KLXR5cGVuYW1lIGlzX3ZvbGF0aWxlX2hlbHA8Vj46OnR5cGUgcmVmZXJlbmNlX3RvX3ZvbGF0aWxlX2hlbHBlcihWJik7ICAgIAotb3V0ZXJfbm9fdHlwZQotcmVmZXJlbmNlX3RvX3ZvbGF0aWxlX2hlbHBlciguLi4pOwotCi10ZW1wbGF0ZSA8Ym9vbCByZWYgPSB0cnVlPgotc3RydWN0IGlzX3JlZmVyZW5jZV90b192b2xhdGlsZV9oZWxwZXIxCi17Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICBzdGF0aWMgVCB0OwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoCi0gICAgICAgICAgICBib29sLCB2YWx1ZQotICAgICAgICAgICAgPSBzaXplb2YocmVmZXJlbmNlX3RvX3ZvbGF0aWxlX2hlbHBlcih0KSkgPT0gc2l6ZW9mKGlubmVyX3llc190eXBlKSk7Ci0gICAgICAgIHR5cGVkZWYgbXBsOjpib29sXzx2YWx1ZT4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBpc19yZWZlcmVuY2VfdG9fdm9sYXRpbGVfaGVscGVyMTxmYWxzZT4gOiBmYWxzZV9oZWxwZXIxCi17Ci19OwotCi0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3JlZmVyZW5jZV90b192b2xhdGlsZQotICAgIDogaXNfcmVmZXJlbmNlX3RvX3ZvbGF0aWxlX2hlbHBlcjE8aXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZT46OnRlbXBsYXRlIGFwcGx5PFQ+Ci17Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVj4KLXR5cGVuYW1lIGlzX3BvaW50ZXJfaGVscDxWPjo6dHlwZSByZWZlcmVuY2VfdG9fcG9pbnRlcl9oZWxwZXIoViYpOwotb3V0ZXJfbm9fdHlwZSByZWZlcmVuY2VfdG9fcG9pbnRlcl9oZWxwZXIoLi4uKTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgcmVmZXJlbmNlX3RvX3BvaW50ZXJfaW1wbAotewotICAgIHN0YXRpYyBUIHQ7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKAotICAgICAgICBib29sLCB2YWx1ZQotICAgICAgICA9IChzaXplb2YoKHJlZmVyZW5jZV90b19wb2ludGVyX2hlbHBlcikodCkpID09IHNpemVvZihpbm5lcl95ZXNfdHlwZSkpCi0gICAgICAgICk7Ci0gICAgCi0gICAgdHlwZWRlZiBtcGw6OmJvb2xfPHZhbHVlPiB0eXBlOwotfTsKLSAgICAKLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3JlZmVyZW5jZV90b19wb2ludGVyCi0gIDogbXBsOjpldmFsX2lmPGlzX3JlZmVyZW5jZTxUPiwgcmVmZXJlbmNlX3RvX3BvaW50ZXJfaW1wbDxUPiwgbXBsOjpmYWxzZV8+Ojp0eXBlCi17ICAgCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLGlzX3JlZmVyZW5jZV90b19wb2ludGVyLChUKSkKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3JlZmVyZW5jZV90b19mdW5jdGlvbl9wb2ludGVyCi0gIDogbXBsOjpldmFsX2lmPGlzX3JlZmVyZW5jZTxUPiwgaXNfcG9pbnRlcl90b19mdW5jdGlvbl9hdXg8VD4sIG1wbDo6ZmFsc2VfPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSxpc19yZWZlcmVuY2VfdG9fZnVuY3Rpb25fcG9pbnRlciwoVCkpCi19OwotCi0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyX2hlbHAKLSAgICA6IG1wbDo6aWZfPGlzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyPFQ+LCBpbm5lcl95ZXNfdHlwZSwgaW5uZXJfbm9fdHlwZT4KLXt9OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVj4KLXR5cGVuYW1lIGlzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyX2hlbHA8Vj46OnR5cGUgbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXJfaGVscGVyKFYmKTsKLW91dGVyX25vX3R5cGUgbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXJfaGVscGVyKC4uLik7Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3BvaW50ZXJfdG9fbWVtYmVyX2Z1bmN0aW9uX2F1eAotewotICAgIHN0YXRpYyBUIHQ7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKAotICAgICAgICBib29sLCB2YWx1ZQotICAgICAgICA9IHNpemVvZigobWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXJfaGVscGVyKSh0KSkgPT0gc2l6ZW9mKGlubmVyX3llc190eXBlKSk7Ci0gICAgdHlwZWRlZiBtcGw6OmJvb2xfPHZhbHVlPiB0eXBlOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfcmVmZXJlbmNlX3RvX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyCi0gICAgOiBtcGw6OmlmXzwKLSAgICAgICAgaXNfcmVmZXJlbmNlPFQ+Ci0gICAgICAgICwgaXNfcG9pbnRlcl90b19tZW1iZXJfZnVuY3Rpb25fYXV4PFQ+Ci0gICAgICAgICwgbXBsOjpib29sXzxmYWxzZT4KLSAgICAgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSxpc19yZWZlcmVuY2VfdG9fbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXIsKFQpKQotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFY+Ci10eXBlbmFtZSBpc19jbGFzc19oZWxwPFY+Ojp0eXBlIHJlZmVyZW5jZV90b19jbGFzc19oZWxwZXIoViBjb25zdCB2b2xhdGlsZSYpOwotb3V0ZXJfbm9fdHlwZSByZWZlcmVuY2VfdG9fY2xhc3NfaGVscGVyKC4uLik7Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3JlZmVyZW5jZV90b19jbGFzcwotewotICAgIHN0YXRpYyBUIHQ7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKAotICAgICAgICBib29sLCB2YWx1ZQotICAgICAgICA9IChpc19yZWZlcmVuY2U8VD46OnZhbHVlCi0gICAgICAgICAgICYgKHNpemVvZihyZWZlcmVuY2VfdG9fY2xhc3NfaGVscGVyKHQpKSA9PSBzaXplb2YoaW5uZXJfeWVzX3R5cGUpKSkKLSAgICAgICAgKTsKLSAgICB0eXBlZGVmIG1wbDo6Ym9vbF88dmFsdWU+IHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLGlzX3JlZmVyZW5jZV90b19jbGFzcywoVCkpCi19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVj4KLXR5cGVuYW1lIGlzX2NsYXNzX2hlbHA8Vj46OnR5cGUgcG9pbnRlcl90b19jbGFzc19oZWxwZXIoViBjb25zdCB2b2xhdGlsZSopOwotb3V0ZXJfbm9fdHlwZSBwb2ludGVyX3RvX2NsYXNzX2hlbHBlciguLi4pOwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19wb2ludGVyX3RvX2NsYXNzCi17Ci0gICAgc3RhdGljIFQgdDsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoCi0gICAgICAgIGJvb2wsIHZhbHVlCi0gICAgICAgID0gKGlzX3BvaW50ZXI8VD46OnZhbHVlCi0gICAgICAgICAgICYmIHNpemVvZihwb2ludGVyX3RvX2NsYXNzX2hlbHBlcih0KSkgPT0gc2l6ZW9mKGlubmVyX3llc190eXBlKSkKLSAgICAgICAgKTsKLSAgICB0eXBlZGVmIG1wbDo6Ym9vbF88dmFsdWU+IHR5cGU7Ci19OwotIyAgZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTiAKLQotfQotCi11c2luZyBuYW1lc3BhY2UgaW5kaXJlY3RfdHJhaXRzOwotCi19fSAvLyBuYW1lc3BhY2UgbmRuYm9vc3Q6OnB5dGhvbjo6ZGV0YWlsCi0KLSNlbmRpZiAvLyBJTkRJUkVDVF9UUkFJVFNfTkROQk9PU1RfRFdBMjAwMjEzMV9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL2ludGVybG9ja2VkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL2ludGVybG9ja2VkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWM0ODBkNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9pbnRlcmxvY2tlZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODAgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9ERVRBSUxfSU5URVJMT0NLRURfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9JTlRFUkxPQ0tFRF9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgbmRuYm9vc3QvZGV0YWlsL2ludGVybG9ja2VkLmhwcAotLy8KLS8vICBDb3B5cmlnaHQgMjAwNSBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0jaWYgZGVmaW5lZCggTkROQk9PU1RfVVNFX1dJTkRPV1NfSCApCi0KLSMgaW5jbHVkZSA8d2luZG93cy5oPgotCi0jIGRlZmluZSBORE5CT09TVF9JTlRFUkxPQ0tFRF9JTkNSRU1FTlQgSW50ZXJsb2NrZWRJbmNyZW1lbnQKLSMgZGVmaW5lIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0RFQ1JFTUVOVCBJbnRlcmxvY2tlZERlY3JlbWVudAotIyBkZWZpbmUgTkROQk9PU1RfSU5URVJMT0NLRURfQ09NUEFSRV9FWENIQU5HRSBJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZQotIyBkZWZpbmUgTkROQk9PU1RfSU5URVJMT0NLRURfRVhDSEFOR0UgSW50ZXJsb2NrZWRFeGNoYW5nZQotIyBkZWZpbmUgTkROQk9PU1RfSU5URVJMT0NLRURfRVhDSEFOR0VfQUREIEludGVybG9ja2VkRXhjaGFuZ2VBZGQKLSMgZGVmaW5lIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0NPTVBBUkVfRVhDSEFOR0VfUE9JTlRFUiBJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZVBvaW50ZXIKLSMgZGVmaW5lIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0VYQ0hBTkdFX1BPSU5URVIgSW50ZXJsb2NrZWRFeGNoYW5nZVBvaW50ZXIKLQotI2VsaWYgZGVmaW5lZChfV0lOMzJfV0NFKQotCi0jaWYgX1dJTjMyX1dDRSA+PSAweDYwMAotCi1leHRlcm4gIkMiIGxvbmcgX19jZGVjbCBfSW50ZXJsb2NrZWRJbmNyZW1lbnQoIGxvbmcgdm9sYXRpbGUgKiApOwotZXh0ZXJuICJDIiBsb25nIF9fY2RlY2wgX0ludGVybG9ja2VkRGVjcmVtZW50KCBsb25nIHZvbGF0aWxlICogKTsKLWV4dGVybiAiQyIgbG9uZyBfX2NkZWNsIF9JbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZSggbG9uZyB2b2xhdGlsZSAqLCBsb25nLCBsb25nICk7Ci1leHRlcm4gIkMiIGxvbmcgX19jZGVjbCBfSW50ZXJsb2NrZWRFeGNoYW5nZSggbG9uZyB2b2xhdGlsZSAqLCBsb25nICk7Ci1leHRlcm4gIkMiIGxvbmcgX19jZGVjbCBfSW50ZXJsb2NrZWRFeGNoYW5nZUFkZCggbG9uZyB2b2xhdGlsZSAqLCBsb25nICk7Ci0KLSMgZGVmaW5lIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0lOQ1JFTUVOVCBfSW50ZXJsb2NrZWRJbmNyZW1lbnQKLSMgZGVmaW5lIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0RFQ1JFTUVOVCBfSW50ZXJsb2NrZWREZWNyZW1lbnQKLSMgZGVmaW5lIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0NPTVBBUkVfRVhDSEFOR0UgX0ludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlCi0jIGRlZmluZSBORE5CT09TVF9JTlRFUkxPQ0tFRF9FWENIQU5HRSBfSW50ZXJsb2NrZWRFeGNoYW5nZQotIyBkZWZpbmUgTkROQk9PU1RfSU5URVJMT0NLRURfRVhDSEFOR0VfQUREIF9JbnRlcmxvY2tlZEV4Y2hhbmdlQWRkCi0KLSNlbHNlCi0vLyB1bmRlciBXaW5kb3dzIENFIHdlIHN0aWxsIGhhdmUgb2xkLXN0eWxlIEludGVybG9ja2VkKiBmdW5jdGlvbnMKLQotZXh0ZXJuICJDIiBsb25nIF9fY2RlY2wgSW50ZXJsb2NrZWRJbmNyZW1lbnQoIGxvbmcqICk7Ci1leHRlcm4gIkMiIGxvbmcgX19jZGVjbCBJbnRlcmxvY2tlZERlY3JlbWVudCggbG9uZyogKTsKLWV4dGVybiAiQyIgbG9uZyBfX2NkZWNsIEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKCBsb25nKiwgbG9uZywgbG9uZyApOwotZXh0ZXJuICJDIiBsb25nIF9fY2RlY2wgSW50ZXJsb2NrZWRFeGNoYW5nZSggbG9uZyosIGxvbmcgKTsKLWV4dGVybiAiQyIgbG9uZyBfX2NkZWNsIEludGVybG9ja2VkRXhjaGFuZ2VBZGQoIGxvbmcqLCBsb25nICk7Ci0KLSMgZGVmaW5lIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0lOQ1JFTUVOVCBJbnRlcmxvY2tlZEluY3JlbWVudAotIyBkZWZpbmUgTkROQk9PU1RfSU5URVJMT0NLRURfREVDUkVNRU5UIEludGVybG9ja2VkRGVjcmVtZW50Ci0jIGRlZmluZSBORE5CT09TVF9JTlRFUkxPQ0tFRF9DT01QQVJFX0VYQ0hBTkdFIEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlCi0jIGRlZmluZSBORE5CT09TVF9JTlRFUkxPQ0tFRF9FWENIQU5HRSBJbnRlcmxvY2tlZEV4Y2hhbmdlCi0jIGRlZmluZSBORE5CT09TVF9JTlRFUkxPQ0tFRF9FWENIQU5HRV9BREQgSW50ZXJsb2NrZWRFeGNoYW5nZUFkZAotCi0jZW5kaWYKLQotIyBkZWZpbmUgTkROQk9PU1RfSU5URVJMT0NLRURfQ09NUEFSRV9FWENIQU5HRV9QT0lOVEVSKGRlc3QsZXhjaGFuZ2UsY29tcGFyZSkgXAotICAgICgodm9pZCopTkROQk9PU1RfSU5URVJMT0NLRURfQ09NUEFSRV9FWENIQU5HRSgobG9uZyopKGRlc3QpLChsb25nKShleGNoYW5nZSksKGxvbmcpKGNvbXBhcmUpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0VYQ0hBTkdFX1BPSU5URVIoZGVzdCxleGNoYW5nZSkgXAotICAgICgodm9pZCopTkROQk9PU1RfSU5URVJMT0NLRURfRVhDSEFOR0UoKGxvbmcqKShkZXN0KSwobG9uZykoZXhjaGFuZ2UpKSkKLQotI2VsaWYgZGVmaW5lZCggTkROQk9PU1RfTVNWQyApIHx8IGRlZmluZWQoIE5ETkJPT1NUX0lOVEVMX1dJTiApCi0KLSNpZiBkZWZpbmVkKCBORE5CT09TVF9NU1ZDICkgJiYgTkROQk9PU1RfTVNWQyA+PSAxNjAwCi0KLSNpbmNsdWRlIDxpbnRyaW4uaD4KLQotI2VsaWYgZGVmaW5lZCggX19DTFJDQUxMX1BVUkVfT1JfQ0RFQ0wgKQotCi1leHRlcm4gIkMiIGxvbmcgX19DTFJDQUxMX1BVUkVfT1JfQ0RFQ0wgX0ludGVybG9ja2VkSW5jcmVtZW50KCBsb25nIHZvbGF0aWxlICogKTsKLWV4dGVybiAiQyIgbG9uZyBfX0NMUkNBTExfUFVSRV9PUl9DREVDTCBfSW50ZXJsb2NrZWREZWNyZW1lbnQoIGxvbmcgdm9sYXRpbGUgKiApOwotZXh0ZXJuICJDIiBsb25nIF9fQ0xSQ0FMTF9QVVJFX09SX0NERUNMIF9JbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZSggbG9uZyB2b2xhdGlsZSAqLCBsb25nLCBsb25nICk7Ci1leHRlcm4gIkMiIGxvbmcgX19DTFJDQUxMX1BVUkVfT1JfQ0RFQ0wgX0ludGVybG9ja2VkRXhjaGFuZ2UoIGxvbmcgdm9sYXRpbGUgKiwgbG9uZyApOwotZXh0ZXJuICJDIiBsb25nIF9fQ0xSQ0FMTF9QVVJFX09SX0NERUNMIF9JbnRlcmxvY2tlZEV4Y2hhbmdlQWRkKCBsb25nIHZvbGF0aWxlICosIGxvbmcgKTsKLQotI2Vsc2UKLQotZXh0ZXJuICJDIiBsb25nIF9fY2RlY2wgX0ludGVybG9ja2VkSW5jcmVtZW50KCBsb25nIHZvbGF0aWxlICogKTsKLWV4dGVybiAiQyIgbG9uZyBfX2NkZWNsIF9JbnRlcmxvY2tlZERlY3JlbWVudCggbG9uZyB2b2xhdGlsZSAqICk7Ci1leHRlcm4gIkMiIGxvbmcgX19jZGVjbCBfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UoIGxvbmcgdm9sYXRpbGUgKiwgbG9uZywgbG9uZyApOwotZXh0ZXJuICJDIiBsb25nIF9fY2RlY2wgX0ludGVybG9ja2VkRXhjaGFuZ2UoIGxvbmcgdm9sYXRpbGUgKiwgbG9uZyApOwotZXh0ZXJuICJDIiBsb25nIF9fY2RlY2wgX0ludGVybG9ja2VkRXhjaGFuZ2VBZGQoIGxvbmcgdm9sYXRpbGUgKiwgbG9uZyApOwotCi0jZW5kaWYKLQotIyBwcmFnbWEgaW50cmluc2ljKCBfSW50ZXJsb2NrZWRJbmNyZW1lbnQgKQotIyBwcmFnbWEgaW50cmluc2ljKCBfSW50ZXJsb2NrZWREZWNyZW1lbnQgKQotIyBwcmFnbWEgaW50cmluc2ljKCBfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UgKQotIyBwcmFnbWEgaW50cmluc2ljKCBfSW50ZXJsb2NrZWRFeGNoYW5nZSApCi0jIHByYWdtYSBpbnRyaW5zaWMoIF9JbnRlcmxvY2tlZEV4Y2hhbmdlQWRkICkKLQotIyBpZiBkZWZpbmVkKF9NX0lBNjQpIHx8IGRlZmluZWQoX01fQU1ENjQpCi0KLWV4dGVybiAiQyIgdm9pZCogX19jZGVjbCBfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2VQb2ludGVyKCB2b2lkKiB2b2xhdGlsZSAqLCB2b2lkKiwgdm9pZCogKTsKLWV4dGVybiAiQyIgdm9pZCogX19jZGVjbCBfSW50ZXJsb2NrZWRFeGNoYW5nZVBvaW50ZXIoIHZvaWQqIHZvbGF0aWxlICosIHZvaWQqICk7Ci0KLSMgIHByYWdtYSBpbnRyaW5zaWMoIF9JbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZVBvaW50ZXIgKQotIyAgcHJhZ21hIGludHJpbnNpYyggX0ludGVybG9ja2VkRXhjaGFuZ2VQb2ludGVyICkKLQotIyAgZGVmaW5lIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0NPTVBBUkVfRVhDSEFOR0VfUE9JTlRFUiBfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2VQb2ludGVyCi0jICBkZWZpbmUgTkROQk9PU1RfSU5URVJMT0NLRURfRVhDSEFOR0VfUE9JTlRFUiBfSW50ZXJsb2NrZWRFeGNoYW5nZVBvaW50ZXIKLQotIyBlbHNlCi0KLSMgIGRlZmluZSBORE5CT09TVF9JTlRFUkxPQ0tFRF9DT01QQVJFX0VYQ0hBTkdFX1BPSU5URVIoZGVzdCxleGNoYW5nZSxjb21wYXJlKSBcCi0gICAgKCh2b2lkKilORE5CT09TVF9JTlRFUkxPQ0tFRF9DT01QQVJFX0VYQ0hBTkdFKChsb25nIHZvbGF0aWxlKikoZGVzdCksKGxvbmcpKGV4Y2hhbmdlKSwobG9uZykoY29tcGFyZSkpKQotIyAgZGVmaW5lIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0VYQ0hBTkdFX1BPSU5URVIoZGVzdCxleGNoYW5nZSkgXAotICAgICgodm9pZCopTkROQk9PU1RfSU5URVJMT0NLRURfRVhDSEFOR0UoKGxvbmcgdm9sYXRpbGUqKShkZXN0KSwobG9uZykoZXhjaGFuZ2UpKSkKLQotIyBlbmRpZgotCi0jIGRlZmluZSBORE5CT09TVF9JTlRFUkxPQ0tFRF9JTkNSRU1FTlQgX0ludGVybG9ja2VkSW5jcmVtZW50Ci0jIGRlZmluZSBORE5CT09TVF9JTlRFUkxPQ0tFRF9ERUNSRU1FTlQgX0ludGVybG9ja2VkRGVjcmVtZW50Ci0jIGRlZmluZSBORE5CT09TVF9JTlRFUkxPQ0tFRF9DT01QQVJFX0VYQ0hBTkdFIF9JbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZQotIyBkZWZpbmUgTkROQk9PU1RfSU5URVJMT0NLRURfRVhDSEFOR0UgX0ludGVybG9ja2VkRXhjaGFuZ2UKLSMgZGVmaW5lIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0VYQ0hBTkdFX0FERCBfSW50ZXJsb2NrZWRFeGNoYW5nZUFkZAotCi0jZWxpZiBkZWZpbmVkKCBXSU4zMiApIHx8IGRlZmluZWQoIF9XSU4zMiApIHx8IGRlZmluZWQoIF9fV0lOMzJfXyApIHx8IGRlZmluZWQoIF9fQ1lHV0lOX18gKQotCi0jaWYgZGVmaW5lZChfX01JTkdXNjRfXykKLSNkZWZpbmUgTkROQk9PU1RfSU5URVJMT0NLRURfSU1QT1JUCi0jZWxzZQotI2RlZmluZSBORE5CT09TVF9JTlRFUkxPQ0tFRF9JTVBPUlQgX19kZWNsc3BlYyhkbGxpbXBvcnQpCi0jZW5kaWYKLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi1leHRlcm4gIkMiIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0lNUE9SVCBsb25nIF9fc3RkY2FsbCBJbnRlcmxvY2tlZEluY3JlbWVudCggbG9uZyB2b2xhdGlsZSAqICk7Ci1leHRlcm4gIkMiIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0lNUE9SVCBsb25nIF9fc3RkY2FsbCBJbnRlcmxvY2tlZERlY3JlbWVudCggbG9uZyB2b2xhdGlsZSAqICk7Ci1leHRlcm4gIkMiIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0lNUE9SVCBsb25nIF9fc3RkY2FsbCBJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZSggbG9uZyB2b2xhdGlsZSAqLCBsb25nLCBsb25nICk7Ci1leHRlcm4gIkMiIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0lNUE9SVCBsb25nIF9fc3RkY2FsbCBJbnRlcmxvY2tlZEV4Y2hhbmdlKCBsb25nIHZvbGF0aWxlICosIGxvbmcgKTsKLWV4dGVybiAiQyIgTkROQk9PU1RfSU5URVJMT0NLRURfSU1QT1JUIGxvbmcgX19zdGRjYWxsIEludGVybG9ja2VkRXhjaGFuZ2VBZGQoIGxvbmcgdm9sYXRpbGUgKiwgbG9uZyApOwotCi0jIGlmIGRlZmluZWQoX01fSUE2NCkgfHwgZGVmaW5lZChfTV9BTUQ2NCkKLWV4dGVybiAiQyIgTkROQk9PU1RfSU5URVJMT0NLRURfSU1QT1JUIHZvaWQqIF9fc3RkY2FsbCBJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZVBvaW50ZXIoIHZvaWQqIHZvbGF0aWxlICosIHZvaWQqLCB2b2lkKiApOwotZXh0ZXJuICJDIiBORE5CT09TVF9JTlRFUkxPQ0tFRF9JTVBPUlQgdm9pZCogX19zdGRjYWxsIEludGVybG9ja2VkRXhjaGFuZ2VQb2ludGVyKCB2b2lkKiB2b2xhdGlsZSAqLCB2b2lkKiApOwotIyBlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotIyBkZWZpbmUgTkROQk9PU1RfSU5URVJMT0NLRURfSU5DUkVNRU5UIDo6bmRuYm9vc3Q6OmRldGFpbDo6SW50ZXJsb2NrZWRJbmNyZW1lbnQKLSMgZGVmaW5lIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0RFQ1JFTUVOVCA6Om5kbmJvb3N0OjpkZXRhaWw6OkludGVybG9ja2VkRGVjcmVtZW50Ci0jIGRlZmluZSBORE5CT09TVF9JTlRFUkxPQ0tFRF9DT01QQVJFX0VYQ0hBTkdFIDo6bmRuYm9vc3Q6OmRldGFpbDo6SW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UKLSMgZGVmaW5lIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0VYQ0hBTkdFIDo6bmRuYm9vc3Q6OmRldGFpbDo6SW50ZXJsb2NrZWRFeGNoYW5nZQotIyBkZWZpbmUgTkROQk9PU1RfSU5URVJMT0NLRURfRVhDSEFOR0VfQUREIDo6bmRuYm9vc3Q6OmRldGFpbDo6SW50ZXJsb2NrZWRFeGNoYW5nZUFkZAotCi0jIGlmIGRlZmluZWQoX01fSUE2NCkgfHwgZGVmaW5lZChfTV9BTUQ2NCkKLSMgIGRlZmluZSBORE5CT09TVF9JTlRFUkxPQ0tFRF9DT01QQVJFX0VYQ0hBTkdFX1BPSU5URVIgOjpuZG5ib29zdDo6ZGV0YWlsOjpJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZVBvaW50ZXIKLSMgIGRlZmluZSBORE5CT09TVF9JTlRFUkxPQ0tFRF9FWENIQU5HRV9QT0lOVEVSIDo6bmRuYm9vc3Q6OmRldGFpbDo6SW50ZXJsb2NrZWRFeGNoYW5nZVBvaW50ZXIKLSMgZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0NPTVBBUkVfRVhDSEFOR0VfUE9JTlRFUihkZXN0LGV4Y2hhbmdlLGNvbXBhcmUpIFwKLSAgICAoKHZvaWQqKU5ETkJPT1NUX0lOVEVSTE9DS0VEX0NPTVBBUkVfRVhDSEFOR0UoKGxvbmcgdm9sYXRpbGUqKShkZXN0KSwobG9uZykoZXhjaGFuZ2UpLChsb25nKShjb21wYXJlKSkpCi0jICBkZWZpbmUgTkROQk9PU1RfSU5URVJMT0NLRURfRVhDSEFOR0VfUE9JTlRFUihkZXN0LGV4Y2hhbmdlKSBcCi0gICAgKCh2b2lkKilORE5CT09TVF9JTlRFUkxPQ0tFRF9FWENIQU5HRSgobG9uZyB2b2xhdGlsZSopKGRlc3QpLChsb25nKShleGNoYW5nZSkpKQotIyBlbmRpZgotCi0jZWxzZQotCi0jIGVycm9yICJJbnRlcmxvY2tlZCBpbnRyaW5zaWNzIG5vdCBhdmFpbGFibGUiCi0KLSNlbmRpZgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9ERVRBSUxfSU5URVJMT0NLRURfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9pc19mdW5jdGlvbl9yZWZfdGVzdGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL2lzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDFmZjVmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL2lzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTM2ICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBEYXZlIEFicmFoYW1zLCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCAKLS8vIEFsZWtzZXkgR3VydG92b3ksIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuICAKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0lTX0lURVJBVElORykKLQotLy8vLy8gaGVhZGVyIGJvZHkKLQotI2lmbmRlZiBORE5CT09TVF9ERVRBSUxfSVNfRlVOQ1RJT05fUkVGX1RFU1RFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0lTX0ZVTkNUSU9OX1JFRl9URVNURVJfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwveWVzX25vX3R5cGUuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbmZpZy5ocHAiCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1RUX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlICJuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHAiCi0jICAgaW5jbHVkZSAibmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VudW1fcGFyYW1zLmhwcCIKLSMgICBpbmNsdWRlICJuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29tbWFfaWYuaHBwIgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgZGV0YWlsIHsKLW5hbWVzcGFjZSBpc19mdW5jdGlvbl9yZWZfdGVzdGVyXyB7Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpub190eXBlIE5ETkJPT1NUX1RUX0RFQ0wgaXNfZnVuY3Rpb25fcmVmX3Rlc3RlcihUJiAuLi4pOwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVFRfUFJFUFJPQ0VTU0lOR19NT0RFKQotLy8gcHJlcHJvY2Vzc29yLWdlbmVyYXRlZCBwYXJ0LCBkb24ndCBlZGl0IGJ5IGhhbmQhCi0KLXRlbXBsYXRlIDxjbGFzcyBSPgotbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBpc19mdW5jdGlvbl9yZWZfdGVzdGVyKFIgKCYpKCksIGludCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLGNsYXNzIFQwID4KLW5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgaXNfZnVuY3Rpb25fcmVmX3Rlc3RlcihSICgmKShUMCksIGludCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLGNsYXNzIFQwLGNsYXNzIFQxID4KLW5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgaXNfZnVuY3Rpb25fcmVmX3Rlc3RlcihSICgmKShUMCxUMSksIGludCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLGNsYXNzIFQwLGNsYXNzIFQxLGNsYXNzIFQyID4KLW5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgaXNfZnVuY3Rpb25fcmVmX3Rlc3RlcihSICgmKShUMCxUMSxUMiksIGludCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLGNsYXNzIFQwLGNsYXNzIFQxLGNsYXNzIFQyLGNsYXNzIFQzID4KLW5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgaXNfZnVuY3Rpb25fcmVmX3Rlc3RlcihSICgmKShUMCxUMSxUMixUMyksIGludCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLGNsYXNzIFQwLGNsYXNzIFQxLGNsYXNzIFQyLGNsYXNzIFQzLGNsYXNzIFQ0ID4KLW5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgaXNfZnVuY3Rpb25fcmVmX3Rlc3RlcihSICgmKShUMCxUMSxUMixUMyxUNCksIGludCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLGNsYXNzIFQwLGNsYXNzIFQxLGNsYXNzIFQyLGNsYXNzIFQzLGNsYXNzIFQ0LGNsYXNzIFQ1ID4KLW5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgaXNfZnVuY3Rpb25fcmVmX3Rlc3RlcihSICgmKShUMCxUMSxUMixUMyxUNCxUNSksIGludCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLGNsYXNzIFQwLGNsYXNzIFQxLGNsYXNzIFQyLGNsYXNzIFQzLGNsYXNzIFQ0LGNsYXNzIFQ1LGNsYXNzIFQ2ID4KLW5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgaXNfZnVuY3Rpb25fcmVmX3Rlc3RlcihSICgmKShUMCxUMSxUMixUMyxUNCxUNSxUNiksIGludCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLGNsYXNzIFQwLGNsYXNzIFQxLGNsYXNzIFQyLGNsYXNzIFQzLGNsYXNzIFQ0LGNsYXNzIFQ1LGNsYXNzIFQ2LGNsYXNzIFQ3ID4KLW5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgaXNfZnVuY3Rpb25fcmVmX3Rlc3RlcihSICgmKShUMCxUMSxUMixUMyxUNCxUNSxUNixUNyksIGludCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLGNsYXNzIFQwLGNsYXNzIFQxLGNsYXNzIFQyLGNsYXNzIFQzLGNsYXNzIFQ0LGNsYXNzIFQ1LGNsYXNzIFQ2LGNsYXNzIFQ3LGNsYXNzIFQ4ID4KLW5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgaXNfZnVuY3Rpb25fcmVmX3Rlc3RlcihSICgmKShUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCksIGludCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLGNsYXNzIFQwLGNsYXNzIFQxLGNsYXNzIFQyLGNsYXNzIFQzLGNsYXNzIFQ0LGNsYXNzIFQ1LGNsYXNzIFQ2LGNsYXNzIFQ3LGNsYXNzIFQ4LGNsYXNzIFQ5ID4KLW5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgaXNfZnVuY3Rpb25fcmVmX3Rlc3RlcihSICgmKShUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSksIGludCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLGNsYXNzIFQwLGNsYXNzIFQxLGNsYXNzIFQyLGNsYXNzIFQzLGNsYXNzIFQ0LGNsYXNzIFQ1LGNsYXNzIFQ2LGNsYXNzIFQ3LGNsYXNzIFQ4LGNsYXNzIFQ5LGNsYXNzIFQxMCA+Ci1uZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoUiAoJikoVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwKSwgaW50KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsY2xhc3MgVDAsY2xhc3MgVDEsY2xhc3MgVDIsY2xhc3MgVDMsY2xhc3MgVDQsY2xhc3MgVDUsY2xhc3MgVDYsY2xhc3MgVDcsY2xhc3MgVDgsY2xhc3MgVDksY2xhc3MgVDEwLGNsYXNzIFQxMSA+Ci1uZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoUiAoJikoVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSksIGludCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLGNsYXNzIFQwLGNsYXNzIFQxLGNsYXNzIFQyLGNsYXNzIFQzLGNsYXNzIFQ0LGNsYXNzIFQ1LGNsYXNzIFQ2LGNsYXNzIFQ3LGNsYXNzIFQ4LGNsYXNzIFQ5LGNsYXNzIFQxMCxjbGFzcyBUMTEsY2xhc3MgVDEyID4KLW5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgaXNfZnVuY3Rpb25fcmVmX3Rlc3RlcihSICgmKShUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiksIGludCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLGNsYXNzIFQwLGNsYXNzIFQxLGNsYXNzIFQyLGNsYXNzIFQzLGNsYXNzIFQ0LGNsYXNzIFQ1LGNsYXNzIFQ2LGNsYXNzIFQ3LGNsYXNzIFQ4LGNsYXNzIFQ5LGNsYXNzIFQxMCxjbGFzcyBUMTEsY2xhc3MgVDEyLGNsYXNzIFQxMyA+Ci1uZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoUiAoJikoVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzKSwgaW50KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsY2xhc3MgVDAsY2xhc3MgVDEsY2xhc3MgVDIsY2xhc3MgVDMsY2xhc3MgVDQsY2xhc3MgVDUsY2xhc3MgVDYsY2xhc3MgVDcsY2xhc3MgVDgsY2xhc3MgVDksY2xhc3MgVDEwLGNsYXNzIFQxMSxjbGFzcyBUMTIsY2xhc3MgVDEzLGNsYXNzIFQxNCA+Ci1uZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoUiAoJikoVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCksIGludCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLGNsYXNzIFQwLGNsYXNzIFQxLGNsYXNzIFQyLGNsYXNzIFQzLGNsYXNzIFQ0LGNsYXNzIFQ1LGNsYXNzIFQ2LGNsYXNzIFQ3LGNsYXNzIFQ4LGNsYXNzIFQ5LGNsYXNzIFQxMCxjbGFzcyBUMTEsY2xhc3MgVDEyLGNsYXNzIFQxMyxjbGFzcyBUMTQsY2xhc3MgVDE1ID4KLW5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgaXNfZnVuY3Rpb25fcmVmX3Rlc3RlcihSICgmKShUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSksIGludCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLGNsYXNzIFQwLGNsYXNzIFQxLGNsYXNzIFQyLGNsYXNzIFQzLGNsYXNzIFQ0LGNsYXNzIFQ1LGNsYXNzIFQ2LGNsYXNzIFQ3LGNsYXNzIFQ4LGNsYXNzIFQ5LGNsYXNzIFQxMCxjbGFzcyBUMTEsY2xhc3MgVDEyLGNsYXNzIFQxMyxjbGFzcyBUMTQsY2xhc3MgVDE1LGNsYXNzIFQxNiA+Ci1uZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoUiAoJikoVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2KSwgaW50KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsY2xhc3MgVDAsY2xhc3MgVDEsY2xhc3MgVDIsY2xhc3MgVDMsY2xhc3MgVDQsY2xhc3MgVDUsY2xhc3MgVDYsY2xhc3MgVDcsY2xhc3MgVDgsY2xhc3MgVDksY2xhc3MgVDEwLGNsYXNzIFQxMSxjbGFzcyBUMTIsY2xhc3MgVDEzLGNsYXNzIFQxNCxjbGFzcyBUMTUsY2xhc3MgVDE2LGNsYXNzIFQxNyA+Ci1uZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoUiAoJikoVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyksIGludCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLGNsYXNzIFQwLGNsYXNzIFQxLGNsYXNzIFQyLGNsYXNzIFQzLGNsYXNzIFQ0LGNsYXNzIFQ1LGNsYXNzIFQ2LGNsYXNzIFQ3LGNsYXNzIFQ4LGNsYXNzIFQ5LGNsYXNzIFQxMCxjbGFzcyBUMTEsY2xhc3MgVDEyLGNsYXNzIFQxMyxjbGFzcyBUMTQsY2xhc3MgVDE1LGNsYXNzIFQxNixjbGFzcyBUMTcsY2xhc3MgVDE4ID4KLW5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgaXNfZnVuY3Rpb25fcmVmX3Rlc3RlcihSICgmKShUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCksIGludCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLGNsYXNzIFQwLGNsYXNzIFQxLGNsYXNzIFQyLGNsYXNzIFQzLGNsYXNzIFQ0LGNsYXNzIFQ1LGNsYXNzIFQ2LGNsYXNzIFQ3LGNsYXNzIFQ4LGNsYXNzIFQ5LGNsYXNzIFQxMCxjbGFzcyBUMTEsY2xhc3MgVDEyLGNsYXNzIFQxMyxjbGFzcyBUMTQsY2xhc3MgVDE1LGNsYXNzIFQxNixjbGFzcyBUMTcsY2xhc3MgVDE4LGNsYXNzIFQxOSA+Ci1uZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoUiAoJikoVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5KSwgaW50KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsY2xhc3MgVDAsY2xhc3MgVDEsY2xhc3MgVDIsY2xhc3MgVDMsY2xhc3MgVDQsY2xhc3MgVDUsY2xhc3MgVDYsY2xhc3MgVDcsY2xhc3MgVDgsY2xhc3MgVDksY2xhc3MgVDEwLGNsYXNzIFQxMSxjbGFzcyBUMTIsY2xhc3MgVDEzLGNsYXNzIFQxNCxjbGFzcyBUMTUsY2xhc3MgVDE2LGNsYXNzIFQxNyxjbGFzcyBUMTgsY2xhc3MgVDE5LGNsYXNzIFQyMCA+Ci1uZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoUiAoJikoVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCksIGludCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLGNsYXNzIFQwLGNsYXNzIFQxLGNsYXNzIFQyLGNsYXNzIFQzLGNsYXNzIFQ0LGNsYXNzIFQ1LGNsYXNzIFQ2LGNsYXNzIFQ3LGNsYXNzIFQ4LGNsYXNzIFQ5LGNsYXNzIFQxMCxjbGFzcyBUMTEsY2xhc3MgVDEyLGNsYXNzIFQxMyxjbGFzcyBUMTQsY2xhc3MgVDE1LGNsYXNzIFQxNixjbGFzcyBUMTcsY2xhc3MgVDE4LGNsYXNzIFQxOSxjbGFzcyBUMjAsY2xhc3MgVDIxID4KLW5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgaXNfZnVuY3Rpb25fcmVmX3Rlc3RlcihSICgmKShUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSksIGludCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLGNsYXNzIFQwLGNsYXNzIFQxLGNsYXNzIFQyLGNsYXNzIFQzLGNsYXNzIFQ0LGNsYXNzIFQ1LGNsYXNzIFQ2LGNsYXNzIFQ3LGNsYXNzIFQ4LGNsYXNzIFQ5LGNsYXNzIFQxMCxjbGFzcyBUMTEsY2xhc3MgVDEyLGNsYXNzIFQxMyxjbGFzcyBUMTQsY2xhc3MgVDE1LGNsYXNzIFQxNixjbGFzcyBUMTcsY2xhc3MgVDE4LGNsYXNzIFQxOSxjbGFzcyBUMjAsY2xhc3MgVDIxLGNsYXNzIFQyMiA+Ci1uZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoUiAoJikoVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyKSwgaW50KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsY2xhc3MgVDAsY2xhc3MgVDEsY2xhc3MgVDIsY2xhc3MgVDMsY2xhc3MgVDQsY2xhc3MgVDUsY2xhc3MgVDYsY2xhc3MgVDcsY2xhc3MgVDgsY2xhc3MgVDksY2xhc3MgVDEwLGNsYXNzIFQxMSxjbGFzcyBUMTIsY2xhc3MgVDEzLGNsYXNzIFQxNCxjbGFzcyBUMTUsY2xhc3MgVDE2LGNsYXNzIFQxNyxjbGFzcyBUMTgsY2xhc3MgVDE5LGNsYXNzIFQyMCxjbGFzcyBUMjEsY2xhc3MgVDIyLGNsYXNzIFQyMyA+Ci1uZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoUiAoJikoVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyksIGludCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLGNsYXNzIFQwLGNsYXNzIFQxLGNsYXNzIFQyLGNsYXNzIFQzLGNsYXNzIFQ0LGNsYXNzIFQ1LGNsYXNzIFQ2LGNsYXNzIFQ3LGNsYXNzIFQ4LGNsYXNzIFQ5LGNsYXNzIFQxMCxjbGFzcyBUMTEsY2xhc3MgVDEyLGNsYXNzIFQxMyxjbGFzcyBUMTQsY2xhc3MgVDE1LGNsYXNzIFQxNixjbGFzcyBUMTcsY2xhc3MgVDE4LGNsYXNzIFQxOSxjbGFzcyBUMjAsY2xhc3MgVDIxLGNsYXNzIFQyMixjbGFzcyBUMjMsY2xhc3MgVDI0ID4KLW5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgaXNfZnVuY3Rpb25fcmVmX3Rlc3RlcihSICgmKShUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCksIGludCk7Ci0KLSNlbHNlCi0KLSNkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywgKDAsIDI1LCAibmRuYm9vc3QvZGV0YWlsL2lzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIuaHBwIikpCi0jaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX1BSRVBST0NFU1NJTkdfTU9ERQotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLX0gLy8gbmFtZXNwYWNlIHB5dGhvbgotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX0RFVEFJTF9JU19GVU5DVElPTl9SRUZfVEVTVEVSX0hQUF9JTkNMVURFRAotCi0vLy8vLyBpdGVyYXRpb24KLQotI2Vsc2UKLSNkZWZpbmUgaSBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkKLQotdGVtcGxhdGUgPGNsYXNzIFIgTkROQk9PU1RfUFBfQ09NTUFfSUYoaSkgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoaSxjbGFzcyBUKSA+Ci1uZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoUiAoJikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoaSxUKSksIGludCk7Ci0KLSN1bmRlZiBpCi0jZW5kaWYgLy8gTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL2lzX2luY3JlbWVudGFibGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvaXNfaW5jcmVtZW50YWJsZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5ZmY5Y2EuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvaXNfaW5jcmVtZW50YWJsZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzQgKzAsMCBAQAotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDQuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMKLS8vIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jaWZuZGVmIElTX0lOQ1JFTUVOVEFCTEVfTkROQk9PU1RfRFdBMjAwNDE1X0hQUAotIyBkZWZpbmUgSVNfSU5DUkVNRU5UQUJMRV9ORE5CT09TVF9EV0EyMDA0MTVfSFBQCi0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3RlbXBsYXRlX2FyaXR5X3NwZWMuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0vLyBNdXN0IGJlIHRoZSBsYXN0IGluY2x1ZGUKLSMgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGRldGFpbCB7IAotCi0vLyBpc19pbmNyZW1lbnRhYmxlPFQ+IG1ldGFmdW5jdGlvbgotLy8KLS8vIFJlcXVpcmVzOiBHaXZlbiB4IG9mIHR5cGUgVCYsIGlmIHRoZSBleHByZXNzaW9uICsreCBpcyB3ZWxsLWZvcm1lZAotLy8gaXQgbXVzdCBoYXZlIGNvbXBsZXRlIHR5cGU7IG90aGVyd2lzZSwgaXQgbXVzdCBuZWl0aGVyIGJlIGFtYmlndW91cwotLy8gbm9yIHZpb2xhdGUgYWNjZXNzLgotCi0vLyBUaGlzIG5hbWVzcGFjZSBlbnN1cmVzIHRoYXQgQURMIGRvZXNuJ3QgbWVzcyB0aGluZ3MgdXAuCi1uYW1lc3BhY2UgaXNfaW5jcmVtZW50YWJsZV8KLXsKLSAgLy8gYSB0eXBlIHJldHVybmVkIGZyb20gb3BlcmF0b3IrKyB3aGVuIG5vIGluY3JlbWVudCBpcyBmb3VuZCBpbiB0aGUKLSAgLy8gdHlwZSdzIG93biBuYW1lc3BhY2UKLSAgc3RydWN0IHRhZyB7fTsKLSAgCi0gIC8vIGFueSBzb2FrcyB1cCBpbXBsaWNpdCBjb252ZXJzaW9ucyBhbmQgbWFrZXMgdGhlIGZvbGxvd2luZwotICAvLyBvcGVyYXRvcisrIGxlc3MtcHJlZmVycmVkIHRoYW4gYW55IG90aGVyIHN1Y2ggb3BlcmF0b3IgdGhhdAotICAvLyBtaWdodCBiZSBmb3VuZCB2aWEgQURMLgotICBzdHJ1Y3QgYW55IHsgdGVtcGxhdGUgPGNsYXNzIFQ+IGFueShUIGNvbnN0Jik7IH07Ci0KLSAgLy8gVGhpcyBpcyBhIGxhc3QtcmVzb3J0IG9wZXJhdG9yKysgZm9yIHdoZW4gbm9uZSBvdGhlciBpcyBmb3VuZAotIyBpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA9PSA0KSAmJiBfX0dOVUNfTUlOT1JfXyA9PSAwICYmIF9fR05VQ19QQVRDSExFVkVMX18gPT0gMgotICAKLX0KLQotbmFtZXNwYWNlIGlzX2luY3JlbWVudGFibGVfMgotewotICBpc19pbmNyZW1lbnRhYmxlXzo6dGFnIG9wZXJhdG9yKysoaXNfaW5jcmVtZW50YWJsZV86OmFueSBjb25zdCYpOwotICBpc19pbmNyZW1lbnRhYmxlXzo6dGFnIG9wZXJhdG9yKysoaXNfaW5jcmVtZW50YWJsZV86OmFueSBjb25zdCYsaW50KTsKLX0KLXVzaW5nIG5hbWVzcGFjZSBpc19pbmNyZW1lbnRhYmxlXzI7Ci0KLW5hbWVzcGFjZSBpc19pbmNyZW1lbnRhYmxlXwotewotICAKLSMgZWxzZQotICAKLSAgdGFnIG9wZXJhdG9yKysoYW55IGNvbnN0Jik7Ci0gIHRhZyBvcGVyYXRvcisrKGFueSBjb25zdCYsaW50KTsKLSAgCi0jIGVuZGlmIAotCi0jIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4MzIwMikpIFwKLSAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApCi0jICBkZWZpbmUgTkROQk9PU1RfY29tbWEoYSxiKSAoYSkKLSMgZWxzZSAKLSAgLy8gSW4gY2FzZSBhbiBvcGVyYXRvcisrIGlzIGZvdW5kIHRoYXQgcmV0dXJucyB2b2lkLCB3ZSdsbCB1c2UgKyt4LDAKLSAgdGFnIG9wZXJhdG9yLCh0YWcsaW50KTsgIAotIyAgZGVmaW5lIE5ETkJPT1NUX2NvbW1hKGEsYikgKGEsYikKLSMgZW5kaWYgCi0KLSMgaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotIyAgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDkxMykgLy8gV2FybmluZyBhYm91dCBvcGVyYXRvciwKLSMgZW5kaWYgCi0KLSAgLy8gdHdvIGNoZWNrIG92ZXJsb2FkcyBoZWxwIHVzIGlkZW50aWZ5IHdoaWNoIG9wZXJhdG9yKysgd2FzIHBpY2tlZAotICBjaGFyICgmIGNoZWNrXyh0YWcpIClbMl07Ci0gIAotICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgY2hhciBjaGVja18oVCBjb25zdCYpOwotICAKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgc3RydWN0IGltcGwKLSAgewotICAgICAgc3RhdGljIHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfY3Y8VD46OnR5cGUmIHg7Ci0KLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCgKLSAgICAgICAgICBib29sCi0gICAgICAgICwgdmFsdWUgPSBzaXplb2YoaXNfaW5jcmVtZW50YWJsZV86OmNoZWNrXyhORE5CT09TVF9jb21tYSgrK3gsMCkpKSA9PSAxCi0gICAgICApOwotICB9OwotCi0gIHRlbXBsYXRlIDxjbGFzcyBUPgotICBzdHJ1Y3QgcG9zdGZpeF9pbXBsCi0gIHsKLSAgICAgIHN0YXRpYyB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlJiB4OwotCi0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoCi0gICAgICAgICAgYm9vbAotICAgICAgICAsIHZhbHVlID0gc2l6ZW9mKGlzX2luY3JlbWVudGFibGVfOjpjaGVja18oTkROQk9PU1RfY29tbWEoeCsrLDApKSkgPT0gMQotICAgICAgKTsKLSAgfTsKLQotIyBpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jICBwcmFnbWEgd2FybmluZyhwb3ApCi0jIGVuZGlmIAotCi19Ci0KLSMgdW5kZWYgTkROQk9PU1RfY29tbWEKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gCi1zdHJ1Y3QgaXNfaW5jcmVtZW50YWJsZSAKLU5ETkJPT1NUX1RUX0FVWF9CT09MX0NfQkFTRSg6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX2luY3JlbWVudGFibGVfOjppbXBsPFQ+Ojp2YWx1ZSkKLXsgCi0gICAgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfVkFMVUVfREVDTCg6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX2luY3JlbWVudGFibGVfOjppbXBsPFQ+Ojp2YWx1ZSkKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEsaXNfaW5jcmVtZW50YWJsZSwoVCkpCi19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiAKLXN0cnVjdCBpc19wb3N0Zml4X2luY3JlbWVudGFibGUgCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9DX0JBU0UoOjpuZG5ib29zdDo6ZGV0YWlsOjppc19pbmNyZW1lbnRhYmxlXzo6aW1wbDxUPjo6dmFsdWUpCi17IAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1ZBTFVFX0RFQ0woOjpuZG5ib29zdDo6ZGV0YWlsOjppc19pbmNyZW1lbnRhYmxlXzo6cG9zdGZpeF9pbXBsPFQ+Ojp2YWx1ZSkKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEsaXNfcG9zdGZpeF9pbmNyZW1lbnRhYmxlLChUKSkKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygxLCA6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX2luY3JlbWVudGFibGUpCi1ORE5CT09TVF9UVF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygxLCA6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX3Bvc3RmaXhfaW5jcmVtZW50YWJsZSkKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBJU19JTkNSRU1FTlRBQkxFX05ETkJPT1NUX0RXQTIwMDQxNV9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL2l0ZXJhdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL2l0ZXJhdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzg4YTg5Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9pdGVyYXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OTQgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAyLgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyBCb29zdCB2ZXJzaW9ucyBvZgotLy8KLS8vICAgIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPD46Oml0ZXJhdG9yX2NhdGVnb3J5Ci0vLyAgICBzdGQ6Oml0ZXJhdG9yX3RyYWl0czw+OjpkaWZmZXJlbmNlX3R5cGUKLS8vICAgIHN0ZDo6ZGlzdGFuY2UoKQotLy8KLS8vIC4uLmZvciBhbGwgY29tcGlsZXJzIGFuZCBpdGVyYXRvcnMKLS8vCi0vLyBBZGRpdGlvbmFsbHksIGlmIFggaXMgYSBwb2ludGVyCi0vLyAgICBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxYPjo6cG9pbnRlcgotCi0vLyBPdGhlcndpc2UsIGlmIHBhcnRpYWwgc3BlY2lhbGl6YXRpb24gaXMgc3VwcG9ydGVkIG9yIFggaXMgbm90IGEgcG9pbnRlcgotLy8gICAgc3RkOjppdGVyYXRvcl90cmFpdHM8WD46OnZhbHVlX3R5cGUKLS8vICAgIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPFg+Ojpwb2ludGVyCi0vLyAgICBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxYPjo6cmVmZXJlbmNlCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0vLyBSZXZpc2lvbiBIaXN0b3J5Ci0vLyAwNCBNYXIgMjAwMSAtIE1vcmUgYXR0ZW1wdGVkIGZpeGVzIGZvciBJbnRlbCBDKysgKERhdmlkIEFicmFoYW1zKQotLy8gMDMgTWFyIDIwMDEgLSBQdXQgYWxsIGltcGxlbWVudGF0aW9uIGludG8gbmFtZXNwYWNlCi0vLyAgICAgICAgICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0c18uIFNvbWUgcHJvZ3Jlc3MgbWFkZSBvbiBmaXhlcwotLy8gICAgICAgICAgICAgICBmb3IgSW50ZWwgY29tcGlsZXIuIChEYXZpZCBBYnJhaGFtcykKLS8vIDAyIE1hciAyMDAxIC0gQ2hhbmdlZCBORE5CT09TVF9NU1ZDIHRvIE5ETkJPT1NUX01TVkNfU1REX0lURVJBVE9SIGluIGEgZmV3Ci0vLyAgICAgICAgICAgICAgIHBsYWNlcy4gKEplcmVteSBTaWVrKQotLy8gMTkgRmViIDIwMDEgLSBJbXByb3ZlZCB3b3JrYXJvdW5kcyBmb3Igc3RvY2sgTVNWQzY7IHVzZSB5ZXNfdHlwZSBhbmQKLS8vICAgICAgICAgICAgICAgbm9fdHlwZSBmcm9tIHR5cGVfdHJhaXRzLmhwcDsgc3RvcHBlZCB0cnlpbmcgdG8gcmVtb3ZlX2N2Ci0vLyAgICAgICAgICAgICAgIGJlZm9yZSBkZXRlY3RpbmcgaXNfcG9pbnRlciwgaW4gaG9ub3Igb2YgdGhlIG5ldyB0eXBlX3RyYWl0cwotLy8gICAgICAgICAgICAgICBzZW1hbnRpY3MuIChEYXZpZCBBYnJhaGFtcykKLS8vIDEzIEZlYiAyMDAxIC0gTWFrZSBpdCB3b3JrIHdpdGggbmVhcmx5IGFsbCBzdGFuZGFyZC1jb25mb3JtaW5nIGl0ZXJhdG9ycwotLy8gICAgICAgICAgICAgICB1bmRlciByYXcgVkM2LiBUaGUgb25lIGNhdGVnb3J5IHJlbWFpbmluZyB3aGljaCB3aWxsIGZhaWwgaXMKLS8vICAgICAgICAgICAgICAgdGhhdCBvZiBpdGVyYXRvcnMgZGVyaXZlZCBmcm9tIHN0ZDo6aXRlcmF0b3IgYnV0IG5vdAotLy8gICAgICAgICAgICAgICBuZG5ib29zdDo6aXRlcmF0b3IgYW5kIHdoaWNoIHJlZGVmaW5lIGRpZmZlcmVuY2VfdHlwZS4KLS8vIDExIEZlYiAyMDAxIC0gQ2xlYW4gYXdheSBjb2RlIHdoaWNoIGNhbiBuZXZlciBiZSB1c2VkIChEYXZpZCBBYnJhaGFtcykKLS8vIDA5IEZlYiAyMDAxIC0gQWx3YXlzIGhhdmUgYSBkZWZpbml0aW9uIGZvciBlYWNoIHRyYWl0cyBtZW1iZXIsIGV2ZW4gaWYgaXQKLS8vICAgICAgICAgICAgICAgY2FuJ3QgYmUgcHJvcGVybHkgZGVkdWNlZC4gVGhlc2Ugd2lsbCBiZSBpbmNvbXBsZXRlIHR5cGVzIGluCi0vLyAgICAgICAgICAgICAgIHNvbWUgY2FzZXMgKHVuZGVmaW5lZDx2b2lkPiksIGJ1dCBpdCBoZWxwcyBzdXBwcmVzcyBNU1ZDIGVycm9ycwotLy8gICAgICAgICAgICAgICBlbHNld2hlcmUgKERhdmlkIEFicmFoYW1zKQotLy8gMDcgRmViIDIwMDEgLSBTdXBwb3J0IGZvciBtb3JlIG9mIHRoZSB0cmFpdHMgbWVtYmVycyB3aGVyZSBwb3NzaWJsZSwgbWFraW5nCi0vLyAgICAgICAgICAgICAgIHRoaXMgdXNlZnVsIGFzIGEgcmVwbGFjZW1lbnQgZm9yIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPFQ+IHdoZW4KLS8vICAgICAgICAgICAgICAgdXNlZCBhcyBhIGRlZmF1bHQgdGVtcGxhdGUgcGFyYW1ldGVyLgotLy8gMDYgRmViIDIwMDEgLSBSZW1vdmVkIHVzZWxlc3MgI2luY2x1ZGVzIG9mIHN0YW5kYXJkIGxpYnJhcnkgaGVhZGVycwotLy8gICAgICAgICAgICAgICAoRGF2aWQgQWJyYWhhbXMpCi0KLSNpZm5kZWYgSVRFUkFUT1JfTkROQk9PU1RfRFdBMTIyNjAwX0hQUF8KLSMgZGVmaW5lIElURVJBVE9SX05ETkJPT1NUX0RXQTEyMjYwMF9IUFBfCi0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8aXRlcmF0b3I+Ci0KLS8vIFNUTFBvcnQgNC4wIGFuZCBiZXRhcyBoYXZlIGEgYnVnIHdoZW4gZGVidWdnaW5nIGlzIGVuYWJsZWQgYW5kIHRoZXJlIGlzIG5vCi0vLyBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uOiBpbnN0ZWFkIG9mIGFuIGl0ZXJhdG9yX2NhdGVnb3J5IHR5cGVkZWYsIHRoZSBzdGFuZGFyZAotLy8gY29udGFpbmVyIGl0ZXJhdG9ycyBoYXZlIF9JdGVyYXRvcl9jYXRlZ29yeS4KLS8vCi0vLyBBbHNvLCB3aGV0aGVyIGRlYnVnZ2luZyBpcyBlbmFibGVkIG9yIG5vdCwgdGhlcmUgaXMgYSBicm9rZW4gc3BlY2lhbGl6YXRpb24KLS8vIG9mIHN0ZDo6aXRlcmF0b3I8b3V0cHV0X2l0ZXJhdG9yX3RhZyx2b2lkLHZvaWQsdm9pZCx2b2lkPiB3aGljaCBoYXMgbm8KLS8vIHR5cGVkZWZzIGJ1dCBpdGVyYXRvcl9jYXRlZ29yeS4KLSMgaWYgZGVmaW5lZChfX1NHSV9TVExfUE9SVCkKLQotIyAgaWYgKF9fU0dJX1NUTF9QT1JUIDw9IDB4NDEwKSAmJiAhZGVmaW5lZChfX1NUTF9DTEFTU19QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSAmJiBkZWZpbmVkKF9fU1RMX0RFQlVHKQotIyAgIGRlZmluZSBORE5CT09TVF9CQURfQ09OVEFJTkVSX0lURVJBVE9SX0NBVEVHT1JZX1RZUEVERUYKLSMgIGVuZGlmCi0KLSMgIGRlZmluZSBORE5CT09TVF9CQURfT1VUUFVUX0lURVJBVE9SX1NQRUNJQUxJWkFUSU9OCi0KLSMgZW5kaWYgLy8gU1RMUG9ydCA8PSA0LjFiNCAmJiBubyBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uCi0KLSMgaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fU1REX0lURVJBVE9SX1RSQUlUUykgICAgICAgICAgICAgXAotICAmJiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSBcCi0gICYmICFkZWZpbmVkKE5ETkJPT1NUX01TVkNfU1REX0lURVJBVE9SKQotICAgIAotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vIERlZmluZSBhIG5ldyB0ZW1wbGF0ZSBzbyBpdCBjYW4gYmUgc3BlY2lhbGl6ZWQKLXRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvcj4KLXN0cnVjdCBpdGVyYXRvcl90cmFpdHMKLSAgICA6IHN0ZDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPgote307Ci11c2luZyBzdGQ6OmRpc3RhbmNlOwotCi19fSAvLyBuYW1lc3BhY2UgbmRuYm9vc3Q6OmRldGFpbAotCi0jIGVsc2UKLQotIyAgaWYgICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pICBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVNWQ19TVERfSVRFUkFUT1IpCi0KLS8vIFRoaXMgaXMgdGhlIGNhc2Ugd2hlcmUgZXZlcnl0aGluZyBjb25mb3JtcyBleGNlcHQgTkROQk9PU1RfTk9fU1REX0lURVJBVE9SX1RSQUlUUwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gUm9ndWUgV2F2ZSBTdGFuZGFyZCBMaWJyYXJ5IGZvb2xzIGl0c2VsZiBpbnRvIHRoaW5raW5nIHBhcnRpYWwKLS8vIHNwZWNpYWxpemF0aW9uIGlzIG1pc3Npbmcgb24gc29tZSBwbGF0Zm9ybXMgKGUuZy4gU3VuKSwgc28gZmFpbHMgdG8KLS8vIHN1cHBseSBpdGVyYXRvcl90cmFpdHMhCi10ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3I+Ci1zdHJ1Y3QgaXRlcmF0b3JfdHJhaXRzCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBJdGVyYXRvcjo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3I6OnJlZmVyZW5jZSByZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBJdGVyYXRvcjo6cG9pbnRlciBwb2ludGVyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3I6OmRpZmZlcmVuY2VfdHlwZSBkaWZmZXJlbmNlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBJdGVyYXRvcjo6aXRlcmF0b3JfY2F0ZWdvcnkgaXRlcmF0b3JfY2F0ZWdvcnk7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpdGVyYXRvcl90cmFpdHM8VCo+Ci17Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiBUJiByZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiBUKiBwb2ludGVyOwotICAgIHR5cGVkZWYgc3RkOjpwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBlOwotICAgIHR5cGVkZWYgc3RkOjpyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGl0ZXJhdG9yX3RyYWl0czxUIGNvbnN0Kj4KLXsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIFQgY29uc3QmIHJlZmVyZW5jZTsKLSAgICB0eXBlZGVmIFQgY29uc3QqIHBvaW50ZXI7Ci0gICAgdHlwZWRlZiBzdGQ6OnB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7Ci0gICAgdHlwZWRlZiBzdGQ6OnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OwotfTsKLQotfX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0OjpkZXRhaWwKLQotIyAgZWxzZQotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jb25zdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC95ZXNfbm9fdHlwZS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvaW50ZXIuaHBwPgotCi0jIGlmZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotIyAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3BvaW50ZXIuaHBwPgotIyBlbmRpZgotIyBpZmRlZiBORE5CT09TVF9CQURfT1VUUFVUX0lURVJBVE9SX1NQRUNJQUxJWkFUSU9OCi0jICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19iYXNlX2FuZF9kZXJpdmVkLmhwcD4KLSMgZW5kaWYKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaGFzX3h4eC5ocHA+Ci0jIGluY2x1ZGUgPGNzdGRkZWY+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotIyBpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwIgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotTkROQk9PU1RfTVBMX0hBU19YWFhfVFJBSVRfREVGKHZhbHVlX3R5cGUpCi1ORE5CT09TVF9NUExfSEFTX1hYWF9UUkFJVF9ERUYocmVmZXJlbmNlKQotTkROQk9PU1RfTVBMX0hBU19YWFhfVFJBSVRfREVGKHBvaW50ZXIpCi1ORE5CT09TVF9NUExfSEFTX1hYWF9UUkFJVF9ERUYoZGlmZmVyZW5jZV90eXBlKQotTkROQk9PU1RfTVBMX0hBU19YWFhfVFJBSVRfREVGKGl0ZXJhdG9yX2NhdGVnb3J5KQotCi0vLyBpc19tdXRhYmxlX2l0ZXJhdG9yIC0tCi0vLwotLy8gICBBIG1ldGFmdW5jdGlvbiByZXR1cm5pbmcgdHJ1ZSBpZmYgVCBpcyBhIG11dGFibGUgaXRlcmF0b3IgdHlwZQotLy8gICB3aXRoIGEgbmVzdGVkIHZhbHVlX3R5cGUuIFdpbGwgb25seSB3b3JrIHBvcnRhYmx5IHdpdGggaXRlcmF0b3JzCi0vLyAgIHdob3NlIG9wZXJhdG9yKiByZXR1cm5zIGEgcmVmZXJlbmNlLCBidXQgdGhhdCBzZWVtcyB0byBiZSBPSyBmb3IKLS8vICAgdGhlIGl0ZXJhdG9ycyBzdXBwbGllZCBieSBEaW5rdW13YXJlLiBTb21lIGlucHV0IGl0ZXJhdG9ycyBtYXkKLS8vICAgY29tcGlsZS10aW1lIGlmIHRoZXkgYXJyaXZlIGhlcmUsIGFuZCBpZiB0aGUgY29tcGlsZXIgaXMgc3RyaWN0Ci0vLyAgIGFib3V0IG5vdCB0YWtpbmcgdGhlIGFkZHJlc3Mgb2YgYW4gcnZhbHVlLgotCi0vLyBUaGlzIG9uZSBkZXRlY3RzIG9yZGluYXJ5IG11dGFibGUgaXRlcmF0b3JzIC0gdGhlIHJlc3VsdCBvZgotLy8gb3BlcmF0b3IqIGlzIGNvbnZlcnRpYmxlIHRvIHRoZSB2YWx1ZV90eXBlLgotdGVtcGxhdGUgPGNsYXNzIFQ+Ci10eXBlX3RyYWl0czo6eWVzX3R5cGUgaXNfbXV0YWJsZV9pdGVyYXRvcl9oZWxwZXIoVCBjb25zdCosIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgVDo6dmFsdWVfdHlwZSopOwotCi0vLyBTaW5jZSB5b3UgY2FuJ3QgdGFrZSB0aGUgYWRkcmVzcyBvZiBhbiBydmFsdWUsIHRoZSBndXRzIG9mCi0vLyBpc19tdXRhYmxlX2l0ZXJhdG9yX2ltcGwgd2lsbCBmYWlsIGlmIHdlIHVzZSAmKnQgZGlyZWN0bHkuICBUaGlzCi0vLyBtYWtlcyBzdXJlIHdlIGNhbiBzdGlsbCB3b3JrIHdpdGggbm9uLWx2YWx1ZSBpdGVyYXRvcnMuCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gVCogbXV0YWJsZV9pdGVyYXRvcl9sdmFsdWVfaGVscGVyKFQmIHgpOwotaW50IG11dGFibGVfaXRlcmF0b3JfbHZhbHVlX2hlbHBlciguLi4pOwotCi0KLS8vIFRoaXMgb25lIGRldGVjdHMgb3V0cHV0IGl0ZXJhdG9ycyBzdWNoIGFzIG9zdHJlYW1faXRlcmF0b3Igd2hpY2gKLS8vIHJldHVybiByZWZlcmVuY2VzIHRvIHRoZW1zZWx2ZXMuCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBpc19tdXRhYmxlX2l0ZXJhdG9yX2hlbHBlcihUIGNvbnN0KiwgVCBjb25zdCopOwotCi10eXBlX3RyYWl0czo6bm9fdHlwZSBpc19tdXRhYmxlX2l0ZXJhdG9yX2hlbHBlciguLi4pOwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19tdXRhYmxlX2l0ZXJhdG9yX2ltcGwKLXsKLSAgICBzdGF0aWMgVCB0OwotICAgIAotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCgKLSAgICAgICAgYm9vbCwgdmFsdWUgPSBzaXplb2YoCi0gICAgICAgICAgICBkZXRhaWw6OmlzX211dGFibGVfaXRlcmF0b3JfaGVscGVyKAotICAgICAgICAgICAgICAgIChUKikwCi0gICAgICAgICAgICAgICwgbXV0YWJsZV9pdGVyYXRvcl9sdmFsdWVfaGVscGVyKCp0KSAvLyBsaWtlICYqdAotICAgICAgICAgICAgKSkKLSAgICAgICAgPT0gc2l6ZW9mKHR5cGVfdHJhaXRzOjp5ZXNfdHlwZSkKLSAgICApOwotfTsKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMSgKLSAgICBpc19tdXRhYmxlX2l0ZXJhdG9yLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjppc19tdXRhYmxlX2l0ZXJhdG9yX2ltcGw8VD46OnZhbHVlKQotCi0KLS8vIGlzX2Z1bGxfaXRlcmF0b3JfdHJhaXRzIC0tCi0vLwotLy8gICBBIG1ldGFmdW5jdGlvbiByZXR1cm5pbmcgdHJ1ZSBpZmYgVCBoYXMgYWxsIHRoZSByZXF1aXNpdGUgbmVzdGVkCi0vLyAgIHR5cGVzIHRvIHNhdGlzZnkgdGhlIHJlcXVpcmVtZW50cyBmb3IgYSBmdWxseS1jb25mb3JtaW5nCi0vLyAgIGl0ZXJhdG9yX3RyYWl0cyBpbXBsZW1lbnRhdGlvbi4KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX2Z1bGxfaXRlcmF0b3JfdHJhaXRzX2ltcGwKLXsKLSAgICBlbnVtIHsgdmFsdWUgPSAKLSAgICAgICAgICAgaGFzX3ZhbHVlX3R5cGU8VD46OnZhbHVlIAotICAgICAgICAgICAmIGhhc19yZWZlcmVuY2U8VD46OnZhbHVlIAotICAgICAgICAgICAmIGhhc19wb2ludGVyPFQ+Ojp2YWx1ZSAKLSAgICAgICAgICAgJiBoYXNfZGlmZmVyZW5jZV90eXBlPFQ+Ojp2YWx1ZQotICAgICAgICAgICAmIGhhc19pdGVyYXRvcl9jYXRlZ29yeTxUPjo6dmFsdWUKLSAgICB9OwotfTsKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMSgKLSAgICBpc19mdWxsX2l0ZXJhdG9yX3RyYWl0cyxULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfZnVsbF9pdGVyYXRvcl90cmFpdHNfaW1wbDxUPjo6dmFsdWUpCi0KLQotIyAgIGlmZGVmIE5ETkJPT1NUX0JBRF9DT05UQUlORVJfSVRFUkFUT1JfQ0FURUdPUllfVFlQRURFRgotTkROQk9PU1RfTVBMX0hBU19YWFhfVFJBSVRfREVGKF9JdGVyYXRvcl9jYXRlZ29yeSkKLSAgICAKLS8vIGlzX3N0bHBvcnRfNDBfZGVidWdfaXRlcmF0b3IgLS0KLS8vCi0vLyAgIEEgbWV0YWZ1bmN0aW9uIHJldHVybmluZyB0cnVlIGlmZiBUIGhhcyBhbGwgdGhlIHJlcXVpc2l0ZSBuZXN0ZWQKLS8vICAgdHlwZXMgdG8gc2F0aXNmeSB0aGUgcmVxdWlyZW1lbnRzIG9mIGFuIFNUTFBvcnQgNC4wIGRlYnVnIGl0ZXJhdG9yCi0vLyAgIGl0ZXJhdG9yX3RyYWl0cyBpbXBsZW1lbnRhdGlvbi4KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3N0bHBvcnRfNDBfZGVidWdfaXRlcmF0b3JfaW1wbAotewotICAgIGVudW0geyB2YWx1ZSA9IAotICAgICAgICAgICBoYXNfdmFsdWVfdHlwZTxUPjo6dmFsdWUgCi0gICAgICAgICAgICYgaGFzX3JlZmVyZW5jZTxUPjo6dmFsdWUgCi0gICAgICAgICAgICYgaGFzX3BvaW50ZXI8VD46OnZhbHVlIAotICAgICAgICAgICAmIGhhc19kaWZmZXJlbmNlX3R5cGU8VD46OnZhbHVlCi0gICAgICAgICAgICYgaGFzX19JdGVyYXRvcl9jYXRlZ29yeTxUPjo6dmFsdWUKLSAgICB9OwotfTsKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMSgKLSAgICBpc19zdGxwb3J0XzQwX2RlYnVnX2l0ZXJhdG9yLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjppc19zdGxwb3J0XzQwX2RlYnVnX2l0ZXJhdG9yX2ltcGw8VD46OnZhbHVlKQotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBzdGxwb3J0XzQwX2RlYnVnX2l0ZXJhdG9yX3RyYWl0cwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6cmVmZXJlbmNlIHJlZmVyZW5jZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnBvaW50ZXIgcG9pbnRlcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OmRpZmZlcmVuY2VfdHlwZSBkaWZmZXJlbmNlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjpfSXRlcmF0b3JfY2F0ZWdvcnkgaXRlcmF0b3JfY2F0ZWdvcnk7Ci19OwotIyAgIGVuZGlmIC8vIE5ETkJPT1NUX0JBRF9DT05UQUlORVJfSVRFUkFUT1JfQ0FURUdPUllfVFlQRURFRiAKLQotdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBwb2ludGVyX2l0ZXJhdG9yX3RyYWl0czsKLQotIyAgIGlmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBwb2ludGVyX2l0ZXJhdG9yX3RyYWl0czxUKj4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlbW92ZV9jb25zdDxUPjo6dHlwZSB2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgVCogcG9pbnRlcjsKLSAgICB0eXBlZGVmIFQmIHJlZmVyZW5jZTsKLSAgICB0eXBlZGVmIHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7Ci0gICAgdHlwZWRlZiBzdGQ6OnB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7Ci19OwotIyAgIGVsc2UKLQotLy8gSW4gY2FzZSBvZiBubyB0ZW1wbGF0ZSBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uLCBhbmQgaWYgVCBpcyBhCi0vLyBwb2ludGVyLCBpdGVyYXRvcl90cmFpdHM8VD46OnZhbHVlX3R5cGUgY2FuIHN0aWxsIGJlIGNvbXB1dGVkLiAgRm9yCi0vLyBzb21lIGJhc2ljIHR5cGVzLCByZW1vdmVfcG9pbnRlciBpcyBtYW51YWxseSBkZWZpbmVkIGluCi0vLyB0eXBlX3RyYWl0cy9icm9rZW5fY29tcGlsZXJfc3BlYy5ocHAuIEZvciBvdGhlcnMsIGRvIGl0IHlvdXJzZWxmLgotCi10ZW1wbGF0ZTxjbGFzcyBQPiBjbGFzcyBwbGVhc2VfaW52b2tlX05ETkJPT1NUX1RUX0JST0tFTl9DT01QSUxFUl9TUEVDX29uX2N2X3VucXVhbGlmaWVkX3BvaW50ZWU7Ci0KLXRlbXBsYXRlPGNsYXNzIFA+Ci1zdHJ1Y3QgcG9pbnRlcl92YWx1ZV90eXBlCi0gIDogbXBsOjppZl88Ci0gICAgICAgIGlzX3NhbWU8UCwgdHlwZW5hbWUgcmVtb3ZlX3BvaW50ZXI8UD46OnR5cGU+Ci0gICAgICAsIHBsZWFzZV9pbnZva2VfTkROQk9PU1RfVFRfQlJPS0VOX0NPTVBJTEVSX1NQRUNfb25fY3ZfdW5xdWFsaWZpZWRfcG9pbnRlZTxQPgotICAgICAgLCB0eXBlbmFtZSByZW1vdmVfY29uc3Q8Ci0gICAgICAgICAgICB0eXBlbmFtZSByZW1vdmVfcG9pbnRlcjxQPjo6dHlwZQotICAgICAgICA+Ojp0eXBlCi0gICAgPgotewotfTsKLQotCi10ZW1wbGF0ZTxjbGFzcyBQPgotc3RydWN0IHBvaW50ZXJfcmVmZXJlbmNlCi0gIDogbXBsOjppZl88Ci0gICAgICAgIGlzX3NhbWU8UCwgdHlwZW5hbWUgcmVtb3ZlX3BvaW50ZXI8UD46OnR5cGU+Ci0gICAgICAsIHBsZWFzZV9pbnZva2VfTkROQk9PU1RfVFRfQlJPS0VOX0NPTVBJTEVSX1NQRUNfb25fY3ZfdW5xdWFsaWZpZWRfcG9pbnRlZTxQPgotICAgICAgLCB0eXBlbmFtZSByZW1vdmVfcG9pbnRlcjxQPjo6dHlwZSYKLSAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBwb2ludGVyX2l0ZXJhdG9yX3RyYWl0cwotewotICAgIHR5cGVkZWYgVCBwb2ludGVyOwotICAgIHR5cGVkZWYgc3RkOjpyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKLSAgICB0eXBlZGVmIHN0ZDo6cHRyZGlmZl90IGRpZmZlcmVuY2VfdHlwZTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgcG9pbnRlcl92YWx1ZV90eXBlPFQ+Ojp0eXBlIHZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBwb2ludGVyX3JlZmVyZW5jZTxUPjo6dHlwZSByZWZlcmVuY2U7Ci19OwotCi0jICAgZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0vLyBXZSdsbCBzb3J0IGl0ZXJhdG9yIHR5cGVzIGludG8gb25lIG9mIHRoZXNlIGNsYXNzaWZpY2F0aW9ucywgZnJvbSB3aGljaCB3ZQotLy8gY2FuIGRldGVybWluZSB0aGUgZGlmZmVyZW5jZV90eXBlLCBwb2ludGVyLCByZWZlcmVuY2UsIGFuZCB2YWx1ZV90eXBlCi10ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3I+Ci1zdHJ1Y3Qgc3RhbmRhcmRfaXRlcmF0b3JfdHJhaXRzCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBJdGVyYXRvcjo6ZGlmZmVyZW5jZV90eXBlIGRpZmZlcmVuY2VfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXJhdG9yOjp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBJdGVyYXRvcjo6cG9pbnRlciBwb2ludGVyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3I6OnJlZmVyZW5jZSByZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBJdGVyYXRvcjo6aXRlcmF0b3JfY2F0ZWdvcnkgaXRlcmF0b3JfY2F0ZWdvcnk7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3I+Ci1zdHJ1Y3QgbXN2Y19zdGRsaWJfbXV0YWJsZV90cmFpdHMKLSAgICA6IHN0ZDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+OjpkaXN0YW5jZV90eXBlIGRpZmZlcmVuY2VfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPjo6dmFsdWVfdHlwZSogcG9pbnRlcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPjo6dmFsdWVfdHlwZSYgcmVmZXJlbmNlOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yPgotc3RydWN0IG1zdmNfc3RkbGliX2NvbnN0X3RyYWl0cwotICAgIDogc3RkOjppdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46OmRpc3RhbmNlX3R5cGUgZGlmZmVyZW5jZV90eXBlOwotICAgIHR5cGVkZWYgY29uc3QgdHlwZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+Ojp2YWx1ZV90eXBlKiBwb2ludGVyOwotICAgIHR5cGVkZWYgY29uc3QgdHlwZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+Ojp2YWx1ZV90eXBlJiByZWZlcmVuY2U7Ci19OwotCi0jICAgaWZkZWYgTkROQk9PU1RfQkFEX09VVFBVVF9JVEVSQVRPUl9TUEVDSUFMSVpBVElPTgotdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yPgotc3RydWN0IGlzX2JhZF9vdXRwdXRfaXRlcmF0b3IKLSAgICA6IGlzX2Jhc2VfYW5kX2Rlcml2ZWQ8Ci0gICAgICAgIHN0ZDo6aXRlcmF0b3I8c3RkOjpvdXRwdXRfaXRlcmF0b3JfdGFnLHZvaWQsdm9pZCx2b2lkLHZvaWQ+Ci0gICAgICAgICwgSXRlcmF0b3I+Ci17Ci19OwotCi1zdHJ1Y3QgYmFkX291dHB1dF9pdGVyYXRvcl90cmFpdHMKLXsKLSAgICB0eXBlZGVmIHZvaWQgdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHZvaWQgZGlmZmVyZW5jZV90eXBlOwotICAgIHR5cGVkZWYgc3RkOjpvdXRwdXRfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OwotICAgIHR5cGVkZWYgdm9pZCBwb2ludGVyOwotICAgIHR5cGVkZWYgdm9pZCByZWZlcmVuY2U7Ci19OwotIyAgIGVuZGlmCi0KLS8vIElmIHdlJ3JlIGxvb2tpbmcgYXQgYW4gTVNWQzYgKG9sZCBEaW5rdW13YXJlKSBgYHN0YW5kYXJkJycKLS8vIGl0ZXJhdG9yLCB0aGlzIHdpbGwgZ2VuZXJhdGUgYW4gYXBwcm9wcmlhdGUgdHJhaXRzIGNsYXNzLiAKLXRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvcj4KLXN0cnVjdCBtc3ZjX3N0ZGxpYl9pdGVyYXRvcl90cmFpdHMKLSAgICA6IG1wbDo6aWZfPAotICAgICAgIGlzX211dGFibGVfaXRlcmF0b3I8SXRlcmF0b3I+Ci0gICAgICAgLCBtc3ZjX3N0ZGxpYl9tdXRhYmxlX3RyYWl0czxJdGVyYXRvcj4KLSAgICAgICAsIG1zdmNfc3RkbGliX2NvbnN0X3RyYWl0czxJdGVyYXRvcj4KLSAgICAgID46OnR5cGUKLXt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3I+Ci1zdHJ1Y3Qgbm9uX3BvaW50ZXJfaXRlcmF0b3JfdHJhaXRzCi0gICAgOiBtcGw6OmlmXzwKLSAgICAgICAgLy8gaWYgdGhlIGl0ZXJhdG9yIGNvbnRhaW5zIGFsbCB0aGUgcmlnaHQgbmVzdGVkIHR5cGVzLi4uCi0gICAgICAgIGlzX2Z1bGxfaXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPgotICAgICAgICAvLyBVc2UgYSBzdGFuZGFyZCBpdGVyYXRvcl90cmFpdHMgaW1wbGVtZW50YXRpb24KLSAgICAgICAgLCBzdGFuZGFyZF9pdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+Ci0jICAgaWZkZWYgTkROQk9PU1RfQkFEX0NPTlRBSU5FUl9JVEVSQVRPUl9DQVRFR09SWV9UWVBFREVGCi0gICAgICAgIC8vIENoZWNrIGZvciBTVExQb3J0IDQuMCBicm9rZW4gX0l0ZXJhdG9yX2NhdGVnb3J5IHR5cGUKLSAgICAgICAgLCBtcGw6OmlmXzwKLSAgICAgICAgICAgICBpc19zdGxwb3J0XzQwX2RlYnVnX2l0ZXJhdG9yPEl0ZXJhdG9yPgotICAgICAgICAgICAgICwgc3RscG9ydF80MF9kZWJ1Z19pdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+Ci0jICAgZW5kaWYKLSAgICAgICAgLy8gT3RoZXJ3aXNlLCBhc3N1bWUgaXQncyBhIERpbmt1bSBpdGVyYXRvcgotICAgICAgICAsIG1zdmNfc3RkbGliX2l0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj4KLSMgICBpZmRlZiBORE5CT09TVF9CQURfQ09OVEFJTkVSX0lURVJBVE9SX0NBVEVHT1JZX1RZUEVERUYKLSAgICAgICAgPjo6dHlwZQotIyAgIGVuZGlmIAotICAgID46OnR5cGUKLXsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvcj4KLXN0cnVjdCBpdGVyYXRvcl90cmFpdHNfYXV4Ci0gICAgOiBtcGw6OmlmXzwKLSAgICAgICAgaXNfcG9pbnRlcjxJdGVyYXRvcj4KLSAgICAgICAgLCBwb2ludGVyX2l0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj4KLSAgICAgICAgLCBub25fcG9pbnRlcl9pdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+Ci0gICAgPjo6dHlwZQotewotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yPgotc3RydWN0IGl0ZXJhdG9yX3RyYWl0cwotewotICAgIC8vIEV4cGxpY2l0IGZvcndhcmRpbmcgZnJvbSBiYXNlIGNsYXNzIG5lZWRlZCB0byBrZWVwIE1TVkM2IGhhcHB5Ci0gICAgLy8gdW5kZXIgc29tZSBjaXJjdW1zdGFuY2VzLgotIHByaXZhdGU6Ci0jICAgaWZkZWYgTkROQk9PU1RfQkFEX09VVFBVVF9JVEVSQVRPUl9TUEVDSUFMSVpBVElPTgotICAgIHR5cGVkZWYgCi0gICAgdHlwZW5hbWUgbXBsOjppZl88Ci0gICAgICAgIGlzX2JhZF9vdXRwdXRfaXRlcmF0b3I8SXRlcmF0b3I+Ci0gICAgICAgICwgYmFkX291dHB1dF9pdGVyYXRvcl90cmFpdHMKLSAgICAgICAgLCBpdGVyYXRvcl90cmFpdHNfYXV4PEl0ZXJhdG9yPgotICAgID46OnR5cGUgYmFzZTsKLSMgICBlbHNlCi0gICAgdHlwZWRlZiBpdGVyYXRvcl90cmFpdHNfYXV4PEl0ZXJhdG9yPiBiYXNlOwotIyAgIGVuZGlmCi0gcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZTo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZTo6cG9pbnRlciBwb2ludGVyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZTo6cmVmZXJlbmNlIHJlZmVyZW5jZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2U6OmRpZmZlcmVuY2VfdHlwZSBkaWZmZXJlbmNlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlOjppdGVyYXRvcl9jYXRlZ29yeSBpdGVyYXRvcl9jYXRlZ29yeTsKLX07Ci0KLS8vIFRoaXMgc3BlY2lhbGl6YXRpb24gY3V0cyBvZmYgRVRJIChFYXJseSBUZW1wbGF0ZSBJbnN0YW50aWF0aW9uKSBmb3IgTVNWQy4KLXRlbXBsYXRlIDw+IHN0cnVjdCBpdGVyYXRvcl90cmFpdHM8aW50PgotewotICAgIHR5cGVkZWYgaW50IHZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiBpbnQgcG9pbnRlcjsKLSAgICB0eXBlZGVmIGludCByZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiBpbnQgZGlmZmVyZW5jZV90eXBlOwotICAgIHR5cGVkZWYgaW50IGl0ZXJhdG9yX2NhdGVnb3J5OwotfTsKLQotfX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0OjpkZXRhaWwKLQotIyAgZW5kaWYgLy8gd29ya2Fyb3VuZHMKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLW5hbWVzcGFjZSBpdGVyYXRvcl90cmFpdHNfCi17Ci0gIHRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvciwgY2xhc3MgRGlmZmVyZW5jZT4KLSAgc3RydWN0IGRpc3RhbmNlX3NlbGVjdAotICB7Ci0gICAgICBzdGF0aWMgRGlmZmVyZW5jZSBleGVjdXRlKEl0ZXJhdG9yIGkxLCBjb25zdCBJdGVyYXRvciBpMiwgLi4uKQotICAgICAgewotICAgICAgICAgIERpZmZlcmVuY2UgcmVzdWx0ID0gMDsKLSAgICAgICAgICB3aGlsZSAoaTEgIT0gaTIpCi0gICAgICAgICAgewotICAgICAgICAgICAgICArK2kxOwotICAgICAgICAgICAgICArK3Jlc3VsdDsKLSAgICAgICAgICB9Ci0gICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgIH0KLQotICAgICAgc3RhdGljIERpZmZlcmVuY2UgZXhlY3V0ZShJdGVyYXRvciBpMSwgY29uc3QgSXRlcmF0b3IgaTIsIHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcqKQotICAgICAgewotICAgICAgICAgIHJldHVybiBpMiAtIGkxOwotICAgICAgfQotICB9OwotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3Q6OmRldGFpbDo6aXRlcmF0b3JfdHJhaXRzXwotCi10ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3I+Ci1pbmxpbmUgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlCi1kaXN0YW5jZShJdGVyYXRvciBmaXJzdCwgSXRlcmF0b3IgbGFzdCkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZSBkaWZmX3Q7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSA6Om5kbmJvb3N0OjpkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46Oml0ZXJhdG9yX2NhdGVnb3J5IGl0ZXJhdG9yX2NhdGVnb3J5OwotICAgIAotICAgIHJldHVybiBpdGVyYXRvcl90cmFpdHNfOjpkaXN0YW5jZV9zZWxlY3Q8SXRlcmF0b3IsZGlmZl90Pjo6ZXhlY3V0ZSgKLSAgICAgICAgZmlyc3QsIGxhc3QsIChpdGVyYXRvcl9jYXRlZ29yeSopMCk7Ci19Ci0KLX19Ci0KLSMgZW5kaWYKLQotCi0jIHVuZGVmIE5ETkJPT1NUX0JBRF9DT05UQUlORVJfSVRFUkFUT1JfQ0FURUdPUllfVFlQRURFRgotIyB1bmRlZiBORE5CT09TVF9CQURfT1VUUFVUX0lURVJBVE9SX1NQRUNJQUxJWkFUSU9OCi0KLSNlbmRpZiAvLyBJVEVSQVRPUl9ORE5CT09TVF9EV0ExMjI2MDBfSFBQXwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvbGNhc3RfcHJlY2lzaW9uLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL2xjYXN0X3ByZWNpc2lvbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiMGIyYWEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvbGNhc3RfcHJlY2lzaW9uLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4NCArMCwwIEBACi0vLyBDb3B5cmlnaHQgQWxleGFuZGVyIE5hc29ub3YgJiBQYXVsIEEuIEJyaXN0b3cgMjAwNi4KLQotLy8gVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLS8vIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQKLS8vIG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX0RFVEFJTF9MQ0FTVF9QUkVDSVNJT05fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9MQ0FTVF9QUkVDSVNJT05fSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxjbGltaXRzPgotI2luY2x1ZGUgPGlvcz4KLSNpbmNsdWRlIDxsaW1pdHM+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2ludGVnZXJfdHJhaXRzLmhwcD4KLQotI2lmbmRlZiBORE5CT09TVF9OT19JU19BQlNUUkFDVAotLy8gRml4IGZvciBTRjoxMzU4NjAwIC0gbGV4aWNhbF9jYXN0ICYgcHVyZSB2aXJ0dWFsIGZ1bmN0aW9ucyAmIFZDIDggU1RMCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hYnN0cmFjdC5ocHA+Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fTElNSVRTX0NPTVBJTEVfVElNRV9DT05TVEFOVFMpIHx8IFwKLSAgKGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgKE5ETkJPT1NUX01TVkM8MTMxMCkpCi0KLSNkZWZpbmUgTkROQk9PU1RfTENBU1RfTk9fQ09NUElMRV9USU1FX1BSRUNJU0lPTgotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9MQ0FTVF9OT19DT01QSUxFX1RJTUVfUFJFQ0lTSU9OCi0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLSNlbHNlCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLWNsYXNzIGxjYXN0X2Fic3RyYWN0X3N0dWIge307Ci0KLSNpZm5kZWYgTkROQk9PU1RfTENBU1RfTk9fQ09NUElMRV9USU1FX1BSRUNJU0lPTgotLy8gQ2FsY3VsYXRlIGFuIGFyZ3VtZW50IHRvIHBhc3MgdG8gc3RkOjppb3NfYmFzZTo6cHJlY2lzaW9uIGZyb20KLS8vIGxleGljYWxfY2FzdC4gU2VlIGFsdGVybmF0aXZlIGltcGxlbWVudGF0aW9uIGZvciBicm9rZW4gc3RhbmRhcmQKLS8vIGxpYnJhcmllcyBpbiBsY2FzdF9nZXRfcHJlY2lzaW9uIGJlbG93LiBLZWVwIHRoZW0gaW4gc3luYywgcGxlYXNlLgotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBsY2FzdF9wcmVjaXNpb24KLXsKLSNpZmRlZiBORE5CT09TVF9OT19JU19BQlNUUkFDVAotICAgIHR5cGVkZWYgc3RkOjpudW1lcmljX2xpbWl0czxUPiBsaW1pdHM7IC8vIE5vIGZpeCBmb3IgU0Y6MTM1ODYwMC4KLSNlbHNlCi0gICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG5kbmJvb3N0OjptcGw6OmlmXzwKLSAgICAgICAgbmRuYm9vc3Q6OmlzX2Fic3RyYWN0PFQ+Ci0gICAgICAsIHN0ZDo6bnVtZXJpY19saW1pdHM8bGNhc3RfYWJzdHJhY3Rfc3R1Yj4KLSAgICAgICwgc3RkOjpudW1lcmljX2xpbWl0czxUPgotICAgICAgPjo6dHlwZSBsaW1pdHM7Ci0jZW5kaWYKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB1c2VfZGVmYXVsdF9wcmVjaXNpb24gPQotICAgICAgICAgICAgIWxpbWl0czo6aXNfc3BlY2lhbGl6ZWQgfHwgbGltaXRzOjppc19leGFjdAotICAgICAgICApOwotCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX3NwZWNpYWxpemVkX2JpbiA9Ci0gICAgICAgICAgICAhdXNlX2RlZmF1bHRfcHJlY2lzaW9uICYmCi0gICAgICAgICAgICBsaW1pdHM6OnJhZGl4ID09IDIgJiYgbGltaXRzOjpkaWdpdHMgPiAwCi0gICAgICAgICk7Ci0KLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfc3BlY2lhbGl6ZWRfZGVjID0KLSAgICAgICAgICAgICF1c2VfZGVmYXVsdF9wcmVjaXNpb24gJiYKLSAgICAgICAgICAgIGxpbWl0czo6cmFkaXggPT0gMTAgJiYgbGltaXRzOjpkaWdpdHMxMCA+IDAKLSAgICAgICAgKTsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnN0cmVhbXNpemUsIHN0cmVhbXNpemVfbWF4ID0KLSAgICAgICAgICAgIG5kbmJvb3N0OjppbnRlZ2VyX3RyYWl0czxzdGQ6OnN0cmVhbXNpemU+Ojpjb25zdF9tYXgKLSAgICAgICAgKTsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCBpbnQsIHByZWNpc2lvbl9kZWMgPSBsaW1pdHM6OmRpZ2l0czEwICsgMVUpOwotCi0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCghaXNfc3BlY2lhbGl6ZWRfZGVjIHx8Ci0gICAgICAgICAgICBwcmVjaXNpb25fZGVjIDw9IHN0cmVhbXNpemVfbWF4ICsgMFVMCi0gICAgICAgICk7Ci0KLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQgbG9uZywgcHJlY2lzaW9uX2JpbiA9Ci0gICAgICAgICAgICAyVUwgKyBsaW1pdHM6OmRpZ2l0cyAqIDMwMTAzVUwgLyAxMDAwMDBVTAotICAgICAgICApOwotCi0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCghaXNfc3BlY2lhbGl6ZWRfYmluIHx8Ci0gICAgICAgICAgICAobGltaXRzOjpkaWdpdHMgKyAwVUwgPCBVTE9OR19NQVggLyAzMDEwM1VMICYmCi0gICAgICAgICAgICBwcmVjaXNpb25fYmluID4gbGltaXRzOjpkaWdpdHMxMCArIDBVTCAmJgotICAgICAgICAgICAgcHJlY2lzaW9uX2JpbiA8PSBzdHJlYW1zaXplX21heCArIDBVTCkKLSAgICAgICAgKTsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnN0cmVhbXNpemUsIHZhbHVlID0KLSAgICAgICAgICAgIGlzX3NwZWNpYWxpemVkX2JpbiA/IHByZWNpc2lvbl9iaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlzX3NwZWNpYWxpemVkX2RlYyA/IHByZWNpc2lvbl9kZWMgOiA2Ci0gICAgICAgICk7Ci19OwotI2VuZGlmCi0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUgc3RkOjpzdHJlYW1zaXplIGxjYXN0X2dldF9wcmVjaXNpb24oVCogPSAwKQotewotI2lmbmRlZiBORE5CT09TVF9MQ0FTVF9OT19DT01QSUxFX1RJTUVfUFJFQ0lTSU9OCi0gICAgcmV0dXJuIGxjYXN0X3ByZWNpc2lvbjxUPjo6dmFsdWU7Ci0jZWxzZSAvLyBGb2xsb3cgbGNhc3RfcHJlY2lzaW9uIGFsZ29yaXRobSBhdCBydW4tdGltZToKLQotI2lmZGVmIE5ETkJPT1NUX05PX0lTX0FCU1RSQUNUCi0gICAgdHlwZWRlZiBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+IGxpbWl0czsgLy8gTm8gZml4IGZvciBTRjoxMzU4NjAwLgotI2Vsc2UKLSAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbmRuYm9vc3Q6Om1wbDo6aWZfPAotICAgICAgICBuZG5ib29zdDo6aXNfYWJzdHJhY3Q8VD4KLSAgICAgICwgc3RkOjpudW1lcmljX2xpbWl0czxsY2FzdF9hYnN0cmFjdF9zdHViPgotICAgICAgLCBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ci0gICAgICA+Ojp0eXBlIGxpbWl0czsKLSNlbmRpZgotCi0gICAgYm9vbCBjb25zdCB1c2VfZGVmYXVsdF9wcmVjaXNpb24gPQotICAgICAgICAhbGltaXRzOjppc19zcGVjaWFsaXplZCB8fCBsaW1pdHM6OmlzX2V4YWN0OwotCi0gICAgaWYoIXVzZV9kZWZhdWx0X3ByZWNpc2lvbikKLSAgICB7IC8vIEluY2x1ZGVzIGFsbCBidWlsdC1pbiBmbG9hdGluZy1wb2ludCB0eXBlcywgZmxvYXQsIGRvdWJsZSAuLi4KLSAgICAgIC8vIGFuZCBVRFQgdHlwZXMgZm9yIHdoaWNoIGRpZ2l0cyAoc2lnbmlmaWNhbmQgYml0cykgaXMgZGVmaW5lZCAobm90IHplcm8pCi0KLSAgICAgICAgYm9vbCBjb25zdCBpc19zcGVjaWFsaXplZF9iaW4gPQotICAgICAgICAgICAgbGltaXRzOjpyYWRpeCA9PSAyICYmIGxpbWl0czo6ZGlnaXRzID4gMDsKLSAgICAgICAgYm9vbCBjb25zdCBpc19zcGVjaWFsaXplZF9kZWMgPQotICAgICAgICAgICAgbGltaXRzOjpyYWRpeCA9PSAxMCAmJiBsaW1pdHM6OmRpZ2l0czEwID4gMDsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIGNvbnN0IHN0cmVhbXNpemVfbWF4ID0KLSAgICAgICAgICAgIChuZG5ib29zdDo6aW50ZWdlcl90cmFpdHM8c3RkOjpzdHJlYW1zaXplPjo6bWF4KSgpOwotCi0gICAgICAgIGlmKGlzX3NwZWNpYWxpemVkX2JpbikKLSAgICAgICAgeyAvLyBGbG9hdGluZy1wb2ludCB0eXBlcyB3aXRoCi0gICAgICAgICAgLy8gbGltaXRzOjpkaWdpdHMgZGVmaW5lZCBieSB0aGUgc3BlY2lhbGl6YXRpb24uCi0KLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgY29uc3QgZGlnaXRzID0gbGltaXRzOjpkaWdpdHM7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25nIGNvbnN0IHByZWNpc2lvbiA9IDJVTCArIGRpZ2l0cyAqIDMwMTAzVUwgLyAxMDAwMDBVTDsKLSAgICAgICAgICAgIC8vIHVuc2lnbmVkIGxvbmcgaXMgc2VsZWN0ZWQgYmVjYXVzZSBpdCBpcyBhdCBsZWFzdCAzMi1iaXRzCi0gICAgICAgICAgICAvLyBhbmQgdGh1cyBVTE9OR19NQVggLyAzMDEwM1VMIGlzIGJpZyBlbm91Z2ggZm9yIGFsbCB0eXBlcy4KLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVCgKLSAgICAgICAgICAgICAgICAgICAgZGlnaXRzIDwgVUxPTkdfTUFYIC8gMzAxMDNVTCAmJgotICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb24gPiBsaW1pdHM6OmRpZ2l0czEwICsgMFVMICYmCi0gICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbiA8PSBzdHJlYW1zaXplX21heCArIDBVTAotICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICByZXR1cm4gcHJlY2lzaW9uOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYoaXNfc3BlY2lhbGl6ZWRfZGVjKQotICAgICAgICB7ICAgLy8gRGVjaW1hbCBGbG9hdGluZy1wb2ludCB0eXBlLCBtb3N0IGxpa2VseSBhIFVzZXIgRGVmaW5lZCBUeXBlCi0gICAgICAgICAgICAvLyByYXRoZXIgdGhhbiBhIHJlYWwgZmxvYXRpbmctcG9pbnQgaGFyZHdhcmUgdHlwZS4KLSAgICAgICAgICAgIHVuc2lnbmVkIGludCBjb25zdCBwcmVjaXNpb24gPSBsaW1pdHM6OmRpZ2l0czEwICsgMVU7Ci0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlQocHJlY2lzaW9uIDw9IHN0cmVhbXNpemVfbWF4ICsgMFVMKTsKLSAgICAgICAgICAgIHJldHVybiBwcmVjaXNpb247Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBJbnRlZ3JhbCB0eXBlIChmb3Igd2hpY2ggcHJlY2lzaW9uIGhhcyBubyBlZmZlY3QpCi0gICAgLy8gb3IgdHlwZSBUIGZvciB3aGljaCBsaW1pdHMgaXMgTk9UIHNwZWNpYWxpemVkLAotICAgIC8vIHNvIGFzc3VtZSBzdHJlYW0gcHJlY2lzaW9uIHJlbWFpbnMgdGhlIGRlZmF1bHQgNiBkZWNpbWFsIGRpZ2l0cy4KLSAgICAvLyBXYXJuaW5nOiBpZiB5b3VyIFVzZXItZGVmaW5lZCBGbG9hdGluZy1wb2ludCB0eXBlIFQgaXMgTk9UIHNwZWNpYWxpemVkLAotICAgIC8vIHRoZW4geW91IG1heSBsb3NlIGFjY3VyYWN5IGJ5IG9ubHkgdXNpbmcgNiBkZWNpbWFsIGRpZ2l0cy4KLSAgICAvLyBUbyBhdm9pZCB0aGlzLCB5b3UgbmVlZCB0byBzcGVjaWFsaXplIFQgd2l0aCBlaXRoZXIKLSAgICAvLyByYWRpeCA9PSAyIGFuZCBkaWdpdHMgPT0gdGhlIG51bWJlciBvZiBzaWduaWZpY2FuZCBiaXRzLAotICAgIC8vIE9SCi0gICAgLy8gcmFkaXggPSAxMCBhbmQgZGlnaXRzMTAgPT0gdGhlIG51bWJlciBvZiBkZWNpbWFsIGRpZ2l0cy4KLQotICAgIHJldHVybiA2OwotI2VuZGlmCi19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUgdm9pZCBsY2FzdF9zZXRfcHJlY2lzaW9uKHN0ZDo6aW9zX2Jhc2UmIHN0cmVhbSwgVCopCi17Ci0gICAgc3RyZWFtLnByZWNpc2lvbihsY2FzdF9nZXRfcHJlY2lzaW9uPFQ+KCkpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBTb3VyY2UsIGNsYXNzIFRhcmdldD4KLWlubGluZSB2b2lkIGxjYXN0X3NldF9wcmVjaXNpb24oc3RkOjppb3NfYmFzZSYgc3RyZWFtLCBTb3VyY2UqLCBUYXJnZXQqKQotewotICAgIHN0ZDo6c3RyZWFtc2l6ZSBjb25zdCBzID0gbGNhc3RfZ2V0X3ByZWNpc2lvbihzdGF0aWNfY2FzdDxTb3VyY2UqPigwKSk7Ci0gICAgc3RkOjpzdHJlYW1zaXplIGNvbnN0IHQgPSBsY2FzdF9nZXRfcHJlY2lzaW9uKHN0YXRpY19jYXN0PFRhcmdldCo+KDApKTsKLSAgICBzdHJlYW0ucHJlY2lzaW9uKHMgPiB0ID8gcyA6IHQpOwotfQotCi19fQotCi0jZW5kaWYgLy8gIE5ETkJPT1NUX0RFVEFJTF9MQ0FTVF9QUkVDSVNJT05fSFBQX0lOQ0xVREVECi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL2xpZ2h0d2VpZ2h0X211dGV4LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL2xpZ2h0d2VpZ2h0X211dGV4LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjg2MGMxYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9saWdodHdlaWdodF9tdXRleC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX0RFVEFJTF9MSUdIVFdFSUdIVF9NVVRFWF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0xJR0hUV0VJR0hUX01VVEVYX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICBuZG5ib29zdC9kZXRhaWwvbGlnaHR3ZWlnaHRfbXV0ZXguaHBwIC0gbGlnaHR3ZWlnaHQgbXV0ZXgKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAyLCAyMDAzIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQKLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2xpZ2h0d2VpZ2h0X211dGV4LmhwcD4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfREVUQUlMX0xJR0hUV0VJR0hUX01VVEVYX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvbGlnaHR3ZWlnaHRfdGVzdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9saWdodHdlaWdodF90ZXN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDBlN2NkNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9saWdodHdlaWdodF90ZXN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwOCArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX0RFVEFJTF9MSUdIVFdFSUdIVF9URVNUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfTElHSFRXRUlHSFRfVEVTVF9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgbmRuYm9vc3QvZGV0YWlsL2xpZ2h0d2VpZ2h0X3Rlc3QuaHBwIC0gbGlnaHR3ZWlnaHQgdGVzdCBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMiwgMjAwOSBQZXRlciBEaW1vdgotLy8gIENvcHlyaWdodCAoMikgQmVtYW4gRGF3ZXMgMjAxMCwgMjAxMQotLy8gIENvcHlyaWdodCAoMykgSW9uIEdhenRhbmFnYSAyMDEzCi0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQKLS8vCi0vLyAgICAtLS0tLS0tLS0tLS0tLS0KLS8vCi0vLyAgICBJZiBleHByZXNzaW9uIGlzIGZhbHNlIGluY3JlYXNlcyB0aGUgZXJyb3IgY291bnQgCi0vLyAgICBhbmQgb3V0cHV0cyBhIG1lc3NhZ2UgY29udGFpbmluZyAnZXhwcmVzc2lvbicKLS8vCi0vLyAgTkROQk9PU1RfVEVTVChleHByZXNzaW9uKQotLy8KLS8vICAgIC0tLS0tLS0tLS0tLS0tLQotLy8KLS8vICAgIEluY3JlYXNlcyBlcnJvciBjb3VudCBhbmQgb3V0cHV0cyBhIG1lc3NhZ2UgY29udGFpbmluZyAnbWVzc2FnZScKLS8vCi0vLyAgTkROQk9PU1RfRVJST1IobWVzc2FnZSkKLS8vCi0vLyAgICAtLS0tLS0tLS0tLS0tLS0KLS8vCi0vLyAgICBJZiAnZXhwcjEnICE9ICdleHByMicgaW5jcmVhc2VzIHRoZSBlcnJvciBjb3VudCAKLS8vICAgIGFuZCBvdXRwdXRzIGEgbWVzc2FnZSBjb250YWluaW5nIGJvdGggZXhwcmVzc2lvbnMKLS8vCi0vLyAgTkROQk9PU1RfVEVTVF9FUShleHByMSwgZXhwcjIpCi0vLwotLy8gICAgLS0tLS0tLS0tLS0tLS0tCi0vLwotLy8gICAgSWYgJ2V4cHIxJyA9PSAnZXhwcjInIGluY3JlYXNlcyB0aGUgZXJyb3IgY291bnQgCi0vLyAgICBhbmQgb3V0cHV0cyBhIG1lc3NhZ2UgY29udGFpbmluZyBib3RoIGV4cHJlc3Npb25zCi0vLwotLy8gIE5ETkJPT1NUX1RFU1RfTkUoZXhwcjEsIGV4cHIyKQotLy8KLS8vICAgIC0tLS0tLS0tLS0tLS0tLQotLy8KLS8vICAgIElmIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMgaXMgTk9UIGRlZmluZWQgYW5kIGlmICdleHByJyBkb2VzIG5vdAotLy8gICAgdGhyb3cgYW4gZXhjZXB0aW9uIG9mIHR5cGUgJ2V4Y2VwJywgaW5jcmVhc2VzIHRoZSBlcnJvciBjb3VudAotLy8gICAgYW5kIG91dHB1dHMgYSBtZXNzYWdlIGNvbnRhaW5pbmcgdGhlIGV4cHJlc3Npb24uCi0vLwotLy8gICAgSWYgTkROQk9PU1RfTk9fRVhDRVBUSU9OUyBpcyBkZWZpbmVkLCB0aGlzIG1hY3JvIGV4cGFuZHMgdG8gbm90aGluZwotLy8gICAgYW5kICdleHByJyBpcyBub3QgZXZhbHVhdGVkLgotLy8KLS8vICBORE5CT09TVF9URVNUX1RIUk9XUyhleHByLCBleGNlcCkKLS8vCi0vLyAgICAtLS0tLS0tLS0tLS0tLS0KLS8vCi0vLyAgICBSZXR1cm5zIHRoZSBlcnJvciBjb3VudAotLy8KLS8vICBpbnQgbmRuYm9vc3Q6OnJlcG9ydF9lcnJvcnMoKQotLy8KLQotI2luY2x1ZGUgPGlvc3RyZWFtPgotI2luY2x1ZGUgPG5kbmJvb3N0L2N1cnJlbnRfZnVuY3Rpb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL25vX2V4Y2VwdGlvbnNfc3VwcG9ydC5ocHA+Ci0KLS8vICBJREUncyBsaWtlIFZpc3VhbCBTdHVkaW8gcGVyZm9ybSBiZXR0ZXIgaWYgb3V0cHV0IGdvZXMgdG8gc3RkOjpjb3V0IG9yCi0vLyAgc29tZSBvdGhlciBzdHJlYW0sIHNvIGFsbG93IHVzZXIgdG8gY29uZmlndXJlIG91dHB1dCBzdHJlYW06Ci0jaWZuZGVmIE5ETkJPT1NUX0xJR0hUV0VJR0hUX1RFU1RfT1NUUkVBTQotIyBkZWZpbmUgTkROQk9PU1RfTElHSFRXRUlHSFRfVEVTVF9PU1RSRUFNIHN0ZDo6Y2VycgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLXN0cnVjdCByZXBvcnRfZXJyb3JzX3JlbWluZGVyCi17Ci0gIGJvb2wgY2FsbGVkX3JlcG9ydF9lcnJvcnNfZnVuY3Rpb247Ci0gIHJlcG9ydF9lcnJvcnNfcmVtaW5kZXIoKSA6IGNhbGxlZF9yZXBvcnRfZXJyb3JzX2Z1bmN0aW9uKGZhbHNlKSB7fQotIH5yZXBvcnRfZXJyb3JzX3JlbWluZGVyKCkKLSAgewotICAgIE5ETkJPT1NUX0FTU0VSVChjYWxsZWRfcmVwb3J0X2Vycm9yc19mdW5jdGlvbik7ICAvLyB2ZXJpZnkgcmVwb3J0X2Vycm9ycygpIHdhcyBjYWxsZWQgIAotICB9Ci19OwotCi1pbmxpbmUgcmVwb3J0X2Vycm9yc19yZW1pbmRlciYgcmVwb3J0X2Vycm9yc19yZW1pbmQoKQotewotICBzdGF0aWMgcmVwb3J0X2Vycm9yc19yZW1pbmRlciByOwotICByZXR1cm4gcjsKLX0KLQotaW5saW5lIGludCAmIHRlc3RfZXJyb3JzKCkKLXsKLSAgICBzdGF0aWMgaW50IHggPSAwOwotICAgIHJlcG9ydF9lcnJvcnNfcmVtaW5kKCk7Ci0gICAgcmV0dXJuIHg7Ci19Ci0KLWlubGluZSB2b2lkIHRlc3RfZmFpbGVkX2ltcGwoY2hhciBjb25zdCAqIGV4cHIsIGNoYXIgY29uc3QgKiBmaWxlLCBpbnQgbGluZSwgY2hhciBjb25zdCAqIGZ1bmN0aW9uKQotewotICAgIE5ETkJPT1NUX0xJR0hUV0VJR0hUX1RFU1RfT1NUUkVBTQotICAgICAgPDwgZmlsZSA8PCAiKCIgPDwgbGluZSA8PCAiKTogdGVzdCAnIiA8PCBleHByIDw8ICInIGZhaWxlZCBpbiBmdW5jdGlvbiAnIgotICAgICAgPDwgZnVuY3Rpb24gPDwgIiciIDw8IHN0ZDo6ZW5kbDsKLSAgICArK3Rlc3RfZXJyb3JzKCk7Ci19Ci0KLWlubGluZSB2b2lkIGVycm9yX2ltcGwoY2hhciBjb25zdCAqIG1zZywgY2hhciBjb25zdCAqIGZpbGUsIGludCBsaW5lLCBjaGFyIGNvbnN0ICogZnVuY3Rpb24pCi17Ci0gICAgTkROQk9PU1RfTElHSFRXRUlHSFRfVEVTVF9PU1RSRUFNCi0gICAgICA8PCBmaWxlIDw8ICIoIiA8PCBsaW5lIDw8ICIpOiAiIDw8IG1zZyA8PCAiIGluIGZ1bmN0aW9uICciCi0gICAgICA8PCBmdW5jdGlvbiA8PCAiJyIgPDwgc3RkOjplbmRsOwotICAgICsrdGVzdF9lcnJvcnMoKTsKLX0KLQotaW5saW5lIHZvaWQgdGhyb3dfZmFpbGVkX2ltcGwoY2hhciBjb25zdCAqIGV4Y2VwLCBjaGFyIGNvbnN0ICogZmlsZSwgaW50IGxpbmUsIGNoYXIgY29uc3QgKiBmdW5jdGlvbikKLXsKLSAgIE5ETkJPT1NUX0xJR0hUV0VJR0hUX1RFU1RfT1NUUkVBTQotICAgIDw8IGZpbGUgPDwgIigiIDw8IGxpbmUgPDwgIik6IEV4Y2VwdGlvbiAnIiA8PCBleGNlcCA8PCAiJyBub3QgdGhyb3duIGluIGZ1bmN0aW9uICciCi0gICAgPDwgZnVuY3Rpb24gPDwgIiciIDw8IHN0ZDo6ZW5kbDsKLSAgICsrdGVzdF9lcnJvcnMoKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVT4gaW5saW5lIHZvaWQgdGVzdF9lcV9pbXBsKCBjaGFyIGNvbnN0ICogZXhwcjEsIGNoYXIgY29uc3QgKiBleHByMiwKLSAgY2hhciBjb25zdCAqIGZpbGUsIGludCBsaW5lLCBjaGFyIGNvbnN0ICogZnVuY3Rpb24sIFQgY29uc3QgJiB0LCBVIGNvbnN0ICYgdSApCi17Ci0gICAgaWYoIHQgPT0gdSApCi0gICAgewotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBORE5CT09TVF9MSUdIVFdFSUdIVF9URVNUX09TVFJFQU0KLSAgICAgICAgICAgIDw8IGZpbGUgPDwgIigiIDw8IGxpbmUgPDwgIik6IHRlc3QgJyIgPDwgZXhwcjEgPDwgIiA9PSAiIDw8IGV4cHIyCi0gICAgICAgICAgICA8PCAiJyBmYWlsZWQgaW4gZnVuY3Rpb24gJyIgPDwgZnVuY3Rpb24gPDwgIic6ICIKLSAgICAgICAgICAgIDw8ICInIiA8PCB0IDw8ICInICE9ICciIDw8IHUgPDwgIiciIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgKyt0ZXN0X2Vycm9ycygpOwotICAgIH0KLX0KLQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVT4gaW5saW5lIHZvaWQgdGVzdF9uZV9pbXBsKCBjaGFyIGNvbnN0ICogZXhwcjEsIGNoYXIgY29uc3QgKiBleHByMiwKLSAgY2hhciBjb25zdCAqIGZpbGUsIGludCBsaW5lLCBjaGFyIGNvbnN0ICogZnVuY3Rpb24sIFQgY29uc3QgJiB0LCBVIGNvbnN0ICYgdSApCi17Ci0gICAgaWYoIHQgIT0gdSApCi0gICAgewotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBORE5CT09TVF9MSUdIVFdFSUdIVF9URVNUX09TVFJFQU0KLSAgICAgICAgICAgIDw8IGZpbGUgPDwgIigiIDw8IGxpbmUgPDwgIik6IHRlc3QgJyIgPDwgZXhwcjEgPDwgIiAhPSAiIDw8IGV4cHIyCi0gICAgICAgICAgICA8PCAiJyBmYWlsZWQgaW4gZnVuY3Rpb24gJyIgPDwgZnVuY3Rpb24gPDwgIic6ICIKLSAgICAgICAgICAgIDw8ICInIiA8PCB0IDw8ICInID09ICciIDw8IHUgPDwgIiciIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgKyt0ZXN0X2Vycm9ycygpOwotICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLWlubGluZSBpbnQgcmVwb3J0X2Vycm9ycygpCi17Ci0gICAgZGV0YWlsOjpyZXBvcnRfZXJyb3JzX3JlbWluZCgpLmNhbGxlZF9yZXBvcnRfZXJyb3JzX2Z1bmN0aW9uID0gdHJ1ZTsKLQotICAgIGludCBlcnJvcnMgPSBkZXRhaWw6OnRlc3RfZXJyb3JzKCk7Ci0KLSAgICBpZiggZXJyb3JzID09IDAgKQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTElHSFRXRUlHSFRfVEVTVF9PU1RSRUFNCi0gICAgICAgICAgPDwgIk5vIGVycm9ycyBkZXRlY3RlZC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0xJR0hUV0VJR0hUX1RFU1RfT1NUUkVBTQotICAgICAgICAgIDw8IGVycm9ycyA8PCAiIGVycm9yIiA8PCAoZXJyb3JzID09IDE/ICIiOiAicyIpIDw8ICIgZGV0ZWN0ZWQuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybiAxOwotICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2RlZmluZSBORE5CT09TVF9URVNUKGV4cHIpICgoZXhwcik/ICh2b2lkKTA6IDo6bmRuYm9vc3Q6OmRldGFpbDo6dGVzdF9mYWlsZWRfaW1wbCgjZXhwciwgX19GSUxFX18sIF9fTElORV9fLCBORE5CT09TVF9DVVJSRU5UX0ZVTkNUSU9OKSkKLSNkZWZpbmUgTkROQk9PU1RfRVJST1IobXNnKSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVycm9yX2ltcGwobXNnLCBfX0ZJTEVfXywgX19MSU5FX18sIE5ETkJPT1NUX0NVUlJFTlRfRlVOQ1RJT04pCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfRVEoZXhwcjEsZXhwcjIpICggOjpuZG5ib29zdDo6ZGV0YWlsOjp0ZXN0X2VxX2ltcGwoI2V4cHIxLCAjZXhwcjIsIF9fRklMRV9fLCBfX0xJTkVfXywgTkROQk9PU1RfQ1VSUkVOVF9GVU5DVElPTiwgZXhwcjEsIGV4cHIyKSApCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfTkUoZXhwcjEsZXhwcjIpICggOjpuZG5ib29zdDo6ZGV0YWlsOjp0ZXN0X25lX2ltcGwoI2V4cHIxLCAjZXhwcjIsIF9fRklMRV9fLCBfX0xJTkVfXywgTkROQk9PU1RfQ1VSUkVOVF9GVU5DVElPTiwgZXhwcjEsIGV4cHIyKSApCi0jaWZuZGVmIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLSAgICNkZWZpbmUgTkROQk9PU1RfVEVTVF9USFJPV1MoIEVYUFIsIEVYQ0VQICkgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHRyeSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgIEVYUFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmRldGFpbDo6dGhyb3dfZmFpbGVkX2ltcGwgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICgjRVhDRVAsIF9fRklMRV9fLCBfX0xJTkVfXywgTkROQk9PU1RfQ1VSUkVOVF9GVU5DVElPTik7IFwKLSAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIGNhdGNoKEVYQ0VQIGNvbnN0JikgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIGNhdGNoKC4uLikgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmRldGFpbDo6dGhyb3dfZmFpbGVkX2ltcGwgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICgjRVhDRVAsIF9fRklMRV9fLCBfX0xJTkVfXywgTkROQk9PU1RfQ1VSUkVOVF9GVU5DVElPTik7IFwKLSAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIC8vCi0jZWxzZQotICAgI2RlZmluZSBORE5CT09TVF9URVNUX1RIUk9XUyggRVhQUiwgRVhDRVAgKQotI2VuZGlmCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0RFVEFJTF9MSUdIVFdFSUdIVF9URVNUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvbm9fZXhjZXB0aW9uc19zdXBwb3J0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL25vX2V4Y2VwdGlvbnNfc3VwcG9ydC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzN2IxOGMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvbm9fZXhjZXB0aW9uc19zdXBwb3J0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfREVUQUlMX05PX0VYQ0VQVElPTlNfU1VQUE9SVF9IUFBfCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9OT19FWENFUFRJT05TX1NVUFBPUlRfSFBQXwotCi0jaWYgKGRlZmluZWQgX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMjAwKQotIyAgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIChDKSBDb3B5cmlnaHQgMjAwNCBQYXZlbCBWb3plbmlsZWsuCi0vLyBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQKLS8vIG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vCi0vLyBUaGlzIGZpbGUgY29udGFpbnMgaGVscGVyIG1hY3JvcyB1c2VkIHdoZW4gZXhjZXB0aW9uIHN1cHBvcnQgbWF5IGJlCi0vLyBkaXNhYmxlZCAoYXMgaW5kaWNhdGVkIGJ5IG1hY3JvIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMpLgotLy8KLS8vIEJlZm9yZSBwaWNraW5nIHVwIHRoZXNlIG1hY3JvcyB5b3UgbWF5IGNvbnNpZGVyIHVzaW5nIFJBSUkgdGVjaG5pcXVlcwotLy8gdG8gZGVhbCB3aXRoIGV4Y2VwdGlvbnMgLSB0aGVpciBzeW50YXggY2FuIGJlIGFsd2F5cyB0aGUgc2FtZSB3aXRoIAotLy8gb3Igd2l0aG91dCBleGNlcHRpb24gc3VwcG9ydCBlbmFibGVkLgotLy8KLQotLyogRXhhbXBsZSBvZiB1c2U6Ci0KLXZvaWQgZm9vKCkgewotICBORE5CT09TVF9UUlkgewotICAgIC4uLgotICB9IE5ETkJPT1NUX0NBVENIKGNvbnN0IHN0ZDo6YmFkX2FsbG9jJikgewotICAgICAgLi4uCi0gICAgICBORE5CT09TVF9SRVRIUk9XCi0gIH0gTkROQk9PU1RfQ0FUQ0goY29uc3Qgc3RkOjpleGNlcHRpb24mIGUpIHsKLSAgICAgIC4uLgotICB9Ci0gIE5ETkJPT1NUX0NBVENIX0VORAotfQotCi1XaXRoIGV4Y2VwdGlvbiBzdXBwb3J0IGVuYWJsZWQgaXQgd2lsbCBleHBhbmQgaW50bzoKLQotdm9pZCBmb28oKSB7Ci0gIHsgdHJ5IHsKLSAgICAuLi4KLSAgfSBjYXRjaCAoY29uc3Qgc3RkOjpiYWRfYWxsb2MmKSB7Ci0gICAgICAuLi4KLSAgICAgIHRocm93OwotICB9IGNhdGNoIChjb25zdCBzdGQ6OmV4Y2VwdGlvbiYgZSkgewotICAgICAgLi4uCi0gIH0KLSAgfQotfQotCi1XaXRoIGV4Y2VwdGlvbiBzdXBwb3J0IGRpc2FibGVkIGl0IHdpbGwgZXhwYW5kIGludG86Ci0KLXZvaWQgZm9vKCkgewotICB7IGlmKHRydWUpIHsKLSAgICAuLi4KLSAgfSBlbHNlIGlmIChmYWxzZSkgewotICAgICAgLi4uCi0gIH0gZWxzZSBpZiAoZmFsc2UpICB7Ci0gICAgICAuLi4KLSAgfQotICB9Ci19Ci0qLwotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2lmICEoZGVmaW5lZCBORE5CT09TVF9OT19FWENFUFRJT05TKQotIyAgICBkZWZpbmUgTkROQk9PU1RfVFJZIHsgdHJ5Ci0jICAgIGRlZmluZSBORE5CT09TVF9DQVRDSCh4KSBjYXRjaCh4KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUkVUSFJPVyB0aHJvdzsKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0NBVENIX0VORCB9Ci0jZWxzZQotIyAgICBpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTY0KSkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9UUlkgeyBpZiAoIiIpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfQ0FUQ0goeCkgZWxzZSBpZiAoISIiKQotIyAgICBlbHNlCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfVFJZIHsgaWYgKHRydWUpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfQ0FUQ0goeCkgZWxzZSBpZiAoZmFsc2UpCi0jICAgIGVuZGlmCi0jICAgIGRlZmluZSBORE5CT09TVF9SRVRIUk9XCi0jICAgIGRlZmluZSBORE5CT09TVF9DQVRDSF9FTkQgfQotI2VuZGlmCi0KLQotI2VuZGlmIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvb2JfY2FsbF90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvb2JfY2FsbF90cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZGJiYjBjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL29iX2NhbGxfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2OCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy91dGlsaXR5IGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotLy8KLS8vICBDcmlwcGxlZCB2ZXJzaW9uIGZvciBjcmlwcGxlZCBjb21waWxlcnM6Ci0vLyAgc2VlIGxpYnMvdXRpbGl0eS9jYWxsX3RyYWl0cy5odG0KLS8vCi0KLS8qIFJlbGVhc2Ugbm90ZXM6Ci0gICAwMXN0IE9jdG9iZXIgMjAwMDoKLSAgICAgIEZpeGVkIGNhbGxfdHJhaXRzIG9uIFZDNiwgdXNpbmcgInBvb3IgbWFuJ3MgcGFydGlhbCBzcGVjaWFsaXNhdGlvbiIsCi0gICAgICB1c2luZyBpZGVhcyB0YWtlbiBmcm9tICJHZW5lcmF0aXZlIHByb2dyYW1taW5nIiBieSBLcnp5c3p0b2YgQ3phcm5lY2tpIAotICAgICAgJiBVbHJpY2ggRWlzZW5lY2tlci4KLSovCi0KLSNpZm5kZWYgTkROQk9PU1RfT0JfQ0FMTF9UUkFJVFNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX09CX0NBTExfVFJBSVRTX0hQUAotCi0jaWZuZGVmIE5ETkJPT1NUX0NPTkZJR19IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2VuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfQVJJVEhNRVRJQ19UWVBFX1RSQUlUU19IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hcml0aG1ldGljX3RyYWl0cy5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfQ09NUE9TSVRFX1RZUEVfVFJBSVRTX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbXBvc2l0ZV90cmFpdHMuaHBwPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotI2lmZGVmIE5ETkJPT1NUX01TVkM2X01FTUJFUl9URU1QTEFURVMKLS8vCi0vLyB1c2UgbWVtYmVyIHRlbXBsYXRlcyB0byBlbXVsYXRlCi0vLyBwYXJ0aWFsIHNwZWNpYWxpc2F0aW9uOgotLy8KLW5hbWVzcGFjZSBkZXRhaWx7Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IHN0YW5kYXJkX2NhbGxfdHJhaXRzCi17Ci0gICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLSAgIHR5cGVkZWYgVCYgcmVmZXJlbmNlOwotICAgdHlwZWRlZiBjb25zdCBUJiBjb25zdF9yZWZlcmVuY2U7Ci0gICB0eXBlZGVmIGNvbnN0IFQmIHBhcmFtX3R5cGU7Ci19OwotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3Qgc2ltcGxlX2NhbGxfdHJhaXRzCi17Ci0gICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLSAgIHR5cGVkZWYgVCYgcmVmZXJlbmNlOwotICAgdHlwZWRlZiBjb25zdCBUJiBjb25zdF9yZWZlcmVuY2U7Ci0gICB0eXBlZGVmIGNvbnN0IFQgcGFyYW1fdHlwZTsKLX07Ci10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCByZWZlcmVuY2VfY2FsbF90cmFpdHMKLXsKLSAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotICAgdHlwZWRlZiBUIHJlZmVyZW5jZTsKLSAgIHR5cGVkZWYgVCBjb25zdF9yZWZlcmVuY2U7Ci0gICB0eXBlZGVmIFQgcGFyYW1fdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDxib29sIHBvaW50ZXIsIGJvb2wgYXJpdGhtZXRpYywgYm9vbCByZWZlcmVuY2U+Ci1zdHJ1Y3QgY2FsbF90cmFpdHNfY2hvb3NlcgotewotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBzdHJ1Y3QgcmViaW5kCi0gICB7Ci0gICAgICB0eXBlZGVmIHN0YW5kYXJkX2NhbGxfdHJhaXRzPFQ+IHR5cGU7Ci0gICB9OwotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBjYWxsX3RyYWl0c19jaG9vc2VyPHRydWUsIGZhbHNlLCBmYWxzZT4KLXsKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgc3RydWN0IHJlYmluZAotICAgewotICAgICAgdHlwZWRlZiBzaW1wbGVfY2FsbF90cmFpdHM8VD4gdHlwZTsKLSAgIH07Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGNhbGxfdHJhaXRzX2Nob29zZXI8ZmFsc2UsIGZhbHNlLCB0cnVlPgotewotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBzdHJ1Y3QgcmViaW5kCi0gICB7Ci0gICAgICB0eXBlZGVmIHJlZmVyZW5jZV9jYWxsX3RyYWl0czxUPiB0eXBlOwotICAgfTsKLX07Ci0KLXRlbXBsYXRlIDxib29sIHNpemVfaXNfc21hbGw+IAotc3RydWN0IGNhbGxfdHJhaXRzX3NpemVvZl9jaG9vc2VyMgotewotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBzdHJ1Y3Qgc21hbGxfcmViaW5kCi0gICB7Ci0gICAgICB0eXBlZGVmIHNpbXBsZV9jYWxsX3RyYWl0czxUPiBzbWFsbF90eXBlOwotICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gCi1zdHJ1Y3QgY2FsbF90cmFpdHNfc2l6ZW9mX2Nob29zZXIyPGZhbHNlPgotewotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBzdHJ1Y3Qgc21hbGxfcmViaW5kCi0gICB7Ci0gICAgICB0eXBlZGVmIHN0YW5kYXJkX2NhbGxfdHJhaXRzPFQ+IHNtYWxsX3R5cGU7Ci0gICB9OwotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBjYWxsX3RyYWl0c19jaG9vc2VyPGZhbHNlLCB0cnVlLCBmYWxzZT4KLXsKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgc3RydWN0IHJlYmluZAotICAgewotICAgICAgZW51bSB7IHNpemVvZl9jaG9pY2UgPSAoc2l6ZW9mKFQpIDw9IHNpemVvZih2b2lkKikpIH07Ci0gICAgICB0eXBlZGVmIGNhbGxfdHJhaXRzX3NpemVvZl9jaG9vc2VyMjwoc2l6ZW9mKFQpIDw9IHNpemVvZih2b2lkKikpPiBjaG9vc2VyOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBjaG9vc2VyOjp0ZW1wbGF0ZSBzbWFsbF9yZWJpbmQ8VD4gYm91bmRfdHlwZTsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYm91bmRfdHlwZTo6c21hbGxfdHlwZSB0eXBlOwotICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgY2FsbF90cmFpdHMKLXsKLXByaXZhdGU6Ci0gICAgdHlwZWRlZiBkZXRhaWw6OmNhbGxfdHJhaXRzX2Nob29zZXI8Ci0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPFQ+Ojp2YWx1ZSwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlLCAKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3JlZmVyZW5jZTxUPjo6dmFsdWUKLSAgICAgID4gY2hvb3NlcjsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgY2hvb3Nlcjo6dGVtcGxhdGUgcmViaW5kPFQ+IGJvdW5kX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGJvdW5kX3R5cGU6OnR5cGUgY2FsbF90cmFpdHNfdHlwZTsKLXB1YmxpYzoKLSAgIHR5cGVkZWYgdHlwZW5hbWUgY2FsbF90cmFpdHNfdHlwZTo6dmFsdWVfdHlwZSAgICAgICB2YWx1ZV90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBjYWxsX3RyYWl0c190eXBlOjpyZWZlcmVuY2UgICAgICAgIHJlZmVyZW5jZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgY2FsbF90cmFpdHNfdHlwZTo6Y29uc3RfcmVmZXJlbmNlICBjb25zdF9yZWZlcmVuY2U7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGNhbGxfdHJhaXRzX3R5cGU6OnBhcmFtX3R5cGUgICAgICAgcGFyYW1fdHlwZTsKLX07Ci0KLSNlbHNlCi0vLwotLy8gc29ycnkgY2FsbF90cmFpdHMgaXMgY29tcGxldGVseSBub24tZnVuY3Rpb25hbAotLy8gYmxhbWUgeW91ciBicm9rZW4gY29tcGlsZXI6Ci0vLwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBjYWxsX3RyYWl0cwotewotICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIFQmIHJlZmVyZW5jZTsKLSAgIHR5cGVkZWYgY29uc3QgVCYgY29uc3RfcmVmZXJlbmNlOwotICAgdHlwZWRlZiBjb25zdCBUJiBwYXJhbV90eXBlOwotfTsKLQotI2VuZGlmIC8vIG1lbWJlciB0ZW1wbGF0ZXMKLQotfQotCi0jZW5kaWYgLy8gTkROQk9PU1RfT0JfQ0FMTF9UUkFJVFNfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9yZWZlcmVuY2VfY29udGVudC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9yZWZlcmVuY2VfY29udGVudC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5OGQ0ZWEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvcmVmZXJlbmNlX2NvbnRlbnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIGJvb3N0IGRldGFpbC9yZWZlcmVuY2VfY29udGVudC5ocHAgaGVhZGVyIGZpbGUKLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgdXBkYXRlcywgZG9jdW1lbnRhdGlvbiwgYW5kIHJldmlzaW9uIGhpc3RvcnkuCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDAzCi0vLyBFcmljIEZyaWVkbWFuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX0RFVEFJTF9SRUZFUkVOQ0VfQ09OVEVOVF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX1JFRkVSRU5DRV9DT05URU5UX0hQUAotCi0jaW5jbHVkZSAibmRuYm9vc3QvY29uZmlnLmhwcCIKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0jICAgaW5jbHVkZSAibmRuYm9vc3QvbXBsL2Jvb2wuaHBwIgotIyAgIGluY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ub3Rocm93X2NvcHkuaHBwIgotI2Vsc2UKLSMgICBpbmNsdWRlICJuZG5ib29zdC9tcGwvaWYuaHBwIgotIyAgIGluY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3JlZmVyZW5jZS5ocHAiCi0jZW5kaWYKLQotI2luY2x1ZGUgIm5kbmJvb3N0L21wbC92b2lkLmhwcCIKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIChkZXRhaWwpIGNsYXNzIHRlbXBsYXRlIHJlZmVyZW5jZV9jb250ZW50Ci0vLwotLy8gTm9uLUFzc2lnbmFibGUgd3JhcHBlciBmb3IgcmVmZXJlbmNlcy4KLS8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUmVmVD4KLWNsYXNzIHJlZmVyZW5jZV9jb250ZW50Ci17Ci1wcml2YXRlOiAvLyByZXByZXNlbnRhdGlvbgotCi0gICAgUmVmVCBjb250ZW50XzsKLQotcHVibGljOiAvLyBzdHJ1Y3RvcnMKLQotICAgIH5yZWZlcmVuY2VfY29udGVudCgpCi0gICAgewotICAgIH0KLQotICAgIHJlZmVyZW5jZV9jb250ZW50KFJlZlQgcikKLSAgICAgICAgOiBjb250ZW50XyggciApCi0gICAgewotICAgIH0KLQotICAgIHJlZmVyZW5jZV9jb250ZW50KGNvbnN0IHJlZmVyZW5jZV9jb250ZW50JiBvcGVyYW5kKQotICAgICAgICA6IGNvbnRlbnRfKCBvcGVyYW5kLmNvbnRlbnRfICkKLSAgICB7Ci0gICAgfQotCi1wcml2YXRlOiAvLyBub24tQXNzaWduYWJsZQotCi0gICAgcmVmZXJlbmNlX2NvbnRlbnQmIG9wZXJhdG9yPShjb25zdCByZWZlcmVuY2VfY29udGVudCYpOwotCi1wdWJsaWM6IC8vIHF1ZXJpZXMKLQotICAgIFJlZlQgZ2V0KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBjb250ZW50XzsKLSAgICB9Ci0KLX07Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIChkZXRhaWwpIG1ldGFmdW5jdGlvbiBtYWtlX3JlZmVyZW5jZV9jb250ZW50Ci0vLwotLy8gV3JhcHMgd2l0aCByZWZlcmVuY2VfY29udGVudCBpZiBzcGVjaWZpZWQgdHlwZSBpcyByZWZlcmVuY2UuCi0vLwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCA9IG1wbDo6dm9pZF8+IHN0cnVjdCBtYWtlX3JlZmVyZW5jZV9jb250ZW50OwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgbWFrZV9yZWZlcmVuY2VfY29udGVudAotewotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgbWFrZV9yZWZlcmVuY2VfY29udGVudDwgVCYgPgotewotICAgIHR5cGVkZWYgcmVmZXJlbmNlX2NvbnRlbnQ8VCY+IHR5cGU7Ci19OwotCi0jZWxzZSAvLyBkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IG1ha2VfcmVmZXJlbmNlX2NvbnRlbnQKLSAgICA6IG1wbDo6aWZfPAotICAgICAgICAgIGlzX3JlZmVyZW5jZTxUPgotICAgICAgICAsIHJlZmVyZW5jZV9jb250ZW50PFQ+Ci0gICAgICAgICwgVAotICAgICAgICA+Ci17Ci19OwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTiB3b3JrYXJvdW5kCi0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgbWFrZV9yZWZlcmVuY2VfY29udGVudDwgbXBsOjp2b2lkXyA+Ci17Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbWFrZV9yZWZlcmVuY2VfY29udGVudDxUPgotICAgIHsKLSAgICB9OwotCi0gICAgdHlwZWRlZiBtcGw6OnZvaWRfIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gcmVmZXJlbmNlX2NvbnRlbnQ8VCY+IHR5cGUgdHJhaXRzIHNwZWNpYWxpemF0aW9ucwotLy8KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGhhc19ub3Rocm93X2NvcHk8Ci0gICAgICA6Om5kbmJvb3N0OjpkZXRhaWw6OnJlZmVyZW5jZV9jb250ZW50PCBUJiA+Ci0gICAgPgotICAgIDogbXBsOjp0cnVlXwotewotfTsKLQotI2VuZGlmIC8vICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9ERVRBSUxfUkVGRVJFTkNFX0NPTlRFTlRfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9zY29wZWRfZW51bV9lbXVsYXRpb24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvc2NvcGVkX2VudW1fZW11bGF0aW9uLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2QyZjU5OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9zY29wZWRfZW51bV9lbXVsYXRpb24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzM3ICswLDAgQEAKLS8vICBzY29wZWRfZW51bV9lbXVsYXRpb24uaHBwICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IEJlbWFuIERhd2VzLCAyMDA5Ci0vLyAgQ29weXJpZ2h0IChDKSAyMDExLTIwMTIgVmljZW50ZSBKLiBCb3RldCBFc2NyaWJhCi0vLyAgQ29weXJpZ2h0IChDKSAyMDEyIEFudGhvbnkgV2lsbGlhbXMKLQotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0KLS8qCi1bc2VjdGlvbjpzY29wZWRfZW51bXMgU2NvcGVkIEVudW1zXQotCi1HZW5lcmF0ZXMgQysrMHggc2NvcGVkIGVudW1zIGlmIHRoZSBmZWF0dXJlIGlzIHByZXNlbnQsIG90aGVyd2lzZSBlbXVsYXRlcyBDKysweAotc2NvcGVkIGVudW1zIHdpdGggQysrMDMgbmFtZXNwYWNlcyBhbmQgZW51bXMuIFRoZSBCb29zdC5Db25maWcgTkROQk9PU1RfTk9fQ1hYMTFfU0NPUEVEX0VOVU1TCi1tYWNybyBpcyB1c2VkIHRvIGRldGVjdCBmZWF0dXJlIHN1cHBvcnQuCi0KLVNlZSBodHRwOi8vd3d3Lm9wZW4tc3RkLm9yZy9qdGMxL3NjMjIvd2cyMS9kb2NzL3BhcGVycy8yMDA3L24yMzQ3LnBkZiBmb3IgYQotZGVzY3JpcHRpb24gb2YgdGhlIHNjb3BlZCBlbnVtIGZlYXR1cmUuIE5vdGUgdGhhdCB0aGUgY29tbWl0dGVlIGNoYW5nZWQgdGhlIG5hbWUKLWZyb20gc3Ryb25nbHkgdHlwZWQgZW51bSB0byBzY29wZWQgZW51bS4KLQotU29tZSBvZiB0aGUgZW51bWVyYXRpb25zIGRlZmluZWQgaW4gdGhlIHN0YW5kYXJkIGxpYnJhcnkgYXJlIHNjb3BlZCBlbnVtcy4KLQotICBlbnVtIGNsYXNzIGZ1dHVyZV9lcnJjCi0gIHsKLSAgICAgIGJyb2tlbl9wcm9taXNlLAotICAgICAgZnV0dXJlX2FscmVhZHlfcmV0cmlldmVkLAotICAgICAgcHJvbWlzZV9hbHJlYWR5X3NhdGlzZmllZCwKLSAgICAgIG5vX3N0YXRlCi0gIH07Ci0KLU9uIGNvbXBpbGVycyB0aGF0IGRvbid0IHN1cHBvcnQgdGhlbSwgdGhlIGxpYnJhcnkgcHJvdmlkZXMgdHdvIGVtdWxhdGlvbnM6Ci0KLVtoZWFkaW5nIFN0cmljdF0KLQotKiBBYmxlIHRvIHNwZWNpZnkgdGhlIHVuZGVybHlpbmcgdHlwZS4KLSogZXhwbGljaXQgY29udmVyc2lvbiB0by9mcm9tIHVuZGVybHlpbmcgdHlwZS4KLSogVGhlIHdyYXBwZXIgaXMgbm90IGEgQysrMDMgZW51bSB0eXBlLgotCi1UaGUgdXNlciBjYW4gZGVjbGFyZSAgZGVjbGFyZSB0aGVzZSB0eXBlcyBhcwotCi0gIE5ETkJPT1NUX1NDT1BFRF9FTlVNX0RFQ0xBUkVfQkVHSU4oZnV0dXJlX2VycmMpCi0gIHsKLSAgICAgIGJyb2tlbl9wcm9taXNlLAotICAgICAgZnV0dXJlX2FscmVhZHlfcmV0cmlldmVkLAotICAgICAgcHJvbWlzZV9hbHJlYWR5X3NhdGlzZmllZCwKLSAgICAgIG5vX3N0YXRlCi0gIH0KLSAgTkROQk9PU1RfU0NPUEVEX0VOVU1fREVDTEFSRV9FTkQoZnV0dXJlX2VycmMpCi0KLVRoZXNlIG1hY3JvcyBhbGxvd3MgdG8gdXNlICdmdXR1cmVfZXJyYycgaW4gYWxtb3N0IGFsbCB0aGUgY2FzZXMgYXMgYW4gc2NvcGVkIGVudW0uCi0KLSAgZnV0dXJlX2VycmMgZXJyID0gZnV0dXJlX2VycmM6Om5vX3N0YXRlOwotCi1UaGVyZSBhcmUgaG93ZXZlciBzb21lIGxpbWl0YXRpb25zOgotCi0qIFRoZSB0eXBlIGlzIG5vdCBhIEMrKyBlbnVtLCBzbyAnaXNfZW51bTxmdXR1cmVfZXJyYz4nIHdpbGwgYmUgZmFsc2VfdHlwZS4KLSogVGhlIGVtdWxhdGVkIHNjb3BlZCBlbnVtIGNhbiBub3QgYmUgdXNlZCBpbiBzd2l0Y2ggbm9yIGluIHRlbXBsYXRlIGFyZ3VtZW50cy4gRm9yIHRoZXNlIGNhc2VzIHRoZSB1c2VyIG5lZWRzIHRvIHVzZSBzb21lIG1hY3Jvcy4KLQotSW5zdGVhZCBvZgotCi0gICAgICAgIHN3aXRjaCAoZXYpCi0gICAgICAgIHsKLSAgICAgICAgY2FzZSBmdXR1cmVfZXJyYzo6YnJva2VuX3Byb21pc2U6Ci0gIC8vIC4uLgotCi11c2UKLQotICAgICAgICBzd2l0Y2ggKG5kbmJvb3N0OjpuYXRpdmVfdmFsdWUoZXYpKQotICAgICAgICB7Ci0gICAgICAgIGNhc2UgZnV0dXJlX2VycmM6OmJyb2tlbl9wcm9taXNlOgotCi1BbmQgaW5zdGVhZCBvZgotCi0gICAgI2lmZGVmIE5ETkJPT1NUX05PX0NYWDExX1NDT1BFRF9FTlVNUwotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IE5ETkJPT1NUX1NZTUJPTF9WSVNJQkxFIGlzX2Vycm9yX2NvZGVfZW51bTxmdXR1cmVfZXJyYz4gOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKLSAgICAjZW5kaWYKLQotdXNlCi0KLSAgICAjaWZkZWYgTkROQk9PU1RfTk9fQ1hYMTFfU0NPUEVEX0VOVU1TCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgTkROQk9PU1RfU1lNQk9MX1ZJU0lCTEUgaXNfZXJyb3JfY29kZV9lbnVtPGZ1dHVyZV9lcnJjOjplbnVtX3R5cGUgPiA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OwotICAgICNlbmRpZgotCi0KLVNhbXBsZSB1c2FnZToKLQotICAgICBORE5CT09TVF9TQ09QRURfRU5VTV9VVF9ERUNMQVJFX0JFR0lOKGFsZ2FlLCBjaGFyKSB7IGdyZWVuLCByZWQsIGN5YW4gfTsgTkROQk9PU1RfU0NPUEVEX0VOVU1fREVDTEFSRV9FTkQoYWxnYWUpCi0gICAgIC4uLgotICAgICBhbGdhZSBzYW1wbGUoIGFsZ2FlOjpyZWQgKTsKLSAgICAgdm9pZCBmb28oIGFsZ2FlIGNvbG9yICk7Ci0gICAgIC4uLgotICAgICBzYW1wbGUgPSBhbGdhZTo6Z3JlZW47Ci0gICAgIGZvbyggYWxnYWU6OmN5YW4gKTsKLQotIExpZ2h0Ci0gIENhdXRpb246IG9ubHkgdGhlIHN5bnRheCBpcyBlbXVsYXRlZDsgdGhlIHNlbWFudGljcyBhcmUgbm90IGVtdWxhdGVkIGFuZAotICB0aGUgc3ludGF4IGVtdWxhdGlvbiBkb2Vzbid0IGluY2x1ZGUgYmVpbmcgYWJsZSB0byBzcGVjaWZ5IHRoZSB1bmRlcmx5aW5nCi0gIHJlcHJlc2VudGF0aW9uIHR5cGUuCi0KLSAgVGhlIGxpdGVyYWwgc2NvcGVkIGVtdWxhdGlvbiBpcyB2aWEgc3RydWN0IHJhdGhlciB0aGFuIG5hbWVzcGFjZSB0byBhbGxvdyB1c2Ugd2l0aGluIGNsYXNzZXMuCi0gIFRoYW5rcyB0byBBbmRyZXkgU2VtYXNoZXYgZm9yIHBvaW50aW5nIHRoYXQgb3V0LgotICBIb3dldmVyIHRoZSB0eXBlIGlzIGFuIHJlYWwgQysrMDMgZW51bSBhbmQgc28gY29udmVydGlibGUgaW1wbGljaXRseSB0byBhbiBpbnQuCi0KLSAgU2FtcGxlIHVzYWdlOgotCi0gICAgIE5ETkJPT1NUX1NDT1BFRF9FTlVNX1NUQVJUKGFsZ2FlKSB7IGdyZWVuLCByZWQsIGN5YW4gfTsgTkROQk9PU1RfU0NPUEVEX0VOVU1fRU5ECi0gICAgIC4uLgotICAgICBORE5CT09TVF9TQ09QRURfRU5VTShhbGdhZSkgc2FtcGxlKCBhbGdhZTo6cmVkICk7Ci0gICAgIHZvaWQgZm9vKCBORE5CT09TVF9TQ09QRURfRU5VTShhbGdhZSkgY29sb3IgKTsKLSAgICAgLi4uCi0gICAgIHNhbXBsZSA9IGFsZ2FlOjpncmVlbjsKLSAgICAgZm9vKCBhbGdhZTo6Y3lhbiApOwotCi0gIEhlbHBmdWwgY29tbWVudHMgYW5kIHN1Z2dlc3Rpb25zIHdlcmUgYWxzbyBtYWRlIGJ5IEtqZWxsIEVsc3RlciwgUGhpbCBFbmRlY290dCwKLSAgSm9lbCBGYWxjb3UsIE1hdGhpYXMgR2F1bmFyZCwgRmVsaXBlIE1hZ25vIGRlIEFsbWVpZGEsIE1hdHQgQ2FsYWJyZXNlLCBWaWNlbnRlCi0gIEJvdGV0LCBhbmQgRGFuaWVsIEphbWVzLgotCi1bZW5kc2VjdF0KLSovCi0KLQotI2lmbmRlZiBORE5CT09TVF9TQ09QRURfRU5VTV9FTVVMQVRJT05fSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1NDT1BFRF9FTlVNX0VNVUxBVElPTl9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotI2lmZGVmIE5ETkJPT1NUX05PX0NYWDExX1NDT1BFRF9FTlVNUwotICAvKioKLSAgICogTWV0YS1mdW5jdGlvbiB0byBnZXQgdGhlIHVuZGVybHlpbmcgdHlwZSBvZiBhIHNjb3BlZCBlbnVtLgotICAgKgotICAgKiBSZXF1aXJlcyBFbnVtVHlwZSBtdXN0IGJlIGFuIGVudW0gdHlwZSBvciB0aGUgZW11bGF0aW9uIG9mIGEgc2NvcGVkIGVudW0KLSAgICovCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBFbnVtVHlwZT4KLSAgc3RydWN0IHVuZGVybHlpbmdfdHlwZQotICB7Ci0gICAgLyoqCi0gICAgICogVGhlIG1lbWJlciB0eXBlZGVmIHR5cGUgbmFtZXMgdGhlIHVuZGVybHlpbmcgdHlwZSBvZiBFbnVtVHlwZS4gSXQgaXMgRW51bVR5cGU6OnVuZGVybHlpbmdfdHlwZSB3aGVuIHRoZSBFbnVtVHlwZSBpcyBhbiBlbXVsYXRlZCBzY29wZWQgZW51bSwKLSAgICAgKiBzdGQ6OnVuZGVybHlpbmdfdHlwZTxFbnVtVHlwZT46OnR5cGUgd2hlbiB0aGUgc3RhbmRhcmQgbGlicmFyeSBzdGQ6OnVuZGVybHlpbmdfdHlwZSBpcyBwcm92aWRlZC4KLSAgICAgKgotICAgICAqIFRoZSB1c2VyIHdpbGwgbmVlZCB0byBzcGVjaWFsaXplIGl0IHdoZW4gdGhlIGNvbXBpbGVyIHN1cHBvcnRzIHNjb3BlZCBlbnVtcyBidXQgZG9uJ3QgcHJvdmlkZXMgc3RkOjp1bmRlcmx5aW5nX3R5cGUuCi0gICAgICovCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBFbnVtVHlwZTo6dW5kZXJseWluZ190eXBlIHR5cGU7Ci0gIH07Ci0KLSAgLyoqCi0gICAqIE1ldGEtZnVuY3Rpb24gdG8gZ2V0IHRoZSBuYXRpdmUgZW51bSB0eXBlIGFzc29jaWF0ZWQgdG8gYW4gZW51bSBjbGFzcyBvciBpdHMgZW11bGF0aW9uLgotICAgKi8KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEVudW1UeXBlPgotICBzdHJ1Y3QgbmF0aXZlX3R5cGUKLSAgewotICAgIC8qKgotICAgICAqIFRoZSBtZW1iZXIgdHlwZWRlZiB0eXBlIG5hbWVzIHRoZSBuYXRpdmUgZW51bSB0eXBlIGFzc29jaWF0ZWQgdG8gdGhlIHNjb3BlZCBlbnVtLAotICAgICAqIHdoaWNoIGlzIGl0IHNlbGYgaWYgdGhlIGNvbXBpbGVyIHN1cHBvcnRzIHNjb3BlZCBlbnVtcyBvciBFbnVtVHlwZTo6ZW51bV90eXBlIGlmIGl0IGlzIGFuIGVtdWxhdGVkIHNjb3BlZCBlbnVtLgotICAgICAqLwotICAgIHR5cGVkZWYgdHlwZW5hbWUgRW51bVR5cGU6OmVudW1fdHlwZSB0eXBlOwotICB9OwotCi0gIC8qKgotICAgKiBDYXN0cyBhIHNjb3BlZCBlbnVtIHRvIGl0cyB1bmRlcmx5aW5nIHR5cGUuCi0gICAqCi0gICAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZnVsIHdoZW4gd29ya2luZyB3aXRoIHNjb3BlZCBlbnVtIGNsYXNzZXMsIHdoaWNoIGRvZW5zJ3QgaW1wbGljaXRseSBjb252ZXJ0IHRvIHRoZSB1bmRlcmx5aW5nIHR5cGUuCi0gICAqIEBwYXJhbSB2IEEgc2NvcGVkIGVudW0uCi0gICAqIEByZXR1cm5zIFRoZSB1bmRlcmx5aW5nIHR5cGUuCi0gICAqIEB0aHJvd3MgTm8tdGhyb3dzLgotICAgKi8KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFVuZGVybHlpbmdUeXBlLCB0eXBlbmFtZSBFbnVtVHlwZT4KLSAgVW5kZXJseWluZ1R5cGUgdW5kZXJseWluZ19jYXN0KEVudW1UeXBlIHYpCi0gIHsKLSAgICByZXR1cm4gdi5nZXRfdW5kZXJseWluZ192YWx1ZV8oKTsKLSAgfQotCi0gIC8qKgotICAgKiBDYXN0cyBhIHNjb3BlZCBlbnVtIHRvIGl0cyBuYXRpdmUgZW51bSB0eXBlLgotICAgKgotICAgKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWZ1bCB0byBtYWtlIHByb2dyYW1zIHBvcnRhYmxlIHdoZW4gdGhlIHNjb3BlZCBlbnVtIGVtdWxhdGlvbiBjYW4gbm90IGJlIHVzZSB3aGVyZSBuYXRpdmUgZW51bXMgY2FuLgotICAgKgotICAgKiBFbnVtVHlwZSB0aGUgc2NvcGVkIGVudW0gdHlwZQotICAgKgotICAgKiBAcGFyYW0gdiBBIHNjb3BlZCBlbnVtLgotICAgKiBAcmV0dXJucyBUaGUgbmF0aXZlIGVudW0gdmFsdWUuCi0gICAqIEB0aHJvd3MgTm8tdGhyb3dzLgotICAgKi8KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEVudW1UeXBlPgotICBpbmxpbmUKLSAgdHlwZW5hbWUgRW51bVR5cGU6OmVudW1fdHlwZSBuYXRpdmVfdmFsdWUoRW51bVR5cGUgZSkKLSAgewotICAgIHJldHVybiBlLm5hdGl2ZV92YWx1ZV8oKTsKLSAgfQotCi0jZWxzZSAgLy8gTkROQk9PU1RfTk9fQ1hYMTFfU0NPUEVEX0VOVU1TCi0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEVudW1UeXBlPgotICBzdHJ1Y3QgdW5kZXJseWluZ190eXBlCi0gIHsKLSAgICAvL3R5cGVkZWYgdHlwZW5hbWUgc3RkOjp1bmRlcmx5aW5nX3R5cGU8RW51bVR5cGU+Ojp0eXBlIHR5cGU7Ci0gIH07Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEVudW1UeXBlPgotICBzdHJ1Y3QgbmF0aXZlX3R5cGUKLSAgewotICAgIHR5cGVkZWYgRW51bVR5cGUgdHlwZTsKLSAgfTsKLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVW5kZXJseWluZ1R5cGUsIHR5cGVuYW1lIEVudW1UeXBlPgotICBVbmRlcmx5aW5nVHlwZSB1bmRlcmx5aW5nX2Nhc3QoRW51bVR5cGUgdikKLSAgewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxVbmRlcmx5aW5nVHlwZT4odik7Ci0gIH0KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRW51bVR5cGU+Ci0gIGlubGluZQotICBFbnVtVHlwZSBuYXRpdmVfdmFsdWUoRW51bVR5cGUgZSkKLSAgewotICAgIHJldHVybiBlOwotIH0KLQotI2VuZGlmCi19Ci0KLQotI2lmZGVmIE5ETkJPT1NUX05PX0NYWDExX1NDT1BFRF9FTlVNUwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX0VYUExJQ0lUX0NPTlZFUlNJT05fT1BFUkFUT1JTCi0KLSNkZWZpbmUgTkROQk9PU1RfU0NPUEVEX0VOVU1fVVRfREVDTEFSRV9DT05WRVJTSU9OX09QRVJBVE9SIFwKLSAgICAgZXhwbGljaXQgb3BlcmF0b3IgdW5kZXJseWluZ190eXBlKCkgY29uc3QgeyByZXR1cm4gZ2V0X3VuZGVybHlpbmdfdmFsdWVfKCk7IH0KLQotI2Vsc2UKLQotI2RlZmluZSBORE5CT09TVF9TQ09QRURfRU5VTV9VVF9ERUNMQVJFX0NPTlZFUlNJT05fT1BFUkFUT1IKLQotI2VuZGlmCi0KLS8qKgotICogU3RhcnQgYSBkZWNsYXJhdGlvbiBvZiBhIHNjb3BlZCBlbnVtLgotICoKLSAqIEBwYXJhbSBFbnVtVHlwZSBUaGUgbmV3IHNjb3BlZCBlbnVtLgotICogQHBhcmFtIFVuZGVybHlpbmdUeXBlIFRoZSB1bmRlcmx5aW5nIHR5cGUuCi0gKi8KLSNkZWZpbmUgTkROQk9PU1RfU0NPUEVEX0VOVU1fVVRfREVDTEFSRV9CRUdJTihFbnVtVHlwZSwgVW5kZXJseWluZ1R5cGUpICAgIFwKLSAgICBzdHJ1Y3QgRW51bVR5cGUgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdHlwZWRlZiBVbmRlcmx5aW5nVHlwZSB1bmRlcmx5aW5nX3R5cGU7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgRW51bVR5cGUoKSBORE5CT09TVF9OT0VYQ0VQVCB7fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZXhwbGljaXQgRW51bVR5cGUodW5kZXJseWluZ190eXBlIHYpIDogdl8odikge30gICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdW5kZXJseWluZ190eXBlIGdldF91bmRlcmx5aW5nX3ZhbHVlXygpIGNvbnN0IHsgcmV0dXJuIHZfOyB9ICAgICAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9TQ09QRURfRU5VTV9VVF9ERUNMQVJFX0NPTlZFUlNJT05fT1BFUkFUT1IgICAgICAgICAgICAgICAgXAotICAgIHByaXZhdGU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB1bmRlcmx5aW5nX3R5cGUgdl87ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB0eXBlZGVmIEVudW1UeXBlIHNlbGZfdHlwZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHB1YmxpYzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBlbnVtIGVudW1fdHlwZQotCi0jZGVmaW5lIE5ETkJPT1NUX1NDT1BFRF9FTlVNX0RFQ0xBUkVfRU5EMigpIFwKLSAgICAgICAgZW51bV90eXBlIGdldF9uYXRpdmVfdmFsdWVfKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQgeyByZXR1cm4gZW51bV90eXBlKHZfKTsgfSBcCi0gICAgICAgIG9wZXJhdG9yIGVudW1fdHlwZSgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUIHsgcmV0dXJuIGdldF9uYXRpdmVfdmFsdWVfKCk7IH0gXAotICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciA9PShzZWxmX3R5cGUgbGhzLCBzZWxmX3R5cGUgcmhzKSBORE5CT09TVF9OT0VYQ0VQVCB7IHJldHVybiBlbnVtX3R5cGUobGhzLnZfKT09ZW51bV90eXBlKHJocy52Xyk7IH0gXAotICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciA9PShzZWxmX3R5cGUgbGhzLCBlbnVtX3R5cGUgcmhzKSBORE5CT09TVF9OT0VYQ0VQVCB7IHJldHVybiBlbnVtX3R5cGUobGhzLnZfKT09cmhzOyB9IFwKLSAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IgPT0oZW51bV90eXBlIGxocywgc2VsZl90eXBlIHJocykgTkROQk9PU1RfTk9FWENFUFQgeyByZXR1cm4gbGhzPT1lbnVtX3R5cGUocmhzLnZfKTsgfSBcCi0gICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yICE9KHNlbGZfdHlwZSBsaHMsIHNlbGZfdHlwZSByaHMpIE5ETkJPT1NUX05PRVhDRVBUIHsgcmV0dXJuIGVudW1fdHlwZShsaHMudl8pIT1lbnVtX3R5cGUocmhzLnZfKTsgfSBcCi0gICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yICE9KHNlbGZfdHlwZSBsaHMsIGVudW1fdHlwZSByaHMpIE5ETkJPT1NUX05PRVhDRVBUIHsgcmV0dXJuIGVudW1fdHlwZShsaHMudl8pIT1yaHM7IH0gXAotICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciAhPShlbnVtX3R5cGUgbGhzLCBzZWxmX3R5cGUgcmhzKSBORE5CT09TVF9OT0VYQ0VQVCB7IHJldHVybiBsaHMhPWVudW1fdHlwZShyaHMudl8pOyB9IFwKLSAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IgPChzZWxmX3R5cGUgbGhzLCBzZWxmX3R5cGUgcmhzKSBORE5CT09TVF9OT0VYQ0VQVCB7IHJldHVybiBlbnVtX3R5cGUobGhzLnZfKTxlbnVtX3R5cGUocmhzLnZfKTsgfSBcCi0gICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIDwoc2VsZl90eXBlIGxocywgZW51bV90eXBlIHJocykgTkROQk9PU1RfTk9FWENFUFQgeyByZXR1cm4gZW51bV90eXBlKGxocy52Xyk8cmhzOyB9IFwKLSAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IgPChlbnVtX3R5cGUgbGhzLCBzZWxmX3R5cGUgcmhzKSBORE5CT09TVF9OT0VYQ0VQVCB7IHJldHVybiBsaHM8ZW51bV90eXBlKHJocy52Xyk7IH0gXAotICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciA8PShzZWxmX3R5cGUgbGhzLCBzZWxmX3R5cGUgcmhzKSBORE5CT09TVF9OT0VYQ0VQVCB7IHJldHVybiBlbnVtX3R5cGUobGhzLnZfKTw9ZW51bV90eXBlKHJocy52Xyk7IH0gXAotICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciA8PShzZWxmX3R5cGUgbGhzLCBlbnVtX3R5cGUgcmhzKSBORE5CT09TVF9OT0VYQ0VQVCB7IHJldHVybiBlbnVtX3R5cGUobGhzLnZfKTw9cmhzOyB9IFwKLSAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IgPD0oZW51bV90eXBlIGxocywgc2VsZl90eXBlIHJocykgTkROQk9PU1RfTk9FWENFUFQgeyByZXR1cm4gbGhzPD1lbnVtX3R5cGUocmhzLnZfKTsgfSBcCi0gICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yID4oc2VsZl90eXBlIGxocywgc2VsZl90eXBlIHJocykgTkROQk9PU1RfTk9FWENFUFQgeyByZXR1cm4gZW51bV90eXBlKGxocy52Xyk+ZW51bV90eXBlKHJocy52Xyk7IH0gXAotICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciA+KHNlbGZfdHlwZSBsaHMsIGVudW1fdHlwZSByaHMpIE5ETkJPT1NUX05PRVhDRVBUIHsgcmV0dXJuIGVudW1fdHlwZShsaHMudl8pPnJoczsgfSBcCi0gICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yID4oZW51bV90eXBlIGxocywgc2VsZl90eXBlIHJocykgTkROQk9PU1RfTk9FWENFUFQgeyByZXR1cm4gbGhzPmVudW1fdHlwZShyaHMudl8pOyB9IFwKLSAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IgPj0oc2VsZl90eXBlIGxocywgc2VsZl90eXBlIHJocykgTkROQk9PU1RfTk9FWENFUFQgeyByZXR1cm4gZW51bV90eXBlKGxocy52Xyk+PWVudW1fdHlwZShyaHMudl8pOyB9IFwKLSAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IgPj0oc2VsZl90eXBlIGxocywgZW51bV90eXBlIHJocykgTkROQk9PU1RfTk9FWENFUFQgeyByZXR1cm4gZW51bV90eXBlKGxocy52Xyk+PXJoczsgfSBcCi0gICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yID49KGVudW1fdHlwZSBsaHMsIHNlbGZfdHlwZSByaHMpIE5ETkJPT1NUX05PRVhDRVBUIHsgcmV0dXJuIGxocz49ZW51bV90eXBlKHJocy52Xyk7IH0gXAotICAgIH07Ci0KLSNkZWZpbmUgTkROQk9PU1RfU0NPUEVEX0VOVU1fREVDTEFSRV9FTkQoRW51bVR5cGUpIFwKLSAgICA7IFwKLSAgICBFbnVtVHlwZShlbnVtX3R5cGUgdikgTkROQk9PU1RfTk9FWENFUFQgOiB2Xyh2KSB7fSAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1NDT1BFRF9FTlVNX0RFQ0xBUkVfRU5EMigpCi0KLS8qKgotICogU3RhcnRzIGEgZGVjbGFyYXRpb24gb2YgYSBzY29wZWQgZW51bSB3aXRoIHRoZSBkZWZhdWx0IGludCB1bmRlcmx5aW5nIHR5cGUuCi0gKgotICogQHBhcmFtIEVudW1UeXBlIFRoZSBuZXcgc2NvcGVkIGVudW0uCi0gKi8KLSNkZWZpbmUgTkROQk9PU1RfU0NPUEVEX0VOVU1fREVDTEFSRV9CRUdJTihFbnVtVHlwZSkgXAotICBORE5CT09TVF9TQ09QRURfRU5VTV9VVF9ERUNMQVJFX0JFR0lOKEVudW1UeXBlLGludCkKLQotLyoqCi0gKiBOYW1lIG9mIHRoZSBuYXRpdmUgZW51bSB0eXBlLgotICoKLSAqIEBwYXJhbSBOVCBUaGUgbmV3IHNjb3BlZCBlbnVtLgotICovCi0jZGVmaW5lIE5ETkJPT1NUX1NDT1BFRF9FTlVNX05BVElWRShFbnVtVHlwZSkgRW51bVR5cGU6OmVudW1fdHlwZQotLyoqCi0gKiBGb3J3YXJkIGRlY2xhcmVzIGFuIHNjb3BlZCBlbnVtLgotICoKLSAqIEBwYXJhbSBOVCBUaGUgc2NvcGVkIGVudW0uCi0gKi8KLSNkZWZpbmUgTkROQk9PU1RfU0NPUEVEX0VOVU1fRk9SV0FSRF9ERUNMQVJFKEVudW1UeXBlKSBzdHJ1Y3QgRW51bVR5cGUKLQotI2Vsc2UgIC8vIE5ETkJPT1NUX05PX0NYWDExX1NDT1BFRF9FTlVNUwotCi0jZGVmaW5lIE5ETkJPT1NUX1NDT1BFRF9FTlVNX1VUX0RFQ0xBUkVfQkVHSU4oRW51bVR5cGUsVW5kZXJseWluZ1R5cGUpIGVudW0gY2xhc3MgRW51bVR5cGU6VW5kZXJseWluZ1R5cGUKLSNkZWZpbmUgTkROQk9PU1RfU0NPUEVEX0VOVU1fREVDTEFSRV9CRUdJTihFbnVtVHlwZSkgZW51bSBjbGFzcyBFbnVtVHlwZQotI2RlZmluZSBORE5CT09TVF9TQ09QRURfRU5VTV9ERUNMQVJFX0VORDIoKQotI2RlZmluZSBORE5CT09TVF9TQ09QRURfRU5VTV9ERUNMQVJFX0VORChFbnVtVHlwZSkgOwotCi0jZGVmaW5lIE5ETkJPT1NUX1NDT1BFRF9FTlVNX05BVElWRShFbnVtVHlwZSkgRW51bVR5cGUKLSNkZWZpbmUgTkROQk9PU1RfU0NPUEVEX0VOVU1fRk9SV0FSRF9ERUNMQVJFKEVudW1UeXBlKSBlbnVtIGNsYXNzIEVudW1UeXBlCi0KLSNlbmRpZiAgLy8gTkROQk9PU1RfTk9fQ1hYMTFfU0NPUEVEX0VOVU1TCi0KLSNkZWZpbmUgTkROQk9PU1RfU0NPUEVEX0VOVU1fU1RBUlQobmFtZSkgTkROQk9PU1RfU0NPUEVEX0VOVU1fREVDTEFSRV9CRUdJTihuYW1lKQotI2RlZmluZSBORE5CT09TVF9TQ09QRURfRU5VTV9FTkQgTkROQk9PU1RfU0NPUEVEX0VOVU1fREVDTEFSRV9FTkQyKCkKLSNkZWZpbmUgTkROQk9PU1RfU0NPUEVEX0VOVU0obmFtZSkgTkROQk9PU1RfU0NPUEVEX0VOVU1fTkFUSVZFKG5hbWUpCi0KLS8vI2lmZGVmIE5ETkJPT1NUX05PX0NYWDExX1NDT1BFRF9FTlVNUwotLy8KLS8vIyBkZWZpbmUgTkROQk9PU1RfU0NPUEVEX0VOVU1fU1RBUlQobmFtZSkgc3RydWN0IG5hbWUgeyBlbnVtIGVudW1fdHlwZQotLy8jIGRlZmluZSBORE5CT09TVF9TQ09QRURfRU5VTV9FTkQgfTsKLS8vIyBkZWZpbmUgTkROQk9PU1RfU0NPUEVEX0VOVU0obmFtZSkgbmFtZTo6ZW51bV90eXBlCi0vLwotLy8jZWxzZQotLy8KLS8vIyBkZWZpbmUgTkROQk9PU1RfU0NPUEVEX0VOVU1fU1RBUlQobmFtZSkgZW51bSBjbGFzcyBuYW1lCi0vLyMgZGVmaW5lIE5ETkJPT1NUX1NDT1BFRF9FTlVNX0VORAotLy8jIGRlZmluZSBORE5CT09TVF9TQ09QRURfRU5VTShuYW1lKSBuYW1lCi0vLwotLy8jZW5kaWYKLSNlbmRpZiAgLy8gTkROQk9PU1RfU0NPUEVEX0VOVU1fRU1VTEFUSU9OX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvc3BfdHlwZWluZm8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvc3BfdHlwZWluZm8uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZWQ2M2FhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL3NwX3R5cGVpbmZvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzNSArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX0RFVEFJTF9TUF9UWVBFSU5GT19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX1NQX1RZUEVJTkZPX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8gIGRldGFpbC9zcF90eXBlaW5mby5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IDIwMDcgUGV0ZXIgRGltb3YKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyBTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLSNpZiBkZWZpbmVkKCBORE5CT09TVF9OT19UWVBFSUQgKQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY3VycmVudF9mdW5jdGlvbi5ocHA+Ci0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotY2xhc3Mgc3BfdHlwZWluZm8KLXsKLXByaXZhdGU6Ci0KLSAgICBzcF90eXBlaW5mbyggc3BfdHlwZWluZm8gY29uc3QmICk7Ci0gICAgc3BfdHlwZWluZm8mIG9wZXJhdG9yPSggc3BfdHlwZWluZm8gY29uc3QmICk7Ci0KLSAgICBjaGFyIGNvbnN0ICogbmFtZV87Ci0KLXB1YmxpYzoKLQotICAgIGV4cGxpY2l0IHNwX3R5cGVpbmZvKCBjaGFyIGNvbnN0ICogbmFtZSApOiBuYW1lXyggbmFtZSApCi0gICAgewotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PSggc3BfdHlwZWluZm8gY29uc3QmIHJocyApIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdGhpcyA9PSAmcmhzOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPSggc3BfdHlwZWluZm8gY29uc3QmIHJocyApIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdGhpcyAhPSAmcmhzOwotICAgIH0KLQotICAgIGJvb2wgYmVmb3JlKCBzcF90eXBlaW5mbyBjb25zdCYgcmhzICkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Omxlc3M8IHNwX3R5cGVpbmZvIGNvbnN0KiA+KCkoIHRoaXMsICZyaHMgKTsKLSAgICB9Ci0KLSAgICBjaGFyIGNvbnN0KiBuYW1lKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBuYW1lXzsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgc3BfdHlwZWlkXwotewotICAgIHN0YXRpYyBzcF90eXBlaW5mbyB0aV87Ci0KLSAgICBzdGF0aWMgY2hhciBjb25zdCAqIG5hbWUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIE5ETkJPT1NUX0NVUlJFTlRfRlVOQ1RJT047Ci0gICAgfQotfTsKLQotI2lmIGRlZmluZWQoX19TVU5QUk9fQ0MpCi0vLyBzZWUgIzQxOTksIHRoZSBTdW4gU3R1ZGlvIGNvbXBpbGVyIGdldHMgY29uZnVzZWQgYWJvdXQgc3RhdGljIGluaXRpYWxpemF0aW9uIAotLy8gY29uc3RydWN0b3IgYXJndW1lbnRzLiBCdXQgYW4gYXNzaWdubWVudCB3b3JrcyBqdXN0IGZpbmUuIAotdGVtcGxhdGU8Y2xhc3MgVD4gc3BfdHlwZWluZm8gc3BfdHlwZWlkXzwgVCA+Ojp0aV8gPSBzcF90eXBlaWRfPCBUID46Om5hbWUoKTsKLSNlbHNlCi10ZW1wbGF0ZTxjbGFzcyBUPiBzcF90eXBlaW5mbyBzcF90eXBlaWRfPCBUID46OnRpXyhzcF90eXBlaWRfPCBUID46Om5hbWUoKSk7Ci0jZW5kaWYKLQotdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNwX3R5cGVpZF88IFQgJiA+OiBzcF90eXBlaWRfPCBUID4KLXsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBzcF90eXBlaWRfPCBUIGNvbnN0ID46IHNwX3R5cGVpZF88IFQgPgotewotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNwX3R5cGVpZF88IFQgdm9sYXRpbGUgPjogc3BfdHlwZWlkXzwgVCA+Ci17Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgc3BfdHlwZWlkXzwgVCBjb25zdCB2b2xhdGlsZSA+OiBzcF90eXBlaWRfPCBUID4KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZGVmaW5lIE5ETkJPT1NUX1NQX1RZUEVJRChUKSAobmRuYm9vc3Q6OmRldGFpbDo6c3BfdHlwZWlkXzxUPjo6dGlfKQotCi0jZWxzZQotCi0jaW5jbHVkZSA8dHlwZWluZm8+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLSNpZiBkZWZpbmVkKCBORE5CT09TVF9OT19TVERfVFlQRUlORk8gKQotCi10eXBlZGVmIDo6dHlwZV9pbmZvIHNwX3R5cGVpbmZvOwotCi0jZWxzZQotCi10eXBlZGVmIHN0ZDo6dHlwZV9pbmZvIHNwX3R5cGVpbmZvOwotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNkZWZpbmUgTkROQk9PU1RfU1BfVFlQRUlEKFQpIHR5cGVpZChUKQotCi0jZW5kaWYKLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX0RFVEFJTF9TUF9UWVBFSU5GT19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL3V0ZjhfY29kZWN2dF9mYWNldC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC91dGY4X2NvZGVjdnRfZmFjZXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzN2Q5MTMzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL3V0ZjhfY29kZWN2dF9mYWNldC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOTAgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChjKSAyMDAxIFJvbmFsZCBHYXJjaWEsIEluZGlhbmEgVW5pdmVyc2l0eSAoZ2FyY2lhQG9zbC5pdS5lZHUpCi0vLyBBbmRyZXcgTHVtc2RhaW5lLCBJbmRpYW5hIFVuaXZlcnNpdHkgKGx1bXNAb3NsLml1LmVkdSkuCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55LQotLy8gaW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1VURjhfQ09ERUNWVF9GQUNFVF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfVVRGOF9DT0RFQ1ZUX0ZBQ0VUX0hQUAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vLy8vLy8vLzEvLy8vLy8vLy8yLy8vLy8vLy8vMy8vLy8vLy8vLzQvLy8vLy8vLy81Ly8vLy8vLy8vNi8vLy8vLy8vLzcvLy8vLy8vLy84Ci0vLyB1dGY4X2NvZGVjdnRfZmFjZXQuaHBwCi0KLS8vIFRoaXMgaGVhZGVyIGRlZmluZXMgY2xhc3MgdXRmOF9jb2RlY3Z0X2ZhY2V0LCBkZXJpdmVkIGZybyAKLS8vIHN0ZDo6Y29kZWN2dDx3Y2hhcl90LCBjaGFyPiwgd2hpY2ggY2FuIGJlIHVzZWQgdG8gY29udmVydCB1dGY4IGRhdGEgaW4KLS8vIGZpbGVzIGludG8gd2NoYXJfdCBzdHJpbmdzIGluIHRoZSBhcHBsaWNhdGlvbi4KLS8vCi0vLyBUaGUgaGVhZGVyIGlzIE5PVCBTVEFOREFMT05FLCBhbmQgaXMgbm90IHRvIGJlIGluY2x1ZGVkIGJ5IHRoZSBVU0VSLgotLy8gVGhlcmUgYXJlIGF0IGxlYXN0IHR3byBsaWJyYXJpZXMgd2hpY2ggd2FudCB0byB1c2UgdGhpcyBmdW5jdGlvbmFsaXR5LCBhbmQKLS8vIHdlIHdhbnQgdG8gYXZvaWQgY29kZSBkdXBsaWNhdGlvbi4gSXQgd291bGQgYmUgcG9zc2libGUgdG8gY3JlYXRlIHV0ZjgKLS8vIGxpYnJhcnksIGJ1dDoKLS8vIC0gdGhpcyByZXF1aXJlcyByZXZpZXcgcHJvY2VzcyBmaXJzdAotLy8gLSBpbiB0aGUgY2FzZSwgd2hlbiBsaW5raW5nIHRoZSBhIGxpYnJhcnkgd2hpY2ggdXNlcyB1dGY4IAotLy8gICAoc2F5ICdwcm9ncmFtX29wdGlvbnMnKSwgdXNlciBzaG91bGQgYWxzbyBsaW5rIHRvIHRoZSB1dGY4IGxpYnJhcnkuCi0vLyAgIFRoaXMgc2VlbXMgaW5jb252ZW5pZW50LCBhbmQgYXNraW5nIGEgdXNlciB0byBsaW5rIHRvIGFuIHVucmV2aWV2ZWQgCi0vLyAgIGxpYnJhcnkgaXMgc3RyYW5nZS4gCi0vLyBVbnRpbCB0aGUgYWJvdmUgcG9pbnRzIGFyZSBmaXhlZCwgYSBsaWJyYXJ5IHdoaWNoIHdhbnRzIHRvIHVzZSB1dGY4IG11c3Q6Ci0vLyAtIGluY2x1ZGUgdGhpcyBoZWFkZXIgZnJvbSBvbmUgb2YgaXQncyBoZWFkZXJzIG9yIHNvdXJjZXMKLS8vIC0gaW5jbHVkZSB0aGUgY29ycmVzcG9uZGluZyAuY3BwIGZpbGUgZnJvbSBvbmUgb2YgdGhlIHNvdXJjZXMKLS8vIC0gYmVmb3JlIGluY2x1ZGluZyBlaXRoZXIgZmlsZSwgdGhlIGxpYnJhcnkgbXVzdCBkZWZpbmUKLS8vICAgLSBORE5CT09TVF9VVEY4X0JFR0lOX05BTUVTUEFDRSB0byB0aGUgbmFtZXNwYWNlIGRlY2xhcmF0aW9uIHRoYXQgbXVzdCBiZSB1c2VkCi0vLyAgIC0gTkROQk9PU1RfVVRGOF9FTkRfTkFNRVNQQUNFIHRvIHRoZSBjb2RlIHRvIGNsb3NlIHRoZSBwcmV2aW91cyBuYW1lc3BhY2UKLS8vICAgLSBkZWNsYXJhdGlvbi4KLS8vICAgLSBORE5CT09TVF9VVEY4X0RFQ0wgLS0gdG8gdGhlIGNvZGUgd2hpY2ggbXVzdCBiZSB1c2VkIGZvciBhbGwgJ2V4cG9ydGFibGUnCi0vLyAgICAgc3ltYm9scy4KLS8vCi0vLyBGb3IgZXhhbXBsZSwgcHJvZ3JhbV9vcHRpb25zIGxpYnJhcnkgbWlnaHQgY29udGFpbjoKLS8vICAgICNkZWZpbmUgTkROQk9PU1RfVVRGOF9CRUdJTl9OQU1FU1BBQ0UgPGJhY2tzbGFzaCBjaGFyYWN0ZXI+IAotLy8gICAgICAgICAgICAgbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHByb2dyYW1fb3B0aW9ucyB7Ci0vLyAgICAjZGVmaW5lIE5ETkJPT1NUX1VURjhfRU5EX05BTUVTUEFDRSB9fQotLy8gICAgI2RlZmluZSBORE5CT09TVF9VVEY4X0RFQ0wgTkROQk9PU1RfUFJPR1JBTV9PUFRJT05TX0RFQ0wKLS8vICAgICNpbmNsdWRlICIuLi8uLi9kZXRhaWwvdXRmOC91dGY4X2NvZGVjdnQuY3BwIgotLy8KLS8vIEVzc2VudGlhbGx5LCBlYWNoIGxpYnJhcnkgd2lsbCBoYXZlIGl0cyBvd24gY29weSBvZiB1dGY4IGNvZGUsIGluCi0vLyBkaWZmZXJlbnQgbmFtZXNwYWNlcy4gCi0KLS8vIE5vdGU6KFJvYmVydCBSYW1leSkuICBJIGhhdmUgbWFkZSB0aGUgZm9sbG93aW5nIGFsdGVyYXRpb25zIGluIHRoZSBvcmlnaW5hbAotLy8gY29kZS4KLS8vIGEpIFJlbmRlcmVkIHV0ZjhfY29kZWN2dDx3Y2hhcl90LCBjaGFyPiAgd2l0aCB1c2luZyB0ZW1wbGF0ZXMKLS8vIGIpIE1vdmUgbG9uZ2VyIGZ1bmN0aW9ucyBvdXRzaWRlIGNsYXNzIGRlZmluaXRpb24gdG8gcHJldmVudCBpbmxpbmluZwotLy8gYW5kIG1ha2UgY29kZSBzbWFsbGVyCi0vLyBjKSBhZGRlZCBvbiBhIGRlcml2ZWQgY2xhc3MgdG8gcGVybWl0IHRyYW5zbGF0aW9uIHRvL2Zyb20gY3VycmVudAotLy8gbG9jYWxlIHRvIHV0ZjgKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgdXBkYXRlcywgZG9jdW1lbnRhdGlvbiwgYW5kIHJldmlzaW9uIGhpc3RvcnkuCi0KLS8vIGFyY2hpdmVzIHN0b3JlZCBhcyB0ZXh0IC0gbm90ZSB0aGVzZSBhciB0ZW1wbGF0ZWQgb24gdGhlIGJhc2ljCi0vLyBzdHJlYW0gdGVtcGxhdGVzIHRvIGFjY29tbW9kYXRlIHdpZGUgKGFuZCBvdGhlcj8pIGtpbmQgb2YgY2hhcmFjdGVycwotLy8KLS8vIG5vdGUgdGhlIGZhY3QgdGhhdCBvbiBsaWJyYXJpZXMgd2l0aG91dCB3aWRlIGNoYXJhY3RlcnMsIG9zdHJlYW0gaXMKLS8vIGlzIG5vdCBhIHNwZWNpYWxpemF0aW9uIG9mIGJhc2ljX29zdHJlYW0gd2hpY2ggaW4gZmFjdCBpcyBub3QgZGVmaW5lZAotLy8gaW4gc3VjaCBjYXNlcy4gICBTbyB3ZSBjYW4ndCB1c2UgYmFzaWNfb3N0cmVhbTxPU3RyZWFtOjpjaGFyX3R5cGU+IGJ1dCByYXRoZXIKLS8vIHVzZSB0d28gdGVtcGxhdGUgcGFyYW1ldGVycwotLy8KLS8vIHV0ZjhfY29kZWN2dF9mYWNldAotLy8gICBUaGlzIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIGEgc3RkOjpjb2RlY3Z0IGZhY2V0IGZvciB0cmFuc2xhdGluZyAKLS8vICAgZnJvbSBVVEYtOCBleHRlcm5hbGx5IHRvIFVDUy00LiAgTm90ZSB0aGF0IHRoaXMgaXMgbm90IHRpZWQgdG8KLS8vICAgYW55IHNwZWNpZmljIHR5cGVzIGluIG9yZGVyIHRvIGFsbG93IGN1c3RvbWl6YXRpb24gb24gcGxhdGZvcm1zCi0vLyAgIHdoZXJlIHdjaGFyX3QgaXMgbm90IGJpZyBlbm91Z2guCi0vLwotLy8gTk9URVM6ICBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBqdW1wcyB0aHJvdWdoIHNvbWUgdW5wbGVhc2FudCBob29wcyBpbgotLy8gb3JkZXIgdG8gZGVhbCB3aXRoIHNpZ25lZCBjaGFyYWN0ZXIgdHlwZXMuICBBcyBhIHN0ZDo6Y29kZWN2dF9iYXNlOjpyZXN1bHQsCi0vLyBpdCBpcyBuZWNlc3NhcnkgIGZvciB0aGUgRXh0ZXJuVHlwZSB0byBiZSBjb252ZXJ0aWJsZSB0byB1bnNpZ25lZCAgY2hhci4KLS8vIEkgY2hvc2Ugbm90IHRvIHRpZSB0aGUgZXh0ZXJuX3R5cGUgZXhwbGljaXRseSB0byBjaGFyLiBCdXQgaWYgYW55IGNvbWJpbmF0aW9uCi0vLyBvZiB0eXBlcyBvdGhlciB0aGFuIDx3Y2hhcl90LGNoYXJfdD4gaXMgdXNlZCwgdGhlbiBzdGQ6OmNvZGVjdnQgbXVzdCBiZQotLy8gc3BlY2lhbGl6ZWQgb24gdGhvc2UgdHlwZXMgZm9yIHRoaXMgdG8gd29yay4KLQotI2luY2x1ZGUgPGxvY2FsZT4KLSNpbmNsdWRlIDxjd2NoYXI+ICAgLy8gZm9yIG1ic3RhdGVfdAotI2luY2x1ZGUgPGNzdGRkZWY+ICAvLyBmb3Igc3RkOjpzaXplX3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSkKLW5hbWVzcGFjZSBzdGQgewotICAgIHVzaW5nIDo6bWJzdGF0ZV90OwotICAgIHVzaW5nIDo6c2l6ZV90OwotfQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChfX01TTF9DUFBfXykgJiYgIWRlZmluZWQoX19MSUJDT01PX18pCi0gICAgI2RlZmluZSBORE5CT09TVF9DT0RFQ1ZUX0RPX0xFTkdUSF9DT05TVCBjb25zdAotI2Vsc2UKLSAgICAjZGVmaW5lIE5ETkJPT1NUX0NPREVDVlRfRE9fTEVOR1RIX0NPTlNUCi0jZW5kaWYKLQotLy8gbWF4aW11bSBsZW5naHQgb2YgYSBtdWx0aWJ5dGUgc3RyaW5nCi0jZGVmaW5lIE1CX0xFTkdUSF9NQVggOAotCi1ORE5CT09TVF9VVEY4X0JFR0lOX05BTUVTUEFDRQotCi1zdHJ1Y3QgTkROQk9PU1RfVVRGOF9ERUNMIHV0ZjhfY29kZWN2dF9mYWNldCA6Ci0gICAgcHVibGljIHN0ZDo6Y29kZWN2dDx3Y2hhcl90LCBjaGFyLCBzdGQ6Om1ic3RhdGVfdD4gIAotewotcHVibGljOgotICAgIGV4cGxpY2l0IHV0ZjhfY29kZWN2dF9mYWNldChzdGQ6OnNpemVfdCBub19sb2NhbGVfbWFuYWdlPTApCi0gICAgICAgIDogc3RkOjpjb2RlY3Z0PHdjaGFyX3QsIGNoYXIsIHN0ZDo6bWJzdGF0ZV90Pihub19sb2NhbGVfbWFuYWdlKSAKLSAgICB7fQotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgc3RkOjpjb2RlY3Z0X2Jhc2U6OnJlc3VsdCBkb19pbigKLSAgICAgICAgc3RkOjptYnN0YXRlX3QmIHN0YXRlLCAKLSAgICAgICAgY29uc3QgY2hhciAqIGZyb20sCi0gICAgICAgIGNvbnN0IGNoYXIgKiBmcm9tX2VuZCwgCi0gICAgICAgIGNvbnN0IGNoYXIgKiAmIGZyb21fbmV4dCwKLSAgICAgICAgd2NoYXJfdCAqIHRvLCAKLSAgICAgICAgd2NoYXJfdCAqIHRvX2VuZCwgCi0gICAgICAgIHdjaGFyX3QqJiB0b19uZXh0Ci0gICAgKSBjb25zdDsKLQotICAgIHZpcnR1YWwgc3RkOjpjb2RlY3Z0X2Jhc2U6OnJlc3VsdCBkb19vdXQoCi0gICAgICAgIHN0ZDo6bWJzdGF0ZV90ICYgc3RhdGUsIGNvbnN0IHdjaGFyX3QgKiBmcm9tLAotICAgICAgICBjb25zdCB3Y2hhcl90ICogZnJvbV9lbmQsIGNvbnN0IHdjaGFyX3QqICAmIGZyb21fbmV4dCwKLSAgICAgICAgY2hhciAqIHRvLCBjaGFyICogdG9fZW5kLCBjaGFyICogJiB0b19uZXh0Ci0gICAgKSBjb25zdDsKLQotICAgIGJvb2wgaW52YWxpZF9jb250aW51aW5nX29jdGV0KHVuc2lnbmVkIGNoYXIgb2N0ZXRfMSkgY29uc3QgewotICAgICAgICByZXR1cm4gKG9jdGV0XzEgPCAweDgwfHwgMHhiZjwgb2N0ZXRfMSk7Ci0gICAgfQotCi0gICAgYm9vbCBpbnZhbGlkX2xlYWRpbmdfb2N0ZXQodW5zaWduZWQgY2hhciBvY3RldF8xKSAgIGNvbnN0IHsKLSAgICAgICAgcmV0dXJuICgweDdmIDwgb2N0ZXRfMSAmJiBvY3RldF8xIDwgMHhjMCkgfHwKLSAgICAgICAgICAgIChvY3RldF8xID4gMHhmZCk7Ci0gICAgfQotCi0gICAgLy8gY29udGludWluZyBvY3RldHMgPSBvY3RldHMgZXhjZXB0IGZvciB0aGUgbGVhZGluZyBvY3RldAotICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgZ2V0X2NvbnRfb2N0ZXRfY291bnQodW5zaWduZWQgICBjaGFyIGxlYWRfb2N0ZXQpIHsKLSAgICAgICAgcmV0dXJuIGdldF9vY3RldF9jb3VudChsZWFkX29jdGV0KSAtIDE7Ci0gICAgfQotCi0gICAgc3RhdGljIHVuc2lnbmVkIGludCBnZXRfb2N0ZXRfY291bnQodW5zaWduZWQgY2hhciAgIGxlYWRfb2N0ZXQpOwotCi0gICAgLy8gSG93IG1hbnkgImNvbnRpbnVpbmcgb2N0ZXRzIiB3aWxsIGJlIG5lZWRlZCBmb3IgdGhpcyB3b3JkCi0gICAgLy8gPT0gICB0b3RhbCBvY3RldHMgLSAxLgotICAgIGludCBnZXRfY29udF9vY3RldF9vdXRfY291bnQod2NoYXJfdCB3b3JkKSBjb25zdCA7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgZG9fYWx3YXlzX25vY29udigpIGNvbnN0IHRocm93KCkgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIC8vIFVURi04IGlzbid0IHJlYWxseSBzdGF0ZWZ1bCBzaW5jZSB3ZSByZXdpbmQgb24gcGFydGlhbCBjb252ZXJzaW9ucwotICAgIHZpcnR1YWwgc3RkOjpjb2RlY3Z0X2Jhc2U6OnJlc3VsdCBkb191bnNoaWZ0KAotICAgICAgICBzdGQ6Om1ic3RhdGVfdCYsCi0gICAgICAgIGNoYXIgKiBmcm9tLAotICAgICAgICBjaGFyICogLyp0byovLAotICAgICAgICBjaGFyICogJiBuZXh0Ci0gICAgKSBjb25zdCAKLSAgICB7Ci0gICAgICAgIG5leHQgPSBmcm9tOwotICAgICAgICByZXR1cm4gb2s7Ci0gICAgfQotCi0gICAgdmlydHVhbCBpbnQgZG9fZW5jb2RpbmcoKSBjb25zdCB0aHJvdygpIHsKLSAgICAgICAgY29uc3QgaW50IHZhcmlhYmxlX2J5dGVfZXh0ZXJuYWxfZW5jb2Rpbmc9MDsKLSAgICAgICAgcmV0dXJuIHZhcmlhYmxlX2J5dGVfZXh0ZXJuYWxfZW5jb2Rpbmc7Ci0gICAgfQotCi0gICAgLy8gSG93IG1hbnkgY2hhciBvYmplY3RzIGNhbiBJIHByb2Nlc3MgdG8gZ2V0IDw9IG1heF9saW1pdAotICAgIC8vIHdjaGFyX3Qgb2JqZWN0cz8KLSAgICB2aXJ0dWFsIGludCBkb19sZW5ndGgoCi0gICAgICAgIE5ETkJPT1NUX0NPREVDVlRfRE9fTEVOR1RIX0NPTlNUIHN0ZDo6bWJzdGF0ZV90ICYsCi0gICAgICAgIGNvbnN0IGNoYXIgKiBmcm9tLAotICAgICAgICBjb25zdCBjaGFyICogZnJvbV9lbmQsIAotICAgICAgICBzdGQ6OnNpemVfdCBtYXhfbGltaXQKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fSUJNQ1BQX18sIE5ETkJPT1NUX1RFU1RFRF9BVCg2MDApKQotICAgICAgICApIGNvbnN0IHRocm93KCk7Ci0jZWxzZQotICAgICAgICApIGNvbnN0OwotI2VuZGlmCi0KLSAgICAvLyBMYXJnZXN0IHBvc3NpYmxlIHZhbHVlIGRvX2xlbmd0aChzdGF0ZSxmcm9tLGZyb21fZW5kLDEpIGNvdWxkIHJldHVybi4KLSAgICB2aXJ0dWFsIGludCBkb19tYXhfbGVuZ3RoKCkgY29uc3QgdGhyb3cgKCkgewotICAgICAgICByZXR1cm4gNjsgLy8gbGFyZ2VzdCBVVEYtOCBlbmNvZGluZyBvZiBhIFVDUy00IGNoYXJhY3RlcgotICAgIH0KLX07Ci0KLU5ETkJPT1NUX1VURjhfRU5EX05BTUVTUEFDRQotCi0jZW5kaWYgLy8gTkROQk9PU1RfVVRGOF9DT0RFQ1ZUX0ZBQ0VUX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvdXRmOF9jb2RlY3Z0X2ZhY2V0LmlwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL3V0ZjhfY29kZWN2dF9mYWNldC5pcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwZTg5M2QuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvdXRmOF9jb2RlY3Z0X2ZhY2V0LmlwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4NSArMCwwIEBACi0vLy8vLy8vLy8xLy8vLy8vLy8vMi8vLy8vLy8vLzMvLy8vLy8vLy80Ly8vLy8vLy8vNS8vLy8vLy8vLzYvLy8vLy8vLy83Ly8vLy8vLy8vOAotLy8gdXRmOF9jb2RlY3Z0X2ZhY2V0LmlwcAotCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDEgUm9uYWxkIEdhcmNpYSwgSW5kaWFuYSBVbml2ZXJzaXR5IChnYXJjaWFAb3NsLml1LmVkdSkKLS8vIEFuZHJldyBMdW1zZGFpbmUsIEluZGlhbmEgVW5pdmVyc2l0eSAobHVtc0Bvc2wuaXUuZWR1KS4gCi0vLyBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyBQbGVhc2Ugc2VlIHRoZSBjb21tZW50cyBpbiA8bmRuYm9vc3QvZGV0YWlsL3V0ZjhfY29kZWN2dF9mYWNldC5ocHA+IHRvCi0vLyBsZWFybiBob3cgdGhpcyBmaWxlIHNob3VsZCBiZSB1c2VkLgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3V0ZjhfY29kZWN2dF9mYWNldC5ocHA+Ci0KLSNpbmNsdWRlIDxjc3RkbGliPiAvLyBmb3IgbXVsdGktYnl0ZSBjb252ZXJzb24gcm91dGluZXMKLSNpbmNsdWRlIDxjYXNzZXJ0PgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbGltaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0vLyBJZiB3ZSBkb24ndCBoYXZlIHdzdHJpbmcsIHRoZW4gVW5pY29kZSBzdXBwb3J0IAotLy8gaXMgbm90IGF2YWlsYWJsZSBhbnl3YXksIHNvIHdlIGRvbid0IG5lZWQgdG8gZXZlbgotLy8gY29tcGlsZXIgdGhpcyBmaWxlLiBUaGlzIGFsc28gZml4ZXMgdGhlIHByb2JsZW0KLS8vIHdpdGggbWluZ3csIHdoaWNoIGNhbiBjb21waWxlIHRoaXMgZmlsZSwgYnV0IHdpbGwKLS8vIGdlbmVyYXRlIGxpbmsgZXJyb3Igd2hlbiBidWlsZGluZyBETEwuCi0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9XU1RSSU5HCi0KLU5ETkJPT1NUX1VURjhfQkVHSU5fTkFNRVNQQUNFCi0KLS8vLy8vLy8vLzEvLy8vLy8vLy8yLy8vLy8vLy8vMy8vLy8vLy8vLzQvLy8vLy8vLy81Ly8vLy8vLy8vNi8vLy8vLy8vLzcvLy8vLy8vLy84Ci0vLyBpbXBsZW1lbnRhdGlvbiBmb3Igd2NoYXJfdAotCi0vLyBUcmFuc2xhdGUgaW5jb21pbmcgVVRGLTggaW50byBVQ1MtNAotc3RkOjpjb2RlY3Z0X2Jhc2U6OnJlc3VsdCB1dGY4X2NvZGVjdnRfZmFjZXQ6OmRvX2luKAotICAgIHN0ZDo6bWJzdGF0ZV90JiAvKnN0YXRlKi8sIAotICAgIGNvbnN0IGNoYXIgKiBmcm9tLAotICAgIGNvbnN0IGNoYXIgKiBmcm9tX2VuZCwgCi0gICAgY29uc3QgY2hhciAqICYgZnJvbV9uZXh0LAotICAgIHdjaGFyX3QgKiB0bywgCi0gICAgd2NoYXJfdCAqIHRvX2VuZCwgCi0gICAgd2NoYXJfdCAqICYgdG9fbmV4dAotKSBjb25zdCB7Ci0gICAgLy8gQmFzaWMgYWxnb3JpdGhtOiAgVGhlIGZpcnN0IG9jdGV0IGRldGVybWluZXMgaG93IG1hbnkKLSAgICAvLyBvY3RldHMgdG90YWwgbWFrZSB1cCB0aGUgVUNTLTQgY2hhcmFjdGVyLiAgVGhlIHJlbWFpbmluZwotICAgIC8vICJjb250aW51aW5nIG9jdGV0cyIgYWxsIGJlZ2luIHdpdGggIjEwIi4gVG8gY29udmVydCwgc3VidHJhY3QKLSAgICAvLyB0aGUgYW1vdW50IHRoYXQgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2Ygb2N0ZXRzIGZyb20gdGhlIGZpcnN0Ci0gICAgLy8gb2N0ZXQuICBTdWJ0cmFjdCAweDgwICgxMDAwIDAwMDApIGZyb20gZWFjaCBjb250aW51aW5nIG9jdGV0LAotICAgIC8vIHRoZW4gbWFzaCB0aGUgd2hvbGUgbG90IHRvZ2V0aGVyLiAgTm90ZSB0aGF0IGVhY2ggY29udGludWluZwotICAgIC8vIG9jdGV0IG9ubHkgdXNlcyA2IGJpdHMgYXMgdW5pcXVlIHZhbHVlcywgc28gb25seSBzaGlmdCBieQotICAgIC8vIG11bHRpcGxlcyBvZiA2IHRvIGNvbWJpbmUuCi0gICAgd2hpbGUgKGZyb20gIT0gZnJvbV9lbmQgJiYgdG8gIT0gdG9fZW5kKSB7Ci0KLSAgICAgICAgLy8gRXJyb3IgY2hlY2tpbmcgICBvbiB0aGUgZmlyc3Qgb2N0ZXQKLSAgICAgICAgaWYgKGludmFsaWRfbGVhZGluZ19vY3RldCgqZnJvbSkpewotICAgICAgICAgICAgZnJvbV9uZXh0ID0gZnJvbTsKLSAgICAgICAgICAgIHRvX25leHQgPSB0bzsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6OmNvZGVjdnRfYmFzZTo6ZXJyb3I7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBUaGUgZmlyc3Qgb2N0ZXQgaXMgICBhZGp1c3RlZCBieSBhIHZhbHVlIGRlcGVuZGVudCB1cG9uIAotICAgICAgICAvLyB0aGUgbnVtYmVyICAgb2YgImNvbnRpbnVpbmcgb2N0ZXRzIiBlbmNvZGluZyB0aGUgY2hhcmFjdGVyCi0gICAgICAgIGNvbnN0ICAgaW50IGNvbnRfb2N0ZXRfY291bnQgPSBnZXRfY29udF9vY3RldF9jb3VudCgqZnJvbSk7Ci0gICAgICAgIGNvbnN0ICAgd2NoYXJfdCBvY3RldDFfbW9kaWZpZXJfdGFibGVbXSA9ICAgewotICAgICAgICAgICAgMHgwMCwgMHhjMCwgMHhlMCwgMHhmMCwgMHhmOCwgMHhmYwotICAgICAgICB9OwotCi0gICAgICAgIC8vIFRoZSB1bnNpZ25lZCBjaGFyIGNvbnZlcnNpb24gaXMgbmVjZXNzYXJ5IGluIGNhc2UgY2hhciBpcwotICAgICAgICAvLyBzaWduZWQgICAoSSBsZWFybmVkIHRoaXMgdGhlIGhhcmQgd2F5KQotICAgICAgICB3Y2hhcl90IHVjc19yZXN1bHQgPSAKLSAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKSgqZnJvbSsrKSAtIG9jdGV0MV9tb2RpZmllcl90YWJsZVtjb250X29jdGV0X2NvdW50XTsKLQotICAgICAgICAvLyBJbnZhcmlhbnRzICAgOiAKLSAgICAgICAgLy8gICAxKSBBdCB0aGUgc3RhcnQgb2YgdGhlIGxvb3AsICAgJ2knIGNvbnRpbnVpbmcgY2hhcmFjdGVycyBoYXZlIGJlZW4KLSAgICAgICAgLy8gICAgcHJvY2Vzc2VkIAotICAgICAgICAvLyAgIDIpICpmcm9tICAgcG9pbnRzIHRvIHRoZSBuZXh0IGNvbnRpbnVpbmcgY2hhcmFjdGVyIHRvIGJlIHByb2Nlc3NlZC4KLSAgICAgICAgaW50IGkgICA9IDA7Ci0gICAgICAgIHdoaWxlKGkgIT0gY29udF9vY3RldF9jb3VudCAmJiBmcm9tICE9IGZyb21fZW5kKSB7Ci0KLSAgICAgICAgICAgIC8vIEVycm9yIGNoZWNraW5nIG9uIGNvbnRpbnVpbmcgY2hhcmFjdGVycwotICAgICAgICAgICAgaWYgKGludmFsaWRfY29udGludWluZ19vY3RldCgqZnJvbSkpIHsKLSAgICAgICAgICAgICAgICBmcm9tX25leHQgICA9IGZyb207Ci0gICAgICAgICAgICAgICAgdG9fbmV4dCA9ICAgdG87Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Y29kZWN2dF9iYXNlOjplcnJvcjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdWNzX3Jlc3VsdCAqPSAoMSA8PCA2KTsgCi0KLSAgICAgICAgICAgIC8vIGVhY2ggY29udGludWluZyBjaGFyYWN0ZXIgaGFzIGFuIGV4dHJhICgxMHh4eHh4eCliIGF0dGFjaGVkIHRvIAotICAgICAgICAgICAgLy8gaXQgdGhhdCBtdXN0IGJlIHJlbW92ZWQuCi0gICAgICAgICAgICB1Y3NfcmVzdWx0ICs9ICh1bnNpZ25lZCBjaGFyKSgqZnJvbSsrKSAtIDB4ODA7Ci0gICAgICAgICAgICArK2k7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJZiAgIHRoZSBidWZmZXIgZW5kcyB3aXRoIGFuIGluY29tcGxldGUgdW5pY29kZSBjaGFyYWN0ZXIuLi4KLSAgICAgICAgaWYgKGZyb20gPT0gZnJvbV9lbmQgJiYgaSAgICE9IGNvbnRfb2N0ZXRfY291bnQpIHsKLSAgICAgICAgICAgIC8vIHJld2luZCAiZnJvbSIgdG8gYmVmb3JlIHRoZSBjdXJyZW50IGNoYXJhY3RlciB0cmFuc2xhdGlvbgotICAgICAgICAgICAgZnJvbV9uZXh0ID0gZnJvbSAtIChpKzEpOyAKLSAgICAgICAgICAgIHRvX25leHQgPSB0bzsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6OmNvZGVjdnRfYmFzZTo6cGFydGlhbDsKLSAgICAgICAgfQotICAgICAgICAqdG8rKyAgID0gdWNzX3Jlc3VsdDsKLSAgICB9Ci0gICAgZnJvbV9uZXh0ID0gZnJvbTsKLSAgICB0b19uZXh0ID0gdG87Ci0KLSAgICAvLyBXZXJlIHdlIGRvbmUgY29udmVydGluZyBvciBkaWQgd2UgcnVuIG91dCBvZiBkZXN0aW5hdGlvbiBzcGFjZT8KLSAgICBpZihmcm9tID09IGZyb21fZW5kKSByZXR1cm4gc3RkOjpjb2RlY3Z0X2Jhc2U6Om9rOwotICAgIGVsc2UgcmV0dXJuIHN0ZDo6Y29kZWN2dF9iYXNlOjpwYXJ0aWFsOwotfQotCi1zdGQ6OmNvZGVjdnRfYmFzZTo6cmVzdWx0IHV0ZjhfY29kZWN2dF9mYWNldDo6ZG9fb3V0KAotICAgIHN0ZDo6bWJzdGF0ZV90JiAvKnN0YXRlKi8sIAotICAgIGNvbnN0IHdjaGFyX3QgKiAgIGZyb20sCi0gICAgY29uc3Qgd2NoYXJfdCAqIGZyb21fZW5kLCAKLSAgICBjb25zdCB3Y2hhcl90ICogJiBmcm9tX25leHQsCi0gICAgY2hhciAqIHRvLCAKLSAgICBjaGFyICogdG9fZW5kLCAKLSAgICBjaGFyICogJiB0b19uZXh0Ci0pIGNvbnN0Ci17Ci0gICAgLy8gUkcgLSBjb25zaWRlciBtZXJnaW5nIHRoaXMgdGFibGUgd2l0aCB0aGUgb3RoZXIgb25lCi0gICAgY29uc3Qgd2NoYXJfdCBvY3RldDFfbW9kaWZpZXJfdGFibGVbXSA9IHsKLSAgICAgICAgMHgwMCwgMHhjMCwgMHhlMCwgMHhmMCwgMHhmOCwgMHhmYwotICAgIH07Ci0KLSAgICB3Y2hhcl90IG1heF93Y2hhciA9IChzdGQ6Om51bWVyaWNfbGltaXRzPHdjaGFyX3Q+OjptYXgpKCk7Ci0gICAgd2hpbGUgKGZyb20gIT0gZnJvbV9lbmQgJiYgdG8gIT0gdG9fZW5kKSB7Ci0KLSAgICAgICAgLy8gQ2hlY2sgZm9yIGludmFsaWQgVUNTLTQgY2hhcmFjdGVyCi0gICAgICAgIGlmICgqZnJvbSAgPiBtYXhfd2NoYXIpIHsKLSAgICAgICAgICAgIGZyb21fbmV4dCA9IGZyb207Ci0gICAgICAgICAgICB0b19uZXh0ID0gdG87Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpjb2RlY3Z0X2Jhc2U6OmVycm9yOwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IGNvbnRfb2N0ZXRfY291bnQgPSBnZXRfY29udF9vY3RldF9vdXRfY291bnQoKmZyb20pOwotCi0gICAgICAgIC8vIFJHICAtIGNvbW1lbnQgdGhpcyBmb3JtdWxhIGJldHRlcgotICAgICAgICBpbnQgc2hpZnRfZXhwb25lbnQgPSAoY29udF9vY3RldF9jb3VudCkgKiAgIDY7Ci0KLSAgICAgICAgLy8gUHJvY2VzcyB0aGUgZmlyc3QgY2hhcmFjdGVyCi0gICAgICAgICp0bysrID0gc3RhdGljX2Nhc3Q8Y2hhcj4ob2N0ZXQxX21vZGlmaWVyX3RhYmxlW2NvbnRfb2N0ZXRfY291bnRdICsKLSAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKSgqZnJvbSAvICgxIDw8IHNoaWZ0X2V4cG9uZW50KSkpOwotCi0gICAgICAgIC8vIFByb2Nlc3MgdGhlIGNvbnRpbnVhdGlvbiBjaGFyYWN0ZXJzIAotICAgICAgICAvLyBJbnZhcmlhbnRzOiBBdCAgIHRoZSBzdGFydCBvZiB0aGUgbG9vcDoKLSAgICAgICAgLy8gICAxKSAnaScgY29udGludWluZyBvY3RldHMgICBoYXZlIGJlZW4gZ2VuZXJhdGVkCi0gICAgICAgIC8vICAgMikgJyp0bycgICBwb2ludHMgdG8gdGhlIG5leHQgbG9jYXRpb24gdG8gcGxhY2UgYW4gb2N0ZXQKLSAgICAgICAgLy8gICAzKSBzaGlmdF9leHBvbmVudCBpcyAgIDYgbW9yZSB0aGFuIG5lZWRlZCBmb3IgdGhlIG5leHQgb2N0ZXQKLSAgICAgICAgaW50IGkgICA9IDA7Ci0gICAgICAgIHdoaWxlICAgKGkgIT0gY29udF9vY3RldF9jb3VudCAmJiB0byAhPSB0b19lbmQpIHsKLSAgICAgICAgICAgIHNoaWZ0X2V4cG9uZW50IC09IDY7Ci0gICAgICAgICAgICAqdG8rKyA9IHN0YXRpY19jYXN0PGNoYXI+KDB4ODAgKyAoKCpmcm9tIC8gKDEgPDwgc2hpZnRfZXhwb25lbnQpKSAlICgxIDw8IDYpKSk7Ci0gICAgICAgICAgICArK2k7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gSWYgICB3ZSBmaWxsZWQgdXAgdGhlIG91dCBidWZmZXIgYmVmb3JlIGVuY29kaW5nIHRoZSBjaGFyYWN0ZXIKLSAgICAgICAgaWYodG8gICA9PSB0b19lbmQgJiYgaSAhPSBjb250X29jdGV0X2NvdW50KSB7Ci0gICAgICAgICAgICBmcm9tX25leHQgPSBmcm9tOwotICAgICAgICAgICAgdG9fbmV4dCA9IHRvIC0gKGkrMSk7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpjb2RlY3Z0X2Jhc2U6OnBhcnRpYWw7Ci0gICAgICAgIH0KLSAgICAgICAgKytmcm9tOwotICAgIH0KLSAgICBmcm9tX25leHQgPSBmcm9tOwotICAgIHRvX25leHQgPSB0bzsKLSAgICAvLyBXZXJlIHdlIGRvbmUgb3IgZGlkIHdlIHJ1biBvdXQgb2YgZGVzdGluYXRpb24gc3BhY2UKLSAgICBpZihmcm9tID09IGZyb21fZW5kKSByZXR1cm4gc3RkOjpjb2RlY3Z0X2Jhc2U6Om9rOwotICAgIGVsc2UgcmV0dXJuIHN0ZDo6Y29kZWN2dF9iYXNlOjpwYXJ0aWFsOwotfQotCi0vLyBIb3cgbWFueSBjaGFyIG9iamVjdHMgY2FuIEkgcHJvY2VzcyB0byBnZXQgPD0gbWF4X2xpbWl0Ci0vLyB3Y2hhcl90IG9iamVjdHM/Ci1pbnQgdXRmOF9jb2RlY3Z0X2ZhY2V0Ojpkb19sZW5ndGgoCi0gICAgTkROQk9PU1RfQ09ERUNWVF9ET19MRU5HVEhfQ09OU1Qgc3RkOjptYnN0YXRlX3QgJiwKLSAgICBjb25zdCBjaGFyICogZnJvbSwKLSAgICBjb25zdCBjaGFyICogZnJvbV9lbmQsIAotICAgIHN0ZDo6c2l6ZV90IG1heF9saW1pdAotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19JQk1DUFBfXywgTkROQk9PU1RfVEVTVEVEX0FUKDYwMCkpCi0pIGNvbnN0IHRocm93KCkKLSNlbHNlCi0pIGNvbnN0Ci0jZW5kaWYKLXsgCi0gICAgLy8gUkcgLSB0aGlzIGNvZGUgaXMgY29uZnVzaW5nISAgSSBuZWVkIGEgYmV0dGVyIHdheSB0byBleHByZXNzIGl0LgotICAgIC8vIGFuZCB0ZXN0IGNhc2VzLgotCi0gICAgLy8gSW52YXJpYW50czoKLSAgICAvLyAxKSBsYXN0X29jdGV0X2NvdW50IGhhcyB0aGUgc2l6ZSBvZiB0aGUgbGFzdCBtZWFzdXJlZCBjaGFyYWN0ZXIKLSAgICAvLyAyKSBjaGFyX2NvdW50IGhvbGRzIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBzaG93biB0byBmaXQKLSAgICAvLyB3aXRoaW4gdGhlIGJvdW5kcyBzbyBmYXIgKG5vIGdyZWF0ZXIgdGhhbiBtYXhfbGltaXQpCi0gICAgLy8gMykgZnJvbV9uZXh0IHBvaW50cyB0byB0aGUgb2N0ZXQgJ2xhc3Rfb2N0ZXRfY291bnQnIGJlZm9yZSB0aGUKLSAgICAvLyBsYXN0IG1lYXN1cmVkIGNoYXJhY3Rlci4gIAotICAgIGludCBsYXN0X29jdGV0X2NvdW50PTA7Ci0gICAgc3RkOjpzaXplX3QgY2hhcl9jb3VudCA9IDA7Ci0gICAgY29uc3QgY2hhciogZnJvbV9uZXh0ID0gZnJvbTsKLSAgICAvLyBVc2UgIjwiIGJlY2F1c2UgdGhlIGJ1ZmZlciBtYXkgcmVwcmVzZW50IGluY29tcGxldGUgY2hhcmFjdGVycwotICAgIHdoaWxlIChmcm9tX25leHQrbGFzdF9vY3RldF9jb3VudCA8PSBmcm9tX2VuZCAmJiBjaGFyX2NvdW50IDw9IG1heF9saW1pdCkgewotICAgICAgICBmcm9tX25leHQgKz0gbGFzdF9vY3RldF9jb3VudDsKLSAgICAgICAgbGFzdF9vY3RldF9jb3VudCA9IChnZXRfb2N0ZXRfY291bnQoKmZyb21fbmV4dCkpOwotICAgICAgICArK2NoYXJfY291bnQ7Ci0gICAgfQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGZyb21fbmV4dC1mcm9tX2VuZCk7Ci19Ci0KLXVuc2lnbmVkIGludCB1dGY4X2NvZGVjdnRfZmFjZXQ6OmdldF9vY3RldF9jb3VudCgKLSAgICB1bnNpZ25lZCBjaGFyICAgbGVhZF9vY3RldAotKXsKLSAgICAvLyBpZiB0aGUgMC1iaXQgKE1TQikgaXMgMCwgdGhlbiAxIGNoYXJhY3RlcgotICAgIGlmIChsZWFkX29jdGV0IDw9IDB4N2YpIHJldHVybiAxOwotCi0gICAgLy8gT3RoZXJ3aXNlIHRoZSBjb3VudCBudW1iZXIgb2YgY29uc2VjdXRpdmUgMSBiaXRzIHN0YXJ0aW5nIGF0IE1TQgotLy8gICAgYXNzZXJ0KDB4YzAgPD0gbGVhZF9vY3RldCAmJiBsZWFkX29jdGV0IDw9IDB4ZmQpOwotCi0gICAgaWYgKDB4YzAgPD0gbGVhZF9vY3RldCAmJiBsZWFkX29jdGV0IDw9IDB4ZGYpIHJldHVybiAyOwotICAgIGVsc2UgaWYgKDB4ZTAgPD0gbGVhZF9vY3RldCAmJiBsZWFkX29jdGV0IDw9IDB4ZWYpIHJldHVybiAzOwotICAgIGVsc2UgaWYgKDB4ZjAgPD0gbGVhZF9vY3RldCAmJiBsZWFkX29jdGV0IDw9IDB4ZjcpIHJldHVybiA0OwotICAgIGVsc2UgaWYgKDB4ZjggPD0gbGVhZF9vY3RldCAmJiBsZWFkX29jdGV0IDw9IDB4ZmIpIHJldHVybiA1OwotICAgIGVsc2UgcmV0dXJuIDY7Ci19Ci1ORE5CT09TVF9VVEY4X0VORF9OQU1FU1BBQ0UKLQotbmFtZXNwYWNlIHsKLXRlbXBsYXRlPHN0ZDo6c2l6ZV90IHM+Ci1pbnQgZ2V0X2NvbnRfb2N0ZXRfb3V0X2NvdW50X2ltcGwod2NoYXJfdCB3b3JkKXsKLSAgICBpZiAod29yZCA8IDB4ODApIHsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIGlmICh3b3JkIDwgMHg4MDApIHsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQotICAgIHJldHVybiAyOwotfQotCi10ZW1wbGF0ZTw+Ci1pbnQgZ2V0X2NvbnRfb2N0ZXRfb3V0X2NvdW50X2ltcGw8ND4od2NoYXJfdCB3b3JkKXsKLSAgICBpZiAod29yZCA8IDB4ODApIHsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIGlmICh3b3JkIDwgMHg4MDApIHsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQotCi0gICAgLy8gTm90ZSB0aGF0IHRoZSBmb2xsb3dpbmcgY29kZSB3aWxsIGdlbmVyYXRlIHdhcm5pbmdzIG9uIHNvbWUgcGxhdGZvcm1zCi0gICAgLy8gd2hlcmUgd2NoYXJfdCBpcyBkZWZpbmVkIGFzIFVDUzIuICBUaGUgd2FybmluZ3MgYXJlIHN1cGVyZmx1b3VzIGFzIHRoZQotICAgIC8vIHNwZWNpYWxpemF0aW9uIGlzIG5ldmVyIGluc3RhbnRpdGlhdGVkIHdpdGggc3VjaCBjb21waWxlcnMsIGJ1dCB0aGlzCi0gICAgLy8gY2FuIGNhdXNlIHByb2JsZW1zIGlmIHdhcm5pbmdzIGFyZSBiZWluZyB0cmVhdGVkIGFzIGVycm9ycywgc28gd2UgZ3VhcmQKLSAgICAvLyBhZ2FpbnN0IHRoYXQuICBJbmNsdWRpbmcgPG5kbmJvb3N0L2RldGFpbC91dGY4X2NvZGVjdnRfZmFjZXQuaHBwPiBhcyB3ZSBkbwotICAgIC8vIHNob3VsZCBiZSBlbm91Z2ggdG8gZ2V0IFdDSEFSX01BWCBkZWZpbmVkLgotI2lmICFkZWZpbmVkKFdDSEFSX01BWCkKLSMgICBlcnJvciBXQ0hBUl9NQVggbm90IGRlZmluZWQhCi0jZW5kaWYKLSAgICAvLyBjb3BlIHdpdGggVkMrKyA3LjEgb3IgZWFybGllciBoYXZpbmcgaW52YWxpZCBXQ0hBUl9NQVgKLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA8PSAxMzEwIC8vIDcuMSBvciBlYXJsaWVyCi0gICAgcmV0dXJuIDI7Ci0jZWxpZiBXQ0hBUl9NQVggPiAweDEwMDAwCi0gICAgCi0gICBpZiAod29yZCA8IDB4MTAwMDApIHsKLSAgICAgICAgcmV0dXJuIDI7Ci0gICAgfQotICAgIGlmICh3b3JkIDwgMHgyMDAwMDApIHsKLSAgICAgICAgcmV0dXJuIDM7Ci0gICAgfQotICAgIGlmICh3b3JkIDwgMHg0MDAwMDAwKSB7Ci0gICAgICAgIHJldHVybiA0OwotICAgIH0KLSAgICByZXR1cm4gNTsKLSAgICAKLSNlbHNlCi0gICAgcmV0dXJuIDI7Ci0jZW5kaWYKLX0KLQotfSAvLyBuYW1lc3BhY2UgYW5vbnltb3VzCi0KLU5ETkJPT1NUX1VURjhfQkVHSU5fTkFNRVNQQUNFCi0vLyBIb3cgbWFueSAiY29udGludWluZyBvY3RldHMiIHdpbGwgYmUgbmVlZGVkIGZvciB0aGlzIHdvcmQKLS8vID09ICAgdG90YWwgb2N0ZXRzIC0gMS4KLWludCB1dGY4X2NvZGVjdnRfZmFjZXQ6OmdldF9jb250X29jdGV0X291dF9jb3VudCgKLSAgICB3Y2hhcl90IHdvcmQKLSkgY29uc3QgewotICAgIHJldHVybiBnZXRfY29udF9vY3RldF9vdXRfY291bnRfaW1wbDxzaXplb2Yod2NoYXJfdCk+KHdvcmQpOwotfQotTkROQk9PU1RfVVRGOF9FTkRfTkFNRVNQQUNFCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGY2YTkxNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI2NyArMCwwIEBACi0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMi4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSNpZm5kZWYgV09SS0FST1VORF9ORE5CT09TVF9EV0EyMDAyMTI2X0hQUAotIyBkZWZpbmUgV09SS0FST1VORF9ORE5CT09TVF9EV0EyMDAyMTI2X0hQUAotCi0vLyBDb21waWxlci9saWJyYXJ5IHZlcnNpb24gd29ya2Fyb3VuZCBtYWNybwotLy8KLS8vIFVzYWdlOgotLy8KLS8vICAgICAjaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0vLyAgICAgICAgLy8gd29ya2Fyb3VuZCBmb3IgZVZDNCBhbmQgVkM2Ci0vLyAgICAgICAgLi4uIC8vIHdvcmthcm91bmQgY29kZSBoZXJlCi0vLyAgICAgI2VuZGlmCi0vLwotLy8gV2hlbiBORE5CT09TVF9TVFJJQ1RfQ09ORklHIGlzIGRlZmluZWQsIGV4cGFuZHMgdG8gMC4gT3RoZXJ3aXNlLCB0aGUKLS8vIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgdW5kZWZpbmVkIG9yIGV4cGFuZCB0byBhIG51bWVyaWMKLS8vIHZhbHVlLiBUaGUgYWJvdmUgZXhwYW5kcyB0bzoKLS8vCi0vLyAgICAgKE5ETkJPT1NUX01TVkMpICE9IDAgJiYgKE5ETkJPT1NUX01TVkMpIDwgMTMwMAotLy8KLS8vIFdoZW4gdXNlZCBmb3Igd29ya2Fyb3VuZHMgdGhhdCBhcHBseSB0byB0aGUgbGF0ZXN0IGtub3duIHZlcnNpb24gCi0vLyBhbmQgYWxsIGVhcmxpZXIgdmVyc2lvbnMgb2YgYSBjb21waWxlciwgdGhlIGZvbGxvd2luZyBjb252ZW50aW9uIAotLy8gc2hvdWxkIGJlIG9ic2VydmVkOgotLy8KLS8vICAgICAjaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCBORE5CT09TVF9URVNURURfQVQoMTMwMSkpCi0vLwotLy8gVGhlIHZlcnNpb24gbnVtYmVyIGluIHRoaXMgY2FzZSBjb3JyZXNwb25kcyB0byB0aGUgbGFzdCB2ZXJzaW9uIGluCi0vLyB3aGljaCB0aGUgd29ya2Fyb3VuZCB3YXMga25vd24gdG8gaGF2ZSBiZWVuIHJlcXVpcmVkLiBXaGVuCi0vLyBORE5CT09TVF9ERVRFQ1RfT1VUREFURURfV09SS0FST1VORFMgaXMgbm90IHRoZSBkZWZpbmVkLCB0aGUgbWFjcm8KLS8vIE5ETkJPT1NUX1RFU1RFRF9BVCh4KSBleHBhbmRzIHRvICIhPSAwIiwgd2hpY2ggZWZmZWN0aXZlbHkgYWN0aXZhdGVzCi0vLyB0aGUgd29ya2Fyb3VuZCBmb3IgYW55IHZlcnNpb24gb2YgdGhlIGNvbXBpbGVyLiBXaGVuCi0vLyBORE5CT09TVF9ERVRFQ1RfT1VUREFURURfV09SS0FST1VORFMgaXMgZGVmaW5lZCwgYSBjb21waWxlciB3YXJuaW5nIG9yCi0vLyBlcnJvciB3aWxsIGJlIGlzc3VlZCBpZiB0aGUgY29tcGlsZXIgdmVyc2lvbiBleGNlZWRzIHRoZSBhcmd1bWVudAotLy8gdG8gTkROQk9PU1RfVEVTVEVEX0FUKCkuICBUaGlzIGNhbiBiZSB1c2VkIHRvIGxvY2F0ZSB3b3JrYXJvdW5kcyB3aGljaAotLy8gbWF5IGJlIG9ic29sZXRlZCBieSBuZXdlciB2ZXJzaW9ucy4KLQotIyBpZm5kZWYgTkROQk9PU1RfU1RSSUNUX0NPTkZJRwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotI2lmbmRlZiBfX0JPUkxBTkRDX18KLSNkZWZpbmUgX19CT1JMQU5EQ19fX1dPUktBUk9VTkRfR1VBUkQgMQotI2Vsc2UKLSNkZWZpbmUgX19CT1JMQU5EQ19fX1dPUktBUk9VTkRfR1VBUkQgMAotI2VuZGlmCi0jaWZuZGVmIF9fQ09ERUdFQVJDX18KLSNkZWZpbmUgX19DT0RFR0VBUkNfX19XT1JLQVJPVU5EX0dVQVJEIDEKLSNlbHNlCi0jZGVmaW5lIF9fQ09ERUdFQVJDX19fV09SS0FST1VORF9HVUFSRCAwCi0jZW5kaWYKLSNpZm5kZWYgX01TQ19WRVIKLSNkZWZpbmUgX01TQ19WRVJfV09SS0FST1VORF9HVUFSRCAxCi0jZWxzZQotI2RlZmluZSBfTVNDX1ZFUl9XT1JLQVJPVU5EX0dVQVJEIDAKLSNlbmRpZgotI2lmbmRlZiBfTVNDX0ZVTExfVkVSCi0jZGVmaW5lIF9NU0NfRlVMTF9WRVJfV09SS0FST1VORF9HVUFSRCAxCi0jZWxzZQotI2RlZmluZSBfTVNDX0ZVTExfVkVSX1dPUktBUk9VTkRfR1VBUkQgMAotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX01TVkMKLSNkZWZpbmUgTkROQk9PU1RfTVNWQ19XT1JLQVJPVU5EX0dVQVJEIDEKLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX01TVkNfV09SS0FST1VORF9HVUFSRCAwCi0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfTVNWQ19GVUxMX1ZFUgotI2RlZmluZSBORE5CT09TVF9NU1ZDX0ZVTExfVkVSX1dPUktBUk9VTkRfR1VBUkQgMQotI2Vsc2UKLSNkZWZpbmUgTkROQk9PU1RfTVNWQ19GVUxMX1ZFUl9XT1JLQVJPVU5EX0dVQVJEIDAKLSNlbmRpZgotI2lmbmRlZiBfX0dOVUNfXwotI2RlZmluZSBfX0dOVUNfX19XT1JLQVJPVU5EX0dVQVJEIDEKLSNlbHNlCi0jZGVmaW5lIF9fR05VQ19fX1dPUktBUk9VTkRfR1VBUkQgMAotI2VuZGlmCi0jaWZuZGVmIF9fR05VQ19NSU5PUl9fCi0jZGVmaW5lIF9fR05VQ19NSU5PUl9fX1dPUktBUk9VTkRfR1VBUkQgMQotI2Vsc2UKLSNkZWZpbmUgX19HTlVDX01JTk9SX19fV09SS0FST1VORF9HVUFSRCAwCi0jZW5kaWYKLSNpZm5kZWYgX19HTlVDX1BBVENITEVWRUxfXwotI2RlZmluZSBfX0dOVUNfUEFUQ0hMRVZFTF9fX1dPUktBUk9VTkRfR1VBUkQgMQotI2Vsc2UKLSNkZWZpbmUgX19HTlVDX1BBVENITEVWRUxfX19XT1JLQVJPVU5EX0dVQVJEIDAKLSNlbmRpZgotI2lmbmRlZiBfX0lCTUNQUF9fCi0jZGVmaW5lIF9fSUJNQ1BQX19fV09SS0FST1VORF9HVUFSRCAxCi0jZWxzZQotI2RlZmluZSBfX0lCTUNQUF9fX1dPUktBUk9VTkRfR1VBUkQgMAotI2VuZGlmCi0jaWZuZGVmIF9fU1VOUFJPX0NDCi0jZGVmaW5lIF9fU1VOUFJPX0NDX1dPUktBUk9VTkRfR1VBUkQgMQotI2Vsc2UKLSNkZWZpbmUgX19TVU5QUk9fQ0NfV09SS0FST1VORF9HVUFSRCAwCi0jZW5kaWYKLSNpZm5kZWYgX19ERUNDWFhfVkVSCi0jZGVmaW5lIF9fREVDQ1hYX1ZFUl9XT1JLQVJPVU5EX0dVQVJEIDEKLSNlbHNlCi0jZGVmaW5lIF9fREVDQ1hYX1ZFUl9XT1JLQVJPVU5EX0dVQVJEIDAKLSNlbmRpZgotI2lmbmRlZiBfX01XRVJLU19fCi0jZGVmaW5lIF9fTVdFUktTX19fV09SS0FST1VORF9HVUFSRCAxCi0jZWxzZQotI2RlZmluZSBfX01XRVJLU19fX1dPUktBUk9VTkRfR1VBUkQgMAotI2VuZGlmCi0jaWZuZGVmIF9fRURHX18KLSNkZWZpbmUgX19FREdfX19XT1JLQVJPVU5EX0dVQVJEIDEKLSNlbHNlCi0jZGVmaW5lIF9fRURHX19fV09SS0FST1VORF9HVUFSRCAwCi0jZW5kaWYKLSNpZm5kZWYgX19FREdfVkVSU0lPTl9fCi0jZGVmaW5lIF9fRURHX1ZFUlNJT05fX19XT1JLQVJPVU5EX0dVQVJEIDEKLSNlbHNlCi0jZGVmaW5lIF9fRURHX1ZFUlNJT05fX19XT1JLQVJPVU5EX0dVQVJEIDAKLSNlbmRpZgotI2lmbmRlZiBfX0hQX2FDQwotI2RlZmluZSBfX0hQX2FDQ19XT1JLQVJPVU5EX0dVQVJEIDEKLSNlbHNlCi0jZGVmaW5lIF9fSFBfYUNDX1dPUktBUk9VTkRfR1VBUkQgMAotI2VuZGlmCi0jaWZuZGVmIF9faHB4c3RkOTgKLSNkZWZpbmUgX19ocHhzdGQ5OF9XT1JLQVJPVU5EX0dVQVJEIDEKLSNlbHNlCi0jZGVmaW5lIF9faHB4c3RkOThfV09SS0FST1VORF9HVUFSRCAwCi0jZW5kaWYKLSNpZm5kZWYgX0NSQVlDCi0jZGVmaW5lIF9DUkFZQ19XT1JLQVJPVU5EX0dVQVJEIDEKLSNlbHNlCi0jZGVmaW5lIF9DUkFZQ19XT1JLQVJPVU5EX0dVQVJEIDAKLSNlbmRpZgotI2lmbmRlZiBfX0RNQ19fCi0jZGVmaW5lIF9fRE1DX19fV09SS0FST1VORF9HVUFSRCAxCi0jZWxzZQotI2RlZmluZSBfX0RNQ19fX1dPUktBUk9VTkRfR1VBUkQgMAotI2VuZGlmCi0jaWZuZGVmIE1QV19DUExVUwotI2RlZmluZSBNUFdfQ1BMVVNfV09SS0FST1VORF9HVUFSRCAxCi0jZWxzZQotI2RlZmluZSBNUFdfQ1BMVVNfV09SS0FST1VORF9HVUFSRCAwCi0jZW5kaWYKLSNpZm5kZWYgX19DT01PX18KLSNkZWZpbmUgX19DT01PX19fV09SS0FST1VORF9HVUFSRCAxCi0jZWxzZQotI2RlZmluZSBfX0NPTU9fX19XT1JLQVJPVU5EX0dVQVJEIDAKLSNlbmRpZgotI2lmbmRlZiBfX0NPTU9fVkVSU0lPTl9fCi0jZGVmaW5lIF9fQ09NT19WRVJTSU9OX19fV09SS0FST1VORF9HVUFSRCAxCi0jZWxzZQotI2RlZmluZSBfX0NPTU9fVkVSU0lPTl9fX1dPUktBUk9VTkRfR1VBUkQgMAotI2VuZGlmCi0jaWZuZGVmIF9fSU5URUxfQ09NUElMRVIKLSNkZWZpbmUgX19JTlRFTF9DT01QSUxFUl9XT1JLQVJPVU5EX0dVQVJEIDEKLSNlbHNlCi0jZGVmaW5lIF9fSU5URUxfQ09NUElMRVJfV09SS0FST1VORF9HVUFSRCAwCi0jZW5kaWYKLSNpZm5kZWYgX19JQ0wKLSNkZWZpbmUgX19JQ0xfV09SS0FST1VORF9HVUFSRCAxCi0jZWxzZQotI2RlZmluZSBfX0lDTF9XT1JLQVJPVU5EX0dVQVJEIDAKLSNlbmRpZgotI2lmbmRlZiBfQ09NUElMRVJfVkVSU0lPTgotI2RlZmluZSBfQ09NUElMRVJfVkVSU0lPTl9XT1JLQVJPVU5EX0dVQVJEIDEKLSNlbHNlCi0jZGVmaW5lIF9DT01QSUxFUl9WRVJTSU9OX1dPUktBUk9VTkRfR1VBUkQgMAotI2VuZGlmCi0KLSNpZm5kZWYgX1JXU1REX1ZFUgotI2RlZmluZSBfUldTVERfVkVSX1dPUktBUk9VTkRfR1VBUkQgMQotI2Vsc2UKLSNkZWZpbmUgX1JXU1REX1ZFUl9XT1JLQVJPVU5EX0dVQVJEIDAKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SV1NURF9WRVIKLSNkZWZpbmUgTkROQk9PU1RfUldTVERfVkVSX1dPUktBUk9VTkRfR1VBUkQgMQotI2Vsc2UKLSNkZWZpbmUgTkROQk9PU1RfUldTVERfVkVSX1dPUktBUk9VTkRfR1VBUkQgMAotI2VuZGlmCi0jaWZuZGVmIF9fR0xJQkNQUF9fCi0jZGVmaW5lIF9fR0xJQkNQUF9fX1dPUktBUk9VTkRfR1VBUkQgMQotI2Vsc2UKLSNkZWZpbmUgX19HTElCQ1BQX19fV09SS0FST1VORF9HVUFSRCAwCi0jZW5kaWYKLSNpZm5kZWYgX0dMSUJDWFhfVVNFX0M5OV9GUF9NQUNST1NfRFlOQU1JQwotI2RlZmluZSBfR0xJQkNYWF9VU0VfQzk5X0ZQX01BQ1JPU19EWU5BTUlDX1dPUktBUk9VTkRfR1VBUkQgMQotI2Vsc2UKLSNkZWZpbmUgX0dMSUJDWFhfVVNFX0M5OV9GUF9NQUNST1NfRFlOQU1JQ19XT1JLQVJPVU5EX0dVQVJEIDAKLSNlbmRpZgotI2lmbmRlZiBfX1NHSV9TVExfUE9SVAotI2RlZmluZSBfX1NHSV9TVExfUE9SVF9XT1JLQVJPVU5EX0dVQVJEIDEKLSNlbHNlCi0jZGVmaW5lIF9fU0dJX1NUTF9QT1JUX1dPUktBUk9VTkRfR1VBUkQgMAotI2VuZGlmCi0jaWZuZGVmIF9TVExQT1JUX1ZFUlNJT04KLSNkZWZpbmUgX1NUTFBPUlRfVkVSU0lPTl9XT1JLQVJPVU5EX0dVQVJEIDEKLSNlbHNlCi0jZGVmaW5lIF9TVExQT1JUX1ZFUlNJT05fV09SS0FST1VORF9HVUFSRCAwCi0jZW5kaWYKLSNpZm5kZWYgX19MSUJDT01PX1ZFUlNJT05fXwotI2RlZmluZSBfX0xJQkNPTU9fVkVSU0lPTl9fX1dPUktBUk9VTkRfR1VBUkQgMQotI2Vsc2UKLSNkZWZpbmUgX19MSUJDT01PX1ZFUlNJT05fX19XT1JLQVJPVU5EX0dVQVJEIDAKLSNlbmRpZgotI2lmbmRlZiBfQ1BQTElCX1ZFUgotI2RlZmluZSBfQ1BQTElCX1ZFUl9XT1JLQVJPVU5EX0dVQVJEIDEKLSNlbHNlCi0jZGVmaW5lIF9DUFBMSUJfVkVSX1dPUktBUk9VTkRfR1VBUkQgMAotI2VuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfSU5URUxfQ1hYX1ZFUlNJT04KLSNkZWZpbmUgTkROQk9PU1RfSU5URUxfQ1hYX1ZFUlNJT05fV09SS0FST1VORF9HVUFSRCAxCi0jZWxzZQotI2RlZmluZSBORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTl9XT1JLQVJPVU5EX0dVQVJEIDAKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9JTlRFTF9XSU4KLSNkZWZpbmUgTkROQk9PU1RfSU5URUxfV0lOX1dPUktBUk9VTkRfR1VBUkQgMQotI2Vsc2UKLSNkZWZpbmUgTkROQk9PU1RfSU5URUxfV0lOX1dPUktBUk9VTkRfR1VBUkQgMAotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX0RJTktVTVdBUkVfU1RETElCCi0jZGVmaW5lIE5ETkJPT1NUX0RJTktVTVdBUkVfU1RETElCX1dPUktBUk9VTkRfR1VBUkQgMQotI2Vsc2UKLSNkZWZpbmUgTkROQk9PU1RfRElOS1VNV0FSRV9TVERMSUJfV09SS0FST1VORF9HVUFSRCAwCi0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfSU5URUwKLSNkZWZpbmUgTkROQk9PU1RfSU5URUxfV09SS0FST1VORF9HVUFSRCAxCi0jZWxzZQotI2RlZmluZSBORE5CT09TVF9JTlRFTF9XT1JLQVJPVU5EX0dVQVJEIDAKLSNlbmRpZgotLy8gQWx3YXlzIGRlZmluZSB0byB6ZXJvLCBpZiBpdCdzIHVzZWQgaXQnbGwgYmUgZGVmaW5lZCBteSBNUEw6Ci0jZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfR0NDX1dPUktBUk9VTkRfR1VBUkQgMAotCi0jICBkZWZpbmUgTkROQk9PU1RfV09SS0FST1VORChzeW1ib2wsIHRlc3QpICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICgoc3ltYm9sICMjIF9XT1JLQVJPVU5EX0dVQVJEICsgMCA9PSAwKSAmJiAgICAgXAotICAgICAgICAgKHN5bWJvbCAhPSAwKSAmJiAoMSAlICgoIChzeW1ib2wgdGVzdCkgKSArIDEpKSkKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXiBeICAgICAgICAgICBeIF4KLS8vIFRoZSBleHRyYSBsZXZlbCBvZiBwYXJlbnRoZXNpcyBuZXN0aW5nIGFib3ZlLCBhbG9uZyB3aXRoIHRoZQotLy8gTkROQk9PU1RfT1BFTl9QQVJFTiBpbmRpcmVjdGlvbiBiZWxvdywgaXMgcmVxdWlyZWQgdG8gc2F0aXNmeSB0aGUKLS8vIGJyb2tlbiBwcmVwcm9jZXNzb3IgaW4gTVdDVyA4LjMgYW5kIGVhcmxpZXIuCi0vLwotLy8gVGhlIGJhc2ljIG1lY2hhbmlzbSB3b3JrcyBhcyBmb2xsb3dzOgotLy8gICAgICAoc3ltYm9sIHRlc3QpICsgMSAgICAgICAgPT4gICBpZiAoc3ltYm9sIHRlc3QpIHRoZW4gMiBlbHNlIDEKLS8vICAgICAgMSAlICgoc3ltYm9sIHRlc3QpICsgMSkgID0+ICAgaWYgKHN5bWJvbCB0ZXN0KSB0aGVuIDEgZWxzZSAwCi0vLwotLy8gVGhlIGNvbXBsaWNhdGlvbiB3aXRoICUgaXMgZm9yIGNvb3BlcmF0aW9uIHdpdGggTkROQk9PU1RfVEVTVEVEX0FUKCkuCi0vLyBXaGVuICJ0ZXN0IiBpcyBORE5CT09TVF9URVNURURfQVQoeCkgYW5kCi0vLyBORE5CT09TVF9ERVRFQ1RfT1VUREFURURfV09SS0FST1VORFMgaXMgI2RlZmluZWQsCi0vLwotLy8gICAgICBzeW1ib2wgdGVzdCAgICAgICAgICAgICAgPT4gICBpZiAoc3ltYm9sIDw9IHgpIHRoZW4gMSBlbHNlIC0xCi0vLyAgICAgIChzeW1ib2wgdGVzdCkgKyAxICAgICAgICA9PiAgIGlmIChzeW1ib2wgPD0geCkgdGhlbiAyIGVsc2UgMAotLy8gICAgICAxICUgKChzeW1ib2wgdGVzdCkgKyAxKSAgPT4gICBpZiAoc3ltYm9sIDw9IHgpIHRoZW4gMSBlbHNlIGRpdmlkZS1ieS16ZXJvCi0vLwotCi0jICBpZmRlZiBORE5CT09TVF9ERVRFQ1RfT1VUREFURURfV09SS0FST1VORFMKLSMgICBkZWZpbmUgTkROQk9PU1RfT1BFTl9QQVJFTiAoCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RFU1RFRF9BVCh2YWx1ZSkgID4gdmFsdWUpID8oLTEpOiBORE5CT09TVF9PUEVOX1BBUkVOIDEKLSMgIGVsc2UKLSMgICBkZWZpbmUgTkROQk9PU1RfVEVTVEVEX0FUKHZhbHVlKSAhPSAoKHZhbHVlKS0odmFsdWUpKQotIyAgZW5kaWYKLQotIyBlbHNlCi0KLSMgIGRlZmluZSBORE5CT09TVF9XT1JLQVJPVU5EKHN5bWJvbCwgdGVzdCkgMAotCi0jIGVuZGlmIAotCi0jZW5kaWYgLy8gV09SS0FST1VORF9ORE5CT09TVF9EV0EyMDAyMTI2X0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9leGNlcHRpb24vY3VycmVudF9leGNlcHRpb25fY2FzdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2V4Y2VwdGlvbi9jdXJyZW50X2V4Y2VwdGlvbl9jYXN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWE3MjRjMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2V4Y2VwdGlvbi9jdXJyZW50X2V4Y2VwdGlvbl9jYXN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8vQ29weXJpZ2h0IChjKSAyMDA2LTIwMDkgRW1pbCBEb3RjaGV2c2tpIGFuZCBSZXZlcmdlIFN0dWRpb3MsIEluYy4KLQotLy9EaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vL2ZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1VVSURfN0U4M0MxNjYyMDA4MTFERTg4NUU4MjYxNTZEODk1OTMKLSNkZWZpbmUgTkROQk9PU1RfVVVJRF83RTgzQzE2NjIwMDgxMURFODg1RTgyNjE1NkQ4OTU5MwotI2lmIChfX0dOVUNfXyoxMDArX19HTlVDX01JTk9SX18+MzAxKSAmJiAhZGVmaW5lZChORE5CT09TVF9FWENFUFRJT05fRU5BQkxFX1dBUk5JTkdTKQotI3ByYWdtYSBHQ0Mgc3lzdGVtX2hlYWRlcgotI2VuZGlmCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRlZmluZWQoTkROQk9PU1RfRVhDRVBUSU9OX0VOQUJMRV9XQVJOSU5HUykKLSNwcmFnbWEgd2FybmluZyhwdXNoLDEpCi0jZW5kaWYKLQotbmFtZXNwYWNlCi1uZG5ib29zdAotICAgIHsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgRT4KLSAgICBpbmxpbmUKLSAgICBFICoKLSAgICBjdXJyZW50X2V4Y2VwdGlvbl9jYXN0KCkKLSAgICAgICAgewotICAgICAgICB0cnkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIHRocm93OwotICAgICAgICAgICAgfQotICAgICAgICBjYXRjaCgKLSAgICAgICAgRSAmIGUgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICZlOwotICAgICAgICAgICAgfQotICAgICAgICBjYXRjaCgKLSAgICAgICAgLi4uKQotICAgICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAhZGVmaW5lZChORE5CT09TVF9FWENFUFRJT05fRU5BQkxFX1dBUk5JTkdTKQotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2V4Y2VwdGlvbi9kZXRhaWwvYXR0cmlidXRlX25vcmV0dXJuLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZXhjZXB0aW9uL2RldGFpbC9hdHRyaWJ1dGVfbm9yZXR1cm4uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MzdiODFjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZXhjZXB0aW9uL2RldGFpbC9hdHRyaWJ1dGVfbm9yZXR1cm4uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotLy9Db3B5cmlnaHQgKGMpIDIwMDkgRW1pbCBEb3RjaGV2c2tpIGFuZCBSZXZlcmdlIFN0dWRpb3MsIEluYy4KLQotLy9EaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vL2ZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1VVSURfNjE1MzFBQjA2ODA2MTFERUFERDU4NDY4NTVEODk1OTMKLSNkZWZpbmUgTkROQk9PU1RfVVVJRF82MTUzMUFCMDY4MDYxMURFQURENTg0Njg1NUQ4OTU5MwotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikKLSNkZWZpbmUgTkROQk9PU1RfQVRUUklCVVRFX05PUkVUVVJOIF9fZGVjbHNwZWMobm9yZXR1cm4pCi0jZWxpZiBkZWZpbmVkKF9fR05VQ19fKQotI2RlZmluZSBORE5CT09TVF9BVFRSSUJVVEVfTk9SRVRVUk4gX19hdHRyaWJ1dGVfXygoX19ub3JldHVybl9fKSkKLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX0FUVFJJQlVURV9OT1JFVFVSTgotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9leGNlcHRpb24vZGV0YWlsL2Vycm9yX2luZm9faW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2V4Y2VwdGlvbi9kZXRhaWwvZXJyb3JfaW5mb19pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjU0NzM4MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2V4Y2VwdGlvbi9kZXRhaWwvZXJyb3JfaW5mb19pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLS8vQ29weXJpZ2h0IChjKSAyMDA2LTIwMTAgRW1pbCBEb3RjaGV2c2tpIGFuZCBSZXZlcmdlIFN0dWRpb3MsIEluYy4KLQotLy9EaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vL2ZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1VVSURfQ0U2OTgzQUM3NTM0MTFEREE3NjQyNDc5NTZEODk1OTMKLSNkZWZpbmUgTkROQk9PU1RfVVVJRF9DRTY5ODNBQzc1MzQxMUREQTc2NDI0Nzk1NkQ4OTU5MwotI2lmIChfX0dOVUNfXyoxMDArX19HTlVDX01JTk9SX18+MzAxKSAmJiAhZGVmaW5lZChORE5CT09TVF9FWENFUFRJT05fRU5BQkxFX1dBUk5JTkdTKQotI3ByYWdtYSBHQ0Mgc3lzdGVtX2hlYWRlcgotI2VuZGlmCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRlZmluZWQoTkROQk9PU1RfRVhDRVBUSU9OX0VOQUJMRV9XQVJOSU5HUykKLSNwcmFnbWEgd2FybmluZyhwdXNoLDEpCi0jZW5kaWYKLQotI2luY2x1ZGUgPHN0cmluZz4KLQotbmFtZXNwYWNlCi1uZG5ib29zdAotICAgIHsKLSAgICBuYW1lc3BhY2UKLSAgICBleGNlcHRpb25fZGV0YWlsCi0gICAgICAgIHsKLSAgICAgICAgY2xhc3MKLSAgICAgICAgZXJyb3JfaW5mb19iYXNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICBwdWJsaWM6Ci0KLSAgICAgICAgICAgIHZpcnR1YWwgc3RkOjpzdHJpbmcgbmFtZV92YWx1ZV9zdHJpbmcoKSBjb25zdCA9IDA7Ci0KLSAgICAgICAgICAgIHByb3RlY3RlZDoKLQotICAgICAgICAgICAgdmlydHVhbAotICAgICAgICAgICAgfmVycm9yX2luZm9fYmFzZSgpIHRocm93KCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSAgICAgICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFRhZyxjbGFzcyBUPgotICAgIGNsYXNzCi0gICAgZXJyb3JfaW5mbzoKLSAgICAgICAgcHVibGljIGV4Y2VwdGlvbl9kZXRhaWw6OmVycm9yX2luZm9fYmFzZQotICAgICAgICB7Ci0gICAgICAgIHB1YmxpYzoKLQotICAgICAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLQotICAgICAgICBlcnJvcl9pbmZvKCB2YWx1ZV90eXBlIGNvbnN0ICYgdmFsdWUgKTsKLSAgICAgICAgfmVycm9yX2luZm8oKSB0aHJvdygpOwotCi0gICAgICAgIHZhbHVlX3R5cGUgY29uc3QgJgotICAgICAgICB2YWx1ZSgpIGNvbnN0Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWVfOwotICAgICAgICAgICAgfQotCi0gICAgICAgIHZhbHVlX3R5cGUgJgotICAgICAgICB2YWx1ZSgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWVfOwotICAgICAgICAgICAgfQotCi0gICAgICAgIHByaXZhdGU6Ci0KLSAgICAgICAgc3RkOjpzdHJpbmcgbmFtZV92YWx1ZV9zdHJpbmcoKSBjb25zdDsKLQotICAgICAgICB2YWx1ZV90eXBlIHZhbHVlXzsKLSAgICAgICAgfTsKLSAgICB9Ci0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAhZGVmaW5lZChORE5CT09TVF9FWENFUFRJT05fRU5BQkxFX1dBUk5JTkdTKQotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2V4Y2VwdGlvbi9kZXRhaWwvdHlwZV9pbmZvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZXhjZXB0aW9uL2RldGFpbC90eXBlX2luZm8uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZmNhZTJmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZXhjZXB0aW9uL2RldGFpbC90eXBlX2luZm8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotLy9Db3B5cmlnaHQgKGMpIDIwMDYtMjAxMCBFbWlsIERvdGNoZXZza2kgYW5kIFJldmVyZ2UgU3R1ZGlvcywgSW5jLgotCi0vL0Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVVVJRF9DM0UxNzQxQzc1NDMxMUREQjI4MzRDQ0E1NUQ4OTU5MwotI2RlZmluZSBORE5CT09TVF9VVUlEX0MzRTE3NDFDNzU0MzExRERCMjgzNENDQTU1RDg5NTkzCi0jaWYgKF9fR05VQ19fKjEwMCtfX0dOVUNfTUlOT1JfXz4zMDEpICYmICFkZWZpbmVkKE5ETkJPT1NUX0VYQ0VQVElPTl9FTkFCTEVfV0FSTklOR1MpCi0jcHJhZ21hIEdDQyBzeXN0ZW1faGVhZGVyCi0jZW5kaWYKLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAhZGVmaW5lZChORE5CT09TVF9FWENFUFRJT05fRU5BQkxFX1dBUk5JTkdTKQotI3ByYWdtYSB3YXJuaW5nKHB1c2gsMSkKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3NwX3R5cGVpbmZvLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jdXJyZW50X2Z1bmN0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2lmbmRlZiBORE5CT09TVF9OT19UWVBFSUQKLSNpbmNsdWRlIDxuZG5ib29zdC91bml0cy9kZXRhaWwvdXRpbGl0eS5ocHA+Ci0jZW5kaWYKLSNpbmNsdWRlIDxzdHJpbmc+Ci0KLW5hbWVzcGFjZQotbmRuYm9vc3QKLSAgICB7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgaW5saW5lCi0gICAgc3RkOjpzdHJpbmcKLSAgICB0YWdfdHlwZV9uYW1lKCkKLSAgICAgICAgewotI2lmZGVmIE5ETkJPT1NUX05PX1RZUEVJRAotICAgICAgICByZXR1cm4gTkROQk9PU1RfQ1VSUkVOVF9GVU5DVElPTjsKLSNlbHNlCi0gICAgICAgIHJldHVybiB1bml0czo6ZGV0YWlsOjpkZW1hbmdsZSh0eXBlaWQoVCopLm5hbWUoKSk7Ci0jZW5kaWYKLSAgICAgICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgaW5saW5lCi0gICAgc3RkOjpzdHJpbmcKLSAgICB0eXBlX25hbWUoKQotICAgICAgICB7Ci0jaWZkZWYgTkROQk9PU1RfTk9fVFlQRUlECi0gICAgICAgIHJldHVybiBORE5CT09TVF9DVVJSRU5UX0ZVTkNUSU9OOwotI2Vsc2UKLSAgICAgICAgcmV0dXJuIHVuaXRzOjpkZXRhaWw6OmRlbWFuZ2xlKHR5cGVpZChUKS5uYW1lKCkpOwotI2VuZGlmCi0gICAgICAgIH0KLQotICAgIG5hbWVzcGFjZQotICAgIGV4Y2VwdGlvbl9kZXRhaWwKLSAgICAgICAgewotICAgICAgICBzdHJ1Y3QKLSAgICAgICAgdHlwZV9pbmZvXwotICAgICAgICAgICAgewotICAgICAgICAgICAgZGV0YWlsOjpzcF90eXBlaW5mbyBjb25zdCAqIHR5cGVfOwotCi0gICAgICAgICAgICBleHBsaWNpdAotICAgICAgICAgICAgdHlwZV9pbmZvXyggZGV0YWlsOjpzcF90eXBlaW5mbyBjb25zdCAmIHR5cGUgKToKLSAgICAgICAgICAgICAgICB0eXBlXygmdHlwZSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBmcmllbmQKLSAgICAgICAgICAgIGJvb2wKLSAgICAgICAgICAgIG9wZXJhdG9yPCggdHlwZV9pbmZvXyBjb25zdCAmIGEsIHR5cGVfaW5mb18gY29uc3QgJiBiICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDAhPShhLnR5cGVfLT5iZWZvcmUoKmIudHlwZV8pKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotICAgICAgICB9Ci0gICAgfQotCi0jZGVmaW5lIE5ETkJPT1NUX0VYQ0VQVElPTl9TVEFUSUNfVFlQRUlEKFQpIDo6bmRuYm9vc3Q6OmV4Y2VwdGlvbl9kZXRhaWw6OnR5cGVfaW5mb18oTkROQk9PU1RfU1BfVFlQRUlEKFQpKQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1JUVEkKLSNkZWZpbmUgTkROQk9PU1RfRVhDRVBUSU9OX0RZTkFNSUNfVFlQRUlEKHgpIDo6bmRuYm9vc3Q6OmV4Y2VwdGlvbl9kZXRhaWw6OnR5cGVfaW5mb18odHlwZWlkKHgpKQotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAhZGVmaW5lZChORE5CT09TVF9FWENFUFRJT05fRU5BQkxFX1dBUk5JTkdTKQotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2V4Y2VwdGlvbi9leGNlcHRpb24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9leGNlcHRpb24vZXhjZXB0aW9uLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWE5NzQ3Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2V4Y2VwdGlvbi9leGNlcHRpb24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDgzICswLDAgQEAKLS8vQ29weXJpZ2h0IChjKSAyMDA2LTIwMDkgRW1pbCBEb3RjaGV2c2tpIGFuZCBSZXZlcmdlIFN0dWRpb3MsIEluYy4KLQotLy9EaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vL2ZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1VVSURfMjc0REEzNjYwMDRFMTFEQ0IxRERGRTJFNTZEODk1OTMKLSNkZWZpbmUgTkROQk9PU1RfVVVJRF8yNzREQTM2NjAwNEUxMURDQjFEREZFMkU1NkQ4OTU5MwotI2lmIChfX0dOVUNfXyoxMDArX19HTlVDX01JTk9SX18+MzAxKSAmJiAhZGVmaW5lZChORE5CT09TVF9FWENFUFRJT05fRU5BQkxFX1dBUk5JTkdTKQotI3ByYWdtYSBHQ0Mgc3lzdGVtX2hlYWRlcgotI2VuZGlmCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRlZmluZWQoTkROQk9PU1RfRVhDRVBUSU9OX0VOQUJMRV9XQVJOSU5HUykKLSNwcmFnbWEgd2FybmluZyhwdXNoLDEpCi0jZW5kaWYKLQotbmFtZXNwYWNlCi1uZG5ib29zdAotICAgIHsKLSAgICBuYW1lc3BhY2UKLSAgICBleGNlcHRpb25fZGV0YWlsCi0gICAgICAgIHsKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgIGNsYXNzCi0gICAgICAgIHJlZmNvdW50X3B0cgotICAgICAgICAgICAgewotICAgICAgICAgICAgcHVibGljOgotCi0gICAgICAgICAgICByZWZjb3VudF9wdHIoKToKLSAgICAgICAgICAgICAgICBweF8oMCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB+cmVmY291bnRfcHRyKCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmVsZWFzZSgpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmVmY291bnRfcHRyKCByZWZjb3VudF9wdHIgY29uc3QgJiB4ICk6Ci0gICAgICAgICAgICAgICAgcHhfKHgucHhfKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBhZGRfcmVmKCk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZWZjb3VudF9wdHIgJgotICAgICAgICAgICAgb3BlcmF0b3I9KCByZWZjb3VudF9wdHIgY29uc3QgJiB4ICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYWRvcHQoeC5weF8pOwotICAgICAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZvaWQKLSAgICAgICAgICAgIGFkb3B0KCBUICogcHggKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZWxlYXNlKCk7Ci0gICAgICAgICAgICAgICAgcHhfPXB4OwotICAgICAgICAgICAgICAgIGFkZF9yZWYoKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIFQgKgotICAgICAgICAgICAgZ2V0KCkgY29uc3QKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHB4XzsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHByaXZhdGU6Ci0KLSAgICAgICAgICAgIFQgKiBweF87Ci0KLSAgICAgICAgICAgIHZvaWQKLSAgICAgICAgICAgIGFkZF9yZWYoKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiggcHhfICkKLSAgICAgICAgICAgICAgICAgICAgcHhfLT5hZGRfcmVmKCk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2b2lkCi0gICAgICAgICAgICByZWxlYXNlKCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYoIHB4XyAmJiBweF8tPnJlbGVhc2UoKSApCi0gICAgICAgICAgICAgICAgICAgIHB4Xz0wOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0KLQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFRhZyxjbGFzcyBUPgotICAgIGNsYXNzIGVycm9yX2luZm87Ci0KLSAgICB0eXBlZGVmIGVycm9yX2luZm88c3RydWN0IHRocm93X2Z1bmN0aW9uXyxjaGFyIGNvbnN0ICo+IHRocm93X2Z1bmN0aW9uOwotICAgIHR5cGVkZWYgZXJyb3JfaW5mbzxzdHJ1Y3QgdGhyb3dfZmlsZV8sY2hhciBjb25zdCAqPiB0aHJvd19maWxlOwotICAgIHR5cGVkZWYgZXJyb3JfaW5mbzxzdHJ1Y3QgdGhyb3dfbGluZV8saW50PiB0aHJvd19saW5lOwotCi0gICAgdGVtcGxhdGUgPD4KLSAgICBjbGFzcwotICAgIGVycm9yX2luZm88dGhyb3dfZnVuY3Rpb25fLGNoYXIgY29uc3QgKj4KLSAgICAgICAgewotICAgICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgY2hhciBjb25zdCAqIHZhbHVlX3R5cGU7Ci0gICAgICAgIHZhbHVlX3R5cGUgdl87Ci0gICAgICAgIGV4cGxpY2l0Ci0gICAgICAgIGVycm9yX2luZm8oIHZhbHVlX3R5cGUgdiApOgotICAgICAgICAgICAgdl8odikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLQotICAgIHRlbXBsYXRlIDw+Ci0gICAgY2xhc3MKLSAgICBlcnJvcl9pbmZvPHRocm93X2ZpbGVfLGNoYXIgY29uc3QgKj4KLSAgICAgICAgewotICAgICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgY2hhciBjb25zdCAqIHZhbHVlX3R5cGU7Ci0gICAgICAgIHZhbHVlX3R5cGUgdl87Ci0gICAgICAgIGV4cGxpY2l0Ci0gICAgICAgIGVycm9yX2luZm8oIHZhbHVlX3R5cGUgdiApOgotICAgICAgICAgICAgdl8odikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLQotICAgIHRlbXBsYXRlIDw+Ci0gICAgY2xhc3MKLSAgICBlcnJvcl9pbmZvPHRocm93X2xpbmVfLGludD4KLSAgICAgICAgewotICAgICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgaW50IHZhbHVlX3R5cGU7Ci0gICAgICAgIHZhbHVlX3R5cGUgdl87Ci0gICAgICAgIGV4cGxpY2l0Ci0gICAgICAgIGVycm9yX2luZm8oIHZhbHVlX3R5cGUgdiApOgotICAgICAgICAgICAgdl8odikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLQotI2lmIGRlZmluZWQoX19HTlVDX18pCi0jIGlmIChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fID49IDEpIHx8IChfX0dOVUNfXyA+IDQpCi0jICBwcmFnbWEgR0NDIHZpc2liaWxpdHkgcHVzaCAoZGVmYXVsdCkKLSMgZW5kaWYKLSNlbmRpZgotICAgIGNsYXNzIGV4Y2VwdGlvbjsKLSNpZiBkZWZpbmVkKF9fR05VQ19fKQotIyBpZiAoX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA+PSAxKSB8fCAoX19HTlVDX18gPiA0KQotIyAgcHJhZ21hIEdDQyB2aXNpYmlsaXR5IHBvcAotIyBlbmRpZgotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICBjbGFzcyBzaGFyZWRfcHRyOwotCi0gICAgbmFtZXNwYWNlCi0gICAgZXhjZXB0aW9uX2RldGFpbAotICAgICAgICB7Ci0gICAgICAgIGNsYXNzIGVycm9yX2luZm9fYmFzZTsKLSAgICAgICAgc3RydWN0IHR5cGVfaW5mb187Ci0KLSAgICAgICAgc3RydWN0Ci0gICAgICAgIGVycm9yX2luZm9fY29udGFpbmVyCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICB2aXJ0dWFsIGNoYXIgY29uc3QgKiBkaWFnbm9zdGljX2luZm9ybWF0aW9uKCBjaGFyIGNvbnN0ICogKSBjb25zdCA9IDA7Ci0gICAgICAgICAgICB2aXJ0dWFsIHNoYXJlZF9wdHI8ZXJyb3JfaW5mb19iYXNlPiBnZXQoIHR5cGVfaW5mb18gY29uc3QgJiApIGNvbnN0ID0gMDsKLSAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXQoIHNoYXJlZF9wdHI8ZXJyb3JfaW5mb19iYXNlPiBjb25zdCAmLCB0eXBlX2luZm9fIGNvbnN0ICYgKSA9IDA7Ci0gICAgICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkX3JlZigpIGNvbnN0ID0gMDsKLSAgICAgICAgICAgIHZpcnR1YWwgYm9vbCByZWxlYXNlKCkgY29uc3QgPSAwOwotICAgICAgICAgICAgdmlydHVhbCByZWZjb3VudF9wdHI8ZXhjZXB0aW9uX2RldGFpbDo6ZXJyb3JfaW5mb19jb250YWluZXI+IGNsb25lKCkgY29uc3QgPSAwOwotCi0gICAgICAgICAgICBwcm90ZWN0ZWQ6Ci0KLSAgICAgICAgICAgIH5lcnJvcl9pbmZvX2NvbnRhaW5lcigpIHRocm93KCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3M+Ci0gICAgICAgIHN0cnVjdCBnZXRfaW5mbzsKLQotICAgICAgICB0ZW1wbGF0ZSA8PgotICAgICAgICBzdHJ1Y3QgZ2V0X2luZm88dGhyb3dfZnVuY3Rpb24+OwotCi0gICAgICAgIHRlbXBsYXRlIDw+Ci0gICAgICAgIHN0cnVjdCBnZXRfaW5mbzx0aHJvd19maWxlPjsKLQotICAgICAgICB0ZW1wbGF0ZSA8PgotICAgICAgICBzdHJ1Y3QgZ2V0X2luZm88dGhyb3dfbGluZT47Ci0KLSAgICAgICAgY2hhciBjb25zdCAqIGdldF9kaWFnbm9zdGljX2luZm9ybWF0aW9uKCBleGNlcHRpb24gY29uc3QgJiwgY2hhciBjb25zdCAqICk7Ci0KLSAgICAgICAgdm9pZCBjb3B5X2Jvb3N0X2V4Y2VwdGlvbiggZXhjZXB0aW9uICosIGV4Y2VwdGlvbiBjb25zdCAqICk7Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEUsY2xhc3MgVGFnLGNsYXNzIFQ+Ci0gICAgICAgIEUgY29uc3QgJiBzZXRfaW5mbyggRSBjb25zdCAmLCBlcnJvcl9pbmZvPFRhZyxUPiBjb25zdCAmICk7Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEU+Ci0gICAgICAgIEUgY29uc3QgJiBzZXRfaW5mbyggRSBjb25zdCAmLCB0aHJvd19mdW5jdGlvbiBjb25zdCAmICk7Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEU+Ci0gICAgICAgIEUgY29uc3QgJiBzZXRfaW5mbyggRSBjb25zdCAmLCB0aHJvd19maWxlIGNvbnN0ICYgKTsKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRT4KLSAgICAgICAgRSBjb25zdCAmIHNldF9pbmZvKCBFIGNvbnN0ICYsIHRocm93X2xpbmUgY29uc3QgJiApOwotICAgICAgICB9Ci0KLSNpZiBkZWZpbmVkKF9fR05VQ19fKQotIyBpZiAoX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA+PSAxKSB8fCAoX19HTlVDX18gPiA0KQotIyAgcHJhZ21hIEdDQyB2aXNpYmlsaXR5IHB1c2ggKGRlZmF1bHQpCi0jIGVuZGlmCi0jZW5kaWYKLSAgICBjbGFzcwotICAgIGV4Y2VwdGlvbgotICAgICAgICB7Ci0gICAgICAgIHByb3RlY3RlZDoKLQotICAgICAgICBleGNlcHRpb24oKToKLSAgICAgICAgICAgIHRocm93X2Z1bmN0aW9uXygwKSwKLSAgICAgICAgICAgIHRocm93X2ZpbGVfKDApLAotICAgICAgICAgICAgdGhyb3dfbGluZV8oLTEpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICB9Ci0KLSNpZmRlZiBfX0hQX2FDQwotICAgICAgICAvL09uIEhQIGFDQywgdGhpcyBwcm90ZWN0ZWQgY29weSBjb25zdHJ1Y3RvciBwcmV2ZW50cyB0aHJvd2luZyBuZG5ib29zdDo6ZXhjZXB0aW9uLgotICAgICAgICAvL09uIGFsbCBvdGhlciBwbGF0Zm9ybXMsIHRoZSBzYW1lIGVmZmVjdCBpcyBhY2hpZXZlZCBieSB0aGUgcHVyZSB2aXJ0dWFsIGRlc3RydWN0b3IuCi0gICAgICAgIGV4Y2VwdGlvbiggZXhjZXB0aW9uIGNvbnN0ICYgeCApIHRocm93KCk6Ci0gICAgICAgICAgICBkYXRhXyh4LmRhdGFfKSwKLSAgICAgICAgICAgIHRocm93X2Z1bmN0aW9uXyh4LnRocm93X2Z1bmN0aW9uXyksCi0gICAgICAgICAgICB0aHJvd19maWxlXyh4LnRocm93X2ZpbGVfKSwKLSAgICAgICAgICAgIHRocm93X2xpbmVfKHgudGhyb3dfbGluZV8pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKLQotICAgICAgICB2aXJ0dWFsIH5leGNlcHRpb24oKSB0aHJvdygpCi0jaWZuZGVmIF9fSFBfYUNDCi0gICAgICAgICAgICA9IDAgLy9Xb3JrYXJvdW5kIGZvciBIUCBhQ0MsID0wIGluY29ycmVjdGx5IGxlYWRzIHRvIGxpbmsgZXJyb3JzLgotI2VuZGlmCi0gICAgICAgICAgICA7Ci0KLSNpZiAoZGVmaW5lZChfX01XRVJLU19fKSAmJiBfX01XRVJLU19fPD0weDMyMDcpIHx8IChkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUjw9MTMxMCkKLSAgICAgICAgcHVibGljOgotI2Vsc2UKLSAgICAgICAgcHJpdmF0ZToKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRT4KLSAgICAgICAgZnJpZW5kIEUgY29uc3QgJiBleGNlcHRpb25fZGV0YWlsOjpzZXRfaW5mbyggRSBjb25zdCAmLCB0aHJvd19mdW5jdGlvbiBjb25zdCAmICk7Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEU+Ci0gICAgICAgIGZyaWVuZCBFIGNvbnN0ICYgZXhjZXB0aW9uX2RldGFpbDo6c2V0X2luZm8oIEUgY29uc3QgJiwgdGhyb3dfZmlsZSBjb25zdCAmICk7Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEU+Ci0gICAgICAgIGZyaWVuZCBFIGNvbnN0ICYgZXhjZXB0aW9uX2RldGFpbDo6c2V0X2luZm8oIEUgY29uc3QgJiwgdGhyb3dfbGluZSBjb25zdCAmICk7Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEUsY2xhc3MgVGFnLGNsYXNzIFQ+Ci0gICAgICAgIGZyaWVuZCBFIGNvbnN0ICYgZXhjZXB0aW9uX2RldGFpbDo6c2V0X2luZm8oIEUgY29uc3QgJiwgZXJyb3JfaW5mbzxUYWcsVD4gY29uc3QgJiApOwotCi0gICAgICAgIGZyaWVuZCBjaGFyIGNvbnN0ICogZXhjZXB0aW9uX2RldGFpbDo6Z2V0X2RpYWdub3N0aWNfaW5mb3JtYXRpb24oIGV4Y2VwdGlvbiBjb25zdCAmLCBjaGFyIGNvbnN0ICogKTsKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3M+Ci0gICAgICAgIGZyaWVuZCBzdHJ1Y3QgZXhjZXB0aW9uX2RldGFpbDo6Z2V0X2luZm87Ci0gICAgICAgIGZyaWVuZCBzdHJ1Y3QgZXhjZXB0aW9uX2RldGFpbDo6Z2V0X2luZm88dGhyb3dfZnVuY3Rpb24+OwotICAgICAgICBmcmllbmQgc3RydWN0IGV4Y2VwdGlvbl9kZXRhaWw6OmdldF9pbmZvPHRocm93X2ZpbGU+OwotICAgICAgICBmcmllbmQgc3RydWN0IGV4Y2VwdGlvbl9kZXRhaWw6OmdldF9pbmZvPHRocm93X2xpbmU+OwotICAgICAgICBmcmllbmQgdm9pZCBleGNlcHRpb25fZGV0YWlsOjpjb3B5X2Jvb3N0X2V4Y2VwdGlvbiggZXhjZXB0aW9uICosIGV4Y2VwdGlvbiBjb25zdCAqICk7Ci0jZW5kaWYKLSAgICAgICAgbXV0YWJsZSBleGNlcHRpb25fZGV0YWlsOjpyZWZjb3VudF9wdHI8ZXhjZXB0aW9uX2RldGFpbDo6ZXJyb3JfaW5mb19jb250YWluZXI+IGRhdGFfOwotICAgICAgICBtdXRhYmxlIGNoYXIgY29uc3QgKiB0aHJvd19mdW5jdGlvbl87Ci0gICAgICAgIG11dGFibGUgY2hhciBjb25zdCAqIHRocm93X2ZpbGVfOwotICAgICAgICBtdXRhYmxlIGludCB0aHJvd19saW5lXzsKLSAgICAgICAgfTsKLSNpZiBkZWZpbmVkKF9fR05VQ19fKQotIyBpZiAoX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA+PSAxKSB8fCAoX19HTlVDX18gPiA0KQotIyAgcHJhZ21hIEdDQyB2aXNpYmlsaXR5IHBvcAotIyBlbmRpZgotI2VuZGlmCi0KLSAgICBpbmxpbmUKLSAgICBleGNlcHRpb246OgotICAgIH5leGNlcHRpb24oKSB0aHJvdygpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgbmFtZXNwYWNlCi0gICAgZXhjZXB0aW9uX2RldGFpbAotICAgICAgICB7Ci0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBFPgotICAgICAgICBFIGNvbnN0ICYKLSAgICAgICAgc2V0X2luZm8oIEUgY29uc3QgJiB4LCB0aHJvd19mdW5jdGlvbiBjb25zdCAmIHkgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgeC50aHJvd19mdW5jdGlvbl89eS52XzsKLSAgICAgICAgICAgIHJldHVybiB4OwotICAgICAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBFPgotICAgICAgICBFIGNvbnN0ICYKLSAgICAgICAgc2V0X2luZm8oIEUgY29uc3QgJiB4LCB0aHJvd19maWxlIGNvbnN0ICYgeSApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICB4LnRocm93X2ZpbGVfPXkudl87Ci0gICAgICAgICAgICByZXR1cm4geDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRT4KLSAgICAgICAgRSBjb25zdCAmCi0gICAgICAgIHNldF9pbmZvKCBFIGNvbnN0ICYgeCwgdGhyb3dfbGluZSBjb25zdCAmIHkgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgeC50aHJvd19saW5lXz15LnZfOwotICAgICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAgbmFtZXNwYWNlCi0gICAgZXhjZXB0aW9uX2RldGFpbAotICAgICAgICB7Ci0jaWYgZGVmaW5lZChfX0dOVUNfXykKLSMgaWYgKF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPj0gMSkgfHwgKF9fR05VQ19fID4gNCkKLSMgIHByYWdtYSBHQ0MgdmlzaWJpbGl0eSBwdXNoIChkZWZhdWx0KQotIyBlbmRpZgotI2VuZGlmCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgICBzdHJ1Y3QKLSAgICAgICAgZXJyb3JfaW5mb19pbmplY3RvcjoKLSAgICAgICAgICAgIHB1YmxpYyBULAotICAgICAgICAgICAgcHVibGljIGV4Y2VwdGlvbgotICAgICAgICAgICAgewotICAgICAgICAgICAgZXhwbGljaXQKLSAgICAgICAgICAgIGVycm9yX2luZm9faW5qZWN0b3IoIFQgY29uc3QgJiB4ICk6Ci0gICAgICAgICAgICAgICAgVCh4KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIH5lcnJvcl9pbmZvX2luamVjdG9yKCkgdGhyb3coKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotI2lmIGRlZmluZWQoX19HTlVDX18pCi0jIGlmIChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fID49IDEpIHx8IChfX0dOVUNfXyA+IDQpCi0jICBwcmFnbWEgR0NDIHZpc2liaWxpdHkgcG9wCi0jIGVuZGlmCi0jZW5kaWYKLQotICAgICAgICBzdHJ1Y3QgbGFyZ2Vfc2l6ZSB7IGNoYXIgY1syNTZdOyB9OwotICAgICAgICBsYXJnZV9zaXplIGRpc3BhdGNoX2Jvb3N0X2V4Y2VwdGlvbiggZXhjZXB0aW9uIGNvbnN0ICogKTsKLQotICAgICAgICBzdHJ1Y3Qgc21hbGxfc2l6ZSB7IH07Ci0gICAgICAgIHNtYWxsX3NpemUgZGlzcGF0Y2hfYm9vc3RfZXhjZXB0aW9uKCB2b2lkIGNvbnN0ICogKTsKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MsaW50PgotICAgICAgICBzdHJ1Y3QgZW5hYmxlX2Vycm9yX2luZm9faGVscGVyOwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgICBzdHJ1Y3QKLSAgICAgICAgZW5hYmxlX2Vycm9yX2luZm9faGVscGVyPFQsc2l6ZW9mKGxhcmdlX3NpemUpPgotICAgICAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgICBzdHJ1Y3QKLSAgICAgICAgZW5hYmxlX2Vycm9yX2luZm9faGVscGVyPFQsc2l6ZW9mKHNtYWxsX3NpemUpPgotICAgICAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBlcnJvcl9pbmZvX2luamVjdG9yPFQ+IHR5cGU7Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgICBzdHJ1Y3QKLSAgICAgICAgZW5hYmxlX2Vycm9yX2luZm9fcmV0dXJuX3R5cGUKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZW5hYmxlX2Vycm9yX2luZm9faGVscGVyPFQsc2l6ZW9mKGV4Y2VwdGlvbl9kZXRhaWw6OmRpc3BhdGNoX2Jvb3N0X2V4Y2VwdGlvbihzdGF0aWNfY2FzdDxUICo+KDApKSk+Ojp0eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICBpbmxpbmUKLSAgICB0eXBlbmFtZQotICAgIGV4Y2VwdGlvbl9kZXRhaWw6OmVuYWJsZV9lcnJvcl9pbmZvX3JldHVybl90eXBlPFQ+Ojp0eXBlCi0gICAgZW5hYmxlX2Vycm9yX2luZm8oIFQgY29uc3QgJiB4ICkKLSAgICAgICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGV4Y2VwdGlvbl9kZXRhaWw6OmVuYWJsZV9lcnJvcl9pbmZvX3JldHVybl90eXBlPFQ+Ojp0eXBlIHJ0OwotICAgICAgICByZXR1cm4gcnQoeCk7Ci0gICAgICAgIH0KLQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAgbmFtZXNwYWNlCi0gICAgZXhjZXB0aW9uX2RldGFpbAotICAgICAgICB7Ci0jaWYgZGVmaW5lZChfX0dOVUNfXykKLSMgaWYgKF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPj0gMSkgfHwgKF9fR05VQ19fID4gNCkKLSMgIHByYWdtYSBHQ0MgdmlzaWJpbGl0eSBwdXNoIChkZWZhdWx0KQotIyBlbmRpZgotI2VuZGlmCi0gICAgICAgIGNsYXNzCi0gICAgICAgIGNsb25lX2Jhc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIHB1YmxpYzoKLQotICAgICAgICAgICAgdmlydHVhbCBjbG9uZV9iYXNlIGNvbnN0ICogY2xvbmUoKSBjb25zdCA9IDA7Ci0gICAgICAgICAgICB2aXJ0dWFsIHZvaWQgcmV0aHJvdygpIGNvbnN0ID0gMDsKLQotICAgICAgICAgICAgdmlydHVhbAotICAgICAgICAgICAgfmNsb25lX2Jhc2UoKSB0aHJvdygpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0jaWYgZGVmaW5lZChfX0dOVUNfXykKLSMgaWYgKF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPj0gMSkgfHwgKF9fR05VQ19fID4gNCkKLSMgIHByYWdtYSBHQ0MgdmlzaWJpbGl0eSBwb3AKLSMgZW5kaWYKLSNlbmRpZgotCi0gICAgICAgIGlubGluZQotICAgICAgICB2b2lkCi0gICAgICAgIGNvcHlfYm9vc3RfZXhjZXB0aW9uKCBleGNlcHRpb24gKiBhLCBleGNlcHRpb24gY29uc3QgKiBiICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIHJlZmNvdW50X3B0cjxlcnJvcl9pbmZvX2NvbnRhaW5lcj4gZGF0YTsKLSAgICAgICAgICAgIGlmKCBlcnJvcl9pbmZvX2NvbnRhaW5lciAqIGQ9Yi0+ZGF0YV8uZ2V0KCkgKQotICAgICAgICAgICAgICAgIGRhdGEgPSBkLT5jbG9uZSgpOwotICAgICAgICAgICAgYS0+dGhyb3dfZmlsZV8gPSBiLT50aHJvd19maWxlXzsKLSAgICAgICAgICAgIGEtPnRocm93X2xpbmVfID0gYi0+dGhyb3dfbGluZV87Ci0gICAgICAgICAgICBhLT50aHJvd19mdW5jdGlvbl8gPSBiLT50aHJvd19mdW5jdGlvbl87Ci0gICAgICAgICAgICBhLT5kYXRhXyA9IGRhdGE7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgaW5saW5lCi0gICAgICAgIHZvaWQKLSAgICAgICAgY29weV9ib29zdF9leGNlcHRpb24oIHZvaWQgKiwgdm9pZCBjb25zdCAqICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgY2xhc3MKLSAgICAgICAgY2xvbmVfaW1wbDoKLSAgICAgICAgICAgIHB1YmxpYyBULAotICAgICAgICAgICAgcHVibGljIHZpcnR1YWwgY2xvbmVfYmFzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgc3RydWN0IGNsb25lX3RhZyB7IH07Ci0gICAgICAgICAgICBjbG9uZV9pbXBsKCBjbG9uZV9pbXBsIGNvbnN0ICYgeCwgY2xvbmVfdGFnICk6Ci0gICAgICAgICAgICAgICAgVCh4KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb3B5X2Jvb3N0X2V4Y2VwdGlvbih0aGlzLCZ4KTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHB1YmxpYzoKLQotICAgICAgICAgICAgZXhwbGljaXQKLSAgICAgICAgICAgIGNsb25lX2ltcGwoIFQgY29uc3QgJiB4ICk6Ci0gICAgICAgICAgICAgICAgVCh4KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb3B5X2Jvb3N0X2V4Y2VwdGlvbih0aGlzLCZ4KTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIH5jbG9uZV9pbXBsKCkgdGhyb3coKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHByaXZhdGU6Ci0KLSAgICAgICAgICAgIGNsb25lX2Jhc2UgY29uc3QgKgotICAgICAgICAgICAgY2xvbmUoKSBjb25zdAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IGNsb25lX2ltcGwoKnRoaXMsY2xvbmVfdGFnKCkpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdm9pZAotICAgICAgICAgICAgcmV0aHJvdygpIGNvbnN0Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHRocm93KnRoaXM7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSAgICAgICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgaW5saW5lCi0gICAgZXhjZXB0aW9uX2RldGFpbDo6Y2xvbmVfaW1wbDxUPgotICAgIGVuYWJsZV9jdXJyZW50X2V4Y2VwdGlvbiggVCBjb25zdCAmIHggKQotICAgICAgICB7Ci0gICAgICAgIHJldHVybiBleGNlcHRpb25fZGV0YWlsOjpjbG9uZV9pbXBsPFQ+KHgpOwotICAgICAgICB9Ci0gICAgfQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRlZmluZWQoTkROQk9PU1RfRVhDRVBUSU9OX0VOQUJMRV9XQVJOSU5HUykKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9leGNlcHRpb24vZ2V0X2Vycm9yX2luZm8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9leGNlcHRpb24vZ2V0X2Vycm9yX2luZm8uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjM0MTU0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZXhjZXB0aW9uL2dldF9lcnJvcl9pbmZvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMCArMCwwIEBACi0vL0NvcHlyaWdodCAoYykgMjAwNi0yMDA5IEVtaWwgRG90Y2hldnNraSBhbmQgUmV2ZXJnZSBTdHVkaW9zLCBJbmMuCi0KLS8vRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy9maWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9VVUlEXzFBNTkwMjI2NzUzMzExREQ5RTRDQ0Y2MTU2RDg5NTkzCi0jZGVmaW5lIE5ETkJPT1NUX1VVSURfMUE1OTAyMjY3NTMzMTFERDlFNENDRjYxNTZEODk1OTMKLSNpZiAoX19HTlVDX18qMTAwK19fR05VQ19NSU5PUl9fPjMwMSkgJiYgIWRlZmluZWQoTkROQk9PU1RfRVhDRVBUSU9OX0VOQUJMRV9XQVJOSU5HUykKLSNwcmFnbWEgR0NDIHN5c3RlbV9oZWFkZXIKLSNlbmRpZgotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmICFkZWZpbmVkKE5ETkJPT1NUX0VYQ0VQVElPTl9FTkFCTEVfV0FSTklOR1MpCi0jcHJhZ21hIHdhcm5pbmcocHVzaCwxKQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9leGNlcHRpb24vZXhjZXB0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9leGNlcHRpb24vZGV0YWlsL2Vycm9yX2luZm9faW1wbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZXhjZXB0aW9uL2RldGFpbC90eXBlX2luZm8uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NoYXJlZF9wdHIuaHBwPgotCi1uYW1lc3BhY2UKLW5kbmJvb3N0Ci0gICAgewotICAgIG5hbWVzcGFjZQotICAgIGV4Y2VwdGlvbl9kZXRhaWwKLSAgICAgICAgewotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRXJyb3JJbmZvPgotICAgICAgICBzdHJ1Y3QKLSAgICAgICAgZ2V0X2luZm8KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYwotICAgICAgICAgICAgdHlwZW5hbWUgRXJyb3JJbmZvOjp2YWx1ZV90eXBlICoKLSAgICAgICAgICAgIGdldCggZXhjZXB0aW9uIGNvbnN0ICYgeCApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmKCBleGNlcHRpb25fZGV0YWlsOjplcnJvcl9pbmZvX2NvbnRhaW5lciAqIGM9eC5kYXRhXy5nZXQoKSApCi0gICAgICAgICAgICAgICAgICAgIGlmKCBzaGFyZWRfcHRyPGV4Y2VwdGlvbl9kZXRhaWw6OmVycm9yX2luZm9fYmFzZT4gZWliID0gYy0+Z2V0KE5ETkJPT1NUX0VYQ0VQVElPTl9TVEFUSUNfVFlQRUlEKEVycm9ySW5mbykpICkKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSNpZm5kZWYgTkROQk9PU1RfTk9fUlRUSQotICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKCAwIT1keW5hbWljX2Nhc3Q8RXJyb3JJbmZvICo+KGVpYi5nZXQoKSkgKTsKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3JJbmZvICogdyA9IHN0YXRpY19jYXN0PEVycm9ySW5mbyAqPihlaWIuZ2V0KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICZ3LT52YWx1ZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGUgPD4KLSAgICAgICAgc3RydWN0Ci0gICAgICAgIGdldF9pbmZvPHRocm93X2Z1bmN0aW9uPgotICAgICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljCi0gICAgICAgICAgICBjaGFyIGNvbnN0ICogKgotICAgICAgICAgICAgZ2V0KCBleGNlcHRpb24gY29uc3QgJiB4ICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHgudGhyb3dfZnVuY3Rpb25fID8gJngudGhyb3dfZnVuY3Rpb25fIDogMDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlIDw+Ci0gICAgICAgIHN0cnVjdAotICAgICAgICBnZXRfaW5mbzx0aHJvd19maWxlPgotICAgICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljCi0gICAgICAgICAgICBjaGFyIGNvbnN0ICogKgotICAgICAgICAgICAgZ2V0KCBleGNlcHRpb24gY29uc3QgJiB4ICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHgudGhyb3dfZmlsZV8gPyAmeC50aHJvd19maWxlXyA6IDA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZSA8PgotICAgICAgICBzdHJ1Y3QKLSAgICAgICAgZ2V0X2luZm88dGhyb3dfbGluZT4KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYwotICAgICAgICAgICAgaW50ICoKLSAgICAgICAgICAgIGdldCggZXhjZXB0aW9uIGNvbnN0ICYgeCApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiB4LnRocm93X2xpbmVfIT0tMSA/ICZ4LnRocm93X2xpbmVfIDogMDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBULGNsYXNzIFI+Ci0gICAgICAgIHN0cnVjdAotICAgICAgICBnZXRfZXJyb3JfaW5mb19yZXR1cm5fdHlwZQotICAgICAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBSICogdHlwZTsKLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQsY2xhc3MgUj4KLSAgICAgICAgc3RydWN0Ci0gICAgICAgIGdldF9lcnJvcl9pbmZvX3JldHVybl90eXBlPFQgY29uc3QsUj4KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgUiBjb25zdCAqIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9Ci0KLSNpZmRlZiBORE5CT09TVF9OT19SVFRJCi0gICAgdGVtcGxhdGUgPGNsYXNzIEVycm9ySW5mbz4KLSAgICBpbmxpbmUKLSAgICB0eXBlbmFtZSBFcnJvckluZm86OnZhbHVlX3R5cGUgY29uc3QgKgotICAgIGdldF9lcnJvcl9pbmZvKCBuZG5ib29zdDo6ZXhjZXB0aW9uIGNvbnN0ICYgeCApCi0gICAgICAgIHsKLSAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbl9kZXRhaWw6OmdldF9pbmZvPEVycm9ySW5mbz46OmdldCh4KTsKLSAgICAgICAgfQotICAgIHRlbXBsYXRlIDxjbGFzcyBFcnJvckluZm8+Ci0gICAgaW5saW5lCi0gICAgdHlwZW5hbWUgRXJyb3JJbmZvOjp2YWx1ZV90eXBlICoKLSAgICBnZXRfZXJyb3JfaW5mbyggbmRuYm9vc3Q6OmV4Y2VwdGlvbiAmIHggKQotICAgICAgICB7Ci0gICAgICAgIHJldHVybiBleGNlcHRpb25fZGV0YWlsOjpnZXRfaW5mbzxFcnJvckluZm8+OjpnZXQoeCk7Ci0gICAgICAgIH0KLSNlbHNlCi0gICAgdGVtcGxhdGUgPGNsYXNzIEVycm9ySW5mbyxjbGFzcyBFPgotICAgIGlubGluZQotICAgIHR5cGVuYW1lIGV4Y2VwdGlvbl9kZXRhaWw6OmdldF9lcnJvcl9pbmZvX3JldHVybl90eXBlPEUsdHlwZW5hbWUgRXJyb3JJbmZvOjp2YWx1ZV90eXBlPjo6dHlwZQotICAgIGdldF9lcnJvcl9pbmZvKCBFICYgc29tZV9leGNlcHRpb24gKQotICAgICAgICB7Ci0gICAgICAgIGlmKCBleGNlcHRpb24gY29uc3QgKiB4ID0gZHluYW1pY19jYXN0PGV4Y2VwdGlvbiBjb25zdCAqPigmc29tZV9leGNlcHRpb24pICkKLSAgICAgICAgICAgIHJldHVybiBleGNlcHRpb25fZGV0YWlsOjpnZXRfaW5mbzxFcnJvckluZm8+OjpnZXQoKngpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotI2VuZGlmCi0gICAgfQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRlZmluZWQoTkROQk9PU1RfRVhDRVBUSU9OX0VOQUJMRV9XQVJOSU5HUykKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9maWxlc3lzdGVtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZmlsZXN5c3RlbS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwZjU1MDkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9maWxlc3lzdGVtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLS8vICBuZG5ib29zdC9maWxlc3lzdGVtLmhwcCAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IEJlbWFuIERhd2VzIDIwMTAKLQotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0KLS8vICBMaWJyYXJ5IGhvbWUgcGFnZTogaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9maWxlc3lzdGVtCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLyAKLQotI2lmbmRlZiBORE5CT09TVF9GSUxFU1lTVEVNX0ZJTEVTWVNURU1fSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0ZJTEVTWVNURU1fRklMRVNZU1RFTV9IUFAKLQotIyAgaW5jbHVkZSA8bmRuYm9vc3QvZmlsZXN5c3RlbS9jb25maWcuaHBwPgotIyAgaW5jbHVkZSA8bmRuYm9vc3QvZmlsZXN5c3RlbS9wYXRoLmhwcD4KLSMgIGluY2x1ZGUgPG5kbmJvb3N0L2ZpbGVzeXN0ZW0vb3BlcmF0aW9ucy5ocHA+Ci0jICBpbmNsdWRlIDxuZG5ib29zdC9maWxlc3lzdGVtL2NvbnZlbmllbmNlLmhwcD4KLQotI2VuZGlmICAvLyBORE5CT09TVF9GSUxFU1lTVEVNX0ZJTEVTWVNURU1fSFBQIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9maWxlc3lzdGVtL2NvbmZpZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2ZpbGVzeXN0ZW0vY29uZmlnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjcwYmVjMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2ZpbGVzeXN0ZW0vY29uZmlnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBACi0vLyAgbmRuYm9vc3QvZmlsZXN5c3RlbS92My9jb25maWcuaHBwICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCBCZW1hbiBEYXdlcyAyMDAzCi0KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dAotCi0vLyAgTGlicmFyeSBob21lIHBhZ2U6IGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvZmlsZXN5c3RlbQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8gCi0KLSNpZm5kZWYgTkROQk9PU1RfRklMRVNZU1RFTTNfQ09ORklHX0hQUAotI2RlZmluZSBORE5CT09TVF9GSUxFU1lTVEVNM19DT05GSUdfSFBQCi0KLSMgaWYgZGVmaW5lZChORE5CT09TVF9GSUxFU1lTVEVNX1ZFUlNJT04pICYmIE5ETkJPT1NUX0ZJTEVTWVNURU1fVkVSU0lPTiAhPSAzCi0jICAgZXJyb3IgQ29tcGlsaW5nIEZpbGVzeXN0ZW0gdmVyc2lvbiAzIGZpbGUgd2l0aCBORE5CT09TVF9GSUxFU1lTVEVNX1ZFUlNJT04gZGVmaW5lZCAhPSAzCi0jIGVuZGlmCi0KLSMgaWYgIWRlZmluZWQoTkROQk9PU1RfRklMRVNZU1RFTV9WRVJTSU9OKQotIyAgIGRlZmluZSBORE5CT09TVF9GSUxFU1lTVEVNX1ZFUlNJT04gMwotIyBlbmRpZgotCi0jZGVmaW5lIE5ETkJPT1NUX0ZJTEVTWVNURU1fSTE4TiAgLy8gYWlkIHVzZXJzIHdpc2hpbmcgdG8gY29tcGlsZSBzZXZlcmFsIHZlcnNpb25zCi0KLS8vIFRoaXMgaGVhZGVyIGltcGxlbWVudHMgc2VwYXJhdGUgY29tcGlsYXRpb24gZmVhdHVyZXMgYXMgZGVzY3JpYmVkIGluCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9tb3JlL3NlcGFyYXRlX2NvbXBpbGF0aW9uLmh0bWwKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3lzdGVtL2FwaV9jb25maWcuaHBwPiAgLy8gZm9yIE5ETkJPT1NUX1BPU0lYX0FQSSBvciBORE5CT09TVF9XSU5ET1dTX0FQSQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4gCi0KLS8vICBORE5CT09TVF9GSUxFU1lTVEVNX0RFUFJFQ0FURUQgbmVlZGVkIGZvciBzb3VyY2UgY29tcGlsZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jIGlmZGVmIE5ETkJPT1NUX0ZJTEVTWVNURU1fU09VUkNFCi0jICAgZGVmaW5lIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVQUkVDQVRFRAotIyBlbmRpZgotCi0vLyAgdGhyb3cgYW4gZXhjZXB0aW9uICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLS8vCi0vLyAgRXhjZXB0aW9ucyB3ZXJlIG9yaWdpbmFsbHkgdGhyb3duIHZpYSBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKCkuCi0vLyAgQXMgdGhyb3dfZXhjZXB0aW9uKCkgYmVjYW1lIG1vcmUgY29tcGxleCwgaXQgY2F1c2VkIHVzZXIgZXJyb3IgcmVwb3J0aW5nCi0vLyAgdG8gYmUgaGFyZGVyIHRvIGludGVycHJldCwgc2luY2UgdGhlIGV4Y2VwdGlvbiByZXBvcnRlZCBiZWNhbWUgbXVjaCBtb3JlIGNvbXBsZXguCi0vLyAgVGhlIGltbWVkaWF0ZSBmaXggd2FzIHRvIHRocm93IGRpcmVjdGx5LCB3cmFwcGVkIGluIGEgbWFjcm8gdG8gbWFrZSBhbnkgbGF0ZXIgY2hhbmdlCi0vLyAgZWFzaWVyLgotCi0jZGVmaW5lIE5ETkJPT1NUX0ZJTEVTWVNURU1fVEhST1coRVgpIHRocm93IEVYCi0KLSMgaWYgZGVmaW5lZCggTkROQk9PU1RfTk9fU1REX1dTVFJJTkcgKQotIyAgIGVycm9yIENvbmZpZ3VyYXRpb24gbm90IHN1cHBvcnRlZDogQm9vc3QuRmlsZXN5c3RlbSBWMyBhbmQgbGF0ZXIgcmVxdWlyZXMgc3RkOjp3c3RyaW5nIHN1cHBvcnQKLSMgZW5kaWYKLQotLy8gIFRoaXMgaGVhZGVyIGltcGxlbWVudHMgc2VwYXJhdGUgY29tcGlsYXRpb24gZmVhdHVyZXMgYXMgZGVzY3JpYmVkIGluCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvbW9yZS9zZXBhcmF0ZV9jb21waWxhdGlvbi5odG1sCi0KLS8vICBub3JtYWxpemUgbWFjcm9zICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfRklMRVNZU1RFTV9EWU5fTElOSykgJiYgIWRlZmluZWQoTkROQk9PU1RfRklMRVNZU1RFTV9TVEFUSUNfTElOSykgXAotICAmJiAhZGVmaW5lZChORE5CT09TVF9BTExfRFlOX0xJTkspICYmICFkZWZpbmVkKE5ETkJPT1NUX0FMTF9TVEFUSUNfTElOSykKLSMgZGVmaW5lIE5ETkJPT1NUX0ZJTEVTWVNURU1fU1RBVElDX0xJTksKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9BTExfRFlOX0xJTkspICYmICFkZWZpbmVkKE5ETkJPT1NUX0ZJTEVTWVNURU1fRFlOX0xJTkspCi0jIGRlZmluZSBORE5CT09TVF9GSUxFU1lTVEVNX0RZTl9MSU5LIAotI2VsaWYgZGVmaW5lZChORE5CT09TVF9BTExfU1RBVElDX0xJTkspICYmICFkZWZpbmVkKE5ETkJPT1NUX0ZJTEVTWVNURU1fU1RBVElDX0xJTkspCi0jIGRlZmluZSBORE5CT09TVF9GSUxFU1lTVEVNX1NUQVRJQ19MSU5LIAotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0ZJTEVTWVNURU1fRFlOX0xJTkspICYmIGRlZmluZWQoTkROQk9PU1RfRklMRVNZU1RFTV9TVEFUSUNfTElOSykKLSMgZXJyb3IgTXVzdCBub3QgZGVmaW5lIGJvdGggTkROQk9PU1RfRklMRVNZU1RFTV9EWU5fTElOSyBhbmQgTkROQk9PU1RfRklMRVNZU1RFTV9TVEFUSUNfTElOSwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0FMTF9OT19MSUIpICYmICFkZWZpbmVkKE5ETkJPT1NUX0ZJTEVTWVNURU1fTk9fTElCKQotIyBkZWZpbmUgTkROQk9PU1RfRklMRVNZU1RFTV9OT19MSUIgCi0jZW5kaWYKLQotLy8gIGVuYWJsZSBkeW5hbWljIGxpbmtpbmcgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0FMTF9EWU5fTElOSykgfHwgZGVmaW5lZChORE5CT09TVF9GSUxFU1lTVEVNX0RZTl9MSU5LKQotIyBpZiBkZWZpbmVkKE5ETkJPT1NUX0ZJTEVTWVNURU1fU09VUkNFKQotIyAgIGRlZmluZSBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wgTkROQk9PU1RfU1lNQk9MX0VYUE9SVAotIyBlbHNlIAotIyAgIGRlZmluZSBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wgTkROQk9PU1RfU1lNQk9MX0lNUE9SVAotIyBlbmRpZgotI2Vsc2UKLSMgZGVmaW5lIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotI2VuZGlmCi0KLS8vICBlbmFibGUgYXV0b21hdGljIGxpYnJhcnkgdmFyaWFudCBzZWxlY3Rpb24gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLyAKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0ZJTEVTWVNURU1fU09VUkNFKSAmJiAhZGVmaW5lZChORE5CT09TVF9BTExfTk9fTElCKSBcCi0gICYmICFkZWZpbmVkKE5ETkJPT1NUX0ZJTEVTWVNURU1fTk9fTElCKQotLy8KLS8vIFNldCB0aGUgbmFtZSBvZiBvdXIgbGlicmFyeSwgdGhpcyB3aWxsIGdldCB1bmRlZidlZCBieSBhdXRvX2xpbmsuaHBwCi0vLyBvbmNlIGl0J3MgZG9uZSB3aXRoIGl0OgotLy8KLSNkZWZpbmUgTkROQk9PU1RfTElCX05BTUUgbmRuYm9vc3RfZmlsZXN5c3RlbQotLy8KLS8vIElmIHdlJ3JlIGltcG9ydGluZyBjb2RlIGZyb20gYSBkbGwsIHRoZW4gdGVsbCBhdXRvX2xpbmsuaHBwIGFib3V0IGl0OgotLy8KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0FMTF9EWU5fTElOSykgfHwgZGVmaW5lZChORE5CT09TVF9GSUxFU1lTVEVNX0RZTl9MSU5LKQotIyAgZGVmaW5lIE5ETkJPT1NUX0RZTl9MSU5LCi0jZW5kaWYKLS8vCi0vLyBBbmQgaW5jbHVkZSB0aGUgaGVhZGVyIHRoYXQgZG9lcyB0aGUgd29yazoKLS8vCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL2F1dG9fbGluay5ocHA+Ci0jZW5kaWYgIC8vIGF1dG8tbGlua2luZyBkaXNhYmxlZAotCi0jZW5kaWYgLy8gTkROQk9PU1RfRklMRVNZU1RFTTNfQ09ORklHX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9maWxlc3lzdGVtL2NvbnZlbmllbmNlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZmlsZXN5c3RlbS9jb252ZW5pZW5jZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlOTE3NTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9maWxlc3lzdGVtL2NvbnZlbmllbmNlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLS8vICBuZG5ib29zdC9maWxlc3lzdGVtL2NvbnZlbmllbmNlLmhwcCAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBDb3B5cmlnaHQgQmVtYW4gRGF3ZXMsIDIwMDItMjAwNQotLy8gIENvcHlyaWdodCBWbGFkaW1pciBQcnVzLCAyMDAyCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vICBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBsaWJyYXJ5IGhvbWUgcGFnZSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2ZpbGVzeXN0ZW0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8gCi0KLSNpZm5kZWYgTkROQk9PU1RfRklMRVNZU1RFTTNfQ09OVkVOSUVOQ0VfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0ZJTEVTWVNURU0zX0NPTlZFTklFTkNFX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotIyBpZiBkZWZpbmVkKCBORE5CT09TVF9OT19TVERfV1NUUklORyApCi0jICAgZXJyb3IgQ29uZmlndXJhdGlvbiBub3Qgc3VwcG9ydGVkOiBCb29zdC5GaWxlc3lzdGVtIFYzIGFuZCBsYXRlciByZXF1aXJlcyBzdGQ6OndzdHJpbmcgc3VwcG9ydAotIyBlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZmlsZXN5c3RlbS9vcGVyYXRpb25zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zeXN0ZW0vZXJyb3JfY29kZS5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvYWJpX3ByZWZpeC5ocHA+IC8vIG11c3QgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gIG5hbWVzcGFjZSBmaWxlc3lzdGVtCi0gIHsKLQotIyBpZm5kZWYgTkROQk9PU1RfRklMRVNZU1RFTV9OT19ERVBSRUNBVEVECi0KLSAgICBpbmxpbmUgc3RkOjpzdHJpbmcgZXh0ZW5zaW9uKGNvbnN0IHBhdGggJiBwKQotICAgIHsKLSAgICAgIHJldHVybiBwLmV4dGVuc2lvbigpLnN0cmluZygpOwotICAgIH0KLQotICAgIGlubGluZSBzdGQ6OnN0cmluZyBiYXNlbmFtZShjb25zdCBwYXRoICYgcCkKLSAgICB7Ci0gICAgICByZXR1cm4gcC5zdGVtKCkuc3RyaW5nKCk7Ci0gICAgfQotCi0gICAgaW5saW5lIHBhdGggY2hhbmdlX2V4dGVuc2lvbiggY29uc3QgcGF0aCAmIHAsIGNvbnN0IHBhdGggJiBuZXdfZXh0ZW5zaW9uICkKLSAgICB7IAotICAgICAgcGF0aCBuZXdfcCggcCApOwotICAgICAgbmV3X3AucmVwbGFjZV9leHRlbnNpb24oIG5ld19leHRlbnNpb24gKTsKLSAgICAgIHJldHVybiBuZXdfcDsKLSAgICB9Ci0KLSMgZW5kaWYKLQotCi0gIH0gLy8gbmFtZXNwYWNlIGZpbGVzeXN0ZW0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvYWJpX3N1ZmZpeC5ocHA+IC8vIHBvcHMgYWJpX3ByZWZpeC5ocHAgcHJhZ21hcwotI2VuZGlmIC8vIE5ETkJPT1NUX0ZJTEVTWVNURU0zX0NPTlZFTklFTkNFX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9maWxlc3lzdGVtL2RldGFpbC91dGY4X2NvZGVjdnRfZmFjZXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9maWxlc3lzdGVtL2RldGFpbC91dGY4X2NvZGVjdnRfZmFjZXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZTgyNTFjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZmlsZXN5c3RlbS9kZXRhaWwvdXRmOF9jb2RlY3Z0X2ZhY2V0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLS8vIENvcHlyaWdodCAoYykgMjAwMSBSb25hbGQgR2FyY2lhLCBJbmRpYW5hIFVuaXZlcnNpdHkgKGdhcmNpYUBvc2wuaXUuZWR1KQotLy8gQW5kcmV3IEx1bXNkYWluZSwgSW5kaWFuYSBVbml2ZXJzaXR5IChsdW1zQG9zbC5pdS5lZHUpLgotCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9GSUxFU1lTVEVNX1VURjhfQ09ERUNWVF9GQUNFVF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfRklMRVNZU1RFTV9VVEY4X0NPREVDVlRfRkFDRVRfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9maWxlc3lzdGVtL2NvbmZpZy5ocHA+Ci0KLSNkZWZpbmUgTkROQk9PU1RfVVRGOF9CRUdJTl9OQU1FU1BBQ0UgXAotICAgICBuYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgZmlsZXN5c3RlbSB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi0jZGVmaW5lIE5ETkJPT1NUX1VURjhfRU5EX05BTUVTUEFDRSB9fX0KLSNkZWZpbmUgTkROQk9PU1RfVVRGOF9ERUNMIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3V0ZjhfY29kZWN2dF9mYWNldC5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9VVEY4X0JFR0lOX05BTUVTUEFDRQotI3VuZGVmIE5ETkJPT1NUX1VURjhfRU5EX05BTUVTUEFDRQotI3VuZGVmIE5ETkJPT1NUX1VURjhfREVDTAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZmlsZXN5c3RlbS9vcGVyYXRpb25zLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZmlsZXN5c3RlbS9vcGVyYXRpb25zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjM5NWU0OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2ZpbGVzeXN0ZW0vb3BlcmF0aW9ucy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDk2ICswLDAgQEAKLS8vICBuZG5ib29zdC9maWxlc3lzdGVtL29wZXJhdGlvbnMuaHBwICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IEJlbWFuIERhd2VzIDIwMDItMjAwOQotLy8gIENvcHlyaWdodCBKYW4gTGFuZ2VyIDIwMDIKLS8vICBDb3B5cmlnaHQgRGlldG1hciBLdWVobCAyMDAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLy8gIENvcHlyaWdodCBWbGFkaW1pciBQcnVzIDIwMDIKLSAgIAotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0KLS8vICBMaWJyYXJ5IGhvbWUgcGFnZTogaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9maWxlc3lzdGVtCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX0ZJTEVTWVNURU0zX09QRVJBVElPTlNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0ZJTEVTWVNURU0zX09QRVJBVElPTlNfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0jIGlmIGRlZmluZWQoIE5ETkJPT1NUX05PX1NURF9XU1RSSU5HICkKLSMgICBlcnJvciBDb25maWd1cmF0aW9uIG5vdCBzdXBwb3J0ZWQ6IEJvb3N0LkZpbGVzeXN0ZW0gVjMgYW5kIGxhdGVyIHJlcXVpcmVzIHN0ZDo6d3N0cmluZyBzdXBwb3J0Ci0jIGVuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9maWxlc3lzdGVtL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZmlsZXN5c3RlbS9wYXRoLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9zY29wZWRfZW51bV9lbXVsYXRpb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9iaXRtYXNrLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zeXN0ZW0vZXJyb3JfY29kZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3lzdGVtL3N5c3RlbV9lcnJvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc2hhcmVkX3B0ci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9lbmFibGVfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jc3RkaW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotCi0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHV0aWxpdHk+IC8vIGZvciBwYWlyCi0jaW5jbHVkZSA8Y3RpbWU+Ci0jaW5jbHVkZSA8dmVjdG9yPgotI2luY2x1ZGUgPHN0YWNrPgotCi0jaWZkZWYgTkROQk9PU1RfV0lORE9XU19BUEkKLSMgIGluY2x1ZGUgPGZzdHJlYW0+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9hYmlfcHJlZml4LmhwcD4gLy8gbXVzdCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gIG5hbWVzcGFjZSBmaWxlc3lzdGVtCi0gIHsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlX3R5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gIGVudW0gZmlsZV90eXBlCi0gIHsgCi0gICAgc3RhdHVzX2Vycm9yLAotIyAgIGlmbmRlZiBORE5CT09TVF9GSUxFU1lTVEVNX05PX0RFUFJFQ0FURUQKLSAgICBzdGF0dXNfdW5rbm93biA9IHN0YXR1c19lcnJvciwKLSMgICBlbmRpZgotICAgIGZpbGVfbm90X2ZvdW5kLAotICAgIHJlZ3VsYXJfZmlsZSwKLSAgICBkaXJlY3RvcnlfZmlsZSwKLSAgICAvLyB0aGUgZm9sbG93aW5nIG1heSBub3QgYXBwbHkgdG8gc29tZSBvcGVyYXRpbmcgc3lzdGVtcyBvciBmaWxlIHN5c3RlbXMKLSAgICBzeW1saW5rX2ZpbGUsCi0gICAgYmxvY2tfZmlsZSwKLSAgICBjaGFyYWN0ZXJfZmlsZSwKLSAgICBmaWZvX2ZpbGUsCi0gICAgc29ja2V0X2ZpbGUsCi0gICAgcmVwYXJzZV9maWxlLCAgLy8gV2luZG93czogRklMRV9BVFRSSUJVVEVfUkVQQVJTRV9QT0lOVCB0aGF0IGlzIG5vdCBhIHN5bWxpbmsKLSAgICB0eXBlX3Vua25vd24sICAvLyBmaWxlIGRvZXMgZXhpc3QsIGJ1dCBpc24ndCBvbmUgb2YgdGhlIGFib3ZlIHR5cGVzIG9yCi0gICAgICAgICAgICAgICAgICAgLy8gd2UgZG9uJ3QgaGF2ZSBzdHJvbmcgZW5vdWdoIHBlcm1pc3Npb24gdG8gZmluZCBpdHMgdHlwZQotCi0gICAgX2RldGFpbF9kaXJlY3Rvcnlfc3ltbGluayAgLy8gaW50ZXJuYWwgdXNlIG9ubHk7IG5ldmVyIGV4cG9zZWQgdG8gdXNlcnMKLSAgfTsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcm1zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gIGVudW0gcGVybXMKLSAgewotICAgIG5vX3Blcm1zID0gMCwgICAgICAgLy8gZmlsZV9ub3RfZm91bmQgaXMgbm9fcGVybXMgcmF0aGVyIHRoYW4gcGVybXNfbm90X2tub3duCi0KLSAgICAvLyBQT1NJWCBlcXVpdmFsZW50IG1hY3JvcyBnaXZlbiBpbiBjb21tZW50cy4KLSAgICAvLyBWYWx1ZXMgYXJlIGZyb20gUE9TSVggYW5kIGFyZSBnaXZlbiBpbiBvY3RhbCBwZXIgdGhlIFBPU0lYIHN0YW5kYXJkLgotCi0gICAgLy8gcGVybWlzc2lvbiBiaXRzCi0gICAgCi0gICAgb3duZXJfcmVhZCA9IDA0MDAsICAvLyBTX0lSVVNSLCBSZWFkIHBlcm1pc3Npb24sIG93bmVyCi0gICAgb3duZXJfd3JpdGUgPSAwMjAwLCAvLyBTX0lXVVNSLCBXcml0ZSBwZXJtaXNzaW9uLCBvd25lcgotICAgIG93bmVyX2V4ZSA9IDAxMDAsICAgLy8gU19JWFVTUiwgRXhlY3V0ZS9zZWFyY2ggcGVybWlzc2lvbiwgb3duZXIKLSAgICBvd25lcl9hbGwgPSAwNzAwLCAgIC8vIFNfSVJXWFUsIFJlYWQsIHdyaXRlLCBleGVjdXRlL3NlYXJjaCBieSBvd25lcgotCi0gICAgZ3JvdXBfcmVhZCA9IDA0MCwgICAvLyBTX0lSR1JQLCBSZWFkIHBlcm1pc3Npb24sIGdyb3VwCi0gICAgZ3JvdXBfd3JpdGUgPSAwMjAsICAvLyBTX0lXR1JQLCBXcml0ZSBwZXJtaXNzaW9uLCBncm91cAotICAgIGdyb3VwX2V4ZSA9IDAxMCwgICAgLy8gU19JWEdSUCwgRXhlY3V0ZS9zZWFyY2ggcGVybWlzc2lvbiwgZ3JvdXAKLSAgICBncm91cF9hbGwgPSAwNzAsICAgIC8vIFNfSVJXWEcsIFJlYWQsIHdyaXRlLCBleGVjdXRlL3NlYXJjaCBieSBncm91cAotCi0gICAgb3RoZXJzX3JlYWQgPSAwNCwgICAvLyBTX0lST1RILCBSZWFkIHBlcm1pc3Npb24sIG90aGVycwotICAgIG90aGVyc193cml0ZSA9IDAyLCAgLy8gU19JV09USCwgV3JpdGUgcGVybWlzc2lvbiwgb3RoZXJzCi0gICAgb3RoZXJzX2V4ZSA9IDAxLCAgICAvLyBTX0lYT1RILCBFeGVjdXRlL3NlYXJjaCBwZXJtaXNzaW9uLCBvdGhlcnMKLSAgICBvdGhlcnNfYWxsID0gMDcsICAgIC8vIFNfSVJXWE8sIFJlYWQsIHdyaXRlLCBleGVjdXRlL3NlYXJjaCBieSBvdGhlcnMKLQotICAgIGFsbF9hbGwgPSBvd25lcl9hbGx8Z3JvdXBfYWxsfG90aGVyc19hbGwsICAvLyAwNzc3Ci0KLSAgICAvLyBvdGhlciBQT1NJWCBiaXRzCi0KLSAgICBzZXRfdWlkX29uX2V4ZSA9IDA0MDAwLCAvLyBTX0lTVUlELCBTZXQtdXNlci1JRCBvbiBleGVjdXRpb24KLSAgICBzZXRfZ2lkX29uX2V4ZSA9IDAyMDAwLCAvLyBTX0lTR0lELCBTZXQtZ3JvdXAtSUQgb24gZXhlY3V0aW9uCi0gICAgc3RpY2t5X2JpdCAgICAgPSAwMTAwMCwgLy8gU19JU1ZUWCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoUE9TSVggWFNJKSBPbiBkaXJlY3RvcmllcywgcmVzdHJpY3RlZCBkZWxldGlvbiBmbGFnIAotCSAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKFY3KSAnc3RpY2t5IGJpdCc6IHNhdmUgc3dhcHBlZCB0ZXh0IGV2ZW4gYWZ0ZXIgdXNlIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChTdW5PUykgT24gbm9uLWRpcmVjdG9yaWVzOiBkb24ndCBjYWNoZSB0aGlzIGZpbGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoU1ZJRC12NC4yKSBPbiBkaXJlY3RvcmllczogcmVzdHJpY3RlZCBkZWxldGlvbiBmbGFnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWxzbyBzZWUgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdGlja3lfYml0Ci0KLSAgICBwZXJtc19tYXNrID0gYWxsX2FsbHxzZXRfdWlkX29uX2V4ZXxzZXRfZ2lkX29uX2V4ZXxzdGlja3lfYml0LCAgLy8gMDc3NzcKLQotICAgIHBlcm1zX25vdF9rbm93biA9IDB4RkZGRiwgLy8gcHJlc2VudCB3aGVuIGRpcmVjdG9yeV9lbnRyeSBjYWNoZSBub3QgbG9hZGVkCi0KLSAgICAvLyBvcHRpb25zIGZvciBwZXJtaXNzaW9ucygpIGZ1bmN0aW9uCi0KLSAgICBhZGRfcGVybXMgPSAweDEwMDAsICAgICAvLyBhZGRzIHRoZSBnaXZlbiBwZXJtaXNzaW9uIGJpdHMgdG8gdGhlIGN1cnJlbnQgYml0cwotICAgIHJlbW92ZV9wZXJtcyA9IDB4MjAwMCwgIC8vIHJlbW92ZXMgdGhlIGdpdmVuIHBlcm1pc3Npb24gYml0cyBmcm9tIHRoZSBjdXJyZW50IGJpdHM7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hvb3NlIGFkZF9wZXJtcyBvciByZW1vdmVfcGVybXMsIG5vdCBib3RoOyBpZiBuZWl0aGVyIGFkZF9wZXJtcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vciByZW1vdmVfcGVybXMgaXMgZ2l2ZW4sIHJlcGxhY2UgdGhlIGN1cnJlbnQgYml0cyB3aXRoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGdpdmVuIGJpdHMuCi0KLSAgICBzeW1saW5rX3Blcm1zID0gMHg0MDAwICAvLyBvbiBQT1NJWCwgZG9uJ3QgcmVzb2x2ZSBzeW1saW5rczsgaW1wbGllZCBvbiBXaW5kb3dzCi0gIH07Ci0KLSAgTkROQk9PU1RfQklUTUFTSyhwZXJtcykKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfc3RhdHVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gIGNsYXNzIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTCBmaWxlX3N0YXR1cwotICB7Ci0gIHB1YmxpYzoKLSAgICAgICAgICAgICBmaWxlX3N0YXR1cygpICAgICAgICAgICAgOiBtX3ZhbHVlKHN0YXR1c19lcnJvciksIG1fcGVybXMocGVybXNfbm90X2tub3duKSB7fQotICAgIGV4cGxpY2l0IGZpbGVfc3RhdHVzKGZpbGVfdHlwZSB2LCBwZXJtcyBwcm1zID0gcGVybXNfbm90X2tub3duKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG1fdmFsdWUodiksIG1fcGVybXMocHJtcykge30KLQotICAgIC8vIG9ic2VydmVycwotICAgIGZpbGVfdHlwZSAgdHlwZSgpIGNvbnN0ICAgICAgICAgICAgICAgICAgICAgICB7IHJldHVybiBtX3ZhbHVlOyB9Ci0gICAgcGVybXMgICAgICBwZXJtaXNzaW9ucygpIGNvbnN0ICAgICAgICAgICAgICAgIHsgcmV0dXJuIG1fcGVybXM7IH0gCi0KLSAgICAvLyBtb2RpZmllcnMKLSAgICB2b2lkICAgICAgIHR5cGUoZmlsZV90eXBlIHYpICAgICAgICAgICAgICAgICAgeyBtX3ZhbHVlID0gdjsgfQotICAgIHZvaWQgICAgICAgcGVybWlzc2lvbnMocGVybXMgcHJtcykgICAgICAgICAgICB7IG1fcGVybXMgPSBwcm1zOyB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgZmlsZV9zdGF0dXMmIHJocykgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IHJocy50eXBlKCkgJiYgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVybWlzc2lvbnMoKSA9PSByaHMucGVybWlzc2lvbnMoKTsgfQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBmaWxlX3N0YXR1cyYgcmhzKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IHJocyk7IH0KLQotICBwcml2YXRlOgotICAgIGZpbGVfdHlwZSAgIG1fdmFsdWU7Ci0gICAgZW51bSBwZXJtcyAgbV9wZXJtczsKLSAgfTsKLQotICBpbmxpbmUgYm9vbCB0eXBlX3ByZXNlbnQoZmlsZV9zdGF0dXMgZikgeyByZXR1cm4gZi50eXBlKCkgIT0gc3RhdHVzX2Vycm9yOyB9Ci0gIGlubGluZSBib29sIHBlcm1pc3Npb25zX3ByZXNlbnQoZmlsZV9zdGF0dXMgZikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyZXR1cm4gZi5wZXJtaXNzaW9ucygpICE9IHBlcm1zX25vdF9rbm93bjt9Ci0gIGlubGluZSBib29sIHN0YXR1c19rbm93bihmaWxlX3N0YXR1cyBmKSB7IHJldHVybiB0eXBlX3ByZXNlbnQoZikgJiYgcGVybWlzc2lvbnNfcHJlc2VudChmKTsgfQotICBpbmxpbmUgYm9vbCBleGlzdHMoZmlsZV9zdGF0dXMgZikgICAgICAgeyByZXR1cm4gZi50eXBlKCkgIT0gc3RhdHVzX2Vycm9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBmLnR5cGUoKSAhPSBmaWxlX25vdF9mb3VuZDsgfQotICBpbmxpbmUgYm9vbCBpc19yZWd1bGFyX2ZpbGUoZmlsZV9zdGF0dXMgZil7IHJldHVybiBmLnR5cGUoKSA9PSByZWd1bGFyX2ZpbGU7IH0KLSAgaW5saW5lIGJvb2wgaXNfZGlyZWN0b3J5KGZpbGVfc3RhdHVzIGYpIHsgcmV0dXJuIGYudHlwZSgpID09IGRpcmVjdG9yeV9maWxlOyB9Ci0gIGlubGluZSBib29sIGlzX3N5bWxpbmsoZmlsZV9zdGF0dXMgZikgICB7IHJldHVybiBmLnR5cGUoKSA9PSBzeW1saW5rX2ZpbGU7IH0KLSAgaW5saW5lIGJvb2wgaXNfb3RoZXIoZmlsZV9zdGF0dXMgZikgICAgIHsgcmV0dXJuIGV4aXN0cyhmKSAmJiAhaXNfcmVndWxhcl9maWxlKGYpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhaXNfZGlyZWN0b3J5KGYpICYmICFpc19zeW1saW5rKGYpOyB9Ci0KLSMgaWZuZGVmIE5ETkJPT1NUX0ZJTEVTWVNURU1fTk9fREVQUkVDQVRFRAotICBpbmxpbmUgYm9vbCBpc19yZWd1bGFyKGZpbGVfc3RhdHVzIGYpICAgeyByZXR1cm4gZi50eXBlKCkgPT0gcmVndWxhcl9maWxlOyB9Ci0jIGVuZGlmCi0KLSAgc3RydWN0IHNwYWNlX2luZm8KLSAgewotICAgIC8vIGFsbCB2YWx1ZXMgYXJlIGJ5dGUgY291bnRzCi0gICAgbmRuYm9vc3Q6OnVpbnRtYXhfdCBjYXBhY2l0eTsKLSAgICBuZG5ib29zdDo6dWludG1heF90IGZyZWU7ICAgICAgLy8gPD0gY2FwYWNpdHkKLSAgICBuZG5ib29zdDo6dWludG1heF90IGF2YWlsYWJsZTsgLy8gPD0gZnJlZQotICB9OwotCi0gIE5ETkJPT1NUX1NDT1BFRF9FTlVNX1NUQVJUKGNvcHlfb3B0aW9uKQotICAgIHtub25lLCBmYWlsX2lmX2V4aXN0cyA9IG5vbmUsIG92ZXJ3cml0ZV9pZl9leGlzdHN9OwotICBORE5CT09TVF9TQ09QRURfRU5VTV9FTkQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb24gZGV0YWlscyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gIG5hbWVzcGFjZSBkZXRhaWwKLSAgewotICAgIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotICAgIGZpbGVfc3RhdHVzIHN0YXR1cyhjb25zdCBwYXRoJnAsIHN5c3RlbTo6ZXJyb3JfY29kZSogZWM9MCk7Ci0gICAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMCi0gICAgZmlsZV9zdGF0dXMgc3ltbGlua19zdGF0dXMoY29uc3QgcGF0aCYgcCwgc3lzdGVtOjplcnJvcl9jb2RlKiBlYz0wKTsKLSAgICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wKLSAgICBib29sIGlzX2VtcHR5KGNvbnN0IHBhdGgmIHAsIHN5c3RlbTo6ZXJyb3JfY29kZSogZWM9MCk7Ci0gICAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMCi0gICAgcGF0aCBpbml0aWFsX3BhdGgoc3lzdGVtOjplcnJvcl9jb2RlKiBlYz0wKTsKLSAgICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wKLSAgICBwYXRoIGNhbm9uaWNhbChjb25zdCBwYXRoJiBwLCBjb25zdCBwYXRoJiBiYXNlLCBzeXN0ZW06OmVycm9yX2NvZGUqIGVjPTApOwotICAgIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotICAgIHZvaWQgY29weShjb25zdCBwYXRoJiBmcm9tLCBjb25zdCBwYXRoJiB0bywgc3lzdGVtOjplcnJvcl9jb2RlKiBlYz0wKTsKLSAgICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wKLSAgICB2b2lkIGNvcHlfZGlyZWN0b3J5KGNvbnN0IHBhdGgmIGZyb20sIGNvbnN0IHBhdGgmIHRvLCBzeXN0ZW06OmVycm9yX2NvZGUqIGVjPTApOwotICAgIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotICAgIHZvaWQgY29weV9maWxlKGNvbnN0IHBhdGgmIGZyb20sIGNvbnN0IHBhdGgmIHRvLAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9TQ09QRURfRU5VTShjb3B5X29wdGlvbikgb3B0aW9uLCAgLy8gU2VlIHRpY2tldCAjMjkyNQotICAgICAgICAgICAgICAgICAgICBzeXN0ZW06OmVycm9yX2NvZGUqIGVjPTApOwotICAgIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotICAgIHZvaWQgY29weV9zeW1saW5rKGNvbnN0IHBhdGgmIGV4aXN0aW5nX3N5bWxpbmssIGNvbnN0IHBhdGgmIG5ld19zeW1saW5rLCBzeXN0ZW06OmVycm9yX2NvZGUqIGVjPTApOwotICAgIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotICAgIGJvb2wgY3JlYXRlX2RpcmVjdG9yaWVzKGNvbnN0IHBhdGgmIHAsIHN5c3RlbTo6ZXJyb3JfY29kZSogZWM9MCk7Ci0gICAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMCi0gICAgYm9vbCBjcmVhdGVfZGlyZWN0b3J5KGNvbnN0IHBhdGgmIHAsIHN5c3RlbTo6ZXJyb3JfY29kZSogZWM9MCk7Ci0gICAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMCi0gICAgdm9pZCBjcmVhdGVfZGlyZWN0b3J5X3N5bWxpbmsoY29uc3QgcGF0aCYgdG8sIGNvbnN0IHBhdGgmIGZyb20sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtOjplcnJvcl9jb2RlKiBlYz0wKTsKLSAgICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wKLSAgICB2b2lkIGNyZWF0ZV9oYXJkX2xpbmsoY29uc3QgcGF0aCYgdG8sIGNvbnN0IHBhdGgmIGZyb20sIHN5c3RlbTo6ZXJyb3JfY29kZSogZWM9MCk7Ci0gICAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMCi0gICAgdm9pZCBjcmVhdGVfc3ltbGluayhjb25zdCBwYXRoJiB0bywgY29uc3QgcGF0aCYgZnJvbSwgc3lzdGVtOjplcnJvcl9jb2RlKiBlYz0wKTsKLSAgICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wKLSAgICBwYXRoIGN1cnJlbnRfcGF0aChzeXN0ZW06OmVycm9yX2NvZGUqIGVjPTApOwotICAgIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotICAgIHZvaWQgY3VycmVudF9wYXRoKGNvbnN0IHBhdGgmIHAsIHN5c3RlbTo6ZXJyb3JfY29kZSogZWM9MCk7Ci0gICAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMCi0gICAgYm9vbCBlcXVpdmFsZW50KGNvbnN0IHBhdGgmIHAxLCBjb25zdCBwYXRoJiBwMiwgc3lzdGVtOjplcnJvcl9jb2RlKiBlYz0wKTsKLSAgICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wKLSAgICBuZG5ib29zdDo6dWludG1heF90IGZpbGVfc2l6ZShjb25zdCBwYXRoJiBwLCBzeXN0ZW06OmVycm9yX2NvZGUqIGVjPTApOwotICAgIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotICAgIG5kbmJvb3N0Ojp1aW50bWF4X3QgaGFyZF9saW5rX2NvdW50KGNvbnN0IHBhdGgmIHAsIHN5c3RlbTo6ZXJyb3JfY29kZSogZWM9MCk7Ci0gICAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMCi0gICAgc3RkOjp0aW1lX3QgbGFzdF93cml0ZV90aW1lKGNvbnN0IHBhdGgmIHAsIHN5c3RlbTo6ZXJyb3JfY29kZSogZWM9MCk7Ci0gICAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMCi0gICAgdm9pZCBsYXN0X3dyaXRlX3RpbWUoY29uc3QgcGF0aCYgcCwgY29uc3Qgc3RkOjp0aW1lX3QgbmV3X3RpbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtOjplcnJvcl9jb2RlKiBlYz0wKTsKLSAgICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wKLSAgICB2b2lkIHBlcm1pc3Npb25zKGNvbnN0IHBhdGgmIHAsIHBlcm1zIHBybXMsIHN5c3RlbTo6ZXJyb3JfY29kZSogZWM9MCk7Ci0gICAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMCi0gICAgcGF0aCByZWFkX3N5bWxpbmsoY29uc3QgcGF0aCYgcCwgc3lzdGVtOjplcnJvcl9jb2RlKiBlYz0wKTsKLSAgICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wKLSAgICAgIC8vIEZvciBzdGFuZGFyZGl6YXRpb24sIGlmIHRoZSBjb21taXR0ZWUgZG9lc24ndCBsaWtlICJyZW1vdmUiLCBjb25zaWRlciAiZWxpbWluYXRlIgotICAgIGJvb2wgcmVtb3ZlKGNvbnN0IHBhdGgmIHAsIHN5c3RlbTo6ZXJyb3JfY29kZSogZWM9MCk7Ci0gICAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMCi0gICAgbmRuYm9vc3Q6OnVpbnRtYXhfdCByZW1vdmVfYWxsKGNvbnN0IHBhdGgmIHAsIHN5c3RlbTo6ZXJyb3JfY29kZSogZWM9MCk7Ci0gICAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMCi0gICAgdm9pZCByZW5hbWUoY29uc3QgcGF0aCYgb2xkX3AsIGNvbnN0IHBhdGgmIG5ld19wLCBzeXN0ZW06OmVycm9yX2NvZGUqIGVjPTApOwotICAgIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotICAgIHZvaWQgcmVzaXplX2ZpbGUoY29uc3QgcGF0aCYgcCwgdWludG1heF90IHNpemUsIHN5c3RlbTo6ZXJyb3JfY29kZSogZWM9MCk7Ci0gICAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMCi0gICAgc3BhY2VfaW5mbyBzcGFjZShjb25zdCBwYXRoJiBwLCBzeXN0ZW06OmVycm9yX2NvZGUqIGVjPTApOyAKLSAgICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wKLSAgICBwYXRoIHN5c3RlbV9jb21wbGV0ZShjb25zdCBwYXRoJiBwLCBzeXN0ZW06OmVycm9yX2NvZGUqIGVjPTApOwotICAgIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotICAgIHBhdGggdGVtcF9kaXJlY3RvcnlfcGF0aChzeXN0ZW06OmVycm9yX2NvZGUqIGVjPTApOwotICAgIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotICAgIHBhdGggdW5pcXVlX3BhdGgoY29uc3QgcGF0aCYgcCwgc3lzdGVtOjplcnJvcl9jb2RlKiBlYz0wKTsKLSAgfSAgLy8gbmFtZXNwYWNlIGRldGFpbAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyBxdWVyeSBmdW5jdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gIGlubGluZQotICBmaWxlX3N0YXR1cyBzdGF0dXMoY29uc3QgcGF0aCYgcCkgICAge3JldHVybiBkZXRhaWw6OnN0YXR1cyhwKTt9Ci0gIGlubGluZSAKLSAgZmlsZV9zdGF0dXMgc3RhdHVzKGNvbnN0IHBhdGgmIHAsIHN5c3RlbTo6ZXJyb3JfY29kZSYgZWMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cmV0dXJuIGRldGFpbDo6c3RhdHVzKHAsICZlYyk7fQotICBpbmxpbmUgCi0gIGZpbGVfc3RhdHVzIHN5bWxpbmtfc3RhdHVzKGNvbnN0IHBhdGgmIHApIHtyZXR1cm4gZGV0YWlsOjpzeW1saW5rX3N0YXR1cyhwKTt9Ci0gIGlubGluZQotICBmaWxlX3N0YXR1cyBzeW1saW5rX3N0YXR1cyhjb25zdCBwYXRoJiBwLCBzeXN0ZW06OmVycm9yX2NvZGUmIGVjKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3JldHVybiBkZXRhaWw6OnN5bWxpbmtfc3RhdHVzKHAsICZlYyk7fQotICBpbmxpbmUgCi0gIGJvb2wgZXhpc3RzKGNvbnN0IHBhdGgmIHApICAgICAgICAgICB7cmV0dXJuIGV4aXN0cyhkZXRhaWw6OnN0YXR1cyhwKSk7fQotICBpbmxpbmUgCi0gIGJvb2wgZXhpc3RzKGNvbnN0IHBhdGgmIHAsIHN5c3RlbTo6ZXJyb3JfY29kZSYgZWMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cmV0dXJuIGV4aXN0cyhkZXRhaWw6OnN0YXR1cyhwLCAmZWMpKTt9Ci0gIGlubGluZSAKLSAgYm9vbCBpc19kaXJlY3RvcnkoY29uc3QgcGF0aCYgcCkgICAgIHtyZXR1cm4gaXNfZGlyZWN0b3J5KGRldGFpbDo6c3RhdHVzKHApKTt9Ci0gIGlubGluZSAKLSAgYm9vbCBpc19kaXJlY3RvcnkoY29uc3QgcGF0aCYgcCwgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyZXR1cm4gaXNfZGlyZWN0b3J5KGRldGFpbDo6c3RhdHVzKHAsICZlYykpO30KLSAgaW5saW5lIAotICBib29sIGlzX3JlZ3VsYXJfZmlsZShjb25zdCBwYXRoJiBwKSAge3JldHVybiBpc19yZWd1bGFyX2ZpbGUoZGV0YWlsOjpzdGF0dXMocCkpO30KLSAgaW5saW5lIAotICBib29sIGlzX3JlZ3VsYXJfZmlsZShjb25zdCBwYXRoJiBwLCBzeXN0ZW06OmVycm9yX2NvZGUmIGVjKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3JldHVybiBpc19yZWd1bGFyX2ZpbGUoZGV0YWlsOjpzdGF0dXMocCwgJmVjKSk7fQotICBpbmxpbmUgCi0gIGJvb2wgaXNfb3RoZXIoY29uc3QgcGF0aCYgcCkgICAgICAgICB7cmV0dXJuIGlzX290aGVyKGRldGFpbDo6c3RhdHVzKHApKTt9Ci0gIGlubGluZSAKLSAgYm9vbCBpc19vdGhlcihjb25zdCBwYXRoJiBwLCBzeXN0ZW06OmVycm9yX2NvZGUmIGVjKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3JldHVybiBpc19vdGhlcihkZXRhaWw6OnN0YXR1cyhwLCAmZWMpKTt9Ci0gIGlubGluZQotICBib29sIGlzX3N5bWxpbmsoY29uc3QgcGF0aCYgcCkgICAgICAge3JldHVybiBpc19zeW1saW5rKGRldGFpbDo6c3ltbGlua19zdGF0dXMocCkpO30KLSAgaW5saW5lIAotICBib29sIGlzX3N5bWxpbmsoY29uc3QgcGF0aCYgcCwgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyZXR1cm4gaXNfc3ltbGluayhkZXRhaWw6OnN5bWxpbmtfc3RhdHVzKHAsICZlYykpO30KLSMgaWZuZGVmIE5ETkJPT1NUX0ZJTEVTWVNURU1fTk9fREVQUkVDQVRFRAotICBpbmxpbmUKLSAgYm9vbCBpc19yZWd1bGFyKGNvbnN0IHBhdGgmIHApICAgICAgIHtyZXR1cm4gaXNfcmVndWxhcihkZXRhaWw6OnN0YXR1cyhwKSk7fQotICBpbmxpbmUKLSAgYm9vbCBpc19yZWd1bGFyKGNvbnN0IHBhdGgmIHAsIHN5c3RlbTo6ZXJyb3JfY29kZSYgZWMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cmV0dXJuIGlzX3JlZ3VsYXIoZGV0YWlsOjpzdGF0dXMocCwgJmVjKSk7fQotIyBlbmRpZgotCi0gIGlubGluZQotICBib29sIGlzX2VtcHR5KGNvbnN0IHBhdGgmIHApICAgICAgICAge3JldHVybiBkZXRhaWw6OmlzX2VtcHR5KHApO30KLSAgaW5saW5lCi0gIGJvb2wgaXNfZW1wdHkoY29uc3QgcGF0aCYgcCwgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyZXR1cm4gZGV0YWlsOjppc19lbXB0eShwLCAmZWMpO30KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25hbCBmdW5jdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8gICAgICAgICAgICAgICAgICBpbiBhbHBoYWJldGljYWwgb3JkZXIsIHVubGVzcyBvdGhlcndpc2Ugbm90ZWQgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotIAotICAvLyAgZm9yd2FyZCBkZWNsYXJhdGlvbnMKLSAgcGF0aCBjdXJyZW50X3BhdGgoKTsgIC8vIGZ3ZCBkZWNsYXJhdGlvbgotICBwYXRoIGluaXRpYWxfcGF0aCgpOwotCi0gIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotICBwYXRoIGFic29sdXRlKGNvbnN0IHBhdGgmIHAsIGNvbnN0IHBhdGgmIGJhc2U9Y3VycmVudF9wYXRoKCkpOwotICAvLyAgSWYgYmFzZS5pc19hYnNvbHV0ZSgpLCB0aHJvd3Mgbm90aGluZy4gVGh1cyBubyBuZWVkIGZvciBlYyBhcmd1bWVudAotCi0gIGlubGluZQotICBwYXRoIGNhbm9uaWNhbChjb25zdCBwYXRoJiBwLCBjb25zdCBwYXRoJiBiYXNlPWN1cnJlbnRfcGF0aCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3JldHVybiBkZXRhaWw6OmNhbm9uaWNhbChwLCBiYXNlKTt9Ci0gIGlubGluZQotICBwYXRoIGNhbm9uaWNhbChjb25zdCBwYXRoJiBwLCBzeXN0ZW06OmVycm9yX2NvZGUmIGVjKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3JldHVybiBkZXRhaWw6OmNhbm9uaWNhbChwLCBjdXJyZW50X3BhdGgoKSwgJmVjKTt9Ci0gIGlubGluZQotICBwYXRoIGNhbm9uaWNhbChjb25zdCBwYXRoJiBwLCBjb25zdCBwYXRoJiBiYXNlLCBzeXN0ZW06OmVycm9yX2NvZGUmIGVjKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3JldHVybiBkZXRhaWw6OmNhbm9uaWNhbChwLCBiYXNlLCAmZWMpO30KLQotIyBpZm5kZWYgTkROQk9PU1RfRklMRVNZU1RFTV9OT19ERVBSRUNBVEVECi0gIGlubGluZQotICBwYXRoIGNvbXBsZXRlKGNvbnN0IHBhdGgmIHApCi0gIHsKLSAgICByZXR1cm4gYWJzb2x1dGUocCwgaW5pdGlhbF9wYXRoKCkpOwotICB9Ci0KLSAgaW5saW5lCi0gIHBhdGggY29tcGxldGUoY29uc3QgcGF0aCYgcCwgY29uc3QgcGF0aCYgYmFzZSkKLSAgewotICAgIHJldHVybiBhYnNvbHV0ZShwLCBiYXNlKTsKLSAgfQotIyBlbmRpZgotCi0gIGlubGluZQotICB2b2lkIGNvcHkoY29uc3QgcGF0aCYgZnJvbSwgY29uc3QgcGF0aCYgdG8pIHtkZXRhaWw6OmNvcHkoZnJvbSwgdG8pO30KLQotICBpbmxpbmUKLSAgdm9pZCBjb3B5KGNvbnN0IHBhdGgmIGZyb20sIGNvbnN0IHBhdGgmIHRvLCBzeXN0ZW06OmVycm9yX2NvZGUmIGVjKSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtkZXRhaWw6OmNvcHkoZnJvbSwgdG8sICZlYyk7fQotICBpbmxpbmUKLSAgdm9pZCBjb3B5X2RpcmVjdG9yeShjb25zdCBwYXRoJiBmcm9tLCBjb25zdCBwYXRoJiB0bykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtkZXRhaWw6OmNvcHlfZGlyZWN0b3J5KGZyb20sIHRvKTt9Ci0gIGlubGluZQotICB2b2lkIGNvcHlfZGlyZWN0b3J5KGNvbnN0IHBhdGgmIGZyb20sIGNvbnN0IHBhdGgmIHRvLCBzeXN0ZW06OmVycm9yX2NvZGUmIGVjKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2RldGFpbDo6Y29weV9kaXJlY3RvcnkoZnJvbSwgdG8sICZlYyk7fQotICBpbmxpbmUKLSAgdm9pZCBjb3B5X2ZpbGUoY29uc3QgcGF0aCYgZnJvbSwgY29uc3QgcGF0aCYgdG8sICAgLy8gU2VlIHRpY2tldCAjMjkyNQotICAgICAgICAgICAgICAgICBORE5CT09TVF9TQ09QRURfRU5VTShjb3B5X29wdGlvbikgb3B0aW9uKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2RldGFpbDo6Y29weV9maWxlKGZyb20sIHRvLCBvcHRpb24pO30KLSAgaW5saW5lCi0gIHZvaWQgY29weV9maWxlKGNvbnN0IHBhdGgmIGZyb20sIGNvbnN0IHBhdGgmIHRvKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2RldGFpbDo6Y29weV9maWxlKGZyb20sIHRvLCBjb3B5X29wdGlvbjo6ZmFpbF9pZl9leGlzdHMpO30KLSAgaW5saW5lCi0gIHZvaWQgY29weV9maWxlKGNvbnN0IHBhdGgmIGZyb20sIGNvbnN0IHBhdGgmIHRvLCAgIC8vIFNlZSB0aWNrZXQgIzI5MjUKLSAgICAgICAgICAgICAgICAgTkROQk9PU1RfU0NPUEVEX0VOVU0oY29weV9vcHRpb24pIG9wdGlvbiwgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtkZXRhaWw6OmNvcHlfZmlsZShmcm9tLCB0bywgb3B0aW9uLCAmZWMpO30KLSAgaW5saW5lCi0gIHZvaWQgY29weV9maWxlKGNvbnN0IHBhdGgmIGZyb20sIGNvbnN0IHBhdGgmIHRvLCBzeXN0ZW06OmVycm9yX2NvZGUmIGVjKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2RldGFpbDo6Y29weV9maWxlKGZyb20sIHRvLCBjb3B5X29wdGlvbjo6ZmFpbF9pZl9leGlzdHMsICZlYyk7fQotICBpbmxpbmUKLSAgdm9pZCBjb3B5X3N5bWxpbmsoY29uc3QgcGF0aCYgZXhpc3Rpbmdfc3ltbGluaywgY29uc3QgcGF0aCYgbmV3X3N5bWxpbmspIHtkZXRhaWw6OmNvcHlfc3ltbGluayhleGlzdGluZ19zeW1saW5rLCBuZXdfc3ltbGluayk7fQotCi0gIGlubGluZQotICB2b2lkIGNvcHlfc3ltbGluayhjb25zdCBwYXRoJiBleGlzdGluZ19zeW1saW5rLCBjb25zdCBwYXRoJiBuZXdfc3ltbGluaywgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtkZXRhaWw6OmNvcHlfc3ltbGluayhleGlzdGluZ19zeW1saW5rLCBuZXdfc3ltbGluaywgJmVjKTt9Ci0gIGlubGluZQotICBib29sIGNyZWF0ZV9kaXJlY3Rvcmllcyhjb25zdCBwYXRoJiBwKSB7cmV0dXJuIGRldGFpbDo6Y3JlYXRlX2RpcmVjdG9yaWVzKHApO30KLQotICBpbmxpbmUKLSAgYm9vbCBjcmVhdGVfZGlyZWN0b3JpZXMoY29uc3QgcGF0aCYgcCwgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyZXR1cm4gZGV0YWlsOjpjcmVhdGVfZGlyZWN0b3JpZXMocCwgJmVjKTt9Ci0gIGlubGluZQotICBib29sIGNyZWF0ZV9kaXJlY3RvcnkoY29uc3QgcGF0aCYgcCkge3JldHVybiBkZXRhaWw6OmNyZWF0ZV9kaXJlY3RvcnkocCk7fQotCi0gIGlubGluZQotICBib29sIGNyZWF0ZV9kaXJlY3RvcnkoY29uc3QgcGF0aCYgcCwgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyZXR1cm4gZGV0YWlsOjpjcmVhdGVfZGlyZWN0b3J5KHAsICZlYyk7fQotICBpbmxpbmUKLSAgdm9pZCBjcmVhdGVfZGlyZWN0b3J5X3N5bWxpbmsoY29uc3QgcGF0aCYgdG8sIGNvbnN0IHBhdGgmIGZyb20pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZGV0YWlsOjpjcmVhdGVfZGlyZWN0b3J5X3N5bWxpbmsodG8sIGZyb20pO30KLSAgaW5saW5lCi0gIHZvaWQgY3JlYXRlX2RpcmVjdG9yeV9zeW1saW5rKGNvbnN0IHBhdGgmIHRvLCBjb25zdCBwYXRoJiBmcm9tLCBzeXN0ZW06OmVycm9yX2NvZGUmIGVjKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2RldGFpbDo6Y3JlYXRlX2RpcmVjdG9yeV9zeW1saW5rKHRvLCBmcm9tLCAmZWMpO30KLSAgaW5saW5lCi0gIHZvaWQgY3JlYXRlX2hhcmRfbGluayhjb25zdCBwYXRoJiB0bywgY29uc3QgcGF0aCYgbmV3X2hhcmRfbGluaykge2RldGFpbDo6Y3JlYXRlX2hhcmRfbGluayh0bywgbmV3X2hhcmRfbGluayk7fQotCi0gIGlubGluZQotICB2b2lkIGNyZWF0ZV9oYXJkX2xpbmsoY29uc3QgcGF0aCYgdG8sIGNvbnN0IHBhdGgmIG5ld19oYXJkX2xpbmssIHN5c3RlbTo6ZXJyb3JfY29kZSYgZWMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZGV0YWlsOjpjcmVhdGVfaGFyZF9saW5rKHRvLCBuZXdfaGFyZF9saW5rLCAmZWMpO30KLSAgaW5saW5lCi0gIHZvaWQgY3JlYXRlX3N5bWxpbmsoY29uc3QgcGF0aCYgdG8sIGNvbnN0IHBhdGgmIG5ld19zeW1saW5rKSB7ZGV0YWlsOjpjcmVhdGVfc3ltbGluayh0bywgbmV3X3N5bWxpbmspO30KLQotICBpbmxpbmUKLSAgdm9pZCBjcmVhdGVfc3ltbGluayhjb25zdCBwYXRoJiB0bywgY29uc3QgcGF0aCYgbmV3X3N5bWxpbmssIHN5c3RlbTo6ZXJyb3JfY29kZSYgZWMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZGV0YWlsOjpjcmVhdGVfc3ltbGluayh0bywgbmV3X3N5bWxpbmssICZlYyk7fQotICBpbmxpbmUKLSAgcGF0aCBjdXJyZW50X3BhdGgoKSAgICAgICAgICAgICAgICAgIHtyZXR1cm4gZGV0YWlsOjpjdXJyZW50X3BhdGgoKTt9Ci0KLSAgaW5saW5lCi0gIHBhdGggY3VycmVudF9wYXRoKHN5c3RlbTo6ZXJyb3JfY29kZSYgZWMpIHtyZXR1cm4gZGV0YWlsOjpjdXJyZW50X3BhdGgoJmVjKTt9Ci0KLSAgaW5saW5lCi0gIHZvaWQgY3VycmVudF9wYXRoKGNvbnN0IHBhdGgmIHApICAgICB7ZGV0YWlsOjpjdXJyZW50X3BhdGgocCk7fQotCi0gIGlubGluZQotICB2b2lkIGN1cnJlbnRfcGF0aChjb25zdCBwYXRoJiBwLCBzeXN0ZW06OmVycm9yX2NvZGUmIGVjKSB7ZGV0YWlsOjpjdXJyZW50X3BhdGgocCwgJmVjKTt9Ci0KLSAgaW5saW5lCi0gIGJvb2wgZXF1aXZhbGVudChjb25zdCBwYXRoJiBwMSwgY29uc3QgcGF0aCYgcDIpIHtyZXR1cm4gZGV0YWlsOjplcXVpdmFsZW50KHAxLCBwMik7fQotCi0gIGlubGluZQotICBib29sIGVxdWl2YWxlbnQoY29uc3QgcGF0aCYgcDEsIGNvbnN0IHBhdGgmIHAyLCBzeXN0ZW06OmVycm9yX2NvZGUmIGVjKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3JldHVybiBkZXRhaWw6OmVxdWl2YWxlbnQocDEsIHAyLCAmZWMpO30KLSAgaW5saW5lCi0gIG5kbmJvb3N0Ojp1aW50bWF4X3QgZmlsZV9zaXplKGNvbnN0IHBhdGgmIHApIHtyZXR1cm4gZGV0YWlsOjpmaWxlX3NpemUocCk7fQotCi0gIGlubGluZQotICBuZG5ib29zdDo6dWludG1heF90IGZpbGVfc2l6ZShjb25zdCBwYXRoJiBwLCBzeXN0ZW06OmVycm9yX2NvZGUmIGVjKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3JldHVybiBkZXRhaWw6OmZpbGVfc2l6ZShwLCAmZWMpO30KLSAgaW5saW5lCi0gIG5kbmJvb3N0Ojp1aW50bWF4X3QgaGFyZF9saW5rX2NvdW50KGNvbnN0IHBhdGgmIHApIHtyZXR1cm4gZGV0YWlsOjpoYXJkX2xpbmtfY291bnQocCk7fQotCi0gIGlubGluZQotICBuZG5ib29zdDo6dWludG1heF90IGhhcmRfbGlua19jb3VudChjb25zdCBwYXRoJiBwLCBzeXN0ZW06OmVycm9yX2NvZGUmIGVjKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3JldHVybiBkZXRhaWw6OmhhcmRfbGlua19jb3VudChwLCAmZWMpO30KLSAgaW5saW5lCi0gIHBhdGggaW5pdGlhbF9wYXRoKCkgICAgICAgICAgICAgICAgICB7cmV0dXJuIGRldGFpbDo6aW5pdGlhbF9wYXRoKCk7fQotCi0gIGlubGluZQotICBwYXRoIGluaXRpYWxfcGF0aChzeXN0ZW06OmVycm9yX2NvZGUmIGVjKSB7cmV0dXJuIGRldGFpbDo6aW5pdGlhbF9wYXRoKCZlYyk7fQotCi0gIHRlbXBsYXRlIDxjbGFzcyBQYXRoPgotICBwYXRoIGluaXRpYWxfcGF0aCgpIHtyZXR1cm4gaW5pdGlhbF9wYXRoKCk7fQotICB0ZW1wbGF0ZSA8Y2xhc3MgUGF0aD4KLSAgcGF0aCBpbml0aWFsX3BhdGgoc3lzdGVtOjplcnJvcl9jb2RlJiBlYykge3JldHVybiBkZXRhaWw6OmluaXRpYWxfcGF0aCgmZWMpO30KLQotICBpbmxpbmUKLSAgc3RkOjp0aW1lX3QgbGFzdF93cml0ZV90aW1lKGNvbnN0IHBhdGgmIHApIHtyZXR1cm4gZGV0YWlsOjpsYXN0X3dyaXRlX3RpbWUocCk7fQotCi0gIGlubGluZQotICBzdGQ6OnRpbWVfdCBsYXN0X3dyaXRlX3RpbWUoY29uc3QgcGF0aCYgcCwgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyZXR1cm4gZGV0YWlsOjpsYXN0X3dyaXRlX3RpbWUocCwgJmVjKTt9Ci0gIGlubGluZQotICB2b2lkIGxhc3Rfd3JpdGVfdGltZShjb25zdCBwYXRoJiBwLCBjb25zdCBzdGQ6OnRpbWVfdCBuZXdfdGltZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtkZXRhaWw6Omxhc3Rfd3JpdGVfdGltZShwLCBuZXdfdGltZSk7fQotICBpbmxpbmUKLSAgdm9pZCBsYXN0X3dyaXRlX3RpbWUoY29uc3QgcGF0aCYgcCwgY29uc3Qgc3RkOjp0aW1lX3QgbmV3X3RpbWUsIHN5c3RlbTo6ZXJyb3JfY29kZSYgZWMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZGV0YWlsOjpsYXN0X3dyaXRlX3RpbWUocCwgbmV3X3RpbWUsICZlYyk7fQotICBpbmxpbmUKLSAgdm9pZCBwZXJtaXNzaW9ucyhjb25zdCBwYXRoJiBwLCBwZXJtcyBwcm1zKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2RldGFpbDo6cGVybWlzc2lvbnMocCwgcHJtcyk7fQotICBpbmxpbmUKLSAgdm9pZCBwZXJtaXNzaW9ucyhjb25zdCBwYXRoJiBwLCBwZXJtcyBwcm1zLCBzeXN0ZW06OmVycm9yX2NvZGUmIGVjKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2RldGFpbDo6cGVybWlzc2lvbnMocCwgcHJtcywgJmVjKTt9Ci0KLSAgaW5saW5lCi0gIHBhdGggcmVhZF9zeW1saW5rKGNvbnN0IHBhdGgmIHApICAgICB7cmV0dXJuIGRldGFpbDo6cmVhZF9zeW1saW5rKHApO30KLQotICBpbmxpbmUKLSAgcGF0aCByZWFkX3N5bWxpbmsoY29uc3QgcGF0aCYgcCwgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyZXR1cm4gZGV0YWlsOjpyZWFkX3N5bWxpbmsocCwgJmVjKTt9Ci0gIGlubGluZQotICAgIC8vIEZvciBzdGFuZGFyZGl6YXRpb24sIGlmIHRoZSBjb21taXR0ZWUgZG9lc24ndCBsaWtlICJyZW1vdmUiLCBjb25zaWRlciAiZWxpbWluYXRlIgotICBib29sIHJlbW92ZShjb25zdCBwYXRoJiBwKSAgICAgICAgICAge3JldHVybiBkZXRhaWw6OnJlbW92ZShwKTt9Ci0KLSAgaW5saW5lCi0gIGJvb2wgcmVtb3ZlKGNvbnN0IHBhdGgmIHAsIHN5c3RlbTo6ZXJyb3JfY29kZSYgZWMpIHtyZXR1cm4gZGV0YWlsOjpyZW1vdmUocCwgJmVjKTt9Ci0KLSAgaW5saW5lCi0gIG5kbmJvb3N0Ojp1aW50bWF4X3QgcmVtb3ZlX2FsbChjb25zdCBwYXRoJiBwKSB7cmV0dXJuIGRldGFpbDo6cmVtb3ZlX2FsbChwKTt9Ci0gICAgCi0gIGlubGluZQotICBuZG5ib29zdDo6dWludG1heF90IHJlbW92ZV9hbGwoY29uc3QgcGF0aCYgcCwgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyZXR1cm4gZGV0YWlsOjpyZW1vdmVfYWxsKHAsICZlYyk7fQotICBpbmxpbmUKLSAgdm9pZCByZW5hbWUoY29uc3QgcGF0aCYgb2xkX3AsIGNvbnN0IHBhdGgmIG5ld19wKSB7ZGV0YWlsOjpyZW5hbWUob2xkX3AsIG5ld19wKTt9Ci0KLSAgaW5saW5lCi0gIHZvaWQgcmVuYW1lKGNvbnN0IHBhdGgmIG9sZF9wLCBjb25zdCBwYXRoJiBuZXdfcCwgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtkZXRhaWw6OnJlbmFtZShvbGRfcCwgbmV3X3AsICZlYyk7fQotICBpbmxpbmUgIC8vIG5hbWUgc3VnZ2VzdGVkIGJ5IFNjb3R0IE1jTXVycmF5Ci0gIHZvaWQgcmVzaXplX2ZpbGUoY29uc3QgcGF0aCYgcCwgdWludG1heF90IHNpemUpIHtkZXRhaWw6OnJlc2l6ZV9maWxlKHAsIHNpemUpO30KLQotICBpbmxpbmUKLSAgdm9pZCByZXNpemVfZmlsZShjb25zdCBwYXRoJiBwLCB1aW50bWF4X3Qgc2l6ZSwgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtkZXRhaWw6OnJlc2l6ZV9maWxlKHAsIHNpemUsICZlYyk7fQotICBpbmxpbmUKLSAgc3BhY2VfaW5mbyBzcGFjZShjb25zdCBwYXRoJiBwKSAgICAgIHtyZXR1cm4gZGV0YWlsOjpzcGFjZShwKTt9IAotCi0gIGlubGluZQotICBzcGFjZV9pbmZvIHNwYWNlKGNvbnN0IHBhdGgmIHAsIHN5c3RlbTo6ZXJyb3JfY29kZSYgZWMpIHtyZXR1cm4gZGV0YWlsOjpzcGFjZShwLCAmZWMpO30gCi0KLSMgaWZuZGVmIE5ETkJPT1NUX0ZJTEVTWVNURU1fTk9fREVQUkVDQVRFRAotICBpbmxpbmUgYm9vbCBzeW1ib2xpY19saW5rX2V4aXN0cyhjb25zdCBwYXRoJiBwKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gaXNfc3ltbGluayhzeW1saW5rX3N0YXR1cyhwKSk7IH0KLSMgZW5kaWYKLQotICBpbmxpbmUKLSAgcGF0aCBzeXN0ZW1fY29tcGxldGUoY29uc3QgcGF0aCYgcCkgIHtyZXR1cm4gZGV0YWlsOjpzeXN0ZW1fY29tcGxldGUocCk7fQotCi0gIGlubGluZQotICBwYXRoIHN5c3RlbV9jb21wbGV0ZShjb25zdCBwYXRoJiBwLCBzeXN0ZW06OmVycm9yX2NvZGUmIGVjKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3JldHVybiBkZXRhaWw6OnN5c3RlbV9jb21wbGV0ZShwLCAmZWMpO30KLSAgaW5saW5lCi0gIHBhdGggdGVtcF9kaXJlY3RvcnlfcGF0aCgpICAgICAgICAgICB7cmV0dXJuIGRldGFpbDo6dGVtcF9kaXJlY3RvcnlfcGF0aCgpO30KLQotICBpbmxpbmUKLSAgcGF0aCB0ZW1wX2RpcmVjdG9yeV9wYXRoKHN5c3RlbTo6ZXJyb3JfY29kZSYgZWMpIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3JldHVybiBkZXRhaWw6OnRlbXBfZGlyZWN0b3J5X3BhdGgoJmVjKTt9Ci0gIGlubGluZQotICBwYXRoIHVuaXF1ZV9wYXRoKGNvbnN0IHBhdGgmIHA9IiUlJSUtJSUlJS0lJSUlLSUlJSUiKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gZGV0YWlsOjp1bmlxdWVfcGF0aChwKTsgfQotICBpbmxpbmUKLSAgcGF0aCB1bmlxdWVfcGF0aChjb25zdCBwYXRoJiBwLCBzeXN0ZW06OmVycm9yX2NvZGUmIGVjKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gZGV0YWlsOjp1bmlxdWVfcGF0aChwLCAmZWMpOyB9Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeV9lbnRyeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBHQ0MgaGFzIGEgcHJvYmxlbSB3aXRoIGEgbWVtYmVyIGZ1bmN0aW9uIG5hbWVkIHBhdGggd2l0aGluIGEgbmFtZXNwYWNlIG9yIAotLy8gIHN1Yi1uYW1lc3BhY2UgdGhhdCBhbHNvIGhhcyBhIGNsYXNzIG5hbWVkIHBhdGguIFRoZSB3b3JrYXJvdW5kIGlzIHRvIGFsd2F5cwotLy8gIGZ1bGx5IHF1YWxpZnkgdGhlIG5hbWUgcGF0aCB3aGVuIGl0IHJlZmVycyB0byB0aGUgY2xhc3MgbmFtZS4KLQotY2xhc3MgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMIGRpcmVjdG9yeV9lbnRyeQotewotcHVibGljOgotCi0gIC8vIGNvbXBpbGVyIGdlbmVyYXRlZCBjb3B5IGNvbnN0cnVjdG9yLCBjb3B5IGFzc2lnbm1lbnQsIGFuZCBkZXN0cnVjdG9yIGFwcGx5Ci0KLSAgZGlyZWN0b3J5X2VudHJ5KCkge30KLSAgZXhwbGljaXQgZGlyZWN0b3J5X2VudHJ5KGNvbnN0IG5kbmJvb3N0OjpmaWxlc3lzdGVtOjpwYXRoJiBwLAotICAgIGZpbGVfc3RhdHVzIHN0ID0gZmlsZV9zdGF0dXMoKSwgZmlsZV9zdGF0dXMgc3ltbGlua19zdD1maWxlX3N0YXR1cygpKQotICAgIDogbV9wYXRoKHApLCBtX3N0YXR1cyhzdCksIG1fc3ltbGlua19zdGF0dXMoc3ltbGlua19zdCkKLSAgICB7fQotCi0gIHZvaWQgYXNzaWduKGNvbnN0IG5kbmJvb3N0OjpmaWxlc3lzdGVtOjpwYXRoJiBwLAotICAgIGZpbGVfc3RhdHVzIHN0ID0gZmlsZV9zdGF0dXMoKSwgZmlsZV9zdGF0dXMgc3ltbGlua19zdCA9IGZpbGVfc3RhdHVzKCkpCi0gICAgeyBtX3BhdGggPSBwOyBtX3N0YXR1cyA9IHN0OyBtX3N5bWxpbmtfc3RhdHVzID0gc3ltbGlua19zdDsgfQotCi0gIHZvaWQgcmVwbGFjZV9maWxlbmFtZShjb25zdCBuZG5ib29zdDo6ZmlsZXN5c3RlbTo6cGF0aCYgcCwKLSAgICBmaWxlX3N0YXR1cyBzdCA9IGZpbGVfc3RhdHVzKCksIGZpbGVfc3RhdHVzIHN5bWxpbmtfc3QgPSBmaWxlX3N0YXR1cygpKQotICB7Ci0gICAgbV9wYXRoLnJlbW92ZV9maWxlbmFtZSgpOwotICAgIG1fcGF0aCAvPSBwOwotICAgIG1fc3RhdHVzID0gc3Q7Ci0gICAgbV9zeW1saW5rX3N0YXR1cyA9IHN5bWxpbmtfc3Q7Ci0gIH0KLQotIyBpZm5kZWYgTkROQk9PU1RfRklMRVNZU1RFTV9OT19ERVBSRUNBVEVECi0gIHZvaWQgcmVwbGFjZV9sZWFmKGNvbnN0IG5kbmJvb3N0OjpmaWxlc3lzdGVtOjpwYXRoJiBwLAotICAgIGZpbGVfc3RhdHVzIHN0LCBmaWxlX3N0YXR1cyBzeW1saW5rX3N0KQotICAgICAgeyByZXBsYWNlX2ZpbGVuYW1lKHAsIHN0LCBzeW1saW5rX3N0KTsgfQotIyBlbmRpZgotCi0gIGNvbnN0IG5kbmJvb3N0OjpmaWxlc3lzdGVtOjpwYXRoJiAgcGF0aCgpIGNvbnN0ICAgICAgICAgICAgICAge3JldHVybiBtX3BhdGg7fQotICBmaWxlX3N0YXR1cyAgIHN0YXR1cygpIGNvbnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyZXR1cm4gbV9nZXRfc3RhdHVzKCk7fQotICBmaWxlX3N0YXR1cyAgIHN0YXR1cyhzeXN0ZW06OmVycm9yX2NvZGUmIGVjKSBjb25zdCAgICAgICAgIHtyZXR1cm4gbV9nZXRfc3RhdHVzKCZlYyk7fQotICBmaWxlX3N0YXR1cyAgIHN5bWxpbmtfc3RhdHVzKCkgY29uc3QgICAgICAgICAgICAgICAgICAgICAgIHtyZXR1cm4gbV9nZXRfc3ltbGlua19zdGF0dXMoKTt9Ci0gIGZpbGVfc3RhdHVzICAgc3ltbGlua19zdGF0dXMoc3lzdGVtOjplcnJvcl9jb2RlJiBlYykgY29uc3Qge3JldHVybiBtX2dldF9zeW1saW5rX3N0YXR1cygmZWMpO30KLQotICBib29sIG9wZXJhdG9yPT0oY29uc3QgZGlyZWN0b3J5X2VudHJ5JiByaHMpIHtyZXR1cm4gbV9wYXRoID09IHJocy5tX3BhdGg7fSAKLSAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGRpcmVjdG9yeV9lbnRyeSYgcmhzKSB7cmV0dXJuIG1fcGF0aCAhPSByaHMubV9wYXRoO30gCi0gIGJvb2wgb3BlcmF0b3I8IChjb25zdCBkaXJlY3RvcnlfZW50cnkmIHJocykge3JldHVybiBtX3BhdGggPCByaHMubV9wYXRoO30gCi0gIGJvb2wgb3BlcmF0b3I8PShjb25zdCBkaXJlY3RvcnlfZW50cnkmIHJocykge3JldHVybiBtX3BhdGggPD0gcmhzLm1fcGF0aDt9IAotICBib29sIG9wZXJhdG9yPiAoY29uc3QgZGlyZWN0b3J5X2VudHJ5JiByaHMpIHtyZXR1cm4gbV9wYXRoID4gcmhzLm1fcGF0aDt9IAotICBib29sIG9wZXJhdG9yPj0oY29uc3QgZGlyZWN0b3J5X2VudHJ5JiByaHMpIHtyZXR1cm4gbV9wYXRoID49IHJocy5tX3BhdGg7fSAKLQotcHJpdmF0ZToKLSAgbmRuYm9vc3Q6OmZpbGVzeXN0ZW06OnBhdGggICBtX3BhdGg7Ci0gIG11dGFibGUgZmlsZV9zdGF0dXMgICAgICAgbV9zdGF0dXM7ICAgICAgICAgICAvLyBzdGF0KCktbGlrZQotICBtdXRhYmxlIGZpbGVfc3RhdHVzICAgICAgIG1fc3ltbGlua19zdGF0dXM7ICAgLy8gbHN0YXQoKS1saWtlCi0KLSAgZmlsZV9zdGF0dXMgbV9nZXRfc3RhdHVzKHN5c3RlbTo6ZXJyb3JfY29kZSogZWM9MCkgY29uc3Q7Ci0gIGZpbGVfc3RhdHVzIG1fZ2V0X3N5bWxpbmtfc3RhdHVzKHN5c3RlbTo6ZXJyb3JfY29kZSogZWM9MCkgY29uc3Q7Ci19OyAvLyBkaXJlY3RvcnlfZW50cnkKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeV9pdGVyYXRvciBoZWxwZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotY2xhc3MgZGlyZWN0b3J5X2l0ZXJhdG9yOwotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0gIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotICAgIHN5c3RlbTo6ZXJyb3JfY29kZSBkaXJfaXRyX2Nsb3NlKC8vIG5ldmVyIHRocm93cygpCi0gICAgdm9pZCAqJiBoYW5kbGUKLSMgICBpZiAgICAgZGVmaW5lZChORE5CT09TVF9QT1NJWF9BUEkpCi0gICAgLCB2b2lkIComIGJ1ZmZlcgotIyAgIGVuZGlmCi0gICk7IAotCi0gIHN0cnVjdCBkaXJfaXRyX2ltcAotICB7Ci0gICAgZGlyZWN0b3J5X2VudHJ5ICBkaXJfZW50cnk7Ci0gICAgdm9pZCogICAgICAgICAgICBoYW5kbGU7Ci0KLSMgICBpZmRlZiBORE5CT09TVF9QT1NJWF9BUEkKLSAgICB2b2lkKiAgICAgICAgICAgIGJ1ZmZlcjsgIC8vIHNlZSBkaXJfaXRyX2luY3JlbWVudCBpbXBsZW1lbnRhdGlvbgotIyAgIGVuZGlmCi0KLSAgICBkaXJfaXRyX2ltcCgpIDogaGFuZGxlKDApCi0jICAgaWZkZWYgTkROQk9PU1RfUE9TSVhfQVBJCi0gICAgICAsIGJ1ZmZlcigwKQotIyAgIGVuZGlmCi0gICAge30KLQotICAgIH5kaXJfaXRyX2ltcCgpIC8vIG5ldmVyIHRocm93cwotICAgIHsKLSAgICAgIGRpcl9pdHJfY2xvc2UoaGFuZGxlCi0jICAgICAgIGlmIGRlZmluZWQoTkROQk9PU1RfUE9TSVhfQVBJKQotICAgICAgICAgLCBidWZmZXIKLSMgICAgICAgZW5kaWYKLSAgICApOwotICAgIH0KLSAgfTsKLQotICAvLyBzZWUgcGF0aDo6aXRlcmF0b3I6IGNvbW1lbnQgYmVsb3cKLSAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMIHZvaWQgZGlyZWN0b3J5X2l0ZXJhdG9yX2NvbnN0cnVjdChkaXJlY3RvcnlfaXRlcmF0b3ImIGl0LAotICAgIGNvbnN0IHBhdGgmIHAsIHN5c3RlbTo6ZXJyb3JfY29kZSogZWMpOwotICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wgdm9pZCBkaXJlY3RvcnlfaXRlcmF0b3JfaW5jcmVtZW50KGRpcmVjdG9yeV9pdGVyYXRvciYgaXQsCi0gICAgc3lzdGVtOjplcnJvcl9jb2RlKiBlYyk7Ci0KLX0gIC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnlfaXRlcmF0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICBjbGFzcyBkaXJlY3RvcnlfaXRlcmF0b3IKLSAgICA6IHB1YmxpYyBuZG5ib29zdDo6aXRlcmF0b3JfZmFjYWRlPCBkaXJlY3RvcnlfaXRlcmF0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5X2VudHJ5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpzaW5nbGVfcGFzc190cmF2ZXJzYWxfdGFnID4KLSAgewotICBwdWJsaWM6Ci0KLSAgICBkaXJlY3RvcnlfaXRlcmF0b3IoKXt9ICAvLyBjcmVhdGVzIHRoZSAiZW5kIiBpdGVyYXRvcgotCi0gICAgLy8gaXRlcmF0b3JfZmFjYWRlIGRlcml2ZWQgY2xhc3NlcyBkb24ndCBzZWVtIHRvIGxpa2UgaW1wbGVtZW50YXRpb25zIGluCi0gICAgLy8gc2VwYXJhdGUgdHJhbnNsYXRpb24gdW5pdCBkbGwncywgc28gZm9yd2FyZCB0byBkZXRhaWwgZnVuY3Rpb25zCi0gICAgZXhwbGljaXQgZGlyZWN0b3J5X2l0ZXJhdG9yKGNvbnN0IHBhdGgmIHApCi0gICAgICAgIDogbV9pbXAobmV3IGRldGFpbDo6ZGlyX2l0cl9pbXApCi0gICAgICAgICAgeyBkZXRhaWw6OmRpcmVjdG9yeV9pdGVyYXRvcl9jb25zdHJ1Y3QoKnRoaXMsIHAsIDApOyB9Ci0KLSAgICBkaXJlY3RvcnlfaXRlcmF0b3IoY29uc3QgcGF0aCYgcCwgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICAgICAgOiBtX2ltcChuZXcgZGV0YWlsOjpkaXJfaXRyX2ltcCkKLSAgICAgICAgICB7IGRldGFpbDo6ZGlyZWN0b3J5X2l0ZXJhdG9yX2NvbnN0cnVjdCgqdGhpcywgcCwgJmVjKTsgfQotCi0gICB+ZGlyZWN0b3J5X2l0ZXJhdG9yKCkge30gLy8gbmV2ZXIgdGhyb3dzCi0KLSAgICBkaXJlY3RvcnlfaXRlcmF0b3ImIGluY3JlbWVudChzeXN0ZW06OmVycm9yX2NvZGUmIGVjKQotICAgIHsgCi0gICAgICBkZXRhaWw6OmRpcmVjdG9yeV9pdGVyYXRvcl9pbmNyZW1lbnQoKnRoaXMsICZlYyk7Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gIHByaXZhdGU6Ci0gICAgZnJpZW5kIHN0cnVjdCBkZXRhaWw6OmRpcl9pdHJfaW1wOwotICAgIGZyaWVuZCBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wgdm9pZCBkZXRhaWw6OmRpcmVjdG9yeV9pdGVyYXRvcl9jb25zdHJ1Y3QoZGlyZWN0b3J5X2l0ZXJhdG9yJiBpdCwKLSAgICAgIGNvbnN0IHBhdGgmIHAsIHN5c3RlbTo6ZXJyb3JfY29kZSogZWMpOwotICAgIGZyaWVuZCBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wgdm9pZCBkZXRhaWw6OmRpcmVjdG9yeV9pdGVyYXRvcl9pbmNyZW1lbnQoZGlyZWN0b3J5X2l0ZXJhdG9yJiBpdCwKLSAgICAgIHN5c3RlbTo6ZXJyb3JfY29kZSogZWMpOwotCi0gICAgLy8gc2hhcmVkX3B0ciBwcm92aWRlcyBzaGFsbG93LWNvcHkgc2VtYW50aWNzIHJlcXVpcmVkIGZvciBJbnB1dEl0ZXJhdG9ycy4KLSAgICAvLyBtX2ltcC5nZXQoKT09MCBpbmRpY2F0ZXMgdGhlIGVuZCBpdGVyYXRvci4KLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgZGV0YWlsOjpkaXJfaXRyX2ltcCA+ICBtX2ltcDsKLQotICAgIGZyaWVuZCBjbGFzcyBuZG5ib29zdDo6aXRlcmF0b3JfY29yZV9hY2Nlc3M7Ci0KLSAgICBuZG5ib29zdDo6aXRlcmF0b3JfZmFjYWRlPAotICAgICAgZGlyZWN0b3J5X2l0ZXJhdG9yLAotICAgICAgZGlyZWN0b3J5X2VudHJ5LAotICAgICAgbmRuYm9vc3Q6OnNpbmdsZV9wYXNzX3RyYXZlcnNhbF90YWcgPjo6cmVmZXJlbmNlIGRlcmVmZXJlbmNlKCkgY29uc3QgCi0gICAgewotICAgICAgTkROQk9PU1RfQVNTRVJUX01TRyhtX2ltcC5nZXQoKSwgImF0dGVtcHQgdG8gZGVyZWZlcmVuY2UgZW5kIGl0ZXJhdG9yIik7Ci0gICAgICByZXR1cm4gbV9pbXAtPmRpcl9lbnRyeTsKLSAgICB9Ci0KLSAgICB2b2lkIGluY3JlbWVudCgpIHsgZGV0YWlsOjpkaXJlY3RvcnlfaXRlcmF0b3JfaW5jcmVtZW50KCp0aGlzLCAwKTsgfQotCi0gICAgYm9vbCBlcXVhbChjb25zdCBkaXJlY3RvcnlfaXRlcmF0b3ImIHJocykgY29uc3QKLSAgICAgIHsgcmV0dXJuIG1faW1wID09IHJocy5tX2ltcDsgfQotICB9OwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8gICAgICAgICAgICAgICAgICAgICAgcmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvciBoZWxwZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gIE5ETkJPT1NUX1NDT1BFRF9FTlVNX1NUQVJUKHN5bWxpbmtfb3B0aW9uKQotICB7Ci0gICAgbm9uZSwKLSAgICBub19yZWN1cnNlID0gbm9uZSwgICAgICAgICAvLyBkb24ndCBmb2xsb3cgZGlyZWN0b3J5IHN5bWxpbmtzIChkZWZhdWx0IGJlaGF2aW9yKQotICAgIHJlY3Vyc2UsICAgICAgICAgICAgICAgICAgIC8vIGZvbGxvdyBkaXJlY3Rvcnkgc3ltbGlua3MKLSAgICBfZGV0YWlsX25vX3B1c2ggPSByZWN1cnNlIDw8IDEgIC8vIGludGVybmFsIHVzZSBvbmx5Ci0gIH07Ci0gIE5ETkJPT1NUX1NDT1BFRF9FTlVNX0VORAotCi0gIE5ETkJPT1NUX0JJVE1BU0soTkROQk9PU1RfU0NPUEVEX0VOVU0oc3ltbGlua19vcHRpb24pKQotCi0gIG5hbWVzcGFjZSBkZXRhaWwKLSAgewotICAgIHN0cnVjdCByZWN1cl9kaXJfaXRyX2ltcAotICAgIHsKLSAgICAgIHR5cGVkZWYgZGlyZWN0b3J5X2l0ZXJhdG9yIGVsZW1lbnRfdHlwZTsKLSAgICAgIHN0ZDo6c3RhY2s8IGVsZW1lbnRfdHlwZSwgc3RkOjp2ZWN0b3I8IGVsZW1lbnRfdHlwZSA+ID4gbV9zdGFjazsKLSAgICAgIGludCAgbV9sZXZlbDsKLSAgICAgIE5ETkJPT1NUX1NDT1BFRF9FTlVNKHN5bWxpbmtfb3B0aW9uKSBtX29wdGlvbnM7Ci0KLSAgICAgIHJlY3VyX2Rpcl9pdHJfaW1wKCkgOiBtX2xldmVsKDApLCBtX29wdGlvbnMoc3ltbGlua19vcHRpb246Om5vbmUpIHt9Ci0KLSAgICAgIHZvaWQgaW5jcmVtZW50KHN5c3RlbTo6ZXJyb3JfY29kZSogZWMpOyAgLy8gZWMgPT0gMCBtZWFucyB0aHJvdyBvbiBlcnJvcgotCi0gICAgICB2b2lkIHBvcCgpOwotCi0gICAgfTsKLQotICAgIC8vICBJbXBsZW1lbnRhdGlvbiBpcyBpbmxpbmUgdG8gYXZvaWQgZHluYW1pYyBsaW5raW5nIGRpZmZpY3VsdGllcyB3aXRoIG1fc3RhY2s6Ci0gICAgLy8gIE1pY3Jvc29mdCB3YXJuaW5nIEM0MjUxLCBtX3N0YWNrIG5lZWRzIHRvIGhhdmUgZGxsLWludGVyZmFjZSB0byBiZSB1c2VkIGJ5Ci0gICAgLy8gIGNsaWVudHMgb2Ygc3RydWN0ICduZG5ib29zdDo6ZmlsZXN5c3RlbTo6ZGV0YWlsOjpyZWN1cl9kaXJfaXRyX2ltcCcKLQotICAgIGlubGluZQotICAgIHZvaWQgcmVjdXJfZGlyX2l0cl9pbXA6OmluY3JlbWVudChzeXN0ZW06OmVycm9yX2NvZGUqIGVjKQotICAgIC8vIGVjID09IDAgbWVhbnMgdGhyb3cgb24gZXJyb3IKLSAgICB7Ci0gICAgICBpZiAoKG1fb3B0aW9ucyAmIHN5bWxpbmtfb3B0aW9uOjpfZGV0YWlsX25vX3B1c2gpID09IHN5bWxpbmtfb3B0aW9uOjpfZGV0YWlsX25vX3B1c2gpCi0gICAgICAgIG1fb3B0aW9ucyAmPSB+c3ltbGlua19vcHRpb246Ol9kZXRhaWxfbm9fcHVzaDsKLQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAvLyBMb2dpYyBmb3IgZm9sbG93aW5nIHByZWRpY2F0ZSB3YXMgY29udHJpYnV0ZWQgYnkgRGFuaWVsIEFhcm5vIHRvIGhhbmRsZSBjeWNsaWMKLSAgICAgICAgLy8gc3ltbGlua3MgY29ycmVjdGx5IGFuZCBlZmZpY2llbnRseSwgZml4aW5nIHRpY2tldCAjNTY1Mi4KLSAgICAgICAgLy8gICBpZiAoKChtX29wdGlvbnMgJiBzeW1saW5rX29wdGlvbjo6cmVjdXJzZSkgPT0gc3ltbGlua19vcHRpb246OnJlY3Vyc2UKLSAgICAgICAgLy8gICAgICAgICB8fCAhaXNfc3ltbGluayhtX3N0YWNrLnRvcCgpLT5zeW1saW5rX3N0YXR1cygpKSkKLSAgICAgICAgLy8gICAgICAgJiYgaXNfZGlyZWN0b3J5KG1fc3RhY2sudG9wKCktPnN0YXR1cygpKSkgLi4uCi0gICAgICAgIC8vIFRoZSBwcmVkaWNhdGUgY29kZSBoYXMgc2luY2UgYmVlbiByZXdyaXR0ZW4gdG8gcGFzcyBlcnJvcl9jb2RlIGFyZ3VtZW50cywKLSAgICAgICAgLy8gcGVyIHRpY2tldCAjNTY1My4KLSAgICAgICAgYm9vbCBvcl9wcmVkID0gKG1fb3B0aW9ucyAmIHN5bWxpbmtfb3B0aW9uOjpyZWN1cnNlKSA9PSBzeW1saW5rX29wdGlvbjo6cmVjdXJzZQotICAgICAgICAgICAgICAgICAgICAgICB8fCAoZWMgPT0gMCA/ICFpc19zeW1saW5rKG1fc3RhY2sudG9wKCktPnN5bWxpbmtfc3RhdHVzKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIWlzX3N5bWxpbmsobV9zdGFjay50b3AoKS0+c3ltbGlua19zdGF0dXMoKmVjKSkpOwotICAgICAgICBpZiAoZWMgIT0gMCAmJiAqZWMpCi0gICAgICAgICAgcmV0dXJuOwotICAgICAgICBib29sIGFuZF9wcmVkID0gb3JfcHJlZCAmJiAoZWMgPT0gMCA/IGlzX2RpcmVjdG9yeShtX3N0YWNrLnRvcCgpLT5zdGF0dXMoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpc19kaXJlY3RvcnkobV9zdGFjay50b3AoKS0+c3RhdHVzKCplYykpKTsKLSAgICAgICAgaWYgKGVjICE9IDAgJiYgKmVjKQotICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAoYW5kX3ByZWQpCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoZWMgPT0gMCkKLSAgICAgICAgICAgIG1fc3RhY2sucHVzaChkaXJlY3RvcnlfaXRlcmF0b3IobV9zdGFjay50b3AoKS0+cGF0aCgpKSk7Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgIHsKLSAgICAgICAgICAgIG1fc3RhY2sucHVzaChkaXJlY3RvcnlfaXRlcmF0b3IobV9zdGFjay50b3AoKS0+cGF0aCgpLCAqZWMpKTsKLSAgICAgICAgICAgIGlmICgqZWMpCi0gICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKG1fc3RhY2sudG9wKCkgIT0gZGlyZWN0b3J5X2l0ZXJhdG9yKCkpCi0gICAgICAgICAgewotICAgICAgICAgICAgKyttX2xldmVsOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgIH0KLSAgICAgICAgICBtX3N0YWNrLnBvcCgpOwotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIHdoaWxlICghbV9zdGFjay5lbXB0eSgpICYmICsrbV9zdGFjay50b3AoKSA9PSBkaXJlY3RvcnlfaXRlcmF0b3IoKSkKLSAgICAgIHsKLSAgICAgICAgbV9zdGFjay5wb3AoKTsKLSAgICAgICAgLS1tX2xldmVsOwotICAgICAgfQotICAgIH0KLQotICAgIGlubGluZQotICAgIHZvaWQgcmVjdXJfZGlyX2l0cl9pbXA6OnBvcCgpCi0gICAgewotICAgICAgTkROQk9PU1RfQVNTRVJUX01TRyhtX2xldmVsID4gMCwKLSAgICAgICAgInBvcCgpIG9uIHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3Igd2l0aCBsZXZlbCA8IDEiKTsKLQotICAgICAgZG8KLSAgICAgIHsKLSAgICAgICAgbV9zdGFjay5wb3AoKTsKLSAgICAgICAgLS1tX2xldmVsOwotICAgICAgfQotICAgICAgd2hpbGUgKCFtX3N0YWNrLmVtcHR5KCkgJiYgKyttX3N0YWNrLnRvcCgpID09IGRpcmVjdG9yeV9pdGVyYXRvcigpKTsKLSAgICB9Ci0gIH0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICByZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gIGNsYXNzIHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3IKLSAgICA6IHB1YmxpYyBuZG5ib29zdDo6aXRlcmF0b3JfZmFjYWRlPAotICAgICAgICByZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yLAotICAgICAgICBkaXJlY3RvcnlfZW50cnksCi0gICAgICAgIG5kbmJvb3N0OjpzaW5nbGVfcGFzc190cmF2ZXJzYWxfdGFnID4KLSAgewotICBwdWJsaWM6Ci0KLSAgICByZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yKCl7fSAgLy8gY3JlYXRlcyB0aGUgImVuZCIgaXRlcmF0b3IKLQotICAgIGV4cGxpY2l0IHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3IoY29uc3QgcGF0aCYgZGlyX3BhdGgsCi0gICAgICBORE5CT09TVF9TQ09QRURfRU5VTShzeW1saW5rX29wdGlvbikgb3B0ID0gc3ltbGlua19vcHRpb246Om5vbmUpCi0gICAgICA6IG1faW1wKG5ldyBkZXRhaWw6OnJlY3VyX2Rpcl9pdHJfaW1wKQotICAgIHsKLSAgICAgIG1faW1wLT5tX29wdGlvbnMgPSBvcHQ7Ci0gICAgICBtX2ltcC0+bV9zdGFjay5wdXNoKGRpcmVjdG9yeV9pdGVyYXRvcihkaXJfcGF0aCkpOwotICAgICAgaWYgKG1faW1wLT5tX3N0YWNrLnRvcCgpID09IGRpcmVjdG9yeV9pdGVyYXRvcigpKQotICAgICAgICB7IG1faW1wLnJlc2V0ICgpOyB9Ci0gICAgfQotCi0gICAgcmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvcihjb25zdCBwYXRoJiBkaXJfcGF0aCwKLSAgICAgIE5ETkJPT1NUX1NDT1BFRF9FTlVNKHN5bWxpbmtfb3B0aW9uKSBvcHQsCi0gICAgICBzeXN0ZW06OmVycm9yX2NvZGUgJiBlYykKLSAgICA6IG1faW1wKG5ldyBkZXRhaWw6OnJlY3VyX2Rpcl9pdHJfaW1wKQotICAgIHsKLSAgICAgIG1faW1wLT5tX29wdGlvbnMgPSBvcHQ7Ci0gICAgICBtX2ltcC0+bV9zdGFjay5wdXNoKGRpcmVjdG9yeV9pdGVyYXRvcihkaXJfcGF0aCwgZWMpKTsKLSAgICAgIGlmIChtX2ltcC0+bV9zdGFjay50b3AoKSA9PSBkaXJlY3RvcnlfaXRlcmF0b3IoKSkKLSAgICAgICAgeyBtX2ltcC5yZXNldCAoKTsgfQotICAgIH0KLQotICAgIHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3IoY29uc3QgcGF0aCYgZGlyX3BhdGgsCi0gICAgICBzeXN0ZW06OmVycm9yX2NvZGUgJiBlYykKLSAgICA6IG1faW1wKG5ldyBkZXRhaWw6OnJlY3VyX2Rpcl9pdHJfaW1wKQotICAgIHsKLSAgICAgIG1faW1wLT5tX29wdGlvbnMgPSBzeW1saW5rX29wdGlvbjo6bm9uZTsKLSAgICAgIG1faW1wLT5tX3N0YWNrLnB1c2goZGlyZWN0b3J5X2l0ZXJhdG9yKGRpcl9wYXRoLCBlYykpOwotICAgICAgaWYgKG1faW1wLT5tX3N0YWNrLnRvcCgpID09IGRpcmVjdG9yeV9pdGVyYXRvcigpKQotICAgICAgICB7IG1faW1wLnJlc2V0ICgpOyB9Ci0gICAgfQotCi0gICAgcmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvciYgaW5jcmVtZW50KHN5c3RlbTo6ZXJyb3JfY29kZSYgZWMpCi0gICAgewotICAgICAgTkROQk9PU1RfQVNTRVJUX01TRyhtX2ltcC5nZXQoKSwKLSAgICAgICAgImluY3JlbWVudCgpIG9uIGVuZCByZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yIik7Ci0gICAgICBtX2ltcC0+aW5jcmVtZW50KCZlYyk7Ci0gICAgICBpZiAobV9pbXAtPm1fc3RhY2suZW1wdHkoKSkKLSAgICAgICAgbV9pbXAucmVzZXQoKTsgLy8gZG9uZSwgc28gbWFrZSBlbmQgaXRlcmF0b3IKLSAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBpbnQgbGV2ZWwoKSBjb25zdAotICAgIHsgCi0gICAgICBORE5CT09TVF9BU1NFUlRfTVNHKG1faW1wLmdldCgpLAotICAgICAgICAibGV2ZWwoKSBvbiBlbmQgcmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvciIpOwotICAgICAgcmV0dXJuIG1faW1wLT5tX2xldmVsOwotICAgIH0KLQotICAgIGJvb2wgbm9fcHVzaF9wZW5kaW5nKCkgY29uc3QKLSAgICB7Ci0gICAgICBORE5CT09TVF9BU1NFUlRfTVNHKG1faW1wLmdldCgpLAotICAgICAgICAiaXNfbm9fcHVzaF9yZXF1ZXN0ZWQoKSBvbiBlbmQgcmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvciIpOwotICAgICAgcmV0dXJuIChtX2ltcC0+bV9vcHRpb25zICYgc3ltbGlua19vcHRpb246Ol9kZXRhaWxfbm9fcHVzaCkKLSAgICAgICAgPT0gc3ltbGlua19vcHRpb246Ol9kZXRhaWxfbm9fcHVzaDsKLSAgICB9Ci0KLSMgICBpZm5kZWYgTkROQk9PU1RfRklMRVNZU1RFTV9OT19ERVBSRUNBVEVECi0gICAgYm9vbCBub19wdXNoX3JlcXVlc3QoKSBjb25zdCB7IHJldHVybiBub19wdXNoX3BlbmRpbmcoKTsgfQotIyAgIGVuZGlmCi0KLSAgICB2b2lkIHBvcCgpCi0gICAgeyAKLSAgICAgIE5ETkJPT1NUX0FTU0VSVF9NU0cobV9pbXAuZ2V0KCksCi0gICAgICAgICJwb3AoKSBvbiBlbmQgcmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvciIpOwotICAgICAgbV9pbXAtPnBvcCgpOwotICAgICAgaWYgKG1faW1wLT5tX3N0YWNrLmVtcHR5KCkpIG1faW1wLnJlc2V0KCk7IC8vIGRvbmUsIHNvIG1ha2UgZW5kIGl0ZXJhdG9yCi0gICAgfQotCi0gICAgdm9pZCBub19wdXNoKGJvb2wgdmFsdWU9dHJ1ZSkKLSAgICB7Ci0gICAgICBORE5CT09TVF9BU1NFUlRfTVNHKG1faW1wLmdldCgpLAotICAgICAgICAibm9fcHVzaCgpIG9uIGVuZCByZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yIik7Ci0gICAgICBpZiAodmFsdWUpCi0gICAgICAgIG1faW1wLT5tX29wdGlvbnMgfD0gc3ltbGlua19vcHRpb246Ol9kZXRhaWxfbm9fcHVzaDsKLSAgICAgIGVsc2UKLSAgICAgICAgbV9pbXAtPm1fb3B0aW9ucyAmPSB+c3ltbGlua19vcHRpb246Ol9kZXRhaWxfbm9fcHVzaDsKLSAgICB9Ci0KLSAgICBmaWxlX3N0YXR1cyBzdGF0dXMoKSBjb25zdAotICAgIHsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVF9NU0cobV9pbXAuZ2V0KCksCi0gICAgICAgICJzdGF0dXMoKSBvbiBlbmQgcmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvciIpOwotICAgICAgcmV0dXJuIG1faW1wLT5tX3N0YWNrLnRvcCgpLT5zdGF0dXMoKTsKLSAgICB9Ci0KLSAgICBmaWxlX3N0YXR1cyBzeW1saW5rX3N0YXR1cygpIGNvbnN0Ci0gICAgewotICAgICAgTkROQk9PU1RfQVNTRVJUX01TRyhtX2ltcC5nZXQoKSwKLSAgICAgICAgInN5bWxpbmtfc3RhdHVzKCkgb24gZW5kIHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3IiKTsKLSAgICAgIHJldHVybiBtX2ltcC0+bV9zdGFjay50b3AoKS0+c3ltbGlua19zdGF0dXMoKTsKLSAgICB9Ci0KLSAgcHJpdmF0ZToKLQotICAgIC8vIHNoYXJlZF9wdHIgcHJvdmlkZXMgc2hhbGxvdy1jb3B5IHNlbWFudGljcyByZXF1aXJlZCBmb3IgSW5wdXRJdGVyYXRvcnMuCi0gICAgLy8gbV9pbXAuZ2V0KCk9PTAgaW5kaWNhdGVzIHRoZSBlbmQgaXRlcmF0b3IuCi0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IGRldGFpbDo6cmVjdXJfZGlyX2l0cl9pbXAgPiAgbV9pbXA7Ci0KLSAgICBmcmllbmQgY2xhc3MgbmRuYm9vc3Q6Oml0ZXJhdG9yX2NvcmVfYWNjZXNzOwotCi0gICAgbmRuYm9vc3Q6Oml0ZXJhdG9yX2ZhY2FkZTwgCi0gICAgICByZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yLAotICAgICAgZGlyZWN0b3J5X2VudHJ5LAotICAgICAgbmRuYm9vc3Q6OnNpbmdsZV9wYXNzX3RyYXZlcnNhbF90YWcgPjo6cmVmZXJlbmNlCi0gICAgZGVyZWZlcmVuY2UoKSBjb25zdCAKLSAgICB7Ci0gICAgICBORE5CT09TVF9BU1NFUlRfTVNHKG1faW1wLmdldCgpLAotICAgICAgICAiZGVyZWZlcmVuY2Ugb2YgZW5kIHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3IiKTsKLSAgICAgIHJldHVybiAqbV9pbXAtPm1fc3RhY2sudG9wKCk7Ci0gICAgfQotCi0gICAgdm9pZCBpbmNyZW1lbnQoKQotICAgIHsgCi0gICAgICBORE5CT09TVF9BU1NFUlRfTVNHKG1faW1wLmdldCgpLAotICAgICAgICAiaW5jcmVtZW50IG9mIGVuZCByZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yIik7Ci0gICAgICBtX2ltcC0+aW5jcmVtZW50KDApOwotICAgICAgaWYgKG1faW1wLT5tX3N0YWNrLmVtcHR5KCkpCi0gICAgICAgIG1faW1wLnJlc2V0KCk7IC8vIGRvbmUsIHNvIG1ha2UgZW5kIGl0ZXJhdG9yCi0gICAgfQotCi0gICAgYm9vbCBlcXVhbChjb25zdCByZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yJiByaHMpIGNvbnN0Ci0gICAgICB7IHJldHVybiBtX2ltcCA9PSByaHMubV9pbXA7IH0KLQotICB9OwotCi0jIGlmICFkZWZpbmVkKE5ETkJPT1NUX0ZJTEVTWVNURU1fTk9fREVQUkVDQVRFRCkKLSAgdHlwZWRlZiByZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yIHdyZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yOwotIyBlbmRpZgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MgZmlsZXN5c3RlbV9lcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotICAKLSAgY2xhc3MgTkROQk9PU1RfU1lNQk9MX1ZJU0lCTEUgZmlsZXN5c3RlbV9lcnJvciA6IHB1YmxpYyBzeXN0ZW06OnN5c3RlbV9lcnJvcgotICB7Ci0gIC8vIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9tb3JlL2Vycm9yX2hhbmRsaW5nLmh0bWwgZm9yIGRlc2lnbiByYXRpb25hbGUKLQotICAvLyBhbGwgZnVuY3Rpb25zIGFyZSBpbmxpbmUgdG8gYXZvaWQgaXNzdWVzIHdpdGggY3Jvc3NpbmcgZGxsIGJvdW5kYXJpZXMKLQotICBwdWJsaWM6Ci0gICAgLy8gY29tcGlsZXIgZ2VuZXJhdGVzIGNvcHkgY29uc3RydWN0b3IgYW5kIGNvcHkgYXNzaWdubWVudAotCi0gICAgZmlsZXN5c3RlbV9lcnJvcigKLSAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICYgd2hhdF9hcmcsIHN5c3RlbTo6ZXJyb3JfY29kZSBlYykKLSAgICAgIDogc3lzdGVtOjpzeXN0ZW1fZXJyb3IoZWMsIHdoYXRfYXJnKQotICAgIHsKLSAgICAgIHRyeQotICAgICAgewotICAgICAgICBtX2ltcF9wdHIucmVzZXQobmV3IG1faW1wKTsKLSAgICAgIH0KLSAgICAgIGNhdGNoICguLi4pIHsgbV9pbXBfcHRyLnJlc2V0KCk7IH0KLSAgICB9Ci0KLSAgICBmaWxlc3lzdGVtX2Vycm9yKAotICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJiB3aGF0X2FyZywgY29uc3QgcGF0aCYgcGF0aDFfYXJnLAotICAgICAgc3lzdGVtOjplcnJvcl9jb2RlIGVjKQotICAgICAgOiBzeXN0ZW06OnN5c3RlbV9lcnJvcihlYywgd2hhdF9hcmcpCi0gICAgewotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIG1faW1wX3B0ci5yZXNldChuZXcgbV9pbXApOwotICAgICAgICBtX2ltcF9wdHItPm1fcGF0aDEgPSBwYXRoMV9hcmc7Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoLi4uKSB7IG1faW1wX3B0ci5yZXNldCgpOyB9Ci0gICAgfQotICAgIAotICAgIGZpbGVzeXN0ZW1fZXJyb3IoCi0gICAgICBjb25zdCBzdGQ6OnN0cmluZyAmIHdoYXRfYXJnLCBjb25zdCBwYXRoJiBwYXRoMV9hcmcsCi0gICAgICBjb25zdCBwYXRoJiBwYXRoMl9hcmcsIHN5c3RlbTo6ZXJyb3JfY29kZSBlYykKLSAgICAgIDogc3lzdGVtOjpzeXN0ZW1fZXJyb3IoZWMsIHdoYXRfYXJnKQotICAgIHsKLSAgICAgIHRyeQotICAgICAgewotICAgICAgICBtX2ltcF9wdHIucmVzZXQobmV3IG1faW1wKTsKLSAgICAgICAgbV9pbXBfcHRyLT5tX3BhdGgxID0gcGF0aDFfYXJnOwotICAgICAgICBtX2ltcF9wdHItPm1fcGF0aDIgPSBwYXRoMl9hcmc7Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoLi4uKSB7IG1faW1wX3B0ci5yZXNldCgpOyB9Ci0gICAgfQotCi0gICAgfmZpbGVzeXN0ZW1fZXJyb3IoKSB0aHJvdygpIHt9Ci0KLSAgICBjb25zdCBwYXRoJiBwYXRoMSgpIGNvbnN0Ci0gICAgewotICAgICAgc3RhdGljIGNvbnN0IHBhdGggZW1wdHlfcGF0aDsKLSAgICAgIHJldHVybiBtX2ltcF9wdHIuZ2V0KCkgPyBtX2ltcF9wdHItPm1fcGF0aDEgOiBlbXB0eV9wYXRoIDsKLSAgICB9Ci0gICAgY29uc3QgcGF0aCYgcGF0aDIoKSBjb25zdAotICAgIHsKLSAgICAgIHN0YXRpYyBjb25zdCBwYXRoIGVtcHR5X3BhdGg7Ci0gICAgICByZXR1cm4gbV9pbXBfcHRyLmdldCgpID8gbV9pbXBfcHRyLT5tX3BhdGgyIDogZW1wdHlfcGF0aCA7Ci0gICAgfQotCi0gICAgY29uc3QgY2hhciogd2hhdCgpIGNvbnN0IHRocm93KCkKLSAgICB7Ci0gICAgICBpZiAoIW1faW1wX3B0ci5nZXQoKSkKLSAgICAgICAgcmV0dXJuIHN5c3RlbTo6c3lzdGVtX2Vycm9yOjp3aGF0KCk7Ci0KLSAgICAgIHRyeQotICAgICAgewotICAgICAgICBpZiAobV9pbXBfcHRyLT5tX3doYXQuZW1wdHkoKSkKLSAgICAgICAgewotICAgICAgICAgIG1faW1wX3B0ci0+bV93aGF0ID0gc3lzdGVtOjpzeXN0ZW1fZXJyb3I6OndoYXQoKTsKLSAgICAgICAgICBpZiAoIW1faW1wX3B0ci0+bV9wYXRoMS5lbXB0eSgpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIG1faW1wX3B0ci0+bV93aGF0ICs9ICI6IFwiIjsKLSAgICAgICAgICAgIG1faW1wX3B0ci0+bV93aGF0ICs9IG1faW1wX3B0ci0+bV9wYXRoMS5zdHJpbmcoKTsKLSAgICAgICAgICAgIG1faW1wX3B0ci0+bV93aGF0ICs9ICJcIiI7Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmICghbV9pbXBfcHRyLT5tX3BhdGgyLmVtcHR5KCkpCi0gICAgICAgICAgewotICAgICAgICAgICAgbV9pbXBfcHRyLT5tX3doYXQgKz0gIiwgXCIiOwotICAgICAgICAgICAgbV9pbXBfcHRyLT5tX3doYXQgKz0gbV9pbXBfcHRyLT5tX3BhdGgyLnN0cmluZygpOwotICAgICAgICAgICAgbV9pbXBfcHRyLT5tX3doYXQgKz0gIlwiIjsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1faW1wX3B0ci0+bV93aGF0LmNfc3RyKCk7Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoLi4uKQotICAgICAgewotICAgICAgICByZXR1cm4gc3lzdGVtOjpzeXN0ZW1fZXJyb3I6OndoYXQoKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgcHJpdmF0ZToKLSAgICBzdHJ1Y3QgbV9pbXAKLSAgICB7Ci0gICAgICBwYXRoICAgICAgICAgbV9wYXRoMTsgLy8gbWF5IGJlIGVtcHR5KCkKLSAgICAgIHBhdGggICAgICAgICBtX3BhdGgyOyAvLyBtYXkgYmUgZW1wdHkoKQotICAgICAgc3RkOjpzdHJpbmcgIG1fd2hhdDsgIC8vIG5vdCBidWlsdCB1bnRpbCBuZWVkZWQKLSAgICB9OwotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPG1faW1wPiBtX2ltcF9wdHI7Ci0gIH07Ci0KLS8vICB0ZXN0IGhlbHBlciAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgTm90IHBhcnQgb2YgdGhlIGRvY3VtZW50ZWQgaW50ZXJmYWNlIHNpbmNlIGZhbHNlIHBvc2l0aXZlcyBhcmUgcG9zc2libGU7Ci0vLyAgdGhlcmUgaXMgbm8gbGF3IHRoYXQgc2F5cyB0aGF0IGFuIE9TIHRoYXQgaGFzIGxhcmdlIHN0YXQuc3Rfc2l6ZQotLy8gIGFjdHVhbGx5IHN1cHBvcnRzIGxhcmdlIGZpbGUgc2l6ZXMuCi0KLSAgbmFtZXNwYWNlIGRldGFpbAotICB7Ci0gICAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMIGJvb2wgcG9zc2libGVfbGFyZ2VfZmlsZV9zaXplX3N1cHBvcnQoKTsKLSAgfQotCi0gIH0gLy8gbmFtZXNwYWNlIGZpbGVzeXN0ZW0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvYWJpX3N1ZmZpeC5ocHA+IC8vIHBvcHMgYWJpX3ByZWZpeC5ocHAgcHJhZ21hcwotI2VuZGlmIC8vIE5ETkJPT1NUX0ZJTEVTWVNURU0zX09QRVJBVElPTlNfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2ZpbGVzeXN0ZW0vcGF0aC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2ZpbGVzeXN0ZW0vcGF0aC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkZWU2NmYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9maWxlc3lzdGVtL3BhdGguaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzU4ICswLDAgQEAKLS8vICBmaWxlc3lzdGVtIHBhdGguaHBwICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IEJlbWFuIERhd2VzIDIwMDItMjAwNSwgMjAwOQotLy8gIENvcHlyaWdodCBWbGFkaW1pciBQcnVzIDIwMDIKLQotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0KLS8vICBMaWJyYXJ5IGhvbWUgcGFnZTogaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9maWxlc3lzdGVtCi0KLS8vICBwYXRoOjpzdGVtKCksIGV4dGVuc2lvbigpLCBhbmQgcmVwbGFjZV9leHRlbnNpb24oKSBhcmUgYmFzZWQgb24KLS8vICBiYXNlbmFtZSgpLCBleHRlbnNpb24oKSwgYW5kIGNoYW5nZV9leHRlbnNpb24oKSBmcm9tIHRoZSBvcmlnaW5hbAotLy8gIGZpbGVzeXN0ZW0vY29udmVuaWVuY2UuaHBwIGhlYWRlciBieSBWbGFkaW1pciBQcnVzLgotCi0jaWZuZGVmIE5ETkJPT1NUX0ZJTEVTWVNURU1fUEFUSF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfRklMRVNZU1RFTV9QQVRIX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotIyBpZiBkZWZpbmVkKCBORE5CT09TVF9OT19TVERfV1NUUklORyApCi0jICAgZXJyb3IgQ29uZmlndXJhdGlvbiBub3Qgc3VwcG9ydGVkOiBCb29zdC5GaWxlc3lzdGVtIFYzIGFuZCBsYXRlciByZXF1aXJlcyBzdGQ6OndzdHJpbmcgc3VwcG9ydAotIyBlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZmlsZXN5c3RlbS9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2ZpbGVzeXN0ZW0vcGF0aF90cmFpdHMuaHBwPiAgLy8gaW5jbHVkZXMgPGN3Y2hhcj4KLSNpbmNsdWRlIDxuZG5ib29zdC9zeXN0ZW0vZXJyb3JfY29kZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3lzdGVtL3N5c3RlbV9lcnJvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IvaXRlcmF0b3JfZmFjYWRlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zaGFyZWRfcHRyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pby9kZXRhaWwvcXVvdGVkX21hbmlwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbmFsL2hhc2hfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19pbnRlZ3JhbC5ocHA+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPGl0ZXJhdG9yPgotI2luY2x1ZGUgPGNzdHJpbmc+Ci0jaW5jbHVkZSA8aW9zZndkPgotI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KLSNpbmNsdWRlIDxjYXNzZXJ0PgotI2luY2x1ZGUgPGxvY2FsZT4KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvYWJpX3ByZWZpeC5ocHA+IC8vIG11c3QgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci1uYW1lc3BhY2UgZmlsZXN5c3RlbQotewotICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0gIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLSAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcyBwYXRoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICBjbGFzcyBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wgcGF0aAotICB7Ci0gIHB1YmxpYzoKLQotICAgIC8vICB2YWx1ZV90eXBlIGlzIHRoZSBjaGFyYWN0ZXIgdHlwZSB1c2VkIGJ5IHRoZSBvcGVyYXRpbmcgc3lzdGVtIEFQSSB0bwotICAgIC8vICByZXByZXNlbnQgcGF0aHMuCi0KLSMgaWZkZWYgTkROQk9PU1RfV0lORE9XU19BUEkKLSAgICB0eXBlZGVmIHdjaGFyX3QgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV90eXBlOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEVYUFIgdmFsdWVfdHlwZSAgICAgIHByZWZlcnJlZF9zZXBhcmF0b3IgPSBMJ1xcJzsKLSMgZWxzZSAKLSAgICB0eXBlZGVmIGNoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV90eXBlOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEVYUFIgdmFsdWVfdHlwZSAgICAgIHByZWZlcnJlZF9zZXBhcmF0b3IgPSAnLyc7Ci0jIGVuZGlmCi0gICAgdHlwZWRlZiBzdGQ6OmJhc2ljX3N0cmluZzx2YWx1ZV90eXBlPiAgc3RyaW5nX3R5cGU7ICAKLSAgICB0eXBlZGVmIHN0ZDo6Y29kZWN2dDx3Y2hhcl90LCBjaGFyLAotICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWJzdGF0ZV90PiAgIGNvZGVjdnRfdHlwZTsKLQotCi0gICAgLy8gIC0tLS0tIGNoYXJhY3RlciBlbmNvZGluZyBjb252ZXJzaW9ucyAtLS0tLQotCi0gICAgLy8gIEZvbGxvd2luZyB0aGUgcHJpbmNpcGxlIG9mIGxlYXN0IGFzdG9uaXNobWVudCwgcGF0aCBpbnB1dCBhcmd1bWVudHMKLSAgICAvLyAgcGFzc2VkIHRvIG9yIG9idGFpbmVkIGZyb20gdGhlIG9wZXJhdGluZyBzeXN0ZW0gdmlhIG9iamVjdHMgb2YKLSAgICAvLyAgY2xhc3MgcGF0aCBiZWhhdmUgYXMgaWYgdGhleSB3ZXJlIGRpcmVjdGx5IHBhc3NlZCB0byBvcgotICAgIC8vICBvYnRhaW5lZCBmcm9tIHRoZSBPL1MgQVBJLCB1bmxlc3MgY29udmVyc2lvbiBpcyBleHBsaWNpdGx5IHJlcXVlc3RlZC4KLSAgICAvLwotICAgIC8vICBQT1NJWCBzcGVjZmllcyB0aGF0IHBhdGggc3RyaW5ncyBhcmUgcGFzc2VkIHVuY2hhbmdlZCB0byBhbmQgZnJvbSB0aGUKLSAgICAvLyAgQVBJLiBOb3RlIHRoYXQgdGhpcyBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgUE9TSVggY29tbWFuZCBsaW5lIHV0aWxpdGllcywKLSAgICAvLyAgd2hpY2ggY29udmVydCBhY2NvcmRpbmcgdG8gYSBsb2NhbGUuCi0gICAgLy8KLSAgICAvLyAgVGh1cyBmb3IgUE9TSVgsIGNoYXIgc3RyaW5ncyBkbyBub3QgdW5kZXJnbyBjb252ZXJzaW9uLiAgd2NoYXJfdCBzdHJpbmdzCi0gICAgLy8gIGFyZSBjb252ZXJ0ZWQgdG8vZnJvbSBjaGFyIHVzaW5nIHRoZSBwYXRoIGxvY2FsZSBvciwgaWYgYSBjb252ZXJzaW9uCi0gICAgLy8gIGFyZ3VtZW50IGlzIGdpdmVuLCB1c2luZyBhIGNvbnZlcnNpb24gb2JqZWN0IG1vZGVsZWQgb24KLSAgICAvLyAgc3RkOjp3c3RyaW5nX2NvbnZlcnQuCi0gICAgLy8KLSAgICAvLyAgVGhlIHBhdGggbG9jYWxlLCB3aGljaCBpcyBnbG9iYWwgdG8gdGhlIHRocmVhZCwgY2FuIGJlIGNoYW5nZWQgYnkgdGhlCi0gICAgLy8gIGltYnVlKCkgZnVuY3Rpb24uIEl0IGlzIGluaXRpYWxpemVkIHRvIGFuIGltcGxlbWVudGF0aW9uIGRlZmluZWQgbG9jYWxlLgotICAgIC8vICAKLSAgICAvLyAgRm9yIFdpbmRvd3MsIHdjaGFyX3Qgc3RyaW5ncyBkbyBub3QgdW5kZXJnbyBjb252ZXJzaW9uLiBjaGFyIHN0cmluZ3MKLSAgICAvLyAgYXJlIGNvbnZlcnRlZCB1c2luZyB0aGUgIkFOU0kiIG9yICJPRU0iIGNvZGUgcGFnZXMsIGFzIGRldGVybWluZWQgYnkKLSAgICAvLyAgdGhlIEFyZUZpbGVBcGlzQU5TSSgpIGZ1bmN0aW9uLCBvciwgaWYgYSBjb252ZXJzaW9uIGFyZ3VtZW50IGlzIGdpdmVuLAotICAgIC8vICB1c2luZyBhIGNvbnZlcnNpb24gb2JqZWN0IG1vZGVsZWQgb24gc3RkOjp3c3RyaW5nX2NvbnZlcnQuCi0gICAgLy8KLSAgICAvLyAgU2VlIG1fcGF0aG5hbWUgY29tbWVudHMgZm9yIGZ1cnRoZXIgaW1wb3J0YW50IHJhdGlvbmFsZS4KLQotICAgIC8vICBUT0RPOiBydWxlcyBuZWVkZWQgZm9yIG9wZXJhdGluZyBzeXN0ZW1zIHRoYXQgdXNlIC8gb3IgLgotICAgIC8vICBkaWZmZXJlbnRseSwgb3IgZm9ybWF0IGRpcmVjdG9yeSBwYXRocyBkaWZmZXJlbnRseSBmcm9tIGZpbGUgcGF0aHMuIAotICAgIC8vCi0gICAgLy8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgICAvLwotICAgIC8vICBNb3JlIHdvcmsgbmVlZGVkOiBIb3cgdG8gaGFuZGxlIGFuIG9wZXJhdGluZyBzeXN0ZW0gdGhhdCBtYXkgaGF2ZQotICAgIC8vICBzbGFzaCBjaGFyYWN0ZXJzIG9yIGRvdCBjaGFyYWN0ZXJzIGluIHZhbGlkIGZpbGVuYW1lcywgZWl0aGVyIGJlY2F1c2UKLSAgICAvLyAgaXQgZG9lc24ndCBmb2xsb3cgdGhlIFBPU0lYIHN0YW5kYXJkLCBvciBiZWNhdXNlIGl0IGFsbG93cyBNQkNTCi0gICAgLy8gIGZpbGVuYW1lIGVuY29kaW5ncyB0aGF0IG1heSBjb250YWluIHNsYXNoIG9yIGRvdCBjaGFyYWN0ZXJzLiBGb3IKLSAgICAvLyAgZXhhbXBsZSwgSVNPL0lFQyAyMDIyIChKSVMpIGVuY29kaW5nIHdoaWNoIGFsbG93cyBzd2l0Y2hpbmcgdG8KLSAgICAvLyAgSklTIHgwMjA4LTE5ODMgZW5jb2RpbmcuIEEgdmFsaWQgZmlsZW5hbWUgaW4gdGhpcyBzZXQgb2YgZW5jb2RpbmdzIGlzCi0gICAgLy8gIDB4MUIgMHgyNCAweDQyIFtzd2l0Y2ggdG8gWDAyMDgtMTk4M10gMHgyNCAweDJGIFtVKzMwNEYgS2lyYWdhbmEgbGV0dGVyIEtVXQotICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5eXgotICAgIC8vICBOb3RlIHRoYXQgMHgyRiBpcyB0aGUgQVNDSUkgc2xhc2ggY2hhcmFjdGVyCi0gICAgLy8KLSAgICAvLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0gICAgLy8gIFN1cHBvcnRlZCBzb3VyY2UgYXJndW1lbnRzOiBoYWxmLW9wZW4gaXRlcmF0b3IgcmFuZ2UsIGNvbnRhaW5lciwgYy1hcnJheSwKLSAgICAvLyAgYW5kIHNpbmdsZSBwb2ludGVyIHRvIG51bGwgdGVybWluYXRlZCBzdHJpbmcuCi0KLSAgICAvLyAgQWxsIHNvdXJjZSBhcmd1bWVudHMgZXhjZXB0IHBvaW50ZXJzIHRvIG51bGwgdGVybWluYXRlZCBieXRlIHN0cmluZ3Mgc3VwcG9ydAotICAgIC8vICBtdWx0aS1ieXRlIGNoYXJhY3RlciBzdHJpbmdzIHdoaWNoIG1heSBoYXZlIGVtYmVkZGVkIG51bGxzLiBFbWJlZGRlZCBudWxsCi0gICAgLy8gIHN1cHBvcnQgaXMgcmVxdWlyZWQgZm9yIHNvbWUgQXNpYW4gbGFuZ3VhZ2VzIG9uIFdpbmRvd3MuCi0KLSAgICAvLyAgW2RlZmF1bHRzXSAiY29uc3QgY29kZWN2dF90eXBlJiBjdnQ9Y29kZWN2dCgpIiBkZWZhdWx0IGFyZ3VtZW50cyBhcmUgbm90IHVzZWQKLSAgICAvLyAgYmVjYXVzZSBzb21lIGNvbXBpbGVycywgc3VjaCBhcyBNaWNyb3NvZnQgcHJpb3IgdG8gVkMrKyAxMCwgZG8gbm90IGhhbmRsZSBkZWZhdWx0cwotICAgIC8vICBjb3JyZWN0bHkgaW4gdGVtcGxhdGVzLgotCi0gICAgLy8gIC0tLS0tICBjb25zdHJ1Y3RvcnMgIC0tLS0tCi0KLSAgICBwYXRoKCl7fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotCi0gICAgcGF0aChjb25zdCBwYXRoJiBwKSA6IG1fcGF0aG5hbWUocC5tX3BhdGhuYW1lKSB7fQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFNvdXJjZT4KLSAgICBwYXRoKFNvdXJjZSBjb25zdCYgc291cmNlLAotICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmVuYWJsZV9pZjxwYXRoX3RyYWl0czo6aXNfcGF0aGFibGU8Ci0gICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpkZWNheTxTb3VyY2U+Ojp0eXBlPiA+Ojp0eXBlKiA9MCkKLSAgICB7Ci0gICAgICBwYXRoX3RyYWl0czo6ZGlzcGF0Y2goc291cmNlLCBtX3BhdGhuYW1lLCBjb2RlY3Z0KCkpOwotICAgIH0KLQotICAgIC8vICBPdmVybG9hZHMgZm9yIHRoZSBvcGVyYXRpbmcgc3lzdGVtIEFQSSdzIG5hdGl2ZSBjaGFyYWN0ZXIgdHlwZS4gUmF0aW9uYWxlOgotICAgIC8vICAgIC0gQXZvaWRzIHVzZSBvZiBjb2RlY3Z0KCkgZm9yIG5hdGl2ZSB2YWx1ZV90eXBlIHN0cmluZ3MuIFRoaXMgbGltaXRzIHRoZQotICAgIC8vICAgICAgaW1wYWN0IG9mIGxvY2FsZSgiIikgaW5pdGlhbGl6YXRpb24gZmFpbHVyZXMgb24gUE9TSVggc3lzdGVtcyB0byBwcm9ncmFtcwotICAgIC8vICAgICAgdGhhdCBhY3R1YWxseSBkZXBlbmQgb24gbG9jYWxlKCIiKS4gSXQgZnVydGhlciBlbnN1cmVzIHRoYXQgZXhjZXB0aW9ucyB0aHJvd24KLSAgICAvLyAgICAgIGFzIGEgcmVzdWx0IG9mIHN1Y2ggZmFpbHVlcyBvY2N1ciBhZnRlciBtYWluKCkgaGFzIHN0YXJ0ZWQsIHNvIGNhbiBiZSBjYXVnaHQuCi0gICAgLy8gICAgICBUaGlzIGlzIGEgcGFydGlhbCByZXNvbHV0aW9uIG9mIHRpY2tldHMgNDY4OCwgNTEwMCwgYW5kIDUyODkuCi0gICAgLy8gICAgLSBBIHNsaWdodCBvcHRpbWl6YXRpb24gZm9yIGEgY29tbW9uIHVzZSBjYXNlLCBwYXJ0aWN1bGFybHkgb24gUE9TSVggc2luY2UKLSAgICAvLyAgICAgIHZhbHVlX3R5cGUgaXMgY2hhciBhbmQgdGhhdCBpcyB0aGUgbW9zdCBjb21tb24gdXNlYWdlLgotICAgIHBhdGgoY29uc3QgdmFsdWVfdHlwZSogcykgOiBtX3BhdGhuYW1lKHMpIHt9Ci0gICAgcGF0aChjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzx2YWx1ZV90eXBlPiYgcykgOiBtX3BhdGhuYW1lKHMpIHt9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgU291cmNlPgotICAgIHBhdGgoU291cmNlIGNvbnN0JiBzb3VyY2UsIGNvbnN0IGNvZGVjdnRfdHlwZSYgY3Z0KQotICAgIC8vICBzZWUgW2RlZmF1bHRzXSBub3RlIGFib3ZlIGV4cGxhaW5pbmcgd2h5IGNvZGVjdnQoKSBkZWZhdWx0IGFyZ3VtZW50cyBhcmUgbm90IHVzZWQKLSAgICB7Ci0gICAgICBwYXRoX3RyYWl0czo6ZGlzcGF0Y2goc291cmNlLCBtX3BhdGhuYW1lLCBjdnQpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0ZXJhdG9yPgotICAgIHBhdGgoSW5wdXRJdGVyYXRvciBiZWdpbiwgSW5wdXRJdGVyYXRvciBlbmQpCi0gICAgeyAKLSAgICAgIGlmIChiZWdpbiAhPSBlbmQpCi0gICAgICB7Ci0gICAgICAgIHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPElucHV0SXRlcmF0b3I+Ojp2YWx1ZV90eXBlPgotICAgICAgICAgIHMoYmVnaW4sIGVuZCk7Ci0gICAgICAgIHBhdGhfdHJhaXRzOjpjb252ZXJ0KHMuY19zdHIoKSwgcy5jX3N0cigpK3Muc2l6ZSgpLCBtX3BhdGhuYW1lLCBjb2RlY3Z0KCkpOwotICAgICAgfQotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0ZXJhdG9yPgotICAgIHBhdGgoSW5wdXRJdGVyYXRvciBiZWdpbiwgSW5wdXRJdGVyYXRvciBlbmQsIGNvbnN0IGNvZGVjdnRfdHlwZSYgY3Z0KQotICAgIHsgCi0gICAgICBpZiAoYmVnaW4gIT0gZW5kKQotICAgICAgewotICAgICAgICBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxJbnB1dEl0ZXJhdG9yPjo6dmFsdWVfdHlwZT4KLSAgICAgICAgICBzKGJlZ2luLCBlbmQpOwotICAgICAgICBwYXRoX3RyYWl0czo6Y29udmVydChzLmNfc3RyKCksIHMuY19zdHIoKStzLnNpemUoKSwgbV9wYXRobmFtZSwgY3Z0KTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyAgLS0tLS0gIGFzc2lnbm1lbnRzICAtLS0tLQotCi0gICAgcGF0aCYgb3BlcmF0b3I9KGNvbnN0IHBhdGgmIHApCi0gICAgewotICAgICAgbV9wYXRobmFtZSA9IHAubV9wYXRobmFtZTsKLSAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBwYXRoJiBvcGVyYXRvcj0oY29uc3QgdmFsdWVfdHlwZSogcHRyKSAgLy8gcmVxdWlyZWQgaW4gY2FzZSBwdHIgb3ZlcmxhcHMgKnRoaXMKLSAgICB7Ci0gICAgICBtX3BhdGhuYW1lID0gcHRyOwotICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBTb3VyY2U+Ci0gICAgICB0eXBlbmFtZSBuZG5ib29zdDo6ZW5hYmxlX2lmPHBhdGhfdHJhaXRzOjppc19wYXRoYWJsZTwKLSAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmRlY2F5PFNvdXJjZT46OnR5cGU+LCBwYXRoJj46OnR5cGUKLSAgICBvcGVyYXRvcj0oU291cmNlIGNvbnN0JiBzb3VyY2UpCi0gICAgewotICAgICAgbV9wYXRobmFtZS5jbGVhcigpOwotICAgICAgcGF0aF90cmFpdHM6OmRpc3BhdGNoKHNvdXJjZSwgbV9wYXRobmFtZSwgY29kZWN2dCgpKTsKLSAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBwYXRoJiBhc3NpZ24oY29uc3QgdmFsdWVfdHlwZSogcHRyLCBjb25zdCBjb2RlY3Z0X3R5cGUmKSAgLy8gcmVxdWlyZWQgaW4gY2FzZSBwdHIgb3ZlcmxhcHMgKnRoaXMKLSAgICB7Ci0gICAgICBtX3BhdGhuYW1lID0gcHRyOwotICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBTb3VyY2U+Ci0gICAgcGF0aCYgYXNzaWduKFNvdXJjZSBjb25zdCYgc291cmNlLCBjb25zdCBjb2RlY3Z0X3R5cGUmIGN2dCkKLSAgICB7Ci0gICAgICBtX3BhdGhuYW1lLmNsZWFyKCk7Ci0gICAgICBwYXRoX3RyYWl0czo6ZGlzcGF0Y2goc291cmNlLCBtX3BhdGhuYW1lLCBjdnQpOwotICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0ZXJhdG9yPgotICAgIHBhdGgmIGFzc2lnbihJbnB1dEl0ZXJhdG9yIGJlZ2luLCBJbnB1dEl0ZXJhdG9yIGVuZCkKLSAgICB7Ci0gICAgICByZXR1cm4gYXNzaWduKGJlZ2luLCBlbmQsIGNvZGVjdnQoKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXRlcmF0b3I+Ci0gICAgcGF0aCYgYXNzaWduKElucHV0SXRlcmF0b3IgYmVnaW4sIElucHV0SXRlcmF0b3IgZW5kLCBjb25zdCBjb2RlY3Z0X3R5cGUmIGN2dCkKLSAgICB7IAotICAgICAgbV9wYXRobmFtZS5jbGVhcigpOwotICAgICAgaWYgKGJlZ2luICE9IGVuZCkKLSAgICAgIHsKLSAgICAgICAgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8SW5wdXRJdGVyYXRvcj46OnZhbHVlX3R5cGU+Ci0gICAgICAgICAgcyhiZWdpbiwgZW5kKTsKLSAgICAgICAgcGF0aF90cmFpdHM6OmNvbnZlcnQocy5jX3N0cigpLCBzLmNfc3RyKCkrcy5zaXplKCksIG1fcGF0aG5hbWUsIGN2dCk7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgLy8gIC0tLS0tICBjb25jYXRlbmF0aW9uICAtLS0tLQotCi0gICAgcGF0aCYgb3BlcmF0b3IrPShjb25zdCBwYXRoJiBwKSAgICAgICAgIHttX3BhdGhuYW1lICs9IHAubV9wYXRobmFtZTsgcmV0dXJuICp0aGlzO30KLSAgICBwYXRoJiBvcGVyYXRvcis9KGNvbnN0IHN0cmluZ190eXBlJiBzKSAge21fcGF0aG5hbWUgKz0gczsgcmV0dXJuICp0aGlzO30KLSAgICBwYXRoJiBvcGVyYXRvcis9KGNvbnN0IHZhbHVlX3R5cGUqIHB0cikge21fcGF0aG5hbWUgKz0gcHRyOyByZXR1cm4gKnRoaXM7fQotICAgIHBhdGgmIG9wZXJhdG9yKz0odmFsdWVfdHlwZSBjKSAgICAgICAgICB7bV9wYXRobmFtZSArPSBjOyByZXR1cm4gKnRoaXM7fQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFNvdXJjZT4KLSAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjplbmFibGVfaWY8cGF0aF90cmFpdHM6OmlzX3BhdGhhYmxlPAotICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6ZGVjYXk8U291cmNlPjo6dHlwZT4sIHBhdGgmPjo6dHlwZQotICAgIG9wZXJhdG9yKz0oU291cmNlIGNvbnN0JiBzb3VyY2UpCi0gICAgewotICAgICAgcmV0dXJuIGNvbmNhdChzb3VyY2UsIGNvZGVjdnQoKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIENoYXJUPgotICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmVuYWJsZV9pZjxpc19pbnRlZ3JhbDxDaGFyVD4sIHBhdGgmPjo6dHlwZQotICAgIG9wZXJhdG9yKz0oQ2hhclQgYykKLSAgICB7Ci0gICAgICBDaGFyVCB0bXBbMl07Ci0gICAgICB0bXBbMF0gPSBjOwotICAgICAgdG1wWzFdID0gMDsKLSAgICAgIHJldHVybiBjb25jYXQodG1wLCBjb2RlY3Z0KCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBTb3VyY2U+Ci0gICAgcGF0aCYgY29uY2F0KFNvdXJjZSBjb25zdCYgc291cmNlLCBjb25zdCBjb2RlY3Z0X3R5cGUmIGN2dCkKLSAgICB7Ci0gICAgICBwYXRoX3RyYWl0czo6ZGlzcGF0Y2goc291cmNlLCBtX3BhdGhuYW1lLCBjdnQpOwotICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0ZXJhdG9yPgotICAgIHBhdGgmIGNvbmNhdChJbnB1dEl0ZXJhdG9yIGJlZ2luLCBJbnB1dEl0ZXJhdG9yIGVuZCkKLSAgICB7IAotICAgICAgcmV0dXJuIGNvbmNhdChiZWdpbiwgZW5kLCBjb2RlY3Z0KCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0ZXJhdG9yPgotICAgIHBhdGgmIGNvbmNhdChJbnB1dEl0ZXJhdG9yIGJlZ2luLCBJbnB1dEl0ZXJhdG9yIGVuZCwgY29uc3QgY29kZWN2dF90eXBlJiBjdnQpCi0gICAgeyAKLSAgICAgIGlmIChiZWdpbiA9PSBlbmQpCi0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgIHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPElucHV0SXRlcmF0b3I+Ojp2YWx1ZV90eXBlPgotICAgICAgICBzKGJlZ2luLCBlbmQpOwotICAgICAgcGF0aF90cmFpdHM6OmNvbnZlcnQocy5jX3N0cigpLCBzLmNfc3RyKCkrcy5zaXplKCksIG1fcGF0aG5hbWUsIGN2dCk7Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgLy8gIC0tLS0tICBhcHBlbmRzICAtLS0tLQotCi0gICAgLy8gIGlmIGEgc2VwYXJhdG9yIGlzIGFkZGVkLCBpdCBpcyB0aGUgcHJlZmVycmVkIHNlcGFyYXRvciBmb3IgdGhlIHBsYXRmb3JtOwotICAgIC8vICBzbGFzaCBmb3IgUE9TSVgsIGJhY2tzbGFzaCBmb3IgV2luZG93cwotCi0gICAgcGF0aCYgb3BlcmF0b3IvPShjb25zdCBwYXRoJiBwKTsKLQotICAgIHBhdGgmIG9wZXJhdG9yLz0oY29uc3QgdmFsdWVfdHlwZSogcHRyKTsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBTb3VyY2U+Ci0gICAgICB0eXBlbmFtZSBuZG5ib29zdDo6ZW5hYmxlX2lmPHBhdGhfdHJhaXRzOjppc19wYXRoYWJsZTwKLSAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmRlY2F5PFNvdXJjZT46OnR5cGU+LCBwYXRoJj46OnR5cGUKLSAgICBvcGVyYXRvci89KFNvdXJjZSBjb25zdCYgc291cmNlKQotICAgIHsKLSAgICAgIHJldHVybiBhcHBlbmQoc291cmNlLCBjb2RlY3Z0KCkpOwotICAgIH0KLQotICAgIHBhdGgmIGFwcGVuZChjb25zdCB2YWx1ZV90eXBlKiBwdHIsIGNvbnN0IGNvZGVjdnRfdHlwZSYpICAvLyByZXF1aXJlZCBpbiBjYXNlIHB0ciBvdmVybGFwcyAqdGhpcwotICAgIHsKLSAgICAgIHRoaXMtPm9wZXJhdG9yLz0ocHRyKTsKLSAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgU291cmNlPgotICAgIHBhdGgmIGFwcGVuZChTb3VyY2UgY29uc3QmIHNvdXJjZSwgY29uc3QgY29kZWN2dF90eXBlJiBjdnQpOwotCi0gICAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXRlcmF0b3I+Ci0gICAgcGF0aCYgYXBwZW5kKElucHV0SXRlcmF0b3IgYmVnaW4sIElucHV0SXRlcmF0b3IgZW5kKQotICAgIHsgCi0gICAgICByZXR1cm4gYXBwZW5kKGJlZ2luLCBlbmQsIGNvZGVjdnQoKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXRlcmF0b3I+Ci0gICAgcGF0aCYgYXBwZW5kKElucHV0SXRlcmF0b3IgYmVnaW4sIElucHV0SXRlcmF0b3IgZW5kLCBjb25zdCBjb2RlY3Z0X3R5cGUmIGN2dCk7Ci0KLSAgICAvLyAgLS0tLS0gIG1vZGlmaWVycyAgLS0tLS0KLQotICAgIHZvaWQgICBjbGVhcigpICAgICAgICAgICAgIHsgbV9wYXRobmFtZS5jbGVhcigpOyB9Ci0gICAgcGF0aCYgIG1ha2VfcHJlZmVycmVkKCkKLSMgICBpZmRlZiBORE5CT09TVF9QT1NJWF9BUEkKLSAgICAgIHsgcmV0dXJuICp0aGlzOyB9ICAvLyBQT1NJWCBubyBlZmZlY3QKLSMgICBlbHNlIC8vIE5ETkJPT1NUX1dJTkRPV1NfQVBJCi0gICAgICA7ICAvLyBjaGFuZ2Ugc2xhc2hlcyB0byBiYWNrc2xhc2hlcwotIyAgIGVuZGlmCi0gICAgcGF0aCYgIHJlbW92ZV9maWxlbmFtZSgpOwotICAgIHBhdGgmICByZXBsYWNlX2V4dGVuc2lvbihjb25zdCBwYXRoJiBuZXdfZXh0ZW5zaW9uID0gcGF0aCgpKTsKLSAgICB2b2lkICAgc3dhcChwYXRoJiByaHMpICAgICB7IG1fcGF0aG5hbWUuc3dhcChyaHMubV9wYXRobmFtZSk7IH0KLQotICAgIC8vICAtLS0tLSAgb2JzZXJ2ZXJzICAtLS0tLQotICAKLSAgICAvLyAgRm9yIG9wZXJhdGluZyBzeXN0ZW1zIHRoYXQgZm9ybWF0IGZpbGUgcGF0aHMgZGlmZmVyZW50bHkgdGhhbiBkaXJlY3RvcnkKLSAgICAvLyAgcGF0aHMsIHJldHVybiB2YWx1ZXMgZnJvbSBvYnNlcnZlcnMgYXJlIGZvcm1hdHRlZCBhcyBmaWxlIG5hbWVzIHVubGVzcyB0aGVyZQotICAgIC8vICBpcyBhIHRyYWlsaW5nIHNlcGFyYXRvciwgaW4gd2hpY2ggY2FzZSByZXR1cm5zIGFyZSBmb3JtYXR0ZWQgYXMgZGlyZWN0b3J5Ci0gICAgLy8gIHBhdGhzLiBQT1NJWCBhbmQgV2luZG93cyBtYWtlIG5vIHN1Y2ggZGlzdGluY3Rpb24uCi0KLSAgICAvLyAgSW1wbGVtZW50YXRpb25zIGFyZSBwZXJtaXR0ZWQgdG8gcmV0dXJuIGNvbnN0IHZhbHVlcyBvciBjb25zdCByZWZlcmVuY2VzLgotCi0gICAgLy8gIFRoZSBzdHJpbmcgb3IgcGF0aCByZXR1cm5lZCBieSBhbiBvYnNlcnZlciBhcmUgc3BlY2lmaWVkIGFzIGJlaW5nIGZvcm1hdHRlZAotICAgIC8vICBhcyAibmF0aXZlIiBvciAiZ2VuZXJpYyIuCi0gICAgLy8KLSAgICAvLyAgRm9yIFBPU0lYLCB0aGVzZSBhcmUgYWxsIHRoZSBzYW1lIGZvcm1hdDsgc2xhc2hlcyBhbmQgYmFja3NsYXNoZXMgYXJlIGFzIGlucHV0IGFuZAotICAgIC8vICBhcmUgbm90IG1vZGlmaWVkLgotICAgIC8vCi0gICAgLy8gIEZvciBXaW5kb3dzLCAgIG5hdGl2ZTogICAgYXMgaW5wdXQ7IHNsYXNoZXMgYW5kIGJhY2tzbGFzaGVzIGFyZSBub3QgbW9kaWZpZWQ7Ci0gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBpcyB0aGUgZm9ybWF0IG9mIHRoZSBpbnRlcm5hbGx5IHN0b3JlZCBzdHJpbmcuCi0gICAgLy8gICAgICAgICAgICAgICAgIGdlbmVyaWM6ICAgYmFja3NsYXNoZXMgYXJlIGNvbnZlcnRlZCB0byBzbGFzaGVzCi0KLSAgICAvLyAgLS0tLS0gIG5hdGl2ZSBmb3JtYXQgb2JzZXJ2ZXJzICAtLS0tLQotCi0gICAgY29uc3Qgc3RyaW5nX3R5cGUmICBuYXRpdmUoKSBjb25zdCB7IHJldHVybiBtX3BhdGhuYW1lOyB9ICAgICAgICAgIC8vIFRocm93czogbm90aGluZwotICAgIGNvbnN0IHZhbHVlX3R5cGUqICAgY19zdHIoKSBjb25zdCAgeyByZXR1cm4gbV9wYXRobmFtZS5jX3N0cigpOyB9ICAvLyBUaHJvd3M6IG5vdGhpbmcKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBTdHJpbmc+Ci0gICAgU3RyaW5nIHN0cmluZygpIGNvbnN0OwotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFN0cmluZz4KLSAgICBTdHJpbmcgc3RyaW5nKGNvbnN0IGNvZGVjdnRfdHlwZSYgY3Z0KSBjb25zdDsKLQotIyAgIGlmZGVmIE5ETkJPT1NUX1dJTkRPV1NfQVBJCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgc3RyaW5nKCkgY29uc3QgeyByZXR1cm4gc3RyaW5nKGNvZGVjdnQoKSk7IH0gCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgc3RyaW5nKGNvbnN0IGNvZGVjdnRfdHlwZSYgY3Z0KSBjb25zdAotICAgIHsgCi0gICAgICBzdGQ6OnN0cmluZyB0bXA7Ci0gICAgICBpZiAoIW1fcGF0aG5hbWUuZW1wdHkoKSkKLSAgICAgICAgcGF0aF90cmFpdHM6OmNvbnZlcnQoJiptX3BhdGhuYW1lLmJlZ2luKCksICYqbV9wYXRobmFtZS5iZWdpbigpK21fcGF0aG5hbWUuc2l6ZSgpLAotICAgICAgICAgIHRtcCwgY3Z0KTsKLSAgICAgIHJldHVybiB0bXA7Ci0gICAgfQotICAgIAotICAgIC8vICBzdHJpbmdfdHlwZSBpcyBzdGQ6OndzdHJpbmcsIHNvIHRoZXJlIGlzIG5vIGNvbnZlcnNpb24KLSAgICBjb25zdCBzdGQ6OndzdHJpbmcmICB3c3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9wYXRobmFtZTsgfQotICAgIGNvbnN0IHN0ZDo6d3N0cmluZyYgIHdzdHJpbmcoY29uc3QgY29kZWN2dF90eXBlJikgY29uc3QgeyByZXR1cm4gbV9wYXRobmFtZTsgfQotCi0jICAgZWxzZSAgIC8vIE5ETkJPT1NUX1BPU0lYX0FQSQotICAgIC8vICBzdHJpbmdfdHlwZSBpcyBzdGQ6OnN0cmluZywgc28gdGhlcmUgaXMgbm8gY29udmVyc2lvbgotICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiAgc3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9wYXRobmFtZTsgfQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiAgc3RyaW5nKGNvbnN0IGNvZGVjdnRfdHlwZSYpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aG5hbWU7IH0KLQotICAgIGNvbnN0IHN0ZDo6d3N0cmluZyAgd3N0cmluZygpIGNvbnN0IHsgcmV0dXJuIHdzdHJpbmcoY29kZWN2dCgpKTsgfQotICAgIGNvbnN0IHN0ZDo6d3N0cmluZyAgd3N0cmluZyhjb25zdCBjb2RlY3Z0X3R5cGUmIGN2dCkgY29uc3QKLSAgICB7IAotICAgICAgc3RkOjp3c3RyaW5nIHRtcDsKLSAgICAgIGlmICghbV9wYXRobmFtZS5lbXB0eSgpKQotICAgICAgICBwYXRoX3RyYWl0czo6Y29udmVydCgmKm1fcGF0aG5hbWUuYmVnaW4oKSwgJiptX3BhdGhuYW1lLmJlZ2luKCkrbV9wYXRobmFtZS5zaXplKCksCi0gICAgICAgICAgdG1wLCBjdnQpOwotICAgICAgcmV0dXJuIHRtcDsKLSAgICB9Ci0KLSMgICBlbmRpZgotCi0gICAgLy8gIC0tLS0tICBnZW5lcmljIGZvcm1hdCBvYnNlcnZlcnMgIC0tLS0tCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgU3RyaW5nPgotICAgIFN0cmluZyBnZW5lcmljX3N0cmluZygpIGNvbnN0OwotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFN0cmluZz4KLSAgICBTdHJpbmcgZ2VuZXJpY19zdHJpbmcoY29uc3QgY29kZWN2dF90eXBlJiBjdnQpIGNvbnN0OwotCi0jICAgaWZkZWYgTkROQk9PU1RfV0lORE9XU19BUEkKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAgIGdlbmVyaWNfc3RyaW5nKCkgY29uc3QgeyByZXR1cm4gZ2VuZXJpY19zdHJpbmcoY29kZWN2dCgpKTsgfSAKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAgIGdlbmVyaWNfc3RyaW5nKGNvbnN0IGNvZGVjdnRfdHlwZSYgY3Z0KSBjb25zdDsgCi0gICAgY29uc3Qgc3RkOjp3c3RyaW5nICBnZW5lcmljX3dzdHJpbmcoKSBjb25zdDsKLSAgICBjb25zdCBzdGQ6OndzdHJpbmcgIGdlbmVyaWNfd3N0cmluZyhjb25zdCBjb2RlY3Z0X3R5cGUmKSBjb25zdCB7IHJldHVybiBnZW5lcmljX3dzdHJpbmcoKTsgfTsKLQotIyAgIGVsc2UgLy8gTkROQk9PU1RfUE9TSVhfQVBJCi0gICAgLy8gIE9uIFBPU0lYLWxpa2Ugc3lzdGVtcywgdGhlIGdlbmVyaWMgZm9ybWF0IGlzIHRoZSBzYW1lIGFzIHRoZSBuYXRpdmUgZm9ybWF0Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcmICBnZW5lcmljX3N0cmluZygpIGNvbnN0ICB7IHJldHVybiBtX3BhdGhuYW1lOyB9Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcmICBnZW5lcmljX3N0cmluZyhjb25zdCBjb2RlY3Z0X3R5cGUmKSBjb25zdCAgeyByZXR1cm4gbV9wYXRobmFtZTsgfQotICAgIGNvbnN0IHN0ZDo6d3N0cmluZyAgZ2VuZXJpY193c3RyaW5nKCkgY29uc3QgeyByZXR1cm4gd3N0cmluZyhjb2RlY3Z0KCkpOyB9Ci0gICAgY29uc3Qgc3RkOjp3c3RyaW5nICBnZW5lcmljX3dzdHJpbmcoY29uc3QgY29kZWN2dF90eXBlJiBjdnQpIGNvbnN0IHsgcmV0dXJuIHdzdHJpbmcoY3Z0KTsgfQotCi0jICAgZW5kaWYKLQotICAgIC8vICAtLS0tLSAgY29tcGFyZSAgLS0tLS0KLQotICAgIGludCBjb21wYXJlKGNvbnN0IHBhdGgmIHApIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUOyAgLy8gZ2VuZXJpYywgbGV4aWNvZ3JhcGhpY2FsCi0gICAgaW50IGNvbXBhcmUoY29uc3Qgc3RkOjpzdHJpbmcmIHMpIGNvbnN0IHsgcmV0dXJuIGNvbXBhcmUocGF0aChzKSk7IH0KLSAgICBpbnQgY29tcGFyZShjb25zdCB2YWx1ZV90eXBlKiBzKSBjb25zdCAgeyByZXR1cm4gY29tcGFyZShwYXRoKHMpKTsgfQotCi0gICAgLy8gIC0tLS0tICBkZWNvbXBvc2l0aW9uICAtLS0tLQotCi0gICAgcGF0aCAgcm9vdF9wYXRoKCkgY29uc3Q7IAotICAgIHBhdGggIHJvb3RfbmFtZSgpIGNvbnN0OyAgICAgICAgIC8vIHJldHVybnMgMCBvciAxIGVsZW1lbnQgcGF0aAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGV2ZW4gb24gUE9TSVgsIHJvb3RfbmFtZSgpIGlzIG5vbi1lbXB0eSgpIGZvciBuZXR3b3JrIHBhdGhzCi0gICAgcGF0aCAgcm9vdF9kaXJlY3RvcnkoKSBjb25zdDsgICAgLy8gcmV0dXJucyAwIG9yIDEgZWxlbWVudCBwYXRoCi0gICAgcGF0aCAgcmVsYXRpdmVfcGF0aCgpIGNvbnN0OwotICAgIHBhdGggIHBhcmVudF9wYXRoKCkgY29uc3Q7Ci0gICAgcGF0aCAgZmlsZW5hbWUoKSBjb25zdDsgICAgICAgICAgLy8gcmV0dXJucyAwIG9yIDEgZWxlbWVudCBwYXRoCi0gICAgcGF0aCAgc3RlbSgpIGNvbnN0OyAgICAgICAgICAgICAgLy8gcmV0dXJucyAwIG9yIDEgZWxlbWVudCBwYXRoCi0gICAgcGF0aCAgZXh0ZW5zaW9uKCkgY29uc3Q7ICAgICAgICAgLy8gcmV0dXJucyAwIG9yIDEgZWxlbWVudCBwYXRoCi0KLSAgICAvLyAgLS0tLS0gIHF1ZXJ5ICAtLS0tLQotCi0gICAgYm9vbCBlbXB0eSgpIGNvbnN0ICAgICAgICAgICAgICAgeyByZXR1cm4gbV9wYXRobmFtZS5lbXB0eSgpOyB9IC8vIG5hbWUgY29uc2lzdGVudCB3aXRoIHN0ZCBjb250YWluZXJzCi0gICAgYm9vbCBoYXNfcm9vdF9wYXRoKCkgY29uc3QgICAgICAgeyByZXR1cm4gaGFzX3Jvb3RfZGlyZWN0b3J5KCkgfHwgaGFzX3Jvb3RfbmFtZSgpOyB9Ci0gICAgYm9vbCBoYXNfcm9vdF9uYW1lKCkgY29uc3QgICAgICAgeyByZXR1cm4gIXJvb3RfbmFtZSgpLmVtcHR5KCk7IH0KLSAgICBib29sIGhhc19yb290X2RpcmVjdG9yeSgpIGNvbnN0ICB7IHJldHVybiAhcm9vdF9kaXJlY3RvcnkoKS5lbXB0eSgpOyB9Ci0gICAgYm9vbCBoYXNfcmVsYXRpdmVfcGF0aCgpIGNvbnN0ICAgeyByZXR1cm4gIXJlbGF0aXZlX3BhdGgoKS5lbXB0eSgpOyB9Ci0gICAgYm9vbCBoYXNfcGFyZW50X3BhdGgoKSBjb25zdCAgICAgeyByZXR1cm4gIXBhcmVudF9wYXRoKCkuZW1wdHkoKTsgfQotICAgIGJvb2wgaGFzX2ZpbGVuYW1lKCkgY29uc3QgICAgICAgIHsgcmV0dXJuICFtX3BhdGhuYW1lLmVtcHR5KCk7IH0KLSAgICBib29sIGhhc19zdGVtKCkgY29uc3QgICAgICAgICAgICB7IHJldHVybiAhc3RlbSgpLmVtcHR5KCk7IH0KLSAgICBib29sIGhhc19leHRlbnNpb24oKSBjb25zdCAgICAgICB7IHJldHVybiAhZXh0ZW5zaW9uKCkuZW1wdHkoKTsgfQotICAgIGJvb2wgaXNfYWJzb2x1dGUoKSBjb25zdAotICAgIHsKLSMgICAgIGlmZGVmIE5ETkJPT1NUX1dJTkRPV1NfQVBJCi0gICAgICByZXR1cm4gaGFzX3Jvb3RfbmFtZSgpICYmIGhhc19yb290X2RpcmVjdG9yeSgpOwotIyAgICAgZWxzZQotICAgICAgcmV0dXJuIGhhc19yb290X2RpcmVjdG9yeSgpOwotIyAgICAgZW5kaWYKLSAgICB9Ci0gICAgYm9vbCBpc19yZWxhdGl2ZSgpIGNvbnN0ICAgICAgICAgeyByZXR1cm4gIWlzX2Fic29sdXRlKCk7IH0gCi0KLSAgICAvLyAgLS0tLS0gIGl0ZXJhdG9ycyAgLS0tLS0KLQotICAgIGNsYXNzIGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7Ci0KLSAgICBpdGVyYXRvciBiZWdpbigpIGNvbnN0OwotICAgIGl0ZXJhdG9yIGVuZCgpIGNvbnN0OwotCi0gICAgLy8gIC0tLS0tICBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9ucyAgLS0tLS0KLQotICAgIHN0YXRpYyBzdGQ6OmxvY2FsZSAgaW1idWUoY29uc3Qgc3RkOjpsb2NhbGUmIGxvYyk7Ci0gICAgc3RhdGljIGNvbnN0ICAgICAgICBjb2RlY3Z0X3R5cGUmIGNvZGVjdnQoKTsKLQotICAgIC8vICAtLS0tLSAgZGVwcmVjYXRlZCBmdW5jdGlvbnMgIC0tLS0tCi0KLSMgaWYgZGVmaW5lZChORE5CT09TVF9GSUxFU1lTVEVNX0RFUFJFQ0FURUQpICYmIGRlZmluZWQoTkROQk9PU1RfRklMRVNZU1RFTV9OT19ERVBSRUNBVEVEKQotIyAgIGVycm9yIGJvdGggTkROQk9PU1RfRklMRVNZU1RFTV9ERVBSRUNBVEVEIGFuZCBORE5CT09TVF9GSUxFU1lTVEVNX05PX0RFUFJFQ0FURUQgYXJlIGRlZmluZWQKLSMgZW5kaWYKLQotIyBpZiAhZGVmaW5lZChORE5CT09TVF9GSUxFU1lTVEVNX05PX0RFUFJFQ0FURUQpCi0gICAgLy8gIHJlY2VudGx5IGRlcHJlY2F0ZWQgZnVuY3Rpb25zIHN1cHBsaWVkIGJ5IGRlZmF1bHQKLSAgICBwYXRoJiAgbm9ybWFsaXplKCkgICAgICAgICAgICAgIHsgcmV0dXJuIG1fbm9ybWFsaXplKCk7IH0KLSAgICBwYXRoJiAgcmVtb3ZlX2xlYWYoKSAgICAgICAgICAgIHsgcmV0dXJuIHJlbW92ZV9maWxlbmFtZSgpOyB9Ci0gICAgcGF0aCAgIGxlYWYoKSBjb25zdCAgICAgICAgICAgICB7IHJldHVybiBmaWxlbmFtZSgpOyB9Ci0gICAgcGF0aCAgIGJyYW5jaF9wYXRoKCkgY29uc3QgICAgICB7IHJldHVybiBwYXJlbnRfcGF0aCgpOyB9Ci0gICAgYm9vbCAgIGhhc19sZWFmKCkgY29uc3QgICAgICAgICB7IHJldHVybiAhbV9wYXRobmFtZS5lbXB0eSgpOyB9Ci0gICAgYm9vbCAgIGhhc19icmFuY2hfcGF0aCgpIGNvbnN0ICB7IHJldHVybiAhcGFyZW50X3BhdGgoKS5lbXB0eSgpOyB9Ci0gICAgYm9vbCAgIGlzX2NvbXBsZXRlKCkgY29uc3QgICAgICB7IHJldHVybiBpc19hYnNvbHV0ZSgpOyB9Ci0jIGVuZGlmCi0KLSMgaWYgZGVmaW5lZChORE5CT09TVF9GSUxFU1lTVEVNX0RFUFJFQ0FURUQpCi0gICAgLy8gIGRlcHJlY2F0ZWQgZnVuY3Rpb25zIHdpdGggZW5vdWdoIHNpZ25hdHVyZSBvciBzZW1hbnRpYyBjaGFuZ2VzIHRoYXQgdGhleSBhcmUKLSAgICAvLyAgbm90IHN1cHBsaWVkIGJ5IGRlZmF1bHQgCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgZmlsZV9zdHJpbmcoKSBjb25zdCAgICAgICAgICAgICAgIHsgcmV0dXJuIHN0cmluZygpOyB9Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgZGlyZWN0b3J5X3N0cmluZygpIGNvbnN0ICAgICAgICAgIHsgcmV0dXJuIHN0cmluZygpOyB9Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgbmF0aXZlX2ZpbGVfc3RyaW5nKCkgY29uc3QgICAgICAgIHsgcmV0dXJuIHN0cmluZygpOyB9Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgbmF0aXZlX2RpcmVjdG9yeV9zdHJpbmcoKSBjb25zdCAgIHsgcmV0dXJuIHN0cmluZygpOyB9Ci0gICAgY29uc3Qgc3RyaW5nX3R5cGUgZXh0ZXJuYWxfZmlsZV9zdHJpbmcoKSBjb25zdCAgICAgIHsgcmV0dXJuIG5hdGl2ZSgpOyB9Ci0gICAgY29uc3Qgc3RyaW5nX3R5cGUgZXh0ZXJuYWxfZGlyZWN0b3J5X3N0cmluZygpIGNvbnN0IHsgcmV0dXJuIG5hdGl2ZSgpOyB9Ci0KLSAgICAvLyAgb2xkZXIgZnVuY3Rpb25zIG5vIGxvbmdlciBzdXBwb3J0ZWQKLSAgICAvL3R5cGVkZWYgYm9vbCAoKm5hbWVfY2hlY2spKGNvbnN0IHN0ZDo6c3RyaW5nICYgbmFtZSk7Ci0gICAgLy9iYXNpY19wYXRoKGNvbnN0IHN0cmluZ190eXBlJiBzdHIsIG5hbWVfY2hlY2spIHsgb3BlcmF0b3IvPShzdHIpOyB9Ci0gICAgLy9iYXNpY19wYXRoKGNvbnN0IHR5cGVuYW1lIHN0cmluZ190eXBlOjp2YWx1ZV90eXBlKiBzLCBuYW1lX2NoZWNrKQotICAgIC8vICB7IG9wZXJhdG9yLz0ocyk7fQotICAgIC8vc3RhdGljIGJvb2wgZGVmYXVsdF9uYW1lX2NoZWNrX3dyaXRhYmxlKCkgeyByZXR1cm4gZmFsc2U7IH0gCi0gICAgLy9zdGF0aWMgdm9pZCBkZWZhdWx0X25hbWVfY2hlY2sobmFtZV9jaGVjaykge30KLSAgICAvL3N0YXRpYyBuYW1lX2NoZWNrIGRlZmF1bHRfbmFtZV9jaGVjaygpIHsgcmV0dXJuIDA7IH0KLSAgICAvL2Jhc2ljX3BhdGgmIGNhbm9uaXplKCk7Ci0jIGVuZGlmCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MgcGF0aCBwcml2YXRlIG1lbWJlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICBwcml2YXRlOgotIyAgIGlmIGRlZmluZWQoX01TQ19WRVIpCi0jICAgICBwcmFnbWEgd2FybmluZyhwdXNoKSAvLyBTYXZlIHdhcm5pbmcgc2V0dGluZ3MKLSMgICAgIHByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0MjUxKSAvLyBkaXNhYmxlIHdhcm5pbmc6IGNsYXNzICdzdGQ6OmJhc2ljX3N0cmluZzxfRWxlbSxfVHJhaXRzLF9BeD4nCi0jICAgZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbmVlZHMgdG8gaGF2ZSBkbGwtaW50ZXJmYWNlLi4uCi0vKgotICAgICAgbV9wYXRobmFtZSBoYXMgdGhlIHR5cGUsIGVuY29kaW5nLCBhbmQgZm9ybWF0IHJlcXVpcmVkIGJ5IHRoZSBuYXRpdmUKLSAgICAgIG9wZXJhdGluZyBzeXN0ZW0uIFRodXMgZm9yIFBPU0lYIGFuZCBXaW5kb3dzIHRoZXJlIGlzIG5vIGNvbnZlcnNpb24gZm9yCi0gICAgICBwYXNzaW5nIG1fcGF0aG5hbWUuY19zdHIoKSB0byB0aGUgTy9TIEFQSSBvciB3aGVuIG9idGFpbmluZyBhIHBhdGggZnJvbSB0aGUKLSAgICAgIE8vUyBBUEkuIFBPU0lYIGVuY29kaW5nIGlzIHVuc3BlY2lmaWVkIG90aGVyIHRoYW4gZm9yIGRvdCBhbmQgc2xhc2gKLSAgICAgIGNoYXJhY3RlcnM7IFBPU0lYIGp1c3QgdHJlYXRzIHBhdGhzIGFzIGEgc2VxdWVuY2Ugb2YgYnl0ZXMuIFdpbmRvd3MKLSAgICAgIGVuY29kaW5nIGlzIFVDUy0yIG9yIFVURi0xNiBkZXBlbmRpbmcgb24gdGhlIHZlcnNpb24uCi0qLwotICAgIHN0cmluZ190eXBlICBtX3BhdGhuYW1lOyAgLy8gV2luZG93czogYXMgaW5wdXQ7IGJhY2tzbGFzaGVzIE5PVCBjb252ZXJ0ZWQgdG8gc2xhc2hlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNsYXNoZXMgTk9UIGNvbnZlcnRlZCB0byBiYWNrc2xhc2hlcwotIyAgIGlmIGRlZmluZWQoX01TQ19WRVIpCi0jICAgICBwcmFnbWEgd2FybmluZyhwb3ApIC8vIHJlc3RvcmUgd2FybmluZyBzZXR0aW5ncy4KLSMgICBlbmRpZiAKLQotICAgIHN0cmluZ190eXBlOjpzaXplX3R5cGUgbV9hcHBlbmRfc2VwYXJhdG9yX2lmX25lZWRlZCgpOwotICAgIC8vICBSZXR1cm5zOiBJZiBzZXBhcmF0b3IgaXMgdG8gYmUgYXBwZW5kZWQsIG1fcGF0aG5hbWUuc2l6ZSgpIGJlZm9yZSBhcHBlbmQuIE90aGVyd2lzZSAwLgotICAgIC8vICBOb3RlOiBBbiBhcHBlbmQgaXMgbmV2ZXIgcGVyZm9ybWVkIGlmIHNpemUoKT09MCwgc28gYSByZXR1cm5lZCAwIGlzIHVuYW1iaWd1b3VzLgotCi0gICAgdm9pZCBtX2VyYXNlX3JlZHVuZGFudF9zZXBhcmF0b3Ioc3RyaW5nX3R5cGU6OnNpemVfdHlwZSBzZXBfcG9zKTsKLSAgICBzdHJpbmdfdHlwZTo6c2l6ZV90eXBlIG1fcGFyZW50X3BhdGhfZW5kKCkgY29uc3Q7Ci0KLSAgICBwYXRoJiBtX25vcm1hbGl6ZSgpOwotCi0gICAgLy8gV2FzIHF1YWxpZmllZDsgY29tbzQzM2JldGE4IHJlcG9ydHM6Ci0gICAgLy8gICAgd2FybmluZyAjNDI3LUQ6IHF1YWxpZmllZCBuYW1lIGlzIG5vdCBhbGxvd2VkIGluIG1lbWJlciBkZWNsYXJhdGlvbiAKLSAgICBmcmllbmQgY2xhc3MgaXRlcmF0b3I7Ci0gICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I8KGNvbnN0IHBhdGgmIGxocywgY29uc3QgcGF0aCYgcmhzKTsKLQotICAgIC8vIHNlZSBwYXRoOjppdGVyYXRvcjo6aW5jcmVtZW50L2RlY3JlbWVudCBjb21tZW50IGJlbG93Ci0gICAgc3RhdGljIHZvaWQgbV9wYXRoX2l0ZXJhdG9yX2luY3JlbWVudChwYXRoOjppdGVyYXRvciAmIGl0KTsKLSAgICBzdGF0aWMgdm9pZCBtX3BhdGhfaXRlcmF0b3JfZGVjcmVtZW50KHBhdGg6Oml0ZXJhdG9yICYgaXQpOwotCi0gIH07ICAvLyBjbGFzcyBwYXRoCi0KLSAgbmFtZXNwYWNlIGRldGFpbAotICB7Ci0gICAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMCi0gICAgICBpbnQgbGV4X2NvbXBhcmUocGF0aDo6aXRlcmF0b3IgZmlyc3QxLCBwYXRoOjppdGVyYXRvciBsYXN0MSwKLSAgICAgICAgcGF0aDo6aXRlcmF0b3IgZmlyc3QyLCBwYXRoOjppdGVyYXRvciBsYXN0Mik7Ci0gIH0KLQotIyBpZm5kZWYgTkROQk9PU1RfRklMRVNZU1RFTV9OT19ERVBSRUNBVEVECi0gIHR5cGVkZWYgcGF0aCB3cGF0aDsKLSMgZW5kaWYKLQotICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0gIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcyBwYXRoOjppdGVyYXRvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLSAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotIAotICBjbGFzcyBwYXRoOjppdGVyYXRvcgotICAgIDogcHVibGljIG5kbmJvb3N0OjppdGVyYXRvcl9mYWNhZGU8Ci0gICAgICBwYXRoOjppdGVyYXRvciwKLSAgICAgIHBhdGggY29uc3QsCi0gICAgICBuZG5ib29zdDo6YmlkaXJlY3Rpb25hbF90cmF2ZXJzYWxfdGFnID4KLSAgewotICBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBuZG5ib29zdDo6aXRlcmF0b3JfY29yZV9hY2Nlc3M7Ci0gICAgZnJpZW5kIGNsYXNzIG5kbmJvb3N0OjpmaWxlc3lzdGVtOjpwYXRoOwotICAgIGZyaWVuZCB2b2lkIG1fcGF0aF9pdGVyYXRvcl9pbmNyZW1lbnQocGF0aDo6aXRlcmF0b3IgJiBpdCk7Ci0gICAgZnJpZW5kIHZvaWQgbV9wYXRoX2l0ZXJhdG9yX2RlY3JlbWVudChwYXRoOjppdGVyYXRvciAmIGl0KTsKLQotICAgIGNvbnN0IHBhdGgmIGRlcmVmZXJlbmNlKCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50OyB9Ci0KLSAgICBib29sIGVxdWFsKGNvbnN0IGl0ZXJhdG9yICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgIHJldHVybiBtX3BhdGhfcHRyID09IHJocy5tX3BhdGhfcHRyICYmIG1fcG9zID09IHJocy5tX3BvczsKLSAgICB9Ci0KLSAgICAvLyBpdGVyYXRvcl9mYWNhZGUgZGVyaXZlZCBjbGFzc2VzIGRvbid0IHNlZW0gdG8gbGlrZSBpbXBsZW1lbnRhdGlvbnMgaW4KLSAgICAvLyBzZXBhcmF0ZSB0cmFuc2xhdGlvbiB1bml0IGRsbCdzLCBzbyBmb3J3YXJkIHRvIGNsYXNzIHBhdGggc3RhdGljIG1lbWJlcnMKLSAgICB2b2lkIGluY3JlbWVudCgpIHsgbV9wYXRoX2l0ZXJhdG9yX2luY3JlbWVudCgqdGhpcyk7IH0KLSAgICB2b2lkIGRlY3JlbWVudCgpIHsgbV9wYXRoX2l0ZXJhdG9yX2RlY3JlbWVudCgqdGhpcyk7IH0KLQotICAgIHBhdGggICAgICAgICAgICAgICAgICAgIG1fZWxlbWVudDsgICAvLyBjdXJyZW50IGVsZW1lbnQKLSAgICBjb25zdCBwYXRoKiAgICAgICAgICAgICBtX3BhdGhfcHRyOyAgLy8gcGF0aCBiZWluZyBpdGVyYXRlZCBvdmVyCi0gICAgc3RyaW5nX3R5cGU6OnNpemVfdHlwZSAgbV9wb3M7ICAgICAgIC8vIHBvc2l0aW9uIG9mIG1fZWxlbWVudCBpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtX3BhdGhfcHRyLT5tX3BhdGhuYW1lLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBtX2VsZW1lbnQgaXMgaW1wbGljaXQgZG90LCBtX3BvcyBpcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcG9zaXRpb24gb2YgdGhlIGxhc3Qgc2VwYXJhdG9yIGluIHRoZSBwYXRoLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmQoKSBpdGVyYXRvciBpcyBpbmRpY2F0ZWQgYnkgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1fcG9zID09IG1fcGF0aF9wdHItPm1fcGF0aG5hbWUuc2l6ZSgpCi0gIH07IC8vIHBhdGg6Oml0ZXJhdG9yCi0KLSAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0gIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uLW1lbWJlciBmdW5jdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLSAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgLy8gIHN0ZDo6bGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmUgd291bGQgaW5maW5hdGVseSByZWN1cnNlIGJlY2F1c2UgcGF0aCBpdGVyYXRvcnMKLSAgLy8gIHlpZWxkIHBhdGhzLCBzbyBwcm92aWRlIGEgcGF0aCBhd2FyZSB2ZXJzaW9uCi0gIGlubGluZSBib29sIGxleGljb2dyYXBoaWNhbF9jb21wYXJlKHBhdGg6Oml0ZXJhdG9yIGZpcnN0MSwgcGF0aDo6aXRlcmF0b3IgbGFzdDEsCi0gICAgcGF0aDo6aXRlcmF0b3IgZmlyc3QyLCBwYXRoOjppdGVyYXRvciBsYXN0MikKLSAgICB7IHJldHVybiBkZXRhaWw6OmxleF9jb21wYXJlKGZpcnN0MSwgbGFzdDEsIGZpcnN0MiwgbGFzdDIpIDwgMDsgfQotICAKLSAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBwYXRoJiBsaHMsIGNvbnN0IHBhdGgmIHJocykgICAgICAgICAgICAgIHtyZXR1cm4gbGhzLmNvbXBhcmUocmhzKSA9PSAwO30KLSAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBwYXRoJiBsaHMsIGNvbnN0IHBhdGg6OnN0cmluZ190eXBlJiByaHMpIHtyZXR1cm4gbGhzLmNvbXBhcmUocmhzKSA9PSAwO30gCi0gIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgcGF0aDo6c3RyaW5nX3R5cGUmIGxocywgY29uc3QgcGF0aCYgcmhzKSB7cmV0dXJuIHJocy5jb21wYXJlKGxocykgPT0gMDt9Ci0gIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgcGF0aCYgbGhzLCBjb25zdCBwYXRoOjp2YWx1ZV90eXBlKiByaHMpICB7cmV0dXJuIGxocy5jb21wYXJlKHJocykgPT0gMDt9Ci0gIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgcGF0aDo6dmFsdWVfdHlwZSogbGhzLCBjb25zdCBwYXRoJiByaHMpICB7cmV0dXJuIHJocy5jb21wYXJlKGxocykgPT0gMDt9Ci0gIAotICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IHBhdGgmIGxocywgY29uc3QgcGF0aCYgcmhzKSAgICAgICAgICAgICAge3JldHVybiBsaHMuY29tcGFyZShyaHMpICE9IDA7fQotICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IHBhdGgmIGxocywgY29uc3QgcGF0aDo6c3RyaW5nX3R5cGUmIHJocykge3JldHVybiBsaHMuY29tcGFyZShyaHMpICE9IDA7fSAKLSAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBwYXRoOjpzdHJpbmdfdHlwZSYgbGhzLCBjb25zdCBwYXRoJiByaHMpIHtyZXR1cm4gcmhzLmNvbXBhcmUobGhzKSAhPSAwO30KLSAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBwYXRoJiBsaHMsIGNvbnN0IHBhdGg6OnZhbHVlX3R5cGUqIHJocykgIHtyZXR1cm4gbGhzLmNvbXBhcmUocmhzKSAhPSAwO30KLSAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBwYXRoOjp2YWx1ZV90eXBlKiBsaHMsIGNvbnN0IHBhdGgmIHJocykgIHtyZXR1cm4gcmhzLmNvbXBhcmUobGhzKSAhPSAwO30KLQotICAvLyBUT0RPOiB3aHkgZG8gPT0gYW5kICE9IGhhdmUgYWRkaXRpb25hbCBvdmVybG9hZHMsIGJ1dCB0aGUgb3RoZXJzIGRvbid0PwotCi0gIGlubGluZSBib29sIG9wZXJhdG9yPChjb25zdCBwYXRoJiBsaHMsIGNvbnN0IHBhdGgmIHJocykgIHtyZXR1cm4gbGhzLmNvbXBhcmUocmhzKSA8IDA7fQotICBpbmxpbmUgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IHBhdGgmIGxocywgY29uc3QgcGF0aCYgcmhzKSB7cmV0dXJuICEocmhzIDwgbGhzKTt9Ci0gIGlubGluZSBib29sIG9wZXJhdG9yPiAoY29uc3QgcGF0aCYgbGhzLCBjb25zdCBwYXRoJiByaHMpIHtyZXR1cm4gcmhzIDwgbGhzO30KLSAgaW5saW5lIGJvb2wgb3BlcmF0b3I+PShjb25zdCBwYXRoJiBsaHMsIGNvbnN0IHBhdGgmIHJocykge3JldHVybiAhKGxocyA8IHJocyk7fQotCi0gIGlubGluZSBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlKGNvbnN0IHBhdGgmIHgpCi0gIHsKLSMgaWZkZWYgTkROQk9PU1RfV0lORE9XU19BUEkKLSAgICBzdGQ6OnNpemVfdCBzZWVkID0gMDsKLSAgICBmb3IoY29uc3QgcGF0aDo6dmFsdWVfdHlwZSogaXQgPSB4LmNfc3RyKCk7ICppdDsgKytpdCkKLSAgICAgIGhhc2hfY29tYmluZShzZWVkLCAqaXQgPT0gJy8nID8gTCdcXCcgOiAqaXQpOwotICAgIHJldHVybiBzZWVkOwotIyBlbHNlICAgLy8gTkROQk9PU1RfUE9TSVhfQVBJCi0gICAgcmV0dXJuIGhhc2hfcmFuZ2UoeC5uYXRpdmUoKS5iZWdpbigpLCB4Lm5hdGl2ZSgpLmVuZCgpKTsKLSMgZW5kaWYKLSAgfQotCi0gIGlubGluZSB2b2lkIHN3YXAocGF0aCYgbGhzLCBwYXRoJiByaHMpICAgICAgICAgICAgICAgICAgIHsgbGhzLnN3YXAocmhzKTsgfQotCi0gIGlubGluZSBwYXRoIG9wZXJhdG9yLyhjb25zdCBwYXRoJiBsaHMsIGNvbnN0IHBhdGgmIHJocykgIHsgcmV0dXJuIHBhdGgobGhzKSAvPSByaHM7IH0KLQotICAvLyAgaW5zZXJ0ZXJzIGFuZCBleHRyYWN0b3JzCi0gIC8vICAgIHVzZSBuZG5ib29zdDo6aW86OnF1b3RlZCgpIHRvIGhhbmRsZSBzcGFjZXMgaW4gcGF0aHMKLSAgLy8gICAgdXNlICcmJyBhcyBlc2NhcGUgY2hhcmFjdGVyIHRvIGVhc2UgdXNlIGZvciBXaW5kb3dzIHBhdGhzCi0KLSAgdGVtcGxhdGUgPGNsYXNzIENoYXIsIGNsYXNzIFRyYWl0cz4KLSAgaW5saW5lIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLCBUcmFpdHM+JgotICBvcGVyYXRvcjw8KHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLCBUcmFpdHM+JiBvcywgY29uc3QgcGF0aCYgcCkKLSAgewotICAgIHJldHVybiBvcwotICAgICAgPDwgbmRuYm9vc3Q6OmlvOjpxdW90ZWQocC50ZW1wbGF0ZSBzdHJpbmc8c3RkOjpiYXNpY19zdHJpbmc8Q2hhcj4gPigpLCBzdGF0aWNfY2FzdDxDaGFyPignJicpKTsKLSAgfQotICAKLSAgdGVtcGxhdGUgPGNsYXNzIENoYXIsIGNsYXNzIFRyYWl0cz4KLSAgaW5saW5lIHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyLCBUcmFpdHM+JgotICBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyLCBUcmFpdHM+JiBpcywgcGF0aCYgcCkKLSAgewotICAgIHN0ZDo6YmFzaWNfc3RyaW5nPENoYXI+IHN0cjsKLSAgICBpcyA+PiBuZG5ib29zdDo6aW86OnF1b3RlZChzdHIsIHN0YXRpY19jYXN0PENoYXI+KCcmJykpOwotICAgIHAgPSBzdHI7Ci0gICAgcmV0dXJuIGlzOwotICB9Ci0gIAotICAvLyAgbmFtZV9jaGVja3MKLQotICAvLyAgVGhlc2UgZnVuY3Rpb25zIGFyZSBob2xkb3ZlcnMgZnJvbSB2ZXJzaW9uIDEuIEl0IGlzbid0IGNsZWFyIHRoZXkgaGF2ZSBtdWNoCi0gIC8vICB1c2VmdWxuZXNzLCBvciBob3cgdG8gZ2VuZXJhbGl6ZSB0aGVtIGZvciBsYXRlciB2ZXJzaW9ucy4KLQotICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wgYm9vbCBwb3J0YWJsZV9wb3NpeF9uYW1lKGNvbnN0IHN0ZDo6c3RyaW5nICYgbmFtZSk7Ci0gIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTCBib29sIHdpbmRvd3NfbmFtZShjb25zdCBzdGQ6OnN0cmluZyAmIG5hbWUpOwotICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wgYm9vbCBwb3J0YWJsZV9uYW1lKGNvbnN0IHN0ZDo6c3RyaW5nICYgbmFtZSk7Ci0gIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTCBib29sIHBvcnRhYmxlX2RpcmVjdG9yeV9uYW1lKGNvbnN0IHN0ZDo6c3RyaW5nICYgbmFtZSk7Ci0gIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTCBib29sIHBvcnRhYmxlX2ZpbGVfbmFtZShjb25zdCBzdGQ6OnN0cmluZyAmIG5hbWUpOwotICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wgYm9vbCBuYXRpdmUoY29uc3Qgc3RkOjpzdHJpbmcgJiBuYW1lKTsKLSAKLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotLy8gICAgICAgICAgICAgICAgICAgICBjbGFzcyBwYXRoIG1lbWJlciB0ZW1wbGF0ZSBpbXBsZW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvcj4KLSAgcGF0aCYgcGF0aDo6YXBwZW5kKElucHV0SXRlcmF0b3IgYmVnaW4sIElucHV0SXRlcmF0b3IgZW5kLCBjb25zdCBjb2RlY3Z0X3R5cGUmIGN2dCkKLSAgeyAKLSAgICBpZiAoYmVnaW4gPT0gZW5kKQotICAgICAgcmV0dXJuICp0aGlzOwotICAgIHN0cmluZ190eXBlOjpzaXplX3R5cGUgc2VwX3BvcyhtX2FwcGVuZF9zZXBhcmF0b3JfaWZfbmVlZGVkKCkpOwotICAgIHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPElucHV0SXRlcmF0b3I+Ojp2YWx1ZV90eXBlPgotICAgICAgcyhiZWdpbiwgZW5kKTsKLSAgICBwYXRoX3RyYWl0czo6Y29udmVydChzLmNfc3RyKCksIHMuY19zdHIoKStzLnNpemUoKSwgbV9wYXRobmFtZSwgY3Z0KTsKLSAgICBpZiAoc2VwX3BvcykKLSAgICAgIG1fZXJhc2VfcmVkdW5kYW50X3NlcGFyYXRvcihzZXBfcG9zKTsKLSAgICByZXR1cm4gKnRoaXM7Ci0gIH0KLQotICB0ZW1wbGF0ZSA8Y2xhc3MgU291cmNlPgotICBwYXRoJiBwYXRoOjphcHBlbmQoU291cmNlIGNvbnN0JiBzb3VyY2UsIGNvbnN0IGNvZGVjdnRfdHlwZSYgY3Z0KQotICB7Ci0gICAgaWYgKHBhdGhfdHJhaXRzOjplbXB0eShzb3VyY2UpKQotICAgICAgcmV0dXJuICp0aGlzOwotICAgIHN0cmluZ190eXBlOjpzaXplX3R5cGUgc2VwX3BvcyhtX2FwcGVuZF9zZXBhcmF0b3JfaWZfbmVlZGVkKCkpOwotICAgIHBhdGhfdHJhaXRzOjpkaXNwYXRjaChzb3VyY2UsIG1fcGF0aG5hbWUsIGN2dCk7Ci0gICAgaWYgKHNlcF9wb3MpCi0gICAgICBtX2VyYXNlX3JlZHVuZGFudF9zZXBhcmF0b3Ioc2VwX3Bvcyk7Ci0gICAgcmV0dXJuICp0aGlzOwotICB9Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotLy8gICAgICAgICAgICAgICAgICAgICBjbGFzcyBwYXRoIG1lbWJlciB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbnMgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICB0ZW1wbGF0ZSA8PiBpbmxpbmUKLSAgc3RkOjpzdHJpbmcgcGF0aDo6c3RyaW5nPHN0ZDo6c3RyaW5nPigpIGNvbnN0Ci0gICAgeyByZXR1cm4gc3RyaW5nKCk7IH0KLQotICB0ZW1wbGF0ZSA8PiBpbmxpbmUKLSAgc3RkOjp3c3RyaW5nIHBhdGg6OnN0cmluZzxzdGQ6OndzdHJpbmc+KCkgY29uc3QKLSAgICB7IHJldHVybiB3c3RyaW5nKCk7IH0KLQotICB0ZW1wbGF0ZSA8PiBpbmxpbmUKLSAgc3RkOjpzdHJpbmcgcGF0aDo6c3RyaW5nPHN0ZDo6c3RyaW5nPihjb25zdCBjb2RlY3Z0X3R5cGUmIGN2dCkgY29uc3QKLSAgICB7IHJldHVybiBzdHJpbmcoY3Z0KTsgfQotCi0gIHRlbXBsYXRlIDw+IGlubGluZQotICBzdGQ6OndzdHJpbmcgcGF0aDo6c3RyaW5nPHN0ZDo6d3N0cmluZz4oY29uc3QgY29kZWN2dF90eXBlJiBjdnQpIGNvbnN0Ci0gICAgeyByZXR1cm4gd3N0cmluZyhjdnQpOyB9Ci0KLSAgdGVtcGxhdGUgPD4gaW5saW5lCi0gIHN0ZDo6c3RyaW5nIHBhdGg6OmdlbmVyaWNfc3RyaW5nPHN0ZDo6c3RyaW5nPigpIGNvbnN0Ci0gICAgeyByZXR1cm4gZ2VuZXJpY19zdHJpbmcoKTsgfQotCi0gIHRlbXBsYXRlIDw+IGlubGluZQotICBzdGQ6OndzdHJpbmcgcGF0aDo6Z2VuZXJpY19zdHJpbmc8c3RkOjp3c3RyaW5nPigpIGNvbnN0Ci0gICAgeyByZXR1cm4gZ2VuZXJpY193c3RyaW5nKCk7IH0KLQotICB0ZW1wbGF0ZSA8PiBpbmxpbmUKLSAgc3RkOjpzdHJpbmcgcGF0aDo6Z2VuZXJpY19zdHJpbmc8c3RkOjpzdHJpbmc+KGNvbnN0IGNvZGVjdnRfdHlwZSYgY3Z0KSBjb25zdAotICAgIHsgcmV0dXJuIGdlbmVyaWNfc3RyaW5nKGN2dCk7IH0KLQotICB0ZW1wbGF0ZSA8PiBpbmxpbmUKLSAgc3RkOjp3c3RyaW5nIHBhdGg6OmdlbmVyaWNfc3RyaW5nPHN0ZDo6d3N0cmluZz4oY29uc3QgY29kZWN2dF90eXBlJiBjdnQpIGNvbnN0Ci0gICAgeyByZXR1cm4gZ2VuZXJpY193c3RyaW5nKGN2dCk7IH0KLQotCi19ICAvLyBuYW1lc3BhY2UgZmlsZXN5c3RlbQotfSAgLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvYWJpX3N1ZmZpeC5ocHA+IC8vIHBvcHMgYWJpX3ByZWZpeC5ocHAgcHJhZ21hcwotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX0ZJTEVTWVNURU1fUEFUSF9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZmlsZXN5c3RlbS9wYXRoX3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2ZpbGVzeXN0ZW0vcGF0aF90cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNGUxM2E5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZmlsZXN5c3RlbS9wYXRoX3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMzUgKzAsMCBAQAotLy8gIGZpbGVzeXN0ZW0gcGF0aF90cmFpdHMuaHBwICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBDb3B5cmlnaHQgQmVtYW4gRGF3ZXMgMjAwOQotCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQKLQotLy8gIExpYnJhcnkgaG9tZSBwYWdlOiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2ZpbGVzeXN0ZW0KLQotI2lmbmRlZiBORE5CT09TVF9GSUxFU1lTVEVNX1BBVEhfVFJBSVRTX0hQUAotI2RlZmluZSBORE5CT09TVF9GSUxFU1lTVEVNX1BBVEhfVFJBSVRTX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotIyBpZiBkZWZpbmVkKCBORE5CT09TVF9OT19TVERfV1NUUklORyApCi0jICAgZXJyb3IgQ29uZmlndXJhdGlvbiBub3Qgc3VwcG9ydGVkOiBCb29zdC5GaWxlc3lzdGVtIFYzIGFuZCBsYXRlciByZXF1aXJlcyBzdGQ6OndzdHJpbmcgc3VwcG9ydAotIyBlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZmlsZXN5c3RlbS9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZW5hYmxlX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGVjYXkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N5c3RlbS9lcnJvcl9jb2RlLmhwcD4KLSNpbmNsdWRlIDxjd2NoYXI+ICAvLyBmb3IgbWJzdGF0ZV90Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHZlY3Rvcj4KLSNpbmNsdWRlIDxsaXN0PgotI2luY2x1ZGUgPGl0ZXJhdG9yPgotI2luY2x1ZGUgPGxvY2FsZT4KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotLy8gI2luY2x1ZGUgPGlvc3RyZWFtPiAgIC8vKioqKiBjb21tZW50IG1lIG91dCAqKioqCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvYWJpX3ByZWZpeC5ocHA+IC8vIG11c3QgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGZpbGVzeXN0ZW0gewotCi0gIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTCBjb25zdCBzeXN0ZW06OmVycm9yX2NhdGVnb3J5JiBjb2RlY3Z0X2Vycm9yX2NhdGVnb3J5KCk7Ci0gIC8vICB1c2VzIHN0ZDo6Y29kZWN2dF9iYXNlOjpyZXN1bHQgdXNlZCBmb3IgZXJyb3IgY29kZXM6Ci0gIC8vCi0gIC8vICAgIG9rOiAgICAgICBDb252ZXJzaW9uIHN1Y2Nlc3NmdWwuCi0gIC8vICAgIHBhcnRpYWw6ICBOb3QgYWxsIHNvdXJjZSBjaGFyYWN0ZXJzIGNvbnZlcnRlZDsgb25lIG9yIG1vcmUgYWRkaXRpb25hbCBzb3VyY2UKLSAgLy8gICAgICAgICAgICAgIGNoYXJhY3RlcnMgYXJlIG5lZWRlZCB0byBwcm9kdWNlIHRoZSBmaW5hbCB0YXJnZXQgY2hhcmFjdGVyLCBvciB0aGUKLSAgLy8gICAgICAgICAgICAgIHNpemUgb2YgdGhlIHRhcmdldCBpbnRlcm1lZGlhdGUgYnVmZmVyIHdhcyB0b28gc21hbGwgdG8gaG9sZCB0aGUgcmVzdWx0LgotICAvLyAgICBlcnJvcjogICAgQSBjaGFyYWN0ZXIgaW4gdGhlIHNvdXJjZSBjb3VsZCBub3QgYmUgY29udmVydGVkIHRvIHRoZSB0YXJnZXQgZW5jb2RpbmcuCi0gIC8vICAgIG5vY29udjogICBUaGUgc291cmNlIGFuZCB0YXJnZXQgY2hhcmFjdGVycyBoYXZlIHRoZSBzYW1lIHR5cGUgYW5kIGVuY29kaW5nLCBzbyBubwotICAvLyAgICAgICAgICAgICAgY29udmVyc2lvbiB3YXMgbmVjZXNzYXJ5LgotCi0gIGNsYXNzIGRpcmVjdG9yeV9lbnRyeTsKLSAgCi1uYW1lc3BhY2UgcGF0aF90cmFpdHMgewotIAotICB0eXBlZGVmIHN0ZDo6Y29kZWN2dDx3Y2hhcl90LCBjaGFyLCBzdGQ6Om1ic3RhdGVfdD4gY29kZWN2dF90eXBlOwotCi0gIC8vICBpc19wYXRoYWJsZSB0eXBlIHRyYWl0OyBhbGxvd3MgZGlzYWJsaW5nIG92ZXItYWdyZXNzaXZlIGNsYXNzIHBhdGggbWVtYmVyIHRlbXBsYXRlcwotCi0gIHRlbXBsYXRlIDxjbGFzcyBUPgotICBzdHJ1Y3QgaXNfcGF0aGFibGUgeyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IGZhbHNlOyB9OwotCi0gIHRlbXBsYXRlPD4gc3RydWN0IGlzX3BhdGhhYmxlPGNoYXIqPiAgICAgICAgICAgICAgICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OwotICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19wYXRoYWJsZTxjb25zdCBjaGFyKj4gICAgICAgICAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsKLSAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfcGF0aGFibGU8d2NoYXJfdCo+ICAgICAgICAgICAgICAgeyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07Ci0gIHRlbXBsYXRlPD4gc3RydWN0IGlzX3BhdGhhYmxlPGNvbnN0IHdjaGFyX3QqPiAgICAgICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OwotICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19wYXRoYWJsZTxzdGQ6OnN0cmluZz4gICAgICAgICAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsKLSAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfcGF0aGFibGU8c3RkOjp3c3RyaW5nPiAgICAgICAgICAgeyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07Ci0gIHRlbXBsYXRlPD4gc3RydWN0IGlzX3BhdGhhYmxlPHN0ZDo6dmVjdG9yPGNoYXI+ID4gICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OwotICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19wYXRoYWJsZTxzdGQ6OnZlY3Rvcjx3Y2hhcl90PiA+ICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsKLSAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfcGF0aGFibGU8c3RkOjpsaXN0PGNoYXI+ID4gICAgICAgeyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07Ci0gIHRlbXBsYXRlPD4gc3RydWN0IGlzX3BhdGhhYmxlPHN0ZDo6bGlzdDx3Y2hhcl90PiA+ICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OwotICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19wYXRoYWJsZTxkaXJlY3RvcnlfZW50cnk+ICAgICAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsKLQotICAvLyAgUGF0aGFibGUgZW1wdHkKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGFpbmVyPiBpbmxpbmUKLSAgICAvLyBkaXNhYmxlX2lmIGFpZHMgYnJva2VuIGNvbXBpbGVycyAoSUJNLCBvbGQgR0NDLCBldGMuKSBhbmQgaXMgaGFybWxlc3MgZm9yCi0gICAgLy8gY29uZm9ybWluZyBjb21waWxlcnMuIFJlcGxhY2UgYnkgcGxhaW4gImJvb2wiIGF0IHNvbWUgZnV0dXJlIGRhdGUgKDIwMTI/KSAKLSAgICB0eXBlbmFtZSBuZG5ib29zdDo6ZGlzYWJsZV9pZjxuZG5ib29zdDo6aXNfYXJyYXk8Q29udGFpbmVyPiwgYm9vbD46OnR5cGUKLSAgICAgIGVtcHR5KGNvbnN0IENvbnRhaW5lciAmIGMpCi0gICAgICAgIHsgcmV0dXJuIGMuYmVnaW4oKSA9PSBjLmVuZCgpOyB9Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIFQ+IGlubGluZQotICAgIGJvb2wgZW1wdHkoVCAqIGNvbnN0ICYgY19zdHIpCi0gIHsKLSAgICBORE5CT09TVF9BU1NFUlQoY19zdHIpOwotICAgIHJldHVybiAhKmNfc3RyOwotICB9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOPiBpbmxpbmUKLSAgICAgYm9vbCBlbXB0eShUICgmeClbTl0pCi0gICAgICAgeyByZXR1cm4gIXhbMF07IH0KLQotICAvLyB2YWx1ZSB0eXBlcyBkaWZmZXIgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0gIC8vCi0gIC8vICAgQSBmcm9tX2VuZCBhcmd1bWVudCBvZiAwIGlzIGxlc3MgZWZmaWNpZW50IHRoYW4gYSBrbm93biBlbmQsIHNvIHVzZSBvbmx5IGlmIG5lZWRlZAotICAKLSAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMCi0gIHZvaWQgY29udmVydChjb25zdCBjaGFyKiBmcm9tLAotICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZyb21fZW5kLCAgICAvLyAwIGZvciBudWxsIHRlcm1pbmF0ZWQgTUJDUwotICAgICAgICAgICAgICAgIHN0ZDo6d3N0cmluZyAmIHRvLAotICAgICAgICAgICAgICAgIGNvbnN0IGNvZGVjdnRfdHlwZSYgY3Z0KTsKLQotICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wKLSAgdm9pZCBjb252ZXJ0KGNvbnN0IHdjaGFyX3QqIGZyb20sCi0gICAgICAgICAgICAgICAgY29uc3Qgd2NoYXJfdCogZnJvbV9lbmQsICAvLyAwIGZvciBudWxsIHRlcm1pbmF0ZWQgTUJDUwotICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nICYgdG8sCi0gICAgICAgICAgICAgICAgY29uc3QgY29kZWN2dF90eXBlJiBjdnQpOwotCi0gIGlubGluZSAKLSAgdm9pZCBjb252ZXJ0KGNvbnN0IGNoYXIqIGZyb20sCi0gICAgICAgICAgICAgICAgc3RkOjp3c3RyaW5nICYgdG8sCi0gICAgICAgICAgICAgICAgY29uc3QgY29kZWN2dF90eXBlJiBjdnQpCi0gIHsKLSAgICBORE5CT09TVF9BU1NFUlQoZnJvbSk7Ci0gICAgY29udmVydChmcm9tLCAwLCB0bywgY3Z0KTsKLSAgfQotCi0gIGlubGluZSAKLSAgdm9pZCBjb252ZXJ0KGNvbnN0IHdjaGFyX3QqIGZyb20sCi0gICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgJiB0bywKLSAgICAgICAgICAgICAgICBjb25zdCBjb2RlY3Z0X3R5cGUmIGN2dCkKLSAgewotICAgIE5ETkJPT1NUX0FTU0VSVChmcm9tKTsKLSAgICBjb252ZXJ0KGZyb20sIDAsIHRvLCBjdnQpOwotICB9Ci0KLSAgLy8gdmFsdWUgdHlwZXMgc2FtZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gIC8vIGNoYXIKLQotICBpbmxpbmUgCi0gIHZvaWQgY29udmVydChjb25zdCBjaGFyKiBmcm9tLCBjb25zdCBjaGFyKiBmcm9tX2VuZCwgc3RkOjpzdHJpbmcgJiB0bywKLSAgICBjb25zdCBjb2RlY3Z0X3R5cGUmKQotICB7Ci0gICAgTkROQk9PU1RfQVNTRVJUKGZyb20pOwotICAgIE5ETkJPT1NUX0FTU0VSVChmcm9tX2VuZCk7Ci0gICAgdG8uYXBwZW5kKGZyb20sIGZyb21fZW5kKTsKLSAgfQotCi0gIGlubGluZSAKLSAgdm9pZCBjb252ZXJ0KGNvbnN0IGNoYXIqIGZyb20sCi0gICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgJiB0bywKLSAgICAgICAgICAgICAgICBjb25zdCBjb2RlY3Z0X3R5cGUmKQotICB7Ci0gICAgTkROQk9PU1RfQVNTRVJUKGZyb20pOwotICAgIHRvICs9IGZyb207Ci0gIH0KLQotICAvLyB3Y2hhcl90Ci0KLSAgaW5saW5lIAotICB2b2lkIGNvbnZlcnQoY29uc3Qgd2NoYXJfdCogZnJvbSwgY29uc3Qgd2NoYXJfdCogZnJvbV9lbmQsIHN0ZDo6d3N0cmluZyAmIHRvLAotICAgIGNvbnN0IGNvZGVjdnRfdHlwZSYpCi0gIHsKLSAgICBORE5CT09TVF9BU1NFUlQoZnJvbSk7Ci0gICAgTkROQk9PU1RfQVNTRVJUKGZyb21fZW5kKTsKLSAgICB0by5hcHBlbmQoZnJvbSwgZnJvbV9lbmQpOwotICB9Ci0KLSAgaW5saW5lIAotICB2b2lkIGNvbnZlcnQoY29uc3Qgd2NoYXJfdCogZnJvbSwKLSAgICAgICAgICAgICAgICBzdGQ6OndzdHJpbmcgJiB0bywKLSAgICAgICAgICAgICAgICBjb25zdCBjb2RlY3Z0X3R5cGUmKQotICB7Ci0gICAgTkROQk9PU1RfQVNTRVJUKGZyb20pOwotICAgIHRvICs9IGZyb207Ci0gIH0KLQotICAvLyAgU291cmNlIGRpc3BhdGNoICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgLy8gIGNvbnRpZ3VvdXMgY29udGFpbmVycwotICB0ZW1wbGF0ZSA8Y2xhc3MgVT4gaW5saW5lCi0gICAgdm9pZCBkaXNwYXRjaChjb25zdCBzdGQ6OnN0cmluZyYgYywgVSYgdG8sIGNvbnN0IGNvZGVjdnRfdHlwZSYgY3Z0KQotICB7Ci0gICAgaWYgKGMuc2l6ZSgpKQotICAgICAgY29udmVydCgmKmMuYmVnaW4oKSwgJipjLmJlZ2luKCkgKyBjLnNpemUoKSwgdG8sIGN2dCk7Ci0gIH0KLSAgdGVtcGxhdGUgPGNsYXNzIFU+IGlubGluZQotICAgIHZvaWQgZGlzcGF0Y2goY29uc3Qgc3RkOjp3c3RyaW5nJiBjLCBVJiB0bywgY29uc3QgY29kZWN2dF90eXBlJiBjdnQpCi0gIHsKLSAgICBpZiAoYy5zaXplKCkpCi0gICAgICBjb252ZXJ0KCYqYy5iZWdpbigpLCAmKmMuYmVnaW4oKSArIGMuc2l6ZSgpLCB0bywgY3Z0KTsKLSAgfQotICB0ZW1wbGF0ZSA8Y2xhc3MgVT4gaW5saW5lCi0gICAgdm9pZCBkaXNwYXRjaChjb25zdCBzdGQ6OnZlY3RvcjxjaGFyPiYgYywgVSYgdG8sIGNvbnN0IGNvZGVjdnRfdHlwZSYgY3Z0KQotICB7Ci0gICAgaWYgKGMuc2l6ZSgpKQotICAgICAgY29udmVydCgmKmMuYmVnaW4oKSwgJipjLmJlZ2luKCkgKyBjLnNpemUoKSwgdG8sIGN2dCk7Ci0gIH0KLSAgdGVtcGxhdGUgPGNsYXNzIFU+IGlubGluZQotICAgIHZvaWQgZGlzcGF0Y2goY29uc3Qgc3RkOjp2ZWN0b3I8d2NoYXJfdD4mIGMsIFUmIHRvLCBjb25zdCBjb2RlY3Z0X3R5cGUmIGN2dCkKLSAgewotICAgIGlmIChjLnNpemUoKSkKLSAgICAgIGNvbnZlcnQoJipjLmJlZ2luKCksICYqYy5iZWdpbigpICsgYy5zaXplKCksIHRvLCBjdnQpOwotICB9Ci0KLSAgLy8gIG5vbi1jb250aWd1b3VzIGNvbnRhaW5lcnMKLSAgdGVtcGxhdGUgPGNsYXNzIENvbnRhaW5lciwgY2xhc3MgVT4gaW5saW5lCi0gICAgLy8gZGlzYWJsZV9pZiBhaWRzIGJyb2tlbiBjb21waWxlcnMgKElCTSwgb2xkIEdDQywgZXRjLikgYW5kIGlzIGhhcm1sZXNzIGZvcgotICAgIC8vIGNvbmZvcm1pbmcgY29tcGlsZXJzLiBSZXBsYWNlIGJ5IHBsYWluICJ2b2lkIiBhdCBzb21lIGZ1dHVyZSBkYXRlICgyMDEyPykgCi0gICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmRpc2FibGVfaWY8bmRuYm9vc3Q6OmlzX2FycmF5PENvbnRhaW5lcj4sIHZvaWQ+Ojp0eXBlCi0gICAgICBkaXNwYXRjaChjb25zdCBDb250YWluZXIgJiBjLCBVJiB0bywgY29uc3QgY29kZWN2dF90eXBlJiBjdnQpCi0gIHsKLSAgICBpZiAoYy5zaXplKCkpCi0gICAgewotICAgICAgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgQ29udGFpbmVyOjp2YWx1ZV90eXBlPiBzKGMuYmVnaW4oKSwgYy5lbmQoKSk7Ci0gICAgICBjb252ZXJ0KHMuY19zdHIoKSwgcy5jX3N0cigpK3Muc2l6ZSgpLCB0bywgY3Z0KTsKLSAgICB9Ci0gIH0KLQotICAvLyAgY19zdHIKLSAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFU+IGlubGluZQotICB2b2lkIGRpc3BhdGNoKFQgKiBjb25zdCAmIGNfc3RyLCBVJiB0bywgY29uc3QgY29kZWN2dF90eXBlJiBjdnQpCi0gIHsKLS8vICAgIHN0ZDo6Y291dCA8PCAiZGlzcGF0Y2goKSBjb25zdCBUICpcbiI7Ci0gICAgTkROQk9PU1RfQVNTRVJUKGNfc3RyKTsKLSAgICBjb252ZXJ0KGNfc3RyLCB0bywgY3Z0KTsKLSAgfQotICAKLSAgLy8gIE5vdGU6IHRoZXJlIGlzIG5vIGRpc3BhdGNoIG9uIEMtc3R5bGUgYXJyYXlzIGJlY2F1c2UgdGhlIGFycmF5IG1heQotICAvLyAgY29udGFpbiBhIHN0cmluZyBzbWFsbGVyIHRoYW4gdGhlIGFycmF5IHNpemUuIAotCi0gIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotICB2b2lkIGRpc3BhdGNoKGNvbnN0IGRpcmVjdG9yeV9lbnRyeSAmIGRlLAotIyAgICAgICAgICAgICAgICBpZmRlZiBORE5CT09TVF9XSU5ET1dTX0FQSQotICAgICAgICAgICAgICAgICAgIHN0ZDo6d3N0cmluZyAmIHRvLAotIyAgICAgICAgICAgICAgICBlbHNlICAgCi0gICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgJiB0bywKLSMgICAgICAgICAgICAgICAgZW5kaWYKLSAgICAgICAgICAgICAgICAgY29uc3QgY29kZWN2dF90eXBlJik7Ci0KLQotfX19IC8vIG5hbWVzcGFjZSBuZG5ib29zdDo6ZmlsZXN5c3RlbTo6cGF0aF90cmFpdHMKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9hYmlfc3VmZml4LmhwcD4gLy8gcG9wcyBhYmlfcHJlZml4LmhwcCBwcmFnbWFzCi0KLSNlbmRpZiAgLy8gTkROQk9PU1RfRklMRVNZU1RFTV9QQVRIX1RSQUlUU19IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViYjA5MjYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vLyBCb29zdC5GdW5jdGlvbiBsaWJyYXJ5Ci0KLS8vICBDb3B5cmlnaHQgRG91Z2xhcyBHcmVnb3IgMjAwMS0yMDAzLiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2Z1bmN0aW9uCi0KLS8vIFdpbGxpYW0gS2VtcGYsIEplc3NlIEpvbmVzIGFuZCBLYXJsIE5lbHNvbiB3ZXJlIGFsbCB2ZXJ5IGhlbHBmdWwgaW4gdGhlCi0vLyBkZXNpZ24gb2YgdGhpcyBsaWJyYXJ5LgotCi0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4gLy8gdW5hcnlfZnVuY3Rpb24sIGJpbmFyeV9mdW5jdGlvbgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2lmbmRlZiBORE5CT09TVF9GVU5DVElPTl9NQVhfQVJHUwotIyAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX01BWF9BUkdTIDEwCi0jZW5kaWYgLy8gTkROQk9PU1RfRlVOQ1RJT05fTUFYX0FSR1MKLQotLy8gSW5jbHVkZSB0aGUgcHJvbG9ndWUgaGVyZSBzbyB0aGF0IHRoZSB1c2Ugb2YgZmlsZS1sZXZlbCBpdGVyYXRpb24KLS8vIGluIGFueXRoaW5nIHRoYXQgbWF5IGJlIGluY2x1ZGVkIGJ5IGZ1bmN0aW9uX3RlbXBsYXRlLmhwcCBkb2Vzbid0IGJyZWFrCi0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZGV0YWlsL3Byb2xvZ3VlLmhwcD4KLQotLy8gT2xkZXIgVmlzdWFsIEFnZSBDKysgdmVyc2lvbiBkbyBub3QgaGFuZGxlIHRoZSBmaWxlIGl0ZXJhdGlvbiB3ZWxsCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0lCTUNQUF9fLCA+PSA1MDApICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19JQk1DUFBfXywgPCA4MDApCi0jICBpZiBORE5CT09TVF9GVU5DVElPTl9NQVhfQVJHUyA+PSAwCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uMC5ocHA+Ci0jICBlbmRpZgotIyAgaWYgTkROQk9PU1RfRlVOQ1RJT05fTUFYX0FSR1MgPj0gMQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbjEuaHBwPgotIyAgZW5kaWYKLSMgIGlmIE5ETkJPT1NUX0ZVTkNUSU9OX01BWF9BUkdTID49IDIKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb24yLmhwcD4KLSMgIGVuZGlmCi0jICBpZiBORE5CT09TVF9GVU5DVElPTl9NQVhfQVJHUyA+PSAzCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uMy5ocHA+Ci0jICBlbmRpZgotIyAgaWYgTkROQk9PU1RfRlVOQ1RJT05fTUFYX0FSR1MgPj0gNAotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbjQuaHBwPgotIyAgZW5kaWYKLSMgIGlmIE5ETkJPT1NUX0ZVTkNUSU9OX01BWF9BUkdTID49IDUKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb241LmhwcD4KLSMgIGVuZGlmCi0jICBpZiBORE5CT09TVF9GVU5DVElPTl9NQVhfQVJHUyA+PSA2Ci0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uNi5ocHA+Ci0jICBlbmRpZgotIyAgaWYgTkROQk9PU1RfRlVOQ1RJT05fTUFYX0FSR1MgPj0gNwotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbjcuaHBwPgotIyAgZW5kaWYKLSMgIGlmIE5ETkJPT1NUX0ZVTkNUSU9OX01BWF9BUkdTID49IDgKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb244LmhwcD4KLSMgIGVuZGlmCi0jICBpZiBORE5CT09TVF9GVU5DVElPTl9NQVhfQVJHUyA+PSA5Ci0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uOS5ocHA+Ci0jICBlbmRpZgotIyAgaWYgTkROQk9PU1RfRlVOQ1RJT05fTUFYX0FSR1MgPj0gMTAKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb24xMC5ocHA+Ci0jICBlbmRpZgotI2Vsc2UKLS8vIFdoYXQgaXMgdGhlICczJyBmb3I/Ci0jICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xICgzLCgwLE5ETkJPT1NUX0ZVTkNUSU9OX01BWF9BUkdTLDxuZG5ib29zdC9mdW5jdGlvbi9kZXRhaWwvZnVuY3Rpb25faXRlcmF0ZS5ocHA+KSkKLSMgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0jICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9kZXRhaWwvZnVuY3Rpb25faXRlcmF0ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2RldGFpbC9mdW5jdGlvbl9pdGVyYXRlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzQ0ZjI4My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2RldGFpbC9mdW5jdGlvbl9pdGVyYXRlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLS8vIEJvb3N0LkZ1bmN0aW9uIGxpYnJhcnkKLQotLy8gIENvcHlyaWdodCBEb3VnbGFzIEdyZWdvciAyMDAzLiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZwotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0lTX0lURVJBVElORykKLSMgZXJyb3IgQm9vc3QuRnVuY3Rpb24gLSBkbyBub3QgaW5jbHVkZSB0aGlzIGZpbGUhCi0jZW5kaWYKLQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyBORE5CT09TVF9QUF9JVEVSQVRJT04oKQotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2RldGFpbC9tYXliZV9pbmNsdWRlLmhwcD4KLSN1bmRlZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUwotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2RldGFpbC9nZW5fbWF5YmVfaW5jbHVkZS5wbCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZGV0YWlsL2dlbl9tYXliZV9pbmNsdWRlLnBsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1M2RjZjhmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZGV0YWlsL2dlbl9tYXliZV9pbmNsdWRlLnBsCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotIyEvdXNyL2Jpbi9wZXJsIC13Ci0jCi0jIEJvb3N0LkZ1bmN0aW9uIGxpYnJhcnkKLSMKLSMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMDMgRG91Z2xhcyBHcmVnb3IgKGdyZWdvZEBjcy5ycGkuZWR1KQotIwotIyBQZXJtaXNzaW9uIHRvIGNvcHksIHVzZSwgc2VsbCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGlzIGdyYW50ZWQKLSMgcHJvdmlkZWQgdGhpcyBjb3B5cmlnaHQgbm90aWNlIGFwcGVhcnMgaW4gYWxsIGNvcGllcy4KLSMgUGVybWlzc2lvbiB0byBtb2RpZnkgdGhlIGNvZGUgYW5kIHRvIGRpc3RyaWJ1dGUgbW9kaWZpZWQgY29kZSBpcyBncmFudGVkCi0jIHByb3ZpZGVkIHRoaXMgY29weXJpZ2h0IG5vdGljZSBhcHBlYXJzIGluIGFsbCBjb3BpZXMsIGFuZCBhIG5vdGljZQotIyB0aGF0IHRoZSBjb2RlIHdhcyBtb2RpZmllZCBpcyBpbmNsdWRlZCB3aXRoIHRoZSBjb3B5cmlnaHQgbm90aWNlLgotIwotIyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHksCi0jIGFuZCB3aXRoIG5vIGNsYWltIGFzIHRvIGl0cyBzdWl0YWJpbGl0eSBmb3IgYW55IHB1cnBvc2UuCi0jCi0jIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcKLXVzZSBFbmdsaXNoOwotCi0kbWF4X2FyZ3MgPSAkQVJHVlswXTsKLQotb3BlbiAoT1VULCAiPm1heWJlX2luY2x1ZGUuaHBwIikgb3IgZGllKCJDYW5ub3Qgd3JpdGUgdG8gbWF5YmVfaW5jbHVkZS5ocHAiKTsKLWZvcigkb25fYXJnID0gMDsgJG9uX2FyZyA8PSAkbWF4X2FyZ3M7ICsrJG9uX2FyZykgewotICAgIGlmICgkb25fYXJnID09IDApIHsKLQlwcmludCBPVVQgIiNpZiI7Ci0gICAgfQotICAgIGVsc2UgewotCXByaW50IE9VVCAiI2VsaWYiOwotICAgIH0KLSAgICBwcmludCBPVVQgIiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSAkb25fYXJnXG4iOwotICAgIHByaW50IE9VVCAiIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXyRvbl9hcmdcbiI7Ci0gICAgcHJpbnQgT1VUICIjICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl8kb25fYXJnXG4iOwotICAgIHByaW50IE9VVCAiIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+XG4iOwotICAgIHByaW50IE9VVCAiIyAgZW5kaWZcbiI7Ci19Ci1wcmludCBPVVQgIiNlbHNlXG4iOwotcHJpbnQgT1VUICIjICBlcnJvciBDYW5ub3QgaGFuZGxlIEJvb3N0LkZ1bmN0aW9uIG9iamVjdHMgdGhhdCBhY2NlcHQgbW9yZSB0aGFuICRtYXhfYXJncyBhcmd1bWVudHMhXG4iOwotcHJpbnQgT1VUICIjZW5kaWZcbiI7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2RldGFpbC9tYXliZV9pbmNsdWRlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZGV0YWlsL21heWJlX2luY2x1ZGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MGI5OThlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZGV0YWlsL21heWJlX2luY2x1ZGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjY3ICswLDAgQEAKLS8vIEJvb3N0LkZ1bmN0aW9uIGxpYnJhcnkKLQotLy8gIENvcHlyaWdodCBEb3VnbGFzIEdyZWdvciAyMDAzLiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZwotCi0jaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gMAotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzAKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDEKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl8xCi0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl8xCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSAyCi0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fMgotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fMgotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gMwotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzMKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDQKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl80Ci0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl80Ci0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSA1Ci0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fNQotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fNQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gNgotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzYKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDcKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl83Ci0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl83Ci0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSA4Ci0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fOAotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fOAotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gOQotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzkKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDEwCi0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fMTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzEwCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSAxMQotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzExCi0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl8xMQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gMTIKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl8xMgotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fMTIKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDEzCi0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fMTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzEzCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSAxNAotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzE0Ci0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl8xNAotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gMTUKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl8xNQotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fMTUKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDE2Ci0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fMTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzE2Ci0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSAxNwotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzE3Ci0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl8xNwotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gMTgKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl8xOAotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fMTgKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDE5Ci0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fMTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzE5Ci0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSAyMAotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzIwCi0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl8yMAotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gMjEKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl8yMQotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fMjEKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDIyCi0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fMjIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzIyCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSAyMwotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzIzCi0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl8yMwotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gMjQKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl8yNAotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fMjQKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDI1Ci0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fMjUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzI1Ci0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSAyNgotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzI2Ci0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl8yNgotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gMjcKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl8yNwotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fMjcKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDI4Ci0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fMjgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzI4Ci0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSAyOQotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzI5Ci0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl8yOQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gMzAKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl8zMAotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fMzAKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDMxCi0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fMzEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzMxCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSAzMgotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzMyCi0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl8zMgotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gMzMKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl8zMwotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fMzMKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDM0Ci0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fMzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzM0Ci0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSAzNQotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzM1Ci0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl8zNQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gMzYKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl8zNgotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fMzYKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDM3Ci0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fMzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzM3Ci0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSAzOAotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzM4Ci0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl8zOAotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gMzkKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl8zOQotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fMzkKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDQwCi0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fNDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzQwCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSA0MQotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzQxCi0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl80MQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gNDIKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl80MgotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fNDIKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDQzCi0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fNDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzQzCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSA0NAotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzQ0Ci0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl80NAotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gNDUKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl80NQotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fNDUKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDQ2Ci0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fNDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzQ2Ci0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSA0NwotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzQ3Ci0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl80NwotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gNDgKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl80OAotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fNDgKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDQ5Ci0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fNDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzQ5Ci0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSA1MAotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzUwCi0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl81MAotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2Vsc2UKLSMgIGVycm9yIENhbm5vdCBoYW5kbGUgQm9vc3QuRnVuY3Rpb24gb2JqZWN0cyB0aGF0IGFjY2VwdCBtb3JlIHRoYW4gNTAgYXJndW1lbnRzIQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2RldGFpbC9wcm9sb2d1ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2RldGFpbC9wcm9sb2d1ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhYzZlOGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9kZXRhaWwvcHJvbG9ndWUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotLy8gQm9vc3QuRnVuY3Rpb24gbGlicmFyeQotCi0vLyAgQ29weXJpZ2h0IERvdWdsYXMgR3JlZ29yIDIwMDItMjAwMy4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcKLQotI2lmbmRlZiBORE5CT09TVF9GVU5DVElPTl9QUk9MT0dVRV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fUFJPTE9HVUVfSFBQCi0jICBpbmNsdWRlIDxjYXNzZXJ0PgotIyAgaW5jbHVkZSA8YWxnb3JpdGhtPgotIyAgaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL25vX3RyMS9mdW5jdGlvbmFsLmhwcD4gLy8gdW5hcnlfZnVuY3Rpb24sIGJpbmFyeV9mdW5jdGlvbgotIyAgaW5jbHVkZSA8bmRuYm9vc3QvdGhyb3dfZXhjZXB0aW9uLmhwcD4KLSMgIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl9iYXNlLmhwcD4KLSMgIGluY2x1ZGUgPG5kbmJvb3N0L21lbV9mbi5ocHA+Ci0jICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19pbnRlZ3JhbC5ocHA+Ci0jICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZW51bS5ocHA+Ci0jICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZW51bV9wYXJhbXMuaHBwPgotIyAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZWF0LmhwcD4KLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pbmMuaHBwPgotIyAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9pZC5ocHA+Ci0jZW5kaWYgLy8gTkROQk9PU1RfRlVOQ1RJT05fUFJPTE9HVUVfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uMC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhMTVkNjIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbjAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotLy8gQm9vc3QuRnVuY3Rpb24gbGlicmFyeQotCi0vLyAgQ29weXJpZ2h0IERvdWdsYXMgR3JlZ29yIDIwMDItMjAwMy4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcKLQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyAwCi0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZGV0YWlsL21heWJlX2luY2x1ZGUuaHBwPgotI3VuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uMS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uMS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmNGE2MDUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbjEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotLy8gQm9vc3QuRnVuY3Rpb24gbGlicmFyeQotCi0vLyAgQ29weXJpZ2h0IERvdWdsYXMgR3JlZ29yIDIwMDItMjAwMy4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcKLQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyAxCi0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZGV0YWlsL21heWJlX2luY2x1ZGUuaHBwPgotI3VuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uMTAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbjEwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmQwZWUzMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uMTAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotLy8gQm9vc3QuRnVuY3Rpb24gbGlicmFyeQotCi0vLyAgQ29weXJpZ2h0IERvdWdsYXMgR3JlZ29yIDIwMDItMjAwMy4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcKLQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyAxMAotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2RldGFpbC9tYXliZV9pbmNsdWRlLmhwcD4KLSN1bmRlZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbjIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbjIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MDNjMmQwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb24yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLS8vIEJvb3N0LkZ1bmN0aW9uIGxpYnJhcnkKLQotLy8gIENvcHlyaWdodCBEb3VnbGFzIEdyZWdvciAyMDAyLTIwMDMuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnCi0KLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgMgotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2RldGFpbC9tYXliZV9pbmNsdWRlLmhwcD4KLSN1bmRlZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbjMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbjMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZWM2MmQ1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb24zLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLS8vIEJvb3N0LkZ1bmN0aW9uIGxpYnJhcnkKLQotLy8gIENvcHlyaWdodCBEb3VnbGFzIEdyZWdvciAyMDAyLTIwMDMuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnCi0KLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgMwotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2RldGFpbC9tYXliZV9pbmNsdWRlLmhwcD4KLSN1bmRlZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbjQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbjQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlM2EyYmU1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb240LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLS8vIEJvb3N0LkZ1bmN0aW9uIGxpYnJhcnkKLQotLy8gIENvcHlyaWdodCBEb3VnbGFzIEdyZWdvciAyMDAyLTIwMDMuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnCi0KLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgNAotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2RldGFpbC9tYXliZV9pbmNsdWRlLmhwcD4KLSN1bmRlZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbjUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbjUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZDUzZTVhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb241LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLS8vIEJvb3N0LkZ1bmN0aW9uIGxpYnJhcnkKLQotLy8gIENvcHlyaWdodCBEb3VnbGFzIEdyZWdvciAyMDAyLTIwMDMuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnCi0KLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgNQotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2RldGFpbC9tYXliZV9pbmNsdWRlLmhwcD4KLSN1bmRlZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbjYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbjYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMjc0NmVhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb242LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLS8vIEJvb3N0LkZ1bmN0aW9uIGxpYnJhcnkKLQotLy8gIENvcHlyaWdodCBEb3VnbGFzIEdyZWdvciAyMDAyLTIwMDMuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnCi0KLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgNgotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2RldGFpbC9tYXliZV9pbmNsdWRlLmhwcD4KLSN1bmRlZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbjcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbjcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDkyZWQyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb243LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLS8vIEJvb3N0LkZ1bmN0aW9uIGxpYnJhcnkKLQotLy8gIENvcHlyaWdodCBEb3VnbGFzIEdyZWdvciAyMDAyLTIwMDMuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnCi0KLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgNwotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2RldGFpbC9tYXliZV9pbmNsdWRlLmhwcD4KLSN1bmRlZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbjguaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbjguaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ODE3ZTUxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb244LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLS8vIEJvb3N0LkZ1bmN0aW9uIGxpYnJhcnkKLQotLy8gIENvcHlyaWdodCBEb3VnbGFzIEdyZWdvciAyMDAyLTIwMDMuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnCi0KLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgOAotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2RldGFpbC9tYXliZV9pbmNsdWRlLmhwcD4KLSN1bmRlZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbjkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbjkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMGNkMjFiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb245LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLS8vIEJvb3N0LkZ1bmN0aW9uIGxpYnJhcnkKLQotLy8gIENvcHlyaWdodCBEb3VnbGFzIEdyZWdvciAyMDAyLTIwMDMuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnCi0KLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgOQotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2RldGFpbC9tYXliZV9pbmNsdWRlLmhwcD4KLSN1bmRlZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl9iYXNlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fYmFzZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5OTJlYjMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl9iYXNlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDkxMCArMCwwIEBACi0vLyBCb29zdC5GdW5jdGlvbiBsaWJyYXJ5Ci0KLS8vICBDb3B5cmlnaHQgRG91Z2xhcyBHcmVnb3IgMjAwMS0yMDA2Ci0vLyAgQ29weXJpZ2h0IEVtaWwgRG90Y2hldnNraSAyMDA3Ci0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnCi0KLSNpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fQkFTRV9IRUFERVIKLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fQkFTRV9IRUFERVIKLQotI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPG5ldz4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9zcF90eXBlaW5mby5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pbnRlZ2VyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9jb3B5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9kZXN0cnVjdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb25zdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfaW50ZWdyYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvbGF0aWxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb21wb3NpdGVfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWxpZ25tZW50X29mLmhwcD4KLSNpZm5kZWYgTkROQk9PU1RfTk9fU0ZJTkFFCi0jICBpbmNsdWRlICJuZG5ib29zdC91dGlsaXR5L2VuYWJsZV9pZi5ocHAiCi0jZWxzZQotIyAgaW5jbHVkZSAibmRuYm9vc3QvbXBsL2Jvb2wuaHBwIgotI2VuZGlmCi0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fZXF1YWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX2Z3ZC5ocHA+Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jICAgcHJhZ21hIHdhcm5pbmcoIHB1c2ggKQotIyAgIHByYWdtYSB3YXJuaW5nKCBkaXNhYmxlIDogNDc5MyApIC8vIGNvbXBsYWludCBhYm91dCBuYXRpdmUgY29kZSBnZW5lcmF0aW9uCi0jICAgcHJhZ21hIHdhcm5pbmcoIGRpc2FibGUgOiA0MTI3ICkgLy8gImNvbmRpdGlvbmFsIGV4cHJlc3Npb24gaXMgY29uc3RhbnQiCi0jZW5kaWYgICAgICAgCi0KLS8vIERlZmluZSBORE5CT09TVF9GVU5DVElPTl9TVERfTlMgdG8gdGhlIG5hbWVzcGFjZSB0aGF0IGNvbnRhaW5zIHR5cGVfaW5mby4KLSNpZmRlZiBORE5CT09TVF9OT19TVERfVFlQRUlORk8KLS8vIEVtYmVkZGVkIFZDKysgZG9lcyBub3QgaGF2ZSB0eXBlX2luZm8gaW4gbmFtZXNwYWNlIHN0ZAotIyAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX1NURF9OUwotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl9TVERfTlMgc3RkCi0jZW5kaWYKLQotLy8gQm9ycm93ZWQgZnJvbSBCb29zdC5QeXRob24gbGlicmFyeTogZGV0ZXJtaW5lcyB0aGUgY2FzZXMgd2hlcmUgd2UKLS8vIG5lZWQgdG8gdXNlIHN0ZDo6dHlwZV9pbmZvOjpuYW1lIHRvIGNvbXBhcmUgaW5zdGVhZCBvZiBvcGVyYXRvcj09LgotI2lmIGRlZmluZWQoIE5ETkJPT1NUX05PX1RZUEVJRCApCi0jICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fQ09NUEFSRV9UWVBFX0lEKFgsWSkgKChYKT09KFkpKQotI2VsaWYgKGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID49IDMpIFwKLSB8fCBkZWZpbmVkKF9BSVgpIFwKLSB8fCAoICAgZGVmaW5lZChfX3NnaSkgJiYgZGVmaW5lZChfX2hvc3RfbWlwcykpCi0jICBpbmNsdWRlIDxjc3RyaW5nPgotIyAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTVBBUkVfVFlQRV9JRChYLFkpIFwKLSAgICAgKHN0ZDo6c3RyY21wKChYKS5uYW1lKCksKFkpLm5hbWUoKSkgPT0gMCkKLSMgZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTVBBUkVfVFlQRV9JRChYLFkpICgoWCk9PShZKSkKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiBORE5CT09TVF9NU1ZDIDw9IDEzMDAgfHwgZGVmaW5lZChfX0lDTCkgJiYgX19JQ0wgPD0gNjAwIHx8IGRlZmluZWQoX19NV0VSS1NfXykgJiYgX19NV0VSS1NfXyA8IDB4MjQwNiAmJiAhZGVmaW5lZChORE5CT09TVF9TVFJJQ1RfQ09ORklHKQotIyAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX1RBUkdFVF9GSVgoeCkgeAotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl9UQVJHRVRfRklYKHgpCi0jZW5kaWYgLy8gbm90IE1TVkMKLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPCAweDVBMCkKLSMgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl9FTkFCTEVfSUZfTk9UX0lOVEVHUkFMKEZ1bmN0b3IsVHlwZSkgICAgICAgICAgICAgIFwKLSAgICAgIHR5cGVuYW1lIDo6bmRuYm9vc3Q6OmVuYWJsZV9pZl9jPCg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICg6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDxGdW5jdG9yPjo6dmFsdWUpPjo6dmFsdWUpLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlPjo6dHlwZQotI2Vsc2UKLS8vIEJDQyBkb2Vzbid0IHJlY29nbml6ZSB0aGlzIGRlcGVuZHMgb24gYSB0ZW1wbGF0ZSBhcmd1bWVudCBhbmQgY29tcGxhaW5zCi0vLyBhYm91dCB0aGUgdXNlIG9mICd0eXBlbmFtZScKLSMgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl9FTkFCTEVfSUZfTk9UX0lOVEVHUkFMKEZ1bmN0b3IsVHlwZSkgICAgIFwKLSAgICAgIDo6bmRuYm9vc3Q6OmVuYWJsZV9pZl9jPCg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICg6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDxGdW5jdG9yPjo6dmFsdWUpPjo6dmFsdWUpLCBcCi0gICAgICAgICAgICAgICAgICAgICAgIFR5cGU+Ojp0eXBlCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgbmFtZXNwYWNlIGRldGFpbCB7Ci0gICAgbmFtZXNwYWNlIGZ1bmN0aW9uIHsKLSAgICAgIGNsYXNzIFg7Ci0KLSAgICAgIC8qKgotICAgICAgICogQSBidWZmZXIgdXNlZCB0byBzdG9yZSBzbWFsbCBmdW5jdGlvbiBvYmplY3RzIGluCi0gICAgICAgKiBuZG5ib29zdDo6ZnVuY3Rpb24uIEl0IGlzIGEgdW5pb24gY29udGFpbmluZyBmdW5jdGlvbiBwb2ludGVycywKLSAgICAgICAqIG9iamVjdCBwb2ludGVycywgYW5kIGEgc3RydWN0dXJlIHRoYXQgcmVzZW1ibGVzIGEgYm91bmQKLSAgICAgICAqIG1lbWJlciBmdW5jdGlvbiBwb2ludGVyLgotICAgICAgICovCi0gICAgICB1bmlvbiBmdW5jdGlvbl9idWZmZXIKLSAgICAgIHsKLSAgICAgICAgLy8gRm9yIHBvaW50ZXJzIHRvIGZ1bmN0aW9uIG9iamVjdHMKLSAgICAgICAgbXV0YWJsZSB2b2lkKiBvYmpfcHRyOwotCi0gICAgICAgIC8vIEZvciBwb2ludGVycyB0byBzdGQ6OnR5cGVfaW5mbyBvYmplY3RzCi0gICAgICAgIHN0cnVjdCB0eXBlX3QgewotICAgICAgICAgIC8vIChnZXRfZnVuY3Rvcl90eXBlX3RhZywgY2hlY2tfZnVuY3Rvcl90eXBlX3RhZykuCi0gICAgICAgICAgY29uc3QgZGV0YWlsOjpzcF90eXBlaW5mbyogdHlwZTsKLQotICAgICAgICAgIC8vIFdoZXRoZXIgdGhlIHR5cGUgaXMgY29uc3QtcXVhbGlmaWVkLgotICAgICAgICAgIGJvb2wgY29uc3RfcXVhbGlmaWVkOwotICAgICAgICAgIC8vIFdoZXRoZXIgdGhlIHR5cGUgaXMgdm9sYXRpbGUtcXVhbGlmaWVkLgotICAgICAgICAgIGJvb2wgdm9sYXRpbGVfcXVhbGlmaWVkOwotICAgICAgICB9IHR5cGU7Ci0KLSAgICAgICAgLy8gRm9yIGZ1bmN0aW9uIHBvaW50ZXJzIG9mIGFsbCBraW5kcwotICAgICAgICBtdXRhYmxlIHZvaWQgKCpmdW5jX3B0cikoKTsKLQotICAgICAgICAvLyBGb3IgYm91bmQgbWVtYmVyIHBvaW50ZXJzCi0gICAgICAgIHN0cnVjdCBib3VuZF9tZW1mdW5jX3B0cl90IHsKLSAgICAgICAgICB2b2lkIChYOjoqbWVtZnVuY19wdHIpKGludCk7Ci0gICAgICAgICAgdm9pZCogb2JqX3B0cjsKLSAgICAgICAgfSBib3VuZF9tZW1mdW5jX3B0cjsKLQotICAgICAgICAvLyBGb3IgcmVmZXJlbmNlcyB0byBmdW5jdGlvbiBvYmplY3RzLiBXZSBleHBsaWNpdGx5IGtlZXAKLSAgICAgICAgLy8gdHJhY2sgb2YgdGhlIGN2LXF1YWxpZmllcnMgb24gdGhlIG9iamVjdCByZWZlcmVuY2VkLgotICAgICAgICBzdHJ1Y3Qgb2JqX3JlZl90IHsKLSAgICAgICAgICBtdXRhYmxlIHZvaWQqIG9ial9wdHI7Ci0gICAgICAgICAgYm9vbCBpc19jb25zdF9xdWFsaWZpZWQ7Ci0gICAgICAgICAgYm9vbCBpc192b2xhdGlsZV9xdWFsaWZpZWQ7Ci0gICAgICAgIH0gb2JqX3JlZjsKLQotICAgICAgICAvLyBUbyByZWxheCBhbGlhc2luZyBjb25zdHJhaW50cwotICAgICAgICBtdXRhYmxlIGNoYXIgZGF0YTsKLSAgICAgIH07Ci0KLSAgICAgIC8qKgotICAgICAgICogVGhlIHVudXNhYmxlIGNsYXNzIGlzIGEgcGxhY2Vob2xkZXIgZm9yIHVudXNlZCBmdW5jdGlvbiBhcmd1bWVudHMKLSAgICAgICAqIEl0IGlzIGFsc28gY29tcGxldGVseSB1bnVzYWJsZSBleGNlcHQgdGhhdCBpdCBjb25zdHJ1Y3RhYmxlIGZyb20KLSAgICAgICAqIGFueXRoaW5nLiBUaGlzIGhlbHBzIGNvbXBpbGVycyB3aXRob3V0IHBhcnRpYWwgc3BlY2lhbGl6YXRpb24gdG8KLSAgICAgICAqIGhhbmRsZSBCb29zdC5GdW5jdGlvbiBvYmplY3RzIHJldHVybmluZyB2b2lkLgotICAgICAgICovCi0gICAgICBzdHJ1Y3QgdW51c2FibGUKLSAgICAgIHsKLSAgICAgICAgdW51c2FibGUoKSB7fQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB1bnVzYWJsZShjb25zdCBUJikge30KLSAgICAgIH07Ci0KLSAgICAgIC8qIERldGVybWluZSB0aGUgcmV0dXJuIHR5cGUuIFRoaXMgc3VwcG9ydHMgY29tcGlsZXJzIHRoYXQgZG8gbm90IHN1cHBvcnQKLSAgICAgICAqIHZvaWQgcmV0dXJucyBvciBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uIGJ5IHNpbGVudGx5IGNoYW5naW5nIHRoZSByZXR1cm4KLSAgICAgICAqIHR5cGUgdG8gInVudXNhYmxlIi4KLSAgICAgICAqLwotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGZ1bmN0aW9uX3JldHVybl90eXBlIHsgdHlwZWRlZiBUIHR5cGU7IH07Ci0KLSAgICAgIHRlbXBsYXRlPD4KLSAgICAgIHN0cnVjdCBmdW5jdGlvbl9yZXR1cm5fdHlwZTx2b2lkPgotICAgICAgewotICAgICAgICB0eXBlZGVmIHVudXNhYmxlIHR5cGU7Ci0gICAgICB9OwotCi0gICAgICAvLyBUaGUgb3BlcmF0aW9uIHR5cGUgdG8gcGVyZm9ybSBvbiB0aGUgZ2l2ZW4gZnVuY3Rvci9mdW5jdGlvbiBwb2ludGVyCi0gICAgICBlbnVtIGZ1bmN0b3JfbWFuYWdlcl9vcGVyYXRpb25fdHlwZSB7Ci0gICAgICAgIGNsb25lX2Z1bmN0b3JfdGFnLAotICAgICAgICBtb3ZlX2Z1bmN0b3JfdGFnLAotICAgICAgICBkZXN0cm95X2Z1bmN0b3JfdGFnLAotICAgICAgICBjaGVja19mdW5jdG9yX3R5cGVfdGFnLAotICAgICAgICBnZXRfZnVuY3Rvcl90eXBlX3RhZwotICAgICAgfTsKLQotICAgICAgLy8gVGFncyB1c2VkIHRvIGRlY2lkZSBiZXR3ZWVuIGRpZmZlcmVudCB0eXBlcyBvZiBmdW5jdGlvbnMKLSAgICAgIHN0cnVjdCBmdW5jdGlvbl9wdHJfdGFnIHt9OwotICAgICAgc3RydWN0IGZ1bmN0aW9uX29ial90YWcge307Ci0gICAgICBzdHJ1Y3QgbWVtYmVyX3B0cl90YWcge307Ci0gICAgICBzdHJ1Y3QgZnVuY3Rpb25fb2JqX3JlZl90YWcge307Ci0KLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEY+Ci0gICAgICBjbGFzcyBnZXRfZnVuY3Rpb25fdGFnCi0gICAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl9jPChpc19wb2ludGVyPEY+Ojp2YWx1ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uX3B0cl90YWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uX29ial90YWc+Ojp0eXBlIHB0cl9vcl9vYmpfdGFnOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl9jPChpc19tZW1iZXJfcG9pbnRlcjxGPjo6dmFsdWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1iZXJfcHRyX3RhZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyX29yX29ial90YWc+Ojp0eXBlIHB0cl9vcl9vYmpfb3JfbWVtX3RhZzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfYzwoaXNfcmVmZXJlbmNlX3dyYXBwZXI8Rj46OnZhbHVlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25fb2JqX3JlZl90YWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0cl9vcl9vYmpfb3JfbWVtX3RhZz46OnR5cGUgb3JfcmVmX3RhZzsKLQotICAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIG9yX3JlZl90YWcgdHlwZTsKLSAgICAgIH07Ci0KLSAgICAgIC8vIFRoZSB0cml2aWFsIG1hbmFnZXIgZG9lcyBub3RoaW5nIGJ1dCByZXR1cm4gdGhlIHNhbWUgcG9pbnRlciAoaWYgd2UKLSAgICAgIC8vIGFyZSBjbG9uaW5nKSBvciByZXR1cm4gdGhlIG51bGwgcG9pbnRlciAoaWYgd2UgYXJlIGRlbGV0aW5nKS4KLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEY+Ci0gICAgICBzdHJ1Y3QgcmVmZXJlbmNlX21hbmFnZXIKLSAgICAgIHsKLSAgICAgICAgc3RhdGljIGlubGluZSB2b2lkCi0gICAgICAgIG1hbmFnZShjb25zdCBmdW5jdGlvbl9idWZmZXImIGluX2J1ZmZlciwgZnVuY3Rpb25fYnVmZmVyJiBvdXRfYnVmZmVyLCAKLSAgICAgICAgICAgICAgIGZ1bmN0b3JfbWFuYWdlcl9vcGVyYXRpb25fdHlwZSBvcCkKLSAgICAgICAgewotICAgICAgICAgIHN3aXRjaCAob3ApIHsKLSAgICAgICAgICBjYXNlIGNsb25lX2Z1bmN0b3JfdGFnOiAKLSAgICAgICAgICAgIG91dF9idWZmZXIub2JqX3JlZiA9IGluX2J1ZmZlci5vYmpfcmVmOwotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgY2FzZSBtb3ZlX2Z1bmN0b3JfdGFnOgotICAgICAgICAgICAgb3V0X2J1ZmZlci5vYmpfcmVmID0gaW5fYnVmZmVyLm9ial9yZWY7Ci0gICAgICAgICAgICBpbl9idWZmZXIub2JqX3JlZi5vYmpfcHRyID0gMDsKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgIGNhc2UgZGVzdHJveV9mdW5jdG9yX3RhZzoKLSAgICAgICAgICAgIG91dF9idWZmZXIub2JqX3JlZi5vYmpfcHRyID0gMDsKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgIGNhc2UgY2hlY2tfZnVuY3Rvcl90eXBlX3RhZzoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY29uc3QgZGV0YWlsOjpzcF90eXBlaW5mbyYgY2hlY2tfdHlwZSAKLSAgICAgICAgICAgICAgICA9ICpvdXRfYnVmZmVyLnR5cGUudHlwZTsKLQotICAgICAgICAgICAgICAvLyBDaGVjayB3aGV0aGVyIHdlIGhhdmUgdGhlIHNhbWUgdHlwZS4gV2UgY2FuIGFkZAotICAgICAgICAgICAgICAvLyBjdi1xdWFsaWZpZXJzLCBidXQgd2UgY2FuJ3QgdGFrZSB0aGVtIGF3YXkuCi0gICAgICAgICAgICAgIGlmIChORE5CT09TVF9GVU5DVElPTl9DT01QQVJFX1RZUEVfSUQoY2hlY2tfdHlwZSwgTkROQk9PU1RfU1BfVFlQRUlEKEYpKQotICAgICAgICAgICAgICAgICAgJiYgKCFpbl9idWZmZXIub2JqX3JlZi5pc19jb25zdF9xdWFsaWZpZWQgCi0gICAgICAgICAgICAgICAgICAgICAgfHwgb3V0X2J1ZmZlci50eXBlLmNvbnN0X3F1YWxpZmllZCkKLSAgICAgICAgICAgICAgICAgICYmICghaW5fYnVmZmVyLm9ial9yZWYuaXNfdm9sYXRpbGVfcXVhbGlmaWVkCi0gICAgICAgICAgICAgICAgICAgICAgfHwgb3V0X2J1ZmZlci50eXBlLnZvbGF0aWxlX3F1YWxpZmllZCkpCi0gICAgICAgICAgICAgICAgb3V0X2J1ZmZlci5vYmpfcHRyID0gaW5fYnVmZmVyLm9ial9yZWYub2JqX3B0cjsKLSAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG91dF9idWZmZXIub2JqX3B0ciA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICBjYXNlIGdldF9mdW5jdG9yX3R5cGVfdGFnOgotICAgICAgICAgICAgb3V0X2J1ZmZlci50eXBlLnR5cGUgPSAmTkROQk9PU1RfU1BfVFlQRUlEKEYpOwotICAgICAgICAgICAgb3V0X2J1ZmZlci50eXBlLmNvbnN0X3F1YWxpZmllZCA9IGluX2J1ZmZlci5vYmpfcmVmLmlzX2NvbnN0X3F1YWxpZmllZDsKLSAgICAgICAgICAgIG91dF9idWZmZXIudHlwZS52b2xhdGlsZV9xdWFsaWZpZWQgPSBpbl9idWZmZXIub2JqX3JlZi5pc192b2xhdGlsZV9xdWFsaWZpZWQ7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9OwotCi0gICAgICAvKioKLSAgICAgICAqIERldGVybWluZSBpZiBuZG5ib29zdDo6ZnVuY3Rpb24gY2FuIHVzZSB0aGUgc21hbGwtb2JqZWN0Ci0gICAgICAgKiBvcHRpbWl6YXRpb24gd2l0aCB0aGUgZnVuY3Rpb24gb2JqZWN0IHR5cGUgRi4KLSAgICAgICAqLwotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRj4KLSAgICAgIHN0cnVjdCBmdW5jdGlvbl9hbGxvd3Nfc21hbGxfb2JqZWN0X29wdGltaXphdGlvbgotICAgICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQKLSAgICAgICAgICAoYm9vbCwgCi0gICAgICAgICAgIHZhbHVlID0gKChzaXplb2YoRikgPD0gc2l6ZW9mKGZ1bmN0aW9uX2J1ZmZlcikgJiYKLSAgICAgICAgICAgICAgICAgICAgIChhbGlnbm1lbnRfb2Y8ZnVuY3Rpb25fYnVmZmVyPjo6dmFsdWUgCi0gICAgICAgICAgICAgICAgICAgICAgJSBhbGlnbm1lbnRfb2Y8Rj46OnZhbHVlID09IDApKSkpOwotICAgICAgfTsKLQotICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEYsdHlwZW5hbWUgQT4KLSAgICAgIHN0cnVjdCBmdW5jdG9yX3dyYXBwZXI6IHB1YmxpYyBGLCBwdWJsaWMgQQotICAgICAgewotICAgICAgICBmdW5jdG9yX3dyYXBwZXIoIEYgZiwgQSBhICk6Ci0gICAgICAgICAgRihmKSwKLSAgICAgICAgICBBKGEpCi0gICAgICAgIHsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgZnVuY3Rvcl93cmFwcGVyKGNvbnN0IGZ1bmN0b3Jfd3JhcHBlciYgZikgOgotICAgICAgICAgIEYoc3RhdGljX2Nhc3Q8Y29uc3QgRiY+KGYpKSwKLSAgICAgICAgICBBKHN0YXRpY19jYXN0PGNvbnN0IEEmPihmKSkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICB9OwotCi0gICAgICAvKioKLSAgICAgICAqIFRoZSBmdW5jdG9yX21hbmFnZXIgY2xhc3MgY29udGFpbnMgYSBzdGF0aWMgZnVuY3Rpb24gIm1hbmFnZSIgd2hpY2gKLSAgICAgICAqIGNhbiBjbG9uZSBvciBkZXN0cm95IHRoZSBnaXZlbiBmdW5jdGlvbi9mdW5jdGlvbiBvYmplY3QgcG9pbnRlci4KLSAgICAgICAqLwotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgICAgIHN0cnVjdCBmdW5jdG9yX21hbmFnZXJfY29tbW9uCi0gICAgICB7Ci0gICAgICAgIHR5cGVkZWYgRnVuY3RvciBmdW5jdG9yX3R5cGU7Ci0KLSAgICAgICAgLy8gRnVuY3Rpb24gcG9pbnRlcnMKLSAgICAgICAgc3RhdGljIGlubGluZSB2b2lkCi0gICAgICAgIG1hbmFnZV9wdHIoY29uc3QgZnVuY3Rpb25fYnVmZmVyJiBpbl9idWZmZXIsIGZ1bmN0aW9uX2J1ZmZlciYgb3V0X2J1ZmZlciwgCi0gICAgICAgICAgICAgICAgZnVuY3Rvcl9tYW5hZ2VyX29wZXJhdGlvbl90eXBlIG9wKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKG9wID09IGNsb25lX2Z1bmN0b3JfdGFnKQotICAgICAgICAgICAgb3V0X2J1ZmZlci5mdW5jX3B0ciA9IGluX2J1ZmZlci5mdW5jX3B0cjsKLSAgICAgICAgICBlbHNlIGlmIChvcCA9PSBtb3ZlX2Z1bmN0b3JfdGFnKSB7Ci0gICAgICAgICAgICBvdXRfYnVmZmVyLmZ1bmNfcHRyID0gaW5fYnVmZmVyLmZ1bmNfcHRyOwotICAgICAgICAgICAgaW5fYnVmZmVyLmZ1bmNfcHRyID0gMDsKLSAgICAgICAgICB9IGVsc2UgaWYgKG9wID09IGRlc3Ryb3lfZnVuY3Rvcl90YWcpCi0gICAgICAgICAgICBvdXRfYnVmZmVyLmZ1bmNfcHRyID0gMDsKLSAgICAgICAgICBlbHNlIGlmIChvcCA9PSBjaGVja19mdW5jdG9yX3R5cGVfdGFnKSB7Ci0gICAgICAgICAgICBjb25zdCBkZXRhaWw6OnNwX3R5cGVpbmZvJiBjaGVja190eXBlIAotICAgICAgICAgICAgICA9ICpvdXRfYnVmZmVyLnR5cGUudHlwZTsKLSAgICAgICAgICAgIGlmIChORE5CT09TVF9GVU5DVElPTl9DT01QQVJFX1RZUEVfSUQoY2hlY2tfdHlwZSwgTkROQk9PU1RfU1BfVFlQRUlEKEZ1bmN0b3IpKSkKLSAgICAgICAgICAgICAgb3V0X2J1ZmZlci5vYmpfcHRyID0gJmluX2J1ZmZlci5mdW5jX3B0cjsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgb3V0X2J1ZmZlci5vYmpfcHRyID0gMDsKLSAgICAgICAgICB9IGVsc2UgLyogb3AgPT0gZ2V0X2Z1bmN0b3JfdHlwZV90YWcgKi8gewotICAgICAgICAgICAgb3V0X2J1ZmZlci50eXBlLnR5cGUgPSAmTkROQk9PU1RfU1BfVFlQRUlEKEZ1bmN0b3IpOwotICAgICAgICAgICAgb3V0X2J1ZmZlci50eXBlLmNvbnN0X3F1YWxpZmllZCA9IGZhbHNlOwotICAgICAgICAgICAgb3V0X2J1ZmZlci50eXBlLnZvbGF0aWxlX3F1YWxpZmllZCA9IGZhbHNlOwotICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIEZ1bmN0aW9uIG9iamVjdHMgdGhhdCBmaXQgaW4gdGhlIHNtYWxsLW9iamVjdCBidWZmZXIuCi0gICAgICAgIHN0YXRpYyBpbmxpbmUgdm9pZAotICAgICAgICBtYW5hZ2Vfc21hbGwoY29uc3QgZnVuY3Rpb25fYnVmZmVyJiBpbl9idWZmZXIsIGZ1bmN0aW9uX2J1ZmZlciYgb3V0X2J1ZmZlciwgCi0gICAgICAgICAgICAgICAgZnVuY3Rvcl9tYW5hZ2VyX29wZXJhdGlvbl90eXBlIG9wKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKG9wID09IGNsb25lX2Z1bmN0b3JfdGFnIHx8IG9wID09IG1vdmVfZnVuY3Rvcl90YWcpIHsKLSAgICAgICAgICAgIGNvbnN0IGZ1bmN0b3JfdHlwZSogaW5fZnVuY3RvciA9IAotICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IGZ1bmN0b3JfdHlwZSo+KCZpbl9idWZmZXIuZGF0YSk7Ci0gICAgICAgICAgICBuZXcgKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCZvdXRfYnVmZmVyLmRhdGEpKSBmdW5jdG9yX3R5cGUoKmluX2Z1bmN0b3IpOwotCi0gICAgICAgICAgICBpZiAob3AgPT0gbW92ZV9mdW5jdG9yX3RhZykgewotICAgICAgICAgICAgICBmdW5jdG9yX3R5cGUqIGYgPSByZWludGVycHJldF9jYXN0PGZ1bmN0b3JfdHlwZSo+KCZpbl9idWZmZXIuZGF0YSk7Ci0gICAgICAgICAgICAgICh2b2lkKWY7IC8vIHN1cHByZXNzIHdhcm5pbmcgYWJvdXQgdGhlIHZhbHVlIG9mIGYgbm90IGJlaW5nIHVzZWQgKE1TVkMpCi0gICAgICAgICAgICAgIGYtPn5GdW5jdG9yKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfSBlbHNlIGlmIChvcCA9PSBkZXN0cm95X2Z1bmN0b3JfdGFnKSB7Ci0gICAgICAgICAgICAvLyBTb21lIGNvbXBpbGVycyAoQm9ybGFuZCwgdmM2LCAuLi4pIGFyZSB1bmhhcHB5IHdpdGggfmZ1bmN0b3JfdHlwZS4KLSAgICAgICAgICAgICBmdW5jdG9yX3R5cGUqIGYgPSByZWludGVycHJldF9jYXN0PGZ1bmN0b3JfdHlwZSo+KCZvdXRfYnVmZmVyLmRhdGEpOwotICAgICAgICAgICAgICh2b2lkKWY7IC8vIHN1cHByZXNzIHdhcm5pbmcgYWJvdXQgdGhlIHZhbHVlIG9mIGYgbm90IGJlaW5nIHVzZWQgKE1TVkMpCi0gICAgICAgICAgICAgZi0+fkZ1bmN0b3IoKTsKLSAgICAgICAgICB9IGVsc2UgaWYgKG9wID09IGNoZWNrX2Z1bmN0b3JfdHlwZV90YWcpIHsKLSAgICAgICAgICAgIGNvbnN0IGRldGFpbDo6c3BfdHlwZWluZm8mIGNoZWNrX3R5cGUgCi0gICAgICAgICAgICAgID0gKm91dF9idWZmZXIudHlwZS50eXBlOwotICAgICAgICAgICAgaWYgKE5ETkJPT1NUX0ZVTkNUSU9OX0NPTVBBUkVfVFlQRV9JRChjaGVja190eXBlLCBORE5CT09TVF9TUF9UWVBFSUQoRnVuY3RvcikpKQotICAgICAgICAgICAgICBvdXRfYnVmZmVyLm9ial9wdHIgPSAmaW5fYnVmZmVyLmRhdGE7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgIG91dF9idWZmZXIub2JqX3B0ciA9IDA7Ci0gICAgICAgICAgfSBlbHNlIC8qIG9wID09IGdldF9mdW5jdG9yX3R5cGVfdGFnICovIHsKLSAgICAgICAgICAgIG91dF9idWZmZXIudHlwZS50eXBlID0gJk5ETkJPT1NUX1NQX1RZUEVJRChGdW5jdG9yKTsKLSAgICAgICAgICAgIG91dF9idWZmZXIudHlwZS5jb25zdF9xdWFsaWZpZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIG91dF9idWZmZXIudHlwZS52b2xhdGlsZV9xdWFsaWZpZWQgPSBmYWxzZTsgICAgICAgICAgICAKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH07Ci0KLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gICAgICBzdHJ1Y3QgZnVuY3Rvcl9tYW5hZ2VyCi0gICAgICB7Ci0gICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIEZ1bmN0b3IgZnVuY3Rvcl90eXBlOwotCi0gICAgICAgIC8vIEZ1bmN0aW9uIHBvaW50ZXJzCi0gICAgICAgIHN0YXRpYyBpbmxpbmUgdm9pZAotICAgICAgICBtYW5hZ2VyKGNvbnN0IGZ1bmN0aW9uX2J1ZmZlciYgaW5fYnVmZmVyLCBmdW5jdGlvbl9idWZmZXImIG91dF9idWZmZXIsIAotICAgICAgICAgICAgICAgIGZ1bmN0b3JfbWFuYWdlcl9vcGVyYXRpb25fdHlwZSBvcCwgZnVuY3Rpb25fcHRyX3RhZykKLSAgICAgICAgewotICAgICAgICAgIGZ1bmN0b3JfbWFuYWdlcl9jb21tb248RnVuY3Rvcj46Om1hbmFnZV9wdHIoaW5fYnVmZmVyLG91dF9idWZmZXIsb3ApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRnVuY3Rpb24gb2JqZWN0cyB0aGF0IGZpdCBpbiB0aGUgc21hbGwtb2JqZWN0IGJ1ZmZlci4KLSAgICAgICAgc3RhdGljIGlubGluZSB2b2lkCi0gICAgICAgIG1hbmFnZXIoY29uc3QgZnVuY3Rpb25fYnVmZmVyJiBpbl9idWZmZXIsIGZ1bmN0aW9uX2J1ZmZlciYgb3V0X2J1ZmZlciwgCi0gICAgICAgICAgICAgICAgZnVuY3Rvcl9tYW5hZ2VyX29wZXJhdGlvbl90eXBlIG9wLCBtcGw6OnRydWVfKQotICAgICAgICB7Ci0gICAgICAgICAgZnVuY3Rvcl9tYW5hZ2VyX2NvbW1vbjxGdW5jdG9yPjo6bWFuYWdlX3NtYWxsKGluX2J1ZmZlcixvdXRfYnVmZmVyLG9wKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLy8gRnVuY3Rpb24gb2JqZWN0cyB0aGF0IHJlcXVpcmUgaGVhcCBhbGxvY2F0aW9uCi0gICAgICAgIHN0YXRpYyBpbmxpbmUgdm9pZAotICAgICAgICBtYW5hZ2VyKGNvbnN0IGZ1bmN0aW9uX2J1ZmZlciYgaW5fYnVmZmVyLCBmdW5jdGlvbl9idWZmZXImIG91dF9idWZmZXIsIAotICAgICAgICAgICAgICAgIGZ1bmN0b3JfbWFuYWdlcl9vcGVyYXRpb25fdHlwZSBvcCwgbXBsOjpmYWxzZV8pCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAob3AgPT0gY2xvbmVfZnVuY3Rvcl90YWcpIHsKLSAgICAgICAgICAgIC8vIENsb25lIHRoZSBmdW5jdG9yCi0gICAgICAgICAgICAvLyBHQ0MgMi45NS4zIGdldHMgdGhlIENWIHF1YWxpZmllcnMgd3JvbmcgaGVyZSwgc28gd2UKLSAgICAgICAgICAgIC8vIGNhbid0IGRvIHRoZSBzdGF0aWNfY2FzdCB0aGF0IHdlIHNob3VsZCBkby4KLSAgICAgICAgICAgIC8vIGpld2lsbGNvOiBDaGFuZ2luZyB0aGlzIHRvIHN0YXRpY19jYXN0IGJlY2F1c2UgR0NDIDIuOTUuMyBpcwotICAgICAgICAgICAgLy8gb2Jzb2xldGUuCi0gICAgICAgICAgICBjb25zdCBmdW5jdG9yX3R5cGUqIGYgPQotICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBmdW5jdG9yX3R5cGUqPihpbl9idWZmZXIub2JqX3B0cik7Ci0gICAgICAgICAgICBmdW5jdG9yX3R5cGUqIG5ld19mID0gbmV3IGZ1bmN0b3JfdHlwZSgqZik7Ci0gICAgICAgICAgICBvdXRfYnVmZmVyLm9ial9wdHIgPSBuZXdfZjsKLSAgICAgICAgICB9IGVsc2UgaWYgKG9wID09IG1vdmVfZnVuY3Rvcl90YWcpIHsKLSAgICAgICAgICAgIG91dF9idWZmZXIub2JqX3B0ciA9IGluX2J1ZmZlci5vYmpfcHRyOwotICAgICAgICAgICAgaW5fYnVmZmVyLm9ial9wdHIgPSAwOwotICAgICAgICAgIH0gZWxzZSBpZiAob3AgPT0gZGVzdHJveV9mdW5jdG9yX3RhZykgewotICAgICAgICAgICAgLyogQ2FzdCBmcm9tIHRoZSB2b2lkIHBvaW50ZXIgdG8gdGhlIGZ1bmN0b3IgcG9pbnRlciB0eXBlICovCi0gICAgICAgICAgICBmdW5jdG9yX3R5cGUqIGYgPQotICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxmdW5jdG9yX3R5cGUqPihvdXRfYnVmZmVyLm9ial9wdHIpOwotICAgICAgICAgICAgZGVsZXRlIGY7Ci0gICAgICAgICAgICBvdXRfYnVmZmVyLm9ial9wdHIgPSAwOwotICAgICAgICAgIH0gZWxzZSBpZiAob3AgPT0gY2hlY2tfZnVuY3Rvcl90eXBlX3RhZykgewotICAgICAgICAgICAgY29uc3QgZGV0YWlsOjpzcF90eXBlaW5mbyYgY2hlY2tfdHlwZQotICAgICAgICAgICAgICA9ICpvdXRfYnVmZmVyLnR5cGUudHlwZTsKLSAgICAgICAgICAgIGlmIChORE5CT09TVF9GVU5DVElPTl9DT01QQVJFX1RZUEVfSUQoY2hlY2tfdHlwZSwgTkROQk9PU1RfU1BfVFlQRUlEKEZ1bmN0b3IpKSkKLSAgICAgICAgICAgICAgb3V0X2J1ZmZlci5vYmpfcHRyID0gaW5fYnVmZmVyLm9ial9wdHI7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgIG91dF9idWZmZXIub2JqX3B0ciA9IDA7Ci0gICAgICAgICAgfSBlbHNlIC8qIG9wID09IGdldF9mdW5jdG9yX3R5cGVfdGFnICovIHsKLSAgICAgICAgICAgIG91dF9idWZmZXIudHlwZS50eXBlID0gJk5ETkJPT1NUX1NQX1RZUEVJRChGdW5jdG9yKTsKLSAgICAgICAgICAgIG91dF9idWZmZXIudHlwZS5jb25zdF9xdWFsaWZpZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIG91dF9idWZmZXIudHlwZS52b2xhdGlsZV9xdWFsaWZpZWQgPSBmYWxzZTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBGb3IgZnVuY3Rpb24gb2JqZWN0cywgd2UgZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGZ1bmN0aW9uCi0gICAgICAgIC8vIG9iamVjdCBjYW4gdXNlIHRoZSBzbWFsbC1vYmplY3Qgb3B0aW1pemF0aW9uIGJ1ZmZlciBvcgotICAgICAgICAvLyB3aGV0aGVyIHdlIG5lZWQgdG8gYWxsb2NhdGUgaXQgb24gdGhlIGhlYXAuCi0gICAgICAgIHN0YXRpYyBpbmxpbmUgdm9pZAotICAgICAgICBtYW5hZ2VyKGNvbnN0IGZ1bmN0aW9uX2J1ZmZlciYgaW5fYnVmZmVyLCBmdW5jdGlvbl9idWZmZXImIG91dF9idWZmZXIsIAotICAgICAgICAgICAgICAgIGZ1bmN0b3JfbWFuYWdlcl9vcGVyYXRpb25fdHlwZSBvcCwgZnVuY3Rpb25fb2JqX3RhZykKLSAgICAgICAgewotICAgICAgICAgIG1hbmFnZXIoaW5fYnVmZmVyLCBvdXRfYnVmZmVyLCBvcCwKLSAgICAgICAgICAgICAgICAgIG1wbDo6Ym9vbF88KGZ1bmN0aW9uX2FsbG93c19zbWFsbF9vYmplY3Rfb3B0aW1pemF0aW9uPGZ1bmN0b3JfdHlwZT46OnZhbHVlKT4oKSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBGb3IgbWVtYmVyIHBvaW50ZXJzLCB3ZSB1c2UgdGhlIHNtYWxsLW9iamVjdCBvcHRpbWl6YXRpb24gYnVmZmVyLgotICAgICAgICBzdGF0aWMgaW5saW5lIHZvaWQKLSAgICAgICAgbWFuYWdlcihjb25zdCBmdW5jdGlvbl9idWZmZXImIGluX2J1ZmZlciwgZnVuY3Rpb25fYnVmZmVyJiBvdXRfYnVmZmVyLCAKLSAgICAgICAgICAgICAgICBmdW5jdG9yX21hbmFnZXJfb3BlcmF0aW9uX3R5cGUgb3AsIG1lbWJlcl9wdHJfdGFnKQotICAgICAgICB7Ci0gICAgICAgICAgbWFuYWdlcihpbl9idWZmZXIsIG91dF9idWZmZXIsIG9wLCBtcGw6OnRydWVfKCkpOwotICAgICAgICB9Ci0KLSAgICAgIHB1YmxpYzoKLSAgICAgICAgLyogRGlzcGF0Y2ggdG8gYW4gYXBwcm9wcmlhdGUgbWFuYWdlciBiYXNlZCBvbiB3aGV0aGVyIHdlIGhhdmUgYQotICAgICAgICAgICBmdW5jdGlvbiBwb2ludGVyIG9yIGEgZnVuY3Rpb24gb2JqZWN0IHBvaW50ZXIuICovCi0gICAgICAgIHN0YXRpYyBpbmxpbmUgdm9pZAotICAgICAgICBtYW5hZ2UoY29uc3QgZnVuY3Rpb25fYnVmZmVyJiBpbl9idWZmZXIsIGZ1bmN0aW9uX2J1ZmZlciYgb3V0X2J1ZmZlciwgCi0gICAgICAgICAgICAgICBmdW5jdG9yX21hbmFnZXJfb3BlcmF0aW9uX3R5cGUgb3ApCi0gICAgICAgIHsKLSAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGdldF9mdW5jdGlvbl90YWc8ZnVuY3Rvcl90eXBlPjo6dHlwZSB0YWdfdHlwZTsKLSAgICAgICAgICBzd2l0Y2ggKG9wKSB7Ci0gICAgICAgICAgY2FzZSBnZXRfZnVuY3Rvcl90eXBlX3RhZzoKLSAgICAgICAgICAgIG91dF9idWZmZXIudHlwZS50eXBlID0gJk5ETkJPT1NUX1NQX1RZUEVJRChmdW5jdG9yX3R5cGUpOwotICAgICAgICAgICAgb3V0X2J1ZmZlci50eXBlLmNvbnN0X3F1YWxpZmllZCA9IGZhbHNlOwotICAgICAgICAgICAgb3V0X2J1ZmZlci50eXBlLnZvbGF0aWxlX3F1YWxpZmllZCA9IGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIG1hbmFnZXIoaW5fYnVmZmVyLCBvdXRfYnVmZmVyLCBvcCwgdGFnX3R5cGUoKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9OwotCi0gICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yLCB0eXBlbmFtZSBBbGxvY2F0b3I+Ci0gICAgICBzdHJ1Y3QgZnVuY3Rvcl9tYW5hZ2VyX2EKLSAgICAgIHsKLSAgICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgRnVuY3RvciBmdW5jdG9yX3R5cGU7Ci0KLSAgICAgICAgLy8gRnVuY3Rpb24gcG9pbnRlcnMKLSAgICAgICAgc3RhdGljIGlubGluZSB2b2lkCi0gICAgICAgIG1hbmFnZXIoY29uc3QgZnVuY3Rpb25fYnVmZmVyJiBpbl9idWZmZXIsIGZ1bmN0aW9uX2J1ZmZlciYgb3V0X2J1ZmZlciwgCi0gICAgICAgICAgICAgICAgZnVuY3Rvcl9tYW5hZ2VyX29wZXJhdGlvbl90eXBlIG9wLCBmdW5jdGlvbl9wdHJfdGFnKQotICAgICAgICB7Ci0gICAgICAgICAgZnVuY3Rvcl9tYW5hZ2VyX2NvbW1vbjxGdW5jdG9yPjo6bWFuYWdlX3B0cihpbl9idWZmZXIsb3V0X2J1ZmZlcixvcCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBGdW5jdGlvbiBvYmplY3RzIHRoYXQgZml0IGluIHRoZSBzbWFsbC1vYmplY3QgYnVmZmVyLgotICAgICAgICBzdGF0aWMgaW5saW5lIHZvaWQKLSAgICAgICAgbWFuYWdlcihjb25zdCBmdW5jdGlvbl9idWZmZXImIGluX2J1ZmZlciwgZnVuY3Rpb25fYnVmZmVyJiBvdXRfYnVmZmVyLCAKLSAgICAgICAgICAgICAgICBmdW5jdG9yX21hbmFnZXJfb3BlcmF0aW9uX3R5cGUgb3AsIG1wbDo6dHJ1ZV8pCi0gICAgICAgIHsKLSAgICAgICAgICBmdW5jdG9yX21hbmFnZXJfY29tbW9uPEZ1bmN0b3I+OjptYW5hZ2Vfc21hbGwoaW5fYnVmZmVyLG91dF9idWZmZXIsb3ApOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAvLyBGdW5jdGlvbiBvYmplY3RzIHRoYXQgcmVxdWlyZSBoZWFwIGFsbG9jYXRpb24KLSAgICAgICAgc3RhdGljIGlubGluZSB2b2lkCi0gICAgICAgIG1hbmFnZXIoY29uc3QgZnVuY3Rpb25fYnVmZmVyJiBpbl9idWZmZXIsIGZ1bmN0aW9uX2J1ZmZlciYgb3V0X2J1ZmZlciwgCi0gICAgICAgICAgICAgICAgZnVuY3Rvcl9tYW5hZ2VyX29wZXJhdGlvbl90eXBlIG9wLCBtcGw6OmZhbHNlXykKLSAgICAgICAgewotICAgICAgICAgIHR5cGVkZWYgZnVuY3Rvcl93cmFwcGVyPEZ1bmN0b3IsQWxsb2NhdG9yPiBmdW5jdG9yX3dyYXBwZXJfdHlwZTsKLSAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEFsbG9jYXRvcjo6dGVtcGxhdGUgcmViaW5kPGZ1bmN0b3Jfd3JhcHBlcl90eXBlPjo6b3RoZXIKLSAgICAgICAgICAgIHdyYXBwZXJfYWxsb2NhdG9yX3R5cGU7Ci0gICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB3cmFwcGVyX2FsbG9jYXRvcl90eXBlOjpwb2ludGVyIHdyYXBwZXJfYWxsb2NhdG9yX3BvaW50ZXJfdHlwZTsKLQotICAgICAgICAgIGlmIChvcCA9PSBjbG9uZV9mdW5jdG9yX3RhZykgewotICAgICAgICAgICAgLy8gQ2xvbmUgdGhlIGZ1bmN0b3IKLSAgICAgICAgICAgIC8vIEdDQyAyLjk1LjMgZ2V0cyB0aGUgQ1YgcXVhbGlmaWVycyB3cm9uZyBoZXJlLCBzbyB3ZQotICAgICAgICAgICAgLy8gY2FuJ3QgZG8gdGhlIHN0YXRpY19jYXN0IHRoYXQgd2Ugc2hvdWxkIGRvLgotICAgICAgICAgICAgY29uc3QgZnVuY3Rvcl93cmFwcGVyX3R5cGUqIGYgPQotICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBmdW5jdG9yX3dyYXBwZXJfdHlwZSo+KGluX2J1ZmZlci5vYmpfcHRyKTsKLSAgICAgICAgICAgIHdyYXBwZXJfYWxsb2NhdG9yX3R5cGUgd3JhcHBlcl9hbGxvY2F0b3Ioc3RhdGljX2Nhc3Q8QWxsb2NhdG9yIGNvbnN0ICY+KCpmKSk7Ci0gICAgICAgICAgICB3cmFwcGVyX2FsbG9jYXRvcl9wb2ludGVyX3R5cGUgY29weSA9IHdyYXBwZXJfYWxsb2NhdG9yLmFsbG9jYXRlKDEpOwotICAgICAgICAgICAgd3JhcHBlcl9hbGxvY2F0b3IuY29uc3RydWN0KGNvcHksICpmKTsKLQotICAgICAgICAgICAgLy8gR2V0IGJhY2sgdG8gdGhlIG9yaWdpbmFsIHBvaW50ZXIgdHlwZQotICAgICAgICAgICAgZnVuY3Rvcl93cmFwcGVyX3R5cGUqIG5ld19mID0gc3RhdGljX2Nhc3Q8ZnVuY3Rvcl93cmFwcGVyX3R5cGUqPihjb3B5KTsKLSAgICAgICAgICAgIG91dF9idWZmZXIub2JqX3B0ciA9IG5ld19mOwotICAgICAgICAgIH0gZWxzZSBpZiAob3AgPT0gbW92ZV9mdW5jdG9yX3RhZykgewotICAgICAgICAgICAgb3V0X2J1ZmZlci5vYmpfcHRyID0gaW5fYnVmZmVyLm9ial9wdHI7Ci0gICAgICAgICAgICBpbl9idWZmZXIub2JqX3B0ciA9IDA7Ci0gICAgICAgICAgfSBlbHNlIGlmIChvcCA9PSBkZXN0cm95X2Z1bmN0b3JfdGFnKSB7Ci0gICAgICAgICAgICAvKiBDYXN0IGZyb20gdGhlIHZvaWQgcG9pbnRlciB0byB0aGUgZnVuY3Rvcl93cmFwcGVyX3R5cGUgKi8KLSAgICAgICAgICAgIGZ1bmN0b3Jfd3JhcHBlcl90eXBlKiB2aWN0aW0gPQotICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxmdW5jdG9yX3dyYXBwZXJfdHlwZSo+KGluX2J1ZmZlci5vYmpfcHRyKTsKLSAgICAgICAgICAgIHdyYXBwZXJfYWxsb2NhdG9yX3R5cGUgd3JhcHBlcl9hbGxvY2F0b3Ioc3RhdGljX2Nhc3Q8QWxsb2NhdG9yIGNvbnN0ICY+KCp2aWN0aW0pKTsKLSAgICAgICAgICAgIHdyYXBwZXJfYWxsb2NhdG9yLmRlc3Ryb3kodmljdGltKTsKLSAgICAgICAgICAgIHdyYXBwZXJfYWxsb2NhdG9yLmRlYWxsb2NhdGUodmljdGltLDEpOwotICAgICAgICAgICAgb3V0X2J1ZmZlci5vYmpfcHRyID0gMDsKLSAgICAgICAgICB9IGVsc2UgaWYgKG9wID09IGNoZWNrX2Z1bmN0b3JfdHlwZV90YWcpIHsKLSAgICAgICAgICAgIGNvbnN0IGRldGFpbDo6c3BfdHlwZWluZm8mIGNoZWNrX3R5cGUgCi0gICAgICAgICAgICAgID0gKm91dF9idWZmZXIudHlwZS50eXBlOwotICAgICAgICAgICAgaWYgKE5ETkJPT1NUX0ZVTkNUSU9OX0NPTVBBUkVfVFlQRV9JRChjaGVja190eXBlLCBORE5CT09TVF9TUF9UWVBFSUQoRnVuY3RvcikpKQotICAgICAgICAgICAgICBvdXRfYnVmZmVyLm9ial9wdHIgPSBpbl9idWZmZXIub2JqX3B0cjsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgb3V0X2J1ZmZlci5vYmpfcHRyID0gMDsKLSAgICAgICAgICB9IGVsc2UgLyogb3AgPT0gZ2V0X2Z1bmN0b3JfdHlwZV90YWcgKi8gewotICAgICAgICAgICAgb3V0X2J1ZmZlci50eXBlLnR5cGUgPSAmTkROQk9PU1RfU1BfVFlQRUlEKEZ1bmN0b3IpOwotICAgICAgICAgICAgb3V0X2J1ZmZlci50eXBlLmNvbnN0X3F1YWxpZmllZCA9IGZhbHNlOwotICAgICAgICAgICAgb3V0X2J1ZmZlci50eXBlLnZvbGF0aWxlX3F1YWxpZmllZCA9IGZhbHNlOwotICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIEZvciBmdW5jdGlvbiBvYmplY3RzLCB3ZSBkZXRlcm1pbmUgd2hldGhlciB0aGUgZnVuY3Rpb24KLSAgICAgICAgLy8gb2JqZWN0IGNhbiB1c2UgdGhlIHNtYWxsLW9iamVjdCBvcHRpbWl6YXRpb24gYnVmZmVyIG9yCi0gICAgICAgIC8vIHdoZXRoZXIgd2UgbmVlZCB0byBhbGxvY2F0ZSBpdCBvbiB0aGUgaGVhcC4KLSAgICAgICAgc3RhdGljIGlubGluZSB2b2lkCi0gICAgICAgIG1hbmFnZXIoY29uc3QgZnVuY3Rpb25fYnVmZmVyJiBpbl9idWZmZXIsIGZ1bmN0aW9uX2J1ZmZlciYgb3V0X2J1ZmZlciwgCi0gICAgICAgICAgICAgICAgZnVuY3Rvcl9tYW5hZ2VyX29wZXJhdGlvbl90eXBlIG9wLCBmdW5jdGlvbl9vYmpfdGFnKQotICAgICAgICB7Ci0gICAgICAgICAgbWFuYWdlcihpbl9idWZmZXIsIG91dF9idWZmZXIsIG9wLAotICAgICAgICAgICAgICAgICAgbXBsOjpib29sXzwoZnVuY3Rpb25fYWxsb3dzX3NtYWxsX29iamVjdF9vcHRpbWl6YXRpb248ZnVuY3Rvcl90eXBlPjo6dmFsdWUpPigpKTsKLSAgICAgICAgfQotCi0gICAgICBwdWJsaWM6Ci0gICAgICAgIC8qIERpc3BhdGNoIHRvIGFuIGFwcHJvcHJpYXRlIG1hbmFnZXIgYmFzZWQgb24gd2hldGhlciB3ZSBoYXZlIGEKLSAgICAgICAgICAgZnVuY3Rpb24gcG9pbnRlciBvciBhIGZ1bmN0aW9uIG9iamVjdCBwb2ludGVyLiAqLwotICAgICAgICBzdGF0aWMgaW5saW5lIHZvaWQKLSAgICAgICAgbWFuYWdlKGNvbnN0IGZ1bmN0aW9uX2J1ZmZlciYgaW5fYnVmZmVyLCBmdW5jdGlvbl9idWZmZXImIG91dF9idWZmZXIsIAotICAgICAgICAgICAgICAgZnVuY3Rvcl9tYW5hZ2VyX29wZXJhdGlvbl90eXBlIG9wKQotICAgICAgICB7Ci0gICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBnZXRfZnVuY3Rpb25fdGFnPGZ1bmN0b3JfdHlwZT46OnR5cGUgdGFnX3R5cGU7Ci0gICAgICAgICAgc3dpdGNoIChvcCkgewotICAgICAgICAgIGNhc2UgZ2V0X2Z1bmN0b3JfdHlwZV90YWc6Ci0gICAgICAgICAgICBvdXRfYnVmZmVyLnR5cGUudHlwZSA9ICZORE5CT09TVF9TUF9UWVBFSUQoZnVuY3Rvcl90eXBlKTsKLSAgICAgICAgICAgIG91dF9idWZmZXIudHlwZS5jb25zdF9xdWFsaWZpZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIG91dF9idWZmZXIudHlwZS52b2xhdGlsZV9xdWFsaWZpZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBtYW5hZ2VyKGluX2J1ZmZlciwgb3V0X2J1ZmZlciwgb3AsIHRhZ190eXBlKCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfTsKLQotICAgICAgLy8gQSB0eXBlIHRoYXQgaXMgb25seSB1c2VkIGZvciBjb21wYXJpc29ucyBhZ2FpbnN0IHplcm8KLSAgICAgIHN0cnVjdCB1c2VsZXNzX2NsZWFyX3R5cGUge307Ci0KLSNpZmRlZiBORE5CT09TVF9OT19TRklOQUUKLSAgICAgIC8vIFRoZXNlIHJvdXRpbmVzIHBlcmZvcm0gY29tcGFyaXNvbnMgYmV0d2VlbiBhIEJvb3N0LkZ1bmN0aW9uCi0gICAgICAvLyBvYmplY3QgYW5kIGFuIGFyYml0cmFyeSBmdW5jdGlvbiBvYmplY3QgKHdoZW4gdGhlIGxhc3QKLSAgICAgIC8vIHBhcmFtZXRlciBpcyBtcGw6OmJvb2xfPGZhbHNlPikgb3IgYWdhaW5zdCB6ZXJvICh3aGVuIHRoZQotICAgICAgLy8gbGFzdCBwYXJhbWV0ZXIgaXMgbXBsOjpib29sXzx0cnVlPikuIFRoZXkgYXJlIG9ubHkgbmVjZXNzYXJ5Ci0gICAgICAvLyBmb3IgY29tcGlsZXJzIHRoYXQgZG9uJ3Qgc3VwcG9ydCBTRklOQUUuCi0gICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvbiwgdHlwZW5hbWUgRnVuY3Rvcj4KLSAgICAgICAgYm9vbAotICAgICAgICBjb21wYXJlX2VxdWFsKGNvbnN0IEZ1bmN0aW9uJiBmLCBjb25zdCBGdW5jdG9yJiwgaW50LCBtcGw6OmJvb2xfPHRydWU+KQotICAgICAgICB7IHJldHVybiBmLmVtcHR5KCk7IH0KLQotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb24sIHR5cGVuYW1lIEZ1bmN0b3I+Ci0gICAgICAgIGJvb2wKLSAgICAgICAgY29tcGFyZV9ub3RfZXF1YWwoY29uc3QgRnVuY3Rpb24mIGYsIGNvbnN0IEZ1bmN0b3ImLCBpbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1wbDo6Ym9vbF88dHJ1ZT4pCi0gICAgICAgIHsgcmV0dXJuICFmLmVtcHR5KCk7IH0KLQotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb24sIHR5cGVuYW1lIEZ1bmN0b3I+Ci0gICAgICAgIGJvb2wKLSAgICAgICAgY29tcGFyZV9lcXVhbChjb25zdCBGdW5jdGlvbiYgZiwgY29uc3QgRnVuY3RvciYgZywgbG9uZywKLSAgICAgICAgICAgICAgICAgICAgICBtcGw6OmJvb2xfPGZhbHNlPikKLSAgICAgICAgewotICAgICAgICAgIGlmIChjb25zdCBGdW5jdG9yKiBmcCA9IGYudGVtcGxhdGUgdGFyZ2V0PEZ1bmN0b3I+KCkpCi0gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb25fZXF1YWwoKmZwLCBnKTsKLSAgICAgICAgICBlbHNlIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvbiwgdHlwZW5hbWUgRnVuY3Rvcj4KLSAgICAgICAgYm9vbAotICAgICAgICBjb21wYXJlX2VxdWFsKGNvbnN0IEZ1bmN0aW9uJiBmLCBjb25zdCByZWZlcmVuY2Vfd3JhcHBlcjxGdW5jdG9yPiYgZywKLSAgICAgICAgICAgICAgICAgICAgICBpbnQsIG1wbDo6Ym9vbF88ZmFsc2U+KQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKGNvbnN0IEZ1bmN0b3IqIGZwID0gZi50ZW1wbGF0ZSB0YXJnZXQ8RnVuY3Rvcj4oKSkKLSAgICAgICAgICAgIHJldHVybiBmcCA9PSBnLmdldF9wb2ludGVyKCk7Ci0gICAgICAgICAgZWxzZSByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb24sIHR5cGVuYW1lIEZ1bmN0b3I+Ci0gICAgICAgIGJvb2wKLSAgICAgICAgY29tcGFyZV9ub3RfZXF1YWwoY29uc3QgRnVuY3Rpb24mIGYsIGNvbnN0IEZ1bmN0b3ImIGcsIGxvbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1wbDo6Ym9vbF88ZmFsc2U+KQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKGNvbnN0IEZ1bmN0b3IqIGZwID0gZi50ZW1wbGF0ZSB0YXJnZXQ8RnVuY3Rvcj4oKSkKLSAgICAgICAgICAgIHJldHVybiAhZnVuY3Rpb25fZXF1YWwoKmZwLCBnKTsKLSAgICAgICAgICBlbHNlIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uLCB0eXBlbmFtZSBGdW5jdG9yPgotICAgICAgICBib29sCi0gICAgICAgIGNvbXBhcmVfbm90X2VxdWFsKGNvbnN0IEZ1bmN0aW9uJiBmLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWZlcmVuY2Vfd3JhcHBlcjxGdW5jdG9yPiYgZywgaW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICBtcGw6OmJvb2xfPGZhbHNlPikKLSAgICAgICAgewotICAgICAgICAgIGlmIChjb25zdCBGdW5jdG9yKiBmcCA9IGYudGVtcGxhdGUgdGFyZ2V0PEZ1bmN0b3I+KCkpCi0gICAgICAgICAgICByZXR1cm4gZnAgIT0gZy5nZXRfcG9pbnRlcigpOwotICAgICAgICAgIGVsc2UgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19TRklOQUUKLQotICAgICAgLyoqCi0gICAgICAgKiBTdG9yZXMgdGhlICJtYW5hZ2VyIiBwb3J0aW9uIG9mIHRoZSB2dGFibGUgZm9yIGEKLSAgICAgICAqIG5kbmJvb3N0OjpmdW5jdGlvbiBvYmplY3QuCi0gICAgICAgKi8KLSAgICAgIHN0cnVjdCB2dGFibGVfYmFzZQotICAgICAgewotICAgICAgICB2b2lkICgqbWFuYWdlcikoY29uc3QgZnVuY3Rpb25fYnVmZmVyJiBpbl9idWZmZXIsIAotICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25fYnVmZmVyJiBvdXRfYnVmZmVyLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0b3JfbWFuYWdlcl9vcGVyYXRpb25fdHlwZSBvcCk7Ci0gICAgICB9OwotICAgIH0gLy8gZW5kIG5hbWVzcGFjZSBmdW5jdGlvbgotICB9IC8vIGVuZCBuYW1lc3BhY2UgZGV0YWlsCi0KLS8qKgotICogVGhlIGZ1bmN0aW9uX2Jhc2UgY2xhc3MgY29udGFpbnMgdGhlIGJhc2ljIGVsZW1lbnRzIG5lZWRlZCBmb3IgdGhlCi0gKiBmdW5jdGlvbjEsIGZ1bmN0aW9uMiwgZnVuY3Rpb24zLCBldGMuIGNsYXNzZXMuIEl0IGlzIGNvbW1vbiB0byBhbGwKLSAqIGZ1bmN0aW9ucyAoYW5kIGFzIHN1Y2ggY2FuIGJlIHVzZWQgdG8gdGVsbCBpZiB3ZSBoYXZlIG9uZSBvZiB0aGUKLSAqIGZ1bmN0aW9uTiBvYmplY3RzKS4KLSAqLwotY2xhc3MgZnVuY3Rpb25fYmFzZQotewotcHVibGljOgotICBmdW5jdGlvbl9iYXNlKCkgOiB2dGFibGUoMCkgeyB9Ci0KLSAgLyoqIERldGVybWluZSBpZiB0aGUgZnVuY3Rpb24gaXMgZW1wdHkgKGkuZS4sIGhhcyBubyB0YXJnZXQpLiAqLwotICBib29sIGVtcHR5KCkgY29uc3QgeyByZXR1cm4gIXZ0YWJsZTsgfQotCi0gIC8qKiBSZXRyaWV2ZSB0aGUgdHlwZSBvZiB0aGUgc3RvcmVkIGZ1bmN0aW9uIG9iamVjdCwgb3IgTkROQk9PU1RfU1BfVFlQRUlEKHZvaWQpCi0gICAgICBpZiB0aGlzIGlzIGVtcHR5LiAqLwotICBjb25zdCBkZXRhaWw6OnNwX3R5cGVpbmZvJiB0YXJnZXRfdHlwZSgpIGNvbnN0Ci0gIHsKLSAgICBpZiAoIXZ0YWJsZSkgcmV0dXJuIE5ETkJPT1NUX1NQX1RZUEVJRCh2b2lkKTsKLQotICAgIGRldGFpbDo6ZnVuY3Rpb246OmZ1bmN0aW9uX2J1ZmZlciB0eXBlOwotICAgIGdldF92dGFibGUoKS0+bWFuYWdlcihmdW5jdG9yLCB0eXBlLCBkZXRhaWw6OmZ1bmN0aW9uOjpnZXRfZnVuY3Rvcl90eXBlX3RhZyk7Ci0gICAgcmV0dXJuICp0eXBlLnR5cGUudHlwZTsKLSAgfQotCi0gIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gICAgRnVuY3RvciogdGFyZ2V0KCkKLSAgICB7Ci0gICAgICBpZiAoIXZ0YWJsZSkgcmV0dXJuIDA7Ci0KLSAgICAgIGRldGFpbDo6ZnVuY3Rpb246OmZ1bmN0aW9uX2J1ZmZlciB0eXBlX3Jlc3VsdDsKLSAgICAgIHR5cGVfcmVzdWx0LnR5cGUudHlwZSA9ICZORE5CT09TVF9TUF9UWVBFSUQoRnVuY3Rvcik7Ci0gICAgICB0eXBlX3Jlc3VsdC50eXBlLmNvbnN0X3F1YWxpZmllZCA9IGlzX2NvbnN0PEZ1bmN0b3I+Ojp2YWx1ZTsKLSAgICAgIHR5cGVfcmVzdWx0LnR5cGUudm9sYXRpbGVfcXVhbGlmaWVkID0gaXNfdm9sYXRpbGU8RnVuY3Rvcj46OnZhbHVlOwotICAgICAgZ2V0X3Z0YWJsZSgpLT5tYW5hZ2VyKGZ1bmN0b3IsIHR5cGVfcmVzdWx0LCAKLSAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmZ1bmN0aW9uOjpjaGVja19mdW5jdG9yX3R5cGVfdGFnKTsKLSAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxGdW5jdG9yKj4odHlwZV9yZXN1bHQub2JqX3B0cik7Ci0gICAgfQotCi0gIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSAgICBjb25zdCBGdW5jdG9yKiB0YXJnZXQoIEZ1bmN0b3IgKiA9IDAgKSBjb25zdAotI2Vsc2UKLSAgICBjb25zdCBGdW5jdG9yKiB0YXJnZXQoKSBjb25zdAotI2VuZGlmCi0gICAgewotICAgICAgaWYgKCF2dGFibGUpIHJldHVybiAwOwotCi0gICAgICBkZXRhaWw6OmZ1bmN0aW9uOjpmdW5jdGlvbl9idWZmZXIgdHlwZV9yZXN1bHQ7Ci0gICAgICB0eXBlX3Jlc3VsdC50eXBlLnR5cGUgPSAmTkROQk9PU1RfU1BfVFlQRUlEKEZ1bmN0b3IpOwotICAgICAgdHlwZV9yZXN1bHQudHlwZS5jb25zdF9xdWFsaWZpZWQgPSB0cnVlOwotICAgICAgdHlwZV9yZXN1bHQudHlwZS52b2xhdGlsZV9xdWFsaWZpZWQgPSBpc192b2xhdGlsZTxGdW5jdG9yPjo6dmFsdWU7Ci0gICAgICBnZXRfdnRhYmxlKCktPm1hbmFnZXIoZnVuY3RvciwgdHlwZV9yZXN1bHQsIAotICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6ZnVuY3Rpb246OmNoZWNrX2Z1bmN0b3JfdHlwZV90YWcpOwotICAgICAgLy8gR0NDIDIuOTUuMyBnZXRzIHRoZSBDViBxdWFsaWZpZXJzIHdyb25nIGhlcmUsIHNvIHdlCi0gICAgICAvLyBjYW4ndCBkbyB0aGUgc3RhdGljX2Nhc3QgdGhhdCB3ZSBzaG91bGQgZG8uCi0gICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgRnVuY3Rvcio+KHR5cGVfcmVzdWx0Lm9ial9wdHIpOwotICAgIH0KLQotICB0ZW1wbGF0ZTx0eXBlbmFtZSBGPgotICAgIGJvb2wgY29udGFpbnMoY29uc3QgRiYgZikgY29uc3QKLSAgICB7Ci0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSAgICAgIGlmIChjb25zdCBGKiBmcCA9IHRoaXMtPnRhcmdldCggKEYqKTAgKSkKLSNlbHNlCi0gICAgICBpZiAoY29uc3QgRiogZnAgPSB0aGlzLT50ZW1wbGF0ZSB0YXJnZXQ8Rj4oKSkKLSNlbmRpZgotICAgICAgewotICAgICAgICByZXR1cm4gZnVuY3Rpb25fZXF1YWwoKmZwLCBmKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICB9Ci0KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSAzICYmIF9fR05VQ19NSU5PUl9fIDw9IDMKLSAgLy8gR0NDIDMuMyBhbmQgbmV3ZXIgY2Fubm90IGNvcHkgd2l0aCB0aGUgZ2xvYmFsIG9wZXJhdG9yPT0sIGR1ZSB0bwotICAvLyBwcm9ibGVtcyB3aXRoIGluc3RhbnRpYXRpb24gb2YgZnVuY3Rpb24gcmV0dXJuIHR5cGVzIGJlZm9yZSBpdAotICAvLyBoYXMgYmVlbiB2ZXJpZmllZCB0aGF0IHRoZSBhcmd1bWVudCB0eXBlcyBtYXRjaCB1cC4KLSAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgICBORE5CT09TVF9GVU5DVElPTl9FTkFCTEVfSUZfTk9UX0lOVEVHUkFMKEZ1bmN0b3IsIGJvb2wpCi0gICAgb3BlcmF0b3I9PShGdW5jdG9yIGcpIGNvbnN0Ci0gICAgewotICAgICAgaWYgKGNvbnN0IEZ1bmN0b3IqIGZwID0gdGFyZ2V0PEZ1bmN0b3I+KCkpCi0gICAgICAgIHJldHVybiBmdW5jdGlvbl9lcXVhbCgqZnAsIGcpOwotICAgICAgZWxzZSByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gICAgTkROQk9PU1RfRlVOQ1RJT05fRU5BQkxFX0lGX05PVF9JTlRFR1JBTChGdW5jdG9yLCBib29sKQotICAgIG9wZXJhdG9yIT0oRnVuY3RvciBnKSBjb25zdAotICAgIHsKLSAgICAgIGlmIChjb25zdCBGdW5jdG9yKiBmcCA9IHRhcmdldDxGdW5jdG9yPigpKQotICAgICAgICByZXR1cm4gIWZ1bmN0aW9uX2VxdWFsKCpmcCwgZyk7Ci0gICAgICBlbHNlIHJldHVybiB0cnVlOwotICAgIH0KLSNlbmRpZgotCi1wdWJsaWM6IC8vIHNob3VsZCBiZSBwcm90ZWN0ZWQsIGJ1dCBHQ0MgMi45NS4zIHdpbGwgZmFpbCB0byBhbGxvdyBhY2Nlc3MKLSAgZGV0YWlsOjpmdW5jdGlvbjo6dnRhYmxlX2Jhc2UqIGdldF92dGFibGUoKSBjb25zdCB7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8ZGV0YWlsOjpmdW5jdGlvbjo6dnRhYmxlX2Jhc2UqPigKLSAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHN0ZDo6c2l6ZV90Pih2dGFibGUpICYgfnN0YXRpY19jYXN0PHN0ZDo6c2l6ZV90PigweDAxKSk7Ci0gIH0KLQotICBib29sIGhhc190cml2aWFsX2NvcHlfYW5kX2Rlc3Ryb3koKSBjb25zdCB7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8c3RkOjpzaXplX3Q+KHZ0YWJsZSkgJiAweDAxOwotICB9Ci0KLSAgZGV0YWlsOjpmdW5jdGlvbjo6dnRhYmxlX2Jhc2UqIHZ0YWJsZTsKLSAgbXV0YWJsZSBkZXRhaWw6OmZ1bmN0aW9uOjpmdW5jdGlvbl9idWZmZXIgZnVuY3RvcjsKLX07Ci0KLS8qKgotICogVGhlIGJhZF9mdW5jdGlvbl9jYWxsIGV4Y2VwdGlvbiBjbGFzcyBpcyB0aHJvd24gd2hlbiBhIG5kbmJvb3N0OjpmdW5jdGlvbgotICogb2JqZWN0IGlzIGludm9rZWQKLSAqLwotY2xhc3MgYmFkX2Z1bmN0aW9uX2NhbGwgOiBwdWJsaWMgc3RkOjpydW50aW1lX2Vycm9yCi17Ci1wdWJsaWM6Ci0gIGJhZF9mdW5jdGlvbl9jYWxsKCkgOiBzdGQ6OnJ1bnRpbWVfZXJyb3IoImNhbGwgdG8gZW1wdHkgbmRuYm9vc3Q6OmZ1bmN0aW9uIikge30KLX07Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fU0ZJTkFFCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGZ1bmN0aW9uX2Jhc2UmIGYsCi0gICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6ZnVuY3Rpb246OnVzZWxlc3NfY2xlYXJfdHlwZSopCi17Ci0gIHJldHVybiBmLmVtcHR5KCk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgZnVuY3Rpb25fYmFzZSYgZiwKLSAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjpmdW5jdGlvbjo6dXNlbGVzc19jbGVhcl90eXBlKikKLXsKLSAgcmV0dXJuICFmLmVtcHR5KCk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPT0oZGV0YWlsOjpmdW5jdGlvbjo6dXNlbGVzc19jbGVhcl90eXBlKiwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZnVuY3Rpb25fYmFzZSYgZikKLXsKLSAgcmV0dXJuIGYuZW1wdHkoKTsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShkZXRhaWw6OmZ1bmN0aW9uOjp1c2VsZXNzX2NsZWFyX3R5cGUqLAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmdW5jdGlvbl9iYXNlJiBmKQotewotICByZXR1cm4gIWYuZW1wdHkoKTsKLX0KLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTk9fU0ZJTkFFCi0vLyBDb21wYXJpc29ucyBiZXR3ZWVuIG5kbmJvb3N0OjpmdW5jdGlvbiBvYmplY3RzIGFuZCBhcmJpdHJhcnkgZnVuY3Rpb24gb2JqZWN0cwotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBmdW5jdGlvbl9iYXNlJiBmLCBGdW5jdG9yIGcpCi0gIHsKLSAgICB0eXBlZGVmIG1wbDo6Ym9vbF88KGlzX2ludGVncmFsPEZ1bmN0b3I+Ojp2YWx1ZSk+IGludGVncmFsOwotICAgIHJldHVybiBkZXRhaWw6OmZ1bmN0aW9uOjpjb21wYXJlX2VxdWFsKGYsIGcsIDAsIGludGVncmFsKCkpOwotICB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gIGlubGluZSBib29sIG9wZXJhdG9yPT0oRnVuY3RvciBnLCBjb25zdCBmdW5jdGlvbl9iYXNlJiBmKQotICB7Ci0gICAgdHlwZWRlZiBtcGw6OmJvb2xfPChpc19pbnRlZ3JhbDxGdW5jdG9yPjo6dmFsdWUpPiBpbnRlZ3JhbDsKLSAgICByZXR1cm4gZGV0YWlsOjpmdW5jdGlvbjo6Y29tcGFyZV9lcXVhbChmLCBnLCAwLCBpbnRlZ3JhbCgpKTsKLSAgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGZ1bmN0aW9uX2Jhc2UmIGYsIEZ1bmN0b3IgZykKLSAgewotICAgIHR5cGVkZWYgbXBsOjpib29sXzwoaXNfaW50ZWdyYWw8RnVuY3Rvcj46OnZhbHVlKT4gaW50ZWdyYWw7Ci0gICAgcmV0dXJuIGRldGFpbDo6ZnVuY3Rpb246OmNvbXBhcmVfbm90X2VxdWFsKGYsIGcsIDAsIGludGVncmFsKCkpOwotICB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gIGlubGluZSBib29sIG9wZXJhdG9yIT0oRnVuY3RvciBnLCBjb25zdCBmdW5jdGlvbl9iYXNlJiBmKQotICB7Ci0gICAgdHlwZWRlZiBtcGw6OmJvb2xfPChpc19pbnRlZ3JhbDxGdW5jdG9yPjo6dmFsdWUpPiBpbnRlZ3JhbDsKLSAgICByZXR1cm4gZGV0YWlsOjpmdW5jdGlvbjo6Y29tcGFyZV9ub3RfZXF1YWwoZiwgZywgMCwgaW50ZWdyYWwoKSk7Ci0gIH0KLSNlbHNlCi0KLSMgIGlmICEoZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gMyAmJiBfX0dOVUNfTUlOT1JfXyA8PSAzKQotLy8gQ29tcGFyaXNvbnMgYmV0d2VlbiBuZG5ib29zdDo6ZnVuY3Rpb24gb2JqZWN0cyBhbmQgYXJiaXRyYXJ5IGZ1bmN0aW9uCi0vLyBvYmplY3RzLiBHQ0MgMy4zIGFuZCBiZWZvcmUgaGFzIGFuIG9ibm94aW91cyBidWcgdGhhdCBwcmV2ZW50cyB0aGlzCi0vLyBmcm9tIHdvcmtpbmcuCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICBORE5CT09TVF9GVU5DVElPTl9FTkFCTEVfSUZfTk9UX0lOVEVHUkFMKEZ1bmN0b3IsIGJvb2wpCi0gIG9wZXJhdG9yPT0oY29uc3QgZnVuY3Rpb25fYmFzZSYgZiwgRnVuY3RvciBnKQotICB7Ci0gICAgaWYgKGNvbnN0IEZ1bmN0b3IqIGZwID0gZi50ZW1wbGF0ZSB0YXJnZXQ8RnVuY3Rvcj4oKSkKLSAgICAgIHJldHVybiBmdW5jdGlvbl9lcXVhbCgqZnAsIGcpOwotICAgIGVsc2UgcmV0dXJuIGZhbHNlOwotICB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gIE5ETkJPT1NUX0ZVTkNUSU9OX0VOQUJMRV9JRl9OT1RfSU5URUdSQUwoRnVuY3RvciwgYm9vbCkKLSAgb3BlcmF0b3I9PShGdW5jdG9yIGcsIGNvbnN0IGZ1bmN0aW9uX2Jhc2UmIGYpCi0gIHsKLSAgICBpZiAoY29uc3QgRnVuY3RvciogZnAgPSBmLnRlbXBsYXRlIHRhcmdldDxGdW5jdG9yPigpKQotICAgICAgcmV0dXJuIGZ1bmN0aW9uX2VxdWFsKGcsICpmcCk7Ci0gICAgZWxzZSByZXR1cm4gZmFsc2U7Ci0gIH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgTkROQk9PU1RfRlVOQ1RJT05fRU5BQkxFX0lGX05PVF9JTlRFR1JBTChGdW5jdG9yLCBib29sKQotICBvcGVyYXRvciE9KGNvbnN0IGZ1bmN0aW9uX2Jhc2UmIGYsIEZ1bmN0b3IgZykKLSAgewotICAgIGlmIChjb25zdCBGdW5jdG9yKiBmcCA9IGYudGVtcGxhdGUgdGFyZ2V0PEZ1bmN0b3I+KCkpCi0gICAgICByZXR1cm4gIWZ1bmN0aW9uX2VxdWFsKCpmcCwgZyk7Ci0gICAgZWxzZSByZXR1cm4gdHJ1ZTsKLSAgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICBORE5CT09TVF9GVU5DVElPTl9FTkFCTEVfSUZfTk9UX0lOVEVHUkFMKEZ1bmN0b3IsIGJvb2wpCi0gIG9wZXJhdG9yIT0oRnVuY3RvciBnLCBjb25zdCBmdW5jdGlvbl9iYXNlJiBmKQotICB7Ci0gICAgaWYgKGNvbnN0IEZ1bmN0b3IqIGZwID0gZi50ZW1wbGF0ZSB0YXJnZXQ8RnVuY3Rvcj4oKSkKLSAgICAgIHJldHVybiAhZnVuY3Rpb25fZXF1YWwoZywgKmZwKTsKLSAgICBlbHNlIHJldHVybiB0cnVlOwotICB9Ci0jICBlbmRpZgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICBORE5CT09TVF9GVU5DVElPTl9FTkFCTEVfSUZfTk9UX0lOVEVHUkFMKEZ1bmN0b3IsIGJvb2wpCi0gIG9wZXJhdG9yPT0oY29uc3QgZnVuY3Rpb25fYmFzZSYgZiwgcmVmZXJlbmNlX3dyYXBwZXI8RnVuY3Rvcj4gZykKLSAgewotICAgIGlmIChjb25zdCBGdW5jdG9yKiBmcCA9IGYudGVtcGxhdGUgdGFyZ2V0PEZ1bmN0b3I+KCkpCi0gICAgICByZXR1cm4gZnAgPT0gZy5nZXRfcG9pbnRlcigpOwotICAgIGVsc2UgcmV0dXJuIGZhbHNlOwotICB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gIE5ETkJPT1NUX0ZVTkNUSU9OX0VOQUJMRV9JRl9OT1RfSU5URUdSQUwoRnVuY3RvciwgYm9vbCkKLSAgb3BlcmF0b3I9PShyZWZlcmVuY2Vfd3JhcHBlcjxGdW5jdG9yPiBnLCBjb25zdCBmdW5jdGlvbl9iYXNlJiBmKQotICB7Ci0gICAgaWYgKGNvbnN0IEZ1bmN0b3IqIGZwID0gZi50ZW1wbGF0ZSB0YXJnZXQ8RnVuY3Rvcj4oKSkKLSAgICAgIHJldHVybiBnLmdldF9wb2ludGVyKCkgPT0gZnA7Ci0gICAgZWxzZSByZXR1cm4gZmFsc2U7Ci0gIH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgTkROQk9PU1RfRlVOQ1RJT05fRU5BQkxFX0lGX05PVF9JTlRFR1JBTChGdW5jdG9yLCBib29sKQotICBvcGVyYXRvciE9KGNvbnN0IGZ1bmN0aW9uX2Jhc2UmIGYsIHJlZmVyZW5jZV93cmFwcGVyPEZ1bmN0b3I+IGcpCi0gIHsKLSAgICBpZiAoY29uc3QgRnVuY3RvciogZnAgPSBmLnRlbXBsYXRlIHRhcmdldDxGdW5jdG9yPigpKQotICAgICAgcmV0dXJuIGZwICE9IGcuZ2V0X3BvaW50ZXIoKTsKLSAgICBlbHNlIHJldHVybiB0cnVlOwotICB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gIE5ETkJPT1NUX0ZVTkNUSU9OX0VOQUJMRV9JRl9OT1RfSU5URUdSQUwoRnVuY3RvciwgYm9vbCkKLSAgb3BlcmF0b3IhPShyZWZlcmVuY2Vfd3JhcHBlcjxGdW5jdG9yPiBnLCBjb25zdCBmdW5jdGlvbl9iYXNlJiBmKQotICB7Ci0gICAgaWYgKGNvbnN0IEZ1bmN0b3IqIGZwID0gZi50ZW1wbGF0ZSB0YXJnZXQ8RnVuY3Rvcj4oKSkKLSAgICAgIHJldHVybiBnLmdldF9wb2ludGVyKCkgIT0gZnA7Ci0gICAgZWxzZSByZXR1cm4gdHJ1ZTsKLSAgfQotCi0jZW5kaWYgLy8gQ29tcGlsZXIgc3VwcG9ydGluZyBTRklOQUUKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0gIG5hbWVzcGFjZSBmdW5jdGlvbiB7Ci0gICAgaW5saW5lIGJvb2wgaGFzX2VtcHR5X3RhcmdldChjb25zdCBmdW5jdGlvbl9iYXNlKiBmKQotICAgIHsKLSAgICAgIHJldHVybiBmLT5lbXB0eSgpOwotICAgIH0KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMxMCkKLSAgICBpbmxpbmUgYm9vbCBoYXNfZW1wdHlfdGFyZ2V0KGNvbnN0IHZvaWQqKQotICAgIHsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0jZWxzZQotICAgIGlubGluZSBib29sIGhhc19lbXB0eV90YXJnZXQoLi4uKQotICAgIHsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0jZW5kaWYKLSAgfSAvLyBlbmQgbmFtZXNwYWNlIGZ1bmN0aW9uCi19IC8vIGVuZCBuYW1lc3BhY2UgZGV0YWlsCi19IC8vIGVuZCBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI3VuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OX0VOQUJMRV9JRl9OT1RfSU5URUdSQUwKLSN1bmRlZiBORE5CT09TVF9GVU5DVElPTl9DT01QQVJFX1RZUEVfSUQKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSMgICBwcmFnbWEgd2FybmluZyggcG9wICkKLSNlbmRpZiAgICAgICAKLQotI2VuZGlmIC8vIE5ETkJPT1NUX0ZVTkNUSU9OX0JBU0VfSEVBREVSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlYmMzM2MuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotLy8gQm9vc3QuRnVuY3Rpb24gbGlicmFyeQotLy8gIENvcHlyaWdodCAoQykgRG91Z2xhcyBHcmVnb3IgMjAwOAotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0Ci0vLyAgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuICAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcKLSNpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fRldEX0hQUAotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTl9GV0RfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotI2lmIGRlZmluZWQoX19zZ2kpICYmIGRlZmluZWQoX0NPTVBJTEVSX1ZFUlNJT04pICYmIF9DT01QSUxFUl9WRVJTSU9OIDw9IDczMCAmJiAhZGVmaW5lZChORE5CT09TVF9TVFJJQ1RfQ09ORklHKQotLy8gV29yayBhcm91bmQgYSBjb21waWxlciBidWcuCi0vLyBuZG5ib29zdDo6cHl0aG9uOjpvYmplY3RzOjpmdW5jdGlvbiBoYXMgdG8gYmUgc2VlbiBieSB0aGUgY29tcGlsZXIgYmVmb3JlIHRoZQotLy8gbmRuYm9vc3Q6OmZ1bmN0aW9uIGNsYXNzIHRlbXBsYXRlLgotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHB5dGhvbiB7IG5hbWVzcGFjZSBvYmplY3RzIHsKLSAgY2xhc3MgZnVuY3Rpb247Ci19fX0KLSNlbmRpZgotCi0jaWYgZGVmaW5lZCAoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgICAgICAgICAgICAgICAgICAgIFwKLSB8fCBkZWZpbmVkKE5ETkJPT1NUX0JDQl9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OX0JVRykgICAgICAgICAgICAgICAgICAgICAgICAgXAotIHx8ICEoZGVmaW5lZChORE5CT09TVF9TVFJJQ1RfQ09ORklHKSB8fCAhZGVmaW5lZChfX1NVTlBST19DQykgfHwgX19TVU5QUk9fQ0MgPiAweDU0MCkKLSMgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl9OT19GVU5DVElPTl9UWVBFX1NZTlRBWAotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gIGNsYXNzIGJhZF9mdW5jdGlvbl9jYWxsOwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfRlVOQ1RJT05fTk9fRlVOQ1RJT05fVFlQRV9TWU5UQVgpCi0gIC8vIFByZWZlcnJlZCBzeW50YXgKLSAgdGVtcGxhdGU8dHlwZW5hbWUgU2lnbmF0dXJlPiBjbGFzcyBmdW5jdGlvbjsKLQotICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaWduYXR1cmU+Ci0gIGlubGluZSB2b2lkIHN3YXAoZnVuY3Rpb248U2lnbmF0dXJlPiYgZjEsIGZ1bmN0aW9uPFNpZ25hdHVyZT4mIGYyKQotICB7Ci0gICAgZjEuc3dhcChmMik7Ci0gIH0KLSNlbmRpZiAvLyBoYXZlIHBhcnRpYWwgc3BlY2lhbGl6YXRpb24KLQotICAvLyBQb3J0YWJsZSBzeW50YXgKLSAgdGVtcGxhdGU8dHlwZW5hbWUgUj4gY2xhc3MgZnVuY3Rpb24wOwotICB0ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUMT4gY2xhc3MgZnVuY3Rpb24xOwotICB0ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+IGNsYXNzIGZ1bmN0aW9uMjsKLSAgdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMz4gY2xhc3MgZnVuY3Rpb24zOwotICB0ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUND4gCi0gICAgY2xhc3MgZnVuY3Rpb240OwotICB0ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwKLSAgICAgICAgICAgdHlwZW5hbWUgVDU+IAotICAgIGNsYXNzIGZ1bmN0aW9uNTsKLSAgdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsCi0gICAgICAgICAgIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNj4gCi0gICAgY2xhc3MgZnVuY3Rpb242OwotICB0ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwKLSAgICAgICAgICAgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNz4gCi0gICAgY2xhc3MgZnVuY3Rpb243OwotICB0ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwKLSAgICAgICAgICAgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDg+IAotICAgIGNsYXNzIGZ1bmN0aW9uODsKLSAgdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsCi0gICAgICAgICAgIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOT4gCi0gICAgY2xhc3MgZnVuY3Rpb245OwotICB0ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwKLSAgICAgICAgICAgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LAotICAgICAgICAgICB0eXBlbmFtZSBUMTA+IAotICAgIGNsYXNzIGZ1bmN0aW9uMTA7Ci19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTE2NDJlNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExODUgKzAsMCBAQAotLy8gQm9vc3QuRnVuY3Rpb24gbGlicmFyeQotCi0vLyAgQ29weXJpZ2h0IERvdWdsYXMgR3JlZ29yIDIwMDEtMjAwNgotLy8gIENvcHlyaWdodCBFbWlsIERvdGNoZXZza2kgMjAwNwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZwotCi0vLyBOb3RlOiB0aGlzIGhlYWRlciBpcyBhIGhlYWRlciB0ZW1wbGF0ZSBhbmQgbXVzdCBOT1QgaGF2ZSBtdWx0aXBsZS1pbmNsdXNpb24KLS8vIHByb3RlY3Rpb24uCi0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZGV0YWlsL3Byb2xvZ3VlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvbm9fZXhjZXB0aW9uc19zdXBwb3J0LmhwcD4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSMgICBwcmFnbWEgd2FybmluZyggcHVzaCApCi0jICAgcHJhZ21hIHdhcm5pbmcoIGRpc2FibGUgOiA0MTI3ICkgLy8gImNvbmRpdGlvbmFsIGV4cHJlc3Npb24gaXMgY29uc3RhbnQiCi0jZW5kaWYgICAgICAgCi0KLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfUEFSTVMgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MsIHR5cGVuYW1lIFQpCi0KLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfQVJHUyBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUywgVCkKLQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTl9QQVJNKEosSSxEKSBORE5CT09TVF9QUF9DQVQoVCxJKSBORE5CT09TVF9QUF9DQVQoYSxJKQotCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX1BBUk1TIE5ETkJPT1NUX1BQX0VOVU0oTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MsTkROQk9PU1RfRlVOQ1RJT05fUEFSTSxORE5CT09TVF9QUF9FTVBUWSkKLQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTl9BUkdTIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTLCBhKQotCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX0FSR19UWVBFKEosSSxEKSBcCi0gIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKFQsSSkgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0NBVChhcmcsIE5ETkJPT1NUX1BQX0lOQyhJKSksX3R5cGUpOwotCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX0FSR19UWVBFUyBORE5CT09TVF9QUF9SRVBFQVQoTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MsTkROQk9PU1RfRlVOQ1RJT05fQVJHX1RZUEUsTkROQk9PU1RfUFBfRU1QVFkpCi0KLS8vIENvbW1hIGlmIG5vbnplcm8gbnVtYmVyIG9mIGFyZ3VtZW50cwotI2lmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDAKLSMgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl9DT01NQQotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl9DT01NQSAsCi0jZW5kaWYgLy8gTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPiAwCi0KLS8vIENsYXNzIG5hbWVzIHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBjb2RlCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OIE5ETkJPT1NUX0pPSU4oZnVuY3Rpb24sTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MpCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OX0lOVk9LRVIgXAotICBORE5CT09TVF9KT0lOKGZ1bmN0aW9uX2ludm9rZXIsTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MpCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX1ZPSURfRlVOQ1RJT05fSU5WT0tFUiBcCi0gIE5ETkJPT1NUX0pPSU4odm9pZF9mdW5jdGlvbl9pbnZva2VyLE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTKQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTl9GVU5DVElPTl9PQkpfSU5WT0tFUiBcCi0gIE5ETkJPT1NUX0pPSU4oZnVuY3Rpb25fb2JqX2ludm9rZXIsTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MpCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX1ZPSURfRlVOQ1RJT05fT0JKX0lOVk9LRVIgXAotICBORE5CT09TVF9KT0lOKHZvaWRfZnVuY3Rpb25fb2JqX2ludm9rZXIsTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MpCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OX1JFRl9JTlZPS0VSIFwKLSAgTkROQk9PU1RfSk9JTihmdW5jdGlvbl9yZWZfaW52b2tlcixORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUykKLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fVk9JRF9GVU5DVElPTl9SRUZfSU5WT0tFUiBcCi0gIE5ETkJPT1NUX0pPSU4odm9pZF9mdW5jdGlvbl9yZWZfaW52b2tlcixORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUykKLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fTUVNQkVSX0lOVk9LRVIgXAotICBORE5CT09TVF9KT0lOKGZ1bmN0aW9uX21lbV9pbnZva2VyLE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTKQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTl9WT0lEX01FTUJFUl9JTlZPS0VSIFwKLSAgTkROQk9PU1RfSk9JTihmdW5jdGlvbl92b2lkX21lbV9pbnZva2VyLE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTKQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTl9HRVRfRlVOQ1RJT05fSU5WT0tFUiBcCi0gIE5ETkJPT1NUX0pPSU4oZ2V0X2Z1bmN0aW9uX2ludm9rZXIsTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MpCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX0dFVF9GVU5DVElPTl9PQkpfSU5WT0tFUiBcCi0gIE5ETkJPT1NUX0pPSU4oZ2V0X2Z1bmN0aW9uX29ial9pbnZva2VyLE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTKQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTl9HRVRfRlVOQ1RJT05fUkVGX0lOVk9LRVIgXAotICBORE5CT09TVF9KT0lOKGdldF9mdW5jdGlvbl9yZWZfaW52b2tlcixORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUykKLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fR0VUX01FTUJFUl9JTlZPS0VSIFwKLSAgTkROQk9PU1RfSk9JTihnZXRfbWVtYmVyX2ludm9rZXIsTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MpCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX0dFVF9JTlZPS0VSIFwKLSAgTkROQk9PU1RfSk9JTihnZXRfaW52b2tlcixORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUykKLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fVlRBQkxFIE5ETkJPT1NUX0pPSU4oYmFzaWNfdnRhYmxlLE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTKQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1ZPSURfUkVUVVJOUwotIyAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX1ZPSURfUkVUVVJOX1RZUEUgdm9pZAotIyAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX1JFVFVSTihYKSBYCi0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX1ZPSURfUkVUVVJOX1RZUEUgbmRuYm9vc3Q6OmRldGFpbDo6ZnVuY3Rpb246OnVudXNhYmxlCi0jICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fUkVUVVJOKFgpIFg7IHJldHVybiBORE5CT09TVF9GVU5DVElPTl9WT0lEX1JFVFVSTl9UWVBFICgpCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgbmFtZXNwYWNlIGRldGFpbCB7Ci0gICAgbmFtZXNwYWNlIGZ1bmN0aW9uIHsKLSAgICAgIHRlbXBsYXRlPAotICAgICAgICB0eXBlbmFtZSBGdW5jdGlvblB0ciwKLSAgICAgICAgdHlwZW5hbWUgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQQotICAgICAgICBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9QQVJNUwotICAgICAgICA+Ci0gICAgICBzdHJ1Y3QgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT05fSU5WT0tFUgotICAgICAgewotICAgICAgICBzdGF0aWMgUiBpbnZva2UoZnVuY3Rpb25fYnVmZmVyJiBmdW5jdGlvbl9wdHIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1BBUk1TKQotICAgICAgICB7Ci0gICAgICAgICAgRnVuY3Rpb25QdHIgZiA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVuY3Rpb25QdHI+KGZ1bmN0aW9uX3B0ci5mdW5jX3B0cik7Ci0gICAgICAgICAgcmV0dXJuIGYoTkROQk9PU1RfRlVOQ1RJT05fQVJHUyk7Ci0gICAgICAgIH0KLSAgICAgIH07Ci0KLSAgICAgIHRlbXBsYXRlPAotICAgICAgICB0eXBlbmFtZSBGdW5jdGlvblB0ciwKLSAgICAgICAgdHlwZW5hbWUgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQQotICAgICAgICBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9QQVJNUwotICAgICAgICA+Ci0gICAgICBzdHJ1Y3QgTkROQk9PU1RfRlVOQ1RJT05fVk9JRF9GVU5DVElPTl9JTlZPS0VSCi0gICAgICB7Ci0gICAgICAgIHN0YXRpYyBORE5CT09TVF9GVU5DVElPTl9WT0lEX1JFVFVSTl9UWVBFCi0gICAgICAgIGludm9rZShmdW5jdGlvbl9idWZmZXImIGZ1bmN0aW9uX3B0ciBORE5CT09TVF9GVU5DVElPTl9DT01NQQotICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fUEFSTVMpCi0KLSAgICAgICAgewotICAgICAgICAgIEZ1bmN0aW9uUHRyIGYgPSByZWludGVycHJldF9jYXN0PEZ1bmN0aW9uUHRyPihmdW5jdGlvbl9wdHIuZnVuY19wdHIpOwotICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1JFVFVSTihmKE5ETkJPT1NUX0ZVTkNUSU9OX0FSR1MpKTsKLSAgICAgICAgfQotICAgICAgfTsKLQotICAgICAgdGVtcGxhdGU8Ci0gICAgICAgIHR5cGVuYW1lIEZ1bmN0aW9uT2JqLAotICAgICAgICB0eXBlbmFtZSBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX1BBUk1TCi0gICAgICA+Ci0gICAgICBzdHJ1Y3QgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT05fT0JKX0lOVk9LRVIKLSAgICAgIHsKLSAgICAgICAgc3RhdGljIFIgaW52b2tlKGZ1bmN0aW9uX2J1ZmZlciYgZnVuY3Rpb25fb2JqX3B0ciBORE5CT09TVF9GVU5DVElPTl9DT01NQQotICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fUEFSTVMpCi0KLSAgICAgICAgewotICAgICAgICAgIEZ1bmN0aW9uT2JqKiBmOwotICAgICAgICAgIGlmIChmdW5jdGlvbl9hbGxvd3Nfc21hbGxfb2JqZWN0X29wdGltaXphdGlvbjxGdW5jdGlvbk9iaj46OnZhbHVlKQotICAgICAgICAgICAgZiA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVuY3Rpb25PYmoqPigmZnVuY3Rpb25fb2JqX3B0ci5kYXRhKTsKLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBmID0gcmVpbnRlcnByZXRfY2FzdDxGdW5jdGlvbk9iaio+KGZ1bmN0aW9uX29ial9wdHIub2JqX3B0cik7Ci0gICAgICAgICAgcmV0dXJuICgqZikoTkROQk9PU1RfRlVOQ1RJT05fQVJHUyk7Ci0gICAgICAgIH0KLSAgICAgIH07Ci0KLSAgICAgIHRlbXBsYXRlPAotICAgICAgICB0eXBlbmFtZSBGdW5jdGlvbk9iaiwKLSAgICAgICAgdHlwZW5hbWUgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQQotICAgICAgICBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9QQVJNUwotICAgICAgPgotICAgICAgc3RydWN0IE5ETkJPT1NUX0ZVTkNUSU9OX1ZPSURfRlVOQ1RJT05fT0JKX0lOVk9LRVIKLSAgICAgIHsKLSAgICAgICAgc3RhdGljIE5ETkJPT1NUX0ZVTkNUSU9OX1ZPSURfUkVUVVJOX1RZUEUKLSAgICAgICAgaW52b2tlKGZ1bmN0aW9uX2J1ZmZlciYgZnVuY3Rpb25fb2JqX3B0ciBORE5CT09TVF9GVU5DVElPTl9DT01NQQotICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fUEFSTVMpCi0KLSAgICAgICAgewotICAgICAgICAgIEZ1bmN0aW9uT2JqKiBmOwotICAgICAgICAgIGlmIChmdW5jdGlvbl9hbGxvd3Nfc21hbGxfb2JqZWN0X29wdGltaXphdGlvbjxGdW5jdGlvbk9iaj46OnZhbHVlKQotICAgICAgICAgICAgZiA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVuY3Rpb25PYmoqPigmZnVuY3Rpb25fb2JqX3B0ci5kYXRhKTsKLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBmID0gcmVpbnRlcnByZXRfY2FzdDxGdW5jdGlvbk9iaio+KGZ1bmN0aW9uX29ial9wdHIub2JqX3B0cik7Ci0gICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fUkVUVVJOKCgqZikoTkROQk9PU1RfRlVOQ1RJT05fQVJHUykpOwotICAgICAgICB9Ci0gICAgICB9OwotCi0gICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgdHlwZW5hbWUgRnVuY3Rpb25PYmosCi0gICAgICAgIHR5cGVuYW1lIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfUEFSTVMKLSAgICAgID4KLSAgICAgIHN0cnVjdCBORE5CT09TVF9GVU5DVElPTl9GVU5DVElPTl9SRUZfSU5WT0tFUgotICAgICAgewotICAgICAgICBzdGF0aWMgUiBpbnZva2UoZnVuY3Rpb25fYnVmZmVyJiBmdW5jdGlvbl9vYmpfcHRyIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9GVU5DVElPTl9QQVJNUykKLQotICAgICAgICB7Ci0gICAgICAgICAgRnVuY3Rpb25PYmoqIGYgPSAKLSAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8RnVuY3Rpb25PYmoqPihmdW5jdGlvbl9vYmpfcHRyLm9ial9wdHIpOwotICAgICAgICAgIHJldHVybiAoKmYpKE5ETkJPT1NUX0ZVTkNUSU9OX0FSR1MpOwotICAgICAgICB9Ci0gICAgICB9OwotCi0gICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgdHlwZW5hbWUgRnVuY3Rpb25PYmosCi0gICAgICAgIHR5cGVuYW1lIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfUEFSTVMKLSAgICAgID4KLSAgICAgIHN0cnVjdCBORE5CT09TVF9GVU5DVElPTl9WT0lEX0ZVTkNUSU9OX1JFRl9JTlZPS0VSCi0gICAgICB7Ci0gICAgICAgIHN0YXRpYyBORE5CT09TVF9GVU5DVElPTl9WT0lEX1JFVFVSTl9UWVBFCi0gICAgICAgIGludm9rZShmdW5jdGlvbl9idWZmZXImIGZ1bmN0aW9uX29ial9wdHIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1BBUk1TKQotCi0gICAgICAgIHsKLSAgICAgICAgICBGdW5jdGlvbk9iaiogZiA9IAotICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxGdW5jdGlvbk9iaio+KGZ1bmN0aW9uX29ial9wdHIub2JqX3B0cik7Ci0gICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fUkVUVVJOKCgqZikoTkROQk9PU1RfRlVOQ1RJT05fQVJHUykpOwotICAgICAgICB9Ci0gICAgICB9OwotCi0jaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPiAwCi0gICAgICAvKiBIYW5kbGUgaW52b2NhdGlvbiBvZiBtZW1iZXIgcG9pbnRlcnMuICovCi0gICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgdHlwZW5hbWUgTWVtYmVyUHRyLAotICAgICAgICB0eXBlbmFtZSBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX1BBUk1TCi0gICAgICA+Ci0gICAgICBzdHJ1Y3QgTkROQk9PU1RfRlVOQ1RJT05fTUVNQkVSX0lOVk9LRVIKLSAgICAgIHsKLSAgICAgICAgc3RhdGljIFIgaW52b2tlKGZ1bmN0aW9uX2J1ZmZlciYgZnVuY3Rpb25fb2JqX3B0ciBORE5CT09TVF9GVU5DVElPTl9DT01NQQotICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fUEFSTVMpCi0KLSAgICAgICAgewotICAgICAgICAgIE1lbWJlclB0ciogZiA9IAotICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxNZW1iZXJQdHIqPigmZnVuY3Rpb25fb2JqX3B0ci5kYXRhKTsKLSAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6Om1lbV9mbigqZikoTkROQk9PU1RfRlVOQ1RJT05fQVJHUyk7Ci0gICAgICAgIH0KLSAgICAgIH07Ci0KLSAgICAgIHRlbXBsYXRlPAotICAgICAgICB0eXBlbmFtZSBNZW1iZXJQdHIsCi0gICAgICAgIHR5cGVuYW1lIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfUEFSTVMKLSAgICAgID4KLSAgICAgIHN0cnVjdCBORE5CT09TVF9GVU5DVElPTl9WT0lEX01FTUJFUl9JTlZPS0VSCi0gICAgICB7Ci0gICAgICAgIHN0YXRpYyBORE5CT09TVF9GVU5DVElPTl9WT0lEX1JFVFVSTl9UWVBFCi0gICAgICAgIGludm9rZShmdW5jdGlvbl9idWZmZXImIGZ1bmN0aW9uX29ial9wdHIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1BBUk1TKQotCi0gICAgICAgIHsKLSAgICAgICAgICBNZW1iZXJQdHIqIGYgPSAKLSAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8TWVtYmVyUHRyKj4oJmZ1bmN0aW9uX29ial9wdHIuZGF0YSk7Ci0gICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fUkVUVVJOKG5kbmJvb3N0OjptZW1fZm4oKmYpKE5ETkJPT1NUX0ZVTkNUSU9OX0FSR1MpKTsKLSAgICAgICAgfQotICAgICAgfTsKLSNlbmRpZgotCi0gICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgdHlwZW5hbWUgRnVuY3Rpb25QdHIsCi0gICAgICAgIHR5cGVuYW1lIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfUEFSTVMKLSAgICAgID4KLSAgICAgIHN0cnVjdCBORE5CT09TVF9GVU5DVElPTl9HRVRfRlVOQ1RJT05fSU5WT0tFUgotICAgICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfYzwoaXNfdm9pZDxSPjo6dmFsdWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1ZPSURfRlVOQ1RJT05fSU5WT0tFUjwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdGlvblB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfQVJHUwotICAgICAgICAgICAgICAgICAgICAgICAgICA+LAotICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9GVU5DVElPTl9GVU5DVElPTl9JTlZPS0VSPAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uUHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9BUkdTCi0gICAgICAgICAgICAgICAgICAgICAgICAgID4KLSAgICAgICAgICAgICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgICAgfTsKLQotICAgICAgdGVtcGxhdGU8Ci0gICAgICAgIHR5cGVuYW1lIEZ1bmN0aW9uT2JqLAotICAgICAgICB0eXBlbmFtZSBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX1BBUk1TCi0gICAgICAgPgotICAgICAgc3RydWN0IE5ETkJPT1NUX0ZVTkNUSU9OX0dFVF9GVU5DVElPTl9PQkpfSU5WT0tFUgotICAgICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfYzwoaXNfdm9pZDxSPjo6dmFsdWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1ZPSURfRlVOQ1RJT05fT0JKX0lOVk9LRVI8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25PYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT05fT0JKX0lOVk9LRVI8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25PYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPgotICAgICAgICAgICAgICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgICB9OwotCi0gICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgdHlwZW5hbWUgRnVuY3Rpb25PYmosCi0gICAgICAgIHR5cGVuYW1lIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfUEFSTVMKLSAgICAgICA+Ci0gICAgICBzdHJ1Y3QgTkROQk9PU1RfRlVOQ1RJT05fR0VUX0ZVTkNUSU9OX1JFRl9JTlZPS0VSCi0gICAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl9jPChpc192b2lkPFI+Ojp2YWx1ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fVk9JRF9GVU5DVElPTl9SRUZfSU5WT0tFUjwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdGlvbk9iaiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfQVJHUwotICAgICAgICAgICAgICAgICAgICAgICAgICA+LAotICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9GVU5DVElPTl9GVU5DVElPTl9SRUZfSU5WT0tFUjwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdGlvbk9iaiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfQVJHUwotICAgICAgICAgICAgICAgICAgICAgICAgICA+Ci0gICAgICAgICAgICAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICAgIH07Ci0KLSNpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA+IDAKLSAgICAgIC8qIFJldHJpZXZlIHRoZSBhcHByb3ByaWF0ZSBpbnZva2VyIGZvciBhIG1lbWJlciBwb2ludGVyLiAgKi8KLSAgICAgIHRlbXBsYXRlPAotICAgICAgICB0eXBlbmFtZSBNZW1iZXJQdHIsCi0gICAgICAgIHR5cGVuYW1lIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfUEFSTVMKLSAgICAgICA+Ci0gICAgICBzdHJ1Y3QgTkROQk9PU1RfRlVOQ1RJT05fR0VUX01FTUJFUl9JTlZPS0VSCi0gICAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl9jPChpc192b2lkPFI+Ojp2YWx1ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fVk9JRF9NRU1CRVJfSU5WT0tFUjwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZW1iZXJQdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fTUVNQkVSX0lOVk9LRVI8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVtYmVyUHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9BUkdTCi0gICAgICAgICAgICAgICAgICAgICAgICAgID4KLSAgICAgICAgICAgICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgICAgfTsKLSNlbmRpZgotCi0gICAgICAvKiBHaXZlbiB0aGUgdGFnIHJldHVybmVkIGJ5IGdldF9mdW5jdGlvbl90YWcsIHJldHJpZXZlIHRoZQotICAgICAgICAgYWN0dWFsIGludm9rZXIgdGhhdCB3aWxsIGJlIHVzZWQgZm9yIHRoZSBnaXZlbiBmdW5jdGlvbgotICAgICAgICAgb2JqZWN0LiAKLQotICAgICAgICAgRWFjaCBzcGVjaWFsaXphdGlvbiBjb250YWlucyBhbiAiYXBwbHkiIG5lc3RlZCBjbGFzcyB0ZW1wbGF0ZQotICAgICAgICAgdGhhdCBhY2NlcHRzIHRoZSBmdW5jdGlvbiBvYmplY3QsIHJldHVybiB0eXBlLCBmdW5jdGlvbgotICAgICAgICAgYXJndW1lbnQgdHlwZXMsIGFuZCBhbGxvY2F0b3IuIFRoZSByZXN1bHRpbmcgImFwcGx5IiBjbGFzcwotICAgICAgICAgY29udGFpbnMgdHdvIHR5cGVkZWZzLCAiaW52b2tlcl90eXBlIiBhbmQgIm1hbmFnZXJfdHlwZSIsCi0gICAgICAgICB3aGljaCBjb3JyZXNwb25kIHRvIHRoZSBpbnZva2VyIGFuZCBtYW5hZ2VyIHR5cGVzLiAqLwotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVGFnPgotICAgICAgc3RydWN0IE5ETkJPT1NUX0ZVTkNUSU9OX0dFVF9JTlZPS0VSIHsgfTsKLQotICAgICAgLyogUmV0cmlldmUgdGhlIGludm9rZXIgZm9yIGEgZnVuY3Rpb24gcG9pbnRlci4gKi8KLSAgICAgIHRlbXBsYXRlPD4KLSAgICAgIHN0cnVjdCBORE5CT09TVF9GVU5DVElPTl9HRVRfSU5WT0tFUjxmdW5jdGlvbl9wdHJfdGFnPgotICAgICAgewotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblB0ciwKLSAgICAgICAgICAgICAgICAgdHlwZW5hbWUgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQSBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9QQVJNUz4KLSAgICAgICAgc3RydWN0IGFwcGx5Ci0gICAgICAgIHsKLSAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE5ETkJPT1NUX0ZVTkNUSU9OX0dFVF9GVU5DVElPTl9JTlZPS0VSPAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdGlvblB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9BUkdTCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICBpbnZva2VyX3R5cGU7Ci0KLSAgICAgICAgICB0eXBlZGVmIGZ1bmN0b3JfbWFuYWdlcjxGdW5jdGlvblB0cj4gbWFuYWdlcl90eXBlOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uUHRyLAotICAgICAgICAgICAgICAgICB0eXBlbmFtZSBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX1BBUk1TLAotICAgICAgICAgICAgICAgICB0eXBlbmFtZSBBbGxvY2F0b3I+Ci0gICAgICAgIHN0cnVjdCBhcHBseV9hCi0gICAgICAgIHsKLSAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE5ETkJPT1NUX0ZVTkNUSU9OX0dFVF9GVU5DVElPTl9JTlZPS0VSPAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdGlvblB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9BUkdTCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICBpbnZva2VyX3R5cGU7Ci0KLSAgICAgICAgICB0eXBlZGVmIGZ1bmN0b3JfbWFuYWdlcjxGdW5jdGlvblB0cj4gbWFuYWdlcl90eXBlOwotICAgICAgICB9OwotICAgICAgfTsKLQotI2lmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID4gMAotICAgICAgLyogUmV0cmlldmUgdGhlIGludm9rZXIgZm9yIGEgbWVtYmVyIHBvaW50ZXIuICovCi0gICAgICB0ZW1wbGF0ZTw+Ci0gICAgICBzdHJ1Y3QgTkROQk9PU1RfRlVOQ1RJT05fR0VUX0lOVk9LRVI8bWVtYmVyX3B0cl90YWc+Ci0gICAgICB7Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1lbWJlclB0ciwKLSAgICAgICAgICAgICAgICAgdHlwZW5hbWUgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQSBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9QQVJNUz4KLSAgICAgICAgc3RydWN0IGFwcGx5Ci0gICAgICAgIHsKLSAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE5ETkJPT1NUX0ZVTkNUSU9OX0dFVF9NRU1CRVJfSU5WT0tFUjwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVtYmVyUHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgIGludm9rZXJfdHlwZTsKLQotICAgICAgICAgIHR5cGVkZWYgZnVuY3Rvcl9tYW5hZ2VyPE1lbWJlclB0cj4gbWFuYWdlcl90eXBlOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1lbWJlclB0ciwKLSAgICAgICAgICAgICAgICAgdHlwZW5hbWUgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQSBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9QQVJNUywKLSAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQWxsb2NhdG9yPgotICAgICAgICBzdHJ1Y3QgYXBwbHlfYQotICAgICAgICB7Ci0gICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBORE5CT09TVF9GVU5DVElPTl9HRVRfTUVNQkVSX0lOVk9LRVI8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lbWJlclB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9BUkdTCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICBpbnZva2VyX3R5cGU7Ci0KLSAgICAgICAgICB0eXBlZGVmIGZ1bmN0b3JfbWFuYWdlcjxNZW1iZXJQdHI+IG1hbmFnZXJfdHlwZTsKLSAgICAgICAgfTsKLSAgICAgIH07Ci0jZW5kaWYKLQotICAgICAgLyogUmV0cmlldmUgdGhlIGludm9rZXIgZm9yIGEgZnVuY3Rpb24gb2JqZWN0LiAqLwotICAgICAgdGVtcGxhdGU8PgotICAgICAgc3RydWN0IE5ETkJPT1NUX0ZVTkNUSU9OX0dFVF9JTlZPS0VSPGZ1bmN0aW9uX29ial90YWc+Ci0gICAgICB7Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uT2JqLAotICAgICAgICAgICAgICAgICB0eXBlbmFtZSBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX1BBUk1TPgotICAgICAgICBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgewotICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgTkROQk9PU1RfRlVOQ1RJT05fR0VUX0ZVTkNUSU9OX09CSl9JTlZPS0VSPAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdGlvbk9iaiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9BUkdTCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICBpbnZva2VyX3R5cGU7Ci0KLSAgICAgICAgICB0eXBlZGVmIGZ1bmN0b3JfbWFuYWdlcjxGdW5jdGlvbk9iaj4gbWFuYWdlcl90eXBlOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uT2JqLAotICAgICAgICAgICAgICAgICB0eXBlbmFtZSBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX1BBUk1TLAotICAgICAgICAgICAgICAgICB0eXBlbmFtZSBBbGxvY2F0b3I+Ci0gICAgICAgIHN0cnVjdCBhcHBseV9hCi0gICAgICAgIHsKLSAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE5ETkJPT1NUX0ZVTkNUSU9OX0dFVF9GVU5DVElPTl9PQkpfSU5WT0tFUjwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25PYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfQVJHUwotICAgICAgICAgICAgICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgaW52b2tlcl90eXBlOwotCi0gICAgICAgICAgdHlwZWRlZiBmdW5jdG9yX21hbmFnZXJfYTxGdW5jdGlvbk9iaiwgQWxsb2NhdG9yPiBtYW5hZ2VyX3R5cGU7Ci0gICAgICAgIH07Ci0gICAgICB9OwotCi0gICAgICAvKiBSZXRyaWV2ZSB0aGUgaW52b2tlciBmb3IgYSByZWZlcmVuY2UgdG8gYSBmdW5jdGlvbiBvYmplY3QuICovCi0gICAgICB0ZW1wbGF0ZTw+Ci0gICAgICBzdHJ1Y3QgTkROQk9PU1RfRlVOQ1RJT05fR0VUX0lOVk9LRVI8ZnVuY3Rpb25fb2JqX3JlZl90YWc+Ci0gICAgICB7Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZldyYXBwZXIsCi0gICAgICAgICAgICAgICAgIHR5cGVuYW1lIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfUEFSTVM+Ci0gICAgICAgIHN0cnVjdCBhcHBseQotICAgICAgICB7Ci0gICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBORE5CT09TVF9GVU5DVElPTl9HRVRfRlVOQ1RJT05fUkVGX0lOVk9LRVI8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFJlZldyYXBwZXI6OnR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfQVJHUwotICAgICAgICAgICAgICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgaW52b2tlcl90eXBlOwotCi0gICAgICAgICAgdHlwZWRlZiByZWZlcmVuY2VfbWFuYWdlcjx0eXBlbmFtZSBSZWZXcmFwcGVyOjp0eXBlPiBtYW5hZ2VyX3R5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVmV3JhcHBlciwKLSAgICAgICAgICAgICAgICAgdHlwZW5hbWUgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQSBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9QQVJNUywKLSAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQWxsb2NhdG9yPgotICAgICAgICBzdHJ1Y3QgYXBwbHlfYQotICAgICAgICB7Ci0gICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBORE5CT09TVF9GVU5DVElPTl9HRVRfRlVOQ1RJT05fUkVGX0lOVk9LRVI8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFJlZldyYXBwZXI6OnR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfQVJHUwotICAgICAgICAgICAgICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgaW52b2tlcl90eXBlOwotCi0gICAgICAgICAgdHlwZWRlZiByZWZlcmVuY2VfbWFuYWdlcjx0eXBlbmFtZSBSZWZXcmFwcGVyOjp0eXBlPiBtYW5hZ2VyX3R5cGU7Ci0gICAgICAgIH07Ci0gICAgICB9OwotCi0KLSAgICAgIC8qKgotICAgICAgICogdnRhYmxlIGZvciBhIHNwZWNpZmljIG5kbmJvb3N0OjpmdW5jdGlvbiBpbnN0YW5jZS4gVGhpcwotICAgICAgICogc3RydWN0dXJlIG11c3QgYmUgYW4gYWdncmVnYXRlIHNvIHRoYXQgd2UgY2FuIHVzZSBzdGF0aWMKLSAgICAgICAqIGluaXRpYWxpemF0aW9uIGluIG5kbmJvb3N0OjpmdW5jdGlvbidzIGFzc2lnbl90byBhbmQgYXNzaWduX3RvX2EKLSAgICAgICAqIG1lbWJlcnMuIEl0IHRoZXJlZm9yZSBjYW5ub3QgaGF2ZSBhbnkgY29uc3RydWN0b3JzLAotICAgICAgICogZGVzdHJ1Y3RvcnMsIGJhc2UgY2xhc3NlcywgZXRjLgotICAgICAgICovCi0gICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX1BBUk1TPgotICAgICAgc3RydWN0IE5ETkJPT1NUX0ZVTkNUSU9OX1ZUQUJMRQotICAgICAgewotI2lmbmRlZiBORE5CT09TVF9OT19WT0lEX1JFVFVSTlMKLSAgICAgICAgdHlwZWRlZiBSICAgICAgICAgcmVzdWx0X3R5cGU7Ci0jZWxzZQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGZ1bmN0aW9uX3JldHVybl90eXBlPFI+Ojp0eXBlIHJlc3VsdF90eXBlOwotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1ZPSURfUkVUVVJOUwotCi0gICAgICAgIHR5cGVkZWYgcmVzdWx0X3R5cGUgKCppbnZva2VyX3R5cGUpKGZ1bmN0aW9uX2J1ZmZlciYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfQVJHUyk7Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRj4KLSAgICAgICAgYm9vbCBhc3NpZ25fdG8oRiBmLCBmdW5jdGlvbl9idWZmZXImIGZ1bmN0b3IpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGdldF9mdW5jdGlvbl90YWc8Rj46OnR5cGUgdGFnOwotICAgICAgICAgIHJldHVybiBhc3NpZ25fdG8oZiwgZnVuY3RvciwgdGFnKCkpOwotICAgICAgICB9Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEYsdHlwZW5hbWUgQWxsb2NhdG9yPgotICAgICAgICBib29sIGFzc2lnbl90b19hKEYgZiwgZnVuY3Rpb25fYnVmZmVyJiBmdW5jdG9yLCBBbGxvY2F0b3IgYSkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZ2V0X2Z1bmN0aW9uX3RhZzxGPjo6dHlwZSB0YWc7Ci0gICAgICAgICAgcmV0dXJuIGFzc2lnbl90b19hKGYsIGZ1bmN0b3IsIGEsIHRhZygpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgY2xlYXIoZnVuY3Rpb25fYnVmZmVyJiBmdW5jdG9yKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgaWYgKGJhc2UubWFuYWdlcikKLSAgICAgICAgICAgIGJhc2UubWFuYWdlcihmdW5jdG9yLCBmdW5jdG9yLCBkZXN0cm95X2Z1bmN0b3JfdGFnKTsKLSAgICAgICAgfQotCi0gICAgICBwcml2YXRlOgotICAgICAgICAvLyBGdW5jdGlvbiBwb2ludGVycwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblB0cj4KLSAgICAgICAgYm9vbCAKLSAgICAgICAgYXNzaWduX3RvKEZ1bmN0aW9uUHRyIGYsIGZ1bmN0aW9uX2J1ZmZlciYgZnVuY3RvciwgZnVuY3Rpb25fcHRyX3RhZykgY29uc3QKLSAgICAgICAgewotICAgICAgICAgIHRoaXMtPmNsZWFyKGZ1bmN0b3IpOwotICAgICAgICAgIGlmIChmKSB7Ci0gICAgICAgICAgICAvLyBzaG91bGQgYmUgYSByZWludGVycHJldCBjYXN0LCBidXQgc29tZSBjb21waWxlcnMgaW5zaXN0Ci0gICAgICAgICAgICAvLyBvbiBnaXZpbmcgY3YtcXVhbGlmaWVycyB0byBmcmVlIGZ1bmN0aW9ucwotICAgICAgICAgICAgZnVuY3Rvci5mdW5jX3B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCAoKikoKT4oZik7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblB0cix0eXBlbmFtZSBBbGxvY2F0b3I+Ci0gICAgICAgIGJvb2wgCi0gICAgICAgIGFzc2lnbl90b19hKEZ1bmN0aW9uUHRyIGYsIGZ1bmN0aW9uX2J1ZmZlciYgZnVuY3RvciwgQWxsb2NhdG9yLCBmdW5jdGlvbl9wdHJfdGFnKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgcmV0dXJuIGFzc2lnbl90byhmLGZ1bmN0b3IsZnVuY3Rpb25fcHRyX3RhZygpKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIE1lbWJlciBwb2ludGVycwotI2lmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID4gMAotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNZW1iZXJQdHI+Ci0gICAgICAgIGJvb2wgYXNzaWduX3RvKE1lbWJlclB0ciBmLCBmdW5jdGlvbl9idWZmZXImIGZ1bmN0b3IsIG1lbWJlcl9wdHJfdGFnKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgLy8gRFBHIFRCRDogQWRkIGV4cGxpY2l0IHN1cHBvcnQgZm9yIG1lbWJlciBmdW5jdGlvbgotICAgICAgICAgIC8vIG9iamVjdHMsIHNvIHdlIGludm9rZSB0aHJvdWdoIG1lbV9mbigpIGJ1dCB3ZSByZXRhaW4gdGhlCi0gICAgICAgICAgLy8gcmlnaHQgdGFyZ2V0X3R5cGUoKSB2YWx1ZXMuCi0gICAgICAgICAgaWYgKGYpIHsKLSAgICAgICAgICAgIHRoaXMtPmFzc2lnbl90byhuZG5ib29zdDo6bWVtX2ZuKGYpLCBmdW5jdG9yKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1lbWJlclB0cix0eXBlbmFtZSBBbGxvY2F0b3I+Ci0gICAgICAgIGJvb2wgYXNzaWduX3RvX2EoTWVtYmVyUHRyIGYsIGZ1bmN0aW9uX2J1ZmZlciYgZnVuY3RvciwgQWxsb2NhdG9yIGEsIG1lbWJlcl9wdHJfdGFnKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgLy8gRFBHIFRCRDogQWRkIGV4cGxpY2l0IHN1cHBvcnQgZm9yIG1lbWJlciBmdW5jdGlvbgotICAgICAgICAgIC8vIG9iamVjdHMsIHNvIHdlIGludm9rZSB0aHJvdWdoIG1lbV9mbigpIGJ1dCB3ZSByZXRhaW4gdGhlCi0gICAgICAgICAgLy8gcmlnaHQgdGFyZ2V0X3R5cGUoKSB2YWx1ZXMuCi0gICAgICAgICAgaWYgKGYpIHsKLSAgICAgICAgICAgIHRoaXMtPmFzc2lnbl90b19hKG5kbmJvb3N0OjptZW1fZm4oZiksIGZ1bmN0b3IsIGEpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSNlbmRpZiAvLyBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA+IDAKLQotICAgICAgICAvLyBGdW5jdGlvbiBvYmplY3RzCi0gICAgICAgIC8vIEFzc2lnbiB0byBhIGZ1bmN0aW9uIG9iamVjdCB1c2luZyB0aGUgc21hbGwgb2JqZWN0IG9wdGltaXphdGlvbgotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvbk9iaj4KLSAgICAgICAgdm9pZCAKLSAgICAgICAgYXNzaWduX2Z1bmN0b3IoRnVuY3Rpb25PYmogZiwgZnVuY3Rpb25fYnVmZmVyJiBmdW5jdG9yLCBtcGw6OnRydWVfKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgbmV3IChyZWludGVycHJldF9jYXN0PHZvaWQqPigmZnVuY3Rvci5kYXRhKSkgRnVuY3Rpb25PYmooZik7Ci0gICAgICAgIH0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25PYmosdHlwZW5hbWUgQWxsb2NhdG9yPgotICAgICAgICB2b2lkIAotICAgICAgICBhc3NpZ25fZnVuY3Rvcl9hKEZ1bmN0aW9uT2JqIGYsIGZ1bmN0aW9uX2J1ZmZlciYgZnVuY3RvciwgQWxsb2NhdG9yLCBtcGw6OnRydWVfKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgYXNzaWduX2Z1bmN0b3IoZixmdW5jdG9yLG1wbDo6dHJ1ZV8oKSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBBc3NpZ24gdG8gYSBmdW5jdGlvbiBvYmplY3QgYWxsb2NhdGVkIG9uIHRoZSBoZWFwLgotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvbk9iaj4KLSAgICAgICAgdm9pZCAKLSAgICAgICAgYXNzaWduX2Z1bmN0b3IoRnVuY3Rpb25PYmogZiwgZnVuY3Rpb25fYnVmZmVyJiBmdW5jdG9yLCBtcGw6OmZhbHNlXykgY29uc3QKLSAgICAgICAgewotICAgICAgICAgIGZ1bmN0b3Iub2JqX3B0ciA9IG5ldyBGdW5jdGlvbk9iaihmKTsKLSAgICAgICAgfQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvbk9iaix0eXBlbmFtZSBBbGxvY2F0b3I+Ci0gICAgICAgIHZvaWQgCi0gICAgICAgIGFzc2lnbl9mdW5jdG9yX2EoRnVuY3Rpb25PYmogZiwgZnVuY3Rpb25fYnVmZmVyJiBmdW5jdG9yLCBBbGxvY2F0b3IgYSwgbXBsOjpmYWxzZV8pIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICB0eXBlZGVmIGZ1bmN0b3Jfd3JhcHBlcjxGdW5jdGlvbk9iaixBbGxvY2F0b3I+IGZ1bmN0b3Jfd3JhcHBlcl90eXBlOwotICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQWxsb2NhdG9yOjp0ZW1wbGF0ZSByZWJpbmQ8ZnVuY3Rvcl93cmFwcGVyX3R5cGU+OjpvdGhlcgotICAgICAgICAgICAgd3JhcHBlcl9hbGxvY2F0b3JfdHlwZTsKLSAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHdyYXBwZXJfYWxsb2NhdG9yX3R5cGU6OnBvaW50ZXIgd3JhcHBlcl9hbGxvY2F0b3JfcG9pbnRlcl90eXBlOwotICAgICAgICAgIHdyYXBwZXJfYWxsb2NhdG9yX3R5cGUgd3JhcHBlcl9hbGxvY2F0b3IoYSk7Ci0gICAgICAgICAgd3JhcHBlcl9hbGxvY2F0b3JfcG9pbnRlcl90eXBlIGNvcHkgPSB3cmFwcGVyX2FsbG9jYXRvci5hbGxvY2F0ZSgxKTsKLSAgICAgICAgICB3cmFwcGVyX2FsbG9jYXRvci5jb25zdHJ1Y3QoY29weSwgZnVuY3Rvcl93cmFwcGVyX3R5cGUoZixhKSk7Ci0gICAgICAgICAgZnVuY3Rvcl93cmFwcGVyX3R5cGUqIG5ld19mID0gc3RhdGljX2Nhc3Q8ZnVuY3Rvcl93cmFwcGVyX3R5cGUqPihjb3B5KTsKLSAgICAgICAgICBmdW5jdG9yLm9ial9wdHIgPSBuZXdfZjsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uT2JqPgotICAgICAgICBib29sIAotICAgICAgICBhc3NpZ25fdG8oRnVuY3Rpb25PYmogZiwgZnVuY3Rpb25fYnVmZmVyJiBmdW5jdG9yLCBmdW5jdGlvbl9vYmpfdGFnKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgaWYgKCFuZG5ib29zdDo6ZGV0YWlsOjpmdW5jdGlvbjo6aGFzX2VtcHR5X3RhcmdldChuZG5ib29zdDo6YWRkcmVzc29mKGYpKSkgewotICAgICAgICAgICAgYXNzaWduX2Z1bmN0b3IoZiwgZnVuY3RvciwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBtcGw6OmJvb2xfPChmdW5jdGlvbl9hbGxvd3Nfc21hbGxfb2JqZWN0X29wdGltaXphdGlvbjxGdW5jdGlvbk9iaj46OnZhbHVlKT4oKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvbk9iaix0eXBlbmFtZSBBbGxvY2F0b3I+Ci0gICAgICAgIGJvb2wgCi0gICAgICAgIGFzc2lnbl90b19hKEZ1bmN0aW9uT2JqIGYsIGZ1bmN0aW9uX2J1ZmZlciYgZnVuY3RvciwgQWxsb2NhdG9yIGEsIGZ1bmN0aW9uX29ial90YWcpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICBpZiAoIW5kbmJvb3N0OjpkZXRhaWw6OmZ1bmN0aW9uOjpoYXNfZW1wdHlfdGFyZ2V0KG5kbmJvb3N0OjphZGRyZXNzb2YoZikpKSB7Ci0gICAgICAgICAgICBhc3NpZ25fZnVuY3Rvcl9hKGYsIGZ1bmN0b3IsIGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBtcGw6OmJvb2xfPChmdW5jdGlvbl9hbGxvd3Nfc21hbGxfb2JqZWN0X29wdGltaXphdGlvbjxGdW5jdGlvbk9iaj46OnZhbHVlKT4oKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIFJlZmVyZW5jZSB0byBhIGZ1bmN0aW9uIG9iamVjdAotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvbk9iaj4KLSAgICAgICAgYm9vbCAKLSAgICAgICAgYXNzaWduX3RvKGNvbnN0IHJlZmVyZW5jZV93cmFwcGVyPEZ1bmN0aW9uT2JqPiYgZiwgCi0gICAgICAgICAgICAgICAgICBmdW5jdGlvbl9idWZmZXImIGZ1bmN0b3IsIGZ1bmN0aW9uX29ial9yZWZfdGFnKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgZnVuY3Rvci5vYmpfcmVmLm9ial9wdHIgPSAodm9pZCAqKShmLmdldF9wb2ludGVyKCkpOwotICAgICAgICAgIGZ1bmN0b3Iub2JqX3JlZi5pc19jb25zdF9xdWFsaWZpZWQgPSBpc19jb25zdDxGdW5jdGlvbk9iaj46OnZhbHVlOwotICAgICAgICAgIGZ1bmN0b3Iub2JqX3JlZi5pc192b2xhdGlsZV9xdWFsaWZpZWQgPSBpc192b2xhdGlsZTxGdW5jdGlvbk9iaj46OnZhbHVlOwotICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uT2JqLHR5cGVuYW1lIEFsbG9jYXRvcj4KLSAgICAgICAgYm9vbCAKLSAgICAgICAgYXNzaWduX3RvX2EoY29uc3QgcmVmZXJlbmNlX3dyYXBwZXI8RnVuY3Rpb25PYmo+JiBmLCAKLSAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uX2J1ZmZlciYgZnVuY3RvciwgQWxsb2NhdG9yLCBmdW5jdGlvbl9vYmpfcmVmX3RhZykgY29uc3QKLSAgICAgICAgewotICAgICAgICAgIHJldHVybiBhc3NpZ25fdG8oZixmdW5jdG9yLGZ1bmN0aW9uX29ial9yZWZfdGFnKCkpOwotICAgICAgICB9Ci0KLSAgICAgIHB1YmxpYzoKLSAgICAgICAgdnRhYmxlX2Jhc2UgYmFzZTsKLSAgICAgICAgaW52b2tlcl90eXBlIGludm9rZXI7Ci0gICAgICB9OwotICAgIH0gLy8gZW5kIG5hbWVzcGFjZSBmdW5jdGlvbgotICB9IC8vIGVuZCBuYW1lc3BhY2UgZGV0YWlsCi0KLSAgdGVtcGxhdGU8Ci0gICAgdHlwZW5hbWUgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQQotICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX1BBUk1TCi0gID4KLSAgY2xhc3MgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT04gOiBwdWJsaWMgZnVuY3Rpb25fYmFzZQotCi0jaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gMQotCi0gICAgLCBwdWJsaWMgc3RkOjp1bmFyeV9mdW5jdGlvbjxUMCxSPgotCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSAyCi0KLSAgICAsIHB1YmxpYyBzdGQ6OmJpbmFyeV9mdW5jdGlvbjxUMCxUMSxSPgotCi0jZW5kaWYKLQotICB7Ci0gIHB1YmxpYzoKLSNpZm5kZWYgTkROQk9PU1RfTk9fVk9JRF9SRVRVUk5TCi0gICAgdHlwZWRlZiBSICAgICAgICAgcmVzdWx0X3R5cGU7Ci0jZWxzZQotICAgIHR5cGVkZWYgIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmZ1bmN0aW9uOjpmdW5jdGlvbl9yZXR1cm5fdHlwZTxSPjo6dHlwZQotICAgICAgcmVzdWx0X3R5cGU7Ci0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVk9JRF9SRVRVUk5TCi0KLSAgcHJpdmF0ZToKLSAgICB0eXBlZGVmIG5kbmJvb3N0OjpkZXRhaWw6OmZ1bmN0aW9uOjpORE5CT09TVF9GVU5DVElPTl9WVEFCTEU8Ci0gICAgICAgICAgICAgIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfQVJHUz4KLSAgICAgIHZ0YWJsZV90eXBlOwotCi0gICAgdnRhYmxlX3R5cGUqIGdldF92dGFibGUoKSBjb25zdCB7Ci0gICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2dGFibGVfdHlwZSo+KAotICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxzdGQ6OnNpemVfdD4odnRhYmxlKSAmIH5zdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oMHgwMSkpOwotICAgIH0KLQotICAgIHN0cnVjdCBjbGVhcl90eXBlIHt9OwotCi0gIHB1YmxpYzoKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCBhcmdzID0gTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MpOwotCi0gICAgLy8gYWRkIHNpZ25hdHVyZSBmb3IgbmRuYm9vc3Q6OmxhbWJkYQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEFyZ3M+Ci0gICAgc3RydWN0IHNpZwotICAgIHsKLSAgICAgIHR5cGVkZWYgcmVzdWx0X3R5cGUgdHlwZTsKLSAgICB9OwotCi0jaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gMQotICAgIHR5cGVkZWYgVDAgYXJndW1lbnRfdHlwZTsKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDIKLSAgICB0eXBlZGVmIFQwIGZpcnN0X2FyZ3VtZW50X3R5cGU7Ci0gICAgdHlwZWRlZiBUMSBzZWNvbmRfYXJndW1lbnRfdHlwZTsKLSNlbmRpZgotCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgYXJpdHkgPSBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyk7Ci0gICAgTkROQk9PU1RfRlVOQ1RJT05fQVJHX1RZUEVTCi0KLSAgICB0eXBlZGVmIE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OIHNlbGZfdHlwZTsKLQotICAgIE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OKCkgOiBmdW5jdGlvbl9iYXNlKCkgeyB9Ci0KLSAgICAvLyBNU1ZDIGNob2tlcyBpZiB0aGUgZm9sbG93aW5nIHR3byBjb25zdHJ1Y3RvcnMgYXJlIGNvbGxhcHNlZCBpbnRvCi0gICAgLy8gb25lIHdpdGggYSBkZWZhdWx0IHBhcmFtZXRlci4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICAgIE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OKEZ1bmN0b3IgTkROQk9PU1RfRlVOQ1RJT05fVEFSR0VUX0ZJWChjb25zdCAmKSBmCi0jaWZuZGVmIE5ETkJPT1NUX05PX1NGSU5BRQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICx0eXBlbmFtZSBlbmFibGVfaWZfYzwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXNfaW50ZWdyYWw8RnVuY3Rvcj46OnZhbHVlKT46OnZhbHVlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ+Ojp0eXBlID0gMAotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1NGSU5BRQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOgotICAgICAgZnVuY3Rpb25fYmFzZSgpCi0gICAgewotICAgICAgdGhpcy0+YXNzaWduX3RvKGYpOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yLHR5cGVuYW1lIEFsbG9jYXRvcj4KLSAgICBORE5CT09TVF9GVU5DVElPTl9GVU5DVElPTihGdW5jdG9yIE5ETkJPT1NUX0ZVTkNUSU9OX1RBUkdFVF9GSVgoY29uc3QgJikgZiwgQWxsb2NhdG9yIGEKLSNpZm5kZWYgTkROQk9PU1RfTk9fU0ZJTkFFCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLHR5cGVuYW1lIGVuYWJsZV9pZl9jPAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpc19pbnRlZ3JhbDxGdW5jdG9yPjo6dmFsdWUpPjo6dmFsdWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludD46OnR5cGUgPSAwCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fU0ZJTkFFCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6Ci0gICAgICBmdW5jdGlvbl9iYXNlKCkKLSAgICB7Ci0gICAgICB0aGlzLT5hc3NpZ25fdG9fYShmLGEpOwotICAgIH0KLQotI2lmbmRlZiBORE5CT09TVF9OT19TRklOQUUKLSAgICBORE5CT09TVF9GVU5DVElPTl9GVU5DVElPTihjbGVhcl90eXBlKikgOiBmdW5jdGlvbl9iYXNlKCkgeyB9Ci0jZWxzZQotICAgIE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OKGludCB6ZXJvKSA6IGZ1bmN0aW9uX2Jhc2UoKQotICAgIHsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVCh6ZXJvID09IDApOwotICAgIH0KLSNlbmRpZgotCi0gICAgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT04oY29uc3QgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT04mIGYpIDogZnVuY3Rpb25fYmFzZSgpCi0gICAgewotICAgICAgdGhpcy0+YXNzaWduX3RvX293bihmKTsKLSAgICB9Ci0gICAgCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0gICAgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT04oTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT04mJiBmKSA6IGZ1bmN0aW9uX2Jhc2UoKQotICAgIHsKLSAgICAgIHRoaXMtPm1vdmVfYXNzaWduKGYpOwotICAgIH0KLSNlbmRpZgotICAgIAotICAgIH5ORE5CT09TVF9GVU5DVElPTl9GVU5DVElPTigpIHsgY2xlYXIoKTsgfQotCi0gICAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShORE5CT09TVF9GVU5DVElPTl9QQVJNUykgY29uc3QKLSAgICB7Ci0gICAgICBpZiAodGhpcy0+ZW1wdHkoKSkKLSAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihiYWRfZnVuY3Rpb25fY2FsbCgpKTsKLQotICAgICAgcmV0dXJuIGdldF92dGFibGUoKS0+aW52b2tlcgotICAgICAgICAgICAgICAgKHRoaXMtPmZ1bmN0b3IgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEgTkROQk9PU1RfRlVOQ1RJT05fQVJHUyk7Ci0gICAgfQotCi0gICAgLy8gVGhlIGRpc3RpbmN0aW9uIGJldHdlZW4gd2hlbiB0byB1c2UgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT04gYW5kCi0gICAgLy8gd2hlbiB0byB1c2Ugc2VsZl90eXBlIGlzIG9ibm94aW91cy4gTVNWQyBjYW5ub3QgaGFuZGxlIHNlbGZfdHlwZSBhcwotICAgIC8vIHRoZSByZXR1cm4gdHlwZSBvZiB0aGVzZSBhc3NpZ25tZW50IG9wZXJhdG9ycywgYnV0IEJvcmxhbmQgQysrIGNhbm5vdAotICAgIC8vIGhhbmRsZSBORE5CT09TVF9GVU5DVElPTl9GVU5DVElPTiBhcyB0aGUgdHlwZSBvZiB0aGUgdGVtcG9yYXJ5IHRvCi0gICAgLy8gY29uc3RydWN0LgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NGSU5BRQotICAgIHR5cGVuYW1lIGVuYWJsZV9pZl9jPAotICAgICAgICAgICAgICAgKG5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwKLSAgICAgICAgICAgICAgICAgKGlzX2ludGVncmFsPEZ1bmN0b3I+Ojp2YWx1ZSk+Ojp2YWx1ZSksCi0gICAgICAgICAgICAgICBORE5CT09TVF9GVU5DVElPTl9GVU5DVElPTiY+Ojp0eXBlCi0jZWxzZQotICAgIE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OJgotI2VuZGlmCi0gICAgb3BlcmF0b3I9KEZ1bmN0b3IgTkROQk9PU1RfRlVOQ1RJT05fVEFSR0VUX0ZJWChjb25zdCAmKSBmKQotICAgIHsKLSAgICAgIHRoaXMtPmNsZWFyKCk7Ci0gICAgICBORE5CT09TVF9UUlkgIHsKLSAgICAgICAgdGhpcy0+YXNzaWduX3RvKGYpOwotICAgICAgfSBORE5CT09TVF9DQVRDSCAoLi4uKSB7Ci0gICAgICAgIHZ0YWJsZSA9IDA7Ci0gICAgICAgIE5ETkJPT1NUX1JFVEhST1c7Ci0gICAgICB9Ci0gICAgICBORE5CT09TVF9DQVRDSF9FTkQKLSAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcix0eXBlbmFtZSBBbGxvY2F0b3I+Ci0gICAgdm9pZCBhc3NpZ24oRnVuY3RvciBORE5CT09TVF9GVU5DVElPTl9UQVJHRVRfRklYKGNvbnN0ICYpIGYsIEFsbG9jYXRvciBhKQotICAgIHsKLSAgICAgIHRoaXMtPmNsZWFyKCk7Ci0gICAgICBORE5CT09TVF9UUll7Ci0gICAgICAgIHRoaXMtPmFzc2lnbl90b19hKGYsYSk7Ci0gICAgICB9IE5ETkJPT1NUX0NBVENIICguLi4pIHsKLSAgICAgICAgdnRhYmxlID0gMDsKLSAgICAgICAgTkROQk9PU1RfUkVUSFJPVzsKLSAgICAgIH0KLSAgICAgIE5ETkJPT1NUX0NBVENIX0VORAotICAgIH0KLQotI2lmbmRlZiBORE5CT09TVF9OT19TRklOQUUKLSAgICBORE5CT09TVF9GVU5DVElPTl9GVU5DVElPTiYgb3BlcmF0b3I9KGNsZWFyX3R5cGUqKQotICAgIHsKLSAgICAgIHRoaXMtPmNsZWFyKCk7Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotI2Vsc2UKLSAgICBORE5CT09TVF9GVU5DVElPTl9GVU5DVElPTiYgb3BlcmF0b3I9KGludCB6ZXJvKQotICAgIHsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVCh6ZXJvID09IDApOwotICAgICAgdGhpcy0+Y2xlYXIoKTsKLSAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0jZW5kaWYKLQotICAgIC8vIEFzc2lnbm1lbnQgZnJvbSBhbm90aGVyIE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OCi0gICAgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT04mIG9wZXJhdG9yPShjb25zdCBORE5CT09TVF9GVU5DVElPTl9GVU5DVElPTiYgZikKLSAgICB7Ci0gICAgICBpZiAoJmYgPT0gdGhpcykKLSAgICAgICAgcmV0dXJuICp0aGlzOwotCi0gICAgICB0aGlzLT5jbGVhcigpOwotICAgICAgTkROQk9PU1RfVFJZIHsKLSAgICAgICAgdGhpcy0+YXNzaWduX3RvX293bihmKTsKLSAgICAgIH0gTkROQk9PU1RfQ0FUQ0ggKC4uLikgewotICAgICAgICB2dGFibGUgPSAwOwotICAgICAgICBORE5CT09TVF9SRVRIUk9XOwotICAgICAgfQotICAgICAgTkROQk9PU1RfQ0FUQ0hfRU5ECi0gICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotICAgIAotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotICAgIC8vIE1vdmUgYXNzaWdubWVudCBmcm9tIGFub3RoZXIgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT04KLSAgICBORE5CT09TVF9GVU5DVElPTl9GVU5DVElPTiYgb3BlcmF0b3I9KE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OJiYgZikKLSAgICB7Ci0gICAgICAKLSAgICAgIGlmICgmZiA9PSB0aGlzKQotICAgICAgICByZXR1cm4gKnRoaXM7Ci0KLSAgICAgIHRoaXMtPmNsZWFyKCk7Ci0gICAgICBORE5CT09TVF9UUlkgewotICAgICAgICB0aGlzLT5tb3ZlX2Fzc2lnbihmKTsKLSAgICAgIH0gTkROQk9PU1RfQ0FUQ0ggKC4uLikgewotICAgICAgICB2dGFibGUgPSAwOwotICAgICAgICBORE5CT09TVF9SRVRIUk9XOwotICAgICAgfQotICAgICAgTkROQk9PU1RfQ0FUQ0hfRU5ECi0gICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotI2VuZGlmCi0KLSAgICB2b2lkIHN3YXAoTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT04mIG90aGVyKQotICAgIHsKLSAgICAgIGlmICgmb3RoZXIgPT0gdGhpcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgICBORE5CT09TVF9GVU5DVElPTl9GVU5DVElPTiB0bXA7Ci0gICAgICB0bXAubW92ZV9hc3NpZ24oKnRoaXMpOwotICAgICAgdGhpcy0+bW92ZV9hc3NpZ24ob3RoZXIpOwotICAgICAgb3RoZXIubW92ZV9hc3NpZ24odG1wKTsKLSAgICB9Ci0KLSAgICAvLyBDbGVhciBvdXQgYSB0YXJnZXQsIGlmIHRoZXJlIGlzIG9uZQotICAgIHZvaWQgY2xlYXIoKQotICAgIHsKLSAgICAgIGlmICh2dGFibGUpIHsKLSAgICAgICAgaWYgKCF0aGlzLT5oYXNfdHJpdmlhbF9jb3B5X2FuZF9kZXN0cm95KCkpCi0gICAgICAgICAgZ2V0X3Z0YWJsZSgpLT5jbGVhcih0aGlzLT5mdW5jdG9yKTsKLSAgICAgICAgdnRhYmxlID0gMDsKLSAgICAgIH0KLSAgICB9Ci0KLSNpZiAoZGVmaW5lZCBfX1NVTlBST19DQykgJiYgKF9fU1VOUFJPX0NDIDw9IDB4NTMwKSAmJiAhKGRlZmluZWQgTkROQk9PU1RfTk9fQ09NUElMRVJfQ09ORklHKQotICAgIC8vIFN1biBDKysgNS4zIGNhbid0IGhhbmRsZSB0aGUgc2FmZV9ib29sIGlkaW9tLCBzbyBkb24ndCB1c2UgaXQKLSAgICBvcGVyYXRvciBib29sICgpIGNvbnN0IHsgcmV0dXJuICF0aGlzLT5lbXB0eSgpOyB9Ci0jZWxzZQotICBwcml2YXRlOgotICAgIHN0cnVjdCBkdW1teSB7Ci0gICAgICB2b2lkIG5vbm51bGwoKSB7fQotICAgIH07Ci0KLSAgICB0eXBlZGVmIHZvaWQgKGR1bW15Ojoqc2FmZV9ib29sKSgpOwotCi0gIHB1YmxpYzoKLSAgICBvcGVyYXRvciBzYWZlX2Jvb2wgKCkgY29uc3QKLSAgICAgIHsgcmV0dXJuICh0aGlzLT5lbXB0eSgpKT8gMCA6ICZkdW1teTo6bm9ubnVsbDsgfQotCi0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdAotICAgICAgeyByZXR1cm4gdGhpcy0+ZW1wdHkoKTsgfQotI2VuZGlmCi0KLSAgcHJpdmF0ZToKLSAgICB2b2lkIGFzc2lnbl90b19vd24oY29uc3QgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT04mIGYpCi0gICAgewotICAgICAgaWYgKCFmLmVtcHR5KCkpIHsKLSAgICAgICAgdGhpcy0+dnRhYmxlID0gZi52dGFibGU7Ci0gICAgICAgIGlmICh0aGlzLT5oYXNfdHJpdmlhbF9jb3B5X2FuZF9kZXN0cm95KCkpCi0gICAgICAgICAgdGhpcy0+ZnVuY3RvciA9IGYuZnVuY3RvcjsKLSAgICAgICAgZWxzZQotICAgICAgICAgIGdldF92dGFibGUoKS0+YmFzZS5tYW5hZ2VyKGYuZnVuY3RvciwgdGhpcy0+ZnVuY3RvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpmdW5jdGlvbjo6Y2xvbmVfZnVuY3Rvcl90YWcpOwotICAgICAgfQotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gICAgdm9pZCBhc3NpZ25fdG8oRnVuY3RvciBmKQotICAgIHsKLSAgICAgIHVzaW5nIGRldGFpbDo6ZnVuY3Rpb246OnZ0YWJsZV9iYXNlOwotCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6ZnVuY3Rpb246OmdldF9mdW5jdGlvbl90YWc8RnVuY3Rvcj46OnR5cGUgdGFnOwotICAgICAgdHlwZWRlZiBkZXRhaWw6OmZ1bmN0aW9uOjpORE5CT09TVF9GVU5DVElPTl9HRVRfSU5WT0tFUjx0YWc+IGdldF9pbnZva2VyOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBnZXRfaW52b2tlcjo6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGUgYXBwbHk8RnVuY3RvciwgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQSAKLSAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1M+Ci0gICAgICAgIGhhbmRsZXJfdHlwZTsKLSAgICAgIAotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBoYW5kbGVyX3R5cGU6Omludm9rZXJfdHlwZSBpbnZva2VyX3R5cGU7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGhhbmRsZXJfdHlwZTo6bWFuYWdlcl90eXBlIG1hbmFnZXJfdHlwZTsKLQotICAgICAgLy8gTm90ZTogaXQgaXMgZXh0cmVtZWx5IGltcG9ydGFudCB0aGF0IHRoaXMgaW5pdGlhbGl6YXRpb24gdXNlCi0gICAgICAvLyBzdGF0aWMgaW5pdGlhbGl6YXRpb24uIE90aGVyd2lzZSwgd2Ugd2lsbCBoYXZlIGEgcmFjZQotICAgICAgLy8gY29uZGl0aW9uIGhlcmUgaW4gbXVsdGktdGhyZWFkZWQgY29kZS4gU2VlCi0gICAgICAvLyBodHRwOi8vdGhyZWFkLmdtYW5lLm9yZy9nbWFuZS5jb21wLmxpYi5ib29zdC5kZXZlbC8xNjQ5MDIvLgotICAgICAgc3RhdGljIGNvbnN0IHZ0YWJsZV90eXBlIHN0b3JlZF92dGFibGUgPSAKLSAgICAgICAgeyB7ICZtYW5hZ2VyX3R5cGU6Om1hbmFnZSB9LCAmaW52b2tlcl90eXBlOjppbnZva2UgfTsKLQotICAgICAgaWYgKHN0b3JlZF92dGFibGUuYXNzaWduX3RvKGYsIGZ1bmN0b3IpKSB7Ci0gICAgICAgIHN0ZDo6c2l6ZV90IHZhbHVlID0gcmVpbnRlcnByZXRfY2FzdDxzdGQ6OnNpemVfdD4oJnN0b3JlZF92dGFibGUuYmFzZSk7Ci0gICAgICAgIGlmIChuZG5ib29zdDo6aGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3RvcjxGdW5jdG9yPjo6dmFsdWUgJiYKLSAgICAgICAgICAgIG5kbmJvb3N0OjpoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPEZ1bmN0b3I+Ojp2YWx1ZSAmJgotICAgICAgICAgICAgZGV0YWlsOjpmdW5jdGlvbjo6ZnVuY3Rpb25fYWxsb3dzX3NtYWxsX29iamVjdF9vcHRpbWl6YXRpb248RnVuY3Rvcj46OnZhbHVlKQotICAgICAgICAgIHZhbHVlIHw9IHN0YXRpY19jYXN0PHNpemVfdD4oMHgwMSk7Ci0gICAgICAgIHZ0YWJsZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8ZGV0YWlsOjpmdW5jdGlvbjo6dnRhYmxlX2Jhc2UgKj4odmFsdWUpOwotICAgICAgfSBlbHNlIAotICAgICAgICB2dGFibGUgPSAwOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3IsdHlwZW5hbWUgQWxsb2NhdG9yPgotICAgIHZvaWQgYXNzaWduX3RvX2EoRnVuY3RvciBmLEFsbG9jYXRvciBhKQotICAgIHsKLSAgICAgIHVzaW5nIGRldGFpbDo6ZnVuY3Rpb246OnZ0YWJsZV9iYXNlOwotCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6ZnVuY3Rpb246OmdldF9mdW5jdGlvbl90YWc8RnVuY3Rvcj46OnR5cGUgdGFnOwotICAgICAgdHlwZWRlZiBkZXRhaWw6OmZ1bmN0aW9uOjpORE5CT09TVF9GVU5DVElPTl9HRVRfSU5WT0tFUjx0YWc+IGdldF9pbnZva2VyOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBnZXRfaW52b2tlcjo6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGUgYXBwbHlfYTxGdW5jdG9yLCBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BIAotICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgQWxsb2NhdG9yPgotICAgICAgICBoYW5kbGVyX3R5cGU7Ci0gICAgICAKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaGFuZGxlcl90eXBlOjppbnZva2VyX3R5cGUgaW52b2tlcl90eXBlOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBoYW5kbGVyX3R5cGU6Om1hbmFnZXJfdHlwZSBtYW5hZ2VyX3R5cGU7Ci0KLSAgICAgIC8vIE5vdGU6IGl0IGlzIGV4dHJlbWVseSBpbXBvcnRhbnQgdGhhdCB0aGlzIGluaXRpYWxpemF0aW9uIHVzZQotICAgICAgLy8gc3RhdGljIGluaXRpYWxpemF0aW9uLiBPdGhlcndpc2UsIHdlIHdpbGwgaGF2ZSBhIHJhY2UKLSAgICAgIC8vIGNvbmRpdGlvbiBoZXJlIGluIG11bHRpLXRocmVhZGVkIGNvZGUuIFNlZQotICAgICAgLy8gaHR0cDovL3RocmVhZC5nbWFuZS5vcmcvZ21hbmUuY29tcC5saWIuYm9vc3QuZGV2ZWwvMTY0OTAyLy4KLSAgICAgIHN0YXRpYyBjb25zdCB2dGFibGVfdHlwZSBzdG9yZWRfdnRhYmxlID0KLSAgICAgICAgeyB7ICZtYW5hZ2VyX3R5cGU6Om1hbmFnZSB9LCAmaW52b2tlcl90eXBlOjppbnZva2UgfTsKLQotICAgICAgaWYgKHN0b3JlZF92dGFibGUuYXNzaWduX3RvX2EoZiwgZnVuY3RvciwgYSkpIHsgCi0gICAgICAgIHN0ZDo6c2l6ZV90IHZhbHVlID0gcmVpbnRlcnByZXRfY2FzdDxzdGQ6OnNpemVfdD4oJnN0b3JlZF92dGFibGUuYmFzZSk7Ci0gICAgICAgIGlmIChuZG5ib29zdDo6aGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3RvcjxGdW5jdG9yPjo6dmFsdWUgJiYKLSAgICAgICAgICAgIG5kbmJvb3N0OjpoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPEZ1bmN0b3I+Ojp2YWx1ZSAmJgotICAgICAgICAgICAgZGV0YWlsOjpmdW5jdGlvbjo6ZnVuY3Rpb25fYWxsb3dzX3NtYWxsX29iamVjdF9vcHRpbWl6YXRpb248RnVuY3Rvcj46OnZhbHVlKQotICAgICAgICAgIHZhbHVlIHw9IHN0YXRpY19jYXN0PHN0ZDo6c2l6ZV90PigweDAxKTsKLSAgICAgICAgdnRhYmxlID0gcmVpbnRlcnByZXRfY2FzdDxkZXRhaWw6OmZ1bmN0aW9uOjp2dGFibGVfYmFzZSAqPih2YWx1ZSk7Ci0gICAgICB9IGVsc2UgCi0gICAgICAgIHZ0YWJsZSA9IDA7Ci0gICAgfQotCi0gICAgLy8gTW92ZXMgdGhlIHZhbHVlIGZyb20gdGhlIHNwZWNpZmllZCBhcmd1bWVudCB0byAqdGhpcy4gSWYgdGhlIGFyZ3VtZW50IAotICAgIC8vIGhhcyBpdHMgZnVuY3Rpb24gb2JqZWN0IGFsbG9jYXRlZCBvbiB0aGUgaGVhcCwgbW92ZV9hc3NpZ24gd2lsbCBwYXNzIAotICAgIC8vIGl0cyBidWZmZXIgdG8gKnRoaXMsIGFuZCBzZXQgdGhlIGFyZ3VtZW50J3MgYnVmZmVyIHBvaW50ZXIgdG8gTlVMTC4gCi0gICAgdm9pZCBtb3ZlX2Fzc2lnbihORE5CT09TVF9GVU5DVElPTl9GVU5DVElPTiYgZikgCi0gICAgeyAKLSAgICAgIGlmICgmZiA9PSB0aGlzKQotICAgICAgICByZXR1cm47Ci0KLSAgICAgIE5ETkJPT1NUX1RSWSB7Ci0gICAgICAgIGlmICghZi5lbXB0eSgpKSB7Ci0gICAgICAgICAgdGhpcy0+dnRhYmxlID0gZi52dGFibGU7Ci0gICAgICAgICAgaWYgKHRoaXMtPmhhc190cml2aWFsX2NvcHlfYW5kX2Rlc3Ryb3koKSkKLSAgICAgICAgICAgIHRoaXMtPmZ1bmN0b3IgPSBmLmZ1bmN0b3I7Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgZ2V0X3Z0YWJsZSgpLT5iYXNlLm1hbmFnZXIoZi5mdW5jdG9yLCB0aGlzLT5mdW5jdG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmZ1bmN0aW9uOjptb3ZlX2Z1bmN0b3JfdGFnKTsKLSAgICAgICAgICBmLnZ0YWJsZSA9IDA7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgY2xlYXIoKTsKLSAgICAgICAgfQotICAgICAgfSBORE5CT09TVF9DQVRDSCAoLi4uKSB7Ci0gICAgICAgIHZ0YWJsZSA9IDA7Ci0gICAgICAgIE5ETkJPT1NUX1JFVEhST1c7Ci0gICAgICB9Ci0gICAgICBORE5CT09TVF9DQVRDSF9FTkQKLSAgICB9Ci0gIH07Ci0KLSAgdGVtcGxhdGU8dHlwZW5hbWUgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQSBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9QQVJNUz4KLSAgaW5saW5lIHZvaWQgc3dhcChORE5CT09TVF9GVU5DVElPTl9GVU5DVElPTjwKLSAgICAgICAgICAgICAgICAgICAgIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1MKLSAgICAgICAgICAgICAgICAgICA+JiBmMSwKLSAgICAgICAgICAgICAgICAgICBORE5CT09TVF9GVU5DVElPTl9GVU5DVElPTjwKLSAgICAgICAgICAgICAgICAgICAgIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1MKLSAgICAgICAgICAgICAgICAgICA+JiBmMikKLSAgewotICAgIGYxLnN3YXAoZjIpOwotICB9Ci0KLS8vIFBvaXNvbiBjb21wYXJpc29ucyBiZXR3ZWVuIG5kbmJvb3N0OjpmdW5jdGlvbiBvYmplY3RzIG9mIHRoZSBzYW1lIHR5cGUuCi10ZW1wbGF0ZTx0eXBlbmFtZSBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX1BBUk1TPgotICB2b2lkIG9wZXJhdG9yPT0oY29uc3QgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT048Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfQVJHUz4mLAotICAgICAgICAgICAgICAgICAgY29uc3QgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT048Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfQVJHUz4mKTsKLXRlbXBsYXRlPHR5cGVuYW1lIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfUEFSTVM+Ci0gIHZvaWQgb3BlcmF0b3IhPShjb25zdCBORE5CT09TVF9GVU5DVElPTl9GVU5DVElPTjwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQQotICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9BUkdTPiYsCi0gICAgICAgICAgICAgICAgICBjb25zdCBORE5CT09TVF9GVU5DVElPTl9GVU5DVElPTjwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQQotICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9BUkdTPiYgKTsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0ZVTkNUSU9OX05PX0ZVTkNUSU9OX1RZUEVfU1lOVEFYKQotCi0jaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gMAotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTl9QQVJUSUFMX1NQRUMgUiAodm9pZCkKLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX1BBUlRJQUxfU1BFQyBSIChORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyxUKSkKLSNlbmRpZgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgICBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9QQVJNUz4KLWNsYXNzIGZ1bmN0aW9uPE5ETkJPT1NUX0ZVTkNUSU9OX1BBUlRJQUxfU1BFQz4KLSAgOiBwdWJsaWMgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT048UiBORE5CT09TVF9GVU5DVElPTl9DT01NQSBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9BUkdTPgotewotICB0eXBlZGVmIE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OPFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfQVJHUz4gYmFzZV90eXBlOwotICB0eXBlZGVmIGZ1bmN0aW9uIHNlbGZfdHlwZTsKLQotICBzdHJ1Y3QgY2xlYXJfdHlwZSB7fTsKLQotcHVibGljOgotCi0gIGZ1bmN0aW9uKCkgOiBiYXNlX3R5cGUoKSB7fQotCi0gIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gIGZ1bmN0aW9uKEZ1bmN0b3IgZgotI2lmbmRlZiBORE5CT09TVF9OT19TRklOQUUKLSAgICAgICAgICAgLHR5cGVuYW1lIGVuYWJsZV9pZl9jPAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIChpc19pbnRlZ3JhbDxGdW5jdG9yPjo6dmFsdWUpPjo6dmFsdWUpLAotICAgICAgICAgICAgICAgICAgICAgICBpbnQ+Ojp0eXBlID0gMAotI2VuZGlmCi0gICAgICAgICAgICkgOgotICAgIGJhc2VfdHlwZShmKQotICB7Ci0gIH0KLSAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcix0eXBlbmFtZSBBbGxvY2F0b3I+Ci0gIGZ1bmN0aW9uKEZ1bmN0b3IgZiwgQWxsb2NhdG9yIGEKLSNpZm5kZWYgTkROQk9PU1RfTk9fU0ZJTkFFCi0gICAgICAgICAgICx0eXBlbmFtZSBlbmFibGVfaWZfYzwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PAotICAgICAgICAgICAgICAgICAgICAgICAgICAoaXNfaW50ZWdyYWw8RnVuY3Rvcj46OnZhbHVlKT46OnZhbHVlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgaW50Pjo6dHlwZSA9IDAKLSNlbmRpZgotICAgICAgICAgICApIDoKLSAgICBiYXNlX3R5cGUoZixhKQotICB7Ci0gIH0KLQotI2lmbmRlZiBORE5CT09TVF9OT19TRklOQUUKLSAgZnVuY3Rpb24oY2xlYXJfdHlwZSopIDogYmFzZV90eXBlKCkge30KLSNlbmRpZgotCi0gIGZ1bmN0aW9uKGNvbnN0IHNlbGZfdHlwZSYgZikgOiBiYXNlX3R5cGUoc3RhdGljX2Nhc3Q8Y29uc3QgYmFzZV90eXBlJj4oZikpe30KLQotICBmdW5jdGlvbihjb25zdCBiYXNlX3R5cGUmIGYpIDogYmFzZV90eXBlKHN0YXRpY19jYXN0PGNvbnN0IGJhc2VfdHlwZSY+KGYpKXt9Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLSAgLy8gTW92ZSBjb25zdHJ1Y3RvcnMKLSAgZnVuY3Rpb24oc2VsZl90eXBlJiYgZik6IGJhc2VfdHlwZShzdGF0aWNfY2FzdDxiYXNlX3R5cGUmJj4oZikpe30KLSAgZnVuY3Rpb24oYmFzZV90eXBlJiYgZik6IGJhc2VfdHlwZShzdGF0aWNfY2FzdDxiYXNlX3R5cGUmJj4oZikpe30KLSNlbmRpZgotICAKLSAgc2VsZl90eXBlJiBvcGVyYXRvcj0oY29uc3Qgc2VsZl90eXBlJiBmKQotICB7Ci0gICAgc2VsZl90eXBlKGYpLnN3YXAoKnRoaXMpOwotICAgIHJldHVybiAqdGhpczsKLSAgfQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0gIHNlbGZfdHlwZSYgb3BlcmF0b3I9KHNlbGZfdHlwZSYmIGYpCi0gIHsKLSAgICBzZWxmX3R5cGUoc3RhdGljX2Nhc3Q8c2VsZl90eXBlJiY+KGYpKS5zd2FwKCp0aGlzKTsKLSAgICByZXR1cm4gKnRoaXM7Ci0gIH0KLSNlbmRpZiAgCi0KLSAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSNpZm5kZWYgTkROQk9PU1RfTk9fU0ZJTkFFCi0gIHR5cGVuYW1lIGVuYWJsZV9pZl9jPAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgKGlzX2ludGVncmFsPEZ1bmN0b3I+Ojp2YWx1ZSk+Ojp2YWx1ZSksCi0gICAgICAgICAgICAgICAgICAgICAgc2VsZl90eXBlJj46OnR5cGUKLSNlbHNlCi0gIHNlbGZfdHlwZSYKLSNlbmRpZgotICBvcGVyYXRvcj0oRnVuY3RvciBmKQotICB7Ci0gICAgc2VsZl90eXBlKGYpLnN3YXAoKnRoaXMpOwotICAgIHJldHVybiAqdGhpczsKLSAgfQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1NGSU5BRQotICBzZWxmX3R5cGUmIG9wZXJhdG9yPShjbGVhcl90eXBlKikKLSAgewotICAgIHRoaXMtPmNsZWFyKCk7Ci0gICAgcmV0dXJuICp0aGlzOwotICB9Ci0jZW5kaWYKLQotICBzZWxmX3R5cGUmIG9wZXJhdG9yPShjb25zdCBiYXNlX3R5cGUmIGYpCi0gIHsKLSAgICBzZWxmX3R5cGUoZikuc3dhcCgqdGhpcyk7Ci0gICAgcmV0dXJuICp0aGlzOwotICB9Ci0gIAotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotICBzZWxmX3R5cGUmIG9wZXJhdG9yPShiYXNlX3R5cGUmJiBmKQotICB7Ci0gICAgc2VsZl90eXBlKHN0YXRpY19jYXN0PGJhc2VfdHlwZSYmPihmKSkuc3dhcCgqdGhpcyk7Ci0gICAgcmV0dXJuICp0aGlzOwotICB9Ci0jZW5kaWYgCi19OwotCi0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fUEFSVElBTF9TUEVDCi0jZW5kaWYgLy8gaGF2ZSBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uCi0KLX0gLy8gZW5kIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vLyBDbGVhbnVwIGFmdGVyIG91cnNlbHZlcy4uLgotI3VuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OX1ZUQUJMRQotI3VuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT04KLSN1bmRlZiBORE5CT09TVF9GVU5DVElPTl9GVU5DVElPTl9JTlZPS0VSCi0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fVk9JRF9GVU5DVElPTl9JTlZPS0VSCi0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT05fT0JKX0lOVk9LRVIKLSN1bmRlZiBORE5CT09TVF9GVU5DVElPTl9WT0lEX0ZVTkNUSU9OX09CSl9JTlZPS0VSCi0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT05fUkVGX0lOVk9LRVIKLSN1bmRlZiBORE5CT09TVF9GVU5DVElPTl9WT0lEX0ZVTkNUSU9OX1JFRl9JTlZPS0VSCi0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fTUVNQkVSX0lOVk9LRVIKLSN1bmRlZiBORE5CT09TVF9GVU5DVElPTl9WT0lEX01FTUJFUl9JTlZPS0VSCi0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fR0VUX0ZVTkNUSU9OX0lOVk9LRVIKLSN1bmRlZiBORE5CT09TVF9GVU5DVElPTl9HRVRfRlVOQ1RJT05fT0JKX0lOVk9LRVIKLSN1bmRlZiBORE5CT09TVF9GVU5DVElPTl9HRVRfRlVOQ1RJT05fUkVGX0lOVk9LRVIKLSN1bmRlZiBORE5CT09TVF9GVU5DVElPTl9HRVRfTUVNX0ZVTkNUSU9OX0lOVk9LRVIKLSN1bmRlZiBORE5CT09TVF9GVU5DVElPTl9HRVRfSU5WT0tFUgotI3VuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX1BBUk1TCi0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfQVJHUwotI3VuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OX1BBUk1TCi0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fUEFSTQotI3VuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OX0FSR1MKLSN1bmRlZiBORE5CT09TVF9GVU5DVElPTl9BUkdfVFlQRQotI3VuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OX0FSR19UWVBFUwotI3VuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OX1ZPSURfUkVUVVJOX1RZUEUKLSN1bmRlZiBORE5CT09TVF9GVU5DVElPTl9SRVRVUk4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSMgICBwcmFnbWEgd2FybmluZyggcG9wICkKLSNlbmRpZiAgICAgICAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdHlwZW9mLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdHlwZW9mLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2RjMDc0NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3R5cGVvZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vLyBCb29zdC5GdW5jdGlvbiBsaWJyYXJ5IC0gVHlwZW9mIHN1cHBvcnQKLS8vICBDb3B5cmlnaHQgKEMpIERvdWdsYXMgR3JlZ29yIDIwMDgKLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdAotLy8gIFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnCi0jaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OX1RZUEVPRl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fVFlQRU9GX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL3R5cGVvZi5ocHA+Ci0KLSNpbmNsdWRlIE5ETkJPT1NUX1RZUEVPRl9JTkNSRU1FTlRfUkVHSVNUUkFUSU9OX0dST1VQKCkKLQotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEUobmRuYm9vc3Q6OmJhZF9mdW5jdGlvbl9jYWxsKQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfRlVOQ1RJT05fTk9fRlVOQ1RJT05fVFlQRV9TWU5UQVgpCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVEVNUExBVEUobmRuYm9vc3Q6OmZ1bmN0aW9uLCAodHlwZW5hbWUpKQotI2VuZGlmCi0KLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9URU1QTEFURShuZG5ib29zdDo6ZnVuY3Rpb24wLCAodHlwZW5hbWUpKQotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RFTVBMQVRFKG5kbmJvb3N0OjpmdW5jdGlvbjEsICh0eXBlbmFtZSkodHlwZW5hbWUpKQotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RFTVBMQVRFKG5kbmJvb3N0OjpmdW5jdGlvbjIsICh0eXBlbmFtZSkodHlwZW5hbWUpKHR5cGVuYW1lKSkKLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9URU1QTEFURShuZG5ib29zdDo6ZnVuY3Rpb24zLCAKLSAgKHR5cGVuYW1lKSh0eXBlbmFtZSkodHlwZW5hbWUpKHR5cGVuYW1lKSkKLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9URU1QTEFURShuZG5ib29zdDo6ZnVuY3Rpb240LCAKLSAgKHR5cGVuYW1lKSh0eXBlbmFtZSkodHlwZW5hbWUpKHR5cGVuYW1lKSh0eXBlbmFtZSkpCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVEVNUExBVEUobmRuYm9vc3Q6OmZ1bmN0aW9uNSwgCi0gICh0eXBlbmFtZSkodHlwZW5hbWUpKHR5cGVuYW1lKSh0eXBlbmFtZSkodHlwZW5hbWUpKHR5cGVuYW1lKSkKLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9URU1QTEFURShuZG5ib29zdDo6ZnVuY3Rpb242LCAKLSAgKHR5cGVuYW1lKSh0eXBlbmFtZSkodHlwZW5hbWUpKHR5cGVuYW1lKSh0eXBlbmFtZSkodHlwZW5hbWUpKHR5cGVuYW1lKSkKLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9URU1QTEFURShuZG5ib29zdDo6ZnVuY3Rpb243LCAKLSAgKHR5cGVuYW1lKSh0eXBlbmFtZSkodHlwZW5hbWUpKHR5cGVuYW1lKSh0eXBlbmFtZSkodHlwZW5hbWUpKHR5cGVuYW1lKQotICAodHlwZW5hbWUpKQotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RFTVBMQVRFKG5kbmJvb3N0OjpmdW5jdGlvbjgsIAotICAodHlwZW5hbWUpKHR5cGVuYW1lKSh0eXBlbmFtZSkodHlwZW5hbWUpKHR5cGVuYW1lKSh0eXBlbmFtZSkodHlwZW5hbWUpCi0gICh0eXBlbmFtZSkodHlwZW5hbWUpKQotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RFTVBMQVRFKG5kbmJvb3N0OjpmdW5jdGlvbjksIAotICAodHlwZW5hbWUpKHR5cGVuYW1lKSh0eXBlbmFtZSkodHlwZW5hbWUpKHR5cGVuYW1lKSh0eXBlbmFtZSkodHlwZW5hbWUpCi0gICh0eXBlbmFtZSkodHlwZW5hbWUpKHR5cGVuYW1lKSkKLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9URU1QTEFURShuZG5ib29zdDo6ZnVuY3Rpb24xMCwgCi0gICh0eXBlbmFtZSkodHlwZW5hbWUpKHR5cGVuYW1lKSh0eXBlbmFtZSkodHlwZW5hbWUpKHR5cGVuYW1lKSh0eXBlbmFtZSkKLSAgKHR5cGVuYW1lKSh0eXBlbmFtZSkodHlwZW5hbWUpKHR5cGVuYW1lKSkKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9nZW5fZnVuY3Rpb25fTi5wbCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZ2VuX2Z1bmN0aW9uX04ucGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzZjQ0MDEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9nZW5fZnVuY3Rpb25fTi5wbAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLSMhL3Vzci9iaW4vcGVybCAtdwotIwotIyBCb29zdC5GdW5jdGlvbiBsaWJyYXJ5Ci0jCi0jIENvcHlyaWdodCBEb3VnbGFzIEdyZWdvciAyMDAxLTIwMDMuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotIyBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotIyAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIwotIyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnCi11c2UgRW5nbGlzaDsKLQotaWYgKCQjQVJHViA8IDApIHsKLSAgcHJpbnQgIlVzYWdlOiBwZXJsIGdlbl9mdW5jdGlvbl9OIDxudW1iZXIgb2YgYXJndW1lbnRzPlxuIjsKLSAgZXhpdDsKLX0KLQotCi0kdG90YWxOdW1BcmdzID0gJEFSR1ZbMF07Ci1mb3IgKCRudW1BcmdzID0gMDsgJG51bUFyZ3MgPD0gJHRvdGFsTnVtQXJnczsgKyskbnVtQXJncykgewotICBvcGVuIE9VVCwgIj5mdW5jdGlvbiRudW1BcmdzLmhwcCI7Ci0gIHByaW50IE9VVCAiI2RlZmluZSBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyAkbnVtQXJnc1xuIjsKLSAgcHJpbnQgT1VUICIjaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZGV0YWlsL21heWJlX2luY2x1ZGUuaHBwPlxuIjsKLSAgcHJpbnQgT1VUICIjdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1NcbiI7Ci0gIGNsb3NlIE9VVDsKLX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fZXF1YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl9lcXVhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzZTYxMmMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl9lcXVhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0vLyAgQ29weXJpZ2h0IERvdWdsYXMgR3JlZ29yIDIwMDQuCi0vLyAgQ29weXJpZ2h0IDIwMDUgUGV0ZXIgRGltb3YKLQotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0bwotLy8gIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnCi0jaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OX0VRVUFMX0hQUAotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTl9FUVVBTF9IUFAKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRiwgdHlwZW5hbWUgRz4KLSAgYm9vbCBmdW5jdGlvbl9lcXVhbF9pbXBsKGNvbnN0IEYmIGYsIGNvbnN0IEcmIGcsIGxvbmcpCi0gIHsgcmV0dXJuIGYgPT0gZzsgfQotCi0vLyBmdW5jdGlvbl9lcXVhbF9pbXBsIG5lZWRzIHRvIGJlIHVucXVhbGlmaWVkIHRvIHBpY2sKLS8vIHVzZXIgb3ZlcmxvYWRzIG9uIHR3by1waGFzZSBjb21waWxlcnMKLQotdGVtcGxhdGU8dHlwZW5hbWUgRiwgdHlwZW5hbWUgRz4KLSAgYm9vbCBmdW5jdGlvbl9lcXVhbChjb25zdCBGJiBmLCBjb25zdCBHJiBnKQotICB7IHJldHVybiBmdW5jdGlvbl9lcXVhbF9pbXBsKGYsIGcsIDApOyB9Ci0KLX0gLy8gZW5kIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfRlVOQ1RJT05fRVFVQUxfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2NvbXBvbmVudHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9jb21wb25lbnRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmZlYzEwNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2NvbXBvbmVudHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDMxICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBORE5CT09TVF9GVF9DT01QT05FTlRTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9GVF9DT01QT05FTlRTX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8Y3N0ZGRlZj4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90ZW1wbGF0ZV9hcml0eV9zcGVjLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ludGVncmFsX2NvbnN0YW50LmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ludGVncmFsX2MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMC5ocHA+Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPD0gMHg1NjUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcD4KLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9pZGVudGl0eS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2JpdGFuZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IxMC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Zyb250LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYmVnaW4uaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hZHZhbmNlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaXRlcmF0b3JfcmFuZ2UuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9qb2ludF92aWV3LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvZXF1YWxfdG8uaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9jb3B5LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvZnJvbnRfaW5zZXJ0ZXIuaHBwPgotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXIuaHBwPgotI2VuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfRlRfTk9fQ1ZfRlVOQ19TVVBQT1JUCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3JlbW92ZS5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2NvbmZpZy9jb25maWcuaHBwPgotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSMgICBpZiAgIE5ETkJPT1NUX0ZUX01BWF9BUklUWSA8IDEwCi0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjEwLmhwcD4KLSMgICBlbGlmIE5ETkJPT1NUX0ZUX01BWF9BUklUWSA8IDIwCi0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjIwLmhwcD4KLSMgICBlbGlmIE5ETkJPT1NUX0ZUX01BWF9BUklUWSA8IDMwCi0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjMwLmhwcD4KLSMgICBlbGlmIE5ETkJPT1NUX0ZUX01BWF9BUklUWSA8IDQwCi0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjQwLmhwcD4KLSMgICBlbGlmIE5ETkJPT1NUX0ZUX01BWF9BUklUWSA8IDUwCi0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjUwLmhwcD4KLSMgICBlbmRpZgotI2Vsc2UKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NpZmllci5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc190cmFuc2Zvcm0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL3Byb3BlcnR5X3RhZ3MuaHBwPgotCi0vLyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgCi17IAotICBuYW1lc3BhY2UgZnVuY3Rpb25fdHlwZXMgCi0gIHsKLQotICAgIHVzaW5nIG1wbDo6cGxhY2Vob2xkZXJzOjpfOwotCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIENsYXNzVHlwZVRyYW5zZm9ybSA9IGFkZF9yZWZlcmVuY2U8Xz4gPiAKLSAgICBzdHJ1Y3QgY29tcG9uZW50czsKLQotICAgIG5hbWVzcGFjZSBkZXRhaWwgCi0gICAgewotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgTD4gc3RydWN0IGNvbXBvbmVudHNfaW1wbDsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPD0gMHg1NjUpCi0gICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBPcmlnVCwgdHlwZW5hbWUgTD4gc3RydWN0IGNvbXBvbmVudHNfYmNjOwotI2VuZGlmCi0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQ2xhc3NUeXBlVHJhbnNmb3JtPiAKLSAgICBzdHJ1Y3QgY29tcG9uZW50cwotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPD0gMHg1NjUpCi0gICAgICA6IGRldGFpbDo6Y29tcG9uZW50c19pbXBsPFQsIENsYXNzVHlwZVRyYW5zZm9ybT4KLSNlbHNlCi0gICAgICA6IGRldGFpbDo6Y29tcG9uZW50c19iY2M8dHlwZW5hbWUgcmVtb3ZlX2N2PFQ+Ojp0eXBlLFQsCi0gICAgICAgICAgICBDbGFzc1R5cGVUcmFuc2Zvcm0+Ci0jZW5kaWYKLSAgICB7IAotICAgICAgdHlwZWRlZiBjb21wb25lbnRzPFQsQ2xhc3NUeXBlVHJhbnNmb3JtPiB0eXBlOwotCi0gICAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsY29tcG9uZW50cywoVCxDbGFzc1R5cGVUcmFuc2Zvcm0pKQotICAgIH07Ci0KLS8vIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtCi0KLSAgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSAgICBzdHJ1Y3QgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnOyAKLQotICAgIHN0cnVjdCBjb21wb25lbnRzX25vbl9mdW5jX2Jhc2UKLSAgICB7Ci0gICAgICB0eXBlZGVmIG1wbDo6dmVjdG9yMDw+IHR5cGVzOwotICAgICAgdHlwZWRlZiB2b2lkIGZ1bmN0aW9uX2FyaXR5OwotCi0gICAgICB0eXBlZGVmIGRldGFpbDo6Y29uc3RhbnQ8MD4gYml0czsKLSAgICAgIHR5cGVkZWYgZGV0YWlsOjpjb25zdGFudDwwPiBtYXNrOwotCi0gICAgICB0eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlCi0gICAgPCB0eXBlbmFtZSBDb21wb25lbnRzCi0gICAgLCB0eXBlbmFtZSBJZlRhZ2dlZAotICAgICwgdHlwZW5hbWUgVGhlblRhZwotICAgICwgdHlwZW5hbWUgRGVmYXVsdEJhc2UgPSBjb21wb25lbnRzX25vbl9mdW5jX2Jhc2UKLSAgICA+Ci0gICAgc3RydWN0IHJldGFnZ2VkX2lmCi0gICAgICA6IG1wbDo6aWZfCi0gICAgICAgIDwgZGV0YWlsOjpyZXByZXNlbnRzX2ltcGw8Q29tcG9uZW50cywgSWZUYWdnZWQ+Ci0gICAgICAgICwgZGV0YWlsOjpjaGFuZ2VkX3RhZzxDb21wb25lbnRzLElmVGFnZ2VkLFRoZW5UYWc+Ci0gICAgICAgICwgRGVmYXVsdEJhc2UKLSAgICAgICAgPjo6dHlwZQotICAgIHsgfTsKLQotICAgIC8vIFdlIGRldGVjdCBwbGFpbiBmdW5jdGlvbiB0eXBlcyBhbmQgZnVuY3Rpb24gcmVmZXJlbmNlcyBhcyBmdW5jdGlvbiAKLSAgICAvLyBwb2ludGVycyBieSByZWN1cnNpdmUgaW5zdGFudGlhdGlvbiBvZiBjb21wb25lbnRzX2ltcGwuIAotICAgIC8vIFRoZSB0aGlyZCBzcGVjaWFsaXphdGlvbiBvZiBjb21wb25lbnRzX2ltcGwgbWFrZXMgc3VyZSB0aGUgcmVjdXJzaW9uIAotICAgIC8vIHRlcm1pbmF0ZXMgKHdoZW4gYWRkaW5nIHBvaW50ZXJzKS4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBMPgotICAgIHN0cnVjdCBjb21wb25lbnRzX2ltcGwKLSAgICAgIDogZGV0YWlsOjpyZXRhZ2dlZF9pZgotICAgICAgICA8IGRldGFpbDo6Y29tcG9uZW50c19pbXBsPFQqLEw+Ci0gICAgICAgICwgcG9pbnRlcl90YWcsIC8qIC0tPiAqLyBmdW5jdGlvbl90YWcgPgotICAgIHsgfTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBMPgotICAgIHN0cnVjdCBjb21wb25lbnRzX2ltcGw8VCYsIEw+Ci0gICAgICA6IGRldGFpbDo6cmV0YWdnZWRfaWYKLSAgICAgICAgPCBkZXRhaWw6OmNvbXBvbmVudHNfaW1wbDxUKixMPgotICAgICAgICAsIHBvaW50ZXJfdGFnLCAvKiAtLT4gKi8gcmVmZXJlbmNlX3RhZyA+Ci0gICAgeyB9OwotCi0jaWYgIU5ETkJPT1NUX0ZUX05PX0NWX0ZVTkNfU1VQUE9SVAotICAgIC8vIFJldHJ5IHRoZSB0eXBlIHdpdGggYSBtZW1iZXIgcG9pbnRlciBhdHRhY2hlZCB0byBkZXRlY3QgY3YgZnVuY3Rpb25zCi0gICAgY2xhc3MgYV9jbGFzczsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJhc2UsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEw+Ci0gICAgc3RydWN0IGN2X2Z1bmNfYmFzZQotICAgICAgOiBkZXRhaWw6OnJldGFnZ2VkX2lmPEJhc2UsbWVtYmVyX3BvaW50ZXJfdGFnLGZ1bmN0aW9uX3RhZz4KLSAgICB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICAgIG1wbDo6cmVtb3ZlCi0gICAgICAgICAgPCB0eXBlbmFtZSBCYXNlOjp0eXBlcwotICAgICAgICAgICwgdHlwZW5hbWUgZGV0YWlsOjpjbGFzc190cmFuc2Zvcm08YV9jbGFzcyxMPjo6dHlwZT46OnR5cGUKLSAgICAgIHR5cGVzOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBMPgotICAgIHN0cnVjdCBjb21wb25lbnRzX2ltcGw8VCosIEw+Ci0gICAgICA6IG1wbDo6aWZfCi0gICAgICAgIDwgZGV0YWlsOjpyZXByZXNlbnRzX2ltcGw8IGRldGFpbDo6Y29tcG9uZW50c19pbXBsPFQgYV9jbGFzczo6KiwgTD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgbWVtYmVyX3BvaW50ZXJfdGFnID4KLSAgICAgICAgLCBkZXRhaWw6OmN2X2Z1bmNfYmFzZTwgZGV0YWlsOjpjb21wb25lbnRzX2ltcGw8VCBhX2NsYXNzOjoqLCBMPiwgVCwgTD4KLSAgICAgICAgLCBjb21wb25lbnRzX25vbl9mdW5jX2Jhc2UKLSAgICAgICAgPjo6dHlwZQotICAgIHsgfTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEw+Ci0gICAgc3RydWN0IGNvbXBvbmVudHNfaW1wbDxUIGFfY2xhc3M6OiosIEw+Ci0gICAgICA6IGNvbXBvbmVudHNfbm9uX2Z1bmNfYmFzZQotICAgIHsgfTsKLSNlbHNlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgTD4KLSAgICBzdHJ1Y3QgY29tcG9uZW50c19pbXBsPFQqLCBMPgotICAgICAgOiBjb21wb25lbnRzX25vbl9mdW5jX2Jhc2UKLSAgICB7IH07IAotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBMPgotICAgIHN0cnVjdCBjb21wb25lbnRzX2ltcGw8VCogY29uc3QsIEw+IAotICAgICAgOiBjb21wb25lbnRzX2ltcGw8VCosTD4KLSAgICB7IH07Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBMPgotICAgIHN0cnVjdCBjb21wb25lbnRzX2ltcGw8VCogdm9sYXRpbGUsIEw+IAotICAgICAgOiBjb21wb25lbnRzX2ltcGw8VCosTD4KLSAgICB7IH07Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBMPgotICAgIHN0cnVjdCBjb21wb25lbnRzX2ltcGw8VCogY29uc3Qgdm9sYXRpbGUsIEw+IAotICAgICAgOiBjb21wb25lbnRzX2ltcGw8VCosTD4KLSAgICB7IH07Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBMPgotICAgIHN0cnVjdCBjb21wb25lbnRzX2ltcGw8VCBjb25zdCwgTD4gCi0gICAgICA6IGNvbXBvbmVudHNfaW1wbDxULEw+Ci0gICAgeyB9OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgTD4KLSAgICBzdHJ1Y3QgY29tcG9uZW50c19pbXBsPFQgdm9sYXRpbGUsIEw+IAotICAgICAgOiBjb21wb25lbnRzX2ltcGw8VCxMPgotICAgIHsgfTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEw+Ci0gICAgc3RydWN0IGNvbXBvbmVudHNfaW1wbDxUIGNvbnN0IHZvbGF0aWxlLCBMPiAKLSAgICAgIDogY29tcG9uZW50c19pbXBsPFQsTD4KLSAgICB7IH07Ci0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzIEM+Ci0gICAgc3RydWN0IG1lbWJlcl9vYmpfcHRyX3Jlc3VsdAotICAgIHsgdHlwZWRlZiBUICYgdHlwZTsgfTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzIEM+Ci0gICAgc3RydWN0IG1lbWJlcl9vYmpfcHRyX3Jlc3VsdDxULCBDIGNvbnN0PgotICAgIHsgdHlwZWRlZiBUIGNvbnN0ICYgdHlwZTsgfTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzIEM+Ci0gICAgc3RydWN0IG1lbWJlcl9vYmpfcHRyX3Jlc3VsdDxULCBDIHZvbGF0aWxlPgotICAgIHsgdHlwZWRlZiBUIHZvbGF0aWxlICYgdHlwZTsgfTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzIEM+Ci0gICAgc3RydWN0IG1lbWJlcl9vYmpfcHRyX3Jlc3VsdDxULCBDIGNvbnN0IHZvbGF0aWxlPgotICAgIHsgdHlwZWRlZiBUIGNvbnN0IHZvbGF0aWxlICYgdHlwZTsgfTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzIEM+Ci0gICAgc3RydWN0IG1lbWJlcl9vYmpfcHRyX3Jlc3VsdDxUICYsIEM+Ci0gICAgeyB0eXBlZGVmIFQgJiB0eXBlOyB9OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgY2xhc3MgQz4KLSAgICBzdHJ1Y3QgbWVtYmVyX29ial9wdHJfcmVzdWx0PFQgJiwgQyBjb25zdD4KLSAgICB7IHR5cGVkZWYgVCAmIHR5cGU7IH07Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcyBDPgotICAgIHN0cnVjdCBtZW1iZXJfb2JqX3B0cl9yZXN1bHQ8VCAmLCBDIHZvbGF0aWxlPgotICAgIHsgdHlwZWRlZiBUICYgdHlwZTsgfTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzIEM+Ci0gICAgc3RydWN0IG1lbWJlcl9vYmpfcHRyX3Jlc3VsdDxUICYsIEMgY29uc3Qgdm9sYXRpbGU+Ci0gICAgeyB0eXBlZGVmIFQgJiB0eXBlOyB9OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgY2xhc3MgQywgdHlwZW5hbWUgTD4KLSAgICBzdHJ1Y3QgbWVtYmVyX29ial9wdHJfY29tcG9uZW50cwotICAgICAgOiBtZW1iZXJfb2JqZWN0X3BvaW50ZXJfYmFzZQotICAgIHsKLSAgICAgIHR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8VCBDOjoqLCBMPiB0eXBlOwotICAgICAgdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotCi0gICAgICB0eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwxPiBmdW5jdGlvbl9hcml0eTsKLQotICAgICAgdHlwZWRlZiBtcGw6OnZlY3RvcjI8IHR5cGVuYW1lIGRldGFpbDo6bWVtYmVyX29ial9wdHJfcmVzdWx0PFQsQz46OnR5cGUsCi0gICAgICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjbGFzc190cmFuc2Zvcm08QyxMPjo6dHlwZSA+IHR5cGVzOwotICAgIH07Ci0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDw9IDB4NTY1KQotIyAgIGRlZmluZSBORE5CT09TVF9GVF92YXJpYXRpb25zIE5ETkJPT1NUX0ZUX3BvaW50ZXJ8TkROQk9PU1RfRlRfbWVtYmVyX3BvaW50ZXIKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzIEMsIHR5cGVuYW1lIEw+Ci0gICAgc3RydWN0IGNvbXBvbmVudHNfaW1wbDxUIEM6OiosIEw+Ci0gICAgICA6IG1lbWJlcl9vYmpfcHRyX2NvbXBvbmVudHM8VCxDLEw+Ci0gICAgeyB9OwotCi0jZWxzZSAgCi0jICAgZGVmaW5lIE5ETkJPT1NUX0ZUX3ZhcmlhdGlvbnMgTkROQk9PU1RfRlRfcG9pbnRlcgotCi0gICAgLy8gVGhpcyB3b3JrYXJvdW5kIHJlbW92ZXMgdGhlIG1lbWJlciBwb2ludGVyIGZyb20gdGhlIHR5cGUgdG8gYWxsb3cgCi0gICAgLy8gZGV0ZWN0aW9uIG9mIG1lbWJlciBmdW5jdGlvbiBwb2ludGVycyB3aXRoIEJDQy4gCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQywgdHlwZW5hbWUgTD4KLSAgICBzdHJ1Y3QgY29tcG9uZW50c19pbXBsPFQgQzo6KiwgTD4KLSAgICAgIDogZGV0YWlsOjpyZXRhZ2dlZF9pZgotICAgICAgICA8IGRldGFpbDo6Y29tcG9uZW50c19pbXBsPHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfY3Y8VD46OnR5cGUgKiwgTD4KLSAgICAgICAgLCBwb2ludGVyX3RhZywgLyogLS0+ICovIG1lbWJlcl9mdW5jdGlvbl9wb2ludGVyX3RhZwotICAgICAgICAsIG1lbWJlcl9vYmpfcHRyX2NvbXBvbmVudHM8VCxDLEw+ID4KLSAgICB7IH07Ci0KLSAgICAvLyBCQ0MgbGV0cyB1cyB0ZXN0IHRoZSBjdi1xdWFsaWZpY2F0aW9uIG9mIGEgZnVuY3Rpb24gdHlwZSBieSB0ZW1wbGF0ZSAKLSAgICAvLyBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uIC0gc28gd2UgdXNlIHRoaXMgYnVnIGZlYXR1cmUgdG8gZmluZCBvdXQgdGhlIAotICAgIC8vIG1lbWJlciBmdW5jdGlvbidzIGN2LXF1YWxpZmljYXRpb24gKHVuZm9ydHVuYXRlbHkgdGhlcmUgYXJlIHNvbWUgCi0gICAgLy8gaW52aXNpYmxlIG1vZGlmaWVycyB0aGF0IGltcG9zZSBzb21lIGxpbWl0YXRpb25zIG9uIHRoZXNlIHR5cGVzIGV2ZW4gaWYKLSAgICAvLyB3ZSByZW1vdmUgdGhlIHF1YWxpZmllcnMsIFNvIHdlIGNhbm5vdCBleHBsb2l0IHRoZSBzYW1lIGJ1ZyB0byBtYWtlIHRoZSAKLSAgICAvLyBsaWJyYXJ5IHdvcmsgZm9yIGN2LXF1YWxpZmllZCBmdW5jdGlvbiB0eXBlcykuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGVuY29kZV9jdgotICAgIHsgdHlwZWRlZiBjaGFyICgmIHR5cGUpWzFdOyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gMSk7IH07Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGVuY29kZV9jdjxUIGNvbnN0ICo+Ci0gICAgeyB0eXBlZGVmIGNoYXIgKCYgdHlwZSlbMl07IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSAyKTsgfTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgZW5jb2RlX2N2PFQgdm9sYXRpbGUgKj4KLSAgICB7IHR5cGVkZWYgY2hhciAoJiB0eXBlKVszXTsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9IDMpOyB9OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBlbmNvZGVfY3Y8VCBjb25zdCB2b2xhdGlsZSAqPiAKLSAgICB7IHR5cGVkZWYgY2hhciAoJiB0eXBlKVs0XTsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9IDQpOyB9OwotCi0gICAgLy8gRm9yIG1lbWJlciBmdW5jdGlvbiBwb2ludGVycyB3ZSBoYXZlIHRvIHVzZSBhIGZ1bmN0aW9uIHRlbXBsYXRlIChwYXJ0aWFsCi0gICAgLy8gdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24gZm9yIGEgbWVtYmVyIHBvaW50ZXIgZHJvcHMgdGhlIGN2IHF1YWxpZmljYXRpb24gCi0gICAgLy8gb2YgdGhlIGZ1bmN0aW9uIHR5cGUpLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEM+Ci0gICAgdHlwZW5hbWUgZW5jb2RlX2N2PFQgKj46OnR5cGUgbWZwX2N2X3Rlc3RlcihUIEM6OiopOwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGVuY29kZV9tZnBfY3YKLSAgICB7IAotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9IAotICAgICAgICAgIHNpemVvZihkZXRhaWw6Om1mcF9jdl90ZXN0ZXIoKFQpMEwpKSk7IAotICAgIH07Ci0KLSAgICAvLyBBc3NvY2lhdGUgYml0cyB3aXRoIHRoZSBDViBjb2RlcyBhYm92ZS4KLSAgICB0ZW1wbGF0ZTxzdGQ6OnNpemVfdD4gc3RydWN0IGN2X3RhZ19tZnBfaW1wbDsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBjdl90YWdfbWZwCi0gICAgICA6IGRldGFpbDo6Y3ZfdGFnX21mcF9pbXBsCi0gICAgICAgIDwgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6ZW5jb2RlX21mcF9jdjxUPjo6dmFsdWUgPgotICAgIHsgfTsKLQotICAgIHRlbXBsYXRlPD4gc3RydWN0IGN2X3RhZ19tZnBfaW1wbDwxPiA6IG5vbl9jdiAgICAgICAgICAgICAgeyB9OwotICAgIHRlbXBsYXRlPD4gc3RydWN0IGN2X3RhZ19tZnBfaW1wbDwyPiA6IGNvbnN0X25vbl92b2xhdGlsZSAgeyB9OwotICAgIHRlbXBsYXRlPD4gc3RydWN0IGN2X3RhZ19tZnBfaW1wbDwzPiA6IHZvbGF0aWxlX25vbl9jb25zdCAgeyB9OwotICAgIHRlbXBsYXRlPD4gc3RydWN0IGN2X3RhZ19tZnBfaW1wbDw0PiA6IGN2X3F1YWxpZmllZCAgICAgICAgeyB9OwotCi0gICAgLy8gTWV0YWZ1bmN0aW9uIHRvIGRlY29kZSB0aGUgY3YgY29kZSBhbmQgYXBwbHkgaXQgdG8gYSB0eXBlLgotICAgIC8vIFdlIGFkZCBhIHBvaW50ZXIsIGJlY2F1c2Ugb3RoZXJ3aXNlIGN2LXF1YWxpZmllcnMgd29uJ3Qgc3RpY2sgKGFub3RoZXIgYnVnKS4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBDVj4gc3RydWN0IGRlY29kZV9jdjsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBkZWNvZGVfY3Y8VCwxPiA6IG1wbDo6aWRlbnRpdHk8VCAqPiAgICAgICAgICB7fTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgZGVjb2RlX2N2PFQsMj4gOiBtcGw6OmlkZW50aXR5PFQgY29uc3QgKj4gICAge307Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGRlY29kZV9jdjxULDM+IDogbXBsOjppZGVudGl0eTxUIHZvbGF0aWxlICo+IHt9OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBkZWNvZGVfY3Y8VCw0PiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBtcGw6OmlkZW50aXR5PFQgY29uc3Qgdm9sYXRpbGUgKj4ge307Ci0KLSAgICAvLyBUaGUgY2xhc3MgdHlwZSB0cmFuc2Zvcm1hdGlvbiBjb21lcyBhZnRlciBhZGRpbmcgY3YtcXVhbGlmaWVycy4gV2UgaGF2ZQotICAgIC8vIHdyYXAgaXQgdG8gcmVtb3ZlIHRoZSBwb2ludGVyIGFkZGVkIGluIGRlY29kZV9jdl9pbXBsLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEw+IHN0cnVjdCBiY2NfY2xhc3NfdHJhbnNmb3JtX2ltcGw7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgTD4gc3RydWN0IGJjY19jbGFzc190cmFuc2Zvcm1faW1wbDxUICosIEw+Ci0gICAgICA6IGNsYXNzX3RyYW5zZm9ybTxULEw+IAotICAgIHsgfTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEQsIHR5cGVuYW1lIEw+IHN0cnVjdCBiY2NfY2xhc3NfdHJhbnNmb3JtIAotICAgICAgOiBiY2NfY2xhc3NfdHJhbnNmb3JtX2ltcGwKLSAgICAgICAgPCB0eXBlbmFtZSBkZWNvZGVfY3YKLSAgICAgICAgICA8IFQKLSAgICAgICAgICAsIDo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OmVuY29kZV9tZnBfY3Y8RD46OnZhbHVlIAotICAgICAgICAgID46OnR5cGUKLSAgICAgICAgLCBMCi0gICAgICAgID4gCi0gICAgeyB9OwotCi0gICAgLy8gQWZ0ZXIgZXh0cmFjdGluZyB0aGUgbWVtYmVyIHBvaW50ZWUgZnJvbSB0aGUgdHlwZSB0aGUgY2xhc3MgdHlwZSBpcyBzdGlsbAotICAgIC8vIGluIHRoZSB0eXBlIChzb21ld2hlcmUgLS0geW91IHdvbid0IHNlZSB3aXRoIFJUVEksIHRoYXQgaXMpIGFuZCB0aGF0IHR5cGUKLSAgICAvLyBpcyBmbGFnZ2VkIHVudXNhYmxlIGFuZCAqbm90KiBpZGVudGljYWwgdG8gdGhlIG5vbm1lbWJlciBmdW5jdGlvbiB0eXBlLgotICAgIC8vIFdlIGNhbiwgaG93ZXZlciwgZGVjb21wb3NlIHRoaXMgdHlwZSB2aWEgY29tcG9uZW50c19pbXBsIGJ1dCBzdXJwcmlzaW5nbHkKLSAgICAvLyBhIHBvaW50ZXIgdG8gdGhlIGNvbnN0IHF1YWxpZmllZCBjbGFzcyB0eXBlIHBvcHMgdXAgYWdhaW4gYXMgdGhlIGZpcnN0IAotICAgIC8vIHBhcmFtZXRlciB0eXBlLiAKLSAgICAvLyBXZSBoYXZlIHRvIHJlcGxhY2UgdGhpcyB0eXBlIHdpdGggdGhlIHByb3Blcmx5IGN2LXF1YWxpZmllZCBhbmQgCi0gICAgLy8gdHJhbnNmb3JtZWQgY2xhc3MgdHlwZSwgaW50ZWdyYXRlIHRoZSBjdiBxdWFsaWZpY2F0aW9uIGludG8gdGhlIGJpdHMuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQmFzZSwgdHlwZW5hbWUgTUZQLCB0eXBlbmFtZSBPcmlnVCwgdHlwZW5hbWUgTD4KLSAgICBzdHJ1Y3QgbWZwX2NvbXBvbmVudHM7Ci0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJhc2UsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIE9yaWdULCB0eXBlbmFtZSBMPgotICAgIHN0cnVjdCBtZnBfY29tcG9uZW50czxCYXNlLFQgQzo6KixPcmlnVCxMPiAKLSAgICB7Ci0gICAgcHJpdmF0ZToKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpmcm9udDx0eXBlbmFtZSBCYXNlOjp0eXBlcz46OnR5cGUgcmVzdWx0X3R5cGU7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6YmNjX2NsYXNzX3RyYW5zZm9ybTxDLE9yaWdULEw+Ojp0eXBlIGNsYXNzX3R5cGU7Ci0KLSAgICAgIHR5cGVkZWYgbXBsOjp2ZWN0b3IyPHJlc3VsdF90eXBlLCBjbGFzc190eXBlPiByZXN1bHRfYW5kX2NsYXNzX3R5cGU7Ci0KLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgICAgIG1wbDo6YWR2YW5jZQotICAgICAgICA8IHR5cGVuYW1lIG1wbDo6YmVnaW48dHlwZW5hbWUgQmFzZTo6dHlwZXM+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbXBsOjppZl8KLSAgICAgICAgICA8IG1wbDo6ZXF1YWxfdG88IHR5cGVuYW1lIGRldGFpbDo6Y2xhc3NpZmllcjxPcmlnVD46OmZ1bmN0aW9uX2FyaXR5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBCYXNlOjpmdW5jdGlvbl9hcml0eSA+Ci0gICAgICAgICAgLCBtcGw6OmludGVncmFsX2M8aW50LDI+ICwgbXBsOjppbnRlZ3JhbF9jPGludCwxPiAKLSAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgID46OnR5cGUKLSAgICAgIGZyb207Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6ZW5kPHR5cGVuYW1lIEJhc2U6OnR5cGVzPjo6dHlwZSB0bzsKLQotICAgICAgdHlwZWRlZiBtcGw6Oml0ZXJhdG9yX3JhbmdlPGZyb20sdG8+IHBhcmFtX3R5cGVzOwotCi0gICAgICB0eXBlZGVmIG1wbDo6am9pbnRfdmlldzwgcmVzdWx0X2FuZF9jbGFzc190eXBlLCBwYXJhbV90eXBlcz4gdHlwZXNfdmlldzsKLSAgICBwdWJsaWM6Ci0KLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgICAgIG1wbDo6cmV2ZXJzZV9jb3B5PHR5cGVzX3ZpZXcsIG1wbDo6ZnJvbnRfaW5zZXJ0ZXI8IG1wbDo6dmVjdG9yMDw+ID4gPjo6dHlwZSAKLSAgICAgIHR5cGVzOwotCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIAotICAgICAgICBmdW5jdGlvbl90eXBlczo6dGFnPCBCYXNlLCBkZXRhaWw6OmN2X3RhZ19tZnA8T3JpZ1Q+ID46OmJpdHMgCi0gICAgICBiaXRzOwotCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIEJhc2U6Om1hc2sgbWFzazsKLQotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmNsYXNzaWZpZXI8T3JpZ1Q+OjpmdW5jdGlvbl9hcml0eSBmdW5jdGlvbl9hcml0eTsKLQotICAgICAgdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotICAgIH07Ci0KLSAgICAvLyBOb3cgcHV0IGl0IGFsbCB0b2dldGhlcjogZGV0ZWN0IGN2LXF1YWxpZmljYXRpb24gb2YgZnVuY3Rpb24gdHlwZXMgYW5kIGRvCi0gICAgLy8gdGhlIHdlaXJkIHRyYW5zZm9ybWF0aW9ucyBhYm92ZSBmb3IgbWVtYmVyIGZ1bmN0aW9uIHBvaW50ZXJzLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIE9yaWdULCB0eXBlbmFtZSBMPgotICAgIHN0cnVjdCBjb21wb25lbnRzX2JjYwotICAgICAgOiBtcGw6OmlmXwotICAgICAgICA8IGRldGFpbDo6cmVwcmVzZW50c19pbXBsPCBkZXRhaWw6OmNvbXBvbmVudHNfaW1wbDxULEw+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIG1lbWJlcl9mdW5jdGlvbl9wb2ludGVyX3RhZz4KLSAgICAgICAgLCBkZXRhaWw6Om1mcF9jb21wb25lbnRzPGRldGFpbDo6Y29tcG9uZW50c19pbXBsPFQsTD4sVCxPcmlnVCxMPgotICAgICAgICAsIGRldGFpbDo6Y29tcG9uZW50c19pbXBsPFQsTD4KLSAgICAgICAgPjo6dHlwZQotICAgIHsgfTsKLQotI2VuZGlmIC8vIGVuZCBvZiBCT1JMQU5EIFdPUktBUk9VTkQKLQotI2RlZmluZSBORE5CT09TVF9GVF9hbF9wYXRoIG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwKLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfbG9vcC5ocHA+Ci0KLSAgfSB9IC8vIG5hbWVzcGFjZSBmdW5jdGlvbl90eXBlczo6ZGV0YWlsCi0KLSAgTkROQk9PU1RfVFRfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMixmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50cykKLQotfSAvLyBuYW1lc3BhY2UgOjpib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NvbXBvbmVudHNfYXNfbXBsX3NlcXVlbmNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcmV0YWdfZGVmYXVsdF9jYy5ocHA+Ci0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2NvbmZpZy9jY19uYW1lcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2NvbmZpZy9jY19uYW1lcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2MjBhMGEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9jb25maWcvY2NfbmFtZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX0ZUX0NPTkZJR19DQ19OQU1FU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfRlRfQ09ORklHX0NDX05BTUVTX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX0ZUX0JVSUxUSU5fQ0NfTkFNRVMgXAotICAoKCBJTVBMSUNJVCAgICAgICAgICAgLCBpbXBsaWNpdF9jYyAsIE5ETkJPT1NUX1BQX0VNUFRZICAgICAgICAgICAgICAgICkpXAotICAoKCBDREVDTCAgICAgICAgICAgICAgLCBjZGVjbF9jYyAgICAsIE5ETkJPT1NUX1BQX0lERU5USVRZKF9fY2RlY2wgICApICkpXAotICAoKCBTVERDQUxMICAgICAgICAgICAgLCBzdGRjYWxsX2NjICAsIE5ETkJPT1NUX1BQX0lERU5USVRZKF9fc3RkY2FsbCApICkpXAotICAoKCBQQVNDQUwgICAgICAgICAgICAgLCBwYXNjYWxfY2MgICAsIE5ETkJPT1NUX1BQX0lERU5USVRZKHBhc2NhbCAgICApICkpXAotICAoKCBGQVNUQ0FMTCAgICAgICAgICAgLCBmYXN0Y2FsbF9jYyAsIE5ETkJPT1NUX1BQX0lERU5USVRZKF9fZmFzdGNhbGwpICkpXAotICAoKCBDTFJDQUxMICAgICAgICAgICAgLCBjbHJjYWxsX2NjICAsIE5ETkJPT1NUX1BQX0lERU5USVRZKF9fY2xyY2FsbCApICkpXAotICAoKCBUSElTQ0FMTCAgICAgICAgICAgLCB0aGlzY2FsbF9jYyAsIE5ETkJPT1NUX1BQX0lERU5USVRZKF9fdGhpc2NhbGwpICkpXAotICAoKCBJTVBMSUNJVF9USElTQ0FMTCAgLCB0aGlzY2FsbF9jYyAsIE5ETkJPT1NUX1BQX0VNUFRZICAgICAgICAgICAgICAgICkpIAotCi0vLyBhcHBlbmQgdXNlci1kZWZpbmVkIGNjIG5hbWVzIHRvIGJ1aWx0aW4gb25lcwotI2lmZGVmIE5ETkJPT1NUX0ZUX0NDX05BTUVTIAotIyAgIGRlZmluZSBORE5CT09TVF9GVF9DQ19OQU1FU19TRVEgTkROQk9PU1RfRlRfQlVJTFRJTl9DQ19OQU1FUyBORE5CT09TVF9GVF9DQ19OQU1FUwotIyAgIGRlZmluZSBORE5CT09TVF9GVF9DQ19QUkVQUk9DRVNTSU5HIDEKLSNlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX0ZUX0NDX05BTUVTX1NFUSBORE5CT09TVF9GVF9CVUlMVElOX0NDX05BTUVTCi0jZW5kaWYKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvY29uZmlnL2NvbXBpbGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvY29uZmlnL2NvbXBpbGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODcxNzBhMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2NvbmZpZy9jb21waWxlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTYgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX0ZUX0NPTkZJR19DT01QSUxFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfRlRfQ09ORklHX0NPTVBJTEVSX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0KLSMgICBpZiBORE5CT09TVF9NU1ZDIDwgMTMxMAotIyAgICAgZXJyb3IgInVuc3VwcG9ydGVkIGNvbXBpbGVyIHZlcnNpb24iCi0jICAgZW5kaWYKLQotIyAgIGlmZGVmIE5ETkJPT1NUX0ZUX0FVVE9ERVRFQ1RfQ0FMTElOR19DT05WRU5USU9OUwotCi0gICAgICAvLyBlbmFibGUgY2xyY2FsbCBjYWxsaW5nIGNvdmVudGlvbiAoY2FsbCB0byAuTkVUIG1hbmFnZWQgY29kZSkgd2hlbgotICAgICAgLy8gY29tcGlsaW5nIHdpdGggL2NsciAKLSMgICAgIGlmIE5ETkJPT1NUX01TVkMgPj0gMTQwMCAmJiBkZWZpbmVkKF9fY3BsdXNwbHVzX2NsaSkKLSMgICAgICAgaWZuZGVmIE5ETkJPT1NUX0ZUX0NDX0NMUkNBTEwKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX0ZUX0NDX0NMUkNBTEwgY2FsbGFibGVfYnVpbHRpbgotIyAgICAgICBlbmRpZgotIyAgICAgZW5kaWYKLQotICAgICAgLy8gSW50ZWwgeDg2IGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBjYWxsaW5nIGNvbnZlbnRpb25zCi0jICAgICBpZmRlZiBfTV9JWDg2Ci0jICAgICAgIGRlZmluZSBORE5CT09TVF9GVF9DT01NT05fWDg2X0NDcyBjYWxsYWJsZV9idWlsdGluCi0jICAgICAgIGlmIE5ETkJPT1NUX01TVkMgPCAxNDAwCi0gICAgICAgICAgLy8gdmVyc2lvbiA3LjEgaXMgbWlzc2luZyBhIGtleXdvcmQgdG8gc3BlY2lmeSB0aGUgdGhpc2NhbGwgY2MgLi4uCi0jICAgICAgICAgaWZuZGVmIE5ETkJPT1NUX0ZUX0NDX0lNUExJQ0lUX1RISVNDQUxMCi0jICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0ZUX0NDX0lNUExJQ0lUX1RISVNDQUxMIG5vbl92YXJpYWRpY3xtZW1iZXJ8Y2FsbGFibGVfYnVpbHRpbgotIyAgICAgICAgIGlmbmRlZiBORE5CT09TVF9GVF9DT05GSUdfT0sKLSMgICAgICAgICAgIHByYWdtYSBtZXNzYWdlKCJJTkZPfCAvR2QgL0dyIC9HeiB3aWxsIGNvbXBpbGVyIG9wdGlvbnMgd2lsbCBjYXVzZSIpCi0jICAgICAgICAgICBwcmFnbWEgbWVzc2FnZSgiSU5GT3wgYSBjb21waWxlIGVycm9yLiIpCi0jICAgICAgICAgICBwcmFnbWEgbWVzc2FnZSgiSU5GT3wgUmVjb25maWd1cmUgQm9vc3QuRnVuY3Rpb25UeXBlcyBpbiB0aGlzIGNhc2UuIikKLSMgICAgICAgICAgIHByYWdtYSBtZXNzYWdlKCJJTkZPfCBUaGlzIG1lc3NhZ2UgY2FuIGJlIHN1cHByZXNzZWQgYnkgZGVmaW5pbmciKQotIyAgICAgICAgICAgcHJhZ21hIG1lc3NhZ2UoIklORk98IE5ETkJPT1NUX0ZUX0NPTkZJR19PSy4iKQotIyAgICAgICAgIGVuZGlmCi0jICAgICAgICAgZW5kaWYKLSMgICAgICAgZWxzZSAKLSAgICAgICAgICAvLyAuLi5pbnRyb2R1Y2VkIGluIHZlcnNpb24gOAotIyAgICAgICAgIGlmbmRlZiBORE5CT09TVF9GVF9DQ19USElTQ0FMTAotIyAgICAgICAgIGRlZmluZSBORE5CT09TVF9GVF9DQ19USElTQ0FMTCBub25fdmFyaWFkaWN8bWVtYmVyfGNhbGxhYmxlX2J1aWx0aW4KLSMgICAgICAgICBlbmRpZgotIyAgICAgICBlbmRpZgotIyAgICAgZW5kaWYKLSMgICBlbmRpZgotCi0jZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChORE5CT09TVF9JTlRFTF9MSU5VWCkKLQotIyAgIGlmIF9fR05VQ19fIDwgMwotIyAgICAgZXJyb3IgInVuc3VwcG9ydGVkIGNvbXBpbGVyIHZlcnNpb24iCi0jICAgZW5kaWYKLQotIyAgIGlmZGVmIE5ETkJPT1NUX0ZUX0FVVE9ERVRFQ1RfQ0FMTElOR19DT05WRU5USU9OUwotCi0jICAgICBpZiBkZWZpbmVkKF9faTM4Nl9fKQotIyAgICAgICAvLyBzZWUgaHR0cDovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yMDQzOQotIyAgICAgICAvLyBzZWUgaHR0cDovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yOTMyOAotIyAgICAgICBpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLE5ETkJPT1NUX1RFU1RFRF9BVCg0KSkKLSMgICAgICAgICBpZm5kZWYgTkROQk9PU1RfRlRfQ0NfSU1QTElDSVQgCi0jICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0ZUX0NDX0lNUExJQ0lUIG1lbWJlcnxjYWxsYWJsZV9idWlsdGluCi0jICAgICAgICAgZW5kaWYKLSMgICAgICAgICBkZWZpbmUgTkROQk9PU1RfRlRfQ09NTU9OX1g4Nl9DQ3Mgbm9uX21lbWJlcnxjYWxsYWJsZV9idWlsdGluCi0jICAgICAgIGVsc2UKLSMgICAgICAgICBkZWZpbmUgTkROQk9PU1RfRlRfQ09NTU9OX1g4Nl9DQ3MgY2FsbGFibGVfYnVpbHRpbgotIyAgICAgICBlbmRpZgotIyAgICAgZWxzZQotIyAgICAgICBpZm5kZWYgTkROQk9PU1RfRlRfQ0NfSU1QTElDSVQKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX0ZUX0NDX0lNUExJQ0lUIGNhbGxhYmxlX2J1aWx0aW4KLSMgICAgICAgZW5kaWYKLSMgICAgIGVuZGlmCi0jICAgZW5kaWYKLQotIyAgIGlmIChkZWZpbmVkKE5ETkJPT1NUX0ZUX0NDX0NERUNMKSB8fCBkZWZpbmVkKE5ETkJPT1NUX0ZUX0NPTU1PTl9YODZfQ0NzKSkgXAotICAgICAgICAmJiAhZGVmaW5lZChfX2NkZWNsKQotIyAgICAgZGVmaW5lIF9fY2RlY2wgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkKLSMgICBlbmRpZgotIyAgIGlmIChkZWZpbmVkKE5ETkJPT1NUX0ZUX0NDX1NURENBTEwpIHx8IGRlZmluZWQoTkROQk9PU1RfRlRfQ09NTU9OX1g4Nl9DQ3MpKSBcCi0gICAgICAgICYmICFkZWZpbmVkKF9fc3RkY2FsbCkKLSMgICAgIGRlZmluZSBfX3N0ZGNhbGwgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKQotIyAgIGVuZGlmCi0jICAgaWYgKGRlZmluZWQoTkROQk9PU1RfRlRfQ0NfRkFTVENBTEwpIHx8IGRlZmluZWQoTkROQk9PU1RfRlRfQ09NTU9OX1g4Nl9DQ3MpKSBcCi0gICAgICAgICYmICFkZWZpbmVkKF9fZmFzdGNhbGwpCi0jICAgICBkZWZpbmUgX19mYXN0Y2FsbCBfX2F0dHJpYnV0ZV9fKChfX2Zhc3RjYWxsX18pKQotIyAgIGVuZGlmCi0KLSNlbGlmIGRlZmluZWQoX19CT1JMQU5EQ19fKQotCi0jICAgaWYgX19CT1JMQU5EQ19fIDwgMHg1NTAKLSMgICAgIGVycm9yICJ1bnN1cHBvcnRlZCBjb21waWxlciB2ZXJzaW9uIgotIyAgIGVsaWYgX19CT1JMQU5EQ19fID4gMHg1NjUKLSMgICAgIHByYWdtYSBtZXNzYWdlKCJXQVJOSU5HOiBsaWJyYXJ5IHVudGVzdGVkIHdpdGggdGhpcyBjb21waWxlciB2ZXJzaW9uIikKLSMgICBlbmRpZgotCi0jICAgaWZkZWYgTkROQk9PU1RfRlRfQVVUT0RFVEVDVF9DQUxMSU5HX0NPTlZFTlRJT05TCi0jICAgICBkZWZpbmUgTkROQk9PU1RfRlRfQ09NTU9OX1g4Nl9DQ3MgY2FsbGFibGVfYnVpbHRpbgotIyAgIGVuZGlmCi0KLSAgICAvLyBzeW50YWN0aWMgc3BlY2lhbGl0aWVzIG9mIGNjIHNwZWNpZmllcgotIyAgIGRlZmluZSBORE5CT09TVF9GVF9TWU5UQVgocmVzdWx0LGxwYXJlbixjY19zcGVjLHR5cGVfbW9kLG5hbWUscnBhcmVuKSBcCi0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQoKSBjY19zcGVjKCkgbHBhcmVuKCkgdHlwZV9tb2QoKSBuYW1lKCkgcnBhcmVuKCkKLSNlbHNlCi0gICAgLy8gb25seSBlbmFibGUgZGVmYXVsdCBjYWxsaW5nIGNvbnZlbnRpb24KLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfQ0NfSU1QTElDSVQgY2FsbGFibGVfYnVpbHRpbgotI2VuZGlmCi0KLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvY29uZmlnL2NvbmZpZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2NvbmZpZy9jb25maWcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZTg1NTMyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvY29uZmlnL2NvbmZpZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZm5kZWYgTkROQk9PU1RfRlRfQ09ORklHX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9GVF9DT05GSUdfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9jb25maWcvY29tcGlsZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2NvbmZpZy9jY19uYW1lcy5ocHA+Ci0KLS8vIG1heGltdW0gYWxsb3dlZCBhcml0eQotI2lmbmRlZiBORE5CT09TVF9GVF9NQVhfQVJJVFkKLSNkZWZpbmUgTkROQk9PU1RfRlRfTUFYX0FSSVRZIDIwCi0jZW5kaWYKLQotLy8gdGhlIG1vc3QgY29tbW9uIGNhbGxpbmcgY29udmVudGlvbnMgZm9yIHg4NiBhcmNoaXRlY3R1cmUgY2FuIGJlIGVuYWJsZWQgYXQKLS8vIG9uY2UgaW4gdGhlIGNvbXBpbGVyIGNvbmZpZwotI2lmZGVmIE5ETkJPT1NUX0ZUX0NPTU1PTl9YODZfQ0NzCi0jICAgaWZuZGVmIE5ETkJPT1NUX0ZUX0NDX0NERUNMCi0jICAgZGVmaW5lIE5ETkJPT1NUX0ZUX0NDX0NERUNMIE5ETkJPT1NUX0ZUX0NPTU1PTl9YODZfQ0NzCi0jICAgZW5kaWYKLSMgICBpZm5kZWYgTkROQk9PU1RfRlRfQ0NfU1REQ0FMTAotIyAgIGRlZmluZSBORE5CT09TVF9GVF9DQ19TVERDQUxMIG5vbl92YXJpYWRpY3xORE5CT09TVF9GVF9DT01NT05fWDg2X0NDcwotIyAgIGVuZGlmCi0jICAgaWZuZGVmIE5ETkJPT1NUX0ZUX0NDX0ZBU1RDQUxMCi0jICAgZGVmaW5lIE5ETkJPT1NUX0ZUX0NDX0ZBU1RDQUxMIG5vbl92YXJpYWRpY3xORE5CT09TVF9GVF9DT01NT05fWDg2X0NDcwotIyAgIGVuZGlmCi0jZW5kaWYKLQotLy8gd2hlcmUgdG8gcGxhY2UgdGhlIGNjIHNwZWNpZmllciAodGhlIGNvbW1vbiB3YXkpCi0jaWZuZGVmIE5ETkJPT1NUX0ZUX1NZTlRBWAotIyAgIGRlZmluZSBORE5CT09TVF9GVF9TWU5UQVgocmVzdWx0LGxwYXJlbixjY19zcGVjLHR5cGVfbW9kLG5hbWUscnBhcmVuKSBcCi0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQoKSBscGFyZW4oKSBjY19zcGVjKCkgdHlwZV9tb2QoKSBuYW1lKCkgcnBhcmVuKCkKLSNlbmRpZgotCi0vLyBwYXJhbSBmb3IgbnVsbGFyeSBmdW5jdGlvbnMKLS8vIHNldCB0byAidm9pZCIgZm9yIGNvbXBpbGVycyB0aGF0IHJlcXVpcmUgbnVsbGFyeSBmdW5jdGlvbnMgdG8gcmVhZCAKLS8vICJSICh2b2lkKSIgaW4gdGVtcGxhdGUgcGFydGlhbCBzcGVjaWFsaXphdGlvbgotI2lmbmRlZiBORE5CT09TVF9GVF9OVUxMQVJZX1BBUkFNCi0jZGVmaW5lIE5ETkJPT1NUX0ZUX05VTExBUllfUEFSQU0gCi0jZW5kaWYKLQotLy8gdGhlcmUgaXMgYSBwZW5kaW5nIGRlZmVjdCByZXBvcnQgb24gY3YgcXVhbGlmaWVkIGZ1bmN0aW9uIHR5cGVzLCBzbyBzdXBwb3J0Ci0vLyBmb3IgdGhlc2UgdHlwZXMgaXMgZGlzYWJsZWQsIHVubGVzcyBmb3IgY29tcGlsZXJzIHdoZXJlIGl0J3Mga25vd24gdG8gd29yawotI2lmbmRlZiBORE5CT09TVF9GVF9OT19DVl9GVU5DX1NVUFBPUlQKLSNkZWZpbmUgTkROQk9PU1RfRlRfTk9fQ1ZfRlVOQ19TVVBQT1JUIDEKLSNlbmRpZgotCi0vLyBmdWxsIHByZXByb2Nlc3NpbmcgaW1wbGllcyBwcmVwcm9jZXNzaW5nIG9mIHRoZSBjY3MKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0ZUX1BSRVBST0NFU1NJTkdfTU9ERSkgJiYgIWRlZmluZWQoTkROQk9PU1RfRlRfQ0NfUFJFUFJPQ0VTU0lORykKLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfQ0NfUFJFUFJPQ0VTU0lORyAxCi0jZW5kaWYKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzX3RyYW5zZm9ybS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc190cmFuc2Zvcm0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMjk2NGQ2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzX3RyYW5zZm9ybS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZm5kZWYgTkROQk9PU1RfRlRfREVUQUlMX0NMQVNTX1RSQU5TRk9STV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfRlRfREVUQUlMX0NMQVNTX1RSQU5TRk9STV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hcHBseS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Fsd2F5cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lkZW50aXR5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvcGxhY2Vob2xkZXJzLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9yZWZlcmVuY2UuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgZnVuY3Rpb25fdHlwZXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotdXNpbmcgbXBsOjpwbGFjZWhvbGRlcnM6Ol87Ci0KLS8vIFRyYW5zZm9ybWF0aW9uIG1ldGFmdW5jdGlvbiBmb3IgdGhlIGNsYXNzIHR5cGUgb2YgbWVtYmVyIGZ1bmN0aW9uIHBvaW50ZXJzLgotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjbGFzc190cmFuc2Zvcm0KLXsgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmFwcGx5MTxMLFQ+Ojp0eXBlIHR5cGU7IH07Ci0KLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0vLyBXZSBjYW4gc2hvcnQtY2lyY3VpdCB0aGUgbWVjaGFuaXNtIGltcGxlbWVudGVkIGluIHRoZSBwcmltYXJ5IHRlbXBsYXRlIGZvciAKLS8vIHRoZSBtb3N0IGNvbW1vbiBsYW1iZGEgZXhwcmVzc2lvbiBhbmQgc2F2ZSBib3RoIHRoZSAidW4tbGFtYmRhaW5nIiBhbmQgdGhlCi0vLyB0eXBlIHRyYWl0cyBpbnZvY2F0aW9uICh3ZSBrbm93IHRoYXQgVCBjYW4gb25seSBiZSBhIGNsYXNzIHR5cGUpLgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgY2xhc3NfdHJhbnNmb3JtPCBULCBtcGw6OmlkZW50aXR5PF8+ID4KLXsgdHlwZWRlZiBUIHR5cGU7IH07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBjbGFzc190cmFuc2Zvcm08IFQsIGFkZF9yZWZlcmVuY2U8Xz4gPiAKLXsgdHlwZWRlZiBUICYgdHlwZTsgfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGNsYXNzX3RyYW5zZm9ybTwgVCwgYWRkX3BvaW50ZXI8Xz4gPgoteyB0eXBlZGVmIFQgKiB0eXBlOyB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgY2xhc3NfdHJhbnNmb3JtPCBULCByZW1vdmVfY3Y8Xz4gPgoteyB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfY3Y8VD46OnR5cGUgdHlwZTsgfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGNsYXNzX3RyYW5zZm9ybTwgVCwgYWRkX3JlZmVyZW5jZTwgcmVtb3ZlX2N2PF8+ID4gPgoteyB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfY3Y8VD46OnR5cGUgJiB0eXBlOyB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgY2xhc3NfdHJhbnNmb3JtPCBULCBhZGRfcG9pbnRlcjwgcmVtb3ZlX2N2PF8+ID4gPgoteyB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfY3Y8VD46OnR5cGUgKiB0eXBlOyB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBzdHJ1Y3QgY2xhc3NfdHJhbnNmb3JtPCBULCBtcGw6OmFsd2F5czxVPiA+Ci17IHR5cGVkZWYgVSB0eXBlOyB9OwotI2VuZGlmCi0KLQotfSB9IH0gLy8gbmFtZXNwYWNlIDo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWwKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NpZmllci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2ZWJkMjUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NpZmllci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZm5kZWYgTkROQk9PU1RfRlRfREVUQUlMX0NMQVNTSUZJRVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0ZUX0RFVEFJTF9DTEFTU0lGSUVSX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3JlZmVyZW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3JlZmVyZW5jZS5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9jb25maWcvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9wcm9wZXJ0eV90YWdzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGZ1bmN0aW9uX3R5cGVzIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBjbGFzc2lmaWVyOwotCi10ZW1wbGF0ZTxzdGQ6OnNpemVfdCBTPiBzdHJ1Y3QgY2hhcl9hcnJheSB7IHR5cGVkZWYgY2hhciAoJnR5cGUpW1NdOyB9OwotCi10ZW1wbGF0ZTxiaXRzX3QgRmxhZ3MsIGJpdHNfdCBDQ0lELCBzdGQ6OnNpemVfdCBBcml0eT4gc3RydWN0IGVuY29kZV9jaGFycgotewotICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfYXJyYXk8Ci0gICAgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6ZW5jb2RlX2NoYXJyX2ltcGw8RmxhZ3MsQ0NJRCxBcml0eT46OnZhbHVlIAotICA+Ojp0eXBlIHR5cGU7Ci19OwotCi1jaGFyIE5ETkJPT1NUX1RUX0RFQ0wgY2xhc3NpZmllcl9pbXBsKC4uLik7Ci0KLSNkZWZpbmUgTkROQk9PU1RfRlRfdmFyaWF0aW9ucyBORE5CT09TVF9GVF9mdW5jdGlvbnxORE5CT09TVF9GVF9wb2ludGVyfFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9GVF9tZW1iZXJfcG9pbnRlcgotCi0jZGVmaW5lIE5ETkJPT1NUX0ZUX3R5cGVfZnVuY3Rpb24oY2MsbmFtZSkgTkROQk9PU1RfRlRfU1lOVEFYKCBcCi0gICAgUiBORE5CT09TVF9QUF9FTVBUWSxORE5CT09TVF9QUF9MUEFSRU4sY2MsKiBORE5CT09TVF9QUF9FTVBUWSxuYW1lLE5ETkJPT1NUX1BQX1JQQVJFTikKLQotI2RlZmluZSBORE5CT09TVF9GVF90eXBlX2Z1bmN0aW9uX3BvaW50ZXIoY2MsbmFtZSkgTkROQk9PU1RfRlRfU1lOVEFYKCBcCi0gICAgUiBORE5CT09TVF9QUF9FTVBUWSxORE5CT09TVF9QUF9MUEFSRU4sY2MsKiogTkROQk9PU1RfUFBfRU1QVFksbmFtZSxORE5CT09TVF9QUF9SUEFSRU4pCi0KLSNkZWZpbmUgTkROQk9PU1RfRlRfdHlwZV9tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcihjYyxuYW1lKSBORE5CT09TVF9GVF9TWU5UQVgoIFwKLSAgICBSIE5ETkJPT1NUX1BQX0VNUFRZLE5ETkJPT1NUX1BQX0xQQVJFTixjYyxUMDo6KiogTkROQk9PU1RfUFBfRU1QVFksbmFtZSxORE5CT09TVF9QUF9SUEFSRU4pCi0KLSNkZWZpbmUgTkROQk9PU1RfRlRfYWxfcGF0aCBuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NpZmllcl9pbXBsCi0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX2xvb3AuaHBwPgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgY2xhc3NpZmllcl9iaXRzCi17Ci0gIHN0YXRpYyB0eXBlbmFtZSBuZG5ib29zdDo6YWRkX3JlZmVyZW5jZTxUPjo6dHlwZSB0ZXN0ZXI7Ci0KLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJpdHNfdCx2YWx1ZSA9IChiaXRzX3Qpc2l6ZW9mKAotICAgIG5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpjbGFzc2lmaWVyX2ltcGwoJiB0ZXN0ZXIpIAotICApLTEpOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGNsYXNzaWZpZXIKLXsKLSAgdHlwZWRlZiBkZXRhaWw6OmNvbnN0YW50PAotICAgIDo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OmRlY29kZV9iaXRzPAotICAgICAgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6Y2xhc3NpZmllcl9iaXRzPFQ+Ojp2YWx1ZQotICAgID46OnRhZ19iaXRzID4gCi0gIGJpdHM7Ci0KLSAgdHlwZWRlZiBkZXRhaWw6OmZ1bGxfbWFzayBtYXNrOwotIAotICB0eXBlZGVmIGRldGFpbDo6Y29uc3RhbnQ8Ci0gICAgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6ZGVjb2RlX2JpdHM8Ci0gICAgICA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpjbGFzc2lmaWVyX2JpdHM8VD46OnZhbHVlCi0gICAgPjo6YXJpdHkgPiAKLSAgZnVuY3Rpb25fYXJpdHk7Ci19OwotCi0KLQotfSB9IH0gLy8gbmFtZXNwYWNlIDo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWwKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9hcml0eTEwXzAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NpZmllcl9pbXBsL2FyaXR5MTBfMC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkMTc3YTIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NpZmllcl9pbXBsL2FyaXR5MTBfMC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbgotCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX3N5bnRheCAgICAgdHlwZSBtYWNybyB0byB1c2UKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY2MgICAgICAgICBlbXB0eSBvciBjYyBzcGVjaWZpZXIgCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2VsbCAgICAgICAgZW1wdHkgb3IgIi4uLiIKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY3YgICAgICAgICBlbXB0eSBvciBjdiBxdWFsaWZpZXJzCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2ZsYWdzICAgICAgc2luZ2xlIGRlY2ltYWwgaW50ZWdlciBlbmNvZGluZyB0aGUgZmxhZ3MKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfbiAgICAgICAgICBudW1iZXIgb2YgY29tcG9uZW50IHR5cGVzIChhcml0eSsxKQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9hcml0eSAgICAgIGN1cnJlbnQgYXJpdHkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHlwZSAgICAgICBtYWNybyB0aGF0IGV4cGFuZHMgdG8gdGhlIHR5cGUKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHBsYXJncyhwKSB0ZW1wbGF0ZSBhcmd1bWVudHMgd2l0aCBnaXZlbiBwcmVmaXgKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfcGFyYW1zKHApICBwYXJhbWV0ZXJzIHdpdGggZ2l2ZW4gcHJlZml4Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBSID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwwPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDE+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMj4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMz4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQ+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNT4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNj4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDc+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsOD4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsOT4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDEwPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9hcml0eTEwXzEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NpZmllcl9pbXBsL2FyaXR5MTBfMS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyN2VjNTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NpZmllcl9pbXBsL2FyaXR5MTBfMS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbgotCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX3N5bnRheCAgICAgdHlwZSBtYWNybyB0byB1c2UKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY2MgICAgICAgICBlbXB0eSBvciBjYyBzcGVjaWZpZXIgCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2VsbCAgICAgICAgZW1wdHkgb3IgIi4uLiIKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY3YgICAgICAgICBlbXB0eSBvciBjdiBxdWFsaWZpZXJzCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2ZsYWdzICAgICAgc2luZ2xlIGRlY2ltYWwgaW50ZWdlciBlbmNvZGluZyB0aGUgZmxhZ3MKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfbiAgICAgICAgICBudW1iZXIgb2YgY29tcG9uZW50IHR5cGVzIChhcml0eSsxKQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9hcml0eSAgICAgIGN1cnJlbnQgYXJpdHkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHlwZSAgICAgICBtYWNybyB0aGF0IGV4cGFuZHMgdG8gdGhlIHR5cGUKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHBsYXJncyhwKSB0ZW1wbGF0ZSBhcmd1bWVudHMgd2l0aCBnaXZlbiBwcmVmaXgKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfcGFyYW1zKHApICBwYXJhbWV0ZXJzIHdpdGggZ2l2ZW4gcHJlZml4Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDE+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpICggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDI+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQ+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDU+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw2PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDc+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDg+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw5PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDEwPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvYXJpdHkyMF8wLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9hcml0eTIwXzAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjQxZWVjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9hcml0eTIwXzAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb24KLQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9zeW50YXggICAgIHR5cGUgbWFjcm8gdG8gdXNlCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2NjICAgICAgICAgZW1wdHkgb3IgY2Mgc3BlY2lmaWVyIAotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9lbGwgICAgICAgIGVtcHR5IG9yICIuLi4iCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2N2ICAgICAgICAgZW1wdHkgb3IgY3YgcXVhbGlmaWVycwotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9mbGFncyAgICAgIHNpbmdsZSBkZWNpbWFsIGludGVnZXIgZW5jb2RpbmcgdGhlIGZsYWdzCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX24gICAgICAgICAgbnVtYmVyIG9mIGNvbXBvbmVudCB0eXBlcyAoYXJpdHkrMSkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfYXJpdHkgICAgICBjdXJyZW50IGFyaXR5Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3R5cGUgICAgICAgbWFjcm8gdGhhdCBleHBhbmRzIHRvIHRoZSB0eXBlCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3RwbGFyZ3MocCkgdGVtcGxhdGUgYXJndW1lbnRzIHdpdGggZ2l2ZW4gcHJlZml4Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3BhcmFtcyhwKSAgcGFyYW1ldGVycyB3aXRoIGdpdmVuIHByZWZpeAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvYXJpdHkxMF8wLmhwcD4KLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDExPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxMj4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTM+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDE0PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxNT4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTY+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDE3PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxOD4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTk+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDIwPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9hcml0eTIwXzEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NpZmllcl9pbXBsL2FyaXR5MjBfMS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkNzk5ZTUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NpZmllcl9pbXBsL2FyaXR5MjBfMS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbgotCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX3N5bnRheCAgICAgdHlwZSBtYWNybyB0byB1c2UKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY2MgICAgICAgICBlbXB0eSBvciBjYyBzcGVjaWZpZXIgCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2VsbCAgICAgICAgZW1wdHkgb3IgIi4uLiIKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY3YgICAgICAgICBlbXB0eSBvciBjdiBxdWFsaWZpZXJzCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2ZsYWdzICAgICAgc2luZ2xlIGRlY2ltYWwgaW50ZWdlciBlbmNvZGluZyB0aGUgZmxhZ3MKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfbiAgICAgICAgICBudW1iZXIgb2YgY29tcG9uZW50IHR5cGVzIChhcml0eSsxKQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9hcml0eSAgICAgIGN1cnJlbnQgYXJpdHkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHlwZSAgICAgICBtYWNybyB0aGF0IGV4cGFuZHMgdG8gdGhlIHR5cGUKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHBsYXJncyhwKSB0ZW1wbGF0ZSBhcmd1bWVudHMgd2l0aCBnaXZlbiBwcmVmaXgKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfcGFyYW1zKHApICBwYXJhbWV0ZXJzIHdpdGggZ2l2ZW4gcHJlZml4Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9hcml0eTEwXzEuaHBwPgotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTE+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxMj4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDEzPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTQ+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxNT4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDE2PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTc+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxOD4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDE5PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMjA+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9hcml0eTMwXzAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NpZmllcl9pbXBsL2FyaXR5MzBfMC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlOWYyYjMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NpZmllcl9pbXBsL2FyaXR5MzBfMC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbgotCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX3N5bnRheCAgICAgdHlwZSBtYWNybyB0byB1c2UKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY2MgICAgICAgICBlbXB0eSBvciBjYyBzcGVjaWZpZXIgCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2VsbCAgICAgICAgZW1wdHkgb3IgIi4uLiIKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY3YgICAgICAgICBlbXB0eSBvciBjdiBxdWFsaWZpZXJzCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2ZsYWdzICAgICAgc2luZ2xlIGRlY2ltYWwgaW50ZWdlciBlbmNvZGluZyB0aGUgZmxhZ3MKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfbiAgICAgICAgICBudW1iZXIgb2YgY29tcG9uZW50IHR5cGVzIChhcml0eSsxKQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9hcml0eSAgICAgIGN1cnJlbnQgYXJpdHkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHlwZSAgICAgICBtYWNybyB0aGF0IGV4cGFuZHMgdG8gdGhlIHR5cGUKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHBsYXJncyhwKSB0ZW1wbGF0ZSBhcmd1bWVudHMgd2l0aCBnaXZlbiBwcmVmaXgKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfcGFyYW1zKHApICBwYXJhbWV0ZXJzIHdpdGggZ2l2ZW4gcHJlZml4Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9hcml0eTIwXzAuaHBwPgotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMjE+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDIyPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyMz4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMjQ+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDI1PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyNj4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMjc+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDI4PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyOT4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzA+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NpZmllcl9pbXBsL2FyaXR5MzBfMS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvYXJpdHkzMF8xLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzBjNzgzNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvYXJpdHkzMF8xLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gbm8gaW5jbHVkZSBndWFyZHMsIHRoaXMgZmlsZSBpcyBpbnRlbmRlZCBmb3IgbXVsdGlwbGUgaW5jbHVzaW9uCi0KLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfc3ludGF4ICAgICB0eXBlIG1hY3JvIHRvIHVzZQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jYyAgICAgICAgIGVtcHR5IG9yIGNjIHNwZWNpZmllciAKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZWxsICAgICAgICBlbXB0eSBvciAiLi4uIgotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jdiAgICAgICAgIGVtcHR5IG9yIGN2IHF1YWxpZmllcnMKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZmxhZ3MgICAgICBzaW5nbGUgZGVjaW1hbCBpbnRlZ2VyIGVuY29kaW5nIHRoZSBmbGFncwotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9uICAgICAgICAgIG51bWJlciBvZiBjb21wb25lbnQgdHlwZXMgKGFyaXR5KzEpCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX2FyaXR5ICAgICAgY3VycmVudCBhcml0eQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90eXBlICAgICAgIG1hY3JvIHRoYXQgZXhwYW5kcyB0byB0aGUgdHlwZQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90cGxhcmdzKHApIHRlbXBsYXRlIGFyZ3VtZW50cyB3aXRoIGdpdmVuIHByZWZpeAotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9wYXJhbXMocCkgIHBhcmFtZXRlcnMgd2l0aCBnaXZlbiBwcmVmaXgKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NpZmllcl9pbXBsL2FyaXR5MjBfMS5ocHA+Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyMT4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDIyPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMjM+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyND4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDI1PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMjY+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyNz4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDI4PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMjk+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzMD4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NpZmllcl9pbXBsL2FyaXR5NDBfMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvYXJpdHk0MF8wLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjVkOTQ2Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvYXJpdHk0MF8wLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gbm8gaW5jbHVkZSBndWFyZHMsIHRoaXMgZmlsZSBpcyBpbnRlbmRlZCBmb3IgbXVsdGlwbGUgaW5jbHVzaW9uCi0KLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfc3ludGF4ICAgICB0eXBlIG1hY3JvIHRvIHVzZQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jYyAgICAgICAgIGVtcHR5IG9yIGNjIHNwZWNpZmllciAKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZWxsICAgICAgICBlbXB0eSBvciAiLi4uIgotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jdiAgICAgICAgIGVtcHR5IG9yIGN2IHF1YWxpZmllcnMKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZmxhZ3MgICAgICBzaW5nbGUgZGVjaW1hbCBpbnRlZ2VyIGVuY29kaW5nIHRoZSBmbGFncwotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9uICAgICAgICAgIG51bWJlciBvZiBjb21wb25lbnQgdHlwZXMgKGFyaXR5KzEpCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX2FyaXR5ICAgICAgY3VycmVudCBhcml0eQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90eXBlICAgICAgIG1hY3JvIHRoYXQgZXhwYW5kcyB0byB0aGUgdHlwZQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90cGxhcmdzKHApIHRlbXBsYXRlIGFyZ3VtZW50cyB3aXRoIGdpdmVuIHByZWZpeAotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9wYXJhbXMocCkgIHBhcmFtZXRlcnMgd2l0aCBnaXZlbiBwcmVmaXgKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NpZmllcl9pbXBsL2FyaXR5MzBfMC5ocHA+Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzMT4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzI+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDMzPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzND4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzU+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM2PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzNz4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzg+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM5PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0MD4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvYXJpdHk0MF8xLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9hcml0eTQwXzEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMjRlMzM2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9hcml0eTQwXzEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb24KLQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9zeW50YXggICAgIHR5cGUgbWFjcm8gdG8gdXNlCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2NjICAgICAgICAgZW1wdHkgb3IgY2Mgc3BlY2lmaWVyIAotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9lbGwgICAgICAgIGVtcHR5IG9yICIuLi4iCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2N2ICAgICAgICAgZW1wdHkgb3IgY3YgcXVhbGlmaWVycwotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9mbGFncyAgICAgIHNpbmdsZSBkZWNpbWFsIGludGVnZXIgZW5jb2RpbmcgdGhlIGZsYWdzCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX24gICAgICAgICAgbnVtYmVyIG9mIGNvbXBvbmVudCB0eXBlcyAoYXJpdHkrMSkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfYXJpdHkgICAgICBjdXJyZW50IGFyaXR5Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3R5cGUgICAgICAgbWFjcm8gdGhhdCBleHBhbmRzIHRvIHRoZSB0eXBlCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3RwbGFyZ3MocCkgdGVtcGxhdGUgYXJndW1lbnRzIHdpdGggZ2l2ZW4gcHJlZml4Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3BhcmFtcyhwKSAgcGFyYW1ldGVycyB3aXRoIGdpdmVuIHByZWZpeAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvYXJpdHkzMF8xLmhwcD4KLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDMxPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzI+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzMz4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM0PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzU+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzNj4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM3PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzg+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzOT4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQwPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvYXJpdHk1MF8wLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9hcml0eTUwXzAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjNiOGY0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9hcml0eTUwXzAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb24KLQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9zeW50YXggICAgIHR5cGUgbWFjcm8gdG8gdXNlCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2NjICAgICAgICAgZW1wdHkgb3IgY2Mgc3BlY2lmaWVyIAotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9lbGwgICAgICAgIGVtcHR5IG9yICIuLi4iCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2N2ICAgICAgICAgZW1wdHkgb3IgY3YgcXVhbGlmaWVycwotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9mbGFncyAgICAgIHNpbmdsZSBkZWNpbWFsIGludGVnZXIgZW5jb2RpbmcgdGhlIGZsYWdzCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX24gICAgICAgICAgbnVtYmVyIG9mIGNvbXBvbmVudCB0eXBlcyAoYXJpdHkrMSkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfYXJpdHkgICAgICBjdXJyZW50IGFyaXR5Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3R5cGUgICAgICAgbWFjcm8gdGhhdCBleHBhbmRzIHRvIHRoZSB0eXBlCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3RwbGFyZ3MocCkgdGVtcGxhdGUgYXJndW1lbnRzIHdpdGggZ2l2ZW4gcHJlZml4Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3BhcmFtcyhwKSAgcGFyYW1ldGVycyB3aXRoIGdpdmVuIHByZWZpeAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvYXJpdHk0MF8wLmhwcD4KLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQxPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ICwgdHlwZW5hbWUgVDQwICwgdHlwZW5hbWUgVDQxID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0Mj4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDM+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQ0PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ICwgdHlwZW5hbWUgVDQwICwgdHlwZW5hbWUgVDQxICwgdHlwZW5hbWUgVDQyICwgdHlwZW5hbWUgVDQzICwgdHlwZW5hbWUgVDQ0ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0NT4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiAsIHR5cGVuYW1lIFQ0MyAsIHR5cGVuYW1lIFQ0NCAsIHR5cGVuYW1lIFQ0NSA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDY+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUgLCB0eXBlbmFtZSBUNDYgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQ3PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgLCBUNDYgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ICwgdHlwZW5hbWUgVDQwICwgdHlwZW5hbWUgVDQxICwgdHlwZW5hbWUgVDQyICwgdHlwZW5hbWUgVDQzICwgdHlwZW5hbWUgVDQ0ICwgdHlwZW5hbWUgVDQ1ICwgdHlwZW5hbWUgVDQ2ICwgdHlwZW5hbWUgVDQ3ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0OD4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0ICwgVDQ1ICwgVDQ2ICwgVDQ3IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiAsIHR5cGVuYW1lIFQ0MyAsIHR5cGVuYW1lIFQ0NCAsIHR5cGVuYW1lIFQ0NSAsIHR5cGVuYW1lIFQ0NiAsIHR5cGVuYW1lIFQ0NyAsIHR5cGVuYW1lIFQ0OCA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDk+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiAsIFQ0NyAsIFQ0OCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUgLCB0eXBlbmFtZSBUNDYgLCB0eXBlbmFtZSBUNDcgLCB0eXBlbmFtZSBUNDggLCB0eXBlbmFtZSBUNDkgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDUwPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgLCBUNDYgLCBUNDcgLCBUNDggLCBUNDkgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9hcml0eTUwXzEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NpZmllcl9pbXBsL2FyaXR5NTBfMS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3ZDMzZGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NpZmllcl9pbXBsL2FyaXR5NTBfMS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbgotCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX3N5bnRheCAgICAgdHlwZSBtYWNybyB0byB1c2UKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY2MgICAgICAgICBlbXB0eSBvciBjYyBzcGVjaWZpZXIgCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2VsbCAgICAgICAgZW1wdHkgb3IgIi4uLiIKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY3YgICAgICAgICBlbXB0eSBvciBjdiBxdWFsaWZpZXJzCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2ZsYWdzICAgICAgc2luZ2xlIGRlY2ltYWwgaW50ZWdlciBlbmNvZGluZyB0aGUgZmxhZ3MKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfbiAgICAgICAgICBudW1iZXIgb2YgY29tcG9uZW50IHR5cGVzIChhcml0eSsxKQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9hcml0eSAgICAgIGN1cnJlbnQgYXJpdHkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHlwZSAgICAgICBtYWNybyB0aGF0IGV4cGFuZHMgdG8gdGhlIHR5cGUKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHBsYXJncyhwKSB0ZW1wbGF0ZSBhcmd1bWVudHMgd2l0aCBnaXZlbiBwcmVmaXgKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfcGFyYW1zKHApICBwYXJhbWV0ZXJzIHdpdGggZ2l2ZW4gcHJlZml4Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9hcml0eTQwXzEuaHBwPgotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDE+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ICwgdHlwZW5hbWUgVDQwICwgdHlwZW5hbWUgVDQxID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0Mj4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQzPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiAsIHR5cGVuYW1lIFQ0MyA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDQ+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ICwgdHlwZW5hbWUgVDQwICwgdHlwZW5hbWUgVDQxICwgdHlwZW5hbWUgVDQyICwgdHlwZW5hbWUgVDQzICwgdHlwZW5hbWUgVDQ0ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0NT4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQ2PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0ICwgVDQ1IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiAsIHR5cGVuYW1lIFQ0MyAsIHR5cGVuYW1lIFQ0NCAsIHR5cGVuYW1lIFQ0NSAsIHR5cGVuYW1lIFQ0NiA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDc+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgLCBUNDYgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ICwgdHlwZW5hbWUgVDQwICwgdHlwZW5hbWUgVDQxICwgdHlwZW5hbWUgVDQyICwgdHlwZW5hbWUgVDQzICwgdHlwZW5hbWUgVDQ0ICwgdHlwZW5hbWUgVDQ1ICwgdHlwZW5hbWUgVDQ2ICwgdHlwZW5hbWUgVDQ3ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0OD4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiAsIFQ0NyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUgLCB0eXBlbmFtZSBUNDYgLCB0eXBlbmFtZSBUNDcgLCB0eXBlbmFtZSBUNDggPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQ5PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0ICwgVDQ1ICwgVDQ2ICwgVDQ3ICwgVDQ4IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiAsIHR5cGVuYW1lIFQ0MyAsIHR5cGVuYW1lIFQ0NCAsIHR5cGVuYW1lIFQ0NSAsIHR5cGVuYW1lIFQ0NiAsIHR5cGVuYW1lIFQ0NyAsIHR5cGVuYW1lIFQ0OCAsIHR5cGVuYW1lIFQ0OSA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNTA+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgLCBUNDYgLCBUNDcgLCBUNDggLCBUNDkgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvbWFzdGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9tYXN0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMGMyZWM0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9tYXN0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb24KLQotI2lmIE5ETkJPT1NUX0ZUX0FSSVRZX0xPT1BfUFJFRklYCi0KLSMgICBpZm5kZWYgTkROQk9PU1RfRlRfREVUQUlMX0NMQVNTSUZJRVJfSU1QTF9NQVNURVJfSFBQX0lOQ0xVREVECi0jICAgZGVmaW5lIE5ETkJPT1NUX0ZUX0RFVEFJTF9DTEFTU0lGSUVSX0lNUExfTUFTVEVSX0hQUF9JTkNMVURFRAotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvaWRlbnRpdHkuaHBwPgotIyAgIGVuZGlmCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfdHlwZV9uYW1lCi0KLSNlbGlmIE5ETkJPT1NUX0ZUX0FSSVRZX0xPT1BfSVNfSVRFUkFUSU5HCi0KLXRlbXBsYXRlPCBORE5CT09TVF9GVF90cGxhcmdzKE5ETkJPT1NUX1BQX0lERU5USVRZKHR5cGVuYW1lKSkgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLE5ETkJPT1NUX0ZUX2FyaXR5Pjo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3R5cGUpOwotCi0jZWxpZiBORE5CT09TVF9GVF9BUklUWV9MT09QX1NVRkZJWAotCi0jICAgdW5kZWYgTkROQk9PU1RfRlRfdHlwZV9uYW1lCi0KLSNlbHNlCi0jICAgZXJyb3IgImF0dGVtcHQgdG8gdXNlIGFyaXR5IGxvb3AgbWFzdGVyIGZpbGUgd2l0aG91dCBsb29wIgotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NvbXBvbmVudHNfYXNfbXBsX3NlcXVlbmNlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NvbXBvbmVudHNfYXNfbXBsX3NlcXVlbmNlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzljMmFmMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2FzX21wbF9zZXF1ZW5jZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzggKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX0ZUX0RFVEFJTF9DT01QT05FTlRTX0FTX01QTF9TRVFVRU5DRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfRlRfREVUQUlMX0NPTVBPTkVOVFNfQVNfTVBMX1NFUVVFTkNFX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3NpemVfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZW1wdHlfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZnJvbnRfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYmFja19md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdF9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9iZWdpbl9lbmRfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvY2xlYXJfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvcHVzaF9mcm9udF9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9wb3BfZnJvbnRfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvcHVzaF9iYWNrX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3BvcF9iYWNrX2Z3ZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+IHN0cnVjdCBzaXplX2ltcGwKLTwgZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6Y29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnID4KLXsKLSAgdGVtcGxhdGU8IHR5cGVuYW1lIFMgPiBzdHJ1Y3QgYXBwbHkKLSAgICA6IG1wbDo6c2l6ZSA8dHlwZW5hbWUgUzo6dHlwZXM+Ci0gIHsgfTsKLX07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBlbXB0eV9pbXBsCi08IGZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OmNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyA+Ci17Ci0gIHRlbXBsYXRlPCB0eXBlbmFtZSBTID4gc3RydWN0IGFwcGx5Ci0gICAgOiBtcGw6OmVtcHR5IDx0eXBlbmFtZSBTOjp0eXBlcz4KLSAgeyB9OwotfTsKLXRlbXBsYXRlPD4gc3RydWN0IGZyb250X2ltcGwKLTwgZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6Y29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnID4KLXsKLSAgdGVtcGxhdGU8IHR5cGVuYW1lIFMgPiBzdHJ1Y3QgYXBwbHkKLSAgICA6IG1wbDo6ZnJvbnQgPHR5cGVuYW1lIFM6OnR5cGVzPgotICB7IH07Ci19OwotdGVtcGxhdGU8PiBzdHJ1Y3QgYmFja19pbXBsCi08IGZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OmNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyA+Ci17Ci0gIHRlbXBsYXRlPCB0eXBlbmFtZSBTID4gc3RydWN0IGFwcGx5Ci0gICAgOiBtcGw6OmJhY2sgPHR5cGVuYW1lIFM6OnR5cGVzPgotICB7IH07Ci19OwotdGVtcGxhdGU8PiBzdHJ1Y3QgYXRfaW1wbAotPCBmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgPgotewotICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIDogbXBsOjphdCA8dHlwZW5hbWUgUzo6dHlwZXMsIE4gPgotICB7IH07Ci19OwotdGVtcGxhdGU8PiBzdHJ1Y3QgYmVnaW5faW1wbAotPCBmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgPgotewotICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUyA+IHN0cnVjdCBhcHBseQotICAgIDogbXBsOjpiZWdpbiA8dHlwZW5hbWUgUzo6dHlwZXM+Ci0gIHsgfTsKLX07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBlbmRfaW1wbAotPCBmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgPgotewotICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUyA+IHN0cnVjdCBhcHBseQotICAgIDogbXBsOjplbmQgPHR5cGVuYW1lIFM6OnR5cGVzPgotICB7IH07Ci19OwotdGVtcGxhdGU8PiBzdHJ1Y3QgY2xlYXJfaW1wbAotPCBmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgPgotewotICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUyA+Ci0gIHN0cnVjdCBhcHBseQotICAgIDogUwotICB7Ci0gICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpjbGVhcjwgdHlwZW5hbWUgUzo6dHlwZXMgPjo6dHlwZSB0eXBlczsKLSAgfTsKLX07Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsCi08IGZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OmNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyA+Ci17Ci0gIHRlbXBsYXRlPCB0eXBlbmFtZSBTLCB0eXBlbmFtZSBUID4KLSAgc3RydWN0IGFwcGx5Ci0gICAgOiBTCi0gIHsgCi0gICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpwdXNoX2Zyb250PCB0eXBlbmFtZSBTOjp0eXBlcywgVCA+Ojp0eXBlIHR5cGVzOwotICB9OwotfTsKLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbAotPCBmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgPgotewotICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUyA+Ci0gIHN0cnVjdCBhcHBseQotICAgIDogUwotICB7Ci0gICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpwb3BfZnJvbnQ8IHR5cGVuYW1lIFM6OnR5cGVzID46OnR5cGUgdHlwZXM7IAotICB9OwotfTsKLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbAotPCBmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgPgotewotICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUywgdHlwZW5hbWUgVCA+Ci0gIHN0cnVjdCBhcHBseQotICAgIDogUwotICB7Ci0gICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpwdXNoX2JhY2s8IHR5cGVuYW1lIFM6OnR5cGVzLCBUID46OnR5cGUgdHlwZXM7IAotICB9OwotfTsKLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsCi08IGZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OmNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyA+Ci17Ci0gIHRlbXBsYXRlPCB0eXBlbmFtZSBTID4KLSAgc3RydWN0IGFwcGx5Ci0gICAgOiBTCi0gIHsKLSAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OnBvcF9iYWNrPCB0eXBlbmFtZSBTOjp0eXBlcyA+Ojp0eXBlIHR5cGVzOyAKLSAgfTsKLX07Ci0KLX0gfSAvLyBuYW1lc3BhY2UgOjpuZG5ib29zdDo6bXBsCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHkxMF8wLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NvbXBvbmVudHNfaW1wbC9hcml0eTEwXzAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzc5OTNkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NvbXBvbmVudHNfaW1wbC9hcml0eTEwXzAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTMyICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gbm8gaW5jbHVkZSBndWFyZHMsIHRoaXMgZmlsZSBpcyBpbnRlbmRlZCBmb3IgbXVsdGlwbGUgaW5jbHVzaW9uCi0KLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfc3ludGF4ICAgICB0eXBlIG1hY3JvIHRvIHVzZQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jYyAgICAgICAgIGVtcHR5IG9yIGNjIHNwZWNpZmllciAKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZWxsICAgICAgICBlbXB0eSBvciAiLi4uIgotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jdiAgICAgICAgIGVtcHR5IG9yIGN2IHF1YWxpZmllcnMKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZmxhZ3MgICAgICBzaW5nbGUgZGVjaW1hbCBpbnRlZ2VyIGVuY29kaW5nIHRoZSBmbGFncwotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9uICAgICAgICAgIG51bWJlciBvZiBjb21wb25lbnQgdHlwZXMgKGFyaXR5KzEpCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX2FyaXR5ICAgICAgY3VycmVudCBhcml0eQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90eXBlICAgICAgIG1hY3JvIHRoYXQgZXhwYW5kcyB0byB0aGUgdHlwZQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90cGxhcmdzKHApIHRlbXBsYXRlIGFyZ3VtZW50cyB3aXRoIGdpdmVuIHByZWZpeAotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9wYXJhbXMocCkgIHBhcmFtZXRlcnMgd2l0aCBnaXZlbiBwcmVmaXgKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFIsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwwPiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3IxPCBSIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0gPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwxPiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3IyPCBSICwgVDAgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwyPiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3IzPCBSICwgVDAgLCBUMSA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDM+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjQ8IFIgLCBUMCAsIFQxICwgVDIgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCw0PiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3I1PCBSICwgVDAgLCBUMSAsIFQyICwgVDMgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCw1PiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3I2PCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDY+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3Rvcjc8IFIgLCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCw3PiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3I4PCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCw4PiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3I5PCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDk+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjEwPCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMTA+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjExPCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgPiB0eXBlczsKLX07Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NvbXBvbmVudHNfaW1wbC9hcml0eTEwXzEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY29tcG9uZW50c19pbXBsL2FyaXR5MTBfMS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiODk2OGEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY29tcG9uZW50c19pbXBsL2FyaXR5MTBfMS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjIgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb24KLQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9zeW50YXggICAgIHR5cGUgbWFjcm8gdG8gdXNlCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2NjICAgICAgICAgZW1wdHkgb3IgY2Mgc3BlY2lmaWVyIAotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9lbGwgICAgICAgIGVtcHR5IG9yICIuLi4iCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2N2ICAgICAgICAgZW1wdHkgb3IgY3YgcXVhbGlmaWVycwotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9mbGFncyAgICAgIHNpbmdsZSBkZWNpbWFsIGludGVnZXIgZW5jb2RpbmcgdGhlIGZsYWdzCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX24gICAgICAgICAgbnVtYmVyIG9mIGNvbXBvbmVudCB0eXBlcyAoYXJpdHkrMSkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfYXJpdHkgICAgICBjdXJyZW50IGFyaXR5Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3R5cGUgICAgICAgbWFjcm8gdGhhdCBleHBhbmRzIHRvIHRoZSB0eXBlCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3RwbGFyZ3MocCkgdGVtcGxhdGUgYXJndW1lbnRzIHdpdGggZ2l2ZW4gcHJlZml4Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3BhcmFtcyhwKSAgcGFyYW1ldGVycyB3aXRoIGdpdmVuIHByZWZpeAotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpICggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDE+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjI8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwyPiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3IzPCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwzPiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3I0PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDQ+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjU8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCw1PiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3I2PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCw2PiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3I3PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDc+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3Rvcjg8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCw4PiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3I5PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCw5PiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3IxMDwgUiwgdHlwZW5hbWUgY2xhc3NfdHJhbnNmb3JtPFQwIE5ETkJPT1NUX0ZUX2N2LCBMPiA6OnR5cGUgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwxMD4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMTE8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ID4gdHlwZXM7Ci19OwotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHkyMF8wLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NvbXBvbmVudHNfaW1wbC9hcml0eTIwXzAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTUzMGRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NvbXBvbmVudHNfaW1wbC9hcml0eTIwXzAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gbm8gaW5jbHVkZSBndWFyZHMsIHRoaXMgZmlsZSBpcyBpbnRlbmRlZCBmb3IgbXVsdGlwbGUgaW5jbHVzaW9uCi0KLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfc3ludGF4ICAgICB0eXBlIG1hY3JvIHRvIHVzZQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jYyAgICAgICAgIGVtcHR5IG9yIGNjIHNwZWNpZmllciAKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZWxsICAgICAgICBlbXB0eSBvciAiLi4uIgotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jdiAgICAgICAgIGVtcHR5IG9yIGN2IHF1YWxpZmllcnMKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZmxhZ3MgICAgICBzaW5nbGUgZGVjaW1hbCBpbnRlZ2VyIGVuY29kaW5nIHRoZSBmbGFncwotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9uICAgICAgICAgIG51bWJlciBvZiBjb21wb25lbnQgdHlwZXMgKGFyaXR5KzEpCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX2FyaXR5ICAgICAgY3VycmVudCBhcml0eQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90eXBlICAgICAgIG1hY3JvIHRoYXQgZXhwYW5kcyB0byB0aGUgdHlwZQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90cGxhcmdzKHApIHRlbXBsYXRlIGFyZ3VtZW50cyB3aXRoIGdpdmVuIHByZWZpeAotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9wYXJhbXMocCkgIHBhcmFtZXRlcnMgd2l0aCBnaXZlbiBwcmVmaXgKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY29tcG9uZW50c19pbXBsL2FyaXR5MTBfMC5ocHA+Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwxMT4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMTI8IFIgLCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDEyPiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3IxMzwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMTM+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjE0PCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwxND4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMTU8IFIgLCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDE1PiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3IxNjwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMTY+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjE3PCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwxNz4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMTg8IFIgLCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDE4PiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3IxOTwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMTk+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjIwPCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwyMD4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMjE8IFIgLCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSA+IHR5cGVzOwotfTsKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY29tcG9uZW50c19pbXBsL2FyaXR5MjBfMS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHkyMF8xLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODM2NzYzYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHkyMF8xLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbgotCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX3N5bnRheCAgICAgdHlwZSBtYWNybyB0byB1c2UKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY2MgICAgICAgICBlbXB0eSBvciBjYyBzcGVjaWZpZXIgCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2VsbCAgICAgICAgZW1wdHkgb3IgIi4uLiIKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY3YgICAgICAgICBlbXB0eSBvciBjdiBxdWFsaWZpZXJzCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2ZsYWdzICAgICAgc2luZ2xlIGRlY2ltYWwgaW50ZWdlciBlbmNvZGluZyB0aGUgZmxhZ3MKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfbiAgICAgICAgICBudW1iZXIgb2YgY29tcG9uZW50IHR5cGVzIChhcml0eSsxKQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9hcml0eSAgICAgIGN1cnJlbnQgYXJpdHkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHlwZSAgICAgICBtYWNybyB0aGF0IGV4cGFuZHMgdG8gdGhlIHR5cGUKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHBsYXJncyhwKSB0ZW1wbGF0ZSBhcmd1bWVudHMgd2l0aCBnaXZlbiBwcmVmaXgKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfcGFyYW1zKHApICBwYXJhbWV0ZXJzIHdpdGggZ2l2ZW4gcHJlZml4Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NvbXBvbmVudHNfaW1wbC9hcml0eTEwXzEuaHBwPgotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwxMT4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMTI8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwxMj4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMTM8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwxMz4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMTQ8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwxND4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMTU8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwxNT4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMTY8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwxNj4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMTc8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwxNz4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMTg8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwxOD4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMTk8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwxOT4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMjA8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwyMD4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMjE8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ID4gdHlwZXM7Ci19OwotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHkzMF8wLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NvbXBvbmVudHNfaW1wbC9hcml0eTMwXzAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNDQ5NzljLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NvbXBvbmVudHNfaW1wbC9hcml0eTMwXzAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gbm8gaW5jbHVkZSBndWFyZHMsIHRoaXMgZmlsZSBpcyBpbnRlbmRlZCBmb3IgbXVsdGlwbGUgaW5jbHVzaW9uCi0KLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfc3ludGF4ICAgICB0eXBlIG1hY3JvIHRvIHVzZQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jYyAgICAgICAgIGVtcHR5IG9yIGNjIHNwZWNpZmllciAKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZWxsICAgICAgICBlbXB0eSBvciAiLi4uIgotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jdiAgICAgICAgIGVtcHR5IG9yIGN2IHF1YWxpZmllcnMKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZmxhZ3MgICAgICBzaW5nbGUgZGVjaW1hbCBpbnRlZ2VyIGVuY29kaW5nIHRoZSBmbGFncwotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9uICAgICAgICAgIG51bWJlciBvZiBjb21wb25lbnQgdHlwZXMgKGFyaXR5KzEpCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX2FyaXR5ICAgICAgY3VycmVudCBhcml0eQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90eXBlICAgICAgIG1hY3JvIHRoYXQgZXhwYW5kcyB0byB0aGUgdHlwZQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90cGxhcmdzKHApIHRlbXBsYXRlIGFyZ3VtZW50cyB3aXRoIGdpdmVuIHByZWZpeAotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9wYXJhbXMocCkgIHBhcmFtZXRlcnMgd2l0aCBnaXZlbiBwcmVmaXgKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY29tcG9uZW50c19pbXBsL2FyaXR5MjBfMC5ocHA+Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwyMT4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMjI8IFIgLCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDIyPiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3IyMzwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMjM+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjI0PCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwyND4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMjU8IFIgLCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDI1PiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3IyNjwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMjY+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjI3PCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwyNz4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMjg8IFIgLCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDI4PiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3IyOTwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMjk+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjMwPCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwzMD4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMzE8IFIgLCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSA+IHR5cGVzOwotfTsKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY29tcG9uZW50c19pbXBsL2FyaXR5MzBfMS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHkzMF8xLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmNjMzkzZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHkzMF8xLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbgotCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX3N5bnRheCAgICAgdHlwZSBtYWNybyB0byB1c2UKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY2MgICAgICAgICBlbXB0eSBvciBjYyBzcGVjaWZpZXIgCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2VsbCAgICAgICAgZW1wdHkgb3IgIi4uLiIKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY3YgICAgICAgICBlbXB0eSBvciBjdiBxdWFsaWZpZXJzCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2ZsYWdzICAgICAgc2luZ2xlIGRlY2ltYWwgaW50ZWdlciBlbmNvZGluZyB0aGUgZmxhZ3MKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfbiAgICAgICAgICBudW1iZXIgb2YgY29tcG9uZW50IHR5cGVzIChhcml0eSsxKQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9hcml0eSAgICAgIGN1cnJlbnQgYXJpdHkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHlwZSAgICAgICBtYWNybyB0aGF0IGV4cGFuZHMgdG8gdGhlIHR5cGUKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHBsYXJncyhwKSB0ZW1wbGF0ZSBhcmd1bWVudHMgd2l0aCBnaXZlbiBwcmVmaXgKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfcGFyYW1zKHApICBwYXJhbWV0ZXJzIHdpdGggZ2l2ZW4gcHJlZml4Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NvbXBvbmVudHNfaW1wbC9hcml0eTIwXzEuaHBwPgotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwyMT4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMjI8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwyMj4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMjM8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwyMz4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMjQ8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwyND4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMjU8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwyNT4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMjY8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwyNj4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMjc8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwyNz4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMjg8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwyOD4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMjk8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwyOT4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMzA8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwzMD4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMzE8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ID4gdHlwZXM7Ci19OwotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHk0MF8wLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NvbXBvbmVudHNfaW1wbC9hcml0eTQwXzAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDg1MGE4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NvbXBvbmVudHNfaW1wbC9hcml0eTQwXzAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gbm8gaW5jbHVkZSBndWFyZHMsIHRoaXMgZmlsZSBpcyBpbnRlbmRlZCBmb3IgbXVsdGlwbGUgaW5jbHVzaW9uCi0KLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfc3ludGF4ICAgICB0eXBlIG1hY3JvIHRvIHVzZQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jYyAgICAgICAgIGVtcHR5IG9yIGNjIHNwZWNpZmllciAKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZWxsICAgICAgICBlbXB0eSBvciAiLi4uIgotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jdiAgICAgICAgIGVtcHR5IG9yIGN2IHF1YWxpZmllcnMKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZmxhZ3MgICAgICBzaW5nbGUgZGVjaW1hbCBpbnRlZ2VyIGVuY29kaW5nIHRoZSBmbGFncwotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9uICAgICAgICAgIG51bWJlciBvZiBjb21wb25lbnQgdHlwZXMgKGFyaXR5KzEpCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX2FyaXR5ICAgICAgY3VycmVudCBhcml0eQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90eXBlICAgICAgIG1hY3JvIHRoYXQgZXhwYW5kcyB0byB0aGUgdHlwZQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90cGxhcmdzKHApIHRlbXBsYXRlIGFyZ3VtZW50cyB3aXRoIGdpdmVuIHByZWZpeAotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9wYXJhbXMocCkgIHBhcmFtZXRlcnMgd2l0aCBnaXZlbiBwcmVmaXgKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY29tcG9uZW50c19pbXBsL2FyaXR5MzBfMC5ocHA+Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwzMT4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMzI8IFIgLCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDMyPiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3IzMzwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMzM+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjM0PCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwzND4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMzU8IFIgLCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDM1PiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3IzNjwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMzY+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjM3PCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwzNz4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMzg8IFIgLCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDM4PiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3IzOTwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMzk+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjQwPCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5LCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCw0MD4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yNDE8IFIgLCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSA+IHR5cGVzOwotfTsKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY29tcG9uZW50c19pbXBsL2FyaXR5NDBfMS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHk0MF8xLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWY3ZjQ5ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHk0MF8xLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbgotCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX3N5bnRheCAgICAgdHlwZSBtYWNybyB0byB1c2UKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY2MgICAgICAgICBlbXB0eSBvciBjYyBzcGVjaWZpZXIgCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2VsbCAgICAgICAgZW1wdHkgb3IgIi4uLiIKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY3YgICAgICAgICBlbXB0eSBvciBjdiBxdWFsaWZpZXJzCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2ZsYWdzICAgICAgc2luZ2xlIGRlY2ltYWwgaW50ZWdlciBlbmNvZGluZyB0aGUgZmxhZ3MKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfbiAgICAgICAgICBudW1iZXIgb2YgY29tcG9uZW50IHR5cGVzIChhcml0eSsxKQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9hcml0eSAgICAgIGN1cnJlbnQgYXJpdHkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHlwZSAgICAgICBtYWNybyB0aGF0IGV4cGFuZHMgdG8gdGhlIHR5cGUKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHBsYXJncyhwKSB0ZW1wbGF0ZSBhcmd1bWVudHMgd2l0aCBnaXZlbiBwcmVmaXgKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfcGFyYW1zKHApICBwYXJhbWV0ZXJzIHdpdGggZ2l2ZW4gcHJlZml4Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NvbXBvbmVudHNfaW1wbC9hcml0eTMwXzEuaHBwPgotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwzMT4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMzI8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwzMj4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMzM8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwzMz4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMzQ8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwzND4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMzU8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwzNT4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMzY8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwzNj4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMzc8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwzNz4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMzg8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwzOD4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMzk8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwzOT4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yNDA8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCw0MD4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yNDE8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ID4gdHlwZXM7Ci19OwotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHk1MF8wLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NvbXBvbmVudHNfaW1wbC9hcml0eTUwXzAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjlmNmI0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NvbXBvbmVudHNfaW1wbC9hcml0eTUwXzAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gbm8gaW5jbHVkZSBndWFyZHMsIHRoaXMgZmlsZSBpcyBpbnRlbmRlZCBmb3IgbXVsdGlwbGUgaW5jbHVzaW9uCi0KLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfc3ludGF4ICAgICB0eXBlIG1hY3JvIHRvIHVzZQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jYyAgICAgICAgIGVtcHR5IG9yIGNjIHNwZWNpZmllciAKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZWxsICAgICAgICBlbXB0eSBvciAiLi4uIgotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jdiAgICAgICAgIGVtcHR5IG9yIGN2IHF1YWxpZmllcnMKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZmxhZ3MgICAgICBzaW5nbGUgZGVjaW1hbCBpbnRlZ2VyIGVuY29kaW5nIHRoZSBmbGFncwotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9uICAgICAgICAgIG51bWJlciBvZiBjb21wb25lbnQgdHlwZXMgKGFyaXR5KzEpCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX2FyaXR5ICAgICAgY3VycmVudCBhcml0eQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90eXBlICAgICAgIG1hY3JvIHRoYXQgZXhwYW5kcyB0byB0aGUgdHlwZQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90cGxhcmdzKHApIHRlbXBsYXRlIGFyZ3VtZW50cyB3aXRoIGdpdmVuIHByZWZpeAotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9wYXJhbXMocCkgIHBhcmFtZXRlcnMgd2l0aCBnaXZlbiBwcmVmaXgKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY29tcG9uZW50c19pbXBsL2FyaXR5NDBfMC5ocHA+Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCw0MT4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yNDI8IFIgLCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDQyPiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3I0MzwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNDM+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjQ0PCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ICwgdHlwZW5hbWUgVDQwICwgdHlwZW5hbWUgVDQxICwgdHlwZW5hbWUgVDQyICwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCw0ND4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yNDU8IFIgLCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDQ1PiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3I0NjwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiAsIHR5cGVuYW1lIFQ0MyAsIHR5cGVuYW1lIFQ0NCAsIHR5cGVuYW1lIFQ0NSwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0ICwgVDQ1IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNDY+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjQ3PCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ICwgdHlwZW5hbWUgVDQwICwgdHlwZW5hbWUgVDQxICwgdHlwZW5hbWUgVDQyICwgdHlwZW5hbWUgVDQzICwgdHlwZW5hbWUgVDQ0ICwgdHlwZW5hbWUgVDQ1ICwgdHlwZW5hbWUgVDQ2LCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgLCBUNDYgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0ICwgVDQ1ICwgVDQ2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCw0Nz4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yNDg8IFIgLCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUgLCB0eXBlbmFtZSBUNDYgLCB0eXBlbmFtZSBUNDcsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiAsIFQ0NyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgLCBUNDYgLCBUNDcgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDQ4PiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3I0OTwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0ICwgVDQ1ICwgVDQ2ICwgVDQ3ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiAsIHR5cGVuYW1lIFQ0MyAsIHR5cGVuYW1lIFQ0NCAsIHR5cGVuYW1lIFQ0NSAsIHR5cGVuYW1lIFQ0NiAsIHR5cGVuYW1lIFQ0NyAsIHR5cGVuYW1lIFQ0OCwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0ICwgVDQ1ICwgVDQ2ICwgVDQ3ICwgVDQ4IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiAsIFQ0NyAsIFQ0OCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNDk+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjUwPCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgLCBUNDYgLCBUNDcgLCBUNDggPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ICwgdHlwZW5hbWUgVDQwICwgdHlwZW5hbWUgVDQxICwgdHlwZW5hbWUgVDQyICwgdHlwZW5hbWUgVDQzICwgdHlwZW5hbWUgVDQ0ICwgdHlwZW5hbWUgVDQ1ICwgdHlwZW5hbWUgVDQ2ICwgdHlwZW5hbWUgVDQ3ICwgdHlwZW5hbWUgVDQ4ICwgdHlwZW5hbWUgVDQ5LCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgLCBUNDYgLCBUNDcgLCBUNDggLCBUNDkgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0ICwgVDQ1ICwgVDQ2ICwgVDQ3ICwgVDQ4ICwgVDQ5IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCw1MD4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yNTE8IFIgLCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiAsIFQ0NyAsIFQ0OCAsIFQ0OSA+IHR5cGVzOwotfTsKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY29tcG9uZW50c19pbXBsL2FyaXR5NTBfMS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHk1MF8xLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDM3YTU2Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHk1MF8xLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbgotCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX3N5bnRheCAgICAgdHlwZSBtYWNybyB0byB1c2UKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY2MgICAgICAgICBlbXB0eSBvciBjYyBzcGVjaWZpZXIgCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2VsbCAgICAgICAgZW1wdHkgb3IgIi4uLiIKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY3YgICAgICAgICBlbXB0eSBvciBjdiBxdWFsaWZpZXJzCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2ZsYWdzICAgICAgc2luZ2xlIGRlY2ltYWwgaW50ZWdlciBlbmNvZGluZyB0aGUgZmxhZ3MKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfbiAgICAgICAgICBudW1iZXIgb2YgY29tcG9uZW50IHR5cGVzIChhcml0eSsxKQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9hcml0eSAgICAgIGN1cnJlbnQgYXJpdHkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHlwZSAgICAgICBtYWNybyB0aGF0IGV4cGFuZHMgdG8gdGhlIHR5cGUKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHBsYXJncyhwKSB0ZW1wbGF0ZSBhcmd1bWVudHMgd2l0aCBnaXZlbiBwcmVmaXgKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfcGFyYW1zKHApICBwYXJhbWV0ZXJzIHdpdGggZ2l2ZW4gcHJlZml4Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NvbXBvbmVudHNfaW1wbC9hcml0eTQwXzEuaHBwPgotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCw0MT4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yNDI8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCw0Mj4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yNDM8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCw0Mz4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yNDQ8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiAsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCw0ND4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yNDU8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiAsIHR5cGVuYW1lIFQ0MyAsIHR5cGVuYW1lIFQ0NCwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCw0NT4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yNDY8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiAsIHR5cGVuYW1lIFQ0MyAsIHR5cGVuYW1lIFQ0NCAsIHR5cGVuYW1lIFQ0NSwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0ICwgVDQ1IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCw0Nj4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yNDc8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0ICwgVDQ1ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiAsIHR5cGVuYW1lIFQ0MyAsIHR5cGVuYW1lIFQ0NCAsIHR5cGVuYW1lIFQ0NSAsIHR5cGVuYW1lIFQ0NiwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0ICwgVDQ1ICwgVDQ2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCw0Nz4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yNDg8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0ICwgVDQ1ICwgVDQ2ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiAsIHR5cGVuYW1lIFQ0MyAsIHR5cGVuYW1lIFQ0NCAsIHR5cGVuYW1lIFQ0NSAsIHR5cGVuYW1lIFQ0NiAsIHR5cGVuYW1lIFQ0NywgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiAsIFQ0NyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0ICwgVDQ1ICwgVDQ2ICwgVDQ3IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCw0OD4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yNDk8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0ICwgVDQ1ICwgVDQ2ICwgVDQ3ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiAsIHR5cGVuYW1lIFQ0MyAsIHR5cGVuYW1lIFQ0NCAsIHR5cGVuYW1lIFQ0NSAsIHR5cGVuYW1lIFQ0NiAsIHR5cGVuYW1lIFQ0NyAsIHR5cGVuYW1lIFQ0OCwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiAsIFQ0NyAsIFQ0OCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0ICwgVDQ1ICwgVDQ2ICwgVDQ3ICwgVDQ4IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCw0OT4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yNTA8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0ICwgVDQ1ICwgVDQ2ICwgVDQ3ICwgVDQ4ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiAsIHR5cGVuYW1lIFQ0MyAsIHR5cGVuYW1lIFQ0NCAsIHR5cGVuYW1lIFQ0NSAsIHR5cGVuYW1lIFQ0NiAsIHR5cGVuYW1lIFQ0NyAsIHR5cGVuYW1lIFQ0OCAsIHR5cGVuYW1lIFQ0OSwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiAsIFQ0NyAsIFQ0OCAsIFQ0OSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0ICwgVDQ1ICwgVDQ2ICwgVDQ3ICwgVDQ4ICwgVDQ5IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCw1MD4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yNTE8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0ICwgVDQ1ICwgVDQ2ICwgVDQ3ICwgVDQ4ICwgVDQ5ID4gdHlwZXM7Ci19OwotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvbWFzdGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NvbXBvbmVudHNfaW1wbC9tYXN0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYWFmNjNlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NvbXBvbmVudHNfaW1wbC9tYXN0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb24KLQotI2lmICAgTkROQk9PU1RfRlRfQVJJVFlfTE9PUF9QUkVGSVgKLQotIyAgIGlmbmRlZiBORE5CT09TVF9GVF9ERVRBSUxfQ09NUE9ORU5UU19JTVBMX01BU1RFUl9IUFBfSU5DTFVERUQKLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfREVUQUlMX0NPTVBPTkVOVFNfSU1QTF9NQVNURVJfSFBQX0lOQ0xVREVECi0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL2VtcHR5LmhwcD4KLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL2lkZW50aXR5LmhwcD4KLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2RlYy5ocHA+Ci0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcHVuY3R1YXRpb24vY29tbWFfaWYuaHBwPgotIyAgIGVuZGlmCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfdHlwZV9uYW1lCi0KLSMgICBpZiAhTkROQk9PU1RfRlRfbWZwCi0KLSMgICAgIGRlZmluZSBORE5CT09TVF9GVF90eXBlcyBcCi0gICAgICAgICAgUiBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9GVF9hcml0eSkgTkROQk9PU1RfRlRfcGFyYW1zKE5ETkJPT1NUX1BQX0VNUFRZKQotIyAgIGVsc2UKLQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0ZUX3R5cGVzIFwKLSAgICAgICAgICBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+Ojp0eXBlIFwKLSAgICAgICAgICBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9ERUMoTkROQk9PU1RfRlRfYXJpdHkpKSBcCi0gICAgICAgICAgTkROQk9PU1RfRlRfcGFyYW1zKE5ETkJPT1NUX1BQX0VNUFRZKQotCi0jICAgZW5kaWYKLQotI2VsaWYgTkROQk9PU1RfRlRfQVJJVFlfTE9PUF9JU19JVEVSQVRJTkcKLQotdGVtcGxhdGU8IE5ETkJPT1NUX0ZUX3RwbGFyZ3MoTkROQk9PU1RfUFBfSURFTlRJVFkodHlwZW5hbWUpKSwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfdHlwZSwgTD4KLXsKLSAgdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLSAgdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci0KLSAgdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF90eXBlLCBMPiB0eXBlOwotICB0eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci0KLSAgdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsTkROQk9PU1RfRlRfYXJpdHk+IGZ1bmN0aW9uX2FyaXR5OwotCi0gIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKG1wbDo6dmVjdG9yLE5ETkJPT1NUX0ZUX24pPCBORE5CT09TVF9GVF90eXBlcyA+IHR5cGVzOwotfTsKLQotI2VsaWYgTkROQk9PU1RfRlRfQVJJVFlfTE9PUF9TVUZGSVgKLQotIyAgIHVuZGVmIE5ETkJPT1NUX0ZUX3R5cGVzCi0jICAgdW5kZWYgTkROQk9PU1RfRlRfdHlwZV9uYW1lCi0KLSNlbHNlCi0jICAgZXJyb3IgImF0dGVtcHQgdG8gdXNlIGFyaXR5IGxvb3AgbWFzdGVyIGZpbGUgd2l0aG91dCBsb29wIgotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2N2X3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jdl90cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MGU3YmYxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2N2X3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzQgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX0ZUX0RFVEFJTF9DVl9UUkFJVFNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0ZUX0RFVEFJTF9DVl9UUkFJVFNfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxjc3RkZGVmPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgXAotICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8PSAweDU4MikKLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9wb2ludGVyLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfcmVmZXJlbmNlLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvcHJvcGVydHlfdGFncy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBmdW5jdGlvbl90eXBlcyB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi0jaWYgISAoZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSBcCi0gICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDw9IDB4NTgyKSkKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGN2X3RyYWl0cyAKLXsgdHlwZWRlZiBub25fY3YgdGFnOyB0eXBlZGVmIFQgdHlwZTsgfTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBjdl90cmFpdHM8VCAmPiAgICAgCi17IHR5cGVkZWYgbm9uX2N2IHRhZzsgdHlwZWRlZiBUIHR5cGU7IH07Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgY3ZfdHJhaXRzPFQgKj4gICAgCi17IHR5cGVkZWYgbm9uX2N2IHRhZzsgdHlwZWRlZiBUIHR5cGU7IH07Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgY3ZfdHJhaXRzPFQgKiBjb25zdD4gCi17IHR5cGVkZWYgbm9uX2N2IHRhZzsgdHlwZWRlZiBUIHR5cGU7IH07Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgY3ZfdHJhaXRzPFQgKiB2b2xhdGlsZT4gCi17IHR5cGVkZWYgbm9uX2N2IHRhZzsgdHlwZWRlZiBUIHR5cGU7IH07Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgY3ZfdHJhaXRzPFQgKiBjb25zdCB2b2xhdGlsZT4gCi17IHR5cGVkZWYgbm9uX2N2IHRhZzsgdHlwZWRlZiBUIHR5cGU7IH07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBjdl90cmFpdHM8VCBjb25zdD4gCi17IHR5cGVkZWYgY29uc3Rfbm9uX3ZvbGF0aWxlIHRhZzsgdHlwZWRlZiBUIHR5cGU7IH07Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgY3ZfdHJhaXRzPFQgY29uc3QgJj4KLXsgdHlwZWRlZiBjb25zdF9ub25fdm9sYXRpbGUgdGFnOyB0eXBlZGVmIFQgdHlwZTsgfTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBjdl90cmFpdHM8VCBjb25zdCAqPiAKLXsgdHlwZWRlZiBjb25zdF9ub25fdm9sYXRpbGUgdGFnOyB0eXBlZGVmIFQgdHlwZTsgfTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBjdl90cmFpdHM8VCBjb25zdCAqIGNvbnN0PiAKLXsgdHlwZWRlZiBjb25zdF9ub25fdm9sYXRpbGUgdGFnOyB0eXBlZGVmIFQgdHlwZTsgfTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBjdl90cmFpdHM8VCBjb25zdCAqIHZvbGF0aWxlPiAKLXsgdHlwZWRlZiBjb25zdF9ub25fdm9sYXRpbGUgdGFnOyB0eXBlZGVmIFQgdHlwZTsgfTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBjdl90cmFpdHM8VCBjb25zdCAqIGNvbnN0IHZvbGF0aWxlPiAKLXsgdHlwZWRlZiBjb25zdF9ub25fdm9sYXRpbGUgdGFnOyB0eXBlZGVmIFQgdHlwZTsgfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGN2X3RyYWl0czxUIHZvbGF0aWxlPiAgCi17IHR5cGVkZWYgdm9sYXRpbGVfbm9uX2NvbnN0IHRhZzsgdHlwZWRlZiBUIHR5cGU7IH07Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgY3ZfdHJhaXRzPFQgdm9sYXRpbGUgJj4gIAoteyB0eXBlZGVmIHZvbGF0aWxlX25vbl9jb25zdCB0YWc7IHR5cGVkZWYgVCB0eXBlOyB9OwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGN2X3RyYWl0czxUIHZvbGF0aWxlICo+IAoteyB0eXBlZGVmIHZvbGF0aWxlX25vbl9jb25zdCB0YWc7IHR5cGVkZWYgVCB0eXBlOyB9OwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGN2X3RyYWl0czxUIHZvbGF0aWxlICogY29uc3Q+IAoteyB0eXBlZGVmIHZvbGF0aWxlX25vbl9jb25zdCB0YWc7IHR5cGVkZWYgVCB0eXBlOyB9OwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGN2X3RyYWl0czxUIHZvbGF0aWxlICogdm9sYXRpbGU+IAoteyB0eXBlZGVmIHZvbGF0aWxlX25vbl9jb25zdCB0YWc7IHR5cGVkZWYgVCB0eXBlOyB9OwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGN2X3RyYWl0czxUIHZvbGF0aWxlICogY29uc3Qgdm9sYXRpbGU+IAoteyB0eXBlZGVmIHZvbGF0aWxlX25vbl9jb25zdCB0YWc7IHR5cGVkZWYgVCB0eXBlOyB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgY3ZfdHJhaXRzPFQgY29uc3Qgdm9sYXRpbGU+ICAgCi17IHR5cGVkZWYgY3ZfcXVhbGlmaWVkIHRhZzsgdHlwZWRlZiBUIHR5cGU7IH07Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgY3ZfdHJhaXRzPFQgY29uc3Qgdm9sYXRpbGUgJj4KLXsgdHlwZWRlZiBjdl9xdWFsaWZpZWQgdGFnOyB0eXBlZGVmIFQgdHlwZTsgfTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBjdl90cmFpdHM8VCBjb25zdCB2b2xhdGlsZSAqPgoteyB0eXBlZGVmIGN2X3F1YWxpZmllZCB0YWc7IHR5cGVkZWYgVCB0eXBlOyB9OwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGN2X3RyYWl0czxUIGNvbnN0IHZvbGF0aWxlICogY29uc3Q+Ci17IHR5cGVkZWYgY3ZfcXVhbGlmaWVkIHRhZzsgdHlwZWRlZiBUIHR5cGU7IH07Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgY3ZfdHJhaXRzPFQgY29uc3Qgdm9sYXRpbGUgKiB2b2xhdGlsZT4KLXsgdHlwZWRlZiBjdl9xdWFsaWZpZWQgdGFnOyB0eXBlZGVmIFQgdHlwZTsgfTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBjdl90cmFpdHM8VCBjb25zdCB2b2xhdGlsZSAqIGNvbnN0IHZvbGF0aWxlPgoteyB0eXBlZGVmIGN2X3F1YWxpZmllZCB0YWc7IHR5cGVkZWYgVCB0eXBlOyB9OwotCi0jZWxzZQotdGVtcGxhdGU8c3RkOjpzaXplX3Q+IHN0cnVjdCBjdl90YWdfaW1wbDsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgY3ZfdGFnX2ltcGw8MT4geyB0eXBlZGVmIG5vbl9jdiB0eXBlO307Ci10ZW1wbGF0ZTw+IHN0cnVjdCBjdl90YWdfaW1wbDwyPiB7IHR5cGVkZWYgY29uc3Rfbm9uX3ZvbGF0aWxlIHR5cGU7IH07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBjdl90YWdfaW1wbDwzPiB7IHR5cGVkZWYgdm9sYXRpbGVfbm9uX2NvbnN0IHR5cGU7IH07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBjdl90YWdfaW1wbDw0PiB7IHR5cGVkZWYgY3ZfcXVhbGlmaWVkIHR5cGU7IH07Ci0KLXR5cGVkZWYgY2hhciAoJiBjYXNlXzEpWzFdOwotdHlwZWRlZiBjaGFyICgmIGNhc2VfMilbMl07Ci10eXBlZGVmIGNoYXIgKCYgY2FzZV8zKVszXTsKLXR5cGVkZWYgY2hhciAoJiBjYXNlXzQpWzRdOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjYXNlXzEgc3dpdGNoX2N2KFQgKik7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjYXNlXzIgc3dpdGNoX2N2KFQgY29uc3QgKik7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjYXNlXzMgc3dpdGNoX2N2KFQgdm9sYXRpbGUgKik7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjYXNlXzQgc3dpdGNoX2N2KFQgY29uc3Qgdm9sYXRpbGUgKik7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgICAgICAgICAgICAgICAgKiByZWZfdG9fcHRyKFQgJik7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGNvbnN0ICAgICAgICAgICogcmVmX3RvX3B0cihUIGNvbnN0ICYpOwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCB2b2xhdGlsZSAgICAgICAqIHJlZl90b19wdHIoVCB2b2xhdGlsZSAmKTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgY29uc3Qgdm9sYXRpbGUgKiByZWZfdG9fcHRyKFQgY29uc3Qgdm9sYXRpbGUgJik7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgICAgICAgICAgICAgICAgKiByZWZfdG9fcHRyKFQgKiBjb25zdCB2b2xhdGlsZSAmKTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBjdl9jb2RlCi17Ci0gIHN0YXRpYyBUIF90OwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gCi0gICAgICBzaXplb2YoOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6c3dpdGNoX2N2KAotICAgICAgICAgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6cmVmX3RvX3B0cihfdCkgKSApKTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBjdl90cmFpdHMgCi17Ci0gIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OmN2X3RhZ19pbXBsPCAKLSAgICA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpjdl9jb2RlPFQ+Ojp2YWx1ZSA+Ojp0eXBlCi0gIHRhZzsKLQotICAvLyBtYXkgcmVxdWlyZSBCb29zdC5UeXBlVHJhaXRzIGJyb2tlbiBjb21waWxlciBzcGVjaWFsaXphdGlvbnMKLSAgLy8gdG8gd29yawotICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfY3Y8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfcG9pbnRlcjwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0eXBlIAotICAgICAgICAgICAgICA+Ojp0eXBlIAotICAgICAgICAgID46OnR5cGUgdHlwZTsgCi19OwotI2VuZGlmCi0KLX0gfSB9IC8vIG5hbWVzcGFjZSBuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbAotCi0jZW5kaWYKLSAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2VuY29kaW5nL2FsaWFzZXNfZGVmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2VuY29kaW5nL2FsaWFzZXNfZGVmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzQxNjRkNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9lbmNvZGluZy9hbGlhc2VzX2RlZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbnMKLQotI2RlZmluZSBjYWxsYWJsZV9idWlsdGluIE5ETkJPT1NUX0ZUX2NhbGxhYmxlX2J1aWx0aW4KLSNkZWZpbmUgbWVtYmVyICAgICAgICAgICBORE5CT09TVF9GVF9tZW1iZXJfcG9pbnRlcgotI2RlZmluZSBub25fbWVtYmVyICAgICAgIE5ETkJPT1NUX0ZUX25vbl9tZW1iZXIKLSNkZWZpbmUgdmFyaWFkaWMgICAgICAgICBORE5CT09TVF9GVF92YXJpYWRpYwotI2RlZmluZSBub25fdmFyaWFkaWMgICAgIE5ETkJPT1NUX0ZUX25vbl92YXJpYWRpYwotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9lbmNvZGluZy9hbGlhc2VzX3VuZGVmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2VuY29kaW5nL2FsaWFzZXNfdW5kZWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZDRlNTc3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2VuY29kaW5nL2FsaWFzZXNfdW5kZWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb25zCi0KLSN1bmRlZiBjYWxsYWJsZV9idWlsdGluCi0jdW5kZWYgbWVtYmVyCi0jdW5kZWYgbm9uX21lbWJlcgotI3VuZGVmIHZhcmlhZGljCi0jdW5kZWYgbm9uX3ZhcmlhZGljCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2VuY29kaW5nL2RlZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9lbmNvZGluZy9kZWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzMzNDQ3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2VuY29kaW5nL2RlZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbnMKLQotLy8gVHlwZSBlbmNvZGluZzoKLS8vCi0vLyBiaXQgMDogY2FsbGFibGUgYnVpbHRpbgotLy8gYml0IDE6IG5vbiBtZW1iZXIKLS8vIGJpdCAyOiBuYWtlZCBmdW5jdGlvbgotLy8gYml0IDM6IHBvaW50ZXIKLS8vIGJpdCA0OiByZWZlcmVuY2UKLS8vIGJpdCA1OiBtZW1iZXIgcG9pbnRlcgotLy8gYml0IDY6IG1lbWJlciBmdW5jdGlvbiBwb2ludGVyCi0vLyBiaXQgNzogbWVtYmVyIG9iamVjdCBwb2ludGVyCi0KLSNkZWZpbmUgTkROQk9PU1RfRlRfdHlwZV9tYXNrICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwZmYgLy8gMTExMSAxMTExIAotI2RlZmluZSBORE5CT09TVF9GVF9jYWxsYWJsZV9idWlsdGluICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAvLyAwMDAwIDAwMDEKLSNkZWZpbmUgTkROQk9PU1RfRlRfbm9uX21lbWJlciAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIgLy8gMDAwMCAwMDEwCi0jZGVmaW5lIE5ETkJPT1NUX0ZUX2Z1bmN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA3IC8vIDAwMDAgMDExMQotI2RlZmluZSBORE5CT09TVF9GVF9wb2ludGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwYiAvLyAwMDAwIDEwMTEKLSNkZWZpbmUgTkROQk9PU1RfRlRfcmVmZXJlbmNlICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTMgLy8gMDAwMSAwMDExCi0jZGVmaW5lIE5ETkJPT1NUX0ZUX25vbl9tZW1iZXJfY2FsbGFibGVfYnVpbHRpbiAgICAgICAgICAweDAwMDAwMDAzIC8vIDAwMDAgMDAxMQotI2RlZmluZSBORE5CT09TVF9GVF9tZW1iZXJfcG9pbnRlciAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAyMCAvLyAwMDEwIDAwMDAKLSNkZWZpbmUgTkROQk9PU1RfRlRfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXIgICAgICAgICAgICAgIDB4MDAwMDAwNjEgLy8gMDExMCAwMDAxCi0jZGVmaW5lIE5ETkJPT1NUX0ZUX21lbWJlcl9vYmplY3RfcG9pbnRlciAgICAgICAgICAgICAgICAweDAwMDAwMGEzIC8vIDEwMTAgMDAwMQotI2RlZmluZSBORE5CT09TVF9GVF9tZW1iZXJfb2JqZWN0X3BvaW50ZXJfZmxhZ3MgICAgICAgICAgMHgwMDAwMDJhMwotCi0jZGVmaW5lIE5ETkJPT1NUX0ZUX3ZhcmlhZGljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTAwCi0jZGVmaW5lIE5ETkJPT1NUX0ZUX25vbl92YXJpYWRpYyAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMjAwCi0jZGVmaW5lIE5ETkJPT1NUX0ZUX3ZhcmlhZGljX21hc2sgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMzAwCi0KLSNkZWZpbmUgTkROQk9PU1RfRlRfY29uc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA0MDAKLSNkZWZpbmUgTkROQk9PU1RfRlRfdm9sYXRpbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA4MDAKLQotI2RlZmluZSBORE5CT09TVF9GVF9kZWZhdWx0X2NjICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwODAwMAotI2RlZmluZSBORE5CT09TVF9GVF9jY19tYXNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMGZmODAwMAotCi0jZGVmaW5lIE5ETkJPT1NUX0ZUX2tpbmRfbWFzayAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMGZjIAotCi0jZGVmaW5lIE5ETkJPT1NUX0ZUX2ZsYWdzX21hc2sgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwZmZmCi0jZGVmaW5lIE5ETkJPT1NUX0ZUX2Z1bGxfbWFzayAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwZmYwZmZmCi0KLSNkZWZpbmUgTkROQk9PU1RfRlRfYXJpdHlfc2hpZnQgICAgICAgICAgICAgICAgICAgICAgICAgIDI0Ci0jZGVmaW5lIE5ETkJPT1NUX0ZUX2FyaXR5X21hc2sgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmMDAwMDAwCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2VuY29kaW5nL3VuZGVmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2VuY29kaW5nL3VuZGVmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWYxMjMyNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9lbmNvZGluZy91bmRlZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbgotCi0jdW5kZWYgTkROQk9PU1RfRlRfdHlwZV9tYXNrCi0jdW5kZWYgTkROQk9PU1RfRlRfa2luZF9tYXNrCi0jdW5kZWYgTkROQk9PU1RfRlRfY2FsbGFibGVfYnVpbHRpbgotI3VuZGVmIE5ETkJPT1NUX0ZUX25vbl9tZW1iZXIKLSN1bmRlZiBORE5CT09TVF9GVF9mdW5jdGlvbgotI3VuZGVmIE5ETkJPT1NUX0ZUX3BvaW50ZXIKLSN1bmRlZiBORE5CT09TVF9GVF9yZWZlcmVuY2UKLSN1bmRlZiBORE5CT09TVF9GVF9ub25fbWVtYmVyX2NhbGxhYmxlX2J1aWx0aW4KLSN1bmRlZiBORE5CT09TVF9GVF9tZW1iZXJfcG9pbnRlcgotI3VuZGVmIE5ETkJPT1NUX0ZUX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyCi0jdW5kZWYgTkROQk9PU1RfRlRfbWVtYmVyX29iamVjdF9wb2ludGVyCi0jdW5kZWYgTkROQk9PU1RfRlRfbWVtYmVyX29iamVjdF9wb2ludGVyX2ZsYWdzCi0KLSN1bmRlZiBORE5CT09TVF9GVF92YXJpYWRpYwotI3VuZGVmIE5ETkJPT1NUX0ZUX25vbl92YXJpYWRpYwotI3VuZGVmIE5ETkJPT1NUX0ZUX3ZhcmlhZGljX21hc2sKLQotI3VuZGVmIE5ETkJPT1NUX0ZUX2NvbnN0Ci0jdW5kZWYgTkROQk9PU1RfRlRfdm9sYXRpbGUKLQotI3VuZGVmIE5ETkJPT1NUX0ZUX2RlZmF1bHRfY2MKLSN1bmRlZiBORE5CT09TVF9GVF9jY19tYXNrCi0KLSN1bmRlZiBORE5CT09TVF9GVF9mbGFnc19tYXNrCi0jdW5kZWYgTkROQk9PU1RfRlRfZnVsbF9tYXNrCi0KLSN1bmRlZiBORE5CT09TVF9GVF9hcml0eV9tYXNrCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX2FyaXR5X2xvb3AuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfYXJpdHlfbG9vcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyYjU5MWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfYXJpdHlfbG9vcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDkgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb24KLQotI2lmbmRlZiBORE5CT09TVF9GVF9QUkVQUk9DRVNTSU5HX01PREUKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfbWZwICAgICAgICAwIG9yIDEgPD0+IG1lbWJlciBmdW5jdGlvbiBwb2ludGVyPwotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF90eXBlX25hbWUgIE5ETkJPT1NUX0ZUX3R5cGUgLS0+ICJSICgqIC4uLl90eXBlX25hbWUpKCkiIChwYXNzMikKLSNlbmRpZgotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9zeW50YXggICAgIHR5cGUgbWFjcm8gdG8gdXNlCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2NjICAgICAgICAgZW1wdHkgb3IgY2Mgc3BlY2lmaWVyIAotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9lbGwgICAgICAgIGVtcHR5IG9yICIuLi4iCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2N2ICAgICAgICAgZW1wdHkgb3IgY3YgcXVhbGlmaWVycwotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9mbGFncyAgICAgIHNpbmdsZSBkZWNpbWFsIGludGVnZXIgZW5jb2RpbmcgdGhlIGZsYWdzCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX24gICAgICAgICAgbnVtYmVyIG9mIGNvbXBvbmVudCB0eXBlcyAoYXJpdHkrMSkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfYXJpdHkgICAgICBjdXJyZW50IGFyaXR5Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3R5cGUgICAgICAgbWFjcm8gdGhhdCBleHBhbmRzIHRvIHRoZSB0eXBlCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3RwbGFyZ3MocCkgdGVtcGxhdGUgYXJndW1lbnRzIHdpdGggZ2l2ZW4gcHJlZml4Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3BhcmFtcyhwKSAgcGFyYW1ldGVycyB3aXRoIGdpdmVuIHByZWZpeAotCi0jaWZkZWYgX19XQVZFX18KLSMgICBwcmFnbWEgd2F2ZSBvcHRpb24ocHJlc2VydmU6IDApCi0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9GVF9BUklUWV9MT09QX0lTX0lURVJBVElORwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX0ZUX0FMX1BSRVBST0NFU1NFRCBcCi0gICAgICAgIE5ETkJPT1NUX0ZUX0FMX0ZJTEUoTkROQk9PU1RfRlRfYWxfcGF0aCxORE5CT09TVF9GVF9GUk9NX0FSSVRZLE5ETkJPT1NUX0ZUX21mcCkKLQotIyAgIGRlZmluZSBORE5CT09TVF9GVF9BTF9GSUxFKGJhc2VfcGF0aCxtYXhfYXJpdHksbWZwKSBcCi0gICAgICAgIE5ETkJPT1NUX0ZUX0FMX0ZJTEVfSShiYXNlX3BhdGgsbWF4X2FyaXR5LG1mcCkKLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfQUxfRklMRV9JKGJhc2VfcGF0aCxtYXhfYXJpdHksbWZwKSBcCi0gICAgICAgIDxiYXNlX3BhdGgvYXJpdHkgIyMgbWF4X2FyaXR5ICMjIF8gIyMgbWZwLmhwcD4KLQotIyAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX0ZUX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgICAgaWYgTkROQk9PU1RfRlRfTUFYX0FSSVRZIDwgMTAKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX0ZUX0ZST01fQVJJVFkgMCAKLSMgICAgIGVsaWYgTkROQk9PU1RfRlRfTUFYX0FSSVRZIDwgMjAKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX0ZUX0ZST01fQVJJVFkgMTAKLSMgICAgIGVsaWYgTkROQk9PU1RfRlRfTUFYX0FSSVRZIDwgMzAKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX0ZUX0ZST01fQVJJVFkgMjAKLSMgICAgIGVsaWYgTkROQk9PU1RfRlRfTUFYX0FSSVRZIDwgNDAKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX0ZUX0ZST01fQVJJVFkgMzAKLSMgICAgIGVuZGlmCi0KLSMgICAgIGlmIE5ETkJPT1NUX0ZUX0ZST01fQVJJVFkKLSMgICAgICAgaW5jbHVkZSBORE5CT09TVF9GVF9BTF9QUkVQUk9DRVNTRUQKLSMgICAgIGVuZGlmCi0KLSMgICBlbGlmICFkZWZpbmVkKE5ETkJPT1NUX0ZUX0ZST01fQVJJVFkpIC8vIHNpbmdsZSBwYXNzIHByZXByb2Nlc3NpbmcKLSMgICAgIGRlZmluZSBORE5CT09TVF9GVF9GUk9NX0FSSVRZIDAKLQotIyAgIGVsaWYgTkROQk9PU1RfRlRfRlJPTV9BUklUWSA+IDAgICAgICAgLy8gYXJpdHkyMCBpbmNsdWRlcyBhcml0eTEwCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgaW5jbHVkZSBORE5CT09TVF9GVF9BTF9QUkVQUk9DRVNTRUQKLSMgICBlbmRpZgotCi0jICAgdW5kZWYgTkROQk9PU1RfRlRfQUxfUFJFUFJPQ0VTU0VECi0KLSMgICB1bmRlZiBORE5CT09TVF9GVF9BTF9GSUxFCi0jICAgdW5kZWYgTkROQk9PU1RfRlRfQUxfRklMRV9JCi0KLSMgICBpZiBORE5CT09TVF9GVF9NQVhfQVJJVFkgPiBORE5CT09TVF9GVF9GUk9NX0FSSVRZCi0KLSMgICAgIGlmbmRlZiBORE5CT09TVF9GVF9ERVRBSUxfQVJJVFlfTE9PUF9IUFBfSU5DTFVERUQKLSMgICAgIGRlZmluZSBORE5CT09TVF9GVF9ERVRBSUxfQVJJVFlfTE9PUF9IUFBfSU5DTFVERUQKLSMgICAgICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgICAgICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWF0LmhwcD4KLSMgICAgICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9pZi5ocHA+Ci0jICAgICAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvaW5jLmhwcD4KLSMgICAgICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9lbXB0eS5ocHA+Ci0jICAgICAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvZXhwYW5kLmhwcD4KLSMgICAgICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2l0ZXJhdGUuaHBwPgotIyAgICAgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fcGFyYW1zLmhwcD4KLSMgICAgICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3NoaWZ0ZWRfcGFyYW1zLmhwcD4KLSMgICAgICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3RyYWlsaW5nX3BhcmFtcy5ocHA+Ci0jICAgICBlbmRpZgotCi0jICAgICBkZWZpbmUgTkROQk9PU1RfRlRfQUxfSU5DTFVERV9GSUxFIDxORE5CT09TVF9GVF9hbF9wYXRoL21hc3Rlci5ocHA+Ci0KLSMgICAgIGRlZmluZSBORE5CT09TVF9GVF9BUklUWV9MT09QX1BSRUZJWCAxCi0jICAgICBpbmNsdWRlIE5ETkJPT1NUX0ZUX0FMX0lOQ0xVREVfRklMRQotIyAgICAgdW5kZWYgIE5ETkJPT1NUX0ZUX0FSSVRZX0xPT1BfUFJFRklYCi0KLSMgICAgIGlmICFORE5CT09TVF9QUF9JU19JVEVSQVRJTkcKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEgTkROQk9PU1RfRlRfQUxfSU5DTFVERV9GSUxFCi0jICAgICBlbGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpID09IDEKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIgTkROQk9PU1RfRlRfQUxfSU5DTFVERV9GSUxFCi0jICAgICBlbHNlCi0jICAgICAgIGVycm9yICJsb29wcyBuZXN0ZWQgdG9vIGRlZXBseSIKLSMgICAgIGVuZGlmCi0KLSMgICAgIGRlZmluZSBORE5CT09TVF9GVF9hcml0eSBORE5CT09TVF9QUF9JVEVSQVRJT04oKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0ZUX24gICAgIE5ETkJPT1NUX1BQX0lOQyhORE5CT09TVF9GVF9hcml0eSkKLQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0ZUX3R5cGUgXAotICAgICAgICAgIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyxORE5CT09TVF9GVF90eXBlX25hbWUgTkROQk9PU1RfUFBfRU1QVFkpXAotICAgICAgICAgICAgICAgKE5ETkJPT1NUX0ZUX3BhcmFtcyhORE5CT09TVF9QUF9FTVBUWSkgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdgotCi0jICAgICBkZWZpbmUgTkROQk9PU1RfRlRfdHBsYXJncyhwcmVmeCkgXAotICAgICAgICAgIHByZWZ4KCkgUiBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhORE5CT09TVF9GVF9hcml0eSxwcmVmeCgpIFQpCi0KLSMgICAgIGlmICFORE5CT09TVF9GVF9tZnAKLQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfRlRfcGFyYW1zKHByZWZ4KSBcCi0gICAgICAgICAgICBORE5CT09TVF9QUF9JRihORE5CT09TVF9GVF9hcml0eSxORE5CT09TVF9QUF9FTlVNX1BBUkFNUywgXAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0gTkROQk9PU1RfUFBfVFVQTEVfRUFUKDIpKSggXAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9GVF9hcml0eSxwcmVmeCgpIFQpIAotIyAgICAgZWxzZQotCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9GVF9wYXJhbXMocHJlZngpIFwKLSAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fU0hJRlRFRF9QQVJBTVMoTkROQk9PU1RfRlRfYXJpdHkscHJlZngoKSBUKQotCi0jICAgICBlbmRpZgotCi0jICAgICBpZiAhTkROQk9PU1RfRlRfRlJPTV9BUklUWSAKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9MSU1JVFMgKE5ETkJPT1NUX0ZUX21mcCwgTkROQk9PU1RfRlRfTUFYX0FSSVRZKQotIyAgICAgZWxzZQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0xJTUlUUyBcCi0gICAgICAgICAgICAoTkROQk9PU1RfRlRfRlJPTV9BUklUWSsxLCBORE5CT09TVF9GVF9NQVhfQVJJVFkpCi0jICAgICBlbmRpZgotCi0jICAgICBkZWZpbmUgTkROQk9PU1RfRlRfQVJJVFlfTE9PUF9JU19JVEVSQVRJTkcgMQotIyAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLSMgICAgIHVuZGVmICBORE5CT09TVF9GVF9BUklUWV9MT09QX0lTX0lURVJBVElORwotCi0jICAgICB1bmRlZiBORE5CT09TVF9GVF9hcml0eQotIyAgICAgdW5kZWYgTkROQk9PU1RfRlRfcGFyYW1zCi0jICAgICB1bmRlZiBORE5CT09TVF9GVF90cGxhcmdzCi0jICAgICB1bmRlZiBORE5CT09TVF9GVF90eXBlCi0KLSMgICAgIGRlZmluZSBORE5CT09TVF9GVF9BUklUWV9MT09QX1NVRkZJWCAxCi0jICAgICBpbmNsdWRlIE5ETkJPT1NUX0ZUX0FMX0lOQ0xVREVfRklMRQotIyAgICAgdW5kZWYgIE5ETkJPT1NUX0ZUX0FSSVRZX0xPT1BfU1VGRklYCi0KLSMgICAgIHVuZGVmIE5ETkJPT1NUX0ZUX0FMX0lOQ0xVREVfRklMRQotIyAgIGVuZGlmCi0KLSMgICB1bmRlZiBORE5CT09TVF9GVF9GUk9NX0FSSVRZCi0KLSNlbHNlCi0jICAgZXJyb3IgImF0dGVtcHQgdG8gbmVzdCBhcml0eSBsb29wcyIKLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9wcF9jY19sb29wL21hc3Rlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9wcF9jY19sb29wL21hc3Rlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4MDBlMGQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfY2NfbG9vcC9tYXN0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTM2ICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gbm8gaW5jbHVkZSBndWFyZHMsIHRoaXMgZmlsZSBpcyBpbnRlbmRlZCBmb3IgbXVsdGlwbGUgaW5jbHVzaW9ucwotCi0jaWZkZWYgX19XQVZFX18KLS8vIHRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgZnJvbSB0aGUgbWFzdGVyLmhwcCBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeQotIyAgIHByYWdtYSB3YXZlIG9wdGlvbihwcmVzZXJ2ZTogMCkKLSNlbmRpZgotCi0KLSNpZiAhTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCi0KLSMgICBpZm5kZWYgTkROQk9PU1RfRlRfREVUQUlMX0NDX0xPT1BfTUFTVEVSX0hQUF9JTkNMVURFRAotIyAgIGRlZmluZSBORE5CT09TVF9GVF9ERVRBSUxfQ0NfTE9PUF9NQVNURVJfSFBQX0lOQ0xVREVECi0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9jb25maWcvY2NfbmFtZXMuaHBwPgotCi0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvc2l6ZS5ocHA+Ci0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2VsZW0uaHBwPgotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VsZW0uaHBwPgotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9pdGVyYXRlLmhwcD4KLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL2V4cGFuZC5ocHA+Ci0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9pbmMuaHBwPgotIyAgIGVuZGlmCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvZW5jb2RpbmcvZGVmLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvZW5jb2RpbmcvYWxpYXNlc19kZWYuaHBwPgotCi0jICAgZGVmaW5lICBORE5CT09TVF9QUF9GSUxFTkFNRV8xIFwKLSAgICAgICAgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9wcF9jY19sb29wL21hc3Rlci5ocHA+Ci0jICAgZGVmaW5lICBORE5CT09TVF9QUF9JVEVSQVRJT05fTElNSVRTIFwKLSAgICAgICAgKDAsTkROQk9PU1RfUFBfU0VRX1NJWkUoTkROQk9PU1RfRlRfQ0NfTkFNRVNfU0VRKS0xKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0jICAgaWYgIWRlZmluZWQoTkROQk9PU1RfRlRfY29uZmlnX3ZhbGlkKSAmJiBORE5CT09TVF9GVF9DQ19QUkVQUk9DRVNTSU5HCi0jICAgICBkZWZpbmUgTkROQk9PU1RfRlRfY2NfaWQgMQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0ZUX2NjX25hbWUgaW1wbGljaXRfY2MKLSMgICAgIGRlZmluZSBORE5CT09TVF9GVF9jYyBORE5CT09TVF9QUF9FTVBUWQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0ZUX2NvbmQgY2FsbGFibGVfYnVpbHRpbgotIyAgICAgaW5jbHVkZSBORE5CT09TVF9GVF9jY19maWxlCi0jICAgICB1bmRlZiBORE5CT09TVF9GVF9jb25kCi0jICAgICB1bmRlZiBORE5CT09TVF9GVF9jY19uYW1lCi0jICAgICB1bmRlZiBORE5CT09TVF9GVF9jYwotIyAgICAgdW5kZWYgTkROQk9PU1RfRlRfY2NfaWQKLSMgICBlbGlmICFkZWZpbmVkKE5ETkJPT1NUX0ZUX2NvbmZpZ192YWxpZCkgLy8gYW5kIGdlbmVyYXRpbmcgcHJlcHJvY2Vzc2VkIGZpbGUKLU5ETkJPT1NUX1BQX0VYUEFORCgjKSBpZm5kZWYgTkROQk9PU1RfRlRfY29uZmlnX3ZhbGlkCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgICBkZWZpbmUgTkROQk9PU1RfRlRfY2NfaWQgMQotTkROQk9PU1RfUFBfRVhQQU5EKCMpICAgZGVmaW5lIE5ETkJPT1NUX0ZUX2NjX25hbWUgaW1wbGljaXRfY2MKLU5ETkJPT1NUX1BQX0VYUEFORCgjKSAgIGRlZmluZSBORE5CT09TVF9GVF9jYyBORE5CT09TVF9QUF9FTVBUWQotTkROQk9PU1RfUFBfRVhQQU5EKCMpICAgZGVmaW5lIE5ETkJPT1NUX0ZUX2NvbmQgY2FsbGFibGVfYnVpbHRpbgotI2RlZmluZSBfKCkKLU5ETkJPT1NUX1BQX0VYUEFORCgjKSAgIGluY2x1ZGUgTkROQk9PU1RfRlRfY2NfZmlsZQotI3VuZGVmIF8KLU5ETkJPT1NUX1BQX0VYUEFORCgjKSAgIHVuZGVmIE5ETkJPT1NUX0ZUX2NvbmQKLU5ETkJPT1NUX1BQX0VYUEFORCgjKSAgIHVuZGVmIE5ETkJPT1NUX0ZUX2NjX25hbWUKLU5ETkJPT1NUX1BQX0VYUEFORCgjKSAgIHVuZGVmIE5ETkJPT1NUX0ZUX2NjCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgICB1bmRlZiBORE5CT09TVF9GVF9jY19pZAotTkROQk9PU1RfUFBfRVhQQU5EKCMpIGVsc2UKLU5ETkJPT1NUX1BQX0VYUEFORCgjKSAgIHVuZGVmIE5ETkJPT1NUX0ZUX2NvbmZpZ192YWxpZAotTkROQk9PU1RfUFBfRVhQQU5EKCMpIGVuZGlmCi0KLSMgICBlbHNlCi0jICAgICB1bmRlZiBORE5CT09TVF9GVF9jb25maWdfdmFsaWQKLSMgICBlbmRpZgotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2VuY29kaW5nL2FsaWFzZXNfdW5kZWYuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9lbmNvZGluZy91bmRlZi5ocHA+Ci0KLSNlbGlmIE5ETkJPT1NUX0ZUX0NDX1BSRVBST0NFU1NJTkcKLQotIyAgIGRlZmluZSBORE5CT09TVF9GVF9jY19pZCAgTkROQk9PU1RfUFBfSU5DKE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigxKSkKLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfY2NfaW5mIFwKLSAgICAgICAgTkROQk9PU1RfUFBfU0VRX0VMRU0oTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OKDEpLE5ETkJPT1NUX0ZUX0NDX05BTUVTX1NFUSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9GVF9jY19wcF9uYW1lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywwLE5ETkJPT1NUX0ZUX2NjX2luZikKLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfY2NfbmFtZSAgICBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsMSxORE5CT09TVF9GVF9jY19pbmYpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0ZUX2NjICAgICAgICAgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLDIsTkROQk9PU1RfRlRfY2NfaW5mKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX0ZUX2NvbmQgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX0ZUX0NDXyxORE5CT09TVF9GVF9jY19wcF9uYW1lKQotCi0jICAgaWYgTkROQk9PU1RfRlRfY29uZAotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0ZUX2NvbmZpZ192YWxpZCAxCi0jICAgICBpbmNsdWRlIE5ETkJPT1NUX0ZUX2NjX2ZpbGUKLSMgICBlbmRpZgotCi0jICAgdW5kZWYgTkROQk9PU1RfRlRfY29uZAotCi0jICAgdW5kZWYgTkROQk9PU1RfRlRfY2NfcHBfbmFtZQotIyAgIHVuZGVmIE5ETkJPT1NUX0ZUX2NjX25hbWUKLSMgICB1bmRlZiBORE5CT09TVF9GVF9jYwotCi0jICAgdW5kZWYgTkROQk9PU1RfRlRfY2NfaWQKLSMgICB1bmRlZiBORE5CT09TVF9GVF9jY19pbmYKLQotI2Vsc2UgLy8gaWYgZ2VuZXJhdGluZyBwcmVwcm9jZXNzZWQgZmlsZQotTkROQk9PU1RfUFBfRVhQQU5EKCMpIGRlZmluZSBORE5CT09TVF9GVF9jY19pZCBORE5CT09TVF9QUF9JTkMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfY2NfaW5mIFwKLSAgICAgICAgTkROQk9PU1RfUFBfU0VRX0VMRU0oTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksTkROQk9PU1RfRlRfQ0NfTkFNRVNfU0VRKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX0ZUX2NjX3BwX25hbWUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLDAsTkROQk9PU1RfRlRfY2NfaW5mKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX0ZUX0NDX0RFRihuYW1lLGluZGV4KSBcCi0gICAgICAgIG5hbWUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLGluZGV4LE5ETkJPT1NUX0ZUX2NjX2luZikKLU5ETkJPT1NUX1BQX0VYUEFORCgjKSBkZWZpbmUgTkROQk9PU1RfRlRfQ0NfREVGKE5ETkJPT1NUX0ZUX2NjX25hbWUsMSkKLU5ETkJPT1NUX1BQX0VYUEFORCgjKSBkZWZpbmUgTkROQk9PU1RfRlRfQ0NfREVGKE5ETkJPT1NUX0ZUX2NjLDIpCi0jICAgdW5kZWYgIE5ETkJPT1NUX0ZUX0NDX0RFRgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX0ZUX2NjX2NvbmRfdiBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfRlRfQ0NfLE5ETkJPT1NUX0ZUX2NjX3BwX25hbWUpCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgZGVmaW5lIE5ETkJPT1NUX0ZUX2NvbmQgTkROQk9PU1RfRlRfY2NfY29uZF92Ci0jICAgdW5kZWYgIE5ETkJPT1NUX0ZUX2NjX2NvbmRfdgotCi0jICAgdW5kZWYgTkROQk9PU1RfRlRfY2NfcHBfbmFtZQotIyAgIHVuZGVmIE5ETkJPT1NUX0ZUX2NjX2luZgotCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgaWYgTkROQk9PU1RfRlRfY29uZAotTkROQk9PU1RfUFBfRVhQQU5EKCMpICAgZGVmaW5lIE5ETkJPT1NUX0ZUX2NvbmZpZ192YWxpZCAxCi0jZGVmaW5lIF8oKQotTkROQk9PU1RfUFBfRVhQQU5EKCMpICAgaW5jbHVkZSBORE5CT09TVF9GVF9jY19maWxlCi0jdW5kZWYgXwotTkROQk9PU1RfUFBfRVhQQU5EKCMpIGVuZGlmCi0KLU5ETkJPT1NUX1BQX0VYUEFORCgjKSB1bmRlZiBORE5CT09TVF9GVF9jb25kCi0KLU5ETkJPT1NUX1BQX0VYUEFORCgjKSB1bmRlZiBORE5CT09TVF9GVF9jY19uYW1lCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgdW5kZWYgTkROQk9PU1RfRlRfY2MKLQotTkROQk9PU1RfUFBfRVhQQU5EKCMpIHVuZGVmIE5ETkJPT1NUX0ZUX2NjX2lkCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9wcF9jY19sb29wL3ByZXByb2Nlc3NlZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9wcF9jY19sb29wL3ByZXByb2Nlc3NlZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5MWVjMWEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfY2NfbG9vcC9wcmVwcm9jZXNzZWQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTIwICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gbm8gaW5jbHVkZSBndWFyZHMsIHRoaXMgZmlsZSBpcyBpbnRlbmRlZCBmb3IgbXVsdGlwbGUgaW5jbHVzaW9ucwotCi0vLyB0aGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGZyb20gdGhlIG1hc3Rlci5ocHAgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2NjX2lkIDEKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2NjX25hbWUgaW1wbGljaXRfY2MKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2NjIE5ETkJPT1NUX1BQX0VNUFRZCi0jIGRlZmluZSBORE5CT09TVF9GVF9jb25kIE5ETkJPT1NUX0ZUX0NDX0lNUExJQ0lUCi0jIGlmIE5ETkJPT1NUX0ZUX2NvbmQKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2NvbmZpZ192YWxpZCAxCi0jIGluY2x1ZGUgTkROQk9PU1RfRlRfY2NfZmlsZQotIyBlbmRpZgotIyB1bmRlZiBORE5CT09TVF9GVF9jb25kCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2NjX25hbWUKLSMgdW5kZWYgTkROQk9PU1RfRlRfY2MKLSMgdW5kZWYgTkROQk9PU1RfRlRfY2NfaWQKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2NjX2lkIDIKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2NjX25hbWUgY2RlY2xfY2MKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2NjIE5ETkJPT1NUX1BQX0lERU5USVRZKF9fY2RlY2wgKQotIyBkZWZpbmUgTkROQk9PU1RfRlRfY29uZCBORE5CT09TVF9GVF9DQ19DREVDTAotIyBpZiBORE5CT09TVF9GVF9jb25kCi0jIGRlZmluZSBORE5CT09TVF9GVF9jb25maWdfdmFsaWQgMQotIyBpbmNsdWRlIE5ETkJPT1NUX0ZUX2NjX2ZpbGUKLSMgZW5kaWYKLSMgdW5kZWYgTkROQk9PU1RfRlRfY29uZAotIyB1bmRlZiBORE5CT09TVF9GVF9jY19uYW1lCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2NjCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2NjX2lkCi0jIGRlZmluZSBORE5CT09TVF9GVF9jY19pZCAzCi0jIGRlZmluZSBORE5CT09TVF9GVF9jY19uYW1lIHN0ZGNhbGxfY2MKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2NjIE5ETkJPT1NUX1BQX0lERU5USVRZKF9fc3RkY2FsbCApCi0jIGRlZmluZSBORE5CT09TVF9GVF9jb25kIE5ETkJPT1NUX0ZUX0NDX1NURENBTEwKLSMgaWYgTkROQk9PU1RfRlRfY29uZAotIyBkZWZpbmUgTkROQk9PU1RfRlRfY29uZmlnX3ZhbGlkIDEKLSMgaW5jbHVkZSBORE5CT09TVF9GVF9jY19maWxlCi0jIGVuZGlmCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2NvbmQKLSMgdW5kZWYgTkROQk9PU1RfRlRfY2NfbmFtZQotIyB1bmRlZiBORE5CT09TVF9GVF9jYwotIyB1bmRlZiBORE5CT09TVF9GVF9jY19pZAotIyBkZWZpbmUgTkROQk9PU1RfRlRfY2NfaWQgNAotIyBkZWZpbmUgTkROQk9PU1RfRlRfY2NfbmFtZSBwYXNjYWxfY2MKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2NjIE5ETkJPT1NUX1BQX0lERU5USVRZKHBhc2NhbCApCi0jIGRlZmluZSBORE5CT09TVF9GVF9jb25kIE5ETkJPT1NUX0ZUX0NDX1BBU0NBTAotIyBpZiBORE5CT09TVF9GVF9jb25kCi0jIGRlZmluZSBORE5CT09TVF9GVF9jb25maWdfdmFsaWQgMQotIyBpbmNsdWRlIE5ETkJPT1NUX0ZUX2NjX2ZpbGUKLSMgZW5kaWYKLSMgdW5kZWYgTkROQk9PU1RfRlRfY29uZAotIyB1bmRlZiBORE5CT09TVF9GVF9jY19uYW1lCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2NjCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2NjX2lkCi0jIGRlZmluZSBORE5CT09TVF9GVF9jY19pZCA1Ci0jIGRlZmluZSBORE5CT09TVF9GVF9jY19uYW1lIGZhc3RjYWxsX2NjCi0jIGRlZmluZSBORE5CT09TVF9GVF9jYyBORE5CT09TVF9QUF9JREVOVElUWShfX2Zhc3RjYWxsKQotIyBkZWZpbmUgTkROQk9PU1RfRlRfY29uZCBORE5CT09TVF9GVF9DQ19GQVNUQ0FMTAotIyBpZiBORE5CT09TVF9GVF9jb25kCi0jIGRlZmluZSBORE5CT09TVF9GVF9jb25maWdfdmFsaWQgMQotIyBpbmNsdWRlIE5ETkJPT1NUX0ZUX2NjX2ZpbGUKLSMgZW5kaWYKLSMgdW5kZWYgTkROQk9PU1RfRlRfY29uZAotIyB1bmRlZiBORE5CT09TVF9GVF9jY19uYW1lCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2NjCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2NjX2lkCi0jIGRlZmluZSBORE5CT09TVF9GVF9jY19pZCA2Ci0jIGRlZmluZSBORE5CT09TVF9GVF9jY19uYW1lIGNscmNhbGxfY2MKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2NjIE5ETkJPT1NUX1BQX0lERU5USVRZKF9fY2xyY2FsbCApCi0jIGRlZmluZSBORE5CT09TVF9GVF9jb25kIE5ETkJPT1NUX0ZUX0NDX0NMUkNBTEwKLSMgaWYgTkROQk9PU1RfRlRfY29uZAotIyBkZWZpbmUgTkROQk9PU1RfRlRfY29uZmlnX3ZhbGlkIDEKLSMgaW5jbHVkZSBORE5CT09TVF9GVF9jY19maWxlCi0jIGVuZGlmCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2NvbmQKLSMgdW5kZWYgTkROQk9PU1RfRlRfY2NfbmFtZQotIyB1bmRlZiBORE5CT09TVF9GVF9jYwotIyB1bmRlZiBORE5CT09TVF9GVF9jY19pZAotIyBkZWZpbmUgTkROQk9PU1RfRlRfY2NfaWQgNwotIyBkZWZpbmUgTkROQk9PU1RfRlRfY2NfbmFtZSB0aGlzY2FsbF9jYwotIyBkZWZpbmUgTkROQk9PU1RfRlRfY2MgTkROQk9PU1RfUFBfSURFTlRJVFkoX190aGlzY2FsbCkKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2NvbmQgTkROQk9PU1RfRlRfQ0NfVEhJU0NBTEwKLSMgaWYgTkROQk9PU1RfRlRfY29uZAotIyBkZWZpbmUgTkROQk9PU1RfRlRfY29uZmlnX3ZhbGlkIDEKLSMgaW5jbHVkZSBORE5CT09TVF9GVF9jY19maWxlCi0jIGVuZGlmCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2NvbmQKLSMgdW5kZWYgTkROQk9PU1RfRlRfY2NfbmFtZQotIyB1bmRlZiBORE5CT09TVF9GVF9jYwotIyB1bmRlZiBORE5CT09TVF9GVF9jY19pZAotIyBkZWZpbmUgTkROQk9PU1RfRlRfY2NfaWQgOAotIyBkZWZpbmUgTkROQk9PU1RfRlRfY2NfbmFtZSB0aGlzY2FsbF9jYwotIyBkZWZpbmUgTkROQk9PU1RfRlRfY2MgTkROQk9PU1RfUFBfRU1QVFkKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2NvbmQgTkROQk9PU1RfRlRfQ0NfSU1QTElDSVRfVEhJU0NBTEwKLSMgaWYgTkROQk9PU1RfRlRfY29uZAotIyBkZWZpbmUgTkROQk9PU1RfRlRfY29uZmlnX3ZhbGlkIDEKLSMgaW5jbHVkZSBORE5CT09TVF9GVF9jY19maWxlCi0jIGVuZGlmCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2NvbmQKLSMgdW5kZWYgTkROQk9PU1RfRlRfY2NfbmFtZQotIyB1bmRlZiBORE5CT09TVF9GVF9jYwotIyB1bmRlZiBORE5CT09TVF9GVF9jY19pZAotIyBpZm5kZWYgTkROQk9PU1RfRlRfY29uZmlnX3ZhbGlkCi0jIGRlZmluZSBORE5CT09TVF9GVF9jY19pZCAxCi0jIGRlZmluZSBORE5CT09TVF9GVF9jY19uYW1lIGltcGxpY2l0X2NjCi0jIGRlZmluZSBORE5CT09TVF9GVF9jYyBORE5CT09TVF9QUF9FTVBUWQotIyBkZWZpbmUgTkROQk9PU1RfRlRfY29uZCAweDAwMDAwMDAxCi0jIGluY2x1ZGUgTkROQk9PU1RfRlRfY2NfZmlsZQotIyB1bmRlZiBORE5CT09TVF9GVF9jb25kCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2NjX25hbWUKLSMgdW5kZWYgTkROQk9PU1RfRlRfY2MKLSMgdW5kZWYgTkROQk9PU1RfRlRfY2NfaWQKLSMgZWxzZQotIyB1bmRlZiBORE5CT09TVF9GVF9jb25maWdfdmFsaWQKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX2xvb3AuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfbG9vcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiNmU3YmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfbG9vcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbnMKLQotI2lmbmRlZiBORE5CT09TVF9GVF9ERVRBSUxfUFBfTE9PUF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfRlRfREVUQUlMX1BQX0xPT1BfSFBQX0lOQ0xVREVECi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvZXhwYW5kLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9lbXB0eS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3B1bmN0dWF0aW9uL3BhcmVuLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2VuY29kaW5nL2RlZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2VuY29kaW5nL2FsaWFzZXNfZGVmLmhwcD4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfRlRfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGRlZmluZSBORE5CT09TVF9GVF9sb29wIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfY2NfbG9vcC9tYXN0ZXIuaHBwPgotI2Vsc2UKLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfbG9vcCBcCi0gICAgICAgIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfY2NfbG9vcC9wcmVwcm9jZXNzZWQuaHBwPgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0ZUX2FsX3BhdGgpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfY2NfZmlsZSBcCi0gICAgICAgIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfdmFyaWF0ZV9sb29wL3ByZXByb2Nlc3NlZC5ocHA+Ci0jICAgZGVmaW5lIE5ETkJPT1NUX0ZUX3ZhcmlhdGVfZmlsZSBcCi0gICAgICAgIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfYXJpdHlfbG9vcC5ocHA+Ci0KLSMgICBpZm5kZWYgTkROQk9PU1RfRlRfdHlwZV9mdW5jdGlvbgotIyAgIGRlZmluZSBORE5CT09TVF9GVF90eXBlX2Z1bmN0aW9uKGNjLG5hbWUpIE5ETkJPT1NUX0ZUX1NZTlRBWCggXAotICAgICAgUiBORE5CT09TVF9QUF9FTVBUWSxORE5CT09TVF9QUF9FTVBUWSxjYyxORE5CT09TVF9QUF9FTVBUWSxuYW1lLE5ETkJPT1NUX1BQX0VNUFRZKQotIyAgIGVuZGlmCi0jICAgaWZuZGVmIE5ETkJPT1NUX0ZUX3R5cGVfZnVuY3Rpb25fcG9pbnRlcgotIyAgIGRlZmluZSBORE5CT09TVF9GVF90eXBlX2Z1bmN0aW9uX3BvaW50ZXIoY2MsbmFtZSkgTkROQk9PU1RfRlRfU1lOVEFYKCBcCi0gICAgICBSIE5ETkJPT1NUX1BQX0VNUFRZLE5ETkJPT1NUX1BQX0xQQVJFTixjYywqIE5ETkJPT1NUX1BQX0VNUFRZLG5hbWUsTkROQk9PU1RfUFBfUlBBUkVOKQotIyAgIGVuZGlmCi0jICAgaWZuZGVmIE5ETkJPT1NUX0ZUX3R5cGVfZnVuY3Rpb25fcmVmZXJlbmNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX0ZUX3R5cGVfZnVuY3Rpb25fcmVmZXJlbmNlKGNjLG5hbWUpIE5ETkJPT1NUX0ZUX1NZTlRBWCggXAotICAgICAgUiBORE5CT09TVF9QUF9FTVBUWSxORE5CT09TVF9QUF9MUEFSRU4sY2MsJiBORE5CT09TVF9QUF9FTVBUWSxuYW1lLE5ETkJPT1NUX1BQX1JQQVJFTikKLSMgICBlbmRpZgotIyAgIGlmbmRlZiBORE5CT09TVF9GVF90eXBlX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyCi0jICAgZGVmaW5lIE5ETkJPT1NUX0ZUX3R5cGVfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXIoY2MsbmFtZSkgTkROQk9PU1RfRlRfU1lOVEFYKCBcCi0gICAgICBSIE5ETkJPT1NUX1BQX0VNUFRZLE5ETkJPT1NUX1BQX0xQQVJFTixjYyxUMDo6KiBORE5CT09TVF9QUF9FTVBUWSxuYW1lLE5ETkJPT1NUX1BQX1JQQVJFTikKLSMgICBlbmRpZgotCi0jICAgaW5jbHVkZSBORE5CT09TVF9GVF9sb29wCi0KLSMgICB1bmRlZiBORE5CT09TVF9GVF90eXBlX2Z1bmN0aW9uCi0jICAgdW5kZWYgTkROQk9PU1RfRlRfdHlwZV9mdW5jdGlvbl9wb2ludGVyCi0jICAgdW5kZWYgTkROQk9PU1RfRlRfdHlwZV9mdW5jdGlvbl9yZWZlcmVuY2UKLSMgICB1bmRlZiBORE5CT09TVF9GVF90eXBlX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyCi0KLSMgICB1bmRlZiBORE5CT09TVF9GVF92YXJpYXRpb25zCi0jICAgdW5kZWYgTkROQk9PU1RfRlRfdmFyaWF0ZV9maWxlCi0jICAgdW5kZWYgTkROQk9PU1RfRlRfY2NfZmlsZQotIyAgIHVuZGVmIE5ETkJPT1NUX0ZUX2FsX3BhdGgKLQotI2VsaWYgZGVmaW5lZChORE5CT09TVF9GVF9jY19maWxlKQotCi0jICAgaW5jbHVkZSBORE5CT09TVF9GVF9sb29wCi0jICAgdW5kZWYgTkROQk9PU1RfRlRfY2NfZmlsZQotCi0jZWxzZQotCi0jICAgZXJyb3IgImFyZ3VtZW50IG1pc3NpbmciCi0KLSNlbmRpZgotCi0jdW5kZWYgTkROQk9PU1RfRlRfbG9vcAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2VuY29kaW5nL2FsaWFzZXNfdW5kZWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9lbmNvZGluZy91bmRlZi5ocHA+Ci0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfcmV0YWdfZGVmYXVsdF9jYy9tYXN0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfcmV0YWdfZGVmYXVsdF9jYy9tYXN0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTJhNWJkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX3JldGFnX2RlZmF1bHRfY2MvbWFzdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgZ3VhcmRlZCBleHRlcm5hbGx5Ci0KLSNpZmRlZiBfX1dBVkVfXwotLy8gdGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBmcm9tIHRoZSBtYXN0ZXIuaHBwIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Ci0jICAgcHJhZ21hIHdhdmUgb3B0aW9uKHByZXNlcnZlOiAwKQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9QUF9WQUxVRSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9zbG90LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL3NlbGYuaHBwPgotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2VuY29kaW5nL2RlZi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2VuY29kaW5nL2FsaWFzZXNfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGZ1bmN0aW9uX3R5cGVzIHsKLQotbmFtZXNwYWNlIGRldGFpbAotewotICB0ZW1wbGF0ZTxjbGFzcyBUYWcsIGNsYXNzIFJlZlRhZz4gc3RydWN0IHNlbGVjdG9yX2JpdHMKLSAgewotIyAgIGRlZmluZSAgTkROQk9PU1RfUFBfVkFMVUUgbm9uX21lbWJlcnxtZW1iZXJ8bm9uX3ZhcmlhZGljfHZhcmlhZGljCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9BU1NJR05fU0xPVCgxKQotCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJpdHNfdCwgdmFsdWUgPSAoCi0gICAgICAgICg6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpiaXRzPFRhZz46OnZhbHVlICYgTkROQk9PU1RfRlRfZGVmYXVsdF9jYykgCi0gICAgICB8ICg6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpiaXRzPFJlZlRhZz46OnZhbHVlICYgTkROQk9PU1RfUFBfU0xPVCgxKSkKLSAgICApKTsKLSAgfTsKLQotICB0ZW1wbGF0ZTxiaXRzX3QgU2VsZWN0b3JCaXRzPiBzdHJ1Y3QgZGVmYXVsdF9jY190YWc7IAotICAKLSAgdGVtcGxhdGU8Y2xhc3MgVGFnLCBjbGFzcyBSZWZUYWc+IHN0cnVjdCByZXRhZ19kZWZhdWx0X2NjCi0gICAgOiBkZXRhaWw6OmNvbXBvdW5kX3RhZwotICAgICAgPCBUYWcsIGRldGFpbDo6ZGVmYXVsdF9jY190YWc8IAotICAgICAgICAgIDo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OnNlbGVjdG9yX2JpdHM8VGFnLFJlZlRhZz46OnZhbHVlID4gPgotICB7IH07Ci0KLSAgdGVtcGxhdGU8Yml0c190IFNlbGVjdG9yQml0cz4gc3RydWN0IGRlZmF1bHRfY2NfdGFnCi0gIHsKLSAgICB0eXBlZGVmIG51bGxfdGFnOjpiaXRzIGJpdHM7Ci0gICAgdHlwZWRlZiBudWxsX3RhZzo6bWFzayBtYXNrOwotICB9OwotCi0gIGNsYXNzIHRlc3RfY2xhc3M7Ci0gIHR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfY2NfbWFzaz4gY2NfbWFza19jb25zdGFudDsKLQotIyAgIGRlZmluZSBORE5CT09TVF9GVF9zZWxmIFwKLSAgICAgIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfcmV0YWdfZGVmYXVsdF9jYy9tYXN0ZXIuaHBwPgotCi0jICAgZGVmaW5lICBkZWZhdWx0X2NjXyBORE5CT09TVF9GVF9kZWZhdWx0X2NjCi0KLSMgICBkZWZpbmUgIE5ETkJPT1NUX1BQX1ZBTFVFIGRlZmF1bHRfY2NffG5vbl9tZW1iZXJ8bm9uX3ZhcmlhZGljCi0jICAgZGVmaW5lICBORE5CT09TVF9GVF90ZXN0ZXIgdm9pZCAoKnRlc3RlcikoKQotIyAgIGRlZmluZSAgTkROQk9PU1RfUFBfSU5ESVJFQ1RfU0VMRiBORE5CT09TVF9GVF9zZWxmCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9JTkNMVURFX1NFTEYoKQotCi0jICAgZGVmaW5lICBORE5CT09TVF9QUF9WQUxVRSBkZWZhdWx0X2NjX3xub25fbWVtYmVyfHZhcmlhZGljCi0jICAgZGVmaW5lICBORE5CT09TVF9GVF90ZXN0ZXIgdm9pZCAoKnRlc3RlcikoLi4uKQotIyAgIGRlZmluZSAgTkROQk9PU1RfUFBfSU5ESVJFQ1RfU0VMRiBORE5CT09TVF9GVF9zZWxmCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9JTkNMVURFX1NFTEYoKQotCi0jICAgZGVmaW5lICBORE5CT09TVF9QUF9WQUxVRSBkZWZhdWx0X2NjX3xtZW1iZXJ8bm9uX3ZhcmlhZGljCi0jICAgZGVmaW5lICBORE5CT09TVF9GVF90ZXN0ZXIgdm9pZCAodGVzdF9jbGFzczo6KnRlc3RlcikoKQotIyAgIGRlZmluZSAgTkROQk9PU1RfUFBfSU5ESVJFQ1RfU0VMRiBORE5CT09TVF9GVF9zZWxmCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9JTkNMVURFX1NFTEYoKQotCi0jICAgZGVmaW5lICBORE5CT09TVF9QUF9WQUxVRSBkZWZhdWx0X2NjX3xtZW1iZXJ8dmFyaWFkaWMKLSMgICBkZWZpbmUgIE5ETkJPT1NUX0ZUX3Rlc3RlciB2b2lkICh0ZXN0X2NsYXNzOjoqdGVzdGVyKSguLi4pCi0jICAgZGVmaW5lICBORE5CT09TVF9QUF9JTkRJUkVDVF9TRUxGIE5ETkJPT1NUX0ZUX3NlbGYKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lOQ0xVREVfU0VMRigpCi0KLSMgICB1bmRlZiAgIGRlZmF1bHRfY2NfCi0KLSMgICB1bmRlZiBORE5CT09TVF9GVF9zZWxmCi0KLX0gfSB9IC8vIG5hbWVzcGFjZSA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvZW5jb2RpbmcvYWxpYXNlc191bmRlZi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2VuY29kaW5nL3VuZGVmLmhwcD4KLQotI2Vsc2UgLy8gaWYgZGVmaW5lZChORE5CT09TVF9QUF9WQUxVRSkKLQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfQVNTSUdOX1NMT1QoMSkKLQotICB0ZW1wbGF0ZTw+IHN0cnVjdCBkZWZhdWx0X2NjX3RhZzxORE5CT09TVF9QUF9TTE9UKDEpPiAKLSAgewotICAgIHR5cGVkZWYgTkROQk9PU1RfRlRfdGVzdGVyOwotICAgIHR5cGVkZWYgbXBsOjpiaXRhbmRfPGNvbXBvbmVudHM8dGVzdGVyPjo6Yml0cyxjY19tYXNrX2NvbnN0YW50PiBiaXRzOwotICAgIHR5cGVkZWYgY2NfbWFza19jb25zdGFudCBtYXNrOwotICB9OwotCi0jICAgdW5kZWYgTkROQk9PU1RfRlRfdGVzdGVyCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9wcF9yZXRhZ19kZWZhdWx0X2NjL3ByZXByb2Nlc3NlZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9wcF9yZXRhZ19kZWZhdWx0X2NjL3ByZXByb2Nlc3NlZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhMmI3ZTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfcmV0YWdfZGVmYXVsdF9jYy9wcmVwcm9jZXNzZWQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGd1YXJkZWQgZXh0ZXJuYWxseQotCi0vLyB0aGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGZyb20gdGhlIG1hc3Rlci5ocHAgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBmdW5jdGlvbl90eXBlcyB7Ci1uYW1lc3BhY2UgZGV0YWlsCi17Ci10ZW1wbGF0ZTxjbGFzcyBUYWcsIGNsYXNzIFJlZlRhZz4gc3RydWN0IHNlbGVjdG9yX2JpdHMKLXsKLU5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChiaXRzX3QsIHZhbHVlID0gKAotKDo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OmJpdHM8VGFnPiA6OnZhbHVlICYgMHgwMDAwODAwMCkgCi18ICg6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpiaXRzPFJlZlRhZz4gOjp2YWx1ZSAmIDgwMikKLSkpOwotfTsKLXRlbXBsYXRlPGJpdHNfdCBTZWxlY3RvckJpdHM+IHN0cnVjdCBkZWZhdWx0X2NjX3RhZzsgCi10ZW1wbGF0ZTxjbGFzcyBUYWcsIGNsYXNzIFJlZlRhZz4gc3RydWN0IHJldGFnX2RlZmF1bHRfY2MKLTogZGV0YWlsOjpjb21wb3VuZF90YWcKLTwgVGFnLCBkZXRhaWw6OmRlZmF1bHRfY2NfdGFnPCAKLTo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OnNlbGVjdG9yX2JpdHM8VGFnLFJlZlRhZz4gOjp2YWx1ZSA+ID4KLXsgfTsKLXRlbXBsYXRlPGJpdHNfdCBTZWxlY3RvckJpdHM+IHN0cnVjdCBkZWZhdWx0X2NjX3RhZwotewotdHlwZWRlZiBudWxsX3RhZzo6Yml0cyBiaXRzOwotdHlwZWRlZiBudWxsX3RhZzo6bWFzayBtYXNrOwotfTsKLWNsYXNzIHRlc3RfY2xhc3M7Ci10eXBlZGVmIGNvbnN0YW50PDB4MDBmZjgwMDA+IGNjX21hc2tfY29uc3RhbnQ7Ci10ZW1wbGF0ZTwgPiBzdHJ1Y3QgZGVmYXVsdF9jY190YWc8MzMyODI+IAotewotdHlwZWRlZiB2b2lkICggKnRlc3RlcikoKTsKLXR5cGVkZWYgbXBsOjpiaXRhbmRfPGNvbXBvbmVudHM8dGVzdGVyPiA6OmJpdHMsY2NfbWFza19jb25zdGFudD4gYml0czsKLXR5cGVkZWYgY2NfbWFza19jb25zdGFudCBtYXNrOwotfTsKLXRlbXBsYXRlPCA+IHN0cnVjdCBkZWZhdWx0X2NjX3RhZzwzMzAyNj4gCi17Ci10eXBlZGVmIHZvaWQgKCAqdGVzdGVyKSggLi4uICk7Ci10eXBlZGVmIG1wbDo6Yml0YW5kXzxjb21wb25lbnRzPHRlc3Rlcj4gOjpiaXRzLGNjX21hc2tfY29uc3RhbnQ+IGJpdHM7Ci10eXBlZGVmIGNjX21hc2tfY29uc3RhbnQgbWFzazsKLX07Ci10ZW1wbGF0ZTwgPiBzdHJ1Y3QgZGVmYXVsdF9jY190YWc8MzMzMTI+IAotewotdHlwZWRlZiB2b2lkICh0ZXN0X2NsYXNzOjogKnRlc3RlcikoKTsKLXR5cGVkZWYgbXBsOjpiaXRhbmRfPGNvbXBvbmVudHM8dGVzdGVyPiA6OmJpdHMsY2NfbWFza19jb25zdGFudD4gYml0czsKLXR5cGVkZWYgY2NfbWFza19jb25zdGFudCBtYXNrOwotfTsKLXRlbXBsYXRlPCA+IHN0cnVjdCBkZWZhdWx0X2NjX3RhZzwzMzA1Nj4gCi17Ci10eXBlZGVmIHZvaWQgKHRlc3RfY2xhc3M6OiAqdGVzdGVyKSggLi4uICk7Ci10eXBlZGVmIG1wbDo6Yml0YW5kXzxjb21wb25lbnRzPHRlc3Rlcj4gOjpiaXRzLGNjX21hc2tfY29uc3RhbnQ+IGJpdHM7Ci10eXBlZGVmIGNjX21hc2tfY29uc3RhbnQgbWFzazsKLX07Ci19IH0gfSAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX3RhZ3MvY2NfdGFnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX3RhZ3MvY2NfdGFnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWI4MGEwNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9wcF90YWdzL2NjX3RhZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbnMKLQotICBzdHJ1Y3QgTkROQk9PU1RfRlRfY2NfbmFtZQotICB7Ci0gICAgdHlwZWRlZiBkZXRhaWw6OmVuY29kZV9iaXRzPDAsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci0gICAgdHlwZWRlZiBkZXRhaWw6OmNvbnN0YW50PE5ETkJPT1NUX0ZUX2NjX21hc2s+IG1hc2s7Ci0gIH07Ci0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfdGFncy9tYXN0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfdGFncy9tYXN0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZTg2MzQyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX3RhZ3MvbWFzdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyNiArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgZ3VhcmRlZCBleHRlcm5hbGx5Ci0KLSNpZmRlZiBfX1dBVkVfXwotLy8gdGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBmcm9tIHRoZSBtYXN0ZXIuaHBwIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Ci0jICAgcHJhZ21hIHdhdmUgb3B0aW9uKHByZXNlcnZlOiAwKQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9GVF9QUkVQUk9DRVNTSU5HX01PREUpIHx8IGRlZmluZWQoTkROQk9PU1RfRlRfQ09ORklHX0hQUF9JTkNMVURFRCkKLSMgICBlcnJvciAidGhpcyBmaWxlIHVzZWQgd2l0aCB0d28tcGFzcyBwcmVwcm9jZXNzaW5nLCBvbmx5IgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9zbG90LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvZW5jb2RpbmcvZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGZ1bmN0aW9uX3R5cGVzIHsKLQotdHlwZWRlZiBkZXRhaWw6OnByb3BlcnR5X3RhZzxORE5CT09TVF9GVF9ub25fdmFyaWFkaWMsTkROQk9PU1RfRlRfdmFyaWFkaWNfbWFzaz4gbm9uX3ZhcmlhZGljOwotdHlwZWRlZiBkZXRhaWw6OnByb3BlcnR5X3RhZzxORE5CT09TVF9GVF92YXJpYWRpYyxORE5CT09TVF9GVF92YXJpYWRpY19tYXNrPiAgICAgdmFyaWFkaWM7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotdHlwZWRlZiBkZXRhaWw6OnByb3BlcnR5X3RhZzwwLE5ETkJPT1NUX0ZUX2NvbnN0PiAgICAgICAgICAgICAgICAgICAgIG5vbl9jb25zdDsKLXR5cGVkZWYgZGV0YWlsOjpwcm9wZXJ0eV90YWc8TkROQk9PU1RfRlRfY29uc3QsTkROQk9PU1RfRlRfY29uc3Q+ICAgICAgICBjb25zdF9xdWFsaWZpZWQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotdHlwZWRlZiBkZXRhaWw6OnByb3BlcnR5X3RhZzwwLE5ETkJPT1NUX0ZUX3ZvbGF0aWxlPiAgICAgICAgICAgICAgICAgIG5vbl92b2xhdGlsZTsKLXR5cGVkZWYgZGV0YWlsOjpwcm9wZXJ0eV90YWc8TkROQk9PU1RfRlRfdm9sYXRpbGUsTkROQk9PU1RfRlRfdm9sYXRpbGU+ICB2b2xhdGlsZV9xdWFsaWZpZWQ7IAotCi10eXBlZGVmIGRldGFpbDo6cHJvcGVydHlfdGFnPE5ETkJPT1NUX0ZUX2RlZmF1bHRfY2MsTkROQk9PU1RfRlRfY2NfbWFzaz4gZGVmYXVsdF9jYzsKLQotI2RlZmluZSBORE5CT09TVF9QUF9WQUxVRSBORE5CT09TVF9GVF9jb25zdHxORE5CT09TVF9GVF92b2xhdGlsZSAKLSNpbmNsdWRlIE5ETkJPT1NUX1BQX0FTU0lHTl9TTE9UKDEpCi0KLXR5cGVkZWYgZGV0YWlsOjpwcm9wZXJ0eV90YWc8MCAgICAgICAgICAgICAgICAsIE5ETkJPT1NUX1BQX1NMT1QoMSk+IG5vbl9jdjsKLXR5cGVkZWYgZGV0YWlsOjpwcm9wZXJ0eV90YWc8TkROQk9PU1RfRlRfY29uc3QgICAsIE5ETkJPT1NUX1BQX1NMT1QoMSk+IGNvbnN0X25vbl92b2xhdGlsZTsKLXR5cGVkZWYgZGV0YWlsOjpwcm9wZXJ0eV90YWc8TkROQk9PU1RfRlRfdm9sYXRpbGUsIE5ETkJPT1NUX1BQX1NMT1QoMSk+IHZvbGF0aWxlX25vbl9jb25zdDsKLXR5cGVkZWYgZGV0YWlsOjpwcm9wZXJ0eV90YWc8TkROQk9PU1RfUFBfU0xPVCgxKSAsIE5ETkJPT1NUX1BQX1NMT1QoMSk+IGN2X3F1YWxpZmllZDsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSAgdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IGZ1bGxfbWFzazsKLQotICB0ZW1wbGF0ZSA8Yml0c190IEZsYWdzLCBiaXRzX3QgQ0NJRD4gc3RydWN0IGVuY29kZV9iaXRzX2ltcGwKLSAgewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCggYml0c190LCB2YWx1ZSA9IAotICAgICAgRmxhZ3MgfCAoTkROQk9PU1RfRlRfZGVmYXVsdF9jYyAqIENDSUQpIDw8IDEgKTsKLSAgfTsKLQotICB0ZW1wbGF0ZSA8Yml0c190IEZsYWdzLCBiaXRzX3QgQ0NJRCwgc3RkOjpzaXplX3QgQXJpdHk+IAotICBzdHJ1Y3QgZW5jb2RlX2NoYXJyX2ltcGwKLSAgewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSAoc3RkOjpzaXplX3QpKDErCi0gICAgICBGbGFncyB8IChORE5CT09TVF9GVF9kZWZhdWx0X2NjICogQ0NJRCkgPDwgMSB8IEFyaXR5IDw8IE5ETkJPT1NUX0ZUX2FyaXR5X3NoaWZ0Ci0gICAgKSk7Ci0gIH07Ci0KLSAgdGVtcGxhdGUgPGJpdHNfdCBCaXRzPiBzdHJ1Y3QgZGVjb2RlX2JpdHMKLSAgewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChiaXRzX3QsIGZsYWdzID0gQml0cyAmIE5ETkJPT1NUX0ZUX2ZsYWdzX21hc2spOwotCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJpdHNfdCwgY2NfaWQgPSAKLSAgICAgICggKEJpdHMgJiBORE5CT09TVF9GVF9mdWxsX21hc2spIC8gTkROQk9PU1RfRlRfZGVmYXVsdF9jYykgPj4gMSAKLSAgICApOwotCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJpdHNfdCwgdGFnX2JpdHMgPSAoQml0cyAmIE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaykpOwotCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCBhcml0eSA9IChzdGQ6OnNpemVfdCkKLSAgICAgIChCaXRzID4+IE5ETkJPT1NUX0ZUX2FyaXR5X3NoaWZ0KSAKLSAgICApOwotICB9OwotCi0gIHRlbXBsYXRlIDxiaXRzX3QgTEhTX2JpdHMsIGJpdHNfdCBMSFNfbWFzaywgYml0c190IFJIU19iaXRzLCBiaXRzX3QgUkhTX21hc2s+Ci0gIHN0cnVjdCB0YWdfaWNlCi0gIHsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgbWF0Y2ggPQotICAgICAgUkhTX2JpdHMgPT0gKExIU19iaXRzICYgUkhTX21hc2sgJiAoUkhTX2JpdHMgfH5ORE5CT09TVF9GVF90eXBlX21hc2spKQotICAgICk7Ci0KLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYml0c190LCBjb21iaW5lZF9iaXRzID0gCi0gICAgICAoTEhTX2JpdHMgJiB+UkhTX21hc2spIHwgUkhTX2JpdHMKLSAgICApOwotCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJpdHNfdCwgY29tYmluZWRfbWFzayA9Ci0gICAgICBMSFNfbWFzayB8IFJIU19tYXNrCi0gICAgKTsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChiaXRzX3QsIGV4dHJhY3RlZF9iaXRzID0KLSAgICAgIExIU19iaXRzICYgUkhTX21hc2sKLSAgICApOwotCi0gIH07Ci0KLSNkZWZpbmUgTkROQk9PU1RfRlRfbWFzayBORE5CT09TVF9GVF90eXBlX21hc2sKLSAgdHlwZWRlZiBwcm9wZXJ0eV90YWc8TkROQk9PU1RfRlRfY2FsbGFibGVfYnVpbHRpbixORE5CT09TVF9GVF9tYXNrPiAgICAgICAgICAgIGNhbGxhYmxlX2J1aWx0aW5fdGFnOwotICB0eXBlZGVmIHByb3BlcnR5X3RhZzxORE5CT09TVF9GVF9ub25fbWVtYmVyX2NhbGxhYmxlX2J1aWx0aW4sTkROQk9PU1RfRlRfbWFzaz4gbm9ubWVtYmVyX2NhbGxhYmxlX2J1aWx0aW5fdGFnOwotICB0eXBlZGVmIHByb3BlcnR5X3RhZzxORE5CT09TVF9GVF9mdW5jdGlvbixORE5CT09TVF9GVF9tYXNrPiAgICAgICBmdW5jdGlvbl90YWc7Ci0gIHR5cGVkZWYgcHJvcGVydHlfdGFnPE5ETkJPT1NUX0ZUX3JlZmVyZW5jZSxORE5CT09TVF9GVF9tYXNrPiAgICAgIHJlZmVyZW5jZV90YWc7Ci0gIHR5cGVkZWYgcHJvcGVydHlfdGFnPE5ETkJPT1NUX0ZUX3BvaW50ZXIsTkROQk9PU1RfRlRfbWFzaz4gICAgICAgIHBvaW50ZXJfdGFnOwotICB0eXBlZGVmIHByb3BlcnR5X3RhZzxORE5CT09TVF9GVF9tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcixORE5CT09TVF9GVF9tYXNrPiBtZW1iZXJfZnVuY3Rpb25fcG9pbnRlcl90YWc7Ci0gIHR5cGVkZWYgcHJvcGVydHlfdGFnPE5ETkJPT1NUX0ZUX21lbWJlcl9vYmplY3RfcG9pbnRlcixORE5CT09TVF9GVF9tYXNrPiBtZW1iZXJfb2JqZWN0X3BvaW50ZXJfdGFnOwotICB0eXBlZGVmIHByb3BlcnR5X3RhZzxORE5CT09TVF9GVF9tZW1iZXJfb2JqZWN0X3BvaW50ZXJfZmxhZ3MsTkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtZW1iZXJfb2JqZWN0X3BvaW50ZXJfYmFzZTsKLSAgdHlwZWRlZiBwcm9wZXJ0eV90YWc8TkROQk9PU1RfRlRfbWVtYmVyX3BvaW50ZXIsTkROQk9PU1RfRlRfbWFzaz4gbWVtYmVyX3BvaW50ZXJfdGFnOwotI3VuZGVmICBORE5CT09TVF9GVF9tYXNrIAotCi0jZGVmaW5lIE5ETkJPT1NUX1BQX1ZBTFVFIE5ETkJPT1NUX0ZUX2Z1bmN0aW9ufE5ETkJPT1NUX0ZUX25vbl92YXJpYWRpY3xORE5CT09TVF9GVF9kZWZhdWx0X2NjCi0jaW5jbHVkZSBORE5CT09TVF9QUF9BU1NJR05fU0xPVCgxKQotI2RlZmluZSBORE5CT09TVF9QUF9WQUxVRSBORE5CT09TVF9GVF90eXBlX21hc2t8TkROQk9PU1RfRlRfdmFyaWFkaWNfbWFza3xORE5CT09TVF9GVF9jY19tYXNrCi0jaW5jbHVkZSBORE5CT09TVF9QUF9BU1NJR05fU0xPVCgyKQotCi0gIHR5cGVkZWYgcHJvcGVydHlfdGFnPCBORE5CT09TVF9QUF9TTE9UKDEpICwgTkROQk9PU1RfUFBfU0xPVCgyKSA+IG52X2RjY19mdW5jOwotCi0jZGVmaW5lIE5ETkJPT1NUX1BQX1ZBTFVFIFwKLSAgICBORE5CT09TVF9GVF9tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcnxORE5CT09TVF9GVF9ub25fdmFyaWFkaWN8TkROQk9PU1RfRlRfZGVmYXVsdF9jYwotI2luY2x1ZGUgTkROQk9PU1RfUFBfQVNTSUdOX1NMT1QoMSkKLQotICB0eXBlZGVmIHByb3BlcnR5X3RhZzwgTkROQk9PU1RfUFBfU0xPVCgxKSAsIE5ETkJPT1NUX1BQX1NMT1QoMikgPiBudl9kY2NfbWZwOwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSB9IC8vIG5hbWVzcGFjZSA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlcwotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9wcF90YWdzL3ByZXByb2Nlc3NlZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9wcF90YWdzL3ByZXByb2Nlc3NlZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0NDk5NTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfdGFncy9wcmVwcm9jZXNzZWQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGd1YXJkZWQgZXh0ZXJuYWxseQotCi0vLyB0aGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGZyb20gdGhlIG1hc3Rlci5ocHAgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBmdW5jdGlvbl90eXBlcyB7Ci10eXBlZGVmIGRldGFpbDo6cHJvcGVydHlfdGFnPDB4MDAwMDAyMDAsMHgwMDAwMDMwMD4gbm9uX3ZhcmlhZGljOwotdHlwZWRlZiBkZXRhaWw6OnByb3BlcnR5X3RhZzwweDAwMDAwMTAwLDB4MDAwMDAzMDA+IHZhcmlhZGljOwotdHlwZWRlZiBkZXRhaWw6OnByb3BlcnR5X3RhZzwwLDB4MDAwMDA0MDA+IG5vbl9jb25zdDsKLXR5cGVkZWYgZGV0YWlsOjpwcm9wZXJ0eV90YWc8MHgwMDAwMDQwMCwweDAwMDAwNDAwPiBjb25zdF9xdWFsaWZpZWQ7Ci10eXBlZGVmIGRldGFpbDo6cHJvcGVydHlfdGFnPDAsMHgwMDAwMDgwMD4gbm9uX3ZvbGF0aWxlOwotdHlwZWRlZiBkZXRhaWw6OnByb3BlcnR5X3RhZzwweDAwMDAwODAwLDB4MDAwMDA4MDA+IHZvbGF0aWxlX3F1YWxpZmllZDsgCi10eXBlZGVmIGRldGFpbDo6cHJvcGVydHlfdGFnPDB4MDAwMDgwMDAsMHgwMGZmODAwMD4gZGVmYXVsdF9jYzsKLXR5cGVkZWYgZGV0YWlsOjpwcm9wZXJ0eV90YWc8MCAsIDMwNzI+IG5vbl9jdjsKLXR5cGVkZWYgZGV0YWlsOjpwcm9wZXJ0eV90YWc8MHgwMDAwMDQwMCAsIDMwNzI+IGNvbnN0X25vbl92b2xhdGlsZTsKLXR5cGVkZWYgZGV0YWlsOjpwcm9wZXJ0eV90YWc8MHgwMDAwMDgwMCwgMzA3Mj4gdm9sYXRpbGVfbm9uX2NvbnN0OwotdHlwZWRlZiBkZXRhaWw6OnByb3BlcnR5X3RhZzwzMDcyICwgMzA3Mj4gY3ZfcXVhbGlmaWVkOwotbmFtZXNwYWNlIGRldGFpbCB7Ci10eXBlZGVmIGNvbnN0YW50PDB4MDBmZjBmZmY+IGZ1bGxfbWFzazsKLXRlbXBsYXRlIDxiaXRzX3QgRmxhZ3MsIGJpdHNfdCBDQ0lEPiBzdHJ1Y3QgZW5jb2RlX2JpdHNfaW1wbAotewotTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKCBiaXRzX3QsIHZhbHVlID0gCi1GbGFncyB8ICgweDAwMDA4MDAwICogQ0NJRCkgPDwgMSApOwotfTsKLXRlbXBsYXRlIDxiaXRzX3QgRmxhZ3MsIGJpdHNfdCBDQ0lELCBzdGQ6OnNpemVfdCBBcml0eT4gCi1zdHJ1Y3QgZW5jb2RlX2NoYXJyX2ltcGwKLXsKLU5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSAoc3RkOjpzaXplX3QpKDErCi1GbGFncyB8ICgweDAwMDA4MDAwICogQ0NJRCkgPDwgMSB8IEFyaXR5IDw8IDI0Ci0pKTsKLX07Ci10ZW1wbGF0ZSA8Yml0c190IEJpdHM+IHN0cnVjdCBkZWNvZGVfYml0cwotewotTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJpdHNfdCwgZmxhZ3MgPSBCaXRzICYgMHgwMDAwMGZmZik7Ci1ORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYml0c190LCBjY19pZCA9IAotKCAoQml0cyAmIDB4MDBmZjBmZmYpIC8gMHgwMDAwODAwMCkgPj4gMSAKLSk7Ci1ORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYml0c190LCB0YWdfYml0cyA9IChCaXRzICYgMHgwMGZmMGZmZikpOwotTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCBhcml0eSA9IChzdGQ6OnNpemVfdCkKLShCaXRzID4+IDI0KSAKLSk7Ci19OwotdGVtcGxhdGUgPGJpdHNfdCBMSFNfYml0cywgYml0c190IExIU19tYXNrLCBiaXRzX3QgUkhTX2JpdHMsIGJpdHNfdCBSSFNfbWFzaz4KLXN0cnVjdCB0YWdfaWNlCi17Ci1ORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgbWF0Y2ggPQotUkhTX2JpdHMgPT0gKExIU19iaXRzICYgUkhTX21hc2sgJiAoUkhTX2JpdHMgfCB+MHgwMDAwMDBmZikpCi0pOwotTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJpdHNfdCwgY29tYmluZWRfYml0cyA9IAotKExIU19iaXRzICYgflJIU19tYXNrKSB8IFJIU19iaXRzCi0pOwotTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJpdHNfdCwgY29tYmluZWRfbWFzayA9Ci1MSFNfbWFzayB8IFJIU19tYXNrCi0pOwotTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJpdHNfdCwgZXh0cmFjdGVkX2JpdHMgPQotTEhTX2JpdHMgJiBSSFNfbWFzawotKTsKLX07Ci10eXBlZGVmIHByb3BlcnR5X3RhZzwweDAwMDAwMDAxLDB4MDAwMDAwZmY+IGNhbGxhYmxlX2J1aWx0aW5fdGFnOwotdHlwZWRlZiBwcm9wZXJ0eV90YWc8MHgwMDAwMDAwMywweDAwMDAwMGZmPiBub25tZW1iZXJfY2FsbGFibGVfYnVpbHRpbl90YWc7Ci10eXBlZGVmIHByb3BlcnR5X3RhZzwweDAwMDAwMDA3LDB4MDAwMDAwZmY+IGZ1bmN0aW9uX3RhZzsKLXR5cGVkZWYgcHJvcGVydHlfdGFnPDB4MDAwMDAwMTMsMHgwMDAwMDBmZj4gcmVmZXJlbmNlX3RhZzsKLXR5cGVkZWYgcHJvcGVydHlfdGFnPDB4MDAwMDAwMGIsMHgwMDAwMDBmZj4gcG9pbnRlcl90YWc7Ci10eXBlZGVmIHByb3BlcnR5X3RhZzwweDAwMDAwMDYxLDB4MDAwMDAwZmY+IG1lbWJlcl9mdW5jdGlvbl9wb2ludGVyX3RhZzsKLXR5cGVkZWYgcHJvcGVydHlfdGFnPDB4MDAwMDAwYTMsMHgwMDAwMDBmZj4gbWVtYmVyX29iamVjdF9wb2ludGVyX3RhZzsKLXR5cGVkZWYgcHJvcGVydHlfdGFnPDB4MDAwMDAyYTMsMHgwMGZmMGZmZj4gbWVtYmVyX29iamVjdF9wb2ludGVyX2Jhc2U7Ci10eXBlZGVmIHByb3BlcnR5X3RhZzwweDAwMDAwMDIwLDB4MDAwMDAwZmY+IG1lbWJlcl9wb2ludGVyX3RhZzsKLXR5cGVkZWYgcHJvcGVydHlfdGFnPCAzMzI4NyAsIDE2NzQ1NDcxID4gbnZfZGNjX2Z1bmM7Ci10eXBlZGVmIHByb3BlcnR5X3RhZzwgMzMzNzcgLCAxNjc0NTQ3MSA+IG52X2RjY19tZnA7Ci19IAotfSB9IApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfdmFyaWF0ZV9sb29wL21hc3Rlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9wcF92YXJpYXRlX2xvb3AvbWFzdGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODgwYTUxOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9wcF92YXJpYXRlX2xvb3AvbWFzdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1MiArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZmRlZiBfX1dBVkVfXwotLy8gdGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBmcm9tIHRoZSBtYXN0ZXIuaHBwIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Ci0jICAgcHJhZ21hIHdhdmUgb3B0aW9uKHByZXNlcnZlOiAwKQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9GVF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgZXJyb3IgInRoaXMgZmlsZSBpcyBvbmx5IGZvciB0d28tcGFzcyBwcmVwcm9jZXNzaW5nIgotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9QUF9WQUxVRSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9zbG90LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9lbXB0eS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvZXhwYW5kLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvZW5jb2RpbmcvZGVmLmhwcD4KLQotTkROQk9PU1RfUFBfRVhQQU5EKCMpIGRlZmluZSBORE5CT09TVF9GVF9tZnAgMAotTkROQk9PU1RfUFBfRVhQQU5EKCMpIGRlZmluZSBORE5CT09TVF9GVF9zeW50YXggTkROQk9PU1RfRlRfdHlwZV9mdW5jdGlvbgotCi0jICAgZGVmaW5lICBORE5CT09TVF9QUF9WQUxVRSBcCi0gICAgICBORE5CT09TVF9GVF9mdW5jdGlvbnxORE5CT09TVF9GVF9ub25fdmFyaWFkaWMKLSMgICBpbmNsdWRlIF9fRklMRV9fCi0jICAgZGVmaW5lICBORE5CT09TVF9QUF9WQUxVRSBcCi0gICAgICBORE5CT09TVF9GVF9mdW5jdGlvbnxORE5CT09TVF9GVF92YXJpYWRpYwotIyAgIGluY2x1ZGUgX19GSUxFX18KLQotTkROQk9PU1RfUFBfRVhQQU5EKCMpIGlmICFORE5CT09TVF9GVF9OT19DVl9GVU5DX1NVUFBPUlQKLSMgICBkZWZpbmUgIE5ETkJPT1NUX1BQX1ZBTFVFIFwKLSAgICAgIE5ETkJPT1NUX0ZUX2Z1bmN0aW9ufE5ETkJPT1NUX0ZUX25vbl92YXJpYWRpY3xORE5CT09TVF9GVF9jb25zdAotIyAgIGluY2x1ZGUgX19GSUxFX18KLSMgICBkZWZpbmUgIE5ETkJPT1NUX1BQX1ZBTFVFIFwKLSAgICAgIE5ETkJPT1NUX0ZUX2Z1bmN0aW9ufE5ETkJPT1NUX0ZUX3ZhcmlhZGljfE5ETkJPT1NUX0ZUX2NvbnN0Ci0jICAgaW5jbHVkZSBfX0ZJTEVfXwotIyAgIGRlZmluZSAgTkROQk9PU1RfUFBfVkFMVUUgXAotICAgICAgTkROQk9PU1RfRlRfZnVuY3Rpb258TkROQk9PU1RfRlRfbm9uX3ZhcmlhZGljfE5ETkJPT1NUX0ZUX3ZvbGF0aWxlCi0jICAgaW5jbHVkZSBfX0ZJTEVfXwotIyAgIGRlZmluZSAgTkROQk9PU1RfUFBfVkFMVUUgXAotICAgICAgTkROQk9PU1RfRlRfZnVuY3Rpb258TkROQk9PU1RfRlRfdmFyaWFkaWN8TkROQk9PU1RfRlRfdm9sYXRpbGUKLSMgICBpbmNsdWRlIF9fRklMRV9fCi0jICAgZGVmaW5lICBORE5CT09TVF9QUF9WQUxVRSBcCi0gICAgICBORE5CT09TVF9GVF9mdW5jdGlvbnxORE5CT09TVF9GVF9ub25fdmFyaWFkaWN8TkROQk9PU1RfRlRfY29uc3R8TkROQk9PU1RfRlRfdm9sYXRpbGUKLSMgICBpbmNsdWRlIF9fRklMRV9fCi0jICAgZGVmaW5lICBORE5CT09TVF9QUF9WQUxVRSBcCi0gICAgICBORE5CT09TVF9GVF9mdW5jdGlvbnxORE5CT09TVF9GVF92YXJpYWRpY3xORE5CT09TVF9GVF9jb25zdHxORE5CT09TVF9GVF92b2xhdGlsZQotIyAgIGluY2x1ZGUgX19GSUxFX18KLU5ETkJPT1NUX1BQX0VYUEFORCgjKSBlbmRpZgotCi0KLU5ETkJPT1NUX1BQX0VYUEFORCgjKSB1bmRlZiAgTkROQk9PU1RfRlRfc3ludGF4Ci1ORE5CT09TVF9QUF9FWFBBTkQoIykgZGVmaW5lIE5ETkJPT1NUX0ZUX3N5bnRheCBORE5CT09TVF9GVF90eXBlX2Z1bmN0aW9uX3BvaW50ZXIKLQotIyAgIGRlZmluZSAgTkROQk9PU1RfUFBfVkFMVUUgXAotICAgICAgTkROQk9PU1RfRlRfcG9pbnRlcnxORE5CT09TVF9GVF9ub25fdmFyaWFkaWMKLSMgICBpbmNsdWRlIF9fRklMRV9fCi0jICAgZGVmaW5lICBORE5CT09TVF9QUF9WQUxVRSBcCi0gICAgICBORE5CT09TVF9GVF9wb2ludGVyfE5ETkJPT1NUX0ZUX3ZhcmlhZGljCi0jICAgaW5jbHVkZSBfX0ZJTEVfXwotCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgdW5kZWYgIE5ETkJPT1NUX0ZUX3N5bnRheAotTkROQk9PU1RfUFBfRVhQQU5EKCMpIGRlZmluZSBORE5CT09TVF9GVF9zeW50YXggTkROQk9PU1RfRlRfdHlwZV9mdW5jdGlvbl9yZWZlcmVuY2UKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9WQUxVRSBcCi0gICAgICBORE5CT09TVF9GVF9yZWZlcmVuY2V8TkROQk9PU1RfRlRfbm9uX3ZhcmlhZGljCi0jICAgaW5jbHVkZSBfX0ZJTEVfXwotIyAgIGRlZmluZSBORE5CT09TVF9QUF9WQUxVRSBcCi0gICAgICBORE5CT09TVF9GVF9yZWZlcmVuY2V8TkROQk9PU1RfRlRfdmFyaWFkaWMKLSMgICBpbmNsdWRlIF9fRklMRV9fCi0KLU5ETkJPT1NUX1BQX0VYUEFORCgjKSB1bmRlZiAgTkROQk9PU1RfRlRfc3ludGF4Ci1ORE5CT09TVF9QUF9FWFBBTkQoIykgdW5kZWYgIE5ETkJPT1NUX0ZUX21mcAotCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgZGVmaW5lIE5ETkJPT1NUX0ZUX21mcCAxCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgZGVmaW5lIE5ETkJPT1NUX0ZUX3N5bnRheCBORE5CT09TVF9GVF90eXBlX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyCi0KLSMgICBkZWZpbmUgIE5ETkJPT1NUX1BQX1ZBTFVFIFwKLSAgICAgIE5ETkJPT1NUX0ZUX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyfE5ETkJPT1NUX0ZUX25vbl92YXJpYWRpYwotIyAgIGluY2x1ZGUgX19GSUxFX18KLSMgICBkZWZpbmUgIE5ETkJPT1NUX1BQX1ZBTFVFIFwKLSAgICAgIE5ETkJPT1NUX0ZUX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyfE5ETkJPT1NUX0ZUX3ZhcmlhZGljCi0jICAgaW5jbHVkZSBfX0ZJTEVfXwotIyAgIGRlZmluZSAgTkROQk9PU1RfUFBfVkFMVUUgXAotICAgICAgTkROQk9PU1RfRlRfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXJ8TkROQk9PU1RfRlRfbm9uX3ZhcmlhZGljfE5ETkJPT1NUX0ZUX2NvbnN0Ci0jICAgaW5jbHVkZSBfX0ZJTEVfXwotIyAgIGRlZmluZSAgTkROQk9PU1RfUFBfVkFMVUUgXAotICAgICAgTkROQk9PU1RfRlRfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXJ8TkROQk9PU1RfRlRfdmFyaWFkaWN8TkROQk9PU1RfRlRfY29uc3QKLSMgICBpbmNsdWRlIF9fRklMRV9fCi0jICAgZGVmaW5lICBORE5CT09TVF9QUF9WQUxVRSBcCi0gICAgICBORE5CT09TVF9GVF9tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcnxORE5CT09TVF9GVF9ub25fdmFyaWFkaWN8TkROQk9PU1RfRlRfdm9sYXRpbGUKLSMgICBpbmNsdWRlIF9fRklMRV9fCi0jICAgZGVmaW5lICBORE5CT09TVF9QUF9WQUxVRSBcCi0gICAgICBORE5CT09TVF9GVF9tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcnxORE5CT09TVF9GVF92YXJpYWRpY3xORE5CT09TVF9GVF92b2xhdGlsZQotIyAgIGluY2x1ZGUgX19GSUxFX18KLSMgICBkZWZpbmUgIE5ETkJPT1NUX1BQX1ZBTFVFIFwKLSAgICAgIE5ETkJPT1NUX0ZUX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyfE5ETkJPT1NUX0ZUX25vbl92YXJpYWRpY3xORE5CT09TVF9GVF9jb25zdHxORE5CT09TVF9GVF92b2xhdGlsZQotIyAgIGluY2x1ZGUgX19GSUxFX18KLSMgICBkZWZpbmUgIE5ETkJPT1NUX1BQX1ZBTFVFIFwKLSAgICAgIE5ETkJPT1NUX0ZUX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyfE5ETkJPT1NUX0ZUX3ZhcmlhZGljfE5ETkJPT1NUX0ZUX2NvbnN0fE5ETkJPT1NUX0ZUX3ZvbGF0aWxlCi0jICAgaW5jbHVkZSBfX0ZJTEVfXwotCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgdW5kZWYgIE5ETkJPT1NUX0ZUX3N5bnRheAotTkROQk9PU1RfUFBfRVhQQU5EKCMpIHVuZGVmICBORE5CT09TVF9GVF9tZnAKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9lbmNvZGluZy91bmRlZi5ocHA+Ci0jZWxzZSAKLQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfQVNTSUdOX1NMT1QoMSkKLQotIyAgIGRlZmluZSAgTkROQk9PU1RfUFBfVkFMVUUgTkROQk9PU1RfUFBfU0xPVCgxKSAmIE5ETkJPT1NUX0ZUX2tpbmRfbWFzawotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfQVNTSUdOX1NMT1QoMikKLQotTkROQk9PU1RfUFBfRVhQQU5EKCMpIGlmICEhKE5ETkJPT1NUX1BQX1NMT1QoMikgJiAoTkROQk9PU1RfRlRfdmFyaWF0aW9ucykpCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgaWYgKE5ETkJPT1NUX1BQX1NMT1QoMSkgJiAoTkROQk9PU1RfRlRfY29uZCkpID09IChORE5CT09TVF9GVF9jb25kKQotCi0jICAgaWYgKCBORE5CT09TVF9QUF9TTE9UKDEpICYgKE5ETkJPT1NUX0ZUX3ZhcmlhZGljKSApCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgICBkZWZpbmUgTkROQk9PU1RfRlRfZWxsIC4uLgotTkROQk9PU1RfUFBfRVhQQU5EKCMpICAgZGVmaW5lIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0KLSMgICBlbHNlCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgICBkZWZpbmUgTkROQk9PU1RfRlRfZWxsCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgICBkZWZpbmUgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbSBORE5CT09TVF9GVF9OVUxMQVJZX1BBUkFNCi0jICAgZW5kaWYKLQotIyAgIGlmICEoIE5ETkJPT1NUX1BQX1NMT1QoMSkgJiAoTkROQk9PU1RfRlRfdm9sYXRpbGUpICkKLSMgICAgIGlmICEoIE5ETkJPT1NUX1BQX1NMT1QoMSkgJiAoTkROQk9PU1RfRlRfY29uc3QpICkKLU5ETkJPT1NUX1BQX0VYUEFORCgjKSAgIGRlZmluZSBORE5CT09TVF9GVF9jdiAKLSMgICAgIGVsc2UKLU5ETkJPT1NUX1BQX0VYUEFORCgjKSAgIGRlZmluZSBORE5CT09TVF9GVF9jdiBjb25zdAotIyAgICAgZW5kaWYKLSMgICBlbHNlCi0jICAgICBpZiAhKCBORE5CT09TVF9QUF9TTE9UKDEpICYgKE5ETkJPT1NUX0ZUX2NvbnN0KSApCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgICBkZWZpbmUgTkROQk9PU1RfRlRfY3Ygdm9sYXRpbGUKLSMgICAgIGVsc2UKLU5ETkJPT1NUX1BQX0VYUEFORCgjKSAgIGRlZmluZSBORE5CT09TVF9GVF9jdiBjb25zdCB2b2xhdGlsZQotIyAgICAgZW5kaWYKLSMgICBlbmRpZgotTkROQk9PU1RfUFBfRVhQQU5EKCMpICAgZGVmaW5lIE5ETkJPT1NUX0ZUX2ZsYWdzIE5ETkJPT1NUX1BQX1NMT1QoMSkKLU5ETkJPT1NUX1BQX0VYUEFORCgjKSAgIGluY2x1ZGUgTkROQk9PU1RfRlRfdmFyaWF0ZV9maWxlCi0KLU5ETkJPT1NUX1BQX0VYUEFORCgjKSAgIHVuZGVmIE5ETkJPT1NUX0ZUX2N2Ci1ORE5CT09TVF9QUF9FWFBBTkQoIykgICB1bmRlZiBORE5CT09TVF9GVF9lbGwKLU5ETkJPT1NUX1BQX0VYUEFORCgjKSAgIHVuZGVmIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0KLU5ETkJPT1NUX1BQX0VYUEFORCgjKSAgIHVuZGVmIE5ETkJPT1NUX0ZUX2ZsYWdzCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgZW5kaWYKLU5ETkJPT1NUX1BQX0VYUEFORCgjKSBlbmRpZgotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX3ZhcmlhdGVfbG9vcC9wcmVwcm9jZXNzZWQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfdmFyaWF0ZV9sb29wL3ByZXByb2Nlc3NlZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzY2MwYzYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfdmFyaWF0ZV9sb29wL3ByZXByb2Nlc3NlZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyODMgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyB0aGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGZyb20gdGhlIG1hc3Rlci5ocHAgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX21mcCAwCi0jIGRlZmluZSBORE5CT09TVF9GVF9zeW50YXggTkROQk9PU1RfRlRfdHlwZV9mdW5jdGlvbgotIyBpZiAhICEgKDQgJiAoTkROQk9PU1RfRlRfdmFyaWF0aW9ucykpCi0jIGlmICg1MTkgJiAoTkROQk9PU1RfRlRfY29uZCkpID09IChORE5CT09TVF9GVF9jb25kKQotIyBkZWZpbmUgTkROQk9PU1RfRlRfZWxsCi0jIGRlZmluZSBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtIE5ETkJPT1NUX0ZUX05VTExBUllfUEFSQU0KLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2N2IAotIyBkZWZpbmUgTkROQk9PU1RfRlRfZmxhZ3MgNTE5Ci0jIGluY2x1ZGUgTkROQk9PU1RfRlRfdmFyaWF0ZV9maWxlCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2N2Ci0jIHVuZGVmIE5ETkJPT1NUX0ZUX2VsbAotIyB1bmRlZiBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2ZsYWdzCi0jIGVuZGlmCi0jIGVuZGlmCi0jIGlmICEgISAoNCAmIChORE5CT09TVF9GVF92YXJpYXRpb25zKSkKLSMgaWYgKDI2MyAmIChORE5CT09TVF9GVF9jb25kKSkgPT0gKE5ETkJPT1NUX0ZUX2NvbmQpCi0jIGRlZmluZSBORE5CT09TVF9GVF9lbGwgLi4uCi0jIGRlZmluZSBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtCi0jIGRlZmluZSBORE5CT09TVF9GVF9jdiAKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2ZsYWdzIDI2MwotIyBpbmNsdWRlIE5ETkJPT1NUX0ZUX3ZhcmlhdGVfZmlsZQotIyB1bmRlZiBORE5CT09TVF9GVF9jdgotIyB1bmRlZiBORE5CT09TVF9GVF9lbGwKLSMgdW5kZWYgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbQotIyB1bmRlZiBORE5CT09TVF9GVF9mbGFncwotIyBlbmRpZgotIyBlbmRpZgotIyBpZiAhTkROQk9PU1RfRlRfTk9fQ1ZfRlVOQ19TVVBQT1JUCi0jIGlmICEgISAoNCAmIChORE5CT09TVF9GVF92YXJpYXRpb25zKSkKLSMgaWYgKDE1NDMgJiAoTkROQk9PU1RfRlRfY29uZCkpID09IChORE5CT09TVF9GVF9jb25kKQotIyBkZWZpbmUgTkROQk9PU1RfRlRfZWxsCi0jIGRlZmluZSBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtIE5ETkJPT1NUX0ZUX05VTExBUllfUEFSQU0KLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2N2IGNvbnN0Ci0jIGRlZmluZSBORE5CT09TVF9GVF9mbGFncyAxNTQzCi0jIGluY2x1ZGUgTkROQk9PU1RfRlRfdmFyaWF0ZV9maWxlCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2N2Ci0jIHVuZGVmIE5ETkJPT1NUX0ZUX2VsbAotIyB1bmRlZiBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2ZsYWdzCi0jIGVuZGlmCi0jIGVuZGlmCi0jIGlmICEgISAoNCAmIChORE5CT09TVF9GVF92YXJpYXRpb25zKSkKLSMgaWYgKDEyODcgJiAoTkROQk9PU1RfRlRfY29uZCkpID09IChORE5CT09TVF9GVF9jb25kKQotIyBkZWZpbmUgTkROQk9PU1RfRlRfZWxsIC4uLgotIyBkZWZpbmUgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbQotIyBkZWZpbmUgTkROQk9PU1RfRlRfY3YgY29uc3QKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2ZsYWdzIDEyODcKLSMgaW5jbHVkZSBORE5CT09TVF9GVF92YXJpYXRlX2ZpbGUKLSMgdW5kZWYgTkROQk9PU1RfRlRfY3YKLSMgdW5kZWYgTkROQk9PU1RfRlRfZWxsCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0KLSMgdW5kZWYgTkROQk9PU1RfRlRfZmxhZ3MKLSMgZW5kaWYKLSMgZW5kaWYKLSMgaWYgISAhICg0ICYgKE5ETkJPT1NUX0ZUX3ZhcmlhdGlvbnMpKQotIyBpZiAoMjU2NyAmIChORE5CT09TVF9GVF9jb25kKSkgPT0gKE5ETkJPT1NUX0ZUX2NvbmQpCi0jIGRlZmluZSBORE5CT09TVF9GVF9lbGwKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0gTkROQk9PU1RfRlRfTlVMTEFSWV9QQVJBTQotIyBkZWZpbmUgTkROQk9PU1RfRlRfY3Ygdm9sYXRpbGUKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2ZsYWdzIDI1NjcKLSMgaW5jbHVkZSBORE5CT09TVF9GVF92YXJpYXRlX2ZpbGUKLSMgdW5kZWYgTkROQk9PU1RfRlRfY3YKLSMgdW5kZWYgTkROQk9PU1RfRlRfZWxsCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0KLSMgdW5kZWYgTkROQk9PU1RfRlRfZmxhZ3MKLSMgZW5kaWYKLSMgZW5kaWYKLSMgaWYgISAhICg0ICYgKE5ETkJPT1NUX0ZUX3ZhcmlhdGlvbnMpKQotIyBpZiAoMjMxMSAmIChORE5CT09TVF9GVF9jb25kKSkgPT0gKE5ETkJPT1NUX0ZUX2NvbmQpCi0jIGRlZmluZSBORE5CT09TVF9GVF9lbGwgLi4uCi0jIGRlZmluZSBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtCi0jIGRlZmluZSBORE5CT09TVF9GVF9jdiB2b2xhdGlsZQotIyBkZWZpbmUgTkROQk9PU1RfRlRfZmxhZ3MgMjMxMQotIyBpbmNsdWRlIE5ETkJPT1NUX0ZUX3ZhcmlhdGVfZmlsZQotIyB1bmRlZiBORE5CT09TVF9GVF9jdgotIyB1bmRlZiBORE5CT09TVF9GVF9lbGwKLSMgdW5kZWYgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbQotIyB1bmRlZiBORE5CT09TVF9GVF9mbGFncwotIyBlbmRpZgotIyBlbmRpZgotIyBpZiAhICEgKDQgJiAoTkROQk9PU1RfRlRfdmFyaWF0aW9ucykpCi0jIGlmICgzNTkxICYgKE5ETkJPT1NUX0ZUX2NvbmQpKSA9PSAoTkROQk9PU1RfRlRfY29uZCkKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2VsbAotIyBkZWZpbmUgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbSBORE5CT09TVF9GVF9OVUxMQVJZX1BBUkFNCi0jIGRlZmluZSBORE5CT09TVF9GVF9jdiBjb25zdCB2b2xhdGlsZQotIyBkZWZpbmUgTkROQk9PU1RfRlRfZmxhZ3MgMzU5MQotIyBpbmNsdWRlIE5ETkJPT1NUX0ZUX3ZhcmlhdGVfZmlsZQotIyB1bmRlZiBORE5CT09TVF9GVF9jdgotIyB1bmRlZiBORE5CT09TVF9GVF9lbGwKLSMgdW5kZWYgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbQotIyB1bmRlZiBORE5CT09TVF9GVF9mbGFncwotIyBlbmRpZgotIyBlbmRpZgotIyBpZiAhICEgKDQgJiAoTkROQk9PU1RfRlRfdmFyaWF0aW9ucykpCi0jIGlmICgzMzM1ICYgKE5ETkJPT1NUX0ZUX2NvbmQpKSA9PSAoTkROQk9PU1RfRlRfY29uZCkKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2VsbCAuLi4KLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0KLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2N2IGNvbnN0IHZvbGF0aWxlCi0jIGRlZmluZSBORE5CT09TVF9GVF9mbGFncyAzMzM1Ci0jIGluY2x1ZGUgTkROQk9PU1RfRlRfdmFyaWF0ZV9maWxlCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2N2Ci0jIHVuZGVmIE5ETkJPT1NUX0ZUX2VsbAotIyB1bmRlZiBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2ZsYWdzCi0jIGVuZGlmCi0jIGVuZGlmCi0jIGVuZGlmCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX3N5bnRheAotIyBkZWZpbmUgTkROQk9PU1RfRlRfc3ludGF4IE5ETkJPT1NUX0ZUX3R5cGVfZnVuY3Rpb25fcG9pbnRlcgotIyBpZiAhICEgKDggJiAoTkROQk9PU1RfRlRfdmFyaWF0aW9ucykpCi0jIGlmICg1MjMgJiAoTkROQk9PU1RfRlRfY29uZCkpID09IChORE5CT09TVF9GVF9jb25kKQotIyBkZWZpbmUgTkROQk9PU1RfRlRfZWxsCi0jIGRlZmluZSBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtIE5ETkJPT1NUX0ZUX05VTExBUllfUEFSQU0KLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2N2IAotIyBkZWZpbmUgTkROQk9PU1RfRlRfZmxhZ3MgNTIzCi0jIGluY2x1ZGUgTkROQk9PU1RfRlRfdmFyaWF0ZV9maWxlCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2N2Ci0jIHVuZGVmIE5ETkJPT1NUX0ZUX2VsbAotIyB1bmRlZiBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2ZsYWdzCi0jIGVuZGlmCi0jIGVuZGlmCi0jIGlmICEgISAoOCAmIChORE5CT09TVF9GVF92YXJpYXRpb25zKSkKLSMgaWYgKDI2NyAmIChORE5CT09TVF9GVF9jb25kKSkgPT0gKE5ETkJPT1NUX0ZUX2NvbmQpCi0jIGRlZmluZSBORE5CT09TVF9GVF9lbGwgLi4uCi0jIGRlZmluZSBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtCi0jIGRlZmluZSBORE5CT09TVF9GVF9jdiAKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2ZsYWdzIDI2NwotIyBpbmNsdWRlIE5ETkJPT1NUX0ZUX3ZhcmlhdGVfZmlsZQotIyB1bmRlZiBORE5CT09TVF9GVF9jdgotIyB1bmRlZiBORE5CT09TVF9GVF9lbGwKLSMgdW5kZWYgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbQotIyB1bmRlZiBORE5CT09TVF9GVF9mbGFncwotIyBlbmRpZgotIyBlbmRpZgotIyB1bmRlZiBORE5CT09TVF9GVF9zeW50YXgKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX3N5bnRheCBORE5CT09TVF9GVF90eXBlX2Z1bmN0aW9uX3JlZmVyZW5jZQotIyBpZiAhICEgKDE2ICYgKE5ETkJPT1NUX0ZUX3ZhcmlhdGlvbnMpKQotIyBpZiAoNTMxICYgKE5ETkJPT1NUX0ZUX2NvbmQpKSA9PSAoTkROQk9PU1RfRlRfY29uZCkKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2VsbAotIyBkZWZpbmUgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbSBORE5CT09TVF9GVF9OVUxMQVJZX1BBUkFNCi0jIGRlZmluZSBORE5CT09TVF9GVF9jdiAKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2ZsYWdzIDUzMQotIyBpbmNsdWRlIE5ETkJPT1NUX0ZUX3ZhcmlhdGVfZmlsZQotIyB1bmRlZiBORE5CT09TVF9GVF9jdgotIyB1bmRlZiBORE5CT09TVF9GVF9lbGwKLSMgdW5kZWYgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbQotIyB1bmRlZiBORE5CT09TVF9GVF9mbGFncwotIyBlbmRpZgotIyBlbmRpZgotIyBpZiAhICEgKDE2ICYgKE5ETkJPT1NUX0ZUX3ZhcmlhdGlvbnMpKQotIyBpZiAoMjc1ICYgKE5ETkJPT1NUX0ZUX2NvbmQpKSA9PSAoTkROQk9PU1RfRlRfY29uZCkKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2VsbCAuLi4KLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0KLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2N2IAotIyBkZWZpbmUgTkROQk9PU1RfRlRfZmxhZ3MgMjc1Ci0jIGluY2x1ZGUgTkROQk9PU1RfRlRfdmFyaWF0ZV9maWxlCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2N2Ci0jIHVuZGVmIE5ETkJPT1NUX0ZUX2VsbAotIyB1bmRlZiBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2ZsYWdzCi0jIGVuZGlmCi0jIGVuZGlmCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX3N5bnRheAotIyB1bmRlZiBORE5CT09TVF9GVF9tZnAKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX21mcCAxCi0jIGRlZmluZSBORE5CT09TVF9GVF9zeW50YXggTkROQk9PU1RfRlRfdHlwZV9tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcgotIyBpZiAhICEgKDk2ICYgKE5ETkJPT1NUX0ZUX3ZhcmlhdGlvbnMpKQotIyBpZiAoNjA5ICYgKE5ETkJPT1NUX0ZUX2NvbmQpKSA9PSAoTkROQk9PU1RfRlRfY29uZCkKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2VsbAotIyBkZWZpbmUgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbSBORE5CT09TVF9GVF9OVUxMQVJZX1BBUkFNCi0jIGRlZmluZSBORE5CT09TVF9GVF9jdiAKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2ZsYWdzIDYwOQotIyBpbmNsdWRlIE5ETkJPT1NUX0ZUX3ZhcmlhdGVfZmlsZQotIyB1bmRlZiBORE5CT09TVF9GVF9jdgotIyB1bmRlZiBORE5CT09TVF9GVF9lbGwKLSMgdW5kZWYgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbQotIyB1bmRlZiBORE5CT09TVF9GVF9mbGFncwotIyBlbmRpZgotIyBlbmRpZgotIyBpZiAhICEgKDk2ICYgKE5ETkJPT1NUX0ZUX3ZhcmlhdGlvbnMpKQotIyBpZiAoMzUzICYgKE5ETkJPT1NUX0ZUX2NvbmQpKSA9PSAoTkROQk9PU1RfRlRfY29uZCkKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2VsbCAuLi4KLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0KLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2N2IAotIyBkZWZpbmUgTkROQk9PU1RfRlRfZmxhZ3MgMzUzCi0jIGluY2x1ZGUgTkROQk9PU1RfRlRfdmFyaWF0ZV9maWxlCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2N2Ci0jIHVuZGVmIE5ETkJPT1NUX0ZUX2VsbAotIyB1bmRlZiBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2ZsYWdzCi0jIGVuZGlmCi0jIGVuZGlmCi0jIGlmICEgISAoOTYgJiAoTkROQk9PU1RfRlRfdmFyaWF0aW9ucykpCi0jIGlmICgxNjMzICYgKE5ETkJPT1NUX0ZUX2NvbmQpKSA9PSAoTkROQk9PU1RfRlRfY29uZCkKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2VsbAotIyBkZWZpbmUgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbSBORE5CT09TVF9GVF9OVUxMQVJZX1BBUkFNCi0jIGRlZmluZSBORE5CT09TVF9GVF9jdiBjb25zdAotIyBkZWZpbmUgTkROQk9PU1RfRlRfZmxhZ3MgMTYzMwotIyBpbmNsdWRlIE5ETkJPT1NUX0ZUX3ZhcmlhdGVfZmlsZQotIyB1bmRlZiBORE5CT09TVF9GVF9jdgotIyB1bmRlZiBORE5CT09TVF9GVF9lbGwKLSMgdW5kZWYgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbQotIyB1bmRlZiBORE5CT09TVF9GVF9mbGFncwotIyBlbmRpZgotIyBlbmRpZgotIyBpZiAhICEgKDk2ICYgKE5ETkJPT1NUX0ZUX3ZhcmlhdGlvbnMpKQotIyBpZiAoMTM3NyAmIChORE5CT09TVF9GVF9jb25kKSkgPT0gKE5ETkJPT1NUX0ZUX2NvbmQpCi0jIGRlZmluZSBORE5CT09TVF9GVF9lbGwgLi4uCi0jIGRlZmluZSBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtCi0jIGRlZmluZSBORE5CT09TVF9GVF9jdiBjb25zdAotIyBkZWZpbmUgTkROQk9PU1RfRlRfZmxhZ3MgMTM3NwotIyBpbmNsdWRlIE5ETkJPT1NUX0ZUX3ZhcmlhdGVfZmlsZQotIyB1bmRlZiBORE5CT09TVF9GVF9jdgotIyB1bmRlZiBORE5CT09TVF9GVF9lbGwKLSMgdW5kZWYgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbQotIyB1bmRlZiBORE5CT09TVF9GVF9mbGFncwotIyBlbmRpZgotIyBlbmRpZgotIyBpZiAhICEgKDk2ICYgKE5ETkJPT1NUX0ZUX3ZhcmlhdGlvbnMpKQotIyBpZiAoMjY1NyAmIChORE5CT09TVF9GVF9jb25kKSkgPT0gKE5ETkJPT1NUX0ZUX2NvbmQpCi0jIGRlZmluZSBORE5CT09TVF9GVF9lbGwKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0gTkROQk9PU1RfRlRfTlVMTEFSWV9QQVJBTQotIyBkZWZpbmUgTkROQk9PU1RfRlRfY3Ygdm9sYXRpbGUKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2ZsYWdzIDI2NTcKLSMgaW5jbHVkZSBORE5CT09TVF9GVF92YXJpYXRlX2ZpbGUKLSMgdW5kZWYgTkROQk9PU1RfRlRfY3YKLSMgdW5kZWYgTkROQk9PU1RfRlRfZWxsCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0KLSMgdW5kZWYgTkROQk9PU1RfRlRfZmxhZ3MKLSMgZW5kaWYKLSMgZW5kaWYKLSMgaWYgISAhICg5NiAmIChORE5CT09TVF9GVF92YXJpYXRpb25zKSkKLSMgaWYgKDI0MDEgJiAoTkROQk9PU1RfRlRfY29uZCkpID09IChORE5CT09TVF9GVF9jb25kKQotIyBkZWZpbmUgTkROQk9PU1RfRlRfZWxsIC4uLgotIyBkZWZpbmUgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbQotIyBkZWZpbmUgTkROQk9PU1RfRlRfY3Ygdm9sYXRpbGUKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2ZsYWdzIDI0MDEKLSMgaW5jbHVkZSBORE5CT09TVF9GVF92YXJpYXRlX2ZpbGUKLSMgdW5kZWYgTkROQk9PU1RfRlRfY3YKLSMgdW5kZWYgTkROQk9PU1RfRlRfZWxsCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0KLSMgdW5kZWYgTkROQk9PU1RfRlRfZmxhZ3MKLSMgZW5kaWYKLSMgZW5kaWYKLSMgaWYgISAhICg5NiAmIChORE5CT09TVF9GVF92YXJpYXRpb25zKSkKLSMgaWYgKDM2ODEgJiAoTkROQk9PU1RfRlRfY29uZCkpID09IChORE5CT09TVF9GVF9jb25kKQotIyBkZWZpbmUgTkROQk9PU1RfRlRfZWxsCi0jIGRlZmluZSBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtIE5ETkJPT1NUX0ZUX05VTExBUllfUEFSQU0KLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2N2IGNvbnN0IHZvbGF0aWxlCi0jIGRlZmluZSBORE5CT09TVF9GVF9mbGFncyAzNjgxCi0jIGluY2x1ZGUgTkROQk9PU1RfRlRfdmFyaWF0ZV9maWxlCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2N2Ci0jIHVuZGVmIE5ETkJPT1NUX0ZUX2VsbAotIyB1bmRlZiBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2ZsYWdzCi0jIGVuZGlmCi0jIGVuZGlmCi0jIGlmICEgISAoOTYgJiAoTkROQk9PU1RfRlRfdmFyaWF0aW9ucykpCi0jIGlmICgzNDI1ICYgKE5ETkJPT1NUX0ZUX2NvbmQpKSA9PSAoTkROQk9PU1RfRlRfY29uZCkKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2VsbCAuLi4KLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0KLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2N2IGNvbnN0IHZvbGF0aWxlCi0jIGRlZmluZSBORE5CT09TVF9GVF9mbGFncyAzNDI1Ci0jIGluY2x1ZGUgTkROQk9PU1RfRlRfdmFyaWF0ZV9maWxlCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2N2Ci0jIHVuZGVmIE5ETkJPT1NUX0ZUX2VsbAotIyB1bmRlZiBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2ZsYWdzCi0jIGVuZGlmCi0jIGVuZGlmCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX3N5bnRheAotIyB1bmRlZiBORE5CT09TVF9GVF9tZnAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3JldGFnX2RlZmF1bHRfY2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcmV0YWdfZGVmYXVsdF9jYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1NTQ5Y2MuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcmV0YWdfZGVmYXVsdF9jYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZm5kZWYgTkROQk9PU1RfRlRfREVUQUlMX1JFVEFHX0RFRkFVTFRfQ0NfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0ZUX0RFVEFJTF9SRVRBR19ERUZBVUxUX0NDX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2JpdGFuZC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9jb21wb25lbnRzLmhwcD4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfRlRfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9wcF9yZXRhZ19kZWZhdWx0X2NjL21hc3Rlci5ocHA+Ci0jZWxzZQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9wcF9yZXRhZ19kZWZhdWx0X2NjL3ByZXByb2Nlc3NlZC5ocHA+Ci0jZW5kaWYKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiYTZmZjMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZm5kZWYgTkROQk9PU1RfRlRfREVUQUlMX1NZTlRIRVNJWkVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0ZUX0RFVEFJTF9TWU5USEVTSVpFX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8Y3N0ZGRlZj4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3NpemUuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvY29uZmlnL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvcHJvcGVydHlfdGFncy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2N2X3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3JldGFnX2RlZmF1bHRfY2MuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgZnVuY3Rpb25fdHlwZXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8Yml0c190IEZsYWdzLCBiaXRzX3QgQ0NJRCwgc3RkOjpzaXplX3QgU2l6ZT4KLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbwotewotICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZXE+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaSB7IH07Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTZXEsIGJpdHNfdCBCaXRzPgotc3RydWN0IHN5bnRoZXNpemVfaW1wbAotICA6IGRldGFpbDo6c3ludGhlc2l6ZV9pbXBsX28KLSAgICA8IDo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OmRlY29kZV9iaXRzPEJpdHM+OjpmbGFncwotICAgICwgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6ZGVjb2RlX2JpdHM8Qml0cz46OmNjX2lkCi0gICAgLCA6Om5kbmJvb3N0OjptcGw6OnNpemU8U2VxPjo6dmFsdWUKLSAgICA+Ci0gICAgOjp0ZW1wbGF0ZSBzeW50aGVzaXplX2ltcGxfaTxTZXE+Ci17IH07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFNlcSwgdHlwZW5hbWUgVGFnPgotc3RydWN0IHN5bnRoZXNpemVfZnVuYwotICA6IGRldGFpbDo6c3ludGhlc2l6ZV9pbXBsCi0gICAgPCBTZXEKLSAgICAsIDo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OmJpdHMKLSAgICAgIDwgZGV0YWlsOjpyZXRhZ19kZWZhdWx0X2NjCi0gICAgICAgIDwgZnVuY3Rpb25fdHlwZXM6OnRhZzxudl9kY2NfZnVuYywgVGFnPiA+IAotICAgICAgPjo6dmFsdWUgCi0gICAgPgoteyB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTZXEsIHR5cGVuYW1lIFRhZz4KLXN0cnVjdCBzeW50aGVzaXplX21mcAotICA6IGRldGFpbDo6c3ludGhlc2l6ZV9pbXBsCi0gICAgPCBTZXEgCi0gICAgLCA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpiaXRzCi0gICAgICA8IGRldGFpbDo6cmV0YWdfZGVmYXVsdF9jYwotICAgICAgICA8IGZ1bmN0aW9uX3R5cGVzOjp0YWcKLSAgICAgICAgICA8IHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCB0eXBlbmFtZSBtcGw6OmF0X2M8U2VxLDE+Ojp0eXBlID46OnRhZwotICAgICAgICAgICwgbnZfZGNjX21mcCwgVGFnCi0gICAgICAgID4gPgotICAgICAgPjo6dmFsdWUKLSAgICA+Ci17IH07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFMsIHR5cGVuYW1lIFIgPSB0eXBlbmFtZSBtcGw6OmF0X2M8UywwPjo6dHlwZSwKLSAgICB0eXBlbmFtZSBDID0gdHlwZW5hbWUgbXBsOjphdF9jPFMsMT46OnR5cGU+Ci1zdHJ1Y3Qgc3ludGhlc2l6ZV9tb3AKLXsKLSAgdHlwZWRlZiBSIEM6OiogdHlwZTsKLX07Ci0KLSNkZWZpbmUgTkROQk9PU1RfRlRfdmFyaWF0aW9ucyBORE5CT09TVF9GVF9mdW5jdGlvbnxORE5CT09TVF9GVF9tZW1iZXJfcG9pbnRlcgotI2RlZmluZSBORE5CT09TVF9GVF9hbF9wYXRoIG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwKLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfbG9vcC5ocHA+Ci0KLX0gfSB9IC8vIG5hbWVzcGFjZSA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHkxMF8wLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemVfaW1wbC9hcml0eTEwXzAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NGRiM2JlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemVfaW1wbC9hcml0eTEwXzAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzM0ICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gbm8gaW5jbHVkZSBndWFyZHMsIHRoaXMgZmlsZSBpcyBpbnRlbmRlZCBmb3IgbXVsdGlwbGUgaW5jbHVzaW9uCi0KLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfc3ludGF4ICAgICB0eXBlIG1hY3JvIHRvIHVzZQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jYyAgICAgICAgIGVtcHR5IG9yIGNjIHNwZWNpZmllciAKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZWxsICAgICAgICBlbXB0eSBvciAiLi4uIgotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jdiAgICAgICAgIGVtcHR5IG9yIGN2IHF1YWxpZmllcnMKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZmxhZ3MgICAgICBzaW5nbGUgZGVjaW1hbCBpbnRlZ2VyIGVuY29kaW5nIHRoZSBmbGFncwotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9uICAgICAgICAgIG51bWJlciBvZiBjb21wb25lbnQgdHlwZXMgKGFyaXR5KzEpCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX2FyaXR5ICAgICAgY3VycmVudCBhcml0eQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90eXBlICAgICAgIG1hY3JvIHRoYXQgZXhwYW5kcyB0byB0aGUgdHlwZQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90cGxhcmdzKHApIHRlbXBsYXRlIGFyZ3VtZW50cyB3aXRoIGdpdmVuIHByZWZpeAotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9wYXJhbXMocCkgIHBhcmFtZXRlcnMgd2l0aCBnaXZlbiBwcmVmaXgKLQotIyBkZWZpbmUgTkROQk9PU1RfRlRfbWFrZV90eXBlKGZsYWdzLGNjLGFyaXR5KSBORE5CT09TVF9GVF9tYWtlX3R5cGVfaW1wbChmbGFncyxjYyxhcml0eSkKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX21ha2VfdHlwZV9pbXBsKGZsYWdzLGNjLGFyaXR5KSBtYWtlX3R5cGVfICMjIGZsYWdzICMjIF8gIyMgY2MgIyMgXyAjIyBhcml0eQotdGVtcGxhdGU8IHR5cGVuYW1lIFIgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwwKQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0gTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMSA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwwKSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDEpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMiA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDEpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMikKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDMgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDIpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMykKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgNCA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzKSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgNSA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNSkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDYgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDUpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNikKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgNyA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw2KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDcpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgOCA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDcpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsOCkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDkgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDgpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsOSkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMTAgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsOSkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxMCkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAxMSA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxMCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotIyB1bmRlZiBORE5CT09TVF9GVF9tYWtlX3R5cGUKLSMgdW5kZWYgTkROQk9PU1RfRlRfbWFrZV90eXBlX2ltcGwKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsL2FyaXR5MTBfMS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHkxMF8xLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGViYjJjOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHkxMF8xLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyNiArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbgotCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX3N5bnRheCAgICAgdHlwZSBtYWNybyB0byB1c2UKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY2MgICAgICAgICBlbXB0eSBvciBjYyBzcGVjaWZpZXIgCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2VsbCAgICAgICAgZW1wdHkgb3IgIi4uLiIKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY3YgICAgICAgICBlbXB0eSBvciBjdiBxdWFsaWZpZXJzCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2ZsYWdzICAgICAgc2luZ2xlIGRlY2ltYWwgaW50ZWdlciBlbmNvZGluZyB0aGUgZmxhZ3MKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfbiAgICAgICAgICBudW1iZXIgb2YgY29tcG9uZW50IHR5cGVzIChhcml0eSsxKQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9hcml0eSAgICAgIGN1cnJlbnQgYXJpdHkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHlwZSAgICAgICBtYWNybyB0aGF0IGV4cGFuZHMgdG8gdGhlIHR5cGUKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHBsYXJncyhwKSB0ZW1wbGF0ZSBhcmd1bWVudHMgd2l0aCBnaXZlbiBwcmVmaXgKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfcGFyYW1zKHApICBwYXJhbWV0ZXJzIHdpdGggZ2l2ZW4gcHJlZml4Ci0KLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX21ha2VfdHlwZShmbGFncyxjYyxhcml0eSkgTkROQk9PU1RfRlRfbWFrZV90eXBlX2ltcGwoZmxhZ3MsY2MsYXJpdHkpCi0jIGRlZmluZSBORE5CT09TVF9GVF9tYWtlX3R5cGVfaW1wbChmbGFncyxjYyxhcml0eSkgbWFrZV90eXBlXyAjIyBmbGFncyAjIyBfICMjIGNjICMjIF8gIyMgYXJpdHkKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxKQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAyID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMSkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyKQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDMgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDIpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMykKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDQgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMykgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCA1ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw1KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDYgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDUpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNikKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDcgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNikgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw3KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCA4ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNykgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw4KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDkgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDgpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsOSkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDEwID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDkpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTApCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDExID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDEwKSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci0jIHVuZGVmIE5ETkJPT1NUX0ZUX21ha2VfdHlwZQotIyB1bmRlZiBORE5CT09TVF9GVF9tYWtlX3R5cGVfaW1wbAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHkyMF8wLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemVfaW1wbC9hcml0eTIwXzAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYWQyYTBmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemVfaW1wbC9hcml0eTIwXzAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTE3ICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gbm8gaW5jbHVkZSBndWFyZHMsIHRoaXMgZmlsZSBpcyBpbnRlbmRlZCBmb3IgbXVsdGlwbGUgaW5jbHVzaW9uCi0KLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfc3ludGF4ICAgICB0eXBlIG1hY3JvIHRvIHVzZQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jYyAgICAgICAgIGVtcHR5IG9yIGNjIHNwZWNpZmllciAKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZWxsICAgICAgICBlbXB0eSBvciAiLi4uIgotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jdiAgICAgICAgIGVtcHR5IG9yIGN2IHF1YWxpZmllcnMKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZmxhZ3MgICAgICBzaW5nbGUgZGVjaW1hbCBpbnRlZ2VyIGVuY29kaW5nIHRoZSBmbGFncwotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9uICAgICAgICAgIG51bWJlciBvZiBjb21wb25lbnQgdHlwZXMgKGFyaXR5KzEpCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX2FyaXR5ICAgICAgY3VycmVudCBhcml0eQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90eXBlICAgICAgIG1hY3JvIHRoYXQgZXhwYW5kcyB0byB0aGUgdHlwZQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90cGxhcmdzKHApIHRlbXBsYXRlIGFyZ3VtZW50cyB3aXRoIGdpdmVuIHByZWZpeAotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9wYXJhbXMocCkgIHBhcmFtZXRlcnMgd2l0aCBnaXZlbiBwcmVmaXgKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsL2FyaXR5MTBfMC5ocHA+Ci0jIGRlZmluZSBORE5CT09TVF9GVF9tYWtlX3R5cGUoZmxhZ3MsY2MsYXJpdHkpIE5ETkJPT1NUX0ZUX21ha2VfdHlwZV9pbXBsKGZsYWdzLGNjLGFyaXR5KQotIyBkZWZpbmUgTkROQk9PU1RfRlRfbWFrZV90eXBlX2ltcGwoZmxhZ3MsY2MsYXJpdHkpIG1ha2VfdHlwZV8gIyMgZmxhZ3MgIyMgXyAjIyBjYyAjIyBfICMjIGFyaXR5Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTEpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMTIgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDExKSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxMikKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAxMyA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDEyKSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDEzKQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDE0ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDEzKSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTQpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMTUgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDE0KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxNSkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAxNiA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDE1KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDE2KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDE3ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDE2KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTcpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMTggPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDE3KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxOCkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAxOSA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDE4KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDE5KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDIwID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDE5KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMjApCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMjEgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDIwKSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLSMgdW5kZWYgTkROQk9PU1RfRlRfbWFrZV90eXBlCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX21ha2VfdHlwZV9pbXBsCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemVfaW1wbC9hcml0eTIwXzEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsL2FyaXR5MjBfMS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3NzZjODMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsL2FyaXR5MjBfMS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MjcgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb24KLQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9zeW50YXggICAgIHR5cGUgbWFjcm8gdG8gdXNlCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2NjICAgICAgICAgZW1wdHkgb3IgY2Mgc3BlY2lmaWVyIAotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9lbGwgICAgICAgIGVtcHR5IG9yICIuLi4iCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2N2ICAgICAgICAgZW1wdHkgb3IgY3YgcXVhbGlmaWVycwotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9mbGFncyAgICAgIHNpbmdsZSBkZWNpbWFsIGludGVnZXIgZW5jb2RpbmcgdGhlIGZsYWdzCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX24gICAgICAgICAgbnVtYmVyIG9mIGNvbXBvbmVudCB0eXBlcyAoYXJpdHkrMSkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfYXJpdHkgICAgICBjdXJyZW50IGFyaXR5Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3R5cGUgICAgICAgbWFjcm8gdGhhdCBleHBhbmRzIHRvIHRoZSB0eXBlCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3RwbGFyZ3MocCkgdGVtcGxhdGUgYXJndW1lbnRzIHdpdGggZ2l2ZW4gcHJlZml4Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3BhcmFtcyhwKSAgcGFyYW1ldGVycyB3aXRoIGdpdmVuIHByZWZpeAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHkxMF8xLmhwcD4KLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX21ha2VfdHlwZShmbGFncyxjYyxhcml0eSkgTkROQk9PU1RfRlRfbWFrZV90eXBlX2ltcGwoZmxhZ3MsY2MsYXJpdHkpCi0jIGRlZmluZSBORE5CT09TVF9GVF9tYWtlX3R5cGVfaW1wbChmbGFncyxjYyxhcml0eSkgbWFrZV90eXBlXyAjIyBmbGFncyAjIyBfICMjIGNjICMjIF8gIyMgYXJpdHkKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxMSkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMTIgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDExKSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxMikKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMTMgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxMikgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxMykKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMTQgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTMpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxNCkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMTUgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDE0KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxNSkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMTYgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxNSkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxNikKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMTcgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTYpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxNykKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMTggPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDE3KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxOCkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMTkgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxOCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxOSkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMjAgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTkpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyMCkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMjEgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDIwKSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLSMgdW5kZWYgTkROQk9PU1RfRlRfbWFrZV90eXBlCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX21ha2VfdHlwZV9pbXBsCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemVfaW1wbC9hcml0eTMwXzAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsL2FyaXR5MzBfMC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0ODM4ZmQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsL2FyaXR5MzBfMC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MTcgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb24KLQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9zeW50YXggICAgIHR5cGUgbWFjcm8gdG8gdXNlCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2NjICAgICAgICAgZW1wdHkgb3IgY2Mgc3BlY2lmaWVyIAotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9lbGwgICAgICAgIGVtcHR5IG9yICIuLi4iCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2N2ICAgICAgICAgZW1wdHkgb3IgY3YgcXVhbGlmaWVycwotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9mbGFncyAgICAgIHNpbmdsZSBkZWNpbWFsIGludGVnZXIgZW5jb2RpbmcgdGhlIGZsYWdzCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX24gICAgICAgICAgbnVtYmVyIG9mIGNvbXBvbmVudCB0eXBlcyAoYXJpdHkrMSkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfYXJpdHkgICAgICBjdXJyZW50IGFyaXR5Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3R5cGUgICAgICAgbWFjcm8gdGhhdCBleHBhbmRzIHRvIHRoZSB0eXBlCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3RwbGFyZ3MocCkgdGVtcGxhdGUgYXJndW1lbnRzIHdpdGggZ2l2ZW4gcHJlZml4Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3BhcmFtcyhwKSAgcGFyYW1ldGVycyB3aXRoIGdpdmVuIHByZWZpeAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHkyMF8wLmhwcD4KLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX21ha2VfdHlwZShmbGFncyxjYyxhcml0eSkgTkROQk9PU1RfRlRfbWFrZV90eXBlX2ltcGwoZmxhZ3MsY2MsYXJpdHkpCi0jIGRlZmluZSBORE5CT09TVF9GVF9tYWtlX3R5cGVfaW1wbChmbGFncyxjYyxhcml0eSkgbWFrZV90eXBlXyAjIyBmbGFncyAjIyBfICMjIGNjICMjIF8gIyMgYXJpdHkKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyMSkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAyMiA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDIxKSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDIyKQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDIzID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjAgPiA6OnR5cGUgaXRlcl8yMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIxID4gOjp0eXBlIGl0ZXJfMjI7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDIyKSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMjMpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMjQgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDIzKSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyNCkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAyNSA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDI0KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDI1KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDI2ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjAgPiA6OnR5cGUgaXRlcl8yMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIxID4gOjp0eXBlIGl0ZXJfMjI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMiA+IDo6dHlwZSBpdGVyXzIzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjMgPiA6OnR5cGUgaXRlcl8yNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI0ID4gOjp0eXBlIGl0ZXJfMjU7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDI1KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMjYpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMjcgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDI2KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjYgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyNykKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAyOCA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDI3KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNyA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDI4KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDI5ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjAgPiA6OnR5cGUgaXRlcl8yMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIxID4gOjp0eXBlIGl0ZXJfMjI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMiA+IDo6dHlwZSBpdGVyXzIzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjMgPiA6OnR5cGUgaXRlcl8yNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI0ID4gOjp0eXBlIGl0ZXJfMjU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNSA+IDo6dHlwZSBpdGVyXzI2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjYgPiA6OnR5cGUgaXRlcl8yNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI3ID4gOjp0eXBlIGl0ZXJfMjg7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDI4KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI4ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMjkpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMzAgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDI5KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjkgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzMCkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAzMSA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDMwKSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMCA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotIyB1bmRlZiBORE5CT09TVF9GVF9tYWtlX3R5cGUKLSMgdW5kZWYgTkROQk9PU1RfRlRfbWFrZV90eXBlX2ltcGwKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsL2FyaXR5MzBfMS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHkzMF8xLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjU4MjlkNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHkzMF8xLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcyNyArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbgotCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX3N5bnRheCAgICAgdHlwZSBtYWNybyB0byB1c2UKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY2MgICAgICAgICBlbXB0eSBvciBjYyBzcGVjaWZpZXIgCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2VsbCAgICAgICAgZW1wdHkgb3IgIi4uLiIKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY3YgICAgICAgICBlbXB0eSBvciBjdiBxdWFsaWZpZXJzCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2ZsYWdzICAgICAgc2luZ2xlIGRlY2ltYWwgaW50ZWdlciBlbmNvZGluZyB0aGUgZmxhZ3MKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfbiAgICAgICAgICBudW1iZXIgb2YgY29tcG9uZW50IHR5cGVzIChhcml0eSsxKQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9hcml0eSAgICAgIGN1cnJlbnQgYXJpdHkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHlwZSAgICAgICBtYWNybyB0aGF0IGV4cGFuZHMgdG8gdGhlIHR5cGUKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHBsYXJncyhwKSB0ZW1wbGF0ZSBhcmd1bWVudHMgd2l0aCBnaXZlbiBwcmVmaXgKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfcGFyYW1zKHApICBwYXJhbWV0ZXJzIHdpdGggZ2l2ZW4gcHJlZml4Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemVfaW1wbC9hcml0eTIwXzEuaHBwPgotIyBkZWZpbmUgTkROQk9PU1RfRlRfbWFrZV90eXBlKGZsYWdzLGNjLGFyaXR5KSBORE5CT09TVF9GVF9tYWtlX3R5cGVfaW1wbChmbGFncyxjYyxhcml0eSkKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX21ha2VfdHlwZV9pbXBsKGZsYWdzLGNjLGFyaXR5KSBtYWtlX3R5cGVfICMjIGZsYWdzICMjIF8gIyMgY2MgIyMgXyAjIyBhcml0eQotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDIxKQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAyMiA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDIxKSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDIyKQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAyMyA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyMikgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDIzKQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAyNCA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMjMpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDI0KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAyNSA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDI0KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDI1KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAyNiA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyNSkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDI2KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAyNyA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMjYpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDI3KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAyOCA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDI3KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNyA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDI4KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAyOSA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyOCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDI5KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAzMCA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMjkpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOSA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDMwKQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAzMSA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDMwKSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMCA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotIyB1bmRlZiBORE5CT09TVF9GVF9tYWtlX3R5cGUKLSMgdW5kZWYgTkROQk9PU1RfRlRfbWFrZV90eXBlX2ltcGwKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsL2FyaXR5NDBfMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHk0MF8wLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmZmMWMzZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHk0MF8wLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDkxNyArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbgotCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX3N5bnRheCAgICAgdHlwZSBtYWNybyB0byB1c2UKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY2MgICAgICAgICBlbXB0eSBvciBjYyBzcGVjaWZpZXIgCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2VsbCAgICAgICAgZW1wdHkgb3IgIi4uLiIKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY3YgICAgICAgICBlbXB0eSBvciBjdiBxdWFsaWZpZXJzCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2ZsYWdzICAgICAgc2luZ2xlIGRlY2ltYWwgaW50ZWdlciBlbmNvZGluZyB0aGUgZmxhZ3MKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfbiAgICAgICAgICBudW1iZXIgb2YgY29tcG9uZW50IHR5cGVzIChhcml0eSsxKQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9hcml0eSAgICAgIGN1cnJlbnQgYXJpdHkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHlwZSAgICAgICBtYWNybyB0aGF0IGV4cGFuZHMgdG8gdGhlIHR5cGUKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHBsYXJncyhwKSB0ZW1wbGF0ZSBhcmd1bWVudHMgd2l0aCBnaXZlbiBwcmVmaXgKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfcGFyYW1zKHApICBwYXJhbWV0ZXJzIHdpdGggZ2l2ZW4gcHJlZml4Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemVfaW1wbC9hcml0eTMwXzAuaHBwPgotIyBkZWZpbmUgTkROQk9PU1RfRlRfbWFrZV90eXBlKGZsYWdzLGNjLGFyaXR5KSBORE5CT09TVF9GVF9tYWtlX3R5cGVfaW1wbChmbGFncyxjYyxhcml0eSkKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX21ha2VfdHlwZV9pbXBsKGZsYWdzLGNjLGFyaXR5KSBtYWtlX3R5cGVfICMjIGZsYWdzICMjIF8gIyMgY2MgIyMgXyAjIyBhcml0eQotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDMxKQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDMyID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjAgPiA6OnR5cGUgaXRlcl8yMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIxID4gOjp0eXBlIGl0ZXJfMjI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMiA+IDo6dHlwZSBpdGVyXzIzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjMgPiA6OnR5cGUgaXRlcl8yNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI0ID4gOjp0eXBlIGl0ZXJfMjU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNSA+IDo6dHlwZSBpdGVyXzI2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjYgPiA6OnR5cGUgaXRlcl8yNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI3ID4gOjp0eXBlIGl0ZXJfMjg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOCA+IDo6dHlwZSBpdGVyXzI5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjkgPiA6OnR5cGUgaXRlcl8zMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMwID4gOjp0eXBlIGl0ZXJfMzE7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDMxKSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMxID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzIpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMzMgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOSA+IDo6dHlwZSBpdGVyXzMwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzAgPiA6OnR5cGUgaXRlcl8zMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMxID4gOjp0eXBlIGl0ZXJfMzI7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDMyKSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzIgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzMykKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAzNCA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDMzKSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMyA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM0KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDM1ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjAgPiA6OnR5cGUgaXRlcl8yMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIxID4gOjp0eXBlIGl0ZXJfMjI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMiA+IDo6dHlwZSBpdGVyXzIzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjMgPiA6OnR5cGUgaXRlcl8yNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI0ID4gOjp0eXBlIGl0ZXJfMjU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNSA+IDo6dHlwZSBpdGVyXzI2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjYgPiA6OnR5cGUgaXRlcl8yNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI3ID4gOjp0eXBlIGl0ZXJfMjg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOCA+IDo6dHlwZSBpdGVyXzI5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjkgPiA6OnR5cGUgaXRlcl8zMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMwID4gOjp0eXBlIGl0ZXJfMzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMSA+IDo6dHlwZSBpdGVyXzMyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzIgPiA6OnR5cGUgaXRlcl8zMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMzID4gOjp0eXBlIGl0ZXJfMzQ7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM0KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM0ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzUpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMzYgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOSA+IDo6dHlwZSBpdGVyXzMwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzAgPiA6OnR5cGUgaXRlcl8zMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMxID4gOjp0eXBlIGl0ZXJfMzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMiA+IDo6dHlwZSBpdGVyXzMzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzMgPiA6OnR5cGUgaXRlcl8zNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM0ID4gOjp0eXBlIGl0ZXJfMzU7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM1KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzUgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzNikKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAzNyA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzQgPiA6OnR5cGUgaXRlcl8zNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM1ID4gOjp0eXBlIGl0ZXJfMzY7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM2KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNiA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM3KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDM4ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjAgPiA6OnR5cGUgaXRlcl8yMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIxID4gOjp0eXBlIGl0ZXJfMjI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMiA+IDo6dHlwZSBpdGVyXzIzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjMgPiA6OnR5cGUgaXRlcl8yNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI0ID4gOjp0eXBlIGl0ZXJfMjU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNSA+IDo6dHlwZSBpdGVyXzI2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjYgPiA6OnR5cGUgaXRlcl8yNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI3ID4gOjp0eXBlIGl0ZXJfMjg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOCA+IDo6dHlwZSBpdGVyXzI5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjkgPiA6OnR5cGUgaXRlcl8zMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMwID4gOjp0eXBlIGl0ZXJfMzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMSA+IDo6dHlwZSBpdGVyXzMyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzIgPiA6OnR5cGUgaXRlcl8zMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMzID4gOjp0eXBlIGl0ZXJfMzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNCA+IDo6dHlwZSBpdGVyXzM1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzUgPiA6OnR5cGUgaXRlcl8zNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM2ID4gOjp0eXBlIGl0ZXJfMzc7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM3KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM3ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzgpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMzkgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOSA+IDo6dHlwZSBpdGVyXzMwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzAgPiA6OnR5cGUgaXRlcl8zMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMxID4gOjp0eXBlIGl0ZXJfMzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMiA+IDo6dHlwZSBpdGVyXzMzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzMgPiA6OnR5cGUgaXRlcl8zNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM0ID4gOjp0eXBlIGl0ZXJfMzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNSA+IDo6dHlwZSBpdGVyXzM2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzYgPiA6OnR5cGUgaXRlcl8zNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM3ID4gOjp0eXBlIGl0ZXJfMzg7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM4KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzggPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzOSkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCA0MCA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzQgPiA6OnR5cGUgaXRlcl8zNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM1ID4gOjp0eXBlIGl0ZXJfMzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNiA+IDo6dHlwZSBpdGVyXzM3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzcgPiA6OnR5cGUgaXRlcl8zODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM4ID4gOjp0eXBlIGl0ZXJfMzk7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM5KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOSA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQwKQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDQxID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjAgPiA6OnR5cGUgaXRlcl8yMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIxID4gOjp0eXBlIGl0ZXJfMjI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMiA+IDo6dHlwZSBpdGVyXzIzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjMgPiA6OnR5cGUgaXRlcl8yNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI0ID4gOjp0eXBlIGl0ZXJfMjU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNSA+IDo6dHlwZSBpdGVyXzI2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjYgPiA6OnR5cGUgaXRlcl8yNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI3ID4gOjp0eXBlIGl0ZXJfMjg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOCA+IDo6dHlwZSBpdGVyXzI5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjkgPiA6OnR5cGUgaXRlcl8zMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMwID4gOjp0eXBlIGl0ZXJfMzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMSA+IDo6dHlwZSBpdGVyXzMyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzIgPiA6OnR5cGUgaXRlcl8zMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMzID4gOjp0eXBlIGl0ZXJfMzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNCA+IDo6dHlwZSBpdGVyXzM1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzUgPiA6OnR5cGUgaXRlcl8zNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM2ID4gOjp0eXBlIGl0ZXJfMzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNyA+IDo6dHlwZSBpdGVyXzM4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzggPiA6OnR5cGUgaXRlcl8zOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM5ID4gOjp0eXBlIGl0ZXJfNDA7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQwKSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQwID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci0jIHVuZGVmIE5ETkJPT1NUX0ZUX21ha2VfdHlwZQotIyB1bmRlZiBORE5CT09TVF9GVF9tYWtlX3R5cGVfaW1wbAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHk0MF8xLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemVfaW1wbC9hcml0eTQwXzEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTg1ZjU4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemVfaW1wbC9hcml0eTQwXzEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTI3ICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gbm8gaW5jbHVkZSBndWFyZHMsIHRoaXMgZmlsZSBpcyBpbnRlbmRlZCBmb3IgbXVsdGlwbGUgaW5jbHVzaW9uCi0KLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfc3ludGF4ICAgICB0eXBlIG1hY3JvIHRvIHVzZQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jYyAgICAgICAgIGVtcHR5IG9yIGNjIHNwZWNpZmllciAKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZWxsICAgICAgICBlbXB0eSBvciAiLi4uIgotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jdiAgICAgICAgIGVtcHR5IG9yIGN2IHF1YWxpZmllcnMKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZmxhZ3MgICAgICBzaW5nbGUgZGVjaW1hbCBpbnRlZ2VyIGVuY29kaW5nIHRoZSBmbGFncwotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9uICAgICAgICAgIG51bWJlciBvZiBjb21wb25lbnQgdHlwZXMgKGFyaXR5KzEpCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX2FyaXR5ICAgICAgY3VycmVudCBhcml0eQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90eXBlICAgICAgIG1hY3JvIHRoYXQgZXhwYW5kcyB0byB0aGUgdHlwZQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90cGxhcmdzKHApIHRlbXBsYXRlIGFyZ3VtZW50cyB3aXRoIGdpdmVuIHByZWZpeAotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9wYXJhbXMocCkgIHBhcmFtZXRlcnMgd2l0aCBnaXZlbiBwcmVmaXgKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsL2FyaXR5MzBfMS5ocHA+Ci0jIGRlZmluZSBORE5CT09TVF9GVF9tYWtlX3R5cGUoZmxhZ3MsY2MsYXJpdHkpIE5ETkJPT1NUX0ZUX21ha2VfdHlwZV9pbXBsKGZsYWdzLGNjLGFyaXR5KQotIyBkZWZpbmUgTkROQk9PU1RfRlRfbWFrZV90eXBlX2ltcGwoZmxhZ3MsY2MsYXJpdHkpIG1ha2VfdHlwZV8gIyMgZmxhZ3MgIyMgXyAjIyBjYyAjIyBfICMjIGFyaXR5Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzEpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDMyID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjAgPiA6OnR5cGUgaXRlcl8yMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIxID4gOjp0eXBlIGl0ZXJfMjI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMiA+IDo6dHlwZSBpdGVyXzIzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjMgPiA6OnR5cGUgaXRlcl8yNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI0ID4gOjp0eXBlIGl0ZXJfMjU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNSA+IDo6dHlwZSBpdGVyXzI2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjYgPiA6OnR5cGUgaXRlcl8yNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI3ID4gOjp0eXBlIGl0ZXJfMjg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOCA+IDo6dHlwZSBpdGVyXzI5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjkgPiA6OnR5cGUgaXRlcl8zMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMwID4gOjp0eXBlIGl0ZXJfMzE7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDMxKSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMxID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzIpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDMzID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjAgPiA6OnR5cGUgaXRlcl8yMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIxID4gOjp0eXBlIGl0ZXJfMjI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMiA+IDo6dHlwZSBpdGVyXzIzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjMgPiA6OnR5cGUgaXRlcl8yNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI0ID4gOjp0eXBlIGl0ZXJfMjU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNSA+IDo6dHlwZSBpdGVyXzI2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjYgPiA6OnR5cGUgaXRlcl8yNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI3ID4gOjp0eXBlIGl0ZXJfMjg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOCA+IDo6dHlwZSBpdGVyXzI5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjkgPiA6OnR5cGUgaXRlcl8zMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMwID4gOjp0eXBlIGl0ZXJfMzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMSA+IDo6dHlwZSBpdGVyXzMyOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzMikgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzMpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDM0ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjAgPiA6OnR5cGUgaXRlcl8yMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIxID4gOjp0eXBlIGl0ZXJfMjI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMiA+IDo6dHlwZSBpdGVyXzIzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjMgPiA6OnR5cGUgaXRlcl8yNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI0ID4gOjp0eXBlIGl0ZXJfMjU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNSA+IDo6dHlwZSBpdGVyXzI2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjYgPiA6OnR5cGUgaXRlcl8yNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI3ID4gOjp0eXBlIGl0ZXJfMjg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOCA+IDo6dHlwZSBpdGVyXzI5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjkgPiA6OnR5cGUgaXRlcl8zMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMwID4gOjp0eXBlIGl0ZXJfMzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMSA+IDo6dHlwZSBpdGVyXzMyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzIgPiA6OnR5cGUgaXRlcl8zMzsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzMpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMzID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzQpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDM1ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjAgPiA6OnR5cGUgaXRlcl8yMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIxID4gOjp0eXBlIGl0ZXJfMjI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMiA+IDo6dHlwZSBpdGVyXzIzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjMgPiA6OnR5cGUgaXRlcl8yNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI0ID4gOjp0eXBlIGl0ZXJfMjU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNSA+IDo6dHlwZSBpdGVyXzI2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjYgPiA6OnR5cGUgaXRlcl8yNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI3ID4gOjp0eXBlIGl0ZXJfMjg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOCA+IDo6dHlwZSBpdGVyXzI5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjkgPiA6OnR5cGUgaXRlcl8zMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMwID4gOjp0eXBlIGl0ZXJfMzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMSA+IDo6dHlwZSBpdGVyXzMyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzIgPiA6OnR5cGUgaXRlcl8zMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMzID4gOjp0eXBlIGl0ZXJfMzQ7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM0KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM0ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzUpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDM2ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjAgPiA6OnR5cGUgaXRlcl8yMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIxID4gOjp0eXBlIGl0ZXJfMjI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMiA+IDo6dHlwZSBpdGVyXzIzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjMgPiA6OnR5cGUgaXRlcl8yNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI0ID4gOjp0eXBlIGl0ZXJfMjU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNSA+IDo6dHlwZSBpdGVyXzI2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjYgPiA6OnR5cGUgaXRlcl8yNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI3ID4gOjp0eXBlIGl0ZXJfMjg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOCA+IDo6dHlwZSBpdGVyXzI5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjkgPiA6OnR5cGUgaXRlcl8zMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMwID4gOjp0eXBlIGl0ZXJfMzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMSA+IDo6dHlwZSBpdGVyXzMyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzIgPiA6OnR5cGUgaXRlcl8zMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMzID4gOjp0eXBlIGl0ZXJfMzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNCA+IDo6dHlwZSBpdGVyXzM1OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzNSkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM1ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzYpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDM3ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjAgPiA6OnR5cGUgaXRlcl8yMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIxID4gOjp0eXBlIGl0ZXJfMjI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMiA+IDo6dHlwZSBpdGVyXzIzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjMgPiA6OnR5cGUgaXRlcl8yNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI0ID4gOjp0eXBlIGl0ZXJfMjU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNSA+IDo6dHlwZSBpdGVyXzI2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjYgPiA6OnR5cGUgaXRlcl8yNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI3ID4gOjp0eXBlIGl0ZXJfMjg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOCA+IDo6dHlwZSBpdGVyXzI5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjkgPiA6OnR5cGUgaXRlcl8zMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMwID4gOjp0eXBlIGl0ZXJfMzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMSA+IDo6dHlwZSBpdGVyXzMyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzIgPiA6OnR5cGUgaXRlcl8zMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMzID4gOjp0eXBlIGl0ZXJfMzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNCA+IDo6dHlwZSBpdGVyXzM1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzUgPiA6OnR5cGUgaXRlcl8zNjsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzYpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM2ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzcpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDM4ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjAgPiA6OnR5cGUgaXRlcl8yMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIxID4gOjp0eXBlIGl0ZXJfMjI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMiA+IDo6dHlwZSBpdGVyXzIzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjMgPiA6OnR5cGUgaXRlcl8yNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI0ID4gOjp0eXBlIGl0ZXJfMjU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNSA+IDo6dHlwZSBpdGVyXzI2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjYgPiA6OnR5cGUgaXRlcl8yNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI3ID4gOjp0eXBlIGl0ZXJfMjg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOCA+IDo6dHlwZSBpdGVyXzI5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjkgPiA6OnR5cGUgaXRlcl8zMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMwID4gOjp0eXBlIGl0ZXJfMzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMSA+IDo6dHlwZSBpdGVyXzMyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzIgPiA6OnR5cGUgaXRlcl8zMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMzID4gOjp0eXBlIGl0ZXJfMzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNCA+IDo6dHlwZSBpdGVyXzM1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzUgPiA6OnR5cGUgaXRlcl8zNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM2ID4gOjp0eXBlIGl0ZXJfMzc7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM3KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM3ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzgpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDM5ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjAgPiA6OnR5cGUgaXRlcl8yMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIxID4gOjp0eXBlIGl0ZXJfMjI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMiA+IDo6dHlwZSBpdGVyXzIzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjMgPiA6OnR5cGUgaXRlcl8yNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI0ID4gOjp0eXBlIGl0ZXJfMjU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNSA+IDo6dHlwZSBpdGVyXzI2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjYgPiA6OnR5cGUgaXRlcl8yNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI3ID4gOjp0eXBlIGl0ZXJfMjg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOCA+IDo6dHlwZSBpdGVyXzI5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjkgPiA6OnR5cGUgaXRlcl8zMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMwID4gOjp0eXBlIGl0ZXJfMzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMSA+IDo6dHlwZSBpdGVyXzMyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzIgPiA6OnR5cGUgaXRlcl8zMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMzID4gOjp0eXBlIGl0ZXJfMzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNCA+IDo6dHlwZSBpdGVyXzM1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzUgPiA6OnR5cGUgaXRlcl8zNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM2ID4gOjp0eXBlIGl0ZXJfMzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNyA+IDo6dHlwZSBpdGVyXzM4OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzOCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM4ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzkpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDQwID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjAgPiA6OnR5cGUgaXRlcl8yMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIxID4gOjp0eXBlIGl0ZXJfMjI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMiA+IDo6dHlwZSBpdGVyXzIzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjMgPiA6OnR5cGUgaXRlcl8yNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI0ID4gOjp0eXBlIGl0ZXJfMjU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNSA+IDo6dHlwZSBpdGVyXzI2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjYgPiA6OnR5cGUgaXRlcl8yNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI3ID4gOjp0eXBlIGl0ZXJfMjg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOCA+IDo6dHlwZSBpdGVyXzI5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjkgPiA6OnR5cGUgaXRlcl8zMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMwID4gOjp0eXBlIGl0ZXJfMzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMSA+IDo6dHlwZSBpdGVyXzMyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzIgPiA6OnR5cGUgaXRlcl8zMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMzID4gOjp0eXBlIGl0ZXJfMzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNCA+IDo6dHlwZSBpdGVyXzM1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzUgPiA6OnR5cGUgaXRlcl8zNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM2ID4gOjp0eXBlIGl0ZXJfMzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNyA+IDo6dHlwZSBpdGVyXzM4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzggPiA6OnR5cGUgaXRlcl8zOTsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzkpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM5ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDApCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDQxID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjAgPiA6OnR5cGUgaXRlcl8yMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIxID4gOjp0eXBlIGl0ZXJfMjI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMiA+IDo6dHlwZSBpdGVyXzIzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjMgPiA6OnR5cGUgaXRlcl8yNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI0ID4gOjp0eXBlIGl0ZXJfMjU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNSA+IDo6dHlwZSBpdGVyXzI2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjYgPiA6OnR5cGUgaXRlcl8yNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI3ID4gOjp0eXBlIGl0ZXJfMjg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOCA+IDo6dHlwZSBpdGVyXzI5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjkgPiA6OnR5cGUgaXRlcl8zMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMwID4gOjp0eXBlIGl0ZXJfMzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMSA+IDo6dHlwZSBpdGVyXzMyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzIgPiA6OnR5cGUgaXRlcl8zMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMzID4gOjp0eXBlIGl0ZXJfMzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNCA+IDo6dHlwZSBpdGVyXzM1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzUgPiA6OnR5cGUgaXRlcl8zNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM2ID4gOjp0eXBlIGl0ZXJfMzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNyA+IDo6dHlwZSBpdGVyXzM4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzggPiA6OnR5cGUgaXRlcl8zOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM5ID4gOjp0eXBlIGl0ZXJfNDA7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQwKSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQwID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci0jIHVuZGVmIE5ETkJPT1NUX0ZUX21ha2VfdHlwZQotIyB1bmRlZiBORE5CT09TVF9GVF9tYWtlX3R5cGVfaW1wbAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHk1MF8wLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemVfaW1wbC9hcml0eTUwXzAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMjliNmI1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemVfaW1wbC9hcml0eTUwXzAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTExNyArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbgotCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX3N5bnRheCAgICAgdHlwZSBtYWNybyB0byB1c2UKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY2MgICAgICAgICBlbXB0eSBvciBjYyBzcGVjaWZpZXIgCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2VsbCAgICAgICAgZW1wdHkgb3IgIi4uLiIKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY3YgICAgICAgICBlbXB0eSBvciBjdiBxdWFsaWZpZXJzCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2ZsYWdzICAgICAgc2luZ2xlIGRlY2ltYWwgaW50ZWdlciBlbmNvZGluZyB0aGUgZmxhZ3MKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfbiAgICAgICAgICBudW1iZXIgb2YgY29tcG9uZW50IHR5cGVzIChhcml0eSsxKQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9hcml0eSAgICAgIGN1cnJlbnQgYXJpdHkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHlwZSAgICAgICBtYWNybyB0aGF0IGV4cGFuZHMgdG8gdGhlIHR5cGUKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHBsYXJncyhwKSB0ZW1wbGF0ZSBhcmd1bWVudHMgd2l0aCBnaXZlbiBwcmVmaXgKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfcGFyYW1zKHApICBwYXJhbWV0ZXJzIHdpdGggZ2l2ZW4gcHJlZml4Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemVfaW1wbC9hcml0eTQwXzAuaHBwPgotIyBkZWZpbmUgTkROQk9PU1RfRlRfbWFrZV90eXBlKGZsYWdzLGNjLGFyaXR5KSBORE5CT09TVF9GVF9tYWtlX3R5cGVfaW1wbChmbGFncyxjYyxhcml0eSkKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX21ha2VfdHlwZV9pbXBsKGZsYWdzLGNjLGFyaXR5KSBtYWtlX3R5cGVfICMjIGZsYWdzICMjIF8gIyMgY2MgIyMgXyAjIyBhcml0eQotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQxKQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDQyID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjAgPiA6OnR5cGUgaXRlcl8yMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIxID4gOjp0eXBlIGl0ZXJfMjI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMiA+IDo6dHlwZSBpdGVyXzIzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjMgPiA6OnR5cGUgaXRlcl8yNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI0ID4gOjp0eXBlIGl0ZXJfMjU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNSA+IDo6dHlwZSBpdGVyXzI2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjYgPiA6OnR5cGUgaXRlcl8yNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI3ID4gOjp0eXBlIGl0ZXJfMjg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOCA+IDo6dHlwZSBpdGVyXzI5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjkgPiA6OnR5cGUgaXRlcl8zMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMwID4gOjp0eXBlIGl0ZXJfMzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMSA+IDo6dHlwZSBpdGVyXzMyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzIgPiA6OnR5cGUgaXRlcl8zMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMzID4gOjp0eXBlIGl0ZXJfMzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNCA+IDo6dHlwZSBpdGVyXzM1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzUgPiA6OnR5cGUgaXRlcl8zNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM2ID4gOjp0eXBlIGl0ZXJfMzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNyA+IDo6dHlwZSBpdGVyXzM4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzggPiA6OnR5cGUgaXRlcl8zOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM5ID4gOjp0eXBlIGl0ZXJfNDA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MCA+IDo6dHlwZSBpdGVyXzQxOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0MSkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQxID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ICwgdHlwZW5hbWUgVDQwICwgdHlwZW5hbWUgVDQxID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDIpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgNDMgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOSA+IDo6dHlwZSBpdGVyXzMwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzAgPiA6OnR5cGUgaXRlcl8zMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMxID4gOjp0eXBlIGl0ZXJfMzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMiA+IDo6dHlwZSBpdGVyXzMzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzMgPiA6OnR5cGUgaXRlcl8zNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM0ID4gOjp0eXBlIGl0ZXJfMzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNSA+IDo6dHlwZSBpdGVyXzM2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzYgPiA6OnR5cGUgaXRlcl8zNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM3ID4gOjp0eXBlIGl0ZXJfMzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOCA+IDo6dHlwZSBpdGVyXzM5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzkgPiA6OnR5cGUgaXRlcl80MDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQwID4gOjp0eXBlIGl0ZXJfNDE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MSA+IDo6dHlwZSBpdGVyXzQyOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0MikgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDIgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0MykKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCA0NCA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzQgPiA6OnR5cGUgaXRlcl8zNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM1ID4gOjp0eXBlIGl0ZXJfMzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNiA+IDo6dHlwZSBpdGVyXzM3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzcgPiA6OnR5cGUgaXRlcl8zODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM4ID4gOjp0eXBlIGl0ZXJfMzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOSA+IDo6dHlwZSBpdGVyXzQwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDAgPiA6OnR5cGUgaXRlcl80MTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQxID4gOjp0eXBlIGl0ZXJfNDI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MiA+IDo6dHlwZSBpdGVyXzQzOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0MykgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MyA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiAsIHR5cGVuYW1lIFQ0MyA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQ0KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDQ1ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjAgPiA6OnR5cGUgaXRlcl8yMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIxID4gOjp0eXBlIGl0ZXJfMjI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMiA+IDo6dHlwZSBpdGVyXzIzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjMgPiA6OnR5cGUgaXRlcl8yNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI0ID4gOjp0eXBlIGl0ZXJfMjU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNSA+IDo6dHlwZSBpdGVyXzI2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjYgPiA6OnR5cGUgaXRlcl8yNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI3ID4gOjp0eXBlIGl0ZXJfMjg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOCA+IDo6dHlwZSBpdGVyXzI5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjkgPiA6OnR5cGUgaXRlcl8zMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMwID4gOjp0eXBlIGl0ZXJfMzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMSA+IDo6dHlwZSBpdGVyXzMyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzIgPiA6OnR5cGUgaXRlcl8zMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMzID4gOjp0eXBlIGl0ZXJfMzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNCA+IDo6dHlwZSBpdGVyXzM1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzUgPiA6OnR5cGUgaXRlcl8zNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM2ID4gOjp0eXBlIGl0ZXJfMzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNyA+IDo6dHlwZSBpdGVyXzM4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzggPiA6OnR5cGUgaXRlcl8zOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM5ID4gOjp0eXBlIGl0ZXJfNDA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MCA+IDo6dHlwZSBpdGVyXzQxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDEgPiA6OnR5cGUgaXRlcl80MjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQyID4gOjp0eXBlIGl0ZXJfNDM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MyA+IDo6dHlwZSBpdGVyXzQ0OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0NCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ0ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ICwgdHlwZW5hbWUgVDQwICwgdHlwZW5hbWUgVDQxICwgdHlwZW5hbWUgVDQyICwgdHlwZW5hbWUgVDQzICwgdHlwZW5hbWUgVDQ0ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDUpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgNDYgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOSA+IDo6dHlwZSBpdGVyXzMwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzAgPiA6OnR5cGUgaXRlcl8zMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMxID4gOjp0eXBlIGl0ZXJfMzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMiA+IDo6dHlwZSBpdGVyXzMzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzMgPiA6OnR5cGUgaXRlcl8zNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM0ID4gOjp0eXBlIGl0ZXJfMzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNSA+IDo6dHlwZSBpdGVyXzM2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzYgPiA6OnR5cGUgaXRlcl8zNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM3ID4gOjp0eXBlIGl0ZXJfMzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOCA+IDo6dHlwZSBpdGVyXzM5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzkgPiA6OnR5cGUgaXRlcl80MDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQwID4gOjp0eXBlIGl0ZXJfNDE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MSA+IDo6dHlwZSBpdGVyXzQyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDIgPiA6OnR5cGUgaXRlcl80MzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQzID4gOjp0eXBlIGl0ZXJfNDQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80NCA+IDo6dHlwZSBpdGVyXzQ1OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0NSkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDUgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0NikKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCA0NyA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzQgPiA6OnR5cGUgaXRlcl8zNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM1ID4gOjp0eXBlIGl0ZXJfMzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNiA+IDo6dHlwZSBpdGVyXzM3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzcgPiA6OnR5cGUgaXRlcl8zODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM4ID4gOjp0eXBlIGl0ZXJfMzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOSA+IDo6dHlwZSBpdGVyXzQwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDAgPiA6OnR5cGUgaXRlcl80MTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQxID4gOjp0eXBlIGl0ZXJfNDI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MiA+IDo6dHlwZSBpdGVyXzQzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDMgPiA6OnR5cGUgaXRlcl80NDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQ0ID4gOjp0eXBlIGl0ZXJfNDU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80NSA+IDo6dHlwZSBpdGVyXzQ2OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0NikgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NiA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiAsIHR5cGVuYW1lIFQ0MyAsIHR5cGVuYW1lIFQ0NCAsIHR5cGVuYW1lIFQ0NSAsIHR5cGVuYW1lIFQ0NiA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQ3KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0ICwgVDQ1ICwgVDQ2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDQ4ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjAgPiA6OnR5cGUgaXRlcl8yMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIxID4gOjp0eXBlIGl0ZXJfMjI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMiA+IDo6dHlwZSBpdGVyXzIzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjMgPiA6OnR5cGUgaXRlcl8yNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI0ID4gOjp0eXBlIGl0ZXJfMjU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNSA+IDo6dHlwZSBpdGVyXzI2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjYgPiA6OnR5cGUgaXRlcl8yNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI3ID4gOjp0eXBlIGl0ZXJfMjg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOCA+IDo6dHlwZSBpdGVyXzI5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjkgPiA6OnR5cGUgaXRlcl8zMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMwID4gOjp0eXBlIGl0ZXJfMzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMSA+IDo6dHlwZSBpdGVyXzMyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzIgPiA6OnR5cGUgaXRlcl8zMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMzID4gOjp0eXBlIGl0ZXJfMzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNCA+IDo6dHlwZSBpdGVyXzM1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzUgPiA6OnR5cGUgaXRlcl8zNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM2ID4gOjp0eXBlIGl0ZXJfMzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNyA+IDo6dHlwZSBpdGVyXzM4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzggPiA6OnR5cGUgaXRlcl8zOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM5ID4gOjp0eXBlIGl0ZXJfNDA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MCA+IDo6dHlwZSBpdGVyXzQxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDEgPiA6OnR5cGUgaXRlcl80MjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQyID4gOjp0eXBlIGl0ZXJfNDM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MyA+IDo6dHlwZSBpdGVyXzQ0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDQgPiA6OnR5cGUgaXRlcl80NTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQ1ID4gOjp0eXBlIGl0ZXJfNDY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80NiA+IDo6dHlwZSBpdGVyXzQ3OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0NykgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ3ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ICwgdHlwZW5hbWUgVDQwICwgdHlwZW5hbWUgVDQxICwgdHlwZW5hbWUgVDQyICwgdHlwZW5hbWUgVDQzICwgdHlwZW5hbWUgVDQ0ICwgdHlwZW5hbWUgVDQ1ICwgdHlwZW5hbWUgVDQ2ICwgdHlwZW5hbWUgVDQ3ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDgpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgLCBUNDYgLCBUNDcgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgNDkgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOSA+IDo6dHlwZSBpdGVyXzMwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzAgPiA6OnR5cGUgaXRlcl8zMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMxID4gOjp0eXBlIGl0ZXJfMzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMiA+IDo6dHlwZSBpdGVyXzMzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzMgPiA6OnR5cGUgaXRlcl8zNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM0ID4gOjp0eXBlIGl0ZXJfMzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNSA+IDo6dHlwZSBpdGVyXzM2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzYgPiA6OnR5cGUgaXRlcl8zNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM3ID4gOjp0eXBlIGl0ZXJfMzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOCA+IDo6dHlwZSBpdGVyXzM5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzkgPiA6OnR5cGUgaXRlcl80MDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQwID4gOjp0eXBlIGl0ZXJfNDE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MSA+IDo6dHlwZSBpdGVyXzQyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDIgPiA6OnR5cGUgaXRlcl80MzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQzID4gOjp0eXBlIGl0ZXJfNDQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80NCA+IDo6dHlwZSBpdGVyXzQ1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDUgPiA6OnR5cGUgaXRlcl80NjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQ2ID4gOjp0eXBlIGl0ZXJfNDc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80NyA+IDo6dHlwZSBpdGVyXzQ4OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0OCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDggPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUgLCB0eXBlbmFtZSBUNDYgLCB0eXBlbmFtZSBUNDcgLCB0eXBlbmFtZSBUNDggPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0OSkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiAsIFQ0NyAsIFQ0OCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCA1MCA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzQgPiA6OnR5cGUgaXRlcl8zNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM1ID4gOjp0eXBlIGl0ZXJfMzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNiA+IDo6dHlwZSBpdGVyXzM3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzcgPiA6OnR5cGUgaXRlcl8zODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM4ID4gOjp0eXBlIGl0ZXJfMzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOSA+IDo6dHlwZSBpdGVyXzQwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDAgPiA6OnR5cGUgaXRlcl80MTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQxID4gOjp0eXBlIGl0ZXJfNDI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MiA+IDo6dHlwZSBpdGVyXzQzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDMgPiA6OnR5cGUgaXRlcl80NDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQ0ID4gOjp0eXBlIGl0ZXJfNDU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80NSA+IDo6dHlwZSBpdGVyXzQ2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDYgPiA6OnR5cGUgaXRlcl80NzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQ3ID4gOjp0eXBlIGl0ZXJfNDg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80OCA+IDo6dHlwZSBpdGVyXzQ5OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0OSkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80OSA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiAsIHR5cGVuYW1lIFQ0MyAsIHR5cGVuYW1lIFQ0NCAsIHR5cGVuYW1lIFQ0NSAsIHR5cGVuYW1lIFQ0NiAsIHR5cGVuYW1lIFQ0NyAsIHR5cGVuYW1lIFQ0OCAsIHR5cGVuYW1lIFQ0OSA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDUwKQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0ICwgVDQ1ICwgVDQ2ICwgVDQ3ICwgVDQ4ICwgVDQ5IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDUxID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjAgPiA6OnR5cGUgaXRlcl8yMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIxID4gOjp0eXBlIGl0ZXJfMjI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMiA+IDo6dHlwZSBpdGVyXzIzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjMgPiA6OnR5cGUgaXRlcl8yNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI0ID4gOjp0eXBlIGl0ZXJfMjU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNSA+IDo6dHlwZSBpdGVyXzI2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjYgPiA6OnR5cGUgaXRlcl8yNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI3ID4gOjp0eXBlIGl0ZXJfMjg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOCA+IDo6dHlwZSBpdGVyXzI5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjkgPiA6OnR5cGUgaXRlcl8zMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMwID4gOjp0eXBlIGl0ZXJfMzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMSA+IDo6dHlwZSBpdGVyXzMyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzIgPiA6OnR5cGUgaXRlcl8zMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMzID4gOjp0eXBlIGl0ZXJfMzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNCA+IDo6dHlwZSBpdGVyXzM1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzUgPiA6OnR5cGUgaXRlcl8zNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM2ID4gOjp0eXBlIGl0ZXJfMzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNyA+IDo6dHlwZSBpdGVyXzM4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzggPiA6OnR5cGUgaXRlcl8zOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM5ID4gOjp0eXBlIGl0ZXJfNDA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MCA+IDo6dHlwZSBpdGVyXzQxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDEgPiA6OnR5cGUgaXRlcl80MjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQyID4gOjp0eXBlIGl0ZXJfNDM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MyA+IDo6dHlwZSBpdGVyXzQ0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDQgPiA6OnR5cGUgaXRlcl80NTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQ1ID4gOjp0eXBlIGl0ZXJfNDY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80NiA+IDo6dHlwZSBpdGVyXzQ3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDcgPiA6OnR5cGUgaXRlcl80ODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQ4ID4gOjp0eXBlIGl0ZXJfNDk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80OSA+IDo6dHlwZSBpdGVyXzUwOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw1MCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80OSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUwID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci0jIHVuZGVmIE5ETkJPT1NUX0ZUX21ha2VfdHlwZQotIyB1bmRlZiBORE5CT09TVF9GVF9tYWtlX3R5cGVfaW1wbAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHk1MF8xLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemVfaW1wbC9hcml0eTUwXzEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNWU3M2QwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemVfaW1wbC9hcml0eTUwXzEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTEyNyArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbgotCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX3N5bnRheCAgICAgdHlwZSBtYWNybyB0byB1c2UKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY2MgICAgICAgICBlbXB0eSBvciBjYyBzcGVjaWZpZXIgCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2VsbCAgICAgICAgZW1wdHkgb3IgIi4uLiIKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY3YgICAgICAgICBlbXB0eSBvciBjdiBxdWFsaWZpZXJzCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2ZsYWdzICAgICAgc2luZ2xlIGRlY2ltYWwgaW50ZWdlciBlbmNvZGluZyB0aGUgZmxhZ3MKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfbiAgICAgICAgICBudW1iZXIgb2YgY29tcG9uZW50IHR5cGVzIChhcml0eSsxKQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9hcml0eSAgICAgIGN1cnJlbnQgYXJpdHkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHlwZSAgICAgICBtYWNybyB0aGF0IGV4cGFuZHMgdG8gdGhlIHR5cGUKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHBsYXJncyhwKSB0ZW1wbGF0ZSBhcmd1bWVudHMgd2l0aCBnaXZlbiBwcmVmaXgKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfcGFyYW1zKHApICBwYXJhbWV0ZXJzIHdpdGggZ2l2ZW4gcHJlZml4Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemVfaW1wbC9hcml0eTQwXzEuaHBwPgotIyBkZWZpbmUgTkROQk9PU1RfRlRfbWFrZV90eXBlKGZsYWdzLGNjLGFyaXR5KSBORE5CT09TVF9GVF9tYWtlX3R5cGVfaW1wbChmbGFncyxjYyxhcml0eSkKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX21ha2VfdHlwZV9pbXBsKGZsYWdzLGNjLGFyaXR5KSBtYWtlX3R5cGVfICMjIGZsYWdzICMjIF8gIyMgY2MgIyMgXyAjIyBhcml0eQotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQxKQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCA0MiA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzQgPiA6OnR5cGUgaXRlcl8zNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM1ID4gOjp0eXBlIGl0ZXJfMzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNiA+IDo6dHlwZSBpdGVyXzM3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzcgPiA6OnR5cGUgaXRlcl8zODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM4ID4gOjp0eXBlIGl0ZXJfMzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOSA+IDo6dHlwZSBpdGVyXzQwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDAgPiA6OnR5cGUgaXRlcl80MTsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDEpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MSA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQyKQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCA0MyA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzQgPiA6OnR5cGUgaXRlcl8zNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM1ID4gOjp0eXBlIGl0ZXJfMzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNiA+IDo6dHlwZSBpdGVyXzM3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzcgPiA6OnR5cGUgaXRlcl8zODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM4ID4gOjp0eXBlIGl0ZXJfMzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOSA+IDo6dHlwZSBpdGVyXzQwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDAgPiA6OnR5cGUgaXRlcl80MTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQxID4gOjp0eXBlIGl0ZXJfNDI7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQyKSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MiA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQzKQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCA0NCA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzQgPiA6OnR5cGUgaXRlcl8zNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM1ID4gOjp0eXBlIGl0ZXJfMzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNiA+IDo6dHlwZSBpdGVyXzM3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzcgPiA6OnR5cGUgaXRlcl8zODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM4ID4gOjp0eXBlIGl0ZXJfMzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOSA+IDo6dHlwZSBpdGVyXzQwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDAgPiA6OnR5cGUgaXRlcl80MTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQxID4gOjp0eXBlIGl0ZXJfNDI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MiA+IDo6dHlwZSBpdGVyXzQzOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0MykgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MyA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiAsIHR5cGVuYW1lIFQ0MyA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQ0KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCA0NSA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzQgPiA6OnR5cGUgaXRlcl8zNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM1ID4gOjp0eXBlIGl0ZXJfMzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNiA+IDo6dHlwZSBpdGVyXzM3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzcgPiA6OnR5cGUgaXRlcl8zODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM4ID4gOjp0eXBlIGl0ZXJfMzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOSA+IDo6dHlwZSBpdGVyXzQwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDAgPiA6OnR5cGUgaXRlcl80MTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQxID4gOjp0eXBlIGl0ZXJfNDI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MiA+IDo6dHlwZSBpdGVyXzQzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDMgPiA6OnR5cGUgaXRlcl80NDsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDQpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NCA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiAsIHR5cGVuYW1lIFQ0MyAsIHR5cGVuYW1lIFQ0NCA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQ1KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCA0NiA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzQgPiA6OnR5cGUgaXRlcl8zNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM1ID4gOjp0eXBlIGl0ZXJfMzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNiA+IDo6dHlwZSBpdGVyXzM3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzcgPiA6OnR5cGUgaXRlcl8zODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM4ID4gOjp0eXBlIGl0ZXJfMzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOSA+IDo6dHlwZSBpdGVyXzQwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDAgPiA6OnR5cGUgaXRlcl80MTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQxID4gOjp0eXBlIGl0ZXJfNDI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MiA+IDo6dHlwZSBpdGVyXzQzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDMgPiA6OnR5cGUgaXRlcl80NDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQ0ID4gOjp0eXBlIGl0ZXJfNDU7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQ1KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NSA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiAsIHR5cGVuYW1lIFQ0MyAsIHR5cGVuYW1lIFQ0NCAsIHR5cGVuYW1lIFQ0NSA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQ2KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCA0NyA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzQgPiA6OnR5cGUgaXRlcl8zNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM1ID4gOjp0eXBlIGl0ZXJfMzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNiA+IDo6dHlwZSBpdGVyXzM3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzcgPiA6OnR5cGUgaXRlcl8zODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM4ID4gOjp0eXBlIGl0ZXJfMzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOSA+IDo6dHlwZSBpdGVyXzQwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDAgPiA6OnR5cGUgaXRlcl80MTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQxID4gOjp0eXBlIGl0ZXJfNDI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MiA+IDo6dHlwZSBpdGVyXzQzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDMgPiA6OnR5cGUgaXRlcl80NDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQ0ID4gOjp0eXBlIGl0ZXJfNDU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80NSA+IDo6dHlwZSBpdGVyXzQ2OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0NikgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NiA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiAsIHR5cGVuYW1lIFQ0MyAsIHR5cGVuYW1lIFQ0NCAsIHR5cGVuYW1lIFQ0NSAsIHR5cGVuYW1lIFQ0NiA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQ3KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCA0OCA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzQgPiA6OnR5cGUgaXRlcl8zNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM1ID4gOjp0eXBlIGl0ZXJfMzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNiA+IDo6dHlwZSBpdGVyXzM3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzcgPiA6OnR5cGUgaXRlcl8zODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM4ID4gOjp0eXBlIGl0ZXJfMzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOSA+IDo6dHlwZSBpdGVyXzQwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDAgPiA6OnR5cGUgaXRlcl80MTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQxID4gOjp0eXBlIGl0ZXJfNDI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MiA+IDo6dHlwZSBpdGVyXzQzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDMgPiA6OnR5cGUgaXRlcl80NDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQ0ID4gOjp0eXBlIGl0ZXJfNDU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80NSA+IDo6dHlwZSBpdGVyXzQ2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDYgPiA6OnR5cGUgaXRlcl80NzsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDcpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NyA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiAsIHR5cGVuYW1lIFQ0MyAsIHR5cGVuYW1lIFQ0NCAsIHR5cGVuYW1lIFQ0NSAsIHR5cGVuYW1lIFQ0NiAsIHR5cGVuYW1lIFQ0NyA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQ4KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiAsIFQ0NyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCA0OSA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzQgPiA6OnR5cGUgaXRlcl8zNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM1ID4gOjp0eXBlIGl0ZXJfMzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNiA+IDo6dHlwZSBpdGVyXzM3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzcgPiA6OnR5cGUgaXRlcl8zODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM4ID4gOjp0eXBlIGl0ZXJfMzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOSA+IDo6dHlwZSBpdGVyXzQwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDAgPiA6OnR5cGUgaXRlcl80MTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQxID4gOjp0eXBlIGl0ZXJfNDI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MiA+IDo6dHlwZSBpdGVyXzQzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDMgPiA6OnR5cGUgaXRlcl80NDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQ0ID4gOjp0eXBlIGl0ZXJfNDU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80NSA+IDo6dHlwZSBpdGVyXzQ2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDYgPiA6OnR5cGUgaXRlcl80NzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQ3ID4gOjp0eXBlIGl0ZXJfNDg7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQ4KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80OCA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiAsIHR5cGVuYW1lIFQ0MyAsIHR5cGVuYW1lIFQ0NCAsIHR5cGVuYW1lIFQ0NSAsIHR5cGVuYW1lIFQ0NiAsIHR5cGVuYW1lIFQ0NyAsIHR5cGVuYW1lIFQ0OCA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQ5KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiAsIFQ0NyAsIFQ0OCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCA1MCA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzQgPiA6OnR5cGUgaXRlcl8zNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM1ID4gOjp0eXBlIGl0ZXJfMzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNiA+IDo6dHlwZSBpdGVyXzM3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzcgPiA6OnR5cGUgaXRlcl8zODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM4ID4gOjp0eXBlIGl0ZXJfMzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOSA+IDo6dHlwZSBpdGVyXzQwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDAgPiA6OnR5cGUgaXRlcl80MTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQxID4gOjp0eXBlIGl0ZXJfNDI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MiA+IDo6dHlwZSBpdGVyXzQzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDMgPiA6OnR5cGUgaXRlcl80NDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQ0ID4gOjp0eXBlIGl0ZXJfNDU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80NSA+IDo6dHlwZSBpdGVyXzQ2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDYgPiA6OnR5cGUgaXRlcl80NzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQ3ID4gOjp0eXBlIGl0ZXJfNDg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80OCA+IDo6dHlwZSBpdGVyXzQ5OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0OSkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80OSA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiAsIHR5cGVuYW1lIFQ0MyAsIHR5cGVuYW1lIFQ0NCAsIHR5cGVuYW1lIFQ0NSAsIHR5cGVuYW1lIFQ0NiAsIHR5cGVuYW1lIFQ0NyAsIHR5cGVuYW1lIFQ0OCAsIHR5cGVuYW1lIFQ0OSA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDUwKQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiAsIFQ0NyAsIFQ0OCAsIFQ0OSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCA1MSA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzQgPiA6OnR5cGUgaXRlcl8zNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM1ID4gOjp0eXBlIGl0ZXJfMzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNiA+IDo6dHlwZSBpdGVyXzM3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzcgPiA6OnR5cGUgaXRlcl8zODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM4ID4gOjp0eXBlIGl0ZXJfMzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOSA+IDo6dHlwZSBpdGVyXzQwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDAgPiA6OnR5cGUgaXRlcl80MTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQxID4gOjp0eXBlIGl0ZXJfNDI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MiA+IDo6dHlwZSBpdGVyXzQzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDMgPiA6OnR5cGUgaXRlcl80NDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQ0ID4gOjp0eXBlIGl0ZXJfNDU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80NSA+IDo6dHlwZSBpdGVyXzQ2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDYgPiA6OnR5cGUgaXRlcl80NzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQ3ID4gOjp0eXBlIGl0ZXJfNDg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80OCA+IDo6dHlwZSBpdGVyXzQ5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDkgPiA6OnR5cGUgaXRlcl81MDsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNTApIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81MCA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotIyB1bmRlZiBORE5CT09TVF9GVF9tYWtlX3R5cGUKLSMgdW5kZWYgTkROQk9PU1RfRlRfbWFrZV90eXBlX2ltcGwKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsL21hc3Rlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvbWFzdGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDA4YjljYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvbWFzdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gbm8gaW5jbHVkZSBndWFyZHMsIHRoaXMgZmlsZSBpcyBpbnRlbmRlZCBmb3IgbXVsdGlwbGUgaW5jbHVzaW9uCi0KLSNpZiAgIE5ETkJPT1NUX0ZUX0FSSVRZX0xPT1BfUFJFRklYCi0KLSMgICBpZm5kZWYgTkROQk9PU1RfRlRfREVUQUlMX1NZTlRIRVNJWkVfSU1QTF9NQVNURVJfSFBQX0lOQ0xVREVECi0jICAgZGVmaW5lIE5ETkJPT1NUX0ZUX0RFVEFJTF9TWU5USEVTSVpFX0lNUExfTUFTVEVSX0hQUF9JTkNMVURFRAotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9kZWMuaHBwPgotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9sb2NhbC5ocHA+Ci0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9lbXB0eS5ocHA+Ci0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9pZGVudGl0eS5ocHA+Ci0jICAgZW5kaWYKLQotIyAgIGRlZmluZSBORE5CT09TVF9GVF90eXBlX25hbWUgdHlwZQotCi0jICAgaWZkZWYgTkROQk9PU1RfRlRfZmxhZ3MKLSMgICAgIGRlZmluZSBORE5CT09TVF9GVF9tYWtlX3R5cGUoZmxhZ3MsY2MsYXJpdHkpIE5ETkJPT1NUX0ZUX21ha2VfdHlwZV9pbXBsKGZsYWdzLGNjLGFyaXR5KQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0ZUX21ha2VfdHlwZV9pbXBsKGZsYWdzLGNjLGFyaXR5KSBtYWtlX3R5cGVfICMjIGZsYWdzICMjIF8gIyMgY2MgIyMgXyAjIyBhcml0eQotIyAgIGVsc2UKLU5ETkJPT1NUX1BQX0VYUEFORCgjKSBkZWZpbmUgTkROQk9PU1RfRlRfbWFrZV90eXBlKGZsYWdzLGNjLGFyaXR5KSBORE5CT09TVF9GVF9tYWtlX3R5cGVfaW1wbChmbGFncyxjYyxhcml0eSkKLU5ETkJPT1NUX1BQX0VYUEFORCgjKSBkZWZpbmUgTkROQk9PU1RfRlRfbWFrZV90eXBlX2ltcGwoZmxhZ3MsY2MsYXJpdHkpIG1ha2VfdHlwZV8gIyMgZmxhZ3MgIyMgXyAjIyBjYyAjIyBfICMjIGFyaXR5Ci0jICAgZW5kaWYKLQotIyAgIGRlZmluZSBORE5CT09TVF9GVF9pdGVyKGkpIE5ETkJPT1NUX1BQX0NBVChpdGVyXyxpKQotCi0jZWxpZiBORE5CT09TVF9GVF9BUklUWV9MT09QX0lTX0lURVJBVElORwotCi10ZW1wbGF0ZTwgTkROQk9PU1RfRlRfdHBsYXJncyhORE5CT09TVF9QUF9JREVOVElUWSh0eXBlbmFtZSkpID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsTkROQk9PU1RfRlRfYXJpdHkpCi17Ci0gIHR5cGVkZWYgTkROQk9PU1RfRlRfdHlwZSA7Ci19OwotCi10ZW1wbGF0ZTw+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIE5ETkJPT1NUX0ZUX24gPiAKLXsgCi0gIHRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotICB7Ci0gIHByaXZhdGU6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+Ojp0eXBlIE5ETkJPT1NUX0ZUX2l0ZXIoMCk7Ci0jICAgaWYgTkROQk9PU1RfRlRfbiA+IDEKLSMgICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyhpKSB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgXAotICAgICAgICAgIE5ETkJPT1NUX0ZUX2l0ZXIoTkROQk9PU1RfUFBfREVDKGkpKSA+Ojp0eXBlIE5ETkJPT1NUX0ZUX2l0ZXIoaSk7Ci0jICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfTElNSVRTICgxLE5ETkJPT1NUX0ZUX24tMSkKLSMgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfTE9DQUxfSVRFUkFURSgpCi0jICAgZW5kaWYKLSAgcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsTkROQk9PU1RfRlRfYXJpdHkpIAotICAgIDwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgTkROQk9PU1RfRlRfaXRlcigwKSA+Ojp0eXBlIAotIyAgIGlmIE5ETkJPT1NUX0ZUX21mcAotICAgICwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotICAgICAgICAgIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IE5ETkJPT1NUX0ZUX2l0ZXIoMSkgPjo6dHlwZSA+Ojp0eXBlCi0jICAgZW5kaWYKLSMgICBpZiBORE5CT09TVF9GVF9uID4gKE5ETkJPT1NUX0ZUX21mcCsxKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0xJTUlUUyAoTkROQk9PU1RfRlRfbWZwKzEsTkROQk9PU1RfRlRfbi0xKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKGkpIFwKLSAgICAgICAgLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBORE5CT09TVF9GVF9pdGVyKGkpID46OnR5cGUKLSMgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfTE9DQUxfSVRFUkFURSgpCi0jICAgZW5kaWYKLSAgICA+Ojp0eXBlIHR5cGU7Ci0gIH07Ci19OwotCi0jZWxpZiBORE5CT09TVF9GVF9BUklUWV9MT09QX1NVRkZJWAotCi0jICAgaWZkZWYgTkROQk9PU1RfRlRfZmxhZ3MKLSMgICAgIHVuZGVmIE5ETkJPT1NUX0ZUX21ha2VfdHlwZQotIyAgICAgdW5kZWYgTkROQk9PU1RfRlRfbWFrZV90eXBlX2ltcGwKLSMgICBlbHNlCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgdW5kZWYgTkROQk9PU1RfRlRfbWFrZV90eXBlCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgdW5kZWYgTkROQk9PU1RfRlRfbWFrZV90eXBlX2ltcGwKLSMgICBlbmRpZgotIyAgIHVuZGVmIE5ETkJPT1NUX0ZUX2l0ZXIKLSMgICB1bmRlZiBORE5CT09TVF9GVF90eXBlX25hbWUKLQotI2Vsc2UKLSMgICBlcnJvciAiYXR0ZW1wdCB0byB1c2UgYXJpdHkgbG9vcCBtYXN0ZXIgZmlsZSB3aXRob3V0IGxvb3AiCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvdG9fc2VxdWVuY2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvdG9fc2VxdWVuY2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjU3ZWQ0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3RvX3NlcXVlbmNlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBORE5CT09TVF9GVF9ERVRBSUxfVE9fU0VRVUVOQ0VfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0ZUX0RFVEFJTF9UT19TRVFVRU5DRV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ldmFsX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWRlbnRpdHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pc19zZXF1ZW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3BsYWNlaG9sZGVycy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3JlZmVyZW5jZS5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9pc19jYWxsYWJsZV9idWlsdGluLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGZ1bmN0aW9uX3R5cGVzIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vIHdyYXAgZmlyc3QgYXJndW1lbnRzIGluIGNvbXBvbmVudHMsIGlmIGNhbGxhYmxlIGJ1aWx0aW4gdHlwZQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCB0b19zZXF1ZW5jZQotewotICB0eXBlZGVmIHR5cGVuYW1lCi0gICBtcGw6OmV2YWxfaWYKLSAgIDwgaXNfY2FsbGFibGVfYnVpbHRpbjxUPgotICAgLCB0b19zZXF1ZW5jZTwgY29tcG9uZW50czxUPiA+Ci0gICAsIG1wbDo6aWRlbnRpdHk8IFQgPgotICAgPjo6dHlwZQotICB0eXBlOwotfTsKLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0vLyByZWR1Y2UgdGVtcGxhdGUgaW5zdGFudGlhdGlvbnMsIGlmIHBvc3NpYmxlCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotc3RydWN0IHRvX3NlcXVlbmNlPCBjb21wb25lbnRzPFQsVT4gPiAKLXsKLSAgdHlwZWRlZiB0eXBlbmFtZSBjb21wb25lbnRzPFQsVT46OnR5cGVzIHR5cGU7Ci19OwotI2VuZGlmCi0KLX0gfSB9IC8vIG5hbWVzcGFjZSA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2Z1bmN0aW9uX3R5cGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9mdW5jdGlvbl90eXBlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzc0NjIxNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2Z1bmN0aW9uX3R5cGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX0ZUX0ZVTkNUSU9OX1RZUEVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0ZUX0ZVTkNUSU9OX1RZUEVfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3RvX3NlcXVlbmNlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IAoteyAKLSAgbmFtZXNwYWNlIGZ1bmN0aW9uX3R5cGVzIAotICB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVHlwZXMsIHR5cGVuYW1lIFRhZyA9IG51bGxfdGFnPiBzdHJ1Y3QgZnVuY3Rpb25fdHlwZQotICAgICAgOiBkZXRhaWw6OnN5bnRoZXNpemVfZnVuYzx0eXBlbmFtZSBkZXRhaWw6OnRvX3NlcXVlbmNlPFR5cGVzPjo6dHlwZSwgVGFnPgotICAgIHsKLSAgICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMixmdW5jdGlvbl90eXBlLChUeXBlcyxUYWcpKQotICAgIH07Ci0gIH0KLSAgTkROQk9PU1RfVFRfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMixmdW5jdGlvbl90eXBlczo6ZnVuY3Rpb25fdHlwZSkKLX0KLQotI2VuZGlmCi0gCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2lzX2NhbGxhYmxlX2J1aWx0aW4uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9pc19jYWxsYWJsZV9idWlsdGluLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTJiMjI0Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2lzX2NhbGxhYmxlX2J1aWx0aW4uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX0ZUX0lTX0NBTExBQkxFX0JVSUxUSU5fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0ZUX0lTX0NBTExBQkxFX0JVSUxUSU5fSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3RlbXBsYXRlX2FyaXR5X3NwZWMuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvY29tcG9uZW50cy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCAKLXsgCi0gIG5hbWVzcGFjZSBmdW5jdGlvbl90eXBlcyAKLSAgewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBUYWcgPSBudWxsX3RhZyA+IAotICAgIHN0cnVjdCBpc19jYWxsYWJsZV9idWlsdGluCi0gICAgICA6IGZ1bmN0aW9uX3R5cGVzOjpyZXByZXNlbnRzCi0gICAgICAgIDwgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8VD4KLSAgICAgICAgLCBmdW5jdGlvbl90eXBlczo6dGFnPFRhZywgZGV0YWlsOjpjYWxsYWJsZV9idWlsdGluX3RhZz4gCi0gICAgICAgID4KLSAgICB7IAotICAgICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLGlzX2NhbGxhYmxlX2J1aWx0aW4sKFQsVGFnKSkKLSAgICB9OwotICB9Ci0gIE5ETkJPT1NUX1RUX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDIsZnVuY3Rpb25fdHlwZXM6OmlzX2NhbGxhYmxlX2J1aWx0aW4pCi19Ci0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2lzX2Z1bmN0aW9uLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvaXNfZnVuY3Rpb24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTc2MjE1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvaXNfZnVuY3Rpb24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBORE5CT09TVF9GVF9JU19GVU5DVElPTl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfRlRfSVNfRlVOQ1RJT05fSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3RlbXBsYXRlX2FyaXR5X3NwZWMuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvY29tcG9uZW50cy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCAKLXsgCi0gIG5hbWVzcGFjZSBmdW5jdGlvbl90eXBlcyAKLSAgewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBUYWcgPSBudWxsX3RhZyA+IAotICAgIHN0cnVjdCBpc19mdW5jdGlvbgotICAgICAgOiBmdW5jdGlvbl90eXBlczo6cmVwcmVzZW50cwotICAgICAgICA8IGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPFQ+Ci0gICAgICAgICwgZnVuY3Rpb25fdHlwZXM6OnRhZzxUYWcgLGRldGFpbDo6ZnVuY3Rpb25fdGFnPiAKLSAgICAgICAgPgotICAgIHsgCi0gICAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsaXNfZnVuY3Rpb24sKFQsVGFnKSkKLSAgICB9OwotICB9Ci0gIE5ETkJPT1NUX1RUX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDIsZnVuY3Rpb25fdHlwZXM6OmlzX2Z1bmN0aW9uKQotfSAKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvaXNfZnVuY3Rpb25fcG9pbnRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2lzX2Z1bmN0aW9uX3BvaW50ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZGZmNTBjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvaXNfZnVuY3Rpb25fcG9pbnRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZm5kZWYgTkROQk9PU1RfRlRfSVNfRlVOQ1RJT05fUE9JTlRFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfRlRfSVNfRlVOQ1RJT05fUE9JTlRFUl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdGVtcGxhdGVfYXJpdHlfc3BlYy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9jb21wb25lbnRzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IAoteyAKLSAgbmFtZXNwYWNlIGZ1bmN0aW9uX3R5cGVzIAotICB7Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRhZyA9IG51bGxfdGFnID4gCi0gICAgc3RydWN0IGlzX2Z1bmN0aW9uX3BvaW50ZXIKLSAgICAgIDogZnVuY3Rpb25fdHlwZXM6OnJlcHJlc2VudHMKLSAgICAgICAgPCBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxUPgotICAgICAgICAsIGZ1bmN0aW9uX3R5cGVzOjp0YWc8VGFnICxkZXRhaWw6OnBvaW50ZXJfdGFnPiAKLSAgICAgICAgPgotICAgIHsgCi0gICAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsaXNfZnVuY3Rpb25fcG9pbnRlciwoVCxUYWcpKQotICAgIH07Ci0gIH0KLSAgTkROQk9PU1RfVFRfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMixmdW5jdGlvbl90eXBlczo6aXNfZnVuY3Rpb25fcG9pbnRlcikKLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2lzX2Z1bmN0aW9uX3JlZmVyZW5jZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2lzX2Z1bmN0aW9uX3JlZmVyZW5jZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczNTAyODMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9pc19mdW5jdGlvbl9yZWZlcmVuY2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX0ZUX0lTX0ZVTkNUSU9OX1JFRkVSRU5DRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfRlRfSVNfRlVOQ1RJT05fUkVGRVJFTkNFX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90ZW1wbGF0ZV9hcml0eV9zcGVjLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2NvbXBvbmVudHMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgCi17IAotICBuYW1lc3BhY2UgZnVuY3Rpb25fdHlwZXMgCi0gIHsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVGFnID0gbnVsbF90YWcgPiAKLSAgICBzdHJ1Y3QgaXNfZnVuY3Rpb25fcmVmZXJlbmNlCi0gICAgICA6IGZ1bmN0aW9uX3R5cGVzOjpyZXByZXNlbnRzCi0gICAgICAgIDwgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8VD4KLSAgICAgICAgLCBmdW5jdGlvbl90eXBlczo6dGFnPFRhZyAsZGV0YWlsOjpyZWZlcmVuY2VfdGFnPiA+Ci0gICAgeyAKLSAgICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMixpc19mdW5jdGlvbl9yZWZlcmVuY2UsKFQsVGFnKSkKLSAgICB9OwotICB9Ci0gIE5ETkJPT1NUX1RUX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDIsZnVuY3Rpb25fdHlwZXM6OmlzX2Z1bmN0aW9uX3JlZmVyZW5jZSkKLX0gCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL3BhcmFtZXRlcl90eXBlcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL3BhcmFtZXRlcl90eXBlcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2MDRjZTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9wYXJhbWV0ZXJfdHlwZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX0ZUX1BBUkFNRVRFUl9UWVBFU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfRlRfUEFSQU1FVEVSX1RZUEVTX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYmxhbmsuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3RlbXBsYXRlX2FyaXR5X3NwZWMuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3BvcF9mcm9udC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9pc19jYWxsYWJsZV9idWlsdGluLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9jb21wb25lbnRzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IAoteyAKLSAgbmFtZXNwYWNlIGZ1bmN0aW9uX3R5cGVzIAotICB7Ci0gICAgdXNpbmcgbXBsOjpwbGFjZWhvbGRlcnM6Ol87Ci0gCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIENsYXNzVHlwZVRyYW5zZm9ybSA9IGFkZF9yZWZlcmVuY2U8Xz4gPgotICAgIHN0cnVjdCBwYXJhbWV0ZXJfdHlwZXM7Ci0KLSAgICBuYW1lc3BhY2UgZGV0YWlsCi0gICAgewotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQ2xhc3NUeXBlVHJhbnNmb3JtPiAKLSAgICAgIHN0cnVjdCBwYXJhbWV0ZXJfdHlwZXNfaW1wbAotICAgICAgICA6IG1wbDo6cG9wX2Zyb250Ci0gICAgICAgICAgPCB0eXBlbmFtZSBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxULENsYXNzVHlwZVRyYW5zZm9ybT46OnR5cGVzIAotICAgICAgICAgID46OnR5cGUKLSAgICAgIHsgfTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDbGFzc1R5cGVUcmFuc2Zvcm0+IHN0cnVjdCBwYXJhbWV0ZXJfdHlwZXMKLSAgICAgIDogbXBsOjppZl8KLSAgICAgICAgPCBmdW5jdGlvbl90eXBlczo6aXNfY2FsbGFibGVfYnVpbHRpbjxUPgotICAgICAgICAsIGRldGFpbDo6cGFyYW1ldGVyX3R5cGVzX2ltcGw8VCxDbGFzc1R5cGVUcmFuc2Zvcm0+LCBuZG5ib29zdDo6YmxhbmsKLSAgICAgICAgPjo6dHlwZQotICAgIHsKLSAgICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMixwYXJhbWV0ZXJfdHlwZXMsKFQsQ2xhc3NUeXBlVHJhbnNmb3JtKSkgCi0gICAgfTsKLSAgfQotICBORE5CT09TVF9UVF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygyLGZ1bmN0aW9uX3R5cGVzOjpwYXJhbWV0ZXJfdHlwZXMpCi19Ci0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL3Byb3BlcnR5X3RhZ3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9wcm9wZXJ0eV90YWdzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjY2MmZjYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL3Byb3BlcnR5X3RhZ3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ5ICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBORE5CT09TVF9GVF9ERVRBSUxfVEFHU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfRlRfREVUQUlMX1RBR1NfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxjc3RkZGVmPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaW50ZWdyYWxfY29uc3RhbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9iaXR4b3IuaHBwPgotCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBmdW5jdGlvbl90eXBlcyB7IAotCi1uYW1lc3BhY2UgZGV0YWlsIAotewotICB0eXBlZGVmIGxvbmcgYml0c190OwotCi0gIHRlbXBsYXRlPGJpdHNfdCBWYWx1ZT4gc3RydWN0IGNvbnN0YW50IAotICAgIDogbmRuYm9vc3Q6OmludGVncmFsX2NvbnN0YW50PGJpdHNfdCxWYWx1ZT4gCi0gIHsgfTsKLQotICB0ZW1wbGF0ZTxiaXRzX3QgQml0cywgYml0c190IE1hc2s+IHN0cnVjdCBwcm9wZXJ0eV90YWcgCi0gIHsKLSAgICB0eXBlZGVmIGNvbnN0YW50PEJpdHM+IGJpdHM7Ci0gICAgdHlwZWRlZiBjb25zdGFudDxNYXNrPiBtYXNrOwotICB9OwotCi0gIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBiaXRzIDogVDo6Yml0cyB7IH07Ci0gIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBtYXNrIDogVDo6bWFzayB7IH07Ci0KLSAgLy8gZm9yd2FyZCBkZWNsYXJhdGlvbiwgZGVmaW5lZCBpbiBwcF90YWdzCi0gIHRlbXBsYXRlPGJpdHNfdCBCaXRzLCBiaXRzX3QgQ0NJRD4gc3RydWN0IGVuY29kZV9iaXRzX2ltcGw7IAotCi0gIC8vIGZvcndhcmQgZGVjbGFyYXRpb24sIGRlZmluZWQgaW4gcHBfdGFncwotICB0ZW1wbGF0ZTxiaXRzX3QgTEhTX2JpdHMsIGJpdHNfdCBMSFNfbWFzaywgCi0gICAgICAgICAgIGJpdHNfdCBSSFNfYml0cywgYml0c190IFJIU19tYXNrPiAKLSAgc3RydWN0IHRhZ19pY2U7Ci0gCi0gIC8vIGZvcndhcmQgZGVjbGFyYXRpb24sIGRlZmluZWQgaW4gcmV0YWdfZGVmYXVsdF9jYyAKLSAgdGVtcGxhdGU8Y2xhc3MgVGFnLCBjbGFzcyBSZWdUYWcgPSBUYWc+IHN0cnVjdCByZXRhZ19kZWZhdWx0X2NjOyAKLSAKLSAgdGVtcGxhdGU8Yml0c190IEJpdHMsIGJpdHNfdCBDQ0lEPiBzdHJ1Y3QgZW5jb2RlX2JpdHMKLSAgICA6IGNvbnN0YW50PCAKLSAgICAgICAgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6ZW5jb2RlX2JpdHNfaW1wbDxCaXRzLENDSUQ+Ojp2YWx1ZSAKLSAgICAgID4KLSAgeyB9OwotCi0gIHRlbXBsYXRlPGNsYXNzIExIUywgY2xhc3MgUkhTPiBzdHJ1Y3QgY29tcG91bmRfdGFnCi0gIHsKLSAgICB0eXBlZGVmIGNvbnN0YW50PAotICAgICAgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6dGFnX2ljZQotICAgICAgICA8IDo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OmJpdHM8TEhTPjo6dmFsdWUKLSAgICAgICAgLCA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjptYXNrPExIUz46OnZhbHVlCi0gICAgICAgICwgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6Yml0czxSSFM+Ojp2YWx1ZQotICAgICAgICAsIDo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6Om1hc2s8UkhTPjo6dmFsdWUKLSAgICAgICAgPjo6Y29tYmluZWRfYml0cyAKLSAgICA+IGJpdHM7Ci0KLSAgICB0eXBlZGVmIGNvbnN0YW50PCAKLSAgICAgIDo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OnRhZ19pY2UKLSAgICAgICAgPCA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpiaXRzPExIUz46OnZhbHVlCi0gICAgICAgICwgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6bWFzazxMSFM+Ojp2YWx1ZQotICAgICAgICAsIDo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OmJpdHM8UkhTPjo6dmFsdWUKLSAgICAgICAgLCA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjptYXNrPFJIUz46OnZhbHVlCi0gICAgICAgID46OmNvbWJpbmVkX21hc2sgCi0gICAgPiBtYXNrOyAKLSAgfTsKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgQmFzZSwgY2xhc3MgUHJvcE9sZCwgY2xhc3MgUHJvcE5ldz4KLSAgc3RydWN0IGNoYW5nZWRfdGFnCi0gICAgOiBCYXNlCi0gIHsKLSAgICB0eXBlZGVmIG1wbDo6Yml0eG9yXwotICAgICAgICA8dHlwZW5hbWUgQmFzZTo6Yml0cywgdHlwZW5hbWUgUHJvcE9sZDo6Yml0cywgdHlwZW5hbWUgUHJvcE5ldzo6Yml0cz4KLSAgICBiaXRzOwotICB9OwotCi0gIHRlbXBsYXRlPGNsYXNzIFRhZywgY2xhc3MgUXVlcnlUYWc+IHN0cnVjdCByZXByZXNlbnRzX2ltcGwKLSAgICA6IG5kbmJvb3N0OjppbnRlZ3JhbF9jb25zdGFudDxib29sLAotICAgICAgICA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjp0YWdfaWNlCi0gICAgICAgICAgPCA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpiaXRzPFRhZz46OnZhbHVlCi0gICAgICAgICAgLCA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjptYXNrPFRhZz46OnZhbHVlCi0gICAgICAgICAgLCA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpiaXRzPFF1ZXJ5VGFnPjo6dmFsdWUKLSAgICAgICAgICAsIDo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6Om1hc2s8UXVlcnlUYWc+Ojp2YWx1ZQotICAgICAgICAgID46Om1hdGNoCi0gICAgICA+Ci0gIHsgfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLXR5cGVkZWYgZGV0YWlsOjpwcm9wZXJ0eV90YWc8MCwwPiBudWxsX3RhZzsKLQotdGVtcGxhdGU8Y2xhc3MgVGFnMSwgY2xhc3MgVGFnMiwgY2xhc3MgVGFnMyA9IG51bGxfdGFnLCBjbGFzcyBUYWc0ID0gbnVsbF90YWc+Ci1zdHJ1Y3QgdGFnCi0gIDogZGV0YWlsOjpjb21wb3VuZF90YWc8IGRldGFpbDo6Y29tcG91bmRfdGFnPFRhZzEsVGFnMj4sIAotICAgICAgICBkZXRhaWw6OmNvbXBvdW5kX3RhZzxUYWczLFRhZzQ+ID4KLXsgfTsKLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi10ZW1wbGF0ZTxjbGFzcyBUYWcxLCBjbGFzcyBUYWcyLCBjbGFzcyBUYWczPiBzdHJ1Y3QgdGFnPFRhZzEsVGFnMixUYWczLG51bGxfdGFnPgotICA6IGRldGFpbDo6Y29tcG91bmRfdGFnPGRldGFpbDo6Y29tcG91bmRfdGFnPFRhZzEsVGFnMj4sVGFnMz4KLXsgfTsKLXRlbXBsYXRlPGNsYXNzIFRhZzEsIGNsYXNzIFRhZzI+IHN0cnVjdCB0YWc8VGFnMSxUYWcyLG51bGxfdGFnLG51bGxfdGFnPgotICA6IGRldGFpbDo6Y29tcG91bmRfdGFnPFRhZzEsVGFnMj4KLXsgfTsKLXRlbXBsYXRlPGNsYXNzIFRhZzE+IHN0cnVjdCB0YWc8VGFnMSxudWxsX3RhZyxudWxsX3RhZyxudWxsX3RhZz4KLSAgOiBUYWcxCi17IH07Ci0jZW5kaWYKLQotCi10ZW1wbGF0ZTxjbGFzcyBUYWcsIGNsYXNzIFF1ZXJ5VGFnPiBzdHJ1Y3QgcmVwcmVzZW50cwotICA6IGRldGFpbDo6cmVwcmVzZW50c19pbXBsPFRhZywgZGV0YWlsOjpyZXRhZ19kZWZhdWx0X2NjPFF1ZXJ5VGFnLFRhZz4gPgoteyB9OwotCi0KLXRlbXBsYXRlPGNsYXNzIFRhZywgY2xhc3MgUXVlcnlUYWc+IHN0cnVjdCBleHRyYWN0Ci17IAotICB0eXBlZGVmIGRldGFpbDo6Y29uc3RhbnQ8Ci0gICAgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6dGFnX2ljZQotICAgICAgPCA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpiaXRzPFRhZz46OnZhbHVlCi0gICAgICAsIDo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6Om1hc2s8VGFnPjo6dmFsdWUKLSAgICAgICwgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6Yml0czxRdWVyeVRhZz46OnZhbHVlCi0gICAgICAsIDo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6Om1hc2s8UXVlcnlUYWc+Ojp2YWx1ZQotICAgICAgPjo6ZXh0cmFjdGVkX2JpdHMgCi0gID4gYml0czsKLQotICB0eXBlZGVmIGRldGFpbDo6Y29uc3RhbnQ8IAotICAgIDo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6Om1hc2s8UXVlcnlUYWc+Ojp2YWx1ZQotICA+IG1hc2s7IAotfTsKLQotfSB9IC8vIG5hbWVzcGFjZSA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlcwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX3RhZ3MvcHJlcHJvY2Vzc2VkLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGZ1bmN0aW9uX3R5cGVzIHsKLSNkZWZpbmUgTkROQk9PU1RfRlRfY2NfZmlsZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX3RhZ3MvY2NfdGFnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfbG9vcC5ocHA+Ci19IH0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0OjpmdW5jdGlvbl90eXBlcwotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9yZXN1bHRfdHlwZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL3Jlc3VsdF90eXBlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjJmYjEwZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL3Jlc3VsdF90eXBlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBORE5CT09TVF9GVF9SRVNVTFRfVFlQRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfRlRfUkVTVUxUX1RZUEVfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9ibGFuay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdGVtcGxhdGVfYXJpdHlfc3BlYy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXQuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvaXNfY2FsbGFibGVfYnVpbHRpbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvY29tcG9uZW50cy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCAKLXsgCi0gIG5hbWVzcGFjZSBmdW5jdGlvbl90eXBlcyAKLSAgewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHJlc3VsdF90eXBlOwotCi0gICAgbmFtZXNwYWNlIGRldGFpbAotICAgIHsKLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCByZXN1bHRfdHlwZV9pbXBsCi0gICAgICAgIDogbXBsOjphdF9jCi0gICAgICAgICAgPCB0eXBlbmFtZSBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxUPjo6dHlwZXMsIDAgPgotICAgICAgeyB9OwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCByZXN1bHRfdHlwZQotICAgICAgOiBtcGw6OmlmXwotICAgICAgICA8IGZ1bmN0aW9uX3R5cGVzOjppc19jYWxsYWJsZV9idWlsdGluPFQ+Ci0gICAgICAgICwgZGV0YWlsOjpyZXN1bHRfdHlwZV9pbXBsPFQ+LCBuZG5ib29zdDo6YmxhbmsKLSAgICAgICAgPjo6dHlwZQotICAgIHsgCi0gICAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEscmVzdWx0X3R5cGUsKFQpKSAKLSAgICB9OwotICB9Ci0gIE5ETkJPT1NUX1RUX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDEsZnVuY3Rpb25fdHlwZXM6OnJlc3VsdF90eXBlKQotfQotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbmFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25hbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxNDQ1N2QuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbmFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU0OCArMCwwIEBACi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIENvcHlyaWdodCAoYykgMjAwMCBDYWRlbnphIE5ldyBaZWFsYW5kIEx0ZAotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueS0KLS8vIGluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gQm9vc3QgZnVuY3Rpb25hbC5ocHAgaGVhZGVyIGZpbGUKLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2Z1bmN0aW9uYWwgZm9yIGRvY3VtZW50YXRpb24uCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vICRJZDogZnVuY3Rpb25hbC5ocHAgMzYyNDYgMjAwNi0xMi0wMiAxNDoxNzoyNlogYW5kcmVhc19odWJlcjY5ICQKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OQUxfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OQUxfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NhbGxfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgLy8gVGhlIGZvbGxvd2luZyB0cmFpdHMgY2xhc3NlcyBhbGxvdyB1cyB0byBhdm9pZCB0aGUgbmVlZCBmb3IgcHRyX2Z1bgotICAgIC8vIGJlY2F1c2UgdGhlIHR5cGVzIG9mIGFyZ3VtZW50cyBhbmQgdGhlIHJlc3VsdCBvZiBhIGZ1bmN0aW9uIGNhbiBiZSAKLSAgICAvLyBkZWR1Y2VkLgotICAgIC8vCi0gICAgLy8gSW4gYWRkaXRpb24gdG8gdGhlIHN0YW5kYXJkIHR5cGVzIGRlZmluZWQgaW4gdW5hcnlfZnVuY3Rpb24gYW5kIAotICAgIC8vIGJpbmFyeV9mdW5jdGlvbiwgd2UgYWRkCi0gICAgLy8KLSAgICAvLyAtIGZ1bmN0aW9uX3R5cGUsIHRoZSB0eXBlIG9mIHRoZSBmdW5jdGlvbiBvciBmdW5jdGlvbiBvYmplY3QgaXRzZWxmLgotICAgIC8vCi0gICAgLy8gLSBwYXJhbV90eXBlLCB0aGUgdHlwZSB0aGF0IHNob3VsZCBiZSB1c2VkIGZvciBwYXNzaW5nIHRoZSBmdW5jdGlvbiBvcgotICAgIC8vICAgZnVuY3Rpb24gb2JqZWN0IGFzIGFuIGFyZ3VtZW50LgotICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgbmFtZXNwYWNlIGRldGFpbAotICAgIHsKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIE9wZXJhdGlvbj4KLSAgICAgICAgc3RydWN0IHVuYXJ5X3RyYWl0c19pbXA7Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgT3BlcmF0aW9uPgotICAgICAgICBzdHJ1Y3QgdW5hcnlfdHJhaXRzX2ltcDxPcGVyYXRpb24qPgotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbl90eXBlOwotICAgICAgICAgICAgdHlwZWRlZiBjb25zdCBmdW5jdGlvbl90eXBlICYgICAgICAgICAgICAgcGFyYW1fdHlwZTsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgT3BlcmF0aW9uOjpyZXN1bHRfdHlwZSAgIHJlc3VsdF90eXBlOwotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBPcGVyYXRpb246OmFyZ3VtZW50X3R5cGUgYXJndW1lbnRfdHlwZTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgQT4KLSAgICAgICAgc3RydWN0IHVuYXJ5X3RyYWl0c19pbXA8UigqKShBKT4KLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBSICgqZnVuY3Rpb25fdHlwZSkoQSk7Ci0gICAgICAgICAgICB0eXBlZGVmIFIgKCpwYXJhbV90eXBlKShBKTsKLSAgICAgICAgICAgIHR5cGVkZWYgUiByZXN1bHRfdHlwZTsKLSAgICAgICAgICAgIHR5cGVkZWYgQSBhcmd1bWVudF90eXBlOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBPcGVyYXRpb24+Ci0gICAgICAgIHN0cnVjdCBiaW5hcnlfdHJhaXRzX2ltcDsKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgT3BlcmF0aW9uPgotICAgICAgICBzdHJ1Y3QgYmluYXJ5X3RyYWl0c19pbXA8T3BlcmF0aW9uKj4KLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBPcGVyYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uX3R5cGU7Ci0gICAgICAgICAgICB0eXBlZGVmIGNvbnN0IGZ1bmN0aW9uX3R5cGUgJiAgICAgICAgICAgICAgICAgICAgcGFyYW1fdHlwZTsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgT3BlcmF0aW9uOjpyZXN1bHRfdHlwZSAgICAgICAgICByZXN1bHRfdHlwZTsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgT3BlcmF0aW9uOjpmaXJzdF9hcmd1bWVudF90eXBlICBmaXJzdF9hcmd1bWVudF90eXBlOwotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBPcGVyYXRpb246OnNlY29uZF9hcmd1bWVudF90eXBlIHNlY29uZF9hcmd1bWVudF90eXBlOwotICAgICAgICB9OwotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIEExLCBjbGFzcyBBMj4KLSAgICAgICAgc3RydWN0IGJpbmFyeV90cmFpdHNfaW1wPFIoKikoQTEsQTIpPgotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIFIgKCpmdW5jdGlvbl90eXBlKShBMSxBMik7Ci0gICAgICAgICAgICB0eXBlZGVmIFIgKCpwYXJhbV90eXBlKShBMSxBMik7Ci0gICAgICAgICAgICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0gICAgICAgICAgICB0eXBlZGVmIEExIGZpcnN0X2FyZ3VtZW50X3R5cGU7Ci0gICAgICAgICAgICB0eXBlZGVmIEEyIHNlY29uZF9hcmd1bWVudF90eXBlOwotICAgICAgICB9OwotICAgIH0gLy8gbmFtZXNwYWNlIGRldGFpbAotICAgIAotICAgIHRlbXBsYXRlIDxjbGFzcyBPcGVyYXRpb24+Ci0gICAgc3RydWN0IHVuYXJ5X3RyYWl0cwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnVuYXJ5X3RyYWl0c19pbXA8T3BlcmF0aW9uKj46OmZ1bmN0aW9uX3R5cGUgZnVuY3Rpb25fdHlwZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnVuYXJ5X3RyYWl0c19pbXA8T3BlcmF0aW9uKj46OnBhcmFtX3R5cGUgICAgcGFyYW1fdHlwZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnVuYXJ5X3RyYWl0c19pbXA8T3BlcmF0aW9uKj46OnJlc3VsdF90eXBlICAgcmVzdWx0X3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjp1bmFyeV90cmFpdHNfaW1wPE9wZXJhdGlvbio+Ojphcmd1bWVudF90eXBlIGFyZ3VtZW50X3R5cGU7Ci0gICAgfTsgCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgQT4KLSAgICBzdHJ1Y3QgdW5hcnlfdHJhaXRzPFIoKikoQSk+Ci0gICAgewotICAgICAgICB0eXBlZGVmIFIgKCpmdW5jdGlvbl90eXBlKShBKTsKLSAgICAgICAgdHlwZWRlZiBSICgqcGFyYW1fdHlwZSkoQSk7Ci0gICAgICAgIHR5cGVkZWYgUiByZXN1bHRfdHlwZTsKLSAgICAgICAgdHlwZWRlZiBBIGFyZ3VtZW50X3R5cGU7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBPcGVyYXRpb24+Ci0gICAgc3RydWN0IGJpbmFyeV90cmFpdHMKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpiaW5hcnlfdHJhaXRzX2ltcDxPcGVyYXRpb24qPjo6ZnVuY3Rpb25fdHlwZSAgICAgICAgZnVuY3Rpb25fdHlwZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmJpbmFyeV90cmFpdHNfaW1wPE9wZXJhdGlvbio+OjpwYXJhbV90eXBlICAgICAgICAgICBwYXJhbV90eXBlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6YmluYXJ5X3RyYWl0c19pbXA8T3BlcmF0aW9uKj46OnJlc3VsdF90eXBlICAgICAgICAgIHJlc3VsdF90eXBlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6YmluYXJ5X3RyYWl0c19pbXA8T3BlcmF0aW9uKj46OmZpcnN0X2FyZ3VtZW50X3R5cGUgIGZpcnN0X2FyZ3VtZW50X3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpiaW5hcnlfdHJhaXRzX2ltcDxPcGVyYXRpb24qPjo6c2Vjb25kX2FyZ3VtZW50X3R5cGUgc2Vjb25kX2FyZ3VtZW50X3R5cGU7Ci0gICAgfTsKLSAgICAKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgQTEsIGNsYXNzIEEyPgotICAgIHN0cnVjdCBiaW5hcnlfdHJhaXRzPFIoKikoQTEsQTIpPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBSICgqZnVuY3Rpb25fdHlwZSkoQTEsQTIpOwotICAgICAgICB0eXBlZGVmIFIgKCpwYXJhbV90eXBlKShBMSxBMik7Ci0gICAgICAgIHR5cGVkZWYgUiByZXN1bHRfdHlwZTsKLSAgICAgICAgdHlwZWRlZiBBMSBmaXJzdF9hcmd1bWVudF90eXBlOwotICAgICAgICB0eXBlZGVmIEEyIHNlY29uZF9hcmd1bWVudF90eXBlOwotICAgIH07Ci0jZWxzZSAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAvLyBJZiB3ZSBoYXZlIG5vIHBhcnRpYWwgc3BlY2lhbGlzYXRpb24gYXZhaWxhYmxlLCBkZWNheSB0byBhIHNpdHVhdGlvbgotICAgIC8vIHRoYXQgaXMgbm8gd29yc2UgdGhhbiBpbiB0aGUgU3RhbmRhcmQsIGkuZS4sIHB0cl9mdW4gd2lsbCBiZSByZXF1aXJlZC4KLSAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIE9wZXJhdGlvbj4KLSAgICBzdHJ1Y3QgdW5hcnlfdHJhaXRzCi0gICAgewotICAgICAgICB0eXBlZGVmIE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbl90eXBlOwotICAgICAgICB0eXBlZGVmIGNvbnN0IE9wZXJhdGlvbiYgICAgICAgICAgICAgICAgICBwYXJhbV90eXBlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE9wZXJhdGlvbjo6cmVzdWx0X3R5cGUgICByZXN1bHRfdHlwZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBPcGVyYXRpb246OmFyZ3VtZW50X3R5cGUgYXJndW1lbnRfdHlwZTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgT3BlcmF0aW9uPgotICAgIHN0cnVjdCBiaW5hcnlfdHJhaXRzCi0gICAgewotICAgICAgICB0eXBlZGVmIE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25fdHlwZTsKLSAgICAgICAgdHlwZWRlZiBjb25zdCBPcGVyYXRpb24gJiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgT3BlcmF0aW9uOjpyZXN1bHRfdHlwZSAgICAgICAgICByZXN1bHRfdHlwZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBPcGVyYXRpb246OmZpcnN0X2FyZ3VtZW50X3R5cGUgIGZpcnN0X2FyZ3VtZW50X3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgT3BlcmF0aW9uOjpzZWNvbmRfYXJndW1lbnRfdHlwZSBzZWNvbmRfYXJndW1lbnRfdHlwZTsKLSAgICB9OyAgICAKLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0gICAgCi0gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAvLyB1bmFyeV9uZWdhdGUsIG5vdDEKLSAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIHRlbXBsYXRlIDxjbGFzcyBQcmVkaWNhdGU+Ci0gICAgY2xhc3MgdW5hcnlfbmVnYXRlCi0gICAgICAgIDogcHVibGljIHN0ZDo6dW5hcnlfZnVuY3Rpb248dHlwZW5hbWUgdW5hcnlfdHJhaXRzPFByZWRpY2F0ZT46OmFyZ3VtZW50X3R5cGUsYm9vbD4KLSAgICB7Ci0gICAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IHVuYXJ5X25lZ2F0ZSh0eXBlbmFtZSB1bmFyeV90cmFpdHM8UHJlZGljYXRlPjo6cGFyYW1fdHlwZSB4KQotICAgICAgICAgICAgOgotICAgICAgICAgICAgcHJlZCh4KQotICAgICAgICB7fQotICAgICAgICBib29sIG9wZXJhdG9yKCkodHlwZW5hbWUgY2FsbF90cmFpdHM8dHlwZW5hbWUgdW5hcnlfdHJhaXRzPFByZWRpY2F0ZT46OmFyZ3VtZW50X3R5cGU+OjpwYXJhbV90eXBlIHgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAhcHJlZCh4KTsKLSAgICAgICAgfQotICAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZW5hbWUgdW5hcnlfdHJhaXRzPFByZWRpY2F0ZT46OmZ1bmN0aW9uX3R5cGUgcHJlZDsKLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFByZWRpY2F0ZT4KLSAgICB1bmFyeV9uZWdhdGU8UHJlZGljYXRlPiBub3QxKGNvbnN0IFByZWRpY2F0ZSAmcHJlZCkKLSAgICB7Ci0gICAgICAgIC8vIFRoZSBjYXN0IGlzIHRvIHBsYWNhdGUgQm9ybGFuZCBDKytCdWlsZGVyIGluIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcy4KLSAgICAgICAgLy8gSSBkb24ndCB0aGluayBpdCBzaG91bGQgYmUgbmVjZXNzYXJ5LgotICAgICAgICByZXR1cm4gdW5hcnlfbmVnYXRlPFByZWRpY2F0ZT4oKHR5cGVuYW1lIHVuYXJ5X3RyYWl0czxQcmVkaWNhdGU+OjpwYXJhbV90eXBlKXByZWQpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBQcmVkaWNhdGU+Ci0gICAgdW5hcnlfbmVnYXRlPFByZWRpY2F0ZT4gbm90MShQcmVkaWNhdGUgJnByZWQpCi0gICAgewotICAgICAgICByZXR1cm4gdW5hcnlfbmVnYXRlPFByZWRpY2F0ZT4ocHJlZCk7Ci0gICAgfQotCi0gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAvLyBiaW5hcnlfbmVnYXRlLCBub3QyCi0gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgUHJlZGljYXRlPgotICAgIGNsYXNzIGJpbmFyeV9uZWdhdGUKLSAgICAgICAgOiBwdWJsaWMgc3RkOjpiaW5hcnlfZnVuY3Rpb248dHlwZW5hbWUgYmluYXJ5X3RyYWl0czxQcmVkaWNhdGU+OjpmaXJzdF9hcmd1bWVudF90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBiaW5hcnlfdHJhaXRzPFByZWRpY2F0ZT46OnNlY29uZF9hcmd1bWVudF90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sPgotICAgIHsKLSAgICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgYmluYXJ5X25lZ2F0ZSh0eXBlbmFtZSBiaW5hcnlfdHJhaXRzPFByZWRpY2F0ZT46OnBhcmFtX3R5cGUgeCkKLSAgICAgICAgICAgIDoKLSAgICAgICAgICAgIHByZWQoeCkKLSAgICAgICAge30KLSAgICAgICAgYm9vbCBvcGVyYXRvcigpKHR5cGVuYW1lIGNhbGxfdHJhaXRzPHR5cGVuYW1lIGJpbmFyeV90cmFpdHM8UHJlZGljYXRlPjo6Zmlyc3RfYXJndW1lbnRfdHlwZT46OnBhcmFtX3R5cGUgeCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIGNhbGxfdHJhaXRzPHR5cGVuYW1lIGJpbmFyeV90cmFpdHM8UHJlZGljYXRlPjo6c2Vjb25kX2FyZ3VtZW50X3R5cGU+OjpwYXJhbV90eXBlIHkpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAhcHJlZCh4LHkpOwotICAgICAgICB9Ci0gICAgICBwcml2YXRlOgotICAgICAgICB0eXBlbmFtZSBiaW5hcnlfdHJhaXRzPFByZWRpY2F0ZT46OmZ1bmN0aW9uX3R5cGUgcHJlZDsKLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFByZWRpY2F0ZT4KLSAgICBiaW5hcnlfbmVnYXRlPFByZWRpY2F0ZT4gbm90Mihjb25zdCBQcmVkaWNhdGUgJnByZWQpCi0gICAgewotICAgICAgICAvLyBUaGUgY2FzdCBpcyB0byBwbGFjYXRlIEJvcmxhbmQgQysrQnVpbGRlciBpbiBjZXJ0YWluIGNpcmN1bXN0YW5jZXMuCi0gICAgICAgIC8vIEkgZG9uJ3QgdGhpbmsgaXQgc2hvdWxkIGJlIG5lY2Vzc2FyeS4KLSAgICAgICAgcmV0dXJuIGJpbmFyeV9uZWdhdGU8UHJlZGljYXRlPigodHlwZW5hbWUgYmluYXJ5X3RyYWl0czxQcmVkaWNhdGU+OjpwYXJhbV90eXBlKXByZWQpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBQcmVkaWNhdGU+Ci0gICAgYmluYXJ5X25lZ2F0ZTxQcmVkaWNhdGU+IG5vdDIoUHJlZGljYXRlICZwcmVkKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGJpbmFyeV9uZWdhdGU8UHJlZGljYXRlPihwcmVkKTsKLSAgICB9Ci0gICAgICAgIAotICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgLy8gYmluZGVyMXN0LCBiaW5kMXN0Ci0gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgT3BlcmF0aW9uPgotICAgIGNsYXNzIGJpbmRlcjFzdAotICAgICAgICA6IHB1YmxpYyBzdGQ6OnVuYXJ5X2Z1bmN0aW9uPHR5cGVuYW1lIGJpbmFyeV90cmFpdHM8T3BlcmF0aW9uPjo6c2Vjb25kX2FyZ3VtZW50X3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgYmluYXJ5X3RyYWl0czxPcGVyYXRpb24+OjpyZXN1bHRfdHlwZT4KLSAgICB7ICAgICAgIAotICAgICAgcHVibGljOgotICAgICAgICBiaW5kZXIxc3QodHlwZW5hbWUgYmluYXJ5X3RyYWl0czxPcGVyYXRpb24+OjpwYXJhbV90eXBlIHgsCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBjYWxsX3RyYWl0czx0eXBlbmFtZSBiaW5hcnlfdHJhaXRzPE9wZXJhdGlvbj46OmZpcnN0X2FyZ3VtZW50X3R5cGU+OjpwYXJhbV90eXBlIHkpCi0gICAgICAgICAgICA6Ci0gICAgICAgICAgICBvcCh4KSwgdmFsdWUoeSkKLSAgICAgICAge30KLSAgICAgICAgCi0gICAgICAgIHR5cGVuYW1lIGJpbmFyeV90cmFpdHM8T3BlcmF0aW9uPjo6cmVzdWx0X3R5cGUKLSAgICAgICAgb3BlcmF0b3IoKSh0eXBlbmFtZSBjYWxsX3RyYWl0czx0eXBlbmFtZSBiaW5hcnlfdHJhaXRzPE9wZXJhdGlvbj46OnNlY29uZF9hcmd1bWVudF90eXBlPjo6cGFyYW1fdHlwZSB4KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gb3AodmFsdWUsIHgpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgcHJvdGVjdGVkOgotICAgICAgICB0eXBlbmFtZSBiaW5hcnlfdHJhaXRzPE9wZXJhdGlvbj46OmZ1bmN0aW9uX3R5cGUgb3A7Ci0gICAgICAgIHR5cGVuYW1lIGJpbmFyeV90cmFpdHM8T3BlcmF0aW9uPjo6Zmlyc3RfYXJndW1lbnRfdHlwZSB2YWx1ZTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPGNsYXNzIE9wZXJhdGlvbj4KLSAgICBpbmxpbmUgYmluZGVyMXN0PE9wZXJhdGlvbj4gYmluZDFzdChjb25zdCBPcGVyYXRpb24gJm9wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIGNhbGxfdHJhaXRzPAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIGJpbmFyeV90cmFpdHM8T3BlcmF0aW9uPjo6Zmlyc3RfYXJndW1lbnRfdHlwZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID46OnBhcmFtX3R5cGUgeCkKLSAgICB7Ci0gICAgICAgIC8vIFRoZSBjYXN0IGlzIHRvIHBsYWNhdGUgQm9ybGFuZCBDKytCdWlsZGVyIGluIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcy4KLSAgICAgICAgLy8gSSBkb24ndCB0aGluayBpdCBzaG91bGQgYmUgbmVjZXNzYXJ5LgotICAgICAgICByZXR1cm4gYmluZGVyMXN0PE9wZXJhdGlvbj4oKHR5cGVuYW1lIGJpbmFyeV90cmFpdHM8T3BlcmF0aW9uPjo6cGFyYW1fdHlwZSlvcCwgeCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIE9wZXJhdGlvbj4KLSAgICBpbmxpbmUgYmluZGVyMXN0PE9wZXJhdGlvbj4gYmluZDFzdChPcGVyYXRpb24gJm9wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIGNhbGxfdHJhaXRzPAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIGJpbmFyeV90cmFpdHM8T3BlcmF0aW9uPjo6Zmlyc3RfYXJndW1lbnRfdHlwZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID46OnBhcmFtX3R5cGUgeCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBiaW5kZXIxc3Q8T3BlcmF0aW9uPihvcCwgeCk7Ci0gICAgfQotCi0gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAvLyBiaW5kZXIybmQsIGJpbmQybmQKLSAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIHRlbXBsYXRlIDxjbGFzcyBPcGVyYXRpb24+Ci0gICAgY2xhc3MgYmluZGVyMm5kCi0gICAgICAgIDogcHVibGljIHN0ZDo6dW5hcnlfZnVuY3Rpb248dHlwZW5hbWUgYmluYXJ5X3RyYWl0czxPcGVyYXRpb24+OjpmaXJzdF9hcmd1bWVudF90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIGJpbmFyeV90cmFpdHM8T3BlcmF0aW9uPjo6cmVzdWx0X3R5cGU+Ci0gICAgewotICAgICAgcHVibGljOgotICAgICAgICBiaW5kZXIybmQodHlwZW5hbWUgYmluYXJ5X3RyYWl0czxPcGVyYXRpb24+OjpwYXJhbV90eXBlIHgsCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBjYWxsX3RyYWl0czx0eXBlbmFtZSBiaW5hcnlfdHJhaXRzPE9wZXJhdGlvbj46OnNlY29uZF9hcmd1bWVudF90eXBlPjo6cGFyYW1fdHlwZSB5KQotICAgICAgICAgICAgOgotICAgICAgICAgICAgb3AoeCksIHZhbHVlKHkpCi0gICAgICAgIHt9Ci0gICAgICAgIAotICAgICAgICB0eXBlbmFtZSBiaW5hcnlfdHJhaXRzPE9wZXJhdGlvbj46OnJlc3VsdF90eXBlCi0gICAgICAgIG9wZXJhdG9yKCkodHlwZW5hbWUgY2FsbF90cmFpdHM8dHlwZW5hbWUgYmluYXJ5X3RyYWl0czxPcGVyYXRpb24+OjpmaXJzdF9hcmd1bWVudF90eXBlPjo6cGFyYW1fdHlwZSB4KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gb3AoeCwgdmFsdWUpOwotICAgICAgICB9ICAgICAgICAgICAgICAgCi0gICAgICAgIAotICAgICAgcHJvdGVjdGVkOgotICAgICAgICB0eXBlbmFtZSBiaW5hcnlfdHJhaXRzPE9wZXJhdGlvbj46OmZ1bmN0aW9uX3R5cGUgb3A7Ci0gICAgICAgIHR5cGVuYW1lIGJpbmFyeV90cmFpdHM8T3BlcmF0aW9uPjo6c2Vjb25kX2FyZ3VtZW50X3R5cGUgdmFsdWU7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBPcGVyYXRpb24+Ci0gICAgaW5saW5lIGJpbmRlcjJuZDxPcGVyYXRpb24+IGJpbmQybmQoY29uc3QgT3BlcmF0aW9uICZvcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBjYWxsX3RyYWl0czwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBiaW5hcnlfdHJhaXRzPE9wZXJhdGlvbj46OnNlY29uZF9hcmd1bWVudF90eXBlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjo6cGFyYW1fdHlwZSB4KQotICAgIHsKLSAgICAgICAgLy8gVGhlIGNhc3QgaXMgdG8gcGxhY2F0ZSBCb3JsYW5kIEMrK0J1aWxkZXIgaW4gY2VydGFpbiBjaXJjdW1zdGFuY2VzLgotICAgICAgICAvLyBJIGRvbid0IHRoaW5rIGl0IHNob3VsZCBiZSBuZWNlc3NhcnkuCi0gICAgICAgIHJldHVybiBiaW5kZXIybmQ8T3BlcmF0aW9uPigodHlwZW5hbWUgYmluYXJ5X3RyYWl0czxPcGVyYXRpb24+OjpwYXJhbV90eXBlKW9wLCB4KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgT3BlcmF0aW9uPgotICAgIGlubGluZSBiaW5kZXIybmQ8T3BlcmF0aW9uPiBiaW5kMm5kKE9wZXJhdGlvbiAmb3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgY2FsbF90cmFpdHM8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgYmluYXJ5X3RyYWl0czxPcGVyYXRpb24+OjpzZWNvbmRfYXJndW1lbnRfdHlwZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID46OnBhcmFtX3R5cGUgeCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBiaW5kZXIybmQ8T3BlcmF0aW9uPihvcCwgeCk7Ci0gICAgfQotCi0gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAvLyBtZW1fZnVuLCBldGMKLSAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIHRlbXBsYXRlIDxjbGFzcyBTLCBjbGFzcyBUPgotICAgIGNsYXNzIG1lbV9mdW5fdCA6IHB1YmxpYyBzdGQ6OnVuYXJ5X2Z1bmN0aW9uPFQqLCBTPgotICAgIHsKLSAgICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgbWVtX2Z1bl90KFMgKFQ6OipwKSgpKQotICAgICAgICAgICAgOgotICAgICAgICAgICAgcHRyKHApCi0gICAgICAgIHt9Ci0gICAgICAgIFMgb3BlcmF0b3IoKShUKiBwKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKHAtPipwdHIpKCk7Ci0gICAgICAgIH0KLSAgICAgIHByaXZhdGU6Ci0gICAgICAgIFMgKFQ6OipwdHIpKCk7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBTLCBjbGFzcyBULCBjbGFzcyBBPgotICAgIGNsYXNzIG1lbV9mdW4xX3QgOiBwdWJsaWMgc3RkOjpiaW5hcnlfZnVuY3Rpb248VCosIEEsIFM+Ci0gICAgewotICAgICAgcHVibGljOiAgIAotICAgICAgICBleHBsaWNpdCBtZW1fZnVuMV90KFMgKFQ6OipwKShBKSkKLSAgICAgICAgICAgIDoKLSAgICAgICAgICAgIHB0cihwKQotICAgICAgICB7fQotICAgICAgICBTIG9wZXJhdG9yKCkoVCogcCwgdHlwZW5hbWUgY2FsbF90cmFpdHM8QT46OnBhcmFtX3R5cGUgeCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIChwLT4qcHRyKSh4KTsKLSAgICAgICAgfQotICAgICAgcHJpdmF0ZToKLSAgICAgICAgUyAoVDo6KnB0cikoQSk7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBTLCBjbGFzcyBUPgotICAgIGNsYXNzIGNvbnN0X21lbV9mdW5fdCA6IHB1YmxpYyBzdGQ6OnVuYXJ5X2Z1bmN0aW9uPGNvbnN0IFQqLCBTPgotICAgIHsKLSAgICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgY29uc3RfbWVtX2Z1bl90KFMgKFQ6OipwKSgpIGNvbnN0KQotICAgICAgICAgICAgOgotICAgICAgICAgICAgcHRyKHApCi0gICAgICAgIHt9Ci0gICAgICAgIFMgb3BlcmF0b3IoKShjb25zdCBUKiBwKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKHAtPipwdHIpKCk7Ci0gICAgICAgIH0KLSAgICAgIHByaXZhdGU6Ci0gICAgICAgIFMgKFQ6OipwdHIpKCkgY29uc3Q7ICAgICAgICAKLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFMsIGNsYXNzIFQsIGNsYXNzIEE+Ci0gICAgY2xhc3MgY29uc3RfbWVtX2Z1bjFfdCA6IHB1YmxpYyBzdGQ6OmJpbmFyeV9mdW5jdGlvbjxjb25zdCBUKiwgQSwgUz4KLSAgICB7Ci0gICAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IGNvbnN0X21lbV9mdW4xX3QoUyAoVDo6KnApKEEpIGNvbnN0KQotICAgICAgICAgICAgOgotICAgICAgICAgICAgcHRyKHApCi0gICAgICAgIHt9Ci0gICAgICAgIFMgb3BlcmF0b3IoKShjb25zdCBUKiBwLCB0eXBlbmFtZSBjYWxsX3RyYWl0czxBPjo6cGFyYW1fdHlwZSB4KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKHAtPipwdHIpKHgpOwotICAgICAgICB9Ci0gICAgICBwcml2YXRlOgotICAgICAgICBTIChUOjoqcHRyKShBKSBjb25zdDsKLSAgICB9OwotICAgIAotICAgIHRlbXBsYXRlPGNsYXNzIFMsIGNsYXNzIFQ+Ci0gICAgaW5saW5lIG1lbV9mdW5fdDxTLFQ+IG1lbV9mdW4oUyAoVDo6KmYpKCkpCi0gICAgewotICAgICAgICByZXR1cm4gbWVtX2Z1bl90PFMsVD4oZik7Ci0gICAgfQotICAgIAotICAgIHRlbXBsYXRlPGNsYXNzIFMsIGNsYXNzIFQsIGNsYXNzIEE+Ci0gICAgaW5saW5lIG1lbV9mdW4xX3Q8UyxULEE+IG1lbV9mdW4oUyAoVDo6KmYpKEEpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1lbV9mdW4xX3Q8UyxULEE+KGYpOwotICAgIH0KLQotI2lmbmRlZiBORE5CT09TVF9OT19QT0lOVEVSX1RPX01FTUJFUl9DT05TVAotICAgIHRlbXBsYXRlPGNsYXNzIFMsIGNsYXNzIFQ+Ci0gICAgaW5saW5lIGNvbnN0X21lbV9mdW5fdDxTLFQ+IG1lbV9mdW4oUyAoVDo6KmYpKCkgY29uc3QpCi0gICAgewotICAgICAgICByZXR1cm4gY29uc3RfbWVtX2Z1bl90PFMsVD4oZik7Ci0gICAgfQotICAgIAotICAgIHRlbXBsYXRlPGNsYXNzIFMsIGNsYXNzIFQsIGNsYXNzIEE+Ci0gICAgaW5saW5lIGNvbnN0X21lbV9mdW4xX3Q8UyxULEE+IG1lbV9mdW4oUyAoVDo6KmYpKEEpIGNvbnN0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGNvbnN0X21lbV9mdW4xX3Q8UyxULEE+KGYpOwotICAgIH0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19QT0lOVEVSX1RPX01FTUJFUl9DT05TVAotCi0gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAvLyBtZW1fZnVuX3JlZiwgZXRjCi0gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgUywgY2xhc3MgVD4KLSAgICBjbGFzcyBtZW1fZnVuX3JlZl90IDogcHVibGljIHN0ZDo6dW5hcnlfZnVuY3Rpb248VCYsIFM+Ci0gICAgewotICAgICAgcHVibGljOgotICAgICAgICBleHBsaWNpdCBtZW1fZnVuX3JlZl90KFMgKFQ6OipwKSgpKQotICAgICAgICAgICAgOgotICAgICAgICAgICAgcHRyKHApCi0gICAgICAgIHt9Ci0gICAgICAgIFMgb3BlcmF0b3IoKShUJiBwKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKHAuKnB0cikoKTsKLSAgICAgICAgfQotICAgICAgcHJpdmF0ZToKLSAgICAgICAgUyAoVDo6KnB0cikoKTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFMsIGNsYXNzIFQsIGNsYXNzIEE+Ci0gICAgY2xhc3MgbWVtX2Z1bjFfcmVmX3QgOiBwdWJsaWMgc3RkOjpiaW5hcnlfZnVuY3Rpb248VCYsIEEsIFM+Ci0gICAgewotICAgICAgcHVibGljOgotICAgICAgICBleHBsaWNpdCBtZW1fZnVuMV9yZWZfdChTIChUOjoqcCkoQSkpCi0gICAgICAgICAgICA6Ci0gICAgICAgICAgICBwdHIocCkKLSAgICAgICAge30KLSAgICAgICAgUyBvcGVyYXRvcigpKFQmIHAsIHR5cGVuYW1lIGNhbGxfdHJhaXRzPEE+OjpwYXJhbV90eXBlIHgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAocC4qcHRyKSh4KTsKLSAgICAgICAgfQotICAgICAgcHJpdmF0ZToKLSAgICAgICAgUyAoVDo6KnB0cikoQSk7Ci0gICAgfTsKLSAgICAKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgUywgY2xhc3MgVD4KLSAgICBjbGFzcyBjb25zdF9tZW1fZnVuX3JlZl90IDogcHVibGljIHN0ZDo6dW5hcnlfZnVuY3Rpb248Y29uc3QgVCYsIFM+Ci0gICAgewotICAgICAgcHVibGljOgotICAgICAgICBleHBsaWNpdCBjb25zdF9tZW1fZnVuX3JlZl90KFMgKFQ6OipwKSgpIGNvbnN0KQotICAgICAgICAgICAgOgotICAgICAgICAgICAgcHRyKHApCi0gICAgICAgIHt9Ci0gICAgICAgIAotICAgICAgICBTIG9wZXJhdG9yKCkoY29uc3QgVCAmcCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIChwLipwdHIpKCk7Ci0gICAgICAgIH0KLSAgICAgIHByaXZhdGU6Ci0gICAgICAgIFMgKFQ6OipwdHIpKCkgY29uc3Q7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBTLCBjbGFzcyBULCBjbGFzcyBBPgotICAgIGNsYXNzIGNvbnN0X21lbV9mdW4xX3JlZl90IDogcHVibGljIHN0ZDo6YmluYXJ5X2Z1bmN0aW9uPGNvbnN0IFQmLCBBLCBTPgotICAgIHsKLSAgICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgY29uc3RfbWVtX2Z1bjFfcmVmX3QoUyAoVDo6KnApKEEpIGNvbnN0KQotICAgICAgICAgICAgOgotICAgICAgICAgICAgcHRyKHApCi0gICAgICAgIHt9Ci0KLSAgICAgICAgUyBvcGVyYXRvcigpKGNvbnN0IFQmIHAsIHR5cGVuYW1lIGNhbGxfdHJhaXRzPEE+OjpwYXJhbV90eXBlIHgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAocC4qcHRyKSh4KTsKLSAgICAgICAgfQotICAgICAgcHJpdmF0ZToKLSAgICAgICAgUyAoVDo6KnB0cikoQSkgY29uc3Q7Ci0gICAgfTsKLSAgICAKLSAgICB0ZW1wbGF0ZTxjbGFzcyBTLCBjbGFzcyBUPgotICAgIGlubGluZSBtZW1fZnVuX3JlZl90PFMsVD4gbWVtX2Z1bl9yZWYoUyAoVDo6KmYpKCkpCi0gICAgewotICAgICAgICByZXR1cm4gbWVtX2Z1bl9yZWZfdDxTLFQ+KGYpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFMsIGNsYXNzIFQsIGNsYXNzIEE+Ci0gICAgaW5saW5lIG1lbV9mdW4xX3JlZl90PFMsVCxBPiBtZW1fZnVuX3JlZihTIChUOjoqZikoQSkpCi0gICAgewotICAgICAgICByZXR1cm4gbWVtX2Z1bjFfcmVmX3Q8UyxULEE+KGYpOwotICAgIH0KLQotI2lmbmRlZiBORE5CT09TVF9OT19QT0lOVEVSX1RPX01FTUJFUl9DT05TVAotICAgIHRlbXBsYXRlPGNsYXNzIFMsIGNsYXNzIFQ+Ci0gICAgaW5saW5lIGNvbnN0X21lbV9mdW5fcmVmX3Q8UyxUPiBtZW1fZnVuX3JlZihTIChUOjoqZikoKSBjb25zdCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBjb25zdF9tZW1fZnVuX3JlZl90PFMsVD4oZik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUywgY2xhc3MgVCwgY2xhc3MgQT4KLSAgICBpbmxpbmUgY29uc3RfbWVtX2Z1bjFfcmVmX3Q8UyxULEE+IG1lbV9mdW5fcmVmKFMgKFQ6OipmKShBKSBjb25zdCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBjb25zdF9tZW1fZnVuMV9yZWZfdDxTLFQsQT4oZik7Ci0gICAgfSAgIAotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1BPSU5URVJfVE9fTUVNQkVSX0NPTlNUCi0KLSAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIC8vIHB0cl9mdW4KLSAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIHRlbXBsYXRlIDxjbGFzcyBBcmcsIGNsYXNzIFJlc3VsdD4KLSAgICBjbGFzcyBwb2ludGVyX3RvX3VuYXJ5X2Z1bmN0aW9uIDogcHVibGljIHN0ZDo6dW5hcnlfZnVuY3Rpb248QXJnLFJlc3VsdD4KLSAgICB7Ci0gICAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IHBvaW50ZXJfdG9fdW5hcnlfZnVuY3Rpb24oUmVzdWx0ICgqZikoQXJnKSkKLSAgICAgICAgICAgIDoKLSAgICAgICAgICAgIGZ1bmMoZikKLSAgICAgICAge30KLQotICAgICAgICBSZXN1bHQgb3BlcmF0b3IoKSh0eXBlbmFtZSBjYWxsX3RyYWl0czxBcmc+OjpwYXJhbV90eXBlIHgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmdW5jKHgpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVzdWx0ICgqZnVuYykoQXJnKTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPGNsYXNzIEFyZywgY2xhc3MgUmVzdWx0PgotICAgIGlubGluZSBwb2ludGVyX3RvX3VuYXJ5X2Z1bmN0aW9uPEFyZyxSZXN1bHQ+IHB0cl9mdW4oUmVzdWx0ICgqZikoQXJnKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBwb2ludGVyX3RvX3VuYXJ5X2Z1bmN0aW9uPEFyZyxSZXN1bHQ+KGYpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBSZXN1bHQ+Ci0gICAgY2xhc3MgcG9pbnRlcl90b19iaW5hcnlfZnVuY3Rpb24gOiBwdWJsaWMgc3RkOjpiaW5hcnlfZnVuY3Rpb248QXJnMSxBcmcyLFJlc3VsdD4KLSAgICB7Ci0gICAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IHBvaW50ZXJfdG9fYmluYXJ5X2Z1bmN0aW9uKFJlc3VsdCAoKmYpKEFyZzEsIEFyZzIpKQotICAgICAgICAgICAgOgotICAgICAgICAgICAgZnVuYyhmKQotICAgICAgICB7fQotICAgICAgICAKLSAgICAgICAgUmVzdWx0IG9wZXJhdG9yKCkodHlwZW5hbWUgY2FsbF90cmFpdHM8QXJnMT46OnBhcmFtX3R5cGUgeCwgdHlwZW5hbWUgY2FsbF90cmFpdHM8QXJnMj46OnBhcmFtX3R5cGUgeSkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZ1bmMoeCx5KTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgIHByaXZhdGU6Ci0gICAgICAgIFJlc3VsdCAoKmZ1bmMpKEFyZzEsIEFyZzIpOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgUmVzdWx0PgotICAgIGlubGluZSBwb2ludGVyX3RvX2JpbmFyeV9mdW5jdGlvbjxBcmcxLEFyZzIsUmVzdWx0PiBwdHJfZnVuKFJlc3VsdCAoKmYpKEFyZzEsIEFyZzIpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHBvaW50ZXJfdG9fYmluYXJ5X2Z1bmN0aW9uPEFyZzEsQXJnMixSZXN1bHQ+KGYpOwotICAgIH0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbmFsL2hhc2guaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbmFsL2hhc2guaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiY2M2OGJjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25hbC9oYXNoLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgMjAwNS0yMDA5IERhbmllbCBKYW1lcy4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25hbC9oYXNoL2hhc2guaHBwPgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uYWwvaGFzaC9kZXRhaWwvZmxvYXRfZnVuY3Rpb25zLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25hbC9oYXNoL2RldGFpbC9mbG9hdF9mdW5jdGlvbnMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzFhYjYyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25hbC9oYXNoL2RldGFpbC9mbG9hdF9mdW5jdGlvbnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzM2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IDIwMDUtMjAwOSBEYW5pZWwgSmFtZXMuCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0ZVTkNUSU9OQUxfSEFTSF9ERVRBSUxfRkxPQVRfRlVOQ1RJT05TX0hQUCkKLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05BTF9IQVNIX0RFVEFJTF9GTE9BVF9GVU5DVElPTlNfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9ub190cjEvY21hdGguaHBwPgotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8gU2V0IE5ETkJPT1NUX0hBU0hfQ09ORk9STUFOVF9GTE9BVFMgdG8gMSBmb3IgbGlicmFyaWVzIGtub3duIHRvIGhhdmUKLS8vIHN1ZmZpY2llbnRseSBnb29kIGZsb2F0aW5nIHBvaW50IHN1cHBvcnQgdG8gbm90IHJlcXVpcmUgYW55Ci0vLyB3b3JrYXJvdW5kcy4KLS8vCi0vLyBXaGVuIHNldCB0byAwLCB0aGUgbGlicmFyeSB0cmllcyB0byBhdXRvbWF0aWNhbGx5Ci0vLyB1c2UgdGhlIGJlc3QgYXZhaWxhYmxlIGltcGxlbWVudGF0aW9uLiBUaGlzIG5vcm1hbGx5IHdvcmtzIHdlbGwsIGJ1dAotLy8gYnJlYWtzIHdoZW4gYW1iaWd1aXRpZXMgYXJlIGNyZWF0ZWQgYnkgb2RkIG5hbWVzcGFjaW5nIG9mIHRoZSBmdW5jdGlvbnMuCi0vLwotLy8gTm90ZSB0aGF0IGlmIHRoaXMgaXMgc2V0IHRvIDAsIHRoZSBsaWJyYXJ5IHNob3VsZCBzdGlsbCB0YWtlIGZ1bGwKLS8vIGFkdmFudGFnZSBvZiB0aGUgcGxhdGZvcm0ncyBmbG9hdGluZyBwb2ludCBzdXBwb3J0LgotCi0jaWYgZGVmaW5lZChfX1NHSV9TVExfUE9SVCkgfHwgZGVmaW5lZChfU1RMUE9SVF9WRVJTSU9OKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNIX0NPTkZPUk1BTlRfRkxPQVRTIDAKLSNlbGlmIGRlZmluZWQoX19MSUJDT01PX18pCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU0hfQ09ORk9STUFOVF9GTE9BVFMgMAotI2VsaWYgZGVmaW5lZChfX1NURF9SV0NPTVBJTEVSX0hfXykgfHwgZGVmaW5lZChfUldTVERfVkVSKQotLy8gUm9ndWUgV2F2ZSBsaWJyYXJ5OgotIyAgIGRlZmluZSBORE5CT09TVF9IQVNIX0NPTkZPUk1BTlRfRkxPQVRTIDAKLSNlbGlmIGRlZmluZWQoX0xJQkNQUF9WRVJTSU9OKQotLy8gbGliYysrCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU0hfQ09ORk9STUFOVF9GTE9BVFMgMQotI2VsaWYgZGVmaW5lZChfX0dMSUJDUFBfXykgfHwgZGVmaW5lZChfX0dMSUJDWFhfXykKLS8vIEdOVSBsaWJzdGRjKysgMwotIyAgIGlmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID49IDQKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU0hfQ09ORk9STUFOVF9GTE9BVFMgMQotIyAgIGVsc2UKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU0hfQ09ORk9STUFOVF9GTE9BVFMgMAotIyAgIGVuZGlmCi0jZWxpZiBkZWZpbmVkKF9fU1RMX0NPTkZJR19IKQotLy8gZ2VuZXJpYyBTR0kgU1RMCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU0hfQ09ORk9STUFOVF9GTE9BVFMgMAotI2VsaWYgZGVmaW5lZChfX01TTF9DUFBfXykKLS8vIE1TTCBzdGFuZGFyZCBsaWI6Ci0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU0hfQ09ORk9STUFOVF9GTE9BVFMgMAotI2VsaWYgZGVmaW5lZChfX0lCTUNQUF9fKQotLy8gVkFDUFAgc3RkIGxpYiAocHJvYmFibHkgY29uZm9ybWFudCBmb3IgbXVjaCBlYXJsaWVyIHZlcnNpb24pLgotIyAgIGlmIF9fSUJNQ1BQX18gPj0gMTIxMAotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfSEFTSF9DT05GT1JNQU5UX0ZMT0FUUyAxCi0jICAgZWxzZQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfSEFTSF9DT05GT1JNQU5UX0ZMT0FUUyAwCi0jICAgZW5kaWYKLSNlbGlmIGRlZmluZWQoTVNJUExfQ09NUElMRV9IKQotLy8gTW9kZW5hIEMrKyBzdGFuZGFyZCBsaWJyYXJ5Ci0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU0hfQ09ORk9STUFOVF9GTE9BVFMgMAotI2VsaWYgKGRlZmluZWQoX1lWQUxTKSAmJiAhZGVmaW5lZChfX0lCTUNQUF9fKSkgfHwgZGVmaW5lZChfQ1BQTElCX1ZFUikKLS8vIERpbmt1bXdhcmUgTGlicmFyeSAodGhpcyBoYXMgdG8gYXBwZWFyIGFmdGVyIGFueSBwb3NzaWJsZSByZXBsYWNlbWVudCBsaWJyYXJpZXMpOgotIyAgIGlmIF9DUFBMSUJfVkVSID49IDQwNQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfSEFTSF9DT05GT1JNQU5UX0ZMT0FUUyAxCi0jICAgZWxzZQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfSEFTSF9DT05GT1JNQU5UX0ZMT0FUUyAwCi0jICAgZW5kaWYKLSNlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU0hfQ09ORk9STUFOVF9GTE9BVFMgMAotI2VuZGlmCi0KLSNpZiBORE5CT09TVF9IQVNIX0NPTkZPUk1BTlRfRkxPQVRTCi0KLS8vIFRoZSBzdGFuZGFyZCBsaWJyYXJ5IGlzIGtub3duIHRvIGJlIGNvbXBsaWFudCwgc28gZG9uJ3QgdXNlIHRoZQotLy8gY29uZmlndXJhdGlvbiBtZWNoYW5pc20uCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgbmFtZXNwYWNlIGhhc2hfZGV0YWlsIHsKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZsb2F0PgotICAgICAgICBzdHJ1Y3QgY2FsbF9sZGV4cCB7Ci0gICAgICAgICAgICB0eXBlZGVmIEZsb2F0IGZsb2F0X3R5cGU7Ci0gICAgICAgICAgICBpbmxpbmUgRmxvYXQgb3BlcmF0b3IoKShGbG9hdCB4LCBpbnQgeSkgY29uc3QgewotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6OmxkZXhwKHgsIHkpOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGbG9hdD4KLSAgICAgICAgc3RydWN0IGNhbGxfZnJleHAgewotICAgICAgICAgICAgdHlwZWRlZiBGbG9hdCBmbG9hdF90eXBlOwotICAgICAgICAgICAgaW5saW5lIEZsb2F0IG9wZXJhdG9yKCkoRmxvYXQgeCwgaW50KiB5KSBjb25zdCB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6ZnJleHAoeCwgeSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZsb2F0PgotICAgICAgICBzdHJ1Y3Qgc2VsZWN0X2hhc2hfdHlwZQotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIEZsb2F0IHR5cGU7Ci0gICAgICAgIH07Ci0gICAgfQotfQotCi0jZWxzZSAvLyBORE5CT09TVF9IQVNIX0NPTkZPUk1BTlRfRkxPQVRTID09IDAKLQotLy8gVGhlIEMrKyBzdGFuZGFyZCByZXF1aXJlcyB0aGF0IHRoZSBDIGZsb2F0IGZ1bmN0aW9ucyBhcmUgb3ZlcmxvYXJkZWQKLS8vIGZvciBmbG9hdCwgZG91YmxlIGFuZCBsb25nIGRvdWJsZSBpbiB0aGUgc3RkIG5hbWVzcGFjZSwgYnV0IHNvbWUgb2YgdGhlIG9sZGVyCi0vLyBsaWJyYXJ5IGltcGxlbWVudGF0aW9ucyBkb24ndCBzdXBwb3J0IHRoaXMuIE9uIHNvbWUgdGhhdCBkb24ndCwgdGhlIEM5OQotLy8gZmxvYXQgZnVuY3Rpb25zIChmcmV4cGYsIGZyZXhwbCwgZXRjLikgYXJlIGF2YWlsYWJsZS4KLS8vCi0vLyBUaGUgZm9sbG93aW5nIHRyaWVzIHRvIGF1dG9tYXRpY2FsbHkgZGV0ZWN0IHdoaWNoIGFyZSBhdmFpbGFibGUuCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgbmFtZXNwYWNlIGhhc2hfZGV0YWlsIHsKLQotICAgICAgICAvLyBSZXR1cm5lZCBieSBkdW1teSB2ZXJzaW9ucyBvZiB0aGUgZmxvYXQgZnVuY3Rpb25zLgotICAgIAotICAgICAgICBzdHJ1Y3Qgbm90X2ZvdW5kIHsKLSAgICAgICAgICAgIC8vIEltcGxpY2l0bHkgY29udmVydGlibGUgdG8gZmxvYXQgYW5kIGxvbmcgZG91YmxlIGluIG9yZGVyIHRvIGF2b2lkCi0gICAgICAgICAgICAvLyBhIGNvbXBpbGUgZXJyb3Igd2hlbiB0aGUgZHVtbXkgZmxvYXQgZnVuY3Rpb25zIGFyZSB1c2VkLgotCi0gICAgICAgICAgICBpbmxpbmUgb3BlcmF0b3IgZmxvYXQoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0gICAgICAgICAgICBpbmxpbmUgb3BlcmF0b3IgbG9uZyBkb3VibGUoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0gICAgICAgIH07Ci0gICAgICAgICAgCi0gICAgICAgIC8vIEEgdHlwZSBmb3IgZGV0ZWN0aW5nIHRoZSByZXR1cm4gdHlwZSBvZiBmdW5jdGlvbnMuCi0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBpczsKLSAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGlzPGZsb2F0PiB7IGNoYXIgeFsxMF07IH07Ci0gICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBpczxkb3VibGU+IHsgY2hhciB4WzIwXTsgfTsKLSAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGlzPGxvbmcgZG91YmxlPiB7IGNoYXIgeFszMF07IH07Ci0gICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBpczxuZG5ib29zdDo6aGFzaF9kZXRhaWw6Om5vdF9mb3VuZD4geyBjaGFyIHhbNDBdOyB9OwotICAgICAgICAgICAgCi0gICAgICAgIC8vIFVzZWQgdG8gY29udmVydCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBmdW5jdGlvbiB0byBhIHR5cGUgZm9yIHNpemVvZi4KLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaXM8VD4gZmxvYXRfdHlwZShUKTsKLQotICAgICAgICAvLyBjYWxsX2xkZXhwCi0gICAgICAgIC8vCi0gICAgICAgIC8vIFRoaXMgd2lsbCBnZXQgc3BlY2lhbGl6ZWQgZm9yIGZsb2F0IGFuZCBsb25nIGRvdWJsZQotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZsb2F0PiBzdHJ1Y3QgY2FsbF9sZGV4cAotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIGRvdWJsZSBmbG9hdF90eXBlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpbmxpbmUgZG91YmxlIG9wZXJhdG9yKCkoZG91YmxlIGEsIGludCBiKSBjb25zdAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGxkZXhwKGEsIGIpOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotCi0gICAgICAgIC8vIGNhbGxfZnJleHAKLSAgICAgICAgLy8KLSAgICAgICAgLy8gVGhpcyB3aWxsIGdldCBzcGVjaWFsaXplZCBmb3IgZmxvYXQgYW5kIGxvbmcgZG91YmxlCi0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZsb2F0PiBzdHJ1Y3QgY2FsbF9mcmV4cAotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIGRvdWJsZSBmbG9hdF90eXBlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpbmxpbmUgZG91YmxlIG9wZXJhdG9yKCkoZG91YmxlIGEsIGludCogYikgY29uc3QKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgICAgICAgICAgICAgIHJldHVybiBmcmV4cChhLCBiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICB9Ci19Ci0gICAgICAgICAgICAKLS8vIEEgbmFtZXNwYWNlIGZvciBkdW1teSBmdW5jdGlvbnMgdG8gZGV0ZWN0IHdoZW4gdGhlIGFjdHVhbCBmdW5jdGlvbiB3ZSB3YW50Ci0vLyBpc24ndCBhdmFpbGFibGUuIGxkZXhwbCwgbGRleHBmIGV0Yy4gbWlnaHQgYmUgYWRkZWQgdGJ5IHRoZSBtYWNyb3MgYmVsb3cuCi0vLwotLy8gQUZBSUNUIHRoZXNlIGhhdmUgdG8gYmUgb3V0c2lkZSBvZiB0aGUgYm9vc3QgbmFtZXNwYWNlLCBhcyBpZiB0aGV5J3JlIGluCi0vLyB0aGUgYm9vc3QgbmFtZXNwYWNlIHRoZXknbGwgYWx3YXlzIGJlIHByZWZlcmFibGUgdG8gYW55IG90aGVyIGZ1bmN0aW9uCi0vLyAoc2luY2UgdGhlIGFyZ3VtZW50cyBhcmUgYnVpbHQgaW4gdHlwZXMsIEFETCBjYW4ndCBiZSB1c2VkKS4KLQotbmFtZXNwYWNlIG5kbmJvb3N0X2hhc2hfZGV0ZWN0X2Zsb2F0X2Z1bmN0aW9ucyB7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIEZsb2F0PiBuZG5ib29zdDo6aGFzaF9kZXRhaWw6Om5vdF9mb3VuZCBsZGV4cChGbG9hdCwgaW50KTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgRmxvYXQ+IG5kbmJvb3N0OjpoYXNoX2RldGFpbDo6bm90X2ZvdW5kIGZyZXhwKEZsb2F0LCBpbnQqKTsgICAgCi19Ci0KLS8vIE1hY3JvcyBmb3IgZ2VuZXJhdGluZyBzcGVjaWFsaXphdGlvbnMgb2YgY2FsbF9sZGV4cCBhbmQgY2FsbF9mcmV4cC4KLS8vCi0vLyBjaGVja19jcHAgYW5kIGNoZWNrX2M5OSBjaGVjayBpZiB0aGUgQysrIG9yIEM5OSBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZS4KLS8vCi0vLyBUaGVuIHRoZSBjYWxsXyogZnVuY3Rpb25zIHNlbGVjdCBhbiBhcHByb3ByaWF0ZSBpbXBsZW1lbnRhdGlvbi4KLS8vCi0vLyBJIHVzZWQgYzk5X2Z1bmMgaW4gYSBmZXcgcGxhY2VzIGp1c3QgdG8gZ2V0IGEgdW5pcXVlIG5hbWUuCi0vLwotLy8gSW1wb3J0YW50OiB3aGVuIHVzaW5nICd1c2luZyBuYW1lc3BhY2UnIGF0IG5hbWVzcGFjZSBsZXZlbCwgaW5jbHVkZSBhcwotLy8gbGl0dGxlIGFzIHBvc3NpYmxlIGluIHRoYXQgbmFtZXNwYWNlLCBhcyBWaXN1YWwgQysrIGhhcyBhbiBvZGQgYnVnIHdoaWNoCi0vLyBjYW4gY2F1c2UgdGhlIG5hbWVzcGFjZSB0byBiZSBpbXBvcnRlZCBhdCB0aGUgZ2xvYmFsIGxldmVsLiBUaGlzIHNlZW1zIHRvCi0vLyBoYXBwZW4gbWFpbmx5IHdoZW4gdGhlcmUncyBhIHRlbXBsYXRlIGluIHRoZSBzYW1lIG5hbWVzYXBjZS4KLQotI2RlZmluZSBORE5CT09TVF9IQVNIX0NBTExfRkxPQVRfRlVOQyhjcHBfZnVuYywgYzk5X2Z1bmMsIHR5cGUxLCB0eXBlMikgICAgXAotbmFtZXNwYWNlIG5kbmJvb3N0X2hhc2hfZGV0ZWN0X2Zsb2F0X2Z1bmN0aW9ucyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlIDxjbGFzcyBGbG9hdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIG5kbmJvb3N0OjpoYXNoX2RldGFpbDo6bm90X2ZvdW5kIGM5OV9mdW5jKEZsb2F0LCB0eXBlMik7ICAgICAgICAgICAgICAgXAotfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotbmFtZXNwYWNlIG5kbmJvb3N0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIG5hbWVzcGFjZSBoYXNoX2RldGFpbCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBuYW1lc3BhY2UgYzk5X2Z1bmMjI19kZXRlY3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgdXNpbmcgbmFtZXNwYWNlIG5kbmJvb3N0X2hhc2hfZGV0ZWN0X2Zsb2F0X2Z1bmN0aW9uczsgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgc3RydWN0IGNoZWNrIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIHN0YXRpYyB0eXBlMSB4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIHN0YXRpYyB0eXBlMiB5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBjcHAgPSAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICBzaXplb2YoZmxvYXRfdHlwZShjcHBfZnVuYyh4LHkpKSkgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgPT0gc2l6ZW9mKGlzPHR5cGUxPikpOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBjOTkgPSAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICBzaXplb2YoZmxvYXRfdHlwZShjOTlfZnVuYyh4LHkpKSkgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgPT0gc2l6ZW9mKGlzPHR5cGUxPikpOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB0ZW1wbGF0ZSA8Ym9vbCB4PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdHJ1Y3QgY2FsbF9jOTlfIyNjOTlfZnVuYyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjpjYWxsXyMjY3BwX2Z1bmM8ZG91YmxlPiB7fTsgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB0ZW1wbGF0ZSA8PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdHJ1Y3QgY2FsbF9jOTlfIyNjOTlfZnVuYzx0cnVlPiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgdHlwZWRlZiB0eXBlMSBmbG9hdF90eXBlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgaW5saW5lIHR5cGUxIG9wZXJhdG9yKCkodHlwZTEgYSwgVCBiKSAgY29uc3QgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIHJldHVybiBjOTlfZnVuYyhhLCBiKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB0ZW1wbGF0ZSA8Ym9vbCB4PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdHJ1Y3QgY2FsbF9jcHBfIyNjOTlfZnVuYyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgY2FsbF9jOTlfIyNjOTlfZnVuYzwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjpjOTlfZnVuYyMjX2RldGVjdDo6Y2hlY2s6OmM5OSAgICAgXAotICAgICAgICAgICAgPiB7fTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB0ZW1wbGF0ZSA8PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdHJ1Y3QgY2FsbF9jcHBfIyNjOTlfZnVuYzx0cnVlPiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgdHlwZWRlZiB0eXBlMSBmbG9hdF90eXBlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgaW5saW5lIHR5cGUxIG9wZXJhdG9yKCkodHlwZTEgYSwgVCBiKSAgY29uc3QgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIHJldHVybiBjcHBfZnVuYyhhLCBiKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB0ZW1wbGF0ZSA8PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdHJ1Y3QgY2FsbF8jI2NwcF9mdW5jPHR5cGUxPiA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgY2FsbF9jcHBfIyNjOTlfZnVuYzwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjpjOTlfZnVuYyMjX2RldGVjdDo6Y2hlY2s6OmNwcCAgICAgXAotICAgICAgICAgICAgPiB7fTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfQotCi0jZGVmaW5lIE5ETkJPT1NUX0hBU0hfQ0FMTF9GTE9BVF9NQUNSTyhjcHBfZnVuYywgYzk5X2Z1bmMsIHR5cGUxLCB0eXBlMikgICBcCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgbmFtZXNwYWNlIGhhc2hfZGV0YWlsIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHRlbXBsYXRlIDw+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHN0cnVjdCBjYWxsXyMjY3BwX2Z1bmM8dHlwZTE+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICB0eXBlZGVmIHR5cGUxIGZsb2F0X3R5cGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBpbmxpbmUgdHlwZTEgb3BlcmF0b3IoKSh0eXBlMSB4LCB0eXBlMiB5KSBjb25zdCB7ICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgcmV0dXJuIGM5OV9mdW5jKHgsIHkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi19Ci0KLSNpZiBkZWZpbmVkKGxkZXhwZikKLU5ETkJPT1NUX0hBU0hfQ0FMTF9GTE9BVF9NQUNSTyhsZGV4cCwgbGRleHBmLCBmbG9hdCwgaW50KQotI2Vsc2UKLU5ETkJPT1NUX0hBU0hfQ0FMTF9GTE9BVF9GVU5DKGxkZXhwLCBsZGV4cGYsIGZsb2F0LCBpbnQpCi0jZW5kaWYKLQotI2lmIGRlZmluZWQobGRleHBsKQotTkROQk9PU1RfSEFTSF9DQUxMX0ZMT0FUX01BQ1JPKGxkZXhwLCBsZGV4cGwsIGxvbmcgZG91YmxlLCBpbnQpCi0jZWxzZQotTkROQk9PU1RfSEFTSF9DQUxMX0ZMT0FUX0ZVTkMobGRleHAsIGxkZXhwbCwgbG9uZyBkb3VibGUsIGludCkKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChmcmV4cGYpCi1ORE5CT09TVF9IQVNIX0NBTExfRkxPQVRfTUFDUk8oZnJleHAsIGZyZXhwZiwgZmxvYXQsIGludCopCi0jZWxzZQotTkROQk9PU1RfSEFTSF9DQUxMX0ZMT0FUX0ZVTkMoZnJleHAsIGZyZXhwZiwgZmxvYXQsIGludCopCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoZnJleHBsKQotTkROQk9PU1RfSEFTSF9DQUxMX0ZMT0FUX01BQ1JPKGZyZXhwLCBmcmV4cGwsIGxvbmcgZG91YmxlLCBpbnQqKQotI2Vsc2UKLU5ETkJPT1NUX0hBU0hfQ0FMTF9GTE9BVF9GVU5DKGZyZXhwLCBmcmV4cGwsIGxvbmcgZG91YmxlLCBpbnQqKQotI2VuZGlmCi0KLSN1bmRlZiBORE5CT09TVF9IQVNIX0NBTExfRkxPQVRfTUFDUk8KLSN1bmRlZiBORE5CT09TVF9IQVNIX0NBTExfRkxPQVRfRlVOQwotCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIG5hbWVzcGFjZSBoYXNoX2RldGFpbAotICAgIHsKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZsb2F0MSwgdHlwZW5hbWUgRmxvYXQyPgotICAgICAgICBzdHJ1Y3Qgc2VsZWN0X2hhc2hfdHlwZV9pbXBsIHsKLSAgICAgICAgICAgIHR5cGVkZWYgZG91YmxlIHR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGUgPD4KLSAgICAgICAgc3RydWN0IHNlbGVjdF9oYXNoX3R5cGVfaW1wbDxmbG9hdCwgZmxvYXQ+IHsKLSAgICAgICAgICAgIHR5cGVkZWYgZmxvYXQgdHlwZTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZSA8PgotICAgICAgICBzdHJ1Y3Qgc2VsZWN0X2hhc2hfdHlwZV9pbXBsPGxvbmcgZG91YmxlLCBsb25nIGRvdWJsZT4gewotICAgICAgICAgICAgdHlwZWRlZiBsb25nIGRvdWJsZSB0eXBlOwotICAgICAgICB9OwotCi0KLSAgICAgICAgLy8gc2VsZWN0X2hhc2hfdHlwZQotICAgICAgICAvLwotICAgICAgICAvLyBJZiB0aGVyZSBpcyBzdXBwb3J0IGZvciBhIHBhcnRpY3VsYXIgZmxvYXRpbmcgcG9pbnQgdHlwZSwgdXNlIHRoYXQKLSAgICAgICAgLy8gb3RoZXJ3aXNlIHVzZSBkb3VibGUgKHRoZXJlJ3MgYWx3YXlzIHN1cHBvcnQgZm9yIGRvdWJsZSkuCi0gICAgICAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGbG9hdD4KLSAgICAgICAgc3RydWN0IHNlbGVjdF9oYXNoX3R5cGUgOiBzZWxlY3RfaGFzaF90eXBlX2ltcGw8Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBjYWxsX2xkZXhwPEZsb2F0Pjo6ZmxvYXRfdHlwZSwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGNhbGxfZnJleHA8RmxvYXQ+OjpmbG9hdF90eXBlCi0gICAgICAgICAgICA+IHt9OyAgICAgICAgICAgIAotICAgIH0KLX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX0hBU0hfQ09ORk9STUFOVF9GTE9BVFMKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uYWwvaGFzaC9kZXRhaWwvaGFzaF9mbG9hdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uYWwvaGFzaC9kZXRhaWwvaGFzaF9mbG9hdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2ODczYWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbmFsL2hhc2gvZGV0YWlsL2hhc2hfZmxvYXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjc3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IDIwMDUtMjAxMiBEYW5pZWwgSmFtZXMuCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0ZVTkNUSU9OQUxfSEFTSF9ERVRBSUxfSEFTSF9GTE9BVF9IRUFERVIpCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OQUxfSEFTSF9ERVRBSUxfSEFTSF9GTE9BVF9IRUFERVIKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uYWwvaGFzaC9kZXRhaWwvZmxvYXRfZnVuY3Rpb25zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbmFsL2hhc2gvZGV0YWlsL2xpbWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9lbmFibGVfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2ludGVnZXIvc3RhdGljX2xvZzIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NzdGRpbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbGltaXRzLmhwcD4KLSNpbmNsdWRlIDxjc3RyaW5nPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jaWYgTkROQk9PU1RfTVNWQyA+PSAxNDAwCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo2Mjk0KSAvLyBJbGwtZGVmaW5lZCBmb3ItbG9vcDogaW5pdGlhbCBjb25kaXRpb24gZG9lcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm90IHNhdGlzZnkgdGVzdC4gTG9vcCBib2R5IG5vdCBleGVjdXRlZAotI2VuZGlmCi0jZW5kaWYKLQotLy8gQ2FuIHdlIHVzZSBmcGNsYXNzaWZ5PwotCi0vLyBTVExwb3J0Ci0jaWYgZGVmaW5lZChfX1NHSV9TVExfUE9SVCkgfHwgZGVmaW5lZChfU1RMUE9SVF9WRVJTSU9OKQotI2RlZmluZSBORE5CT09TVF9IQVNIX1VTRV9GUENMQVNTSUZZIDAKLQotLy8gR05VIGxpYnN0ZGMrKyAzCi0jZWxpZiBkZWZpbmVkKF9fR0xJQkNQUF9fKSB8fCBkZWZpbmVkKF9fR0xJQkNYWF9fKQotIyAgaWYgKGRlZmluZWQoX19VU0VfSVNPQzk5KSB8fCBkZWZpbmVkKF9HTElCQ1hYX1VTRV9DOTlfTUFUSCkpICYmIFwKLSAgICAgICEoZGVmaW5lZChtYWNpbnRvc2gpIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfQ0NfXykpCi0jICAgIGRlZmluZSBORE5CT09TVF9IQVNIX1VTRV9GUENMQVNTSUZZIDEKLSMgIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0hBU0hfVVNFX0ZQQ0xBU1NJRlkgMAotIyAgZW5kaWYKLQotLy8gRXZlcnl0aGluZyBlbHNlCi0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU0hfVVNFX0ZQQ0xBU1NJRlkgMAotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIG5hbWVzcGFjZSBoYXNoX2RldGFpbAotICAgIHsKLSAgICAgICAgaW5saW5lIHZvaWQgaGFzaF9mbG9hdF9jb21iaW5lKHN0ZDo6c2l6ZV90JiBzZWVkLCBzdGQ6OnNpemVfdCB2YWx1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgc2VlZCBePSB2YWx1ZSArIChzZWVkPDw2KSArIChzZWVkPj4yKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBCaW5hcnkgaGFzaCBmdW5jdGlvbgotICAgICAgICAvLwotICAgICAgICAvLyBPbmx5IHVzZWQgZm9yIGZsb2F0cyB3aXRoIGtub3duIGllYzU1OSBmbG9hdHMsIGFuZCBjZXJ0YWluIHZhbHVlcyBpbgotICAgICAgICAvLyBudW1lcmljX2xpbWl0cwotCi0gICAgICAgIGlubGluZSBzdGQ6OnNpemVfdCBoYXNoX2JpbmFyeShjaGFyKiBwdHIsIHN0ZDo6c2l6ZV90IGxlbmd0aCkKLSAgICAgICAgewotICAgICAgICAgICAgc3RkOjpzaXplX3Qgc2VlZCA9IDA7Ci0KLSAgICAgICAgICAgIGlmIChsZW5ndGggPj0gc2l6ZW9mKHN0ZDo6c2l6ZV90KSkgewotICAgICAgICAgICAgICAgIHNlZWQgPSAqKHN0ZDo6c2l6ZV90KikgcHRyOwotICAgICAgICAgICAgICAgIGxlbmd0aCAtPSBzaXplb2Yoc3RkOjpzaXplX3QpOwotICAgICAgICAgICAgICAgIHB0ciArPSBzaXplb2Yoc3RkOjpzaXplX3QpOwotCi0gICAgICAgICAgICAgICAgd2hpbGUobGVuZ3RoID49IHNpemVvZihzdGQ6OnNpemVfdCkpIHsKLSAgICAgICAgICAgICAgICAgICAgc3RkOjpzaXplX3QgYnVmZmVyID0gMDsKLSAgICAgICAgICAgICAgICAgICAgc3RkOjptZW1jcHkoJmJ1ZmZlciwgcHRyLCBzaXplb2Yoc3RkOjpzaXplX3QpKTsKLSAgICAgICAgICAgICAgICAgICAgaGFzaF9mbG9hdF9jb21iaW5lKHNlZWQsIGJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgICAgIGxlbmd0aCAtPSBzaXplb2Yoc3RkOjpzaXplX3QpOwotICAgICAgICAgICAgICAgICAgICBwdHIgKz0gc2l6ZW9mKHN0ZDo6c2l6ZV90KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChsZW5ndGggPiAwKSB7Ci0gICAgICAgICAgICAgICAgc3RkOjpzaXplX3QgYnVmZmVyID0gMDsKLSAgICAgICAgICAgICAgICBzdGQ6Om1lbWNweSgmYnVmZmVyLCBwdHIsIGxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgaGFzaF9mbG9hdF9jb21iaW5lKHNlZWQsIGJ1ZmZlcik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVybiBzZWVkOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZsb2F0PgotICAgICAgICBpbmxpbmUgc3RkOjpzaXplX3QgZmxvYXRfaGFzaF9pbXBsKEZsb2F0IHYsCi0gICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG5kbmJvb3N0OjplbmFibGVfaWZfYzwKLSAgICAgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPEZsb2F0Pjo6aXNfaWVjNTU5ICYmCi0gICAgICAgICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxGbG9hdD46OmRpZ2l0cyA9PSAyNCAmJgotICAgICAgICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8RmxvYXQ+OjpyYWRpeCA9PSAyICYmCi0gICAgICAgICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxGbG9hdD46Om1heF9leHBvbmVudCA9PSAxMjgsCi0gICAgICAgICAgICAgICAgaW50Pjo6dHlwZQotICAgICAgICAgICAgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaGFzaF9iaW5hcnkoKGNoYXIqKSAmdiwgNCk7Ci0gICAgICAgIH0KLQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGbG9hdD4KLSAgICAgICAgaW5saW5lIHN0ZDo6c2l6ZV90IGZsb2F0X2hhc2hfaW1wbChGbG9hdCB2LAotICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6ZW5hYmxlX2lmX2M8Ci0gICAgICAgICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxGbG9hdD46OmlzX2llYzU1OSAmJgotICAgICAgICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8RmxvYXQ+OjpkaWdpdHMgPT0gNTMgJiYKLSAgICAgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPEZsb2F0Pjo6cmFkaXggPT0gMiAmJgotICAgICAgICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8RmxvYXQ+OjptYXhfZXhwb25lbnQgPT0gMTAyNCwKLSAgICAgICAgICAgICAgICBpbnQ+Ojp0eXBlCi0gICAgICAgICAgICApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBoYXNoX2JpbmFyeSgoY2hhciopICZ2LCA4KTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGbG9hdD4KLSAgICAgICAgaW5saW5lIHN0ZDo6c2l6ZV90IGZsb2F0X2hhc2hfaW1wbChGbG9hdCB2LAotICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6ZW5hYmxlX2lmX2M8Ci0gICAgICAgICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxGbG9hdD46OmlzX2llYzU1OSAmJgotICAgICAgICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8RmxvYXQ+OjpkaWdpdHMgPT0gNjQgJiYKLSAgICAgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPEZsb2F0Pjo6cmFkaXggPT0gMiAmJgotICAgICAgICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8RmxvYXQ+OjptYXhfZXhwb25lbnQgPT0gMTYzODQsCi0gICAgICAgICAgICAgICAgaW50Pjo6dHlwZQotICAgICAgICAgICAgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaGFzaF9iaW5hcnkoKGNoYXIqKSAmdiwgMTApOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZsb2F0PgotICAgICAgICBpbmxpbmUgc3RkOjpzaXplX3QgZmxvYXRfaGFzaF9pbXBsKEZsb2F0IHYsCi0gICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG5kbmJvb3N0OjplbmFibGVfaWZfYzwKLSAgICAgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPEZsb2F0Pjo6aXNfaWVjNTU5ICYmCi0gICAgICAgICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxGbG9hdD46OmRpZ2l0cyA9PSAxMTMgJiYKLSAgICAgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPEZsb2F0Pjo6cmFkaXggPT0gMiAmJgotICAgICAgICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8RmxvYXQ+OjptYXhfZXhwb25lbnQgPT0gMTYzODQsCi0gICAgICAgICAgICAgICAgaW50Pjo6dHlwZQotICAgICAgICAgICAgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaGFzaF9iaW5hcnkoKGNoYXIqKSAmdiwgMTYpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIFBvcnRhYmxlIGhhc2ggZnVuY3Rpb24KLSAgICAgICAgLy8KLSAgICAgICAgLy8gVXNlZCBhcyBhIGZhbGxiYWNrIHdoZW4gdGhlIGJpbmFyeSBoYXNoIGZ1bmN0aW9uIGlzbid0IHN1cHBvcnRlZC4KLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgaW5saW5lIHN0ZDo6c2l6ZV90IGZsb2F0X2hhc2hfaW1wbDIoVCB2KQotICAgICAgICB7Ci0gICAgICAgICAgICBuZG5ib29zdDo6aGFzaF9kZXRhaWw6OmNhbGxfZnJleHA8VD4gZnJleHA7Ci0gICAgICAgICAgICBuZG5ib29zdDo6aGFzaF9kZXRhaWw6OmNhbGxfbGRleHA8VD4gbGRleHA7Ci0KLSAgICAgICAgICAgIGludCBleHAgPSAwOwotCi0gICAgICAgICAgICB2ID0gZnJleHAodiwgJmV4cCk7Ci0KLSAgICAgICAgICAgIC8vIEEgcG9zdGl2ZSB2YWx1ZSBpcyBlYXNpZXIgdG8gaGFzaCwgc28gY29tYmluZSB0aGUKLSAgICAgICAgICAgIC8vIHNpZ24gd2l0aCB0aGUgZXhwb25lbnQgYW5kIHVzZSB0aGUgYWJzb2x1dGUgdmFsdWUuCi0gICAgICAgICAgICBpZih2IDwgMCkgewotICAgICAgICAgICAgICAgIHYgPSAtdjsKLSAgICAgICAgICAgICAgICBleHAgKz0gbGltaXRzPFQ+OjptYXhfZXhwb25lbnQgLQotICAgICAgICAgICAgICAgICAgICBsaW1pdHM8VD46Om1pbl9leHBvbmVudDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdiA9IGxkZXhwKHYsIGxpbWl0czxzdGQ6OnNpemVfdD46OmRpZ2l0cyk7Ci0gICAgICAgICAgICBzdGQ6OnNpemVfdCBzZWVkID0gc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KHYpOwotICAgICAgICAgICAgdiAtPSBzdGF0aWNfY2FzdDxUPihzZWVkKTsKLQotICAgICAgICAgICAgLy8gY2VpbGluZyhkaWdpdHMoVCkgKiBsb2cyKHJhZGl4KFQpKS8gZGlnaXRzKHNpemVfdCkpIC0gMTsKLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGNvbnN0IGxlbmd0aAotICAgICAgICAgICAgICAgID0gKGxpbWl0czxUPjo6ZGlnaXRzICoKLSAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpzdGF0aWNfbG9nMjxsaW1pdHM8VD46OnJhZGl4Pjo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICAgICAgICsgbGltaXRzPHN0ZDo6c2l6ZV90Pjo6ZGlnaXRzIC0gMSkKLSAgICAgICAgICAgICAgICAvIGxpbWl0czxzdGQ6OnNpemVfdD46OmRpZ2l0czsKLQotICAgICAgICAgICAgZm9yKHN0ZDo6c2l6ZV90IGkgPSAwOyBpICE9IGxlbmd0aDsgKytpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHYgPSBsZGV4cCh2LCBsaW1pdHM8c3RkOjpzaXplX3Q+OjpkaWdpdHMpOwotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IHBhcnQgPSBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4odik7Ci0gICAgICAgICAgICAgICAgdiAtPSBzdGF0aWNfY2FzdDxUPihwYXJ0KTsKLSAgICAgICAgICAgICAgICBoYXNoX2Zsb2F0X2NvbWJpbmUoc2VlZCwgcGFydCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGhhc2hfZmxvYXRfY29tYmluZShzZWVkLCBleHApOwotCi0gICAgICAgICAgICByZXR1cm4gc2VlZDsKLSAgICAgICAgfQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfSEFTSF9ERVRBSUxfVEVTVF9XSVRIT1VUX0dFTkVSSUMpCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgICBpbmxpbmUgc3RkOjpzaXplX3QgZmxvYXRfaGFzaF9pbXBsKFQgdiwgLi4uKQotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgc2VsZWN0X2hhc2hfdHlwZTxUPjo6dHlwZSB0eXBlOwotICAgICAgICAgICAgcmV0dXJuIGZsb2F0X2hhc2hfaW1wbDIoc3RhdGljX2Nhc3Q8dHlwZT4odikpOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICB9Ci19Ci0KLSNpZiBORE5CT09TVF9IQVNIX1VTRV9GUENMQVNTSUZZCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvbm9fdHIxL2NtYXRoLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gICAgbmFtZXNwYWNlIGhhc2hfZGV0YWlsCi0gICAgewotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgaW5saW5lIHN0ZDo6c2l6ZV90IGZsb2F0X2hhc2hfdmFsdWUoVCB2KQotICAgICAgICB7Ci0jaWYgZGVmaW5lZChmcGNsYXNzaWZ5KQotICAgICAgICAgICAgc3dpdGNoIChmcGNsYXNzaWZ5KHYpKQotI2VsaWYgTkROQk9PU1RfSEFTSF9DT05GT1JNQU5UX0ZMT0FUUwotICAgICAgICAgICAgc3dpdGNoIChzdGQ6OmZwY2xhc3NpZnkodikpCi0jZWxzZQotICAgICAgICAgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICAgICAgICAgIHN3aXRjaCAoZnBjbGFzc2lmeSh2KSkKLSNlbmRpZgotICAgICAgICAgICAgewotICAgICAgICAgICAgY2FzZSBGUF9aRVJPOgotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgY2FzZSBGUF9JTkZJTklURToKLSAgICAgICAgICAgICAgICByZXR1cm4gKHN0ZDo6c2l6ZV90KSh2ID4gMCA/IC0xIDogLTIpOwotICAgICAgICAgICAgY2FzZSBGUF9OQU46Ci0gICAgICAgICAgICAgICAgcmV0dXJuIChzdGQ6OnNpemVfdCkoLTMpOwotICAgICAgICAgICAgY2FzZSBGUF9OT1JNQUw6Ci0gICAgICAgICAgICBjYXNlIEZQX1NVQk5PUk1BTDoKLSAgICAgICAgICAgICAgICByZXR1cm4gZmxvYXRfaGFzaF9pbXBsKHYsIDApOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBORE5CT09TVF9BU1NFUlQoMCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLSNlbHNlIC8vICFORE5CT09TVF9IQVNIX1VTRV9GUENMQVNTSUZZCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIG5hbWVzcGFjZSBoYXNoX2RldGFpbAotICAgIHsKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgIGlubGluZSBib29sIGlzX3plcm8oVCB2KQotICAgICAgICB7Ci0jaWYgIWRlZmluZWQoX19HTlVDX18pCi0gICAgICAgICAgICByZXR1cm4gdiA9PSAwOwotI2Vsc2UKLSAgICAgICAgICAgIC8vIEdDQydzICctV2Zsb2F0LWVxdWFsJyB3aWxsIGNvbXBsYWluIGFib3V0IGNvbXBhcmluZwotICAgICAgICAgICAgLy8gdiB0byAwLCBidXQgYmVjYXVzZSBpdCBkaXNhYmxlcyB3YXJuaW5ncyBmb3Igc3lzdGVtCi0gICAgICAgICAgICAvLyBoZWFkZXJzIGl0IHdvbid0IGNvbXBsYWluIGlmIHlvdSB1c2Ugc3RkOjplcXVhbF90byB0bwotICAgICAgICAgICAgLy8gY29tcGFyZSB3aXRoIDAuIFJlc3VsdGluZyBpbiB0aGlzIHNpbGxpbmVzczoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6OmVxdWFsX3RvPFQ+KCkodiwgMCk7Ci0jZW5kaWYKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgICBpbmxpbmUgc3RkOjpzaXplX3QgZmxvYXRfaGFzaF92YWx1ZShUIHYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6aGFzaF9kZXRhaWw6OmlzX3plcm8odikgPyAwIDogZmxvYXRfaGFzaF9pbXBsKHYsIDApOwotICAgICAgICB9Ci0gICAgfQotfQotCi0jZW5kaWYgLy8gTkROQk9PU1RfSEFTSF9VU0VfRlBDTEFTU0lGWQotCi0jdW5kZWYgTkROQk9PU1RfSEFTSF9VU0VfRlBDTEFTU0lGWQotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25hbC9oYXNoL2RldGFpbC9saW1pdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbmFsL2hhc2gvZGV0YWlsL2xpbWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyNWIzYmUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbmFsL2hhc2gvZGV0YWlsL2xpbWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0KLS8vIENvcHlyaWdodCAyMDA1LTIwMDkgRGFuaWVsIEphbWVzLgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gT24gc29tZSBwbGF0Zm9ybXMgc3RkOjpsaW1pdHMgZ2l2ZXMgaW5jb3JyZWN0IHZhbHVlcyBmb3IgbG9uZyBkb3VibGUuCi0vLyBUaGlzIHRyaWVzIHRvIHdvcmsgYXJvdW5kIHRoZW0uCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9GVU5DVElPTkFMX0hBU0hfREVUQUlMX0xJTUlUU19IRUFERVIpCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OQUxfSEFTSF9ERVRBSUxfTElNSVRTX0hFQURFUgotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2xpbWl0cy5ocHA+Ci0KLS8vIE9uIE9wZW5CU0QsIG51bWVyaWNfbGltaXRzIGlzIG5vdCByZWxpYWJsZSBmb3IgbG9uZyBkb3VibGVzLCBidXQKLS8vIHRoZSBtYWNyb3MgZGVmaW5lZCBpbiA8ZmxvYXQuaD4gYXJlIGFuZCBzdXBwb3J0IGxvbmcgZG91YmxlIHdoZW4gU1RMcG9ydAotLy8gZG9lc24ndC4KLQotI2lmIGRlZmluZWQoX19PcGVuQlNEX18pIHx8IGRlZmluZWQoX1NUTFBfTk9fTE9OR19ET1VCTEUpCi0jaW5jbHVkZSA8ZmxvYXQuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICBuYW1lc3BhY2UgaGFzaF9kZXRhaWwKLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgICBzdHJ1Y3QgbGltaXRzIDogc3RkOjpudW1lcmljX2xpbWl0czxUPiB7fTsKLQotI2lmIGRlZmluZWQoX19PcGVuQlNEX18pIHx8IGRlZmluZWQoX1NUTFBfTk9fTE9OR19ET1VCTEUpCi0gICAgICAgIHRlbXBsYXRlIDw+Ci0gICAgICAgIHN0cnVjdCBsaW1pdHM8bG9uZyBkb3VibGU+Ci0gICAgICAgICAgICAgOiBzdGQ6Om51bWVyaWNfbGltaXRzPGxvbmcgZG91YmxlPgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgbG9uZyBkb3VibGUgZXBzaWxvbigpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gTERCTF9FUFNJTE9OOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBzdGF0aWMgbG9uZyBkb3VibGUgKG1heCkoKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIExEQkxfTUFYOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBzdGF0aWMgbG9uZyBkb3VibGUgKG1pbikoKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIExEQkxfTUlOOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCBkaWdpdHMgPSBMREJMX01BTlRfRElHKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIG1heF9leHBvbmVudCA9IExEQkxfTUFYX0VYUCk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCBtaW5fZXhwb25lbnQgPSBMREJMX01JTl9FWFApOwotI2lmIGRlZmluZWQoX1NUTFBfTk9fTE9OR19ET1VCTEUpCi0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCByYWRpeCA9IEZMVF9SQURJWCk7Ci0jZW5kaWYKLSAgICAgICAgfTsKLSNlbmRpZiAvLyBfX09wZW5CU0RfXwotICAgIH0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uYWwvaGFzaC9leHRlbnNpb25zLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25hbC9oYXNoL2V4dGVuc2lvbnMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDc5MTM3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25hbC9oYXNoL2V4dGVuc2lvbnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzc5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IDIwMDUtMjAwOSBEYW5pZWwgSmFtZXMuCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIEJhc2VkIG9uIFBldGVyIERpbW92J3MgcHJvcG9zYWwKLS8vICBodHRwOi8vd3d3Lm9wZW4tc3RkLm9yZy9KVEMxL1NDMjIvV0cyMS9kb2NzL3BhcGVycy8yMDA1L24xNzU2LnBkZgotLy8gIGlzc3VlIDYuMTguIAotCi0vLyBUaGlzIGltcGxlbWVudHMgdGhlIGV4dGVuc2lvbnMgdG8gdGhlIHN0YW5kYXJkLgotLy8gSXQncyB1bmRvY3VtZW50ZWQsIHNvIHlvdSBzaG91bGRuJ3QgdXNlIGl0Li4uLgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfRlVOQ1RJT05BTF9IQVNIX0VYVEVOU0lPTlNfSFBQKQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTkFMX0hBU0hfRVhURU5TSU9OU19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uYWwvaGFzaC9oYXNoLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvY29udGFpbmVyX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9lbmFibGVfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL3JlcGVhdF9mcm9tX3RvLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3BhcmFtcy5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfQVJSQVkpCi0jICAgaW5jbHVkZSA8YXJyYXk+Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9UVVBMRSkKLSMgICBpbmNsdWRlIDx0dXBsZT4KLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX01FTU9SWSkKLSMgICBpbmNsdWRlIDxtZW1vcnk+Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HKQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FycmF5LmhwcD4KLSNlbmRpZgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29uc3QuaHBwPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIHRlbXBsYXRlIDxjbGFzcyBBLCBjbGFzcyBCPgotICAgIHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoc3RkOjpwYWlyPEEsIEI+IGNvbnN0Jik7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEE+Ci0gICAgc3RkOjpzaXplX3QgaGFzaF92YWx1ZShzdGQ6OnZlY3RvcjxULCBBPiBjb25zdCYpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBBPgotICAgIHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoc3RkOjpsaXN0PFQsIEE+IGNvbnN0JiB2KTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQT4KLSAgICBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlKHN0ZDo6ZGVxdWU8VCwgQT4gY29uc3QmIHYpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBLLCBjbGFzcyBDLCBjbGFzcyBBPgotICAgIHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoc3RkOjpzZXQ8SywgQywgQT4gY29uc3QmIHYpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBLLCBjbGFzcyBDLCBjbGFzcyBBPgotICAgIHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoc3RkOjptdWx0aXNldDxLLCBDLCBBPiBjb25zdCYgdik7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIEssIGNsYXNzIFQsIGNsYXNzIEMsIGNsYXNzIEE+Ci0gICAgc3RkOjpzaXplX3QgaGFzaF92YWx1ZShzdGQ6Om1hcDxLLCBULCBDLCBBPiBjb25zdCYgdik7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIEssIGNsYXNzIFQsIGNsYXNzIEMsIGNsYXNzIEE+Ci0gICAgc3RkOjpzaXplX3QgaGFzaF92YWx1ZShzdGQ6Om11bHRpbWFwPEssIFQsIEMsIEE+IGNvbnN0JiB2KTsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgIHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoc3RkOjpjb21wbGV4PFQ+IGNvbnN0Jik7Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgQSwgY2xhc3MgQj4KLSAgICBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlKHN0ZDo6cGFpcjxBLCBCPiBjb25zdCYgdikKLSAgICB7Ci0gICAgICAgIHN0ZDo6c2l6ZV90IHNlZWQgPSAwOwotICAgICAgICBuZG5ib29zdDo6aGFzaF9jb21iaW5lKHNlZWQsIHYuZmlyc3QpOwotICAgICAgICBuZG5ib29zdDo6aGFzaF9jb21iaW5lKHNlZWQsIHYuc2Vjb25kKTsKLSAgICAgICAgcmV0dXJuIHNlZWQ7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEE+Ci0gICAgc3RkOjpzaXplX3QgaGFzaF92YWx1ZShzdGQ6OnZlY3RvcjxULCBBPiBjb25zdCYgdikKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6aGFzaF9yYW5nZSh2LmJlZ2luKCksIHYuZW5kKCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBBPgotICAgIHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoc3RkOjpsaXN0PFQsIEE+IGNvbnN0JiB2KQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpoYXNoX3JhbmdlKHYuYmVnaW4oKSwgdi5lbmQoKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEE+Ci0gICAgc3RkOjpzaXplX3QgaGFzaF92YWx1ZShzdGQ6OmRlcXVlPFQsIEE+IGNvbnN0JiB2KQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpoYXNoX3JhbmdlKHYuYmVnaW4oKSwgdi5lbmQoKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIEssIGNsYXNzIEMsIGNsYXNzIEE+Ci0gICAgc3RkOjpzaXplX3QgaGFzaF92YWx1ZShzdGQ6OnNldDxLLCBDLCBBPiBjb25zdCYgdikKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6aGFzaF9yYW5nZSh2LmJlZ2luKCksIHYuZW5kKCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBLLCBjbGFzcyBDLCBjbGFzcyBBPgotICAgIHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoc3RkOjptdWx0aXNldDxLLCBDLCBBPiBjb25zdCYgdikKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6aGFzaF9yYW5nZSh2LmJlZ2luKCksIHYuZW5kKCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBLLCBjbGFzcyBULCBjbGFzcyBDLCBjbGFzcyBBPgotICAgIHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoc3RkOjptYXA8SywgVCwgQywgQT4gY29uc3QmIHYpCi0gICAgewotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6Omhhc2hfcmFuZ2Uodi5iZWdpbigpLCB2LmVuZCgpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgSywgY2xhc3MgVCwgY2xhc3MgQywgY2xhc3MgQT4KLSAgICBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlKHN0ZDo6bXVsdGltYXA8SywgVCwgQywgQT4gY29uc3QmIHYpCi0gICAgewotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6Omhhc2hfcmFuZ2Uodi5iZWdpbigpLCB2LmVuZCgpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlKHN0ZDo6Y29tcGxleDxUPiBjb25zdCYgdikKLSAgICB7Ci0gICAgICAgIG5kbmJvb3N0OjpoYXNoPFQ+IGhhc2hlcjsKLSAgICAgICAgc3RkOjpzaXplX3Qgc2VlZCA9IGhhc2hlcih2LmltYWcoKSk7Ci0gICAgICAgIHNlZWQgXj0gaGFzaGVyKHYucmVhbCgpKSArIChzZWVkPDw2KSArIChzZWVkPj4yKTsKLSAgICAgICAgcmV0dXJuIHNlZWQ7Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX0FSUkFZKQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBzdGQ6OnNpemVfdCBOPgotICAgIHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoc3RkOjphcnJheTxULCBOPiBjb25zdCYgdikKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6aGFzaF9yYW5nZSh2LmJlZ2luKCksIHYuZW5kKCkpOwotICAgIH0KLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RVUExFKQotICAgIG5hbWVzcGFjZSBoYXNoX2RldGFpbCB7Ci0gICAgICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBJLCB0eXBlbmFtZSBUPgotICAgICAgICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6OmVuYWJsZV9pZl9jPChJID09IHN0ZDo6dHVwbGVfc2l6ZTxUPjo6dmFsdWUpLAotICAgICAgICAgICAgICAgIHZvaWQ+Ojp0eXBlCi0gICAgICAgICAgICBoYXNoX2NvbWJpbmVfdHVwbGUoc3RkOjpzaXplX3QmLCBUIGNvbnN0JikKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IEksIHR5cGVuYW1lIFQ+Ci0gICAgICAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6ZW5hYmxlX2lmX2M8KEkgPCBzdGQ6OnR1cGxlX3NpemU8VD46OnZhbHVlKSwKLSAgICAgICAgICAgICAgICB2b2lkPjo6dHlwZQotICAgICAgICAgICAgaGFzaF9jb21iaW5lX3R1cGxlKHN0ZDo6c2l6ZV90JiBzZWVkLCBUIGNvbnN0JiB2KQotICAgICAgICB7Ci0gICAgICAgICAgICBuZG5ib29zdDo6aGFzaF9jb21iaW5lKHNlZWQsIHN0ZDo6Z2V0PEk+KHYpKTsKLSAgICAgICAgICAgIG5kbmJvb3N0OjpoYXNoX2RldGFpbDo6aGFzaF9jb21iaW5lX3R1cGxlPEkgKyAxPihzZWVkLCB2KTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgICAgICBpbmxpbmUgc3RkOjpzaXplX3QgaGFzaF90dXBsZShUIGNvbnN0JiB2KQotICAgICAgICB7Ci0gICAgICAgICAgICBzdGQ6OnNpemVfdCBzZWVkID0gMDsKLSAgICAgICAgICAgIG5kbmJvb3N0OjpoYXNoX2RldGFpbDo6aGFzaF9jb21iaW5lX3R1cGxlPDA+KHNlZWQsIHYpOwotICAgICAgICAgICAgcmV0dXJuIHNlZWQ7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMpCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIFQ+Ci0gICAgaW5saW5lIHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoc3RkOjp0dXBsZTxULi4uPiBjb25zdCYgdikKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6aGFzaF9kZXRhaWw6Omhhc2hfdHVwbGUodik7Ci0gICAgfQotI2Vsc2UKLQotICAgIGlubGluZSBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlKHN0ZDo6dHVwbGU8PiBjb25zdCYgdikKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6aGFzaF9kZXRhaWw6Omhhc2hfdHVwbGUodik7Ci0gICAgfQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU0hfVFVQTEVfRih6LCBuLCBfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlPCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfWih6LCBuLCB0eXBlbmFtZSBBKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlubGluZSBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlKHN0ZDo6dHVwbGU8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfWih6LCBuLCBBKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgPiBjb25zdCYgdikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpoYXNoX2RldGFpbDo6aGFzaF90dXBsZSh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfQotCi0gICAgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE8oMSwgMTEsIE5ETkJPT1NUX0hBU0hfVFVQTEVfRiwgXykKLSMgICB1bmRlZiBORE5CT09TVF9IQVNIX1RVUExFX0YKLSNlbmRpZgotCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1NNQVJUX1BUUikKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgc3RkOjpzaXplX3QgaGFzaF92YWx1ZShzdGQ6OnNoYXJlZF9wdHI8VD4gY29uc3QmIHgpIHsKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpoYXNoX3ZhbHVlKHguZ2V0KCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBEZWxldGVyPgotICAgIGlubGluZSBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlKHN0ZDo6dW5pcXVlX3B0cjxULCBEZWxldGVyPiBjb25zdCYgeCkgewotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6Omhhc2hfdmFsdWUoeC5nZXQoKSk7Ci0gICAgfQotI2VuZGlmCi0KLSAgICAvLwotICAgIC8vIGNhbGxfaGFzaF9pbXBsCi0gICAgLy8KLQotICAgIC8vIE9uIGNvbXBpbGVycyB3aXRob3V0IGZ1bmN0aW9uIHRlbXBsYXRlIG9yZGVyaW5nLCB0aGlzIGRlYWxzIHdpdGggYXJyYXlzLgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORykKLSAgICBuYW1lc3BhY2UgaGFzaF9kZXRhaWwKLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlIDxib29sIElzQXJyYXk+Ci0gICAgICAgIHN0cnVjdCBjYWxsX2hhc2hfaW1wbAotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lcgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0YXRpYyBzdGQ6OnNpemVfdCBjYWxsKFQgY29uc3QmIHYpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICB1c2luZyBuYW1lc3BhY2UgbmRuYm9vc3Q7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBoYXNoX3ZhbHVlKHYpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGUgPD4KLSAgICAgICAgc3RydWN0IGNhbGxfaGFzaF9pbXBsPHRydWU+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBBcnJheT4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lcgotICAgICAgICAgICAgewotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSAgICAgICAgICAgICAgICBzdGF0aWMgc3RkOjpzaXplX3QgY2FsbChBcnJheSBjb25zdCYgdikKLSNlbHNlCi0gICAgICAgICAgICAgICAgc3RhdGljIHN0ZDo6c2l6ZV90IGNhbGwoQXJyYXkmIHYpCi0jZW5kaWYKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCBzaXplID0gc2l6ZW9mKHYpIC8gc2l6ZW9mKCp2KTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpoYXNoX3JhbmdlKHYsIHYgKyBzaXplKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgICBzdHJ1Y3QgY2FsbF9oYXNoCi0gICAgICAgICAgICA6IHB1YmxpYyBjYWxsX2hhc2hfaW1wbDxuZG5ib29zdDo6aXNfYXJyYXk8VD46OnZhbHVlPgotICAgICAgICAgICAgICAgIDo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIGlubmVyPFQ+Ci0gICAgICAgIHsKLSAgICAgICAgfTsKLSAgICB9Ci0jZW5kaWYgLy8gTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcKLQotICAgIC8vCi0gICAgLy8gbmRuYm9vc3Q6Omhhc2gKLSAgICAvLwotCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBoYXNoCi0gICAgICAgIDogc3RkOjp1bmFyeV9mdW5jdGlvbjxULCBzdGQ6OnNpemVfdD4KLSAgICB7Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcpCi0gICAgICAgIHN0ZDo6c2l6ZV90IG9wZXJhdG9yKCkoVCBjb25zdCYgdmFsKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaGFzaF92YWx1ZSh2YWwpOwotICAgICAgICB9Ci0jZWxzZQotICAgICAgICBzdGQ6OnNpemVfdCBvcGVyYXRvcigpKFQgY29uc3QmIHZhbCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGhhc2hfZGV0YWlsOjpjYWxsX2hhc2g8VD46OmNhbGwodmFsKTsKLSAgICAgICAgfQotI2VuZGlmCi0gICAgfTsKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19ETUNfXywgPD0gMHg4NDgpCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIHVuc2lnbmVkIGludCBuPiBzdHJ1Y3QgaGFzaDxUW25dPgotICAgICAgICA6IHN0ZDo6dW5hcnlfZnVuY3Rpb248VFtuXSwgc3RkOjpzaXplX3Q+Ci0gICAgewotICAgICAgICBzdGQ6OnNpemVfdCBvcGVyYXRvcigpKGNvbnN0IFQqIHZhbCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpoYXNoX3JhbmdlKHZhbCwgdmFsK24pOwotICAgICAgICB9Ci0gICAgfTsKLSNlbmRpZgotCi0jZWxzZSAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLSAgICAvLyBPbiBjb21waWxlcnMgd2l0aG91dCBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uLCBuZG5ib29zdDo6aGFzaDxUPgotICAgIC8vIGhhcyBhbHJlYWR5IGJlZW4gZGVjbGFyZWQgdG8gZGVhbCB3aXRoIHBvaW50ZXJzLCBzbyBqdXN0Ci0gICAgLy8gbmVlZCB0byBzdXBwbHkgdGhlIG5vbi1wb2ludGVyIHZlcnNpb24gb2YgaGFzaF9pbXBsLgotCi0gICAgbmFtZXNwYWNlIGhhc2hfZGV0YWlsCi0gICAgewotICAgICAgICB0ZW1wbGF0ZSA8Ym9vbCBJc1BvaW50ZXI+Ci0gICAgICAgIHN0cnVjdCBoYXNoX2ltcGw7Ci0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0KLSAgICAgICAgdGVtcGxhdGUgPD4KLSAgICAgICAgc3RydWN0IGhhc2hfaW1wbDxmYWxzZT4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIKLSAgICAgICAgICAgICAgICA6IHN0ZDo6dW5hcnlfZnVuY3Rpb248VCwgc3RkOjpzaXplX3Q+Ci0gICAgICAgICAgICB7Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcpCi0gICAgICAgICAgICAgICAgc3RkOjpzaXplX3Qgb3BlcmF0b3IoKShUIGNvbnN0JiB2YWwpIGNvbnN0Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFzaF92YWx1ZSh2YWwpOwotICAgICAgICAgICAgICAgIH0KLSNlbHNlCi0gICAgICAgICAgICAgICAgc3RkOjpzaXplX3Qgb3BlcmF0b3IoKShUIGNvbnN0JiB2YWwpIGNvbnN0Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFzaF9kZXRhaWw6OmNhbGxfaGFzaDxUPjo6Y2FsbCh2YWwpOwotICAgICAgICAgICAgICAgIH0KLSNlbmRpZgotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLQotI2Vsc2UgLy8gVmlzdWFsIEMrKyA2LjUKLQotICAgICAgICAvLyBWaXN1YWwgQysrIDYuNSBoYXMgcHJvYmxlbXMgd2l0aCBuZXN0ZWQgbWVtYmVyIGZ1bmN0aW9ucyBhbmQKLSAgICAgICAgLy8gYXBwbHlpbmcgY29uc3QgdG8gY29uc3QgdHlwZXMgaW4gdGVtcGxhdGVzLiBTbyB3ZSBnZXQgdGhpczoKLQotICAgICAgICB0ZW1wbGF0ZSA8Ym9vbCBJc0NvbnN0PgotICAgICAgICBzdHJ1Y3QgaGFzaF9pbXBsX21zdmMKLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIKLSAgICAgICAgICAgICAgICA6IHB1YmxpYyBzdGQ6OnVuYXJ5X2Z1bmN0aW9uPFQsIHN0ZDo6c2l6ZV90PgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IG9wZXJhdG9yKCkoVCBjb25zdCYgdmFsKSBjb25zdAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hfZGV0YWlsOjpjYWxsX2hhc2g8VCBjb25zdD46OmNhbGwodmFsKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBvcGVyYXRvcigpKFQmIHZhbCkgY29uc3QKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBoYXNoX2RldGFpbDo6Y2FsbF9oYXNoPFQ+OjpjYWxsKHZhbCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZSA8PgotICAgICAgICBzdHJ1Y3QgaGFzaF9pbXBsX21zdmM8dHJ1ZT4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIKLSAgICAgICAgICAgICAgICA6IHB1YmxpYyBzdGQ6OnVuYXJ5X2Z1bmN0aW9uPFQsIHN0ZDo6c2l6ZV90PgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IG9wZXJhdG9yKCkoVCYgdmFsKSBjb25zdAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hfZGV0YWlsOjpjYWxsX2hhc2g8VD46OmNhbGwodmFsKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgIHN0cnVjdCBoYXNoX2ltcGxfbXN2YzIKLSAgICAgICAgICAgIDogcHVibGljIGhhc2hfaW1wbF9tc3ZjPG5kbmJvb3N0Ojppc19jb25zdDxUPjo6dmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgIDo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIGlubmVyPFQ+IHt9OwotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGUgPD4KLSAgICAgICAgc3RydWN0IGhhc2hfaW1wbDxmYWxzZT4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgOiBwdWJsaWMgaGFzaF9pbXBsX21zdmMyPFQ+IHt9OwotICAgICAgICB9OwotCi0jZW5kaWYgLy8gVmlzdWFsIEMrKyA2LjUKLSAgICB9Ci0jZW5kaWYgIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uYWwvaGFzaC9oYXNoLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25hbC9oYXNoL2hhc2guaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NDI4NTY3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25hbC9oYXNoL2hhc2guaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTMwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IDIwMDUtMjAwOSBEYW5pZWwgSmFtZXMuCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIEJhc2VkIG9uIFBldGVyIERpbW92J3MgcHJvcG9zYWwKLS8vICBodHRwOi8vd3d3Lm9wZW4tc3RkLm9yZy9KVEMxL1NDMjIvV0cyMS9kb2NzL3BhcGVycy8yMDA1L24xNzU2LnBkZgotLy8gIGlzc3VlIDYuMTguIAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfRlVOQ1RJT05BTF9IQVNIX0hBU0hfSFBQKQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTkFMX0hBU0hfSEFTSF9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uYWwvaGFzaC9oYXNoX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbmFsL2hhc2gvZGV0YWlsL2hhc2hfZmxvYXQuaHBwPgotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDxuZG5ib29zdC9saW1pdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2VudW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2ludGVncmFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2VuYWJsZV9pZi5ocHA+Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9pbnRlci5ocHA+Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9UWVBFSU5ERVgpCi0jaW5jbHVkZSA8dHlwZWluZGV4PgotI2VuZGlmCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA8IDMpIFwKLSAgICAmJiAhZGVmaW5lZChfX1NHSV9TVExfUE9SVCkgJiYgIWRlZmluZWQoX1NUTFBPUlRfVkVSU0lPTikKLSNkZWZpbmUgTkROQk9PU1RfSEFTSF9DSEFSX1RSQUlUUyBzdHJpbmdfY2hhcl90cmFpdHMKLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX0hBU0hfQ0hBUl9UUkFJVFMgY2hhcl90cmFpdHMKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICBuYW1lc3BhY2UgaGFzaF9kZXRhaWwKLSAgICB7Ci0gICAgICAgIHN0cnVjdCBlbmFibGVfaGFzaF92YWx1ZSB7IHR5cGVkZWYgc3RkOjpzaXplX3QgdHlwZTsgfTsKLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IGJhc2ljX251bWJlcnMge307Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgbG9uZ19udW1iZXJzOwotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IHVsb25nX251bWJlcnM7Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgZmxvYXRfbnVtYmVycyB7fTsKLQotICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgYmFzaWNfbnVtYmVyczxib29sPiA6Ci0gICAgICAgICAgICBuZG5ib29zdDo6aGFzaF9kZXRhaWw6OmVuYWJsZV9oYXNoX3ZhbHVlIHt9OwotICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgYmFzaWNfbnVtYmVyczxjaGFyPiA6Ci0gICAgICAgICAgICBuZG5ib29zdDo6aGFzaF9kZXRhaWw6OmVuYWJsZV9oYXNoX3ZhbHVlIHt9OwotICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgYmFzaWNfbnVtYmVyczx1bnNpZ25lZCBjaGFyPiA6Ci0gICAgICAgICAgICBuZG5ib29zdDo6aGFzaF9kZXRhaWw6OmVuYWJsZV9oYXNoX3ZhbHVlIHt9OwotICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgYmFzaWNfbnVtYmVyczxzaWduZWQgY2hhcj4gOgotICAgICAgICAgICAgbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjplbmFibGVfaGFzaF92YWx1ZSB7fTsKLSAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGJhc2ljX251bWJlcnM8c2hvcnQ+IDoKLSAgICAgICAgICAgIG5kbmJvb3N0OjpoYXNoX2RldGFpbDo6ZW5hYmxlX2hhc2hfdmFsdWUge307Ci0gICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBiYXNpY19udW1iZXJzPHVuc2lnbmVkIHNob3J0PiA6Ci0gICAgICAgICAgICBuZG5ib29zdDo6aGFzaF9kZXRhaWw6OmVuYWJsZV9oYXNoX3ZhbHVlIHt9OwotICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgYmFzaWNfbnVtYmVyczxpbnQ+IDoKLSAgICAgICAgICAgIG5kbmJvb3N0OjpoYXNoX2RldGFpbDo6ZW5hYmxlX2hhc2hfdmFsdWUge307Ci0gICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBiYXNpY19udW1iZXJzPHVuc2lnbmVkIGludD4gOgotICAgICAgICAgICAgbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjplbmFibGVfaGFzaF92YWx1ZSB7fTsKLSAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGJhc2ljX251bWJlcnM8bG9uZz4gOgotICAgICAgICAgICAgbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjplbmFibGVfaGFzaF92YWx1ZSB7fTsKLSAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGJhc2ljX251bWJlcnM8dW5zaWduZWQgbG9uZz4gOgotICAgICAgICAgICAgbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjplbmFibGVfaGFzaF92YWx1ZSB7fTsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lOVFJJTlNJQ19XQ0hBUl9UKQotICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgYmFzaWNfbnVtYmVyczx3Y2hhcl90PiA6Ci0gICAgICAgICAgICBuZG5ib29zdDo6aGFzaF9kZXRhaWw6OmVuYWJsZV9oYXNoX3ZhbHVlIHt9OwotI2VuZGlmCi0KLSAgICAgICAgLy8gbG9uZ19udW1iZXJzIGlzIGRlZmluZWQgbGlrZSB0aGlzIHRvIGFsbG93IGZvciBzZXBhcmF0ZQotICAgICAgICAvLyBzcGVjaWFsaXphdGlvbiBmb3IgbG9uZ19sb25nIGFuZCBpbnQxMjhfdHlwZSwgaW4gY2FzZQotICAgICAgICAvLyB0aGV5IGNvbmZsaWN0LgotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IGxvbmdfbnVtYmVyczIge307Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgdWxvbmdfbnVtYmVyczIge307Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgbG9uZ19udW1iZXJzIDogbG9uZ19udW1iZXJzMjxUPiB7fTsKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCB1bG9uZ19udW1iZXJzIDogdWxvbmdfbnVtYmVyczI8VD4ge307Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19MT05HX0xPTkcpCi0gICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBsb25nX251bWJlcnM8bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlPiA6Ci0gICAgICAgICAgICBuZG5ib29zdDo6aGFzaF9kZXRhaWw6OmVuYWJsZV9oYXNoX3ZhbHVlIHt9OwotICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgdWxvbmdfbnVtYmVyczxuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlPiA6Ci0gICAgICAgICAgICBuZG5ib29zdDo6aGFzaF9kZXRhaWw6OmVuYWJsZV9oYXNoX3ZhbHVlIHt9OwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19JTlQxMjgpCi0gICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBsb25nX251bWJlcnMyPG5kbmJvb3N0OjppbnQxMjhfdHlwZT4gOgotICAgICAgICAgICAgbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjplbmFibGVfaGFzaF92YWx1ZSB7fTsKLSAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IHVsb25nX251bWJlcnMyPG5kbmJvb3N0Ojp1aW50MTI4X3R5cGU+IDoKLSAgICAgICAgICAgIG5kbmJvb3N0OjpoYXNoX2RldGFpbDo6ZW5hYmxlX2hhc2hfdmFsdWUge307Ci0jZW5kaWYKLQotICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgZmxvYXRfbnVtYmVyczxmbG9hdD4gOgotICAgICAgICAgICAgbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjplbmFibGVfaGFzaF92YWx1ZSB7fTsKLSAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGZsb2F0X251bWJlcnM8ZG91YmxlPiA6Ci0gICAgICAgICAgICBuZG5ib29zdDo6aGFzaF9kZXRhaWw6OmVuYWJsZV9oYXNoX3ZhbHVlIHt9OwotICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgZmxvYXRfbnVtYmVyczxsb25nIGRvdWJsZT4gOgotICAgICAgICAgICAgbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjplbmFibGVfaGFzaF92YWx1ZSB7fTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICB0eXBlbmFtZSBuZG5ib29zdDo6aGFzaF9kZXRhaWw6OmJhc2ljX251bWJlcnM8VD46OnR5cGUgaGFzaF92YWx1ZShUKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICB0eXBlbmFtZSBuZG5ib29zdDo6aGFzaF9kZXRhaWw6OmxvbmdfbnVtYmVyczxUPjo6dHlwZSBoYXNoX3ZhbHVlKFQpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpoYXNoX2RldGFpbDo6dWxvbmdfbnVtYmVyczxUPjo6dHlwZSBoYXNoX3ZhbHVlKFQpOwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmVuYWJsZV9pZjxuZG5ib29zdDo6aXNfZW51bTxUPiwgc3RkOjpzaXplX3Q+Ojp0eXBlCi0gICAgICAgIGhhc2hfdmFsdWUoVCk7Ci0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0RNQ19fLCA8PSAweDg0OCkKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RkOjpzaXplX3QgaGFzaF92YWx1ZShUKiBjb25zdCYpOwotI2Vsc2UKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RkOjpzaXplX3QgaGFzaF92YWx1ZShUKik7Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HKQotICAgIHRlbXBsYXRlPCBjbGFzcyBULCB1bnNpZ25lZCBOID4KLSAgICBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlKGNvbnN0IFQgKCZ4KVtOXSk7Ci0KLSAgICB0ZW1wbGF0ZTwgY2xhc3MgVCwgdW5zaWduZWQgTiA+Ci0gICAgc3RkOjpzaXplX3QgaGFzaF92YWx1ZShUICgmeClbTl0pOwotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ2gsIGNsYXNzIEE+Ci0gICAgc3RkOjpzaXplX3QgaGFzaF92YWx1ZSgKLSAgICAgICAgc3RkOjpiYXNpY19zdHJpbmc8Q2gsIHN0ZDo6TkROQk9PU1RfSEFTSF9DSEFSX1RSQUlUUzxDaD4sIEE+IGNvbnN0Jik7Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICB0eXBlbmFtZSBuZG5ib29zdDo6aGFzaF9kZXRhaWw6OmZsb2F0X251bWJlcnM8VD46OnR5cGUgaGFzaF92YWx1ZShUKTsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9UWVBFSU5ERVgpCi0gICAgc3RkOjpzaXplX3QgaGFzaF92YWx1ZShzdGQ6OnR5cGVfaW5kZXgpOwotI2VuZGlmCi0KLSAgICAvLyBJbXBsZW1lbnRhdGlvbgotCi0gICAgbmFtZXNwYWNlIGhhc2hfZGV0YWlsCi0gICAgewotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgaW5saW5lIHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWVfc2lnbmVkKFQgdmFsKQotICAgICAgICB7Ci0gICAgICAgICAgICAgY29uc3QgaW50IHNpemVfdF9iaXRzID0gc3RkOjpudW1lcmljX2xpbWl0czxzdGQ6OnNpemVfdD46OmRpZ2l0czsKLSAgICAgICAgICAgICAvLyBjZWlsaW5nKHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmRpZ2l0cyAvIHNpemVfdF9iaXRzKSAtIDEKLSAgICAgICAgICAgICBjb25zdCBpbnQgbGVuZ3RoID0gKHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmRpZ2l0cyAtIDEpCi0gICAgICAgICAgICAgICAgIC8gc2l6ZV90X2JpdHM7Ci0KLSAgICAgICAgICAgICBzdGQ6OnNpemVfdCBzZWVkID0gMDsKLSAgICAgICAgICAgICBUIHBvc2l0aXZlID0gdmFsIDwgMCA/IC0xIC0gdmFsIDogdmFsOwotCi0gICAgICAgICAgICAgLy8gSG9wZWZ1bGx5LCB0aGlzIGxvb3AgY2FuIGJlIHVucm9sbGVkLgotICAgICAgICAgICAgIGZvcih1bnNpZ25lZCBpbnQgaSA9IGxlbmd0aCAqIHNpemVfdF9iaXRzOyBpID4gMDsgaSAtPSBzaXplX3RfYml0cykKLSAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIHNlZWQgXj0gKHN0ZDo6c2l6ZV90KSAocG9zaXRpdmUgPj4gaSkgKyAoc2VlZDw8NikgKyAoc2VlZD4+Mik7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICAgIHNlZWQgXj0gKHN0ZDo6c2l6ZV90KSB2YWwgKyAoc2VlZDw8NikgKyAoc2VlZD4+Mik7Ci0KLSAgICAgICAgICAgICByZXR1cm4gc2VlZDsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgICBpbmxpbmUgc3RkOjpzaXplX3QgaGFzaF92YWx1ZV91bnNpZ25lZChUIHZhbCkKLSAgICAgICAgewotICAgICAgICAgICAgIGNvbnN0IGludCBzaXplX3RfYml0cyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c3RkOjpzaXplX3Q+OjpkaWdpdHM7Ci0gICAgICAgICAgICAgLy8gY2VpbGluZyhzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjpkaWdpdHMgLyBzaXplX3RfYml0cykgLSAxCi0gICAgICAgICAgICAgY29uc3QgaW50IGxlbmd0aCA9IChzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjpkaWdpdHMgLSAxKQotICAgICAgICAgICAgICAgICAvIHNpemVfdF9iaXRzOwotCi0gICAgICAgICAgICAgc3RkOjpzaXplX3Qgc2VlZCA9IDA7Ci0KLSAgICAgICAgICAgICAvLyBIb3BlZnVsbHksIHRoaXMgbG9vcCBjYW4gYmUgdW5yb2xsZWQuCi0gICAgICAgICAgICAgZm9yKHVuc2lnbmVkIGludCBpID0gbGVuZ3RoICogc2l6ZV90X2JpdHM7IGkgPiAwOyBpIC09IHNpemVfdF9iaXRzKQotICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgc2VlZCBePSAoc3RkOjpzaXplX3QpICh2YWwgPj4gaSkgKyAoc2VlZDw8NikgKyAoc2VlZD4+Mik7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICAgIHNlZWQgXj0gKHN0ZDo6c2l6ZV90KSB2YWwgKyAoc2VlZDw8NikgKyAoc2VlZD4+Mik7Ci0KLSAgICAgICAgICAgICByZXR1cm4gc2VlZDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpoYXNoX2RldGFpbDo6YmFzaWNfbnVtYmVyczxUPjo6dHlwZSBoYXNoX3ZhbHVlKFQgdikKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4odik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgdHlwZW5hbWUgbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjpsb25nX251bWJlcnM8VD46OnR5cGUgaGFzaF92YWx1ZShUIHYpCi0gICAgewotICAgICAgICByZXR1cm4gaGFzaF9kZXRhaWw6Omhhc2hfdmFsdWVfc2lnbmVkKHYpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpoYXNoX2RldGFpbDo6dWxvbmdfbnVtYmVyczxUPjo6dHlwZSBoYXNoX3ZhbHVlKFQgdikKLSAgICB7Ci0gICAgICAgIHJldHVybiBoYXNoX2RldGFpbDo6aGFzaF92YWx1ZV91bnNpZ25lZCh2KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICB0eXBlbmFtZSBuZG5ib29zdDo6ZW5hYmxlX2lmPG5kbmJvb3N0Ojppc19lbnVtPFQ+LCBzdGQ6OnNpemVfdD46OnR5cGUKLSAgICAgICAgaGFzaF92YWx1ZShUIHYpCi0gICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KHYpOwotICAgIH0KLQotICAgIC8vIEltcGxlbWVudGF0aW9uIGJ5IEFsYmVydG8gQmFyYmF0aSBhbmQgRGF2ZSBIYXJyaXMuCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19ETUNfXywgPD0gMHg4NDgpCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+IHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoVCogY29uc3QmIHYpCi0jZWxzZQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlKFQqIHYpCi0jZW5kaWYKLSAgICB7Ci0jaWYgZGVmaW5lZChfX1ZNUykgJiYgX19JTklUSUFMX1BPSU5URVJfU0laRSA9PSA2NAotICAgIC8vIGZvciBzb21lIHJlYXNvbiBwdHJkaWZmX3Qgb24gT3BlblZNUyBjb21waWxlciB3aXRoCi0gICAgLy8gNjQgYml0IGlzIG5vdCA2NCBiaXQgISEhCi0gICAgICAgIHN0ZDo6c2l6ZV90IHggPSBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oCi0gICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8bG9uZyBsb25nIGludD4odikpOwotI2Vsc2UKLSAgICAgICAgc3RkOjpzaXplX3QgeCA9IHN0YXRpY19jYXN0PHN0ZDo6c2l6ZV90PigKLSAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxzdGQ6OnB0cmRpZmZfdD4odikpOwotI2VuZGlmCi0gICAgICAgIHJldHVybiB4ICsgKHggPj4gMyk7Ci0gICAgfQotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jaWYgTkROQk9PU1RfTVNWQyA8PSAxNDAwCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MjY3KSAvLyAnYXJndW1lbnQnIDogY29udmVyc2lvbiBmcm9tICdzaXplX3QnIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAndW5zaWduZWQgaW50JywgcG9zc2libGUgbG9zcyBvZiBkYXRhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBIG1pc2d1aWRlZCBhdHRlbXB0IHRvIGRldGVjdCA2NC1iaXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluY29tcGF0YWJpbGl0eS4KLSNlbmRpZgotI2VuZGlmCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICBpbmxpbmUgdm9pZCBoYXNoX2NvbWJpbmUoc3RkOjpzaXplX3QmIHNlZWQsIFQmIHYpCi0jZWxzZQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgIGlubGluZSB2b2lkIGhhc2hfY29tYmluZShzdGQ6OnNpemVfdCYgc2VlZCwgVCBjb25zdCYgdikKLSNlbmRpZgotICAgIHsKLSAgICAgICAgbmRuYm9vc3Q6Omhhc2g8VD4gaGFzaGVyOwotICAgICAgICBzZWVkIF49IGhhc2hlcih2KSArIDB4OWUzNzc5YjkgKyAoc2VlZDw8NikgKyAoc2VlZD4+Mik7Ci0gICAgfQotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0gICAgdGVtcGxhdGUgPGNsYXNzIEl0PgotICAgIGlubGluZSBzdGQ6OnNpemVfdCBoYXNoX3JhbmdlKEl0IGZpcnN0LCBJdCBsYXN0KQotICAgIHsKLSAgICAgICAgc3RkOjpzaXplX3Qgc2VlZCA9IDA7Ci0KLSAgICAgICAgZm9yKDsgZmlyc3QgIT0gbGFzdDsgKytmaXJzdCkKLSAgICAgICAgewotICAgICAgICAgICAgaGFzaF9jb21iaW5lKHNlZWQsICpmaXJzdCk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gc2VlZDsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgSXQ+Ci0gICAgaW5saW5lIHZvaWQgaGFzaF9yYW5nZShzdGQ6OnNpemVfdCYgc2VlZCwgSXQgZmlyc3QsIEl0IGxhc3QpCi0gICAgewotICAgICAgICBmb3IoOyBmaXJzdCAhPSBsYXN0OyArK2ZpcnN0KQotICAgICAgICB7Ci0gICAgICAgICAgICBoYXNoX2NvbWJpbmUoc2VlZCwgKmZpcnN0KTsKLSAgICAgICAgfQotICAgIH0KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NTEpKQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgIGlubGluZSBzdGQ6OnNpemVfdCBoYXNoX3JhbmdlKFQqIGZpcnN0LCBUKiBsYXN0KQotICAgIHsKLSAgICAgICAgc3RkOjpzaXplX3Qgc2VlZCA9IDA7Ci0KLSAgICAgICAgZm9yKDsgZmlyc3QgIT0gbGFzdDsgKytmaXJzdCkKLSAgICAgICAgewotICAgICAgICAgICAgbmRuYm9vc3Q6Omhhc2g8VD4gaGFzaGVyOwotICAgICAgICAgICAgc2VlZCBePSBoYXNoZXIoKmZpcnN0KSArIDB4OWUzNzc5YjkgKyAoc2VlZDw8NikgKyAoc2VlZD4+Mik7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gc2VlZDsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICBpbmxpbmUgdm9pZCBoYXNoX3JhbmdlKHN0ZDo6c2l6ZV90JiBzZWVkLCBUKiBmaXJzdCwgVCogbGFzdCkKLSAgICB7Ci0gICAgICAgIGZvcig7IGZpcnN0ICE9IGxhc3Q7ICsrZmlyc3QpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5kbmJvb3N0OjpoYXNoPFQ+IGhhc2hlcjsKLSAgICAgICAgICAgIHNlZWQgXj0gaGFzaGVyKCpmaXJzdCkgKyAweDllMzc3OWI5ICsgKHNlZWQ8PDYpICsgKHNlZWQ+PjIpOwotICAgICAgICB9Ci0gICAgfQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORykKLSAgICB0ZW1wbGF0ZTwgY2xhc3MgVCwgdW5zaWduZWQgTiA+Ci0gICAgaW5saW5lIHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoY29uc3QgVCAoJngpW05dKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGhhc2hfcmFuZ2UoeCwgeCArIE4pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPCBjbGFzcyBULCB1bnNpZ25lZCBOID4KLSAgICBpbmxpbmUgc3RkOjpzaXplX3QgaGFzaF92YWx1ZShUICgmeClbTl0pCi0gICAgewotICAgICAgICByZXR1cm4gaGFzaF9yYW5nZSh4LCB4ICsgTik7Ci0gICAgfQotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ2gsIGNsYXNzIEE+Ci0gICAgaW5saW5lIHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoCi0gICAgICAgIHN0ZDo6YmFzaWNfc3RyaW5nPENoLCBzdGQ6Ok5ETkJPT1NUX0hBU0hfQ0hBUl9UUkFJVFM8Q2g+LCBBPiBjb25zdCYgdikKLSAgICB7Ci0gICAgICAgIHJldHVybiBoYXNoX3JhbmdlKHYuYmVnaW4oKSwgdi5lbmQoKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgdHlwZW5hbWUgbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjpmbG9hdF9udW1iZXJzPFQ+Ojp0eXBlIGhhc2hfdmFsdWUoVCB2KQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpoYXNoX2RldGFpbDo6ZmxvYXRfaGFzaF92YWx1ZSh2KTsKLSAgICB9Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfVFlQRUlOREVYKQotICAgIGlubGluZSBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlKHN0ZDo6dHlwZV9pbmRleCB2KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHYuaGFzaF9jb2RlKCk7Ci0gICAgfQotI2VuZGlmCi0KLSAgICAvLwotICAgIC8vIG5kbmJvb3N0OjpoYXNoCi0gICAgLy8KLSAgICAKLSAgICAvLyBEZWZpbmUgdGhlIHNwZWNpYWxpemF0aW9ucyByZXF1aXJlZCBieSB0aGUgc3RhbmRhcmQuIFRoZSBnZW5lcmFsIHB1cnBvc2UKLSAgICAvLyBuZG5ib29zdDo6aGFzaCBpcyBkZWZpbmVkIGxhdGVyIGluIGV4dGVuc2lvbnMuaHBwIGlmCi0gICAgLy8gTkROQk9PU1RfSEFTSF9OT19FWFRFTlNJT05TIGlzIG5vdCBkZWZpbmVkLgotICAgIAotICAgIC8vIE5ETkJPT1NUX0hBU0hfU1BFQ0lBTElaRSAtIGRlZmluZSBhIHNwZWNpYWxpemF0aW9uIGZvciBhIHR5cGUgd2hpY2ggaXMKLSAgICAvLyBwYXNzZWQgYnkgY29weS4KLSAgICAvLwotICAgIC8vIE5ETkJPT1NUX0hBU0hfU1BFQ0lBTElaRV9SRUYgLSBkZWZpbmUgYSBzcGVjaWFsaXphdGlvbiBmb3IgYSB0eXBlIHdoaWNoIGlzCi0gICAgLy8gcGFzc2VkIGJ5IGNvcHkuCi0gICAgLy8KLSAgICAvLyBUaGVzZSBhcmUgdW5kZWZpbmVkIGxhdGVyLgotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotI2RlZmluZSBORE5CT09TVF9IQVNIX1NQRUNJQUxJWkUodHlwZSkgXAotICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNoPHR5cGU+IFwKLSAgICAgICAgIDogcHVibGljIHN0ZDo6dW5hcnlfZnVuY3Rpb248dHlwZSwgc3RkOjpzaXplX3Q+IFwKLSAgICB7IFwKLSAgICAgICAgc3RkOjpzaXplX3Qgb3BlcmF0b3IoKSh0eXBlIHYpIGNvbnN0IFwKLSAgICAgICAgeyBcCi0gICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6Omhhc2hfdmFsdWUodik7IFwKLSAgICAgICAgfSBcCi0gICAgfTsKLQotI2RlZmluZSBORE5CT09TVF9IQVNIX1NQRUNJQUxJWkVfUkVGKHR5cGUpIFwKLSAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzaDx0eXBlPiBcCi0gICAgICAgICA6IHB1YmxpYyBzdGQ6OnVuYXJ5X2Z1bmN0aW9uPHR5cGUsIHN0ZDo6c2l6ZV90PiBcCi0gICAgeyBcCi0gICAgICAgIHN0ZDo6c2l6ZV90IG9wZXJhdG9yKCkodHlwZSBjb25zdCYgdikgY29uc3QgXAotICAgICAgICB7IFwKLSAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6aGFzaF92YWx1ZSh2KTsgXAotICAgICAgICB9IFwKLSAgICB9OwotI2Vsc2UKLSNkZWZpbmUgTkROQk9PU1RfSEFTSF9TUEVDSUFMSVpFKHR5cGUpIFwKLSAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzaDx0eXBlPiBcCi0gICAgICAgICA6IHB1YmxpYyBzdGQ6OnVuYXJ5X2Z1bmN0aW9uPHR5cGUsIHN0ZDo6c2l6ZV90PiBcCi0gICAgeyBcCi0gICAgICAgIHN0ZDo6c2l6ZV90IG9wZXJhdG9yKCkodHlwZSB2KSBjb25zdCBcCi0gICAgICAgIHsgXAotICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpoYXNoX3ZhbHVlKHYpOyBcCi0gICAgICAgIH0gXAotICAgIH07IFwKLSAgICBcCi0gICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc2g8Y29uc3QgdHlwZT4gXAotICAgICAgICAgOiBwdWJsaWMgc3RkOjp1bmFyeV9mdW5jdGlvbjxjb25zdCB0eXBlLCBzdGQ6OnNpemVfdD4gXAotICAgIHsgXAotICAgICAgICBzdGQ6OnNpemVfdCBvcGVyYXRvcigpKGNvbnN0IHR5cGUgdikgY29uc3QgXAotICAgICAgICB7IFwKLSAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6aGFzaF92YWx1ZSh2KTsgXAotICAgICAgICB9IFwKLSAgICB9OwotCi0jZGVmaW5lIE5ETkJPT1NUX0hBU0hfU1BFQ0lBTElaRV9SRUYodHlwZSkgXAotICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNoPHR5cGU+IFwKLSAgICAgICAgIDogcHVibGljIHN0ZDo6dW5hcnlfZnVuY3Rpb248dHlwZSwgc3RkOjpzaXplX3Q+IFwKLSAgICB7IFwKLSAgICAgICAgc3RkOjpzaXplX3Qgb3BlcmF0b3IoKSh0eXBlIGNvbnN0JiB2KSBjb25zdCBcCi0gICAgICAgIHsgXAotICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpoYXNoX3ZhbHVlKHYpOyBcCi0gICAgICAgIH0gXAotICAgIH07IFwKLSAgICBcCi0gICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc2g8Y29uc3QgdHlwZT4gXAotICAgICAgICAgOiBwdWJsaWMgc3RkOjp1bmFyeV9mdW5jdGlvbjxjb25zdCB0eXBlLCBzdGQ6OnNpemVfdD4gXAotICAgIHsgXAotICAgICAgICBzdGQ6OnNpemVfdCBvcGVyYXRvcigpKHR5cGUgY29uc3QmIHYpIGNvbnN0IFwKLSAgICAgICAgeyBcCi0gICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6Omhhc2hfdmFsdWUodik7IFwKLSAgICAgICAgfSBcCi0gICAgfTsKLSNlbmRpZgotCi0gICAgTkROQk9PU1RfSEFTSF9TUEVDSUFMSVpFKGJvb2wpCi0gICAgTkROQk9PU1RfSEFTSF9TUEVDSUFMSVpFKGNoYXIpCi0gICAgTkROQk9PU1RfSEFTSF9TUEVDSUFMSVpFKHNpZ25lZCBjaGFyKQotICAgIE5ETkJPT1NUX0hBU0hfU1BFQ0lBTElaRSh1bnNpZ25lZCBjaGFyKQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lOVFJJTlNJQ19XQ0hBUl9UKQotICAgIE5ETkJPT1NUX0hBU0hfU1BFQ0lBTElaRSh3Y2hhcl90KQotI2VuZGlmCi0gICAgTkROQk9PU1RfSEFTSF9TUEVDSUFMSVpFKHNob3J0KQotICAgIE5ETkJPT1NUX0hBU0hfU1BFQ0lBTElaRSh1bnNpZ25lZCBzaG9ydCkKLSAgICBORE5CT09TVF9IQVNIX1NQRUNJQUxJWkUoaW50KQotICAgIE5ETkJPT1NUX0hBU0hfU1BFQ0lBTElaRSh1bnNpZ25lZCBpbnQpCi0gICAgTkROQk9PU1RfSEFTSF9TUEVDSUFMSVpFKGxvbmcpCi0gICAgTkROQk9PU1RfSEFTSF9TUEVDSUFMSVpFKHVuc2lnbmVkIGxvbmcpCi0KLSAgICBORE5CT09TVF9IQVNIX1NQRUNJQUxJWkUoZmxvYXQpCi0gICAgTkROQk9PU1RfSEFTSF9TUEVDSUFMSVpFKGRvdWJsZSkKLSAgICBORE5CT09TVF9IQVNIX1NQRUNJQUxJWkUobG9uZyBkb3VibGUpCi0KLSAgICBORE5CT09TVF9IQVNIX1NQRUNJQUxJWkVfUkVGKHN0ZDo6c3RyaW5nKQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9XU1RSSU5HKQotICAgIE5ETkJPT1NUX0hBU0hfU1BFQ0lBTElaRV9SRUYoc3RkOjp3c3RyaW5nKQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19MT05HX0xPTkcpCi0gICAgTkROQk9PU1RfSEFTSF9TUEVDSUFMSVpFKG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSkKLSAgICBORE5CT09TVF9IQVNIX1NQRUNJQUxJWkUobmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZSkKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9IQVNfSU5UMTI4KQotICAgIE5ETkJPT1NUX0hBU0hfU1BFQ0lBTElaRShuZG5ib29zdDo6aW50MTI4X3R5cGUpCi0gICAgTkROQk9PU1RfSEFTSF9TUEVDSUFMSVpFKG5kbmJvb3N0Ojp1aW50MTI4X3R5cGUpCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9UWVBFSU5ERVgpCi0gICAgTkROQk9PU1RfSEFTSF9TUEVDSUFMSVpFKHN0ZDo6dHlwZV9pbmRleCkKLSNlbmRpZgotCi0jdW5kZWYgTkROQk9PU1RfSEFTSF9TUEVDSUFMSVpFCi0jdW5kZWYgTkROQk9PU1RfSEFTSF9TUEVDSUFMSVpFX1JFRgotCi0vLyBTcGVjaWFsaXppbmcgbmRuYm9vc3Q6Omhhc2ggZm9yIHBvaW50ZXJzLgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgIHN0cnVjdCBoYXNoPFQqPgotICAgICAgICA6IHB1YmxpYyBzdGQ6OnVuYXJ5X2Z1bmN0aW9uPFQqLCBzdGQ6OnNpemVfdD4KLSAgICB7Ci0gICAgICAgIHN0ZDo6c2l6ZV90IG9wZXJhdG9yKCkoVCogdikgY29uc3QKLSAgICAgICAgewotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fU1VOUFJPX0NDLCA8PSAweDU5MCkKLSAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6aGFzaF92YWx1ZSh2KTsKLSNlbHNlCi0gICAgICAgICAgICBzdGQ6OnNpemVfdCB4ID0gc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KAotICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8c3RkOjpwdHJkaWZmX3Q+KHYpKTsKLQotICAgICAgICAgICAgcmV0dXJuIHggKyAoeCA+PiAzKTsKLSNlbmRpZgotICAgICAgICB9Ci0gICAgfTsKLQotI2Vsc2UKLQotICAgIC8vIEZvciBjb21waWxlcnMgd2l0aG91dCBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uLCB3ZSBkZWZpbmUgYQotICAgIC8vIG5kbmJvb3N0OjpoYXNoIGZvciBhbGwgcmVtYWluaW5nIHR5cGVzLiBCdXQgaGFzaF9pbXBsIGlzIG9ubHkgZGVmaW5lZAotICAgIC8vIGZvciBwb2ludGVycyBpbiAnZXh0ZW5zaW9ucy5ocHAnIC0gc28gd2hlbiBORE5CT09TVF9IQVNIX05PX0VYVEVOU0lPTlMKLSAgICAvLyBpcyBkZWZpbmVkIHRoZXJlIHdpbGwgc3RpbGwgYmUgYSBjb21waWxlIGVycm9yIGZvciB0eXBlcyBub3Qgc3VwcG9ydGVkCi0gICAgLy8gaW4gdGhlIHN0YW5kYXJkLgotCi0gICAgbmFtZXNwYWNlIGhhc2hfZGV0YWlsCi0gICAgewotICAgICAgICB0ZW1wbGF0ZSA8Ym9vbCBJc1BvaW50ZXI+Ci0gICAgICAgIHN0cnVjdCBoYXNoX2ltcGw7Ci0KLSAgICAgICAgdGVtcGxhdGUgPD4KLSAgICAgICAgc3RydWN0IGhhc2hfaW1wbDx0cnVlPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lcgotICAgICAgICAgICAgICAgIDogcHVibGljIHN0ZDo6dW5hcnlfZnVuY3Rpb248VCwgc3RkOjpzaXplX3Q+Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RkOjpzaXplX3Qgb3BlcmF0b3IoKShUIHZhbCkgY29uc3QKLSAgICAgICAgICAgICAgICB7Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19TVU5QUk9fQ0MsIDw9IDU5MCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpoYXNoX3ZhbHVlKHZhbCk7Ci0jZWxzZQotICAgICAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCB4ID0gc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KAotICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxzdGQ6OnB0cmRpZmZfdD4odmFsKSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHggKyAoeCA+PiAzKTsKLSNlbmRpZgotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBoYXNoCi0gICAgICAgIDogcHVibGljIG5kbmJvb3N0OjpoYXNoX2RldGFpbDo6aGFzaF9pbXBsPG5kbmJvb3N0Ojppc19wb2ludGVyPFQ+Ojp2YWx1ZT4KLSAgICAgICAgICAgIDo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIGlubmVyPFQ+Ci0gICAgewotICAgIH07Ci0KLSNlbmRpZgotfQotCi0jdW5kZWYgTkROQk9PU1RfSEFTSF9DSEFSX1RSQUlUUwotCi0jZW5kaWYgLy8gTkROQk9PU1RfRlVOQ1RJT05BTF9IQVNIX0hBU0hfSFBQCi0KLS8vIEluY2x1ZGUgdGhpcyBvdXRzaWRlIG9mIHRoZSBpbmNsdWRlIGd1YXJkcyBpbiBjYXNlIHRoZSBmaWxlIGlzIGluY2x1ZGVkCi0vLyB0d2ljZSAtIG9uY2Ugd2l0aCBORE5CT09TVF9IQVNIX05PX0VYVEVOU0lPTlMgZGVmaW5lZCwgYW5kIHRoZW4gd2l0aCBpdAotLy8gdW5kZWZpbmVkLgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfSEFTSF9OT19FWFRFTlNJT05TKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfRlVOQ1RJT05BTF9IQVNIX0VYVEVOU0lPTlNfSFBQKQotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uYWwvaGFzaC9leHRlbnNpb25zLmhwcD4KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbmFsL2hhc2gvaGFzaF9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbmFsL2hhc2gvaGFzaF9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMGQyNzE1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25hbC9oYXNoL2hhc2hfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IDIwMDUtMjAwOSBEYW5pZWwgSmFtZXMuCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIEJhc2VkIG9uIFBldGVyIERpbW92J3MgcHJvcG9zYWwKLS8vICBodHRwOi8vd3d3Lm9wZW4tc3RkLm9yZy9KVEMxL1NDMjIvV0cyMS9kb2NzL3BhcGVycy8yMDA1L24xNzU2LnBkZgotLy8gIGlzc3VlIDYuMTguIAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfRlVOQ1RJT05BTF9IQVNIX0ZXRF9IUFApCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OQUxfSEFTSF9GV0RfSFBQCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxjc3RkZGVmPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBoYXNoOwotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+IHZvaWQgaGFzaF9jb21iaW5lKHN0ZDo6c2l6ZV90JiBzZWVkLCBUJiB2KTsKLSNlbHNlCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+IHZvaWQgaGFzaF9jb21iaW5lKHN0ZDo6c2l6ZV90JiBzZWVkLCBUIGNvbnN0JiB2KTsKLSNlbmRpZgotCi0gICAgdGVtcGxhdGUgPGNsYXNzIEl0PiBzdGQ6OnNpemVfdCBoYXNoX3JhbmdlKEl0LCBJdCk7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIEl0PiB2b2lkIGhhc2hfcmFuZ2Uoc3RkOjpzaXplX3QmLCBJdCwgSXQpOwotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU1MSkpCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGlubGluZSBzdGQ6OnNpemVfdCBoYXNoX3JhbmdlKFQqLCBUKik7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGlubGluZSB2b2lkIGhhc2hfcmFuZ2Uoc3RkOjpzaXplX3QmLCBUKiwgVCopOwotI2VuZGlmCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbmFsL2hhc2hfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25hbC9oYXNoX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiOTNkMGIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbmFsL2hhc2hfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgMjAwNS0yMDA5IERhbmllbCBKYW1lcy4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25hbC9oYXNoL2hhc2hfZndkLmhwcD4KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9nZXRfcG9pbnRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2dldF9wb2ludGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzQ0NDNjMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2dldF9wb2ludGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiBhbmQgRGF2aWQgQWJyYWhhbXMgMjAwMi4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSNpZm5kZWYgR0VUX1BPSU5URVJfTkROQk9PU1RfRFdBMjAwMjEyMTlfSFBQCi0jZGVmaW5lIEdFVF9QT0lOVEVSX05ETkJPT1NUX0RXQTIwMDIxMjE5X0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotLy8gSW4gb3JkZXIgdG8gYXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jaWVzIHdpdGggQm9vc3QuVFIxCi0vLyB3ZSBtYWtlIHN1cmUgdGhhdCBvdXIgaW5jbHVkZSBvZiA8bWVtb3J5PiBkb2Vzbid0IHRyeSB0bwotLy8gcHVsbCBpbiB0aGUgVFIxIGhlYWRlcnM6IHRoYXQncyB3aHkgd2UgdXNlIHRoaXMgaGVhZGVyIAotLy8gcmF0aGVyIHRoYW4gaW5jbHVkaW5nIDxtZW1vcnk+IGRpcmVjdGx5OgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9ub190cjEvbWVtb3J5LmhwcD4gIC8vIHN0ZDo6YXV0b19wdHIKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgCi0KLS8vIGdldF9wb2ludGVyKHApIGV4dHJhY3RzIGEgLT4qIGNhcGFibGUgcG9pbnRlciBmcm9tIHAKLQotdGVtcGxhdGU8Y2xhc3MgVD4gVCAqIGdldF9wb2ludGVyKFQgKiBwKQotewotICAgIHJldHVybiBwOwotfQotCi0vLyBnZXRfcG9pbnRlcihzaGFyZWRfcHRyPFQ+IGNvbnN0ICYgcCkgaGFzIGJlZW4gbW92ZWQgdG8gc2hhcmVkX3B0ci5ocHAKLQotdGVtcGxhdGU8Y2xhc3MgVD4gVCAqIGdldF9wb2ludGVyKHN0ZDo6YXV0b19wdHI8VD4gY29uc3QmIHApCi17Ci0gICAgcmV0dXJuIHAuZ2V0KCk7Ci19Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfU01BUlRfUFRSICkKLQotdGVtcGxhdGU8Y2xhc3MgVD4gVCAqIGdldF9wb2ludGVyKCBzdGQ6OnVuaXF1ZV9wdHI8VD4gY29uc3QmIHAgKQotewotICAgIHJldHVybiBwLmdldCgpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBUICogZ2V0X3BvaW50ZXIoIHN0ZDo6c2hhcmVkX3B0cjxUPiBjb25zdCYgcCApCi17Ci0gICAgcmV0dXJuIHAuZ2V0KCk7Ci19Ci0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gR0VUX1BPSU5URVJfTkROQk9PU1RfRFdBMjAwMjEyMTlfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2luZGlyZWN0X3JlZmVyZW5jZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2luZGlyZWN0X3JlZmVyZW5jZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2OGIyZjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pbmRpcmVjdF9yZWZlcmVuY2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotI2lmbmRlZiBJTkRJUkVDVF9SRUZFUkVOQ0VfTkROQk9PU1RfRFdBMjAwNDE1X0hQUAotIyBkZWZpbmUgSU5ESVJFQ1RfUkVGRVJFTkNFX05ETkJPT1NUX0RXQTIwMDQxNV9IUFAKLQotLy8KLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDA0LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzCi0vLyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIHR5cGVuYW1lIGluZGlyZWN0X3JlZmVyZW5jZTxQPjo6dHlwZSBwcm92aWRlcyB0aGUgdHlwZSBvZiAqcC4KLS8vCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2l0ZXJhdG9yL2RvYy9wb2ludGVlLmh0bWwKLS8vCi0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL2lzX2luY3JlbWVudGFibGUuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl90cmFpdHMuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9tcGwvZXZhbF9pZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3BvaW50ZWUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyAKLQotbmFtZXNwYWNlIGRldGFpbAotewotICB0ZW1wbGF0ZSA8Y2xhc3MgUD4KLSAgc3RydWN0IHNtYXJ0X3B0cl9yZWZlcmVuY2UKLSAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6cG9pbnRlZTxQPjo6dHlwZSYgdHlwZTsKLSAgfTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFA+Ci1zdHJ1Y3QgaW5kaXJlY3RfcmVmZXJlbmNlCi0gIDogbXBsOjpldmFsX2lmPAotICAgICAgICBkZXRhaWw6OmlzX2luY3JlbWVudGFibGU8UD4KLSAgICAgICwgaXRlcmF0b3JfcmVmZXJlbmNlPFA+Ci0gICAgICAsIGRldGFpbDo6c21hcnRfcHRyX3JlZmVyZW5jZTxQPgotICAgID4KLXsKLX07Ci0gIAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIElORElSRUNUX1JFRkVSRU5DRV9ORE5CT09TVF9EV0EyMDA0MTVfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2ludGVnZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pbnRlZ2VyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjQ5YzQ1OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2ludGVnZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjYxICswLDAgQEAKLS8vICBib29zdCBpbnRlZ2VyLmhwcCBoZWFkZXIgZmlsZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBDb3B5cmlnaHQgQmVtYW4gRGF3ZXMgYW5kIERhcnlsZSBXYWxrZXIgMTk5OS4gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdAotLy8gIFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW50ZWdlciBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gIFJldmlzaW9uIEhpc3RvcnkKLS8vICAgMjIgU2VwIDAxICBBZGRlZCB2YWx1ZS1iYXNlZCBpbnRlZ2VyIHRlbXBsYXRlcy4gKERhcnlsZSBXYWxrZXIpCi0vLyAgIDAxIEFwciAwMSAgTW9kaWZpZWQgdG8gdXNlIG5ldyA8bmRuYm9vc3QvbGltaXRzLmhwcD4gaGVhZGVyLiAoSm9obiBNYWRkb2NrKQotLy8gICAzMCBKdWwgMDAgIEFkZCB0eXBlbmFtZSBzeW50YXggZml4IChKZW5zIE1hdXJlcikKLS8vICAgMjggQXVnIDk5ICBJbml0aWFsIHZlcnNpb24KLQotI2lmbmRlZiBORE5CT09TVF9JTlRFR0VSX0hQUAotI2RlZmluZSBORE5CT09TVF9JTlRFR0VSX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW50ZWdlcl9md2QuaHBwPiAgLy8gc2VsZiBpbmNsdWRlCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pbnRlZ2VyX3RyYWl0cy5ocHA+ICAvLyBmb3IgbmRuYm9vc3Q6Ojo6bmRuYm9vc3Q6OmludGVnZXJfdHJhaXRzCi0jaW5jbHVkZSA8bmRuYm9vc3QvbGltaXRzLmhwcD4gICAgICAgICAgLy8gZm9yIDo6c3RkOjpudW1lcmljX2xpbWl0cwotI2luY2x1ZGUgPG5kbmJvb3N0L2NzdGRpbnQuaHBwPiAgICAgICAgIC8vIGZvciBuZG5ib29zdDo6aW50NjRfdCBhbmQgTkROQk9PU1RfTk9fSU5URUdSQUxfSU5UNjRfVAotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotCi0vLwotLy8gV2Ugc2ltcGx5IGNhbm5vdCBpbmNsdWRlIHRoaXMgaGVhZGVyIG9uIGdjYyB3aXRob3V0IGdldHRpbmcgY29waW91cyB3YXJuaW5ncyBvZiB0aGUga2luZDoKLS8vCi0vLyBuZG5ib29zdC9pbnRlZ2VyLmhwcDo3NzozMDogd2FybmluZzogdXNlIG9mIEM5OSBsb25nIGxvbmcgaW50ZWdlciBjb25zdGFudAotLy8KLS8vIEFuZCB5ZXQgdGhlcmUgaXMgbm8gb3RoZXIgcmVhc29uYWJsZSBpbXBsZW1lbnRhdGlvbiwgc28gd2UgZGVjbGFyZSB0aGlzIGEgc3lzdGVtIGhlYWRlcgotLy8gdG8gc3VwcHJlc3MgdGhlc2Ugd2FybmluZ3MuCi0vLwotI2lmIGRlZmluZWQoX19HTlVDX18pICYmIChfX0dOVUNfXyA+PSA0KQotI3ByYWdtYSBHQ0Mgc3lzdGVtX2hlYWRlcgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi0gIC8vICBIZWxwZXIgdGVtcGxhdGVzICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gIC8vICBmYXN0IGludGVnZXJzIGZyb20gbGVhc3QgaW50ZWdlcnMKLSAgLy8gIGludF9mYXN0X3Q8PiB3b3JrcyBjb3JyZWN0bHkgZm9yIHVuc2lnbmVkIHRvbywgaW4gc3BpdGUgb2YgdGhlIG5hbWUuCi0gIHRlbXBsYXRlPCB0eXBlbmFtZSBMZWFzdEludCA+Ci0gIHN0cnVjdCBpbnRfZmFzdF90IAotICB7IAotICAgICB0eXBlZGVmIExlYXN0SW50IGZhc3Q7IAotICAgICB0eXBlZGVmIGZhc3QgICAgIHR5cGU7Ci0gIH07IC8vIGltcHMgbWF5IHNwZWNpYWxpemUKLQotICBuYW1lc3BhY2UgZGV0YWlsewotCi0gIC8vICBjb252ZXJ0IGNhdGVnb3J5IHRvIHR5cGUgCi0gIHRlbXBsYXRlPCBpbnQgQ2F0ZWdvcnkgPiBzdHJ1Y3QgaW50X2xlYXN0X2hlbHBlciB7fTsgLy8gZGVmYXVsdCBpcyBlbXB0eQotICB0ZW1wbGF0ZTwgaW50IENhdGVnb3J5ID4gc3RydWN0IHVpbnRfbGVhc3RfaGVscGVyIHt9OyAvLyBkZWZhdWx0IGlzIGVtcHR5Ci0KLSAgLy8gIHNwZWNpYWxpemF0b25zOiAxPWxvbmcsIDI9aW50LCAzPXNob3J0LCA0PXNpZ25lZCBjaGFyLAotICAvLyAgICAgNj11bnNpZ25lZCBsb25nLCA3PXVuc2lnbmVkIGludCwgOD11bnNpZ25lZCBzaG9ydCwgOT11bnNpZ25lZCBjaGFyCi0gIC8vICBubyBzcGVjaWFsaXphdGlvbnMgZm9yIDAgYW5kIDU6IHJlcXVlc3RzIGZvciBhIHR5cGUgPiBsb25nIGFyZSBpbiBlcnJvcgotI2lmZGVmIE5ETkJPT1NUX0hBU19MT05HX0xPTkcKLSAgdGVtcGxhdGU8PiBzdHJ1Y3QgaW50X2xlYXN0X2hlbHBlcjwxPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlIGxlYXN0OyB9OwotI2VsaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTVNfSU5UNjQpCi0gIHRlbXBsYXRlPD4gc3RydWN0IGludF9sZWFzdF9oZWxwZXI8MT4geyB0eXBlZGVmIF9faW50NjQgbGVhc3Q7IH07Ci0jZW5kaWYKLSAgdGVtcGxhdGU8PiBzdHJ1Y3QgaW50X2xlYXN0X2hlbHBlcjwyPiB7IHR5cGVkZWYgbG9uZyBsZWFzdDsgfTsKLSAgdGVtcGxhdGU8PiBzdHJ1Y3QgaW50X2xlYXN0X2hlbHBlcjwzPiB7IHR5cGVkZWYgaW50IGxlYXN0OyB9OwotICB0ZW1wbGF0ZTw+IHN0cnVjdCBpbnRfbGVhc3RfaGVscGVyPDQ+IHsgdHlwZWRlZiBzaG9ydCBsZWFzdDsgfTsKLSAgdGVtcGxhdGU8PiBzdHJ1Y3QgaW50X2xlYXN0X2hlbHBlcjw1PiB7IHR5cGVkZWYgc2lnbmVkIGNoYXIgbGVhc3Q7IH07Ci0jaWZkZWYgTkROQk9PU1RfSEFTX0xPTkdfTE9ORwotICB0ZW1wbGF0ZTw+IHN0cnVjdCB1aW50X2xlYXN0X2hlbHBlcjwxPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZSBsZWFzdDsgfTsKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX01TX0lOVDY0KQotICB0ZW1wbGF0ZTw+IHN0cnVjdCB1aW50X2xlYXN0X2hlbHBlcjwxPiB7IHR5cGVkZWYgdW5zaWduZWQgX19pbnQ2NCBsZWFzdDsgfTsKLSNlbmRpZgotICB0ZW1wbGF0ZTw+IHN0cnVjdCB1aW50X2xlYXN0X2hlbHBlcjwyPiB7IHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsZWFzdDsgfTsKLSAgdGVtcGxhdGU8PiBzdHJ1Y3QgdWludF9sZWFzdF9oZWxwZXI8Mz4geyB0eXBlZGVmIHVuc2lnbmVkIGludCBsZWFzdDsgfTsKLSAgdGVtcGxhdGU8PiBzdHJ1Y3QgdWludF9sZWFzdF9oZWxwZXI8ND4geyB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGxlYXN0OyB9OwotICB0ZW1wbGF0ZTw+IHN0cnVjdCB1aW50X2xlYXN0X2hlbHBlcjw1PiB7IHR5cGVkZWYgdW5zaWduZWQgY2hhciBsZWFzdDsgfTsKLQotICB0ZW1wbGF0ZSA8aW50IEJpdHM+Ci0gIHN0cnVjdCBleGFjdF9zaWduZWRfYmFzZV9oZWxwZXJ7fTsKLSAgdGVtcGxhdGUgPGludCBCaXRzPgotICBzdHJ1Y3QgZXhhY3RfdW5zaWduZWRfYmFzZV9oZWxwZXJ7fTsKLQotICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgZXhhY3Rfc2lnbmVkX2Jhc2VfaGVscGVyPHNpemVvZihzaWduZWQgY2hhcikqIENIQVJfQklUPiB7IHR5cGVkZWYgc2lnbmVkIGNoYXIgZXhhY3Q7IH07Ci0gIHRlbXBsYXRlIDw+IHN0cnVjdCBleGFjdF91bnNpZ25lZF9iYXNlX2hlbHBlcjxzaXplb2YodW5zaWduZWQgY2hhcikqIENIQVJfQklUPiB7IHR5cGVkZWYgdW5zaWduZWQgY2hhciBleGFjdDsgfTsKLSNpZiBVU0hSVF9NQVggIT0gVUNIQVJfTUFYCi0gIHRlbXBsYXRlIDw+IHN0cnVjdCBleGFjdF9zaWduZWRfYmFzZV9oZWxwZXI8c2l6ZW9mKHNob3J0KSogQ0hBUl9CSVQ+IHsgdHlwZWRlZiBzaG9ydCBleGFjdDsgfTsKLSAgdGVtcGxhdGUgPD4gc3RydWN0IGV4YWN0X3Vuc2lnbmVkX2Jhc2VfaGVscGVyPHNpemVvZih1bnNpZ25lZCBzaG9ydCkqIENIQVJfQklUPiB7IHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgZXhhY3Q7IH07Ci0jZW5kaWYKLSNpZiBVSU5UX01BWCAhPSBVU0hSVF9NQVgKLSAgdGVtcGxhdGUgPD4gc3RydWN0IGV4YWN0X3NpZ25lZF9iYXNlX2hlbHBlcjxzaXplb2YoaW50KSogQ0hBUl9CSVQ+IHsgdHlwZWRlZiBpbnQgZXhhY3Q7IH07Ci0gIHRlbXBsYXRlIDw+IHN0cnVjdCBleGFjdF91bnNpZ25lZF9iYXNlX2hlbHBlcjxzaXplb2YodW5zaWduZWQgaW50KSogQ0hBUl9CSVQ+IHsgdHlwZWRlZiB1bnNpZ25lZCBpbnQgZXhhY3Q7IH07Ci0jZW5kaWYKLSNpZiBVTE9OR19NQVggIT0gVUlOVF9NQVgKLSAgdGVtcGxhdGUgPD4gc3RydWN0IGV4YWN0X3NpZ25lZF9iYXNlX2hlbHBlcjxzaXplb2YobG9uZykqIENIQVJfQklUPiB7IHR5cGVkZWYgbG9uZyBleGFjdDsgfTsKLSAgdGVtcGxhdGUgPD4gc3RydWN0IGV4YWN0X3Vuc2lnbmVkX2Jhc2VfaGVscGVyPHNpemVvZih1bnNpZ25lZCBsb25nKSogQ0hBUl9CSVQ+IHsgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGV4YWN0OyB9OwotI2VuZGlmCi0jaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKSAmJlwKLSAgICgoZGVmaW5lZChVTExPTkdfTUFYKSAmJiAoVUxMT05HX01BWCAhPSBVTE9OR19NQVgpKSB8fFwKLSAgICAoZGVmaW5lZChVTE9OR19MT05HX01BWCkgJiYgKFVMT05HX0xPTkdfTUFYICE9IFVMT05HX01BWCkpIHx8XAotICAgIChkZWZpbmVkKFVMT05HTE9OR19NQVgpICYmIChVTE9OR0xPTkdfTUFYICE9IFVMT05HX01BWCkpIHx8XAotICAgIChkZWZpbmVkKF9VTExPTkdfTUFYKSAmJiAoX1VMTE9OR19NQVggIT0gVUxPTkdfTUFYKSkpCi0gIHRlbXBsYXRlIDw+IHN0cnVjdCBleGFjdF9zaWduZWRfYmFzZV9oZWxwZXI8c2l6ZW9mKG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSkqIENIQVJfQklUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlIGV4YWN0OyB9OwotICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgZXhhY3RfdW5zaWduZWRfYmFzZV9oZWxwZXI8c2l6ZW9mKG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUpKiBDSEFSX0JJVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUgZXhhY3Q7IH07Ci0jZW5kaWYKLQotCi0gIH0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0gIC8vICBpbnRlZ2VyIHRlbXBsYXRlcyBzcGVjaWZ5aW5nIG51bWJlciBvZiBiaXRzICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gIC8vICBzaWduZWQKLSAgdGVtcGxhdGU8IGludCBCaXRzID4gICAvLyBiaXRzIChpbmNsdWRpbmcgc2lnbikgcmVxdWlyZWQKLSAgc3RydWN0IGludF90IDogcHVibGljIGRldGFpbDo6ZXhhY3Rfc2lnbmVkX2Jhc2VfaGVscGVyPEJpdHM+Ci0gIHsKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfTVNHKEJpdHMgPD0gKGludCkoc2l6ZW9mKG5kbmJvb3N0OjppbnRtYXhfdCkgKiBDSEFSX0JJVCksCi0gICAgICAgICAiTm8gc3VpdGFibGUgc2lnbmVkIGludGVnZXIgdHlwZSB3aXRoIHRoZSByZXF1ZXN0ZWQgbnVtYmVyIG9mIGJpdHMgaXMgYXZhaWxhYmxlLiIpOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmludF9sZWFzdF9oZWxwZXIKLSAgICAgICAgPAotI2lmZGVmIE5ETkJPT1NUX0hBU19MT05HX0xPTkcKLSAgICAgICAgICAoQml0cyA8PSAoaW50KShzaXplb2YobmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlKSAqIENIQVJfQklUKSkgKwotI2Vsc2UKLSAgICAgICAgICAgMSArCi0jZW5kaWYKLSAgICAgICAgICAoQml0cy0xIDw9IDo6c3RkOjpudW1lcmljX2xpbWl0czxsb25nPjo6ZGlnaXRzKSArCi0gICAgICAgICAgKEJpdHMtMSA8PSA6OnN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6ZGlnaXRzKSArCi0gICAgICAgICAgKEJpdHMtMSA8PSA6OnN0ZDo6bnVtZXJpY19saW1pdHM8c2hvcnQ+OjpkaWdpdHMpICsKLSAgICAgICAgICAoQml0cy0xIDw9IDo6c3RkOjpudW1lcmljX2xpbWl0czxzaWduZWQgY2hhcj46OmRpZ2l0cykKLSAgICAgICAgPjo6bGVhc3QgIGxlYXN0OwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpbnRfZmFzdF90PGxlYXN0Pjo6dHlwZSAgZmFzdDsKLSAgfTsKLQotICAvLyAgdW5zaWduZWQKLSAgdGVtcGxhdGU8IGludCBCaXRzID4gICAvLyBiaXRzIHJlcXVpcmVkCi0gIHN0cnVjdCB1aW50X3QgOiBwdWJsaWMgZGV0YWlsOjpleGFjdF91bnNpZ25lZF9iYXNlX2hlbHBlcjxCaXRzPgotICB7Ci0gICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfTVNHKEJpdHMgPD0gKGludCkoc2l6ZW9mKG5kbmJvb3N0Ojp1aW50bWF4X3QpICogQ0hBUl9CSVQpLAotICAgICAgICAgIk5vIHN1aXRhYmxlIHVuc2lnbmVkIGludGVnZXIgdHlwZSB3aXRoIHRoZSByZXF1ZXN0ZWQgbnVtYmVyIG9mIGJpdHMgaXMgYXZhaWxhYmxlLiIpOwotI2lmIChkZWZpbmVkKF9fQk9STEFORENfXykgfHwgZGVmaW5lZChfX0NPREVHRUFSX18pKSAmJiBkZWZpbmVkKE5ETkJPT1NUX05PX0lOVEVHUkFMX0lOVDY0X1QpCi0gICAgIC8vIEl0J3MgcmVhbGx5IG5vdCBjbGVhciB3aHkgdGhpcyB3b3JrYXJvdW5kIHNob3VsZCBiZSBuZWVkZWQuLi4gc2hydWcgSSBndWVzcyEgIEpNCi0gICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHMgPSAKLSAgICAgICAgICAgNiArCi0gICAgICAgICAgKEJpdHMgPD0gOjpzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGxvbmc+OjpkaWdpdHMpICsKLSAgICAgICAgICAoQml0cyA8PSA6OnN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgaW50Pjo6ZGlnaXRzKSArCi0gICAgICAgICAgKEJpdHMgPD0gOjpzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIHNob3J0Pjo6ZGlnaXRzKSArCi0gICAgICAgICAgKEJpdHMgPD0gOjpzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGNoYXI+OjpkaWdpdHMpKTsKLSAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmludF9sZWFzdF9oZWxwZXI8IDo6bmRuYm9vc3Q6OnVpbnRfdDxCaXRzPjo6cz46OmxlYXN0IGxlYXN0OwotI2Vsc2UKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjp1aW50X2xlYXN0X2hlbHBlcgotICAgICAgICA8IAotI2lmZGVmIE5ETkJPT1NUX0hBU19MT05HX0xPTkcKLSAgICAgICAgICAoQml0cyA8PSAoaW50KShzaXplb2YobmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlKSAqIENIQVJfQklUKSkgKwotI2Vsc2UKLSAgICAgICAgICAgMSArCi0jZW5kaWYKLSAgICAgICAgICAoQml0cyA8PSA6OnN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgbG9uZz46OmRpZ2l0cykgKwotICAgICAgICAgIChCaXRzIDw9IDo6c3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZCBpbnQ+OjpkaWdpdHMpICsKLSAgICAgICAgICAoQml0cyA8PSA6OnN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgc2hvcnQ+OjpkaWdpdHMpICsKLSAgICAgICAgICAoQml0cyA8PSA6OnN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgY2hhcj46OmRpZ2l0cykKLSAgICAgICAgPjo6bGVhc3QgIGxlYXN0OwotI2VuZGlmCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGludF9mYXN0X3Q8bGVhc3Q+Ojp0eXBlICBmYXN0OwotICAgICAgLy8gaW50X2Zhc3RfdDw+IHdvcmtzIGNvcnJlY3RseSBmb3IgdW5zaWduZWQgdG9vLCBpbiBzcGl0ZSBvZiB0aGUgbmFtZS4KLSAgfTsKLQotICAvLyAgaW50ZWdlciB0ZW1wbGF0ZXMgc3BlY2lmeWluZyBleHRyZW1lIHZhbHVlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAvLyAgc2lnbmVkCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU5URUdSQUxfSU5UNjRfVCkgJiYgZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKQotICB0ZW1wbGF0ZTwgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlIE1heFZhbHVlID4gICAvLyBtYXhpbXVtIHZhbHVlIHRvIHJlcXVpcmUgc3VwcG9ydAotI2Vsc2UKLSAgdGVtcGxhdGU8IGxvbmcgTWF4VmFsdWUgPiAgIC8vIG1heGltdW0gdmFsdWUgdG8gcmVxdWlyZSBzdXBwb3J0Ci0jZW5kaWYKLSAgc3RydWN0IGludF9tYXhfdmFsdWVfdCAKLSAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmludF9sZWFzdF9oZWxwZXIKLSAgICAgICAgPAotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lOVEVHUkFMX0lOVDY0X1QpICYmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykKLSAgICAgICAgICAoTWF4VmFsdWUgPD0gOjpuZG5ib29zdDo6aW50ZWdlcl90cmFpdHM8bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlPjo6Y29uc3RfbWF4KSArCi0jZWxzZQotICAgICAgICAgICAxICsKLSNlbmRpZgotICAgICAgICAgIChNYXhWYWx1ZSA8PSA6Om5kbmJvb3N0OjppbnRlZ2VyX3RyYWl0czxsb25nPjo6Y29uc3RfbWF4KSArCi0gICAgICAgICAgKE1heFZhbHVlIDw9IDo6bmRuYm9vc3Q6OmludGVnZXJfdHJhaXRzPGludD46OmNvbnN0X21heCkgKwotICAgICAgICAgIChNYXhWYWx1ZSA8PSA6Om5kbmJvb3N0OjppbnRlZ2VyX3RyYWl0czxzaG9ydD46OmNvbnN0X21heCkgKwotICAgICAgICAgIChNYXhWYWx1ZSA8PSA6Om5kbmJvb3N0OjppbnRlZ2VyX3RyYWl0czxzaWduZWQgY2hhcj46OmNvbnN0X21heCkKLSAgICAgICAgPjo6bGVhc3QgIGxlYXN0OwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpbnRfZmFzdF90PGxlYXN0Pjo6dHlwZSAgZmFzdDsKLSAgfTsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lOVEVHUkFMX0lOVDY0X1QpICYmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykKLSAgdGVtcGxhdGU8IG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSBNaW5WYWx1ZSA+ICAgLy8gbWluaW11bSB2YWx1ZSB0byByZXF1aXJlIHN1cHBvcnQKLSNlbHNlCi0gIHRlbXBsYXRlPCBsb25nIE1pblZhbHVlID4gICAvLyBtaW5pbXVtIHZhbHVlIHRvIHJlcXVpcmUgc3VwcG9ydAotI2VuZGlmCi0gIHN0cnVjdCBpbnRfbWluX3ZhbHVlX3QgCi0gIHsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjppbnRfbGVhc3RfaGVscGVyCi0gICAgICAgIDwKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19JTlRFR1JBTF9JTlQ2NF9UKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi0gICAgICAgICAgKE1pblZhbHVlID49IDo6bmRuYm9vc3Q6OmludGVnZXJfdHJhaXRzPG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZT46OmNvbnN0X21pbikgKwotI2Vsc2UKLSAgICAgICAgICAgMSArCi0jZW5kaWYKLSAgICAgICAgICAoTWluVmFsdWUgPj0gOjpuZG5ib29zdDo6aW50ZWdlcl90cmFpdHM8bG9uZz46OmNvbnN0X21pbikgKwotICAgICAgICAgIChNaW5WYWx1ZSA+PSA6Om5kbmJvb3N0OjppbnRlZ2VyX3RyYWl0czxpbnQ+Ojpjb25zdF9taW4pICsKLSAgICAgICAgICAoTWluVmFsdWUgPj0gOjpuZG5ib29zdDo6aW50ZWdlcl90cmFpdHM8c2hvcnQ+Ojpjb25zdF9taW4pICsKLSAgICAgICAgICAoTWluVmFsdWUgPj0gOjpuZG5ib29zdDo6aW50ZWdlcl90cmFpdHM8c2lnbmVkIGNoYXI+Ojpjb25zdF9taW4pCi0gICAgICAgID46OmxlYXN0ICBsZWFzdDsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaW50X2Zhc3RfdDxsZWFzdD46OnR5cGUgIGZhc3Q7Ci0gIH07Ci0KLSAgLy8gIHVuc2lnbmVkCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU5URUdSQUxfSU5UNjRfVCkgJiYgZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKQotICB0ZW1wbGF0ZTwgbmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZSBNYXhWYWx1ZSA+ICAgLy8gbWluaW11bSB2YWx1ZSB0byByZXF1aXJlIHN1cHBvcnQKLSNlbHNlCi0gIHRlbXBsYXRlPCB1bnNpZ25lZCBsb25nIE1heFZhbHVlID4gICAvLyBtaW5pbXVtIHZhbHVlIHRvIHJlcXVpcmUgc3VwcG9ydAotI2VuZGlmCi0gIHN0cnVjdCB1aW50X3ZhbHVlX3QgCi0gIHsKLSNpZiAoZGVmaW5lZChfX0JPUkxBTkRDX18pIHx8IGRlZmluZWQoX19DT0RFR0VBUl9fKSkKLSAgICAgLy8gSXQncyByZWFsbHkgbm90IGNsZWFyIHdoeSB0aGlzIHdvcmthcm91bmQgc2hvdWxkIGJlIG5lZWRlZC4uLiBzaHJ1ZyBJIGd1ZXNzISAgSk0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0lOVEVHUkFMX0lOVDY0X1QpCi0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsIHdoaWNoID0gCi0gICAgICAgICAgIDEgKwotICAgICAgICAgIChNYXhWYWx1ZSA8PSA6Om5kbmJvb3N0OjppbnRlZ2VyX3RyYWl0czx1bnNpZ25lZCBsb25nPjo6Y29uc3RfbWF4KSArCi0gICAgICAgICAgKE1heFZhbHVlIDw9IDo6bmRuYm9vc3Q6OmludGVnZXJfdHJhaXRzPHVuc2lnbmVkIGludD46OmNvbnN0X21heCkgKwotICAgICAgICAgIChNYXhWYWx1ZSA8PSA6Om5kbmJvb3N0OjppbnRlZ2VyX3RyYWl0czx1bnNpZ25lZCBzaG9ydD46OmNvbnN0X21heCkgKwotICAgICAgICAgIChNYXhWYWx1ZSA8PSA6Om5kbmJvb3N0OjppbnRlZ2VyX3RyYWl0czx1bnNpZ25lZCBjaGFyPjo6Y29uc3RfbWF4KSk7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6aW50X2xlYXN0X2hlbHBlcjwgOjpuZG5ib29zdDo6dWludF92YWx1ZV90PE1heFZhbHVlPjo6d2hpY2g+OjpsZWFzdCBsZWFzdDsKLSNlbHNlIC8vIE5ETkJPT1NUX05PX0lOVEVHUkFMX0lOVDY0X1QKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCwgd2hpY2ggPSAKLSAgICAgICAgICAgMSArCi0gICAgICAgICAgKE1heFZhbHVlIDw9IDo6bmRuYm9vc3Q6OmludGVnZXJfdHJhaXRzPG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGU+Ojpjb25zdF9tYXgpICsKLSAgICAgICAgICAoTWF4VmFsdWUgPD0gOjpuZG5ib29zdDo6aW50ZWdlcl90cmFpdHM8dW5zaWduZWQgbG9uZz46OmNvbnN0X21heCkgKwotICAgICAgICAgIChNYXhWYWx1ZSA8PSA6Om5kbmJvb3N0OjppbnRlZ2VyX3RyYWl0czx1bnNpZ25lZCBpbnQ+Ojpjb25zdF9tYXgpICsKLSAgICAgICAgICAoTWF4VmFsdWUgPD0gOjpuZG5ib29zdDo6aW50ZWdlcl90cmFpdHM8dW5zaWduZWQgc2hvcnQ+Ojpjb25zdF9tYXgpICsKLSAgICAgICAgICAoTWF4VmFsdWUgPD0gOjpuZG5ib29zdDo6aW50ZWdlcl90cmFpdHM8dW5zaWduZWQgY2hhcj46OmNvbnN0X21heCkpOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnVpbnRfbGVhc3RfaGVscGVyPCA6Om5kbmJvb3N0Ojp1aW50X3ZhbHVlX3Q8TWF4VmFsdWU+Ojp3aGljaD46OmxlYXN0IGxlYXN0OwotI2VuZGlmIC8vIE5ETkJPT1NUX05PX0lOVEVHUkFMX0lOVDY0X1QKLSNlbHNlCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6dWludF9sZWFzdF9oZWxwZXIKLSAgICAgICAgPCAKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19JTlRFR1JBTF9JTlQ2NF9UKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi0gICAgICAgICAgKE1heFZhbHVlIDw9IDo6bmRuYm9vc3Q6OmludGVnZXJfdHJhaXRzPG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGU+Ojpjb25zdF9tYXgpICsKLSNlbHNlCi0gICAgICAgICAgIDEgKwotI2VuZGlmCi0gICAgICAgICAgKE1heFZhbHVlIDw9IDo6bmRuYm9vc3Q6OmludGVnZXJfdHJhaXRzPHVuc2lnbmVkIGxvbmc+Ojpjb25zdF9tYXgpICsKLSAgICAgICAgICAoTWF4VmFsdWUgPD0gOjpuZG5ib29zdDo6aW50ZWdlcl90cmFpdHM8dW5zaWduZWQgaW50Pjo6Y29uc3RfbWF4KSArCi0gICAgICAgICAgKE1heFZhbHVlIDw9IDo6bmRuYm9vc3Q6OmludGVnZXJfdHJhaXRzPHVuc2lnbmVkIHNob3J0Pjo6Y29uc3RfbWF4KSArCi0gICAgICAgICAgKE1heFZhbHVlIDw9IDo6bmRuYm9vc3Q6OmludGVnZXJfdHJhaXRzPHVuc2lnbmVkIGNoYXI+Ojpjb25zdF9tYXgpCi0gICAgICAgID46OmxlYXN0ICBsZWFzdDsKLSNlbmRpZgotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpbnRfZmFzdF90PGxlYXN0Pjo6dHlwZSAgZmFzdDsKLSAgfTsKLQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX0lOVEVHRVJfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2ludGVnZXIvaW50ZWdlcl9tYXNrLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW50ZWdlci9pbnRlZ2VyX21hc2suaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTgzZWE2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW50ZWdlci9pbnRlZ2VyX21hc2suaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTI2ICswLDAgQEAKLS8vICBCb29zdCBpbnRlZ2VyL2ludGVnZXJfbWFzay5ocHAgaGVhZGVyIGZpbGUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICAoQykgQ29weXJpZ2h0IERhcnlsZSBXYWxrZXIgMjAwMS4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgdXBkYXRlcywgZG9jdW1lbnRhdGlvbiwgYW5kIHJldmlzaW9uIGhpc3RvcnkuIAotCi0jaWZuZGVmIE5ETkJPT1NUX0lOVEVHRVJfSU5URUdFUl9NQVNLX0hQUAotI2RlZmluZSBORE5CT09TVF9JTlRFR0VSX0lOVEVHRVJfTUFTS19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2ludGVnZXJfZndkLmhwcD4gIC8vIHNlbGYgaW5jbHVkZQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gICAvLyBmb3IgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW50ZWdlci5ocHA+ICAvLyBmb3IgbmRuYm9vc3Q6OnVpbnRfdAotCi0jaW5jbHVkZSA8Y2xpbWl0cz4gIC8vIGZvciBVQ0hBUl9NQVgsIGV0Yy4KLSNpbmNsdWRlIDxjc3RkZGVmPiAgLy8gZm9yIHN0ZDo6c2l6ZV90Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9saW1pdHMuaHBwPiAgLy8gZm9yIHN0ZDo6bnVtZXJpY19saW1pdHMKLQotLy8KLS8vIFdlIHNpbXBseSBjYW5ub3QgaW5jbHVkZSB0aGlzIGhlYWRlciBvbiBnY2Mgd2l0aG91dCBnZXR0aW5nIGNvcGlvdXMgd2FybmluZ3Mgb2YgdGhlIGtpbmQ6Ci0vLwotLy8gbmRuYm9vc3QvaW50ZWdlci9pbnRlZ2VyX21hc2suaHBwOjkzOjM1OiB3YXJuaW5nOiB1c2Ugb2YgQzk5IGxvbmcgbG9uZyBpbnRlZ2VyIGNvbnN0YW50Ci0vLwotLy8gQW5kIHlldCB0aGVyZSBpcyBubyBvdGhlciByZWFzb25hYmxlIGltcGxlbWVudGF0aW9uLCBzbyB3ZSBkZWNsYXJlIHRoaXMgYSBzeXN0ZW0gaGVhZGVyCi0vLyB0byBzdXBwcmVzcyB0aGVzZSB3YXJuaW5ncy4KLS8vCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fID49IDQpCi0jcHJhZ21hIEdDQyBzeXN0ZW1faGVhZGVyCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLQotLy8gIFNwZWNpZmllZCBzaW5nbGUtYml0IG1hc2sgY2xhc3MgZGVjbGFyYXRpb24gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLS8vICAoTG93ZXN0IGJpdCBzdGFydHMgY291bnRpbmcgYXQgMC4pCi0KLXRlbXBsYXRlIDwgc3RkOjpzaXplX3QgQml0ID4KLXN0cnVjdCBoaWdoX2JpdF9tYXNrX3QKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHVpbnRfdDwoQml0ICsgMSk+OjpsZWFzdCAgbGVhc3Q7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB1aW50X3Q8KEJpdCArIDEpPjo6ZmFzdCAgIGZhc3Q7Ci0KLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoIGxlYXN0LCBoaWdoX2JpdCA9IChsZWFzdCggMXUgKSA8PCBCaXQpICk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKCBmYXN0LCBoaWdoX2JpdF9mYXN0ID0gKGZhc3QoIDF1ICkgPDwgQml0KSApOwotCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKCBzdGQ6OnNpemVfdCwgYml0X3Bvc2l0aW9uID0gQml0ICk7Ci0KLX07ICAvLyBuZG5ib29zdDo6aGlnaF9iaXRfbWFza190Ci0KLQotLy8gIFNwZWNpZmllZCBiaXQtYmxvY2sgbWFzayBjbGFzcyBkZWNsYXJhdGlvbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLS8vICBNYWtlcyBtYXNrcyBmb3IgdGhlIGxvd2VzdCBOIGJpdHMKLS8vICAoU3BlY2lhbGl6YXRpb25zIGFyZSBuZWVkZWQgd2hlbiBOIGZpbGxzIHVwIGEgdHlwZS4pCi0KLXRlbXBsYXRlIDwgc3RkOjpzaXplX3QgQml0cyA+Ci1zdHJ1Y3QgbG93X2JpdHNfbWFza190Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB1aW50X3Q8Qml0cz46OmxlYXN0ICBsZWFzdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHVpbnRfdDxCaXRzPjo6ZmFzdCAgIGZhc3Q7Ci0KLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoIGxlYXN0LCBzaWdfYml0cyA9ICh+KCB+KGxlYXN0KCAwdSApKSA8PCBCaXRzICkpICk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKCBmYXN0LCBzaWdfYml0c19mYXN0ID0gZmFzdChzaWdfYml0cykgKTsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCggc3RkOjpzaXplX3QsIGJpdF9jb3VudCA9IEJpdHMgKTsKLQotfTsgIC8vIG5kbmJvb3N0Ojpsb3dfYml0c19tYXNrX3QKLQotCi0jZGVmaW5lIE5ETkJPT1NUX0xPV19CSVRTX01BU0tfU1BFQ0lBTElaRSggVHlwZSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgdGVtcGxhdGUgPCAgPiAgc3RydWN0IGxvd19iaXRzX21hc2tfdDwgc3RkOjpudW1lcmljX2xpbWl0czxUeXBlPjo6ZGlnaXRzID4gIHsgXAotICAgICAgdHlwZWRlZiBzdGQ6Om51bWVyaWNfbGltaXRzPFR5cGU+ICAgICAgICAgICBsaW1pdHNfdHlwZTsgICAgICAgICAgICAgICAgICBcCi0gICAgICB0eXBlZGVmIHVpbnRfdDxsaW1pdHNfdHlwZTo6ZGlnaXRzPjo6bGVhc3QgIGxlYXN0OyAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHR5cGVkZWYgdWludF90PGxpbWl0c190eXBlOjpkaWdpdHM+OjpmYXN0ICAgZmFzdDsgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKCBsZWFzdCwgc2lnX2JpdHMgPSAofiggbGVhc3QoMHUpICkpICk7ICAgICAgICAgICAgICBcCi0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoIGZhc3QsIHNpZ19iaXRzX2Zhc3QgPSBmYXN0KHNpZ19iaXRzKSApOyAgICAgICAgICAgIFwKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCggc3RkOjpzaXplX3QsIGJpdF9jb3VudCA9IGxpbWl0c190eXBlOjpkaWdpdHMgKTsgICAgXAotICB9Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQyNDUpICAvLyAnaW5pdGlhbGl6aW5nJyA6IGNvbnZlcnNpb24gZnJvbSAnaW50JyB0byAnY29uc3QgbmRuYm9vc3Q6Omxvd19iaXRzX21hc2tfdDw4Pjo6bGVhc3QnLCBzaWduZWQvdW5zaWduZWQgbWlzbWF0Y2gKLSNlbmRpZgotCi1ORE5CT09TVF9MT1dfQklUU19NQVNLX1NQRUNJQUxJWkUoIHVuc2lnbmVkIGNoYXIgKTsKLQotI2lmIFVTSFJUX01BWCA+IFVDSEFSX01BWAotTkROQk9PU1RfTE9XX0JJVFNfTUFTS19TUEVDSUFMSVpFKCB1bnNpZ25lZCBzaG9ydCApOwotI2VuZGlmCi0KLSNpZiBVSU5UX01BWCA+IFVTSFJUX01BWAotTkROQk9PU1RfTE9XX0JJVFNfTUFTS19TUEVDSUFMSVpFKCB1bnNpZ25lZCBpbnQgKTsKLSNlbmRpZgotCi0jaWYgVUxPTkdfTUFYID4gVUlOVF9NQVgKLU5ETkJPT1NUX0xPV19CSVRTX01BU0tfU1BFQ0lBTElaRSggdW5zaWduZWQgbG9uZyApOwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi0gICAgI2lmICgoZGVmaW5lZChVTExPTkdfTUFYKSAmJiAoVUxMT05HX01BWCA+IFVMT05HX01BWCkpIHx8XAotICAgICAgICAoZGVmaW5lZChVTE9OR19MT05HX01BWCkgJiYgKFVMT05HX0xPTkdfTUFYID4gVUxPTkdfTUFYKSkgfHxcCi0gICAgICAgIChkZWZpbmVkKFVMT05HTE9OR19NQVgpICYmIChVTE9OR0xPTkdfTUFYID4gVUxPTkdfTUFYKSkgfHxcCi0gICAgICAgIChkZWZpbmVkKF9VTExPTkdfTUFYKSAmJiAoX1VMTE9OR19NQVggPiBVTE9OR19NQVgpKSkKLSAgICBORE5CT09TVF9MT1dfQklUU19NQVNLX1NQRUNJQUxJWkUoIG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUgKTsKLSAgICAjZW5kaWYKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX01TX0lOVDY0KQotICAgICNpZiAxODQ0Njc0NDA3MzcwOTU1MTYxNXVpNjQgPiBVTE9OR19NQVgKLSAgICBORE5CT09TVF9MT1dfQklUU19NQVNLX1NQRUNJQUxJWkUoIHVuc2lnbmVkIF9faW50NjQgKTsKLSAgICAjZW5kaWYKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jdW5kZWYgTkROQk9PU1RfTE9XX0JJVFNfTUFTS19TUEVDSUFMSVpFCi0KLQotfSAgLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLQotI2VuZGlmICAvLyBORE5CT09TVF9JTlRFR0VSX0lOVEVHRVJfTUFTS19IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW50ZWdlci9zdGF0aWNfbG9nMi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2ludGVnZXIvc3RhdGljX2xvZzIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTQwZjM3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW50ZWdlci9zdGF0aWNfbG9nMi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjcgKzAsMCBAQAotLy8gLS0tLS0tLS0tLS0tLS0gQm9vc3Qgc3RhdGljX2xvZzIuaHBwIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAvLwotLy8KLS8vICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKEMpIDIwMDEgRGFyeWxlIFdhbGtlci4KLS8vICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKEMpIDIwMDMgVmVzYSBLYXJ2b25lbi4KLS8vICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKEMpIDIwMDMgR2VubmFybyBQcm90YS4KLS8vCi0vLyAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gICAgICAgIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICAgICAgICAgICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vICAgICAgIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2ludGVnZXIgZm9yIGRvY3VtZW50YXRpb24uCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vCi0KLQotI2lmbmRlZiBORE5CT09TVF9JTlRFR0VSX1NUQVRJQ19MT0cyX0hQUAotI2RlZmluZSBORE5CT09TVF9JTlRFR0VSX1NUQVRJQ19MT0cyX0hQUAotCi0jaW5jbHVkZSAibmRuYm9vc3QvaW50ZWdlcl9md2QuaHBwIiAvLyBmb3IgbmRuYm9vc3Q6OmludG1heF90Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSBuYW1lc3BhY2UgZGV0YWlsIHsKLQotICAgICBuYW1lc3BhY2Ugc3RhdGljX2xvZzJfaW1wbCB7Ci0KLSAgICAgLy8gY2hvb3NlX2luaXRpYWxfbjw+Ci0gICAgIC8vCi0gICAgIC8vIFJlY3Vyc2l2ZWx5IGRvdWJsZXMgaXRzIGludGVnZXIgYXJndW1lbnQsIHVudGlsIGl0Ci0gICAgIC8vIGJlY29tZXMgPj0gb2YgdGhlICJ3aWR0aCIgKEM5OSwgNi4yLjYuMnA0KSBvZgotICAgICAvLyBzdGF0aWNfbG9nMl9hcmd1bWVudF90eXBlLgotICAgICAvLwotICAgICAvLyBVc2VkIHRvIGdldCB0aGUgbWF4aW11bSBwb3dlciBvZiB0d28gbGVzcyB0aGVuIHRoZSB3aWR0aC4KLSAgICAgLy8KLSAgICAgLy8gRXhhbXBsZTogaWYgb24geW91ciBwbGF0Zm9ybSBhcmd1bWVudF90eXBlIGhhcyA0OCB2YWx1ZQotICAgICAvLyAgICAgICAgICBiaXRzIGl0IHlpZWxkcyBuPTMyLgotICAgICAvLwotICAgICAvLyBJdCdzIGVhc3kgdG8gcHJvdmUgdGhhdCwgc3RhcnRpbmcgZnJvbSBzdWNoIGEgdmFsdWUKLSAgICAgLy8gb2YgbiwgdGhlIGNvcmUgYWxnb3JpdGhtIHdvcmtzIGNvcnJlY3RseSBmb3IgYW55IHdpZHRoCi0gICAgIC8vIG9mIHN0YXRpY19sb2cyX2FyZ3VtZW50X3R5cGUgYW5kIHRoYXQgcmVjdXJzaW9uIGFsd2F5cwotICAgICAvLyB0ZXJtaW5hdGVzIHdpdGggeCA9IDEgYW5kIG4gPSAwIChzZWUgdGhlIGFsZ29yaXRobSdzCi0gICAgIC8vIGludmFyaWFudCkuCi0KLSAgICAgdHlwZWRlZiBuZG5ib29zdDo6c3RhdGljX2xvZzJfYXJndW1lbnRfdHlwZSBhcmd1bWVudF90eXBlOwotICAgICB0eXBlZGVmIG5kbmJvb3N0OjpzdGF0aWNfbG9nMl9yZXN1bHRfdHlwZSByZXN1bHRfdHlwZTsKLQotICAgICB0ZW1wbGF0ZSA8cmVzdWx0X3R5cGUgbj4KLSAgICAgc3RydWN0IGNob29zZV9pbml0aWFsX24gewotCi0gICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgYyA9IChhcmd1bWVudF90eXBlKDEpIDw8IG4gPDwgbikgIT0gMCk7Ci0gICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoCi0gICAgICAgICAgICAgcmVzdWx0X3R5cGUsCi0gICAgICAgICAgICAgdmFsdWUgPSAhYypuICsgY2hvb3NlX2luaXRpYWxfbjwyKmMqbj46OnZhbHVlCi0gICAgICAgICApOwotCi0gICAgIH07Ci0KLSAgICAgdGVtcGxhdGUgPD4KLSAgICAgc3RydWN0IGNob29zZV9pbml0aWFsX248MD4gewotICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHJlc3VsdF90eXBlLCB2YWx1ZSA9IDApOwotICAgICB9OwotCi0KLQotICAgICAvLyBzdGFydCBjb21wdXRpbmcgZnJvbSBuX3plcm8gLSBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvCi0gICAgIGNvbnN0IHJlc3VsdF90eXBlIG5femVybyA9IDE2OwotICAgICBjb25zdCByZXN1bHRfdHlwZSBpbml0aWFsX24gPSBjaG9vc2VfaW5pdGlhbF9uPG5femVybz46OnZhbHVlOwotCi0gICAgIC8vIHN0YXRpY19sb2cyX2ltcGw8PgotICAgICAvLwotICAgICAvLyAqIEludmFyaWFudDoKLSAgICAgLy8gICAgICAgICAgICAgICAgIDJuCi0gICAgIC8vICAxIDw9IHggJiYgeCA8IDIgICAgYXQgdGhlIHN0YXJ0IG9mIGVhY2ggcmVjdXJzaW9uCi0gICAgIC8vICAgICAgICAgICAgICAgICAgICAgKHNlZSBhbHNvIGNob29zZV9pbml0aWFsX248PikKLSAgICAgLy8KLSAgICAgLy8gKiBUeXBlIHJlcXVpcmVtZW50czoKLSAgICAgLy8KLSAgICAgLy8gICBhcmd1bWVudF90eXBlIG1heWJlIGFueSB1bnNpZ25lZCB0eXBlIHdpdGggYXQgbGVhc3Qgbl96ZXJvICsgMQotICAgICAvLyAgIHZhbHVlIGJpdHMuIChOb3RlOiBJZiBsYXJnZXIgdHlwZXMgd2lsbCBiZSBzdGFuZGFyZGl6ZWQgLWUuZy4KLSAgICAgLy8gICB1bnNpZ25lZCBsb25nIGxvbmctIHRoZW4gdGhlIGFyZ3VtZW50X3R5cGUgdHlwZWRlZiBjYW4gYmUKLSAgICAgLy8gICBjaGFuZ2VkIHdpdGhvdXQgYWZmZWN0aW5nIHRoZSByZXN0IG9mIHRoZSBjb2RlLikKLSAgICAgLy8KLQotICAgICB0ZW1wbGF0ZSA8YXJndW1lbnRfdHlwZSB4LCByZXN1bHRfdHlwZSBuID0gaW5pdGlhbF9uPgotICAgICBzdHJ1Y3Qgc3RhdGljX2xvZzJfaW1wbCB7Ci0KLSAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBjID0gKHggPj4gbikgPiAwKTsgLy8geCA+PSAyKipuID8KLSAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCgKLSAgICAgICAgICAgICByZXN1bHRfdHlwZSwKLSAgICAgICAgICAgICB2YWx1ZSA9IGMqbiArIChzdGF0aWNfbG9nMl9pbXBsPCAoeD4+YypuKSwgbi8yID46OnZhbHVlKQotICAgICAgICAgKTsKLQotICAgICB9OwotCi0gICAgIHRlbXBsYXRlIDw+Ci0gICAgIHN0cnVjdCBzdGF0aWNfbG9nMl9pbXBsPDEsIDA+IHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHJlc3VsdF90eXBlLCB2YWx1ZSA9IDApOwotICAgICB9OwotCi0gICAgIH0KLSB9IC8vIGRldGFpbAotCi0KLQotIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gLy8gc3RhdGljX2xvZzI8eD4KLSAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSB0ZW1wbGF0ZSA8c3RhdGljX2xvZzJfYXJndW1lbnRfdHlwZSB4PgotIHN0cnVjdCBzdGF0aWNfbG9nMiB7Ci0KLSAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKAotICAgICAgICAgc3RhdGljX2xvZzJfcmVzdWx0X3R5cGUsCi0gICAgICAgICB2YWx1ZSA9IGRldGFpbDo6c3RhdGljX2xvZzJfaW1wbDo6c3RhdGljX2xvZzJfaW1wbDx4Pjo6dmFsdWUKLSAgICAgKTsKLQotIH07Ci0KLQotIHRlbXBsYXRlIDw+Ci0gc3RydWN0IHN0YXRpY19sb2cyPDA+IHsgfTsKLQotfQotCi0KLQotI2VuZGlmIC8vIGluY2x1ZGUgZ3VhcmQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW50ZWdlcl9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pbnRlZ2VyX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2YzZlNjUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pbnRlZ2VyX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjQgKzAsMCBAQAotLy8gIEJvb3N0IGludGVnZXJfZndkLmhwcCBoZWFkZXIgZmlsZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIChDKSBDb3B5cmlnaHQgRGF2ZSBBYnJhaGFtcyBhbmQgRGFyeWxlIFdhbGtlciAyMDAxLiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QKLS8vICBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2ludGVnZXIgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU5URUdFUl9GV0RfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0lOVEVHRVJfRldEX0hQUAotCi0jaW5jbHVkZSA8Y2xpbWl0cz4gIC8vIGZvciBVQ0hBUl9NQVgsIGV0Yy4KLSNpbmNsdWRlIDxjc3RkZGVmPiAgLy8gZm9yIHN0ZDo6c2l6ZV90Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgLy8gZm9yIE5ETkJPT1NUX05PX0lOVFJJTlNJQ19XQ0hBUl9UCi0jaW5jbHVkZSA8bmRuYm9vc3QvbGltaXRzLmhwcD4gIC8vIGZvciBzdGQ6Om51bWVyaWNfbGltaXRzCi0jaW5jbHVkZSA8bmRuYm9vc3QvY3N0ZGludC5ocHA+ICAvLyBGb3IgaW50bWF4X3QKLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotI2lmZGVmIE5ETkJPT1NUX05PX0lOVEVHUkFMX0lOVDY0X1QKLSAgICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIHN0YXRpY19sb2cyX2FyZ3VtZW50X3R5cGU7Ci0gICAgIHR5cGVkZWYgICAgICAgICAgaW50ICBzdGF0aWNfbG9nMl9yZXN1bHRfdHlwZTsKLSAgICAgdHlwZWRlZiBsb25nICAgICAgICAgIHN0YXRpY19taW5fbWF4X3NpZ25lZF90eXBlOwotICAgICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgc3RhdGljX21pbl9tYXhfdW5zaWduZWRfdHlwZTsKLSNlbHNlCi0gICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVpbnRtYXhfdCBzdGF0aWNfbWluX21heF91bnNpZ25lZF90eXBlOwotICAgICB0eXBlZGVmIG5kbmJvb3N0OjppbnRtYXhfdCAgc3RhdGljX21pbl9tYXhfc2lnbmVkX3R5cGU7Ci0gICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVpbnRtYXhfdCBzdGF0aWNfbG9nMl9hcmd1bWVudF90eXBlOwotICAgICB0eXBlZGVmIGludCAgICAgICAgICAgICAgc3RhdGljX2xvZzJfcmVzdWx0X3R5cGU7Ci0jZW5kaWYKLQotLy8gIEZyb20gPG5kbmJvb3N0L2NzdGRpbnQuaHBwPiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gT25seSBoYXMgdHlwZWRlZnMgb3IgdXNpbmcgc3RhdGVtZW50cywgd2l0aCAjY29uZGl0aW9uYWxzCi0KLQotLy8gIEZyb20gPG5kbmJvb3N0L2ludGVnZXJfdHJhaXRzLmhwcD4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGUgPCBjbGFzcyBUID4KLSAgICBjbGFzcyBpbnRlZ2VyX3RyYWl0czsKLQotdGVtcGxhdGUgPCAgPgotICAgIGNsYXNzIGludGVnZXJfdHJhaXRzPCBib29sID47Ci0KLXRlbXBsYXRlIDwgID4KLSAgICBjbGFzcyBpbnRlZ2VyX3RyYWl0czwgY2hhciA+OwotCi10ZW1wbGF0ZSA8ICA+Ci0gICAgY2xhc3MgaW50ZWdlcl90cmFpdHM8IHNpZ25lZCBjaGFyID47Ci0KLXRlbXBsYXRlIDwgID4KLSAgICBjbGFzcyBpbnRlZ2VyX3RyYWl0czwgdW5zaWduZWQgY2hhciA+OwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0lOVFJJTlNJQ19XQ0hBUl9UCi10ZW1wbGF0ZSA8ICA+Ci0gICAgY2xhc3MgaW50ZWdlcl90cmFpdHM8IHdjaGFyX3QgPjsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8ICA+Ci0gICAgY2xhc3MgaW50ZWdlcl90cmFpdHM8IHNob3J0ID47Ci0KLXRlbXBsYXRlIDwgID4KLSAgICBjbGFzcyBpbnRlZ2VyX3RyYWl0czwgdW5zaWduZWQgc2hvcnQgPjsKLQotdGVtcGxhdGUgPCAgPgotICAgIGNsYXNzIGludGVnZXJfdHJhaXRzPCBpbnQgPjsKLQotdGVtcGxhdGUgPCAgPgotICAgIGNsYXNzIGludGVnZXJfdHJhaXRzPCB1bnNpZ25lZCBpbnQgPjsKLQotdGVtcGxhdGUgPCAgPgotICAgIGNsYXNzIGludGVnZXJfdHJhaXRzPCBsb25nID47Ci0KLXRlbXBsYXRlIDwgID4KLSAgICBjbGFzcyBpbnRlZ2VyX3RyYWl0czwgdW5zaWduZWQgbG9uZyA+OwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU5URUdSQUxfSU5UNjRfVCkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU5UNjRfVCkgJiYgZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKQotdGVtcGxhdGUgPCAgPgotY2xhc3MgaW50ZWdlcl90cmFpdHM8ICA6Om5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZT47Ci0KLXRlbXBsYXRlIDwgID4KLWNsYXNzIGludGVnZXJfdHJhaXRzPCAgOjpuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlID47Ci0jZWxpZiAhZGVmaW5lZChORE5CT09TVF9OT19JTlRFR1JBTF9JTlQ2NF9UKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19JTlQ2NF9UKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0hBU19NU19JTlQ2NCkKLXRlbXBsYXRlIDwgID4KLWNsYXNzIGludGVnZXJfdHJhaXRzPF9faW50NjQ+OwotCi10ZW1wbGF0ZSA8ICA+Ci1jbGFzcyBpbnRlZ2VyX3RyYWl0czx1bnNpZ25lZCBfX2ludDY0PjsKLSNlbmRpZgotCi0KLS8vICBGcm9tIDxuZG5ib29zdC9pbnRlZ2VyLmhwcD4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgTGVhc3RJbnQgPgotICAgIHN0cnVjdCBpbnRfZmFzdF90OwotCi10ZW1wbGF0ZTwgaW50IEJpdHMgPgotICAgIHN0cnVjdCBpbnRfdDsKLQotdGVtcGxhdGU8IGludCBCaXRzID4KLSAgICBzdHJ1Y3QgdWludF90OwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU5URUdSQUxfSU5UNjRfVCkgJiYgZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKQotICAgIHRlbXBsYXRlPCBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUgTWF4VmFsdWUgPiAgIC8vIG1heGltdW0gdmFsdWUgdG8gcmVxdWlyZSBzdXBwb3J0Ci0jZWxzZQotICB0ZW1wbGF0ZTwgbG9uZyBNYXhWYWx1ZSA+ICAgLy8gbWF4aW11bSB2YWx1ZSB0byByZXF1aXJlIHN1cHBvcnQKLSNlbmRpZgotICAgIHN0cnVjdCBpbnRfbWF4X3ZhbHVlX3Q7Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19JTlRFR1JBTF9JTlQ2NF9UKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi0gIHRlbXBsYXRlPCBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUgTWluVmFsdWUgPiAgIC8vIG1pbmltdW0gdmFsdWUgdG8gcmVxdWlyZSBzdXBwb3J0Ci0jZWxzZQotICB0ZW1wbGF0ZTwgbG9uZyBNaW5WYWx1ZSA+ICAgLy8gbWluaW11bSB2YWx1ZSB0byByZXF1aXJlIHN1cHBvcnQKLSNlbmRpZgotICAgIHN0cnVjdCBpbnRfbWluX3ZhbHVlX3Q7Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19JTlRFR1JBTF9JTlQ2NF9UKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi0gIHRlbXBsYXRlPCBuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlIE1heFZhbHVlID4gICAvLyBtYXhpbXVtIHZhbHVlIHRvIHJlcXVpcmUgc3VwcG9ydAotI2Vsc2UKLSAgdGVtcGxhdGU8IHVuc2lnbmVkIGxvbmcgTWF4VmFsdWUgPiAgIC8vIG1heGltdW0gdmFsdWUgdG8gcmVxdWlyZSBzdXBwb3J0Ci0jZW5kaWYKLSAgICBzdHJ1Y3QgdWludF92YWx1ZV90OwotCi0KLS8vICBGcm9tIDxuZG5ib29zdC9pbnRlZ2VyL2ludGVnZXJfbWFzay5ocHA+ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlIDwgc3RkOjpzaXplX3QgQml0ID4KLSAgICBzdHJ1Y3QgaGlnaF9iaXRfbWFza190OwotCi10ZW1wbGF0ZSA8IHN0ZDo6c2l6ZV90IEJpdHMgPgotICAgIHN0cnVjdCBsb3dfYml0c19tYXNrX3Q7Ci0KLXRlbXBsYXRlIDwgID4KLSAgICBzdHJ1Y3QgbG93X2JpdHNfbWFza190PCA6OnN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgY2hhcj46OmRpZ2l0cyA+OwotCi0vLyAgRnJvbSA8bmRuYm9vc3QvaW50ZWdlci9zdGF0aWNfbG9nMi5ocHA+ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZSA8c3RhdGljX2xvZzJfYXJndW1lbnRfdHlwZSBWYWx1ZSA+Ci0gICAgc3RydWN0IHN0YXRpY19sb2cyOwotCi10ZW1wbGF0ZSA8PiBzdHJ1Y3Qgc3RhdGljX2xvZzI8MHU+OwotCi0KLS8vICBGcm9tIDxuZG5ib29zdC9pbnRlZ2VyL3N0YXRpY19taW5fbWF4LmhwcD4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlIDxzdGF0aWNfbWluX21heF9zaWduZWRfdHlwZSBWYWx1ZTEsIHN0YXRpY19taW5fbWF4X3NpZ25lZF90eXBlIFZhbHVlMj4KLSAgICBzdHJ1Y3Qgc3RhdGljX3NpZ25lZF9taW47Ci0KLXRlbXBsYXRlIDxzdGF0aWNfbWluX21heF9zaWduZWRfdHlwZSBWYWx1ZTEsIHN0YXRpY19taW5fbWF4X3NpZ25lZF90eXBlIFZhbHVlMj4KLSAgICBzdHJ1Y3Qgc3RhdGljX3NpZ25lZF9tYXg7Ci0KLXRlbXBsYXRlIDxzdGF0aWNfbWluX21heF91bnNpZ25lZF90eXBlIFZhbHVlMSwgc3RhdGljX21pbl9tYXhfdW5zaWduZWRfdHlwZSBWYWx1ZTI+Ci0gICAgc3RydWN0IHN0YXRpY191bnNpZ25lZF9taW47Ci0KLXRlbXBsYXRlIDxzdGF0aWNfbWluX21heF91bnNpZ25lZF90eXBlIFZhbHVlMSwgc3RhdGljX21pbl9tYXhfdW5zaWduZWRfdHlwZSBWYWx1ZTI+Ci0gICAgc3RydWN0IHN0YXRpY191bnNpZ25lZF9tYXg7Ci0KLX0gIC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0KLSNlbmRpZiAgLy8gTkROQk9PU1RfSU5URUdFUl9GV0RfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2ludGVnZXJfdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW50ZWdlcl90cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOGE2YWZkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW50ZWdlcl90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjYxICswLDAgQEAKLS8qIGJvb3N0IGludGVnZXJfdHJhaXRzLmhwcCBoZWFkZXIgZmlsZQotICoKLSAqIENvcHlyaWdodCBKZW5zIE1hdXJlciAyMDAwCi0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0gKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICogJElkOiBpbnRlZ2VyX3RyYWl0cy5ocHAgODMzODEgMjAxMy0wMy0wOSAyMjo1NTowNVogZXJpY19uaWVibGVyICQKLSAqCi0gKiBJZGVhIGJ5IEJlbWFuIERhd2VzLCBFZCBCcmV5LCBTdGV2ZSBDbGVhcnksIGFuZCBOYXRoYW4gTXllcnMKLSAqLwotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW50ZWdlciBmb3IgZG9jdW1lbnRhdGlvbi4KLQotCi0jaWZuZGVmIE5ETkJPT1NUX0lOVEVHRVJfVFJBSVRTX0hQUAotI2RlZmluZSBORE5CT09TVF9JTlRFR0VSX1RSQUlUU19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbGltaXRzLmhwcD4KLQotLy8gVGhlc2UgYXJlIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCBhbmQgbm90IHBhcnQgb2YgdGhlIGludGVyZmFjZQotI2luY2x1ZGUgPGxpbWl0cy5oPgotLy8gd2UgbmVlZCB3Y2hhci5oIGZvciBXQ0hBUl9NQVgvTUlOIGJ1dCBub3QgYWxsIHBsYXRmb3JtcyBwcm92aWRlIGl0LAotLy8gYW5kIHNvbWUgbWF5IGhhdmUgPHdjaGFyLmg+IGJ1dCBub3QgPGN3Y2hhcj4gLi4uCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QpICYmICghZGVmaW5lZChORE5CT09TVF9OT19DV0NIQVIpIHx8IGRlZmluZWQoc3VuKSB8fCBkZWZpbmVkKF9fc3VuKSB8fCBkZWZpbmVkKF9fUU5YX18pKQotI2luY2x1ZGUgPHdjaGFyLmg+Ci0jZW5kaWYKLQotLy8KLS8vIFdlIHNpbXBseSBjYW5ub3QgaW5jbHVkZSB0aGlzIGhlYWRlciBvbiBnY2Mgd2l0aG91dCBnZXR0aW5nIGNvcGlvdXMgd2FybmluZ3Mgb2YgdGhlIGtpbmQ6Ci0vLwotLy8gLi4vLi4vLi4vYm9vc3QvaW50ZWdlcl90cmFpdHMuaHBwOjE2NDo2Njogd2FybmluZzogdXNlIG9mIEM5OSBsb25nIGxvbmcgaW50ZWdlciBjb25zdGFudAotLy8KLS8vIEFuZCB5ZXQgdGhlcmUgaXMgbm8gb3RoZXIgcmVhc29uYWJsZSBpbXBsZW1lbnRhdGlvbiwgc28gd2UgZGVjbGFyZSB0aGlzIGEgc3lzdGVtIGhlYWRlcgotLy8gdG8gc3VwcHJlc3MgdGhlc2Ugd2FybmluZ3MuCi0vLwotI2lmIGRlZmluZWQoX19HTlVDX18pICYmIChfX0dOVUNfXyA+PSA0KQotI3ByYWdtYSBHQ0Mgc3lzdGVtX2hlYWRlcgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci10ZW1wbGF0ZTxjbGFzcyBUPgotY2xhc3MgaW50ZWdlcl90cmFpdHMgOiBwdWJsaWMgc3RkOjpudW1lcmljX2xpbWl0czxUPgotewotcHVibGljOgotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfaW50ZWdyYWwgPSBmYWxzZSk7Ci19OwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLXRlbXBsYXRlPGNsYXNzIFQsIFQgbWluX3ZhbCwgVCBtYXhfdmFsPgotY2xhc3MgaW50ZWdlcl90cmFpdHNfYmFzZQotewotcHVibGljOgotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfaW50ZWdyYWwgPSB0cnVlKTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIGNvbnN0X21pbiA9IG1pbl92YWwpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgY29uc3RfbWF4ID0gbWF4X3ZhbCk7Ci19OwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0lOQ0xBU1NfTUVNQkVSX0lOSVRJQUxJWkFUSU9OCi0vLyAgQSBkZWZpbml0aW9uIGlzIHJlcXVpcmVkIGV2ZW4gZm9yIGludGVncmFsIHN0YXRpYyBjb25zdGFudHMKLXRlbXBsYXRlPGNsYXNzIFQsIFQgbWluX3ZhbCwgVCBtYXhfdmFsPgotY29uc3QgYm9vbCBpbnRlZ2VyX3RyYWl0c19iYXNlPFQsIG1pbl92YWwsIG1heF92YWw+Ojppc19pbnRlZ3JhbDsKLQotdGVtcGxhdGU8Y2xhc3MgVCwgVCBtaW5fdmFsLCBUIG1heF92YWw+Ci1jb25zdCBUIGludGVnZXJfdHJhaXRzX2Jhc2U8VCwgbWluX3ZhbCwgbWF4X3ZhbD46OmNvbnN0X21pbjsKLQotdGVtcGxhdGU8Y2xhc3MgVCwgVCBtaW5fdmFsLCBUIG1heF92YWw+Ci1jb25zdCBUIGludGVnZXJfdHJhaXRzX2Jhc2U8VCwgbWluX3ZhbCwgbWF4X3ZhbD46OmNvbnN0X21heDsKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotdGVtcGxhdGU8PgotY2xhc3MgaW50ZWdlcl90cmFpdHM8Ym9vbD4KLSAgOiBwdWJsaWMgc3RkOjpudW1lcmljX2xpbWl0czxib29sPiwKLSAgICBwdWJsaWMgZGV0YWlsOjppbnRlZ2VyX3RyYWl0c19iYXNlPGJvb2wsIGZhbHNlLCB0cnVlPgoteyB9OwotCi10ZW1wbGF0ZTw+Ci1jbGFzcyBpbnRlZ2VyX3RyYWl0czxjaGFyPgotICA6IHB1YmxpYyBzdGQ6Om51bWVyaWNfbGltaXRzPGNoYXI+LAotICAgIHB1YmxpYyBkZXRhaWw6OmludGVnZXJfdHJhaXRzX2Jhc2U8Y2hhciwgQ0hBUl9NSU4sIENIQVJfTUFYPgoteyB9OwotCi10ZW1wbGF0ZTw+Ci1jbGFzcyBpbnRlZ2VyX3RyYWl0czxzaWduZWQgY2hhcj4KLSAgOiBwdWJsaWMgc3RkOjpudW1lcmljX2xpbWl0czxzaWduZWQgY2hhcj4sCi0gICAgcHVibGljIGRldGFpbDo6aW50ZWdlcl90cmFpdHNfYmFzZTxzaWduZWQgY2hhciwgU0NIQVJfTUlOLCBTQ0hBUl9NQVg+Ci17IH07Ci0KLXRlbXBsYXRlPD4KLWNsYXNzIGludGVnZXJfdHJhaXRzPHVuc2lnbmVkIGNoYXI+Ci0gIDogcHVibGljIHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgY2hhcj4sCi0gICAgcHVibGljIGRldGFpbDo6aW50ZWdlcl90cmFpdHNfYmFzZTx1bnNpZ25lZCBjaGFyLCAwLCBVQ0hBUl9NQVg+Ci17IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QKLXRlbXBsYXRlPD4KLWNsYXNzIGludGVnZXJfdHJhaXRzPHdjaGFyX3Q+Ci0gIDogcHVibGljIHN0ZDo6bnVtZXJpY19saW1pdHM8d2NoYXJfdD4sCi0gICAgLy8gRG9uJ3QgdHJ1c3QgV0NIQVJfTUlOIGFuZCBXQ0hBUl9NQVggd2l0aCBNYWMgT1MgWCdzIG5hdGl2ZQotICAgIC8vIGxpYnJhcnk6IHRoZXkgYXJlIHdyb25nIQotI2lmIGRlZmluZWQoV0NIQVJfTUlOKSAmJiBkZWZpbmVkKFdDSEFSX01BWCkgJiYgIWRlZmluZWQoX19BUFBMRV9fKQotICAgIHB1YmxpYyBkZXRhaWw6OmludGVnZXJfdHJhaXRzX2Jhc2U8d2NoYXJfdCwgV0NIQVJfTUlOLCBXQ0hBUl9NQVg+Ci0jZWxpZiBkZWZpbmVkKF9fQk9STEFORENfXykgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9fTUlOR1czMl9fKSB8fCAoZGVmaW5lZChfX0JFT1NfXykgJiYgZGVmaW5lZChfX0dOVUNfXykpCi0gICAgLy8gTm8gV0NIQVJfTUlOIGFuZCBXQ0hBUl9NQVgsIHdoYXJfdCBpcyBzaG9ydCBhbmQgdW5zaWduZWQ6Ci0gICAgcHVibGljIGRldGFpbDo6aW50ZWdlcl90cmFpdHNfYmFzZTx3Y2hhcl90LCAwLCAweGZmZmY+Ci0jZWxpZiAoZGVmaW5lZChfX3NnaSkgJiYgKCFkZWZpbmVkKF9fU0dJX1NUTF9QT1JUKSB8fCBfX1NHSV9TVExfUE9SVCA8IDB4NDAwKSlcCi0gICAgfHwgKGRlZmluZWQgX19BUFBMRV9fKVwKLSAgICB8fCAoZGVmaW5lZChfX09wZW5CU0RfXykgJiYgZGVmaW5lZChfX0dOVUNfXykpXAotICAgIHx8IChkZWZpbmVkKF9fTmV0QlNEX18pICYmIGRlZmluZWQoX19HTlVDX18pKVwKLSAgICB8fCAoZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgZGVmaW5lZChfX0dOVUNfXykpXAotICAgIHx8IChkZWZpbmVkKF9fRHJhZ29uRmx5X18pICYmIGRlZmluZWQoX19HTlVDX18pKVwKLSAgICB8fCAoZGVmaW5lZChfX2hwdXgpICYmIGRlZmluZWQoX19HTlVDX18pICYmIChfX0dOVUNfXyA9PSAzKSAmJiAhZGVmaW5lZChfX1NHSV9TVExfUE9SVCkpCi0gICAgLy8gTm8gV0NIQVJfTUlOIGFuZCBXQ0hBUl9NQVgsIHdjaGFyX3QgaGFzIHRoZSBzYW1lIHJhbmdlIGFzIGludC4KLSAgICAvLyAgLSBTR0kgTUlQU3BybyB3aXRoIG5hdGl2ZSBsaWJyYXJ5Ci0gICAgLy8gIC0gZ2NjIDMueCBvbiBIUC1VWAotICAgIC8vICAtIE1hYyBPUyBYIHdpdGggbmF0aXZlIGxpYnJhcnkKLSAgICAvLyAgLSBnY2Mgb24gRnJlZUJTRCwgT3BlbkJTRCBhbmQgTmV0QlNECi0gICAgcHVibGljIGRldGFpbDo6aW50ZWdlcl90cmFpdHNfYmFzZTx3Y2hhcl90LCBJTlRfTUlOLCBJTlRfTUFYPgotI2VsaWYgZGVmaW5lZChfX2hwdXgpICYmIGRlZmluZWQoX19HTlVDX18pICYmIChfX0dOVUNfXyA9PSAyKSAmJiAhZGVmaW5lZChfX1NHSV9TVExfUE9SVCkKLSAgICAvLyBObyBXQ0hBUl9NSU4gYW5kIFdDSEFSX01BWCwgd2NoYXJfdCBoYXMgdGhlIHNhbWUgcmFuZ2UgYXMgdW5zaWduZWQgaW50LgotICAgIC8vICAtIGdjYyAyLjk1Lnggb24gSFAtVVgKLSAgICAvLyAoYWxzbywgc3RkOjpudW1lcmljX2xpbWl0czx3Y2hhcl90PiBhcHBlYXJzIHRvIHJldHVybiB0aGUgd3JvbmcgdmFsdWVzKS4KLSAgICBwdWJsaWMgZGV0YWlsOjppbnRlZ2VyX3RyYWl0c19iYXNlPHdjaGFyX3QsIDAsIFVJTlRfTUFYPgotI2Vsc2UKLSNlcnJvciBObyBXQ0hBUl9NSU4gYW5kIFdDSEFSX01BWCBwcmVzZW50LCBwbGVhc2UgYWRqdXN0IGludGVnZXJfdHJhaXRzPD4gZm9yIHlvdXIgY29tcGlsZXIuCi0jZW5kaWYKLXsgfTsKLSNlbmRpZiAvLyBORE5CT09TVF9OT19JTlRSSU5TSUNfV0NIQVJfVAotCi10ZW1wbGF0ZTw+Ci1jbGFzcyBpbnRlZ2VyX3RyYWl0czxzaG9ydD4KLSAgOiBwdWJsaWMgc3RkOjpudW1lcmljX2xpbWl0czxzaG9ydD4sCi0gICAgcHVibGljIGRldGFpbDo6aW50ZWdlcl90cmFpdHNfYmFzZTxzaG9ydCwgU0hSVF9NSU4sIFNIUlRfTUFYPgoteyB9OwotCi10ZW1wbGF0ZTw+Ci1jbGFzcyBpbnRlZ2VyX3RyYWl0czx1bnNpZ25lZCBzaG9ydD4KLSAgOiBwdWJsaWMgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZCBzaG9ydD4sCi0gICAgcHVibGljIGRldGFpbDo6aW50ZWdlcl90cmFpdHNfYmFzZTx1bnNpZ25lZCBzaG9ydCwgMCwgVVNIUlRfTUFYPgoteyB9OwotCi10ZW1wbGF0ZTw+Ci1jbGFzcyBpbnRlZ2VyX3RyYWl0czxpbnQ+Ci0gIDogcHVibGljIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50PiwKLSAgICBwdWJsaWMgZGV0YWlsOjppbnRlZ2VyX3RyYWl0c19iYXNlPGludCwgSU5UX01JTiwgSU5UX01BWD4KLXsgfTsKLQotdGVtcGxhdGU8PgotY2xhc3MgaW50ZWdlcl90cmFpdHM8dW5zaWduZWQgaW50PgotICA6IHB1YmxpYyBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGludD4sCi0gICAgcHVibGljIGRldGFpbDo6aW50ZWdlcl90cmFpdHNfYmFzZTx1bnNpZ25lZCBpbnQsIDAsIFVJTlRfTUFYPgoteyB9OwotCi10ZW1wbGF0ZTw+Ci1jbGFzcyBpbnRlZ2VyX3RyYWl0czxsb25nPgotICA6IHB1YmxpYyBzdGQ6Om51bWVyaWNfbGltaXRzPGxvbmc+LAotICAgIHB1YmxpYyBkZXRhaWw6OmludGVnZXJfdHJhaXRzX2Jhc2U8bG9uZywgTE9OR19NSU4sIExPTkdfTUFYPgoteyB9OwotCi10ZW1wbGF0ZTw+Ci1jbGFzcyBpbnRlZ2VyX3RyYWl0czx1bnNpZ25lZCBsb25nPgotICA6IHB1YmxpYyBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGxvbmc+LAotICAgIHB1YmxpYyBkZXRhaWw6OmludGVnZXJfdHJhaXRzX2Jhc2U8dW5zaWduZWQgbG9uZywgMCwgVUxPTkdfTUFYPgoteyB9OwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU5URUdSQUxfSU5UNjRfVCkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU5UNjRfVCkKLSNpZiBkZWZpbmVkKFVMTE9OR19NQVgpICYmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykKLQotdGVtcGxhdGU8PgotY2xhc3MgaW50ZWdlcl90cmFpdHM8IDo6bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlPgotICA6IHB1YmxpYyBzdGQ6Om51bWVyaWNfbGltaXRzPCA6Om5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZT4sCi0gICAgcHVibGljIGRldGFpbDo6aW50ZWdlcl90cmFpdHNfYmFzZTwgOjpuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUsIExMT05HX01JTiwgTExPTkdfTUFYPgoteyB9OwotCi10ZW1wbGF0ZTw+Ci1jbGFzcyBpbnRlZ2VyX3RyYWl0czwgOjpuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlPgotICA6IHB1YmxpYyBzdGQ6Om51bWVyaWNfbGltaXRzPCA6Om5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGU+LAotICAgIHB1YmxpYyBkZXRhaWw6OmludGVnZXJfdHJhaXRzX2Jhc2U8IDo6bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZSwgMCwgVUxMT05HX01BWD4KLXsgfTsKLQotI2VsaWYgZGVmaW5lZChVTE9OR19MT05HX01BWCkgJiYgZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKQotCi10ZW1wbGF0ZTw+Ci1jbGFzcyBpbnRlZ2VyX3RyYWl0czwgOjpuZG5ib29zdDo6bG9uZ19sb25nX3R5cGU+ICA6IHB1YmxpYyBzdGQ6Om51bWVyaWNfbGltaXRzPCA6Om5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZT4sICAgIHB1YmxpYyBkZXRhaWw6OmludGVnZXJfdHJhaXRzX2Jhc2U8IDo6bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlLCBMT05HX0xPTkdfTUlOLCBMT05HX0xPTkdfTUFYPnsgfTsKLXRlbXBsYXRlPD4KLWNsYXNzIGludGVnZXJfdHJhaXRzPCA6Om5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGU+Ci0gIDogcHVibGljIHN0ZDo6bnVtZXJpY19saW1pdHM8IDo6bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZT4sCi0gICAgcHVibGljIGRldGFpbDo6aW50ZWdlcl90cmFpdHNfYmFzZTwgOjpuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlLCAwLCBVTE9OR19MT05HX01BWD4KLXsgfTsKLQotI2VsaWYgZGVmaW5lZChVTE9OR0xPTkdfTUFYKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi0KLXRlbXBsYXRlPD4KLWNsYXNzIGludGVnZXJfdHJhaXRzPCA6Om5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZT4KLSAgOiBwdWJsaWMgc3RkOjpudW1lcmljX2xpbWl0czwgOjpuZG5ib29zdDo6bG9uZ19sb25nX3R5cGU+LAotICAgIHB1YmxpYyBkZXRhaWw6OmludGVnZXJfdHJhaXRzX2Jhc2U8IDo6bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlLCBMT05HTE9OR19NSU4sIExPTkdMT05HX01BWD4KLXsgfTsKLQotdGVtcGxhdGU8PgotY2xhc3MgaW50ZWdlcl90cmFpdHM8IDo6bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZT4KLSAgOiBwdWJsaWMgc3RkOjpudW1lcmljX2xpbWl0czwgOjpuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlPiwKLSAgICBwdWJsaWMgZGV0YWlsOjppbnRlZ2VyX3RyYWl0c19iYXNlPCA6Om5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUsIDAsIFVMT05HTE9OR19NQVg+Ci17IH07Ci0KLSNlbGlmIGRlZmluZWQoX0xMT05HX01BWCkgJiYgZGVmaW5lZChfQzIpICYmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykKLQotdGVtcGxhdGU8PgotY2xhc3MgaW50ZWdlcl90cmFpdHM8IDo6bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlPgotICA6IHB1YmxpYyBzdGQ6Om51bWVyaWNfbGltaXRzPCA6Om5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZT4sCi0gICAgcHVibGljIGRldGFpbDo6aW50ZWdlcl90cmFpdHNfYmFzZTwgOjpuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUsIC1fTExPTkdfTUFYIC0gX0MyLCBfTExPTkdfTUFYPgoteyB9OwotCi10ZW1wbGF0ZTw+Ci1jbGFzcyBpbnRlZ2VyX3RyYWl0czwgOjpuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlPgotICA6IHB1YmxpYyBzdGQ6Om51bWVyaWNfbGltaXRzPCA6Om5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGU+LAotICAgIHB1YmxpYyBkZXRhaWw6OmludGVnZXJfdHJhaXRzX2Jhc2U8IDo6bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZSwgMCwgX1VMTE9OR19NQVg+Ci17IH07Ci0KLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykKLS8vCi0vLyB3ZSBoYXZlIGxvbmcgbG9uZyBidXQgbm8gY29uc3RhbnRzLCB0aGlzIGhhcHBlbnMgZm9yIGV4YW1wbGUgd2l0aCBnY2MgaW4gLWFuc2kgbW9kZSwKLS8vIHdlJ2xsIGp1c3QgaGF2ZSB0byB3b3JrIG91dCB0aGUgdmFsdWVzIGZvciBvdXJzZWx2ZXMgKGFzc3VtZXMgMidzIGNvbXBsaW1lbnQgcmVwcmVzZW50YXRpb24pOgotLy8KLXRlbXBsYXRlPD4KLWNsYXNzIGludGVnZXJfdHJhaXRzPCA6Om5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZT4KLSAgOiBwdWJsaWMgc3RkOjpudW1lcmljX2xpbWl0czwgOjpuZG5ib29zdDo6bG9uZ19sb25nX3R5cGU+LAotICAgIHB1YmxpYyBkZXRhaWw6OmludGVnZXJfdHJhaXRzX2Jhc2U8IDo6bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlLCAoMUxMIDw8IChzaXplb2YoOjpuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUpICogQ0hBUl9CSVQgLSAxKSksIH4oMUxMIDw8IChzaXplb2YoOjpuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUpICogQ0hBUl9CSVQgLSAxKSk+Ci17IH07Ci0KLXRlbXBsYXRlPD4KLWNsYXNzIGludGVnZXJfdHJhaXRzPCA6Om5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGU+Ci0gIDogcHVibGljIHN0ZDo6bnVtZXJpY19saW1pdHM8IDo6bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZT4sCi0gICAgcHVibGljIGRldGFpbDo6aW50ZWdlcl90cmFpdHNfYmFzZTwgOjpuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlLCAwLCB+MHVMTD4KLXsgfTsKLQotI2VsaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTVNfSU5UNjQpCi0KLXRlbXBsYXRlPD4KLWNsYXNzIGludGVnZXJfdHJhaXRzPCBfX2ludDY0PgotICA6IHB1YmxpYyBzdGQ6Om51bWVyaWNfbGltaXRzPCBfX2ludDY0PiwKLSAgICBwdWJsaWMgZGV0YWlsOjppbnRlZ2VyX3RyYWl0c19iYXNlPCBfX2ludDY0LCBfSTY0X01JTiwgX0k2NF9NQVg+Ci17IH07Ci0KLXRlbXBsYXRlPD4KLWNsYXNzIGludGVnZXJfdHJhaXRzPCB1bnNpZ25lZCBfX2ludDY0PgotICA6IHB1YmxpYyBzdGQ6Om51bWVyaWNfbGltaXRzPCB1bnNpZ25lZCBfX2ludDY0PiwKLSAgICBwdWJsaWMgZGV0YWlsOjppbnRlZ2VyX3RyYWl0c19iYXNlPCB1bnNpZ25lZCBfX2ludDY0LCAwLCBfVUk2NF9NQVg+Ci17IH07Ci0KLSNlbmRpZgotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvKiBORE5CT09TVF9JTlRFR0VSX1RSQUlUU19IUFAgKi8KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC9jb25maWdfYmVnaW4uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL2NvbmZpZ19iZWdpbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlN2NlMDQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL2NvbmZpZ19iZWdpbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIChDKSBDb3B5cmlnaHQgSW9uIEdhenRhbmFnYSAgMjAwNi0yMDEyCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gICAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gICAgICAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2ludHJ1c2l2ZSBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0jaWZuZGVmIE5ETkJPT1NUX0lOVFJVU0lWRV9DT05GSUdfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU5UUlVTSVZFX0NPTkZJR19JTkNMVURFRAotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLQotICAgI3ByYWdtYSB3YXJuaW5nIChwdXNoKQotICAgLy8KLSAgIC8vJ2Z1bmN0aW9uJyA6IHJlc29sdmVkIG92ZXJsb2FkIHdhcyBmb3VuZCBieSBhcmd1bWVudC1kZXBlbmRlbnQgbG9va3VwCi0gICAvL0EgZnVuY3Rpb24gZm91bmQgYnkgYXJndW1lbnQtZGVwZW5kZW50IGxvb2t1cCAoS29lbmlnIGxvb2t1cCkgd2FzIGV2ZW50dWFsbHkKLSAgIC8vY2hvc2VuIGJ5IG92ZXJsb2FkIHJlc29sdXRpb24uCi0gICAvLwotICAgLy9JbiBWaXN1YWwgQysrIC5ORVQgYW5kIGVhcmxpZXIgY29tcGlsZXJzLCBhIGRpZmZlcmVudCBmdW5jdGlvbiB3b3VsZCBoYXZlCi0gICAvL2JlZW4gY2FsbGVkLiBUbyBwaWNrIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiwgdXNlIGFuIGV4cGxpY2l0bHkgcXVhbGlmaWVkIG5hbWUuCi0gICAvLwotCi0gICAvL3dhcm5pbmcgQzQyNzU6IG5vbiBkbGwtaW50ZXJmYWNlIGNsYXNzICd4JyB1c2VkIGFzIGJhc2UgZm9yCi0gICAvL2RsbC1pbnRlcmZhY2UgY2xhc3MgJ1knCi0gICAjcHJhZ21hIHdhcm5pbmcgKGRpc2FibGUgOiA0Mjc1KQotICAgLy93YXJuaW5nIEM0MjUxOiAneCcgOiBjbGFzcyAneScgbmVlZHMgdG8gaGF2ZSBkbGwtaW50ZXJmYWNlIHRvCi0gICAvL2JlIHVzZWQgYnkgY2xpZW50cyBvZiBjbGFzcyAneicKLSAgICNwcmFnbWEgd2FybmluZyAoZGlzYWJsZSA6IDQyNTEpCi0gICAjcHJhZ21hIHdhcm5pbmcgKGRpc2FibGUgOiA0Njc1KQotICAgI3ByYWdtYSB3YXJuaW5nIChkaXNhYmxlIDogNDk5NikKLSAgICNwcmFnbWEgd2FybmluZyAoZGlzYWJsZSA6IDQ1MDMpCi0gICAjcHJhZ21hIHdhcm5pbmcgKGRpc2FibGUgOiA0Mjg0KSAvLyBvZGQgcmV0dXJuIHR5cGUgZm9yIG9wZXJhdG9yLT4KLSAgICNwcmFnbWEgd2FybmluZyAoZGlzYWJsZSA6IDQyNDQpIC8vIHBvc3NpYmxlIGxvc3Mgb2YgZGF0YQotICAgI3ByYWdtYSB3YXJuaW5nIChkaXNhYmxlIDogNDUyMSkgLy8vL0Rpc2FibGUgIm11bHRpcGxlIGNvcHkgY29uc3RydWN0b3JzIHNwZWNpZmllZCIKLSAgICNwcmFnbWEgd2FybmluZyAoZGlzYWJsZSA6IDQ1MjIpCi0gICAjcHJhZ21hIHdhcm5pbmcgKGRpc2FibGUgOiA0MTQ2KQotICAgI3ByYWdtYSB3YXJuaW5nIChkaXNhYmxlIDogNDI2NykgLy9jb252ZXJzaW9uIGZyb20gJ1gnIHRvICdZJywgcG9zc2libGUgbG9zcyBvZiBkYXRhCi0gICAjcHJhZ21hIHdhcm5pbmcgKGRpc2FibGUgOiA0MTI3KSAvL2NvbmRpdGlvbmFsIGV4cHJlc3Npb24gaXMgY29uc3RhbnQKLSAgICNwcmFnbWEgd2FybmluZyAoZGlzYWJsZSA6IDQ3MDYpIC8vYXNzaWdubWVudCB3aXRoaW4gY29uZGl0aW9uYWwgZXhwcmVzc2lvbgotICAgI3ByYWdtYSB3YXJuaW5nIChkaXNhYmxlIDogNDU0MSkgLy8ndHlwZWlkJyB1c2VkIG9uIHBvbHltb3JwaGljIHR5cGUgJ25kbmJvb3N0OjpleGNlcHRpb24nIHdpdGggL0dSLQotICAgI3ByYWdtYSB3YXJuaW5nIChkaXNhYmxlIDogNDUxMikgLy8ndHlwZWlkJyB1c2VkIG9uIHBvbHltb3JwaGljIHR5cGUgJ25kbmJvb3N0OjpleGNlcHRpb24nIHdpdGggL0dSLQotI2VuZGlmCi0KLS8vI2RlZmluZSBORE5CT09TVF9JTlRSVVNJVkVfVVNFX0lURVJBVE9SX0ZBQ0FERQotLy8jZGVmaW5lIE5ETkJPT1NUX0lOVFJVU0lWRV9VU0VfSVRFUkFUT1JfRU5BQkxFX0lGX0NPTlZFUlRJQkxFCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvY29uZmlnX2VuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvY29uZmlnX2VuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhYTEyMTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL2NvbmZpZ19lbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyAoQykgQ29weXJpZ2h0IElvbiBHYXp0YW5hZ2EgIDIwMDYtMjAxMgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAgIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICAgICAgICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pbnRydXNpdmUgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotI2lmIGRlZmluZWQgTkROQk9PU1RfTVNWQwotICAgI3ByYWdtYSB3YXJuaW5nIChwb3ApCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC9oYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGguaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL2hhc19tZW1iZXJfZnVuY3Rpb25fY2FsbGFibGVfd2l0aC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2ZGE1YjkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL2hhc19tZW1iZXJfZnVuY3Rpb25fY2FsbGFibGVfd2l0aC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNTcgKzAsMCBAQAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gKEMpIENvcHlyaWdodCBJb24gR2F6dGFuYWdhIDIwMTEtMjAxMi4gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0Ci0vLyBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2ludHJ1c2l2ZSBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotLy8gc2FtcGxlLmgKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0lTX0lURVJBVElORykKLQotICAgI2lmbmRlZiBORE5CT09TVF9JTlRSVVNJVkVfREVUQUlMX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9ERVRBSUxTX0lOQ0xVREVECi0gICAjZGVmaW5lIE5ETkJPT1NUX0lOVFJVU0lWRV9ERVRBSUxfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0RFVEFJTFNfSU5DTFVERUQKLQotICAgICAgI2luY2x1ZGUgPG5kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvY29uZmlnX2JlZ2luLmhwcD4KLSAgICAgICNpbmNsdWRlIDxuZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotICAgICAgI2luY2x1ZGUgPG5kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvcHJlcHJvY2Vzc29yLmhwcD4KLSAgICAgICNpbmNsdWRlIDxuZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL21wbC5ocHA+Ci0gICAgICAjaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0gICAgICAjaW5jbHVkZSA8bmRuYm9vc3QvbW92ZS9tb3ZlLmhwcD4KLQotICAgICAgLy9NYXJrIHRoYXQgd2UgZG9uJ3Qgc3VwcG9ydCAwIGFyZyBjYWxscyBkdWUgdG8gY29tcGlsZXIgSUNFIGluIEdDQyAzLjQvNC4wLzQuMSBhbmQKLSAgICAgIC8vd3JvbmcgU0ZJTkFFIGZvciBHQ0MgNC4yLzQuMwotICAgICAgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKF9fY2xhbmdfXykgJiYgKChfX0dOVUNfXyoxMDAgKyBfX0dOVUNfTUlOT1JfXyoxMCkgPj0gMzQwKSAmJiAoKF9fR05VQ19fKjEwMCArIF9fR05VQ19NSU5PUl9fKjEwKSA8PSA0MzApCi0gICAgICAjZGVmaW5lIE5ETkJPT1NUX0lOVFJVU0lWRV9ERVRBSUxfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIXzBfQVJHU19VTlNVUFBPUlRFRAotICAgICAgI2VsaWYgZGVmaW5lZChORE5CT09TVF9JTlRFTCkgJiYgKE5ETkJPT1NUX0lOVEVMIDwgMTIwMCApCi0gICAgICAjZGVmaW5lIE5ETkJPT1NUX0lOVFJVU0lWRV9ERVRBSUxfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIXzBfQVJHU19VTlNVUFBPUlRFRAotICAgICAgI2VuZGlmCi0KLSAgICAgIG5hbWVzcGFjZSBuZG5ib29zdF9pbnRydXNpdmVfaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoIHsKLQotICAgICAgc3RydWN0IGRvbnRfY2FyZQotICAgICAgewotICAgICAgICAgZG9udF9jYXJlKC4uLik7Ci0gICAgICB9OwotCi0gICAgICBzdHJ1Y3QgcHJpdmF0ZV90eXBlCi0gICAgICB7Ci0gICAgICAgICBzdGF0aWMgcHJpdmF0ZV90eXBlIHA7Ci0gICAgICAgICBwcml2YXRlX3R5cGUgY29uc3QgJm9wZXJhdG9yLChpbnQpIGNvbnN0OwotICAgICAgfTsKLQotICAgICAgdHlwZWRlZiBjaGFyIHllc190eXBlOyAgICAgICAgICAgIC8vIHNpemVvZih5ZXNfdHlwZSkgPT0gMQotICAgICAgc3RydWN0IG5vX3R5cGV7IGNoYXIgZHVtbXlbMl07IH07IC8vIHNpemVvZihub190eXBlKSAgPT0gMgotCi0gICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgbm9fdHlwZSBpc19wcml2YXRlX3R5cGUoVCBjb25zdCAmKTsKLSAgICAgIHllc190eXBlIGlzX3ByaXZhdGVfdHlwZShwcml2YXRlX3R5cGUgY29uc3QgJik7Ci0KLSAgICAgIH0gIC8vYm9vc3RfaW50cnVzaXZlX2hhc19tZW1iZXJfZnVuY3Rpb25fY2FsbGFibGVfd2l0aAotCi0gICAgICAjaW5jbHVkZSA8bmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC9jb25maWdfZW5kLmhwcD4KLQotICAgI2VuZGlmICAgLy9ORE5CT09TVF9JTlRSVVNJVkVfREVUQUlMX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9ERVRBSUxTX0lOQ0xVREVECi0KLSNlbHNlIC8vIU5ETkJPT1NUX1BQX0lTX0lURVJBVElORwotCi0gICAjaWZuZGVmICBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FCi0gICAjZXJyb3IgIk5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUgbm90IGRlZmluZWQhIgotICAgI2VuZGlmCi0KLSAgICNpZm5kZWYgIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfTlNfQkVHSU4KLSAgICNlcnJvciAiTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9OU19CRUdJTiBub3QgZGVmaW5lZCEiCi0gICAjZW5kaWYKLQotICAgI2lmbmRlZiAgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9OU19FTkQKLSAgICNlcnJvciAiTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9OU19FTkQgbm90IGRlZmluZWQhIgotICAgI2VuZGlmCi0KLSAgICNpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlQoKSAhPSAwCi0gICAjZXJyb3IgIk5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVCgpIG11c3QgYmUgemVybyAoMCkiCi0gICAjZW5kaWYKLQotICAgI2lmIE5ETkJPT1NUX1BQX0lURVJBVElPTigpID09IDAKLQotICAgICAgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9OU19CRUdJTgotCi0gICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZT4KLSAgICAgIGNsYXNzIE5ETkJPT1NUX1BQX0NBVChoYXNfbWVtYmVyX2Z1bmN0aW9uX25hbWVkXywgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRSkKLSAgICAgIHsKLSAgICAgICAgIHN0cnVjdCBCYXNlTWl4aW4KLSAgICAgICAgIHsKLSAgICAgICAgICAgIHZvaWQgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRSgpOwotICAgICAgICAgfTsKLQotICAgICAgICAgc3RydWN0IEJhc2UgOiBwdWJsaWMgOjpuZG5ib29zdDo6aW50cnVzaXZlOjpkZXRhaWw6OnJlbW92ZV9jdjxUeXBlPjo6dHlwZSwgcHVibGljIEJhc2VNaXhpbiB7IEJhc2UoKTsgfTsKLSAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBUIHQ+IGNsYXNzIEhlbHBlcnt9OwotCi0gICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KLSAgICAgICAgIHN0YXRpYyBuZG5ib29zdF9pbnRydXNpdmVfaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoOjpub190eXBlICBkZWR1Y2UKLSAgICAgICAgICAgIChVKiwgSGVscGVyPHZvaWQgKEJhc2VNaXhpbjo6KikoKSwgJlU6Ok5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUU+KiA9IDApOwotICAgICAgICAgc3RhdGljIG5kbmJvb3N0X2ludHJ1c2l2ZV9oYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGg6Onllc190eXBlIGRlZHVjZSguLi4pOwotCi0gICAgICAgICBwdWJsaWM6Ci0gICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9Ci0gICAgICAgICAgICBzaXplb2YobmRuYm9vc3RfaW50cnVzaXZlX2hhc19tZW1iZXJfZnVuY3Rpb25fY2FsbGFibGVfd2l0aDo6eWVzX3R5cGUpID09IHNpemVvZihkZWR1Y2UoKEJhc2UqKSgwKSkpOwotICAgICAgfTsKLQotICAgICAgI2lmICFkZWZpbmVkKE5ETkJPT1NUX0lOVFJVU0lWRV9QRVJGRUNUX0ZPUldBUkRJTkcpCi0KLSAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1biwgYm9vbCBIYXNGdW5jCi0gICAgICAgICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HKE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0goKSwgTkROQk9PU1RfSU5UUlVTSVZFX1BQX1RFTVBMQVRFX1BBUkFNX1ZPSURfREVGQVVMVCwgXyk+Ci0gICAgICAgICBzdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0NBVChoYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGhfLCBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FKSwgX2ltcGwpOwotICAgICAgICAgLy8hCi0KLSAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1biBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIKCksIGNsYXNzIFApPgotICAgICAgICAgc3RydWN0IE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9DQVQoaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoXywgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRSksIF9pbXBsKQotICAgICAgICAgICAgPEZ1biwgZmFsc2UgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSCgpLCBQKT4KLSAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gZmFsc2U7Ci0gICAgICAgICB9OwotICAgICAgICAgLy8hCi0KLSAgICAgICAgICNpZiAhZGVmaW5lZChfTVNDX1ZFUikgfHwgKF9NU0NfVkVSIDwgMTYwMCkKLQotICAgICAgICAgICAgI2lmIGRlZmluZWQoTkROQk9PU1RfSU5UUlVTSVZFX0RFVEFJTF9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfMF9BUkdTX1VOU1VQUE9SVEVEKQotCi0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW4+Ci0gICAgICAgICAgICBzdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0NBVChoYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGhfLCBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FKSxfaW1wbCkKLSAgICAgICAgICAgICAgIDxGdW4sIHRydWUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElORyhORE5CT09TVF9QUF9TVUIoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSCgpLCBORE5CT09TVF9QUF9JVEVSQVRJT04oKSksIE5ETkJPT1NUX0lOVFJVU0lWRV9QUF9JREVOVElUWSwgdm9pZCk+Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAvL01hcmsgdGhhdCB3ZSBkb24ndCBzdXBwb3J0IDAgYXJnIGNhbGxzIGR1ZSB0byBjb21waWxlciBJQ0UgaW4gR0NDIDMuNC80LjAvNC4xIGFuZAotICAgICAgICAgICAgICAgLy93cm9uZyBTRklOQUUgZm9yIEdDQyA0LjIvNC4zCi0gICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgICAgICAjZWxzZSAvL2RlZmluZWQoTkROQk9PU1RfSU5UUlVTSVZFX0RFVEFJTF9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfMF9BUkdTX1VOU1VQUE9SVEVEKQotCi0gICAgICAgICAgICAvL1NwZWNpYWwgY2FzZSBmb3IgMCBhcmdzCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgRgotICAgICAgICAgICAgICAgICAgLCBzdGQ6OnNpemVfdCBOID0KLSAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZigobmRuYm9vc3Q6Om1vdmVfZGV0YWlsOjpkZWNsdmFsPEY+KCkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FICgpLCAwKSk+Ci0gICAgICAgICAgICBzdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKHplcm9hcmdfY2hlY2tlcl8sIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBuZG5ib29zdF9pbnRydXNpdmVfaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoOjp5ZXNfdHlwZSBkdW1teTsKLSAgICAgICAgICAgICAgIE5ETkJPT1NUX1BQX0NBVCh6ZXJvYXJnX2NoZWNrZXJfLCBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FKShpbnQpOwotICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAgLy9Gb3IgYnVnZ3kgY29tcGlsZXJzIGxpa2UgTVNWQyA3LjErICgoRiopMCktPmZ1bmMoKSBkb2VzIG5vdAotICAgICAgICAgICAgLy9TRklOQUUtb3V0IHRoZSB6ZXJvYXJnX2NoZWNrZXJfIGluc3RhbnRpYXRpb24gYnV0IHNpemVvZiB5aWVsZHMgdG8gMC4KLSAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEY+Ci0gICAgICAgICAgICBzdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKHplcm9hcmdfY2hlY2tlcl8sIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUpPEYsIDA+Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBuZG5ib29zdF9pbnRydXNpdmVfaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoOjpub190eXBlIGR1bW15OwotICAgICAgICAgICAgICAgTkROQk9PU1RfUFBfQ0FUKHplcm9hcmdfY2hlY2tlcl8sIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUpKGludCk7Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW4+Ci0gICAgICAgICAgICBzdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0NBVChoYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGhfLCBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FKSxfaW1wbCkKLSAgICAgICAgICAgICAgIDxGdW4sIHRydWUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElORyhORE5CT09TVF9QUF9TVUIoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSCgpLCBORE5CT09TVF9QUF9JVEVSQVRJT04oKSksIE5ETkJPT1NUX0lOVFJVU0lWRV9QUF9JREVOVElUWSwgdm9pZCk+Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBVPgotICAgICAgICAgICAgICAgc3RhdGljIE5ETkJPT1NUX1BQX0NBVCh6ZXJvYXJnX2NoZWNrZXJfLCBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FKTxVPgotICAgICAgICAgICAgICAgICAgVGVzdChORE5CT09TVF9QUF9DQVQoemVyb2FyZ19jaGVja2VyXywgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRSk8VT4qKTsKLQotICAgICAgICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFU+Ci0gICAgICAgICAgICAgICBzdGF0aWMgbmRuYm9vc3RfaW50cnVzaXZlX2hhc19tZW1iZXJfZnVuY3Rpb25fY2FsbGFibGVfd2l0aDo6bm9fdHlwZSBUZXN0KC4uLik7Ci0KLSAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gc2l6ZW9mKFRlc3Q8IEZ1biA+KDApKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT0gc2l6ZW9mKG5kbmJvb3N0X2ludHJ1c2l2ZV9oYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGg6Onllc190eXBlKTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAjZW5kaWYgICAvL2RlZmluZWQoTkROQk9PU1RfSU5UUlVTSVZFX0RFVEFJTF9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfMF9BUkdTX1VOU1VQUE9SVEVEKQotCi0gICAgICAgICAjZWxzZSAvLyNpZiAhZGVmaW5lZChfTVNDX1ZFUikgfHwgKF9NU0NfVkVSIDwgMTYwMCkKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bj4KLSAgICAgICAgICAgIHN0cnVjdCBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfQ0FUKGhhc19tZW1iZXJfZnVuY3Rpb25fY2FsbGFibGVfd2l0aF8sIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUpLF9pbXBsKQotICAgICAgICAgICAgICAgPEZ1biwgdHJ1ZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HKE5ETkJPT1NUX1BQX1NVQihORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIKCksIE5ETkJPT1NUX1BQX0lURVJBVElPTigpKSwgTkROQk9PU1RfSU5UUlVTSVZFX1BQX0lERU5USVRZLCB2b2lkKT4KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIFU+Ci0gICAgICAgICAgICAgICBzdGF0aWMgZGVjbHR5cGUoIG5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6ZGVjbHZhbDxGdW4+KCkuTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRSgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIG5kbmJvb3N0X2ludHJ1c2l2ZV9oYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGg6Onllc190eXBlKCkpCi0gICAgICAgICAgICAgICAgICBUZXN0KEZ1biopOwotCi0gICAgICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBVPgotICAgICAgICAgICAgICAgc3RhdGljIG5kbmJvb3N0X2ludHJ1c2l2ZV9oYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGg6Om5vX3R5cGUgVGVzdCguLi4pOwotCi0gICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHNpemVvZihUZXN0PEZ1bj4oMCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PSBzaXplb2YobmRuYm9vc3RfaW50cnVzaXZlX2hhc19tZW1iZXJfZnVuY3Rpb25fY2FsbGFibGVfd2l0aDo6eWVzX3R5cGUpOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICNlbmRpZiAgIC8vI2lmICFkZWZpbmVkKF9NU0NfVkVSKSB8fCAoX01TQ19WRVIgPCAxNjAwKQotCi0gICAgICAjZWxzZSAgIC8vI2lmICFkZWZpbmVkKE5ETkJPT1NUX0lOVFJVU0lWRV9QRVJGRUNUX0ZPUldBUkRJTkcpCi0KLSAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1biwgYm9vbCBIYXNGdW5jLCBjbGFzcyAuLi5BcmdzPgotICAgICAgICAgc3RydWN0IE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9DQVQoaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoXywgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRSksX2ltcGwpOwotCi0gICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW4sIGNsYXNzIC4uLkFyZ3M+Ci0gICAgICAgICBzdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0NBVChoYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGhfLCBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FKSxfaW1wbCkKLSAgICAgICAgICAgIDxGdW4sIGZhbHNlLCBBcmdzLi4uPgotICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBmYWxzZTsKLSAgICAgICAgIH07Ci0KLSAgICAgICAgIC8vU3BlY2lhbCBjYXNlIGZvciAwIGFyZ3MKLSAgICAgICAgIHRlbXBsYXRlPCBjbGFzcyBGCi0gICAgICAgICAgICAgICAsIHN0ZDo6c2l6ZV90IE4gPQotICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKChuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmRlY2x2YWw8Rj4oKS4KLSAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUgKCksIDApKT4KLSAgICAgICAgIHN0cnVjdCBORE5CT09TVF9QUF9DQVQoemVyb2FyZ19jaGVja2VyXywgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIG5kbmJvb3N0X2ludHJ1c2l2ZV9oYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGg6Onllc190eXBlIGR1bW15OwotICAgICAgICAgICAgTkROQk9PU1RfUFBfQ0FUKHplcm9hcmdfY2hlY2tlcl8sIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUpKGludCk7Ci0gICAgICAgICB9OwotCi0gICAgICAgICAvL0ZvciBidWdneSBjb21waWxlcnMgbGlrZSBNU1ZDIDcuMSsgKChGKikwKS0+ZnVuYygpIGRvZXMgbm90Ci0gICAgICAgICAvL1NGSU5BRS1vdXQgdGhlIHplcm9hcmdfY2hlY2tlcl8gaW5zdGFudGlhdGlvbiBidXQgc2l6ZW9mIHlpZWxkcyB0byAwLgotICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRj4KLSAgICAgICAgIHN0cnVjdCBORE5CT09TVF9QUF9DQVQoemVyb2FyZ19jaGVja2VyXywgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRSk8RiwgMD4KLSAgICAgICAgIHsKLSAgICAgICAgICAgIG5kbmJvb3N0X2ludHJ1c2l2ZV9oYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGg6Om5vX3R5cGUgZHVtbXk7Ci0gICAgICAgICAgICBORE5CT09TVF9QUF9DQVQoemVyb2FyZ19jaGVja2VyXywgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRSkoaW50KTsKLSAgICAgICAgIH07Ci0KLSAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bj4KLSAgICAgICAgIHN0cnVjdCBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfQ0FUKGhhc19tZW1iZXJfZnVuY3Rpb25fY2FsbGFibGVfd2l0aF8sIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUpLF9pbXBsKQotICAgICAgICAgICAgPEZ1biwgdHJ1ZT4KLSAgICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIFU+Ci0gICAgICAgICAgICBzdGF0aWMgTkROQk9PU1RfUFBfQ0FUKHplcm9hcmdfY2hlY2tlcl8sIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUpCi0gICAgICAgICAgICAgICA8VT4gVGVzdChORE5CT09TVF9QUF9DQVQoemVyb2FyZ19jaGVja2VyXywgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRSk8VT4qKTsKLQotICAgICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFU+Ci0gICAgICAgICAgICBzdGF0aWMgbmRuYm9vc3RfaW50cnVzaXZlX2hhc19tZW1iZXJfZnVuY3Rpb25fY2FsbGFibGVfd2l0aDo6bm9fdHlwZSBUZXN0KC4uLik7Ci0KLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gc2l6ZW9mKFRlc3Q8IEZ1biA+KDApKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT0gc2l6ZW9mKG5kbmJvb3N0X2ludHJ1c2l2ZV9oYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGg6Onllc190eXBlKTsKLSAgICAgICAgIH07Ci0KLSAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1biwgY2xhc3MgLi4uRG9udENhcmVzPgotICAgICAgICAgc3RydWN0IE5ETkJPT1NUX1BQX0NBVCggZnVud3JhcF8sIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUgKQotICAgICAgICAgICAgOiBGdW4KLSAgICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX1BQX0NBVCggZnVud3JhcF8sIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUgKSgpOwotICAgICAgICAgICAgdXNpbmcgRnVuOjpORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FOwotCi0gICAgICAgICAgICBuZG5ib29zdF9pbnRydXNpdmVfaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoOjpwcml2YXRlX3R5cGUKLSAgICAgICAgICAgICAgIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUKLSAgICAgICAgICAgICAgICAgICggRG9udENhcmVzLi4uKSAgY29uc3Q7Ci0gICAgICAgICB9OwotCi0gICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW4sIGNsYXNzIC4uLkFyZ3M+Ci0gICAgICAgICBzdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKCBORE5CT09TVF9QUF9DQVQoaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoXywgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRSksIF9pbXBsKQotICAgICAgICAgICAgPEZ1biwgdHJ1ZSAsIEFyZ3MuLi4+Ci0gICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgICAgICAgICAgc3RydWN0IG1ha2VfZG9udGNhcmUKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIHR5cGVkZWYgbmRuYm9vc3RfaW50cnVzaXZlX2hhc19tZW1iZXJfZnVuY3Rpb25fY2FsbGFibGVfd2l0aDo6ZG9udF9jYXJlIHR5cGU7Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVCggZnVud3JhcF8sIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUgKQotICAgICAgICAgICAgICAgPEZ1biwgdHlwZW5hbWUgbWFrZV9kb250Y2FyZTxBcmdzPjo6dHlwZS4uLj4gRnVuV3JhcDsKLQotICAgICAgICAgICAgc3RhdGljIGJvb2wgY29uc3QgdmFsdWUgPSAoc2l6ZW9mKG5kbmJvb3N0X2ludHJ1c2l2ZV9oYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGg6Om5vX3R5cGUpID09Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YobmRuYm9vc3RfaW50cnVzaXZlX2hhc19tZW1iZXJfZnVuY3Rpb25fY2FsbGFibGVfd2l0aDo6aXNfcHJpdmF0ZV90eXBlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICg6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6ZGVjbHZhbDwgRnVuV3JhcCA+KCkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIDo6bmRuYm9vc3Q6Om1vdmVfZGV0YWlsOjpkZWNsdmFsPEFyZ3M+KCkuLi4gKSwgMCkgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICAgICAgIH07Ci0KLSAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1biwgY2xhc3MgLi4uQXJncz4KLSAgICAgICAgIHN0cnVjdCBORE5CT09TVF9QUF9DQVQoIGhhc19tZW1iZXJfZnVuY3Rpb25fY2FsbGFibGVfd2l0aF8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUpCi0gICAgICAgICAgICA6IHB1YmxpYyBORE5CT09TVF9QUF9DQVQoIE5ETkJPT1NUX1BQX0NBVChoYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGhfCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUpLF9pbXBsKQotICAgICAgICAgICAgICAgPCBGdW4KLSAgICAgICAgICAgICAgICwgTkROQk9PU1RfUFBfQ0FUKCBoYXNfbWVtYmVyX2Z1bmN0aW9uX25hbWVkXwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUgKTxGdW4+Ojp2YWx1ZQotICAgICAgICAgICAgICAgLCBBcmdzLi4uID4KLSAgICAgICAgIHt9OwotCi0gICAgICAjZW5kaWYgICAvLyNpZiAhZGVmaW5lZChORE5CT09TVF9JTlRSVVNJVkVfUEVSRkVDVF9GT1JXQVJESU5HKQotCi0gICAgICBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX05TX0VORAotCi0gICAjZWxzZSAgIC8vTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkgPT0gMAotCi0gICAgICAjaWYgIWRlZmluZWQoTkROQk9PU1RfSU5UUlVTSVZFX1BFUkZFQ1RfRk9SV0FSRElORykKLQotICAgICAgICAgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9OU19CRUdJTgotCi0gICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW4+Ci0gICAgICAgICBzdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKCBORE5CT09TVF9QUF9DQVQoZnVud3JhcCwgTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAsIE5ETkJPT1NUX1BQX0NBVChfLCBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FKSkKLSAgICAgICAgICAgIDogRnVuCi0gICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9QUF9DQVQoIE5ETkJPT1NUX1BQX0NBVChmdW53cmFwLCBORE5CT09TVF9QUF9JVEVSQVRJT04oKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICwgTkROQk9PU1RfUFBfQ0FUKF8sIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUpKSgpOwotCi0gICAgICAgICAgICB1c2luZyBGdW46Ok5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUU7Ci0gICAgICAgICAgICBuZG5ib29zdF9pbnRydXNpdmVfaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoOjpwcml2YXRlX3R5cGUKLSAgICAgICAgICAgICAgIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUKLSAgICAgICAgICAgICAgICAgICggTkROQk9PU1RfUFBfRU5VTShORE5CT09TVF9QUF9JVEVSQVRJT04oKQotICAgICAgICAgICAgICAgICAgLCBORE5CT09TVF9JTlRSVVNJVkVfUFBfSURFTlRJVFkKLSAgICAgICAgICAgICAgICAgICwgbmRuYm9vc3RfaW50cnVzaXZlX2hhc19tZW1iZXJfZnVuY3Rpb25fY2FsbGFibGVfd2l0aDo6ZG9udF9jYXJlKSkgIGNvbnN0OwotICAgICAgICAgfTsKLQotICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLCBjbGFzcyBQKT4KLSAgICAgICAgIHN0cnVjdCBORE5CT09TVF9QUF9DQVQoIE5ETkJPT1NUX1BQX0NBVChoYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGhfCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FKSxfaW1wbCkKLSAgICAgICAgICAgIDxGdW4sIHRydWUKLSAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLCBQKQotICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElORyggTkROQk9PU1RfUFBfU1VCKE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0goKSwgTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBORE5CT09TVF9JTlRSVVNJVkVfUFBfSURFTlRJVFkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIHZvaWQpPgotICAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQoIE5ETkJPT1NUX1BQX0NBVChmdW53cmFwLCBORE5CT09TVF9QUF9JVEVSQVRJT04oKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgTkROQk9PU1RfUFBfQ0FUKF8sIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUpKTxGdW4+Ci0gICAgICAgICAgICAgICAgICAgICBGdW5XcmFwOwotICAgICAgICAgICAgc3RhdGljIGJvb2wgY29uc3QgdmFsdWUgPQotICAgICAgICAgICAgKHNpemVvZihuZG5ib29zdF9pbnRydXNpdmVfaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoOjpub190eXBlKSA9PQotICAgICAgICAgICAgICAgc2l6ZW9mKG5kbmJvb3N0X2ludHJ1c2l2ZV9oYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGg6OmlzX3ByaXZhdGVfdHlwZQotICAgICAgICAgICAgICAgICAgICAgICAgKCAgKG5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6ZGVjbHZhbDxGdW5XcmFwPigpLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBORE5CT09TVF9QUF9FTlVNKCBORE5CT09TVF9QUF9JVEVSQVRJT04oKSwgTkROQk9PU1RfSU5UUlVTSVZFX1BQX0RFQ0xWQUwsIF8pICksIDAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICk7Ci0gICAgICAgICB9OwotCi0gICAgICAgICBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX05TX0VORAotICAgICAgI2VuZGlmICAgLy8jaWYgIWRlZmluZWQoTkROQk9PU1RfSU5UUlVTSVZFX1BFUkZFQ1RfRk9SV0FSRElORykKLQotICAgI2VuZGlmICAgLy9ORE5CT09TVF9QUF9JVEVSQVRJT04oKSA9PSAwCi0KLSAgICNpZiBORE5CT09TVF9QUF9JVEVSQVRJT04oKSA9PSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIKCkKLQotICAgICAgI2lmICFkZWZpbmVkKE5ETkJPT1NUX0lOVFJVU0lWRV9QRVJGRUNUX0ZPUldBUkRJTkcpCi0KLSAgICAgICAgIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfTlNfQkVHSU4KLQotICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuCi0gICAgICAgICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HKE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0goKSwgTkROQk9PU1RfSU5UUlVTSVZFX1BQX1RFTVBMQVRFX1BBUkFNX1ZPSURfREVGQVVMVCwgXyk+Ci0gICAgICAgICBzdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKGhhc19tZW1iZXJfZnVuY3Rpb25fY2FsbGFibGVfd2l0aF8sIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUpCi0gICAgICAgICAgICA6IHB1YmxpYyBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfQ0FUKGhhc19tZW1iZXJfZnVuY3Rpb25fY2FsbGFibGVfd2l0aF8sIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUpLCBfaW1wbCkKLSAgICAgICAgICAgICAgIDxGdW4sIE5ETkJPT1NUX1BQX0NBVChoYXNfbWVtYmVyX2Z1bmN0aW9uX25hbWVkXywgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRSk8RnVuPjo6dmFsdWUKLSAgICAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0goKSwgUCkgPgotICAgICAgICAge307Ci0KLSAgICAgICAgIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfTlNfRU5ECi0KLSAgICAgICNlbmRpZiAvLyNpZiAhZGVmaW5lZChORE5CT09TVF9JTlRSVVNJVkVfUEVSRkVDVF9GT1JXQVJESU5HKQotCi0gICAgICAjdW5kZWYgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRQotICAgICAgI3VuZGVmIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfTlNfQkVHSU4KLSAgICAgICN1bmRlZiBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX05TX0VORAotCi0gICAjZW5kaWYgICAvLyNpZiBORE5CT09TVF9QUF9JVEVSQVRJT04oKSA9PSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIKCkKLQotI2VuZGlmICAgLy8hTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvbWVtb3J5X3V0aWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL21lbW9yeV91dGlsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGQ4OGVmOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvbWVtb3J5X3V0aWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjg4ICswLDAgQEAKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIChDKSBDb3B5cmlnaHQgUGFibG8gSGFscGVybiAyMDA5LiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QKLS8vIFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gKEMpIENvcHlyaWdodCBJb24gR2F6dGFuYWdhIDIwMTEtMjAxMi4gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0Ci0vLyBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2ludHJ1c2l2ZSBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotI2lmbmRlZiBORE5CT09TVF9JTlRSVVNJVkVfQUxMT0NBVE9SX01FTU9SWV9VVElMX0hQUAotI2RlZmluZSBORE5CT09TVF9JTlRSVVNJVkVfQUxMT0NBVE9SX01FTU9SWV9VVElMX0hQUAotCi0jaWYgKGRlZmluZWQgX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMjAwKQotIyAgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC9jb25maWdfYmVnaW4uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC9tcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvcHJlcHJvY2Vzc29yLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSBpbnRydXNpdmUgewotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIFQqIGFkZHJlc3NvZihUJiBvYmopCi17Ci0gICByZXR1cm4gc3RhdGljX2Nhc3Q8VCo+Ci0gICAgICAoc3RhdGljX2Nhc3Q8dm9pZCo+Ci0gICAgICAgICAoY29uc3RfY2FzdDxjaGFyKj4KLSAgICAgICAgICAgICgmcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyJj4ob2JqKSkKLSAgICAgICAgICkKLSAgICAgICk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgdW52b2lkIHsgdHlwZWRlZiBUIHR5cGU7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgdW52b2lkPHZvaWQ+IHsgc3RydWN0IHR5cGUgeyB9OyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IHVudm9pZDxjb25zdCB2b2lkPiB7IHN0cnVjdCB0eXBlIHsgfTsgfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgTG93UHJpb3JpdHlDb252ZXJzaW9uCi17Ci0gICAgLy8gQ29udmVydGlibGUgZnJvbSBUIHdpdGggdXNlci1kZWZpbmVkLWNvbnZlcnNpb24gcmFuay4KLSAgICBMb3dQcmlvcml0eUNvbnZlcnNpb24oY29uc3QgVCYpIHsgfQotfTsKLQotLy8gSW5mcmFzdHJ1Y3R1cmUgZm9yIHByb3ZpZGluZyBhIGRlZmF1bHQgdHlwZSBmb3IgVDo6VE5BTUUgaWYgYWJzZW50LgotI2RlZmluZSBORE5CT09TVF9JTlRSVVNJVkVfSU5TVEFOVElBVEVfREVGQVVMVF9UWVBFX1RNUExUKFROQU1FKSAgICAgICAgICAgICAgXAotICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIERlZmF1bHRUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgc3RydWN0IGJvb3N0X2ludHJ1c2l2ZV9kZWZhdWx0X3R5cGVfICMjIFROQU1FICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFg+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgc3RhdGljIGNoYXIgdGVzdChpbnQsIHR5cGVuYW1lIFg6OlROQU1FKik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFg+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgc3RhdGljIGludCB0ZXN0KG5kbmJvb3N0OjppbnRydXNpdmU6OmRldGFpbDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgTG93UHJpb3JpdHlDb252ZXJzaW9uPGludD4sIHZvaWQqKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgc3RydWN0IERlZmF1bHRXcmFwIHsgdHlwZWRlZiBEZWZhdWx0VHlwZSBUTkFNRTsgfTsgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSAoMSA9PSBzaXplb2YodGVzdDxUPigwLCAwKSkpOyAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgdHlwZWRlZiB0eXBlbmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgOjpuZG5ib29zdDo6aW50cnVzaXZlOjpkZXRhaWw6OmlmX2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgPHZhbHVlLCBULCBEZWZhdWx0V3JhcD46OnR5cGU6OlROQU1FIHR5cGU7ICAgICAgICAgICAgICAgICAgICAgXAotICAgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIERlZmF1bHRUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgc3RydWN0IGJvb3N0X2ludHJ1c2l2ZV9ldmFsX2RlZmF1bHRfdHlwZV8gIyMgVE5BTUUgICAgICAgICAgICAgICAgICAgICAgXAotICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFg+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgc3RhdGljIGNoYXIgdGVzdChpbnQsIHR5cGVuYW1lIFg6OlROQU1FKik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFg+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgc3RhdGljIGludCB0ZXN0KG5kbmJvb3N0OjppbnRydXNpdmU6OmRldGFpbDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgTG93UHJpb3JpdHlDb252ZXJzaW9uPGludD4sIHZvaWQqKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgc3RydWN0IERlZmF1bHRXcmFwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgeyB0eXBlZGVmIHR5cGVuYW1lIERlZmF1bHRUeXBlOjp0eXBlIFROQU1FOyB9OyAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSAoMSA9PSBzaXplb2YodGVzdDxUPigwLCAwKSkpOyAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgdHlwZWRlZiB0eXBlbmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgOjpuZG5ib29zdDo6aW50cnVzaXZlOjpkZXRhaWw6OmV2YWxfaWZfYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgPCB2YWx1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgLCA6Om5kbmJvb3N0OjppbnRydXNpdmU6OmRldGFpbDo6aWRlbnRpdHk8VD4gICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgLCA6Om5kbmJvb3N0OjppbnRydXNpdmU6OmRldGFpbDo6aWRlbnRpdHk8RGVmYXVsdFdyYXA+ICAgICAgICAgICAgXAotICAgICAgICAgICAgPjo6dHlwZTo6VE5BTUUgdHlwZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLy8KLQotI2RlZmluZSBORE5CT09TVF9JTlRSVVNJVkVfT0JUQUlOX1RZUEVfV0lUSF9ERUZBVUxUKElOU1RBTlRJQVRJT05fTlNfUFJFRklYLCBULCBUTkFNRSwgVElNUEwpICAgXAotICAgICAgdHlwZW5hbWUgSU5TVEFOVElBVElPTl9OU19QUkVGSVggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgYm9vc3RfaW50cnVzaXZlX2RlZmF1bHRfdHlwZV8gIyMgVE5BTUU8IFQsIFRJTVBMID46OnR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLy8KLQotI2RlZmluZSBORE5CT09TVF9JTlRSVVNJVkVfT0JUQUlOX1RZUEVfV0lUSF9FVkFMX0RFRkFVTFQoSU5TVEFOVElBVElPTl9OU19QUkVGSVgsIFQsIFROQU1FLCBUSU1QTCkgXAotICAgICAgdHlwZW5hbWUgSU5TVEFOVElBVElPTl9OU19QUkVGSVggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgYm9vc3RfaW50cnVzaXZlX2V2YWxfZGVmYXVsdF90eXBlXyAjIyBUTkFNRTwgVCwgVElNUEwgPjo6dHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLy8KLQotfX19ICAgLy9uYW1lc3BhY2UgbmRuYm9vc3Q6OmludHJ1c2l2ZTo6ZGV0YWlsCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL2hhc19tZW1iZXJfZnVuY3Rpb25fY2FsbGFibGVfd2l0aC5ocHA+Ci0KLSNkZWZpbmUgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRSBwb2ludGVyX3RvCi0jZGVmaW5lIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfTlNfQkVHSU4gbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGludHJ1c2l2ZSB7IG5hbWVzcGFjZSBkZXRhaWwgewotI2RlZmluZSBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX05TX0VORCAgIH19fQotI2RlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgKDMsICgwLCAxLCA8bmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC9oYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGguaHBwPikpCi0jaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotI2RlZmluZSBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FIHN0YXRpY19jYXN0X2Zyb20KLSNkZWZpbmUgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9OU19CRUdJTiBuYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW50cnVzaXZlIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0jZGVmaW5lIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfTlNfRU5EICAgfX19Ci0jZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSAoMywgKDAsIDEsIDxuZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL2hhc19tZW1iZXJfZnVuY3Rpb25fY2FsbGFibGVfd2l0aC5ocHA+KSkKLSNpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi0jZGVmaW5lIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUgY29uc3RfY2FzdF9mcm9tCi0jZGVmaW5lIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfTlNfQkVHSU4gbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGludHJ1c2l2ZSB7IG5hbWVzcGFjZSBkZXRhaWwgewotI2RlZmluZSBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX05TX0VORCAgIH19fQotI2RlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgKDMsICgwLCAxLCA8bmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC9oYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGguaHBwPikpCi0jaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotI2RlZmluZSBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FIGR5bmFtaWNfY2FzdF9mcm9tCi0jZGVmaW5lIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfTlNfQkVHSU4gbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGludHJ1c2l2ZSB7IG5hbWVzcGFjZSBkZXRhaWwgewotI2RlZmluZSBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX05TX0VORCAgIH19fQotI2RlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgKDMsICgwLCAxLCA8bmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC9oYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGguaHBwPikpCi0jaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSBpbnRydXNpdmUgewotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLU5ETkJPT1NUX0lOVFJVU0lWRV9JTlNUQU5USUFURV9ERUZBVUxUX1RZUEVfVE1QTFQoZWxlbWVudF90eXBlKQotTkROQk9PU1RfSU5UUlVTSVZFX0lOU1RBTlRJQVRFX0RFRkFVTFRfVFlQRV9UTVBMVChkaWZmZXJlbmNlX3R5cGUpCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vc3RydWN0IGZpcnN0X3BhcmFtCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgZmlyc3RfcGFyYW0KLXsgIHR5cGVkZWYgdm9pZCB0eXBlOyAgIH07Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMpCi0KLSAgIHRlbXBsYXRlIDx0ZW1wbGF0ZSA8dHlwZW5hbWUsIHR5cGVuYW1lLi4uPiBjbGFzcyBUZW1wbGF0ZUNsYXNzLCB0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmdzPgotICAgc3RydWN0IGZpcnN0X3BhcmFtPCBUZW1wbGF0ZUNsYXNzPFQsIEFyZ3MuLi4+ID4KLSAgIHsKLSAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgfTsKLQotI2Vsc2UgLy9DKyswMyBjb21waWxlcnMKLQotICAgI2RlZmluZSBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyhuKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgdGVtcGxhdGUgPCB0ZW1wbGF0ZSA8dHlwZW5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElORyhuLCBORE5CT09TVF9JTlRSVVNJVkVfUFBfSURFTlRJVFksIHR5cGVuYW1lKSA+ICAgXAotICAgICAgICAgICAgY2xhc3MgVGVtcGxhdGVDbGFzcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgLCB0eXBlbmFtZSBUIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKG4sIGNsYXNzIFApPiAgICAgICAgICAgICAgICAgXAotICAgc3RydWN0IGZpcnN0X3BhcmFtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgPCBUZW1wbGF0ZUNsYXNzPFQgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMobiwgUCk+ID4gICAgICAgICAgICAgICAgICAgICAgXAotICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgdHlwZWRlZiBUIHR5cGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgLy8KLSAgICNkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfTElNSVRTICgwLCBORE5CT09TVF9JTlRSVVNJVkVfTUFYX0NPTlNUUlVDVE9SX1BBUkFNRVRFUlMpCi0gICAjaW5jbHVkZSBORE5CT09TVF9QUF9MT0NBTF9JVEVSQVRFKCkKLQotI2VuZGlmICAgLy8hZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMpCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy9zdHJ1Y3QgdHlwZV9yZWJpbmRfbW9kZQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUHRyLCB0eXBlbmFtZSBUPgotc3RydWN0IHR5cGVfaGFzX3JlYmluZAotewotICAgdGVtcGxhdGUgPHR5cGVuYW1lIFg+Ci0gICAjaWYgIWRlZmluZWQgKF9fU1VOUFJPX0NDKQotICAgc3RhdGljIGNoYXIgdGVzdChpbnQsIHR5cGVuYW1lIFg6OnRlbXBsYXRlIHJlYmluZDxUPiopOwotICAgI2Vsc2UKLSAgIHN0YXRpYyBjaGFyIHRlc3QoaW50LCB0eXBlbmFtZSBYOjpyZWJpbmQ8VD4qKTsKLSAgICNlbmRpZgotCi0gICB0ZW1wbGF0ZSA8dHlwZW5hbWUgWD4KLSAgIHN0YXRpYyBpbnQgdGVzdChuZG5ib29zdDo6aW50cnVzaXZlOjpkZXRhaWw6Okxvd1ByaW9yaXR5Q29udmVyc2lvbjxpbnQ+LCB2b2lkKik7Ci0KLSAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gKDEgPT0gc2l6ZW9mKHRlc3Q8UHRyPigwLCAwKSkpOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFB0ciwgdHlwZW5hbWUgVD4KLXN0cnVjdCB0eXBlX2hhc19yZWJpbmRfb3RoZXIKLXsKLSAgIHRlbXBsYXRlIDx0eXBlbmFtZSBYPgotICAgI2lmICFkZWZpbmVkIChfX1NVTlBST19DQykKLSAgIHN0YXRpYyBjaGFyIHRlc3QoaW50LCB0eXBlbmFtZSBYOjp0ZW1wbGF0ZSByZWJpbmQ8VD46Om90aGVyKik7Ci0gICAjZWxzZQotICAgc3RhdGljIGNoYXIgdGVzdChpbnQsIHR5cGVuYW1lIFg6OnJlYmluZDxUPjo6b3RoZXIqKTsKLSAgICNlbmRpZgotCi0gICB0ZW1wbGF0ZSA8dHlwZW5hbWUgWD4KLSAgIHN0YXRpYyBpbnQgdGVzdChuZG5ib29zdDo6aW50cnVzaXZlOjpkZXRhaWw6Okxvd1ByaW9yaXR5Q29udmVyc2lvbjxpbnQ+LCB2b2lkKik7Ci0KLSAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gKDEgPT0gc2l6ZW9mKHRlc3Q8UHRyPigwLCAwKSkpOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFB0ciwgdHlwZW5hbWUgVD4KLXN0cnVjdCB0eXBlX3JlYmluZF9tb2RlCi17Ci0gICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IHJlYmluZCA9ICAgICAgICh1bnNpZ25lZCBpbnQpdHlwZV9oYXNfcmViaW5kPFB0ciwgVD46OnZhbHVlOwotICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCByZWJpbmRfb3RoZXIgPSAodW5zaWduZWQgaW50KXR5cGVfaGFzX3JlYmluZF9vdGhlcjxQdHIsIFQ+Ojp2YWx1ZTsKLSAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbW9kZSA9ICAgICAgICAgcmViaW5kICsgcmViaW5kKnJlYmluZF9vdGhlcjsKLX07Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy9zdHJ1Y3QgdHlwZV9yZWJpbmRlcgotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUHRyLCB0eXBlbmFtZSBVLCB1bnNpZ25lZCBpbnQgUmViaW5kTW9kZSA9IHR5cGVfcmViaW5kX21vZGU8UHRyLCBVPjo6bW9kZT4KLXN0cnVjdCB0eXBlX3JlYmluZGVyOwotCi0vLyBJbXBsZW1lbnRhdGlvbiBvZiBwb2ludGVyX3RyYWl0czxQdHI+OjpyZWJpbmQgaWYgUHRyIGhhcwotLy8gaXRzIG93biByZWJpbmQ6Om90aGVyIHR5cGUgKEMrKzAzKQotdGVtcGxhdGUgPHR5cGVuYW1lIFB0ciwgdHlwZW5hbWUgVT4KLXN0cnVjdCB0eXBlX3JlYmluZGVyPCBQdHIsIFUsIDJ1ID4KLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgUHRyOjp0ZW1wbGF0ZSByZWJpbmQ8VT46Om90aGVyIHR5cGU7Ci19OwotCi0vLyBJbXBsZW1lbnRhdGlvbiBvZiBwb2ludGVyX3RyYWl0czxQdHI+OjpyZWJpbmQgaWYgUHRyIGhhcwotLy8gaXRzIG93biByZWJpbmQgdGVtcGxhdGUuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUHRyLCB0eXBlbmFtZSBVPgotc3RydWN0IHR5cGVfcmViaW5kZXI8IFB0ciwgVSwgMXUgPgotewotICAgdHlwZWRlZiB0eXBlbmFtZSBQdHI6OnRlbXBsYXRlIHJlYmluZDxVPiB0eXBlOwotfTsKLQotLy8gU3BlY2lhbGl6YXRpb24gb2YgcG9pbnRlcl90cmFpdHM8UHRyPjo6cmViaW5kIGlmIFB0ciBkb2VzIG5vdAotLy8gaGF2ZSBpdHMgb3duIHJlYmluZCB0ZW1wbGF0ZSBidXQgaGFzIGEgdGhlIGZvcm0gUHRyPGNsYXNzIFQsCi0vLyBPdGhlckFyZ3M+LCB3aGVyZSBPdGhlckFyZ3MgY29tcHJpc2VzIHplcm8gb3IgbW9yZSB0eXBlIHBhcmFtZXRlcnMuCi0vLyBNYW55IHBvaW50ZXJzIGZpdCB0aGlzIGZvcm0sIGhlbmNlIG1hbnkgcG9pbnRlcnMgd2lsbCBnZXQgYQotLy8gcmVhc29uYWJsZSBkZWZhdWx0IGZvciByZWJpbmQuCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKQotCi10ZW1wbGF0ZSA8dGVtcGxhdGUgPGNsYXNzLCBjbGFzcy4uLj4gY2xhc3MgUHRyLCB0eXBlbmFtZSBULCBjbGFzcy4uLiBUbiwgY2xhc3MgVT4KLXN0cnVjdCB0eXBlX3JlYmluZGVyPFB0cjxULCBUbi4uLj4sIFUsIDB1ID4KLXsKLSAgIHR5cGVkZWYgUHRyPFUsIFRuLi4uPiB0eXBlOwotfTsKLQotLy9OZWVkZWQgZm9yIG5vbi1jb25mb3JtaW5nIGNvbXBpbGVycyBsaWtlIEdDQyA0LjMKLXRlbXBsYXRlIDx0ZW1wbGF0ZSA8Y2xhc3M+IGNsYXNzIFB0ciwgdHlwZW5hbWUgVCwgY2xhc3MgVT4KLXN0cnVjdCB0eXBlX3JlYmluZGVyPFB0cjxUPiwgVSwgMHUgPgotewotICAgdHlwZWRlZiBQdHI8VT4gdHlwZTsKLX07Ci0KLSNlbHNlIC8vQysrMDMgY29tcGlsZXJzCi0KLSNkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8obikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlIDwgdGVtcGxhdGUgPHR5cGVuYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkcobiwgTkROQk9PU1RfSU5UUlVTSVZFX1BQX0lERU5USVRZLCB0eXBlbmFtZSkgPiAgIFwKLSAgICAgICAgICAgY2xhc3MgUHRyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICwgdHlwZW5hbWUgVCBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhuLCBjbGFzcyBQKSAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICwgY2xhc3MgVT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXN0cnVjdCB0eXBlX3JlYmluZGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIDwgUHRyPFQgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMobiwgUCk+LCBVLCAwdSA+ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIHR5cGVkZWYgUHRyPFUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMobiwgUCk+IHR5cGU7ICAgICAgICAgICAgICAgICAgICAgIFwKLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8vCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0xJTUlUUyAoMCwgTkROQk9PU1RfSU5UUlVTSVZFX01BWF9DT05TVFJVQ1RPUl9QQVJBTUVURVJTKQotI2luY2x1ZGUgTkROQk9PU1RfUFBfTE9DQUxfSVRFUkFURSgpCi0KLSNlbmRpZiAgIC8vIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKQotCi19ICAvL25hbWVzcGFjZSBkZXRhaWwgewotfSAgLy9uYW1lc3BhY2UgaW50cnVzaXZlIHsKLX0gIC8vbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvY29uZmlnX2VuZC5ocHA+Ci0KLSNlbmRpZiAvLyAhIGRlZmluZWQoTkROQk9PU1RfSU5UUlVTSVZFX0FMTE9DQVRPUl9NRU1PUllfVVRJTF9IUFApCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC9tcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZmUzNDBjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC9tcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzgzICswLDAgQEAKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gKEMpIENvcHlyaWdodCBJb24gR2F6dGFuYWdhICAyMDA2LTIwMTIKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgICAgICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW50cnVzaXZlIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSNpZm5kZWYgTkROQk9PU1RfSU5UUlVTSVZFX0RFVEFJTF9NUExfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0lOVFJVU0lWRV9ERVRBSUxfTVBMX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC9jb25maWdfYmVnaW4uaHBwPgotI2luY2x1ZGUgPGNzdGRkZWY+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgaW50cnVzaXZlIHsKLW5hbWVzcGFjZSBkZXRhaWwgewotCi10eXBlZGVmIGNoYXIgb25lOwotc3RydWN0IHR3byB7b25lIF9bMl07fTsKLQotdGVtcGxhdGU8IGJvb2wgQ18gPgotc3RydWN0IGJvb2xfCi17Ci0gICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IENfOwotfTsKLQotdHlwZWRlZiBib29sXzx0cnVlPiAgICAgICAgdHJ1ZV87Ci10eXBlZGVmIGJvb2xfPGZhbHNlPiAgICAgICBmYWxzZV87Ci0KLXR5cGVkZWYgdHJ1ZV8gIHRydWVfdHlwZTsKLXR5cGVkZWYgZmFsc2VfIGZhbHNlX3R5cGU7Ci0KLXR5cGVkZWYgY2hhciB5ZXNfdHlwZTsKLXN0cnVjdCBub190eXBlCi17Ci0gICBjaGFyIHBhZGRpbmdbOF07Ci19OwotCi10ZW1wbGF0ZSA8Ym9vbCBCLCBjbGFzcyBUID0gdm9pZD4KLXN0cnVjdCBlbmFibGVfaWZfYyB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgZW5hYmxlX2lmX2M8ZmFsc2UsIFQ+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQ29uZCwgY2xhc3MgVCA9IHZvaWQ+Ci1zdHJ1Y3QgZW5hYmxlX2lmIDogcHVibGljIGVuYWJsZV9pZl9jPENvbmQ6OnZhbHVlLCBUPnt9OwotCi10ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBQYXJhbT4KLXN0cnVjdCBhcHBseQotewotICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTxQYXJhbT46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPgotY2xhc3MgaXNfY29udmVydGlibGUKLXsKLSAgIHR5cGVkZWYgY2hhciB0cnVlX3Q7Ci0gICBjbGFzcyBmYWxzZV90IHsgY2hhciBkdW1teVsyXTsgfTsKLSAgIHN0YXRpYyB0cnVlX3QgZGlzcGF0Y2goVSk7Ci0gICBzdGF0aWMgZmFsc2VfdCBkaXNwYXRjaCguLi4pOwotICAgc3RhdGljIGNvbnN0IFQgJnRyaWdnZXIoKTsKLSAgIHB1YmxpYzoKLSAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gc2l6ZW9mKGRpc3BhdGNoKHRyaWdnZXIoKSkpID09IHNpemVvZih0cnVlX3QpOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBib29sIEMKLSAgICAsIHR5cGVuYW1lIFQxCi0gICAgLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBpZl9jCi17Ci0gICAgdHlwZWRlZiBUMSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMQotICAgICwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgaWZfYzxmYWxzZSxUMSxUMj4KLXsKLSAgICB0eXBlZGVmIFQyIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEMKLSAgICAsIHR5cGVuYW1lIFQxCi0gICAgLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBpZl8KLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfYzwwICE9IEM6OnZhbHVlLCBUMSwgVDI+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGJvb2wgQwotICAgICwgdHlwZW5hbWUgRjEKLSAgICAsIHR5cGVuYW1lIEYyCi0gICAgPgotc3RydWN0IGV2YWxfaWZfYwotICAgIDogaWZfYzxDLEYxLEYyPjo6dHlwZQote307Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgQwotICAgICwgdHlwZW5hbWUgVDEKLSAgICAsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGV2YWxfaWYKLSAgICA6IGlmXzxDLFQxLFQyPjo6dHlwZQote307Ci0KLS8vIGlkZW50aXR5IGlzIGFuIGV4dGVuc2lvbjogaXQgaXMgbm90IHBhcnQgb2YgdGhlIHN0YW5kYXJkLgotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaWRlbnRpdHkKLXsKLSAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgfHwgZGVmaW5lZChfX0JPUkxBTkRDXykKLSNkZWZpbmUgTkROQk9PU1RfSU5UUlVTSVZFX1RUX0RFQ0wgX19jZGVjbAotI2Vsc2UKLSNkZWZpbmUgTkROQk9PU1RfSU5UUlVTSVZFX1RUX0RFQ0wKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfTVNDX0VYVEVOU0lPTlMpICYmICFkZWZpbmVkKF9fQk9STEFORF9fKSAmJiAhZGVmaW5lZChfV0lONjQpICYmICFkZWZpbmVkKFVOREVSX0NFKQotI2RlZmluZSBORE5CT09TVF9JTlRSVVNJVkVfVFRfVEVTVF9NU0NfRlVOQ19TSUdTCi0jZW5kaWYKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfdW5hcnlfb3JfYmluYXJ5X2Z1bmN0aW9uX2ltcGwKLXsgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gZmFsc2U7IH07Ci0KLS8vIHNlZSBib29zdCB0aWNrZXQgIzQwOTQKLS8vIGF2b2lkIGR1cGxpY2F0ZSBkZWZpbml0aW9ucyBvZiBpc191bmFyeV9vcl9iaW5hcnlfZnVuY3Rpb25faW1wbAotI2lmbmRlZiBORE5CT09TVF9JTlRSVVNJVkVfVFRfVEVTVF9NU0NfRlVOQ19TSUdTCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBSPgotc3RydWN0IGlzX3VuYXJ5X29yX2JpbmFyeV9mdW5jdGlvbl9pbXBsPFIgKCopKCk+Ci17ICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7ICB9OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUj4KLXN0cnVjdCBpc191bmFyeV9vcl9iaW5hcnlfZnVuY3Rpb25faW1wbDxSICgqKSguLi4pPgoteyAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyAgfTsKLQotI2Vsc2UgLy8gTkROQk9PU1RfSU5UUlVTSVZFX1RUX1RFU1RfTVNDX0ZVTkNfU0lHUwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUj4KLXN0cnVjdCBpc191bmFyeV9vcl9iaW5hcnlfZnVuY3Rpb25faW1wbDxSIChfX3N0ZGNhbGwqKSgpPgoteyAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyAgfTsKLQotI2lmbmRlZiBfTUFOQUdFRAotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUj4KLXN0cnVjdCBpc191bmFyeV9vcl9iaW5hcnlfZnVuY3Rpb25faW1wbDxSIChfX2Zhc3RjYWxsKikoKT4KLXsgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgIH07Ci0KLSNlbmRpZgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUj4KLXN0cnVjdCBpc191bmFyeV9vcl9iaW5hcnlfZnVuY3Rpb25faW1wbDxSIChfX2NkZWNsKikoKT4KLXsgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgIH07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBSPgotc3RydWN0IGlzX3VuYXJ5X29yX2JpbmFyeV9mdW5jdGlvbl9pbXBsPFIgKF9fY2RlY2wqKSguLi4pPgoteyAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyAgfTsKLQotI2VuZGlmCi0KLS8vIHNlZSBib29zdCB0aWNrZXQgIzQwOTQKLS8vIGF2b2lkIGR1cGxpY2F0ZSBkZWZpbml0aW9ucyBvZiBpc191bmFyeV9vcl9iaW5hcnlfZnVuY3Rpb25faW1wbAotI2lmbmRlZiBORE5CT09TVF9JTlRSVVNJVkVfVFRfVEVTVF9NU0NfRlVOQ19TSUdTCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBSLCBjbGFzcyBUMD4KLXN0cnVjdCBpc191bmFyeV9vcl9iaW5hcnlfZnVuY3Rpb25faW1wbDxSICgqKShUMCk+Ci17ICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7ICB9OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgY2xhc3MgVDA+Ci1zdHJ1Y3QgaXNfdW5hcnlfb3JfYmluYXJ5X2Z1bmN0aW9uX2ltcGw8UiAoKikoVDAuLi4pPgoteyAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyAgfTsKLQotI2Vsc2UgLy8gTkROQk9PU1RfSU5UUlVTSVZFX1RUX1RFU1RfTVNDX0ZVTkNfU0lHUwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgY2xhc3MgVDA+Ci1zdHJ1Y3QgaXNfdW5hcnlfb3JfYmluYXJ5X2Z1bmN0aW9uX2ltcGw8UiAoX19zdGRjYWxsKikoVDApPgoteyAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyAgfTsKLQotI2lmbmRlZiBfTUFOQUdFRAotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgY2xhc3MgVDA+Ci1zdHJ1Y3QgaXNfdW5hcnlfb3JfYmluYXJ5X2Z1bmN0aW9uX2ltcGw8UiAoX19mYXN0Y2FsbCopKFQwKT4KLXsgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgIH07Ci0KLSNlbmRpZgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgY2xhc3MgVDA+Ci1zdHJ1Y3QgaXNfdW5hcnlfb3JfYmluYXJ5X2Z1bmN0aW9uX2ltcGw8UiAoX19jZGVjbCopKFQwKT4KLXsgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgIH07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBSLCBjbGFzcyBUMD4KLXN0cnVjdCBpc191bmFyeV9vcl9iaW5hcnlfZnVuY3Rpb25faW1wbDxSIChfX2NkZWNsKikoVDAuLi4pPgoteyAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyAgfTsKLQotI2VuZGlmCi0KLS8vIHNlZSBib29zdCB0aWNrZXQgIzQwOTQKLS8vIGF2b2lkIGR1cGxpY2F0ZSBkZWZpbml0aW9ucyBvZiBpc191bmFyeV9vcl9iaW5hcnlfZnVuY3Rpb25faW1wbAotI2lmbmRlZiBORE5CT09TVF9JTlRSVVNJVkVfVFRfVEVTVF9NU0NfRlVOQ19TSUdTCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBSLCBjbGFzcyBUMCwgY2xhc3MgVDE+Ci1zdHJ1Y3QgaXNfdW5hcnlfb3JfYmluYXJ5X2Z1bmN0aW9uX2ltcGw8UiAoKikoVDAsIFQxKT4KLXsgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgIH07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBSLCBjbGFzcyBUMCwgY2xhc3MgVDE+Ci1zdHJ1Y3QgaXNfdW5hcnlfb3JfYmluYXJ5X2Z1bmN0aW9uX2ltcGw8UiAoKikoVDAsIFQxLi4uKT4KLXsgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgIH07Ci0KLSNlbHNlIC8vIE5ETkJPT1NUX0lOVFJVU0lWRV9UVF9URVNUX01TQ19GVU5DX1NJR1MKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFIsIGNsYXNzIFQwLCBjbGFzcyBUMT4KLXN0cnVjdCBpc191bmFyeV9vcl9iaW5hcnlfZnVuY3Rpb25faW1wbDxSIChfX3N0ZGNhbGwqKShUMCwgVDEpPgoteyAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyAgfTsKLQotI2lmbmRlZiBfTUFOQUdFRAotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgY2xhc3MgVDAsIGNsYXNzIFQxPgotc3RydWN0IGlzX3VuYXJ5X29yX2JpbmFyeV9mdW5jdGlvbl9pbXBsPFIgKF9fZmFzdGNhbGwqKShUMCwgVDEpPgoteyAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyAgfTsKLQotI2VuZGlmCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBSLCBjbGFzcyBUMCwgY2xhc3MgVDE+Ci1zdHJ1Y3QgaXNfdW5hcnlfb3JfYmluYXJ5X2Z1bmN0aW9uX2ltcGw8UiAoX19jZGVjbCopKFQwLCBUMSk+Ci17ICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7ICB9OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgY2xhc3MgVDAsIGNsYXNzIFQxPgotc3RydWN0IGlzX3VuYXJ5X29yX2JpbmFyeV9mdW5jdGlvbl9pbXBsPFIgKF9fY2RlY2wqKShUMCwgVDEuLi4pPgoteyAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyAgfTsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc191bmFyeV9vcl9iaW5hcnlfZnVuY3Rpb25faW1wbDxUJj4KLXsgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gZmFsc2U7IH07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfdW5hcnlfb3JfYmluYXJ5X2Z1bmN0aW9uCi17ICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IGlzX3VuYXJ5X29yX2JpbmFyeV9mdW5jdGlvbl9pbXBsPFQ+Ojp2YWx1ZTsgICB9OwotCi0vL25kbmJvb3N0OjphbGlnbm1lbnRfb2YgeWllbGRzIHRvIDEwSyBsaW5lcyBvZiBwcmVwcm9jZXNzZWQgY29kZSwgc28gd2UKLS8vbmVlZCBhbiBhbHRlcm5hdGl2ZQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBhbGlnbm1lbnRfb2Y7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGFsaWdubWVudF9vZl9oYWNrCi17Ci0gICAgY2hhciBjOwotICAgIFQgdDsKLSAgICBhbGlnbm1lbnRfb2ZfaGFjaygpOwotfTsKLQotdGVtcGxhdGUgPHVuc2lnbmVkIEEsIHVuc2lnbmVkIFM+Ci1zdHJ1Y3QgYWxpZ25tZW50X2xvZ2ljCi17Ci0gICBzdGF0aWMgY29uc3Qgc3RkOjpzaXplX3QgdmFsdWUgPSBBIDwgUyA/IEEgOiBTOwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGFsaWdubWVudF9vZgotewotICAgc3RhdGljIGNvbnN0IHN0ZDo6c2l6ZV90IHZhbHVlID0gYWxpZ25tZW50X2xvZ2ljCi0gICAgICAgICAgICA8IHNpemVvZihhbGlnbm1lbnRfb2ZfaGFjazxUPikgLSBzaXplb2YoVCkKLSAgICAgICAgICAgICwgc2l6ZW9mKFQpCi0gICAgICAgICAgICA+Ojp2YWx1ZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotc3RydWN0IGlzX3NhbWUKLXsKLSAgIHR5cGVkZWYgY2hhciB5ZXNfdHlwZTsKLSAgIHN0cnVjdCBub190eXBlCi0gICB7Ci0gICAgICBjaGFyIHBhZGRpbmdbOF07Ci0gICB9OwotCi0gICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVj4KLSAgIHN0YXRpYyB5ZXNfdHlwZSBpc19zYW1lX3Rlc3RlcihWKiwgViopOwotICAgc3RhdGljIG5vX3R5cGUgaXNfc2FtZV90ZXN0ZXIoLi4uKTsKLQotICAgc3RhdGljIFQgKnQ7Ci0gICBzdGF0aWMgVSAqdTsKLQotICAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBzaXplb2YoeWVzX3R5cGUpID09IHNpemVvZihpc19zYW1lX3Rlc3Rlcih0LHUpKTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgYWRkX2NvbnN0Ci17ICB0eXBlZGVmIGNvbnN0IFQgdHlwZTsgICB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IHJlbW92ZV9jb25zdAoteyAgdHlwZWRlZiAgVCB0eXBlOyAgIH07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgcmVtb3ZlX2NvbnN0PGNvbnN0IFQ+Ci17ICB0eXBlZGVmIFQgdHlwZTsgICB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IHJlbW92ZV9jdgoteyAgdHlwZWRlZiAgVCB0eXBlOyAgIH07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgcmVtb3ZlX2N2PGNvbnN0IFQ+Ci17ICB0eXBlZGVmIFQgdHlwZTsgICB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IHJlbW92ZV9jdjxjb25zdCB2b2xhdGlsZSBUPgoteyAgdHlwZWRlZiBUIHR5cGU7ICAgfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCByZW1vdmVfY3Y8dm9sYXRpbGUgVD4KLXsgIHR5cGVkZWYgVCB0eXBlOyAgIH07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgcmVtb3ZlX3JlZmVyZW5jZQotewotICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IHJlbW92ZV9yZWZlcmVuY2U8VCY+Ci17Ci0gICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIENsYXNzPgotY2xhc3MgaXNfZW1wdHlfY2xhc3MKLXsKLSAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgc3RydWN0IGVtcHR5X2hlbHBlcl90MSA6IHB1YmxpYyBUCi0gICB7Ci0gICAgICBlbXB0eV9oZWxwZXJfdDEoKTsKLSAgICAgIGludCBpWzI1Nl07Ci0gICB9OwotCi0gICBzdHJ1Y3QgZW1wdHlfaGVscGVyX3QyCi0gICB7IGludCBpWzI1Nl07IH07Ci0KLSAgIHB1YmxpYzoKLSAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gc2l6ZW9mKGVtcHR5X2hlbHBlcl90MTxDbGFzcz4pID09IHNpemVvZihlbXB0eV9oZWxwZXJfdDIpOwotfTsKLQotdGVtcGxhdGU8c3RkOjpzaXplX3QgUz4KLXN0cnVjdCBsc196ZXJvcwotewotICAgc3RhdGljIGNvbnN0IHN0ZDo6c2l6ZV90IHZhbHVlID0gKFMgJiBzdGQ6OnNpemVfdCgxKSkgPyAwIDogKDEgKyBsc196ZXJvczwoUz4+MXUpPjo6dmFsdWUpOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxzX3plcm9zPDA+Ci17Ci0gICBzdGF0aWMgY29uc3Qgc3RkOjpzaXplX3QgdmFsdWUgPSAwOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxzX3plcm9zPDE+Ci17Ci0gICBzdGF0aWMgY29uc3Qgc3RkOjpzaXplX3QgdmFsdWUgPSAwOwotfTsKLQotfSAvL25hbWVzcGFjZSBkZXRhaWwKLX0gLy9uYW1lc3BhY2UgaW50cnVzaXZlCi19IC8vbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL2NvbmZpZ19lbmQuaHBwPgotCi0jZW5kaWYgLy9ORE5CT09TVF9JTlRSVVNJVkVfREVUQUlMX01QTF9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC9wcmVwcm9jZXNzb3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL3ByZXByb2Nlc3Nvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkZjhhMzguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL3ByZXByb2Nlc3Nvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyAoQykgQ29weXJpZ2h0IElvbiBHYXp0YW5hZ2EgMjAwOC0yMDEyLiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QKLS8vIFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW50cnVzaXZlIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0jaWZuZGVmIE5ETkJPT1NUX0lOVFJVU0lWRV9ERVRBSUxfUFJFUFJPQ0VTU09SX0hQUAotI2RlZmluZSBORE5CT09TVF9JTlRSVVNJVkVfREVUQUlMX1BSRVBST0NFU1NPUl9IUFAKLQotI2lmIChkZWZpbmVkIF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTIwMCkKLSMgIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvY29uZmlnX2JlZ2luLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9sb2NhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3B1bmN0dWF0aW9uL3BhcmVuX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcHVuY3R1YXRpb24vY29tbWFfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2V4cHJfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3RyYWlsaW5nX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV90cmFpbGluZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9zaGlmdGVkX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9zaGlmdGVkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9yZXBlYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL25vdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvc3ViLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9hZGQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vaXRlcmF0ZS5ocHA+Ci0KLSNkZWZpbmUgTkROQk9PU1RfSU5UUlVTSVZFX01BWF9DT05TVFJVQ1RPUl9QQVJBTUVURVJTIDEwCi0KLSNkZWZpbmUgTkROQk9PU1RfSU5UUlVTSVZFX1BQX0lERU5USVRZKHosIG4sIGRhdGEpIGRhdGEKLQotI2RlZmluZSBORE5CT09TVF9JTlRSVVNJVkVfUFBfREVDTFZBTCh6LCBuLCBkYXRhKSBcCi1uZG5ib29zdDo6bW92ZV9kZXRhaWw6OmRlY2x2YWw8IE5ETkJPT1NUX1BQX0NBVChQLCBuKSA+KCkgXAotLy8hCi0KLSNkZWZpbmUgTkROQk9PU1RfSU5UUlVTSVZFX1BQX1RFTVBMQVRFX1BBUkFNX1ZPSURfREVGQVVMVCh6LCBuLCBkYXRhKSAgIFwKLSAgTkROQk9PU1RfUFBfQ0FUKGNsYXNzIFAsIG4pID0gdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLy8hCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL2NvbmZpZ19lbmQuaHBwPgotCi0jZW5kaWYgLy8jaWZuZGVmIE5ETkJPT1NUX0lOVFJVU0lWRV9ERVRBSUxfUFJFUFJPQ0VTU09SX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL3dvcmthcm91bmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL3dvcmthcm91bmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjczYjFjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC93b3JrYXJvdW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIChDKSBDb3B5cmlnaHQgSW9uIEdhenRhbmFnYSAyMDA1LTIwMTIuIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdAotLy8gU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pbnRlcnByb2Nlc3MgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSNpZm5kZWYgTkROQk9PU1RfSU5UUlVTSVZFX0RFVEFJTF9XUktSTkRfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0lOVFJVU0lWRV9ERVRBSUxfV1JLUk5EX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC9jb25maWdfYmVnaW4uaHBwPgotCi0jaWYgICAgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUykKLSAgICNkZWZpbmUgTkROQk9PU1RfSU5UUlVTSVZFX1BFUkZFQ1RfRk9SV0FSRElORwotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL2NvbmZpZ19lbmQuaHBwPgotCi0jZW5kaWYgICAvLyNpZm5kZWYgTkROQk9PU1RfSU5UUlVTSVZFX0RFVEFJTF9XUktSTkRfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2ludHJ1c2l2ZS9wb2ludGVyX3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2ludHJ1c2l2ZS9wb2ludGVyX3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5MDFmZjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pbnRydXNpdmUvcG9pbnRlcl90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjY1ICswLDAgQEAKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIChDKSBDb3B5cmlnaHQgUGFibG8gSGFscGVybiAyMDA5LiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QKLS8vIFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gKEMpIENvcHlyaWdodCBJb24gR2F6dGFuYWdhIDIwMTEtMjAxMi4gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0Ci0vLyBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2ludHJ1c2l2ZSBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotI2lmbmRlZiBORE5CT09TVF9JTlRSVVNJVkVfUE9JTlRFUl9UUkFJVFNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0lOVFJVU0lWRV9QT0lOVEVSX1RSQUlUU19IUFAKLQotI2lmIChkZWZpbmVkIF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTIwMCkKLSMgIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvY29uZmlnX2JlZ2luLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvbWVtb3J5X3V0aWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ludGVncmFsX2NvbnN0YW50LmhwcD4KLSNpbmNsdWRlIDxjc3RkZGVmPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIGludHJ1c2l2ZSB7Ci0KLS8vISBwb2ludGVyX3RyYWl0cyBpcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgQysrMTEgc3RkOjpwb2ludGVyX3RyYWl0cyBjbGFzcyB3aXRoIHNvbWUKLS8vISBleHRlbnNpb25zIGxpa2UgY2FzdGluZ3MuCi0vLyEKLS8vISBwb2ludGVyX3RyYWl0cyBzdXBwbGllcyBhIHVuaWZvcm0gaW50ZXJmYWNlIHRvIGNlcnRhaW4gYXR0cmlidXRlcyBvZiBwb2ludGVyLWxpa2UgdHlwZXMuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUHRyPgotc3RydWN0IHBvaW50ZXJfdHJhaXRzCi17Ci0gICAjaWZkZWYgTkROQk9PU1RfSU5UUlVTSVZFX0RPWFlHRU5fSU5WT0tFRAotICAgICAgLy8hVGhlIHBvaW50ZXIgdHlwZQotICAgICAgLy8hcXVlcmllZCBieSB0aGlzIHBvaW50ZXJfdHJhaXRzIGluc3RhbnRpYXRpb24KLSAgICAgIHR5cGVkZWYgUHRyICAgICAgICAgICAgIHBvaW50ZXI7Ci0KLSAgICAgIC8vIVB0cjo6ZWxlbWVudF90eXBlIGlmIHN1Y2ggYSB0eXBlIGV4aXN0czsgb3RoZXJ3aXNlLCBUIGlmIFB0ciBpcyBhIGNsYXNzCi0gICAgICAvLyF0ZW1wbGF0ZSBpbnN0YW50aWF0aW9uIG9mIHRoZSBmb3JtIFNvbWVQb2ludGVyPFQsIEFyZ3M+LCB3aGVyZSBBcmdzIGlzIHplcm8gb3IKLSAgICAgIC8vIW1vcmUgdHlwZSBhcmd1bWVudHMgOyBvdGhlcndpc2UgLCB0aGUgc3BlY2lhbGl6YXRpb24gaXMgaWxsLWZvcm1lZC4KLSAgICAgIHR5cGVkZWYgdW5zcGVjaWZpZWRfdHlwZSBlbGVtZW50X3R5cGU7Ci0KLSAgICAgIC8vIVB0cjo6ZGlmZmVyZW5jZV90eXBlIGlmIHN1Y2ggYSB0eXBlIGV4aXN0czsgb3RoZXJ3aXNlLAotICAgICAgLy8hc3RkOjpwdHJkaWZmX3QuCi0gICAgICB0eXBlZGVmIHVuc3BlY2lmaWVkX3R5cGUgZGlmZmVyZW5jZV90eXBlOwotCi0gICAgICAvLyFQdHI6OnJlYmluZDxVPiBpZiBzdWNoIGEgdHlwZSBleGlzdHM7IG90aGVyd2lzZSwgU29tZVBvaW50ZXI8VSwgQXJncz4gaWYgUHRyIGlzCi0gICAgICAvLyFhIGNsYXNzIHRlbXBsYXRlIGluc3RhbnRpYXRpb24gb2YgdGhlIGZvcm0gU29tZVBvaW50ZXI8VCwgQXJncz4sIHdoZXJlIEFyZ3MgaXMgemVybyBvcgotICAgICAgLy8hbW9yZSB0eXBlIGFyZ3VtZW50cyA7IG90aGVyd2lzZSwgdGhlIGluc3RhbnRpYXRpb24gb2YgcmViaW5kIGlzIGlsbC1mb3JtZWQuCi0gICAgICAvLyEKLSAgICAgIC8vIUZvciBwb3J0YWJsZSBjb2RlIGZvciBDKyswMyBhbmQgQysrMTEsIDxwcmU+dHlwZW5hbWUgcmViaW5kX3BvaW50ZXI8VT46OnR5cGU8L3ByZT4KLSAgICAgIC8vIXNoYWxsIGJlIHVzZWQgaW5zdGVhZCBvZiByZWJpbmQ8VT4gdG8gb2J0YWluIGEgcG9pbnRlciB0byBVLgotICAgICAgdGVtcGxhdGUgPGNsYXNzIFU+IHVzaW5nIHJlYmluZCA9IHVuc3BlY2lmaWVkOwotCi0gICAgICAvLyFQdHI6OnJlYmluZDxVPiBpZiBzdWNoIGEgdHlwZSBleGlzdHM7IG90aGVyd2lzZSwgU29tZVBvaW50ZXI8VSwgQXJncz4gaWYgUHRyIGlzCi0gICAgICAvLyFhIGNsYXNzIHRlbXBsYXRlIGluc3RhbnRpYXRpb24gb2YgdGhlIGZvcm0gU29tZVBvaW50ZXI8VCwgQXJncz4sIHdoZXJlIEFyZ3MgaXMgemVybyBvcgotICAgICAgLy8hbW9yZSB0eXBlIGFyZ3VtZW50cyA7IG90aGVyd2lzZSwgdGhlIGluc3RhbnRpYXRpb24gb2YgcmViaW5kIGlzIGlsbC1mb3JtZWQuCi0gICAgICAvLyEKLSAgICAgIHR5cGVkZWYgZWxlbWVudF90eXBlICZyZWZlcmVuY2U7Ci0gICAjZWxzZQotICAgICAgdHlwZWRlZiBQdHIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlcjsKLSAgICAgIC8vCi0gICAgICB0eXBlZGVmIE5ETkJPT1NUX0lOVFJVU0lWRV9PQlRBSU5fVFlQRV9XSVRIX0VWQUxfREVGQVVMVAotICAgICAgICAgKCBuZG5ib29zdDo6aW50cnVzaXZlOjpkZXRhaWw6OiwgUHRyLCBlbGVtZW50X3R5cGUKLSAgICAgICAgICwgbmRuYm9vc3Q6OmludHJ1c2l2ZTo6ZGV0YWlsOjpmaXJzdF9wYXJhbTxQdHI+KSAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRfdHlwZTsKLSAgICAgIC8vCi0gICAgICB0eXBlZGVmIE5ETkJPT1NUX0lOVFJVU0lWRV9PQlRBSU5fVFlQRV9XSVRIX0RFRkFVTFQKLSAgICAgICAgIChuZG5ib29zdDo6aW50cnVzaXZlOjpkZXRhaWw6OiwgUHRyLCBkaWZmZXJlbmNlX3R5cGUsIHN0ZDo6cHRyZGlmZl90KSAgIGRpZmZlcmVuY2VfdHlwZTsKLSAgICAgIC8vCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjppbnRydXNpdmU6OmRldGFpbDo6dW52b2lkPGVsZW1lbnRfdHlwZT46OnR5cGUmICByZWZlcmVuY2U7Ci0gICAgICAvLwotICAgICAgdGVtcGxhdGUgPGNsYXNzIFU+IHN0cnVjdCByZWJpbmRfcG9pbnRlcgotICAgICAgewotICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6aW50cnVzaXZlOjpkZXRhaWw6OnR5cGVfcmViaW5kZXI8UHRyLCBVPjo6dHlwZSAgdHlwZTsKLSAgICAgIH07Ci0KLSAgICAgICNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9URU1QTEFURV9BTElBU0VTKQotICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFU+IHVzaW5nIHJlYmluZCA9IHR5cGVuYW1lIG5kbmJvb3N0OjppbnRydXNpdmU6OmRldGFpbDo6dHlwZV9yZWJpbmRlcjxQdHIsIFU+Ojp0eXBlOwotICAgICAgI2VuZGlmCi0gICAjZW5kaWYgICAvLyNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9URU1QTEFURV9BTElBU0VTKQotCi0gICAvLyEgPGI+UmVtYXJrPC9iPjogSWYgZWxlbWVudF90eXBlIGlzIChwb3NzaWJseSBjdi1xdWFsaWZpZWQpIHZvaWQsIHIgdHlwZSBpcyB1bnNwZWNpZmllZDsgb3RoZXJ3aXNlLAotICAgLy8hICAgaXQgaXMgZWxlbWVudF90eXBlICYuCi0gICAvLyEKLSAgIC8vISA8Yj5SZXR1cm5zPC9iPjogQSBkZXJlZmVyZW5jZWFibGUgcG9pbnRlciB0byByIG9idGFpbmVkIGJ5IGNhbGxpbmcgUHRyOjpwb2ludGVyX3RvKHIpLgotICAgLy8hICAgTm9uLXN0YW5kYXJkIGV4dGVuc2lvbjogSWYgc3VjaCBmdW5jdGlvbiBkb2VzIG5vdCBleGlzdCwgcmV0dXJucyBwb2ludGVyKGFkZHJlc3NvZihyKSk7Ci0gICBzdGF0aWMgcG9pbnRlciBwb2ludGVyX3RvKHJlZmVyZW5jZSByKQotICAgewotICAgICAgLy9Ob24tc3RhbmRhcmQgZXh0ZW5zaW9uLCBpdCBkb2VzIG5vdCByZXF1aXJlIFB0cjo6cG9pbnRlcl90by4gSWYgbm90IHByZXNlbnQKLSAgICAgIC8vdHJpZXMgdG8gY29udmVydHMgJnIgdG8gcG9pbnRlci4KLSAgICAgIGNvbnN0IGJvb2wgdmFsdWUgPSBuZG5ib29zdDo6aW50cnVzaXZlOjpkZXRhaWw6OgotICAgICAgICAgaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoX3BvaW50ZXJfdG8KLSAgICAgICAgICAgIDxQdHIsIHR5cGVuYW1lIG5kbmJvb3N0OjppbnRydXNpdmU6OmRldGFpbDo6dW52b2lkPGVsZW1lbnRfdHlwZSAmPjo6dHlwZT46OnZhbHVlOwotICAgICAgOjpuZG5ib29zdDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgdmFsdWU+IGZsYWc7Ci0gICAgICByZXR1cm4gcG9pbnRlcl90cmFpdHM6OnByaXZfcG9pbnRlcl90byhmbGFnLCByKTsKLSAgIH0KLQotICAgLy8hIDxiPlJlbWFyazwvYj46IE5vbi1zdGFuZGFyZCBleHRlbnNpb24uCi0gICAvLyEKLSAgIC8vISA8Yj5SZXR1cm5zPC9iPjogQSBkZXJlZmVyZW5jZWFibGUgcG9pbnRlciB0byByIG9idGFpbmVkIGJ5IGNhbGxpbmcgUHRyOjpzdGF0aWNfY2FzdF9mcm9tKHIpLgotICAgLy8hICAgSWYgc3VjaCBmdW5jdGlvbiBkb2VzIG5vdCBleGlzdCwgcmV0dXJucyBwb2ludGVyX3RvKHN0YXRpY19jYXN0PGVsZW1lbnRfdHlwZSY+KCp1cHRyKSkKLSAgIHRlbXBsYXRlPGNsYXNzIFVQdHI+Ci0gICBzdGF0aWMgcG9pbnRlciBzdGF0aWNfY2FzdF9mcm9tKGNvbnN0IFVQdHIgJnVwdHIpCi0gICB7Ci0gICAgICBjb25zdCBib29sIHZhbHVlID0gbmRuYm9vc3Q6OmludHJ1c2l2ZTo6ZGV0YWlsOjoKLSAgICAgICAgIGhhc19tZW1iZXJfZnVuY3Rpb25fY2FsbGFibGVfd2l0aF9zdGF0aWNfY2FzdF9mcm9tCi0gICAgICAgICAgICA8UHRyLCBjb25zdCBVUHRyPjo6dmFsdWU7Ci0gICAgICA6Om5kbmJvb3N0OjppbnRlZ3JhbF9jb25zdGFudDxib29sLCB2YWx1ZT4gZmxhZzsKLSAgICAgIHJldHVybiBwb2ludGVyX3RyYWl0czo6cHJpdl9zdGF0aWNfY2FzdF9mcm9tKGZsYWcsIHVwdHIpOwotICAgfQotCi0gICAvLyEgPGI+UmVtYXJrPC9iPjogTm9uLXN0YW5kYXJkIGV4dGVuc2lvbi4KLSAgIC8vIQotICAgLy8hIDxiPlJldHVybnM8L2I+OiBBIGRlcmVmZXJlbmNlYWJsZSBwb2ludGVyIHRvIHIgb2J0YWluZWQgYnkgY2FsbGluZyBQdHI6OmNvbnN0X2Nhc3RfZnJvbShyKS4KLSAgIC8vISAgIElmIHN1Y2ggZnVuY3Rpb24gZG9lcyBub3QgZXhpc3QsIHJldHVybnMgcG9pbnRlcl90byhjb25zdF9jYXN0PGVsZW1lbnRfdHlwZSY+KCp1cHRyKSkKLSAgIHRlbXBsYXRlPGNsYXNzIFVQdHI+Ci0gICBzdGF0aWMgcG9pbnRlciBjb25zdF9jYXN0X2Zyb20oY29uc3QgVVB0ciAmdXB0cikKLSAgIHsKLSAgICAgIGNvbnN0IGJvb2wgdmFsdWUgPSBuZG5ib29zdDo6aW50cnVzaXZlOjpkZXRhaWw6OgotICAgICAgICAgaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoX2NvbnN0X2Nhc3RfZnJvbQotICAgICAgICAgICAgPFB0ciwgY29uc3QgVVB0cj46OnZhbHVlOwotICAgICAgOjpuZG5ib29zdDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgdmFsdWU+IGZsYWc7Ci0gICAgICByZXR1cm4gcG9pbnRlcl90cmFpdHM6OnByaXZfY29uc3RfY2FzdF9mcm9tKGZsYWcsIHVwdHIpOwotICAgfQotCi0gICAvLyEgPGI+UmVtYXJrPC9iPjogTm9uLXN0YW5kYXJkIGV4dGVuc2lvbi4KLSAgIC8vIQotICAgLy8hIDxiPlJldHVybnM8L2I+OiBBIGRlcmVmZXJlbmNlYWJsZSBwb2ludGVyIHRvIHIgb2J0YWluZWQgYnkgY2FsbGluZyBQdHI6OmR5bmFtaWNfY2FzdF9mcm9tKHIpLgotICAgLy8hICAgSWYgc3VjaCBmdW5jdGlvbiBkb2VzIG5vdCBleGlzdCwgcmV0dXJucyBwb2ludGVyX3RvKCpkeW5hbWljX2Nhc3Q8ZWxlbWVudF90eXBlKj4oJip1cHRyKSkKLSAgIHRlbXBsYXRlPGNsYXNzIFVQdHI+Ci0gICBzdGF0aWMgcG9pbnRlciBkeW5hbWljX2Nhc3RfZnJvbShjb25zdCBVUHRyICZ1cHRyKQotICAgewotICAgICAgY29uc3QgYm9vbCB2YWx1ZSA9IG5kbmJvb3N0OjppbnRydXNpdmU6OmRldGFpbDo6Ci0gICAgICAgICBoYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGhfZHluYW1pY19jYXN0X2Zyb20KLSAgICAgICAgICAgIDxQdHIsIGNvbnN0IFVQdHI+Ojp2YWx1ZTsKLSAgICAgIDo6bmRuYm9vc3Q6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIHZhbHVlPiBmbGFnOwotICAgICAgcmV0dXJuIHBvaW50ZXJfdHJhaXRzOjpwcml2X2R5bmFtaWNfY2FzdF9mcm9tKGZsYWcsIHVwdHIpOwotICAgfQotCi0gICAvLy9AY29uZAotICAgcHJpdmF0ZToKLSAgIC8vcHJpdl90b19yYXdfcG9pbnRlcgotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBzdGF0aWMgVCogdG9fcmF3X3BvaW50ZXIoVCogcCkKLSAgIHsgIHJldHVybiBwOyB9Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBQb2ludGVyPgotICAgc3RhdGljIHR5cGVuYW1lIHBvaW50ZXJfdHJhaXRzPFBvaW50ZXI+OjplbGVtZW50X3R5cGUqCi0gICAgICB0b19yYXdfcG9pbnRlcihjb25zdCBQb2ludGVyICZwKQotICAgeyAgcmV0dXJuIHBvaW50ZXJfdHJhaXRzOjp0b19yYXdfcG9pbnRlcihwLm9wZXJhdG9yLT4oKSk7ICB9Ci0KLSAgIC8vcHJpdl9wb2ludGVyX3RvCi0gICBzdGF0aWMgcG9pbnRlciBwcml2X3BvaW50ZXJfdG8obmRuYm9vc3Q6OnRydWVfdHlwZSwgdHlwZW5hbWUgbmRuYm9vc3Q6OmludHJ1c2l2ZTo6ZGV0YWlsOjp1bnZvaWQ8ZWxlbWVudF90eXBlPjo6dHlwZSYgcikKLSAgICAgIHsgcmV0dXJuIFB0cjo6cG9pbnRlcl90byhyKTsgfQotCi0gICBzdGF0aWMgcG9pbnRlciBwcml2X3BvaW50ZXJfdG8obmRuYm9vc3Q6OmZhbHNlX3R5cGUsIHR5cGVuYW1lIG5kbmJvb3N0OjppbnRydXNpdmU6OmRldGFpbDo6dW52b2lkPGVsZW1lbnRfdHlwZT46OnR5cGUmIHIpCi0gICAgICB7IHJldHVybiBwb2ludGVyKG5kbmJvb3N0OjppbnRydXNpdmU6OmRldGFpbDo6YWRkcmVzc29mKHIpKTsgfQotCi0gICAvL3ByaXZfc3RhdGljX2Nhc3RfZnJvbQotICAgdGVtcGxhdGU8Y2xhc3MgVVB0cj4KLSAgIHN0YXRpYyBwb2ludGVyIHByaXZfc3RhdGljX2Nhc3RfZnJvbShuZG5ib29zdDo6dHJ1ZV90eXBlLCBjb25zdCBVUHRyICZ1cHRyKQotICAgeyByZXR1cm4gUHRyOjpzdGF0aWNfY2FzdF9mcm9tKHVwdHIpOyB9Ci0KLSAgIHRlbXBsYXRlPGNsYXNzIFVQdHI+Ci0gICBzdGF0aWMgcG9pbnRlciBwcml2X3N0YXRpY19jYXN0X2Zyb20obmRuYm9vc3Q6OmZhbHNlX3R5cGUsIGNvbnN0IFVQdHIgJnVwdHIpCi0gICB7ICByZXR1cm4gcG9pbnRlcl90bygqc3RhdGljX2Nhc3Q8ZWxlbWVudF90eXBlKj4odG9fcmF3X3BvaW50ZXIodXB0cikpKTsgIH0KLQotICAgLy9wcml2X2NvbnN0X2Nhc3RfZnJvbQotICAgdGVtcGxhdGU8Y2xhc3MgVVB0cj4KLSAgIHN0YXRpYyBwb2ludGVyIHByaXZfY29uc3RfY2FzdF9mcm9tKG5kbmJvb3N0Ojp0cnVlX3R5cGUsIGNvbnN0IFVQdHIgJnVwdHIpCi0gICB7IHJldHVybiBQdHI6OmNvbnN0X2Nhc3RfZnJvbSh1cHRyKTsgfQotCi0gICB0ZW1wbGF0ZTxjbGFzcyBVUHRyPgotICAgc3RhdGljIHBvaW50ZXIgcHJpdl9jb25zdF9jYXN0X2Zyb20obmRuYm9vc3Q6OmZhbHNlX3R5cGUsIGNvbnN0IFVQdHIgJnVwdHIpCi0gICB7ICByZXR1cm4gcG9pbnRlcl90byhjb25zdF9jYXN0PGVsZW1lbnRfdHlwZSY+KCp1cHRyKSk7ICB9Ci0KLSAgIC8vcHJpdl9keW5hbWljX2Nhc3RfZnJvbQotICAgdGVtcGxhdGU8Y2xhc3MgVVB0cj4KLSAgIHN0YXRpYyBwb2ludGVyIHByaXZfZHluYW1pY19jYXN0X2Zyb20obmRuYm9vc3Q6OnRydWVfdHlwZSwgY29uc3QgVVB0ciAmdXB0cikKLSAgIHsgcmV0dXJuIFB0cjo6ZHluYW1pY19jYXN0X2Zyb20odXB0cik7IH0KLQotICAgdGVtcGxhdGU8Y2xhc3MgVVB0cj4KLSAgIHN0YXRpYyBwb2ludGVyIHByaXZfZHluYW1pY19jYXN0X2Zyb20obmRuYm9vc3Q6OmZhbHNlX3R5cGUsIGNvbnN0IFVQdHIgJnVwdHIpCi0gICB7ICByZXR1cm4gcG9pbnRlcl90bygqZHluYW1pY19jYXN0PGVsZW1lbnRfdHlwZSo+KCYqdXB0cikpOyAgfQotICAgLy8vQGVuZGNvbmQKLX07Ci0KLS8vL0Bjb25kCi0KLS8vIFJlbW92ZSBjdiBxdWFsaWZpY2F0aW9uIGZyb20gUHRyIHBhcmFtZXRlciB0byBwb2ludGVyX3RyYWl0czoKLXRlbXBsYXRlIDx0eXBlbmFtZSBQdHI+Ci1zdHJ1Y3QgcG9pbnRlcl90cmFpdHM8Y29uc3QgUHRyPiA6IHBvaW50ZXJfdHJhaXRzPFB0cj4ge307Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgUHRyPgotc3RydWN0IHBvaW50ZXJfdHJhaXRzPHZvbGF0aWxlIFB0cj4gOiBwb2ludGVyX3RyYWl0czxQdHI+IHsgfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBQdHI+Ci1zdHJ1Y3QgcG9pbnRlcl90cmFpdHM8Y29uc3Qgdm9sYXRpbGUgUHRyPiA6IHBvaW50ZXJfdHJhaXRzPFB0cj4geyB9OwotLy8gUmVtb3ZlIHJlZmVyZW5jZSBmcm9tIFB0ciBwYXJhbWV0ZXIgdG8gcG9pbnRlcl90cmFpdHM6Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgUHRyPgotc3RydWN0IHBvaW50ZXJfdHJhaXRzPFB0ciY+IDogcG9pbnRlcl90cmFpdHM8UHRyPiB7IH07Ci0KLS8vL0BlbmRjb25kCi0KLS8vISBTcGVjaWFsaXphdGlvbiBvZiBwb2ludGVyX3RyYWl0cyBmb3IgcmF3IHBvaW50ZXJzCi0vLyEKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IHBvaW50ZXJfdHJhaXRzPFQqPgotewotICAgdHlwZWRlZiBUICAgICAgICAgICAgZWxlbWVudF90eXBlOwotICAgdHlwZWRlZiBUKiAgICAgICAgICAgcG9pbnRlcjsKLSAgIHR5cGVkZWYgc3RkOjpwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBlOwotCi0gICAjaWZkZWYgTkROQk9PU1RfSU5UUlVTSVZFX0RPWFlHRU5fSU5WT0tFRAotICAgICAgdHlwZWRlZiBUICYgICAgICAgICAgcmVmZXJlbmNlOwotICAgICAgLy8hdHlwZWRlZiBmb3IgPHByZT5VICo8L3ByZT4KLSAgICAgIC8vIQotICAgICAgLy8hRm9yIHBvcnRhYmxlIGNvZGUgZm9yIEMrKzAzIGFuZCBDKysxMSwgPHByZT50eXBlbmFtZSByZWJpbmRfcG9pbnRlcjxVPjo6dHlwZTwvcHJlPgotICAgICAgLy8hc2hhbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIHJlYmluZDxVPiB0byBvYnRhaW4gYSBwb2ludGVyIHRvIFUuCi0gICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVT4gdXNpbmcgcmViaW5kID0gVSo7Ci0gICAjZWxzZQotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6aW50cnVzaXZlOjpkZXRhaWw6OnVudm9pZDxlbGVtZW50X3R5cGU+Ojp0eXBlJiByZWZlcmVuY2U7Ci0gICAgICAjaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVEVNUExBVEVfQUxJQVNFUykKLSAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBVPiB1c2luZyByZWJpbmQgPSBVKjsKLSAgICAgICNlbmRpZgotICAgI2VuZGlmCi0KLSAgIHRlbXBsYXRlIDxjbGFzcyBVPiBzdHJ1Y3QgcmViaW5kX3BvaW50ZXIKLSAgIHsgIHR5cGVkZWYgVSogdHlwZTsgIH07Ci0KLSAgIC8vISA8Yj5SZXR1cm5zPC9iPjogYWRkcmVzc29mKHIpCi0gICAvLyEKLSAgIHN0YXRpYyBwb2ludGVyIHBvaW50ZXJfdG8ocmVmZXJlbmNlIHIpCi0gICB7IHJldHVybiBuZG5ib29zdDo6aW50cnVzaXZlOjpkZXRhaWw6OmFkZHJlc3NvZihyKTsgfQotCi0gICAvLyEgPGI+UmV0dXJuczwvYj46IHN0YXRpY19jYXN0PHBvaW50ZXI+KHVwdHIpCi0gICAvLyEKLSAgIHRlbXBsYXRlPGNsYXNzIFU+Ci0gICBzdGF0aWMgcG9pbnRlciBzdGF0aWNfY2FzdF9mcm9tKFUgKnVwdHIpCi0gICB7ICByZXR1cm4gc3RhdGljX2Nhc3Q8cG9pbnRlcj4odXB0cik7ICB9Ci0KLSAgIC8vISA8Yj5SZXR1cm5zPC9iPjogY29uc3RfY2FzdDxwb2ludGVyPih1cHRyKQotICAgLy8hCi0gICB0ZW1wbGF0ZTxjbGFzcyBVPgotICAgc3RhdGljIHBvaW50ZXIgY29uc3RfY2FzdF9mcm9tKFUgKnVwdHIpCi0gICB7ICByZXR1cm4gY29uc3RfY2FzdDxwb2ludGVyPih1cHRyKTsgIH0KLQotICAgLy8hIDxiPlJldHVybnM8L2I+OiBkeW5hbWljX2Nhc3Q8cG9pbnRlcj4odXB0cikKLSAgIC8vIQotICAgdGVtcGxhdGU8Y2xhc3MgVT4KLSAgIHN0YXRpYyBwb2ludGVyIGR5bmFtaWNfY2FzdF9mcm9tKFUgKnVwdHIpCi0gICB7ICByZXR1cm4gZHluYW1pY19jYXN0PHBvaW50ZXI+KHVwdHIpOyAgfQotfTsKLQotfSAgLy9uYW1lc3BhY2UgY29udGFpbmVyIHsKLX0gIC8vbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvY29uZmlnX2VuZC5ocHA+Ci0KLSNlbmRpZiAvLyAhIGRlZmluZWQoTkROQk9PU1RfSU5UUlVTSVZFX1BPSU5URVJfVFJBSVRTX0hQUCkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW8vZGV0YWlsL3F1b3RlZF9tYW5pcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvL2RldGFpbC9xdW90ZWRfbWFuaXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Mjc5MDk2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW8vZGV0YWlsL3F1b3RlZF9tYW5pcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOTAgKzAsMCBAQAotLy8gIG5kbmJvb3N0L2lvL3F1b3RlZF9tYW5pcC5ocHAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBDb3B5cmlnaHQgQmVtYW4gRGF3ZXMgMjAxMAotCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQKLQotLy8gIExpYnJhcnkgaG9tZSBwYWdlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW8KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vIAotCi0jaWZuZGVmIE5ETkJPT1NUX0lPX1FVT1RFRF9NQU5JUAotI2RlZmluZSBORE5CT09TVF9JT19RVU9URURfTUFOSVAKLQotI2luY2x1ZGUgPGlvc2Z3ZD4KLSNpbmNsdWRlIDxpb3M+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPGl0ZXJhdG9yPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvL2lvc19zdGF0ZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICBuYW1lc3BhY2UgaW8KLSAgewotICAgIG5hbWVzcGFjZSBkZXRhaWwgeyB0ZW1wbGF0ZSA8Y2xhc3MgU3RyaW5nLCBjbGFzcyBDaGFyPiBzdHJ1Y3QgcXVvdGVkX3Byb3h5OyB9Ci0KLSAgICAvLyAgLS0tLS0tLS0tLS0tICBwdWJsaWMgaW50ZXJmYWNlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgLy8gIG1hbmlwdWxhdG9yIGZvciBjb25zdCBzdGQ6OmJhc2ljX3N0cmluZyYKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ2hhciwgY2xhc3MgVHJhaXRzLCBjbGFzcyBBbGxvYz4KLSAgICAgIGRldGFpbDo6cXVvdGVkX3Byb3h5PHN0ZDo6YmFzaWNfc3RyaW5nPENoYXIsIFRyYWl0cywgQWxsb2M+IGNvbnN0ICYsIENoYXI+Ci0gICAgICAgIHF1b3RlZChjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxDaGFyLCBUcmFpdHMsIEFsbG9jPiYgcywKLSAgICAgICAgICAgICAgIENoYXIgZXNjYXBlPSdcXCcsIENoYXIgZGVsaW09J1wiJyk7Ci0KLSAgICAvLyAgbWFuaXB1bGF0b3IgZm9yIG5vbi1jb25zdCBzdGQ6OmJhc2ljX3N0cmluZyYKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ2hhciwgY2xhc3MgVHJhaXRzLCBjbGFzcyBBbGxvYz4KLSAgICAgIGRldGFpbDo6cXVvdGVkX3Byb3h5PHN0ZDo6YmFzaWNfc3RyaW5nPENoYXIsIFRyYWl0cywgQWxsb2M+ICYsIENoYXI+Ci0gICAgICAgIHF1b3RlZChzdGQ6OmJhc2ljX3N0cmluZzxDaGFyLCBUcmFpdHMsIEFsbG9jPiYgcywKLSAgICAgICAgICAgICAgIENoYXIgZXNjYXBlPSdcXCcsIENoYXIgZGVsaW09J1wiJyk7Ci0KLSAgICAvLyAgbWFuaXB1bGF0b3IgZm9yIGNvbnN0IEMtc3RyaW5nKgotICAgIHRlbXBsYXRlIDxjbGFzcyBDaGFyPgotICAgICAgZGV0YWlsOjpxdW90ZWRfcHJveHk8Y29uc3QgQ2hhciosIENoYXI+Ci0gICAgICAgIHF1b3RlZChjb25zdCBDaGFyKiBzLCBDaGFyIGVzY2FwZT0nXFwnLCBDaGFyIGRlbGltPSdcIicpOwotCi0gICAgLy8gIC0tLS0tLS0tLS0tICBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgIG5hbWVzcGFjZSBkZXRhaWwKLSAgICB7Ci0gICAgICAvLyAgcHJveHkgdXNlZCBhcyBhbiBhcmd1bWVudCBwYWNrIAotICAgICAgdGVtcGxhdGUgPGNsYXNzIFN0cmluZywgY2xhc3MgQ2hhcj4KLSAgICAgIHN0cnVjdCBxdW90ZWRfcHJveHkKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nICBzdHJpbmc7Ci0gICAgICAgIENoYXIgICAgZXNjYXBlOwotICAgICAgICBDaGFyICAgIGRlbGltOwotCi0gICAgICAgIHF1b3RlZF9wcm94eShTdHJpbmcgc18sIENoYXIgZXNjYXBlXywgQ2hhciBkZWxpbV8pCi0gICAgICAgICAgOiBzdHJpbmcoc18pLCBlc2NhcGUoZXNjYXBlXyksIGRlbGltKGRlbGltXykge30KLSAgICAgIHByaXZhdGU6Ci0gICAgICAgIC8vIFN0cmluZyBtYXkgYmUgYSBjb25zdCB0eXBlLCBzbyBkaXNhYmxlIHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yCi0gICAgICAgIHF1b3RlZF9wcm94eSYgb3BlcmF0b3I9KGNvbnN0IHF1b3RlZF9wcm94eSYpOyAgLy8gPSBkZWxldGVkCi0gICAgICB9OwotCi0gICAgICAvLyAgYWJzdHJhY3QgYXdheSBkaWZmZXJlbmNlIGJldHdlZW4gcHJveGllcyB3aXRoIGNvbnN0IG9yIG5vbi1jb25zdCBiYXNpY19zdHJpbmdzCi0gICAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ2hhciwgY2xhc3MgVHJhaXRzLCBjbGFzcyBBbGxvYz4KLSAgICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLCBUcmFpdHM+JgotICAgICAgYmFzaWNfc3RyaW5nX2luc2VydGVyX2ltcChzdGQ6OmJhc2ljX29zdHJlYW08Q2hhciwgVHJhaXRzPiYgb3MsCi0gICAgICAgIHN0ZDo6YmFzaWNfc3RyaW5nPENoYXIsIFRyYWl0cywgQWxsb2M+IGNvbnN0ICYgc3RyaW5nLCBDaGFyIGVzY2FwZSwgQ2hhciBkZWxpbSkKLSAgICAgIHsKLSAgICAgICAgb3MgPDwgZGVsaW07Ci0gICAgICAgIHR5cGVuYW1lIHN0ZDo6YmFzaWNfc3RyaW5nPENoYXIsIFRyYWl0cywgQWxsb2M+Ojpjb25zdF9pdGVyYXRvcgotICAgICAgICAgIGVuZF9pdCA9IHN0cmluZy5lbmQoKTsKLSAgICAgICAgZm9yICh0eXBlbmFtZSBzdGQ6OmJhc2ljX3N0cmluZzxDaGFyLCBUcmFpdHMsIEFsbG9jPjo6Y29uc3RfaXRlcmF0b3IKLSAgICAgICAgICBpdCA9IHN0cmluZy5iZWdpbigpOwotICAgICAgICAgIGl0ICE9IGVuZF9pdDsKLSAgICAgICAgICArK2l0ICkKLSAgICAgICAgewotICAgICAgICAgIGlmICgqaXQgPT0gZGVsaW0gfHwgKml0ID09IGVzY2FwZSkKLSAgICAgICAgICAgIG9zIDw8IGVzY2FwZTsKLSAgICAgICAgICBvcyA8PCAqaXQ7Ci0gICAgICAgIH0KLSAgICAgICAgb3MgPDwgZGVsaW07Ci0gICAgICAgIHJldHVybiBvczsKLSAgICAgIH0KLQotICAgICAgLy8gIGluc2VydGVyIGZvciBjb25zdCBzdGQ6OmJhc2ljX3N0cmluZyYgcHJveGllcwotICAgICAgdGVtcGxhdGUgPGNsYXNzIENoYXIsIGNsYXNzIFRyYWl0cywgY2xhc3MgQWxsb2M+Ci0gICAgICBpbmxpbmUKLSAgICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLCBUcmFpdHM+JiBvcGVyYXRvcjw8KHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLCBUcmFpdHM+JiBvcywgCi0gICAgICAgIGNvbnN0IHF1b3RlZF9wcm94eTxzdGQ6OmJhc2ljX3N0cmluZzxDaGFyLCBUcmFpdHMsIEFsbG9jPiBjb25zdCAmLCBDaGFyPiYgcHJveHkpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBiYXNpY19zdHJpbmdfaW5zZXJ0ZXJfaW1wKG9zLCBwcm94eS5zdHJpbmcsIHByb3h5LmVzY2FwZSwgcHJveHkuZGVsaW0pOwotICAgICAgfQotCi0gICAgICAvLyAgaW5zZXJ0ZXIgZm9yIG5vbi1jb25zdCBzdGQ6OmJhc2ljX3N0cmluZyYgcHJveGllcwotICAgICAgdGVtcGxhdGUgPGNsYXNzIENoYXIsIGNsYXNzIFRyYWl0cywgY2xhc3MgQWxsb2M+Ci0gICAgICBpbmxpbmUKLSAgICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLCBUcmFpdHM+JiBvcGVyYXRvcjw8KHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLCBUcmFpdHM+JiBvcywgCi0gICAgICAgIGNvbnN0IHF1b3RlZF9wcm94eTxzdGQ6OmJhc2ljX3N0cmluZzxDaGFyLCBUcmFpdHMsIEFsbG9jPiYsIENoYXI+JiBwcm94eSkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGJhc2ljX3N0cmluZ19pbnNlcnRlcl9pbXAob3MsIHByb3h5LnN0cmluZywgcHJveHkuZXNjYXBlLCBwcm94eS5kZWxpbSk7Ci0gICAgICB9Ci0gCi0gICAgICAvLyAgaW5zZXJ0ZXIgZm9yIGNvbnN0IEMtc3RyaW5nKiBwcm94aWVzCi0gICAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ2hhciwgY2xhc3MgVHJhaXRzPgotICAgICAgc3RkOjpiYXNpY19vc3RyZWFtPENoYXIsIFRyYWl0cz4mIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19vc3RyZWFtPENoYXIsIFRyYWl0cz4mIG9zLCAKLSAgICAgICAgY29uc3QgcXVvdGVkX3Byb3h5PGNvbnN0IENoYXIqLCBDaGFyPiYgcHJveHkpCi0gICAgICB7Ci0gICAgICAgIG9zIDw8IHByb3h5LmRlbGltOwotICAgICAgICBmb3IgKGNvbnN0IENoYXIqIGl0ID0gcHJveHkuc3RyaW5nOwotICAgICAgICAgICppdDsKLSAgICAgICAgICArK2l0ICkKLSAgICAgICAgewotICAgICAgICAgIGlmICgqaXQgPT0gcHJveHkuZGVsaW0gfHwgKml0ID09IHByb3h5LmVzY2FwZSkKLSAgICAgICAgICAgIG9zIDw8IHByb3h5LmVzY2FwZTsKLSAgICAgICAgICBvcyA8PCAqaXQ7Ci0gICAgICAgIH0KLSAgICAgICAgb3MgPDwgcHJveHkuZGVsaW07Ci0gICAgICAgIHJldHVybiBvczsKLSAgICAgIH0KLQotICAgICAgLy8gIGV4dHJhY3RvciBmb3Igbm9uLWNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nJiBwcm94aWVzCi0gICAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ2hhciwgY2xhc3MgVHJhaXRzLCBjbGFzcyBBbGxvYz4KLSAgICAgIHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyLCBUcmFpdHM+JiBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyLCBUcmFpdHM+JiBpcywgCi0gICAgICAgIGNvbnN0IHF1b3RlZF9wcm94eTxzdGQ6OmJhc2ljX3N0cmluZzxDaGFyLCBUcmFpdHMsIEFsbG9jPiYsIENoYXI+JiBwcm94eSkKLSAgICAgIHsKLSAgICAgICAgcHJveHkuc3RyaW5nLmNsZWFyKCk7Ci0gICAgICAgIENoYXIgYzsKLSAgICAgICAgaXMgPj4gYzsKLSAgICAgICAgaWYgKGMgIT0gcHJveHkuZGVsaW0pCi0gICAgICAgIHsKLSAgICAgICAgICBpcy51bmdldCgpOwotICAgICAgICAgIGlzID4+IHByb3h5LnN0cmluZzsKLSAgICAgICAgICByZXR1cm4gaXM7Ci0gICAgICAgIH0KLSAgICAgICAgewotICAgICAgICAgIG5kbmJvb3N0Ojppbzo6aW9zX2ZsYWdzX3NhdmVyIGlmcyhpcyk7Ci0gICAgICAgICAgaXMgPj4gc3RkOjpub3NraXB3czsKLSAgICAgICAgICBmb3IgKDs7KSAgCi0gICAgICAgICAgewotICAgICAgICAgICAgaXMgPj4gYzsKLSAgICAgICAgICAgIGlmICghaXMuZ29vZCgpKSAgLy8gY29wZSB3aXRoIEkvTyBlcnJvcnMgb3IgZW5kLW9mLWZpbGUKLSAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBpZiAoYyA9PSBwcm94eS5lc2NhcGUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGlzID4+IGM7Ci0gICAgICAgICAgICAgIGlmICghaXMuZ29vZCgpKSAgLy8gY29wZSB3aXRoIEkvTyBlcnJvcnMgb3IgZW5kLW9mLWZpbGUKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gcHJveHkuZGVsaW0pCi0gICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgcHJveHkuc3RyaW5nICs9IGM7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBpczsKLSAgICAgIH0KLQotICAgIH0gIC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotICAgIC8vICBtYW5pcHVsYXRvciBpbXBsZW1lbnRhdGlvbiBmb3IgY29uc3Qgc3RkOjpiYXNpY19zdHJpbmcmCi0gICAgdGVtcGxhdGUgPGNsYXNzIENoYXIsIGNsYXNzIFRyYWl0cywgY2xhc3MgQWxsb2M+Ci0gICAgaW5saW5lIGRldGFpbDo6cXVvdGVkX3Byb3h5PHN0ZDo6YmFzaWNfc3RyaW5nPENoYXIsIFRyYWl0cywgQWxsb2M+IGNvbnN0ICYsIENoYXI+Ci0gICAgcXVvdGVkKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPENoYXIsIFRyYWl0cywgQWxsb2M+JiBzLCBDaGFyIGVzY2FwZSwgQ2hhciBkZWxpbSkKLSAgICB7Ci0gICAgICByZXR1cm4gZGV0YWlsOjpxdW90ZWRfcHJveHk8c3RkOjpiYXNpY19zdHJpbmc8Q2hhciwgVHJhaXRzLCBBbGxvYz4gY29uc3QgJiwgQ2hhcj4KLSAgICAgICAgKHMsIGVzY2FwZSwgZGVsaW0pOwotICAgIH0KLQotICAgIC8vICBtYW5pcHVsYXRvciBpbXBsZW1lbnRhdGlvbiBmb3Igbm9uLWNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nJgotICAgIHRlbXBsYXRlIDxjbGFzcyBDaGFyLCBjbGFzcyBUcmFpdHMsIGNsYXNzIEFsbG9jPgotICAgIGlubGluZSBkZXRhaWw6OnF1b3RlZF9wcm94eTxzdGQ6OmJhc2ljX3N0cmluZzxDaGFyLCBUcmFpdHMsIEFsbG9jPiAmLCBDaGFyPgotICAgIHF1b3RlZChzdGQ6OmJhc2ljX3N0cmluZzxDaGFyLCBUcmFpdHMsIEFsbG9jPiYgcywgQ2hhciBlc2NhcGUsIENoYXIgZGVsaW0pCi0gICAgewotICAgICAgcmV0dXJuIGRldGFpbDo6cXVvdGVkX3Byb3h5PHN0ZDo6YmFzaWNfc3RyaW5nPENoYXIsIFRyYWl0cywgQWxsb2M+JiwgQ2hhcj4KLSAgICAgICAgKHMsIGVzY2FwZSwgZGVsaW0pOwotICAgIH0KLQotICAgIC8vICBtYW5pcHVsYXRvciBpbXBsZW1lbnRhdGlvbiBmb3IgY29uc3QgQy1zdHJpbmcqCi0gICAgdGVtcGxhdGUgPGNsYXNzIENoYXI+Ci0gICAgaW5saW5lIGRldGFpbDo6cXVvdGVkX3Byb3h5PGNvbnN0IENoYXIqLCBDaGFyPgotICAgIHF1b3RlZChjb25zdCBDaGFyKiBzLCBDaGFyIGVzY2FwZSwgQ2hhciBkZWxpbSkKLSAgICB7Ci0gICAgICByZXR1cm4gZGV0YWlsOjpxdW90ZWRfcHJveHk8Y29uc3QgQ2hhciosIENoYXI+IChzLCBlc2NhcGUsIGRlbGltKTsKLSAgICB9Ci0KLSAgfSAgLy8gbmFtZXNwYWNlIGlvCi19ICAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX0lPX1FVT1RFRF9NQU5JUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pby9pb3Nfc3RhdGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pby9pb3Nfc3RhdGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MGQ4MDJhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW8vaW9zX3N0YXRlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzOSArMCwwIEBACi0vLyAgQm9vc3QgaW8vaW9zX3N0YXRlLmhwcCBoZWFkZXIgZmlsZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IDIwMDIsIDIwMDUgRGFyeWxlIFdhbGtlci4gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uCi0vLyAgYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAgKFNlZSBhY2NvbXBhbnlpbmcKLS8vICBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBhIGNvcHkgYXQgPGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dD4uKQotCi0vLyAgU2VlIDxodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvLz4gZm9yIHRoZSBsaWJyYXJ5J3MgaG9tZSBwYWdlLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPX0lPU19TVEFURV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfSU9fSU9TX1NUQVRFX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9fZndkLmhwcD4gIC8vIHNlbGYgaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2luY2x1ZGUgPGlvcz4gICAgICAgIC8vIGZvciBzdGQ6Omlvc19iYXNlLCBzdGQ6OmJhc2ljX2lvcywgZXRjLgotI2lmbmRlZiBORE5CT09TVF9OT19TVERfTE9DQUxFCi0jaW5jbHVkZSA8bG9jYWxlPiAgICAgLy8gZm9yIHN0ZDo6bG9jYWxlCi0jZW5kaWYKLSNpbmNsdWRlIDxvc3RyZWFtPiAgICAvLyBmb3Igc3RkOjpiYXNpY19vc3RyZWFtCi0jaW5jbHVkZSA8c3RyZWFtYnVmPiAgLy8gZm9yIHN0ZDo6YmFzaWNfc3RyZWFtYnVmCi0jaW5jbHVkZSA8c3RyaW5nPiAgICAgLy8gZm9yIHN0ZDo6Y2hhcl90cmFpdHMKLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLW5hbWVzcGFjZSBpbwotewotCi0KLS8vICBCYXNpYyBzdHJlYW0gc3RhdGUgc2F2ZXIgY2xhc3MgZGVjbGFyYXRpb25zICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLWNsYXNzIGlvc19mbGFnc19zYXZlcgotewotcHVibGljOgotICAgIHR5cGVkZWYgOjpzdGQ6Omlvc19iYXNlICAgICAgICAgICAgc3RhdGVfdHlwZTsKLSAgICB0eXBlZGVmIDo6c3RkOjppb3NfYmFzZTo6Zm10ZmxhZ3MgIGFzcGVjdF90eXBlOwotCi0gICAgZXhwbGljaXQgIGlvc19mbGFnc19zYXZlciggc3RhdGVfdHlwZSAmcyApCi0gICAgICAgIDogc19zYXZlXyggcyApLCBhX3NhdmVfKCBzLmZsYWdzKCkgKQotICAgICAgICB7fQotICAgIGlvc19mbGFnc19zYXZlciggc3RhdGVfdHlwZSAmcywgYXNwZWN0X3R5cGUgY29uc3QgJmEgKQotICAgICAgICA6IHNfc2F2ZV8oIHMgKSwgYV9zYXZlXyggcy5mbGFncyhhKSApCi0gICAgICAgIHt9Ci0gICAgfmlvc19mbGFnc19zYXZlcigpCi0gICAgICAgIHsgdGhpcy0+cmVzdG9yZSgpOyB9Ci0KLSAgICB2b2lkICByZXN0b3JlKCkKLSAgICAgICAgeyBzX3NhdmVfLmZsYWdzKCBhX3NhdmVfICk7IH0KLQotcHJpdmF0ZToKLSAgICBzdGF0ZV90eXBlICYgICAgICAgc19zYXZlXzsKLSAgICBhc3BlY3RfdHlwZSBjb25zdCAgYV9zYXZlXzsKLQotICAgIGlvc19mbGFnc19zYXZlciYgb3BlcmF0b3I9KGNvbnN0IGlvc19mbGFnc19zYXZlciYpOwotfTsKLQotY2xhc3MgaW9zX3ByZWNpc2lvbl9zYXZlcgotewotcHVibGljOgotICAgIHR5cGVkZWYgOjpzdGQ6Omlvc19iYXNlICAgIHN0YXRlX3R5cGU7Ci0gICAgdHlwZWRlZiA6OnN0ZDo6c3RyZWFtc2l6ZSAgYXNwZWN0X3R5cGU7Ci0KLSAgICBleHBsaWNpdCAgaW9zX3ByZWNpc2lvbl9zYXZlciggc3RhdGVfdHlwZSAmcyApCi0gICAgICAgIDogc19zYXZlXyggcyApLCBhX3NhdmVfKCBzLnByZWNpc2lvbigpICkKLSAgICAgICAge30KLSAgICBpb3NfcHJlY2lzaW9uX3NhdmVyKCBzdGF0ZV90eXBlICZzLCBhc3BlY3RfdHlwZSBjb25zdCAmYSApCi0gICAgICAgIDogc19zYXZlXyggcyApLCBhX3NhdmVfKCBzLnByZWNpc2lvbihhKSApCi0gICAgICAgIHt9Ci0gICAgfmlvc19wcmVjaXNpb25fc2F2ZXIoKQotICAgICAgICB7IHRoaXMtPnJlc3RvcmUoKTsgfQotCi0gICAgdm9pZCAgcmVzdG9yZSgpCi0gICAgICAgIHsgc19zYXZlXy5wcmVjaXNpb24oIGFfc2F2ZV8gKTsgfQotCi1wcml2YXRlOgotICAgIHN0YXRlX3R5cGUgJiAgICAgICBzX3NhdmVfOwotICAgIGFzcGVjdF90eXBlIGNvbnN0ICBhX3NhdmVfOwotCi0gICAgaW9zX3ByZWNpc2lvbl9zYXZlciYgb3BlcmF0b3I9KGNvbnN0IGlvc19wcmVjaXNpb25fc2F2ZXImKTsKLX07Ci0KLWNsYXNzIGlvc193aWR0aF9zYXZlcgotewotcHVibGljOgotICAgIHR5cGVkZWYgOjpzdGQ6Omlvc19iYXNlICAgIHN0YXRlX3R5cGU7Ci0gICAgdHlwZWRlZiA6OnN0ZDo6c3RyZWFtc2l6ZSAgYXNwZWN0X3R5cGU7Ci0KLSAgICBleHBsaWNpdCAgaW9zX3dpZHRoX3NhdmVyKCBzdGF0ZV90eXBlICZzICkKLSAgICAgICAgOiBzX3NhdmVfKCBzICksIGFfc2F2ZV8oIHMud2lkdGgoKSApCi0gICAgICAgIHt9Ci0gICAgaW9zX3dpZHRoX3NhdmVyKCBzdGF0ZV90eXBlICZzLCBhc3BlY3RfdHlwZSBjb25zdCAmYSApCi0gICAgICAgIDogc19zYXZlXyggcyApLCBhX3NhdmVfKCBzLndpZHRoKGEpICkKLSAgICAgICAge30KLSAgICB+aW9zX3dpZHRoX3NhdmVyKCkKLSAgICAgICAgeyB0aGlzLT5yZXN0b3JlKCk7IH0KLQotICAgIHZvaWQgIHJlc3RvcmUoKQotICAgICAgICB7IHNfc2F2ZV8ud2lkdGgoIGFfc2F2ZV8gKTsgfQotCi1wcml2YXRlOgotICAgIHN0YXRlX3R5cGUgJiAgICAgICBzX3NhdmVfOwotICAgIGFzcGVjdF90eXBlIGNvbnN0ICBhX3NhdmVfOwotICAgIGlvc193aWR0aF9zYXZlciYgb3BlcmF0b3I9KGNvbnN0IGlvc193aWR0aF9zYXZlciYpOwotfTsKLQotCi0vLyAgQWR2YW5jZWQgc3RyZWFtIHN0YXRlIHNhdmVyIGNsYXNzIHRlbXBsYXRlIGRlY2xhcmF0aW9ucyAgLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIENoLCBjbGFzcyBUciA+Ci1jbGFzcyBiYXNpY19pb3NfaW9zdGF0ZV9zYXZlcgotewotcHVibGljOgotICAgIHR5cGVkZWYgOjpzdGQ6OmJhc2ljX2lvczxDaCwgVHI+ICBzdGF0ZV90eXBlOwotICAgIHR5cGVkZWYgOjpzdGQ6Omlvc19iYXNlOjppb3N0YXRlICBhc3BlY3RfdHlwZTsKLQotICAgIGV4cGxpY2l0ICBiYXNpY19pb3NfaW9zdGF0ZV9zYXZlciggc3RhdGVfdHlwZSAmcyApCi0gICAgICAgIDogc19zYXZlXyggcyApLCBhX3NhdmVfKCBzLnJkc3RhdGUoKSApCi0gICAgICAgIHt9Ci0gICAgYmFzaWNfaW9zX2lvc3RhdGVfc2F2ZXIoIHN0YXRlX3R5cGUgJnMsIGFzcGVjdF90eXBlIGNvbnN0ICZhICkKLSAgICAgICAgOiBzX3NhdmVfKCBzICksIGFfc2F2ZV8oIHMucmRzdGF0ZSgpICkKLSAgICAgICAgeyBzLmNsZWFyKGEpOyB9Ci0gICAgfmJhc2ljX2lvc19pb3N0YXRlX3NhdmVyKCkKLSAgICAgICAgeyB0aGlzLT5yZXN0b3JlKCk7IH0KLQotICAgIHZvaWQgIHJlc3RvcmUoKQotICAgICAgICB7IHNfc2F2ZV8uY2xlYXIoIGFfc2F2ZV8gKTsgfQotCi1wcml2YXRlOgotICAgIHN0YXRlX3R5cGUgJiAgICAgICBzX3NhdmVfOwotICAgIGFzcGVjdF90eXBlIGNvbnN0ICBhX3NhdmVfOwotICAgIGJhc2ljX2lvc19pb3N0YXRlX3NhdmVyJiBvcGVyYXRvcj0oY29uc3QgYmFzaWNfaW9zX2lvc3RhdGVfc2F2ZXImKTsKLX07Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgQ2gsIGNsYXNzIFRyID4KLWNsYXNzIGJhc2ljX2lvc19leGNlcHRpb25fc2F2ZXIKLXsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIDo6c3RkOjpiYXNpY19pb3M8Q2gsIFRyPiAgc3RhdGVfdHlwZTsKLSAgICB0eXBlZGVmIDo6c3RkOjppb3NfYmFzZTo6aW9zdGF0ZSAgYXNwZWN0X3R5cGU7Ci0KLSAgICBleHBsaWNpdCAgYmFzaWNfaW9zX2V4Y2VwdGlvbl9zYXZlciggc3RhdGVfdHlwZSAmcyApCi0gICAgICAgIDogc19zYXZlXyggcyApLCBhX3NhdmVfKCBzLmV4Y2VwdGlvbnMoKSApCi0gICAgICAgIHt9Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU4MikpCi0gICAgYmFzaWNfaW9zX2V4Y2VwdGlvbl9zYXZlciggc3RhdGVfdHlwZSAmcywgYXNwZWN0X3R5cGUgYSApCi0jZWxzZQotICAgIGJhc2ljX2lvc19leGNlcHRpb25fc2F2ZXIoIHN0YXRlX3R5cGUgJnMsIGFzcGVjdF90eXBlIGNvbnN0ICZhICkKLSNlbmRpZgotICAgICAgICA6IHNfc2F2ZV8oIHMgKSwgYV9zYXZlXyggcy5leGNlcHRpb25zKCkgKQotICAgICAgICB7IHMuZXhjZXB0aW9ucyhhKTsgfQotICAgIH5iYXNpY19pb3NfZXhjZXB0aW9uX3NhdmVyKCkKLSAgICAgICAgeyB0aGlzLT5yZXN0b3JlKCk7IH0KLQotICAgIHZvaWQgIHJlc3RvcmUoKQotICAgICAgICB7IHNfc2F2ZV8uZXhjZXB0aW9ucyggYV9zYXZlXyApOyB9Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGVfdHlwZSAmICAgICAgIHNfc2F2ZV87Ci0gICAgYXNwZWN0X3R5cGUgY29uc3QgIGFfc2F2ZV87Ci0gICAgYmFzaWNfaW9zX2V4Y2VwdGlvbl9zYXZlciYgb3BlcmF0b3I9KGNvbnN0IGJhc2ljX2lvc19leGNlcHRpb25fc2F2ZXImKTsKLX07Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgQ2gsIGNsYXNzIFRyID4KLWNsYXNzIGJhc2ljX2lvc190aWVfc2F2ZXIKLXsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIDo6c3RkOjpiYXNpY19pb3M8Q2gsIFRyPiAgICAgICAgc3RhdGVfdHlwZTsKLSAgICB0eXBlZGVmIDo6c3RkOjpiYXNpY19vc3RyZWFtPENoLCBUcj4gKiAgYXNwZWN0X3R5cGU7Ci0KLSAgICBleHBsaWNpdCAgYmFzaWNfaW9zX3RpZV9zYXZlciggc3RhdGVfdHlwZSAmcyApCi0gICAgICAgIDogc19zYXZlXyggcyApLCBhX3NhdmVfKCBzLnRpZSgpICkKLSAgICAgICAge30KLSAgICBiYXNpY19pb3NfdGllX3NhdmVyKCBzdGF0ZV90eXBlICZzLCBhc3BlY3RfdHlwZSBjb25zdCAmYSApCi0gICAgICAgIDogc19zYXZlXyggcyApLCBhX3NhdmVfKCBzLnRpZShhKSApCi0gICAgICAgIHt9Ci0gICAgfmJhc2ljX2lvc190aWVfc2F2ZXIoKQotICAgICAgICB7IHRoaXMtPnJlc3RvcmUoKTsgfQotCi0gICAgdm9pZCAgcmVzdG9yZSgpCi0gICAgICAgIHsgc19zYXZlXy50aWUoIGFfc2F2ZV8gKTsgfQotCi1wcml2YXRlOgotICAgIHN0YXRlX3R5cGUgJiAgICAgICBzX3NhdmVfOwotICAgIGFzcGVjdF90eXBlIGNvbnN0ICBhX3NhdmVfOwotICAgIGJhc2ljX2lvc190aWVfc2F2ZXImIG9wZXJhdG9yPShjb25zdCBiYXNpY19pb3NfdGllX3NhdmVyJik7Ci19OwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIENoLCBjbGFzcyBUciA+Ci1jbGFzcyBiYXNpY19pb3NfcmRidWZfc2F2ZXIKLXsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIDo6c3RkOjpiYXNpY19pb3M8Q2gsIFRyPiAgICAgICAgICBzdGF0ZV90eXBlOwotICAgIHR5cGVkZWYgOjpzdGQ6OmJhc2ljX3N0cmVhbWJ1ZjxDaCwgVHI+ICogIGFzcGVjdF90eXBlOwotCi0gICAgZXhwbGljaXQgIGJhc2ljX2lvc19yZGJ1Zl9zYXZlciggc3RhdGVfdHlwZSAmcyApCi0gICAgICAgIDogc19zYXZlXyggcyApLCBhX3NhdmVfKCBzLnJkYnVmKCkgKQotICAgICAgICB7fQotICAgIGJhc2ljX2lvc19yZGJ1Zl9zYXZlciggc3RhdGVfdHlwZSAmcywgYXNwZWN0X3R5cGUgY29uc3QgJmEgKQotICAgICAgICA6IHNfc2F2ZV8oIHMgKSwgYV9zYXZlXyggcy5yZGJ1ZihhKSApCi0gICAgICAgIHt9Ci0gICAgfmJhc2ljX2lvc19yZGJ1Zl9zYXZlcigpCi0gICAgICAgIHsgdGhpcy0+cmVzdG9yZSgpOyB9Ci0KLSAgICB2b2lkICByZXN0b3JlKCkKLSAgICAgICAgeyBzX3NhdmVfLnJkYnVmKCBhX3NhdmVfICk7IH0KLQotcHJpdmF0ZToKLSAgICBzdGF0ZV90eXBlICYgICAgICAgc19zYXZlXzsKLSAgICBhc3BlY3RfdHlwZSBjb25zdCAgYV9zYXZlXzsKLSAgICBiYXNpY19pb3NfcmRidWZfc2F2ZXImIG9wZXJhdG9yPShjb25zdCBiYXNpY19pb3NfcmRidWZfc2F2ZXImKTsKLX07Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgQ2gsIGNsYXNzIFRyID4KLWNsYXNzIGJhc2ljX2lvc19maWxsX3NhdmVyCi17Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiA6OnN0ZDo6YmFzaWNfaW9zPENoLCBUcj4gICAgICAgIHN0YXRlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzdGF0ZV90eXBlOjpjaGFyX3R5cGUgIGFzcGVjdF90eXBlOwotCi0gICAgZXhwbGljaXQgIGJhc2ljX2lvc19maWxsX3NhdmVyKCBzdGF0ZV90eXBlICZzICkKLSAgICAgICAgOiBzX3NhdmVfKCBzICksIGFfc2F2ZV8oIHMuZmlsbCgpICkKLSAgICAgICAge30KLSAgICBiYXNpY19pb3NfZmlsbF9zYXZlciggc3RhdGVfdHlwZSAmcywgYXNwZWN0X3R5cGUgY29uc3QgJmEgKQotICAgICAgICA6IHNfc2F2ZV8oIHMgKSwgYV9zYXZlXyggcy5maWxsKGEpICkKLSAgICAgICAge30KLSAgICB+YmFzaWNfaW9zX2ZpbGxfc2F2ZXIoKQotICAgICAgICB7IHRoaXMtPnJlc3RvcmUoKTsgfQotCi0gICAgdm9pZCAgcmVzdG9yZSgpCi0gICAgICAgIHsgc19zYXZlXy5maWxsKCBhX3NhdmVfICk7IH0KLQotcHJpdmF0ZToKLSAgICBzdGF0ZV90eXBlICYgICAgICAgc19zYXZlXzsKLSAgICBhc3BlY3RfdHlwZSBjb25zdCAgYV9zYXZlXzsKLSAgICBiYXNpY19pb3NfZmlsbF9zYXZlciYgb3BlcmF0b3I9KGNvbnN0IGJhc2ljX2lvc19maWxsX3NhdmVyJik7Ci19OwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9MT0NBTEUKLXRlbXBsYXRlIDwgdHlwZW5hbWUgQ2gsIGNsYXNzIFRyID4KLWNsYXNzIGJhc2ljX2lvc19sb2NhbGVfc2F2ZXIKLXsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIDo6c3RkOjpiYXNpY19pb3M8Q2gsIFRyPiBzdGF0ZV90eXBlOwotICAgIHR5cGVkZWYgOjpzdGQ6OmxvY2FsZSBhc3BlY3RfdHlwZTsKLQotICAgIGV4cGxpY2l0IGJhc2ljX2lvc19sb2NhbGVfc2F2ZXIoIHN0YXRlX3R5cGUgJnMgKQotICAgICAgICA6IHNfc2F2ZV8oIHMgKSwgYV9zYXZlXyggcy5nZXRsb2MoKSApCi0gICAgICAgIHt9Ci0gICAgYmFzaWNfaW9zX2xvY2FsZV9zYXZlciggc3RhdGVfdHlwZSAmcywgYXNwZWN0X3R5cGUgY29uc3QgJmEgKQotICAgICAgICA6IHNfc2F2ZV8oIHMgKSwgYV9zYXZlXyggcy5pbWJ1ZShhKSApCi0gICAgICAgIHt9Ci0gICAgfmJhc2ljX2lvc19sb2NhbGVfc2F2ZXIoKQotICAgICAgICB7IHRoaXMtPnJlc3RvcmUoKTsgfQotCi0gICAgdm9pZCAgcmVzdG9yZSgpCi0gICAgICAgIHsgc19zYXZlXy5pbWJ1ZSggYV9zYXZlXyApOyB9Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGVfdHlwZSAmICAgICAgIHNfc2F2ZV87Ci0gICAgYXNwZWN0X3R5cGUgY29uc3QgIGFfc2F2ZV87Ci0gICAgYmFzaWNfaW9zX2xvY2FsZV9zYXZlciYgb3BlcmF0b3I9KGNvbnN0IGJhc2ljX2lvc19sb2NhbGVfc2F2ZXImKTsKLX07Ci0jZW5kaWYKLQotCi0vLyAgVXNlci1kZWZpbmVkIHN0cmVhbSBzdGF0ZSBzYXZlciBjbGFzcyBkZWNsYXJhdGlvbnMgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi1jbGFzcyBpb3NfaXdvcmRfc2F2ZXIKLXsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIDo6c3RkOjppb3NfYmFzZSAgc3RhdGVfdHlwZTsKLSAgICB0eXBlZGVmIGludCAgICAgICAgICAgICAgaW5kZXhfdHlwZTsKLSAgICB0eXBlZGVmIGxvbmcgICAgICAgICAgICAgYXNwZWN0X3R5cGU7Ci0KLSAgICBleHBsaWNpdCBpb3NfaXdvcmRfc2F2ZXIoIHN0YXRlX3R5cGUgJnMsIGluZGV4X3R5cGUgaSApCi0gICAgICAgIDogc19zYXZlXyggcyApLCBhX3NhdmVfKCBzLml3b3JkKGkpICksIGlfc2F2ZV8oIGkgKQotICAgICAgICB7fQotICAgIGlvc19pd29yZF9zYXZlciggc3RhdGVfdHlwZSAmcywgaW5kZXhfdHlwZSBpLCBhc3BlY3RfdHlwZSBjb25zdCAmYSApCi0gICAgICAgIDogc19zYXZlXyggcyApLCBhX3NhdmVfKCBzLml3b3JkKGkpICksIGlfc2F2ZV8oIGkgKQotICAgICAgICB7IHMuaXdvcmQoaSkgPSBhOyB9Ci0gICAgfmlvc19pd29yZF9zYXZlcigpCi0gICAgICAgIHsgdGhpcy0+cmVzdG9yZSgpOyB9Ci0KLSAgICB2b2lkICByZXN0b3JlKCkKLSAgICAgICAgeyBzX3NhdmVfLml3b3JkKCBpX3NhdmVfICkgPSBhX3NhdmVfOyB9Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGVfdHlwZSAmICAgICAgIHNfc2F2ZV87Ci0gICAgYXNwZWN0X3R5cGUgY29uc3QgIGFfc2F2ZV87Ci0gICAgaW5kZXhfdHlwZSBjb25zdCAgIGlfc2F2ZV87Ci0KLSAgICBpb3NfaXdvcmRfc2F2ZXImIG9wZXJhdG9yPShjb25zdCBpb3NfaXdvcmRfc2F2ZXImKTsKLX07Ci0KLWNsYXNzIGlvc19wd29yZF9zYXZlcgotewotcHVibGljOgotICAgIHR5cGVkZWYgOjpzdGQ6Omlvc19iYXNlICBzdGF0ZV90eXBlOwotICAgIHR5cGVkZWYgaW50ICAgICAgICAgICAgICBpbmRleF90eXBlOwotICAgIHR5cGVkZWYgdm9pZCAqICAgICAgICAgICBhc3BlY3RfdHlwZTsKLQotICAgIGV4cGxpY2l0ICBpb3NfcHdvcmRfc2F2ZXIoIHN0YXRlX3R5cGUgJnMsIGluZGV4X3R5cGUgaSApCi0gICAgICAgIDogc19zYXZlXyggcyApLCBhX3NhdmVfKCBzLnB3b3JkKGkpICksIGlfc2F2ZV8oIGkgKQotICAgICAgICB7fQotICAgIGlvc19wd29yZF9zYXZlciggc3RhdGVfdHlwZSAmcywgaW5kZXhfdHlwZSBpLCBhc3BlY3RfdHlwZSBjb25zdCAmYSApCi0gICAgICAgIDogc19zYXZlXyggcyApLCBhX3NhdmVfKCBzLnB3b3JkKGkpICksIGlfc2F2ZV8oIGkgKQotICAgICAgICB7IHMucHdvcmQoaSkgPSBhOyB9Ci0gICAgfmlvc19wd29yZF9zYXZlcigpCi0gICAgICAgIHsgdGhpcy0+cmVzdG9yZSgpOyB9Ci0KLSAgICB2b2lkICByZXN0b3JlKCkKLSAgICAgICAgeyBzX3NhdmVfLnB3b3JkKCBpX3NhdmVfICkgPSBhX3NhdmVfOyB9Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGVfdHlwZSAmICAgICAgIHNfc2F2ZV87Ci0gICAgYXNwZWN0X3R5cGUgY29uc3QgIGFfc2F2ZV87Ci0gICAgaW5kZXhfdHlwZSBjb25zdCAgIGlfc2F2ZV87Ci0KLSAgICBpb3NfcHdvcmRfc2F2ZXIgb3BlcmF0b3I9KGNvbnN0IGlvc19wd29yZF9zYXZlciYpOwotfTsKLQotCi0vLyAgQ29tYmluZWQgc3RyZWFtIHN0YXRlIHNhdmVyIGNsYXNzICh0ZW1wbGF0ZSkgZGVjbGFyYXRpb25zICAtLS0tLS0tLS0tLS0tLS0vLwotCi1jbGFzcyBpb3NfYmFzZV9hbGxfc2F2ZXIKLXsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIDo6c3RkOjppb3NfYmFzZSAgc3RhdGVfdHlwZTsKLQotICAgIGV4cGxpY2l0ICBpb3NfYmFzZV9hbGxfc2F2ZXIoIHN0YXRlX3R5cGUgJnMgKQotICAgICAgICA6IHNfc2F2ZV8oIHMgKSwgYTFfc2F2ZV8oIHMuZmxhZ3MoKSApLCBhMl9zYXZlXyggcy5wcmVjaXNpb24oKSApCi0gICAgICAgICwgYTNfc2F2ZV8oIHMud2lkdGgoKSApCi0gICAgICAgIHt9Ci0KLSAgICB+aW9zX2Jhc2VfYWxsX3NhdmVyKCkKLSAgICAgICAgeyB0aGlzLT5yZXN0b3JlKCk7IH0KLQotICAgIHZvaWQgIHJlc3RvcmUoKQotICAgIHsKLSAgICAgICAgc19zYXZlXy53aWR0aCggYTNfc2F2ZV8gKTsKLSAgICAgICAgc19zYXZlXy5wcmVjaXNpb24oIGEyX3NhdmVfICk7Ci0gICAgICAgIHNfc2F2ZV8uZmxhZ3MoIGExX3NhdmVfICk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIHN0YXRlX3R5cGUgJiAgICAgICAgICAgICAgICBzX3NhdmVfOwotICAgIHN0YXRlX3R5cGU6OmZtdGZsYWdzIGNvbnN0ICBhMV9zYXZlXzsKLSAgICA6OnN0ZDo6c3RyZWFtc2l6ZSBjb25zdCAgICAgYTJfc2F2ZV87Ci0gICAgOjpzdGQ6OnN0cmVhbXNpemUgY29uc3QgICAgIGEzX3NhdmVfOwotCi0gICAgaW9zX2Jhc2VfYWxsX3NhdmVyJiBvcGVyYXRvcj0oY29uc3QgaW9zX2Jhc2VfYWxsX3NhdmVyJik7Ci19OwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIENoLCBjbGFzcyBUciA+Ci1jbGFzcyBiYXNpY19pb3NfYWxsX3NhdmVyCi17Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiA6OnN0ZDo6YmFzaWNfaW9zPENoLCBUcj4gIHN0YXRlX3R5cGU7Ci0KLSAgICBleHBsaWNpdCAgYmFzaWNfaW9zX2FsbF9zYXZlciggc3RhdGVfdHlwZSAmcyApCi0gICAgICAgIDogc19zYXZlXyggcyApLCBhMV9zYXZlXyggcy5mbGFncygpICksIGEyX3NhdmVfKCBzLnByZWNpc2lvbigpICkKLSAgICAgICAgLCBhM19zYXZlXyggcy53aWR0aCgpICksIGE0X3NhdmVfKCBzLnJkc3RhdGUoKSApCi0gICAgICAgICwgYTVfc2F2ZV8oIHMuZXhjZXB0aW9ucygpICksIGE2X3NhdmVfKCBzLnRpZSgpICkKLSAgICAgICAgLCBhN19zYXZlXyggcy5yZGJ1ZigpICksIGE4X3NhdmVfKCBzLmZpbGwoKSApCi0gICAgICAgICNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0xPQ0FMRQotICAgICAgICAsIGE5X3NhdmVfKCBzLmdldGxvYygpICkKLSAgICAgICAgI2VuZGlmCi0gICAgICAgIHt9Ci0KLSAgICB+YmFzaWNfaW9zX2FsbF9zYXZlcigpCi0gICAgICAgIHsgdGhpcy0+cmVzdG9yZSgpOyB9Ci0KLSAgICB2b2lkICByZXN0b3JlKCkKLSAgICB7Ci0gICAgICAgICNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0xPQ0FMRQotICAgICAgICBzX3NhdmVfLmltYnVlKCBhOV9zYXZlXyApOwotICAgICAgICAjZW5kaWYKLSAgICAgICAgc19zYXZlXy5maWxsKCBhOF9zYXZlXyApOwotICAgICAgICBzX3NhdmVfLnJkYnVmKCBhN19zYXZlXyApOwotICAgICAgICBzX3NhdmVfLnRpZSggYTZfc2F2ZV8gKTsKLSAgICAgICAgc19zYXZlXy5leGNlcHRpb25zKCBhNV9zYXZlXyApOwotICAgICAgICBzX3NhdmVfLmNsZWFyKCBhNF9zYXZlXyApOwotICAgICAgICBzX3NhdmVfLndpZHRoKCBhM19zYXZlXyApOwotICAgICAgICBzX3NhdmVfLnByZWNpc2lvbiggYTJfc2F2ZV8gKTsKLSAgICAgICAgc19zYXZlXy5mbGFncyggYTFfc2F2ZV8gKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGVfdHlwZSAmICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNfc2F2ZV87Ci0gICAgdHlwZW5hbWUgc3RhdGVfdHlwZTo6Zm10ZmxhZ3MgY29uc3QgICAgIGExX3NhdmVfOwotICAgIDo6c3RkOjpzdHJlYW1zaXplIGNvbnN0ICAgICAgICAgICAgICAgICBhMl9zYXZlXzsKLSAgICA6OnN0ZDo6c3RyZWFtc2l6ZSBjb25zdCAgICAgICAgICAgICAgICAgYTNfc2F2ZV87Ci0gICAgdHlwZW5hbWUgc3RhdGVfdHlwZTo6aW9zdGF0ZSBjb25zdCAgICAgIGE0X3NhdmVfOwotICAgIHR5cGVuYW1lIHN0YXRlX3R5cGU6Omlvc3RhdGUgY29uc3QgICAgICBhNV9zYXZlXzsKLSAgICA6OnN0ZDo6YmFzaWNfb3N0cmVhbTxDaCwgVHI+ICogY29uc3QgICAgYTZfc2F2ZV87Ci0gICAgOjpzdGQ6OmJhc2ljX3N0cmVhbWJ1ZjxDaCwgVHI+ICogY29uc3QgIGE3X3NhdmVfOwotICAgIHR5cGVuYW1lIHN0YXRlX3R5cGU6OmNoYXJfdHlwZSBjb25zdCAgICBhOF9zYXZlXzsKLSAgICAjaWZuZGVmIE5ETkJPT1NUX05PX1NURF9MT0NBTEUKLSAgICA6OnN0ZDo6bG9jYWxlIGNvbnN0ICAgICAgICAgICAgICAgICAgICAgYTlfc2F2ZV87Ci0gICAgI2VuZGlmCi0KLSAgICBiYXNpY19pb3NfYWxsX3NhdmVyJiBvcGVyYXRvcj0oY29uc3QgYmFzaWNfaW9zX2FsbF9zYXZlciYpOwotfTsKLQotY2xhc3MgaW9zX2FsbF93b3JkX3NhdmVyCi17Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiA6OnN0ZDo6aW9zX2Jhc2UgIHN0YXRlX3R5cGU7Ci0gICAgdHlwZWRlZiBpbnQgICAgICAgICAgICAgIGluZGV4X3R5cGU7Ci0KLSAgICBpb3NfYWxsX3dvcmRfc2F2ZXIoIHN0YXRlX3R5cGUgJnMsIGluZGV4X3R5cGUgaSApCi0gICAgICAgIDogc19zYXZlXyggcyApLCBpX3NhdmVfKCBpICksIGExX3NhdmVfKCBzLml3b3JkKGkpICkKLSAgICAgICAgLCBhMl9zYXZlXyggcy5wd29yZChpKSApCi0gICAgICAgIHt9Ci0KLSAgICB+aW9zX2FsbF93b3JkX3NhdmVyKCkKLSAgICAgICAgeyB0aGlzLT5yZXN0b3JlKCk7IH0KLQotICAgIHZvaWQgIHJlc3RvcmUoKQotICAgIHsKLSAgICAgICAgc19zYXZlXy5wd29yZCggaV9zYXZlXyApID0gYTJfc2F2ZV87Ci0gICAgICAgIHNfc2F2ZV8uaXdvcmQoIGlfc2F2ZV8gKSA9IGExX3NhdmVfOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBzdGF0ZV90eXBlICYgICAgICBzX3NhdmVfOwotICAgIGluZGV4X3R5cGUgY29uc3QgIGlfc2F2ZV87Ci0gICAgbG9uZyBjb25zdCAgICAgICAgYTFfc2F2ZV87Ci0gICAgdm9pZCAqIGNvbnN0ICAgICAgYTJfc2F2ZV87Ci0KLSAgICBpb3NfYWxsX3dvcmRfc2F2ZXImIG9wZXJhdG9yPShjb25zdCBpb3NfYWxsX3dvcmRfc2F2ZXImKTsKLX07Ci0KLQotfSAgLy8gbmFtZXNwYWNlIGlvCi19ICAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX0lPX0lPU19TVEFURV9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9fZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9fZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzU1YTU4YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0vLyAgQm9vc3QgaW9fZndkLmhwcCBoZWFkZXIgZmlsZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IDIwMDIgRGFyeWxlIFdhbGtlci4gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0Ci0vLyAgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBhIGNvcHkgYXQgPGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dD4uKQotCi0vLyAgU2VlIDxodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvLz4gZm9yIHRoZSBsaWJyYXJ5J3MgaG9tZSBwYWdlLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPX0ZXRF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfSU9fRldEX0hQUAotCi0jaW5jbHVkZSA8aW9zZndkPiAgLy8gZm9yIHN0ZDo6Y2hhcl90cmFpdHMgKGRlY2xhcmF0aW9uKQotCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotbmFtZXNwYWNlIGlvCi17Ci0KLQotLy8gIEZyb20gPG5kbmJvb3N0L2lvL2lvc19zdGF0ZS5ocHA+ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotY2xhc3MgaW9zX2ZsYWdzX3NhdmVyOwotY2xhc3MgaW9zX3ByZWNpc2lvbl9zYXZlcjsKLWNsYXNzIGlvc193aWR0aF9zYXZlcjsKLWNsYXNzIGlvc19iYXNlX2FsbF9zYXZlcjsKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBDaCwgY2xhc3MgVHIgPSA6OnN0ZDo6Y2hhcl90cmFpdHM8Q2g+ID4KLSAgICBjbGFzcyBiYXNpY19pb3NfaW9zdGF0ZV9zYXZlcjsKLXRlbXBsYXRlIDwgdHlwZW5hbWUgQ2gsIGNsYXNzIFRyID0gOjpzdGQ6OmNoYXJfdHJhaXRzPENoPiA+Ci0gICAgY2xhc3MgYmFzaWNfaW9zX2V4Y2VwdGlvbl9zYXZlcjsKLXRlbXBsYXRlIDwgdHlwZW5hbWUgQ2gsIGNsYXNzIFRyID0gOjpzdGQ6OmNoYXJfdHJhaXRzPENoPiA+Ci0gICAgY2xhc3MgYmFzaWNfaW9zX3RpZV9zYXZlcjsKLXRlbXBsYXRlIDwgdHlwZW5hbWUgQ2gsIGNsYXNzIFRyID0gOjpzdGQ6OmNoYXJfdHJhaXRzPENoPiA+Ci0gICAgY2xhc3MgYmFzaWNfaW9zX3JkYnVmX3NhdmVyOwotdGVtcGxhdGUgPCB0eXBlbmFtZSBDaCwgY2xhc3MgVHIgPSA6OnN0ZDo6Y2hhcl90cmFpdHM8Q2g+ID4KLSAgICBjbGFzcyBiYXNpY19pb3NfZmlsbF9zYXZlcjsKLXRlbXBsYXRlIDwgdHlwZW5hbWUgQ2gsIGNsYXNzIFRyID0gOjpzdGQ6OmNoYXJfdHJhaXRzPENoPiA+Ci0gICAgY2xhc3MgYmFzaWNfaW9zX2xvY2FsZV9zYXZlcjsKLXRlbXBsYXRlIDwgdHlwZW5hbWUgQ2gsIGNsYXNzIFRyID0gOjpzdGQ6OmNoYXJfdHJhaXRzPENoPiA+Ci0gICAgY2xhc3MgYmFzaWNfaW9zX2FsbF9zYXZlcjsKLQotdHlwZWRlZiBiYXNpY19pb3NfaW9zdGF0ZV9zYXZlcjxjaGFyPiAgICAgICAgaW9zX2lvc3RhdGVfc2F2ZXI7Ci10eXBlZGVmIGJhc2ljX2lvc19pb3N0YXRlX3NhdmVyPHdjaGFyX3Q+ICAgIHdpb3NfaW9zdGF0ZV9zYXZlcjsKLXR5cGVkZWYgYmFzaWNfaW9zX2V4Y2VwdGlvbl9zYXZlcjxjaGFyPiAgICAgIGlvc19leGNlcHRpb25fc2F2ZXI7Ci10eXBlZGVmIGJhc2ljX2lvc19leGNlcHRpb25fc2F2ZXI8d2NoYXJfdD4gIHdpb3NfZXhjZXB0aW9uX3NhdmVyOwotdHlwZWRlZiBiYXNpY19pb3NfdGllX3NhdmVyPGNoYXI+ICAgICAgICAgICAgaW9zX3RpZV9zYXZlcjsKLXR5cGVkZWYgYmFzaWNfaW9zX3RpZV9zYXZlcjx3Y2hhcl90PiAgICAgICAgd2lvc190aWVfc2F2ZXI7Ci10eXBlZGVmIGJhc2ljX2lvc19yZGJ1Zl9zYXZlcjxjaGFyPiAgICAgICAgICBpb3NfcmRidWZfc2F2ZXI7Ci10eXBlZGVmIGJhc2ljX2lvc19yZGJ1Zl9zYXZlcjx3Y2hhcl90PiAgICAgIHdpb3NfcmRidWZfc2F2ZXI7Ci10eXBlZGVmIGJhc2ljX2lvc19maWxsX3NhdmVyPGNoYXI+ICAgICAgICAgICBpb3NfZmlsbF9zYXZlcjsKLXR5cGVkZWYgYmFzaWNfaW9zX2ZpbGxfc2F2ZXI8d2NoYXJfdD4gICAgICAgd2lvc19maWxsX3NhdmVyOwotdHlwZWRlZiBiYXNpY19pb3NfbG9jYWxlX3NhdmVyPGNoYXI+ICAgICAgICAgaW9zX2xvY2FsZV9zYXZlcjsKLXR5cGVkZWYgYmFzaWNfaW9zX2xvY2FsZV9zYXZlcjx3Y2hhcl90PiAgICAgd2lvc19sb2NhbGVfc2F2ZXI7Ci10eXBlZGVmIGJhc2ljX2lvc19hbGxfc2F2ZXI8Y2hhcj4gICAgICAgICAgICBpb3NfYWxsX3NhdmVyOwotdHlwZWRlZiBiYXNpY19pb3NfYWxsX3NhdmVyPHdjaGFyX3Q+ICAgICAgICB3aW9zX2FsbF9zYXZlcjsKLQotY2xhc3MgaW9zX2l3b3JkX3NhdmVyOwotY2xhc3MgaW9zX3B3b3JkX3NhdmVyOwotY2xhc3MgaW9zX2FsbF93b3JkX3NhdmVyOwotCi0KLX0gIC8vIG5hbWVzcGFjZSBpbwotfSAgLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLQotI2VuZGlmICAvLyBORE5CT09TVF9JT19GV0RfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jYXRlZ29yaWVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2NhdGVnb3JpZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNWE0MjU1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2NhdGVnb3JpZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTc1ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBDb250YWlucyBjYXRlZ29yeSBhbmQgbW9kZSB0YWdzIGZvciBjbGFzc2lmeWluZyBmaWx0ZXJzLCBkZXZpY2VzIGFuZCAKLS8vIHN0YW5kYXJkIHN0cmVhbSBhbmQgc3RyZWFtIGJ1ZmZlcnMgdHlwZXMuCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0NBVEVHT1JJRVNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19DQVRFR09SSUVTX0hQUF9JTkNMVURFRCAKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLVRhZ3MgZm9yIGRpc3BhdGNoIGFjY29yZGluZyB0byBpL28gbW9kZS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi1zdHJ1Y3QgYW55X3RhZyB7IH07Ci1uYW1lc3BhY2UgZGV0YWlsIHsgc3RydWN0IHR3b19zZXF1ZW5jZSA6IHZpcnR1YWwgYW55X3RhZyB7IH07IH0KLW5hbWVzcGFjZSBkZXRhaWwgeyBzdHJ1Y3QgcmFuZG9tX2FjY2VzcyA6IHZpcnR1YWwgYW55X3RhZyB7IH07IH0KLW5hbWVzcGFjZSBkZXRhaWwgeyBzdHJ1Y3Qgb25lX2hlYWQgOiB2aXJ0dWFsIGFueV90YWcgeyB9OyB9Ci1uYW1lc3BhY2UgZGV0YWlsIHsgc3RydWN0IHR3b19oZWFkIDogdmlydHVhbCBhbnlfdGFnIHsgfTsgfQotc3RydWN0IGlucHV0IDogdmlydHVhbCBhbnlfdGFnIHsgfTsKLXN0cnVjdCBvdXRwdXQgOiB2aXJ0dWFsIGFueV90YWcgeyB9Owotc3RydWN0IGJpZGlyZWN0aW9uYWwgOiB2aXJ0dWFsIGlucHV0LCB2aXJ0dWFsIG91dHB1dCwgZGV0YWlsOjp0d29fc2VxdWVuY2UgeyB9Owotc3RydWN0IGR1YWxfdXNlIDogdmlydHVhbCBpbnB1dCwgdmlydHVhbCBvdXRwdXQgeyB9OyAvLyBQc2V1ZG8tbW9kZS4KLXN0cnVjdCBpbnB1dF9zZWVrYWJsZSA6IHZpcnR1YWwgaW5wdXQsIHZpcnR1YWwgZGV0YWlsOjpyYW5kb21fYWNjZXNzIHsgfTsKLXN0cnVjdCBvdXRwdXRfc2Vla2FibGUgOiB2aXJ0dWFsIG91dHB1dCwgdmlydHVhbCBkZXRhaWw6OnJhbmRvbV9hY2Nlc3MgeyB9Owotc3RydWN0IHNlZWthYmxlCi0gICAgOiB2aXJ0dWFsIGlucHV0X3NlZWthYmxlLCAKLSAgICAgIHZpcnR1YWwgb3V0cHV0X3NlZWthYmxlLAotICAgICAgZGV0YWlsOjpvbmVfaGVhZAotICAgIHsgfTsKLXN0cnVjdCBkdWFsX3NlZWthYmxlCi0gICAgOiB2aXJ0dWFsIGlucHV0X3NlZWthYmxlLAotICAgICAgdmlydHVhbCBvdXRwdXRfc2Vla2FibGUsCi0gICAgICBkZXRhaWw6OnR3b19oZWFkCi0gICAgeyB9OyAgCi1zdHJ1Y3QgYmlkaXJlY3Rpb25hbF9zZWVrYWJsZQotICAgIDogaW5wdXRfc2Vla2FibGUsIG91dHB1dF9zZWVrYWJsZSwKLSAgICAgIGJpZGlyZWN0aW9uYWwsIGRldGFpbDo6dHdvX2hlYWQKLSAgICB7IH07Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tVGFncyBmb3IgdXNlIGFzIGkvbyBjYXRlZ29yaWVzLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXN0cnVjdCBkZXZpY2VfdGFnIDogdmlydHVhbCBhbnlfdGFnIHsgfTsKLXN0cnVjdCBmaWx0ZXJfdGFnIDogdmlydHVhbCBhbnlfdGFnIHsgfTsKLQotICAgIC8vIAotICAgIC8vIFRhZ3MgZm9yIG9wdGlvbmFsIGJlaGF2aW9yLgotICAgIC8vCi0KLXN0cnVjdCBwZWVrYWJsZV90YWcgOiB2aXJ0dWFsIGFueV90YWcgeyB9OyAgICAgICAgLy8gRGV2aWNlcy4KLXN0cnVjdCBjbG9zYWJsZV90YWcgOiB2aXJ0dWFsIGFueV90YWcgeyB9Owotc3RydWN0IGZsdXNoYWJsZV90YWcgOiB2aXJ0dWFsIGFueV90YWcgeyB9Owotc3RydWN0IGxvY2FsaXphYmxlX3RhZyA6IHZpcnR1YWwgYW55X3RhZyB7IH07Ci1zdHJ1Y3Qgb3B0aW1hbGx5X2J1ZmZlcmVkX3RhZyA6IHZpcnR1YWwgYW55X3RhZyB7IH07Ci1zdHJ1Y3QgZGlyZWN0X3RhZyA6IHZpcnR1YWwgYW55X3RhZyB7IH07ICAgICAgICAgIC8vIERldmljZXMuCi1zdHJ1Y3QgbXVsdGljaGFyX3RhZyA6IHZpcnR1YWwgYW55X3RhZyB7IH07ICAgICAgIC8vIEZpbHRlcnMuCi0KLXN0cnVjdCBzb3VyY2VfdGFnIDogZGV2aWNlX3RhZywgaW5wdXQgeyB9Owotc3RydWN0IHNpbmtfdGFnIDogZGV2aWNlX3RhZywgb3V0cHV0IHsgfTsKLXN0cnVjdCBiaWRpcmVjdGlvbmFsX2RldmljZV90YWcgOiBkZXZpY2VfdGFnLCBiaWRpcmVjdGlvbmFsIHsgfTsKLXN0cnVjdCBzZWVrYWJsZV9kZXZpY2VfdGFnIDogdmlydHVhbCBkZXZpY2VfdGFnLCBzZWVrYWJsZSB7IH07Ci0KLXN0cnVjdCBpbnB1dF9maWx0ZXJfdGFnIDogZmlsdGVyX3RhZywgaW5wdXQgeyB9Owotc3RydWN0IG91dHB1dF9maWx0ZXJfdGFnIDogZmlsdGVyX3RhZywgb3V0cHV0IHsgfTsKLXN0cnVjdCBiaWRpcmVjdGlvbmFsX2ZpbHRlcl90YWcgOiBmaWx0ZXJfdGFnLCBiaWRpcmVjdGlvbmFsIHsgfTsKLXN0cnVjdCBzZWVrYWJsZV9maWx0ZXJfdGFnIDogZmlsdGVyX3RhZywgc2Vla2FibGUgeyB9Owotc3RydWN0IGR1YWxfdXNlX2ZpbHRlcl90YWcgOiBmaWx0ZXJfdGFnLCBkdWFsX3VzZSB7IH07Ci0KLXN0cnVjdCBtdWx0aWNoYXJfaW5wdXRfZmlsdGVyX3RhZwotICAgIDogbXVsdGljaGFyX3RhZywKLSAgICAgIGlucHV0X2ZpbHRlcl90YWcKLSAgICB7IH07Ci1zdHJ1Y3QgbXVsdGljaGFyX291dHB1dF9maWx0ZXJfdGFnCi0gICAgOiBtdWx0aWNoYXJfdGFnLAotICAgICAgb3V0cHV0X2ZpbHRlcl90YWcKLSAgICB7IH07Ci1zdHJ1Y3QgbXVsdGljaGFyX2JpZGlyZWN0aW9uYWxfZmlsdGVyX3RhZwotICAgIDogbXVsdGljaGFyX3RhZywKLSAgICAgIGJpZGlyZWN0aW9uYWxfZmlsdGVyX3RhZwotICAgIHsgfTsKLXN0cnVjdCBtdWx0aWNoYXJfc2Vla2FibGVfZmlsdGVyX3RhZwotICAgIDogbXVsdGljaGFyX3RhZywKLSAgICAgIHNlZWthYmxlX2ZpbHRlcl90YWcKLSAgICB7IH07Ci1zdHJ1Y3QgbXVsdGljaGFyX2R1YWxfdXNlX2ZpbHRlcl90YWcgCi0gICAgOiBtdWx0aWNoYXJfdGFnLCAKLSAgICAgIGR1YWxfdXNlX2ZpbHRlcl90YWcKLSAgICB7IH07Ci0KLSAgICAvLwotICAgIC8vIFRhZ3MgZm9yIHN0YW5kYXJkIHN0cmVhbXMgYW5kIHN0cmVhbWJ1ZnMuCi0gICAgLy8KLQotc3RydWN0IHN0ZF9pb190YWcgOiB2aXJ0dWFsIGxvY2FsaXphYmxlX3RhZyB7IH07Ci1zdHJ1Y3QgaXN0cmVhbV90YWcKLSAgICA6IHZpcnR1YWwgZGV2aWNlX3RhZywKLSAgICAgIHZpcnR1YWwgcGVla2FibGVfdGFnLAotICAgICAgdmlydHVhbCBzdGRfaW9fdGFnCi0gICAgeyB9Owotc3RydWN0IG9zdHJlYW1fdGFnCi0gICAgOiB2aXJ0dWFsIGRldmljZV90YWcsCi0gICAgICB2aXJ0dWFsIHN0ZF9pb190YWcKLSAgICB7IH07Ci1zdHJ1Y3QgaW9zdHJlYW1fdGFnCi0gICAgOiBpc3RyZWFtX3RhZywKLSAgICAgIG9zdHJlYW1fdGFnCi0gICAgeyB9Owotc3RydWN0IHN0cmVhbWJ1Zl90YWcKLSAgICA6IGRldmljZV90YWcsCi0gICAgICBwZWVrYWJsZV90YWcsCi0gICAgICBzdGRfaW9fdGFnCi0gICAgeyB9Owotc3RydWN0IGlmc3RyZWFtX3RhZwotICAgIDogaW5wdXRfc2Vla2FibGUsCi0gICAgICBjbG9zYWJsZV90YWcsCi0gICAgICBpc3RyZWFtX3RhZwotICAgIHsgfTsKLXN0cnVjdCBvZnN0cmVhbV90YWcKLSAgICA6IG91dHB1dF9zZWVrYWJsZSwKLSAgICAgIGNsb3NhYmxlX3RhZywKLSAgICAgIG9zdHJlYW1fdGFnCi0gICAgeyB9Owotc3RydWN0IGZzdHJlYW1fdGFnCi0gICAgOiBzZWVrYWJsZSwKLSAgICAgIGNsb3NhYmxlX3RhZywKLSAgICAgIGlvc3RyZWFtX3RhZwotICAgIHsgfTsKLXN0cnVjdCBmaWxlYnVmX3RhZwotICAgIDogc2Vla2FibGUsCi0gICAgICBjbG9zYWJsZV90YWcsCi0gICAgICBzdHJlYW1idWZfdGFnCi0gICAgeyB9Owotc3RydWN0IGlzdHJpbmdzdHJlYW1fdGFnCi0gICAgOiBpbnB1dF9zZWVrYWJsZSwKLSAgICAgIGlzdHJlYW1fdGFnCi0gICAgeyB9Owotc3RydWN0IG9zdHJpbmdzdHJlYW1fdGFnCi0gICAgOiBvdXRwdXRfc2Vla2FibGUsCi0gICAgICBvc3RyZWFtX3RhZwotICAgIHsgfTsKLXN0cnVjdCBzdHJpbmdzdHJlYW1fdGFnCi0gICAgOiBkdWFsX3NlZWthYmxlLAotICAgICAgaW9zdHJlYW1fdGFnCi0gICAgeyB9Owotc3RydWN0IHN0cmluZ2J1Zl90YWcKLSAgICA6IGR1YWxfc2Vla2FibGUsCi0gICAgICBzdHJlYW1idWZfdGFnCi0gICAgeyB9Owotc3RydWN0IGdlbmVyaWNfaXN0cmVhbV90YWcgCi0gICAgOiBpbnB1dF9zZWVrYWJsZSwKLSAgICAgIGlzdHJlYW1fdGFnCi0gICAgeyB9Owotc3RydWN0IGdlbmVyaWNfb3N0cmVhbV90YWcgCi0gICAgOiBvdXRwdXRfc2Vla2FibGUsCi0gICAgICBvc3RyZWFtX3RhZwotICAgIHsgfTsKLXN0cnVjdCBnZW5lcmljX2lvc3RyZWFtX3RhZyAKLSAgICA6IHNlZWthYmxlLAotICAgICAgaW9zdHJlYW1fdGFnCi0gICAgeyB9Owotc3RydWN0IGdlbmVyaWNfc3RyZWFtYnVmX3RhZyAKLSAgICA6IHNlZWthYmxlLAotICAgICAgc3RyZWFtYnVmX3RhZwotICAgIHsgfTsKLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19DQVRFR09SSUVTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvY2hhaW4uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvY2hhaW4uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMGZhYzQ4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2NoYWluLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU5OCArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NIQUlOX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NIQUlOX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8ZXhjZXB0aW9uPgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdW5hcnlfZnVuY3Rpb24uCi0jaW5jbHVkZSA8aXRlcmF0b3I+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhZHZhbmNlLgotI2luY2x1ZGUgPGxpc3Q+Ci0jaW5jbHVkZSA8bWVtb3J5PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbGxvY2F0b3IsIGF1dG9fcHRyLgotI2luY2x1ZGUgPHR5cGVpbmZvPgotI2luY2x1ZGUgPHN0ZGV4Y2VwdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWNfZXJyb3IsIG91dF9vZl9yYW5nZS4KLSNpbmNsdWRlIDxuZG5ib29zdC9jaGVja2VkX2RlbGV0ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gICAgICAgICAgICAgICAgICAgICAvLyBORE5CT09TVF9NU1ZDLCB0ZW1wbGF0ZSBmcmllbmRzLAotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4gICAgICAgICAgLy8gTkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jb25zdGFudHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWNjZXNzX2NvbnRyb2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY2hhcl90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvcHVzaC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zdHJlYW1idWYuaHBwPiAvLyBwdWJzeW5jLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvd3JhcF91bndyYXAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXZpY2UvbnVsbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3Bvc2l0aW9uaW5nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvdHJhaXRzLmhwcD4gICAgICAgICAgIC8vIGlzX2ZpbHRlci4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvc3RyZWFtX2J1ZmZlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbmV4dF9wcmlvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc2hhcmVkX3B0ci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGhyb3dfZXhjZXB0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9leGVjdXRlLmhwcD4gICAvLyBWQzYuNSByZXF1aXJlcyB0aGlzCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMTApICAgICAgICAvLyAjaW5jbHVkZSBvcmRlcgotIyBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaW50LmhwcD4KLSNlbmRpZgotCi0vLyBTb21ldGltZXMgdHlwZV9pbmZvIG9iamVjdHMgbXVzdCBiZSBjb21wYXJlZCBieSBuYW1lLiBCb3Jyb3dlZCBmcm9tCi0vLyBCb29zdC5QeXRob24gYW5kIEJvb3N0LkZ1bmN0aW9uLgotI2lmIChkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA+PSAzKSB8fCBcCi0gICAgIGRlZmluZWQoX0FJWCkgfHwgXAotICAgIChkZWZpbmVkKF9fc2dpKSAmJiBkZWZpbmVkKF9faG9zdF9taXBzKSkgfHwgXAotICAgIChkZWZpbmVkKGxpbnV4KSAmJiBkZWZpbmVkKF9fSU5URUxfQ09NUElMRVIpICYmIGRlZmluZWQoX19JQ0MpKSBcCi0gICAgLyoqLwotIyBpbmNsdWRlIDxjc3RyaW5nPgotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0NPTVBBUkVfVFlQRV9JRChYLFkpIFwKLSAgICAgKHN0ZDo6c3RyY21wKChYKS5uYW1lKCksKFkpLm5hbWUoKSkgPT0gMCkKLSNlbHNlCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQ09NUEFSRV9UWVBFX0lEKFgsWSkgKChYKT09KFkpKQotI2VuZGlmCi0KLS8vIERlcHJlY2F0ZWQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0NPTVBPTkVOVF9UWVBFKGNoYWluLCBpbmRleCkgXAotICAgIGNoYWluLmNvbXBvbmVudF90eXBlKCBpbmRleCApIFwKLSAgICAvKiovCi0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMTApCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQ09NUE9ORU5UKGNoYWluLCBpbmRleCwgdGFyZ2V0KSBcCi0gICAgY2hhaW4uY29tcG9uZW50PCB0YXJnZXQgPiggaW5kZXggKSBcCi0gICAgLyoqLwotI2Vsc2UKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19DT01QT05FTlQoY2hhaW4sIGluZGV4LCB0YXJnZXQpIFwKLSAgICBjaGFpbi5jb21wb25lbnQoIGluZGV4LCA6Om5kbmJvb3N0Ojp0eXBlPCB0YXJnZXQgPigpICkgXAotICAgIC8qKi8KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotLy8tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgY2hhaW4gYW5kIHdjaGFpbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYWluPiBjbGFzcyBjaGFpbl9jbGllbnQ7Ci0KLS8vCi0vLyBDb25jZXB0IG5hbWU6IENoYWluLgotLy8gRGVzY3JpcHRpb246IFJlcHJlc2VudHMgYSBjaGFpbiBvZiBzdHJlYW0gYnVmZmVycyB3aGljaCBwcm92aWRlcyBhY2Nlc3MKLS8vICAgICB0byB0aGUgZmlyc3QgYnVmZmVyIGluIHRoZSBjaGFpbiBhbmQgc2VuZHMgbm90aWZpY2F0aW9ucyB3aGVuIHRoZQotLy8gICAgIHN0cmVhbWJ1ZnMgYXJlIGFkZGVkIHRvIG9yIHJlbW92ZWQgZnJvbSBjaGFpbi4KLS8vIFJlZmluZXM6IENsb3NhYmxlIGRldmljZSB3aXRoIG1vZGUgZXF1YWwgdG8gdHlwZW5hbWUgQ2hhaW46Om1vZGUuCi0vLyBNb2RlbHM6IGNoYWluLCBjb252ZXJ0aW5nX2NoYWluLgotLy8gRXhhbXBsZToKLS8vCi0vLyAgICBjbGFzcyBjaGFpbiB7Ci0vLyAgICBwdWJsaWM6Ci0vLyAgICAgICAgdHlwZWRlZiB4eHggY2hhaW5fdHlwZTsKLS8vICAgICAgICB0eXBlZGVmIHh4eCBjbGllbnRfdHlwZTsKLS8vICAgICAgICB0eXBlZGVmIHh4eCBtb2RlOwotLy8gICAgICAgIGJvb2wgaXNfY29tcGxldGUoKSBjb25zdDsgICAgICAgICAgICAgICAgICAvLyBSZWFkeSBmb3IgaS9vLgotLy8gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0vLyAgICAgICAgdm9pZCBwdXNoKCBjb25zdCBUJiB0LCAgICAgICAgICAgICAgICAgICAgIC8vIEFkZHMgYSBzdHJlYW0gYnVmZmVyIHRvCi0vLyAgICAgICAgICAgICAgICAgICBzdHJlYW1zaXplLCAgICAgICAgICAgICAgICAgICAgIC8vIGNoYWluLCBiYXNlZCBvbiB0LCB3aXRoCi0vLyAgICAgICAgICAgICAgICAgICBzdHJlYW1zaXplICk7ICAgICAgICAgICAgICAgICAgIC8vIGdpdmVuIGJ1ZmZlciBhbmQgcHV0YmFjawotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBidWZmZXIgc2l6ZXMuIFBhc3MgLTEgdG8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVxdWVzdCBkZWZhdWx0IHNpemUuCi0vLyAgICBwcm90ZWN0ZWQ6Ci0vLyAgICAgICAgdm9pZCByZWdpc3Rlcl9jbGllbnQoY2xpZW50X3R5cGUqIGNsaWVudCk7IC8vIEFzc29jaWF0ZSBjbGllbnQuCi0vLyAgICAgICAgdm9pZCBub3RpZnkoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vdGlmeSBjbGllbnQuCi0vLyAgICB9OwotLy8KLQotLy8KLS8vIERlc2NyaXB0aW9uOiBSZXByZXNlbnRzIGEgY2hhaW4gb2YgZmlsdGVycyB3aXRoIGFuIG9wdGlvbmFsIGRldmljZSBhdCB0aGUKLS8vICAgICAgZW5kLgotLy8gVGVtcGxhdGUgcGFyYW1ldGVyczoKLS8vICAgICAgU2VsZiAtIEEgY2xhc3MgZGVyaXZpbmcgZnJvbSB0aGUgY3VycmVudCBpbnN0YW50aWF0aW9uIG9mIHRoaXMgdGVtcGxhdGUuCi0vLyAgICAgICAgICBUaGlzIGlzIGFuIGV4YW1wbGUgb2YgdGhlIEN1cmlvdXNseSBSZWN1cnJpbmcgVGVtcGxhdGUgUGF0dGVybi4KLS8vICAgICAgQ2ggLSBUaGUgY2hhcmFjdGVyIHR5cGUuCi0vLyAgICAgIFRyIC0gVGhlIGNoYXJhY3RlciB0cmFpdHMgdHlwZS4KLS8vICAgICAgQWxsb2MgLSBUaGUgYWxsb2NhdG9yIHR5cGUuCi0vLyAgICAgIE1vZGUgLSBBIG1vZGUgdGFnLgotLy8KLXRlbXBsYXRlPHR5cGVuYW1lIFNlbGYsIHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGU+Ci1jbGFzcyBjaGFpbl9iYXNlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIENoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJfdHlwZTsKLSAgICBORE5CT09TVF9JT1NUUkVBTVNfU1RSRUFNQlVGX1RZUEVERUZTKFRyKQotICAgIHR5cGVkZWYgQWxsb2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb2NhdG9yX3R5cGU7Ci0gICAgdHlwZWRlZiBNb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlOwotICAgIHN0cnVjdCBjYXRlZ29yeQotICAgICAgICA6IE1vZGUsCi0gICAgICAgICAgZGV2aWNlX3RhZwotICAgICAgICB7IH07Ci0gICAgdHlwZWRlZiBjaGFpbl9jbGllbnQ8U2VsZj4gICAgICAgICAgICAgICAgICAgICBjbGllbnRfdHlwZTsKLSAgICBmcmllbmQgY2xhc3MgY2hhaW5fY2xpZW50PFNlbGY+OwotcHJpdmF0ZToKLSAgICB0eXBlZGVmIGxpbmtlZF9zdHJlYW1idWY8Q2g+ICAgICAgICAgICAgICAgICAgIHN0cmVhbWJ1Zl90eXBlOwotICAgIHR5cGVkZWYgc3RkOjpsaXN0PHN0cmVhbWJ1Zl90eXBlKj4gICAgICAgICAgICAgbGlzdF90eXBlOwotICAgIHR5cGVkZWYgY2hhaW5fYmFzZTxTZWxmLCBDaCwgVHIsIEFsbG9jLCBNb2RlPiAgbXlfdHlwZTsKLXByb3RlY3RlZDoKLSAgICBjaGFpbl9iYXNlKCkgOiBwaW1wbF8obmV3IGNoYWluX2ltcGwpIHsgfQotICAgIGNoYWluX2Jhc2UoY29uc3QgY2hhaW5fYmFzZSYgcmhzKTogcGltcGxfKHJocy5waW1wbF8pIHsgfQotcHVibGljOgotCi0gICAgLy8gZHVhbF91c2UgaXMgYSBwc2V1ZG8tbW9kZSB0byBmYWNpbGl0YXRlIGZpbHRlciB3cml0aW5nLCAKLSAgICAvLyBub3QgYSBnZW51aW5lIG1vZGUuCi0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoIWlzX2NvbnZlcnRpYmxlPG1vZGUsIGR1YWxfdXNlPjo6dmFsdWUpKTsKLQotICAgIC8vLS0tLS0tLS0tLUJ1ZmZlciBzaXppbmctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgIC8vIFNldHMgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBjcmVhdGVkIGZvciB0aGUgZGV2aWNlcyB0byBiZSBhZGRlZCB0byB0aGlzCi0gICAgLy8gY2hhaW4uIERvZXMgbm90IGFmZmVjdCB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIGZvciBkZXZpY2VzIGFscmVhZHkKLSAgICAvLyBhZGRlZC4KLSAgICB2b2lkIHNldF9kZXZpY2VfYnVmZmVyX3NpemUoc3RkOjpzdHJlYW1zaXplIG4pIAotICAgICAgICB7IHBpbXBsXy0+ZGV2aWNlX2J1ZmZlcl9zaXplXyA9IG47IH0KLQotICAgIC8vIFNldHMgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBjcmVhdGVkIGZvciB0aGUgZmlsdGVycyB0byBiZSBhZGRlZAotICAgIC8vIHRvIHRoaXMgY2hhaW4uIERvZXMgbm90IGFmZmVjdCB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIGZvciBmaWx0ZXJzIGFscmVhZHkKLSAgICAvLyBhZGRlZC4KLSAgICB2b2lkIHNldF9maWx0ZXJfYnVmZmVyX3NpemUoc3RkOjpzdHJlYW1zaXplIG4pIAotICAgICAgICB7IHBpbXBsXy0+ZmlsdGVyX2J1ZmZlcl9zaXplXyA9IG47IH0KLQotICAgIC8vIFNldHMgdGhlIHNpemUgb2YgdGhlIHB1dGJhY2sgYnVmZmVyIGZvciBmaWx0ZXJzIGFuZCBkZXZpY2VzIHRvIGJlIGFkZGVkCi0gICAgLy8gdG8gdGhpcyBjaGFpbi4gRG9lcyBub3QgYWZmZWN0IHRoZSBzaXplIG9mIHRoZSBidWZmZXIgZm9yIGZpbHRlcnMgb3IKLSAgICAvLyBkZXZpY2VzIGFscmVhZHkgYWRkZWQuCi0gICAgdm9pZCBzZXRfcGJhY2tfc2l6ZShzdGQ6OnN0cmVhbXNpemUgbikgCi0gICAgICAgIHsgcGltcGxfLT5wYmFja19zaXplXyA9IG47IH0KLQotICAgIC8vLS0tLS0tLS0tLURldmljZSBpbnRlcmZhY2UtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgIHN0ZDo6c3RyZWFtc2l6ZSByZWFkKGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pOwotICAgIHN0ZDo6c3RyZWFtc2l6ZSB3cml0ZShjb25zdCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKTsKLSAgICBzdGQ6OnN0cmVhbXBvcyBzZWVrKHN0cmVhbV9vZmZzZXQgb2ZmLCBORE5CT09TVF9JT1M6OnNlZWtkaXIgd2F5KTsKLQotICAgIC8vLS0tLS0tLS0tLURpcmVjdCBjb21wb25lbnQgYWNjZXNzLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgIGNvbnN0IHN0ZDo6dHlwZV9pbmZvJiBjb21wb25lbnRfdHlwZShpbnQgbikgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChzdGF0aWNfY2FzdDxzaXplX3R5cGU+KG4pID49IHNpemUoKSkKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oc3RkOjpvdXRfb2ZfcmFuZ2UoImJhZCBjaGFpbiBvZmZzZXQiKSk7Ci0gICAgICAgIHJldHVybiAoKm5kbmJvb3N0OjpuZXh0KGxpc3QoKS5iZWdpbigpLCBuKSktPmNvbXBvbmVudF90eXBlKCk7Ci0gICAgfQotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzEwKQotICAgIC8vIERlcHJlY2F0ZWQuCi0gICAgdGVtcGxhdGU8aW50IE4+Ci0gICAgY29uc3Qgc3RkOjp0eXBlX2luZm8mIGNvbXBvbmVudF90eXBlKCkgY29uc3QgeyByZXR1cm4gY29tcG9uZW50X3R5cGUoTik7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgVCogY29tcG9uZW50KGludCBuKSBjb25zdCB7IHJldHVybiBjb21wb25lbnQobiwgbmRuYm9vc3Q6OnR5cGU8VD4oKSk7IH0KLQotICAgIC8vIERlcHJlY2F0ZWQuCi0gICAgdGVtcGxhdGU8aW50IE4sIHR5cGVuYW1lIFQ+IAotICAgIFQqIGNvbXBvbmVudCgpIGNvbnN0IHsgcmV0dXJuIGNvbXBvbmVudDxUPihOKTsgfQotI2VuZGlmCi0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMTApCi0gICAgcHJpdmF0ZToKLSNlbmRpZgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgVCogY29tcG9uZW50KGludCBuLCBuZG5ib29zdDo6dHlwZTxUPikgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChzdGF0aWNfY2FzdDxzaXplX3R5cGU+KG4pID49IHNpemUoKSkKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oc3RkOjpvdXRfb2ZfcmFuZ2UoImJhZCBjaGFpbiBvZmZzZXQiKSk7Ci0gICAgICAgIHN0cmVhbWJ1Zl90eXBlKiBsaW5rID0gKm5kbmJvb3N0OjpuZXh0KGxpc3QoKS5iZWdpbigpLCBuKTsKLSAgICAgICAgaWYgKE5ETkJPT1NUX0lPU1RSRUFNU19DT01QQVJFX1RZUEVfSUQobGluay0+Y29tcG9uZW50X3R5cGUoKSwgdHlwZWlkKFQpKSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4obGluay0+Y29tcG9uZW50X2ltcGwoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgIH0KLXB1YmxpYzoKLQotICAgIC8vLS0tLS0tLS0tLUNvbnRhaW5lci1saWtlIGludGVyZmFjZS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdF90eXBlOjpzaXplX3R5cGUgc2l6ZV90eXBlOwotICAgIHN0cmVhbWJ1Zl90eXBlJiBmcm9udCgpIHsgcmV0dXJuICpsaXN0KCkuZnJvbnQoKTsgfQotICAgIE5ETkJPT1NUX0lPU1RSRUFNU19ERUZJTkVfUFVTSChwdXNoLCBtb2RlLCBjaGFyX3R5cGUsIHB1c2hfaW1wbCkKLSAgICB2b2lkIHBvcCgpOwotICAgIGJvb2wgZW1wdHkoKSBjb25zdCB7IHJldHVybiBsaXN0KCkuZW1wdHkoKTsgfQotICAgIHNpemVfdHlwZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbGlzdCgpLnNpemUoKTsgfQotICAgIHZvaWQgcmVzZXQoKTsKLQotICAgIC8vLS0tLS0tLS0tLUFkZGl0aW9uYWwgaS9vIGZ1bmN0aW9ucy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGNoYWluIGlzIG5vbi1lbXB0eSBhbmQgaXRzIGZpbmFsIGxpbmsKLSAgICAvLyBpcyBhIHNvdXJjZSBvciBzaW5rLCBpLmUuLCBpZiBpdCBpcyByZWFkeSB0byBwZXJmb3JtIGkvby4KLSAgICBib29sIGlzX2NvbXBsZXRlKCkgY29uc3Q7Ci0gICAgYm9vbCBhdXRvX2Nsb3NlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRfYXV0b19jbG9zZShib29sIGNsb3NlKTsKLSAgICBib29sIHN5bmMoKSB7IHJldHVybiBmcm9udCgpLk5ETkJPT1NUX0lPU1RSRUFNU19QVUJTWU5DKCkgIT0gLTE7IH0KLSAgICBib29sIHN0cmljdF9zeW5jKCk7Ci1wcml2YXRlOgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBwdXNoX2ltcGwoY29uc3QgVCYgdCwgc3RkOjpzdHJlYW1zaXplIGJ1ZmZlcl9zaXplID0gLTEsIAotICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBwYmFja19zaXplID0gLTEpCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlvc3RyZWFtczo6Y2F0ZWdvcnlfb2Y8VD46OnR5cGUgIGNhdGVnb3J5OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHVud3JhcF9pb3M8VD46OnR5cGUgICAgICAgICAgICAgIGNvbXBvbmVudF90eXBlOwotICAgICAgICB0eXBlZGVmIHN0cmVhbV9idWZmZXI8Ci0gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudF90eXBlLAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfQ0hBUl9UUkFJVFMoY2hhcl90eXBlKSwKLSAgICAgICAgICAgICAgICAgICAgQWxsb2MsIE1vZGUKLSAgICAgICAgICAgICAgICA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1idWZfdDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0X3R5cGU6Oml0ZXJhdG9yICAgICAgICAgICAgICBpdGVyYXRvcjsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoaXNfY29udmVydGlibGU8Y2F0ZWdvcnksIE1vZGU+Ojp2YWx1ZSkpOwotICAgICAgICBpZiAoaXNfY29tcGxldGUoKSkKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oc3RkOjpsb2dpY19lcnJvcigiY2hhaW4gY29tcGxldGUiKSk7Ci0gICAgICAgIHN0cmVhbWJ1Zl90eXBlKiBwcmV2ID0gIWVtcHR5KCkgPyBsaXN0KCkuYmFjaygpIDogMDsKLSAgICAgICAgYnVmZmVyX3NpemUgPQotICAgICAgICAgICAgYnVmZmVyX3NpemUgIT0gLTEgPwotICAgICAgICAgICAgICAgIGJ1ZmZlcl9zaXplIDoKLSAgICAgICAgICAgICAgICBpb3N0cmVhbXM6Om9wdGltYWxfYnVmZmVyX3NpemUodCk7Ci0gICAgICAgIHBiYWNrX3NpemUgPQotICAgICAgICAgICAgcGJhY2tfc2l6ZSAhPSAtMSA/Ci0gICAgICAgICAgICAgICAgcGJhY2tfc2l6ZSA6Ci0gICAgICAgICAgICAgICAgcGltcGxfLT5wYmFja19zaXplXzsKLSAgICAgICAgc3RkOjphdXRvX3B0cjxzdHJlYW1idWZfdD4KLSAgICAgICAgICAgIGJ1ZihuZXcgc3RyZWFtYnVmX3QodCwgYnVmZmVyX3NpemUsIHBiYWNrX3NpemUpKTsKLSAgICAgICAgbGlzdCgpLnB1c2hfYmFjayhidWYuZ2V0KCkpOwotICAgICAgICBidWYucmVsZWFzZSgpOwotICAgICAgICBpZiAoaXNfZGV2aWNlPGNvbXBvbmVudF90eXBlPjo6dmFsdWUpIHsKLSAgICAgICAgICAgIHBpbXBsXy0+ZmxhZ3NfIHw9IGZfY29tcGxldGUgfCBmX29wZW47Ci0gICAgICAgICAgICBmb3IgKCBpdGVyYXRvciBmaXJzdCA9IGxpc3QoKS5iZWdpbigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IGxpc3QoKS5lbmQoKTsKLSAgICAgICAgICAgICAgICAgIGZpcnN0ICE9IGxhc3Q7Ci0gICAgICAgICAgICAgICAgICArK2ZpcnN0ICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAoKmZpcnN0KS0+c2V0X25lZWRzX2Nsb3NlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHByZXYpIHByZXYtPnNldF9uZXh0KGxpc3QoKS5iYWNrKCkpOwotICAgICAgICBub3RpZnkoKTsKLSAgICB9Ci0KLSAgICBsaXN0X3R5cGUmIGxpc3QoKSB7IHJldHVybiBwaW1wbF8tPmxpbmtzXzsgfQotICAgIGNvbnN0IGxpc3RfdHlwZSYgbGlzdCgpIGNvbnN0IHsgcmV0dXJuIHBpbXBsXy0+bGlua3NfOyB9Ci0gICAgdm9pZCByZWdpc3Rlcl9jbGllbnQoY2xpZW50X3R5cGUqIGNsaWVudCkgeyBwaW1wbF8tPmNsaWVudF8gPSBjbGllbnQ7IH0KLSAgICB2b2lkIG5vdGlmeSgpIHsgaWYgKHBpbXBsXy0+Y2xpZW50XykgcGltcGxfLT5jbGllbnRfLT5ub3RpZnkoKTsgfQotCi0gICAgLy8tLS0tLS0tLS0tTmVzdGVkIGNsYXNzZXMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgc3RhdGljIHZvaWQgY2xvc2Uoc3RyZWFtYnVmX3R5cGUqIGIsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbSkKLSAgICB7Ci0gICAgICAgIGlmIChtID09IE5ETkJPT1NUX0lPUzo6b3V0ICYmIGlzX2NvbnZlcnRpYmxlPE1vZGUsIG91dHB1dD46OnZhbHVlKQotICAgICAgICAgICAgYi0+TkROQk9PU1RfSU9TVFJFQU1TX1BVQlNZTkMoKTsKLSAgICAgICAgYi0+Y2xvc2UobSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgc2V0X25leHQoc3RyZWFtYnVmX3R5cGUqIGIsIHN0cmVhbWJ1Zl90eXBlKiBuZXh0KQotICAgIHsgYi0+c2V0X25leHQobmV4dCk7IH0KLQotICAgIHN0YXRpYyB2b2lkIHNldF9hdXRvX2Nsb3NlKHN0cmVhbWJ1Zl90eXBlKiBiLCBib29sIGNsb3NlKQotICAgIHsgYi0+c2V0X2F1dG9fY2xvc2UoY2xvc2UpOyB9Ci0KLSAgICBzdHJ1Y3QgY2xvc2VyICA6IHB1YmxpYyBzdGQ6OnVuYXJ5X2Z1bmN0aW9uPHN0cmVhbWJ1Zl90eXBlKiwgdm9pZD4gIHsKLSAgICAgICAgY2xvc2VyKE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbSkgOiBtb2RlXyhtKSB7IH0KLSAgICAgICAgdm9pZCBvcGVyYXRvcigpIChzdHJlYW1idWZfdHlwZSogYikKLSAgICAgICAgewotICAgICAgICAgICAgY2xvc2UoYiwgbW9kZV8pOwotICAgICAgICB9Ci0gICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbW9kZV87Ci0gICAgfTsKLSAgICBmcmllbmQgc3RydWN0IGNsb3NlcjsKLQotICAgIGVudW0gZmxhZ3MgewotICAgICAgICBmX2NvbXBsZXRlID0gMSwKLSAgICAgICAgZl9vcGVuID0gMiwKLSAgICAgICAgZl9hdXRvX2Nsb3NlID0gNAotICAgIH07Ci0KLSAgICBzdHJ1Y3QgY2hhaW5faW1wbCB7Ci0gICAgICAgIGNoYWluX2ltcGwoKQotICAgICAgICAgICAgOiBjbGllbnRfKDApLCBkZXZpY2VfYnVmZmVyX3NpemVfKGRlZmF1bHRfZGV2aWNlX2J1ZmZlcl9zaXplKSwKLSAgICAgICAgICAgICAgZmlsdGVyX2J1ZmZlcl9zaXplXyhkZWZhdWx0X2ZpbHRlcl9idWZmZXJfc2l6ZSksCi0gICAgICAgICAgICAgIHBiYWNrX3NpemVfKGRlZmF1bHRfcGJhY2tfYnVmZmVyX3NpemUpLAotICAgICAgICAgICAgICBmbGFnc18oZl9hdXRvX2Nsb3NlKQotICAgICAgICAgICAgeyB9Ci0gICAgICAgIH5jaGFpbl9pbXBsKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0cnkgeyBjbG9zZSgpOyB9IGNhdGNoICguLi4pIHsgfQotICAgICAgICAgICAgICAgIHRyeSB7IHJlc2V0KCk7IH0gY2F0Y2ggKC4uLikgeyB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIHZvaWQgY2xvc2UoKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICgoZmxhZ3NfICYgZl9vcGVuKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZsYWdzXyAmPSB+Zl9vcGVuOwotICAgICAgICAgICAgICAgICAgICBzdHJlYW1fYnVmZmVyPCBiYXNpY19udWxsX2RldmljZTxDaCwgTW9kZT4gPiBudWxsOwotICAgICAgICAgICAgICAgICAgICBpZiAoKGZsYWdzXyAmIGZfY29tcGxldGUpID09IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG51bGwub3BlbihiYXNpY19udWxsX2RldmljZTxDaCwgTW9kZT4oKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZXRfbmV4dChsaW5rc18uYmFjaygpLCAmbnVsbCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgbGlua3NfLmZyb250KCktPk5ETkJPT1NUX0lPU1RSRUFNU19QVUJTWU5DKCk7Ci0gICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OmV4ZWN1dGVfZm9yZWFjaCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rc18ucmJlZ2luKCksIGxpbmtzXy5yZW5kKCksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlcihORE5CT09TVF9JT1M6OmluKQotICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoLi4uKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppb3N0cmVhbXM6OmRldGFpbDo6ZXhlY3V0ZV9mb3JlYWNoKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rc18uYmVnaW4oKSwgbGlua3NfLmVuZCgpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VyKE5ETkJPT1NUX0lPUzo6b3V0KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICguLi4pIHsgfQotICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3c7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpleGVjdXRlX2ZvcmVhY2goCi0gICAgICAgICAgICAgICAgICAgICAgICBsaW5rc18uYmVnaW4oKSwgbGlua3NfLmVuZCgpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlcihORE5CT09TVF9JT1M6Om91dCkKLSAgICAgICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIHZvaWQgcmVzZXQoKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdF90eXBlOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICAgICAgICAgICAgICBmb3IgKCBpdGVyYXRvciBmaXJzdCA9IGxpbmtzXy5iZWdpbigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgPSBsaW5rc18uZW5kKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgZmlyc3QgIT0gbGFzdDsKLSAgICAgICAgICAgICAgICAgICAgICArK2ZpcnN0ICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICggKGZsYWdzXyAmIGZfY29tcGxldGUpID09IDAgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAoZmxhZ3NfICYgZl9hdXRvX2Nsb3NlKSA9PSAwICkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgc2V0X2F1dG9fY2xvc2UoKmZpcnN0LCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgc3RyZWFtYnVmX3R5cGUqIGJ1ZiA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIHN0ZDo6c3dhcChidWYsICpmaXJzdCk7Ci0gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBidWY7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGxpbmtzXy5jbGVhcigpOwotICAgICAgICAgICAgICAgIGZsYWdzXyAmPSB+Zl9jb21wbGV0ZTsKLSAgICAgICAgICAgICAgICBmbGFnc18gJj0gfmZfb3BlbjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgbGlzdF90eXBlICAgICAgICBsaW5rc187Ci0gICAgICAgIGNsaWVudF90eXBlKiAgICAgY2xpZW50XzsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplICBkZXZpY2VfYnVmZmVyX3NpemVfLAotICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcl9idWZmZXJfc2l6ZV8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgcGJhY2tfc2l6ZV87Ci0gICAgICAgIGludCAgICAgICAgICAgICAgZmxhZ3NfOwotICAgIH07Ci0gICAgZnJpZW5kIHN0cnVjdCBjaGFpbl9pbXBsOwotCi0gICAgLy8tLS0tLS0tLS0tTWVtYmVyIGRhdGEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi1wcml2YXRlOgotICAgIHNoYXJlZF9wdHI8Y2hhaW5faW1wbD4gcGltcGxfOwotfTsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotLy8KLS8vIE1hY3JvOiBORE5CT09TVF9JT1NUUkVBTVNfREVDTF9DSEFJTihuYW1lLCBjYXRlZ29yeSkKLS8vIERlc2NyaXB0aW9uOiBEZWZpbmVzIGEgdGVtcGxhdGUgZGVyaXZlZCBmcm9tIGNoYWluX2Jhc2UgYXBwcm9wcmlhdGUgZm9yIGEKLS8vICAgICAgcGFydGljdWxhciBpL28gY2F0ZWdvcnkuIFRoZSB0ZW1wbGF0ZSBoYXMgdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzOgotLy8gICAgICBDaCAtIFRoZSBjaGFyYWN0ZXIgdHlwZS4KLS8vICAgICAgVHIgLSBUaGUgY2hhcmFjdGVyIHRyYWl0cyB0eXBlLgotLy8gICAgICBBbGxvYyAtIFRoZSBhbGxvY2F0b3IgdHlwZS4KLS8vIE1hY3JvIHBhcmFtZXRlcnM6Ci0vLyAgICAgIG5hbWVfIC0gVGhlIG5hbWUgb2YgdGhlIHRlbXBsYXRlIHRvIGJlIGRlZmluZWQuCi0vLyAgICAgIGNhdGVnb3J5XyAtIFRoZSBpL28gY2F0ZWdvcnkgb2YgdGhlIHRlbXBsYXRlIHRvIGJlIGRlZmluZWQuCi0vLwotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVDTF9DSEFJTihuYW1lXywgZGVmYXVsdF9jaGFyXykgXAotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaCA9IGRlZmF1bHRfY2hhcl8sIFwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVHIgPSBORE5CT09TVF9JT1NUUkVBTVNfQ0hBUl9UUkFJVFMoQ2gpLCBcCi0gICAgICAgICAgICAgIHR5cGVuYW1lIEFsbG9jID0gc3RkOjphbGxvY2F0b3I8Q2g+ID4gXAotICAgIGNsYXNzIG5hbWVfIDogcHVibGljIG5kbmJvb3N0Ojppb3N0cmVhbXM6OmRldGFpbDo6Y2hhaW5fYmFzZTwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVfPE1vZGUsIENoLCBUciwgQWxsb2M+LCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2gsIFRyLCBBbGxvYywgTW9kZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgPiBcCi0gICAgeyBcCi0gICAgcHVibGljOiBcCi0gICAgICAgIHN0cnVjdCBjYXRlZ29yeSA6IGRldmljZV90YWcsIE1vZGUgeyB9OyBcCi0gICAgICAgIHR5cGVkZWYgTW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTsgXAotICAgIHByaXZhdGU6IFwKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OmNoYWluX2Jhc2U8IFwKLSAgICAgICAgICAgICAgICAgICAgbmFtZV88TW9kZSwgQ2gsIFRyLCBBbGxvYz4sIFwKLSAgICAgICAgICAgICAgICAgICAgQ2gsIFRyLCBBbGxvYywgTW9kZSBcCi0gICAgICAgICAgICAgICAgPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZV90eXBlOyBcCi0gICAgcHVibGljOiBcCi0gICAgICAgIHR5cGVkZWYgQ2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcl90eXBlOyBcCi0gICAgICAgIHR5cGVkZWYgVHIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRzX3R5cGU7IFwKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHNfdHlwZTo6aW50X3R5cGUgICAgICAgICBpbnRfdHlwZTsgXAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0c190eXBlOjpvZmZfdHlwZSAgICAgICAgIG9mZl90eXBlOyBcCi0gICAgICAgIG5hbWVfKCkgeyB9IFwKLSAgICAgICAgbmFtZV8oY29uc3QgbmFtZV8mIHJocykgOiBiYXNlX3R5cGUocmhzKSB7IH0gXAotICAgICAgICBuYW1lXyYgb3BlcmF0b3I9KGNvbnN0IG5hbWVfJiByaHMpIFwKLSAgICAgICAgeyBiYXNlX3R5cGU6Om9wZXJhdG9yPShyaHMpOyByZXR1cm4gKnRoaXM7IH0gXAotICAgIH07IFwKLSAgICAvKiovCi1ORE5CT09TVF9JT1NUUkVBTVNfREVDTF9DSEFJTihjaGFpbiwgY2hhcikKLU5ETkJPT1NUX0lPU1RSRUFNU19ERUNMX0NIQUlOKHdjaGFpbiwgd2NoYXJfdCkKLSN1bmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVDTF9DSEFJTgotCi0vLy0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBjaGFpbl9jbGllbnQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8KLS8vIFRlbXBsYXRlIG5hbWU6IGNoYWluX2NsaWVudAotLy8gRGVzY3JpcHRpb246IENsYXNzIHdob3NlIGluc3RhbmNlcyBwcm92aWRlIGFjY2VzcyB0byBhbiB1bmRlcmx5aW5nIGNoYWluCi0vLyAgICAgIHVzaW5nIGFuIGludGVyZmFjZSBzaW1pbGFyIHRvIHRoZSBjaGFpbnMuCi0vLyBTdWJjbGFzc2VzOiB0aGUgdmFyaW91cyBzdHJlYW0gYW5kIHN0cmVhbSBidWZmZXIgdGVtcGxhdGVzLgotLy8KLXRlbXBsYXRlPHR5cGVuYW1lIENoYWluPgotY2xhc3MgY2hhaW5fY2xpZW50IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIENoYWluICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFpbl90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhaW5fdHlwZTo6Y2hhcl90eXBlICAgIGNoYXJfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYWluX3R5cGU6OnRyYWl0c190eXBlICB0cmFpdHNfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYWluX3R5cGU6OnNpemVfdHlwZSAgICBzaXplX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFpbl90eXBlOjptb2RlICAgICAgICAgbW9kZTsKLQotICAgIGNoYWluX2NsaWVudChjaGFpbl90eXBlKiBjaG4gPSAwKSA6IGNoYWluXyhjaG4gKSB7IH0KLSAgICBjaGFpbl9jbGllbnQoY2hhaW5fY2xpZW50KiBjbGllbnQpIDogY2hhaW5fKGNsaWVudC0+Y2hhaW5fKSB7IH0KLSAgICB2aXJ0dWFsIH5jaGFpbl9jbGllbnQoKSB7IH0KLQotICAgIGNvbnN0IHN0ZDo6dHlwZV9pbmZvJiBjb21wb25lbnRfdHlwZShpbnQgbikgY29uc3QKLSAgICB7IHJldHVybiBjaGFpbl8tPmNvbXBvbmVudF90eXBlKG4pOyB9Ci0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMTApCi0gICAgLy8gRGVwcmVjYXRlZC4KLSAgICB0ZW1wbGF0ZTxpbnQgTj4KLSAgICBjb25zdCBzdGQ6OnR5cGVfaW5mbyYgY29tcG9uZW50X3R5cGUoKSBjb25zdAotICAgIHsgcmV0dXJuIGNoYWluXy0+TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIGNvbXBvbmVudF90eXBlPE4+KCk7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgVCogY29tcG9uZW50KGludCBuKSBjb25zdAotICAgIHsgcmV0dXJuIGNoYWluXy0+TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIGNvbXBvbmVudDxUPihuKTsgfQotCi0gICAgLy8gRGVwcmVjYXRlZC4KLSAgICB0ZW1wbGF0ZTxpbnQgTiwgdHlwZW5hbWUgVD4KLSAgICBUKiBjb21wb25lbnQoKSBjb25zdAotICAgIHsgcmV0dXJuIGNoYWluXy0+TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIGNvbXBvbmVudDxOLCBUPigpOyB9Ci0jZWxzZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgVCogY29tcG9uZW50KGludCBuLCBuZG5ib29zdDo6dHlwZTxUPiB0KSBjb25zdAotICAgIHsgcmV0dXJuIGNoYWluXy0+Y29tcG9uZW50KG4sIHQpOyB9Ci0jZW5kaWYKLQotICAgIGJvb2wgaXNfY29tcGxldGUoKSBjb25zdCB7IHJldHVybiBjaGFpbl8tPmlzX2NvbXBsZXRlKCk7IH0KLSAgICBib29sIGF1dG9fY2xvc2UoKSBjb25zdCB7IHJldHVybiBjaGFpbl8tPmF1dG9fY2xvc2UoKTsgfQotICAgIHZvaWQgc2V0X2F1dG9fY2xvc2UoYm9vbCBjbG9zZSkgeyBjaGFpbl8tPnNldF9hdXRvX2Nsb3NlKGNsb3NlKTsgfQotICAgIGJvb2wgc3RyaWN0X3N5bmMoKSB7IHJldHVybiBjaGFpbl8tPnN0cmljdF9zeW5jKCk7IH0KLSAgICB2b2lkIHNldF9kZXZpY2VfYnVmZmVyX3NpemUoc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgICAgIHsgY2hhaW5fLT5zZXRfZGV2aWNlX2J1ZmZlcl9zaXplKG4pOyB9Ci0gICAgdm9pZCBzZXRfZmlsdGVyX2J1ZmZlcl9zaXplKHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgICAgICB7IGNoYWluXy0+c2V0X2ZpbHRlcl9idWZmZXJfc2l6ZShuKTsgfQotICAgIHZvaWQgc2V0X3BiYWNrX3NpemUoc3RkOjpzdHJlYW1zaXplIG4pIHsgY2hhaW5fLT5zZXRfcGJhY2tfc2l6ZShuKTsgfQotICAgIE5ETkJPT1NUX0lPU1RSRUFNU19ERUZJTkVfUFVTSChwdXNoLCBtb2RlLCBjaGFyX3R5cGUsIHB1c2hfaW1wbCkKLSAgICB2b2lkIHBvcCgpIHsgY2hhaW5fLT5wb3AoKTsgfQotICAgIGJvb2wgZW1wdHkoKSBjb25zdCB7IHJldHVybiBjaGFpbl8tPmVtcHR5KCk7IH0KLSAgICBzaXplX3R5cGUgc2l6ZSgpIHsgcmV0dXJuIGNoYWluXy0+c2l6ZSgpOyB9Ci0gICAgdm9pZCByZXNldCgpIHsgY2hhaW5fLT5yZXNldCgpOyB9Ci0KLSAgICAvLyBSZXR1cm5zIGEgY29weSBvZiB0aGUgdW5kZXJseWluZyBjaGFpbi4KLSAgICBjaGFpbl90eXBlIGZpbHRlcnMoKSB7IHJldHVybiAqY2hhaW5fOyB9Ci0gICAgY2hhaW5fdHlwZSBmaWx0ZXJzKCkgY29uc3QgeyByZXR1cm4gKmNoYWluXzsgfQotcHJvdGVjdGVkOgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBwdXNoX2ltcGwoY29uc3QgVCYgdCBORE5CT09TVF9JT1NUUkVBTVNfUFVTSF9QQVJBTVMoKSkKLSAgICB7IGNoYWluXy0+cHVzaCh0IE5ETkJPT1NUX0lPU1RSRUFNU19QVVNIX0FSR1MoKSk7IH0KLSAgICBjaGFpbl90eXBlJiByZWYoKSB7IHJldHVybiAqY2hhaW5fOyB9Ci0gICAgdm9pZCBzZXRfY2hhaW4oY2hhaW5fdHlwZSogYykKLSAgICB7IGNoYWluXyA9IGM7IGNoYWluXy0+cmVnaXN0ZXJfY2xpZW50KHRoaXMpOyB9Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFX0ZSSUVORFMpICYmIFwKLSAgICAoIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4NjAwKSkKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTLCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBBLCB0eXBlbmFtZSBNPgotICAgIGZyaWVuZCBjbGFzcyBjaGFpbl9iYXNlOwotI2Vsc2UKLSAgICBwdWJsaWM6Ci0jZW5kaWYKLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5KCkgeyB9Ci1wcml2YXRlOgotICAgIGNoYWluX3R5cGUqIGNoYWluXzsKLX07Ci0KLS8vLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiBjaGFpbl9iYXNlLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFNlbGYsIHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGU+Ci1pbmxpbmUgc3RkOjpzdHJlYW1zaXplIGNoYWluX2Jhc2U8U2VsZiwgQ2gsIFRyLCBBbGxvYywgTW9kZT46OnJlYWQKLSAgICAoY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLXsgcmV0dXJuIGlvc3RyZWFtczo6cmVhZCgqbGlzdCgpLmZyb250KCksIHMsIG4pOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFNlbGYsIHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGU+Ci1pbmxpbmUgc3RkOjpzdHJlYW1zaXplIGNoYWluX2Jhc2U8U2VsZiwgQ2gsIFRyLCBBbGxvYywgTW9kZT46OndyaXRlCi0gICAgKGNvbnN0IGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi17IHJldHVybiBpb3N0cmVhbXM6OndyaXRlKCpsaXN0KCkuZnJvbnQoKSwgcywgbik7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgU2VsZiwgdHlwZW5hbWUgQ2gsIHR5cGVuYW1lIFRyLCB0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgTW9kZT4KLWlubGluZSBzdGQ6OnN0cmVhbXBvcyBjaGFpbl9iYXNlPFNlbGYsIENoLCBUciwgQWxsb2MsIE1vZGU+OjpzZWVrCi0gICAgKHN0cmVhbV9vZmZzZXQgb2ZmLCBORE5CT09TVF9JT1M6OnNlZWtkaXIgd2F5KQoteyByZXR1cm4gaW9zdHJlYW1zOjpzZWVrKCpsaXN0KCkuZnJvbnQoKSwgb2ZmLCB3YXkpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFNlbGYsIHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGU+Ci12b2lkIGNoYWluX2Jhc2U8U2VsZiwgQ2gsIFRyLCBBbGxvYywgTW9kZT46OnJlc2V0KCkKLXsKLSAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgIHBpbXBsXy0+Y2xvc2UoKTsKLSAgICBwaW1wbF8tPnJlc2V0KCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFNlbGYsIHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGU+Ci1ib29sIGNoYWluX2Jhc2U8U2VsZiwgQ2gsIFRyLCBBbGxvYywgTW9kZT46OmlzX2NvbXBsZXRlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gKHBpbXBsXy0+ZmxhZ3NfICYgZl9jb21wbGV0ZSkgIT0gMDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgU2VsZiwgdHlwZW5hbWUgQ2gsIHR5cGVuYW1lIFRyLCB0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgTW9kZT4KLWJvb2wgY2hhaW5fYmFzZTxTZWxmLCBDaCwgVHIsIEFsbG9jLCBNb2RlPjo6YXV0b19jbG9zZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIChwaW1wbF8tPmZsYWdzXyAmIGZfYXV0b19jbG9zZSkgIT0gMDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgU2VsZiwgdHlwZW5hbWUgQ2gsIHR5cGVuYW1lIFRyLCB0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgTW9kZT4KLXZvaWQgY2hhaW5fYmFzZTxTZWxmLCBDaCwgVHIsIEFsbG9jLCBNb2RlPjo6c2V0X2F1dG9fY2xvc2UoYm9vbCBjbG9zZSkKLXsKLSAgICBwaW1wbF8tPmZsYWdzXyA9Ci0gICAgICAgIChwaW1wbF8tPmZsYWdzXyAmIH5mX2F1dG9fY2xvc2UpIHwKLSAgICAgICAgKGNsb3NlID8gZl9hdXRvX2Nsb3NlIDogMCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFNlbGYsIHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGU+Ci1ib29sIGNoYWluX2Jhc2U8U2VsZiwgQ2gsIFRyLCBBbGxvYywgTW9kZT46OnN0cmljdF9zeW5jKCkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3RfdHlwZTo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgIGZvciAoIGl0ZXJhdG9yIGZpcnN0ID0gbGlzdCgpLmJlZ2luKCksCi0gICAgICAgICAgICAgICAgICAgbGFzdCA9IGxpc3QoKS5lbmQoKTsKLSAgICAgICAgICBmaXJzdCAhPSBsYXN0OwotICAgICAgICAgICsrZmlyc3QgKQotICAgIHsKLSAgICAgICAgYm9vbCBzID0gKCpmaXJzdCktPnN0cmljdF9zeW5jKCk7Ci0gICAgICAgIHJlc3VsdCA9IHJlc3VsdCAmJiBzOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmLCB0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVHIsIHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBNb2RlPgotdm9pZCBjaGFpbl9iYXNlPFNlbGYsIENoLCBUciwgQWxsb2MsIE1vZGU+Ojpwb3AoKQotewotICAgIE5ETkJPT1NUX0FTU0VSVCghZW1wdHkoKSk7Ci0gICAgaWYgKGF1dG9fY2xvc2UoKSkKLSAgICAgICAgcGltcGxfLT5jbG9zZSgpOwotICAgIHN0cmVhbWJ1Zl90eXBlKiBidWYgPSAwOwotICAgIHN0ZDo6c3dhcChidWYsIGxpc3QoKS5iYWNrKCkpOwotICAgIGJ1Zi0+c2V0X2F1dG9fY2xvc2UoZmFsc2UpOwotICAgIGJ1Zi0+c2V0X25leHQoMCk7Ci0gICAgZGVsZXRlIGJ1ZjsKLSAgICBsaXN0KCkucG9wX2JhY2soKTsKLSAgICBwaW1wbF8tPmZsYWdzXyAmPSB+Zl9jb21wbGV0ZTsKLSAgICBpZiAoYXV0b19jbG9zZSgpIHx8IGxpc3QoKS5lbXB0eSgpKQotICAgICAgICBwaW1wbF8tPmZsYWdzXyAmPSB+Zl9vcGVuOwotfQotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DSEFJTl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2NoYXJfdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2NoYXJfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTc1MTNmMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jaGFyX3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfQ0hBUl9UUkFJVFNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19DSEFSX1RSQUlUU19IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmIAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxjc3RkZGVmPgotI2luY2x1ZGUgPGNzdGRpbz4gIC8vIEVPRi4KLSNpbmNsdWRlIDxzdHJpbmc+ICAvLyBzdGQ6OmNoYXJfdHJhaXRzLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY2hhcl90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3dpZGVfc3RyZWFtcy5ocHA+Ci0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19OT19XSURFX1NUUkVBTVMKLSMgaW5jbHVkZSA8Y3djaGFyPgotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRQotbmFtZXNwYWNlIHN0ZCB7IHVzaW5nIDo6d2ludF90OyB9Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLS8vIERpbmt1bXdhcmUgdGhhdCBjb21lcyB3aXRoIFFOWCBNb21lbnRpY3MgNi4zLjAsIDQuMC4yLCBpbmNvcnJlY3RseSBkZWZpbmVzCi0vLyB0aGUgRU9GIGFuZCBXRU9GIG1hY3JvcyB0byBub3Qgc3RkOjogcXVhbGlmeSB0aGUgd2ludF90IHR5cGUgKGFuZCBzbyBkb2VzCi0vLyBTdW4gQysrIDUuOCArIFNUTHBvcnQgNCkuIEZpeCBieSBwbGFjaW5nIHRoZSBkZWYgaW4gdGhpcyBzY29wZS4KLS8vIE5PVEU6IFVzZSBORE5CT09TVF9XT1JLQVJPVU5EPwotI2lmIChkZWZpbmVkKF9fUU5YX18pICYmIGRlZmluZWQoTkROQk9PU1RfRElOS1VNV0FSRV9TVERMSUIpKSAgXAotICAgIHx8IGRlZmluZWQoX19TVU5QUk9fQ0MpCi11c2luZyA6OnN0ZDo6d2ludF90OwotI2VuZGlmCi0KLWNvbnN0IGludCBXT1VMRF9CTE9DSyA9IChpbnQpIChFT0YgLSAxKTsKLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fV0lERV9TVFJFQU1TCi1jb25zdCBzdGQ6OndpbnRfdCBXV09VTERfQkxPQ0sgPSAoc3RkOjp3aW50X3QpIChXRU9GIC0gMSk7Ci0jZW5kaWYKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2g+Ci1zdHJ1Y3QgY2hhcl90cmFpdHM7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjaGFyX3RyYWl0czxjaGFyPiA6IE5ETkJPT1NUX0lPU1RSRUFNU19DSEFSX1RSQUlUUyhjaGFyKSB7Ci0gICAgc3RhdGljIGNoYXIgbmV3bGluZSgpIHsgcmV0dXJuICdcbic7IH0KLSAgICBzdGF0aWMgaW50IGdvb2QoKSB7IHJldHVybiAnXG4nOyB9Ci0gICAgc3RhdGljIGludCB3b3VsZF9ibG9jaygpIHsgcmV0dXJuIFdPVUxEX0JMT0NLOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNfZ29vZChpbnQgYykgeyByZXR1cm4gYyAhPSBFT0YgJiYgYyAhPSBXT1VMRF9CTE9DSzsgfQotICAgIHN0YXRpYyBib29sIGlzX2VvZihpbnQgYykgeyByZXR1cm4gYyA9PSBFT0Y7IH0KLSAgICBzdGF0aWMgYm9vbCB3b3VsZF9ibG9jayhpbnQgYykgeyByZXR1cm4gYyA9PSBXT1VMRF9CTE9DSzsgfQotfTsKLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fV0lERV9TVFJFQU1TCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2hhcl90cmFpdHM8d2NoYXJfdD4gOiBzdGQ6OmNoYXJfdHJhaXRzPHdjaGFyX3Q+IHsKLSAgICBzdGF0aWMgd2NoYXJfdCBuZXdsaW5lKCkgeyByZXR1cm4gTCdcbic7IH0KLSAgICBzdGF0aWMgc3RkOjp3aW50X3QgZ29vZCgpIHsgcmV0dXJuIEwnXG4nOyB9Ci0gICAgc3RhdGljIHN0ZDo6d2ludF90IHdvdWxkX2Jsb2NrKCkgeyByZXR1cm4gV1dPVUxEX0JMT0NLOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNfZ29vZChzdGQ6OndpbnRfdCBjKSB7IHJldHVybiBjICE9IFdFT0YgJiYgYyAhPSBXV09VTERfQkxPQ0s7IH0KLSAgICBzdGF0aWMgYm9vbCBpc19lb2Yoc3RkOjp3aW50X3QgYykgeyByZXR1cm4gYyA9PSBXRU9GOyB9Ci0gICAgc3RhdGljIGJvb2wgd291bGRfYmxvY2soc3RkOjp3aW50X3QgYykgeyByZXR1cm4gYyA9PSBXV09VTERfQkxPQ0s7IH0KLX07Ci0jZW5kaWYKLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19DSEFSX1RSQUlUU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2NoZWNrZWRfb3BlcmF0aW9ucy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jaGVja2VkX29wZXJhdGlvbnMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTI3MDY1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2NoZWNrZWRfb3BlcmF0aW9ucy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTggKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDUtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vIENvbnRhaW5zIGltcGxlbWVudGF0aW9ucyBvZiBnZXQsIHJlYWQsIHB1dCwgd3JpdGUgYW5kIHNlZWsgd2hpY2gKLS8vIGNoZWNrIGEgZGV2aWNlJ3MgbW9kZSBhdCBydW50aW1lIGluc3RlYWQgb2YgY29tcGlsZSB0aW1lLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ0hFQ0tFRF9PUEVSQVRJT05TX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NIRUNLRURfT1BFUkFUSU9OU19IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jYXRlZ29yaWVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Rpc3BhdGNoLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Vycm9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy91bnJlYWNoYWJsZV9yZXR1cm4uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9nZXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9wdXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9yZWFkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvc2Vlay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3dyaXRlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90aHJvd19leGNlcHRpb24uaHBwPgotCi0vLyBNdXN0IGNvbWUgbGFzdC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9kaXNhYmxlX3dhcm5pbmdzLmhwcD4gIC8vIE1TVkMuCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gCi1zdHJ1Y3QgcmVhZF93cml0ZV9pZl9pbXBsOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiAKLXN0cnVjdCBzZWVrX2lmX2ltcGw7Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci10eXBlbmFtZSBpbnRfdHlwZV9vZjxUPjo6dHlwZSBnZXRfaWYoVCYgdCkKLXsgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmRpc3BhdGNoPFQsIGlucHV0LCBvdXRwdXQ+Ojp0eXBlIHRhZzsKLSAgICByZXR1cm4gZGV0YWlsOjpyZWFkX3dyaXRlX2lmX2ltcGw8dGFnPjo6Z2V0KHQpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIHN0ZDo6c3RyZWFtc2l6ZQotcmVhZF9pZihUJiB0LCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQoteyAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6ZGlzcGF0Y2g8VCwgaW5wdXQsIG91dHB1dD46OnR5cGUgdGFnOwotICAgIHJldHVybiBkZXRhaWw6OnJlYWRfd3JpdGVfaWZfaW1wbDx0YWc+OjpyZWFkKHQsIHMsIG4pOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotYm9vbCBwdXRfaWYoVCYgdCwgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlIGMpCi17IAotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpkaXNwYXRjaDxULCBvdXRwdXQsIGlucHV0Pjo6dHlwZSB0YWc7Ci0gICAgcmV0dXJuIGRldGFpbDo6cmVhZF93cml0ZV9pZl9pbXBsPHRhZz46OnB1dCh0LCBjKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBzdGQ6OnN0cmVhbXNpemUgd3JpdGVfaWYKLSAgICAoVCYgdCwgY29uc3QgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLXsgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmRpc3BhdGNoPFQsIG91dHB1dCwgaW5wdXQ+Ojp0eXBlIHRhZzsKLSAgICByZXR1cm4gZGV0YWlsOjpyZWFkX3dyaXRlX2lmX2ltcGw8dGFnPjo6d3JpdGUodCwgcywgbik7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgc3RkOjpzdHJlYW1wb3MKLXNlZWtfaWYoIFQmIHQsIHN0cmVhbV9vZmZzZXQgb2ZmLCBORE5CT09TVF9JT1M6OnNlZWtkaXIgd2F5LCAKLSAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2ggPSBORE5CT09TVF9JT1M6OmluIHwgTkROQk9PU1RfSU9TOjpvdXQgKQoteyAKLSAgICB1c2luZyBuYW1lc3BhY2UgZGV0YWlsOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGlzcGF0Y2g8VCwgcmFuZG9tX2FjY2VzcywgYW55X3RhZz46OnR5cGUgdGFnOwotICAgIHJldHVybiBzZWVrX2lmX2ltcGw8dGFnPjo6c2Vlayh0LCBvZmYsIHdheSwgd2hpY2gpOwotfQotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1TcGVjaWFsaXphdGlvbnMgb2YgcmVhZF93cml0ZV9pZl9pbXBsLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8Pgotc3RydWN0IHJlYWRfd3JpdGVfaWZfaW1wbDxpbnB1dD4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHR5cGVuYW1lIGludF90eXBlX29mPFQ+Ojp0eXBlIGdldChUJiB0KQotICAgIHsgcmV0dXJuIGlvc3RyZWFtczo6Z2V0KHQpOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUKLSAgICByZWFkKFQmIHQsIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgeyByZXR1cm4gaW9zdHJlYW1zOjpyZWFkKHQsIHMsIG4pOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBib29sIHB1dChUJiwgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlKQotICAgIHsgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihjYW50X3dyaXRlKCkpOwotICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX1VOUkVBQ0hBQkxFX1JFVFVSTihmYWxzZSkgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgc3RkOjpzdHJlYW1zaXplIAotICAgIHdyaXRlKFQmLCBjb25zdCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUqLCBzdGQ6OnN0cmVhbXNpemUpCi0gICAgeyBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGNhbnRfd3JpdGUoKSk7Ci0gICAgICBORE5CT09TVF9JT1NUUkVBTVNfVU5SRUFDSEFCTEVfUkVUVVJOKDApIH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCByZWFkX3dyaXRlX2lmX2ltcGw8b3V0cHV0PiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgdHlwZW5hbWUgaW50X3R5cGVfb2Y8VD46OnR5cGUgZ2V0KFQmKQotICAgIHsgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihjYW50X3JlYWQoKSk7Ci0gICAgICBORE5CT09TVF9JT1NUUkVBTVNfVU5SRUFDSEFCTEVfUkVUVVJOKDApIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtc2l6ZQotICAgIHJlYWQoVCYsIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSosIHN0ZDo6c3RyZWFtc2l6ZSkKLSAgICB7IG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oY2FudF9yZWFkKCkpOwotICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX1VOUkVBQ0hBQkxFX1JFVFVSTigwKSB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBib29sIHB1dChUJiB0LCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUgYykKLSAgICB7IHJldHVybiBpb3N0cmVhbXM6OnB1dCh0LCBjKTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgc3RkOjpzdHJlYW1zaXplIAotICAgIHdyaXRlKCBUJiB0LCBjb25zdCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUqIHMsIAotICAgICAgICAgICBzdGQ6OnN0cmVhbXNpemUgbiApCi0gICAgeyByZXR1cm4gaW9zdHJlYW1zOjp3cml0ZSh0LCBzLCBuKTsgfQotfTsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1TcGVjaWFsaXphdGlvbnMgb2Ygc2Vla19pZl9pbXBsLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8Pgotc3RydWN0IHNlZWtfaWZfaW1wbDxyYW5kb21fYWNjZXNzPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgc3RkOjpzdHJlYW1wb3MgCi0gICAgc2VlayggVCYgdCwgc3RyZWFtX29mZnNldCBvZmYsIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXksIAotICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2ggKQotICAgIHsgcmV0dXJuIGlvc3RyZWFtczo6c2Vlayh0LCBvZmYsIHdheSwgd2hpY2gpOyB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2Vla19pZl9pbXBsPGFueV90YWc+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXBvcyAKLSAgICBzZWVrKFQmLCBzdHJlYW1fb2Zmc2V0LCBORE5CT09TVF9JT1M6OnNlZWtkaXIsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUpCi0gICAgeyBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGNhbnRfc2VlaygpKTsKLSAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19VTlJFQUNIQUJMRV9SRVRVUk4oc3RkOjpzdHJlYW1wb3MoKSkgfQotfTsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9lbmFibGVfd2FybmluZ3MuaHBwPiAgLy8gTVNWQy4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DSEVDS0VEX09QRVJBVElPTlNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jbG9zZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jbG9zZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkZGU0NTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvY2xvc2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjU5ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19DTE9TRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0NMT1NFX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAvLyBERURVQ0VEX1RZUEVOQU1FLCBNU1ZDLgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2F0ZWdvcmllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2ZsdXNoLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvbm9uX2Jsb2NraW5nX2FkYXB0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4gLy8gTkROQk9PU1RfSU9TCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zZWxlY3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvd3JhcF91bndyYXAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9vcGVyYXRpb25zX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lkZW50aXR5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19pbnRlZ3JhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfcmVmZXJlbmNlLmhwcD4KLQotLy8gTXVzdCBjb21lIGxhc3QuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZGlzYWJsZV93YXJuaW5ncy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdm9pZCBjbG9zZShUJiB0KTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZvaWQgY2xvc2UoVCYgdCwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCk7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFNpbms+Ci12b2lkIGNsb3NlKFQmIHQsIFNpbmsmIHNuaywgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCk7Ci0gICAgCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZvaWQgY2xvc2VfYWxsKFQmIHQpCi17IAotICAgIHRyeSB7Ci0gICAgICAgIG5kbmJvb3N0Ojppb3N0cmVhbXM6OmNsb3NlKHQsIE5ETkJPT1NUX0lPUzo6aW4pOwotICAgIH0gY2F0Y2ggKC4uLikgewotICAgICAgICB0cnkgewotICAgICAgICAgICAgbmRuYm9vc3Q6Omlvc3RyZWFtczo6Y2xvc2UodCwgTkROQk9PU1RfSU9TOjpvdXQpOwotICAgICAgICB9IGNhdGNoICguLi4pIHsgfQotICAgICAgICB0aHJvdzsKLSAgICB9Ci0gICAgbmRuYm9vc3Q6Omlvc3RyZWFtczo6Y2xvc2UodCwgTkROQk9PU1RfSU9TOjpvdXQpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBTaW5rPgotdm9pZCBjbG9zZV9hbGwoVCYgdCwgU2luayYgc25rKQoteyAKLSAgICB0cnkgewotICAgICAgICBuZG5ib29zdDo6aW9zdHJlYW1zOjpjbG9zZSh0LCBzbmssIE5ETkJPT1NUX0lPUzo6aW4pOwotICAgIH0gY2F0Y2ggKC4uLikgewotICAgICAgICB0cnkgewotICAgICAgICAgICAgbmRuYm9vc3Q6Omlvc3RyZWFtczo6Y2xvc2UodCwgc25rLCBORE5CT09TVF9JT1M6Om91dCk7Ci0gICAgICAgIH0gY2F0Y2ggKC4uLikgeyB9Ci0gICAgICAgIHRocm93OwotICAgIH0KLSAgICBuZG5ib29zdDo6aW9zdHJlYW1zOjpjbG9zZSh0LCBzbmssIE5ETkJPT1NUX0lPUzo6b3V0KTsKLX0KLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4gCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotIyBpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3ZjNi9jbG9zZS5ocHA+Ci0jZWxzZSAvLyAjaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgY2xvc2VfaW1wbDsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZvaWQgY2xvc2UoVCYgdCkgeyBkZXRhaWw6OmNsb3NlX2FsbCh0KTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdm9pZCBjbG9zZShUJiB0LCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKQoteyAKLSNpZmRlZiBORE5CT09TVF9JT1NUUkVBTVNfU1RSSUNUCi0gICAgTkROQk9PU1RfQVNTRVJUKHdoaWNoID09IE5ETkJPT1NUX0lPUzo6aW4gfHwgd2hpY2ggPT0gTkROQk9PU1RfSU9TOjpvdXQpOwotI2Vsc2UKLSAgICBpZiAod2hpY2ggPT0gKE5ETkJPT1NUX0lPUzo6aW4gfCBORE5CT09TVF9JT1M6Om91dCkpIHsKLSAgICAgICAgZGV0YWlsOjpjbG9zZV9hbGwodCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSAgICBkZXRhaWw6OmNsb3NlX2ltcGw8VD46OmNsb3NlKGRldGFpbDo6dW53cmFwKHQpLCB3aGljaCk7IAotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBTaW5rPgotdm9pZCBjbG9zZShUJiB0LCBTaW5rJiBzbmssIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpCi17IAotI2lmZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19TVFJJQ1QKLSAgICBORE5CT09TVF9BU1NFUlQod2hpY2ggPT0gTkROQk9PU1RfSU9TOjppbiB8fCB3aGljaCA9PSBORE5CT09TVF9JT1M6Om91dCk7Ci0jZWxzZQotICAgIGlmICh3aGljaCA9PSAoTkROQk9PU1RfSU9TOjppbiB8IE5ETkJPT1NUX0lPUzo6b3V0KSkgewotICAgICAgICBkZXRhaWw6OmNsb3NlX2FsbCh0LCBzbmspOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0gICAgZGV0YWlsOjpjbG9zZV9pbXBsPFQ+OjpjbG9zZShkZXRhaWw6OnVud3JhcCh0KSwgc25rLCB3aGljaCk7IAotfQotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIGNsb3NlX2ltcGwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotc3RydWN0IGNsb3NlX2Jvb3N0X3N0cmVhbSB7IH07Ci1zdHJ1Y3QgY2xvc2VfZmlsdGVyaW5nX3N0cmVhbSB7IH07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgY2xvc2VfdGFnIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNhdGVnb3J5X29mPFQ+Ojp0eXBlICAgICAgICAgICAgIGNhdGVnb3J5OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjp1bndyYXBwZWRfdHlwZTxUPjo6dHlwZSAgdW53cmFwcGVkOwotICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgICAgICAgIGlvc3RyZWFtczo6c2VsZWN0PAotICAgICAgICAgICAgICAgIG1wbDo6bm90XzwgaXNfY29udmVydGlibGU8Y2F0ZWdvcnksIGNsb3NhYmxlX3RhZz4gPiwKLSAgICAgICAgICAgICAgICBhbnlfdGFnLAotICAgICAgICAgICAgICAgIG1wbDo6b3JfPAotICAgICAgICAgICAgICAgICAgICBpc19ib29zdF9zdHJlYW08dW53cmFwcGVkPiwKLSAgICAgICAgICAgICAgICAgICAgaXNfYm9vc3Rfc3RyZWFtX2J1ZmZlcjx1bndyYXBwZWQ+Ci0gICAgICAgICAgICAgICAgPiwKLSAgICAgICAgICAgICAgICBjbG9zZV9ib29zdF9zdHJlYW0sCi0gICAgICAgICAgICAgICAgbXBsOjpvcl88Ci0gICAgICAgICAgICAgICAgICAgIGlzX2ZpbHRlcmluZ19zdHJlYW08dW53cmFwcGVkPiwKLSAgICAgICAgICAgICAgICAgICAgaXNfZmlsdGVyaW5nX3N0cmVhbWJ1Zjx1bndyYXBwZWQ+Ci0gICAgICAgICAgICAgICAgPiwKLSAgICAgICAgICAgICAgICBjbG9zZV9maWx0ZXJpbmdfc3RyZWFtLAotICAgICAgICAgICAgICAgIG1wbDo6b3JfPAotICAgICAgICAgICAgICAgICAgICBpc19jb252ZXJ0aWJsZTxjYXRlZ29yeSwgdHdvX3NlcXVlbmNlPiwKLSAgICAgICAgICAgICAgICAgICAgaXNfY29udmVydGlibGU8Y2F0ZWdvcnksIGR1YWxfdXNlPgotICAgICAgICAgICAgICAgID4sCi0gICAgICAgICAgICAgICAgdHdvX3NlcXVlbmNlLAotICAgICAgICAgICAgICAgIGVsc2VfLAotICAgICAgICAgICAgICAgIGNsb3NhYmxlX3RhZwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBjbG9zZV9pbXBsCi0gICAgOiBtcGw6OmlmXzwKLSAgICAgICAgICBpc19jdXN0b208VD4sCi0gICAgICAgICAgb3BlcmF0aW9uczxUPiwKLSAgICAgICAgICBjbG9zZV9pbXBsPE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgY2xvc2VfdGFnPFQ+Ojp0eXBlPgotICAgICAgPjo6dHlwZQotICAgIHsgfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsb3NlX2ltcGw8YW55X3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHZvaWQgY2xvc2UoVCYgdCwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLSAgICB7Ci0gICAgICAgIGlmICh3aGljaCA9PSBORE5CT09TVF9JT1M6Om91dCkKLSAgICAgICAgICAgIGlvc3RyZWFtczo6Zmx1c2godCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgU2luaz4KLSAgICBzdGF0aWMgdm9pZCBjbG9zZShUJiB0LCBTaW5rJiBzbmssIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpCi0gICAgewotICAgICAgICBpZiAod2hpY2ggPT0gTkROQk9PU1RfSU9TOjpvdXQpIHsKLSAgICAgICAgICAgIG5vbl9ibG9ja2luZ19hZGFwdGVyPFNpbms+IG5iKHNuayk7Ci0gICAgICAgICAgICBpb3N0cmVhbXM6OmZsdXNoKHQsIG5iKTsKLSAgICAgICAgfQotICAgIH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbG9zZV9pbXBsPGNsb3NlX2Jvb3N0X3N0cmVhbT4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHZvaWQgY2xvc2UoVCYgdCkKLSAgICB7Ci0gICAgICAgIHQuY2xvc2UoKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgdm9pZCBjbG9zZShUJiB0LCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKQotICAgIHsKLSAgICAgICAgaWYgKHdoaWNoID09IE5ETkJPT1NUX0lPUzo6b3V0KQotICAgICAgICAgICAgdC5jbG9zZSgpOwotICAgIH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbG9zZV9pbXBsPGNsb3NlX2ZpbHRlcmluZ19zdHJlYW0+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyB2b2lkIGNsb3NlKFQmIHQsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGNhdGVnb3J5X29mPFQ+Ojp0eXBlIGNhdGVnb3J5OwotICAgICAgICBjb25zdCBib29sIGluID0gIGlzX2NvbnZlcnRpYmxlPGNhdGVnb3J5LCBpbnB1dD46OnZhbHVlICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAhaXNfY29udmVydGlibGU8Y2F0ZWdvcnksIG91dHB1dD46OnZhbHVlOwotICAgICAgICBpZiAoaW4gPT0gKHdoaWNoID09IE5ETkJPT1NUX0lPUzo6aW4pICYmIHQuaXNfY29tcGxldGUoKSkKLSAgICAgICAgICAgIHQucG9wKCk7Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsb3NlX2ltcGw8Y2xvc2FibGVfdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgdm9pZCBjbG9zZShUJiB0LCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBjYXRlZ29yeV9vZjxUPjo6dHlwZSBjYXRlZ29yeTsKLSAgICAgICAgY29uc3QgYm9vbCBpbiA9ICBpc19jb252ZXJ0aWJsZTxjYXRlZ29yeSwgaW5wdXQ+Ojp2YWx1ZSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgIWlzX2NvbnZlcnRpYmxlPGNhdGVnb3J5LCBvdXRwdXQ+Ojp2YWx1ZTsKLSAgICAgICAgaWYgKGluID09ICh3aGljaCA9PSBORE5CT09TVF9JT1M6OmluKSkKLSAgICAgICAgICAgIHQuY2xvc2UoKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgU2luaz4KLSAgICBzdGF0aWMgdm9pZCBjbG9zZShUJiB0LCBTaW5rJiBzbmssIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGNhdGVnb3J5X29mPFQ+Ojp0eXBlIGNhdGVnb3J5OwotICAgICAgICBjb25zdCBib29sIGluID0gIGlzX2NvbnZlcnRpYmxlPGNhdGVnb3J5LCBpbnB1dD46OnZhbHVlICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAhaXNfY29udmVydGlibGU8Y2F0ZWdvcnksIG91dHB1dD46OnZhbHVlOwotICAgICAgICBpZiAoaW4gPT0gKHdoaWNoID09IE5ETkJPT1NUX0lPUzo6aW4pKSB7Ci0gICAgICAgICAgICBub25fYmxvY2tpbmdfYWRhcHRlcjxTaW5rPiBuYihzbmspOwotICAgICAgICAgICAgdC5jbG9zZShuYik7Ci0gICAgICAgIH0KLSAgICB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xvc2VfaW1wbDx0d29fc2VxdWVuY2U+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyB2b2lkIGNsb3NlKFQmIHQsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpIHsgdC5jbG9zZSh3aGljaCk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBTaW5rPgotICAgIHN0YXRpYyB2b2lkIGNsb3NlKFQmIHQsIFNpbmsmIHNuaywgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLSAgICB7Ci0gICAgICAgIG5vbl9ibG9ja2luZ19hZGFwdGVyPFNpbms+IG5iKHNuayk7Ci0gICAgICAgIHQuY2xvc2UobmIsIHdoaWNoKTsKLSAgICB9Ci19OwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2VuZGlmIC8vICNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19DTE9TRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2NvZGVfY29udmVydGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2NvZGVfY29udmVydGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTJjMjlkMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jb2RlX2NvbnZlcnRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MjUgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vIENvbnRhaW5zIG1hY2hpbmVyeSBmb3IgcGVyZm9ybWluZyBjb2RlIGNvbnZlcnNpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0NPREVfQ09OVkVSVEVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQ09ERV9DT05WRVJURVJfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvd2lkZV9zdHJlYW1zLmhwcD4KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0lPU1RSRUFNU19OT19XSURFX1NUUkVBTVMpIHx8IFwKLSAgICBkZWZpbmVkKE5ETkJPT1NUX0lPU1RSRUFNU19OT19MT0NBTEUpIFwKLSAgICAvKiovCi0jIGVycm9yIGNvZGUgY29udmVyc2lvbiBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0KLSNlbmRpZgotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPiAgICAgICAgICAgICAgICAgICAgICAgLy8gbWF4LgotI2luY2x1ZGUgPGNzdHJpbmc+ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1lbWNweS4KLSNpbmNsdWRlIDxleGNlcHRpb24+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gICAgICAgICAgICAgICAgLy8gREVEVUNFRF9UWVBFTkFNRSwgCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NoYXJfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY29uc3RhbnRzLmhwcD4gICAvLyBkZWZhdWx0X2ZpbHRlcl9idWZmZXJfc2l6ZS4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvY29uY2VwdF9hZGFwdGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvZGlyZWN0X2FkYXB0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYnVmZmVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NhbGxfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvZGVjdnRfaG9sZGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvZGVjdnRfaGVscGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2RvdWJsZV9vYmplY3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZXhlY3V0ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9mb3J3YXJkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Z1bmN0aW9uYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4gLy8gZmFpbHVyZSwgb3Blbm1vZGUsIGludCB0eXBlcy4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL29wdGlvbmFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3NlbGVjdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NoYXJlZF9wdHIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29udmVydGlibGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotCi0vLyBNdXN0IGNvbWUgbGFzdC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9kaXNhYmxlX3dhcm5pbmdzLmhwcD4gLy8gQm9ybGFuZCA1LngKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLXN0cnVjdCBjb2RlX2NvbnZlcnNpb25fZXJyb3IgOiBORE5CT09TVF9JT1NUUkVBTVNfRkFJTFVSRSB7Ci0gICAgY29kZV9jb252ZXJzaW9uX2Vycm9yKCkgCi0gICAgICAgIDogTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUoImNvZGUgY29udmVyc2lvbiBlcnJvciIpCi0gICAgICAgIHsgfQotfTsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIHN0cm5jcHlfaWZfc2FtZS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vIEhlbHBlciB0ZW1wbGF0ZSBmb3Igc3RybmNweV9pZl9zYW1lLCBiZWxvdy4KLXRlbXBsYXRlPGJvb2wgQj4KLXN0cnVjdCBzdHJuY3B5X2lmX3NhbWVfaW1wbDsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHN0cm5jcHlfaWZfc2FtZV9pbXBsPHRydWU+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaD4KLSAgICBzdGF0aWMgQ2gqIGNvcHkoQ2gqIHRndCwgY29uc3QgQ2gqIHNyYywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgeyByZXR1cm4gTkROQk9PU1RfSU9TVFJFQU1TX0NIQVJfVFJBSVRTKENoKTo6Y29weSh0Z3QsIHNyYywgbik7IH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzdHJuY3B5X2lmX3NhbWVfaW1wbDxmYWxzZT4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNyYywgdHlwZW5hbWUgVGd0PgotICAgIHN0YXRpYyBUZ3QqIGNvcHkoVGd0KiB0Z3QsIGNvbnN0IFNyYyosIHN0ZDo6c3RyZWFtc2l6ZSkgeyByZXR1cm4gdGd0OyB9Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTcmMsIHR5cGVuYW1lIFRndD4KLVRndCogc3RybmNweV9pZl9zYW1lKFRndCogdGd0LCBjb25zdCBTcmMqIHNyYywgc3RkOjpzdHJlYW1zaXplIG4pCi17Ci0gICAgdHlwZWRlZiBzdHJuY3B5X2lmX3NhbWVfaW1wbDxpc19zYW1lPFNyYywgVGd0Pjo6dmFsdWU+IGltcGw7Ci0gICAgcmV0dXJuIGltcGw6OmNvcHkodGd0LCBzcmMsIG4pOwotfQotCi0vLy0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBjb252ZXJzaW9uX2J1ZmZlci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyBCdWZmZXIgYW5kIGNvbnZlcnNpb24gc3RhdGUgZm9yIHJlYWRpbmcuCi10ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlY3Z0LCB0eXBlbmFtZSBBbGxvYz4KLWNsYXNzIGNvbnZlcnNpb25fYnVmZmVyIAotICAgIDogcHVibGljIGJ1ZmZlcjwKLSAgICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBkZXRhaWw6OmNvZGVjdnRfZXh0ZXJuPENvZGVjdnQ+Ojp0eXBlLAotICAgICAgICAgICAgICAgICBBbGxvYwotICAgICAgICAgICAgID4gCi17Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBDb2RlY3Z0OjpzdGF0ZV90eXBlIHN0YXRlX3R5cGU7Ci0gICAgY29udmVyc2lvbl9idWZmZXIoKSAKLSAgICAgICAgOiBidWZmZXI8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgZGV0YWlsOjpjb2RlY3Z0X2V4dGVybjxDb2RlY3Z0Pjo6dHlwZSwKLSAgICAgICAgICAgICAgQWxsb2MKLSAgICAgICAgICA+KDApIAotICAgIHsgCi0gICAgICAgIHJlc2V0KCk7IAotICAgIH0KLSAgICBzdGF0ZV90eXBlJiBzdGF0ZSgpIHsgcmV0dXJuIHN0YXRlXzsgfQotICAgIHZvaWQgcmVzZXQoKSAKLSAgICB7IAotICAgICAgICBpZiAodGhpcy0+c2l6ZSgpKSAKLSAgICAgICAgICAgIHRoaXMtPnNldCgwLCAwKTsKLSAgICAgICAgc3RhdGVfID0gc3RhdGVfdHlwZSgpOyAKLSAgICB9Ci1wcml2YXRlOgotICAgIHN0YXRlX3R5cGUgc3RhdGVfOwotfTsKLQotLy8tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgY29udmVydGVyX2ltcGwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gQ29udGFpbnMgbWVtYmVyIGRhdGEsIG9wZW4vaXNfb3Blbi9jbG9zZSBhbmQgYnVmZmVyIG1hbmFnZW1lbnQgZnVuY3Rpb25zLgotdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlLCB0eXBlbmFtZSBDb2RlY3Z0LCB0eXBlbmFtZSBBbGxvYz4KLXN0cnVjdCBjb2RlX2NvbnZlcnRlcl9pbXBsIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNvZGVjdnRfZXh0ZXJuPENvZGVjdnQ+Ojp0eXBlICAgICAgICAgIGV4dGVybl90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2F0ZWdvcnlfb2Y8RGV2aWNlPjo6dHlwZSAgICAgICAgICAgICAgZGV2aWNlX2NhdGVnb3J5OwotICAgIHR5cGVkZWYgaXNfY29udmVydGlibGU8ZGV2aWNlX2NhdGVnb3J5LCBpbnB1dD4gICAgICAgICAgY2FuX3JlYWQ7Ci0gICAgdHlwZWRlZiBpc19jb252ZXJ0aWJsZTxkZXZpY2VfY2F0ZWdvcnksIG91dHB1dD4gICAgICAgICBjYW5fd3JpdGU7Ci0gICAgdHlwZWRlZiBpc19jb252ZXJ0aWJsZTxkZXZpY2VfY2F0ZWdvcnksIGJpZGlyZWN0aW9uYWw+ICBpc19iaWRpcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIAotICAgICAgICAgICAgaW9zdHJlYW1zOjpzZWxlY3Q8ICAvLyBEaXNhbWJpZ3VhdGlvbiBmb3IgVHJ1NjQuCi0gICAgICAgICAgICAgICAgaXNfYmlkaXIsIGJpZGlyZWN0aW9uYWwsCi0gICAgICAgICAgICAgICAgY2FuX3JlYWQsIGlucHV0LAotICAgICAgICAgICAgICAgIGNhbl93cml0ZSwgb3V0cHV0Ci0gICAgICAgICAgICA+Ojp0eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlOyAgICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgICAgICAgIG1wbDo6aWZfPAotICAgICAgICAgICAgICAgIGlzX2RpcmVjdDxEZXZpY2U+LAotICAgICAgICAgICAgICAgIGRpcmVjdF9hZGFwdGVyPERldmljZT4sCi0gICAgICAgICAgICAgICAgRGV2aWNlCi0gICAgICAgICAgICA+Ojp0eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VfdHlwZTsKLSAgICB0eXBlZGVmIG9wdGlvbmFsPCBjb25jZXB0X2FkYXB0ZXI8ZGV2aWNlX3R5cGU+ID4gICAgICAgIHN0b3JhZ2VfdHlwZTsKLSAgICB0eXBlZGVmIGlzX2NvbnZlcnRpYmxlPGRldmljZV9jYXRlZ29yeSwgdHdvX3NlcXVlbmNlPiAgIGlzX2RvdWJsZTsKLSAgICB0eXBlZGVmIGNvbnZlcnNpb25fYnVmZmVyPENvZGVjdnQsIEFsbG9jPiAgICAgICAgICAgICAgIGJ1ZmZlcl90eXBlOwotCi0gICAgY29kZV9jb252ZXJ0ZXJfaW1wbCgpIDogY3Z0XygpLCBmbGFnc18oMCkgeyB9Ci0KLSAgICB+Y29kZV9jb252ZXJ0ZXJfaW1wbCgpCi0gICAgeyAKLSAgICAgICAgdHJ5IHsgCi0gICAgICAgICAgICBpZiAoZmxhZ3NfICYgZl9vcGVuKSBjbG9zZSgpOyAKLSAgICAgICAgfSBjYXRjaCAoLi4uKSB7IC8qICovIH0gCi0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgdm9pZCBvcGVuKGNvbnN0IFQmIGRldiwgaW50IGJ1ZmZlcl9zaXplKQotICAgIHsKLSAgICAgICAgaWYgKGZsYWdzXyAmIGZfb3BlbikKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUoImFscmVhZHkgb3BlbiIpKTsKLSAgICAgICAgaWYgKGJ1ZmZlcl9zaXplID09IC0xKQotICAgICAgICAgICAgYnVmZmVyX3NpemUgPSBkZWZhdWx0X2ZpbHRlcl9idWZmZXJfc2l6ZTsKLSAgICAgICAgaW50IG1heF9sZW5ndGggPSBjdnRfLmdldCgpLm1heF9sZW5ndGgoKTsKLSAgICAgICAgYnVmZmVyX3NpemUgPSAoc3RkOjptYXgpKGJ1ZmZlcl9zaXplLCAyICogbWF4X2xlbmd0aCk7Ci0gICAgICAgIGlmIChjYW5fcmVhZDo6dmFsdWUpIHsKLSAgICAgICAgICAgIGJ1Zl8uZmlyc3QoKS5yZXNpemUoYnVmZmVyX3NpemUpOwotICAgICAgICAgICAgYnVmXy5maXJzdCgpLnNldCgwLCAwKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoY2FuX3dyaXRlOjp2YWx1ZSAmJiAhaXNfZG91YmxlOjp2YWx1ZSkgewotICAgICAgICAgICAgYnVmXy5zZWNvbmQoKS5yZXNpemUoYnVmZmVyX3NpemUpOwotICAgICAgICAgICAgYnVmXy5zZWNvbmQoKS5zZXQoMCwgMCk7Ci0gICAgICAgIH0KLSAgICAgICAgZGV2Xy5yZXNldChjb25jZXB0X2FkYXB0ZXI8ZGV2aWNlX3R5cGU+KGRldikpOwotICAgICAgICBmbGFnc18gPSBmX29wZW47Ci0gICAgfQotCi0gICAgdm9pZCBjbG9zZSgpCi0gICAgewotICAgICAgICBkZXRhaWw6OmV4ZWN1dGVfYWxsKAotICAgICAgICAgICAgZGV0YWlsOjpjYWxsX21lbWJlcl9jbG9zZSgqdGhpcywgTkROQk9PU1RfSU9TOjppbiksCi0gICAgICAgICAgICBkZXRhaWw6OmNhbGxfbWVtYmVyX2Nsb3NlKCp0aGlzLCBORE5CT09TVF9JT1M6Om91dCkKLSAgICAgICAgKTsKLSAgICB9Ci0KLSAgICB2b2lkIGNsb3NlKE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpCi0gICAgewotICAgICAgICBpZiAod2hpY2ggPT0gTkROQk9PU1RfSU9TOjppbiAmJiAoZmxhZ3NfICYgZl9pbnB1dF9jbG9zZWQpID09IDApIHsKLSAgICAgICAgICAgIGZsYWdzXyB8PSBmX2lucHV0X2Nsb3NlZDsKLSAgICAgICAgICAgIGlvc3RyZWFtczo6Y2xvc2UoZGV2KCksIE5ETkJPT1NUX0lPUzo6aW4pOwotICAgICAgICB9Ci0gICAgICAgIGlmICh3aGljaCA9PSBORE5CT09TVF9JT1M6Om91dCAmJiAoZmxhZ3NfICYgZl9vdXRwdXRfY2xvc2VkKSA9PSAwKSB7Ci0gICAgICAgICAgICBmbGFnc18gfD0gZl9vdXRwdXRfY2xvc2VkOwotICAgICAgICAgICAgZGV0YWlsOjpleGVjdXRlX2FsbCgKLSAgICAgICAgICAgICAgICBkZXRhaWw6OmZsdXNoX2J1ZmZlcihidWZfLnNlY29uZCgpLCBkZXYoKSwgY2FuX3dyaXRlOjp2YWx1ZSksCi0gICAgICAgICAgICAgICAgZGV0YWlsOjpjYWxsX2Nsb3NlKGRldigpLCBORE5CT09TVF9JT1M6Om91dCksCi0gICAgICAgICAgICAgICAgZGV0YWlsOjpjYWxsX3Jlc2V0KGRldl8pLAotICAgICAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9yZXNldChidWZfLmZpcnN0KCkpLAotICAgICAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9yZXNldChidWZfLnNlY29uZCgpKQotICAgICAgICAgICAgKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGJvb2wgaXNfb3BlbigpIGNvbnN0IHsgcmV0dXJuIChmbGFnc18gJiBmX29wZW4pICE9IDA7fQotCi0gICAgZGV2aWNlX3R5cGUmIGRldigpIHsgcmV0dXJuICoqZGV2XzsgfQotCi0gICAgZW51bSBmbGFnX3R5cGUgewotICAgICAgICBmX29wZW4gICAgICAgICAgICAgPSAxLAotICAgICAgICBmX2lucHV0X2Nsb3NlZCAgICAgPSBmX29wZW4gPDwgMSwKLSAgICAgICAgZl9vdXRwdXRfY2xvc2VkICAgID0gZl9pbnB1dF9jbG9zZWQgPDwgMQotICAgIH07Ci0KLSAgICBjb2RlY3Z0X2hvbGRlcjxDb2RlY3Z0PiAgY3Z0XzsKLSAgICBzdG9yYWdlX3R5cGUgICAgICAgICAgICAgZGV2XzsKLSAgICBkb3VibGVfb2JqZWN0PAotICAgICAgICBidWZmZXJfdHlwZSwgCi0gICAgICAgIGlzX2RvdWJsZQotICAgID4gICAgICAgICAgICAgICAgICAgICAgICBidWZfOwotICAgIGludCAgICAgICAgICAgICAgICAgICAgICBmbGFnc187Ci19OwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi0vLy0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBjb252ZXJ0ZXItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19DT05WRVJURVJfUEFSQU1TKCkgLCBpbnQgYnVmZmVyX3NpemUgPSAtMQotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQ09OVkVSVEVSX0FSR1MoKSAsIGJ1ZmZlcl9zaXplCi0KLXRlbXBsYXRlPHR5cGVuYW1lIERldmljZSwgdHlwZW5hbWUgQ29kZWN2dCwgdHlwZW5hbWUgQWxsb2M+Ci1zdHJ1Y3QgY29kZV9jb252ZXJ0ZXJfYmFzZSB7Ci0gICAgdHlwZWRlZiBkZXRhaWw6OmNvZGVfY29udmVydGVyX2ltcGw8Ci0gICAgICAgICAgICAgICAgRGV2aWNlLCBDb2RlY3Z0LCBBbGxvYwotICAgICAgICAgICAgPiBpbXBsX3R5cGU7Ci0gICAgY29kZV9jb252ZXJ0ZXJfYmFzZSgpIDogcGltcGxfKG5ldyBpbXBsX3R5cGUpIHsgfQotICAgIHNoYXJlZF9wdHI8aW1wbF90eXBlPiBwaW1wbF87Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRGV2aWNlLCAKLSAgICAgICAgICB0eXBlbmFtZSBDb2RlY3Z0ID0gZGV0YWlsOjpkZWZhdWx0X2NvZGVjdnQsIAotICAgICAgICAgIHR5cGVuYW1lIEFsbG9jID0gc3RkOjphbGxvY2F0b3I8Y2hhcj4gPgotY2xhc3MgY29kZV9jb252ZXJ0ZXIgCi0gICAgOiBwcm90ZWN0ZWQgY29kZV9jb252ZXJ0ZXJfYmFzZTxEZXZpY2UsIENvZGVjdnQsIEFsbG9jPgotewotcHJpdmF0ZToKLSAgICB0eXBlZGVmIGRldGFpbDo6Y29kZV9jb252ZXJ0ZXJfaW1wbDwKLSAgICAgICAgICAgICAgICBEZXZpY2UsIENvZGVjdnQsIEFsbG9jCi0gICAgICAgICAgICA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcGxfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfdHlwZTo6ZGV2aWNlX3R5cGUgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsX3R5cGU6OmJ1ZmZlcl90eXBlICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpjb2RlY3Z0X2hvbGRlcjxDb2RlY3Z0Pjo6Y29kZWN2dF90eXBlICBjb2RlY3Z0X3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmNvZGVjdnRfaW50ZXJuPENvZGVjdnQ+Ojp0eXBlICAgICAgICAgIGludGVybl90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpjb2RlY3Z0X2V4dGVybjxDb2RlY3Z0Pjo6dHlwZSAgICAgICAgICBleHRlcm5fdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6Y29kZWN2dF9zdGF0ZTxDb2RlY3Z0Pjo6dHlwZSAgICAgICAgICAgc3RhdGVfdHlwZTsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIGludGVybl90eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcl90eXBlOyAgICAKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkgCi0gICAgICAgIDogaW1wbF90eXBlOjptb2RlLCBkZXZpY2VfdGFnLCBjbG9zYWJsZV90YWcsIGxvY2FsaXphYmxlX3RhZwotICAgICAgICB7IH07Ci0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoCi0gICAgICAgIGlzX3NhbWU8Ci0gICAgICAgICAgICBleHRlcm5fdHlwZSwgCi0gICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGNoYXJfdHlwZV9vZjxEZXZpY2U+Ojp0eXBlCi0gICAgICAgID46OnZhbHVlCi0gICAgKSk7Ci1wdWJsaWM6Ci0gICAgY29kZV9jb252ZXJ0ZXIoKSB7IH0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA8IDMpCi0gICAgY29kZV9jb252ZXJ0ZXIoY29kZV9jb252ZXJ0ZXImIHJocykgCi0gICAgICAgIDogY29kZV9jb252ZXJ0ZXJfYmFzZTxEZXZpY2UsIENvZGVjdnQsIEFsbG9jPihyaHMpCi0gICAgICAgIHsgfQotICAgIGNvZGVfY29udmVydGVyKGNvbnN0IGNvZGVfY29udmVydGVyJiByaHMpIAotICAgICAgICA6IGNvZGVfY29udmVydGVyX2Jhc2U8RGV2aWNlLCBDb2RlY3Z0LCBBbGxvYz4ocmhzKQotICAgICAgICB7IH0KLSNlbmRpZgotICAgIE5ETkJPT1NUX0lPU1RSRUFNU19GT1JXQVJEKCBjb2RlX2NvbnZlcnRlciwgb3Blbl9pbXBsLCBEZXZpY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19DT05WRVJURVJfUEFSQU1TLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0NPTlZFUlRFUl9BUkdTICkKLQotICAgICAgICAvLyBmc3RyZWFtLWxpa2UgaW50ZXJmYWNlLgotCi0gICAgYm9vbCBpc19vcGVuKCkgY29uc3QgeyByZXR1cm4gdGhpcy0+cGltcGxfLT5pc19vcGVuKCk7IH0KLSAgICB2b2lkIGNsb3NlKE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2ggPSBORE5CT09TVF9JT1M6OmluIHwgTkROQk9PU1RfSU9TOjpvdXQgKQotICAgIHsgaW1wbCgpLmNsb3NlKHdoaWNoKTsgfQotCi0gICAgICAgIC8vIERldmljZSBpbnRlcmZhY2UuCi0KLSAgICBzdGQ6OnN0cmVhbXNpemUgcmVhZChjaGFyX3R5cGUqLCBzdGQ6OnN0cmVhbXNpemUpOwotICAgIHN0ZDo6c3RyZWFtc2l6ZSB3cml0ZShjb25zdCBjaGFyX3R5cGUqLCBzdGQ6OnN0cmVhbXNpemUpOwotICAgIHZvaWQgaW1idWUoY29uc3Qgc3RkOjpsb2NhbGUmIGxvYykgeyBpbXBsKCkuY3Z0Xy5pbWJ1ZShsb2MpOyB9Ci0KLSAgICAgICAgLy8gRGlyZWN0IGRldmljZSBhY2Nlc3MuCi0KLSAgICBEZXZpY2UmIG9wZXJhdG9yKigpIHsgcmV0dXJuIGRldGFpbDo6dW53cmFwX2RpcmVjdChkZXYoKSk7IH0KLSAgICBEZXZpY2UqIG9wZXJhdG9yLT4oKSB7IHJldHVybiAmZGV0YWlsOjp1bndyYXBfZGlyZWN0KGRldigpKTsgfQotcHJpdmF0ZToKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiAvLyBVc2VkIGZvciBmb3J3YXJkaW5nLgotICAgIHZvaWQgb3Blbl9pbXBsKGNvbnN0IFQmIHQgTkROQk9PU1RfSU9TVFJFQU1TX0NPTlZFUlRFUl9QQVJBTVMoKSkgCi0gICAgeyAKLSAgICAgICAgaW1wbCgpLm9wZW4odCBORE5CT09TVF9JT1NUUkVBTVNfQ09OVkVSVEVSX0FSR1MoKSk7IAotICAgIH0KLQotICAgIGNvbnN0IGNvZGVjdnRfdHlwZSYgY3Z0KCkgeyByZXR1cm4gaW1wbCgpLmN2dF8uZ2V0KCk7IH0KLSAgICBkZXZpY2VfdHlwZSYgZGV2KCkgeyByZXR1cm4gaW1wbCgpLmRldigpOyB9Ci0gICAgYnVmZmVyX3R5cGUmIGluKCkgeyByZXR1cm4gaW1wbCgpLmJ1Zl8uZmlyc3QoKTsgfQotICAgIGJ1ZmZlcl90eXBlJiBvdXQoKSB7IHJldHVybiBpbXBsKCkuYnVmXy5zZWNvbmQoKTsgfQotICAgIGltcGxfdHlwZSYgaW1wbCgpIHsgcmV0dXJuICp0aGlzLT5waW1wbF87IH0KLX07Ci0KLS8vLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiBjb252ZXJ0ZXItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vIEltcGxlbWVudGF0aW9uIG5vdGU6IGlmIGVuZCBvZiBzdHJlYW0gY29udGFpbnMgYSBwYXJ0aWFsIGNoYXJhY3RlciwKLS8vIGl0IGlzIGlnbm9yZWQuCi10ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2UsIHR5cGVuYW1lIENvZGV2dCwgdHlwZW5hbWUgQWxsb2M+Ci1zdGQ6OnN0cmVhbXNpemUgY29kZV9jb252ZXJ0ZXI8RGV2aWNlLCBDb2RldnQsIEFsbG9jPjo6cmVhZAotICAgIChjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotewotICAgIGNvbnN0IGV4dGVybl90eXBlKiAgIG5leHQ7ICAgICAgICAvLyBOZXh0IGV4dGVybmFsIGNoYXIuCi0gICAgaW50ZXJuX3R5cGUqICAgICAgICAgbmludDsgICAgICAgIC8vIE5leHQgaW50ZXJuYWwgY2hhci4KLSAgICBzdGQ6OnN0cmVhbXNpemUgICAgICB0b3RhbCA9IDA7ICAgLy8gQ2hhcmFjdGVycyByZWFkLgotICAgIGludCAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IGlvc3RyZWFtczo6Y2hhcl90cmFpdHM8Y2hhcj46Omdvb2QoKTsKLSAgICBib29sICAgICAgICAgICAgICAgICBwYXJ0aWFsID0gZmFsc2U7Ci0gICAgYnVmZmVyX3R5cGUmICAgICAgICAgYnVmID0gaW4oKTsKLQotICAgIGRvIHsKLQotICAgICAgICAvLyBGaWxsIGJ1ZmZlci4KLSAgICAgICAgaWYgKGJ1Zi5wdHIoKSA9PSBidWYuZXB0cigpIHx8IHBhcnRpYWwpIHsKLSAgICAgICAgICAgIHN0YXR1cyA9IGJ1Zi5maWxsKGRldigpKTsKLSAgICAgICAgICAgIGlmIChidWYucHRyKCkgPT0gYnVmLmVwdHIoKSkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIHBhcnRpYWwgPSBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIENvbnZlcnQuCi0gICAgICAgIHN0ZDo6Y29kZWN2dF9iYXNlOjpyZXN1bHQgcmVzdWx0ID0KLSAgICAgICAgICAgIGN2dCgpLmluKCBidWYuc3RhdGUoKSwKLSAgICAgICAgICAgICAgICAgICAgICBidWYucHRyKCksIGJ1Zi5lcHRyKCksIG5leHQsCi0gICAgICAgICAgICAgICAgICAgICAgcyArIHRvdGFsLCBzICsgbiwgbmludCApOwotICAgICAgICBidWYucHRyKCkgKz0gbmV4dCAtIGJ1Zi5wdHIoKTsKLSAgICAgICAgdG90YWwgPSBzdGF0aWNfY2FzdDxzdGQ6OnN0cmVhbXNpemU+KG5pbnQgLSBzKTsKLQotICAgICAgICBzd2l0Y2ggKHJlc3VsdCkgewotICAgICAgICBjYXNlIHN0ZDo6Y29kZWN2dF9iYXNlOjpwYXJ0aWFsOgotICAgICAgICAgICAgcGFydGlhbCA9IHRydWU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBzdGQ6OmNvZGVjdnRfYmFzZTo6b2s6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBzdGQ6OmNvZGVjdnRfYmFzZTo6bm9jb252OgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBhbXQgPSAKLSAgICAgICAgICAgICAgICAgICAgc3RkOjptaW48c3RkOjpzdHJlYW1zaXplPihuZXh0IC0gYnVmLnB0cigpLCBuIC0gdG90YWwpOwotICAgICAgICAgICAgICAgIGRldGFpbDo6c3RybmNweV9pZl9zYW1lKHMgKyB0b3RhbCwgYnVmLnB0cigpLCBhbXQpOwotICAgICAgICAgICAgICAgIHRvdGFsICs9IGFtdDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIHN0ZDo6Y29kZWN2dF9iYXNlOjplcnJvcjoKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJ1Zi5zdGF0ZSgpID0gc3RhdGVfdHlwZSgpOwotICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihjb2RlX2NvbnZlcnNpb25fZXJyb3IoKSk7Ci0gICAgICAgIH0KLQotICAgIH0gd2hpbGUgKHRvdGFsIDwgbiAmJiBzdGF0dXMgIT0gRU9GICYmIHN0YXR1cyAhPSBXT1VMRF9CTE9DSyk7Ci0KLSAgICByZXR1cm4gdG90YWwgPT0gMCAmJiBzdGF0dXMgPT0gRU9GID8gLTEgOiB0b3RhbDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlLCB0eXBlbmFtZSBDb2RldnQsIHR5cGVuYW1lIEFsbG9jPgotc3RkOjpzdHJlYW1zaXplIGNvZGVfY29udmVydGVyPERldmljZSwgQ29kZXZ0LCBBbGxvYz46OndyaXRlCi0gICAgKGNvbnN0IGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi17Ci0gICAgYnVmZmVyX3R5cGUmICAgICAgICBidWYgPSBvdXQoKTsKLSAgICBleHRlcm5fdHlwZSogICAgICAgIG5leHQ7ICAgICAgICAgICAgICAvLyBOZXh0IGV4dGVybmFsIGNoYXIuCi0gICAgY29uc3QgaW50ZXJuX3R5cGUqICBuaW50OyAgICAgICAgICAgICAgLy8gTmV4dCBpbnRlcm5hbCBjaGFyLgotICAgIHN0ZDo6c3RyZWFtc2l6ZSAgICAgdG90YWwgPSAwOyAgICAgICAgIC8vIENoYXJhY3RlcnMgd3JpdHRlbi4KLSAgICBib29sICAgICAgICAgICAgICAgIHBhcnRpYWwgPSBmYWxzZTsKLQotICAgIHdoaWxlICh0b3RhbCA8IG4pIHsKLQotICAgICAgICAvLyBFbXB0eSBidWZmZXIuCi0gICAgICAgIGlmIChidWYuZXB0cigpID09IGJ1Zi5lbmQoKSB8fCBwYXJ0aWFsKSB7Ci0gICAgICAgICAgICBpZiAoIWJ1Zi5mbHVzaChkZXYoKSkpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBwYXJ0aWFsID0gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAKLSAgICAgICAgLy8gQ29udmVydC4KLSAgICAgICAgc3RkOjpjb2RlY3Z0X2Jhc2U6OnJlc3VsdCByZXN1bHQgPQotICAgICAgICAgICAgY3Z0KCkub3V0KCBidWYuc3RhdGUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgcyArIHRvdGFsLCBzICsgbiwgbmludCwKLSAgICAgICAgICAgICAgICAgICAgICAgYnVmLmVwdHIoKSwgYnVmLmVuZCgpLCBuZXh0ICk7Ci0gICAgICAgIGludCBwcm9ncmVzcyA9IChpbnQpIChuZXh0IC0gYnVmLmVwdHIoKSk7Ci0gICAgICAgIGJ1Zi5lcHRyKCkgKz0gcHJvZ3Jlc3M7Ci0KLSAgICAgICAgc3dpdGNoIChyZXN1bHQpIHsKLSAgICAgICAgY2FzZSBzdGQ6OmNvZGVjdnRfYmFzZTo6cGFydGlhbDoKLSAgICAgICAgICAgIHBhcnRpYWwgPSB0cnVlOwotICAgICAgICAgICAgTkROQk9PU1RfRkFMTFRIUk9VR0g7Ci0gICAgICAgIGNhc2Ugc3RkOjpjb2RlY3Z0X2Jhc2U6Om9rOgotICAgICAgICAgICAgdG90YWwgPSBzdGF0aWNfY2FzdDxzdGQ6OnN0cmVhbXNpemU+KG5pbnQgLSBzKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIHN0ZDo6Y29kZWN2dF9iYXNlOjpub2NvbnY6Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplIGFtdCA9IAotICAgICAgICAgICAgICAgICAgICBzdGQ6Om1pbjxzdGQ6OnN0cmVhbXNpemU+KCBuaW50IC0gdG90YWwgLSBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmLmVuZCgpIC0gYnVmLmVwdHIoKSApOwotICAgICAgICAgICAgICAgIGRldGFpbDo6c3RybmNweV9pZl9zYW1lKGJ1Zi5lcHRyKCksIHMgKyB0b3RhbCwgYW10KTsKLSAgICAgICAgICAgICAgICB0b3RhbCArPSBhbXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBzdGQ6OmNvZGVjdnRfYmFzZTo6ZXJyb3I6Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBidWYuc3RhdGUoKSA9IHN0YXRlX3R5cGUoKTsKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oY29kZV9jb252ZXJzaW9uX2Vycm9yKCkpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiB0b3RhbDsKLX0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9lbmFibGVfd2FybmluZ3MuaHBwPiAvLyBCb3JsYW5kIDUueAotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfQ09ERV9DT05WRVJURVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jb21iaW5lLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2NvbWJpbmUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZmZjZjYzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2NvbWJpbmUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjYwICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBUbyBkbzogYWRkIHN1cHBvcnQgZm9yIHJhbmRvbS1hY2Nlc3MuCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0NPTUJJTkVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19DT01CSU5FX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgIAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gLy8gTk9fU1REX0xPQ0FMRSwgREVEVUNFRF9UWVBFTkFNRS4KLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0xPQ0FMRQotIyBpbmNsdWRlIDxsb2NhbGU+Ci0jZW5kaWYKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvcy5ocHA+ICAgCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC93cmFwX3Vud3JhcC5ocHA+ICAgICAgIAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy90cmFpdHMuaHBwPiAgICAgICAgIAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9vcGVyYXRpb25zLmhwcD4gICAgICAgIAotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+ICAgIAotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPiAgCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29udmVydGlibGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPiAKLQotLy8gTXVzdCBjb21lIGxhc3QuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZGlzYWJsZV93YXJuaW5ncy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8KLS8vIFRlbXBsYXRlIG5hbWU6IGNvbWJpbmVkX2RldmljZS4KLS8vIERlc2NyaXB0aW9uOiBNb2RlbCBvZiBEZXZpY2UgZGVmaW5lZCBpbiB0ZXJtcyBvZiBhIFNvdXJjZS9TaW5rIHBhaXIuCi0vLyBUZW1wbGF0ZSBwYXJhbWV0ZXJzOgotLy8gICAgICBTb3VyY2UgLSBBIG1vZGVsIG9mIFNvdXJjZSwgd2l0aCB0aGUgc2FtZSBjaGFyX3R5cGUgYW5kIHRyYWl0c190eXBlCi0vLyAgICAgICAgICBhcyBTaW5rLgotLy8gICAgICBTaW5rIC0gQSBtb2RlbCBvZiBTaW5rLCB3aXRoIHRoZSBzYW1lIGNoYXJfdHlwZSBhbmQgdHJhaXRzX3R5cGUKLS8vICAgICAgICAgIGFzIFNvdXJjZS4KLS8vCi10ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2UsIHR5cGVuYW1lIFNpbms+Ci1jbGFzcyBjb21iaW5lZF9kZXZpY2UgewotcHJpdmF0ZToKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNhdGVnb3J5X29mPFNvdXJjZT46OnR5cGUgIGluX2NhdGVnb3J5OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2F0ZWdvcnlfb2Y8U2luaz46OnR5cGUgICAgb3V0X2NhdGVnb3J5OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhcl90eXBlX29mPFNpbms+Ojp0eXBlICAgc2lua19jaGFyX3R5cGU7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8U291cmNlPjo6dHlwZSBjaGFyX3R5cGU7Ci0gICAgc3RydWN0IGNhdGVnb3J5Ci0gICAgICAgIDogYmlkaXJlY3Rpb25hbCwgCi0gICAgICAgICAgZGV2aWNlX3RhZywgCi0gICAgICAgICAgY2xvc2FibGVfdGFnLCAKLSAgICAgICAgICBsb2NhbGl6YWJsZV90YWcKLSAgICAgICAgeyB9OwotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoaXNfZGV2aWNlPFNvdXJjZT46OnZhbHVlKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKGlzX2RldmljZTxTaW5rPjo6dmFsdWUpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKGlzX2NvbnZlcnRpYmxlPGluX2NhdGVnb3J5LCBpbnB1dD46OnZhbHVlKSk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoaXNfY29udmVydGlibGU8b3V0X2NhdGVnb3J5LCBvdXRwdXQ+Ojp2YWx1ZSkpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKGlzX3NhbWU8Y2hhcl90eXBlLCBzaW5rX2NoYXJfdHlwZT46OnZhbHVlKSk7Ci0gICAgY29tYmluZWRfZGV2aWNlKGNvbnN0IFNvdXJjZSYgc3JjLCBjb25zdCBTaW5rJiBzbmspOwotICAgIHN0ZDo6c3RyZWFtc2l6ZSByZWFkKGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pOwotICAgIHN0ZDo6c3RyZWFtc2l6ZSB3cml0ZShjb25zdCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKTsKLSAgICB2b2lkIGNsb3NlKE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUpOwotICAgICNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0xPQ0FMRQotICAgICAgICB2b2lkIGltYnVlKGNvbnN0IHN0ZDo6bG9jYWxlJiBsb2MpOwotICAgICNlbmRpZgotcHJpdmF0ZToKLSAgICBTb3VyY2UgIHNyY187Ci0gICAgU2luayAgICBzaW5rXzsKLX07Ci0KLS8vCi0vLyBUZW1wbGF0ZSBuYW1lOiBjb21iaW5lZF9maWx0ZXIuCi0vLyBEZXNjcmlwdGlvbjogTW9kZWwgb2YgRGV2aWNlIGRlZmluZWQgaW4gdGVybXMgb2YgYSBTb3VyY2UvU2luayBwYWlyLgotLy8gVGVtcGxhdGUgcGFyYW1ldGVyczoKLS8vICAgICAgSW5wdXRGaWx0ZXIgLSBBIG1vZGVsIG9mIElucHV0RmlsdGVyLCB3aXRoIHRoZSBzYW1lIGNoYXJfdHlwZSBhcyAKLS8vICAgICAgICAgIE91dHB1dEZpbHRlci4KLS8vICAgICAgT3V0cHV0RmlsdGVyIC0gQSBtb2RlbCBvZiBPdXRwdXRGaWx0ZXIsIHdpdGggdGhlIHNhbWUgY2hhcl90eXBlIGFzIAotLy8gICAgICAgICAgSW5wdXRGaWx0ZXIuCi0vLwotdGVtcGxhdGU8dHlwZW5hbWUgSW5wdXRGaWx0ZXIsIHR5cGVuYW1lIE91dHB1dEZpbHRlcj4KLWNsYXNzIGNvbWJpbmVkX2ZpbHRlciB7Ci1wcml2YXRlOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2F0ZWdvcnlfb2Y8SW5wdXRGaWx0ZXI+Ojp0eXBlICAgIGluX2NhdGVnb3J5OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2F0ZWdvcnlfb2Y8T3V0cHV0RmlsdGVyPjo6dHlwZSAgIG91dF9jYXRlZ29yeTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxPdXRwdXRGaWx0ZXI+Ojp0eXBlICBvdXRwdXRfY2hhcl90eXBlOwotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhcl90eXBlX29mPElucHV0RmlsdGVyPjo6dHlwZSAgIGNoYXJfdHlwZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkgCi0gICAgICAgIDogbXVsdGljaGFyX2JpZGlyZWN0aW9uYWxfZmlsdGVyX3RhZywKLSAgICAgICAgICBjbG9zYWJsZV90YWcsIAotICAgICAgICAgIGxvY2FsaXphYmxlX3RhZwotICAgICAgICB7IH07Ci0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChpc19maWx0ZXI8SW5wdXRGaWx0ZXI+Ojp2YWx1ZSk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChpc19maWx0ZXI8T3V0cHV0RmlsdGVyPjo6dmFsdWUpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKGlzX2NvbnZlcnRpYmxlPGluX2NhdGVnb3J5LCBpbnB1dD46OnZhbHVlKSk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoaXNfY29udmVydGlibGU8b3V0X2NhdGVnb3J5LCBvdXRwdXQ+Ojp2YWx1ZSkpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKGlzX3NhbWU8Y2hhcl90eXBlLCBvdXRwdXRfY2hhcl90eXBlPjo6dmFsdWUpKTsKLSAgICBjb21iaW5lZF9maWx0ZXIoY29uc3QgSW5wdXRGaWx0ZXImIGluLCBjb25zdCBPdXRwdXRGaWx0ZXImIG91dCk7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2U+Ci0gICAgc3RkOjpzdHJlYW1zaXplIHJlYWQoU291cmNlJiBzcmMsIGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgeyByZXR1cm4gbmRuYm9vc3Q6Omlvc3RyZWFtczo6cmVhZChpbl8sIHNyYywgcywgbik7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpbms+Ci0gICAgc3RkOjpzdHJlYW1zaXplIHdyaXRlKFNpbmsmIHNuaywgY29uc3QgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7IHJldHVybiBuZG5ib29zdDo6aW9zdHJlYW1zOjp3cml0ZShvdXRfLCBzbmssIHMsIG4pOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgIHZvaWQgY2xvc2UoU2luayYgc25rLCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKQotICAgIHsKLSAgICAgICAgaWYgKHdoaWNoID09IE5ETkJPT1NUX0lPUzo6aW4pIHsKLSAgICAgICAgICAgIGlmIChpc19jb252ZXJ0aWJsZTxpbl9jYXRlZ29yeSwgZHVhbF91c2U+Ojp2YWx1ZSkgewotICAgICAgICAgICAgICAgIGlvc3RyZWFtczo6Y2xvc2UoaW5fLCBzbmssIE5ETkJPT1NUX0lPUzo6aW4pOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBkZXRhaWw6OmNsb3NlX2FsbChpbl8sIHNuayk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHdoaWNoID09IE5ETkJPT1NUX0lPUzo6b3V0KSB7Ci0gICAgICAgICAgICBpZiAoaXNfY29udmVydGlibGU8b3V0X2NhdGVnb3J5LCBkdWFsX3VzZT46OnZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgaW9zdHJlYW1zOjpjbG9zZShvdXRfLCBzbmssIE5ETkJPT1NUX0lPUzo6b3V0KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZGV0YWlsOjpjbG9zZV9hbGwob3V0Xywgc25rKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICAjaWZuZGVmIE5ETkJPT1NUX05PX1NURF9MT0NBTEUKLSAgICAgICAgdm9pZCBpbWJ1ZShjb25zdCBzdGQ6OmxvY2FsZSYgbG9jKTsKLSAgICAjZW5kaWYKLXByaXZhdGU6Ci0gICAgSW5wdXRGaWx0ZXIgICBpbl87Ci0gICAgT3V0cHV0RmlsdGVyICBvdXRfOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgSW4sIHR5cGVuYW1lIE91dD4KLXN0cnVjdCBjb21iaW5hdGlvbl90cmFpdHMgCi0gICAgOiBtcGw6OmlmXzwKLSAgICAgICAgICBpc19kZXZpY2U8SW4+LAotICAgICAgICAgIGNvbWJpbmVkX2RldmljZTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgd3JhcHBlZF90eXBlPEluPjo6dHlwZSwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgd3JhcHBlZF90eXBlPE91dD46OnR5cGUKLSAgICAgICAgICA+LAotICAgICAgICAgIGNvbWJpbmVkX2ZpbHRlcjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgd3JhcHBlZF90eXBlPEluPjo6dHlwZSwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgd3JhcHBlZF90eXBlPE91dD46OnR5cGUKLSAgICAgICAgICA+Ci0gICAgICA+Ci0gICAgeyB9OwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBJbiwgdHlwZW5hbWUgT3V0Pgotc3RydWN0IGNvbWJpbmF0aW9uIDogZGV0YWlsOjpjb21iaW5hdGlvbl90cmFpdHM8SW4sIE91dD46OnR5cGUgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpjb21iaW5hdGlvbl90cmFpdHM8SW4sIE91dD46OnR5cGUgIGJhc2VfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6d3JhcHBlZF90eXBlPEluPjo6dHlwZSAgICAgICAgICBpbl90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjp3cmFwcGVkX3R5cGU8T3V0Pjo6dHlwZSAgICAgICAgIG91dF90eXBlOwotICAgIGNvbWJpbmF0aW9uKGNvbnN0IGluX3R5cGUmIGluLCBjb25zdCBvdXRfdHlwZSYgb3V0KQotICAgICAgICA6IGJhc2VfdHlwZShpbiwgb3V0KSB7IH0KLX07Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyBXb3JrYXJvdW5kIGZvciBWQzYgRVRJIGJ1Zy4KLXRlbXBsYXRlPHR5cGVuYW1lIEluLCB0eXBlbmFtZSBPdXQ+Ci1zdHJ1Y3QgY29tYmluZV90cmFpdHMgewotICAgIHR5cGVkZWYgY29tYmluYXRpb248Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBkZXRhaWw6OnVud3JhcHBlZF90eXBlPEluPjo6dHlwZSwgCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBkZXRhaWw6OnVud3JhcHBlZF90eXBlPE91dD46OnR5cGUKLSAgICAgICAgICAgID4gdHlwZTsKLX07Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLS8vCi0vLyBUZW1wbGF0ZSBuYW1lOiBjb21iaW5lLgotLy8gRGVzY3JpcHRpb246IFRha2VzIGEgU291cmNlL1NpbmsgcGFpciBvciBJbnB1dEZpbHRlci9PdXRwdXRGaWx0ZXIgcGFpciBhbmQKLS8vICAgICAgcmV0dXJucyBhIFNvdXJjZSBvciBGaWx0ZXIgd2hpY2ggcGVyZm9ybXMgaW5wdXQgdXNpbmcgdGhlIGZpcnN0IG1lbWJlcgotLy8gICAgICBvZiB0aGUgcGFpciBhbmQgb3V0cHV0IHVzaW5nIHRoZSBzZWNvbmQgbWVtYmVyIG9mIHRoZSBwYWlyLgotLy8gVGVtcGxhdGUgcGFyYW1ldGVyczoKLS8vICAgICAgSW4gLSBBIG1vZGVsIG9mIFNvdXJjZSBvciBJbnB1dEZpbHRlciwgd2l0aCB0aGUgc2FtZSBjaGFyX3R5cGUgYXMgT3V0LgotLy8gICAgICBPdXQgLSBBIG1vZGVsIG9mIFNpbmsgb3IgT3V0cHV0RmlsdGVyLCB3aXRoIHRoZSBzYW1lIGNoYXJfdHlwZSBhcyBJbi4KLS8vCi10ZW1wbGF0ZTx0eXBlbmFtZSBJbiwgdHlwZW5hbWUgT3V0PgotdHlwZW5hbWUgZGV0YWlsOjpjb21iaW5lX3RyYWl0czxJbiwgT3V0Pjo6dHlwZQotY29tYmluZShjb25zdCBJbiYgaW4sIGNvbnN0IE91dCYgb3V0KSAKLXsgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmNvbWJpbmVfdHJhaXRzPEluLCBPdXQ+Ojp0eXBlIHJldHVybl90eXBlOwotICAgIHJldHVybiByZXR1cm5fdHlwZShpbiwgb3V0KTsgCi19Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLy0tLS0tLS0tLS0tLS0tSW1wbGVtZW50YXRpb24gb2YgY29tYmluZWRfZGV2aWNlLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2UsIHR5cGVuYW1lIFNpbms+Ci1pbmxpbmUgY29tYmluZWRfZGV2aWNlPFNvdXJjZSwgU2luaz46OmNvbWJpbmVkX2RldmljZQotICAgIChjb25zdCBTb3VyY2UmIHNyYywgY29uc3QgU2luayYgc25rKQotICAgIDogc3JjXyhzcmMpLCBzaW5rXyhzbmspIHsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2UsIHR5cGVuYW1lIFNpbms+Ci1pbmxpbmUgc3RkOjpzdHJlYW1zaXplCi1jb21iaW5lZF9kZXZpY2U8U291cmNlLCBTaW5rPjo6cmVhZChjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQoteyByZXR1cm4gaW9zdHJlYW1zOjpyZWFkKHNyY18sIHMsIG4pOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZSwgdHlwZW5hbWUgU2luaz4KLWlubGluZSBzdGQ6OnN0cmVhbXNpemUKLWNvbWJpbmVkX2RldmljZTxTb3VyY2UsIFNpbms+Ojp3cml0ZShjb25zdCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQoteyByZXR1cm4gaW9zdHJlYW1zOjp3cml0ZShzaW5rXywgcywgbik7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlLCB0eXBlbmFtZSBTaW5rPgotaW5saW5lIHZvaWQKLWNvbWJpbmVkX2RldmljZTxTb3VyY2UsIFNpbms+OjpjbG9zZShORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKQoteyAKLSAgICBpZiAod2hpY2ggPT0gTkROQk9PU1RfSU9TOjppbikKLSAgICAgICAgZGV0YWlsOjpjbG9zZV9hbGwoc3JjXyk7IAotICAgIGlmICh3aGljaCA9PSBORE5CT09TVF9JT1M6Om91dCkKLSAgICAgICAgZGV0YWlsOjpjbG9zZV9hbGwoc2lua18pOyAKLX0KLQotI2lmbmRlZiBORE5CT09TVF9OT19TVERfTE9DQUxFCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlLCB0eXBlbmFtZSBTaW5rPgotICAgIHZvaWQgY29tYmluZWRfZGV2aWNlPFNvdXJjZSwgU2luaz46OmltYnVlKGNvbnN0IHN0ZDo6bG9jYWxlJiBsb2MpCi0gICAgewotICAgICAgICBpb3N0cmVhbXM6OmltYnVlKHNyY18sIGxvYyk7Ci0gICAgICAgIGlvc3RyZWFtczo6aW1idWUoc2lua18sIGxvYyk7Ci0gICAgfQotI2VuZGlmCi0KLS8vLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiBmaWx0ZXJfcGFpci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIElucHV0RmlsdGVyLCB0eXBlbmFtZSBPdXRwdXRGaWx0ZXI+Ci1pbmxpbmUgY29tYmluZWRfZmlsdGVyPElucHV0RmlsdGVyLCBPdXRwdXRGaWx0ZXI+Ojpjb21iaW5lZF9maWx0ZXIKLSAgICAoY29uc3QgSW5wdXRGaWx0ZXImIGluLCBjb25zdCBPdXRwdXRGaWx0ZXImIG91dCkgOiBpbl8oaW4pLCBvdXRfKG91dCkKLSAgICB7IH0KLQotI2lmbmRlZiBORE5CT09TVF9OT19TVERfTE9DQUxFCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgSW5wdXRGaWx0ZXIsIHR5cGVuYW1lIE91dHB1dEZpbHRlcj4KLSAgICB2b2lkIGNvbWJpbmVkX2ZpbHRlcjxJbnB1dEZpbHRlciwgT3V0cHV0RmlsdGVyPjo6aW1idWUKLSAgICAgICAgKGNvbnN0IHN0ZDo6bG9jYWxlJiBsb2MpCi0gICAgewotICAgICAgICBpb3N0cmVhbXM6OmltYnVlKGluXywgbG9jKTsKLSAgICAgICAgaW9zdHJlYW1zOjppbWJ1ZShvdXRfLCBsb2MpOwotICAgIH0KLSNlbmRpZgotCi0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0NPTUJJTkVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jb21wb3NlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2NvbXBvc2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZDU1ZGRjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2NvbXBvc2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDk0ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDA1LTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBOb3RlOiBiaWRpcmVjdGlvbmFsIHN0cmVhbXMgYXJlIG5vdCBzdXBwb3J0ZWQuCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0NPTVBPU0VfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19DT01QT1NFX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPGFsZ29yaXRobT4gICAgICAgICAgLy8gbWluLgotI2luY2x1ZGUgPHV0aWxpdHk+ICAgICAgICAgICAgLy8gcGFpci4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgIC8vIERFRFVDRURfVFlQRU5BTUUuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NhdGVnb3JpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRhcHRlci9kaXJlY3RfYWRhcHRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jYWxsX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9lbmFibGVfaWZfc3RyZWFtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2V4ZWN1dGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZnVuY3Rpb25hbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy90cmFpdHMuaHBwPiAgICAgIC8vIG1vZGVfb2YsIGlzX2RpcmVjdC4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29udmVydGlibGUuaHBwPgotCi0vLyBNdXN0IGNvbWUgbGFzdC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9kaXNhYmxlX3dhcm5pbmdzLmhwcD4gIC8vIE1TVkMuCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEZpcnN0LCAKLSAgICAgICAgICB0eXBlbmFtZSBTZWNvbmQsCi0gICAgICAgICAgdHlwZW5hbWUgRmlyc3RNb2RlID0gCi0gICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbW9kZV9vZjxGaXJzdD46OnR5cGUsCi0gICAgICAgICAgdHlwZW5hbWUgU2Vjb25kTW9kZSA9IAotICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG1vZGVfb2Y8U2Vjb25kPjo6dHlwZSA+Ci1zdHJ1Y3QgY29tcG9zaXRlX21vZGUKLSAgICA6IHNlbGVjdDwKLSAgICAgICAgICBpc19jb252ZXJ0aWJsZTxTZWNvbmRNb2RlLCBGaXJzdE1vZGU+LCBGaXJzdE1vZGUsCi0gICAgICAgICAgaXNfY29udmVydGlibGU8Rmlyc3RNb2RlLCBTZWNvbmRNb2RlPiwgU2Vjb25kTW9kZSwKLSAgICAgICAgICBpc19jb252ZXJ0aWJsZTxTZWNvbmRNb2RlLCBpbnB1dD4sICAgICBpbnB1dCwKLSAgICAgICAgICBlbHNlXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQKLSAgICAgID4KLSAgICB7IH07Ci0KLS8vCi0vLyBUZW1wbGF0ZSBuYW1lOiBjb21wb3NpdGVfZGV2aWNlLgotLy8gRGVzY3JpcHRpb246IFByb3ZpZGVzIGEgRGV2aWNlIHZpZXcgb2YgYSBGaWx0ZXIsIERldmljZSBwYWlyLgotLy8gVGVtcGxhdGUgcGFyYW1ldGVyczoKLS8vICAgICAgRmlsdGVyIC0gQSBtb2RlbCBvZiBGaWx0ZXIuCi0vLyAgICAgIERldmljZSAtIEFuIGluZGlyZWN0IG1vZGVsIG9mIERldmljZS4KLS8vCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRmlsdGVyLAotICAgICAgICAgIHR5cGVuYW1lIERldmljZSwKLSAgICAgICAgICB0eXBlbmFtZSBNb2RlID0KLSAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBjb21wb3NpdGVfbW9kZTxGaWx0ZXIsIERldmljZT46OnR5cGUgPgotY2xhc3MgY29tcG9zaXRlX2RldmljZSB7Ci1wcml2YXRlOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpwYXJhbV90eXBlPERldmljZT46OnR5cGUgICAgICAgcGFyYW1fdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1vZGVfb2Y8RmlsdGVyPjo6dHlwZSAgICAgICAgICAgICAgICAgIGZpbHRlcl9tb2RlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbW9kZV9vZjxEZXZpY2U+Ojp0eXBlICAgICAgICAgICAgICAgICAgZGV2aWNlX21vZGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgICAgICAgaW9zdHJlYW1zOjpzZWxlY3Q8ICAvLyBEaXNhbWJpZ3VhdGlvbiBmb3IgVHJ1NjQuCi0gICAgICAgICAgICAgICAgaXNfZGlyZWN0PERldmljZT4sICBkaXJlY3RfYWRhcHRlcjxEZXZpY2U+LAotICAgICAgICAgICAgICAgIGlzX3N0ZF9pbzxEZXZpY2U+LCAgRGV2aWNlJiwKLSAgICAgICAgICAgICAgICBlbHNlXywgICAgICAgICAgICAgIERldmljZQotICAgICAgICAgICAgPjo6dHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfdHlwZTsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKGlzX2ZpbHRlcjxGaWx0ZXI+Ojp2YWx1ZSk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChpc19kZXZpY2U8RGV2aWNlPjo6dmFsdWUpOwotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhcl90eXBlX29mPEZpbHRlcj46OnR5cGUgICAgICAgICAgICAgY2hhcl90eXBlOwotICAgIHN0cnVjdCBjYXRlZ29yeQotICAgICAgICA6IE1vZGUsCi0gICAgICAgICAgZGV2aWNlX3RhZywKLSAgICAgICAgICBjbG9zYWJsZV90YWcsCi0gICAgICAgICAgZmx1c2hhYmxlX3RhZywKLSAgICAgICAgICBsb2NhbGl6YWJsZV90YWcsCi0gICAgICAgICAgb3B0aW1hbGx5X2J1ZmZlcmVkX3RhZwotICAgICAgICB7IH07Ci0gICAgY29tcG9zaXRlX2RldmljZShjb25zdCBGaWx0ZXImIGZsdCwgcGFyYW1fdHlwZSBkZXYpOwotICAgIHN0ZDo6c3RyZWFtc2l6ZSByZWFkKGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pOwotICAgIHN0ZDo6c3RyZWFtc2l6ZSB3cml0ZShjb25zdCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKTsKLSAgICBzdGQ6OnN0cmVhbXBvcyBzZWVrKCBzdHJlYW1fb2Zmc2V0IG9mZiwgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoID0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjppbiB8IE5ETkJPT1NUX0lPUzo6b3V0ICk7Ci0KLSAgICB2b2lkIGNsb3NlKCk7Ci0gICAgdm9pZCBjbG9zZShORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKTsKLSAgICBib29sIGZsdXNoKCk7Ci0gICAgc3RkOjpzdHJlYW1zaXplIG9wdGltYWxfYnVmZmVyX3NpemUoKSBjb25zdDsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIExvY2FsZT4gLy8gQXZvaWQgZGVwZW5kZW5jeSBvbiA8bG9jYWxlPgotICAgIHZvaWQgaW1idWUoY29uc3QgTG9jYWxlJiBsb2MpCi0gICAgewotICAgICAgICBpb3N0cmVhbXM6OmltYnVlKGZpbHRlcl8sIGxvYyk7Ci0gICAgICAgIGlvc3RyZWFtczo6aW1idWUoZGV2aWNlXywgbG9jKTsKLSAgICB9Ci0KLSAgICBGaWx0ZXImIGZpcnN0KCkgeyByZXR1cm4gZmlsdGVyXzsgfQotICAgIERldmljZSYgc2Vjb25kKCkgeyByZXR1cm4gZGV2aWNlXzsgfQotcHJpdmF0ZToKLSAgICBGaWx0ZXIgICAgICBmaWx0ZXJfOwotICAgIHZhbHVlX3R5cGUgIGRldmljZV87Ci19OwotCi0vLwotLy8gVGVtcGxhdGUgbmFtZTogY29tcG9zaXRlX2RldmljZS4KLS8vIERlc2NyaXB0aW9uOiBQcm92aWRlcyBhIERldmljZSB2aWV3IG9mIGEgRmlsdGVyLCBEZXZpY2UgcGFpci4KLS8vIFRlbXBsYXRlIHBhcmFtZXRlcnM6Ci0vLyAgICAgIEZpbHRlciAtIEEgbW9kZWwgb2YgRmlsdGVyLgotLy8gICAgICBEZXZpY2UgLSBBbiBpbmRpcmVjdCBtb2RlbCBvZiBEZXZpY2UuCi0vLwotdGVtcGxhdGU8IHR5cGVuYW1lIEZpbHRlcjEsIAotICAgICAgICAgIHR5cGVuYW1lIEZpbHRlcjIsCi0gICAgICAgICAgdHlwZW5hbWUgTW9kZSA9Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgY29tcG9zaXRlX21vZGU8RmlsdGVyMSwgRmlsdGVyMj46OnR5cGUgPgotY2xhc3MgY29tcG9zaXRlX2ZpbHRlciB7Ci1wcml2YXRlOgotICAgIHR5cGVkZWYgcmVmZXJlbmNlX3dyYXBwZXI8RmlsdGVyMj4gICAgICAgICAgIGZpbHRlcl9yZWY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtb2RlX29mPEZpbHRlcjE+Ojp0eXBlICAgICAgZmlyc3RfbW9kZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1vZGVfb2Y8RmlsdGVyMj46OnR5cGUgICAgICBzZWNvbmRfbW9kZTsKLQotICAgIC8vIEEgZHVhbC11c2UgZmlsdGVyIGNhbm5vdCBiZSBjb21wb3NlZCB3aXRoIGEgcmVhZC13cml0ZSBmaWx0ZXIKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKAotICAgICAgICAhKGlzX2NvbnZlcnRpYmxlPGZpcnN0X21vZGUsIGR1YWxfdXNlPjo6dmFsdWUpIHx8Ci0gICAgICAgICEoaXNfY29udmVydGlibGU8c2Vjb25kX21vZGUsIGlucHV0Pjo6dmFsdWUpIHx8Ci0gICAgICAgICEoaXNfY29udmVydGlibGU8c2Vjb25kX21vZGUsIG91dHB1dD46OnZhbHVlKSB8fAotICAgICAgICAgKGlzX2NvbnZlcnRpYmxlPHNlY29uZF9tb2RlLCBkdWFsX3VzZT46OnZhbHVlKQotICAgICk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgKLSAgICAgICAgIShpc19jb252ZXJ0aWJsZTxzZWNvbmRfbW9kZSwgZHVhbF91c2U+Ojp2YWx1ZSkgfHwKLSAgICAgICAgIShpc19jb252ZXJ0aWJsZTxmaXJzdF9tb2RlLCBpbnB1dD46OnZhbHVlKSB8fAotICAgICAgICAhKGlzX2NvbnZlcnRpYmxlPGZpcnN0X21vZGUsIG91dHB1dD46OnZhbHVlKSB8fAotICAgICAgICAgKGlzX2NvbnZlcnRpYmxlPGZpcnN0X21vZGUsIGR1YWxfdXNlPjo6dmFsdWUpCi0gICAgKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKGlzX2ZpbHRlcjxGaWx0ZXIxPjo6dmFsdWUpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoaXNfZmlsdGVyPEZpbHRlcjI+Ojp2YWx1ZSk7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8RmlsdGVyMT46OnR5cGUgIGNoYXJfdHlwZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkKLSAgICAgICAgOiBNb2RlLAotICAgICAgICAgIGZpbHRlcl90YWcsCi0gICAgICAgICAgbXVsdGljaGFyX3RhZywKLSAgICAgICAgICBjbG9zYWJsZV90YWcsCi0gICAgICAgICAgZmx1c2hhYmxlX3RhZywKLSAgICAgICAgICBsb2NhbGl6YWJsZV90YWcsCi0gICAgICAgICAgb3B0aW1hbGx5X2J1ZmZlcmVkX3RhZwotICAgICAgICB7IH07Ci0gICAgY29tcG9zaXRlX2ZpbHRlcihjb25zdCBGaWx0ZXIxJiBmaWx0ZXIxLCBjb25zdCBGaWx0ZXIyJiBmaWx0ZXIyKQotICAgICAgICA6IGZpbHRlcjFfKGZpbHRlcjEpLCBmaWx0ZXIyXyhmaWx0ZXIyKQotICAgICAgICB7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZT4KLSAgICBzdGQ6OnN0cmVhbXNpemUgcmVhZChTb3VyY2UmIHNyYywgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7Ci0gICAgICAgIGNvbXBvc2l0ZV9kZXZpY2U8ZmlsdGVyX3JlZiwgU291cmNlPiBjbXAobmRuYm9vc3Q6OnJlZihmaWx0ZXIyXyksIHNyYyk7Ci0gICAgICAgIHJldHVybiBpb3N0cmVhbXM6OnJlYWQoZmlsdGVyMV8sIGNtcCwgcywgbik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICBzdGQ6OnN0cmVhbXNpemUgd3JpdGUoU2luayYgc25rLCBjb25zdCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsKLSAgICAgICAgY29tcG9zaXRlX2RldmljZTxmaWx0ZXJfcmVmLCBTaW5rPiBjbXAobmRuYm9vc3Q6OnJlZihmaWx0ZXIyXyksIHNuayk7Ci0gICAgICAgIHJldHVybiBpb3N0cmVhbXM6OndyaXRlKGZpbHRlcjFfLCBjbXAsIHMsIG4pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLSAgICBzdGQ6OnN0cmVhbXBvcyBzZWVrKCBEZXZpY2UmIGRldiwgc3RyZWFtX29mZnNldCBvZmYsIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6aW4gfCBORE5CT09TVF9JT1M6Om91dCApCi0gICAgewotICAgICAgICBjb21wb3NpdGVfZGV2aWNlPGZpbHRlcl9yZWYsIERldmljZT4gY21wKG5kbmJvb3N0OjpyZWYoZmlsdGVyMl8pLCBkZXYpOwotICAgICAgICByZXR1cm4gaW9zdHJlYW1zOjpzZWVrKGZpbHRlcjFfLCBjbXAsIG9mZiwgd2F5LCB3aGljaCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotICAgIHZvaWQgY2xvc2UoRGV2aWNlJiBkZXYpCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCghaXNfY29udmVydGlibGU8Y2F0ZWdvcnksIHR3b19zZXF1ZW5jZT46OnZhbHVlKSk7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKCFpc19jb252ZXJ0aWJsZTxjYXRlZ29yeSwgZHVhbF91c2U+Ojp2YWx1ZSkpOwotCi0gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBkZXZpY2UgYnkgY29tcG9zaW5nIHRoZSBzZWNvbmQgZmlsdGVyMl8gd2l0aCBkZXYuCi0gICAgICAgIGNvbXBvc2l0ZV9kZXZpY2U8ZmlsdGVyX3JlZiwgRGV2aWNlPiBjbXAobmRuYm9vc3Q6OnJlZihmaWx0ZXIyXyksIGRldik7Ci0KLSAgICAgICAgLy8gQ2xvc2UgaW5wdXQgc2VxdWVuY2VzIGluIHJldmVyc2Ugb3JkZXIgYW5kIG91dHB1dCBzZXF1ZW5jZXMgaW4gCi0gICAgICAgIC8vIGZvcndhcmQgb3JkZXIKLSAgICAgICAgaWYgKCFpc19jb252ZXJ0aWJsZTxmaXJzdF9tb2RlLCBkdWFsX3VzZT46OnZhbHVlKSB7Ci0gICAgICAgICAgICBkZXRhaWw6OmV4ZWN1dGVfYWxsKAotICAgICAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9jbG9zZShmaWx0ZXIyXywgZGV2LCBORE5CT09TVF9JT1M6OmluKSwKLSAgICAgICAgICAgICAgICBkZXRhaWw6OmNhbGxfY2xvc2UoZmlsdGVyMV8sIGNtcCwgTkROQk9PU1RfSU9TOjppbiksCi0gICAgICAgICAgICAgICAgZGV0YWlsOjpjYWxsX2Nsb3NlKGZpbHRlcjFfLCBjbXAsIE5ETkJPT1NUX0lPUzo6b3V0KSwKLSAgICAgICAgICAgICAgICBkZXRhaWw6OmNhbGxfY2xvc2UoZmlsdGVyMl8sIGRldiwgTkROQk9PU1RfSU9TOjpvdXQpCi0gICAgICAgICAgICApOwotICAgICAgICB9IGVsc2UgaWYgKGlzX2NvbnZlcnRpYmxlPHNlY29uZF9tb2RlLCBpbnB1dD46OnZhbHVlKSB7Ci0gICAgICAgICAgICBkZXRhaWw6OmV4ZWN1dGVfYWxsKAotICAgICAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9jbG9zZShmaWx0ZXIyXywgZGV2LCBORE5CT09TVF9JT1M6OmluKSwKLSAgICAgICAgICAgICAgICBkZXRhaWw6OmNhbGxfY2xvc2UoZmlsdGVyMV8sIGNtcCwgTkROQk9PU1RfSU9TOjppbikKLSAgICAgICAgICAgICk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBkZXRhaWw6OmV4ZWN1dGVfYWxsKAotICAgICAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9jbG9zZShmaWx0ZXIxXywgY21wLCBORE5CT09TVF9JT1M6Om91dCksCi0gICAgICAgICAgICAgICAgZGV0YWlsOjpjYWxsX2Nsb3NlKGZpbHRlcjJfLCBkZXYsIE5ETkJPT1NUX0lPUzo6b3V0KQotICAgICAgICAgICAgKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLSAgICB2b2lkIGNsb3NlKERldmljZSYgZGV2LCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgKLSAgICAgICAgICAgIChpc19jb252ZXJ0aWJsZTxjYXRlZ29yeSwgdHdvX3NlcXVlbmNlPjo6dmFsdWUpIHx8Ci0gICAgICAgICAgICAoaXNfY29udmVydGlibGU8Y2F0ZWdvcnksIGR1YWxfdXNlPjo6dmFsdWUpCi0gICAgICAgICk7Ci0KLSAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IGRldmljZSBieSBjb21wb3NpbmcgdGhlIHNlY29uZCBmaWx0ZXIyXyB3aXRoIGRldi4KLSAgICAgICAgY29tcG9zaXRlX2RldmljZTxmaWx0ZXJfcmVmLCBEZXZpY2U+IGNtcChuZG5ib29zdDo6cmVmKGZpbHRlcjJfKSwgZGV2KTsKLQotICAgICAgICAvLyBDbG9zZSBpbnB1dCBzZXF1ZW5jZXMgaW4gcmV2ZXJzZSBvcmRlcgotICAgICAgICBpZiAoIHdoaWNoID09IE5ETkJPT1NUX0lPUzo6aW4gJiYKLSAgICAgICAgICAgICAoICFpc19jb252ZXJ0aWJsZTxmaXJzdF9tb2RlLCBkdWFsX3VzZT46OnZhbHVlIHx8Ci0gICAgICAgICAgICAgICAgaXNfY29udmVydGlibGU8c2Vjb25kX21vZGUsIGlucHV0Pjo6dmFsdWUgKSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRldGFpbDo6ZXhlY3V0ZV9hbGwoCi0gICAgICAgICAgICAgICAgZGV0YWlsOjpjYWxsX2Nsb3NlKGZpbHRlcjJfLCBkZXYsIE5ETkJPT1NUX0lPUzo6aW4pLAotICAgICAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9jbG9zZShmaWx0ZXIxXywgY21wLCBORE5CT09TVF9JT1M6OmluKQotICAgICAgICAgICAgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIENsb3NlIG91dHB1dCBzZXF1ZW5jZXMgaW4gZm9yd2FyZCBvcmRlcgotICAgICAgICBpZiAoIHdoaWNoID09IE5ETkJPT1NUX0lPUzo6b3V0ICYmCi0gICAgICAgICAgICAgKCAhaXNfY29udmVydGlibGU8Zmlyc3RfbW9kZSwgZHVhbF91c2U+Ojp2YWx1ZSB8fAotICAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPHNlY29uZF9tb2RlLCBvdXRwdXQ+Ojp2YWx1ZSApICkKLSAgICAgICAgewotICAgICAgICAgICAgZGV0YWlsOjpleGVjdXRlX2FsbCgKLSAgICAgICAgICAgICAgICBkZXRhaWw6OmNhbGxfY2xvc2UoZmlsdGVyMV8sIGNtcCwgTkROQk9PU1RfSU9TOjpvdXQpLAotICAgICAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9jbG9zZShmaWx0ZXIyXywgZGV2LCBORE5CT09TVF9JT1M6Om91dCkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2U+Ci0gICAgYm9vbCBmbHVzaChEZXZpY2UmIGRldikKLSAgICB7Ci0gICAgICAgIGNvbXBvc2l0ZV9kZXZpY2U8RmlsdGVyMiwgRGV2aWNlPiBjbXAoZmlsdGVyMl8sIGRldik7Ci0gICAgICAgIHJldHVybiBpb3N0cmVhbXM6OmZsdXNoKGZpbHRlcjFfLCBjbXApOwotICAgIH0KLQotICAgIHN0ZDo6c3RyZWFtc2l6ZSBvcHRpbWFsX2J1ZmZlcl9zaXplKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBmaXJzdCA9IGlvc3RyZWFtczo6b3B0aW1hbF9idWZmZXJfc2l6ZShmaWx0ZXIxXyk7Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBzZWNvbmQgPSBpb3N0cmVhbXM6Om9wdGltYWxfYnVmZmVyX3NpemUoZmlsdGVyMl8pOwotICAgICAgICByZXR1cm4gZmlyc3QgPCBzZWNvbmQgPyBzZWNvbmQgOiBmaXJzdDsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMb2NhbGU+IC8vIEF2b2lkIGRlcGVuZGVuY3kgb24gPGxvY2FsZT4KLSAgICB2b2lkIGltYnVlKGNvbnN0IExvY2FsZSYgbG9jKQotICAgIHsgICAvLyBUbyBkbzogY29uc2lkZXIgdXNpbmcgUkFJSS4KLSAgICAgICAgaW9zdHJlYW1zOjppbWJ1ZShmaWx0ZXIxXywgbG9jKTsKLSAgICAgICAgaW9zdHJlYW1zOjppbWJ1ZShmaWx0ZXIyXywgbG9jKTsKLSAgICB9Ci0KLSAgICBGaWx0ZXIxJiBmaXJzdCgpIHsgcmV0dXJuIGZpbHRlcjFfOyB9Ci0gICAgRmlsdGVyMiYgc2Vjb25kKCkgeyByZXR1cm4gZmlsdGVyMl87IH0KLXByaXZhdGU6Ci0gICAgRmlsdGVyMSAgZmlsdGVyMV87Ci0gICAgRmlsdGVyMiAgZmlsdGVyMl87Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIEZpbHRlck9yRGV2aWNlPgotc3RydWN0IGNvbXBvc2l0ZV90cmFpdHMKLSAgICA6IG1wbDo6aWZfPAotICAgICAgICAgIGlzX2RldmljZTxGaWx0ZXJPckRldmljZT4sCi0gICAgICAgICAgY29tcG9zaXRlX2RldmljZTxGaWx0ZXIsIEZpbHRlck9yRGV2aWNlPiwKLSAgICAgICAgICBjb21wb3NpdGVfZmlsdGVyPEZpbHRlciwgRmlsdGVyT3JEZXZpY2U+Ci0gICAgICA+Ci0gICAgeyB9OwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIEZpbHRlck9yRGV2aWNlPgotc3RydWN0IGNvbXBvc2l0ZSA6IGRldGFpbDo6Y29tcG9zaXRlX3RyYWl0czxGaWx0ZXIsIEZpbHRlck9yRGV2aWNlPjo6dHlwZSB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnBhcmFtX3R5cGU8RmlsdGVyT3JEZXZpY2U+Ojp0eXBlIHBhcmFtX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmNvbXBvc2l0ZV90cmFpdHM8RmlsdGVyLCBGaWx0ZXJPckRldmljZT46OnR5cGUgYmFzZTsKLSAgICBjb21wb3NpdGUoY29uc3QgRmlsdGVyJiBmbHQsIHBhcmFtX3R5cGUgZGV2KQotICAgICAgICA6IGJhc2UoZmx0LCBkZXYpCi0gICAgICAgIHsgfQotfTsKLQotLy8tLS0tLS0tLS0tLS0tLUltcGxlbWVudGF0aW9uIG9mIGNvbXBvc2UtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gTm90ZTogVGhlIGZvbGxvd2luZyB3b3JrYXJvdW5kcyBhcmUgcGF0dGVybmVkIGFmdGVyIHJlc29sdmUuaHBwLiBJdCBoYXMgbm90Ci0vLyB5ZXQgYmVlbiBjb25maXJtZWQgdGhhdCB0aGV5IGFyZSBuZWNlc3NhcnkuCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0JST0tFTl9PVkVSTE9BRF9SRVNPTFVUSU9OIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0jIGlmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fU1RSRUFNX1RFTVBMQVRFUyAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIEZpbHRlck9yRGV2aWNlPgotY29tcG9zaXRlPEZpbHRlciwgRmlsdGVyT3JEZXZpY2U+Ci1jb21wb3NlKCBjb25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVyT3JEZXZpY2UmIGZvZAotICAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0RJU0FCTEVfSUZfU1RSRUFNKEZpbHRlck9yRGV2aWNlKSApCi17IHJldHVybiBjb21wb3NpdGU8RmlsdGVyLCBGaWx0ZXJPckRldmljZT4oZmlsdGVyLCBmb2QpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlciwgdHlwZW5hbWUgQ2gsIHR5cGVuYW1lIFRyPgotY29tcG9zaXRlPCBGaWx0ZXIsIHN0ZDo6YmFzaWNfc3RyZWFtYnVmPENoLCBUcj4gPgotY29tcG9zZShjb25zdCBGaWx0ZXImIGZpbHRlciwgc3RkOjpiYXNpY19zdHJlYW1idWY8Q2gsIFRyPiYgc2IpCi17IHJldHVybiBjb21wb3NpdGU8IEZpbHRlciwgc3RkOjpiYXNpY19zdHJlYW1idWY8Q2gsIFRyPiA+KGZpbHRlciwgc2IpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlciwgdHlwZW5hbWUgQ2gsIHR5cGVuYW1lIFRyPgotY29tcG9zaXRlPCBGaWx0ZXIsIHN0ZDo6YmFzaWNfaXN0cmVhbTxDaCwgVHI+ID4KLWNvbXBvc2UoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIHN0ZDo6YmFzaWNfaXN0cmVhbTxDaCwgVHI+JiBpcykKLXsgcmV0dXJuIGNvbXBvc2l0ZTwgRmlsdGVyLCBzdGQ6OmJhc2ljX2lzdHJlYW08Q2gsIFRyPiA+KGZpbHRlciwgaXMpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlciwgdHlwZW5hbWUgQ2gsIHR5cGVuYW1lIFRyPgotY29tcG9zaXRlPCBGaWx0ZXIsIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaCwgVHI+ID4KLWNvbXBvc2UoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaCwgVHI+JiBvcykKLXsgcmV0dXJuIGNvbXBvc2l0ZTwgRmlsdGVyLCBzdGQ6OmJhc2ljX29zdHJlYW08Q2gsIFRyPiA+KGZpbHRlciwgb3MpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlciwgdHlwZW5hbWUgQ2gsIHR5cGVuYW1lIFRyPgotY29tcG9zaXRlPCBGaWx0ZXIsIHN0ZDo6YmFzaWNfaW9zdHJlYW08Q2gsIFRyPiA+Ci1jb21wb3NlKGNvbnN0IEZpbHRlciYgZmlsdGVyLCBzdGQ6OmJhc2ljX2lvc3RyZWFtPENoLCBUcj4mIGlvKQoteyByZXR1cm4gY29tcG9zaXRlPCBGaWx0ZXIsIHN0ZDo6YmFzaWNfaW9zdHJlYW08Q2gsIFRyPiA+KGZpbHRlciwgaW8pOyB9Ci0KLSMgZWxzZSAvLyAjIGlmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fU1RSRUFNX1RFTVBMQVRFUyAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlciwgdHlwZW5hbWUgRmlsdGVyT3JEZXZpY2U+Ci1jb21wb3NpdGU8RmlsdGVyLCBGaWx0ZXJPckRldmljZT4KLWNvbXBvc2UoIGNvbnN0IEZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJPckRldmljZSYgZm9kCi0gICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfRElTQUJMRV9JRl9TVFJFQU0oRmlsdGVyT3JEZXZpY2UpICkKLXsgcmV0dXJuIGNvbXBvc2l0ZTxGaWx0ZXIsIEZpbHRlck9yRGV2aWNlPihmaWx0ZXIsIGZvZCk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyPgotY29tcG9zaXRlPEZpbHRlciwgc3RkOjpzdHJlYW1idWY+Ci1jb21wb3NlKGNvbnN0IEZpbHRlciYgZmlsdGVyLCBzdGQ6OnN0cmVhbWJ1ZiYgc2IpCi17IHJldHVybiBjb21wb3NpdGU8RmlsdGVyLCBzdGQ6OnN0cmVhbWJ1Zj4oZmlsdGVyLCBzYik7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyPgotY29tcG9zaXRlPEZpbHRlciwgc3RkOjppc3RyZWFtPgotY29tcG9zZShjb25zdCBGaWx0ZXImIGZpbHRlciwgc3RkOjppc3RyZWFtJiBpcykKLXsgcmV0dXJuIGNvbXBvc2l0ZTxGaWx0ZXIsIHN0ZDo6aXN0cmVhbT4oZmlsdGVyLCBpcyk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyPgotY29tcG9zaXRlPEZpbHRlciwgc3RkOjpvc3RyZWFtPgotY29tcG9zZShjb25zdCBGaWx0ZXImIGZpbHRlciwgc3RkOjpvc3RyZWFtJiBvcykKLXsgcmV0dXJuIGNvbXBvc2l0ZTxGaWx0ZXIsIHN0ZDo6b3N0cmVhbT4oZmlsdGVyLCBvcyk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyPgotY29tcG9zaXRlPEZpbHRlciwgc3RkOjppb3N0cmVhbT4KLWNvbXBvc2UoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIHN0ZDo6aW9zdHJlYW0mIGlvKQoteyByZXR1cm4gY29tcG9zaXRlPEZpbHRlciwgc3RkOjppb3N0cmVhbT4oZmlsdGVyLCBpbyk7IH0KLQotIyBlbmRpZiAvLyAjIGlmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fU1RSRUFNX1RFTVBMQVRFUyAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSNlbHNlIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0JST0tFTl9PVkVSTE9BRF9SRVNPTFVUSU9OIC8vLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlciwgdHlwZW5hbWUgU3RyZWFtPgotY29tcG9zaXRlPEZpbHRlciwgU3RyZWFtPgotY29tcG9zZShjb25zdCBGaWx0ZXImIGZsdCwgY29uc3QgU3RyZWFtJiBzdHJtLCBtcGw6OnRydWVfKQoteyAgIC8vIEJhZCBvdmVybG9hZCByZXNvbHV0aW9uLgotICAgIHJldHVybiBjb21wb3NpdGU8RmlsdGVyLCBTdHJlYW0+KGZsdCwgY29uc3RfY2FzdDxTdHJlYW0mPihzdHJtKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlciwgdHlwZW5hbWUgRmlsdGVyT3JEZXZpY2U+Ci1jb21wb3NpdGU8RmlsdGVyLCBGaWx0ZXJPckRldmljZT4KLWNvbXBvc2UoY29uc3QgRmlsdGVyJiBmbHQsIGNvbnN0IEZpbHRlck9yRGV2aWNlJiBmb2QsIG1wbDo6ZmFsc2VfKQoteyByZXR1cm4gY29tcG9zaXRlPEZpbHRlciwgRmlsdGVyT3JEZXZpY2U+KGZsdCwgZm9kKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIEZpbHRlck9yRGV2aWNlPgotY29tcG9zaXRlPEZpbHRlciwgRmlsdGVyT3JEZXZpY2U+Ci1jb21wb3NlKCBjb25zdCBGaWx0ZXImIGZsdCwgY29uc3QgRmlsdGVyT3JEZXZpY2UmIGZvZAotICAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0RJU0FCTEVfSUZfU1RSRUFNKFQpICkKLXsgcmV0dXJuIGNvbXBvc2UoZmx0LCBmb2QsIGlzX3N0ZF9pbzxGaWx0ZXJPckRldmljZT4oKSk7IH0KLQotIyBpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg2MDApICYmIFwKLSAgICAgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgJiYgXAotICAgICAhZGVmaW5lZChfX0dOVUNfXykgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyLCB0eXBlbmFtZSBGaWx0ZXJPckRldmljZT4KLWNvbXBvc2l0ZTxGaWx0ZXIsIEZpbHRlck9yRGV2aWNlPgotY29tcG9zZSAoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIEZpbHRlck9yRGV2aWNlJiBmb2QpCi17IHJldHVybiBjb21wb3NpdGU8RmlsdGVyLCBGaWx0ZXJPckRldmljZT4oZmlsdGVyLCBmb2QpOyB9Ci0KLSMgZW5kaWYgLy8gQm9ybGFuZCA1LngsIFZDNi03LjAgb3IgR0NDIDIuOXggLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfQlJPS0VOX09WRVJMT0FEX1JFU09MVVRJT04gLy8tLS0tLS0tLS0tLS0tLS0vLwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8tLS0tLS0tLS0tLS0tLUltcGxlbWVudGF0aW9uIG9mIGNvbXBvc2l0ZV9kZXZpY2UtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIERldmljZSwgdHlwZW5hbWUgTW9kZT4KLWNvbXBvc2l0ZV9kZXZpY2U8RmlsdGVyLCBEZXZpY2UsIE1vZGU+Ojpjb21wb3NpdGVfZGV2aWNlCi0gICAgKGNvbnN0IEZpbHRlciYgZmx0LCBwYXJhbV90eXBlIGRldikKLSAgICA6IGZpbHRlcl8oZmx0KSwgZGV2aWNlXyhkZXYpCi0gICAgeyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlciwgdHlwZW5hbWUgRGV2aWNlLCB0eXBlbmFtZSBNb2RlPgotaW5saW5lIHN0ZDo6c3RyZWFtc2l6ZSBjb21wb3NpdGVfZGV2aWNlPEZpbHRlciwgRGV2aWNlLCBNb2RlPjo6cmVhZAotICAgIChjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQoteyByZXR1cm4gaW9zdHJlYW1zOjpyZWFkKGZpbHRlcl8sIGRldmljZV8sIHMsIG4pOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlciwgdHlwZW5hbWUgRGV2aWNlLCB0eXBlbmFtZSBNb2RlPgotaW5saW5lIHN0ZDo6c3RyZWFtc2l6ZSBjb21wb3NpdGVfZGV2aWNlPEZpbHRlciwgRGV2aWNlLCBNb2RlPjo6d3JpdGUKLSAgICAoY29uc3QgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLXsgcmV0dXJuIGlvc3RyZWFtczo6d3JpdGUoZmlsdGVyXywgZGV2aWNlXywgcywgbik7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyLCB0eXBlbmFtZSBEZXZpY2UsIHR5cGVuYW1lIE1vZGU+Ci1zdGQ6OnN0cmVhbXBvcyBjb21wb3NpdGVfZGV2aWNlPEZpbHRlciwgRGV2aWNlLCBNb2RlPjo6c2VlawotICAgIChzdHJlYW1fb2Zmc2V0IG9mZiwgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLXsgcmV0dXJuIGlvc3RyZWFtczo6c2VlayhmaWx0ZXJfLCBkZXZpY2VfLCBvZmYsIHdheSwgd2hpY2gpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlciwgdHlwZW5hbWUgRGV2aWNlLCB0eXBlbmFtZSBNb2RlPgotdm9pZCBjb21wb3NpdGVfZGV2aWNlPEZpbHRlciwgRGV2aWNlLCBNb2RlPjo6Y2xvc2UoKQotewotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKCFpc19jb252ZXJ0aWJsZTxNb2RlLCB0d29fc2VxdWVuY2U+Ojp2YWx1ZSkpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoCi0gICAgICAgICEoaXNfY29udmVydGlibGU8ZmlsdGVyX21vZGUsIGR1YWxfdXNlPjo6dmFsdWUpIHx8Ci0gICAgICAgICEoaXNfY29udmVydGlibGU8ZGV2aWNlX21vZGUsIGlucHV0Pjo6dmFsdWUpIHx8Ci0gICAgICAgICEoaXNfY29udmVydGlibGU8ZGV2aWNlX21vZGUsIG91dHB1dD46OnZhbHVlKQotICAgICk7Ci0KLSAgICAvLyBDbG9zZSBpbnB1dCBzZXF1ZW5jZXMgaW4gcmV2ZXJzZSBvcmRlciBhbmQgb3V0cHV0IHNlcXVlbmNlcyAKLSAgICAvLyBpbiBmb3J3YXJkIG9yZGVyCi0gICAgaWYgKCFpc19jb252ZXJ0aWJsZTxmaWx0ZXJfbW9kZSwgZHVhbF91c2U+Ojp2YWx1ZSkgewotICAgICAgICBkZXRhaWw6OmV4ZWN1dGVfYWxsKAotICAgICAgICAgICAgZGV0YWlsOjpjYWxsX2Nsb3NlKGRldmljZV8sIE5ETkJPT1NUX0lPUzo6aW4pLAotICAgICAgICAgICAgZGV0YWlsOjpjYWxsX2Nsb3NlKGZpbHRlcl8sIGRldmljZV8sIE5ETkJPT1NUX0lPUzo6aW4pLAotICAgICAgICAgICAgZGV0YWlsOjpjYWxsX2Nsb3NlKGZpbHRlcl8sIGRldmljZV8sIE5ETkJPT1NUX0lPUzo6b3V0KSwKLSAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9jbG9zZShkZXZpY2VfLCBORE5CT09TVF9JT1M6Om91dCkKLSAgICAgICAgKTsKLSAgICB9IGVsc2UgaWYgKGlzX2NvbnZlcnRpYmxlPGRldmljZV9tb2RlLCBpbnB1dD46OnZhbHVlKSB7Ci0gICAgICAgIGRldGFpbDo6ZXhlY3V0ZV9hbGwoCi0gICAgICAgICAgICBkZXRhaWw6OmNhbGxfY2xvc2UoZGV2aWNlXywgTkROQk9PU1RfSU9TOjppbiksCi0gICAgICAgICAgICBkZXRhaWw6OmNhbGxfY2xvc2UoZmlsdGVyXywgZGV2aWNlXywgTkROQk9PU1RfSU9TOjppbikKLSAgICAgICAgKTsKLSAgICB9IGVsc2UgewotICAgICAgICBkZXRhaWw6OmV4ZWN1dGVfYWxsKAotICAgICAgICAgICAgZGV0YWlsOjpjYWxsX2Nsb3NlKGZpbHRlcl8sIGRldmljZV8sIE5ETkJPT1NUX0lPUzo6b3V0KSwKLSAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9jbG9zZShkZXZpY2VfLCBORE5CT09TVF9JT1M6Om91dCkKLSAgICAgICAgKTsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlciwgdHlwZW5hbWUgRGV2aWNlLCB0eXBlbmFtZSBNb2RlPgotdm9pZCBjb21wb3NpdGVfZGV2aWNlPEZpbHRlciwgRGV2aWNlLCBNb2RlPjo6Y2xvc2UoTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKChpc19jb252ZXJ0aWJsZTxNb2RlLCB0d29fc2VxdWVuY2U+Ojp2YWx1ZSkpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoIShpc19jb252ZXJ0aWJsZTxmaWx0ZXJfbW9kZSwgZHVhbF91c2U+Ojp2YWx1ZSkpOwotCi0gICAgLy8gQ2xvc2UgaW5wdXQgc2VxdWVuY2VzIGluIHJldmVyc2Ugb3JkZXIKLSAgICBpZiAod2hpY2ggPT0gTkROQk9PU1RfSU9TOjppbikgewotICAgICAgICBkZXRhaWw6OmV4ZWN1dGVfYWxsKAotICAgICAgICAgICAgZGV0YWlsOjpjYWxsX2Nsb3NlKGRldmljZV8sIE5ETkJPT1NUX0lPUzo6aW4pLAotICAgICAgICAgICAgZGV0YWlsOjpjYWxsX2Nsb3NlKGZpbHRlcl8sIGRldmljZV8sIE5ETkJPT1NUX0lPUzo6aW4pIAotICAgICAgICApOwotICAgIH0KLQotICAgIC8vIENsb3NlIG91dHB1dCBzZXF1ZW5jZXMgaW4gZm9yd2FyZCBvcmRlcgotICAgIGlmICh3aGljaCA9PSBORE5CT09TVF9JT1M6Om91dCkgewotICAgICAgICBkZXRhaWw6OmV4ZWN1dGVfYWxsKAotICAgICAgICAgICAgZGV0YWlsOjpjYWxsX2Nsb3NlKGZpbHRlcl8sIGRldmljZV8sIE5ETkJPT1NUX0lPUzo6b3V0KSwKLSAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9jbG9zZShkZXZpY2VfLCBORE5CT09TVF9JT1M6Om91dCkKLSAgICAgICAgKTsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlciwgdHlwZW5hbWUgRGV2aWNlLCB0eXBlbmFtZSBNb2RlPgotYm9vbCBjb21wb3NpdGVfZGV2aWNlPEZpbHRlciwgRGV2aWNlLCBNb2RlPjo6Zmx1c2goKQotewotICAgIGJvb2wgcjEgPSBpb3N0cmVhbXM6OmZsdXNoKGZpbHRlcl8sIGRldmljZV8pOwotICAgIGJvb2wgcjIgPSBpb3N0cmVhbXM6OmZsdXNoKGRldmljZV8pOwotICAgIHJldHVybiByMSAmJiByMjsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyLCB0eXBlbmFtZSBEZXZpY2UsIHR5cGVuYW1lIE1vZGU+Ci1zdGQ6OnN0cmVhbXNpemUKLWNvbXBvc2l0ZV9kZXZpY2U8RmlsdGVyLCBEZXZpY2UsIE1vZGU+OjpvcHRpbWFsX2J1ZmZlcl9zaXplKCkgY29uc3QKLXsgcmV0dXJuIGlvc3RyZWFtczo6b3B0aW1hbF9idWZmZXJfc2l6ZShkZXZpY2VfKTsgfQotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19DT01QT1NFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvY29uY2VwdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvY29uY2VwdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTczNGVjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2NvbmNlcHRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyOSArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfQ09OQ0VQVFNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19DT05DRVBUU19IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgLy8gTkROQk9PU1RfTVNWQwotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2F0ZWdvcmllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9kZWZhdWx0X2FyZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3MuaHBwPiAgLy8gb3Blbm1vZGUuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3Bvc2l0aW9uaW5nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi0vLy0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbnMgb2YgaGVscGVyIHRlbXBsYXRlcyBmb3IgZGV2aWNlIGNvbmNlcHRzLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaCA9IE5ETkJPT1NUX0lPU1RSRUFNU19ERUZBVUxUX0FSRyhjaGFyKT4KLXN0cnVjdCBkZXZpY2UgewotICAgIHR5cGVkZWYgQ2ggY2hhcl90eXBlOwotICAgIHN0cnVjdCBjYXRlZ29yeQotICAgICAgICA6IE1vZGUsCi0gICAgICAgICAgZGV2aWNlX3RhZywKLSAgICAgICAgICBjbG9zYWJsZV90YWcsCi0gICAgICAgICAgbG9jYWxpemFibGVfdGFnCi0gICAgICAgIHsgfTsKLQotICAgIHZvaWQgY2xvc2UoKQotICAgIHsKLSAgICAgICAgdXNpbmcgbmFtZXNwYWNlIGRldGFpbDsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoIWlzX2NvbnZlcnRpYmxlPE1vZGUsIHR3b19zZXF1ZW5jZT46OnZhbHVlKSk7Ci0gICAgfQotCi0gICAgdm9pZCBjbG9zZShORE5CT09TVF9JT1M6Om9wZW5tb2RlKQotICAgIHsKLSAgICAgICAgdXNpbmcgbmFtZXNwYWNlIGRldGFpbDsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoaXNfY29udmVydGlibGU8TW9kZSwgdHdvX3NlcXVlbmNlPjo6dmFsdWUpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMb2NhbGU+Ci0gICAgdm9pZCBpbWJ1ZShjb25zdCBMb2NhbGUmKSB7IH0KLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIENoID0gTkROQk9PU1RfSU9TVFJFQU1TX0RFRkFVTFRfQVJHKHdjaGFyX3QpPgotc3RydWN0IHdkZXZpY2UgOiBkZXZpY2U8TW9kZSwgQ2g+IHsgfTsKLQotdHlwZWRlZiBkZXZpY2U8aW5wdXQ+ICAgIHNvdXJjZTsKLXR5cGVkZWYgd2RldmljZTxpbnB1dD4gICB3c291cmNlOwotdHlwZWRlZiBkZXZpY2U8b3V0cHV0PiAgIHNpbms7Ci10eXBlZGVmIHdkZXZpY2U8b3V0cHV0PiAgd3Npbms7Ci0KLS8vLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9ucyBvZiBoZWxwZXIgdGVtcGxhdGVzIGZvciBzaW1wbGUgZmlsdGVyIGNvbmNlcHRzLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIENoID0gTkROQk9PU1RfSU9TVFJFQU1TX0RFRkFVTFRfQVJHKGNoYXIpPgotc3RydWN0IGZpbHRlciB7Ci0gICAgdHlwZWRlZiBDaCBjaGFyX3R5cGU7Ci0gICAgc3RydWN0IGNhdGVnb3J5Ci0gICAgICAgIDogTW9kZSwKLSAgICAgICAgICBmaWx0ZXJfdGFnLAotICAgICAgICAgIGNsb3NhYmxlX3RhZywKLSAgICAgICAgICBsb2NhbGl6YWJsZV90YWcKLSAgICAgICAgeyB9OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotICAgIHZvaWQgY2xvc2UoRGV2aWNlJikKLSAgICB7Ci0gICAgICAgIHVzaW5nIG5hbWVzcGFjZSBkZXRhaWw7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKCFpc19jb252ZXJ0aWJsZTxNb2RlLCB0d29fc2VxdWVuY2U+Ojp2YWx1ZSkpOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCghaXNfY29udmVydGlibGU8TW9kZSwgZHVhbF91c2U+Ojp2YWx1ZSkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLSAgICB2b2lkIGNsb3NlKERldmljZSYsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUpCi0gICAgewotICAgICAgICB1c2luZyBuYW1lc3BhY2UgZGV0YWlsOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKAotICAgICAgICAgICAgKGlzX2NvbnZlcnRpYmxlPE1vZGUsIHR3b19zZXF1ZW5jZT46OnZhbHVlKSB8fAotICAgICAgICAgICAgKGlzX2NvbnZlcnRpYmxlPE1vZGUsIGR1YWxfdXNlPjo6dmFsdWUpCi0gICAgICAgICk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTG9jYWxlPgotICAgIHZvaWQgaW1idWUoY29uc3QgTG9jYWxlJikgeyB9Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaCA9IE5ETkJPT1NUX0lPU1RSRUFNU19ERUZBVUxUX0FSRyh3Y2hhcl90KT4KLXN0cnVjdCB3ZmlsdGVyIDogZmlsdGVyPE1vZGUsIENoPiB7IH07Ci0KLXR5cGVkZWYgZmlsdGVyPGlucHV0PiAgICAgIGlucHV0X2ZpbHRlcjsKLXR5cGVkZWYgd2ZpbHRlcjxpbnB1dD4gICAgIGlucHV0X3dmaWx0ZXI7Ci10eXBlZGVmIGZpbHRlcjxvdXRwdXQ+ICAgICBvdXRwdXRfZmlsdGVyOwotdHlwZWRlZiB3ZmlsdGVyPG91dHB1dD4gICAgb3V0cHV0X3dmaWx0ZXI7Ci10eXBlZGVmIGZpbHRlcjxzZWVrYWJsZT4gICBzZWVrYWJsZV9maWx0ZXI7Ci10eXBlZGVmIHdmaWx0ZXI8c2Vla2FibGU+ICBzZWVrYWJsZV93ZmlsdGVyOwotdHlwZWRlZiBmaWx0ZXI8ZHVhbF91c2U+ICAgZHVhbF91c2VfZmlsdGVyOwotdHlwZWRlZiB3ZmlsdGVyPGR1YWxfdXNlPiAgZHVhbF91c2Vfd2ZpbHRlcjsKLSAgICAgICAgCi0vLy0tLS0tLURlZmluaXRpb25zIG9mIGhlbHBlciB0ZW1wbGF0ZXMgZm9yIG11bHRpLWNoYXJhY3RlciBmaWx0ZXIgY25jZXB0cy0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaCA9IGNoYXI+Ci1zdHJ1Y3QgbXVsdGljaGFyX2ZpbHRlciA6IGZpbHRlcjxNb2RlLCBDaD4gewotICAgIHN0cnVjdCBjYXRlZ29yeSA6IGZpbHRlcjxNb2RlLCBDaD46OmNhdGVnb3J5LCBtdWx0aWNoYXJfdGFnIHsgfTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIENoID0gd2NoYXJfdD4KLXN0cnVjdCBtdWx0aWNoYXJfd2ZpbHRlciA6IG11bHRpY2hhcl9maWx0ZXI8TW9kZSwgQ2g+IHsgfTsKLQotdHlwZWRlZiBtdWx0aWNoYXJfZmlsdGVyPGlucHV0PiAgICAgIG11bHRpY2hhcl9pbnB1dF9maWx0ZXI7Ci10eXBlZGVmIG11bHRpY2hhcl93ZmlsdGVyPGlucHV0PiAgICAgbXVsdGljaGFyX2lucHV0X3dmaWx0ZXI7Ci10eXBlZGVmIG11bHRpY2hhcl9maWx0ZXI8b3V0cHV0PiAgICAgbXVsdGljaGFyX291dHB1dF9maWx0ZXI7Ci10eXBlZGVmIG11bHRpY2hhcl93ZmlsdGVyPG91dHB1dD4gICAgbXVsdGljaGFyX291dHB1dF93ZmlsdGVyOwotdHlwZWRlZiBtdWx0aWNoYXJfZmlsdGVyPGR1YWxfdXNlPiAgIG11bHRpY2hhcl9kdWFsX3VzZV9maWx0ZXI7Ci10eXBlZGVmIG11bHRpY2hhcl93ZmlsdGVyPGR1YWxfdXNlPiAgbXVsdGljaGFyX2R1YWxfdXNlX3dmaWx0ZXI7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfQ09OQ0VQVFNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jb25zdGFudHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvY29uc3RhbnRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjUzOTNkNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jb25zdGFudHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vIENvbnRhaW5zIGNvbnN0YW50cyB1c2VkIGJ5IGxpYnJhcnkuCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0NPTlNUQU5UU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0NPTlNUQU5UU19IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVGQVVMVF9ERVZJQ0VfQlVGRkVSX1NJWkUKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERUZBVUxUX0RFVklDRV9CVUZGRVJfU0laRSA0MDk2Ci0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVGQVVMVF9GSUxURVJfQlVGRkVSX1NJWkUKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERUZBVUxUX0ZJTFRFUl9CVUZGRVJfU0laRSAxMjgKLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERUZBVUxUX1BCQUNLX0JVRkZFUl9TSVpFCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVGQVVMVF9QQkFDS19CVUZGRVJfU0laRSA0Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4gIC8vIHN0cmVhbXNpemUuCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi1jb25zdCBzdGQ6OnN0cmVhbXNpemUgZGVmYXVsdF9kZXZpY2VfYnVmZmVyX3NpemUgPSAKLSAgICBORE5CT09TVF9JT1NUUkVBTVNfREVGQVVMVF9ERVZJQ0VfQlVGRkVSX1NJWkU7IAotY29uc3Qgc3RkOjpzdHJlYW1zaXplIGRlZmF1bHRfZmlsdGVyX2J1ZmZlcl9zaXplID0gCi0gICAgTkROQk9PU1RfSU9TVFJFQU1TX0RFRkFVTFRfRklMVEVSX0JVRkZFUl9TSVpFOwotY29uc3Qgc3RkOjpzdHJlYW1zaXplIGRlZmF1bHRfcGJhY2tfYnVmZmVyX3NpemUgPSAKLSAgICBORE5CT09TVF9JT1NUUkVBTVNfREVGQVVMVF9QQkFDS19CVUZGRVJfU0laRTsKLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19DT05TVEFOVFNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jb3B5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2NvcHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MjExYzViLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2NvcHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjUyICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBDb250YWluczogVGhlIGZ1bmN0aW9uIHRlbXBsYXRlIGNvcHksIHdoaWNoIHJlYWRzIGRhdGEgZnJvbSBhIFNvdXJjZSAKLS8vIGFuZCB3cml0ZXMgaXQgdG8gYSBTaW5rIHVudGlsIHRoZSBlbmQgb2YgdGhlIHNlcXVlbmNlIGlzIHJlYWNoZWQsIHJldHVybmluZyAKLS8vIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB0cmFuc2ZlcmVkLgotCi0vLyBUaGUgaW1wbGVtZW50YXRpb24gaXMgY29tcGxpY2F0ZWQgYnkgdGhlIG5lZWQgdG8gaGFuZGxlIHNtYXJ0IGFkYXB0ZXJzCi0vLyBhbmQgZGlyZWN0IGRldmljZXMuCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0NPUFlfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19DT1BZX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgIAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSBwdHJkaWZmX3QgaXMgaW4gc3RkLgotI2luY2x1ZGUgPGFsZ29yaXRobT4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjb3B5LCBtaW4uCi0jaW5jbHVkZSA8Y3N0ZGRlZj4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHB0cmRpZmZfdC4KLSNpbmNsdWRlIDx1dGlsaXR5PiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGFpci4KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NoYWluLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY29uc3RhbnRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvbm9uX2Jsb2NraW5nX2FkYXB0ZXIuaHBwPiAgICAgICAgCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9idWZmZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZW5hYmxlX2lmX3N0cmVhbS5ocHA+ICAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2V4ZWN1dGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZnVuY3Rpb25hbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3MuaHBwPiAgIC8vIGZhaWx1cmUsIHN0cmVhbXNpemUuICAgICAgICAgICAgICAgICAgIAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvcmVzb2x2ZS5ocHA+ICAgICAgICAgICAgICAgICAgIAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvd3JhcF91bndyYXAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9vcGVyYXRpb25zLmhwcD4gIC8vIHJlYWQsIHdyaXRlLCBjbG9zZS4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvcGlwZWxpbmUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPiAgCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+IAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSAgICAvLyBUaGUgZm9sbG93aW5nIGZvdXIgb3ZlcmxvYWRzIG9mIGNvcHlfaW1wbCgpIG9wdGltaXplIAotICAgIC8vIGNvcHlpbmcgaW4gdGhlIGNhc2UgdGhhdCBvbmUgb3IgYm90aCBvZiB0aGUgdHdvIGRldmljZXMKLSAgICAvLyBtb2RlbHMgRGlyZWN0IChzZWUgCi0gICAgLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMvZG9jL2luZGV4Lmh0bWw/cGF0aD00LjEuMS40KQotCi0vLyBDb3B5IGZyb20gYSBkaXJlY3Qgc291cmNlIHRvIGEgZGlyZWN0IHNpbmsKLXRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZSwgdHlwZW5hbWUgU2luaz4KLXN0ZDo6c3RyZWFtc2l6ZSBjb3B5X2ltcGwoIFNvdXJjZSYgc3JjLCBTaW5rJiBzbmssIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplIC8qIGJ1ZmZlcl9zaXplICovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbXBsOjp0cnVlXywgbXBsOjp0cnVlXyApCi17ICAgCi0gICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxTb3VyY2U+Ojp0eXBlICBjaGFyX3R5cGU7Ci0gICAgdHlwZWRlZiBzdGQ6OnBhaXI8Y2hhcl90eXBlKiwgY2hhcl90eXBlKj4gICAgcGFpcl90eXBlOwotICAgIHBhaXJfdHlwZSBwMSA9IGlvc3RyZWFtczo6aW5wdXRfc2VxdWVuY2Uoc3JjKTsKLSAgICBwYWlyX3R5cGUgcDIgPSBpb3N0cmVhbXM6Om91dHB1dF9zZXF1ZW5jZShzbmspOwotICAgIHN0ZDo6c3RyZWFtc2l6ZSB0b3RhbCA9IAotICAgICAgICBzdGF0aWNfY2FzdDxzdGQ6OnN0cmVhbXNpemU+KAotICAgICAgICAgICAgKHN0ZDo6bWluKShwMS5zZWNvbmQgLSBwMS5maXJzdCwgcDIuc2Vjb25kIC0gcDIuZmlyc3QpCi0gICAgICAgICk7Ci0gICAgc3RkOjpjb3B5KHAxLmZpcnN0LCBwMS5maXJzdCArIHRvdGFsLCBwMi5maXJzdCk7Ci0gICAgcmV0dXJuIHRvdGFsOwotfQotCi0vLyBDb3B5IGZyb20gYSBkaXJlY3Qgc291cmNlIHRvIGFuIGluZGlyZWN0IHNpbmsKLXRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZSwgdHlwZW5hbWUgU2luaz4KLXN0ZDo6c3RyZWFtc2l6ZSBjb3B5X2ltcGwoIFNvdXJjZSYgc3JjLCBTaW5rJiBzbmssIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplIC8qIGJ1ZmZlcl9zaXplICovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbXBsOjp0cnVlXywgbXBsOjpmYWxzZV8gKQotewotICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8U291cmNlPjo6dHlwZSAgY2hhcl90eXBlOwotICAgIHR5cGVkZWYgc3RkOjpwYWlyPGNoYXJfdHlwZSosIGNoYXJfdHlwZSo+ICAgIHBhaXJfdHlwZTsKLSAgICBwYWlyX3R5cGUgcCA9IGlvc3RyZWFtczo6aW5wdXRfc2VxdWVuY2Uoc3JjKTsKLSAgICBzdGQ6OnN0cmVhbXNpemUgc2l6ZSwgdG90YWw7Ci0gICAgZm9yICggdG90YWwgPSAwLCBzaXplID0gc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPihwLnNlY29uZCAtIHAuZmlyc3QpOwotICAgICAgICAgIHRvdGFsIDwgc2l6ZTsgKQotICAgIHsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIGFtdCA9IAotICAgICAgICAgICAgaW9zdHJlYW1zOjp3cml0ZShzbmssIHAuZmlyc3QgKyB0b3RhbCwgc2l6ZSAtIHRvdGFsKTsgCi0gICAgICAgIHRvdGFsICs9IGFtdDsKLSAgICB9Ci0gICAgcmV0dXJuIHRvdGFsOwotfQotCi0vLyBDb3B5IGZyb20gYW4gaW5kaXJlY3Qgc291cmNlIHRvIGEgZGlyZWN0IHNpbmsKLXRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZSwgdHlwZW5hbWUgU2luaz4KLXN0ZDo6c3RyZWFtc2l6ZSBjb3B5X2ltcGwoIFNvdXJjZSYgc3JjLCBTaW5rJiBzbmssIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplIGJ1ZmZlcl9zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbXBsOjpmYWxzZV8sIG1wbDo6dHJ1ZV8gKQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhcl90eXBlX29mPFNvdXJjZT46OnR5cGUgIGNoYXJfdHlwZTsKLSAgICB0eXBlZGVmIHN0ZDo6cGFpcjxjaGFyX3R5cGUqLCBjaGFyX3R5cGUqPiAgICBwYWlyX3R5cGU7Ci0gICAgZGV0YWlsOjpiYXNpY19idWZmZXI8Y2hhcl90eXBlPiAgYnVmKGJ1ZmZlcl9zaXplKTsKLSAgICBwYWlyX3R5cGUgICAgICAgICAgICAgICAgICAgICAgICBwID0gc25rLm91dHB1dF9zZXF1ZW5jZSgpOwotICAgIHN0ZDo6c3RyZWFtc2l6ZSAgICAgICAgICAgICAgICAgIHRvdGFsID0gMDsKLSAgICBzdGQ6OnB0cmRpZmZfdCAgICAgICAgICAgICAgICAgICBjYXBhY2l0eSA9IHAuc2Vjb25kIC0gcC5maXJzdDsKLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBzdGQ6OnN0cmVhbXNpemUgYW10ID0gCi0gICAgICAgICAgICBpb3N0cmVhbXM6OnJlYWQoCi0gICAgICAgICAgICAgICAgc3JjLCAKLSAgICAgICAgICAgICAgICBidWYuZGF0YSgpLAotICAgICAgICAgICAgICAgIGJ1ZmZlcl9zaXplIDwgY2FwYWNpdHkgLSB0b3RhbCA/Ci0gICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zaXplIDoKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPihjYXBhY2l0eSAtIHRvdGFsKQotICAgICAgICAgICAgKTsKLSAgICAgICAgaWYgKGFtdCA9PSAtMSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBzdGQ6OmNvcHkoYnVmLmRhdGEoKSwgYnVmLmRhdGEoKSArIGFtdCwgcC5maXJzdCArIHRvdGFsKTsKLSAgICAgICAgdG90YWwgKz0gYW10OwotICAgIH0KLSAgICByZXR1cm4gdG90YWw7Ci19Ci0KLS8vIENvcHkgZnJvbSBhbiBpbmRpcmVjdCBzb3VyY2UgdG8gYW4gaW5kaXJlY3Qgc2luawotdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlLCB0eXBlbmFtZSBTaW5rPgotc3RkOjpzdHJlYW1zaXplIGNvcHlfaW1wbCggU291cmNlJiBzcmMsIFNpbmsmIHNuaywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmVhbXNpemUgYnVmZmVyX3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBtcGw6OmZhbHNlXywgbXBsOjpmYWxzZV8gKQoteyAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxTb3VyY2U+Ojp0eXBlIGNoYXJfdHlwZTsKLSAgICBkZXRhaWw6OmJhc2ljX2J1ZmZlcjxjaGFyX3R5cGU+ICBidWYoYnVmZmVyX3NpemUpOwotICAgIG5vbl9ibG9ja2luZ19hZGFwdGVyPFNpbms+ICAgICAgIG5iKHNuayk7Ci0gICAgc3RkOjpzdHJlYW1zaXplICAgICAgICAgICAgICAgICAgdG90YWwgPSAwOwotICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUgPSBmYWxzZTsKLSAgICB3aGlsZSAoIWRvbmUpIHsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIGFtdDsKLSAgICAgICAgZG9uZSA9IChhbXQgPSBpb3N0cmVhbXM6OnJlYWQoc3JjLCBidWYuZGF0YSgpLCBidWZmZXJfc2l6ZSkpID09IC0xOwotICAgICAgICBpZiAoYW10ICE9IC0xKSB7Ci0gICAgICAgICAgICBpb3N0cmVhbXM6OndyaXRlKG5iLCBidWYuZGF0YSgpLCBhbXQpOwotICAgICAgICAgICAgdG90YWwgKz0gYW10OwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiB0b3RhbDsKLX0KLQotICAgIC8vIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gb2JqZWN0IGlzIHVzZWQgd2l0aCAKLSAgICAvLyBuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OmV4ZWN1dGUoKSBpbiB0aGUgcHJpbWFyeSAKLSAgICAvLyBvdmVybG9hZCBvZiBjb3B5X2ltcGwoKSwgYmVsb3cKLQotLy8gRnVuY3Rpb24gb2JqZWN0IHRoYXQgZGVsZWdhdGVzIHRvIG9uZSBvZiB0aGUgYWJvdmUgZm91ciAKLS8vIG92ZXJsb2FkcyBvZiBjb21wbF9pbXBsKCkKLXRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZSwgdHlwZW5hbWUgU2luaz4KLWNsYXNzIGNvcHlfb3BlcmF0aW9uIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6c3RyZWFtc2l6ZSByZXN1bHRfdHlwZTsKLSAgICBjb3B5X29wZXJhdGlvbihTb3VyY2UmIHNyYywgU2luayYgc25rLCBzdGQ6OnN0cmVhbXNpemUgYnVmZmVyX3NpemUpCi0gICAgICAgIDogc3JjXyhzcmMpLCBzbmtfKHNuayksIGJ1ZmZlcl9zaXplXyhidWZmZXJfc2l6ZSkKLSAgICAgICAgeyB9Ci0gICAgc3RkOjpzdHJlYW1zaXplIG9wZXJhdG9yKCkoKSAKLSAgICB7Ci0gICAgICAgIHJldHVybiBjb3B5X2ltcGwoIHNyY18sIHNua18sIGJ1ZmZlcl9zaXplXywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2RpcmVjdDxTb3VyY2U+KCksIGlzX2RpcmVjdDxTaW5rPigpICk7Ci0gICAgfQotcHJpdmF0ZToKLSAgICBjb3B5X29wZXJhdGlvbiYgb3BlcmF0b3I9KGNvbnN0IGNvcHlfb3BlcmF0aW9uJik7Ci0gICAgU291cmNlJiAgICAgICAgICBzcmNfOwotICAgIFNpbmsmICAgICAgICAgICAgc25rXzsKLSAgICBzdGQ6OnN0cmVhbXNpemUgIGJ1ZmZlcl9zaXplXzsKLX07Ci0KLS8vIFByaW1hcnkgb3ZlcmxvYWQgb2YgY29weV9pbXBsLiBEZWxlZ2F0ZXMgdG8gb25lIG9mIHRoZSBhYm92ZSBmb3VyIAotLy8gb3ZlcmxvYWRzIG9mIGNvbXBsX2ltcGwoKSwgZGVwZW5kaW5nIG9uIHdoaWNoIG9mIHRoZSB0d28gZ2l2ZW4gCi0vLyBkZXZpY2VzLCBpZiBhbnksIG1vZGVscyBEaXJlY3QgKHNlZSAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zL2RvYy9pbmRleC5odG1sP3BhdGg9NC4xLjEuNCkKLXRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZSwgdHlwZW5hbWUgU2luaz4KLXN0ZDo6c3RyZWFtc2l6ZSBjb3B5X2ltcGwoU291cmNlIHNyYywgU2luayBzbmssIHN0ZDo6c3RyZWFtc2l6ZSBidWZmZXJfc2l6ZSkKLXsKLSAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhcl90eXBlX29mPFNvdXJjZT46OnR5cGUgIHNyY19jaGFyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhcl90eXBlX29mPFNpbms+Ojp0eXBlICAgIHNua19jaGFyOwotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKGlzX3NhbWU8c3JjX2NoYXIsIHNua19jaGFyPjo6dmFsdWUpKTsKLSAgICByZXR1cm4gZGV0YWlsOjpleGVjdXRlX2FsbCgKLSAgICAgICAgICAgICAgIGNvcHlfb3BlcmF0aW9uPFNvdXJjZSwgU2luaz4oc3JjLCBzbmssIGJ1ZmZlcl9zaXplKSwKLSAgICAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9jbG9zZV9hbGwoc3JjKSwKLSAgICAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9jbG9zZV9hbGwoc25rKQotICAgICAgICAgICApOwotfQotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotICAgICAgICAgICAgICAgICAgICAKLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBjb3B5LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vIE92ZXJsb2FkIG9mIGNvcHkoKSBmb3IgdGhlIGNhc2Ugd2hlcmUgbmVpdGhlciB0aGUgc291cmNlIG5vciB0aGUgc2luayBpcwotLy8gYSBzdGFuZGFyZCBzdHJlYW0gb3Igc3RyZWFtIGJ1ZmZlcgotdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlLCB0eXBlbmFtZSBTaW5rPgotc3RkOjpzdHJlYW1zaXplCi1jb3B5KCBjb25zdCBTb3VyY2UmIHNyYywgY29uc3QgU2luayYgc25rLAotICAgICAgc3RkOjpzdHJlYW1zaXplIGJ1ZmZlcl9zaXplID0gZGVmYXVsdF9kZXZpY2VfYnVmZmVyX3NpemUKLSAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19ESVNBQkxFX0lGX1NUUkVBTShTb3VyY2UpCi0gICAgICBORE5CT09TVF9JT1NUUkVBTVNfRElTQUJMRV9JRl9TVFJFQU0oU2luaykgKQoteyAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxTb3VyY2U+Ojp0eXBlIGNoYXJfdHlwZTsKLSAgICByZXR1cm4gZGV0YWlsOjpjb3B5X2ltcGwoIGRldGFpbDo6cmVzb2x2ZTxpbnB1dCwgY2hhcl90eXBlPihzcmMpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6cmVzb2x2ZTxvdXRwdXQsIGNoYXJfdHlwZT4oc25rKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc2l6ZSApOyAKLX0KLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gT3ZlcmxvYWQgb2YgY29weSgpIGZvciB0aGUgY2FzZSB3aGVyZSB0aGUgc291cmNlLCBidXQgbm90IHRoZSBzaW5rLCBpcwotLy8gYSBzdGFuZGFyZCBzdHJlYW0gb3Igc3RyZWFtIGJ1ZmZlcgotdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlLCB0eXBlbmFtZSBTaW5rPgotc3RkOjpzdHJlYW1zaXplCi1jb3B5KCBTb3VyY2UmIHNyYywgY29uc3QgU2luayYgc25rLAotICAgICAgc3RkOjpzdHJlYW1zaXplIGJ1ZmZlcl9zaXplID0gZGVmYXVsdF9kZXZpY2VfYnVmZmVyX3NpemUKLSAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19FTkFCTEVfSUZfU1RSRUFNKFNvdXJjZSkKLSAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19ESVNBQkxFX0lGX1NUUkVBTShTaW5rKSApIAoteyAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxTb3VyY2U+Ojp0eXBlIGNoYXJfdHlwZTsKLSAgICByZXR1cm4gZGV0YWlsOjpjb3B5X2ltcGwoIGRldGFpbDo6d3JhcChzcmMpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6cmVzb2x2ZTxvdXRwdXQsIGNoYXJfdHlwZT4oc25rKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc2l6ZSApOwotfQotCi0vLyBPdmVybG9hZCBvZiBjb3B5KCkgZm9yIHRoZSBjYXNlIHdoZXJlIHRoZSBzaW5rLCBidXQgbm90IHRoZSBzb3VyY2UsIGlzCi0vLyBhIHN0YW5kYXJkIHN0cmVhbSBvciBzdHJlYW0gYnVmZmVyCi10ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2UsIHR5cGVuYW1lIFNpbms+Ci1zdGQ6OnN0cmVhbXNpemUKLWNvcHkoIGNvbnN0IFNvdXJjZSYgc3JjLCBTaW5rJiBzbmssCi0gICAgICBzdGQ6OnN0cmVhbXNpemUgYnVmZmVyX3NpemUgPSBkZWZhdWx0X2RldmljZV9idWZmZXJfc2l6ZQotICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0RJU0FCTEVfSUZfU1RSRUFNKFNvdXJjZSkKLSAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19FTkFCTEVfSUZfU1RSRUFNKFNpbmspICkgCi17IAotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhcl90eXBlX29mPFNvdXJjZT46OnR5cGUgY2hhcl90eXBlOwotICAgIHJldHVybiBkZXRhaWw6OmNvcHlfaW1wbCggZGV0YWlsOjpyZXNvbHZlPGlucHV0LCBjaGFyX3R5cGU+KHNyYyksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjp3cmFwKHNuayksIGJ1ZmZlcl9zaXplICk7Ci19Ci0KLS8vIE92ZXJsb2FkIG9mIGNvcHkoKSBmb3IgdGhlIGNhc2Ugd2hlcmUgbmVpdGhlciB0aGUgc291cmNlIG5vciB0aGUgc2luayBpcwotLy8gYSBzdGFuZGFyZCBzdHJlYW0gb3Igc3RyZWFtIGJ1ZmZlcgotdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlLCB0eXBlbmFtZSBTaW5rPgotc3RkOjpzdHJlYW1zaXplCi1jb3B5KCBTb3VyY2UmIHNyYywgU2luayYgc25rLAotICAgICAgc3RkOjpzdHJlYW1zaXplIGJ1ZmZlcl9zaXplID0gZGVmYXVsdF9kZXZpY2VfYnVmZmVyX3NpemUKLSAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19FTkFCTEVfSUZfU1RSRUFNKFNvdXJjZSkKLSAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19FTkFCTEVfSUZfU1RSRUFNKFNpbmspICkgCi17IAotICAgIHJldHVybiBkZXRhaWw6OmNvcHlfaW1wbChkZXRhaWw6OndyYXAoc3JjKSwgZGV0YWlsOjp3cmFwKHNuayksIGJ1ZmZlcl9zaXplKTsKLX0KLQotI2VuZGlmIC8vICNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19DT1BZX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Fic29sdXRlX3BhdGguaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Fic29sdXRlX3BhdGguaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MDk0N2VjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hYnNvbHV0ZV9wYXRoLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8qCi0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuKFNlZSBhY2NvbXBhbnlpbmcgCi0gKiBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0gKiAKLSAqIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotICogRmlsZTogICAgICAgIG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZXhlY3V0ZS5ocHAKLSAqIERhdGU6ICAgICAgICBUaHUgRGVjIDA2IDEzOjIxOjU0IE1TVCAyMDA3Ci0gKiBDb3B5cmlnaHQ6ICAgMjAwNy0yMDA4IENvZGVSYWdlLCBMTEMKLSAqIEF1dGhvcjogICAgICBKb25hdGhhbiBUdXJrYW5pcwotICogQ29udGFjdDogICAgIHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20KLSAqCi0gKiBEZWZpbmVzIHRoZSBmdW5jdGlvbiBuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OmFic29sdXRlX3BhdGgsIHVzZWQgZm9yIAotICogZGVidWcgb3V0cHV0IGZvciBtYXBwZWQgZmlsZXMuCi0gKi8KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0FCU09MVVRFX1BBVEhfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQUJTT0xVVEVfUEFUSF9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy93aW5kb3dzX3Bvc2l4LmhwcD4KLSNpZmRlZiBORE5CT09TVF9JT1NUUkVBTVNfV0lORE9XUwotIyBpbmNsdWRlIDxjY3R5cGU+Ci0jZW5kaWYKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2N1cnJlbnRfZGlyZWN0b3J5LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyBSZXNvbHZlcyB0aGUgZ2l2ZW4gcGF0aCByZWxhdGl2ZSB0byB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeQotaW5saW5lIHN0ZDo6c3RyaW5nIGFic29sdXRlX3BhdGgoY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGgpCi17Ci0jaWZkZWYgTkROQk9PU1RfSU9TVFJFQU1TX1dJTkRPV1MKLSAgICByZXR1cm4gcGF0aC5zaXplKCkgJiYgKHBhdGhbMF0gPT0gJy8nIHx8IHBhdGhbMF0gPT0gJ1xcJykgfHwKLSAgICAgICAgICAgcGF0aC5zaXplKCkgPiAxICYmIHN0ZDo6aXNhbHBoYShwYXRoWzBdKSAmJiBwYXRoWzFdID09ICc6JyA/Ci0gICAgICAgICAgICAgICBwYXRoIDoKLSAgICAgICAgICAgICAgIGN1cnJlbnRfZGlyZWN0b3J5KCkgKyAnXFwnICsgcGF0aDsKLSNlbHNlIC8vICNpZmRlZiBORE5CT09TVF9JT1NUUkVBTVNfV0lORE9XUwotICAgIHJldHVybiBwYXRoLnNpemUoKSAmJiAocGF0aFswXSA9PSAnLycpID8KLSAgICAgICAgcGF0aCA6Ci0gICAgICAgIGN1cnJlbnRfZGlyZWN0b3J5KCkgKyAnLycgKyBwYXRoOwotI2VuZGlmIC8vICNpZmRlZiBORE5CT09TVF9JT1NUUkVBTVNfV0lORE9XUwotfQotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQUJTT0xVVEVfUEFUSF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hY2Nlc3NfY29udHJvbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWNjZXNzX2NvbnRyb2wuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMDZhZmE1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hY2Nlc3NfY29udHJvbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NyArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gQ29udGFpbnMgdGhlIGRlZmluaXRpb24gb2YgdGhlIGNsYXNzIHRlbXBsYXRlIGFjY2Vzc19jb250cm9sLCB3aGljaAotLy8gYWxsb3dzIHRoZSB0eXBlIG9mIGluaGVyaXRhbmNlIGZyb20gYSBwcm92aWRlZCBiYXNlIGNsYXNzIHRvIGJlIHNwZWNpZmllZCAKLS8vIHVzaW5nIGEgdGVtcGxhdGUgcGFyYW1ldGVyLgotCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0FDQ0VTU19DT05UUk9MX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQUNDRVNTX0NPTlRST0xfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZiAgICAgICAgICAgICAgCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3NlbGVjdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lkZW50aXR5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLXN0cnVjdCBwcm90ZWN0ZWRfIHsgfTsgIC8vIFJlcHJlc2VudHMgcHJvdGVjdGVkIGluaGVyaXRhbmNlLgotc3RydWN0IHB1YmxpY18geyB9OyAgICAgLy8gUmVwcmVzZW50cyBwdWJsaWMgaW5oZXJpdGFuY2UuCi0KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSAgICAvLyBJbXBsZW1lbnRzIHByb3RlY3RlZCBpbmhlcml0YW5jZS4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgIHN0cnVjdCBwcm90XyA6IHByb3RlY3RlZCBVIAotICAgIHsgCi0gICAgICAgIHByb3RfKCkgeyB9Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFY+IHByb3RfKFYgdikgOiBVKHYpIHsgfQotICAgIH07Ci0KLSAgICAvLyBJbXBsZW1lbnRzIHB1YmxpYyBpbmhlcml0YW5jZS4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBzdHJ1Y3QgcHViXyA6IHB1YmxpYyBVIHsgCi0gICAgICAgIHB1Yl8oKSB7IH0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVj4gcHViXyhWIHYpIDogVSh2KSB7IH0KLSAgICB9OwotCi0vLwotLy8gVXNlZCB0byBkZWR1Y2UgdGhlIGJhc2UgdHlwZSBmb3IgdGhlIHRlbXBsYXRlIGFjY2Vzc19jb250cm9sLgotLy8KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEFjY2Vzcz4KLXN0cnVjdCBhY2Nlc3NfY29udHJvbF9iYXNlIHsKLSAgICB0eXBlZGVmIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhZF9hY2Nlc3Nfc3BlY2lmaWVyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgICAgICAgICBpb3N0cmVhbXM6OnNlbGVjdDwgIC8vIERpc2FtYmlndWF0aW9uIGZvciBUcnU2NAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3NhbWU8Ci0gICAgICAgICAgICAgICAgICAgIEFjY2VzcywgcHJvdGVjdGVkXwotICAgICAgICAgICAgICAgID4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdF88VD4sCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfc2FtZTwKLSAgICAgICAgICAgICAgICAgICAgQWNjZXNzLCBwdWJsaWNfCi0gICAgICAgICAgICAgICAgPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJfPFQ+LAotICAgICAgICAgICAgICAgIGVsc2VfLCAgICAgICAgICAgICAgICAgICAgICAgICAgYmFkX2FjY2Vzc19zcGVjaWZpZXIKLSAgICAgICAgICAgID46OnR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU7Ci19OwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi0vLwotLy8gVGVtcGxhdGUgbmFtZTogYWNjZXNzX2NvbnRyb2wuCi0vLyBEZXNjcmlwdGlvbjogQWxsb3dzIHRoZSB0eXBlIG9mIGluaGVyaXRhbmNlIGZyb20gYSBwcm92aWRlZCBiYXNlIGNsYXNzCi0vLyAgICAgIHRvIGJlIHNwZWNpZmllZCB1c2luZyBhbiBpbnQgdGVtcGxhdGUgcGFyYW1ldGVyLgotLy8gVGVtcGxhdGUgcGFyYW1ldGVyczoKLS8vICAgICAgQmFzZSAtIFRoZSBjbGFzcyBmcm9tIHdoaWNoIHRvIGluaGVyaXQgKGluZGlyZWN0bHkuKQotLy8gICAgICBBY2Nlc3MgLSBUaGUgdHlwZSBvZiBhY2Nlc3MgZGVzaXJlZC4gTXVzdCBiZSBvbmUgb2YgdGhlIAotLy8gICAgICAgICAgdmFsdWVzIGFjY2Vzc19iYXNlOjpwcm90IG9yIGFjY2Vzc19iYXNlOjpwdWIuCi0vLwotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIEFjY2VzcywKLSAgICAgICAgICB0eXBlbmFtZSBCYXNlID0gLy8gVkM2IHdvcmthcmFvdW5kIChDb21waWxlciBFcnJvciBDMjUxNikKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZGV0YWlsOjphY2Nlc3NfY29udHJvbF9iYXNlPFQsIEFjY2Vzcz46OnR5cGUgPgotc3RydWN0IGFjY2Vzc19jb250cm9sIDogcHVibGljIEJhc2UgeyAKLSAgICBhY2Nlc3NfY29udHJvbCgpIHsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGV4cGxpY2l0IGFjY2Vzc19jb250cm9sKFUgdSkgOiBCYXNlKHUpIHsgfQotfTsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19BQ0NFU1NfQ09OVFJPTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGFwdGVyL2NvbmNlcHRfYWRhcHRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRhcHRlci9jb25jZXB0X2FkYXB0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTgyYmVlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGFwdGVyL2NvbmNlcHRfYWRhcHRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyODcgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT05DRVBUX0FEQVBURVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09OQ0VQVF9BREFQVEVSX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNGSU5BRS4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY29uY2VwdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jYXRlZ29yaWVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvbm9uX2Jsb2NraW5nX2FkYXB0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY2FsbF90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY2hhcl90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZGlzcGF0Y2guaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZXJyb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc3RyZWFtYnVmLmhwcD4gICAgICAgIC8vIHB1YnN5bmMuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvdW5yZWFjaGFibGVfcmV0dXJuLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV2aWNlL251bGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9vcGVyYXRpb25zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHA+Ci0KLS8vIE11c3QgY29tZSBsYXN0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2Rpc2FibGVfd2FybmluZ3MuaHBwPiAgLy8gTVNWQy4KLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENhdGVnb3J5PiBzdHJ1Y3QgZGV2aWNlX3dyYXBwZXJfaW1wbDsKLXRlbXBsYXRlPHR5cGVuYW1lIENhdGVnb3J5PiBzdHJ1Y3QgZmx0X3dyYXBwZXJfaW1wbDsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIGNvbmNlcHRfYWRhcHRlciB7Ci1wcml2YXRlOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjp2YWx1ZV90eXBlPFQ+Ojp0eXBlICAgICAgIHZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkaXNwYXRjaDxULCBpbnB1dCwgb3V0cHV0Pjo6dHlwZSAgaW5wdXRfdGFnOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGlzcGF0Y2g8VCwgb3V0cHV0LCBpbnB1dD46OnR5cGUgIG91dHB1dF90YWc7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgICAgICAgbXBsOjppZl88Ci0gICAgICAgICAgICAgICAgaXNfZGV2aWNlPFQ+LAotICAgICAgICAgICAgICAgIGRldmljZV93cmFwcGVyX2ltcGw8aW5wdXRfdGFnPiwKLSAgICAgICAgICAgICAgICBmbHRfd3JhcHBlcl9pbXBsPGlucHV0X3RhZz4KLSAgICAgICAgICAgID46OnR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9pbXBsOwotICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgICAgICAgIG1wbDo6aWZfPAotICAgICAgICAgICAgICAgIGlzX2RldmljZTxUPiwKLSAgICAgICAgICAgICAgICBkZXZpY2Vfd3JhcHBlcl9pbXBsPG91dHB1dF90YWc+LAotICAgICAgICAgICAgICAgIGZsdF93cmFwcGVyX2ltcGw8b3V0cHV0X3RhZz4KLSAgICAgICAgICAgID46OnR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfaW1wbDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICAgICAgICBtcGw6OmlmXzwKLSAgICAgICAgICAgICAgICBpc19kZXZpY2U8VD4sCi0gICAgICAgICAgICAgICAgZGV2aWNlX3dyYXBwZXJfaW1wbDxhbnlfdGFnPiwKLSAgICAgICAgICAgICAgICBmbHRfd3JhcHBlcl9pbXBsPGFueV90YWc+Ci0gICAgICAgICAgICA+Ojp0eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW55X2ltcGw7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUgICAgICAgICAgICAgY2hhcl90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2F0ZWdvcnlfb2Y8VD46OnR5cGUgICAgICAgICAgICAgIGNhdGVnb3J5OwotCi0gICAgZXhwbGljaXQgY29uY2VwdF9hZGFwdGVyKGNvbnN0IHJlZmVyZW5jZV93cmFwcGVyPFQ+JiByZWYpIDogdF8ocmVmLmdldCgpKQotICAgIHsgTkROQk9PU1RfU1RBVElDX0FTU0VSVChpc19zdGRfaW88VD46OnZhbHVlKTsgfQotICAgIGV4cGxpY2l0IGNvbmNlcHRfYWRhcHRlcihjb25zdCBUJiB0KSA6IHRfKHQpCi0gICAgeyBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCFpc19zdGRfaW88VD46OnZhbHVlKTsgfQotCi0gICAgVCYgb3BlcmF0b3IqKCkgeyByZXR1cm4gdF87IH0KLSAgICBUKiBvcGVyYXRvci0+KCkgeyByZXR1cm4gJnRfOyB9Ci0KLSAgICBzdGQ6OnN0cmVhbXNpemUgcmVhZChjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsgcmV0dXJuIHRoaXMtPnJlYWQocywgbiwgKGJhc2ljX251bGxfc291cmNlPGNoYXJfdHlwZT4qKSAwKTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlPgotICAgIHN0ZDo6c3RyZWFtc2l6ZSByZWFkKGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4sIFNvdXJjZSogc3JjKQotICAgIHsgcmV0dXJuIGlucHV0X2ltcGw6OnJlYWQodF8sIHNyYywgcywgbik7IH0KLQotICAgIHN0ZDo6c3RyZWFtc2l6ZSB3cml0ZShjb25zdCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsgcmV0dXJuIHRoaXMtPndyaXRlKHMsIG4sIChiYXNpY19udWxsX3Npbms8Y2hhcl90eXBlPiopIDApOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgIHN0ZDo6c3RyZWFtc2l6ZSB3cml0ZShjb25zdCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuLCBTaW5rKiBzbmspCi0gICAgeyByZXR1cm4gb3V0cHV0X2ltcGw6OndyaXRlKHRfLCBzbmssIHMsIG4pOyB9Ci0KLSAgICBzdGQ6OnN0cmVhbXBvcyBzZWVrKCBzdHJlYW1fb2Zmc2V0IG9mZiwgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoICkKLSAgICB7IAotICAgICAgICByZXR1cm4gdGhpcy0+c2Vlayggb2ZmLCB3YXksIHdoaWNoLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIChiYXNpY19udWxsX2RldmljZTxjaGFyX3R5cGUsIHNlZWthYmxlPiopIDApOyAKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2U+Ci0gICAgc3RkOjpzdHJlYW1wb3Mgc2Vlayggc3RyZWFtX29mZnNldCBvZmYsIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCwgRGV2aWNlKiBkZXYgKQotICAgIHsgcmV0dXJuIGFueV9pbXBsOjpzZWVrKHRfLCBkZXYsIG9mZiwgd2F5LCB3aGljaCk7IH0KLQotICAgIHZvaWQgY2xvc2UoTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLSAgICB7IHRoaXMtPmNsb3NlKHdoaWNoLCAoYmFzaWNfbnVsbF9kZXZpY2U8Y2hhcl90eXBlLCBzZWVrYWJsZT4qKSAwKTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotICAgIHZvaWQgY2xvc2UoTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCwgRGV2aWNlKiBkZXYpCi0gICAgeyBhbnlfaW1wbDo6Y2xvc2UodF8sIGRldiwgd2hpY2gpOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2U+Ci0gICAgYm9vbCBmbHVzaCggRGV2aWNlKiBkZXYgKQotICAgIHsKLSAgICAgICAgYm9vbCByZXN1bHQgPSBhbnlfaW1wbDo6Zmx1c2godF8sIGRldik7Ci0gICAgICAgIGlmIChkZXYgJiYgZGV2LT5ORE5CT09TVF9JT1NUUkVBTVNfUFVCU1lOQygpID09IC0xKQotICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTG9jYWxlPiAvLyBBdm9pZCBkZXBlbmRlbmN5IG9uIDxsb2NhbGU+Ci0gICAgdm9pZCBpbWJ1ZShjb25zdCBMb2NhbGUmIGxvYykgeyBpb3N0cmVhbXM6OmltYnVlKHRfLCBsb2MpOyB9Ci0KLSAgICBzdGQ6OnN0cmVhbXNpemUgb3B0aW1hbF9idWZmZXJfc2l6ZSgpIGNvbnN0Ci0gICAgeyByZXR1cm4gaW9zdHJlYW1zOjpvcHRpbWFsX2J1ZmZlcl9zaXplKHRfKTsgfQotcHVibGljOgotICAgIGNvbmNlcHRfYWRhcHRlciYgb3BlcmF0b3I9KGNvbnN0IGNvbmNlcHRfYWRhcHRlciYpOwotICAgIHZhbHVlX3R5cGUgdF87Ci19OwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLVNwZWNpYWxpemF0aW9ucyBvZiBkZXZpY2Vfd3JhcHBlcl9pbXBsLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGV2aWNlX3dyYXBwZXJfaW1wbDxhbnlfdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlLCB0eXBlbmFtZSBEdW1teT4KLSAgICBzdGF0aWMgc3RkOjpzdHJlYW1wb3MgCi0gICAgc2VlayggRGV2aWNlJiBkZXYsIER1bW15Kiwgc3RyZWFtX29mZnNldCBvZmYsIAotICAgICAgICAgIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXksIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2ggKQotICAgIHsgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgY2F0ZWdvcnlfb2Y8RGV2aWNlPjo6dHlwZSBjYXRlZ29yeTsKLSAgICAgICAgcmV0dXJuIHNlZWsoZGV2LCBvZmYsIHdheSwgd2hpY2gsIGNhdGVnb3J5KCkpOyAKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2U+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtcG9zIAotICAgIHNlZWsoIERldmljZSYsIHN0cmVhbV9vZmZzZXQsIE5ETkJPT1NUX0lPUzo6c2Vla2RpciwgCi0gICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSwgYW55X3RhZyApCi0gICAgeyAKLSAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihjYW50X3NlZWsoKSk7Ci0gICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19VTlJFQUNIQUJMRV9SRVRVUk4oMCkKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2U+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtcG9zIAotICAgIHNlZWsoIERldmljZSYgZGV2LCBzdHJlYW1fb2Zmc2V0IG9mZiwgCi0gICAgICAgICAgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCwgCi0gICAgICAgICAgcmFuZG9tX2FjY2VzcyApCi0gICAgeyAKLSAgICAgICAgcmV0dXJuIGlvc3RyZWFtczo6c2VlayhkZXYsIG9mZiwgd2F5LCB3aGljaCk7IAotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERldmljZSwgdHlwZW5hbWUgRHVtbXk+Ci0gICAgc3RhdGljIHZvaWQgY2xvc2UoRGV2aWNlJiBkZXYsIER1bW15KiwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLSAgICB7IGlvc3RyZWFtczo6Y2xvc2UoZGV2LCB3aGljaCk7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERldmljZSwgdHlwZW5hbWUgRHVtbXk+Ci0gICAgc3RhdGljIGJvb2wgZmx1c2goRGV2aWNlJiBkZXYsIER1bW15KikKLSAgICB7IHJldHVybiBpb3N0cmVhbXM6OmZsdXNoKGRldik7IH0KLX07Ci0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGRldmljZV93cmFwcGVyX2ltcGw8aW5wdXQ+IDogZGV2aWNlX3dyYXBwZXJfaW1wbDxhbnlfdGFnPiAgewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERldmljZSwgdHlwZW5hbWUgRHVtbXk+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtc2l6ZQotICAgIHJlYWQoIERldmljZSYgZGV2LCBEdW1teSosIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxEZXZpY2U+Ojp0eXBlKiBzLAotICAgICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBuICkKLSAgICB7IHJldHVybiBpb3N0cmVhbXM6OnJlYWQoZGV2LCBzLCBuKTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlLCB0eXBlbmFtZSBEdW1teT4KLSAgICBzdGF0aWMgc3RkOjpzdHJlYW1zaXplIAotICAgIHdyaXRlKCBEZXZpY2UmLCBEdW1teSosIGNvbnN0IHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxEZXZpY2U+Ojp0eXBlKiwKLSAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplICkKLSAgICB7IG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oY2FudF93cml0ZSgpKTsKLSAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19VTlJFQUNIQUJMRV9SRVRVUk4oMCkgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRldmljZV93cmFwcGVyX2ltcGw8b3V0cHV0PiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlLCB0eXBlbmFtZSBEdW1teT4KLSAgICBzdGF0aWMgc3RkOjpzdHJlYW1zaXplCi0gICAgcmVhZChEZXZpY2UmLCBEdW1teSosIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxEZXZpY2U+Ojp0eXBlKiwgc3RkOjpzdHJlYW1zaXplKQotICAgIHsgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihjYW50X3JlYWQoKSk7Ci0gICAgICBORE5CT09TVF9JT1NUUkVBTVNfVU5SRUFDSEFCTEVfUkVUVVJOKDApIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERldmljZSwgdHlwZW5hbWUgRHVtbXk+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtc2l6ZSAKLSAgICB3cml0ZSggRGV2aWNlJiBkZXYsIER1bW15KiwgY29uc3QgdHlwZW5hbWUgY2hhcl90eXBlX29mPERldmljZT46OnR5cGUqIHMsCi0gICAgICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBuICkKLSAgICB7IHJldHVybiBpb3N0cmVhbXM6OndyaXRlKGRldiwgcywgbik7IH0KLX07Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tU3BlY2lhbGl6YXRpb25zIG9mIGZsdF93cmFwcGVyX2ltcGwtLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmbHRfd3JhcHBlcl9pbXBsPGFueV90YWc+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIERldmljZT4KLSAgICBzdGF0aWMgc3RkOjpzdHJlYW1wb3MKLSAgICBzZWVrKCBGaWx0ZXImIGYsIERldmljZSogZGV2LCBzdHJlYW1fb2Zmc2V0IG9mZiwKLSAgICAgICAgICBORE5CT09TVF9JT1M6OnNlZWtkaXIgd2F5LCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoICkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgY2F0ZWdvcnlfb2Y8RmlsdGVyPjo6dHlwZSBjYXRlZ29yeTsKLSAgICAgICAgcmV0dXJuIHNlZWsoZiwgZGV2LCBvZmYsIHdheSwgd2hpY2gsIGNhdGVnb3J5KCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlciwgdHlwZW5hbWUgRGV2aWNlPgotICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXBvcwotICAgIHNlZWsoIEZpbHRlciYsIERldmljZSosIHN0cmVhbV9vZmZzZXQsCi0gICAgICAgICAgTkROQk9PU1RfSU9TOjpzZWVrZGlyLCBORE5CT09TVF9JT1M6Om9wZW5tb2RlLCBhbnlfdGFnICkKLSAgICB7IG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oY2FudF9zZWVrKCkpOwotICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX1VOUkVBQ0hBQkxFX1JFVFVSTigwKSB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIERldmljZT4KLSAgICBzdGF0aWMgc3RkOjpzdHJlYW1wb3MKLSAgICBzZWVrKCBGaWx0ZXImIGYsIERldmljZSogZGV2LCBzdHJlYW1fb2Zmc2V0IG9mZiwKLSAgICAgICAgICBORE5CT09TVF9JT1M6OnNlZWtkaXIgd2F5LCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoLAotICAgICAgICAgIHJhbmRvbV9hY2Nlc3MgdGFnICkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgY2F0ZWdvcnlfb2Y8RmlsdGVyPjo6dHlwZSBjYXRlZ29yeTsKLSAgICAgICAgcmV0dXJuIHNlZWsoZiwgZGV2LCBvZmYsIHdheSwgd2hpY2gsIHRhZywgY2F0ZWdvcnkoKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyLCB0eXBlbmFtZSBEZXZpY2U+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtcG9zCi0gICAgc2VlayggRmlsdGVyJiBmLCBEZXZpY2UqIGRldiwgc3RyZWFtX29mZnNldCBvZmYsCi0gICAgICAgICAgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSwKLSAgICAgICAgICByYW5kb21fYWNjZXNzLCBhbnlfdGFnICkKLSAgICB7IHJldHVybiBmLnNlZWsoKmRldiwgb2ZmLCB3YXkpOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIERldmljZT4KLSAgICBzdGF0aWMgc3RkOjpzdHJlYW1wb3MKLSAgICBzZWVrKCBGaWx0ZXImIGYsIERldmljZSogZGV2LCBzdHJlYW1fb2Zmc2V0IG9mZiwKLSAgICAgICAgICBORE5CT09TVF9JT1M6OnNlZWtkaXIgd2F5LCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoLAotICAgICAgICAgIHJhbmRvbV9hY2Nlc3MsIHR3b19zZXF1ZW5jZSApCi0gICAgeyByZXR1cm4gZi5zZWVrKCpkZXYsIG9mZiwgd2F5LCB3aGljaCk7ICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIERldmljZT4KLSAgICBzdGF0aWMgdm9pZCBjbG9zZShGaWx0ZXImIGYsIERldmljZSogZGV2LCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKQotICAgIHsgaW9zdHJlYW1zOjpjbG9zZShmLCAqZGV2LCB3aGljaCk7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlciwgdHlwZW5hbWUgRGV2aWNlPgotICAgIHN0YXRpYyBib29sIGZsdXNoKEZpbHRlciYgZiwgRGV2aWNlKiBkZXYpCi0gICAgeyByZXR1cm4gaW9zdHJlYW1zOjpmbHVzaChmLCAqZGV2KTsgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZsdF93cmFwcGVyX2ltcGw8aW5wdXQ+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIFNvdXJjZT4KLSAgICBzdGF0aWMgc3RkOjpzdHJlYW1zaXplCi0gICAgcmVhZCggRmlsdGVyJiBmLCBTb3VyY2UqIHNyYywgdHlwZW5hbWUgY2hhcl90eXBlX29mPEZpbHRlcj46OnR5cGUqIHMsCi0gICAgICAgICAgc3RkOjpzdHJlYW1zaXplIG4gKQotICAgIHsgcmV0dXJuIGlvc3RyZWFtczo6cmVhZChmLCAqc3JjLCBzLCBuKTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyLCB0eXBlbmFtZSBTaW5rPgotICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUgCi0gICAgd3JpdGUoIEZpbHRlciYsIFNpbmsqLCBjb25zdCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8RmlsdGVyPjo6dHlwZSosIAotICAgICAgICAgICBzdGQ6OnN0cmVhbXNpemUgKQotICAgIHsgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihjYW50X3dyaXRlKCkpOwotICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX1VOUkVBQ0hBQkxFX1JFVFVSTigwKSB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZmx0X3dyYXBwZXJfaW1wbDxvdXRwdXQ+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIFNvdXJjZT4KLSAgICBzdGF0aWMgc3RkOjpzdHJlYW1zaXplCi0gICAgcmVhZChGaWx0ZXImLCBTb3VyY2UqLCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8RmlsdGVyPjo6dHlwZSosc3RkOjpzdHJlYW1zaXplKQotICAgIHsgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihjYW50X3JlYWQoKSk7Ci0gICAgICBORE5CT09TVF9JT1NUUkVBTVNfVU5SRUFDSEFCTEVfUkVUVVJOKDApIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlciwgdHlwZW5hbWUgU2luaz4KLSAgICBzdGF0aWMgc3RkOjpzdHJlYW1zaXplIAotICAgIHdyaXRlKCBGaWx0ZXImIGYsIFNpbmsqIHNuaywgY29uc3QgdHlwZW5hbWUgY2hhcl90eXBlX29mPEZpbHRlcj46OnR5cGUqIHMsCi0gICAgICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBuICkKLSAgICB7IHJldHVybiBpb3N0cmVhbXM6OndyaXRlKGYsICpzbmssIHMsIG4pOyB9Ci19OwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9lbmFibGVfd2FybmluZ3MuaHBwPiAgLy8gTVNWQy4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT05DRVBUX0FEQVBURVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRhcHRlci9kZXZpY2VfYWRhcHRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRhcHRlci9kZXZpY2VfYWRhcHRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhODJjN2EuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvZGV2aWNlX2FkYXB0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLyoKLSAqIERlZmluZXMgdGhlIGNsYXNzIHRlbXBsYXRlIG5kbmJvb3N0Ojppb3N0cmVhbXM6OmRldGFpbDo6ZGV2aWNlX2FkYXB0ZXIsCi0gKiBhIGNvbnZlbmllbmNlIGJhc2UgY2xhc3MgZm9yIGRldmljZSBhZGFwdGVycy4KLSAqCi0gKiBGaWxlOiAgICAgICAgbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGFwdGVyL2ZpbHRlcl9hZGFwdGVyLmhwcAotICogRGF0ZTogICAgICAgIE1vbiBOb3YgMjYgMTQ6MzU6NDggTVNUIDIwMDcKLSAqIAotICogQ29weXJpZ2h0OiAgIDIwMDctMjAwOCBDb2RlUmFnZSwgTExDCi0gKiBBdXRob3I6ICAgICAgSm9uYXRoYW4gVHVya2FuaXMKLSAqIENvbnRhY3Q6ICAgICB0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tCi0gKgotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLihTZWUgYWNjb21wYW55aW5nIAotICogZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotICogCi0gKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0gKi8KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0RFVklDRV9BREFQVEVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0RFVklDRV9BREFQVEVSX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NhdGVnb3JpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY2FsbF90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvb3BlcmF0aW9ucy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIGRldmljZV9hZGFwdGVyIHsKLXByaXZhdGU6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnZhbHVlX3R5cGU8VD46OnR5cGUgdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6cGFyYW1fdHlwZTxUPjo6dHlwZSBwYXJhbV90eXBlOwotcHVibGljOgotICAgIGV4cGxpY2l0IGRldmljZV9hZGFwdGVyKHBhcmFtX3R5cGUgdCkgOiB0Xyh0KSB7IH0KLSAgICBUJiBjb21wb25lbnQoKSB7IHJldHVybiB0XzsgfQotCi0gICAgdm9pZCBjbG9zZSgpIAotICAgIHsKLSAgICAgICAgZGV0YWlsOjpjbG9zZV9hbGwodF8pOwotICAgIH0KLQotICAgIHZvaWQgY2xvc2UoTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkgCi0gICAgeyAKLSAgICAgICAgaW9zdHJlYW1zOjpjbG9zZSh0Xywgd2hpY2gpOyAKLSAgICB9Ci0KLSAgICBib29sIGZsdXNoKCkgCi0gICAgeyAKLSAgICAgICAgcmV0dXJuIGlvc3RyZWFtczo6Zmx1c2godF8pOyAKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMb2NhbGU+IC8vIEF2b2lkIGRlcGVuZGVuY3kgb24gPGxvY2FsZT4KLSAgICB2b2lkIGltYnVlKGNvbnN0IExvY2FsZSYgbG9jKSB7IGlvc3RyZWFtczo6aW1idWUodF8sIGxvYyk7IH0KLQotICAgIHN0ZDo6c3RyZWFtc2l6ZSBvcHRpbWFsX2J1ZmZlcl9zaXplKCkgY29uc3QgCi0gICAgeyByZXR1cm4gaW9zdHJlYW1zOjpvcHRpbWFsX2J1ZmZlcl9zaXplKHRfKTsgfQotcHVibGljOgotICAgIHZhbHVlX3R5cGUgdF87Ci19OwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfREVWSUNFX0FEQVBURVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRhcHRlci9kaXJlY3RfYWRhcHRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRhcHRlci9kaXJlY3RfYWRhcHRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5ZWViZjkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvZGlyZWN0X2FkYXB0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjgxICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfRElSRUNUX0FEQVBURVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfRElSRUNUX0FEQVBURVJfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZiAgICAgICAgICAgICAgCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgICAgICAvLyBTRklOQUUsIE1TVkMsIHB1dCBwdHJkaWZmX3QgaW4gc3RkLgotI2luY2x1ZGUgPGFsZ29yaXRobT4gICAgICAgICAgICAgIC8vIGNvcHksIG1pbi4KLSNpbmNsdWRlIDxjc3RkZGVmPiAgICAgICAgICAgICAgICAvLyBwdHJkaWZmX3QuCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jYXRlZ29yaWVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9saW1pdHMuaHBwPiAgICAgICAgLy8gZm9yd2FyZGluZy4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy93aWRlX3N0cmVhbXMuaHBwPiAgLy8gbG9jYWxlLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZG91YmxlX29iamVjdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9lcnJvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3MuaHBwPiAgLy8gb3Blbm1vZGUsIHNlZWtkaXIsIGludCB0eXBlcy4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvdHJhaXRzLmhwcD4gICAgICAvLyBtb2RlX29mLCBpc19kaXJlY3QuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4gCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL29yLmhwcD4gCi0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9sb2NhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9iaW5hcnlfcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGhyb3dfZXhjZXB0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+Ci0KLS8vIE11c3QgY29tZSBsYXN0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2Rpc2FibGVfd2FybmluZ3MuaHBwPiAvLyBWQzcuMQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0gICAgICAgICAgICAgICAgICAgIAotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIGRpcmVjdF9hZGFwdGVyX2Jhc2UtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gUHV0IGFsbCBpbml0aWFsaXphdGlvbiBpbiBiYXNlIGNsYXNzIHRvIGZhY2lsaWF0ZSBmb3J3YXJkaW5nLgotdGVtcGxhdGU8dHlwZW5hbWUgRGlyZWN0PgotY2xhc3MgZGlyZWN0X2FkYXB0ZXJfYmFzZSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8RGlyZWN0Pjo6dHlwZSAgY2hhcl90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbW9kZV9vZjxEaXJlY3Q+Ojp0eXBlICAgICAgIG1vZGVfdHlwZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkgCi0gICAgICAgIDogbW9kZV90eXBlLAotICAgICAgICAgIGRldmljZV90YWcsCi0gICAgICAgICAgY2xvc2FibGVfdGFnCi0gICAgICAgICAgI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fTE9DQUxFCi0gICAgICAgICAgLCBsb2NhbGl6YWJsZV90YWcKLSAgICAgICAgICAjZW5kaWYKLSAgICAgICAgeyB9OwotcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IGRpcmVjdF9hZGFwdGVyX2Jhc2UoY29uc3QgRGlyZWN0JiBkKTsKLSAgICB0eXBlZGVmIGlzX2NvbnZlcnRpYmxlPGNhdGVnb3J5LCB0d29fc2VxdWVuY2U+IGlzX2RvdWJsZTsKLSAgICBzdHJ1Y3QgcG9pbnRlcnMgewotICAgICAgICBjaGFyX3R5cGUgKmJlZywgKnB0ciwgKmVuZDsKLSAgICB9OwotICAgIHZvaWQgaW5pdF9pbnB1dChtcGw6OnRydWVfKTsKLSAgICB2b2lkIGluaXRfaW5wdXQobXBsOjpmYWxzZV8pIHsgfQotICAgIHZvaWQgaW5pdF9vdXRwdXQobXBsOjp0cnVlXyk7Ci0gICAgdm9pZCBpbml0X291dHB1dChtcGw6OmZhbHNlXykgeyB9Ci0gICAgZG91YmxlX29iamVjdDxwb2ludGVycywgaXNfZG91YmxlPiAgcHRyc187Ci0gICAgRGlyZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZF87Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBEaXJlY3Q+Ci1jbGFzcyBkaXJlY3RfYWRhcHRlciA6IHByaXZhdGUgZGlyZWN0X2FkYXB0ZXJfYmFzZTxEaXJlY3Q+IHsKLXByaXZhdGU6Ci0gICAgdHlwZWRlZiBkaXJlY3RfYWRhcHRlcl9iYXNlPERpcmVjdD4gICAgICBiYXNlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX3R5cGU6OnBvaW50ZXJzICAgICBwb2ludGVyczsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfdHlwZTo6aXNfZG91YmxlICAgIGlzX2RvdWJsZTsKLSAgICB1c2luZyBiYXNlX3R5cGU6OnB0cnNfOwotICAgIHVzaW5nIGJhc2VfdHlwZTo6ZF87Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX3R5cGU6OmNoYXJfdHlwZSAgICBjaGFyX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX3R5cGU6OmNhdGVnb3J5ICAgICBjYXRlZ29yeTsKLQotICAgICAgICAvLyBDb25zdHJ1Y3RvcnMKLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMTApCi0gICAgZGlyZWN0X2FkYXB0ZXIoY29uc3QgRGlyZWN0JiBkKSA6IGJhc2VfdHlwZShkKSB7IH0gICAKLSAgICBkaXJlY3RfYWRhcHRlcihjb25zdCBkaXJlY3RfYWRhcHRlciYgZCkgOiBiYXNlX3R5cGUoZCkgeyB9Ci0jIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9MSU1JVFMgKDEsIE5ETkJPT1NUX0lPU1RSRUFNU19NQVhfRk9SV0FSRElOR19BUklUWSkKLSNlbHNlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICBzdHJ1Y3QgaXNfZGlyZWN0Ci0gICAgICAgIDogbXBsOjpvcl88IAotICAgICAgICAgICAgICBpc19zYW1lPFUsIGRpcmVjdF9hZGFwdGVyPERpcmVjdD4gPiwgCi0gICAgICAgICAgICAgIGlzX3NhbWU8VSwgRGlyZWN0PiAKLSAgICAgICAgICA+Ci0gICAgICAgIHsgfTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgIGRpcmVjdF9hZGFwdGVyKGNvbnN0IFUmIHUpIAotICAgICAgICA6IGJhc2VfdHlwZShmb3J3YXJkKHUsIGlzX2RpcmVjdDxVPigpKSkKLSAgICAgICAgeyB9Ci0jIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9MSU1JVFMgKDIsIE5ETkJPT1NUX0lPU1RSRUFNU19NQVhfRk9SV0FSRElOR19BUklUWSkKLSNlbmRpZgotCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKG4pIFwKLSAgICB0ZW1wbGF0ZTxORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhuLCB0eXBlbmFtZSBQKT4gXAotICAgIGRpcmVjdF9hZGFwdGVyKE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNUyhuLCBjb25zdCBQLCAmcCkpIFwKLSAgICAgICAgOiBiYXNlX3R5cGUoRGlyZWN0KE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKG4sIHApKSkgXAotICAgICAgICB7IH0gXAotICAgIC8qKi8KLSNpbmNsdWRlIE5ETkJPT1NUX1BQX0xPQ0FMX0lURVJBVEUoKQotI3VuZGVmIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPCi0KLSAgICAgICAgLy8gRGV2aWNlIGludGVyZmFjZS4KLQotICAgIHN0ZDo6c3RyZWFtc2l6ZSByZWFkKGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pOwotICAgIHN0ZDo6c3RyZWFtc2l6ZSB3cml0ZShjb25zdCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKTsKLSAgICBzdGQ6OnN0cmVhbXBvcyBzZWVrKCBzdHJlYW1fb2Zmc2V0LCBORE5CT09TVF9JT1M6OnNlZWtkaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSA9IE5ETkJPT1NUX0lPUzo6aW4gfCBORE5CT09TVF9JT1M6Om91dCApOwotICAgIHZvaWQgY2xvc2UoKTsKLSAgICB2b2lkIGNsb3NlKE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpOwotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fTE9DQUxFCi0gICAgdm9pZCBpbWJ1ZShjb25zdCBzdGQ6OmxvY2FsZSYpOwotI2VuZGlmCi0KLSAgICAgICAgLy8gRGlyZWN0IGRldmljZSBhY2Nlc3MuCi0KLSAgICBEaXJlY3QmIG9wZXJhdG9yKigpIHsgcmV0dXJuIGRfOyB9Ci0gICAgRGlyZWN0KiBvcGVyYXRvci0+KCkgeyByZXR1cm4gJmRfOyB9Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzEwKQotcHJpdmF0ZToKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgIHN0YXRpYyBEaXJlY3QgZm9yd2FyZChjb25zdCBVJiB1LCBtcGw6OnRydWVfKSB7IHJldHVybiB1OyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICBzdGF0aWMgRGlyZWN0IGZvcndhcmQoY29uc3QgVSYgdSwgbXBsOjpmYWxzZV8pIHsgcmV0dXJuIERpcmVjdCh1KTsgfQotI2VuZGlmCi19OwotCi0vLy0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiB3cmFwX2RpcmVjdCBhbmQgdW53cmFwX2RpcmVjdC0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2U+Ci1zdHJ1Y3Qgd3JhcF9kaXJlY3RfdHJhaXRzIAotICAgIDogbXBsOjppZl88Ci0gICAgICAgICAgaXNfZGlyZWN0PERldmljZT4sCi0gICAgICAgICAgZGlyZWN0X2FkYXB0ZXI8RGV2aWNlPiwKLSAgICAgICAgICBEZXZpY2UKLSAgICAgID4KLSAgICB7IH07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLXR5cGVuYW1lIHdyYXBfZGlyZWN0X3RyYWl0czxEZXZpY2U+Ojp0eXBlCi1pbmxpbmUgd3JhcF9kaXJlY3QoRGV2aWNlIGRldikgCi17IAotICAgIHR5cGVkZWYgdHlwZW5hbWUgd3JhcF9kaXJlY3RfdHJhaXRzPERldmljZT46OnR5cGUgdHlwZTsKLSAgICByZXR1cm4gdHlwZShkZXYpOyAKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotaW5saW5lIERldmljZSYgdW53cmFwX2RpcmVjdChEZXZpY2UmIGQpIHsgcmV0dXJuIGQ7IH0gIAotCi10ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2U+Ci1pbmxpbmUgRGV2aWNlJiB1bndyYXBfZGlyZWN0KGRpcmVjdF9hZGFwdGVyPERldmljZT4mIGQpIHsgcmV0dXJuICpkOyB9ICAKLQotLy8tLS0tLS0tLS0tLS0tLUltcGxlbWVudGF0aW9uIG9mIGRpcmVjdF9hZGFwdGVyX2Jhc2UtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgRGlyZWN0PgotZGlyZWN0X2FkYXB0ZXJfYmFzZTxEaXJlY3Q+OjpkaXJlY3RfYWRhcHRlcl9iYXNlKGNvbnN0IERpcmVjdCYgZCkgOiBkXyhkKQotewotICAgIGluaXRfaW5wdXQoaXNfY29udmVydGlibGU8Y2F0ZWdvcnksIGlucHV0PigpKTsKLSAgICBpbml0X291dHB1dChpc19jb252ZXJ0aWJsZTxjYXRlZ29yeSwgb3V0cHV0PigpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRGlyZWN0Pgotdm9pZCBkaXJlY3RfYWRhcHRlcl9iYXNlPERpcmVjdD46OmluaXRfaW5wdXQobXBsOjp0cnVlXykgCi17Ci0gICAgc3RkOjpwYWlyPGNoYXJfdHlwZSosIGNoYXJfdHlwZSo+IHNlcSA9IGlvc3RyZWFtczo6aW5wdXRfc2VxdWVuY2UoZF8pOwotICAgIHB0cnNfLmZpcnN0KCkuYmVnID0gc2VxLmZpcnN0OwotICAgIHB0cnNfLmZpcnN0KCkucHRyID0gc2VxLmZpcnN0OwotICAgIHB0cnNfLmZpcnN0KCkuZW5kID0gc2VxLnNlY29uZDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRGlyZWN0Pgotdm9pZCBkaXJlY3RfYWRhcHRlcl9iYXNlPERpcmVjdD46OmluaXRfb3V0cHV0KG1wbDo6dHJ1ZV8pIAotewotICAgIHN0ZDo6cGFpcjxjaGFyX3R5cGUqLCBjaGFyX3R5cGUqPiBzZXEgPSBpb3N0cmVhbXM6Om91dHB1dF9zZXF1ZW5jZShkXyk7Ci0gICAgcHRyc18uc2Vjb25kKCkuYmVnID0gc2VxLmZpcnN0OwotICAgIHB0cnNfLnNlY29uZCgpLnB0ciA9IHNlcS5maXJzdDsKLSAgICBwdHJzXy5zZWNvbmQoKS5lbmQgPSBzZXEuc2Vjb25kOwotfQotCi0vLy0tLS0tLS0tLS0tLS0tSW1wbGVtZW50YXRpb24gb2YgZGlyZWN0X2FkYXB0ZXItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBEaXJlY3Q+Ci1pbmxpbmUgc3RkOjpzdHJlYW1zaXplIGRpcmVjdF9hZGFwdGVyPERpcmVjdD46OnJlYWQKLSAgICAoY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLXsKLSAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgIHBvaW50ZXJzJiBnZXQgPSBwdHJzXy5maXJzdCgpOwotICAgIHN0ZDo6c3RyZWFtc2l6ZSBhdmFpbCA9IAotICAgICAgICBzdGF0aWNfY2FzdDxzdGQ6OnN0cmVhbXNpemU+KGdldC5lbmQgLSBnZXQucHRyKTsKLSAgICBzdGQ6OnN0cmVhbXNpemUgcmVzdWx0ID0gKHN0ZDo6bWluKShuLCBhdmFpbCk7Ci0gICAgc3RkOjpjb3B5KGdldC5wdHIsIGdldC5wdHIgKyByZXN1bHQsIHMpOwotICAgIGdldC5wdHIgKz0gcmVzdWx0OwotICAgIHJldHVybiByZXN1bHQgIT0gMCA/IHJlc3VsdCA6IC0xOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBEaXJlY3Q+Ci1pbmxpbmUgc3RkOjpzdHJlYW1zaXplIGRpcmVjdF9hZGFwdGVyPERpcmVjdD46OndyaXRlCi0gICAgKGNvbnN0IGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi17Ci0gICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICBwb2ludGVycyYgcHV0ID0gcHRyc18uc2Vjb25kKCk7Ci0gICAgaWYgKG4gPiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmVhbXNpemU+KHB1dC5lbmQgLSBwdXQucHRyKSkKLSAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbih3cml0ZV9hcmVhX2V4aGF1c3RlZCgpKTsKLSAgICBzdGQ6OmNvcHkocywgcyArIG4sIHB1dC5wdHIpOwotICAgIHB1dC5wdHIgKz0gbjsKLSAgICByZXR1cm4gbjsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRGlyZWN0PgotaW5saW5lIHN0ZDo6c3RyZWFtcG9zIGRpcmVjdF9hZGFwdGVyPERpcmVjdD46OnNlZWsKLSAgICAoIHN0cmVhbV9vZmZzZXQgb2ZmLCBORE5CT09TVF9JT1M6OnNlZWtkaXIgd2F5LCAKLSAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2ggKQotewotICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgcG9pbnRlcnMmIGdldCA9IHB0cnNfLmZpcnN0KCk7Ci0gICAgcG9pbnRlcnMmIHB1dCA9IHB0cnNfLnNlY29uZCgpOwotICAgIGlmICh3YXkgPT0gTkROQk9PU1RfSU9TOjpjdXIgJiYgZ2V0LnB0ciAhPSBwdXQucHRyKQotICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oYmFkX3NlZWsoKSk7Ci0gICAgcHRyZGlmZl90IG5leHQgPSAwOwotICAgIGlmICgod2hpY2ggJiBORE5CT09TVF9JT1M6OmluKSB8fCAhaXNfZG91YmxlOjp2YWx1ZSkgewotICAgICAgICBpZiAod2F5ID09IE5ETkJPT1NUX0lPUzo6YmVnKQotICAgICAgICAgICAgbmV4dCA9IG9mZjsgCi0gICAgICAgIGVsc2UgaWYgKHdheSA9PSBORE5CT09TVF9JT1M6OmN1cikKLSAgICAgICAgICAgIG5leHQgPSBnZXQucHRyIC0gZ2V0LmJlZyArIG9mZjsgCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG5leHQgPSBnZXQuZW5kIC0gZ2V0LmJlZyArIG9mZjsgCi0gICAgICAgIGlmIChuZXh0ID49IDAgJiYgbmV4dCA8PSBnZXQuZW5kIC0gZ2V0LmJlZykKLSAgICAgICAgICAgIGdldC5wdHIgPSBnZXQuYmVnICsgbmV4dDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihiYWRfc2VlaygpKTsKLSAgICB9Ci0gICAgaWYgKCh3aGljaCAmIE5ETkJPT1NUX0lPUzo6b3V0KSAmJiBpc19kb3VibGU6OnZhbHVlKSB7Ci0gICAgICAgIGlmICh3YXkgPT0gTkROQk9PU1RfSU9TOjpiZWcpCi0gICAgICAgICAgICBuZXh0ID0gb2ZmOyAKLSAgICAgICAgZWxzZSBpZiAod2F5ID09IE5ETkJPT1NUX0lPUzo6Y3VyKQotICAgICAgICAgICAgbmV4dCA9IHB1dC5wdHIgLSBwdXQuYmVnICsgb2ZmOyAKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbmV4dCA9IHB1dC5lbmQgLSBwdXQuYmVnICsgb2ZmOyAKLSAgICAgICAgaWYgKG5leHQgPj0gMCAmJiBuZXh0IDw9IHB1dC5lbmQgLSBwdXQuYmVnKQotICAgICAgICAgICAgcHV0LnB0ciA9IHB1dC5iZWcgKyBuZXh0OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGJhZF9zZWVrKCkpOwotICAgIH0KLSAgICByZXR1cm4gb2Zmc2V0X3RvX3Bvc2l0aW9uKG5leHQpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBEaXJlY3Q+Ci12b2lkIGRpcmVjdF9hZGFwdGVyPERpcmVjdD46OmNsb3NlKCkgCi17IAotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKCFpc19jb252ZXJ0aWJsZTxjYXRlZ29yeSwgdHdvX3NlcXVlbmNlPjo6dmFsdWUpKTsKLSAgICBkZXRhaWw6OmNsb3NlX2FsbChkXyk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIERpcmVjdD4KLXZvaWQgZGlyZWN0X2FkYXB0ZXI8RGlyZWN0Pjo6Y2xvc2UoTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkgCi17IAotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKGlzX2NvbnZlcnRpYmxlPGNhdGVnb3J5LCB0d29fc2VxdWVuY2U+Ojp2YWx1ZSkpOwotICAgIG5kbmJvb3N0Ojppb3N0cmVhbXM6OmNsb3NlKGRfLCB3aGljaCk7Ci19Ci0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX0xPQ0FMRQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERpcmVjdD4KLSAgICB2b2lkIGRpcmVjdF9hZGFwdGVyPERpcmVjdD46OmltYnVlKGNvbnN0IHN0ZDo6bG9jYWxlJiBsb2MpIAotICAgIHsgbmRuYm9vc3Q6Omlvc3RyZWFtczo6aW1idWUoZF8sIGxvYyk7IH0KLSNlbmRpZgotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0RJUkVDVF9BREFQVEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvZmlsdGVyX2FkYXB0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvZmlsdGVyX2FkYXB0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZWM0YzQ1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGFwdGVyL2ZpbHRlcl9hZGFwdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLS8qCi0gKiBEZWZpbmVzIHRoZSBjbGFzcyB0ZW1wbGF0ZSBuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OmZpbHRlcl9hZGFwdGVyLAotICogYSBjb252ZW5pZW5jZSBiYXNlIGNsYXNzIGZvciBmaWx0ZXIgYWRhcHRlcnMuCi0gKgotICogRmlsZTogICAgICAgIG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRhcHRlci9maWx0ZXJfYWRhcHRlci5ocHAKLSAqIERhdGU6ICAgICAgICBNb24gTm92IDI2IDE0OjM1OjQ4IE1TVCAyMDA3Ci0gKiBDb3B5cmlnaHQ6ICAgMjAwNy0yMDA4IENvZGVSYWdlLCBMTEMKLSAqIEF1dGhvcjogICAgICBKb25hdGhhbiBUdXJrYW5pcwotICogQ29udGFjdDogICAgIHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20KLSAqCi0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuKFNlZSBhY2NvbXBhbnlpbmcgCi0gKiBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0gKiAKLSAqIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLSAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfRklMVEVSX0FEQVBURVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfRklMVEVSX0FEQVBURVJfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2F0ZWdvcmllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jYWxsX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9vcGVyYXRpb25zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY2xhc3MgZmlsdGVyX2FkYXB0ZXIgewotcHJpdmF0ZToKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6dmFsdWVfdHlwZTxUPjo6dHlwZSB2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpwYXJhbV90eXBlPFQ+Ojp0eXBlIHBhcmFtX3R5cGU7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgZmlsdGVyX2FkYXB0ZXIocGFyYW1fdHlwZSB0KSA6IHRfKHQpIHsgfQotICAgIFQmIGNvbXBvbmVudCgpIHsgcmV0dXJuIHRfOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2U+Ci0gICAgdm9pZCBjbG9zZShEZXZpY2UmIGRldikgCi0gICAgeyAKLSAgICAgICAgZGV0YWlsOjpjbG9zZV9hbGwodF8sIGRldik7IAotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLSAgICB2b2lkIGNsb3NlKERldmljZSYgZGV2LCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKSAKLSAgICB7IAotICAgICAgICBpb3N0cmVhbXM6OmNsb3NlKHRfLCBkZXYsIHdoaWNoKTsgCi0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotICAgIHZvaWQgZmx1c2goRGV2aWNlJiBkZXYpIAotICAgIHsgCi0gICAgICAgIHJldHVybiBpb3N0cmVhbXM6OmZsdXNoKHRfLCBkZXYpOyAKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMb2NhbGU+IC8vIEF2b2lkIGRlcGVuZGVuY3kgb24gPGxvY2FsZT4KLSAgICB2b2lkIGltYnVlKGNvbnN0IExvY2FsZSYgbG9jKSB7IGlvc3RyZWFtczo6aW1idWUodF8sIGxvYyk7IH0KLQotICAgIHN0ZDo6c3RyZWFtc2l6ZSBvcHRpbWFsX2J1ZmZlcl9zaXplKCkgY29uc3QgCi0gICAgeyByZXR1cm4gaW9zdHJlYW1zOjpvcHRpbWFsX2J1ZmZlcl9zaXplKHRfKTsgfQotcHVibGljOgotICAgIHZhbHVlX3R5cGUgdF87Ci19OwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfRklMVEVSX0FEQVBURVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRhcHRlci9tb2RlX2FkYXB0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvbW9kZV9hZGFwdGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDZkNWI2NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRhcHRlci9tb2RlX2FkYXB0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfTU9ERV9BREFQVEVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX01PREVfQURBUFRFUl9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLQotLy8gQ29udGFpbnMgdGhlIGRlZmluaXRpb24gb2YgdGhlIGNsYXNzIHRlbXBsYXRlIG1vZGVfYWRhcHRlciwgd2hpY2ggYWxsb3dzCi0vLyBhIGZpbHRlciBvciBkZXZpY2UgdG8gZnVuY3Rpb24gYXMgaWYgaXQgaGFzIGEgZGlmZmVyZW50IGkvbyBtb2RlIHRoYW4gdGhhdAotLy8gZGVkdWNlZCBieSB0aGUgbWV0YWZ1bmN0aW9uIG1vZGVfb2YuCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgICAgICAgICAgICAgICAvLyBORE5CT09TVF9NU1ZDLgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2F0ZWdvcmllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3MuaHBwPiAgLy8gb3Blbm1vZGUsIHNlZWtkaXIsIGludCB0eXBlcy4gCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnMuaHBwPiAKLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPiAKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBUPgotY2xhc3MgbW9kZV9hZGFwdGVyIHsKLXByaXZhdGU6Ci0gICAgc3RydWN0IGVtcHR5X2Jhc2UgeyB9OwotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgd3JhcHBlZF90eXBlPFQ+Ojp0eXBlICBjb21wb25lbnRfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSAgY2hhcl90eXBlOwotICAgIHN0cnVjdCBjYXRlZ29yeSAKLSAgICAgICAgOiBNb2RlLCAKLSAgICAgICAgICBkZXZpY2VfdGFnLAotICAgICAgICAgIG1wbDo6aWZfPGlzX2ZpbHRlcjxUPiwgZmlsdGVyX3RhZywgZGV2aWNlX3RhZz4sCi0gICAgICAgICAgbXBsOjppZl88aXNfZmlsdGVyPFQ+LCBtdWx0aWNoYXJfdGFnLCBlbXB0eV9iYXNlPiwKLSAgICAgICAgICAjaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotICAgICAgICAgICAgICBjbG9zYWJsZV90YWcsIC8vIFZDNiBjYW4ndCBzZWUgbWVtYmVyIGNsb3NlKCkhCi0gICAgICAgICAgI2VuZGlmCi0gICAgICAgICAgbG9jYWxpemFibGVfdGFnCi0gICAgICAgIHsgfTsKLSAgICBleHBsaWNpdCBtb2RlX2FkYXB0ZXIoY29uc3QgY29tcG9uZW50X3R5cGUmIHQpIDogdF8odCkgeyB9Ci0KLSAgICAgICAgLy8gRGV2aWNlIG1lbWJlciBmdW5jdGlvbnMuCi0KLSAgICBzdGQ6OnN0cmVhbXNpemUgcmVhZChjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKTsKLSAgICBzdGQ6OnN0cmVhbXNpemUgd3JpdGUoY29uc3QgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbik7Ci0gICAgc3RkOjpzdHJlYW1wb3Mgc2Vlayggc3RyZWFtX29mZnNldCBvZmYsIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCA9IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6OmluIHwgTkROQk9PU1RfSU9TOjpvdXQgKTsKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0gICAgdm9pZCBjbG9zZSgpOwotICAgIHZvaWQgY2xvc2UoTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCk7Ci0jZW5kaWYKLQotICAgICAgICAvLyBGaWx0ZXIgbWVtYmVyIGZ1bmN0aW9ucy4KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZT4KLSAgICBzdGQ6OnN0cmVhbXNpemUgcmVhZChTb3VyY2UmIHNyYywgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7IHJldHVybiBpb3N0cmVhbXM6OnJlYWQodF8sIHNyYywgcywgbik7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpbms+Ci0gICAgc3RkOjpzdHJlYW1zaXplIHdyaXRlKFNpbmsmIHNuaywgY29uc3QgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7IHJldHVybiBpb3N0cmVhbXM6OndyaXRlKHRfLCBzbmssIHMsIG4pOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2U+Ci0gICAgc3RkOjpzdHJlYW1wb3Mgc2VlayhEZXZpY2UmIGRldiwgc3RyZWFtX29mZnNldCBvZmYsIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXkpCi0gICAgeyByZXR1cm4gaW9zdHJlYW1zOjpzZWVrKHRfLCBkZXYsIG9mZiwgd2F5KTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotICAgIHN0ZDo6c3RyZWFtcG9zIHNlZWsoIERldmljZSYgZGV2LCBzdHJlYW1fb2Zmc2V0IG9mZiwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCAgKQotICAgIHsgcmV0dXJuIGlvc3RyZWFtczo6c2Vlayh0XywgZGV2LCBvZmYsIHdheSwgd2hpY2gpOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2U+Ci0gICAgdm9pZCBjbG9zZShEZXZpY2UmIGRldikKLSAgICB7IGRldGFpbDo6Y2xvc2VfYWxsKHRfLCBkZXYpOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2U+Ci0gICAgdm9pZCBjbG9zZShEZXZpY2UmIGRldiwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLSAgICB7IGlvc3RyZWFtczo6Y2xvc2UodF8sIGRldiwgd2hpY2gpOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMb2NhbGU+Ci0gICAgdm9pZCBpbWJ1ZShjb25zdCBMb2NhbGUmIGxvYykKLSAgICB7IGlvc3RyZWFtczo6aW1idWUodF8sIGxvYyk7IH0KLXByaXZhdGU6Ci0gICAgY29tcG9uZW50X3R5cGUgdF87Ci19OwotICAgICAgICAgICAgICAgICAgICAKLS8vLS0tLS0tLS0tLS0tLS0tLS0tSW1wbGVtZW50YXRpb24gb2YgbW9kZV9hZGFwdGVyLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIFQ+Ci1zdGQ6OnN0cmVhbXNpemUgbW9kZV9hZGFwdGVyPE1vZGUsIFQ+OjpyZWFkCi0gICAgKGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi17IHJldHVybiBuZG5ib29zdDo6aW9zdHJlYW1zOjpyZWFkKHRfLCBzLCBuKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBUPgotc3RkOjpzdHJlYW1zaXplIG1vZGVfYWRhcHRlcjxNb2RlLCBUPjo6d3JpdGUKLSAgICAoY29uc3QgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLXsgcmV0dXJuIG5kbmJvb3N0Ojppb3N0cmVhbXM6OndyaXRlKHRfLCBzLCBuKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBUPgotc3RkOjpzdHJlYW1wb3MgbW9kZV9hZGFwdGVyPE1vZGUsIFQ+OjpzZWVrCi0gICAgKHN0cmVhbV9vZmZzZXQgb2ZmLCBORE5CT09TVF9JT1M6OnNlZWtkaXIgd2F5LCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKQoteyByZXR1cm4gbmRuYm9vc3Q6Omlvc3RyZWFtczo6c2Vlayh0Xywgb2ZmLCB3YXksIHdoaWNoKTsgfQotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBtb2RlX2FkYXB0ZXI8TW9kZSwgVD46OmNsb3NlKCkgCi0gICAgeyBkZXRhaWw6OmNsb3NlX2FsbCh0Xyk7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBtb2RlX2FkYXB0ZXI8TW9kZSwgVD46OmNsb3NlKE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpIAotICAgIHsgaW9zdHJlYW1zOjpjbG9zZSh0Xywgd2hpY2gpOyB9Ci0jZW5kaWYKLQotfSB9IH0gLy8gRW5kIG5hbWVzcGFjZXMgZGV0YWlsLCBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX01PREVfQURBUFRFUl9IUFBfSU5DTFVERUQgLy8tLS0tLS8vCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRhcHRlci9ub25fYmxvY2tpbmdfYWRhcHRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRhcHRlci9ub25fYmxvY2tpbmdfYWRhcHRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiYTA3MGMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvbm9uX2Jsb2NraW5nX2FkYXB0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDUtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9OT05fQkxPQ0tJTkdfQURBUFRFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9OT05fQkxPQ0tJTkdfQURBUFRFUl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4gIC8vIHN0cmVhbXNpemUsIHNlZWtkaXIsIG9wZW5tb2RlLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9yZWFkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvc2Vlay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3dyaXRlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLWNsYXNzIG5vbl9ibG9ja2luZ19hZGFwdGVyIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxEZXZpY2U+Ojp0eXBlIGNoYXJfdHlwZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkKLSAgICAgICAgOiBtb2RlX29mPERldmljZT46OnR5cGUsIGRldmljZV90YWcKLSAgICAgICAgeyB9OwotICAgIGV4cGxpY2l0IG5vbl9ibG9ja2luZ19hZGFwdGVyKERldmljZSYgZGV2KSA6IGRldmljZV8oZGV2KSB7IH0KLSAgICBzdGQ6OnN0cmVhbXNpemUgcmVhZChjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsgCi0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSByZXN1bHQgPSAwOwotICAgICAgICB3aGlsZSAocmVzdWx0IDwgbikgewotICAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplIGFtdCA9IGlvc3RyZWFtczo6cmVhZChkZXZpY2VfLCBzLCBuKTsKLSAgICAgICAgICAgIGlmIChhbXQgPT0gLTEpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICByZXN1bHQgKz0gYW10OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiByZXN1bHQgIT0gMCA/IHJlc3VsdCA6IC0xOwotICAgIH0KLSAgICBzdGQ6OnN0cmVhbXNpemUgd3JpdGUoY29uc3QgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7IAotICAgICAgICBzdGQ6OnN0cmVhbXNpemUgcmVzdWx0ID0gMDsKLSAgICAgICAgd2hpbGUgKHJlc3VsdCA8IG4pIHsKLSAgICAgICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBhbXQgPSAKLSAgICAgICAgICAgICAgICBpb3N0cmVhbXM6OndyaXRlKGRldmljZV8sIHMgKyByZXN1bHQsIG4gLSByZXN1bHQpOwotICAgICAgICAgICAgcmVzdWx0ICs9IGFtdDsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmVzdWx0OyAgICAKLSAgICB9Ci0gICAgc3RkOjpzdHJlYW1wb3Mgc2Vlayggc3RyZWFtX29mZnNldCBvZmYsIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCA9IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6OmluIHwgTkROQk9PU1RfSU9TOjpvdXQgKQotICAgIHsgcmV0dXJuIGlvc3RyZWFtczo6c2VlayhkZXZpY2VfLCBvZmYsIHdheSwgd2hpY2gpOyB9Ci1wdWJsaWM6Ci0gICAgbm9uX2Jsb2NraW5nX2FkYXB0ZXImIG9wZXJhdG9yPShjb25zdCBub25fYmxvY2tpbmdfYWRhcHRlciYpOwotICAgIERldmljZSYgZGV2aWNlXzsKLX07Ci0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlIGlvc3RyZWFtcy4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9OT05fQkxPQ0tJTkdfQURBUFRFUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGFwdGVyL291dHB1dF9pdGVyYXRvcl9hZGFwdGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGFwdGVyL291dHB1dF9pdGVyYXRvcl9hZGFwdGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDliNjkyOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRhcHRlci9vdXRwdXRfaXRlcmF0b3JfYWRhcHRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX09VVFBVVF9JVEVSQVRPUl9BREFQVEVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX09VVFBVVF9JVEVSQVRPUl9BREFQVEVSX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgIAotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPiAgICAgICAgICAgICAgICAgICAgICAvLyBjb3B5LgotI2luY2x1ZGUgPGlvc2Z3ZD4gICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RyZWFtc2l6ZS4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2F0ZWdvcmllcy5ocHA+IC8vIHRhZ3MuCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29udmVydGlibGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIENoLCB0eXBlbmFtZSBPdXRJdD4KLWNsYXNzIG91dHB1dF9pdGVyYXRvcl9hZGFwdGVyIHsKLXB1YmxpYzoKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKChpc19jb252ZXJ0aWJsZTxNb2RlLCBvdXRwdXQ+Ojp2YWx1ZSkpOwotICAgIHR5cGVkZWYgQ2ggICAgICAgIGNoYXJfdHlwZTsKLSAgICB0eXBlZGVmIHNpbmtfdGFnICBjYXRlZ29yeTsKLSAgICBleHBsaWNpdCBvdXRwdXRfaXRlcmF0b3JfYWRhcHRlcihPdXRJdCBvdXQpIDogb3V0XyhvdXQpIHsgfQotICAgIHN0ZDo6c3RyZWFtc2l6ZSB3cml0ZShjb25zdCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKSAKLSAgICB7IAotICAgICAgICBzdGQ6OmNvcHkocywgcyArIG4sIG91dF8pOyAKLSAgICAgICAgcmV0dXJuIG47IAotICAgIH0KLXByaXZhdGU6Ci0gICAgT3V0SXQgb3V0XzsKLX07Ci0KLX0gfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGRldGFpbCwgaW9zdHJlYW1zLCBib29zdC4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9PVVRQVVRfSVRFUkFUT1JfQURBUFRFUl9IUFBfSU5DTFVERUQgLy8tLS0tLS8vCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRhcHRlci9yYW5nZV9hZGFwdGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGFwdGVyL3JhbmdlX2FkYXB0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNzg5NDg5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGFwdGVyL3JhbmdlX2FkYXB0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTg3ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfUkFOR0VfQURBUFRFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9SQU5HRV9BREFQVEVSX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgIAotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWluLgotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHRyZGlmZl90LgotI2luY2x1ZGUgPGlvc2Z3ZD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0cmVhbXNpemUsIHN0cmVhbW9mZi4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvaXRlcmF0b3IuaHBwPiAgICAgICAgICAgICAvLyBuZG5ib29zdDo6aXRlcmF0b3JfdHJhaXRzLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jYXRlZ29yaWVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Vycm9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvcG9zaXRpb25pbmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGhyb3dfZXhjZXB0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9lbmFibGVfaWYuaHBwPgotCi0vLyBNdXN0IGNvbWUgbGFzdC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9kaXNhYmxlX3dhcm5pbmdzLmhwcD4gIC8vIE1TVkMuCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gVXNlZCBmb3Igc2ltdWxhdGVkIHRhZyBkaXNwYXRjaC4KLXRlbXBsYXRlPHR5cGVuYW1lIFRyYXZlcnNhbD4gc3RydWN0IHJhbmdlX2FkYXB0ZXJfaW1wbDsKLQotLy8KLS8vIFRlbXBsYXRlIG5hbWU6IHJhbmdlX2FkYXB0ZXIKLS8vIERlc2NyaXB0aW9uOiBEZXZpY2UgYmFzZWQgb24gYW4gaW5zdGFuY2Ugb2YgbmRuYm9vc3Q6Oml0ZXJhdG9yX3JhbmdlLgotLy8gVGVtcGxhdGUgcGFyYW1ldGVyczoKLS8vICAgICBNb2RlIC0gQSBtb2RlIHRhZy4KLS8vICAgICBSYW5nZSAtIEFuIGluc3RhbmNlIG9mIGl0ZXJhdG9yX3JhbmdlLgotLy8KLXRlbXBsYXRlPHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIFJhbmdlPgotY2xhc3MgcmFuZ2VfYWRhcHRlciB7Ci1wcml2YXRlOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgUmFuZ2U6Oml0ZXJhdG9yICAgICAgICAgICAgICAgICAgaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjppdGVyYXRvcl90cmFpdHM8aXRlcmF0b3I+ICBpdGVyX3RyYWl0czsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJfdHJhaXRzOjppdGVyYXRvcl9jYXRlZ29yeSAgIGl0ZXJfY2F0OwotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgUmFuZ2U6OnZhbHVlX3R5cGUgICAgICAgICAgICAgICAgY2hhcl90eXBlOwotICAgIHN0cnVjdCBjYXRlZ29yeSA6IE1vZGUsIGRldmljZV90YWcgeyB9OwotICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgICAgICAgIG1wbDo6aWZfPAotICAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPAotICAgICAgICAgICAgICAgICAgICBpdGVyX2NhdCwKLSAgICAgICAgICAgICAgICAgICAgc3RkOjpyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZwotICAgICAgICAgICAgICAgID4sCi0gICAgICAgICAgICAgICAgc3RkOjpyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZywKLSAgICAgICAgICAgICAgICBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnCi0gICAgICAgICAgICA+Ojp0eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWc7Ci0gICAgdHlwZWRlZiByYW5nZV9hZGFwdGVyX2ltcGw8dGFnPiAgICAgICAgICAgICAgICAgICBpbXBsOwotCi0gICAgZXhwbGljaXQgcmFuZ2VfYWRhcHRlcihjb25zdCBSYW5nZSYgcm5nKTsKLSAgICByYW5nZV9hZGFwdGVyKGl0ZXJhdG9yIGZpcnN0LCBpdGVyYXRvciBsYXN0KTsKLSAgICBzdGQ6OnN0cmVhbXNpemUgcmVhZChjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKTsKLSAgICBzdGQ6OnN0cmVhbXNpemUgd3JpdGUoY29uc3QgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbik7Ci0gICAgc3RkOjpzdHJlYW1wb3Mgc2VlayhzdHJlYW1fb2Zmc2V0IG9mZiwgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSk7Ci1wcml2YXRlOgotICAgIGl0ZXJhdG9yIGZpcnN0XywgY3VyXywgbGFzdF87Ci19OwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLUltcGxlbWVudGF0aW9uIG9mIHJhbmdlX2FkYXB0ZXItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBSYW5nZT4KLXJhbmdlX2FkYXB0ZXI8TW9kZSwgUmFuZ2U+OjpyYW5nZV9hZGFwdGVyKGNvbnN0IFJhbmdlJiBybmcpCi0gICAgOiBmaXJzdF8ocm5nLmJlZ2luKCkpLCBjdXJfKHJuZy5iZWdpbigpKSwgbGFzdF8ocm5nLmVuZCgpKSB7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgUmFuZ2U+Ci1yYW5nZV9hZGFwdGVyPE1vZGUsIFJhbmdlPjo6cmFuZ2VfYWRhcHRlcihpdGVyYXRvciBmaXJzdCwgaXRlcmF0b3IgbGFzdCkKLSAgICA6IGZpcnN0XyhmaXJzdCksIGN1cl8oZmlyc3QpLCBsYXN0XyhsYXN0KSB7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgUmFuZ2U+Ci1pbmxpbmUgc3RkOjpzdHJlYW1zaXplIHJhbmdlX2FkYXB0ZXI8TW9kZSwgUmFuZ2U+OjpyZWFkCi0gICAgKGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi17IHJldHVybiBpbXBsOjpyZWFkKGN1cl8sIGxhc3RfLCBzLCBuKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBSYW5nZT4KLWlubGluZSBzdGQ6OnN0cmVhbXNpemUgcmFuZ2VfYWRhcHRlcjxNb2RlLCBSYW5nZT46OndyaXRlCi0gICAgKGNvbnN0IGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi17IHJldHVybiBpbXBsOjp3cml0ZShjdXJfLCBsYXN0Xywgcywgbik7IH0KLQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBSYW5nZT4KLXN0ZDo6c3RyZWFtcG9zIHJhbmdlX2FkYXB0ZXI8TW9kZSwgUmFuZ2U+OjpzZWVrCi0gICAgKHN0cmVhbV9vZmZzZXQgb2ZmLCBORE5CT09TVF9JT1M6OnNlZWtkaXIgd2F5KQoteyAKLSAgICBpbXBsOjpzZWVrKGZpcnN0XywgY3VyXywgbGFzdF8sIG9mZiwgd2F5KTsgCi0gICAgcmV0dXJuIG9mZnNldF90b19wb3NpdGlvbihjdXJfIC0gZmlyc3RfKTsKLX0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiByYW5nZV9hZGFwdGVyX2ltcGwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8Pgotc3RydWN0IHJhbmdlX2FkYXB0ZXJfaW1wbDxzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgSXRlciwgdHlwZW5hbWUgQ2g+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtc2l6ZSByZWFkCi0gICAgICAgIChJdGVyJiBjdXIsIEl0ZXImIGxhc3QsIENoKiBzLHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIHJlbSA9IG47IC8vIE5vLiBvZiBjaGFycyByZW1haW5pbmcuCi0gICAgICAgIHdoaWxlIChjdXIgIT0gbGFzdCAmJiByZW0tLSA+IDApICpzKysgPSAqY3VyKys7Ci0gICAgICAgIHJldHVybiBuIC0gcmVtICE9IDAgPyBuIC0gcmVtIDogLTE7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgSXRlciwgdHlwZW5hbWUgQ2g+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtc2l6ZSB3cml0ZQotICAgICAgICAoSXRlciYgY3VyLCBJdGVyJiBsYXN0LCBjb25zdCBDaCogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgewotICAgICAgICB3aGlsZSAoY3VyICE9IGxhc3QgJiYgbi0tID4gMCkgKmN1cisrID0gKnMrKzsKLSAgICAgICAgaWYgKGN1ciA9PSBsYXN0ICYmIG4gPiAwKQotICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbih3cml0ZV9hcmVhX2V4aGF1c3RlZCgpKTsKLSAgICAgICAgcmV0dXJuIG47Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJhbmdlX2FkYXB0ZXJfaW1wbDxzdGQ6OnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgSXRlciwgdHlwZW5hbWUgQ2g+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtc2l6ZSByZWFkCi0gICAgICAgIChJdGVyJiBjdXIsIEl0ZXImIGxhc3QsIENoKiBzLHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIHJlc3VsdCA9IAotICAgICAgICAgICAgKHN0ZDo6bWluKShzdGF0aWNfY2FzdDxzdGQ6OnN0cmVhbXNpemU+KGxhc3QgLSBjdXIpLCBuKTsKLSAgICAgICAgaWYgKHJlc3VsdCkKLSAgICAgICAgICAgIHN0ZDo6Y29weShjdXIsIGN1ciArIHJlc3VsdCwgcyk7Ci0gICAgICAgIGN1ciArPSByZXN1bHQ7Ci0gICAgICAgIHJldHVybiByZXN1bHQgIT0gMCA/IHJlc3VsdCA6IC0xOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXIsIHR5cGVuYW1lIENoPgotICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUgd3JpdGUKLSAgICAgICAgKEl0ZXImIGN1ciwgSXRlciYgbGFzdCwgY29uc3QgQ2gqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIGNvdW50ID0KLSAgICAgICAgICAgIChzdGQ6Om1pbikoc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPihsYXN0IC0gY3VyKSwgbik7Ci0gICAgICAgIHN0ZDo6Y29weShzLCBzICsgY291bnQsIGN1cik7Ci0gICAgICAgIGN1ciArPSBjb3VudDsKLSAgICAgICAgaWYgKGNvdW50IDwgbikgCi0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKHdyaXRlX2FyZWFfZXhoYXVzdGVkKCkpOwotICAgICAgICByZXR1cm4gbjsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyPgotICAgIHN0YXRpYyB2b2lkIHNlZWsKLSAgICAgICAgKCBJdGVyJiBmaXJzdCwgSXRlciYgY3VyLCBJdGVyJiBsYXN0LCBzdHJlYW1fb2Zmc2V0IG9mZiwKLSAgICAgICAgICBORE5CT09TVF9JT1M6OnNlZWtkaXIgd2F5ICkKLSAgICB7Ci0gICAgICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgICAgIHN3aXRjaCAod2F5KSB7Ci0gICAgICAgIGNhc2UgTkROQk9PU1RfSU9TOjpiZWc6Ci0gICAgICAgICAgICBpZiAob2ZmID4gbGFzdCAtIGZpcnN0IHx8IG9mZiA8IDApCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihiYWRfc2VlaygpKTsKLSAgICAgICAgICAgIGN1ciA9IGZpcnN0ICsgb2ZmOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTkROQk9PU1RfSU9TOjpjdXI6Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RkOjpwdHJkaWZmX3QgbmV3b2ZmID0gY3VyIC0gZmlyc3QgKyBvZmY7Ci0gICAgICAgICAgICAgICAgaWYgKG5ld29mZiA+IGxhc3QgLSBmaXJzdCB8fCBuZXdvZmYgPCAwKQotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGJhZF9zZWVrKCkpOwotICAgICAgICAgICAgICAgIGN1ciArPSBvZmY7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGNhc2UgTkROQk9PU1RfSU9TOjplbmQ6Ci0gICAgICAgICAgICBpZiAobGFzdCAtIGZpcnN0ICsgb2ZmIDwgMCB8fCBvZmYgPiAwKQotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oYmFkX3NlZWsoKSk7Ci0gICAgICAgICAgICBjdXIgPSBsYXN0ICsgb2ZmOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlQoMCk7Ci0gICAgICAgIH0KLSAgICB9Ci19OwotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9lbmFibGVfd2FybmluZ3MuaHBwPiAgLy8gTVNWQy4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9SQU5HRV9BREFQVEVSX0hQUF9JTkNMVURFRCAvLy0tLS0tLS0tLS0tLS0tLS8vCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRkX2ZhY2V0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGRfZmFjZXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMmFhNTM0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGRfZmFjZXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vIEJvcnJvd2VkIGZyb20gPG5kbmJvb3N0L2FyY2hpdmUvYWRkX2ZhY2V0LmhwcD4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0FERF9GQUNFVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9BRERfRkFDRVRfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gIC8vIE5ETkJPT1NUX0RJTktVTVdBUkVfU1RETElCLgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIGFkZF9mYWNldC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gRG9lcyBTVExwb3J0IHVzZXMgb2xkIERpbmt1bXdhcmUgbG9jYWxlPwotI2lmIChkZWZpbmVkKF9fU0dJX1NUTF9QT1JUKSB8fCBkZWZpbmVkKF9TVExQT1JUX1ZFUlNJT04pKSAmJiBcCi0gICAgZGVmaW5lZChfU1RMUF9OT19PV05fSU9TVFJFQU1TKSBcCi0gICAgLyoqLwotIyAgaWYgKGRlZmluZWQoX1lWQUxTKSAmJiAhZGVmaW5lZChfX0lCTUNQUF9fKSkgfHwgZGVmaW5lZChfQ1BQTElCX1ZFUikKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRU1TX1NUTFBPUlRfV0lUSF9PTERfRElOS1VNV0FSRQotIyAgZW5kaWYKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPGNsYXNzIEZhY2V0PgotaW5saW5lIHN0ZDo6bG9jYWxlIGFkZF9mYWNldChjb25zdCBzdGQ6OmxvY2FsZSAmbCwgRmFjZXQgKiBmKQotewotICAgIHJldHVybgotICAgICAgICAjaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9ESU5LVU1XQVJFX1NURExJQiwgPT0gMSkgfHwgXAotICAgICAgICAgICAgZGVmaW5lZChORE5CT09TVF9JT1NUUkVNU19TVExQT1JUX1dJVEhfT0xEX0RJTktVTVdBUkUpIFwKLSAgICAgICAgICAgIC8qKi8KLSAgICAgICAgICAgIHN0ZDo6bG9jYWxlKHN0ZDo6X0FkZGZhYyhsLCBmKSk7Ci0gICAgICAgICNlbHNlCi0gICAgICAgICAgICAvLyBzdGFuZGFyZCBjb21wYXRpYmxlCi0gICAgICAgICAgICBzdGQ6OmxvY2FsZShsLCBmKTsKLSAgICAgICAgI2VuZGlmCi19Ci0KLX0gfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGRldGFpbCwgaW9zdHJlYW1zLCBib29zdC4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9BRERfRkFDRVRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzYxZmEyMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9CT09MX1RSQUlUX0RFRl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9CT09MX1RSQUlUX0RFRl9IUFBfSU5DTFVERUQgICAgIAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gLy8gTkROQk9PU1RfU1RBVElDX0NPTlNUQU5ULgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvdGVtcGxhdGVfcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwveWVzX25vX3R5cGUuaHBwPgotIAotLy8gCi0vLyBNYWNybyBuYW1lOiBORE5CT09TVF9JT1NUUkVBTVNfQk9PTF9UUkFJVF9ERUYKLS8vIERlc2NyaXB0aW9uOiBVc2VkIHRvIGdlbmVyYXRlIHRoZSB0cmFpdHMgY2xhc3NlcyBpc19pc3RyZWFtLCBpc19vc3RyZWFtLAotLy8gICAgICBldGMuCi0vLwotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1ODIpKQotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX1RSQUlUX05BTUVTUEFDRSh0cmFpdCkKLSNlbHNlCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfVFJBSVRfTkFNRVNQQUNFKHRyYWl0KSBORE5CT09TVF9QUF9DQVQodHJhaXQsIF9pbXBsXyk6OiAKLSNlbmRpZgotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQk9PTF9UUkFJVF9ERUYodHJhaXQsIHR5cGUsIGFyaXR5KSBcCi0gICAgbmFtZXNwYWNlIE5ETkJPT1NUX1BQX0NBVCh0cmFpdCwgX2ltcGxfKSB7IFwKLSAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19URU1QTEFURV9QQVJBTVMoYXJpdHksIFQpIFwKLSAgICAgIHR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBoZWxwZXIgXAotICAgICAgICAgIChjb25zdCB2b2xhdGlsZSB0eXBlIE5ETkJPT1NUX0lPU1RSRUFNU19URU1QTEFURV9BUkdTKGFyaXR5LCBUKSopOyBcCi0gICAgICB0eXBlX3RyYWl0czo6bm9fdHlwZSBoZWxwZXIoLi4uKTsgXAotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gXAotICAgICAgc3RydWN0IGltcGwgeyBcCi0gICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IFwKLSAgICAgICAgICAgKHNpemVvZihORE5CT09TVF9JT1NUUkVBTVNfVFJBSVRfTkFNRVNQQUNFKHRyYWl0KSBcCi0gICAgICAgICAgICAgIGhlbHBlcihzdGF0aWNfY2FzdDxUKj4oMCkpKSA9PSBcCi0gICAgICAgICAgICAgICAgc2l6ZW9mKHR5cGVfdHJhaXRzOjp5ZXNfdHlwZSkpKTsgXAotICAgICAgfTsgXAotICAgIH0gXAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFwKLSAgICBzdHJ1Y3QgdHJhaXQgXAotICAgICAgICA6IG1wbDo6Ym9vbF88TkROQk9PU1RfUFBfQ0FUKHRyYWl0LCBfaW1wbF8pOjppbXBsPFQ+Ojp2YWx1ZT4gXAotICAgIHsgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLCB0cmFpdCwgKFQpKSB9OyBcCi0gICAgLyoqLwotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0JPT0xfVFJBSVRfREVGX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Jyb2tlbl9vdmVybG9hZF9yZXNvbHV0aW9uL2ZvcndhcmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Jyb2tlbl9vdmVybG9hZF9yZXNvbHV0aW9uL2ZvcndhcmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMjA4MWFkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9icm9rZW5fb3ZlcmxvYWRfcmVzb2x1dGlvbi9mb3J3YXJkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQlJPS0VOX09WRVJMT0FEX1JFU09MVVRJT05fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQlJPS0VOX09WRVJMT0FEX1JFU09MVVRJT05fSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgICAgICAgICAgICAgICAgICAgIC8vIE5ETkJPT1NUX1NUQVRJQ19DT05TQU5ULgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2UsIHR5cGVuYW1lIFU+Ci1zdHJ1Y3QgZm9yd2FyZF9pbXBsIHsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAoICFpc19zYW1lPCBVLCBEZXZpY2UgPjo6dmFsdWUgJiYKLSAgICAgICAgICAhaXNfc2FtZTwgVSwgcmVmZXJlbmNlX3dyYXBwZXI8RGV2aWNlPiA+Ojp2YWx1ZSApKTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIERldmljZSwgdHlwZW5hbWUgVT4KLXN0cnVjdCBmb3J3YXJkCi0gICAgOiBtcGw6OmJvb2xfPGZvcndhcmRfaW1wbDxEZXZpY2UsIFU+Ojp2YWx1ZT4KLSAgICB7IH07Ci0KLX0gfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGRldGFpbCwgaW9zdHJlYW1zLCBib29zdC4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9CUk9LRU5fT1ZFUkxPQURfUkVTT0xVVElPTl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9icm9rZW5fb3ZlcmxvYWRfcmVzb2x1dGlvbi9zdHJlYW0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Jyb2tlbl9vdmVybG9hZF9yZXNvbHV0aW9uL3N0cmVhbS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0ODVmMWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Jyb2tlbl9vdmVybG9hZF9yZXNvbHV0aW9uL3N0cmVhbS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODQgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9CUk9LRU5fT1ZFUkxPQURfUkVTT0xVVElPTl9TVFJFQU1fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQlJPS0VOX09WRVJMT0FEX1JFU09MVVRJT05fU1RSRUFNX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9icm9rZW5fb3ZlcmxvYWRfcmVzb2x1dGlvbi9mb3J3YXJkLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBEZXZpY2UsCi0gICAgICAgICAgdHlwZW5hbWUgVHIgPQotICAgICAgICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfQ0hBUl9UUkFJVFMoCi0gICAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGNoYXJfdHlwZV9vZjxEZXZpY2U+Ojp0eXBlCi0gICAgICAgICAgICAgICksCi0gICAgICAgICAgdHlwZW5hbWUgQWxsb2MgPQotICAgICAgICAgICAgICBzdGQ6OmFsbG9jYXRvcjwKLSAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgY2hhcl90eXBlX29mPERldmljZT46OnR5cGUKLSAgICAgICAgICAgICAgPiA+Ci1zdHJ1Y3Qgc3RyZWFtIDogZGV0YWlsOjpzdHJlYW1fYmFzZTxEZXZpY2UsIFRyLCBBbGxvYz4gewotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhcl90eXBlX29mPERldmljZT46OnR5cGUgIGNoYXJfdHlwZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkgCi0gICAgICAgIDogbW9kZV9vZjxEZXZpY2U+Ojp0eXBlLAotICAgICAgICAgIGNsb3NhYmxlX3RhZywKLSAgICAgICAgICBkZXRhaWw6OnN0cmVhbV90cmFpdHM8RGV2aWNlLCBUcj46OnN0cmVhbV90YWcKLSAgICAgICAgeyB9OwotICAgIE5ETkJPT1NUX0lPU1RSRUFNU19TVFJFQU1CVUZfVFlQRURFRlMoVHIpCi1wcml2YXRlOgotICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgICAgICAgIGRldGFpbDo6c3RyZWFtX3RyYWl0czwKLSAgICAgICAgICAgICAgICBEZXZpY2UsIFRyCi0gICAgICAgICAgICA+OjpzdHJlYW1fdHlwZSAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX3R5cGU7Ci1wdWJsaWM6Ci0gICAgc3RyZWFtKCkgeyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTA+Ci0gICAgc3RyZWFtKGNvbnN0IFUwJiB1MCkKLSAgICB7Ci0gICAgICAgIG9wZW5faW1wbChkZXRhaWw6OmZvcndhcmQ8RGV2aWNlLCBVMD4oKSwgdTApOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMCwgdHlwZW5hbWUgVTE+Ci0gICAgc3RyZWFtKGNvbnN0IFUwJiB1MCwgY29uc3QgVTEmIHUxKQotICAgIHsKLSAgICAgICAgb3Blbl9pbXBsKGRldGFpbDo6Zm9yd2FyZDxEZXZpY2UsIFUwPigpLCB1MCwgdTEpOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyPgotICAgIHN0cmVhbShjb25zdCBVMCYgdTAsIGNvbnN0IFUxJiB1MSwgY29uc3QgVTImIHUyKQotICAgIHsKLSAgICAgICAgb3Blbl9pbXBsKGRldGFpbDo6Zm9yd2FyZDxEZXZpY2UsIFUwPigpLCB1MCwgdTEsIHUyKTsKLSAgICB9Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwPgotICAgIHN0cmVhbShVMCYgdTApCi0gICAgewotICAgICAgICBvcGVuX2ltcGwoZGV0YWlsOjpmb3J3YXJkPERldmljZSwgVTA+KCksIHUwKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTAsIHR5cGVuYW1lIFUxPgotICAgIHN0cmVhbShVMCYgdTAsIGNvbnN0IFUxJiB1MSkKLSAgICB7Ci0gICAgICAgIG9wZW5faW1wbChkZXRhaWw6OmZvcndhcmQ8RGV2aWNlLCBVMD4oKSwgdTAsIHUxKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTAsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMj4KLSAgICBzdHJlYW0oVTAmIHUwLCBjb25zdCBVMSYgdTEsIGNvbnN0IFUyJiB1MikKLSAgICB7Ci0gICAgICAgIG9wZW5faW1wbChkZXRhaWw6OmZvcndhcmQ8RGV2aWNlLCBVMD4oKSwgdTAsIHUxLCB1Mik7Ci0gICAgfQotI2VuZGlmIC8vICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMD4KLSAgICB2b2lkIG9wZW4oY29uc3QgVTAmIHUwKQotICAgIHsKLSAgICAgICAgb3Blbl9pbXBsKGRldGFpbDo6Zm9yd2FyZDxEZXZpY2UsIFUwPigpLCB1MCk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwLCB0eXBlbmFtZSBVMT4KLSAgICB2b2lkIG9wZW4oY29uc3QgVTAmIHUwLCBjb25zdCBVMSYgdTEpCi0gICAgewotICAgICAgICBvcGVuX2ltcGwoZGV0YWlsOjpmb3J3YXJkPERldmljZSwgVTA+KCksIHUwLCB1MSk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTI+Ci0gICAgdm9pZCBvcGVuKGNvbnN0IFUwJiB1MCwgY29uc3QgVTEmIHUxLCBjb25zdCBVMiYgdTIpCi0gICAgewotICAgICAgICBvcGVuX2ltcGwoZGV0YWlsOjpmb3J3YXJkPERldmljZSwgVTA+KCksIHUwLCB1MSwgdTIpOwotICAgIH0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTA+Ci0gICAgdm9pZCBvcGVuKFUwJiB1MCkKLSAgICB7Ci0gICAgICAgIG9wZW5faW1wbChkZXRhaWw6OmZvcndhcmQ8RGV2aWNlLCBVMD4oKSwgdTApOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMCwgdHlwZW5hbWUgVTE+Ci0gICAgdm9pZCBvcGVuKFUwJiB1MCwgY29uc3QgVTEmIHUxKQotICAgIHsKLSAgICAgICAgb3Blbl9pbXBsKGRldGFpbDo6Zm9yd2FyZDxEZXZpY2UsIFUwPigpLCB1MCwgdTEpOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyPgotICAgIHZvaWQgb3BlbihVMCYgdTAsIGNvbnN0IFUxJiB1MSwgY29uc3QgVTImIHUyKQotICAgIHsKLSAgICAgICAgb3Blbl9pbXBsKGRldGFpbDo6Zm9yd2FyZDxEZXZpY2UsIFUwPigpLCB1MCwgdTEsIHUyKTsKLSAgICB9Ci0jZW5kaWYgLy8gIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotICAgIGJvb2wgaXNfb3BlbigpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPm1lbWJlci5pc19vcGVuKCk7IH0KLSAgICB2b2lkIGNsb3NlKCkgeyB0aGlzLT5tZW1iZXIuY2xvc2UoKTsgfQotICAgIGJvb2wgYXV0b19jbG9zZSgpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPm1lbWJlci5hdXRvX2Nsb3NlKCk7IH0KLSAgICB2b2lkIHNldF9hdXRvX2Nsb3NlKGJvb2wgY2xvc2UpIHsgdGhpcy0+bWVtYmVyLnNldF9hdXRvX2Nsb3NlKGNsb3NlKTsgfQotICAgIGJvb2wgc3RyaWN0X3N5bmMoKSB7IHJldHVybiB0aGlzLT5tZW1iZXIuc3RyaWN0X3N5bmMoKTsgfQotICAgIERldmljZSYgb3BlcmF0b3IqKCkgeyByZXR1cm4gKnRoaXMtPm1lbWJlcjsgfQotICAgIERldmljZSogb3BlcmF0b3ItPigpIHsgcmV0dXJuICYqdGhpcy0+bWVtYmVyOyB9Ci1wcml2YXRlOgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwPgotICAgIHZvaWQgb3Blbl9pbXBsKG1wbDo6ZmFsc2VfLCBjb25zdCBVMCYgdTApCi0gICAgewotICAgICAgICB0aGlzLT5jbGVhcigpOyAKLSAgICAgICAgdGhpcy0+bWVtYmVyLm9wZW4odTApOwotICAgIH0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTA+Ci0gICAgdm9pZCBvcGVuX2ltcGwobXBsOjpmYWxzZV8sIFUwJiB1MCkKLSAgICB7Ci0gICAgICAgIHRoaXMtPmNsZWFyKCk7IAotICAgICAgICB0aGlzLT5tZW1iZXIub3BlbihkZXRhaWw6OndyYXAodTApKTsKLSAgICB9Ci0jZW5kaWYgLy8gIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwPgotICAgIHZvaWQgb3Blbl9pbXBsKG1wbDo6dHJ1ZV8sIGNvbnN0IFUwJiB1MCkKLSAgICB7Ci0gICAgICAgIHRoaXMtPmNsZWFyKCk7IAotICAgICAgICB0aGlzLT5tZW1iZXIub3BlbihEZXZpY2UoY29uc3RfY2FzdDxVMCY+KHUwKSkpOwotICAgIH0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTA+Ci0gICAgdm9pZCBvcGVuX2ltcGwobXBsOjp0cnVlXywgVTAmIHUwKQotICAgIHsKLSAgICAgICAgdGhpcy0+Y2xlYXIoKTsgCi0gICAgICAgIHRoaXMtPm1lbWJlci5vcGVuKERldmljZSh1MCkpOwotICAgIH0KLSNlbmRpZiAvLyAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTAsIHR5cGVuYW1lIFUxPgotICAgIHZvaWQgb3Blbl9pbXBsKG1wbDo6ZmFsc2VfLCBjb25zdCBVMCYgdTAsIGNvbnN0IFUxJiB1MSkKLSAgICB7Ci0gICAgICAgIHRoaXMtPmNsZWFyKCk7IAotICAgICAgICB0aGlzLT5tZW1iZXIub3Blbih1MCwgdTEpOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMCwgdHlwZW5hbWUgVTE+Ci0gICAgdm9pZCBvcGVuX2ltcGwobXBsOjp0cnVlXywgY29uc3QgVTAmIHUwLCBjb25zdCBVMSYgdTEpCi0gICAgewotICAgICAgICB0aGlzLT5jbGVhcigpOyAKLSAgICAgICAgdGhpcy0+bWVtYmVyLm9wZW4oRGV2aWNlKGNvbnN0X2Nhc3Q8VTAmPih1MCksIHUxKSk7Ci0gICAgfQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMCwgdHlwZW5hbWUgVTE+Ci0gICAgdm9pZCBvcGVuX2ltcGwobXBsOjp0cnVlXywgVTAmIHUwLCBjb25zdCBVMSYgdTEpCi0gICAgewotICAgICAgICB0aGlzLT5jbGVhcigpOyAKLSAgICAgICAgdGhpcy0+bWVtYmVyLm9wZW4oRGV2aWNlKHUwLCB1MSkpOwotICAgIH0KLSNlbmRpZiAvLyAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTAsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMj4KLSAgICB2b2lkIG9wZW5faW1wbChtcGw6OmZhbHNlXywgY29uc3QgVTAmIHUwLCBjb25zdCBVMSYgdTEsIGNvbnN0IFUyJiB1MikKLSAgICB7Ci0gICAgICAgIHRoaXMtPmNsZWFyKCk7IAotICAgICAgICB0aGlzLT5tZW1iZXIub3Blbih1MCwgdTEsIHUyKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTAsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMj4KLSAgICB2b2lkIG9wZW5faW1wbChtcGw6OnRydWVfLCBjb25zdCBVMCYgdTAsIGNvbnN0IFUxJiB1MSwgY29uc3QgVTImIHUyKQotICAgIHsKLSAgICAgICAgdGhpcy0+Y2xlYXIoKTsgCi0gICAgICAgIHRoaXMtPm1lbWJlci5vcGVuKERldmljZShjb25zdF9jYXN0PFUwJj4odTApLCB1MSwgdTIpKTsKLSAgICB9Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTI+Ci0gICAgdm9pZCBvcGVuX2ltcGwobXBsOjp0cnVlXywgVTAmIHUwLCBjb25zdCBVMSYgdTEsIGNvbnN0IFUyJiB1MikKLSAgICB7Ci0gICAgICAgIHRoaXMtPmNsZWFyKCk7IAotICAgICAgICB0aGlzLT5tZW1iZXIub3BlbihEZXZpY2UodTAsIHUxLCB1MikpOwotICAgIH0KLSNlbmRpZgotfTsKLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0JST0tFTl9PVkVSTE9BRF9SRVNPTFVUSU9OX1NUUkVBTV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9icm9rZW5fb3ZlcmxvYWRfcmVzb2x1dGlvbi9zdHJlYW1fYnVmZmVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9icm9rZW5fb3ZlcmxvYWRfcmVzb2x1dGlvbi9zdHJlYW1fYnVmZmVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTQ5YzFjYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYnJva2VuX292ZXJsb2FkX3Jlc29sdXRpb24vc3RyZWFtX2J1ZmZlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODkgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9CUk9LRU5fT1ZFUkxPQURfUkVTT0xVVElPTl9TVFJFQU1fQlVGRkVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0JST0tFTl9PVkVSTE9BRF9SRVNPTFVUSU9OX1NUUkVBTV9CVUZGRVJfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Jyb2tlbl9vdmVybG9hZF9yZXNvbHV0aW9uL2ZvcndhcmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgCi0gICAgICAgICAgdHlwZW5hbWUgVHIgPSAKLSAgICAgICAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0NIQVJfVFJBSVRTKAotICAgICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUgCi0gICAgICAgICAgICAgICksCi0gICAgICAgICAgdHlwZW5hbWUgQWxsb2MgPSAKLSAgICAgICAgICAgICAgc3RkOjphbGxvY2F0b3I8Ci0gICAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSAKLSAgICAgICAgICAgICAgPiwKLSAgICAgICAgICB0eXBlbmFtZSBNb2RlID0gTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBtb2RlX29mPFQ+Ojp0eXBlID4KLWNsYXNzIHN0cmVhbV9idWZmZXIKLSAgICA6IHB1YmxpYyBkZXRhaWw6OnN0cmVhbV9idWZmZXJfdHJhaXRzPFQsIFRyLCBBbGxvYywgTW9kZT46OnR5cGUKLXsKLXByaXZhdGU6Ci0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoCi0gICAgICAgIGlzX2NvbnZlcnRpYmxlPAotICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBpb3N0cmVhbXM6OmNhdGVnb3J5X29mPFQ+Ojp0eXBlLCBNb2RlCi0gICAgICAgID46OnZhbHVlCi0gICAgKSk7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICAgICAgICAgIGRldGFpbDo6c3RyZWFtX2J1ZmZlcl90cmFpdHM8Ci0gICAgICAgICAgICAgICAgVCwgVHIsIEFsbG9jLCBNb2RlCi0gICAgICAgICAgICA+Ojp0eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZV90eXBlOwotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlICAgIGNoYXJfdHlwZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkgCi0gICAgICAgIDogTW9kZSwKLSAgICAgICAgICBjbG9zYWJsZV90YWcsCi0gICAgICAgICAgc3RyZWFtYnVmX3RhZwotICAgICAgICB7IH07Ci0gICAgTkROQk9PU1RfSU9TVFJFQU1TX1NUUkVBTUJVRl9UWVBFREVGUyhUcikKLSAgICBzdHJlYW1fYnVmZmVyKCkgeyB9Ci0gICAgfnN0cmVhbV9idWZmZXIoKQotICAgIHsgCi0gICAgICAgIHRyeSB7IAotICAgICAgICAgICAgaWYgKHRoaXMtPmlzX29wZW4oKSAmJiB0aGlzLT5hdXRvX2Nsb3NlKCkpIAotICAgICAgICAgICAgICAgIHRoaXMtPmNsb3NlKCk7IAotICAgICAgICB9IGNhdGNoICguLi4pIHsgfSAKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTA+Ci0gICAgc3RyZWFtX2J1ZmZlcihjb25zdCBVMCYgdTApCi0gICAgewotICAgICAgICBvcGVuX2ltcGwoZGV0YWlsOjpmb3J3YXJkPFQsIFUwPigpLCB1MCk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwLCB0eXBlbmFtZSBVMT4KLSAgICBzdHJlYW1fYnVmZmVyKGNvbnN0IFUwJiB1MCwgY29uc3QgVTEmIHUxKQotICAgIHsKLSAgICAgICAgb3Blbl9pbXBsKGRldGFpbDo6Zm9yd2FyZDxULCBVMD4oKSwgdTAsIHUxKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTAsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMj4KLSAgICBzdHJlYW1fYnVmZmVyKGNvbnN0IFUwJiB1MCwgY29uc3QgVTEmIHUxLCBjb25zdCBVMiYgdTIpCi0gICAgewotICAgICAgICBvcGVuX2ltcGwoZGV0YWlsOjpmb3J3YXJkPFQsIFUwPigpLCB1MCwgdTEsIHUyKTsKLSAgICB9Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwPgotICAgIHN0cmVhbV9idWZmZXIoVTAmIHUwKQotICAgIHsKLSAgICAgICAgb3Blbl9pbXBsKGRldGFpbDo6Zm9yd2FyZDxULCBVMD4oKSwgdTApOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMCwgdHlwZW5hbWUgVTE+Ci0gICAgc3RyZWFtX2J1ZmZlcihVMCYgdTAsIGNvbnN0IFUxJiB1MSkKLSAgICB7Ci0gICAgICAgIG9wZW5faW1wbChkZXRhaWw6OmZvcndhcmQ8VCwgVTA+KCksIHUwLCB1MSk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTI+Ci0gICAgc3RyZWFtX2J1ZmZlcihVMCYgdTAsIGNvbnN0IFUxJiB1MSwgY29uc3QgVTImIHUyKQotICAgIHsKLSAgICAgICAgb3Blbl9pbXBsKGRldGFpbDo6Zm9yd2FyZDxULCBVMD4oKSwgdTAsIHUxLCB1Mik7Ci0gICAgfQotI2VuZGlmIC8vICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMD4KLSAgICB2b2lkIG9wZW4oY29uc3QgVTAmIHUwKQotICAgIHsKLSAgICAgICAgb3Blbl9pbXBsKGRldGFpbDo6Zm9yd2FyZDxULCBVMD4oKSwgdTApOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMCwgdHlwZW5hbWUgVTE+Ci0gICAgdm9pZCBvcGVuKGNvbnN0IFUwJiB1MCwgY29uc3QgVTEmIHUxKQotICAgIHsKLSAgICAgICAgb3Blbl9pbXBsKGRldGFpbDo6Zm9yd2FyZDxULCBVMD4oKSwgdTAsIHUxKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTAsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMj4KLSAgICB2b2lkIG9wZW4oY29uc3QgVTAmIHUwLCBjb25zdCBVMSYgdTEsIGNvbnN0IFUyJiB1MikKLSAgICB7Ci0gICAgICAgIG9wZW5faW1wbChkZXRhaWw6OmZvcndhcmQ8VCwgVTA+KCksIHUwLCB1MSwgdTIpOwotICAgIH0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTA+Ci0gICAgdm9pZCBvcGVuKFUwJiB1MCkKLSAgICB7Ci0gICAgICAgIG9wZW5faW1wbChkZXRhaWw6OmZvcndhcmQ8VCwgVTA+KCksIHUwKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTAsIHR5cGVuYW1lIFUxPgotICAgIHZvaWQgb3BlbihVMCYgdTAsIGNvbnN0IFUxJiB1MSkKLSAgICB7Ci0gICAgICAgIG9wZW5faW1wbChkZXRhaWw6OmZvcndhcmQ8VCwgVTA+KCksIHUwLCB1MSk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTI+Ci0gICAgdm9pZCBvcGVuKFUwJiB1MCwgY29uc3QgVTEmIHUxLCBjb25zdCBVMiYgdTIpCi0gICAgewotICAgICAgICBvcGVuX2ltcGwoZGV0YWlsOjpmb3J3YXJkPFQsIFUwPigpLCB1MCwgdTEsIHUyKTsKLSAgICB9Ci0jZW5kaWYgLy8gIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotICAgIFQmIG9wZXJhdG9yKigpIHsgcmV0dXJuICp0aGlzLT5jb21wb25lbnQoKTsgfQotICAgIFQqIG9wZXJhdG9yLT4oKSB7IHJldHVybiB0aGlzLT5jb21wb25lbnQoKTsgfQotcHJpdmF0ZToKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMD4KLSAgICB2b2lkIG9wZW5faW1wbChtcGw6OmZhbHNlXywgY29uc3QgVTAmIHUwKQotICAgIHsKLSAgICAgICAgYmFzZV90eXBlOjpvcGVuKGNvbnN0X2Nhc3Q8VTAmPih1MCksIC0xLCAtMSk7Ci0gICAgfQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMD4KLSAgICB2b2lkIG9wZW5faW1wbChtcGw6OmZhbHNlXywgVTAmIHUwKQotICAgIHsKLSAgICAgICAgYmFzZV90eXBlOjpvcGVuKGRldGFpbDo6d3JhcCh1MCksIC0xLCAtMSk7Ci0gICAgfQotI2VuZGlmIC8vICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMD4KLSAgICB2b2lkIG9wZW5faW1wbChtcGw6OnRydWVfLCBjb25zdCBVMCYgdTApCi0gICAgewotICAgICAgICBiYXNlX3R5cGU6Om9wZW4oVChjb25zdF9jYXN0PFUwJj4odTApKSwgLTEsIC0xKTsKLSAgICB9Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwPgotICAgIHZvaWQgb3Blbl9pbXBsKG1wbDo6dHJ1ZV8sIFUwJiB1MCkKLSAgICB7Ci0gICAgICAgIGJhc2VfdHlwZTo6b3BlbihUKHUwKSwgLTEsIC0xKTsKLSAgICB9Ci0jZW5kaWYgLy8gIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwLCB0eXBlbmFtZSBVMT4KLSAgICB2b2lkIG9wZW5faW1wbChtcGw6OmZhbHNlXywgY29uc3QgVTAmIHUwLCBjb25zdCBVMSYgdTEpCi0gICAgewotICAgICAgICBiYXNlX3R5cGU6Om9wZW4odTAsIHUxLCAtMSk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwLCB0eXBlbmFtZSBVMT4KLSAgICB2b2lkIG9wZW5faW1wbChtcGw6OnRydWVfLCBjb25zdCBVMCYgdTAsIGNvbnN0IFUxJiB1MSkKLSAgICB7Ci0gICAgICAgIGJhc2VfdHlwZTo6b3BlbihUKGNvbnN0X2Nhc3Q8VTAmPih1MCksIHUxKSwgLTEsIC0xKTsKLSAgICB9Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwLCB0eXBlbmFtZSBVMT4KLSAgICB2b2lkIG9wZW5faW1wbChtcGw6OnRydWVfLCBVMCYgdTAsIGNvbnN0IFUxJiB1MSkKLSAgICB7Ci0gICAgICAgIGJhc2VfdHlwZTo6b3BlbihUKHUwLCB1MSksIC0xLCAtMSk7Ci0gICAgfQotI2VuZGlmIC8vICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyPgotICAgIHZvaWQgb3Blbl9pbXBsKG1wbDo6ZmFsc2VfLCBjb25zdCBVMCYgdTAsIGNvbnN0IFUxJiB1MSwgY29uc3QgVTImIHUyKQotICAgIHsKLSAgICAgICAgYmFzZV90eXBlOjpvcGVuKHUwLCB1MSwgdTIpOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyPgotICAgIHZvaWQgb3Blbl9pbXBsKG1wbDo6dHJ1ZV8sIGNvbnN0IFUwJiB1MCwgY29uc3QgVTEmIHUxLCBjb25zdCBVMiYgdTIpCi0gICAgewotICAgICAgICBiYXNlX3R5cGU6Om9wZW4oVChjb25zdF9jYXN0PFUwJj4odTApLCB1MSwgdTIpLCAtMSwgLTEpOwotICAgIH0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTAsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMj4KLSAgICB2b2lkIG9wZW5faW1wbChtcGw6OnRydWVfLCBVMCYgdTAsIGNvbnN0IFUxJiB1MSwgY29uc3QgVTImIHUyKQotICAgIHsKLSAgICAgICAgYmFzZV90eXBlOjpvcGVuKFQodTAsIHUxLCB1MiksIC0xLCAtMSk7Ci0gICAgfQotI2VuZGlmIC8vICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAgICB2b2lkIGNoZWNrX29wZW4oKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMtPmlzX29wZW4oKSkgCi0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFKCJhbHJlYWR5IG9wZW4iKSk7Ci0gICAgfQotfTsKLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0JST0tFTl9PVkVSTE9BRF9SRVNPTFVUSU9OX1NUUkVBTV9CVUZGRVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYnVmZmVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9idWZmZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZWI1ZjZjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9idWZmZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjAwICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQlVGRkVSU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9CVUZGRVJTX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgIAotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPiAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN3YXAuCi0jaW5jbHVkZSA8bWVtb3J5PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsbG9jYXRvci4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgICAgICAgICAgICAgICAgICAgLy8gbWVtYmVyIHRlbXBsYXRlcy4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2hhcl90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4gICAgICAvLyBzdHJlYW1zaXplLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9yZWFkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvdHJhaXRzLmhwcD4gICAgICAgICAgLy8gaW50X3R5cGVfb2YuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NoZWNrZWRfb3BlcmF0aW9ucy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi0vLy0tLS0tLS0tLS0tLS0tLS1CdWZmZXJzLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLwotLy8gVGVtcGxhdGUgbmFtZTogYnVmZmVyCi0vLyBEZXNjcmlwdGlvbjogQ2hhcmFjdGVyIGJ1ZmZlci4KLS8vIFRlbXBsYXRlIHBhcmFtZXRlcnM6Ci0vLyAgICAgQ2ggLSBUaGUgY2hhcmFjdGVyIHR5cGUuCi0vLyAgICAgQWxsb2MgLSBUaGUgQWxsb2NhdG9yIHR5cGUuCi0vLwotdGVtcGxhdGU8IHR5cGVuYW1lIENoLAotICAgICAgICAgIHR5cGVuYW1lIEFsbG9jID0gc3RkOjphbGxvY2F0b3I8Q2g+ID4KLWNsYXNzIGJhc2ljX2J1ZmZlciB7Ci1wcml2YXRlOgotI2lmbmRlZiBORE5CT09TVF9OT19TVERfQUxMT0NBVE9SCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBBbGxvYzo6dGVtcGxhdGUgcmViaW5kPENoPjo6b3RoZXIgYWxsb2NhdG9yX3R5cGU7Ci0jZWxzZQotICAgIHR5cGVkZWYgc3RkOjphbGxvY2F0b3I8Q2g+IGFsbG9jYXRvcl90eXBlOwotI2VuZGlmCi1wdWJsaWM6Ci0gICAgYmFzaWNfYnVmZmVyKCk7Ci0gICAgYmFzaWNfYnVmZmVyKGludCBidWZmZXJfc2l6ZSk7Ci0gICAgfmJhc2ljX2J1ZmZlcigpOwotICAgIHZvaWQgcmVzaXplKGludCBidWZmZXJfc2l6ZSk7Ci0gICAgQ2gqIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gYnVmXzsgfQotICAgIENoKiBlbmQoKSBjb25zdCB7IHJldHVybiBidWZfICsgc2l6ZV87IH0KLSAgICBDaCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIGJ1Zl87IH0KLSAgICBzdGQ6OnN0cmVhbXNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHNpemVfOyB9Ci0gICAgdm9pZCBzd2FwKGJhc2ljX2J1ZmZlciYgcmhzKTsKLXByaXZhdGU6Ci0gICAgLy8gRGlzYWxsb3cgY29weWluZyBhbmQgYXNzaWdubWVudC4KLSAgICBiYXNpY19idWZmZXIoY29uc3QgYmFzaWNfYnVmZmVyJik7Ci0gICAgYmFzaWNfYnVmZmVyJiBvcGVyYXRvcj0oY29uc3QgYmFzaWNfYnVmZmVyJik7Ci0gICAgQ2gqICAgICAgICAgICAgICBidWZfOwotICAgIHN0ZDo6c3RyZWFtc2l6ZSAgc2l6ZV87Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaCwgdHlwZW5hbWUgQWxsb2M+Ci12b2lkIHN3YXAoYmFzaWNfYnVmZmVyPENoLCBBbGxvYz4mIGxocywgYmFzaWNfYnVmZmVyPENoLCBBbGxvYz4mIHJocykKLXsgbGhzLnN3YXAocmhzKTsgfQotCi0vLwotLy8gVGVtcGxhdGUgbmFtZTogYnVmZmVyCi0vLyBEZXNjcmlwdGlvbjogQ2hhcmFjdGVyIGJ1ZmZlciB3aXRoIHR3byBwb2ludGVycyBhY2Nlc3NpYmxlIHZpYSBwdHIoKSBhbmQKLS8vICAgICAgZXB0cigpLgotLy8gVGVtcGxhdGUgcGFyYW1ldGVyczoKLS8vICAgICBDaCAtIEEgY2hhcmFjdGVyIHR5cGUuCi0vLwotdGVtcGxhdGU8IHR5cGVuYW1lIENoLAotICAgICAgICAgIHR5cGVuYW1lIEFsbG9jID0gc3RkOjphbGxvY2F0b3I8Q2g+ID4KLWNsYXNzIGJ1ZmZlciA6IHB1YmxpYyBiYXNpY19idWZmZXI8Q2gsIEFsbG9jPiB7Ci1wcml2YXRlOgotICAgIHR5cGVkZWYgYmFzaWNfYnVmZmVyPENoLCBBbGxvYz4gYmFzZTsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIGlvc3RyZWFtczo6Y2hhcl90cmFpdHM8Q2g+IHRyYWl0c190eXBlOwotICAgIHVzaW5nIGJhc2U6OnJlc2l6ZTsgCi0gICAgdXNpbmcgYmFzZTo6ZGF0YTsgCi0gICAgdXNpbmcgYmFzZTo6c2l6ZTsKLSAgICB0eXBlZGVmIENoKiBjb25zdCBjb25zdF9wb2ludGVyOwotICAgIGJ1ZmZlcihpbnQgYnVmZmVyX3NpemUpOwotICAgIENoKiAmIHB0cigpIHsgcmV0dXJuIHB0cl87IH0KLSAgICBjb25zdF9wb2ludGVyJiBwdHIoKSBjb25zdCB7IHJldHVybiBwdHJfOyB9Ci0gICAgQ2gqICYgZXB0cigpIHsgcmV0dXJuIGVwdHJfOyB9Ci0gICAgY29uc3RfcG9pbnRlciYgZXB0cigpIGNvbnN0IHsgcmV0dXJuIGVwdHJfOyB9Ci0gICAgdm9pZCBzZXQoc3RkOjpzdHJlYW1zaXplIHB0ciwgc3RkOjpzdHJlYW1zaXplIGVuZCk7Ci0gICAgdm9pZCBzd2FwKGJ1ZmZlciYgcmhzKTsKLQotICAgIC8vIFJldHVybnMgYW4gaW50X3R5cGUgYXMgYSBzdGF0dXMgY29kZS4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2U+Ci0gICAgdHlwZW5hbWUgaW50X3R5cGVfb2Y8U291cmNlPjo6dHlwZSBmaWxsKFNvdXJjZSYgc3JjKSAKLSAgICB7Ci0gICAgICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBrZWVwOwotICAgICAgICBpZiAoKGtlZXAgPSBzdGF0aWNfY2FzdDxzdGQ6OnN0cmVhbXNpemU+KGVwdHJfIC0gcHRyXykpID4gMCkKLSAgICAgICAgICAgIHRyYWl0c190eXBlOjptb3ZlKHRoaXMtPmRhdGEoKSwgcHRyXywga2VlcCk7Ci0gICAgICAgIHNldCgwLCBrZWVwKTsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIHJlc3VsdCA9IAotICAgICAgICAgICAgaW9zdHJlYW1zOjpyZWFkKHNyYywgdGhpcy0+ZGF0YSgpICsga2VlcCwgdGhpcy0+c2l6ZSgpIC0ga2VlcCk7Ci0gICAgICAgIGlmIChyZXN1bHQgIT0gLTEpCi0gICAgICAgICAgICB0aGlzLT5zZXQoMCwga2VlcCArIHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQgPT0gLTEgPwotICAgICAgICAgICAgdHJhaXRzX3R5cGU6OmVvZigpIDoKLSAgICAgICAgICAgICAgICByZXN1bHQgPT0gMCA/Ci0gICAgICAgICAgICAgICAgICAgIHRyYWl0c190eXBlOjp3b3VsZF9ibG9jaygpIDoKLSAgICAgICAgICAgICAgICAgICAgdHJhaXRzX3R5cGU6Omdvb2QoKTsKLQotICAgIH0KLQotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBvbmUgb3IgbW9yZSBjaGFyYWN0ZXJzIHdlcmUgd3JpdHRlbi4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgIGJvb2wgZmx1c2goU2luayYgZGVzdCkgCi0gICAgewotICAgICAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgICAgICBzdGQ6OnN0cmVhbXNpemUgYW10ID0gc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPihlcHRyXyAtIHB0cl8pOwotICAgICAgICBzdGQ6OnN0cmVhbXNpemUgcmVzdWx0ID0gaW9zdHJlYW1zOjp3cml0ZV9pZihkZXN0LCBwdHJfLCBhbXQpOwotICAgICAgICBpZiAocmVzdWx0IDwgYW10KSB7Ci0gICAgICAgICAgICB0cmFpdHNfdHlwZTo6bW92ZSggdGhpcy0+ZGF0YSgpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJfICsgcmVzdWx0LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbXQgLSByZXN1bHQgKTsKLSAgICAgICAgfQotICAgICAgICB0aGlzLT5zZXQoMCwgYW10IC0gcmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdCAhPSAwOwotICAgIH0KLXByaXZhdGU6Ci0gICAgQ2ggKnB0cl8sICplcHRyXzsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoLCB0eXBlbmFtZSBBbGxvYz4KLXZvaWQgc3dhcChidWZmZXI8Q2gsIEFsbG9jPiYgbGhzLCBidWZmZXI8Q2gsIEFsbG9jPiYgcmhzKQoteyBsaHMuc3dhcChyaHMpOyB9Ci0KLS8vLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiBiYXNpY19idWZmZXItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoLCB0eXBlbmFtZSBBbGxvYz4KLWJhc2ljX2J1ZmZlcjxDaCwgQWxsb2M+OjpiYXNpY19idWZmZXIoKSA6IGJ1Zl8oMCksIHNpemVfKDApIHsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaCwgdHlwZW5hbWUgQWxsb2M+Ci1iYXNpY19idWZmZXI8Q2gsIEFsbG9jPjo6YmFzaWNfYnVmZmVyKGludCBidWZmZXJfc2l6ZSkKLSAgICA6IGJ1Zl8oc3RhdGljX2Nhc3Q8Q2gqPihhbGxvY2F0b3JfdHlwZSgpLmFsbG9jYXRlKGJ1ZmZlcl9zaXplLCAwKSkpLCAKLSAgICAgIHNpemVfKGJ1ZmZlcl9zaXplKSAvLyBDYXN0IGZvciBTdW5Qcm8gNS4zLgotICAgIHsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaCwgdHlwZW5hbWUgQWxsb2M+Ci1pbmxpbmUgYmFzaWNfYnVmZmVyPENoLCBBbGxvYz46On5iYXNpY19idWZmZXIoKQotewotICAgIGlmIChidWZfKSB7Ci0gICAgICAgIGFsbG9jYXRvcl90eXBlKCkuZGVhbGxvY2F0ZShidWZfLAotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBBbGxvYzo6c2l6ZV90eXBlPihzaXplXykpOwotICAgIH0KLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2gsIHR5cGVuYW1lIEFsbG9jPgotaW5saW5lIHZvaWQgYmFzaWNfYnVmZmVyPENoLCBBbGxvYz46OnJlc2l6ZShpbnQgYnVmZmVyX3NpemUpCi17Ci0gICAgaWYgKHNpemVfICE9IGJ1ZmZlcl9zaXplKSB7Ci0gICAgICAgIGJhc2ljX2J1ZmZlcjxDaCwgQWxsb2M+IHRlbXAoYnVmZmVyX3NpemUpOwotICAgICAgICBzdGQ6OnN3YXAoc2l6ZV8sIHRlbXAuc2l6ZV8pOwotICAgICAgICBzdGQ6OnN3YXAoYnVmXywgdGVtcC5idWZfKTsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoLCB0eXBlbmFtZSBBbGxvYz4KLXZvaWQgYmFzaWNfYnVmZmVyPENoLCBBbGxvYz46OnN3YXAoYmFzaWNfYnVmZmVyJiByaHMpIAoteyAKLSAgICBzdGQ6OnN3YXAoYnVmXywgcmhzLmJ1Zl8pOyAKLSAgICBzdGQ6OnN3YXAoc2l6ZV8sIHJocy5zaXplXyk7IAotfQotCi0vLy0tLS0tLS0tLS0tLS0tSW1wbGVtZW50YXRpb24gb2YgYnVmZmVyLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaCwgdHlwZW5hbWUgQWxsb2M+Ci1idWZmZXI8Q2gsIEFsbG9jPjo6YnVmZmVyKGludCBidWZmZXJfc2l6ZSkKLSAgICA6IGJhc2ljX2J1ZmZlcjxDaCwgQWxsb2M+KGJ1ZmZlcl9zaXplKSB7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2gsIHR5cGVuYW1lIEFsbG9jPgotaW5saW5lIHZvaWQgYnVmZmVyPENoLCBBbGxvYz46OnNldChzdGQ6OnN0cmVhbXNpemUgcHRyLCBzdGQ6OnN0cmVhbXNpemUgZW5kKQoteyAKLSAgICBwdHJfID0gZGF0YSgpICsgcHRyOyAKLSAgICBlcHRyXyA9IGRhdGEoKSArIGVuZDsgCi19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoLCB0eXBlbmFtZSBBbGxvYz4KLWlubGluZSB2b2lkIGJ1ZmZlcjxDaCwgQWxsb2M+Ojpzd2FwKGJ1ZmZlciYgcmhzKSAKLXsgCi0gICAgYmFzZTo6c3dhcChyaHMpOyAKLSAgICBzdGQ6OnN3YXAocHRyXywgcmhzLnB0cl8pOyAKLSAgICBzdGQ6OnN3YXAoZXB0cl8sIHJocy5lcHRyXyk7IAotfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQlVGRkVSU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jYWxsX3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY2FsbF90cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOTE3YzFhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jYWxsX3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX1ZBTFVFX1RZUEVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfVkFMVUVfVFlQRV9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBwYXJhbV90eXBlIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPGlzX3N0ZF9pbzxUPiwgVCYsIGNvbnN0IFQmPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCB2YWx1ZV90eXBlIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPGlzX3N0ZF9pbzxUPiwgVCYsIFQ+Ojp0eXBlIHR5cGU7Ci19OwotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfVkFMVUVfVFlQRV9IUFBfSU5DTFVERUQgLy8tLS0tLS0tLS0tLS8vCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY2hhcl90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NoYXJfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTdhYWYyOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY2hhcl90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBQcm92aWRlcyBzdGQ6OmNoYXJfdHJhaXRzIGZvciBsaWJyYXJpZXMgd2l0aG91dCB0ZW1wbGF0ZWQgc3RyZWFtcy4gU2hvdWxkIG5vdAotLy8gYmUgY29uZnVzZWQgd2l0aCA8bmRuYm9vc3QvaW9zdHJlYW1zL2NoYXJfdHJhaXRzLmhwcD4sIHdoaWNoIGRlZmluZXMgdGhlCi0vLyB0ZW1wbGF0ZSBuZG5ib29zdDo6aW9zdHJlYW1zOjpjaGFyX3RyYWl0cy4KLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ0hBUl9UUkFJVFNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ0hBUl9UUkFJVFNfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8aW9zZndkPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3dpZGVfc3RyZWFtcy5ocHA+Ci0jaWZkZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gLy8gTWFrZSBzdXJlIHNpemVfdCBpcyBpbiBzdGQuCi0jIGluY2x1ZGUgPGNzdGRkZWY+Ci0jIGluY2x1ZGUgPGNzdHJpbmc+Ci0jIGluY2x1ZGUgPGNzdGRpbz4KLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19OT19TVFJFQU1fVEVNUExBVEVTIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0NIQVJfVFJBSVRTKGNoKSBzdGQ6OmNoYXJfdHJhaXRzPCBjaCA+Ci0jZWxzZQotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0NIQVJfVFJBSVRTKGNoKSBuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OmNoYXJfdHJhaXRzCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotc3RydWN0IGNoYXJfdHJhaXRzICB7Ci0gICAgdHlwZWRlZiBjaGFyICAgICAgICAgICAgY2hhcl90eXBlOwotICAgIHR5cGVkZWYgaW50ICAgICAgICAgICAgIGludF90eXBlOwotICAgIHR5cGVkZWYgc3RkOjpzdHJlYW1wb3MgIHBvc190eXBlOwotICAgIHR5cGVkZWYgc3RkOjpzdHJlYW1vZmYgIG9mZl90eXBlOwotCi0gICAgLy8gTm90ZTogdGhpcyBtYXkgbm90IGJlIG5vdCBjb25mb3JtaW5nLCBzaW5jZSBpdCB0cmVhdHMgY2hhcnMgYXMgdW5zaWduZWQsCi0gICAgLy8gYnV0IGlzIG9ubHkgdXNlZCB0byB0ZXN0IGZvciBlcXVhbGl0eS4KLSAgICBzdGF0aWMgaW50IGNvbXBhcmUoY29uc3QgY2hhciogbGhzLCBjb25zdCBjaGFyKiByaHMsIHN0ZDo6c2l6ZV90IG4pCi0gICAgeyByZXR1cm4gc3RkOjpzdHJuY21wKGxocywgcmhzLCBuKTsgfQotICAgIHN0YXRpYyBjaGFyKiBjb3B5KGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYywgc3RkOjpzaXplX3QgbikKLSAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxjaGFyKj4oc3RkOjptZW1jcHkoZGVzdCwgc3JjLCBuKSk7IH0KLSAgICBzdGF0aWMgY2hhciogbW92ZShjaGFyICpkZXN0LCBjb25zdCBjaGFyICpzcmMsIHN0ZDo6c2l6ZV90IG4pCi0gICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcio+KHN0ZDo6bWVtbW92ZShkZXN0LCBzcmMsIG4pKTsgfQotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBmaW5kKGNvbnN0IGNoYXIqIHMsIHN0ZDo6c2l6ZV90IG4sIGNvbnN0IGNoYXImIGMpCi0gICAgeyByZXR1cm4gKGNvbnN0IGNoYXIqKSAoY29uc3Qgdm9pZCopIHN0ZDo6bWVtY2hyKHMsIGMsIG4pOyB9Ci0gICAgc3RhdGljIGNoYXIgdG9fY2hhcl90eXBlKGNvbnN0IGludCYgYykgeyByZXR1cm4gYzsgfQotICAgIHN0YXRpYyBpbnQgdG9faW50X3R5cGUoY29uc3QgY2hhciYgYykgeyByZXR1cm4gYzsgfQotICAgIHN0YXRpYyBib29sIGVxX2ludF90eXBlKGNvbnN0IGludCYgbGhzLCBjb25zdCBpbnQmIHJocykKLSAgICB7IHJldHVybiBsaHMgPT0gcmhzOyB9Ci0gICAgc3RhdGljIGludCBlb2YoKSB7IHJldHVybiBFT0Y7IH0KLSAgICBzdGF0aWMgaW50IG5vdF9lb2YoY29uc3QgaW50JiBjKSB7IHJldHVybiBjICE9IEVPRiA/IGMgOiAnXG4nOyB9Ci19OwotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZkZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ0hBUl9UUkFJVFNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29kZWN2dF9oZWxwZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvZGVjdnRfaGVscGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGIxYTFjNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29kZWN2dF9oZWxwZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjM3ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBDb250YWlucyB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgdGVtcGxhdGUgY29kZWN2dF9oZWxwZXIsIHVzZWZ1bCBmb3IKLS8vIGRlZmluaW5nIHNwZWNpYWxpemF0aW9ucyBvZiBzdGQ6OmNvZGVjdnQgd2hlcmUgc3RhdGVfdHlwZSAhPSBtYnN0YXRlX3QuCi0vLyBDb21wZW5zYXRlcyBmb3IgdGhlIGZhY3QgdGhhdCBzb21lIHN0YW5kYXJkIGxpYnJhcnkgaW1wbGVtZW50YXRpb25zIAotLy8gZG8gbm90IGRlcml2ZSB0aGUgcHJpbWlhcnkgY29kZWN2dCB0ZW1wbGF0ZSBmcm9tIGxvY2FsZTo6ZmFjZXQgb3IgCi0vLyBwcm92aWRlIHRoZSBjb3JyZWN0IG1lbWJlciB0eXBlcyBhbmQgZnVuY3Rpb25zLgotCi0vLyBVc2FnZTogCi0vLwotLy8gLy8gSW4gZ2xvYmFsIG5hbWVzcGFjZToKLS8vIE5ETkJPT1NUX0lPU1RSRUFNU19DT0RFQ1ZUX1NQRUMobXlzdGF0ZSkKLS8vCi0vLyAvLyBJbiB1c2VyIG5hbWVzcGFjZToKLS8vIHRlbXBsYXRlPHR5cGVuYW1lIEludGVybiwgdHlwZW5hbWUgRXh0ZXJuPgotLy8gc3RydWN0IG15Y29kZWN2dCA6IGNvZGVjdnRfaGVscGVyPEludGVybiwgRXh0ZXJuLCBTdGF0ZT4geyAuLi4gfTsKLS8vCi0vLyAvLyBPcjoKLS8vIHN0cnVjdCBteWNvZGVjdnQgOiBjb2RlY3Z0X2hlbHBlcjx3Y2hhcl90LCBjaGFyLCBTdGF0ZT4geyAuLi4gfTsKLS8vIAotLy8gRXRjLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09ERUNWVF9IRUxQRVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09ERUNWVF9IRUxQRVJfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gIC8vIFB1dCBzaXplX3QgaW4gc3RkLCBORE5CT09TVF9NU1ZDLCBEaW5rdW0uCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPGFsZ29yaXRobT4gICAgICAgICAvLyBtaW4uCi0jaW5jbHVkZSA8Y3N0ZGRlZj4gICAgICAgICAgIC8vIHNpemVfdC4KLSNpbmNsdWRlIDxsb2NhbGU+ICAgICAgICAgICAgLy8gbG9jYWxlLCBjb2RlY3Z0X2Jhc2UsIGNvZGVjdnQuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvY29kZWN2dC5ocHA+Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiB0cmFpdHMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX0RJTktVTVdBUkVfU1RETElCLCA9PSAxKSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBjb2RlY3Z0X2ludGVybiB7IHR5cGVkZWYgdHlwZW5hbWUgVDo6aW50ZXJuX3R5cGUgdHlwZTsgfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBjb2RlY3Z0X2V4dGVybiB7IHR5cGVkZWYgdHlwZW5hbWUgVDo6ZXh0ZXJuX3R5cGUgdHlwZTsgfTsKLQotI2Vsc2UgLy8gI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX0RJTktVTVdBUkVfU1RETElCLCA9PSAxKSAvLy0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBjb2RlY3Z0X2ludGVybiB7IHR5cGVkZWYgdHlwZW5hbWUgVDo6ZnJvbV90eXBlIHR5cGU7IH07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgY29kZWN2dF9leHRlcm4geyB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRvX3R5cGUgdHlwZTsgfTsKLQotI2VuZGlmIC8vICNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9ESU5LVU1XQVJFX1NURExJQiwgPT0gMSkgLy8tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBjb2RlY3Z0X3N0YXRlIHsgdHlwZWRlZiB0eXBlbmFtZSBUOjpzdGF0ZV90eXBlIHR5cGU7IH07Ci0KLX0gfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGRldGFpbCwgaW9zdHJlYW1zLCBib29zdC4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIGNvZGVjdnRfaW1wbC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfSU9TVFJFQU1TX05PX1BSSU1BUllfQ09ERUNWVF9ERUZJTklUSU9OKSB8fCBcCi0gICAgZGVmaW5lZChORE5CT09TVF9JT1NUUkVBTVNfRU1QVFlfUFJJTUFSWV9DT0RFQ1ZUX0RFRklOSVRJT04pIHx8IFwKLSAgICBkZWZpbmVkKE5ETkJPT1NUX0lPU1RSRUFNU19OT19MT0NBTEUpIFwKLSAgICAvKiovCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgSW50ZXJuLCB0eXBlbmFtZSBFeHRlcm4sIHR5cGVuYW1lIFN0YXRlPgotc3RydWN0IGNvZGVjdnRfaW1wbCA6IHN0ZDo6bG9jYWxlOjpmYWNldCwgc3RkOjpjb2RlY3Z0X2Jhc2UgewotcHVibGljOgotICAgIHR5cGVkZWYgSW50ZXJuICBpbnRlcm5fdHlwZTsKLSAgICB0eXBlZGVmIEV4dGVybiAgZXh0ZXJuX3R5cGU7Ci0gICAgdHlwZWRlZiBTdGF0ZSAgIHN0YXRlX3R5cGU7Ci0KLSAgICBjb2RlY3Z0X2ltcGwoc3RkOjpzaXplX3QgcmVmcyA9IDApIDogc3RkOjpsb2NhbGU6OmZhY2V0KHJlZnMpIHsgfSAKLQotICAgIHN0ZDo6Y29kZWN2dF9iYXNlOjpyZXN1bHQKLSAgICBpbiggU3RhdGUmIHN0YXRlLCBjb25zdCBFeHRlcm4qIGZpcnN0MSwgY29uc3QgRXh0ZXJuKiBsYXN0MSwKLSAgICAgICAgY29uc3QgRXh0ZXJuKiYgbmV4dDEsIEludGVybiogZmlyc3QyLCBJbnRlcm4qIGxhc3QyLAotICAgICAgICBJbnRlcm4qJiBuZXh0MiApIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZG9faW4oc3RhdGUsIGZpcnN0MSwgbGFzdDEsIG5leHQxLCBmaXJzdDIsIGxhc3QyLCBuZXh0Mik7Ci0gICAgfQotCi0gICAgc3RkOjpjb2RlY3Z0X2Jhc2U6OnJlc3VsdAotICAgIG91dCggU3RhdGUmIHN0YXRlLCBjb25zdCBJbnRlcm4qIGZpcnN0MSwgY29uc3QgSW50ZXJuKiBsYXN0MSwKLSAgICAgICAgIGNvbnN0IEludGVybiomIG5leHQxLCBFeHRlcm4qIGZpcnN0MiwgRXh0ZXJuKiBsYXN0MiwKLSAgICAgICAgIEV4dGVybiomIG5leHQyICkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBkb19vdXQoc3RhdGUsIGZpcnN0MSwgbGFzdDEsIG5leHQxLCBmaXJzdDIsIGxhc3QyLCBuZXh0Mik7Ci0gICAgfQotCi0gICAgc3RkOjpjb2RlY3Z0X2Jhc2U6OnJlc3VsdAotICAgIHVuc2hpZnQoU3RhdGUmIHN0YXRlLCBFeHRlcm4qIGZpcnN0MiwgRXh0ZXJuKiBsYXN0MiwgRXh0ZXJuKiYgbmV4dDIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZG9fdW5zaGlmdChzdGF0ZSwgZmlyc3QyLCBsYXN0MiwgbmV4dDIpOwotICAgIH0KLQotICAgIGJvb2wgYWx3YXlzX25vY29udigpIGNvbnN0IHRocm93KCkgeyByZXR1cm4gZG9fYWx3YXlzX25vY29udigpOyB9Ci0KLSAgICBpbnQgbWF4X2xlbmd0aCgpIGNvbnN0IHRocm93KCkgeyByZXR1cm4gZG9fbWF4X2xlbmd0aCgpOyB9Ci0KLSAgICBpbnQgZW5jb2RpbmcoKSBjb25zdCB0aHJvdygpIHsgcmV0dXJuIGRvX2VuY29kaW5nKCk7IH0KLQotICAgIGludCBsZW5ndGgoIE5ETkJPT1NUX0lPU1RSRUFNU19DT0RFQ1ZUX0NWX1FVQUxJRklFUiBTdGF0ZSYgc3RhdGUsIAotICAgICAgICAgICAgICAgIGNvbnN0IEV4dGVybiogZmlyc3QxLCBjb25zdCBFeHRlcm4qIGxhc3QxLAotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGxlbjIgKSBjb25zdCB0aHJvdygpCi0gICAgewotICAgICAgICByZXR1cm4gZG9fbGVuZ3RoKHN0YXRlLCBmaXJzdDEsIGxhc3QxLCBsZW4yKTsKLSAgICB9Ci1wcm90ZWN0ZWQ6Ci0gICAgc3RkOjpjb2RlY3Z0X2Jhc2U6OnJlc3VsdAotICAgIHZpcnR1YWwgZG9faW4oIFN0YXRlJiwgY29uc3QgRXh0ZXJuKiwgY29uc3QgRXh0ZXJuKiwgY29uc3QgRXh0ZXJuKiYsIAotICAgICAgICAgICAgICAgICAgIEludGVybiosIEludGVybiosIEludGVybiomICkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OmNvZGVjdnRfYmFzZTo6bm9jb252OwotICAgIH0KLQotICAgIHN0ZDo6Y29kZWN2dF9iYXNlOjpyZXN1bHQKLSAgICB2aXJ0dWFsIGRvX291dCggU3RhdGUmLCBjb25zdCBJbnRlcm4qLCBjb25zdCBJbnRlcm4qLCBjb25zdCBJbnRlcm4qJiwgCi0gICAgICAgICAgICAgICAgICAgIEV4dGVybiosIEV4dGVybiosIEV4dGVybiomICkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OmNvZGVjdnRfYmFzZTo6bm9jb252OwotICAgIH0KLQotICAgIHN0ZDo6Y29kZWN2dF9iYXNlOjpyZXN1bHQKLSAgICB2aXJ0dWFsIGRvX3Vuc2hpZnQoU3RhdGUmLCBFeHRlcm4qLCBFeHRlcm4qLCBFeHRlcm4qJikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OmNvZGVjdnRfYmFzZTo6b2s7Ci0gICAgfQotCi0gICAgdmlydHVhbCBib29sIGRvX2Fsd2F5c19ub2NvbnYoKSBjb25zdCB0aHJvdygpIHsgcmV0dXJuIHRydWU7IH0KLQotICAgIHZpcnR1YWwgaW50IGRvX21heF9sZW5ndGgoKSBjb25zdCB0aHJvdygpIHsgcmV0dXJuIDE7IH0KLQotICAgIHZpcnR1YWwgaW50IGRvX2VuY29kaW5nKCkgY29uc3QgdGhyb3coKSB7IHJldHVybiAxOyB9Ci0KLSAgICB2aXJ0dWFsIGludCBkb19sZW5ndGgoIE5ETkJPT1NUX0lPU1RSRUFNU19DT0RFQ1ZUX0NWX1FVQUxJRklFUiBTdGF0ZSYsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRXh0ZXJuKiBmaXJzdDEsIGNvbnN0IEV4dGVybiogbGFzdDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBsZW4yICkgY29uc3QgdGhyb3coKQotICAgIHsKLSAgICAgICAgcmV0dXJuIChzdGQ6Om1pbikoc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KGxhc3QxIC0gZmlyc3QxKSwgbGVuMik7Ci0gICAgfQotfTsKLQotfSB9IH0gLy8gRW5kIG5hbWVzcGFjZXMgZGV0YWlsLCBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gbm8gcHJpbWFyeSBjb2RlY3Z0IGRlZmluaXRpb24sIGVtcHR5IGRlZmluaXRpb24uCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBORE5CT09TVF9JT1NUUkVBTVNfQ09ERUNWVF9TUEVDLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0lPU1RSRUFNU19OT19QUklNQVJZX0NPREVDVlRfREVGSU5JVElPTikgfHwgXAotICAgIGRlZmluZWQoTkROQk9PU1RfSU9TVFJFQU1TX0VNUFRZX1BSSU1BUllfQ09ERUNWVF9ERUZJTklUSU9OKSBcCi0gICAgLyoqLwotIyBpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotIyAgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19DT0RFQ1ZUX1NQRUMoc3RhdGUpIFwKLSAgICBuYW1lc3BhY2Ugc3RkIHsgXAotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRlcm4sIHR5cGVuYW1lIEV4dGVybj4gXAotICAgICAgICBjbGFzcyBjb2RlY3Z0PEludGVybiwgRXh0ZXJuLCBzdGF0ZT4gXAotICAgICAgICAgICAgOiBwdWJsaWMgOjpuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OmNvZGVjdnRfaW1wbDwgXAotICAgICAgICAgICAgICAgICAgICAgICAgIEludGVybiwgRXh0ZXJuLCBzdGF0ZSBcCi0gICAgICAgICAgICAgICAgICAgICA+IFwKLSAgICAgICAgeyBcCi0gICAgICAgIHB1YmxpYzogXAotICAgICAgICAgICAgY29kZWN2dChzdGQ6OnNpemVfdCByZWZzID0gMCkgXAotICAgICAgICAgICAgICAgIDogOjpuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OmNvZGVjdnRfaW1wbDwgXAotICAgICAgICAgICAgICAgICAgICAgIEludGVybiwgRXh0ZXJuLCBzdGF0ZSBcCi0gICAgICAgICAgICAgICAgICA+KHJlZnMpIFwKLSAgICAgICAgICAgICAgICB7IH0gXAotICAgICAgICAgICAgc3RhdGljIHN0ZDo6bG9jYWxlOjppZCBpZDsgXAotICAgICAgICB9OyBcCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludGVybiwgdHlwZW5hbWUgRXh0ZXJuPiBcCi0gICAgICAgIHN0ZDo6bG9jYWxlOjppZCBjb2RlY3Z0PEludGVybiwgRXh0ZXJuLCBzdGF0ZT46OmlkOyBcCi0gICAgfSBcCi0gICAgLyoqLwotIyBlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0NPREVDVlRfU1BFQyhzdGF0ZSkgXAotICAgIG5hbWVzcGFjZSBzdGQgeyBcCi0gICAgICAgIHRlbXBsYXRlPD4gXAotICAgICAgICBjbGFzcyBjb2RlY3Z0PHdjaGFyX3QsIGNoYXIsIHN0YXRlPiBcCi0gICAgICAgICAgICA6IHB1YmxpYyA6Om5kbmJvb3N0Ojppb3N0cmVhbXM6OmRldGFpbDo6Y29kZWN2dF9pbXBsPCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCwgY2hhciwgc3RhdGUgXAotICAgICAgICAgICAgICAgICAgICAgPiBcCi0gICAgICAgIHsgXAotICAgICAgICBwdWJsaWM6IFwKLSAgICAgICAgICAgIGNvZGVjdnQoc3RkOjpzaXplX3QgcmVmcyA9IDApIFwKLSAgICAgICAgICAgICAgICA6IDo6bmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpjb2RlY3Z0X2ltcGw8IFwKLSAgICAgICAgICAgICAgICAgICAgICB3Y2hhcl90LCBjaGFyLCBzdGF0ZSBcCi0gICAgICAgICAgICAgICAgICA+KHJlZnMpIFwKLSAgICAgICAgICAgICAgICB7IH0gXAotICAgICAgICAgICAgc3RhdGljIHN0ZDo6bG9jYWxlOjppZCBpZDsgXAotICAgICAgICB9OyBcCi0gICAgICAgIHRlbXBsYXRlPD4gXAotICAgICAgICBzdGQ6OmxvY2FsZTo6aWQgY29kZWN2dDx3Y2hhcl90LCBjaGFyLCBzdGF0ZT46OmlkOyBcCi0gICAgfSBcCi0gICAgLyoqLwotIyBlbmRpZgotI2Vsc2UKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19DT0RFQ1ZUX1NQRUMoc3RhdGUpCi0jZW5kaWYgLy8gbm8gcHJpbWFyeSBjb2RlY3Z0IGRlZmluaXRpb24sIG9yIGVtcHR5IGRlZmluaXRpb24uCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLSAgICAgICAgICAgICAgICAgICAgCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgY29kZWN2dF9oZWxwZXItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBJbnRlcm4sIHR5cGVuYW1lIEV4dGVybiwgdHlwZW5hbWUgU3RhdGU+Ci1zdHJ1Y3QgY29kZWN2dF9oZWxwZXIgOiBzdGQ6OmNvZGVjdnQ8SW50ZXJuLCBFeHRlcm4sIFN0YXRlPiB7IAotICAgIHR5cGVkZWYgSW50ZXJuICBpbnRlcm5fdHlwZTsKLSAgICB0eXBlZGVmIEV4dGVybiAgZXh0ZXJuX3R5cGU7Ci0gICAgdHlwZWRlZiBTdGF0ZSAgIHN0YXRlX3R5cGU7Ci0gICAgY29kZWN2dF9oZWxwZXIoc3RkOjpzaXplX3QgcmVmcyA9IDApIAotICAgICNpZiAhZGVmaW5lZChORE5CT09TVF9JT1NUUkVBTVNfTk9fQ09ERUNWVF9DVE9SX0ZST01fU0laRV9UKQotICAgICAgICA6IHN0ZDo6Y29kZWN2dDxJbnRlcm4sIEV4dGVybiwgU3RhdGU+KHJlZnMpCi0gICAgI2Vsc2UKLSAgICAgICAgOiBzdGQ6OmNvZGVjdnQ8SW50ZXJuLCBFeHRlcm4sIFN0YXRlPigpCi0gICAgI2VuZGlmCi0gICAgICAgIHsgfQotI2lmZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19OT19DT0RFQ1ZUX01BWF9MRU5HVEgKLSAgICBpbnQgbWF4X2xlbmd0aCgpIGNvbnN0IHRocm93KCkgeyByZXR1cm4gZG9fbWF4X2xlbmd0aCgpOyB9Ci1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBpbnQgZG9fbWF4X2xlbmd0aCgpIGNvbnN0IHRocm93KCkgeyByZXR1cm4gMTsgfQotI2VuZGlmCi19OwotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09ERUNWVF9IRUxQRVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29kZWN2dF9ob2xkZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvZGVjdnRfaG9sZGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2I1ZTkyOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29kZWN2dF9ob2xkZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vIENvbnRhaW5zIG1hY2hpbmVyeSBmb3IgcGVyZm9ybWluZyBjb2RlIGNvbnZlcnNpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT0RFQ1ZUX0hPTERFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT0RFQ1ZUX0hPTERFUl9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxjd2NoYXI+ICAgICAgICAgICAgLy8gbWJzdGF0ZV90LgotI2luY2x1ZGUgPGxvY2FsZT4gICAgICAgICAgICAvLyBjb2RlY3Z0LCBsb2NhbGUuCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gIC8vIEhBU19NQUNST19VU0VfRkFDRVQuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvY29kZWN2dC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotc3RydWN0IGRlZmF1bHRfY29kZWN2dCB7IAotICAgIHR5cGVkZWYgd2NoYXJfdCAgICAgICAgIGludGVybl90eXBlLCBmcm9tX3R5cGU7Ci0gICAgdHlwZWRlZiBjaGFyICAgICAgICAgICAgZXh0ZXJuX3R5cGUsIHRvX3R5cGU7Ci0gICAgdHlwZWRlZiBzdGQ6Om1ic3RhdGVfdCAgc3RhdGVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENvZGVjdnQ+Ci1zdHJ1Y3QgY29kZWN2dF9ob2xkZXIgewotICAgIHR5cGVkZWYgQ29kZWN2dCBjb2RlY3Z0X3R5cGU7Ci0gICAgY29uc3QgY29kZWN2dF90eXBlJiBnZXQoKSBjb25zdCB7IHJldHVybiBjb2RlY3Z0XzsgfQotICAgIHZvaWQgaW1idWUoY29uc3Qgc3RkOjpsb2NhbGUmKSB7IH0KLSAgICBDb2RlY3Z0IGNvZGVjdnRfOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNvZGVjdnRfaG9sZGVyPGRlZmF1bHRfY29kZWN2dD4gewotICAgIHR5cGVkZWYgc3RkOjpjb2RlY3Z0PHdjaGFyX3QsIGNoYXIsIHN0ZDo6bWJzdGF0ZV90PiBjb2RlY3Z0X3R5cGU7Ci0gICAgY29kZWN2dF9ob2xkZXIoKSB7IHJlc2V0X2NvZGVjdnQoKTsgfQotICAgIGNvbnN0IGNvZGVjdnRfdHlwZSYgZ2V0KCkgY29uc3QgeyByZXR1cm4gKmNvZGVjdnRfOyB9Ci0gICAgdm9pZCBpbWJ1ZShjb25zdCBzdGQ6OmxvY2FsZSYgbG9jKSAKLSAgICB7IAotICAgICAgICBsb2NfID0gbG9jOwotICAgICAgICByZXNldF9jb2RlY3Z0KCk7Ci0gICAgfQotICAgIHZvaWQgcmVzZXRfY29kZWN2dCgpCi0gICAgewotICAgICAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgICAgICAjaWZuZGVmIE5ETkJPT1NUX0hBU19NQUNST19VU0VfRkFDRVQKLSAgICAgICAgICAgIGNvZGVjdnRfID0gJiB1c2VfZmFjZXQ8IGNvZGVjdnRfdHlwZSA+KGxvY18pOwotICAgICAgICAjZWxzZQotICAgICAgICAgICAgY29kZWN2dF8gPSAmIF9VU0UobG9jXywgY29kZWN2dF90eXBlKTsKLSAgICAgICAgI2VuZGlmCi0gICAgfQotICAgIHN0ZDo6bG9jYWxlIGxvY187IC8vIFByZXZlbnQgY29kZWN2dF8gZnJvbSBiZWluZyBmcmVlZC4KLSAgICBjb25zdCBjb2RlY3Z0X3R5cGUqIGNvZGVjdnRfOwotfTsKLQotfSB9IH0gLy8gRW5kIG5hbWVzcGFjZXMgZGV0YWlsLCBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPREVDVlRfSE9MREVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9hdXRvX2xpbmsuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9hdXRvX2xpbmsuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTlmODA1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvYXV0b19saW5rLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBBZGFwdGVkIGZyb20gPG5kbmJvb3N0L2NvbmZpZy9hdXRvX2xpbmsuaHBwPiBhbmQgZnJvbQotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvbW9yZS9zZXBhcmF0ZV9jb21waWxhdGlvbi5odG1sLCBieSBKb2huIE1hZGRvY2suCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9BVVRPX0xJTktfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQVVUT19MSU5LX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgIAotCi0jaWYgZGVmaW5lZChORE5CT09TVF9FWFRFUk5BTF9MSUJfTkFNRSkKLSMgaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKSBcCi0gICAgIHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKSBcCi0gICAgIHx8IChkZWZpbmVkKF9fTVdFUktTX18pICYmIGRlZmluZWQoX1dJTjMyKSAmJiAoX19NV0VSS1NfXyA+PSAweDMwMDApKSBcCi0gICAgIHx8IChkZWZpbmVkKF9fSUNMKSAmJiBkZWZpbmVkKF9NU0NfRVhURU5TSU9OUykgJiYgKF9NU0NfVkVSID49IDEyMDApKSBcCi0gICAgIC8qKi8KLSMgIHByYWdtYSBjb21tZW50KGxpYiwgTkROQk9PU1RfRVhURVJOQUxfTElCX05BTUUpCi0jIGVuZGlmCi0jIHVuZGVmIE5ETkJPT1NUX0VYVEVSTkFMX0xJQl9OQU1FCi0jZW5kaWYKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1FbmFibGUgYXV0b21hdGljIGxpYnJhcnkgdmFyaWFudCBzZWxlY3Rpb24tLS0tLS0tLS0tLS0tLS0tLy8gCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9JT1NUUkVBTVNfU09VUkNFKSAmJiBcCi0gICAgIWRlZmluZWQoTkROQk9PU1RfQUxMX05PX0xJQikgJiYgXAotICAgICFkZWZpbmVkKE5ETkJPT1NUX0lPU1RSRUFNU19OT19MSUIpIFwKLSAgICAvKiovCi0KLS8vIFNldCB0aGUgbmFtZSBvZiBvdXIgbGlicmFyeSwgdGhpcyB3aWxsIGdldCB1bmRlZidlZCBieSBhdXRvX2xpbmsuaHBwCi0vLyBvbmNlIGl0J3MgZG9uZSB3aXRoIGl0LgotIyBkZWZpbmUgTkROQk9PU1RfTElCX05BTUUgbmRuYm9vc3RfaW9zdHJlYW1zCi0KLS8vIElmIHdlJ3JlIGltcG9ydGluZyBjb2RlIGZyb20gYSBkbGwsIHRoZW4gdGVsbCBhdXRvX2xpbmsuaHBwIGFib3V0IGl0LgotIyBpZiBkZWZpbmVkKE5ETkJPT1NUX0FMTF9EWU5fTElOSykgfHwgZGVmaW5lZChORE5CT09TVF9JT1NUUkVBTVNfRFlOX0xJTkspCi0jICBkZWZpbmUgTkROQk9PU1RfRFlOX0xJTksKLSMgZW5kaWYKLQotLy8gQW5kIGluY2x1ZGUgdGhlIGhlYWRlciB0aGF0IGRvZXMgdGhlIHdvcmsuCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9hdXRvX2xpbmsuaHBwPgotI2VuZGlmICAvLyBhdXRvLWxpbmtpbmcgZGlzYWJsZWQKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9BVVRPX0xJTktfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2J6aXAyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvYnppcDIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjJjYTYxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvYnppcDIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vIEFkYXB0ZWQgZnJvbSA8bmRuYm9vc3QvY29uZmlnL2F1dG9fbGluay5ocHA+IGFuZCBmcm9tCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9tb3JlL3NlcGFyYXRlX2NvbXBpbGF0aW9uLmh0bWwsIGJ5IEpvaG4gTWFkZG9jay4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPTkZJR19CWklQMl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT05GSUdfQlpJUDJfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZiAgICAgICAgICAgICAgCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0JaSVAyX0JJTkFSWSkKLSMgaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKSB8fCBcCi0gICAgIGRlZmluZWQoX19CT1JMQU5EQ19fKSB8fCBcCi0gICAgIChkZWZpbmVkKF9fTVdFUktTX18pICYmIGRlZmluZWQoX1dJTjMyKSAmJiAoX19NV0VSS1NfXyA+PSAweDMwMDApKSB8fCBcCi0gICAgIChkZWZpbmVkKF9fSUNMKSAmJiBkZWZpbmVkKF9NU0NfRVhURU5TSU9OUykgJiYgKF9NU0NfVkVSID49IDEyMDApKSBcCi0gICAgIC8qKi8KLQotLy8gU3BlY2lmeSB0aGUgbmFtZSBvZiB0aGUgLmxpYiBmaWxlLgotIyAgcHJhZ21hIGNvbW1lbnQobGliLCBORE5CT09TVF9TVFJJTkdJWkUoTkROQk9PU1RfQlpJUDJfQklOQVJZKSkKLSMgZW5kaWYKLSNlbHNlIAotIyBpZiAhZGVmaW5lZChORE5CT09TVF9JT1NUUkVBTVNfU09VUkNFKSAmJiBcCi0gICAgICFkZWZpbmVkKE5ETkJPT1NUX0FMTF9OT19MSUIpICYmIFwKLSAgICAgIWRlZmluZWQoTkROQk9PU1RfSU9TVFJFQU1TX05PX0xJQikgXAotICAgICAvKiovCi0KLS8vIFNldCB0aGUgbmFtZSBvZiBvdXIgbGlicmFyeSwgdGhpcyB3aWxsIGdldCB1bmRlZidlZCBieSBhdXRvX2xpbmsuaHBwCi0vLyBvbmNlIGl0J3MgZG9uZSB3aXRoIGl0LgotIyAgZGVmaW5lIE5ETkJPT1NUX0xJQl9OQU1FIG5kbmJvb3N0X2J6aXAyCi0KLS8vIElmIHdlJ3JlIGltcG9ydGluZyBjb2RlIGZyb20gYSBkbGwsIHRoZW4gdGVsbCBhdXRvX2xpbmsuaHBwIGFib3V0IGl0LgotIyAgaWYgZGVmaW5lZChORE5CT09TVF9BTExfRFlOX0xJTkspIHx8IGRlZmluZWQoTkROQk9PU1RfSU9TVFJFQU1TX0RZTl9MSU5LKQotIyAgIGRlZmluZSBORE5CT09TVF9EWU5fTElOSwotIyAgZW5kaWYKLQotLy8gQW5kIGluY2x1ZGUgdGhlIGhlYWRlciB0aGF0IGRvZXMgdGhlIHdvcmsuCi0jICBpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvYXV0b19saW5rLmhwcD4KLSMgZW5kaWYKLSNlbmRpZgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPTkZJR19CWklQMl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvY29kZWN2dC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2NvZGVjdnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZmE0NWIyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvY29kZWN2dC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPTkZJR19DT0RFQ1ZUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPTkZJR19DT0RFQ1ZUX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvd2lkZV9zdHJlYW1zLmhwcD4KLSNpbmNsdWRlIDxjc3RkZGVmPgotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tU3VwcG9ydCBmb3IgY29kZWN2dCB3aXRoIHVzZXItZGVmaW5lZCBzdGF0ZSB0eXBlcy0tLS0tLS0tLS8vCi0KLSNpZiBkZWZpbmVkKF9fTVNMX0NQUF9fKSB8fCBkZWZpbmVkKF9fTElCQ09NT19fKSB8fCBcCi0gICAgTkROQk9PU1RfV09SS0FST1VORChfU1RMUE9SVF9WRVJTSU9OLCA8PSAweDQ1MCkgXAotICAgIC8qKi8KLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19OT19QUklNQVJZX0NPREVDVlRfREVGSU5JVElPTgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fR0xJQkNQUF9fKSB8fCBkZWZpbmVkKF9fR0xJQkNYWF9fKSB8fCBcCi0gICAgTkROQk9PU1RfV09SS0FST1VORChfU1RMUE9SVF9WRVJTSU9OLCA+IDB4NDUwKSBcCi0gICAgLyoqLwotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0VNUFRZX1BSSU1BUllfQ09ERUNWVF9ERUZJTklUSU9OCi0jZW5kaWYKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1DaGVjayBmb3IgY29kZWN2dCBjdG9yIHRha2luZyBhIHJlZmVyZW5jZSBjb3VudC0tLS0tLS0tLS0tLy8KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4MzIwNSkpIHx8IFwKLSAgICBORE5CT09TVF9XT1JLQVJPVU5EKF9TVExQT1JUX1ZFUlNJT04sIDwgMHg0NjEpIFwKLSAgICAvKiovCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfTk9fQ09ERUNWVF9DVE9SX0ZST01fU0laRV9UCi0jZW5kaWYKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1Ob3JtYWxpemUgY29kZWN2dDo6bGVuZ3RoLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotI2lmICFkZWZpbmVkKF9fTVNMX0NQUF9fKSAmJiAhZGVmaW5lZChfX0xJQkNPTU9fXykgJiYgXAotICAgICghZGVmaW5lZChORE5CT09TVF9SV1NURF9WRVIpIHx8IE5ETkJPT1NUX1JXU1REX1ZFUiA8IDB4MDQwMTAzMDApICYmIFwKLSAgICAoIWRlZmluZWQoX19NQUNIX18pIHx8ICFkZWZpbmVkKF9fSU5URUxfQ09NUElMRVIpKQotICAgIC8qKi8KLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19DT0RFQ1ZUX0NWX1FVQUxJRklFUiBjb25zdAotI2Vsc2UKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19DT0RFQ1ZUX0NWX1FVQUxJRklFUgotI2VuZGlmCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tQ2hlY2sgZm9yIGNvZGVjdnQ6Om1heF9sZW5ndGgtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9TVExQT1JUX1ZFUlNJT04sIDwgMHg0NjEpCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfTk9fQ09ERUNWVF9NQVhfTEVOR1RICi0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgCi0vLy0tLS0tLS0tLS0tLS0tLS0tLVB1dCBtYnN0YXRlX3QgYW5kIGNvZGVjdnQgaW4gc3RkLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19OT19MT0NBTEUKLSMgaW5jbHVkZSA8bG9jYWxlPgotI2VuZGlmCi0KLS8vIEZyb20gUm9iZXJ0IFJhbWV5J3MgdmVyc2lvbiBvZiB1dGY4X2NvZGVjdnRfZmFjZXQuCi1uYW1lc3BhY2Ugc3RkIHsgCi0KLSNpZiBkZWZpbmVkKF9fTElCQ09NT19fKQotICAgIHVzaW5nIDo6bWJzdGF0ZV90OwotI2VsaWYgZGVmaW5lZChORE5CT09TVF9ESU5LVU1XQVJFX1NURExJQikgJiYgIWRlZmluZWQoX19CT1JMQU5EQ19fKQotICAgIHVzaW5nIDo6bWJzdGF0ZV90OwotI2VsaWYgZGVmaW5lZChfX1NHSV9TVExfUE9SVCkKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpCi0gICAgdXNpbmcgOjpjb2RlY3Z0OwotICAgIHVzaW5nIDo6bWJzdGF0ZV90OwotI2VuZGlmCi0KLX0gLy8gRW5kIG5hbWVzcGFjZSBzdGQuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09ORklHX0NPREVDVlRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2Rpc2FibGVfd2FybmluZ3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9kaXNhYmxlX3dhcm5pbmdzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGY2NWYwMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2Rpc2FibGVfd2FybmluZ3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgICAgICAgICAgICAvLyBORE5CT09TVF9NU1ZDLgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4gIC8vIE5ETkJPT1NUX1dPUktBUk9VTkQuCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEyNykgICAgLy8gQ29uZGl0aW9uYWwgZXhwcmVzc2lvbiBpcyBjb25zdGFudC4KLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTMwKSAgICAvLyBMb2dpY2FsIG9wZXJhdGlvbiBvbiBhZGRyZXNzIG9mIHN0cmluZyBjb25zdGFudC4KLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MjI0KSAgICAvLyBQYXJhbWV0ZXIgcHJldmlvdXNseSBkZWZpbmVkIGFzIHR5cGUuCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDI0NCkgICAgLy8gQ29udmVyc2lvbjogcG9zc2libGUgbG9zcyBvZiBkYXRhLgotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ1MTIpICAgIC8vIEFzc2lnbm1lbnQgb3BlcmF0b3IgY291bGQgbm90IGJlIGdlbmVyYXRlZC4KLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0NzA2KSAgICAvLyBBc3NpZ25tZW50IHdpdGhpbiBjb25kaXRpb25hbCBleHByZXNzaW9uLgotIyBpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID49IDE0MDApCi0jICBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjYzMzQpICAgLy8gc2l6ZW9mIGFwcGxpZWQgdG8gYW4gZXhwcmVzc2lvbiB3aXRoIGFuIG9wZXJhdG9yLgotIyBlbmRpZgotI2Vsc2UKLSMgaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg2MDApCi0jICBwcmFnbWEgd2FybiAtODAwOCAgICAgLy8gQ29uZGl0aW9uIGFsd2F5cyB0cnVlL2ZhbHNlLgotIyAgcHJhZ21hIHdhcm4gLTgwNjYgICAgIC8vIFVucmVhY2hhYmxlIGNvZGUuCi0jICBwcmFnbWEgd2FybiAtODA3MSAgICAgLy8gQ29udmVyc2lvbiBtYXkgbG9zZSBzaWduaWZpY2FudCBkaWdpdHMuCi0jICBwcmFnbWEgd2FybiAtODA3MiAgICAgLy8gU3VzcGljaW91cyBwb2ludGVyIGFyaXRobWV0aWMuCi0jICBwcmFnbWEgd2FybiAtODA4MCAgICAgLy8gaWRlbnRpZmllciBkZWNsYXJlZCBidXQgbmV2ZXIgdXNlZC4KLSMgZW5kaWYKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9keW5fbGluay5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2R5bl9saW5rLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZThkOTIyZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2R5bl9saW5rLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBBZGFwdGVkIGZyb20gaHR0cDovL3d3dy5ib29zdC5vcmcvbW9yZS9zZXBhcmF0ZV9jb21waWxhdGlvbi5odG1sLCBieQotLy8gSm9obiBNYWRkb2NrLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09ORklHX0RZTl9MSU5LX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPTkZJR19EWU5fTElOS19IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLUVuYWJsZSBkeW5hbWljIGxpbmtpbmcgb24gd2luZG93cy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLyAKLQotI2lmZGVmIE5ETkJPT1NUX0hBU19ERUNMU1BFQyAKLSMgaWYgZGVmaW5lZChORE5CT09TVF9BTExfRFlOX0xJTkspIHx8IGRlZmluZWQoTkROQk9PU1RfSU9TVFJFQU1TX0RZTl9MSU5LKQotIyAgaWZkZWYgTkROQk9PU1RfSU9TVFJFQU1TX1NPVVJDRQotIyAgIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVDTCBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKLSMgIGVsc2UKLSMgICBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgX19kZWNsc3BlYyhkbGxpbXBvcnQpCi0jICBlbmRpZiAgCi0jIGVuZGlmICAKLSNlbmRpZiAKLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVDTAotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wKLSNlbmRpZgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPTkZJR19EWU5fTElOS19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzA0M2M1ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2VuYWJsZV93YXJuaW5ncy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSMgcHJhZ21hIHdhcm5pbmcocG9wKQotI2Vsc2UKLSMgaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg2MDApCi0jICBwcmFnbWEgd2FybiAuODAwOCAgICAgLy8gQ29uZGl0aW9uIGFsd2F5cyB0cnVlL2ZhbHNlLgotIyAgcHJhZ21hIHdhcm4gLjgwNjYgICAgIC8vIFVucmVhY2hhYmxlIGNvZGUuCi0jICBwcmFnbWEgd2FybiAuODA3MSAgICAgLy8gQ29udmVyc2lvbiBtYXkgbG9zZSBzaWduaWZpY2FudCBkaWdpdHMuCi0jICBwcmFnbWEgd2FybiAuODA3MiAgICAgLy8gU3VzcGljaW91cyBwb2ludGVyIGFyaXRobWV0aWMuCi0jICBwcmFnbWEgd2FybiAuODA4MCAgICAgLy8gaWRlbnRpZmllciBkZWNsYXJlZCBidXQgbmV2ZXIgdXNlZC4KLSMgZW5kaWYKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9mcG9zLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZnBvcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmYjk2NTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9mcG9zLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLS8qCi0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuKFNlZSBhY2NvbXBhbnlpbmcgCi0gKiBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0gKiAKLSAqIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotICogRmlsZTogICAgICAgIG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZXhlY3V0ZS5ocHAKLSAqIERhdGU6ICAgICAgICBUaHUgRGVjIDA2IDEzOjIxOjU0IE1TVCAyMDA3Ci0gKiBDb3B5cmlnaHQ6ICAgMjAwNy0yMDA4IENvZGVSYWdlLCBMTEMKLSAqIEF1dGhvcjogICAgICBKb25hdGhhbiBUdXJrYW5pcwotICogQ29udGFjdDogICAgIHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20KLSAqCi0gKiBEZWZpbmVzIHRoZSBwcmVwcm9jZXNzb3Igc3ltYm9sIE5ETkJPT1NUX0lPU1RSRUFNU19IQVNfRElOS1VNV0FSRV9GUE9TIGZvcgotICogcGxhdGZvcm1zIHRoYXQgdXNlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBzdGQ6OmZwb3MgZnJvbSB0aGUgRGlua3Vtd2FyZSAKLSAqIFN0YW5kYXJkIExpYnJhcnkuCi0gKi8KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPTkZJR19GUE9TX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPTkZJR19GUE9TX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotIyBpZiAoZGVmaW5lZChfWVZBTFMpIHx8IGRlZmluZWQoX0NQUExJQl9WRVIpKSAmJiAhZGVmaW5lZChfX1NHSV9TVExfUE9SVCkgJiYgXAotICAgICAhZGVmaW5lZChfU1RMUE9SVF9WRVJTSU9OKSAmJiAhZGVmaW5lZChfX1FOWF9fKQotICAgICAvKiovCi0jICBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0hBU19ESU5LVU1XQVJFX0ZQT1MKLSMgZW5kaWYKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT05GSUdfRlBPU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZ2NjLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZ2NjLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjY4NTM0Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2djYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gQWRhcHRlZCBmcm9tIDxuZG5ib29zdC9jb25maWcvYXV0b19saW5rLmhwcD4gYW5kIGZyb20KLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL21vcmUvc2VwYXJhdGVfY29tcGlsYXRpb24uaHRtbCwgYnkgSm9obiBNYWRkb2NrLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09ORklHX0dDQ19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT05GSUdfR0NDX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgIAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gLy8gTkROQk9PU1RfSU5URUwuCi0KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChORE5CT09TVF9JTlRFTCkKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19HQ0MgKF9fR05VQ19fICogMTAwICsgX19HTlVDX01JTk9SX18pCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfR0NDX1dPUktBUk9VTkRfR1VBUkQgMQotI2Vsc2UKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19HQ0NfV09SS0FST1VORF9HVUFSRCAwCi0jZW5kaWYKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT05GSUdfR0NDX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9saW1pdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9saW1pdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzgzYWVjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvbGltaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09ORklHX0xJTUlUU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT05GSUdfTElNSVRTX0hQUF9JTkNMVURFRAotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19NQVhfRk9SV0FSRElOR19BUklUWQotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX01BWF9GT1JXQVJESU5HX0FSSVRZIDMKLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19NQVhfRVhFQ1VURV9BUklUWQotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX01BWF9FWEVDVVRFX0FSSVRZIDUKLSNlbmRpZgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPTkZJR19MSU1JVFNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL292ZXJsb2FkX3Jlc29sdXRpb24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9vdmVybG9hZF9yZXNvbHV0aW9uLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmYzNWM0MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL292ZXJsb2FkX3Jlc29sdXRpb24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vIEFkYXB0ZWQgZnJvbSA8bmRuYm9vc3QvY29uZmlnL2F1dG9fbGluay5ocHA+IGFuZCBmcm9tCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9tb3JlL3NlcGFyYXRlX2NvbXBpbGF0aW9uLmh0bWwsIGJ5IEpvaG4gTWFkZG9jay4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPTkZJR19CUk9LRU5fT1ZFUkxPQURfUkVTT0xVVElPTl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT05GSUdfQlJPS0VOX09WRVJMT0FEX1JFU09MVVRJT05fSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZiAgICAgICAgICAgICAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+IC8vIE5ETkJPT1NUX01TVkMuCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2djYy5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9JT1NUUkVBTVNfQlJPS0VOX09WRVJMT0FEX1JFU09MVVRJT04pCi0jIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgPD0gMHgzMDAzKSB8fCBcCi0gICAgIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4NjAwKSB8fCBcCi0gICAgIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgfHwgXAotICAgICBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX0lPU1RSRUFNU19HQ0MsIDw9IDI5NSkgXAotICAgICAvKiovCi0jICBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0JST0tFTl9PVkVSTE9BRF9SRVNPTFVUSU9OCi0jIGVuZGlmCi0jZW5kaWYKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT05GSUdfQlJPS0VOX09WRVJMT0FEX1JFU09MVVRJT05fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3J0bC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3J0bC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzOWI4MTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9ydGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotLyoKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4oU2VlIGFjY29tcGFueWluZyAKLSAqIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLSAqIAotICogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotICoKLSAqIERlZmluZXMgcHJlcHJvY2Vzc29yIHN5bWJvbHMgZXhwYW5kaW5nIHRvIHRoZSBuYW1lcyBvZiBmdW5jdGlvbnMgaW4gdGhlIAotICogQyBydW50aW1lIGxpYnJhcnkgdXNlZCB0byBhY2Nlc3MgZmlsZSBkZXNjcmlwdG9ycyBhbmQgdG8gdGhlIHR5cGUgdXNlZAotICogdG8gc3RvcmUgZmlsZSBvZmZzZXRzIGZvciBzZWVraW5nLgotICogCi0gKiBGaWxlOiAgICAgICAgbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvcnRsLmhwcAotICogRGF0ZTogICAgICAgIFdlZCBEZWMgMjYgMTE6NTg6MTEgTVNUIDIwMDcKLSAqIAotICogQ29weXJpZ2h0OiAgIDIwMDctMjAwOCBDb2RlUmFnZSwgTExDCi0gKiBBdXRob3I6ICAgICAgSm9uYXRoYW4gVHVya2FuaXMKLSAqIENvbnRhY3Q6ICAgICB0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tCi0gKi8KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPTkZJR19SVExfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09ORklHX1JUTF9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvd2luZG93c19wb3NpeC5ocHA+Ci0KLS8vIEhhbmRsZSBvcGVuLCBjbG9zZSwgcmVhZCwgYW5kIHdyaXRlCi0jaWZkZWYgX19CT1JMQU5EQ19fCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfUlRMKHgpIE5ETkJPT1NUX0pPSU4oX3J0bF8sIHgpCi0jZWxpZiBkZWZpbmVkIE5ETkJPT1NUX0lPU1RSRUFNU19XSU5ET1dTCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfUlRMKHgpIE5ETkJPT1NUX0pPSU4oXywgeCkKLSNlbHNlCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfUlRMKHgpIDo6eCAgLy8gRGlzdGluZ3Vpc2ggZnJvbSBtZW1iZXIgZnVuY3Rpb24gbmFtZWQgeAotI2VuZGlmCi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19GRF9PUEVOICAgTkROQk9PU1RfSU9TVFJFQU1TX1JUTChvcGVuKQotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfRkRfQ0xPU0UgIE5ETkJPT1NUX0lPU1RSRUFNU19SVEwoY2xvc2UpCi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19GRF9SRUFEICAgTkROQk9PU1RfSU9TVFJFQU1TX1JUTChyZWFkKQotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfRkRfV1JJVEUgIE5ETkJPT1NUX0lPU1RSRUFNU19SVEwod3JpdGUpCi0KLS8vIEhhbmRsZSBsc2Vlaywgb2ZmX3QsIGZ0cnVuY2F0ZSwgYW5kIHN0YXQKLSNpZmRlZiBORE5CT09TVF9JT1NUUkVBTVNfV0lORE9XUwotIyBpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpIHx8IGRlZmluZWQoX19NU1ZDUlRfXykgLy8gTVNWQywgTWluR1cKLSMgIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfRkRfU0VFSyAgICBfbHNlZWtpNjQKLSMgIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfRkRfT0ZGU0VUICBfX2ludDY0Ci0jIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCb3JsYW5kLCBNZXRyb3dlcmtzLCAuLi4KLSMgIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfRkRfU0VFSyAgICBsc2VlayAgCi0jICBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZEX09GRlNFVCAgbG9uZwotIyBlbmRpZgotI2Vsc2UgLy8gTm9uLXdpbmRvd3MKLSMgaWYgZGVmaW5lZChfTEFSR0VGSUxFNjRfU09VUkNFKSAmJiAhZGVmaW5lZChfX0FQUExFX18pICYmIFwKLSAgICAgICAgICghZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgfHwgX0ZJTEVfT0ZGU0VUX0JJVFMgIT0gNjQpIHx8IFwKLSAgICAgZGVmaW5lZChfQUlYKSAmJiAhZGVmaW5lZChfTEFSR0VfRklMRVMpIHx8IFwKLSAgICAgZGVmaW5lZChORE5CT09TVF9JT1NUUkVBTVNfSEFTX0xBUkdFX0ZJTEVfRVhURU5TSU9OUykKLSAgICAgLyoqLwotCi0gICAgLyogU3lzdGVtcyB3aXRoIHRyYW5zaXRpb25hbCBleHRlbnNpb25zIGZvciBsYXJnZSBmaWxlIHN1cHBvcnQgKi8KLQotIyAgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19GRF9TRUVLICAgICAgbHNlZWs2NAotIyAgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19GRF9UUlVOQ0FURSAgZnRydW5jYXRlNjQKLSMgIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfRkRfTU1BUCAgICAgIG1tYXA2NAotIyAgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19GRF9TVEFUICAgICAgc3RhdDY0Ci0jICBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZEX0ZTVEFUICAgICBmc3RhdDY0Ci0jICBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZEX09GRlNFVCAgICBvZmY2NF90Ci0jIGVsc2UKLSMgIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfRkRfU0VFSyAgICAgIGxzZWVrCi0jICBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZEX1RSVU5DQVRFICBmdHJ1bmNhdGUKLSMgIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfRkRfTU1BUCAgICAgIG1tYXAKLSMgIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfRkRfU1RBVCAgICAgIHN0YXQKLSMgIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfRkRfRlNUQVQgICAgIGZzdGF0Ci0jICBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZEX09GRlNFVCAgICBvZmZfdAotIyBlbmRpZgotI2VuZGlmCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09ORklHX1JUTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvdW5yZWFjaGFibGVfcmV0dXJuLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvdW5yZWFjaGFibGVfcmV0dXJuLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWRlODU2YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3VucmVhY2hhYmxlX3JldHVybi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMTAgRGFuaWVsIEphbWVzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX1VOUkVBQ0hBQkxFX1JFVFVSTl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9VTlJFQUNIQUJMRV9SRVRVUk5fSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZiAgICAgICAgICAgICAgCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0vLyBJZiBCb29zdC5FeGNlcHRpb24gaGFzIE5ETkJPT1NUX0FUVFJJQlVURV9OT1JFVFVSTgotI2lmIGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19HTlVDX18pCi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19VTlJFQUNIQUJMRV9SRVRVUk4oeCkgXAotICAgIE5ETkJPT1NUX1VOUkVBQ0hBQkxFX1JFVFVSTih4KQotI2Vsc2UKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX1VOUkVBQ0hBQkxFX1JFVFVSTih4KSBcCi0gICAgcmV0dXJuIHg7Ci0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3dpZGVfc3RyZWFtcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3dpZGVfc3RyZWFtcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyZWFkM2IuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy93aWRlX3N0cmVhbXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vIEFkYXB0ZWQgZnJvbSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9tb3JlL3NlcGFyYXRlX2NvbXBpbGF0aW9uLmh0bWwsIGJ5Ci0vLyBKb2huIE1hZGRvY2suCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT05GSUdfV0lERV9TVFJFQU1TX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPTkZJR19XSURFX1NUUkVBTVNfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxjc3RkZGVmPgotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tVGVtcGxhdGVkIHN0cmVhbSBzdXBwb3J0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vIEZyb20gbmRuYm9vc3QvZHluYW1pY19iaXRzZXQuaHBwOyB0aGFua3MgdG8gTWF0dGhpYXMgVHJveWVyIGZvciBjcmF5IHBhdGNoLgotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fU1RSRUFNX1RFTVBMQVRFUwotIyBpZiBkZWZpbmVkKF9fU1RMX0NPTkZJR19IKSAmJiBcCi0gICAgIWRlZmluZWQgKF9fU1RMX1VTRV9ORVdfSU9TVFJFQU1TKSAmJiAhZGVmaW5lZChfX2NyYXl4MSkgXAotICAgIC8qKi8KLSMgIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfTk9fU1RSRUFNX1RFTVBMQVRFUwotIyBlbmRpZgotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1XaWRlIHN0cmVhbSBzdXBwb3J0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fV0lERV9TVFJFQU1TCi0jIGlmIGRlZmluZWQoTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMpIHx8IFwKLSAgICAgZGVmaW5lZCAoTkROQk9PU1RfTk9fU1REX1dTVFJFQU1CVUYpICYmIFwKLSAgICAgKCAhZGVmaW5lZChfX01TTF9DUFBfXykgfHwgZGVmaW5lZChfTVNMX05PX1dDSEFSVF9DUFBfU1VQUE9SVCkgKSBcCi0gICAgIC8qKi8KLSMgIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfTk9fV0lERV9TVFJFQU1TCi0jIGVuZGlmCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fV0lERV9TVFJFQU1TICAgCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tTG9jYWxlIHN1cHBvcnQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX0xPQ0FMRQotIyBpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9MT0NBTEUpIHx8IFwKLSAgICAgZGVmaW5lZChfX0NZR1dJTl9fKSAmJiBcCi0gICAgICggIWRlZmluZWQoX19NU0xfQ1BQX18pIHx8IGRlZmluZWQoX01TTF9OT19XQ0hBUlRfQ1BQX1NVUFBPUlQpICkgXAotICAgICAvKiovCi0jICBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX05PX0xPQ0FMRQotIyBlbmRpZgotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX0xPQ0FMRQotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPTkZJR19XSURFX1NUUkVBTVNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3dpbmRvd3NfcG9zaXguaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy93aW5kb3dzX3Bvc2l4LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWZkOWM0NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3dpbmRvd3NfcG9zaXguaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDQtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gKEMpIENvcHlyaWdodCAyMDAyLCAyMDAzIEJlbWFuIERhd2VzICAgQm9vc3QuRmlsZXN5c3RlbQotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT05GSUdfV0lORE9XU19QT1NJWF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT05GSUdfV0lORE9XU19QT1NJWF9IUFBfSU5DTFVERUQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1Gcm9tIG5kbmJvb3N0L2xpYnMvZmlsZXN5c3RlbS9zcmMvcGF0aF9wb3NpeF93aW5kb3dzLmNwcC0tLS0tLy8KLQotLy8gTkROQk9PU1RfSU9TVFJFQU1TX1BPU0lYIG9yIE5ETkJPT1NUX0lPU1RSRUFNU19XSU5ET1dTIHNwZWNpZnkgd2hpY2ggQVBJIHRvIHVzZS4KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfSU9TVFJFQU1TX1dJTkRPV1MgKSAmJiAhZGVmaW5lZCggTkROQk9PU1RfSU9TVFJFQU1TX1BPU0lYICkKLSMgaWYgKGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fV0lOMzJfXykgfHwgZGVmaW5lZChXSU4zMikpICYmIFwKLSAgICAgIWRlZmluZWQoX19DWUdXSU5fXykgXAotICAgICAvKiovCi0jICBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX1dJTkRPV1MKLSMgZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19QT1NJWAotIyBlbmRpZgotI2VuZGlmCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09ORklHX1dJTkRPV1NfUE9TSVhfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3psaWIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy96bGliLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTNkZjUwYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3psaWIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vIEFkYXB0ZWQgZnJvbSA8bmRuYm9vc3QvY29uZmlnL2F1dG9fbGluay5ocHA+IGFuZCBmcm9tCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9tb3JlL3NlcGFyYXRlX2NvbXBpbGF0aW9uLmh0bWwsIGJ5IEpvaG4gTWFkZG9jay4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPTkZJR19aTElCX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPTkZJR19aTElCX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+IC8vIE5ETkJPT1NUX1NUUklOR0laRS4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfWkxJQl9CSU5BUlkpCi0jIGlmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgfHwgXAotICAgICBkZWZpbmVkKF9fQk9STEFORENfXykgfHwgXAotICAgICAoZGVmaW5lZChfX01XRVJLU19fKSAmJiBkZWZpbmVkKF9XSU4zMikgJiYgKF9fTVdFUktTX18gPj0gMHgzMDAwKSkgfHwgXAotICAgICAoZGVmaW5lZChfX0lDTCkgJiYgZGVmaW5lZChfTVNDX0VYVEVOU0lPTlMpICYmIChfTVNDX1ZFUiA+PSAxMjAwKSkgXAotICAgICAvKiovCi0KLS8vIFNwZWNpZnkgdGhlIG5hbWUgb2YgdGhlIC5saWIgZmlsZS4KLSMgIHByYWdtYSBjb21tZW50KGxpYiwgTkROQk9PU1RfU1RSSU5HSVpFKE5ETkJPT1NUX1pMSUJfQklOQVJZKSkKLSMgZW5kaWYKLSNlbHNlIAotIyBpZiAhZGVmaW5lZChORE5CT09TVF9JT1NUUkVBTVNfU09VUkNFKSAmJiBcCi0gICAgICFkZWZpbmVkKE5ETkJPT1NUX0FMTF9OT19MSUIpICYmIFwKLSAgICAgIWRlZmluZWQoTkROQk9PU1RfSU9TVFJFQU1TX05PX0xJQikgXAotICAgICAvKiovCi0KLS8vIFNldCB0aGUgbmFtZSBvZiBvdXIgbGlicmFyeSwgdGhpcyB3aWxsIGdldCB1bmRlZidlZCBieSBhdXRvX2xpbmsuaHBwCi0vLyBvbmNlIGl0J3MgZG9uZSB3aXRoIGl0LgotIyAgZGVmaW5lIE5ETkJPT1NUX0xJQl9OQU1FIG5kbmJvb3N0X3psaWIKLQotLy8gSWYgd2UncmUgaW1wb3J0aW5nIGNvZGUgZnJvbSBhIGRsbCwgdGhlbiB0ZWxsIGF1dG9fbGluay5ocHAgYWJvdXQgaXQuCi0jICBpZiBkZWZpbmVkKE5ETkJPT1NUX0FMTF9EWU5fTElOSykgfHwgZGVmaW5lZChORE5CT09TVF9JT1NUUkVBTVNfRFlOX0xJTkspCi0jICAgZGVmaW5lIE5ETkJPT1NUX0RZTl9MSU5LCi0jICBlbmRpZgotCi0vLyBBbmQgaW5jbHVkZSB0aGUgaGVhZGVyIHRoYXQgZG9lcyB0aGUgd29yay4KLSMgIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9hdXRvX2xpbmsuaHBwPgotIyBlbmRpZgotI2VuZGlmCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09ORklHX1pMSUJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY291bnRlZF9hcnJheS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY291bnRlZF9hcnJheS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzMDU4OTguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvdW50ZWRfYXJyYXkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDUtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT1VOVEVEX0FSUkFZX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPVU5URURfQVJSQVlfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxhbGdvcml0aG0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1pbi4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2F0ZWdvcmllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jaGFyX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3MuaHBwPiAgICAgICAgICAvLyBzdHJlYW1zaXplLgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoPgotY2xhc3MgY291bnRlZF9hcnJheV9zb3VyY2UgewotcHVibGljOgotICAgIHR5cGVkZWYgQ2ggICAgICAgICAgY2hhcl90eXBlOwotICAgIHR5cGVkZWYgc291cmNlX3RhZyAgY2F0ZWdvcnk7Ci0gICAgY291bnRlZF9hcnJheV9zb3VyY2UoY29uc3QgQ2gqIGJ1Ziwgc3RkOjpzdHJlYW1zaXplIHNpemUpIAotICAgICAgICA6IGJ1Zl8oYnVmKSwgcHRyXygwKSwgZW5kXyhzaXplKQotICAgICAgICB7IH0KLSAgICBzdGQ6OnN0cmVhbXNpemUgcmVhZChDaCogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgewotICAgICAgICBzdGQ6OnN0cmVhbXNpemUgcmVzdWx0ID0gKHN0ZDo6bWluKShuLCBlbmRfIC0gcHRyXyk7Ci0gICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19DSEFSX1RSQUlUUyhjaGFyX3R5cGUpOjpjb3B5Ci0gICAgICAgICAgICAocywgYnVmXyArIHB0cl8sIHJlc3VsdCk7Ci0gICAgICAgIHB0cl8gKz0gcmVzdWx0OwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgICBzdGQ6OnN0cmVhbXNpemUgY291bnQoKSBjb25zdCB7IHJldHVybiBwdHJfOyB9Ci1wcml2YXRlOgotICAgIGNvbnN0IENoKiAgICAgICAgYnVmXzsKLSAgICBzdGQ6OnN0cmVhbXNpemUgIHB0cl8sIGVuZF87Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaD4KLXN0cnVjdCBjb3VudGVkX2FycmF5X3NpbmsgewotcHVibGljOgotICAgIHR5cGVkZWYgQ2ggICAgICAgIGNoYXJfdHlwZTsKLSAgICB0eXBlZGVmIHNpbmtfdGFnICBjYXRlZ29yeTsKLSAgICBjb3VudGVkX2FycmF5X3NpbmsoQ2gqIGJ1Ziwgc3RkOjpzdHJlYW1zaXplIHNpemUpIAotICAgICAgICA6IGJ1Zl8oYnVmKSwgcHRyXygwKSwgZW5kXyhzaXplKQotICAgICAgICB7IH0KLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIHdyaXRlKGNvbnN0IENoKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSByZXN1bHQgPSAoc3RkOjptaW4pKG4sIGVuZF8gLSBwdHJfKTsKLSAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0NIQVJfVFJBSVRTKGNoYXJfdHlwZSk6OmNvcHkKLSAgICAgICAgICAgIChidWZfICsgcHRyXywgcywgcmVzdWx0KTsKLSAgICAgICAgcHRyXyArPSByZXN1bHQ7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotICAgIHN0ZDo6c3RyZWFtc2l6ZSBjb3VudCgpIGNvbnN0IHsgcmV0dXJuIHB0cl87IH0KLXByaXZhdGU6Ci0gICAgQ2gqICAgICAgICAgICAgICBidWZfOwotICAgIHN0ZDo6c3RyZWFtc2l6ZSAgcHRyXywgZW5kXzsKLX07Ci0KLX0gfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09VTlRFRF9BUlJBWV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jdXJyZW50X2RpcmVjdG9yeS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY3VycmVudF9kaXJlY3RvcnkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZGE2OTUwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jdXJyZW50X2RpcmVjdG9yeS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0vKgotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLihTZWUgYWNjb21wYW55aW5nIAotICogZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotICogCi0gKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSAqIEZpbGU6ICAgICAgICBuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2V4ZWN1dGUuaHBwCi0gKiBEYXRlOiAgICAgICAgVGh1IERlYyAwNiAxMzoyMTo1NCBNU1QgMjAwNwotICogQ29weXJpZ2h0OiAgIDIwMDctMjAwOCBDb2RlUmFnZSwgTExDCi0gKiBBdXRob3I6ICAgICAgSm9uYXRoYW4gVHVya2FuaXMKLSAqIENvbnRhY3Q6ICAgICB0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tCi0gKgotICogRGVmaW5lcyB0aGUgZnVuY3Rpb24gbmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpjdXJyZW50X2RpcmVjdG9yeSwgdXNlZCBieSAKLSAqIG5kbmJvb3N0Ojppb3N0cmVhbXM6OmRldGFpbDo6YWJzb2x1dGVfcGF0aC4KLSAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ1VSUkVOVF9ESVJFQ1RPUllfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ1VSUkVOVF9ESVJFQ1RPUllfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgLy8gbWFrZSBzdXJlIHNpemVfdCBpcyBpbiBzdGQuCi0jaW5jbHVkZSA8Y3N0ZGRlZj4gICAgICAgICAgIC8vIHNpemVfdAotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2J1ZmZlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvd2luZG93c19wb3NpeC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zeXN0ZW1fZmFpbHVyZS5ocHA+Ci0jaWZkZWYgTkROQk9PU1RfSU9TVFJFQU1TX1dJTkRPV1MKLSMgZGVmaW5lIFdJTjMyX0xFQU5fQU5EX01FQU4gIC8vIEV4Y2x1ZGUgcmFyZWx5LXVzZWQgc3R1ZmYgZnJvbSBXaW5kb3dzIGhlYWRlcnMKLSMgaW5jbHVkZSA8d2luZG93cy5oPgotI2Vsc2UKLSMgaW5jbHVkZSA8dW5pc3RkLmg+ICAgICAgICAvLyBzeXNjb25mLgotI2VuZGlmCi0KLS8vIE11c3QgY29tZSBsYXN0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2Rpc2FibGVfd2FybmluZ3MuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vIFJldHVybnMgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkKLWlubGluZSBzdGQ6OnN0cmluZyBjdXJyZW50X2RpcmVjdG9yeSgpCi17Ci0jaWZkZWYgTkROQk9PU1RfSU9TVFJFQU1TX1dJTkRPV1MKLSAgICBEV09SRCAgICAgICAgICAgICAgIGxlbmd0aDsKLSAgICBiYXNpY19idWZmZXI8Y2hhcj4gIGJ1ZihNQVhfUEFUSCk7Ci0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgbGVuZ3RoID0gOjpHZXRDdXJyZW50RGlyZWN0b3J5QShidWYuc2l6ZSgpLCBidWYuZGF0YSgpKTsKLSAgICAgICAgaWYgKCFsZW5ndGgpCi0gICAgICAgICAgICB0aHJvd19zeXN0ZW1fZmFpbHVyZSgiZmFpbGVkIGRldGVybWluaW5nIGN1cnJlbnQgZGlyZWN0b3J5Iik7Ci0gICAgICAgIGlmIChsZW5ndGggPCBzdGF0aWNfY2FzdDxEV09SRD4oYnVmLnNpemUoKSkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgYnVmLnJlc2l6ZShidWYuc2l6ZSgpICogMik7Ci0gICAgfQotICAgIHJldHVybiBzdGQ6OnN0cmluZyhidWYuZGF0YSgpLCBsZW5ndGgpOwotI2Vsc2UgLy8gI2lmZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19XSU5ET1dTCi0gICAgYmFzaWNfYnVmZmVyPGNoYXI+IGJ1ZihwYXRoY29uZigiLiIsIF9QQ19QQVRIX01BWCkpOwotICAgIGlmICghZ2V0Y3dkKGJ1Zi5kYXRhKCksIHN0YXRpY19jYXN0PHNpemVfdD4oYnVmLnNpemUoKSkpKQotICAgICAgICB0aHJvd19zeXN0ZW1fZmFpbHVyZSgiZmFpbGVkIGRldGVybWluaW5nIGN1cnJlbnQgZGlyZWN0b3J5Iik7Ci0gICAgcmV0dXJuIHN0ZDo6c3RyaW5nKGJ1Zi5kYXRhKCkpOwotI2VuZGlmIC8vICNpZmRlZiBORE5CT09TVF9JT1NUUkVBTVNfV0lORE9XUwotfQotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NVUlJFTlRfRElSRUNUT1JZX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2RlZmF1bHRfYXJnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9kZWZhdWx0X2FyZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4NWFhZTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2RlZmF1bHRfYXJnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDA1LTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfREVGQVVMVF9BUkdfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfREVGQVVMVF9BUkdfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZiAgICAgICAgICAgIAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lkZW50aXR5LmhwcD4KLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERUZBVUxUX0FSRyhhcmcpIG1wbDo6aWRlbnRpdHk8IGFyZyA+Ojp0eXBlCi0jZWxzZQotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFRkFVTFRfQVJHKGFyZykgYXJnCi0jZW5kaWYKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9ERUZBVUxUX0FSR19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9kaXNwYXRjaC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZGlzcGF0Y2guaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTdlOTI2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9kaXNwYXRjaC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0RJU1BBVENIX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0RJU1BBVENIX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgIAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gICAgICAgICAgICAgICAgICAgLy8gTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRS4gCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zZWxlY3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy90cmFpdHMuaHBwPiAgICAgICAgIC8vIGNhdGVnb3J5X29mLiAKLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdm9pZC5ocHA+ICAgICAgICAgIAotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4gICAgICAgICAKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7bmFtZXNwYWNlIGRldGFpbCB7Ci0gICAgCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVGFnMSwgdHlwZW5hbWUgVGFnMiwKLSAgICAgICAgICB0eXBlbmFtZSBUYWczID0gbXBsOjp2b2lkXywgdHlwZW5hbWUgVGFnNCA9IG1wbDo6dm9pZF8sCi0gICAgICAgICAgdHlwZW5hbWUgVGFnNSA9IG1wbDo6dm9pZF8sIHR5cGVuYW1lIFRhZzYgPSBtcGw6OnZvaWRfLAotICAgICAgICAgIHR5cGVuYW1lIENhdGVnb3J5ID0gCi0gICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgY2F0ZWdvcnlfb2Y8VD46OnR5cGUgPgotc3RydWN0IGRpc3BhdGNoIAotICAgIDogaW9zdHJlYW1zOjpzZWxlY3Q8ICAvLyBEaXNhbWJpZ3VhdGlvbiBmb3IgVHJ1NjQuCi0gICAgICAgICAgaXNfY29udmVydGlibGU8Q2F0ZWdvcnksIFRhZzE+LCBUYWcxLAotICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPENhdGVnb3J5LCBUYWcyPiwgVGFnMiwKLSAgICAgICAgICBpc19jb252ZXJ0aWJsZTxDYXRlZ29yeSwgVGFnMz4sIFRhZzMsCi0gICAgICAgICAgaXNfY29udmVydGlibGU8Q2F0ZWdvcnksIFRhZzQ+LCBUYWc0LAotICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPENhdGVnb3J5LCBUYWc1PiwgVGFnNSwKLSAgICAgICAgICBpc19jb252ZXJ0aWJsZTxDYXRlZ29yeSwgVGFnNj4sIFRhZzYKLSAgICAgID4KLSAgICB7IH07Ci0KLX0gfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGRldGFpbCwgaW9zdHJlYW1zLCBib29zdC4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9ESVNQQVRDSF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9kb3VibGVfb2JqZWN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9kb3VibGVfb2JqZWN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGQyM2Y3YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZG91YmxlX29iamVjdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDQtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vIENvbnRhaW5zIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBjbGFzcyB0ZW1wbGF0ZSAKLS8vIG5kbmJvb3N0Ojppb3N0cmVhbXM6OmRldGFpbDo6ZG91YmxlX29iamVjdCwgd2hpY2ggaXMgc2ltaWxhciB0byBjb21wcmVzc2VkIHBhaXIKLS8vIGV4Y2VwdCB0aGF0IGJvdGggbWVtYmVycyBvZiB0aGUgcGFpciBoYXZlIHRoZSBzYW1lIHR5cGUsIGFuZCAKLS8vIGNvbXByZXNzaW9uIG9jY3VycyBvbmx5IGlmIHJlcXVlc3RlZCB1c2luZyBhIGJvb2xlYW4gdGVtcGxhdGUKLS8vIHBhcmFtZXRlci4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0RPVUJMRV9PQkpFQ1RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfRE9VQkxFX09CSkVDVF9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLQotI2luY2x1ZGUgPGFsZ29yaXRobT4gICAgICAgICAgICAgIC8vIHN3YXAuCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCA+IDB4MzAwMykKLSMgaW5jbHVkZSA8bXNsX3V0aWxpdHk+Ci0jZWxzZQotIyBpbmNsdWRlIDxuZG5ib29zdC9jYWxsX3RyYWl0cy5ocHA+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY2xhc3Mgc2luZ2xlX29iamVjdF9ob2xkZXIgewotcHVibGljOgotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgPiAweDMwMDMpCi0gICAgdHlwZWRlZiBNZXRyb3dlcmtzOjpjYWxsX3RyYWl0czxUPiAgICAgICAgICAgICB0cmFpdHNfdHlwZTsKLSNlbHNlCi0gICAgdHlwZWRlZiBuZG5ib29zdDo6Y2FsbF90cmFpdHM8VD4gICAgICAgICAgICAgICAgICB0cmFpdHNfdHlwZTsKLSNlbmRpZgotICAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzX3R5cGU6OnBhcmFtX3R5cGUgICAgICAgcGFyYW1fdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0c190eXBlOjpyZWZlcmVuY2UgICAgICAgIHJlZmVyZW5jZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0c190eXBlOjpjb25zdF9yZWZlcmVuY2UgIGNvbnN0X3JlZmVyZW5jZTsKLSAgICBzaW5nbGVfb2JqZWN0X2hvbGRlcigpIHsgfQotICAgIHNpbmdsZV9vYmplY3RfaG9sZGVyKHBhcmFtX3R5cGUgdCkgOiBmaXJzdF8odCkgeyB9Ci0gICAgcmVmZXJlbmNlIGZpcnN0KCkgeyByZXR1cm4gZmlyc3RfOyB9Ci0gICAgY29uc3RfcmVmZXJlbmNlIGZpcnN0KCkgY29uc3QgeyByZXR1cm4gZmlyc3RfOyB9Ci0gICAgcmVmZXJlbmNlIHNlY29uZCgpIHsgcmV0dXJuIGZpcnN0XzsgfQotICAgIGNvbnN0X3JlZmVyZW5jZSBzZWNvbmQoKSBjb25zdCB7IHJldHVybiBmaXJzdF87IH0KLSAgICB2b2lkIHN3YXAoc2luZ2xlX29iamVjdF9ob2xkZXImIG8pCi0gICAgeyBzdGQ6OnN3YXAoZmlyc3RfLCBvLmZpcnN0Xyk7IH0KLXByaXZhdGU6Ci0gICAgVCBmaXJzdF87Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGRvdWJsZV9vYmplY3RfaG9sZGVyIHsKLXB1YmxpYzoKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sID4gMHgzMDAzKQotICAgIHR5cGVkZWYgTWV0cm93ZXJrczo6Y2FsbF90cmFpdHM8VD4gICAgICAgICAgICAgdHJhaXRzX3R5cGU7Ci0jZWxzZQotICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmNhbGxfdHJhaXRzPFQ+ICAgICAgICAgICAgICAgICAgdHJhaXRzX3R5cGU7Ci0jZW5kaWYKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0c190eXBlOjpwYXJhbV90eXBlICAgICAgIHBhcmFtX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHNfdHlwZTo6cmVmZXJlbmNlICAgICAgICByZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHNfdHlwZTo6Y29uc3RfcmVmZXJlbmNlICBjb25zdF9yZWZlcmVuY2U7Ci0gICAgZG91YmxlX29iamVjdF9ob2xkZXIoKSB7IH0KLSAgICBkb3VibGVfb2JqZWN0X2hvbGRlcihwYXJhbV90eXBlIHQxLCBwYXJhbV90eXBlIHQyKQotICAgICAgICA6IGZpcnN0Xyh0MSksIHNlY29uZF8odDIpIHsgfQotICAgIHJlZmVyZW5jZSBmaXJzdCgpIHsgcmV0dXJuIGZpcnN0XzsgfQotICAgIGNvbnN0X3JlZmVyZW5jZSBmaXJzdCgpIGNvbnN0IHsgcmV0dXJuIGZpcnN0XzsgfQotICAgIHJlZmVyZW5jZSBzZWNvbmQoKSB7IHJldHVybiBzZWNvbmRfOyB9Ci0gICAgY29uc3RfcmVmZXJlbmNlIHNlY29uZCgpIGNvbnN0IHsgcmV0dXJuIHNlY29uZF87IH0KLSAgICB2b2lkIHN3YXAoZG91YmxlX29iamVjdF9ob2xkZXImIGQpCi0gICAgeyAKLSAgICAgICAgc3RkOjpzd2FwKGZpcnN0XywgZC5maXJzdF8pOyAKLSAgICAgICAgc3RkOjpzd2FwKHNlY29uZF8sIGQuc2Vjb25kXyk7IAotICAgIH0KLXByaXZhdGU6Ci0gICAgVCBmaXJzdF8sIHNlY29uZF87Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBJc0RvdWJsZT4KLWNsYXNzIGRvdWJsZV9vYmplY3QgCi0gICAgOiBwdWJsaWMgbXBsOjppZl88Ci0gICAgICAgICAgICAgICAgIElzRG91YmxlLCAKLSAgICAgICAgICAgICAgICAgZG91YmxlX29iamVjdF9ob2xkZXI8VD4sIAotICAgICAgICAgICAgICAgICBzaW5nbGVfb2JqZWN0X2hvbGRlcjxUPgotICAgICAgICAgICAgID46OnR5cGUKLXsKLXByaXZhdGU6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICAgICAgICAgIG1wbDo6aWZfPAotICAgICAgICAgICAgICAgIElzRG91YmxlLCAKLSAgICAgICAgICAgICAgICBkb3VibGVfb2JqZWN0X2hvbGRlcjxUPiwgCi0gICAgICAgICAgICAgICAgc2luZ2xlX29iamVjdF9ob2xkZXI8VD4KLSAgICAgICAgICAgID46OnR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VfdHlwZTsKLXB1YmxpYzoKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sID4gMHgzMDAzKQotICAgIHR5cGVkZWYgTWV0cm93ZXJrczo6Y2FsbF90cmFpdHM8VD4gICAgICAgICAgICAgdHJhaXRzX3R5cGU7Ci0jZWxzZQotICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmNhbGxfdHJhaXRzPFQ+ICAgICAgICAgICAgICAgICAgdHJhaXRzX3R5cGU7Ci0jZW5kaWYKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0c190eXBlOjpwYXJhbV90eXBlICAgICAgIHBhcmFtX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHNfdHlwZTo6cmVmZXJlbmNlICAgICAgICByZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHNfdHlwZTo6Y29uc3RfcmVmZXJlbmNlICBjb25zdF9yZWZlcmVuY2U7Ci0gICAgZG91YmxlX29iamVjdCgpIDogYmFzZV90eXBlKCkge30KLSAgICBkb3VibGVfb2JqZWN0KHBhcmFtX3R5cGUgdDEsIHBhcmFtX3R5cGUgdDIpCi0gICAgICAgIDogYmFzZV90eXBlKHQxLCB0MikgeyB9Ci0gICAgYm9vbCBpc19kb3VibGUoKSBjb25zdCB7IHJldHVybiBJc0RvdWJsZTo6dmFsdWU7IH0KLX07Ci0KLX0gfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGRldGFpbCwgaW9zdHJlYW1zLCBib29zdC4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9ET1VCTEVfT0JKRUNUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2VuYWJsZV9pZl9zdHJlYW0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2VuYWJsZV9pZl9zdHJlYW0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOTZkZmUwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9lbmFibGVfaWZfc3RyZWFtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfRU5BQkxFX0lGX1NUUkVBTV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9FTkFCTEVfSUZfU1RSRUFNX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgIAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gICAgICAgICAgICAgICAgLy8gTkROQk9PU1RfTk9fU0ZJTkFFLgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZW5hYmxlX2lmLmhwcD4gICAgICAgICAgICAgICAgICAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvdHJhaXRzX2Z3ZC5ocHA+ICAvLyBpc19zdGRfaW8uCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19TRklOQUUpICYmIFwKLSAgICAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU5MikpCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfRU5BQkxFX0lGX1NUUkVBTShUKSBcCi0gICAgLCB0eXBlbmFtZSBuZG5ib29zdDo6ZW5hYmxlX2lmPCBuZG5ib29zdDo6aW9zdHJlYW1zOjppc19zdGRfaW88VD4gPjo6dHlwZSogPSAwIFwKLSAgICAvKiovCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfRElTQUJMRV9JRl9TVFJFQU0oVCkgXAotICAgICwgdHlwZW5hbWUgbmRuYm9vc3Q6OmRpc2FibGVfaWY8IG5kbmJvb3N0Ojppb3N0cmVhbXM6OmlzX3N0ZF9pbzxUPiA+Ojp0eXBlKiA9IDAgXAotICAgIC8qKi8KLSNlbHNlIAotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0VOQUJMRV9JRl9TVFJFQU0oVCkKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ESVNBQkxFX0lGX1NUUkVBTShUKQotI2VuZGlmCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfRU5BQkxFX0lGX1NUUkVBTV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9lcnJvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZXJyb3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNDg5MTkwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9lcnJvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0VSUk9SX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0VSUk9SX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvcy5ocHA+ICAvLyBmYWlsdXJlLgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLWlubGluZSBORE5CT09TVF9JT1NUUkVBTVNfRkFJTFVSRSBjYW50X3JlYWQoKSAKLXsgcmV0dXJuIE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFKCJubyByZWFkIGFjY2VzcyIpOyB9Ci0KLWlubGluZSBORE5CT09TVF9JT1NUUkVBTVNfRkFJTFVSRSBjYW50X3dyaXRlKCkgCi17IHJldHVybiBORE5CT09TVF9JT1NUUkVBTVNfRkFJTFVSRSgibm8gd3JpdGUgYWNjZXNzIik7IH0KLQotaW5saW5lIE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFIGNhbnRfc2VlaygpIAoteyByZXR1cm4gTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUoIm5vIHJhbmRvbSBhY2Nlc3MiKTsgfQotCi1pbmxpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUgYmFkX3JlYWQoKSAKLXsgcmV0dXJuIE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFKCJiYWQgcmVhZCIpOyB9Ci0KLWlubGluZSBORE5CT09TVF9JT1NUUkVBTVNfRkFJTFVSRSBiYWRfcHV0YmFjaygpIAoteyByZXR1cm4gTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUoInB1dGJhY2sgYnVmZmVyIGZ1bGwiKTsgfQotCi1pbmxpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUgYmFkX3dyaXRlKCkgCi17IHJldHVybiBORE5CT09TVF9JT1NUUkVBTVNfRkFJTFVSRSgiYmFkIHdyaXRlIik7IH0KLQotaW5saW5lIE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFIHdyaXRlX2FyZWFfZXhoYXVzdGVkKCkgCi17IHJldHVybiBORE5CT09TVF9JT1NUUkVBTVNfRkFJTFVSRSgid3JpdGUgYXJlYSBleGhhdXN0ZWQiKTsgfQotCi1pbmxpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUgYmFkX3NlZWsoKSAKLXsgcmV0dXJuIE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFKCJiYWQgc2VlayIpOyB9Ci0KLX0gfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGRldGFpbCwgaW9zdHJlYW1zLCBib29zdC4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9FUlJPUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9leGVjdXRlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9leGVjdXRlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzMyNDBjOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZXhlY3V0ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzUgKzAsMCBAQAotLyoKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4oU2VlIGFjY29tcGFueWluZyAKLSAqIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLSAqIAotICogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0gKiBGaWxlOiAgICAgICAgbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9leGVjdXRlLmhwcAotICogRGF0ZTogICAgICAgIFRodSBEZWMgMDYgMTM6MjE6NTQgTVNUIDIwMDcKLSAqIENvcHlyaWdodDogICAyMDA3LTIwMDggQ29kZVJhZ2UsIExMQwotICogQXV0aG9yOiAgICAgIEpvbmF0aGFuIFR1cmthbmlzCi0gKiBDb250YWN0OiAgICAgdHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbQotCi0gKiBEZWZpbmVzIHRoZSBvdmVybG9hZGVkIGZ1bmN0aW9uIHRlbXBsYXRlIAotICogbmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpleGVjdXRlX2FsbCgpIGFuZCB0aGUgZnVuY3Rpb24gdGVtcGxhdGUgCi0gKiBuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OmV4ZWN1dGVfZm9yZWFjaCgpLgotICoKLSAqIGV4ZWN1dGVfYWxsKCkgaW52b2tlcyBhIHByaW1hcnkgb3BlcmF0aW9uIGFuZCBwZXJmb3JtcyBhIHNlcXVlbmNlIG9mIGNsZWFudXAgCi0gKiBvcGVyYXRpb25zLCByZXR1cm5pbmcgdGhlIHJlc3VsdCBvZiB0aGUgcHJpbWFyeSBvcGVyYXRpb24gaWYgbm8gZXhjZXB0aW9ucwotICogYXJlIHRocm93bi4gSWYgb25lIG9mIHRoZSBvcGVyYXRpb25zIHRocm93cyBhbiBleGNlcHRpb24sIHBlcmZvcm1zIHRoZQotICogcmVtYWluaW5nIG9wZXJhdGlvbnMgYW5kIHJldGhyb3dzIHRoZSBpbml0aWFsIGV4Y2VwdGlvbi4KLSAqCi0gKiBleGVjdXRlX2ZvcmVhY2goKSBpcyBhIHZhcmlhbnQgb2Ygc3RkOjpmb3JlYWNoIHdoaWNoIGludm9rZXMgYSBmdW5jdGlvbiAKLSAqIG9iamVjdCBmb3IgZWFjaCBpdGVtIGluIGEgc2VxdWVuY2UsIGNhdGNoaW5nIGFsbCBleGVjcHRpb25zIGFuZCByZXRocm93aW5nCi0gKiB0aGUgZmlyc3QgY2F1Z2h0IGV4Y2VwdGlvbiBhZnRlciB0aGUgZnVuY3Rpb24gb2JqZWN0IGhhcyBiZWVuIGludm9rZWQgb24gZWFjaAotICogaXRlbS4KLSAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfRVhFQ1VURV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9FWEVDVVRFX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2xpbWl0cy5ocHA+ICAgLy8gTUFYX0VYRUNVVEVfQVJJVFkKLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9kZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vbG9jYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX2JpbmFyeV9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9wdW5jdHVhdGlvbi9jb21tYV9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9yZXN1bHRfb2YuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vIEhlbHBlciBmb3IgY2xhc3MgdGVtcGxhdGUgZXhlY3V0ZV90cmFpdHMuCi10ZW1wbGF0ZTx0eXBlbmFtZSBSZXN1bHQ+Ci1zdHJ1Y3QgZXhlY3V0ZV90cmFpdHNfaW1wbCB7Ci0gICAgdHlwZWRlZiBSZXN1bHQgcmVzdWx0X3R5cGU7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgc3RhdGljIFJlc3VsdCBleGVjdXRlKE9wIG9wKSB7IHJldHVybiBvcCgpOyB9Ci19OwotCi0vLyBTcGVjaWFsaXphdGlvbiBmb3Igdm9pZCByZXR1cm4uIEZvciBzaW1wbGljaXR5LCBleGVjdXRlKCkgcmV0dXJucyBpbnQgCi0vLyBmb3Igb3BlcmF0aW9ucyByZXR1cm5pbmcgdm9pZC4gVGhpcyBjb3VsZCBiZSBhdm9pZGVkIHdpdGggYWRkaXRpb25hbCB3b3JrLgotdGVtcGxhdGU8Pgotc3RydWN0IGV4ZWN1dGVfdHJhaXRzX2ltcGw8dm9pZD4gewotICAgIHR5cGVkZWYgaW50IHJlc3VsdF90eXBlOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgIHN0YXRpYyBpbnQgZXhlY3V0ZShPcCBvcCkgeyBvcCgpOyByZXR1cm4gMDsgfQotfTsKLQotLy8gRGVkdWNlcyB0aGUgcmVzdWx0IHR5cGUgb2YgT3AgYW5kIGFsbG93cyB1bmlmb3JtIHRyZWF0bWVudCBvZiBvcGVyYXRpb25zIAotLy8gcmV0dXJuaW5nIHZvaWQgYW5kIG5vbi12b2lkLgotdGVtcGxhdGU8IHR5cGVuYW1lIE9wLCAKLSAgICAgICAgICB0eXBlbmFtZSBSZXN1bHQgPSAvLyBWQzYuNSB3b3JrYXJvdW5kLgotICAgICAgICAgICAgICAjaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fUkVTVUxUX09GKSAmJiBcCi0gICAgICAgICAgICAgICAgICAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU5MikpCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6cmVzdWx0X29mPE9wKCk+Ojp0eXBlCi0gICAgICAgICAgICAgICNlbHNlCi0gICAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIE9wOjpyZXN1bHRfdHlwZQotICAgICAgICAgICAgICAjZW5kaWYKLSAgICAgICAgICA+Ci1zdHJ1Y3QgZXhlY3V0ZV90cmFpdHMgCi0gICAgOiBleGVjdXRlX3RyYWl0c19pbXBsPFJlc3VsdD4KLSAgICB7IH07Ci0KLS8vIEltcGxlbWVudGF0aW9uIHdpdGggbm8gY2xlYW51cCBvcGVyYXRpb25zLgotdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci10eXBlbmFtZSBleGVjdXRlX3RyYWl0czxPcD46OnJlc3VsdF90eXBlIAotZXhlY3V0ZV9hbGwoT3Agb3ApIAoteyAKLSAgICByZXR1cm4gZXhlY3V0ZV90cmFpdHM8T3A+OjpleGVjdXRlKG9wKTsKLX0KLQotLy8gSW1wbGVtZW50YXRpb24gd2l0aCBvbmUgb3IgbW9yZSBjbGVhbnVwIG9wZXJhdGlvbnMKLSNkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8obikgXAotICAgdGVtcGxhdGU8dHlwZW5hbWUgT3AsIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKG4sIHR5cGVuYW1lIEMpPiBcCi0gICB0eXBlbmFtZSBleGVjdXRlX3RyYWl0czxPcD46OnJlc3VsdF90eXBlIFwKLSAgIGV4ZWN1dGVfYWxsKE9wIG9wLCBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVMobiwgQywgYykpIFwKLSAgIHsgXAotICAgICAgIHR5cGVuYW1lIGV4ZWN1dGVfdHJhaXRzPE9wPjo6cmVzdWx0X3R5cGUgcjsgXAotICAgICAgIHRyeSB7IFwKLSAgICAgICAgICAgciA9IG5kbmJvb3N0Ojppb3N0cmVhbXM6OmRldGFpbDo6ZXhlY3V0ZV9hbGwoIFwKLSAgICAgICAgICAgICAgICAgICBvcCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9ERUMobikpIFwKLSAgICAgICAgICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9ERUMobiksIGMpIFwKLSAgICAgICAgICAgICAgICk7IFwKLSAgICAgICB9IGNhdGNoICguLi4pIHsgXAotICAgICAgICAgICB0cnkgeyBcCi0gICAgICAgICAgICAgICBORE5CT09TVF9QUF9DQVQoYywgTkROQk9PU1RfUFBfREVDKG4pKSgpOyBcCi0gICAgICAgICAgIH0gY2F0Y2ggKC4uLikgeyB9IFwKLSAgICAgICAgICAgdGhyb3c7IFwKLSAgICAgICB9IFwKLSAgICAgICBORE5CT09TVF9QUF9DQVQoYywgTkROQk9PU1RfUFBfREVDKG4pKSgpOyBcCi0gICAgICAgcmV0dXJuIHI7IFwKLSAgIH0gXAotICAgLyoqLwotCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0xJTUlUUyAoMSwgTkROQk9PU1RfSU9TVFJFQU1TX01BWF9FWEVDVVRFX0FSSVRZKQotI2luY2x1ZGUgTkROQk9PU1RfUFBfTE9DQUxfSVRFUkFURSgpCi0jdW5kZWYgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8KLQotdGVtcGxhdGU8Y2xhc3MgSW5JdCwgY2xhc3MgT3A+Ci1PcCBleGVjdXRlX2ZvcmVhY2goSW5JdCBmaXJzdCwgSW5JdCBsYXN0LCBPcCBvcCkKLXsKLSAgICBpZiAoZmlyc3QgPT0gbGFzdCkKLSAgICAgICAgcmV0dXJuIG9wOwotICAgIHRyeSB7Ci0gICAgICAgIG9wKCpmaXJzdCk7Ci0gICAgfSBjYXRjaCAoLi4uKSB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICArK2ZpcnN0OwotICAgICAgICAgICAgbmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpleGVjdXRlX2ZvcmVhY2goZmlyc3QsIGxhc3QsIG9wKTsKLSAgICAgICAgfSBjYXRjaCAoLi4uKSB7IH0KLSAgICAgICAgdGhyb3c7Ci0gICAgfQotICAgICsrZmlyc3Q7Ci0gICAgcmV0dXJuIG5kbmJvb3N0Ojppb3N0cmVhbXM6OmRldGFpbDo6ZXhlY3V0ZV9mb3JlYWNoKGZpcnN0LCBsYXN0LCBvcCk7Ci19Ci0KLX0gfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGRldGFpbCwgaW9zdHJlYW1zLCBib29zdC4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9FWEVDVVRFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2ZpbGVfaGFuZGxlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9maWxlX2hhbmRsZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmMzVkMWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2ZpbGVfaGFuZGxlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8qCi0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuKFNlZSBhY2NvbXBhbnlpbmcgCi0gKiBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0gKiAKLSAqIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLSAqCi0gKiBGaWxlOiAgICAgICAgbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9maWxlX2hhbmRsZS5ocHAKLSAqIERhdGU6ICAgICAgICBTdW4gSnVuIDIyIDE0OjIzOjEyIE1EVCAyMDA4Ci0gKiBDb3B5cmlnaHQ6ICAgMjAwOCBDb2RlUmFnZSwgTExDCi0gKiBBdXRob3I6ICAgICAgSm9uYXRoYW4gVHVya2FuaXMKLSAqIENvbnRhY3Q6ICAgICB0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tCi0gKgotICogRGVmaW5lcyB0aGUgdHlwZSBuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OmZpbGVfaGFuZGxlLCByZXByZXNlbnRpbmcgYW4KLSAqIG9wZXJhdGluZyBzeXN0ZW0gZmlsZSBoYW5kbGUuCi0gKi8KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0ZJTEVfSEFORExFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0ZJTEVfSEFORExFX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvd2luZG93c19wb3NpeC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotI2lmZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19XSU5ET1dTCi0gICAgdHlwZWRlZiB2b2lkKiAgZmlsZV9oYW5kbGU7ICAvLyBBLmsuYS4gSEFORExFCi0jZWxzZQotICAgIHR5cGVkZWYgaW50ICAgIGZpbGVfaGFuZGxlOwotI2VuZGlmCi0KLX0gfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGRldGFpbCwgaW9zdHJlYW1zLCBib29zdC4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9GSUxFX0hBTkRMRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9mb3J3YXJkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9mb3J3YXJkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTQ1YjkwMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZm9yd2FyZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjQgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9GT1JXQVJEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0ZPUldBUkRfSFBQX0lOQ0xVREVEICAgCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZiAgICAgICAgICAgICAgICAgIAotIAotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+IC8vIE5ETkJPT1NUX01TVkMsIE5ETkJPT1NUX05PX1NGSU5BRQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9saW1pdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvcHVzaF9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2RlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvaW5jLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcHVuY3R1YXRpb24vY29tbWFfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fYmluYXJ5X3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL3JlcGVhdF9mcm9tX3RvLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWxlbS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0KLS8vLS0tLS0tTWFjcm9zIGZvciBkZWZpbmluZyBmb3J3YXJkaW5nIGNvbnN0cnVjdG9ycyBhbmQgb3BlbiBvdmVybG9hZHMtLS0tLS0tLS8vCi0gICAgCi0vLwotLy8gTWFjcm86IE5ETkJPT1NUX0lPU1RSRUFNU19GT1JXQVJEKGNsYXNzLCBpbXBsLCBkZXZpY2UsIHBhcmFtcywgYXJncykKLS8vIERlc2NyaXB0aW9uOiBEZWZpbmVzIGNvbnN0cnVjdG9ycyBhbmQgb3ZlcmxvYWRzIG9mICdvcGVuJyB3aGljaCBjb25zdHJ1Y3QKLS8vICAgICAgYSBkZXZpY2UgdXNpbmcgdGhlIHNwZWNpZmllZCBhcmd1bWVudCBsaXN0IGFuZCBwYXNzIGl0IHRvIHRoZSBzcGVjaWZpZWQKLS8vICAgICAgaGVscGVyIGZ1bmN0aW9uCi0vLyAgIGNsYXNzIC0gVGhlIGNsYXNzIG5hbWUKLS8vICAgaW1wbCAtIFRoZSBoZWxwZXIgZnVuY3Rpb24KLS8vICAgZGV2aWNlIC0gVGhlIGRldmljZSB0eXBlCi0vLyAgIHBhcmFtcyAtIFRoZSBsaXN0IG9mIGZvcm1hbCBwYXJhbWV0ZXJzIHRyYWlsaW5nIHRoZSBkZXZpY2UgcGFyYW1ldGVyIGluCi0vLyAgICAgdGhlIGhlbHBlciBmdW5jdGlvbidzIHNpZ25hdHVyZQotLy8gICBwYXJhbXMgLSBUaGUgbGlzdCBvZiBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSBoZWxwZXIgZnVuY3Rpb24sIGZvbGxvd2luZyB0aGUKLS8vICAgICBkZXZpY2UgYXJndW1lbnQKLS8vCi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19GT1JXQVJEKGNsYXNzLCBpbXBsLCBkZXZpY2UsIHBhcmFtcywgYXJncykgXAotICAgIGNsYXNzKGNvbnN0IGRldmljZSYgdCBwYXJhbXMoKSkgXAotICAgIHsgdGhpcy0+aW1wbCg6Om5kbmJvb3N0Ojppb3N0cmVhbXM6OmRldGFpbDo6d3JhcCh0KSBhcmdzKCkpOyB9IFwKLSAgICBjbGFzcyhkZXZpY2UmIHQgcGFyYW1zKCkpIFwKLSAgICB7IHRoaXMtPmltcGwoOjpuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OndyYXAodCkgYXJncygpKTsgfSBcCi0gICAgY2xhc3MoY29uc3QgOjpuZG5ib29zdDo6cmVmZXJlbmNlX3dyYXBwZXI8ZGV2aWNlPiYgcmVmIHBhcmFtcygpKSBcCi0gICAgeyB0aGlzLT5pbXBsKHJlZiBhcmdzKCkpOyB9IFwKLSAgICB2b2lkIG9wZW4oY29uc3QgZGV2aWNlJiB0IHBhcmFtcygpKSBcCi0gICAgeyB0aGlzLT5pbXBsKDo6bmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjp3cmFwKHQpIGFyZ3MoKSk7IH0gXAotICAgIHZvaWQgb3BlbihkZXZpY2UmIHQgcGFyYW1zKCkpIFwKLSAgICB7IHRoaXMtPmltcGwoOjpuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OndyYXAodCkgYXJncygpKTsgfSBcCi0gICAgdm9pZCBvcGVuKGNvbnN0IDo6bmRuYm9vc3Q6OnJlZmVyZW5jZV93cmFwcGVyPGRldmljZT4mIHJlZiBwYXJhbXMoKSkgXAotICAgIHsgdGhpcy0+aW1wbChyZWYgYXJncygpKTsgfSBcCi0gICAgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE8oIFwKLSAgICAgICAgMSwgTkROQk9PU1RfUFBfSU5DKE5ETkJPT1NUX0lPU1RSRUFNU19NQVhfRk9SV0FSRElOR19BUklUWSksIFwKLSAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0ZPUldBUkRJTkdfQ1RPUiwgKGNsYXNzLCBpbXBsLCBkZXZpY2UpIFwKLSAgICApIFwKLSAgICBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UTyggXAotICAgICAgICAxLCBORE5CT09TVF9QUF9JTkMoTkROQk9PU1RfSU9TVFJFQU1TX01BWF9GT1JXQVJESU5HX0FSSVRZKSwgXAotICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfRk9SV0FSRElOR19GTiwgKGNsYXNzLCBpbXBsLCBkZXZpY2UpIFwKLSAgICApIFwKLSAgICAvKiovCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZPUldBUkRJTkdfQ1RPUl9JKHosIG4sIHR1cGxlKSBcCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxMDAgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfREVDKG4pKSBcCi0gICAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1ooeiwgTkROQk9PU1RfUFBfREVDKG4pLCB0eXBlbmFtZSBVKSA+IFwKLSAgICBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDAsIHR1cGxlKSBcCi0gICAgKCBVMTAwJiB1MTAwIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0RFQyhuKSkgXAotICAgICAgTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TX1ooeiwgTkROQk9PU1RfUFBfREVDKG4pLCBjb25zdCBVLCAmdSkgXAotICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0RJU0FCTEVfSUZfU0FNRShVMTAwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDIsIHR1cGxlKSkpIFwKLSAgICB7IHRoaXMtPk5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMSwgdHVwbGUpIFwKLSAgICAgICggTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAyLCB0dXBsZSkgXAotICAgICAgICAoIHUxMDAgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfREVDKG4pKSBcCi0gICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfWih6LCBORE5CT09TVF9QUF9ERUMobiksIHUpKSApOyB9IFwKLSAgICAvKiovCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfRk9SV0FSRElOR19GTl9JKHosIG4sIHR1cGxlKSBcCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxMDAgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfREVDKG4pKSBcCi0gICAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1ooeiwgTkROQk9PU1RfUFBfREVDKG4pLCB0eXBlbmFtZSBVKSA+IFwKLSAgICB2b2lkIG9wZW4gXAotICAgICggVTEwMCYgdTEwMCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9ERUMobikpIFwKLSAgICAgIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNU19aKHosIE5ETkJPT1NUX1BQX0RFQyhuKSwgY29uc3QgVSwgJnUpIFwKLSAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19ESVNBQkxFX0lGX1NBTUUoVTEwMCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAyLCB0dXBsZSkpKSBcCi0gICAgeyB0aGlzLT5ORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDEsIHR1cGxlKSBcCi0gICAgICAoIHUxMDAgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfREVDKG4pKSBcCi0gICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1ooeiwgTkROQk9PU1RfUFBfREVDKG4pLCB1KSApOyB9IFwKLSAgICAvKiovCi0jZWxzZQotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZPUldBUkRJTkdfQ1RPUl9JKHosIG4sIHR1cGxlKQotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZPUldBUkRJTkdfRk5fSSh6LCBuLCB0dXBsZSkKLSNlbmRpZgotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfRk9SV0FSRElOR19DVE9SKHosIG4sIHR1cGxlKSBcCi0gICAgdGVtcGxhdGU8TkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfWih6LCBuLCB0eXBlbmFtZSBVKT4gXAotICAgIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMCwgdHVwbGUpIFwKLSAgICAoTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TX1ooeiwgbiwgY29uc3QgVSwgJnUpIFwKLSAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19ESVNBQkxFX0lGX1NBTUUoVTAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMiwgdHVwbGUpKSkgXAotICAgIHsgdGhpcy0+TkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAxLCB0dXBsZSkgXAotICAgICAgKCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDIsIHR1cGxlKSBcCi0gICAgICAgIChORE5CT09TVF9QUF9FTlVNX1BBUkFNU19aKHosIG4sIHUpKSApOyB9IFwKLSAgICBORE5CT09TVF9JT1NUUkVBTVNfRk9SV0FSRElOR19DVE9SX0koeiwgbiwgdHVwbGUpIFwKLSAgICAvKiovCi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19GT1JXQVJESU5HX0ZOKHosIG4sIHR1cGxlKSBcCi0gICAgdGVtcGxhdGU8TkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfWih6LCBuLCB0eXBlbmFtZSBVKT4gXAotICAgIHZvaWQgb3BlbihORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVNfWih6LCBuLCBjb25zdCBVLCAmdSkgXAotICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0RJU0FCTEVfSUZfU0FNRShVMCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAyLCB0dXBsZSkpKSBcCi0gICAgeyB0aGlzLT5ORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDEsIHR1cGxlKSBcCi0gICAgICAoIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMiwgdHVwbGUpIFwKLSAgICAgICAgKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1ooeiwgbiwgdSkpICk7IH0gXAotICAgIE5ETkJPT1NUX0lPU1RSRUFNU19GT1JXQVJESU5HX0ZOX0koeiwgbiwgdHVwbGUpIFwKLSAgICAvKiovCi0KLS8vIERpc2FibGUgZm9yd2FyZGluZyBjb25zdHJ1Y3RvcnMgaWYgZmlyc3QgcGFyYW1ldGVyIHR5cGUgaXMgdGhlIHNhbWUKLS8vIGFzIHRoZSBkZXZpY2UgdHlwZQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NGSU5BRSkgJiYgXAotICAgICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTkyKSkKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ESVNBQkxFX0lGX1NBTUUoZGV2aWNlLCBwYXJhbSkgXAotICAgICwgdHlwZW5hbWUgbmRuYm9vc3Q6OmRpc2FibGVfaWY8IG5kbmJvb3N0Ojppc19zYW1lPGRldmljZSwgcGFyYW0+ID46OnR5cGUqID0gMCBcCi0gICAgLyoqLwotI2Vsc2UgCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfRElTQUJMRV9JRl9TQU1FKGRldmljZSwgcGFyYW0pCi0jZW5kaWYKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9GT1JXQVJEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2ZzdHJlYW0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2ZzdHJlYW0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDYyMGE3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9mc3RyZWFtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfRlNUUkVBTV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9GU1RSRUFNX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy93aWRlX3N0cmVhbXMuaHBwPgotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fU1RSRUFNX1RFTVBMQVRFUwotIyBpbmNsdWRlIDxmc3RyZWFtPgotI2Vsc2UKLSMgaW5jbHVkZSA8ZnN0cmVhbS5oPgotI2VuZGlmIAotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19OT19TVFJFQU1fVEVNUExBVEVTCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQkFTSUNfSUZTVFJFQU0oQ2gsIFRyKSBzdGQ6OmJhc2ljX2lmc3RyZWFtPENoLCBUcj4KLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19CQVNJQ19PRlNUUkVBTShDaCwgVHIpIHN0ZDo6YmFzaWNfb2ZzdHJlYW08Q2gsIFRyPgotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0JBU0lDX0ZTVFJFQU0oQ2gsIFRyKSBzdGQ6OmJhc2ljX2ZzdHJlYW08Q2gsIFRyPgotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0JBU0lDX0ZJTEVCVUYoQ2gpIHN0ZDo6YmFzaWNfZmlsZWJ1ZjxDaD4KLSNlbHNlIAotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0JBU0lDX0lGU1RSRUFNKENoLCBUcikgc3RkOjppZnN0cmVhbQotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0JBU0lDX09GU1RSRUFNKENoLCBUcikgc3RkOjpvZnN0cmVhbQotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0JBU0lDX0ZJTEVCVUYoQ2gpIHN0ZDo6ZmlsZWJ1ZgotI2VuZGlmCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfRlNUUkVBTV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9mdW5jdGlvbmFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9mdW5jdGlvbmFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTJhODI1ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZnVuY3Rpb25hbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODkgKzAsMCBAQAotLyoKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4oU2VlIGFjY29tcGFueWluZyAKLSAqIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLSAqIAotICogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0gKiBGaWxlOiAgICAgICAgbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9mdW5jdGlvbmFsLmhwcAotICogRGF0ZTogICAgICAgIFN1biBEZWMgMDkgMDU6Mzg6MDMgTVNUIDIwMDcKLSAqIENvcHlyaWdodDogICAyMDA3LTIwMDggQ29kZVJhZ2UsIExMQwotICogQXV0aG9yOiAgICAgIEpvbmF0aGFuIFR1cmthbmlzCi0gKiBDb250YWN0OiAgICAgdHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbQotCi0gKiBEZWZpbmVzIHNldmVyYWwgZnVuY3Rpb24gb2JqZWN0cyBhbmQgb2JqZWN0IGdlbmVyYXRvcnMgZm9yIHVzZSB3aXRoIAotICogZXhlY3V0ZV9hbGwoKQotICovCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9GVU5DVElPTkFMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0ZVTkNUSU9OQUxfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2Nsb3NlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvcy5ocHA+IC8vIE5ETkJPT1NUX0lPUwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSAgICAvLyBGdW5jdGlvbiBvYmplY3RzIGFuZCBvYmplY3QgZ2VuZXJhdG9ycyBmb3IgaW52b2tpbmcKLSAgICAvLyBuZG5ib29zdDo6aW9zdHJlYW1zOjpjbG9zZQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY2xhc3MgZGV2aWNlX2Nsb3NlX29wZXJhdGlvbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB2b2lkIHJlc3VsdF90eXBlOwotICAgIGRldmljZV9jbG9zZV9vcGVyYXRpb24oVCYgdCwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkgCi0gICAgICAgIDogdF8odCksIHdoaWNoXyh3aGljaCkgCi0gICAgICAgIHsgfQotICAgIHZvaWQgb3BlcmF0b3IoKSgpIGNvbnN0IHsgbmRuYm9vc3Q6Omlvc3RyZWFtczo6Y2xvc2UodF8sIHdoaWNoXyk7IH0KLXByaXZhdGU6Ci0gICAgZGV2aWNlX2Nsb3NlX29wZXJhdGlvbiYgb3BlcmF0b3I9KGNvbnN0IGRldmljZV9jbG9zZV9vcGVyYXRpb24mKTsKLSAgICBUJiAgICAgICAgICAgICAgICAgICB0XzsKLSAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlICB3aGljaF87Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBTaW5rPgotY2xhc3MgZmlsdGVyX2Nsb3NlX29wZXJhdGlvbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB2b2lkIHJlc3VsdF90eXBlOwotICAgIGZpbHRlcl9jbG9zZV9vcGVyYXRpb24oVCYgdCwgU2luayYgc25rLCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKQotICAgICAgICA6IHRfKHQpLCBzbmtfKHNuayksIHdoaWNoXyh3aGljaCkKLSAgICAgICAgeyB9Ci0gICAgdm9pZCBvcGVyYXRvcigpKCkgY29uc3QgeyBuZG5ib29zdDo6aW9zdHJlYW1zOjpjbG9zZSh0Xywgc25rXywgd2hpY2hfKTsgfQotcHJpdmF0ZToKLSAgICBmaWx0ZXJfY2xvc2Vfb3BlcmF0aW9uJiBvcGVyYXRvcj0oY29uc3QgZmlsdGVyX2Nsb3NlX29wZXJhdGlvbiYpOwotICAgIFQmICAgICAgICAgICAgICAgICAgIHRfOwotICAgIFNpbmsmICAgICAgICAgICAgICAgIHNua187Ci0gICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSAgd2hpY2hfOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWRldmljZV9jbG9zZV9vcGVyYXRpb248VD4gCi1jYWxsX2Nsb3NlKFQmIHQsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpIAoteyByZXR1cm4gZGV2aWNlX2Nsb3NlX29wZXJhdGlvbjxUPih0LCB3aGljaCk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgU2luaz4KLWZpbHRlcl9jbG9zZV9vcGVyYXRpb248VCwgU2luaz4gCi1jYWxsX2Nsb3NlKFQmIHQsIFNpbmsmIHNuaywgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkgCi17IHJldHVybiBmaWx0ZXJfY2xvc2Vfb3BlcmF0aW9uPFQsIFNpbms+KHQsIHNuaywgd2hpY2gpOyB9Ci0KLSAgICAvLyBGdW5jdGlvbiBvYmplY3RzIGFuZCBvYmplY3QgZ2VuZXJhdG9ycyBmb3IgaW52b2tpbmcKLSAgICAvLyBuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OmNsb3NlX2FsbAotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY2xhc3MgZGV2aWNlX2Nsb3NlX2FsbF9vcGVyYXRpb24gewotcHVibGljOgotICAgIHR5cGVkZWYgdm9pZCByZXN1bHRfdHlwZTsKLSAgICBkZXZpY2VfY2xvc2VfYWxsX29wZXJhdGlvbihUJiB0KSA6IHRfKHQpIHsgfQotICAgIHZvaWQgb3BlcmF0b3IoKSgpIGNvbnN0IHsgZGV0YWlsOjpjbG9zZV9hbGwodF8pOyB9Ci1wcml2YXRlOgotICAgIGRldmljZV9jbG9zZV9hbGxfb3BlcmF0aW9uJiBvcGVyYXRvcj0oY29uc3QgZGV2aWNlX2Nsb3NlX2FsbF9vcGVyYXRpb24mKTsKLSAgICBUJiB0XzsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFNpbms+Ci1jbGFzcyBmaWx0ZXJfY2xvc2VfYWxsX29wZXJhdGlvbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB2b2lkIHJlc3VsdF90eXBlOwotICAgIGZpbHRlcl9jbG9zZV9hbGxfb3BlcmF0aW9uKFQmIHQsIFNpbmsmIHNuaykgOiB0Xyh0KSwgc25rXyhzbmspIHsgfQotICAgIHZvaWQgb3BlcmF0b3IoKSgpIGNvbnN0IHsgZGV0YWlsOjpjbG9zZV9hbGwodF8sIHNua18pOyB9Ci1wcml2YXRlOgotICAgIGZpbHRlcl9jbG9zZV9hbGxfb3BlcmF0aW9uJiBvcGVyYXRvcj0oY29uc3QgZmlsdGVyX2Nsb3NlX2FsbF9vcGVyYXRpb24mKTsKLSAgICBUJiAgICAgdF87Ci0gICAgU2luayYgIHNua187Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotZGV2aWNlX2Nsb3NlX2FsbF9vcGVyYXRpb248VD4gY2FsbF9jbG9zZV9hbGwoVCYgdCkgCi17IHJldHVybiBkZXZpY2VfY2xvc2VfYWxsX29wZXJhdGlvbjxUPih0KTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBTaW5rPgotZmlsdGVyX2Nsb3NlX2FsbF9vcGVyYXRpb248VCwgU2luaz4gCi1jYWxsX2Nsb3NlX2FsbChUJiB0LCBTaW5rJiBzbmspIAoteyByZXR1cm4gZmlsdGVyX2Nsb3NlX2FsbF9vcGVyYXRpb248VCwgU2luaz4odCwgc25rKTsgfQotCi0gICAgLy8gRnVuY3Rpb24gb2JqZWN0IGFuZCBvYmplY3QgZ2VuZXJhdG9yIGZvciBpbnZva2luZyBhCi0gICAgLy8gbWVtYmVyIGZ1bmN0aW9uIHZvaWQgY2xvc2Uoc3RkOjppb3NfYmFzZTo6b3Blbm1vZGUpCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyBtZW1iZXJfY2xvc2Vfb3BlcmF0aW9uIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHZvaWQgcmVzdWx0X3R5cGU7Ci0gICAgbWVtYmVyX2Nsb3NlX29wZXJhdGlvbihUJiB0LCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKSAKLSAgICAgICAgOiB0Xyh0KSwgd2hpY2hfKHdoaWNoKSAKLSAgICAgICAgeyB9Ci0gICAgdm9pZCBvcGVyYXRvcigpKCkgY29uc3QgeyB0Xy5jbG9zZSh3aGljaF8pOyB9Ci1wcml2YXRlOgotICAgIG1lbWJlcl9jbG9zZV9vcGVyYXRpb24mIG9wZXJhdG9yPShjb25zdCBtZW1iZXJfY2xvc2Vfb3BlcmF0aW9uJik7Ci0gICAgVCYgICAgICAgICAgICAgICAgICAgdF87Ci0gICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSAgd2hpY2hfOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLW1lbWJlcl9jbG9zZV9vcGVyYXRpb248VD4gY2FsbF9tZW1iZXJfY2xvc2UoVCYgdCwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkgCi17IHJldHVybiBtZW1iZXJfY2xvc2Vfb3BlcmF0aW9uPFQ+KHQsIHdoaWNoKTsgfQotCi0gICAgLy8gRnVuY3Rpb24gb2JqZWN0IGFuZCBvYmplY3QgZ2VuZXJhdG9yIGZvciBpbnZva2luZyBhCi0gICAgLy8gbWVtYmVyIGZ1bmN0aW9uIHZvaWQgcmVzZXQoKQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY2xhc3MgcmVzZXRfb3BlcmF0aW9uIHsKLXB1YmxpYzoKLSAgICByZXNldF9vcGVyYXRpb24oVCYgdCkgOiB0Xyh0KSB7IH0KLSAgICB2b2lkIG9wZXJhdG9yKCkoKSBjb25zdCB7IHRfLnJlc2V0KCk7IH0KLXByaXZhdGU6Ci0gICAgcmVzZXRfb3BlcmF0aW9uJiBvcGVyYXRvcj0oY29uc3QgcmVzZXRfb3BlcmF0aW9uJik7Ci0gICAgVCYgdF87Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotcmVzZXRfb3BlcmF0aW9uPFQ+IGNhbGxfcmVzZXQoVCYgdCkgeyByZXR1cm4gcmVzZXRfb3BlcmF0aW9uPFQ+KHQpOyB9Ci0KLSAgICAvLyBGdW5jdGlvbiBvYmplY3QgYW5kIG9iamVjdCBnZW5lcmF0b3IgZm9yIGNsZWFyaW5nIGEgZmxhZwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY2xhc3MgY2xlYXJfZmxhZ3Nfb3BlcmF0aW9uIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHZvaWQgcmVzdWx0X3R5cGU7Ci0gICAgY2xlYXJfZmxhZ3Nfb3BlcmF0aW9uKFQmIHQpIDogdF8odCkgeyB9Ci0gICAgdm9pZCBvcGVyYXRvcigpKCkgY29uc3QgeyB0XyA9IDA7IH0KLXByaXZhdGU6Ci0gICAgY2xlYXJfZmxhZ3Nfb3BlcmF0aW9uJiBvcGVyYXRvcj0oY29uc3QgY2xlYXJfZmxhZ3Nfb3BlcmF0aW9uJik7Ci0gICAgVCYgdF87Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY2xlYXJfZmxhZ3Nfb3BlcmF0aW9uPFQ+IGNsZWFyX2ZsYWdzKFQmIHQpIAoteyByZXR1cm4gY2xlYXJfZmxhZ3Nfb3BlcmF0aW9uPFQ+KHQpOyB9Ci0KLSAgICAvLyBGdW5jdGlvbiBvYmplY3QgYW5kIGdlbmVyYXRvciBmb3IgZmx1c2hpbmcgYSBidWZmZXIKLQotLy8gRnVuY3Rpb24gb2JqZWN0IGZvciB1c2Ugd2l0aCBleGVjdXRlX2FsbCgpCi10ZW1wbGF0ZTx0eXBlbmFtZSBCdWZmZXIsIHR5cGVuYW1lIERldmljZT4KLWNsYXNzIGZsdXNoX2J1ZmZlcl9vcGVyYXRpb24gewotcHVibGljOgotICAgIHR5cGVkZWYgdm9pZCByZXN1bHRfdHlwZTsKLSAgICBmbHVzaF9idWZmZXJfb3BlcmF0aW9uKEJ1ZmZlciYgYnVmLCBEZXZpY2UmIGRldiwgYm9vbCBmbHVzaCkKLSAgICAgICAgOiBidWZfKGJ1ZiksIGRldl8oZGV2KSwgZmx1c2hfKGZsdXNoKQotICAgICAgICB7IH0KLSAgICB2b2lkIG9wZXJhdG9yKCkoKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKGZsdXNoXykgCi0gICAgICAgICAgICBidWZfLmZsdXNoKGRldl8pOwotICAgIH0KLXByaXZhdGU6Ci0gICAgZmx1c2hfYnVmZmVyX29wZXJhdGlvbiYgb3BlcmF0b3I9KGNvbnN0IGZsdXNoX2J1ZmZlcl9vcGVyYXRpb24mKTsKLSAgICBCdWZmZXImICBidWZfOwotICAgIERldmljZSYgIGRldl87Ci0gICAgYm9vbCAgICAgZmx1c2hfOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQnVmZmVyLCB0eXBlbmFtZSBEZXZpY2U+Ci1mbHVzaF9idWZmZXJfb3BlcmF0aW9uPEJ1ZmZlciwgRGV2aWNlPiAKLWZsdXNoX2J1ZmZlcihCdWZmZXImIGJ1ZiwgRGV2aWNlJiBkZXYsIGJvb2wgZmx1c2gpCi17IHJldHVybiBmbHVzaF9idWZmZXJfb3BlcmF0aW9uPEJ1ZmZlciwgRGV2aWNlPihidWYsIGRldiwgZmx1c2gpOyB9Ci0KLX0gfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGRldGFpbCwgaW9zdHJlYW1zLCBib29zdC4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9GVU5DVElPTkFMX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQzY2ZjMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfSU9TX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0lPU19IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gLy8gTkROQk9PU1RfTVNWQy4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvd2lkZV9zdHJlYW1zLmhwcD4KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMKLSMgaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgPD0gMHgzMDAzKQotIyAgaW5jbHVkZSA8aW9zPgotIyBlbHNlCi0jICBpbmNsdWRlIDxpc3RyZWFtPgotIyAgaW5jbHVkZSA8b3N0cmVhbT4KLSMgZW5kaWYKLSNlbHNlIAotIyBpbmNsdWRlIDxleGNlcHRpb24+Ci0jIGluY2x1ZGUgPGlvc2Z3ZD4KLSNlbmRpZiAKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19OT19TVFJFQU1fVEVNUExBVEVTIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0JBU0lDX0lPUyhjaCwgdHIpICBzdGQ6OmJhc2ljX2lvczwgY2gsIHRyID4KLSMgaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgPD0gMHgzMDAzKSAmJiBcCi0gICAgICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPCAweDYwMCkgJiYgXAotICAgICAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApIFwKLSAgICAgLyoqLwotCi0jZGVmaW5lIE5ETkJPT1NUX0lPUyAgICAgICAgICAgICAgICBzdGQ6OmlvcwotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfRkFJTFVSRSAgc3RkOjppb3M6OmZhaWx1cmUKLQotIyBlbHNlCi0KLSNkZWZpbmUgTkROQk9PU1RfSU9TICAgICAgICAgICAgICAgIHN0ZDo6aW9zX2Jhc2UKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUgIHN0ZDo6aW9zX2Jhc2U6OmZhaWx1cmUKLQotIyBlbmRpZgotI2Vsc2UgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fU1RSRUFNX1RFTVBMQVRFUyAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotI2RlZmluZSBORE5CT09TVF9JT1MgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6aW9zCi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19CQVNJQ19JT1MoY2gsIHRyKSAgc3RkOjppb3MKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUgICAgICAgICAgICBuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OmZhaWx1cmUKLQotY2xhc3MgZmFpbHVyZSA6IHN0ZDo6ZXhjZXB0aW9uIHsgICAgCi1wdWJsaWM6Ci0gICAgZXhwbGljaXQgZmFpbHVyZShjb25zdCBzdGQ6OnN0cmluZyYgd2hhdF9hcmcpIDogd2hhdF8od2hhdF9hcmcpIHsgfQotICAgIGNvbnN0IGNoYXIqIHdoYXQoKSBjb25zdCB7IHJldHVybiB3aGF0Xy5jX3N0cigpOyB9Ci1wcml2YXRlOgotICAgIHN0ZDo6c3RyaW5nIHdoYXRfOwotfTsKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotfSB9IH0gLy8gRW5kIG5hbWVzcGFjZSBmYWlsdXJlLCBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0lPU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3N0cmVhbS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zdHJlYW0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNmQyMWFiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3N0cmVhbS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0lPU1RSRUFNX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0lPU1RSRUFNX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy93aWRlX3N0cmVhbXMuaHBwPgotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fU1RSRUFNX1RFTVBMQVRFUwotIyBpbmNsdWRlIDxpc3RyZWFtPgotIyBpbmNsdWRlIDxvc3RyZWFtPgotI2Vsc2UKLSMgaW5jbHVkZSA8aW9zdHJlYW0uaD4KLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19OT19TVFJFQU1fVEVNUExBVEVTCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQkFTSUNfSVNUUkVBTShjaCwgdHIpIHN0ZDo6YmFzaWNfaXN0cmVhbTwgY2gsIHRyID4KLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19CQVNJQ19PU1RSRUFNKGNoLCB0cikgc3RkOjpiYXNpY19vc3RyZWFtPCBjaCwgdHIgPgotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0JBU0lDX0lPU1RSRUFNKGNoLCB0cikgc3RkOjpiYXNpY19pb3N0cmVhbTwgY2gsIHRyID4KLSNlbHNlCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQkFTSUNfU1RSRUFNQlVGKGNoLCB0cikgc3RkOjpzdHJlYW1idWYKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19CQVNJQ19JU1RSRUFNKGNoLCB0cikgc3RkOjppc3RyZWFtCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQkFTSUNfT1NUUkVBTShjaCwgdHIpIHN0ZDo6b3N0cmVhbQotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0JBU0lDX0lPU1RSRUFNKGNoLCB0cikgc3RkOjppb3N0cmVhbQotI2VuZGlmCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfSU9TVFJFQU1fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaXNfZGVyZWZlcmVuY2VhYmxlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pc19kZXJlZmVyZW5jZWFibGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZWU4YzU4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pc19kZXJlZmVyZW5jZWFibGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDUtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gKEMpIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDA0LgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9JU19ERVJFRkVSRU5DRUFCTEVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfSVNfREVSRUZFUkVOQ0VBQkxFX0hQUF9JTkNMVURFRAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90ZW1wbGF0ZV9hcml0eV9zcGVjLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7IG5hbWVzcGFjZSBkZXRhaWwgeyAKLQotLy8gaXNfZGVyZWZlcmVuY2VhYmxlPFQ+IG1ldGFmdW5jdGlvbgotLy8KLS8vIFJlcXVpcmVzOiBHaXZlbiB4IG9mIHR5cGUgVCYsIGlmIHRoZSBleHByZXNzaW9uICp4IGlzIHdlbGwtZm9ybWVkCi0vLyBpdCBtdXN0IGhhdmUgY29tcGxldGUgdHlwZTsgb3RoZXJ3aXNlLCBpdCBtdXN0IG5laXRoZXIgYmUgYW1iaWd1b3VzCi0vLyBub3IgdmlvbGF0ZSBhY2Nlc3MuCi0KLS8vIFRoaXMgbmFtZXNwYWNlIGVuc3VyZXMgdGhhdCBBREwgZG9lc24ndCBtZXNzIHRoaW5ncyB1cC4KLW5hbWVzcGFjZSBpc19kZXJlZmVyZW5jZWFibGVfCi17Ci0gIC8vIGEgdHlwZSByZXR1cm5lZCBmcm9tIG9wZXJhdG9yKiB3aGVuIG5vIGluY3JlbWVudCBpcyBmb3VuZCBpbiB0aGUKLSAgLy8gdHlwZSdzIG93biBuYW1lc3BhY2UKLSAgc3RydWN0IHRhZyB7fTsKLSAgCi0gIC8vIGFueSBzb2FrcyB1cCBpbXBsaWNpdCBjb252ZXJzaW9ucyBhbmQgbWFrZXMgdGhlIGZvbGxvd2luZwotICAvLyBvcGVyYXRvciogbGVzcy1wcmVmZXJyZWQgdGhhbiBhbnkgb3RoZXIgc3VjaCBvcGVyYXRvciB0aGF0Ci0gIC8vIG1pZ2h0IGJlIGZvdW5kIHZpYSBBREwuCi0gIHN0cnVjdCBhbnkgeyB0ZW1wbGF0ZSA8Y2xhc3MgVD4gYW55KFQgY29uc3QmKTsgfTsKLQotICAvLyBUaGlzIGlzIGEgbGFzdC1yZXNvcnQgb3BlcmF0b3IqIGZvciB3aGVuIG5vbmUgb3RoZXIgaXMgZm91bmQKLSAgdGFnIG9wZXJhdG9yKihhbnkgY29uc3QmKTsKLQotIyBpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDMyMDIpKSBcCi0gICAgfHwgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKQotIyAgZGVmaW5lIE5ETkJPT1NUX2NvbW1hKGEsYikgKGEpCi0jIGVsc2UgCi0gIC8vIEluIGNhc2UgYW4gb3BlcmF0b3IrKyBpcyBmb3VuZCB0aGF0IHJldHVybnMgdm9pZCwgd2UnbGwgdXNlICsreCwwCi0gIHRhZyBvcGVyYXRvciwodGFnLGludCk7ICAKLSMgIGRlZmluZSBORE5CT09TVF9jb21tYShhLGIpIChhLGIpCi0jIGVuZGlmIAotICAKLSAgLy8gdHdvIGNoZWNrIG92ZXJsb2FkcyBoZWxwIHVzIGlkZW50aWZ5IHdoaWNoIG9wZXJhdG9yKysgd2FzIHBpY2tlZAotICBjaGFyICgmIGNoZWNrX2luY3JlbWVudCh0YWcpIClbMl07Ci0gIAotICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgY2hhciBjaGVja19pbmNyZW1lbnQoVCBjb25zdCYpOwotICAKLSAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gIHN0cnVjdCBpbXBsCi0gIHsKLSAgICAgIHN0YXRpYyB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlJiB4OwotCi0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoCi0gICAgICAgICAgYm9vbAotICAgICAgICAsIHZhbHVlID0gc2l6ZW9mKGlzX2RlcmVmZXJlbmNlYWJsZV86OmNoZWNrX2luY3JlbWVudChORE5CT09TVF9jb21tYSgqeCwwKSkpID09IDEKLSAgICAgICk7Ci0gIH07Ci19Ci0KLSMgdW5kZWYgTkROQk9PU1RfY29tbWEKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gCi1zdHJ1Y3QgaXNfZGVyZWZlcmVuY2VhYmxlIAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX0NfQkFTRShpc19kZXJlZmVyZW5jZWFibGVfOjppbXBsPFQ+Ojp2YWx1ZSkKLXsgCi0gICAgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfVkFMVUVfREVDTChpc19kZXJlZmVyZW5jZWFibGVfOjppbXBsPFQ+Ojp2YWx1ZSkKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEsaXNfZGVyZWZlcmVuY2VhYmxlLChUKSkKLX07Ci0KLX0gfSAKLQotTkROQk9PU1RfVFRfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMSwgOjpuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OmlzX2RlcmVmZXJlbmNlYWJsZSkKLQotfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0lTX0RFUkVGRVJFTkNFQUJMRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pc19pdGVyYXRvcl9yYW5nZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaXNfaXRlcmF0b3JfcmFuZ2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZGNiY2M1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pc19pdGVyYXRvcl9yYW5nZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0lTX0lURVJBVE9SX1JBTkdFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0lTX0lURVJBVE9SX1JBTkdFX0hQUF9JTkNMVURFRCAgICAgICAKLSAKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotLy8gTXVzdCBjb21lIGxhc3QuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZGlzYWJsZV93YXJuaW5ncy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IAotCi0jIGlmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gV2UgYXZvaWQgZGVwZW5kZW5jZSBvbiBCb29zdC5SYW5nZSBieSB1c2luZyBhIGZvcndhcmQgZGVjbGFyYXRpb24uCi10ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYXRvcj4KLWNsYXNzIGl0ZXJhdG9yX3JhbmdlOwotICAgIAotbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLU5ETkJPT1NUX0lPU1RSRUFNU19CT09MX1RSQUlUX0RFRihpc19pdGVyYXRvcl9yYW5nZSwgbmRuYm9vc3Q6Oml0ZXJhdG9yX3JhbmdlLCAxKQotCi19IC8vIEVuZCBuYW1lc3BhY2UgaW9zdHJlYW1zLgotCi0jIGVsc2UgLy8gIyBpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotbmFtZXNwYWNlIGlvc3RyZWFtcyB7ICAgIAotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgaXNfaXRlcmF0b3JfcmFuZ2UgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci0gICAgfTsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGlvc3RyZWFtcy4KLQotIyBlbmRpZiAvLyAjIGlmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotfSAvLyBFbmQgbmFtZXNwYWNlIG5kbmJvb3N0LgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9JU19JVEVSQVRPUl9SQU5HRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9uZXdsaW5lLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9uZXdsaW5lLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzJhN2QxMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvbmV3bGluZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwNS0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX05FV0xJTkVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfTkVXTElORV9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2g+Ci1zdHJ1Y3QgbmV3bGluZTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG5ld2xpbmU8Y2hhcj4gewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChjaGFyLCB2YWx1ZSA9ICdcbicpOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG5ld2xpbmU8d2NoYXJfdD4gewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh3Y2hhcl90LCB2YWx1ZSA9IEwnXG4nKTsKLX07Ci0KLX0gfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGRldGFpbGwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfTkVXTElORV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9vcHRpb25hbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvb3B0aW9uYWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYWY5MTBhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9vcHRpb25hbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDUtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vIFJlY2VudCBjaGFuZ2VzIHRvIEJvb3N0Lk9wdGlvbmFsIGludm9sdmluZyBhc3NpZ21lbnQgYnJva2UgQm9vc3QuSW9zdHJlYW1zLAotLy8gaW4gYSB3YXkgd2hpY2ggY291bGQgYmUgcmVtZWRpZWQgb25seSBieSByZWx5aW5nIG9uIHRoZSBkZXByZWNhdGVkIHJlc2V0Ci0vLyBmdW5jdGlvbnM7IHdpdGggVkM2LCBldmVuIHJlc2V0IGRpZG4ndCB3b3JrLiBVbnRpbCB0aGlzIHByb2JsZW0gaXMgCi0vLyB1bmRlcnN0b29kLCBJb3N0cmVhbXMgd2lsbCB1c2UgYSBwcml2YXRlIHZlcnNpb24gb2Ygb3B0aW9uYWwgd2l0aCBhIHNtYXJ0IAotLy8gcG9pbnRlciBpbnRlcmZhY2UuCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9PUFRJT05BTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9PUFRJT05BTF9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FsaWduZWRfc3RvcmFnZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWxpZ25tZW50X29mLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyBUYWtlbiBmcm9tIDxuZG5ib29zdC9vcHRpb25hbC5ocHA+LgotdGVtcGxhdGU8Y2xhc3MgVD4KLWNsYXNzIGFsaWduZWRfc3RvcmFnZQotewotICAgIC8vIEJvcmxhbmQgSUNFcyBpZiB1bm5hbWVkIHVuaW9ucyBhcmUgdXNlZCBmb3IgdGhpcyEKLSAgICB1bmlvbiBkdW1teV91Ci0gICAgewotICAgICAgICBjaGFyIGRhdGFbIHNpemVvZihUKSBdOwotICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHR5cGVfd2l0aF9hbGlnbm1lbnQ8Ci0gICAgICAgICAgOjpuZG5ib29zdDo6YWxpZ25tZW50X29mPFQ+Ojp2YWx1ZSA+Ojp0eXBlIGFsaWduZXJfOwotICAgIH0gZHVtbXlfIDsKLQotICBwdWJsaWM6Ci0KLSAgICB2b2lkIGNvbnN0KiBhZGRyZXNzKCkgY29uc3QgeyByZXR1cm4gJmR1bW15Xy5kYXRhWzBdOyB9Ci0gICAgdm9pZCAgICAgICogYWRkcmVzcygpICAgICAgIHsgcmV0dXJuICZkdW1teV8uZGF0YVswXTsgfQotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIG9wdGlvbmFsIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIFQgZWxlbWVudF90eXBlOwotICAgIG9wdGlvbmFsKCkgOiBpbml0aWFsaXplZF8oZmFsc2UpIHsgfQotICAgIG9wdGlvbmFsKGNvbnN0IFQmIHQpIDogaW5pdGlhbGl6ZWRfKGZhbHNlKSB7IHJlc2V0KHQpOyB9Ci0gICAgfm9wdGlvbmFsKCkgeyByZXNldCgpOyB9Ci0gICAgVCYgb3BlcmF0b3IqKCkgCi0gICAgeyAKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKGluaXRpYWxpemVkXyk7Ci0gICAgICAgIHJldHVybiAqc3RhdGljX2Nhc3Q8VCo+KGFkZHJlc3MoKSk7IAotICAgIH0KLSAgICBjb25zdCBUJiBvcGVyYXRvciooKSBjb25zdAotICAgIHsgCi0gICAgICAgIE5ETkJPT1NUX0FTU0VSVChpbml0aWFsaXplZF8pOwotICAgICAgICByZXR1cm4gKnN0YXRpY19jYXN0PGNvbnN0IFQqPihhZGRyZXNzKCkpOyAKLSAgICB9Ci0gICAgVCogb3BlcmF0b3ItPigpIAotICAgIHsgCi0gICAgICAgIE5ETkJPT1NUX0FTU0VSVChpbml0aWFsaXplZF8pOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VCo+KGFkZHJlc3MoKSk7IAotICAgIH0KLSAgICBjb25zdCBUKiBvcGVyYXRvci0+KCkgY29uc3QKLSAgICB7IAotICAgICAgICBORE5CT09TVF9BU1NFUlQoaW5pdGlhbGl6ZWRfKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFQqPihhZGRyZXNzKCkpOyAKLSAgICB9Ci0gICAgVCogZ2V0KCkgCi0gICAgeyAKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKGluaXRpYWxpemVkXyk7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4oYWRkcmVzcygpKTsgCi0gICAgfQotICAgIGNvbnN0IFQqIGdldCgpIGNvbnN0Ci0gICAgeyAKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKGluaXRpYWxpemVkXyk7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBUKj4oYWRkcmVzcygpKTsgCi0gICAgfQotICAgIHZvaWQgcmVzZXQoKSAKLSAgICB7Ci0gICAgICAgIGlmIChpbml0aWFsaXplZF8pIHsgCi0gICAgICAgICNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTY0KSkgfHwgXAotICAgICAgICAgICAgTkROQk9PU1RfV09SS0FST1VORChfX0lCTUNQUF9fLCBORE5CT09TVF9URVNURURfQVQoNjAwKSkgXAotICAgICAgICAgICAgLyoqLwotICAgICAgICAgICAgVCogdCA9IHN0YXRpY19jYXN0PFQqPihhZGRyZXNzKCkpOwotICAgICAgICAgICAgdC0+flQoKTsKLSAgICAgICAgI2Vsc2UKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PFQqPihhZGRyZXNzKCkpLT5UOjp+VCgpOwotICAgICAgICAjZW5kaWYKLSAgICAgICAgICAgIGluaXRpYWxpemVkXyA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotICAgIHZvaWQgcmVzZXQoY29uc3QgVCYgdCkgCi0gICAgewotICAgICAgICByZXNldCgpOwotICAgICAgICBuZXcgKGFkZHJlc3MoKSkgVCh0KTsgCi0gICAgICAgIGluaXRpYWxpemVkXyA9IHRydWU7Ci0gICAgfQotcHJpdmF0ZToKLSAgICBvcHRpb25hbChjb25zdCBvcHRpb25hbCYpOwotICAgIG9wdGlvbmFsJiBvcGVyYXRvcj0oY29uc3Qgb3B0aW9uYWwmKTsKLSAgICB2b2lkKiBhZGRyZXNzKCkgeyByZXR1cm4gJnN0b3JhZ2VfOyB9Ci0gICAgY29uc3Qgdm9pZCogYWRkcmVzcygpIGNvbnN0IHsgcmV0dXJuICZzdG9yYWdlXzsgfQotICAgIGFsaWduZWRfc3RvcmFnZTxUPiAgc3RvcmFnZV87Ci0gICAgYm9vbCAgICAgICAgICAgICAgICBpbml0aWFsaXplZF87Ci19OwotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfT1BUSU9OQUxfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvcGFyYW1fdHlwZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvcGFyYW1fdHlwZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1ZGE0OTUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3BhcmFtX3R5cGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9QQVJBTV9UWVBFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX1BBUkFNX1RZUEVfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZiAgICAgICAgICAgICAgCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgcGFyYW1fdHlwZSB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzxpc19zdGRfaW88VD4sIFQmLCBjb25zdCBUJj46OnR5cGUgdHlwZTsKLX07Ci0KLX0gfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGRldGFpbCwgaW9zdHJlYW1zLCBib29zdC4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9QQVJBTV9UWVBFX0hQUF9JTkNMVURFRCAvLy0tLS0tLS0tLS0tLy8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9wYXRoLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9wYXRoLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmFmYzk4MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvcGF0aC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMTQgKzAsMCBAQAotLyoKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4oU2VlIGFjY29tcGFueWluZyAKLSAqIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLSAqIAotICogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotICoKLSAqIEZpbGU6ICAgICAgICBuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3BhdGguaHBwCi0gKiBEYXRlOiAgICAgICAgU2F0IEp1biAyMSAyMToyNDowNSBNRFQgMjAwOAotICogQ29weXJpZ2h0OiAgIDIwMDggQ29kZVJhZ2UsIExMQwotICogQXV0aG9yOiAgICAgIEpvbmF0aGFuIFR1cmthbmlzCi0gKiBDb250YWN0OiAgICAgdHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbQotICoKLSAqIERlZmluZXMgdGhlIGNsYXNzIG5kbmJvb3N0Ojppb3N0cmVhbXM6OmRldGFpbDo6cGF0aCwgZm9yIHN0b3JpbmcgYSAKLSAqIGEgc3RkOjpzdHJpbmcgb3Igc3RkOjp3c3RyaW5nLgotICoKLSAqIFRoaXMgY2xhc3MgYWxsb3dzIGludGVyb3BlcmFiaWxpdHkgd2l0aCBCb29zdC5GaWxlc3lzdGVtIHdpdGhvdXQKLSAqIGNyZWF0aW5nIGEgZGVwZW5kZW5jZSBvbiBCb29zdC5GaWxlc3lzdGVtIGhlYWRlcnMgb3IgaW1wbGVtZW50YXRpb24uCi0gKi8KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX1BBVEhfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfUEFUSF9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPGNzdHJpbmc+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3dpZGVfc3RyZWFtcy5ocHA+Ci0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19OT19XSURFX1NUUkVBTVMKLSMgaW5jbHVkZSA8Y3djaGFyPgotI2VuZGlmCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fV0lERV9TVFJFQU1TIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotY2xhc3MgcGF0aCB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVj4KLSAgICBzdHJ1Y3Qgc2ZpbmFlCi0gICAgewotICAgICAgICB0eXBlZGVmIFYgdHlwZTsKLSAgICB9OwotcHVibGljOgotCi0gICAgLy8gRGVmYXVsdCBjb25zdHJ1Y3RvcgotICAgIHBhdGgoKSA6IG5hcnJvd18oKSwgd2lkZV8oKSwgaXNfd2lkZV8oZmFsc2UpIHsgfQotCi0gICAgLy8gQ29uc3RydWN0b3IgdGFraW5nIGEgc3RkOjpzdHJpbmcKLSAgICBwYXRoKGNvbnN0IHN0ZDo6c3RyaW5nJiBwKSA6IG5hcnJvd18ocCksIHdpZGVfKCksIGlzX3dpZGVfKGZhbHNlKSB7IH0KLQotICAgIC8vIENvbnN0cnVjdG9yIHRha2luZyBhIEMtc3R5bGUgc3RyaW5nCi0gICAgcGF0aChjb25zdCBjaGFyKiBwKSA6IG5hcnJvd18ocCksIHdpZGVfKCksIGlzX3dpZGVfKGZhbHNlKSB7IH0KLQotICAgIC8vIENvbnN0cnVjdG9yIHRha2luZyBhIG5kbmJvb3N0OjpmaWxlc3lzdGVtMjo6cGF0aCBvcgotICAgIC8vIG5kbmJvb3N0OjpmaWxlc3lzdGVtMjo6d3BhdGgKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotICAgIGV4cGxpY2l0IHBhdGgoY29uc3QgUGF0aCYgcCwgdHlwZW5hbWUgUGF0aDo6ZXh0ZXJuYWxfc3RyaW5nX3R5cGUqID0gMCkKLSAgICB7Ci0gICAgICAgIGluaXQocC5leHRlcm5hbF9maWxlX3N0cmluZygpKTsKLSAgICB9Ci0KLSAgICAvLyBDb25zdHJ1Y3RvciB0YWtpbmcgYSBuZG5ib29zdDo6ZmlsZXN5c3RlbTM6OnBhdGggKGJvb3N0IGZpbGVzeXN0ZW0gdjMpCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUGF0aD4KLSAgICBleHBsaWNpdCBwYXRoKGNvbnN0IFBhdGgmIHAsIHR5cGVuYW1lIFBhdGg6OmNvZGVjdnRfdHlwZSogPSAwKQotICAgIHsKLSAgICAgICAgaW5pdChwLm5hdGl2ZSgpKTsKLSAgICB9Ci0KLSAgICAvLyBDb3B5IGNvbnN0cnVjdG9yCi0gICAgcGF0aChjb25zdCBwYXRoJiBwKSAKLSAgICAgICAgOiBuYXJyb3dfKHAubmFycm93XyksIHdpZGVfKHAud2lkZV8pLCBpc193aWRlXyhwLmlzX3dpZGVfKSAKLSAgICAgICAgeyB9Ci0KLSAgICAvLyBBc3NpZ25tZW50IG9wZXJhdG9yIHRha2luZyBhbm90aGVyIHBhdGgKLSAgICBwYXRoJiBvcGVyYXRvcj0oY29uc3QgcGF0aCYgcCkKLSAgICB7Ci0gICAgICAgIG5hcnJvd18gPSBwLm5hcnJvd187Ci0gICAgICAgIHdpZGVfID0gcC53aWRlXzsKLSAgICAgICAgaXNfd2lkZV8gPSBwLmlzX3dpZGVfOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgLy8gQXNzaWdubWVudCBvcGVyYXRvciB0YWtpbmcgYSBzdGQ6OnN0cmluZwotICAgIHBhdGgmIG9wZXJhdG9yPShjb25zdCBzdGQ6OnN0cmluZyYgcCkKLSAgICB7Ci0gICAgICAgIG5hcnJvd18gPSBwOwotICAgICAgICB3aWRlXy5jbGVhcigpOwotICAgICAgICBpc193aWRlXyA9IGZhbHNlOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgLy8gQXNzaWdubWVudCBvcGVyYXRvciB0YWtpbmcgYSBDLXN0eWxlIHN0cmluZwotICAgIHBhdGgmIG9wZXJhdG9yPShjb25zdCBjaGFyKiBwKQotICAgIHsKLSAgICAgICAgbmFycm93Xy5hc3NpZ24ocCk7Ci0gICAgICAgIHdpZGVfLmNsZWFyKCk7Ci0gICAgICAgIGlzX3dpZGVfID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxNDAwKQotICAgIC8vIEFzc2lnbm1lbnQgb3BlcmF0b3IgdGFraW5nIGEgbmRuYm9vc3Q6OmZpbGVzeXN0ZW0yOjpwYXRoIG9yCi0gICAgLy8gbmRuYm9vc3Q6OmZpbGVzeXN0ZW0yOjp3cGF0aAotICAgIC8vIChub3Qgb24gVmlzdWFsIEMrKyA3LjEvOC4wLCBhcyBpdCBzZWVtcyB0byBoYXZlIHByb2JsZW1zIHdpdGgKLSAgICAvLyBTRklOQUUgZnVuY3Rpb25zIHdpdGggdGhlIHNhbWUgcGFyYW1ldGVycywgZG9lc24ndCBzZWVtCi0gICAgLy8gd29ydGggd29ya2luZyBhcm91bmQpLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci0gICAgdHlwZW5hbWUgc2ZpbmFlPHR5cGVuYW1lIFBhdGg6OmV4dGVybmFsX3N0cmluZ190eXBlLCBwYXRoJj46OnR5cGUKLSAgICAgICAgb3BlcmF0b3I9KGNvbnN0IFBhdGgmIHApCi0gICAgewotICAgICAgICBpbml0KHAuZXh0ZXJuYWxfZmlsZV9zdHJpbmcoKSk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0jZW5kaWYKLQotICAgIC8vIEFzc2lnbm1lbnQgb3BlcmF0b3IgdGFraW5nIGEgbmRuYm9vc3Q6OmZpbGVzeXN0ZW0zOjpwYXRoCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUGF0aD4KLSAgICB0eXBlbmFtZSBzZmluYWU8dHlwZW5hbWUgUGF0aDo6Y29kZWN2dF90eXBlLCBwYXRoJj46OnR5cGUKLSAgICAgICAgb3BlcmF0b3I9KGNvbnN0IFBhdGgmIHApCi0gICAgewotICAgICAgICBpbml0KHAubmF0aXZlKCkpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgYm9vbCBpc193aWRlKCkgY29uc3QgeyByZXR1cm4gaXNfd2lkZV87IH0KLQotICAgIC8vIFJldHVybnMgYSByZXByZXNlbnRhdGlvbiBvZiB0aGUgdW5kZXJseWluZyBwYXRoIGFzIGEgc3RkOjpzdHJpbmcKLSAgICAvLyBSZXF1aXJlczogaXNfd2lkZSgpIHJldHVybnMgZmFsc2UKLSAgICBjb25zdCBjaGFyKiBjX3N0cigpIGNvbnN0IHsgcmV0dXJuIG5hcnJvd18uY19zdHIoKTsgfQotCi0gICAgLy8gUmV0dXJucyBhIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB1bmRlcmx5aW5nIHBhdGggYXMgYSBzdGQ6OndzdHJpbmcKLSAgICAvLyBSZXF1aXJlczogaXNfd2lkZSgpIHJldHVybnMgdHJ1ZQotICAgIGNvbnN0IHdjaGFyX3QqIGNfd3N0cigpIGNvbnN0IHsgcmV0dXJuIHdpZGVfLmNfc3RyKCk7IH0KLXByaXZhdGU6Ci0gICAgCi0gICAgLy8gRm9yIHdpZGUtY2hhcmFjdGVyIHBhdGhzLCB1c2UgYSBuZG5ib29zdDo6ZmlsZXN5c3RlbTo6d3BhdGggaW5zdGVhZCBvZiBhCi0gICAgLy8gc3RkOjp3c3RyaW5nCi0gICAgcGF0aChjb25zdCBzdGQ6OndzdHJpbmcmKTsKLSAgICBwYXRoJiBvcGVyYXRvcj0oY29uc3Qgc3RkOjp3c3RyaW5nJik7Ci0KLSAgICB2b2lkIGluaXQoc3RkOjpzdHJpbmcgY29uc3QmIGZpbGVfcGF0aCkKLSAgICB7Ci0gICAgICAgIG5hcnJvd18gPSBmaWxlX3BhdGg7Ci0gICAgICAgIHdpZGVfLmNsZWFyKCk7Ci0gICAgICAgIGlzX3dpZGVfID0gZmFsc2U7Ci0gICAgfQotCi0gICAgdm9pZCBpbml0KHN0ZDo6d3N0cmluZyBjb25zdCYgZmlsZV9wYXRoKQotICAgIHsKLSAgICAgICAgbmFycm93Xy5jbGVhcigpOwotICAgICAgICB3aWRlXyA9IGZpbGVfcGF0aDsKLSAgICAgICAgaXNfd2lkZV8gPSB0cnVlOwotICAgIH0KLQotICAgIHN0ZDo6c3RyaW5nICAgbmFycm93XzsKLSAgICBzdGQ6OndzdHJpbmcgIHdpZGVfOwotICAgIGJvb2wgICAgICAgICAgaXNfd2lkZV87Ci19OwotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHBhdGgmIGxocywgY29uc3QgcGF0aCYgcmhzKQotewotICAgIHJldHVybiBsaHMuaXNfd2lkZSgpID8KLSAgICAgICAgcmhzLmlzX3dpZGUoKSAmJiBzdGQ6Ondjc2NtcChsaHMuY193c3RyKCksIHJocy5jX3dzdHIoKSkgPT0gMCA6Ci0gICAgICAgICFyaHMuaXNfd2lkZSgpICYmIHN0ZDo6c3RyY21wKGxocy5jX3N0cigpLCByaHMuY19zdHIoKSkgPT0gMDsKLX0KLQotI2Vsc2UgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fV0lERV9TVFJFQU1TIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotY2xhc3MgcGF0aCB7Ci1wdWJsaWM6Ci0gICAgcGF0aCgpIHsgfQotICAgIHBhdGgoY29uc3Qgc3RkOjpzdHJpbmcmIHApIDogcGF0aF8ocCkgeyB9Ci0gICAgcGF0aChjb25zdCBjaGFyKiBwKSA6IHBhdGhfKHApIHsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci0gICAgICAgIHBhdGgoY29uc3QgUGF0aCYgcCkgOiBwYXRoXyhwLmV4dGVybmFsX2ZpbGVfc3RyaW5nKCkpIHsgfQotICAgIHBhdGgoY29uc3QgcGF0aCYgcCkgOiBwYXRoXyhwLnBhdGhfKSB7IH0KLSAgICBwYXRoJiBvcGVyYXRvcj0oY29uc3QgcGF0aCYgb3RoZXIpIAotICAgIHsKLSAgICAgICAgcGF0aF8gPSBvdGhlci5wYXRoXzsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLSAgICBwYXRoJiBvcGVyYXRvcj0oY29uc3Qgc3RkOjpzdHJpbmcmIHApIAotICAgIHsKLSAgICAgICAgcGF0aF8gPSBwOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotICAgIHBhdGgmIG9wZXJhdG9yPShjb25zdCBjaGFyKiBwKSAKLSAgICB7Ci0gICAgICAgIHBhdGhfID0gcDsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotICAgICAgICBwYXRoJiBvcGVyYXRvcj0oY29uc3QgUGF0aCYgcCkKLSAgICAgICAgewotICAgICAgICAgICAgcGF0aF8gPSBwLmV4dGVybmFsX2ZpbGVfc3RyaW5nKCk7Ci0gICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIH0KLSAgICBib29sIGlzX3dpZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIGNvbnN0IGNoYXIqIGNfc3RyKCkgY29uc3QgeyByZXR1cm4gcGF0aF8uY19zdHIoKTsgfQotICAgIGNvbnN0IHdjaGFyX3QqIGNfd3N0cigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLXByaXZhdGU6Ci0gICAgc3RkOjpzdHJpbmcgcGF0aF87Ci19OwotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHBhdGgmIGxocywgY29uc3QgcGF0aCYgcmhzKQotewotICAgIHJldHVybiBzdGQ6OnN0cmNtcChsaHMuY19zdHIoKSwgcmhzLmNfc3RyKCkpID09IDAgOwotfQotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fV0lERV9TVFJFQU1TIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfUEFUSF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9wdXNoLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9wdXNoLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTE1MmQ2YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvcHVzaC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTQgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9QVVNIX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX1BVU0hfSFBQX0lOQ0xVREVEIAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgICAgICAgIAotIAotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+IC8vIE5ETkJPT1NUX01TVkMuCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jYXRlZ29yaWVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2F0ZWdvcmllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGFwdGVyL3JhbmdlX2FkYXB0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3dpZGVfc3RyZWFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9lbmFibGVfaWZfc3RyZWFtLmhwcD4gICAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvcGlwZWxpbmUuaHBwPiAgIAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvcHVzaF9wYXJhbXMuaHBwPiAgIAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvcmVzb2x2ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPiAgIAotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPiAKLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9paWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4KLQotLy8KLS8vIE1hY3JvOiBORE5CT09TVF9JT1NUUkVBTVNfREVGSU5FX1BVU0hfQ09OU1RSVUNUT1IobmFtZSwgbW9kZSwgY2gsIGhlbHBlcikuCi0vLyBEZXNjcmlwdGlvbjogRGVmaW5lcyBvdmVybG9hZHMgd2l0aCBuYW1lICduYW1lJyB3aGljaCBmb3J3YXJkIHRvIGEgZnVuY3Rpb24KLS8vICAgICAgJ2hlbHBlcicgd2hpY2ggdGFrZXMgYSBmaWx0ZXIgb3IgZGV2aWRlIGJ5IGNvbnN0IHJlZmVyZW5jZS4KLS8vCi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERUZJTkVfUFVTSF9DT05TVFJVQ1RPUihuYW1lLCBtb2RlLCBjaCwgaGVscGVyKSBcCi0gICAgTkROQk9PU1RfSU9TVFJFQU1TX0RFRklORV9QVVNIX0lNUEwobmFtZSwgbW9kZSwgY2gsIGhlbHBlciwgMCwgPykgXAotICAgIC8qKi8KLQotLy8KLS8vIE1hY3JvOiBORE5CT09TVF9JT1NUUkVBTVNfREVGSU5FX1BVU0gobmFtZSwgbW9kZSwgY2gsIGhlbHBlcikuCi0vLyBEZXNjcmlwdGlvbjogRGVmaW5lcyBjb25zdHJ1Y3RvcnMgd2hpY2ggZm9yd2FyZCB0byBhIGZ1bmN0aW9uCi0vLyAgICAgICdoZWxwZXInIHdoaWNoIHRha2VzIGEgZmlsdGVyIG9yIGRldmljZSBieSBjb25zdCByZWZlcmVuY2UuCi0vLwotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVGSU5FX1BVU0gobmFtZSwgbW9kZSwgY2gsIGhlbHBlcikgXAotICAgIE5ETkJPT1NUX0lPU1RSRUFNU19ERUZJTkVfUFVTSF9JTVBMKG5hbWUsIG1vZGUsIGNoLCBoZWxwZXIsIDEsIHZvaWQpIFwKLSAgICAvKiovCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIE5ETkJPT1NUX0lPU1RSRUFNU19ERUZJTkVfUFVTSF9JTVBMLS0tLS0tLS0tLS8vCi0gICAgICAgICAgCi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19BREFQVF9TVFJFQU0obW9kZSwgY2gsIGFyZywgaGVscGVyLCBoYXNfcmV0dXJuKSBcCi0gICAgdGhpcy0+aGVscGVyKCA6Om5kbmJvb3N0Ojppb3N0cmVhbXM6OmRldGFpbDo6cmVzb2x2ZTxtb2RlLCBjaD4oYXJnKSBcCi0gICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfUFVTSF9BUkdTKCkgKTsgXAotICAgIC8qKi8KLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApICYmIFwKLSAgICAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg2MDApIFwKLSAgICAvKiovCi0jIGlmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fU1RSRUFNX1RFTVBMQVRFUwotIyAgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERUZJTkVfUFVTSF9JTVBMKG5hbWUsIG1vZGUsIGNoLCBoZWxwZXIsIGhhc19yZXR1cm4sIHJlc3VsdCkgXAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJUeXBlLCB0eXBlbmFtZSBUcmFpdHNUeXBlPiBcCi0gICAgTkROQk9PU1RfUFBfSUlGKGhhc19yZXR1cm4sIHJlc3VsdCwgZXhwbGljaXQpIFwKLSAgICBuYW1lKDo6c3RkOjpiYXNpY19zdHJlYW1idWY8Q2hhclR5cGUsIFRyYWl0c1R5cGU+JiBzYiBORE5CT09TVF9JT1NUUkVBTVNfUFVTSF9QQVJBTVMoKSkgXAotICAgIHsgTkROQk9PU1RfSU9TVFJFQU1TX0FEQVBUX1NUUkVBTShtb2RlLCBjaCwgc2IsIGhlbHBlciwgaGFzX3JldHVybik7IH0gXAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJUeXBlLCB0eXBlbmFtZSBUcmFpdHNUeXBlPiBcCi0gICAgTkROQk9PU1RfUFBfSUlGKGhhc19yZXR1cm4sIHJlc3VsdCwgZXhwbGljaXQpIFwKLSAgICBuYW1lKDo6c3RkOjpiYXNpY19pc3RyZWFtPENoYXJUeXBlLCBUcmFpdHNUeXBlPiYgaXMgTkROQk9PU1RfSU9TVFJFQU1TX1BVU0hfUEFSQU1TKCkpIFwKLSAgICB7IE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKCFpc19jb252ZXJ0aWJsZTxtb2RlLCBvdXRwdXQ+Ojp2YWx1ZSkpOyBcCi0gICAgICBORE5CT09TVF9JT1NUUkVBTVNfQURBUFRfU1RSRUFNKG1vZGUsIGNoLCBpcywgaGVscGVyLCBoYXNfcmV0dXJuKTsgfSBcCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclR5cGUsIHR5cGVuYW1lIFRyYWl0c1R5cGU+IFwKLSAgICBORE5CT09TVF9QUF9JSUYoaGFzX3JldHVybiwgcmVzdWx0LCBleHBsaWNpdCkgXAotICAgIG5hbWUoOjpzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclR5cGUsIFRyYWl0c1R5cGU+JiBvcyBORE5CT09TVF9JT1NUUkVBTVNfUFVTSF9QQVJBTVMoKSkgXAotICAgIHsgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoIWlzX2NvbnZlcnRpYmxlPG1vZGUsIGlucHV0Pjo6dmFsdWUpKTsgXAotICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0FEQVBUX1NUUkVBTShtb2RlLCBjaCwgb3MsIGhlbHBlciwgaGFzX3JldHVybik7IH0gXAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJUeXBlLCB0eXBlbmFtZSBUcmFpdHNUeXBlPiBcCi0gICAgTkROQk9PU1RfUFBfSUlGKGhhc19yZXR1cm4sIHJlc3VsdCwgZXhwbGljaXQpIFwKLSAgICBuYW1lKDo6c3RkOjpiYXNpY19pb3N0cmVhbTxDaGFyVHlwZSwgVHJhaXRzVHlwZT4mIGlvIE5ETkJPT1NUX0lPU1RSRUFNU19QVVNIX1BBUkFNUygpKSBcCi0gICAgeyBORE5CT09TVF9JT1NUUkVBTVNfQURBUFRfU1RSRUFNKG1vZGUsIGNoLCBpbywgaGVscGVyLCBoYXNfcmV0dXJuKTsgfSBcCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgSXRlcj4gXAotICAgIE5ETkJPT1NUX1BQX0lJRihoYXNfcmV0dXJuLCByZXN1bHQsIGV4cGxpY2l0KSBcCi0gICAgbmFtZShjb25zdCBpdGVyYXRvcl9yYW5nZTxJdGVyPiYgcm5nIE5ETkJPT1NUX0lPU1RSRUFNU19QVVNIX1BBUkFNUygpKSBcCi0gICAgeyBORE5CT09TVF9QUF9FWFBSX0lGKGhhc19yZXR1cm4sIHJldHVybikgXAotICAgIHRoaXMtPmhlbHBlciggOjpuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OnJhbmdlX2FkYXB0ZXI8IFwKLSAgICAgICAgICAgICAgICAgICAgICBtb2RlLCBpdGVyYXRvcl9yYW5nZTxJdGVyPiBcCi0gICAgICAgICAgICAgICAgICA+KHJuZykgXAotICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX1BVU0hfQVJHUygpICk7IH0gXAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBpcGVsaW5lLCB0eXBlbmFtZSBDb25jZXB0PiBcCi0gICAgTkROQk9PU1RfUFBfSUlGKGhhc19yZXR1cm4sIHJlc3VsdCwgZXhwbGljaXQpIFwKLSAgICBuYW1lKGNvbnN0IDo6bmRuYm9vc3Q6Omlvc3RyZWFtczo6cGlwZWxpbmU8UGlwZWxpbmUsIENvbmNlcHQ+JiBwKSBcCi0gICAgeyBwLnB1c2goKnRoaXMpOyB9IFwKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBcCi0gICAgTkROQk9PU1RfUFBfSUlGKGhhc19yZXR1cm4sIHJlc3VsdCwgZXhwbGljaXQpIFwKLSAgICBuYW1lKGNvbnN0IFQmIHQgTkROQk9PU1RfSU9TVFJFQU1TX1BVU0hfUEFSQU1TKCkgTkROQk9PU1RfSU9TVFJFQU1TX0RJU0FCTEVfSUZfU1RSRUFNKFQpKSBcCi0gICAgeyB0aGlzLT5oZWxwZXIoIDo6bmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpyZXNvbHZlPG1vZGUsIGNoPih0KSBcCi0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19QVVNIX0FSR1MoKSApOyB9IFwKLSAgICAvKiovCi0jIGVsc2UgLy8gIyBpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMKLSMgIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVGSU5FX1BVU0hfSU1QTChuYW1lLCBtb2RlLCBjaCwgaGVscGVyLCBoYXNfcmV0dXJuLCByZXN1bHQpIFwKLSAgICBORE5CT09TVF9QUF9JRihoYXNfcmV0dXJuLCByZXN1bHQsIGV4cGxpY2l0KSBcCi0gICAgbmFtZSg6OnN0ZDo6c3RyZWFtYnVmJiBzYiBORE5CT09TVF9JT1NUUkVBTVNfUFVTSF9QQVJBTVMoKSkgXAotICAgIHsgTkROQk9PU1RfSU9TVFJFQU1TX0FEQVBUX1NUUkVBTShtb2RlLCBjaCwgc2IsIGhlbHBlciwgaGFzX3JldHVybik7IH0gXAotICAgIE5ETkJPT1NUX1BQX0lGKGhhc19yZXR1cm4sIHJlc3VsdCwgZXhwbGljaXQpIFwKLSAgICBuYW1lKDo6c3RkOjppc3RyZWFtJiBpcyBORE5CT09TVF9JT1NUUkVBTVNfUFVTSF9QQVJBTVMoKSkgXAotICAgIHsgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoIWlzX2NvbnZlcnRpYmxlPG1vZGUsIG91dHB1dD46OnZhbHVlKSk7IFwKLSAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19BREFQVF9TVFJFQU0obW9kZSwgY2gsIGlzLCBoZWxwZXIsIGhhc19yZXR1cm4pOyB9IFwKLSAgICBORE5CT09TVF9QUF9JRihoYXNfcmV0dXJuLCByZXN1bHQsIGV4cGxpY2l0KSBcCi0gICAgbmFtZSg6OnN0ZDo6b3N0cmVhbSYgb3MgTkROQk9PU1RfSU9TVFJFQU1TX1BVU0hfUEFSQU1TKCkpIFwKLSAgICB7IE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKCFpc19jb252ZXJ0aWJsZTxtb2RlLCBpbnB1dD46OnZhbHVlKSk7IFwKLSAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19BREFQVF9TVFJFQU0obW9kZSwgY2gsIG9zLCBoZWxwZXIsIGhhc19yZXR1cm4pOyB9IFwKLSAgICBORE5CT09TVF9QUF9JRihoYXNfcmV0dXJuLCByZXN1bHQsIGV4cGxpY2l0KSBcCi0gICAgbmFtZSg6OnN0ZDo6aW9zdHJlYW0mIGlvIE5ETkJPT1NUX0lPU1RSRUFNU19QVVNIX1BBUkFNUygpKSBcCi0gICAgeyBORE5CT09TVF9JT1NUUkVBTVNfQURBUFRfU1RSRUFNKG1vZGUsIGNoLCBpbywgaGVscGVyLCBoYXNfcmV0dXJuKTsgfSBcCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgSXRlcj4gXAotICAgIE5ETkJPT1NUX1BQX0lGKGhhc19yZXR1cm4sIHJlc3VsdCwgZXhwbGljaXQpIFwKLSAgICBuYW1lKGNvbnN0IGl0ZXJhdG9yX3JhbmdlPEl0ZXI+JiBybmcgTkROQk9PU1RfSU9TVFJFQU1TX1BVU0hfUEFSQU1TKCkpIFwKLSAgICB7IE5ETkJPT1NUX1BQX0VYUFJfSUYoaGFzX3JldHVybiwgcmV0dXJuKSBcCi0gICAgdGhpcy0+aGVscGVyKCA6Om5kbmJvb3N0Ojppb3N0cmVhbXM6OmRldGFpbDo6cmFuZ2VfYWRhcHRlcjwgXAotICAgICAgICAgICAgICAgICAgICAgIG1vZGUsIGl0ZXJhdG9yX3JhbmdlPEl0ZXI+IFwKLSAgICAgICAgICAgICAgICAgID4ocm5nKSBcCi0gICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfUFVTSF9BUkdTKCkgKTsgfSBcCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUGlwZWxpbmUsIHR5cGVuYW1lIENvbmNlcHQ+IFwKLSAgICBORE5CT09TVF9QUF9JRihoYXNfcmV0dXJuLCByZXN1bHQsIGV4cGxpY2l0KSBcCi0gICAgbmFtZShjb25zdCA6Om5kbmJvb3N0Ojppb3N0cmVhbXM6OnBpcGVsaW5lPFBpcGVsaW5lLCBDb25jZXB0PiYgcCkgXAotICAgIHsgcC5wdXNoKCp0aGlzKTsgfSBcCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gXAotICAgIE5ETkJPT1NUX1BQX0VYUFJfSUYoaGFzX3JldHVybiwgcmVzdWx0KSBcCi0gICAgbmFtZShjb25zdCBUJiB0IE5ETkJPT1NUX0lPU1RSRUFNU19QVVNIX1BBUkFNUygpIE5ETkJPT1NUX0lPU1RSRUFNU19ESVNBQkxFX0lGX1NUUkVBTShUKSkgXAotICAgIHsgdGhpcy0+aGVscGVyKCA6Om5kbmJvb3N0Ojppb3N0cmVhbXM6OmRldGFpbDo6cmVzb2x2ZTxtb2RlLCBjaD4odCkgXAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfUFVTSF9BUkdTKCkgKTsgfSBcCi0gICAgLyoqLwotIyBlbmRpZiAvLyAjIGlmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fU1RSRUFNX1RFTVBMQVRFUwotI2Vsc2UgLy8gI2lmIFZDNiwgVkM3LjAsIEJvcmxhbmQgNS54Ci0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVGSU5FX1BVU0hfSU1QTChuYW1lLCBtb2RlLCBjaCwgaGVscGVyLCBoYXNfcmV0dXJuLCByZXN1bHQpIFwKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBcCi0gICAgdm9pZCBORE5CT09TVF9QUF9DQVQobmFtZSwgX21zdmNfaW1wbCkgXAotICAgICggOjpuZG5ib29zdDo6bXBsOjp0cnVlXywgY29uc3QgVCYgdCBORE5CT09TVF9JT1NUUkVBTVNfUFVTSF9QQVJBTVMoKSApIFwKLSAgICB7IHQucHVzaCgqdGhpcyk7IH0gXAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFwKLSAgICB2b2lkIE5ETkJPT1NUX1BQX0NBVChuYW1lLCBfbXN2Y19pbXBsKSBcCi0gICAgKCA6Om5kbmJvb3N0OjptcGw6OmZhbHNlXywgY29uc3QgVCYgdCBORE5CT09TVF9JT1NUUkVBTVNfUFVTSF9QQVJBTVMoKSApIFwKLSAgICB7IHRoaXMtPmhlbHBlciggOjpuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OnJlc29sdmU8bW9kZSwgY2g+KHQpIFwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX1BVU0hfQVJHUygpICk7IH0gXAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFwKLSAgICBORE5CT09TVF9QUF9JRihoYXNfcmV0dXJuLCByZXN1bHQsIGV4cGxpY2l0KSBcCi0gICAgbmFtZShjb25zdCBUJiB0IE5ETkJPT1NUX0lPU1RSRUFNU19QVVNIX1BBUkFNUygpKSBcCi0gICAgeyBcCi0gICAgICAgIHRoaXMtPk5ETkJPT1NUX1BQX0NBVChuYW1lLCBfbXN2Y19pbXBsKSBcCi0gICAgICAgICAgICAgICggOjpuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OmlzX3BpcGVsaW5lPFQ+KCksIFwKLSAgICAgICAgICAgICAgICB0IE5ETkJPT1NUX0lPU1RSRUFNU19QVVNIX0FSR1MoKSApOyBcCi0gICAgfSBcCi0gICAgLyoqLwotI2VuZGlmIC8vICNpZiBWQzYsIFZDNy4wLCBCb3JsYW5kIDUueAotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX1BVU0hfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvcHVzaF9wYXJhbXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3B1c2hfcGFyYW1zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmJiMjE0Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvcHVzaF9wYXJhbXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9QVVNIX1BBUkFNU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9QVVNIX1BBUkFNU19IUFBfSU5DTFVERUQgCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZiAgICAgICAgICAgICAgICAgICAgCi0KLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX1BVU0hfUEFSQU1TKCkgXAotICAgICwgc3RkOjpzdHJlYW1zaXplIGJ1ZmZlcl9zaXplID0gLTEgLCBzdGQ6OnN0cmVhbXNpemUgcGJhY2tfc2l6ZSA9IC0xIFwKLSAgICAvKiovCi0KLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX1BVU0hfQVJHUygpICwgYnVmZmVyX3NpemUsIHBiYWNrX3NpemUgICAgIAotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX1BVU0hfUEFSQU1TX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3Jlc29sdmUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3Jlc29sdmUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZDBmYTU2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9yZXNvbHZlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzNSArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX1JFU09MVkVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfUkVTT0xWRV9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+IC8vIHBhcnRpYWwgc3BlYywgcHV0IHNpemVfdCBpbiBzdGQuCi0jaW5jbHVkZSA8Y3N0ZGRlZj4gICAgICAgICAgLy8gc3RkOjpzaXplX3QuCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL2lzX2luY3JlbWVudGFibGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvbW9kZV9hZGFwdGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvb3V0cHV0X2l0ZXJhdG9yX2FkYXB0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRhcHRlci9yYW5nZV9hZGFwdGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9nY2MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL292ZXJsb2FkX3Jlc29sdXRpb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3dpZGVfc3RyZWFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9lbmFibGVfaWZfc3RyZWFtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lzX2RlcmVmZXJlbmNlYWJsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pc19pdGVyYXRvcl9yYW5nZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zZWxlY3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvd3JhcF91bndyYXAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXZpY2UvYXJyYXkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4gLy8gdHJ1ZV8uCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKQotIyBpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9pdGVyYXRvcl9yYW5nZS5ocHA+Ci0jZW5kaWYgLy8gI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHA+Ci0KLS8vIE11c3QgY29tZSBsYXN0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2Rpc2FibGVfd2FybmluZ3MuaHBwPiAvLyBWQzcuMSBDNDIyNC4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgcmVzb2x2ZS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19CUk9LRU5fT1ZFUkxPQURfUkVTT0xVVElPTiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVD4KLXN0cnVjdCByZXNvbHZlX3RyYWl0cyB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICAgICAgICAgIG1wbDo6aWZfPAotICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmlzX2luY3JlbWVudGFibGU8VD4sCi0gICAgICAgICAgICAgICAgb3V0cHV0X2l0ZXJhdG9yX2FkYXB0ZXI8TW9kZSwgQ2gsIFQ+LAotICAgICAgICAgICAgICAgIGNvbnN0IFQmCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi0jIGlmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fU1RSRUFNX1RFTVBMQVRFUyAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVD4KLXR5cGVuYW1lIHJlc29sdmVfdHJhaXRzPE1vZGUsIENoLCBUPjo6dHlwZQotcmVzb2x2ZSggY29uc3QgVCYgdCAKLSAgICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19ESVNBQkxFX0lGX1NUUkVBTShUKQotCi0gICAgICAgICAvLyBJIHN1c3BlY3QgdGhhdCB0aGUgY29tcGlsZXJzIHdoaWNoIHJlcXVpcmUgdGhpcyB3b3JrYXJvdW5kIG1heQotICAgICAgICAgLy8gYmUgY29ycmVjdCwgYnV0IEknbSBub3Qgc3VyZSB3aHkgOigKLSAgICAgICAgICNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OLCBORE5CT09TVF9URVNURURfQVQoODEwKSkgfHxcCi0gICAgICAgICAgICAgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCBORE5CT09TVF9URVNURURfQVQoMHgzMjA1KSkgfHwgXAotICAgICAgICAgICAgIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfSU9TVFJFQU1TX0dDQywgTkROQk9PU1RfVEVTVEVEX0FUKDQwMCkpIHx8XAotICAgICAgICAgICAgIE5ETkJPT1NUX1dPUktBUk9VTkQoX19JQk1DUFBfXywgTkROQk9PU1RfVEVTVEVEX0FUKDExMTApKQotICAgICAgICAgICAgIC8qKi8KLSAgICAgICAgICwgdHlwZW5hbWUgZGlzYWJsZV9pZjwgaXNfaXRlcmF0b3JfcmFuZ2U8VD4gPjo6dHlwZSogPSAwCi0gICAgICAgICAjZW5kaWYKLSAgICAgICAgICkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc29sdmVfdHJhaXRzPE1vZGUsIENoLCBUPjo6dHlwZSByZXR1cm5fdHlwZTsKLSAgICByZXR1cm4gcmV0dXJuX3R5cGUodCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUcj4KLW1vZGVfYWRhcHRlcjwgTW9kZSwgc3RkOjpiYXNpY19zdHJlYW1idWY8Q2gsIFRyPiA+IAotcmVzb2x2ZShzdGQ6OmJhc2ljX3N0cmVhbWJ1ZjxDaCwgVHI+JiBzYikKLXsgcmV0dXJuIG1vZGVfYWRhcHRlcjwgTW9kZSwgc3RkOjpiYXNpY19zdHJlYW1idWY8Q2gsIFRyPiA+KHdyYXAoc2IpKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVHI+Ci1tb2RlX2FkYXB0ZXI8IE1vZGUsIHN0ZDo6YmFzaWNfaXN0cmVhbTxDaCwgVHI+ID4gCi1yZXNvbHZlKHN0ZDo6YmFzaWNfaXN0cmVhbTxDaCwgVHI+JiBpcykKLXsgcmV0dXJuIG1vZGVfYWRhcHRlcjwgTW9kZSwgc3RkOjpiYXNpY19pc3RyZWFtPENoLCBUcj4gPih3cmFwKGlzKSk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2gsIHR5cGVuYW1lIFRyPgotbW9kZV9hZGFwdGVyPCBNb2RlLCBzdGQ6OmJhc2ljX29zdHJlYW08Q2gsIFRyPiA+IAotcmVzb2x2ZShzdGQ6OmJhc2ljX29zdHJlYW08Q2gsIFRyPiYgb3MpCi17IHJldHVybiBtb2RlX2FkYXB0ZXI8IE1vZGUsIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaCwgVHI+ID4od3JhcChvcykpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUcj4KLW1vZGVfYWRhcHRlcjwgTW9kZSwgc3RkOjpiYXNpY19pb3N0cmVhbTxDaCwgVHI+ID4gCi1yZXNvbHZlKHN0ZDo6YmFzaWNfaW9zdHJlYW08Q2gsIFRyPiYgaW8pCi17IHJldHVybiBtb2RlX2FkYXB0ZXI8IE1vZGUsIHN0ZDo6YmFzaWNfaW9zdHJlYW08Q2gsIFRyPiA+KHdyYXAoaW8pKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaCwgc3RkOjpzaXplX3QgTj4KLWFycmF5X2FkYXB0ZXI8TW9kZSwgQ2g+IHJlc29sdmUoQ2ggKCZhcnJheSlbTl0pCi17IHJldHVybiBhcnJheV9hZGFwdGVyPE1vZGUsIENoPihhcnJheSk7IH0KLQotIyAgaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaCwgdHlwZW5hbWUgSXRlcj4KLSAgICByYW5nZV9hZGFwdGVyPCBNb2RlLCBuZG5ib29zdDo6aXRlcmF0b3JfcmFuZ2U8SXRlcj4gPiAKLSAgICByZXNvbHZlKGNvbnN0IG5kbmJvb3N0OjppdGVyYXRvcl9yYW5nZTxJdGVyPiYgcm5nKQotICAgIHsgcmV0dXJuIHJhbmdlX2FkYXB0ZXI8IE1vZGUsIG5kbmJvb3N0OjppdGVyYXRvcl9yYW5nZTxJdGVyPiA+KHJuZyk7IH0KLSMgIGVuZGlmIC8vICNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApCi0KLSMgZWxzZSAvLyAjIGlmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fU1RSRUFNX1RFTVBMQVRFUyAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUPgotdHlwZW5hbWUgcmVzb2x2ZV90cmFpdHM8TW9kZSwgQ2gsIFQ+Ojp0eXBlCi1yZXNvbHZlKCBjb25zdCBUJiB0IAotICAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0RJU0FCTEVfSUZfU1RSRUFNKFQpCi0gICAgICAgICAjaWYgZGVmaW5lZChfX0dOVUNfXykKLSAgICAgICAgICwgdHlwZW5hbWUgZGlzYWJsZV9pZjwgaXNfaXRlcmF0b3JfcmFuZ2U8VD4gPjo6dHlwZSogPSAwCi0gICAgICAgICAjZW5kaWYKLSAgICAgICAgICkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc29sdmVfdHJhaXRzPE1vZGUsIENoLCBUPjo6dHlwZSByZXR1cm5fdHlwZTsKLSAgICByZXR1cm4gcmV0dXJuX3R5cGUodCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIENoPgotbW9kZV9hZGFwdGVyPE1vZGUsIHN0ZDo6c3RyZWFtYnVmPiAKLXJlc29sdmUoc3RkOjpzdHJlYW1idWYmIHNiKSAKLXsgcmV0dXJuIG1vZGVfYWRhcHRlcjxNb2RlLCBzdGQ6OnN0cmVhbWJ1Zj4od3JhcChzYikpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIENoPgotbW9kZV9hZGFwdGVyPE1vZGUsIHN0ZDo6aXN0cmVhbT4gCi1yZXNvbHZlKHN0ZDo6aXN0cmVhbSYgaXMpCi17IHJldHVybiBtb2RlX2FkYXB0ZXI8TW9kZSwgc3RkOjppc3RyZWFtPih3cmFwKGlzKSk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2g+Ci1tb2RlX2FkYXB0ZXI8TW9kZSwgc3RkOjpvc3RyZWFtPiAKLXJlc29sdmUoc3RkOjpvc3RyZWFtJiBvcykKLXsgcmV0dXJuIG1vZGVfYWRhcHRlcjxNb2RlLCBzdGQ6Om9zdHJlYW0+KHdyYXAob3MpKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaD4KLW1vZGVfYWRhcHRlcjxNb2RlLCBzdGQ6Omlvc3RyZWFtPiAKLXJlc29sdmUoc3RkOjppb3N0cmVhbSYgaW8pCi17IHJldHVybiBtb2RlX2FkYXB0ZXI8TW9kZSwgc3RkOjppb3N0cmVhbT4od3JhcChpbykpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIENoLCBzdGQ6OnNpemVfdCBOPgotYXJyYXlfYWRhcHRlcjxNb2RlLCBDaD4gcmVzb2x2ZShDaCAoJmFycmF5KVtOXSkKLXsgcmV0dXJuIGFycmF5X2FkYXB0ZXI8TW9kZSwgQ2g+KGFycmF5KTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaCwgdHlwZW5hbWUgSXRlcj4KLXJhbmdlX2FkYXB0ZXI8IE1vZGUsIG5kbmJvb3N0OjppdGVyYXRvcl9yYW5nZTxJdGVyPiA+IAotcmVzb2x2ZShjb25zdCBuZG5ib29zdDo6aXRlcmF0b3JfcmFuZ2U8SXRlcj4mIHJuZykKLXsgcmV0dXJuIHJhbmdlX2FkYXB0ZXI8IE1vZGUsIG5kbmJvb3N0OjppdGVyYXRvcl9yYW5nZTxJdGVyPiA+KHJuZyk7IH0KLQotIyBlbmRpZiAvLyAjIGlmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fU1RSRUFNX1RFTVBMQVRFUyAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSNlbHNlIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0JST0tFTl9PVkVSTE9BRF9SRVNPTFVUSU9OIC8vLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUPgotc3RydWN0IHJlc29sdmVfdHJhaXRzIHsKLSAgICAvLyBOb3RlOiB0ZXN0IGZvciBpc19pdGVyYXRvcl9yYW5nZSBtdXN0IGNvbWUgYmVmb3JlIHRlc3QgZm9yIG91dHB1dAotICAgIC8vIGl0ZXJhdG9yLgotICAgIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgICAgICAgICBpb3N0cmVhbXM6OnNlbGVjdDwgIC8vIERpc2FtYmlndWF0aW9uIGZvciBUcnU2NC4KLSAgICAgICAgICAgICAgICBpc19zdGRfaW88VD4sCi0gICAgICAgICAgICAgICAgbW9kZV9hZGFwdGVyPE1vZGUsIFQ+LAotICAgICAgICAgICAgICAgIGlzX2l0ZXJhdG9yX3JhbmdlPFQ+LAotICAgICAgICAgICAgICAgIHJhbmdlX2FkYXB0ZXI8TW9kZSwgVD4sCi0gICAgICAgICAgICAgICAgaXNfZGVyZWZlcmVuY2VhYmxlPFQ+LAotICAgICAgICAgICAgICAgIG91dHB1dF9pdGVyYXRvcl9hZGFwdGVyPE1vZGUsIENoLCBUPiwKLSAgICAgICAgICAgICAgICBpc19hcnJheTxUPiwKLSAgICAgICAgICAgICAgICBhcnJheV9hZGFwdGVyPE1vZGUsIFQ+LAotICAgICAgICAgICAgICAgIGVsc2VfLAotICAgICAgICAgICAgICAgICNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg2MDApCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IFQmCi0gICAgICAgICAgICAgICAgI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAgICNlbmRpZgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2gsIHR5cGVuYW1lIFQ+Ci10eXBlbmFtZSByZXNvbHZlX3RyYWl0czxNb2RlLCBDaCwgVD46OnR5cGUgCi1yZXNvbHZlKGNvbnN0IFQmIHQsIG1wbDo6dHJ1ZV8pCi17ICAgLy8gQmFkIG92ZXJsb2FkIHJlc29sdXRpb24uCi0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNvbHZlX3RyYWl0czxNb2RlLCBDaCwgVD46OnR5cGUgcmV0dXJuX3R5cGU7Ci0gICAgcmV0dXJuIHJldHVybl90eXBlKHdyYXAoY29uc3RfY2FzdDxUJj4odCkpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2gsIHR5cGVuYW1lIFQ+Ci10eXBlbmFtZSByZXNvbHZlX3RyYWl0czxNb2RlLCBDaCwgVD46OnR5cGUgCi1yZXNvbHZlKGNvbnN0IFQmIHQsIG1wbDo6ZmFsc2VfKQoteyAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc29sdmVfdHJhaXRzPE1vZGUsIENoLCBUPjo6dHlwZSByZXR1cm5fdHlwZTsKLSAgICByZXR1cm4gcmV0dXJuX3R5cGUodCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUPgotdHlwZW5hbWUgcmVzb2x2ZV90cmFpdHM8TW9kZSwgQ2gsIFQ+Ojp0eXBlIAotcmVzb2x2ZShjb25zdCBUJiB0IE5ETkJPT1NUX0lPU1RSRUFNU19ESVNBQkxFX0lGX1NUUkVBTShUKSkKLXsgcmV0dXJuIHJlc29sdmU8TW9kZSwgQ2g+KHQsIGlzX3N0ZF9pbzxUPigpKTsgfQotCi0jIGlmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPCAweDYwMCkgJiYgXAotICAgICAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSAmJiBcCi0gICAgICFkZWZpbmVkKF9fR05VQ19fKSAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVD4KLXR5cGVuYW1lIHJlc29sdmVfdHJhaXRzPE1vZGUsIENoLCBUPjo6dHlwZSAKLXJlc29sdmUoVCYgdCwgbXBsOjp0cnVlXykKLXsgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNvbHZlX3RyYWl0czxNb2RlLCBDaCwgVD46OnR5cGUgcmV0dXJuX3R5cGU7Ci0gICAgcmV0dXJuIHJldHVybl90eXBlKHdyYXAodCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVD4KLXR5cGVuYW1lIHJlc29sdmVfdHJhaXRzPE1vZGUsIENoLCBUPjo6dHlwZSAKLXJlc29sdmUoVCYgdCwgbXBsOjpmYWxzZV8pCi17IAotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzb2x2ZV90cmFpdHM8TW9kZSwgQ2gsIFQ+Ojp0eXBlIHJldHVybl90eXBlOwotICAgIHJldHVybiByZXR1cm5fdHlwZSh0KTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2gsIHR5cGVuYW1lIFQ+Ci10eXBlbmFtZSByZXNvbHZlX3RyYWl0czxNb2RlLCBDaCwgVD46OnR5cGUgCi1yZXNvbHZlKFQmIHQgTkROQk9PU1RfSU9TVFJFQU1TX0VOQUJMRV9JRl9TVFJFQU0oVCkpCi17IHJldHVybiByZXNvbHZlPE1vZGUsIENoPih0LCBpc19zdGRfaW88VD4oKSk7IH0KLQotIyBlbmRpZiAvLyBCb3JsYW5kIDUueCwgVkM2LTcuMCBvciBHQ0MgMi45eCAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19CUk9LRU5fT1ZFUkxPQURfUkVTT0xVVElPTiAvLy0tLS0tLS0tLS0tLS0tLS8vCi0KLX0gfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGRldGFpbCwgaW9zdHJlYW1zLCBib29zdC4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2VuYWJsZV93YXJuaW5ncy5ocHA+IC8vIFZDNy4xIDQyMjQuCi0KLSNlbmRpZiAvLyBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX1JFU09MVkVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvcmVzdHJpY3RfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvcmVzdHJpY3RfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzMzA0N2EuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3Jlc3RyaWN0X2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDgyICswLDAgQEAKLS8qCi0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuKFNlZSBhY2NvbXBhbnlpbmcgCi0gKiBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0gKiAKLSAqIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotICogRmlsZTogICAgICAgIG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvcmVzdHJpY3RfaW1wbC5ocHAKLSAqIERhdGU6ICAgICAgICBTdW4gSmFuIDA2IDEyOjU3OjMwIE1TVCAyMDA4Ci0gKiBDb3B5cmlnaHQ6ICAgMjAwNy0yMDA4IENvZGVSYWdlLCBMTEMKLSAqIEF1dGhvcjogICAgICBKb25hdGhhbiBUdXJrYW5pcwotICogQ29udGFjdDogICAgIHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20KLSAqCi0gKiBJZiBpbmNsdWRlZCB3aXRoIHRoZSBtYWNybyBORE5CT09TVF9JT1NUUkVBTVNfUkVTVFJJQ1QgdW5kZWZpbmVkLCBkZWZpbmVzIHRoZSAKLSAqIGNsYXNzIHRlbXBsYXRlIG5kbmJvb3N0Ojppb3N0cmVhbXM6OnJlc3RyaWN0aW9uLiBJZiBpbmNsdWRlZCB3aXRoIHRoZSBtYWNybwotICogTkROQk9PU1RfSU9TVFJFQU1TX1JFU1RSSUNUIGRlZmluZWQgYXMgYW4gaWRlbnRpZmllciwgZGVmaW5lcyB0aGUgb3ZlcmxvYWRlZAotICogZnVuY3Rpb24gdGVtcGxhdGUgbmRuYm9vc3Q6Omlvc3RyZWFtczo6TkROQk9PU1RfSU9TVFJFQU1TX1JFU1RSSUNULCBhbmQgb2JqZWN0IAotICogZ2VuZXJhdG9yIGZvciBuZG5ib29zdDo6aW9zdHJlYW1zOjpyZXN0cmljdGlvbi4KLSAqCi0gKiBUaGlzIGRlc2lnbiBhbGxvd3MgPG5kbmJvb3N0L2lvc3RyZWFtcy9yZXN0cmljdC5ocHA+IGFuZCAKLSAqIDxuZG5ib29zdC9pb3N0cmVhbXMvc2xpY2UuaHBwPiB0byBzaGFyZSBhbiBpbXBsZW1lbnRhdGlvbi4KLSAqLwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfSU9TVFJFQU1TX1JFU1RSSUNUX0lNUExfSFBQX0lOQ0xVREVEKSAmJiBcCi0gICAgIWRlZmluZWQoTkROQk9PU1RfSU9TVFJFQU1TX1JFU1RSSUNUKQotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX1JFU1RSSUNUX0lNUExfSFBQX0lOQ0xVREVECi0gICAgICAgICAgICAgICAgICAgIAotLy8tLS0tLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiByZXN0cmljdGlvbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotIyBpbmNsdWRlIDxhbGdvcml0aG0+ICAgICAgICAgIC8vIG1pbi4KLSMgaW5jbHVkZSA8dXRpbGl0eT4gICAgICAgICAgICAvLyBwYWlyLgotIyBpbmNsdWRlIDxuZG5ib29zdC9jc3RkaW50LmhwcD4gIC8vIGludG1heF90LgotIyBpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgIC8vIERFRFVDRURfVFlQRU5BTUUuCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jYXRlZ29yaWVzLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NoYXJfdHJhaXRzLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGFwdGVyL2RldmljZV9hZGFwdGVyLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGFwdGVyL2ZpbHRlcl9hZGFwdGVyLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jYWxsX3RyYWl0cy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZW5hYmxlX2lmX3N0cmVhbS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZXJyb3IuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvcy5ocHA+ICAgICAvLyBmYWlsdXJlLgotIyBpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3NlbGVjdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9vcGVyYXRpb25zLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3NraXAuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvdHJhaXRzLmhwcD4gICAgICAgICAvLyBtb2RlX29mLCBpc19kaXJlY3QuCi0jIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4KLQotIyBpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9kaXNhYmxlX3dhcm5pbmdzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLwotLy8gVGVtcGxhdGUgbmFtZTogcmVzdHJpY3RlZF9pbmRpcmVjdF9kZXZpY2UuCi0vLyBEZXNjcmlwdGlvbjogUHJvdmlkZXMgYW4gcmVzdHJpY3RlZCB2aWV3IG9mIGFuIGluZGlyZWN0IERldmljZS4KLS8vIFRlbXBsYXRlIHBhcmFtZXRlcnM6Ci0vLyAgICAgIERldmljZSAtIEFuIGluZGlyZWN0IG1vZGVsIG9mIERldmljZSB0aGF0IG1vZGVscyBlaXRoZXIgU291cmNlIG9yCi0vLyAgICAgICAgICBTZWVrYWJsZURldmljZS4KLS8vCi10ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2U+Ci1jbGFzcyByZXN0cmljdGVkX2luZGlyZWN0X2RldmljZSA6IHB1YmxpYyBkZXZpY2VfYWRhcHRlcjxEZXZpY2U+IHsKLXByaXZhdGU6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnBhcmFtX3R5cGU8RGV2aWNlPjo6dHlwZSAgcGFyYW1fdHlwZTsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxEZXZpY2U+Ojp0eXBlICBjaGFyX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtb2RlX29mPERldmljZT46OnR5cGUgICAgICAgbW9kZTsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCEoaXNfY29udmVydGlibGU8bW9kZSwgZGV0YWlsOjp0d29fc2VxdWVuY2U+Ojp2YWx1ZSkpOwotICAgIHN0cnVjdCBjYXRlZ29yeQotICAgICAgICA6IG1vZGUsCi0gICAgICAgICAgZGV2aWNlX3RhZywKLSAgICAgICAgICBjbG9zYWJsZV90YWcsCi0gICAgICAgICAgZmx1c2hhYmxlX3RhZywKLSAgICAgICAgICBsb2NhbGl6YWJsZV90YWcsCi0gICAgICAgICAgb3B0aW1hbGx5X2J1ZmZlcmVkX3RhZwotICAgICAgICB7IH07Ci0gICAgcmVzdHJpY3RlZF9pbmRpcmVjdF9kZXZpY2UoIHBhcmFtX3R5cGUgZGV2LCBzdHJlYW1fb2Zmc2V0IG9mZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX29mZnNldCBsZW4gPSAtMSApOwotICAgIHN0ZDo6c3RyZWFtc2l6ZSByZWFkKGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pOwotICAgIHN0ZDo6c3RyZWFtc2l6ZSB3cml0ZShjb25zdCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKTsKLSAgICBzdGQ6OnN0cmVhbXBvcyBzZWVrKHN0cmVhbV9vZmZzZXQgb2ZmLCBORE5CT09TVF9JT1M6OnNlZWtkaXIgd2F5KTsKLXByaXZhdGU6Ci0gICAgc3RyZWFtX29mZnNldCBiZWdfLCBwb3NfLCBlbmRfOwotfTsKLQotLy8KLS8vIFRlbXBsYXRlIG5hbWU6IHJlc3RyaWN0ZWRfZGlyZWN0X2RldmljZS4KLS8vIERlc2NyaXB0aW9uOiBQcm92aWRlcyBhbiByZXN0cmljdGVkIHZpZXcgb2YgYSBEaXJlY3QgRGV2aWNlLgotLy8gVGVtcGxhdGUgcGFyYW1ldGVyczoKLS8vICAgICAgRGV2aWNlIC0gQSBtb2RlbCBvZiBEaXJlY3QgYW5kIERldmljZS4KLS8vCi10ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2U+Ci1jbGFzcyByZXN0cmljdGVkX2RpcmVjdF9kZXZpY2UgOiBwdWJsaWMgZGV2aWNlX2FkYXB0ZXI8RGV2aWNlPiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8RGV2aWNlPjo6dHlwZSAgY2hhcl90eXBlOwotICAgIHR5cGVkZWYgc3RkOjpwYWlyPGNoYXJfdHlwZSosIGNoYXJfdHlwZSo+ICAgIHBhaXJfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1vZGVfb2Y8RGV2aWNlPjo6dHlwZSAgICAgICBtb2RlOwotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoIShpc19jb252ZXJ0aWJsZTxtb2RlLCBkZXRhaWw6OnR3b19zZXF1ZW5jZT46OnZhbHVlKSk7Ci0gICAgc3RydWN0IGNhdGVnb3J5Ci0gICAgICAgIDogbW9kZV9vZjxEZXZpY2U+Ojp0eXBlLAotICAgICAgICAgIGRldmljZV90YWcsCi0gICAgICAgICAgZGlyZWN0X3RhZywKLSAgICAgICAgICBjbG9zYWJsZV90YWcsCi0gICAgICAgICAgbG9jYWxpemFibGVfdGFnCi0gICAgICAgIHsgfTsKLSAgICByZXN0cmljdGVkX2RpcmVjdF9kZXZpY2UoIGNvbnN0IERldmljZSYgZGV2LCBzdHJlYW1fb2Zmc2V0IG9mZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9vZmZzZXQgbGVuID0gLTEgKTsKLSAgICBwYWlyX3R5cGUgaW5wdXRfc2VxdWVuY2UoKTsKLSAgICBwYWlyX3R5cGUgb3V0cHV0X3NlcXVlbmNlKCk7Ci1wcml2YXRlOgotICAgIHBhaXJfdHlwZSBzZXF1ZW5jZShtcGw6OnRydWVfKTsKLSAgICBwYWlyX3R5cGUgc2VxdWVuY2UobXBsOjpmYWxzZV8pOwotICAgIGNoYXJfdHlwZSAqYmVnXywgKmVuZF87Ci19OwotCi0vLwotLy8gVGVtcGxhdGUgbmFtZTogcmVzdHJpY3RlZF9maWx0ZXIuCi0vLyBEZXNjcmlwdGlvbjogUHJvdmlkZXMgYW4gcmVzdHJpY3RlZCB2aWV3IG9mIGEgRmlsdGVyLgotLy8gVGVtcGxhdGUgcGFyYW1ldGVyczoKLS8vICAgICAgRmlsdGVyIC0gQW4gaW5kaXJlY3QgbW9kZWwgb2YgRmlsdGVyLgotLy8KLXRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlcj4KLWNsYXNzIHJlc3RyaWN0ZWRfZmlsdGVyIDogcHVibGljIGZpbHRlcl9hZGFwdGVyPEZpbHRlcj4gewotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhcl90eXBlX29mPEZpbHRlcj46OnR5cGUgY2hhcl90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbW9kZV9vZjxGaWx0ZXI+Ojp0eXBlICAgICAgbW9kZTsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCEoaXNfY29udmVydGlibGU8bW9kZSwgZGV0YWlsOjp0d29fc2VxdWVuY2U+Ojp2YWx1ZSkpOwotICAgIHN0cnVjdCBjYXRlZ29yeQotICAgICAgICA6IG1vZGUsCi0gICAgICAgICAgZmlsdGVyX3RhZywKLSAgICAgICAgICBtdWx0aWNoYXJfdGFnLAotICAgICAgICAgIGNsb3NhYmxlX3RhZywKLSAgICAgICAgICBsb2NhbGl6YWJsZV90YWcsCi0gICAgICAgICAgb3B0aW1hbGx5X2J1ZmZlcmVkX3RhZwotICAgICAgICB7IH07Ci0gICAgcmVzdHJpY3RlZF9maWx0ZXIoIGNvbnN0IEZpbHRlciYgZmx0LCBzdHJlYW1fb2Zmc2V0IG9mZiwgCi0gICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9vZmZzZXQgbGVuID0gLTEgKTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZT4KLSAgICBzdGQ6OnN0cmVhbXNpemUgcmVhZChTb3VyY2UmIHNyYywgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7Ci0gICAgICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgICAgIGlmICghb3Blbl8pCi0gICAgICAgICAgICBvcGVuKHNyYywgTkROQk9PU1RfSU9TOjppbik7Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBhbXQgPQotICAgICAgICAgICAgZW5kXyAhPSAtMSA/Ci0gICAgICAgICAgICAgICAgKHN0ZDo6bWluKSAobiwgc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPihlbmRfIC0gcG9zXykpIDoKLSAgICAgICAgICAgICAgICBuOwotICAgICAgICBzdGQ6OnN0cmVhbXNpemUgcmVzdWx0ID0gCi0gICAgICAgICAgICBpb3N0cmVhbXM6OnJlYWQodGhpcy0+Y29tcG9uZW50KCksIHNyYywgcywgYW10KTsKLSAgICAgICAgaWYgKHJlc3VsdCAhPSAtMSkKLSAgICAgICAgICAgIHBvc18gKz0gcmVzdWx0OwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpbms+Ci0gICAgc3RkOjpzdHJlYW1zaXplIHdyaXRlKFNpbmsmIHNuaywgY29uc3QgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7Ci0gICAgICAgIGlmICghb3Blbl8pCi0gICAgICAgICAgICBvcGVuKHNuaywgTkROQk9PU1RfSU9TOjpvdXQpOwotICAgICAgICBpZiAoZW5kXyAhPSAtMSAmJiBwb3NfICsgbiA+PSBlbmRfKSB7Ci0gICAgICAgICAgICBpZihwb3NfIDwgZW5kXykKLSAgICAgICAgICAgICAgICBwb3NfICs9IGlvc3RyZWFtczo6d3JpdGUodGhpcy0+Y29tcG9uZW50KCksCi0gICAgICAgICAgICAgICAgICAgIHNuaywgcywgZW5kXyAtIHBvc18pOwotICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihiYWRfd3JpdGUoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIHJlc3VsdCA9IAotICAgICAgICAgICAgaW9zdHJlYW1zOjp3cml0ZSh0aGlzLT5jb21wb25lbnQoKSwgc25rLCBzLCBuKTsKLSAgICAgICAgcG9zXyArPSByZXN1bHQ7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotICAgIHN0ZDo6c3RyZWFtcG9zIHNlZWsoRGV2aWNlJiBkZXYsIHN0cmVhbV9vZmZzZXQgb2ZmLCBORE5CT09TVF9JT1M6OnNlZWtkaXIgd2F5KQotICAgIHsKLSAgICAgICAgc3RyZWFtX29mZnNldCBuZXh0OwotICAgICAgICBpZiAod2F5ID09IE5ETkJPT1NUX0lPUzo6YmVnKSB7Ci0gICAgICAgICAgICBuZXh0ID0gYmVnXyArIG9mZjsKLSAgICAgICAgfSBlbHNlIGlmICh3YXkgPT0gTkROQk9PU1RfSU9TOjpjdXIpIHsKLSAgICAgICAgICAgIG5leHQgPSBwb3NfICsgb2ZmOwotICAgICAgICB9IGVsc2UgaWYgKGVuZF8gIT0gLTEpIHsKLSAgICAgICAgICAgIG5leHQgPSBlbmRfICsgb2ZmOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gUmVzdHJpY3Rpb24gaXMgaGFsZi1vcGVuOyBzZWVrIHJlbGF0aXZlIHRvIHRoZSBhY3R1YWwgZW5kLgotICAgICAgICAgICAgcG9zXyA9IHRoaXMtPmNvbXBvbmVudCgpLnNlZWsoZGV2LCBvZmYsIE5ETkJPT1NUX0lPUzo6ZW5kKTsKLSAgICAgICAgICAgIGlmIChwb3NfIDwgYmVnXykKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGJhZF9zZWVrKCkpOwotICAgICAgICAgICAgcmV0dXJuIG9mZnNldF90b19wb3NpdGlvbihwb3NfIC0gYmVnXyk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG5leHQgPCBiZWdfIHx8IChlbmRfICE9IC0xICYmIG5leHQgPj0gZW5kXykpCi0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGJhZF9zZWVrKCkpOwotICAgICAgICBwb3NfID0gdGhpcy0+Y29tcG9uZW50KCkuc2VlayhkZXYsIG5leHQsIE5ETkJPT1NUX0lPUzo6Y3VyKTsKLSAgICAgICAgcmV0dXJuIG9mZnNldF90b19wb3NpdGlvbihwb3NfIC0gYmVnXyk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotICAgIHZvaWQgY2xvc2UoRGV2aWNlJiBkZXYpIAotICAgIHsgCi0gICAgICAgIG9wZW5fID0gZmFsc2U7Ci0gICAgICAgIGRldGFpbDo6Y2xvc2VfYWxsKHRoaXMtPmNvbXBvbmVudCgpLCBkZXYpOyAKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2U+Ci0gICAgdm9pZCBjbG9zZShEZXZpY2UmIGRldiwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkgCi0gICAgeyAKLSAgICAgICAgb3Blbl8gPSBmYWxzZTsKLSAgICAgICAgaW9zdHJlYW1zOjpjbG9zZSh0aGlzLT5jb21wb25lbnQoKSwgZGV2LCB3aGljaCk7IAotICAgIH0KLXByaXZhdGU6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotICAgIHZvaWQgb3BlbihEZXZpY2UmIGRldiwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXNfY29udmVydGlibGU8bW9kZSwgZHVhbF91c2U+Ojp0eXBlIGlzX2R1YWxfdXNlOwotICAgICAgICBvcGVuXyA9IHRydWU7Ci0gICAgICAgIHdoaWNoID0gaXNfZHVhbF91c2UoKSA/IHdoaWNoIDogKE5ETkJPT1NUX0lPUzo6aW4gfCBORE5CT09TVF9JT1M6Om91dCk7Ci0gICAgICAgIGlvc3RyZWFtczo6c2tpcCh0aGlzLT5jb21wb25lbnQoKSwgZGV2LCBiZWdfLCB3aGljaCk7Ci0gICAgfQotCi0gICAgc3RyZWFtX29mZnNldCAgYmVnXywgcG9zXywgZW5kXzsKLSAgICBib29sICAgICAgICAgICBvcGVuXzsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgcmVzdHJpY3Rpb25fdHJhaXRzCi0gICAgOiBpb3N0cmVhbXM6OnNlbGVjdDwgIC8vIERpc2FtYmlndWF0aW9uIGZvciBUcnU2NC4KLSAgICAgICAgICBpc19maWx0ZXI8VD4sICByZXN0cmljdGVkX2ZpbHRlcjxUPiwKLSAgICAgICAgICBpc19kaXJlY3Q8VD4sICByZXN0cmljdGVkX2RpcmVjdF9kZXZpY2U8VD4sCi0gICAgICAgICAgZWxzZV8sICAgICAgICAgcmVzdHJpY3RlZF9pbmRpcmVjdF9kZXZpY2U8VD4KLSAgICAgID4KLSAgICB7IH07Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgcmVzdHJpY3Rpb24gOiBwdWJsaWMgZGV0YWlsOjpyZXN0cmljdGlvbl90cmFpdHM8VD46OnR5cGUgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpwYXJhbV90eXBlPFQ+Ojp0eXBlICAgICAgICAgIHBhcmFtX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnJlc3RyaWN0aW9uX3RyYWl0czxUPjo6dHlwZSAgYmFzZV90eXBlOwotICAgIHJlc3RyaWN0aW9uKHBhcmFtX3R5cGUgdCwgc3RyZWFtX29mZnNldCBvZmYsIHN0cmVhbV9vZmZzZXQgbGVuID0gLTEpCi0gICAgICAgIDogYmFzZV90eXBlKHQsIG9mZiwgbGVuKQotICAgICAgICB7IH0KLX07Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLy0tLS0tLS0tLS0tLS0tSW1wbGVtZW50YXRpb24gb2YgcmVzdHJpY3RlZF9pbmRpcmVjdF9kZXZpY2UtLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2U+Ci1yZXN0cmljdGVkX2luZGlyZWN0X2RldmljZTxEZXZpY2U+OjpyZXN0cmljdGVkX2luZGlyZWN0X2RldmljZQotICAgIChwYXJhbV90eXBlIGRldiwgc3RyZWFtX29mZnNldCBvZmYsIHN0cmVhbV9vZmZzZXQgbGVuKQotICAgIDogZGV2aWNlX2FkYXB0ZXI8RGV2aWNlPihkZXYpLCBiZWdfKG9mZiksIHBvc18ob2ZmKSwgCi0gICAgICBlbmRfKGxlbiAhPSAtMSA/IG9mZiArIGxlbiA6IC0xKQotewotICAgIGlmIChsZW4gPCAtMSB8fCBvZmYgPCAwKQotICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFKCJiYWQgb2Zmc2V0IikpOwotICAgIGlvc3RyZWFtczo6c2tpcCh0aGlzLT5jb21wb25lbnQoKSwgb2ZmKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotaW5saW5lIHN0ZDo6c3RyZWFtc2l6ZSByZXN0cmljdGVkX2luZGlyZWN0X2RldmljZTxEZXZpY2U+OjpyZWFkCi0gICAgKGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi17Ci0gICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICBzdGQ6OnN0cmVhbXNpemUgYW10ID0KLSAgICAgICAgZW5kXyAhPSAtMSA/Ci0gICAgICAgICAgICAoc3RkOjptaW4pIChuLCBzdGF0aWNfY2FzdDxzdGQ6OnN0cmVhbXNpemU+KGVuZF8gLSBwb3NfKSkgOgotICAgICAgICAgICAgbjsKLSAgICBzdGQ6OnN0cmVhbXNpemUgcmVzdWx0ID0gaW9zdHJlYW1zOjpyZWFkKHRoaXMtPmNvbXBvbmVudCgpLCBzLCBhbXQpOwotICAgIGlmIChyZXN1bHQgIT0gLTEpCi0gICAgICAgIHBvc18gKz0gcmVzdWx0OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLWlubGluZSBzdGQ6OnN0cmVhbXNpemUgcmVzdHJpY3RlZF9pbmRpcmVjdF9kZXZpY2U8RGV2aWNlPjo6d3JpdGUKLSAgICAoY29uc3QgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLXsKLSAgICBpZiAoZW5kXyAhPSAtMSAmJiBwb3NfICsgbiA+PSBlbmRfKSB7Ci0gICAgICAgIGlmKHBvc18gPCBlbmRfKQotICAgICAgICAgICAgcG9zXyArPSBpb3N0cmVhbXM6OndyaXRlKHRoaXMtPmNvbXBvbmVudCgpLCBzLCBlbmRfIC0gcG9zXyk7Ci0gICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oYmFkX3dyaXRlKCkpOwotICAgIH0KLSAgICBzdGQ6OnN0cmVhbXNpemUgcmVzdWx0ID0gaW9zdHJlYW1zOjp3cml0ZSh0aGlzLT5jb21wb25lbnQoKSwgcywgbik7Ci0gICAgcG9zXyArPSByZXN1bHQ7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotc3RkOjpzdHJlYW1wb3MgcmVzdHJpY3RlZF9pbmRpcmVjdF9kZXZpY2U8RGV2aWNlPjo6c2VlawotICAgIChzdHJlYW1fb2Zmc2V0IG9mZiwgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSkKLXsKLSAgICBzdHJlYW1fb2Zmc2V0IG5leHQ7Ci0gICAgaWYgKHdheSA9PSBORE5CT09TVF9JT1M6OmJlZykgewotICAgICAgICBuZXh0ID0gYmVnXyArIG9mZjsKLSAgICB9IGVsc2UgaWYgKHdheSA9PSBORE5CT09TVF9JT1M6OmN1cikgewotICAgICAgICBuZXh0ID0gcG9zXyArIG9mZjsKLSAgICB9IGVsc2UgaWYgKGVuZF8gIT0gLTEpIHsKLSAgICAgICAgbmV4dCA9IGVuZF8gKyBvZmY7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gUmVzdHJpY3Rpb24gaXMgaGFsZi1vcGVuOyBzZWVrIHJlbGF0aXZlIHRvIHRoZSBhY3R1YWwgZW5kLgotICAgICAgICBwb3NfID0gaW9zdHJlYW1zOjpzZWVrKHRoaXMtPmNvbXBvbmVudCgpLCBvZmYsIE5ETkJPT1NUX0lPUzo6ZW5kKTsKLSAgICAgICAgaWYgKHBvc18gPCBiZWdfKQotICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihiYWRfc2VlaygpKTsKLSAgICAgICAgcmV0dXJuIG9mZnNldF90b19wb3NpdGlvbihwb3NfIC0gYmVnXyk7Ci0gICAgfQotICAgIGlmIChuZXh0IDwgYmVnXyB8fCAoZW5kXyAhPSAtMSAmJiBuZXh0ID4gZW5kXykpCi0gICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oYmFkX3NlZWsoKSk7Ci0gICAgcG9zXyA9IGlvc3RyZWFtczo6c2Vlayh0aGlzLT5jb21wb25lbnQoKSwgbmV4dCAtIHBvc18sIE5ETkJPT1NUX0lPUzo6Y3VyKTsKLSAgICByZXR1cm4gb2Zmc2V0X3RvX3Bvc2l0aW9uKHBvc18gLSBiZWdfKTsKLX0KLQotLy8tLS0tLS0tLS0tLS0tLUltcGxlbWVudGF0aW9uIG9mIHJlc3RyaWN0ZWRfZGlyZWN0X2RldmljZS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotcmVzdHJpY3RlZF9kaXJlY3RfZGV2aWNlPERldmljZT46OnJlc3RyaWN0ZWRfZGlyZWN0X2RldmljZQotICAgIChjb25zdCBEZXZpY2UmIGRldiwgc3RyZWFtX29mZnNldCBvZmYsIHN0cmVhbV9vZmZzZXQgbGVuKQotICAgIDogZGV2aWNlX2FkYXB0ZXI8RGV2aWNlPihkZXYpLCBiZWdfKDApLCBlbmRfKDApCi17Ci0gICAgc3RkOjpwYWlyPGNoYXJfdHlwZSosIGNoYXJfdHlwZSo+IHNlcSA9Ci0gICAgICAgIHNlcXVlbmNlKGlzX2NvbnZlcnRpYmxlPGNhdGVnb3J5LCBpbnB1dD4oKSk7Ci0gICAgaWYgKCBvZmYgPCAwIHx8IGxlbiA8IC0xIHx8IAotICAgICAgICAgKGxlbiAhPSAtMSAmJiBvZmYgKyBsZW4gPiBzZXEuc2Vjb25kIC0gc2VxLmZpcnN0KSApCi0gICAgewotICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFKCJiYWQgb2Zmc2V0IikpOwotICAgIH0KLSAgICBiZWdfID0gc2VxLmZpcnN0ICsgb2ZmOwotICAgIGVuZF8gPSBsZW4gIT0gLTEgPyAKLSAgICAgICAgc2VxLmZpcnN0ICsgb2ZmICsgbGVuIDoKLSAgICAgICAgc2VxLnNlY29uZDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotdHlwZW5hbWUgcmVzdHJpY3RlZF9kaXJlY3RfZGV2aWNlPERldmljZT46OnBhaXJfdHlwZQotcmVzdHJpY3RlZF9kaXJlY3RfZGV2aWNlPERldmljZT46OmlucHV0X3NlcXVlbmNlKCkKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKChpc19jb252ZXJ0aWJsZTxjYXRlZ29yeSwgaW5wdXQ+Ojp2YWx1ZSkpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihiZWdfLCBlbmRfKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotdHlwZW5hbWUgcmVzdHJpY3RlZF9kaXJlY3RfZGV2aWNlPERldmljZT46OnBhaXJfdHlwZQotcmVzdHJpY3RlZF9kaXJlY3RfZGV2aWNlPERldmljZT46Om91dHB1dF9zZXF1ZW5jZSgpCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoaXNfY29udmVydGlibGU8Y2F0ZWdvcnksIG91dHB1dD46OnZhbHVlKSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGJlZ18sIGVuZF8pOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2U+Ci10eXBlbmFtZSByZXN0cmljdGVkX2RpcmVjdF9kZXZpY2U8RGV2aWNlPjo6cGFpcl90eXBlCi1yZXN0cmljdGVkX2RpcmVjdF9kZXZpY2U8RGV2aWNlPjo6c2VxdWVuY2UobXBsOjp0cnVlXykKLXsgcmV0dXJuIGlvc3RyZWFtczo6aW5wdXRfc2VxdWVuY2UodGhpcy0+Y29tcG9uZW50KCkpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLXR5cGVuYW1lIHJlc3RyaWN0ZWRfZGlyZWN0X2RldmljZTxEZXZpY2U+OjpwYWlyX3R5cGUKLXJlc3RyaWN0ZWRfZGlyZWN0X2RldmljZTxEZXZpY2U+OjpzZXF1ZW5jZShtcGw6OmZhbHNlXykKLXsgcmV0dXJuIGlvc3RyZWFtczo6b3V0cHV0X3NlcXVlbmNlKHRoaXMtPmNvbXBvbmVudCgpKTsgfQotCi0vLy0tLS0tLS0tLS0tLS0tSW1wbGVtZW50YXRpb24gb2YgcmVzdHJpY3RlZF9maWx0ZXItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXI+Ci1yZXN0cmljdGVkX2ZpbHRlcjxGaWx0ZXI+OjpyZXN0cmljdGVkX2ZpbHRlcgotICAgIChjb25zdCBGaWx0ZXImIGZsdCwgc3RyZWFtX29mZnNldCBvZmYsIHN0cmVhbV9vZmZzZXQgbGVuKQotICAgIDogZmlsdGVyX2FkYXB0ZXI8RmlsdGVyPihmbHQpLCBiZWdfKG9mZiksCi0gICAgICBwb3NfKG9mZiksIGVuZF8obGVuICE9IC0xID8gb2ZmICsgbGVuIDogLTEpLCBvcGVuXyhmYWxzZSkKLXsKLSAgICBpZiAobGVuIDwgLTEgfHwgb2ZmIDwgMCkKLSAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihORE5CT09TVF9JT1NUUkVBTVNfRkFJTFVSRSgiYmFkIG9mZnNldCIpKTsKLX0KLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfSU9TVFJFQU1TX1JFU1RSSUNUKQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotLy8tLS0tLS0tLS0tLS0tLUltcGxlbWVudGF0aW9uIG9mIHJlc3RyaWN0L3NsaWNlLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gTm90ZTogVGhlIGZvbGxvd2luZyB3b3JrYXJvdW5kcyBhcmUgcGF0dGVybmVkIGFmdGVyIHJlc29sdmUuaHBwLiBJdCBoYXMgbm90Ci0vLyB5ZXQgYmVlbiBjb25maXJtZWQgdGhhdCB0aGV5IGFyZSBuZWNlc3NhcnkuCi0KLSMgaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19CUk9LRU5fT1ZFUkxPQURfUkVTT0xVVElPTiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0jICBpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotcmVzdHJpY3Rpb248VD4gCi1ORE5CT09TVF9JT1NUUkVBTVNfUkVTVFJJQ1QoIGNvbnN0IFQmIHQsIHN0cmVhbV9vZmZzZXQgb2ZmLCBzdHJlYW1fb2Zmc2V0IGxlbiA9IC0xCi0gICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19ESVNBQkxFX0lGX1NUUkVBTShUKSApCi17IHJldHVybiByZXN0cmljdGlvbjxUPih0LCBvZmYsIGxlbik7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2gsIHR5cGVuYW1lIFRyPgotcmVzdHJpY3Rpb248IHN0ZDo6YmFzaWNfc3RyZWFtYnVmPENoLCBUcj4gPgotTkROQk9PU1RfSU9TVFJFQU1TX1JFU1RSSUNUKCBzdGQ6OmJhc2ljX3N0cmVhbWJ1ZjxDaCwgVHI+JiBzYiwgc3RyZWFtX29mZnNldCBvZmYsIAotICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fb2Zmc2V0IGxlbiA9IC0xICkKLXsgcmV0dXJuIHJlc3RyaWN0aW9uPCBzdGQ6OmJhc2ljX3N0cmVhbWJ1ZjxDaCwgVHI+ID4oc2IsIG9mZiwgbGVuKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVHI+Ci1yZXN0cmljdGlvbjwgc3RkOjpiYXNpY19pc3RyZWFtPENoLCBUcj4gPgotTkROQk9PU1RfSU9TVFJFQU1TX1JFU1RSSUNUCi0gICAgKHN0ZDo6YmFzaWNfaXN0cmVhbTxDaCwgVHI+JiBpcywgc3RyZWFtX29mZnNldCBvZmYsIHN0cmVhbV9vZmZzZXQgbGVuID0gLTEpCi17IHJldHVybiByZXN0cmljdGlvbjwgc3RkOjpiYXNpY19pc3RyZWFtPENoLCBUcj4gPihpcywgb2ZmLCBsZW4pOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUcj4KLXJlc3RyaWN0aW9uPCBzdGQ6OmJhc2ljX29zdHJlYW08Q2gsIFRyPiA+Ci1ORE5CT09TVF9JT1NUUkVBTVNfUkVTVFJJQ1QKLSAgICAoc3RkOjpiYXNpY19vc3RyZWFtPENoLCBUcj4mIG9zLCBzdHJlYW1fb2Zmc2V0IG9mZiwgc3RyZWFtX29mZnNldCBsZW4gPSAtMSkKLXsgcmV0dXJuIHJlc3RyaWN0aW9uPCBzdGQ6OmJhc2ljX29zdHJlYW08Q2gsIFRyPiA+KG9zLCBvZmYsIGxlbik7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2gsIHR5cGVuYW1lIFRyPgotcmVzdHJpY3Rpb248IHN0ZDo6YmFzaWNfaW9zdHJlYW08Q2gsIFRyPiA+Ci1ORE5CT09TVF9JT1NUUkVBTVNfUkVTVFJJQ1QKLSAgICAoc3RkOjpiYXNpY19pb3N0cmVhbTxDaCwgVHI+JiBpbywgc3RyZWFtX29mZnNldCBvZmYsIHN0cmVhbV9vZmZzZXQgbGVuID0gLTEpCi17IHJldHVybiByZXN0cmljdGlvbjwgc3RkOjpiYXNpY19pb3N0cmVhbTxDaCwgVHI+ID4oaW8sIG9mZiwgbGVuKTsgfQotCi0jICBlbHNlIC8vICMgaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19OT19TVFJFQU1fVEVNUExBVEVTIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotcmVzdHJpY3Rpb248VD4gCi1ORE5CT09TVF9JT1NUUkVBTVNfUkVTVFJJQ1QoIGNvbnN0IFQmIHQsIHN0cmVhbV9vZmZzZXQgb2ZmLCBzdHJlYW1fb2Zmc2V0IGxlbiA9IC0xCi0gICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19ESVNBQkxFX0lGX1NUUkVBTShUKSApCi17IHJldHVybiByZXN0cmljdGlvbjxUPih0LCBvZmYsIGxlbik7IH0KLQotcmVzdHJpY3Rpb248c3RkOjpzdHJlYW1idWY+IAotTkROQk9PU1RfSU9TVFJFQU1TX1JFU1RSSUNUCi0gICAgKHN0ZDo6c3RyZWFtYnVmJiBzYiwgc3RyZWFtX29mZnNldCBvZmYsIHN0cmVhbV9vZmZzZXQgbGVuID0gLTEpCi17IHJldHVybiByZXN0cmljdGlvbjxzdGQ6OnN0cmVhbWJ1Zj4oc2IsIG9mZiwgbGVuKTsgfQotCi1yZXN0cmljdGlvbjxzdGQ6OmlzdHJlYW0+IAotTkROQk9PU1RfSU9TVFJFQU1TX1JFU1RSSUNUCi0gICAgKHN0ZDo6aXN0cmVhbTxDaCwgVHI+JiBpcywgc3RyZWFtX29mZnNldCBvZmYsIHN0cmVhbV9vZmZzZXQgbGVuID0gLTEpCi17IHJldHVybiByZXN0cmljdGlvbjxzdGQ6OmlzdHJlYW0+KGlzLCBvZmYsIGxlbik7IH0KLQotcmVzdHJpY3Rpb248c3RkOjpvc3RyZWFtPiAKLU5ETkJPT1NUX0lPU1RSRUFNU19SRVNUUklDVAotICAgIChzdGQ6Om9zdHJlYW08Q2gsIFRyPiYgb3MsIHN0cmVhbV9vZmZzZXQgb2ZmLCBzdHJlYW1fb2Zmc2V0IGxlbiA9IC0xKQoteyByZXR1cm4gcmVzdHJpY3Rpb248c3RkOjpvc3RyZWFtPihvcywgb2ZmLCBsZW4pOyB9Ci0KLXJlc3RyaWN0aW9uPHN0ZDo6aW9zdHJlYW0+IAotTkROQk9PU1RfSU9TVFJFQU1TX1JFU1RSSUNUCi0gICAgKHN0ZDo6aW9zdHJlYW08Q2gsIFRyPiYgaW8sIHN0cmVhbV9vZmZzZXQgb2ZmLCBzdHJlYW1fb2Zmc2V0IGxlbiA9IC0xKQoteyByZXR1cm4gcmVzdHJpY3Rpb248c3RkOjppb3N0cmVhbT4oaW8sIG9mZiwgbGVuKTsgfQotCi0jICBlbmRpZiAvLyAjIGlmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fU1RSRUFNX1RFTVBMQVRFUyAvLy0tLS0tLS0tLS0tLS0tLS0tLS0vLwotIyBlbHNlIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0JST0tFTl9PVkVSTE9BRF9SRVNPTFVUSU9OIC8vLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXJlc3RyaWN0aW9uPFQ+IAotTkROQk9PU1RfSU9TVFJFQU1TX1JFU1RSSUNUCi0gICAgKGNvbnN0IFQmIHQsIHN0cmVhbV9vZmZzZXQgb2ZmLCBzdHJlYW1fb2Zmc2V0IGxlbiwgbXBsOjp0cnVlXykKLXsgICAvLyBCYWQgb3ZlcmxvYWQgcmVzb2x1dGlvbi4KLSAgICByZXR1cm4gcmVzdHJpY3Rpb248VD4oY29uc3RfY2FzdDxUJj4odCwgb2ZmLCBsZW4pKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXJlc3RyaWN0aW9uPFQ+IAotTkROQk9PU1RfSU9TVFJFQU1TX1JFU1RSSUNUCi0gICAgKGNvbnN0IFQmIHQsIHN0cmVhbV9vZmZzZXQgb2ZmLCBzdHJlYW1fb2Zmc2V0IGxlbiwgbXBsOjpmYWxzZV8pCi17IHJldHVybiByZXN0cmljdGlvbjxUPih0LCBvZmYsIGxlbik7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXJlc3RyaWN0aW9uPFQ+IAotTkROQk9PU1RfSU9TVFJFQU1TX1JFU1RSSUNUKCBjb25zdCBUJiB0LCBzdHJlYW1fb2Zmc2V0IG9mZiwgc3RyZWFtX29mZnNldCBsZW4gPSAtMQotICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfRElTQUJMRV9JRl9TVFJFQU0oVCkgKQoteyByZXR1cm4gTkROQk9PU1RfSU9TVFJFQU1TX1JFU1RSSUNUKHQsIG9mZiwgbGVuLCBpc19zdGRfaW88VD4oKSk7IH0KLQotIyBpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg2MDApICYmIFwKLSAgICAgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgJiYgXAotICAgICAhZGVmaW5lZChfX0dOVUNfXykgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXJlc3RyaWN0aW9uPFQ+Ci1ORE5CT09TVF9JT1NUUkVBTVNfUkVTVFJJQ1QoVCYgdCwgc3RyZWFtX29mZnNldCBvZmYsIHN0cmVhbV9vZmZzZXQgbGVuID0gLTEpCi17IHJldHVybiByZXN0cmljdGlvbjxUPih0LCBvZmYsIGxlbik7IH0KLQotIyAgZW5kaWYgLy8gQm9ybGFuZCA1LngsIFZDNi03LjAgb3IgR0NDIDIuOXggLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSMgZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfQlJPS0VOX09WRVJMT0FEX1JFU09MVVRJT04gLy8tLS0tLS0tLS0tLS0tLS8vCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmICFkZWZpbmVkKE5ETkJPT1NUX0lPU1RSRUFNU19SRVNUUklDVF9JTVBMX0hQUF9JTkNMVURFRCkgLi4uCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc2VsZWN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zZWxlY3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMDc1M2Y2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zZWxlY3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vIENvbnRhaW5zIHRoZSBtZXRhZnVuY3Rpb24gc2VsZWN0LCB3aGljaCBtaW1pY3MgdGhlIGVmZmVjdCBvZiBhIGNoYWluIG9mCi0vLyBuZXN0ZWQgbXBsIGlmXydzLgotLy8KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLwotLy8gVXNhZ2U6Ci0vLyAgICAgIAotLy8gdHlwZWRlZiB0eXBlbmFtZSBzZWxlY3Q8Ci0vLyAgICAgICAgICAgICAgICAgICAgICBjYXNlMSwgIHR5cGUxLAotLy8gICAgICAgICAgICAgICAgICAgICAgY2FzZTIsICB0eXBlMiwKLS8vICAgICAgICAgICAgICAgICAgICAgIC4uLgotLy8gICAgICAgICAgICAgICAgICAgICAgdHJ1ZV8sICB0eXBlbgotLy8gICAgICAgICAgICAgICAgICA+Ojp0eXBlIHNlbGVjdGlvbjsKLS8vCi0vLyBIZXJlIGNhc2UxLCBjYXNlMiwgLi4uIGFyZSBtb2RlbHMgb2YgTVBMOjpJbnRlZ3JhbENvbnN0YW50IHdpdGggdmFsdWUgdHlwZQotLy8gYm9vbCwgYW5kIG4gPD0gMTIuCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX1NFTEVDVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX1NFTEVDVF9IUFBfSU5DTFVERUQgICAKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAgICAgCi0gCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYmFzZV9hbmRfZGVyaXZlZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2V2YWxfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZGVudGl0eS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdm9pZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgeyAKLQotdHlwZWRlZiBtcGw6OnRydWVfIGVsc2VfOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgQ2FzZTEgPSBtcGw6OnRydWVfLAotICAgICAgICAgIHR5cGVuYW1lIFR5cGUxID0gbXBsOjp2b2lkXywKLSAgICAgICAgICB0eXBlbmFtZSBDYXNlMiA9IG1wbDo6dHJ1ZV8sCi0gICAgICAgICAgdHlwZW5hbWUgVHlwZTIgPSBtcGw6OnZvaWRfLAotICAgICAgICAgIHR5cGVuYW1lIENhc2UzID0gbXBsOjp0cnVlXywKLSAgICAgICAgICB0eXBlbmFtZSBUeXBlMyA9IG1wbDo6dm9pZF8sCi0gICAgICAgICAgdHlwZW5hbWUgQ2FzZTQgPSBtcGw6OnRydWVfLAotICAgICAgICAgIHR5cGVuYW1lIFR5cGU0ID0gbXBsOjp2b2lkXywKLSAgICAgICAgICB0eXBlbmFtZSBDYXNlNSA9IG1wbDo6dHJ1ZV8sCi0gICAgICAgICAgdHlwZW5hbWUgVHlwZTUgPSBtcGw6OnZvaWRfLAotICAgICAgICAgIHR5cGVuYW1lIENhc2U2ID0gbXBsOjp0cnVlXywKLSAgICAgICAgICB0eXBlbmFtZSBUeXBlNiA9IG1wbDo6dm9pZF8sCi0gICAgICAgICAgdHlwZW5hbWUgQ2FzZTcgPSBtcGw6OnRydWVfLAotICAgICAgICAgIHR5cGVuYW1lIFR5cGU3ID0gbXBsOjp2b2lkXywKLSAgICAgICAgICB0eXBlbmFtZSBDYXNlOCA9IG1wbDo6dHJ1ZV8sCi0gICAgICAgICAgdHlwZW5hbWUgVHlwZTggPSBtcGw6OnZvaWRfLAotICAgICAgICAgIHR5cGVuYW1lIENhc2U5ID0gbXBsOjp0cnVlXywKLSAgICAgICAgICB0eXBlbmFtZSBUeXBlOSA9IG1wbDo6dm9pZF8sCi0gICAgICAgICAgdHlwZW5hbWUgQ2FzZTEwID0gbXBsOjp0cnVlXywKLSAgICAgICAgICB0eXBlbmFtZSBUeXBlMTAgPSBtcGw6OnZvaWRfLAotICAgICAgICAgIHR5cGVuYW1lIENhc2UxMSA9IG1wbDo6dHJ1ZV8sCi0gICAgICAgICAgdHlwZW5hbWUgVHlwZTExID0gbXBsOjp2b2lkXywKLSAgICAgICAgICB0eXBlbmFtZSBDYXNlMTIgPSBtcGw6OnRydWVfLAotICAgICAgICAgIHR5cGVuYW1lIFR5cGUxMiA9IG1wbDo6dm9pZF8gPgotc3RydWN0IHNlbGVjdCB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgICAgICAgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgIENhc2UxLCBtcGw6OmlkZW50aXR5PFR5cGUxPiwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgIENhc2UyLCBtcGw6OmlkZW50aXR5PFR5cGUyPiwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgIENhc2UzLCBtcGw6OmlkZW50aXR5PFR5cGUzPiwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgIENhc2U0LCBtcGw6OmlkZW50aXR5PFR5cGU0PiwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgIENhc2U1LCBtcGw6OmlkZW50aXR5PFR5cGU1PiwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgIENhc2U2LCBtcGw6OmlkZW50aXR5PFR5cGU2PiwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgIENhc2U3LCBtcGw6OmlkZW50aXR5PFR5cGU3PiwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgIENhc2U4LCBtcGw6OmlkZW50aXR5PFR5cGU4PiwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgIENhc2U5LCBtcGw6OmlkZW50aXR5PFR5cGU5PiwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgIENhc2UxMCwgbXBsOjppZGVudGl0eTxUeXBlMTA+LCBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICAgICAgQ2FzZTExLCBtcGw6OmlkZW50aXR5PFR5cGUxMT4sIG1wbDo6aWZfPAotICAgICAgICAgICAgICAgIENhc2UxMiwgVHlwZTEyLCBtcGw6OnZvaWRfID4gPiA+ID4gPiA+ID4gPiA+ID4gPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19TRUxFQ1RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc2VsZWN0X2J5X3NpemUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3NlbGVjdF9ieV9zaXplLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGEwMjc3MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc2VsZWN0X2J5X3NpemUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTYxICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDA0LTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLwotLy8gSW50ZW5kZWQgYXMgYW4gYWx0ZXJuYXRpdmUgdG8gdHlwZV90cmFpdHM6Onllc190eXBlIGFuZCB0eXBlX3RyYWl0czo6bm9fdHlwZS4KLS8vIFByb3ZpZGVzIGFuIGFyYml0cmFyeSBudW1iZXIgb2YgdHlwZXMgKGNhc2VfPDA+LCBjYXNlXzwxPiwgLi4uKSBmb3IKLS8vIGRldGVybWluaW5nIHRoZSByZXN1bHRzIG9mIG92ZXJsb2FkIHJlc3VsdGlvbiB1c2luZyAnc2l6ZW9mJywgcGx1cyBhIHVuaWZvcm0KLS8vIG1lYW5zIG9mIHVzaW5nIHRoZSByZXN1bHQuIHllc190eXBlIGFuZCBub190eXBlIGFyZSB0eXBlZGVmcyBmb3IgY2FzZV88MT4KLS8vIGFuZCBjYXNlXzwwPi4gQSBzaW5nbGUgY2FzZSB3aXRoIG5lZ2F0aXZlIGFyZ3VtZW50LCBjYXNlXzwtMT4sIGlzIGFsc28gCi0vLyBwcm92aWRlZCwgZm9yIGNvbnZlbmllbmNlLgotLy8KLS8vIFRoaXMgaGVhZGVyIG1heSBiZSBpbmNsdWRlZCBhbnkgbnVtYmVyIG9mIHRpbWVzLCB3aXRoCi0vLyBORE5CT09TVF9TRUxFQ1RfQllfU0laRV9NQVhfQ0FTRSBkZWZpbmVkIHRvIGJlIHRoZSBsYXJnZXN0IE4gc3VjaCB0aGF0IGNhc2VfPE4+Ci0vLyBpcyBuZWVkZWQgZm9yIGEgcGFydGljdWxhciBhcHBsaWNhdGlvbi4gSXQgZGVmYXVsdHMgdG8gMjAuCi0vLwotLy8gVGhpcyBoZWFkZXIgZGVwZW5kcyBvbmx5IG9uIEJvb3N0LkNvbmZpZyBhbmQgQm9vc3QuUHJlcHJvY2Vzc29yLiBEZXBlbmRlbmNlCi0vLyBvbiBUeXBlIFRyYWl0cyBvciBNUEwgd2FzIGludGVudGlvbmFsbHkgYXZvaWRlZCwgdG8gbGVhdmUgb3BlbiB0aGUgCi0vLyBwb3NzaWJpbGl0eSB0aGF0IHNlbGVjdF9ieV9zaXplIGNvdWxkIGJlIHVzZWQgYnkgdGhlc2UgbGlicmFyaWVzLgotLy8KLS8vIEV4YW1wbGUgdXNhZ2U6Ci0vLwotLy8gICAgI2RlZmluZSBORE5CT09TVF9TRUxFQ1RfQllfU0laRV9NQVhfQ0FTRSA3ICAgLy8gKE5lZWRlZCB3aGVuIGRlZmF1bHQgd2FzIDIpCi0vLyAgICAjaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9zZWxlY3RfYnlfc2l6ZS5ocHA+Ci0vLwotLy8gICAgdXNpbmcgbmFtZXNwYWNlIG5kbmJvb3N0Ojp1dGlsaXR5OwotLy8KLS8vICAgIGNhc2VfPDA+IGhlbHBlcihib29sKTsKLS8vICAgIGNhc2VfPDE+IGhlbHBlcihpbnQpOwotLy8gICAgY2FzZV88Mj4gaGVscGVyKHVuc2lnbmVkKTsKLS8vICAgIGNhc2VfPDM+IGhlbHBlcihsb25nKTsKLS8vICAgIGNhc2VfPDQ+IGhlbHBlcih1bnNpZ25lZCBsb25nKTsKLS8vICAgIGNhc2VfPDU+IGhlbHBlcihmbG9hdCk7Ci0vLyAgICBjYXNlXzw2PiBoZWxwZXIoZG91YmxlKTsKLS8vICAgIGNhc2VfPDc+IGhlbHBlcihjb25zdCBjaGFyKik7Ci0vLwotLy8gICAgc3RydWN0IHRlc3QgewotLy8gICAgICAgIHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPQotLy8gICAgICAgICAgICBzZWxlY3RfYnlfc2l6ZTwgc2l6ZW9mKGhlbHBlcig5ODc2VUwpKSA+Ojp2YWx1ZTsKLS8vICAgICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKHZhbHVlID09IDQpOwotLy8gICAgfTsKLS8vCi0vLyBGb3IgY29tcGlsZXJzIHdpdGggaW50ZWdyYWwgY29uc3RhbnQgZXhwcmVzc2lvbiBwcm9ibGVtcywgZS5nLiBCb3JsYW5kIDUueCwKLS8vIG9uZSBjYW4gYWxzbyB3cml0ZQotLy8KLS8vICAgIHN0cnVjdCB0ZXN0IHsKLS8vICAgICAgICBORE5CT09TVF9TRUxFQ1RfQllfU0laRShpbnQsIHZhbHVlLCBoZWxwZXIoOTg3NlVMKSk7Ci0vLyAgICB9OwotLy8KLS8vIHRvIGRlZmluZSBhIHN0YXRpYyBpbnRlZ3JhbCBjb25zdGFudCAndmFsdWUnIGVxdWFsIHRvCi0vLwotLy8gICAgc2VsZWN0X2J5X3NpemU8IHNpemVvZihoZWxwZXIoOTg3NlVMKSkgPjo6dmFsdWUuCi0vLwotCi0vLyBJbmNsdWRlIGd1YXJkcyBzdXJyb3VuZCBhbGwgY29udGVudHMgb2YgdGhpcyBoZWFkZXIgZXhjZXB0IGZvciBleHBsaWNpdAotLy8gc3BlY2lhbGl6YXRpb25zIG9mIHNlbGVjdF9ieV9zaXplIGZvciBjYXNlXzxOPiB3aXRoIE4gPiAyLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfU0VMRUNUX0JZX1NJWkVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfU0VMRUNUX0JZX1NJWkVfSFBQX0lOQ0xVREVECi0KLS8vIFRoZSBsb3dlc3QgTiBmb3Igd2hpY2ggc2VsZWN0X2J5X3NpemU8IHNpemVvZihjYXNlXzxOPikgPiBoYXMgbm90IGJlZW4KLS8vIHNwZWNpYWxpemVkLgotI2RlZmluZSBTRUxFQ1RfQllfU0laRV9NQVhfU1BFQ0lBTElaRUQgMjAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAgIC8vIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVC4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2xvY2FsLmhwcD4KLQotLyogQWx0ZXJuYXRpdmUgaW1wbGVtZW50YXRpb24gdXNpbmcgbWF4X2FsaWduLiAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FsaWdubWVudF9vZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvdHlwZV93aXRoX2FsaWdubWVudC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB1dGlsaXR5IHsKLQotdGVtcGxhdGU8aW50IE4+Ci1zdHJ1Y3QgY2FzZV8geyBjaGFyIGNbKE4gKyAxKSAqIGFsaWdubWVudF9vZjxkZXRhaWw6Om1heF9hbGlnbj46OnZhbHVlXTsgfTsKLQotdGVtcGxhdGU8dW5zaWduZWQgU2l6ZT4KLXN0cnVjdCBzZWxlY3RfYnlfc2l6ZSB7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSAKLSAgICAgICAgKFNpemUgLyBhbGlnbm1lbnRfb2Y8ZGV0YWlsOjptYXhfYWxpZ24+Ojp2YWx1ZSAtIDEpKTsKLX07Ci0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyB1dGlsaXR5LCBib29zdC4KLQotKi8gICAgICAgICAgICAgIC8vIEVuZCBhbHRlcm5hdGUgaW1wbGVtZW50YXRpb24uCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgY2FzZV8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8aW50IE4+IHN0cnVjdCBjYXNlXyB7IGNoYXIgYzE7IGNhc2VfPE4gLSAxPiBjMjsgfTsKLXRlbXBsYXRlPD4gc3RydWN0IGNhc2VfPC0xPiB7IGNoYXIgYzsgfTsKLXR5cGVkZWYgY2FzZV88dHJ1ZT4geWVzX3R5cGU7Ci10eXBlZGVmIGNhc2VfPGZhbHNlPiBub190eXBlOwotCi0vLy0tLS0tLS0tLS0tLS0tRGVjbGFyYXRpb24gb2Ygc2VsZWN0X2J5X3NpemUtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx1bnNpZ25lZCBTaXplPiBzdHJ1Y3Qgc2VsZWN0X2J5X3NpemU7Ci0KLX0gfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGRldGFpbCwgaW9zdHJlYW1zLCBib29zdC4KLQotLy8tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgU0VMRUNUX0JZX1NJWkVfU1BFQy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gU2VwZWNpYWxpemVzIHNlbGVjdF9ieV9zaXplIGZvciBzaXplb2YoY2FzZTxuLTE+KS4gVGhlIGRlY3JlbWVudCBpcyB1c2VkCi0vLyBoZXJlIGJlY2F1c2UgdGhlIHByZXByb2Nlc3NvciBsaWJyYXJ5IGRvZXNuJ3QgaGFuZGxlIG5lZ2F0aXZlIGludGVnZXJzLgotI2RlZmluZSBTRUxFQ1RfQllfU0laRV9TUEVDKG4pIFwKLSAgICBuYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7IFwKLSAgICAgIHN0YXRpYyBjb25zdCBpbnQgTkROQk9PU1RfUFBfQ0FUKHNpemVvZl9jYXNlXywgbikgPSBzaXplb2YoY2FzZV88biAtIDE+KTsgXAotICAgICAgdGVtcGxhdGU8PiBcCi0gICAgICBzdHJ1Y3Qgc2VsZWN0X2J5X3NpemU8IE5ETkJPT1NUX1BQX0NBVChzaXplb2ZfY2FzZV8sIG4pID4geyBcCi0gICAgICAgICAgc3RydWN0IHR5cGUgeyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9IG4gLSAxKTsgfTsgXAotICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gdHlwZTo6dmFsdWUpOyBcCi0gICAgICB9OyBcCi0gICAgfSB9IH0gXAotICAgIC8qKi8KLQotLy8tLS0tLS0tLS0tLS0tLURlZmF1bHQgc3BlY2lhbGl6YXRpb25zIG9mIHNlbGVjdF9ieV9zaXplLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotI2RlZmluZSBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyhuKSBTRUxFQ1RfQllfU0laRV9TUEVDKG4pCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0xJTUlUUyAoMCwgMjApCi0jaW5jbHVkZSBORE5CT09TVF9QUF9MT0NBTF9JVEVSQVRFKCkKLSN1bmRlZiBORE5CT09TVF9QUF9MT0NBTF9NQUNSTwotCi0vLy0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBTRUxFQ1RfQllfU0laRS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jZGVmaW5lIE5ETkJPT1NUX1NFTEVDVF9CWV9TSVpFKHR5cGVfLCBuYW1lLCBleHByKSBcCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKCBcCi0gICAgICAgIHVuc2lnbmVkLCBcCi0gICAgICAgIE5ETkJPT1NUX1BQX0NBVChib29zdF9zZWxlY3RfYnlfc2l6ZV90ZW1wXywgbmFtZSkgPSBzaXplb2YoZXhwcikgXAotICAgICk7IFwKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoIFwKLSAgICAgICAgdHlwZV8sIFwKLSAgICAgICAgbmFtZSA9IFwKLSAgICAgICAgICAgICggOjpuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OnNlbGVjdF9ieV9zaXplPCBcCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfUFBfQ0FUKGJvb3N0X3NlbGVjdF9ieV9zaXplX3RlbXBfLCBuYW1lKSBcCi0gICAgICAgICAgICAgID46OnZhbHVlICkgXAotICAgICkgXAotICAgIC8qKi8KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9TRUxFQ1RfQllfU0laRV9IUFBfSU5DTFVERUQKLQotLy8tLS0tLS0tLS0tU3BlY2lhbGl6YXRpb25zIG9mIFNFTEVDVF9CWV9TSVpFIChvdXRzaWRlIG1haW4gaW5jbHVlZCBndWFyZHMpLS0tLy8KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfU0VMRUNUX0JZX1NJWkVfTUFYX0NBU0UpICYmIFwKLSAgICBORE5CT09TVF9TRUxFQ1RfQllfU0laRV9NQVhfQ0FTRSA+IFNFTEVDVF9CWV9TSVpFX01BWF9TUEVDSUFMSVpFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKG4pIFNFTEVDVF9CWV9TSVpFX1NQRUMobikKLSNkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfTElNSVRTIFwKLSAgICAoU0VMRUNUX0JZX1NJWkVfTUFYX1NQRUNJQUxJWkVELCBORE5CT09TVF9TRUxFQ1RfQllfU0laRV9NQVhfQ0FTRSkgXAotICAgIC8qKi8KLSNpbmNsdWRlIE5ETkJPT1NUX1BQX0xPQ0FMX0lURVJBVEUoKQotI3VuZGVmIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPCi0jdW5kZWYgU0VMRUNUX0JZX1NJWkVfTUFYX1NQRUNJQUxJWkVECi0jZGVmaW5lIFNFTEVDVF9CWV9TSVpFX01BWF9TUEVDSUFMSVpFRCBORE5CT09TVF9TRUxFQ1RfQllfU0laRV9NQVhfQ0FTRQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zdHJlYW1idWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3N0cmVhbWJ1Zi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0OTkzMzIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3N0cmVhbWJ1Zi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX1NUUkVBTUJVRl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9TVFJFQU1CVUZfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZiAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgIAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3dpZGVfc3RyZWFtcy5ocHA+Ci0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19OT19TVFJFQU1fVEVNUExBVEVTCi0jIGluY2x1ZGUgPHN0cmVhbWJ1Zj4KLSNlbHNlIAotIyBpbmNsdWRlIDxzdHJlYW1idWYuaD4KLSNlbmRpZiAKLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fU1RSRUFNX1RFTVBMQVRFUwotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0JBU0lDX1NUUkVBTUJVRihjaCwgdHIpIHN0ZDo6YmFzaWNfc3RyZWFtYnVmPCBjaCwgdHIgPgotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX1BVQlNZTkMgcHVic3luYwotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX1BVQlNFRUtPRkYgcHVic2Vla29mZgotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX1BVQlNFRUtQT1MgcHVic2Vla3BvcwotI2Vsc2UKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19CQVNJQ19TVFJFQU1CVUYoY2gsIHRyKSBzdGQ6OnN0cmVhbWJ1ZgotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX1BVQlNZTkMgc3luYwotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX1BVQlNFRUtPRkYgc2Vla29mZgotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX1BVQlNFRUtQT1Mgc2Vla3BvcwotI2VuZGlmCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfU1RSRUFNQlVGX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3N0cmVhbWJ1Zi9jaGFpbmJ1Zi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc3RyZWFtYnVmL2NoYWluYnVmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU3Yjg1NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc3RyZWFtYnVmL2NoYWluYnVmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNiArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NIQUlOQlVGX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NIQUlOQlVGX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAgICAgICAgICAgICAgICAgICAvLyBORE5CT09TVF9NU1ZDLCB0ZW1wbGF0ZSBmcmllbmRzLgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2hhaW4uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWNjZXNzX2NvbnRyb2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3dpZGVfc3RyZWFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zdHJlYW1idWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc3RyZWFtYnVmL2xpbmtlZF9zdHJlYW1idWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvdHJhbnNsYXRlX2ludF90eXBlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9ub25jb3B5YWJsZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgY2hhaW5idWYtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8KLS8vIFRlbXBsYXRlIG5hbWU6IGNoYWluYnVmLgotLy8gRGVzY3JpcHRpb246IFN0cmVhbSBidWZmZXIgd2hpY2ggb3BlcmF0ZXMgYnkgZGVsZWdhdGluZyB0byB0aGUgZmlyc3QKLS8vICAgICAgbGlua2VkX3N0cmVhbWJ1ZiBpbiBhIGNoYWluLgotLy8gVGVtcGxhdGUgcGFyYW1ldGVyczoKLS8vICAgICAgQ2hhaW4gLSBUaGUgY2hhaW4gdHlwZS4KLS8vCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFpbiwgdHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQWNjZXNzPgotY2xhc3MgY2hhaW5idWYKLSAgICA6IHB1YmxpYyBORE5CT09TVF9JT1NUUkVBTVNfQkFTSUNfU1RSRUFNQlVGKAotICAgICAgICAgICAgICAgICB0eXBlbmFtZSBDaGFpbjo6Y2hhcl90eXBlLAotICAgICAgICAgICAgICAgICB0eXBlbmFtZSBDaGFpbjo6dHJhaXRzX3R5cGUKLSAgICAgICAgICAgICApLAotICAgICAgcHVibGljIGFjY2Vzc19jb250cm9sPHR5cGVuYW1lIENoYWluOjpjbGllbnRfdHlwZSwgQWNjZXNzPiwKLSAgICAgIHByaXZhdGUgbm9uY29weWFibGUKLXsKLXByaXZhdGU6Ci0gICAgdHlwZWRlZiBhY2Nlc3NfY29udHJvbDxjaGFpbl9jbGllbnQ8Q2hhaW4+LCBBY2Nlc3M+ICAgICAgY2xpZW50X3R5cGU7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBDaGFpbjo6Y2hhcl90eXBlICAgICAgICAgICAgICAgICAgICAgICAgY2hhcl90eXBlOwotICAgIE5ETkJPT1NUX0lPU1RSRUFNU19TVFJFQU1CVUZfVFlQRURFRlModHlwZW5hbWUgQ2hhaW46OnRyYWl0c190eXBlKQotcHJvdGVjdGVkOgotICAgIHR5cGVkZWYgbGlua2VkX3N0cmVhbWJ1ZjxjaGFyX3R5cGUsIHRyYWl0c190eXBlPiAgICAgICAgIGRlbGVnYXRlX3R5cGU7Ci0gICAgY2hhaW5idWYoKSB7IGNsaWVudF90eXBlOjpzZXRfY2hhaW4oJmNoYWluXyk7IH0KLSAgICBpbnRfdHlwZSB1bmRlcmZsb3coKSAKLSAgICAgICAgeyBzZW50cnkgdCh0aGlzKTsgcmV0dXJuIHRyYW5zbGF0ZShkZWxlZ2F0ZSgpLnVuZGVyZmxvdygpKTsgfQotICAgIGludF90eXBlIHBiYWNrZmFpbChpbnRfdHlwZSBjKQotICAgICAgICB7IHNlbnRyeSB0KHRoaXMpOyByZXR1cm4gdHJhbnNsYXRlKGRlbGVnYXRlKCkucGJhY2tmYWlsKGMpKTsgfQotICAgIHN0ZDo6c3RyZWFtc2l6ZSB4c2dldG4oY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICAgICAgeyBzZW50cnkgdCh0aGlzKTsgcmV0dXJuIGRlbGVnYXRlKCkueHNnZXRuKHMsIG4pOyB9Ci0gICAgaW50X3R5cGUgb3ZlcmZsb3coaW50X3R5cGUgYykKLSAgICAgICAgeyBzZW50cnkgdCh0aGlzKTsgcmV0dXJuIHRyYW5zbGF0ZShkZWxlZ2F0ZSgpLm92ZXJmbG93KGMpKTsgfQotICAgIHN0ZDo6c3RyZWFtc2l6ZSB4c3B1dG4oY29uc3QgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICAgICAgeyBzZW50cnkgdCh0aGlzKTsgcmV0dXJuIGRlbGVnYXRlKCkueHNwdXRuKHMsIG4pOyB9Ci0gICAgaW50IHN5bmMoKSB7IHNlbnRyeSB0KHRoaXMpOyByZXR1cm4gZGVsZWdhdGUoKS5zeW5jKCk7IH0KLSAgICBwb3NfdHlwZSBzZWVrb2ZmKCBvZmZfdHlwZSBvZmYsIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXksCi0gICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6aW4gfCBORE5CT09TVF9JT1M6Om91dCApCi0gICAgICAgIHsgc2VudHJ5IHQodGhpcyk7IHJldHVybiBkZWxlZ2F0ZSgpLnNlZWtvZmYob2ZmLCB3YXksIHdoaWNoKTsgfQotICAgIHBvc190eXBlIHNlZWtwb3MoIHBvc190eXBlIHNwLAotICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2ggPQotICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6OmluIHwgTkROQk9PU1RfSU9TOjpvdXQgKQotICAgICAgICB7IHNlbnRyeSB0KHRoaXMpOyByZXR1cm4gZGVsZWdhdGUoKS5zZWVrcG9zKHNwLCB3aGljaCk7IH0KLXByb3RlY3RlZDoKLSAgICB0eXBlZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19CQVNJQ19TVFJFQU1CVUYoCi0gICAgICAgICAgICAgICAgIHR5cGVuYW1lIENoYWluOjpjaGFyX3R5cGUsCi0gICAgICAgICAgICAgICAgIHR5cGVuYW1lIENoYWluOjp0cmFpdHNfdHlwZQotICAgICAgICAgICAgICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VfdHlwZTsKLS8vI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA9PSAyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLy8gICAgTkROQk9PU1RfSU9TVFJFQU1TX1VTSU5HX1BST1RFQ1RFRF9TVFJFQU1CVUZfTUVNQkVSUyhiYXNlX3R5cGUpCi0vLyNlbmRpZgotcHJpdmF0ZToKLQotICAgIC8vIFRyYW5zbGF0ZSBmcm9tIHN0ZCBpbnRfdHlwZSB0byBjaGFpbidzIGludF90eXBlLgotICAgIHR5cGVkZWYgTkROQk9PU1RfSU9TVFJFQU1TX0NIQVJfVFJBSVRTKGNoYXJfdHlwZSkgICAgICAgICAgIHN0ZF90cmFpdHM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBDaGFpbjo6dHJhaXRzX3R5cGUgICAgICAgICAgICAgICAgICAgICAgY2hhaW5fdHJhaXRzOwotICAgIHN0YXRpYyB0eXBlbmFtZSBjaGFpbl90cmFpdHM6OmludF90eXBlIAotICAgIHRyYW5zbGF0ZSh0eXBlbmFtZSBzdGRfdHJhaXRzOjppbnRfdHlwZSBjKQotICAgICAgICB7IHJldHVybiB0cmFuc2xhdGVfaW50X3R5cGU8c3RkX3RyYWl0cywgY2hhaW5fdHJhaXRzPihjKTsgfQotCi0gICAgZGVsZWdhdGVfdHlwZSYgZGVsZWdhdGUoKSAKLSAgICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8ZGVsZWdhdGVfdHlwZSY+KGNoYWluXy5mcm9udCgpKTsgfQotICAgIHZvaWQgZ2V0X3BvaW50ZXJzKCkKLSAgICAgICAgewotICAgICAgICAgICAgdGhpcy0+c2V0ZyhkZWxlZ2F0ZSgpLmViYWNrKCksIGRlbGVnYXRlKCkuZ3B0cigpLCBkZWxlZ2F0ZSgpLmVncHRyKCkpOwotICAgICAgICAgICAgdGhpcy0+c2V0cChkZWxlZ2F0ZSgpLnBiYXNlKCksIGRlbGVnYXRlKCkuZXBwdHIoKSk7Ci0gICAgICAgICAgICB0aGlzLT5wYnVtcCgoaW50KSAoZGVsZWdhdGUoKS5wcHRyKCkgLSBkZWxlZ2F0ZSgpLnBiYXNlKCkpKTsKLSAgICAgICAgfQotICAgIHZvaWQgc2V0X3BvaW50ZXJzKCkKLSAgICAgICAgewotICAgICAgICAgICAgZGVsZWdhdGUoKS5zZXRnKHRoaXMtPmViYWNrKCksIHRoaXMtPmdwdHIoKSwgdGhpcy0+ZWdwdHIoKSk7Ci0gICAgICAgICAgICBkZWxlZ2F0ZSgpLnNldHAodGhpcy0+cGJhc2UoKSwgdGhpcy0+ZXBwdHIoKSk7Ci0gICAgICAgICAgICBkZWxlZ2F0ZSgpLnBidW1wKChpbnQpICh0aGlzLT5wcHRyKCkgLSB0aGlzLT5wYmFzZSgpKSk7Ci0gICAgICAgIH0KLSAgICBzdHJ1Y3Qgc2VudHJ5IHsKLSAgICAgICAgc2VudHJ5KGNoYWluYnVmPENoYWluLCBNb2RlLCBBY2Nlc3M+KiBidWYpIDogYnVmXyhidWYpCi0gICAgICAgICAgICB7IGJ1Zl8tPnNldF9wb2ludGVycygpOyB9Ci0gICAgICAgIH5zZW50cnkoKSB7IGJ1Zl8tPmdldF9wb2ludGVycygpOyB9Ci0gICAgICAgIGNoYWluYnVmPENoYWluLCBNb2RlLCBBY2Nlc3M+KiBidWZfOwotICAgIH07Ci0gICAgZnJpZW5kIHN0cnVjdCBzZW50cnk7Ci0gICAgQ2hhaW4gY2hhaW5fOwotfTsKLQotfSB9IH0gLy8gRW5kIG5hbWVzcGFjZXMgZGV0YWlsLCBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NIQUlOQlVGX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3N0cmVhbWJ1Zi9kaXJlY3Rfc3RyZWFtYnVmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zdHJlYW1idWYvZGlyZWN0X3N0cmVhbWJ1Zi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjNzk2MDQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3N0cmVhbWJ1Zi9kaXJlY3Rfc3RyZWFtYnVmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMxMyArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0RJUkVDVF9TVFJFQU1CVUZfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfRElSRUNUX1NUUkVBTUJVRl9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4KLSNpbmNsdWRlIDx0eXBlaW5mbz4KLSNpbmNsdWRlIDx1dGlsaXR5PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBhaXIuCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gICAgICAgICAgICAgICAgICAgICAgICAvLyBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FLCAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NoYXJfdHJhaXRzLmhwcD4gIC8vIG1lbWJlciB0ZW1wbGF0ZSBmcmllbmRzLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3dpZGVfc3RyZWFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9lcnJvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9leGVjdXRlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Z1bmN0aW9uYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL29wdGlvbmFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3N0cmVhbWJ1Zi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zdHJlYW1idWYvbGlua2VkX3N0cmVhbWJ1Zi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9wb3NpdGlvbmluZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGhyb3dfZXhjZXB0aW9uLmhwcD4KLQotLy8gTXVzdCBjb21lIGxhc3QuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZGlzYWJsZV93YXJuaW5ncy5ocHA+IC8vIE1TVkMuCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgeyAKLSAgICAKLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwKLSAgICAgICAgICB0eXBlbmFtZSBUciA9IAotICAgICAgICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfQ0hBUl9UUkFJVFMoCi0gICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlIAotICAgICAgICAgICAgICApID4KLWNsYXNzIGRpcmVjdF9zdHJlYW1idWYgCi0gICAgOiBwdWJsaWMgbGlua2VkX3N0cmVhbWJ1ZjxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSwgVHI+Ci17Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUgICAgICAgICAgICAgICAgY2hhcl90eXBlOwotICAgIE5ETkJPT1NUX0lPU1RSRUFNU19TVFJFQU1CVUZfVFlQRURFRlMoVHIpCi1wcml2YXRlOgotICAgIHR5cGVkZWYgbGlua2VkX3N0cmVhbWJ1ZjxjaGFyX3R5cGUsIHRyYWl0c190eXBlPiAgICAgIGJhc2VfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNhdGVnb3J5X29mPFQ+Ojp0eXBlICAgICAgICAgICAgICAgICBjYXRlZ29yeTsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19CQVNJQ19TVFJFQU1CVUYoCi0gICAgICAgICAgICAgICAgY2hhcl90eXBlLCB0cmFpdHNfdHlwZQotICAgICAgICAgICAgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbWJ1Zl90eXBlOwotcHVibGljOiAvLyBzdHJlYW0gbmVlZHMgYWNjZXNzLgotICAgIHZvaWQgb3Blbihjb25zdCBUJiB0LCBzdGQ6OnN0cmVhbXNpemUgYnVmZmVyX3NpemUsIAotICAgICAgICAgICAgICBzdGQ6OnN0cmVhbXNpemUgcGJhY2tfc2l6ZSk7Ci0gICAgYm9vbCBpc19vcGVuKCkgY29uc3Q7Ci0gICAgdm9pZCBjbG9zZSgpOwotICAgIGJvb2wgYXV0b19jbG9zZSgpIGNvbnN0IHsgcmV0dXJuIGF1dG9fY2xvc2VfOyB9Ci0gICAgdm9pZCBzZXRfYXV0b19jbG9zZShib29sIGNsb3NlKSB7IGF1dG9fY2xvc2VfID0gY2xvc2U7IH0KLSAgICBib29sIHN0cmljdF9zeW5jKCkgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgLy8gRGVjbGFyZWQgaW4gbGlua2VkX3N0cmVhbWJ1Zi4KLSAgICBUKiBjb21wb25lbnQoKSB7IHJldHVybiBzdG9yYWdlXy5nZXQoKTsgfQotcHJvdGVjdGVkOgotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA9PSAyKQotICAgIE5ETkJPT1NUX0lPU1RSRUFNU19VU0lOR19QUk9URUNURURfU1RSRUFNQlVGX01FTUJFUlMoYmFzZV90eXBlKQotI2VuZGlmCi0gICAgZGlyZWN0X3N0cmVhbWJ1ZigpOwotCi0gICAgLy8tLS0tLS0tLS0tLS0tLVZpcnR1YWwgZnVuY3Rpb25zLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgLy8gRGVjbGFyZWQgaW4gbGlua2VkX3N0cmVhbWJ1Zi4KLSAgICB2b2lkIGNsb3NlX2ltcGwoTkROQk9PU1RfSU9TOjpvcGVubW9kZSBtKTsKLSAgICBjb25zdCBzdGQ6OnR5cGVfaW5mbyYgY29tcG9uZW50X3R5cGUoKSBjb25zdCB7IHJldHVybiB0eXBlaWQoVCk7IH0KLSAgICB2b2lkKiBjb21wb25lbnRfaW1wbCgpIHsgcmV0dXJuIGNvbXBvbmVudCgpOyB9IAotI2lmZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19OT19TVFJFQU1fVEVNUExBVEVTCi0gICAgcHVibGljOgotI2VuZGlmCi0KLSAgICAvLyBEZWNsYXJlZCBpbiBiYXNpY19zdHJlYW1idWYuCi0gICAgaW50X3R5cGUgdW5kZXJmbG93KCk7Ci0gICAgaW50X3R5cGUgcGJhY2tmYWlsKGludF90eXBlIGMpOwotICAgIGludF90eXBlIG92ZXJmbG93KGludF90eXBlIGMpOwotICAgIHBvc190eXBlIHNlZWtvZmYoIG9mZl90eXBlIG9mZiwgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSwKLSAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoICk7Ci0gICAgcG9zX3R5cGUgc2Vla3Bvcyhwb3NfdHlwZSBzcCwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCk7Ci1wcml2YXRlOgotICAgIHBvc190eXBlIHNlZWtfaW1wbCggc3RyZWFtX29mZnNldCBvZmYsIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXksCi0gICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoICk7Ci0gICAgdm9pZCBpbml0X2lucHV0KGFueV90YWcpIHsgfQotICAgIHZvaWQgaW5pdF9pbnB1dChpbnB1dCk7Ci0gICAgdm9pZCBpbml0X291dHB1dChhbnlfdGFnKSB7IH0KLSAgICB2b2lkIGluaXRfb3V0cHV0KG91dHB1dCk7Ci0gICAgdm9pZCBpbml0X2dldF9hcmVhKCk7Ci0gICAgdm9pZCBpbml0X3B1dF9hcmVhKCk7Ci0gICAgYm9vbCBvbmVfaGVhZCgpIGNvbnN0OwotICAgIGJvb2wgdHdvX2hlYWQoKSBjb25zdDsKLSAgICBvcHRpb25hbDxUPiAgc3RvcmFnZV87Ci0gICAgY2hhcl90eXBlICAgKmliZWdfLCAqaWVuZF8sICpvYmVnXywgKm9lbmRfOwotICAgIGJvb2wgICAgICAgICBhdXRvX2Nsb3NlXzsKLX07Ci0gICAgICAgICAgICAgICAgICAgIAotLy8tLS0tLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiBkaXJlY3Rfc3RyZWFtYnVmLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHI+Ci1kaXJlY3Rfc3RyZWFtYnVmPFQsIFRyPjo6ZGlyZWN0X3N0cmVhbWJ1ZigpIAotICAgIDogaWJlZ18oMCksIGllbmRfKDApLCBvYmVnXygwKSwgb2VuZF8oMCksIGF1dG9fY2xvc2VfKHRydWUpIAoteyB0aGlzLT5zZXRfdHJ1ZV9lb2YodHJ1ZSk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHI+Ci12b2lkIGRpcmVjdF9zdHJlYW1idWY8VCwgVHI+OjpvcGVuCi0gICAgKGNvbnN0IFQmIHQsIHN0ZDo6c3RyZWFtc2l6ZSwgc3RkOjpzdHJlYW1zaXplKQotewotICAgIHN0b3JhZ2VfLnJlc2V0KHQpOwotICAgIGluaXRfaW5wdXQoY2F0ZWdvcnkoKSk7Ci0gICAgaW5pdF9vdXRwdXQoY2F0ZWdvcnkoKSk7Ci0gICAgc2V0ZygwLCAwLCAwKTsKLSAgICBzZXRwKDAsIDApOwotICAgIHRoaXMtPnNldF9uZWVkc19jbG9zZSgpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUcj4KLWJvb2wgZGlyZWN0X3N0cmVhbWJ1ZjxULCBUcj46OmlzX29wZW4oKSBjb25zdCAKLXsgcmV0dXJuIGliZWdfICE9IDAgfHwgb2JlZ18gIT0gMDsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUcj4KLXZvaWQgZGlyZWN0X3N0cmVhbWJ1ZjxULCBUcj46OmNsb3NlKCkgCi17IAotICAgIGJhc2VfdHlwZSogc2VsZiA9IHRoaXM7Ci0gICAgZGV0YWlsOjpleGVjdXRlX2FsbCggZGV0YWlsOjpjYWxsX21lbWJlcl9jbG9zZSgqc2VsZiwgTkROQk9PU1RfSU9TOjppbiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjpjYWxsX21lbWJlcl9jbG9zZSgqc2VsZiwgTkROQk9PU1RfSU9TOjpvdXQpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9yZXNldChzdG9yYWdlXykgKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHI+Ci10eXBlbmFtZSBkaXJlY3Rfc3RyZWFtYnVmPFQsIFRyPjo6aW50X3R5cGUgCi1kaXJlY3Rfc3RyZWFtYnVmPFQsIFRyPjo6dW5kZXJmbG93KCkKLXsKLSAgICBpZiAoIWliZWdfKSAKLSAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihjYW50X3JlYWQoKSk7Ci0gICAgaWYgKCFncHRyKCkpIAotICAgICAgICBpbml0X2dldF9hcmVhKCk7Ci0gICAgcmV0dXJuIGdwdHIoKSAhPSBpZW5kXyA/IAotICAgICAgICB0cmFpdHNfdHlwZTo6dG9faW50X3R5cGUoKmdwdHIoKSkgOiAKLSAgICAgICAgdHJhaXRzX3R5cGU6OmVvZigpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUcj4KLXR5cGVuYW1lIGRpcmVjdF9zdHJlYW1idWY8VCwgVHI+OjppbnRfdHlwZSAKLWRpcmVjdF9zdHJlYW1idWY8VCwgVHI+OjpwYmFja2ZhaWwoaW50X3R5cGUgYykKLXsKLSAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgIGlmICghaWJlZ18pIAotICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGNhbnRfcmVhZCgpKTsKLSAgICBpZiAoZ3B0cigpICE9IDAgJiYgZ3B0cigpICE9IGliZWdfKSB7Ci0gICAgICAgIGdidW1wKC0xKTsKLSAgICAgICAgaWYgKCF0cmFpdHNfdHlwZTo6ZXFfaW50X3R5cGUoYywgdHJhaXRzX3R5cGU6OmVvZigpKSkKLSAgICAgICAgICAgICpncHRyKCkgPSB0cmFpdHNfdHlwZTo6dG9fY2hhcl90eXBlKGMpOwotICAgICAgICByZXR1cm4gdHJhaXRzX3R5cGU6Om5vdF9lb2YoYyk7Ci0gICAgfQotICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oYmFkX3B1dGJhY2soKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyPgotdHlwZW5hbWUgZGlyZWN0X3N0cmVhbWJ1ZjxULCBUcj46OmludF90eXBlIAotZGlyZWN0X3N0cmVhbWJ1ZjxULCBUcj46Om92ZXJmbG93KGludF90eXBlIGMpCi17Ci0gICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICBpZiAoIW9iZWdfKQotICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFKCJubyB3cml0ZSBhY2Nlc3MiKSk7Ci0gICAgaWYgKCFwcHRyKCkpIGluaXRfcHV0X2FyZWEoKTsKLSAgICBpZiAoIXRyYWl0c190eXBlOjplcV9pbnRfdHlwZShjLCB0cmFpdHNfdHlwZTo6ZW9mKCkpKSB7Ci0gICAgICAgIGlmIChwcHRyKCkgPT0gb2VuZF8pCi0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFKCJ3cml0ZSBhcmVhIGV4aGF1c3RlZCIpCi0gICAgICAgICAgICApOwotICAgICAgICAqcHB0cigpID0gdHJhaXRzX3R5cGU6OnRvX2NoYXJfdHlwZShjKTsKLSAgICAgICAgcGJ1bXAoMSk7Ci0gICAgICAgIHJldHVybiBjOwotICAgIH0KLSAgICByZXR1cm4gdHJhaXRzX3R5cGU6Om5vdF9lb2YoYyk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyPgotaW5saW5lIHR5cGVuYW1lIGRpcmVjdF9zdHJlYW1idWY8VCwgVHI+Ojpwb3NfdHlwZQotZGlyZWN0X3N0cmVhbWJ1ZjxULCBUcj46OnNlZWtvZmYKLSAgICAob2ZmX3R5cGUgb2ZmLCBORE5CT09TVF9JT1M6OnNlZWtkaXIgd2F5LCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKQoteyByZXR1cm4gc2Vla19pbXBsKG9mZiwgd2F5LCB3aGljaCk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHI+Ci1pbmxpbmUgdHlwZW5hbWUgZGlyZWN0X3N0cmVhbWJ1ZjxULCBUcj46OnBvc190eXBlCi1kaXJlY3Rfc3RyZWFtYnVmPFQsIFRyPjo6c2Vla3BvcwotICAgIChwb3NfdHlwZSBzcCwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLXsgCi0gICAgcmV0dXJuIHNlZWtfaW1wbChwb3NpdGlvbl90b19vZmZzZXQoc3ApLCBORE5CT09TVF9JT1M6OmJlZywgd2hpY2gpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUcj4KLXZvaWQgZGlyZWN0X3N0cmVhbWJ1ZjxULCBUcj46OmNsb3NlX2ltcGwoTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLXsKLSAgICBpZiAod2hpY2ggPT0gTkROQk9PU1RfSU9TOjppbiAmJiBpYmVnXyAhPSAwKSB7Ci0gICAgICAgIHNldGcoMCwgMCwgMCk7Ci0gICAgICAgIGliZWdfID0gaWVuZF8gPSAwOwotICAgIH0KLSAgICBpZiAod2hpY2ggPT0gTkROQk9PU1RfSU9TOjpvdXQgJiYgb2JlZ18gIT0gMCkgewotICAgICAgICBzeW5jKCk7Ci0gICAgICAgIHNldHAoMCwgMCk7Ci0gICAgICAgIG9iZWdfID0gb2VuZF8gPSAwOwotICAgIH0KLSAgICBuZG5ib29zdDo6aW9zdHJlYW1zOjpjbG9zZSgqc3RvcmFnZV8sIHdoaWNoKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHI+Ci10eXBlbmFtZSBkaXJlY3Rfc3RyZWFtYnVmPFQsIFRyPjo6cG9zX3R5cGUgZGlyZWN0X3N0cmVhbWJ1ZjxULCBUcj46OnNlZWtfaW1wbAotICAgIChzdHJlYW1fb2Zmc2V0IG9mZiwgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLXsKLSAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgYm90aCA9IE5ETkJPT1NUX0lPUzo6aW4gfCBORE5CT09TVF9JT1M6Om91dDsKLSAgICBpZiAodHdvX2hlYWQoKSAmJiAod2hpY2ggJiBib3RoKSA9PSBib3RoKQotICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGJhZF9zZWVrKCkpOwotICAgIHN0cmVhbV9vZmZzZXQgcmVzdWx0ID0gLTE7Ci0gICAgYm9vbCBvbmUgPSBvbmVfaGVhZCgpOwotICAgIGlmIChvbmUgJiYgKHBwdHIoKSAhPSAwIHx8IGdwdHIoKT09IDApKQotICAgICAgICBpbml0X2dldF9hcmVhKCk7IC8vIFN3aXRjaCB0byBpbnB1dCBtb2RlLCBmb3IgY29kZSByZXVzZS4KLSAgICBpZiAob25lIHx8ICgod2hpY2ggJiBORE5CT09TVF9JT1M6OmluKSAhPSAwICYmIGliZWdfICE9IDApKSB7Ci0gICAgICAgIGlmICghZ3B0cigpKSBzZXRnKGliZWdfLCBpYmVnXywgaWVuZF8pOwotICAgICAgICBwdHJkaWZmX3QgbmV4dCA9IDA7Ci0gICAgICAgIHN3aXRjaCAod2F5KSB7Ci0gICAgICAgIGNhc2UgTkROQk9PU1RfSU9TOjpiZWc6IG5leHQgPSBvZmY7IGJyZWFrOwotICAgICAgICBjYXNlIE5ETkJPT1NUX0lPUzo6Y3VyOiBuZXh0ID0gKGdwdHIoKSAtIGliZWdfKSArIG9mZjsgYnJlYWs7Ci0gICAgICAgIGNhc2UgTkROQk9PU1RfSU9TOjplbmQ6IG5leHQgPSAoaWVuZF8gLSBpYmVnXykgKyBvZmY7IGJyZWFrOwotICAgICAgICBkZWZhdWx0OiBORE5CT09TVF9BU1NFUlQoMCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG5leHQgPCAwIHx8IG5leHQgPiAoaWVuZF8gLSBpYmVnXykpCi0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGJhZF9zZWVrKCkpOwotICAgICAgICBzZXRnKGliZWdfLCBpYmVnXyArIG5leHQsIGllbmRfKTsKLSAgICAgICAgcmVzdWx0ID0gbmV4dDsKLSAgICB9Ci0gICAgaWYgKCFvbmUgJiYgKHdoaWNoICYgTkROQk9PU1RfSU9TOjpvdXQpICE9IDAgJiYgb2JlZ18gIT0gMCkgewotICAgICAgICBpZiAoIXBwdHIoKSkgc2V0cChvYmVnXywgb2VuZF8pOwotICAgICAgICBwdHJkaWZmX3QgbmV4dCA9IDA7Ci0gICAgICAgIHN3aXRjaCAod2F5KSB7Ci0gICAgICAgIGNhc2UgTkROQk9PU1RfSU9TOjpiZWc6IG5leHQgPSBvZmY7IGJyZWFrOwotICAgICAgICBjYXNlIE5ETkJPT1NUX0lPUzo6Y3VyOiBuZXh0ID0gKHBwdHIoKSAtIG9iZWdfKSArIG9mZjsgYnJlYWs7Ci0gICAgICAgIGNhc2UgTkROQk9PU1RfSU9TOjplbmQ6IG5leHQgPSAob2VuZF8gLSBvYmVnXykgKyBvZmY7IGJyZWFrOwotICAgICAgICBkZWZhdWx0OiBORE5CT09TVF9BU1NFUlQoMCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG5leHQgPCAwIHx8IG5leHQgPiAob2VuZF8gLSBvYmVnXykpCi0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGJhZF9zZWVrKCkpOwotICAgICAgICBwYnVtcChzdGF0aWNfY2FzdDxpbnQ+KG5leHQgLSAocHB0cigpIC0gb2JlZ18pKSk7Ci0gICAgICAgIHJlc3VsdCA9IG5leHQ7Ci0gICAgfQotICAgIHJldHVybiBvZmZzZXRfdG9fcG9zaXRpb24ocmVzdWx0KTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHI+Ci12b2lkIGRpcmVjdF9zdHJlYW1idWY8VCwgVHI+Ojppbml0X2lucHV0KGlucHV0KQotewotICAgIHN0ZDo6cGFpcjxjaGFyX3R5cGUqLCBjaGFyX3R5cGUqPiBwID0gaW5wdXRfc2VxdWVuY2UoKnN0b3JhZ2VfKTsKLSAgICBpYmVnXyA9IHAuZmlyc3Q7Ci0gICAgaWVuZF8gPSBwLnNlY29uZDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHI+Ci12b2lkIGRpcmVjdF9zdHJlYW1idWY8VCwgVHI+Ojppbml0X291dHB1dChvdXRwdXQpCi17Ci0gICAgc3RkOjpwYWlyPGNoYXJfdHlwZSosIGNoYXJfdHlwZSo+IHAgPSBvdXRwdXRfc2VxdWVuY2UoKnN0b3JhZ2VfKTsKLSAgICBvYmVnXyA9IHAuZmlyc3Q7Ci0gICAgb2VuZF8gPSBwLnNlY29uZDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHI+Ci12b2lkIGRpcmVjdF9zdHJlYW1idWY8VCwgVHI+Ojppbml0X2dldF9hcmVhKCkKLXsKLSAgICBzZXRnKGliZWdfLCBpYmVnXywgaWVuZF8pOwotICAgIGlmIChvbmVfaGVhZCgpICYmIHBwdHIoKSkgewotICAgICAgICBnYnVtcChzdGF0aWNfY2FzdDxpbnQ+KHBwdHIoKSAtIG9iZWdfKSk7Ci0gICAgICAgIHNldHAoMCwgMCk7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUcj4KLXZvaWQgZGlyZWN0X3N0cmVhbWJ1ZjxULCBUcj46OmluaXRfcHV0X2FyZWEoKQotewotICAgIHNldHAob2JlZ18sIG9lbmRfKTsKLSAgICBpZiAob25lX2hlYWQoKSAmJiBncHRyKCkpIHsKLSAgICAgICAgcGJ1bXAoc3RhdGljX2Nhc3Q8aW50PihncHRyKCkgLSBpYmVnXykpOwotICAgICAgICBzZXRnKDAsIDAsIDApOwotICAgIH0KLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHI+Ci1pbmxpbmUgYm9vbCBkaXJlY3Rfc3RyZWFtYnVmPFQsIFRyPjo6b25lX2hlYWQoKSBjb25zdAoteyByZXR1cm4gaWJlZ18gJiYgb2JlZ18gJiYgaWJlZ18gPT0gb2JlZ187IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHI+Ci1pbmxpbmUgYm9vbCBkaXJlY3Rfc3RyZWFtYnVmPFQsIFRyPjo6dHdvX2hlYWQoKSBjb25zdAoteyByZXR1cm4gaWJlZ18gJiYgb2JlZ18gJiYgaWJlZ18gIT0gb2JlZ187IH0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9lbmFibGVfd2FybmluZ3MuaHBwPiAvLyBNU1ZDCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfRElSRUNUX1NUUkVBTUJVRl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zdHJlYW1idWYvaW5kaXJlY3Rfc3RyZWFtYnVmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zdHJlYW1idWYvaW5kaXJlY3Rfc3RyZWFtYnVmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDY1N2RkYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc3RyZWFtYnVmL2luZGlyZWN0X3N0cmVhbWJ1Zi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MzIgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBUaGlzIG1hdGVyaWFsIGlzIGhlYXZpbHkgaW5kZWJ0ZWQgdG8gdGhlIGRpc2N1c3Npb24gYW5kIGNvZGUgc2FtcGxlcyBpbgotLy8gQS4gTGFuZ2VyIGFuZCBLLiBLcmVmdCwgIlN0YW5kYXJkIEMrKyBJT1N0cmVhbXMgYW5kIExvY2FsZXMiLAotLy8gQWRkaXNvbi1XZXNsZXksIDIwMDAsIHBwLiAyMjgtNDMuCi0KLS8vIFVzZXIgIkdNU0IiIHByb3ZpZGVkIGFuIG9wdGltaXphdGlvbiBmb3Igc21hbGwgc2Vla3MuCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9JTkRJUkVDVF9TVFJFQU1CVUZfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfSU5ESVJFQ1RfU1RSRUFNQlVGX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWluLCBtYXguCi0jaW5jbHVkZSA8Y2Fzc2VydD4KLSNpbmNsdWRlIDxleGNlcHRpb24+Ci0jaW5jbHVkZSA8dHlwZWluZm8+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gICAgICAgICAgICAgICAgICAgICAgLy8gTWVtYmVyIHRlbXBsYXRlIGZyaWVuZHMuCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jb25zdGFudHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRhcHRlci9jb25jZXB0X2FkYXB0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYnVmZmVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy93aWRlX3N0cmVhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZG91YmxlX29iamVjdC5ocHA+IAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZXhlY3V0ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9mdW5jdGlvbmFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9vcHRpb25hbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9wdXNoLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3N0cmVhbWJ1Zi9saW5rZWRfc3RyZWFtYnVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvb3BlcmF0aW9ucy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3Bvc2l0aW9uaW5nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvb3BlcmF0aW9ucy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90aHJvd19leGNlcHRpb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4KLQotLy8gTXVzdCBjb21lIGxhc3QuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZGlzYWJsZV93YXJuaW5ncy5ocHA+ICAvLyBNU1ZDLCBCQ0MgNS54Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8KLS8vIERlc2NyaXB0aW9uOiBUaGUgaW1wbGVtZW50YXRpb24gb2YgYmFzaWNfc3RyZWFtYnVmIHVzZWQgYnkgY2hhaW5zLgotLy8KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyLCB0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgTW9kZT4KLWNsYXNzIGluZGlyZWN0X3N0cmVhbWJ1ZgotICAgIDogcHVibGljIGxpbmtlZF9zdHJlYW1idWY8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUsIFRyPgotewotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlICAgICAgICAgICAgICAgICAgICBjaGFyX3R5cGU7Ci0gICAgTkROQk9PU1RfSU9TVFJFQU1TX1NUUkVBTUJVRl9UWVBFREVGUyhUcikKLXByaXZhdGU6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjYXRlZ29yeV9vZjxUPjo6dHlwZSAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5OwotICAgIHR5cGVkZWYgY29uY2VwdF9hZGFwdGVyPFQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwcGVyOwotICAgIHR5cGVkZWYgZGV0YWlsOjpiYXNpY19idWZmZXI8Y2hhcl90eXBlLCBBbGxvYz4gICAgICAgICAgICBidWZmZXJfdHlwZTsKLSAgICB0eXBlZGVmIGluZGlyZWN0X3N0cmVhbWJ1ZjxULCBUciwgQWxsb2MsIE1vZGU+ICAgICAgICAgICAgbXlfdHlwZTsKLSAgICB0eXBlZGVmIGRldGFpbDo6bGlua2VkX3N0cmVhbWJ1ZjxjaGFyX3R5cGUsIHRyYWl0c190eXBlPiAgYmFzZV90eXBlOwotICAgIHR5cGVkZWYgbGlua2VkX3N0cmVhbWJ1ZjxjaGFyX3R5cGUsIFRyPiAgICAgICAgICAgICAgICAgICBzdHJlYW1idWZfdHlwZTsKLXB1YmxpYzoKLSAgICBpbmRpcmVjdF9zdHJlYW1idWYoKTsKLQotICAgIHZvaWQgb3Blbihjb25zdCBUJiB0IE5ETkJPT1NUX0lPU1RSRUFNU19QVVNIX1BBUkFNUygpKTsKLSAgICBib29sIGlzX29wZW4oKSBjb25zdDsKLSAgICB2b2lkIGNsb3NlKCk7Ci0gICAgYm9vbCBhdXRvX2Nsb3NlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRfYXV0b19jbG9zZShib29sIGNsb3NlKTsKLSAgICBib29sIHN0cmljdF9zeW5jKCk7Ci0KLSAgICAvLyBEZWNsYXJlZCBpbiBsaW5rZWRfc3RyZWFtYnVmLgotICAgIFQqIGNvbXBvbmVudCgpIHsgcmV0dXJuICYqb2JqKCk7IH0KLXByb3RlY3RlZDoKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPT0gMikKLSAgICBORE5CT09TVF9JT1NUUkVBTVNfVVNJTkdfUFJPVEVDVEVEX1NUUkVBTUJVRl9NRU1CRVJTKGJhc2VfdHlwZSkKLSNlbmRpZgotCi0gICAgLy8tLS0tLS0tLS0tdmlydHVhbCBmdW5jdGlvbnMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19OT19MT0NBTEUKLSAgICB2b2lkIGltYnVlKGNvbnN0IHN0ZDo6bG9jYWxlJiBsb2MpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMKLSAgICBwdWJsaWM6Ci0jZW5kaWYKLSAgICBpbnRfdHlwZSB1bmRlcmZsb3coKTsKLSAgICBpbnRfdHlwZSBwYmFja2ZhaWwoaW50X3R5cGUgYyk7Ci0gICAgaW50X3R5cGUgb3ZlcmZsb3coaW50X3R5cGUgYyk7Ci0gICAgaW50IHN5bmMoKTsKLSAgICBwb3NfdHlwZSBzZWVrb2ZmKCBvZmZfdHlwZSBvZmYsIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXksCi0gICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCApOwotICAgIHBvc190eXBlIHNlZWtwb3MocG9zX3R5cGUgc3AsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpOwotCi0gICAgLy8gRGVjbGFyZWQgaW4gbGlua2VkX3N0cmVhbWJ1Zi4KLSAgICB2b2lkIHNldF9uZXh0KHN0cmVhbWJ1Zl90eXBlKiBuZXh0KTsKLSAgICB2b2lkIGNsb3NlX2ltcGwoTkROQk9PU1RfSU9TOjpvcGVubW9kZSBtKTsKLSAgICBjb25zdCBzdGQ6OnR5cGVfaW5mbyYgY29tcG9uZW50X3R5cGUoKSBjb25zdCB7IHJldHVybiB0eXBlaWQoVCk7IH0KLSAgICB2b2lkKiBjb21wb25lbnRfaW1wbCgpIHsgcmV0dXJuIGNvbXBvbmVudCgpOyB9Ci1wcml2YXRlOgotCi0gICAgLy8tLS0tLS0tLS0tQWNjZXNzb3IgZnVuY3Rpb25zLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgd3JhcHBlciYgb2JqKCkgeyByZXR1cm4gKnN0b3JhZ2VfOyB9Ci0gICAgc3RyZWFtYnVmX3R5cGUqIG5leHQoKSBjb25zdCB7IHJldHVybiBuZXh0XzsgfQotICAgIGJ1ZmZlcl90eXBlJiBpbigpIHsgcmV0dXJuIGJ1ZmZlcl8uZmlyc3QoKTsgfQotICAgIGJ1ZmZlcl90eXBlJiBvdXQoKSB7IHJldHVybiBidWZmZXJfLnNlY29uZCgpOyB9Ci0gICAgYm9vbCBjYW5fcmVhZCgpIGNvbnN0IHsgcmV0dXJuIGlzX2NvbnZlcnRpYmxlPE1vZGUsIGlucHV0Pjo6dmFsdWU7IH0KLSAgICBib29sIGNhbl93cml0ZSgpIGNvbnN0IHsgcmV0dXJuIGlzX2NvbnZlcnRpYmxlPE1vZGUsIG91dHB1dD46OnZhbHVlOyB9Ci0gICAgYm9vbCBvdXRwdXRfYnVmZmVyZWQoKSBjb25zdCB7IHJldHVybiAoZmxhZ3NfICYgZl9vdXRwdXRfYnVmZmVyZWQpICE9IDA7IH0KLSAgICBib29sIHNoYXJlZF9idWZmZXIoKSBjb25zdCB7IHJldHVybiBpc19jb252ZXJ0aWJsZTxNb2RlLCBzZWVrYWJsZT46OnZhbHVlOyB9Ci0gICAgdm9pZCBzZXRfZmxhZ3MoaW50IGYpIHsgZmxhZ3NfID0gZjsgfQotCi0gICAgLy8tLS0tLS0tLS0tU3RhdGUgY2hhbmdpbmcgZnVuY3Rpb25zLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgdmlydHVhbCB2b2lkIGluaXRfZ2V0X2FyZWEoKTsKLSAgICB2aXJ0dWFsIHZvaWQgaW5pdF9wdXRfYXJlYSgpOwotCi0gICAgLy8tLS0tLS0tLS0tVXRpbGl0eSBmdW5jdGlvbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgcG9zX3R5cGUgc2Vla19pbXBsKCBzdHJlYW1fb2Zmc2V0IG9mZiwgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSwKLSAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2ggKTsKLSAgICB2b2lkIHN5bmNfaW1wbCgpOwotCi0gICAgZW51bSBmbGFnX3R5cGUgewotICAgICAgICBmX29wZW4gICAgICAgICAgICAgPSAxLAotICAgICAgICBmX291dHB1dF9idWZmZXJlZCAgPSBmX29wZW4gPDwgMSwKLSAgICAgICAgZl9hdXRvX2Nsb3NlICAgICAgID0gZl9vdXRwdXRfYnVmZmVyZWQgPDwgMQotICAgIH07Ci0KLSAgICBvcHRpb25hbDx3cmFwcGVyPiAgICAgICAgICAgc3RvcmFnZV87Ci0gICAgc3RyZWFtYnVmX3R5cGUqICAgICAgICAgICAgIG5leHRfOwotICAgIGRvdWJsZV9vYmplY3Q8Ci0gICAgICAgIGJ1ZmZlcl90eXBlLAotICAgICAgICBpc19jb252ZXJ0aWJsZTwKLSAgICAgICAgICAgIE1vZGUsCi0gICAgICAgICAgICB0d29fc2VxdWVuY2UKLSAgICAgICAgPgotICAgID4gICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfOwotICAgIHN0ZDo6c3RyZWFtc2l6ZSAgICAgICAgICAgICBwYmFja19zaXplXzsKLSAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3NfOwotfTsKLQotLy8tLS0tLS0tLS0tLS0tLUltcGxlbWVudGF0aW9uIG9mIGluZGlyZWN0X3N0cmVhbWJ1Zi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHIsIHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBNb2RlPgotaW5kaXJlY3Rfc3RyZWFtYnVmPFQsIFRyLCBBbGxvYywgTW9kZT46OmluZGlyZWN0X3N0cmVhbWJ1ZigpCi0gICAgOiBuZXh0XygwKSwgcGJhY2tfc2l6ZV8oMCksIGZsYWdzXyhmX2F1dG9fY2xvc2UpIHsgfQotCi0vLy0tLS0tLS0tLS0tLS0tSW1wbGVtZW50YXRpb24gb2Ygb3BlbiwgaXNfb3BlbiBhbmQgY2xvc2UtLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGU+Ci12b2lkIGluZGlyZWN0X3N0cmVhbWJ1ZjxULCBUciwgQWxsb2MsIE1vZGU+OjpvcGVuCi0gICAgKGNvbnN0IFQmIHQsIHN0ZDo6c3RyZWFtc2l6ZSBidWZmZXJfc2l6ZSwgc3RkOjpzdHJlYW1zaXplIHBiYWNrX3NpemUpCi17Ci0gICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQotICAgIC8vIE5vcm1hbGl6ZSBidWZmZXIgc2l6ZXMuCi0gICAgYnVmZmVyX3NpemUgPQotICAgICAgICAoYnVmZmVyX3NpemUgIT0gLTEpID8KLSAgICAgICAgYnVmZmVyX3NpemUgOgotICAgICAgICBpb3N0cmVhbXM6Om9wdGltYWxfYnVmZmVyX3NpemUodCk7Ci0gICAgcGJhY2tfc2l6ZSA9Ci0gICAgICAgIChwYmFja19zaXplICE9IC0xKSA/Ci0gICAgICAgIHBiYWNrX3NpemUgOgotICAgICAgICBkZWZhdWx0X3BiYWNrX2J1ZmZlcl9zaXplOwotCi0gICAgLy8gQ29uc3RydWN0IGlucHV0IGJ1ZmZlci4KLSAgICBpZiAoY2FuX3JlYWQoKSkgewotICAgICAgICBwYmFja19zaXplXyA9IChzdGQ6Om1heCkoc3RkOjpzdHJlYW1zaXplKDIpLCBwYmFja19zaXplKTsgLy8gU1RMUG9ydCBuZWVkcyAyLgotICAgICAgICBzdGQ6OnN0cmVhbXNpemUgc2l6ZSA9Ci0gICAgICAgICAgICBwYmFja19zaXplXyArCi0gICAgICAgICAgICAoIGJ1ZmZlcl9zaXplID8gYnVmZmVyX3NpemU6IDEgKTsKLSAgICAgICAgaW4oKS5yZXNpemUoc2l6ZSk7Ci0gICAgICAgIGlmICghc2hhcmVkX2J1ZmZlcigpKQotICAgICAgICAgICAgaW5pdF9nZXRfYXJlYSgpOwotICAgIH0KLQotICAgIC8vIENvbnN0cnVjdCBvdXRwdXQgYnVmZmVyLgotICAgIGlmIChjYW5fd3JpdGUoKSAmJiAhc2hhcmVkX2J1ZmZlcigpKSB7Ci0gICAgICAgIGlmIChidWZmZXJfc2l6ZSAhPSAwKQotICAgICAgICAgICAgb3V0KCkucmVzaXplKGJ1ZmZlcl9zaXplKTsKLSAgICAgICAgaW5pdF9wdXRfYXJlYSgpOwotICAgIH0KLQotICAgIHN0b3JhZ2VfLnJlc2V0KHdyYXBwZXIodCkpOwotICAgIGZsYWdzXyB8PSBmX29wZW47Ci0gICAgaWYgKGNhbl93cml0ZSgpICYmIGJ1ZmZlcl9zaXplID4gMSkKLSAgICAgICAgZmxhZ3NfIHw9IGZfb3V0cHV0X2J1ZmZlcmVkOwotICAgIHRoaXMtPnNldF90cnVlX2VvZihmYWxzZSk7Ci0gICAgdGhpcy0+c2V0X25lZWRzX2Nsb3NlKCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyLCB0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgTW9kZT4KLWlubGluZSBib29sIGluZGlyZWN0X3N0cmVhbWJ1ZjxULCBUciwgQWxsb2MsIE1vZGU+Ojppc19vcGVuKCkgY29uc3QKLXsgcmV0dXJuIChmbGFnc18gJiBmX29wZW4pICE9IDA7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHIsIHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBNb2RlPgotdm9pZCBpbmRpcmVjdF9zdHJlYW1idWY8VCwgVHIsIEFsbG9jLCBNb2RlPjo6Y2xvc2UoKQotewotICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgYmFzZV90eXBlKiBzZWxmID0gdGhpczsKLSAgICBkZXRhaWw6OmV4ZWN1dGVfYWxsKAotICAgICAgICBkZXRhaWw6OmNhbGxfbWVtYmVyX2Nsb3NlKCpzZWxmLCBORE5CT09TVF9JT1M6OmluKSwKLSAgICAgICAgZGV0YWlsOjpjYWxsX21lbWJlcl9jbG9zZSgqc2VsZiwgTkROQk9PU1RfSU9TOjpvdXQpLAotICAgICAgICBkZXRhaWw6OmNhbGxfcmVzZXQoc3RvcmFnZV8pLAotICAgICAgICBkZXRhaWw6OmNsZWFyX2ZsYWdzKGZsYWdzXykKLSAgICApOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGU+Ci1ib29sIGluZGlyZWN0X3N0cmVhbWJ1ZjxULCBUciwgQWxsb2MsIE1vZGU+OjphdXRvX2Nsb3NlKCkgY29uc3QKLXsgcmV0dXJuIChmbGFnc18gJiBmX2F1dG9fY2xvc2UpICE9IDA7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHIsIHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBNb2RlPgotdm9pZCBpbmRpcmVjdF9zdHJlYW1idWY8VCwgVHIsIEFsbG9jLCBNb2RlPjo6c2V0X2F1dG9fY2xvc2UoYm9vbCBjbG9zZSkKLXsgZmxhZ3NfID0gKGZsYWdzXyAmIH5mX2F1dG9fY2xvc2UpIHwgKGNsb3NlID8gZl9hdXRvX2Nsb3NlIDogMCk7IH0KLQotLy8tLS0tLS0tLS0tLS0tLUltcGxlbWVudGF0aW9uIHZpcnR1YWwgZnVuY3Rpb25zLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fTE9DQUxFCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGU+Ci12b2lkIGluZGlyZWN0X3N0cmVhbWJ1ZjxULCBUciwgQWxsb2MsIE1vZGU+OjppbWJ1ZShjb25zdCBzdGQ6OmxvY2FsZSYgbG9jKQotewotICAgIGlmIChpc19vcGVuKCkpIHsKLSAgICAgICAgb2JqKCkuaW1idWUobG9jKTsKLSAgICAgICAgaWYgKG5leHRfKQotICAgICAgICAgICAgbmV4dF8tPnB1YmltYnVlKGxvYyk7Ci0gICAgfQotfQotI2VuZGlmCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyLCB0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgTW9kZT4KLXR5cGVuYW1lIGluZGlyZWN0X3N0cmVhbWJ1ZjxULCBUciwgQWxsb2MsIE1vZGU+OjppbnRfdHlwZQotaW5kaXJlY3Rfc3RyZWFtYnVmPFQsIFRyLCBBbGxvYywgTW9kZT46OnVuZGVyZmxvdygpCi17Ci0gICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICBpZiAoIWdwdHIoKSkgaW5pdF9nZXRfYXJlYSgpOwotICAgIGJ1ZmZlcl90eXBlJiBidWYgPSBpbigpOwotICAgIGlmIChncHRyKCkgPCBlZ3B0cigpKSByZXR1cm4gdHJhaXRzX3R5cGU6OnRvX2ludF90eXBlKCpncHRyKCkpOwotCi0gICAgLy8gRmlsbCBwdXRiYWNrIGJ1ZmZlci4KLSAgICBzdGQ6OnN0cmVhbXNpemUga2VlcCA9IAotICAgICAgICAoc3RkOjptaW4pKCBzdGF0aWNfY2FzdDxzdGQ6OnN0cmVhbXNpemU+KGdwdHIoKSAtIGViYWNrKCkpLAotICAgICAgICAgICAgICAgICAgICBwYmFja19zaXplXyApOwotICAgIGlmIChrZWVwKQotICAgICAgICB0cmFpdHNfdHlwZTo6bW92ZSggYnVmLmRhdGEoKSArIChwYmFja19zaXplXyAtIGtlZXApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3B0cigpIC0ga2VlcCwga2VlcCApOwotCi0gICAgLy8gU2V0IHBvaW50ZXJzIHRvIHJlYXNvbmFibGUgdmFsdWVzIGluIGNhc2UgcmVhZCB0aHJvd3MuCi0gICAgc2V0ZyggYnVmLmRhdGEoKSArIHBiYWNrX3NpemVfIC0ga2VlcCwKLSAgICAgICAgICBidWYuZGF0YSgpICsgcGJhY2tfc2l6ZV8sCi0gICAgICAgICAgYnVmLmRhdGEoKSArIHBiYWNrX3NpemVfICk7Ci0KLSAgICAvLyBSZWFkIGZyb20gc291cmNlLgotICAgIHN0ZDo6c3RyZWFtc2l6ZSBjaGFycyA9Ci0gICAgICAgIG9iaigpLnJlYWQoYnVmLmRhdGEoKSArIHBiYWNrX3NpemVfLCBidWYuc2l6ZSgpIC0gcGJhY2tfc2l6ZV8sIG5leHRfKTsKLSAgICBpZiAoY2hhcnMgPT0gLTEpIHsKLSAgICAgICAgdGhpcy0+c2V0X3RydWVfZW9mKHRydWUpOwotICAgICAgICBjaGFycyA9IDA7Ci0gICAgfQotICAgIHNldGcoZWJhY2soKSwgZ3B0cigpLCBidWYuZGF0YSgpICsgcGJhY2tfc2l6ZV8gKyBjaGFycyk7Ci0gICAgcmV0dXJuIGNoYXJzICE9IDAgPwotICAgICAgICB0cmFpdHNfdHlwZTo6dG9faW50X3R5cGUoKmdwdHIoKSkgOgotICAgICAgICB0cmFpdHNfdHlwZTo6ZW9mKCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyLCB0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgTW9kZT4KLXR5cGVuYW1lIGluZGlyZWN0X3N0cmVhbWJ1ZjxULCBUciwgQWxsb2MsIE1vZGU+OjppbnRfdHlwZQotaW5kaXJlY3Rfc3RyZWFtYnVmPFQsIFRyLCBBbGxvYywgTW9kZT46OnBiYWNrZmFpbChpbnRfdHlwZSBjKQotewotICAgIGlmIChncHRyKCkgIT0gZWJhY2soKSkgewotICAgICAgICBnYnVtcCgtMSk7Ci0gICAgICAgIGlmICghdHJhaXRzX3R5cGU6OmVxX2ludF90eXBlKGMsIHRyYWl0c190eXBlOjplb2YoKSkpCi0gICAgICAgICAgICAqZ3B0cigpID0gdHJhaXRzX3R5cGU6OnRvX2NoYXJfdHlwZShjKTsKLSAgICAgICAgcmV0dXJuIHRyYWl0c190eXBlOjpub3RfZW9mKGMpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oYmFkX3B1dGJhY2soKSk7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGU+Ci10eXBlbmFtZSBpbmRpcmVjdF9zdHJlYW1idWY8VCwgVHIsIEFsbG9jLCBNb2RlPjo6aW50X3R5cGUKLWluZGlyZWN0X3N0cmVhbWJ1ZjxULCBUciwgQWxsb2MsIE1vZGU+OjpvdmVyZmxvdyhpbnRfdHlwZSBjKQotewotICAgIGlmICggKG91dHB1dF9idWZmZXJlZCgpICYmIHBwdHIoKSA9PSAwKSB8fAotICAgICAgICAgKHNoYXJlZF9idWZmZXIoKSAmJiBncHRyKCkgIT0gMCkgKQotICAgIHsKLSAgICAgICAgaW5pdF9wdXRfYXJlYSgpOwotICAgIH0KLSAgICBpZiAoIXRyYWl0c190eXBlOjplcV9pbnRfdHlwZShjLCB0cmFpdHNfdHlwZTo6ZW9mKCkpKSB7Ci0gICAgICAgIGlmIChvdXRwdXRfYnVmZmVyZWQoKSkgewotICAgICAgICAgICAgaWYgKHBwdHIoKSA9PSBlcHB0cigpKSB7Ci0gICAgICAgICAgICAgICAgc3luY19pbXBsKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHBwdHIoKSA9PSBlcHB0cigpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJhaXRzX3R5cGU6OmVvZigpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgKnBwdHIoKSA9IHRyYWl0c190eXBlOjp0b19jaGFyX3R5cGUoYyk7Ci0gICAgICAgICAgICBwYnVtcCgxKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGNoYXJfdHlwZSBkID0gdHJhaXRzX3R5cGU6OnRvX2NoYXJfdHlwZShjKTsKLSAgICAgICAgICAgIGlmIChvYmooKS53cml0ZSgmZCwgMSwgbmV4dF8pICE9IDEpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRyYWl0c190eXBlOjplb2YoKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gdHJhaXRzX3R5cGU6Om5vdF9lb2YoYyk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyLCB0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgTW9kZT4KLWludCBpbmRpcmVjdF9zdHJlYW1idWY8VCwgVHIsIEFsbG9jLCBNb2RlPjo6c3luYygpCi17Ci0gICAgdHJ5IHsgLy8gc3luYygpIGlzIG5vLXRocm93LgotICAgICAgICBzeW5jX2ltcGwoKTsKLSAgICAgICAgb2JqKCkuZmx1c2gobmV4dF8pOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9IGNhdGNoICguLi4pIHsgcmV0dXJuIC0xOyB9Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyLCB0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgTW9kZT4KLWJvb2wgaW5kaXJlY3Rfc3RyZWFtYnVmPFQsIFRyLCBBbGxvYywgTW9kZT46OnN0cmljdF9zeW5jKCkKLXsKLSAgICB0cnkgeyAvLyBzeW5jKCkgaXMgbm8tdGhyb3cuCi0gICAgICAgIHN5bmNfaW1wbCgpOwotICAgICAgICByZXR1cm4gb2JqKCkuZmx1c2gobmV4dF8pOwotICAgIH0gY2F0Y2ggKC4uLikgeyByZXR1cm4gZmFsc2U7IH0KLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHIsIHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBNb2RlPgotaW5saW5lIHR5cGVuYW1lIGluZGlyZWN0X3N0cmVhbWJ1ZjxULCBUciwgQWxsb2MsIE1vZGU+Ojpwb3NfdHlwZQotaW5kaXJlY3Rfc3RyZWFtYnVmPFQsIFRyLCBBbGxvYywgTW9kZT46OnNlZWtvZmYKLSAgICAob2ZmX3R5cGUgb2ZmLCBORE5CT09TVF9JT1M6OnNlZWtkaXIgd2F5LCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKQoteyByZXR1cm4gc2Vla19pbXBsKG9mZiwgd2F5LCB3aGljaCk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHIsIHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBNb2RlPgotaW5saW5lIHR5cGVuYW1lIGluZGlyZWN0X3N0cmVhbWJ1ZjxULCBUciwgQWxsb2MsIE1vZGU+Ojpwb3NfdHlwZQotaW5kaXJlY3Rfc3RyZWFtYnVmPFQsIFRyLCBBbGxvYywgTW9kZT46OnNlZWtwb3MKLSAgICAocG9zX3R5cGUgc3AsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpCi17IAotICAgIHJldHVybiBzZWVrX2ltcGwocG9zaXRpb25fdG9fb2Zmc2V0KHNwKSwgTkROQk9PU1RfSU9TOjpiZWcsIHdoaWNoKTsgCi19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyLCB0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgTW9kZT4KLXR5cGVuYW1lIGluZGlyZWN0X3N0cmVhbWJ1ZjxULCBUciwgQWxsb2MsIE1vZGU+Ojpwb3NfdHlwZQotaW5kaXJlY3Rfc3RyZWFtYnVmPFQsIFRyLCBBbGxvYywgTW9kZT46OnNlZWtfaW1wbAotICAgIChzdHJlYW1fb2Zmc2V0IG9mZiwgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLXsKLSAgICBpZiAoIGdwdHIoKSAhPSAwICYmIHdheSA9PSBORE5CT09TVF9JT1M6OmN1ciAmJiB3aGljaCA9PSBORE5CT09TVF9JT1M6OmluICYmIAotICAgICAgICAgZWJhY2soKSAtIGdwdHIoKSA8PSBvZmYgJiYgb2ZmIDw9IGVncHRyKCkgLSBncHRyKCkgKSAKLSAgICB7ICAgLy8gU21hbGwgc2VlayBvcHRpbWl6YXRpb24KLSAgICAgICAgZ2J1bXAob2ZmKTsKLSAgICAgICAgcmV0dXJuIG9iaigpLnNlZWsoMCwgTkROQk9PU1RfSU9TOjpjdXIsIE5ETkJPT1NUX0lPUzo6aW4sIG5leHRfKSAtCi0gICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxvZmZfdHlwZT4oZWdwdHIoKSAtIGdwdHIoKSk7Ci0gICAgfQotICAgIGlmIChwcHRyKCkgIT0gMCkgCi0gICAgICAgIHRoaXMtPk5ETkJPT1NUX0lPU1RSRUFNU19QVUJTWU5DKCk7IC8vIHN5bmMoKSBjb25mdXNlcyBWaXN1YWxBZ2UgNi4KLSAgICBpZiAod2F5ID09IE5ETkJPT1NUX0lPUzo6Y3VyICYmIGdwdHIoKSkKLSAgICAgICAgb2ZmIC09IHN0YXRpY19jYXN0PG9mZl90eXBlPihlZ3B0cigpIC0gZ3B0cigpKTsKLSAgICBzZXRnKDAsIDAsIDApOwotICAgIHNldHAoMCwgMCk7Ci0gICAgcmV0dXJuIG9iaigpLnNlZWsob2ZmLCB3YXksIHdoaWNoLCBuZXh0Xyk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyLCB0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgTW9kZT4KLWlubGluZSB2b2lkIGluZGlyZWN0X3N0cmVhbWJ1ZjxULCBUciwgQWxsb2MsIE1vZGU+OjpzZXRfbmV4dAotICAgIChzdHJlYW1idWZfdHlwZSogbmV4dCkKLXsgbmV4dF8gPSBuZXh0OyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyLCB0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgTW9kZT4KLWlubGluZSB2b2lkIGluZGlyZWN0X3N0cmVhbWJ1ZjxULCBUciwgQWxsb2MsIE1vZGU+OjpjbG9zZV9pbXBsCi0gICAgKE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpCi17Ci0gICAgaWYgKHdoaWNoID09IE5ETkJPT1NUX0lPUzo6aW4gJiYgaXNfY29udmVydGlibGU8TW9kZSwgaW5wdXQ+Ojp2YWx1ZSkgewotICAgICAgICBzZXRnKDAsIDAsIDApOwotICAgIH0KLSAgICBpZiAod2hpY2ggPT0gTkROQk9PU1RfSU9TOjpvdXQgJiYgaXNfY29udmVydGlibGU8TW9kZSwgb3V0cHV0Pjo6dmFsdWUpIHsKLSAgICAgICAgc3luYygpOwotICAgICAgICBzZXRwKDAsIDApOwotICAgIH0KLSAgICBpZiAoICFpc19jb252ZXJ0aWJsZTxjYXRlZ29yeSwgZHVhbF91c2U+Ojp2YWx1ZSB8fAotICAgICAgICAgaXNfY29udmVydGlibGU8TW9kZSwgaW5wdXQ+Ojp2YWx1ZSA9PSAod2hpY2ggPT0gTkROQk9PU1RfSU9TOjppbikgKQotICAgIHsKLSAgICAgICAgb2JqKCkuY2xvc2Uod2hpY2gsIG5leHRfKTsKLSAgICB9Ci19Ci0KLS8vLS0tLS0tLS0tLVN0YXRlIGNoYW5naW5nIGZ1bmN0aW9ucy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyLCB0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgTW9kZT4KLXZvaWQgaW5kaXJlY3Rfc3RyZWFtYnVmPFQsIFRyLCBBbGxvYywgTW9kZT46OnN5bmNfaW1wbCgpCi17Ci0gICAgc3RkOjpzdHJlYW1zaXplIGF2YWlsLCBhbXQ7Ci0gICAgaWYgKChhdmFpbCA9IHN0YXRpY19jYXN0PHN0ZDo6c3RyZWFtc2l6ZT4ocHB0cigpIC0gcGJhc2UoKSkpID4gMCkgewotICAgICAgICBpZiAoKGFtdCA9IG9iaigpLndyaXRlKHBiYXNlKCksIGF2YWlsLCBuZXh0KCkpKSA9PSBhdmFpbCkKLSAgICAgICAgICAgIHNldHAob3V0KCkuYmVnaW4oKSwgb3V0KCkuZW5kKCkpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGNvbnN0IGNoYXJfdHlwZSogcHRyID0gcHB0cigpOwotICAgICAgICAgICAgc2V0cChvdXQoKS5iZWdpbigpICsgYW10LCBvdXQoKS5lbmQoKSk7Ci0gICAgICAgICAgICBwYnVtcChwdHIgLSBwcHRyKCkpOwotICAgICAgICB9Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGU+Ci12b2lkIGluZGlyZWN0X3N0cmVhbWJ1ZjxULCBUciwgQWxsb2MsIE1vZGU+Ojppbml0X2dldF9hcmVhKCkKLXsKLSAgICBpZiAoc2hhcmVkX2J1ZmZlcigpICYmIHBwdHIoKSAhPSAwKSB7Ci0gICAgICAgIHN5bmNfaW1wbCgpOwotICAgICAgICBzZXRwKDAsIDApOwotICAgIH0KLSAgICBzZXRnKGluKCkuYmVnaW4oKSwgaW4oKS5iZWdpbigpLCBpbigpLmJlZ2luKCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGU+Ci12b2lkIGluZGlyZWN0X3N0cmVhbWJ1ZjxULCBUciwgQWxsb2MsIE1vZGU+Ojppbml0X3B1dF9hcmVhKCkKLXsKLSAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgIGlmIChzaGFyZWRfYnVmZmVyKCkgJiYgZ3B0cigpICE9IDApCi0gICAgICAgIHNldGcoMCwgMCwgMCk7Ci0gICAgaWYgKG91dHB1dF9idWZmZXJlZCgpKQotICAgICAgICBzZXRwKG91dCgpLmJlZ2luKCksIG91dCgpLmVuZCgpKTsKLSAgICBlbHNlCi0gICAgICAgIHNldHAoMCwgMCk7Ci19Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLX0gfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGRldGFpbCwgaW9zdHJlYW1zLCBib29zdC4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2VuYWJsZV93YXJuaW5ncy5ocHA+IC8vIE1TVkMsIEJDQyA1LngKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9JTkRJUkVDVF9TVFJFQU1CVUZfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc3RyZWFtYnVmL2xpbmtlZF9zdHJlYW1idWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3N0cmVhbWJ1Zi9saW5rZWRfc3RyZWFtYnVmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDZlYzIzZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc3RyZWFtYnVmL2xpbmtlZF9zdHJlYW1idWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfTElOS0VEX1NUUkVBTUJVRl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9MSU5LRURfU1RSRUFNQlVGX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPHR5cGVpbmZvPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWVtYmVyIHRlbXBsYXRlIGZyaWVuZHMuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jaGFyX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3MuaHBwPiAgICAgICAgICAvLyBvcGVubW9kZS4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3N0cmVhbWJ1Zi5ocHA+Ci0KLS8vIE11c3QgY29tZSBsYXN0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2Rpc2FibGVfd2FybmluZ3MuaHBwPiAvLyBNU1ZDLgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFNlbGYsIHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGU+Ci1jbGFzcyBjaGFpbl9iYXNlOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFpbiwgdHlwZW5hbWUgQWNjZXNzLCB0eXBlbmFtZSBNb2RlPiBjbGFzcyBjaGFpbmJ1ZjsKLQotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfVVNJTkdfUFJPVEVDVEVEX1NUUkVBTUJVRl9NRU1CRVJTKGJhc2UpIFwKLSAgICB1c2luZyBiYXNlOjplYmFjazsgdXNpbmcgYmFzZTo6Z3B0cjsgdXNpbmcgYmFzZTo6ZWdwdHI7IFwKLSAgICB1c2luZyBiYXNlOjpzZXRnOyB1c2luZyBiYXNlOjpnYnVtcDsgdXNpbmcgYmFzZTo6cGJhc2U7IFwKLSAgICB1c2luZyBiYXNlOjpwcHRyOyB1c2luZyBiYXNlOjplcHB0cjsgdXNpbmcgYmFzZTo6c2V0cDsgXAotICAgIHVzaW5nIGJhc2U6OnBidW1wOyB1c2luZyBiYXNlOjp1bmRlcmZsb3c7IHVzaW5nIGJhc2U6OnBiYWNrZmFpbDsgXAotICAgIHVzaW5nIGJhc2U6OnhzZ2V0bjsgdXNpbmcgYmFzZTo6b3ZlcmZsb3c7IHVzaW5nIGJhc2U6OnhzcHV0bjsgXAotICAgIHVzaW5nIGJhc2U6OnN5bmM7IHVzaW5nIGJhc2U6OnNlZWtvZmY7IHVzaW5nIGJhc2U6OnNlZWtwb3M7IFwKLSAgICAvKiovCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUciA9IE5ETkJPT1NUX0lPU1RSRUFNU19DSEFSX1RSQUlUUyhDaCkgPgotY2xhc3MgbGlua2VkX3N0cmVhbWJ1ZiA6IHB1YmxpYyBORE5CT09TVF9JT1NUUkVBTVNfQkFTSUNfU1RSRUFNQlVGKENoLCBUcikgewotcHJvdGVjdGVkOgotICAgIGxpbmtlZF9zdHJlYW1idWYoKSA6IGZsYWdzXygwKSB7IH0KLSAgICB2b2lkIHNldF90cnVlX2VvZihib29sIGVvZikgCi0gICAgeyAKLSAgICAgICAgZmxhZ3NfID0gKGZsYWdzXyAmIH5mX3RydWVfZW9mKSB8IChlb2YgPyBmX3RydWVfZW9mIDogMCk7IAotICAgIH0KLXB1YmxpYzoKLQotICAgIC8vIFNob3VsZCBiZSBjYWxsZWQgb25seSBhZnRlciByZWNlaXZpbmcgYW4gb3JkaW5hcnkgRU9GIGluZGljYXRpb24sCi0gICAgLy8gdG8gY29uZmlybSB0aGF0IGl0IHJlcHJlc2VudHMgRU9GIHJhdGhlciB0aGFuIFdPVUxEX0JMT0NLLgotICAgIGJvb2wgdHJ1ZV9lb2YoKSBjb25zdCB7IHJldHVybiAoZmxhZ3NfICYgZl90cnVlX2VvZikgIT0gMDsgfQotcHJvdGVjdGVkOgotCi0gICAgLy8tLS0tLS0tLS0tZ3JhbnQgZnJpZW5kc2hpcCB0byBjaGFpbl9iYXNlIGFuZCBjaGFpbmJ1Zi0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX01FTUJFUl9URU1QTEFURV9GUklFTkRTCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFNlbGYsIHR5cGVuYW1lIENoVCwgdHlwZW5hbWUgVHJULAotICAgICAgICAgICAgICB0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgTW9kZSA+Ci0gICAgZnJpZW5kIGNsYXNzIGNoYWluX2Jhc2U7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhaW4sIHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIEFjY2Vzcz4KLSAgICBmcmllbmQgY2xhc3MgY2hhaW5idWY7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICBmcmllbmQgY2xhc3MgbWVtYmVyX2Nsb3NlX29wZXJhdGlvbjsgCi0jZWxzZQotICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9JT1NUUkVBTVNfQkFTSUNfU1RSRUFNQlVGKENoLCBUcikgYmFzZTsKLSAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX1VTSU5HX1BST1RFQ1RFRF9TVFJFQU1CVUZfTUVNQkVSUyhiYXNlKQotI2VuZGlmCi0gICAgdm9pZCBjbG9zZShORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKQotICAgIHsKLSAgICAgICAgaWYgKCB3aGljaCA9PSBORE5CT09TVF9JT1M6OmluICYmIAotICAgICAgICAgICAgKGZsYWdzXyAmIGZfaW5wdXRfY2xvc2VkKSA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgZmxhZ3NfIHw9IGZfaW5wdXRfY2xvc2VkOwotICAgICAgICAgICAgY2xvc2VfaW1wbCh3aGljaCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCB3aGljaCA9PSBORE5CT09TVF9JT1M6Om91dCAmJiAKLSAgICAgICAgICAgIChmbGFnc18gJiBmX291dHB1dF9jbG9zZWQpID09IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbGFnc18gfD0gZl9vdXRwdXRfY2xvc2VkOwotICAgICAgICAgICAgY2xvc2VfaW1wbCh3aGljaCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgdm9pZCBzZXRfbmVlZHNfY2xvc2UoKQotICAgIHsKLSAgICAgICAgZmxhZ3NfICY9IH4oZl9pbnB1dF9jbG9zZWQgfCBmX291dHB1dF9jbG9zZWQpOwotICAgIH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0X25leHQobGlua2VkX3N0cmVhbWJ1ZjxDaCwgVHI+KiAvKiBuZXh0ICovKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgY2xvc2VfaW1wbChORE5CT09TVF9JT1M6Om9wZW5tb2RlKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGF1dG9fY2xvc2UoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldF9hdXRvX2Nsb3NlKGJvb2wpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgc3RyaWN0X3N5bmMoKSA9IDA7Ci0gICAgdmlydHVhbCBjb25zdCBzdGQ6OnR5cGVfaW5mbyYgY29tcG9uZW50X3R5cGUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkKiBjb21wb25lbnRfaW1wbCgpID0gMDsKLSNpZm5kZWYgTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFX0ZSSUVORFMKLSAgICBwcml2YXRlOgotI2Vsc2UKLSAgICBwdWJsaWM6Ci0jZW5kaWYKLXByaXZhdGU6Ci0gICAgZW51bSBmbGFnX3R5cGUgewotICAgICAgICBmX3RydWVfZW9mICAgICAgID0gMSwKLSAgICAgICAgZl9pbnB1dF9jbG9zZWQgICA9IGZfdHJ1ZV9lb2YgPDwgMSwKLSAgICAgICAgZl9vdXRwdXRfY2xvc2VkICA9IGZfaW5wdXRfY2xvc2VkIDw8IDEKLSAgICB9OwotICAgIGludCBmbGFnc187Ci19OwotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9lbmFibGVfd2FybmluZ3MuaHBwPiAvLyBNU1ZDLgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0xJTktFRF9TVFJFQU1CVUZfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc3lzdGVtX2ZhaWx1cmUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3N5c3RlbV9mYWlsdXJlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGE5ZGNiYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc3lzdGVtX2ZhaWx1cmUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDUtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gKEMpIENvcHlyaWdodCBKb25hdGhhbiBHcmFlaGwgMjAwNC4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBVc2VkIGJ5IG1hcHBlZF9maWxlLmNwcC4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX1NZU1RFTV9GQUlMVVJFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX1NZU1RFTV9GQUlMVVJFX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPGNzdHJpbmc+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGhyb3dfZXhjZXB0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy93aW5kb3dzX3Bvc2l4LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvcy5ocHA+ICAvLyBmYWlsdXJlLgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSkgJiYgIWRlZmluZWQoX19MSUJDT01PX18pCi1uYW1lc3BhY2Ugc3RkIHsgdXNpbmcgOjpzdHJsZW47IH0KLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfSU9TVFJFQU1TX1dJTkRPV1MKLSMgZGVmaW5lIFdJTjMyX0xFQU5fQU5EX01FQU4gIC8vIEV4Y2x1ZGUgcmFyZWx5LXVzZWQgc3R1ZmYgZnJvbSBXaW5kb3dzIGhlYWRlcnMKLSMgaW5jbHVkZSA8d2luZG93cy5oPgotI2Vsc2UKLSMgaW5jbHVkZSA8ZXJybm8uaD4KLSMgaW5jbHVkZSA8c3RyaW5nLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi1pbmxpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUgc3lzdGVtX2ZhaWx1cmUoY29uc3QgY2hhciogbXNnKQotewotICAgIHN0ZDo6c3RyaW5nIHJlc3VsdDsKLSNpZmRlZiBORE5CT09TVF9JT1NUUkVBTVNfV0lORE9XUwotICAgIERXT1JEIGVycjsKLSAgICBMUFZPSUQgbHBNc2dCdWY7Ci0gICAgaWYgKCAoZXJyID0gOjpHZXRMYXN0RXJyb3IoKSkgIT0gTk9fRVJST1IgJiYKLSAgICAgICAgIDo6Rm9ybWF0TWVzc2FnZUEoIEZPUk1BVF9NRVNTQUdFX0FMTE9DQVRFX0JVRkZFUiB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBGT1JNQVRfTUVTU0FHRV9GUk9NX1NZU1RFTSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBlcnIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBNQUtFTEFOR0lEKExBTkdfTkVVVFJBTCwgU1VCTEFOR19ERUZBVUxUKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIChMUFNUUikgJmxwTXNnQnVmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwgKSAhPSAwICkKLSAgICB7Ci0gICAgICAgIHJlc3VsdC5yZXNlcnZlKHN0ZDo6c3RybGVuKG1zZykgKyAyICsgc3RkOjpzdHJsZW4oKExQU1RSKWxwTXNnQnVmKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQobXNnKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgiOiAiKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgoTFBTVFIpIGxwTXNnQnVmKTsKLSAgICAgICAgOjpMb2NhbEZyZWUobHBNc2dCdWYpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHJlc3VsdCArPSBtc2c7Ci0gICAgfQotI2Vsc2UKLSAgICBjb25zdCBjaGFyKiBzeXN0ZW1fbXNnID0gZXJybm8gPyBzdHJlcnJvcihlcnJubykgOiAiIjsKLSAgICByZXN1bHQucmVzZXJ2ZShzdGQ6OnN0cmxlbihtc2cpICsgMiArIHN0ZDo6c3RybGVuKHN5c3RlbV9tc2cpKTsKLSAgICByZXN1bHQuYXBwZW5kKG1zZyk7Ci0gICAgcmVzdWx0LmFwcGVuZCgiOiAiKTsKLSAgICByZXN1bHQuYXBwZW5kKHN5c3RlbV9tc2cpOwotI2VuZGlmCi0gICAgcmV0dXJuIE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFKHJlc3VsdCk7Ci19Ci0KLWlubGluZSBORE5CT09TVF9JT1NUUkVBTVNfRkFJTFVSRSBzeXN0ZW1fZmFpbHVyZShjb25zdCBzdGQ6OnN0cmluZyYgbXNnKQoteyByZXR1cm4gc3lzdGVtX2ZhaWx1cmUobXNnLmNfc3RyKCkpOyB9Ci0KLWlubGluZSB2b2lkIHRocm93X3N5c3RlbV9mYWlsdXJlKGNvbnN0IGNoYXIqIG1zZykKLXsgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihzeXN0ZW1fZmFpbHVyZShtc2cpKTsgfQotCi1pbmxpbmUgdm9pZCB0aHJvd19zeXN0ZW1fZmFpbHVyZShjb25zdCBzdGQ6OnN0cmluZyYgbXNnKQoteyBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKHN5c3RlbV9mYWlsdXJlKG1zZykpOyB9Ci0KLX0gfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGRldGFpbCwgaW9zdHJlYW1zLCBib29zdC4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9TWVNURU1fRkFJTFVSRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC90ZW1wbGF0ZV9wYXJhbXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3RlbXBsYXRlX3BhcmFtcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlYWFmZjMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3RlbXBsYXRlX3BhcmFtcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX1RFTVBMQVRFX1BBUkFNU19IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2V4cHJfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3BhcmFtcy5ocHA+Ci0KLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX1RFTVBMQVRFX1BBUkFNUyhhcml0eSwgcGFyYW0pIFwKLSAgICBORE5CT09TVF9QUF9FWFBSX0lGKGFyaXR5LCB0ZW1wbGF0ZTwpIFwKLSAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhhcml0eSwgdHlwZW5hbWUgcGFyYW0pIFwKLSAgICBORE5CT09TVF9QUF9FWFBSX0lGKGFyaXR5LCA+KSBcCi0gICAgLyoqLwotCi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19URU1QTEFURV9BUkdTKGFyaXR5LCBwYXJhbSkgXAotICAgIE5ETkJPT1NUX1BQX0VYUFJfSUYoYXJpdHksIDwpIFwKLSAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhhcml0eSwgcGFyYW0pIFwKLSAgICBORE5CT09TVF9QUF9FWFBSX0lGKGFyaXR5LCA+KSBcCi0gICAgLyoqLwotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0JVRkZFUlNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvdHJhbnNsYXRlX2ludF90eXBlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC90cmFuc2xhdGVfaW50X3R5cGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNWNiYjYzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC90cmFuc2xhdGVfaW50X3R5cGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9UUkFOU0xBVEVfSU5UX1RZUEVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfVFJBTlNMQVRFX0lOVF9UWVBFX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgIAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8Ym9vbCBJc1NhbWU+Ci1zdHJ1Y3QgdHJhbnNsYXRlX2ludF90eXBlX2ltcGw7Ci0KLS8vCi0vLyBUZW1wbGF0ZSBuYW1lOiB0cmFuc2xhdGVfY2hhci4KLS8vIERlc2NyaXB0aW9uOiBUcmFuc2xhdGVzIGEgY2hhcmFjdGVyIG9yIGFuIGVuZC1vZi1maWxlIGluZGljYXRvciBmcm9tIHRoZSAKLS8vICAgICAgaW50X3R5cGUgb2Ygb25lIGNoYXJhY3RlciB0cmFpdHMgdHlwZSB0byB0aGUgaW50X3R5cGUgb2YgYW5vdGhlci4KLS8vCi10ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2VUciwgdHlwZW5hbWUgVGFyZ2V0VHI+Ci10eXBlbmFtZSBUYXJnZXRUcjo6aW50X3R5cGUgCi10cmFuc2xhdGVfaW50X3R5cGUodHlwZW5hbWUgU291cmNlVHI6OmludF90eXBlIGMpIAoteyAKLSAgICB0eXBlZGVmIHRyYW5zbGF0ZV9pbnRfdHlwZV9pbXBsPGlzX3NhbWU8U291cmNlVHIsIFRhcmdldFRyPjo6dmFsdWU+IGltcGw7Ci0gICAgcmV0dXJuIGltcGw6OnRlbXBsYXRlIGlubmVyPFNvdXJjZVRyLCBUYXJnZXRUcj46OnRyYW5zbGF0ZShjKTsKLX0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8Pgotc3RydWN0IHRyYW5zbGF0ZV9pbnRfdHlwZV9pbXBsPHRydWU+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2VUciwgdHlwZW5hbWUgVGFyZ2V0VHI+Ci0gICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgc3RhdGljIHR5cGVuYW1lIFRhcmdldFRyOjppbnRfdHlwZSAKLSAgICAgICAgdHJhbnNsYXRlKHR5cGVuYW1lIFNvdXJjZVRyOjppbnRfdHlwZSBjKSB7IHJldHVybiBjOyB9Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB0cmFuc2xhdGVfaW50X3R5cGVfaW1wbDxmYWxzZT4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZVRyLCB0eXBlbmFtZSBUYXJnZXRUcj4KLSAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICBzdGF0aWMgdHlwZW5hbWUgVGFyZ2V0VHI6OmludF90eXBlIAotICAgICAgICB0cmFuc2xhdGUodHlwZW5hbWUgU291cmNlVHI6OmludF90eXBlIGMpCi0gICAgICAgICAgICB7IAotICAgICAgICAgICAgICAgIHJldHVybiBTb3VyY2VUcjo6ZXFfaW50X3R5cGUoU291cmNlVHI6OmVvZigpKSA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBUYXJnZXRUcjo6ZW9mKCkgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFyZ2V0VHI6OnRvX2ludF90eXBlKFNvdXJjZVRyOjp0b19jaGFyX3R5cGUoYykpOwotICAgICAgICAgICAgfQotICAgIH07Ci19OwotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfVFJBTlNMQVRFX0lOVF9UWVBFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3ZjNi9jbG9zZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvdmM2L2Nsb3NlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmZkZGQxMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvdmM2L2Nsb3NlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyOSArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwNS0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGNsb3NlX2ltcGw7Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci12b2lkIGNsb3NlKFQmIHQpIHsgZGV0YWlsOjpjbG9zZV9hbGwodCk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZvaWQgY2xvc2UoVCYgdCwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6dW53cmFwcGVkX3R5cGU8VD46OnR5cGUgdW53cmFwcGVkOwotICAgIGRldGFpbDo6Y2xvc2VfaW1wbDxUPjo6aW5uZXI8dW53cmFwcGVkPjo6Y2xvc2UoZGV0YWlsOjp1bndyYXAodCksIHdoaWNoKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgU2luaz4KLXZvaWQgY2xvc2UoVCYgdCwgU2luayYgc25rLCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjp1bndyYXBwZWRfdHlwZTxUPjo6dHlwZSB1bndyYXBwZWQ7Ci0gICAgZGV0YWlsOjpjbG9zZV9pbXBsPFQ+Ojppbm5lcjx1bndyYXBwZWQ+OjpjbG9zZShkZXRhaWw6OnVud3JhcCh0KSwgc25rLCB3aGljaCk7Ci19Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgY2xvc2VfaW1wbC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGNsb3NlX3RhZyB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjYXRlZ29yeV9vZjxUPjo6dHlwZSBjYXRlZ29yeTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICAgICAgICBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICAgICAgaXNfY29udmVydGlibGU8Y2F0ZWdvcnksIGNsb3NhYmxlX3RhZz4sCi0gICAgICAgICAgICAgICAgbXBsOjppZl88Ci0gICAgICAgICAgICAgICAgICAgIG1wbDo6b3JfPAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfY29udmVydGlibGU8Y2F0ZWdvcnksIHR3b19zZXF1ZW5jZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICBpc19jb252ZXJ0aWJsZTxjYXRlZ29yeSwgZHVhbF91c2U+Ci0gICAgICAgICAgICAgICAgICAgID4sCi0gICAgICAgICAgICAgICAgICAgIHR3b19zZXF1ZW5jZSwKLSAgICAgICAgICAgICAgICAgICAgY2xvc2FibGVfdGFnCi0gICAgICAgICAgICAgICAgPiwKLSAgICAgICAgICAgICAgICBtcGw6OmlkZW50aXR5PGFueV90YWc+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGNsb3NlX2ltcGwKLSAgICA6IG1wbDo6aWZfPAotICAgICAgICAgIGlzX2N1c3RvbTxUPiwKLSAgICAgICAgICBvcGVyYXRpb25zPFQ+LAotICAgICAgICAgIGNsb3NlX2ltcGw8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBjbG9zZV90YWc8VD46OnR5cGU+Ci0gICAgICA+Ojp0eXBlCi0gICAgeyB9OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xvc2VfaW1wbDxhbnlfdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICBzdGF0aWMgdm9pZCBjbG9zZShUJiB0LCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAod2hpY2ggPT0gTkROQk9PU1RfSU9TOjpvdXQpCi0gICAgICAgICAgICAgICAgaW9zdHJlYW1zOjpmbHVzaCh0KTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpbms+Ci0gICAgICAgIHN0YXRpYyB2b2lkIGNsb3NlKFQmIHQsIFNpbmsmIHNuaywgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKHdoaWNoID09IE5ETkJPT1NUX0lPUzo6b3V0KSB7Ci0gICAgICAgICAgICAgICAgbm9uX2Jsb2NraW5nX2FkYXB0ZXI8U2luaz4gbmIoc25rKTsKLSAgICAgICAgICAgICAgICBpb3N0cmVhbXM6OmZsdXNoKHQsIG5iKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xvc2VfaW1wbDxjbG9zYWJsZV90YWc+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgIHN0YXRpYyB2b2lkIGNsb3NlKFQmIHQsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgY2F0ZWdvcnlfb2Y8VD46OnR5cGUgY2F0ZWdvcnk7Ci0gICAgICAgICAgICBjb25zdCBib29sIGluID0gIGlzX2NvbnZlcnRpYmxlPGNhdGVnb3J5LCBpbnB1dD46OnZhbHVlICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIWlzX2NvbnZlcnRpYmxlPGNhdGVnb3J5LCBvdXRwdXQ+Ojp2YWx1ZTsKLSAgICAgICAgICAgIGlmIChpbiA9PSAod2hpY2ggPT0gTkROQk9PU1RfSU9TOjppbikpCi0gICAgICAgICAgICAgICAgdC5jbG9zZSgpOwotICAgICAgICB9Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpbms+Ci0gICAgICAgIHN0YXRpYyB2b2lkIGNsb3NlKFQmIHQsIFNpbmsmIHNuaywgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBjYXRlZ29yeV9vZjxUPjo6dHlwZSBjYXRlZ29yeTsKLSAgICAgICAgICAgIGNvbnN0IGJvb2wgaW4gPSAgaXNfY29udmVydGlibGU8Y2F0ZWdvcnksIGlucHV0Pjo6dmFsdWUgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAhaXNfY29udmVydGlibGU8Y2F0ZWdvcnksIG91dHB1dD46OnZhbHVlOwotICAgICAgICAgICAgaWYgKGluID09ICh3aGljaCA9PSBORE5CT09TVF9JT1M6OmluKSkgewotICAgICAgICAgICAgICAgIG5vbl9ibG9ja2luZ19hZGFwdGVyPFNpbms+IG5iKHNuayk7Ci0gICAgICAgICAgICAgICAgdC5jbG9zZShuYik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsb3NlX2ltcGw8dHdvX3NlcXVlbmNlPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICBzdGF0aWMgdm9pZCBjbG9zZShUJiB0LCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKSB7IHQuY2xvc2Uod2hpY2gpOyB9Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICAgICAgc3RhdGljIHZvaWQgY2xvc2UoVCYgdCwgU2luayYgc25rLCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKQotICAgICAgICB7Ci0gICAgICAgICAgICBub25fYmxvY2tpbmdfYWRhcHRlcjxTaW5rPiBuYihzbmspOwotICAgICAgICAgICAgdC5jbG9zZShuYiwgd2hpY2gpOwotICAgICAgICB9Ci0gICAgfTsKLX07Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3ZjNi9yZWFkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC92YzYvcmVhZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2NjRhZTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3ZjNi9yZWFkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzOCArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwNS0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiAKLXN0cnVjdCByZWFkX2RldmljZV9pbXBsOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiAKLXN0cnVjdCByZWFkX2ZpbHRlcl9pbXBsOwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdHlwZW5hbWUgaW50X3R5cGVfb2Y8VD46OnR5cGUgZ2V0KFQmIHQpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnVud3JhcHBlZF90eXBlPFQ+Ojp0eXBlIHVud3JhcHBlZDsKLSAgICByZXR1cm4gZGV0YWlsOjpyZWFkX2RldmljZV9pbXBsPFQ+Ojppbm5lcjx1bndyYXBwZWQ+OjpnZXQoZGV0YWlsOjp1bndyYXAodCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIHN0ZDo6c3RyZWFtc2l6ZQotcmVhZChUJiB0LCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjp1bndyYXBwZWRfdHlwZTxUPjo6dHlwZSB1bndyYXBwZWQ7Ci0gICAgcmV0dXJuIGRldGFpbDo6cmVhZF9kZXZpY2VfaW1wbDxUPjo6aW5uZXI8dW53cmFwcGVkPjo6cmVhZChkZXRhaWw6OnVud3JhcCh0KSwgcywgbik7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFNvdXJjZT4KLXN0ZDo6c3RyZWFtc2l6ZQotcmVhZChUJiB0LCBTb3VyY2UmIHNyYywgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6dW53cmFwcGVkX3R5cGU8VD46OnR5cGUgdW53cmFwcGVkOwotICAgIHJldHVybiBkZXRhaWw6OnJlYWRfZmlsdGVyX2ltcGw8VD46OmlubmVyPHVud3JhcHBlZD46OnJlYWQoZGV0YWlsOjp1bndyYXAodCksIHNyYywgcywgbik7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1ib29sIHB1dGJhY2soVCYgdCwgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlIGMpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnVud3JhcHBlZF90eXBlPFQ+Ojp0eXBlIHVud3JhcHBlZDsKLSAgICByZXR1cm4gZGV0YWlsOjpyZWFkX2RldmljZV9pbXBsPFQ+Ojppbm5lcjx1bndyYXBwZWQ+OjpwdXRiYWNrKGRldGFpbDo6dW53cmFwKHQpLCBjKTsKLX0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vIEhlbHBlciBmdW5jdGlvbiBmb3IgYWRkaW5nIC0xIGFzIEVPRiBpbmRpY2F0b3IuCi1pbmxpbmUgc3RkOjpzdHJlYW1zaXplIGNoZWNrX2VvZihzdGQ6OnN0cmVhbXNpemUgbikgeyByZXR1cm4gbiAhPSAwID8gbiA6IC0xOyB9Ci0KLS8vIEhlbHBlciB0ZW1wbGF0ZXMgZm9yIHJlYWRpbmcgZnJvbSBzdHJlYW1idWZzLgotdGVtcGxhdGU8Ym9vbCBJc0xpbmtlZD4KLXN0cnVjdCB0cnVlX2VvZl9pbXBsOwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdHJ1ZV9lb2ZfaW1wbDx0cnVlPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgYm9vbCB0cnVlX2VvZihUJiB0KSB7IHJldHVybiB0LnRydWVfZW9mKCk7IH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB0cnVlX2VvZl9pbXBsPGZhbHNlPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgYm9vbCB0cnVlX2VvZihUJiB0KSB7IHJldHVybiB0cnVlOyB9Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIGJvb2wgdHJ1ZV9lb2YoVCYgdCkKLXsKLSAgICBjb25zdCBib29sIGxpbmtlZCA9IGlzX2xpbmtlZDxUPjo6dmFsdWU7Ci0gICAgcmV0dXJuIHRydWVfZW9mX2ltcGw8bGlua2VkPjo6dHJ1ZV9lb2YodCk7Ci19Ci0gICAgICAgICAgICAgICAgICAgIAotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIHJlYWRfZGV2aWNlX2ltcGwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCByZWFkX2RldmljZV9pbXBsCi0gICAgOiBtcGw6OmlmXzwKLSAgICAgICAgICBkZXRhaWw6OmlzX2N1c3RvbTxUPiwKLSAgICAgICAgICBvcGVyYXRpb25zPFQ+LAotICAgICAgICAgIHJlYWRfZGV2aWNlX2ltcGw8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUKLSAgICAgICAgICAgICAgZGV0YWlsOjpkaXNwYXRjaDwKLSAgICAgICAgICAgICAgICAgIFQsIGlzdHJlYW1fdGFnLCBzdHJlYW1idWZfdGFnLCBpbnB1dAotICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgPgotICAgICAgPjo6dHlwZQotICAgIHsgfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJlYWRfZGV2aWNlX2ltcGw8aXN0cmVhbV90YWc+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgIHN0YXRpYyB0eXBlbmFtZSBpbnRfdHlwZV9vZjxUPjo6dHlwZSBnZXQoVCYgdCkKLSAgICAgICAgeyByZXR1cm4gdC5nZXQoKTsgfQotCi0gICAgICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUKLSAgICAgICAgcmVhZChUJiB0LCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgICAgICB7IHJldHVybiBjaGVja19lb2YodC5yZGJ1ZigpLT5zZ2V0bihzLCBuKSk7IH0KLQotICAgICAgICBzdGF0aWMgYm9vbCBwdXRiYWNrKFQmIHQsIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSBjKQotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSAgICAgICAgICBjaGFyX3R5cGU7Ci0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19DSEFSX1RSQUlUUyhjaGFyX3R5cGUpICB0cmFpdHNfdHlwZTsKLSAgICAgICAgICAgIHJldHVybiAhdHJhaXRzX3R5cGU6OmVxX2ludF90eXBlKCB0LnJkYnVmKCktPnNwdXRiYWNrYyhjKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFpdHNfdHlwZTo6ZW9mKCkgKTsKLSAgICAgICAgfQotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmVhZF9kZXZpY2VfaW1wbDxzdHJlYW1idWZfdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICBzdGF0aWMgdHlwZW5hbWUgaW50X3R5cGVfb2Y8VD46OnR5cGUKLSAgICAgICAgZ2V0KFQmIHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlICBjaGFyX3R5cGU7Ci0gICAgICAgICAgICB0eXBlZGVmIGNoYXJfdHJhaXRzPGNoYXJfdHlwZT4gICAgICAgICAgdHJhaXRzX3R5cGU7Ci0gICAgICAgICAgICB0eXBlbmFtZSBpbnRfdHlwZV9vZjxUPjo6dHlwZSBjOwotICAgICAgICAgICAgcmV0dXJuICF0cmFpdHNfdHlwZTo6aXNfZW9mKGMgPSB0LnNidW1wYygpKSB8fAotICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OnRydWVfZW9mKHQpCi0gICAgICAgICAgICAgICAgICAgICAgICA/Ci0gICAgICAgICAgICAgICAgICAgIGMgOiB0cmFpdHNfdHlwZTo6d291bGRfYmxvY2soKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUKLSAgICAgICAgcmVhZChUJiB0LCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgICAgICB7Ci0gICAgICAgICAgICBzdGQ6OnN0cmVhbXNpemUgYW10OwotICAgICAgICAgICAgcmV0dXJuIChhbXQgPSB0LnNnZXRuKHMsIG4pKSAhPSAwID8KLSAgICAgICAgICAgICAgICBhbXQgOgotICAgICAgICAgICAgICAgIGRldGFpbDo6dHJ1ZV9lb2YodCkgPwotICAgICAgICAgICAgICAgICAgICAtMSA6Ci0gICAgICAgICAgICAgICAgICAgIDA7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgYm9vbCBwdXRiYWNrKFQmIHQsIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSBjKQotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSAgY2hhcl90eXBlOwotICAgICAgICAgICAgdHlwZWRlZiBjaGFyX3RyYWl0czxjaGFyX3R5cGU+ICAgICAgICAgIHRyYWl0c190eXBlOwotICAgICAgICAgICAgcmV0dXJuICF0cmFpdHNfdHlwZTo6aXNfZW9mKHQuc3B1dGJhY2tjKGMpKTsKLSAgICAgICAgfQotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmVhZF9kZXZpY2VfaW1wbDxpbnB1dD4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgc3RhdGljIHR5cGVuYW1lIGludF90eXBlX29mPFQ+Ojp0eXBlCi0gICAgICAgIGdldChUJiB0KQotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSAgY2hhcl90eXBlOwotICAgICAgICAgICAgdHlwZWRlZiBjaGFyX3RyYWl0czxjaGFyX3R5cGU+ICAgICAgICAgIHRyYWl0c190eXBlOwotICAgICAgICAgICAgY2hhcl90eXBlIGM7Ci0gICAgICAgICAgICBzdGQ6OnN0cmVhbXNpemUgYW10OwotICAgICAgICAgICAgcmV0dXJuIChhbXQgPSB0LnJlYWQoJmMsIDEpKSA9PSAxID8KLSAgICAgICAgICAgICAgICB0cmFpdHNfdHlwZTo6dG9faW50X3R5cGUoYykgOgotICAgICAgICAgICAgICAgIGFtdCA9PSAtMSA/Ci0gICAgICAgICAgICAgICAgICAgIHRyYWl0c190eXBlOjplb2YoKSA6Ci0gICAgICAgICAgICAgICAgICAgIHRyYWl0c190eXBlOjp3b3VsZF9ibG9jaygpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RhdGljIHN0ZDo6c3RyZWFtc2l6ZQotICAgICAgICByZWFkKFQmIHQsIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgICAgIHsgcmV0dXJuIHQucmVhZChzLCBuKTsgfQotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0YXRpYyBib29sIHB1dGJhY2soVCYgdCwgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlIGMpCi0gICAgICAgIHsgICAvLyBUIG11c3QgYmUgUGVla2FibGUuCi0gICAgICAgICAgICByZXR1cm4gdC5wdXRiYWNrKGMpOwotICAgICAgICB9Ci0gICAgfTsKLX07Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiByZWFkX2ZpbHRlcl9pbXBsLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgcmVhZF9maWx0ZXJfaW1wbAotICAgIDogbXBsOjppZl88Ci0gICAgICAgICAgZGV0YWlsOjppc19jdXN0b208VD4sCi0gICAgICAgICAgb3BlcmF0aW9uczxUPiwKLSAgICAgICAgICByZWFkX2ZpbHRlcl9pbXBsPAotICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FCi0gICAgICAgICAgICAgIGRldGFpbDo6ZGlzcGF0Y2g8Ci0gICAgICAgICAgICAgICAgICBULCBtdWx0aWNoYXJfdGFnLCBhbnlfdGFnCi0gICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICA+Ci0gICAgICA+Ojp0eXBlCi0gICAgeyB9OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmVhZF9maWx0ZXJfaW1wbDxtdWx0aWNoYXJfdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2U+Ci0gICAgICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUgcmVhZAotICAgICAgICAgICAgKCBUJiB0LCBTb3VyY2UmIHNyYywgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlKiBzLCAgIAotICAgICAgICAgICAgICBzdGQ6OnN0cmVhbXNpemUgbiApCi0gICAgICAgIHsgcmV0dXJuIHQucmVhZChzcmMsIHMsIG4pOyB9Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCByZWFkX2ZpbHRlcl9pbXBsPGFueV90YWc+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZT4KLSAgICAgICAgc3RhdGljIHN0ZDo6c3RyZWFtc2l6ZSByZWFkCi0gICAgICAgICAgICAoIFQmIHQsIFNvdXJjZSYgc3JjLCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUqIHMsIAotICAgICAgICAgICAgICBzdGQ6OnN0cmVhbXNpemUgbiApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlICBjaGFyX3R5cGU7Ci0gICAgICAgICAgICB0eXBlZGVmIGNoYXJfdHJhaXRzPGNoYXJfdHlwZT4gICAgICAgICAgdHJhaXRzX3R5cGU7Ci0gICAgICAgICAgICBmb3IgKHN0ZDo6c3RyZWFtc2l6ZSBvZmYgPSAwOyBvZmYgPCBuOyArK29mZikgewotICAgICAgICAgICAgICAgIHR5cGVuYW1lIHRyYWl0c190eXBlOjppbnRfdHlwZSBjID0gdC5nZXQoc3JjKTsKLSAgICAgICAgICAgICAgICBpZiAodHJhaXRzX3R5cGU6OmlzX2VvZihjKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoZWNrX2VvZihvZmYpOwotICAgICAgICAgICAgICAgIGlmICh0cmFpdHNfdHlwZTo6d291bGRfYmxvY2soYykpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZmY7Ci0gICAgICAgICAgICAgICAgc1tvZmZdID0gdHJhaXRzX3R5cGU6OnRvX2NoYXJfdHlwZShjKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBuOwotICAgICAgICB9Ci0gICAgfTsKLX07Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3ZjNi93cml0ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvdmM2L3dyaXRlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjAzOThlMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvdmM2L3dyaXRlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1OSArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwNS0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiAKLXN0cnVjdCB3cml0ZV9kZXZpY2VfaW1wbDsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gCi1zdHJ1Y3Qgd3JpdGVfZmlsdGVyX2ltcGw7Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1ib29sIHB1dChUJiB0LCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUgYykKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6dW53cmFwcGVkX3R5cGU8VD46OnR5cGUgdW53cmFwcGVkOwotICAgIHJldHVybiBkZXRhaWw6OndyaXRlX2RldmljZV9pbXBsPFQ+Ojppbm5lcjx1bndyYXBwZWQ+OjpwdXQoZGV0YWlsOjp1bndyYXAodCksIGMpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIHN0ZDo6c3RyZWFtc2l6ZSB3cml0ZQotICAgIChUJiB0LCBjb25zdCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjp1bndyYXBwZWRfdHlwZTxUPjo6dHlwZSB1bndyYXBwZWQ7Ci0gICAgcmV0dXJuIGRldGFpbDo6d3JpdGVfZGV2aWNlX2ltcGw8VD46OmlubmVyPHVud3JhcHBlZD46OndyaXRlKGRldGFpbDo6dW53cmFwKHQpLCBzLCBuKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgU2luaz4KLWlubGluZSBzdGQ6OnN0cmVhbXNpemUKLXdyaXRlKCBUJiB0LCBTaW5rJiBzbmssIGNvbnN0IHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSogcywgCi0gICAgICAgc3RkOjpzdHJlYW1zaXplIG4gKQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjp1bndyYXBwZWRfdHlwZTxUPjo6dHlwZSB1bndyYXBwZWQ7Ci0gICAgcmV0dXJuIGRldGFpbDo6d3JpdGVfZmlsdGVyX2ltcGw8VD46OmlubmVyPHVud3JhcHBlZD46OndyaXRlKGRldGFpbDo6dW53cmFwKHQpLCBzbmssIHMsIG4pOwotfQotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIHdyaXRlX2RldmljZV9pbXBsLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCB3cml0ZV9kZXZpY2VfaW1wbAotICAgIDogbXBsOjppZl88Ci0gICAgICAgICAgaXNfY3VzdG9tPFQ+LAotICAgICAgICAgIG9wZXJhdGlvbnM8VD4sCi0gICAgICAgICAgd3JpdGVfZGV2aWNlX2ltcGw8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUKLSAgICAgICAgICAgICAgZGlzcGF0Y2g8Ci0gICAgICAgICAgICAgICAgICBULCBvc3RyZWFtX3RhZywgc3RyZWFtYnVmX3RhZywgb3V0cHV0Ci0gICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICA+Ci0gICAgICA+Ojp0eXBlCi0gICAgeyB9OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgd3JpdGVfZGV2aWNlX2ltcGw8b3N0cmVhbV90YWc+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgIHN0YXRpYyBib29sIHB1dChUJiB0LCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUgYykKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUgICAgICAgICAgY2hhcl90eXBlOwotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9JT1NUUkVBTVNfQ0hBUl9UUkFJVFMoY2hhcl90eXBlKSAgdHJhaXRzX3R5cGU7Ci0gICAgICAgICAgICByZXR1cm4gIXRyYWl0c190eXBlOjplcV9pbnRfdHlwZSggdC5yZGJ1ZigpLT5zLnNwdXRjKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWl0c190eXBlOjplb2YoKSApOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIHN0ZDo6c3RyZWFtc2l6ZSB3cml0ZQotICAgICAgICAgICAgKFQmIHQsIGNvbnN0IHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgICAgIHsgcmV0dXJuIHQucmRidWYoKS0+c3B1dG4ocywgbik7IH0KLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHdyaXRlX2RldmljZV9pbXBsPHN0cmVhbWJ1Zl90YWc+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgIHN0YXRpYyBib29sIHB1dChUJiB0LCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUgYykKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUgICAgICAgICAgY2hhcl90eXBlOwotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9JT1NUUkVBTVNfQ0hBUl9UUkFJVFMoY2hhcl90eXBlKSAgdHJhaXRzX3R5cGU7Ci0gICAgICAgICAgICByZXR1cm4gIXRyYWl0c190eXBlOjplcV9pbnRfdHlwZSh0LnNwdXRjKGMpLCB0cmFpdHNfdHlwZTo6ZW9mKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RhdGljIHN0ZDo6c3RyZWFtc2l6ZSB3cml0ZQotICAgICAgICAgICAgKFQmIHQsIGNvbnN0IHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgICAgIHsgcmV0dXJuIHQuc3B1dG4ocywgbik7IH0KLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHdyaXRlX2RldmljZV9pbXBsPG91dHB1dD4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgc3RhdGljIGJvb2wgcHV0KFQmIHQsIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSBjKQotICAgICAgICB7IHJldHVybiB0LndyaXRlKCZjLCAxKSA9PSAxOyB9Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RhdGljIHN0ZDo6c3RyZWFtc2l6ZQotICAgICAgICB3cml0ZShUJiB0LCBjb25zdCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgICAgICB7IHJldHVybiB0LndyaXRlKHMsIG4pOyB9Ci0gICAgfTsKLX07Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiB3cml0ZV9maWx0ZXJfaW1wbC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3Qgd3JpdGVfZmlsdGVyX2ltcGwKLSAgICA6IG1wbDo6aWZfPAotICAgICAgICAgIGlzX2N1c3RvbTxUPiwKLSAgICAgICAgICBvcGVyYXRpb25zPFQ+LAotICAgICAgICAgIHdyaXRlX2ZpbHRlcl9pbXBsPAotICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FCi0gICAgICAgICAgICAgIGRpc3BhdGNoPAotICAgICAgICAgICAgICAgICAgVCwgbXVsdGljaGFyX3RhZywgYW55X3RhZwotICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgPgotICAgICAgPjo6dHlwZQotICAgIHsgfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHdyaXRlX2ZpbHRlcl9pbXBsPG11bHRpY2hhcl90YWc+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpbms+Ci0gICAgICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUKLSAgICAgICAgd3JpdGUoIFQmIHQsIFNpbmsmIHNuaywgY29uc3QgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlKiBzLAotICAgICAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplIG4gKQotICAgICAgICB7IHJldHVybiB0LndyaXRlKHNuaywgcywgbik7IH0KLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHdyaXRlX2ZpbHRlcl9pbXBsPGFueV90YWc+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpbms+Ci0gICAgICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUKLSAgICAgICAgd3JpdGUoIFQmIHQsIFNpbmsmIHNuaywgY29uc3QgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlKiBzLAotICAgICAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplIG4gKQotICAgICAgICB7Ci0gICAgICAgICAgICBmb3IgKHN0ZDo6c3RyZWFtc2l6ZSBvZmYgPSAwOyBvZmYgPCBuOyArK29mZikKLSAgICAgICAgICAgICAgICBpZiAoIXQucHV0KHNuaywgc1tvZmZdKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mZjsKLSAgICAgICAgICAgIHJldHVybiBuOwotICAgICAgICB9Ci0gICAgfTsKLX07Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3dyYXBfdW53cmFwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC93cmFwX3Vud3JhcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzMjkxZGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3dyYXBfdW53cmFwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyNyArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX1dSQVBfVU5XUkFQX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX1dSQVBfVU5XUkFQX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgIAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNGSU5BRSwgTVNWQy4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9lbmFibGVfaWZfc3RyZWFtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvdHJhaXRzX2Z3ZC5ocHA+ICAgICAgICAgICAgICAgLy8gaXNfc3RkX2lvLgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWRlbnRpdHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ldmFsX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLSAgICAgICAgICAgICAgICAgICAgCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2Ygd3JhcC91bndyYXAgdHJhaXRzLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IHdyYXBwZWRfdHlwZSAKLSAgICA6IG1wbDo6aWZfPGlzX3N0ZF9pbzxUPiwgcmVmZXJlbmNlX3dyYXBwZXI8VD4sIFQ+Ci0gICAgeyB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IHVud3JhcHBlZF90eXBlIAotICAgIDogdW53cmFwX3JlZmVyZW5jZTxUPgotICAgIHsgfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCB1bndyYXBfaW9zIAotICAgIDogbXBsOjpldmFsX2lmPAotICAgICAgICAgIGlzX3N0ZF9pbzxUPiwgCi0gICAgICAgICAgdW53cmFwX3JlZmVyZW5jZTxUPiwgCi0gICAgICAgICAgbXBsOjppZGVudGl0eTxUPgotICAgICAgPgotICAgIHsgfTsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIHdyYXAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotI2lmbmRlZiBORE5CT09TVF9OT19TRklOQUUgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGlubGluZSBUIHdyYXAoY29uc3QgVCYgdCBORE5CT09TVF9JT1NUUkVBTVNfRElTQUJMRV9JRl9TVFJFQU0oVCkpIAotICAgIHsgcmV0dXJuIHQ7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIHR5cGVuYW1lIHdyYXBwZWRfdHlwZTxUPjo6dHlwZQotICAgIHdyYXAoVCYgdCBORE5CT09TVF9JT1NUUkVBTVNfRU5BQkxFX0lGX1NUUkVBTShUKSkgeyByZXR1cm4gbmRuYm9vc3Q6OnJlZih0KTsgfQotI2Vsc2UgLy8gI2lmbmRlZiBORE5CT09TVF9OT19TRklOQUUgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGlubGluZSB0eXBlbmFtZSB3cmFwcGVkX3R5cGU8VD46OnR5cGUgLy8gQkNDIDUueCBuZWVkcyBuYW1lc3BhY2UgcXVhbGlmaWNhdGlvbi4KLSAgICB3cmFwX2ltcGwoY29uc3QgVCYgdCwgbXBsOjp0cnVlXykgeyByZXR1cm4gbmRuYm9vc3Q6OnJlZihjb25zdF9jYXN0PFQmPih0KSk7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIHR5cGVuYW1lIHdyYXBwZWRfdHlwZTxUPjo6dHlwZSAvLyBCQ0MgNS54IG5lZWRzIG5hbWVzcGFjZSBxdWFsaWZpY2F0aW9uLgotICAgIHdyYXBfaW1wbChUJiB0LCBtcGw6OnRydWVfKSB7IHJldHVybiBuZG5ib29zdDo6cmVmKHQpOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGlubGluZSB0eXBlbmFtZSB3cmFwcGVkX3R5cGU8VD46OnR5cGUgCi0gICAgd3JhcF9pbXBsKGNvbnN0IFQmIHQsIG1wbDo6ZmFsc2VfKSB7IHJldHVybiB0OyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGlubGluZSB0eXBlbmFtZSB3cmFwcGVkX3R5cGU8VD46OnR5cGUgCi0gICAgd3JhcF9pbXBsKFQmIHQsIG1wbDo6ZmFsc2VfKSB7IHJldHVybiB0OyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGlubGluZSB0eXBlbmFtZSB3cmFwcGVkX3R5cGU8VD46OnR5cGUgCi0gICAgd3JhcChjb25zdCBUJiB0KSB7IHJldHVybiB3cmFwX2ltcGwodCwgaXNfc3RkX2lvPFQ+KCkpOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGlubGluZSB0eXBlbmFtZSB3cmFwcGVkX3R5cGU8VD46OnR5cGUgCi0gICAgd3JhcChUJiB0KSB7IHJldHVybiB3cmFwX2ltcGwodCwgaXNfc3RkX2lvPFQ+KCkpOyB9Ci0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9OT19TRklOQUUgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgdW53cmFwLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzEwKSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdHlwZW5hbWUgdW53cmFwcGVkX3R5cGU8VD46OnR5cGUmIAotdW53cmFwKGNvbnN0IHJlZmVyZW5jZV93cmFwcGVyPFQ+JiByZWYpIHsgcmV0dXJuIHJlZi5nZXQoKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdHlwZW5hbWUgdW53cmFwcGVkX3R5cGU8VD46OnR5cGUmIHVud3JhcChUJiB0KSB7IHJldHVybiB0OyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jb25zdCB0eXBlbmFtZSB1bndyYXBwZWRfdHlwZTxUPjo6dHlwZSYgdW53cmFwKGNvbnN0IFQmIHQpIHsgcmV0dXJuIHQ7IH0KLQotI2Vsc2UgLy8gI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMxMCkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gU2luY2UgdW53cmFwIGlzIGEgcG90ZW50aWFsIGJvdHRsZW5lY2ssIHdlIGF2b2lkIHJ1bnRpbWUgdGFnIGRpc3BhdGNoLgotdGVtcGxhdGU8Ym9vbCBJc1JlZldyYXA+Ci1zdHJ1Y3QgdW53cmFwX2ltcGw7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB1bndyYXBfaW1wbDx0cnVlPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgdHlwZW5hbWUgdW53cmFwcGVkX3R5cGU8VD46OnR5cGUmIHVud3JhcChjb25zdCBUJiB0KSAKLSAgICB7IHJldHVybiB0LmdldCgpOyB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdW53cmFwX2ltcGw8ZmFsc2U+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyB0eXBlbmFtZSB1bndyYXBwZWRfdHlwZTxUPjo6dHlwZSYgdW53cmFwKGNvbnN0IFQmIHQpIAotICAgIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8VCY+KHQpOyB9Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdHlwZW5hbWUgdW53cmFwcGVkX3R5cGU8VD46OnR5cGUmIAotdW53cmFwKGNvbnN0IFQmIHQpIAoteyByZXR1cm4gdW53cmFwX2ltcGw8aXNfcmVmZXJlbmNlX3dyYXBwZXI8VD46OnZhbHVlPjo6dW53cmFwKHQpOyB9Ci0KLSNlbmRpZiAvLyAjaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzEwKSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLX0gfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGRldGFpbCwgaW9zdHJlYW1zLCBib29zdC4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9XUkFQX1VOV1JBUF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldmljZS9hcnJheS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXZpY2UvYXJyYXkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNGViMzllLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldmljZS9hcnJheS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDQgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDQtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0FSUkFZX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQVJSQVlfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gICAgICAgICAvLyBORE5CT09TVF9NU1ZDLCBtYWtlIHN1cmUgc2l6ZV90IGlzIGluIHN0ZC4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4gICAgICAgICAgICAgICAgICAvLyBzdGQ6OnNpemVfdC4KLSNpbmNsdWRlIDx1dGlsaXR5PiAgICAgICAgICAgICAgICAgIC8vIHBhaXIuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NhdGVnb3JpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaD4KLWNsYXNzIGFycmF5X2FkYXB0ZXIgewotcHVibGljOgotICAgIHR5cGVkZWYgQ2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyX3R5cGU7Ci0gICAgdHlwZWRlZiBzdGQ6OnBhaXI8Y2hhcl90eXBlKiwgY2hhcl90eXBlKj4gIHBhaXJfdHlwZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkKLSAgICAgICAgOiBwdWJsaWMgTW9kZSwKLSAgICAgICAgICBwdWJsaWMgZGV2aWNlX3RhZywKLSAgICAgICAgICBwdWJsaWMgZGlyZWN0X3RhZwotICAgICAgICB7IH07Ci0gICAgYXJyYXlfYWRhcHRlcihjaGFyX3R5cGUqIGJlZ2luLCBjaGFyX3R5cGUqIGVuZCk7Ci0gICAgYXJyYXlfYWRhcHRlcihjaGFyX3R5cGUqIGJlZ2luLCBzdGQ6OnNpemVfdCBsZW5ndGgpOwotICAgIGFycmF5X2FkYXB0ZXIoY29uc3QgY2hhcl90eXBlKiBiZWdpbiwgY29uc3QgY2hhcl90eXBlKiBlbmQpOwotICAgIGFycmF5X2FkYXB0ZXIoY29uc3QgY2hhcl90eXBlKiBiZWdpbiwgc3RkOjpzaXplX3QgbGVuZ3RoKTsKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0gICAgdGVtcGxhdGU8aW50IE4+Ci0gICAgYXJyYXlfYWRhcHRlcihjaGFyX3R5cGUgKCZhcilbTl0pCi0gICAgICAgIDogYmVnaW5fKGFyKSwgZW5kXyhhciArIE4pIAotICAgICAgICB7IH0KLSNlbmRpZgotICAgIHBhaXJfdHlwZSBpbnB1dF9zZXF1ZW5jZSgpOwotICAgIHBhaXJfdHlwZSBvdXRwdXRfc2VxdWVuY2UoKTsKLXByaXZhdGU6Ci0gICAgY2hhcl90eXBlKiBiZWdpbl87Ci0gICAgY2hhcl90eXBlKiBlbmRfOwotfTsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotLy8gTG9jYWwgbWFjcm9zLCAjdW5kZWYnZCBiZWxvdy4KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKQotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0FSUkFZX0NUT1IobmFtZSwgY2gpIFwKLSAgICB0ZW1wbGF0ZTxpbnQgTj4gXAotICAgIE5ETkJPT1NUX1BQX0NBVChiYXNpY18sIG5hbWUpKGNoICgmYXIpW05dKSBcCi0gICAgICAgIDogYmFzZV90eXBlKGFyKSB7IH0gXAotICAgIC8qKi8KLSNlbHNlCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQVJSQVlfQ1RPUihuYW1lLCBjaCkKLSNlbmRpZgotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQVJSQVkobmFtZSwgbW9kZSkgXAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoPiBcCi0gICAgc3RydWN0IE5ETkJPT1NUX1BQX0NBVChiYXNpY18sIG5hbWUpIDogZGV0YWlsOjphcnJheV9hZGFwdGVyPG1vZGUsIENoPiB7IFwKLSAgICBwcml2YXRlOiBcCi0gICAgICAgIHR5cGVkZWYgZGV0YWlsOjphcnJheV9hZGFwdGVyPG1vZGUsIENoPiAgYmFzZV90eXBlOyBcCi0gICAgcHVibGljOiBcCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV90eXBlOjpjaGFyX3R5cGUgICAgY2hhcl90eXBlOyBcCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV90eXBlOjpjYXRlZ29yeSAgICAgY2F0ZWdvcnk7IFwKLSAgICAgICAgTkROQk9PU1RfUFBfQ0FUKGJhc2ljXywgbmFtZSkoY2hhcl90eXBlKiBiZWdpbiwgY2hhcl90eXBlKiBlbmQpIFwKLSAgICAgICAgICAgIDogYmFzZV90eXBlKGJlZ2luLCBlbmQpIHsgfSBcCi0gICAgICAgIE5ETkJPT1NUX1BQX0NBVChiYXNpY18sIG5hbWUpKGNoYXJfdHlwZSogYmVnaW4sIHN0ZDo6c2l6ZV90IGxlbmd0aCkgXAotICAgICAgICAgICAgOiBiYXNlX3R5cGUoYmVnaW4sIGxlbmd0aCkgeyB9IFwKLSAgICAgICAgTkROQk9PU1RfUFBfQ0FUKGJhc2ljXywgbmFtZSkoY29uc3QgY2hhcl90eXBlKiBiZWdpbiwgY29uc3QgY2hhcl90eXBlKiBlbmQpIFwKLSAgICAgICAgICAgIDogYmFzZV90eXBlKGJlZ2luLCBlbmQpIHsgfSBcCi0gICAgICAgIE5ETkJPT1NUX1BQX0NBVChiYXNpY18sIG5hbWUpKGNvbnN0IGNoYXJfdHlwZSogYmVnaW4sIHN0ZDo6c2l6ZV90IGxlbmd0aCkgXAotICAgICAgICAgICAgOiBiYXNlX3R5cGUoYmVnaW4sIGxlbmd0aCkgeyB9IFwKLSAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0FSUkFZX0NUT1IobmFtZSwgQ2gpIFwKLSAgICB9OyBcCi0gICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQoYmFzaWNfLCBuYW1lKTxjaGFyPiAgICAgbmFtZTsgXAotICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKGJhc2ljXywgbmFtZSk8d2NoYXJfdD4gIE5ETkJPT1NUX1BQX0NBVCh3LCBuYW1lKTsgXAotICAgIC8qKi8KLU5ETkJPT1NUX0lPU1RSRUFNU19BUlJBWShhcnJheV9zb3VyY2UsIGlucHV0X3NlZWthYmxlKQotTkROQk9PU1RfSU9TVFJFQU1TX0FSUkFZKGFycmF5X3NpbmssIG91dHB1dF9zZWVrYWJsZSkKLU5ETkJPT1NUX0lPU1RSRUFNU19BUlJBWShhcnJheSwgc2Vla2FibGUpCi0jdW5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0FSUkFZX0NUT1IKLSN1bmRlZiBORE5CT09TVF9JT1NUUkVBTVNfQVJSQVkKLQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLUltcGxlbWVudGF0aW9uIG9mIGFycmF5X2FkYXB0ZXItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2g+Ci1hcnJheV9hZGFwdGVyPE1vZGUsIENoPjo6YXJyYXlfYWRhcHRlcgotICAgIChjaGFyX3R5cGUqIGJlZ2luLCBjaGFyX3R5cGUqIGVuZCkgCi0gICAgOiBiZWdpbl8oYmVnaW4pLCBlbmRfKGVuZCkgCi0gICAgeyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIENoPgotYXJyYXlfYWRhcHRlcjxNb2RlLCBDaD46OmFycmF5X2FkYXB0ZXIKLSAgICAoY2hhcl90eXBlKiBiZWdpbiwgc3RkOjpzaXplX3QgbGVuZ3RoKSAKLSAgICA6IGJlZ2luXyhiZWdpbiksIGVuZF8oYmVnaW4gKyBsZW5ndGgpIAotICAgIHsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaD4KLWFycmF5X2FkYXB0ZXI8TW9kZSwgQ2g+OjphcnJheV9hZGFwdGVyCi0gICAgKGNvbnN0IGNoYXJfdHlwZSogYmVnaW4sIGNvbnN0IGNoYXJfdHlwZSogZW5kKSAKLSAgICA6IGJlZ2luXyhjb25zdF9jYXN0PGNoYXJfdHlwZSo+KGJlZ2luKSksICAvLyBUcmVhdGVkIGFzIHJlYWQtb25seS4KLSAgICAgIGVuZF8oY29uc3RfY2FzdDxjaGFyX3R5cGUqPihlbmQpKSAgICAgICAvLyBUcmVhdGVkIGFzIHJlYWQtb25seS4KLXsgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoIWlzX2NvbnZlcnRpYmxlPE1vZGUsIG91dHB1dD46OnZhbHVlKSk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2g+Ci1hcnJheV9hZGFwdGVyPE1vZGUsIENoPjo6YXJyYXlfYWRhcHRlcgotICAgIChjb25zdCBjaGFyX3R5cGUqIGJlZ2luLCBzdGQ6OnNpemVfdCBsZW5ndGgpIAotICAgIDogYmVnaW5fKGNvbnN0X2Nhc3Q8Y2hhcl90eXBlKj4oYmVnaW4pKSwgICAgICAgLy8gVHJlYXRlZCBhcyByZWFkLW9ubHkuCi0gICAgICBlbmRfKGNvbnN0X2Nhc3Q8Y2hhcl90eXBlKj4oYmVnaW4pICsgbGVuZ3RoKSAvLyBUcmVhdGVkIGFzIHJlYWQtb25seS4KLXsgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoIWlzX2NvbnZlcnRpYmxlPE1vZGUsIG91dHB1dD46OnZhbHVlKSk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2g+Ci10eXBlbmFtZSBhcnJheV9hZGFwdGVyPE1vZGUsIENoPjo6cGFpcl90eXBlCi1hcnJheV9hZGFwdGVyPE1vZGUsIENoPjo6aW5wdXRfc2VxdWVuY2UoKQoteyBORE5CT09TVF9TVEFUSUNfQVNTRVJUKChpc19jb252ZXJ0aWJsZTxNb2RlLCBpbnB1dD46OnZhbHVlKSk7Ci0gIHJldHVybiBwYWlyX3R5cGUoYmVnaW5fLCBlbmRfKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaD4KLXR5cGVuYW1lIGFycmF5X2FkYXB0ZXI8TW9kZSwgQ2g+OjpwYWlyX3R5cGUKLWFycmF5X2FkYXB0ZXI8TW9kZSwgQ2g+OjpvdXRwdXRfc2VxdWVuY2UoKQoteyBORE5CT09TVF9TVEFUSUNfQVNTRVJUKChpc19jb252ZXJ0aWJsZTxNb2RlLCBvdXRwdXQ+Ojp2YWx1ZSkpOwotICByZXR1cm4gcGFpcl90eXBlKGJlZ2luXywgZW5kXyk7IH0KLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19BUlJBWV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldmljZS9iYWNrX2luc2VydGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldmljZS9iYWNrX2luc2VydGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2RhYWNlNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXZpY2UvYmFja19pbnNlcnRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfQkFDS19JTlNFUlRFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0JBQ0tfSU5TRVJURVJfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3MuaHBwPiAvLyBzdHJlYW1zaXplLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jYXRlZ29yaWVzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENvbnRhaW5lcj4KLWNsYXNzIGJhY2tfaW5zZXJ0X2RldmljZSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBDb250YWluZXI6OnZhbHVlX3R5cGUgIGNoYXJfdHlwZTsKLSAgICB0eXBlZGVmIHNpbmtfdGFnICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk7Ci0gICAgYmFja19pbnNlcnRfZGV2aWNlKENvbnRhaW5lciYgY250KSA6IGNvbnRhaW5lcigmY250KSB7IH0KLSAgICBzdGQ6OnN0cmVhbXNpemUgd3JpdGUoY29uc3QgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7IAotICAgICAgICBjb250YWluZXItPmluc2VydChjb250YWluZXItPmVuZCgpLCBzLCBzICsgbik7IAotICAgICAgICByZXR1cm4gbjsKLSAgICB9Ci1wcm90ZWN0ZWQ6Ci0gICAgQ29udGFpbmVyKiBjb250YWluZXI7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDb250YWluZXI+Ci1iYWNrX2luc2VydF9kZXZpY2U8Q29udGFpbmVyPiBiYWNrX2luc2VydGVyKENvbnRhaW5lciYgY250KQoteyByZXR1cm4gYmFja19pbnNlcnRfZGV2aWNlPENvbnRhaW5lcj4oY250KTsgfQotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0JBQ0tfSU5TRVJURVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXZpY2UvZmlsZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXZpY2UvZmlsZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4Yzg1ZjIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV2aWNlL2ZpbGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTkxICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19GSUxFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfRklMRV9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy93aWRlX3N0cmVhbXMuaHBwPgotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fTE9DQUxFCi0jIGluY2x1ZGUgPGxvY2FsZT4KLSNlbmRpZgotI2luY2x1ZGUgPHN0cmluZz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGF0aG5hbWVzLCBjaGFyX3RyYWl0cy4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2F0ZWdvcmllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3MuaHBwPiAgICAgICAvLyBvcGVubW9kZSwgc2Vla2RpciwgaW50IHR5cGVzLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZnN0cmVhbS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnMuaHBwPiAgICAgICAvLyBzZWVrLgotI2luY2x1ZGUgPG5kbmJvb3N0L3NoYXJlZF9wdHIuaHBwPiAgICAgIAotCi0vLyBNdXN0IGNvbWUgbGFzdC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9kaXNhYmxlX3dhcm5pbmdzLmhwcD4gIC8vIE1TVkMuCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaD4KLWNsYXNzIGJhc2ljX2ZpbGUgewotcHVibGljOgotICAgIHR5cGVkZWYgQ2ggY2hhcl90eXBlOwotICAgIHN0cnVjdCBjYXRlZ29yeQotICAgICAgICA6IHB1YmxpYyBzZWVrYWJsZV9kZXZpY2VfdGFnLAotICAgICAgICAgIHB1YmxpYyBjbG9zYWJsZV90YWcsCi0gICAgICAgICAgcHVibGljIGxvY2FsaXphYmxlX3RhZywKLSAgICAgICAgICBwdWJsaWMgZmx1c2hhYmxlX3RhZwotICAgICAgICB7IH07Ci0gICAgYmFzaWNfZmlsZSggY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGgsCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSBtb2RlID0KLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjppbiB8IE5ETkJPT1NUX0lPUzo6b3V0LAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgYmFzZV9tb2RlID0KLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjppbiB8IE5ETkJPT1NUX0lPUzo6b3V0ICk7Ci0gICAgc3RkOjpzdHJlYW1zaXplIHJlYWQoY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbik7Ci0gICAgYm9vbCBwdXRiYWNrKGNoYXJfdHlwZSBjKTsKLSAgICBzdGQ6OnN0cmVhbXNpemUgd3JpdGUoY29uc3QgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbik7Ci0gICAgc3RkOjpzdHJlYW1wb3Mgc2Vlayggc3RyZWFtX29mZnNldCBvZmYsIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXksIAotICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2ggPSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjppbiB8IE5ETkJPT1NUX0lPUzo6b3V0ICk7Ci0gICAgdm9pZCBvcGVuKCBjb25zdCBzdGQ6OnN0cmluZyYgcGF0aCwKLSAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbW9kZSA9Ci0gICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjppbiB8IE5ETkJPT1NUX0lPUzo6b3V0LAotICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSBiYXNlX21vZGUgPQotICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6aW4gfCBORE5CT09TVF9JT1M6Om91dCApOwotICAgIGJvb2wgaXNfb3BlbigpIGNvbnN0OwotICAgIHZvaWQgY2xvc2UoKTsKLSAgICBib29sIGZsdXNoKCk7Ci0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19OT19MT0NBTEUKLSAgICB2b2lkIGltYnVlKGNvbnN0IHN0ZDo6bG9jYWxlJiBsb2MpIHsgcGltcGxfLT5maWxlXy5wdWJpbWJ1ZShsb2MpOyAgfQotI2VuZGlmCi1wcml2YXRlOgotICAgIHN0cnVjdCBpbXBsIHsKLSAgICAgICAgaW1wbChjb25zdCBzdGQ6OnN0cmluZyYgcGF0aCwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSBtb2RlKQotICAgICAgICAgICAgeyBmaWxlXy5vcGVuKHBhdGguY19zdHIoKSwgbW9kZSk7IH0KLSAgICAgICAgfmltcGwoKSB7IGlmIChmaWxlXy5pc19vcGVuKCkpIGZpbGVfLmNsb3NlKCk7IH0KLSAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0JBU0lDX0ZJTEVCVUYoQ2gpIGZpbGVfOwotICAgIH07Ci0gICAgc2hhcmVkX3B0cjxpbXBsPiBwaW1wbF87Ci19OwotCi10eXBlZGVmIGJhc2ljX2ZpbGU8Y2hhcj4gICAgIGZpbGU7Ci10eXBlZGVmIGJhc2ljX2ZpbGU8d2NoYXJfdD4gIHdmaWxlOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaD4KLXN0cnVjdCBiYXNpY19maWxlX3NvdXJjZSA6IHByaXZhdGUgYmFzaWNfZmlsZTxDaD4gewotICAgIHR5cGVkZWYgQ2ggY2hhcl90eXBlOwotICAgIHN0cnVjdCBjYXRlZ29yeQotICAgICAgICA6IGlucHV0X3NlZWthYmxlLAotICAgICAgICAgIGRldmljZV90YWcsCi0gICAgICAgICAgY2xvc2FibGVfdGFnCi0gICAgICAgIHsgfTsKLSAgICB1c2luZyBiYXNpY19maWxlPENoPjo6cmVhZDsKLSAgICB1c2luZyBiYXNpY19maWxlPENoPjo6cHV0YmFjazsKLSAgICB1c2luZyBiYXNpY19maWxlPENoPjo6c2VlazsKLSAgICB1c2luZyBiYXNpY19maWxlPENoPjo6aXNfb3BlbjsKLSAgICB1c2luZyBiYXNpY19maWxlPENoPjo6Y2xvc2U7Ci0gICAgYmFzaWNfZmlsZV9zb3VyY2UoIGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIG1vZGUgPSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6aW4gKQotICAgICAgICA6IGJhc2ljX2ZpbGU8Q2g+KHBhdGgsIG1vZGUgJiB+TkROQk9PU1RfSU9TOjpvdXQsIE5ETkJPT1NUX0lPUzo6aW4pCi0gICAgICAgIHsgfQotICAgIHZvaWQgb3BlbiggY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGgsCi0gICAgICAgICAgICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIG1vZGUgPSBORE5CT09TVF9JT1M6OmluICkKLSAgICB7Ci0gICAgICAgIGJhc2ljX2ZpbGU8Q2g+OjpvcGVuKHBhdGgsIG1vZGUgJiB+TkROQk9PU1RfSU9TOjpvdXQsIE5ETkJPT1NUX0lPUzo6aW4pOwotICAgIH0KLX07Ci0KLXR5cGVkZWYgYmFzaWNfZmlsZV9zb3VyY2U8Y2hhcj4gICAgIGZpbGVfc291cmNlOwotdHlwZWRlZiBiYXNpY19maWxlX3NvdXJjZTx3Y2hhcl90PiAgd2ZpbGVfc291cmNlOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaD4KLXN0cnVjdCBiYXNpY19maWxlX3NpbmsgOiBwcml2YXRlIGJhc2ljX2ZpbGU8Q2g+IHsKLSAgICB0eXBlZGVmIENoIGNoYXJfdHlwZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkKLSAgICAgICAgOiBvdXRwdXRfc2Vla2FibGUsCi0gICAgICAgICAgZGV2aWNlX3RhZywKLSAgICAgICAgICBjbG9zYWJsZV90YWcsCi0gICAgICAgICAgZmx1c2hhYmxlX3RhZwotICAgICAgICB7IH07Ci0gICAgdXNpbmcgYmFzaWNfZmlsZTxDaD46OndyaXRlOwotICAgIHVzaW5nIGJhc2ljX2ZpbGU8Q2g+OjpzZWVrOwotICAgIHVzaW5nIGJhc2ljX2ZpbGU8Q2g+Ojppc19vcGVuOwotICAgIHVzaW5nIGJhc2ljX2ZpbGU8Q2g+OjpjbG9zZTsKLSAgICB1c2luZyBiYXNpY19maWxlPENoPjo6Zmx1c2g7Ci0gICAgYmFzaWNfZmlsZV9zaW5rKCBjb25zdCBzdGQ6OnN0cmluZyYgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbW9kZSA9IE5ETkJPT1NUX0lPUzo6b3V0ICkKLSAgICAgICAgOiBiYXNpY19maWxlPENoPihwYXRoLCBtb2RlICYgfk5ETkJPT1NUX0lPUzo6aW4sIE5ETkJPT1NUX0lPUzo6b3V0KQotICAgICAgICB7IH0KLSAgICB2b2lkIG9wZW4oIGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoLAotICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSBtb2RlID0gTkROQk9PU1RfSU9TOjpvdXQgKQotICAgIHsKLSAgICAgICAgYmFzaWNfZmlsZTxDaD46Om9wZW4ocGF0aCwgbW9kZSAmIH5ORE5CT09TVF9JT1M6OmluLCBORE5CT09TVF9JT1M6Om91dCk7Ci0gICAgfQotfTsKLQotdHlwZWRlZiBiYXNpY19maWxlX3Npbms8Y2hhcj4gICAgIGZpbGVfc2luazsKLXR5cGVkZWYgYmFzaWNfZmlsZV9zaW5rPHdjaGFyX3Q+ICB3ZmlsZV9zaW5rOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0vLy0tLS0tLS0tLS0tLS0tLS0tLUltcGxlbWVudGF0aW9uIG9mIGJhc2ljX2ZpbGUtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaD4KLWJhc2ljX2ZpbGU8Q2g+OjpiYXNpY19maWxlCi0gICAgKCBjb25zdCBzdGQ6OnN0cmluZyYgcGF0aCwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSBtb2RlLCAKLSAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgYmFzZV9tb2RlICkKLXsgCi0gICAgb3BlbihwYXRoLCBtb2RlLCBiYXNlX21vZGUpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaD4KLWlubGluZSBzdGQ6OnN0cmVhbXNpemUgYmFzaWNfZmlsZTxDaD46OnJlYWQKLSAgICAoY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLXsgCi0gICAgc3RkOjpzdHJlYW1zaXplIHJlc3VsdCA9IHBpbXBsXy0+ZmlsZV8uc2dldG4ocywgbik7IAotICAgIHJldHVybiByZXN1bHQgIT0gMCA/IHJlc3VsdCA6IC0xOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaD4KLWlubGluZSBib29sIGJhc2ljX2ZpbGU8Q2g+OjpwdXRiYWNrKGNoYXJfdHlwZSBjKQoteyAKLSAgICByZXR1cm4gISFwaW1wbF8tPmZpbGVfLnNwdXRiYWNrYyhjKTsgCi19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoPgotaW5saW5lIHN0ZDo6c3RyZWFtc2l6ZSBiYXNpY19maWxlPENoPjo6d3JpdGUKLSAgICAoY29uc3QgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLXsgcmV0dXJuIHBpbXBsXy0+ZmlsZV8uc3B1dG4ocywgbik7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2g+Ci1zdGQ6OnN0cmVhbXBvcyBiYXNpY19maWxlPENoPjo6c2VlawotICAgICggc3RyZWFtX29mZnNldCBvZmYsIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXksIAotICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSApCi17IHJldHVybiBpb3N0cmVhbXM6OnNlZWsocGltcGxfLT5maWxlXywgb2ZmLCB3YXkpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoPgotdm9pZCBiYXNpY19maWxlPENoPjo6b3BlbgotICAgICggY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGgsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbW9kZSwgCi0gICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIGJhc2VfbW9kZSApCi17IAotICAgIHBpbXBsXy5yZXNldChuZXcgaW1wbChwYXRoLCBtb2RlIHwgYmFzZV9tb2RlKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoPgotYm9vbCBiYXNpY19maWxlPENoPjo6aXNfb3BlbigpIGNvbnN0IHsgcmV0dXJuIHBpbXBsXy0+ZmlsZV8uaXNfb3BlbigpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoPgotdm9pZCBiYXNpY19maWxlPENoPjo6Y2xvc2UoKSB7IHBpbXBsXy0+ZmlsZV8uY2xvc2UoKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaD4KLWJvb2wgYmFzaWNfZmlsZTxDaD46OmZsdXNoKCkKLXsgcmV0dXJuIHBpbXBsXy0+ZmlsZV8uTkROQk9PU1RfSU9TVFJFQU1TX1BVQlNZTkMoKSA9PSAwOyB9Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcD4gLy8gTVNWQwotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfRklMRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldmljZS9maWxlX2Rlc2NyaXB0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV2aWNlL2ZpbGVfZGVzY3JpcHRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2NWE4OWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV2aWNlL2ZpbGVfZGVzY3JpcHRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMTggKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vIEluc3BpcmVkIGJ5IGZkc3RyZWFtLmhwcCwgKEMpIENvcHlyaWdodCBOaWNvbGFpIE0uIEpvc3V0dGlzIDIwMDEsCi0vLyBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5qb3N1dHRpcy5jb20vY3BwY29kZS9mZHN0cmVhbS5odG1sLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19GSUxFX0RFU0NSSVBUT1JfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19GSUxFX0RFU0NSSVBUT1JfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NzdGRpbnQuaHBwPiAgICAgICAgICAgICAgIC8vIGludG1heF90LgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jYXRlZ29yaWVzLmhwcD4gIC8vIHRhZ3MuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvYXV0b19saW5rLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9keW5fbGluay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvd2luZG93c19wb3NpeC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9maWxlX2hhbmRsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3MuaHBwPiAgLy8gb3Blbm1vZGUsIHNlZWtkaXIsIGludCB0eXBlcy4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3BhdGguaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9wb3NpdGlvbmluZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc2hhcmVkX3B0ci5ocHA+Ci0KLS8vIE11c3QgY29tZSBsYXN0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9hYmlfcHJlZml4LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLS8vIEZvcndhcmQgZGVjbGFyYXRpb25zCi1jbGFzcyBmaWxlX2Rlc2NyaXB0b3Jfc291cmNlOwotY2xhc3MgZmlsZV9kZXNjcmlwdG9yX3Npbms7Ci1uYW1lc3BhY2UgZGV0YWlsIHsgc3RydWN0IGZpbGVfZGVzY3JpcHRvcl9pbXBsOyB9Ci0KLWVudW0gZmlsZV9kZXNjcmlwdG9yX2ZsYWdzCi17Ci0gICAgbmV2ZXJfY2xvc2VfaGFuZGxlID0gMCwKLSAgICBjbG9zZV9oYW5kbGUgPSAzCi19OwotCi1jbGFzcyBORE5CT09TVF9JT1NUUkVBTVNfREVDTCBmaWxlX2Rlc2NyaXB0b3IgewotcHVibGljOgotICAgIGZyaWVuZCBjbGFzcyBmaWxlX2Rlc2NyaXB0b3Jfc291cmNlOwotICAgIGZyaWVuZCBjbGFzcyBmaWxlX2Rlc2NyaXB0b3Jfc2luazsKLSAgICB0eXBlZGVmIGRldGFpbDo6ZmlsZV9oYW5kbGUgIGhhbmRsZV90eXBlOwotICAgIHR5cGVkZWYgY2hhciAgICAgICAgICAgICAgICAgY2hhcl90eXBlOwotICAgIHN0cnVjdCBjYXRlZ29yeQotICAgICAgICA6IHNlZWthYmxlX2RldmljZV90YWcsCi0gICAgICAgICAgY2xvc2FibGVfdGFnCi0gICAgICAgIHsgfTsKLQotICAgIC8vIERlZmF1bHQgY29uc3RydWN0b3IKLSAgICBmaWxlX2Rlc2NyaXB0b3IoKTsKLQotICAgIC8vIENvbnN0cnVjdG9ycyB0YWtpbmcgZmlsZSBkZXNjaXB0b3JzCi0gICAgZmlsZV9kZXNjcmlwdG9yKGhhbmRsZV90eXBlIGZkLCBmaWxlX2Rlc2NyaXB0b3JfZmxhZ3MpOwotI2lmZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19XSU5ET1dTCi0gICAgZmlsZV9kZXNjcmlwdG9yKGludCBmZCwgZmlsZV9kZXNjcmlwdG9yX2ZsYWdzKTsKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9JT1NUUkVBTVNfVVNFX0RFUFJFQ0FURUQpCi0gICAgLy8gQ29uc3RydWN0b3JzIHRha2luZyBmaWxlIGRlc2NpcHRvcnMKLSAgICBleHBsaWNpdCBmaWxlX2Rlc2NyaXB0b3IoaGFuZGxlX3R5cGUgZmQsIGJvb2wgY2xvc2Vfb25fZXhpdCA9IGZhbHNlKTsKLSNpZmRlZiBORE5CT09TVF9JT1NUUkVBTVNfV0lORE9XUwotICAgIGV4cGxpY2l0IGZpbGVfZGVzY3JpcHRvcihpbnQgZmQsIGJvb2wgY2xvc2Vfb25fZXhpdCA9IGZhbHNlKTsKLSNlbmRpZgotI2VuZGlmCi0KLSAgICAvLyBDb25zdHJ1Y3RvciB0YWtpbmcgYSBzdGQ6OiBzdHJpbmcKLSAgICBleHBsaWNpdCBmaWxlX2Rlc2NyaXB0b3IoIGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSBtb2RlID0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6OmluIHwgTkROQk9PU1RfSU9TOjpvdXQgKTsKLQotICAgIC8vIENvbnN0cnVjdG9yIHRha2luZyBhIEMtc3R5bGUgc3RyaW5nCi0gICAgZXhwbGljaXQgZmlsZV9kZXNjcmlwdG9yKCBjb25zdCBjaGFyKiBwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSBtb2RlID0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6OmluIHwgTkROQk9PU1RfSU9TOjpvdXQgKTsKLQotICAgIC8vIENvbnN0cnVjdG9yIHRha2luZyBhIEJvb3N0LkZpbGVzeXN0ZW0gcGF0aAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci0gICAgZXhwbGljaXQgZmlsZV9kZXNjcmlwdG9yKCBjb25zdCBQYXRoJiBwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSBtb2RlID0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6OmluIHwgTkROQk9PU1RfSU9TOjpvdXQgKQotICAgIHsgCi0gICAgICAgIGluaXQoKTsKLSAgICAgICAgb3BlbihkZXRhaWw6OnBhdGgocGF0aCksIG1vZGUpOyAKLSAgICB9Ci0KLSAgICAvLyBDb3B5IGNvbnN0cnVjdG9yCi0gICAgZmlsZV9kZXNjcmlwdG9yKGNvbnN0IGZpbGVfZGVzY3JpcHRvciYgb3RoZXIpOwotCi0gICAgLy8gb3BlbiBvdmVybG9hZHMgdGFraW5nIGZpbGUgZGVzY3JpcHRvcnMKLSAgICB2b2lkIG9wZW4oaGFuZGxlX3R5cGUgZmQsIGZpbGVfZGVzY3JpcHRvcl9mbGFncyk7Ci0jaWZkZWYgTkROQk9PU1RfSU9TVFJFQU1TX1dJTkRPV1MKLSAgICB2b2lkIG9wZW4oaW50IGZkLCBmaWxlX2Rlc2NyaXB0b3JfZmxhZ3MpOwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0lPU1RSRUFNU19VU0VfREVQUkVDQVRFRCkKLSAgICAvLyBvcGVuIG92ZXJsb2FkcyB0YWtpbmcgZmlsZSBkZXNjcmlwdG9ycwotICAgIHZvaWQgb3BlbihoYW5kbGVfdHlwZSBmZCwgYm9vbCBjbG9zZV9vbl9leGl0ID0gZmFsc2UpOwotI2lmZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19XSU5ET1dTCi0gICAgdm9pZCBvcGVuKGludCBmZCwgYm9vbCBjbG9zZV9vbl9leGl0ID0gZmFsc2UpOwotI2VuZGlmCi0jZW5kaWYKLQotICAgIC8vIG9wZW4gb3ZlcmxvYWQgdGFraW5nIGEgc3RkOjpzdHJpbmcKLSAgICB2b2lkIG9wZW4oIGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoLAotICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSBtb2RlID0KLSAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6OmluIHwgTkROQk9PU1RfSU9TOjpvdXQgKTsKLQotICAgIC8vIG9wZW4gb3ZlcmxvYWQgdGFraW5nIEMtc3R5bGUgc3RyaW5nCi0gICAgdm9pZCBvcGVuKCBjb25zdCBjaGFyKiBwYXRoLAotICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSBtb2RlID0KLSAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6OmluIHwgTkROQk9PU1RfSU9TOjpvdXQgKTsKLQotICAgIC8vIG9wZW4gb3ZlcmxvYWQgdGFraW5nIGEgQm9vc3QuRmlsZXN5c3RlbSBwYXRoCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUGF0aD4KLSAgICB2b2lkIG9wZW4oIGNvbnN0IFBhdGgmIHBhdGgsCi0gICAgICAgICAgICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIG1vZGUgPQotICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6aW4gfCBORE5CT09TVF9JT1M6Om91dCApCi0gICAgeyBvcGVuKGRldGFpbDo6cGF0aChwYXRoKSwgbW9kZSk7IH0KLQotICAgIGJvb2wgaXNfb3BlbigpIGNvbnN0OwotICAgIHZvaWQgY2xvc2UoKTsKLSAgICBzdGQ6OnN0cmVhbXNpemUgcmVhZChjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKTsKLSAgICBzdGQ6OnN0cmVhbXNpemUgd3JpdGUoY29uc3QgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbik7Ci0gICAgc3RkOjpzdHJlYW1wb3Mgc2VlayhzdHJlYW1fb2Zmc2V0IG9mZiwgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSk7Ci0gICAgaGFuZGxlX3R5cGUgaGFuZGxlKCkgY29uc3Q7Ci1wcml2YXRlOgotICAgIHZvaWQgaW5pdCgpOwotCi0gICAgLy8gb3BlbiBvdmVybG9hZCB0YWtpbmcgYSBkZXRhaWw6OnBhdGgKLSAgICB2b2lkIG9wZW4oIGNvbnN0IGRldGFpbDo6cGF0aCYgcGF0aCwgCi0gICAgICAgICAgICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlLCAKLSAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgPSBORE5CT09TVF9JT1M6Om9wZW5tb2RlKDApICk7Ci0KLSAgICB0eXBlZGVmIGRldGFpbDo6ZmlsZV9kZXNjcmlwdG9yX2ltcGwgaW1wbF90eXBlOwotICAgIHNoYXJlZF9wdHI8aW1wbF90eXBlPiBwaW1wbF87Ci19OwotCi1jbGFzcyBORE5CT09TVF9JT1NUUkVBTVNfREVDTCBmaWxlX2Rlc2NyaXB0b3Jfc291cmNlIDogcHJpdmF0ZSBmaWxlX2Rlc2NyaXB0b3IgewotcHVibGljOgotI2lmZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19XSU5ET1dTCi0gICAgdHlwZWRlZiB2b2lkKiAgaGFuZGxlX3R5cGU7ICAvLyBBLmsuYSBIQU5ETEUKLSNlbHNlCi0gICAgdHlwZWRlZiBpbnQgICAgaGFuZGxlX3R5cGU7Ci0jZW5kaWYKLSAgICB0eXBlZGVmIGNoYXIgICBjaGFyX3R5cGU7Ci0gICAgc3RydWN0IGNhdGVnb3J5Ci0gICAgICA6IGlucHV0X3NlZWthYmxlLAotICAgICAgICBkZXZpY2VfdGFnLAotICAgICAgICBjbG9zYWJsZV90YWcKLSAgICAgIHsgfTsKLSAgICB1c2luZyBmaWxlX2Rlc2NyaXB0b3I6OmlzX29wZW47Ci0gICAgdXNpbmcgZmlsZV9kZXNjcmlwdG9yOjpjbG9zZTsKLSAgICB1c2luZyBmaWxlX2Rlc2NyaXB0b3I6OnJlYWQ7Ci0gICAgdXNpbmcgZmlsZV9kZXNjcmlwdG9yOjpzZWVrOwotICAgIHVzaW5nIGZpbGVfZGVzY3JpcHRvcjo6aGFuZGxlOwotCi0gICAgLy8gRGVmYXVsdCBjb25zdHJ1Y3RvcgotICAgIGZpbGVfZGVzY3JpcHRvcl9zb3VyY2UoKSB7IH0KLQotICAgIC8vIENvbnN0cnVjdG9ycyB0YWtpbmcgZmlsZSBkZXNjaXB0b3JzCi0gICAgZXhwbGljaXQgZmlsZV9kZXNjcmlwdG9yX3NvdXJjZShoYW5kbGVfdHlwZSBmZCwgZmlsZV9kZXNjcmlwdG9yX2ZsYWdzKTsKLSNpZmRlZiBORE5CT09TVF9JT1NUUkVBTVNfV0lORE9XUwotICAgIGV4cGxpY2l0IGZpbGVfZGVzY3JpcHRvcl9zb3VyY2UoaW50IGZkLCBmaWxlX2Rlc2NyaXB0b3JfZmxhZ3MpOwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0lPU1RSRUFNU19VU0VfREVQUkVDQVRFRCkKLSAgICAvLyBDb25zdHJ1Y3RvcnMgdGFraW5nIGZpbGUgZGVzY2lwdG9ycwotICAgIGV4cGxpY2l0IGZpbGVfZGVzY3JpcHRvcl9zb3VyY2UoaGFuZGxlX3R5cGUgZmQsIGJvb2wgY2xvc2Vfb25fZXhpdCA9IGZhbHNlKTsKLSNpZmRlZiBORE5CT09TVF9JT1NUUkVBTVNfV0lORE9XUwotICAgIGV4cGxpY2l0IGZpbGVfZGVzY3JpcHRvcl9zb3VyY2UoaW50IGZkLCBib29sIGNsb3NlX29uX2V4aXQgPSBmYWxzZSk7Ci0jZW5kaWYKLSNlbmRpZgotCi0gICAgLy8gQ29uc3RydWN0b3IgdGFraW5nIGEgc3RkOjogc3RyaW5nCi0gICAgZXhwbGljaXQgZmlsZV9kZXNjcmlwdG9yX3NvdXJjZSggY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSBtb2RlID0gTkROQk9PU1RfSU9TOjppbiApOwotCi0gICAgLy8gQ29uc3RydWN0b3IgdGFraW5nIGEgQy1zdHlsZSBzdHJpbmcKLSAgICBleHBsaWNpdCBmaWxlX2Rlc2NyaXB0b3Jfc291cmNlKCBjb25zdCBjaGFyKiBwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbW9kZSA9IE5ETkJPT1NUX0lPUzo6aW4gKTsKLQotICAgIC8vIENvbnN0cnVjdG9yIHRha2luZyBhIEJvb3N0LkZpbGVzeXN0ZW0gcGF0aAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci0gICAgZXhwbGljaXQgZmlsZV9kZXNjcmlwdG9yX3NvdXJjZSggY29uc3QgUGF0aCYgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIG1vZGUgPSBORE5CT09TVF9JT1M6OmluICkKLSAgICB7IG9wZW4oZGV0YWlsOjpwYXRoKHBhdGgpLCBtb2RlKTsgfQotCi0gICAgLy8gQ29weSBjb25zdHJ1Y3RvcgotICAgIGZpbGVfZGVzY3JpcHRvcl9zb3VyY2UoY29uc3QgZmlsZV9kZXNjcmlwdG9yX3NvdXJjZSYgb3RoZXIpOwotCi0gICAgLy8gQ29uc3RydWN0b3JzIHRha2luZyBmaWxlIGRlc2NpcHRvcnMKLSAgICB2b2lkIG9wZW4oaGFuZGxlX3R5cGUgZmQsIGZpbGVfZGVzY3JpcHRvcl9mbGFncyk7Ci0jaWZkZWYgTkROQk9PU1RfSU9TVFJFQU1TX1dJTkRPV1MKLSAgICB2b2lkIG9wZW4oaW50IGZkLCBmaWxlX2Rlc2NyaXB0b3JfZmxhZ3MpOwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0lPU1RSRUFNU19VU0VfREVQUkVDQVRFRCkKLSAgICAvLyBvcGVuIG92ZXJsb2FkcyB0YWtpbmcgZmlsZSBkZXNjcmlwdG9ycwotICAgIHZvaWQgb3BlbihoYW5kbGVfdHlwZSBmZCwgYm9vbCBjbG9zZV9vbl9leGl0ID0gZmFsc2UpOwotI2lmZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19XSU5ET1dTCi0gICAgdm9pZCBvcGVuKGludCBmZCwgYm9vbCBjbG9zZV9vbl9leGl0ID0gZmFsc2UpOwotI2VuZGlmCi0jZW5kaWYKLQotICAgIC8vIG9wZW4gb3ZlcmxvYWQgdGFraW5nIGEgc3RkOjpzdHJpbmcKLSAgICB2b2lkIG9wZW4oY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGgsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbW9kZSA9IE5ETkJPT1NUX0lPUzo6aW4pOwotCi0gICAgLy8gb3BlbiBvdmVybG9hZCB0YWtpbmcgQy1zdHlsZSBzdHJpbmcKLSAgICB2b2lkIG9wZW4oY29uc3QgY2hhciogcGF0aCwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSBtb2RlID0gTkROQk9PU1RfSU9TOjppbik7Ci0KLSAgICAvLyBvcGVuIG92ZXJsb2FkIHRha2luZyBhIEJvb3N0LkZpbGVzeXN0ZW0gcGF0aAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci0gICAgdm9pZCBvcGVuKGNvbnN0IFBhdGgmIHBhdGgsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbW9kZSA9IE5ETkJPT1NUX0lPUzo6aW4pOwotcHJpdmF0ZToKLQotICAgIC8vIG9wZW4gb3ZlcmxvYWQgdGFraW5nIGEgZGV0YWlsOjpwYXRoCi0gICAgdm9pZCBvcGVuKGNvbnN0IGRldGFpbDo6cGF0aCYgcGF0aCwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSk7Ci19OwotCi1jbGFzcyBORE5CT09TVF9JT1NUUkVBTVNfREVDTCBmaWxlX2Rlc2NyaXB0b3Jfc2luayA6IHByaXZhdGUgZmlsZV9kZXNjcmlwdG9yIHsKLXB1YmxpYzoKLSNpZmRlZiBORE5CT09TVF9JT1NUUkVBTVNfV0lORE9XUwotICAgIHR5cGVkZWYgdm9pZCogIGhhbmRsZV90eXBlOyAgLy8gQS5rLmEgSEFORExFCi0jZWxzZQotICAgIHR5cGVkZWYgaW50ICAgIGhhbmRsZV90eXBlOwotI2VuZGlmCi0gICAgdHlwZWRlZiBjaGFyICAgY2hhcl90eXBlOwotICAgIHN0cnVjdCBjYXRlZ29yeQotICAgICAgOiBvdXRwdXRfc2Vla2FibGUsCi0gICAgICAgIGRldmljZV90YWcsCi0gICAgICAgIGNsb3NhYmxlX3RhZwotICAgICAgeyB9OwotICAgIHVzaW5nIGZpbGVfZGVzY3JpcHRvcjo6aXNfb3BlbjsKLSAgICB1c2luZyBmaWxlX2Rlc2NyaXB0b3I6OmNsb3NlOwotICAgIHVzaW5nIGZpbGVfZGVzY3JpcHRvcjo6d3JpdGU7Ci0gICAgdXNpbmcgZmlsZV9kZXNjcmlwdG9yOjpzZWVrOwotICAgIHVzaW5nIGZpbGVfZGVzY3JpcHRvcjo6aGFuZGxlOwotCi0gICAgLy8gRGVmYXVsdCBjb25zdHJ1Y3RvcgotICAgIGZpbGVfZGVzY3JpcHRvcl9zaW5rKCkgeyB9Ci0KLSAgICAvLyBDb25zdHJ1Y3RvcnMgdGFraW5nIGZpbGUgZGVzY2lwdG9ycwotICAgIGZpbGVfZGVzY3JpcHRvcl9zaW5rKGhhbmRsZV90eXBlIGZkLCBmaWxlX2Rlc2NyaXB0b3JfZmxhZ3MpOwotI2lmZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19XSU5ET1dTCi0gICAgZmlsZV9kZXNjcmlwdG9yX3NpbmsoaW50IGZkLCBmaWxlX2Rlc2NyaXB0b3JfZmxhZ3MpOwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0lPU1RSRUFNU19VU0VfREVQUkVDQVRFRCkKLSAgICAvLyBDb25zdHJ1Y3RvcnMgdGFraW5nIGZpbGUgZGVzY2lwdG9ycwotICAgIGV4cGxpY2l0IGZpbGVfZGVzY3JpcHRvcl9zaW5rKGhhbmRsZV90eXBlIGZkLCBib29sIGNsb3NlX29uX2V4aXQgPSBmYWxzZSk7Ci0jaWZkZWYgTkROQk9PU1RfSU9TVFJFQU1TX1dJTkRPV1MKLSAgICBleHBsaWNpdCBmaWxlX2Rlc2NyaXB0b3Jfc2luayhpbnQgZmQsIGJvb2wgY2xvc2Vfb25fZXhpdCA9IGZhbHNlKTsKLSNlbmRpZgotI2VuZGlmCi0KLSAgICAvLyBDb25zdHJ1Y3RvciB0YWtpbmcgYSBzdGQ6OiBzdHJpbmcKLSAgICBleHBsaWNpdCBmaWxlX2Rlc2NyaXB0b3Jfc2luayggY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbW9kZSA9IE5ETkJPT1NUX0lPUzo6b3V0ICk7Ci0KLSAgICAvLyBDb25zdHJ1Y3RvciB0YWtpbmcgYSBDLXN0eWxlIHN0cmluZwotICAgIGV4cGxpY2l0IGZpbGVfZGVzY3JpcHRvcl9zaW5rKCBjb25zdCBjaGFyKiBwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIG1vZGUgPSBORE5CT09TVF9JT1M6Om91dCApOwotCi0gICAgLy8gQ29uc3RydWN0b3IgdGFraW5nIGEgQm9vc3QuRmlsZXN5c3RlbSBwYXRoCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUGF0aD4KLSAgICBleHBsaWNpdCBmaWxlX2Rlc2NyaXB0b3Jfc2luayggY29uc3QgUGF0aCYgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSBtb2RlID0gTkROQk9PU1RfSU9TOjpvdXQgKQotICAgIHsgb3BlbihkZXRhaWw6OnBhdGgocGF0aCksIG1vZGUpOyB9Ci0KLSAgICAvLyBDb3B5IGNvbnN0cnVjdG9yCi0gICAgZmlsZV9kZXNjcmlwdG9yX3NpbmsoY29uc3QgZmlsZV9kZXNjcmlwdG9yX3NpbmsmIG90aGVyKTsKLQotICAgIC8vIG9wZW4gb3ZlcmxvYWRzIHRha2luZyBmaWxlIGRlc2NyaXB0b3JzCi0gICAgdm9pZCBvcGVuKGhhbmRsZV90eXBlIGZkLCBmaWxlX2Rlc2NyaXB0b3JfZmxhZ3MpOwotI2lmZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19XSU5ET1dTCi0gICAgdm9pZCBvcGVuKGludCBmZCwgZmlsZV9kZXNjcmlwdG9yX2ZsYWdzKTsKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9JT1NUUkVBTVNfVVNFX0RFUFJFQ0FURUQpCi0gICAgLy8gb3BlbiBvdmVybG9hZHMgdGFraW5nIGZpbGUgZGVzY3JpcHRvcnMKLSAgICB2b2lkIG9wZW4oaGFuZGxlX3R5cGUgZmQsIGJvb2wgY2xvc2Vfb25fZXhpdCA9IGZhbHNlKTsKLSNpZmRlZiBORE5CT09TVF9JT1NUUkVBTVNfV0lORE9XUwotICAgIHZvaWQgb3BlbihpbnQgZmQsIGJvb2wgY2xvc2Vfb25fZXhpdCA9IGZhbHNlKTsKLSNlbmRpZgotI2VuZGlmCi0KLSAgICAvLyBvcGVuIG92ZXJsb2FkIHRha2luZyBhIHN0ZDo6c3RyaW5nCi0gICAgdm9pZCBvcGVuKCBjb25zdCBzdGQ6OnN0cmluZyYgcGF0aCwgCi0gICAgICAgICAgICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIG1vZGUgPSBORE5CT09TVF9JT1M6Om91dCApOwotCi0gICAgLy8gb3BlbiBvdmVybG9hZCB0YWtpbmcgQy1zdHlsZSBzdHJpbmcKLSAgICB2b2lkIG9wZW4oIGNvbnN0IGNoYXIqIHBhdGgsIAotICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSBtb2RlID0gTkROQk9PU1RfSU9TOjpvdXQgKTsKLQotICAgIC8vIG9wZW4gb3ZlcmxvYWQgdGFraW5nIGEgQm9vc3QuRmlsZXN5c3RlbSBwYXRoCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUGF0aD4KLSAgICB2b2lkIG9wZW4oIGNvbnN0IFBhdGgmIHBhdGgsIAotICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSBtb2RlID0gTkROQk9PU1RfSU9TOjpvdXQgKQotICAgIHsgb3BlbihkZXRhaWw6OnBhdGgocGF0aCksIG1vZGUpOyB9Ci1wcml2YXRlOgotCi0gICAgLy8gb3BlbiBvdmVybG9hZCB0YWtpbmcgYSBkZXRhaWw6OnBhdGgKLSAgICB2b2lkIG9wZW4oY29uc3QgZGV0YWlsOjpwYXRoJiBwYXRoLCBORE5CT09TVF9JT1M6Om9wZW5tb2RlKTsKLX07Ci0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL2FiaV9zdWZmaXguaHBwPiAvLyBwb3BzIGFiaV9zdWZmaXguaHBwIHByYWdtYXMKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0ZJTEVfREVTQ1JJUFRPUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldmljZS9tYXBwZWRfZmlsZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXZpY2UvbWFwcGVkX2ZpbGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOGZiZDU1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldmljZS9tYXBwZWRfZmlsZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1OTkgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCBKb3JnZSBMb2RvcyAyMDA4LgotLy8gKEMpIENvcHlyaWdodCBKb25hdGhhbiBUdXJrYW5pcyAyMDAzLgotLy8gKEMpIENvcHlyaWdodCBDcmFpZyBIZW5kZXJzb24gMjAwMi4gICAnYm9vc3QvbWVtbWFwLmhwcCcgZnJvbSBzYW5kYm94Ci0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX01BUFBFRF9GSUxFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfTUFQUEVEX0ZJTEVfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gICAgICAgICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHNpemVfdCBpcyBpbiBzdGQuCi0jaW5jbHVkZSA8Y3N0ZGRlZj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2l6ZV90LgotI2luY2x1ZGUgPHN0cmluZz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBhdGhuYW1lcy4KLSNpbmNsdWRlIDx1dGlsaXR5PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYWlyLgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAgICAgICAgICAgICAgICAgIC8vIE5ETkJPT1NUX01TVkMuCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jbG9zZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NvbmNlcHRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9hdXRvX2xpbmsuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2R5bl9saW5rLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy93aWRlX3N0cmVhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4gICAgIC8vIG9wZW5tb2RlLCBmYWlsdXJlCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9wYXRoLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvb3BlcmF0aW9uc19md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9wb3NpdGlvbmluZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc2hhcmVkX3B0ci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGhyb3dfZXhjZXB0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLQotLy8gTXVzdCBjb21lIGxhc3QuCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL2FiaV9wcmVmaXguaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIG1hcHBlZF9maWxlX2Jhc2UgYW5kIG1hcHBlZF9maWxlX3BhcmFtcy0tLS0tLy8KLQotLy8gRm9yd2FyZCBkZWNsYXJhdGlvbnMKLWNsYXNzIG1hcHBlZF9maWxlX3NvdXJjZTsKLWNsYXNzIG1hcHBlZF9maWxlX3Npbms7Ci1jbGFzcyBtYXBwZWRfZmlsZTsKLW5hbWVzcGFjZSBkZXRhaWwgeyBjbGFzcyBtYXBwZWRfZmlsZV9pbXBsOyB9Ci0KLWNsYXNzIG1hcHBlZF9maWxlX2Jhc2UgewotcHVibGljOgotICAgIGVudW0gbWFwbW9kZSB7Ci0gICAgICAgIHJlYWRvbmx5ID0gMSwKLSAgICAgICAgcmVhZHdyaXRlID0gMiwKLSAgICAgICAgcHJpdiA9IDQKLSAgICB9OwotfTsKLQotLy8gQml0bWFzayBvcGVyYXRpb25zIGZvciBtYXBwZWRfZmlsZV9iYXNlOjptYXBtb2RlCi1tYXBwZWRfZmlsZV9iYXNlOjptYXBtb2RlIAotb3BlcmF0b3J8KG1hcHBlZF9maWxlX2Jhc2U6Om1hcG1vZGUgYSwgbWFwcGVkX2ZpbGVfYmFzZTo6bWFwbW9kZSBiKTsKLQotbWFwcGVkX2ZpbGVfYmFzZTo6bWFwbW9kZSAKLW9wZXJhdG9yJihtYXBwZWRfZmlsZV9iYXNlOjptYXBtb2RlIGEsIG1hcHBlZF9maWxlX2Jhc2U6Om1hcG1vZGUgYik7Ci0KLW1hcHBlZF9maWxlX2Jhc2U6Om1hcG1vZGUgCi1vcGVyYXRvcl4obWFwcGVkX2ZpbGVfYmFzZTo6bWFwbW9kZSBhLCBtYXBwZWRfZmlsZV9iYXNlOjptYXBtb2RlIGIpOwotCi1tYXBwZWRfZmlsZV9iYXNlOjptYXBtb2RlIAotb3BlcmF0b3J+KG1hcHBlZF9maWxlX2Jhc2U6Om1hcG1vZGUgYSk7Ci0KLW1hcHBlZF9maWxlX2Jhc2U6Om1hcG1vZGUgCi1vcGVyYXRvcnw9KG1hcHBlZF9maWxlX2Jhc2U6Om1hcG1vZGUmIGEsIG1hcHBlZF9maWxlX2Jhc2U6Om1hcG1vZGUgYik7Ci0KLW1hcHBlZF9maWxlX2Jhc2U6Om1hcG1vZGUgCi1vcGVyYXRvciY9KG1hcHBlZF9maWxlX2Jhc2U6Om1hcG1vZGUmIGEsIG1hcHBlZF9maWxlX2Jhc2U6Om1hcG1vZGUgYik7Ci0KLW1hcHBlZF9maWxlX2Jhc2U6Om1hcG1vZGUgCi1vcGVyYXRvcl49KG1hcHBlZF9maWxlX2Jhc2U6Om1hcG1vZGUmIGEsIG1hcHBlZF9maWxlX2Jhc2U6Om1hcG1vZGUgYik7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBtYXBwZWRfZmlsZV9wYXJhbXMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi1zdHJ1Y3QgbWFwcGVkX2ZpbGVfcGFyYW1zX2Jhc2UgewotICAgIG1hcHBlZF9maWxlX3BhcmFtc19iYXNlKCkKLSAgICAgICAgOiBmbGFncyhzdGF0aWNfY2FzdDxtYXBwZWRfZmlsZV9iYXNlOjptYXBtb2RlPigwKSksIAotICAgICAgICAgIG1vZGUoKSwgb2Zmc2V0KDApLCBsZW5ndGgoc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KC0xKSksIAotICAgICAgICAgIG5ld19maWxlX3NpemUoMCksIGhpbnQoMCkKLSAgICAgICAgeyB9Ci1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBtYXBwZWRfZmlsZV9pbXBsOwotICAgIHZvaWQgbm9ybWFsaXplKCk7Ci1wdWJsaWM6Ci0gICAgbWFwcGVkX2ZpbGVfYmFzZTo6bWFwbW9kZSAgIGZsYWdzOwotICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgICAgICAgICBtb2RlOyAgLy8gRGVwcmVjYXRlZAotICAgIHN0cmVhbV9vZmZzZXQgICAgICAgICAgICAgICBvZmZzZXQ7Ci0gICAgc3RkOjpzaXplX3QgICAgICAgICAgICAgICAgIGxlbmd0aDsKLSAgICBzdHJlYW1fb2Zmc2V0ICAgICAgICAgICAgICAgbmV3X2ZpbGVfc2l6ZTsKLSAgICBjb25zdCBjaGFyKiAgICAgICAgICAgICAgICAgaGludDsKLX07Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLS8vIFRoaXMgdGVtcGxhdGUgYWxsb3dzIEJvb3N0LkZpbGVzeXN0ZW0gcGF0aHMgdG8gYmUgc3BlY2lmaWVkIHdoZW4gY3JlYXRpbmcgb3IKLS8vIHJlb3BlbmluZyBhIG1lbW9yeSBtYXBwZWQgZmlsZSwgd2l0aG91dCBjcmVhdGluZyBhIGRlcGVuZGVuY2Ugb24KLS8vIEJvb3N0LkZpbGVzeXN0ZW0uIFBvc3NpYmxlIHZhbHVlcyBvZiBQYXRoIGluY2x1ZGUgc3RkOjpzdHJpbmcsCi0vLyBuZG5ib29zdDo6ZmlsZXN5c3RlbTo6cGF0aCwgbmRuYm9vc3Q6OmZpbGVzeXN0ZW06OndwYXRoLCAKLS8vIGFuZCBuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OnBhdGggKHVzZWQgdG8gc3RvcmUgZWl0aGVyIGEgc3RkOjpzdHJpbmcgb3IgYQotLy8gc3RkOjp3c3RyaW5nKS4KLXRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci1zdHJ1Y3QgYmFzaWNfbWFwcGVkX2ZpbGVfcGFyYW1zIAotICAgIDogZGV0YWlsOjptYXBwZWRfZmlsZV9wYXJhbXNfYmFzZSAKLXsKLSAgICB0eXBlZGVmIGRldGFpbDo6bWFwcGVkX2ZpbGVfcGFyYW1zX2Jhc2UgYmFzZV90eXBlOwotCi0gICAgLy8gRm9yIHdpZGUgcGF0aHMsIGluc3RhbnRpYXRlIGJhc2ljX21hcHBlZF9maWxlX3BhcmFtcyAKLSAgICAvLyB3aXRoIG5kbmJvb3N0OjpmaWxlc3lzdGVtOjp3cGF0aAotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fV0lERV9TVFJFQU1TCi0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoIWlzX3NhbWU8UGF0aCwgc3RkOjp3c3RyaW5nPjo6dmFsdWUpKTsKLSNlbmRpZgotCi0gICAgLy8gRGVmYXVsdCBjb25zdHJ1Y3RvcgotICAgIGJhc2ljX21hcHBlZF9maWxlX3BhcmFtcygpIHsgfQotCi0gICAgLy8gQ29uc3RydWN0aW9uIGZyb20gYSBQYXRoCi0gICAgZXhwbGljaXQgYmFzaWNfbWFwcGVkX2ZpbGVfcGFyYW1zKGNvbnN0IFBhdGgmIHApIDogcGF0aChwKSB7IH0KLQotICAgIC8vIENvbnN0cnVjdGlvbiBmcm9tIGEgcGF0aCBvZiBhIGRpZmZlcmVudCB0eXBlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUGF0aFQ+Ci0gICAgZXhwbGljaXQgYmFzaWNfbWFwcGVkX2ZpbGVfcGFyYW1zKGNvbnN0IFBhdGhUJiBwKSA6IHBhdGgocCkgeyB9Ci0KLSAgICAvLyBDb3B5IGNvbnN0cnVjdG9yCi0gICAgYmFzaWNfbWFwcGVkX2ZpbGVfcGFyYW1zKGNvbnN0IGJhc2ljX21hcHBlZF9maWxlX3BhcmFtcyYgb3RoZXIpCi0gICAgICAgIDogYmFzZV90eXBlKG90aGVyKSwgcGF0aChvdGhlci5wYXRoKQotICAgICAgICB7IH0KLQotICAgIC8vIFRlbXBsYXRlZCBjb3B5IGNvbnN0cnVjdG9yCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUGF0aFQ+Ci0gICAgYmFzaWNfbWFwcGVkX2ZpbGVfcGFyYW1zKGNvbnN0IGJhc2ljX21hcHBlZF9maWxlX3BhcmFtczxQYXRoVD4mIG90aGVyKQotICAgICAgICA6IGJhc2VfdHlwZShvdGhlciksIHBhdGgob3RoZXIucGF0aCkKLSAgICAgICAgeyB9Ci0KLSAgICB0eXBlZGVmIFBhdGggIHBhdGhfdHlwZTsKLSAgICBQYXRoICAgICAgICAgIHBhdGg7Ci19OwotCi10eXBlZGVmIGJhc2ljX21hcHBlZF9maWxlX3BhcmFtczxzdGQ6OnN0cmluZz4gbWFwcGVkX2ZpbGVfcGFyYW1zOwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgbWFwcGVkX2ZpbGVfc291cmNlLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi1jbGFzcyBORE5CT09TVF9JT1NUUkVBTVNfREVDTCBtYXBwZWRfZmlsZV9zb3VyY2UgOiBwdWJsaWMgbWFwcGVkX2ZpbGVfYmFzZSB7Ci1wcml2YXRlOgotICAgIHN0cnVjdCBzYWZlX2Jvb2xfaGVscGVyIHsgaW50IHg7IH07Ci0gICAgdHlwZWRlZiBpbnQgc2FmZV9ib29sX2hlbHBlcjo6KiAgICAgICAgICAgICAgICAgc2FmZV9ib29sOwotICAgIHR5cGVkZWYgZGV0YWlsOjptYXBwZWRfZmlsZV9pbXBsICAgICAgICAgICAgICAgIGltcGxfdHlwZTsKLSAgICB0eXBlZGVmIGJhc2ljX21hcHBlZF9maWxlX3BhcmFtczxkZXRhaWw6OnBhdGg+ICBwYXJhbV90eXBlOwotICAgIGZyaWVuZCBjbGFzcyBtYXBwZWRfZmlsZTsKLSAgICBmcmllbmQgY2xhc3MgZGV0YWlsOjptYXBwZWRfZmlsZV9pbXBsOwotICAgIGZyaWVuZCBzdHJ1Y3QgbmRuYm9vc3Q6Omlvc3RyZWFtczo6b3BlcmF0aW9uczxtYXBwZWRfZmlsZV9zb3VyY2U+OwotcHVibGljOgotICAgIHR5cGVkZWYgY2hhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJfdHlwZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkKLSAgICAgICAgOiBwdWJsaWMgc291cmNlX3RhZywKLSAgICAgICAgICBwdWJsaWMgZGlyZWN0X3RhZywKLSAgICAgICAgICBwdWJsaWMgY2xvc2FibGVfdGFnCi0gICAgICAgIHsgfTsKLSAgICB0eXBlZGVmIHN0ZDo6c2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3R5cGU7Ci0gICAgdHlwZWRlZiBjb25zdCBjaGFyKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3I7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHNpemVfdHlwZSwgbWF4X2xlbmd0aCA9IHN0YXRpY19jYXN0PHNpemVfdHlwZT4oLTEpKTsKLQotICAgIC8vIERlZmF1bHQgY29uc3RydWN0b3IKLSAgICBtYXBwZWRfZmlsZV9zb3VyY2UoKTsKLQotICAgIC8vIENvbnN0cnVjdG9yIHRha2luZyBhIHBhcmFtZXRlcnMgb2JqZWN0Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUGF0aD4KLSAgICBleHBsaWNpdCBtYXBwZWRfZmlsZV9zb3VyY2UoY29uc3QgYmFzaWNfbWFwcGVkX2ZpbGVfcGFyYW1zPFBhdGg+JiBwKTsKLQotICAgIC8vIENvbnN0cnVjdG9yIHRha2luZyBhIGxpc3Qgb2YgcGFyYW1ldGVycwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci0gICAgZXhwbGljaXQgbWFwcGVkX2ZpbGVfc291cmNlKCBjb25zdCBQYXRoJiBwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90eXBlIGxlbmd0aCA9IG1heF9sZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6aW50bWF4X3Qgb2Zmc2V0ID0gMCApOwotCi0gICAgLy8gQ29weSBDb25zdHJ1Y3RvcgotICAgIG1hcHBlZF9maWxlX3NvdXJjZShjb25zdCBtYXBwZWRfZmlsZV9zb3VyY2UmIG90aGVyKTsKLQotICAgIC8vLS0tLS0tLS0tLS0tLS1TdHJlYW0gaW50ZXJmYWNlLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci0gICAgdm9pZCBvcGVuKGNvbnN0IGJhc2ljX21hcHBlZF9maWxlX3BhcmFtczxQYXRoPiYgcCk7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotICAgIHZvaWQgb3BlbiggY29uc3QgUGF0aCYgcGF0aCwKLSAgICAgICAgICAgICAgIHNpemVfdHlwZSBsZW5ndGggPSBtYXhfbGVuZ3RoLAotICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmludG1heF90IG9mZnNldCA9IDAgKTsKLQotICAgIGJvb2wgaXNfb3BlbigpIGNvbnN0OwotICAgIHZvaWQgY2xvc2UoKTsKLSAgICBvcGVyYXRvciBzYWZlX2Jvb2woKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0OwotICAgIG1hcG1vZGUgZmxhZ3MoKSBjb25zdDsKLQotICAgIC8vLS0tLS0tLS0tLS0tLS1Db250YWluZXIgaW50ZXJmYWNlLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgIHNpemVfdHlwZSBzaXplKCkgY29uc3Q7Ci0gICAgY29uc3QgY2hhciogZGF0YSgpIGNvbnN0OwotICAgIGl0ZXJhdG9yIGJlZ2luKCkgY29uc3Q7Ci0gICAgaXRlcmF0b3IgZW5kKCkgY29uc3Q7Ci0KLSAgICAvLy0tLS0tLS0tLS0tLS0tUXVlcnkgYWRtaXNzaWJsZSBvZmZzZXRzLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICAvLyBSZXR1cm5zIHRoZSBhbGxvY2F0aW9uIGdyYW51bGFyaXR5IGZvciB2aXJ0dWFsIG1lbW9yeS4gVmFsdWVzIHBhc3NlZAotICAgIC8vIGFzIG9mZnNldHMgbXVzdCBiZSBtdWx0aXBsZXMgb2YgdGhpcyB2YWx1ZS4KLSAgICBzdGF0aWMgaW50IGFsaWdubWVudCgpOwotCi1wcml2YXRlOgotICAgIHZvaWQgaW5pdCgpOwotICAgIHZvaWQgb3Blbl9pbXBsKGNvbnN0IHBhcmFtX3R5cGUmIHApOwotCi0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8aW1wbF90eXBlPiBwaW1wbF87Ci19OwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgbWFwcGVkX2ZpbGUtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi1jbGFzcyBORE5CT09TVF9JT1NUUkVBTVNfREVDTCBtYXBwZWRfZmlsZSA6IHB1YmxpYyBtYXBwZWRfZmlsZV9iYXNlIHsKLXByaXZhdGU6Ci0gICAgdHlwZWRlZiBtYXBwZWRfZmlsZV9zb3VyY2UgICAgICAgICAgICAgICAgICAgICAgZGVsZWdhdGVfdHlwZTsKLSAgICB0eXBlZGVmIGRlbGVnYXRlX3R5cGU6OnNhZmVfYm9vbCAgICAgICAgICAgICAgICBzYWZlX2Jvb2w7Ci0gICAgdHlwZWRlZiBiYXNpY19tYXBwZWRfZmlsZV9wYXJhbXM8ZGV0YWlsOjpwYXRoPiAgcGFyYW1fdHlwZTsKLSAgICBmcmllbmQgc3RydWN0IG5kbmJvb3N0Ojppb3N0cmVhbXM6Om9wZXJhdGlvbnM8bWFwcGVkX2ZpbGUgPjsKLSAgICBmcmllbmQgY2xhc3MgbWFwcGVkX2ZpbGVfc2luazsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIGNoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyX3R5cGU7Ci0gICAgc3RydWN0IGNhdGVnb3J5Ci0gICAgICAgIDogcHVibGljIHNlZWthYmxlX2RldmljZV90YWcsCi0gICAgICAgICAgcHVibGljIGRpcmVjdF90YWcsCi0gICAgICAgICAgcHVibGljIGNsb3NhYmxlX3RhZwotICAgICAgICB7IH07Ci0gICAgdHlwZWRlZiBtYXBwZWRfZmlsZV9zb3VyY2U6OnNpemVfdHlwZSAgICAgICAgICAgc2l6ZV90eXBlOwotICAgIHR5cGVkZWYgY2hhciogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgY29uc3QgY2hhciogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X2l0ZXJhdG9yOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzaXplX3R5cGUsIG1heF9sZW5ndGggPSBkZWxlZ2F0ZV90eXBlOjptYXhfbGVuZ3RoKTsKLQotICAgIC8vIERlZmF1bHQgY29uc3RydWN0b3IKLSAgICBtYXBwZWRfZmlsZSgpIHsgfQotCi0gICAgLy8gQ29uc3RydXN0b3IgdGFraW5nIGEgcGFyYW1ldGVycyBvYmplY3QKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotICAgIGV4cGxpY2l0IG1hcHBlZF9maWxlKGNvbnN0IGJhc2ljX21hcHBlZF9maWxlX3BhcmFtczxQYXRoPiYgcCk7Ci0KLSAgICAvLyBDb25zdHJ1Y3RvciB0YWtpbmcgYSBsaXN0IG9mIHBhcmFtZXRlcnMKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotICAgIG1hcHBlZF9maWxlKCBjb25zdCBQYXRoJiBwYXRoLAotICAgICAgICAgICAgICAgICBtYXBtb2RlIGZsYWdzLAotICAgICAgICAgICAgICAgICBzaXplX3R5cGUgbGVuZ3RoID0gbWF4X2xlbmd0aCwKLSAgICAgICAgICAgICAgICAgc3RyZWFtX29mZnNldCBvZmZzZXQgPSAwICk7Ci0KLSAgICAvLyBDb25zdHJ1Y3RvciB0YWtpbmcgYSBsaXN0IG9mIHBhcmFtZXRlcnMsIGluY2x1ZGluZyBhIAotICAgIC8vIHN0ZDo6aW9zX2Jhc2U6Om9wZW5tb2RlIChkZXByZWNhdGVkKQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci0gICAgZXhwbGljaXQgbWFwcGVkX2ZpbGUoIGNvbnN0IFBhdGgmIHBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbW9kZSA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6OmluIHwgTkROQk9PU1RfSU9TOjpvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdHlwZSBsZW5ndGggPSBtYXhfbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fb2Zmc2V0IG9mZnNldCA9IDAgKTsKLQotICAgIC8vIENvcHkgQ29uc3RydWN0b3IKLSAgICBtYXBwZWRfZmlsZShjb25zdCBtYXBwZWRfZmlsZSYgb3RoZXIpOwotCi0gICAgLy8tLS0tLS0tLS0tLS0tLUNvbnZlcnNpb24gdG8gbWFwcGVkX2ZpbGVfc291cmNlIChkZXByZWNhdGVkKS0tLS0tLS0tLS0tLS0vLwotCi0gICAgb3BlcmF0b3IgbWFwcGVkX2ZpbGVfc291cmNlJigpIHsgcmV0dXJuIGRlbGVnYXRlXzsgfQotICAgIG9wZXJhdG9yIGNvbnN0IG1hcHBlZF9maWxlX3NvdXJjZSYoKSBjb25zdCB7IHJldHVybiBkZWxlZ2F0ZV87IH0KLQotICAgIC8vLS0tLS0tLS0tLS0tLS1TdHJlYW0gaW50ZXJmYWNlLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgIC8vIG9wZW4gb3ZlcmxvYWQgdGFraW5nIGEgcGFyYW1ldGVycyBvYmplY3QKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotICAgIHZvaWQgb3Blbihjb25zdCBiYXNpY19tYXBwZWRfZmlsZV9wYXJhbXM8UGF0aD4mIHApOwotCi0gICAgLy8gb3BlbiBvdmVybG9hZCB0YWtpbmcgYSBsaXN0IG9mIHBhcmFtZXRlcnMKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotICAgIHZvaWQgb3BlbiggY29uc3QgUGF0aCYgcGF0aCwKLSAgICAgICAgICAgICAgIG1hcG1vZGUgbW9kZSwKLSAgICAgICAgICAgICAgIHNpemVfdHlwZSBsZW5ndGggPSBtYXhfbGVuZ3RoLAotICAgICAgICAgICAgICAgc3RyZWFtX29mZnNldCBvZmZzZXQgPSAwICk7Ci0KLSAgICAvLyBvcGVuIG92ZXJsb2FkIHRha2luZyBhIGxpc3Qgb2YgcGFyYW1ldGVycywgaW5jbHVkaW5nIGEgCi0gICAgLy8gc3RkOjppb3NfYmFzZTo6b3Blbm1vZGUgKGRlcHJlY2F0ZWQpCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUGF0aD4KLSAgICB2b2lkIG9wZW4oIGNvbnN0IFBhdGgmIHBhdGgsCi0gICAgICAgICAgICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIG1vZGUgPQotICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6aW4gfCBORE5CT09TVF9JT1M6Om91dCwKLSAgICAgICAgICAgICAgIHNpemVfdHlwZSBsZW5ndGggPSBtYXhfbGVuZ3RoLAotICAgICAgICAgICAgICAgc3RyZWFtX29mZnNldCBvZmZzZXQgPSAwICk7Ci0KLSAgICBib29sIGlzX29wZW4oKSBjb25zdCB7IHJldHVybiBkZWxlZ2F0ZV8uaXNfb3BlbigpOyB9Ci0gICAgdm9pZCBjbG9zZSgpIHsgZGVsZWdhdGVfLmNsb3NlKCk7IH0KLSAgICBvcGVyYXRvciBzYWZlX2Jvb2woKSBjb25zdCB7IHJldHVybiBkZWxlZ2F0ZV87IH0KLSAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFkZWxlZ2F0ZV87IH0KLSAgICBtYXBtb2RlIGZsYWdzKCkgY29uc3QgeyByZXR1cm4gZGVsZWdhdGVfLmZsYWdzKCk7IH0KLQotICAgIC8vLS0tLS0tLS0tLS0tLS1Db250YWluZXIgaW50ZXJmYWNlLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgIHNpemVfdHlwZSBzaXplKCkgY29uc3QgeyByZXR1cm4gZGVsZWdhdGVfLnNpemUoKTsgfQotICAgIGNoYXIqIGRhdGEoKSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBjb25zdF9kYXRhKCkgY29uc3QgeyByZXR1cm4gZGVsZWdhdGVfLmRhdGEoKTsgfQotICAgIGl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gZGF0YSgpOyB9Ci0gICAgY29uc3RfaXRlcmF0b3IgY29uc3RfYmVnaW4oKSBjb25zdCB7IHJldHVybiBjb25zdF9kYXRhKCk7IH0KLSAgICBpdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBkYXRhKCkgKyBzaXplKCk7IH0KLSAgICBjb25zdF9pdGVyYXRvciBjb25zdF9lbmQoKSBjb25zdCB7IHJldHVybiBjb25zdF9kYXRhKCkgKyBzaXplKCk7IH0KLQotICAgIC8vLS0tLS0tLS0tLS0tLS1RdWVyeSBhZG1pc3NpYmxlIG9mZnNldHMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgIC8vIFJldHVybnMgdGhlIGFsbG9jYXRpb24gZ3JhbnVsYXJpdHkgZm9yIHZpcnR1YWwgbWVtb3J5LiBWYWx1ZXMgcGFzc2VkCi0gICAgLy8gYXMgb2Zmc2V0cyBtdXN0IGJlIG11bHRpcGxlcyBvZiB0aGlzIHZhbHVlLgotICAgIHN0YXRpYyBpbnQgYWxpZ25tZW50KCkgeyByZXR1cm4gbWFwcGVkX2ZpbGVfc291cmNlOjphbGlnbm1lbnQoKTsgfQotCi0gICAgLy8tLS0tLS0tLS0tLS0tLUZpbGUgYWNjZXNzLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICB2b2lkIHJlc2l6ZShzdHJlYW1fb2Zmc2V0IG5ld19zaXplKTsKLXByaXZhdGU6Ci0gICAgZGVsZWdhdGVfdHlwZSBkZWxlZ2F0ZV87Ci19OwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgbWFwcGVkX2ZpbGVfc2luay0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi1jbGFzcyBORE5CT09TVF9JT1NUUkVBTVNfREVDTCBtYXBwZWRfZmlsZV9zaW5rIDogcHJpdmF0ZSBtYXBwZWRfZmlsZSB7Ci1wdWJsaWM6Ci0gICAgZnJpZW5kIHN0cnVjdCBuZG5ib29zdDo6aW9zdHJlYW1zOjpvcGVyYXRpb25zPG1hcHBlZF9maWxlX3Npbms+OwotICAgIHVzaW5nIG1hcHBlZF9maWxlOjptYXBtb2RlOwotICAgIHVzaW5nIG1hcHBlZF9maWxlOjpyZWFkb25seTsKLSAgICB1c2luZyBtYXBwZWRfZmlsZTo6cmVhZHdyaXRlOwotICAgIHVzaW5nIG1hcHBlZF9maWxlOjpwcml2OwotICAgIHVzaW5nIG1hcHBlZF9maWxlOjpjaGFyX3R5cGU7Ci0gICAgc3RydWN0IGNhdGVnb3J5Ci0gICAgICAgIDogcHVibGljIHNpbmtfdGFnLAotICAgICAgICAgIHB1YmxpYyBkaXJlY3RfdGFnLAotICAgICAgICAgIHB1YmxpYyBjbG9zYWJsZV90YWcKLSAgICAgICAgeyB9OwotICAgIHVzaW5nIG1hcHBlZF9maWxlOjpzaXplX3R5cGU7Ci0gICAgdXNpbmcgbWFwcGVkX2ZpbGU6Oml0ZXJhdG9yOwotICAgIHVzaW5nIG1hcHBlZF9maWxlOjptYXhfbGVuZ3RoOwotICAgIHVzaW5nIG1hcHBlZF9maWxlOjppc19vcGVuOwotICAgIHVzaW5nIG1hcHBlZF9maWxlOjpjbG9zZTsKLSAgICB1c2luZyBtYXBwZWRfZmlsZTo6b3BlcmF0b3Igc2FmZV9ib29sOwotICAgIHVzaW5nIG1hcHBlZF9maWxlOjpvcGVyYXRvciAhOwotICAgIHVzaW5nIG1hcHBlZF9maWxlOjpmbGFnczsKLSAgICB1c2luZyBtYXBwZWRfZmlsZTo6c2l6ZTsKLSAgICB1c2luZyBtYXBwZWRfZmlsZTo6ZGF0YTsKLSAgICB1c2luZyBtYXBwZWRfZmlsZTo6YmVnaW47Ci0gICAgdXNpbmcgbWFwcGVkX2ZpbGU6OmVuZDsKLSAgICB1c2luZyBtYXBwZWRfZmlsZTo6YWxpZ25tZW50OwotICAgIHVzaW5nIG1hcHBlZF9maWxlOjpyZXNpemU7Ci0KLSAgICAvLyBEZWZhdWx0IGNvbnN0cnVjdG9yCi0gICAgbWFwcGVkX2ZpbGVfc2luaygpIHsgfQotCi0gICAgLy8gQ29uc3RydWN0b3IgdGFraW5nIGEgcGFyYW1ldGVycyBvYmplY3QKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotICAgIGV4cGxpY2l0IG1hcHBlZF9maWxlX3NpbmsoY29uc3QgYmFzaWNfbWFwcGVkX2ZpbGVfcGFyYW1zPFBhdGg+JiBwKTsKLQotICAgIC8vIENvbnN0cnVjdG9yIHRha2luZyBhIGxpc3Qgb2YgcGFyYW1ldGVycwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci0gICAgZXhwbGljaXQgbWFwcGVkX2ZpbGVfc2luayggY29uc3QgUGF0aCYgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3R5cGUgbGVuZ3RoID0gbWF4X2xlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6aW50bWF4X3Qgb2Zmc2V0ID0gMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBtb2RlIGZsYWdzID0gcmVhZHdyaXRlICk7Ci0KLSAgICAvLyBDb3B5IENvbnN0cnVjdG9yCi0gICAgbWFwcGVkX2ZpbGVfc2luayhjb25zdCBtYXBwZWRfZmlsZV9zaW5rJiBvdGhlcik7Ci0KLSAgICAvLyBvcGVuIG92ZXJsb2FkIHRha2luZyBhIHBhcmFtZXRlcnMgb2JqZWN0Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUGF0aD4KLSAgICB2b2lkIG9wZW4oY29uc3QgYmFzaWNfbWFwcGVkX2ZpbGVfcGFyYW1zPFBhdGg+JiBwKTsKLQotICAgIC8vIG9wZW4gb3ZlcmxvYWQgdGFraW5nIGEgbGlzdCBvZiBwYXJhbWV0ZXJzCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUGF0aD4KLSAgICB2b2lkIG9wZW4oIGNvbnN0IFBhdGgmIHBhdGgsCi0gICAgICAgICAgICAgICBzaXplX3R5cGUgbGVuZ3RoID0gbWF4X2xlbmd0aCwKLSAgICAgICAgICAgICAgIG5kbmJvb3N0OjppbnRtYXhfdCBvZmZzZXQgPSAwLAotICAgICAgICAgICAgICAgbWFwbW9kZSBmbGFncyA9IHJlYWR3cml0ZSApOwotfTsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiBtYXBwZWRfZmlsZV9zb3VyY2UtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgUGF0aD4KLW1hcHBlZF9maWxlX3NvdXJjZTo6bWFwcGVkX2ZpbGVfc291cmNlKGNvbnN0IGJhc2ljX21hcHBlZF9maWxlX3BhcmFtczxQYXRoPiYgcCkKLXsgaW5pdCgpOyBvcGVuKHApOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci1tYXBwZWRfZmlsZV9zb3VyY2U6Om1hcHBlZF9maWxlX3NvdXJjZSggCi0gICAgY29uc3QgUGF0aCYgcGF0aCwgc2l6ZV90eXBlIGxlbmd0aCwgbmRuYm9vc3Q6OmludG1heF90IG9mZnNldCkKLXsgaW5pdCgpOyBvcGVuKHBhdGgsIGxlbmd0aCwgb2Zmc2V0KTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotdm9pZCBtYXBwZWRfZmlsZV9zb3VyY2U6Om9wZW4oY29uc3QgYmFzaWNfbWFwcGVkX2ZpbGVfcGFyYW1zPFBhdGg+JiBwKQotewotICAgIHBhcmFtX3R5cGUgcGFyYW1zKHApOwotICAgIGlmIChwYXJhbXMuZmxhZ3MpIHsKLSAgICAgICAgaWYgKHBhcmFtcy5mbGFncyAhPSBtYXBwZWRfZmlsZTo6cmVhZG9ubHkpCi0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFKCJpbnZhbGlkIGZsYWdzIikpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChwYXJhbXMubW9kZSAmIE5ETkJPT1NUX0lPUzo6b3V0KQotICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihORE5CT09TVF9JT1NUUkVBTVNfRkFJTFVSRSgiaW52YWxpZCBtb2RlIikpOwotICAgICAgICBwYXJhbXMubW9kZSB8PSBORE5CT09TVF9JT1M6OmluOwotICAgIH0KLSAgICBvcGVuX2ltcGwocGFyYW1zKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgUGF0aD4KLXZvaWQgbWFwcGVkX2ZpbGVfc291cmNlOjpvcGVuKAotICAgIGNvbnN0IFBhdGgmIHBhdGgsIHNpemVfdHlwZSBsZW5ndGgsIG5kbmJvb3N0OjppbnRtYXhfdCBvZmZzZXQpCi17Ci0gICAgcGFyYW1fdHlwZSBwKHBhdGgpOwotICAgIHAubGVuZ3RoID0gbGVuZ3RoOwotICAgIHAub2Zmc2V0ID0gb2Zmc2V0OwotICAgIG9wZW4ocCk7Ci19Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tSW1wbGVtZW50YXRpb24gb2YgbWFwcGVkX2ZpbGUtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci1tYXBwZWRfZmlsZTo6bWFwcGVkX2ZpbGUoY29uc3QgYmFzaWNfbWFwcGVkX2ZpbGVfcGFyYW1zPFBhdGg+JiBwKQoteyBvcGVuKHApOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci1tYXBwZWRfZmlsZTo6bWFwcGVkX2ZpbGUoIAotICAgIGNvbnN0IFBhdGgmIHBhdGgsIG1hcG1vZGUgZmxhZ3MsIAotICAgIHNpemVfdHlwZSBsZW5ndGgsIHN0cmVhbV9vZmZzZXQgb2Zmc2V0ICkKLXsgb3BlbihwYXRoLCBmbGFncywgbGVuZ3RoLCBvZmZzZXQpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci1tYXBwZWRfZmlsZTo6bWFwcGVkX2ZpbGUoIAotICAgIGNvbnN0IFBhdGgmIHBhdGgsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbW9kZSwgCi0gICAgc2l6ZV90eXBlIGxlbmd0aCwgc3RyZWFtX29mZnNldCBvZmZzZXQgKQoteyBvcGVuKHBhdGgsIG1vZGUsIGxlbmd0aCwgb2Zmc2V0KTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotdm9pZCBtYXBwZWRfZmlsZTo6b3Blbihjb25zdCBiYXNpY19tYXBwZWRfZmlsZV9wYXJhbXM8UGF0aD4mIHApCi17IGRlbGVnYXRlXy5vcGVuX2ltcGwocCk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgUGF0aD4KLXZvaWQgbWFwcGVkX2ZpbGU6Om9wZW4oIAotICAgIGNvbnN0IFBhdGgmIHBhdGgsIG1hcG1vZGUgZmxhZ3MsIAotICAgIHNpemVfdHlwZSBsZW5ndGgsIHN0cmVhbV9vZmZzZXQgb2Zmc2V0ICkKLXsKLSAgICBwYXJhbV90eXBlIHAocGF0aCk7Ci0gICAgcC5mbGFncyA9IGZsYWdzOwotICAgIHAubGVuZ3RoID0gbGVuZ3RoOwotICAgIHAub2Zmc2V0ID0gb2Zmc2V0OwotICAgIG9wZW4ocCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci12b2lkIG1hcHBlZF9maWxlOjpvcGVuKCAKLSAgICBjb25zdCBQYXRoJiBwYXRoLCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIG1vZGUsIAotICAgIHNpemVfdHlwZSBsZW5ndGgsIHN0cmVhbV9vZmZzZXQgb2Zmc2V0ICkKLXsKLSAgICBwYXJhbV90eXBlIHAocGF0aCk7Ci0gICAgcC5tb2RlID0gbW9kZTsKLSAgICBwLmxlbmd0aCA9IGxlbmd0aDsKLSAgICBwLm9mZnNldCA9IG9mZnNldDsKLSAgICBvcGVuKHApOwotfQotCi1pbmxpbmUgY2hhciogbWFwcGVkX2ZpbGU6OmRhdGEoKSBjb25zdCAKLXsgcmV0dXJuIChmbGFncygpICE9IHJlYWRvbmx5KSA/IGNvbnN0X2Nhc3Q8Y2hhcio+KGRlbGVnYXRlXy5kYXRhKCkpIDogMDsgfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLUltcGxlbWVudGF0aW9uIG9mIG1hcHBlZF9maWxlX3NpbmstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotbWFwcGVkX2ZpbGVfc2luazo6bWFwcGVkX2ZpbGVfc2luayhjb25zdCBiYXNpY19tYXBwZWRfZmlsZV9wYXJhbXM8UGF0aD4mIHApCi17IG9wZW4ocCk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgUGF0aD4KLW1hcHBlZF9maWxlX3Npbms6Om1hcHBlZF9maWxlX3NpbmsoCi0gICAgY29uc3QgUGF0aCYgcGF0aCwgc2l6ZV90eXBlIGxlbmd0aCwKLSAgICBuZG5ib29zdDo6aW50bWF4X3Qgb2Zmc2V0LCBtYXBtb2RlIGZsYWdzICkKLXsgb3BlbihwYXRoLCBsZW5ndGgsIG9mZnNldCwgZmxhZ3MpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci12b2lkIG1hcHBlZF9maWxlX3Npbms6Om9wZW4oY29uc3QgYmFzaWNfbWFwcGVkX2ZpbGVfcGFyYW1zPFBhdGg+JiBwKQotewotICAgIHBhcmFtX3R5cGUgcGFyYW1zKHApOwotICAgIGlmIChwYXJhbXMuZmxhZ3MpIHsKLSAgICAgICAgaWYgKHBhcmFtcy5mbGFncyAmIG1hcHBlZF9maWxlOjpyZWFkb25seSkKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUoImludmFsaWQgZmxhZ3MiKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKHBhcmFtcy5tb2RlICYgTkROQk9PU1RfSU9TOjppbikKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUoImludmFsaWQgbW9kZSIpKTsKLSAgICAgICAgcGFyYW1zLm1vZGUgfD0gTkROQk9PU1RfSU9TOjpvdXQ7Ci0gICAgfQotICAgIG1hcHBlZF9maWxlOjpvcGVuKHBhcmFtcyk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci12b2lkIG1hcHBlZF9maWxlX3Npbms6Om9wZW4oCi0gICAgY29uc3QgUGF0aCYgcGF0aCwgc2l6ZV90eXBlIGxlbmd0aCwKLSAgICBuZG5ib29zdDo6aW50bWF4X3Qgb2Zmc2V0LCBtYXBtb2RlIGZsYWdzICkKLXsKLSAgICBwYXJhbV90eXBlIHAocGF0aCk7Ci0gICAgcC5mbGFncyA9IGZsYWdzOwotICAgIHAubGVuZ3RoID0gbGVuZ3RoOwotICAgIHAub2Zmc2V0ID0gb2Zmc2V0OwotICAgIG9wZW4ocCk7Ci19Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tU3BlY2lhbGl6YXRpb24gb2YgZGlyZWN0X2ltcGwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCBvcGVyYXRpb25zPG1hcHBlZF9maWxlX3NvdXJjZT4KLSAgICA6IG5kbmJvb3N0Ojppb3N0cmVhbXM6OmRldGFpbDo6Y2xvc2VfaW1wbDxjbG9zYWJsZV90YWc+Ci17Ci0gICAgc3RhdGljIHN0ZDo6cGFpcjxjaGFyKiwgY2hhcio+Ci0gICAgaW5wdXRfc2VxdWVuY2UobWFwcGVkX2ZpbGVfc291cmNlJiBzcmMpCi0gICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoIGNvbnN0X2Nhc3Q8Y2hhcio+KHNyYy5iZWdpbigpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF9jYXN0PGNoYXIqPihzcmMuZW5kKCkpICk7Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG9wZXJhdGlvbnM8bWFwcGVkX2ZpbGU+Ci0gICAgOiBuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OmNsb3NlX2ltcGw8Y2xvc2FibGVfdGFnPgotewotICAgIHN0YXRpYyBzdGQ6OnBhaXI8Y2hhciosIGNoYXIqPgotICAgIGlucHV0X3NlcXVlbmNlKG1hcHBlZF9maWxlJiBmaWxlKQotICAgIHsgCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihmaWxlLmJlZ2luKCksIGZpbGUuZW5kKCkpOyAKLSAgICB9Ci0gICAgc3RhdGljIHN0ZDo6cGFpcjxjaGFyKiwgY2hhcio+Ci0gICAgb3V0cHV0X3NlcXVlbmNlKG1hcHBlZF9maWxlJiBmaWxlKQotICAgIHsgCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihmaWxlLmJlZ2luKCksIGZpbGUuZW5kKCkpOyAKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgb3BlcmF0aW9uczxtYXBwZWRfZmlsZV9zaW5rPgotICAgIDogbmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpjbG9zZV9pbXBsPGNsb3NhYmxlX3RhZz4KLXsKLSAgICBzdGF0aWMgc3RkOjpwYWlyPGNoYXIqLCBjaGFyKj4KLSAgICBvdXRwdXRfc2VxdWVuY2UobWFwcGVkX2ZpbGVfc2luayYgc2luaykKLSAgICB7IAotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoc2luay5iZWdpbigpLCBzaW5rLmVuZCgpKTsgCi0gICAgfQotfTsKLSAgICAgICAgICAgICAgICAgICAgCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgbWFwbW9kZSBvcGVyYXRvcnMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi1pbmxpbmUgbWFwcGVkX2ZpbGU6Om1hcG1vZGUgCi1vcGVyYXRvcnwobWFwcGVkX2ZpbGU6Om1hcG1vZGUgYSwgbWFwcGVkX2ZpbGU6Om1hcG1vZGUgYikKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8bWFwcGVkX2ZpbGU6Om1hcG1vZGU+Ci0gICAgICAgIChzdGF0aWNfY2FzdDxpbnQ+KGEpIHwgc3RhdGljX2Nhc3Q8aW50PihiKSk7Ci19Ci0KLWlubGluZSBtYXBwZWRfZmlsZTo6bWFwbW9kZSAKLW9wZXJhdG9yJihtYXBwZWRfZmlsZTo6bWFwbW9kZSBhLCBtYXBwZWRfZmlsZTo6bWFwbW9kZSBiKQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxtYXBwZWRfZmlsZTo6bWFwbW9kZT4KLSAgICAgICAgKHN0YXRpY19jYXN0PGludD4oYSkgJiBzdGF0aWNfY2FzdDxpbnQ+KGIpKTsKLX0KLQotaW5saW5lIG1hcHBlZF9maWxlOjptYXBtb2RlIAotb3BlcmF0b3JeKG1hcHBlZF9maWxlOjptYXBtb2RlIGEsIG1hcHBlZF9maWxlOjptYXBtb2RlIGIpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PG1hcHBlZF9maWxlOjptYXBtb2RlPgotICAgICAgICAoc3RhdGljX2Nhc3Q8aW50PihhKSBeIHN0YXRpY19jYXN0PGludD4oYikpOwotfQotCi1pbmxpbmUgbWFwcGVkX2ZpbGU6Om1hcG1vZGUKLW9wZXJhdG9yfihtYXBwZWRfZmlsZTo6bWFwbW9kZSBhKQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxtYXBwZWRfZmlsZTo6bWFwbW9kZT4ofnN0YXRpY19jYXN0PGludD4oYSkpOwotfQotCi1pbmxpbmUgbWFwcGVkX2ZpbGU6Om1hcG1vZGUgCi1vcGVyYXRvcnw9KG1hcHBlZF9maWxlOjptYXBtb2RlJiBhLCBtYXBwZWRfZmlsZTo6bWFwbW9kZSBiKQotewotICAgIHJldHVybiBhID0gYSB8IGI7Ci19Ci0KLWlubGluZSBtYXBwZWRfZmlsZTo6bWFwbW9kZSAKLW9wZXJhdG9yJj0obWFwcGVkX2ZpbGU6Om1hcG1vZGUmIGEsIG1hcHBlZF9maWxlOjptYXBtb2RlIGIpCi17Ci0gICAgcmV0dXJuIGEgPSBhICYgYjsKLX0KLQotaW5saW5lIG1hcHBlZF9maWxlOjptYXBtb2RlIAotb3BlcmF0b3JePShtYXBwZWRfZmlsZTo6bWFwbW9kZSYgYSwgbWFwcGVkX2ZpbGU6Om1hcG1vZGUgYikKLXsKLSAgICByZXR1cm4gYSA9IGEgXiBiOwotfQotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9hYmlfc3VmZml4LmhwcD4gLy8gcG9wcyBhYmlfc3VmZml4LmhwcCBwcmFnbWFzCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19NQVBQRURfRklMRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldmljZS9udWxsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldmljZS9udWxsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjZhYmQ5Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXZpY2UvbnVsbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwNC0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gSW5zcGlyZWQgYnkgRGFyeWxlIFdhbGtlcidzIG51bGxidWYgZnJvbSBoaXMgTW9yZSBJL08gc3VibWlzc2lvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTlVMTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX05VTExfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NhdGVnb3JpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4gLy8gb3Blbm1vZGUsIHN0cmVhbXNpemUuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3Bvc2l0aW9uaW5nLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoLCB0eXBlbmFtZSBNb2RlPgotY2xhc3MgYmFzaWNfbnVsbF9kZXZpY2UgewotcHVibGljOgotICAgIHR5cGVkZWYgQ2ggY2hhcl90eXBlOwotICAgIHN0cnVjdCBjYXRlZ29yeQotICAgICAgICA6IHB1YmxpYyBNb2RlLAotICAgICAgICAgIHB1YmxpYyBkZXZpY2VfdGFnLAotICAgICAgICAgIHB1YmxpYyBjbG9zYWJsZV90YWcKLSAgICAgICAgeyB9OwotICAgIHN0ZDo6c3RyZWFtc2l6ZSByZWFkKENoKiwgc3RkOjpzdHJlYW1zaXplKSB7IHJldHVybiAwOyB9Ci0gICAgc3RkOjpzdHJlYW1zaXplIHdyaXRlKGNvbnN0IENoKiwgc3RkOjpzdHJlYW1zaXplIG4pIHsgcmV0dXJuIG47IH0KLSAgICBzdGQ6OnN0cmVhbXBvcyBzZWVrKCBzdHJlYW1fb2Zmc2V0LCBORE5CT09TVF9JT1M6OnNlZWtkaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSA9IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6OmluIHwgTkROQk9PU1RfSU9TOjpvdXQgKSAKLSAgICB7IHJldHVybiAtMTsgfQotICAgIHZvaWQgY2xvc2UoKSB7IH0KLSAgICB2b2lkIGNsb3NlKE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUpIHsgfQotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2g+Ci1zdHJ1Y3QgYmFzaWNfbnVsbF9zb3VyY2UgOiBwcml2YXRlIGJhc2ljX251bGxfZGV2aWNlPENoLCBpbnB1dD4gewotICAgIHR5cGVkZWYgQ2ggICAgICAgICAgY2hhcl90eXBlOwotICAgIHR5cGVkZWYgc291cmNlX3RhZyAgY2F0ZWdvcnk7Ci0gICAgdXNpbmcgYmFzaWNfbnVsbF9kZXZpY2U8Q2gsIGlucHV0Pjo6cmVhZDsKLSAgICB1c2luZyBiYXNpY19udWxsX2RldmljZTxDaCwgaW5wdXQ+OjpjbG9zZTsKLX07Ci0KLXR5cGVkZWYgYmFzaWNfbnVsbF9zb3VyY2U8Y2hhcj4gICAgIG51bGxfc291cmNlOwotdHlwZWRlZiBiYXNpY19udWxsX3NvdXJjZTx3Y2hhcl90PiAgd251bGxfc291cmNlOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaD4KLXN0cnVjdCBiYXNpY19udWxsX3NpbmsgOiBwcml2YXRlIGJhc2ljX251bGxfZGV2aWNlPENoLCBvdXRwdXQ+IHsKLSAgICB0eXBlZGVmIENoICAgICAgICBjaGFyX3R5cGU7Ci0gICAgdHlwZWRlZiBzaW5rX3RhZyAgY2F0ZWdvcnk7Ci0gICAgdXNpbmcgYmFzaWNfbnVsbF9kZXZpY2U8Q2gsIG91dHB1dD46OndyaXRlOwotICAgIHVzaW5nIGJhc2ljX251bGxfZGV2aWNlPENoLCBvdXRwdXQ+OjpjbG9zZTsKLX07Ci0KLXR5cGVkZWYgYmFzaWNfbnVsbF9zaW5rPGNoYXI+ICAgICBudWxsX3Npbms7Ci10eXBlZGVmIGJhc2ljX251bGxfc2luazx3Y2hhcl90PiAgd251bGxfc2luazsKLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19OVUxMX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL2FnZ3JlZ2F0ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9maWx0ZXIvYWdncmVnYXRlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2NiYTA1Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9maWx0ZXIvYWdncmVnYXRlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2OCArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfQUdHUkVHQVRFX0ZJTFRFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0FHR1JFR0FURV9GSUxURVJfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZiAgICAgICAgICAgICAgCi0KLSNpbmNsdWRlIDxhbGdvcml0aG0+ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb3B5LCBtaW4uCi0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxpdGVyYXRvcj4gICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiYWNrX2luc2VydGVyCi0jaW5jbHVkZSA8dmVjdG9yPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jb25zdGFudHMuaHBwPiAgICAgIC8vIGRlZmF1bHRfZGV2aWNlX2J1ZmZlcl9zaXplIAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jYXRlZ29yaWVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NoYXJfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvcy5ocHA+ICAgICAvLyBvcGVubW9kZSwgc3RyZWFtc2l6ZS4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvcGlwZWxpbmUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9yZWFkLmhwcD4gICAgICAgICAgIC8vIGNoZWNrX2VvZiAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvd3JpdGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+Ci0KLS8vIE11c3QgY29tZSBsYXN0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2Rpc2FibGVfd2FybmluZ3MuaHBwPiAgLy8gTVNWQy4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLS8vCi0vLyBUZW1wbGF0ZSBuYW1lOiBhZ2dyZWdhdGVfZmlsdGVyLgotLy8gVGVtcGxhdGUgcGFyYW1ldGVyczoKLS8vICAgICAgQ2ggLSBUaGUgY2hhcmFjdGVyIHR5cGUuCi0vLyAgICAgIEFsbG9jIC0gVGhlIGFsbG9jYXRvciB0eXBlLgotLy8gRGVzY3JpcHRpb246IFV0aWxpdHkgZm9yIGRlZmluaW5nIER1YWxVc2VGaWx0ZXJzIHdoaWNoIGZpbHRlciBhbgotLy8gICAgICBlbnRpcmUgc3RyZWFtIGF0IG9uY2UuIFRvIHVzZSwgb3ZlcnJpZGUgdGhlIHByb3RlY3RlZCB2aXJ0dWFsCi0vLyAgICAgIG1lbWJlciBkb19maWx0ZXIuCi0vLyBOb3RlOiBUaGlzIGZpbHRlciBzaG91bGQgbm90IGJlIGNvcGllZCB3aGlsZSBpdCBpcyBpbiB1c2UuCi0vLwotdGVtcGxhdGU8dHlwZW5hbWUgQ2gsIHR5cGVuYW1lIEFsbG9jID0gc3RkOjphbGxvY2F0b3I8Q2g+ID4KLWNsYXNzIGFnZ3JlZ2F0ZV9maWx0ZXIgIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIENoIGNoYXJfdHlwZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkKLSAgICAgICAgOiBkdWFsX3VzZSwKLSAgICAgICAgICBmaWx0ZXJfdGFnLAotICAgICAgICAgIG11bHRpY2hhcl90YWcsCi0gICAgICAgICAgY2xvc2FibGVfdGFnCi0gICAgICAgIHsgfTsKLSAgICBhZ2dyZWdhdGVfZmlsdGVyKCkgOiBwdHJfKDApLCBzdGF0ZV8oMCkgeyB9Ci0gICAgdmlydHVhbCB+YWdncmVnYXRlX2ZpbHRlcigpIHsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlPgotICAgIHN0ZDo6c3RyZWFtc2l6ZSByZWFkKFNvdXJjZSYgc3JjLCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsKLSAgICAgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKCEoc3RhdGVfICYgZl93cml0ZSkpOwotICAgICAgICBzdGF0ZV8gfD0gZl9yZWFkOwotICAgICAgICBpZiAoIShzdGF0ZV8gJiBmX2VvZikpCi0gICAgICAgICAgICBkb19yZWFkKHNyYyk7Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBhbXQgPQotICAgICAgICAgICAgKHN0ZDo6bWluKShuLCBzdGF0aWNfY2FzdDxzdGQ6OnN0cmVhbXNpemU+KGRhdGFfLnNpemUoKSAtIHB0cl8pKTsKLSAgICAgICAgaWYgKGFtdCkgewotICAgICAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0NIQVJfVFJBSVRTKGNoYXJfdHlwZSk6OmNvcHkocywgJmRhdGFfW3B0cl9dLCBhbXQpOwotICAgICAgICAgICAgcHRyXyArPSBhbXQ7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGRldGFpbDo6Y2hlY2tfZW9mKGFtdCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICBzdGQ6OnN0cmVhbXNpemUgd3JpdGUoU2luayYsIGNvbnN0IGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgewotICAgICAgICBORE5CT09TVF9BU1NFUlQoIShzdGF0ZV8gJiBmX3JlYWQpKTsKLSAgICAgICAgc3RhdGVfIHw9IGZfd3JpdGU7Ci0gICAgICAgIGRhdGFfLmluc2VydChkYXRhXy5lbmQoKSwgcywgcyArIG4pOwotICAgICAgICByZXR1cm4gbjsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgIHZvaWQgY2xvc2UoU2luayYgc2luaywgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLSAgICB7Ci0gICAgICAgIGlmICgoc3RhdGVfICYgZl9yZWFkKSAhPSAwICYmIHdoaWNoID09IE5ETkJPT1NUX0lPUzo6aW4pCi0gICAgICAgICAgICBjbG9zZV9pbXBsKCk7Ci0gICAgICAgIGlmICgoc3RhdGVfICYgZl93cml0ZSkgIT0gMCAmJiB3aGljaCA9PSBORE5CT09TVF9JT1M6Om91dCkgewotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICB2ZWN0b3JfdHlwZSBmaWx0ZXJlZDsKLSAgICAgICAgICAgICAgICBkb19maWx0ZXIoZGF0YV8sIGZpbHRlcmVkKTsKLSAgICAgICAgICAgICAgICBkb193cml0ZSggCi0gICAgICAgICAgICAgICAgICAgIHNpbmssICZmaWx0ZXJlZFswXSwKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPihmaWx0ZXJlZC5zaXplKCkpCi0gICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKC4uLikgewotICAgICAgICAgICAgICAgIGNsb3NlX2ltcGwoKTsKLSAgICAgICAgICAgICAgICB0aHJvdzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNsb3NlX2ltcGwoKTsKLSAgICAgICAgfQotICAgIH0KLQotcHJvdGVjdGVkOgotICAgIHR5cGVkZWYgc3RkOjp2ZWN0b3I8Q2gsIEFsbG9jPiAgICAgICAgICAgdmVjdG9yX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3JfdHlwZTo6c2l6ZV90eXBlICBzaXplX3R5cGU7Ci1wcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBkb19maWx0ZXIoY29uc3QgdmVjdG9yX3R5cGUmIHNyYywgdmVjdG9yX3R5cGUmIGRlc3QpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZG9fY2xvc2UoKSB7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZT4KLSAgICB2b2lkIGRvX3JlYWQoU291cmNlJiBzcmMpCi0gICAgewotICAgICAgICB1c2luZyBzdGQ6OnN0cmVhbXNpemU7Ci0gICAgICAgIHZlY3Rvcl90eXBlIGRhdGE7Ci0gICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmVhbXNpemUgIHNpemUgPSBkZWZhdWx0X2RldmljZV9idWZmZXJfc2l6ZTsKLSAgICAgICAgICAgIENoICAgICAgICAgICAgICAgICAgICAgYnVmW3NpemVdOwotICAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplICAgICAgICBhbXQ7Ci0gICAgICAgICAgICBpZiAoKGFtdCA9IG5kbmJvb3N0Ojppb3N0cmVhbXM6OnJlYWQoc3JjLCBidWYsIHNpemUpKSA9PSAtMSkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRhdGEuaW5zZXJ0KGRhdGEuZW5kKCksIGJ1ZiwgYnVmICsgYW10KTsKLSAgICAgICAgfQotICAgICAgICBkb19maWx0ZXIoZGF0YSwgZGF0YV8pOwotICAgICAgICBzdGF0ZV8gfD0gZl9lb2Y7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICB2b2lkIGRvX3dyaXRlKFNpbmsmIHNpbmssIGNvbnN0IGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pIAotICAgIHsgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaW9zdHJlYW1zOjpjYXRlZ29yeV9vZjxTaW5rPjo6dHlwZSAgY2F0ZWdvcnk7Ci0gICAgICAgIHR5cGVkZWYgaXNfY29udmVydGlibGU8Y2F0ZWdvcnksIG91dHB1dD4gICAgICAgICAgICAgY2FuX3dyaXRlOwotICAgICAgICBkb193cml0ZShzaW5rLCBzLCBuLCBjYW5fd3JpdGUoKSk7IAotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpbms+Ci0gICAgdm9pZCBkb193cml0ZShTaW5rJiBzaW5rLCBjb25zdCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuLCBtcGw6OnRydWVfKSAKLSAgICB7IGlvc3RyZWFtczo6d3JpdGUoc2luaywgcywgbik7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpbms+Ci0gICAgdm9pZCBkb193cml0ZShTaW5rJiwgY29uc3QgY2hhcl90eXBlKiwgc3RkOjpzdHJlYW1zaXplLCBtcGw6OmZhbHNlXykgeyB9Ci0KLSAgICB2b2lkIGNsb3NlX2ltcGwoKQotICAgIHsKLSAgICAgICAgZGF0YV8uY2xlYXIoKTsKLSAgICAgICAgcHRyXyA9IDA7Ci0gICAgICAgIHN0YXRlXyA9IDA7Ci0gICAgICAgIGRvX2Nsb3NlKCk7Ci0gICAgfQotCi0gICAgZW51bSBmbGFnX3R5cGUgewotICAgICAgICBmX3JlYWQgICA9IDEsCi0gICAgICAgIGZfd3JpdGUgID0gZl9yZWFkIDw8IDEsCi0gICAgICAgIGZfZW9mICAgID0gZl93cml0ZSA8PCAxCi0gICAgfTsKLQotICAgIC8vIE5vdGU6IHR5cGljYWxseSB3aWxsIG5vdCBiZSBjb3BpZWQgd2hpbGUgdmVjdG9yIGNvbnRhaW5zIGRhdGEuCi0gICAgdmVjdG9yX3R5cGUgIGRhdGFfOwotICAgIHNpemVfdHlwZSAgICBwdHJfOwotICAgIGludCAgICAgICAgICBzdGF0ZV87Ci19OwotTkROQk9PU1RfSU9TVFJFQU1TX1BJUEFCTEUoYWdncmVnYXRlX2ZpbHRlciwgMSkKLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9lbmFibGVfd2FybmluZ3MuaHBwPiAgLy8gTVNWQy4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0FHR1JFR0FURV9GSUxURVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9maWx0ZXIvYnppcDIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL2J6aXAyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjI2YzRkMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9maWx0ZXIvYnppcDIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDE0ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBOb3RlOiBjdXN0b20gYWxsb2NhdG9ycyBhcmUgbm90IHN1cHBvcnRlZCBvbiBWQzYsIHNpbmNlIHRoYXQgY29tcGlsZXIKLS8vIGhhZCB0cm91YmxlIGZpbmRpbmcgdGhlIGZ1bmN0aW9uIHpsaWJfYmFzZTo6ZG9faW5pdC4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfQlpJUDJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19CWklQMl9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgCi0jaW5jbHVkZSA8Y2Fzc2VydD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0jaW5jbHVkZSA8bWVtb3J5PiAgICAgICAgICAgIC8vIGFsbG9jYXRvci4KLSNpbmNsdWRlIDxuZXc+ICAgICAgICAgICAgICAgLy8gYmFkX2FsbG9jLgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAvLyBNU1ZDLCBTVEFUSUNfQ09OU1RBTlQsIERFRFVDRURfVFlQRU5BTUUsIERJTktVTS4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NvbnN0YW50cy5ocHA+ICAgLy8gYnVmZmVyIHNpemUuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvYXV0b19saW5rLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9iemlwMi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZHluX2xpbmsuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3dpZGVfc3RyZWFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3MuaHBwPiAgLy8gZmFpbHVyZSwgc3RyZWFtc2l6ZS4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL3N5bW1ldHJpYy5ocHA+ICAgICAgICAgICAgICAgCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3BpcGVsaW5lLmhwcD4gICAgICAgCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+ICAgICAKLQotLy8gTXVzdCBjb21lIGxhc3QuCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyBwcmFnbWEgd2FybmluZyhwdXNoKQotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQyNTEgNDIzMSA0NjYwKQotI2VuZGlmCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL2FiaV9wcmVmaXguaHBwPiAgICAgICAgICAgCi0KLS8vIFRlbXBvcmFyeSBmaXguCi0jdW5kZWYgc21hbGwKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLW5hbWVzcGFjZSBiemlwMiB7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gVHlwZWRlZnMuCi0KLXR5cGVkZWYgdm9pZCogKCphbGxvY19mdW5jKSh2b2lkKiwgaW50LCBpbnQpOwotdHlwZWRlZiB2b2lkICgqZnJlZV9mdW5jKSh2b2lkKiwgdm9pZCopOwotCi0gICAgICAgICAgICAgICAgICAgIC8vIFN0YXR1cyBjb2RlcwotCi1ORE5CT09TVF9JT1NUUkVBTVNfREVDTCBleHRlcm4gY29uc3QgaW50IG9rOwotTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZXh0ZXJuIGNvbnN0IGludCBydW5fb2s7Ci1ORE5CT09TVF9JT1NUUkVBTVNfREVDTCBleHRlcm4gY29uc3QgaW50IGZsdXNoX29rOwotTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZXh0ZXJuIGNvbnN0IGludCBmaW5pc2hfb2s7Ci1ORE5CT09TVF9JT1NUUkVBTVNfREVDTCBleHRlcm4gY29uc3QgaW50IHN0cmVhbV9lbmQ7ICAgIAotTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZXh0ZXJuIGNvbnN0IGludCBzZXF1ZW5jZV9lcnJvcjsKLU5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGV4dGVybiBjb25zdCBpbnQgcGFyYW1fZXJyb3I7Ci1ORE5CT09TVF9JT1NUUkVBTVNfREVDTCBleHRlcm4gY29uc3QgaW50IG1lbV9lcnJvcjsKLU5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGV4dGVybiBjb25zdCBpbnQgZGF0YV9lcnJvcjsKLU5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGV4dGVybiBjb25zdCBpbnQgZGF0YV9lcnJvcl9tYWdpYzsKLU5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGV4dGVybiBjb25zdCBpbnQgaW9fZXJyb3I7Ci1ORE5CT09TVF9JT1NUUkVBTVNfREVDTCBleHRlcm4gY29uc3QgaW50IHVuZXhwZWN0ZWRfZW9mOwotTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZXh0ZXJuIGNvbnN0IGludCBvdXRidWZmX2Z1bGw7Ci1ORE5CT09TVF9JT1NUUkVBTVNfREVDTCBleHRlcm4gY29uc3QgaW50IGNvbmZpZ19lcnJvcjsKLQotICAgICAgICAgICAgICAgICAgICAvLyBBY3Rpb24gY29kZXMKLQotTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZXh0ZXJuIGNvbnN0IGludCBmaW5pc2g7Ci1ORE5CT09TVF9JT1NUUkVBTVNfREVDTCBleHRlcm4gY29uc3QgaW50IHJ1bjsKLQotICAgICAgICAgICAgICAgICAgICAvLyBEZWZhdWx0IHZhbHVlcwotCi1jb25zdCBpbnQgZGVmYXVsdF9ibG9ja19zaXplICAgPSA5OwotY29uc3QgaW50IGRlZmF1bHRfd29ya19mYWN0b3IgID0gMzA7Ci1jb25zdCBib29sIGRlZmF1bHRfc21hbGwgICAgICAgPSBmYWxzZTsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGJ6aXAyLiAKLQotLy8KLS8vIENsYXNzIG5hbWU6IGJ6aXAyX3BhcmFtcy4KLS8vIERlc2NyaXB0aW9uOiBFbmNhcHN1bGF0ZXMgdGhlIHBhcmFtZXRlcnMgcGFzc2VkIHRvIGRlZmxhdGVJbml0MgotLy8gICAgICB0byBjdXN0b21pemUgY29tcHJlc3Npb24uCi0vLwotc3RydWN0IGJ6aXAyX3BhcmFtcyB7Ci0KLSAgICAvLyBOb24tZXhwbGljaXQgY29uc3RydWN0b3IgZm9yIGNvbXByZXNzaW9uLgotICAgIGJ6aXAyX3BhcmFtcyggaW50IGJsb2NrX3NpemUgICA9IGJ6aXAyOjpkZWZhdWx0X2Jsb2NrX3NpemUsCi0gICAgICAgICAgICAgICAgICBpbnQgd29ya19mYWN0b3IgID0gYnppcDI6OmRlZmF1bHRfd29ya19mYWN0b3IgKQotICAgICAgICA6IGJsb2NrX3NpemUoYmxvY2tfc2l6ZSksIHdvcmtfZmFjdG9yKHdvcmtfZmFjdG9yKQotICAgICAgICB7IH0KLQotICAgIC8vIENvbnN0cnVjdG9yIGZvciBkZWNvbXByZXNzaW9uLgotICAgIGJ6aXAyX3BhcmFtcyhib29sIHNtYWxsKQotICAgICAgICA6IHNtYWxsKHNtYWxsKSwgd29ya19mYWN0b3IoMCkKLSAgICAgICAgeyB9Ci0KLSAgICB1bmlvbiB7Ci0gICAgICAgIGludCAgIGJsb2NrX3NpemU7ICAgIC8vIEZvciBjb21wcmVzc2lvbi4KLSAgICAgICAgYm9vbCAgc21hbGw7ICAgICAgICAgLy8gRm9yIGRlY29tcHJlc3Npb24uCi0gICAgfTsKLSAgICBpbnQgICAgICAgd29ya19mYWN0b3I7Ci19OwotCi0vLwotLy8gQ2xhc3MgbmFtZTogYnppcDJfZXJyb3IuCi0vLyBEZXNjcmlwdGlvbjogU3ViY2xhc3Mgb2Ygc3RkOjppb3NfYmFzZTo6ZmFpbHVyZSB0aHJvd24gdG8gaW5kaWNhdGUKLS8vICAgICBiemlwMiBlcnJvcnMgb3RoZXIgdGhhbiBvdXQtb2YtbWVtb3J5IGNvbmRpdGlvbnMuCi0vLwotY2xhc3MgTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgYnppcDJfZXJyb3IgOiBwdWJsaWMgTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUgewotcHVibGljOgotICAgIGV4cGxpY2l0IGJ6aXAyX2Vycm9yKGludCBlcnJvcik7Ci0gICAgaW50IGVycm9yKCkgY29uc3QgeyByZXR1cm4gZXJyb3JfOyB9Ci0gICAgc3RhdGljIHZvaWQgY2hlY2sgTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04oaW50IGVycm9yKTsKLXByaXZhdGU6Ci0gICAgaW50IGVycm9yXzsKLX07Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4KLXN0cnVjdCBiemlwMl9hbGxvY2F0b3JfdHJhaXRzIHsKLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0FMTE9DQVRPUgotICAgIHR5cGVkZWYgdHlwZW5hbWUgQWxsb2M6OnRlbXBsYXRlIHJlYmluZDxjaGFyPjo6b3RoZXIgdHlwZTsKLSNlbHNlCi0gICAgdHlwZWRlZiBzdGQ6OmFsbG9jYXRvcjxjaGFyPiB0eXBlOwotI2VuZGlmCi19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgQWxsb2MsCi0gICAgICAgICAgdHlwZW5hbWUgQmFzZSA9IC8vIFZDNiB3b3JrYXJvdW5kIChDMjUxNikKLSAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBiemlwMl9hbGxvY2F0b3JfdHJhaXRzPEFsbG9jPjo6dHlwZSA+Ci1zdHJ1Y3QgYnppcDJfYWxsb2NhdG9yIDogcHJpdmF0ZSBCYXNlIHsKLXByaXZhdGU6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBCYXNlOjpzaXplX3R5cGUgc2l6ZV90eXBlOwotcHVibGljOgotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBjdXN0b20gPSAKLSAgICAgICAgKCFpc19zYW1lPHN0ZDo6YWxsb2NhdG9yPGNoYXI+LCBCYXNlPjo6dmFsdWUpKTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJ6aXAyX2FsbG9jYXRvcl90cmFpdHM8QWxsb2M+Ojp0eXBlIGFsbG9jYXRvcl90eXBlOwotICAgIHN0YXRpYyB2b2lkKiBhbGxvY2F0ZSh2b2lkKiBzZWxmLCBpbnQgaXRlbXMsIGludCBzaXplKTsKLSAgICBzdGF0aWMgdm9pZCBkZWFsbG9jYXRlKHZvaWQqIHNlbGYsIHZvaWQqIGFkZHJlc3MpOwotfTsKLQotY2xhc3MgTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgYnppcDJfYmFzZSAgeyAKLXB1YmxpYzoKLSAgICB0eXBlZGVmIGNoYXIgY2hhcl90eXBlOwotcHJvdGVjdGVkOgotICAgIGJ6aXAyX2Jhc2UoY29uc3QgYnppcDJfcGFyYW1zJiBwYXJhbXMpOwotICAgIH5iemlwMl9iYXNlKCk7Ci0gICAgYnppcDJfcGFyYW1zJiBwYXJhbXMoKSB7IHJldHVybiBwYXJhbXNfOyB9Ci0gICAgYm9vbCYgcmVhZHkoKSB7IHJldHVybiByZWFkeV87IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4gCi0gICAgdm9pZCBpbml0KCBib29sIGNvbXByZXNzLAotICAgICAgICAgICAgICAgYnppcDJfYWxsb2NhdG9yPEFsbG9jPiYgYWxsb2MgKQotICAgICAgICB7Ci0gICAgICAgICAgICBib29sIGN1c3RvbSA9IGJ6aXAyX2FsbG9jYXRvcjxBbGxvYz46OmN1c3RvbTsKLSAgICAgICAgICAgIGRvX2luaXQoIGNvbXByZXNzLAotICAgICAgICAgICAgICAgICAgICAgI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b20gPyBiemlwMl9hbGxvY2F0b3I8QWxsb2M+OjphbGxvY2F0ZSA6IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tID8gYnppcDJfYWxsb2NhdG9yPEFsbG9jPjo6ZGVhbGxvY2F0ZSA6IDAsCi0gICAgICAgICAgICAgICAgICAgICAjZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgIGN1c3RvbSA/ICZhbGxvYyA6IDAgKTsKLSAgICAgICAgfQotICAgIHZvaWQgYmVmb3JlKCBjb25zdCBjaGFyKiYgc3JjX2JlZ2luLCBjb25zdCBjaGFyKiBzcmNfZW5kLAotICAgICAgICAgICAgICAgICBjaGFyKiYgZGVzdF9iZWdpbiwgY2hhciogZGVzdF9lbmQgKTsKLSAgICB2b2lkIGFmdGVyKGNvbnN0IGNoYXIqJiBzcmNfYmVnaW4sIGNoYXIqJiBkZXN0X2JlZ2luKTsKLSAgICBpbnQgY2hlY2tfZW5kKGNvbnN0IGNoYXIqIHNyY19iZWdpbiwgY29uc3QgY2hhciogZGVzdF9iZWdpbik7Ci0gICAgaW50IGNvbXByZXNzKGludCBhY3Rpb24pOwotICAgIGludCBkZWNvbXByZXNzKCk7Ci0gICAgdm9pZCBlbmQoYm9vbCBjb21wcmVzcyk7Ci1wcml2YXRlOgotICAgIHZvaWQgZG9faW5pdCggYm9vbCBjb21wcmVzcywgCi0gICAgICAgICAgICAgICAgICAjaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotICAgICAgICAgICAgICAgICAgICAgIGJ6aXAyOjphbGxvY19mdW5jLCAKLSAgICAgICAgICAgICAgICAgICAgICBiemlwMjo6ZnJlZV9mdW5jLCAKLSAgICAgICAgICAgICAgICAgICNlbmRpZgotICAgICAgICAgICAgICAgICAgdm9pZCogZGVyaXZlZCApOwotICAgIGJ6aXAyX3BhcmFtcyAgcGFyYW1zXzsKLSAgICB2b2lkKiAgICAgICAgIHN0cmVhbV87IC8vIEFjdHVhbCB0eXBlOiBiel9zdHJlYW0qLgotICAgIGJvb2wgICAgICAgICAgcmVhZHlfOwotfTsKLQotLy8KLS8vIFRlbXBsYXRlIG5hbWU6IGJ6aXAyX2NvbXByZXNzb3JfaW1wbAotLy8gRGVzY3JpcHRpb246IE1vZGVsIG9mIFN5bW1ldHJpY0ZpbHRlciBpbXBsZW1lbnRpbmcgY29tcHJlc3Npb24gYnkKLS8vICAgICAgZGVsZWdhdGluZyB0byB0aGUgbGliYnppcDIgZnVuY3Rpb24gQlpfYnpDb21wcmVzcy4KLS8vCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4KLWNsYXNzIGJ6aXAyX2NvbXByZXNzb3JfaW1wbCAKLSAgICA6IHB1YmxpYyBiemlwMl9iYXNlLCAKLSAgICAgICNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPCAweDYwMCkKLSAgICAgICAgICBwdWJsaWMKLSAgICAgICNlbmRpZgotICAgICAgYnppcDJfYWxsb2NhdG9yPEFsbG9jPiAKLXsKLXB1YmxpYzogCi0gICAgYnppcDJfY29tcHJlc3Nvcl9pbXBsKGNvbnN0IGJ6aXAyX3BhcmFtcyYpOwotICAgIGJvb2wgZmlsdGVyKCBjb25zdCBjaGFyKiYgc3JjX2JlZ2luLCBjb25zdCBjaGFyKiBzcmNfZW5kLAotICAgICAgICAgICAgICAgICBjaGFyKiYgZGVzdF9iZWdpbiwgY2hhciogZGVzdF9lbmQsIGJvb2wgZmx1c2ggKTsKLSAgICB2b2lkIGNsb3NlKCk7Ci1wcml2YXRlOgotICAgIHZvaWQgaW5pdCgpOwotICAgIGJvb2wgZW9mXzsgLy8gR3VhcmQgdG8gbWFrZSBzdXJlIGZpbHRlcigpIGlzbid0IGNhbGxlZCBhZnRlciBpdCByZXR1cm5zIGZhbHNlLgotfTsKLQotLy8KLS8vIFRlbXBsYXRlIG5hbWU6IGJ6aXAyX2NvbXByZXNzb3IKLS8vIERlc2NyaXB0aW9uOiBNb2RlbCBvZiBTeW1tZXRyaWNGaWx0ZXIgaW1wbGVtZW50aW5nIGRlY29tcHJlc3Npb24gYnkKLS8vICAgICAgZGVsZWdhdGluZyB0byB0aGUgbGliYnppcDIgZnVuY3Rpb24gQlpfYnpEZWNvbXByZXNzLgotLy8KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jID0gc3RkOjphbGxvY2F0b3I8Y2hhcj4gPgotY2xhc3MgYnppcDJfZGVjb21wcmVzc29yX2ltcGwgCi0gICAgOiBwdWJsaWMgYnppcDJfYmFzZSwgCi0gICAgICAjaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg2MDApCi0gICAgICAgICAgcHVibGljCi0gICAgICAjZW5kaWYKLSAgICAgIGJ6aXAyX2FsbG9jYXRvcjxBbGxvYz4gCi17IAotcHVibGljOgotICAgIGJ6aXAyX2RlY29tcHJlc3Nvcl9pbXBsKGJvb2wgc21hbGwgPSBiemlwMjo6ZGVmYXVsdF9zbWFsbCk7Ci0gICAgYm9vbCBmaWx0ZXIoIGNvbnN0IGNoYXIqJiBiZWdpbl9pbiwgY29uc3QgY2hhciogZW5kX2luLAotICAgICAgICAgICAgICAgICBjaGFyKiYgYmVnaW5fb3V0LCBjaGFyKiBlbmRfb3V0LCBib29sIGZsdXNoICk7Ci0gICAgdm9pZCBjbG9zZSgpOwotcHJpdmF0ZToKLSAgICB2b2lkIGluaXQoKTsKLSAgICBib29sIGVvZl87IC8vIEd1YXJkIHRvIG1ha2Ugc3VyZSBmaWx0ZXIoKSBpc24ndCBjYWxsZWQgYWZ0ZXIgaXQgcmV0dXJucyBmYWxzZS4KLX07Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLS8vCi0vLyBUZW1wbGF0ZSBuYW1lOiBiemlwMl9jb21wcmVzc29yCi0vLyBEZXNjcmlwdGlvbjogTW9kZWwgb2YgSW5wdXRGaWx0ZXIgYW5kIE91dHB1dEZpbHRlciBpbXBsZW1lbnRpbmcKLS8vICAgICAgY29tcHJlc3Npb24gdXNpbmcgbGliYnppcDIuCi0vLwotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2MgPSBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+Ci1zdHJ1Y3QgYmFzaWNfYnppcDJfY29tcHJlc3NvciAKLSAgICA6IHN5bW1ldHJpY19maWx0ZXI8ZGV0YWlsOjpiemlwMl9jb21wcmVzc29yX2ltcGw8QWxsb2M+LCBBbGxvYz4gCi17Ci1wcml2YXRlOgotICAgIHR5cGVkZWYgZGV0YWlsOjpiemlwMl9jb21wcmVzc29yX2ltcGw8QWxsb2M+ICAgICAgICBpbXBsX3R5cGU7Ci0gICAgdHlwZWRlZiBzeW1tZXRyaWNfZmlsdGVyPGltcGxfdHlwZSwgQWxsb2M+ICBiYXNlX3R5cGU7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX3R5cGU6OmNoYXJfdHlwZSAgICAgICAgICAgICAgIGNoYXJfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfdHlwZTo6Y2F0ZWdvcnkgICAgICAgICAgICAgICAgY2F0ZWdvcnk7Ci0gICAgYmFzaWNfYnppcDJfY29tcHJlc3NvciggY29uc3QgYnppcDJfcGFyYW1zJiA9IGJ6aXAyOjpkZWZhdWx0X2Jsb2NrX3NpemUsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBidWZmZXJfc2l6ZSA9ICBkZWZhdWx0X2RldmljZV9idWZmZXJfc2l6ZSApOwotfTsKLU5ETkJPT1NUX0lPU1RSRUFNU19QSVBBQkxFKGJhc2ljX2J6aXAyX2NvbXByZXNzb3IsIDEpCi0KLXR5cGVkZWYgYmFzaWNfYnppcDJfY29tcHJlc3Nvcjw+IGJ6aXAyX2NvbXByZXNzb3I7Ci0KLS8vCi0vLyBUZW1wbGF0ZSBuYW1lOiBiemlwMl9kZWNvbXByZXNzb3IKLS8vIERlc2NyaXB0aW9uOiBNb2RlbCBvZiBJbnB1dEZpbHRlciBhbmQgT3V0cHV0RmlsdGVyIGltcGxlbWVudGluZwotLy8gICAgICBkZWNvbXByZXNzaW9uIHVzaW5nIGxpYmJ6aXAyLgotLy8KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jID0gc3RkOjphbGxvY2F0b3I8Y2hhcj4gPgotc3RydWN0IGJhc2ljX2J6aXAyX2RlY29tcHJlc3NvciAKLSAgICA6IHN5bW1ldHJpY19maWx0ZXI8ZGV0YWlsOjpiemlwMl9kZWNvbXByZXNzb3JfaW1wbDxBbGxvYz4sIEFsbG9jPiAKLXsKLXByaXZhdGU6Ci0gICAgdHlwZWRlZiBkZXRhaWw6OmJ6aXAyX2RlY29tcHJlc3Nvcl9pbXBsPEFsbG9jPiAgICAgIGltcGxfdHlwZTsKLSAgICB0eXBlZGVmIHN5bW1ldHJpY19maWx0ZXI8aW1wbF90eXBlLCBBbGxvYz4gIGJhc2VfdHlwZTsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfdHlwZTo6Y2hhcl90eXBlICAgICAgICAgICAgICAgY2hhcl90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV90eXBlOjpjYXRlZ29yeSAgICAgICAgICAgICAgICBjYXRlZ29yeTsKLSAgICBiYXNpY19iemlwMl9kZWNvbXByZXNzb3IoIGJvb2wgc21hbGwgPSBiemlwMjo6ZGVmYXVsdF9zbWFsbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBidWZmZXJfc2l6ZSA9IGRlZmF1bHRfZGV2aWNlX2J1ZmZlcl9zaXplICk7Ci19OwotTkROQk9PU1RfSU9TVFJFQU1TX1BJUEFCTEUoYmFzaWNfYnppcDJfZGVjb21wcmVzc29yLCAxKQotCi10eXBlZGVmIGJhc2ljX2J6aXAyX2RlY29tcHJlc3Nvcjw+IGJ6aXAyX2RlY29tcHJlc3NvcjsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiBiemlwMl9hbGxvY2F0b3ItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBCYXNlPgotdm9pZCogYnppcDJfYWxsb2NhdG9yPEFsbG9jLCBCYXNlPjo6YWxsb2NhdGUodm9pZCogc2VsZiwgaW50IGl0ZW1zLCBpbnQgc2l6ZSkKLXsgCi0gICAgc2l6ZV90eXBlIGxlbiA9IGl0ZW1zICogc2l6ZTsKLSAgICBjaGFyKiBwdHIgPSAKLSAgICAgICAgc3RhdGljX2Nhc3Q8YWxsb2NhdG9yX3R5cGUqPihzZWxmKS0+YWxsb2NhdGUKLSAgICAgICAgICAgIChsZW4gKyBzaXplb2Yoc2l6ZV90eXBlKQotICAgICAgICAgICAgI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfRElOS1VNV0FSRV9TVERMSUIsID09IDEpCi0gICAgICAgICAgICAgICAgLCAoY2hhciopMAotICAgICAgICAgICAgI2VuZGlmCi0gICAgICAgICAgICApOwotICAgICpyZWludGVycHJldF9jYXN0PHNpemVfdHlwZSo+KHB0cikgPSBsZW47Ci0gICAgcmV0dXJuIHB0ciArIHNpemVvZihzaXplX3R5cGUpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgQmFzZT4KLXZvaWQgYnppcDJfYWxsb2NhdG9yPEFsbG9jLCBCYXNlPjo6ZGVhbGxvY2F0ZSh2b2lkKiBzZWxmLCB2b2lkKiBhZGRyZXNzKQoteyAKLSAgICBjaGFyKiBwdHIgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihhZGRyZXNzKSAtIHNpemVvZihzaXplX3R5cGUpOwotICAgIHNpemVfdHlwZSBsZW4gPSAqcmVpbnRlcnByZXRfY2FzdDxzaXplX3R5cGUqPihwdHIpICsgc2l6ZW9mKHNpemVfdHlwZSk7Ci0gICAgc3RhdGljX2Nhc3Q8YWxsb2NhdG9yX3R5cGUqPihzZWxmKS0+ZGVhbGxvY2F0ZShwdHIsIGxlbik7IAotfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLUltcGxlbWVudGF0aW9uIG9mIGJ6aXAyX2NvbXByZXNzb3JfaW1wbC0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4KLWJ6aXAyX2NvbXByZXNzb3JfaW1wbDxBbGxvYz46OmJ6aXAyX2NvbXByZXNzb3JfaW1wbChjb25zdCBiemlwMl9wYXJhbXMmIHApCi0gICAgOiBiemlwMl9iYXNlKHApLCBlb2ZfKGZhbHNlKSB7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+Ci1ib29sIGJ6aXAyX2NvbXByZXNzb3JfaW1wbDxBbGxvYz46OmZpbHRlcgotICAgICggY29uc3QgY2hhciomIHNyY19iZWdpbiwgY29uc3QgY2hhciogc3JjX2VuZCwKLSAgICAgIGNoYXIqJiBkZXN0X2JlZ2luLCBjaGFyKiBkZXN0X2VuZCwgYm9vbCBmbHVzaCApCi17Ci0gICAgaWYgKCFyZWFkeSgpKSBpbml0KCk7Ci0gICAgaWYgKGVvZl8pIHJldHVybiBmYWxzZTsKLSAgICBiZWZvcmUoc3JjX2JlZ2luLCBzcmNfZW5kLCBkZXN0X2JlZ2luLCBkZXN0X2VuZCk7Ci0gICAgaW50IHJlc3VsdCA9IGNvbXByZXNzKGZsdXNoID8gYnppcDI6OmZpbmlzaCA6IGJ6aXAyOjpydW4pOwotICAgIGFmdGVyKHNyY19iZWdpbiwgZGVzdF9iZWdpbik7Ci0gICAgYnppcDJfZXJyb3I6OmNoZWNrIE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OKHJlc3VsdCk7Ci0gICAgcmV0dXJuICEoZW9mXyA9IHJlc3VsdCA9PSBiemlwMjo6c3RyZWFtX2VuZCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jPgotdm9pZCBiemlwMl9jb21wcmVzc29yX2ltcGw8QWxsb2M+OjpjbG9zZSgpIAoteyAKLSAgICB0cnkgewotICAgICAgICBlbmQodHJ1ZSk7Ci0gICAgfSBjYXRjaCAoLi4uKSB7IAotICAgICAgICBlb2ZfID0gZmFsc2U7IAotICAgICAgICB0aHJvdzsKLSAgICB9Ci0gICAgZW9mXyA9IGZhbHNlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4KLWlubGluZSB2b2lkIGJ6aXAyX2NvbXByZXNzb3JfaW1wbDxBbGxvYz46OmluaXQoKSAKLXsgYnppcDJfYmFzZTo6aW5pdCh0cnVlLCBzdGF0aWNfY2FzdDxiemlwMl9hbGxvY2F0b3I8QWxsb2M+Jj4oKnRoaXMpKTsgfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLUltcGxlbWVudGF0aW9uIG9mIGJ6aXAyX2RlY29tcHJlc3Nvcl9pbXBsLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4KLWJ6aXAyX2RlY29tcHJlc3Nvcl9pbXBsPEFsbG9jPjo6YnppcDJfZGVjb21wcmVzc29yX2ltcGwoYm9vbCBzbWFsbCkKLSAgICA6IGJ6aXAyX2Jhc2UoYnppcDJfcGFyYW1zKHNtYWxsKSksIGVvZl8oZmFsc2UpIHsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4KLWJvb2wgYnppcDJfZGVjb21wcmVzc29yX2ltcGw8QWxsb2M+OjpmaWx0ZXIKLSAgICAoIGNvbnN0IGNoYXIqJiBzcmNfYmVnaW4sIGNvbnN0IGNoYXIqIHNyY19lbmQsCi0gICAgICBjaGFyKiYgZGVzdF9iZWdpbiwgY2hhciogZGVzdF9lbmQsIGJvb2wgZmx1c2ggKQotewotICAgIGlmIChlb2ZfKSB7Ci0gICAgICAgIC8vIHJlc2V0IHRoZSBzdHJlYW0gaWYgdGhlcmUgYXJlIG1vcmUgY2hhcmFjdGVycwotICAgICAgICBpZihzcmNfYmVnaW4gPT0gc3JjX2VuZCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgY2xvc2UoKTsKLSAgICB9Ci0gICAgaWYgKCFyZWFkeSgpKSAKLSAgICAgICAgaW5pdCgpOwotICAgIGJlZm9yZShzcmNfYmVnaW4sIHNyY19lbmQsIGRlc3RfYmVnaW4sIGRlc3RfZW5kKTsKLSAgICBpbnQgcmVzdWx0ID0gZGVjb21wcmVzcygpOwotICAgIGlmKHJlc3VsdCA9PSBiemlwMjo6b2sgJiYgZmx1c2gpCi0gICAgICAgIHJlc3VsdCA9IGNoZWNrX2VuZChzcmNfYmVnaW4sIGRlc3RfYmVnaW4pOwotICAgIGFmdGVyKHNyY19iZWdpbiwgZGVzdF9iZWdpbik7Ci0gICAgYnppcDJfZXJyb3I6OmNoZWNrIE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OKHJlc3VsdCk7Ci0gICAgZW9mXyA9IHJlc3VsdCA9PSBiemlwMjo6c3RyZWFtX2VuZDsKLSAgICByZXR1cm4gdHJ1ZTsgCi19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jPgotdm9pZCBiemlwMl9kZWNvbXByZXNzb3JfaW1wbDxBbGxvYz46OmNsb3NlKCkgCi17IAotICAgIHRyeSB7Ci0gICAgICAgIGVuZChmYWxzZSk7Ci0gICAgfSBjYXRjaCAoLi4uKSB7IAotICAgICAgICBlb2ZfID0gZmFsc2U7IAotICAgICAgICB0aHJvdzsKLSAgICB9Ci0gICAgZW9mXyA9IGZhbHNlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4KLWlubGluZSB2b2lkIGJ6aXAyX2RlY29tcHJlc3Nvcl9pbXBsPEFsbG9jPjo6aW5pdCgpCi17IGJ6aXAyX2Jhc2U6OmluaXQoZmFsc2UsIHN0YXRpY19jYXN0PGJ6aXAyX2FsbG9jYXRvcjxBbGxvYz4mPigqdGhpcykpOyB9Ci19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLUltcGxlbWVudGF0aW9uIG9mIGJ6aXAyX2RlY29tcHJlc3Nvci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4KLWJhc2ljX2J6aXAyX2NvbXByZXNzb3I8QWxsb2M+OjpiYXNpY19iemlwMl9jb21wcmVzc29yCi0gICAgICAgIChjb25zdCBiemlwMl9wYXJhbXMmIHAsIGludCBidWZmZXJfc2l6ZSkgCi0gICAgOiBiYXNlX3R5cGUoYnVmZmVyX3NpemUsIHApIAotICAgIHsgfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLUltcGxlbWVudGF0aW9uIG9mIGJ6aXAyX2RlY29tcHJlc3Nvci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4KLWJhc2ljX2J6aXAyX2RlY29tcHJlc3NvcjxBbGxvYz46OmJhc2ljX2J6aXAyX2RlY29tcHJlc3NvcgotICAgICAgICAoYm9vbCBzbWFsbCwgaW50IGJ1ZmZlcl9zaXplKSAKLSAgICA6IGJhc2VfdHlwZShidWZmZXJfc2l6ZSwgc21hbGwpCi0gICAgeyB9Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL2FiaV9zdWZmaXguaHBwPiAvLyBQb3BzIGFiaV9zdWZmaXguaHBwIHByYWdtYXMuCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyBwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0JaSVAyX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL2NvdW50ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL2NvdW50ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NzgwYzE2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci9jb3VudGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDA1LTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19DT1VOVEVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQ09VTlRFUl9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxhbGdvcml0aG0+ICAvLyBjb3VudC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2F0ZWdvcmllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NoYXJfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvb3BlcmF0aW9ucy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3BpcGVsaW5lLmhwcD4KLQotLy8gTXVzdCBjb21lIGxhc3QuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZGlzYWJsZV93YXJuaW5ncy5ocHA+IC8vIFZDNy4xIEM0MjQ0LgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotLy8KLS8vIFRlbXBsYXRlIG5hbWU6IGJhc2ljX2NvdW50ZXIuCi0vLyBUZW1wbGF0ZSBwYXJhbWV0ZXJzOgotLy8gICAgICBDaCAtIFRoZSBjaGFyYWN0ZXIgdHlwZS4KLS8vIERlc2NyaXB0aW9uOiBGaWx0ZXIgd2hpY2ggY291bnRzIGxpbmVzIGFuZCBjaGFyYWN0ZXJzLgotLy8KLXRlbXBsYXRlPHR5cGVuYW1lIENoPgotY2xhc3MgYmFzaWNfY291bnRlciAgewotcHVibGljOgotICAgIHR5cGVkZWYgQ2ggY2hhcl90eXBlOwotICAgIHN0cnVjdCBjYXRlZ29yeQotICAgICAgICA6IGR1YWxfdXNlLAotICAgICAgICAgIGZpbHRlcl90YWcsCi0gICAgICAgICAgbXVsdGljaGFyX3RhZywKLSAgICAgICAgICBvcHRpbWFsbHlfYnVmZmVyZWRfdGFnCi0gICAgICAgIHsgfTsKLSAgICBleHBsaWNpdCBiYXNpY19jb3VudGVyKGludCBmaXJzdF9saW5lID0gMCwgaW50IGZpcnN0X2NoYXIgPSAwKQotICAgICAgICA6IGxpbmVzXyhmaXJzdF9saW5lKSwgY2hhcnNfKGZpcnN0X2NoYXIpCi0gICAgICAgIHsgfQotICAgIGludCBsaW5lcygpIGNvbnN0IHsgcmV0dXJuIGxpbmVzXzsgfQotICAgIGludCBjaGFyYWN0ZXJzKCkgY29uc3QgeyByZXR1cm4gY2hhcnNfOyB9Ci0gICAgc3RkOjpzdHJlYW1zaXplIG9wdGltYWxfYnVmZmVyX3NpemUoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2U+Ci0gICAgc3RkOjpzdHJlYW1zaXplIHJlYWQoU291cmNlJiBzcmMsIGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgewotICAgICAgICBzdGQ6OnN0cmVhbXNpemUgcmVzdWx0ID0gaW9zdHJlYW1zOjpyZWFkKHNyYywgcywgbik7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gLTEpCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIGxpbmVzXyArPSBzdGQ6OmNvdW50KHMsIHMgKyByZXN1bHQsIGNoYXJfdHJhaXRzPENoPjo6bmV3bGluZSgpKTsKLSAgICAgICAgY2hhcnNfICs9IHJlc3VsdDsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgIHN0ZDo6c3RyZWFtc2l6ZSB3cml0ZShTaW5rJiBzbmssIGNvbnN0IGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgewotICAgICAgICBzdGQ6OnN0cmVhbXNpemUgcmVzdWx0ID0gaW9zdHJlYW1zOjp3cml0ZShzbmssIHMsIG4pOwotICAgICAgICBsaW5lc18gKz0gc3RkOjpjb3VudChzLCBzICsgcmVzdWx0LCBjaGFyX3RyYWl0czxDaD46Om5ld2xpbmUoKSk7Ci0gICAgICAgIGNoYXJzXyArPSByZXN1bHQ7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotcHJpdmF0ZToKLSAgICBpbnQgbGluZXNfOwotICAgIGludCBjaGFyc187Ci19OwotTkROQk9PU1RfSU9TVFJFQU1TX1BJUEFCTEUoYmFzaWNfY291bnRlciwgMSkKLQotCi10eXBlZGVmIGJhc2ljX2NvdW50ZXI8Y2hhcj4gICAgIGNvdW50ZXI7Ci10eXBlZGVmIGJhc2ljX2NvdW50ZXI8d2NoYXJfdD4gIHdjb3VudGVyOwotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19DT1VOVEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL2dyZXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL2dyZXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzdhMjk2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci9ncmVwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBACi0vKgotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLihTZWUgYWNjb21wYW55aW5nIAotICogZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotICogCi0gKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSAqIEZpbGU6ICAgICAgICBuZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL2dyZXAuaHBwCi0gKiBEYXRlOiAgICAgICAgTW9uIE1heSAyNiAxNzo0ODo0NSBNRFQgMjAwOAotICogQ29weXJpZ2h0OiAgIDIwMDggQ29kZVJhZ2UsIExMQwotICogQXV0aG9yOiAgICAgIEpvbmF0aGFuIFR1cmthbmlzCi0gKiBDb250YWN0OiAgICAgdHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbQotICoKLSAqIERlZmluZXMgdGhlIGNsYXNzIHRlbXBsYXRlIGJhc2ljX2dyZXBfZmlsdGVyIGFuZCBpdHMgc3BlY2lhbGl6YXRpb25zCi0gKiBncmVwX2ZpbHRlciBhbmQgd2dyZXBfZmlsdGVyLgotICovCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0dSRVBfRklMVEVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfR1JFUF9GSUxURVJfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZiAgICAgICAgICAgICAgCi0KLSNpbmNsdWRlIDxpb3N0cmVhbT4KLQotI2luY2x1ZGUgPG1lbW9yeT4gIC8vIGFsbG9jYXRvci4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2hhcl90cmFpdHMuaHBwPiAgIAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9maWx0ZXIvbGluZS5ocHA+ICAgICAgICAgICAgICAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvcGlwZWxpbmUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLW5hbWVzcGFjZSBncmVwIHsKLQotY29uc3QgaW50IGludmVydCAgICAgID0gMTsKLWNvbnN0IGludCB3aG9sZV9saW5lICA9IGludmVydCA8PCAxOwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZ3JlcC4KLQotdGVtcGxhdGU8IHR5cGVuYW1lIENoLAotICAgICAgICAgIHR5cGVuYW1lIFRyID0gcmVnZXhfdHJhaXRzPENoPiwKLSAgICAgICAgICB0eXBlbmFtZSBBbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPENoPiA+Ci1jbGFzcyBiYXNpY19ncmVwX2ZpbHRlciA6IHB1YmxpYyBiYXNpY19saW5lX2ZpbHRlcjxDaCwgQWxsb2M+IHsKLXByaXZhdGU6Ci0gICAgdHlwZWRlZiBiYXNpY19saW5lX2ZpbHRlcjxDaCwgQWxsb2M+ICAgICAgICAgICAgICAgYmFzZV90eXBlOwotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV90eXBlOjpjaGFyX3R5cGUgICAgICAgICAgICAgIGNoYXJfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfdHlwZTo6Y2F0ZWdvcnkgICAgICAgICAgICAgICBjYXRlZ29yeTsKLSAgICB0eXBlZGVmIGNoYXJfdHJhaXRzPGNoYXJfdHlwZT4gICAgICAgICAgICAgICAgICAgICB0cmFpdHNfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfdHlwZTo6c3RyaW5nX3R5cGUgICAgICAgICAgICBzdHJpbmdfdHlwZTsKLSAgICB0eXBlZGVmIGJhc2ljX3JlZ2V4PENoLCBUcj4gICAgICAgICAgICAgICAgICAgICAgICByZWdleF90eXBlOwotICAgIHR5cGVkZWYgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZTsKLSAgICBiYXNpY19ncmVwX2ZpbHRlciggY29uc3QgcmVnZXhfdHlwZSYgcmUsCi0gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBtYXRjaF9mbGFncyA9IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0LAotICAgICAgICAgICAgICAgICAgICAgICBpbnQgb3B0aW9ucyA9IDAgKTsKLSAgICBpbnQgY291bnQoKSBjb25zdCB7IHJldHVybiBjb3VudF87IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpbms+Ci0gICAgdm9pZCBjbG9zZShTaW5rJiBzbmssIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpCi0gICAgewotICAgICAgICBiYXNlX3R5cGU6OmNsb3NlKHNuaywgd2hpY2gpOwotICAgICAgICBvcHRpb25zXyAmPSB+Zl9pbml0aWFsaXplZDsKLSAgICB9Ci1wcml2YXRlOgotICAgIHZpcnR1YWwgc3RyaW5nX3R5cGUgZG9fZmlsdGVyKGNvbnN0IHN0cmluZ190eXBlJiBsaW5lKQotICAgIHsKLSAgICAgICAgaWYgKChvcHRpb25zXyAmIGZfaW5pdGlhbGl6ZWQpID09IDApIHsKLSAgICAgICAgICAgIG9wdGlvbnNfIHw9IGZfaW5pdGlhbGl6ZWQ7Ci0gICAgICAgICAgICBjb3VudF8gPSAwOwotICAgICAgICB9Ci0gICAgICAgIGJvb2wgbWF0Y2hlcyA9IChvcHRpb25zXyAmIGdyZXA6Ondob2xlX2xpbmUpID8KLSAgICAgICAgICAgIHJlZ2V4X21hdGNoKGxpbmUsIHJlXywgbWF0Y2hfZmxhZ3NfKSA6Ci0gICAgICAgICAgICByZWdleF9zZWFyY2gobGluZSwgcmVfLCBtYXRjaF9mbGFnc18pOwotICAgICAgICBpZiAob3B0aW9uc18gJiBncmVwOjppbnZlcnQpCi0gICAgICAgICAgICBtYXRjaGVzID0gIW1hdGNoZXM7Ci0gICAgICAgIGlmIChtYXRjaGVzKQotICAgICAgICAgICAgKytjb3VudF87Ci0gICAgICAgIHJldHVybiBtYXRjaGVzID8gbGluZSArIHRyYWl0c190eXBlOjpuZXdsaW5lKCkgOiBzdHJpbmdfdHlwZSgpOwotICAgIH0KLQotICAgIC8vIFByaXZhdGUgZmxhZ3MgYml0d2lzZSBPUidkIHdpdGggY29uc3RhbnRzIGZyb20gbmFtZXNwYWNlIGdyZXAKLSAgICBlbnVtIGZsYWdzXyB7Ci0gICAgICAgIGZfaW5pdGlhbGl6ZWQgPSA2NTUzNgotICAgIH07Ci0KLSAgICByZWdleF90eXBlICAgICAgIHJlXzsKLSAgICBtYXRjaF9mbGFnX3R5cGUgIG1hdGNoX2ZsYWdzXzsKLSAgICBpbnQgICAgICAgICAgICAgIG9wdGlvbnNfOwotICAgIGludCAgICAgICAgICAgICAgY291bnRfOwotfTsKLU5ETkJPT1NUX0lPU1RSRUFNU19QSVBBQkxFKGJhc2ljX2dyZXBfZmlsdGVyLCAzKQotCi10eXBlZGVmIGJhc2ljX2dyZXBfZmlsdGVyPGNoYXI+ICAgICBncmVwX2ZpbHRlcjsKLXR5cGVkZWYgYmFzaWNfZ3JlcF9maWx0ZXI8d2NoYXJfdD4gIHdncmVwX2ZpbHRlcjsKLSAgICAgICAgICAgICAgICAgICAgCi0vLy0tLS0tLS0tLS0tLS0tLS0tLUltcGxlbWVudGF0aW9uIG9mIGJhc2ljX2dyZXBfZmlsdGVyLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVHIsIHR5cGVuYW1lIEFsbG9jPgotYmFzaWNfZ3JlcF9maWx0ZXI8Q2gsIFRyLCBBbGxvYz46OmJhc2ljX2dyZXBfZmlsdGVyCi0gICAgKGNvbnN0IHJlZ2V4X3R5cGUmIHJlLCBtYXRjaF9mbGFnX3R5cGUgbWF0Y2hfZmxhZ3MsIGludCBvcHRpb25zKQotICAgIDogYmFzZV90eXBlKHRydWUpLCByZV8ocmUpLCBtYXRjaF9mbGFnc18obWF0Y2hfZmxhZ3MpLCAKLSAgICAgIG9wdGlvbnNfKG9wdGlvbnMpLCBjb3VudF8oMCkKLSAgICB7IH0KLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAgICAgIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX1JFR0VYX0ZJTFRFUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci9nemlwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci9nemlwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDRmOWZjZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9maWx0ZXIvZ3ppcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NTcgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vIENvbnRhaW5zIHRoZSBkZWZpbml0aW9ucyBvZiB0aGUgY2xhc3MgdGVtcGxhdGVzIGd6aXBfY29tcHJlc3NvciBhbmQKLS8vIGd6aXBfZGVjb21wcmVzc29yIGZvciByZWFkaW5nIGFuZCB3cml0aW5nIGZpbGVzIGluIHRoZSBnemlwIGZpbGUgZm9ybWF0Ci0vLyAoUkZDIDE5NTIpLiBCYXNlZCBpbiBwYXJ0IG9uIHdvcmsgb2YgSm9uYXRoYW4gZGUgSGFsbGV1eDsgc2VlIFsuLi5dCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0daSVBfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19HWklQX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+IC8vIFNUQVRJQ19DT05TVEFOVCwgU1REQ19OQU1FU1BBQ0UsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERJTktVTVdBUkVfU1RETElCLCBfX1NUTF9DT05GSUdfSC4KLSNpbmNsdWRlIDxhbGdvcml0aG0+ICAgICAgICAgICAgICAgICAgICAgIC8vIG1pbi4KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPGNzdGRpbz4gICAgICAgICAgICAgICAgICAgICAgICAgLy8gRU9GLgotI2luY2x1ZGUgPGNzdGRkZWY+ICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2l6ZV90LgotI2luY2x1ZGUgPGN0aW1lPiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RkOjp0aW1lX3QuCi0jaW5jbHVkZSA8bWVtb3J5PiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbGxvY2F0b3IuCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gICAgICAgICAgICAgICAvLyBQdXQgc2l6ZV90IGluIHN0ZC4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY3N0ZGludC5ocHA+ICAgICAgICAgICAgICAvLyB1aW50OF90LCB1aW50MzJfdC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY29uc3RhbnRzLmhwcD4gIC8vIGJ1ZmZlciBzaXplLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRhcHRlci9ub25fYmxvY2tpbmdfYWRhcHRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGFwdGVyL3JhbmdlX2FkYXB0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY2hhcl90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4gLy8gZmFpbHVyZS4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Vycm9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvb3BlcmF0aW9ucy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldmljZS9iYWNrX2luc2VydGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL3psaWIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9waXBlbGluZS5ocHA+ICAgICAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvcHV0YmFjay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGhyb3dfZXhjZXB0aW9uLmhwcD4KLQotLy8gTXVzdCBjb21lIGxhc3QuCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotIyBwcmFnbWEgd2FybmluZyhwdXNoKQotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MzA5KSAgICAvLyBUcnVuY2F0aW9uIG9mIGNvbnN0YW50IHZhbHVlLgotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRQotbmFtZXNwYWNlIHN0ZCB7IHVzaW5nIDo6dGltZV90OyB9Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0gICAgICAgICAgICAgICAgICAgIAotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9ucyBvZiBjb25zdGFudHMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotbmFtZXNwYWNlIGd6aXAgewotCi11c2luZyBuYW1lc3BhY2UgbmRuYm9vc3Q6Omlvc3RyZWFtczo6emxpYjsKLQotICAgIC8vIEVycm9yIGNvZGVzIHVzZWQgYnkgZ3ppcF9lcnJvci4KLQotY29uc3QgaW50IHpsaWJfZXJyb3IgICAgICAgID0gMTsKLWNvbnN0IGludCBiYWRfY3JjICAgICAgICAgICA9IDI7IC8vIFJlY29yZGVkIGNyYyBkb2Vzbid0IG1hdGNoIGRhdGEuCi1jb25zdCBpbnQgYmFkX2xlbmd0aCAgICAgICAgPSAzOyAvLyBSZWNvcmRlZCBsZW5ndGggZG9lc24ndCBtYXRjaCBkYXRhLgotY29uc3QgaW50IGJhZF9oZWFkZXIgICAgICAgID0gNDsgLy8gTWFsZm9ybWVkIGhlYWRlci4KLWNvbnN0IGludCBiYWRfZm9vdGVyICAgICAgICA9IDU7IC8vIE1hbGZvcm1lZCBmb290ZXIuCi1jb25zdCBpbnQgYmFkX21ldGhvZCAgICAgICAgPSA2OyAvLyBVbnN1cHBvcnRlZCBjb21wcmVzc2lvbiBtZXRob2QuCi0KLW5hbWVzcGFjZSBtYWdpYyB7Ci0KLSAgICAvLyBNYWdpYyBudW1iZXJzIHVzZWQgYnkgZ3ppcCBoZWFkZXIuCi0KLWNvbnN0IGludCBpZDEgICAgICAgICAgICAgICA9IDB4MWY7Ci1jb25zdCBpbnQgaWQyICAgICAgICAgICAgICAgPSAweDhiOwotCi19IC8vIEVuZCBuYW1lc3BhY2UgbWFnaWMuCi0KLW5hbWVzcGFjZSBtZXRob2QgewotCi0gICAgLy8gQ29kZXMgdXNlZCBmb3IgdGhlICdDTScgYnl0ZSBvZiB0aGUgZ3ppcCBoZWFkZXIuCi0KLWNvbnN0IGludCBkZWZsYXRlICAgICAgICAgICA9IDg7Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBtZXRob2QuCi0KLW5hbWVzcGFjZSBmbGFncyB7Ci0KLSAgICAvLyBDb2RlcyB1c2VkIGZvciB0aGUgJ0ZMRycgYnl0ZSBvZiB0aGUgZ3ppcCBoZWFkZXIuCi0KLWNvbnN0IGludCB0ZXh0ICAgICAgICAgICAgICA9IDE7Ci1jb25zdCBpbnQgaGVhZGVyX2NyYyAgICAgICAgPSAyOwotY29uc3QgaW50IGV4dHJhICAgICAgICAgICAgID0gNDsKLWNvbnN0IGludCBuYW1lICAgICAgICAgICAgICA9IDg7Ci1jb25zdCBpbnQgY29tbWVudCAgICAgICAgICAgPSAxNjsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGZsYWdzLgotCi1uYW1lc3BhY2UgZXh0cmFfZmxhZ3MgewotCi0gICAgLy8gQ29kZXMgdXNlZCBmb3IgdGhlICdYRkwnIGJ5dGUgb2YgdGhlIGd6aXAgaGVhZGVyLgotCi1jb25zdCBpbnQgYmVzdF9jb21wcmVzc2lvbiAgPSAyOwotY29uc3QgaW50IGJlc3Rfc3BlZWQgICAgICAgID0gNDsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGV4dHJhX2ZsYWdzLgotCi0gICAgLy8gQ29kZXMgdXNlZCBmb3IgdGhlICdPUycgYnl0ZSBvZiB0aGUgZ3ppcCBoZWFkZXIuCi0KLWNvbnN0IGludCBvc19mYXQgICAgICAgICAgICA9IDA7Ci1jb25zdCBpbnQgb3NfYW1pZ2EgICAgICAgICAgPSAxOwotY29uc3QgaW50IG9zX3ZtcyAgICAgICAgICAgID0gMjsKLWNvbnN0IGludCBvc191bml4ICAgICAgICAgICA9IDM7Ci1jb25zdCBpbnQgb3Nfdm1fY21zICAgICAgICAgPSA0OwotY29uc3QgaW50IG9zX2F0YXJpICAgICAgICAgID0gNTsKLWNvbnN0IGludCBvc19ocGZzICAgICAgICAgICA9IDY7Ci1jb25zdCBpbnQgb3NfbWFjaW50b3NoICAgICAgPSA3OwotY29uc3QgaW50IG9zX3pfc3lzdGVtICAgICAgID0gODsKLWNvbnN0IGludCBvc19jcF9tICAgICAgICAgICA9IDk7Ci1jb25zdCBpbnQgb3NfdG9wc18yMCAgICAgICAgPSAxMDsKLWNvbnN0IGludCBvc19udGZzICAgICAgICAgICA9IDExOwotY29uc3QgaW50IG9zX3Fkb3MgICAgICAgICAgID0gMTI7Ci1jb25zdCBpbnQgb3NfYWNvcm4gICAgICAgICAgPSAxMzsKLWNvbnN0IGludCBvc191bmtub3duICAgICAgICA9IDI1NTsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGd6aXAuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBnemlwX3BhcmFtcy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vCi0vLyBDbGFzcyBuYW1lOiBnemlwX3BhcmFtcy4KLS8vIERlc2NyaXB0aW9uOiBTdWJjbGFzcyBvZiB6bGliX3BhcmFtcyB3aXRoIGFuIGFkZGl0aW9uYWwgZmllbGQKLS8vICAgICAgcmVwcmVzZW50aW5nIGEgZmlsZSBuYW1lLgotLy8KLXN0cnVjdCBnemlwX3BhcmFtcyA6IHpsaWJfcGFyYW1zIHsKLQotICAgIC8vIE5vbi1leHBsaWNpdCBjb25zdHJ1Y3Rvci4KLSAgICBnemlwX3BhcmFtcyggaW50IGxldmVsICAgICAgICAgICAgICA9IGd6aXA6OmRlZmF1bHRfY29tcHJlc3Npb24sCi0gICAgICAgICAgICAgICAgIGludCBtZXRob2QgICAgICAgICAgICAgPSBnemlwOjpkZWZsYXRlZCwKLSAgICAgICAgICAgICAgICAgaW50IHdpbmRvd19iaXRzICAgICAgICA9IGd6aXA6OmRlZmF1bHRfd2luZG93X2JpdHMsCi0gICAgICAgICAgICAgICAgIGludCBtZW1fbGV2ZWwgICAgICAgICAgPSBnemlwOjpkZWZhdWx0X21lbV9sZXZlbCwKLSAgICAgICAgICAgICAgICAgaW50IHN0cmF0ZWd5ICAgICAgICAgICA9IGd6aXA6OmRlZmF1bHRfc3RyYXRlZ3ksCi0gICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGZpbGVfbmFtZSAgPSAiIiwKLSAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgY29tbWVudCAgICA9ICIiLAotICAgICAgICAgICAgICAgICBzdGQ6OnRpbWVfdCBtdGltZSAgICAgID0gMCApCi0gICAgICAgIDogemxpYl9wYXJhbXMobGV2ZWwsIG1ldGhvZCwgd2luZG93X2JpdHMsIG1lbV9sZXZlbCwgc3RyYXRlZ3kpLAotICAgICAgICAgIGZpbGVfbmFtZShmaWxlX25hbWUpLCBjb21tZW50KGNvbW1lbnQpLCBtdGltZShtdGltZSkKLSAgICAgICAgeyB9Ci0gICAgc3RkOjpzdHJpbmcgIGZpbGVfbmFtZTsKLSAgICBzdGQ6OnN0cmluZyAgY29tbWVudDsKLSAgICBzdGQ6OnRpbWVfdCAgbXRpbWU7Ci19OwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgZ3ppcF9lcnJvci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLwotLy8gQ2xhc3MgbmFtZTogZ3ppcF9lcnJvci4KLS8vIERlc2NyaXB0aW9uOiBTdWJjbGFzcyBvZiBzdGQ6Omlvc19iYXNlOjpmYWlsdXJlIHRocm93biB0byBpbmRpY2F0ZQotLy8gICAgIHpsaWIgZXJyb3JzIG90aGVyIHRoYW4gb3V0LW9mLW1lbW9yeSBjb25kaXRpb25zLgotLy8KLWNsYXNzIGd6aXBfZXJyb3IgOiBwdWJsaWMgTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUgewotcHVibGljOgotICAgIGV4cGxpY2l0IGd6aXBfZXJyb3IoaW50IGVycm9yKQotICAgICAgICA6IE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFKCJnemlwIGVycm9yIiksCi0gICAgICAgICAgZXJyb3JfKGVycm9yKSwgemxpYl9lcnJvcl9jb2RlXyh6bGliOjpva2F5KSB7IH0KLSAgICBleHBsaWNpdCBnemlwX2Vycm9yKGNvbnN0IHpsaWJfZXJyb3ImIGUpCi0gICAgICAgIDogTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUoImd6aXAgZXJyb3IiKSwKLSAgICAgICAgICBlcnJvcl8oZ3ppcDo6emxpYl9lcnJvciksIHpsaWJfZXJyb3JfY29kZV8oZS5lcnJvcigpKQotICAgICAgICB7IH0KLSAgICBpbnQgZXJyb3IoKSBjb25zdCB7IHJldHVybiBlcnJvcl87IH0KLSAgICBpbnQgemxpYl9lcnJvcl9jb2RlKCkgY29uc3QgeyByZXR1cm4gemxpYl9lcnJvcl9jb2RlXzsgfQotcHJpdmF0ZToKLSAgICBpbnQgZXJyb3JfOwotICAgIGludCB6bGliX2Vycm9yX2NvZGVfOwotfTsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIGd6aXBfY29tcHJlc3Nvci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8KLS8vIFRlbXBsYXRlIG5hbWU6IGd6aXBfY29tcHJlc3NvcgotLy8gRGVzY3JpcHRpb246IE1vZGVsIG9mIE91dHB1dEZpbHRlciBpbXBsZW1lbnRpbmcgY29tcHJlc3Npb24gaW4gdGhlCi0vLyAgICAgIGd6aXAgZm9ybWF0LgotLy8KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jID0gc3RkOjphbGxvY2F0b3I8Y2hhcj4gPgotY2xhc3MgYmFzaWNfZ3ppcF9jb21wcmVzc29yIDogYmFzaWNfemxpYl9jb21wcmVzc29yPEFsbG9jPiB7Ci1wcml2YXRlOgotICAgIHR5cGVkZWYgYmFzaWNfemxpYl9jb21wcmVzc29yPEFsbG9jPiAgYmFzZV90eXBlOwotcHVibGljOgotICAgIHR5cGVkZWYgY2hhciBjaGFyX3R5cGU7Ci0gICAgc3RydWN0IGNhdGVnb3J5Ci0gICAgICAgIDogZHVhbF91c2UsCi0gICAgICAgICAgZmlsdGVyX3RhZywKLSAgICAgICAgICBtdWx0aWNoYXJfdGFnLAotICAgICAgICAgIGNsb3NhYmxlX3RhZwotICAgICAgICB7IH07Ci0gICAgYmFzaWNfZ3ppcF9jb21wcmVzc29yKCBjb25zdCBnemlwX3BhcmFtcyYgPSBnemlwOjpkZWZhdWx0X2NvbXByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJ1ZmZlcl9zaXplID0gZGVmYXVsdF9kZXZpY2VfYnVmZmVyX3NpemUgKTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZT4KLSAgICBzdGQ6OnN0cmVhbXNpemUgcmVhZChTb3VyY2UmIHNyYywgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSByZXN1bHQgPSAwOwotCi0gICAgICAgIC8vIFJlYWQgaGVhZGVyLgotICAgICAgICBpZiAoIShmbGFnc18gJiBmX2hlYWRlcl9kb25lKSkKLSAgICAgICAgICAgIHJlc3VsdCArPSByZWFkX3N0cmluZyhzLCBuLCBoZWFkZXJfKTsKLQotICAgICAgICAvLyBSZWFkIGJvZHkuCi0gICAgICAgIGlmICghKGZsYWdzXyAmIGZfYm9keV9kb25lKSkgewotCi0gICAgICAgICAgICAvLyBSZWFkIGZyb20gYmFzaWNfemxpYl9maWx0ZXIuCi0gICAgICAgICAgICBzdGQ6OnN0cmVhbXNpemUgYW10ID0gYmFzZV90eXBlOjpyZWFkKHNyYywgcyArIHJlc3VsdCwgbiAtIHJlc3VsdCk7Ci0gICAgICAgICAgICBpZiAoYW10ICE9IC0xKSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ICs9IGFtdDsKLSAgICAgICAgICAgICAgICBpZiAoYW10IDwgbiAtIHJlc3VsdCkgeyAvLyBEb3VibGUtY2hlY2sgZm9yIEVPRi4KLSAgICAgICAgICAgICAgICAgICAgYW10ID0gYmFzZV90eXBlOjpyZWFkKHNyYywgcyArIHJlc3VsdCwgbiAtIHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhbXQgIT0gLTEpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gYW10OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChhbXQgPT0gLTEpCi0gICAgICAgICAgICAgICAgcHJlcGFyZV9mb290ZXIoKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFJlYWQgZm9vdGVyLgotICAgICAgICBpZiAoKGZsYWdzXyAmIGZfYm9keV9kb25lKSAhPSAwICYmIHJlc3VsdCA8IG4pCi0gICAgICAgICAgICByZXN1bHQgKz0gcmVhZF9zdHJpbmcocyArIHJlc3VsdCwgbiAtIHJlc3VsdCwgZm9vdGVyXyk7Ci0KLSAgICAgICAgcmV0dXJuIHJlc3VsdCAhPSAwID8gcmVzdWx0IDogLTE7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICBzdGQ6OnN0cmVhbXNpemUgd3JpdGUoU2luayYgc25rLCBjb25zdCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsKLSAgICAgICAgaWYgKCEoZmxhZ3NfICYgZl9oZWFkZXJfZG9uZSkpIHsKLSAgICAgICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBhbXQgPSAKLSAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxzdGQ6OnN0cmVhbXNpemU+KGhlYWRlcl8uc2l6ZSgpIC0gb2Zmc2V0Xyk7Ci0gICAgICAgICAgICBvZmZzZXRfICs9IG5kbmJvb3N0Ojppb3N0cmVhbXM6OndyaXRlKHNuaywgaGVhZGVyXy5kYXRhKCkgKyBvZmZzZXRfLCBhbXQpOwotICAgICAgICAgICAgaWYgKG9mZnNldF8gPT0gaGVhZGVyXy5zaXplKCkpCi0gICAgICAgICAgICAgICAgZmxhZ3NfIHw9IGZfaGVhZGVyX2RvbmU7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGJhc2VfdHlwZTo6d3JpdGUoc25rLCBzLCBuKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgIHZvaWQgY2xvc2UoU2luayYgc25rLCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIG0pCi0gICAgewotICAgICAgICB0cnkgewotICAgICAgICAgICAgLy8gQ2xvc2UgemxpYiBjb21wcmVzc29yLgotICAgICAgICAgICAgYmFzZV90eXBlOjpjbG9zZShzbmssIG0pOwotCi0gICAgICAgICAgICBpZiAobSA9PSBORE5CT09TVF9JT1M6Om91dCkgewotICAgICAgICAgICAgICAgIGlmIChmbGFnc18gJiBmX2hlYWRlcl9kb25lKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gV3JpdGUgZmluYWwgZmllbGRzIG9mIGd6aXAgZmlsZSBmb3JtYXQuCi0gICAgICAgICAgICAgICAgICAgIHdyaXRlX2xvbmcodGhpcy0+Y3JjKCksIHNuayk7Ci0gICAgICAgICAgICAgICAgICAgIHdyaXRlX2xvbmcodGhpcy0+dG90YWxfaW4oKSwgc25rKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gY2F0Y2goLi4uKSB7Ci0gICAgICAgICAgICBjbG9zZV9pbXBsKCk7Ci0gICAgICAgICAgICB0aHJvdzsKLSAgICAgICAgfQotICAgICAgICBjbG9zZV9pbXBsKCk7Ci0gICAgfQotcHJpdmF0ZToKLSAgICBzdGF0aWMgZ3ppcF9wYXJhbXMgbm9ybWFsaXplX3BhcmFtcyhnemlwX3BhcmFtcyBwKTsKLSAgICB2b2lkIHByZXBhcmVfZm9vdGVyKCk7Ci0gICAgc3RkOjpzdHJlYW1zaXplIHJlYWRfc3RyaW5nKGNoYXIqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuLCBzdGQ6OnN0cmluZyYgc3RyKTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpbms+Ci0gICAgc3RhdGljIHZvaWQgd3JpdGVfbG9uZyhsb25nIG4sIFNpbmsmIG5leHQsIG5kbmJvb3N0OjptcGw6OnRydWVfKQotICAgIHsKLSAgICAgICAgbmRuYm9vc3Q6Omlvc3RyZWFtczo6cHV0KG5leHQsIHN0YXRpY19jYXN0PGNoYXI+KDB4RkYgJiBuKSk7Ci0gICAgICAgIG5kbmJvb3N0Ojppb3N0cmVhbXM6OnB1dChuZXh0LCBzdGF0aWNfY2FzdDxjaGFyPigweEZGICYgKG4gPj4gOCkpKTsKLSAgICAgICAgbmRuYm9vc3Q6Omlvc3RyZWFtczo6cHV0KG5leHQsIHN0YXRpY19jYXN0PGNoYXI+KDB4RkYgJiAobiA+PiAxNikpKTsKLSAgICAgICAgbmRuYm9vc3Q6Omlvc3RyZWFtczo6cHV0KG5leHQsIHN0YXRpY19jYXN0PGNoYXI+KDB4RkYgJiAobiA+PiAyNCkpKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICBzdGF0aWMgdm9pZCB3cml0ZV9sb25nKGxvbmcgbiwgU2luayYgbmV4dCwgbmRuYm9vc3Q6Om1wbDo6ZmFsc2VfKQotICAgIHsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICBzdGF0aWMgdm9pZCB3cml0ZV9sb25nKGxvbmcgbiwgU2luayYgbmV4dCkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgY2F0ZWdvcnlfb2Y8U2luaz46OnR5cGUgY2F0ZWdvcnk7Ci0gICAgICAgIHR5cGVkZWYgaXNfY29udmVydGlibGU8Y2F0ZWdvcnksIG91dHB1dD4gY2FuX3dyaXRlOwotICAgICAgICB3cml0ZV9sb25nKG4sIG5leHQsIGNhbl93cml0ZSgpKTsKLSAgICB9Ci0KLSAgICB2b2lkIGNsb3NlX2ltcGwoKQotICAgIHsKLSAgICAgICAgI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sID09IDIpICYmIGRlZmluZWQoX19TVExfQ09ORklHX0gpIHx8IFwKLSAgICAgICAgICAgIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfRElOS1VNV0FSRV9TVERMSUIsID09IDEpIFwKLSAgICAgICAgICAgIC8qKi8KLSAgICAgICAgICAgIGZvb3Rlcl8uZXJhc2UoMCwgc3RkOjpzdHJpbmc6Om5wb3MpOwotICAgICAgICAjZWxzZQotICAgICAgICAgICAgZm9vdGVyXy5jbGVhcigpOwotICAgICAgICAjZW5kaWYKLSAgICAgICAgb2Zmc2V0XyA9IDA7Ci0gICAgICAgIGZsYWdzXyA9IDA7Ci0gICAgfQotCi0gICAgZW51bSBzdGF0ZV90eXBlIHsKLSAgICAgICAgZl9oZWFkZXJfZG9uZSA9IDEsCi0gICAgICAgIGZfYm9keV9kb25lID0gZl9oZWFkZXJfZG9uZSA8PCAxLAotICAgICAgICBmX2Zvb3Rlcl9kb25lID0gZl9ib2R5X2RvbmUgPDwgMQotICAgIH07Ci0gICAgc3RkOjpzdHJpbmcgIGhlYWRlcl87Ci0gICAgc3RkOjpzdHJpbmcgIGZvb3Rlcl87Ci0gICAgc3RkOjpzaXplX3QgIG9mZnNldF87Ci0gICAgaW50ICAgICAgICAgIGZsYWdzXzsKLX07Ci1ORE5CT09TVF9JT1NUUkVBTVNfUElQQUJMRShiYXNpY19nemlwX2NvbXByZXNzb3IsIDEpCi0KLXR5cGVkZWYgYmFzaWNfZ3ppcF9jb21wcmVzc29yPD4gZ3ppcF9jb21wcmVzc29yOwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgaGVscGVyIHRlbXBsYXRlcyBmb3IgZGVjb21wcmVzc2lvbi0tLS0tLS0tLS0vLwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gUHJvY2Vzc2VzIGd6aXAgaGVhZGVycwotY2xhc3MgTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZ3ppcF9oZWFkZXIgewotcHVibGljOgotICAgIGd6aXBfaGVhZGVyKCkgeyByZXNldCgpOyB9Ci0KLSAgICAvLyBNZW1iZXJzIGZvciBwcm9jZXNzaW5nIGhlYWRlciBkYXRhCi0gICAgdm9pZCBwcm9jZXNzKGNoYXIgYyk7Ci0gICAgYm9vbCBkb25lKCkgY29uc3QgeyByZXR1cm4gc3RhdGVfID09IHNfZG9uZTsgfQotICAgIHZvaWQgcmVzZXQoKTsKLQotICAgIC8vIE1lbWJlcnMgZm9yIGFjY2Vzc2luZyBoZWFkZXIgZGF0YQotICAgIHN0ZDo6c3RyaW5nIGZpbGVfbmFtZSgpIGNvbnN0IHsgcmV0dXJuIGZpbGVfbmFtZV87IH0KLSAgICBzdGQ6OnN0cmluZyBjb21tZW50KCkgY29uc3QgeyByZXR1cm4gY29tbWVudF87IH0KLSAgICBib29sIHRleHQoKSBjb25zdCB7IHJldHVybiAoZmxhZ3NfICYgZ3ppcDo6ZmxhZ3M6OnRleHQpICE9IDA7IH0KLSAgICBpbnQgb3MoKSBjb25zdCB7IHJldHVybiBvc187IH0KLSAgICBzdGQ6OnRpbWVfdCBtdGltZSgpIGNvbnN0IHsgcmV0dXJuIG10aW1lXzsgfQotcHJpdmF0ZToKLSAgICBlbnVtIHN0YXRlX3R5cGUgewotICAgICAgICBzX2lkMSAgICAgICA9IDEsCi0gICAgICAgIHNfaWQyICAgICAgID0gc19pZDEgKyAxLAotICAgICAgICBzX2NtICAgICAgICA9IHNfaWQyICsgMSwKLSAgICAgICAgc19mbGcgICAgICAgPSBzX2NtICsgMSwKLSAgICAgICAgc19tdGltZSAgICAgPSBzX2ZsZyArIDEsCi0gICAgICAgIHNfeGZsICAgICAgID0gc19tdGltZSArIDEsCi0gICAgICAgIHNfb3MgICAgICAgID0gc194ZmwgKyAxLAotICAgICAgICBzX3hsZW4gICAgICA9IHNfb3MgKyAxLAotICAgICAgICBzX2V4dHJhICAgICA9IHNfeGxlbiArIDEsCi0gICAgICAgIHNfbmFtZSAgICAgID0gc19leHRyYSArIDEsCi0gICAgICAgIHNfY29tbWVudCAgID0gc19uYW1lICsgMSwKLSAgICAgICAgc19oY3JjICAgICAgPSBzX2NvbW1lbnQgKyAxLAotICAgICAgICBzX2RvbmUgICAgICA9IHNfaGNyYyArIDEKLSAgICB9OwotICAgIHN0ZDo6c3RyaW5nICBmaWxlX25hbWVfOwotICAgIHN0ZDo6c3RyaW5nICBjb21tZW50XzsKLSAgICBpbnQgICAgICAgICAgb3NfOwotICAgIHN0ZDo6dGltZV90ICBtdGltZV87Ci0gICAgaW50ICAgICAgICAgIGZsYWdzXzsKLSAgICBpbnQgICAgICAgICAgc3RhdGVfOwotICAgIGludCAgICAgICAgICBvZmZzZXRfOyAgLy8gT2Zmc2V0IHdpdGhpbiBmaXhlZC1sZW5ndGggcmVnaW9uLgotICAgIGludCAgICAgICAgICB4bGVuXzsgICAgLy8gQnl0ZXMgcmVtYWluaW5nIGluIGV4dHJhIGZpZWxkLgotfTsKLQotLy8gUHJvY2Vzc2VzIGd6aXAgZm9vdGVycwotY2xhc3MgTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZ3ppcF9mb290ZXIgewotcHVibGljOgotICAgIGd6aXBfZm9vdGVyKCkgeyByZXNldCgpOyB9Ci0gICAgCi0gICAgLy8gTWVtYmVycyBmb3IgcHJvY2Vzc2luZyBmb290ZXIgZGF0YQotICAgIHZvaWQgcHJvY2VzcyhjaGFyIGMpOwotICAgIGJvb2wgZG9uZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRlXyA9PSBzX2RvbmU7IH0KLSAgICB2b2lkIHJlc2V0KCk7Ci0gICAgCi0gICAgLy8gTWVtYmVycyBmb3IgYWNjZXNzaW5nIGZvb3RlciBkYXRhCi0gICAgemxpYjo6dWxvbmcgY3JjKCkgY29uc3QgeyByZXR1cm4gY3JjXzsgfQotICAgIHpsaWI6OnVsb25nIHVuY29tcHJlc3NlZF9zaXplKCkgY29uc3QgeyByZXR1cm4gaXNpemVfOyB9Ci1wcml2YXRlOgotICAgIGVudW0gc3RhdGVfdHlwZSB7Ci0gICAgICAgIHNfY3JjICAgICA9IDEsCi0gICAgICAgIHNfaXNpemUgICA9IHNfY3JjICsgMSwKLSAgICAgICAgc19kb25lICAgID0gc19pc2l6ZSArIDEKLSAgICB9OwotICAgIHpsaWI6OnVsb25nICBjcmNfOwotICAgIHpsaWI6OnVsb25nICBpc2l6ZV87Ci0gICAgaW50ICAgICAgICAgIHN0YXRlXzsKLSAgICBpbnQgICAgICAgICAgb2Zmc2V0XzsgCi19OwotCi19IC8vIEVuZCBuYW1lc3BhY2UgbmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgYmFzaWNfZ3ppcF9kZWNvbXByZXNzb3ItLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLwotLy8gVGVtcGxhdGUgbmFtZTogYmFzaWNfZ3ppcF9kZWNvbXByZXNzb3IKLS8vIERlc2NyaXB0aW9uOiBNb2RlbCBvZiBJbnB1dEZpbHRlciBpbXBsZW1lbnRpbmcgY29tcHJlc3Npb24gaW4gdGhlCi0vLyAgICAgIGd6aXAgZm9ybWF0LgotLy8KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jID0gc3RkOjphbGxvY2F0b3I8Y2hhcj4gPgotY2xhc3MgYmFzaWNfZ3ppcF9kZWNvbXByZXNzb3IgOiBiYXNpY196bGliX2RlY29tcHJlc3NvcjxBbGxvYz4gewotcHJpdmF0ZToKLSAgICB0eXBlZGVmIGJhc2ljX3psaWJfZGVjb21wcmVzc29yPEFsbG9jPiAgIGJhc2VfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfdHlwZTo6c3RyaW5nX3R5cGUgIHN0cmluZ190eXBlOwotcHVibGljOgotICAgIHR5cGVkZWYgY2hhciBjaGFyX3R5cGU7Ci0gICAgc3RydWN0IGNhdGVnb3J5Ci0gICAgICAgIDogZHVhbF91c2UsCi0gICAgICAgICAgZmlsdGVyX3RhZywKLSAgICAgICAgICBtdWx0aWNoYXJfdGFnLAotICAgICAgICAgIGNsb3NhYmxlX3RhZwotICAgICAgICB7IH07Ci0gICAgYmFzaWNfZ3ppcF9kZWNvbXByZXNzb3IoIGludCB3aW5kb3dfYml0cyA9IGd6aXA6OmRlZmF1bHRfd2luZG93X2JpdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBidWZmZXJfc2l6ZSA9IGRlZmF1bHRfZGV2aWNlX2J1ZmZlcl9zaXplICk7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgIHN0ZDo6c3RyZWFtc2l6ZSB3cml0ZShTaW5rJiBzbmssIGNvbnN0IGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgewotICAgICAgICBzdGQ6OnN0cmVhbXNpemUgcmVzdWx0ID0gMDsKLSAgICAgICAgd2hpbGUocmVzdWx0IDwgbikgewotICAgICAgICAgICAgaWYoc3RhdGVfID09IHNfc3RhcnQpIHsKLSAgICAgICAgICAgICAgICBzdGF0ZV8gPSBzX2hlYWRlcjsKLSAgICAgICAgICAgICAgICBoZWFkZXJfLnJlc2V0KCk7Ci0gICAgICAgICAgICAgICAgZm9vdGVyXy5yZXNldCgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHN0YXRlXyA9PSBzX2hlYWRlcikgewotICAgICAgICAgICAgICAgIGludCBjID0gc1tyZXN1bHQrK107Ci0gICAgICAgICAgICAgICAgaGVhZGVyXy5wcm9jZXNzKGMpOwotICAgICAgICAgICAgICAgIGlmIChoZWFkZXJfLmRvbmUoKSkKLSAgICAgICAgICAgICAgICAgICAgc3RhdGVfID0gc19ib2R5OwotICAgICAgICAgICAgfSBlbHNlIGlmIChzdGF0ZV8gPT0gc19ib2R5KSB7Ci0gICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplIGFtdCA9IAotICAgICAgICAgICAgICAgICAgICAgICAgYmFzZV90eXBlOjp3cml0ZShzbmssIHMgKyByZXN1bHQsIG4gLSByZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gYW10OwotICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMtPmVvZigpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlXyA9IHNfZm9vdGVyOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBjYXRjaCAoY29uc3QgemxpYl9lcnJvciYgZSkgewotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGd6aXBfZXJyb3IoZSkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7IC8vIHN0YXRlXyA9PSBzX2Zvb3RlcgotICAgICAgICAgICAgICAgIGlmIChmb290ZXJfLmRvbmUoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoZm9vdGVyXy5jcmMoKSAhPSB0aGlzLT5jcmMoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oZ3ppcF9lcnJvcihnemlwOjpiYWRfY3JjKSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgYmFzZV90eXBlOjpjbG9zZShzbmssIE5ETkJPT1NUX0lPUzo6b3V0KTsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGVfID0gc19zdGFydDsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBpbnQgYyA9IHNbcmVzdWx0KytdOwotICAgICAgICAgICAgICAgICAgICBmb290ZXJfLnByb2Nlc3MoYyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlPgotICAgIHN0ZDo6c3RyZWFtc2l6ZSByZWFkKFNvdXJjZSYgc3JjLCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBjaGFyX3RyYWl0czxjaGFyPiAgdHJhaXRzX3R5cGU7Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSAgICAgICAgICAgIHJlc3VsdCA9IDA7Ci0gICAgICAgIHBlZWthYmxlX3NvdXJjZTxTb3VyY2U+ICAgIHBlZWsoc3JjLCBwdXRiYWNrXyk7Ci0gICAgICAgIHdoaWxlIChyZXN1bHQgPCBuICYmIHN0YXRlXyAhPSBzX2RvbmUpIHsKLSAgICAgICAgICAgIGlmIChzdGF0ZV8gPT0gc19zdGFydCkgewotICAgICAgICAgICAgICAgIHN0YXRlXyA9IHNfaGVhZGVyOwotICAgICAgICAgICAgICAgIGhlYWRlcl8ucmVzZXQoKTsKLSAgICAgICAgICAgICAgICBmb290ZXJfLnJlc2V0KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoc3RhdGVfID09IHNfaGVhZGVyKSB7Ci0gICAgICAgICAgICAgICAgaW50IGMgPSBuZG5ib29zdDo6aW9zdHJlYW1zOjpnZXQocGVlayk7Ci0gICAgICAgICAgICAgICAgaWYgKHRyYWl0c190eXBlOjppc19lb2YoYykpIHsKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihnemlwX2Vycm9yKGd6aXA6OmJhZF9oZWFkZXIpKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRyYWl0c190eXBlOjp3b3VsZF9ibG9jayhjKSkgewotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaGVhZGVyXy5wcm9jZXNzKGMpOwotICAgICAgICAgICAgICAgIGlmIChoZWFkZXJfLmRvbmUoKSkKLSAgICAgICAgICAgICAgICAgICAgc3RhdGVfID0gc19ib2R5OwotICAgICAgICAgICAgfSBlbHNlIGlmIChzdGF0ZV8gPT0gc19ib2R5KSB7Ci0gICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplIGFtdCA9IAotICAgICAgICAgICAgICAgICAgICAgICAgYmFzZV90eXBlOjpyZWFkKHBlZWssIHMgKyByZXN1bHQsIG4gLSByZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYW10ICE9IC0xKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gYW10OwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFtdCA8IG4gLSByZXN1bHQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwZWVrLnB1dGJhY2sodGhpcy0+dW5jb25zdW1lZF9pbnB1dCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlXyA9IHNfZm9vdGVyOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBjYXRjaCAoY29uc3QgemxpYl9lcnJvciYgZSkgewotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGd6aXBfZXJyb3IoZSkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7IC8vIHN0YXRlXyA9PSBzX2Zvb3RlcgotICAgICAgICAgICAgICAgIGludCBjID0gbmRuYm9vc3Q6Omlvc3RyZWFtczo6Z2V0KHBlZWspOwotICAgICAgICAgICAgICAgIGlmICh0cmFpdHNfdHlwZTo6aXNfZW9mKGMpKSB7Ci0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oZ3ppcF9lcnJvcihnemlwOjpiYWRfZm9vdGVyKSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0cmFpdHNfdHlwZTo6d291bGRfYmxvY2soYykpIHsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGZvb3Rlcl8ucHJvY2VzcyhjKTsKLSAgICAgICAgICAgICAgICBpZiAoZm9vdGVyXy5kb25lKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGZvb3Rlcl8uY3JjKCkgIT0gdGhpcy0+Y3JjKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGd6aXBfZXJyb3IoZ3ppcDo6YmFkX2NyYykpOwotICAgICAgICAgICAgICAgICAgICBpbnQgYyA9IG5kbmJvb3N0Ojppb3N0cmVhbXM6OmdldChwZWVrKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRyYWl0c190eXBlOjppc19lb2YoYykpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlXyA9IHNfZG9uZTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHBlZWsucHV0YmFjayhjKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VfdHlwZTo6Y2xvc2UocGVlaywgTkROQk9PU1RfSU9TOjppbik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZV8gPSBzX3N0YXJ0OwotICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyXy5yZXNldCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgZm9vdGVyXy5yZXNldCgpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmIChwZWVrLmhhc191bmNvbnN1bWVkX2lucHV0KCkpIHsKLSAgICAgICAgICAgIHB1dGJhY2tfID0gcGVlay51bmNvbnN1bWVkX2lucHV0KCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwdXRiYWNrXy5jbGVhcigpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiByZXN1bHQgIT0gMCB8fCBzdGF0ZV8gIT0gc19kb25lID8KLSAgICAgICAgICAgIHJlc3VsdCA6Ci0gICAgICAgICAgICAtMTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2U+Ci0gICAgdm9pZCBjbG9zZShTb3VyY2UmIHNyYywgTkROQk9PU1RfSU9TOjpvcGVubW9kZSBtKQotICAgIHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGJhc2VfdHlwZTo6Y2xvc2Uoc3JjLCBtKTsKLSAgICAgICAgfSBjYXRjaCAoY29uc3QgemxpYl9lcnJvciYgZSkgewotICAgICAgICAgICAgc3RhdGVfID0gc19zdGFydDsKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oZ3ppcF9lcnJvcihlKSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG0gPT0gTkROQk9PU1RfSU9TOjpvdXQpIHsKLSAgICAgICAgICAgIGlmIChzdGF0ZV8gPT0gc19zdGFydCB8fCBzdGF0ZV8gPT0gc19oZWFkZXIpCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihnemlwX2Vycm9yKGd6aXA6OmJhZF9oZWFkZXIpKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHN0YXRlXyA9PSBzX2JvZHkpCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihnemlwX2Vycm9yKGd6aXA6OmJhZF9mb290ZXIpKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHN0YXRlXyA9PSBzX2Zvb3RlcikgewotICAgICAgICAgICAgICAgIGlmICghZm9vdGVyXy5kb25lKCkpCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oZ3ppcF9lcnJvcihnemlwOjpiYWRfZm9vdGVyKSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZihmb290ZXJfLmNyYygpICE9IHRoaXMtPmNyYygpKQotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGd6aXBfZXJyb3IoZ3ppcDo6YmFkX2NyYykpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9BU1NFUlQoISJCYWQgc3RhdGUiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBzdGF0ZV8gPSBzX3N0YXJ0OwotICAgIH0KLQotICAgIHN0ZDo6c3RyaW5nIGZpbGVfbmFtZSgpIGNvbnN0IHsgcmV0dXJuIGhlYWRlcl8uZmlsZV9uYW1lKCk7IH0KLSAgICBzdGQ6OnN0cmluZyBjb21tZW50KCkgY29uc3QgeyByZXR1cm4gaGVhZGVyXy5jb21tZW50KCk7IH0KLSAgICBib29sIHRleHQoKSBjb25zdCB7IHJldHVybiBoZWFkZXJfLnRleHQoKTsgfQotICAgIGludCBvcygpIGNvbnN0IHsgcmV0dXJuIGhlYWRlcl8ub3MoKTsgfQotICAgIHN0ZDo6dGltZV90IG10aW1lKCkgY29uc3QgeyByZXR1cm4gaGVhZGVyXy5tdGltZSgpOyB9Ci1wcml2YXRlOgotICAgIHN0YXRpYyBnemlwX3BhcmFtcyBtYWtlX3BhcmFtcyhpbnQgd2luZG93X2JpdHMpOwotCi0gICAgLy8gU291cmNlIGFkYXB0ZXIgYWxsb3dpbmcgYW4gYXJiaXRyYXJ5IGNoYXJhY3RlciBzZXF1ZW5jZSB0byBiZSBwdXQgYmFjay4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2U+Ci0gICAgc3RydWN0IHBlZWthYmxlX3NvdXJjZSB7Ci0gICAgICAgIHR5cGVkZWYgY2hhciBjaGFyX3R5cGU7Ci0gICAgICAgIHN0cnVjdCBjYXRlZ29yeSA6IHNvdXJjZV90YWcsIHBlZWthYmxlX3RhZyB7IH07Ci0gICAgICAgIGV4cGxpY2l0IHBlZWthYmxlX3NvdXJjZShTb3VyY2UmIHNyYywgY29uc3Qgc3RyaW5nX3R5cGUmIHB1dGJhY2sgPSAiIikgCi0gICAgICAgICAgICA6IHNyY18oc3JjKSwgcHV0YmFja18ocHV0YmFjayksIG9mZnNldF8oMCkKLSAgICAgICAgICAgIHsgfQotICAgICAgICBzdGQ6OnN0cmVhbXNpemUgcmVhZChjaGFyKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICAgICAgewotICAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplIHJlc3VsdCA9IDA7Ci0KLSAgICAgICAgICAgIC8vIENvcHkgY2hhcmFjdGVycyBmcm9tIHB1dGJhY2sgYnVmZmVyCi0gICAgICAgICAgICBzdGQ6OnN0cmVhbXNpemUgcGJzaXplID0gCi0gICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPihwdXRiYWNrXy5zaXplKCkpOwotICAgICAgICAgICAgaWYgKG9mZnNldF8gPCBwYnNpemUpIHsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSAoc3RkOjptaW4pKG4sIHBic2l6ZSAtIG9mZnNldF8pOwotICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19DSEFSX1RSQUlUUyhjaGFyKTo6Y29weSgKLSAgICAgICAgICAgICAgICAgICAgcywgcHV0YmFja18uZGF0YSgpICsgb2Zmc2V0XywgcmVzdWx0KTsKLSAgICAgICAgICAgICAgICBvZmZzZXRfICs9IHJlc3VsdDsKLSAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IG4pCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIFJlYWQgY2hhcmFjdGVycyBmcm9tIHNyY18KLSAgICAgICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBhbXQgPSAKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6aW9zdHJlYW1zOjpyZWFkKHNyY18sIHMgKyByZXN1bHQsIG4gLSByZXN1bHQpOwotICAgICAgICAgICAgcmV0dXJuIGFtdCAhPSAtMSA/IAotICAgICAgICAgICAgICAgIHJlc3VsdCArIGFtdCA6IAotICAgICAgICAgICAgICAgIHJlc3VsdCA/IHJlc3VsdCA6IC0xOwotICAgICAgICB9Ci0gICAgICAgIGJvb2wgcHV0YmFjayhjaGFyIGMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChvZmZzZXRfKSB7Ci0gICAgICAgICAgICAgICAgcHV0YmFja19bLS1vZmZzZXRfXSA9IGM7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppb3N0cmVhbXM6OmRldGFpbDo6YmFkX3B1dGJhY2soKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICB2b2lkIHB1dGJhY2soY29uc3Qgc3RyaW5nX3R5cGUmIHMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHB1dGJhY2tfLnJlcGxhY2UoMCwgb2Zmc2V0Xywgcyk7Ci0gICAgICAgICAgICBvZmZzZXRfID0gMDsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBzb21lIGNoYXJhY3RlcnMgaGF2ZSBiZWVuIHB1dGJhY2sgYnV0IG5vdCByZS1yZWFkLgotICAgICAgICBib29sIGhhc191bmNvbnN1bWVkX2lucHV0KCkgY29uc3QgCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBvZmZzZXRfIDwgc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPihwdXRiYWNrXy5zaXplKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gUmV0dXJucyB0aGUgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyB0aGF0IGhhdmUgYmVlbiBwdXQgYmFjayBidXQgbm90IHJlLXJlYWQuCi0gICAgICAgIHN0cmluZ190eXBlIHVuY29uc3VtZWRfaW5wdXQoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RyaW5nX3R5cGUocHV0YmFja18sIG9mZnNldF8sIHB1dGJhY2tfLnNpemUoKSAtIG9mZnNldF8pOwotICAgICAgICB9Ci0gICAgICAgIFNvdXJjZSYgICAgICAgICAgc3JjXzsKLSAgICAgICAgc3RyaW5nX3R5cGUgICAgICBwdXRiYWNrXzsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplICBvZmZzZXRfOwotICAgIH07Ci0KLSAgICBlbnVtIHN0YXRlX3R5cGUgewotICAgICAgICBzX3N0YXJ0ICAgPSAxLAotICAgICAgICBzX2hlYWRlciAgPSBzX3N0YXJ0ICsgMSwKLSAgICAgICAgc19ib2R5ICAgID0gc19oZWFkZXIgKyAxLAotICAgICAgICBzX2Zvb3RlciAgPSBzX2JvZHkgKyAxLAotICAgICAgICBzX2RvbmUgICAgPSBzX2Zvb3RlciArIDEKLSAgICB9OwotICAgIGRldGFpbDo6Z3ppcF9oZWFkZXIgIGhlYWRlcl87Ci0gICAgZGV0YWlsOjpnemlwX2Zvb3RlciAgZm9vdGVyXzsKLSAgICBzdHJpbmdfdHlwZSAgICAgICAgICBwdXRiYWNrXzsKLSAgICBpbnQgICAgICAgICAgICAgICAgICBzdGF0ZV87Ci19OwotTkROQk9PU1RfSU9TVFJFQU1TX1BJUEFCTEUoYmFzaWNfZ3ppcF9kZWNvbXByZXNzb3IsIDEpCi0KLXR5cGVkZWYgYmFzaWNfZ3ppcF9kZWNvbXByZXNzb3I8PiBnemlwX2RlY29tcHJlc3NvcjsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiBnemlwX2NvbXByZXNzb3ItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+Ci1iYXNpY19nemlwX2NvbXByZXNzb3I8QWxsb2M+OjpiYXNpY19nemlwX2NvbXByZXNzb3IKLSAgICAoY29uc3QgZ3ppcF9wYXJhbXMmIHAsIGludCBidWZmZXJfc2l6ZSkKLSAgICA6IGJhc2VfdHlwZShub3JtYWxpemVfcGFyYW1zKHApLCBidWZmZXJfc2l6ZSksCi0gICAgICBvZmZzZXRfKDApLCBmbGFnc18oMCkKLXsKLSAgICAvLyBDYWxjdWxhdGUgZ3ppcCBoZWFkZXIuCi0gICAgYm9vbCBoYXNfbmFtZSA9ICFwLmZpbGVfbmFtZS5lbXB0eSgpOwotICAgIGJvb2wgaGFzX2NvbW1lbnQgPSAhcC5jb21tZW50LmVtcHR5KCk7Ci0KLSAgICBzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIGxlbmd0aCA9Ci0gICAgICAgIDEwICsKLSAgICAgICAgKGhhc19uYW1lID8gcC5maWxlX25hbWUuc2l6ZSgpICsgMSA6IDApICsKLSAgICAgICAgKGhhc19jb21tZW50ID8gcC5jb21tZW50LnNpemUoKSArIDEgOiAwKTsKLSAgICAgICAgLy8gKyAyOyAvLyBIZWFkZXIgY3JjIGNvbmZ1c2VzIGd1bnppcC4KLSAgICBpbnQgZmxhZ3MgPQotICAgICAgICAvL2d6aXA6OmZsYWdzOjpoZWFkZXJfY3JjICsKLSAgICAgICAgKGhhc19uYW1lID8gZ3ppcDo6ZmxhZ3M6Om5hbWUgOiAwKSArCi0gICAgICAgIChoYXNfY29tbWVudCA/IGd6aXA6OmZsYWdzOjpjb21tZW50IDogMCk7Ci0gICAgaW50IGV4dHJhX2ZsYWdzID0KLSAgICAgICAgKCBwLmxldmVsID09IHpsaWI6OmJlc3RfY29tcHJlc3Npb24gPwotICAgICAgICAgICAgICBnemlwOjpleHRyYV9mbGFnczo6YmVzdF9jb21wcmVzc2lvbiA6Ci0gICAgICAgICAgICAgIDAgKSArCi0gICAgICAgICggcC5sZXZlbCA9PSB6bGliOjpiZXN0X3NwZWVkID8KLSAgICAgICAgICAgICAgZ3ppcDo6ZXh0cmFfZmxhZ3M6OmJlc3Rfc3BlZWQgOgotICAgICAgICAgICAgICAwICk7Ci0gICAgaGVhZGVyXy5yZXNlcnZlKGxlbmd0aCk7Ci0gICAgaGVhZGVyXyArPSBnemlwOjptYWdpYzo6aWQxOyAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJRDEuCi0gICAgaGVhZGVyXyArPSBnemlwOjptYWdpYzo6aWQyOyAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJRDIuCi0gICAgaGVhZGVyXyArPSBnemlwOjptZXRob2Q6OmRlZmxhdGU7ICAgICAgICAgICAgICAgICAgICAvLyBDTS4KLSAgICBoZWFkZXJfICs9IHN0YXRpY19jYXN0PGNoYXI+KGZsYWdzKTsgICAgICAgICAgICAgICAgIC8vIEZMRy4KLSAgICBoZWFkZXJfICs9IHN0YXRpY19jYXN0PGNoYXI+KDB4RkYgJiBwLm10aW1lKTsgICAgICAgIC8vIE1USU1FLgotICAgIGhlYWRlcl8gKz0gc3RhdGljX2Nhc3Q8Y2hhcj4oMHhGRiAmIChwLm10aW1lID4+IDgpKTsKLSAgICBoZWFkZXJfICs9IHN0YXRpY19jYXN0PGNoYXI+KDB4RkYgJiAocC5tdGltZSA+PiAxNikpOwotICAgIGhlYWRlcl8gKz0gc3RhdGljX2Nhc3Q8Y2hhcj4oMHhGRiAmIChwLm10aW1lID4+IDI0KSk7Ci0gICAgaGVhZGVyXyArPSBzdGF0aWNfY2FzdDxjaGFyPihleHRyYV9mbGFncyk7ICAgICAgICAgICAvLyBYRkwuCi0gICAgaGVhZGVyXyArPSBzdGF0aWNfY2FzdDxjaGFyPihnemlwOjpvc191bmtub3duKTsgICAgICAvLyBPUy4KLSAgICBpZiAoaGFzX25hbWUpIHsKLSAgICAgICAgaGVhZGVyXyArPSBwLmZpbGVfbmFtZTsKLSAgICAgICAgaGVhZGVyXyArPSAnXDAnOwotICAgIH0KLSAgICBpZiAoaGFzX2NvbW1lbnQpIHsKLSAgICAgICAgaGVhZGVyXyArPSBwLmNvbW1lbnQ7Ci0gICAgICAgIGhlYWRlcl8gKz0gJ1wwJzsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jPgotZ3ppcF9wYXJhbXMgYmFzaWNfZ3ppcF9jb21wcmVzc29yPEFsbG9jPjo6bm9ybWFsaXplX3BhcmFtcyhnemlwX3BhcmFtcyBwKQotewotICAgIHAubm9oZWFkZXIgPSB0cnVlOwotICAgIHAuY2FsY3VsYXRlX2NyYyA9IHRydWU7Ci0gICAgcmV0dXJuIHA7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jPgotdm9pZCBiYXNpY19nemlwX2NvbXByZXNzb3I8QWxsb2M+OjpwcmVwYXJlX2Zvb3RlcigpCi17Ci0gICAgbmRuYm9vc3Q6Omlvc3RyZWFtczo6YmFja19pbnNlcnRfZGV2aWNlPHN0ZDo6c3RyaW5nPiBvdXQoZm9vdGVyXyk7Ci0gICAgd3JpdGVfbG9uZyh0aGlzLT5jcmMoKSwgb3V0KTsKLSAgICB3cml0ZV9sb25nKHRoaXMtPnRvdGFsX2luKCksIG91dCk7Ci0gICAgZmxhZ3NfIHw9IGZfYm9keV9kb25lOwotICAgIG9mZnNldF8gPSAwOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4KLXN0ZDo6c3RyZWFtc2l6ZSBiYXNpY19nemlwX2NvbXByZXNzb3I8QWxsb2M+OjpyZWFkX3N0cmluZwotICAgIChjaGFyKiBzLCBzdGQ6OnN0cmVhbXNpemUgbiwgc3RkOjpzdHJpbmcmIHN0cikKLXsKLSAgICBzdGQ6OnN0cmVhbXNpemUgYXZhaWwgPQotICAgICAgICBzdGF0aWNfY2FzdDxzdGQ6OnN0cmVhbXNpemU+KHN0ci5zaXplKCkgLSBvZmZzZXRfKTsKLSAgICBzdGQ6OnN0cmVhbXNpemUgYW10ID0gKHN0ZDo6bWluKShhdmFpbCwgbik7Ci0gICAgc3RkOjpjb3B5KCBzdHIuZGF0YSgpICsgb2Zmc2V0XywKLSAgICAgICAgICAgICAgIHN0ci5kYXRhKCkgKyBvZmZzZXRfICsgYW10LAotICAgICAgICAgICAgICAgcyApOwotICAgIG9mZnNldF8gKz0gYW10OwotICAgIGlmICggIShmbGFnc18gJiBmX2hlYWRlcl9kb25lKSAmJgotICAgICAgICAgb2Zmc2V0XyA9PSBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oc3RyLnNpemUoKSkgKQotICAgIHsKLSAgICAgICAgZmxhZ3NfIHw9IGZfaGVhZGVyX2RvbmU7Ci0gICAgfQotICAgIHJldHVybiBhbXQ7Ci19Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tSW1wbGVtZW50YXRpb24gb2YgZ3ppcF9kZWNvbXByZXNzb3ItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jPgotYmFzaWNfZ3ppcF9kZWNvbXByZXNzb3I8QWxsb2M+OjpiYXNpY19nemlwX2RlY29tcHJlc3NvcgotICAgIChpbnQgd2luZG93X2JpdHMsIGludCBidWZmZXJfc2l6ZSkKLSAgICA6IGJhc2VfdHlwZShtYWtlX3BhcmFtcyh3aW5kb3dfYml0cyksIGJ1ZmZlcl9zaXplKSwKLSAgICAgIHN0YXRlXyhzX3N0YXJ0KQotICAgIHsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4KLWd6aXBfcGFyYW1zIGJhc2ljX2d6aXBfZGVjb21wcmVzc29yPEFsbG9jPjo6bWFrZV9wYXJhbXMoaW50IHdpbmRvd19iaXRzKQotewotICAgIGd6aXBfcGFyYW1zIHA7Ci0gICAgcC53aW5kb3dfYml0cyA9IHdpbmRvd19iaXRzOwotICAgIHAubm9oZWFkZXIgPSB0cnVlOwotICAgIHAuY2FsY3VsYXRlX2NyYyA9IHRydWU7Ci0gICAgcmV0dXJuIHA7Ci19Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotIyBwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0daSVBfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9maWx0ZXIvbGluZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9maWx0ZXIvbGluZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4Mzk5YjMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL2xpbmUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjI3ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDA1LTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19MSU5FX0ZJTFRFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0xJTkVfRklMVEVSX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPGFsZ29yaXRobT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWluLgotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bWVtb3J5PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbGxvY2F0b3IuCi0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAgICAgICAgICAgICAgICAgICAgICAgLy8gTkROQk9PU1RfU1RBVElDX0NPTlNUQU5ULgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jYXRlZ29yaWVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2hlY2tlZF9vcGVyYXRpb25zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvcy5ocHA+ICAgICAgICAgIC8vIG9wZW5tb2RlLCBzdHJlYW1zaXplLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9yZWFkLmhwcD4gICAgICAgICAgICAgICAgLy8gY2hlY2tfZW9mIAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9waXBlbGluZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3dyaXRlLmhwcD4KLQotLy8gTXVzdCBjb21lIGxhc3QuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZGlzYWJsZV93YXJuaW5ncy5ocHA+IC8vIFZDNy4xIEM0MjQ0LgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotLy8KLS8vIFRlbXBsYXRlIG5hbWU6IGxpbmVfZmlsdGVyLgotLy8gVGVtcGxhdGUgcGFyYW1ldGVyczoKLS8vICAgICAgQ2ggLSBUaGUgY2hhcmFjdGVyIHR5cGUuCi0vLyAgICAgIEFsbG9jIC0gVGhlIGFsbG9jYXRvciB0eXBlLgotLy8gRGVzY3JpcHRpb246IEZpbHRlciB3aGljaCBwcm9jZXNzZXMgZGF0YSBvbmUgbGluZSBhdCBhIHRpbWUuCi0vLwotdGVtcGxhdGU8IHR5cGVuYW1lIENoLAotICAgICAgICAgIHR5cGVuYW1lIEFsbG9jID0KLSAgICAgICAgICAjaWYgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPCAzKQotICAgICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OmJhc2ljX3N0cmluZzxDaD46OmFsbG9jYXRvcl90eXBlCi0gICAgICAgICAgI2Vsc2UKLSAgICAgICAgICAgICAgc3RkOjphbGxvY2F0b3I8Q2g+Ci0gICAgICAgICAgI2VuZGlmCi0gICAgICAgICAgPgotY2xhc3MgYmFzaWNfbGluZV9maWx0ZXIgewotcHJpdmF0ZToKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6YmFzaWNfc3RyaW5nPENoPjo6dHJhaXRzX3R5cGUgIHN0cmluZ190cmFpdHM7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBDaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyX3R5cGU7Ci0gICAgdHlwZWRlZiBjaGFyX3RyYWl0czxjaGFyX3R5cGU+ICAgICAgICAgICAgICAgICAgICAgICB0cmFpdHNfdHlwZTsKLSAgICB0eXBlZGVmIHN0ZDo6YmFzaWNfc3RyaW5nPAotICAgICAgICAgICAgICAgIENoLAotICAgICAgICAgICAgICAgIHN0cmluZ190cmFpdHMsCi0gICAgICAgICAgICAgICAgQWxsb2MKLSAgICAgICAgICAgID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ190eXBlOwotICAgIHN0cnVjdCBjYXRlZ29yeQotICAgICAgICA6IGR1YWxfdXNlLAotICAgICAgICAgIGZpbHRlcl90YWcsCi0gICAgICAgICAgbXVsdGljaGFyX3RhZywKLSAgICAgICAgICBjbG9zYWJsZV90YWcKLSAgICAgICAgeyB9OwotcHJvdGVjdGVkOgotICAgIGJhc2ljX2xpbmVfZmlsdGVyKGJvb2wgc3VwcHJlc3NfbmV3bGluZXMgPSBmYWxzZSkgCi0gICAgICAgIDogcG9zXyhzdHJpbmdfdHlwZTo6bnBvcyksIAotICAgICAgICAgIGZsYWdzXyhzdXBwcmVzc19uZXdsaW5lcyA/IGZfc3VwcHJlc3MgOiAwKSAKLSAgICAgICAgeyB9Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+YmFzaWNfbGluZV9maWx0ZXIoKSB7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZT4KLSAgICBzdGQ6OnN0cmVhbXNpemUgcmVhZChTb3VyY2UmIHNyYywgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7Ci0gICAgICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVCghKGZsYWdzXyAmIGZfd3JpdGUpKTsKLSAgICAgICAgZmxhZ3NfIHw9IGZfcmVhZDsKLQotICAgICAgICAvLyBIYW5kbGUgdW5maW5pc2hlZCBidXNpbmVzcy4KLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIHJlc3VsdCA9IDA7Ci0gICAgICAgIGlmICghY3VyX2xpbmVfLmVtcHR5KCkgJiYgKHJlc3VsdCA9IHJlYWRfbGluZShzLCBuKSkgPT0gbikKLSAgICAgICAgICAgIHJldHVybiBuOwotCi0gICAgICAgIHR5cGVuYW1lIHRyYWl0c190eXBlOjppbnRfdHlwZSBzdGF0dXMgPSB0cmFpdHNfdHlwZTo6Z29vZCgpOwotICAgICAgICB3aGlsZSAocmVzdWx0IDwgbiAmJiAhdHJhaXRzX3R5cGU6OmlzX2VvZihzdGF0dXMpKSB7Ci0KLSAgICAgICAgICAgIC8vIENhbGwgbmV4dF9saW5lKCkgdG8gcmV0cmlldmUgYSBsaW5lIG9mIGZpbHRlcmVkIHRleHQsIGFuZAotICAgICAgICAgICAgLy8gcmVhZF9saW5lKCkgdG8gY29weSBpdCBpbnRvIGJ1ZmZlciBzLgotICAgICAgICAgICAgaWYgKHRyYWl0c190eXBlOjp3b3VsZF9ibG9jayhzdGF0dXMgPSBuZXh0X2xpbmUoc3JjKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgICAgIHJlc3VsdCArPSByZWFkX2xpbmUocyArIHJlc3VsdCwgbiAtIHJlc3VsdCk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZGV0YWlsOjpjaGVja19lb2YocmVzdWx0KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgIHN0ZDo6c3RyZWFtc2l6ZSB3cml0ZShTaW5rJiBzbmssIGNvbnN0IGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgewotICAgICAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgICAgICBORE5CT09TVF9BU1NFUlQoIShmbGFnc18gJiBmX3JlYWQpKTsKLSAgICAgICAgZmxhZ3NfIHw9IGZfd3JpdGU7Ci0KLSAgICAgICAgLy8gSGFuZGxlIHVuZmluaXNoZWQgYnVzaW5lc3MuCi0gICAgICAgIGlmIChwb3NfICE9IHN0cmluZ190eXBlOjpucG9zICYmICF3cml0ZV9saW5lKHNuaykpCi0gICAgICAgICAgICByZXR1cm4gMDsKLQotICAgICAgICBjb25zdCBjaGFyX3R5cGUgKmN1ciA9IHMsICpuZXh0OwotICAgICAgICB3aGlsZSAodHJ1ZSkgewotCi0gICAgICAgICAgICAvLyBTZWFyY2ggZm9yIHRoZSBuZXh0IGZ1bGwgbGluZSBpbiBbY3VyLCBzICsgbiksIGZpbHRlciBpdAotICAgICAgICAgICAgLy8gYW5kIHdyaXRlIGl0IHRvIHNuay4KLSAgICAgICAgICAgIHR5cGVuYW1lIHN0cmluZ190eXBlOjpzaXplX3R5cGUgcmVzdCA9IG4gLSAoY3VyIC0gcyk7Ci0gICAgICAgICAgICBpZiAoKG5leHQgPSB0cmFpdHNfdHlwZTo6ZmluZChjdXIsIHJlc3QsIHRyYWl0c190eXBlOjpuZXdsaW5lKCkpKSkgewotICAgICAgICAgICAgICAgIGN1cl9saW5lXy5hcHBlbmQoY3VyLCBuZXh0IC0gY3VyKTsKLSAgICAgICAgICAgICAgICBjdXIgPSBuZXh0ICsgMTsKLSAgICAgICAgICAgICAgICBpZiAoIXdyaXRlX2xpbmUoc25rKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3RyZWFtc2l6ZT4oY3VyIC0gcyk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGN1cl9saW5lXy5hcHBlbmQoY3VyLCByZXN0KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpbms+Ci0gICAgdm9pZCBjbG9zZShTaW5rJiBzbmssIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpCi0gICAgewotICAgICAgICBpZiAoKGZsYWdzXyAmIGZfcmVhZCkgJiYgd2hpY2ggPT0gTkROQk9PU1RfSU9TOjppbikKLSAgICAgICAgICAgIGNsb3NlX2ltcGwoKTsKLQotICAgICAgICBpZiAoKGZsYWdzXyAmIGZfd3JpdGUpICYmIHdoaWNoID09IE5ETkJPT1NUX0lPUzo6b3V0KSB7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGlmICghY3VyX2xpbmVfLmVtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIHdyaXRlX2xpbmUoc25rKTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKC4uLikgewotICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIGNsb3NlX2ltcGwoKTsKLSAgICAgICAgICAgICAgICB9IGNhdGNoICguLi4pIHsgfQotICAgICAgICAgICAgICAgIHRocm93OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2xvc2VfaW1wbCgpOwotICAgICAgICB9Ci0gICAgfQotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHN0cmluZ190eXBlIGRvX2ZpbHRlcihjb25zdCBzdHJpbmdfdHlwZSYgbGluZSkgPSAwOwotCi0gICAgLy8gQ29waWVzIGZpbHRlcmVkIGNoYXJhY3RlcnMgZnJvbiB0aGUgY3VycmVudCBsaW5lIGludG8KLSAgICAvLyB0aGUgZ2l2ZW4gYnVmZmVyLgotICAgIHN0ZDo6c3RyZWFtc2l6ZSByZWFkX2xpbmUoY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7Ci0gICAgICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSByZXN1bHQgPQotICAgICAgICAgICAgKHN0ZDo6bWluKSAobiwgc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPihjdXJfbGluZV8uc2l6ZSgpKSk7Ci0gICAgICAgIHRyYWl0c190eXBlOjpjb3B5KHMsIGN1cl9saW5lXy5kYXRhKCksIHJlc3VsdCk7Ci0gICAgICAgIGN1cl9saW5lXy5lcmFzZSgwLCByZXN1bHQpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIC8vIEF0dGVtcHRzIHRvIHJldHJpZXZlIGEgbGluZSBvZiB0ZXh0IGZyb20gdGhlIGdpdmVuIHNvdXJjZTsgcmV0dXJucwotICAgIC8vIGFuIGludF90eXBlIGFzIGEgZ29vZC9lb2Yvd291bGRfYmxvY2sgc3RhdHVzIGNvZGUuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlPgotICAgIHR5cGVuYW1lIHRyYWl0c190eXBlOjppbnRfdHlwZSBuZXh0X2xpbmUoU291cmNlJiBzcmMpCi0gICAgewotICAgICAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgICAgICB0eXBlbmFtZSB0cmFpdHNfdHlwZTo6aW50X3R5cGUgYzsKLSAgICAgICAgd2hpbGUgKCB0cmFpdHNfdHlwZTo6aXNfZ29vZChjID0gaW9zdHJlYW1zOjpnZXQoc3JjKSkgJiYKLSAgICAgICAgICAgICAgICBjICE9IHRyYWl0c190eXBlOjpuZXdsaW5lKCkgKQotICAgICAgICB7Ci0gICAgICAgICAgICBjdXJfbGluZV8gKz0gdHJhaXRzX3R5cGU6OnRvX2ludF90eXBlKGMpOwotICAgICAgICB9Ci0gICAgICAgIGlmICghdHJhaXRzX3R5cGU6OndvdWxkX2Jsb2NrKGMpKSB7Ci0gICAgICAgICAgICBpZiAoIWN1cl9saW5lXy5lbXB0eSgpIHx8IGMgPT0gdHJhaXRzX3R5cGU6Om5ld2xpbmUoKSkKLSAgICAgICAgICAgICAgICBjdXJfbGluZV8gPSBkb19maWx0ZXIoY3VyX2xpbmVfKTsKLSAgICAgICAgICAgIGlmIChjID09IHRyYWl0c190eXBlOjpuZXdsaW5lKCkgJiYgKGZsYWdzXyAmIGZfc3VwcHJlc3MpID09IDApCi0gICAgICAgICAgICAgICAgY3VyX2xpbmVfICs9IGM7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGM7IC8vIHN0YXR1cyBpbmRpY2F0b3IuCi0gICAgfQotCi0gICAgLy8gRmlsdGVycyB0aGUgY3VycmVudCBsaW5lIGFuZCBhdHRlbXBzIHRvIHdyaXRlIGl0IHRvIHRoZSBnaXZlbiBzaW5rLgotICAgIC8vIFJldHVybnMgdHJ1ZSBmb3Igc3VjY2Vzcy4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgIGJvb2wgd3JpdGVfbGluZShTaW5rJiBzbmspCi0gICAgewotICAgICAgICBzdHJpbmdfdHlwZSBsaW5lID0gZG9fZmlsdGVyKGN1cl9saW5lXyk7Ci0gICAgICAgIGlmICgoZmxhZ3NfICYgZl9zdXBwcmVzcykgPT0gMCkKLSAgICAgICAgICAgIGxpbmUgKz0gdHJhaXRzX3R5cGU6Om5ld2xpbmUoKTsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIGFtdCA9IHN0YXRpY19jYXN0PHN0ZDo6c3RyZWFtc2l6ZT4obGluZS5zaXplKCkpOwotICAgICAgICBib29sIHJlc3VsdCA9IGlvc3RyZWFtczo6d3JpdGVfaWYoc25rLCBsaW5lLmRhdGEoKSwgYW10KSA9PSBhbXQ7Ci0gICAgICAgIGlmIChyZXN1bHQpCi0gICAgICAgICAgICBjbGVhcigpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIHZvaWQgY2xvc2VfaW1wbCgpCi0gICAgewotICAgICAgICBjbGVhcigpOwotICAgICAgICBmbGFnc18gJj0gZl9zdXBwcmVzczsKLSAgICB9Ci0KLSAgICB2b2lkIGNsZWFyKCkKLSAgICB7Ci0gICAgICAgIGN1cl9saW5lXy5lcmFzZSgpOwotICAgICAgICBwb3NfID0gc3RyaW5nX3R5cGU6Om5wb3M7Ci0gICAgfQotCi0gICAgZW51bSBmbGFnX3R5cGUgewotICAgICAgICBmX3JlYWQgICAgICA9IDEsCi0gICAgICAgIGZfd3JpdGUgICAgID0gZl9yZWFkIDw8IDEsCi0gICAgICAgIGZfc3VwcHJlc3MgID0gZl93cml0ZSA8PCAxCi0gICAgfTsKLQotICAgIHN0cmluZ190eXBlICAgICAgICAgICAgICAgICAgICAgIGN1cl9saW5lXzsKLSAgICB0eXBlbmFtZSBzdHJpbmdfdHlwZTo6c2l6ZV90eXBlICBwb3NfOwotICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzXzsKLX07Ci1ORE5CT09TVF9JT1NUUkVBTVNfUElQQUJMRShiYXNpY19saW5lX2ZpbHRlciwgMikKLQotdHlwZWRlZiBiYXNpY19saW5lX2ZpbHRlcjxjaGFyPiAgICAgbGluZV9maWx0ZXI7Ci10eXBlZGVmIGJhc2ljX2xpbmVfZmlsdGVyPHdjaGFyX3Q+ICB3bGluZV9maWx0ZXI7Ci0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0xJTkVfRklMVEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL25ld2xpbmUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL25ld2xpbmUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNDdhNWVmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci9uZXdsaW5lLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ0MiArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gTk9URTogSSBob3BlIHRvIHJlcGxhY2UgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gd2l0aCBhIG11Y2ggc2ltcGxlcgotLy8gb25lLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ORVdMSU5FX0ZJTFRFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX05FV0xJTkVfRklMVEVSX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8Y3N0ZGlvPgotI2luY2x1ZGUgPHN0ZGV4Y2VwdD4gICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljX2Vycm9yLgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAgICAgICAgICAgICAgIC8vIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2F0ZWdvcmllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jaGFyX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3MuaHBwPiAgLy8gTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUgCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3JlYWQuaHBwPiAgICAgICAgLy8gZ2V0IAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy93cml0ZS5ocHA+ICAgICAgIC8vIHB1dCAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvcGlwZWxpbmUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9wdXRiYWNrLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGhyb3dfZXhjZXB0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+Ci0KLS8vIE11c3QgY29tZSBsYXN0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2Rpc2FibGVfd2FybmluZ3MuaHBwPgotCi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19BU1NFUlRfVU5SRUFDSEFCTEUodmFsKSBcCi0gICAgKE5ETkJPT1NUX0FTU0VSVCgidW5yZWFjaGFibGUgY29kZSIgPT0gMCksIHZhbCkgXAotICAgIC8qKi8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLW5hbWVzcGFjZSBuZXdsaW5lIHsKLQotY29uc3QgY2hhciBDUiAgICAgICAgICAgICAgICAgICA9IDB4MEQ7Ci1jb25zdCBjaGFyIExGICAgICAgICAgICAgICAgICAgID0gMHgwQTsKLQotICAgIC8vIEZsYWdzIGZvciBjb25maWd1cmluZyBuZXdsaW5lX2ZpbHRlci4KLQotLy8gRXhhY3RseSBvbmUgb2YgdGhlIGZvbGxvd2luZyB0aHJlZSBmbGFncyBtdXN0IGJlIHByZXNlbnQuCi0KLWNvbnN0IGludCBwb3NpeCAgICAgICAgICAgICA9IDE7ICAgIC8vIFVzZSBDUiBhcyBsaW5lIHNlcGFyYXRvci4KLWNvbnN0IGludCBtYWMgICAgICAgICAgICAgICA9IDI7ICAgIC8vIFVzZSBMRiBhcyBsaW5lIHNlcGFyYXRvci4KLWNvbnN0IGludCBkb3MgICAgICAgICAgICAgICA9IDQ7ICAgIC8vIFVzZSBDUkxGIGFzIGxpbmUgc2VwYXJhdG9yLgotY29uc3QgaW50IG1peGVkICAgICAgICAgICAgID0gODsgICAgLy8gTWl4ZWQgbGluZSBlbmRpbmdzLgotY29uc3QgaW50IGZpbmFsX25ld2xpbmUgICAgID0gMTY7Ci1jb25zdCBpbnQgcGxhdGZvcm1fbWFzayAgICAgPSBwb3NpeCB8IGRvcyB8IG1hYzsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIG5ld2xpbmUuCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi1jbGFzcyBuZXdsaW5lX2Jhc2UgewotcHVibGljOgotICAgIGJvb2wgaXNfcG9zaXgoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICFpc19taXhlZCgpICYmIChmbGFnc18gJiBuZXdsaW5lOjpwb3NpeCkgIT0gMDsKLSAgICB9Ci0gICAgYm9vbCBpc19kb3MoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICFpc19taXhlZCgpICYmIChmbGFnc18gJiBuZXdsaW5lOjpkb3MpICE9IDA7Ci0gICAgfQotICAgIGJvb2wgaXNfbWFjKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhaXNfbWl4ZWQoKSAmJiAoZmxhZ3NfICYgbmV3bGluZTo6bWFjKSAhPSAwOwotICAgIH0KLSAgICBib29sIGlzX21peGVkX3Bvc2l4KCkgY29uc3QgeyByZXR1cm4gKGZsYWdzXyAmIG5ld2xpbmU6OnBvc2l4KSAhPSAwOyB9Ci0gICAgYm9vbCBpc19taXhlZF9kb3MoKSBjb25zdCB7IHJldHVybiAoZmxhZ3NfICYgbmV3bGluZTo6ZG9zKSAhPSAwOyB9Ci0gICAgYm9vbCBpc19taXhlZF9tYWMoKSBjb25zdCB7IHJldHVybiAoZmxhZ3NfICYgbmV3bGluZTo6bWFjKSAhPSAwOyB9Ci0gICAgYm9vbCBpc19taXhlZCgpIGNvbnN0Ci0gICAgewotICAgICAgICBpbnQgcGxhdGZvcm0gPQotICAgICAgICAgICAgKGZsYWdzXyAmIG5ld2xpbmU6OnBvc2l4KSAhPSAwID8KLSAgICAgICAgICAgICAgICBuZXdsaW5lOjpwb3NpeCA6Ci0gICAgICAgICAgICAgICAgKGZsYWdzXyAmIG5ld2xpbmU6OmRvcykgIT0gMCA/Ci0gICAgICAgICAgICAgICAgICAgIG5ld2xpbmU6OmRvcyA6Ci0gICAgICAgICAgICAgICAgICAgIChmbGFnc18gJiBuZXdsaW5lOjptYWMpICE9IDAgPwotICAgICAgICAgICAgICAgICAgICAgICAgbmV3bGluZTo6bWFjIDoKLSAgICAgICAgICAgICAgICAgICAgICAgIDA7Ci0gICAgICAgIHJldHVybiAoZmxhZ3NfICYgfnBsYXRmb3JtICYgbmV3bGluZTo6cGxhdGZvcm1fbWFzaykgIT0gMDsKLSAgICB9Ci0gICAgYm9vbCBoYXNfZmluYWxfbmV3bGluZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gKGZsYWdzXyAmIG5ld2xpbmU6OmZpbmFsX25ld2xpbmUpICE9IDA7Ci0gICAgfQotcHJvdGVjdGVkOgotICAgIG5ld2xpbmVfYmFzZShpbnQgZmxhZ3MpIDogZmxhZ3NfKGZsYWdzKSB7IH0KLSAgICBpbnQgZmxhZ3NfOwotfTsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotY2xhc3MgbmV3bGluZV9lcnJvcgotICAgIDogcHVibGljIE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFLCBwdWJsaWMgZGV0YWlsOjpuZXdsaW5lX2Jhc2UKLXsKLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIG5ld2xpbmVfY2hlY2tlcjsKLSAgICBuZXdsaW5lX2Vycm9yKGludCBmbGFncykKLSAgICAgICAgOiBORE5CT09TVF9JT1NUUkVBTVNfRkFJTFVSRSgiYmFkIGxpbmUgZW5kaW5ncyIpLAotICAgICAgICAgIGRldGFpbDo6bmV3bGluZV9iYXNlKGZsYWdzKQotICAgICAgICB7IH0KLX07Ci0KLWNsYXNzIG5ld2xpbmVfZmlsdGVyIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIGNoYXIgY2hhcl90eXBlOwotICAgIHN0cnVjdCBjYXRlZ29yeQotICAgICAgICA6IGR1YWxfdXNlLAotICAgICAgICAgIGZpbHRlcl90YWcsCi0gICAgICAgICAgY2xvc2FibGVfdGFnCi0gICAgICAgIHsgfTsKLQotICAgIGV4cGxpY2l0IG5ld2xpbmVfZmlsdGVyKGludCB0YXJnZXQpIDogZmxhZ3NfKHRhcmdldCkKLSAgICB7Ci0gICAgICAgIGlmICggdGFyZ2V0ICE9IGlvc3RyZWFtczo6bmV3bGluZTo6cG9zaXggJiYKLSAgICAgICAgICAgICB0YXJnZXQgIT0gaW9zdHJlYW1zOjpuZXdsaW5lOjpkb3MgJiYKLSAgICAgICAgICAgICB0YXJnZXQgIT0gaW9zdHJlYW1zOjpuZXdsaW5lOjptYWMgKQotICAgICAgICB7Ci0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKHN0ZDo6bG9naWNfZXJyb3IoImJhZCBmbGFncyIpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZT4KLSAgICBpbnQgZ2V0KFNvdXJjZSYgc3JjKQotICAgIHsKLSAgICAgICAgdXNpbmcgaW9zdHJlYW1zOjpuZXdsaW5lOjpDUjsKLSAgICAgICAgdXNpbmcgaW9zdHJlYW1zOjpuZXdsaW5lOjpMRjsKLQotICAgICAgICBORE5CT09TVF9BU1NFUlQoKGZsYWdzXyAmIGZfd3JpdGUpID09IDApOwotICAgICAgICBmbGFnc18gfD0gZl9yZWFkOwotCi0gICAgICAgIGlmIChmbGFnc18gJiAoZl9oYXNfTEYgfCBmX2hhc19FT0YpKSB7Ci0gICAgICAgICAgICBpZiAoZmxhZ3NfICYgZl9oYXNfTEYpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5ld2xpbmUoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4gRU9GOwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IGMgPQotICAgICAgICAgICAgKGZsYWdzXyAmIGZfaGFzX0NSKSA9PSAwID8KLSAgICAgICAgICAgICAgICBpb3N0cmVhbXM6OmdldChzcmMpIDoKLSAgICAgICAgICAgICAgICBDUjsKLQotICAgICAgICBpZiAoYyA9PSBXT1VMRF9CTE9DSyApCi0gICAgICAgICAgICByZXR1cm4gV09VTERfQkxPQ0s7Ci0KLSAgICAgICAgaWYgKGMgPT0gQ1IpIHsKLSAgICAgICAgICAgIGZsYWdzXyB8PSBmX2hhc19DUjsKLQotICAgICAgICAgICAgaW50IGQ7Ci0gICAgICAgICAgICBpZiAoKGQgPSBpb3N0cmVhbXM6OmdldChzcmMpKSA9PSBXT1VMRF9CTE9DSykKLSAgICAgICAgICAgICAgICByZXR1cm4gV09VTERfQkxPQ0s7Ci0KLSAgICAgICAgICAgIGlmIChkID09IExGKSB7Ci0gICAgICAgICAgICAgICAgZmxhZ3NfICY9IH5mX2hhc19DUjsKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3bGluZSgpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoZCA9PSBFT0YpIHsKLSAgICAgICAgICAgICAgICBmbGFnc18gfD0gZl9oYXNfRU9GOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpb3N0cmVhbXM6OnB1dGJhY2soc3JjLCBkKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZmxhZ3NfICY9IH5mX2hhc19DUjsKLSAgICAgICAgICAgIHJldHVybiBuZXdsaW5lKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoYyA9PSBMRikKLSAgICAgICAgICAgIHJldHVybiBuZXdsaW5lKCk7Ci0KLSAgICAgICAgcmV0dXJuIGM7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICBib29sIHB1dChTaW5rJiBkZXN0LCBjaGFyIGMpCi0gICAgewotICAgICAgICB1c2luZyBpb3N0cmVhbXM6Om5ld2xpbmU6OkNSOwotICAgICAgICB1c2luZyBpb3N0cmVhbXM6Om5ld2xpbmU6OkxGOwotCi0gICAgICAgIE5ETkJPT1NUX0FTU0VSVCgoZmxhZ3NfICYgZl9yZWFkKSA9PSAwKTsKLSAgICAgICAgZmxhZ3NfIHw9IGZfd3JpdGU7Ci0KLSAgICAgICAgaWYgKChmbGFnc18gJiBmX2hhc19MRikgIT0gMCkKLSAgICAgICAgICAgIHJldHVybiBjID09IExGID8KLSAgICAgICAgICAgICAgICBuZXdsaW5lKGRlc3QpIDoKLSAgICAgICAgICAgICAgICBuZXdsaW5lKGRlc3QpICYmIHRoaXMtPnB1dChkZXN0LCBjKTsKLQotICAgICAgICBpZiAoYyA9PSBMRikKLSAgICAgICAgICAgcmV0dXJuIG5ld2xpbmUoZGVzdCk7Ci0KLSAgICAgICAgaWYgKChmbGFnc18gJiBmX2hhc19DUikgIT0gMCkKLSAgICAgICAgICAgIHJldHVybiBuZXdsaW5lKGRlc3QpID8KLSAgICAgICAgICAgICAgICB0aGlzLT5wdXQoZGVzdCwgYykgOgotICAgICAgICAgICAgICAgIGZhbHNlOwotCi0gICAgICAgIGlmIChjID09IENSKSB7Ci0gICAgICAgICAgICBmbGFnc18gfD0gZl9oYXNfQ1I7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBpb3N0cmVhbXM6OnB1dChkZXN0LCBjKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgIHZvaWQgY2xvc2UoU2luayYgZGVzdCwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaW9zdHJlYW1zOjpjYXRlZ29yeV9vZjxTaW5rPjo6dHlwZSBjYXRlZ29yeTsKLSAgICAgICAgaWYgKChmbGFnc18gJiBmX3dyaXRlKSAhPSAwICYmIChmbGFnc18gJiBmX2hhc19DUikgIT0gMCkKLSAgICAgICAgICAgIG5ld2xpbmVfaWZfc2luayhkZXN0KTsKLSAgICAgICAgZmxhZ3NfICY9IH5mX2hhc19MRjsgLy8gUmVzdG9yZSBvcmlnaW5hbCBmbGFncy4KLSAgICB9Ci1wcml2YXRlOgotCi0gICAgLy8gUmV0dXJucyB0aGUgYXBwcm9wcmlhdGUgZWxlbWVudCBvZiBhIG5ld2xpbmUgc2VxdWVuY2UuCi0gICAgaW50IG5ld2xpbmUoKQotICAgIHsKLSAgICAgICAgdXNpbmcgaW9zdHJlYW1zOjpuZXdsaW5lOjpDUjsKLSAgICAgICAgdXNpbmcgaW9zdHJlYW1zOjpuZXdsaW5lOjpMRjsKLQotICAgICAgICBzd2l0Y2ggKGZsYWdzXyAmIGlvc3RyZWFtczo6bmV3bGluZTo6cGxhdGZvcm1fbWFzaykgewotICAgICAgICBjYXNlIGlvc3RyZWFtczo6bmV3bGluZTo6cG9zaXg6Ci0gICAgICAgICAgICByZXR1cm4gTEY7Ci0gICAgICAgIGNhc2UgaW9zdHJlYW1zOjpuZXdsaW5lOjptYWM6Ci0gICAgICAgICAgICByZXR1cm4gQ1I7Ci0gICAgICAgIGNhc2UgaW9zdHJlYW1zOjpuZXdsaW5lOjpkb3M6Ci0gICAgICAgICAgICBpZiAoZmxhZ3NfICYgZl9oYXNfTEYpIHsKLSAgICAgICAgICAgICAgICBmbGFnc18gJj0gfmZfaGFzX0xGOwotICAgICAgICAgICAgICAgIHJldHVybiBMRjsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZmxhZ3NfIHw9IGZfaGFzX0xGOwotICAgICAgICAgICAgICAgIHJldHVybiBDUjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICByZXR1cm4gTkROQk9PU1RfSU9TVFJFQU1TX0FTU0VSVF9VTlJFQUNIQUJMRSgwKTsKLSAgICB9Ci0KLSAgICAvLyBXcml0ZXMgYSBuZXdsaW5lIHNlcXVlbmNlLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpbms+Ci0gICAgYm9vbCBuZXdsaW5lKFNpbmsmIGRlc3QpCi0gICAgewotICAgICAgICB1c2luZyBpb3N0cmVhbXM6Om5ld2xpbmU6OkNSOwotICAgICAgICB1c2luZyBpb3N0cmVhbXM6Om5ld2xpbmU6OkxGOwotCi0gICAgICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwotICAgICAgICBzd2l0Y2ggKGZsYWdzXyAmIGlvc3RyZWFtczo6bmV3bGluZTo6cGxhdGZvcm1fbWFzaykgewotICAgICAgICBjYXNlIGlvc3RyZWFtczo6bmV3bGluZTo6cG9zaXg6Ci0gICAgICAgICAgICBzdWNjZXNzID0gbmRuYm9vc3Q6Omlvc3RyZWFtczo6cHV0KGRlc3QsIExGKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIGlvc3RyZWFtczo6bmV3bGluZTo6bWFjOgotICAgICAgICAgICAgc3VjY2VzcyA9IG5kbmJvb3N0Ojppb3N0cmVhbXM6OnB1dChkZXN0LCBDUik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBpb3N0cmVhbXM6Om5ld2xpbmU6OmRvczoKLSAgICAgICAgICAgIGlmICgoZmxhZ3NfICYgZl9oYXNfTEYpICE9IDApIHsKLSAgICAgICAgICAgICAgICBpZiAoKHN1Y2Nlc3MgPSBuZG5ib29zdDo6aW9zdHJlYW1zOjpwdXQoZGVzdCwgTEYpKSkKLSAgICAgICAgICAgICAgICAgICAgZmxhZ3NfICY9IH5mX2hhc19MRjsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAobmRuYm9vc3Q6Omlvc3RyZWFtczo6cHV0KGRlc3QsIENSKSkgewotICAgICAgICAgICAgICAgIGlmICghKHN1Y2Nlc3MgPSBuZG5ib29zdDo6aW9zdHJlYW1zOjpwdXQoZGVzdCwgTEYpKSkKLSAgICAgICAgICAgICAgICAgICAgZmxhZ3NfIHw9IGZfaGFzX0xGOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHN1Y2Nlc3MpCi0gICAgICAgICAgICBmbGFnc18gJj0gfmZfaGFzX0NSOwotICAgICAgICByZXR1cm4gc3VjY2VzczsKLSAgICB9Ci0KLSAgICAvLyBXcml0ZXMgYSBuZXdsaW5lIHNlcXVlbmNlIGlmIHRoZSBnaXZlbiBkZXZpY2UgaXMgYSBTaW5rLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLSAgICB2b2lkIG5ld2xpbmVfaWZfc2luayhEZXZpY2UmIGRlc3QpIAotICAgIHsgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaW9zdHJlYW1zOjpjYXRlZ29yeV9vZjxEZXZpY2U+Ojp0eXBlIGNhdGVnb3J5OwotICAgICAgICBuZXdsaW5lX2lmX3NpbmsoZGVzdCwgaXNfY29udmVydGlibGU8Y2F0ZWdvcnksIG91dHB1dD4oKSk7IAotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpbms+Ci0gICAgdm9pZCBuZXdsaW5lX2lmX3NpbmsoU2luayYgZGVzdCwgbXBsOjp0cnVlXykgeyBuZXdsaW5lKGRlc3QpOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2U+Ci0gICAgdm9pZCBuZXdsaW5lX2lmX3NpbmsoU291cmNlJiwgbXBsOjpmYWxzZV8pIHsgfQotCi0gICAgZW51bSBmbGFncyB7Ci0gICAgICAgIGZfaGFzX0xGICAgICAgICAgPSAzMjc2OCwKLSAgICAgICAgZl9oYXNfQ1IgICAgICAgICA9IGZfaGFzX0xGIDw8IDEsCi0gICAgICAgIGZfaGFzX25ld2xpbmUgICAgPSBmX2hhc19DUiA8PCAxLAotICAgICAgICBmX2hhc19FT0YgICAgICAgID0gZl9oYXNfbmV3bGluZSA8PCAxLAotICAgICAgICBmX3JlYWQgICAgICAgICAgID0gZl9oYXNfRU9GIDw8IDEsCi0gICAgICAgIGZfd3JpdGUgICAgICAgICAgPSBmX3JlYWQgPDwgMQotICAgIH07Ci0gICAgaW50ICAgICAgIGZsYWdzXzsKLX07Ci1ORE5CT09TVF9JT1NUUkVBTVNfUElQQUJMRShuZXdsaW5lX2ZpbHRlciwgMCkKLQotY2xhc3MgbmV3bGluZV9jaGVja2VyIDogcHVibGljIGRldGFpbDo6bmV3bGluZV9iYXNlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIGNoYXIgICAgICAgICAgICAgICAgIGNoYXJfdHlwZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkKLSAgICAgICAgOiBkdWFsX3VzZV9maWx0ZXJfdGFnLAotICAgICAgICAgIGNsb3NhYmxlX3RhZwotICAgICAgICB7IH07Ci0gICAgZXhwbGljaXQgbmV3bGluZV9jaGVja2VyKGludCB0YXJnZXQgPSBuZXdsaW5lOjptaXhlZCkKLSAgICAgICAgOiBkZXRhaWw6Om5ld2xpbmVfYmFzZSgwKSwgdGFyZ2V0Xyh0YXJnZXQpLCBvcGVuXyhmYWxzZSkKLSAgICAgICAgeyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlPgotICAgIGludCBnZXQoU291cmNlJiBzcmMpCi0gICAgewotICAgICAgICB1c2luZyBuZXdsaW5lOjpDUjsKLSAgICAgICAgdXNpbmcgbmV3bGluZTo6TEY7Ci0KLSAgICAgICAgaWYgKCFvcGVuXykgewotICAgICAgICAgICAgb3Blbl8gPSB0cnVlOwotICAgICAgICAgICAgc291cmNlKCkgPSAwOwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IGM7Ci0gICAgICAgIGlmICgoYyA9IGlvc3RyZWFtczo6Z2V0KHNyYykpID09IFdPVUxEX0JMT0NLKQotICAgICAgICAgICAgcmV0dXJuIFdPVUxEX0JMT0NLOwotCi0gICAgICAgIC8vIFVwZGF0ZSBzb3VyY2UgZmxhZ3MuCi0gICAgICAgIGlmIChjICE9IEVPRikKLSAgICAgICAgICAgIHNvdXJjZSgpICY9IH5mX2xpbmVfY29tcGxldGU7Ci0gICAgICAgIGlmICgoc291cmNlKCkgJiBmX2hhc19DUikgIT0gMCkgewotICAgICAgICAgICAgaWYgKGMgPT0gTEYpIHsKLSAgICAgICAgICAgICAgICBzb3VyY2UoKSB8PSBuZXdsaW5lOjpkb3M7Ci0gICAgICAgICAgICAgICAgc291cmNlKCkgfD0gZl9saW5lX2NvbXBsZXRlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBzb3VyY2UoKSB8PSBuZXdsaW5lOjptYWM7Ci0gICAgICAgICAgICAgICAgaWYgKGMgPT0gRU9GKQotICAgICAgICAgICAgICAgICAgICBzb3VyY2UoKSB8PSBmX2xpbmVfY29tcGxldGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoYyA9PSBMRikgewotICAgICAgICAgICAgc291cmNlKCkgfD0gbmV3bGluZTo6cG9zaXg7Ci0gICAgICAgICAgICBzb3VyY2UoKSB8PSBmX2xpbmVfY29tcGxldGU7Ci0gICAgICAgIH0KLSAgICAgICAgc291cmNlKCkgPSAoc291cmNlKCkgJiB+Zl9oYXNfQ1IpIHwgKGMgPT0gQ1IgPyBmX2hhc19DUiA6IDApOwotCi0gICAgICAgIC8vIENoZWNrIGZvciBlcnJvcnMuCi0gICAgICAgIGlmICggYyA9PSBFT0YgJiYKLSAgICAgICAgICAgICh0YXJnZXRfICYgbmV3bGluZTo6ZmluYWxfbmV3bGluZSkgIT0gMCAmJgotICAgICAgICAgICAgKHNvdXJjZSgpICYgZl9saW5lX2NvbXBsZXRlKSA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgZmFpbCgpOwotICAgICAgICB9Ci0gICAgICAgIGlmICggKHRhcmdldF8gJiBuZXdsaW5lOjpwbGF0Zm9ybV9tYXNrKSAhPSAwICYmCi0gICAgICAgICAgICAgKHNvdXJjZSgpICYgfnRhcmdldF8gJiBuZXdsaW5lOjpwbGF0Zm9ybV9tYXNrKSAhPSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgZmFpbCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGM7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICBib29sIHB1dChTaW5rJiBkZXN0LCBpbnQgYykKLSAgICB7Ci0gICAgICAgIHVzaW5nIGlvc3RyZWFtczo6bmV3bGluZTo6Q1I7Ci0gICAgICAgIHVzaW5nIGlvc3RyZWFtczo6bmV3bGluZTo6TEY7Ci0KLSAgICAgICAgaWYgKCFvcGVuXykgewotICAgICAgICAgICAgb3Blbl8gPSB0cnVlOwotICAgICAgICAgICAgc291cmNlKCkgPSAwOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFpb3N0cmVhbXM6OnB1dChkZXN0LCBjKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgLy8gVXBkYXRlIHNvdXJjZSBmbGFncy4KLSAgICAgICAgc291cmNlKCkgJj0gfmZfbGluZV9jb21wbGV0ZTsKLSAgICAgICAgaWYgKChzb3VyY2UoKSAmIGZfaGFzX0NSKSAhPSAwKSB7Ci0gICAgICAgICAgICBpZiAoYyA9PSBMRikgewotICAgICAgICAgICAgICAgIHNvdXJjZSgpIHw9IG5ld2xpbmU6OmRvczsKLSAgICAgICAgICAgICAgICBzb3VyY2UoKSB8PSBmX2xpbmVfY29tcGxldGU7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHNvdXJjZSgpIHw9IG5ld2xpbmU6Om1hYzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChjID09IExGKSB7Ci0gICAgICAgICAgICBzb3VyY2UoKSB8PSBuZXdsaW5lOjpwb3NpeDsKLSAgICAgICAgICAgIHNvdXJjZSgpIHw9IGZfbGluZV9jb21wbGV0ZTsKLSAgICAgICAgfQotICAgICAgICBzb3VyY2UoKSA9IChzb3VyY2UoKSAmIH5mX2hhc19DUikgfCAoYyA9PSBDUiA/IGZfaGFzX0NSIDogMCk7Ci0KLSAgICAgICAgLy8gQ2hlY2sgZm9yIGVycm9ycy4KLSAgICAgICAgaWYgKCAodGFyZ2V0XyAmIG5ld2xpbmU6OnBsYXRmb3JtX21hc2spICE9IDAgJiYKLSAgICAgICAgICAgICAoc291cmNlKCkgJiB+dGFyZ2V0XyAmIG5ld2xpbmU6OnBsYXRmb3JtX21hc2spICE9IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBmYWlsKCk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgIHZvaWQgY2xvc2UoU2luayYsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUpCi0gICAgewotICAgICAgICB1c2luZyBpb3N0cmVhbXM6Om5ld2xpbmU6OmZpbmFsX25ld2xpbmU7Ci0KLSAgICAgICAgLy8gVXBkYXRlIGZpbmFsX25ld2xpbmUgZmxhZy4KLSAgICAgICAgaWYgKCAoc291cmNlKCkgJiBmX2hhc19DUikgIT0gMCB8fAotICAgICAgICAgICAgIChzb3VyY2UoKSAmIGZfbGluZV9jb21wbGV0ZSkgIT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNvdXJjZSgpIHw9IGZpbmFsX25ld2xpbmU7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBDbGVhciBub24tc3RpY2t5IGZsYWdzLgotICAgICAgICBzb3VyY2UoKSAmPSB+KGZfaGFzX0NSIHwgZl9saW5lX2NvbXBsZXRlKTsKLQotICAgICAgICAvLyBDaGVjayBmb3IgZXJyb3JzLgotICAgICAgICBpZiAoICh0YXJnZXRfICYgZmluYWxfbmV3bGluZSkgIT0gMCAmJgotICAgICAgICAgICAgIChzb3VyY2UoKSAmIGZpbmFsX25ld2xpbmUpID09IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBmYWlsKCk7Ci0gICAgICAgIH0KLSAgICB9Ci1wcml2YXRlOgotICAgIHZvaWQgZmFpbCgpIHsgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihuZXdsaW5lX2Vycm9yKHNvdXJjZSgpKSk7IH0KLSAgICBpbnQmIHNvdXJjZSgpIHsgcmV0dXJuIGZsYWdzXzsgfQotICAgIGludCBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBmbGFnc187IH0KLQotICAgIGVudW0gZmxhZ3MgewotICAgICAgICBmX2hhc19DUiA9IDMyNzY4LAotICAgICAgICBmX2xpbmVfY29tcGxldGUgPSBmX2hhc19DUiA8PCAxCi0gICAgfTsKLQotICAgIGludCAgIHRhcmdldF87ICAvLyBSZXByZXNlbnRzIGV4cGVjdGVkIGlucHV0LgotICAgIGJvb2wgIG9wZW5fOwotfTsKLU5ETkJPT1NUX0lPU1RSRUFNU19QSVBBQkxFKG5ld2xpbmVfY2hlY2tlciwgMCkKLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTkVXTElORV9GSUxURVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9maWx0ZXIvcmVnZXguaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL3JlZ2V4LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2JjNTk5YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9maWx0ZXIvcmVnZXguaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX1JFR0VYX0ZJTFRFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX1JFR0VYX0ZJTFRFUl9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLQotI2luY2x1ZGUgPG1lbW9yeT4gICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsb2NhdG9yLgotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uLmhwcD4gICAgICAgIAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9maWx0ZXIvYWdncmVnYXRlLmhwcD4gICAgICAgICAgICAgIAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9waXBlbGluZS5ocHA+ICAgICAgICAgICAgICAgIAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBDaCwKLSAgICAgICAgICB0eXBlbmFtZSBUciA9IHJlZ2V4X3RyYWl0czxDaD4sCi0gICAgICAgICAgdHlwZW5hbWUgQWxsb2MgPSBzdGQ6OmFsbG9jYXRvcjxDaD4gPgotY2xhc3MgYmFzaWNfcmVnZXhfZmlsdGVyIDogcHVibGljIGFnZ3JlZ2F0ZV9maWx0ZXI8Q2gsIEFsbG9jPiB7Ci1wcml2YXRlOgotICAgIHR5cGVkZWYgYWdncmVnYXRlX2ZpbHRlcjxDaCwgQWxsb2M+ICAgICAgICAgICAgICAgICBiYXNlX3R5cGU7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX3R5cGU6OmNoYXJfdHlwZSAgICAgICAgICAgICAgY2hhcl90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV90eXBlOjpjYXRlZ29yeSAgICAgICAgICAgICAgIGNhdGVnb3J5OwotICAgIHR5cGVkZWYgc3RkOjpiYXNpY19zdHJpbmc8Q2g+ICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ190eXBlOwotICAgIHR5cGVkZWYgYmFzaWNfcmVnZXg8Q2gsIFRyPiAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2V4X3R5cGU7Ci0gICAgdHlwZWRlZiByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSAgICAgICAgICAgZmxhZ190eXBlOwotICAgIHR5cGVkZWYgbWF0Y2hfcmVzdWx0czxjb25zdCBDaCo+ICAgICAgICAgICAgICAgICAgIG1hdGNoX3R5cGU7Ci0gICAgdHlwZWRlZiBmdW5jdGlvbjE8c3RyaW5nX3R5cGUsIGNvbnN0IG1hdGNoX3R5cGUmPiAgZm9ybWF0dGVyOwotCi0gICAgYmFzaWNfcmVnZXhfZmlsdGVyKCBjb25zdCByZWdleF90eXBlJiByZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlciYgcmVwbGFjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdHlwZSBmbGFncyA9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCApCi0gICAgICAgIDogcmVfKHJlKSwgcmVwbGFjZV8ocmVwbGFjZSksIGZsYWdzXyhmbGFncykgeyB9Ci0gICAgYmFzaWNfcmVnZXhfZmlsdGVyKCBjb25zdCByZWdleF90eXBlJiByZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cmluZ190eXBlJiBmbXQsCi0gICAgICAgICAgICAgICAgICAgICAgICBmbGFnX3R5cGUgZmxhZ3MgPSByZWdleF9jb25zdGFudHM6Om1hdGNoX2RlZmF1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICBmbGFnX3R5cGUgZm10X2ZsYWdzID0gcmVnZXhfY29uc3RhbnRzOjpmb3JtYXRfZGVmYXVsdCApCi0gICAgICAgIDogcmVfKHJlKSwgcmVwbGFjZV8oc2ltcGxlX2Zvcm1hdHRlcihmbXQsIGZtdF9mbGFncykpLCBmbGFnc18oZmxhZ3MpIHsgfQotICAgIGJhc2ljX3JlZ2V4X2ZpbHRlciggY29uc3QgcmVnZXhfdHlwZSYgcmUsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyX3R5cGUqIGZtdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdHlwZSBmbGFncyA9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdHlwZSBmbXRfZmxhZ3MgPSByZWdleF9jb25zdGFudHM6OmZvcm1hdF9kZWZhdWx0ICkKLSAgICAgICAgOiByZV8ocmUpLCByZXBsYWNlXyhzaW1wbGVfZm9ybWF0dGVyKGZtdCwgZm10X2ZsYWdzKSksIGZsYWdzXyhmbGFncykgeyB9Ci1wcml2YXRlOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV90eXBlOjp2ZWN0b3JfdHlwZSAgICAgICB2ZWN0b3JfdHlwZTsKLSAgICB2b2lkIGRvX2ZpbHRlcihjb25zdCB2ZWN0b3JfdHlwZSYgc3JjLCB2ZWN0b3JfdHlwZSYgZGVzdCkKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiByZWdleF9pdGVyYXRvcjxjb25zdCBDaCosIENoLCBUcj4gaXRlcmF0b3I7Ci0gICAgICAgICAgICBpZiAoc3JjLmVtcHR5KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgaXRlcmF0b3IgZmlyc3QoJnNyY1swXSwgJnNyY1swXSArIHNyYy5zaXplKCksIHJlXywgZmxhZ3NfKTsKLSAgICAgICAgICAgIGl0ZXJhdG9yIGxhc3Q7Ci0gICAgICAgICAgICBjb25zdCBDaCogc3VmZml4ID0gMDsKLSAgICAgICAgICAgIGZvciAoOyBmaXJzdCAhPSBsYXN0OyArK2ZpcnN0KSB7Ci0gICAgICAgICAgICAgICAgZGVzdC5pbnNlcnQoIGRlc3QuZW5kKCksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdC0+cHJlZml4KCkuZmlyc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0LT5wcmVmaXgoKS5zZWNvbmQgKTsKLSAgICAgICAgICAgICAgICBzdHJpbmdfdHlwZSByZXBsYWNlbWVudCA9IHJlcGxhY2VfKCpmaXJzdCk7Ci0gICAgICAgICAgICAgICAgZGVzdC5pbnNlcnQoIGRlc3QuZW5kKCksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVudC5iZWdpbigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVudC5lbmQoKSApOwotICAgICAgICAgICAgICAgIHN1ZmZpeCA9IGZpcnN0LT5zdWZmaXgoKS5maXJzdDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChzdWZmaXgpIHsKLSAgICAgICAgICAgICAgICBkZXN0Lmluc2VydChkZXN0LmVuZCgpLCBzdWZmaXgsICZzcmNbMF0gKyBzcmMuc2l6ZSgpKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZGVzdC5pbnNlcnQoZGVzdC5lbmQoKSwgJnNyY1swXSwgJnNyY1swXSArIHNyYy5zaXplKCkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgc3RydWN0IHNpbXBsZV9mb3JtYXR0ZXIgewotICAgICAgICBzaW1wbGVfZm9ybWF0dGVyKGNvbnN0IHN0cmluZ190eXBlJiBmbXQsIGZsYWdfdHlwZSBmbXRfZmxhZ3MpIAotICAgICAgICAgICAgOiBmbXRfKGZtdCksIGZtdF9mbGFnc18oZm10X2ZsYWdzKSB7IH0KLSAgICAgICAgc3RyaW5nX3R5cGUgb3BlcmF0b3IoKSAoY29uc3QgbWF0Y2hfdHlwZSYgbWF0Y2gpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1hdGNoLmZvcm1hdChmbXRfLCBmbXRfZmxhZ3NfKTsgfQotICAgICAgICBzdHJpbmdfdHlwZSAgZm10XzsKLSAgICAgICAgZmxhZ190eXBlICAgIGZtdF9mbGFnc187Ci0gICAgfTsKLSAgICByZWdleF90eXBlICByZV87Ci0gICAgZm9ybWF0dGVyICAgcmVwbGFjZV87Ci0gICAgZmxhZ190eXBlICAgZmxhZ3NfOwotfTsKLU5ETkJPT1NUX0lPU1RSRUFNU19QSVBBQkxFKGJhc2ljX3JlZ2V4X2ZpbHRlciwgMykKLQotdHlwZWRlZiBiYXNpY19yZWdleF9maWx0ZXI8Y2hhcj4gICAgIHJlZ2V4X2ZpbHRlcjsKLXR5cGVkZWYgYmFzaWNfcmVnZXhfZmlsdGVyPHdjaGFyX3Q+ICB3cmVnZXhfZmlsdGVyOwotCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgICAgICAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19SRUdFWF9GSUxURVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9maWx0ZXIvc3RkaW8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL3N0ZGlvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzNlODQyNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9maWx0ZXIvc3RkaW8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDUtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vIEJhc2VkIG9uIHRoZSB3b3JrIG9mIENocmlzdG9waGVyIERpZ2dpbnMuCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX1NURElPX0ZJTFRFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX1NURElPX0ZJTFRFUl9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxpb3N0cmVhbT4KLSNpbmNsdWRlIDxtZW1vcnk+ICAgIC8vIGFsbG9jYXRvci4KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvd2lkZV9zdHJlYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NoYXJfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldmljZS9hcnJheS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldmljZS9iYWNrX2luc2VydGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL2FnZ3JlZ2F0ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3BpcGVsaW5lLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvc3RyZWFtX2J1ZmZlci5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2gsIHR5cGVuYW1lIEFsbG9jID0gc3RkOjphbGxvY2F0b3I8Q2g+ID4KLWNsYXNzIGJhc2ljX3N0ZGlvX2ZpbHRlciA6IHB1YmxpYyBhZ2dyZWdhdGVfZmlsdGVyPENoLCBBbGxvYz4gewotcHJpdmF0ZToKLSAgICB0eXBlZGVmIGFnZ3JlZ2F0ZV9maWx0ZXI8Q2gsIEFsbG9jPiAgICAgICBiYXNlX3R5cGU7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX3R5cGU6OmNoYXJfdHlwZSAgICBjaGFyX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX3R5cGU6OmNhdGVnb3J5ICAgICBjYXRlZ29yeTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfdHlwZTo6dmVjdG9yX3R5cGUgIHZlY3Rvcl90eXBlOwotcHJpdmF0ZToKLSAgICBzdGF0aWMgc3RkOjppc3RyZWFtJiBzdGFuZGFyZF9pbnB1dChjaGFyKikgeyByZXR1cm4gc3RkOjpjaW47IH0KLSAgICBzdGF0aWMgc3RkOjpvc3RyZWFtJiBzdGFuZGFyZF9vdXRwdXQoY2hhciopIHsgcmV0dXJuIHN0ZDo6Y291dDsgfQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fV0lERV9TVFJFQU1TCi0gICAgc3RhdGljIHN0ZDo6d2lzdHJlYW0mIHN0YW5kYXJkX2lucHV0KHdjaGFyX3QqKSB7IHJldHVybiBzdGQ6OndjaW47IH0KLSAgICBzdGF0aWMgc3RkOjp3b3N0cmVhbSYgc3RhbmRhcmRfb3V0cHV0KHdjaGFyX3QqKSB7IHJldHVybiBzdGQ6Ondjb3V0OyB9Ci0jZW5kaWYgLy8gTkROQk9PU1RfSU9TVFJFQU1TX05PX1dJREVfU1RSRUFNUwotCi0gICAgc3RydWN0IHNjb3BlZF9yZWRpcmVjdG9yIHsgLy8gVGhhbmtzIHRvIE1heGltIEVnb3J1c2hraW4uCi0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfSU9TVFJFQU1TX0NIQVJfVFJBSVRTKENoKSAgICAgICAgICAgICAgICAgIHRyYWl0c190eXBlOwotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19CQVNJQ19JT1MoQ2gsIHRyYWl0c190eXBlKSAgICAgICBpb3NfdHlwZTsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9JT1NUUkVBTVNfQkFTSUNfU1RSRUFNQlVGKENoLCB0cmFpdHNfdHlwZSkgc3RyZWFtYnVmX3R5cGU7Ci0gICAgICAgIHNjb3BlZF9yZWRpcmVjdG9yKCBpb3NfdHlwZSYgaW9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtYnVmX3R5cGUqIG5ld2J1ZiApCi0gICAgICAgICAgICA6IGlvc18oaW9zKSwgb2xkXyhpb3MucmRidWYobmV3YnVmKSkKLSAgICAgICAgICAgIHsgfQotICAgICAgICB+c2NvcGVkX3JlZGlyZWN0b3IoKSB7IGlvc18ucmRidWYob2xkXyk7IH0KLSAgICAgICAgc2NvcGVkX3JlZGlyZWN0b3ImIG9wZXJhdG9yPShjb25zdCBzY29wZWRfcmVkaXJlY3RvciYpOwotICAgICAgICBpb3NfdHlwZSYgICAgICAgIGlvc187Ci0gICAgICAgIHN0cmVhbWJ1Zl90eXBlKiAgb2xkXzsKLSAgICB9OwotCi0gICAgdmlydHVhbCB2b2lkIGRvX2ZpbHRlcigpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZG9fZmlsdGVyKGNvbnN0IHZlY3Rvcl90eXBlJiBzcmMsIHZlY3Rvcl90eXBlJiBkZXN0KQotICAgIHsKLSAgICAgICAgc3RyZWFtX2J1ZmZlcjwgYmFzaWNfYXJyYXlfc291cmNlPENoPiA+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIHNyY2J1Zigmc3JjWzBdLCAmc3JjWzBdICsgc3JjLnNpemUoKSk7Ci0gICAgICAgIHN0cmVhbV9idWZmZXI8IGJhY2tfaW5zZXJ0X2RldmljZTx2ZWN0b3JfdHlwZT4gPgotICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0YnVmKGlvc3RyZWFtczo6YmFja19pbnNlcnRlcihkZXN0KSk7Ci0gICAgICAgIHNjb3BlZF9yZWRpcmVjdG9yIHJlZGlyZWN0X2lucHV0KHN0YW5kYXJkX2lucHV0KChDaCopMCksICZzcmNidWYpOwotICAgICAgICBzY29wZWRfcmVkaXJlY3RvciByZWRpcmVjdF9vdXRwdXQoc3RhbmRhcmRfb3V0cHV0KChDaCopMCksICZkZXN0YnVmKTsKLSAgICAgICAgZG9fZmlsdGVyKCk7Ci0gICAgfQotfTsKLU5ETkJPT1NUX0lPU1RSRUFNU19QSVBBQkxFKGJhc2ljX3N0ZGlvX2ZpbHRlciwgMikKLQotdHlwZWRlZiBiYXNpY19zdGRpb19maWx0ZXI8Y2hhcj4gICAgIHN0ZGlvX2ZpbHRlcjsKLXR5cGVkZWYgYmFzaWNfc3RkaW9fZmlsdGVyPHdjaGFyX3Q+ICB3c3RkaW9fd2ZpbHRlcjsKLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19TVERJT19GSUxURVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9maWx0ZXIvc3ltbWV0cmljLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci9zeW1tZXRyaWMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YzU5OTAwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci9zeW1tZXRyaWMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzEwICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBDb250YWlucyB0aGUgZGVmaW5pdGlvbnMgb2YgdGhlIGNsYXNzIHRlbXBsYXRlcyBzeW1tZXRyaWNfZmlsdGVyLAotLy8gd2hpY2ggbW9kZWxzIER1YWxVc2VGaWx0ZXIgYmFzZWQgb24gYSBtb2RlbCBvZiB0aGUgU3ltbWV0cmljIEZpbHRlci4KLQotLy8KLS8vIFJvdWdobHksIGEgU3ltbWV0cmljIEZpbHRlciBpcyBhIGNsYXNzIHR5cGUgd2l0aCB0aGUgZm9sbG93aW5nIGludGVyZmFjZToKLS8vCi0vLyAgIHN0cnVjdCBzeW1tZXRyaWNfZmlsdGVyIHsKLS8vICAgICAgIHR5cGVkZWYgeHh4IGNoYXJfdHlwZTsKLS8vCi0vLyAgICAgICBib29sIGZpbHRlciggY29uc3QgY2hhciomIGJlZ2luX2luLCBjb25zdCBjaGFyKiBlbmRfaW4sCi0vLyAgICAgICAgICAgICAgICAgICAgY2hhciomIGJlZ2luX291dCwgY2hhciogZW5kX291dCwgYm9vbCBmbHVzaCApCi0vLyAgICAgICB7Ci0vLyAgICAgICAgICAvLyBDb25zdW1lIGFzIG1hbnkgY2hhcmFjdGVycyBhcyBwb3NzaWJsZSBmcm9tIHRoZSBpbnRlcnZhbAotLy8gICAgICAgICAgLy8gW2JlZ2luX2luLCBlbmRfaW4pLCB3aXRob3V0IGV4aGF1c3RpbmcgdGhlIG91dHB1dCByYW5nZQotLy8gICAgICAgICAgLy8gW2JlZ2luX291dCwgZW5kX291dCkuIElmIGZsdXNoIGlzIHRydWUsIHdyaXRlIGFzIG11c2ggb3V0cHV0Ci0vLyAgICAgICAgICAvLyBhcyBwb3NzaWJsZS4gCi0vLyAgICAgICAgICAvLyBBIHJldHVybiB2YWx1ZSBvZiB0cnVlIGluZGljYXRlcyB0aGF0IGZpbHRlciBzaG91bGQgYmUgY2FsbGVkIAotLy8gICAgICAgICAgLy8gYWdhaW4uIE1vcmUgcHJlY2lzZWx5LCBpZiBmbHVzaCBpcyBmYWxzZSwgYSByZXR1cm4gdmFsdWUgb2YgCi0vLyAgICAgICAgICAvLyBmYWxzZSBpbmRpY2F0ZXMgdGhhdCB0aGUgbmF0dXJhbCBlbmQgb2Ygc3RyZWFtIGhhcyBiZWVuIHJlYWNoZWQKLS8vICAgICAgICAgIC8vIGFuZCB0aGF0IGFsbCBmaWx0ZXJlZCBkYXRhIGhhcyBiZWVuIGZvcndhcmRlZDsgaWYgZmx1c2ggaXMKLS8vICAgICAgICAgIC8vIHRydWUsIGEgcmV0dXJuIHZhbHVlIG9mIGZhbHNlIGluZGljYXRlcyB0aGF0IGFsbCBmaWx0ZXJlZCBkYXRhIAotLy8gICAgICAgICAgLy8gaGFzIGJlZW4gZm9yd2FyZGVkLgotLy8gICAgICAgfQotLy8gICAgICAgdm9pZCBjbG9zZSgpIHsgLyogUmVzZXQgZmlsdGVyJ3Mgc3RhdGUuICovIH0KLS8vICAgfTsKLS8vCi0vLyBTeW1tZXRyaWMgRmlsdGVyIGZpbHRlcnMgbmVlZCBub3QgYmUgQ29weUNvbnN0cnVjdGFibGUuCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19TWU1NRVRSSUNfRklMVEVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfU1lNTUVUUklDX0ZJTFRFUl9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG1lbW9yeT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsb2NhdG9yLCBhdXRvX3B0ci4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgICAgICAgICAgICAgICAgICAgIC8vIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NoYXJfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY29uc3RhbnRzLmhwcD4gICAgICAgIC8vIGJ1ZmZlciBzaXplLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYnVmZmVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NoYXJfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9saW1pdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvdGVtcGxhdGVfcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvb3BlcmF0aW9ucy5ocHA+ICAgICAgIC8vIHJlYWQsIHdyaXRlLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9waXBlbGluZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9sb2NhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3B1bmN0dWF0aW9uL2NvbW1hX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX2JpbmFyeV9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zaGFyZWRfcHRyLmhwcD4KLQotLy8gTXVzdCBjb21lIGxhc3QuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZGlzYWJsZV93YXJuaW5ncy5ocHA+ICAvLyBNU1ZDLgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFN5bW1ldHJpY0ZpbHRlciwKLSAgICAgICAgICB0eXBlbmFtZSBBbGxvYyA9Ci0gICAgICAgICAgICAgIHN0ZDo6YWxsb2NhdG9yPAotICAgICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBjaGFyX3R5cGVfb2Y8U3ltbWV0cmljRmlsdGVyPjo6dHlwZQotICAgICAgICAgICAgICA+ID4KLWNsYXNzIHN5bW1ldHJpY19maWx0ZXIgewotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhcl90eXBlX29mPFN5bW1ldHJpY0ZpbHRlcj46OnR5cGUgICAgICBjaGFyX3R5cGU7Ci0gICAgdHlwZWRlZiBORE5CT09TVF9JT1NUUkVBTVNfQ0hBUl9UUkFJVFMoY2hhcl90eXBlKSAgICAgICAgICAgIHRyYWl0c190eXBlOwotICAgIHR5cGVkZWYgc3RkOjpiYXNpY19zdHJpbmc8Y2hhcl90eXBlLCB0cmFpdHNfdHlwZSwgQWxsb2M+ICBzdHJpbmdfdHlwZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkKLSAgICAgICAgOiBkdWFsX3VzZSwKLSAgICAgICAgICBmaWx0ZXJfdGFnLAotICAgICAgICAgIG11bHRpY2hhcl90YWcsCi0gICAgICAgICAgY2xvc2FibGVfdGFnCi0gICAgICAgIHsgfTsKLQotICAgIC8vIEV4cGFuZHMgdG8gYSBzZXF1ZW5jZSBvZiBjdG9ycyB3aGljaCBmb3J3YXJkIHRvIGltcGwuCi0gICAgI2RlZmluZSBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyhuKSBcCi0gICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19URU1QTEFURV9QQVJBTVMobiwgVCkgXAotICAgICAgICBleHBsaWNpdCBzeW1tZXRyaWNfZmlsdGVyKCBcCi0gICAgICAgICAgICAgIGludCBidWZmZXJfc2l6ZSBORE5CT09TVF9QUF9DT01NQV9JRihuKSBcCi0gICAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNUyhuLCBjb25zdCBULCAmdCkgKSBcCi0gICAgICAgICAgICA6IHBpbXBsXyhuZXcgaW1wbChidWZmZXJfc2l6ZSBORE5CT09TVF9QUF9DT01NQV9JRihuKSBcCi0gICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhuLCB0KSkpIFwKLSAgICAgICAgICAgIHsgTkROQk9PU1RfQVNTRVJUKGJ1ZmZlcl9zaXplID4gMCk7IH0gXAotICAgICAgICAvKiovCi0gICAgI2RlZmluZSBORE5CT09TVF9QUF9MT0NBTF9MSU1JVFMgKDAsIE5ETkJPT1NUX0lPU1RSRUFNU19NQVhfRk9SV0FSRElOR19BUklUWSkKLSAgICAjaW5jbHVkZSBORE5CT09TVF9QUF9MT0NBTF9JVEVSQVRFKCkKLSAgICAjdW5kZWYgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZT4KLSAgICBzdGQ6OnN0cmVhbXNpemUgcmVhZChTb3VyY2UmIHNyYywgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7Ci0gICAgICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgICAgIGlmICghKHN0YXRlKCkgJiBmX3JlYWQpKQotICAgICAgICAgICAgYmVnaW5fcmVhZCgpOwotCi0gICAgICAgIGJ1ZmZlcl90eXBlJiAgYnVmID0gcGltcGxfLT5idWZfOwotICAgICAgICBpbnQgICAgICAgICAgIHN0YXR1cyA9IChzdGF0ZSgpICYgZl9lb2YpICE9IDAgPyBmX2VvZiA6IGZfZ29vZDsKLSAgICAgICAgY2hhcl90eXBlICAgICpuZXh0X3MgPSBzLAotICAgICAgICAgICAgICAgICAgICAgKmVuZF9zID0gcyArIG47Ci0gICAgICAgIHdoaWxlICh0cnVlKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBJbnZva2UgZmlsdGVyIGlmIHRoZXJlIGFyZSB1bmNvbnN1bWVkIGNoYXJhY3RlcnMgaW4gYnVmZmVyIG9yIGlmCi0gICAgICAgICAgICAvLyBmaWx0ZXIgbXVzdCBiZSBmbHVzaGVkLgotICAgICAgICAgICAgYm9vbCBmbHVzaCA9IHN0YXR1cyA9PSBmX2VvZjsKLSAgICAgICAgICAgIGlmIChidWYucHRyKCkgIT0gYnVmLmVwdHIoKSB8fCBmbHVzaCkgewotICAgICAgICAgICAgICAgIGNvbnN0IGNoYXJfdHlwZSogbmV4dCA9IGJ1Zi5wdHIoKTsKLSAgICAgICAgICAgICAgICBib29sIGRvbmUgPQotICAgICAgICAgICAgICAgICAgICAhZmlsdGVyKCkuZmlsdGVyKG5leHQsIGJ1Zi5lcHRyKCksIG5leHRfcywgZW5kX3MsIGZsdXNoKTsKLSAgICAgICAgICAgICAgICBidWYucHRyKCkgPSBidWYuZGF0YSgpICsgKG5leHQgLSBidWYuZGF0YSgpKTsKLSAgICAgICAgICAgICAgICBpZiAoZG9uZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRldGFpbDo6Y2hlY2tfZW9mKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHN0ZDo6c3RyZWFtc2l6ZT4obmV4dF9zIC0gcykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIElmIG5vIG1vcmUgY2hhcmFjdGVycyBhcmUgYXZhaWxhYmxlIHdpdGhvdXQgYmxvY2tpbmcsIG9yCi0gICAgICAgICAgICAvLyBpZiByZWFkIHJlcXVlc3QgaGFzIGJlZW4gc2F0aXNmaWVkLCByZXR1cm4uCi0gICAgICAgICAgICBpZiAoIChzdGF0dXMgPT0gZl93b3VsZF9ibG9jayAmJiBidWYucHRyKCkgPT0gYnVmLmVwdHIoKSkgfHwKLSAgICAgICAgICAgICAgICAgbmV4dF9zID09IGVuZF9zICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPihuZXh0X3MgLSBzKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gRmlsbCBidWZmZXIuCi0gICAgICAgICAgICBpZiAoc3RhdHVzID09IGZfZ29vZCkKLSAgICAgICAgICAgICAgICBzdGF0dXMgPSBmaWxsKHNyYyk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgIHN0ZDo6c3RyZWFtc2l6ZSB3cml0ZShTaW5rJiBzbmssIGNvbnN0IGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgewotICAgICAgICBpZiAoIShzdGF0ZSgpICYgZl93cml0ZSkpCi0gICAgICAgICAgICBiZWdpbl93cml0ZSgpOwotCi0gICAgICAgIGJ1ZmZlcl90eXBlJiAgICAgYnVmID0gcGltcGxfLT5idWZfOwotICAgICAgICBjb25zdCBjaGFyX3R5cGUgKm5leHRfcywgKmVuZF9zOwotICAgICAgICBmb3IgKG5leHRfcyA9IHMsIGVuZF9zID0gcyArIG47IG5leHRfcyAhPSBlbmRfczsgKSB7Ci0gICAgICAgICAgICBpZiAoYnVmLnB0cigpID09IGJ1Zi5lcHRyKCkgJiYgIWZsdXNoKHNuaykpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBpZighZmlsdGVyKCkuZmlsdGVyKG5leHRfcywgZW5kX3MsIGJ1Zi5wdHIoKSwgYnVmLmVwdHIoKSwgZmFsc2UpKSB7Ci0gICAgICAgICAgICAgICAgZmx1c2goc25rKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPihuZXh0X3MgLSBzKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgIHZvaWQgY2xvc2UoU2luayYgc25rLCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIG1vZGUpCi0gICAgewotICAgICAgICBpZiAobW9kZSA9PSBORE5CT09TVF9JT1M6Om91dCkgewotCi0gICAgICAgICAgICBpZiAoIShzdGF0ZSgpICYgZl93cml0ZSkpCi0gICAgICAgICAgICAgICAgYmVnaW5fd3JpdGUoKTsKLQotICAgICAgICAgICAgLy8gUmVwZWF0ZWRseSBpbnZva2UgZmlsdGVyKCkgd2l0aCBubyBpbnB1dC4KLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgYnVmZmVyX3R5cGUmICAgICBidWYgPSBwaW1wbF8tPmJ1Zl87Ci0gICAgICAgICAgICAgICAgY2hhcl90eXBlICAgICAgICBkdW1teTsKLSAgICAgICAgICAgICAgICBjb25zdCBjaGFyX3R5cGUqIGVuZCA9ICZkdW1teTsKLSAgICAgICAgICAgICAgICBib29sICAgICAgICAgICAgIGFnYWluID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB3aGlsZSAoYWdhaW4pIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGJ1Zi5wdHIoKSAhPSBidWYuZXB0cigpKQotICAgICAgICAgICAgICAgICAgICAgICAgYWdhaW4gPSBmaWx0ZXIoKS5maWx0ZXIoIGVuZCwgZW5kLCBidWYucHRyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmLmVwdHIoKSwgdHJ1ZSApOwotICAgICAgICAgICAgICAgICAgICBmbHVzaChzbmspOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gY2F0Y2ggKC4uLikgewotICAgICAgICAgICAgICAgIHRyeSB7IGNsb3NlX2ltcGwoKTsgfSBjYXRjaCAoLi4uKSB7IH0KLSAgICAgICAgICAgICAgICB0aHJvdzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNsb3NlX2ltcGwoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGNsb3NlX2ltcGwoKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBTeW1tZXRyaWNGaWx0ZXImIGZpbHRlcigpIHsgcmV0dXJuICpwaW1wbF87IH0KLSAgICBzdHJpbmdfdHlwZSB1bmNvbnN1bWVkX2lucHV0KCkgY29uc3Q7Ci0KLS8vIEdpdmUgaW1wbCBhY2Nlc3MgdG8gYnVmZmVyX3R5cGUgb24gVHJ1NjQKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0RFQ0NYWF9WRVIsIE5ETkJPT1NUX1RFU1RFRF9BVCg2MDU5MDA0MikpIAotICAgIHByaXZhdGU6Ci0jZW5kaWYKLSAgICB0eXBlZGVmIGRldGFpbDo6YnVmZmVyPGNoYXJfdHlwZSwgQWxsb2M+IGJ1ZmZlcl90eXBlOwotcHJpdmF0ZToKLSAgICBidWZmZXJfdHlwZSYgYnVmKCkgeyByZXR1cm4gcGltcGxfLT5idWZfOyB9Ci0gICAgY29uc3QgYnVmZmVyX3R5cGUmIGJ1ZigpIGNvbnN0IHsgcmV0dXJuIHBpbXBsXy0+YnVmXzsgfQotICAgIGludCYgc3RhdGUoKSB7IHJldHVybiBwaW1wbF8tPnN0YXRlXzsgfQotICAgIHZvaWQgYmVnaW5fcmVhZCgpOwotICAgIHZvaWQgYmVnaW5fd3JpdGUoKTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZT4KLSAgICBpbnQgZmlsbChTb3VyY2UmIHNyYykKLSAgICB7Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBhbXQgPSBpb3N0cmVhbXM6OnJlYWQoc3JjLCBidWYoKS5kYXRhKCksIGJ1ZigpLnNpemUoKSk7Ci0gICAgICAgIGlmIChhbXQgPT0gLTEpIHsKLSAgICAgICAgICAgIHN0YXRlKCkgfD0gZl9lb2Y7Ci0gICAgICAgICAgICByZXR1cm4gZl9lb2Y7Ci0gICAgICAgIH0KLSAgICAgICAgYnVmKCkuc2V0KDAsIGFtdCk7Ci0gICAgICAgIHJldHVybiBhbXQgIT0gMCA/IGZfZ29vZCA6IGZfd291bGRfYmxvY2s7Ci0gICAgfQotCi0gICAgLy8gQXR0ZW1wdHMgdG8gd3JpdGUgdGhlIGNvbnRlbnRzIG9mIHRoZSBidWZmZXIgdGhlIGdpdmVuIFNpbmsuCi0gICAgLy8gUmV0dXJucyB0cnVlIGlmIGF0IGxlYXN0IG9uIGNoYXJhY3RlciB3YXMgd3JpdHRlbi4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgIGJvb2wgZmx1c2goU2luayYgc25rKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpb3N0cmVhbXM6OmNhdGVnb3J5X29mPFNpbms+Ojp0eXBlICBjYXRlZ29yeTsKLSAgICAgICAgdHlwZWRlZiBpc19jb252ZXJ0aWJsZTxjYXRlZ29yeSwgb3V0cHV0PiAgICAgICAgICAgICBjYW5fd3JpdGU7Ci0gICAgICAgIHJldHVybiBmbHVzaChzbmssIGNhbl93cml0ZSgpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgIGJvb2wgZmx1c2goU2luayYgc25rLCBtcGw6OnRydWVfKQotICAgIHsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIGFtdCA9Ci0gICAgICAgICAgICBzdGF0aWNfY2FzdDxzdGQ6OnN0cmVhbXNpemU+KGJ1ZigpLnB0cigpIC0gYnVmKCkuZGF0YSgpKTsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIHJlc3VsdCA9Ci0gICAgICAgICAgICBuZG5ib29zdDo6aW9zdHJlYW1zOjp3cml0ZShzbmssIGJ1ZigpLmRhdGEoKSwgYW10KTsKLSAgICAgICAgaWYgKHJlc3VsdCA8IGFtdCAmJiByZXN1bHQgPiAwKQotICAgICAgICAgICAgdHJhaXRzX3R5cGU6Om1vdmUoYnVmKCkuZGF0YSgpLCBidWYoKS5kYXRhKCkgKyByZXN1bHQsIGFtdCAtIHJlc3VsdCk7Ci0gICAgICAgIGJ1ZigpLnNldChhbXQgLSByZXN1bHQsIGJ1ZigpLnNpemUoKSk7Ci0gICAgICAgIHJldHVybiByZXN1bHQgIT0gMDsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgIGJvb2wgZmx1c2goU2luayYsIG1wbDo6ZmFsc2VfKSB7IHJldHVybiB0cnVlO30KLQotICAgIHZvaWQgY2xvc2VfaW1wbCgpOwotCi0gICAgZW51bSBmbGFnX3R5cGUgewotICAgICAgICBmX3JlYWQgICA9IDEsCi0gICAgICAgIGZfd3JpdGUgID0gZl9yZWFkIDw8IDEsCi0gICAgICAgIGZfZW9mICAgID0gZl93cml0ZSA8PCAxLAotICAgICAgICBmX2dvb2QsCi0gICAgICAgIGZfd291bGRfYmxvY2sKLSAgICB9OwotCi0gICAgc3RydWN0IGltcGwgOiBTeW1tZXRyaWNGaWx0ZXIgewotCi0gICAgLy8gRXhwYW5kcyB0byBhIHNlcXVlbmNlIG9mIGN0b3JzIHdoaWNoIGZvcndhcmQgdG8gU3ltbWV0cmljRmlsdGVyLgotICAgICNkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8obikgXAotICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfVEVNUExBVEVfUEFSQU1TKG4sIFQpIFwKLSAgICAgICAgaW1wbCggaW50IGJ1ZmZlcl9zaXplIE5ETkJPT1NUX1BQX0NPTU1BX0lGKG4pIFwKLSAgICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TKG4sIGNvbnN0IFQsICZ0KSApIFwKLSAgICAgICAgICAgIDogU3ltbWV0cmljRmlsdGVyKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKG4sIHQpKSwgXAotICAgICAgICAgICAgICBidWZfKGJ1ZmZlcl9zaXplKSwgc3RhdGVfKDApIFwKLSAgICAgICAgICAgIHsgfSBcCi0gICAgICAgIC8qKi8KLSAgICAjZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0xJTUlUUyAoMCwgTkROQk9PU1RfSU9TVFJFQU1TX01BWF9GT1JXQVJESU5HX0FSSVRZKQotICAgICNpbmNsdWRlIE5ETkJPT1NUX1BQX0xPQ0FMX0lURVJBVEUoKQotICAgICN1bmRlZiBORE5CT09TVF9QUF9MT0NBTF9NQUNSTwotCi0gICAgICAgIGJ1ZmZlcl90eXBlICBidWZfOwotICAgICAgICBpbnQgICAgICAgICAgc3RhdGVfOwotICAgIH07Ci0KLSAgICBzaGFyZWRfcHRyPGltcGw+IHBpbXBsXzsKLX07Ci1ORE5CT09TVF9JT1NUUkVBTVNfUElQQUJMRShzeW1tZXRyaWNfZmlsdGVyLCAyKQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLUltcGxlbWVudGF0aW9uIG9mIHN5bW1ldHJpY19maWx0ZXItLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgU3ltbWV0cmljRmlsdGVyLCB0eXBlbmFtZSBBbGxvYz4KLXZvaWQgc3ltbWV0cmljX2ZpbHRlcjxTeW1tZXRyaWNGaWx0ZXIsIEFsbG9jPjo6YmVnaW5fcmVhZCgpCi17Ci0gICAgTkROQk9PU1RfQVNTRVJUKCEoc3RhdGUoKSAmIGZfd3JpdGUpKTsKLSAgICBzdGF0ZSgpIHw9IGZfcmVhZDsKLSAgICBidWYoKS5zZXQoMCwgMCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFN5bW1ldHJpY0ZpbHRlciwgdHlwZW5hbWUgQWxsb2M+Ci12b2lkIHN5bW1ldHJpY19maWx0ZXI8U3ltbWV0cmljRmlsdGVyLCBBbGxvYz46OmJlZ2luX3dyaXRlKCkKLXsKLSAgICBORE5CT09TVF9BU1NFUlQoIShzdGF0ZSgpICYgZl9yZWFkKSk7Ci0gICAgc3RhdGUoKSB8PSBmX3dyaXRlOwotICAgIGJ1ZigpLnNldCgwLCBidWYoKS5zaXplKCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTeW1tZXRyaWNGaWx0ZXIsIHR5cGVuYW1lIEFsbG9jPgotdm9pZCBzeW1tZXRyaWNfZmlsdGVyPFN5bW1ldHJpY0ZpbHRlciwgQWxsb2M+OjpjbG9zZV9pbXBsKCkKLXsKLSAgICBzdGF0ZSgpID0gMDsKLSAgICBidWYoKS5zZXQoMCwgMCk7Ci0gICAgZmlsdGVyKCkuY2xvc2UoKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgU3ltbWV0cmljRmlsdGVyLCB0eXBlbmFtZSBBbGxvYz4KLXR5cGVuYW1lIHN5bW1ldHJpY19maWx0ZXI8U3ltbWV0cmljRmlsdGVyLCBBbGxvYz46OnN0cmluZ190eXBlCi1zeW1tZXRyaWNfZmlsdGVyPFN5bW1ldHJpY0ZpbHRlciwgQWxsb2M+Ojp1bmNvbnN1bWVkX2lucHV0KCkgY29uc3QKLXsgcmV0dXJuIHN0cmluZ190eXBlKGJ1ZigpLnB0cigpLCBidWYoKS5lcHRyKCkpOyB9Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcD4gIC8vIE1TVkMuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19TWU1NRVRSSUNfRklMVEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL3Rlc3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL3Rlc3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYWQ3YjVkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci90ZXN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMiArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwNS0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfRklMVEVSX1RFU1RfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gICAgICAgICAgICAgICAvLyBORE5CT09TVF9NU1ZDLHB1dCBzaXplX3QgaW4gc3RkLgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxhbGdvcml0aG0+ICAgICAgICAgICAgICAgICAgICAgIC8vIG1pbi4KLSNpbmNsdWRlIDxjc3RkZGVmPiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNpemVfdC4KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApIHx8IFwKLSAgICBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTY0KSkgfHwgXAotICAgIE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgPD0gMHgzMDAzKSBcCi0gICAgLyoqLwotIyBpbmNsdWRlIDxjc3RkbGliPiAgICAgICAgICAgICAgICAgICAgICAgLy8gcmFuZC4KLSNlbmRpZgotI2luY2x1ZGUgPGNzdHJpbmc+ICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWVtY3B5LCBzdHJsZW4uCi0jaW5jbHVkZSA8aXRlcmF0b3I+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHZlY3Rvcj4KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSAmJiBcCi0gICAgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NjQpKSAmJiBcCi0gICAgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgPD0gMHgzMDAzKSBcCi0gICAgLyoqLwotIyBpbmNsdWRlIDxuZG5ib29zdC9yYW5kb20vbGluZWFyX2NvbmdydWVudGlhbC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3JhbmRvbS91bmlmb3JtX3NtYWxsaW50LmhwcD4KLSNlbmRpZgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jYXRlZ29yaWVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY29tcG9zZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NvcHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV2aWNlL2FycmF5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV2aWNlL2JhY2tfaW5zZXJ0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9vcGVyYXRpb25zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotCi0jdW5kZWYgbWVtY3B5Ci0jdW5kZWYgcmFuZAotI3VuZGVmIHN0cmxlbgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSkgJiYgIWRlZmluZWQoX19MSUJDT01PX18pCi1uYW1lc3BhY2Ugc3RkIHsgCi0gICAgdXNpbmcgOjptZW1jcHk7IAotICAgIHVzaW5nIDo6c3RybGVuOyAKLSAgICAjaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSB8fCBcCi0gICAgICAgIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NjQpKSB8fCBcCi0gICAgICAgIE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgPD0gMHgzMDAzKSBcCi0gICAgICAgIC8qKi8KLSAgICAgICAgdXNpbmcgOjpyYW5kOyAKLSAgICAjZW5kaWYKLX0KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotTkROQk9PU1RfSU9TVFJFQU1TX0JPT0xfVFJBSVRfREVGKGlzX3N0cmluZywgc3RkOjpiYXNpY19zdHJpbmcsIDMpCi0KLWNvbnN0IHN0ZDo6c3RyZWFtc2l6ZSBkZWZhdWx0X2luY3JlbWVudCA9IDU7Ci0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSAmJiBcCi0gICAgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NjQpKSAmJiBcCi0gICAgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgPD0gMHgzMDAzKSBcCi0gICAgLyoqLwotICAgIHN0ZDo6c3RyZWFtc2l6ZSByYW5kKGludCBpbmMpCi0gICAgewotICAgICAgICBzdGF0aWMgcmFuZDQ4ICAgICAgICAgICAgICAgIHJhbmRvbV9nZW47Ci0gICAgICAgIHN0YXRpYyB1bmlmb3JtX3NtYWxsaW50PGludD4gcmFuZG9tX2Rpc3QoMCwgaW5jKTsKLSAgICAgICAgcmV0dXJuIHJhbmRvbV9kaXN0KHJhbmRvbV9nZW4pOwotICAgIH0KLSNlbHNlCi0gICAgc3RkOjpzdHJlYW1zaXplIHJhbmQoaW50IGluYykgCi0gICAgeyAKLSAgICAgICAgcmV0dXJuIChzdGQ6OnJhbmQoKSAqIGluYyArIDEpIC8gUkFORF9NQVg7IAotICAgIH0KLSNlbmRpZgotCi1jbGFzcyBub25fYmxvY2tpbmdfc291cmNlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIGNoYXIgY2hhcl90eXBlOwotICAgIHN0cnVjdCBjYXRlZ29yeQotICAgICAgICA6IHNvdXJjZV90YWcsCi0gICAgICAgICAgcGVla2FibGVfdGFnCi0gICAgICAgIHsgfTsKLSAgICBleHBsaWNpdCBub25fYmxvY2tpbmdfc291cmNlKCBjb25zdCBzdGQ6OnN0cmluZyYgZGF0YSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplIGluYyA9IGRlZmF1bHRfaW5jcmVtZW50ICkgCi0gICAgICAgIDogZGF0YV8oZGF0YSksIGluY18oaW5jKSwgcG9zXygwKQotICAgICAgICB7IH0KLSAgICBzdGQ6OnN0cmVhbXNpemUgcmVhZChjaGFyKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7Ci0gICAgICAgIGlmIChwb3NfID09IHN0YXRpY19jYXN0PHN0ZDo6c3RyZWFtc2l6ZT4oZGF0YV8uc2l6ZSgpKSkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIGF2YWlsID0gCi0gICAgICAgICAgICAoc3RkOjptaW4pIChuLCBzdGF0aWNfY2FzdDxzdGQ6OnN0cmVhbXNpemU+KGRhdGFfLnNpemUoKSAtIHBvc18pKTsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIGFtdCA9IChzdGQ6Om1pbikgKHJhbmQoaW5jXyksIGF2YWlsKTsKLSAgICAgICAgaWYgKGFtdCkKLSAgICAgICAgICAgIHN0ZDo6bWVtY3B5KHMsIGRhdGFfLmNfc3RyKCkgKyBwb3NfLCBhbXQpOwotICAgICAgICBwb3NfICs9IGFtdDsKLSAgICAgICAgcmV0dXJuIGFtdDsKLSAgICB9Ci0KLSAgICBib29sIHB1dGJhY2soY2hhciBjKQotICAgIHsKLSAgICAgICAgaWYgKHBvc18gPiAwKSB7Ci0gICAgICAgICAgICBkYXRhX1stLXBvc19dID0gYzsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci1wcml2YXRlOgotICAgIHN0ZDo6c3RyaW5nICAgICAgZGF0YV87Ci0gICAgc3RkOjpzdHJlYW1zaXplICBpbmNfLCBwb3NfOwotfTsKLQotY2xhc3Mgbm9uX2Jsb2NraW5nX3NpbmsgOiBwdWJsaWMgc2luayB7Ci1wdWJsaWM6Ci0gICAgbm9uX2Jsb2NraW5nX3NpbmsoIHN0ZDo6c3RyaW5nJiBkZXN0LAotICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmVhbXNpemUgaW5jID0gZGVmYXVsdF9pbmNyZW1lbnQgKSAKLSAgICAgICAgOiBkZXN0XyhkZXN0KSwgaW5jXyhpbmMpIAotICAgICAgICB7IH0KLSAgICBzdGQ6OnN0cmVhbXNpemUgd3JpdGUoY29uc3QgY2hhciogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgewotICAgICAgICBzdGQ6OnN0cmVhbXNpemUgYW10ID0gKHN0ZDo6bWluKSAocmFuZChpbmNfKSwgbik7Ci0gICAgICAgIGRlc3RfLmluc2VydChkZXN0Xy5lbmQoKSwgcywgcyArIGFtdCk7Ci0gICAgICAgIHJldHVybiBhbXQ7Ci0gICAgfQotcHJpdmF0ZToKLSAgICBub25fYmxvY2tpbmdfc2luayYgb3BlcmF0b3I9KGNvbnN0IG5vbl9ibG9ja2luZ19zaW5rJik7Ci0gICAgc3RkOjpzdHJpbmcmICAgICBkZXN0XzsKLSAgICBzdGQ6OnN0cmVhbXNpemUgIGluY187Ci19OwotICAgICAgICAgICAgICAgIAotLy8tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgdGVzdF9pbnB1dF9maWx0ZXItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyPgotYm9vbCB0ZXN0X2lucHV0X2ZpbHRlciggRmlsdGVyIGZpbHRlciwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgaW5wdXQsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG91dHB1dCwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtcGw6OnRydWVfICkKLXsKLSAgICBmb3IgKCBpbnQgaW5jID0gZGVmYXVsdF9pbmNyZW1lbnQ7IAotICAgICAgICAgIGluYyA8IGRlZmF1bHRfaW5jcmVtZW50ICogNDA7IAotICAgICAgICAgIGluYyArPSBkZWZhdWx0X2luY3JlbWVudCApCi0gICAgewotICAgICAgICBub25fYmxvY2tpbmdfc291cmNlICBzcmMoaW5wdXQsIGluYyk7Ci0gICAgICAgIHN0ZDo6c3RyaW5nICAgICAgICAgIGRlc3Q7Ci0gICAgICAgIGlvc3RyZWFtczo6Y29weShjb21wb3NlKGZpbHRlciwgc3JjKSwgaW9zdHJlYW1zOjpiYWNrX2luc2VydGVyKGRlc3QpKTsKLSAgICAgICAgaWYgKGRlc3QgIT0gb3V0cHV0KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyLCB0eXBlbmFtZSBTb3VyY2UxLCB0eXBlbmFtZSBTb3VyY2UyPgotYm9vbCB0ZXN0X2lucHV0X2ZpbHRlciggRmlsdGVyIGZpbHRlciwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTb3VyY2UxJiBpbnB1dCwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTb3VyY2UyJiBvdXRwdXQsIAotICAgICAgICAgICAgICAgICAgICAgICAgbXBsOjpmYWxzZV8gKQotewotICAgIHN0ZDo6c3RyaW5nIGluOwotICAgIHN0ZDo6c3RyaW5nIG91dDsKLSAgICBpb3N0cmVhbXM6OmNvcHkoaW5wdXQsIGlvc3RyZWFtczo6YmFja19pbnNlcnRlcihpbikpOwotICAgIGlvc3RyZWFtczo6Y29weShvdXRwdXQsIGlvc3RyZWFtczo6YmFja19pbnNlcnRlcihvdXQpKTsKLSAgICByZXR1cm4gdGVzdF9pbnB1dF9maWx0ZXIoZmlsdGVyLCBpbiwgb3V0KTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyLCB0eXBlbmFtZSBTb3VyY2UxLCB0eXBlbmFtZSBTb3VyY2UyPgotYm9vbCB0ZXN0X2lucHV0X2ZpbHRlciggRmlsdGVyIGZpbHRlciwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTb3VyY2UxJiBpbnB1dCwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTb3VyY2UyJiBvdXRwdXQgKQotewotICAgIC8vIFVzZSB0YWcgZGlzcGF0Y2ggdG8gY29tcGVuc2F0ZSBmb3IgYmFkIG92ZXJsb2FkIHJlc29sdXRpb24uCi0gICAgcmV0dXJuIHRlc3RfaW5wdXRfZmlsdGVyKCBmaWx0ZXIsIGlucHV0LCBvdXRwdXQsICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfc3RyaW5nPFNvdXJjZTE+KCkgKTsKLX0KLQotLy8tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgdGVzdF9vdXRwdXRfZmlsdGVyLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyPgotYm9vbCB0ZXN0X291dHB1dF9maWx0ZXIoIEZpbHRlciBmaWx0ZXIsIAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBpbnB1dCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG91dHB1dCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgbXBsOjp0cnVlXyApCi17Ci0gICAgZm9yICggaW50IGluYyA9IGRlZmF1bHRfaW5jcmVtZW50OyAKLSAgICAgICAgICBpbmMgPCBkZWZhdWx0X2luY3JlbWVudCAqIDQwOyAKLSAgICAgICAgICBpbmMgKz0gZGVmYXVsdF9pbmNyZW1lbnQgKQotICAgIHsKLSAgICAgICAgYXJyYXlfc291cmNlICBzcmMoaW5wdXQuZGF0YSgpLCBpbnB1dC5kYXRhKCkgKyBpbnB1dC5zaXplKCkpOwotICAgICAgICBzdGQ6OnN0cmluZyAgIGRlc3Q7Ci0gICAgICAgIGlvc3RyZWFtczo6Y29weShzcmMsIGNvbXBvc2UoZmlsdGVyLCBub25fYmxvY2tpbmdfc2luayhkZXN0LCBpbmMpKSk7Ci0gICAgICAgIGlmIChkZXN0ICE9IG91dHB1dCApCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIFNvdXJjZTEsIHR5cGVuYW1lIFNvdXJjZTI+Ci1ib29sIHRlc3Rfb3V0cHV0X2ZpbHRlciggRmlsdGVyIGZpbHRlciwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU291cmNlMSYgaW5wdXQsIAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNvdXJjZTImIG91dHB1dCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgbXBsOjpmYWxzZV8gKQotewotICAgIHN0ZDo6c3RyaW5nIGluOwotICAgIHN0ZDo6c3RyaW5nIG91dDsKLSAgICBpb3N0cmVhbXM6OmNvcHkoaW5wdXQsIGlvc3RyZWFtczo6YmFja19pbnNlcnRlcihpbikpOwotICAgIGlvc3RyZWFtczo6Y29weShvdXRwdXQsIGlvc3RyZWFtczo6YmFja19pbnNlcnRlcihvdXQpKTsKLSAgICByZXR1cm4gdGVzdF9vdXRwdXRfZmlsdGVyKGZpbHRlciwgaW4sIG91dCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlciwgdHlwZW5hbWUgU291cmNlMSwgdHlwZW5hbWUgU291cmNlMj4KLWJvb2wgdGVzdF9vdXRwdXRfZmlsdGVyKCBGaWx0ZXIgZmlsdGVyLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTb3VyY2UxJiBpbnB1dCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU291cmNlMiYgb3V0cHV0ICkKLXsKLSAgICAvLyBVc2UgdGFnIGRpc3BhdGNoIHRvIGNvbXBlbnNhdGUgZm9yIGJhZCBvdmVybG9hZCByZXNvbHV0aW9uLgotICAgIHJldHVybiB0ZXN0X291dHB1dF9maWx0ZXIoIGZpbHRlciwgaW5wdXQsIG91dHB1dCwgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfc3RyaW5nPFNvdXJjZTE+KCkgKTsKLX0KLQotLy8tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgdGVzdF9maWx0ZXJfcGFpci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgT3V0cHV0RmlsdGVyLCB0eXBlbmFtZSBJbnB1dEZpbHRlcj4KLWJvb2wgdGVzdF9maWx0ZXJfcGFpciggT3V0cHV0RmlsdGVyIG91dCwgCi0gICAgICAgICAgICAgICAgICAgICAgIElucHV0RmlsdGVyIGluLCAKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGRhdGEsIAotICAgICAgICAgICAgICAgICAgICAgICBtcGw6OnRydWVfICkKLXsKLSAgICBmb3IgKCBpbnQgaW5jID0gZGVmYXVsdF9pbmNyZW1lbnQ7IAotICAgICAgICAgIGluYyA8PSBkZWZhdWx0X2luY3JlbWVudCAqIDQwOyAKLSAgICAgICAgICBpbmMgKz0gZGVmYXVsdF9pbmNyZW1lbnQgKQotICAgIHsKLSAgICAgICAgewotICAgICAgICAgICAgYXJyYXlfc291cmNlICBzcmMoZGF0YS5kYXRhKCksIGRhdGEuZGF0YSgpICsgZGF0YS5zaXplKCkpOwotICAgICAgICAgICAgc3RkOjpzdHJpbmcgICB0ZW1wOwotICAgICAgICAgICAgc3RkOjpzdHJpbmcgICBkZXN0OwotICAgICAgICAgICAgaW9zdHJlYW1zOjpjb3B5KHNyYywgY29tcG9zZShvdXQsIG5vbl9ibG9ja2luZ19zaW5rKHRlbXAsIGluYykpKTsKLSAgICAgICAgICAgIGlvc3RyZWFtczo6Y29weSggCi0gICAgICAgICAgICAgICAgY29tcG9zZShpbiwgbm9uX2Jsb2NraW5nX3NvdXJjZSh0ZW1wLCBpbmMpKSwKLSAgICAgICAgICAgICAgICBpb3N0cmVhbXM6OmJhY2tfaW5zZXJ0ZXIoZGVzdCkKLSAgICAgICAgICAgICk7Ci0gICAgICAgICAgICBpZiAoZGVzdCAhPSBkYXRhKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICB7Ci0gICAgICAgICAgICBhcnJheV9zb3VyY2UgIHNyYyhkYXRhLmRhdGEoKSwgZGF0YS5kYXRhKCkgKyBkYXRhLnNpemUoKSk7Ci0gICAgICAgICAgICBzdGQ6OnN0cmluZyAgIHRlbXA7Ci0gICAgICAgICAgICBzdGQ6OnN0cmluZyAgIGRlc3Q7Ci0gICAgICAgICAgICBpb3N0cmVhbXM6OmNvcHkoc3JjLCBjb21wb3NlKG91dCwgbm9uX2Jsb2NraW5nX3NpbmsodGVtcCwgaW5jKSkpOwotICAgICAgICAgICAgLy8gdHJ1bmNhdGUgdGhlIGZpbGUsIHRoaXMgc2hvdWxkIG5vdCBsb29wLCBpdCBtYXkgdGhyb3cKLSAgICAgICAgICAgIC8vIHN0ZDo6aW9zX2Jhc2U6OmZhaWx1cmUsIHdoaWNoIHdlIHN3YWxsb3cuCi0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIHRlbXAucmVzaXplKHRlbXAuc2l6ZSgpIC8gMik7Ci0gICAgICAgICAgICAgICAgaW9zdHJlYW1zOjpjb3B5KCAKLSAgICAgICAgICAgICAgICAgICAgY29tcG9zZShpbiwgbm9uX2Jsb2NraW5nX3NvdXJjZSh0ZW1wLCBpbmMpKSwKLSAgICAgICAgICAgICAgICAgICAgaW9zdHJlYW1zOjpiYWNrX2luc2VydGVyKGRlc3QpCi0gICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgIH0gY2F0Y2goc3RkOjppb3NfYmFzZTo6ZmFpbHVyZSYpIHt9Ci0gICAgICAgIH0KLSAgICAgICAgewotICAgICAgICAgICAgYXJyYXlfc291cmNlICBzcmMoZGF0YS5kYXRhKCksIGRhdGEuZGF0YSgpICsgZGF0YS5zaXplKCkpOwotICAgICAgICAgICAgc3RkOjpzdHJpbmcgICB0ZW1wOwotICAgICAgICAgICAgc3RkOjpzdHJpbmcgICBkZXN0OwotICAgICAgICAgICAgaW9zdHJlYW1zOjpjb3B5KGNvbXBvc2Uob3V0LCBzcmMpLCBub25fYmxvY2tpbmdfc2luayh0ZW1wLCBpbmMpKTsKLSAgICAgICAgICAgIGlvc3RyZWFtczo6Y29weSggCi0gICAgICAgICAgICAgICAgbm9uX2Jsb2NraW5nX3NvdXJjZSh0ZW1wLCBpbmMpLAotICAgICAgICAgICAgICAgIGNvbXBvc2UoaW4sIGlvc3RyZWFtczo6YmFja19pbnNlcnRlcihkZXN0KSkKLSAgICAgICAgICAgICk7Ci0gICAgICAgICAgICBpZiAoZGVzdCAhPSBkYXRhKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICB7Ci0gICAgICAgICAgICBhcnJheV9zb3VyY2UgIHNyYyhkYXRhLmRhdGEoKSwgZGF0YS5kYXRhKCkgKyBkYXRhLnNpemUoKSk7Ci0gICAgICAgICAgICBzdGQ6OnN0cmluZyAgIHRlbXA7Ci0gICAgICAgICAgICBzdGQ6OnN0cmluZyAgIGRlc3Q7Ci0gICAgICAgICAgICBpb3N0cmVhbXM6OmNvcHkoY29tcG9zZShvdXQsIHNyYyksIG5vbl9ibG9ja2luZ19zaW5rKHRlbXAsIGluYykpOwotICAgICAgICAgICAgLy8gdHJ1bmNhdGUgdGhlIGZpbGUsIHRoaXMgc2hvdWxkIG5vdCBsb29wLCBpdCBtYXkgdGhyb3cKLSAgICAgICAgICAgIC8vIHN0ZDo6aW9zX2Jhc2U6OmZhaWx1cmUsIHdoaWNoIHdlIHN3YWxsb3cuCi0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIHRlbXAucmVzaXplKHRlbXAuc2l6ZSgpIC8gMik7Ci0gICAgICAgICAgICAgICAgaW9zdHJlYW1zOjpjb3B5KCAKLSAgICAgICAgICAgICAgICAgICAgbm9uX2Jsb2NraW5nX3NvdXJjZSh0ZW1wLCBpbmMpLAotICAgICAgICAgICAgICAgICAgICBjb21wb3NlKGluLCBpb3N0cmVhbXM6OmJhY2tfaW5zZXJ0ZXIoZGVzdCkpCi0gICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgIH0gY2F0Y2goc3RkOjppb3NfYmFzZTo6ZmFpbHVyZSYpIHt9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE91dHB1dEZpbHRlciwgdHlwZW5hbWUgSW5wdXRGaWx0ZXIsIHR5cGVuYW1lIFNvdXJjZT4KLWJvb2wgdGVzdF9maWx0ZXJfcGFpciggT3V0cHV0RmlsdGVyIG91dCwgCi0gICAgICAgICAgICAgICAgICAgICAgIElucHV0RmlsdGVyIGluLCAKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU291cmNlJiBkYXRhLCAKLSAgICAgICAgICAgICAgICAgICAgICAgbXBsOjpmYWxzZV8gKQotewotICAgIHN0ZDo6c3RyaW5nIHN0cjsKLSAgICBpb3N0cmVhbXM6OmNvcHkoZGF0YSwgaW9zdHJlYW1zOjpiYWNrX2luc2VydGVyKHN0cikpOwotICAgIHJldHVybiB0ZXN0X2ZpbHRlcl9wYWlyKG91dCwgaW4sIHN0cik7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE91dHB1dEZpbHRlciwgdHlwZW5hbWUgSW5wdXRGaWx0ZXIsIHR5cGVuYW1lIFNvdXJjZT4KLWJvb2wgdGVzdF9maWx0ZXJfcGFpciggT3V0cHV0RmlsdGVyIG91dCwgCi0gICAgICAgICAgICAgICAgICAgICAgIElucHV0RmlsdGVyIGluLCAKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU291cmNlJiBkYXRhICkKLXsKLSAgICAvLyBVc2UgdGFnIGRpc3BhdGNoIHRvIGNvbXBlbnNhdGUgZm9yIGJhZCBvdmVybG9hZCByZXNvbHV0aW9uLgotICAgIHJldHVybiB0ZXN0X2ZpbHRlcl9wYWlyKG91dCwgaW4sIGRhdGEsIGlzX3N0cmluZzxTb3VyY2U+KCkpOwotfQotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0ZJTFRFUl9URVNUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL3psaWIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL3psaWIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YzVlZDM5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci96bGliLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQyNyArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gTm90ZTogY3VzdG9tIGFsbG9jYXRvcnMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gVkM2LCBzaW5jZSB0aGF0IGNvbXBpbGVyCi0vLyBoYWQgdHJvdWJsZSBmaW5kaW5nIHRoZSBmdW5jdGlvbiB6bGliX2Jhc2U6OmRvX2luaXQuCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX1pMSUJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19aTElCX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgIAotCi0jaW5jbHVkZSA8Y2Fzc2VydD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0jaW5jbHVkZSA8aW9zZndkPiAgICAgICAgICAgIC8vIHN0cmVhbXNpemUuICAgICAgICAgICAgICAgICAKLSNpbmNsdWRlIDxtZW1vcnk+ICAgICAgICAgICAgLy8gYWxsb2NhdG9yLCBiYWRfYWxsb2MuCi0jaW5jbHVkZSA8bmV3PiAgICAgICAgICAKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgLy8gTVNWQywgU1RBVElDX0NPTlNUQU5ULCBERURVQ0VEX1RZUEVOQU1FLCBESU5LVU0uCi0jaW5jbHVkZSA8bmRuYm9vc3QvY3N0ZGludC5ocHA+IC8vIHVpbnQqX3QKLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NvbnN0YW50cy5ocHA+ICAgLy8gYnVmZmVyIHNpemUuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvYXV0b19saW5rLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9keW5fbGluay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvd2lkZV9zdHJlYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy96bGliLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvcy5ocHA+ICAvLyBmYWlsdXJlLCBzdHJlYW1zaXplLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9maWx0ZXIvc3ltbWV0cmljLmhwcD4gICAgICAgICAgICAgICAgCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3BpcGVsaW5lLmhwcD4gICAgICAgICAgICAgICAgCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0KLS8vIE11c3QgY29tZSBsYXN0LgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MjUxIDQyMzEgNDY2MCkgICAgICAgICAvLyBEZXBlbmRlbmNpZXMgbm90IGV4cG9ydGVkLgotI2VuZGlmCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL2FiaV9wcmVmaXguaHBwPiAgICAgICAgICAgCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi1uYW1lc3BhY2UgemxpYiB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFR5cGVkZWZzCi0KLXR5cGVkZWYgdWludDMyX3QgdWludDsKLXR5cGVkZWYgdWludDhfdCBieXRlOwotdHlwZWRlZiB1aW50MzJfdCB1bG9uZzsKLQotLy8gUHJlZml4ICd4JyBwcmV2ZW50cyBzeW1ib2xzIGZyb20gYmVpbmcgcmVkZWZpbmVkIHdoZW4gWl9QUkVGSVggaXMgZGVmaW5lZAotdHlwZWRlZiB2b2lkKiAoKnhhbGxvY19mdW5jKSh2b2lkKiwgemxpYjo6dWludCwgemxpYjo6dWludCk7Ci10eXBlZGVmIHZvaWQgKCp4ZnJlZV9mdW5jKSh2b2lkKiwgdm9pZCopOwotCi0gICAgICAgICAgICAgICAgICAgIC8vIENvbXByZXNzaW9uIGxldmVscwotCi1ORE5CT09TVF9JT1NUUkVBTVNfREVDTCBleHRlcm4gY29uc3QgaW50IG5vX2NvbXByZXNzaW9uOwotTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZXh0ZXJuIGNvbnN0IGludCBiZXN0X3NwZWVkOwotTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZXh0ZXJuIGNvbnN0IGludCBiZXN0X2NvbXByZXNzaW9uOwotTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZXh0ZXJuIGNvbnN0IGludCBkZWZhdWx0X2NvbXByZXNzaW9uOwotCi0gICAgICAgICAgICAgICAgICAgIC8vIENvbXByZXNzaW9uIG1ldGhvZHMKLQotTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZXh0ZXJuIGNvbnN0IGludCBkZWZsYXRlZDsKLQotICAgICAgICAgICAgICAgICAgICAvLyBDb21wcmVzc2lvbiBzdHJhdGVnaWVzCi0KLU5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGV4dGVybiBjb25zdCBpbnQgZGVmYXVsdF9zdHJhdGVneTsKLU5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGV4dGVybiBjb25zdCBpbnQgZmlsdGVyZWQ7Ci1ORE5CT09TVF9JT1NUUkVBTVNfREVDTCBleHRlcm4gY29uc3QgaW50IGh1ZmZtYW5fb25seTsKLQotICAgICAgICAgICAgICAgICAgICAvLyBTdGF0dXMgY29kZXMKLQotTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZXh0ZXJuIGNvbnN0IGludCBva2F5OwotTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZXh0ZXJuIGNvbnN0IGludCBzdHJlYW1fZW5kOwotTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZXh0ZXJuIGNvbnN0IGludCBzdHJlYW1fZXJyb3I7Ci1ORE5CT09TVF9JT1NUUkVBTVNfREVDTCBleHRlcm4gY29uc3QgaW50IHZlcnNpb25fZXJyb3I7Ci1ORE5CT09TVF9JT1NUUkVBTVNfREVDTCBleHRlcm4gY29uc3QgaW50IGRhdGFfZXJyb3I7Ci1ORE5CT09TVF9JT1NUUkVBTVNfREVDTCBleHRlcm4gY29uc3QgaW50IG1lbV9lcnJvcjsKLU5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGV4dGVybiBjb25zdCBpbnQgYnVmX2Vycm9yOwotCi0gICAgICAgICAgICAgICAgICAgIC8vIEZsdXNoIGNvZGVzCi0KLU5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGV4dGVybiBjb25zdCBpbnQgZmluaXNoOwotTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZXh0ZXJuIGNvbnN0IGludCBub19mbHVzaDsKLU5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGV4dGVybiBjb25zdCBpbnQgc3luY19mbHVzaDsKLQotICAgICAgICAgICAgICAgICAgICAvLyBDb2RlIGZvciBjdXJyZW50IE9TCi0KLS8vTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZXh0ZXJuIGNvbnN0IGludCBvc19jb2RlOwotCi0gICAgICAgICAgICAgICAgICAgIC8vIE51bGwgcG9pbnRlciBjb25zdGFudC4KLQotY29uc3QgaW50IG51bGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAwOwotCi0gICAgICAgICAgICAgICAgICAgIC8vIERlZmF1bHQgdmFsdWVzCi0KLWNvbnN0IGludCBkZWZhdWx0X3dpbmRvd19iaXRzICAgICAgICAgICAgICAgID0gMTU7Ci1jb25zdCBpbnQgZGVmYXVsdF9tZW1fbGV2ZWwgICAgICAgICAgICAgICAgICA9IDg7Ci1jb25zdCBib29sIGRlZmF1bHRfY3JjICAgICAgICAgICAgICAgICAgICAgICA9IGZhbHNlOwotY29uc3QgYm9vbCBkZWZhdWx0X25vaGVhZGVyICAgICAgICAgICAgICAgICAgPSBmYWxzZTsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIHpsaWIuIAotCi0vLwotLy8gQ2xhc3MgbmFtZTogemxpYl9wYXJhbXMuCi0vLyBEZXNjcmlwdGlvbjogRW5jYXBzdWxhdGVzIHRoZSBwYXJhbWV0ZXJzIHBhc3NlZCB0byBkZWZsYXRlSW5pdDIKLS8vICAgICAgYW5kIGluZmxhdGVJbml0MiB0byBjdXN0b21pemUgY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24uCi0vLwotc3RydWN0IHpsaWJfcGFyYW1zIHsKLQotICAgIC8vIE5vbi1leHBsaWNpdCBjb25zdHJ1Y3Rvci4KLSAgICB6bGliX3BhcmFtcyggaW50IGxldmVsICAgICAgICAgICA9IHpsaWI6OmRlZmF1bHRfY29tcHJlc3Npb24sCi0gICAgICAgICAgICAgICAgIGludCBtZXRob2QgICAgICAgICAgPSB6bGliOjpkZWZsYXRlZCwKLSAgICAgICAgICAgICAgICAgaW50IHdpbmRvd19iaXRzICAgICA9IHpsaWI6OmRlZmF1bHRfd2luZG93X2JpdHMsIAotICAgICAgICAgICAgICAgICBpbnQgbWVtX2xldmVsICAgICAgID0gemxpYjo6ZGVmYXVsdF9tZW1fbGV2ZWwsIAotICAgICAgICAgICAgICAgICBpbnQgc3RyYXRlZ3kgICAgICAgID0gemxpYjo6ZGVmYXVsdF9zdHJhdGVneSwKLSAgICAgICAgICAgICAgICAgYm9vbCBub2hlYWRlciAgICAgICA9IHpsaWI6OmRlZmF1bHRfbm9oZWFkZXIsCi0gICAgICAgICAgICAgICAgIGJvb2wgY2FsY3VsYXRlX2NyYyAgPSB6bGliOjpkZWZhdWx0X2NyYyApCi0gICAgICAgIDogbGV2ZWwobGV2ZWwpLCBtZXRob2QobWV0aG9kKSwgd2luZG93X2JpdHMod2luZG93X2JpdHMpLAotICAgICAgICAgIG1lbV9sZXZlbChtZW1fbGV2ZWwpLCBzdHJhdGVneShzdHJhdGVneSksICAKLSAgICAgICAgICBub2hlYWRlcihub2hlYWRlciksIGNhbGN1bGF0ZV9jcmMoY2FsY3VsYXRlX2NyYykKLSAgICAgICAgeyB9Ci0gICAgaW50IGxldmVsOwotICAgIGludCBtZXRob2Q7Ci0gICAgaW50IHdpbmRvd19iaXRzOwotICAgIGludCBtZW1fbGV2ZWw7Ci0gICAgaW50IHN0cmF0ZWd5OwotICAgIGJvb2wgbm9oZWFkZXI7Ci0gICAgYm9vbCBjYWxjdWxhdGVfY3JjOwotfTsKLQotLy8KLS8vIENsYXNzIG5hbWU6IHpsaWJfZXJyb3IuCi0vLyBEZXNjcmlwdGlvbjogU3ViY2xhc3Mgb2Ygc3RkOjppb3M6OmZhaWx1cmUgdGhyb3duIHRvIGluZGljYXRlCi0vLyAgICAgemxpYiBlcnJvcnMgb3RoZXIgdGhhbiBvdXQtb2YtbWVtb3J5IGNvbmRpdGlvbnMuCi0vLwotY2xhc3MgTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgemxpYl9lcnJvciA6IHB1YmxpYyBORE5CT09TVF9JT1NUUkVBTVNfRkFJTFVSRSB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgemxpYl9lcnJvcihpbnQgZXJyb3IpOwotICAgIGludCBlcnJvcigpIGNvbnN0IHsgcmV0dXJuIGVycm9yXzsgfQotICAgIHN0YXRpYyB2b2lkIGNoZWNrIE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OKGludCBlcnJvcik7Ci1wcml2YXRlOgotICAgIGludCBlcnJvcl87Ci19OwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+Ci1zdHJ1Y3QgemxpYl9hbGxvY2F0b3JfdHJhaXRzIHsKLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0FMTE9DQVRPUgotICAgIHR5cGVkZWYgdHlwZW5hbWUgQWxsb2M6OnRlbXBsYXRlIHJlYmluZDxjaGFyPjo6b3RoZXIgdHlwZTsKLSNlbHNlCi0gICAgdHlwZWRlZiBzdGQ6OmFsbG9jYXRvcjxjaGFyPiB0eXBlOwotI2VuZGlmCi19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgQWxsb2MsCi0gICAgICAgICAgdHlwZW5hbWUgQmFzZSA9IC8vIFZDNiB3b3JrYXJvdW5kIChDMjUxNikKLSAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSB6bGliX2FsbG9jYXRvcl90cmFpdHM8QWxsb2M+Ojp0eXBlID4KLXN0cnVjdCB6bGliX2FsbG9jYXRvciA6IHByaXZhdGUgQmFzZSB7Ci1wcml2YXRlOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgQmFzZTo6c2l6ZV90eXBlIHNpemVfdHlwZTsKLXB1YmxpYzoKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgY3VzdG9tID0gCi0gICAgICAgICghaXNfc2FtZTxzdGQ6OmFsbG9jYXRvcjxjaGFyPiwgQmFzZT46OnZhbHVlKSk7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB6bGliX2FsbG9jYXRvcl90cmFpdHM8QWxsb2M+Ojp0eXBlIGFsbG9jYXRvcl90eXBlOwotICAgIHN0YXRpYyB2b2lkKiBhbGxvY2F0ZSh2b2lkKiBzZWxmLCB6bGliOjp1aW50IGl0ZW1zLCB6bGliOjp1aW50IHNpemUpOwotICAgIHN0YXRpYyB2b2lkIGRlYWxsb2NhdGUodm9pZCogc2VsZiwgdm9pZCogYWRkcmVzcyk7Ci19OwotCi1jbGFzcyBORE5CT09TVF9JT1NUUkVBTVNfREVDTCB6bGliX2Jhc2UgeyAKLXB1YmxpYzoKLSAgICB0eXBlZGVmIGNoYXIgY2hhcl90eXBlOwotcHJvdGVjdGVkOgotICAgIHpsaWJfYmFzZSgpOwotICAgIH56bGliX2Jhc2UoKTsKLSAgICB2b2lkKiBzdHJlYW0oKSB7IHJldHVybiBzdHJlYW1fOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+IAotICAgIHZvaWQgaW5pdCggY29uc3QgemxpYl9wYXJhbXMmIHAsIAotICAgICAgICAgICAgICAgYm9vbCBjb21wcmVzcywKLSAgICAgICAgICAgICAgIHpsaWJfYWxsb2NhdG9yPEFsbG9jPiYgemFsbG9jICkKLSAgICAgICAgewotICAgICAgICAgICAgYm9vbCBjdXN0b20gPSB6bGliX2FsbG9jYXRvcjxBbGxvYz46OmN1c3RvbTsKLSAgICAgICAgICAgIGRvX2luaXQoIHAsIGNvbXByZXNzLAotICAgICAgICAgICAgICAgICAgICAgI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b20gPyB6bGliX2FsbG9jYXRvcjxBbGxvYz46OmFsbG9jYXRlIDogMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b20gPyB6bGliX2FsbG9jYXRvcjxBbGxvYz46OmRlYWxsb2NhdGUgOiAwLAotICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICAmemFsbG9jICk7Ci0gICAgICAgIH0KLSAgICB2b2lkIGJlZm9yZSggY29uc3QgY2hhciomIHNyY19iZWdpbiwgY29uc3QgY2hhciogc3JjX2VuZCwKLSAgICAgICAgICAgICAgICAgY2hhciomIGRlc3RfYmVnaW4sIGNoYXIqIGRlc3RfZW5kICk7Ci0gICAgdm9pZCBhZnRlciggY29uc3QgY2hhciomIHNyY19iZWdpbiwgY2hhciomIGRlc3RfYmVnaW4sIAotICAgICAgICAgICAgICAgIGJvb2wgY29tcHJlc3MgKTsKLSAgICBpbnQgeGRlZmxhdGUoaW50IGZsdXNoKTsgIC8vIFByZWZpeCAneCcgcHJldmVudHMgc3ltYm9scyBmcm9tIGJlaW5nIAotICAgIGludCB4aW5mbGF0ZShpbnQgZmx1c2gpOyAgLy8gcmVkZWZpbmVkIHdoZW4gWl9QUkVGSVggaXMgZGVmaW5lZAotICAgIHZvaWQgcmVzZXQoYm9vbCBjb21wcmVzcywgYm9vbCByZWFsbG9jKTsKLXB1YmxpYzoKLSAgICB6bGliOjp1bG9uZyBjcmMoKSBjb25zdCB7IHJldHVybiBjcmNfOyB9Ci0gICAgaW50IHRvdGFsX2luKCkgY29uc3QgeyByZXR1cm4gdG90YWxfaW5fOyB9Ci0gICAgaW50IHRvdGFsX291dCgpIGNvbnN0IHsgcmV0dXJuIHRvdGFsX291dF87IH0KLXByaXZhdGU6Ci0gICAgdm9pZCBkb19pbml0KCBjb25zdCB6bGliX3BhcmFtcyYgcCwgYm9vbCBjb21wcmVzcywgCi0gICAgICAgICAgICAgICAgICAjaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotICAgICAgICAgICAgICAgICAgICAgIHpsaWI6OnhhbGxvY19mdW5jLCAKLSAgICAgICAgICAgICAgICAgICAgICB6bGliOjp4ZnJlZV9mdW5jLCAKLSAgICAgICAgICAgICAgICAgICNlbmRpZgotICAgICAgICAgICAgICAgICAgdm9pZCogZGVyaXZlZCApOwotICAgIHZvaWQqICAgICAgICBzdHJlYW1fOyAgICAgICAgIC8vIEFjdHVhbCB0eXBlOiB6X3N0cmVhbSouCi0gICAgYm9vbCAgICAgICAgIGNhbGN1bGF0ZV9jcmNfOwotICAgIHpsaWI6OnVsb25nICBjcmNfOwotICAgIHpsaWI6OnVsb25nICBjcmNfaW1wXzsKLSAgICBpbnQgICAgICAgICAgdG90YWxfaW5fOwotICAgIGludCAgICAgICAgICB0b3RhbF9vdXRfOwotfTsKLQotLy8KLS8vIFRlbXBsYXRlIG5hbWU6IHpsaWJfY29tcHJlc3Nvcl9pbXBsCi0vLyBEZXNjcmlwdGlvbjogTW9kZWwgb2YgQy1TdHlsZSBGaWx0ZSBpbXBsZW1lbnRpbmcgY29tcHJlc3Npb24gYnkKLS8vICAgICAgZGVsZWdhdGluZyB0byB0aGUgemxpYiBmdW5jdGlvbiBkZWZsYXRlLgotLy8KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jID0gc3RkOjphbGxvY2F0b3I8Y2hhcj4gPgotY2xhc3MgemxpYl9jb21wcmVzc29yX2ltcGwgOiBwdWJsaWMgemxpYl9iYXNlLCBwdWJsaWMgemxpYl9hbGxvY2F0b3I8QWxsb2M+IHsgCi1wdWJsaWM6IAotICAgIHpsaWJfY29tcHJlc3Nvcl9pbXBsKGNvbnN0IHpsaWJfcGFyYW1zJiA9IHpsaWI6OmRlZmF1bHRfY29tcHJlc3Npb24pOwotICAgIH56bGliX2NvbXByZXNzb3JfaW1wbCgpOwotICAgIGJvb2wgZmlsdGVyKCBjb25zdCBjaGFyKiYgc3JjX2JlZ2luLCBjb25zdCBjaGFyKiBzcmNfZW5kLAotICAgICAgICAgICAgICAgICBjaGFyKiYgZGVzdF9iZWdpbiwgY2hhciogZGVzdF9lbmQsIGJvb2wgZmx1c2ggKTsKLSAgICB2b2lkIGNsb3NlKCk7Ci19OwotCi0vLwotLy8gVGVtcGxhdGUgbmFtZTogemxpYl9jb21wcmVzc29yCi0vLyBEZXNjcmlwdGlvbjogTW9kZWwgb2YgQy1TdHlsZSBGaWx0ZSBpbXBsZW1lbnRpbmcgZGVjb21wcmVzc2lvbiBieQotLy8gICAgICBkZWxlZ2F0aW5nIHRvIHRoZSB6bGliIGZ1bmN0aW9uIGluZmxhdGUuCi0vLwotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2MgPSBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+Ci1jbGFzcyB6bGliX2RlY29tcHJlc3Nvcl9pbXBsIDogcHVibGljIHpsaWJfYmFzZSwgcHVibGljIHpsaWJfYWxsb2NhdG9yPEFsbG9jPiB7Ci1wdWJsaWM6Ci0gICAgemxpYl9kZWNvbXByZXNzb3JfaW1wbChjb25zdCB6bGliX3BhcmFtcyYpOwotICAgIHpsaWJfZGVjb21wcmVzc29yX2ltcGwoaW50IHdpbmRvd19iaXRzID0gemxpYjo6ZGVmYXVsdF93aW5kb3dfYml0cyk7Ci0gICAgfnpsaWJfZGVjb21wcmVzc29yX2ltcGwoKTsKLSAgICBib29sIGZpbHRlciggY29uc3QgY2hhciomIGJlZ2luX2luLCBjb25zdCBjaGFyKiBlbmRfaW4sCi0gICAgICAgICAgICAgICAgIGNoYXIqJiBiZWdpbl9vdXQsIGNoYXIqIGVuZF9vdXQsIGJvb2wgZmx1c2ggKTsKLSAgICB2b2lkIGNsb3NlKCk7Ci0gICAgYm9vbCBlb2YoKSBjb25zdCB7IHJldHVybiBlb2ZfOyB9Ci1wcml2YXRlOgotICAgIGJvb2wgZW9mXzsKLX07Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLS8vCi0vLyBUZW1wbGF0ZSBuYW1lOiB6bGliX2NvbXByZXNzb3IKLS8vIERlc2NyaXB0aW9uOiBNb2RlbCBvZiBJbnB1dEZpbHRlciBhbmQgT3V0cHV0RmlsdGVyIGltcGxlbWVudGluZwotLy8gICAgICBjb21wcmVzc2lvbiB1c2luZyB6bGliLgotLy8KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jID0gc3RkOjphbGxvY2F0b3I8Y2hhcj4gPgotc3RydWN0IGJhc2ljX3psaWJfY29tcHJlc3NvciAKLSAgICA6IHN5bW1ldHJpY19maWx0ZXI8ZGV0YWlsOjp6bGliX2NvbXByZXNzb3JfaW1wbDxBbGxvYz4sIEFsbG9jPiAKLXsKLXByaXZhdGU6Ci0gICAgdHlwZWRlZiBkZXRhaWw6OnpsaWJfY29tcHJlc3Nvcl9pbXBsPEFsbG9jPiAgICAgICAgIGltcGxfdHlwZTsKLSAgICB0eXBlZGVmIHN5bW1ldHJpY19maWx0ZXI8aW1wbF90eXBlLCBBbGxvYz4gIGJhc2VfdHlwZTsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfdHlwZTo6Y2hhcl90eXBlICAgICAgICAgICAgICAgY2hhcl90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV90eXBlOjpjYXRlZ29yeSAgICAgICAgICAgICAgICBjYXRlZ29yeTsKLSAgICBiYXNpY196bGliX2NvbXByZXNzb3IoIGNvbnN0IHpsaWJfcGFyYW1zJiA9IHpsaWI6OmRlZmF1bHRfY29tcHJlc3Npb24sIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJ1ZmZlcl9zaXplID0gZGVmYXVsdF9kZXZpY2VfYnVmZmVyX3NpemUgKTsKLSAgICB6bGliOjp1bG9uZyBjcmMoKSB7IHJldHVybiB0aGlzLT5maWx0ZXIoKS5jcmMoKTsgfQotICAgIGludCB0b3RhbF9pbigpIHsgIHJldHVybiB0aGlzLT5maWx0ZXIoKS50b3RhbF9pbigpOyB9Ci19OwotTkROQk9PU1RfSU9TVFJFQU1TX1BJUEFCTEUoYmFzaWNfemxpYl9jb21wcmVzc29yLCAxKQotCi10eXBlZGVmIGJhc2ljX3psaWJfY29tcHJlc3Nvcjw+IHpsaWJfY29tcHJlc3NvcjsKLQotLy8KLS8vIFRlbXBsYXRlIG5hbWU6IHpsaWJfZGVjb21wcmVzc29yCi0vLyBEZXNjcmlwdGlvbjogTW9kZWwgb2YgSW5wdXRGaWx0ZXIgYW5kIE91dHB1dEZpbHRlciBpbXBsZW1lbnRpbmcKLS8vICAgICAgZGVjb21wcmVzc2lvbiB1c2luZyB6bGliLgotLy8KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jID0gc3RkOjphbGxvY2F0b3I8Y2hhcj4gPgotc3RydWN0IGJhc2ljX3psaWJfZGVjb21wcmVzc29yIAotICAgIDogc3ltbWV0cmljX2ZpbHRlcjxkZXRhaWw6OnpsaWJfZGVjb21wcmVzc29yX2ltcGw8QWxsb2M+LCBBbGxvYz4gCi17Ci1wcml2YXRlOgotICAgIHR5cGVkZWYgZGV0YWlsOjp6bGliX2RlY29tcHJlc3Nvcl9pbXBsPEFsbG9jPiAgICAgICBpbXBsX3R5cGU7Ci0gICAgdHlwZWRlZiBzeW1tZXRyaWNfZmlsdGVyPGltcGxfdHlwZSwgQWxsb2M+ICBiYXNlX3R5cGU7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX3R5cGU6OmNoYXJfdHlwZSAgICAgICAgICAgICAgIGNoYXJfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfdHlwZTo6Y2F0ZWdvcnkgICAgICAgICAgICAgICAgY2F0ZWdvcnk7Ci0gICAgYmFzaWNfemxpYl9kZWNvbXByZXNzb3IoIGludCB3aW5kb3dfYml0cyA9IHpsaWI6OmRlZmF1bHRfd2luZG93X2JpdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBidWZmZXJfc2l6ZSA9IGRlZmF1bHRfZGV2aWNlX2J1ZmZlcl9zaXplICk7Ci0gICAgYmFzaWNfemxpYl9kZWNvbXByZXNzb3IoIGNvbnN0IHpsaWJfcGFyYW1zJiBwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYnVmZmVyX3NpemUgPSBkZWZhdWx0X2RldmljZV9idWZmZXJfc2l6ZSApOwotICAgIHpsaWI6OnVsb25nIGNyYygpIHsgcmV0dXJuIHRoaXMtPmZpbHRlcigpLmNyYygpOyB9Ci0gICAgaW50IHRvdGFsX291dCgpIHsgIHJldHVybiB0aGlzLT5maWx0ZXIoKS50b3RhbF9vdXQoKTsgfQotICAgIGJvb2wgZW9mKCkgeyByZXR1cm4gdGhpcy0+ZmlsdGVyKCkuZW9mKCk7IH0KLX07Ci1ORE5CT09TVF9JT1NUUkVBTVNfUElQQUJMRShiYXNpY196bGliX2RlY29tcHJlc3NvciwgMSkKLQotdHlwZWRlZiBiYXNpY196bGliX2RlY29tcHJlc3Nvcjw+IHpsaWJfZGVjb21wcmVzc29yOwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLUltcGxlbWVudGF0aW9uIG9mIHpsaWJfYWxsb2NhdG9yLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIEJhc2U+Ci12b2lkKiB6bGliX2FsbG9jYXRvcjxBbGxvYywgQmFzZT46OmFsbG9jYXRlCi0gICAgKHZvaWQqIHNlbGYsIHpsaWI6OnVpbnQgaXRlbXMsIHpsaWI6OnVpbnQgc2l6ZSkKLXsgCi0gICAgc2l6ZV90eXBlIGxlbiA9IGl0ZW1zICogc2l6ZTsKLSAgICBjaGFyKiBwdHIgPSAKLSAgICAgICAgc3RhdGljX2Nhc3Q8YWxsb2NhdG9yX3R5cGUqPihzZWxmKS0+YWxsb2NhdGUKLSAgICAgICAgICAgIChsZW4gKyBzaXplb2Yoc2l6ZV90eXBlKQotICAgICAgICAgICAgI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfRElOS1VNV0FSRV9TVERMSUIsID09IDEpCi0gICAgICAgICAgICAgICAgLCAoY2hhciopMAotICAgICAgICAgICAgI2VuZGlmCi0gICAgICAgICAgICApOwotICAgICpyZWludGVycHJldF9jYXN0PHNpemVfdHlwZSo+KHB0cikgPSBsZW47Ci0gICAgcmV0dXJuIHB0ciArIHNpemVvZihzaXplX3R5cGUpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgQmFzZT4KLXZvaWQgemxpYl9hbGxvY2F0b3I8QWxsb2MsIEJhc2U+OjpkZWFsbG9jYXRlKHZvaWQqIHNlbGYsIHZvaWQqIGFkZHJlc3MpCi17IAotICAgIGNoYXIqIHB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGFkZHJlc3MpIC0gc2l6ZW9mKHNpemVfdHlwZSk7Ci0gICAgc2l6ZV90eXBlIGxlbiA9ICpyZWludGVycHJldF9jYXN0PHNpemVfdHlwZSo+KHB0cikgKyBzaXplb2Yoc2l6ZV90eXBlKTsKLSAgICBzdGF0aWNfY2FzdDxhbGxvY2F0b3JfdHlwZSo+KHNlbGYpLT5kZWFsbG9jYXRlKHB0ciwgbGVuKTsgCi19Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tSW1wbGVtZW50YXRpb24gb2YgemxpYl9jb21wcmVzc29yX2ltcGwtLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jPgotemxpYl9jb21wcmVzc29yX2ltcGw8QWxsb2M+Ojp6bGliX2NvbXByZXNzb3JfaW1wbChjb25zdCB6bGliX3BhcmFtcyYgcCkKLXsgaW5pdChwLCB0cnVlLCBzdGF0aWNfY2FzdDx6bGliX2FsbG9jYXRvcjxBbGxvYz4mPigqdGhpcykpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jPgotemxpYl9jb21wcmVzc29yX2ltcGw8QWxsb2M+Ojp+emxpYl9jb21wcmVzc29yX2ltcGwoKQoteyByZXNldCh0cnVlLCBmYWxzZSk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+Ci1ib29sIHpsaWJfY29tcHJlc3Nvcl9pbXBsPEFsbG9jPjo6ZmlsdGVyCi0gICAgKCBjb25zdCBjaGFyKiYgc3JjX2JlZ2luLCBjb25zdCBjaGFyKiBzcmNfZW5kLAotICAgICAgY2hhciomIGRlc3RfYmVnaW4sIGNoYXIqIGRlc3RfZW5kLCBib29sIGZsdXNoICkKLXsKLSAgICBiZWZvcmUoc3JjX2JlZ2luLCBzcmNfZW5kLCBkZXN0X2JlZ2luLCBkZXN0X2VuZCk7Ci0gICAgaW50IHJlc3VsdCA9IHhkZWZsYXRlKGZsdXNoID8gemxpYjo6ZmluaXNoIDogemxpYjo6bm9fZmx1c2gpOwotICAgIGFmdGVyKHNyY19iZWdpbiwgZGVzdF9iZWdpbiwgdHJ1ZSk7Ci0gICAgemxpYl9lcnJvcjo6Y2hlY2sgTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04ocmVzdWx0KTsKLSAgICByZXR1cm4gcmVzdWx0ICE9IHpsaWI6OnN0cmVhbV9lbmQ7IAotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4KLXZvaWQgemxpYl9jb21wcmVzc29yX2ltcGw8QWxsb2M+OjpjbG9zZSgpIHsgcmVzZXQodHJ1ZSwgdHJ1ZSk7IH0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiB6bGliX2RlY29tcHJlc3Nvcl9pbXBsLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+Ci16bGliX2RlY29tcHJlc3Nvcl9pbXBsPEFsbG9jPjo6emxpYl9kZWNvbXByZXNzb3JfaW1wbChjb25zdCB6bGliX3BhcmFtcyYgcCkKLSAgOiBlb2ZfKGZhbHNlKQoteyBpbml0KHAsIGZhbHNlLCBzdGF0aWNfY2FzdDx6bGliX2FsbG9jYXRvcjxBbGxvYz4mPigqdGhpcykpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jPgotemxpYl9kZWNvbXByZXNzb3JfaW1wbDxBbGxvYz46On56bGliX2RlY29tcHJlc3Nvcl9pbXBsKCkKLXsgcmVzZXQoZmFsc2UsIGZhbHNlKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4KLXpsaWJfZGVjb21wcmVzc29yX2ltcGw8QWxsb2M+Ojp6bGliX2RlY29tcHJlc3Nvcl9pbXBsKGludCB3aW5kb3dfYml0cykKLXsgCi0gICAgemxpYl9wYXJhbXMgcDsKLSAgICBwLndpbmRvd19iaXRzID0gd2luZG93X2JpdHM7Ci0gICAgaW5pdChwLCBmYWxzZSwgc3RhdGljX2Nhc3Q8emxpYl9hbGxvY2F0b3I8QWxsb2M+Jj4oKnRoaXMpKTsgCi19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jPgotYm9vbCB6bGliX2RlY29tcHJlc3Nvcl9pbXBsPEFsbG9jPjo6ZmlsdGVyCi0gICAgKCBjb25zdCBjaGFyKiYgc3JjX2JlZ2luLCBjb25zdCBjaGFyKiBzcmNfZW5kLAotICAgICAgY2hhciomIGRlc3RfYmVnaW4sIGNoYXIqIGRlc3RfZW5kLCBib29sIC8qIGZsdXNoICovICkKLXsKLSAgICBiZWZvcmUoc3JjX2JlZ2luLCBzcmNfZW5kLCBkZXN0X2JlZ2luLCBkZXN0X2VuZCk7Ci0gICAgaW50IHJlc3VsdCA9IHhpbmZsYXRlKHpsaWI6OnN5bmNfZmx1c2gpOwotICAgIGFmdGVyKHNyY19iZWdpbiwgZGVzdF9iZWdpbiwgZmFsc2UpOwotICAgIHpsaWJfZXJyb3I6OmNoZWNrIE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OKHJlc3VsdCk7Ci0gICAgcmV0dXJuICEoZW9mXyA9IHJlc3VsdCA9PSB6bGliOjpzdHJlYW1fZW5kKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+Ci12b2lkIHpsaWJfZGVjb21wcmVzc29yX2ltcGw8QWxsb2M+OjpjbG9zZSgpIHsKLSAgICBlb2ZfID0gZmFsc2U7Ci0gICAgcmVzZXQoZmFsc2UsIHRydWUpOwotfQotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLUltcGxlbWVudGF0aW9uIG9mIHpsaWJfZGVjb21wcmVzc29yLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4KLWJhc2ljX3psaWJfY29tcHJlc3NvcjxBbGxvYz46OmJhc2ljX3psaWJfY29tcHJlc3NvcgotICAgIChjb25zdCB6bGliX3BhcmFtcyYgcCwgaW50IGJ1ZmZlcl9zaXplKSAKLSAgICA6IGJhc2VfdHlwZShidWZmZXJfc2l6ZSwgcCkgeyB9Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tSW1wbGVtZW50YXRpb24gb2YgemxpYl9kZWNvbXByZXNzb3ItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jPgotYmFzaWNfemxpYl9kZWNvbXByZXNzb3I8QWxsb2M+OjpiYXNpY196bGliX2RlY29tcHJlc3NvcgotICAgIChpbnQgd2luZG93X2JpdHMsIGludCBidWZmZXJfc2l6ZSkgCi0gICAgOiBiYXNlX3R5cGUoYnVmZmVyX3NpemUsIHdpbmRvd19iaXRzKSB7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+Ci1iYXNpY196bGliX2RlY29tcHJlc3NvcjxBbGxvYz46OmJhc2ljX3psaWJfZGVjb21wcmVzc29yCi0gICAgKGNvbnN0IHpsaWJfcGFyYW1zJiBwLCBpbnQgYnVmZmVyX3NpemUpIAotICAgIDogYmFzZV90eXBlKGJ1ZmZlcl9zaXplLCBwKSB7IH0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvYWJpX3N1ZmZpeC5ocHA+IC8vIFBvcHMgYWJpX3N1ZmZpeC5ocHAgcHJhZ21hcy4KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfWkxJQl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlcmluZ19zdHJlYW0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyaW5nX3N0cmVhbS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkMDg1YTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyaW5nX3N0cmVhbS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjYgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDQtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0ZJTFRFUl9TVFJFQU1fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19GSUxURVJfU1RSRUFNX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgIAotCi0jaW5jbHVkZSA8bWVtb3J5PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbGxvY2F0b3IuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hY2Nlc3NfY29udHJvbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jaGFyX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3N0cmVhbS5ocHA+ICAgICAgICAvLyBzdGFuZGFyZCBzdHJlYW1zLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvcHVzaC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zZWxlY3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc3RyZWFtYnVmLmhwcD4gICAgICAgLy8gcHVic3luYy4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyaW5nX3N0cmVhbWJ1Zi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4KLQotLy8gTXVzdCBjb21lIGxhc3QuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZGlzYWJsZV93YXJuaW5ncy5ocHA+ICAvLyBNU1ZDLgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotLy8tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgZmlsdGVyZWRfaXN0cmVhbS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUcj4KLXN0cnVjdCBmaWx0ZXJpbmdfc3RyZWFtX3RyYWl0cyB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICAgICAgICAgIGlvc3RyZWFtczo6c2VsZWN0PCAgLy8gRGlzYW1iaWd1YXRpb24gZm9yIFRydTY0ICAKLSAgICAgICAgICAgICAgICBtcGw6OmFuZF88IAotICAgICAgICAgICAgICAgICAgICBpc19jb252ZXJ0aWJsZTxNb2RlLCBpbnB1dD4sIAotICAgICAgICAgICAgICAgICAgICBpc19jb252ZXJ0aWJsZTxNb2RlLCBvdXRwdXQ+IAotICAgICAgICAgICAgICAgID4sICAgICAgICAgIAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19CQVNJQ19JT1NUUkVBTShDaCwgVHIpLAotICAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPE1vZGUsIGlucHV0PiwgCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0JBU0lDX0lTVFJFQU0oQ2gsIFRyKSwKLSAgICAgICAgICAgICAgICBlbHNlXywgICAgICAgIAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19CQVNJQ19PU1RSRUFNKENoLCBUcikKLSAgICAgICAgICAgID46OnR5cGUgc3RyZWFtX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgICAgICAgaW9zdHJlYW1zOjpzZWxlY3Q8IC8vIERpc21iaWd1YXRpb24gcmVxdWlyZWQgZm9yIFRydTY0LgotICAgICAgICAgICAgICAgIG1wbDo6YW5kXzwKLSAgICAgICAgICAgICAgICAgICAgaXNfY29udmVydGlibGU8TW9kZSwgaW5wdXQ+LAotICAgICAgICAgICAgICAgICAgICBpc19jb252ZXJ0aWJsZTxNb2RlLCBvdXRwdXQ+Ci0gICAgICAgICAgICAgICAgPiwKLSAgICAgICAgICAgICAgICBpb3N0cmVhbV90YWcsCi0gICAgICAgICAgICAgICAgaXNfY29udmVydGlibGU8TW9kZSwgaW5wdXQ+LAotICAgICAgICAgICAgICAgIGlzdHJlYW1fdGFnLAotICAgICAgICAgICAgICAgIGVsc2VfLAotICAgICAgICAgICAgICAgIG9zdHJlYW1fdGFnCi0gICAgICAgICAgICA+Ojp0eXBlIHN0cmVhbV90YWc7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFpbiwgdHlwZW5hbWUgQWNjZXNzPgotY2xhc3MgZmlsdGVyaW5nX3N0cmVhbV9iYXNlIAotICAgIDogcHVibGljIGFjY2Vzc19jb250cm9sPAotICAgICAgICAgICAgICAgICBuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OmNoYWluX2NsaWVudDxDaGFpbj4sCi0gICAgICAgICAgICAgICAgIEFjY2VzcwotICAgICAgICAgICAgID4sCi0gICAgICBwdWJsaWMgZmlsdGVyaW5nX3N0cmVhbV90cmFpdHM8Ci0gICAgICAgICAgICAgICAgIHR5cGVuYW1lIENoYWluOjptb2RlLCAKLSAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQ2hhaW46OmNoYXJfdHlwZSwgCi0gICAgICAgICAgICAgICAgIHR5cGVuYW1lIENoYWluOjp0cmFpdHNfdHlwZQotICAgICAgICAgICAgID46OnN0cmVhbV90eXBlCi17Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBDaGFpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhaW5fdHlwZTsKLSAgICB0eXBlZGVmIGFjY2Vzc19jb250cm9sPAotICAgICAgICAgICAgICAgICBuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OmNoYWluX2NsaWVudDxDaGFpbj4sCi0gICAgICAgICAgICAgICAgIEFjY2VzcwotICAgICAgICAgICAgID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF90eXBlOwotcHJvdGVjdGVkOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgICAgICAgICBmaWx0ZXJpbmdfc3RyZWFtX3RyYWl0czwKLSAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQ2hhaW46Om1vZGUsIAotICAgICAgICAgICAgICAgICB0eXBlbmFtZSBDaGFpbjo6Y2hhcl90eXBlLCAKLSAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQ2hhaW46OnRyYWl0c190eXBlCi0gICAgICAgICAgICA+OjpzdHJlYW1fdHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX3R5cGU7Ci0gICAgZmlsdGVyaW5nX3N0cmVhbV9iYXNlKCkgOiBzdHJlYW1fdHlwZSgwKSB7IHRoaXMtPnNldF9jaGFpbigmY2hhaW5fKTsgfQotcHJpdmF0ZToKLSAgICB2b2lkIG5vdGlmeSgpIHsgdGhpcy0+cmRidWYoY2hhaW5fLmVtcHR5KCkgPyAwIDogJmNoYWluXy5mcm9udCgpKTsgfQotICAgIENoYWluIGNoYWluXzsKLX07Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLS8vCi0vLyBNYWNybzogTkROQk9PU1RfSU9TVFJFQU1TX0RFRklORV9GSUxURVJfU1RSRUFNKG5hbWVfLCBjaGFpbl90eXBlXywgZGVmYXVsdF9jaGFyXykKLS8vIERlc2NyaXB0aW9uOiBEZWZpbmVzIGEgdGVtcGxhdGUgZGVyaXZlZCBmcm9tIHN0ZDo6YmFzaWNfc3RyZWFtYnVmIHdoaWNoIHVzZXMKLS8vICAgICAgYSBjaGFpbiB0byBwZXJmb3JtIGkvby4gVGhlIHRlbXBsYXRlIGhhcyB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnM6Ci0vLyAgICAgIE1vZGUgLSB0aGUgaS9vIG1vZGUuCi0vLyAgICAgIENoIC0gVGhlIGNoYXJhY3RlciB0eXBlLgotLy8gICAgICBUciAtIFRoZSBjaGFyYWN0ZXIgdHJhaXRzIHR5cGUuCi0vLyAgICAgIEFsbG9jIC0gVGhlIGFsbG9jYXRvciB0eXBlLgotLy8gICAgICBBY2Nlc3MgLSBJbmRpY2F0ZXMgYWNjZXNzaWJpbGl0eSBvZiB0aGUgY2hhaW4gaW50ZXJmYWNlOyBtdXN0IGJlIGVpdGhlcgotLy8gICAgICAgICAgcHVibGljXyBvciBwcm90ZWN0ZWRfOyBkZWZhdWx0cyB0byBwdWJsaWNfLgotLy8gTWFjcm8gcGFyYW1ldGVyczoKLS8vICAgICAgbmFtZV8gLSBUaGUgbmFtZSBvZiB0aGUgdGVtcGxhdGUgdG8gYmUgZGVmaW5lZC4KLS8vICAgICAgY2hhaW5fdHlwZV8gLSBUaGUgbmFtZSBvZiB0aGUgY2hhaW4gdGVtcGxhdGUuCi0vLyAgICAgIGRlZmF1bHRfY2hhcl8gLSBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIGNoYXIgdGVtcGxhdGUgcGFyYW1ldGVyLgotLy8KLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFRklORV9GSUxURVJfU1RSRUFNKG5hbWVfLCBjaGFpbl90eXBlXywgZGVmYXVsdF9jaGFyXykgXAotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBNb2RlLCBcCi0gICAgICAgICAgICAgIHR5cGVuYW1lIENoID0gZGVmYXVsdF9jaGFyXywgXAotICAgICAgICAgICAgICB0eXBlbmFtZSBUciA9IE5ETkJPT1NUX0lPU1RSRUFNU19DSEFSX1RSQUlUUyhDaCksIFwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgQWxsb2MgPSBzdGQ6OmFsbG9jYXRvcjxDaD4sIFwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgQWNjZXNzID0gcHVibGljXyA+IFwKLSAgICBjbGFzcyBuYW1lXyBcCi0gICAgICAgIDogcHVibGljIG5kbmJvb3N0Ojppb3N0cmVhbXM6OmRldGFpbDo6ZmlsdGVyaW5nX3N0cmVhbV9iYXNlPCBcCi0gICAgICAgICAgICAgICAgICAgICBjaGFpbl90eXBlXzxNb2RlLCBDaCwgVHIsIEFsbG9jPiwgQWNjZXNzIFwKLSAgICAgICAgICAgICAgICAgPiBcCi0gICAgeyBcCi0gICAgcHVibGljOiBcCi0gICAgICAgIHR5cGVkZWYgQ2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJfdHlwZTsgXAotICAgICAgICBzdHJ1Y3QgY2F0ZWdvcnkgXAotICAgICAgICAgICAgOiBNb2RlLCBcCi0gICAgICAgICAgICAgIGNsb3NhYmxlX3RhZywgXAotICAgICAgICAgICAgICBkZXRhaWw6OmZpbHRlcmluZ19zdHJlYW1fdHJhaXRzPE1vZGUsIENoLCBUcj46OnN0cmVhbV90YWcgXAotICAgICAgICAgICAgeyB9OyBcCi0gICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19TVFJFQU1CVUZfVFlQRURFRlMoVHIpIFwKLSAgICAgICAgdHlwZWRlZiBNb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTsgXAotICAgICAgICB0eXBlZGVmIGNoYWluX3R5cGVfPE1vZGUsIENoLCBUciwgQWxsb2M+ICBjaGFpbl90eXBlOyBcCi0gICAgICAgIG5hbWVfKCkgeyB9IFwKLSAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0RFRklORV9QVVNIX0NPTlNUUlVDVE9SKG5hbWVfLCBtb2RlLCBDaCwgcHVzaF9pbXBsKSBcCi0gICAgICAgIH5uYW1lXygpIHsgXAotICAgICAgICAgICAgaWYgKHRoaXMtPmlzX2NvbXBsZXRlKCkpIFwKLSAgICAgICAgICAgICAgICAgdGhpcy0+cmRidWYoKS0+TkROQk9PU1RfSU9TVFJFQU1TX1BVQlNZTkMoKTsgXAotICAgICAgICB9IFwKLSAgICBwcml2YXRlOiBcCi0gICAgICAgIHR5cGVkZWYgYWNjZXNzX2NvbnRyb2w8IFwKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpjaGFpbl9jbGllbnQ8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYWluX3R5cGVfPE1vZGUsIENoLCBUciwgQWxsb2M+IFwKLSAgICAgICAgICAgICAgICAgICAgPiwgXAotICAgICAgICAgICAgICAgICAgICBBY2Nlc3MgXAotICAgICAgICAgICAgICAgID4gY2xpZW50X3R5cGU7IFwKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gXAotICAgICAgICB2b2lkIHB1c2hfaW1wbChjb25zdCBUJiB0IE5ETkJPT1NUX0lPU1RSRUFNU19QVVNIX1BBUkFNUygpKSBcCi0gICAgICAgIHsgY2xpZW50X3R5cGU6OnB1c2godCBORE5CT09TVF9JT1NUUkVBTVNfUFVTSF9BUkdTKCkpOyB9IFwKLSAgICB9OyBcCi0gICAgLyoqLyAgICAKLU5ETkJPT1NUX0lPU1RSRUFNU19ERUZJTkVfRklMVEVSX1NUUkVBTShmaWx0ZXJpbmdfc3RyZWFtLCBuZG5ib29zdDo6aW9zdHJlYW1zOjpjaGFpbiwgY2hhcikKLU5ETkJPT1NUX0lPU1RSRUFNU19ERUZJTkVfRklMVEVSX1NUUkVBTSh3ZmlsdGVyaW5nX3N0cmVhbSwgbmRuYm9vc3Q6Omlvc3RyZWFtczo6Y2hhaW4sIHdjaGFyX3QpCi0KLXR5cGVkZWYgZmlsdGVyaW5nX3N0cmVhbTxpbnB1dD4gICAgZmlsdGVyaW5nX2lzdHJlYW07Ci10eXBlZGVmIGZpbHRlcmluZ19zdHJlYW08b3V0cHV0PiAgIGZpbHRlcmluZ19vc3RyZWFtOwotdHlwZWRlZiB3ZmlsdGVyaW5nX3N0cmVhbTxpbnB1dD4gICBmaWx0ZXJpbmdfd2lzdHJlYW07Ci10eXBlZGVmIHdmaWx0ZXJpbmdfc3RyZWFtPG91dHB1dD4gIGZpbHRlcmluZ193b3N0cmVhbTsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotfSB9IC8vIEVuZCBuYW1lc3BhY2UgaW9zdHJlYW1zLCBib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcD4gLy8gTVNWQwotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfRklMVEVSX1NUUkVBTV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlcmluZ19zdHJlYW1idWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyaW5nX3N0cmVhbWJ1Zi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1NGZkM2YuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyaW5nX3N0cmVhbWJ1Zi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfRklMVEVSSU5HX1NUUkVBTUJVRl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZJTFRFUklOR19TVFJFQU1CVUZfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZiAgICAgICAgICAgICAgCi0KLSNpbmNsdWRlIDxleGNlcHRpb24+Ci0jaW5jbHVkZSA8bWVtb3J5PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbGxvY2F0b3IuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NoYWluLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FjY2Vzc19jb250cm9sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NoYXJfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3B1c2guaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc3RyZWFtYnVmLmhwcD4gLy8gcHVic3luYy4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3N0cmVhbWJ1Zi9jaGFpbmJ1Zi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4gICAgICAgICAgICAgICAgICAgIAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotLy8KLS8vIE1hY3JvOiBORE5CT09TVF9JT1NUUkVBTVNfREVGSU5FX0ZJTFRFUkJVRihuYW1lXywgY2hhaW5fdHlwZV8sIGRlZmF1bHRfY2hhcl8pCi0vLyBEZXNjcmlwdGlvbjogRGVmaW5lcyBhIHRlbXBsYXRlIGRlcml2ZWQgZnJvbSBzdGQ6OmJhc2ljX3N0cmVhbWJ1ZiB3aGljaCB1c2VzCi0vLyAgICAgIGEgY2hhaW4gdG8gcGVyZm9ybSBpL28uIFRoZSB0ZW1wbGF0ZSBoYXMgdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzOgotLy8gICAgICBDaCAtIFRoZSBjaGFyYWN0ZXIgdHlwZS4KLS8vICAgICAgVHIgLSBUaGUgY2hhcmFjdGVyIHRyYWl0cyB0eXBlLgotLy8gICAgICBBbGxvYyAtIFRoZSBhbGxvY2F0b3IgdHlwZS4KLS8vICAgICAgQWNjZXNzIC0gSW5kaWNhdGVzIGFjY2Vzc2liaWxpdHkgb2YgdGhlIGNoYWluIGludGVyZmFjZTsgbXVzdCBiZSBlaXRoZXIKLS8vICAgICAgICAgIHB1YmxpY18gb3IgcHJvdGVjdGVkXzsgZGVmYXVsdHMgdG8gcHVibGljXy4KLS8vCi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERUZJTkVfRklMVEVSX1NUUkVBTUJVRihuYW1lXywgY2hhaW5fdHlwZV8sIGRlZmF1bHRfY2hhcl8pIFwKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTW9kZSwgXAotICAgICAgICAgICAgICB0eXBlbmFtZSBDaCA9IGRlZmF1bHRfY2hhcl8sIFwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVHIgPSBORE5CT09TVF9JT1NUUkVBTVNfQ0hBUl9UUkFJVFMoQ2gpLCBcCi0gICAgICAgICAgICAgIHR5cGVuYW1lIEFsbG9jID0gc3RkOjphbGxvY2F0b3I8Q2g+LCBcCi0gICAgICAgICAgICAgIHR5cGVuYW1lIEFjY2VzcyA9IHB1YmxpY18gPiBcCi0gICAgY2xhc3MgbmFtZV8gOiBwdWJsaWMgbmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpjaGFpbmJ1ZjwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFpbl90eXBlXzxNb2RlLCBDaCwgVHIsIEFsbG9jPiwgTW9kZSwgQWNjZXNzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICA+IFwKLSAgICB7IFwKLSAgICBwdWJsaWM6IFwKLSAgICAgICAgdHlwZWRlZiBDaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJfdHlwZTsgXAotICAgICAgICBzdHJ1Y3QgY2F0ZWdvcnkgXAotICAgICAgICAgICAgOiBNb2RlLCBjbG9zYWJsZV90YWcsIHN0cmVhbWJ1Zl90YWcgXAotICAgICAgICAgICAgeyB9OyBcCi0gICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19TVFJFQU1CVUZfVFlQRURFRlMoVHIpIFwKLSAgICAgICAgdHlwZWRlZiBNb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU7IFwKLSAgICAgICAgdHlwZWRlZiBjaGFpbl90eXBlXzxNb2RlLCBDaCwgVHIsIEFsbG9jPiAgICAgICAgICAgICAgIGNoYWluX3R5cGU7IFwKLSAgICAgICAgbmFtZV8oKSB7IH0gXAotICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfREVGSU5FX1BVU0hfQ09OU1RSVUNUT1IobmFtZV8sIG1vZGUsIENoLCBwdXNoX2ltcGwpIFwKLSAgICAgICAgfm5hbWVfKCkgeyBpZiAodGhpcy0+aXNfY29tcGxldGUoKSkgdGhpcy0+TkROQk9PU1RfSU9TVFJFQU1TX1BVQlNZTkMoKTsgfSBcCi0gICAgfTsgXAotICAgIC8qKi8gCi1ORE5CT09TVF9JT1NUUkVBTVNfREVGSU5FX0ZJTFRFUl9TVFJFQU1CVUYoZmlsdGVyaW5nX3N0cmVhbWJ1ZiwgbmRuYm9vc3Q6Omlvc3RyZWFtczo6Y2hhaW4sIGNoYXIpCi1ORE5CT09TVF9JT1NUUkVBTVNfREVGSU5FX0ZJTFRFUl9TVFJFQU1CVUYoZmlsdGVyaW5nX3dzdHJlYW1idWYsIG5kbmJvb3N0Ojppb3N0cmVhbXM6OmNoYWluLCB3Y2hhcl90KQotCi10eXBlZGVmIGZpbHRlcmluZ19zdHJlYW1idWY8aW5wdXQ+ICAgIGZpbHRlcmluZ19pc3RyZWFtYnVmOwotdHlwZWRlZiBmaWx0ZXJpbmdfc3RyZWFtYnVmPG91dHB1dD4gICBmaWx0ZXJpbmdfb3N0cmVhbWJ1ZjsKLXR5cGVkZWYgZmlsdGVyaW5nX3dzdHJlYW1idWY8aW5wdXQ+ICAgZmlsdGVyaW5nX3dpc3RyZWFtYnVmOwotdHlwZWRlZiBmaWx0ZXJpbmdfd3N0cmVhbWJ1ZjxvdXRwdXQ+ICBmaWx0ZXJpbmdfd29zdHJlYW1idWY7Ci0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfRklMVEVSSU5HX1NUUkVBTUJVRl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZsdXNoLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZsdXNoLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTEwZGY2NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9mbHVzaC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjUgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0ZMVVNIX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfRkxVU0hfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gIC8vIERFRFVDRURfVFlQRU5BTUUsIE1TVkMuCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZGlzcGF0Y2guaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc3RyZWFtYnVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3dyYXBfdW53cmFwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvb3BlcmF0aW9uc19md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0KLS8vIE11c3QgY29tZSBsYXN0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2Rpc2FibGVfd2FybmluZ3MuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgZmx1c2hfZGV2aWNlX2ltcGw7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgZmx1c2hfZmlsdGVyX2ltcGw7Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1ib29sIGZsdXNoKFQmIHQpCi17IHJldHVybiBkZXRhaWw6OmZsdXNoX2RldmljZV9pbXBsPFQ+OjpmbHVzaChkZXRhaWw6OnVud3JhcCh0KSk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgU2luaz4KLWJvb2wgZmx1c2goVCYgdCwgU2luayYgc25rKQoteyByZXR1cm4gZGV0YWlsOjpmbHVzaF9maWx0ZXJfaW1wbDxUPjo6Zmx1c2goZGV0YWlsOjp1bndyYXAodCksIHNuayk7IH0KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBmbHVzaF9kZXZpY2VfaW1wbC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgZmx1c2hfZGV2aWNlX2ltcGwKLSAgICA6IG1wbDo6aWZfPAotICAgICAgICAgIGlzX2N1c3RvbTxUPiwKLSAgICAgICAgICBvcGVyYXRpb25zPFQ+LAotICAgICAgICAgIGZsdXNoX2RldmljZV9pbXBsPAotICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FCi0gICAgICAgICAgICAgIGRpc3BhdGNoPAotICAgICAgICAgICAgICAgICAgVCwgb3N0cmVhbV90YWcsIHN0cmVhbWJ1Zl90YWcsIGZsdXNoYWJsZV90YWcsIGFueV90YWcKLSAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgID4KLSAgICAgID46OnR5cGUKLSAgICB7IH07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmbHVzaF9kZXZpY2VfaW1wbDxvc3RyZWFtX3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIGJvb2wgZmx1c2goVCYgdCkKLSAgICB7IHJldHVybiB0LnJkYnVmKCktPk5ETkJPT1NUX0lPU1RSRUFNU19QVUJTWU5DKCkgPT0gMDsgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZsdXNoX2RldmljZV9pbXBsPHN0cmVhbWJ1Zl90YWc+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBib29sIGZsdXNoKFQmIHQpCi0gICAgeyByZXR1cm4gdC5ORE5CT09TVF9JT1NUUkVBTVNfUFVCU1lOQygpID09IDA7IH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmbHVzaF9kZXZpY2VfaW1wbDxmbHVzaGFibGVfdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgYm9vbCBmbHVzaChUJiB0KSB7IHJldHVybiB0LmZsdXNoKCk7IH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmbHVzaF9kZXZpY2VfaW1wbDxhbnlfdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgYm9vbCBmbHVzaChUJikgeyByZXR1cm4gdHJ1ZTsgfQotfTsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIGZsdXNoX2ZpbHRlcl9pbXBsLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBmbHVzaF9maWx0ZXJfaW1wbAotICAgIDogbXBsOjppZl88Ci0gICAgICAgICAgaXNfY3VzdG9tPFQ+LAotICAgICAgICAgIG9wZXJhdGlvbnM8VD4sCi0gICAgICAgICAgZmx1c2hfZmlsdGVyX2ltcGw8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUKLSAgICAgICAgICAgICAgZGlzcGF0Y2g8Ci0gICAgICAgICAgICAgICAgICBULCBmbHVzaGFibGVfdGFnLCBhbnlfdGFnCi0gICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICA+Ci0gICAgICA+Ojp0eXBlCi0gICAgeyB9OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZmx1c2hfZmlsdGVyX2ltcGw8Zmx1c2hhYmxlX3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFNpbms+Ci0gICAgc3RhdGljIGJvb2wgZmx1c2goVCYgdCwgU2luayYgc25rKSB7IHJldHVybiB0LmZsdXNoKHNuayk7IH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmbHVzaF9maWx0ZXJfaW1wbDxhbnlfdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgU2luaz4KLSAgICBzdGF0aWMgYm9vbCBmbHVzaChUJiwgU2luayYpIHsgcmV0dXJuIGZhbHNlOyB9Ci19OwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19GTFVTSF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2dldC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9nZXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YWY4ZjdhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2dldC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwNS0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfR0VUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfR0VUX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9yZWFkLmhwcD4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0dFVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ltYnVlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ltYnVlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGU5ZmZiMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9pbWJ1ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfSU1CVUVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19JTUJVRV9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgLy8gREVEVUNFRF9UWVBFTkFNRSwgTVNWQy4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9kaXNwYXRjaC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zdHJlYW1idWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvd3JhcF91bndyYXAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9vcGVyYXRpb25zX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLQotLy8gTXVzdCBjb21lIGxhc3QuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZGlzYWJsZV93YXJuaW5ncy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgeyAKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vIEltcGxlbWVudGF0aW9uIHRlbXBsYXRlcyBmb3Igc2ltdWxhdGVkIHRhZyBkaXNwYXRjaC4KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IAotc3RydWN0IGltYnVlX2ltcGw7Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIExvY2FsZT4KLXZvaWQgaW1idWUoVCYgdCwgY29uc3QgTG9jYWxlJiBsb2MpCi17IGRldGFpbDo6aW1idWVfaW1wbDxUPjo6aW1idWUoZGV0YWlsOjp1bndyYXAodCksIGxvYyk7IH0KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBpbWJ1ZV9pbXBsLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaW1idWVfaW1wbAotICAgIDogbXBsOjppZl88Ci0gICAgICAgICAgaXNfY3VzdG9tPFQ+LAotICAgICAgICAgIG9wZXJhdGlvbnM8VD4sCi0gICAgICAgICAgaW1idWVfaW1wbDwKLSAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRQotICAgICAgICAgICAgICBkaXNwYXRjaDwKLSAgICAgICAgICAgICAgICAgIFQsIHN0cmVhbWJ1Zl90YWcsIGxvY2FsaXphYmxlX3RhZywgYW55X3RhZwotICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgPgotICAgICAgPjo6dHlwZQotICAgIHsgfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGltYnVlX2ltcGw8YW55X3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIExvY2FsZT4KLSAgICBzdGF0aWMgdm9pZCBpbWJ1ZShUJiwgY29uc3QgTG9jYWxlJikgeyB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW1idWVfaW1wbDxzdHJlYW1idWZfdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgTG9jYWxlPgotICAgIHN0YXRpYyB2b2lkIGltYnVlKFQmIHQsIGNvbnN0IExvY2FsZSYgbG9jKSB7IHQucHViaW1idWUobG9jKTsgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGltYnVlX2ltcGw8bG9jYWxpemFibGVfdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgTG9jYWxlPgotICAgIHN0YXRpYyB2b2lkIGltYnVlKFQmIHQsIGNvbnN0IExvY2FsZSYgbG9jKSB7IHQuaW1idWUobG9jKTsgfQotfTsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfSU1CVUVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9pbnB1dF9zZXF1ZW5jZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9pbnB1dF9zZXF1ZW5jZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5NTBjNmYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvaW5wdXRfc2VxdWVuY2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0lOUFVUX1NFUVVFTkNFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfSU5QVVRfU0VRVUVOQ0VfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8dXRpbGl0eT4gICAgICAgICAgIC8vIHBhaXIuCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gIC8vIERFRFVDRURfVFlQRU5BTUUsIE1TVkMuCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvd3JhcF91bndyYXAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9vcGVyYXRpb25zX2Z3ZC5ocHA+ICAvLyBpc19jdXN0b20gCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLQotLy8gTXVzdCBjb21lIGxhc3QuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZGlzYWJsZV93YXJuaW5ncy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBpbnB1dF9zZXF1ZW5jZV9pbXBsOwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIHN0ZDo6cGFpcjwKLSAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSosCi0gICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUqCi0+Ci1pbnB1dF9zZXF1ZW5jZShUJiB0KQoteyByZXR1cm4gZGV0YWlsOjppbnB1dF9zZXF1ZW5jZV9pbXBsPFQ+OjppbnB1dF9zZXF1ZW5jZSh0KTsgfQotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIGRpcmVjdF9pbXBsLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaW5wdXRfc2VxdWVuY2VfaW1wbAotICAgIDogbXBsOjppZl88Ci0gICAgICAgICAgZGV0YWlsOjppc19jdXN0b208VD4sCi0gICAgICAgICAgb3BlcmF0aW9uczxUPiwKLSAgICAgICAgICBpbnB1dF9zZXF1ZW5jZV9pbXBsPGRpcmVjdF90YWc+Ci0gICAgICA+Ojp0eXBlCi0gICAgeyB9OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW5wdXRfc2VxdWVuY2VfaW1wbDxkaXJlY3RfdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICBzdGF0aWMgc3RkOjpwYWlyPAotICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGNoYXJfdHlwZV9vZjxVPjo6dHlwZSosCi0gICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgY2hhcl90eXBlX29mPFU+Ojp0eXBlKgotICAgID4KLSAgICBpbnB1dF9zZXF1ZW5jZShVJiB1KSB7IHJldHVybiB1LmlucHV0X3NlcXVlbmNlKCk7IH0KLX07Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0lOUFVUX1NFUVVFTkNFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvaW52ZXJ0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ludmVydC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiMGU1ZmQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvaW52ZXJ0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2NyArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfSU5WRVJUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfSU5WRVJUX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgIAotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29weSwgbWluLiAgCi0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgICAgICAgICAgICAgICAgICAgICAvLyBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FLiAgICAgICAKLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+ICAgICAgICAgICAvLyBkZWZhdWx0X2ZpbHRlcl9idWZmZXJfc2l6ZS4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2hhcl90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jb21wb3NlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY29uc3RhbnRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV2aWNlL2FycmF5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2J1ZmZlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb3VudGVkX2FycmF5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2V4ZWN1dGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZnVuY3Rpb25hbC5ocHA+IC8vIGNsZWFyX2ZsYWdzLCBjYWxsX3Jlc2V0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yZWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NoYXJlZF9wdHIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4KLQotLy8gTXVzdCBjb21lIGxhc3QuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZGlzYWJsZV93YXJuaW5ncy5ocHA+ICAvLyBNU1ZDLgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotLy8KLS8vIFRlbXBsYXRlIG5hbWU6IGludmVyc2UuCi0vLyBUZW1wbGF0ZSBwYXJhbWV0ZXJzOgotLy8gICAgICBGaWx0ZXIgLSBBIG1vZGVsIG9mIElucHV0RmlsdGVyIG9yIE91dHB1dEZpbHRlci4KLS8vIERlc2NyaXB0aW9uOiBHZW5lcmF0ZXMgYW4gSW5wdXRGaWx0ZXIgZnJvbSBhbiBPdXRwdXRGaWx0ZXIgb3IKLS8vICAgICAgdmljZSB2ZXJzYS4KLS8vCi10ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXI+Ci1jbGFzcyBpbnZlcnNlIHsKLXByaXZhdGU6Ci0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChpc19maWx0ZXI8RmlsdGVyPjo6dmFsdWUpOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2F0ZWdvcnlfb2Y8RmlsdGVyPjo6dHlwZSAgIGJhc2VfY2F0ZWdvcnk7Ci0gICAgdHlwZWRlZiByZWZlcmVuY2Vfd3JhcHBlcjxGaWx0ZXI+ICAgICAgICAgICAgZmlsdGVyX3JlZjsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxGaWx0ZXI+Ojp0eXBlICBjaGFyX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbnRfdHlwZV9vZjxGaWx0ZXI+Ojp0eXBlICAgaW50X3R5cGU7Ci0gICAgdHlwZWRlZiBjaGFyX3RyYWl0czxjaGFyX3R5cGU+ICAgICAgICAgICAgICAgdHJhaXRzX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICAgICAgICAgIG1wbDo6aWZfPAotICAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPAotICAgICAgICAgICAgICAgICAgICBiYXNlX2NhdGVnb3J5LAotICAgICAgICAgICAgICAgICAgICBpbnB1dAotICAgICAgICAgICAgICAgID4sCi0gICAgICAgICAgICAgICAgb3V0cHV0LAotICAgICAgICAgICAgICAgIGlucHV0Ci0gICAgICAgICAgICA+Ojp0eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkgCi0gICAgICAgIDogbW9kZSwgCi0gICAgICAgICAgZmlsdGVyX3RhZywgCi0gICAgICAgICAgbXVsdGljaGFyX3RhZywgCi0gICAgICAgICAgY2xvc2FibGVfdGFnIAotICAgICAgICB7IH07Ci0gICAgZXhwbGljaXQgaW52ZXJzZSggY29uc3QgRmlsdGVyJiBmaWx0ZXIsIAotICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBidWZmZXJfc2l6ZSA9IAotICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0X2ZpbHRlcl9idWZmZXJfc2l6ZSkgCi0gICAgICAgIDogcGltcGxfKG5ldyBpbXBsKGZpbHRlciwgYnVmZmVyX3NpemUpKQotICAgICAgICB7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZT4KLSAgICBzdGQ6OnN0cmVhbXNpemUgcmVhZChTb3VyY2UmIHNyYywgY2hhciogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgewotICAgICAgICB0eXBlZGVmIGRldGFpbDo6Y291bnRlZF9hcnJheV9zaW5rPGNoYXJfdHlwZT4gIGFycmF5X3Npbms7Ci0gICAgICAgIHR5cGVkZWYgY29tcG9zaXRlPGZpbHRlcl9yZWYsIGFycmF5X3Npbms+ICAgICAgZmlsdGVyZWRfYXJyYXlfc2luazsKLQotICAgICAgICBORE5CT09TVF9BU1NFUlQoKGZsYWdzKCkgJiBmX3dyaXRlKSA9PSAwKTsKLSAgICAgICAgaWYgKGZsYWdzKCkgPT0gMCkgewotICAgICAgICAgICAgZmxhZ3MoKSA9IGZfcmVhZDsKLSAgICAgICAgICAgIGJ1ZigpLnNldCgwLCAwKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZpbHRlcmVkX2FycmF5X3Npbmsgc25rKGZpbHRlcigpLCBhcnJheV9zaW5rKHMsIG4pKTsKLSAgICAgICAgaW50X3R5cGUgc3RhdHVzOwotICAgICAgICBmb3IgKCBzdGF0dXMgPSB0cmFpdHNfdHlwZTo6Z29vZCgpOwotICAgICAgICAgICAgICBzbmsuc2Vjb25kKCkuY291bnQoKSA8IG4gJiYgc3RhdHVzID09IHRyYWl0c190eXBlOjpnb29kKCk7ICkKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdHVzID0gYnVmKCkuZmlsbChzcmMpOwotICAgICAgICAgICAgYnVmKCkuZmx1c2goc25rKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gc25rLnNlY29uZCgpLmNvdW50KCkgPT0gMCAmJgotICAgICAgICAgICAgICAgc3RhdHVzID09IHRyYWl0c190eXBlOjplb2YoKSAKLSAgICAgICAgICAgICAgICAgICA/IAotICAgICAgICAgICAgICAgLTEKLSAgICAgICAgICAgICAgICAgICA6IAotICAgICAgICAgICAgICAgc25rLnNlY29uZCgpLmNvdW50KCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICBzdGQ6OnN0cmVhbXNpemUgd3JpdGUoU2luayYgZGVzdCwgY29uc3QgY2hhciogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgewotICAgICAgICB0eXBlZGVmIGRldGFpbDo6Y291bnRlZF9hcnJheV9zb3VyY2U8Y2hhcl90eXBlPiAgYXJyYXlfc291cmNlOwotICAgICAgICB0eXBlZGVmIGNvbXBvc2l0ZTxmaWx0ZXJfcmVmLCBhcnJheV9zb3VyY2U+ICAgICAgZmlsdGVyZWRfYXJyYXlfc291cmNlOwotCi0gICAgICAgIE5ETkJPT1NUX0FTU0VSVCgoZmxhZ3MoKSAmIGZfcmVhZCkgPT0gMCk7Ci0gICAgICAgIGlmIChmbGFncygpID09IDApIHsKLSAgICAgICAgICAgIGZsYWdzKCkgPSBmX3dyaXRlOwotICAgICAgICAgICAgYnVmKCkuc2V0KDAsIDApOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBmaWx0ZXJlZF9hcnJheV9zb3VyY2Ugc3JjKGZpbHRlcigpLCBhcnJheV9zb3VyY2UocywgbikpOwotICAgICAgICBmb3IgKGJvb2wgZ29vZCA9IHRydWU7IHNyYy5zZWNvbmQoKS5jb3VudCgpIDwgbiAmJiBnb29kOyApIHsKLSAgICAgICAgICAgIGJ1ZigpLmZpbGwoc3JjKTsKLSAgICAgICAgICAgIGdvb2QgPSBidWYoKS5mbHVzaChkZXN0KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gc3JjLnNlY29uZCgpLmNvdW50KCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotICAgIHZvaWQgY2xvc2UoRGV2aWNlJiBkZXYpCi0gICAgewotICAgICAgICBkZXRhaWw6OmV4ZWN1dGVfYWxsKAotICAgICAgICAgICAgZGV0YWlsOjpmbHVzaF9idWZmZXIoYnVmKCksIGRldiwgKGZsYWdzKCkgJiBmX3dyaXRlKSAhPSAwKSwKLSAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9jbG9zZV9hbGwocGltcGxfLT5maWx0ZXJfLCBkZXYpLAotICAgICAgICAgICAgZGV0YWlsOjpjbGVhcl9mbGFncyhmbGFncygpKQotICAgICAgICApOwotICAgIH0KLXByaXZhdGU6Ci0gICAgZmlsdGVyX3JlZiBmaWx0ZXIoKSB7IHJldHVybiBuZG5ib29zdDo6cmVmKHBpbXBsXy0+ZmlsdGVyXyk7IH0KLSAgICBkZXRhaWw6OmJ1ZmZlcjxjaGFyX3R5cGU+JiBidWYoKSB7IHJldHVybiBwaW1wbF8tPmJ1Zl87IH0KLSAgICBpbnQmIGZsYWdzKCkgeyByZXR1cm4gcGltcGxfLT5mbGFnc187IH0KLSAgICAKLSAgICBlbnVtIGZsYWdzXyB7Ci0gICAgICAgIGZfcmVhZCA9IDEsIGZfd3JpdGUgPSAyCi0gICAgfTsKLQotICAgIHN0cnVjdCBpbXBsIHsKLSAgICAgICAgaW1wbChjb25zdCBGaWx0ZXImIGZpbHRlciwgc3RkOjpzdHJlYW1zaXplIG4pIAotICAgICAgICAgICAgOiBmaWx0ZXJfKGZpbHRlciksIGJ1Zl8obiksIGZsYWdzXygwKQotICAgICAgICB7IGJ1Zl8uc2V0KDAsIDApOyB9Ci0gICAgICAgIEZpbHRlciAgICAgICAgICAgICAgICAgICAgIGZpbHRlcl87Ci0gICAgICAgIGRldGFpbDo6YnVmZmVyPGNoYXJfdHlwZT4gIGJ1Zl87Ci0gICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzXzsKLSAgICB9OwotICAgIHNoYXJlZF9wdHI8aW1wbD4gcGltcGxfOwotfTsKLQotLy8KLS8vIFRlbXBsYXRlIG5hbWU6IGludmVydC4KLS8vIFRlbXBsYXRlIHBhcmFtZXRlcnM6Ci0vLyAgICAgIEZpbHRlciAtIEEgbW9kZWwgb2YgSW5wdXRGaWx0ZXIgb3IgT3V0cHV0RmlsdGVyLgotLy8gRGVzY3JpcHRpb246IFJldHVybnMgYW4gaW5zdGFuY2Ugb2YgYW4gYXBwcm9wcmlhdGUgc3BlY2lhbGl6YXRpb24gb2YgaW52ZXJzZS4KLS8vCi10ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXI+Ci1pbnZlcnNlPEZpbHRlcj4gaW52ZXJ0KGNvbnN0IEZpbHRlciYgZikgeyByZXR1cm4gaW52ZXJzZTxGaWx0ZXI+KGYpOyB9Ci0gICAgICAgICAgICAgICAgICAgIAotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9lbmFibGVfd2FybmluZ3MuaHBwPiAgLy8gTVNWQy4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0lOVkVSVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvb3BlcmF0aW9ucy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiMTFkZWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvb3BlcmF0aW9ucy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwNS0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfT1BFUkFUSU9OU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX09QRVJBVElPTlNfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnNfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2xvc2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9mbHVzaC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2ltYnVlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvaW5wdXRfc2VxdWVuY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9vcHRpbWFsX2J1ZmZlcl9zaXplLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvb3V0cHV0X3NlcXVlbmNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvcmVhZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3NlZWsuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy93cml0ZS5ocHA+Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19PUEVSQVRJT05TX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvb3BlcmF0aW9uc19md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvb3BlcmF0aW9uc19md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZWU3OTkwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnNfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19PUEVSQVRJT05TX0ZXRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX09QRVJBVElPTlNfRldEX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ub3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Jhc2VfYW5kX2Rlcml2ZWQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBvcGVyYXRpb25zOwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotc3RydWN0IGN1c3RvbV90YWcgeyB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2N1c3RvbQotICAgIDogbXBsOjpub3RfPAotICAgICAgICAgIGlzX2Jhc2VfYW5kX2Rlcml2ZWQ8IGN1c3RvbV90YWcsIG9wZXJhdGlvbnM8VD4gPgotICAgICAgPgotICAgIHsgfTsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBvcGVyYXRpb25zIDogZGV0YWlsOjpjdXN0b21fdGFnIHsgfTsKLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19PUEVSQVRJT05TX0ZXRF9IUFBfSU5DTFVERUQgLy8tLS0tLS0tLS0tLS0tLS8vCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9vcHRpbWFsX2J1ZmZlcl9zaXplLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL29wdGltYWxfYnVmZmVyX3NpemUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZGY0YTgwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL29wdGltYWxfYnVmZmVyX3NpemUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX09QVElNQUxfQlVGRkVSX1NJWkVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19PUFRJTUFMX0JVRkZFUl9TSVpFX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAvLyBERURVQ0VEX1RZUEVOQU1FLCBNU1ZDLgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY29uc3RhbnRzLmhwcD4gIC8vIGNvbnN0YW50cy4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Rpc3BhdGNoLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3dyYXBfdW53cmFwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvb3BlcmF0aW9uc19md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0KLS8vIE11c3QgY29tZSBsYXN0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2Rpc2FibGVfd2FybmluZ3MuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3Qgb3B0aW1hbF9idWZmZXJfc2l6ZV9pbXBsOwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RkOjpzdHJlYW1zaXplIG9wdGltYWxfYnVmZmVyX3NpemUoY29uc3QgVCYgdCkKLXsKLSAgICB0eXBlZGVmIGRldGFpbDo6b3B0aW1hbF9idWZmZXJfc2l6ZV9pbXBsPFQ+IGltcGw7Ci0gICAgcmV0dXJuIGltcGw6Om9wdGltYWxfYnVmZmVyX3NpemUoZGV0YWlsOjp1bndyYXAodCkpOwotfQotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIG9wdGltYWxfYnVmZmVyX3NpemVfaW1wbC0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBvcHRpbWFsX2J1ZmZlcl9zaXplX2ltcGwKLSAgICA6IG1wbDo6aWZfPAotICAgICAgICAgIGlzX2N1c3RvbTxUPiwKLSAgICAgICAgICBvcGVyYXRpb25zPFQ+LAotICAgICAgICAgIG9wdGltYWxfYnVmZmVyX3NpemVfaW1wbDwKLSAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRQotICAgICAgICAgICAgICBkaXNwYXRjaDwKLSAgICAgICAgICAgICAgICAgIFQsIG9wdGltYWxseV9idWZmZXJlZF90YWcsIGRldmljZV90YWcsIGZpbHRlcl90YWcKLSAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgID4KLSAgICAgID46OnR5cGUKLSAgICB7IH07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBvcHRpbWFsX2J1ZmZlcl9zaXplX2ltcGw8b3B0aW1hbGx5X2J1ZmZlcmVkX3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtc2l6ZSBvcHRpbWFsX2J1ZmZlcl9zaXplKGNvbnN0IFQmIHQpCi0gICAgeyByZXR1cm4gdC5vcHRpbWFsX2J1ZmZlcl9zaXplKCk7IH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBvcHRpbWFsX2J1ZmZlcl9zaXplX2ltcGw8ZGV2aWNlX3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtc2l6ZSBvcHRpbWFsX2J1ZmZlcl9zaXplKGNvbnN0IFQmKQotICAgIHsgcmV0dXJuIGRlZmF1bHRfZGV2aWNlX2J1ZmZlcl9zaXplOyB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgb3B0aW1hbF9idWZmZXJfc2l6ZV9pbXBsPGZpbHRlcl90YWc+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUgb3B0aW1hbF9idWZmZXJfc2l6ZShjb25zdCBUJikKLSAgICB7IHJldHVybiBkZWZhdWx0X2ZpbHRlcl9idWZmZXJfc2l6ZTsgfQotfTsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfT1BUSU1BTF9CVUZGRVJfU0laRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL291dHB1dF9zZXF1ZW5jZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9vdXRwdXRfc2VxdWVuY2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTBlNTIyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL291dHB1dF9zZXF1ZW5jZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfT1VUUFVUX1NFUVVFTkNFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfT1VUUFVUX1NFUVVFTkNFX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPHV0aWxpdHk+ICAgICAgICAgICAvLyBwYWlyLgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAvLyBERURVQ0VEX1RZUEVOQU1FLCBNU1ZDLgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3dyYXBfdW53cmFwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvb3BlcmF0aW9uc19md2QuaHBwPiAgLy8gaXNfY3VzdG9tIAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0KLS8vIE11c3QgY29tZSBsYXN0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2Rpc2FibGVfd2FybmluZ3MuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3Qgb3V0cHV0X3NlcXVlbmNlX2ltcGw7Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgc3RkOjpwYWlyPAotICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlKiwKLSAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSoKLT4KLW91dHB1dF9zZXF1ZW5jZShUJiB0KQoteyByZXR1cm4gZGV0YWlsOjpvdXRwdXRfc2VxdWVuY2VfaW1wbDxUPjo6b3V0cHV0X3NlcXVlbmNlKHQpOyB9Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2Ygb3V0cHV0X3NlcXVlbmNlX2ltcGwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IG91dHB1dF9zZXF1ZW5jZV9pbXBsCi0gICAgOiBtcGw6OmlmXzwKLSAgICAgICAgICBkZXRhaWw6OmlzX2N1c3RvbTxUPiwKLSAgICAgICAgICBvcGVyYXRpb25zPFQ+LAotICAgICAgICAgIG91dHB1dF9zZXF1ZW5jZV9pbXBsPGRpcmVjdF90YWc+Ci0gICAgICA+Ojp0eXBlCi0gICAgeyB9OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgb3V0cHV0X3NlcXVlbmNlX2ltcGw8ZGlyZWN0X3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgc3RhdGljIHN0ZDo6cGFpcjwKLSAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBjaGFyX3R5cGVfb2Y8VT46OnR5cGUqLAotICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGNoYXJfdHlwZV9vZjxVPjo6dHlwZSoKLSAgICA+Ci0gICAgb3V0cHV0X3NlcXVlbmNlKFUmIHUpIHsgcmV0dXJuIHUub3V0cHV0X3NlcXVlbmNlKCk7IH0KLX07Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX09VVFBVVF9TRVFVRU5DRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL3BpcGVsaW5lLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL3BpcGVsaW5lLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTk1ZDNjMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9waXBlbGluZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjggKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX1BJUEFCTEVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19QSVBBQkxFX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+IC8vIE5ETkJPT1NUX01TVkMuCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPiAgICAgICAgICAgCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC90ZW1wbGF0ZV9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcHVuY3R1YXRpb24vY29tbWFfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSMgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYmFzZV9hbmRfZGVyaXZlZC5ocHA+Ci0jZW5kaWYKLQotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfUElQQUJMRShmaWx0ZXIsIGFyaXR5KSBcCi0gICAgdGVtcGxhdGU8IE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKGFyaXR5LCB0eXBlbmFtZSBUKSBcCi0gICAgICAgICAgICAgIE5ETkJPT1NUX1BQX0NPTU1BX0lGKGFyaXR5KSB0eXBlbmFtZSBDb21wb25lbnQ+IFwKLSAgICA6Om5kbmJvb3N0Ojppb3N0cmVhbXM6OnBpcGVsaW5lPCBcCi0gICAgICAgIDo6bmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpwaXBlbGluZV9zZWdtZW50PCBcCi0gICAgICAgICAgICBmaWx0ZXIgTkROQk9PU1RfSU9TVFJFQU1TX1RFTVBMQVRFX0FSR1MoYXJpdHksIFQpIFwKLSAgICAgICAgPiwgXAotICAgICAgICBDb21wb25lbnQgXAotICAgID4gb3BlcmF0b3J8KCBjb25zdCBmaWx0ZXIgTkROQk9PU1RfSU9TVFJFQU1TX1RFTVBMQVRFX0FSR1MoYXJpdHksIFQpJiBmLCBcCi0gICAgICAgICAgICAgICAgIGNvbnN0IENvbXBvbmVudCYgYyApIFwKLSAgICB7IFwKLSAgICAgICAgdHlwZWRlZiA6Om5kbmJvb3N0Ojppb3N0cmVhbXM6OmRldGFpbDo6cGlwZWxpbmVfc2VnbWVudDwgXAotICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgTkROQk9PU1RfSU9TVFJFQU1TX1RFTVBMQVRFX0FSR1MoYXJpdHksIFQpIFwKLSAgICAgICAgICAgICAgICA+IHNlZ21lbnQ7IFwKLSAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6Omlvc3RyZWFtczo6cGlwZWxpbmU8c2VnbWVudCwgQ29tcG9uZW50PiBcCi0gICAgICAgICAgICAgICAgICAgKHNlZ21lbnQoZiksIGMpOyBcCi0gICAgfSBcCi0gICAgLyoqLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUGlwZWxpbmUsIHR5cGVuYW1lIENvbXBvbmVudD4KLXN0cnVjdCBwaXBlbGluZTsKLSAgICAKLW5hbWVzcGFjZSBkZXRhaWwgewotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSAKLSAgICBzdHJ1Y3QgcGlwZWxpbmVfYmFzZSB7IH07Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0cnVjdCBpc19waXBlbGluZSAKLSAgICAgICAgOiBpc19iYXNlX2FuZF9kZXJpdmVkPHBpcGVsaW5lX2Jhc2UsIFQ+Ci0gICAgICAgIHsgfTsKLSNlbmRpZiAKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPCAweDYwMCkKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0cnVjdCBpc19waXBlbGluZSA6IG1wbDo6ZmFsc2VfIHsgfTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBpcGVsaW5lLCB0eXBlbmFtZSBDb21wb25lbnQ+Ci0gICAgc3RydWN0IGlzX3BpcGVsaW5lPCBwaXBlbGluZTxQaXBlbGluZSwgQ29tcG9uZW50PiA+IDogbXBsOjp0cnVlXyB7IH07Ci0jZW5kaWYKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ29tcG9uZW50PgotY2xhc3MgcGlwZWxpbmVfc2VnbWVudCAKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApCi0gICAgOiBwaXBlbGluZV9iYXNlIAotI2VuZGlmIAotewotcHVibGljOgotICAgIHBpcGVsaW5lX3NlZ21lbnQoY29uc3QgQ29tcG9uZW50JiBjb21wb25lbnQpIAotICAgICAgICA6IGNvbXBvbmVudF8oY29tcG9uZW50KSAKLSAgICAgICAgeyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRm4+Ci0gICAgdm9pZCBmb3JfZWFjaChGbiBmbikgY29uc3QgeyBmbihjb21wb25lbnRfKTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYWluPgotICAgIHZvaWQgcHVzaChDaGFpbiYgY2huKSBjb25zdCB7IGNobi5wdXNoKGNvbXBvbmVudF8pOyB9Ci1wcml2YXRlOgotICAgIHBpcGVsaW5lX3NlZ21lbnQgb3BlcmF0b3I9KGNvbnN0IHBpcGVsaW5lX3NlZ21lbnQmKTsKLSAgICBjb25zdCBDb21wb25lbnQmIGNvbXBvbmVudF87Ci19OwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotICAgICAgICAgICAgICAgICAgICAKLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBQaXBlbGluZS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFBpcGVsaW5lLCB0eXBlbmFtZSBDb21wb25lbnQ+Ci1zdHJ1Y3QgcGlwZWxpbmUgOiBQaXBlbGluZSB7Ci0gICAgdHlwZWRlZiBQaXBlbGluZSAgIHBpcGVsaW5lX3R5cGU7Ci0gICAgdHlwZWRlZiBDb21wb25lbnQgIGNvbXBvbmVudF90eXBlOwotICAgIHBpcGVsaW5lKGNvbnN0IFBpcGVsaW5lJiBwLCBjb25zdCBDb21wb25lbnQmIGNvbXBvbmVudCkKLSAgICAgICAgOiBQaXBlbGluZShwKSwgY29tcG9uZW50Xyhjb21wb25lbnQpCi0gICAgICAgIHsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZuPgotICAgIHZvaWQgZm9yX2VhY2goRm4gZm4pIGNvbnN0Ci0gICAgewotICAgICAgICBQaXBlbGluZTo6Zm9yX2VhY2goZm4pOwotICAgICAgICBmbihjb21wb25lbnRfKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhaW4+Ci0gICAgdm9pZCBwdXNoKENoYWluJiBjaG4pIGNvbnN0Ci0gICAgeyAKLSAgICAgICAgUGlwZWxpbmU6OnB1c2goY2huKTsKLSAgICAgICAgY2huLnB1c2goY29tcG9uZW50Xyk7Ci0gICAgfQotICAgIGNvbnN0IFBpcGVsaW5lJiB0YWlsKCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KLSAgICBjb25zdCBDb21wb25lbnQmIGhlYWQoKSBjb25zdCB7IHJldHVybiBjb21wb25lbnRfOyB9Ci1wcml2YXRlOgotICAgIHBpcGVsaW5lIG9wZXJhdG9yPShjb25zdCBwaXBlbGluZSYpOwotICAgIGNvbnN0IENvbXBvbmVudCYgY29tcG9uZW50XzsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFBpcGVsaW5lLCB0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIENvbXBvbmVudD4KLXBpcGVsaW5lPHBpcGVsaW5lPFBpcGVsaW5lLCBGaWx0ZXI+LCBDb21wb25lbnQ+Ci1vcGVyYXRvcnwoY29uc3QgcGlwZWxpbmU8UGlwZWxpbmUsIEZpbHRlcj4mIHAsIGNvbnN0IENvbXBvbmVudCYgY21wKQotewotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoaXNfZmlsdGVyPEZpbHRlcj46OnZhbHVlKTsKLSAgICByZXR1cm4gcGlwZWxpbmU8cGlwZWxpbmU8UGlwZWxpbmUsIEZpbHRlcj4sIENvbXBvbmVudD4ocCwgY21wKTsKLX0KLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19QSVBBQkxFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvcG9zaXRpb25pbmcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvcG9zaXRpb25pbmcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNzhmOWU0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL3Bvc2l0aW9uaW5nLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNyArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gVGhhbmtzIHRvIEdhcmV0aCBTeWx2ZXN0ZXItQnJhZGxleSBmb3IgdGhlIERpbmt1bXdhcmUgdmVyc2lvbnMgb2YgdGhlCi0vLyBwb3NpdGlvbmluZyBmdW5jdGlvbnMuCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX1BPU0lUSU9OSU5HX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfUE9TSVRJT05JTkdfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jc3RkaW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pbnRlZ2VyX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvY29kZWN2dC5ocHA+IC8vIG1ic3RhdGVfdC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9mcG9zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvcy5ocHA+IC8vIHN0cmVhbW9mZiwgc3RyZWFtcG9zLgotCi0vLyBNdXN0IGNvbWUgbGFzdC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9kaXNhYmxlX3dhcm5pbmdzLmhwcD4gCi0KLSNpZmRlZiBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRQotbmFtZXNwYWNlIHN0ZCB7IHVzaW5nIDo6ZnBvc190OyB9Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0gICAgICAgICAgICAgICAgICAgIAotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIHN0cmVhbV9vZmZzZXQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdHlwZWRlZiBuZG5ib29zdDo6aW50bWF4X3Qgc3RyZWFtX29mZnNldDsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIHN0cmVhbV9vZmZzZXRfdG9fc3RyZWFtb2ZmLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotaW5saW5lIHN0ZDo6c3RyZWFtb2ZmIHN0cmVhbV9vZmZzZXRfdG9fc3RyZWFtb2ZmKHN0cmVhbV9vZmZzZXQgb2ZmKQoteyByZXR1cm4gc3RhdGljX2Nhc3Q8c3RyZWFtX29mZnNldD4ob2ZmKTsgfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2Ygb2Zmc2V0X3RvX3Bvc2l0aW9uLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jIGlmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfSEFTX0RJTktVTVdBUkVfRlBPUwotCi1pbmxpbmUgc3RkOjpzdHJlYW1wb3Mgb2Zmc2V0X3RvX3Bvc2l0aW9uKHN0cmVhbV9vZmZzZXQgb2ZmKSB7IHJldHVybiBvZmY7IH0KLQotIyBlbHNlIC8vICMgaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19IQVNfRElOS1VNV0FSRV9GUE9TCi0KLWlubGluZSBzdGQ6OnN0cmVhbXBvcyBvZmZzZXRfdG9fcG9zaXRpb24oc3RyZWFtX29mZnNldCBvZmYpCi17IHJldHVybiBzdGQ6OnN0cmVhbXBvcyhzdGQ6Om1ic3RhdGVfdCgpLCBvZmYpOyB9Ci0KLSMgZW5kaWYgLy8gIyBpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0hBU19ESU5LVU1XQVJFX0ZQT1MKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIHBvc2l0aW9uX3RvX29mZnNldC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gSGFuZGUgY3VzdG9tIHBvc190eXBlJ3MKLXRlbXBsYXRlPHR5cGVuYW1lIFBvc1R5cGU+IAotaW5saW5lIHN0cmVhbV9vZmZzZXQgcG9zaXRpb25fdG9fb2Zmc2V0KFBvc1R5cGUgcG9zKQoteyByZXR1cm4gc3RkOjpzdHJlYW1vZmYocG9zKTsgfQotCi0jIGlmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfSEFTX0RJTktVTVdBUkVfRlBPUwotCi1pbmxpbmUgc3RyZWFtX29mZnNldCBwb3NpdGlvbl90b19vZmZzZXQoc3RkOjpzdHJlYW1wb3MgcG9zKSB7IHJldHVybiBwb3M7IH0KLQotIyBlbHNlIC8vICMgaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19IQVNfRElOS1VNV0FSRV9GUE9TCi0KLS8vIEluIHRoZSBEaW5rdW13YXJlIHN0YW5kYXJkIGxpYnJhcnksIGEgc3RkOjpzdHJlYW1wb3MgY29uc2lzdHMgb2YgdHdvIHN0cmVhbQotLy8gb2Zmc2V0cyAtLSBfRnBvcywgb2YgdHlwZSBzdGQ6OmZwb3NfdCwgYW5kIF9NeW9mZiwgb2YgdHlwZSBzdGQ6OnN0cmVhbW9mZiAtLQotLy8gdG9nZXRoZXIgd2l0aCBhIGNvbnZlcnNpb24gc3RhdGUuIEEgc3RkOjpzdHJlYW1wb3MgaXMgY29udmVydGVkIHRvIGEgCi0vLyBuZG5ib29zdDo6aW9zdHJlYW1zOjpzdHJlYW1fb2Zmc2V0IGJ5IGV4dHJhY3RpbmcgdGhlIHR3byBzdHJlYW0gb2Zmc2V0cyBhbmQKLS8vIHN1bW1pbmcgdGhlbS4gVGhlIHZhbHVlIG9mIF9GcG9zIGNhbiBiZSBleHRyYWN0ZWQgdXNpbmcgdGhlIGltcGxlbWVudGF0aW9uLQotLy8gZGVmaW5lZCBtZW1iZXIgZnVuY3Rpb25zIHNlZWtwb3MoKSBvciBnZXRfZnBvc190KCksIGRlcGVuZGluZyBvbiB0aGUgCi0vLyBEaW5rdW13YXJlIHZlcnNpb24uIFRoZSB2YWx1ZSBvZiBfTXlvZmYgY2Fubm90IGJlIGV4dHJhY3RlZCBkaXJlY3RseSwgYnV0IGNhbgotLy8gYmUgY2FsY3VsYXRlZCBhcyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSByZXN1bHQgb2YgY29udmVydGluZyB0aGUgCi0vLyBzdGQ6OmZwb3MgdG8gYSBzdGQ6OnN0cmVhbW9mZiBhbmQgdGhlIHJlc3VsdCBvZiBjb252ZXJ0aW5nIHRoZSBtZW1iZXIgX0Zwb3MKLS8vIHRvIGEgbG9uZy4gVGhlIGxhdHRlciBvcGVyYXRpb24gaXMgYWNjb21wbGlzaGVkIHdpdGggdGhlIG1hY3JvIF9GUE9TT0ZGLCAKLS8vIHdoaWNoIHdvcmtzIGNvcnJlY3RseSBvbiBwbGF0Zm9ybXMgd2hlcmUgc3RkOjpmcG9zX3QgaXMgYW4gaW50ZWdyYWwgdHlwZSBhbmQgCi0vLyBwbGF0Zm9ybXMgd2hlcmUgaXQgaXMgYSBzdHJ1Y3QKLQotLy8gQ29udmVydHMgYSBzdGQ6OmZwb3NfdCB0byBhIHN0cmVhbV9vZmZzZXQKLWlubGluZSBzdHJlYW1fb2Zmc2V0IGZwb3NfdF90b19vZmZzZXQoc3RkOjpmcG9zX3QgcG9zKQotewotIyAgaWYgZGVmaW5lZChfUE9TSVhfKSB8fCAoX0lOVEVHUkFMX01BWF9CSVRTID49IDY0KSB8fCBkZWZpbmVkKF9fSUJNQ1BQX18pCi0gICAgcmV0dXJuIHBvczsKLSMgIGVsc2UKLSAgICByZXR1cm4gX0ZQT1NPRkYocG9zKTsKLSMgIGVuZGlmCi19Ci0KLS8vIEV4dHJhY3RzIHRoZSBtZW1iZXIgX0Zwb3MgZnJvbSBhIHN0ZDo6ZnBvcwotaW5saW5lIHN0ZDo6ZnBvc190IHN0cmVhbXBvc190b19mcG9zX3Qoc3RkOjpzdHJlYW1wb3MgcG9zKQotewotIyAgaWYgZGVmaW5lZCAoX0NQUExJQl9WRVIpIHx8IGRlZmluZWQoX19JQk1DUFBfXykKLSAgICByZXR1cm4gcG9zLnNlZWtwb3MoKTsKLSMgIGVsc2UKLSAgICByZXR1cm4gcG9zLmdldF9mcG9zX3QoKTsKLSMgIGVuZGlmCi19Ci0KLWlubGluZSBzdHJlYW1fb2Zmc2V0IHBvc2l0aW9uX3RvX29mZnNldChzdGQ6OnN0cmVhbXBvcyBwb3MpCi17Ci0gICAgcmV0dXJuIGZwb3NfdF90b19vZmZzZXQoc3RyZWFtcG9zX3RvX2Zwb3NfdChwb3MpKSArCi0gICAgICAgIHN0YXRpY19jYXN0PHN0cmVhbV9vZmZzZXQ+KAotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1vZmY+KHBvcykgLQotICAgICAgICAgICAgX0ZQT1NPRkYoc3RyZWFtcG9zX3RvX2Zwb3NfdChwb3MpKQotICAgICAgICApOwotfQotCi0jIGVuZGlmIC8vICMgaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19IQVNfRElOS1VNV0FSRV9GUE9TIAotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2VuYWJsZV93YXJuaW5ncy5ocHA+IAotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfUE9TSVRJT05JTkdfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9wdXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvcHV0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODkzZmVkNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9wdXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDUtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX1BVVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX1BVVF9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvd3JpdGUuaHBwPgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfUFVUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvcHV0YmFjay5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9wdXRiYWNrLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTg2OTI0ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9wdXRiYWNrLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDA1LTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19QVVRCQUNLX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfUFVUQkFDS19IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvcmVhZC5ocHA+Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19QVVRCQUNLX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvcmVhZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9yZWFkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzExZWRmNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9yZWFkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0NyArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwNS0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfUkVBRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX1JFQURfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gIC8vIERFRFVDRURfVFlQRU5BTUUsIE1TVkMuCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jaGFyX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jaGFyX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9kaXNwYXRjaC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3MuaHBwPiAgLy8gc3RyZWFtc2l6ZS4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3N0cmVhbWJ1Zi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC93cmFwX3Vud3JhcC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnNfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotCi0vLyBNdXN0IGNvbWUgbGFzdC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9kaXNhYmxlX3dhcm5pbmdzLmhwcD4KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSMgaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC92YzYvcmVhZC5ocHA+Ci0jZWxzZSAvLyAjaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgcmVhZF9kZXZpY2VfaW1wbDsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCByZWFkX2ZpbHRlcl9pbXBsOwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdHlwZW5hbWUgaW50X3R5cGVfb2Y8VD46OnR5cGUgZ2V0KFQmIHQpCi17IHJldHVybiBkZXRhaWw6OnJlYWRfZGV2aWNlX2ltcGw8VD46OmdldChkZXRhaWw6OnVud3JhcCh0KSk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBzdGQ6OnN0cmVhbXNpemUKLXJlYWQoVCYgdCwgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLXsgcmV0dXJuIGRldGFpbDo6cmVhZF9kZXZpY2VfaW1wbDxUPjo6cmVhZChkZXRhaWw6OnVud3JhcCh0KSwgcywgbik7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgU291cmNlPgotc3RkOjpzdHJlYW1zaXplCi1yZWFkKFQmIHQsIFNvdXJjZSYgc3JjLCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQoteyByZXR1cm4gZGV0YWlsOjpyZWFkX2ZpbHRlcl9pbXBsPFQ+OjpyZWFkKGRldGFpbDo6dW53cmFwKHQpLCBzcmMsIHMsIG4pOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1ib29sIHB1dGJhY2soVCYgdCwgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlIGMpCi17IHJldHVybiBkZXRhaWw6OnJlYWRfZGV2aWNlX2ltcGw8VD46OnB1dGJhY2soZGV0YWlsOjp1bndyYXAodCksIGMpOyB9Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyBIZWxwZXIgZnVuY3Rpb24gZm9yIGFkZGluZyAtMSBhcyBFT0YgaW5kaWNhdG9yLgotaW5saW5lIHN0ZDo6c3RyZWFtc2l6ZSBjaGVja19lb2Yoc3RkOjpzdHJlYW1zaXplIG4pIHsgcmV0dXJuIG4gIT0gMCA/IG4gOiAtMTsgfQotCi0vLyBIZWxwZXIgdGVtcGxhdGVzIGZvciByZWFkaW5nIGZyb20gc3RyZWFtYnVmcy4KLXRlbXBsYXRlPGJvb2wgSXNMaW5rZWQ+Ci1zdHJ1Y3QgdHJ1ZV9lb2ZfaW1wbDsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHRydWVfZW9mX2ltcGw8dHJ1ZT4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIGJvb2wgdHJ1ZV9lb2YoVCYgdCkgeyByZXR1cm4gdC50cnVlX2VvZigpOyB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdHJ1ZV9lb2ZfaW1wbDxmYWxzZT4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIGJvb2wgdHJ1ZV9lb2YoVCYpIHsgcmV0dXJuIHRydWU7IH0KLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgYm9vbCB0cnVlX2VvZihUJiB0KQotewotICAgIGNvbnN0IGJvb2wgbGlua2VkID0gaXNfbGlua2VkPFQ+Ojp2YWx1ZTsKLSAgICByZXR1cm4gdHJ1ZV9lb2ZfaW1wbDxsaW5rZWQ+Ojp0cnVlX2VvZih0KTsKLX0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIHJlYWRfZGV2aWNlX2ltcGwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCByZWFkX2RldmljZV9pbXBsCi0gICAgOiBtcGw6OmlmXzwKLSAgICAgICAgICBkZXRhaWw6OmlzX2N1c3RvbTxUPiwKLSAgICAgICAgICBvcGVyYXRpb25zPFQ+LAotICAgICAgICAgIHJlYWRfZGV2aWNlX2ltcGw8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUKLSAgICAgICAgICAgICAgZGV0YWlsOjpkaXNwYXRjaDwKLSAgICAgICAgICAgICAgICAgIFQsIGlzdHJlYW1fdGFnLCBzdHJlYW1idWZfdGFnLCBpbnB1dAotICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgPgotICAgICAgPjo6dHlwZQotICAgIHsgfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJlYWRfZGV2aWNlX2ltcGw8aXN0cmVhbV90YWc+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyB0eXBlbmFtZSBpbnRfdHlwZV9vZjxUPjo6dHlwZSBnZXQoVCYgdCkKLSAgICB7IHJldHVybiB0LmdldCgpOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUKLSAgICByZWFkKFQmIHQsIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgeyByZXR1cm4gY2hlY2tfZW9mKHQucmRidWYoKS0+c2dldG4ocywgbikpOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBib29sIHB1dGJhY2soVCYgdCwgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlIGMpCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSAgICAgICAgICBjaGFyX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfSU9TVFJFQU1TX0NIQVJfVFJBSVRTKGNoYXJfdHlwZSkgIHRyYWl0c190eXBlOwotICAgICAgICByZXR1cm4gIXRyYWl0c190eXBlOjplcV9pbnRfdHlwZSggdC5yZGJ1ZigpLT5zcHV0YmFja2MoYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFpdHNfdHlwZTo6ZW9mKCkgKTsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmVhZF9kZXZpY2VfaW1wbDxzdHJlYW1idWZfdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgdHlwZW5hbWUgaW50X3R5cGVfb2Y8VD46OnR5cGUKLSAgICBnZXQoVCYgdCkKLSAgICB7ICAgLy8gZ2NjIDIuOTUgbmVlZHMgbmFtZXNwYWNlIHF1YWxpZmljYXRpb24gZm9yIGNoYXJfdHJhaXRzLgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSAgICAgY2hhcl90eXBlOwotICAgICAgICB0eXBlZGVmIGlvc3RyZWFtczo6Y2hhcl90cmFpdHM8Y2hhcl90eXBlPiAgdHJhaXRzX3R5cGU7Ci0gICAgICAgIHR5cGVuYW1lIGludF90eXBlX29mPFQ+Ojp0eXBlIGM7Ci0gICAgICAgIHJldHVybiAhdHJhaXRzX3R5cGU6OmlzX2VvZihjID0gdC5zYnVtcGMoKSkgfHwKLSAgICAgICAgICAgICAgICBkZXRhaWw6OnRydWVfZW9mKHQpCi0gICAgICAgICAgICAgICAgICAgID8KLSAgICAgICAgICAgICAgICBjIDogdHJhaXRzX3R5cGU6OndvdWxkX2Jsb2NrKCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgc3RkOjpzdHJlYW1zaXplCi0gICAgcmVhZChUJiB0LCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIGFtdDsKLSAgICAgICAgcmV0dXJuIChhbXQgPSB0LnNnZXRuKHMsIG4pKSAhPSAwID8KLSAgICAgICAgICAgIGFtdCA6Ci0gICAgICAgICAgICBkZXRhaWw6OnRydWVfZW9mKHQpID8KLSAgICAgICAgICAgICAgICAtMSA6Ci0gICAgICAgICAgICAgICAgMDsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBib29sIHB1dGJhY2soVCYgdCwgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlIGMpCi0gICAgeyAgIC8vIGdjYyAyLjk1IG5lZWRzIG5hbWVzcGFjZSBxdWFsaWZpY2F0aW9uIGZvciBjaGFyX3RyYWl0cy4KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUgICAgIGNoYXJfdHlwZTsKLSAgICAgICAgdHlwZWRlZiBpb3N0cmVhbXM6OmNoYXJfdHJhaXRzPGNoYXJfdHlwZT4gIHRyYWl0c190eXBlOwotICAgICAgICByZXR1cm4gIXRyYWl0c190eXBlOjppc19lb2YodC5zcHV0YmFja2MoYykpOwotICAgIH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCByZWFkX2RldmljZV9pbXBsPGlucHV0PiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgdHlwZW5hbWUgaW50X3R5cGVfb2Y8VD46OnR5cGUKLSAgICBnZXQoVCYgdCkKLSAgICB7ICAgLy8gZ2NjIDIuOTUgbmVlZHMgbmFtZXNwYWNlIHF1YWxpZmljYXRpb24gZm9yIGNoYXJfdHJhaXRzLgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSAgICAgY2hhcl90eXBlOwotICAgICAgICB0eXBlZGVmIGlvc3RyZWFtczo6Y2hhcl90cmFpdHM8Y2hhcl90eXBlPiAgdHJhaXRzX3R5cGU7Ci0gICAgICAgIGNoYXJfdHlwZSBjOwotICAgICAgICBzdGQ6OnN0cmVhbXNpemUgYW10OwotICAgICAgICByZXR1cm4gKGFtdCA9IHQucmVhZCgmYywgMSkpID09IDEgPwotICAgICAgICAgICAgdHJhaXRzX3R5cGU6OnRvX2ludF90eXBlKGMpIDoKLSAgICAgICAgICAgIGFtdCA9PSAtMSA/Ci0gICAgICAgICAgICAgICAgdHJhaXRzX3R5cGU6OmVvZigpIDoKLSAgICAgICAgICAgICAgICB0cmFpdHNfdHlwZTo6d291bGRfYmxvY2soKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUKLSAgICByZWFkKFQmIHQsIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgeyByZXR1cm4gdC5yZWFkKHMsIG4pOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBib29sIHB1dGJhY2soVCYgdCwgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlIGMpCi0gICAgeyAgIC8vIFQgbXVzdCBiZSBQZWVrYWJsZS4KLSAgICAgICAgcmV0dXJuIHQucHV0YmFjayhjKTsKLSAgICB9Ci19OwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgcmVhZF9maWx0ZXJfaW1wbC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IHJlYWRfZmlsdGVyX2ltcGwKLSAgICA6IG1wbDo6aWZfPAotICAgICAgICAgIGRldGFpbDo6aXNfY3VzdG9tPFQ+LAotICAgICAgICAgIG9wZXJhdGlvbnM8VD4sCi0gICAgICAgICAgcmVhZF9maWx0ZXJfaW1wbDwKLSAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRQotICAgICAgICAgICAgICBkZXRhaWw6OmRpc3BhdGNoPAotICAgICAgICAgICAgICAgICAgVCwgbXVsdGljaGFyX3RhZywgYW55X3RhZwotICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgPgotICAgICAgPjo6dHlwZQotICAgIHsgfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJlYWRfZmlsdGVyX2ltcGw8bXVsdGljaGFyX3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFNvdXJjZT4KLSAgICBzdGF0aWMgc3RkOjpzdHJlYW1zaXplIHJlYWQKLSAgICAgICAoVCYgdCwgU291cmNlJiBzcmMsIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgeyByZXR1cm4gdC5yZWFkKHNyYywgcywgbik7IH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCByZWFkX2ZpbHRlcl9pbXBsPGFueV90YWc+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBTb3VyY2U+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtc2l6ZSByZWFkCi0gICAgICAgKFQmIHQsIFNvdXJjZSYgc3JjLCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsgICAvLyBnY2MgMi45NSBuZWVkcyBuYW1lc3BhY2UgcXVhbGlmaWNhdGlvbiBmb3IgY2hhcl90cmFpdHMuCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlICAgICBjaGFyX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgaW9zdHJlYW1zOjpjaGFyX3RyYWl0czxjaGFyX3R5cGU+ICB0cmFpdHNfdHlwZTsKLSAgICAgICAgZm9yIChzdGQ6OnN0cmVhbXNpemUgb2ZmID0gMDsgb2ZmIDwgbjsgKytvZmYpIHsKLSAgICAgICAgICAgIHR5cGVuYW1lIHRyYWl0c190eXBlOjppbnRfdHlwZSBjID0gdC5nZXQoc3JjKTsKLSAgICAgICAgICAgIGlmICh0cmFpdHNfdHlwZTo6aXNfZW9mKGMpKQotICAgICAgICAgICAgICAgIHJldHVybiBjaGVja19lb2Yob2ZmKTsKLSAgICAgICAgICAgIGlmICh0cmFpdHNfdHlwZTo6d291bGRfYmxvY2soYykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG9mZjsKLSAgICAgICAgICAgIHNbb2ZmXSA9IHRyYWl0c190eXBlOjp0b19jaGFyX3R5cGUoYyk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG47Ci0gICAgfQotfTsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfUkVBRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL3Jlc3RyaWN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL3Jlc3RyaWN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGIwZmRlNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9yZXN0cmljdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0vKgotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLihTZWUgYWNjb21wYW55aW5nIAotICogZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotICogCi0gKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0gKgotICogRmlsZTogICAgICAgIG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvcmVzdHJpY3QuaHBwCi0gKiBEYXRlOiAgICAgICAgU3VuIEphbiAwNiAxMjo1NzozMCBNU1QgMjAwOAotICogQ29weXJpZ2h0OiAgIDIwMDggQ29kZVJhZ2UsIExMQwotICAgICAgICAgICAgICAgIDIwMDQtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotICogQXV0aG9yOiAgICAgIEpvbmF0aGFuIFR1cmthbmlzCi0gKiBDb250YWN0OiAgICAgdHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbQotICoKLSAqIERlZmluZXMgdGhlIGNsYXNzIHRlbXBsYXRlIG5kbmJvb3N0Ojppb3N0cmVhbXM6OnJlc3RyaWN0aW9uIGFuZCB0aGUgCi0gKiBvdmVybG9hZGVkIGZ1bmN0aW9uIHRlbXBsYXRlIG5kbmJvb3N0Ojppb3N0cmVhbXM6OnJlc3RyaWN0Ci0gKi8KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfUkVTVFJJQ1RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19SRVNUUklDVF9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvcmVzdHJpY3RfaW1wbC5ocHA+Ci0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19SRVNUUklDVCByZXN0cmljdAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvcmVzdHJpY3RfaW1wbC5ocHA+Ci0jdW5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX1JFU1RSSUNUCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19SRVNUUklDVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL3NlZWsuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvc2Vlay5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmZjE5YjEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvc2Vlay5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODAgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX1NFRUtfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19TRUVLX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAvLyBERURVQ0VEX1RZUEVOQU1FLCBNU1ZDLgotI2luY2x1ZGUgPG5kbmJvb3N0L2ludGVnZXJfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2F0ZWdvcmllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9kaXNwYXRjaC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3MuaHBwPiAgICAgICAvLyBzdHJlYW1zaXplLCBzZWVrZGlyLCBvcGVubW9kZS4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3N0cmVhbWJ1Zi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC93cmFwX3Vud3JhcC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnNfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvcG9zaXRpb25pbmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0KLS8vIE11c3QgY29tZSBsYXN0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2Rpc2FibGVfd2FybmluZ3MuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3Qgc2Vla19kZXZpY2VfaW1wbDsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBzZWVrX2ZpbHRlcl9pbXBsOwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIHN0ZDo6c3RyZWFtcG9zCi1zZWVrKCBUJiB0LCBzdHJlYW1fb2Zmc2V0IG9mZiwgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSwKLSAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2ggPSBORE5CT09TVF9JT1M6OmluIHwgTkROQk9PU1RfSU9TOjpvdXQgKQoteyAKLSAgICB1c2luZyBuYW1lc3BhY2UgZGV0YWlsOwotICAgIHJldHVybiBzZWVrX2RldmljZV9pbXBsPFQ+OjpzZWVrKGRldGFpbDo6dW53cmFwKHQpLCBvZmYsIHdheSwgd2hpY2gpOyAKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRGV2aWNlPgotaW5saW5lIHN0ZDo6c3RyZWFtcG9zCi1zZWVrKCBUJiB0LCBEZXZpY2UmIGRldiwgc3RyZWFtX29mZnNldCBvZmYsIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXksCi0gICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoID0gTkROQk9PU1RfSU9TOjppbiB8IE5ETkJPT1NUX0lPUzo6b3V0ICkKLXsgCi0gICAgdXNpbmcgbmFtZXNwYWNlIGRldGFpbDsKLSAgICByZXR1cm4gc2Vla19maWx0ZXJfaW1wbDxUPjo6c2VlayhkZXRhaWw6OnVud3JhcCh0KSwgZGV2LCBvZmYsIHdheSwgd2hpY2gpOwotfQotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIHNlZWtfZGV2aWNlX2ltcGwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBzZWVrX2RldmljZV9pbXBsCi0gICAgOiBtcGw6OmlmXzwKLSAgICAgICAgICBpc19jdXN0b208VD4sCi0gICAgICAgICAgb3BlcmF0aW9uczxUPiwKLSAgICAgICAgICBzZWVrX2RldmljZV9pbXBsPAotICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FCi0gICAgICAgICAgICAgIGRpc3BhdGNoPAotICAgICAgICAgICAgICAgICAgVCwgaW9zdHJlYW1fdGFnLCBpc3RyZWFtX3RhZywgb3N0cmVhbV90YWcsCi0gICAgICAgICAgICAgICAgICBzdHJlYW1idWZfdGFnLCB0d29faGVhZCwgYW55X3RhZwotICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgPgotICAgICAgPjo6dHlwZQotICAgIHsgfTsKLQotc3RydWN0IHNlZWtfaW1wbF9iYXNpY19pb3MgewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtcG9zIHNlZWsoIFQmIHQsIHN0cmVhbV9vZmZzZXQgb2ZmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6OnNlZWtkaXIgd2F5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoICkKLSAgICB7Ci0gICAgICAgIGlmICggd2F5ID09IE5ETkJPT1NUX0lPUzo6YmVnICYmCi0gICAgICAgICAgICAgKCBvZmYgPCBpbnRlZ2VyX3RyYWl0czxzdGQ6OnN0cmVhbW9mZj46OmNvbnN0X21pbiB8fAotICAgICAgICAgICAgICAgb2ZmID4gaW50ZWdlcl90cmFpdHM8c3RkOjpzdHJlYW1vZmY+Ojpjb25zdF9tYXggKSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0LnJkYnVmKCktPnB1YnNlZWtwb3Mob2Zmc2V0X3RvX3Bvc2l0aW9uKG9mZikpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIHQucmRidWYoKS0+cHVic2Vla29mZihvZmYsIHdheSwgd2hpY2gpOwotICAgICAgICB9Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNlZWtfZGV2aWNlX2ltcGw8aW9zdHJlYW1fdGFnPiA6IHNlZWtfaW1wbF9iYXNpY19pb3MgeyB9OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2Vla19kZXZpY2VfaW1wbDxpc3RyZWFtX3RhZz4gOiBzZWVrX2ltcGxfYmFzaWNfaW9zIHsgfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNlZWtfZGV2aWNlX2ltcGw8b3N0cmVhbV90YWc+IDogc2Vla19pbXBsX2Jhc2ljX2lvcyB7IH07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZWVrX2RldmljZV9pbXBsPHN0cmVhbWJ1Zl90YWc+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXBvcyBzZWVrKCBUJiB0LCBzdHJlYW1fb2Zmc2V0IG9mZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCApCi0gICAgewotICAgICAgICBpZiAoIHdheSA9PSBORE5CT09TVF9JT1M6OmJlZyAmJgotICAgICAgICAgICAgICggb2ZmIDwgaW50ZWdlcl90cmFpdHM8c3RkOjpzdHJlYW1vZmY+Ojpjb25zdF9taW4gfHwKLSAgICAgICAgICAgICAgIG9mZiA+IGludGVnZXJfdHJhaXRzPHN0ZDo6c3RyZWFtb2ZmPjo6Y29uc3RfbWF4ICkgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdC5ORE5CT09TVF9JT1NUUkVBTVNfUFVCU0VFS1BPUyhvZmZzZXRfdG9fcG9zaXRpb24ob2ZmKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gdC5ORE5CT09TVF9JT1NUUkVBTVNfUFVCU0VFS09GRihvZmYsIHdheSwgd2hpY2gpOwotICAgICAgICB9Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNlZWtfZGV2aWNlX2ltcGw8dHdvX2hlYWQ+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXBvcyBzZWVrKCBUJiB0LCBzdHJlYW1fb2Zmc2V0IG9mZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCApCi0gICAgeyByZXR1cm4gdC5zZWVrKG9mZiwgd2F5LCB3aGljaCk7IH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZWVrX2RldmljZV9pbXBsPGFueV90YWc+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXBvcyBzZWVrKCBUJiB0LCBzdHJlYW1fb2Zmc2V0IG9mZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSApCi0gICAgeyByZXR1cm4gdC5zZWVrKG9mZiwgd2F5KTsgfQotfTsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIHNlZWtfZmlsdGVyX2ltcGwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBzZWVrX2ZpbHRlcl9pbXBsCi0gICAgOiBtcGw6OmlmXzwKLSAgICAgICAgICBpc19jdXN0b208VD4sCi0gICAgICAgICAgb3BlcmF0aW9uczxUPiwKLSAgICAgICAgICBzZWVrX2ZpbHRlcl9pbXBsPAotICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FCi0gICAgICAgICAgICAgIGRpc3BhdGNoPFQsIHR3b19oZWFkLCBhbnlfdGFnPjo6dHlwZQotICAgICAgICAgID4KLSAgICAgID46OnR5cGUKLSAgICB7IH07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZWVrX2ZpbHRlcl9pbXBsPHR3b19oZWFkPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRGV2aWNlPgotICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXBvcyBzZWVrKCBUJiB0LCBEZXZpY2UmIGQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9vZmZzZXQgb2ZmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6OnNlZWtkaXIgd2F5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoICkKLSAgICB7IHJldHVybiB0LnNlZWsoZCwgb2ZmLCB3YXksIHdoaWNoKTsgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNlZWtfZmlsdGVyX2ltcGw8YW55X3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIERldmljZT4KLSAgICBzdGF0aWMgc3RkOjpzdHJlYW1wb3Mgc2VlayggVCYgdCwgRGV2aWNlJiBkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fb2Zmc2V0IG9mZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSApCi0gICAgeyByZXR1cm4gdC5zZWVrKGQsIG9mZiwgd2F5KTsgfQotfTsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfU0VFS19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL3NraXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvc2tpcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiNWE2MDAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvc2tpcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vIFRvIGRvOiBoYW5kbGUgYmlkaXJlY3Rpb24gc3RyZWFtcyBhbmQgb3V0cHV0LXNlZWthYmxlIGNvbXBvbmVudHMuCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX1NLSVBfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19TS0lQX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jaGFyX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3MuaHBwPiAgLy8gZmFpbHVyZS4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvb3BlcmF0aW9ucy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3NlZWsuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29udmVydGlibGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLXZvaWQgc2tpcChEZXZpY2UmIGRldiwgc3RyZWFtX29mZnNldCBvZmYsIG1wbDo6dHJ1ZV8pCi17IGlvc3RyZWFtczo6c2VlayhkZXYsIG9mZiwgTkROQk9PU1RfSU9TOjpjdXIpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLXZvaWQgc2tpcChEZXZpY2UmIGRldiwgc3RyZWFtX29mZnNldCBvZmYsIG1wbDo6ZmFsc2VfKQoteyAgIC8vIGdjYyAyLjk1IG5lZWRzIG5hbWVzcGFjZSBxdWFsaWZpY2F0aW9uIGZvciBjaGFyX3RyYWl0cy4KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxEZXZpY2U+Ojp0eXBlICBjaGFyX3R5cGU7Ci0gICAgdHlwZWRlZiBpb3N0cmVhbXM6OmNoYXJfdHJhaXRzPGNoYXJfdHlwZT4gICAgdHJhaXRzX3R5cGU7Ci0gICAgZm9yIChzdHJlYW1fb2Zmc2V0IHogPSAwOyB6IDwgb2ZmOyApIHsKLSAgICAgICAgdHlwZW5hbWUgdHJhaXRzX3R5cGU6OmludF90eXBlIGM7Ci0gICAgICAgIGlmICh0cmFpdHNfdHlwZTo6aXNfZW9mKGMgPSBpb3N0cmVhbXM6OmdldChkZXYpKSkKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUoImJhZCBza2lwIG9mZnNldCIpKTsKLSAgICAgICAgaWYgKCF0cmFpdHNfdHlwZTo6d291bGRfYmxvY2soYykpCi0gICAgICAgICAgICArK3o7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIERldmljZT4KLXZvaWQgc2tpcCggRmlsdGVyJiBmbHQsIERldmljZSYgZGV2LCBzdHJlYW1fb2Zmc2V0IG9mZiwKLSAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCwgbXBsOjp0cnVlXyApCi17IG5kbmJvb3N0Ojppb3N0cmVhbXM6OnNlZWsoZmx0LCBkZXYsIG9mZiwgTkROQk9PU1RfSU9TOjpjdXIsIHdoaWNoKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIERldmljZT4KLXZvaWQgc2tpcCggRmlsdGVyJiBmbHQsIERldmljZSYgZGV2LCBzdHJlYW1fb2Zmc2V0IG9mZiwKLSAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSwgbXBsOjpmYWxzZV8gKQoteyAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxEZXZpY2U+Ojp0eXBlIGNoYXJfdHlwZTsKLSAgICBjaGFyX3R5cGUgYzsKLSAgICBmb3IgKHN0cmVhbV9vZmZzZXQgeiA9IDA7IHogPCBvZmY7ICkgewotICAgICAgICBzdGQ6OnN0cmVhbXNpemUgYW10OwotICAgICAgICBpZiAoKGFtdCA9IGlvc3RyZWFtczo6cmVhZChmbHQsIGRldiwgJmMsIDEpKSA9PSAtMSkKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUoImJhZCBza2lwIG9mZnNldCIpKTsKLSAgICAgICAgaWYgKGFtdCA9PSAxKQotICAgICAgICAgICAgKyt6OwotICAgIH0KLX0KLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotdm9pZCBza2lwKERldmljZSYgZGV2LCBzdHJlYW1fb2Zmc2V0IG9mZikKLXsgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBtb2RlX29mPERldmljZT46OnR5cGUgICAgIG1vZGU7Ci0gICAgdHlwZWRlZiBtcGw6Om9yXzwKLSAgICAgICAgaXNfY29udmVydGlibGU8bW9kZSwgaW5wdXRfc2Vla2FibGU+LAotICAgICAgICBpc19jb252ZXJ0aWJsZTxtb2RlLCBvdXRwdXRfc2Vla2FibGU+Ci0gICAgPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbl9zZWVrOwotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoCi0gICAgICAgIChjYW5fc2Vlazo6dmFsdWUgfHwgaXNfY29udmVydGlibGU8bW9kZSwgaW5wdXQ+Ojp2YWx1ZSkKLSAgICApOwotICAgIGRldGFpbDo6c2tpcChkZXYsIG9mZiwgY2FuX3NlZWsoKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlciwgdHlwZW5hbWUgRGV2aWNlPgotdm9pZCBza2lwKCBGaWx0ZXImIGZsdCwgRGV2aWNlJiBkZXYsIHN0cmVhbV9vZmZzZXQgb2ZmLCAKLSAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCA9IE5ETkJPT1NUX0lPUzo6aW4gfCBORE5CT09TVF9JT1M6Om91dCApCi17IAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbW9kZV9vZjxGaWx0ZXI+Ojp0eXBlICAgICAgICAgICAgICAgICBmaWx0ZXJfbW9kZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1vZGVfb2Y8RGV2aWNlPjo6dHlwZSAgICAgICAgICAgICAgICAgZGV2aWNlX21vZGU7Ci0gICAgdHlwZWRlZiBtcGw6Om9yXzwKLSAgICAgICAgbXBsOjphbmRfPAotICAgICAgICAgICAgaXNfY29udmVydGlibGU8ZmlsdGVyX21vZGUsIGlucHV0X3NlZWthYmxlPiwKLSAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPGRldmljZV9tb2RlLCBpbnB1dF9zZWVrYWJsZT4KLSAgICAgICAgPiwKLSAgICAgICAgbXBsOjphbmRfPAotICAgICAgICAgICAgaXNfY29udmVydGlibGU8ZmlsdGVyX21vZGUsIG91dHB1dF9zZWVrYWJsZT4sCi0gICAgICAgICAgICBpc19jb252ZXJ0aWJsZTxkZXZpY2VfbW9kZSwgb3V0cHV0X3NlZWthYmxlPgotICAgICAgICA+Ci0gICAgPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbl9zZWVrOwotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoCi0gICAgICAgICggY2FuX3NlZWs6OnZhbHVlIHx8IAotICAgICAgICAgIChpc19jb252ZXJ0aWJsZTxmaWx0ZXJfbW9kZSwgaW5wdXQ+Ojp2YWx1ZSAmJgotICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPGRldmljZV9tb2RlLCBpbnB1dD46OnZhbHVlKSApCi0gICAgKTsKLSAgICBkZXRhaWw6OnNraXAoZmx0LCBkZXYsIG9mZiwgd2hpY2gsIGNhbl9zZWVrKCkpOwotfQotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX1NLSVBfSFBQX0lOQ0xVREVEIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL3NsaWNlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL3NsaWNlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2YxNmVhOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9zbGljZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0vKgotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLihTZWUgYWNjb21wYW55aW5nIAotICogZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotICogCi0gKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0gKgotICogRmlsZTogICAgICAgIG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvcmVzdHJpY3QuaHBwCi0gKiBEYXRlOiAgICAgICAgU3VuIEphbiAwNiAxMjo1NzozMCBNU1QgMjAwOAotICogQ29weXJpZ2h0OiAgIDIwMDggQ29kZVJhZ2UsIExMQwotICAgICAgICAgICAgICAgIDIwMDQtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotICogQXV0aG9yOiAgICAgIEpvbmF0aGFuIFR1cmthbmlzCi0gKiBDb250YWN0OiAgICAgdHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbQotICoKLSAqIERlZmluZXMgdGhlIGNsYXNzIHRlbXBsYXRlIG5kbmJvb3N0Ojppb3N0cmVhbXM6OnJlc3RyaWN0aW9uIGFuZCB0aGUgCi0gKiBvdmVybG9hZGVkIGZ1bmN0aW9uIHRlbXBsYXRlIG5kbmJvb3N0Ojppb3N0cmVhbXM6OnNsaWNlLgotICoKLSAqIFRoaXMgaGVhZGVyIGlzIHByb3ZpZGVkIGZvciBwbGF0Zm9ybXMgb24gd2hpY2ggInJlc3RyaWN0IiBpcyBhIGtleXdvcmQuCi0gKi8KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfUkVTVFJJQ1RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19SRVNUUklDVF9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvcmVzdHJpY3RfaW1wbC5ocHA+Ci0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19SRVNUUklDVCBzbGljZQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvcmVzdHJpY3RfaW1wbC5ocHA+Ci0jdW5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX1JFU1RSSUNUCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19SRVNUUklDVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL3N0cmVhbS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9zdHJlYW0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMTU4MTE3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL3N0cmVhbS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTEgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX1NUUkVBTV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX1NUUkVBTV9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY29uc3RhbnRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NoYXJfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9vdmVybG9hZF9yZXNvbHV0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2ZvcndhcmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zdHJlYW0uaHBwPiAgLy8gc3RhbmRhcmQgc3RyZWFtcy4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3NlbGVjdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3N0cmVhbV9idWZmZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2Jhc2VfZnJvbV9tZW1iZXIuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIERldmljZSwgdHlwZW5hbWUgVHI+Ci1zdHJ1Y3Qgc3RyZWFtX3RyYWl0cyB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8RGV2aWNlPjo6dHlwZSAgICAgICAgICAgICAgICBjaGFyX3R5cGU7Ci0gICAgdHlwZWRlZiBUciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFpdHNfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNhdGVnb3J5X29mPERldmljZT46OnR5cGUgICAgICAgICAgICAgICAgIG1vZGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgICAgICAgaW9zdHJlYW1zOjpzZWxlY3Q8IC8vIERpc2FtYmlndWF0aW9uIHJlcXVpcmVkIGZvciBUcnU2NC4KLSAgICAgICAgICAgICAgICBtcGw6OmFuZF88Ci0gICAgICAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPG1vZGUsIGlucHV0PiwKLSAgICAgICAgICAgICAgICAgICAgaXNfY29udmVydGlibGU8bW9kZSwgb3V0cHV0PgotICAgICAgICAgICAgICAgID4sCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0JBU0lDX0lPU1RSRUFNKGNoYXJfdHlwZSwgdHJhaXRzX3R5cGUpLAotICAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPG1vZGUsIGlucHV0PiwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfQkFTSUNfSVNUUkVBTShjaGFyX3R5cGUsIHRyYWl0c190eXBlKSwKLSAgICAgICAgICAgICAgICBlbHNlXywKLSAgICAgICAgICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfQkFTSUNfT1NUUkVBTShjaGFyX3R5cGUsIHRyYWl0c190eXBlKQotICAgICAgICAgICAgPjo6dHlwZSBzdHJlYW1fdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICAgICAgICBpb3N0cmVhbXM6OnNlbGVjdDwgLy8gRGlzYW1iaWd1YXRpb24gcmVxdWlyZWQgZm9yIFRydTY0LgotICAgICAgICAgICAgICAgIG1wbDo6YW5kXzwKLSAgICAgICAgICAgICAgICAgICAgaXNfY29udmVydGlibGU8bW9kZSwgaW5wdXQ+LAotICAgICAgICAgICAgICAgICAgICBpc19jb252ZXJ0aWJsZTxtb2RlLCBvdXRwdXQ+Ci0gICAgICAgICAgICAgICAgPiwKLSAgICAgICAgICAgICAgICBpb3N0cmVhbV90YWcsCi0gICAgICAgICAgICAgICAgaXNfY29udmVydGlibGU8bW9kZSwgaW5wdXQ+LAotICAgICAgICAgICAgICAgIGlzdHJlYW1fdGFnLAotICAgICAgICAgICAgICAgIGVsc2VfLAotICAgICAgICAgICAgICAgIG9zdHJlYW1fdGFnCi0gICAgICAgICAgICA+Ojp0eXBlIHN0cmVhbV90YWc7Ci19OwotCi0vLyBCeSBlbmNhcHN1bGF0aW5nIGluaXRpYWxpemF0aW9uIGluIGEgYmFzZSwgd2UgY2FuIGRlZmluZSB0aGUgbWFjcm8KLS8vIE5ETkJPT1NUX0lPU1RSRUFNU19ERUZJTkVfRk9SV0FSRElOR19GVU5DVElPTlMgdG8gZ2VuZXJhdGUgY29uc3RydWN0b3JzCi0vLyB3aXRob3V0IGJhc2UgbWVtYmVyIGluaXRpYWxpemVyIGxpc3RzLgotdGVtcGxhdGU8IHR5cGVuYW1lIERldmljZSwKLSAgICAgICAgICB0eXBlbmFtZSBUciA9Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19DSEFSX1RSQUlUUygKLSAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgY2hhcl90eXBlX29mPERldmljZT46OnR5cGUKLSAgICAgICAgICAgICAgKSwKLSAgICAgICAgICB0eXBlbmFtZSBBbGxvYyA9Ci0gICAgICAgICAgICAgIHN0ZDo6YWxsb2NhdG9yPAotICAgICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBjaGFyX3R5cGVfb2Y8RGV2aWNlPjo6dHlwZQotICAgICAgICAgICAgICA+LAotICAgICAgICAgIHR5cGVuYW1lIEJhc2UgPSAvLyBWQzYgV29ya2Fyb3VuZC4KLSAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRQotICAgICAgICAgICAgICBkZXRhaWw6OnN0cmVhbV90cmFpdHM8RGV2aWNlLCBUcj46OnN0cmVhbV90eXBlID4KLWNsYXNzIHN0cmVhbV9iYXNlCi0gICAgOiBwcm90ZWN0ZWQgYmFzZV9mcm9tX21lbWJlcjwgc3RyZWFtX2J1ZmZlcjxEZXZpY2UsIFRyLCBBbGxvYz4gPiwKLSAgICAgIHB1YmxpYyBCYXNlCi17Ci1wcml2YXRlOgotICAgIHR5cGVkZWYgYmFzZV9mcm9tX21lbWJlcjwgc3RyZWFtX2J1ZmZlcjxEZXZpY2UsIFRyLCBBbGxvYz4gPiAgcGJhc2VfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHN0cmVhbV90cmFpdHM8RGV2aWNlLCBUcj46OnN0cmVhbV90eXBlICAgICAgIHN0cmVhbV90eXBlOwotcHJvdGVjdGVkOgotICAgIHVzaW5nIHBiYXNlX3R5cGU6Om1lbWJlcjsgLy8gQXZvaWQgd2FybmluZyBhYm91dCAndGhpcycgaW4gaW5pdGlhbGl6ZXIgbGlzdC4KLXB1YmxpYzoKLSAgICBzdHJlYW1fYmFzZSgpIDogcGJhc2VfdHlwZSgpLCBzdHJlYW1fdHlwZSgmbWVtYmVyKSB7IH0KLX07Ci0KLX0gfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGRldGFpbCwgaW9zdHJlYW1zLCBib29zdC4KLQotI2lmZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19CUk9LRU5fT1ZFUkxPQURfUkVTT0xVVElPTgotIyBpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Jyb2tlbl9vdmVybG9hZF9yZXNvbHV0aW9uL3N0cmVhbS5ocHA+Ci0jZWxzZQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotLy8KLS8vIFRlbXBsYXRlIG5hbWU6IHN0cmVhbS4KLS8vIERlc2NyaXB0aW9uOiBBIGlvc3RyZWFtIHdoaWNoIHJlYWRzIGZyb20gYW5kIHdyaXRlcyB0byBhbiBpbnN0YW5jZSBvZiBhCi0vLyAgICAgIGRlc2lnbmF0ZWQgZGV2aWNlIHR5cGUuCi0vLyBUZW1wbGF0ZSBwYXJhbWV0ZXJzOgotLy8gICAgICBEZXZpY2UgLSBBIGRldmljZSB0eXBlLgotLy8gICAgICBBbGxvYyAtIFRoZSBhbGxvY2F0b3IgdHlwZS4KLS8vCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRGV2aWNlLAotICAgICAgICAgIHR5cGVuYW1lIFRyID0KLSAgICAgICAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0NIQVJfVFJBSVRTKAotICAgICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBjaGFyX3R5cGVfb2Y8RGV2aWNlPjo6dHlwZQotICAgICAgICAgICAgICApLAotICAgICAgICAgIHR5cGVuYW1lIEFsbG9jID0KLSAgICAgICAgICAgICAgc3RkOjphbGxvY2F0b3I8Ci0gICAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGNoYXJfdHlwZV9vZjxEZXZpY2U+Ojp0eXBlCi0gICAgICAgICAgICAgID4gPgotc3RydWN0IHN0cmVhbSA6IGRldGFpbDo6c3RyZWFtX2Jhc2U8RGV2aWNlLCBUciwgQWxsb2M+IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxEZXZpY2U+Ojp0eXBlICBjaGFyX3R5cGU7Ci0gICAgc3RydWN0IGNhdGVnb3J5IAotICAgICAgICA6IG1vZGVfb2Y8RGV2aWNlPjo6dHlwZSwKLSAgICAgICAgICBjbG9zYWJsZV90YWcsCi0gICAgICAgICAgZGV0YWlsOjpzdHJlYW1fdHJhaXRzPERldmljZSwgVHI+OjpzdHJlYW1fdGFnCi0gICAgICAgIHsgfTsKLSAgICBORE5CT09TVF9JT1NUUkVBTVNfU1RSRUFNQlVGX1RZUEVERUZTKFRyKQotcHJpdmF0ZToKLSAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICAgICAgICBkZXRhaWw6OnN0cmVhbV90cmFpdHM8Ci0gICAgICAgICAgICAgICAgRGV2aWNlLCBUcgotICAgICAgICAgICAgPjo6c3RyZWFtX3R5cGUgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV90eXBlOwotcHVibGljOgotICAgIHN0cmVhbSgpIHsgfQotICAgIE5ETkJPT1NUX0lPU1RSRUFNU19GT1JXQVJEKCBzdHJlYW0sIG9wZW5faW1wbCwgRGV2aWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfUFVTSF9QQVJBTVMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19QVVNIX0FSR1MgKQotICAgIGJvb2wgaXNfb3BlbigpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPm1lbWJlci5pc19vcGVuKCk7IH0KLSAgICB2b2lkIGNsb3NlKCkgeyB0aGlzLT5tZW1iZXIuY2xvc2UoKTsgfQotICAgIGJvb2wgYXV0b19jbG9zZSgpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPm1lbWJlci5hdXRvX2Nsb3NlKCk7IH0KLSAgICB2b2lkIHNldF9hdXRvX2Nsb3NlKGJvb2wgY2xvc2UpIHsgdGhpcy0+bWVtYmVyLnNldF9hdXRvX2Nsb3NlKGNsb3NlKTsgfQotICAgIGJvb2wgc3RyaWN0X3N5bmMoKSB7IHJldHVybiB0aGlzLT5tZW1iZXIuc3RyaWN0X3N5bmMoKTsgfQotICAgIERldmljZSYgb3BlcmF0b3IqKCkgeyByZXR1cm4gKnRoaXMtPm1lbWJlcjsgfQotICAgIERldmljZSogb3BlcmF0b3ItPigpIHsgcmV0dXJuICYqdGhpcy0+bWVtYmVyOyB9Ci0gICAgRGV2aWNlKiBjb21wb25lbnQoKSB7IHJldHVybiB0aGlzLT5tZW1iZXIuY29tcG9uZW50KCk7IH0KLXByaXZhdGU6Ci0gICAgdm9pZCBvcGVuX2ltcGwoY29uc3QgRGV2aWNlJiBkZXYgTkROQk9PU1RfSU9TVFJFQU1TX1BVU0hfUEFSQU1TKCkpIC8vIEZvciBmb3J3YXJkaW5nLgotICAgIHsgCi0gICAgICAgIHRoaXMtPmNsZWFyKCk7IAotICAgICAgICB0aGlzLT5tZW1iZXIub3BlbihkZXYgTkROQk9PU1RfSU9TVFJFQU1TX1BVU0hfQVJHUygpKTsgCi0gICAgfQotfTsKLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZkZWYgTkROQk9PU1RfSU9TVFJFQU1TX0JST0tFTl9PVkVSTE9BRF9SRVNPTFVUSU9OCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19zdHJlYW1fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9zdHJlYW1fYnVmZmVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL3N0cmVhbV9idWZmZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YjEyOTcyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL3N0cmVhbV9idWZmZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE2ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19TVFJFQU1fQlVGRkVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfU1RSRUFNX0JVRkZFUl9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxtZW1vcnk+ICAgICAgICAgICAgLy8gYWxsb2NhdG9yLgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAvLyBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY2hhcl90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL292ZXJsb2FkX3Jlc29sdXRpb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZm9yd2FyZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3MuaHBwPiAgLy8gZmFpbHVyZSwgc3RyZWFtc2l6ZS4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3N0cmVhbWJ1Zi9kaXJlY3Rfc3RyZWFtYnVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3N0cmVhbWJ1Zi9pbmRpcmVjdF9zdHJlYW1idWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29udmVydGlibGUuaHBwPgotCi0vLyBNdXN0IGNvbWUgbGFzdC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9kaXNhYmxlX3dhcm5pbmdzLmhwcD4gIC8vIE1TVkMuCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHIsIHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBNb2RlPgotc3RydWN0IHN0cmVhbV9idWZmZXJfdHJhaXRzIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICAgICAgICBtcGw6OmlmXzwKLSAgICAgICAgICAgICAgICBpc19jb252ZXJ0aWJsZTwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBjYXRlZ29yeV9vZjxUPjo6dHlwZSwKLSAgICAgICAgICAgICAgICAgICAgZGlyZWN0X3RhZwotICAgICAgICAgICAgICAgID4sCi0gICAgICAgICAgICAgICAgZGlyZWN0X3N0cmVhbWJ1ZjxULCBUcj4sCi0gICAgICAgICAgICAgICAgaW5kaXJlY3Rfc3RyZWFtYnVmPFQsIFRyLCBBbGxvYywgTW9kZT4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGRldGFpbCwgaW9zdHJlYW1zLCBib29zdAotCi0jaWZkZWYgTkROQk9PU1RfSU9TVFJFQU1TX0JST0tFTl9PVkVSTE9BRF9SRVNPTFVUSU9OCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYnJva2VuX292ZXJsb2FkX3Jlc29sdXRpb24vc3RyZWFtX2J1ZmZlci5ocHA+Ci0jZWxzZQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQsCi0gICAgICAgICAgdHlwZW5hbWUgVHIgPQotICAgICAgICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfQ0hBUl9UUkFJVFMoCi0gICAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGNoYXJfdHlwZV9vZjxUPjo6dHlwZQotICAgICAgICAgICAgICApLAotICAgICAgICAgIHR5cGVuYW1lIEFsbG9jID0KLSAgICAgICAgICAgICAgc3RkOjphbGxvY2F0b3I8Ci0gICAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGNoYXJfdHlwZV9vZjxUPjo6dHlwZQotICAgICAgICAgICAgICA+LAotICAgICAgICAgIHR5cGVuYW1lIE1vZGUgPSBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG1vZGVfb2Y8VD46OnR5cGUgPgotY2xhc3Mgc3RyZWFtX2J1ZmZlcgotICAgIDogcHVibGljIGRldGFpbDo6c3RyZWFtX2J1ZmZlcl90cmFpdHM8VCwgVHIsIEFsbG9jLCBNb2RlPjo6dHlwZQotewotcHJpdmF0ZToKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCgKLSAgICAgICAgaXNfY29udmVydGlibGU8Ci0gICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGlvc3RyZWFtczo6Y2F0ZWdvcnlfb2Y8VD46OnR5cGUsIE1vZGUKLSAgICAgICAgPjo6dmFsdWUKLSAgICApKTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICAgICAgICBkZXRhaWw6OnN0cmVhbV9idWZmZXJfdHJhaXRzPAotICAgICAgICAgICAgICAgIFQsIFRyLCBBbGxvYywgTW9kZQotICAgICAgICAgICAgPjo6dHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VfdHlwZTsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSAgICBjaGFyX3R5cGU7Ci0gICAgc3RydWN0IGNhdGVnb3J5IAotICAgICAgICA6IE1vZGUsCi0gICAgICAgICAgY2xvc2FibGVfdGFnLAotICAgICAgICAgIHN0cmVhbWJ1Zl90YWcKLSAgICAgICAgeyB9OwotICAgIE5ETkJPT1NUX0lPU1RSRUFNU19TVFJFQU1CVUZfVFlQRURFRlMoVHIpCi1wdWJsaWM6Ci0gICAgc3RyZWFtX2J1ZmZlcigpIHsgfQotICAgIH5zdHJlYW1fYnVmZmVyKCkKLSAgICB7IAotICAgICAgICB0cnkgeyAKLSAgICAgICAgICAgIGlmICh0aGlzLT5pc19vcGVuKCkgJiYgdGhpcy0+YXV0b19jbG9zZSgpKSAKLSAgICAgICAgICAgICAgICB0aGlzLT5jbG9zZSgpOyAKLSAgICAgICAgfSBjYXRjaCAoLi4uKSB7IH0gCi0gICAgfQotICAgIE5ETkJPT1NUX0lPU1RSRUFNU19GT1JXQVJEKCBzdHJlYW1fYnVmZmVyLCBvcGVuX2ltcGwsIFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19QVVNIX1BBUkFNUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX1BVU0hfQVJHUyApCi0gICAgVCYgb3BlcmF0b3IqKCkgeyByZXR1cm4gKnRoaXMtPmNvbXBvbmVudCgpOyB9Ci0gICAgVCogb3BlcmF0b3ItPigpIHsgcmV0dXJuIHRoaXMtPmNvbXBvbmVudCgpOyB9Ci1wcml2YXRlOgotICAgIHZvaWQgb3Blbl9pbXBsKGNvbnN0IFQmIHQgTkROQk9PU1RfSU9TVFJFQU1TX1BVU0hfUEFSQU1TKCkpCi0gICAgICAgIHsgICAvLyBVc2VkIGZvciBmb3J3YXJkaW5nLgotICAgICAgICAgICAgaWYgKHRoaXMtPmlzX29wZW4oKSkKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfRkFJTFVSRSgiYWxyZWFkeSBvcGVuIikKLSAgICAgICAgICAgICAgICApOwotICAgICAgICAgICAgYmFzZV90eXBlOjpvcGVuKHQgTkROQk9PU1RfSU9TVFJFQU1TX1BVU0hfQVJHUygpKTsKLSAgICAgICAgfQotfTsKLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZkZWYgTkROQk9PU1RfSU9TVFJFQU1TX0JST0tFTl9PVkVSTE9BRF9SRVNPTFVUSU9OCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9lbmFibGVfd2FybmluZ3MuaHBwPiAgLy8gTVNWQy4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX1NUUkVBTV9CVUZGRVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy90ZWUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvdGVlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTdjM2NiYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy90ZWUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjMyICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDA1LTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19URUVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19URUVfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgLy8gTkROQk9PU1RfREVEVUNFX1RZUEVOQU1FLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jYXRlZ29yaWVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvZGV2aWNlX2FkYXB0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRhcHRlci9maWx0ZXJfYWRhcHRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jYWxsX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9leGVjdXRlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Z1bmN0aW9uYWwuaHBwPiAgLy8gY2FsbF9jbG9zZV9hbGwgCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9waXBlbGluZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29udmVydGlibGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotLy8KLS8vIFRlbXBsYXRlIG5hbWU6IHRlZV9maWx0ZXIuCi0vLyBUZW1wbGF0ZSBwYXJhbWV0ZXJzOgotLy8gICAgICBEZXZpY2UgLSBBIGJsb2NraW5nIFNpbmsuCi0vLwotdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotY2xhc3MgdGVlX2ZpbHRlciA6IHB1YmxpYyBkZXRhaWw6OmZpbHRlcl9hZGFwdGVyPERldmljZT4gewotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpwYXJhbV90eXBlPERldmljZT46OnR5cGUgIHBhcmFtX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8RGV2aWNlPjo6dHlwZSAgICAgICAgY2hhcl90eXBlOwotICAgIHN0cnVjdCBjYXRlZ29yeQotICAgICAgICA6IGR1YWxfdXNlX2ZpbHRlcl90YWcsCi0gICAgICAgICAgbXVsdGljaGFyX3RhZywKLSAgICAgICAgICBjbG9zYWJsZV90YWcsCi0gICAgICAgICAgZmx1c2hhYmxlX3RhZywKLSAgICAgICAgICBsb2NhbGl6YWJsZV90YWcsCi0gICAgICAgICAgb3B0aW1hbGx5X2J1ZmZlcmVkX3RhZwotICAgICAgICB7IH07Ci0KLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKGlzX2RldmljZTxEZXZpY2U+Ojp2YWx1ZSk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoCi0gICAgICAgIGlzX2NvbnZlcnRpYmxlPCAvLyBVc2luZyBtb2RlX29mIGNhdXNlcyBmYWlsdXJlcyBvbiBWQzYtNy4wLgotICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBpb3N0cmVhbXM6OmNhdGVnb3J5X29mPERldmljZT46OnR5cGUsIG91dHB1dAotICAgICAgICA+Ojp2YWx1ZQotICAgICkpOwotCi0gICAgZXhwbGljaXQgdGVlX2ZpbHRlcihwYXJhbV90eXBlIGRldikgCi0gICAgICAgIDogZGV0YWlsOjpmaWx0ZXJfYWRhcHRlcjxEZXZpY2U+KGRldikgCi0gICAgICAgIHsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlPgotICAgIHN0ZDo6c3RyZWFtc2l6ZSByZWFkKFNvdXJjZSYgc3JjLCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIHJlc3VsdCA9IGlvc3RyZWFtczo6cmVhZChzcmMsIHMsIG4pOwotICAgICAgICBpZiAocmVzdWx0ICE9IC0xKSB7Ci0gICAgICAgICAgICBzdGQ6OnN0cmVhbXNpemUgcmVzdWx0MiA9IGlvc3RyZWFtczo6d3JpdGUodGhpcy0+Y29tcG9uZW50KCksIHMsIHJlc3VsdCk7Ci0gICAgICAgICAgICAodm9pZCkgcmVzdWx0MjsgLy8gU3VwcHJlc3MgJ3VudXNlZCB2YXJpYWJsZScgd2FybmluZy4KLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVChyZXN1bHQgPT0gcmVzdWx0Mik7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgIHN0ZDo6c3RyZWFtc2l6ZSB3cml0ZShTaW5rJiBzbmssIGNvbnN0IGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgewotICAgICAgICBzdGQ6OnN0cmVhbXNpemUgcmVzdWx0ID0gaW9zdHJlYW1zOjp3cml0ZShzbmssIHMsIG4pOwotICAgICAgICBzdGQ6OnN0cmVhbXNpemUgcmVzdWx0MiA9IGlvc3RyZWFtczo6d3JpdGUodGhpcy0+Y29tcG9uZW50KCksIHMsIHJlc3VsdCk7Ci0gICAgICAgICh2b2lkKSByZXN1bHQyOyAvLyBTdXBwcmVzcyAndW51c2VkIHZhcmlhYmxlJyB3YXJuaW5nLgotICAgICAgICBORE5CT09TVF9BU1NFUlQocmVzdWx0ID09IHJlc3VsdDIpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE5leHQ+Ci0gICAgdm9pZCBjbG9zZShOZXh0JiwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSkKLSAgICB7IAotICAgICAgICBkZXRhaWw6OmNsb3NlX2FsbCh0aGlzLT5jb21wb25lbnQoKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICBib29sIGZsdXNoKFNpbmsmIHNuaykKLSAgICB7Ci0gICAgICAgIGJvb2wgcjEgPSBpb3N0cmVhbXM6OmZsdXNoKHNuayk7Ci0gICAgICAgIGJvb2wgcjIgPSBpb3N0cmVhbXM6OmZsdXNoKHRoaXMtPmNvbXBvbmVudCgpKTsKLSAgICAgICAgcmV0dXJuIHIxICYmIHIyOwotICAgIH0KLX07Ci1ORE5CT09TVF9JT1NUUkVBTVNfUElQQUJMRSh0ZWVfZmlsdGVyLCAxKQotCi0vLwotLy8gVGVtcGxhdGUgbmFtZTogdGVlX2RldmljZS4KLS8vIFRlbXBsYXRlIHBhcmFtZXRlcnM6Ci0vLyAgICAgIERldmljZSAtIEEgYmxvY2tpbmcgRGV2aWNlLgotLy8gICAgICBTaW5rIC0gQSBibG9ja2luZyBTaW5rLgotLy8KLXRlbXBsYXRlPHR5cGVuYW1lIERldmljZSwgdHlwZW5hbWUgU2luaz4KLWNsYXNzIHRlZV9kZXZpY2UgewotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpwYXJhbV90eXBlPERldmljZT46OnR5cGUgIGRldmljZV9wYXJhbTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6cGFyYW1fdHlwZTxTaW5rPjo6dHlwZSAgICBzaW5rX3BhcmFtOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjp2YWx1ZV90eXBlPERldmljZT46OnR5cGUgIGRldmljZV92YWx1ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6dmFsdWVfdHlwZTxTaW5rPjo6dHlwZSAgICBzaW5rX3ZhbHVlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhcl90eXBlX29mPERldmljZT46OnR5cGUgICAgICAgIGNoYXJfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICAgICAgICBtcGw6OmlmXzwKLSAgICAgICAgICAgICAgICAgaXNfY29udmVydGlibGU8Ci0gICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIAotICAgICAgICAgICAgICAgICAgICAgICAgIGlvc3RyZWFtczo6Y2F0ZWdvcnlfb2Y8RGV2aWNlPjo6dHlwZSwgCi0gICAgICAgICAgICAgICAgICAgICBvdXRwdXQKLSAgICAgICAgICAgICAgICAgPiwKLSAgICAgICAgICAgICAgICAgb3V0cHV0LAotICAgICAgICAgICAgICAgICBpbnB1dAotICAgICAgICAgICAgPjo6dHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU7Ci0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChpc19kZXZpY2U8RGV2aWNlPjo6dmFsdWUpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoaXNfZGV2aWNlPFNpbms+Ojp2YWx1ZSk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoCi0gICAgICAgIGlzX3NhbWU8Ci0gICAgICAgICAgICBjaGFyX3R5cGUsIAotICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBjaGFyX3R5cGVfb2Y8U2luaz46OnR5cGUKLSAgICAgICAgPjo6dmFsdWUKLSAgICApKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCgKLSAgICAgICAgaXNfY29udmVydGlibGU8Ci0gICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGlvc3RyZWFtczo6Y2F0ZWdvcnlfb2Y8U2luaz46OnR5cGUsIAotICAgICAgICAgICAgb3V0cHV0Ci0gICAgICAgID46OnZhbHVlCi0gICAgKSk7Ci0gICAgc3RydWN0IGNhdGVnb3J5Ci0gICAgICAgIDogbW9kZSwKLSAgICAgICAgICBkZXZpY2VfdGFnLAotICAgICAgICAgIGNsb3NhYmxlX3RhZywKLSAgICAgICAgICBmbHVzaGFibGVfdGFnLAotICAgICAgICAgIGxvY2FsaXphYmxlX3RhZywKLSAgICAgICAgICBvcHRpbWFsbHlfYnVmZmVyZWRfdGFnCi0gICAgICAgIHsgfTsKLSAgICB0ZWVfZGV2aWNlKGRldmljZV9wYXJhbSBkZXZpY2UsIHNpbmtfcGFyYW0gc2luaykgCi0gICAgICAgIDogZGV2XyhkZXZpY2UpLCBzaW5rXyhzaW5rKQotICAgICAgICB7IH0KLSAgICBzdGQ6OnN0cmVhbXNpemUgcmVhZChjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoCi0gICAgICAgICAgICBpc19jb252ZXJ0aWJsZTwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGlvc3RyZWFtczo6Y2F0ZWdvcnlfb2Y8RGV2aWNlPjo6dHlwZSwgaW5wdXQKLSAgICAgICAgICAgID46OnZhbHVlCi0gICAgICAgICkpOwotICAgICAgICBzdGQ6OnN0cmVhbXNpemUgcmVzdWx0MSA9IGlvc3RyZWFtczo6cmVhZChkZXZfLCBzLCBuKTsKLSAgICAgICAgaWYgKHJlc3VsdDEgIT0gLTEpIHsKLSAgICAgICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSByZXN1bHQyID0gaW9zdHJlYW1zOjp3cml0ZShzaW5rXywgcywgcmVzdWx0MSk7Ci0gICAgICAgICAgICAodm9pZCkgcmVzdWx0MTsgLy8gU3VwcHJlc3MgJ3VudXNlZCB2YXJpYWJsZScgd2FybmluZy4KLSAgICAgICAgICAgICh2b2lkKSByZXN1bHQyOwotICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKHJlc3VsdDEgPT0gcmVzdWx0Mik7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDE7Ci0gICAgfQotICAgIHN0ZDo6c3RyZWFtc2l6ZSB3cml0ZShjb25zdCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoCi0gICAgICAgICAgICBpc19jb252ZXJ0aWJsZTwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGlvc3RyZWFtczo6Y2F0ZWdvcnlfb2Y8RGV2aWNlPjo6dHlwZSwgb3V0cHV0Ci0gICAgICAgICAgICA+Ojp2YWx1ZQotICAgICAgICApKTsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIHJlc3VsdDEgPSBpb3N0cmVhbXM6OndyaXRlKGRldl8sIHMsIG4pOwotICAgICAgICBzdGQ6OnN0cmVhbXNpemUgcmVzdWx0MiA9IGlvc3RyZWFtczo6d3JpdGUoc2lua18sIHMsIG4pOwotICAgICAgICAodm9pZCkgcmVzdWx0MTsgLy8gU3VwcHJlc3MgJ3VudXNlZCB2YXJpYWJsZScgd2FybmluZy4KLSAgICAgICAgKHZvaWQpIHJlc3VsdDI7Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVChyZXN1bHQxID09IG4gJiYgcmVzdWx0MiA9PSBuKTsKLSAgICAgICAgcmV0dXJuIG47Ci0gICAgfQotICAgIHZvaWQgY2xvc2UoKQotICAgIHsKLSAgICAgICAgZGV0YWlsOjpleGVjdXRlX2FsbCggZGV0YWlsOjpjYWxsX2Nsb3NlX2FsbChkZXZfKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjpjYWxsX2Nsb3NlX2FsbChzaW5rXykgKTsKLSAgICB9Ci0gICAgYm9vbCBmbHVzaCgpCi0gICAgewotICAgICAgICBib29sIHIxID0gaW9zdHJlYW1zOjpmbHVzaChkZXZfKTsKLSAgICAgICAgYm9vbCByMiA9IGlvc3RyZWFtczo6Zmx1c2goc2lua18pOwotICAgICAgICByZXR1cm4gcjEgJiYgcjI7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIExvY2FsZT4KLSAgICB2b2lkIGltYnVlKGNvbnN0IExvY2FsZSYgbG9jKQotICAgIHsKLSAgICAgICAgaW9zdHJlYW1zOjppbWJ1ZShkZXZfLCBsb2MpOwotICAgICAgICBpb3N0cmVhbXM6OmltYnVlKHNpbmtfLCBsb2MpOwotICAgIH0KLSAgICBzdGQ6OnN0cmVhbXNpemUgb3B0aW1hbF9idWZmZXJfc2l6ZSgpIGNvbnN0IAotICAgIHsKLSAgICAgICAgcmV0dXJuIChzdGQ6Om1heCkgKCBpb3N0cmVhbXM6Om9wdGltYWxfYnVmZmVyX3NpemUoZGV2XyksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvc3RyZWFtczo6b3B0aW1hbF9idWZmZXJfc2l6ZShzaW5rXykgKTsKLSAgICB9Ci1wcml2YXRlOgotICAgIGRldmljZV92YWx1ZSAgZGV2XzsKLSAgICBzaW5rX3ZhbHVlICAgIHNpbmtfOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLXRlZV9maWx0ZXI8U2luaz4gdGVlKFNpbmsmIHNuaykgCi17IHJldHVybiB0ZWVfZmlsdGVyPFNpbms+KHNuayk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLXRlZV9maWx0ZXI8U2luaz4gdGVlKGNvbnN0IFNpbmsmIHNuaykgCi17IHJldHVybiB0ZWVfZmlsdGVyPFNpbms+KHNuayk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlLCB0eXBlbmFtZSBTaW5rPgotdGVlX2RldmljZTxEZXZpY2UsIFNpbms+IHRlZShEZXZpY2UmIGRldiwgU2luayYgc2luaykgCi17IHJldHVybiB0ZWVfZGV2aWNlPERldmljZSwgU2luaz4oZGV2LCBzaW5rKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2UsIHR5cGVuYW1lIFNpbms+Ci10ZWVfZGV2aWNlPERldmljZSwgU2luaz4gdGVlKGNvbnN0IERldmljZSYgZGV2LCBTaW5rJiBzaW5rKSAKLXsgcmV0dXJuIHRlZV9kZXZpY2U8RGV2aWNlLCBTaW5rPihkZXYsIHNpbmspOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIERldmljZSwgdHlwZW5hbWUgU2luaz4KLXRlZV9kZXZpY2U8RGV2aWNlLCBTaW5rPiB0ZWUoRGV2aWNlJiBkZXYsIGNvbnN0IFNpbmsmIHNpbmspIAoteyByZXR1cm4gdGVlX2RldmljZTxEZXZpY2UsIFNpbms+KGRldiwgc2luayk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlLCB0eXBlbmFtZSBTaW5rPgotdGVlX2RldmljZTxEZXZpY2UsIFNpbms+IHRlZShjb25zdCBEZXZpY2UmIGRldiwgY29uc3QgU2luayYgc2luaykgCi17IHJldHVybiB0ZWVfZGV2aWNlPERldmljZSwgU2luaz4oZGV2LCBzaW5rKTsgfQotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX1RFRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy90cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTVlYjA3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOTEgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vIAotLy8gQ29udGFpbnMgbWV0YWZ1bmN0aW9ucyBjaGFyX3R5cGVfb2YsIGNhdGVnb3J5X29mIGFuZCBtb2RlX29mIHVzZWQgZm9yCi0vLyBkZWR1Y2luZyB0aGUgaS9vIGNhdGVnb3J5IGFuZCBpL28gbW9kZSBvZiBhIG1vZGVsIG9mIEZpbHRlciBvciBEZXZpY2UuCi0vLwotLy8gQWxzbyBjb250YWlucyBzZXZlcmFsIHV0aWxpdHkgbWV0YWZ1bmN0aW9ucywgZnVuY3Rpb25zIGFuZCBtYWNyb3MuCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19JT19UUkFJVFNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19JT19UUkFJVFNfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZiAgICAgICAgICAgICAgCi0KLSNpbmNsdWRlIDxpb3Nmd2Q+ICAgICAgICAgICAgLy8gc3RyZWFtIHR5cGVzLCBjaGFyX3RyYWl0cy4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgLy8gcGFydGlhbCBzcGVjLCBkZWR1Y2VkIHR5cGVuYW1lLgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2F0ZWdvcmllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+IAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3dpZGVfc3RyZWFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pc19pdGVyYXRvcl9yYW5nZS5ocHA+ICAgIAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc2VsZWN0LmhwcD4gICAgICAgIAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc2VsZWN0X2J5X3NpemUuaHBwPiAgICAgIAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvd3JhcF91bndyYXAuaHBwPiAgICAgICAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvdHJhaXRzX2Z3ZC5ocHA+IAotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4gICAKLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZXZhbF9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lkZW50aXR5LmhwcD4gICAgICAKLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaW50LmhwcD4gIAotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9vci5ocHA+ICAgICAgICAgICAgICAgICAKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKQotIyBpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9pdGVyYXRvcl9yYW5nZS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL3ZhbHVlX3R5cGUuaHBwPgotI2VuZGlmIC8vICNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+Ci0KLS8vIE11c3QgY29tZSBsYXN0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2Rpc2FibGVfd2FybmluZ3MuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotLy8tLS0tLS0tLS0tRGVmaW5pdGlvbnMgb2YgcHJlZGljYXRlcyBmb3Igc3RyZWFtcyBhbmQgc3RyZWFtIGJ1ZmZlcnMtLS0tLS0tLS0tLy8KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fU1RSRUFNX1RFTVBMQVRFUyAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotTkROQk9PU1RfSU9TVFJFQU1TX0JPT0xfVFJBSVRfREVGKGlzX2lzdHJlYW0sIHN0ZDo6YmFzaWNfaXN0cmVhbSwgMikKLU5ETkJPT1NUX0lPU1RSRUFNU19CT09MX1RSQUlUX0RFRihpc19vc3RyZWFtLCBzdGQ6OmJhc2ljX29zdHJlYW0sIDIpCi1ORE5CT09TVF9JT1NUUkVBTVNfQk9PTF9UUkFJVF9ERUYoaXNfaW9zdHJlYW0sIHN0ZDo6YmFzaWNfaW9zdHJlYW0sIDIpCi1ORE5CT09TVF9JT1NUUkVBTVNfQk9PTF9UUkFJVF9ERUYoaXNfc3RyZWFtYnVmLCBzdGQ6OmJhc2ljX3N0cmVhbWJ1ZiwgMikKLU5ETkJPT1NUX0lPU1RSRUFNU19CT09MX1RSQUlUX0RFRihpc19pZnN0cmVhbSwgc3RkOjpiYXNpY19pZnN0cmVhbSwgMikKLU5ETkJPT1NUX0lPU1RSRUFNU19CT09MX1RSQUlUX0RFRihpc19vZnN0cmVhbSwgc3RkOjpiYXNpY19vZnN0cmVhbSwgMikKLU5ETkJPT1NUX0lPU1RSRUFNU19CT09MX1RSQUlUX0RFRihpc19mc3RyZWFtLCBzdGQ6OmJhc2ljX2ZzdHJlYW0sIDIpCi1ORE5CT09TVF9JT1NUUkVBTVNfQk9PTF9UUkFJVF9ERUYoaXNfZmlsZWJ1Ziwgc3RkOjpiYXNpY19maWxlYnVmLCAyKQotTkROQk9PU1RfSU9TVFJFQU1TX0JPT0xfVFJBSVRfREVGKGlzX2lzdHJpbmdzdHJlYW0sIHN0ZDo6YmFzaWNfaXN0cmluZ3N0cmVhbSwgMykKLU5ETkJPT1NUX0lPU1RSRUFNU19CT09MX1RSQUlUX0RFRihpc19vc3RyaW5nc3RyZWFtLCBzdGQ6OmJhc2ljX29zdHJpbmdzdHJlYW0sIDMpCi1ORE5CT09TVF9JT1NUUkVBTVNfQk9PTF9UUkFJVF9ERUYoaXNfc3RyaW5nc3RyZWFtLCBzdGQ6OmJhc2ljX3N0cmluZ3N0cmVhbSwgMykKLU5ETkJPT1NUX0lPU1RSRUFNU19CT09MX1RSQUlUX0RFRihpc19zdHJpbmdidWYsIHN0ZDo6YmFzaWNfc3RyaW5nYnVmLCAzKQotCi0jZWxzZSAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19OT19TVFJFQU1fVEVNUExBVEVTIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi1ORE5CT09TVF9JT1NUUkVBTVNfQk9PTF9UUkFJVF9ERUYoaXNfaXN0cmVhbSwgc3RkOjppc3RyZWFtLCAwKQotTkROQk9PU1RfSU9TVFJFQU1TX0JPT0xfVFJBSVRfREVGKGlzX29zdHJlYW0sIHN0ZDo6b3N0cmVhbSwgMCkKLU5ETkJPT1NUX0lPU1RSRUFNU19CT09MX1RSQUlUX0RFRihpc19pb3N0cmVhbSwgc3RkOjppb3N0cmVhbSwgMCkKLU5ETkJPT1NUX0lPU1RSRUFNU19CT09MX1RSQUlUX0RFRihpc19zdHJlYW1idWYsIHN0ZDo6c3RyZWFtYnVmLCAwKQotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fU1RSRUFNX1RFTVBMQVRFUyAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGlzX3N0ZF9pbwotICAgIDogbXBsOjpvcl88IGlzX2lzdHJlYW08VD4sIGlzX29zdHJlYW08VD4sIGlzX3N0cmVhbWJ1ZjxUPiA+Ci0gICAgeyB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGlzX3N0ZF9maWxlX2RldmljZQotICAgIDogbXBsOjpvcl88IAotICAgICAgICAgIGlzX2lmc3RyZWFtPFQ+LCAKLSAgICAgICAgICBpc19vZnN0cmVhbTxUPiwgCi0gICAgICAgICAgaXNfZnN0cmVhbTxUPiwgCi0gICAgICAgICAgaXNfZmlsZWJ1ZjxUPgotICAgICAgPgotICAgIHsgfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19zdGRfc3RyaW5nX2RldmljZQotICAgIDogbXBsOjpvcl88IAotICAgICAgICAgIGlzX2lzdHJpbmdzdHJlYW08VD4sIAotICAgICAgICAgIGlzX29zdHJpbmdzdHJlYW08VD4sIAotICAgICAgICAgIGlzX3N0cmluZ3N0cmVhbTxUPiwgCi0gICAgICAgICAgaXNfc3RyaW5nYnVmPFQ+Ci0gICAgICA+Ci0gICAgeyB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2UsIHR5cGVuYW1lIFRyLCB0eXBlbmFtZSBBbGxvYz4KLXN0cnVjdCBzdHJlYW07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyLCB0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgTW9kZT4KLWNsYXNzIHN0cmVhbV9idWZmZXI7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVHIsIAotICAgICAgICAgIHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBBY2Nlc3MgPgotY2xhc3MgZmlsdGVyaW5nX3N0cmVhbTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUciwgCi0gICAgICAgICAgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIEFjY2VzcyA+Ci1jbGFzcyB3ZmlsdGVyaW5nX3N0cmVhbTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUciwgCi0gICAgICAgICAgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIEFjY2VzcyA+Ci1jbGFzcyBmaWx0ZXJpbmdfc3RyZWFtYnVmOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2gsIHR5cGVuYW1lIFRyLCAKLSAgICAgICAgICB0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgQWNjZXNzID4KLWNsYXNzIGZpbHRlcmluZ193c3RyZWFtYnVmOwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHI+Ci1jbGFzcyBsaW5rZWRfc3RyZWFtYnVmOwotCi1ORE5CT09TVF9JT1NUUkVBTVNfQk9PTF9UUkFJVF9ERUYoIGlzX2Jvb3N0X3N0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6Omlvc3RyZWFtczo6c3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzICkKLU5ETkJPT1NUX0lPU1RSRUFNU19CT09MX1RSQUlUX0RFRiggaXNfYm9vc3Rfc3RyZWFtX2J1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6Omlvc3RyZWFtczo6c3RyZWFtX2J1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNCApCi1ORE5CT09TVF9JT1NUUkVBTVNfQk9PTF9UUkFJVF9ERUYoIGlzX2ZpbHRlcmluZ19zdHJlYW1faW1wbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6Omlvc3RyZWFtczo6ZmlsdGVyaW5nX3N0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNSApCi1ORE5CT09TVF9JT1NUUkVBTVNfQk9PTF9UUkFJVF9ERUYoIGlzX2ZpbHRlcmluZ193c3RyZWFtX2ltcGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppb3N0cmVhbXM6OndmaWx0ZXJpbmdfc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1ICkKLU5ETkJPT1NUX0lPU1RSRUFNU19CT09MX1RSQUlUX0RFRiggaXNfZmlsdGVyaW5nX3N0cmVhbWJ1Zl9pbXBsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6aW9zdHJlYW1zOjpmaWx0ZXJpbmdfc3RyZWFtYnVmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1ICkKLU5ETkJPT1NUX0lPU1RSRUFNU19CT09MX1RSQUlUX0RFRiggaXNfZmlsdGVyaW5nX3dzdHJlYW1idWZfaW1wbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6Omlvc3RyZWFtczo6ZmlsdGVyaW5nX3dzdHJlYW1idWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUgKQotTkROQk9PU1RfSU9TVFJFQU1TX0JPT0xfVFJBSVRfREVGKGlzX2xpbmtlZCwgbGlua2VkX3N0cmVhbWJ1ZiwgMikKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19maWx0ZXJpbmdfc3RyZWFtCi0gICAgOiBtcGw6Om9yXzwKLSAgICAgICAgICBpc19maWx0ZXJpbmdfc3RyZWFtX2ltcGw8VD4sCi0gICAgICAgICAgaXNfZmlsdGVyaW5nX3dzdHJlYW1faW1wbDxUPgotICAgICAgPgotICAgIHsgfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19maWx0ZXJpbmdfc3RyZWFtYnVmCi0gICAgOiBtcGw6Om9yXzwKLSAgICAgICAgICBpc19maWx0ZXJpbmdfc3RyZWFtYnVmX2ltcGw8VD4sCi0gICAgICAgICAgaXNfZmlsdGVyaW5nX3dzdHJlYW1idWZfaW1wbDxUPgotICAgICAgPgotICAgIHsgfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19ib29zdAotICAgIDogbXBsOjpvcl88Ci0gICAgICAgICAgaXNfYm9vc3Rfc3RyZWFtPFQ+LCAKLSAgICAgICAgICBpc19ib29zdF9zdHJlYW1fYnVmZmVyPFQ+LCAKLSAgICAgICAgICBpc19maWx0ZXJpbmdfc3RyZWFtPFQ+LCAKLSAgICAgICAgICBpc19maWx0ZXJpbmdfc3RyZWFtYnVmPFQ+Ci0gICAgICA+Ci0gICAgeyB9OwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotICAgICAgICAgICAgICAgICAgICAKLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbnMgb2YgY2hhcl90eXBlX29mLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IG1lbWJlcl9jaGFyX3R5cGUgeyB0eXBlZGVmIHR5cGVuYW1lIFQ6OmNoYXJfdHlwZSB0eXBlOyB9OwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotIyBpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBjaGFyX3R5cGVfb2YgCi0gICAgOiBkZXRhaWw6Om1lbWJlcl9jaGFyX3R5cGU8Ci0gICAgICAgICAgdHlwZW5hbWUgZGV0YWlsOjp1bndyYXBwZWRfdHlwZTxUPjo6dHlwZQotICAgICAgPiAKLSAgICB7IH07Ci0KLSMgZWxzZSAvLyAjIGlmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fU1RSRUFNX1RFTVBMQVRFUyAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgY2hhcl90eXBlX29mIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6dW53cmFwcGVkX3R5cGU8VD46OnR5cGUgVTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIAotICAgICAgICAgICAgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgIGlzX3N0ZF9pbzxVPiwKLSAgICAgICAgICAgICAgICBtcGw6OmlkZW50aXR5PGNoYXI+LAotICAgICAgICAgICAgICAgIGRldGFpbDo6bWVtYmVyX2NoYXJfdHlwZTxVPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotIyBlbmRpZiAvLyAjIGlmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fU1RSRUFNX1RFTVBMQVRFUyAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgSXRlcj4KLXN0cnVjdCBjaGFyX3R5cGVfb2Y8IGl0ZXJhdG9yX3JhbmdlPEl0ZXI+ID4gewotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdmFsdWU8SXRlcj46OnR5cGUgdHlwZTsKLX07Ci0KLSNlbHNlIC8vICNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTiAvLy0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgY2hhcl90eXBlX29mIHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgIHN0cnVjdCBnZXRfdmFsdWVfdHlwZSB7Ci0gICAgICAgICNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKQotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByYW5nZV92YWx1ZTxVPjo6dHlwZSB0eXBlOwotICAgICAgICAjZW5kaWYgLy8gI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkKLSAgICB9OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgICAgICAgICBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICAgICAgaXNfaXRlcmF0b3JfcmFuZ2U8VD4sCi0gICAgICAgICAgICAgICAgZ2V0X3ZhbHVlX3R5cGU8VD4sCi0gICAgICAgICAgICAgICAgZGV0YWlsOjptZW1iZXJfY2hhcl90eXBlPAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGRldGFpbDo6dW53cmFwcGVkX3R5cGU8VD46OnR5cGUKLSAgICAgICAgICAgICAgICA+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OIC8vLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb25zIG9mIGNhdGVnb3J5X29mLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBtZW1iZXJfY2F0ZWdvcnkgeyB0eXBlZGVmIHR5cGVuYW1lIFQ6OmNhdGVnb3J5IHR5cGU7IH07Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgY2F0ZWdvcnlfb2YgewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgc3RydWN0IG1lbWJlcl9jYXRlZ29yeSB7IAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFU6OmNhdGVnb3J5IHR5cGU7IAotICAgIH07Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnVud3JhcHBlZF90eXBlPFQ+Ojp0eXBlIFU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSAgCi0gICAgICAgICAgICBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICAgICAgbXBsOjphbmRfPAotICAgICAgICAgICAgICAgICAgICBpc19zdGRfaW88VT4sCi0gICAgICAgICAgICAgICAgICAgIG1wbDo6bm90XzwgZGV0YWlsOjppc19ib29zdDxVPiA+Ci0gICAgICAgICAgICAgICAgPiwKLSAgICAgICAgICAgICAgICBpb3N0cmVhbXM6OnNlbGVjdDwgIC8vIERpc2FtYmlndWF0aW9uIGZvciBUcnU2NAotICAgICAgICAgICAgICAgICAgICBpc19maWxlYnVmPFU+LCAgICAgICAgZmlsZWJ1Zl90YWcsCi0gICAgICAgICAgICAgICAgICAgIGlzX2lmc3RyZWFtPFU+LCAgICAgICBpZnN0cmVhbV90YWcsCi0gICAgICAgICAgICAgICAgICAgIGlzX29mc3RyZWFtPFU+LCAgICAgICBvZnN0cmVhbV90YWcsCi0gICAgICAgICAgICAgICAgICAgIGlzX2ZzdHJlYW08VT4sICAgICAgICBmc3RyZWFtX3RhZywKLSAgICAgICAgICAgICAgICAgICAgaXNfc3RyaW5nYnVmPFU+LCAgICAgIHN0cmluZ2J1Zl90YWcsCi0gICAgICAgICAgICAgICAgICAgIGlzX2lzdHJpbmdzdHJlYW08VT4sICBpc3RyaW5nc3RyZWFtX3RhZywKLSAgICAgICAgICAgICAgICAgICAgaXNfb3N0cmluZ3N0cmVhbTxVPiwgIG9zdHJpbmdzdHJlYW1fdGFnLAotICAgICAgICAgICAgICAgICAgICBpc19zdHJpbmdzdHJlYW08VT4sICAgc3RyaW5nc3RyZWFtX3RhZywKLSAgICAgICAgICAgICAgICAgICAgaXNfc3RyZWFtYnVmPFU+LCAgICAgIGdlbmVyaWNfc3RyZWFtYnVmX3RhZywKLSAgICAgICAgICAgICAgICAgICAgaXNfaW9zdHJlYW08VT4sICAgICAgIGdlbmVyaWNfaW9zdHJlYW1fdGFnLAotICAgICAgICAgICAgICAgICAgICBpc19pc3RyZWFtPFU+LCAgICAgICAgZ2VuZXJpY19pc3RyZWFtX3RhZywgCi0gICAgICAgICAgICAgICAgICAgIGlzX29zdHJlYW08VT4sICAgICAgICBnZW5lcmljX29zdHJlYW1fdGFnCi0gICAgICAgICAgICAgICAgPiwKLSAgICAgICAgICAgICAgICBkZXRhaWw6Om1lbWJlcl9jYXRlZ29yeTxVPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotLy8gUGFydGlhbCBzcGVjaWFsaXphdGlvbiBmb3IgcmVmZXJlbmNlIHdyYXBwZXJzCi0jaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGNhdGVnb3J5X29mPCByZWZlcmVuY2Vfd3JhcHBlcjxUPiA+Ci0gICAgOiBjYXRlZ29yeV9vZjxUPgotICAgIHsgfTsKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTiAvLy0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIGdldF9jYXRlZ29yeS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gCi0vLyBSZXR1cm5zIGFuIG9iamVjdCBvZiB0eXBlIGNhdGVnb3J5X29mPFQ+Ojp0eXBlLgotLy8gCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIHR5cGVuYW1lIGNhdGVnb3J5X29mPFQ+Ojp0eXBlIGdldF9jYXRlZ29yeShjb25zdCBUJikgCi17IHR5cGVkZWYgdHlwZW5hbWUgY2F0ZWdvcnlfb2Y8VD46OnR5cGUgY2F0ZWdvcnk7IHJldHVybiBjYXRlZ29yeSgpOyB9Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBpbnRfdHlwZV9vZi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaW50X3R5cGVfb2YgeyAKLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMKLSAgICB0eXBlZGVmIHN0ZDo6Y2hhcl90cmFpdHM8Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUKLSAgICAgICAgICAgID4gdHJhaXRzX3R5cGU7ICAgICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHNfdHlwZTo6aW50X3R5cGUgdHlwZTsgCi0jZWxzZSAgCi0gICAgdHlwZWRlZiBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTsgCi0jZW5kaWYKLX07Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBtb2RlX29mLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTxpbnQgTj4gc3RydWN0IGlvX21vZGVfaW1wbDsKLQotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfTU9ERV9IRUxQRVIodGFnXywgaWRfKSBcCi0gICAgY2FzZV88aWRfPiBpb19tb2RlX2ltcGxfaGVscGVyKHRhZ18pOyBcCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgaW9fbW9kZV9pbXBsPGlkXz4geyB0eXBlZGVmIHRhZ18gdHlwZTsgfTsgXAotICAgIC8qKi8KLU5ETkJPT1NUX0lPU1RSRUFNU19NT0RFX0hFTFBFUihpbnB1dCwgMSkKLU5ETkJPT1NUX0lPU1RSRUFNU19NT0RFX0hFTFBFUihvdXRwdXQsIDIpCi1ORE5CT09TVF9JT1NUUkVBTVNfTU9ERV9IRUxQRVIoYmlkaXJlY3Rpb25hbCwgMykKLU5ETkJPT1NUX0lPU1RSRUFNU19NT0RFX0hFTFBFUihpbnB1dF9zZWVrYWJsZSwgNCkKLU5ETkJPT1NUX0lPU1RSRUFNU19NT0RFX0hFTFBFUihvdXRwdXRfc2Vla2FibGUsIDUpCi1ORE5CT09TVF9JT1NUUkVBTVNfTU9ERV9IRUxQRVIoc2Vla2FibGUsIDYpCi1ORE5CT09TVF9JT1NUUkVBTVNfTU9ERV9IRUxQRVIoZHVhbF9zZWVrYWJsZSwgNykKLU5ETkJPT1NUX0lPU1RSRUFNU19NT0RFX0hFTFBFUihiaWRpcmVjdGlvbmFsX3NlZWthYmxlLCA4KQotTkROQk9PU1RfSU9TVFJFQU1TX01PREVfSEVMUEVSKGR1YWxfdXNlLCA5KQotI3VuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19NT0RFX0hFTFBFUgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGlvX21vZGVfaWQgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2F0ZWdvcnlfb2Y8VD46OnR5cGUgY2F0ZWdvcnk7Ci0gICAgTkROQk9PU1RfU0VMRUNUX0JZX1NJWkUoaW50LCB2YWx1ZSwgZGV0YWlsOjppb19tb2RlX2ltcGxfaGVscGVyKGNhdGVnb3J5KCkpKTsKLX07Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IC8vIEJvcmxhbmQgNS42LjQgcmVxdWlyZXMgdGhpcyBjaXJjdW1sb2N1dGlvbi4KLXN0cnVjdCBtb2RlX29mIDogZGV0YWlsOjppb19tb2RlX2ltcGw8IGRldGFpbDo6aW9fbW9kZV9pZDxUPjo6dmFsdWUgPiB7IH07Ci0KLS8vIFBhcnRpYWwgc3BlY2lhbGl6YXRpb24gZm9yIHJlZmVyZW5jZSB3cmFwcGVycwotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBtb2RlX29mPCByZWZlcmVuY2Vfd3JhcHBlcjxUPiA+Ci0gICAgOiBtb2RlX29mPFQ+Ci0gICAgeyB9OwotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OIC8vLS0tLS0tLS0tLS0tLS0tLS0vLwotICAgICAgICAgICAgICAgICAgICAKLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBpc19kZXZpY2UsIGlzX2ZpbHRlciBhbmQgaXNfZGlyZWN0LS0tLS0tLS0tLS8vCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUYWc+Ci1zdHJ1Y3QgaGFzX3RyYWl0X2ltcGwgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2F0ZWdvcnlfb2Y8VD46OnR5cGUgY2F0ZWdvcnk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKGlzX2NvbnZlcnRpYmxlPGNhdGVnb3J5LCBUYWc+Ojp2YWx1ZSkpOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVGFnPgotc3RydWN0IGhhc190cmFpdCAKLSAgICA6IG1wbDo6Ym9vbF88aGFzX3RyYWl0X2ltcGw8VCwgVGFnPjo6dmFsdWU+Ci0gICAgeyB9OyAKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19kZXZpY2UgOiBkZXRhaWw6Omhhc190cmFpdDxULCBkZXZpY2VfdGFnPiB7IH07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfZmlsdGVyIDogZGV0YWlsOjpoYXNfdHJhaXQ8VCwgZmlsdGVyX3RhZz4geyB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2RpcmVjdCA6IGRldGFpbDo6aGFzX3RyYWl0PFQsIGRpcmVjdF90YWc+IHsgfTsKLSAgICAgICAgICAgICAgICAgICAgCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgTkROQk9PU1RfSU9TVFJFQU1TX1NUUkVBTUJVRl9UWVBFREVGUy0tLS0tLS0tLS0vLwotCi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19TVFJFQU1CVUZfVFlQRURFRlMoVHIpIFwKLSAgICB0eXBlZGVmIFRyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRzX3R5cGU7IFwKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0c190eXBlOjppbnRfdHlwZSAgaW50X3R5cGU7IFwKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0c190eXBlOjpvZmZfdHlwZSAgb2ZmX3R5cGU7IFwKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0c190eXBlOjpwb3NfdHlwZSAgcG9zX3R5cGU7IFwKLSAgICAvKiovCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0lPX1RSQUlUU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL3RyYWl0c19md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvdHJhaXRzX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkMmFjZWEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvdHJhaXRzX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTEgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vIEZvcndhcmQgZGVjbGFyYXRpb25zIG9mIHRlbXBsYXRlcyBkZWZpbmVkIGluIHRyYWl0cy5ocHAuCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0lPX1RSQUlUU19GV0RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19JT19UUkFJVFNfRldEX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgIAotCi0jaW5jbHVkZSA8aW9zZndkPiAvLyBzdHJlYW0gdHlwZXMsIGNoYXJfdHJhaXRzLgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgICAgICAKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19pc3RyZWFtOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGlzX29zdHJlYW07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfaW9zdHJlYW07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfc3RyZWFtYnVmOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2lzdHJpbmdzdHJlYW07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfb3N0cmluZ3N0cmVhbTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19zdHJpbmdzdHJlYW07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfc3RyaW5nYnVmOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2lmc3RyZWFtOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGlzX29mc3RyZWFtOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2ZzdHJlYW07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfZmlsZWJ1ZjsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19zdGRfaW87Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfc3RkX2ZpbGVfZGV2aWNlOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGlzX3N0ZF9zdHJpbmdfZGV2aWNlOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGNoYXJfdHlwZV9vZjsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBjYXRlZ29yeV9vZjsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBpbnRfdHlwZV9vZjsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBtb2RlX29mOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2RldmljZTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19maWx0ZXI7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfZGlyZWN0OwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19ib29zdF9zdHJlYW07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfYm9vc3Rfc3RyZWFtX2J1ZmZlcjsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19maWx0ZXJpbmdfc3RyZWFtOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2ZpbHRlcmluZ19zdHJlYW1idWY7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfbGlua2VkOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2Jvb3N0OwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0lPX1RSQUlUU19GV0RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy93cml0ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy93cml0ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyZDgxMmUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvd3JpdGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTcxICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19XUklURV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX1dSSVRFX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAvLyBERURVQ0VEX1RZUEVOQU1FLCBNU1ZDLgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2F0ZWdvcmllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jaGFyX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9kaXNwYXRjaC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3MuaHBwPiAgLy8gc3RyZWFtc2l6ZS4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3N0cmVhbWJ1Zi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC93cmFwX3Vud3JhcC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnNfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotCi0vLyBNdXN0IGNvbWUgbGFzdC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9kaXNhYmxlX3dhcm5pbmdzLmhwcD4KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSMgaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC92YzYvd3JpdGUuaHBwPgotI2Vsc2UgLy8gI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiAKLXN0cnVjdCB3cml0ZV9kZXZpY2VfaW1wbDsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gCi1zdHJ1Y3Qgd3JpdGVfZmlsdGVyX2ltcGw7Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1ib29sIHB1dChUJiB0LCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUgYykKLXsgcmV0dXJuIGRldGFpbDo6d3JpdGVfZGV2aWNlX2ltcGw8VD46OnB1dChkZXRhaWw6OnVud3JhcCh0KSwgYyk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBzdGQ6OnN0cmVhbXNpemUgd3JpdGUKLSAgICAoVCYgdCwgY29uc3QgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLXsgcmV0dXJuIGRldGFpbDo6d3JpdGVfZGV2aWNlX2ltcGw8VD46OndyaXRlKGRldGFpbDo6dW53cmFwKHQpLCBzLCBuKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBTaW5rPgotaW5saW5lIHN0ZDo6c3RyZWFtc2l6ZQotd3JpdGUoIFQmIHQsIFNpbmsmIHNuaywgY29uc3QgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlKiBzLCAKLSAgICAgICBzdGQ6OnN0cmVhbXNpemUgbiApCi17IHJldHVybiBkZXRhaWw6OndyaXRlX2ZpbHRlcl9pbXBsPFQ+Ojp3cml0ZShkZXRhaWw6OnVud3JhcCh0KSwgc25rLCBzLCBuKTsgfQotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIHdyaXRlX2RldmljZV9pbXBsLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCB3cml0ZV9kZXZpY2VfaW1wbAotICAgIDogbXBsOjppZl88Ci0gICAgICAgICAgaXNfY3VzdG9tPFQ+LAotICAgICAgICAgIG9wZXJhdGlvbnM8VD4sCi0gICAgICAgICAgd3JpdGVfZGV2aWNlX2ltcGw8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUKLSAgICAgICAgICAgICAgZGlzcGF0Y2g8Ci0gICAgICAgICAgICAgICAgICBULCBvc3RyZWFtX3RhZywgc3RyZWFtYnVmX3RhZywgb3V0cHV0Ci0gICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICA+Ci0gICAgICA+Ojp0eXBlCi0gICAgeyB9OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgd3JpdGVfZGV2aWNlX2ltcGw8b3N0cmVhbV90YWc+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBib29sIHB1dChUJiB0LCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUgYykKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlICAgICAgICAgIGNoYXJfdHlwZTsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9JT1NUUkVBTVNfQ0hBUl9UUkFJVFMoY2hhcl90eXBlKSAgdHJhaXRzX3R5cGU7Ci0gICAgICAgIHJldHVybiAhdHJhaXRzX3R5cGU6OmVxX2ludF90eXBlKCB0LnJkYnVmKCktPnNwdXRjKGMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRzX3R5cGU6OmVvZigpICk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgc3RkOjpzdHJlYW1zaXplIHdyaXRlCi0gICAgICAgIChUJiB0LCBjb25zdCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsgcmV0dXJuIHQucmRidWYoKS0+c3B1dG4ocywgbik7IH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB3cml0ZV9kZXZpY2VfaW1wbDxzdHJlYW1idWZfdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgYm9vbCBwdXQoVCYgdCwgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlIGMpCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSAgICAgICAgICBjaGFyX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfSU9TVFJFQU1TX0NIQVJfVFJBSVRTKGNoYXJfdHlwZSkgIHRyYWl0c190eXBlOwotICAgICAgICByZXR1cm4gIXRyYWl0c190eXBlOjplcV9pbnRfdHlwZSh0LnNwdXRjKGMpLCB0cmFpdHNfdHlwZTo6ZW9mKCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtc2l6ZSB3cml0ZQotICAgICAgICAoVCYgdCwgY29uc3QgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7IHJldHVybiB0LnNwdXRuKHMsIG4pOyB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgd3JpdGVfZGV2aWNlX2ltcGw8b3V0cHV0PiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgYm9vbCBwdXQoVCYgdCwgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlIGMpCi0gICAgeyByZXR1cm4gdC53cml0ZSgmYywgMSkgPT0gMTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgc3RkOjpzdHJlYW1zaXplCi0gICAgd3JpdGUoVCYgdCwgY29uc3QgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7IHJldHVybiB0LndyaXRlKHMsIG4pOyB9Ci19OwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2Ygd3JpdGVfZmlsdGVyX2ltcGwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IHdyaXRlX2ZpbHRlcl9pbXBsCi0gICAgOiBtcGw6OmlmXzwKLSAgICAgICAgICBpc19jdXN0b208VD4sCi0gICAgICAgICAgb3BlcmF0aW9uczxUPiwKLSAgICAgICAgICB3cml0ZV9maWx0ZXJfaW1wbDwKLSAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRQotICAgICAgICAgICAgICBkaXNwYXRjaDwKLSAgICAgICAgICAgICAgICAgIFQsIG11bHRpY2hhcl90YWcsIGFueV90YWcKLSAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgID4KLSAgICAgID46OnR5cGUKLSAgICB7IH07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB3cml0ZV9maWx0ZXJfaW1wbDxtdWx0aWNoYXJfdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgU2luaz4KLSAgICBzdGF0aWMgc3RkOjpzdHJlYW1zaXplCi0gICAgd3JpdGUoIFQmIHQsIFNpbmsmIHNuaywgY29uc3QgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlKiBzLAotICAgICAgICAgICBzdGQ6OnN0cmVhbXNpemUgbiApCi0gICAgeyByZXR1cm4gdC53cml0ZShzbmssIHMsIG4pOyB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgd3JpdGVfZmlsdGVyX2ltcGw8YW55X3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFNpbms+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtc2l6ZQotICAgIHdyaXRlKCBUJiB0LCBTaW5rJiBzbmssIGNvbnN0IHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSogcywKLSAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplIG4gKQotICAgIHsKLSAgICAgICAgZm9yIChzdGQ6OnN0cmVhbXNpemUgb2ZmID0gMDsgb2ZmIDwgbjsgKytvZmYpCi0gICAgICAgICAgICBpZiAoIXQucHV0KHNuaywgc1tvZmZdKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gb2ZmOwotICAgICAgICByZXR1cm4gbjsKLSAgICB9Ci19OwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2VuZGlmIC8vICNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19XUklURV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaXNfcGxhY2Vob2xkZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pc19wbGFjZWhvbGRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjNDA4MjEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pc19wbGFjZWhvbGRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX0lTX1BMQUNFSE9MREVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JU19QTEFDRUhPTERFUl9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoIF9NU0NfVkVSICkgJiYgKCBfTVNDX1ZFUiA+PSAxMDIwICkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0KLS8vICBpc19wbGFjZWhvbGRlci5ocHAgLSBUUjEgaXNfcGxhY2Vob2xkZXIgbWV0YWZ1bmN0aW9uCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwNiBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLwotLy8gIFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dAotCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi10ZW1wbGF0ZTwgY2xhc3MgVCA+IHN0cnVjdCBpc19wbGFjZWhvbGRlcgotewotICAgIGVudW0gX3Z0IHsgdmFsdWUgPSAwIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JU19QTEFDRUhPTERFUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaXRlcmF0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pdGVyYXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlZDYyOWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pdGVyYXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0vLyAgaXRlcmF0b3IuaHBwIHdvcmthcm91bmRzIGZvciBub24tY29uZm9ybWluZyBzdGFuZGFyZCBsaWJyYXJpZXMgIC0tLS0tLS0tLS8vCi0KLS8vICAoQykgQ29weXJpZ2h0IEJlbWFuIERhd2VzIDIwMDAuIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdAotLy8gIFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdXRpbGl0eSBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gIFJldmlzaW9uIEhpc3RvcnkKLS8vICAxMiBKYW4gMDEgYWRkZWQgPGNzdGRkZWY+IGZvciBzdGQ6OnB0cmRpZmZfdCAoSmVucyBNYXVyZXIpCi0vLyAgMjggSnVuIDAwIFdvcmthcm91bmRzIHRvIGRlYWwgd2l0aCBrbm93biBNU1ZDIGJ1Z3MgKERhdmlkIEFicmFoYW1zKQotLy8gIDI2IEp1biAwMCBJbml0aWFsIHZlcnNpb24gKEplcmVteSBTaWVrKQotCi0jaWZuZGVmIE5ETkJPT1NUX0lURVJBVE9SX0hQUAotI2RlZmluZSBORE5CT09TVF9JVEVSQVRPUl9IUFAKLQotI2luY2x1ZGUgPGl0ZXJhdG9yPgotI2luY2x1ZGUgPGNzdGRkZWY+ICAgICAgICAgICAvLyBzdGQ6OnB0cmRpZmZfdAotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotIyBpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9JVEVSQVRPUikgJiYgIWRlZmluZWQoTkROQk9PU1RfTVNWQ19TVERfSVRFUkFUT1IpCi0gIHRlbXBsYXRlIDxjbGFzcyBDYXRlZ29yeSwgY2xhc3MgVCwKLSAgICBjbGFzcyBEaXN0YW5jZSA9IHN0ZDo6cHRyZGlmZl90LAotICAgIGNsYXNzIFBvaW50ZXIgPSBUKiwgY2xhc3MgUmVmZXJlbmNlID0gVCY+Ci0gIHN0cnVjdCBpdGVyYXRvcgotICB7Ci0gICAgdHlwZWRlZiBUICAgICAgICAgdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIERpc3RhbmNlICBkaWZmZXJlbmNlX3R5cGU7Ci0gICAgdHlwZWRlZiBQb2ludGVyICAgcG9pbnRlcjsKLSAgICB0eXBlZGVmIFJlZmVyZW5jZSByZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiBDYXRlZ29yeSAgaXRlcmF0b3JfY2F0ZWdvcnk7Ci0gIH07Ci0jIGVsc2UKLQotICAvLyBkZWNsYXJlIGl0ZXJhdG9yX2Jhc2UgaW4gbmFtZXNwYWNlIGRldGFpbCB0byB3b3JrIGFyb3VuZCBNU1ZDIGJ1Z3Mgd2hpY2gKLSAgLy8gcHJldmVudCBkZXJpdmF0aW9uIGZyb20gYW4gaWRlbnRpY2FsbHktbmFtZWQgY2xhc3MgaW4gYSBkaWZmZXJlbnQgbmFtZXNwYWNlLgotICBuYW1lc3BhY2UgZGV0YWlsIHsKLSAgIHRlbXBsYXRlIDxjbGFzcyBDYXRlZ29yeSwgY2xhc3MgVCwgY2xhc3MgRGlzdGFuY2UsIGNsYXNzIFBvaW50ZXIsIGNsYXNzIFJlZmVyZW5jZT4KLSMgIGlmICFkZWZpbmVkKE5ETkJPT1NUX01TVkNfU1REX0lURVJBVE9SKQotICAgc3RydWN0IGl0ZXJhdG9yX2Jhc2UgOiBzdGQ6Oml0ZXJhdG9yPENhdGVnb3J5LCBULCBEaXN0YW5jZSwgUG9pbnRlciwgUmVmZXJlbmNlPiB7fTsKLSMgIGVsc2UKLSAgIHN0cnVjdCBpdGVyYXRvcl9iYXNlIDogc3RkOjppdGVyYXRvcjxDYXRlZ29yeSwgVCwgRGlzdGFuY2U+Ci0gICB7Ci0gICAgIHR5cGVkZWYgUmVmZXJlbmNlIHJlZmVyZW5jZTsKLSAgICAgdHlwZWRlZiBQb2ludGVyIHBvaW50ZXI7Ci0gICAgIHR5cGVkZWYgRGlzdGFuY2UgZGlmZmVyZW5jZV90eXBlOwotICAgfTsKLSMgIGVuZGlmCi0gIH0KLQotICB0ZW1wbGF0ZSA8Y2xhc3MgQ2F0ZWdvcnksIGNsYXNzIFQsIGNsYXNzIERpc3RhbmNlID0gc3RkOjpwdHJkaWZmX3QsCi0gICAgICAgICAgICBjbGFzcyBQb2ludGVyID0gVCosIGNsYXNzIFJlZmVyZW5jZSA9IFQmPgotICBzdHJ1Y3QgaXRlcmF0b3IgOiBuZG5ib29zdDo6ZGV0YWlsOjppdGVyYXRvcl9iYXNlPENhdGVnb3J5LCBULCBEaXN0YW5jZSwgUG9pbnRlciwgUmVmZXJlbmNlPiB7fTsKLSMgZW5kaWYKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9JVEVSQVRPUl9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaXRlcmF0b3IvZGV0YWlsL2NvbmZpZ19kZWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pdGVyYXRvci9kZXRhaWwvY29uZmlnX2RlZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0YWY5MjYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pdGVyYXRvci9kZXRhaWwvY29uZmlnX2RlZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzcgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAyLgotLy8gKEMpIENvcHlyaWdodCBKZXJlbXkgU2llayAgICAyMDAyLgotLy8gKEMpIENvcHlyaWdodCBUaG9tYXMgV2l0dCAgICAyMDAyLgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyBubyBpbmNsdWRlIGd1YXJkIG11bHRpcGxlIGluY2x1c2lvbiBpbnRlbmRlZAotCi0vLwotLy8gVGhpcyBpcyBhIHRlbXBvcmFyeSB3b3JrYXJvdW5kIHVudGlsIHRoZSBidWxrIG9mIHRoaXMgaXMKLS8vIGF2YWlsYWJsZSBpbiBib29zdCBjb25maWcuCi0vLyAyMy8wMi8wMyB0aHcKLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAvLyBmb3IgcHJpb3IKLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZmRlZiBORE5CT09TVF9JVEVSQVRPUl9DT05GSUdfREVGCi0jIGVycm9yIHlvdSBoYXZlIG5lc3RlZCBjb25maWdfZGVmICNpbmNsdXNpb24uCi0jZWxzZSAKLSMgZGVmaW5lIE5ETkJPT1NUX0lURVJBVE9SX0NPTkZJR19ERUYKLSNlbmRpZiAKLQotLy8gV2UgZW5hYmxlIHRoaXMgYWx3YXlzIG5vdy4gIE90aGVyd2lzZSwgdGhlIHNpbXBsZSBjYXNlIGluCi0vLyBsaWJzL2l0ZXJhdG9yL3Rlc3QvY29uc3RhbnRfaXRlcmF0b3JfYXJyb3cuY3BwIGZhaWxzIHRvIGNvbXBpbGUKLS8vIGJlY2F1c2UgdGhlIG9wZXJhdG9yLT4gcmV0dXJuIGlzIGltcHJvcGVybHkgZGVkdWNlZCBhcyBhIG5vbi1jb25zdAotLy8gcG9pbnRlci4KLSNpZiAxIHx8IGRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgICAgICAgICAgIFwKLSAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTMxKSkKLQotLy8gUmVjYWxsIHRoYXQgaW4gZ2VuZXJhbCwgY29tcGlsZXJzIHdpdGhvdXQgcGFydGlhbCBzcGVjaWFsaXphdGlvbgotLy8gY2FuJ3Qgc3RyaXAgY29uc3RuZXNzLiAgQ29uc2lkZXIgY291bnRpbmdfaXRlcmF0b3IsIHdoaWNoIG5vcm1hbGx5Ci0vLyBwYXNzZXMgYSBjb25zdCBWYWx1ZSB0byBpdGVyYXRvcl9mYWNhZGUuICBBcyBhIHJlc3VsdCwgYW55IGNvZGUKLS8vIHdoaWNoIG1ha2VzIGEgc3RkOjp2ZWN0b3Igb2YgdGhlIGl0ZXJhdG9yJ3MgdmFsdWVfdHlwZSB3aWxsIGZhaWwKLS8vIHdoZW4gaXRzIGFsbG9jYXRvciBkZWNsYXJlcyBmdW5jdGlvbnMgb3ZlcmxvYWRlZCBvbiByZWZlcmVuY2UgYW5kCi0vLyBjb25zdF9yZWZlcmVuY2UgKHRoZSBzYW1lIHR5cGUpLgotLy8KLS8vIEZ1cnRoZXJtb3JlLCBCb3JsYW5kIDUuNS4xIGRyb3BzIGNvbnN0bmVzcyBpbiBlbm91Z2ggd2F5cyB0aGF0IHdlCi0vLyBlbmQgdXAgdXNpbmcgYSBwcm94eSBmb3Igb3BlcmF0b3JbXSB3aGVuIHdlIG90aGVyd2lzZSBzaG91bGRuJ3QuCi0vLyBVc2luZyByZWZlcmVuY2UgY29uc3RuZXNzIGdpdmVzIGl0IGFuIGV4dHJhIGhpbnQgdGhhdCBpdCBjYW4KLS8vIHJldHVybiB0aGUgdmFsdWVfdHlwZSBmcm9tIG9wZXJhdG9yW10gZGlyZWN0bHksIGJ1dCBpcyBub3QKLS8vIHN0cmljdGx5IG5lY2Vzc2FyeS4gIE5vdCBzdXJlIGhvdyBiZXN0IHRvIHJlc29sdmUgdGhpcyBvbmUuCi0KLSMgZGVmaW5lIE5ETkJPT1NUX0lURVJBVE9SX1JFRl9DT05TVE5FU1NfS0lMTFNfV1JJVEFCSUxJVFkgMQotCi0jZW5kaWYKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDVBMCkpICAgICAgICAgICAgICAgICAgIFwKLSAgICB8fCAoTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTiwgPD0gNzAwKSAmJiBkZWZpbmVkKF9NU0NfVkVSKSkgXAotICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19ERUNDWFhfVkVSLCBORE5CT09TVF9URVNURURfQVQoNjA1OTAwNDIpKSAgICAgICAgICAgICAgICBcCi0gICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX1NVTlBST19DQywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTkwKSkKLSAgICAKLSMgZGVmaW5lIE5ETkJPT1NUX05PX0xWQUxVRV9SRVRVUk5fREVURUNUSU9OCi0KLSMgaWYgMCAvLyB0ZXN0IGNvZGUKLSAgc3RydWN0IHYgIHt9OwotCi0gIHR5cGVkZWYgIGNoYXIgKCZubylbM107Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gIG5vIGZvbyhUIGNvbnN0JiwgLi4uKTsKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgY2hhciBmb28oVCYsIGludCk7Ci0KLQotICBzdHJ1Y3QgdmFsdWVfaXRlcmF0b3IKLSAgewotICAgICAgdiBvcGVyYXRvciooKSBjb25zdDsKLSAgfTsKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgc3RydWN0IGx2YWx1ZV9kZXJlZl9oZWxwZXIKLSAgewotICAgICAgc3RhdGljIFQmIHg7Ci0gICAgICBlbnVtIHsgdmFsdWUgPSAoc2l6ZW9mKGZvbygqeCwwKSkgPT0gMSkgfTsKLSAgfTsKLQotICBpbnQgejJbKGx2YWx1ZV9kZXJlZl9oZWxwZXI8dio+Ojp2YWx1ZSA9PSAxKSA/IDEgOiAtMV07Ci0gIGludCB6WyhsdmFsdWVfZGVyZWZfaGVscGVyPHZhbHVlX2l0ZXJhdG9yPjo6dmFsdWUpID09IDEgPyAtMSA6IDEgXTsKLSMgZW5kaWYgCi0KLSNlbmRpZgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCA8PTB4MjQwNykKLSMgIGRlZmluZSBORE5CT09TVF9OT19JU19DT05WRVJUSUJMRSAvLyAiaXNfY29udmVydGlibGUgZG9lc24ndCB3b3JrIGZvciBzaW1wbGUgdHlwZXMiCi0jZW5kaWYKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sID09IDIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA9PSAzKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19NSU5PUl9fLCA8IDQpICYmICFkZWZpbmVkKF9fRURHX1ZFUlNJT05fXykgICBcCi0gICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU1MSkpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fSVNfQ09OVkVSVElCTEVfVEVNUExBVEUgLy8gVGhlIGZvbGxvd2luZyBwcm9ncmFtIGZhaWxzIHRvIGNvbXBpbGU6Ci0KLSMgIGlmIDAgLy8gdGVzdCBjb2RlCi0gICAgI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICBzdHJ1Y3QgZm9vCi0gICAgewotICAgICAgICBmb28oVCk7Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFU+Ci0gICAgICAgIGZvbyhmb288VT4gY29uc3QmIG90aGVyKSA6IHAob3RoZXIucCkgeyB9Ci0KLSAgICAgICAgVCBwOwotICAgIH07Ci0KLSAgICBib29sIHggPSBuZG5ib29zdDo6aXNfY29udmVydGlibGU8Zm9vPGludCBjb25zdCo+LCBmb288aW50Kj4gPjo6dmFsdWU7Ci0jICBlbmRpZgotCi0jZW5kaWYKLQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgKGRlZmluZWQoTkROQk9PU1RfTk9fU0ZJTkFFKSB8fCBkZWZpbmVkKE5ETkJPT1NUX05PX0lTX0NPTlZFUlRJQkxFKSB8fCBkZWZpbmVkKE5ETkJPT1NUX05PX0lTX0NPTlZFUlRJQkxFX1RFTVBMQVRFKSkKLSMgZGVmaW5lIE5ETkJPT1NUX05PX1NUUklDVF9JVEVSQVRPUl9JTlRFUk9QRVJBQklMSVRZCi0jZW5kaWYgCi0KLSMgaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkKLSMgIGRlZmluZSBORE5CT09TVF9BUkdfREVQRU5ERU5UX1RZUEVOQU1FIHR5cGVuYW1lCi0jIGVsc2UKLSMgIGRlZmluZSBORE5CT09TVF9BUkdfREVQRU5ERU5UX1RZUEVOQU1FCi0jIGVuZGlmCi0KLSMgaWYgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPT0gMikgJiYgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfTUlOT1JfXywgTkROQk9PU1RfVEVTVEVEX0FUKDk1KSkgXAotICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NjQpKQotCi0vLyBHQ0MtMi45NSBlYWdlcmx5IGluc3RhbnRpYXRlcyB0ZW1wbGF0ZWQgY29uc3RydWN0b3JzIGFuZCBjb252ZXJzaW9uCi0vLyBvcGVyYXRvcnMgaW4gY29udmVydGliaWxpdHkgY2hlY2tzLCBjYXVzaW5nIHByZW1hdHVyZSBlcnJvcnMuCi0vLwotLy8gQm9ybGFuZCdzIHByb2JsZW1zIGFyZSBoYXJkZXIgdG8gZGlhZ25vc2UgZHVlIHRvIGxhY2sgb2YgYW4KLS8vIGluc3RhbnRpYXRpb24gc3RhY2sgYmFja3RyYWNlLiAgVGhleSBtYXkgYmUgZHVlIGluIHBhcnQgdG8gdGhlIGZhY3QKLS8vIHRoYXQgaXQgZHJvcHMgY3YtcXVhbGlmaWNhdGlvbiB3aWxseS1uaWxseSBpbiB0ZW1wbGF0ZXMuCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fT05FX1dBWV9JVEVSQVRPUl9JTlRFUk9QCi0jIGVuZGlmIAotCi0vLyBubyBpbmNsdWRlIGd1YXJkOyBtdWx0aXBsZSBpbmNsdXNpb24gaW50ZW5kZWQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaXRlcmF0b3IvZGV0YWlsL2NvbmZpZ191bmRlZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2l0ZXJhdG9yL2RldGFpbC9jb25maWdfdW5kZWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZTgyOGFhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaXRlcmF0b3IvZGV0YWlsL2NvbmZpZ191bmRlZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IFRob21hcyBXaXR0ICAgIDIwMDIuCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmQgbXVsdGlwbGUgaW5jbHVzaW9uIGludGVuZGVkCi0KLS8vCi0vLyBUaGlzIGlzIGEgdGVtcG9yYXJ5IHdvcmthcm91bmQgdW50aWwgdGhlIGJ1bGsgb2YgdGhpcyBpcwotLy8gYXZhaWxhYmxlIGluIGJvb3N0IGNvbmZpZy4KLS8vIDIzLzAyLzAzIHRodwotLy8KLQotI3VuZGVmIE5ETkJPT1NUX05PX0lTX0NPTlZFUlRJQkxFCi0jdW5kZWYgTkROQk9PU1RfTk9fSVNfQ09OVkVSVElCTEVfVEVNUExBVEUKLSN1bmRlZiBORE5CT09TVF9OT19TVFJJQ1RfSVRFUkFUT1JfSU5URVJPUEVSQUJJTElUWQotI3VuZGVmIE5ETkJPT1NUX0FSR19ERVBFTkRFTlRfVFlQRU5BTUUKLSN1bmRlZiBORE5CT09TVF9OT19MVkFMVUVfUkVUVVJOX0RFVEVDVElPTgotI3VuZGVmIE5ETkJPT1NUX05PX09ORV9XQVlfSVRFUkFUT1JfSU5URVJPUAotCi0jaWZkZWYgTkROQk9PU1RfSVRFUkFUT1JfQ09ORklHX0RFRgotIyB1bmRlZiBORE5CT09TVF9JVEVSQVRPUl9DT05GSUdfREVGCi0jZWxzZQotIyBlcnJvciBtaXNzaW5nIG9yIG5lc3RlZCAjaW5jbHVkZSBjb25maWdfZGVmCi0jZW5kaWYgCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2l0ZXJhdG9yL2RldGFpbC9lbmFibGVfaWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pdGVyYXRvci9kZXRhaWwvZW5hYmxlX2lmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmIwNDFhYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2l0ZXJhdG9yL2RldGFpbC9lbmFibGVfaWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAyLgotLy8gKEMpIENvcHlyaWdodCBKZXJlbXkgU2llayAgICAyMDAyLgotLy8gKEMpIENvcHlyaWdodCBUaG9tYXMgV2l0dCAgICAyMDAyLgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotI2lmbmRlZiBORE5CT09TVF9FTkFCTEVfSUZfMjMwMjIwMDNUSFdfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0VOQUJMRV9JRl8yMzAyMjAwM1RIV19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWRlbnRpdHkuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IvZGV0YWlsL2NvbmZpZ19kZWYuaHBwPgotCi0vLwotLy8gQm9vc3QgaXRlcmF0b3JzIHVzZXMgaXRzIG93biBlbmFibGVfaWYgY2F1c2Ugd2UgbmVlZAotLy8gc3BlY2lhbCBzZW1hbnRpY3MgZm9yIGRlZmljaWVudCBjb21waWxlcnMuCi0vLyAyMy8wMi8wMyB0aHcKLS8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi0gIG5hbWVzcGFjZSBpdGVyYXRvcnMKLSAgewotICAgIC8vCi0gICAgLy8gQmFzZSBtYWNoaW5lcnkgZm9yIGFsbCBraW5kcyBvZiBlbmFibGUgaWYKLSAgICAvLwotICAgIHRlbXBsYXRlPGJvb2w+Ci0gICAgc3RydWN0IGVuYWJsZWQKLSAgICB7Ci0gICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgc3RydWN0IGJhc2UKLSAgICAgIHsKLSAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICB9OwotICAgIH07Ci0gICAgCi0gICAgLy8KLSAgICAvLyBGb3IgY29tcGlsZXJzIHRoYXQgZG9uJ3Qgc3VwcG9ydCAiU3Vic3RpdHV0aW9uIEZhaWx1cmUgSXMgTm90IEFuIEVycm9yIgotICAgIC8vIGVuYWJsZV9pZiBmYWxscyBiYWNrIHRvIGFsd2F5cyBlbmFibGVkLiBTZWUgY29tbWVudHMKLSAgICAvLyBvbiBvcGVyYXRvciBpbXBsZW1lbnRhdGlvbiBmb3IgY29uc2VxdWVuY2VzLgotICAgIC8vCi0gICAgdGVtcGxhdGU8PgotICAgIHN0cnVjdCBlbmFibGVkPGZhbHNlPgotICAgIHsKLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICBzdHJ1Y3QgYmFzZQotICAgICAgewotI2lmZGVmIE5ETkJPT1NUX05PX1NGSU5BRQotCi0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotCi0gICAgICAgIC8vIFRoaXMgd2F5IHRvIGRvIGl0IHdvdWxkIGdpdmUgYSBuaWNlIGVycm9yIG1lc3NhZ2UgY29udGFpbmluZwotICAgICAgICAvLyBpbnZhbGlkIG92ZXJsb2FkLCBidXQgaGFzIHRoZSBiaWcgZGlzYWR2YW50YWdlIHRoYXQKLSAgICAgICAgLy8gdGhlcmUgaXMgbm8gcmVmZXJlbmNlIHRvIHVzZXIgY29kZSBpbiB0aGUgZXJyb3IgbWVzc2FnZS4KLSAgICAgICAgLy8KLSAgICAgICAgLy8gc3RydWN0IGludmFsaWRfb3ZlcmxvYWQ7Ci0gICAgICAgIC8vIHR5cGVkZWYgaW52YWxpZF9vdmVybG9hZCB0eXBlOwotICAgICAgICAvLwotI2VuZGlmCi0gICAgICB9OwotICAgIH07Ci0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBDb25kLAotICAgICAgICAgICAgICBjbGFzcyBSZXR1cm4+Ci0gICAgc3RydWN0IGVuYWJsZV9pZgotIyBpZiAhZGVmaW5lZChORE5CT09TVF9OT19TRklOQUUpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lTX0NPTlZFUlRJQkxFKQotICAgICAgOiBlbmFibGVkPChDb25kOjp2YWx1ZSk+Ojp0ZW1wbGF0ZSBiYXNlPFJldHVybj4KLSMgZWxzZQotICAgICAgOiBtcGw6OmlkZW50aXR5PFJldHVybj4KLSMgZW5kaWYgCi0gICAgewotIyBpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSAgICAgICAgdHlwZWRlZiBSZXR1cm4gdHlwZTsKLSMgZW5kaWYgCi0gICAgfTsKLQotICB9IC8vIG5hbWVzcGFjZSBpdGVyYXRvcnMKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2RldGFpbC9jb25maWdfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfRU5BQkxFX0lGXzIzMDIyMDAzVEhXX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pdGVyYXRvci9kZXRhaWwvZmFjYWRlX2l0ZXJhdG9yX2NhdGVnb3J5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaXRlcmF0b3IvZGV0YWlsL2ZhY2FkZV9pdGVyYXRvcl9jYXRlZ29yeS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxNDg3OTMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pdGVyYXRvci9kZXRhaWwvZmFjYWRlX2l0ZXJhdG9yX2NhdGVnb3J5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwMCArMCwwIEBACi0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMy4gVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcwotLy8gc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSNpZm5kZWYgRkFDQURFX0lURVJBVE9SX0NBVEVHT1JZX05ETkJPT1NUX0RXQTIwMDMxMTE4X0hQUAotIyBkZWZpbmUgRkFDQURFX0lURVJBVE9SX0NBVEVHT1JZX05ETkJPT1NUX0RXQTIwMDMxMTE4X0hQUAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2l0ZXJhdG9yX2NhdGVnb3JpZXMuaHBwPgotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9vci5ocHA+ICAvLyB1c2VkIGluIGl0ZXJhdG9yX3RhZyBpbmhlcml0YW5jZSBsb2dpYwotIyBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYW5kLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2V2YWxfaWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWRlbnRpdHkuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXNzZXJ0LmhwcD4KLQotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29uc3QuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IvZGV0YWlsL2NvbmZpZ19kZWYuaHBwPiAvLyB0cnkgdG8ga2VlcCB0aGlzIGxhc3QKLQotIyBpZmRlZiBORE5CT09TVF9JVEVSQVRPUl9SRUZfQ09OU1RORVNTX0tJTExTX1dSSVRBQklMSVRZCi0jICBpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvaW5kaXJlY3RfdHJhaXRzLmhwcD4KLSMgZW5kaWYKLQotLy8KLS8vIGl0ZXJhdG9yX2NhdGVnb3J5IGRlZHVjdGlvbiBmb3IgaXRlcmF0b3JfZmFjYWRlCi0vLwotCi0vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBzdHJ1Y3QgdXNlX2RlZmF1bHQ7IH0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGRldGFpbCAgewotCi1zdHJ1Y3QgaW5wdXRfb3V0cHV0X2l0ZXJhdG9yX3RhZwotICA6IHN0ZDo6aW5wdXRfaXRlcmF0b3JfdGFnCi17Ci0gICAgLy8gVXNpbmcgaW5oZXJpdGFuY2UgZm9yIG9ubHkgaW5wdXRfaXRlcmF0b3JfdGFnIGhlbHBzIHRvIGF2b2lkCi0gICAgLy8gYW1iaWd1aXRpZXMgd2hlbiBhIHN0ZGxpYiBpbXBsZW1lbnRhdGlvbiBkaXNwYXRjaGVzIG9uIGEKLSAgICAvLyBmdW5jdGlvbiB3aGljaCBpcyBvdmVybG9hZGVkIG9uIGJvdGggaW5wdXRfaXRlcmF0b3JfdGFnIGFuZAotICAgIC8vIG91dHB1dF9pdGVyYXRvcl90YWcsIGFzIFNUTFBvcnQgZG9lcywgaW4gaXRzIF9fdmFsaWRfcmFuZ2UKLSAgICAvLyBmdW5jdGlvbi4gIEkgY2xhaW0gaXQncyBiZXR0ZXIgdG8gYXZvaWQgdGhlIGFtYmlndWl0eSBpbiB0aGVzZQotICAgIC8vIGNhc2VzLgotICAgIG9wZXJhdG9yIHN0ZDo6b3V0cHV0X2l0ZXJhdG9yX3RhZygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gc3RkOjpvdXRwdXRfaXRlcmF0b3JfdGFnKCk7Ci0gICAgfQotfTsKLQotLy8KLS8vIFRydWUgaWZmIHRoZSB1c2VyIGhhcyBleHBsaWNpdGx5IGRpc2FibGVkIHdyaXRhYmlsaXR5IG9mIHRoaXMKLS8vIGl0ZXJhdG9yLiAgUGFzcyB0aGUgaXRlcmF0b3JfZmFjYWRlJ3MgVmFsdWUgcGFyYW1ldGVyIGFuZCBpdHMKLS8vIG5lc3RlZCA6OnJlZmVyZW5jZSB0eXBlLgotLy8KLXRlbXBsYXRlIDxjbGFzcyBWYWx1ZVBhcmFtLCBjbGFzcyBSZWZlcmVuY2U+Ci1zdHJ1Y3QgaXRlcmF0b3Jfd3JpdGFiaWxpdHlfZGlzYWJsZWQKLSMgaWZkZWYgTkROQk9PU1RfSVRFUkFUT1JfUkVGX0NPTlNUTkVTU19LSUxMU19XUklUQUJJTElUWSAvLyBBZGRpbmcgVGhvbWFzJyBsb2dpYz8KLSAgOiBtcGw6Om9yXzwKLSAgICAgICAgaXNfY29uc3Q8UmVmZXJlbmNlPgotICAgICAgLCBuZG5ib29zdDo6ZGV0YWlsOjppbmRpcmVjdF90cmFpdHM6OmlzX3JlZmVyZW5jZV90b19jb25zdDxSZWZlcmVuY2U+Ci0gICAgICAsIGlzX2NvbnN0PFZhbHVlUGFyYW0+Ci0gICAgPgotIyBlbHNlIAotICA6IGlzX2NvbnN0PFZhbHVlUGFyYW0+Ci0jIGVuZGlmIAote307Ci0KLQotLy8KLS8vIENvbnZlcnQgYW4gaXRlcmF0b3JfZmFjYWRlJ3MgdHJhdmVyc2FsIGNhdGVnb3J5LCBWYWx1ZSBwYXJhbWV0ZXIsCi0vLyBhbmQgOjpyZWZlcmVuY2UgdHlwZSB0byBhbiBhcHByb3ByaWF0ZSBvbGQtc3R5bGUgY2F0ZWdvcnkuCi0vLwotLy8gSWYgd3JpdGFiaWxpdHkgaGFzIGJlZW4gZGlzYWJsZWQgcGVyIHRoZSBhYm92ZSBtZXRhZnVuY3Rpb24sIHRoZQotLy8gcmVzdWx0IHdpbGwgbm90IGJlIGNvbnZlcnRpYmxlIHRvIG91dHB1dF9pdGVyYXRvcl90YWcuCi0vLwotLy8gT3RoZXJ3aXNlLCBpZiBUcmF2ZXJzYWwgPT0gc2luZ2xlX3Bhc3NfdHJhdmVyc2FsX3RhZywgdGhlIGZvbGxvd2luZwotLy8gY29uZGl0aW9ucyB3aWxsIHJlc3VsdCBpbiBhIHRhZyB0aGF0IGlzIGNvbnZlcnRpYmxlIGJvdGggdG8KLS8vIGlucHV0X2l0ZXJhdG9yX3RhZyBhbmQgb3V0cHV0X2l0ZXJhdG9yX3RhZzoKLS8vCi0vLyAgICAxLiBSZWZlcmVuY2UgaXMgYSByZWZlcmVuY2UgdG8gbm9uLWNvbnN0Ci0vLyAgICAyLiBSZWZlcmVuY2UgaXMgbm90IGEgcmVmZXJlbmNlIGFuZCBpcyBjb252ZXJ0aWJsZSB0byBWYWx1ZQotLy8KLXRlbXBsYXRlIDxjbGFzcyBUcmF2ZXJzYWwsIGNsYXNzIFZhbHVlUGFyYW0sIGNsYXNzIFJlZmVyZW5jZT4KLXN0cnVjdCBpdGVyYXRvcl9mYWNhZGVfZGVmYXVsdF9jYXRlZ29yeQotICA6IG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgbXBsOjphbmRfPAotICAgICAgICAgICAgaXNfcmVmZXJlbmNlPFJlZmVyZW5jZT4KLSAgICAgICAgICAsIGlzX2NvbnZlcnRpYmxlPFRyYXZlcnNhbCxmb3J3YXJkX3RyYXZlcnNhbF90YWc+Ci0gICAgICAgID4KLSAgICAgICwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgaXNfY29udmVydGlibGU8VHJhdmVyc2FsLHJhbmRvbV9hY2Nlc3NfdHJhdmVyc2FsX3RhZz4KLSAgICAgICAgICAsIG1wbDo6aWRlbnRpdHk8c3RkOjpyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZz4KLSAgICAgICAgICAsIG1wbDo6aWZfPAotICAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPFRyYXZlcnNhbCxiaWRpcmVjdGlvbmFsX3RyYXZlcnNhbF90YWc+Ci0gICAgICAgICAgICAgICwgc3RkOjpiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZwotICAgICAgICAgICAgICAsIHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcKLSAgICAgICAgICAgID4KLSAgICAgICAgPgotICAgICAgLCB0eXBlbmFtZSBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICBtcGw6OmFuZF88Ci0gICAgICAgICAgICAgICAgaXNfY29udmVydGlibGU8VHJhdmVyc2FsLCBzaW5nbGVfcGFzc190cmF2ZXJzYWxfdGFnPgotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIC8vIGNoZWNrIGZvciByZWFkYWJpbGl0eQotICAgICAgICAgICAgICAsIGlzX2NvbnZlcnRpYmxlPFJlZmVyZW5jZSwgVmFsdWVQYXJhbT4KLSAgICAgICAgICAgID4KLSAgICAgICAgICAsIG1wbDo6aWRlbnRpdHk8c3RkOjppbnB1dF9pdGVyYXRvcl90YWc+Ci0gICAgICAgICAgLCBtcGw6OmlkZW50aXR5PFRyYXZlcnNhbD4KLSAgICAgICAgPgotICAgID4KLXsKLX07Ci0KLS8vIFRydWUgaWZmIFQgaXMgY29udmVydGlibGUgdG8gYW4gb2xkLXN0eWxlIGl0ZXJhdG9yIGNhdGVnb3J5LgotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfaXRlcmF0b3JfY2F0ZWdvcnkKLSAgOiBtcGw6Om9yXzwKLSAgICAgICAgaXNfY29udmVydGlibGU8VCxzdGQ6OmlucHV0X2l0ZXJhdG9yX3RhZz4KLSAgICAgICwgaXNfY29udmVydGlibGU8VCxzdGQ6Om91dHB1dF9pdGVyYXRvcl90YWc+Ci0gICAgPgotewotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfaXRlcmF0b3JfdHJhdmVyc2FsCi0gIDogaXNfY29udmVydGlibGU8VCxpbmNyZW1lbnRhYmxlX3RyYXZlcnNhbF90YWc+Ci17fTsKLQotLy8KLS8vIEEgY29tcG9zaXRlIGl0ZXJhdG9yX2NhdGVnb3J5IHRhZyBjb252ZXJ0aWJsZSB0byBDYXRlZ29yeSAoYSBwdXJlCi0vLyBvbGQtc3R5bGUgY2F0ZWdvcnkpIGFuZCBUcmF2ZXJzYWwgKGEgcHVyZSB0cmF2ZXJzYWwgdGFnKS4KLS8vIFRyYXZlcnNhbCBtdXN0IGJlIGEgc3RyaWN0IGluY3JlYXNlIG9mIHRoZSB0cmF2ZXJzYWwgcG93ZXIgZ2l2ZW4gYnkKLS8vIENhdGVnb3J5LgotLy8KLXRlbXBsYXRlIDxjbGFzcyBDYXRlZ29yeSwgY2xhc3MgVHJhdmVyc2FsPgotc3RydWN0IGl0ZXJhdG9yX2NhdGVnb3J5X3dpdGhfdHJhdmVyc2FsCi0gIDogQ2F0ZWdvcnksIFRyYXZlcnNhbAotewotIyBpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKQotICAgIC8vIE1ha2Ugc3VyZSB0aGlzIGlzbid0IHVzZWQgdG8gYnVpbGQgYW55IGNhdGVnb3JpZXMgd2hlcmUKLSAgICAvLyBjb252ZXJ0aWJpbGl0eSB0byBUcmF2ZXJzYWwgaXMgcmVkdW5kYW50LiAgU2hvdWxkIGp1c3QgdXNlIHRoZQotICAgIC8vIENhdGVnb3J5IGVsZW1lbnQgaW4gdGhhdCBjYXNlLgotICAgIE5ETkJPT1NUX01QTF9BU1NFUlRfTk9UKCgKLSAgICAgICAgaXNfY29udmVydGlibGU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGl0ZXJhdG9yX2NhdGVnb3J5X3RvX3RyYXZlcnNhbDxDYXRlZ29yeT46OnR5cGUKLSAgICAgICAgICAgICwgVHJhdmVyc2FsCi0gICAgICAgICAgPikpOwotCi0gICAgTkROQk9PU1RfTVBMX0FTU0VSVCgoaXNfaXRlcmF0b3JfY2F0ZWdvcnk8Q2F0ZWdvcnk+KSk7Ci0gICAgTkROQk9PU1RfTVBMX0FTU0VSVF9OT1QoKGlzX2l0ZXJhdG9yX2NhdGVnb3J5PFRyYXZlcnNhbD4pKTsKLSAgICBORE5CT09TVF9NUExfQVNTRVJUX05PVCgoaXNfaXRlcmF0b3JfdHJhdmVyc2FsPENhdGVnb3J5PikpOwotIyAgaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgTkROQk9PU1RfVEVTVEVEX0FUKDEzMTApKQotICAgIE5ETkJPT1NUX01QTF9BU1NFUlQoKGlzX2l0ZXJhdG9yX3RyYXZlcnNhbDxUcmF2ZXJzYWw+KSk7Ci0jICBlbmRpZiAKLSMgZW5kaWYgCi19OwotCi0vLyBDb21wdXRlcyBhbiBpdGVyYXRvcl9jYXRlZ29yeSB0YWcgd2hvc2UgdHJhdmVyc2FsIGlzIFRyYXZlcnNhbCBhbmQKLS8vIHdoaWNoIGlzIGFwcHJvcHJpYXRlIGZvciBhbiBpdGVyYXRvcgotdGVtcGxhdGUgPGNsYXNzIFRyYXZlcnNhbCwgY2xhc3MgVmFsdWVQYXJhbSwgY2xhc3MgUmVmZXJlbmNlPgotc3RydWN0IGZhY2FkZV9pdGVyYXRvcl9jYXRlZ29yeV9pbXBsCi17Ci0jIGlmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApCi0gICAgTkROQk9PU1RfTVBMX0FTU0VSVF9OT1QoKGlzX2l0ZXJhdG9yX2NhdGVnb3J5PFRyYXZlcnNhbD4pKTsKLSMgZW5kaWYgCi0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl9mYWNhZGVfZGVmYXVsdF9jYXRlZ29yeTwKLSAgICAgICAgVHJhdmVyc2FsLFZhbHVlUGFyYW0sUmVmZXJlbmNlCi0gICAgPjo6dHlwZSBjYXRlZ29yeTsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgICBpc19zYW1lPAotICAgICAgICAgICAgVHJhdmVyc2FsCi0gICAgICAgICAgLCB0eXBlbmFtZSBpdGVyYXRvcl9jYXRlZ29yeV90b190cmF2ZXJzYWw8Y2F0ZWdvcnk+Ojp0eXBlCi0gICAgICAgID4KLSAgICAgICwgY2F0ZWdvcnkKLSAgICAgICwgaXRlcmF0b3JfY2F0ZWdvcnlfd2l0aF90cmF2ZXJzYWw8Y2F0ZWdvcnksVHJhdmVyc2FsPgotICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vCi0vLyBDb21wdXRlIGFuIGl0ZXJhdG9yX2NhdGVnb3J5IGZvciBpdGVyYXRvcl9mYWNhZGUKLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgQ2F0ZWdvcnlPclRyYXZlcnNhbCwgY2xhc3MgVmFsdWVQYXJhbSwgY2xhc3MgUmVmZXJlbmNlPgotc3RydWN0IGZhY2FkZV9pdGVyYXRvcl9jYXRlZ29yeQotICA6IG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgaXNfaXRlcmF0b3JfY2F0ZWdvcnk8Q2F0ZWdvcnlPclRyYXZlcnNhbD4KLSAgICAgICwgbXBsOjppZGVudGl0eTxDYXRlZ29yeU9yVHJhdmVyc2FsPiAvLyBvbGQtc3R5bGUgY2F0ZWdvcmllcyBhcmUgZmluZSBhcy1pcwotICAgICAgLCBmYWNhZGVfaXRlcmF0b3JfY2F0ZWdvcnlfaW1wbDxDYXRlZ29yeU9yVHJhdmVyc2FsLFZhbHVlUGFyYW0sUmVmZXJlbmNlPgotICAgID4KLXsKLX07Ci0KLX19IC8vIG5hbWVzcGFjZSBuZG5ib29zdDo6ZGV0YWlsCi0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IvZGV0YWlsL2NvbmZpZ191bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBGQUNBREVfSVRFUkFUT1JfQ0FURUdPUllfTkROQk9PU1RfRFdBMjAwMzExMThfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2l0ZXJhdG9yL2ludGVyb3BlcmFibGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pdGVyYXRvci9pbnRlcm9wZXJhYmxlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjViMjEwNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2l0ZXJhdG9yL2ludGVyb3BlcmFibGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAyLgotLy8gKEMpIENvcHlyaWdodCBKZXJlbXkgU2llayAgICAyMDAyLgotLy8gKEMpIENvcHlyaWdodCBUaG9tYXMgV2l0dCAgICAyMDAyLgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotI2lmbmRlZiBORE5CT09TVF9JTlRFUk9QRVJBQkxFXzIzMDIyMDAzVEhXX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfSU5URVJPUEVSQUJMRV8yMzAyMjAwM1RIV19IUFAKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9vci5ocHA+Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29udmVydGlibGUuaHBwPgotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2RldGFpbC9jb25maWdfZGVmLmhwcD4gLy8gbXVzdCBhcHBlYXIgbGFzdAotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotICAvLwotICAvLyBNZXRhIGZ1bmN0aW9uIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHR3bwotICAvLyBpdGVyYXRvciB0eXBlcyBhcmUgY29uc2lkZXJlZCBpbnRlcm9wZXJhYmxlLgotICAvLwotICAvLyBUd28gaXRlcmF0b3IgdHlwZXMgQSxCIGFyZSBjb25zaWRlcmVkIGludGVyb3BlcmFibGUgaWYgZWl0aGVyCi0gIC8vIEEgaXMgY29udmVydGlibGUgdG8gQiBvciB2aWNlIHZlcnNhLgotICAvLyBUaGlzIGludGVyb3BlcmFiaWxpdHkgZGVmaW5pdGlvbiBpcyBpbiBzeW5jIHdpdGggdGhlCi0gIC8vIHN0YW5kYXJkcyByZXF1aXJlbWVudHMgb24gY29uc3RhbnQvbXV0YWJsZSBjb250YWluZXIKLSAgLy8gaXRlcmF0b3JzICgyMy4xIFtsaWIuY29udGFpbmVyLnJlcXVpcmVtZW50c10pLgotICAvLwotICAvLyBGb3IgY29tcGlsZXJzIHRoYXQgZG9uJ3Qgc3VwcG9ydCBpc19jb252ZXJ0aWJsZSAKLSAgLy8gaXNfaW50ZXJvcGVyYWJsZSBnaXZlcyBmYWxzZSBwb3NpdGl2ZXMuIFNlZSBjb21tZW50cwotICAvLyBvbiBvcGVyYXRvciBpbXBsZW1lbnRhdGlvbiBmb3IgY29uc2VxdWVuY2VzLgotICAvLwotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQSwgdHlwZW5hbWUgQj4KLSAgc3RydWN0IGlzX2ludGVyb3BlcmFibGUKLSMgaWZkZWYgTkROQk9PU1RfTk9fU1RSSUNUX0lURVJBVE9SX0lOVEVST1BFUkFCSUxJVFkKLSAgICA6IG1wbDo6dHJ1ZV8KLSMgZWxzZQotICAgIDogbXBsOjpvcl88Ci0gICAgICAgICAgaXNfY29udmVydGlibGU8IEEsIEIgPgotICAgICAgICAsIGlzX2NvbnZlcnRpYmxlPCBCLCBBID4gPgotIyBlbmRpZgotICB7IAotICB9OwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2RldGFpbC9jb25maWdfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfSU5URVJPUEVSQUJMRV8yMzAyMjAwM1RIV19IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaXRlcmF0b3IvaXRlcmF0b3JfYWRhcHRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2l0ZXJhdG9yL2l0ZXJhdG9yX2FkYXB0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYTliZDU0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaXRlcmF0b3IvaXRlcmF0b3JfYWRhcHRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNjUgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAyLgotLy8gKEMpIENvcHlyaWdodCBKZXJlbXkgU2llayAgICAyMDAyLgotLy8gKEMpIENvcHlyaWdodCBUaG9tYXMgV2l0dCAgICAyMDAyLgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotI2lmbmRlZiBORE5CT09TVF9JVEVSQVRPUl9BREFQVE9SXzIzMDIyMDAzVEhXX0hQUAotI2RlZmluZSBORE5CT09TVF9JVEVSQVRPUl9BREFQVE9SXzIzMDIyMDAzVEhXX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9pdGVyYXRvci5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl9jYXRlZ29yaWVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl9mYWNhZGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2RldGFpbC9lbmFibGVfaWYuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL25vdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL29yLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4KLQotI2lmZGVmIE5ETkJPT1NUX0lURVJBVE9SX1JFRl9DT05TVE5FU1NfS0lMTFNfV1JJVEFCSUxJVFkKLSMgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3JlZmVyZW5jZS5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9yZWZlcmVuY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2RldGFpbC9jb25maWdfZGVmLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2l0ZXJhdG9yX3RyYWl0cy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAvLyBVc2VkIGFzIGEgZGVmYXVsdCB0ZW1wbGF0ZSBhcmd1bWVudCBpbnRlcm5hbGx5LCBtZXJlbHkgdG8KLSAgLy8gaW5kaWNhdGUgInVzZSB0aGUgZGVmYXVsdCIsIHRoaXMgY2FuIGFsc28gYmUgcGFzc2VkIGJ5IHVzZXJzCi0gIC8vIGV4cGxpY2l0bHkgaW4gb3JkZXIgdG8gc3BlY2lmeSB0aGF0IHRoZSBkZWZhdWx0IHNob3VsZCBiZSB1c2VkLgotICBzdHJ1Y3QgdXNlX2RlZmF1bHQ7Ci0gIAotIyBpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotICAvLyB0aGUgaW5jb21wbGV0ZW5lc3Mgb2YgdXNlX2RlZmF1bHQgY2F1c2VzIG1hc3NpdmUgcHJvYmxlbXMgZm9yCi0gIC8vIGlzX2NvbnZlcnRpYmxlIChuYXR1cmFsbHkpLiAgVGhpcyB3b3JrYXJvdW5kIGlzIGZvcnR1bmF0ZWx5IG5vdAotICAvLyBuZWVkZWQgZm9yIHZjNi92YzcuCi0gIHRlbXBsYXRlPGNsYXNzIFRvPgotICBzdHJ1Y3QgaXNfY29udmVydGlibGU8dXNlX2RlZmF1bHQsVG8+Ci0gICAgOiBtcGw6OmZhbHNlXyB7fTsKLSMgZW5kaWYgCi0gIAotICBuYW1lc3BhY2UgZGV0YWlsCi0gIHsKLQotICAgIC8vIAotICAgIC8vIFJlc3VsdCB0eXBlIHVzZWQgaW4gZW5hYmxlX2lmX2NvbnZlcnRpYmxlIG1ldGEgZnVuY3Rpb24uCi0gICAgLy8gVGhpcyBjYW4gYmUgYW4gaW5jb21wbGV0ZSB0eXBlLCBhcyBvbmx5IHBvaW50ZXJzIHRvIAotICAgIC8vIGVuYWJsZV9pZl9jb252ZXJ0aWJsZTwgLi4uID46OnR5cGUgYXJlIHVzZWQuCi0gICAgLy8gV2UgY291bGQgaGF2ZSB1c2VkIHZvaWQgZm9yIHRoaXMsIGJ1dCBjb252ZXJzaW9uIHRvCi0gICAgLy8gdm9pZCogaXMganVzdCB0byBlYXN5LgotICAgIC8vCi0gICAgc3RydWN0IGVuYWJsZV90eXBlOwotICB9Ci0KLQotICAvLwotICAvLyBlbmFibGVfaWYgZm9yIHVzZSBpbiBhZGFwdGVkIGl0ZXJhdG9ycyBjb25zdHJ1Y3RvcnMuCi0gIC8vCi0gIC8vIEluIG9yZGVyIHRvIHByb3ZpZGUgaW50ZXJvcGVyYWJpbGl0eSBiZXR3ZWVuIGFkYXB0ZWQgY29uc3RhbnQgYW5kCi0gIC8vIG11dGFibGUgaXRlcmF0b3JzLCBhZGFwdGVkIGl0ZXJhdG9ycyB3aWxsIHVzdWFsbHkgcHJvdmlkZSB0ZW1wbGF0ZWQKLSAgLy8gY29udmVyc2lvbiBjb25zdHJ1Y3RvcnMgb2YgdGhlIGZvbGxvd2luZyBmb3JtCi0gIC8vCi0gIC8vIHRlbXBsYXRlIDxjbGFzcyBCYXNlSXRlcmF0b3I+Ci0gIC8vIGNsYXNzIGFkYXB0ZWRfaXRlcmF0b3IgOgotICAvLyAgIHB1YmxpYyBpdGVyYXRvcl9hZGFwdG9yPCBhZGFwdGVkX2l0ZXJhdG9yPEl0ZXJhdG9yPiwgSXRlcmF0b3IgPgotICAvLyB7Ci0gIC8vIHB1YmxpYzoKLSAgLy8gICAKLSAgLy8gICAuLi4KLSAgLy8KLSAgLy8gICB0ZW1wbGF0ZSA8Y2xhc3MgT3RoZXJJdGVyYXRvcj4KLSAgLy8gICBhZGFwdGVkX2l0ZXJhdG9yKAotICAvLyAgICAgICBPdGhlckl0ZXJhdG9yIGNvbnN0JiBpdAotICAvLyAgICAgLCB0eXBlbmFtZSBlbmFibGVfaWZfY29udmVydGlibGU8T3RoZXJJdGVyYXRvciwgSXRlcmF0b3I+Ojp0eXBlKiA9IDApOwotICAvLwotICAvLyAgIC4uLgotICAvLyB9OwotICAvLwotICAvLyBlbmFibGVfaWZfY29udmVydGlibGUgaXMgdXNlZCB0byByZW1vdmUgdGhvc2Ugb3ZlcmxvYWRzIGZyb20gdGhlIG92ZXJsb2FkCi0gIC8vIHNldCB0aGF0IGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQuIEZvciBhbGwgcHJhY3RpY2FsIHB1cnBvc2VzIG9ubHkgb3ZlcmxvYWRzCi0gIC8vIGZvciBjb25zdGFudC9tdXRhYmxlIGludGVyYWN0aW9uIHdpbGwgcmVtYWluLiBUaGlzIGhhcyB0aGUgYWR2YW50YWdlIHRoYXQKLSAgLy8gbWV0YSBmdW5jdGlvbnMgbGlrZSBuZG5ib29zdDo6aXNfY29udmVydGlibGUgZG8gbm90IHJldHVybiBmYWxzZSBwb3NpdGl2ZXMsCi0gIC8vIGFzIHRoZXkgY2FuIG9ubHkgbG9vayBhdCB0aGUgc2lnbmF0dXJlIG9mIHRoZSBjb252ZXJzaW9uIGNvbnN0cnVjdG9yCi0gIC8vIGFuZCBub3QgYXQgdGhlIGFjdHVhbCBpbnN0YW50aWF0aW9uLgotICAvLwotICAvLyBlbmFibGVfaWZfaW50ZXJvcGVyYWJsZSBjYW4gYmUgc2FmZWx5IHVzZWQgaW4gdXNlciBjb2RlLiBJdCBmYWxscyBiYWNrIHRvCi0gIC8vIGFsd2F5cyBlbmFibGVkIGZvciBjb21waWxlcnMgdGhhdCBkb24ndCBzdXBwb3J0IGVuYWJsZV9pZiBvciBpc19jb252ZXJ0aWJsZS4gCi0gIC8vIFRoZXJlIGlzIG5vIG5lZWQgZm9yIGNvbXBpbGVyIHNwZWNpZmljIHdvcmthcm91bmRzIGluIHVzZXIgY29kZS4gCi0gIC8vCi0gIC8vIFRoZSBvcGVyYXRvcnMgaW1wbGVtZW50YXRpb24gcmVsaWVzIG9uIG5kbmJvb3N0Ojppc19jb252ZXJ0aWJsZSBub3QgcmV0dXJuaW5nCi0gIC8vIGZhbHNlIHBvc2l0aXZlcyBmb3IgdXNlci9saWJyYXJ5IGRlZmluZWQgaXRlcmF0b3IgdHlwZXMuIFNlZSBjb21tZW50cwotICAvLyBvbiBvcGVyYXRvciBpbXBsZW1lbnRhdGlvbiBmb3IgY29uc2VxdWVuY2VzLgotICAvLwotIyAgaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKQotICAKLSAgdGVtcGxhdGU8dHlwZW5hbWUgRnJvbSwgdHlwZW5hbWUgVG8+Ci0gIHN0cnVjdCBlbmFibGVfaWZfY29udmVydGlibGUKLSAgewotICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgICAgbXBsOjpvcl88Ci0gICAgICAgICAgICAgaXNfc2FtZTxGcm9tLFRvPgotICAgICAgICAgICAsIGlzX2NvbnZlcnRpYmxlPEZyb20sIFRvPgotICAgICAgICAgPgotICAgICAgLCBuZG5ib29zdDo6ZGV0YWlsOjplbmFibGVfdHlwZQotICAgICAgLCBpbnQmCi0gICAgID46OnR5cGUgdHlwZTsKLSAgfTsKLSAgCi0jICBlbGlmIGRlZmluZWQoTkROQk9PU1RfTk9fSVNfQ09OVkVSVElCTEUpIHx8IGRlZmluZWQoTkROQk9PU1RfTk9fU0ZJTkFFKQotICAKLSAgdGVtcGxhdGUgPGNsYXNzIEZyb20sIGNsYXNzIFRvPgotICBzdHJ1Y3QgZW5hYmxlX2lmX2NvbnZlcnRpYmxlCi0gIHsKLSAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6ZW5hYmxlX3R5cGUgdHlwZTsKLSAgfTsKLSAgCi0jICBlbGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoX01TQ19GVUxMX1ZFUiwgTkROQk9PU1RfVEVTVEVEX0FUKDEzMTAyMjkyKSkgJiYgTkROQk9PU1RfTVNWQyA+IDEzMDAKLSAgCi0gIC8vIEZvciBzb21lIHJlYXNvbiB2YzcuMSBuZWVkcyB1cyB0byAiY3V0IG9mZiIgaW5zdGFudGlhdGlvbgotICAvLyBvZiBpc19jb252ZXJ0aWJsZSBpbiBhIGZldyBjYXNlcy4KLSAgdGVtcGxhdGU8dHlwZW5hbWUgRnJvbSwgdHlwZW5hbWUgVG8+Ci0gIHN0cnVjdCBlbmFibGVfaWZfY29udmVydGlibGUKLSAgICA6IGl0ZXJhdG9yczo6ZW5hYmxlX2lmPAotICAgICAgICBtcGw6Om9yXzwKLSAgICAgICAgICAgIGlzX3NhbWU8RnJvbSxUbz4KLSAgICAgICAgICAsIGlzX2NvbnZlcnRpYmxlPEZyb20sIFRvPgotICAgICAgICA+Ci0gICAgICAsIG5kbmJvb3N0OjpkZXRhaWw6OmVuYWJsZV90eXBlCi0gICAgPgotICB7fTsKLSAgCi0jICBlbHNlIAotICAKLSAgdGVtcGxhdGU8dHlwZW5hbWUgRnJvbSwgdHlwZW5hbWUgVG8+Ci0gIHN0cnVjdCBlbmFibGVfaWZfY29udmVydGlibGUKLSAgICA6IGl0ZXJhdG9yczo6ZW5hYmxlX2lmPAotICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPEZyb20sIFRvPgotICAgICAgICAsIG5kbmJvb3N0OjpkZXRhaWw6OmVuYWJsZV90eXBlCi0gICAgICA+Ci0gIHt9OwotICAgICAgCi0jIGVuZGlmCi0gIAotICAvLwotICAvLyBEZWZhdWx0IHRlbXBsYXRlIGFyZ3VtZW50IGhhbmRsaW5nIGZvciBpdGVyYXRvcl9hZGFwdG9yCi0gIC8vCi0gIG5hbWVzcGFjZSBkZXRhaWwKLSAgewotICAgIC8vIElmIFQgaXMgdXNlX2RlZmF1bHQsIHJldHVybiB0aGUgcmVzdWx0IG9mIGludm9raW5nCi0gICAgLy8gRGVmYXVsdE51bGxhcnlGbiwgb3RoZXJ3aXNlIHJldHVybiBULgotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBEZWZhdWx0TnVsbGFyeUZuPgotICAgIHN0cnVjdCBpYV9kZmx0X2hlbHAKLSAgICAgIDogbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgaXNfc2FtZTxULCB1c2VfZGVmYXVsdD4KLSAgICAgICAgICAsIERlZmF1bHROdWxsYXJ5Rm4KLSAgICAgICAgICAsIG1wbDo6aWRlbnRpdHk8VD4KLSAgICAgICAgPgotICAgIHsKLSAgICB9OwotCi0gICAgLy8gQSBtZXRhZnVuY3Rpb24gd2hpY2ggY29tcHV0ZXMgYW4gaXRlcmF0b3JfYWRhcHRvcidzIGJhc2UgY2xhc3MsCi0gICAgLy8gYSBzcGVjaWFsaXphdGlvbiBvZiBpdGVyYXRvcl9mYWNhZGUuCi0gICAgdGVtcGxhdGUgPAotICAgICAgICBjbGFzcyBEZXJpdmVkCi0gICAgICAsIGNsYXNzIEJhc2UKLSAgICAgICwgY2xhc3MgVmFsdWUKLSAgICAgICwgY2xhc3MgVHJhdmVyc2FsCi0gICAgICAsIGNsYXNzIFJlZmVyZW5jZQotICAgICAgLCBjbGFzcyBEaWZmZXJlbmNlCi0gICAgPgotICAgIHN0cnVjdCBpdGVyYXRvcl9hZGFwdG9yX2Jhc2UKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaXRlcmF0b3JfZmFjYWRlPAotICAgICAgICAgICAgRGVyaXZlZAotICAgICAgICAgICAgCi0jIGlmZGVmIE5ETkJPT1NUX0lURVJBVE9SX1JFRl9DT05TVE5FU1NfS0lMTFNfV1JJVEFCSUxJVFkKLSAgICAgICAgICAsIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmlhX2RmbHRfaGVscDwKLSAgICAgICAgICAgICAgICBWYWx1ZQotICAgICAgICAgICAgICAsIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTxSZWZlcmVuY2UsdXNlX2RlZmF1bHQ+Ci0gICAgICAgICAgICAgICAgICAsIGl0ZXJhdG9yX3ZhbHVlPEJhc2U+Ci0gICAgICAgICAgICAgICAgICAsIHJlbW92ZV9yZWZlcmVuY2U8UmVmZXJlbmNlPgotICAgICAgICAgICAgICAgID4KLSAgICAgICAgICAgID46OnR5cGUKLSMgZWxzZQotICAgICAgICAgICwgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6aWFfZGZsdF9oZWxwPAotICAgICAgICAgICAgICAgIFZhbHVlLCBpdGVyYXRvcl92YWx1ZTxCYXNlPgotICAgICAgICAgICAgPjo6dHlwZQotIyBlbmRpZgotICAgICAgICAgICAgCi0gICAgICAgICAgLCB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjppYV9kZmx0X2hlbHA8Ci0gICAgICAgICAgICAgICAgVHJhdmVyc2FsCi0gICAgICAgICAgICAgICwgaXRlcmF0b3JfdHJhdmVyc2FsPEJhc2U+Ci0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICAgICAgICAsIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmlhX2RmbHRfaGVscDwKLSAgICAgICAgICAgICAgICBSZWZlcmVuY2UKLSAgICAgICAgICAgICAgLCBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8VmFsdWUsdXNlX2RlZmF1bHQ+Ci0gICAgICAgICAgICAgICAgICAsIGl0ZXJhdG9yX3JlZmVyZW5jZTxCYXNlPgotICAgICAgICAgICAgICAgICAgLCBhZGRfcmVmZXJlbmNlPFZhbHVlPgotICAgICAgICAgICAgICAgID4KLSAgICAgICAgICAgID46OnR5cGUKLQotICAgICAgICAgICwgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6aWFfZGZsdF9oZWxwPAotICAgICAgICAgICAgICAgIERpZmZlcmVuY2UsIGl0ZXJhdG9yX2RpZmZlcmVuY2U8QmFzZT4KLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgPgotICAgICAgICB0eXBlOwotICAgIH07Ci0gIAotICAgIC8vIHdvcmthcm91bmQgZm9yIGFDKysgQ1IgSkFHYWYzMzUxMgotICAgIHRlbXBsYXRlIDxjbGFzcyBUcjEsIGNsYXNzIFRyMj4KLSAgICBpbmxpbmUgdm9pZCBpdGVyYXRvcl9hZGFwdG9yX2Fzc2VydF90cmF2ZXJzYWwgKCkKLSAgICB7Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKChpc19jb252ZXJ0aWJsZTxUcjEsIFRyMj46OnZhbHVlKSk7Ci0gICAgfQotICB9Ci0gIAotICAvLwotICAvLyBJdGVyYXRvciBBZGFwdG9yCi0gIC8vCi0gIC8vIFRoZSBwYXJhbWV0ZXIgb3JkZXJpbmcgY2hhbmdlZCBzbGlnaHRseSB3aXRoIHJlc3BlY3QgdG8gZm9ybWVyCi0gIC8vIHZlcnNpb25zIG9mIGl0ZXJhdG9yX2FkYXB0b3IgVGhlIGlkZWEgaXMgdGhhdCB3aGVuIHRoZSB1c2VyIG5lZWRzCi0gIC8vIHRvIGZpZGRsZSB3aXRoIHRoZSByZWZlcmVuY2UgdHlwZSBpdCBpcyBoaWdobHkgbGlrZWx5IHRoYXQgdGhlCi0gIC8vIGl0ZXJhdG9yIGNhdGVnb3J5IGhhcyB0byBiZSBhZGp1c3RlZCBhcyB3ZWxsLiAgQW55IG9mIHRoZQotICAvLyBmb2xsb3dpbmcgZm91ciB0ZW1wbGF0ZSBhcmd1bWVudHMgbWF5IGJlIG9tbWl0dGVkIG9yIGV4cGxpY2l0bHkKLSAgLy8gcmVwbGFjZWQgYnkgdXNlX2RlZmF1bHQuCi0gIC8vCi0gIC8vICAgVmFsdWUgLSBpZiBzdXBwbGllZCwgdGhlIHZhbHVlX3R5cGUgb2YgdGhlIHJlc3VsdGluZyBpdGVyYXRvciwgdW5sZXNzCi0gIC8vICAgICAgY29uc3QuIElmIGNvbnN0LCBhIGNvbmZvcm1pbmcgY29tcGlsZXIgc3RyaXBzIGNvbnN0bmVzcyBmb3IgdGhlCi0gIC8vICAgICAgdmFsdWVfdHlwZS4gSWYgbm90IHN1cHBsaWVkLCBpdGVyYXRvcl90cmFpdHM8QmFzZT46OnZhbHVlX3R5cGUgaXMgdXNlZAotICAvLwotICAvLyAgIENhdGVnb3J5IC0gdGhlIHRyYXZlcnNhbCBjYXRlZ29yeSBvZiB0aGUgcmVzdWx0aW5nIGl0ZXJhdG9yLiBJZiBub3QKLSAgLy8gICAgICBzdXBwbGllZCwgaXRlcmF0b3JfdHJhdmVyc2FsPEJhc2U+Ojp0eXBlIGlzIHVzZWQuCi0gIC8vCi0gIC8vICAgUmVmZXJlbmNlIC0gdGhlIHJlZmVyZW5jZSB0eXBlIG9mIHRoZSByZXN1bHRpbmcgaXRlcmF0b3IsIGFuZCBpbgotICAvLyAgICAgIHBhcnRpY3VsYXIsIHRoZSByZXN1bHQgdHlwZSBvZiBvcGVyYXRvciooKS4gSWYgbm90IHN1cHBsaWVkIGJ1dAotICAvLyAgICAgIFZhbHVlIGlzIHN1cHBsaWVkLCBWYWx1ZSYgaXMgdXNlZC4gT3RoZXJ3aXNlCi0gIC8vICAgICAgaXRlcmF0b3JfdHJhaXRzPEJhc2U+OjpyZWZlcmVuY2UgaXMgdXNlZC4KLSAgLy8KLSAgLy8gICBEaWZmZXJlbmNlIC0gdGhlIGRpZmZlcmVuY2VfdHlwZSBvZiB0aGUgcmVzdWx0aW5nIGl0ZXJhdG9yLiBJZiBub3QKLSAgLy8gICAgICBzdXBwbGllZCwgaXRlcmF0b3JfdHJhaXRzPEJhc2U+OjpkaWZmZXJlbmNlX3R5cGUgaXMgdXNlZC4KLSAgLy8KLSAgdGVtcGxhdGUgPAotICAgICAgY2xhc3MgRGVyaXZlZAotICAgICwgY2xhc3MgQmFzZQotICAgICwgY2xhc3MgVmFsdWUgICAgICAgID0gdXNlX2RlZmF1bHQKLSAgICAsIGNsYXNzIFRyYXZlcnNhbCAgICA9IHVzZV9kZWZhdWx0Ci0gICAgLCBjbGFzcyBSZWZlcmVuY2UgICAgPSB1c2VfZGVmYXVsdAotICAgICwgY2xhc3MgRGlmZmVyZW5jZSAgID0gdXNlX2RlZmF1bHQKLSAgPgotICBjbGFzcyBpdGVyYXRvcl9hZGFwdG9yCi0gICAgOiBwdWJsaWMgbmRuYm9vc3Q6OmRldGFpbDo6aXRlcmF0b3JfYWRhcHRvcl9iYXNlPAotICAgICAgICBEZXJpdmVkLCBCYXNlLCBWYWx1ZSwgVHJhdmVyc2FsLCBSZWZlcmVuY2UsIERpZmZlcmVuY2UKLSAgICAgID46OnR5cGUKLSAgewotICAgICAgZnJpZW5kIGNsYXNzIGl0ZXJhdG9yX2NvcmVfYWNjZXNzOwotCi0gICBwcm90ZWN0ZWQ6Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6Oml0ZXJhdG9yX2FkYXB0b3JfYmFzZTwKLSAgICAgICAgICBEZXJpdmVkLCBCYXNlLCBWYWx1ZSwgVHJhdmVyc2FsLCBSZWZlcmVuY2UsIERpZmZlcmVuY2UKLSAgICAgID46OnR5cGUgc3VwZXJfdDsKLSAgIHB1YmxpYzoKLSAgICAgIGl0ZXJhdG9yX2FkYXB0b3IoKSB7fQotCi0gICAgICBleHBsaWNpdCBpdGVyYXRvcl9hZGFwdG9yKEJhc2UgY29uc3QgJml0ZXIpCi0gICAgICAgICAgOiBtX2l0ZXJhdG9yKGl0ZXIpCi0gICAgICB7Ci0gICAgICB9Ci0KLSAgICAgIHR5cGVkZWYgQmFzZSBiYXNlX3R5cGU7Ci0KLSAgICAgIEJhc2UgY29uc3QmIGJhc2UoKSBjb25zdAotICAgICAgICB7IHJldHVybiBtX2l0ZXJhdG9yOyB9Ci0KLSAgIHByb3RlY3RlZDoKLSAgICAgIC8vIGZvciBjb252ZW5pZW5jZSBpbiBkZXJpdmVkIGNsYXNzZXMKLSAgICAgIHR5cGVkZWYgaXRlcmF0b3JfYWRhcHRvcjxEZXJpdmVkLEJhc2UsVmFsdWUsVHJhdmVyc2FsLFJlZmVyZW5jZSxEaWZmZXJlbmNlPiBpdGVyYXRvcl9hZGFwdG9yXzsKLSAgICAgIAotICAgICAgLy8KLSAgICAgIC8vIGx2YWx1ZSBhY2Nlc3MgdG8gdGhlIEJhc2Ugb2JqZWN0IGZvciBEZXJpdmVkCi0gICAgICAvLwotICAgICAgQmFzZSBjb25zdCYgYmFzZV9yZWZlcmVuY2UoKSBjb25zdAotICAgICAgICB7IHJldHVybiBtX2l0ZXJhdG9yOyB9Ci0KLSAgICAgIEJhc2UmIGJhc2VfcmVmZXJlbmNlKCkKLSAgICAgICAgeyByZXR1cm4gbV9pdGVyYXRvcjsgfQotCi0gICBwcml2YXRlOgotICAgICAgLy8KLSAgICAgIC8vIENvcmUgaXRlcmF0b3IgaW50ZXJmYWNlIGZvciBpdGVyYXRvcl9mYWNhZGUuICBUaGlzIGlzIHByaXZhdGUKLSAgICAgIC8vIHRvIHByZXZlbnQgdGVtcHRhdGlvbiBmb3IgRGVyaXZlZCBjbGFzc2VzIHRvIHVzZSBpdCwgd2hpY2gKLSAgICAgIC8vIHdpbGwgb2Z0ZW4gcmVzdWx0IGluIGFuIGVycm9yLiAgRGVyaXZlZCBjbGFzc2VzIHNob3VsZCB1c2UKLSAgICAgIC8vIGJhc2VfcmVmZXJlbmNlKCksIGFib3ZlLCB0byBnZXQgZGlyZWN0IGFjY2VzcyB0byBtX2l0ZXJhdG9yLgotICAgICAgLy8gCi0gICAgICB0eXBlbmFtZSBzdXBlcl90OjpyZWZlcmVuY2UgZGVyZWZlcmVuY2UoKSBjb25zdAotICAgICAgICB7IHJldHVybiAqbV9pdGVyYXRvcjsgfQotCi0gICAgICB0ZW1wbGF0ZSA8Ci0gICAgICBjbGFzcyBPdGhlckRlcml2ZWQsIGNsYXNzIE90aGVySXRlcmF0b3IsIGNsYXNzIFYsIGNsYXNzIEMsIGNsYXNzIFIsIGNsYXNzIEQKLSAgICAgID4gICAKLSAgICAgIGJvb2wgZXF1YWwoaXRlcmF0b3JfYWRhcHRvcjxPdGhlckRlcml2ZWQsIE90aGVySXRlcmF0b3IsIFYsIEMsIFIsIEQ+IGNvbnN0JiB4KSBjb25zdAotICAgICAgewotICAgICAgICAvLyBNYXliZSByZWFkZCB3aXRoIHNhbWVfZGlzdGFuY2UKLSAgICAgICAgLy8gICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoCi0gICAgICAgIC8vICAgICAgICAgICAgICAgKGRldGFpbDo6c2FtZV9jYXRlZ29yeV9hbmRfZGlmZmVyZW5jZTxEZXJpdmVkLE90aGVyRGVyaXZlZD46OnZhbHVlKQotICAgICAgICAvLyAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgcmV0dXJuIG1faXRlcmF0b3IgPT0geC5iYXNlKCk7Ci0gICAgICB9Ci0KLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfY2F0ZWdvcnlfdG9fdHJhdmVyc2FsPAotICAgICAgICAgIHR5cGVuYW1lIHN1cGVyX3Q6Oml0ZXJhdG9yX2NhdGVnb3J5Ci0gICAgICA+Ojp0eXBlIG15X3RyYXZlcnNhbDsKLQotIyBkZWZpbmUgTkROQk9PU1RfSVRFUkFUT1JfQURBUFRPUl9BU1NFUlRfVFJBVkVSU0FMKGNhdCkgXAotICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6aXRlcmF0b3JfYWRhcHRvcl9hc3NlcnRfdHJhdmVyc2FsPG15X3RyYXZlcnNhbCwgY2F0PigpOwotCi0gICAgICB2b2lkIGFkdmFuY2UodHlwZW5hbWUgc3VwZXJfdDo6ZGlmZmVyZW5jZV90eXBlIG4pCi0gICAgICB7Ci0gICAgICAgICAgTkROQk9PU1RfSVRFUkFUT1JfQURBUFRPUl9BU1NFUlRfVFJBVkVSU0FMKHJhbmRvbV9hY2Nlc3NfdHJhdmVyc2FsX3RhZykKLSAgICAgICAgICBtX2l0ZXJhdG9yICs9IG47Ci0gICAgICB9Ci0gIAotICAgICAgdm9pZCBpbmNyZW1lbnQoKSB7ICsrbV9pdGVyYXRvcjsgfQotCi0gICAgICB2b2lkIGRlY3JlbWVudCgpIAotICAgICAgewotICAgICAgICAgIE5ETkJPT1NUX0lURVJBVE9SX0FEQVBUT1JfQVNTRVJUX1RSQVZFUlNBTChiaWRpcmVjdGlvbmFsX3RyYXZlcnNhbF90YWcpCi0gICAgICAgICAgIC0tbV9pdGVyYXRvcjsKLSAgICAgIH0KLQotICAgICAgdGVtcGxhdGUgPAotICAgICAgICAgIGNsYXNzIE90aGVyRGVyaXZlZCwgY2xhc3MgT3RoZXJJdGVyYXRvciwgY2xhc3MgViwgY2xhc3MgQywgY2xhc3MgUiwgY2xhc3MgRAotICAgICAgPiAgIAotICAgICAgdHlwZW5hbWUgc3VwZXJfdDo6ZGlmZmVyZW5jZV90eXBlIGRpc3RhbmNlX3RvKAotICAgICAgICAgIGl0ZXJhdG9yX2FkYXB0b3I8T3RoZXJEZXJpdmVkLCBPdGhlckl0ZXJhdG9yLCBWLCBDLCBSLCBEPiBjb25zdCYgeSkgY29uc3QKLSAgICAgIHsKLSAgICAgICAgICBORE5CT09TVF9JVEVSQVRPUl9BREFQVE9SX0FTU0VSVF9UUkFWRVJTQUwocmFuZG9tX2FjY2Vzc190cmF2ZXJzYWxfdGFnKQotICAgICAgICAgIC8vIE1heWJlIHJlYWRkIHdpdGggc2FtZV9kaXN0YW5jZQotICAgICAgICAgIC8vICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKAotICAgICAgICAgIC8vICAgICAgICAgICAgICAgKGRldGFpbDo6c2FtZV9jYXRlZ29yeV9hbmRfZGlmZmVyZW5jZTxEZXJpdmVkLE90aGVyRGVyaXZlZD46OnZhbHVlKQotICAgICAgICAgIC8vICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICByZXR1cm4geS5iYXNlKCkgLSBtX2l0ZXJhdG9yOwotICAgICAgfQotCi0jIHVuZGVmIE5ETkJPT1NUX0lURVJBVE9SX0FEQVBUT1JfQVNTRVJUX1RSQVZFUlNBTAotICAgICAgCi0gICBwcml2YXRlOiAvLyBkYXRhIG1lbWJlcnMKLSAgICAgIEJhc2UgbV9pdGVyYXRvcjsKLSAgfTsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2RldGFpbC9jb25maWdfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfSVRFUkFUT1JfQURBUFRPUl8yMzAyMjAwM1RIV19IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaXRlcmF0b3IvaXRlcmF0b3JfY2F0ZWdvcmllcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2l0ZXJhdG9yL2l0ZXJhdG9yX2NhdGVnb3JpZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNjAyZTU0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaXRlcmF0b3IvaXRlcmF0b3JfY2F0ZWdvcmllcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODggKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCBKZXJlbXkgU2llayAyMDAyLgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX0lURVJBVE9SX0NBVEVHT1JJRVNfSFBQCi0jIGRlZmluZSBORE5CT09TVF9JVEVSQVRPUl9DQVRFR09SSUVTX0hQUAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9pdGVyYXRvci5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2RldGFpbC9jb25maWdfZGVmLmhwcD4KLQotIyBpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2V2YWxfaWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWRlbnRpdHkuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9tcGwvcGxhY2Vob2xkZXJzLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4KLQotIyBpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotLy8KLS8vIFRyYXZlcnNhbCBDYXRlZ29yaWVzCi0vLwotCi1zdHJ1Y3Qgbm9fdHJhdmVyc2FsX3RhZyB7fTsKLQotc3RydWN0IGluY3JlbWVudGFibGVfdHJhdmVyc2FsX3RhZyAKLSAgOiBub190cmF2ZXJzYWxfdGFnCi17Ci0vLyAgICAgaW5jcmVtZW50YWJsZV90cmF2ZXJzYWxfdGFnKCkge30KLS8vICAgICBpbmNyZW1lbnRhYmxlX3RyYXZlcnNhbF90YWcoc3RkOjpvdXRwdXRfaXRlcmF0b3JfdGFnIGNvbnN0Jikge307Ci19OwotICAKLXN0cnVjdCBzaW5nbGVfcGFzc190cmF2ZXJzYWxfdGFnCi0gIDogaW5jcmVtZW50YWJsZV90cmF2ZXJzYWxfdGFnCi17Ci0vLyAgICAgc2luZ2xlX3Bhc3NfdHJhdmVyc2FsX3RhZygpIHt9Ci0vLyAgICAgc2luZ2xlX3Bhc3NfdHJhdmVyc2FsX3RhZyhzdGQ6OmlucHV0X2l0ZXJhdG9yX3RhZyBjb25zdCYpIHt9OwotfTsKLSAgCi1zdHJ1Y3QgZm9yd2FyZF90cmF2ZXJzYWxfdGFnCi0gIDogc2luZ2xlX3Bhc3NfdHJhdmVyc2FsX3RhZwotewotLy8gICAgIGZvcndhcmRfdHJhdmVyc2FsX3RhZygpIHt9Ci0vLyAgICAgZm9yd2FyZF90cmF2ZXJzYWxfdGFnKHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcgY29uc3QmKSB7fTsKLX07Ci0gIAotc3RydWN0IGJpZGlyZWN0aW9uYWxfdHJhdmVyc2FsX3RhZwotICA6IGZvcndhcmRfdHJhdmVyc2FsX3RhZwotewotLy8gICAgIGJpZGlyZWN0aW9uYWxfdHJhdmVyc2FsX3RhZygpIHt9OwotLy8gICAgIGJpZGlyZWN0aW9uYWxfdHJhdmVyc2FsX3RhZyhzdGQ6OmJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnIGNvbnN0Jikge307Ci19OwotICAKLXN0cnVjdCByYW5kb21fYWNjZXNzX3RyYXZlcnNhbF90YWcKLSAgOiBiaWRpcmVjdGlvbmFsX3RyYXZlcnNhbF90YWcKLXsKLS8vICAgICByYW5kb21fYWNjZXNzX3RyYXZlcnNhbF90YWcoKSB7fTsKLS8vICAgICByYW5kb21fYWNjZXNzX3RyYXZlcnNhbF90YWcoc3RkOjpyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZyBjb25zdCYpIHt9OwotfTsKLQotbmFtZXNwYWNlIGRldGFpbAoteyAgCi0gIC8vCi0gIC8vIENvbnZlcnQgYSAic3RyaWN0bHkgb2xkLXN0eWxlIiBpdGVyYXRvciBjYXRlZ29yeSB0byBhIHRyYXZlcnNhbAotICAvLyB0YWcuICBUaGlzIGlzIGJyb2tlbiBvdXQgaW50byBhIHNlcGFyYXRlIG1ldGFmdW5jdGlvbiB0byByZWR1Y2UKLSAgLy8gdGhlIGNvc3Qgb2YgaW5zdGFudGlhdGluZyBpdGVyYXRvcl9jYXRlZ29yeV90b190cmF2ZXJzYWwsIGJlbG93LAotICAvLyBmb3IgbmV3LXN0eWxlIHR5cGVzLgotICAvLwotICB0ZW1wbGF0ZSA8Y2xhc3MgQ2F0PgotICBzdHJ1Y3Qgb2xkX2NhdGVnb3J5X3RvX3RyYXZlcnNhbAotICAgIDogbXBsOjpldmFsX2lmPAotICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPENhdCxzdGQ6OnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnPgotICAgICAgICAsIG1wbDo6aWRlbnRpdHk8cmFuZG9tX2FjY2Vzc190cmF2ZXJzYWxfdGFnPgotICAgICAgICAsIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgaXNfY29udmVydGlibGU8Q2F0LHN0ZDo6YmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWc+Ci0gICAgICAgICAgICAsIG1wbDo6aWRlbnRpdHk8YmlkaXJlY3Rpb25hbF90cmF2ZXJzYWxfdGFnPgotICAgICAgICAgICAgLCBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICAgICAgICBpc19jb252ZXJ0aWJsZTxDYXQsc3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZz4KLSAgICAgICAgICAgICAgICAsIG1wbDo6aWRlbnRpdHk8Zm9yd2FyZF90cmF2ZXJzYWxfdGFnPgotICAgICAgICAgICAgICAgICwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPENhdCxzdGQ6OmlucHV0X2l0ZXJhdG9yX3RhZz4KLSAgICAgICAgICAgICAgICAgICAgLCBtcGw6OmlkZW50aXR5PHNpbmdsZV9wYXNzX3RyYXZlcnNhbF90YWc+Ci0gICAgICAgICAgICAgICAgICAgICwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgICAgICAgICAgICBpc19jb252ZXJ0aWJsZTxDYXQsc3RkOjpvdXRwdXRfaXRlcmF0b3JfdGFnPgotICAgICAgICAgICAgICAgICAgICAgICAgLCBtcGw6OmlkZW50aXR5PGluY3JlbWVudGFibGVfdHJhdmVyc2FsX3RhZz4KLSAgICAgICAgICAgICAgICAgICAgICAgICwgdm9pZAotICAgICAgICAgICAgICAgICAgICAgID4KLSAgICAgICAgICAgICAgICAgID4KLSAgICAgICAgICAgICAgPgotICAgICAgICAgID4KLSAgICAgID4KLSAge307Ci0KLSMgaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0gIHRlbXBsYXRlIDw+Ci0gIHN0cnVjdCBvbGRfY2F0ZWdvcnlfdG9fdHJhdmVyc2FsPGludD4KLSAgewotICAgICAgdHlwZWRlZiBpbnQgdHlwZTsKLSAgfTsKLSMgZW5kaWYKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgVHJhdmVyc2FsPgotICBzdHJ1Y3QgcHVyZV90cmF2ZXJzYWxfdGFnCi0gICAgOiBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgaXNfY29udmVydGlibGU8VHJhdmVyc2FsLHJhbmRvbV9hY2Nlc3NfdHJhdmVyc2FsX3RhZz4KLSAgICAgICAgLCBtcGw6OmlkZW50aXR5PHJhbmRvbV9hY2Nlc3NfdHJhdmVyc2FsX3RhZz4KLSAgICAgICAgLCBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPFRyYXZlcnNhbCxiaWRpcmVjdGlvbmFsX3RyYXZlcnNhbF90YWc+Ci0gICAgICAgICAgICAsIG1wbDo6aWRlbnRpdHk8YmlkaXJlY3Rpb25hbF90cmF2ZXJzYWxfdGFnPgotICAgICAgICAgICAgLCBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICAgICAgICBpc19jb252ZXJ0aWJsZTxUcmF2ZXJzYWwsZm9yd2FyZF90cmF2ZXJzYWxfdGFnPgotICAgICAgICAgICAgICAgICwgbXBsOjppZGVudGl0eTxmb3J3YXJkX3RyYXZlcnNhbF90YWc+Ci0gICAgICAgICAgICAgICAgLCBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICAgICAgICAgICAgaXNfY29udmVydGlibGU8VHJhdmVyc2FsLHNpbmdsZV9wYXNzX3RyYXZlcnNhbF90YWc+Ci0gICAgICAgICAgICAgICAgICAgICwgbXBsOjppZGVudGl0eTxzaW5nbGVfcGFzc190cmF2ZXJzYWxfdGFnPgotICAgICAgICAgICAgICAgICAgICAsIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfY29udmVydGlibGU8VHJhdmVyc2FsLGluY3JlbWVudGFibGVfdHJhdmVyc2FsX3RhZz4KLSAgICAgICAgICAgICAgICAgICAgICAgICwgbXBsOjppZGVudGl0eTxpbmNyZW1lbnRhYmxlX3RyYXZlcnNhbF90YWc+Ci0gICAgICAgICAgICAgICAgICAgICAgICAsIHZvaWQKLSAgICAgICAgICAgICAgICAgICAgICA+Ci0gICAgICAgICAgICAgICAgICA+Ci0gICAgICAgICAgICAgID4KLSAgICAgICAgICA+Ci0gICAgICA+Ci0gIHsKLSAgfTsKLSAgCi0jIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotICB0ZW1wbGF0ZSA8PgotICBzdHJ1Y3QgcHVyZV90cmF2ZXJzYWxfdGFnPGludD4KLSAgewotICAgICAgdHlwZWRlZiBpbnQgdHlwZTsKLSAgfTsKLSMgZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLQotLy8KLS8vIENvbnZlcnQgYW4gaXRlcmF0b3IgY2F0ZWdvcnkgaW50byBhIHRyYXZlcnNhbCB0YWcKLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgQ2F0Pgotc3RydWN0IGl0ZXJhdG9yX2NhdGVnb3J5X3RvX3RyYXZlcnNhbAotICA6IG1wbDo6ZXZhbF9pZjwgLy8gaWYgYWxyZWFkeSBjb252ZXJ0aWJsZSB0byBhIHRyYXZlcnNhbCB0YWcsIHdlJ3JlIGRvbmUuCi0gICAgICAgIGlzX2NvbnZlcnRpYmxlPENhdCxpbmNyZW1lbnRhYmxlX3RyYXZlcnNhbF90YWc+Ci0gICAgICAsIG1wbDo6aWRlbnRpdHk8Q2F0PgotICAgICAgLCBuZG5ib29zdDo6ZGV0YWlsOjpvbGRfY2F0ZWdvcnlfdG9fdHJhdmVyc2FsPENhdD4KLSAgICA+Ci17fTsKLQotLy8gVHJhaXQgdG8gZ2V0IGFuIGl0ZXJhdG9yJ3MgdHJhdmVyc2FsIGNhdGVnb3J5Ci10ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3IgPSBtcGw6Ol8xPgotc3RydWN0IGl0ZXJhdG9yX3RyYXZlcnNhbAotICA6IGl0ZXJhdG9yX2NhdGVnb3J5X3RvX3RyYXZlcnNhbDwKLSAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPjo6aXRlcmF0b3JfY2F0ZWdvcnkKLSAgICA+Ci17fTsKLQotIyBpZmRlZiBORE5CT09TVF9NUExfQ0ZHX05PX0ZVTExfTEFNQkRBX1NVUFBPUlQKLS8vIEhhY2sgYmVjYXVzZSBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUIGRvZXNuJ3Qgc2VlbSB0byB3b3JrCi0vLyBvdXQgd2VsbC4gIEluc3RhbnRpYXRpbmcgdGhlIG5lc3RlZCBhcHBseSB0ZW1wbGF0ZSBhbHNvCi0vLyByZXF1aXJlcyBpbnN0YW50aWF0aW5nIGl0ZXJhdG9yX3RyYWl0cyBvbiB0aGUKLS8vIHBsYWNlaG9sZGVyLiBJbnN0ZWFkIHdlIGp1c3Qgc3BlY2lhbGl6ZSBpdCBhcyBhIG1ldGFmdW5jdGlvbgotLy8gY2xhc3MuCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGl0ZXJhdG9yX3RyYXZlcnNhbDxtcGw6Ol8xPgotewotICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgIHN0cnVjdCBhcHBseSA6IGl0ZXJhdG9yX3RyYXZlcnNhbDxUPgotICAgIHt9OwotfTsKLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXRlcmF0b3JfdHJhdmVyc2FsPG1wbDo6Xz4KLSAgOiBpdGVyYXRvcl90cmF2ZXJzYWw8bXBsOjpfMT4KLXt9OwotIyBlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IvZGV0YWlsL2NvbmZpZ191bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9JVEVSQVRPUl9DQVRFR09SSUVTX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl9jb25jZXB0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2l0ZXJhdG9yL2l0ZXJhdG9yX2NvbmNlcHRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNThkNDU4OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2l0ZXJhdG9yL2l0ZXJhdG9yX2NvbmNlcHRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4NCArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IEplcmVteSBTaWVrIDIwMDIuCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfSVRFUkFUT1JfQ09OQ0VQVFNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0lURVJBVE9SX0NPTkNFUFRTX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uY2VwdF9jaGVjay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IvaXRlcmF0b3JfY2F0ZWdvcmllcy5ocHA+Ci0KLS8vIFVzZSBuZG5ib29zdDo6ZGV0YWlsOjppdGVyYXRvcl90cmFpdHMgdG8gd29yayBhcm91bmQgc29tZSBNU1ZDL0Rpbmt1bXdhcmUgcHJvYmxlbXMuCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL2l0ZXJhdG9yLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2ludGVncmFsLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9vci5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLQotLy8gVXNlIG5kbmJvb3N0L2xpbWl0cyB0byB3b3JrIGFyb3VuZCBtaXNzaW5nIGxpbWl0cyBoZWFkZXJzIG9uIHNvbWUgY29tcGlsZXJzCi0jaW5jbHVkZSA8bmRuYm9vc3QvbGltaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uY2VwdC9kZXRhaWwvY29uY2VwdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3RfY29uY2VwdHMKLXsKLSAgLy8gVXNlZCBhIGRpZmZlcmVudCBuYW1lc3BhY2UgaGVyZSAoaW5zdGVhZCBvZiAiYm9vc3QiKSBzbyB0aGF0IHRoZQotICAvLyBjb25jZXB0IGRlc2NyaXB0aW9ucyBkbyBub3QgdGFrZSBmb3IgZ3JhbnRlZCB0aGUgbmFtZXMgaW4KLSAgLy8gbmFtZXNwYWNlIG5kbmJvb3N0LgotCi0gIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gIC8vIEl0ZXJhdG9yIEFjY2VzcyBDb25jZXB0cwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoUmVhZGFibGVJdGVyYXRvciwoSXRlcmF0b3IpKQotICAgIDogbmRuYm9vc3Q6OkFzc2lnbmFibGU8SXRlcmF0b3I+Ci0gICAgLCBuZG5ib29zdDo6Q29weUNvbnN0cnVjdGlibGU8SXRlcmF0b3I+Ci0KLSAgewotICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG5kbmJvb3N0OjpkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLSAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6ZGV0YWlsOjppdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+OjpyZWZlcmVuY2UgcmVmZXJlbmNlOwotCi0gICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKFJlYWRhYmxlSXRlcmF0b3IpCi0gICAgICB7Ci0KLSAgICAgICAgICB2YWx1ZV90eXBlIHYgPSAqaTsKLSAgICAgICAgICBuZG5ib29zdDo6aWdub3JlX3VudXNlZF92YXJpYWJsZV93YXJuaW5nKHYpOwotICAgICAgfQotICBwcml2YXRlOgotICAgICAgSXRlcmF0b3IgaTsKLSAgfTsKLSAgCi0gIHRlbXBsYXRlIDwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBWYWx1ZVR5cGUgPSBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG5kbmJvb3N0OjpkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46OnZhbHVlX3R5cGUKLSAgPgotICBzdHJ1Y3QgV3JpdGFibGVJdGVyYXRvcgotICAgIDogbmRuYm9vc3Q6OkNvcHlDb25zdHJ1Y3RpYmxlPEl0ZXJhdG9yPgotICB7Ci0gICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKFdyaXRhYmxlSXRlcmF0b3IpCi0gICAgICB7Ci0gICAgICAgICAgKmkgPSB2OwotICAgICAgfQotICBwcml2YXRlOgotICAgICAgVmFsdWVUeXBlIHY7Ci0gICAgICBJdGVyYXRvciBpOwotICB9OwotCi0gIHRlbXBsYXRlIDwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBWYWx1ZVR5cGUgPSBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG5kbmJvb3N0OjpkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46OnZhbHVlX3R5cGUKLSAgPgotICBzdHJ1Y3QgV3JpdGFibGVJdGVyYXRvckNvbmNlcHQgOiBXcml0YWJsZUl0ZXJhdG9yPEl0ZXJhdG9yLFZhbHVlVHlwZT4ge307Ci0gIAotICBORE5CT09TVF9jb25jZXB0KFN3YXBwYWJsZUl0ZXJhdG9yLChJdGVyYXRvcikpCi0gIHsKLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoU3dhcHBhYmxlSXRlcmF0b3IpCi0gICAgICB7Ci0gICAgICAgICAgc3RkOjppdGVyX3N3YXAoaTEsIGkyKTsKLSAgICAgIH0KLSAgcHJpdmF0ZToKLSAgICAgIEl0ZXJhdG9yIGkxOwotICAgICAgSXRlcmF0b3IgaTI7Ci0gIH07Ci0KLSAgTkROQk9PU1RfY29uY2VwdChMdmFsdWVJdGVyYXRvciwoSXRlcmF0b3IpKQotICB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLSAgICAgIAotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShMdmFsdWVJdGVyYXRvcikKLSAgICAgIHsKLSAgICAgICAgdmFsdWVfdHlwZSYgciA9IGNvbnN0X2Nhc3Q8dmFsdWVfdHlwZSY+KCppKTsKLSAgICAgICAgbmRuYm9vc3Q6Omlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhyKTsKLSAgICAgIH0KLSAgcHJpdmF0ZToKLSAgICAgIEl0ZXJhdG9yIGk7Ci0gIH07Ci0KLSAgCi0gIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gIC8vIEl0ZXJhdG9yIFRyYXZlcnNhbCBDb25jZXB0cwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoSW5jcmVtZW50YWJsZUl0ZXJhdG9yLChJdGVyYXRvcikpCi0gICAgOiBuZG5ib29zdDo6QXNzaWduYWJsZTxJdGVyYXRvcj4KLSAgICAsIG5kbmJvb3N0OjpDb3B5Q29uc3RydWN0aWJsZTxJdGVyYXRvcj4KLSAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6aXRlcmF0b3JfdHJhdmVyc2FsPEl0ZXJhdG9yPjo6dHlwZSB0cmF2ZXJzYWxfY2F0ZWdvcnk7Ci0KLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKCgKLSAgICAgICAgbmRuYm9vc3Q6OkNvbnZlcnRpYmxlPAotICAgICAgICAgICAgdHJhdmVyc2FsX2NhdGVnb3J5Ci0gICAgICAgICAgLCBuZG5ib29zdDo6aW5jcmVtZW50YWJsZV90cmF2ZXJzYWxfdGFnCi0gICAgICAgID4pKTsKLQotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShJbmNyZW1lbnRhYmxlSXRlcmF0b3IpCi0gICAgICB7Ci0gICAgICAgICAgKytpOwotICAgICAgICAgICh2b2lkKWkrKzsKLSAgICAgIH0KLSAgcHJpdmF0ZToKLSAgICAgIEl0ZXJhdG9yIGk7Ci0gIH07Ci0KLSAgTkROQk9PU1RfY29uY2VwdChTaW5nbGVQYXNzSXRlcmF0b3IsKEl0ZXJhdG9yKSkKLSAgICA6IEluY3JlbWVudGFibGVJdGVyYXRvcjxJdGVyYXRvcj4KLSAgICAsIG5kbmJvb3N0OjpFcXVhbGl0eUNvbXBhcmFibGU8SXRlcmF0b3I+Ci0KLSAgewotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKAotICAgICAgICAgIG5kbmJvb3N0OjpDb252ZXJ0aWJsZTwKLSAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIFNpbmdsZVBhc3NJdGVyYXRvcjo6dHJhdmVyc2FsX2NhdGVnb3J5Ci0gICAgICAgICAgICwgbmRuYm9vc3Q6OnNpbmdsZV9wYXNzX3RyYXZlcnNhbF90YWcKLSAgICAgICAgICA+ICkpOwotICB9OwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoRm9yd2FyZFRyYXZlcnNhbCwoSXRlcmF0b3IpKQotICAgIDogU2luZ2xlUGFzc0l0ZXJhdG9yPEl0ZXJhdG9yPgotICAgICwgbmRuYm9vc3Q6OkRlZmF1bHRDb25zdHJ1Y3RpYmxlPEl0ZXJhdG9yPgotICB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZSBkaWZmZXJlbmNlX3R5cGU7Ci0gICAgICAKLSAgICAgIE5ETkJPT1NUX01QTF9BU1NFUlQoKG5kbmJvb3N0Ojppc19pbnRlZ3JhbDxkaWZmZXJlbmNlX3R5cGU+KSk7Ci0gICAgICBORE5CT09TVF9NUExfQVNTRVJUX1JFTEFUSU9OKHN0ZDo6bnVtZXJpY19saW1pdHM8ZGlmZmVyZW5jZV90eXBlPjo6aXNfc2lnbmVkLCA9PSwgdHJ1ZSk7Ci0KLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKCgKLSAgICAgICAgICBuZG5ib29zdDo6Q29udmVydGlibGU8Ci0gICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBGb3J3YXJkVHJhdmVyc2FsOjp0cmF2ZXJzYWxfY2F0ZWdvcnkKLSAgICAgICAgICAgLCBuZG5ib29zdDo6Zm9yd2FyZF90cmF2ZXJzYWxfdGFnCi0gICAgICAgICAgPiApKTsKLSAgfTsKLSAgCi0gIE5ETkJPT1NUX2NvbmNlcHQoQmlkaXJlY3Rpb25hbFRyYXZlcnNhbCwoSXRlcmF0b3IpKQotICAgIDogRm9yd2FyZFRyYXZlcnNhbDxJdGVyYXRvcj4KLSAgewotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKAotICAgICAgICAgIG5kbmJvb3N0OjpDb252ZXJ0aWJsZTwKLSAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIEJpZGlyZWN0aW9uYWxUcmF2ZXJzYWw6OnRyYXZlcnNhbF9jYXRlZ29yeQotICAgICAgICAgICAsIG5kbmJvb3N0OjpiaWRpcmVjdGlvbmFsX3RyYXZlcnNhbF90YWcKLSAgICAgICAgICA+ICkpOwotCi0gICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKEJpZGlyZWN0aW9uYWxUcmF2ZXJzYWwpCi0gICAgICB7Ci0gICAgICAgICAgLS1pOwotICAgICAgICAgICh2b2lkKWktLTsKLSAgICAgIH0KLSAgIHByaXZhdGU6Ci0gICAgICBJdGVyYXRvciBpOwotICB9OwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoUmFuZG9tQWNjZXNzVHJhdmVyc2FsLChJdGVyYXRvcikpCi0gICAgOiBCaWRpcmVjdGlvbmFsVHJhdmVyc2FsPEl0ZXJhdG9yPgotICB7Ci0gICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoCi0gICAgICAgICAgbmRuYm9vc3Q6OkNvbnZlcnRpYmxlPAotICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgUmFuZG9tQWNjZXNzVHJhdmVyc2FsOjp0cmF2ZXJzYWxfY2F0ZWdvcnkKLSAgICAgICAgICAgLCBuZG5ib29zdDo6cmFuZG9tX2FjY2Vzc190cmF2ZXJzYWxfdGFnCi0gICAgICAgICAgPiApKTsKLQotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShSYW5kb21BY2Nlc3NUcmF2ZXJzYWwpCi0gICAgICB7Ci0gICAgICAgICAgaSArPSBuOwotICAgICAgICAgIGkgPSBpICsgbjsKLSAgICAgICAgICBpID0gbiArIGk7Ci0gICAgICAgICAgaSAtPSBuOwotICAgICAgICAgIGkgPSBpIC0gbjsKLSAgICAgICAgICBuID0gaSAtIGo7Ci0gICAgICB9Ci0gICAgICAKLSAgIHByaXZhdGU6Ci0gICAgICB0eXBlbmFtZSBCaWRpcmVjdGlvbmFsVHJhdmVyc2FsPEl0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlIG47Ci0gICAgICBJdGVyYXRvciBpLCBqOwotICB9OwotCi0gIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gIC8vIEl0ZXJhdG9yIEludGVyb3BlcmFiaWxpdHkgCi0KLSAgbmFtZXNwYWNlIGRldGFpbAotICB7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXJhdG9yMSwgdHlwZW5hbWUgSXRlcmF0b3IyPgotICAgIHZvaWQgaW50ZXJvcF9zaW5nbGVfcGFzc19jb25zdHJhaW50cyhJdGVyYXRvcjEgY29uc3QmIGkxLCBJdGVyYXRvcjIgY29uc3QmIGkyKQotICAgIHsKLSAgICAgICAgYm9vbCBiOwotICAgICAgICBiID0gaTEgPT0gaTI7Ci0gICAgICAgIGIgPSBpMSAhPSBpMjsKLQotICAgICAgICBiID0gaTIgPT0gaTE7Ci0gICAgICAgIGIgPSBpMiAhPSBpMTsKLSAgICAgICAgbmRuYm9vc3Q6Omlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhiKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcmF0b3IxLCB0eXBlbmFtZSBJdGVyYXRvcjI+Ci0gICAgdm9pZCBpbnRlcm9wX3JhbmRfYWNjZXNzX2NvbnN0cmFpbnRzKAotICAgICAgICBJdGVyYXRvcjEgY29uc3QmIGkxLCBJdGVyYXRvcjIgY29uc3QmIGkyLAotICAgICAgICBuZG5ib29zdDo6cmFuZG9tX2FjY2Vzc190cmF2ZXJzYWxfdGFnLCBuZG5ib29zdDo6cmFuZG9tX2FjY2Vzc190cmF2ZXJzYWxfdGFnKQotICAgIHsKLSAgICAgICAgYm9vbCBiOwotICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjppdGVyYXRvcl90cmFpdHM8SXRlcmF0b3IyPjo6ZGlmZmVyZW5jZV90eXBlIG47Ci0gICAgICAgIGIgPSBpMSA8ICBpMjsKLSAgICAgICAgYiA9IGkxIDw9IGkyOwotICAgICAgICBiID0gaTEgPiAgaTI7Ci0gICAgICAgIGIgPSBpMSA+PSBpMjsKLSAgICAgICAgbiA9IGkxIC0gIGkyOwotCi0gICAgICAgIGIgPSBpMiA8ICBpMTsKLSAgICAgICAgYiA9IGkyIDw9IGkxOwotICAgICAgICBiID0gaTIgPiAgaTE7Ci0gICAgICAgIGIgPSBpMiA+PSBpMTsKLSAgICAgICAgbiA9IGkyIC0gIGkxOwotICAgICAgICBuZG5ib29zdDo6aWdub3JlX3VudXNlZF92YXJpYWJsZV93YXJuaW5nKGIpOwotICAgICAgICBuZG5ib29zdDo6aWdub3JlX3VudXNlZF92YXJpYWJsZV93YXJuaW5nKG4pOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBJdGVyYXRvcjEsIHR5cGVuYW1lIEl0ZXJhdG9yMj4KLSAgICB2b2lkIGludGVyb3BfcmFuZF9hY2Nlc3NfY29uc3RyYWludHMoCi0gICAgICAgIEl0ZXJhdG9yMSBjb25zdCYsIEl0ZXJhdG9yMiBjb25zdCYsCi0gICAgICAgIG5kbmJvb3N0OjpzaW5nbGVfcGFzc190cmF2ZXJzYWxfdGFnLCBuZG5ib29zdDo6c2luZ2xlX3Bhc3NfdHJhdmVyc2FsX3RhZykKLSAgICB7IH0KLQotICB9IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotICBORE5CT09TVF9jb25jZXB0KEludGVyb3BlcmFibGVJdGVyYXRvciwoSXRlcmF0b3IpKENvbnN0SXRlcmF0b3IpKQotICB7Ci0gICBwcml2YXRlOgotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpwdXJlX3RyYXZlcnNhbF90YWc8Ci0gICAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6Oml0ZXJhdG9yX3RyYXZlcnNhbDwKLSAgICAgICAgICAgICAgSXRlcmF0b3IKLSAgICAgICAgICA+Ojp0eXBlCi0gICAgICA+Ojp0eXBlIHRyYXZlcnNhbF9jYXRlZ29yeTsKLQotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpwdXJlX3RyYXZlcnNhbF90YWc8Ci0gICAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6Oml0ZXJhdG9yX3RyYXZlcnNhbDwKLSAgICAgICAgICAgICAgQ29uc3RJdGVyYXRvcgotICAgICAgICAgID46OnR5cGUKLSAgICAgID46OnR5cGUgY29uc3RfdHJhdmVyc2FsX2NhdGVnb3J5OwotICAgICAgCi0gIHB1YmxpYzoKLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKChTaW5nbGVQYXNzSXRlcmF0b3I8SXRlcmF0b3I+KSk7Ci0gICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoU2luZ2xlUGFzc0l0ZXJhdG9yPENvbnN0SXRlcmF0b3I+KSk7Ci0KLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoSW50ZXJvcGVyYWJsZUl0ZXJhdG9yKQotICAgICAgewotICAgICAgICAgIGRldGFpbDo6aW50ZXJvcF9zaW5nbGVfcGFzc19jb25zdHJhaW50cyhpLCBjaSk7Ci0gICAgICAgICAgZGV0YWlsOjppbnRlcm9wX3JhbmRfYWNjZXNzX2NvbnN0cmFpbnRzKGksIGNpLCB0cmF2ZXJzYWxfY2F0ZWdvcnkoKSwgY29uc3RfdHJhdmVyc2FsX2NhdGVnb3J5KCkpOwotCi0gICAgICAgICAgY2kgPSBpOwotICAgICAgfQotICAgICAgCi0gICBwcml2YXRlOgotICAgICAgSXRlcmF0b3IgICAgICBpOwotICAgICAgQ29uc3RJdGVyYXRvciBjaTsKLSAgfTsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3RfY29uY2VwdHMKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmNlcHQvZGV0YWlsL2NvbmNlcHRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfSVRFUkFUT1JfQ09OQ0VQVFNfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2l0ZXJhdG9yL2l0ZXJhdG9yX2ZhY2FkZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2l0ZXJhdG9yL2l0ZXJhdG9yX2ZhY2FkZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjYTY0NjYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl9mYWNhZGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODc0ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMi4KLS8vIChDKSBDb3B5cmlnaHQgSmVyZW15IFNpZWsgICAgMjAwMi4KLS8vIChDKSBDb3B5cmlnaHQgVGhvbWFzIFdpdHQgICAgMjAwMi4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSNpZm5kZWYgTkROQk9PU1RfSVRFUkFUT1JfRkFDQURFXzIzMDIyMDAzVEhXX0hQUAotI2RlZmluZSBORE5CT09TVF9JVEVSQVRPUl9GQUNBREVfMjMwMjIwMDNUSFdfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IvaW50ZXJvcGVyYWJsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IvaXRlcmF0b3JfdHJhaXRzLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2RldGFpbC9mYWNhZGVfaXRlcmF0b3JfY2F0ZWdvcnkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2RldGFpbC9lbmFibGVfaWYuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9hZGRyZXNzb2YuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX2NvbnN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfcG9pbnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2NvbnN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfcmVmZXJlbmNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9kLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ldmFsX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9vci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL25vdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Fsd2F5cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FwcGx5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWRlbnRpdHkuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IvZGV0YWlsL2NvbmZpZ19kZWYuaHBwPiAvLyB0aGlzIGdvZXMgbGFzdAotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgLy8gVGhpcyBmb3J3YXJkIGRlY2xhcmF0aW9uIGlzIHJlcXVpcmVkIGZvciB0aGUgZnJpZW5kIGRlY2xhcmF0aW9uCi0gIC8vIGluIGl0ZXJhdG9yX2NvcmVfYWNjZXNzCi0gIHRlbXBsYXRlIDxjbGFzcyBJLCBjbGFzcyBWLCBjbGFzcyBUQywgY2xhc3MgUiwgY2xhc3MgRD4gY2xhc3MgaXRlcmF0b3JfZmFjYWRlOwotCi0gIG5hbWVzcGFjZSBkZXRhaWwKLSAgewotICAgIC8vIEEgYmluYXJ5IG1ldGFmdW5jdGlvbiBjbGFzcyB0aGF0IGFsd2F5cyByZXR1cm5zIGJvb2wuICBWQzYKLSAgICAvLyBJQ0VzIG9uIG1wbDo6YWx3YXlzPGJvb2w+LCBwcm9iYWJseSBiZWNhdXNlIG9mIHRoZSBkZWZhdWx0Ci0gICAgLy8gcGFyYW1ldGVycy4KLSAgICBzdHJ1Y3QgYWx3YXlzX2Jvb2wyCi0gICAgewotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT4KLSAgICAgICAgc3RydWN0IGFwcGx5Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgYm9vbCB0eXBlOwotICAgICAgICB9OwotICAgIH07Ci0KLSAgICAvLwotICAgIC8vIGVuYWJsZSBpZiBmb3IgdXNlIGluIG9wZXJhdG9yIGltcGxlbWVudGF0aW9uLgotICAgIC8vCi0gICAgdGVtcGxhdGUgPAotICAgICAgICBjbGFzcyBGYWNhZGUxCi0gICAgICAsIGNsYXNzIEZhY2FkZTIKLSAgICAgICwgY2xhc3MgUmV0dXJuCi0gICAgPgotICAgIHN0cnVjdCBlbmFibGVfaWZfaW50ZXJvcGVyYWJsZQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl88Ci0gICAgICAgICAgICBtcGw6Om9yXzwKLSAgICAgICAgICAgICAgICBpc19jb252ZXJ0aWJsZTxGYWNhZGUxLCBGYWNhZGUyPgotICAgICAgICAgICAgICAsIGlzX2NvbnZlcnRpYmxlPEZhY2FkZTIsIEZhY2FkZTE+Ci0gICAgICAgICAgICA+Ci0gICAgICAgICAgLCBSZXR1cm4KLSAgICAgICAgICAsIGludFszXQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsgICAgICAgIAotI2Vsc2UKLSAgICAgIDogOjpuZG5ib29zdDo6aXRlcmF0b3JzOjplbmFibGVfaWY8Ci0gICAgICAgICAgIG1wbDo6b3JfPAotICAgICAgICAgICAgICAgaXNfY29udmVydGlibGU8RmFjYWRlMSwgRmFjYWRlMj4KLSAgICAgICAgICAgICAsIGlzX2NvbnZlcnRpYmxlPEZhY2FkZTIsIEZhY2FkZTE+Ci0gICAgICAgICAgID4KLSAgICAgICAgICwgUmV0dXJuCi0gICAgICAgID4KLSAgICB7fTsKLSNlbmRpZiAKLQotICAgIC8vCi0gICAgLy8gR2VuZXJhdGVzIGFzc29jaWF0ZWQgdHlwZXMgZm9yIGFuIGl0ZXJhdG9yX2ZhY2FkZSB3aXRoIHRoZQotICAgIC8vIGdpdmVuIHBhcmFtZXRlcnMuCi0gICAgLy8KLSAgICB0ZW1wbGF0ZSA8Ci0gICAgICAgIGNsYXNzIFZhbHVlUGFyYW0KLSAgICAgICwgY2xhc3MgQ2F0ZWdvcnlPclRyYXZlcnNhbAotICAgICAgLCBjbGFzcyBSZWZlcmVuY2UgCi0gICAgICAsIGNsYXNzIERpZmZlcmVuY2UKLSAgICA+Ci0gICAgc3RydWN0IGl0ZXJhdG9yX2ZhY2FkZV90eXBlcwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBmYWNhZGVfaXRlcmF0b3JfY2F0ZWdvcnk8Ci0gICAgICAgICAgICBDYXRlZ29yeU9yVHJhdmVyc2FsLCBWYWx1ZVBhcmFtLCBSZWZlcmVuY2UKLSAgICAgICAgPjo6dHlwZSBpdGVyYXRvcl9jYXRlZ29yeTsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVtb3ZlX2NvbnN0PFZhbHVlUGFyYW0+Ojp0eXBlIHZhbHVlX3R5cGU7Ci0gICAgICAgIAotICAgICAgICAvLyBOb3QgdGhlIHJlYWwgYXNzb2NpYXRlZCBwb2ludGVyIHR5cGUKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjppdGVyYXRvcl93cml0YWJpbGl0eV9kaXNhYmxlZDxWYWx1ZVBhcmFtLFJlZmVyZW5jZT4KLSAgICAgICAgICAsIGFkZF9wb2ludGVyPGNvbnN0IHZhbHVlX3R5cGU+Ci0gICAgICAgICAgLCBhZGRfcG9pbnRlcjx2YWx1ZV90eXBlPgotICAgICAgICA+Ojp0eXBlIHBvaW50ZXI7Ci0gICAgICAKLSMgaWYgZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICYmIChORE5CT09TVF9XT1JLQVJPVU5EKF9TVExQT1JUX1ZFUlNJT04sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDQ1MikpICAgICAgICAgICAgICBcCi0gICAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfRElOS1VNV0FSRV9TVERMSUIsIE5ETkJPT1NUX1RFU1RFRF9BVCgzMTApKSkgICAgIFwKLSAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX1JXU1REX1ZFUiwgTkROQk9PU1RfVEVTVEVEX0FUKDB4MjAxMDEpKSAgICAgICAgICAgICAgXAotICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfRElOS1VNV0FSRV9TVERMSUIsIDw9IDMxMCkKLQotICAgICAgICAvLyBUbyBpbnRlcm9wZXJhdGUgd2l0aCBzb21lIGJyb2tlbiBsaWJyYXJ5L2NvbXBpbGVyCi0gICAgICAgIC8vIGNvbWJpbmF0aW9ucywgdXNlci1kZWZpbmVkIGl0ZXJhdG9ycyBtdXN0IGJlIGRlcml2ZWQgZnJvbQotICAgICAgICAvLyBzdGQ6Oml0ZXJhdG9yLiAgSXQgaXMgcG9zc2libGUgdG8gaW1wbGVtZW50IGEgc3RhbmRhcmQKLSAgICAgICAgLy8gbGlicmFyeSBmb3IgYnJva2VuIGNvbXBpbGVycyB3aXRob3V0IHRoaXMgbGltaXRhdGlvbi4KLSMgIGRlZmluZSBORE5CT09TVF9JVEVSQVRPUl9GQUNBREVfTkVFRFNfSVRFUkFUT1JfQkFTRSAxCi0KLSAgICAgICAgdHlwZWRlZgotICAgICAgICAgICBpdGVyYXRvcjxpdGVyYXRvcl9jYXRlZ29yeSwgdmFsdWVfdHlwZSwgRGlmZmVyZW5jZSwgcG9pbnRlciwgUmVmZXJlbmNlPgotICAgICAgICBiYXNlOwotIyBlbmRpZgotICAgIH07Ci0KLSAgICAvLyBpdGVyYXRvcnMgd2hvc2UgZGVyZWZlcmVuY2Ugb3BlcmF0b3JzIHJlZmVyZW5jZSB0aGUgc2FtZSB2YWx1ZQotICAgIC8vIGZvciBhbGwgaXRlcmF0b3JzIGludG8gdGhlIHNhbWUgc2VxdWVuY2UgKGxpa2UgbWFueSBpbnB1dAotICAgIC8vIGl0ZXJhdG9ycykgbmVlZCBoZWxwIHdpdGggdGhlaXIgcG9zdGZpeCArKzogdGhlIHJlZmVyZW5jZWQKLSAgICAvLyB2YWx1ZSBtdXN0IGJlIHJlYWQgYW5kIHN0b3JlZCBhd2F5IGJlZm9yZSB0aGUgaW5jcmVtZW50IG9jY3VycwotICAgIC8vIHNvIHRoYXQgKmErKyB5aWVsZHMgdGhlIG9yaWdpbmFsbHkgcmVmZXJlbmNlZCBlbGVtZW50IGFuZCBub3QKLSAgICAvLyB0aGUgbmV4dCBvbmUuCi0gICAgdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yPgotICAgIGNsYXNzIHBvc3RmaXhfaW5jcmVtZW50X3Byb3h5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3ZhbHVlPEl0ZXJhdG9yPjo6dHlwZSB2YWx1ZV90eXBlOwotICAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IHBvc3RmaXhfaW5jcmVtZW50X3Byb3h5KEl0ZXJhdG9yIGNvbnN0JiB4KQotICAgICAgICAgIDogc3RvcmVkX3ZhbHVlKCp4KQotICAgICAgICB7fQotCi0gICAgICAgIC8vIFJldHVybmluZyBhIG11dGFibGUgcmVmZXJlbmNlIGFsbG93cyBub25zZW5zZSBsaWtlCi0gICAgICAgIC8vICgqcisrKS5tdXRhdGUoKSwgYnV0IGl0IGltcG9zZXMgZmV3ZXIgYXNzdW1wdGlvbnMgYWJvdXQgdGhlCi0gICAgICAgIC8vIGJlaGF2aW9yIG9mIHRoZSB2YWx1ZV90eXBlLiAgSW4gcGFydGljdWxhciwgcmVjYWxsIHRoYXQKLSAgICAgICAgLy8gKCpyKS5tdXRhdGUoKSBpcyBsZWdhbCBpZiBvcGVyYXRvciogcmV0dXJucyBieSB2YWx1ZS4KLSAgICAgICAgdmFsdWVfdHlwZSYKLSAgICAgICAgb3BlcmF0b3IqKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMtPnN0b3JlZF92YWx1ZTsKLSAgICAgICAgfQotICAgICBwcml2YXRlOgotICAgICAgICBtdXRhYmxlIHZhbHVlX3R5cGUgc3RvcmVkX3ZhbHVlOwotICAgIH07Ci0gICAgCi0gICAgLy8KLSAgICAvLyBJbiBnZW5lcmFsLCB3ZSBjYW4ndCBkZXRlcm1pbmUgdGhhdCBzdWNoIGFuIGl0ZXJhdG9yIGlzbid0Ci0gICAgLy8gd3JpdGFibGUgLS0gd2UgYWxzbyBuZWVkIHRvIHN0b3JlIGEgY29weSBvZiB0aGUgb2xkIGl0ZXJhdG9yIHNvCi0gICAgLy8gdGhhdCBpdCBjYW4gYmUgd3JpdHRlbiBpbnRvLgotICAgIHRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvcj4KLSAgICBjbGFzcyB3cml0YWJsZV9wb3N0Zml4X2luY3JlbWVudF9wcm94eQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl92YWx1ZTxJdGVyYXRvcj46OnR5cGUgdmFsdWVfdHlwZTsKLSAgICAgcHVibGljOgotICAgICAgICBleHBsaWNpdCB3cml0YWJsZV9wb3N0Zml4X2luY3JlbWVudF9wcm94eShJdGVyYXRvciBjb25zdCYgeCkKLSAgICAgICAgICA6IHN0b3JlZF92YWx1ZSgqeCkKLSAgICAgICAgICAsIHN0b3JlZF9pdGVyYXRvcih4KQotICAgICAgICB7fQotCi0gICAgICAgIC8vIERlcmVmZXJlbmNpbmcgbXVzdCByZXR1cm4gYSBwcm94eSBzbyB0aGF0IGJvdGggKnIrKyA9IG8gYW5kCi0gICAgICAgIC8vIHZhbHVlX3R5cGUoKnIrKykgY2FuIHdvcmsuICBJbiB0aGlzIGNhc2UsICpyIGlzIHRoZSBzYW1lIGFzCi0gICAgICAgIC8vICpyKyssIGFuZCB0aGUgY29udmVyc2lvbiBvcGVyYXRvciBiZWxvdyBpcyB1c2VkIHRvIGVuc3VyZQotICAgICAgICAvLyByZWFkYWJpbGl0eS4KLSAgICAgICAgd3JpdGFibGVfcG9zdGZpeF9pbmNyZW1lbnRfcHJveHkgY29uc3QmCi0gICAgICAgIG9wZXJhdG9yKigpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFByb3ZpZGVzIHJlYWRhYmlsaXR5IG9mICpyKysKLSAgICAgICAgb3BlcmF0b3IgdmFsdWVfdHlwZSYoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RvcmVkX3ZhbHVlOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gUHJvdmlkZXMgd3JpdGFiaWxpdHkgb2YgKnIrKwotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgVCBjb25zdCYgb3BlcmF0b3I9KFQgY29uc3QmIHgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgICp0aGlzLT5zdG9yZWRfaXRlcmF0b3IgPSB4OwotICAgICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBUaGlzIG92ZXJsb2FkIGp1c3QgaW4gY2FzZSBvbmx5IG5vbi1jb25zdCBvYmplY3RzIGFyZSB3cml0YWJsZQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgVCYgb3BlcmF0b3I9KFQmIHgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgICp0aGlzLT5zdG9yZWRfaXRlcmF0b3IgPSB4OwotICAgICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBQcm92aWRlcyBYKHIrKykKLSAgICAgICAgb3BlcmF0b3IgSXRlcmF0b3IgY29uc3QmKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0b3JlZF9pdGVyYXRvcjsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgbXV0YWJsZSB2YWx1ZV90eXBlIHN0b3JlZF92YWx1ZTsKLSAgICAgICAgSXRlcmF0b3Igc3RvcmVkX2l0ZXJhdG9yOwotICAgIH07Ci0KLSMgaWZkZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFJlZmVyZW5jZSwgY2xhc3MgVmFsdWU+Ci0gICAgc3RydWN0IGlzX25vbl9wcm94eV9yZWZlcmVuY2VfaW1wbAotICAgIHsKLSAgICAgICAgc3RhdGljIFJlZmVyZW5jZSByOwotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFI+Ci0gICAgICAgIHN0YXRpYyB0eXBlbmFtZSBtcGw6OmlmXzwKLSAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPAotICAgICAgICAgICAgICAgIFIgY29uc3Qgdm9sYXRpbGUqCi0gICAgICAgICAgICAgICwgVmFsdWUgY29uc3Qgdm9sYXRpbGUqCi0gICAgICAgICAgICA+Ci0gICAgICAgICAgLCBjaGFyWzFdCi0gICAgICAgICAgLCBjaGFyWzJdCi0gICAgICAgID46OnR5cGUmIGhlbHBlcihSIGNvbnN0Jik7Ci0gICAgICAgIAotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBzaXplb2YoaGVscGVyKHIpKSA9PSAxKTsKLSAgICB9OwotICAgICAgICAKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgUmVmZXJlbmNlLCBjbGFzcyBWYWx1ZT4KLSAgICBzdHJ1Y3QgaXNfbm9uX3Byb3h5X3JlZmVyZW5jZQotICAgICAgOiBtcGw6OmJvb2xfPAotICAgICAgICAgICAgaXNfbm9uX3Byb3h5X3JlZmVyZW5jZV9pbXBsPFJlZmVyZW5jZSwgVmFsdWU+Ojp2YWx1ZQotICAgICAgICA+Ci0gICAge307Ci0jIGVsc2UgCi0gICAgdGVtcGxhdGUgPGNsYXNzIFJlZmVyZW5jZSwgY2xhc3MgVmFsdWU+Ci0gICAgc3RydWN0IGlzX25vbl9wcm94eV9yZWZlcmVuY2UKLSAgICAgIDogaXNfY29udmVydGlibGU8Ci0gICAgICAgICAgICB0eXBlbmFtZSByZW1vdmVfcmVmZXJlbmNlPFJlZmVyZW5jZT46OnR5cGUKLSAgICAgICAgICAgIGNvbnN0IHZvbGF0aWxlKgotICAgICAgICAgICwgVmFsdWUgY29uc3Qgdm9sYXRpbGUqCi0gICAgICAgID4KLSAgICB7fTsKLSMgZW5kaWYgCi0gICAgICAgIAotICAgIC8vIEEgbWV0YWZ1bmN0aW9uIHRvIGNob29zZSB0aGUgcmVzdWx0IHR5cGUgb2YgcG9zdGZpeCArKwotICAgIC8vCi0gICAgLy8gQmVjYXVzZSB0aGUgQysrOTggaW5wdXQgaXRlcmF0b3IgcmVxdWlyZW1lbnRzIHNheSB0aGF0ICpyKysgaGFzCi0gICAgLy8gdHlwZSBUICh2YWx1ZV90eXBlKSwgaW1wbGVtZW50YXRpb25zIG9mIHNvbWUgc3RhbmRhcmQKLSAgICAvLyBhbGdvcml0aG1zIGxpa2UgbGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmUgbWF5IHVzZSBjb25zdHJ1Y3Rpb25zCi0gICAgLy8gbGlrZToKLSAgICAvLwotICAgIC8vICAgICAgICAgICpyKysgPCAqcysrCi0gICAgLy8KLSAgICAvLyBJZiAqcisrIHJldHVybnMgYSBwcm94eSAoYXMgcmVxdWlyZWQgaWYgciBpcyB3cml0YWJsZSBidXQgbm90Ci0gICAgLy8gbXVsdGlwYXNzKSwgdGhpcyBzb3J0IG9mIGV4cHJlc3Npb24gd2lsbCBmYWlsIHVubGVzcyB0aGUgcHJveHkKLSAgICAvLyBzdXBwb3J0cyB0aGUgb3BlcmF0b3I8LiAgU2luY2UgdGhlcmUgYXJlIGFueSBudW1iZXIgb2Ygc3VjaAotICAgIC8vIG9wZXJhdGlvbnMsIHdlJ3JlIG5vdCBnb2luZyB0byB0cnkgdG8gc3VwcG9ydCB0aGVtLiAgVGhlcmVmb3JlLAotICAgIC8vIGV2ZW4gaWYgcisrIHJldHVybnMgYSBwcm94eSwgKnIrKyB3aWxsIG9ubHkgcmV0dXJuIGEgcHJveHkgaWYKLSAgICAvLyAqciBhbHNvIHJldHVybnMgYSBwcm94eS4KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3IsIGNsYXNzIFZhbHVlLCBjbGFzcyBSZWZlcmVuY2UsIGNsYXNzIENhdGVnb3J5T3JUcmF2ZXJzYWw+Ci0gICAgc3RydWN0IHBvc3RmaXhfaW5jcmVtZW50X3Jlc3VsdAotICAgICAgOiBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICBtcGw6OmFuZF88Ci0gICAgICAgICAgICAgICAgLy8gQSBwcm94eSBpcyBvbmx5IG5lZWRlZCBmb3IgcmVhZGFibGUgaXRlcmF0b3JzCi0gICAgICAgICAgICAgICAgaXNfY29udmVydGlibGU8UmVmZXJlbmNlLFZhbHVlIGNvbnN0Jj4KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAvLyBObyBtdWx0aXBhc3MgaXRlcmF0b3IgY2FuIGhhdmUgdmFsdWVzIHRoYXQgZGlzYXBwZWFyCi0gICAgICAgICAgICAgICAgLy8gYmVmb3JlIHBvc2l0aW9ucyBjYW4gYmUgcmUtdmlzaXRlZAotICAgICAgICAgICAgICAsIG1wbDo6bm90XzwKLSAgICAgICAgICAgICAgICAgICAgaXNfY29udmVydGlibGU8Ci0gICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBpdGVyYXRvcl9jYXRlZ29yeV90b190cmF2ZXJzYWw8Q2F0ZWdvcnlPclRyYXZlcnNhbD46OnR5cGUKLSAgICAgICAgICAgICAgICAgICAgICAsIGZvcndhcmRfdHJhdmVyc2FsX3RhZwotICAgICAgICAgICAgICAgICAgICA+Ci0gICAgICAgICAgICAgICAgPgotICAgICAgICAgICAgPgotICAgICAgICAgICwgbXBsOjppZl88Ci0gICAgICAgICAgICAgICAgaXNfbm9uX3Byb3h5X3JlZmVyZW5jZTxSZWZlcmVuY2UsVmFsdWU+Ci0gICAgICAgICAgICAgICwgcG9zdGZpeF9pbmNyZW1lbnRfcHJveHk8SXRlcmF0b3I+Ci0gICAgICAgICAgICAgICwgd3JpdGFibGVfcG9zdGZpeF9pbmNyZW1lbnRfcHJveHk8SXRlcmF0b3I+Ci0gICAgICAgICAgICA+Ci0gICAgICAgICAgLCBtcGw6OmlkZW50aXR5PEl0ZXJhdG9yPgotICAgICAgICA+Ci0gICAge307Ci0KLSAgICAvLyBvcGVyYXRvci0+KCkgbmVlZHMgc3BlY2lhbCBzdXBwb3J0IGZvciBpbnB1dCBpdGVyYXRvcnMgdG8gc3RyaWN0bHkgbWVldCB0aGUKLSAgICAvLyBzdGFuZGFyZCdzIHJlcXVpcmVtZW50cy4gSWYgKmkgaXMgbm90IGEgcmVmZXJlbmNlIHR5cGUsIHdlIG11c3Qgc3RpbGwKLSAgICAvLyBwcm9kdWNlIGFuIGx2YWx1ZSB0byB3aGljaCBhIHBvaW50ZXIgY2FuIGJlIGZvcm1lZC4gIFdlIGRvIHRoYXQgYnkKLSAgICAvLyByZXR1cm5pbmcgYSBwcm94eSBvYmplY3QgY29udGFpbmluZyBhbiBpbnN0YW5jZSBvZiB0aGUgcmVmZXJlbmNlIG9iamVjdC4KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgUmVmZXJlbmNlLCBjbGFzcyBQb2ludGVyPgotICAgIHN0cnVjdCBvcGVyYXRvcl9hcnJvd19kaXNwYXRjaCAvLyBwcm94eSByZWZlcmVuY2VzCi0gICAgewotICAgICAgICBzdHJ1Y3QgcHJveHkKLSAgICAgICAgewotICAgICAgICAgICAgZXhwbGljaXQgcHJveHkoUmVmZXJlbmNlIGNvbnN0ICYgeCkgOiBtX3JlZih4KSB7fQotICAgICAgICAgICAgUmVmZXJlbmNlKiBvcGVyYXRvci0+KCkgeyByZXR1cm4gbmRuYm9vc3Q6OmFkZHJlc3NvZihtX3JlZik7IH0KLSAgICAgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgbmVlZGVkIGZvciBNV0NXIGFuZCBCQ0MsIHdoaWNoIHdvbid0IGNhbGwKLSAgICAgICAgICAgIC8vIG9wZXJhdG9yLT4gYWdhaW4gYXV0b21hdGljYWxseSBwZXIgMTMuMy4xLjIgcGFyYSA4Ci0gICAgICAgICAgICBvcGVyYXRvciBSZWZlcmVuY2UqKCkgeyByZXR1cm4gbmRuYm9vc3Q6OmFkZHJlc3NvZihtX3JlZik7IH0KLSAgICAgICAgICAgIFJlZmVyZW5jZSBtX3JlZjsKLSAgICAgICAgfTsKLSAgICAgICAgdHlwZWRlZiBwcm94eSByZXN1bHRfdHlwZTsKLSAgICAgICAgc3RhdGljIHJlc3VsdF90eXBlIGFwcGx5KFJlZmVyZW5jZSBjb25zdCAmIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHRfdHlwZSh4KTsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9pbnRlcj4KLSAgICBzdHJ1Y3Qgb3BlcmF0b3JfYXJyb3dfZGlzcGF0Y2g8VCYsIFBvaW50ZXI+IC8vICJyZWFsIiByZWZlcmVuY2VzCi0gICAgewotICAgICAgICB0eXBlZGVmIFBvaW50ZXIgcmVzdWx0X3R5cGU7Ci0gICAgICAgIHN0YXRpYyByZXN1bHRfdHlwZSBhcHBseShUJiB4KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OmFkZHJlc3NvZih4KTsKLSAgICAgICAgfQotICAgIH07Ci0KLSMgaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0gICAgLy8gRGVhbCB3aXRoIEVUSQotICAgIHRlbXBsYXRlPD4KLSAgICBzdHJ1Y3Qgb3BlcmF0b3JfYXJyb3dfZGlzcGF0Y2g8aW50LCBpbnQ+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCByZXN1bHRfdHlwZTsKLSAgICB9OwotIyBlbmRpZgotCi0gICAgLy8gQSBwcm94eSByZXR1cm4gdHlwZSBmb3Igb3BlcmF0b3JbXSwgbmVlZGVkIHRvIGRlYWwgd2l0aAotICAgIC8vIGl0ZXJhdG9ycyB0aGF0IG1heSBpbnZhbGlkYXRlIHJlZmVyZW50cyB1cG9uIGRlc3RydWN0aW9uLgotICAgIC8vIENvbnNpZGVyIHRoZSB0ZW1wb3JhcnkgaXRlcmF0b3IgaW4gKihhICsgbikKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3I+Ci0gICAgY2xhc3Mgb3BlcmF0b3JfYnJhY2tldHNfcHJveHkKLSAgICB7Ci0gICAgICAgIC8vIEl0ZXJhdG9yIGlzIGFjdHVhbGx5IGFuIGl0ZXJhdG9yX2ZhY2FkZSwgc28gd2UgZG8gbm90IGhhdmUgdG8KLSAgICAgICAgLy8gZ28gdGhyb3VnaCBpdGVyYXRvcl90cmFpdHMgdG8gYWNjZXNzIHRoZSB0cmFpdHMuCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3I6OnJlZmVyZW5jZSAgcmVmZXJlbmNlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXJhdG9yOjp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0KLSAgICAgcHVibGljOgotICAgICAgICBvcGVyYXRvcl9icmFja2V0c19wcm94eShJdGVyYXRvciBjb25zdCYgaXRlcikKLSAgICAgICAgICA6IG1faXRlcihpdGVyKQotICAgICAgICB7fQotCi0gICAgICAgIG9wZXJhdG9yIHJlZmVyZW5jZSgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAqbV9pdGVyOwotICAgICAgICB9Ci0KLSAgICAgICAgb3BlcmF0b3JfYnJhY2tldHNfcHJveHkmIG9wZXJhdG9yPSh2YWx1ZV90eXBlIGNvbnN0JiB2YWwpCi0gICAgICAgIHsKLSAgICAgICAgICAgICptX2l0ZXIgPSB2YWw7Ci0gICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIH0KLQotICAgICBwcml2YXRlOgotICAgICAgICBJdGVyYXRvciBtX2l0ZXI7Ci0gICAgfTsKLQotICAgIC8vIEEgbWV0YWZ1bmN0aW9uIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIG9wZXJhdG9yW10gbXVzdCByZXR1cm4gYQotICAgIC8vIHByb3h5LCBvciB3aGV0aGVyIGl0IGNhbiBzaW1wbHkgcmV0dXJuIGEgY29weSBvZiB0aGUgdmFsdWVfdHlwZS4KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVmFsdWVUeXBlLCBjbGFzcyBSZWZlcmVuY2U+Ci0gICAgc3RydWN0IHVzZV9vcGVyYXRvcl9icmFja2V0c19wcm94eQotICAgICAgOiBtcGw6Om5vdF88Ci0gICAgICAgICAgICBtcGw6OmFuZF88Ci0gICAgICAgICAgICAgICAgLy8gUmVhbGx5IHdlIHdhbnQgYW4gaXNfY29weV9jb25zdHJ1Y3RpYmxlIHRyYWl0IGhlcmUsCi0gICAgICAgICAgICAgICAgLy8gYnV0IGlzX1BPRCB3aWxsIGhhdmUgdG8gc3VmZmljZSBpbiB0aGUgbWVhbnRpbWUuCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX1BPRDxWYWx1ZVR5cGU+Ci0gICAgICAgICAgICAgICwgaXRlcmF0b3Jfd3JpdGFiaWxpdHlfZGlzYWJsZWQ8VmFsdWVUeXBlLFJlZmVyZW5jZT4KLSAgICAgICAgICAgID4KLSAgICAgICAgPgotICAgIHt9OwotICAgICAgICAKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3IsIGNsYXNzIFZhbHVlLCBjbGFzcyBSZWZlcmVuY2U+Ci0gICAgc3RydWN0IG9wZXJhdG9yX2JyYWNrZXRzX3Jlc3VsdAotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzwKLSAgICAgICAgICAgIHVzZV9vcGVyYXRvcl9icmFja2V0c19wcm94eTxWYWx1ZSxSZWZlcmVuY2U+Ci0gICAgICAgICAgLCBvcGVyYXRvcl9icmFja2V0c19wcm94eTxJdGVyYXRvcj4KLSAgICAgICAgICAsIFZhbHVlCi0gICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yPgotICAgIG9wZXJhdG9yX2JyYWNrZXRzX3Byb3h5PEl0ZXJhdG9yPiBtYWtlX29wZXJhdG9yX2JyYWNrZXRzX3Jlc3VsdChJdGVyYXRvciBjb25zdCYgaXRlciwgbXBsOjp0cnVlXykKLSAgICB7Ci0gICAgICAgIHJldHVybiBvcGVyYXRvcl9icmFja2V0c19wcm94eTxJdGVyYXRvcj4oaXRlcik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yPgotICAgIHR5cGVuYW1lIEl0ZXJhdG9yOjp2YWx1ZV90eXBlIG1ha2Vfb3BlcmF0b3JfYnJhY2tldHNfcmVzdWx0KEl0ZXJhdG9yIGNvbnN0JiBpdGVyLCBtcGw6OmZhbHNlXykKLSAgICB7Ci0gICAgICByZXR1cm4gKml0ZXI7Ci0gICAgfQotCi0gICAgc3RydWN0IGNob29zZV9kaWZmZXJlbmNlX3R5cGUKLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBJMSwgY2xhc3MgSTI+Ci0gICAgICAgIHN0cnVjdCBhcHBseQotICAgICAgICAgIDoKLSMgaWZkZWYgTkROQk9PU1RfTk9fT05FX1dBWV9JVEVSQVRPUl9JTlRFUk9QCi0gICAgICAgICAgaXRlcmF0b3JfZGlmZmVyZW5jZTxJMT4KLSMgZWxpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSAgICAgICAgICBtcGw6OmlmXzwKLSAgICAgICAgICAgICAgaXNfY29udmVydGlibGU8STIsSTE+Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIEkxOjpkaWZmZXJlbmNlX3R5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgSTI6OmRpZmZlcmVuY2VfdHlwZQotICAgICAgICAgID4KLSMgZWxzZSAKLSAgICAgICAgICBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPEkyLEkxPgotICAgICAgICAgICAgLCBpdGVyYXRvcl9kaWZmZXJlbmNlPEkxPgotICAgICAgICAgICAgLCBpdGVyYXRvcl9kaWZmZXJlbmNlPEkyPgotICAgICAgICAgID4KLSMgZW5kaWYgCi0gICAgICAgIHt9OwotCi0gICAgfTsKLSAgfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLQotICAvLyBNYWNyb3Mgd2hpY2ggZGVzY3JpYmUgdGhlIGRlY2xhcmF0aW9ucyBvZiBiaW5hcnkgb3BlcmF0b3JzCi0jIGlmZGVmIE5ETkJPT1NUX05PX1NUUklDVF9JVEVSQVRPUl9JTlRFUk9QRVJBQklMSVRZCi0jICBkZWZpbmUgTkROQk9PU1RfSVRFUkFUT1JfRkFDQURFX0lOVEVST1BfSEVBRChwcmVmaXgsIG9wLCByZXN1bHRfdHlwZSkgICAgICAgXAotICAgIHRlbXBsYXRlIDwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgY2xhc3MgRGVyaXZlZDEsIGNsYXNzIFYxLCBjbGFzcyBUQzEsIGNsYXNzIFJlZmVyZW5jZTEsIGNsYXNzIERpZmZlcmVuY2UxIFwKLSAgICAgICwgY2xhc3MgRGVyaXZlZDIsIGNsYXNzIFYyLCBjbGFzcyBUQzIsIGNsYXNzIFJlZmVyZW5jZTIsIGNsYXNzIERpZmZlcmVuY2UyIFwKLSAgICA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgcHJlZml4IHR5cGVuYW1lIG1wbDo6YXBwbHkyPHJlc3VsdF90eXBlLERlcml2ZWQxLERlcml2ZWQyPjo6dHlwZSBcCi0gICAgb3BlcmF0b3Igb3AoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpdGVyYXRvcl9mYWNhZGU8RGVyaXZlZDEsIFYxLCBUQzEsIFJlZmVyZW5jZTEsIERpZmZlcmVuY2UxPiBjb25zdCYgbGhzICAgXAotICAgICAgLCBpdGVyYXRvcl9mYWNhZGU8RGVyaXZlZDIsIFYyLCBUQzIsIFJlZmVyZW5jZTIsIERpZmZlcmVuY2UyPiBjb25zdCYgcmhzKQotIyBlbHNlIAotIyAgZGVmaW5lIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9JTlRFUk9QX0hFQUQocHJlZml4LCBvcCwgcmVzdWx0X3R5cGUpICAgXAotICAgIHRlbXBsYXRlIDwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBjbGFzcyBEZXJpdmVkMSwgY2xhc3MgVjEsIGNsYXNzIFRDMSwgY2xhc3MgUmVmZXJlbmNlMSwgY2xhc3MgRGlmZmVyZW5jZTEgXAotICAgICAgLCBjbGFzcyBEZXJpdmVkMiwgY2xhc3MgVjIsIGNsYXNzIFRDMiwgY2xhc3MgUmVmZXJlbmNlMiwgY2xhc3MgRGlmZmVyZW5jZTIgXAotICAgID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHByZWZpeCB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjplbmFibGVfaWZfaW50ZXJvcGVyYWJsZTwgICAgICAgICAgICAgXAotICAgICAgICBEZXJpdmVkMSwgRGVyaXZlZDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgLCB0eXBlbmFtZSBtcGw6OmFwcGx5MjxyZXN1bHRfdHlwZSxEZXJpdmVkMSxEZXJpdmVkMj46OnR5cGUgICAgICAgXAotICAgID46OnR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIG9wZXJhdG9yIG9wKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpdGVyYXRvcl9mYWNhZGU8RGVyaXZlZDEsIFYxLCBUQzEsIFJlZmVyZW5jZTEsIERpZmZlcmVuY2UxPiBjb25zdCYgbGhzICAgXAotICAgICAgLCBpdGVyYXRvcl9mYWNhZGU8RGVyaXZlZDIsIFYyLCBUQzIsIFJlZmVyZW5jZTIsIERpZmZlcmVuY2UyPiBjb25zdCYgcmhzKQotIyBlbmRpZiAKLQotIyAgZGVmaW5lIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9QTFVTX0hFQUQocHJlZml4LGFyZ3MpICAgICAgICAgICAgICBcCi0gICAgdGVtcGxhdGUgPGNsYXNzIERlcml2ZWQsIGNsYXNzIFYsIGNsYXNzIFRDLCBjbGFzcyBSLCBjbGFzcyBEPiAgIFwKLSAgICBwcmVmaXggRGVyaXZlZCBvcGVyYXRvcisgYXJncwotCi0gIC8vCi0gIC8vIEhlbHBlciBjbGFzcyBmb3IgZ3JhbnRpbmcgYWNjZXNzIHRvIHRoZSBpdGVyYXRvciBjb3JlIGludGVyZmFjZS4KLSAgLy8KLSAgLy8gVGhlIHNpbXBsZSBjb3JlIGludGVyZmFjZSBpcyB1c2VkIGJ5IGl0ZXJhdG9yX2ZhY2FkZS4gVGhlIGNvcmUKLSAgLy8gaW50ZXJmYWNlIG9mIGEgdXNlci9saWJyYXJ5IGRlZmluZWQgaXRlcmF0b3IgdHlwZSBzaG91bGQgbm90IGJlIG1hZGUgcHVibGljCi0gIC8vIHNvIHRoYXQgaXQgZG9lcyBub3QgY2x1dHRlciB0aGUgcHVibGljIGludGVyZmFjZS4gSW5zdGVhZCBpdGVyYXRvcl9jb3JlX2FjY2VzcwotICAvLyBzaG91bGQgYmUgbWFkZSBmcmllbmQgc28gdGhhdCBpdGVyYXRvcl9mYWNhZGUgY2FuIGFjY2VzcyB0aGUgY29yZQotICAvLyBpbnRlcmZhY2UgdGhyb3VnaCBpdGVyYXRvcl9jb3JlX2FjY2Vzcy4KLSAgLy8KLSAgY2xhc3MgaXRlcmF0b3JfY29yZV9hY2Nlc3MKLSAgewotIyBpZiBkZWZpbmVkKE5ETkJPT1NUX05PX01FTUJFUl9URU1QTEFURV9GUklFTkRTKSAgICAgICAgICAgICAgICAgIAotICAgICAgLy8gVGFzdGVsZXNzIGFzIHRoaXMgbWF5IHNlZW0sIG1ha2luZyBhbGwgbWVtYmVycyBwdWJsaWMgYWxsb3dzIG1lbWJlciB0ZW1wbGF0ZXMKLSAgICAgIC8vIHRvIHdvcmsgaW4gdGhlIGFic2VuY2Ugb2YgbWVtYmVyIHRlbXBsYXRlIGZyaWVuZHMuCi0gICBwdWJsaWM6Ci0jIGVsc2UKLSAgICAgIAotICAgICAgdGVtcGxhdGUgPGNsYXNzIEksIGNsYXNzIFYsIGNsYXNzIFRDLCBjbGFzcyBSLCBjbGFzcyBEPiBmcmllbmQgY2xhc3MgaXRlcmF0b3JfZmFjYWRlOwotCi0jICBkZWZpbmUgTkROQk9PU1RfSVRFUkFUT1JfRkFDQURFX1JFTEFUSU9OKG9wKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgTkROQk9PU1RfSVRFUkFUT1JfRkFDQURFX0lOVEVST1BfSEVBRChmcmllbmQsb3AsIG5kbmJvb3N0OjpkZXRhaWw6OmFsd2F5c19ib29sMik7Ci0KLSAgICAgIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9SRUxBVElPTig9PSkKLSAgICAgIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9SRUxBVElPTighPSkKLQotICAgICAgTkROQk9PU1RfSVRFUkFUT1JfRkFDQURFX1JFTEFUSU9OKDwpCi0gICAgICBORE5CT09TVF9JVEVSQVRPUl9GQUNBREVfUkVMQVRJT04oPikKLSAgICAgIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9SRUxBVElPTig8PSkKLSAgICAgIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9SRUxBVElPTig+PSkKLSMgIHVuZGVmIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9SRUxBVElPTgotCi0gICAgICBORE5CT09TVF9JVEVSQVRPUl9GQUNBREVfSU5URVJPUF9IRUFEKAotICAgICAgICAgIGZyaWVuZCwgLSwgbmRuYm9vc3Q6OmRldGFpbDo6Y2hvb3NlX2RpZmZlcmVuY2VfdHlwZSkKLSAgICAgIDsKLQotICAgICAgTkROQk9PU1RfSVRFUkFUT1JfRkFDQURFX1BMVVNfSEVBRCgKLSAgICAgICAgICBmcmllbmQgaW5saW5lCi0gICAgICAgICAgLCAoaXRlcmF0b3JfZmFjYWRlPERlcml2ZWQsIFYsIFRDLCBSLCBEPiBjb25zdCYKLSAgICAgICAgICAgLCB0eXBlbmFtZSBEZXJpdmVkOjpkaWZmZXJlbmNlX3R5cGUpCi0gICAgICApCi0gICAgICA7Ci0KLSAgICAgIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9QTFVTX0hFQUQoCi0gICAgICAgICAgZnJpZW5kIGlubGluZQotICAgICAgICAsICh0eXBlbmFtZSBEZXJpdmVkOjpkaWZmZXJlbmNlX3R5cGUKLSAgICAgICAgICAgLCBpdGVyYXRvcl9mYWNhZGU8RGVyaXZlZCwgViwgVEMsIFIsIEQ+IGNvbnN0JikKLSAgICAgICkKLSAgICAgIDsKLQotIyBlbmRpZgotCi0gICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRmFjYWRlPgotICAgICAgc3RhdGljIHR5cGVuYW1lIEZhY2FkZTo6cmVmZXJlbmNlIGRlcmVmZXJlbmNlKEZhY2FkZSBjb25zdCYgZikKLSAgICAgIHsKLSAgICAgICAgICByZXR1cm4gZi5kZXJlZmVyZW5jZSgpOwotICAgICAgfQotCi0gICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRmFjYWRlPgotICAgICAgc3RhdGljIHZvaWQgaW5jcmVtZW50KEZhY2FkZSYgZikKLSAgICAgIHsKLSAgICAgICAgICBmLmluY3JlbWVudCgpOwotICAgICAgfQotCi0gICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRmFjYWRlPgotICAgICAgc3RhdGljIHZvaWQgZGVjcmVtZW50KEZhY2FkZSYgZikKLSAgICAgIHsKLSAgICAgICAgICBmLmRlY3JlbWVudCgpOwotICAgICAgfQotCi0gICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRmFjYWRlMSwgY2xhc3MgRmFjYWRlMj4KLSAgICAgIHN0YXRpYyBib29sIGVxdWFsKEZhY2FkZTEgY29uc3QmIGYxLCBGYWNhZGUyIGNvbnN0JiBmMiwgbXBsOjp0cnVlXykKLSAgICAgIHsKLSAgICAgICAgICByZXR1cm4gZjEuZXF1YWwoZjIpOwotICAgICAgfQotCi0gICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRmFjYWRlMSwgY2xhc3MgRmFjYWRlMj4KLSAgICAgIHN0YXRpYyBib29sIGVxdWFsKEZhY2FkZTEgY29uc3QmIGYxLCBGYWNhZGUyIGNvbnN0JiBmMiwgbXBsOjpmYWxzZV8pCi0gICAgICB7Ci0gICAgICAgICAgcmV0dXJuIGYyLmVxdWFsKGYxKTsKLSAgICAgIH0KLQotICAgICAgdGVtcGxhdGUgPGNsYXNzIEZhY2FkZT4KLSAgICAgIHN0YXRpYyB2b2lkIGFkdmFuY2UoRmFjYWRlJiBmLCB0eXBlbmFtZSBGYWNhZGU6OmRpZmZlcmVuY2VfdHlwZSBuKQotICAgICAgewotICAgICAgICAgIGYuYWR2YW5jZShuKTsKLSAgICAgIH0KLQotICAgICAgdGVtcGxhdGUgPGNsYXNzIEZhY2FkZTEsIGNsYXNzIEZhY2FkZTI+Ci0gICAgICBzdGF0aWMgdHlwZW5hbWUgRmFjYWRlMTo6ZGlmZmVyZW5jZV90eXBlIGRpc3RhbmNlX2Zyb20oCi0gICAgICAgICAgRmFjYWRlMSBjb25zdCYgZjEsIEZhY2FkZTIgY29uc3QmIGYyLCBtcGw6OnRydWVfKQotICAgICAgewotICAgICAgICAgIHJldHVybiAtZjEuZGlzdGFuY2VfdG8oZjIpOwotICAgICAgfQotCi0gICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRmFjYWRlMSwgY2xhc3MgRmFjYWRlMj4KLSAgICAgIHN0YXRpYyB0eXBlbmFtZSBGYWNhZGUyOjpkaWZmZXJlbmNlX3R5cGUgZGlzdGFuY2VfZnJvbSgKLSAgICAgICAgICBGYWNhZGUxIGNvbnN0JiBmMSwgRmFjYWRlMiBjb25zdCYgZjIsIG1wbDo6ZmFsc2VfKQotICAgICAgewotICAgICAgICAgIHJldHVybiBmMi5kaXN0YW5jZV90byhmMSk7Ci0gICAgICB9Ci0KLSAgICAgIC8vCi0gICAgICAvLyBDdXJpb3VzbHkgUmVjdXJyaW5nIFRlbXBsYXRlIGludGVyZmFjZS4KLSAgICAgIC8vCi0gICAgICB0ZW1wbGF0ZSA8Y2xhc3MgSSwgY2xhc3MgViwgY2xhc3MgVEMsIGNsYXNzIFIsIGNsYXNzIEQ+Ci0gICAgICBzdGF0aWMgSSYgZGVyaXZlZChpdGVyYXRvcl9mYWNhZGU8SSxWLFRDLFIsRD4mIGZhY2FkZSkKLSAgICAgIHsKLSAgICAgICAgICByZXR1cm4gKnN0YXRpY19jYXN0PEkqPigmZmFjYWRlKTsKLSAgICAgIH0KLQotICAgICAgdGVtcGxhdGUgPGNsYXNzIEksIGNsYXNzIFYsIGNsYXNzIFRDLCBjbGFzcyBSLCBjbGFzcyBEPgotICAgICAgc3RhdGljIEkgY29uc3QmIGRlcml2ZWQoaXRlcmF0b3JfZmFjYWRlPEksVixUQyxSLEQ+IGNvbnN0JiBmYWNhZGUpCi0gICAgICB7Ci0gICAgICAgICAgcmV0dXJuICpzdGF0aWNfY2FzdDxJIGNvbnN0Kj4oJmZhY2FkZSk7Ci0gICAgICB9Ci0KLSAgIHByaXZhdGU6Ci0gICAgICAvLyBvYmplY3RzIG9mIHRoaXMgY2xhc3MgYXJlIHVzZWxlc3MKLSAgICAgIGl0ZXJhdG9yX2NvcmVfYWNjZXNzKCk7IC8vdW5kZWZpbmVkCi0gIH07Ci0KLSAgLy8KLSAgLy8gaXRlcmF0b3JfZmFjYWRlIC0gdXNlIGFzIGEgcHVibGljIGJhc2UgY2xhc3MgZm9yIGRlZmluaW5nIG5ldwotICAvLyBzdGFuZGFyZC1jb25mb3JtaW5nIGl0ZXJhdG9ycy4KLSAgLy8KLSAgdGVtcGxhdGUgPAotICAgICAgY2xhc3MgRGVyaXZlZCAgICAgICAgICAgICAvLyBUaGUgZGVyaXZlZCBpdGVyYXRvciB0eXBlIGJlaW5nIGNvbnN0cnVjdGVkCi0gICAgLCBjbGFzcyBWYWx1ZQotICAgICwgY2xhc3MgQ2F0ZWdvcnlPclRyYXZlcnNhbAotICAgICwgY2xhc3MgUmVmZXJlbmNlICAgPSBWYWx1ZSYKLSAgICAsIGNsYXNzIERpZmZlcmVuY2UgID0gc3RkOjpwdHJkaWZmX3QKLSAgPgotICBjbGFzcyBpdGVyYXRvcl9mYWNhZGUKLSMgaWZkZWYgTkROQk9PU1RfSVRFUkFUT1JfRkFDQURFX05FRURTX0lURVJBVE9SX0JBU0UKLSAgICA6IHB1YmxpYyBuZG5ib29zdDo6ZGV0YWlsOjppdGVyYXRvcl9mYWNhZGVfdHlwZXM8Ci0gICAgICAgICBWYWx1ZSwgQ2F0ZWdvcnlPclRyYXZlcnNhbCwgUmVmZXJlbmNlLCBEaWZmZXJlbmNlCi0gICAgICA+OjpiYXNlCi0jICB1bmRlZiBORE5CT09TVF9JVEVSQVRPUl9GQUNBREVfTkVFRFNfSVRFUkFUT1JfQkFTRQotIyBlbmRpZgotICB7Ci0gICBwcml2YXRlOgotICAgICAgLy8KLSAgICAgIC8vIEN1cmlvdXNseSBSZWN1cnJpbmcgVGVtcGxhdGUgaW50ZXJmYWNlLgotICAgICAgLy8KLSAgICAgIERlcml2ZWQmIGRlcml2ZWQoKQotICAgICAgewotICAgICAgICAgIHJldHVybiAqc3RhdGljX2Nhc3Q8RGVyaXZlZCo+KHRoaXMpOwotICAgICAgfQotCi0gICAgICBEZXJpdmVkIGNvbnN0JiBkZXJpdmVkKCkgY29uc3QKLSAgICAgIHsKLSAgICAgICAgICByZXR1cm4gKnN0YXRpY19jYXN0PERlcml2ZWQgY29uc3QqPih0aGlzKTsKLSAgICAgIH0KLQotICAgICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjppdGVyYXRvcl9mYWNhZGVfdHlwZXM8Ci0gICAgICAgICBWYWx1ZSwgQ2F0ZWdvcnlPclRyYXZlcnNhbCwgUmVmZXJlbmNlLCBEaWZmZXJlbmNlCi0gICAgICA+IGFzc29jaWF0ZWRfdHlwZXM7Ci0KLSAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6b3BlcmF0b3JfYXJyb3dfZGlzcGF0Y2g8Ci0gICAgICAgICAgUmVmZXJlbmNlCi0gICAgICAgICwgdHlwZW5hbWUgYXNzb2NpYXRlZF90eXBlczo6cG9pbnRlcgotICAgICAgPiBvcGVyYXRvcl9hcnJvd19kaXNwYXRjaF87Ci0KLSAgIHByb3RlY3RlZDoKLSAgICAgIC8vIEZvciB1c2UgYnkgZGVyaXZlZCBjbGFzc2VzCi0gICAgICB0eXBlZGVmIGl0ZXJhdG9yX2ZhY2FkZTxEZXJpdmVkLFZhbHVlLENhdGVnb3J5T3JUcmF2ZXJzYWwsUmVmZXJlbmNlLERpZmZlcmVuY2U+IGl0ZXJhdG9yX2ZhY2FkZV87Ci0gICAgICAKLSAgIHB1YmxpYzoKLQotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhc3NvY2lhdGVkX3R5cGVzOjp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0gICAgICB0eXBlZGVmIFJlZmVyZW5jZSByZWZlcmVuY2U7Ci0gICAgICB0eXBlZGVmIERpZmZlcmVuY2UgZGlmZmVyZW5jZV90eXBlOwotCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIG9wZXJhdG9yX2Fycm93X2Rpc3BhdGNoXzo6cmVzdWx0X3R5cGUgcG9pbnRlcjsKLQotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhc3NvY2lhdGVkX3R5cGVzOjppdGVyYXRvcl9jYXRlZ29yeSBpdGVyYXRvcl9jYXRlZ29yeTsKLQotICAgICAgcmVmZXJlbmNlIG9wZXJhdG9yKigpIGNvbnN0Ci0gICAgICB7Ci0gICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yX2NvcmVfYWNjZXNzOjpkZXJlZmVyZW5jZSh0aGlzLT5kZXJpdmVkKCkpOwotICAgICAgfQotCi0gICAgICBwb2ludGVyIG9wZXJhdG9yLT4oKSBjb25zdAotICAgICAgewotICAgICAgICAgIHJldHVybiBvcGVyYXRvcl9hcnJvd19kaXNwYXRjaF86OmFwcGx5KCp0aGlzLT5kZXJpdmVkKCkpOwotICAgICAgfQotICAgICAgICAKLSAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6Om9wZXJhdG9yX2JyYWNrZXRzX3Jlc3VsdDxEZXJpdmVkLFZhbHVlLHJlZmVyZW5jZT46OnR5cGUKLSAgICAgIG9wZXJhdG9yW10oZGlmZmVyZW5jZV90eXBlIG4pIGNvbnN0Ci0gICAgICB7Ci0gICAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjp1c2Vfb3BlcmF0b3JfYnJhY2tldHNfcHJveHk8VmFsdWUsUmVmZXJlbmNlPiB1c2VfcHJveHk7Ci0gICAgICAgICAgCi0gICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpkZXRhaWw6Om1ha2Vfb3BlcmF0b3JfYnJhY2tldHNfcmVzdWx0PERlcml2ZWQ+KAotICAgICAgICAgICAgICB0aGlzLT5kZXJpdmVkKCkgKyBuCi0gICAgICAgICAgICAsIHVzZV9wcm94eSgpCi0gICAgICAgICAgKTsKLSAgICAgIH0KLQotICAgICAgRGVyaXZlZCYgb3BlcmF0b3IrKygpCi0gICAgICB7Ci0gICAgICAgICAgaXRlcmF0b3JfY29yZV9hY2Nlc3M6OmluY3JlbWVudCh0aGlzLT5kZXJpdmVkKCkpOwotICAgICAgICAgIHJldHVybiB0aGlzLT5kZXJpdmVkKCk7Ci0gICAgICB9Ci0KLSMgaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0gICAgICB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpwb3N0Zml4X2luY3JlbWVudF9yZXN1bHQ8RGVyaXZlZCxWYWx1ZSxSZWZlcmVuY2UsQ2F0ZWdvcnlPclRyYXZlcnNhbD46OnR5cGUKLSAgICAgIG9wZXJhdG9yKysoaW50KQotICAgICAgewotICAgICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnBvc3RmaXhfaW5jcmVtZW50X3Jlc3VsdDxEZXJpdmVkLFZhbHVlLFJlZmVyZW5jZSxDYXRlZ29yeU9yVHJhdmVyc2FsPjo6dHlwZQotICAgICAgICAgIHRtcCh0aGlzLT5kZXJpdmVkKCkpOwotICAgICAgICAgICsrKnRoaXM7Ci0gICAgICAgICAgcmV0dXJuIHRtcDsKLSAgICAgIH0KLSMgZW5kaWYKLSAgICAgIAotICAgICAgRGVyaXZlZCYgb3BlcmF0b3ItLSgpCi0gICAgICB7Ci0gICAgICAgICAgaXRlcmF0b3JfY29yZV9hY2Nlc3M6OmRlY3JlbWVudCh0aGlzLT5kZXJpdmVkKCkpOwotICAgICAgICAgIHJldHVybiB0aGlzLT5kZXJpdmVkKCk7Ci0gICAgICB9Ci0KLSAgICAgIERlcml2ZWQgb3BlcmF0b3ItLShpbnQpCi0gICAgICB7Ci0gICAgICAgICAgRGVyaXZlZCB0bXAodGhpcy0+ZGVyaXZlZCgpKTsKLSAgICAgICAgICAtLSp0aGlzOwotICAgICAgICAgIHJldHVybiB0bXA7Ci0gICAgICB9Ci0KLSAgICAgIERlcml2ZWQmIG9wZXJhdG9yKz0oZGlmZmVyZW5jZV90eXBlIG4pCi0gICAgICB7Ci0gICAgICAgICAgaXRlcmF0b3JfY29yZV9hY2Nlc3M6OmFkdmFuY2UodGhpcy0+ZGVyaXZlZCgpLCBuKTsKLSAgICAgICAgICByZXR1cm4gdGhpcy0+ZGVyaXZlZCgpOwotICAgICAgfQotCi0gICAgICBEZXJpdmVkJiBvcGVyYXRvci09KGRpZmZlcmVuY2VfdHlwZSBuKQotICAgICAgewotICAgICAgICAgIGl0ZXJhdG9yX2NvcmVfYWNjZXNzOjphZHZhbmNlKHRoaXMtPmRlcml2ZWQoKSwgLW4pOwotICAgICAgICAgIHJldHVybiB0aGlzLT5kZXJpdmVkKCk7Ci0gICAgICB9Ci0KLSAgICAgIERlcml2ZWQgb3BlcmF0b3ItKGRpZmZlcmVuY2VfdHlwZSB4KSBjb25zdAotICAgICAgewotICAgICAgICAgIERlcml2ZWQgcmVzdWx0KHRoaXMtPmRlcml2ZWQoKSk7Ci0gICAgICAgICAgcmV0dXJuIHJlc3VsdCAtPSB4OwotICAgICAgfQotCi0jIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotICAgICAgLy8gVGhlcmUgYXBwZWFycyB0byBiZSBhIGJ1ZyB3aGljaCB0cmFzaGVzIHRoZSBkYXRhIG9mIGNsYXNzZXMKLSAgICAgIC8vIGRlcml2ZWQgZnJvbSBpdGVyYXRvcl9mYWNhZGUgd2hlbiB0aGV5IGFyZSBhc3NpZ25lZCB1bmxlc3Mgd2UKLSAgICAgIC8vIGRlZmluZSB0aGlzIGFzc2lnbm1lbnQgb3BlcmF0b3IuICBUaGlzIGJ1ZyBpcyBvbmx5IHJldmVhbGVkCi0gICAgICAvLyAoc28gZmFyKSBpbiBTVExQb3J0IGRlYnVnIG1vZGUsIGJ1dCBpdCdzIGNsZWFybHkgYSBjb2RlZ2VuCi0gICAgICAvLyBwcm9ibGVtIHNvIHdlIGFwcGx5IHRoZSB3b3JrYXJvdW5kIGZvciBhbGwgTVNWQzYuCi0gICAgICBpdGVyYXRvcl9mYWNhZGUmIG9wZXJhdG9yPShpdGVyYXRvcl9mYWNhZGUgY29uc3QmKQotICAgICAgewotICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgIH0KLSMgZW5kaWYKLSAgfTsKLQotIyBpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0gIHRlbXBsYXRlIDxjbGFzcyBJLCBjbGFzcyBWLCBjbGFzcyBUQywgY2xhc3MgUiwgY2xhc3MgRD4KLSAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnBvc3RmaXhfaW5jcmVtZW50X3Jlc3VsdDxJLFYsUixUQz46OnR5cGUKLSAgb3BlcmF0b3IrKygKLSAgICAgIGl0ZXJhdG9yX2ZhY2FkZTxJLFYsVEMsUixEPiYgaQotICAgICwgaW50Ci0gICkKLSAgewotICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6cG9zdGZpeF9pbmNyZW1lbnRfcmVzdWx0PEksVixSLFRDPjo6dHlwZQotICAgICAgICAgIHRtcCgqc3RhdGljX2Nhc3Q8SSo+KCZpKSk7Ci0gICAgICAKLSAgICAgICsraTsKLSAgICAgIAotICAgICAgcmV0dXJuIHRtcDsKLSAgfQotIyBlbmRpZiAKLQotICAKLSAgLy8KLSAgLy8gQ29tcGFyaXNvbiBvcGVyYXRvciBpbXBsZW1lbnRhdGlvbi4gVGhlIGxpYnJhcnkgc3VwcGxpZWQgb3BlcmF0b3JzCi0gIC8vIGVuYWJsZXMgdGhlIHVzZXIgdG8gcHJvdmlkZSBmdWxseSBpbnRlcm9wZXJhYmxlIGNvbnN0YW50L211dGFibGUKLSAgLy8gaXRlcmF0b3IgdHlwZXMuIEkuZS4gdGhlIGxpYnJhcnkgcHJvdmlkZXMgYWxsIG9wZXJhdG9ycwotICAvLyBmb3IgYWxsIG11dGFibGUvY29uc3RhbnQgaXRlcmF0b3IgY29tYmluYXRpb25zLgotICAvLwotICAvLyBOb3RlIHRob3VnaCB0aGF0IHRoaXMga2luZCBvZiBpbnRlcm9wZXJhYmlsaXR5IGZvciBjb25zdGFudC9tdXRhYmxlCi0gIC8vIGl0ZXJhdG9ycyBpcyBub3QgcmVxdWlyZWQgYnkgdGhlIHN0YW5kYXJkIGZvciBjb250YWluZXIgaXRlcmF0b3JzLgotICAvLyBBbGwgdGhlIHN0YW5kYXJkIGFza3MgZm9yIGlzIGEgY29udmVyc2lvbiBtdXRhYmxlIC0+IGNvbnN0YW50LgotICAvLyBNb3N0IHN0YW5kYXJkIGxpYnJhcnkgaW1wbGVtZW50YXRpb25zIG5vd2FkYXlzIHByb3ZpZGUgZnVsbHkgaW50ZXJvcGVyYWJsZQotICAvLyBpdGVyYXRvciBpbXBsZW1lbnRhdGlvbnMsIGJ1dCB0aGVyZSBhcmUgc3RpbGwgaGVhdmlseSB1c2VkIGltcGxlbWVudGF0aW9ucwotICAvLyB0aGF0IGRvIG5vdCBwcm92aWRlIHRoZW0uIChBY3R1YWxseSBpdCdzIGV2ZW4gd29yc2UsIHRoZXkgZG8gbm90IHByb3ZpZGUKLSAgLy8gdGhlbSBmb3Igb25seSBhIGZldyBpdGVyYXRvcnMuKQotICAvLwotICAvLyA/PyBNYXliZSBhIE5ETkJPT1NUX0lURVJBVE9SX05PX0ZVTExfSU5URVJPUEVSQUJJTElUWSBtYWNybyBzaG91bGQKLSAgLy8gICAgZW5hYmxlIHRoZSB1c2VyIHRvIHR1cm4gb2ZmIG1peGVkIHR5cGUgb3BlcmF0b3JzCi0gIC8vCi0gIC8vIFRoZSBsaWJyYXJ5IHRha2VzIGNhcmUgdG8gcHJvdmlkZSBvbmx5IHRoZSByaWdodCBvcGVyYXRvciBvdmVybG9hZHMuCi0gIC8vIEkuZS4KLSAgLy8KLSAgLy8gYm9vbCBvcGVyYXRvcj09KEl0ZXJhdG9yLCAgICAgIEl0ZXJhdG9yKTsKLSAgLy8gYm9vbCBvcGVyYXRvcj09KENvbnN0SXRlcmF0b3IsIEl0ZXJhdG9yKTsKLSAgLy8gYm9vbCBvcGVyYXRvcj09KEl0ZXJhdG9yLCAgICAgIENvbnN0SXRlcmF0b3IpOwotICAvLyBib29sIG9wZXJhdG9yPT0oQ29uc3RJdGVyYXRvciwgQ29uc3RJdGVyYXRvcik7Ci0gIC8vCi0gIC8vICAgLi4uCi0gIC8vCi0gIC8vIEluIG9yZGVyIHRvIGRvIHNvIGl0IHVzZXMgYysrIGlkaW9tcyB0aGF0IGFyZSBub3QgeWV0IHdpZGVseSBzdXBwb3J0ZWQKLSAgLy8gYnkgY3VycmVudCBjb21waWxlciByZWxlYXNlcy4gVGhlIGxpYnJhcnkgaXMgZGVzaWduZWQgdG8gZGVncmFkZSBncmFjZWZ1bGx5Ci0gIC8vIGluIHRoZSBmYWNlIG9mIGNvbXBpbGVyIGRlZmljaWVuY2llcy4gSW4gZ2VuZXJhbCBjb21waWxlcgotICAvLyBkZWZpY2llbmNpZXMgcmVzdWx0IGluIGxlc3Mgc3RyaWN0IGVycm9yIGNoZWNraW5nIGFuZCBtb3JlIG9ic2N1cmUKLSAgLy8gZXJyb3IgbWVzc2FnZXMsIGZ1bmN0aW9uYWxpdHkgaXMgbm90IGFmZmVjdGVkLgotICAvLwotICAvLyBGb3IgZnVsbCBvcGVyYXRpb24gY29tcGlsZXIgc3VwcG9ydCBmb3IgIlN1YnN0aXR1dGlvbiBGYWlsdXJlIElzIE5vdCBBbiBFcnJvciIKLSAgLy8gKGFrYS4gZW5hYmxlX2lmKSBhbmQgbmRuYm9vc3Q6OmlzX2NvbnZlcnRpYmxlIGlzIHJlcXVpcmVkLgotICAvLwotICAvLyBUaGUgZm9sbG93aW5nIHByb2JsZW1zIG9jY3VyIGlmIHN1cHBvcnQgaXMgbGFja2luZy4KLSAgLy8KLSAgLy8gUHNldWRvIGNvZGUKLSAgLy8KLSAgLy8gLS0tLS0tLS0tLS0tLS0tCi0gIC8vIEFkYXB0b3JBPEl0ZXJhdG9yMT4gYTE7Ci0gIC8vIEFkYXB0b3JBPEl0ZXJhdG9yMj4gYTI7Ci0gIC8vCi0gIC8vIC8vIFRoaXMgd2lsbCByZXN1bHQgaW4gYSBubyBzdWNoIG92ZXJsb2FkIGVycm9yIGluIGZ1bGwgb3BlcmF0aW9uCi0gIC8vIC8vIElmIGVuYWJsZV9pZiBvciBpc19jb252ZXJ0aWJsZSBpcyBub3Qgc3VwcG9ydGVkCi0gIC8vIC8vIFRoZSBpbnN0YW50aWF0aW9uIHdpbGwgZmFpbCB3aXRoIGFuIGVycm9yIGhvcGVmdWxseSBpbmRpY2F0aW5nIHRoYXQKLSAgLy8gLy8gdGhlcmUgaXMgbm8gb3BlcmF0b3I9PSBmb3IgSXRlcmF0b3IxLCBJdGVyYXRvcjIKLSAgLy8gLy8gVGhlIHNhbWUgd2lsbCBoYXBwZW4gaWYgbm8gZW5hYmxlX2lmIGlzIHVzZWQgdG8gcmVtb3ZlCi0gIC8vIC8vIGZhbHNlIG92ZXJsb2FkcyBmcm9tIHRoZSB0ZW1wbGF0ZWQgY29udmVyc2lvbiBjb25zdHJ1Y3RvcgotICAvLyAvLyBvZiBBZGFwdG9yQS4KLSAgLy8KLSAgLy8gYTEgPT0gYTI7Ci0gIC8vIC0tLS0tLS0tLS0tLS0tLS0KLSAgLy8KLSAgLy8gQWRhcHRvckE8SXRlcmF0b3I+IGE7Ci0gIC8vIEFkYXB0b3JCPEl0ZXJhdG9yPiBiOwotICAvLwotICAvLyAvLyBUaGlzIHdpbGwgcmVzdWx0IGluIGEgbm8gc3VjaCBvdmVybG9hZCBlcnJvciBpbiBmdWxsIG9wZXJhdGlvbgotICAvLyAvLyBJZiBlbmFibGVfaWYgaXMgbm90IHN1cHBvcnRlZCB0aGUgc3RhdGljIGFzc2VydCB1c2VkCi0gIC8vIC8vIGluIHRoZSBvcGVyYXRvciBpbXBsZW1lbnRhdGlvbiB3aWxsIGZhaWwuCi0gIC8vIC8vIFRoaXMgd2lsbCBhY2NpZGVudGx5IHdvcmsgaWYgaXNfY29udmVydGlibGUgaXMgbm90IHN1cHBvcnRlZC4KLSAgLy8KLSAgLy8gYSA9PSBiOwotICAvLyAtLS0tLS0tLS0tLS0tLS0tCi0gIC8vCi0KLSMgaWZkZWYgTkROQk9PU1RfTk9fT05FX1dBWV9JVEVSQVRPUl9JTlRFUk9QCi0jICBkZWZpbmUgTkROQk9PU1RfSVRFUkFUT1JfQ09OVkVSVElCTEUoYSxiKSBtcGw6OnRydWVfKCkKLSMgZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX0lURVJBVE9SX0NPTlZFUlRJQkxFKGEsYikgaXNfY29udmVydGlibGU8YSxiPigpCi0jIGVuZGlmCi0KLSMgZGVmaW5lIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9JTlRFUk9QKG9wLCByZXN1bHRfdHlwZSwgcmV0dXJuX3ByZWZpeCwgYmFzZV9vcCkgXAotICBORE5CT09TVF9JVEVSQVRPUl9GQUNBREVfSU5URVJPUF9IRUFEKGlubGluZSwgb3AsIHJlc3VsdF90eXBlKSAgICAgICAgICAgICAgICAgICBcCi0gIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIC8qIEZvciB0aG9zZSBjb21waWxlcnMgdGhhdCBkbyBub3Qgc3VwcG9ydCBlbmFibGVfaWYgKi8gICAgICAgICAgICAgICAgICAgXAotICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgaXNfaW50ZXJvcGVyYWJsZTwgRGVyaXZlZDEsIERlcml2ZWQyID46OnZhbHVlICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgcmV0dXJuX3ByZWZpeCBpdGVyYXRvcl9jb3JlX2FjY2Vzczo6YmFzZV9vcCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgKnN0YXRpY19jYXN0PERlcml2ZWQxIGNvbnN0Kj4oJmxocykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgLCAqc3RhdGljX2Nhc3Q8RGVyaXZlZDIgY29uc3QqPigmcmhzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAsIE5ETkJPT1NUX0lURVJBVE9SX0NPTlZFUlRJQkxFKERlcml2ZWQyLERlcml2ZWQxKSAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgfQotCi0jIGRlZmluZSBORE5CT09TVF9JVEVSQVRPUl9GQUNBREVfUkVMQVRJT04ob3AsIHJldHVybl9wcmVmaXgsIGJhc2Vfb3ApIFwKLSAgTkROQk9PU1RfSVRFUkFUT1JfRkFDQURFX0lOVEVST1AoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgb3AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgLCBuZG5ib29zdDo6ZGV0YWlsOjphbHdheXNfYm9vbDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAsIHJldHVybl9wcmVmaXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICwgYmFzZV9vcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICkKLQotICBORE5CT09TVF9JVEVSQVRPUl9GQUNBREVfUkVMQVRJT04oPT0sIHJldHVybiwgZXF1YWwpCi0gIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9SRUxBVElPTighPSwgcmV0dXJuICEsIGVxdWFsKQotCi0gIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9SRUxBVElPTig8LCByZXR1cm4gMCA+LCBkaXN0YW5jZV9mcm9tKQotICBORE5CT09TVF9JVEVSQVRPUl9GQUNBREVfUkVMQVRJT04oPiwgcmV0dXJuIDAgPCwgZGlzdGFuY2VfZnJvbSkKLSAgTkROQk9PU1RfSVRFUkFUT1JfRkFDQURFX1JFTEFUSU9OKDw9LCByZXR1cm4gMCA+PSwgZGlzdGFuY2VfZnJvbSkKLSAgTkROQk9PU1RfSVRFUkFUT1JfRkFDQURFX1JFTEFUSU9OKD49LCByZXR1cm4gMCA8PSwgZGlzdGFuY2VfZnJvbSkKLSMgdW5kZWYgTkROQk9PU1RfSVRFUkFUT1JfRkFDQURFX1JFTEFUSU9OCi0KLSAgLy8gb3BlcmF0b3ItIHJlcXVpcmVzIGFuIGFkZGl0aW9uYWwgcGFydCBpbiB0aGUgc3RhdGljIGFzc2VydGlvbgotICBORE5CT09TVF9JVEVSQVRPUl9GQUNBREVfSU5URVJPUCgKLSAgICAgIC0KLSAgICAsIG5kbmJvb3N0OjpkZXRhaWw6OmNob29zZV9kaWZmZXJlbmNlX3R5cGUKLSAgICAsIHJldHVybgotICAgICwgZGlzdGFuY2VfZnJvbQotICApCi0jIHVuZGVmIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9JTlRFUk9QCi0jIHVuZGVmIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9JTlRFUk9QX0hFQUQKLQotIyBkZWZpbmUgTkROQk9PU1RfSVRFUkFUT1JfRkFDQURFX1BMVVMoYXJncykgICAgICAgICAgIFwKLSAgTkROQk9PU1RfSVRFUkFUT1JfRkFDQURFX1BMVVNfSEVBRChpbmxpbmUsIGFyZ3MpICAgICBcCi0gIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgRGVyaXZlZCB0bXAoc3RhdGljX2Nhc3Q8RGVyaXZlZCBjb25zdCY+KGkpKTsgIFwKLSAgICAgIHJldHVybiB0bXAgKz0gbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIH0KLQotTkROQk9PU1RfSVRFUkFUT1JfRkFDQURFX1BMVVMoKAotICBpdGVyYXRvcl9mYWNhZGU8RGVyaXZlZCwgViwgVEMsIFIsIEQ+IGNvbnN0JiBpCi0gICwgdHlwZW5hbWUgRGVyaXZlZDo6ZGlmZmVyZW5jZV90eXBlIG4KLSkpCi0KLU5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9QTFVTKCgKLSAgICB0eXBlbmFtZSBEZXJpdmVkOjpkaWZmZXJlbmNlX3R5cGUgbgotICAgICwgaXRlcmF0b3JfZmFjYWRlPERlcml2ZWQsIFYsIFRDLCBSLCBEPiBjb25zdCYgaQotKSkKLSMgdW5kZWYgTkROQk9PU1RfSVRFUkFUT1JfRkFDQURFX1BMVVMKLSMgdW5kZWYgTkROQk9PU1RfSVRFUkFUT1JfRkFDQURFX1BMVVNfSEVBRAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IvZGV0YWlsL2NvbmZpZ191bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9JVEVSQVRPUl9GQUNBREVfMjMwMjIwMDNUSFdfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2l0ZXJhdG9yL2l0ZXJhdG9yX3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2l0ZXJhdG9yL2l0ZXJhdG9yX3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkOGZiNjEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDMuCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jaWZuZGVmIElURVJBVE9SX1RSQUlUU19ORE5CT09TVF9EV0EyMDAzNDdfSFBQCi0jIGRlZmluZSBJVEVSQVRPUl9UUkFJVFNfTkROQk9PU1RfRFdBMjAwMzQ3X0hQUAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9pdGVyYXRvci5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgCi0KLS8vIFVuZm9ydHVuYXRlbHksIGcrKyAyLjk1LnggY2hva2VzIHdoZW4gd2UgZGVmaW5lIGEgY2xhc3MgdGVtcGxhdGUKLS8vIGl0ZXJhdG9yX2NhdGVnb3J5IHdoaWNoIGhhcyB0aGUgc2FtZSBuYW1lIGFzIGl0cwotLy8gc3RkOjppdGVyYXRvcl9jYXRlZ29yeSgpIGZ1bmN0aW9uLCBwcm9iYWJseSBkdWUgaW4gcGFydCB0byB0aGUKLS8vICJzdGQ6OiBpcyB2aXNpYmxlIGdsb2JhbGx5IiBoYWNrIGl0IHVzZXMuICBVc2UKLS8vIE5ETkJPT1NUX0lURVJBVE9SX0NBVEVHT1JZIHRvIHdyaXRlIGNvZGUgdGhhdCdzIHBvcnRhYmxlIHRvIG9sZGVyCi0vLyBHQ0NzLgotCi0jIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sIDw9IDIpCi0jICBkZWZpbmUgTkROQk9PU1RfSVRFUkFUT1JfQ0FURUdPUlkgaXRlcmF0b3JfY2F0ZWdvcnlfCi0jIGVsc2UKLSMgIGRlZmluZSBORE5CT09TVF9JVEVSQVRPUl9DQVRFR09SWSBpdGVyYXRvcl9jYXRlZ29yeQotIyBlbmRpZgotCi0KLXRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvcj4KLXN0cnVjdCBpdGVyYXRvcl92YWx1ZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPjo6dmFsdWVfdHlwZSB0eXBlOwotfTsKLSAgCi10ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3I+Ci1zdHJ1Y3QgaXRlcmF0b3JfcmVmZXJlbmNlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjppdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+OjpyZWZlcmVuY2UgdHlwZTsKLX07Ci0gIAotICAKLXRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvcj4KLXN0cnVjdCBpdGVyYXRvcl9wb2ludGVyCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjppdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+Ojpwb2ludGVyIHR5cGU7Ci19OwotICAKLXRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvcj4KLXN0cnVjdCBpdGVyYXRvcl9kaWZmZXJlbmNlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjppdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvcj4KLXN0cnVjdCBORE5CT09TVF9JVEVSQVRPUl9DQVRFR09SWQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPjo6aXRlcmF0b3JfY2F0ZWdvcnkgdHlwZTsKLX07Ci0KLSMgaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGl0ZXJhdG9yX3ZhbHVlPGludD4KLXsKLSAgICB0eXBlZGVmIHZvaWQgdHlwZTsKLX07Ci0gIAotdGVtcGxhdGUgPD4KLXN0cnVjdCBpdGVyYXRvcl9yZWZlcmVuY2U8aW50PgotewotICAgIHR5cGVkZWYgdm9pZCB0eXBlOwotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBpdGVyYXRvcl9wb2ludGVyPGludD4KLXsKLSAgICB0eXBlZGVmIHZvaWQgdHlwZTsKLX07Ci0gIAotdGVtcGxhdGUgPD4KLXN0cnVjdCBpdGVyYXRvcl9kaWZmZXJlbmNlPGludD4KLXsKLSAgICB0eXBlZGVmIHZvaWQgdHlwZTsKLX07Ci0gIAotdGVtcGxhdGUgPD4KLXN0cnVjdCBORE5CT09TVF9JVEVSQVRPUl9DQVRFR09SWTxpbnQ+Ci17Ci0gICAgdHlwZWRlZiB2b2lkIHR5cGU7Ci19OwotIyBlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdDo6aXRlcmF0b3IKLQotI2VuZGlmIC8vIElURVJBVE9SX1RSQUlUU19ORE5CT09TVF9EV0EyMDAzNDdfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2l0ZXJhdG9yL3JldmVyc2VfaXRlcmF0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pdGVyYXRvci9yZXZlcnNlX2l0ZXJhdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzliNzY1ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2l0ZXJhdG9yL3JldmVyc2VfaXRlcmF0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAyLgotLy8gKEMpIENvcHlyaWdodCBKZXJlbXkgU2llayAgICAyMDAyLgotLy8gKEMpIENvcHlyaWdodCBUaG9tYXMgV2l0dCAgICAyMDAyLgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotI2lmbmRlZiBORE5CT09TVF9SRVZFUlNFX0lURVJBVE9SXzIzMDIyMDAzVEhXX0hQUAotI2RlZmluZSBORE5CT09TVF9SRVZFUlNFX0lURVJBVE9SXzIzMDIyMDAzVEhXX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbmV4dF9wcmlvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2l0ZXJhdG9yX2FkYXB0b3IuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotICAvLwotICAvLwotICAvLwotICB0ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3I+Ci0gIGNsYXNzIHJldmVyc2VfaXRlcmF0b3IKLSAgICAgIDogcHVibGljIGl0ZXJhdG9yX2FkYXB0b3I8IHJldmVyc2VfaXRlcmF0b3I8SXRlcmF0b3I+LCBJdGVyYXRvciA+Ci0gIHsKLSAgICAgIHR5cGVkZWYgaXRlcmF0b3JfYWRhcHRvcjwgcmV2ZXJzZV9pdGVyYXRvcjxJdGVyYXRvcj4sIEl0ZXJhdG9yID4gc3VwZXJfdDsKLQotICAgICAgZnJpZW5kIGNsYXNzIGl0ZXJhdG9yX2NvcmVfYWNjZXNzOwotCi0gICBwdWJsaWM6Ci0gICAgICByZXZlcnNlX2l0ZXJhdG9yKCkge30KLQotICAgICAgZXhwbGljaXQgcmV2ZXJzZV9pdGVyYXRvcihJdGVyYXRvciB4KSAKLSAgICAgICAgICA6IHN1cGVyX3QoeCkge30KLQotICAgICAgdGVtcGxhdGU8Y2xhc3MgT3RoZXJJdGVyYXRvcj4KLSAgICAgIHJldmVyc2VfaXRlcmF0b3IoCi0gICAgICAgICAgcmV2ZXJzZV9pdGVyYXRvcjxPdGhlckl0ZXJhdG9yPiBjb25zdCYgcgotICAgICAgICAgICwgdHlwZW5hbWUgZW5hYmxlX2lmX2NvbnZlcnRpYmxlPE90aGVySXRlcmF0b3IsIEl0ZXJhdG9yPjo6dHlwZSogPSAwCi0gICAgICAgICAgKQotICAgICAgICAgIDogc3VwZXJfdChyLmJhc2UoKSkKLSAgICAgIHt9Ci0KLSAgIHByaXZhdGU6Ci0gICAgICB0eXBlbmFtZSBzdXBlcl90OjpyZWZlcmVuY2UgZGVyZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiAqbmRuYm9vc3Q6OnByaW9yKHRoaXMtPmJhc2UoKSk7IH0KLSAgICAKLSAgICAgIHZvaWQgaW5jcmVtZW50KCkgeyAtLXRoaXMtPmJhc2VfcmVmZXJlbmNlKCk7IH0KLSAgICAgIHZvaWQgZGVjcmVtZW50KCkgeyArK3RoaXMtPmJhc2VfcmVmZXJlbmNlKCk7IH0KLQotICAgICAgdm9pZCBhZHZhbmNlKHR5cGVuYW1lIHN1cGVyX3Q6OmRpZmZlcmVuY2VfdHlwZSBuKQotICAgICAgewotICAgICAgICAgIHRoaXMtPmJhc2VfcmVmZXJlbmNlKCkgKz0gLW47Ci0gICAgICB9Ci0KLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBPdGhlckl0ZXJhdG9yPgotICAgICAgdHlwZW5hbWUgc3VwZXJfdDo6ZGlmZmVyZW5jZV90eXBlCi0gICAgICBkaXN0YW5jZV90byhyZXZlcnNlX2l0ZXJhdG9yPE90aGVySXRlcmF0b3I+IGNvbnN0JiB5KSBjb25zdAotICAgICAgewotICAgICAgICAgIHJldHVybiB0aGlzLT5iYXNlX3JlZmVyZW5jZSgpIC0geS5iYXNlKCk7Ci0gICAgICB9Ci0gIH07Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4KLSAgcmV2ZXJzZV9pdGVyYXRvcjxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+IG1ha2VfcmV2ZXJzZV9pdGVyYXRvcihCaWRpcmVjdGlvbmFsSXRlcmF0b3IgeCkKLSAgewotICAgICAgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3I8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPih4KTsKLSAgfQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUkVWRVJTRV9JVEVSQVRPUl8yMzAyMjAwM1RIV19IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2JpbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvYmluZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiMmM4MTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvYmluZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi0vLyAtLSBiaW5kLmhwcCAtLSBCb29zdCBMYW1iZGEgTGlicmFyeSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBKYWFra28gSmFydmkgKGphYWtrby5qYXJ2aUBjcy51dHUuZmkpCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICBHYXJ5IFBvd2VsbCAoZ3dwb3dlbGxAaG90bWFpbC5jb20pCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgCi0KLSNpZm5kZWYgTkROQk9PU1RfTEFNQkRBX0JJTkRfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9CSU5EX0hQUAotCi0jaW5jbHVkZSAibmRuYm9vc3QvbGFtYmRhL2NvcmUuaHBwIgotCi0jaW5jbHVkZSAibmRuYm9vc3QvbGFtYmRhL2RldGFpbC9iaW5kX2Z1bmN0aW9ucy5ocHAiCi0gICAgCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2NvcmUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvY29yZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwMWVjNDMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvY29yZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi0vLyAtLSBjb3JlLmhwcCAtLSBCb29zdCBMYW1iZGEgTGlicmFyeSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDAwIEdhcnkgUG93ZWxsIChwb3dlbGxnQGFtYXpvbi5jb20pCi0vLyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAgSmFha2tvIEphcnZpIChqYWFra28uamFydmlAY3MudXR1LmZpKQotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHd3dy5ib29zdC5vcmcKLS8vIAotLy8gSW5jbHVkZXMgdGhlIGNvcmUgb2YgTEwsIHdpdGhvdXQgYW55IHJlYWwgZmVhdHVyZXMgZm9yIGNsaWVudDoKLS8vIAotLy8gdHVwbGVzLCBsYW1iZGEgZnVuY3RvcnMsIHJldHVybiB0eXBlIGRlZHVjdGlvbiB0ZW1wbGF0ZXMsCi0vLyBhcmd1bWVudCBzdWJzdGl0dXRpb24gbWVjaGFuaXNtIChzZWxlY3QgZnVuY3Rpb25zKQotLy8gCi0vLyBTb21lIGZ1bmN0aW9uYWxpdHkgY29tZXMgYXMgd2VsbDoKLS8vIEFzc2lnbm1lbnQgYW5kIHN1YnNjcmlwdCBvcGVyYXRvcnMsIGFzIHdlbGwgYXMgZnVuY3Rpb24KLS8vIGNhbGwgb3BlcmF0b3IgZm9yIHBsYWNlaG9sZGVyIHZhcmlhYmxlcy4KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBORE5CT09TVF9MQU1CREFfQ09SRV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX0NPUkVfSFBQCi0KLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy90cmFuc2Zvcm1fdHJhaXRzLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9jdl90cmFpdHMuaHBwIgotCi0jaW5jbHVkZSAibmRuYm9vc3QvdHVwbGUvdHVwbGUuaHBwIgotCi0vLyBpbmplY3Qgc29tZSBvZiB0aGUgdHVwbGUgbmFtZXMgaW50byBsYW1iZGEgCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIGxhbWJkYSB7Ci0KLXVzaW5nIDo6bmRuYm9vc3Q6OnR1cGxlczo6dHVwbGU7Ci11c2luZyA6Om5kbmJvb3N0Ojp0dXBsZXM6Om51bGxfdHlwZTsKLQotfSAvLyBsYW1iZGEKLX0gLy8gYm9vc3QKLQotI2luY2x1ZGUgIm5kbmJvb3N0L2xhbWJkYS9kZXRhaWwvbGFtYmRhX2NvbmZpZy5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbGFtYmRhL2RldGFpbC9sYW1iZGFfZndkLmhwcCIKLQotI2luY2x1ZGUgIm5kbmJvb3N0L2xhbWJkYS9kZXRhaWwvYXJpdHlfY29kZS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbGFtYmRhL2RldGFpbC9hY3Rpb25zLmhwcCIKLQotI2luY2x1ZGUgIm5kbmJvb3N0L2xhbWJkYS9kZXRhaWwvbGFtYmRhX3RyYWl0cy5ocHAiCi0KLSNpbmNsdWRlICJuZG5ib29zdC9sYW1iZGEvZGV0YWlsL2Z1bmN0aW9uX2FkYXB0b3JzLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9sYW1iZGEvZGV0YWlsL3JldHVybl90eXBlX3RyYWl0cy5ocHAiCi0KLSNpbmNsdWRlICJuZG5ib29zdC9sYW1iZGEvZGV0YWlsL3NlbGVjdF9mdW5jdGlvbnMuaHBwIgotCi0jaW5jbHVkZSAibmRuYm9vc3QvbGFtYmRhL2RldGFpbC9sYW1iZGFfZnVuY3Rvcl9iYXNlLmhwcCIKLQotI2luY2x1ZGUgIm5kbmJvb3N0L2xhbWJkYS9kZXRhaWwvbGFtYmRhX2Z1bmN0b3JzLmhwcCIKLQotI2luY2x1ZGUgIm5kbmJvb3N0L2xhbWJkYS9kZXRhaWwvcmV0LmhwcCIKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSBsYW1iZGEgewotCi1uYW1lc3BhY2UgewotCi0gIC8vIFRoZXNlIGFyZSBjb25zdGFudHMgdHlwZXMgYW5kIG5lZWQgdG8gYmUgaW5pdGlhbGlzZWQKLSAgbmRuYm9vc3Q6OmxhbWJkYTo6cGxhY2Vob2xkZXIxX3R5cGUgZnJlZTEgPSBuZG5ib29zdDo6bGFtYmRhOjpwbGFjZWhvbGRlcjFfdHlwZSgpOwotICBuZG5ib29zdDo6bGFtYmRhOjpwbGFjZWhvbGRlcjJfdHlwZSBmcmVlMiA9IG5kbmJvb3N0OjpsYW1iZGE6OnBsYWNlaG9sZGVyMl90eXBlKCk7Ci0gIG5kbmJvb3N0OjpsYW1iZGE6OnBsYWNlaG9sZGVyM190eXBlIGZyZWUzID0gbmRuYm9vc3Q6OmxhbWJkYTo6cGxhY2Vob2xkZXIzX3R5cGUoKTsKLQotICBuZG5ib29zdDo6bGFtYmRhOjpwbGFjZWhvbGRlcjFfdHlwZSYgXzEgPSBmcmVlMTsKLSAgbmRuYm9vc3Q6OmxhbWJkYTo6cGxhY2Vob2xkZXIyX3R5cGUmIF8yID0gZnJlZTI7Ci0gIG5kbmJvb3N0OjpsYW1iZGE6OnBsYWNlaG9sZGVyM190eXBlJiBfMyA9IGZyZWUzOwotICAvLyBfMSwgXzIsIC4uLiBuYW1pbmcgc2NoZW1lIGJ5IFBldGVyIERpbW92Ci19IC8vIHVubmFtZWQKLSAgIAotfSAvLyBsYW1iZGEKLX0gLy8gYm9vc3QKLSAgIAotICAgCi0jZW5kaWYgLy9ORE5CT09TVF9MQU1CREFfQ09SRV9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9hY3Rpb25zLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9hY3Rpb25zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzIyODIwYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvYWN0aW9ucy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNzQgKzAsMCBAQAotLy8gLS0gQm9vc3QgTGFtYmRhIExpYnJhcnkgLSBhY3Rpb25zLmhwcCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMCBKYWFra28gSmFydmkgKGphYWtrby5qYXJ2aUBjcy51dHUuZmkpCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHd3dy5ib29zdC5vcmcKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX0xBTUJEQV9BQ1RJT05TX0hQUAotI2RlZmluZSBORE5CT09TVF9MQU1CREFfQUNUSU9OU19IUFAKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgCi1uYW1lc3BhY2UgbGFtYmRhIHsKLQotCi0KLXRlbXBsYXRlPGludCBBcml0eSwgY2xhc3MgQWN0PiBjbGFzcyBhY3Rpb247Ci0KLS8vIHRoZXNlIG5lZWQgdG8gYmUgZGVmaW5lZCBoZXJlLCBzaW5jZSB0aGUgY29ycmVzcG9uZGluZyBsYW1iZGEgCi0vLyBmdW5jdGlvbnMgYXJlIG1lbWJlcnMgb2YgbGFtYmRhX2Z1bmN0b3IgY2xhc3NlcwotCi1jbGFzcyBhc3NpZ25tZW50X2FjdGlvbiB7fTsKLWNsYXNzIHN1YnNjcmlwdF9hY3Rpb24ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBBY3Rpb24+IGNsYXNzIG90aGVyX2FjdGlvbjsKLQotLy8gYWN0aW9uIGZvciBzcGVjaWZ5aW5nIHRoZSBleHBsaWNpdCByZXR1cm4gdHlwZQotdGVtcGxhdGUgPGNsYXNzIFJFVD4gY2xhc3MgZXhwbGljaXRfcmV0dXJuX3R5cGVfYWN0aW9uIHt9OwotCi0vLyBhY3Rpb24gZm9yIHByZXZlbnRpbmcgdGhlIGV4cGFuc2lvbiBvZiBhIGxhbWJkYSBleHByZXNzaW9uCi1zdHJ1Y3QgcHJvdGVjdF9hY3Rpb24ge307Ci0KLSAgLy8gbXVzdCBiZSBkZWZpbmVkIGhlcmUsIGNvbW1hIGlzIGEgc3BlY2lhbCBjYXNlCi1zdHJ1Y3QgY29tbWFfYWN0aW9uIHt9OwotCi0KLSAgLy8gYWN0aW9ucywgZm9yIHdoaWNoIHRoZSBleGlzdGVuY2Ugb2YgcHJvdGVjdCBpcyBjaGVja2VkIGluIHJldHVybiB0eXBlIAotICAvLyBkZWR1Y3Rpb24uCi0KLXRlbXBsYXRlIDxjbGFzcyBBY3Rpb24+IHN0cnVjdCBpc19wcm90ZWN0YWJsZSB7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLS8vIE5PVEU6IGNvbW1hIGFjdGlvbiBpcyBwcm90ZWN0YWJsZS4gT3RoZXIgcHJvdGVjdGFibGUgYWN0aW9ucwotLy8gYXJlIGxpc3RlZCBpbiBvcGVyYXRvcl9hY3Rpb25zLmhwcAotCi10ZW1wbGF0ZTw+IHN0cnVjdCBpc19wcm90ZWN0YWJsZTxvdGhlcl9hY3Rpb248Y29tbWFfYWN0aW9uPiA+IHsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7Ci19OwotCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0gIC8vIHRoaXMgdHlwZSBpcyB1c2VkIGluIHJldHVybiB0eXBlIGRlZHVjdGlvbnMgdG8gc2lnbmFsIHRoYXQgZGVkdWN0aW9uIAotICAvLyBkaWQgbm90IGZpbmQgYSByZXN1bHQuIEl0IGRvZXMgbm90IG5lY2Vzc2FyaWx5IG1lYW4gYW4gZXJyb3IsIGl0IGNvbW1vbmx5Ci0gIC8vIG1lYW5zIHRoYXQgc29tZXRoaW5nIGVsc2Ugc2hvdWxkIGJlIHRyaWVkLgotICBjbGFzcyB1bnNwZWNpZmllZCB7fTsKLX0KLQotICAvLyBmdW5jdGlvbiBhY3Rpb24gaXMgYSBzcGVjaWFsIGNhc2U6IGJpbmQgZnVuY3Rpb25zIGNhbiBiZSBjYWxsZWQgd2l0aCAKLSAgLy8gdGhlIHJldHVybiB0eXBlIHNwZWNpYWxpemVkIGV4cGxpY2l0bHkgZS5nLiBiaW5kPGludD4oZm9vKTsKLSAgLy8gSWYgdGhpcyBjYWxsIHN5bnRheCBpcyB1c2VkLCB0aGUgcmV0dXJuIHR5cGUgaXMgc3RvcmVkIGluIHRoZSBsYXR0ZXIKLSAgLy8gYXJndW1lbnQgb2YgZnVuY3Rpb25fYWN0aW9uIHRlbXBsYXRlLiBPdGhlcndpc2UgdGhlIGFyZ3VtZW50IGdldHMgdGhlIHR5cGUKLSAgLy8gJ3Vuc3BlY2lmaWVkJy4KLSAgLy8gVGhpcyBhcmd1bWVudCBpcyBvbmx5IHJlbGV2YW50IGluIHRoZSByZXR1cm4gdHlwZSBkZWR1Y3Rpb24gY29kZQotdGVtcGxhdGUgPGludCBJLCBjbGFzcyBSZXN1bHRfdHlwZSA9IGRldGFpbDo6dW5zcGVjaWZpZWQ+IAotY2xhc3MgZnVuY3Rpb25fYWN0aW9uIHt9OwotICAgCi10ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyBmdW5jdGlvbl9hY3Rpb248MSwgVD4gewotcHVibGljOgotICB0ZW1wbGF0ZTxjbGFzcyBSRVQsIGNsYXNzIEExPgotICBzdGF0aWMgUkVUIGFwcGx5KEExJiBhMSkgewotICAgIHJldHVybiBmdW5jdGlvbl9hZGFwdG9yPHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfY3Y8QTE+Ojp0eXBlPjo6Ci0gICAgICB0ZW1wbGF0ZSBhcHBseTxSRVQ+KGExKTsKLSAgfQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3MgZnVuY3Rpb25fYWN0aW9uPDIsIFQ+IHsKLXB1YmxpYzoKLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTI+Ci0gIHN0YXRpYyBSRVQgYXBwbHkoQTEmIGExLCBBMiYgYTIpIHsKLSAgICByZXR1cm4gZnVuY3Rpb25fYWRhcHRvcjx0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2N2PEExPjo6dHlwZT46OgotICAgICAgdGVtcGxhdGUgYXBwbHk8UkVUPihhMSwgYTIpOwotICB9Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyBmdW5jdGlvbl9hY3Rpb248MywgVD4gewotcHVibGljOgotICB0ZW1wbGF0ZTxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTM+Ci0gIHN0YXRpYyBSRVQgYXBwbHkoQTEmIGExLCBBMiYgYTIsIEEzJiBhMykgewotICAgIHJldHVybiBmdW5jdGlvbl9hZGFwdG9yPHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfY3Y8QTE+Ojp0eXBlPjo6Ci0gICAgICB0ZW1wbGF0ZSBhcHBseTxSRVQ+KGExLCBhMiwgYTMpOwotICB9Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyBmdW5jdGlvbl9hY3Rpb248NCwgVD4gewotcHVibGljOgotICB0ZW1wbGF0ZTxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PgotICBzdGF0aWMgUkVUIGFwcGx5KEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCkgewotICAgIHJldHVybiBmdW5jdGlvbl9hZGFwdG9yPHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfY3Y8QTE+Ojp0eXBlPjo6Ci0gICAgICB0ZW1wbGF0ZSBhcHBseTxSRVQ+KGExLCBhMiwgYTMsIGE0KTsKLSAgfQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3MgZnVuY3Rpb25fYWN0aW9uPDUsIFQ+IHsKLXB1YmxpYzoKLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+Ci0gIHN0YXRpYyBSRVQgYXBwbHkoQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0LCBBNSYgYTUpIHsKLSAgICByZXR1cm4gZnVuY3Rpb25fYWRhcHRvcjx0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2N2PEExPjo6dHlwZT46OgotICAgICAgdGVtcGxhdGUgYXBwbHk8UkVUPihhMSwgYTIsIGEzLCBhNCwgYTUpOwotICB9Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyBmdW5jdGlvbl9hY3Rpb248NiwgVD4gewotcHVibGljOgotICB0ZW1wbGF0ZTxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgCi0gICAgICAgICAgIGNsYXNzIEE2PgotICBzdGF0aWMgUkVUIGFwcGx5KEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCwgQTUmIGE1LCBBNiYgYTYpIHsKLSAgICByZXR1cm4gZnVuY3Rpb25fYWRhcHRvcjx0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2N2PEExPjo6dHlwZT46OgotICAgICAgdGVtcGxhdGUgYXBwbHk8UkVUPihhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KTsKLSAgfQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3MgZnVuY3Rpb25fYWN0aW9uPDcsIFQ+IHsKLXB1YmxpYzoKLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsICAKLSAgICAgICAgICAgY2xhc3MgQTYsIGNsYXNzIEE3PgotICBzdGF0aWMgUkVUIGFwcGx5KEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCwgQTUmIGE1LCBBNiYgYTYsIEE3JiBhNykgewotICAgIHJldHVybiBmdW5jdGlvbl9hZGFwdG9yPHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfY3Y8QTE+Ojp0eXBlPjo6Ci0gICAgICB0ZW1wbGF0ZSBhcHBseTxSRVQ+KGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KTsKLSAgfQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3MgZnVuY3Rpb25fYWN0aW9uPDgsIFQ+IHsKLXB1YmxpYzoKLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIAotICAgICAgICAgICBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4PgotICBzdGF0aWMgUkVUIGFwcGx5KEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCwgQTUmIGE1LCBBNiYgYTYsIEE3JiBhNywgCi0gICAgICAgICAgICAgICAgICAgQTgmIGE4KSB7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uX2FkYXB0b3I8dHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9jdjxBMT46OnR5cGU+OjoKLSAgICAgIHRlbXBsYXRlIGFwcGx5PFJFVD4oYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KTsKLSAgfQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3MgZnVuY3Rpb25fYWN0aW9uPDksIFQ+IHsKLXB1YmxpYzoKLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIAotICAgICAgICAgICBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOT4KLSAgc3RhdGljIFJFVCBhcHBseShBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQsIEE1JiBhNSwgQTYmIGE2LCBBNyYgYTcsIAotICAgICAgICAgICAgICAgICAgIEE4JiBhOCwgQTkmIGE5KSB7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uX2FkYXB0b3I8dHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9jdjxBMT46OnR5cGU+OjoKLSAgICAgIHRlbXBsYXRlIGFwcGx5PFJFVD4oYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIGZ1bmN0aW9uX2FjdGlvbjwxMCwgVD4gewotcHVibGljOgotICB0ZW1wbGF0ZTxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgCi0gICAgICAgICAgIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTgsIGNsYXNzIEE5LCBjbGFzcyBBMTA+Ci0gIHN0YXRpYyBSRVQgYXBwbHkoQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0LCBBNSYgYTUsIEE2JiBhNiwgQTcmIGE3LCAKLSAgICAgICAgICAgICAgICAgICBBOCYgYTgsIEE5JiBhOSwgQTEwJiBhMTApIHsKLSAgICByZXR1cm4gZnVuY3Rpb25fYWRhcHRvcjx0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2N2PEExPjo6dHlwZT46OgotICAgICAgdGVtcGxhdGUgYXBwbHk8UkVUPihhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5LCBhMTApOwotICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBsYW1iZGEKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL2FyaXR5X2NvZGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL2FyaXR5X2NvZGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzM1NjA4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9hcml0eV9jb2RlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMCArMCwwIEBACi0vLyAtLSBCb29zdCBMYW1iZGEgTGlicmFyeSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMCBKYWFra28gSmFydmkgKGphYWtrby5qYXJ2aUBjcy51dHUuZmkpCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgd3d3LmJvb3N0Lm9yZwotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX0xBTUJEQV9BUklUWV9DT0RFX0hQUAotI2RlZmluZSBORE5CT09TVF9MQU1CREFfQVJJVFlfQ09ERV9IUFAKLQotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2N2X3RyYWl0cy5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvdHJhbnNmb3JtX3RyYWl0cy5ocHAiCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IAotbmFtZXNwYWNlIGxhbWJkYSB7Ci0KLS8vIFRoZXNlIGNvbnN0YW50cyBzdGF0ZSwgd2hldGhlciBhIGxhbWJkYV9mdW5jdG9yIGluc3RhbnRpYXRpb24gcmVzdWx0cyBmcm9tIAotLy8gYW4gZXhwcmVzc2lvbiB3aGljaCBjb250YWlucyBubyBwbGFjZWhvbGRlcnMgKE5PTkUpLCAKLS8vIG9ubHkgZnJlZTEgcGxhY2Vob2xkZXJzIChGSVJTVCksIAotLy8gZnJlZTIgcGxhY2Vob2xkZXJzIGFuZCBtYXliZSBmcmVlMSBwbGFjZWhvbGRlcnMgKFNFQ09ORCksCi0vLyBmcmVlMyBhbmQgbWF5YmUgZnJlZTEgYW5kIGZyZWUyIHBsYWNlaG9sZGVycyAoVEhJUkQpLAotLy8gZnJlZUUgcGxhY2Vob2xkZXJzIGFuZCBtYXliZSBmcmVlMSBhbmQgZnJlZTIgIChFWENFUFRJT04pLgotLy8gUkVUSFJPVyBtZWFucywgdGhhdCBhIHJldGhyb3cgZXhwcmVzc2lvbiBpcyB1c2VkIHNvbWV3aGVyZSBpbiB0aGUgbGFtYmRhX2Z1bmN0b3IuCi0KLWVudW0geyBOT05FICAgICAgICAgICAgID0gMHgwMCwgLy8gTm90aWNlIHdlIGFyZSB1c2luZyBiaXRzIGFzIGZsYWdzIGhlcmUuCi0gICAgICAgRklSU1QgICAgICAgICAgICA9IDB4MDEsIAotICAgICAgIFNFQ09ORCAgICAgICAgICAgPSAweDAyLCAKLSAgICAgICBUSElSRCAgICAgICAgICAgID0gMHgwNCwgCi0gICAgICAgRVhDRVBUSU9OICAgICAgICA9IDB4MDgsIAotICAgICAgIFJFVEhST1cgICAgICAgICAgPSAweDEwfTsKLQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IGdldF90dXBsZV9hcml0eTsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgZ2V0X2FyaXR5XzsKLQotfSAvLyBlbmQgZGV0YWlsOwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IGdldF9hcml0eSB7Ci0KLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSBkZXRhaWw6OmdldF9hcml0eV88dHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9jdjx0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZT46OnR5cGU+Ojp2YWx1ZSk7Ci0KLX07Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IGdldF9hcml0eV8gewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9IDApOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBnZXRfYXJpdHlfPGxhbWJkYV9mdW5jdG9yPFQ+ID4gewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9IGdldF9hcml0eTxUPjo6dmFsdWUpOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQWN0aW9uLCBjbGFzcyBBcmdzPgotc3RydWN0IGdldF9hcml0eV88bGFtYmRhX2Z1bmN0b3JfYmFzZTxBY3Rpb24sIEFyZ3M+ID4gewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9IGdldF90dXBsZV9hcml0eTxBcmdzPjo6dmFsdWUpOwotfTsKLQotdGVtcGxhdGU8aW50IEk+Ci1zdHJ1Y3QgZ2V0X2FyaXR5XzxwbGFjZWhvbGRlcjxJPiA+IHsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSBJKTsKLX07Ci0KLX0gLy8gZGV0YWlsIAotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IGdldF90dXBsZV9hcml0eSB7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gZ2V0X2FyaXR5PHR5cGVuYW1lIFQ6OmhlYWRfdHlwZT46OnZhbHVlIHwgZ2V0X3R1cGxlX2FyaXR5PHR5cGVuYW1lIFQ6OnRhaWxfdHlwZT46OnZhbHVlKTsKLX07Ci0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGdldF90dXBsZV9hcml0eTxudWxsX3R5cGU+IHsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSAwKTsKLX07Ci0KLQotICAvLyBEb2VzIFQgaGF2ZSBwbGFjZWhvbGRlcjxJPiBhcyBpdCdzIHN1YmV4cHJlc3Npb24/Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIGludCBJPgotc3RydWN0IGhhc19wbGFjZWhvbGRlciB7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IChnZXRfYXJpdHk8VD46OnZhbHVlICYgSSkgIT0gMCk7Ci19OyAKLQotdGVtcGxhdGU8aW50IEksIGludCBKPgotc3RydWN0IGluY2x1ZGVzX3BsYWNlaG9sZGVyIHsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKEogJiBJKSAhPSAwKTsKLX07Ci0KLXRlbXBsYXRlPGludCBJLCBpbnQgSj4KLXN0cnVjdCBsYWNrc19wbGFjZWhvbGRlciB7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9ICgoSiAmIEkpID09IDApKTsKLX07Ci0KLQotfSAvLyBuYW1lc3BhY2UgbGFtYmRhCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9iaW5kX2Z1bmN0aW9ucy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvYmluZF9mdW5jdGlvbnMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzdmNGU5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9iaW5kX2Z1bmN0aW9ucy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODc5ICswLDAgQEAKLS8vIC0tIGJpbmRfZnVuY3Rpb25zLmhwcCAtLSBCb29zdCBMYW1iZGEgTGlicmFyeQotLy8KLS8vIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMCBKYWFra28gSmFydmkgKGphYWtrby5qYXJ2aUBjcy51dHUuZmkpCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX0xBTUJEQV9CSU5EX0ZVTkNUSU9OU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX0JJTkRfRlVOQ1RJT05TX0hQUAotCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IAotbmFtZXNwYWNlIGxhbWJkYSB7Ci0KLSNpZmRlZiBORE5CT09TVF9MQU1CREFfSU5DT1JSRUNUX0JJTkRfT1ZFUkxPQURJTkcKLQotICAvLyBnY2MgMi45NiBpbnN0YW50aWF0ZXMgYmluZCBmdW5jdGlvbnMgaXQgZG9lcyBub3QgZXZlbiBjYWxsLgotICAvLyBUaGVzZSBpbnN0YW50aWF0aW9ucyBsZWFkIHRvIGluY29ycmVjdCB0eXBlcyBpbiB0aGUgcmV0dXJuIHR5cGUsIAotICAvLyBhbmQgYSBjb21waWxhdGlvbiBlcnJvciByZXN1bHRzLiAKLSAgLy8gVGhpcyB0d2Vha2luZyBpcyB0byBwcmV2ZW50IHRoZSBmb3JtYXRpb24gb2YgdGhlIGVycm9uZW91cyB0eXBlLgotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBjb25zdGlmeV9ub25fZnVuY3MgewotICB0eXBlZGVmIHR5cGVuYW1lIAotICBkZXRhaWw6OklGX3R5cGU8bmRuYm9vc3Q6OmlzX2Z1bmN0aW9uPFQ+Ojp2YWx1ZSwKLSAgICBuZG5ib29zdDo6YWRkX3JlZmVyZW5jZTxUPiwKLSAgICBuZG5ib29zdDo6YWRkX2NvbnN0PFQ+Ci0gID46OnR5cGUgdHlwZTsKLX07Ci0KLX0KLSNlbmRpZgotLy8gMS1hcmd1bWVudCBiaW5kIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotI2lmbmRlZiBORE5CT09TVF9SRUZfVE9fRlVOQ19DT05GTElDVFNfV0lUSF9SRUZfVE9fVAotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdD4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDEsIGZ1bmN0aW9uX2FjdGlvbjwxLCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjxSZXN1bHQoJikoKT46OnR5cGUKLSAgPgotPgotCi1iaW5kKFJlc3VsdCgmIGExKSgpKSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248MSwgZnVuY3Rpb25fYWN0aW9uPDEsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8UmVzdWx0KCYpKCk+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjxSZXN1bHQoJikoKT46OnR5cGUKLSAgICAgIChhMSkKLSAgICApOwotfQotI2VuZGlmCi0KLSAjaWZuZGVmIE5ETkJPT1NUX0xBTUJEQV9JTkNPUlJFQ1RfQklORF9PVkVSTE9BRElORyAKLXRlbXBsYXRlIDxjbGFzcyBBcmcxPgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248MSwgZnVuY3Rpb25fYWN0aW9uPDE+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjxjb25zdCBBcmcxPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjwxLCBmdW5jdGlvbl9hY3Rpb248MT4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Y29uc3QgQXJnMT46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPGNvbnN0IEFyZzE+Ojp0eXBlCi0gICAgICAoYTEpCi0gICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgQXJnMT4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDEsIGZ1bmN0aW9uX2FjdGlvbjwxLCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjxjb25zdCBBcmcxPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjwxLCBmdW5jdGlvbl9hY3Rpb248MSwgUmVzdWx0PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjxjb25zdCBBcmcxPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Y29uc3QgQXJnMT46OnR5cGUKLSAgICAgIChhMSkKLSAgICApOwotfQotCi0KLSAjZWxzZSAKLXRlbXBsYXRlIDxjbGFzcyBBcmcxPgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248MSwgZnVuY3Rpb25fYWN0aW9uPDE+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlCi0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjwxLCBmdW5jdGlvbl9hY3Rpb248MT4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlCi0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSkKLSAgICApOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgUmVzdWx0LCBjbGFzcyBBcmcxPgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248MSwgZnVuY3Rpb25fYWN0aW9uPDEsIFJlc3VsdD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChjb25zdCBBcmcxJiBhMSkgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDEsIGZ1bmN0aW9uX2FjdGlvbjwxLCBSZXN1bHQ+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZQotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlCi0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEpCi0gICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdD4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDEsIGZ1bmN0aW9uX2FjdGlvbjwxLCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjxSZXN1bHQoKikoKT46OnR5cGUKLSAgPgotPgotCi1iaW5kKFJlc3VsdCgqIGNvbnN0ICYgYTEpKCkpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjwxLCBmdW5jdGlvbl9hY3Rpb248MSwgUmVzdWx0PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjxSZXN1bHQoKikoKT46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPFJlc3VsdCgqKSgpPjo6dHlwZQotICAgICAgKGExKQotICAgICk7Ci19Ci0KLQotI2VuZGlmIAotCi0vLyAyLWFyZ3VtZW50IGJpbmQgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jaWZuZGVmIE5ETkJPT1NUX1JFRl9UT19GVU5DX0NPTkZMSUNUU19XSVRIX1JFRl9UT19UCi10ZW1wbGF0ZSA8Y2xhc3MgUmVzdWx0LCBjbGFzcyBQYXIxLCBjbGFzcyBBcmcyPgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248MiwgZnVuY3Rpb25fYWN0aW9uPDIsIFJlc3VsdD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPFJlc3VsdCgmKShQYXIxKSwgY29uc3QgQXJnMj46OnR5cGUKLSAgPgotPgotCi1iaW5kKFJlc3VsdCgmYTEpKFBhcjEpLCBjb25zdCBBcmcyJiBhMikgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDIsIGZ1bmN0aW9uX2FjdGlvbjwyLCBSZXN1bHQ+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPFJlc3VsdCgmKShQYXIxKSwgY29uc3QgQXJnMj46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPFJlc3VsdCgmKShQYXIxKSwgY29uc3QgQXJnMj46OnR5cGUKLSAgICAgIChhMSwgYTIpCi0gICAgKTsKLX0KLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX0xBTUJEQV9JTkNPUlJFQ1RfQklORF9PVkVSTE9BRElORyAKLXRlbXBsYXRlIDxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyPgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248MiwgZnVuY3Rpb25fYWN0aW9uPDI+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjxjb25zdCBBcmcxLCBjb25zdCBBcmcyPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyKSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248MiwgZnVuY3Rpb25fYWN0aW9uPDI+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPGNvbnN0IEFyZzEsIGNvbnN0IEFyZzI+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjxjb25zdCBBcmcxLCBjb25zdCBBcmcyPjo6dHlwZQotICAgICAgKGExLCBhMikKLSAgICApOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgUmVzdWx0LCBjbGFzcyBBcmcxLCBjbGFzcyBBcmcyPgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248MiwgZnVuY3Rpb25fYWN0aW9uPDIsIFJlc3VsdD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPGNvbnN0IEFyZzEsIGNvbnN0IEFyZzI+Ojp0eXBlCi0gID4KLT4KLQotYmluZChjb25zdCBBcmcxJiBhMSwgY29uc3QgQXJnMiYgYTIpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjwyLCBmdW5jdGlvbl9hY3Rpb248MiwgUmVzdWx0PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjxjb25zdCBBcmcxLCBjb25zdCBBcmcyPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Y29uc3QgQXJnMSwgY29uc3QgQXJnMj46OnR5cGUKLSAgICAgIChhMSwgYTIpCi0gICAgKTsKLX0KLQotCi0gI2Vsc2UgCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnMSwgY2xhc3MgQXJnMj4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDIsIGZ1bmN0aW9uX2FjdGlvbjwyPiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMgotICAgID46OnR5cGUKLSAgPgotPgotCi1iaW5kKGNvbnN0IEFyZzEmIGExLCBjb25zdCBBcmcyJiBhMikgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDIsIGZ1bmN0aW9uX2FjdGlvbjwyPiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMgotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMikKLSAgICApOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgUmVzdWx0LCBjbGFzcyBBcmcxLCBjbGFzcyBBcmcyPgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248MiwgZnVuY3Rpb25fYWN0aW9uPDIsIFJlc3VsdD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChjb25zdCBBcmcxJiBhMSwgY29uc3QgQXJnMiYgYTIpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjwyLCBmdW5jdGlvbl9hY3Rpb248MiwgUmVzdWx0PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMgotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMikKLSAgICApOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgUmVzdWx0LCBjbGFzcyBQYXIxLCBjbGFzcyBBcmcyPgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248MiwgZnVuY3Rpb25fYWN0aW9uPDIsIFJlc3VsdD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPFJlc3VsdCgqKShQYXIxKSwgY29uc3QgQXJnMj46OnR5cGUKLSAgPgotPgotCi1iaW5kKFJlc3VsdCgqIGNvbnN0ICYgYTEpKFBhcjEpLCBjb25zdCBBcmcyJiBhMikgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDIsIGZ1bmN0aW9uX2FjdGlvbjwyLCBSZXN1bHQ+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPFJlc3VsdCgqKShQYXIxKSwgY29uc3QgQXJnMj46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPFJlc3VsdCgqKShQYXIxKSwgY29uc3QgQXJnMj46OnR5cGUKLSAgICAgIChhMSwgYTIpCi0gICAgKTsKLX0KLQotCi0gI2VuZGlmIAotCi0vLyAzLWFyZ3VtZW50IGJpbmQgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jaWZuZGVmIE5ETkJPT1NUX1JFRl9UT19GVU5DX0NPTkZMSUNUU19XSVRIX1JFRl9UT19UCi10ZW1wbGF0ZSA8Y2xhc3MgUmVzdWx0LCBjbGFzcyBQYXIxLCBjbGFzcyBQYXIyLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczPgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248MywgZnVuY3Rpb25fYWN0aW9uPDMsIFJlc3VsdD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgUmVzdWx0KCYpKFBhcjEsIFBhcjIpLCBjb25zdCBBcmcyLCBjb25zdCBBcmczCi0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoUmVzdWx0KCZhMSkoUGFyMSwgUGFyMiksIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMykgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDMsIGZ1bmN0aW9uX2FjdGlvbjwzLCBSZXN1bHQ+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBSZXN1bHQoJikoUGFyMSwgUGFyMiksIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBSZXN1bHQoJikoUGFyMSwgUGFyMiksIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzKQotICAgICk7Ci19Ci0jZW5kaWYKLQotICNpZm5kZWYgTkROQk9PU1RfTEFNQkRBX0lOQ09SUkVDVF9CSU5EX09WRVJMT0FESU5HIAotdGVtcGxhdGUgPGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzM+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjwzLCBmdW5jdGlvbl9hY3Rpb248Mz4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMwotICAgID46OnR5cGUKLSAgPgotPgotCi1iaW5kKGNvbnN0IEFyZzEmIGExLCBjb25zdCBBcmcyJiBhMiwgY29uc3QgQXJnMyYgYTMpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjwzLCBmdW5jdGlvbl9hY3Rpb248Mz4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczCi0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMykKLSAgICApOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgUmVzdWx0LCBjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczPgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248MywgZnVuY3Rpb25fYWN0aW9uPDMsIFJlc3VsdD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMwotICAgID46OnR5cGUKLSAgPgotPgotCi1iaW5kKGNvbnN0IEFyZzEmIGExLCBjb25zdCBBcmcyJiBhMiwgY29uc3QgQXJnMyYgYTMpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjwzLCBmdW5jdGlvbl9hY3Rpb248MywgUmVzdWx0PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMwotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzKQotICAgICk7Ci19Ci0KLQotICNlbHNlIAotdGVtcGxhdGUgPGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzM+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjwzLCBmdW5jdGlvbl9hY3Rpb248Mz4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChjb25zdCBBcmcxJiBhMSwgY29uc3QgQXJnMiYgYTIsIGNvbnN0IEFyZzMmIGEzKSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248MywgZnVuY3Rpb25fYWN0aW9uPDM+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMwotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczCi0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMykKLSAgICApOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgUmVzdWx0LCBjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczPgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248MywgZnVuY3Rpb25fYWN0aW9uPDMsIFJlc3VsdD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChjb25zdCBBcmcxJiBhMSwgY29uc3QgQXJnMiYgYTIsIGNvbnN0IEFyZzMmIGEzKSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248MywgZnVuY3Rpb25fYWN0aW9uPDMsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczCi0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsCi0gICAgICAgIGNvbnN0IEFyZzMKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzKQotICAgICk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBSZXN1bHQsIGNsYXNzIFBhcjEsIGNsYXNzIFBhcjIsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzM+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjwzLCBmdW5jdGlvbl9hY3Rpb248MywgUmVzdWx0PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICBSZXN1bHQoKikoUGFyMSwgUGFyMiksIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChSZXN1bHQoKiBjb25zdCAmIGExKShQYXIxLCBQYXIyKSwgY29uc3QgQXJnMiYgYTIsIGNvbnN0IEFyZzMmIGEzKSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248MywgZnVuY3Rpb25fYWN0aW9uPDMsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIFJlc3VsdCgqKShQYXIxLCBQYXIyKSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMwotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIFJlc3VsdCgqKShQYXIxLCBQYXIyKSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMwotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMpCi0gICAgKTsKLX0KLQotCi0gI2VuZGlmIAotCi0vLyA0LWFyZ3VtZW50IGJpbmQgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jaWZuZGVmIE5ETkJPT1NUX1JFRl9UT19GVU5DX0NPTkZMSUNUU19XSVRIX1JFRl9UT19UCi10ZW1wbGF0ZSA8Y2xhc3MgUmVzdWx0LCBjbGFzcyBQYXIxLCBjbGFzcyBQYXIyLCBjbGFzcyBQYXIzLCBjbGFzcyBBcmcyLAotICAgICAgICAgIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQ+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjw0LCBmdW5jdGlvbl9hY3Rpb248NCwgUmVzdWx0PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICBSZXN1bHQoJikoUGFyMSwgUGFyMiwgUGFyMyksIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChSZXN1bHQoJmExKShQYXIxLCBQYXIyLCBQYXIzKSwgY29uc3QgQXJnMiYgYTIsIGNvbnN0IEFyZzMmIGEzLAotICAgICBjb25zdCBBcmc0JiBhNCkgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDQsIGZ1bmN0aW9uX2FjdGlvbjw0LCBSZXN1bHQ+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBSZXN1bHQoJikoUGFyMSwgUGFyMiwgUGFyMyksIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBSZXN1bHQoJikoUGFyMSwgUGFyMiwgUGFyMyksIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzLCBhNCkKLSAgICApOwotfQotI2VuZGlmCi0KLSAjaWZuZGVmIE5ETkJPT1NUX0xBTUJEQV9JTkNPUlJFQ1RfQklORF9PVkVSTE9BRElORyAKLXRlbXBsYXRlIDxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0PgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248NCwgZnVuY3Rpb25fYWN0aW9uPDQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChjb25zdCBBcmcxJiBhMSwgY29uc3QgQXJnMiYgYTIsIGNvbnN0IEFyZzMmIGEzLCBjb25zdCBBcmc0JiBhNCkgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDQsIGZ1bmN0aW9uX2FjdGlvbjw0PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNAotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzLCBhNCkKLSAgICApOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgUmVzdWx0LCBjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0PgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248NCwgZnVuY3Rpb25fYWN0aW9uPDQsIFJlc3VsdD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNAotICAgID46OnR5cGUKLSAgPgotPgotCi1iaW5kKGNvbnN0IEFyZzEmIGExLCBjb25zdCBBcmcyJiBhMiwgY29uc3QgQXJnMyYgYTMsIGNvbnN0IEFyZzQmIGE0KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248NCwgZnVuY3Rpb25fYWN0aW9uPDQsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQpCi0gICAgKTsKLX0KLQotCi0gI2Vsc2UgCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnND4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDQsIGZ1bmN0aW9uX2FjdGlvbjw0PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywKLSAgICAgIGNvbnN0IEFyZzQKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChjb25zdCBBcmcxJiBhMSwgY29uc3QgQXJnMiYgYTIsIGNvbnN0IEFyZzMmIGEzLCBjb25zdCBBcmc0JiBhNCkgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDQsIGZ1bmN0aW9uX2FjdGlvbjw0PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsCi0gICAgICAgIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNAotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMsIGE0KQotICAgICk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBSZXN1bHQsIGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQ+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjw0LCBmdW5jdGlvbl9hY3Rpb248NCwgUmVzdWx0PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywKLSAgICAgIGNvbnN0IEFyZzQKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChjb25zdCBBcmcxJiBhMSwgY29uc3QgQXJnMiYgYTIsIGNvbnN0IEFyZzMmIGEzLCBjb25zdCBBcmc0JiBhNCkgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDQsIGZ1bmN0aW9uX2FjdGlvbjw0LCBSZXN1bHQ+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNAotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQpCi0gICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgUGFyMSwgY2xhc3MgUGFyMiwgY2xhc3MgUGFyMywgY2xhc3MgQXJnMiwKLSAgICAgICAgICBjbGFzcyBBcmczLCBjbGFzcyBBcmc0PgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248NCwgZnVuY3Rpb25fYWN0aW9uPDQsIFJlc3VsdD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgUmVzdWx0KCopKFBhcjEsIFBhcjIsIFBhcjMpLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoUmVzdWx0KCogY29uc3QgJiBhMSkoUGFyMSwgUGFyMiwgUGFyMyksIGNvbnN0IEFyZzImIGEyLAotICAgICBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjw0LCBmdW5jdGlvbl9hY3Rpb248NCwgUmVzdWx0PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgUmVzdWx0KCopKFBhcjEsIFBhcjIsIFBhcjMpLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0Ci0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgUmVzdWx0KCopKFBhcjEsIFBhcjIsIFBhcjMpLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQpCi0gICAgKTsKLX0KLQotCi0gI2VuZGlmIAotCi0vLyA1LWFyZ3VtZW50IGJpbmQgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jaWZuZGVmIE5ETkJPT1NUX1JFRl9UT19GVU5DX0NPTkZMSUNUU19XSVRIX1JFRl9UT19UCi10ZW1wbGF0ZSA8Y2xhc3MgUmVzdWx0LCBjbGFzcyBQYXIxLCBjbGFzcyBQYXIyLCBjbGFzcyBQYXIzLCBjbGFzcyBQYXI0LAotICAgICAgICAgIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzU+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjw1LCBmdW5jdGlvbl9hY3Rpb248NSwgUmVzdWx0PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICBSZXN1bHQoJikoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCksIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsCi0gICAgICBjb25zdCBBcmc1Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoUmVzdWx0KCZhMSkoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCksIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywKLSAgICAgY29uc3QgQXJnNCYgYTQsIGNvbnN0IEFyZzUmIGE1KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248NSwgZnVuY3Rpb25fYWN0aW9uPDUsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIFJlc3VsdCgmKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0KSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNCwKLSAgICAgICAgY29uc3QgQXJnNQotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIFJlc3VsdCgmKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0KSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNCwKLSAgICAgICAgY29uc3QgQXJnNQotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMsIGE0LCBhNSkKLSAgICApOwotfQotI2VuZGlmCi0KLSAjaWZuZGVmIE5ETkJPT1NUX0xBTUJEQV9JTkNPUlJFQ1RfQklORF9PVkVSTE9BRElORyAKLXRlbXBsYXRlIDxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1PgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248NSwgZnVuY3Rpb25fYWN0aW9uPDU+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChjb25zdCBBcmcxJiBhMSwgY29uc3QgQXJnMiYgYTIsIGNvbnN0IEFyZzMmIGEzLCBjb25zdCBBcmc0JiBhNCwKLSAgICAgY29uc3QgQXJnNSYgYTUpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjw1LCBmdW5jdGlvbl9hY3Rpb248NT4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQsIGE1KQotICAgICk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBSZXN1bHQsIGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsCi0gICAgICAgICAgY2xhc3MgQXJnNT4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDUsIGZ1bmN0aW9uX2FjdGlvbjw1LCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChjb25zdCBBcmcxJiBhMSwgY29uc3QgQXJnMiYgYTIsIGNvbnN0IEFyZzMmIGEzLCBjb25zdCBBcmc0JiBhNCwKLSAgICAgY29uc3QgQXJnNSYgYTUpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjw1LCBmdW5jdGlvbl9hY3Rpb248NSwgUmVzdWx0PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNQotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzLCBhNCwgYTUpCi0gICAgKTsKLX0KLQotCi0gI2Vsc2UgCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNT4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDUsIGZ1bmN0aW9uX2FjdGlvbjw1PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywKLSAgICAgIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChjb25zdCBBcmcxJiBhMSwgY29uc3QgQXJnMiYgYTIsIGNvbnN0IEFyZzMmIGEzLCBjb25zdCBBcmc0JiBhNCwKLSAgICAgY29uc3QgQXJnNSYgYTUpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjw1LCBmdW5jdGlvbl9hY3Rpb248NT4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1Ci0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsCi0gICAgICAgIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzLCBhNCwgYTUpCi0gICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwKLSAgICAgICAgICBjbGFzcyBBcmc1PgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248NSwgZnVuY3Rpb25fYWN0aW9uPDUsIFJlc3VsdD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsCi0gICAgICBjb25zdCBBcmc0LCBjb25zdCBBcmc1Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQsCi0gICAgIGNvbnN0IEFyZzUmIGE1KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248NSwgZnVuY3Rpb25fYWN0aW9uPDUsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1Ci0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsCi0gICAgICAgIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzLCBhNCwgYTUpCi0gICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgUGFyMSwgY2xhc3MgUGFyMiwgY2xhc3MgUGFyMywgY2xhc3MgUGFyNCwKLSAgICAgICAgICBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1PgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248NSwgZnVuY3Rpb25fYWN0aW9uPDUsIFJlc3VsdD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgUmVzdWx0KCopKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQpLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LAotICAgICAgY29uc3QgQXJnNQotICAgID46OnR5cGUKLSAgPgotPgotCi1iaW5kKFJlc3VsdCgqIGNvbnN0ICYgYTEpKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQpLCBjb25zdCBBcmcyJiBhMiwKLSAgICAgY29uc3QgQXJnMyYgYTMsIGNvbnN0IEFyZzQmIGE0LCBjb25zdCBBcmc1JiBhNSkgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDUsIGZ1bmN0aW9uX2FjdGlvbjw1LCBSZXN1bHQ+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBSZXN1bHQoKikoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCksIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsCi0gICAgICAgIGNvbnN0IEFyZzUKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBSZXN1bHQoKikoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCksIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsCi0gICAgICAgIGNvbnN0IEFyZzUKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzLCBhNCwgYTUpCi0gICAgKTsKLX0KLQotCi0gI2VuZGlmIAotCi0vLyA2LWFyZ3VtZW50IGJpbmQgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jaWZuZGVmIE5ETkJPT1NUX1JFRl9UT19GVU5DX0NPTkZMSUNUU19XSVRIX1JFRl9UT19UCi10ZW1wbGF0ZSA8Y2xhc3MgUmVzdWx0LCBjbGFzcyBQYXIxLCBjbGFzcyBQYXIyLCBjbGFzcyBQYXIzLCBjbGFzcyBQYXI0LAotICAgICAgICAgIGNsYXNzIFBhcjUsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzUsCi0gICAgICAgICAgY2xhc3MgQXJnNj4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDYsIGZ1bmN0aW9uX2FjdGlvbjw2LCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIFJlc3VsdCgmKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1KSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywKLSAgICAgIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChSZXN1bHQoJmExKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1KSwgY29uc3QgQXJnMiYgYTIsCi0gICAgIGNvbnN0IEFyZzMmIGEzLCBjb25zdCBBcmc0JiBhNCwgY29uc3QgQXJnNSYgYTUsIGNvbnN0IEFyZzYmIGE2KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248NiwgZnVuY3Rpb25fYWN0aW9uPDYsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIFJlc3VsdCgmKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1KSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywKLSAgICAgICAgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNgotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIFJlc3VsdCgmKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1KSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywKLSAgICAgICAgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNgotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpCi0gICAgKTsKLX0KLSNlbmRpZgotCi0gI2lmbmRlZiBORE5CT09TVF9MQU1CREFfSU5DT1JSRUNUX0JJTkRfT1ZFUkxPQURJTkcgCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNSwKLSAgICAgICAgICBjbGFzcyBBcmc2PgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248NiwgZnVuY3Rpb25fYWN0aW9uPDY+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChjb25zdCBBcmcxJiBhMSwgY29uc3QgQXJnMiYgYTIsIGNvbnN0IEFyZzMmIGEzLCBjb25zdCBBcmc0JiBhNCwKLSAgICAgY29uc3QgQXJnNSYgYTUsIGNvbnN0IEFyZzYmIGE2KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248NiwgZnVuY3Rpb25fYWN0aW9uPDY+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2Ci0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNgotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpCi0gICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwKLSAgICAgICAgICBjbGFzcyBBcmc1LCBjbGFzcyBBcmc2PgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248NiwgZnVuY3Rpb25fYWN0aW9uPDYsIFJlc3VsdD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNgotICAgID46OnR5cGUKLSAgPgotPgotCi1iaW5kKGNvbnN0IEFyZzEmIGExLCBjb25zdCBBcmcyJiBhMiwgY29uc3QgQXJnMyYgYTMsIGNvbnN0IEFyZzQmIGE0LAotICAgICBjb25zdCBBcmc1JiBhNSwgY29uc3QgQXJnNiYgYTYpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjw2LCBmdW5jdGlvbl9hY3Rpb248NiwgUmVzdWx0PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNgotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KQotICAgICk7Ci19Ci0KLQotICNlbHNlIAotdGVtcGxhdGUgPGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzUsCi0gICAgICAgICAgY2xhc3MgQXJnNj4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDYsIGZ1bmN0aW9uX2FjdGlvbjw2PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywKLSAgICAgIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChjb25zdCBBcmcxJiBhMSwgY29uc3QgQXJnMiYgYTIsIGNvbnN0IEFyZzMmIGEzLCBjb25zdCBBcmc0JiBhNCwKLSAgICAgY29uc3QgQXJnNSYgYTUsIGNvbnN0IEFyZzYmIGE2KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248NiwgZnVuY3Rpb25fYWN0aW9uPDY+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNgotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQsIGE1LCBhNikKLSAgICApOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgUmVzdWx0LCBjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LAotICAgICAgICAgIGNsYXNzIEFyZzUsIGNsYXNzIEFyZzY+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjw2LCBmdW5jdGlvbl9hY3Rpb248NiwgUmVzdWx0PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywKLSAgICAgIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChjb25zdCBBcmcxJiBhMSwgY29uc3QgQXJnMiYgYTIsIGNvbnN0IEFyZzMmIGEzLCBjb25zdCBBcmc0JiBhNCwKLSAgICAgY29uc3QgQXJnNSYgYTUsIGNvbnN0IEFyZzYmIGE2KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248NiwgZnVuY3Rpb25fYWN0aW9uPDYsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2Ci0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsCi0gICAgICAgIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KQotICAgICk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBSZXN1bHQsIGNsYXNzIFBhcjEsIGNsYXNzIFBhcjIsIGNsYXNzIFBhcjMsIGNsYXNzIFBhcjQsCi0gICAgICAgICAgY2xhc3MgUGFyNSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNSwKLSAgICAgICAgICBjbGFzcyBBcmc2PgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248NiwgZnVuY3Rpb25fYWN0aW9uPDYsIFJlc3VsdD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgUmVzdWx0KCopKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQsIFBhcjUpLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLAotICAgICAgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNgotICAgID46OnR5cGUKLSAgPgotPgotCi1iaW5kKFJlc3VsdCgqIGNvbnN0ICYgYTEpKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQsIFBhcjUpLCBjb25zdCBBcmcyJiBhMiwKLSAgICAgY29uc3QgQXJnMyYgYTMsIGNvbnN0IEFyZzQmIGE0LCBjb25zdCBBcmc1JiBhNSwgY29uc3QgQXJnNiYgYTYpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjw2LCBmdW5jdGlvbl9hY3Rpb248NiwgUmVzdWx0PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgUmVzdWx0KCopKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQsIFBhcjUpLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLAotICAgICAgICBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2Ci0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgUmVzdWx0KCopKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQsIFBhcjUpLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLAotICAgICAgICBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQsIGE1LCBhNikKLSAgICApOwotfQotCi0KLSAjZW5kaWYgCi0KLS8vIDctYXJndW1lbnQgYmluZCBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSNpZm5kZWYgTkROQk9PU1RfUkVGX1RPX0ZVTkNfQ09ORkxJQ1RTX1dJVEhfUkVGX1RPX1QKLXRlbXBsYXRlIDxjbGFzcyBSZXN1bHQsIGNsYXNzIFBhcjEsIGNsYXNzIFBhcjIsIGNsYXNzIFBhcjMsIGNsYXNzIFBhcjQsCi0gICAgICAgICAgY2xhc3MgUGFyNSwgY2xhc3MgUGFyNiwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwKLSAgICAgICAgICBjbGFzcyBBcmc1LCBjbGFzcyBBcmc2LCBjbGFzcyBBcmc3PgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248NywgZnVuY3Rpb25fYWN0aW9uPDcsIFJlc3VsdD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgUmVzdWx0KCYpKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQsIFBhcjUsIFBhcjYpLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLAotICAgICAgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNwotICAgID46OnR5cGUKLSAgPgotPgotCi1iaW5kKFJlc3VsdCgmYTEpKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQsIFBhcjUsIFBhcjYpLCBjb25zdCBBcmcyJiBhMiwKLSAgICAgY29uc3QgQXJnMyYgYTMsIGNvbnN0IEFyZzQmIGE0LCBjb25zdCBBcmc1JiBhNSwgY29uc3QgQXJnNiYgYTYsCi0gICAgIGNvbnN0IEFyZzcmIGE3KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248NywgZnVuY3Rpb25fYWN0aW9uPDcsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIFJlc3VsdCgmKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1LCBQYXI2KSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywKLSAgICAgICAgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNwotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIFJlc3VsdCgmKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1LCBQYXI2KSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywKLSAgICAgICAgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNwotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KQotICAgICk7Ci19Ci0jZW5kaWYKLQotICNpZm5kZWYgTkROQk9PU1RfTEFNQkRBX0lOQ09SUkVDVF9CSU5EX09WRVJMT0FESU5HIAotdGVtcGxhdGUgPGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzUsCi0gICAgICAgICAgY2xhc3MgQXJnNiwgY2xhc3MgQXJnNz4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDcsIGZ1bmN0aW9uX2FjdGlvbjw3PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LAotICAgICAgY29uc3QgQXJnNwotICAgID46OnR5cGUKLSAgPgotPgotCi1iaW5kKGNvbnN0IEFyZzEmIGExLCBjb25zdCBBcmcyJiBhMiwgY29uc3QgQXJnMyYgYTMsIGNvbnN0IEFyZzQmIGE0LAotICAgICBjb25zdCBBcmc1JiBhNSwgY29uc3QgQXJnNiYgYTYsIGNvbnN0IEFyZzcmIGE3KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248NywgZnVuY3Rpb25fYWN0aW9uPDc+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LAotICAgICAgICBjb25zdCBBcmc2LCBjb25zdCBBcmc3Ci0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwKLSAgICAgICAgY29uc3QgQXJnNiwgY29uc3QgQXJnNwotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KQotICAgICk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBSZXN1bHQsIGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsCi0gICAgICAgICAgY2xhc3MgQXJnNSwgY2xhc3MgQXJnNiwgY2xhc3MgQXJnNz4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDcsIGZ1bmN0aW9uX2FjdGlvbjw3LCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsCi0gICAgICBjb25zdCBBcmc3Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQsCi0gICAgIGNvbnN0IEFyZzUmIGE1LCBjb25zdCBBcmc2JiBhNiwgY29uc3QgQXJnNyYgYTcpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjw3LCBmdW5jdGlvbl9hY3Rpb248NywgUmVzdWx0PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwKLSAgICAgICAgY29uc3QgQXJnNiwgY29uc3QgQXJnNwotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsCi0gICAgICAgIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNykKLSAgICApOwotfQotCi0KLSAjZWxzZSAKLXRlbXBsYXRlIDxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1LAotICAgICAgICAgIGNsYXNzIEFyZzYsIGNsYXNzIEFyZzc+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjw3LCBmdW5jdGlvbl9hY3Rpb248Nz4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsCi0gICAgICBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQsCi0gICAgIGNvbnN0IEFyZzUmIGE1LCBjb25zdCBBcmc2JiBhNiwgY29uc3QgQXJnNyYgYTcpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjw3LCBmdW5jdGlvbl9hY3Rpb248Nz4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3Ci0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsCi0gICAgICAgIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNykKLSAgICApOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgUmVzdWx0LCBjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LAotICAgICAgICAgIGNsYXNzIEFyZzUsIGNsYXNzIEFyZzYsIGNsYXNzIEFyZzc+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjw3LCBmdW5jdGlvbl9hY3Rpb248NywgUmVzdWx0PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywKLSAgICAgIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChjb25zdCBBcmcxJiBhMSwgY29uc3QgQXJnMiYgYTIsIGNvbnN0IEFyZzMmIGEzLCBjb25zdCBBcmc0JiBhNCwKLSAgICAgY29uc3QgQXJnNSYgYTUsIGNvbnN0IEFyZzYmIGE2LCBjb25zdCBBcmc3JiBhNykgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDcsIGZ1bmN0aW9uX2FjdGlvbjw3LCBSZXN1bHQ+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNwotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpCi0gICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgUGFyMSwgY2xhc3MgUGFyMiwgY2xhc3MgUGFyMywgY2xhc3MgUGFyNCwKLSAgICAgICAgICBjbGFzcyBQYXI1LCBjbGFzcyBQYXI2LCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LAotICAgICAgICAgIGNsYXNzIEFyZzUsIGNsYXNzIEFyZzYsIGNsYXNzIEFyZzc+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjw3LCBmdW5jdGlvbl9hY3Rpb248NywgUmVzdWx0PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICBSZXN1bHQoKikoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCwgUGFyNSwgUGFyNiksIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsCi0gICAgICBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoUmVzdWx0KCogY29uc3QgJiBhMSkoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCwgUGFyNSwgUGFyNiksCi0gICAgIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQsIGNvbnN0IEFyZzUmIGE1LAotICAgICBjb25zdCBBcmc2JiBhNiwgY29uc3QgQXJnNyYgYTcpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjw3LCBmdW5jdGlvbl9hY3Rpb248NywgUmVzdWx0PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgUmVzdWx0KCopKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQsIFBhcjUsIFBhcjYpLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLAotICAgICAgICBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3Ci0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgUmVzdWx0KCopKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQsIFBhcjUsIFBhcjYpLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLAotICAgICAgICBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpCi0gICAgKTsKLX0KLQotCi0gI2VuZGlmIAotCi0vLyA4LWFyZ3VtZW50IGJpbmQgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jaWZuZGVmIE5ETkJPT1NUX1JFRl9UT19GVU5DX0NPTkZMSUNUU19XSVRIX1JFRl9UT19UCi10ZW1wbGF0ZSA8Y2xhc3MgUmVzdWx0LCBjbGFzcyBQYXIxLCBjbGFzcyBQYXIyLCBjbGFzcyBQYXIzLCBjbGFzcyBQYXI0LAotICAgICAgICAgIGNsYXNzIFBhcjUsIGNsYXNzIFBhcjYsIGNsYXNzIFBhcjcsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsCi0gICAgICAgICAgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNSwgY2xhc3MgQXJnNiwgY2xhc3MgQXJnNywgY2xhc3MgQXJnOD4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDgsIGZ1bmN0aW9uX2FjdGlvbjw4LCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIFJlc3VsdCgmKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1LCBQYXI2LCBQYXI3KSwgY29uc3QgQXJnMiwKLSAgICAgIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChSZXN1bHQoJmExKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1LCBQYXI2LCBQYXI3KSwgY29uc3QgQXJnMiYgYTIsCi0gICAgIGNvbnN0IEFyZzMmIGEzLCBjb25zdCBBcmc0JiBhNCwgY29uc3QgQXJnNSYgYTUsIGNvbnN0IEFyZzYmIGE2LAotICAgICBjb25zdCBBcmc3JiBhNywgY29uc3QgQXJnOCYgYTgpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjw4LCBmdW5jdGlvbl9hY3Rpb248OCwgUmVzdWx0PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgUmVzdWx0KCYpKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQsIFBhcjUsIFBhcjYsIFBhcjcpLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3LCBjb25zdCBBcmc4Ci0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgUmVzdWx0KCYpKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQsIFBhcjUsIFBhcjYsIFBhcjcpLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3LCBjb25zdCBBcmc4Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KQotICAgICk7Ci19Ci0jZW5kaWYKLQotICNpZm5kZWYgTkROQk9PU1RfTEFNQkRBX0lOQ09SUkVDVF9CSU5EX09WRVJMT0FESU5HIAotdGVtcGxhdGUgPGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzUsCi0gICAgICAgICAgY2xhc3MgQXJnNiwgY2xhc3MgQXJnNywgY2xhc3MgQXJnOD4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDgsIGZ1bmN0aW9uX2FjdGlvbjw4PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LAotICAgICAgY29uc3QgQXJnNywgY29uc3QgQXJnOAotICAgID46OnR5cGUKLSAgPgotPgotCi1iaW5kKGNvbnN0IEFyZzEmIGExLCBjb25zdCBBcmcyJiBhMiwgY29uc3QgQXJnMyYgYTMsIGNvbnN0IEFyZzQmIGE0LAotICAgICBjb25zdCBBcmc1JiBhNSwgY29uc3QgQXJnNiYgYTYsIGNvbnN0IEFyZzcmIGE3LCBjb25zdCBBcmc4JiBhOCkgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDgsIGZ1bmN0aW9uX2FjdGlvbjw4PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwKLSAgICAgICAgY29uc3QgQXJnNiwgY29uc3QgQXJnNywgY29uc3QgQXJnOAotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsCi0gICAgICAgIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpCi0gICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwKLSAgICAgICAgICBjbGFzcyBBcmc1LCBjbGFzcyBBcmc2LCBjbGFzcyBBcmc3LCBjbGFzcyBBcmc4PgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248OCwgZnVuY3Rpb25fYWN0aW9uPDgsIFJlc3VsdD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwKLSAgICAgIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChjb25zdCBBcmcxJiBhMSwgY29uc3QgQXJnMiYgYTIsIGNvbnN0IEFyZzMmIGEzLCBjb25zdCBBcmc0JiBhNCwKLSAgICAgY29uc3QgQXJnNSYgYTUsIGNvbnN0IEFyZzYmIGE2LCBjb25zdCBBcmc3JiBhNywgY29uc3QgQXJnOCYgYTgpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjw4LCBmdW5jdGlvbl9hY3Rpb248OCwgUmVzdWx0PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwKLSAgICAgICAgY29uc3QgQXJnNiwgY29uc3QgQXJnNywgY29uc3QgQXJnOAotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsCi0gICAgICAgIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpCi0gICAgKTsKLX0KLQotCi0gI2Vsc2UgCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNSwKLSAgICAgICAgICBjbGFzcyBBcmc2LCBjbGFzcyBBcmc3LCBjbGFzcyBBcmc4PgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248OCwgZnVuY3Rpb25fYWN0aW9uPDg+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLAotICAgICAgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNywgY29uc3QgQXJnOAotICAgID46OnR5cGUKLSAgPgotPgotCi1iaW5kKGNvbnN0IEFyZzEmIGExLCBjb25zdCBBcmcyJiBhMiwgY29uc3QgQXJnMyYgYTMsIGNvbnN0IEFyZzQmIGE0LAotICAgICBjb25zdCBBcmc1JiBhNSwgY29uc3QgQXJnNiYgYTYsIGNvbnN0IEFyZzcmIGE3LCBjb25zdCBBcmc4JiBhOCkgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDgsIGZ1bmN0aW9uX2FjdGlvbjw4PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsCi0gICAgICAgIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNywgY29uc3QgQXJnOAotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCkKLSAgICApOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgUmVzdWx0LCBjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LAotICAgICAgICAgIGNsYXNzIEFyZzUsIGNsYXNzIEFyZzYsIGNsYXNzIEFyZzcsIGNsYXNzIEFyZzg+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjw4LCBmdW5jdGlvbl9hY3Rpb248OCwgUmVzdWx0PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywKLSAgICAgIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChjb25zdCBBcmcxJiBhMSwgY29uc3QgQXJnMiYgYTIsIGNvbnN0IEFyZzMmIGEzLCBjb25zdCBBcmc0JiBhNCwKLSAgICAgY29uc3QgQXJnNSYgYTUsIGNvbnN0IEFyZzYmIGE2LCBjb25zdCBBcmc3JiBhNywgY29uc3QgQXJnOCYgYTgpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjw4LCBmdW5jdGlvbl9hY3Rpb248OCwgUmVzdWx0PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsCi0gICAgICAgIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNywgY29uc3QgQXJnOAotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCkKLSAgICApOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgUmVzdWx0LCBjbGFzcyBQYXIxLCBjbGFzcyBQYXIyLCBjbGFzcyBQYXIzLCBjbGFzcyBQYXI0LAotICAgICAgICAgIGNsYXNzIFBhcjUsIGNsYXNzIFBhcjYsIGNsYXNzIFBhcjcsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsCi0gICAgICAgICAgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNSwgY2xhc3MgQXJnNiwgY2xhc3MgQXJnNywgY2xhc3MgQXJnOD4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDgsIGZ1bmN0aW9uX2FjdGlvbjw4LCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIFJlc3VsdCgqKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1LCBQYXI2LCBQYXI3KSwgY29uc3QgQXJnMiwKLSAgICAgIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChSZXN1bHQoKiBjb25zdCAmIGExKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1LCBQYXI2LCBQYXI3KSwKLSAgICAgY29uc3QgQXJnMiYgYTIsIGNvbnN0IEFyZzMmIGEzLCBjb25zdCBBcmc0JiBhNCwgY29uc3QgQXJnNSYgYTUsCi0gICAgIGNvbnN0IEFyZzYmIGE2LCBjb25zdCBBcmc3JiBhNywgY29uc3QgQXJnOCYgYTgpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjw4LCBmdW5jdGlvbl9hY3Rpb248OCwgUmVzdWx0PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgUmVzdWx0KCopKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQsIFBhcjUsIFBhcjYsIFBhcjcpLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3LCBjb25zdCBBcmc4Ci0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgUmVzdWx0KCopKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQsIFBhcjUsIFBhcjYsIFBhcjcpLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3LCBjb25zdCBBcmc4Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KQotICAgICk7Ci19Ci0KLQotICNlbmRpZiAKLQotLy8gOS1hcmd1bWVudCBiaW5kIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotI2lmbmRlZiBORE5CT09TVF9SRUZfVE9fRlVOQ19DT05GTElDVFNfV0lUSF9SRUZfVE9fVAotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgUGFyMSwgY2xhc3MgUGFyMiwgY2xhc3MgUGFyMywgY2xhc3MgUGFyNCwKLSAgICAgICAgICBjbGFzcyBQYXI1LCBjbGFzcyBQYXI2LCBjbGFzcyBQYXI3LCBjbGFzcyBQYXI4LCBjbGFzcyBBcmcyLAotICAgICAgICAgIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzUsIGNsYXNzIEFyZzYsIGNsYXNzIEFyZzcsCi0gICAgICAgICAgY2xhc3MgQXJnOCwgY2xhc3MgQXJnOT4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDksIGZ1bmN0aW9uX2FjdGlvbjw5LCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIFJlc3VsdCgmKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1LCBQYXI2LCBQYXI3LCBQYXI4KSwgY29uc3QgQXJnMiwKLSAgICAgIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgsCi0gICAgICBjb25zdCBBcmc5Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoUmVzdWx0KCZhMSkoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCwgUGFyNSwgUGFyNiwgUGFyNywgUGFyOCksCi0gICAgIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQsIGNvbnN0IEFyZzUmIGE1LAotICAgICBjb25zdCBBcmc2JiBhNiwgY29uc3QgQXJnNyYgYTcsIGNvbnN0IEFyZzgmIGE4LCBjb25zdCBBcmc5JiBhOSkgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDksIGZ1bmN0aW9uX2FjdGlvbjw5LCBSZXN1bHQ+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBSZXN1bHQoJikoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCwgUGFyNSwgUGFyNiwgUGFyNywgUGFyOCksIGNvbnN0IEFyZzIsCi0gICAgICAgIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcsCi0gICAgICAgIGNvbnN0IEFyZzgsIGNvbnN0IEFyZzkKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBSZXN1bHQoJikoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCwgUGFyNSwgUGFyNiwgUGFyNywgUGFyOCksIGNvbnN0IEFyZzIsCi0gICAgICAgIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcsCi0gICAgICAgIGNvbnN0IEFyZzgsIGNvbnN0IEFyZzkKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5KQotICAgICk7Ci19Ci0jZW5kaWYKLQotICNpZm5kZWYgTkROQk9PU1RfTEFNQkRBX0lOQ09SUkVDVF9CSU5EX09WRVJMT0FESU5HIAotdGVtcGxhdGUgPGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzUsCi0gICAgICAgICAgY2xhc3MgQXJnNiwgY2xhc3MgQXJnNywgY2xhc3MgQXJnOCwgY2xhc3MgQXJnOT4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDksIGZ1bmN0aW9uX2FjdGlvbjw5PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LAotICAgICAgY29uc3QgQXJnNywgY29uc3QgQXJnOCwgY29uc3QgQXJnOQotICAgID46OnR5cGUKLSAgPgotPgotCi1iaW5kKGNvbnN0IEFyZzEmIGExLCBjb25zdCBBcmcyJiBhMiwgY29uc3QgQXJnMyYgYTMsIGNvbnN0IEFyZzQmIGE0LAotICAgICBjb25zdCBBcmc1JiBhNSwgY29uc3QgQXJnNiYgYTYsIGNvbnN0IEFyZzcmIGE3LCBjb25zdCBBcmc4JiBhOCwKLSAgICAgY29uc3QgQXJnOSYgYTkpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjw5LCBmdW5jdGlvbl9hY3Rpb248OT4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsCi0gICAgICAgIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgsIGNvbnN0IEFyZzkKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LAotICAgICAgICBjb25zdCBBcmc2LCBjb25zdCBBcmc3LCBjb25zdCBBcmc4LCBjb25zdCBBcmc5Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSkKLSAgICApOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgUmVzdWx0LCBjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LAotICAgICAgICAgIGNsYXNzIEFyZzUsIGNsYXNzIEFyZzYsIGNsYXNzIEFyZzcsIGNsYXNzIEFyZzgsIGNsYXNzIEFyZzk+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjw5LCBmdW5jdGlvbl9hY3Rpb248OSwgUmVzdWx0PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LAotICAgICAgY29uc3QgQXJnNywgY29uc3QgQXJnOCwgY29uc3QgQXJnOQotICAgID46OnR5cGUKLSAgPgotPgotCi1iaW5kKGNvbnN0IEFyZzEmIGExLCBjb25zdCBBcmcyJiBhMiwgY29uc3QgQXJnMyYgYTMsIGNvbnN0IEFyZzQmIGE0LAotICAgICBjb25zdCBBcmc1JiBhNSwgY29uc3QgQXJnNiYgYTYsIGNvbnN0IEFyZzcmIGE3LCBjb25zdCBBcmc4JiBhOCwKLSAgICAgY29uc3QgQXJnOSYgYTkpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjw5LCBmdW5jdGlvbl9hY3Rpb248OSwgUmVzdWx0PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwKLSAgICAgICAgY29uc3QgQXJnNiwgY29uc3QgQXJnNywgY29uc3QgQXJnOCwgY29uc3QgQXJnOQotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsCi0gICAgICAgIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgsIGNvbnN0IEFyZzkKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5KQotICAgICk7Ci19Ci0KLQotICNlbHNlIAotdGVtcGxhdGUgPGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzUsCi0gICAgICAgICAgY2xhc3MgQXJnNiwgY2xhc3MgQXJnNywgY2xhc3MgQXJnOCwgY2xhc3MgQXJnOT4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDksIGZ1bmN0aW9uX2FjdGlvbjw5PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywKLSAgICAgIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgsIGNvbnN0IEFyZzkKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChjb25zdCBBcmcxJiBhMSwgY29uc3QgQXJnMiYgYTIsIGNvbnN0IEFyZzMmIGEzLCBjb25zdCBBcmc0JiBhNCwKLSAgICAgY29uc3QgQXJnNSYgYTUsIGNvbnN0IEFyZzYmIGE2LCBjb25zdCBBcmc3JiBhNywgY29uc3QgQXJnOCYgYTgsCi0gICAgIGNvbnN0IEFyZzkmIGE5KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248OSwgZnVuY3Rpb25fYWN0aW9uPDk+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNywKLSAgICAgICAgY29uc3QgQXJnOCwgY29uc3QgQXJnOQotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3LAotICAgICAgICBjb25zdCBBcmc4LCBjb25zdCBBcmc5Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSkKLSAgICApOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgUmVzdWx0LCBjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LAotICAgICAgICAgIGNsYXNzIEFyZzUsIGNsYXNzIEFyZzYsIGNsYXNzIEFyZzcsIGNsYXNzIEFyZzgsIGNsYXNzIEFyZzk+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjw5LCBmdW5jdGlvbl9hY3Rpb248OSwgUmVzdWx0PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywKLSAgICAgIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgsIGNvbnN0IEFyZzkKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChjb25zdCBBcmcxJiBhMSwgY29uc3QgQXJnMiYgYTIsIGNvbnN0IEFyZzMmIGEzLCBjb25zdCBBcmc0JiBhNCwKLSAgICAgY29uc3QgQXJnNSYgYTUsIGNvbnN0IEFyZzYmIGE2LCBjb25zdCBBcmc3JiBhNywgY29uc3QgQXJnOCYgYTgsCi0gICAgIGNvbnN0IEFyZzkmIGE5KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248OSwgZnVuY3Rpb25fYWN0aW9uPDksIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3LAotICAgICAgICBjb25zdCBBcmc4LCBjb25zdCBBcmc5Ci0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsCi0gICAgICAgIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcsCi0gICAgICAgIGNvbnN0IEFyZzgsIGNvbnN0IEFyZzkKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5KQotICAgICk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBSZXN1bHQsIGNsYXNzIFBhcjEsIGNsYXNzIFBhcjIsIGNsYXNzIFBhcjMsIGNsYXNzIFBhcjQsCi0gICAgICAgICAgY2xhc3MgUGFyNSwgY2xhc3MgUGFyNiwgY2xhc3MgUGFyNywgY2xhc3MgUGFyOCwgY2xhc3MgQXJnMiwKLSAgICAgICAgICBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1LCBjbGFzcyBBcmc2LCBjbGFzcyBBcmc3LAotICAgICAgICAgIGNsYXNzIEFyZzgsIGNsYXNzIEFyZzk+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjw5LCBmdW5jdGlvbl9hY3Rpb248OSwgUmVzdWx0PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICBSZXN1bHQoKikoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCwgUGFyNSwgUGFyNiwgUGFyNywgUGFyOCksIGNvbnN0IEFyZzIsCi0gICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3LCBjb25zdCBBcmc4LAotICAgICAgY29uc3QgQXJnOQotICAgID46OnR5cGUKLSAgPgotPgotCi1iaW5kKFJlc3VsdCgqIGNvbnN0ICYgYTEpKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQsIFBhcjUsIFBhcjYsIFBhcjcsIFBhcjgpLAotICAgICBjb25zdCBBcmcyJiBhMiwgY29uc3QgQXJnMyYgYTMsIGNvbnN0IEFyZzQmIGE0LCBjb25zdCBBcmc1JiBhNSwKLSAgICAgY29uc3QgQXJnNiYgYTYsIGNvbnN0IEFyZzcmIGE3LCBjb25zdCBBcmc4JiBhOCwgY29uc3QgQXJnOSYgYTkpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjw5LCBmdW5jdGlvbl9hY3Rpb248OSwgUmVzdWx0PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgUmVzdWx0KCopKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQsIFBhcjUsIFBhcjYsIFBhcjcsIFBhcjgpLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3LAotICAgICAgICBjb25zdCBBcmc4LCBjb25zdCBBcmc5Ci0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgUmVzdWx0KCopKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQsIFBhcjUsIFBhcjYsIFBhcjcsIFBhcjgpLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3LAotICAgICAgICBjb25zdCBBcmc4LCBjb25zdCBBcmc5Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSkKLSAgICApOwotfQotCi0KLSAjZW5kaWYgCi0KLS8vIDEwLWFyZ3VtZW50IGJpbmQgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jaWZuZGVmIE5ETkJPT1NUX1JFRl9UT19GVU5DX0NPTkZMSUNUU19XSVRIX1JFRl9UT19UCi10ZW1wbGF0ZSA8Y2xhc3MgUmVzdWx0LCBjbGFzcyBQYXIxLCBjbGFzcyBQYXIyLCBjbGFzcyBQYXIzLCBjbGFzcyBQYXI0LAotICAgICAgICAgIGNsYXNzIFBhcjUsIGNsYXNzIFBhcjYsIGNsYXNzIFBhcjcsIGNsYXNzIFBhcjgsIGNsYXNzIFBhcjksCi0gICAgICAgICAgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNSwgY2xhc3MgQXJnNiwKLSAgICAgICAgICBjbGFzcyBBcmc3LCBjbGFzcyBBcmc4LCBjbGFzcyBBcmc5LCBjbGFzcyBBcmcxMD4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDEwLCBmdW5jdGlvbl9hY3Rpb248MTAsIFJlc3VsdD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgUmVzdWx0KCYpKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQsIFBhcjUsIFBhcjYsIFBhcjcsIFBhcjgsIFBhcjkpLAotICAgICAgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNywKLSAgICAgIGNvbnN0IEFyZzgsIGNvbnN0IEFyZzksIGNvbnN0IEFyZzEwCi0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoUmVzdWx0KCZhMSkoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCwgUGFyNSwgUGFyNiwgUGFyNywgUGFyOCwgUGFyOSksCi0gICAgIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQsIGNvbnN0IEFyZzUmIGE1LAotICAgICBjb25zdCBBcmc2JiBhNiwgY29uc3QgQXJnNyYgYTcsIGNvbnN0IEFyZzgmIGE4LCBjb25zdCBBcmc5JiBhOSwKLSAgICAgY29uc3QgQXJnMTAmIGExMCkgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDEwLCBmdW5jdGlvbl9hY3Rpb248MTAsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIFJlc3VsdCgmKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1LCBQYXI2LCBQYXI3LCBQYXI4LCBQYXI5KSwKLSAgICAgICAgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwKLSAgICAgICAgY29uc3QgQXJnNywgY29uc3QgQXJnOCwgY29uc3QgQXJnOSwgY29uc3QgQXJnMTAKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBSZXN1bHQoJikoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCwgUGFyNSwgUGFyNiwgUGFyNywgUGFyOCwgUGFyOSksCi0gICAgICAgIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsCi0gICAgICAgIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgsIGNvbnN0IEFyZzksIGNvbnN0IEFyZzEwCi0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSwgYTEwKQotICAgICk7Ci19Ci0jZW5kaWYKLQotICNpZm5kZWYgTkROQk9PU1RfTEFNQkRBX0lOQ09SUkVDVF9CSU5EX09WRVJMT0FESU5HIAotdGVtcGxhdGUgPGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzUsCi0gICAgICAgICAgY2xhc3MgQXJnNiwgY2xhc3MgQXJnNywgY2xhc3MgQXJnOCwgY2xhc3MgQXJnOSwgY2xhc3MgQXJnMTA+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjwxMCwgZnVuY3Rpb25fYWN0aW9uPDEwPiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LAotICAgICAgY29uc3QgQXJnNywgY29uc3QgQXJnOCwgY29uc3QgQXJnOSwgY29uc3QgQXJnMTAKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChjb25zdCBBcmcxJiBhMSwgY29uc3QgQXJnMiYgYTIsIGNvbnN0IEFyZzMmIGEzLCBjb25zdCBBcmc0JiBhNCwKLSAgICAgY29uc3QgQXJnNSYgYTUsIGNvbnN0IEFyZzYmIGE2LCBjb25zdCBBcmc3JiBhNywgY29uc3QgQXJnOCYgYTgsCi0gICAgIGNvbnN0IEFyZzkmIGE5LCBjb25zdCBBcmcxMCYgYTEwKSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248MTAsIGZ1bmN0aW9uX2FjdGlvbjwxMD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsCi0gICAgICAgIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgsIGNvbnN0IEFyZzksIGNvbnN0IEFyZzEwCi0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwKLSAgICAgICAgY29uc3QgQXJnNiwgY29uc3QgQXJnNywgY29uc3QgQXJnOCwgY29uc3QgQXJnOSwgY29uc3QgQXJnMTAKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5LCBhMTApCi0gICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwKLSAgICAgICAgICBjbGFzcyBBcmc1LCBjbGFzcyBBcmc2LCBjbGFzcyBBcmc3LCBjbGFzcyBBcmc4LCBjbGFzcyBBcmc5LAotICAgICAgICAgIGNsYXNzIEFyZzEwPgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248MTAsIGZ1bmN0aW9uX2FjdGlvbjwxMCwgUmVzdWx0PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LAotICAgICAgY29uc3QgQXJnNywgY29uc3QgQXJnOCwgY29uc3QgQXJnOSwgY29uc3QgQXJnMTAKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChjb25zdCBBcmcxJiBhMSwgY29uc3QgQXJnMiYgYTIsIGNvbnN0IEFyZzMmIGEzLCBjb25zdCBBcmc0JiBhNCwKLSAgICAgY29uc3QgQXJnNSYgYTUsIGNvbnN0IEFyZzYmIGE2LCBjb25zdCBBcmc3JiBhNywgY29uc3QgQXJnOCYgYTgsCi0gICAgIGNvbnN0IEFyZzkmIGE5LCBjb25zdCBBcmcxMCYgYTEwKSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248MTAsIGZ1bmN0aW9uX2FjdGlvbjwxMCwgUmVzdWx0PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwKLSAgICAgICAgY29uc3QgQXJnNiwgY29uc3QgQXJnNywgY29uc3QgQXJnOCwgY29uc3QgQXJnOSwgY29uc3QgQXJnMTAKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LAotICAgICAgICBjb25zdCBBcmc2LCBjb25zdCBBcmc3LCBjb25zdCBBcmc4LCBjb25zdCBBcmc5LCBjb25zdCBBcmcxMAotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTksIGExMCkKLSAgICApOwotfQotCi0KLSAjZWxzZSAKLXRlbXBsYXRlIDxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1LAotICAgICAgICAgIGNsYXNzIEFyZzYsIGNsYXNzIEFyZzcsIGNsYXNzIEFyZzgsIGNsYXNzIEFyZzksIGNsYXNzIEFyZzEwPgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248MTAsIGZ1bmN0aW9uX2FjdGlvbjwxMD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsCi0gICAgICBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3LCBjb25zdCBBcmc4LCBjb25zdCBBcmc5LAotICAgICAgY29uc3QgQXJnMTAKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChjb25zdCBBcmcxJiBhMSwgY29uc3QgQXJnMiYgYTIsIGNvbnN0IEFyZzMmIGEzLCBjb25zdCBBcmc0JiBhNCwKLSAgICAgY29uc3QgQXJnNSYgYTUsIGNvbnN0IEFyZzYmIGE2LCBjb25zdCBBcmc3JiBhNywgY29uc3QgQXJnOCYgYTgsCi0gICAgIGNvbnN0IEFyZzkmIGE5LCBjb25zdCBBcmcxMCYgYTEwKSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248MTAsIGZ1bmN0aW9uX2FjdGlvbjwxMD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3LAotICAgICAgICBjb25zdCBBcmc4LCBjb25zdCBBcmc5LCBjb25zdCBBcmcxMAotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3LAotICAgICAgICBjb25zdCBBcmc4LCBjb25zdCBBcmc5LCBjb25zdCBBcmcxMAotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTksIGExMCkKLSAgICApOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgUmVzdWx0LCBjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LAotICAgICAgICAgIGNsYXNzIEFyZzUsIGNsYXNzIEFyZzYsIGNsYXNzIEFyZzcsIGNsYXNzIEFyZzgsIGNsYXNzIEFyZzksCi0gICAgICAgICAgY2xhc3MgQXJnMTA+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjwxMCwgZnVuY3Rpb25fYWN0aW9uPDEwLCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLAotICAgICAgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNywgY29uc3QgQXJnOCwgY29uc3QgQXJnOSwKLSAgICAgIGNvbnN0IEFyZzEwCi0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQsCi0gICAgIGNvbnN0IEFyZzUmIGE1LCBjb25zdCBBcmc2JiBhNiwgY29uc3QgQXJnNyYgYTcsIGNvbnN0IEFyZzgmIGE4LAotICAgICBjb25zdCBBcmc5JiBhOSwgY29uc3QgQXJnMTAmIGExMCkgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDEwLCBmdW5jdGlvbl9hY3Rpb248MTAsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3LAotICAgICAgICBjb25zdCBBcmc4LCBjb25zdCBBcmc5LCBjb25zdCBBcmcxMAotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3LAotICAgICAgICBjb25zdCBBcmc4LCBjb25zdCBBcmc5LCBjb25zdCBBcmcxMAotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTksIGExMCkKLSAgICApOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgUmVzdWx0LCBjbGFzcyBQYXIxLCBjbGFzcyBQYXIyLCBjbGFzcyBQYXIzLCBjbGFzcyBQYXI0LAotICAgICAgICAgIGNsYXNzIFBhcjUsIGNsYXNzIFBhcjYsIGNsYXNzIFBhcjcsIGNsYXNzIFBhcjgsIGNsYXNzIFBhcjksCi0gICAgICAgICAgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNSwgY2xhc3MgQXJnNiwKLSAgICAgICAgICBjbGFzcyBBcmc3LCBjbGFzcyBBcmc4LCBjbGFzcyBBcmc5LCBjbGFzcyBBcmcxMD4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDEwLCBmdW5jdGlvbl9hY3Rpb248MTAsIFJlc3VsdD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgUmVzdWx0KCopKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQsIFBhcjUsIFBhcjYsIFBhcjcsIFBhcjgsIFBhcjkpLAotICAgICAgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNywKLSAgICAgIGNvbnN0IEFyZzgsIGNvbnN0IEFyZzksIGNvbnN0IEFyZzEwCi0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoUmVzdWx0KCogY29uc3QgJiBhMSkoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCwgUGFyNSwgUGFyNiwgUGFyNywgUGFyOCwKLSAgICAgUGFyOSksIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQsIGNvbnN0IEFyZzUmIGE1LAotICAgICBjb25zdCBBcmc2JiBhNiwgY29uc3QgQXJnNyYgYTcsIGNvbnN0IEFyZzgmIGE4LCBjb25zdCBBcmc5JiBhOSwKLSAgICAgY29uc3QgQXJnMTAmIGExMCkgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDEwLCBmdW5jdGlvbl9hY3Rpb248MTAsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIFJlc3VsdCgqKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1LCBQYXI2LCBQYXI3LCBQYXI4LCBQYXI5KSwKLSAgICAgICAgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwKLSAgICAgICAgY29uc3QgQXJnNywgY29uc3QgQXJnOCwgY29uc3QgQXJnOSwgY29uc3QgQXJnMTAKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBSZXN1bHQoKikoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCwgUGFyNSwgUGFyNiwgUGFyNywgUGFyOCwgUGFyOSksCi0gICAgICAgIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsCi0gICAgICAgIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgsIGNvbnN0IEFyZzksIGNvbnN0IEFyZzEwCi0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSwgYTEwKQotICAgICk7Ci19Ci0KLQotICNlbmRpZiAKLQotfSAvLyBuYW1lc3BhY2UgbGFtYmRhIAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvZnVuY3Rpb25fYWRhcHRvcnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL2Z1bmN0aW9uX2FkYXB0b3JzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzUyNzM1NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvZnVuY3Rpb25fYWRhcHRvcnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzg5ICswLDAgQEAKLS8vIEJvb3N0IExhbWJkYSBMaWJyYXJ5IC0gIGZ1bmN0aW9uX2FkYXB0b3JzLmhwcCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gCi0vLyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAgSmFha2tvIEphcnZpIChqYWFra28uamFydmlAY3MudXR1LmZpKQotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHd3dy5ib29zdC5vcmcKLQotCi0jaWZuZGVmIE5ETkJPT1NUX0xBTUJEQV9GVU5DVElPTl9BREFQVE9SU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX0ZVTkNUSU9OX0FEQVBUT1JTX0hQUAotCi0jaW5jbHVkZSAibmRuYm9vc3QvbXBsL2hhc194eHguaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R1cGxlL3R1cGxlLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9zYW1lX3RyYWl0cy5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3JlZmVyZW5jZS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfY29uc3QuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF92b2xhdGlsZS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdXRpbGl0eS9yZXN1bHRfb2YuaHBwIgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyAKLW5hbWVzcGFjZSBsYW1iZGEgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotTkROQk9PU1RfTVBMX0hBU19YWFhfVEVNUExBVEVfREVGKHNpZykKLQotdGVtcGxhdGU8Y2xhc3MgVHVwbGU+Ci1zdHJ1Y3QgcmVtb3ZlX3JlZmVyZW5jZXNfZnJvbV9lbGVtZW50cyB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnR1cGxlczo6Y29uczwKLSAgICB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTx0eXBlbmFtZSBUdXBsZTo6aGVhZF90eXBlPjo6dHlwZSwKLSAgICB0eXBlbmFtZSByZW1vdmVfcmVmZXJlbmNlc19mcm9tX2VsZW1lbnRzPHR5cGVuYW1lIFR1cGxlOjp0YWlsX3R5cGU+Ojp0eXBlCi0gID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCByZW1vdmVfcmVmZXJlbmNlc19mcm9tX2VsZW1lbnRzPG5kbmJvb3N0Ojp0dXBsZXM6Om51bGxfdHlwZT4gewotICB0eXBlZGVmIG5kbmJvb3N0Ojp0dXBsZXM6Om51bGxfdHlwZSB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgRnVuYz4gc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3IgewotCi0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxGdW5jPjo6dHlwZSBwbGFpbkY7Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19SRVNVTFRfT0YpCi0gIC8vIFN1cHBvcnQgZnVuY3RvcnMgdGhhdCB1c2UgdGhlIG5kbmJvb3N0OjpyZXN1bHRfb2YgcmV0dXJuIHR5cGUgY29udmVudGlvbi4KLSAgdGVtcGxhdGU8Y2xhc3MgVHVwbGUsIGludCBMZW5ndGgsIGJvb2wgSGFzU2lnPgotICBzdHJ1Y3QgcmVzdWx0X2NvbnZlcnRlcjsKLSAgdGVtcGxhdGU8Y2xhc3MgVHVwbGUsIGludCBMZW5ndGg+Ci0gIHN0cnVjdCByZXN1bHRfY29udmVydGVyPFR1cGxlLCBMZW5ndGgsIHRydWU+Ci0gICAgOiBwbGFpbkY6OnRlbXBsYXRlIHNpZzwKLSAgICAgICAgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlc19mcm9tX2VsZW1lbnRzPFR1cGxlPjo6dHlwZQotICAgICAgPgotICB7fTsKLSAgdGVtcGxhdGU8Y2xhc3MgVHVwbGU+Ci0gIHN0cnVjdCByZXN1bHRfY29udmVydGVyPFR1cGxlLCAwLCBmYWxzZT4KLSAgICA6IHJlc3VsdF9vZjxwbGFpbkYoKT4KLSAge307Ci0gIHRlbXBsYXRlPGNsYXNzIFR1cGxlPgotICBzdHJ1Y3QgcmVzdWx0X2NvbnZlcnRlcjxUdXBsZSwgMSwgZmFsc2U+Ci0gICAgOiByZXN1bHRfb2Y8cGxhaW5GKAotICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8MSwgVHVwbGU+Ojp0eXBlKQotICAgICAgPgotICB7fTsKLSAgdGVtcGxhdGU8Y2xhc3MgVHVwbGU+Ci0gIHN0cnVjdCByZXN1bHRfY29udmVydGVyPFR1cGxlLCAyLCBmYWxzZT4KLSAgICA6IHJlc3VsdF9vZjxwbGFpbkYoCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDwxLCBUdXBsZT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDwyLCBUdXBsZT46OnR5cGUpCi0gICAgICA+Ci0gIHt9OwotICB0ZW1wbGF0ZTxjbGFzcyBUdXBsZT4KLSAgc3RydWN0IHJlc3VsdF9jb252ZXJ0ZXI8VHVwbGUsIDMsIGZhbHNlPgotICAgIDogcmVzdWx0X29mPHBsYWluRigKLSAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PDEsIFR1cGxlPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PDIsIFR1cGxlPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PDMsIFR1cGxlPjo6dHlwZSkKLSAgICAgID4KLSAge307Ci0gIHRlbXBsYXRlPGNsYXNzIFR1cGxlPgotICBzdHJ1Y3QgcmVzdWx0X2NvbnZlcnRlcjxUdXBsZSwgNCwgZmFsc2U+Ci0gICAgOiByZXN1bHRfb2Y8cGxhaW5GKAotICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8MSwgVHVwbGU+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8MiwgVHVwbGU+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8MywgVHVwbGU+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8NCwgVHVwbGU+Ojp0eXBlKQotICAgICAgPgotICB7fTsKLSAgdGVtcGxhdGU8Y2xhc3MgVHVwbGU+Ci0gIHN0cnVjdCByZXN1bHRfY29udmVydGVyPFR1cGxlLCA1LCBmYWxzZT4KLSAgICA6IHJlc3VsdF9vZjxwbGFpbkYoCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDwxLCBUdXBsZT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDwyLCBUdXBsZT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDwzLCBUdXBsZT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDw0LCBUdXBsZT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDw1LCBUdXBsZT46OnR5cGUpCi0gICAgICA+Ci0gIHt9OwotICB0ZW1wbGF0ZTxjbGFzcyBUdXBsZT4KLSAgc3RydWN0IHJlc3VsdF9jb252ZXJ0ZXI8VHVwbGUsIDYsIGZhbHNlPgotICAgIDogcmVzdWx0X29mPHBsYWluRigKLSAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PDEsIFR1cGxlPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PDIsIFR1cGxlPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PDMsIFR1cGxlPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PDQsIFR1cGxlPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PDUsIFR1cGxlPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PDYsIFR1cGxlPjo6dHlwZSkKLSAgICAgID4KLSAge307Ci0gIHRlbXBsYXRlPGNsYXNzIFR1cGxlPgotICBzdHJ1Y3QgcmVzdWx0X2NvbnZlcnRlcjxUdXBsZSwgNywgZmFsc2U+Ci0gICAgOiByZXN1bHRfb2Y8cGxhaW5GKAotICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8MSwgVHVwbGU+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8MiwgVHVwbGU+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8MywgVHVwbGU+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8NCwgVHVwbGU+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8NSwgVHVwbGU+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8NiwgVHVwbGU+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8NywgVHVwbGU+Ojp0eXBlKQotICAgICAgPgotICB7fTsKLSAgdGVtcGxhdGU8Y2xhc3MgVHVwbGU+Ci0gIHN0cnVjdCByZXN1bHRfY29udmVydGVyPFR1cGxlLCA4LCBmYWxzZT4KLSAgICA6IHJlc3VsdF9vZjxwbGFpbkYoCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDwxLCBUdXBsZT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDwyLCBUdXBsZT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDwzLCBUdXBsZT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDw0LCBUdXBsZT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDw1LCBUdXBsZT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDw2LCBUdXBsZT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDw3LCBUdXBsZT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDw4LCBUdXBsZT46OnR5cGUpCi0gICAgICA+Ci0gIHt9OwotICB0ZW1wbGF0ZTxjbGFzcyBUdXBsZT4KLSAgc3RydWN0IHJlc3VsdF9jb252ZXJ0ZXI8VHVwbGUsIDksIGZhbHNlPgotICAgIDogcmVzdWx0X29mPHBsYWluRigKLSAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PDEsIFR1cGxlPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PDIsIFR1cGxlPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PDMsIFR1cGxlPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PDQsIFR1cGxlPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PDUsIFR1cGxlPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PDYsIFR1cGxlPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PDcsIFR1cGxlPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PDgsIFR1cGxlPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PDksIFR1cGxlPjo6dHlwZSkKLSAgICAgID4KLSAge307Ci0KLSAgLy8gd2UgZG8gbm90IGtub3cgdGhlIHJldHVybiB0eXBlIG9mZi1oYW5kLCB3ZSBtdXN0IGFzayBpdCBmcm9tIEZ1bmMKLSAgLy8gVG8gc2lnIHdlIHBhc3MgYSBjb25zIGxpc3QsIHdoZXJlIHRoZSBoZWFkIGlzIHRoZSBmdW5jdGlvbiBvYmplY3QgdHlwZQotICAvLyBpdHNlbGYgKHBvdGVudGlhbGx5IGN2LXF1YWxpZmllZCkKLSAgLy8gYW5kIHRoZSB0YWlsIGNvbnRhaW5zIHRoZSB0eXBlcyBvZiB0aGUgYWN0dWFsIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQKLSAgLy8gdG8gdGhlIGZ1bmN0aW9uIG9iamVjdC4gVGhlIGFyZ3VtZW50cyBjYW4gYmUgY3YgcXVhbGlmaWVkCi0gIC8vIGFzIHdlbGwuCi0gIHRlbXBsYXRlIDxjbGFzcyBBcmdzPgotICBzdHJ1Y3Qgc2lnCi0gICAgOiByZXN1bHRfY29udmVydGVyPAotICAgICAgICBBcmdzCi0gICAgICAsIHR1cGxlczo6bGVuZ3RoPHR5cGVuYW1lIEFyZ3M6OnRhaWxfdHlwZT46OnZhbHVlCi0gICAgICAsIGRldGFpbDo6aGFzX3NpZzxwbGFpbkY+Ojp2YWx1ZQotICAgICAgPgotICB7fTsKLSNlbHNlIC8vIE5ETkJPT1NUX05PX1JFU1VMVF9PRgotCi0gIHRlbXBsYXRlIDxjbGFzcyBBcmdzPiBjbGFzcyBzaWcgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxGdW5jPjo6dHlwZSBwbGFpbkY7Ci0gIHB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHBsYWluRjo6dGVtcGxhdGUgc2lnPAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlc19mcm9tX2VsZW1lbnRzPEFyZ3M+Ojp0eXBlCi0gICAgPjo6dHlwZSB0eXBlOwotICB9OwotI2VuZGlmCi0KLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBjbGFzcyBBMT4KLSAgc3RhdGljIFJFVCBhcHBseShBMSYgYTEpIHsKLSAgICByZXR1cm4gYTEoKTsKLSAgfQotICB0ZW1wbGF0ZTxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMj4KLSAgc3RhdGljIFJFVCBhcHBseShBMSYgYTEsIEEyJiBhMikgewotICAgIHJldHVybiBhMShhMik7Ci0gIH0KLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzPgotICBzdGF0aWMgUkVUIGFwcGx5KEExJiBhMSwgQTImIGEyLCBBMyYgYTMpIHsKLSAgICByZXR1cm4gYTEoYTIsIGEzKTsKLSAgfQotICB0ZW1wbGF0ZTxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PgotICBzdGF0aWMgUkVUIGFwcGx5KEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCkgewotICAgIHJldHVybiBhMShhMiwgYTMsIGE0KTsKLSAgfQotICB0ZW1wbGF0ZTxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNT4KLSAgc3RhdGljIFJFVCBhcHBseShBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQsIEE1JiBhNSkgewotICAgIHJldHVybiBhMShhMiwgYTMsIGE0LCBhNSk7Ci0gIH0KLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2PgotICBzdGF0aWMgUkVUIGFwcGx5KEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCwgQTUmIGE1LCBBNiYgYTYpIHsKLSAgICByZXR1cm4gYTEoYTIsIGEzLCBhNCwgYTUsIGE2KTsKLSAgfQotICB0ZW1wbGF0ZTxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIAotICAgICAgICAgICBjbGFzcyBBNz4KLSAgc3RhdGljIFJFVCBhcHBseShBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQsIEE1JiBhNSwgQTYmIGE2LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEE3JiBhNykgewotICAgIHJldHVybiBhMShhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KTsKLSAgfQotICB0ZW1wbGF0ZTxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIAotICAgICAgICAgICBjbGFzcyBBNywgY2xhc3MgQTg+Ci0gIHN0YXRpYyBSRVQgYXBwbHkoQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0LCBBNSYgYTUsIEE2JiBhNiwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBBNyYgYTcsIEE4JiBhOCkgewotICAgIHJldHVybiBhMShhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCk7Ci0gIH0KLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCAKLSAgICAgICAgICAgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOT4KLSAgc3RhdGljIFJFVCBhcHBseShBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQsIEE1JiBhNSwgQTYmIGE2LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEE3JiBhNywgQTgmIGE4LCBBOSYgYTkpIHsKLSAgICByZXR1cm4gYTEoYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5KTsKLSAgfQotICB0ZW1wbGF0ZTxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIAotICAgICAgICAgICBjbGFzcyBBNywgY2xhc3MgQTgsIGNsYXNzIEE5LCBjbGFzcyBBMTA+Ci0gIHN0YXRpYyBSRVQgYXBwbHkoQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0LCBBNSYgYTUsIEE2JiBhNiwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBBNyYgYTcsIEE4JiBhOCwgQTkmIGE5LCBBMTAmIGExMCkgewotICAgIHJldHVybiBhMShhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTksIGExMCk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBGdW5jPiBzdHJ1Y3QgZnVuY3Rpb25fYWRhcHRvcjxjb25zdCBGdW5jPjsgLy8gZXJyb3IgCi0KLS8vIC0tIGZ1bmN0aW9uIGFkYXB0b3JzIHdpdGggZGF0YSBtZW1iZXIgYWNjZXNzCi10ZW1wbGF0ZSA8Y2xhc3MgT2JqZWN0LCBjbGFzcyBUPgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8VCBPYmplY3Q6Oio+IHsKLQotICAvLyAgdHlwZWRlZiBkZXRhaWw6OnVuc3BlY2lmaWVkIHR5cGU7Ci0KLSAgLy8gVCBjYW4gaGF2ZSBxdWFsaWZpZXJzIGFuZCBjYW4gYmUgYSByZWZlcmVuY2UgdHlwZQotICAvLyBXZSBnZXQgdGhlIHJldHVybiB0eXBlIGJ5IGFkZGluZyBjb25zdCwgaWYgdGhlIG9iamVjdCB0aHJvdWdoIHdoaWNoCi0gIC8vIHRoZSBkYXRhIG1lbWJlciBpcyBhY2Nlc3NlZCBpcyBjb25zdCwgYW5kIGZpbmFsbHkgYWRkaW5nIGEgcmVmZXJlbmNlCi0gIHRlbXBsYXRlPGNsYXNzIEFyZ3M+IGNsYXNzIHNpZyB7IAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnR1cGxlczo6ZWxlbWVudDwxLCBBcmdzPjo6dHlwZSBhcmd1bWVudF90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9yZWZlcmVuY2U8Ci0gICAgICBhcmd1bWVudF90eXBlCi0gICAgPjo6dHlwZSB1bnJlZl90eXBlOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OklGPG5kbmJvb3N0Ojppc19jb25zdDx1bnJlZl90eXBlPjo6dmFsdWUsCi0gICAgICB0eXBlbmFtZSBuZG5ib29zdDo6YWRkX2NvbnN0PFQ+Ojp0eXBlLAotICAgICAgVAotICAgID46OlJFVCBwcm9wZXJseV9jb25zdGVkX3JldHVybl90eXBlOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OklGPG5kbmJvb3N0Ojppc192b2xhdGlsZTx1bnJlZl90eXBlPjo6dmFsdWUsCi0gICAgICB0eXBlbmFtZSBuZG5ib29zdDo6YWRkX3ZvbGF0aWxlPHByb3Blcmx5X2NvbnN0ZWRfcmV0dXJuX3R5cGU+Ojp0eXBlLAotICAgICAgcHJvcGVybHlfY29uc3RlZF9yZXR1cm5fdHlwZQotICAgID46OlJFVCBwcm9wZXJseV9jdmRfcmV0dXJuX3R5cGU7Ci0KLQotICBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OklGPG5kbmJvb3N0Ojppc19yZWZlcmVuY2U8YXJndW1lbnRfdHlwZT46OnZhbHVlLAotICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmFkZF9yZWZlcmVuY2U8cHJvcGVybHlfY3ZkX3JldHVybl90eXBlPjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfY3Y8VD46OnR5cGUKLSAgICA+OjpSRVQgdHlwZTsKLSAgfTsKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVUPgotICBzdGF0aWMgUkVUIGFwcGx5KCBUIE9iamVjdDo6KmRhdGEsIE9iamVjdCYgbykgewotICAgIHJldHVybiBvLipkYXRhOwotICB9Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQ+Ci0gIHN0YXRpYyBSRVQgYXBwbHkoIFQgT2JqZWN0OjoqZGF0YSwgY29uc3QgT2JqZWN0JiBvKSB7Ci0gICAgcmV0dXJuIG8uKmRhdGE7Ci0gIH0KLSAgdGVtcGxhdGUgPGNsYXNzIFJFVD4KLSAgc3RhdGljIFJFVCBhcHBseSggVCBPYmplY3Q6OipkYXRhLCB2b2xhdGlsZSBPYmplY3QmIG8pIHsKLSAgICByZXR1cm4gby4qZGF0YTsKLSAgfQotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVUPgotICBzdGF0aWMgUkVUIGFwcGx5KCBUIE9iamVjdDo6KmRhdGEsIGNvbnN0IHZvbGF0aWxlIE9iamVjdCYgbykgewotICAgIHJldHVybiBvLipkYXRhOwotICB9Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQ+Ci0gIHN0YXRpYyBSRVQgYXBwbHkoIFQgT2JqZWN0OjoqZGF0YSwgT2JqZWN0KiBvKSB7Ci0gICAgcmV0dXJuIG8tPipkYXRhOwotICB9Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQ+Ci0gIHN0YXRpYyBSRVQgYXBwbHkoIFQgT2JqZWN0OjoqZGF0YSwgY29uc3QgT2JqZWN0KiBvKSB7Ci0gICAgcmV0dXJuIG8tPipkYXRhOwotICB9Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQ+Ci0gIHN0YXRpYyBSRVQgYXBwbHkoIFQgT2JqZWN0OjoqZGF0YSwgdm9sYXRpbGUgT2JqZWN0KiBvKSB7Ci0gICAgcmV0dXJuIG8tPipkYXRhOwotICB9Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQ+Ci0gIHN0YXRpYyBSRVQgYXBwbHkoIFQgT2JqZWN0OjoqZGF0YSwgY29uc3Qgdm9sYXRpbGUgT2JqZWN0KiBvKSB7Ci0gICAgcmV0dXJuIG8tPipkYXRhOwotICB9Ci19OwotCi0vLyAtLSBmdW5jdGlvbiBhZGFwdG9ycyB3aXRoIDEgYXJndW1lbnQgYXBwbHkKLSAgIAotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdD4KLXN0cnVjdCBmdW5jdGlvbl9hZGFwdG9yPFJlc3VsdCAodm9pZCk+IHsKLSAgCi0gIHRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBzaWcgeyB0eXBlZGVmIFJlc3VsdCB0eXBlOyB9OwotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVUPgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KFJlc3VsdCAoKmZ1bmMpKCkpIHsKLSAgICByZXR1cm4gZnVuYygpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0ICgqKSh2b2lkKT4gewotCi0gIHRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBzaWcgeyB0eXBlZGVmIFJlc3VsdCB0eXBlOyB9OwotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVUPgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KFJlc3VsdCAoKmZ1bmMpKCkpIHsKLSAgICByZXR1cm4gZnVuYygpOwotICB9Ci19OwotCi0KLS8vIC0tIGZ1bmN0aW9uIGFkYXB0b3JzIHdpdGggMiBhcmd1bWVudCBhcHBseQotdGVtcGxhdGUgPGNsYXNzIE9iamVjdCwgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0IChPYmplY3Q6OiopKCkgY29uc3Q+IHsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiBSZXN1bHQgdHlwZTsgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIFJFVD4KLSAgc3RhdGljIFJlc3VsdCBhcHBseSggUmVzdWx0IChPYmplY3Q6OipmdW5jKSgpIGNvbnN0LCBjb25zdCBPYmplY3QqIG8pIHsKLSAgICByZXR1cm4gKG8tPipmdW5jKSgpOwotICB9Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQ+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoIFJlc3VsdCAoT2JqZWN0OjoqZnVuYykoKSBjb25zdCwgY29uc3QgT2JqZWN0JiBvKSB7Ci0gICAgcmV0dXJuIChvLipmdW5jKSgpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgT2JqZWN0LCBjbGFzcyBSZXN1bHQ+Ci1zdHJ1Y3QgZnVuY3Rpb25fYWRhcHRvcjxSZXN1bHQgKE9iamVjdDo6KikoKT4gewotCi0gIHRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBzaWcgeyB0eXBlZGVmIFJlc3VsdCB0eXBlOyB9OwotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVUPgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKCksIE9iamVjdCogbykgewotICAgIHJldHVybiAoby0+KmZ1bmMpKCk7Ci0gIH0KLSAgdGVtcGxhdGUgPGNsYXNzIFJFVD4KLSAgc3RhdGljIFJlc3VsdCBhcHBseSggUmVzdWx0IChPYmplY3Q6OipmdW5jKSgpLCBPYmplY3QmIG8pIHsKLSAgICByZXR1cm4gKG8uKmZ1bmMpKCk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBBcmcxLCBjbGFzcyBSZXN1bHQ+Ci1zdHJ1Y3QgZnVuY3Rpb25fYWRhcHRvcjxSZXN1bHQgKEFyZzEpPiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExPgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KFJlc3VsdCAoKmZ1bmMpKEFyZzEpLCBBMSYgYTEpIHsKLSAgICByZXR1cm4gZnVuYyhhMSk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBBcmcxLCBjbGFzcyBSZXN1bHQ+Ci1zdHJ1Y3QgZnVuY3Rpb25fYWRhcHRvcjxSZXN1bHQgKCopKEFyZzEpPiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExPgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KFJlc3VsdCAoKmZ1bmMpKEFyZzEpLCBBMSYgYTEpIHsKLSAgICByZXR1cm4gZnVuYyhhMSk7Ci0gIH0KLX07Ci0KLQotLy8gLS0gZnVuY3Rpb24gYWRhcHRvcnMgd2l0aCAzIGFyZ3VtZW50IGFwcGx5Ci10ZW1wbGF0ZSA8Y2xhc3MgT2JqZWN0LCBjbGFzcyBBcmcxLCBjbGFzcyBSZXN1bHQ+Ci1zdHJ1Y3QgZnVuY3Rpb25fYWRhcHRvcjxSZXN1bHQgKE9iamVjdDo6KikoQXJnMSkgY29uc3Q+IHsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiBSZXN1bHQgdHlwZTsgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIFJFVCwgY2xhc3MgQTE+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoIFJlc3VsdCAoT2JqZWN0OjoqZnVuYykoQXJnMSkgY29uc3QsIGNvbnN0IE9iamVjdCogbywgCi0gICAgQTEmIGExKSB7Ci0gICAgcmV0dXJuIChvLT4qZnVuYykoYTEpOwotICB9Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExPgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKEFyZzEpIGNvbnN0LCBjb25zdCBPYmplY3QmIG8sIAotICAgIEExJiBhMSkgewotICAgIHJldHVybiAoby4qZnVuYykoYTEpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgT2JqZWN0LCBjbGFzcyBBcmcxLCBjbGFzcyBSZXN1bHQ+Ci1zdHJ1Y3QgZnVuY3Rpb25fYWRhcHRvcjxSZXN1bHQgKE9iamVjdDo6KikoQXJnMSk+IHsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiBSZXN1bHQgdHlwZTsgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIFJFVCwgY2xhc3MgQTE+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoIFJlc3VsdCAoT2JqZWN0OjoqZnVuYykoQXJnMSksIE9iamVjdCogbywgQTEmIGExKSB7Ci0gICAgcmV0dXJuIChvLT4qZnVuYykoYTEpOwotICB9Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExPgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKEFyZzEpLCBPYmplY3QmIG8sIEExJiBhMSkgewotICAgIHJldHVybiAoby4qZnVuYykoYTEpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0IChBcmcxLCBBcmcyKT4gewotCi0gIHRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBzaWcgeyB0eXBlZGVmIFJlc3VsdCB0eXBlOyB9OwotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTI+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoUmVzdWx0ICgqZnVuYykoQXJnMSwgQXJnMiksIEExJiBhMSwgQTImIGEyKSB7Ci0gICAgcmV0dXJuIGZ1bmMoYTEsIGEyKTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIFJlc3VsdD4KLXN0cnVjdCBmdW5jdGlvbl9hZGFwdG9yPFJlc3VsdCAoKikoQXJnMSwgQXJnMik+IHsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiBSZXN1bHQgdHlwZTsgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyPgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KFJlc3VsdCAoKmZ1bmMpKEFyZzEsIEFyZzIpLCBBMSYgYTEsIEEyJiBhMikgewotICAgIHJldHVybiBmdW5jKGExLCBhMik7Ci0gIH0KLX07Ci0KLQotLy8gLS0gZnVuY3Rpb24gYWRhcHRvcnMgd2l0aCA0IGFyZ3VtZW50IGFwcGx5Ci10ZW1wbGF0ZSA8Y2xhc3MgT2JqZWN0LCBjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBSZXN1bHQ+Ci1zdHJ1Y3QgZnVuY3Rpb25fYWRhcHRvcjxSZXN1bHQgKE9iamVjdDo6KikoQXJnMSwgQXJnMikgY29uc3Q+IHsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiBSZXN1bHQgdHlwZTsgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyPgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKEFyZzEsIEFyZzIpIGNvbnN0LCBjb25zdCBPYmplY3QqIG8sIEExJiBhMSwgQTImIGEyKSB7Ci0gICAgcmV0dXJuIChvLT4qZnVuYykoYTEsIGEyKTsKLSAgfQotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTI+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoIFJlc3VsdCAoT2JqZWN0OjoqZnVuYykoQXJnMSwgQXJnMikgY29uc3QsIGNvbnN0IE9iamVjdCYgbywgQTEmIGExLCBBMiYgYTIpIHsKLSAgICByZXR1cm4gKG8uKmZ1bmMpKGExLCBhMik7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBPYmplY3QsIGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIFJlc3VsdD4KLXN0cnVjdCBmdW5jdGlvbl9hZGFwdG9yPFJlc3VsdCAoT2JqZWN0OjoqKShBcmcxLCBBcmcyKT4gewotCi0gIHRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBzaWcgeyB0eXBlZGVmIFJlc3VsdCB0eXBlOyB9OwotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTI+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoIFJlc3VsdCAoT2JqZWN0OjoqZnVuYykoQXJnMSwgQXJnMiksIE9iamVjdCogbywgQTEmIGExLCBBMiYgYTIpIHsKLSAgICByZXR1cm4gKG8tPipmdW5jKShhMSwgYTIpOwotICB9Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMj4KLSAgc3RhdGljIFJlc3VsdCBhcHBseSggUmVzdWx0IChPYmplY3Q6OipmdW5jKShBcmcxLCBBcmcyKSwgT2JqZWN0JiBvLCBBMSYgYTEsIEEyJiBhMikgewotICAgIHJldHVybiAoby4qZnVuYykoYTEsIGEyKTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIFJlc3VsdD4KLXN0cnVjdCBmdW5jdGlvbl9hZGFwdG9yPFJlc3VsdCAoQXJnMSwgQXJnMiwgQXJnMyk+IHsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiBSZXN1bHQgdHlwZTsgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMz4KLSAgc3RhdGljIFJlc3VsdCBhcHBseShSZXN1bHQgKCpmdW5jKShBcmcxLCBBcmcyLCBBcmczKSwgQTEmIGExLCBBMiYgYTIsIEEzJiBhMykgewotICAgIHJldHVybiBmdW5jKGExLCBhMiwgYTMpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0ICgqKShBcmcxLCBBcmcyLCBBcmczKT4gewotCi0gIHRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBzaWcgeyB0eXBlZGVmIFJlc3VsdCB0eXBlOyB9OwotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzPgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KFJlc3VsdCAoKmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMpLCBBMSYgYTEsIEEyJiBhMiwgQTMmIGEzKSB7Ci0gICAgcmV0dXJuIGZ1bmMoYTEsIGEyLCBhMyk7Ci0gIH0KLX07Ci0KLQotLy8gLS0gZnVuY3Rpb24gYWRhcHRvcnMgd2l0aCA1IGFyZ3VtZW50IGFwcGx5Ci10ZW1wbGF0ZSA8Y2xhc3MgT2JqZWN0LCBjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBSZXN1bHQ+Ci1zdHJ1Y3QgZnVuY3Rpb25fYWRhcHRvcjxSZXN1bHQgKE9iamVjdDo6KikoQXJnMSwgQXJnMiwgQXJnMykgY29uc3Q+IHsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiBSZXN1bHQgdHlwZTsgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMz4KLSAgc3RhdGljIFJlc3VsdCBhcHBseSggUmVzdWx0IChPYmplY3Q6OipmdW5jKShBcmcxLCBBcmcyLCBBcmczKSBjb25zdCwgY29uc3QgT2JqZWN0KiBvLCBBMSYgYTEsIEEyJiBhMiwgQTMmIGEzKSB7Ci0gICAgcmV0dXJuIChvLT4qZnVuYykoYTEsIGEyLCBhMyk7Ci0gIH0KLSAgdGVtcGxhdGUgPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMz4KLSAgc3RhdGljIFJlc3VsdCBhcHBseSggUmVzdWx0IChPYmplY3Q6OipmdW5jKShBcmcxLCBBcmcyLCBBcmczKSBjb25zdCwgY29uc3QgT2JqZWN0JiBvLCBBMSYgYTEsIEEyJiBhMiwgQTMmIGEzKSB7Ci0gICAgcmV0dXJuIChvLipmdW5jKShhMSwgYTIsIGEzKTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIE9iamVjdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0IChPYmplY3Q6OiopKEFyZzEsIEFyZzIsIEFyZzMpPiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTM+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoIFJlc3VsdCAoT2JqZWN0OjoqZnVuYykoQXJnMSwgQXJnMiwgQXJnMyksIE9iamVjdCogbywgQTEmIGExLCBBMiYgYTIsIEEzJiBhMykgewotICAgIHJldHVybiAoby0+KmZ1bmMpKGExLCBhMiwgYTMpOwotICB9Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTM+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoIFJlc3VsdCAoT2JqZWN0OjoqZnVuYykoQXJnMSwgQXJnMiwgQXJnMyksIE9iamVjdCYgbywgQTEmIGExLCBBMiYgYTIsIEEzJiBhMykgewotICAgIHJldHVybiAoby4qZnVuYykoYTEsIGEyLCBhMyk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBSZXN1bHQ+Ci1zdHJ1Y3QgZnVuY3Rpb25fYWRhcHRvcjxSZXN1bHQgKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQpPiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KFJlc3VsdCAoKmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQpLCBBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQpIHsKLSAgICByZXR1cm4gZnVuYyhhMSwgYTIsIGEzLCBhNCk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBSZXN1bHQ+Ci1zdHJ1Y3QgZnVuY3Rpb25fYWRhcHRvcjxSZXN1bHQgKCopKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQpPiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KFJlc3VsdCAoKmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQpLCBBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQpIHsKLSAgICByZXR1cm4gZnVuYyhhMSwgYTIsIGEzLCBhNCk7Ci0gIH0KLX07Ci0KLQotLy8gLS0gZnVuY3Rpb24gYWRhcHRvcnMgd2l0aCA2IGFyZ3VtZW50IGFwcGx5Ci10ZW1wbGF0ZSA8Y2xhc3MgT2JqZWN0LCBjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBSZXN1bHQ+Ci1zdHJ1Y3QgZnVuY3Rpb25fYWRhcHRvcjxSZXN1bHQgKE9iamVjdDo6KikoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCkgY29uc3Q+IHsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiBSZXN1bHQgdHlwZTsgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQ+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoIFJlc3VsdCAoT2JqZWN0OjoqZnVuYykoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCkgY29uc3QsIGNvbnN0IE9iamVjdCogbywgQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0KSB7Ci0gICAgcmV0dXJuIChvLT4qZnVuYykoYTEsIGEyLCBhMywgYTQpOwotICB9Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQpIGNvbnN0LCBjb25zdCBPYmplY3QmIG8sIEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCkgewotICAgIHJldHVybiAoby4qZnVuYykoYTEsIGEyLCBhMywgYTQpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgT2JqZWN0LCBjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBSZXN1bHQ+Ci1zdHJ1Y3QgZnVuY3Rpb25fYWRhcHRvcjxSZXN1bHQgKE9iamVjdDo6KikoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCk+IHsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiBSZXN1bHQgdHlwZTsgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQ+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoIFJlc3VsdCAoT2JqZWN0OjoqZnVuYykoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCksIE9iamVjdCogbywgQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0KSB7Ci0gICAgcmV0dXJuIChvLT4qZnVuYykoYTEsIGEyLCBhMywgYTQpOwotICB9Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQpLCBPYmplY3QmIG8sIEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCkgewotICAgIHJldHVybiAoby4qZnVuYykoYTEsIGEyLCBhMywgYTQpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNSwgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0IChBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1KT4gewotCi0gIHRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBzaWcgeyB0eXBlZGVmIFJlc3VsdCB0eXBlOyB9OwotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoUmVzdWx0ICgqZnVuYykoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSksIEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCwgQTUmIGE1KSB7Ci0gICAgcmV0dXJuIGZ1bmMoYTEsIGEyLCBhMywgYTQsIGE1KTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzUsIGNsYXNzIFJlc3VsdD4KLXN0cnVjdCBmdW5jdGlvbl9hZGFwdG9yPFJlc3VsdCAoKikoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSk+IHsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiBSZXN1bHQgdHlwZTsgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1PgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KFJlc3VsdCAoKmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUpLCBBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQsIEE1JiBhNSkgewotICAgIHJldHVybiBmdW5jKGExLCBhMiwgYTMsIGE0LCBhNSk7Ci0gIH0KLX07Ci0KLQotLy8gLS0gZnVuY3Rpb24gYWRhcHRvcnMgd2l0aCA3IGFyZ3VtZW50IGFwcGx5Ci10ZW1wbGF0ZSA8Y2xhc3MgT2JqZWN0LCBjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1LCBjbGFzcyBSZXN1bHQ+Ci1zdHJ1Y3QgZnVuY3Rpb25fYWRhcHRvcjxSZXN1bHQgKE9iamVjdDo6KikoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSkgY29uc3Q+IHsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiBSZXN1bHQgdHlwZTsgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1PgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUpIGNvbnN0LCBjb25zdCBPYmplY3QqIG8sIEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCwgQTUmIGE1KSB7Ci0gICAgcmV0dXJuIChvLT4qZnVuYykoYTEsIGEyLCBhMywgYTQsIGE1KTsKLSAgfQotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoIFJlc3VsdCAoT2JqZWN0OjoqZnVuYykoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSkgY29uc3QsIGNvbnN0IE9iamVjdCYgbywgQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0LCBBNSYgYTUpIHsKLSAgICByZXR1cm4gKG8uKmZ1bmMpKGExLCBhMiwgYTMsIGE0LCBhNSk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBPYmplY3QsIGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzUsIGNsYXNzIFJlc3VsdD4KLXN0cnVjdCBmdW5jdGlvbl9hZGFwdG9yPFJlc3VsdCAoT2JqZWN0OjoqKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1KT4gewotCi0gIHRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBzaWcgeyB0eXBlZGVmIFJlc3VsdCB0eXBlOyB9OwotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoIFJlc3VsdCAoT2JqZWN0OjoqZnVuYykoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSksIE9iamVjdCogbywgQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0LCBBNSYgYTUpIHsKLSAgICByZXR1cm4gKG8tPipmdW5jKShhMSwgYTIsIGEzLCBhNCwgYTUpOwotICB9Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNT4KLSAgc3RhdGljIFJlc3VsdCBhcHBseSggUmVzdWx0IChPYmplY3Q6OipmdW5jKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1KSwgT2JqZWN0JiBvLCBBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQsIEE1JiBhNSkgewotICAgIHJldHVybiAoby4qZnVuYykoYTEsIGEyLCBhMywgYTQsIGE1KTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzUsIGNsYXNzIEFyZzYsIGNsYXNzIFJlc3VsdD4KLXN0cnVjdCBmdW5jdGlvbl9hZGFwdG9yPFJlc3VsdCAoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSwgQXJnNik+IHsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiBSZXN1bHQgdHlwZTsgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNj4KLSAgc3RhdGljIFJlc3VsdCBhcHBseShSZXN1bHQgKCpmdW5jKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1LCBBcmc2KSwgQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0LCBBNSYgYTUsIEE2JiBhNikgewotICAgIHJldHVybiBmdW5jKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNSwgY2xhc3MgQXJnNiwgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0ICgqKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1LCBBcmc2KT4gewotCi0gIHRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBzaWcgeyB0eXBlZGVmIFJlc3VsdCB0eXBlOyB9OwotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2PgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KFJlc3VsdCAoKmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYpLCBBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQsIEE1JiBhNSwgQTYmIGE2KSB7Ci0gICAgcmV0dXJuIGZ1bmMoYTEsIGEyLCBhMywgYTQsIGE1LCBhNik7Ci0gIH0KLX07Ci0KLQotLy8gLS0gZnVuY3Rpb24gYWRhcHRvcnMgd2l0aCA4IGFyZ3VtZW50IGFwcGx5Ci10ZW1wbGF0ZSA8Y2xhc3MgT2JqZWN0LCBjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1LCBjbGFzcyBBcmc2LCBjbGFzcyBSZXN1bHQ+Ci1zdHJ1Y3QgZnVuY3Rpb25fYWRhcHRvcjxSZXN1bHQgKE9iamVjdDo6KikoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSwgQXJnNikgY29uc3Q+IHsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiBSZXN1bHQgdHlwZTsgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNj4KLSAgc3RhdGljIFJlc3VsdCBhcHBseSggUmVzdWx0IChPYmplY3Q6OipmdW5jKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1LCBBcmc2KSBjb25zdCwgY29uc3QgT2JqZWN0KiBvLCBBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQsIEE1JiBhNSwgQTYmIGE2KSB7Ci0gICAgcmV0dXJuIChvLT4qZnVuYykoYTEsIGEyLCBhMywgYTQsIGE1LCBhNik7Ci0gIH0KLSAgdGVtcGxhdGUgPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNj4KLSAgc3RhdGljIFJlc3VsdCBhcHBseSggUmVzdWx0IChPYmplY3Q6OipmdW5jKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1LCBBcmc2KSBjb25zdCwgY29uc3QgT2JqZWN0JiBvLCBBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQsIEE1JiBhNSwgQTYmIGE2KSB7Ci0gICAgcmV0dXJuIChvLipmdW5jKShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIE9iamVjdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNSwgY2xhc3MgQXJnNiwgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0IChPYmplY3Q6OiopKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYpPiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTY+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoIFJlc3VsdCAoT2JqZWN0OjoqZnVuYykoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSwgQXJnNiksIE9iamVjdCogbywgQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0LCBBNSYgYTUsIEE2JiBhNikgewotICAgIHJldHVybiAoby0+KmZ1bmMpKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpOwotICB9Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTY+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoIFJlc3VsdCAoT2JqZWN0OjoqZnVuYykoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSwgQXJnNiksIE9iamVjdCYgbywgQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0LCBBNSYgYTUsIEE2JiBhNikgewotICAgIHJldHVybiAoby4qZnVuYykoYTEsIGEyLCBhMywgYTQsIGE1LCBhNik7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1LCBjbGFzcyBBcmc2LCBjbGFzcyBBcmc3LCBjbGFzcyBSZXN1bHQ+Ci1zdHJ1Y3QgZnVuY3Rpb25fYWRhcHRvcjxSZXN1bHQgKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYsIEFyZzcpPiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KFJlc3VsdCAoKmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYsIEFyZzcpLCBBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQsIEE1JiBhNSwgQTYmIGE2LCBBNyYgYTcpIHsKLSAgICByZXR1cm4gZnVuYyhhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNyk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1LCBjbGFzcyBBcmc2LCBjbGFzcyBBcmc3LCBjbGFzcyBSZXN1bHQ+Ci1zdHJ1Y3QgZnVuY3Rpb25fYWRhcHRvcjxSZXN1bHQgKCopKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYsIEFyZzcpPiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KFJlc3VsdCAoKmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYsIEFyZzcpLCBBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQsIEE1JiBhNSwgQTYmIGE2LCBBNyYgYTcpIHsKLSAgICByZXR1cm4gZnVuYyhhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNyk7Ci0gIH0KLX07Ci0KLQotLy8gLS0gZnVuY3Rpb24gYWRhcHRvcnMgd2l0aCA5IGFyZ3VtZW50IGFwcGx5Ci10ZW1wbGF0ZSA8Y2xhc3MgT2JqZWN0LCBjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1LCBjbGFzcyBBcmc2LCBjbGFzcyBBcmc3LCBjbGFzcyBSZXN1bHQ+Ci1zdHJ1Y3QgZnVuY3Rpb25fYWRhcHRvcjxSZXN1bHQgKE9iamVjdDo6KikoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSwgQXJnNiwgQXJnNykgY29uc3Q+IHsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiBSZXN1bHQgdHlwZTsgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTc+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoIFJlc3VsdCAoT2JqZWN0OjoqZnVuYykoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSwgQXJnNiwgQXJnNykgY29uc3QsIGNvbnN0IE9iamVjdCogbywgQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0LCBBNSYgYTUsIEE2JiBhNiwgQTcmIGE3KSB7Ci0gICAgcmV0dXJuIChvLT4qZnVuYykoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpOwotICB9Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYsIEFyZzcpIGNvbnN0LCBjb25zdCBPYmplY3QmIG8sIEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCwgQTUmIGE1LCBBNiYgYTYsIEE3JiBhNykgewotICAgIHJldHVybiAoby4qZnVuYykoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgT2JqZWN0LCBjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1LCBjbGFzcyBBcmc2LCBjbGFzcyBBcmc3LCBjbGFzcyBSZXN1bHQ+Ci1zdHJ1Y3QgZnVuY3Rpb25fYWRhcHRvcjxSZXN1bHQgKE9iamVjdDo6KikoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSwgQXJnNiwgQXJnNyk+IHsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiBSZXN1bHQgdHlwZTsgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTc+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoIFJlc3VsdCAoT2JqZWN0OjoqZnVuYykoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSwgQXJnNiwgQXJnNyksIE9iamVjdCogbywgQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0LCBBNSYgYTUsIEE2JiBhNiwgQTcmIGE3KSB7Ci0gICAgcmV0dXJuIChvLT4qZnVuYykoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpOwotICB9Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYsIEFyZzcpLCBPYmplY3QmIG8sIEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCwgQTUmIGE1LCBBNiYgYTYsIEE3JiBhNykgewotICAgIHJldHVybiAoby4qZnVuYykoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNSwgY2xhc3MgQXJnNiwgY2xhc3MgQXJnNywgY2xhc3MgQXJnOCwgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0IChBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1LCBBcmc2LCBBcmc3LCBBcmc4KT4gewotCi0gIHRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBzaWcgeyB0eXBlZGVmIFJlc3VsdCB0eXBlOyB9OwotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTg+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoUmVzdWx0ICgqZnVuYykoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSwgQXJnNiwgQXJnNywgQXJnOCksIEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCwgQTUmIGE1LCBBNiYgYTYsIEE3JiBhNywgQTgmIGE4KSB7Ci0gICAgcmV0dXJuIGZ1bmMoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzUsIGNsYXNzIEFyZzYsIGNsYXNzIEFyZzcsIGNsYXNzIEFyZzgsIGNsYXNzIFJlc3VsdD4KLXN0cnVjdCBmdW5jdGlvbl9hZGFwdG9yPFJlc3VsdCAoKikoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSwgQXJnNiwgQXJnNywgQXJnOCk+IHsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiBSZXN1bHQgdHlwZTsgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4PgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KFJlc3VsdCAoKmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYsIEFyZzcsIEFyZzgpLCBBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQsIEE1JiBhNSwgQTYmIGE2LCBBNyYgYTcsIEE4JiBhOCkgewotICAgIHJldHVybiBmdW5jKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCk7Ci0gIH0KLX07Ci0KLQotLy8gLS0gZnVuY3Rpb24gYWRhcHRvcnMgd2l0aCAxMCBhcmd1bWVudCBhcHBseQotdGVtcGxhdGUgPGNsYXNzIE9iamVjdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNSwgY2xhc3MgQXJnNiwgY2xhc3MgQXJnNywgY2xhc3MgQXJnOCwgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0IChPYmplY3Q6OiopKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYsIEFyZzcsIEFyZzgpIGNvbnN0PiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOD4KLSAgc3RhdGljIFJlc3VsdCBhcHBseSggUmVzdWx0IChPYmplY3Q6OipmdW5jKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1LCBBcmc2LCBBcmc3LCBBcmc4KSBjb25zdCwgY29uc3QgT2JqZWN0KiBvLCBBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQsIEE1JiBhNSwgQTYmIGE2LCBBNyYgYTcsIEE4JiBhOCkgewotICAgIHJldHVybiAoby0+KmZ1bmMpKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCk7Ci0gIH0KLSAgdGVtcGxhdGUgPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4PgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYsIEFyZzcsIEFyZzgpIGNvbnN0LCBjb25zdCBPYmplY3QmIG8sIEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCwgQTUmIGE1LCBBNiYgYTYsIEE3JiBhNywgQTgmIGE4KSB7Ci0gICAgcmV0dXJuIChvLipmdW5jKShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgT2JqZWN0LCBjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1LCBjbGFzcyBBcmc2LCBjbGFzcyBBcmc3LCBjbGFzcyBBcmc4LCBjbGFzcyBSZXN1bHQ+Ci1zdHJ1Y3QgZnVuY3Rpb25fYWRhcHRvcjxSZXN1bHQgKE9iamVjdDo6KikoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSwgQXJnNiwgQXJnNywgQXJnOCk+IHsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiBSZXN1bHQgdHlwZTsgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4PgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYsIEFyZzcsIEFyZzgpLCBPYmplY3QqIG8sIEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCwgQTUmIGE1LCBBNiYgYTYsIEE3JiBhNywgQTgmIGE4KSB7Ci0gICAgcmV0dXJuIChvLT4qZnVuYykoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KTsKLSAgfQotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTg+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoIFJlc3VsdCAoT2JqZWN0OjoqZnVuYykoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSwgQXJnNiwgQXJnNywgQXJnOCksIE9iamVjdCYgbywgQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0LCBBNSYgYTUsIEE2JiBhNiwgQTcmIGE3LCBBOCYgYTgpIHsKLSAgICByZXR1cm4gKG8uKmZ1bmMpKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1LCBjbGFzcyBBcmc2LCBjbGFzcyBBcmc3LCBjbGFzcyBBcmc4LCBjbGFzcyBBcmc5LCBjbGFzcyBSZXN1bHQ+Ci1zdHJ1Y3QgZnVuY3Rpb25fYWRhcHRvcjxSZXN1bHQgKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYsIEFyZzcsIEFyZzgsIEFyZzkpPiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCwgY2xhc3MgQTk+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoUmVzdWx0ICgqZnVuYykoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSwgQXJnNiwgQXJnNywgQXJnOCwgQXJnOSksIEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCwgQTUmIGE1LCBBNiYgYTYsIEE3JiBhNywgQTgmIGE4LCBBOSYgYTkpIHsKLSAgICByZXR1cm4gZnVuYyhhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5KTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzUsIGNsYXNzIEFyZzYsIGNsYXNzIEFyZzcsIGNsYXNzIEFyZzgsIGNsYXNzIEFyZzksIGNsYXNzIFJlc3VsdD4KLXN0cnVjdCBmdW5jdGlvbl9hZGFwdG9yPFJlc3VsdCAoKikoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSwgQXJnNiwgQXJnNywgQXJnOCwgQXJnOSk+IHsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiBSZXN1bHQgdHlwZTsgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOT4KLSAgc3RhdGljIFJlc3VsdCBhcHBseShSZXN1bHQgKCpmdW5jKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1LCBBcmc2LCBBcmc3LCBBcmc4LCBBcmc5KSwgQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0LCBBNSYgYTUsIEE2JiBhNiwgQTcmIGE3LCBBOCYgYTgsIEE5JiBhOSkgewotICAgIHJldHVybiBmdW5jKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkpOwotICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBsYW1iZGEKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZgotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvaXNfaW5zdGFuY2Vfb2YuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL2lzX2luc3RhbmNlX29mLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWIwMzU5Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvaXNfaW5zdGFuY2Vfb2YuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA0ICswLDAgQEAKLS8vIEJvb3N0IExhbWJkYSBMaWJyYXJ5IC0gaXNfaW5zdGFuY2Vfb2YuaHBwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDEgSmFha2tvIEphcnZpIChqYWFra28uamFydmlAY3MudXR1LmZpKQotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHd3dy5ib29zdC5vcmcKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZm5kZWYgTkROQk9PU1RfTEFNQkRBX0lTX0lOU1RBTkNFX09GCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9JU19JTlNUQU5DRV9PRgotCi0jaW5jbHVkZSAibmRuYm9vc3QvY29uZmlnLmhwcCIgLy8gZm9yIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVAotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbnZlcnNpb25fdHJhaXRzLmhwcCIgLy8gZm9yIGlzX2NvbnZlcnRpYmxlCi0jaW5jbHVkZSAibmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VudW1fc2hpZnRlZF9wYXJhbXMuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBlYXRfMm5kLmhwcCIKLQotLy8gaXNfaW5zdGFuY2Vfb2YgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIAotLy8gaXNfaW5zdGFuY2Vfb2ZfbjxBLCBCPjo6dmFsdWUgaXMgdHJ1ZSwgaWYgdHlwZSBBIGlzIAotLy8gYW4gaW5zdGFudGlhdGlvbiBvZiBhIHRlbXBsYXRlIEIsIG9yIEEgZGVyaXZlcyBmcm9tIGFuIGluc3RhbnRpYXRpb24gCi0vLyBvZiB0ZW1wbGF0ZSBCCi0vLwotLy8gbiBpcyB0aGUgbnVtYmVyIG9mIHRlbXBsYXRlIGFyZ3VtZW50cyBmb3IgQgotLy8gCi0vLyBFeGFtcGxlOgotLy8gaXNfaW5zdGFuY2Vfb2ZfMjxzdGQ6OmlzdHJlYW0sIGJhc2ljX3N0cmVhbT46OnZhbHVlID09IHRydWUKLQotLy8gVGhlIG9yaWdpbmFsIGltcGxlbWVudGF0aW9uIHdhcyBzb21ld2hhdCBkaWZmZXJlbnQsIHdpdGggZGlmZmVyZW50IHZlcnNpb25zCi0vLyBmb3IgZGlmZmVyZW50IGNvbXBpbGVycy4gSG93ZXZlciwgdGhlcmUgd2FzIHN0aWxsIGEgcHJvYmxlbQotLy8gd2l0aCBnY2MuMy4wLjIgYW5kIDMuMC4zIGNvbXBpbGVycywgd2hpY2ggZGlkbid0IHRoaW5rIHJlZ2FyZAotLy8gaXNfaW5zdGFuY2Vfb2ZfTjwuLi4+Ojp2YWx1ZSB3YXMgYSBjb25zdGFudC4KLS8vIEpvaG4gTWFkZG9jayBzdWdnZXN0ZWQgdGhlIHdheSBhcm91bmQgdGhpcyBwcm9ibGVtIGJ5IGJ1aWxkaW5nIAotLy8gaXNfaW5zdGFuY2Vfb2YgdGVtcGxhdGVzIHVzaW5nIG5kbmJvb3N0Ojppc19jb252ZXJ0aWJsZS4KLS8vIE5vdyB3ZSBvbmx5IGhhdmUgb25lIHZlcnNpb24gb2YgaXNfaW5zdGFuY2Vfb2YgdGVtcGxhdGVzLCB3aGljaCBkZWxhZ2F0ZQotLy8gYWxsIHRoZSBuYXN0eSBjb21waWxlciB0cmlja3MgdG8gaXNfY29udmVydGlibGUuIAotCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9DTEFTUyh6LCBOLEEpIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE4pIGNsYXNzCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9DTEFTU19BUkcoeiwgTixBKSBORE5CT09TVF9QUF9DT01NQV9JRihOKSBjbGFzcyBBIyNOIAotI2RlZmluZSBORE5CT09TVF9MQU1CREFfQVJHKHosIE4sQSkgTkROQk9PU1RfUFBfQ09NTUFfSUYoTikgQSMjTiAKLQotI2RlZmluZSBORE5CT09TVF9MQU1CREFfQ0xBU1NfTElTVChuLCBOQU1FKSBORE5CT09TVF9QUF9SRVBFQVQobiwgTkROQk9PU1RfTEFNQkRBX0NMQVNTLCBOQU1FKQotCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9DTEFTU19BUkdfTElTVChuLCBOQU1FKSBORE5CT09TVF9QUF9SRVBFQVQobiwgTkROQk9PU1RfTEFNQkRBX0NMQVNTX0FSRywgTkFNRSkKLQotI2RlZmluZSBORE5CT09TVF9MQU1CREFfQVJHX0xJU1QobiwgTkFNRSkgTkROQk9PU1RfUFBfUkVQRUFUKG4sIE5ETkJPT1NUX0xBTUJEQV9BUkcsIE5BTUUpCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgbGFtYmRhIHsKLQotI2RlZmluZSBORE5CT09TVF9MQU1CREFfSVNfSU5TVEFOQ0VfT0ZfVEVNUExBVEUoSU5ERVgpICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1uYW1lc3BhY2UgZGV0YWlsIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlIDx0ZW1wbGF0ZTxORE5CT09TVF9MQU1CREFfQ0xBU1NfTElTVChJTkRFWCxUKT4gY2xhc3MgRj4gICAgICAgICAgICAgICBcCi1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKGNvbnZlcnNpb25fdGVzdGVyXyxJTkRFWCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB0ZW1wbGF0ZTxORE5CT09TVF9MQU1CREFfQ0xBU1NfQVJHX0xJU1QoSU5ERVgsQSk+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgTkROQk9PU1RfUFBfQ0FUKGNvbnZlcnNpb25fdGVzdGVyXyxJTkRFWCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKGNvbnN0IEY8TkROQk9PU1RfTEFNQkRBX0FSR19MSVNUKElOREVYLEEpPiYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi19IC8qIGVuZCBkZXRhaWwgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlIDxjbGFzcyBGcm9tLCB0ZW1wbGF0ZSA8TkROQk9PU1RfTEFNQkRBX0NMQVNTX0xJU1QoSU5ERVgsVCk+IGNsYXNzIFRvPiBcCi1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKGlzX2luc3RhbmNlX29mXyxJTkRFWCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSBwcml2YXRlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICB0eXBlZGVmIDo6bmRuYm9vc3Q6OmlzX2NvbnZlcnRpYmxlPCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICBGcm9tLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgTkROQk9PU1RfUFBfQ0FUKGRldGFpbDo6Y29udmVyc2lvbl90ZXN0ZXJfLElOREVYKTxUbz4gICAgICAgICAgICAgICAgICAgICBcCi0gICA+IGhlbHBlcl90eXBlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXB1YmxpYzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGhlbHBlcl90eXBlOjp2YWx1ZSk7ICAgICAgICAgICAgICAgICAgXAotfTsKLQotCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9IRUxQRVIoeiwgTiwgQSkgTkROQk9PU1RfTEFNQkRBX0lTX0lOU1RBTkNFX09GX1RFTVBMQVRFKCBORE5CT09TVF9QUF9JTkMoTikgKQotCi0vLyBHZW5lcmF0ZSB0aGUgdHJhaXRzIGZvciAxLTQgYXJndW1lbnQgdGVtcGxhdGVzCi0KLU5ETkJPT1NUX1BQX1JFUEVBVF8yTkQoNCxORE5CT09TVF9MQU1CREFfSEVMUEVSLEZPTykKLQotI3VuZGVmIE5ETkJPT1NUX0xBTUJEQV9IRUxQRVIKLSN1bmRlZiBORE5CT09TVF9MQU1CREFfSVNfSU5TVEFOQ0VfT0ZfVEVNUExBVEUKLSN1bmRlZiBORE5CT09TVF9MQU1CREFfQ0xBU1MKLSN1bmRlZiBORE5CT09TVF9MQU1CREFfQVJHCi0jdW5kZWYgTkROQk9PU1RfTEFNQkRBX0NMQVNTX0FSRwotI3VuZGVmIE5ETkJPT1NUX0xBTUJEQV9DTEFTU19MSVNUCi0jdW5kZWYgTkROQk9PU1RfTEFNQkRBX0FSR19MSVNUCi0jdW5kZWYgTkROQk9PU1RfTEFNQkRBX0NMQVNTX0FSR19MSVNUCi0KLX0gLy8gbGFtYmRhCi19IC8vIGJvb3N0Ci0KLSNlbmRpZgotCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9sYW1iZGFfY29uZmlnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9sYW1iZGFfY29uZmlnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2U1ZGNlMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvbGFtYmRhX2NvbmZpZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vLyBCb29zdCBMYW1iZGEgTGlicmFyeSAtIGxhbWJkYV9jb25maWcuaHBwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAgSmFha2tvIEphcnZpIChqYWFra28uamFydmlAY3MudXR1LmZpKQotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHd3dy5ib29zdC5vcmcKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZm5kZWYgTkROQk9PU1RfTEFNQkRBX0xBTUJEQV9DT05GSUdfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9MQU1CREFfQ09ORklHX0hQUAotCi0vLyBhZGQgdG8gbmRuYm9vc3QvY29uZmlnLmhwcAotLy8gZm9yIG5vdwotCi0KLSMgaWYgZGVmaW5lZCBfX0dOVUNfXwotIyAgIGlmIChfX0dOVUNfXyA9PSAzICYmIF9fR05VQ19NSU5PUl9fID49IDQpIAotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1JFRl9UT19GVU5DX0NPTkZMSUNUU19XSVRIX1JFRl9UT19UCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTEFNQkRBX0lOQ09SUkVDVF9CSU5EX09WRVJMT0FESU5HCi0jICAgZW5kaWYKLSMgICBpZiAoX19HTlVDX18gPT0gMiAmJiBfX0dOVUNfTUlOT1JfXyA8PSA5NykgCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fVEVNUExBVEVEX1NUUkVBTVMKLSMgICAgIGRlZmluZSBORE5CT09TVF9MQU1CREFfSU5DT1JSRUNUX0JJTkRfT1ZFUkxPQURJTkcKLSMgICBlbmRpZgotIyAgIGlmIChfX0dOVUNfXyA9PSAyICYmIF9fR05VQ19NSU5PUl9fIDw9IDk1KSAKLSMgICAgIGRlZmluZSBORE5CT09TVF9MQU1CREFfRkFJTFNfSU5fVEVNUExBVEVfS0VZV09SRF9BRlRFUl9TQ09QRV9PUEVSCi0jICAgZW5kaWYKLSMgZW5kaWYgIC8vIF9fR05VQ19fCi0gCi0KLSNpZiBkZWZpbmVkIF9fS0NDCi0KLSNkZWZpbmUgTkROQk9PU1RfTk9fRkRFQ0xfVEVNUExBVEVTX0FTX1RFTVBMQVRFX1RFTVBMQVRFX1BBUkFNUwotCi0jZW5kaWYgIC8vIF9fS0NDCi0KLSNlbmRpZgotCi0KLQotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvbGFtYmRhX2Z1bmN0b3JfYmFzZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvbGFtYmRhX2Z1bmN0b3JfYmFzZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmYjAxMmYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL2xhbWJkYV9mdW5jdG9yX2Jhc2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjE1ICswLDAgQEAKLS8vIEJvb3N0IExhbWJkYSBMaWJyYXJ5ICBsYW1iZGFfZnVuY3Rvcl9iYXNlLmhwcCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8KLS8vIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMCBKYWFra28gSmFydmkgKGphYWtrby5qYXJ2aUBjcy51dHUuZmkpCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgd3d3LmJvb3N0Lm9yZwotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBORE5CT09TVF9MQU1CREFfTEFNQkRBX0ZVTkNUT1JfQkFTRV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX0xBTUJEQV9GVU5DVE9SX0JBU0VfSFBQCi0KLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfcmVmZXJlbmNlLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfY29uc3QuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jb25zdC5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbGFtYmRhL2RldGFpbC9sYW1iZGFfZndkLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9sYW1iZGEvZGV0YWlsL2xhbWJkYV90cmFpdHMuaHBwIgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyAKLW5hbWVzcGFjZSBsYW1iZGEgewotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA+PSAxNDAwKQotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0NTEyKSAvL2Fzc2lnbm1lbnQgb3BlcmF0b3IgY291bGQgbm90IGJlIGdlbmVyYXRlZAotI2VuZGlmCi0KLSAgLy8gZm9yIHJldHVybiB0eXBlIGRlZHVjdGlvbnMgd2Ugd3JhcCBib3VuZCBhcmd1bWVudCB0byB0aGlzIGNsYXNzLAotICAvLyB3aGljaCBmdWxmaWxzIHRoZSBiYXNlIGNsYXNzIGNvbnRyYWN0IGZvciBsYW1iZGFfZnVuY3RvcnMKLXRlbXBsYXRlIDxjbGFzcyBUPgotY2xhc3MgaWRlbnRpdHkgewotCi0gIFQgZWxlbTsKLXB1YmxpYzoKLSAgCi0gIHR5cGVkZWYgVCBlbGVtZW50X3Q7Ci0KLSAgLy8gdGFrZSBhbGwgcGFyYW1ldGVycyBhcyBjb25zdCByZWZlcmVuY2VzLiBOb3RlIHRoYXQgbm9uLWNvbnN0IHJlZmVyZW5jZXMKLSAgLy8gc3RheSBhcyB0aGV5IGFyZS4KLSAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6YWRkX3JlZmVyZW5jZTwKLSAgICB0eXBlbmFtZSBuZG5ib29zdDo6YWRkX2NvbnN0PFQ+Ojp0eXBlCi0gID46OnR5cGUgcGFyX3Q7Ci0KLSAgZXhwbGljaXQgaWRlbnRpdHkocGFyX3QgdCkgOiBlbGVtKHQpIHt9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFNpZ0FyZ3M+IAotICBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2NvbnN0PGVsZW1lbnRfdD46OnR5cGUgdHlwZTsgfTsKLQotICB0ZW1wbGF0ZTxjbGFzcyBSRVQsIENBTExfVEVNUExBVEVfQVJHUz4KLSAgUkVUIGNhbGwoQ0FMTF9GT1JNQUxfQVJHUykgY29uc3QgeyBDQUxMX1VTRV9BUkdTOyByZXR1cm4gZWxlbTsgfQotfTsKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPj0gMTQwMCkKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFQ+IAotaW5saW5lIGxhbWJkYV9mdW5jdG9yPGlkZW50aXR5PFQmPiA+IHZhcihUJiB0KSB7IHJldHVybiBpZGVudGl0eTxUJj4odCk7IH0KLQotICAvLyBmb3IgbGFtYmRhIGZ1bmN0b3JzLCB2YXIgaXMgYW4gaWRlbnRpdHkgb3BlcmF0b3IuIEl0IHdhcyBmb3JiaWRkZW4KLSAgLy8gYXQgc29tZSBwb2ludCwgYnV0IHdlIG1pZ2h0IHdhbnQgdG8gdmFyIHNvbWV0aGluZyB0aGF0IGNhbiBiZSBhIAotICAvLyBub24tbGFtYmRhIGZ1bmN0b3Igb3IgYSBsYW1iZGEgZnVuY3Rvci4KLXRlbXBsYXRlIDxjbGFzcyBUPgotbGFtYmRhX2Z1bmN0b3I8VD4gdmFyKGNvbnN0IGxhbWJkYV9mdW5jdG9yPFQ+JiB0KSB7IHJldHVybiB0OyB9Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgdmFyX3R5cGUgewotICB0eXBlZGVmIGxhbWJkYV9mdW5jdG9yPGlkZW50aXR5PFQmPiA+IHR5cGU7Ci19OwotCi0KLXRlbXBsYXRlIDxjbGFzcyBUPiAKLWlubGluZSAKLWxhbWJkYV9mdW5jdG9yPGlkZW50aXR5PHR5cGVuYW1lIGJvdW5kX2FyZ3VtZW50X2NvbnZlcnNpb248Y29uc3QgVD46OnR5cGU+ID4KLWNvbnN0YW50KGNvbnN0IFQmIHQpIHsgCi0gIHJldHVybiBpZGVudGl0eTx0eXBlbmFtZSBib3VuZF9hcmd1bWVudF9jb252ZXJzaW9uPGNvbnN0IFQ+Ojp0eXBlPih0KTsgCi19Ci10ZW1wbGF0ZSA8Y2xhc3MgVD4KLWxhbWJkYV9mdW5jdG9yPFQ+IGNvbnN0YW50KGNvbnN0IGxhbWJkYV9mdW5jdG9yPFQ+JiB0KSB7IHJldHVybiB0OyB9Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgY29uc3RhbnRfdHlwZSB7Ci0gIHR5cGVkZWYgCi0gICBsYW1iZGFfZnVuY3RvcjwKLSAgICAgaWRlbnRpdHk8dHlwZW5hbWUgYm91bmRfYXJndW1lbnRfY29udmVyc2lvbjxjb25zdCBUPjo6dHlwZT4gCi0gICA+IHR5cGU7Ci19OwotCi0KLQotdGVtcGxhdGUgPGNsYXNzIFQ+IAotaW5saW5lIGxhbWJkYV9mdW5jdG9yPGlkZW50aXR5PGNvbnN0IFQmPiA+IGNvbnN0YW50X3JlZihjb25zdCBUJiB0KSB7IAotICByZXR1cm4gaWRlbnRpdHk8Y29uc3QgVCY+KHQpOyAKLX0KLXRlbXBsYXRlIDxjbGFzcyBUPgotbGFtYmRhX2Z1bmN0b3I8VD4gY29uc3RhbnRfcmVmKGNvbnN0IGxhbWJkYV9mdW5jdG9yPFQ+JiB0KSB7IHJldHVybiB0OyB9Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgY29uc3RhbnRfcmVmX3R5cGUgewotICB0eXBlZGVmIAotICAgbGFtYmRhX2Z1bmN0b3I8aWRlbnRpdHk8Y29uc3QgVCY+ID4gdHlwZTsKLX07Ci0KLQotCi0gIC8vIGFzX2xhbWJkYV9mdW5jdG9yIHR1cm5zIGFueSB0eXBlcyB0byBsYW1iZGEgZnVuY3RvcnMgCi0gIC8vIG5vbi1sYW1iZGFfZnVuY3RvcnMgd2lsbCBiZSBib3VuZCBhcmd1bWVudCB0eXBlcwotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgYXNfbGFtYmRhX2Z1bmN0b3IgeyAKLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICBkZXRhaWw6OnJlbW92ZV9yZWZlcmVuY2VfYW5kX2N2PFQ+Ojp0eXBlIHBsYWluX1Q7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgZGV0YWlsOjpJRjxpc19sYW1iZGFfZnVuY3RvcjxwbGFpbl9UPjo6dmFsdWUsIAotICAgICAgcGxhaW5fVCwKLSAgICAgIGxhbWJkYV9mdW5jdG9yPAotICAgICAgICBpZGVudGl0eTx0eXBlbmFtZSBib3VuZF9hcmd1bWVudF9jb252ZXJzaW9uPFQ+Ojp0eXBlPiAKLSAgICAgID4KLSAgICA+OjpSRVQgdHlwZTsgCi19OwotCi0vLyB0dXJucyBhcmJpdHJhcnkgb2JqZWN0cyBpbnRvIGxhbWJkYSBmdW5jdG9ycwotdGVtcGxhdGUgPGNsYXNzIFQ+IAotaW5saW5lIAotbGFtYmRhX2Z1bmN0b3I8aWRlbnRpdHk8dHlwZW5hbWUgYm91bmRfYXJndW1lbnRfY29udmVyc2lvbjxjb25zdCBUPjo6dHlwZT4gPiAKLXRvX2xhbWJkYV9mdW5jdG9yKGNvbnN0IFQmIHQpIHsgCi0gIHJldHVybiBpZGVudGl0eTx0eXBlbmFtZSBib3VuZF9hcmd1bWVudF9jb252ZXJzaW9uPGNvbnN0IFQ+Ojp0eXBlPih0KTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFQ+IAotaW5saW5lIGxhbWJkYV9mdW5jdG9yPFQ+IAotdG9fbGFtYmRhX2Z1bmN0b3IoY29uc3QgbGFtYmRhX2Z1bmN0b3I8VD4mIHQpIHsgCi0gIHJldHVybiB0OwotfQotCi1uYW1lc3BhY2UgZGV0YWlsIHsgICAKLQotCi0KLS8vIEluIGEgY2FsbCBjb25zdGlmeV9ydmFsczxUPjo6Z28oeCkKLS8vIHggc2hvdWxkIGJlIG9mIHR5cGUgVC4gSWYgVCBpcyBhIG5vbi1yZWZlcmVuY2UgdHlwZSwgZG8KLS8vIHJldHVybnMgeCBhcyBjb25zdCByZWZlcmVuY2UuIAotLy8gT3RoZXJ3aXNlIHRoZSB0eXBlIGRvZXNuJ3QgY2hhbmdlLgotLy8gVGhlIHB1cnBvc2Ugb2YgdGhpcyBjbGFzcyBpcyB0byBhdm9pZCAKLS8vICdjYW5ub3QgYmluZCB0ZW1wb3JhcmllcyB0byBub24tY29uc3QgcmVmZXJlbmNlcycgZXJyb3JzLgotdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBjb25zdGlmeV9ydmFscyB7Ci0gIHRlbXBsYXRlPGNsYXNzIFU+Ci0gIHN0YXRpYyBpbmxpbmUgY29uc3QgVSYgZ28oY29uc3QgVSYgdSkgeyByZXR1cm4gdTsgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBjb25zdGlmeV9ydmFsczxUJj4gewotICB0ZW1wbGF0ZTxjbGFzcyBVPgotICBzdGF0aWMgaW5saW5lIFUmIGdvKFUmIHUpIHsgcmV0dXJuIHU7IH0KLX07Ci0KLSAgLy8gY2hlY2sgd2hldGhlciBvbmUgb2YgdGhlIGVsZW1lbnRzIG9mIGEgdHVwbGUgKGNvbnMgbGlzdCkgaXMgb2YgdHlwZQotICAvLyBudWxsX3R5cGUuIE5lZWRlZCwgYmVjYXVzZSB0aGUgY29tcGlsZXIgZ29lcyBhaGVhZCBhbmQgaW5zdGFudGlhdGVzCi0gIC8vIHNpZyB0ZW1wbGF0ZSBmb3IgbnVsbGFyeSBjYXNlIGV2ZW4gaWYgdGhlIG51bGxhcnkgb3BlcmF0b3IoKSBpcyBub3QKLSAgLy8gY2FsbGVkCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IGlzX251bGxfdHlwZSAKLXsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOyB9OwotCi10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfbnVsbF90eXBlPG51bGxfdHlwZT4gCi17IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZTxjbGFzcyBUdXBsZT4gc3RydWN0IGhhc19udWxsX3R5cGUgewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoaXNfbnVsbF90eXBlPHR5cGVuYW1lIFR1cGxlOjpoZWFkX3R5cGU+Ojp2YWx1ZSB8fCBoYXNfbnVsbF90eXBlPHR5cGVuYW1lIFR1cGxlOjp0YWlsX3R5cGU+Ojp2YWx1ZSkpOwotfTsKLXRlbXBsYXRlPD4gc3RydWN0IGhhc19udWxsX3R5cGU8bnVsbF90eXBlPiB7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLQotLy8gaGVscGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tCi0KLQotdGVtcGxhdGU8Y2xhc3MgQXJncywgY2xhc3MgU2lnQXJncz4KLWNsYXNzIGRlZHVjZV9hcmd1bWVudF90eXBlc18gewotICB0eXBlZGVmIHR5cGVuYW1lIGFzX2xhbWJkYV9mdW5jdG9yPHR5cGVuYW1lIEFyZ3M6OmhlYWRfdHlwZT46OnR5cGUgbGZfdDsKLSAgdHlwZWRlZiB0eXBlbmFtZSBsZl90Ojppbmhlcml0ZWQ6OnRlbXBsYXRlIHNpZzxTaWdBcmdzPjo6dHlwZSBlbF90OyAgCi1wdWJsaWM6Ci0gIHR5cGVkZWYKLSAgICBuZG5ib29zdDo6dHVwbGVzOjpjb25zPAotICAgICAgZWxfdCwgCi0gICAgICB0eXBlbmFtZSBkZWR1Y2VfYXJndW1lbnRfdHlwZXNfPHR5cGVuYW1lIEFyZ3M6OnRhaWxfdHlwZSwgU2lnQXJncz46OnR5cGUKLSAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBTaWdBcmdzPgotY2xhc3MgZGVkdWNlX2FyZ3VtZW50X3R5cGVzXzxudWxsX3R5cGUsIFNpZ0FyZ3M+IHsKLXB1YmxpYzoKLSAgdHlwZWRlZiBudWxsX3R5cGUgdHlwZTsgCi19OwotCi0KLS8vICAvLyBub3RlIHRoYXQgdHVwbGVzIGNhbm5vdCBoYXZlIHBsYWluIGZ1bmN0aW9uIHR5cGVzIGFzIGVsZW1lbnRzLgotLy8gIC8vIEhlbmNlLCBhbGwgb3RoZXIgdHlwZXMgd2lsbCBiZSBub24tY29uc3QsIGV4Y2VwdCByZWZlcmVuY2VzIHRvIAotLy8gIC8vIGZ1bmN0aW9ucy4KLS8vICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IHJlbW92ZV9yZWZlcmVuY2VfZXhjZXB0X2Zyb21fZnVuY3Rpb25zIHsKLS8vICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9yZWZlcmVuY2U8VD46OnR5cGUgdDsKLS8vICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpJRjxuZG5ib29zdDo6aXNfZnVuY3Rpb248dD46OnZhbHVlLCBULCB0Pjo6UkVUIHR5cGU7Ci0vLyAgfTsKLQotdGVtcGxhdGU8Y2xhc3MgQXJncywgY2xhc3MgU2lnQXJncz4KLWNsYXNzIGRlZHVjZV9ub25fcmVmX2FyZ3VtZW50X3R5cGVzXyB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgYXNfbGFtYmRhX2Z1bmN0b3I8dHlwZW5hbWUgQXJnczo6aGVhZF90eXBlPjo6dHlwZSBsZl90OwotICB0eXBlZGVmIHR5cGVuYW1lIGxmX3Q6OmluaGVyaXRlZDo6dGVtcGxhdGUgc2lnPFNpZ0FyZ3M+Ojp0eXBlIGVsX3Q7ICAKLXB1YmxpYzoKLSAgdHlwZWRlZgotICAgIG5kbmJvb3N0Ojp0dXBsZXM6OmNvbnM8Ci0gIC8vICAgICAgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2V4Y2VwdF9mcm9tX2Z1bmN0aW9uczxlbF90Pjo6dHlwZSwgCi0gICAgICB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTxlbF90Pjo6dHlwZSwgCi0gICAgICB0eXBlbmFtZSBkZWR1Y2Vfbm9uX3JlZl9hcmd1bWVudF90eXBlc188dHlwZW5hbWUgQXJnczo6dGFpbF90eXBlLCBTaWdBcmdzPjo6dHlwZQotICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFNpZ0FyZ3M+Ci1jbGFzcyBkZWR1Y2Vfbm9uX3JlZl9hcmd1bWVudF90eXBlc188bnVsbF90eXBlLCBTaWdBcmdzPiB7Ci1wdWJsaWM6Ci0gIHR5cGVkZWYgbnVsbF90eXBlIHR5cGU7IAotfTsKLQotICAvLyAtLS0tLS0tLS0tLS0tCi0KLS8vIHRha2Ugc3RvcmVkIEFyZ3MgYW5kIE9wZW4gQXJncywgYW5kIHJldHVybiBhIGNvbnN0IGxpc3Qgd2l0aCAKLS8vIGRlZHVjZWQgZWxlbWVudHMgKHJlYWwgcmV0dXJuIHR5cGVzKQotdGVtcGxhdGU8Y2xhc3MgQXJncywgY2xhc3MgU2lnQXJncz4KLWNsYXNzIGRlZHVjZV9hcmd1bWVudF90eXBlcyB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGVkdWNlX2FyZ3VtZW50X3R5cGVzXzxBcmdzLCBTaWdBcmdzPjo6dHlwZSB0MTsKLXB1YmxpYzoKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OklGPAotICAgIGhhc19udWxsX3R5cGU8dDE+Ojp2YWx1ZSwgbnVsbF90eXBlLCB0MQotICA+OjpSRVQgdHlwZTsgCi19OwotCi0vLyB0YWtlIHN0b3JlZCBBcmdzIGFuZCBPcGVuIEFyZ3MsIGFuZCByZXR1cm4gYSBjb25zdCBsaXN0IHdpdGggCi0vLyBkZWR1Y2VkIGVsZW1lbnRzIChyZWZlcmVuY2VzIGFyZSBzdHJpcHBlZCBmcm9tIHRoZSBlbGVtZW50IHR5cGVzKQotCi10ZW1wbGF0ZTxjbGFzcyBBcmdzLCBjbGFzcyBTaWdBcmdzPgotY2xhc3MgZGVkdWNlX25vbl9yZWZfYXJndW1lbnRfdHlwZXMgewotICB0eXBlZGVmIHR5cGVuYW1lIGRlZHVjZV9ub25fcmVmX2FyZ3VtZW50X3R5cGVzXzxBcmdzLCBTaWdBcmdzPjo6dHlwZSB0MTsKLXB1YmxpYzoKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OklGPAotICAgIGhhc19udWxsX3R5cGU8dDE+Ojp2YWx1ZSwgbnVsbF90eXBlLCB0MQotICA+OjpSRVQgdHlwZTsgCi19OwotCi10ZW1wbGF0ZSA8aW50IE4sIGNsYXNzIEFyZ3MsIGNsYXNzIFNpZ0FyZ3M+Ci1zdHJ1Y3QgbnRoX3JldHVybl90eXBlX3NpZyB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgICAgICAgYXNfbGFtYmRhX2Z1bmN0b3I8Ci0gICAgICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6dHVwbGVzOjplbGVtZW50PE4sIEFyZ3M+Ojp0eXBlIAotICAvLyAgICAgICAgICAgIHR5cGVuYW1lIHR1cGxlX2VsZW1lbnRfYXNfcmVmZXJlbmNlPE4sIEFyZ3M+Ojp0eXBlIAotICAgICAgICA+Ojp0eXBlIGxmX3R5cGU7Ci0KLSAgdHlwZWRlZiB0eXBlbmFtZSBsZl90eXBlOjppbmhlcml0ZWQ6OnRlbXBsYXRlIHNpZzxTaWdBcmdzPjo6dHlwZSB0eXBlOyAgCi19OwotCi10ZW1wbGF0ZTxpbnQgTiwgY2xhc3MgVHVwbGU+IHN0cnVjdCBlbGVtZW50X29yX251bGwgewotICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojp0dXBsZXM6OmVsZW1lbnQ8TiwgVHVwbGU+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxpbnQgTj4gc3RydWN0IGVsZW1lbnRfb3JfbnVsbDxOLCBudWxsX3R5cGU+IHsKLSAgdHlwZWRlZiBudWxsX3R5cGUgdHlwZTsKLX07Ci0KLQotICAgCi0gICAKLX0gLy8gZW5kIGRldGFpbAotICAgCi0gLy8gLS0gbGFtYmRhX2Z1bmN0b3IgYmFzZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gdGhlIGV4cGxpY2l0X3JldHVybl90eXBlX2FjdGlvbiBjYXNlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi10ZW1wbGF0ZTxjbGFzcyBSRVQsIGNsYXNzIEFyZ3M+Ci1jbGFzcyBsYW1iZGFfZnVuY3Rvcl9iYXNlPGV4cGxpY2l0X3JldHVybl90eXBlX2FjdGlvbjxSRVQ+LCBBcmdzPiAKLXsKLXB1YmxpYzoKLSAgQXJncyBhcmdzOwotCi0gIHR5cGVkZWYgUkVUIHJlc3VsdF90eXBlOwotCi0gIGV4cGxpY2l0IGxhbWJkYV9mdW5jdG9yX2Jhc2UoY29uc3QgQXJncyYgYSkgOiBhcmdzKGEpIHt9Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIFNpZ0FyZ3M+IHN0cnVjdCBzaWcgeyB0eXBlZGVmIFJFVCB0eXBlOyB9OwotCi0gIHRlbXBsYXRlPGNsYXNzIFJFVF8sIENBTExfVEVNUExBVEVfQVJHUz4KLSAgUkVUIGNhbGwoQ0FMTF9GT1JNQUxfQVJHUykgY29uc3QgCi0gIHsKLSAgICByZXR1cm4gZGV0YWlsOjpjb25zdGlmeV9ydmFsczxSRVQ+OjpnbygKLSAgICAgZGV0YWlsOjpyX3NlbGVjdDxSRVQ+OjpnbyhuZG5ib29zdDo6dHVwbGVzOjpnZXQ8MD4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKTsKLSAgfQotfTsKLQotLy8gdGhlIHByb3RlY3RfYWN0aW9uIGNhc2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLXRlbXBsYXRlPGNsYXNzIEFyZ3M+Ci1jbGFzcyBsYW1iZGFfZnVuY3Rvcl9iYXNlPHByb3RlY3RfYWN0aW9uLCBBcmdzPgotewotcHVibGljOgotICBBcmdzIGFyZ3M7Ci1wdWJsaWM6Ci0KLSAgZXhwbGljaXQgbGFtYmRhX2Z1bmN0b3JfYmFzZShjb25zdCBBcmdzJiBhKSA6IGFyZ3MoYSkge30KLQotCi0gIHRlbXBsYXRlPGNsYXNzIFJFVCwgQ0FMTF9URU1QTEFURV9BUkdTPgotICBSRVQgY2FsbChDQUxMX0ZPUk1BTF9BUkdTKSBjb25zdCAKLSAgewotICAgICBDQUxMX1VTRV9BUkdTOwotICAgICByZXR1cm4gbmRuYm9vc3Q6OnR1cGxlczo6Z2V0PDA+KGFyZ3MpOwotICB9Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgU2lnQXJncz4gc3RydWN0IHNpZyB7IAotICAgIC8vICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjp0dXBsZV9lbGVtZW50X2FzX3JlZmVyZW5jZTwwLCBTaWdBcmdzPjo6dHlwZSB0eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnR1cGxlczo6ZWxlbWVudDwwLCBBcmdzPjo6dHlwZSB0eXBlOwotICB9OwotfTsKLQotLy8gRG8gbm90aGluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotY2xhc3MgZG9fbm90aGluZ19hY3Rpb24ge307Ci0KLXRlbXBsYXRlPGNsYXNzIEFyZ3M+Ci1jbGFzcyBsYW1iZGFfZnVuY3Rvcl9iYXNlPGRvX25vdGhpbmdfYWN0aW9uLCBBcmdzPiB7Ci0gIC8vICBBcmdzIGFyZ3M7Ci1wdWJsaWM6Ci0gIC8vICBleHBsaWNpdCBsYW1iZGFfZnVuY3Rvcl9iYXNlKGNvbnN0IEFyZ3MmIGEpIHt9Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2UoKSB7fQotCi0KLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBDQUxMX1RFTVBMQVRFX0FSR1M+IFJFVCBjYWxsKENBTExfRk9STUFMX0FSR1MpIGNvbnN0IHsKLSAgICByZXR1cm4gQ0FMTF9VU0VfQVJHUzsKLSAgfQotCi0gIHRlbXBsYXRlPGNsYXNzIFNpZ0FyZ3M+IHN0cnVjdCBzaWcgeyB0eXBlZGVmIHZvaWQgdHlwZTsgfTsKLX07ICAKLQotCi0vLyAgVGhlc2Ugc3BlY2lhbGl6YXRpb25zIHByb3ZpZGUgYSBzaG9ydGVyIG5vdGF0aW9uIHRvIGRlZmluZSBhY3Rpb25zLgotLy8gIFRoZXNlIGxhbWJkYV9mdW5jdG9yX2Jhc2UgaW5zdGFuY2VzIHRha2UgY2FyZSBvZiB0aGUgcmVjdXJzaXZlIGV2YWx1YXRpb24KLS8vICBvZiB0aGUgYXJndW1lbnRzIGFuZCBwYXNzIHRoZSBldmFsdWF0ZWQgYXJndW1lbnRzIHRvIHRoZSBhcHBseSBmdW5jdGlvbgotLy8gIG9mIGFuIGFjdGlvbiBjbGFzcy4gVG8gbWFrZSBhY3Rpb24gWCB3b3JrIHdpdGggdGhlc2UgY2xhc3Nlcywgb25lIG11c3QKLS8vICBpbnN0YW50aWF0ZSB0aGUgbGFtYmRhX2Z1bmN0b3JfYmFzZSBhczoKLS8vICBsYW1iZGFfZnVuY3Rvcl9iYXNlPGFjdGlvbjxBUklUWSwgWD4sIEFyZ3M+Ci0vLyAgV2hlcmUgQVJJVFkgaXMgdGhlIGFyaXR5IG9mIHRoZSBhcHBseSBmdW5jdGlvbiBpbiBYCi0KLS8vICBUaGUgcmV0dXJuIHR5cGUgaXMgcXVlcmllZCBhczoKLS8vICByZXR1cm5fdHlwZV9OPFgsIEV2YWx1YXRlZEFyZ3VtZW50VHlwZXM+Ojp0eXBlCi0vLyAgZm9yIHdoaWNoIHRoZXJlIG11c3QgYmUgYSBzcGVjaWFsaXphdGlvbi4KLQotLy8gIEZ1bmN0aW9uIGFjdGlvbnMsIGNhc3RzLCB0aHJvd3MsLi4uIGFsbCBnbyB2aWEgdGhlc2UgY2xhc3Nlcy4KLQotCi10ZW1wbGF0ZTxjbGFzcyBBY3QsIGNsYXNzIEFyZ3M+ICAKLWNsYXNzIGxhbWJkYV9mdW5jdG9yX2Jhc2U8YWN0aW9uPDAsIEFjdD4sIEFyZ3M+ICAgICAgICAgICAKLXsgIAotcHVibGljOiAgCi0vLyAgQXJncyBhcmdzOyBub3QgbmVlZGVkCi0gIGV4cGxpY2l0IGxhbWJkYV9mdW5jdG9yX2Jhc2UoY29uc3QgQXJncyYgLyphKi8pIHt9ICAKLSAgCi0gIHRlbXBsYXRlPGNsYXNzIFNpZ0FyZ3M+IHN0cnVjdCBzaWcgeyAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXR1cm5fdHlwZV9OPEFjdCwgbnVsbF90eXBlPjo6dHlwZSB0eXBlOwotICB9OwotICAKLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBDQUxMX1RFTVBMQVRFX0FSR1M+ICAKLSAgUkVUIGNhbGwoQ0FMTF9GT1JNQUxfQVJHUykgY29uc3QgeyAgCi0gICAgQ0FMTF9VU0VfQVJHUzsKLSAgICByZXR1cm4gQWN0Ojp0ZW1wbGF0ZSBhcHBseTxSRVQ+KCk7Ci0gIH0KLX07Ci0KLQotI2lmIGRlZmluZWQgTkROQk9PU1RfTEFNQkRBX0xBTUJEQV9GVU5DVE9SX0JBU0VfRklSU1RfUEFSVCAgCi0jZXJyb3IgIk11bHRpcGxlIGRlZmluZXMgb2YgTkROQk9PU1RfTEFNQkRBX0xBTUJEQV9GVU5DVE9SX0JBU0VfRklSU1RfUEFSVCIgIAotI2VuZGlmICAKLSAgCi0gIAotI2RlZmluZSBORE5CT09TVF9MQU1CREFfTEFNQkRBX0ZVTkNUT1JfQkFTRV9GSVJTVF9QQVJUKEFSSVRZKSAgICAgICAgICAgICBcCi10ZW1wbGF0ZTxjbGFzcyBBY3QsIGNsYXNzIEFyZ3M+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLWNsYXNzIGxhbWJkYV9mdW5jdG9yX2Jhc2U8YWN0aW9uPEFSSVRZLCBBY3Q+LCBBcmdzPiAgICAgICAgICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1wdWJsaWM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgQXJncyBhcmdzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGV4cGxpY2l0IGxhbWJkYV9mdW5jdG9yX2Jhc2UoY29uc3QgQXJncyYgYSkgOiBhcmdzKGEpIHt9ICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB0ZW1wbGF0ZTxjbGFzcyBTaWdBcmdzPiBzdHJ1Y3Qgc2lnIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBkZXRhaWw6OmRlZHVjZV9hcmd1bWVudF90eXBlczxBcmdzLCBTaWdBcmdzPjo6dHlwZSByZXRzX3Q7ICAgICAgICAgXAotICBwdWJsaWM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHJldHVybl90eXBlX05fcHJvdDxBY3QsIHJldHNfdD46OnR5cGUgdHlwZTsgICAgICAgICAgICAgICAgICAgICAgXAotICB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB0ZW1wbGF0ZTxjbGFzcyBSRVQsIENBTExfVEVNUExBVEVfQVJHUz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIFJFVCBjYWxsKENBTExfRk9STUFMX0FSR1MpIGNvbnN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB1c2luZyBuZG5ib29zdDo6dHVwbGVzOjpnZXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHVzaW5nIGRldGFpbDo6Y29uc3RpZnlfcnZhbHM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdXNpbmcgZGV0YWlsOjpyX3NlbGVjdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB1c2luZyBkZXRhaWw6OmVsZW1lbnRfb3JfbnVsbDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHVzaW5nIGRldGFpbDo6ZGVkdWNlX2FyZ3VtZW50X3R5cGVzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0KLU5ETkJPT1NUX0xBTUJEQV9MQU1CREFfRlVOQ1RPUl9CQVNFX0ZJUlNUX1BBUlQoMSkKLQotICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgZGVkdWNlX2FyZ3VtZW50X3R5cGVzPEFyZ3MsIHR1cGxlPENBTExfUkVGRVJFTkNFX1RZUEVTPiA+Ojp0eXBlIHJldHNfdDsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8MCwgcmV0c190Pjo6dHlwZSBydDA7Ci0KLSAgcmV0dXJuIEFjdDo6dGVtcGxhdGUgYXBwbHk8UkVUPigKLSAgICBjb25zdGlmeV9ydmFsczxydDA+OjpnbyhyX3NlbGVjdDxydDA+OjpnbyhnZXQ8MD4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKQotICAgICk7Ci0gIH0KLX07Ci0KLQotTkROQk9PU1RfTEFNQkRBX0xBTUJEQV9GVU5DVE9SX0JBU0VfRklSU1RfUEFSVCgyKQotICAKLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICBkZWR1Y2VfYXJndW1lbnRfdHlwZXM8QXJncywgdHVwbGU8Q0FMTF9SRUZFUkVOQ0VfVFlQRVM+ID46OnR5cGUgcmV0c190OwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDwwLCByZXRzX3Q+Ojp0eXBlIHJ0MDsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8MSwgcmV0c190Pjo6dHlwZSBydDE7Ci0KLSAgcmV0dXJuIEFjdDo6dGVtcGxhdGUgYXBwbHk8UkVUPigKLSAgICBjb25zdGlmeV9ydmFsczxydDA+OjpnbyhyX3NlbGVjdDxydDA+OjpnbyhnZXQ8MD4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSwKLSAgICBjb25zdGlmeV9ydmFsczxydDE+OjpnbyhyX3NlbGVjdDxydDE+OjpnbyhnZXQ8MT4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKQotICAgICk7Ci0gIH0KLX07Ci0KLU5ETkJPT1NUX0xBTUJEQV9MQU1CREFfRlVOQ1RPUl9CQVNFX0ZJUlNUX1BBUlQoMykKLQotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgIGRlZHVjZV9hcmd1bWVudF90eXBlczxBcmdzLCB0dXBsZTxDQUxMX1JFRkVSRU5DRV9UWVBFUz4gPjo6dHlwZSByZXRzX3Q7Ci0KLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8MCwgcmV0c190Pjo6dHlwZSBydDA7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDEsIHJldHNfdD46OnR5cGUgcnQxOwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDwyLCByZXRzX3Q+Ojp0eXBlIHJ0MjsKLQotICByZXR1cm4gQWN0Ojp0ZW1wbGF0ZSBhcHBseTxSRVQ+KAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0MD46OmdvKHJfc2VsZWN0PHJ0MD46OmdvKGdldDwwPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0MT46OmdvKHJfc2VsZWN0PHJ0MT46OmdvKGdldDwxPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0Mj46OmdvKHJfc2VsZWN0PHJ0Mj46OmdvKGdldDwyPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpCi0gICAgKTsKLSAgfQotfTsKLQotTkROQk9PU1RfTEFNQkRBX0xBTUJEQV9GVU5DVE9SX0JBU0VfRklSU1RfUEFSVCg0KQotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgIGRlZHVjZV9hcmd1bWVudF90eXBlczxBcmdzLCB0dXBsZTxDQUxMX1JFRkVSRU5DRV9UWVBFUz4gPjo6dHlwZSByZXRzX3Q7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDAsIHJldHNfdD46OnR5cGUgcnQwOwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDwxLCByZXRzX3Q+Ojp0eXBlIHJ0MTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8MiwgcmV0c190Pjo6dHlwZSBydDI7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDMsIHJldHNfdD46OnR5cGUgcnQzOwotCi0gIHJldHVybiBBY3Q6OnRlbXBsYXRlIGFwcGx5PFJFVD4oCi0gICAgY29uc3RpZnlfcnZhbHM8cnQwPjo6Z28ocl9zZWxlY3Q8cnQwPjo6Z28oZ2V0PDA+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSksCi0gICAgY29uc3RpZnlfcnZhbHM8cnQxPjo6Z28ocl9zZWxlY3Q8cnQxPjo6Z28oZ2V0PDE+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSksCi0gICAgY29uc3RpZnlfcnZhbHM8cnQyPjo6Z28ocl9zZWxlY3Q8cnQyPjo6Z28oZ2V0PDI+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSksCi0gICAgY29uc3RpZnlfcnZhbHM8cnQzPjo6Z28ocl9zZWxlY3Q8cnQzPjo6Z28oZ2V0PDM+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSkKLSAgICApOwotICB9Ci19OwotCi1ORE5CT09TVF9MQU1CREFfTEFNQkRBX0ZVTkNUT1JfQkFTRV9GSVJTVF9QQVJUKDUpCi0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgZGVkdWNlX2FyZ3VtZW50X3R5cGVzPEFyZ3MsIHR1cGxlPENBTExfUkVGRVJFTkNFX1RZUEVTPiA+Ojp0eXBlIHJldHNfdDsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8MCwgcmV0c190Pjo6dHlwZSBydDA7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDEsIHJldHNfdD46OnR5cGUgcnQxOwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDwyLCByZXRzX3Q+Ojp0eXBlIHJ0MjsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8MywgcmV0c190Pjo6dHlwZSBydDM7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDQsIHJldHNfdD46OnR5cGUgcnQ0OwotCi0gIHJldHVybiBBY3Q6OnRlbXBsYXRlIGFwcGx5PFJFVD4oCi0gICAgY29uc3RpZnlfcnZhbHM8cnQwPjo6Z28ocl9zZWxlY3Q8cnQwPjo6Z28oZ2V0PDA+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSksCi0gICAgY29uc3RpZnlfcnZhbHM8cnQxPjo6Z28ocl9zZWxlY3Q8cnQxPjo6Z28oZ2V0PDE+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSksCi0gICAgY29uc3RpZnlfcnZhbHM8cnQyPjo6Z28ocl9zZWxlY3Q8cnQyPjo6Z28oZ2V0PDI+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSksCi0gICAgY29uc3RpZnlfcnZhbHM8cnQzPjo6Z28ocl9zZWxlY3Q8cnQzPjo6Z28oZ2V0PDM+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSksCi0gICAgY29uc3RpZnlfcnZhbHM8cnQ0Pjo6Z28ocl9zZWxlY3Q8cnQ0Pjo6Z28oZ2V0PDQ+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSkKLSAgICApOwotICB9Ci19OwotCi1ORE5CT09TVF9MQU1CREFfTEFNQkRBX0ZVTkNUT1JfQkFTRV9GSVJTVF9QQVJUKDYpCi0KLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICBkZWR1Y2VfYXJndW1lbnRfdHlwZXM8QXJncywgdHVwbGU8Q0FMTF9SRUZFUkVOQ0VfVFlQRVM+ID46OnR5cGUgcmV0c190OwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDwwLCByZXRzX3Q+Ojp0eXBlIHJ0MDsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8MSwgcmV0c190Pjo6dHlwZSBydDE7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDIsIHJldHNfdD46OnR5cGUgcnQyOwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDwzLCByZXRzX3Q+Ojp0eXBlIHJ0MzsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8NCwgcmV0c190Pjo6dHlwZSBydDQ7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDUsIHJldHNfdD46OnR5cGUgcnQ1OwotCi0KLSAgICByZXR1cm4gQWN0Ojp0ZW1wbGF0ZSBhcHBseTxSRVQ+KAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0MD46OmdvKHJfc2VsZWN0PHJ0MD46OmdvKGdldDwwPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0MT46OmdvKHJfc2VsZWN0PHJ0MT46OmdvKGdldDwxPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0Mj46OmdvKHJfc2VsZWN0PHJ0Mj46OmdvKGdldDwyPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0Mz46OmdvKHJfc2VsZWN0PHJ0Mz46OmdvKGdldDwzPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0ND46OmdvKHJfc2VsZWN0PHJ0ND46OmdvKGdldDw0PihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0NT46OmdvKHJfc2VsZWN0PHJ0NT46OmdvKGdldDw1PihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpIAotICAgICk7Ci0gIH0KLX07Ci0KLU5ETkJPT1NUX0xBTUJEQV9MQU1CREFfRlVOQ1RPUl9CQVNFX0ZJUlNUX1BBUlQoNykKLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICBkZWR1Y2VfYXJndW1lbnRfdHlwZXM8QXJncywgdHVwbGU8Q0FMTF9SRUZFUkVOQ0VfVFlQRVM+ID46OnR5cGUgcmV0c190OwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDwwLCByZXRzX3Q+Ojp0eXBlIHJ0MDsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8MSwgcmV0c190Pjo6dHlwZSBydDE7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDIsIHJldHNfdD46OnR5cGUgcnQyOwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDwzLCByZXRzX3Q+Ojp0eXBlIHJ0MzsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8NCwgcmV0c190Pjo6dHlwZSBydDQ7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDUsIHJldHNfdD46OnR5cGUgcnQ1OwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDw2LCByZXRzX3Q+Ojp0eXBlIHJ0NjsKLQotCi0gIHJldHVybiBBY3Q6OnRlbXBsYXRlIGFwcGx5PFJFVD4oCi0gICAgY29uc3RpZnlfcnZhbHM8cnQwPjo6Z28ocl9zZWxlY3Q8cnQwPjo6Z28oZ2V0PDA+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSksCi0gICAgY29uc3RpZnlfcnZhbHM8cnQxPjo6Z28ocl9zZWxlY3Q8cnQxPjo6Z28oZ2V0PDE+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSksCi0gICAgY29uc3RpZnlfcnZhbHM8cnQyPjo6Z28ocl9zZWxlY3Q8cnQyPjo6Z28oZ2V0PDI+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSksCi0gICAgY29uc3RpZnlfcnZhbHM8cnQzPjo6Z28ocl9zZWxlY3Q8cnQzPjo6Z28oZ2V0PDM+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSksCi0gICAgY29uc3RpZnlfcnZhbHM8cnQ0Pjo6Z28ocl9zZWxlY3Q8cnQ0Pjo6Z28oZ2V0PDQ+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSksCi0gICAgY29uc3RpZnlfcnZhbHM8cnQ1Pjo6Z28ocl9zZWxlY3Q8cnQ1Pjo6Z28oZ2V0PDU+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSksCi0gICAgY29uc3RpZnlfcnZhbHM8cnQ2Pjo6Z28ocl9zZWxlY3Q8cnQ2Pjo6Z28oZ2V0PDY+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSkKLSAgICApOwotICB9Ci19OwotCi1ORE5CT09TVF9MQU1CREFfTEFNQkRBX0ZVTkNUT1JfQkFTRV9GSVJTVF9QQVJUKDgpCi0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgZGVkdWNlX2FyZ3VtZW50X3R5cGVzPEFyZ3MsIHR1cGxlPENBTExfUkVGRVJFTkNFX1RZUEVTPiA+Ojp0eXBlIHJldHNfdDsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8MCwgcmV0c190Pjo6dHlwZSBydDA7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDEsIHJldHNfdD46OnR5cGUgcnQxOwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDwyLCByZXRzX3Q+Ojp0eXBlIHJ0MjsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8MywgcmV0c190Pjo6dHlwZSBydDM7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDQsIHJldHNfdD46OnR5cGUgcnQ0OwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDw1LCByZXRzX3Q+Ojp0eXBlIHJ0NTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8NiwgcmV0c190Pjo6dHlwZSBydDY7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDcsIHJldHNfdD46OnR5cGUgcnQ3OwotCi0gIHJldHVybiBBY3Q6OnRlbXBsYXRlIGFwcGx5PFJFVD4oCi0gICAgY29uc3RpZnlfcnZhbHM8cnQwPjo6Z28ocl9zZWxlY3Q8cnQwPjo6Z28oZ2V0PDA+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSksCi0gICAgY29uc3RpZnlfcnZhbHM8cnQxPjo6Z28ocl9zZWxlY3Q8cnQxPjo6Z28oZ2V0PDE+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSksCi0gICAgY29uc3RpZnlfcnZhbHM8cnQyPjo6Z28ocl9zZWxlY3Q8cnQyPjo6Z28oZ2V0PDI+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSksCi0gICAgY29uc3RpZnlfcnZhbHM8cnQzPjo6Z28ocl9zZWxlY3Q8cnQzPjo6Z28oZ2V0PDM+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSksCi0gICAgY29uc3RpZnlfcnZhbHM8cnQ0Pjo6Z28ocl9zZWxlY3Q8cnQ0Pjo6Z28oZ2V0PDQ+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSksCi0gICAgY29uc3RpZnlfcnZhbHM8cnQ1Pjo6Z28ocl9zZWxlY3Q8cnQ1Pjo6Z28oZ2V0PDU+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSksCi0gICAgY29uc3RpZnlfcnZhbHM8cnQ2Pjo6Z28ocl9zZWxlY3Q8cnQ2Pjo6Z28oZ2V0PDY+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSksCi0gICAgY29uc3RpZnlfcnZhbHM8cnQ3Pjo6Z28ocl9zZWxlY3Q8cnQ3Pjo6Z28oZ2V0PDc+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSkKLSAgICApOwotICB9Ci19OwotCi1ORE5CT09TVF9MQU1CREFfTEFNQkRBX0ZVTkNUT1JfQkFTRV9GSVJTVF9QQVJUKDkpCi0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgZGVkdWNlX2FyZ3VtZW50X3R5cGVzPEFyZ3MsIHR1cGxlPENBTExfUkVGRVJFTkNFX1RZUEVTPiA+Ojp0eXBlIHJldHNfdDsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8MCwgcmV0c190Pjo6dHlwZSBydDA7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDEsIHJldHNfdD46OnR5cGUgcnQxOwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDwyLCByZXRzX3Q+Ojp0eXBlIHJ0MjsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8MywgcmV0c190Pjo6dHlwZSBydDM7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDQsIHJldHNfdD46OnR5cGUgcnQ0OwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDw1LCByZXRzX3Q+Ojp0eXBlIHJ0NTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8NiwgcmV0c190Pjo6dHlwZSBydDY7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDcsIHJldHNfdD46OnR5cGUgcnQ3OwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDw4LCByZXRzX3Q+Ojp0eXBlIHJ0ODsKLQotICByZXR1cm4gQWN0Ojp0ZW1wbGF0ZSBhcHBseTxSRVQ+KAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0MD46OmdvKHJfc2VsZWN0PHJ0MD46OmdvKGdldDwwPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0MT46OmdvKHJfc2VsZWN0PHJ0MT46OmdvKGdldDwxPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0Mj46OmdvKHJfc2VsZWN0PHJ0Mj46OmdvKGdldDwyPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0Mz46OmdvKHJfc2VsZWN0PHJ0Mz46OmdvKGdldDwzPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0ND46OmdvKHJfc2VsZWN0PHJ0ND46OmdvKGdldDw0PihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0NT46OmdvKHJfc2VsZWN0PHJ0NT46OmdvKGdldDw1PihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0Nj46OmdvKHJfc2VsZWN0PHJ0Nj46OmdvKGdldDw2PihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0Nz46OmdvKHJfc2VsZWN0PHJ0Nz46OmdvKGdldDw3PihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0OD46OmdvKHJfc2VsZWN0PHJ0OD46OmdvKGdldDw4PihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpCi0gICAgKTsKLSAgfQotfTsKLQotTkROQk9PU1RfTEFNQkRBX0xBTUJEQV9GVU5DVE9SX0JBU0VfRklSU1RfUEFSVCgxMCkgCi0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgZGVkdWNlX2FyZ3VtZW50X3R5cGVzPEFyZ3MsIHR1cGxlPENBTExfUkVGRVJFTkNFX1RZUEVTPiA+Ojp0eXBlIHJldHNfdDsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8MCwgcmV0c190Pjo6dHlwZSBydDA7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDEsIHJldHNfdD46OnR5cGUgcnQxOwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDwyLCByZXRzX3Q+Ojp0eXBlIHJ0MjsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8MywgcmV0c190Pjo6dHlwZSBydDM7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDQsIHJldHNfdD46OnR5cGUgcnQ0OwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDw1LCByZXRzX3Q+Ojp0eXBlIHJ0NTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8NiwgcmV0c190Pjo6dHlwZSBydDY7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDcsIHJldHNfdD46OnR5cGUgcnQ3OwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDw4LCByZXRzX3Q+Ojp0eXBlIHJ0ODsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8OSwgcmV0c190Pjo6dHlwZSBydDk7Ci0KLSAgcmV0dXJuIEFjdDo6dGVtcGxhdGUgYXBwbHk8UkVUPigKLSAgICBjb25zdGlmeV9ydmFsczxydDA+OjpnbyhyX3NlbGVjdDxydDA+OjpnbyhnZXQ8MD4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSwKLSAgICBjb25zdGlmeV9ydmFsczxydDE+OjpnbyhyX3NlbGVjdDxydDE+OjpnbyhnZXQ8MT4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSwKLSAgICBjb25zdGlmeV9ydmFsczxydDI+OjpnbyhyX3NlbGVjdDxydDI+OjpnbyhnZXQ8Mj4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSwKLSAgICBjb25zdGlmeV9ydmFsczxydDM+OjpnbyhyX3NlbGVjdDxydDM+OjpnbyhnZXQ8Mz4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSwKLSAgICBjb25zdGlmeV9ydmFsczxydDQ+OjpnbyhyX3NlbGVjdDxydDQ+OjpnbyhnZXQ8ND4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSwKLSAgICBjb25zdGlmeV9ydmFsczxydDU+OjpnbyhyX3NlbGVjdDxydDU+OjpnbyhnZXQ8NT4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSwKLSAgICBjb25zdGlmeV9ydmFsczxydDY+OjpnbyhyX3NlbGVjdDxydDY+OjpnbyhnZXQ8Nj4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSwKLSAgICBjb25zdGlmeV9ydmFsczxydDc+OjpnbyhyX3NlbGVjdDxydDc+OjpnbyhnZXQ8Nz4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSwKLSAgICBjb25zdGlmeV9ydmFsczxydDg+OjpnbyhyX3NlbGVjdDxydDg+OjpnbyhnZXQ8OD4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSwKLSAgICBjb25zdGlmeV9ydmFsczxydDk+OjpnbyhyX3NlbGVjdDxydDk+OjpnbyhnZXQ8OT4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSAKLSAgICApOwotICB9Ci19OwotCi0jdW5kZWYgTkROQk9PU1RfTEFNQkRBX0xBTUJEQV9GVU5DVE9SX0JBU0VfRklSU1RfUEFSVAotCi0KLX0gLy8gbmFtZXNwYWNlIGxhbWJkYQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvbGFtYmRhX2Z1bmN0b3JzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9sYW1iZGFfZnVuY3RvcnMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjBlODZlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9sYW1iZGFfZnVuY3RvcnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzU3ICswLDAgQEAKLS8vIEJvb3N0IExhbWJkYSBMaWJyYXJ5IC0gIGxhbWJkYV9mdW5jdG9ycy5ocHAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAgSmFha2tvIEphcnZpIChqYWFra28uamFydmlAY3MudXR1LmZpKQotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX0xBTUJEQV9MQU1CREFfRlVOQ1RPUlNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9MQU1CREFfRlVOQ1RPUlNfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L3Jlc3VsdF9vZi5ocHA+Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID09IDEzMTApCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZW5hYmxlX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHA+Ci0KLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX0RJU0FCTEVfSUZfQVJSQVkxKEExLCBSMSlcCi0gIHR5cGVuYW1lIGxhenlfZGlzYWJsZV9pZjxpc19hcnJheTxBMT4sIHR5cGVuYW1lIFIxID46OnR5cGUKLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX0RJU0FCTEVfSUZfQVJSQVkyKEExLCBBMiwgUjEsIFIyKSBcCi0gIHR5cGVuYW1lIGxhenlfZGlzYWJsZV9pZjxtcGw6Om9yXzxpc19hcnJheTxBMT4sIGlzX2FycmF5PEEyPiA+LCB0eXBlbmFtZSBSMSwgUjIgPjo6dHlwZQotI2RlZmluZSBORE5CT09TVF9MQU1CREFfRElTQUJMRV9JRl9BUlJBWTMoQTEsIEEyLCBBMywgUjEsIFIyLCBSMykgXAotICB0eXBlbmFtZSBsYXp5X2Rpc2FibGVfaWY8bXBsOjpvcl88aXNfYXJyYXk8QTE+LCBpc19hcnJheTxBMj4sIGlzX2FycmF5PEEzPiA+LCB0eXBlbmFtZSBSMSwgUjIsIFIzID46OnR5cGUKLQotI2Vsc2UKLQotI2RlZmluZSBORE5CT09TVF9MQU1CREFfRElTQUJMRV9JRl9BUlJBWTEoQTEsIFIxKSB0eXBlbmFtZSBSMTo6dHlwZQotI2RlZmluZSBORE5CT09TVF9MQU1CREFfRElTQUJMRV9JRl9BUlJBWTIoQTEsIEEyLCBSMSwgUjIpIHR5cGVuYW1lIFIxLCBSMjo6dHlwZQotI2RlZmluZSBORE5CT09TVF9MQU1CREFfRElTQUJMRV9JRl9BUlJBWTMoQTEsIEEyLCBBMywgUjEsIFIyLCBSMykgdHlwZW5hbWUgUjEsIFIyLCBSMzo6dHlwZQotCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgCi1uYW1lc3BhY2UgbGFtYmRhIHsKLQotLy8gLS0gbGFtYmRhX2Z1bmN0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vaW5saW5lIGNvbnN0IG51bGxfdHlwZSBjb25zdF9udWxsX3R5cGUoKSB7IHJldHVybiBudWxsX3R5cGUoKTsgfQotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLW5hbWVzcGFjZSB7Ci0KLSAgc3RhdGljIGNvbnN0IG51bGxfdHlwZSBjb25zdGFudF9udWxsX3R5cGUgPSBudWxsX3R5cGUoKTsKLQotfSAvLyB1bm5hbWVkCi19IC8vIGRldGFpbAotCi1jbGFzcyB1bnVzZWQge307Ci0KLSNkZWZpbmUgY251bGxfdHlwZSgpIGRldGFpbDo6Y29uc3RhbnRfbnVsbF90eXBlCi0KLS8vIC0tIGZyZWUgdmFyaWFibGVzIHR5cGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIAotIAotICAvLyBoZWxwZXIgdG8gd29yayBhcm91bmQgdGhlIGNhc2Ugd2hlcmUgdGhlIG51bGxhcnkgcmV0dXJuIHR5cGUgZGVkdWN0aW9uIAotICAvLyBpcyBhbHdheXMgcGVyZm9ybWVkLCBldmVuIHRob3VnaCB0aGUgZnVuY3RvciBpcyBub3QgbnVsbGFyeSAgCi1uYW1lc3BhY2UgZGV0YWlsIHsKLSAgdGVtcGxhdGU8aW50IE4sIGNsYXNzIFR1cGxlPiBzdHJ1Y3QgZ2V0X2VsZW1lbnRfb3JfbnVsbF90eXBlIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIAotICAgICAgZGV0YWlsOjp0dXBsZV9lbGVtZW50X2FzX3JlZmVyZW5jZTxOLCBUdXBsZT46OnR5cGUgdHlwZTsKLSAgfTsKLSAgdGVtcGxhdGU8aW50IE4+IHN0cnVjdCBnZXRfZWxlbWVudF9vcl9udWxsX3R5cGU8TiwgbnVsbF90eXBlPiB7Ci0gICAgdHlwZWRlZiBudWxsX3R5cGUgdHlwZTsKLSAgfTsKLX0KLQotdGVtcGxhdGUgPGludCBJPiBzdHJ1Y3QgcGxhY2Vob2xkZXI7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHBsYWNlaG9sZGVyPEZJUlNUPiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgU2lnQXJncz4gc3RydWN0IHNpZyB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmdldF9lbGVtZW50X29yX251bGxfdHlwZTwwLCBTaWdBcmdzPjo6dHlwZSB0eXBlOwotICB9OwotCi0gIHRlbXBsYXRlPGNsYXNzIFJFVCwgQ0FMTF9URU1QTEFURV9BUkdTPiAKLSAgUkVUIGNhbGwoQ0FMTF9GT1JNQUxfQVJHUykgY29uc3QgeyAKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKG5kbmJvb3N0Ojppc19yZWZlcmVuY2U8UkVUPjo6dmFsdWUpOyAKLSAgICBDQUxMX1VTRV9BUkdTOyAvLyBkb2VzIG5vdGhpbmcsIHByZXZlbnRzIHdhcm5pbmdzIGZvciB1bnVzZWQgYXJncwotICAgIHJldHVybiBhOyAKLSAgfQotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcGxhY2Vob2xkZXI8U0VDT05EPiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgU2lnQXJncz4gc3RydWN0IHNpZyB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmdldF9lbGVtZW50X29yX251bGxfdHlwZTwxLCBTaWdBcmdzPjo6dHlwZSB0eXBlOwotICB9OwotCi0gIHRlbXBsYXRlPGNsYXNzIFJFVCwgQ0FMTF9URU1QTEFURV9BUkdTPiAKLSAgUkVUIGNhbGwoQ0FMTF9GT1JNQUxfQVJHUykgY29uc3QgeyBDQUxMX1VTRV9BUkdTOyByZXR1cm4gYjsgfQotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcGxhY2Vob2xkZXI8VEhJUkQ+IHsKLQotICB0ZW1wbGF0ZTxjbGFzcyBTaWdBcmdzPiBzdHJ1Y3Qgc2lnIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6Z2V0X2VsZW1lbnRfb3JfbnVsbF90eXBlPDIsIFNpZ0FyZ3M+Ojp0eXBlIHR5cGU7Ci0gIH07Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBDQUxMX1RFTVBMQVRFX0FSR1M+IAotICBSRVQgY2FsbChDQUxMX0ZPUk1BTF9BUkdTKSBjb25zdCB7IENBTExfVVNFX0FSR1M7IHJldHVybiBjOyB9Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBwbGFjZWhvbGRlcjxFWENFUFRJT04+IHsKLQotICB0ZW1wbGF0ZTxjbGFzcyBTaWdBcmdzPiBzdHJ1Y3Qgc2lnIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6Z2V0X2VsZW1lbnRfb3JfbnVsbF90eXBlPDMsIFNpZ0FyZ3M+Ojp0eXBlIHR5cGU7Ci0gIH07Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBDQUxMX1RFTVBMQVRFX0FSR1M+IAotICBSRVQgY2FsbChDQUxMX0ZPUk1BTF9BUkdTKSBjb25zdCB7IENBTExfVVNFX0FSR1M7IHJldHVybiBlbnY7IH0KLX07Ci0gICAKLXR5cGVkZWYgY29uc3QgbGFtYmRhX2Z1bmN0b3I8cGxhY2Vob2xkZXI8RklSU1Q+ID4gIHBsYWNlaG9sZGVyMV90eXBlOwotdHlwZWRlZiBjb25zdCBsYW1iZGFfZnVuY3RvcjxwbGFjZWhvbGRlcjxTRUNPTkQ+ID4gcGxhY2Vob2xkZXIyX3R5cGU7Ci10eXBlZGVmIGNvbnN0IGxhbWJkYV9mdW5jdG9yPHBsYWNlaG9sZGVyPFRISVJEPiA+ICBwbGFjZWhvbGRlcjNfdHlwZTsKLSAgIAotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLQotLy8gZnJlZSB2YXJpYWJsZXMgYXJlIGxhbWJkYV9mdW5jdG9ycy4gVGhpcyBpcyB0byBhbGxvdyB1bmlmb3JtIGhhbmRsaW5nIHdpdGggCi0vLyBvdGhlciBsYW1iZGFfZnVuY3RvcnMuCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID49IDE0MDApCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ1MTIpIC8vYXNzaWdubWVudCBvcGVyYXRvciBjb3VsZCBub3QgYmUgZ2VuZXJhdGVkCi0jZW5kaWYKLQotLy8gLS0gbGFtYmRhX2Z1bmN0b3IgTk9ORSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLXRlbXBsYXRlIDxjbGFzcyBUPgotY2xhc3MgbGFtYmRhX2Z1bmN0b3IgOiBwdWJsaWMgVCAKLXsKLQotTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgYXJpdHlfYml0cyA9IGdldF9hcml0eTxUPjo6dmFsdWUpOwotIAotcHVibGljOgotICB0eXBlZGVmIFQgaW5oZXJpdGVkOwotCi0gIGxhbWJkYV9mdW5jdG9yKCkge30KLSAgbGFtYmRhX2Z1bmN0b3IoY29uc3QgbGFtYmRhX2Z1bmN0b3ImIGwpIDogaW5oZXJpdGVkKGwpIHt9Ci0KLSAgbGFtYmRhX2Z1bmN0b3IoY29uc3QgVCYgdCkgOiBpbmhlcml0ZWQodCkge30KLQotICB0ZW1wbGF0ZSA8Y2xhc3MgU2lnQXJncz4gc3RydWN0IHNpZyB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbmhlcml0ZWQ6OnRlbXBsYXRlIAotICAgICAgc2lnPHR5cGVuYW1lIFNpZ0FyZ3M6OnRhaWxfdHlwZT46OnR5cGUgdHlwZTsKLSAgfTsKLQotICAvLyBOb3RlIHRoYXQgdGhpcyByZXR1cm4gdHlwZSBkZWR1Y3Rpb24gdGVtcGxhdGUgaXMgaW5zdGFudGlhdGVkLCBldmVuIAotICAvLyBpZiB0aGUgbnVsbGFyeSAKLSAgLy8gb3BlcmF0b3IoKSBpcyBub3QgY2FsbGVkIGF0IGFsbC4gT25lIG11c3QgbWFrZSBzdXJlIHRoYXQgaXQgZG9lcyBub3QgZmFpbC4KLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICBpbmhlcml0ZWQ6OnRlbXBsYXRlIHNpZzxudWxsX3R5cGU+Ojp0eXBlCi0gICAgICBudWxsYXJ5X3JldHVybl90eXBlOwotCi0gIC8vIFN1cHBvcnQgZm9yIG5kbmJvb3N0OjpyZXN1bHRfb2YuCi0gIHRlbXBsYXRlIDxjbGFzcyBTaWc+IHN0cnVjdCByZXN1bHQ7Ci0gIHRlbXBsYXRlIDxjbGFzcyBGPgotICBzdHJ1Y3QgcmVzdWx0PEYoKT4gewotICAgIHR5cGVkZWYgbnVsbGFyeV9yZXR1cm5fdHlwZSB0eXBlOwotICB9OwotICB0ZW1wbGF0ZSA8Y2xhc3MgRiwgY2xhc3MgQT4KLSAgc3RydWN0IHJlc3VsdDxGKEEpPiB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzaWc8dHVwbGU8RiwgQT4gPjo6dHlwZSB0eXBlOwotICB9OwotICB0ZW1wbGF0ZSA8Y2xhc3MgRiwgY2xhc3MgQSwgY2xhc3MgQj4KLSAgc3RydWN0IHJlc3VsdDxGKEEsIEIpPiB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzaWc8dHVwbGU8RiwgQSwgQj4gPjo6dHlwZSB0eXBlOwotICB9OwotICB0ZW1wbGF0ZSA8Y2xhc3MgRiwgY2xhc3MgQSwgY2xhc3MgQiwgY2xhc3MgQz4KLSAgc3RydWN0IHJlc3VsdDxGKEEsIEIsIEMpPiB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzaWc8dHVwbGU8RiwgQSwgQiwgQz4gPjo6dHlwZSB0eXBlOwotICB9OwotCi0gIG51bGxhcnlfcmV0dXJuX3R5cGUgb3BlcmF0b3IoKSgpIGNvbnN0IHsgCi0gICAgcmV0dXJuIGluaGVyaXRlZDo6dGVtcGxhdGUgCi0gICAgICBjYWxsPG51bGxhcnlfcmV0dXJuX3R5cGU+Ci0gICAgICAgIChjbnVsbF90eXBlKCksIGNudWxsX3R5cGUoKSwgY251bGxfdHlwZSgpLCBjbnVsbF90eXBlKCkpOyAKLSAgfQotCi0gIHRlbXBsYXRlPGNsYXNzIEE+Ci0gIHR5cGVuYW1lIGluaGVyaXRlZDo6dGVtcGxhdGUgc2lnPHR1cGxlPEEmPiA+Ojp0eXBlCi0gIG9wZXJhdG9yKCkoQSYgYSkgY29uc3QgeyAKLSAgICByZXR1cm4gaW5oZXJpdGVkOjp0ZW1wbGF0ZSBjYWxsPAotICAgICAgdHlwZW5hbWUgaW5oZXJpdGVkOjp0ZW1wbGF0ZSBzaWc8dHVwbGU8QSY+ID46OnR5cGUKLSAgICA+KGEsIGNudWxsX3R5cGUoKSwgY251bGxfdHlwZSgpLCBjbnVsbF90eXBlKCkpOwotICB9Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgQT4KLSAgTkROQk9PU1RfTEFNQkRBX0RJU0FCTEVfSUZfQVJSQVkxKEEsIGluaGVyaXRlZDo6dGVtcGxhdGUgc2lnPHR1cGxlPEEgY29uc3QmPiA+KQotICBvcGVyYXRvcigpKEEgY29uc3QmIGEpIGNvbnN0IHsgCi0gICAgcmV0dXJuIGluaGVyaXRlZDo6dGVtcGxhdGUgY2FsbDwKLSAgICAgIHR5cGVuYW1lIGluaGVyaXRlZDo6dGVtcGxhdGUgc2lnPHR1cGxlPEEgY29uc3QmPiA+Ojp0eXBlCi0gICAgPihhLCBjbnVsbF90eXBlKCksIGNudWxsX3R5cGUoKSwgY251bGxfdHlwZSgpKTsKLSAgfQotCi0gIHRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEI+Ci0gIHR5cGVuYW1lIGluaGVyaXRlZDo6dGVtcGxhdGUgc2lnPHR1cGxlPEEmLCBCJj4gPjo6dHlwZQotICBvcGVyYXRvcigpKEEmIGEsIEImIGIpIGNvbnN0IHsgCi0gICAgcmV0dXJuIGluaGVyaXRlZDo6dGVtcGxhdGUgY2FsbDwKLSAgICAgIHR5cGVuYW1lIGluaGVyaXRlZDo6dGVtcGxhdGUgc2lnPHR1cGxlPEEmLCBCJj4gPjo6dHlwZQotICAgID4oYSwgYiwgY251bGxfdHlwZSgpLCBjbnVsbF90eXBlKCkpOyAKLSAgfQotCi0gIHRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEI+Ci0gIE5ETkJPT1NUX0xBTUJEQV9ESVNBQkxFX0lGX0FSUkFZMihBLCBCLCBpbmhlcml0ZWQ6OnRlbXBsYXRlIHNpZzx0dXBsZTxBIGNvbnN0JiwgQiY+ID4pCi0gIG9wZXJhdG9yKCkoQSBjb25zdCYgYSwgQiYgYikgY29uc3QgeyAKLSAgICByZXR1cm4gaW5oZXJpdGVkOjp0ZW1wbGF0ZSBjYWxsPAotICAgICAgdHlwZW5hbWUgaW5oZXJpdGVkOjp0ZW1wbGF0ZSBzaWc8dHVwbGU8QSBjb25zdCYsIEImPiA+Ojp0eXBlCi0gICAgPihhLCBiLCBjbnVsbF90eXBlKCksIGNudWxsX3R5cGUoKSk7IAotICB9Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQj4KLSAgTkROQk9PU1RfTEFNQkRBX0RJU0FCTEVfSUZfQVJSQVkyKEEsIEIsIGluaGVyaXRlZDo6dGVtcGxhdGUgc2lnPHR1cGxlPEEmLCBCIGNvbnN0Jj4gPikKLSAgb3BlcmF0b3IoKShBJiBhLCBCIGNvbnN0JiBiKSBjb25zdCB7IAotICAgIHJldHVybiBpbmhlcml0ZWQ6OnRlbXBsYXRlIGNhbGw8Ci0gICAgICB0eXBlbmFtZSBpbmhlcml0ZWQ6OnRlbXBsYXRlIHNpZzx0dXBsZTxBJiwgQiBjb25zdCY+ID46OnR5cGUKLSAgICA+KGEsIGIsIGNudWxsX3R5cGUoKSwgY251bGxfdHlwZSgpKTsgCi0gIH0KLQotICB0ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCPgotICBORE5CT09TVF9MQU1CREFfRElTQUJMRV9JRl9BUlJBWTIoQSwgQiwgaW5oZXJpdGVkOjp0ZW1wbGF0ZSBzaWc8dHVwbGU8QSBjb25zdCYsIEIgY29uc3QmPiA+KQotICBvcGVyYXRvcigpKEEgY29uc3QmIGEsIEIgY29uc3QmIGIpIGNvbnN0IHsgCi0gICAgcmV0dXJuIGluaGVyaXRlZDo6dGVtcGxhdGUgY2FsbDwKLSAgICAgIHR5cGVuYW1lIGluaGVyaXRlZDo6dGVtcGxhdGUgc2lnPHR1cGxlPEEgY29uc3QmLCBCIGNvbnN0Jj4gPjo6dHlwZQotICAgID4oYSwgYiwgY251bGxfdHlwZSgpLCBjbnVsbF90eXBlKCkpOyAKLSAgfQotCi0gIHRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEIsIGNsYXNzIEM+Ci0gIHR5cGVuYW1lIGluaGVyaXRlZDo6dGVtcGxhdGUgc2lnPHR1cGxlPEEmLCBCJiwgQyY+ID46OnR5cGUKLSAgb3BlcmF0b3IoKShBJiBhLCBCJiBiLCBDJiBjKSBjb25zdAotICB7IAotICAgIHJldHVybiBpbmhlcml0ZWQ6OnRlbXBsYXRlIGNhbGw8Ci0gICAgICB0eXBlbmFtZSBpbmhlcml0ZWQ6OnRlbXBsYXRlIHNpZzx0dXBsZTxBJiwgQiYsIEMmPiA+Ojp0eXBlCi0gICAgPihhLCBiLCBjLCBjbnVsbF90eXBlKCkpOyAKLSAgfQotCi0gIHRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEIsIGNsYXNzIEM+Ci0gIE5ETkJPT1NUX0xBTUJEQV9ESVNBQkxFX0lGX0FSUkFZMyhBLCBCLCBDLCBpbmhlcml0ZWQ6OnRlbXBsYXRlIHNpZzx0dXBsZTxBIGNvbnN0JiwgQiBjb25zdCYsIEMgY29uc3QmPiA+KQotICBvcGVyYXRvcigpKEEgY29uc3QmIGEsIEIgY29uc3QmIGIsIEMgY29uc3QmIGMpIGNvbnN0Ci0gIHsgCi0gICAgcmV0dXJuIGluaGVyaXRlZDo6dGVtcGxhdGUgY2FsbDwKLSAgICAgIHR5cGVuYW1lIGluaGVyaXRlZDo6dGVtcGxhdGUgc2lnPHR1cGxlPEEgY29uc3QmLCBCIGNvbnN0JiwgQyBjb25zdCY+ID46OnR5cGUKLSAgICA+KGEsIGIsIGMsIGNudWxsX3R5cGUoKSk7IAotICB9Ci0KLSAgLy8gZm9yIGludGVybmFsIGNhbGxzIHdpdGggZW52Ci0gIHRlbXBsYXRlPENBTExfVEVNUExBVEVfQVJHUz4KLSAgdHlwZW5hbWUgaW5oZXJpdGVkOjp0ZW1wbGF0ZSBzaWc8dHVwbGU8Q0FMTF9SRUZFUkVOQ0VfVFlQRVM+ID46OnR5cGUKLSAgaW50ZXJuYWxfY2FsbChDQUxMX0ZPUk1BTF9BUkdTKSBjb25zdCB7IAotICAgICByZXR1cm4gaW5oZXJpdGVkOjp0ZW1wbGF0ZSAKLSAgICAgICBjYWxsPHR5cGVuYW1lIGluaGVyaXRlZDo6dGVtcGxhdGUgCi0gICAgICAgICBzaWc8dHVwbGU8Q0FMTF9SRUZFUkVOQ0VfVFlQRVM+ID46OnR5cGU+KENBTExfQUNUVUFMX0FSR1MpOyAKLSAgfQotCi0gIHRlbXBsYXRlPGNsYXNzIEE+Ci0gIGNvbnN0IGxhbWJkYV9mdW5jdG9yPGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICAgICAgICAgICAgICBvdGhlcl9hY3Rpb248YXNzaWdubWVudF9hY3Rpb24+LAotICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnR1cGxlPGxhbWJkYV9mdW5jdG9yLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgY29uc3RfY29weV9hcmd1bWVudCA8Y29uc3QgQT46OnR5cGU+ID4gPgotICBvcGVyYXRvcj0oY29uc3QgQSYgYSkgY29uc3QgewotICAgIHJldHVybiBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgICAgICAgICAgICAgb3RoZXJfYWN0aW9uPGFzc2lnbm1lbnRfYWN0aW9uPiwKLSAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp0dXBsZTxsYW1iZGFfZnVuY3RvciwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIGNvbnN0X2NvcHlfYXJndW1lbnQgPGNvbnN0IEE+Ojp0eXBlPiA+Ci0gICAgICggIG5kbmJvb3N0Ojp0dXBsZTxsYW1iZGFfZnVuY3RvciwKLSAgICAgICAgICAgICB0eXBlbmFtZSBjb25zdF9jb3B5X2FyZ3VtZW50IDxjb25zdCBBPjo6dHlwZT4oKnRoaXMsIGEpICk7Ci0gIH0KLQotICB0ZW1wbGF0ZTxjbGFzcyBBPiAKLSAgY29uc3QgbGFtYmRhX2Z1bmN0b3I8bGFtYmRhX2Z1bmN0b3JfYmFzZTwgCi0gICAgICAgICAgICAgICAgICBvdGhlcl9hY3Rpb248c3Vic2NyaXB0X2FjdGlvbj4sIAotICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnR1cGxlPGxhbWJkYV9mdW5jdG9yLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIGNvbnN0X2NvcHlfYXJndW1lbnQgPGNvbnN0IEE+Ojp0eXBlPiA+ID4gCi0gIG9wZXJhdG9yW10oY29uc3QgQSYgYSkgY29uc3QgeyAKLSAgICByZXR1cm4gbGFtYmRhX2Z1bmN0b3JfYmFzZTwgCi0gICAgICAgICAgICAgICAgICBvdGhlcl9hY3Rpb248c3Vic2NyaXB0X2FjdGlvbj4sIAotICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnR1cGxlPGxhbWJkYV9mdW5jdG9yLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIGNvbnN0X2NvcHlfYXJndW1lbnQgPGNvbnN0IEE+Ojp0eXBlPiA+Ci0gICAgICggbmRuYm9vc3Q6OnR1cGxlPGxhbWJkYV9mdW5jdG9yLCAKLSAgICAgICAgICAgICB0eXBlbmFtZSBjb25zdF9jb3B5X2FyZ3VtZW50IDxjb25zdCBBPjo6dHlwZT4oKnRoaXMsIGEgKSApOyAKLSAgfSAKLX07Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID49IDE0MDApCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIGxhbWJkYQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1JFU1VMVF9PRl9VU0VfREVDTFRZUEUpIHx8IGRlZmluZWQoTkROQk9PU1RfTk9fREVDTFRZUEUpCi0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgcmVzdWx0X29mPG5kbmJvb3N0OjpsYW1iZGE6OmxhbWJkYV9mdW5jdG9yPFQ+KCk+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6bGFtYmRhOjpsYW1iZGFfZnVuY3RvcjxUPjo6bnVsbGFyeV9yZXR1cm5fdHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCByZXN1bHRfb2Y8Y29uc3QgbmRuYm9vc3Q6OmxhbWJkYTo6bGFtYmRhX2Z1bmN0b3I8VD4oKT4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpsYW1iZGE6OmxhbWJkYV9mdW5jdG9yPFQ+OjpudWxsYXJ5X3JldHVybl90eXBlIHR5cGU7Ci19OwotCi0jZW5kaWYKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCB0cjFfcmVzdWx0X29mPG5kbmJvb3N0OjpsYW1iZGE6OmxhbWJkYV9mdW5jdG9yPFQ+KCk+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6bGFtYmRhOjpsYW1iZGFfZnVuY3RvcjxUPjo6bnVsbGFyeV9yZXR1cm5fdHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCB0cjFfcmVzdWx0X29mPGNvbnN0IG5kbmJvb3N0OjpsYW1iZGE6OmxhbWJkYV9mdW5jdG9yPFQ+KCk+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6bGFtYmRhOjpsYW1iZGFfZnVuY3RvcjxUPjo6bnVsbGFyeV9yZXR1cm5fdHlwZSB0eXBlOwotfTsKLQotfQotCi0vLyBpc19wbGFjZWhvbGRlcgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaXNfcGxhY2Vob2xkZXIuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfcGxhY2Vob2xkZXI8IGxhbWJkYTo6bGFtYmRhX2Z1bmN0b3I8IGxhbWJkYTo6cGxhY2Vob2xkZXI8bGFtYmRhOjpGSVJTVD4gPiA+Ci17Ci0gICAgZW51bSBfdnQgeyB2YWx1ZSA9IDEgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGlzX3BsYWNlaG9sZGVyPCBsYW1iZGE6OmxhbWJkYV9mdW5jdG9yPCBsYW1iZGE6OnBsYWNlaG9sZGVyPGxhbWJkYTo6U0VDT05EPiA+ID4KLXsKLSAgICBlbnVtIF92dCB7IHZhbHVlID0gMiB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfcGxhY2Vob2xkZXI8IGxhbWJkYTo6bGFtYmRhX2Z1bmN0b3I8IGxhbWJkYTo6cGxhY2Vob2xkZXI8bGFtYmRhOjpUSElSRD4gPiA+Ci17Ci0gICAgZW51bSBfdnQgeyB2YWx1ZSA9IDMgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL2xhbWJkYV9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL2xhbWJkYV9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOThjZWY2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9sYW1iZGFfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLS8vICBsYW1iZGFfZndkLmhwcCAtIEJvb3N0IExhbWJkYSBMaWJyYXJ5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwIEphYWtrbyBKYXJ2aSAoamFha2tvLmphcnZpQGNzLnV0dS5maSkKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB3d3cuYm9vc3Qub3JnCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBORE5CT09TVF9MQU1CREFfRldEX0hQUAotI2RlZmluZSBORE5CT09TVF9MQU1CREFfRldEX0hQUAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyAKLW5hbWVzcGFjZSBsYW1iZGEgeyAKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBnZW5lcmF0ZV9lcnJvcjsKLQotfSAgIAotLy8gLS0gcGxhY2Vob2xkZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLXRlbXBsYXRlIDxpbnQgST4gc3RydWN0IHBsYWNlaG9sZGVyOwotCi0vLyBmdW5jdGlvbl9hZGFwdG9ycwotdGVtcGxhdGUgPGNsYXNzIEZ1bmM+IAotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I7Ci0KLXRlbXBsYXRlIDxpbnQgSSwgY2xhc3MgQWN0PiBjbGFzcyBhY3Rpb247Ci0KLXRlbXBsYXRlIDxjbGFzcyBCYXNlPiAKLWNsYXNzIGxhbWJkYV9mdW5jdG9yOwotCi10ZW1wbGF0ZSA8Y2xhc3MgQWN0LCBjbGFzcyBBcmdzPiAKLWNsYXNzIGxhbWJkYV9mdW5jdG9yX2Jhc2U7Ci0KLX0gLy8gbmFtZXNwYWNlIGxhbWJkYQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotCi0vLyAgI2RlZmluZSBDQUxMX1RFTVBMQVRFX0FSR1MgY2xhc3MgQSwgY2xhc3MgRW52Ci0vLyAgI2RlZmluZSBDQUxMX0ZPUk1BTF9BUkdTIEEmIGEsIEVudiYgZW52Ci0vLyAgI2RlZmluZSBDQUxMX0FDVFVBTF9BUkdTIGEsIGVudgotLy8gICNkZWZpbmUgQ0FMTF9BQ1RVQUxfQVJHU19OT19FTlYgYQotLy8gICNkZWZpbmUgQ0FMTF9SRUZFUkVOQ0VfVFlQRVMgQSYsIEVudiYKLS8vICAjZGVmaW5lIENBTExfUExBSU5fVFlQRVMgQSwgRW52Ci0jZGVmaW5lIENBTExfVEVNUExBVEVfQVJHUyBjbGFzcyBBLCBjbGFzcyBCLCBjbGFzcyBDLCBjbGFzcyBFbnYKLSNkZWZpbmUgQ0FMTF9GT1JNQUxfQVJHUyBBJiBhLCBCJiBiLCBDJiBjLCBFbnYmIGVudgotI2RlZmluZSBDQUxMX0FDVFVBTF9BUkdTIGEsIGIsIGMsIGVudgotI2RlZmluZSBDQUxMX0FDVFVBTF9BUkdTX05PX0VOViBhLCBiLCBjCi0jZGVmaW5lIENBTExfUkVGRVJFTkNFX1RZUEVTIEEmLCBCJiwgQyYsIEVudiYKLSNkZWZpbmUgQ0FMTF9QTEFJTl9UWVBFUyBBLCBCLCBDLCBFbnYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSBsYW1iZGEgewotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0Pgotdm9pZCBkb19ub3RoaW5nKEExJiwgQTImLCBBMyYsIEE0Jikge30KLQotfSAvLyBkZXRhaWwKLX0gLy8gbGFtYmRhCi19IC8vIGJvb3N0Ci0KLS8vIHByZXZlbnQgdGhlIHdhcm5pbmdzIGZyb20gdW51c2VkIGFyZ3VtZW50cwotI2RlZmluZSBDQUxMX1VTRV9BUkdTIFwKLTo6bmRuYm9vc3Q6OmxhbWJkYTo6ZGV0YWlsOjpkb19ub3RoaW5nKGEsIGIsIGMsIGVudikKLQotCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL2xhbWJkYV90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL2xhbWJkYV90cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjM2ZTA5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9sYW1iZGFfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU3OCArMCwwIEBACi0vLyAtIGxhbWJkYV90cmFpdHMuaHBwIC0tLSBCb29zdCBMYW1iZGEgTGlicmFyeSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLwotLy8gQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwIEphYWtrbyBKYXJ2aSAoamFha2tvLmphcnZpQGNzLnV0dS5maSkKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB3d3cuYm9vc3Qub3JnCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZm5kZWYgTkROQk9PU1RfTEFNQkRBX0xBTUJEQV9UUkFJVFNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9MQU1CREFfVFJBSVRTX0hQUAotCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvdHJhbnNmb3JtX3RyYWl0cy5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvY3ZfdHJhaXRzLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9mdW5jdGlvbl90cmFpdHMuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL29iamVjdF90cmFpdHMuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R1cGxlL3R1cGxlLmhwcCIKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSBsYW1iZGEgewotCi0vLyAtLSBpZiBjb25zdHJ1Y3QgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBQcm9wb3NlZCBieSBLcnp5c3p0b2YgQ3phcm5lY2tpIGFuZCBVbHJpY2ggRWlzZW5lY2tlcgotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGUgPGJvb2wgSWYsIGNsYXNzIFRoZW4sIGNsYXNzIEVsc2U+IHN0cnVjdCBJRiB7IHR5cGVkZWYgVGhlbiBSRVQ7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUaGVuLCBjbGFzcyBFbHNlPiBzdHJ1Y3QgSUY8ZmFsc2UsIFRoZW4sIEVsc2U+IHsKLSAgdHlwZWRlZiBFbHNlIFJFVDsKLX07Ci0KLQotLy8gQW4gaWYgY29uc3RydWN0IHRoYXQgZG9lc24ndCBpbnN0YW50aWF0ZSB0aGUgbm9uLW1hdGNoaW5nIHRlbXBsYXRlOgotCi0vLyBDYWxsZWQgYXM6IAotLy8gIElGX3R5cGU8Y29uZGl0aW9uLCBBLCBCPjo6dHlwZSAKLS8vIFRoZSBtYXRjaGluZyB0ZW1wbGF0ZSBtdXN0IGRlZmluZSB0aGUgdHlwZWRlZCAndHlwZScKLS8vIEkuZS4gQTo6dHlwZSBpZiBjb25kaXRpb24gaXMgdHJ1ZSwgQjo6dHlwZSBpZiBjb25kaXRpb24gaXMgZmFsc2UKLS8vIElkZWEgZnJvbSBWZXNhIEthcnZvbmVuIChmcm9tIEMmRSBhcyB3ZWxsIEkgZ3Vlc3MpCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IElGX3R5cGVfCi17Ci0gIHR5cGVkZWYgdHlwZW5hbWUgVDo6dHlwZSB0eXBlOwotfTsKLQotCi10ZW1wbGF0ZTxib29sIEMsIGNsYXNzIFQsIGNsYXNzIEU+Ci1zdHJ1Y3QgSUZfdHlwZQotewotICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgSUZfdHlwZV88dHlwZW5hbWUgSUY8QywgVCwgRT46OlJFVCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLyBoZWxwZXIgdGhhdCBjYW4gYmUgdXNlZCB0byBnaXZlIHR5cGVkZWYgVCB0byBzb21lIHR5cGUKLXRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgaWRlbnRpdHlfbWFwcGluZyB7IHR5cGVkZWYgVCB0eXBlOyB9OwotCi0vLyBBbiBpZiBjb25zdHJ1Y3QgZm9yIGZpbmRpbmcgYW4gaW50ZWdyYWwgY29uc3RhbnQgJ3ZhbHVlJwotLy8gRG9lcyBub3QgaW5zdGFudGlhdGUgdGhlIG5vbi1tYXRjaGluZyBicmFuY2gKLS8vIENhbGxlZCBhcyBJRl92YWx1ZTxjb25kaXRpb24sIEEsIEI+Ojp2YWx1ZQotLy8gSWYgY29uZGl0aW9uIGlzIHRydWUgQTo6dmFsdWUgbXVzdCBiZSBkZWZpbmVkLCBvdGhlcndpc2UgQjo6dmFsdWUKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBJRl92YWx1ZV8KLXsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSBUOjp2YWx1ZSk7Ci19OwotCi0KLXRlbXBsYXRlPGJvb2wgQywgY2xhc3MgVCwgY2xhc3MgRT4KLXN0cnVjdCBJRl92YWx1ZQotewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9IChJRl92YWx1ZV88dHlwZW5hbWUgSUY8QywgVCwgRT46OlJFVD46OnZhbHVlKSk7Ci19OwotCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIHJlbW92ZXMgcmVmZXJlbmNlIGZyb20gb3RoZXIgdGhhbiBmdW5jdGlvbiB0eXBlczoKLXRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIHJlbW92ZV9yZWZlcmVuY2VfaWZfdmFsaWQKLXsKLQotICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0eXBlIHBsYWluVDsKLXB1YmxpYzoKLSAgdHlwZWRlZiB0eXBlbmFtZSBJRjwKLSAgICBuZG5ib29zdDo6aXNfZnVuY3Rpb248cGxhaW5UPjo6dmFsdWUsCi0gICAgVCwKLSAgICBwbGFpblQKLSAgPjo6UkVUIHR5cGU7Ci0KLX07Ci0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHJlbW92ZV9yZWZlcmVuY2VfYW5kX2N2IHsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9jdjwKLSAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9yZWZlcmVuY2U8VD46OnR5cGUKLSAgID46OnR5cGUgdHlwZTsKLX07Ci0KLQotICAgCi0vLyByZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSBlbGVtZW50IG9mIHR1cGxlIFQKLXRlbXBsYXRlPGludCBOLCBjbGFzcyBUPiBzdHJ1Y3QgdHVwbGVfZWxlbWVudF9hc19yZWZlcmVuY2UgeyAgIAotICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgIG5kbmJvb3N0Ojp0dXBsZXM6OmFjY2Vzc190cmFpdHM8Ci0gICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnR1cGxlczo6ZWxlbWVudDxOLCBUPjo6dHlwZQotICAgICA+Ojpub25fY29uc3RfdHlwZSB0eXBlOwotfTsKLQotLy8gcmV0dXJucyB0aGUgY3YgYW5kIHJldmVyZW5jZSBzdHJpcHBlZCB0eXBlIG9mIGEgdHVwbGUgZWxlbWVudAotdGVtcGxhdGU8aW50IE4sIGNsYXNzIFQ+IHN0cnVjdCB0dXBsZV9lbGVtZW50X3N0cmlwcGVkIHsgICAKLSAgdHlwZWRlZiB0eXBlbmFtZQotICAgICByZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjwKLSAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6dHVwbGVzOjplbGVtZW50PE4sIFQ+Ojp0eXBlCi0gICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vIGlzX2xhbWJkYV9mdW5jdG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAKLQotdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBpc19sYW1iZGFfZnVuY3Rvcl8gewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotICAgCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnPiBzdHJ1Y3QgaXNfbGFtYmRhX2Z1bmN0b3JfPGxhbWJkYV9mdW5jdG9yPEFyZz4gPiB7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOwotfTsKLSAgIAotfSAvLyBlbmQgZGV0YWlsCi0KLSAgIAotdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBpc19sYW1iZGFfZnVuY3RvciB7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCAKLSAgICAgdmFsdWUgPSAKLSAgICAgICBkZXRhaWw6OmlzX2xhbWJkYV9mdW5jdG9yXzwKLSAgICAgICAgIHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8VD46OnR5cGUKLSAgICAgICA+Ojp2YWx1ZSk7Ci19OwotICAgCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyAtLSBwYXJhbWV0ZXJfdHJhaXRzXyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gQW4gaW50ZXJuYWwgcGFyYW1ldGVyIHR5cGUgdHJhaXRzIGNsYXNzIHRoYXQgcmVzcGVjdHMKLS8vIHRoZSByZWZlcmVuY2Vfd3JhcHBlciBjbGFzcy4KLQotLy8gVGhlIGNvbnZlcnNpb25zIHBlcmZvcm1lZCBhcmU6Ci0vLyByZWZlcmVuY2VzIC0+IGNvbXBpbGVfdGltZV9lcnJvcgotLy8gVDEgLT4gVDIsIAotLy8gcmVmZXJlbmNlX3dyYXBwZXI8VD4gLT4gVCYKLS8vIGNvbnN0IGFycmF5IC0+IHJlZiB0byBjb25zdCBhcnJheQotLy8gYXJyYXkgLT4gcmVmIHRvIGFycmF5Ci0vLyBmdW5jdGlvbiAtPiByZWYgdG8gZnVuY3Rpb24KLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLXRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBUMj4gCi1zdHJ1Y3QgcGFyYW1ldGVyX3RyYWl0c18gewotICB0eXBlZGVmIFQyIHR5cGU7Ci19OwotCi0vLyBEbyBub3QgaW5zdGFudGlhdGUgd2l0aCByZWZlcmVuY2UgdHlwZXMKLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEFueT4gc3RydWN0IHBhcmFtZXRlcl90cmFpdHNfPFQmLCBBbnk+IHsKLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICBnZW5lcmF0ZV9lcnJvcjxUJj46OgotICAgICAgcGFyYW1ldGVyX3RyYWl0c19jbGFzc19pbnN0YW50aWF0ZWRfd2l0aF9yZWZlcmVuY2VfdHlwZSB0eXBlOwotfTsKLQotLy8gQXJyYXlzIGNhbid0IGJlIHN0b3JlZCBhcyBwbGFpbiB0eXBlczsgY29udmVydCB0aGVtIHRvIHJlZmVyZW5jZXMKLXRlbXBsYXRlPGNsYXNzIFQsIGludCBuLCBjbGFzcyBBbnk+IHN0cnVjdCBwYXJhbWV0ZXJfdHJhaXRzXzxUW25dLCBBbnk+IHsKLSAgdHlwZWRlZiBUICgmdHlwZSlbbl07Ci19OwotICAgCi10ZW1wbGF0ZTxjbGFzcyBULCBpbnQgbiwgY2xhc3MgQW55PiAKLXN0cnVjdCBwYXJhbWV0ZXJfdHJhaXRzXzxjb25zdCBUW25dLCBBbnk+IHsKLSAgdHlwZWRlZiBjb25zdCBUICgmdHlwZSlbbl07Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBULCBpbnQgbiwgY2xhc3MgQW55PiAKLXN0cnVjdCBwYXJhbWV0ZXJfdHJhaXRzXzx2b2xhdGlsZSBUW25dLCBBbnk+IHsKLSAgdHlwZWRlZiB2b2xhdGlsZSAgVCAoJnR5cGUpW25dOwotfTsKLXRlbXBsYXRlPGNsYXNzIFQsIGludCBuLCBjbGFzcyBBbnk+IAotc3RydWN0IHBhcmFtZXRlcl90cmFpdHNfPGNvbnN0IHZvbGF0aWxlIFRbbl0sIEFueT4gewotICB0eXBlZGVmIGNvbnN0IHZvbGF0aWxlIFQgKCZ0eXBlKVtuXTsKLX07Ci0KLQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgQW55PiAKLXN0cnVjdCBwYXJhbWV0ZXJfdHJhaXRzXzxuZG5ib29zdDo6cmVmZXJlbmNlX3dyYXBwZXI8VD4sIEFueSA+ewotICB0eXBlZGVmIFQmIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBBbnk+IAotc3RydWN0IHBhcmFtZXRlcl90cmFpdHNfPGNvbnN0IG5kbmJvb3N0OjpyZWZlcmVuY2Vfd3JhcHBlcjxUPiwgQW55ID57Ci0gIHR5cGVkZWYgVCYgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEFueT4gCi1zdHJ1Y3QgcGFyYW1ldGVyX3RyYWl0c188dm9sYXRpbGUgbmRuYm9vc3Q6OnJlZmVyZW5jZV93cmFwcGVyPFQ+LCBBbnkgPnsKLSAgdHlwZWRlZiBUJiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgQW55PiAKLXN0cnVjdCBwYXJhbWV0ZXJfdHJhaXRzXzxjb25zdCB2b2xhdGlsZSBuZG5ib29zdDo6cmVmZXJlbmNlX3dyYXBwZXI8VD4sIEFueSA+ewotICB0eXBlZGVmIFQmIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBBbnk+Ci1zdHJ1Y3QgcGFyYW1ldGVyX3RyYWl0c188dm9pZCwgQW55PiB7Ci0gIHR5cGVkZWYgdm9pZCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQXJnLCBjbGFzcyBBbnk+Ci1zdHJ1Y3QgcGFyYW1ldGVyX3RyYWl0c188bGFtYmRhX2Z1bmN0b3I8QXJnPiwgQW55ID4gewotICB0eXBlZGVmIGxhbWJkYV9mdW5jdG9yPEFyZz4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEFyZywgY2xhc3MgQW55Pgotc3RydWN0IHBhcmFtZXRlcl90cmFpdHNfPGNvbnN0IGxhbWJkYV9mdW5jdG9yPEFyZz4sIEFueSA+IHsKLSAgdHlwZWRlZiBsYW1iZGFfZnVuY3RvcjxBcmc+IHR5cGU7Ci19OwotCi0vLyBBcmUgdGhlIHZvbGF0aWxlIHZlcnNpb25zIG5lZWRlZD8KLXRlbXBsYXRlPGNsYXNzIEFyZywgY2xhc3MgQW55Pgotc3RydWN0IHBhcmFtZXRlcl90cmFpdHNfPHZvbGF0aWxlIGxhbWJkYV9mdW5jdG9yPEFyZz4sIEFueSA+IHsKLSAgdHlwZWRlZiBsYW1iZGFfZnVuY3RvcjxBcmc+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBBcmcsIGNsYXNzIEFueT4KLXN0cnVjdCBwYXJhbWV0ZXJfdHJhaXRzXzxjb25zdCB2b2xhdGlsZSBsYW1iZGFfZnVuY3RvcjxBcmc+LCBBbnkgPiB7Ci0gIHR5cGVkZWYgbGFtYmRhX2Z1bmN0b3I8QXJnPiB0eXBlOwotfTsKLQotfSAvLyBlbmQgbmFtZXNwYWNlIGRldGFpbAotCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gdHJhaXRzIGNsYXNzZXMgZm9yIGxhbWJkYSBleHByZXNzaW9ucyAoYmluZCBmdW5jdGlvbnMsIG9wZXJhdG9ycyAuLi4pICAgCi0KLS8vIG11c3QgYmUgaW5zdGFudGlhdGVkIHdpdGggbm9uLXJlZmVyZW5jZSB0eXBlcwotCi0vLyBUaGUgZGVmYXVsdCBpcyBjb25zdCBwbGFpbiB0eXBlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIGNvbnN0IFQgLT4gY29uc3QgVCwgCi0vLyBUIC0+IGNvbnN0IFQsIAotLy8gcmVmZXJlbmNlcyAtPiBjb21waWxlX3RpbWVfZXJyb3IKLS8vIHJlZmVyZW5jZV93cmFwcGVyPFQ+IC0+IFQmCi0vLyBhcnJheSAtPiBjb25zdCByZWYgYXJyYXkKLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgY29uc3RfY29weV9hcmd1bWVudCB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgZGV0YWlsOjpwYXJhbWV0ZXJfdHJhaXRzXzwKLSAgICAgIFQsCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OklGPG5kbmJvb3N0Ojppc19mdW5jdGlvbjxUPjo6dmFsdWUsIFQmLCBjb25zdCBUPjo6UkVUCi0gICAgPjo6dHlwZSB0eXBlOwotfTsKLQotLy8gVCBtYXkgYmUgYSBmdW5jdGlvbiB0eXBlLiBXaXRob3V0IHRoZSBJRiB0ZXN0LCBjb25zdCB3b3VsZCBiZSBhZGRlZCAKLS8vIHRvIGEgZnVuY3Rpb24gdHlwZSwgd2hpY2ggaXMgaWxsZWdhbC4KLQotLy8gYWxsIGFycmF5cyBhcmUgY29udmVydGVkIHRvIGNvbnN0LgotLy8gVGhpcyB0cmFpdHMgdGVtcGxhdGUgaXMgdXNlZCBmb3IgJ2NvbnN0IFQmJyBwYXJhbWV0ZXIgcGFzc2luZyAKLS8vIGFuZCB0aHVzIHRoZSBrbm93bGVkZ2Ugb2YgdGhlIHBvdGVudGlhbCAKLS8vIG5vbi1jb25zdG5lc3Mgb2YgYW4gYWN0dWFsIGFyZ3VtZW50IGlzIGxvc3QuICAgCi10ZW1wbGF0ZTxjbGFzcyBULCBpbnQgbj4gIHN0cnVjdCBjb25zdF9jb3B5X2FyZ3VtZW50IDxUW25dPiB7Ci0gIHR5cGVkZWYgY29uc3QgVCAoJnR5cGUpW25dOwotfTsKLXRlbXBsYXRlPGNsYXNzIFQsIGludCBuPiAgc3RydWN0IGNvbnN0X2NvcHlfYXJndW1lbnQgPHZvbGF0aWxlIFRbbl0+IHsKLSAgICAgdHlwZWRlZiBjb25zdCB2b2xhdGlsZSBUICgmdHlwZSlbbl07Ci19OwotICAgCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IGNvbnN0X2NvcHlfYXJndW1lbnQ8VCY+IHt9OwotLy8gZG8gbm90IGluc3RhbnRpYXRlIHdpdGggcmVmZXJlbmNlcwotICAvLyAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmdlbmVyYXRlX2Vycm9yPFQmPjo6cmVmZXJlbmNlc19ub3RfYWxsb3dlZCB0eXBlOwotCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjb25zdF9jb3B5X2FyZ3VtZW50PHZvaWQ+IHsKLSAgdHlwZWRlZiB2b2lkIHR5cGU7Ci19OwotCi0KLS8vIERvZXMgdGhlIHNhbWUgYXMgY29uc3RfY29weV9hcmd1bWVudCwgYnV0IHBhc3NlcyByZWZlcmVuY2VzIHRocm91Z2ggYXMgc3VjaAotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBib3VuZF9hcmd1bWVudF9jb252ZXJzaW9uIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBjb25zdF9jb3B5X2FyZ3VtZW50PFQ+Ojp0eXBlIHR5cGU7IAotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBib3VuZF9hcmd1bWVudF9jb252ZXJzaW9uPFQmPiB7Ci0gIHR5cGVkZWYgVCYgdHlwZTsgCi19OwotICAgCi0vLyBUaGUgZGVmYXVsdCBpcyBub24tY29uc3QgcmVmZXJlbmNlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIGNvbnN0IFQgLT4gY29uc3QgVCYsIAotLy8gVCAtPiBUJiwgCi0vLyByZWZlcmVuY2VzIC0+IGNvbXBpbGVfdGltZV9lcnJvcgotLy8gcmVmZXJlbmNlX3dyYXBwZXI8VD4gLT4gVCYKLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgcmVmZXJlbmNlX2FyZ3VtZW50IHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnBhcmFtZXRlcl90cmFpdHNfPFQsIFQmPjo6dHlwZSB0eXBlOyAKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgcmVmZXJlbmNlX2FyZ3VtZW50PFQmPiB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpnZW5lcmF0ZV9lcnJvcjxUJj46OnJlZmVyZW5jZXNfbm90X2FsbG93ZWQgdHlwZTsgCi19OwotCi10ZW1wbGF0ZTxjbGFzcyBBcmc+Ci1zdHJ1Y3QgcmVmZXJlbmNlX2FyZ3VtZW50PGxhbWJkYV9mdW5jdG9yPEFyZz4gPiB7Ci0gIHR5cGVkZWYgbGFtYmRhX2Z1bmN0b3I8QXJnPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQXJnPgotc3RydWN0IHJlZmVyZW5jZV9hcmd1bWVudDxjb25zdCBsYW1iZGFfZnVuY3RvcjxBcmc+ID4gewotICB0eXBlZGVmIGxhbWJkYV9mdW5jdG9yPEFyZz4gdHlwZTsKLX07Ci0KLS8vIEFyZSB0aGUgdm9sYXRpbGUgdmVyc2lvbnMgbmVlZGVkPwotdGVtcGxhdGU8Y2xhc3MgQXJnPgotc3RydWN0IHJlZmVyZW5jZV9hcmd1bWVudDx2b2xhdGlsZSBsYW1iZGFfZnVuY3RvcjxBcmc+ID4gewotICB0eXBlZGVmIGxhbWJkYV9mdW5jdG9yPEFyZz4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEFyZz4KLXN0cnVjdCByZWZlcmVuY2VfYXJndW1lbnQ8Y29uc3Qgdm9sYXRpbGUgbGFtYmRhX2Z1bmN0b3I8QXJnPiA+IHsKLSAgdHlwZWRlZiBsYW1iZGFfZnVuY3RvcjxBcmc+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmVmZXJlbmNlX2FyZ3VtZW50PHZvaWQ+IHsKLSAgdHlwZWRlZiB2b2lkIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLSAgIAotLy8gQXJyYXkgdG8gcG9pbnRlciBjb252ZXJzaW9uCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBhcnJheV90b19wb2ludGVyIHsgCi0gIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGludCBOPgotc3RydWN0IGFycmF5X3RvX3BvaW50ZXIgPGNvbnN0IFRbTl0+IHsgCi0gIHR5cGVkZWYgY29uc3QgVCogdHlwZTsKLX07Ci10ZW1wbGF0ZSA8Y2xhc3MgVCwgaW50IE4+Ci1zdHJ1Y3QgYXJyYXlfdG9fcG9pbnRlciA8VFtOXT4geyAKLSAgdHlwZWRlZiBUKiB0eXBlOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGludCBOPgotc3RydWN0IGFycmF5X3RvX3BvaW50ZXIgPGNvbnN0IFQgKCYpIFtOXT4geyAKLSAgdHlwZWRlZiBjb25zdCBUKiB0eXBlOwotfTsKLXRlbXBsYXRlIDxjbGFzcyBULCBpbnQgTj4KLXN0cnVjdCBhcnJheV90b19wb2ludGVyIDxUICgmKSBbTl0+IHsgCi0gIHR5cGVkZWYgVCogdHlwZTsKLX07Ci0KLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBUaGUgY2FsbF90cmFpdHMgZm9yIGJpbmQKLS8vIFJlc3BlY3RzIHRoZSByZWZlcmVuY2Vfd3JhcHBlciBjbGFzcy4KLQotLy8gVGhlc2UgdGVtcGxhdGVzIGFyZSB1c2VkIG91dHNpZGUgb2YgYmluZCBmdW5jdGlvbnMgYXMgd2VsbC4KLS8vIHRoZSBiaW5kX3R1cGxlX21hcHBlciBwcm92aWRlcyBhIHNob3J0ZXIgbm90YXRpb24gZm9yIGRlZmF1bHQKLS8vIGJvdW5kIGFyZ3VtZW50IHN0b3Jpbmcgc2VtYW50aWNzLCBpZiBhbGwgYXJndW1lbnRzIGFyZSB0cmVhdGVkCi0vLyB1bmlmb3JtbHkuCi0KLS8vIGZyb20gdGVtcGxhdGU8Y2xhc3MgVD4gZm9vKGNvbnN0IFQmIHQpIDogYmluZF90cmFpdHM8Y29uc3QgVD46OnR5cGUKLS8vIGZyb20gdGVtcGxhdGU8Y2xhc3MgVD4gZm9vKFQmIHQpIDogYmluZF90cmFpdHM8VD46OnR5cGUKLQotLy8gQ29udmVyc2lvbnM6Ci0vLyBUIC0+IGNvbnN0IFQsCi0vLyBjdiBUIC0+IGN2IFQsIAotLy8gVCYgLT4gVCYgCi0vLyByZWZlcmVuY2Vfd3JhcHBlcjxUPiAtPiBUJgotLy8gY29uc3QgcmVmZXJlbmNlX3dyYXBwZXI8VD4gLT4gVCYKLS8vIGFycmF5IC0+IGNvbnN0IHJlZiBhcnJheQotCi0vLyBtYWtlIGJvdW5kIGFyZ3VtZW50cyBjb25zdCwgdGhpcyBpcyBhIGRlbGliZXJhdGUgZGVzaWduIGNob2ljZSwgdGhlCi0vLyBwdXJwb3NlIGlzIHRvIHByZXZlbnQgc2lkZSBlZmZlY3RzIHRvIGJvdW5kIGFyZ3VtZW50cyB0aGF0IGFyZSBzdG9yZWQKLS8vIGFzIGNvcGllcwotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBiaW5kX3RyYWl0cyB7Ci0gIHR5cGVkZWYgY29uc3QgVCB0eXBlOyAKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgYmluZF90cmFpdHM8VCY+IHsKLSAgdHlwZWRlZiBUJiB0eXBlOyAKLX07Ci0KLS8vIG51bGxfdHlwZXMgYXJlIGFuIGV4Y2VwdGlvbiwgd2UgYWx3YXlzIHdhbnQgdG8gc3RvcmUgdGhlbSBhcyBub24gY29uc3QKLS8vIHNvIHRoYXQgb3RoZXIgdGVtcGxhdGVzIGNhbiBhc3N1bWUgdGhhdCBudWxsX3R5cGUgaXMgYWx3YXlzIHdpdGhvdXQgY29uc3QKLXRlbXBsYXRlPD4KLXN0cnVjdCBiaW5kX3RyYWl0czxudWxsX3R5cGU+IHsKLSAgdHlwZWRlZiBudWxsX3R5cGUgdHlwZTsKLX07Ci0KLS8vIHRoZSBiaW5kX3R1cGxlX21hcHBlciwgYmluZF90eXBlX2dlbmVyYXRvcnMgbWF5IAotLy8gaW50cm9kdWNlIGNvbnN0IHRvIG51bGxfdHlwZQotdGVtcGxhdGU8Pgotc3RydWN0IGJpbmRfdHJhaXRzPGNvbnN0IG51bGxfdHlwZT4gewotICB0eXBlZGVmIG51bGxfdHlwZSB0eXBlOwotfTsKLQotLy8gQXJyYXlzIGNhbid0IGJlIHN0b3JlZCBhcyBwbGFpbiB0eXBlczsgY29udmVydCB0aGVtIHRvIHJlZmVyZW5jZXMuCi0vLyBBbGwgYXJyYXlzIGFyZSBjb252ZXJ0ZWQgdG8gY29uc3QuIFRoaXMgaXMgYmVjYXVzZSBiaW5kIHRha2VzIGl0cwotLy8gcGFyYW1ldGVycyBhcyBjb25zdCBUJiBhbmQgdGh1cyB0aGUga25vd2xlZGdlIG9mIHRoZSBwb3RlbnRpYWwgCi0vLyBub24tY29uc3RuZXNzIG9mIGFjdHVhbCBhcmd1bWVudCBpcyBsb3N0LgotdGVtcGxhdGU8Y2xhc3MgVCwgaW50IG4+ICBzdHJ1Y3QgYmluZF90cmFpdHMgPFRbbl0+IHsKLSAgdHlwZWRlZiBjb25zdCBUICgmdHlwZSlbbl07Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBULCBpbnQgbj4gCi1zdHJ1Y3QgYmluZF90cmFpdHM8Y29uc3QgVFtuXT4gewotICB0eXBlZGVmIGNvbnN0IFQgKCZ0eXBlKVtuXTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIGludCBuPiAgc3RydWN0IGJpbmRfdHJhaXRzPHZvbGF0aWxlIFRbbl0+IHsKLSAgdHlwZWRlZiBjb25zdCB2b2xhdGlsZSBUICgmdHlwZSlbbl07Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBULCBpbnQgbj4gCi1zdHJ1Y3QgYmluZF90cmFpdHM8Y29uc3Qgdm9sYXRpbGUgVFtuXT4gewotICB0eXBlZGVmIGNvbnN0IHZvbGF0aWxlIFQgKCZ0eXBlKVtuXTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFI+Ci1zdHJ1Y3QgYmluZF90cmFpdHM8UigpPiB7Ci0gICAgdHlwZWRlZiBSKCZ0eXBlKSgpOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgQXJnMT4KLXN0cnVjdCBiaW5kX3RyYWl0czxSKEFyZzEpPiB7Ci0gICAgdHlwZWRlZiBSKCZ0eXBlKShBcmcxKTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEFyZzEsIGNsYXNzIEFyZzI+Ci1zdHJ1Y3QgYmluZF90cmFpdHM8UihBcmcxLCBBcmcyKT4gewotICAgIHR5cGVkZWYgUigmdHlwZSkoQXJnMSwgQXJnMik7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczPgotc3RydWN0IGJpbmRfdHJhaXRzPFIoQXJnMSwgQXJnMiwgQXJnMyk+IHsKLSAgICB0eXBlZGVmIFIoJnR5cGUpKEFyZzEsIEFyZzIsIEFyZzMpOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnND4KLXN0cnVjdCBiaW5kX3RyYWl0czxSKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQpPiB7Ci0gICAgdHlwZWRlZiBSKCZ0eXBlKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0KTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzU+Ci1zdHJ1Y3QgYmluZF90cmFpdHM8UihBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1KT4gewotICAgIHR5cGVkZWYgUigmdHlwZSkoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSk7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1LCBjbGFzcyBBcmc2Pgotc3RydWN0IGJpbmRfdHJhaXRzPFIoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSwgQXJnNik+IHsKLSAgICB0eXBlZGVmIFIoJnR5cGUpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYpOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNSwgY2xhc3MgQXJnNiwgY2xhc3MgQXJnNz4KLXN0cnVjdCBiaW5kX3RyYWl0czxSKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYsIEFyZzcpPiB7Ci0gICAgdHlwZWRlZiBSKCZ0eXBlKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1LCBBcmc2LCBBcmc3KTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzUsIGNsYXNzIEFyZzYsIGNsYXNzIEFyZzcsIGNsYXNzIEFyZzg+Ci1zdHJ1Y3QgYmluZF90cmFpdHM8UihBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1LCBBcmc2LCBBcmc3LCBBcmc4KT4gewotICAgIHR5cGVkZWYgUigmdHlwZSkoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSwgQXJnNiwgQXJnNywgQXJnOCk7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1LCBjbGFzcyBBcmc2LCBjbGFzcyBBcmc3LCBjbGFzcyBBcmc4LCBjbGFzcyBBcmc5Pgotc3RydWN0IGJpbmRfdHJhaXRzPFIoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSwgQXJnNiwgQXJnNywgQXJnOCwgQXJnOSk+IHsKLSAgICB0eXBlZGVmIFIoJnR5cGUpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYsIEFyZzcsIEFyZzgsIEFyZzkpOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gCi1zdHJ1Y3QgYmluZF90cmFpdHM8cmVmZXJlbmNlX3dyYXBwZXI8VD4gPnsKLSAgdHlwZWRlZiBUJiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gCi1zdHJ1Y3QgYmluZF90cmFpdHM8Y29uc3QgcmVmZXJlbmNlX3dyYXBwZXI8VD4gPnsKLSAgdHlwZWRlZiBUJiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJpbmRfdHJhaXRzPHZvaWQ+IHsKLSAgdHlwZWRlZiB2b2lkIHR5cGU7Ci19OwotCi0KLQotdGVtcGxhdGUgPAotICBjbGFzcyBUMCA9IG51bGxfdHlwZSwgY2xhc3MgVDEgPSBudWxsX3R5cGUsIGNsYXNzIFQyID0gbnVsbF90eXBlLCAKLSAgY2xhc3MgVDMgPSBudWxsX3R5cGUsIGNsYXNzIFQ0ID0gbnVsbF90eXBlLCBjbGFzcyBUNSA9IG51bGxfdHlwZSwgCi0gIGNsYXNzIFQ2ID0gbnVsbF90eXBlLCBjbGFzcyBUNyA9IG51bGxfdHlwZSwgY2xhc3MgVDggPSBudWxsX3R5cGUsIAotICBjbGFzcyBUOSA9IG51bGxfdHlwZQotPgotc3RydWN0IGJpbmRfdHVwbGVfbWFwcGVyIHsKLSAgdHlwZWRlZgotICAgIHR1cGxlPHR5cGVuYW1lIGJpbmRfdHJhaXRzPFQwPjo6dHlwZSwgCi0gICAgICAgICAgdHlwZW5hbWUgYmluZF90cmFpdHM8VDE+Ojp0eXBlLCAKLSAgICAgICAgICB0eXBlbmFtZSBiaW5kX3RyYWl0czxUMj46OnR5cGUsIAotICAgICAgICAgIHR5cGVuYW1lIGJpbmRfdHJhaXRzPFQzPjo6dHlwZSwgCi0gICAgICAgICAgdHlwZW5hbWUgYmluZF90cmFpdHM8VDQ+Ojp0eXBlLCAKLSAgICAgICAgICB0eXBlbmFtZSBiaW5kX3RyYWl0czxUNT46OnR5cGUsIAotICAgICAgICAgIHR5cGVuYW1lIGJpbmRfdHJhaXRzPFQ2Pjo6dHlwZSwgCi0gICAgICAgICAgdHlwZW5hbWUgYmluZF90cmFpdHM8VDc+Ojp0eXBlLAotICAgICAgICAgIHR5cGVuYW1lIGJpbmRfdHJhaXRzPFQ4Pjo6dHlwZSwKLSAgICAgICAgICB0eXBlbmFtZSBiaW5kX3RyYWl0czxUOT46OnR5cGU+IHR5cGU7Ci19OwotCi0vLyBiaW5kX3RyYWl0cywgZXhjZXB0IG1hcCBjb25zdCBUJiAtPiBjb25zdCBUCi0gIC8vIHRoaXMgaXMgbmVlZGVkIGUuZy4gaW4gY3VycnlpbmcuIENvbnN0IHJlZmVyZW5jZSBhcmd1bWVudHMgY2FuCi0gIC8vIHJlZmVyIHRvIHRlbXBvcmFyaWVzLCBzbyBpdCBpcyBub3Qgc2FmZSB0byBzdG9yZSB0aGVtIGFzIHJlZmVyZW5jZXMuCi0gIHRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgcmVtb3ZlX2NvbnN0X3JlZmVyZW5jZSB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiaW5kX3RyYWl0czxUPjo6dHlwZSB0eXBlOwotICB9OwotCi0gIHRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgcmVtb3ZlX2NvbnN0X3JlZmVyZW5jZTxjb25zdCBUJj4gewotICAgIHR5cGVkZWYgY29uc3QgVCB0eXBlOwotICB9OwotCi0KLS8vIG1hcHMgdGhlIGJpbmQgYXJndW1lbnQgdHlwZXMgdG8gdGhlIHJlc3VsdGluZyBsYW1iZGEgZnVuY3RvciB0eXBlCi10ZW1wbGF0ZSA8Ci0gIGNsYXNzIFQwID0gbnVsbF90eXBlLCBjbGFzcyBUMSA9IG51bGxfdHlwZSwgY2xhc3MgVDIgPSBudWxsX3R5cGUsIAotICBjbGFzcyBUMyA9IG51bGxfdHlwZSwgY2xhc3MgVDQgPSBudWxsX3R5cGUsIGNsYXNzIFQ1ID0gbnVsbF90eXBlLCAKLSAgY2xhc3MgVDYgPSBudWxsX3R5cGUsIGNsYXNzIFQ3ID0gbnVsbF90eXBlLCBjbGFzcyBUOCA9IG51bGxfdHlwZSwgCi0gIGNsYXNzIFQ5ID0gbnVsbF90eXBlCi0+Ci1jbGFzcyBiaW5kX3R5cGVfZ2VuZXJhdG9yIHsKLQotICB0eXBlZGVmIHR5cGVuYW1lCi0gIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDkKLSAgPjo6dHlwZSBhcmdzX3Q7Ci0KLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgbm9mX2VsZW1zID0gbmRuYm9vc3Q6OnR1cGxlczo6bGVuZ3RoPGFyZ3NfdD46OnZhbHVlKTsKLQotICB0eXBlZGVmIAotICAgIGFjdGlvbjwKLSAgICAgIG5vZl9lbGVtcywgCi0gICAgICBmdW5jdGlvbl9hY3Rpb248bm9mX2VsZW1zPgotICAgID4gYWN0aW9uX3R5cGU7Ci0KLXB1YmxpYzoKLSAgdHlwZWRlZgotICAgIGxhbWJkYV9mdW5jdG9yPAotICAgICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgICAgYWN0aW9uX3R5cGUsIAotICAgICAgICBhcmdzX3QKLSAgICAgID4KLSAgICA+IHR5cGU7IAotICAgIAotfTsKLQotCi0gICAKLX0gLy8gZGV0YWlsCi0gICAKLXRlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgY29uc3QgVCYgIG1ha2VfY29uc3QoY29uc3QgVCYgdCkgeyByZXR1cm4gdDsgfQotCi0KLX0gLy8gZW5kIG9mIG5hbWVzcGFjZSBsYW1iZGEKLX0gLy8gZW5kIG9mIG5hbWVzcGFjZSBuZG5ib29zdAotCi0KLSAgIAotI2VuZGlmIC8vIE5ETkJPT1NUX0xBTUJEQV9UUkFJVFNfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvbWVtYmVyX3B0ci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvbWVtYmVyX3B0ci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2YWJiNzQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL21lbWJlcl9wdHIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzM3ICswLDAgQEAKLS8vIEJvb3N0IExhbWJkYSBMaWJyYXJ5IC0tIG1lbWJlcl9wdHIuaHBwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAgSmFha2tvIEphcnZpIChqYWFra28uamFydmlAY3MudXR1LmZpKQotLy8gQ29weXJpZ2h0IChDKSAyMDAwIEdhcnkgUG93ZWxsIChnYXJ5LnBvd2VsbEBzaWVycmEuY29tKQotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHd3dy5ib29zdC5vcmcKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0xBTUJEQV9NRU1CRVJfUFRSX0hQUCkKLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX01FTUJFUl9QVFJfSFBQCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IAotbmFtZXNwYWNlIGxhbWJkYSB7Ci0KLQotY2xhc3MgbWVtYmVyX3BvaW50ZXJfYWN0aW9uIHt9OwotCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyB0aGUgYm9vc3QgdHlwZV90cmFpdHMgbWVtYmVyX3BvaW50ZXIgdHJhaXRzIGFyZSBub3QgZW5vdWdoLCAKLS8vIG5lZWQgdG8ga25vdyBtb3JlIGRldGFpbHMuCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IG1lbWJlcl9wb2ludGVyIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6YWRkX3JlZmVyZW5jZTxUPjo6dHlwZSB0eXBlOwotICB0eXBlZGVmIGRldGFpbDo6dW5zcGVjaWZpZWQgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiBkZXRhaWw6OnVuc3BlY2lmaWVkIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSBmYWxzZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVPgotc3RydWN0IG1lbWJlcl9wb2ludGVyPFQgVTo6Kj4gewotICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjphZGRfcmVmZXJlbmNlPFQ+Ojp0eXBlIHR5cGU7Ci0gIHR5cGVkZWYgVSBjbGFzc190eXBlOwotICB0eXBlZGVmIFUgcXVhbGlmaWVkX2NsYXNzX3R5cGU7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19kYXRhX21lbWJlciA9IHRydWUpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVT4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxjb25zdCBUIFU6Oio+IHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6YWRkX3JlZmVyZW5jZTxjb25zdCBUPjo6dHlwZSB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiBjb25zdCBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSB0cnVlKTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2Z1bmN0aW9uX21lbWJlciA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFU+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8dm9sYXRpbGUgVCBVOjoqPiB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmFkZF9yZWZlcmVuY2U8dm9sYXRpbGUgVD46OnR5cGUgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgdm9sYXRpbGUgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gdHJ1ZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVPgotc3RydWN0IG1lbWJlcl9wb2ludGVyPGNvbnN0IHZvbGF0aWxlIFQgVTo6Kj4gewotICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjphZGRfcmVmZXJlbmNlPGNvbnN0IHZvbGF0aWxlIFQ+Ojp0eXBlIHR5cGU7Ci0gIHR5cGVkZWYgVSBjbGFzc190eXBlOwotICB0eXBlZGVmIGNvbnN0IHZvbGF0aWxlIFUgcXVhbGlmaWVkX2NsYXNzX3R5cGU7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19kYXRhX21lbWJlciA9IHRydWUpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gZmFsc2UpOwotfTsKLQotLy8gLS0gbm9uY29uc3QgbWVtYmVyIGZ1bmN0aW9ucyAtLQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVT4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKSgpPiB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSBmYWxzZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBBMT4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSk+IHsKLSAgdHlwZWRlZiBUIHR5cGU7Ci0gIHR5cGVkZWYgVSBjbGFzc190eXBlOwotICB0eXBlZGVmIFUgcXVhbGlmaWVkX2NsYXNzX3R5cGU7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19kYXRhX21lbWJlciA9IGZhbHNlKTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2Z1bmN0aW9uX21lbWJlciA9IHRydWUpOwotfTsKLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEExLCBjbGFzcyBBMj4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSwgQTIpPiB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSBmYWxzZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzPgotc3RydWN0IG1lbWJlcl9wb2ludGVyPFQgKFU6OiopKEExLCBBMiwgQTMpPiB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSBmYWxzZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBND4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSwgQTIsIEEzLCBBNCk+IHsKLSAgdHlwZWRlZiBUIHR5cGU7Ci0gIHR5cGVkZWYgVSBjbGFzc190eXBlOwotICB0eXBlZGVmIFUgcXVhbGlmaWVkX2NsYXNzX3R5cGU7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19kYXRhX21lbWJlciA9IGZhbHNlKTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2Z1bmN0aW9uX21lbWJlciA9IHRydWUpOwotfTsKLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNT4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSwgQTIsIEEzLCBBNCwgQTUpPiB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSBmYWxzZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsCi0gICAgICAgICBjbGFzcyBBNj4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSwgQTIsIEEzLCBBNCwgQTUsIEE2KT4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LAotICAgICAgICAgY2xhc3MgQTYsIGNsYXNzIEE3Pgotc3RydWN0IG1lbWJlcl9wb2ludGVyPFQgKFU6OiopKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3KT4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LAotICAgICAgICAgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOD4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgpPiB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSBmYWxzZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsCi0gICAgICAgICBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOT4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsIEE5KT4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotLy8gLS0gY29uc3QgbWVtYmVyIGZ1bmN0aW9ucyAtLQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVT4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKSgpIGNvbnN0PiB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiBjb25zdCBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSBmYWxzZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBBMT4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSkgY29uc3Q+IHsKLSAgdHlwZWRlZiBUIHR5cGU7Ci0gIHR5cGVkZWYgVSBjbGFzc190eXBlOwotICB0eXBlZGVmIGNvbnN0IFUgcXVhbGlmaWVkX2NsYXNzX3R5cGU7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19kYXRhX21lbWJlciA9IGZhbHNlKTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2Z1bmN0aW9uX21lbWJlciA9IHRydWUpOwotfTsKLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEExLCBjbGFzcyBBMj4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSwgQTIpIGNvbnN0PiB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiBjb25zdCBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSBmYWxzZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzPgotc3RydWN0IG1lbWJlcl9wb2ludGVyPFQgKFU6OiopKEExLCBBMiwgQTMpIGNvbnN0PiB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiBjb25zdCBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSBmYWxzZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBND4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSwgQTIsIEEzLCBBNCkgY29uc3Q+IHsKLSAgdHlwZWRlZiBUIHR5cGU7Ci0gIHR5cGVkZWYgVSBjbGFzc190eXBlOwotICB0eXBlZGVmIGNvbnN0IFUgcXVhbGlmaWVkX2NsYXNzX3R5cGU7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19kYXRhX21lbWJlciA9IGZhbHNlKTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2Z1bmN0aW9uX21lbWJlciA9IHRydWUpOwotfTsKLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNT4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSwgQTIsIEEzLCBBNCwgQTUpIGNvbnN0PiB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiBjb25zdCBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSBmYWxzZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsCi0gICAgICAgICBjbGFzcyBBNj4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSwgQTIsIEEzLCBBNCwgQTUsIEE2KSBjb25zdD4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgY29uc3QgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LAotICAgICAgICAgY2xhc3MgQTYsIGNsYXNzIEE3Pgotc3RydWN0IG1lbWJlcl9wb2ludGVyPFQgKFU6OiopKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3KSBjb25zdD4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgY29uc3QgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LAotICAgICAgICAgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOD4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgpIGNvbnN0PiB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiBjb25zdCBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSBmYWxzZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsCi0gICAgICAgICBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOT4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsIEE5KSBjb25zdD4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgY29uc3QgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotICAvLyAtLSB2b2xhdGlsZSAtLQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVT4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKSgpIHZvbGF0aWxlPiB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiB2b2xhdGlsZSBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSBmYWxzZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBBMT4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSkgdm9sYXRpbGU+IHsKLSAgdHlwZWRlZiBUIHR5cGU7Ci0gIHR5cGVkZWYgVSBjbGFzc190eXBlOwotICB0eXBlZGVmIHZvbGF0aWxlIFUgcXVhbGlmaWVkX2NsYXNzX3R5cGU7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19kYXRhX21lbWJlciA9IGZhbHNlKTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2Z1bmN0aW9uX21lbWJlciA9IHRydWUpOwotfTsKLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEExLCBjbGFzcyBBMj4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSwgQTIpIHZvbGF0aWxlPiB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiB2b2xhdGlsZSBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSBmYWxzZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzPgotc3RydWN0IG1lbWJlcl9wb2ludGVyPFQgKFU6OiopKEExLCBBMiwgQTMpIHZvbGF0aWxlPiB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiB2b2xhdGlsZSBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSBmYWxzZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBND4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSwgQTIsIEEzLCBBNCkgdm9sYXRpbGU+IHsKLSAgdHlwZWRlZiBUIHR5cGU7Ci0gIHR5cGVkZWYgVSBjbGFzc190eXBlOwotICB0eXBlZGVmIHZvbGF0aWxlIFUgcXVhbGlmaWVkX2NsYXNzX3R5cGU7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19kYXRhX21lbWJlciA9IGZhbHNlKTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2Z1bmN0aW9uX21lbWJlciA9IHRydWUpOwotfTsKLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNT4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSwgQTIsIEEzLCBBNCwgQTUpIHZvbGF0aWxlPiB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiB2b2xhdGlsZSBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSBmYWxzZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsCi0gICAgICAgICBjbGFzcyBBNj4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSwgQTIsIEEzLCBBNCwgQTUsIEE2KSB2b2xhdGlsZT4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgdm9sYXRpbGUgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LAotICAgICAgICAgY2xhc3MgQTYsIGNsYXNzIEE3Pgotc3RydWN0IG1lbWJlcl9wb2ludGVyPFQgKFU6OiopKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3KSB2b2xhdGlsZT4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgdm9sYXRpbGUgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LAotICAgICAgICAgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOD4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgpIHZvbGF0aWxlPiB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiB2b2xhdGlsZSBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSBmYWxzZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsCi0gICAgICAgICBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOT4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsIEE5KSB2b2xhdGlsZT4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgdm9sYXRpbGUgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotICAvLyAtLSBjb25zdCB2b2xhdGlsZQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVT4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKSgpIGNvbnN0IHZvbGF0aWxlPiB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiBjb25zdCB2b2xhdGlsZSBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSBmYWxzZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBBMT4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSkgY29uc3Qgdm9sYXRpbGU+IHsKLSAgdHlwZWRlZiBUIHR5cGU7Ci0gIHR5cGVkZWYgVSBjbGFzc190eXBlOwotICB0eXBlZGVmIGNvbnN0IHZvbGF0aWxlIFUgcXVhbGlmaWVkX2NsYXNzX3R5cGU7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19kYXRhX21lbWJlciA9IGZhbHNlKTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2Z1bmN0aW9uX21lbWJlciA9IHRydWUpOwotfTsKLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEExLCBjbGFzcyBBMj4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSwgQTIpIGNvbnN0IHZvbGF0aWxlPiB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiBjb25zdCB2b2xhdGlsZSBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSBmYWxzZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzPgotc3RydWN0IG1lbWJlcl9wb2ludGVyPFQgKFU6OiopKEExLCBBMiwgQTMpIGNvbnN0IHZvbGF0aWxlPiB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiBjb25zdCB2b2xhdGlsZSBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSBmYWxzZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBND4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSwgQTIsIEEzLCBBNCkgY29uc3Qgdm9sYXRpbGU+IHsKLSAgdHlwZWRlZiBUIHR5cGU7Ci0gIHR5cGVkZWYgVSBjbGFzc190eXBlOwotICB0eXBlZGVmIGNvbnN0IHZvbGF0aWxlIFUgcXVhbGlmaWVkX2NsYXNzX3R5cGU7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1Pgotc3RydWN0IG1lbWJlcl9wb2ludGVyPFQgKFU6OiopKEExLCBBMiwgQTMsIEE0LCBBNSkgY29uc3Qgdm9sYXRpbGU+IHsKLSAgdHlwZWRlZiBUIHR5cGU7Ci0gIHR5cGVkZWYgVSBjbGFzc190eXBlOwotICB0eXBlZGVmIGNvbnN0IHZvbGF0aWxlIFUgcXVhbGlmaWVkX2NsYXNzX3R5cGU7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19kYXRhX21lbWJlciA9IGZhbHNlKTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2Z1bmN0aW9uX21lbWJlciA9IHRydWUpOwotfTsKLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwKLSAgICAgICAgIGNsYXNzIEE2Pgotc3RydWN0IG1lbWJlcl9wb2ludGVyPFQgKFU6OiopKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYpIGNvbnN0IHZvbGF0aWxlPiB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiBjb25zdCB2b2xhdGlsZSBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSBmYWxzZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsCi0gICAgICAgICBjbGFzcyBBNiwgY2xhc3MgQTc+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcpIGNvbnN0IHZvbGF0aWxlPiB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiBjb25zdCB2b2xhdGlsZSBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSBmYWxzZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsCi0gICAgICAgICBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4Pgotc3RydWN0IG1lbWJlcl9wb2ludGVyPFQgKFU6OiopKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCkgY29uc3Qgdm9sYXRpbGU+IHsKLSAgdHlwZWRlZiBUIHR5cGU7Ci0gIHR5cGVkZWYgVSBjbGFzc190eXBlOwotICB0eXBlZGVmIGNvbnN0IHZvbGF0aWxlIFUgcXVhbGlmaWVkX2NsYXNzX3R5cGU7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19kYXRhX21lbWJlciA9IGZhbHNlKTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2Z1bmN0aW9uX21lbWJlciA9IHRydWUpOwotfTsKLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwKLSAgICAgICAgIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTgsIGNsYXNzIEE5Pgotc3RydWN0IG1lbWJlcl9wb2ludGVyPFQgKFU6OiopKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgQTkpIGNvbnN0IHZvbGF0aWxlPiB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiBjb25zdCB2b2xhdGlsZSBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSBmYWxzZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSB0cnVlKTsKLX07Ci0KLX0gLy8gZGV0YWlsCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0gIC8vIHRoaXMgY2xhc3MgaG9sZHMgYSBwb2ludGVyIHRvIGEgbWVtYmVyIGZ1bmN0aW9uIGFuZCB0aGUgb2JqZWN0LgotICAvLyB3aGVuIGNhbGxlZCwgaXQganVzdCBjYWxscyB0aGUgbWVtYmVyIGZ1bmN0aW9uIHdpdGggdGhlIHBhcmFtZXRlcnMgCi0gIC8vIHByb3ZpZGVkCi0KLSAgLy8gSXQgd291bGQgaGF2ZSBiZWVuIHBvc3NpYmxlIHRvIHVzZSBleGlzdGluZyBsYW1iZGFfZnVuY3RvcnMgdG8gcmVwcmVzZW50Ci0gIC8vIGEgYm91bmQgbWVtYmVyIGZ1bmN0aW9uIGxpa2UgdGhpcywgYnV0IHRvIGhhdmUgYSBzZXBhcmF0ZSB0ZW1wbGF0ZSBpcyAKLSAgLy8gc2FmZXIsIHNpbmNlIG5vdyB0aGlzIGZ1bmN0b3IgZG9lc24ndCBtaXggYW5kIG1hdGNoIHdpdGggbGFtYmRhX2Z1bmN0b3JzCi0gIC8vIG9ubHkgdGhpbmcgeW91IGNhbiBkbyB3aXRoIHRoaXMgaXMgdG8gY2FsbCBpdAotCi0gIC8vIG5vdGUgdGhhdCBwcmV2aW91c2x5IGluc3RhbnRpYXRlZCBjbGFzc2VzIAotICAvLyAob3RoZXJfYWN0aW9uPG1lbWJlcl9wb2ludGVyX2FjdGlvbj4gYW5kIG1lbWJlcl9wb2ludGVyX2FjdGlvbl9oZWxwZXIKLSAgLy8gZ3VhcmFudGVlLCB0aGF0IEEgYW5kIEIgYXJlIAotICAvLyBzdWNoIHR5cGVzLCB0aGF0IGZvciBvYmplY3RzIGEgYW5kIGIgb2YgY29ycmVzcG9uZGluZyB0eXBlcywgYS0+KmIgbGVhZHMgCi0gIC8vIHRvIHRoZSBidWlsdGluIC0+KiB0byBiZSBjYWxsZWQuIFNvIHR5cGVzIHRoYXQgd291bGQgZW5kIGluIGEgIGNhbGwgdG8gCi0gIC8vIGEgdXNlciBkZWZpbmVkIC0+KiBkbyBub3QgY3JlYXRlIGEgbWVtYmVyX3BvaW50ZXJfY2FsbGVyIG9iamVjdC4KLQotdGVtcGxhdGU8Y2xhc3MgUkVULCBjbGFzcyBBLCBjbGFzcyBCPgotY2xhc3MgbWVtYmVyX3BvaW50ZXJfY2FsbGVyIHsKLSAgQSBhOyBCIGI7Ci0KLXB1YmxpYzoKLSAgbWVtYmVyX3BvaW50ZXJfY2FsbGVyKGNvbnN0IEEmIGFhLCBjb25zdCBCJiBiYikgOiBhKGFhKSwgYihiYikge30KLQotICBSRVQgb3BlcmF0b3IoKSgpIGNvbnN0IHsgcmV0dXJuIChhLT4qYikoKTsgfSAKLQotICB0ZW1wbGF0ZTxjbGFzcyBBMT4KLSAgUkVUIG9wZXJhdG9yKCkoY29uc3QgQTEmIGExKSBjb25zdCB7IHJldHVybiAoYS0+KmIpKGExKTsgfSAKLQotICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTI+Ci0gIFJFVCBvcGVyYXRvcigpKGNvbnN0IEExJiBhMSwgY29uc3QgQTImIGEyKSBjb25zdCB7IHJldHVybiAoYS0+KmIpKGExLCBhMik7IH0gCi0KLSAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMz4KLSAgUkVUIG9wZXJhdG9yKCkoY29uc3QgQTEmIGExLCBjb25zdCBBMiYgYTIsIGNvbnN0IEEzJiBhMykgY29uc3QgeyAKLSAgICByZXR1cm4gKGEtPipiKShhMSwgYTIsIGEzKTsgCi0gIH0gCi0KLSAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQ+Ci0gIFJFVCBvcGVyYXRvcigpKGNvbnN0IEExJiBhMSwgY29uc3QgQTImIGEyLCBjb25zdCBBMyYgYTMsIAotICAgICAgICAgICAgICAgICBjb25zdCBBNCYgYTQpIGNvbnN0IHsgCi0gICAgcmV0dXJuIChhLT4qYikoYTEsIGEyLCBhMywgYTQpOyAKLSAgfSAKLQotICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+Ci0gIFJFVCBvcGVyYXRvcigpKGNvbnN0IEExJiBhMSwgY29uc3QgQTImIGEyLCBjb25zdCBBMyYgYTMsIGNvbnN0IEE0JiBhNCwgCi0gICAgICAgICAgICAgICAgIGNvbnN0IEE1JiBhNSkgY29uc3QgeyAKLSAgICByZXR1cm4gKGEtPipiKShhMSwgYTIsIGEzLCBhNCwgYTUpOyAKLSAgfSAKLQotICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2PgotICBSRVQgb3BlcmF0b3IoKShjb25zdCBBMSYgYTEsIGNvbnN0IEEyJiBhMiwgY29uc3QgQTMmIGEzLCBjb25zdCBBNCYgYTQsIAotICAgICAgICAgICAgICAgICBjb25zdCBBNSYgYTUsIGNvbnN0IEE2JiBhNikgY29uc3QgeyAKLSAgICByZXR1cm4gKGEtPipiKShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KTsgCi0gIH0gCi0KLSAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgCi0gICAgICAgICAgIGNsYXNzIEE3PgotICBSRVQgb3BlcmF0b3IoKShjb25zdCBBMSYgYTEsIGNvbnN0IEEyJiBhMiwgY29uc3QgQTMmIGEzLCBjb25zdCBBNCYgYTQsIAotICAgICAgICAgICAgICAgICBjb25zdCBBNSYgYTUsIGNvbnN0IEE2JiBhNiwgY29uc3QgQTcmIGE3KSBjb25zdCB7IAotICAgIHJldHVybiAoYS0+KmIpKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KTsgCi0gIH0gCi0KLSAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgCi0gICAgICAgICAgIGNsYXNzIEE3LCBjbGFzcyBBOD4KLSAgUkVUIG9wZXJhdG9yKCkoY29uc3QgQTEmIGExLCBjb25zdCBBMiYgYTIsIGNvbnN0IEEzJiBhMywgY29uc3QgQTQmIGE0LCAKLSAgICAgICAgICAgICAgICAgY29uc3QgQTUmIGE1LCBjb25zdCBBNiYgYTYsIGNvbnN0IEE3JiBhNywKLSAgICAgICAgICAgICAgICAgY29uc3QgQTgmIGE4KSBjb25zdCB7IAotICAgIHJldHVybiAoYS0+KmIpKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCk7IAotICB9IAotCi0gIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIAotICAgICAgICAgICBjbGFzcyBBNywgY2xhc3MgQTgsIGNsYXNzIEE5PgotICBSRVQgb3BlcmF0b3IoKShjb25zdCBBMSYgYTEsIGNvbnN0IEEyJiBhMiwgY29uc3QgQTMmIGEzLCBjb25zdCBBNCYgYTQsIAotICAgICAgICAgICAgICAgICBjb25zdCBBNSYgYTUsIGNvbnN0IEE2JiBhNiwgY29uc3QgQTcmIGE3LAotICAgICAgICAgICAgICAgICBjb25zdCBBOCYgYTgsIGNvbnN0IEE5JiBhOSkgY29uc3QgeyAKLSAgICByZXR1cm4gKGEtPipiKShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5KTsgCi0gIH0gCi0KLX07Ci0KLS8vIGhlbHBlciB0ZW1wbGF0ZXMgZm9yIHJldHVybiB0eXBlIGRlZHVjdGlvbiBhbmQgYWN0aW9uIGNsYXNzZXMKLS8vIGRpZmZlcmVudCBjYXNlcyBmb3IgZGF0YSBtZW1iZXIsIGZ1bmN0aW9uIG1lbWJlciwgbmVpdGhlcgotCi0vLyB0cnVlLXRydWUgY2FzZQotdGVtcGxhdGUgPGJvb2wgSXNfZGF0YV9tZW1iZXIsIGJvb2wgSXNfZnVuY3Rpb25fbWVtYmVyPgotc3RydWN0IG1lbWJlcl9wb2ludGVyX2FjdGlvbl9oZWxwZXI7Ci0gIC8vIGNhbm5vdCBiZSBib3RoLCBubyBib2R5IHByb3ZpZGVkCi0KLSAgLy8gZGF0YSBtZW1iZXIgY2FzZQotICAvLyB0aGlzIG1lYW5zLCB0aGF0IEIgaXMgYSBkYXRhIG1lbWJlciBhbmQgQSBpcyBhIHBvaW50ZXIgdHlwZSwKLSAgLy8gc28gZWl0aGVyIGJ1aWx0LWluIC0+KiBzaG91bGQgYmUgY2FsbGVkLCBvciB0aGVyZSBpcyBhbiBlcnJvcgotdGVtcGxhdGUgPD4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcl9hY3Rpb25faGVscGVyPHRydWUsIGZhbHNlPiB7Ci1wdWJsaWM6Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBjbGFzcyBBLCBjbGFzcyBCPgotICBzdGF0aWMgUkVUIGFwcGx5KEEmIGEsIEImIGIpIHsgCi0gICAgcmV0dXJuIGEtPipiOyAKLSAgfQotCi0gIHRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEI+Ci0gIHN0cnVjdCByZXR1cm5fdHlwZSB7Ci0gIHByaXZhdGU6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnJlbW92ZV9yZWZlcmVuY2VfYW5kX2N2PEI+Ojp0eXBlIHBsYWluQjsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjptZW1iZXJfcG9pbnRlcjxwbGFpbkI+Ojp0eXBlIHR5cGUwOwotICAgIC8vIHdlIHJlbW92ZSB0aGUgcmVmZXJlbmNlIG5vdywgYXMgd2UgbWF5IGhhdmUgdG8gYWRkIGN2OnMgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTx0eXBlMD46OnR5cGUgdHlwZTE7Ci0KLSAgICAvLyBBIGlzIGEgcmVmZXJlbmNlIHRvIHBvaW50ZXIKLSAgICAvLyByZW1vdmUgdGhlIHRvcCBsZXZlbCBjdiBxdWFsaWZpZXJzIGFuZCByZWZlcmVuY2UKLSAgICB0eXBlZGVmIHR5cGVuYW1lIAotICAgICAgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxBPjo6dHlwZSBub25fcmVmX0E7Ci0KLSAgICAvLyBBIGlzIGEgcG9pbnRlciB0eXBlLCBzbyB0YWtlIHRoZSB0eXBlIHBvaW50ZWQgdG8KLSAgICB0eXBlZGVmIHR5cGVuYW1lIDo6bmRuYm9vc3Q6OnJlbW92ZV9wb2ludGVyPG5vbl9yZWZfQT46OnR5cGUgbm9uX3BvaW50ZXJfQTsgCi0KLSAgcHVibGljOgotICAgIC8vIEZvciBub24tcmVmZXJlbmNlIHR5cGVzLCB3ZSBtdXN0IGFkZCBjb25zdCBhbmQvb3Igdm9sYXRpbGUgaWYKLSAgICAvLyB0aGUgcG9pbnRlciB0eXBlIGhhcyB0aGVzZSBxdWFsaWZpZXJzCi0gICAgLy8gSWYgdGhlIG1lbWJlciBpcyBhIHJlZmVyZW5jZSwgdGhlc2UgZG8gbm90IGhhdmUgYW55IGVmZmVjdAotICAgIC8vICAgKGN2IFQgPT0gVCBpZiBUIGlzIGEgcmVmZXJlbmNlIHR5cGUpCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OklGPAotICAgICAgOjpuZG5ib29zdDo6aXNfY29uc3Q8bm9uX3BvaW50ZXJfQT46OnZhbHVlLCAKLSAgICAgIHR5cGVuYW1lIDo6bmRuYm9vc3Q6OmFkZF9jb25zdDx0eXBlMT46OnR5cGUsCi0gICAgICB0eXBlMQotICAgID46OlJFVCB0eXBlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6SUY8Ci0gICAgICA6Om5kbmJvb3N0Ojppc192b2xhdGlsZTxub25fcG9pbnRlcl9BPjo6dmFsdWUsIAotICAgICAgdHlwZW5hbWUgOjpuZG5ib29zdDo6YWRkX3ZvbGF0aWxlPHR5cGUyPjo6dHlwZSwKLSAgICAgIHR5cGUyCi0gICAgPjo6UkVUIHR5cGUzOwotICAgIC8vIGFkZCByZWZlcmVuY2UgYmFjawotICAgIHR5cGVkZWYgdHlwZW5hbWUgOjpuZG5ib29zdDo6YWRkX3JlZmVyZW5jZTx0eXBlMz46OnR5cGUgdHlwZTsKLSAgfTsKLX07Ci0KLSAgLy8gbmVpdGhlciBjYXNlCi10ZW1wbGF0ZSA8Pgotc3RydWN0IG1lbWJlcl9wb2ludGVyX2FjdGlvbl9oZWxwZXI8ZmFsc2UsIGZhbHNlPiB7Ci1wdWJsaWM6Ci0gIHRlbXBsYXRlPGNsYXNzIFJFVCwgY2xhc3MgQSwgY2xhc3MgQj4KLSAgc3RhdGljIFJFVCBhcHBseShBJiBhLCBCJiBiKSB7IAotLy8gbm90IGEgYnVpbHQgaW4gbWVtYmVyIHBvaW50ZXIgb3BlcmF0b3IsIGp1c3QgY2FsbCAtPioKLSAgICByZXR1cm4gYS0+KmI7IAotICB9Ci0gIC8vIGFuIG92ZXJsb2FkZWQgbWVtYmVyIHBvaW50ZXIgb3BlcmF0b3JzLCB1c2VyIHNob3VsZCBoYXZlIHNwZWNpZmllZAotICAvLyB0aGUgcmV0dXJuIHR5cGUKLSAgLy8gQXQgdGhpcyBwb2ludCB3ZSBrbm93IHRoYXQgdGhlcmUgaXMgbm8gbWF0Y2hpbmcgc3BlY2lhbGl6YXRpb24gZm9yCi0gIC8vIHJldHVybl90eXBlXzIsIHNvIHRyeSByZXR1cm5fdHlwZV8yX3BsYWluCi0gIHRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEI+Ci0gIHN0cnVjdCByZXR1cm5fdHlwZSB7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIHBsYWluX3JldHVybl90eXBlXzI8Ci0gICAgICBvdGhlcl9hY3Rpb248bWVtYmVyX3BvaW50ZXJfYWN0aW9uPiwgQSwgQgotICAgID46OnR5cGUgdHlwZTsKLSAgfTsKLSAgCi19OwotCi0KLS8vIG1lbWJlciBwb2ludGVyIGZ1bmN0aW9uIGNhc2UKLS8vIFRoaXMgaXMgYSBidWlsdCBpbiAtPiogY2FsbCBmb3IgYSBtZW1iZXIgZnVuY3Rpb24sIAotLy8gdGhlIG9ubHkgdGhpbmcgdGhhdCB5b3UgY2FuIGRvIHdpdGggdGhhdCwgaXMgdG8gZ2l2ZSBpdCBzb21lIGFyZ3VtZW50cwotLy8gbm90ZSwgaXQgaXMgZ3VhcmFudGVlZCB0aGF0IEEgaXMgYSBwb2ludGVyIHR5cGUsIGFuZCB0aHVzIGl0IGNhbm5vdAotLy8gYmUgYSBjYWxsIHRvIG92ZXJsb2FkZWQgLT4qCi10ZW1wbGF0ZSA8Pgotc3RydWN0IG1lbWJlcl9wb2ludGVyX2FjdGlvbl9oZWxwZXI8ZmFsc2UsIHRydWU+IHsKLSAgcHVibGljOgotCi0gIHRlbXBsYXRlPGNsYXNzIFJFVCwgY2xhc3MgQSwgY2xhc3MgQj4KLSAgc3RhdGljIFJFVCBhcHBseShBJiBhLCBCJiBiKSB7IAotICAgIHR5cGVkZWYgdHlwZW5hbWUgOjpuZG5ib29zdDo6cmVtb3ZlX2N2PEI+Ojp0eXBlIHBsYWluQjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6bWVtYmVyX3BvaW50ZXI8cGxhaW5CPjo6dHlwZSByZXRfdDsgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSA6Om5kbmJvb3N0OjpyZW1vdmVfY3Y8QT46OnR5cGUgcGxhaW5BOwotCi0gICAgLy8gd2UgYWx3YXlzIHN0cmlwIGN2OnMgdG8gCi0gICAgLy8gbWFrZSB0aGUgdHdvIHJvdXRlcyAoY2FsbGluZyBhbmQgdHlwZSBkZWR1Y3Rpb24pCi0gICAgLy8gdG8gZ2l2ZSB0aGUgc2FtZSByZXN1bHRzIChhbmQgdGhlIGNvbnN0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwKLSAgICAvLyBkaWZmZXJlbmNlKQotICAgIHJldHVybiBkZXRhaWw6Om1lbWJlcl9wb2ludGVyX2NhbGxlcjxyZXRfdCwgcGxhaW5BLCBwbGFpbkI+KGEsIGIpOyAKLSAgfQotCi0gIHRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEI+Ci0gIHN0cnVjdCByZXR1cm5fdHlwZSB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnJlbW92ZV9yZWZlcmVuY2VfYW5kX2N2PEI+Ojp0eXBlIHBsYWluQjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6bWVtYmVyX3BvaW50ZXI8cGxhaW5CPjo6dHlwZSByZXRfdDsgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnJlbW92ZV9yZWZlcmVuY2VfYW5kX2N2PEE+Ojp0eXBlIHBsYWluQTsgCi0KLSAgICB0eXBlZGVmIGRldGFpbDo6bWVtYmVyX3BvaW50ZXJfY2FsbGVyPHJldF90LCBwbGFpbkEsIHBsYWluQj4gdHlwZTsgCi0gIH07Ci19OwotCi19IC8vIGRldGFpbAotCi10ZW1wbGF0ZTw+IGNsYXNzIG90aGVyX2FjdGlvbjxtZW1iZXJfcG9pbnRlcl9hY3Rpb24+ICB7Ci1wdWJsaWM6Ci0gIHRlbXBsYXRlPGNsYXNzIFJFVCwgY2xhc3MgQSwgY2xhc3MgQj4KLSAgc3RhdGljIFJFVCBhcHBseShBJiBhLCBCJiBiKSB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICAgIDo6bmRuYm9vc3Q6OnJlbW92ZV9jdjxCPjo6dHlwZSBwbGFpbkI7Ci0KLSAgICByZXR1cm4gZGV0YWlsOjptZW1iZXJfcG9pbnRlcl9hY3Rpb25faGVscGVyPAotICAgICAgICBuZG5ib29zdDo6aXNfcG9pbnRlcjxBPjo6dmFsdWUgJiYgCi0gICAgICAgICAgZGV0YWlsOjptZW1iZXJfcG9pbnRlcjxwbGFpbkI+Ojppc19kYXRhX21lbWJlciwKLSAgICAgICAgbmRuYm9vc3Q6OmlzX3BvaW50ZXI8QT46OnZhbHVlICYmIAotICAgICAgICAgIGRldGFpbDo6bWVtYmVyX3BvaW50ZXI8cGxhaW5CPjo6aXNfZnVuY3Rpb25fbWVtYmVyCi0gICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTxSRVQ+KGEsIGIpOyAKLSAgICB9Ci19OwotCi0gIC8vIHJldHVybiB0eXBlIGRlZHVjdGlvbiAtLQotCi0gIC8vIElmIHRoZSByaWdodCBhcmd1bWVudCBpcyBhIHBvaW50ZXIgdG8gZGF0YSBtZW1iZXIsIAotICAvLyBhbmQgdGhlIGxlZnQgYXJndW1lbnQgaXMgb2YgY29tcGF0aWJsZSBwb2ludGVyIHRvIGNsYXNzIHR5cGUKLSAgLy8gcmV0dXJuIHR5cGUgaXMgYSByZWZlcmVuY2UgdG8gdGhlIGRhdGEgbWVtYmVyIHR5cGUKLQotICAvLyBpZiByaWdodCBhcmd1bWVudCBpcyBhIHBvaW50ZXIgdG8gYSBtZW1iZXIgZnVuY3Rpb24sIGFuZCB0aGUgbGVmdCAKLSAgLy8gYXJndW1lbnQgaXMgb2YgYSBjb21wYXRpYmxlIHR5cGUsIHRoZSByZXR1cm4gdHlwZSBpcyBhIAotICAvLyBtZW1iZXJfcG9pbnRlcl9jYWxsZXIgKHNlZSBhYm92ZSkKLQotICAvLyBPdGhlcndpc2UsIHJldHVybiB0eXBlIGRlZHVjdGlvbiBmYWlscy4gVGhlcmUgaXMgZWl0aGVyIGFuIGVycm9yLCAKLSAgLy8gb3IgdGhlIHVzZXIgaXMgdHJ5aW5nIHRvIGNhbGwgYW4gb3ZlcmxvYWRlZCAtPioKLSAgLy8gSW4gc3VjaCBhIGNhc2UgZWl0aGVyIHJldDw+IG11c3QgYmUgdXNlZCwgb3IgYSByZXR1cm5fdHlwZV8yIHVzZXIgCi0gIC8vIGRlZmluZWQgc3BlY2lhbGl6YXRpb24gbXVzdCBiZSBwcm92aWRlZAotCi0KLXRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEI+Ci1zdHJ1Y3QgcmV0dXJuX3R5cGVfMjxvdGhlcl9hY3Rpb248bWVtYmVyX3BvaW50ZXJfYWN0aW9uPiwgQSwgQj4gewotcHJpdmF0ZToKLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICBkZXRhaWw6OnJlbW92ZV9yZWZlcmVuY2VfYW5kX2N2PEI+Ojp0eXBlIHBsYWluQjsKLXB1YmxpYzoKLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICBkZXRhaWw6Om1lbWJlcl9wb2ludGVyX2FjdGlvbl9oZWxwZXI8Ci0gICAgICBkZXRhaWw6Om1lbWJlcl9wb2ludGVyPHBsYWluQj46OmlzX2RhdGFfbWVtYmVyLAotICAgICAgZGV0YWlsOjptZW1iZXJfcG9pbnRlcjxwbGFpbkI+Ojppc19mdW5jdGlvbl9tZW1iZXIKLSAgICA+Ojp0ZW1wbGF0ZSByZXR1cm5fdHlwZTxBLCBCPjo6dHlwZSB0eXBlOyAKLX07Ci0KLSAgLy8gdGhpcyBpcyB0aGUgd2F5IHRoZSBnZW5lcmljIGxhbWJkYV9mdW5jdG9yX2Jhc2UgZnVuY3Rpb25zIGluc3RhbnRpYXRlCi0gIC8vIHJldHVybiB0eXBlIGRlZHVjdGlvbi4gV2UgdHVybiBpdCBpbnRvIHJldHVybl90eXBlXzIsIHNvIHRoYXQgdGhlIAotICAvLyB1c2VyIGNhbiBwcm92aWRlIHNwZWNpYWxpemF0aW9ucyBvbiB0aGF0IGxldmVsLgotdGVtcGxhdGU8Y2xhc3MgQXJncz4KLXN0cnVjdCByZXR1cm5fdHlwZV9OPG90aGVyX2FjdGlvbjxtZW1iZXJfcG9pbnRlcl9hY3Rpb24+LCBBcmdzPiB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnR1cGxlczo6ZWxlbWVudDwwLCBBcmdzPjo6dHlwZSBBOwotICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojp0dXBsZXM6OmVsZW1lbnQ8MSwgQXJncz46OnR5cGUgQjsKLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICByZXR1cm5fdHlwZV8yPG90aGVyX2FjdGlvbjxtZW1iZXJfcG9pbnRlcl9hY3Rpb24+LCAKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfcmVmZXJlbmNlPEE+Ojp0eXBlLCAKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfcmVmZXJlbmNlPEI+Ojp0eXBlCi0gICAgICAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLQotdGVtcGxhdGU8Y2xhc3MgQXJnMSwgY2xhc3MgQXJnMj4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDIsIG90aGVyX2FjdGlvbjxtZW1iZXJfcG9pbnRlcl9hY3Rpb24+ID4sCi0gICAgdHVwbGU8bGFtYmRhX2Z1bmN0b3I8QXJnMT4sIHR5cGVuYW1lIGNvbnN0X2NvcHlfYXJndW1lbnQ8QXJnMj46OnR5cGU+Ci0gID4KLT4KLW9wZXJhdG9yLT4qKGNvbnN0IGxhbWJkYV9mdW5jdG9yPEFyZzE+JiBhMSwgY29uc3QgQXJnMiYgYTIpCi17Ci0gIHJldHVybiAKLSAgICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICAgIGFjdGlvbjwyLCBvdGhlcl9hY3Rpb248bWVtYmVyX3BvaW50ZXJfYWN0aW9uPiA+LAotICAgICAgICB0dXBsZTxsYW1iZGFfZnVuY3RvcjxBcmcxPiwgdHlwZW5hbWUgY29uc3RfY29weV9hcmd1bWVudDxBcmcyPjo6dHlwZT4KLSAgICAgID4KLSAgICAgICh0dXBsZTxsYW1iZGFfZnVuY3RvcjxBcmcxPiwgCi0gICAgICAgICAgICAgdHlwZW5hbWUgY29uc3RfY29weV9hcmd1bWVudDxBcmcyPjo6dHlwZT4oYTEsIGEyKSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIEFyZzEsIGNsYXNzIEFyZzI+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjwyLCBvdGhlcl9hY3Rpb248bWVtYmVyX3BvaW50ZXJfYWN0aW9uPiA+LAotICAgIHR1cGxlPGxhbWJkYV9mdW5jdG9yPEFyZzE+LCBsYW1iZGFfZnVuY3RvcjxBcmcyPiA+Ci0gID4KLT4KLW9wZXJhdG9yLT4qKGNvbnN0IGxhbWJkYV9mdW5jdG9yPEFyZzE+JiBhMSwgY29uc3QgbGFtYmRhX2Z1bmN0b3I8QXJnMj4mIGEyKQotewotICByZXR1cm4gCi0gICAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgICBhY3Rpb248Miwgb3RoZXJfYWN0aW9uPG1lbWJlcl9wb2ludGVyX2FjdGlvbj4gPiwKLSAgICAgICAgdHVwbGU8bGFtYmRhX2Z1bmN0b3I8QXJnMT4sIGxhbWJkYV9mdW5jdG9yPEFyZzI+ID4KLSAgICAgID4KLSAgICAodHVwbGU8bGFtYmRhX2Z1bmN0b3I8QXJnMT4sIGxhbWJkYV9mdW5jdG9yPEFyZzI+ID4oYTEsIGEyKSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIEFyZzEsIGNsYXNzIEFyZzI+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjwyLCBvdGhlcl9hY3Rpb248bWVtYmVyX3BvaW50ZXJfYWN0aW9uPiA+LAotICAgIHR1cGxlPHR5cGVuYW1lIGNvbnN0X2NvcHlfYXJndW1lbnQ8QXJnMT46OnR5cGUsIGxhbWJkYV9mdW5jdG9yPEFyZzI+ID4KLSAgPgotPgotb3BlcmF0b3ItPiooY29uc3QgQXJnMSYgYTEsIGNvbnN0IGxhbWJkYV9mdW5jdG9yPEFyZzI+JiBhMikKLXsKLSAgcmV0dXJuIAotICAgICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgICAgYWN0aW9uPDIsIG90aGVyX2FjdGlvbjxtZW1iZXJfcG9pbnRlcl9hY3Rpb24+ID4sCi0gICAgICAgIHR1cGxlPHR5cGVuYW1lIGNvbnN0X2NvcHlfYXJndW1lbnQ8QXJnMT46OnR5cGUsIGxhbWJkYV9mdW5jdG9yPEFyZzI+ID4KLSAgICAgID4KLSAgICAgICh0dXBsZTx0eXBlbmFtZSBjb25zdF9jb3B5X2FyZ3VtZW50PEFyZzE+Ojp0eXBlLCAKLSAgICAgICAgICAgICBsYW1iZGFfZnVuY3RvcjxBcmcyPiA+KGExLCBhMikpOwotfQotCi0KLX0gLy8gbmFtZXNwYWNlIGxhbWJkYSAKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLQotI2VuZGlmCi0KLQotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvb3BlcmF0b3JfYWN0aW9ucy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvb3BlcmF0b3JfYWN0aW9ucy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkMDVmOWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL29wZXJhdG9yX2FjdGlvbnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTM5ICswLDAgQEAKLS8vIC0tIG9wZXJhdG9yX2FjdGlvbnMuaHBwIC0gQm9vc3QgTGFtYmRhIExpYnJhcnkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAgSmFha2tvIEphcnZpIChqYWFra28uamFydmlAY3MudXR1LmZpKQotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vbGFtYmRhLmNzLnV0dS5maSAKLQotI2lmbmRlZiBORE5CT09TVF9MQU1CREFfT1BFUkFUT1JfQUNUSU9OU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX09QRVJBVE9SX0FDVElPTlNfSFBQCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IAotbmFtZXNwYWNlIGxhbWJkYSB7Ci0KLQotLy8gLS0gYXJ0aWhtZXRpYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWNsYXNzIHBsdXNfYWN0aW9uIHt9OwotY2xhc3MgbWludXNfYWN0aW9uIHt9OwotY2xhc3MgbXVsdGlwbHlfYWN0aW9uIHt9OwotY2xhc3MgZGl2aWRlX2FjdGlvbiB7fTsKLWNsYXNzIHJlbWFpbmRlcl9hY3Rpb24ge307Ci0KLS8vIC0tIGJpdHdpc2UgIC0tLS0tLS0tLS0tLS0tLS0tLS0KLQotY2xhc3MgbGVmdHNoaWZ0X2FjdGlvbiB7fTsKLWNsYXNzIHJpZ2h0c2hpZnRfYWN0aW9uIHt9OwotY2xhc3MgeG9yX2FjdGlvbiB7fTsKLQotCi0vLyAtLSBiaXR3aXNlL2xvZ2ljYWwgLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1jbGFzcyBhbmRfYWN0aW9uIHt9OwotY2xhc3Mgb3JfYWN0aW9uIHt9OwotY2xhc3Mgbm90X2FjdGlvbiB7fTsKLQotLy8gLS0gcmVsYXRpb25hbCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWNsYXNzIGxlc3NfYWN0aW9uIHt9OwotY2xhc3MgZ3JlYXRlcl9hY3Rpb24ge307Ci1jbGFzcyBsZXNzb3JlcXVhbF9hY3Rpb24ge307Ci1jbGFzcyBncmVhdGVyb3JlcXVhbF9hY3Rpb24ge307Ci1jbGFzcyBlcXVhbF9hY3Rpb24ge307Ci1jbGFzcyBub3RlcXVhbF9hY3Rpb24ge307Ci0KLS8vIC0tIGluY3JlbWVudC9kZWNyZW1lbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWNsYXNzIGluY3JlbWVudF9hY3Rpb24ge307Ci1jbGFzcyBkZWNyZW1lbnRfYWN0aW9uIHt9OwotCi0vLyAtLSB2b2lkIHJldHVybiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gLS0gb3RoZXIgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1jbGFzcyBhZGRyZXNzb2ZfYWN0aW9uIHt9OwotICAvLyBjbGFzcyBjb21tYV9hY3Rpb24ge307IC8vIGRlZmluZWQgaW4gYWN0aW9ucy5ocHAKLWNsYXNzIGNvbnRlbnRzb2ZfYWN0aW9uIHt9OwotLy8gY2xhc3MgbWVtYmVyX3BvaW50ZXJfYWN0aW9uIHt9OyAoZGVmaW5lZCBpbiBtZW1iZXJfcHRyLmhwcCkKLQotCi0vLyAtLSBhY3Rpb3VuIGdyb3VwIHRlbXBsYXRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLQotCi10ZW1wbGF0ZSA8Y2xhc3MgQWN0aW9uPiBjbGFzcyBhcml0aG1ldGljX2FjdGlvbjsKLXRlbXBsYXRlIDxjbGFzcyBBY3Rpb24+IGNsYXNzIGJpdHdpc2VfYWN0aW9uOwotdGVtcGxhdGUgPGNsYXNzIEFjdGlvbj4gY2xhc3MgbG9naWNhbF9hY3Rpb247Ci10ZW1wbGF0ZSA8Y2xhc3MgQWN0aW9uPiBjbGFzcyByZWxhdGlvbmFsX2FjdGlvbjsKLXRlbXBsYXRlIDxjbGFzcyBBY3Rpb24+IGNsYXNzIGFyaXRobWV0aWNfYXNzaWdubWVudF9hY3Rpb247Ci10ZW1wbGF0ZSA8Y2xhc3MgQWN0aW9uPiBjbGFzcyBiaXR3aXNlX2Fzc2lnbm1lbnRfYWN0aW9uOwotdGVtcGxhdGUgPGNsYXNzIEFjdGlvbj4gY2xhc3MgdW5hcnlfYXJpdGhtZXRpY19hY3Rpb247Ci10ZW1wbGF0ZSA8Y2xhc3MgQWN0aW9uPiBjbGFzcyBwcmVfaW5jcmVtZW50X2RlY3JlbWVudF9hY3Rpb247Ci10ZW1wbGF0ZSA8Y2xhc3MgQWN0aW9uPiBjbGFzcyBwb3N0X2luY3JlbWVudF9kZWNyZW1lbnRfYWN0aW9uOwotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAvLyBhY3Rpb25zLCBmb3Igd2hpY2ggdGhlIGV4aXN0ZW5jZSBvZiBwcm90ZWN0IGlzIGNoZWNrZWQgaW4gcmV0dXJuIHR5cGUgCi0gIC8vIGRlZHVjdGlvbi4KLQotdGVtcGxhdGUgPGNsYXNzIEFjdD4gc3RydWN0IGlzX3Byb3RlY3RhYmxlPGFyaXRobWV0aWNfYWN0aW9uPEFjdD4gPiB7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOwotfTsKLXRlbXBsYXRlIDxjbGFzcyBBY3Q+IHN0cnVjdCBpc19wcm90ZWN0YWJsZTxiaXR3aXNlX2FjdGlvbjxBY3Q+ID4gewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZSA8Y2xhc3MgQWN0PiBzdHJ1Y3QgaXNfcHJvdGVjdGFibGU8bG9naWNhbF9hY3Rpb248QWN0PiA+IHsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGUgPGNsYXNzIEFjdD4gc3RydWN0IGlzX3Byb3RlY3RhYmxlPHJlbGF0aW9uYWxfYWN0aW9uPEFjdD4gPiB7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOwotfTsKLXRlbXBsYXRlIDxjbGFzcyBBY3Q+IAotc3RydWN0IGlzX3Byb3RlY3RhYmxlPGFyaXRobWV0aWNfYXNzaWdubWVudF9hY3Rpb248QWN0PiA+IHsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGUgPGNsYXNzIEFjdD4gc3RydWN0IGlzX3Byb3RlY3RhYmxlPGJpdHdpc2VfYXNzaWdubWVudF9hY3Rpb248QWN0PiA+IHsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGUgPGNsYXNzIEFjdD4gc3RydWN0IGlzX3Byb3RlY3RhYmxlPHVuYXJ5X2FyaXRobWV0aWNfYWN0aW9uPEFjdD4gPiB7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOwotfTsKLXRlbXBsYXRlIDxjbGFzcyBBY3Q+IAotc3RydWN0IGlzX3Byb3RlY3RhYmxlPHByZV9pbmNyZW1lbnRfZGVjcmVtZW50X2FjdGlvbjxBY3Q+ID4gewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZSA8Y2xhc3MgQWN0PiBzdHJ1Y3QgCi1pc19wcm90ZWN0YWJsZTxwb3N0X2luY3JlbWVudF9kZWNyZW1lbnRfYWN0aW9uPEFjdD4gPiB7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOwotfTsKLQotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3Byb3RlY3RhYmxlPG90aGVyX2FjdGlvbjxhZGRyZXNzb2ZfYWN0aW9uPiA+IHsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3Byb3RlY3RhYmxlPG90aGVyX2FjdGlvbjxjb250ZW50c29mX2FjdGlvbj4gPiB7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfcHJvdGVjdGFibGU8b3RoZXJfYWN0aW9uPHN1YnNjcmlwdF9hY3Rpb24+ID4gewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBpc19wcm90ZWN0YWJsZTxvdGhlcl9hY3Rpb248YXNzaWdubWVudF9hY3Rpb24+ID4gewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsKLX07Ci0KLS8vIE5PVEU6IGNvbW1hIGFjdGlvbiBpcyBhbHNvIHByb3RlY3RhYmxlLCBidXQgdGhlIHNwZWNpYWxpemF0aW9uIGlzCi0gIC8vIGluIGFjdGlvbnMuaHBwCi0KLQotfSAvLyBuYW1lc3BhY2UgbGFtYmRhIAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmCi0KLQotCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9vcGVyYXRvcl9sYW1iZGFfZnVuY19iYXNlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9vcGVyYXRvcl9sYW1iZGFfZnVuY19iYXNlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjBiYjQ1ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvb3BlcmF0b3JfbGFtYmRhX2Z1bmNfYmFzZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNzEgKzAsMCBAQAotLy8gQm9vc3QgTGFtYmRhIExpYnJhcnkgIC0gb3BlcmF0b3JfbGFtYmRhX2Z1bmNfYmFzZS5ocHAgLS0tLS0tLS0tLS0tLS0tLS0KLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAgSmFha2tvIEphcnZpIChqYWFra28uamFydmlAY3MudXR1LmZpKQotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHd3dy5ib29zdC5vcmcKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZm5kZWYgTkROQk9PU1RfTEFNQkRBX09QRVJBVE9SX0xBTUJEQV9GVU5DX0JBU0VfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9PUEVSQVRPUl9MQU1CREFfRlVOQ19CQVNFX0hQUAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyAKLW5hbWVzcGFjZSBsYW1iZGEgewotCi0KLS8vIFRoZXNlIG9wZXJhdG9ycyBjYW5ub3QgYmUgaW1wbGVtZW50ZWQgYXMgYXBwbHkgZnVuY3Rpb25zIG9mIGFjdGlvbiAKLS8vIHRlbXBsYXRlcwotCi0KLS8vIFNwZWNpYWxpemF0aW9uIGZvciBjb21tYS4KLXRlbXBsYXRlPGNsYXNzIEFyZ3M+Ci1jbGFzcyBsYW1iZGFfZnVuY3Rvcl9iYXNlPG90aGVyX2FjdGlvbjxjb21tYV9hY3Rpb24+LCBBcmdzPiB7Ci1wdWJsaWM6Ci0gIEFyZ3MgYXJnczsKLXB1YmxpYzoKLSAgZXhwbGljaXQgbGFtYmRhX2Z1bmN0b3JfYmFzZShjb25zdCBBcmdzJiBhKSA6IGFyZ3MoYSkge30KLQotICB0ZW1wbGF0ZTxjbGFzcyBSRVQsIENBTExfVEVNUExBVEVfQVJHUz4KLSAgUkVUIGNhbGwoQ0FMTF9GT1JNQUxfQVJHUykgY29uc3QgewotICAgIHJldHVybiBkZXRhaWw6OnNlbGVjdChuZG5ib29zdDo6dHVwbGVzOjpnZXQ8MD4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpLCAKLSAgICAgICAgICAgZGV0YWlsOjpzZWxlY3QobmRuYm9vc3Q6OnR1cGxlczo6Z2V0PDE+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKTsgCi0gIH0KLQotCi0gIHRlbXBsYXRlPGNsYXNzIFNpZ0FyZ3M+IHN0cnVjdCBzaWcgeyAKLSAgcHJpdmF0ZToKLSAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICBkZXRhaWw6OmRlZHVjZV9hcmd1bWVudF90eXBlczxBcmdzLCBTaWdBcmdzPjo6dHlwZSByZXRzX3Q7ICAgICAgCi0gIHB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJldHVybl90eXBlXzJfY29tbWE8IC8vIGNvbW1hIG5lZWRzIHNwZWNpYWwgaGFuZGxpbmcKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6ZWxlbWVudF9vcl9udWxsPDAsIHJldHNfdD46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmVsZW1lbnRfb3JfbnVsbDwxLCByZXRzX3Q+Ojp0eXBlCi0gICAgPjo6dHlwZSB0eXBlOwotICB9OwotCi19OyAgCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyBoZWxwZXIgdHJhaXRzIHRvIG1ha2UgdGhlIGV4cHJlc3Npb24gc2hvcnRlciwgdGFrZXMgYmluYXJ5IGFjdGlvbgotLy8gYm91bmQgYXJndW1lbnQgdHVwbGUsIG9wZW4gYXJndW1lbnQgdHVwbGUgYW5kIGdpdmVzIHRoZSByZXR1cm4gdHlwZQotCi10ZW1wbGF0ZTxjbGFzcyBBY3Rpb24sIGNsYXNzIEJvdW5kLCBjbGFzcyBPcGVuPiBjbGFzcyBiaW5hcnlfcnQgewotICBwcml2YXRlOgotICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgIGRldGFpbDo6ZGVkdWNlX2FyZ3VtZW50X3R5cGVzPEJvdW5kLCBPcGVuPjo6dHlwZSByZXRzX3Q7ICAgICAgCi0gIHB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJldHVybl90eXBlXzJfcHJvdDwKLSAgICAgIEFjdGlvbiwgIAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjplbGVtZW50X29yX251bGw8MCwgcmV0c190Pjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6ZWxlbWVudF9vcl9udWxsPDEsIHJldHNfdD46OnR5cGUKLSAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi0KLSAgLy8gc2FtZSBmb3IgdW5hcnkgYWN0aW9ucwotdGVtcGxhdGU8Y2xhc3MgQWN0aW9uLCBjbGFzcyBCb3VuZCwgY2xhc3MgT3Blbj4gY2xhc3MgdW5hcnlfcnQgewotICBwcml2YXRlOgotICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgIGRldGFpbDo6ZGVkdWNlX2FyZ3VtZW50X3R5cGVzPEJvdW5kLCBPcGVuPjo6dHlwZSByZXRzX3Q7ICAgICAgCi0gIHB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJldHVybl90eXBlXzFfcHJvdDwKLSAgICAgIEFjdGlvbiwgIAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjplbGVtZW50X29yX251bGw8MCwgcmV0c190Pjo6dHlwZQotICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLQotfSAvLyBlbmQgZGV0YWlsCi0KLS8vIFNwZWNpYWxpemF0aW9uIGZvciBsb2dpY2FsIGFuZCAodG8gcHJlc2VydmUgc2hvcnRjaXJjdWl0aW5nKQotLy8gdGhpcyBjb3VsZCBiZSBkb25lIHdpdGggYSBtYWNybyBhcyB0aGUgb3RoZXJzLCBjb2RlIHVzZWQgdG8gYmUgZGlmZmVyZW50Ci10ZW1wbGF0ZTxjbGFzcyBBcmdzPgotY2xhc3MgbGFtYmRhX2Z1bmN0b3JfYmFzZTxsb2dpY2FsX2FjdGlvbjxhbmRfYWN0aW9uPiwgQXJncz4gewotcHVibGljOgotICBBcmdzIGFyZ3M7Ci1wdWJsaWM6Ci0gIGV4cGxpY2l0IGxhbWJkYV9mdW5jdG9yX2Jhc2UoY29uc3QgQXJncyYgYSkgOiBhcmdzKGEpIHt9Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBDQUxMX1RFTVBMQVRFX0FSR1M+Ci0gIFJFVCBjYWxsKENBTExfRk9STUFMX0FSR1MpIGNvbnN0IHsKLSAgICByZXR1cm4gZGV0YWlsOjpzZWxlY3QobmRuYm9vc3Q6OnR1cGxlczo6Z2V0PDA+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSAmJiAKLSAgICAgICAgICAgZGV0YWlsOjpzZWxlY3QobmRuYm9vc3Q6OnR1cGxlczo6Z2V0PDE+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKTsgCi0gIH0KLSAgdGVtcGxhdGU8Y2xhc3MgU2lnQXJncz4gc3RydWN0IHNpZyB7IAotICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgIGRldGFpbDo6YmluYXJ5X3J0PGxvZ2ljYWxfYWN0aW9uPGFuZF9hY3Rpb24+LCBBcmdzLCBTaWdBcmdzPjo6dHlwZSB0eXBlOwotICB9OyAgICAgIAotfTsgIAotCi0vLyBTcGVjaWFsaXphdGlvbiBmb3IgbG9naWNhbCBvciAodG8gcHJlc2VydmUgc2hvcnRjaXJjdWl0aW5nKQotLy8gdGhpcyBjb3VsZCBiZSBkb25lIHdpdGggYSBtYWNybyBhcyB0aGUgb3RoZXJzLCBjb2RlIHVzZWQgdG8gYmUgZGlmZmVyZW50Ci10ZW1wbGF0ZTxjbGFzcyBBcmdzPgotY2xhc3MgbGFtYmRhX2Z1bmN0b3JfYmFzZTxsb2dpY2FsX2FjdGlvbjwgb3JfYWN0aW9uPiwgQXJncz4gewotcHVibGljOgotICBBcmdzIGFyZ3M7Ci1wdWJsaWM6Ci0gIGV4cGxpY2l0IGxhbWJkYV9mdW5jdG9yX2Jhc2UoY29uc3QgQXJncyYgYSkgOiBhcmdzKGEpIHt9Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBDQUxMX1RFTVBMQVRFX0FSR1M+Ci0gIFJFVCBjYWxsKENBTExfRk9STUFMX0FSR1MpIGNvbnN0IHsKLSAgICByZXR1cm4gZGV0YWlsOjpzZWxlY3QobmRuYm9vc3Q6OnR1cGxlczo6Z2V0PDA+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSB8fCAKLSAgICAgICAgICAgZGV0YWlsOjpzZWxlY3QobmRuYm9vc3Q6OnR1cGxlczo6Z2V0PDE+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKTsgCi0gIH0KLQotICB0ZW1wbGF0ZTxjbGFzcyBTaWdBcmdzPiBzdHJ1Y3Qgc2lnIHsgCi0gICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgZGV0YWlsOjpiaW5hcnlfcnQ8bG9naWNhbF9hY3Rpb248b3JfYWN0aW9uPiwgQXJncywgU2lnQXJncz46OnR5cGUgdHlwZTsKLSAgfTsgICAgICAKLX07ICAKLQotLy8gU3BlY2lhbGl6YXRpb24gZm9yIHN1YnNjcmlwdAotdGVtcGxhdGU8Y2xhc3MgQXJncz4KLWNsYXNzIGxhbWJkYV9mdW5jdG9yX2Jhc2U8b3RoZXJfYWN0aW9uPHN1YnNjcmlwdF9hY3Rpb24+LCBBcmdzPiB7Ci1wdWJsaWM6Ci0gIEFyZ3MgYXJnczsKLXB1YmxpYzoKLSAgZXhwbGljaXQgbGFtYmRhX2Z1bmN0b3JfYmFzZShjb25zdCBBcmdzJiBhKSA6IGFyZ3MoYSkge30KLQotICB0ZW1wbGF0ZTxjbGFzcyBSRVQsIENBTExfVEVNUExBVEVfQVJHUz4KLSAgUkVUIGNhbGwoQ0FMTF9GT1JNQUxfQVJHUykgY29uc3QgewotICAgIHJldHVybiBkZXRhaWw6OnNlbGVjdChuZG5ib29zdDo6dHVwbGVzOjpnZXQ8MD4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpIAotICAgICAgICAgICBbZGV0YWlsOjpzZWxlY3QobmRuYm9vc3Q6OnR1cGxlczo6Z2V0PDE+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKV07IAotICB9Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgU2lnQXJncz4gc3RydWN0IHNpZyB7IAotICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgIGRldGFpbDo6YmluYXJ5X3J0PG90aGVyX2FjdGlvbjxzdWJzY3JpcHRfYWN0aW9uPiwgQXJncywgU2lnQXJncz46OnR5cGUgCi0gICAgICAgIHR5cGU7Ci0gIH07ICAgICAgCi19OyAgCi0KLQotI2RlZmluZSBORE5CT09TVF9MQU1CREFfQklOQVJZX0FDVElPTihTWU1CT0wsIEFDVElPTl9DTEFTUykgIFwKLXRlbXBsYXRlPGNsYXNzIEFyZ3M+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotY2xhc3MgbGFtYmRhX2Z1bmN0b3JfYmFzZTxBQ1RJT05fQ0xBU1MsIEFyZ3M+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1wdWJsaWM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgQXJncyBhcmdzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGV4cGxpY2l0IGxhbWJkYV9mdW5jdG9yX2Jhc2UoY29uc3QgQXJncyYgYSkgOiBhcmdzKGEpIHt9ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB0ZW1wbGF0ZTxjbGFzcyBSRVQsIENBTExfVEVNUExBVEVfQVJHUz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIFJFVCBjYWxsKENBTExfRk9STUFMX0FSR1MpIGNvbnN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICByZXR1cm4gZGV0YWlsOjpzZWxlY3QobmRuYm9vc3Q6OnR1cGxlczo6Z2V0PDA+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSAgXAotICAgICAgICAgICBTWU1CT0wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgIGRldGFpbDo6c2VsZWN0KG5kbmJvb3N0Ojp0dXBsZXM6OmdldDwxPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUyk7IFwKLSAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB0ZW1wbGF0ZTxjbGFzcyBTaWdBcmdzPiBzdHJ1Y3Qgc2lnIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIGRldGFpbDo6YmluYXJ5X3J0PEFDVElPTl9DTEFTUywgQXJncywgU2lnQXJncz46OnR5cGUgdHlwZTsgICAgICAgICAgXAotICB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi19OyAgCi0KLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX1BSRUZJWF9VTkFSWV9BQ1RJT04oU1lNQk9MLCBBQ1RJT05fQ0xBU1MpICAgICAgICAgICAgXAotdGVtcGxhdGU8Y2xhc3MgQXJncz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1jbGFzcyBsYW1iZGFfZnVuY3Rvcl9iYXNlPEFDVElPTl9DTEFTUywgQXJncz4geyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXB1YmxpYzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBBcmdzIGFyZ3M7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1wdWJsaWM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZXhwbGljaXQgbGFtYmRhX2Z1bmN0b3JfYmFzZShjb25zdCBBcmdzJiBhKSA6IGFyZ3MoYSkge30gICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIHRlbXBsYXRlPGNsYXNzIFJFVCwgQ0FMTF9URU1QTEFURV9BUkdTPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgUkVUIGNhbGwoQ0FMTF9GT1JNQUxfQVJHUykgY29uc3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHJldHVybiBTWU1CT0wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgIGRldGFpbDo6c2VsZWN0KG5kbmJvb3N0Ojp0dXBsZXM6OmdldDwwPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUyk7IFwKLSAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB0ZW1wbGF0ZTxjbGFzcyBTaWdBcmdzPiBzdHJ1Y3Qgc2lnIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIGRldGFpbDo6dW5hcnlfcnQ8QUNUSU9OX0NMQVNTLCBBcmdzLCBTaWdBcmdzPjo6dHlwZSB0eXBlOyAgICAgICAgICAgXAotICB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi19OyAgCi0KLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX1BPU1RGSVhfVU5BUllfQUNUSU9OKFNZTUJPTCwgQUNUSU9OX0NMQVNTKSAgICAgICAgICAgXAotdGVtcGxhdGU8Y2xhc3MgQXJncz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1jbGFzcyBsYW1iZGFfZnVuY3Rvcl9iYXNlPEFDVElPTl9DTEFTUywgQXJncz4geyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXB1YmxpYzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBBcmdzIGFyZ3M7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1wdWJsaWM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZXhwbGljaXQgbGFtYmRhX2Z1bmN0b3JfYmFzZShjb25zdCBBcmdzJiBhKSA6IGFyZ3MoYSkge30gICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIHRlbXBsYXRlPGNsYXNzIFJFVCwgQ0FMTF9URU1QTEFURV9BUkdTPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgUkVUIGNhbGwoQ0FMTF9GT1JNQUxfQVJHUykgY29uc3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHJldHVybiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZGV0YWlsOjpzZWxlY3QobmRuYm9vc3Q6OnR1cGxlczo6Z2V0PDA+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSBTWU1CT0w7IFwKLSAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB0ZW1wbGF0ZTxjbGFzcyBTaWdBcmdzPiBzdHJ1Y3Qgc2lnIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIGRldGFpbDo6dW5hcnlfcnQ8QUNUSU9OX0NMQVNTLCBBcmdzLCBTaWdBcmdzPjo6dHlwZSB0eXBlOyAgICAgICAgICAgXAotICB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi19OyAgCi0KLU5ETkJPT1NUX0xBTUJEQV9CSU5BUllfQUNUSU9OKCssYXJpdGhtZXRpY19hY3Rpb248cGx1c19hY3Rpb24+KQotTkROQk9PU1RfTEFNQkRBX0JJTkFSWV9BQ1RJT04oLSxhcml0aG1ldGljX2FjdGlvbjxtaW51c19hY3Rpb24+KQotTkROQk9PU1RfTEFNQkRBX0JJTkFSWV9BQ1RJT04oKixhcml0aG1ldGljX2FjdGlvbjxtdWx0aXBseV9hY3Rpb24+KQotTkROQk9PU1RfTEFNQkRBX0JJTkFSWV9BQ1RJT04oLyxhcml0aG1ldGljX2FjdGlvbjxkaXZpZGVfYWN0aW9uPikKLU5ETkJPT1NUX0xBTUJEQV9CSU5BUllfQUNUSU9OKCUsYXJpdGhtZXRpY19hY3Rpb248cmVtYWluZGVyX2FjdGlvbj4pCi0KLU5ETkJPT1NUX0xBTUJEQV9CSU5BUllfQUNUSU9OKDw8LGJpdHdpc2VfYWN0aW9uPGxlZnRzaGlmdF9hY3Rpb24+KQotTkROQk9PU1RfTEFNQkRBX0JJTkFSWV9BQ1RJT04oPj4sYml0d2lzZV9hY3Rpb248cmlnaHRzaGlmdF9hY3Rpb24+KQotTkROQk9PU1RfTEFNQkRBX0JJTkFSWV9BQ1RJT04oJixiaXR3aXNlX2FjdGlvbjxhbmRfYWN0aW9uPikKLU5ETkJPT1NUX0xBTUJEQV9CSU5BUllfQUNUSU9OKHwsYml0d2lzZV9hY3Rpb248b3JfYWN0aW9uPikKLU5ETkJPT1NUX0xBTUJEQV9CSU5BUllfQUNUSU9OKF4sYml0d2lzZV9hY3Rpb248eG9yX2FjdGlvbj4pCi0KLU5ETkJPT1NUX0xBTUJEQV9CSU5BUllfQUNUSU9OKDwscmVsYXRpb25hbF9hY3Rpb248bGVzc19hY3Rpb24+KQotTkROQk9PU1RfTEFNQkRBX0JJTkFSWV9BQ1RJT04oPixyZWxhdGlvbmFsX2FjdGlvbjxncmVhdGVyX2FjdGlvbj4pCi1ORE5CT09TVF9MQU1CREFfQklOQVJZX0FDVElPTig8PSxyZWxhdGlvbmFsX2FjdGlvbjxsZXNzb3JlcXVhbF9hY3Rpb24+KQotTkROQk9PU1RfTEFNQkRBX0JJTkFSWV9BQ1RJT04oPj0scmVsYXRpb25hbF9hY3Rpb248Z3JlYXRlcm9yZXF1YWxfYWN0aW9uPikKLU5ETkJPT1NUX0xBTUJEQV9CSU5BUllfQUNUSU9OKD09LHJlbGF0aW9uYWxfYWN0aW9uPGVxdWFsX2FjdGlvbj4pCi1ORE5CT09TVF9MQU1CREFfQklOQVJZX0FDVElPTighPSxyZWxhdGlvbmFsX2FjdGlvbjxub3RlcXVhbF9hY3Rpb24+KQotCi1ORE5CT09TVF9MQU1CREFfQklOQVJZX0FDVElPTigrPSxhcml0aG1ldGljX2Fzc2lnbm1lbnRfYWN0aW9uPHBsdXNfYWN0aW9uPikKLU5ETkJPT1NUX0xBTUJEQV9CSU5BUllfQUNUSU9OKC09LGFyaXRobWV0aWNfYXNzaWdubWVudF9hY3Rpb248bWludXNfYWN0aW9uPikKLU5ETkJPT1NUX0xBTUJEQV9CSU5BUllfQUNUSU9OKCo9LGFyaXRobWV0aWNfYXNzaWdubWVudF9hY3Rpb248bXVsdGlwbHlfYWN0aW9uPikKLU5ETkJPT1NUX0xBTUJEQV9CSU5BUllfQUNUSU9OKC89LGFyaXRobWV0aWNfYXNzaWdubWVudF9hY3Rpb248ZGl2aWRlX2FjdGlvbj4pCi1ORE5CT09TVF9MQU1CREFfQklOQVJZX0FDVElPTiglPSxhcml0aG1ldGljX2Fzc2lnbm1lbnRfYWN0aW9uPHJlbWFpbmRlcl9hY3Rpb24+KQotCi1ORE5CT09TVF9MQU1CREFfQklOQVJZX0FDVElPTig8PD0sYml0d2lzZV9hc3NpZ25tZW50X2FjdGlvbjxsZWZ0c2hpZnRfYWN0aW9uPikKLU5ETkJPT1NUX0xBTUJEQV9CSU5BUllfQUNUSU9OKD4+PSxiaXR3aXNlX2Fzc2lnbm1lbnRfYWN0aW9uPHJpZ2h0c2hpZnRfYWN0aW9uPikKLU5ETkJPT1NUX0xBTUJEQV9CSU5BUllfQUNUSU9OKCY9LGJpdHdpc2VfYXNzaWdubWVudF9hY3Rpb248YW5kX2FjdGlvbj4pCi1ORE5CT09TVF9MQU1CREFfQklOQVJZX0FDVElPTih8PSxiaXR3aXNlX2Fzc2lnbm1lbnRfYWN0aW9uPG9yX2FjdGlvbj4pCi1ORE5CT09TVF9MQU1CREFfQklOQVJZX0FDVElPTihePSxiaXR3aXNlX2Fzc2lnbm1lbnRfYWN0aW9uPHhvcl9hY3Rpb24+KQotCi1ORE5CT09TVF9MQU1CREFfQklOQVJZX0FDVElPTig9LG90aGVyX2FjdGlvbjwgYXNzaWdubWVudF9hY3Rpb24+KQotCi0KLU5ETkJPT1NUX0xBTUJEQV9QUkVGSVhfVU5BUllfQUNUSU9OKCssIHVuYXJ5X2FyaXRobWV0aWNfYWN0aW9uPHBsdXNfYWN0aW9uPikKLU5ETkJPT1NUX0xBTUJEQV9QUkVGSVhfVU5BUllfQUNUSU9OKC0sIHVuYXJ5X2FyaXRobWV0aWNfYWN0aW9uPG1pbnVzX2FjdGlvbj4pCi1ORE5CT09TVF9MQU1CREFfUFJFRklYX1VOQVJZX0FDVElPTih+LCBiaXR3aXNlX2FjdGlvbjxub3RfYWN0aW9uPikKLU5ETkJPT1NUX0xBTUJEQV9QUkVGSVhfVU5BUllfQUNUSU9OKCEsIGxvZ2ljYWxfYWN0aW9uPG5vdF9hY3Rpb24+KQotTkROQk9PU1RfTEFNQkRBX1BSRUZJWF9VTkFSWV9BQ1RJT04oKyssIHByZV9pbmNyZW1lbnRfZGVjcmVtZW50X2FjdGlvbjxpbmNyZW1lbnRfYWN0aW9uPikKLU5ETkJPT1NUX0xBTUJEQV9QUkVGSVhfVU5BUllfQUNUSU9OKC0tLCBwcmVfaW5jcmVtZW50X2RlY3JlbWVudF9hY3Rpb248ZGVjcmVtZW50X2FjdGlvbj4pCi0KLU5ETkJPT1NUX0xBTUJEQV9QUkVGSVhfVU5BUllfQUNUSU9OKCYsb3RoZXJfYWN0aW9uPGFkZHJlc3NvZl9hY3Rpb24+KQotTkROQk9PU1RfTEFNQkRBX1BSRUZJWF9VTkFSWV9BQ1RJT04oKixvdGhlcl9hY3Rpb248Y29udGVudHNvZl9hY3Rpb24+KQotCi1ORE5CT09TVF9MQU1CREFfUE9TVEZJWF9VTkFSWV9BQ1RJT04oKyssIHBvc3RfaW5jcmVtZW50X2RlY3JlbWVudF9hY3Rpb248aW5jcmVtZW50X2FjdGlvbj4pCi1ORE5CT09TVF9MQU1CREFfUE9TVEZJWF9VTkFSWV9BQ1RJT04oLS0sIHBvc3RfaW5jcmVtZW50X2RlY3JlbWVudF9hY3Rpb248ZGVjcmVtZW50X2FjdGlvbj4pCi0KLQotI3VuZGVmIE5ETkJPT1NUX0xBTUJEQV9QT1NURklYX1VOQVJZX0FDVElPTgotI3VuZGVmIE5ETkJPT1NUX0xBTUJEQV9QUkVGSVhfVU5BUllfQUNUSU9OCi0jdW5kZWYgTkROQk9PU1RfTEFNQkRBX0JJTkFSWV9BQ1RJT04KLQotfSAvLyBuYW1lc3BhY2UgbGFtYmRhCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYKLQotCi0KLQotCi0KLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL29wZXJhdG9yX3JldHVybl90eXBlX3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvb3BlcmF0b3JfcmV0dXJuX3R5cGVfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTBiMzdjYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvb3BlcmF0b3JfcmV0dXJuX3R5cGVfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDkxNyArMCwwIEBACi0vLyAgb3BlcmF0b3JfcmV0dXJuX3R5cGVfdHJhaXRzLmhwcCAtLSBCb29zdCBMYW1iZGEgTGlicmFyeSAtLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwIEphYWtrbyBKYXJ2aSAoamFha2tvLmphcnZpQGNzLnV0dS5maSkKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB3d3cuYm9vc3Qub3JnCi0KLSNpZm5kZWYgTkROQk9PU1RfTEFNQkRBX09QRVJBVE9SX1JFVFVSTl9UWVBFX1RSQUlUU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX09QRVJBVE9SX1JFVFVSTl9UWVBFX1RSQUlUU19IUFAKLQotI2luY2x1ZGUgIm5kbmJvb3N0L2xhbWJkYS9kZXRhaWwvaXNfaW5zdGFuY2Vfb2YuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL3NhbWVfdHJhaXRzLmhwcCIKLQotI2luY2x1ZGUgIm5kbmJvb3N0L2luZGlyZWN0X3JlZmVyZW5jZS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvZGV0YWlsL2NvbnRhaW5lcl9md2QuaHBwIgotCi0jaW5jbHVkZSA8Y3N0ZGRlZj4gLy8gbmVlZGVkIGZvciB0aGUgcHRyZGlmZl90Ci0jaW5jbHVkZSA8aW9zZndkPiAgLy8gZm9yIGlzdHJlYW0gYW5kIG9zdHJlYW0KLQotI2luY2x1ZGUgPGl0ZXJhdG9yPiAvLyBuZWVkZWQgZm9yIG9wZXJhdG9yJgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyAKLW5hbWVzcGFjZSBsYW1iZGEgewotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vIC0tIGdlbmVyYWwgaGVscGVyIHRlbXBsYXRlcyBmb3IgdHlwZSBkZWR1Y3Rpb24gLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIE11Y2ggb2YgdGhlIHR5cGUgZGVkdWN0aW9uIGNvZGUgZm9yIHN0YW5kYXJkIGFyaXRobWV0aWMgdHlwZXMgZnJvbSBHYXJ5IFBvd2VsbAotCi10ZW1wbGF0ZSA8Y2xhc3MgQT4gc3RydWN0IHByb21vdGVfY29kZSB7IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSAtMTsgfTsKLS8vIHRoaXMgbWVhbnMgdGhhdCBhIGNvZGUgaXMgbm90IGRlZmluZWQgZm9yIEEKLQotLy8gLS0gdGhlIG5leHQgNSB0eXBlcyBhcmUgbmVlZGVkIGluIGlmX3RoZW5fZWxzZV9yZXR1cm4gCi0vLyB0aGUgcHJvbW90aW9uIG9yZGVyIGlzIG5vdCBpbXBvcnRhbnQsIGJ1dCB0aGV5IG11c3QgaGF2ZSBkaXN0aW5jdCB2YWx1ZXMuCi10ZW1wbGF0ZSA8PiBzdHJ1Y3QgcHJvbW90ZV9jb2RlPGJvb2w+IHsgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDEwOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfY29kZTxjaGFyPiB7IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSAyMDsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBwcm9tb3RlX2NvZGU8dW5zaWduZWQgY2hhcj4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gMzA7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgcHJvbW90ZV9jb2RlPHNpZ25lZCBjaGFyPiB7IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSA0MDsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBwcm9tb3RlX2NvZGU8c2hvcnQgaW50PiB7IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSA1MDsgfTsKLS8vIC0tLS0tLS0tLS0KLQotdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfY29kZTxpbnQ+IHsgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDEwMDsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBwcm9tb3RlX2NvZGU8dW5zaWduZWQgaW50PiB7IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSAyMDA7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgcHJvbW90ZV9jb2RlPGxvbmc+IHsgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDMwMDsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBwcm9tb3RlX2NvZGU8dW5zaWduZWQgbG9uZz4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gNDAwOyB9OwotCi10ZW1wbGF0ZSA8PiBzdHJ1Y3QgcHJvbW90ZV9jb2RlPGZsb2F0PiB7IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSA1MDA7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgcHJvbW90ZV9jb2RlPGRvdWJsZT4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gNjAwOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfY29kZTxsb25nIGRvdWJsZT4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gNzAwOyB9OwotCi0vLyBUT0RPOiB3Y2hhcl90Ci0KLS8vIGZvcndhcmQgZGVsY2FyYXRpb24gb2YgY29tcGxleC4KLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi19IC8vIG5hbWVzcGFjZSBsYW1iZGEgCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyAKLW5hbWVzcGFjZSBsYW1iZGEgewotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlIDw+IHN0cnVjdCBwcm9tb3RlX2NvZGU8IHN0ZDo6Y29tcGxleDxmbG9hdD4gPiB7IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSA4MDA7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgcHJvbW90ZV9jb2RlPCBzdGQ6OmNvbXBsZXg8ZG91YmxlPiA+IHsgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDkwMDsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBwcm9tb3RlX2NvZGU8IHN0ZDo6Y29tcGxleDxsb25nIGRvdWJsZT4gPiB7IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSAxMDAwOyB9OwotCi0vLyAtLSBpbnQgcHJvbW90aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLXRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgcHJvbW90ZV90b19pbnQgeyB0eXBlZGVmIFQgdHlwZTsgfTsKLQotdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfdG9faW50PGJvb2w+IHsgdHlwZWRlZiBpbnQgdHlwZTsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBwcm9tb3RlX3RvX2ludDxjaGFyPiB7IHR5cGVkZWYgaW50IHR5cGU7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgcHJvbW90ZV90b19pbnQ8dW5zaWduZWQgY2hhcj4geyB0eXBlZGVmIGludCB0eXBlOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfdG9faW50PHNpZ25lZCBjaGFyPiB7IHR5cGVkZWYgaW50IHR5cGU7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgcHJvbW90ZV90b19pbnQ8c2hvcnQgaW50PiB7IHR5cGVkZWYgaW50IHR5cGU7IH07Ci0KLS8vIFRoZSB1bnNpZ25lZCBzaG9ydCBpbnQgcHJvbW90aW9uIHJ1bGUgaXMgdGhpczoKLS8vIHVuc2lnbmVkIHNob3J0IGludCB0byBzaWduZWQgaW50IGlmIGEgc2lnbmVkIGludCBjYW4gaG9sZCBhbGwgdmFsdWVzIAotLy8gb2YgdW5zaWduZWQgc2hvcnQgaW50LCBvdGhlcndpc2UgZ28gdG8gdW5zaWduZWQgaW50LgotdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfdG9faW50PHVuc2lnbmVkIHNob3J0IGludD4KLXsgCi0gICAgICAgIHR5cGVkZWYKLSAgICAgICAgICAgICAgICBkZXRhaWw6OklGPHNpemVvZihpbnQpIDw9IHNpemVvZih1bnNpZ25lZCBzaG9ydCBpbnQpLCAgICAgICAgCi0vLyBJIGhhZCB0aGUgbG9naWMgcmV2ZXJzZWQgYnV0ICI+IiBtZXNzZXMgdXAgdGhlIHBhcnNpbmcuCi0gICAgICAgICAgICAgICAgdW5zaWduZWQgaW50LAotICAgICAgICAgICAgICAgIGludD46OlJFVCB0eXBlOyAKLX07Ci0KLQotLy8gVE9ETzogdGhpbmssIHNob3VsZCB0aGVyZSBiZSBkZWZhdWx0IGJlaGF2aW91ciBmb3Igbm9uLXN0YW5kYXJkIHR5cGVzPwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIAotLy8gVW5hcnkgYWN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gCi0KLXRlbXBsYXRlPGNsYXNzIEFjdCwgY2xhc3MgQT4KLXN0cnVjdCBwbGFpbl9yZXR1cm5fdHlwZV8xIHsKLSAgdHlwZWRlZiBkZXRhaWw6OnVuc3BlY2lmaWVkIHR5cGU7Ci19OwotCi0KLQotdGVtcGxhdGU8Y2xhc3MgQWN0LCBjbGFzcyBBPgotc3RydWN0IHBsYWluX3JldHVybl90eXBlXzE8dW5hcnlfYXJpdGhtZXRpY19hY3Rpb248QWN0PiwgQT4gewotICB0eXBlZGVmIEEgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEFjdCwgY2xhc3MgQT4gCi1zdHJ1Y3QgcmV0dXJuX3R5cGVfMTx1bmFyeV9hcml0aG1ldGljX2FjdGlvbjxBY3Q+LCBBPiB7IAotICB0eXBlZGVmIAotICAgIHR5cGVuYW1lIHBsYWluX3JldHVybl90eXBlXzE8Ci0gICAgICB1bmFyeV9hcml0aG1ldGljX2FjdGlvbjxBY3Q+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxBPjo6dHlwZQotICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLQotdGVtcGxhdGU8Y2xhc3MgQT4KLXN0cnVjdCBwbGFpbl9yZXR1cm5fdHlwZV8xPGJpdHdpc2VfYWN0aW9uPG5vdF9hY3Rpb24+LCBBPiB7Ci0gIHR5cGVkZWYgQSB0eXBlOwotfTsKLQotLy8gYml0d2lzZSBub3QsIG9wZXJhdG9yfigpCi10ZW1wbGF0ZTxjbGFzcyBBPiBzdHJ1Y3QgcmV0dXJuX3R5cGVfMTxiaXR3aXNlX2FjdGlvbjxub3RfYWN0aW9uPiwgQT4gewotICB0eXBlZGVmIAotICAgIHR5cGVuYW1lIHBsYWluX3JldHVybl90eXBlXzE8Ci0gICAgICBiaXR3aXNlX2FjdGlvbjxub3RfYWN0aW9uPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8QT46OnR5cGUKLSAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi0KLS8vIHByZWZpeCBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBvcGVyYXRvcnMgcmV0dXJuIAotLy8gdGhlaXIgYXJndW1lbnQgYnkgZGVmYXVsdCBhcyBhIG5vbi1jb25zdCByZWZlcmVuY2UKLXRlbXBsYXRlPGNsYXNzIEFjdCwgY2xhc3MgQT4gCi1zdHJ1Y3QgcGxhaW5fcmV0dXJuX3R5cGVfMTxwcmVfaW5jcmVtZW50X2RlY3JlbWVudF9hY3Rpb248QWN0PiwgQT4gewotICB0eXBlZGVmIEEmIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBBY3QsIGNsYXNzIEE+IAotc3RydWN0IHJldHVybl90eXBlXzE8cHJlX2luY3JlbWVudF9kZWNyZW1lbnRfYWN0aW9uPEFjdD4sIEE+IHsKLSAgdHlwZWRlZiAKLSAgICB0eXBlbmFtZSBwbGFpbl9yZXR1cm5fdHlwZV8xPAotICAgICAgcHJlX2luY3JlbWVudF9kZWNyZW1lbnRfYWN0aW9uPEFjdD4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OnJlbW92ZV9yZWZlcmVuY2VfYW5kX2N2PEE+Ojp0eXBlCi0gICAgPjo6dHlwZSB0eXBlOwotfTsKLQotLy8gcG9zdCBkZWNyZW1lbnQganVzdCByZXR1cm5zIHRoZSBzYW1lIHBsYWluIHR5cGUuCi10ZW1wbGF0ZTxjbGFzcyBBY3QsIGNsYXNzIEE+Ci1zdHJ1Y3QgcGxhaW5fcmV0dXJuX3R5cGVfMTxwb3N0X2luY3JlbWVudF9kZWNyZW1lbnRfYWN0aW9uPEFjdD4sIEE+IHsKLSAgdHlwZWRlZiBBIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBBY3QsIGNsYXNzIEE+IAotc3RydWN0IHJldHVybl90eXBlXzE8cG9zdF9pbmNyZW1lbnRfZGVjcmVtZW50X2FjdGlvbjxBY3Q+LCBBPiAKLXsgCi0gIHR5cGVkZWYgCi0gICAgdHlwZW5hbWUgcGxhaW5fcmV0dXJuX3R5cGVfMTwKLSAgICAgIHBvc3RfaW5jcmVtZW50X2RlY3JlbWVudF9hY3Rpb248QWN0PiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8QT46OnR5cGUKLSAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLyBsb2dpY2FsIG5vdCwgb3BlcmF0b3IhKCkKLXRlbXBsYXRlPGNsYXNzIEE+IAotc3RydWN0IHBsYWluX3JldHVybl90eXBlXzE8bG9naWNhbF9hY3Rpb248bm90X2FjdGlvbj4sIEE+IHsKLSAgdHlwZWRlZiBib29sIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBBPgotc3RydWN0IHJldHVybl90eXBlXzE8bG9naWNhbF9hY3Rpb248bm90X2FjdGlvbj4sIEE+IHsKLSAgdHlwZWRlZiAKLSAgICB0eXBlbmFtZSBwbGFpbl9yZXR1cm5fdHlwZV8xPAotICAgICAgbG9naWNhbF9hY3Rpb248bm90X2FjdGlvbj4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OnJlbW92ZV9yZWZlcmVuY2VfYW5kX2N2PEE+Ojp0eXBlCi0gICAgPjo6dHlwZSB0eXBlOwotfTsKLQotLy8gYWRkcmVzcyBvZiBhY3Rpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLQotdGVtcGxhdGU8Y2xhc3MgQT4gCi1zdHJ1Y3QgcmV0dXJuX3R5cGVfMTxvdGhlcl9hY3Rpb248YWRkcmVzc29mX2FjdGlvbj4sIEE+IHsgCi0gIHR5cGVkZWYgCi0gICAgdHlwZW5hbWUgcGxhaW5fcmV0dXJuX3R5cGVfMTwKLSAgICAgIG90aGVyX2FjdGlvbjxhZGRyZXNzb2ZfYWN0aW9uPiwgCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OnJlbW92ZV9yZWZlcmVuY2VfYW5kX2N2PEE+Ojp0eXBlCi0gICAgPjo6dHlwZSB0eXBlMTsKLQotICAvLyBJZiBubyB1c2VyIGRlZmluZWQgc3BlY2lhbGl6YXRpb24gZm9yIEEsIHRoZW4gcmV0dXJuIHRoZQotICAvLyBjdiBxdWFsaWZpZWQgcG9pbnRlciB0byBBCi0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpJRjwKLSAgICBuZG5ib29zdDo6aXNfc2FtZTx0eXBlMSwgZGV0YWlsOjp1bnNwZWNpZmllZD46OnZhbHVlLCAKLSAgICB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTxBPjo6dHlwZSosCi0gICAgdHlwZTEKLSAgPjo6UkVUIHR5cGU7Ci19OwotCi0vLyBjb250ZW50c29mIGFjdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gVE9ETzogdGhpcyBkZWR1Y3Rpb24gbWF5IGxlYWQgdG8gZmFpbCBkaXJlY3RseSwgCi0vLyAoaWYgQSBoYXMgbm8gc3BlY2lhbGl6YXRpb24gZm9yIGl0ZXJhdG9yX3RyYWl0cyBhbmQgaGFzIG5vCi0vLyB0eXBlZGVmIEE6OnJlZmVyZW5jZS4KLS8vIFRoZXJlIGlzIG5vIGVhc3kgd2F5IGFyb3VuZCB0aGlzLCBjYXVzZSB0aGVyZSBkb2Vzbid0IHNlZW0gdG8gYmUgYSB3YXkKLS8vIHRvIHRlc3Qgd2hldGhlciBhIGNsYXNzIGlzIGFuIGl0ZXJhdG9yIG9yIG5vdC4KLSAKLS8vIFRoZSBkZWZhdWx0IHdvcmtzIHdpdGggc3RkOjppdGVyYXRvcnMuCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0gIC8vIEEgaXMgYSBub25yZWZlcmVuY2UgdHlwZQotdGVtcGxhdGUgPGNsYXNzIEE+IHN0cnVjdCBjb250ZW50c29mX3R5cGUgewotICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjppbmRpcmVjdF9yZWZlcmVuY2U8QT46OnR5cGUgdHlwZTsgCi19OwotCi0gIC8vIHRoaXMgaXMgc2luY2UgdGhlIG51bGxhcnkgKCkgaW4gbGFtYmRhX2Z1bmN0b3IgaXMgYWx3YXlzIGluc3RhbnRpYXRlZAotdGVtcGxhdGUgPD4gc3RydWN0IGNvbnRlbnRzb2ZfdHlwZTxudWxsX3R5cGU+IHsKLSAgdHlwZWRlZiBkZXRhaWw6OnVuc3BlY2lmaWVkIHR5cGU7Ci19OwotCi0KLXRlbXBsYXRlIDxjbGFzcyBBPiBzdHJ1Y3QgY29udGVudHNvZl90eXBlPGNvbnN0IEE+IHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBjb250ZW50c29mX3R5cGU8QT46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBBPiBzdHJ1Y3QgY29udGVudHNvZl90eXBlPHZvbGF0aWxlIEE+IHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBjb250ZW50c29mX3R5cGU8QT46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBBPiBzdHJ1Y3QgY29udGVudHNvZl90eXBlPGNvbnN0IHZvbGF0aWxlIEE+IHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBjb250ZW50c29mX3R5cGU8QT46OnR5cGUgdHlwZTsKLX07Ci0KLSAgLy8gc3RhbmRhcmQgaXRlcmF0b3IgdHJhaXRzIHNob3VsZCB0YWtlIGNhcmUgb2YgdGhlIHBvaW50ZXIgdHlwZXMgCi0gIC8vIGJ1dCBqdXN0IHRvIGJlIG9uIHRoZSBzYWZlIHNpZGUsIHdlIGhhdmUgdGhlIHNwZWNpYWxpemF0aW9ucyBoZXJlOgotICAvLyB0aGVzZSB3b3JrIGV2ZW4gaWYgQSBpcyBjdi1xdWFsaWZpZWQuCi10ZW1wbGF0ZSA8Y2xhc3MgQT4gc3RydWN0IGNvbnRlbnRzb2ZfdHlwZTxBKj4gewotICB0eXBlZGVmIEEmIHR5cGU7Ci19OwotdGVtcGxhdGUgPGNsYXNzIEE+IHN0cnVjdCBjb250ZW50c29mX3R5cGU8QSogY29uc3Q+IHsKLSAgdHlwZWRlZiBBJiB0eXBlOwotfTsKLXRlbXBsYXRlIDxjbGFzcyBBPiBzdHJ1Y3QgY29udGVudHNvZl90eXBlPEEqIHZvbGF0aWxlPiB7Ci0gIHR5cGVkZWYgQSYgdHlwZTsKLX07Ci10ZW1wbGF0ZSA8Y2xhc3MgQT4gc3RydWN0IGNvbnRlbnRzb2ZfdHlwZTxBKiBjb25zdCB2b2xhdGlsZT4gewotICB0eXBlZGVmIEEmIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBBLCBpbnQgTj4gc3RydWN0IGNvbnRlbnRzb2ZfdHlwZTxBW05dPiB7IAotICB0eXBlZGVmIEEmIHR5cGU7IAotfTsKLXRlbXBsYXRlPGNsYXNzIEEsIGludCBOPiBzdHJ1Y3QgY29udGVudHNvZl90eXBlPGNvbnN0IEFbTl0+IHsgCi0gIHR5cGVkZWYgY29uc3QgQSYgdHlwZTsgCi19OwotdGVtcGxhdGU8Y2xhc3MgQSwgaW50IE4+IHN0cnVjdCBjb250ZW50c29mX3R5cGU8dm9sYXRpbGUgQVtOXT4geyAKLSAgdHlwZWRlZiB2b2xhdGlsZSBBJiB0eXBlOyAKLX07Ci10ZW1wbGF0ZTxjbGFzcyBBLCBpbnQgTj4gc3RydWN0IGNvbnRlbnRzb2ZfdHlwZTxjb25zdCB2b2xhdGlsZSBBW05dPiB7IAotICB0eXBlZGVmIGNvbnN0IHZvbGF0aWxlIEEmIHR5cGU7IAotfTsKLQotCi0KLQotCi19IC8vIGVuZCBkZXRhaWwKLQotdGVtcGxhdGU8Y2xhc3MgQT4gCi1zdHJ1Y3QgcmV0dXJuX3R5cGVfMTxvdGhlcl9hY3Rpb248Y29udGVudHNvZl9hY3Rpb24+LCBBPiB7IAotCi0gIHR5cGVkZWYgCi0gICAgdHlwZW5hbWUgcGxhaW5fcmV0dXJuX3R5cGVfMTwKLSAgICAgIG90aGVyX2FjdGlvbjxjb250ZW50c29mX2FjdGlvbj4sIAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxBPjo6dHlwZQotICAgID46OnR5cGUgdHlwZTE7Ci0KLSAgLy8gSWYgbm8gdXNlciBkZWZpbmVkIHNwZWNpYWxpemF0aW9uIGZvciBBLCB0aGVuIHJldHVybiB0aGUKLSAgLy8gY3YgcXVhbGlmaWVkIHBvaW50ZXIgdG8gQQotICB0eXBlZGVmIHR5cGVuYW1lIAotICBkZXRhaWw6OklGX3R5cGU8Ci0gICAgbmRuYm9vc3Q6OmlzX3NhbWU8dHlwZTEsIGRldGFpbDo6dW5zcGVjaWZpZWQ+Ojp2YWx1ZSwgCi0gICAgZGV0YWlsOjpjb250ZW50c29mX3R5cGU8Ci0gICAgICB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTxBPjo6dHlwZQotICAgID4sCi0gICAgZGV0YWlsOjppZGVudGl0eV9tYXBwaW5nPHR5cGUxPgotICA+Ojp0eXBlIHR5cGU7Ci19OwotCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gYmluYXJ5IGFjdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gaGVyZSB0aGUgZGVmYXVsdCBjYXNlIGlzOiBubyB1c2VyIGRlZmluZWQgdmVyc2lvbnM6Ci10ZW1wbGF0ZSA8Y2xhc3MgQWN0LCBjbGFzcyBBLCBjbGFzcyBCPgotc3RydWN0IHBsYWluX3JldHVybl90eXBlXzIgewotICB0eXBlZGVmIGRldGFpbDo6dW5zcGVjaWZpZWQgdHlwZTsgCi19OwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gZXJyb3IgY2xhc3NlcwotY2xhc3MgaWxsZWdhbF9wb2ludGVyX2FyaXRobWV0aWN7fTsKLQotLy8gcG9pbnRlciBhcml0aG1ldGljIHR5cGUgZGVkdWN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyB2YWx1ZSA9IGZhbHNlIG1lYW5zIHRoYXQgdGhpcyBpcyBub3QgYSBwb2ludGVyIGFyaXRobWV0aWMgY2FzZQotLy8gdmFsdWUgPSB0cnVlIG1lYW5zLCB0aGF0IHRoaXMgY2FuIGJlIGEgcG9pbnRlciBhcml0aG1ldGljIGNhc2UsIGJ1dCBub3QgbmVjZXNzYXJpbHkgaXMKLS8vIFRoaXMgbWVhbnMsIHRoYXQgZm9yIHVzZXIgZGVmaW5lZCBvcGVyYXRvcnMgZm9yIHBvaW50ZXIgdHlwZXMsIHNheSBmb3Igc29tZSBvcGVyYXRvcisoWCwgKlkpLAotLy8gdGhlIGRlZHVjdGlvbnMgbXVzdCBiZSBjb2RlZCBhdCBhbiBlYXJsaWVsIGxldmVsIChyZXR1cm5fdHlwZV8yKS4KLQotdGVtcGxhdGU8Y2xhc3MgQWN0LCBjbGFzcyBBLCBjbGFzcyBCPiAKLXN0cnVjdCBwb2ludGVyX2FyaXRobWV0aWNfdHJhaXRzIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBmYWxzZTsgfTsKLQotdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQj4gCi1zdHJ1Y3QgcG9pbnRlcl9hcml0aG1ldGljX3RyYWl0czxwbHVzX2FjdGlvbiwgQSwgQj4geyAKLQotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgIGFycmF5X3RvX3BvaW50ZXI8dHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9yZWZlcmVuY2U8QT46OnR5cGU+Ojp0eXBlIEFQOwotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgIGFycmF5X3RvX3BvaW50ZXI8dHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9yZWZlcmVuY2U8Qj46OnR5cGU+Ojp0eXBlIEJQOwotCi0gIHN0YXRpYyBjb25zdCBib29sIGlzX3BvaW50ZXJfQSA9IG5kbmJvb3N0Ojppc19wb2ludGVyPEFQPjo6dmFsdWU7Ci0gIHN0YXRpYyBjb25zdCBib29sIGlzX3BvaW50ZXJfQiA9IG5kbmJvb3N0Ojppc19wb2ludGVyPEJQPjo6dmFsdWU7ICAKLQotICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IGlzX3BvaW50ZXJfQSB8fCBpc19wb2ludGVyX0I7Ci0KLSAgLy8gY2FuJ3QgYWRkIHR3byBwb2ludGVycy4KLSAgLy8gbm90ZSwgdGhhdCB3ZSBkbyBub3QgY2hlY2sgd2V0aGVyIHRoZSBvdGhlciB0eXBlIGlzIHZhbGlkIGZvciAKLSAgLy8gYWRkaXRpb24gd2l0aCBhIHBvaW50ZXIuCi0gIC8vIHRoZSBjb21waWxlciB3aWxsIGNhdGNoIGl0IGluIHRoZSBhcHBseSBmdW5jdGlvbgotCi0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gIGRldGFpbDo6SUY8Ci0gICAgaXNfcG9pbnRlcl9BICYmIGlzX3BvaW50ZXJfQiwgCi0gICAgICBkZXRhaWw6OnJldHVybl90eXBlX2RlZHVjdGlvbl9mYWlsdXJlPAotICAgICAgICBkZXRhaWw6OmlsbGVnYWxfcG9pbnRlcl9hcml0aG1ldGljCi0gICAgICA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpJRjxpc19wb2ludGVyX0EsIEFQLCBCUD46OlJFVAotICA+OjpSRVQgdHlwZTsgCi0KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEI+IAotc3RydWN0IHBvaW50ZXJfYXJpdGhtZXRpY190cmFpdHM8bWludXNfYWN0aW9uLCBBLCBCPiB7IAotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgIGFycmF5X3RvX3BvaW50ZXI8dHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9yZWZlcmVuY2U8QT46OnR5cGU+Ojp0eXBlIEFQOwotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgIGFycmF5X3RvX3BvaW50ZXI8dHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9yZWZlcmVuY2U8Qj46OnR5cGU+Ojp0eXBlIEJQOwotCi0gIHN0YXRpYyBjb25zdCBib29sIGlzX3BvaW50ZXJfQSA9IG5kbmJvb3N0Ojppc19wb2ludGVyPEFQPjo6dmFsdWU7Ci0gIHN0YXRpYyBjb25zdCBib29sIGlzX3BvaW50ZXJfQiA9IG5kbmJvb3N0Ojppc19wb2ludGVyPEJQPjo6dmFsdWU7ICAKLQotICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IGlzX3BvaW50ZXJfQSB8fCBpc19wb2ludGVyX0I7Ci0KLSAgc3RhdGljIGNvbnN0IGJvb2wgc2FtZV9wb2ludGVyX3R5cGUgPQotICAgIGlzX3BvaW50ZXJfQSAmJiBpc19wb2ludGVyX0IgJiYgCi0gICAgbmRuYm9vc3Q6OmlzX3NhbWU8Ci0gICAgICB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2NvbnN0PAotICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX3BvaW50ZXI8Ci0gICAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9jb25zdDxBUD46OnR5cGUKLSAgICAgICAgPjo6dHlwZQotICAgICAgPjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfY29uc3Q8Ci0gICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfcG9pbnRlcjwKLSAgICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2NvbnN0PEJQPjo6dHlwZQotICAgICAgICA+Ojp0eXBlCi0gICAgICA+Ojp0eXBlCi0gICAgPjo6dmFsdWU7Ci0KLSAgLy8gcHRyIC0gcHRyIGhhcyB0eXBlIHB0cmRpZmZfdAotICAvLyBub3RlLCB0aGF0IHdlIGRvIG5vdCBjaGVjayBpZiwgaW4gcHRyIC0gQiwgQiBpcyAKLSAgLy8gdmFsaWQgZm9yIHN1YnRyYWN0aW9uIHdpdGggYSBwb2ludGVyLgotICAvLyB0aGUgY29tcGlsZXIgd2lsbCBjYXRjaCBpdCBpbiB0aGUgYXBwbHkgZnVuY3Rpb24KLQotICB0eXBlZGVmIHR5cGVuYW1lIAotICBkZXRhaWw6OklGPAotICAgIHNhbWVfcG9pbnRlcl90eXBlLCBjb25zdCBzdGQ6OnB0cmRpZmZfdCwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OklGPAotICAgICAgaXNfcG9pbnRlcl9BLCAKLSAgICAgIEFQLCAKLSAgICAgIGRldGFpbDo6cmV0dXJuX3R5cGVfZGVkdWN0aW9uX2ZhaWx1cmU8ZGV0YWlsOjppbGxlZ2FsX3BvaW50ZXJfYXJpdGhtZXRpYz4KLSAgICA+OjpSRVQKLSAgPjo6UkVUIHR5cGU7IAotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0gICAKLS8vIC0tIGFyaXRobWV0aWMgYWN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0gICAKLXRlbXBsYXRlPGJvb2wgaXNfcG9pbnRlcl9hcml0aG1ldGljLCBjbGFzcyBBY3QsIGNsYXNzIEEsIGNsYXNzIEI+IAotc3RydWN0IHJldHVybl90eXBlXzJfYXJpdGhtZXRpY19waGFzZV8xOwotCi10ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCPiBzdHJ1Y3QgcmV0dXJuX3R5cGVfMl9hcml0aG1ldGljX3BoYXNlXzI7Ci10ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCPiBzdHJ1Y3QgcmV0dXJuX3R5cGVfMl9hcml0aG1ldGljX3BoYXNlXzM7Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotICAKLQotLy8gZHJvcCBhbnkgcXVhbGlmaWVycyBmcm9tIHRoZSBhcmd1bWVudCB0eXBlcyB3aXRoaW4gYXJpdGhtZXRpY19hY3Rpb24KLXRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEIsIGNsYXNzIEFjdD4gCi1zdHJ1Y3QgcmV0dXJuX3R5cGVfMjxhcml0aG1ldGljX2FjdGlvbjxBY3Q+LCBBLCBCPgotewotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8QT46OnR5cGUgcGxhaW5fQTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnJlbW92ZV9yZWZlcmVuY2VfYW5kX2N2PEI+Ojp0eXBlIHBsYWluX0I7Ci0KLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICBwbGFpbl9yZXR1cm5fdHlwZV8yPGFyaXRobWV0aWNfYWN0aW9uPEFjdD4sIHBsYWluX0EsIHBsYWluX0I+Ojp0eXBlIHR5cGUxOwotICAKLSAgLy8gaWYgdXNlciBkZWZpbmVkIHJldHVybiB0eXBlLCBkbyBub3QgZW50ZXIgdGhlIHdob2xlIGFyaXRobWV0aWMgZGVkdWN0aW9ucwotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgIGRldGFpbDo6SUZfdHlwZTwKLSAgICAgIG5kbmJvb3N0Ojppc19zYW1lPHR5cGUxLCBkZXRhaWw6OnVuc3BlY2lmaWVkPjo6dmFsdWUsIAotICAgICAgZGV0YWlsOjpyZXR1cm5fdHlwZV8yX2FyaXRobWV0aWNfcGhhc2VfMTwKLSAgICAgICAgIGRldGFpbDo6cG9pbnRlcl9hcml0aG1ldGljX3RyYWl0czxBY3QsIEEsIEI+Ojp2YWx1ZSwgQWN0LCBBLCBCCi0gICAgICA+LAotICAgICAgcGxhaW5fcmV0dXJuX3R5cGVfMjxhcml0aG1ldGljX2FjdGlvbjxBY3Q+LCBwbGFpbl9BLCBwbGFpbl9CPgotICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotICAgCi0vLyBwZXJmb3JtIGludGVncmFsIHByb21vdGlvbiwgbm8gcG9pbnRlciBhcml0aG1ldGljCi10ZW1wbGF0ZTxib29sIGlzX3BvaW50ZXJfYXJpdGhtZXRpYywgY2xhc3MgQWN0LCBjbGFzcyBBLCBjbGFzcyBCPiAKLXN0cnVjdCByZXR1cm5fdHlwZV8yX2FyaXRobWV0aWNfcGhhc2VfMQotewotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgIHJldHVybl90eXBlXzJfYXJpdGhtZXRpY19waGFzZV8yPAotICAgICAgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8QT46OnR5cGUsCi0gICAgICB0eXBlbmFtZSByZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxCPjo6dHlwZQotICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vIHBvaW50ZXJfYXJpdGhtZXRpYwotdGVtcGxhdGU8Y2xhc3MgQWN0LCBjbGFzcyBBLCBjbGFzcyBCPiAKLXN0cnVjdCByZXR1cm5fdHlwZV8yX2FyaXRobWV0aWNfcGhhc2VfMTx0cnVlLCBBY3QsIEEsIEI+Ci17Ci0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgcG9pbnRlcl9hcml0aG1ldGljX3RyYWl0czxBY3QsIEEsIEI+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCPgotc3RydWN0IHJldHVybl90eXBlXzJfYXJpdGhtZXRpY19waGFzZV8yIHsKLSAgdHlwZWRlZiB0eXBlbmFtZQotICAgIHJldHVybl90eXBlXzJfYXJpdGhtZXRpY19waGFzZV8zPAotICAgICAgdHlwZW5hbWUgcHJvbW90ZV90b19pbnQ8QT46OnR5cGUsIAotICAgICAgdHlwZW5hbWUgcHJvbW90ZV90b19pbnQ8Qj46OnR5cGUKLSAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLyBzcGVjaWFsaXphdGlvbiBmb3IgdW5zaWduZWQgaW50LgotLy8gV2Ugb25seSBoYXZlIHRvIGRvIHRoZXNlIHR3byBzcGVjaWFsaXphdGlvbiBiZWNhdXNlIHRoZSB2YWx1ZSBwcm9tb3Rpb24gd2lsbAotLy8gdGFrZSBjYXJlIG9mIHRoZSBvdGhlciBjYXNlcy4KLS8vIFRoZSB1bnNpZ25lZCBpbnQgcHJvbW90aW9uIHJ1bGUgaXMgdGhpczoKLS8vIHVuc2lnbmVkIGludCB0byBsb25nIGlmIGEgbG9uZyBjYW4gaG9sZCBhbGwgdmFsdWVzIG9mIHVuc2lnbmVkIGludCwKLS8vIG90aGVyd2lzZSBnbyB0byB1bnNpZ25lZCBsb25nLgotCi0vLyBzdHJ1Y3Qgc28gSSBkb24ndCBoYXZlIHRvIHR5cGUgdGhpcyB0d2ljZS4KLXN0cnVjdCBwcm9tb3Rpb25fb2ZfdW5zaWduZWRfaW50Ci17Ci0gICAgICAgIHR5cGVkZWYKLSAgICAgICAgZGV0YWlsOjpJRjxzaXplb2YobG9uZykgPD0gc2l6ZW9mKHVuc2lnbmVkIGludCksICAgICAgICAKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nLAotICAgICAgICAgICAgICAgIGxvbmc+OjpSRVQgdHlwZTsgCi19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmV0dXJuX3R5cGVfMl9hcml0aG1ldGljX3BoYXNlXzI8dW5zaWduZWQgaW50LCBsb25nPgotewotICAgICAgICB0eXBlZGVmIHByb21vdGlvbl9vZl91bnNpZ25lZF9pbnQ6OnR5cGUgdHlwZTsKLX07Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmV0dXJuX3R5cGVfMl9hcml0aG1ldGljX3BoYXNlXzI8bG9uZywgdW5zaWduZWQgaW50PgotewotICAgICAgICB0eXBlZGVmIHByb21vdGlvbl9vZl91bnNpZ25lZF9pbnQ6OnR5cGUgdHlwZTsKLX07Ci0KLQotdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQj4gc3RydWN0IHJldHVybl90eXBlXzJfYXJpdGhtZXRpY19waGFzZV8zIHsgCi0gICBlbnVtIHsgcHJvbW90ZV9jb2RlX0FfdmFsdWUgPSBwcm9tb3RlX2NvZGU8QT46OnZhbHVlLAotICAgICAgICAgcHJvbW90ZV9jb2RlX0JfdmFsdWUgPSBwcm9tb3RlX2NvZGU8Qj46OnZhbHVlIH07IC8vIGVudW1zIGZvciBLQ0MKLSAgdHlwZWRlZiB0eXBlbmFtZQotICAgIGRldGFpbDo6SUY8Ci0gICAgICBwcm9tb3RlX2NvZGVfQV92YWx1ZSA9PSAtMSB8fCBwcm9tb3RlX2NvZGVfQl92YWx1ZSA9PSAtMSwKLSAgICAgIGRldGFpbDo6cmV0dXJuX3R5cGVfZGVkdWN0aW9uX2ZhaWx1cmU8cmV0dXJuX3R5cGVfMl9hcml0aG1ldGljX3BoYXNlXzM+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpJRjwKLSAgICAgICAgKChpbnQpcHJvbW90ZV9jb2RlX0FfdmFsdWUgPiAoaW50KXByb21vdGVfY29kZV9CX3ZhbHVlKSwgCi0gICAgICAgIEEsIAotICAgICAgICBCCi0gICAgICA+OjpSRVQKLSAgICA+OjpSRVQgdHlwZTsgICAgICAgICAgICAgICAgICAgIAotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLS8vIC0tICBiaXR3aXNlIGFjdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gbm90ZTogZm9yIGludGVncmFsIHR5cGVzIGRldWR1Y3Rpb24gaXMgc2ltaWxhciB0byBhcml0aG1ldGljIGFjdGlvbnMuIAotCi0vLyBkcm9wIGFueSBxdWFsaWZpZXJzIGZyb20gdGhlIGFyZ3VtZW50IHR5cGVzIHdpdGhpbiBhcml0aG1ldGljIGFjdGlvbgotdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQiwgY2xhc3MgQWN0PiAKLXN0cnVjdCByZXR1cm5fdHlwZV8yPGJpdHdpc2VfYWN0aW9uPEFjdD4sIEEsIEI+Ci17Ci0KLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnJlbW92ZV9yZWZlcmVuY2VfYW5kX2N2PEE+Ojp0eXBlIHBsYWluX0E7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxCPjo6dHlwZSBwbGFpbl9COwotCi0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgcGxhaW5fcmV0dXJuX3R5cGVfMjxiaXR3aXNlX2FjdGlvbjxBY3Q+LCBwbGFpbl9BLCBwbGFpbl9CPjo6dHlwZSB0eXBlMTsKLSAgCi0gIC8vIGlmIHVzZXIgZGVmaW5lZCByZXR1cm4gdHlwZSwgZG8gbm90IGVudGVyIHR5cGUgZGVkdWN0aW9ucwotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgIGRldGFpbDo6SUZfdHlwZTwKLSAgICAgIG5kbmJvb3N0Ojppc19zYW1lPHR5cGUxLCBkZXRhaWw6OnVuc3BlY2lmaWVkPjo6dmFsdWUsIAotICAgICAgcmV0dXJuX3R5cGVfMjxhcml0aG1ldGljX2FjdGlvbjxwbHVzX2FjdGlvbj4sIEEsIEI+LAotICAgICAgcGxhaW5fcmV0dXJuX3R5cGVfMjxiaXR3aXNlX2FjdGlvbjxBY3Q+LCBwbGFpbl9BLCBwbGFpbl9CPgotICAgID46OnR5cGUgdHlwZTsKLQotICAvLyBwbHVzX2FjdGlvbiBpcyBqdXN0IGEgcmFuZG9tIHBpY2ssIGhhcyB0byBiZSBhIGNvbmNyZXRlIGluc3RhbmNlCi0KLSAgLy8gVE9ETzogVGhpcyBjaGVjayBpcyBvbmx5IHZhbGlkIGZvciBidWlsdC1pbiB0eXBlcywgb3ZlcmxvYWRlZCB0eXBlcyBtaWdodAotICAvLyBhY2NlcHQgZmxvYXRpbmcgcG9pbnQgb3BlcmF0b3JzCi0KLSAgLy8gYml0d2lzZSBvcGVyYXRvcnMgbm90IGRlZmluZWQgZm9yIGZsb2F0aW5nIHBvaW50IHR5cGVzCi0gIC8vIHRoZXNlIHRlc3QgYXJlIG5vdCBzdHJpY3RseSBuZWVkZWQgaGVyZSwgc2luY2UgdGhlIGVycm9yIHdpbGwgYmUgY2F1Z2h0IGluCi0gIC8vIHRoZSBhcHBseSBmdW5jdGlvbgotICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCEobmRuYm9vc3Q6OmlzX2Zsb2F0PHBsYWluX0E+Ojp2YWx1ZSAmJiBuZG5ib29zdDo6aXNfZmxvYXQ8cGxhaW5fQj46OnZhbHVlKSk7Ci0KLX07Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0jaWZkZWYgTkROQk9PU1RfTk9fVEVNUExBVEVEX1NUUkVBTVMKLQotdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQj4KLXN0cnVjdCBsZWZ0c2hpZnRfdHlwZSB7Ci0KLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OklGPAotICAgIG5kbmJvb3N0Ojppc19jb252ZXJ0aWJsZTwKLSAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfcmVmZXJlbmNlPEE+Ojp0eXBlKiwKLSAgICAgIHN0ZDo6b3N0cmVhbSoKLSAgICA+Ojp2YWx1ZSwKLSAgICBzdGQ6Om9zdHJlYW0mLCAKLSAgICB0eXBlbmFtZSBkZXRhaWw6OnJlbW92ZV9yZWZlcmVuY2VfYW5kX2N2PEE+Ojp0eXBlCi0gID46OlJFVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQj4KLXN0cnVjdCByaWdodHNoaWZ0X3R5cGUgewotCi0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpJRjwKLQotICAgIG5kbmJvb3N0Ojppc19jb252ZXJ0aWJsZTwKLSAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfcmVmZXJlbmNlPEE+Ojp0eXBlKiwKLSAgICAgIHN0ZDo6aXN0cmVhbSoKLSAgICA+Ojp2YWx1ZSwgCi0gICAgc3RkOjppc3RyZWFtJiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OnJlbW92ZV9yZWZlcmVuY2VfYW5kX2N2PEE+Ojp0eXBlCi0gID46OlJFVCB0eXBlOwotfTsKLQotI2Vsc2UKLQotdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBnZXRfb3N0cmVhbV90eXBlIHsKLSAgdHlwZWRlZiBzdGQ6OmJhc2ljX29zdHJlYW08dHlwZW5hbWUgVDo6Y2hhcl90eXBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVDo6dHJhaXRzX3R5cGU+JiB0eXBlOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBnZXRfaXN0cmVhbV90eXBlIHsKLSAgdHlwZWRlZiBzdGQ6OmJhc2ljX2lzdHJlYW08dHlwZW5hbWUgVDo6Y2hhcl90eXBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVDo6dHJhaXRzX3R5cGU+JiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQj4KLXN0cnVjdCBsZWZ0c2hpZnRfdHlwZSB7Ci1wcml2YXRlOgotICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfcmVmZXJlbmNlPEE+Ojp0eXBlIHBsYWluQTsKLXB1YmxpYzoKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OklGX3R5cGU8Ci0gICAgaXNfaW5zdGFuY2Vfb2ZfMjxwbGFpbkEsIHN0ZDo6YmFzaWNfb3N0cmVhbT46OnZhbHVlLCAKLSAgICBnZXRfb3N0cmVhbV90eXBlPHBsYWluQT4sIC8vcmVmZXJlbmNlIHRvIHRoZSBzdHJlYW0gCi0gICAgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxBPgotICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCPgotc3RydWN0IHJpZ2h0c2hpZnRfdHlwZSB7Ci1wcml2YXRlOgotICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfcmVmZXJlbmNlPEE+Ojp0eXBlIHBsYWluQTsKLXB1YmxpYzoKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OklGX3R5cGU8Ci0gICAgaXNfaW5zdGFuY2Vfb2ZfMjxwbGFpbkEsIHN0ZDo6YmFzaWNfaXN0cmVhbT46OnZhbHVlLCAKLSAgICBnZXRfaXN0cmVhbV90eXBlPHBsYWluQT4sIC8vcmVmZXJlbmNlIHRvIHRoZSBzdHJlYW0gCi0gICAgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxBPgotICA+Ojp0eXBlIHR5cGU7Ci19OwotCi0KLSNlbmRpZgotCi19IC8vIGVuZCBkZXRhaWwKLQotLy8gb3N0cmVhbQotdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQj4gCi1zdHJ1Y3QgcmV0dXJuX3R5cGVfMjxiaXR3aXNlX2FjdGlvbjxsZWZ0c2hpZnRfYWN0aW9uPiwgQSwgQj4KLXsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnJlbW92ZV9yZWZlcmVuY2VfYW5kX2N2PEE+Ojp0eXBlIHBsYWluX0E7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxCPjo6dHlwZSBwbGFpbl9COwotCi0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgcGxhaW5fcmV0dXJuX3R5cGVfMjxiaXR3aXNlX2FjdGlvbjxsZWZ0c2hpZnRfYWN0aW9uPiwgcGxhaW5fQSwgcGxhaW5fQj46OnR5cGUgdHlwZTE7Ci0gIAotICAvLyBpZiB1c2VyIGRlZmluZWQgcmV0dXJuIHR5cGUsIGRvIG5vdCBlbnRlciB0eXBlIGRlZHVjdGlvbnMKLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICBkZXRhaWw6OklGX3R5cGU8Ci0gICAgICBuZG5ib29zdDo6aXNfc2FtZTx0eXBlMSwgZGV0YWlsOjp1bnNwZWNpZmllZD46OnZhbHVlLCAKLSAgICAgIGRldGFpbDo6bGVmdHNoaWZ0X3R5cGU8QSwgQj4sCi0gICAgICBwbGFpbl9yZXR1cm5fdHlwZV8yPGJpdHdpc2VfYWN0aW9uPGxlZnRzaGlmdF9hY3Rpb24+LCBwbGFpbl9BLCBwbGFpbl9CPgotICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vIGlzdHJlYW0KLXRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEI+IAotc3RydWN0IHJldHVybl90eXBlXzI8Yml0d2lzZV9hY3Rpb248cmlnaHRzaGlmdF9hY3Rpb24+LCBBLCBCPgotewotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8QT46OnR5cGUgcGxhaW5fQTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnJlbW92ZV9yZWZlcmVuY2VfYW5kX2N2PEI+Ojp0eXBlIHBsYWluX0I7Ci0KLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICBwbGFpbl9yZXR1cm5fdHlwZV8yPGJpdHdpc2VfYWN0aW9uPHJpZ2h0c2hpZnRfYWN0aW9uPiwgcGxhaW5fQSwgcGxhaW5fQj46OnR5cGUgdHlwZTE7Ci0gIAotICAvLyBpZiB1c2VyIGRlZmluZWQgcmV0dXJuIHR5cGUsIGRvIG5vdCBlbnRlciB0eXBlIGRlZHVjdGlvbnMKLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICBkZXRhaWw6OklGX3R5cGU8Ci0gICAgICBuZG5ib29zdDo6aXNfc2FtZTx0eXBlMSwgZGV0YWlsOjp1bnNwZWNpZmllZD46OnZhbHVlLCAKLSAgICAgIGRldGFpbDo6cmlnaHRzaGlmdF90eXBlPEEsIEI+LAotICAgICAgcGxhaW5fcmV0dXJuX3R5cGVfMjxiaXR3aXNlX2FjdGlvbjxyaWdodHNoaWZ0X2FjdGlvbj4sIHBsYWluX0EsIHBsYWluX0I+Ci0gICAgPjo6dHlwZSB0eXBlOwotfTsKLQotLy8gLS0gbG9naWNhbCBhY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIGFsd2F5cyBib29sCi0vLyBOT1RFOiB0aGlzIG1heSBub3QgYmUgdHJ1ZSBmb3Igc29tZSB3ZWlyZCB1c2VyLWRlZmluZWQgdHlwZXMsCi10ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCLCBjbGFzcyBBY3Q+IAotc3RydWN0IHBsYWluX3JldHVybl90eXBlXzI8bG9naWNhbF9hY3Rpb248QWN0PiwgQSwgQj4geyAKLSAgdHlwZWRlZiBib29sIHR5cGU7IAotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQiwgY2xhc3MgQWN0PiAKLXN0cnVjdCByZXR1cm5fdHlwZV8yPGxvZ2ljYWxfYWN0aW9uPEFjdD4sIEEsIEI+IHsgCi0KLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnJlbW92ZV9yZWZlcmVuY2VfYW5kX2N2PEE+Ojp0eXBlIHBsYWluX0E7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxCPjo6dHlwZSBwbGFpbl9COwotCi0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgcGxhaW5fcmV0dXJuX3R5cGVfMjxsb2dpY2FsX2FjdGlvbjxBY3Q+LCBwbGFpbl9BLCBwbGFpbl9CPjo6dHlwZSB0eXBlOwotICAKLX07Ci0KLQotLy8gLS0gcmVsYXRpb25hbCBhY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIGFsd2F5cyBib29sCi0vLyBOT1RFOiB0aGlzIG1heSBub3QgYmUgdHJ1ZSBmb3Igc29tZSB3ZWlyZCB1c2VyLWRlZmluZWQgdHlwZXMsCi10ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCLCBjbGFzcyBBY3Q+IAotc3RydWN0IHBsYWluX3JldHVybl90eXBlXzI8cmVsYXRpb25hbF9hY3Rpb248QWN0PiwgQSwgQj4geyAKLSAgdHlwZWRlZiBib29sIHR5cGU7IAotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQiwgY2xhc3MgQWN0PiAKLXN0cnVjdCByZXR1cm5fdHlwZV8yPHJlbGF0aW9uYWxfYWN0aW9uPEFjdD4sIEEsIEI+IHsgCi0KLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnJlbW92ZV9yZWZlcmVuY2VfYW5kX2N2PEE+Ojp0eXBlIHBsYWluX0E7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxCPjo6dHlwZSBwbGFpbl9COwotCi0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgcGxhaW5fcmV0dXJuX3R5cGVfMjxyZWxhdGlvbmFsX2FjdGlvbjxBY3Q+LCBwbGFpbl9BLCBwbGFpbl9CPjo6dHlwZSB0eXBlOyAKLX07Ci0KLS8vIEFzc2luZ21lbnQgYWN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gcmV0dXJuIHR5cGUgaXMgdGhlIHR5cGUgb2YgdGhlIGZpcnN0IGFyZ3VtZW50IGFzIHJlZmVyZW5jZQotCi0vLyBub3RlIHRoYXQgY3YtcXVhbGlmaWVycyBhcmUgcHJlc2VydmVkLgotLy8gWWVzLCBhc3NpZ25tZW50IG9wZXJhdG9yIGNhbiBiZSBjb25zdCEKLQotLy8gTk9URTogdGhpcyBtYXkgbm90IGJlIHRydWUgZm9yIHNvbWUgd2VpcmQgdXNlci1kZWZpbmVkIHR5cGVzLAotCi10ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCLCBjbGFzcyBBY3Q+IAotc3RydWN0IHJldHVybl90eXBlXzI8YXJpdGhtZXRpY19hc3NpZ25tZW50X2FjdGlvbjxBY3Q+LCBBLCBCPiB7IAotCi0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxBPjo6dHlwZSBwbGFpbl9BOwotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8Qj46OnR5cGUgcGxhaW5fQjsKLQotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgIHBsYWluX3JldHVybl90eXBlXzI8Ci0gICAgICBhcml0aG1ldGljX2Fzc2lnbm1lbnRfYWN0aW9uPEFjdD4sIHBsYWluX0EsIHBsYWluX0IKLSAgICA+Ojp0eXBlIHR5cGUxOwotICAKLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICBkZXRhaWw6OklGPAotICAgICAgbmRuYm9vc3Q6OmlzX3NhbWU8dHlwZTEsIGRldGFpbDo6dW5zcGVjaWZpZWQ+Ojp2YWx1ZSwgCi0gICAgICB0eXBlbmFtZSBuZG5ib29zdDo6YWRkX3JlZmVyZW5jZTxBPjo6dHlwZSwKLSAgICAgIHR5cGUxCi0gICAgPjo6UkVUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCLCBjbGFzcyBBY3Q+IAotc3RydWN0IHJldHVybl90eXBlXzI8Yml0d2lzZV9hc3NpZ25tZW50X2FjdGlvbjxBY3Q+LCBBLCBCPiB7IAotCi0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxBPjo6dHlwZSBwbGFpbl9BOwotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8Qj46OnR5cGUgcGxhaW5fQjsKLQotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgIHBsYWluX3JldHVybl90eXBlXzI8Ci0gICAgICBiaXR3aXNlX2Fzc2lnbm1lbnRfYWN0aW9uPEFjdD4sIHBsYWluX0EsIHBsYWluX0IKLSAgICA+Ojp0eXBlIHR5cGUxOwotICAKLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICBkZXRhaWw6OklGPAotICAgICAgbmRuYm9vc3Q6OmlzX3NhbWU8dHlwZTEsIGRldGFpbDo6dW5zcGVjaWZpZWQ+Ojp2YWx1ZSwgCi0gICAgICB0eXBlbmFtZSBuZG5ib29zdDo6YWRkX3JlZmVyZW5jZTxBPjo6dHlwZSwKLSAgICAgIHR5cGUxCi0gICAgPjo6UkVUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCPiAKLXN0cnVjdCByZXR1cm5fdHlwZV8yPG90aGVyX2FjdGlvbjxhc3NpZ25tZW50X2FjdGlvbj4sIEEsIEI+IHsgCi0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxBPjo6dHlwZSBwbGFpbl9BOwotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8Qj46OnR5cGUgcGxhaW5fQjsKLQotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgIHBsYWluX3JldHVybl90eXBlXzI8Ci0gICAgICBvdGhlcl9hY3Rpb248YXNzaWdubWVudF9hY3Rpb24+LCBwbGFpbl9BLCBwbGFpbl9CCi0gICAgPjo6dHlwZSB0eXBlMTsKLSAgCi0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgZGV0YWlsOjpJRjwKLSAgICAgIG5kbmJvb3N0Ojppc19zYW1lPHR5cGUxLCBkZXRhaWw6OnVuc3BlY2lmaWVkPjo6dmFsdWUsIAotICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmFkZF9yZWZlcmVuY2U8QT46OnR5cGUsCi0gICAgICB0eXBlMQotICAgID46OlJFVCB0eXBlOwotfTsKLQotLy8gLS0gb3RoZXIgYWN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIGNvbW1hIGFjdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBOb3RlOiB0aGlzIG1heSBub3QgYmUgdHJ1ZSBmb3Igc29tZSB3ZWlyZCB1c2VyLWRlZmluZWQgdHlwZXMsCi0KLS8vIE5PVEUhIFRoaXMgb25seSB0cmllcyB0aGUgcGxhaW5fcmV0dXJuX3R5cGVfMiBsYXllciBhbmQgZ2l2ZXMKLS8vIGRldGFpbDo6dW5zcGVjaWZpZWQgYXMgZGVmYXVsdC4gSWYgbm8gc3VjaCBzcGVjaWFsaXphdGlvbiBpcyBmb3VuZCwgdGhlIAotLy8gdHlwZSBydWxlIGluIHRoZSBzcGNlY2lhbGl6YXRpb24gb2YgdGhlIHJldHVybl90eXBlXzJfcHJvdCBpcyB1c2VkCi0vLyB0byBnaXZlIHRoZSB0eXBlIG9mIHRoZSByaWdodCBhcmd1bWVudCAod2hpY2ggY2FuIGJlIGEgcmVmZXJlbmNlIHRvbykKLS8vIChUaGUgYnVpbHQgaW4gb3BlcmF0b3IsIGNhbiByZXR1cm4gYSBsLSBvciBydmFsdWUpLgotdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQj4gCi1zdHJ1Y3QgcmV0dXJuX3R5cGVfMjxvdGhlcl9hY3Rpb248Y29tbWFfYWN0aW9uPiwgQSwgQj4geyAKLQotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8QT46OnR5cGUgcGxhaW5fQTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnJlbW92ZV9yZWZlcmVuY2VfYW5kX2N2PEI+Ojp0eXBlIHBsYWluX0I7Ci0KLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICBwbGFpbl9yZXR1cm5fdHlwZV8yPAotICAgICAgb3RoZXJfYWN0aW9uPGNvbW1hX2FjdGlvbj4sIHBsYWluX0EsIHBsYWluX0IKLSAgICA+Ojp0eXBlIHR5cGU7Ci0gIH07Ci0KLS8vIHN1YnNjcmlwdCBhY3Rpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLSAgLy8gQSBhbmQgQiBhcmUgbm9ucmVmZXJlbmNlIHR5cGVzCi10ZW1wbGF0ZSA8Y2xhc3MgQSwgY2xhc3MgQj4gc3RydWN0IHN1YnNjcmlwdF90eXBlIHsKLSAgdHlwZWRlZiBkZXRhaWw6OnVuc3BlY2lmaWVkIHR5cGU7IAotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEEsIGNsYXNzIEI+IHN0cnVjdCBzdWJzY3JpcHRfdHlwZTxBKiwgQj4gewotICB0eXBlZGVmIEEmIHR5cGU7Ci19OwotdGVtcGxhdGUgPGNsYXNzIEEsIGNsYXNzIEI+IHN0cnVjdCBzdWJzY3JpcHRfdHlwZTxBKiBjb25zdCwgQj4gewotICB0eXBlZGVmIEEmIHR5cGU7Ci19OwotdGVtcGxhdGUgPGNsYXNzIEEsIGNsYXNzIEI+IHN0cnVjdCBzdWJzY3JpcHRfdHlwZTxBKiB2b2xhdGlsZSwgQj4gewotICB0eXBlZGVmIEEmIHR5cGU7Ci19OwotdGVtcGxhdGUgPGNsYXNzIEEsIGNsYXNzIEI+IHN0cnVjdCBzdWJzY3JpcHRfdHlwZTxBKiBjb25zdCB2b2xhdGlsZSwgQj4gewotICB0eXBlZGVmIEEmIHR5cGU7Ci19OwotCi0KLXRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEIsIGludCBOPiBzdHJ1Y3Qgc3Vic2NyaXB0X3R5cGU8QVtOXSwgQj4geyAKLSAgdHlwZWRlZiBBJiB0eXBlOyAKLX07Ci0KLSAgLy8gdGhlc2UgMyBzcGVjaWFsaXphdGlvbnMgYXJlIG5lZWRlZCB0byBtYWtlIGdjYyA8MyBoYXBweQotdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQiwgaW50IE4+IHN0cnVjdCBzdWJzY3JpcHRfdHlwZTxjb25zdCBBW05dLCBCPiB7IAotICB0eXBlZGVmIGNvbnN0IEEmIHR5cGU7IAotfTsKLXRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEIsIGludCBOPiBzdHJ1Y3Qgc3Vic2NyaXB0X3R5cGU8dm9sYXRpbGUgQVtOXSwgQj4geyAKLSAgdHlwZWRlZiB2b2xhdGlsZSBBJiB0eXBlOyAKLX07Ci10ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCLCBpbnQgTj4gc3RydWN0IHN1YnNjcmlwdF90eXBlPGNvbnN0IHZvbGF0aWxlIEFbTl0sIEI+IHsgCi0gIHR5cGVkZWYgY29uc3Qgdm9sYXRpbGUgQSYgdHlwZTsgCi19OwotCi19IC8vIGVuZCBkZXRhaWwKLQotdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQj4KLXN0cnVjdCByZXR1cm5fdHlwZV8yPG90aGVyX2FjdGlvbjxzdWJzY3JpcHRfYWN0aW9uPiwgQSwgQj4gewotCi0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxBPjo6dHlwZSBwbGFpbl9BOwotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8Qj46OnR5cGUgcGxhaW5fQjsKLQotICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfcmVmZXJlbmNlPEE+Ojp0eXBlIG5vbnJlZl9BOwotICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfcmVmZXJlbmNlPEI+Ojp0eXBlIG5vbnJlZl9COwotCi0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgcGxhaW5fcmV0dXJuX3R5cGVfMjwKLSAgICAgIG90aGVyX2FjdGlvbjxzdWJzY3JpcHRfYWN0aW9uPiwgcGxhaW5fQSwgcGxhaW5fQgotICAgID46OnR5cGUgdHlwZTE7Ci0gIAotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgIGRldGFpbDo6SUZfdHlwZTwKLSAgICAgIG5kbmJvb3N0Ojppc19zYW1lPHR5cGUxLCBkZXRhaWw6OnVuc3BlY2lmaWVkPjo6dmFsdWUsIAotICAgICAgZGV0YWlsOjpzdWJzY3JpcHRfdHlwZTxub25yZWZfQSwgbm9ucmVmX0I+LAotICAgICAgcGxhaW5fcmV0dXJuX3R5cGVfMjxvdGhlcl9hY3Rpb248c3Vic2NyaXB0X2FjdGlvbj4sIHBsYWluX0EsIHBsYWluX0I+Ci0gICAgPjo6dHlwZSB0eXBlOwotCi19OwotCi10ZW1wbGF0ZTxjbGFzcyBLZXksIGNsYXNzIFQsIGNsYXNzIENtcCwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyBCPiAKLXN0cnVjdCBwbGFpbl9yZXR1cm5fdHlwZV8yPG90aGVyX2FjdGlvbjxzdWJzY3JpcHRfYWN0aW9uPiwgc3RkOjptYXA8S2V5LCBULCBDbXAsIEFsbG9jYXRvcj4sIEI+IHsgCi0gIHR5cGVkZWYgVCYgdHlwZTsKLSAgLy8gVCA9PSBzdGQ6Om1hcDxLZXksIFQsIENtcCwgQWxsb2NhdG9yPjo6bWFwcGVkX3R5cGU7IAotfTsKLQotdGVtcGxhdGU8Y2xhc3MgS2V5LCBjbGFzcyBULCBjbGFzcyBDbXAsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgQj4gCi1zdHJ1Y3QgcGxhaW5fcmV0dXJuX3R5cGVfMjxvdGhlcl9hY3Rpb248c3Vic2NyaXB0X2FjdGlvbj4sIHN0ZDo6bXVsdGltYXA8S2V5LCBULCBDbXAsIEFsbG9jYXRvcj4sIEI+IHsgCi0gIHR5cGVkZWYgVCYgdHlwZTsKLSAgLy8gVCA9PSBzdGQ6Om1hcDxLZXksIFQsIENtcCwgQWxsb2NhdG9yPjo6bWFwcGVkX3R5cGU7IAotfTsKLQotICAvLyBkZXF1ZQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyBCPiAKLXN0cnVjdCBwbGFpbl9yZXR1cm5fdHlwZV8yPG90aGVyX2FjdGlvbjxzdWJzY3JpcHRfYWN0aW9uPiwgc3RkOjpkZXF1ZTxULCBBbGxvY2F0b3I+LCBCPiB7IAotICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6ZGVxdWU8VCwgQWxsb2NhdG9yPjo6cmVmZXJlbmNlIHR5cGU7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyBCPiAKLXN0cnVjdCBwbGFpbl9yZXR1cm5fdHlwZV8yPG90aGVyX2FjdGlvbjxzdWJzY3JpcHRfYWN0aW9uPiwgY29uc3Qgc3RkOjpkZXF1ZTxULCBBbGxvY2F0b3I+LCBCPiB7IAotICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6ZGVxdWU8VCwgQWxsb2NhdG9yPjo6Y29uc3RfcmVmZXJlbmNlIHR5cGU7Ci19OwotCi0gIC8vIHZlY3RvcgotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyBCPiAKLXN0cnVjdCBwbGFpbl9yZXR1cm5fdHlwZV8yPG90aGVyX2FjdGlvbjxzdWJzY3JpcHRfYWN0aW9uPiwgc3RkOjp2ZWN0b3I8VCwgQWxsb2NhdG9yPiwgQj4geyAKLSAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6OnZlY3RvcjxULCBBbGxvY2F0b3I+OjpyZWZlcmVuY2UgdHlwZTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIEI+IAotc3RydWN0IHBsYWluX3JldHVybl90eXBlXzI8b3RoZXJfYWN0aW9uPHN1YnNjcmlwdF9hY3Rpb24+LCBjb25zdCBzdGQ6OnZlY3RvcjxULCBBbGxvY2F0b3I+LCBCPiB7IAotICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6dmVjdG9yPFQsIEFsbG9jYXRvcj46OmNvbnN0X3JlZmVyZW5jZSB0eXBlOwotfTsKLQotICAvLyBiYXNpY19zdHJpbmcKLXRlbXBsYXRlPGNsYXNzIENoYXIsIGNsYXNzIFRyYWl0cywgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyBCPiAKLXN0cnVjdCBwbGFpbl9yZXR1cm5fdHlwZV8yPG90aGVyX2FjdGlvbjxzdWJzY3JpcHRfYWN0aW9uPiwgc3RkOjpiYXNpY19zdHJpbmc8Q2hhciwgVHJhaXRzLCBBbGxvY2F0b3I+LCBCPiB7IAotICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6YmFzaWNfc3RyaW5nPENoYXIsIFRyYWl0cywgQWxsb2NhdG9yPjo6cmVmZXJlbmNlIHR5cGU7Ci19OwotdGVtcGxhdGU8Y2xhc3MgQ2hhciwgY2xhc3MgVHJhaXRzLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIEI+IAotc3RydWN0IHBsYWluX3JldHVybl90eXBlXzI8b3RoZXJfYWN0aW9uPHN1YnNjcmlwdF9hY3Rpb24+LCBjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxDaGFyLCBUcmFpdHMsIEFsbG9jYXRvcj4sIEI+IHsgCi0gIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjpiYXNpY19zdHJpbmc8Q2hhciwgVHJhaXRzLCBBbGxvY2F0b3I+Ojpjb25zdF9yZWZlcmVuY2UgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIENoYXIsIGNsYXNzIFRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPiAKLXN0cnVjdCBwbGFpbl9yZXR1cm5fdHlwZV8yPGFyaXRobWV0aWNfYWN0aW9uPHBsdXNfYWN0aW9uPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6YmFzaWNfc3RyaW5nPENoYXIsIFRyYWl0cywgQWxsb2NhdG9yPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6YmFzaWNfc3RyaW5nPENoYXIsIFRyYWl0cywgQWxsb2NhdG9yPiA+IHsgCi0gIHR5cGVkZWYgc3RkOjpiYXNpY19zdHJpbmc8Q2hhciwgVHJhaXRzLCBBbGxvY2F0b3I+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBDaGFyLCBjbGFzcyBUcmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4gCi1zdHJ1Y3QgcGxhaW5fcmV0dXJuX3R5cGVfMjxhcml0aG1ldGljX2FjdGlvbjxwbHVzX2FjdGlvbj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDaGFyKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6YmFzaWNfc3RyaW5nPENoYXIsIFRyYWl0cywgQWxsb2NhdG9yPiA+IHsgCi0gIHR5cGVkZWYgc3RkOjpiYXNpY19zdHJpbmc8Q2hhciwgVHJhaXRzLCBBbGxvY2F0b3I+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBDaGFyLCBjbGFzcyBUcmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4gCi1zdHJ1Y3QgcGxhaW5fcmV0dXJuX3R5cGVfMjxhcml0aG1ldGljX2FjdGlvbjxwbHVzX2FjdGlvbj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmJhc2ljX3N0cmluZzxDaGFyLCBUcmFpdHMsIEFsbG9jYXRvcj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDaGFyKj4geyAKLSAgdHlwZWRlZiBzdGQ6OmJhc2ljX3N0cmluZzxDaGFyLCBUcmFpdHMsIEFsbG9jYXRvcj4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIENoYXIsIGNsYXNzIFRyYWl0cywgY2xhc3MgQWxsb2NhdG9yLCBzdGQ6OnNpemVfdCBOPiAKLXN0cnVjdCBwbGFpbl9yZXR1cm5fdHlwZV8yPGFyaXRobWV0aWNfYWN0aW9uPHBsdXNfYWN0aW9uPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJbTl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmJhc2ljX3N0cmluZzxDaGFyLCBUcmFpdHMsIEFsbG9jYXRvcj4gPiB7IAotICB0eXBlZGVmIHN0ZDo6YmFzaWNfc3RyaW5nPENoYXIsIFRyYWl0cywgQWxsb2NhdG9yPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQ2hhciwgY2xhc3MgVHJhaXRzLCBjbGFzcyBBbGxvY2F0b3IsIHN0ZDo6c2l6ZV90IE4+IAotc3RydWN0IHBsYWluX3JldHVybl90eXBlXzI8YXJpdGhtZXRpY19hY3Rpb248cGx1c19hY3Rpb24+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpiYXNpY19zdHJpbmc8Q2hhciwgVHJhaXRzLCBBbGxvY2F0b3I+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hhcltOXT4geyAKLSAgdHlwZWRlZiBzdGQ6OmJhc2ljX3N0cmluZzxDaGFyLCBUcmFpdHMsIEFsbG9jYXRvcj4gdHlwZTsKLX07Ci0KLQotfSAvLyBuYW1lc3BhY2UgbGFtYmRhCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvb3BlcmF0b3JzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9vcGVyYXRvcnMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYWM5YTQ4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9vcGVyYXRvcnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzcwICswLDAgQEAKLS8vIEJvb3N0IExhbWJkYSBMaWJyYXJ5IC0gb3BlcmF0b3JzLmhwcCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAgSmFha2tvIEphcnZpIChqYWFra28uamFydmlAY3MudXR1LmZpKQotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHd3dy5ib29zdC5vcmcKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZm5kZWYgTkROQk9PU1RfTEFNQkRBX09QRVJBVE9SU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX09QRVJBVE9SU19IUFAKLQotI2luY2x1ZGUgIm5kbmJvb3N0L2xhbWJkYS9kZXRhaWwvaXNfaW5zdGFuY2Vfb2YuaHBwIgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyAKLW5hbWVzcGFjZSBsYW1iZGEgewotCi0jaWYgZGVmaW5lZCBORE5CT09TVF9MQU1CREFfQkUxCi0jZXJyb3IgIk11bHRpcGxlIGRlZmluZXMgb2YgTkROQk9PU1RfTEFNQkRBX0JFMSIKLSNlbmRpZgotCi0gIC8vIEZvciBhbGwgQk9PU1RBX0xBTUJEQV9CRSogbWFjcm9zOgotCi0gIC8vIENPTlNUQSBtdXN0IGJlIGVpdGhlciAnQScgb3IgJ2NvbnN0IEEnCi0gIC8vIENPTlNUQiBtdXN0IGJlIGVpdGhlciAnQicgb3IgJ2NvbnN0IEInCi0KLSAgLy8gSXQgaXMgc3R1cGlkIHRvIGhhdmUgdGhlIG5hbWVzIEEgYW5kIEIgYXMgbWFjcm8gYXJndW1lbnRzLCBidXQgaXQgYXZvaWRzCi0gIC8vIHRoZSBuZWVkIHRvIHBhc3MgaW4gZW10cHkgbWFjcm8gYXJndW1lbnRzLCB3aGljaCBnaXZlcyB3YXJuaW5ncyBvbiBzb21lCi0gIC8vIGNvbXBpbGVycwotCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9CRTEoT1BFUl9OQU1FLCBBQ1RJT04sIENPTlNUQSwgQ09OU1RCLCBDT05WRVJTSU9OKSAgICAgIFwKLXRlbXBsYXRlPGNsYXNzIEFyZywgY2xhc3MgQj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotaW5saW5lIGNvbnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1sYW1iZGFfZnVuY3RvcjwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIEFDVElPTiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdHVwbGU8bGFtYmRhX2Z1bmN0b3I8QXJnPiwgdHlwZW5hbWUgY29uc3RfY29weV9hcmd1bWVudCA8Q09OU1RCPjo6dHlwZT4gIFwKLSAgPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1PUEVSX05BTUUgKGNvbnN0IGxhbWJkYV9mdW5jdG9yPEFyZz4mIGEsIENPTlNUQiYgYikgeyAgICAgICAgICAgICAgICAgICAgICBcCi0gIHJldHVybiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgQUNUSU9OLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICB0dXBsZTxsYW1iZGFfZnVuY3RvcjxBcmc+LCB0eXBlbmFtZSBjb25zdF9jb3B5X2FyZ3VtZW50IDxDT05TVEI+Ojp0eXBlPlwKLSAgICA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKHR1cGxlPGxhbWJkYV9mdW5jdG9yPEFyZz4sIHR5cGVuYW1lIGNvbnN0X2NvcHlfYXJndW1lbnQgPENPTlNUQj46OnR5cGU+KGEsIGIpKTsgXAotfQotCi0KLSNpZiBkZWZpbmVkIE5ETkJPT1NUX0xBTUJEQV9CRTIKLSNlcnJvciAiTXVsdGlwbGUgZGVmaW5lcyBvZiBORE5CT09TVF9MQU1CREFfQkUyIgotI2VuZGlmCi0KLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX0JFMihPUEVSX05BTUUsIEFDVElPTiwgQ09OU1RBLCBDT05TVEIsIENPTlZFUlNJT04pICAgICAgXAotdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQXJnPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1pbmxpbmUgY29uc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLWxhbWJkYV9mdW5jdG9yPCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgQUNUSU9OLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0dXBsZTx0eXBlbmFtZSBDT05WRVJTSU9OIDxDT05TVEE+Ojp0eXBlLCBsYW1iZGFfZnVuY3RvcjxBcmc+ID4gICAgICAgIFwKLSAgPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1PUEVSX05BTUUgKENPTlNUQSYgYSwgY29uc3QgbGFtYmRhX2Z1bmN0b3I8QXJnPiYgYikgeyAgICAgICAgICAgICAgICAgICAgICBcCi0gIHJldHVybiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgQUNUSU9OLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICB0dXBsZTx0eXBlbmFtZSBDT05WRVJTSU9OIDxDT05TVEE+Ojp0eXBlLCBsYW1iZGFfZnVuY3RvcjxBcmc+ID4gICAgICBcCi0gICAgPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgKHR1cGxlPHR5cGVuYW1lIENPTlZFUlNJT04gPENPTlNUQT46OnR5cGUsIGxhbWJkYV9mdW5jdG9yPEFyZz4gPihhLCBiKSk7IFwKLX0KLQotCi0jaWYgZGVmaW5lZCBORE5CT09TVF9MQU1CREFfQkUzCi0jZXJyb3IgIk11bHRpcGxlIGRlZmluZXMgb2YgTkROQk9PU1RfTEFNQkRBX0JFMyIKLSNlbmRpZgotCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9CRTMoT1BFUl9OQU1FLCBBQ1RJT04sIENPTlNUQSwgQ09OU1RCLCBDT05WRVJTSU9OKSAgICBcCi10ZW1wbGF0ZTxjbGFzcyBBcmdBLCBjbGFzcyBBcmdCPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1pbmxpbmUgY29uc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1sYW1iZGFfZnVuY3RvcjwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgQUNUSU9OLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdHVwbGU8bGFtYmRhX2Z1bmN0b3I8QXJnQT4sIGxhbWJkYV9mdW5jdG9yPEFyZ0I+ID4gICAgICAgICAgICAgICAgICAgICBcCi0gID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1PUEVSX05BTUUgKGNvbnN0IGxhbWJkYV9mdW5jdG9yPEFyZ0E+JiBhLCBjb25zdCBsYW1iZGFfZnVuY3RvcjxBcmdCPiYgYikgeyBcCi0gIHJldHVybiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICBBQ1RJT04sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICB0dXBsZTxsYW1iZGFfZnVuY3RvcjxBcmdBPiwgbGFtYmRhX2Z1bmN0b3I8QXJnQj4gPiAgICAgICAgICAgICAgICAgICBcCi0gICAgPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICh0dXBsZTxsYW1iZGFfZnVuY3RvcjxBcmdBPiwgbGFtYmRhX2Z1bmN0b3I8QXJnQj4gPihhLCBiKSk7ICAgICAgICAgICAgICBcCi19Ci0KLSNpZiBkZWZpbmVkIE5ETkJPT1NUX0xBTUJEQV9CRQotI2Vycm9yICJNdWx0aXBsZSBkZWZpbmVzIG9mIE5ETkJPT1NUX0xBTUJEQV9CRSIKLSNlbmRpZgotCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9CRShPUEVSX05BTUUsIEFDVElPTiwgQ09OU1RBLCBDT05TVEIsIENPTlNUX0NPTlZFUlNJT04pIFwKLU5ETkJPT1NUX0xBTUJEQV9CRTEoT1BFUl9OQU1FLCBBQ1RJT04sIENPTlNUQSwgQ09OU1RCLCBDT05TVF9DT05WRVJTSU9OKSAgICAgICAgXAotTkROQk9PU1RfTEFNQkRBX0JFMihPUEVSX05BTUUsIEFDVElPTiwgQ09OU1RBLCBDT05TVEIsIENPTlNUX0NPTlZFUlNJT04pICAgICAgICBcCi1ORE5CT09TVF9MQU1CREFfQkUzKE9QRVJfTkFNRSwgQUNUSU9OLCBDT05TVEEsIENPTlNUQiwgQ09OU1RfQ09OVkVSU0lPTikKLQotI2RlZmluZSBORE5CT09TVF9MQU1CREFfRU1QVFkoKSAKLQotTkROQk9PU1RfTEFNQkRBX0JFKG9wZXJhdG9yKywgYXJpdGhtZXRpY19hY3Rpb248cGx1c19hY3Rpb24+LCBjb25zdCBBLCBjb25zdCBCLCBjb25zdF9jb3B5X2FyZ3VtZW50KQotTkROQk9PU1RfTEFNQkRBX0JFKG9wZXJhdG9yLSwgYXJpdGhtZXRpY19hY3Rpb248bWludXNfYWN0aW9uPiwgY29uc3QgQSwgY29uc3QgQiwgY29uc3RfY29weV9hcmd1bWVudCkKLU5ETkJPT1NUX0xBTUJEQV9CRShvcGVyYXRvciosIGFyaXRobWV0aWNfYWN0aW9uPG11bHRpcGx5X2FjdGlvbj4sIGNvbnN0IEEsIGNvbnN0IEIsIGNvbnN0X2NvcHlfYXJndW1lbnQpCi1ORE5CT09TVF9MQU1CREFfQkUob3BlcmF0b3IvLCBhcml0aG1ldGljX2FjdGlvbjxkaXZpZGVfYWN0aW9uPiwgY29uc3QgQSwgY29uc3QgQiwgY29uc3RfY29weV9hcmd1bWVudCkKLU5ETkJPT1NUX0xBTUJEQV9CRShvcGVyYXRvciUsIGFyaXRobWV0aWNfYWN0aW9uPHJlbWFpbmRlcl9hY3Rpb24+LCBjb25zdCBBLCBjb25zdCBCLCBjb25zdF9jb3B5X2FyZ3VtZW50KQotTkROQk9PU1RfTEFNQkRBX0JFKG9wZXJhdG9yPDwsIGJpdHdpc2VfYWN0aW9uPGxlZnRzaGlmdF9hY3Rpb24+LCBjb25zdCBBLCBjb25zdCBCLCBjb25zdF9jb3B5X2FyZ3VtZW50KQotTkROQk9PU1RfTEFNQkRBX0JFKG9wZXJhdG9yPj4sIGJpdHdpc2VfYWN0aW9uPHJpZ2h0c2hpZnRfYWN0aW9uPiwgY29uc3QgQSwgY29uc3QgQiwgY29uc3RfY29weV9hcmd1bWVudCkKLU5ETkJPT1NUX0xBTUJEQV9CRShvcGVyYXRvciYsIGJpdHdpc2VfYWN0aW9uPGFuZF9hY3Rpb24+LCBjb25zdCBBLCBjb25zdCBCLCBjb25zdF9jb3B5X2FyZ3VtZW50KQotTkROQk9PU1RfTEFNQkRBX0JFKG9wZXJhdG9yfCwgYml0d2lzZV9hY3Rpb248b3JfYWN0aW9uPiwgY29uc3QgQSwgY29uc3QgQiwgY29uc3RfY29weV9hcmd1bWVudCkKLU5ETkJPT1NUX0xBTUJEQV9CRShvcGVyYXRvcl4sIGJpdHdpc2VfYWN0aW9uPHhvcl9hY3Rpb24+LCBjb25zdCBBLCBjb25zdCBCLCBjb25zdF9jb3B5X2FyZ3VtZW50KQotTkROQk9PU1RfTEFNQkRBX0JFKG9wZXJhdG9yJiYsIGxvZ2ljYWxfYWN0aW9uPGFuZF9hY3Rpb24+LCBjb25zdCBBLCBjb25zdCBCLCBjb25zdF9jb3B5X2FyZ3VtZW50KQotTkROQk9PU1RfTEFNQkRBX0JFKG9wZXJhdG9yfHwsIGxvZ2ljYWxfYWN0aW9uPG9yX2FjdGlvbj4sIGNvbnN0IEEsIGNvbnN0IEIsIGNvbnN0X2NvcHlfYXJndW1lbnQpCi1ORE5CT09TVF9MQU1CREFfQkUob3BlcmF0b3I8LCByZWxhdGlvbmFsX2FjdGlvbjxsZXNzX2FjdGlvbj4sIGNvbnN0IEEsIGNvbnN0IEIsIGNvbnN0X2NvcHlfYXJndW1lbnQpCi1ORE5CT09TVF9MQU1CREFfQkUob3BlcmF0b3I+LCByZWxhdGlvbmFsX2FjdGlvbjxncmVhdGVyX2FjdGlvbj4sIGNvbnN0IEEsIGNvbnN0IEIsIGNvbnN0X2NvcHlfYXJndW1lbnQpCi1ORE5CT09TVF9MQU1CREFfQkUob3BlcmF0b3I8PSwgcmVsYXRpb25hbF9hY3Rpb248bGVzc29yZXF1YWxfYWN0aW9uPiwgY29uc3QgQSwgY29uc3QgQiwgY29uc3RfY29weV9hcmd1bWVudCkKLU5ETkJPT1NUX0xBTUJEQV9CRShvcGVyYXRvcj49LCByZWxhdGlvbmFsX2FjdGlvbjxncmVhdGVyb3JlcXVhbF9hY3Rpb24+LCBjb25zdCBBLCBjb25zdCBCLCBjb25zdF9jb3B5X2FyZ3VtZW50KQotTkROQk9PU1RfTEFNQkRBX0JFKG9wZXJhdG9yPT0sIHJlbGF0aW9uYWxfYWN0aW9uPGVxdWFsX2FjdGlvbj4sIGNvbnN0IEEsIGNvbnN0IEIsIGNvbnN0X2NvcHlfYXJndW1lbnQpCi1ORE5CT09TVF9MQU1CREFfQkUob3BlcmF0b3IhPSwgcmVsYXRpb25hbF9hY3Rpb248bm90ZXF1YWxfYWN0aW9uPiwgY29uc3QgQSwgY29uc3QgQiwgY29uc3RfY29weV9hcmd1bWVudCkKLQotTkROQk9PU1RfTEFNQkRBX0JFKG9wZXJhdG9yKz0sIGFyaXRobWV0aWNfYXNzaWdubWVudF9hY3Rpb248cGx1c19hY3Rpb24+LCBBLCBjb25zdCBCLCByZWZlcmVuY2VfYXJndW1lbnQpCi1ORE5CT09TVF9MQU1CREFfQkUob3BlcmF0b3ItPSwgYXJpdGhtZXRpY19hc3NpZ25tZW50X2FjdGlvbjxtaW51c19hY3Rpb24+LCBBLCBjb25zdCBCLCByZWZlcmVuY2VfYXJndW1lbnQpCi1ORE5CT09TVF9MQU1CREFfQkUob3BlcmF0b3IqPSwgYXJpdGhtZXRpY19hc3NpZ25tZW50X2FjdGlvbjxtdWx0aXBseV9hY3Rpb24+LCBBLCBjb25zdCBCLCByZWZlcmVuY2VfYXJndW1lbnQpCi1ORE5CT09TVF9MQU1CREFfQkUob3BlcmF0b3IvPSwgYXJpdGhtZXRpY19hc3NpZ25tZW50X2FjdGlvbjxkaXZpZGVfYWN0aW9uPiwgQSwgY29uc3QgQiwgcmVmZXJlbmNlX2FyZ3VtZW50KQotTkROQk9PU1RfTEFNQkRBX0JFKG9wZXJhdG9yJT0sIGFyaXRobWV0aWNfYXNzaWdubWVudF9hY3Rpb248cmVtYWluZGVyX2FjdGlvbj4sIEEsIGNvbnN0IEIsIHJlZmVyZW5jZV9hcmd1bWVudCkKLU5ETkJPT1NUX0xBTUJEQV9CRShvcGVyYXRvcjw8PSwgYml0d2lzZV9hc3NpZ25tZW50X2FjdGlvbjxsZWZ0c2hpZnRfYWN0aW9uPiwgQSwgY29uc3QgQiwgcmVmZXJlbmNlX2FyZ3VtZW50KQotTkROQk9PU1RfTEFNQkRBX0JFKG9wZXJhdG9yPj49LCBiaXR3aXNlX2Fzc2lnbm1lbnRfYWN0aW9uPHJpZ2h0c2hpZnRfYWN0aW9uPiwgQSwgY29uc3QgQiwgcmVmZXJlbmNlX2FyZ3VtZW50KQotTkROQk9PU1RfTEFNQkRBX0JFKG9wZXJhdG9yJj0sIGJpdHdpc2VfYXNzaWdubWVudF9hY3Rpb248YW5kX2FjdGlvbj4sIEEsIGNvbnN0IEIsIHJlZmVyZW5jZV9hcmd1bWVudCkKLU5ETkJPT1NUX0xBTUJEQV9CRShvcGVyYXRvcnw9LCBiaXR3aXNlX2Fzc2lnbm1lbnRfYWN0aW9uPG9yX2FjdGlvbj4sIEEsIGNvbnN0IEIsIHJlZmVyZW5jZV9hcmd1bWVudCkKLU5ETkJPT1NUX0xBTUJEQV9CRShvcGVyYXRvcl49LCBiaXR3aXNlX2Fzc2lnbm1lbnRfYWN0aW9uPHhvcl9hY3Rpb24+LCBBLCBjb25zdCBCLCByZWZlcmVuY2VfYXJndW1lbnQpCi0KLQotLy8gQSBzcGVjaWFsIHRyaWNrIGZvciBjb21tYSBvcGVyYXRvciBmb3IgY29ycmVjdCBwcmVwcm9jZXNzaW5nCi0jaWYgZGVmaW5lZCBORE5CT09TVF9MQU1CREFfQ09NTUFfT1BFUkFUT1JfTkFNRQotI2Vycm9yICJNdWx0aXBsZSBkZWZpbmVzIG9mIE5ETkJPT1NUX0xBTUJEQV9DT01NQV9PUEVSQVRPUl9OQU1FIgotI2VuZGlmCi0KLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX0NPTU1BX09QRVJBVE9SX05BTUUgb3BlcmF0b3IsCi0KLU5ETkJPT1NUX0xBTUJEQV9CRTEoTkROQk9PU1RfTEFNQkRBX0NPTU1BX09QRVJBVE9SX05BTUUsIG90aGVyX2FjdGlvbjxjb21tYV9hY3Rpb24+LCBjb25zdCBBLCBjb25zdCBCLCBjb25zdF9jb3B5X2FyZ3VtZW50KQotTkROQk9PU1RfTEFNQkRBX0JFMihORE5CT09TVF9MQU1CREFfQ09NTUFfT1BFUkFUT1JfTkFNRSwgb3RoZXJfYWN0aW9uPGNvbW1hX2FjdGlvbj4sIGNvbnN0IEEsIGNvbnN0IEIsIGNvbnN0X2NvcHlfYXJndW1lbnQpCi1ORE5CT09TVF9MQU1CREFfQkUzKE5ETkJPT1NUX0xBTUJEQV9DT01NQV9PUEVSQVRPUl9OQU1FLCBvdGhlcl9hY3Rpb248Y29tbWFfYWN0aW9uPiwgY29uc3QgQSwgY29uc3QgQiwgY29uc3RfY29weV9hcmd1bWVudCkKLQotCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyBzcGVjaWFsIGNhc2VzIGZvciBvc3RyZWFtJiA8PCBBbnkgYW5kIGlzdHJlYW0mID4+IEFueSAtLS0tLS0tLS0tLS0tLS0KLS8vIHRoZSBhY3R1YWwgc3RyZWFtIGNsYXNzZXMgbWF5IHZhcnkgYW5kIHRodXMgYSBzcGVjaWFsaXNhdGlvbiBmb3IsIAotLy8gc2F5IG9zdHJlYW0mIGRvZXMgbm90IG1hdGNoICh0aGUgZ2VuZXJhbCBjYXNlIGFib3ZlIGlzIGNob3NlbikuIAotLy8gVGhlcmVmb3JlIHdlIHNwZWNpYWxpc2UgZm9yIG5vbi1jb25zdCByZWZlcmVuY2U6Ci0vLyBpZiB0aGUgbGVmdCBhcmd1bWVudCBpcyBhIHN0cmVhbSwgd2Ugc3RvcmUgdGhlIHN0cmVhbSBhcyByZWZlcmVuY2UKLS8vIGlmIGl0IGlzIHNvbWV0aGluZyBlbHNlLCB3ZSBzdG9yZSBhIGNvbnN0IHBsYWluIGJ5IGRlZmF1bHQKLQotLy8gTm90ZSB0aGF0IHRoZSBvdmVybG9hZGluZyBpcyBjb25zdCB2cy4gbm9uLWNvbnN0IGZpcnN0IGFyZ3VtZW50Ci0KLSNpZmRlZiBORE5CT09TVF9OT19URU1QTEFURURfU1RSRUFNUwotdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IGNvbnZlcnRfb3N0cmVhbV90b19yZWZfb3RoZXJzX3RvX2NfcGxhaW5fYnlfZGVmYXVsdCB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpJRjwKLSAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX2NvbnZlcnRpYmxlPFQqLCBzdGQ6Om9zdHJlYW0qPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgIFQmLAotICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBjb25zdF9jb3B5X2FyZ3VtZW50IDxUPjo6dHlwZQotICAgICAgICAgICAgICAgICAgICAgPjo6UkVUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3QgY29udmVydF9pc3RyZWFtX3RvX3JlZl9vdGhlcnNfdG9fY19wbGFpbl9ieV9kZWZhdWx0IHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OklGPAotICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6aXNfY29udmVydGlibGU8VCosIHN0ZDo6aXN0cmVhbSo+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgVCYsCi0gICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIGNvbnN0X2NvcHlfYXJndW1lbnQgPFQ+Ojp0eXBlCi0gICAgICAgICAgICAgICAgICAgICA+OjpSRVQgdHlwZTsKLX07Ci0jZWxzZQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3QgY29udmVydF9vc3RyZWFtX3RvX3JlZl9vdGhlcnNfdG9fY19wbGFpbl9ieV9kZWZhdWx0IHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OklGPAotICAgICAgICAgICAgICAgICAgICAgICBpc19pbnN0YW5jZV9vZl8yPAotICAgICAgICAgICAgICAgICAgICAgICAgIFQsIHN0ZDo6YmFzaWNfb3N0cmVhbQotICAgICAgICAgICAgICAgICAgICAgICA+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgVCYsCi0gICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIGNvbnN0X2NvcHlfYXJndW1lbnQgPFQ+Ojp0eXBlCi0gICAgICAgICAgICAgICAgICAgICA+OjpSRVQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBjb252ZXJ0X2lzdHJlYW1fdG9fcmVmX290aGVyc190b19jX3BsYWluX2J5X2RlZmF1bHQgewotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6SUY8Ci0gICAgICAgICAgICAgICAgICAgICAgIGlzX2luc3RhbmNlX29mXzI8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgVCwgc3RkOjpiYXNpY19pc3RyZWFtCi0gICAgICAgICAgICAgICAgICAgICAgID46OnZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICBUJiwKLSAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgY29uc3RfY29weV9hcmd1bWVudCA8VD46OnR5cGUKLSAgICAgICAgICAgICAgICAgICAgID46OlJFVCB0eXBlOwotfTsKLSNlbmRpZgotCi19IC8vIGRldGFpbAotCi1ORE5CT09TVF9MQU1CREFfQkUyKG9wZXJhdG9yPDwsIGJpdHdpc2VfYWN0aW9uPCBsZWZ0c2hpZnRfYWN0aW9uPiwgQSwgY29uc3QgQiwgZGV0YWlsOjpjb252ZXJ0X29zdHJlYW1fdG9fcmVmX290aGVyc190b19jX3BsYWluX2J5X2RlZmF1bHQpCi1ORE5CT09TVF9MQU1CREFfQkUyKG9wZXJhdG9yPj4sIGJpdHdpc2VfYWN0aW9uPCByaWdodHNoaWZ0X2FjdGlvbj4sIEEsIGNvbnN0IEIsIGRldGFpbDo6Y29udmVydF9pc3RyZWFtX3RvX3JlZl9vdGhlcnNfdG9fY19wbGFpbl9ieV9kZWZhdWx0KSAgICAgIAotCi0KLS8vIHNwZWNpYWwgY2FzZSBmb3IgaW9fbWFuaXB1bGF0b3JzLgotLy8gZnVuY3Rpb24gcmVmZXJlbmNlcyBjYW5ub3QgYmUgZ2l2ZW4gYXMgYXJndW1lbnRzIHRvIGxhbWJkYSBvcGVyYXRvcgotLy8gZXhwcmVzc2lvbnMgaW4gZ2VuZXJhbC4gV2l0aCA8PCBhbmQgPj4gdGhlIHVzZSBvZiBtYW5pcHVsYXRvcnMgaXMKLS8vIHNvIGNvbW1vbiwgdGhhdCBzcGVjaWFsaXphdGlvbnMgYXJlIHByb3ZpZGVkIHRvIG1ha2UgdGhlbSB3b3JrLgotCi10ZW1wbGF0ZTxjbGFzcyBBcmcsIGNsYXNzIFJldCwgY2xhc3MgTWFuaXBBcmc+Ci1pbmxpbmUgY29uc3QgCi1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBiaXR3aXNlX2FjdGlvbjxsZWZ0c2hpZnRfYWN0aW9uPiwKLSAgICB0dXBsZTxsYW1iZGFfZnVuY3RvcjxBcmc+LCBSZXQoJikoTWFuaXBBcmcpPiAKLSAgPiAKLT4KLW9wZXJhdG9yPDwoY29uc3QgbGFtYmRhX2Z1bmN0b3I8QXJnPiYgYSwgUmV0KCZiKShNYW5pcEFyZykpCi17Ci0gIHJldHVybiAKLSAgICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICAgIGJpdHdpc2VfYWN0aW9uPGxlZnRzaGlmdF9hY3Rpb24+LAotICAgICAgICB0dXBsZTxsYW1iZGFfZnVuY3RvcjxBcmc+LCBSZXQoJikoTWFuaXBBcmcpPgotICAgICAgPiAKLSAgICAoIHR1cGxlPGxhbWJkYV9mdW5jdG9yPEFyZz4sIFJldCgmKShNYW5pcEFyZyk+KGEsIGIpICk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIEFyZywgY2xhc3MgUmV0LCBjbGFzcyBNYW5pcEFyZz4KLWlubGluZSBjb25zdCAKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGJpdHdpc2VfYWN0aW9uPHJpZ2h0c2hpZnRfYWN0aW9uPiwKLSAgICB0dXBsZTxsYW1iZGFfZnVuY3RvcjxBcmc+LCBSZXQoJikoTWFuaXBBcmcpPgotICA+IAotPgotb3BlcmF0b3I+Pihjb25zdCBsYW1iZGFfZnVuY3RvcjxBcmc+JiBhLCBSZXQoJmIpKE1hbmlwQXJnKSkKLXsKLSAgcmV0dXJuIAotICAgICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgICAgYml0d2lzZV9hY3Rpb248cmlnaHRzaGlmdF9hY3Rpb24+LAotICAgICAgICB0dXBsZTxsYW1iZGFfZnVuY3RvcjxBcmc+LCBSZXQoJikoTWFuaXBBcmcpPgotICAgICAgPiAKLSAgICAoIHR1cGxlPGxhbWJkYV9mdW5jdG9yPEFyZz4sIFJldCgmKShNYW5pcEFyZyk+KGEsIGIpICk7Ci19Ci0KLQotLy8gKCsgYW5kIC0pIHRha2UgdGhlaXIgYXJndW1lbnRzIGFzIGNvbnN0IHJlZmVyZW5jZXMuIAotLy8gVGhpcyBoYXMgY29uc3F1ZW5jZXMgd2l0aCBwb2ludGVyIGFydGlobWV0aWMKLS8vIEUuZyBpbnQgYVtdOyAuLi4gKmEgPSAxIHdvcmtzIGJ1dCBub3QgKihhKzEpID0gMS4gCi0vLyB0aGUgcmVzdWx0IG9mIGErMSB3b3VsZCBiZSBjb25zdAotLy8gVG8gbWFrZSB0aGUgbGF0dGVyIHdvcmsgdG9vLCAKLS8vIG5vbi1jb25zdCBhcnJheXMgYXJlIHRha2VuIGFzIG5vbi1jb25zdCBhbmQgc3RvcmVkIGFzIG5vbi1jb25zdCBhcyB3ZWxsLgotI2lmIGRlZmluZWQgIE5ETkJPT1NUX0xBTUJEQV9QVFJfQVJJVEhNRVRJQ19FMQotI2Vycm9yICJNdWx0aXBsZSBkZWZpbmVzIG9mICBORE5CT09TVF9MQU1CREFfUFRSX0FSSVRITUVUSUNfRTEiCi0jZW5kaWYKLQotI2RlZmluZSBORE5CT09TVF9MQU1CREFfUFRSX0FSSVRITUVUSUNfRTEoT1BFUl9OQU1FLCBBQ1RJT04sIENPTlNUQikgICAgICAgICAgIFwKLXRlbXBsYXRlPGNsYXNzIEFyZywgaW50IE4sIGNsYXNzIEI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1pbmxpbmUgY29uc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotbGFtYmRhX2Z1bmN0b3I8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTxBQ1RJT04sIHR1cGxlPGxhbWJkYV9mdW5jdG9yPEFyZz4sIENPTlNUQigmKVtOXT4gPiAgICBcCi0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotT1BFUl9OQU1FIChjb25zdCBsYW1iZGFfZnVuY3RvcjxBcmc+JiBhLCBDT05TVEIoJmIpW05dKSAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIHJldHVybiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8QUNUSU9OLCB0dXBsZTxsYW1iZGFfZnVuY3RvcjxBcmc+LCBDT05TVEIoJilbTl0+ID4gIFwKLSAgKHR1cGxlPGxhbWJkYV9mdW5jdG9yPEFyZz4sIENPTlNUQigmKVtOXT4oYSwgYikpOyAgICAgICAgICAgICAgICAgICAgICAgICBcCi19Ci0KLQotI2lmIGRlZmluZWQgIE5ETkJPT1NUX0xBTUJEQV9QVFJfQVJJVEhNRVRJQ19FMgotI2Vycm9yICJNdWx0aXBsZSBkZWZpbmVzIG9mICBORE5CT09TVF9MQU1CREFfUFRSX0FSSVRITUVUSUNfRTIiCi0jZW5kaWYKLQotI2RlZmluZSBORE5CT09TVF9MQU1CREFfUFRSX0FSSVRITUVUSUNfRTIoT1BFUl9OQU1FLCBBQ1RJT04sIENPTlNUQSkgICAgICAgICAgIFwKLXRlbXBsYXRlPGludCBOLCBjbGFzcyBBLCBjbGFzcyBBcmc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1pbmxpbmUgY29uc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotbGFtYmRhX2Z1bmN0b3I8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTxBQ1RJT04sIHR1cGxlPENPTlNUQSgmKVtOXSwgbGFtYmRhX2Z1bmN0b3I8QXJnPiA+ID4gICBcCi0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotT1BFUl9OQU1FIChDT05TVEEoJmEpW05dLCBjb25zdCBsYW1iZGFfZnVuY3RvcjxBcmc+JiBiKSAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIHJldHVybiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8QUNUSU9OLCB0dXBsZTxDT05TVEEoJilbTl0sIGxhbWJkYV9mdW5jdG9yPEFyZz4gPiA+IFwKLSAgICAodHVwbGU8Q09OU1RBKCYpW05dLCBsYW1iZGFfZnVuY3RvcjxBcmc+ID4oYSwgYikpOyAgICAgICAgICAgICAgICAgICAgICBcCi19Ci0KLQotTkROQk9PU1RfTEFNQkRBX1BUUl9BUklUSE1FVElDX0UxKG9wZXJhdG9yKywgYXJpdGhtZXRpY19hY3Rpb248cGx1c19hY3Rpb24+LCBCKQotTkROQk9PU1RfTEFNQkRBX1BUUl9BUklUSE1FVElDX0UyKG9wZXJhdG9yKywgYXJpdGhtZXRpY19hY3Rpb248cGx1c19hY3Rpb24+LCBBKQotTkROQk9PU1RfTEFNQkRBX1BUUl9BUklUSE1FVElDX0UxKG9wZXJhdG9yKywgYXJpdGhtZXRpY19hY3Rpb248cGx1c19hY3Rpb24+LGNvbnN0IEIpCi1ORE5CT09TVF9MQU1CREFfUFRSX0FSSVRITUVUSUNfRTIob3BlcmF0b3IrLCBhcml0aG1ldGljX2FjdGlvbjxwbHVzX2FjdGlvbj4sY29uc3QgQSkKLQotCi0vL05ETkJPT1NUX0xBTUJEQV9QVFJfQVJJVEhNRVRJQ19FMShvcGVyYXRvci0sIGFyaXRobWV0aWNfYWN0aW9uPG1pbnVzX2FjdGlvbj4pCi0vLyBUaGlzIGlzIG5vdCBuZWVkZWQsIHNpbmNlIHRoZSByZXN1bHQgb2YgcHRyLXB0ciBpcyBhbiBydmFsdWUgYW55d2F5Ci0KLU5ETkJPT1NUX0xBTUJEQV9QVFJfQVJJVEhNRVRJQ19FMihvcGVyYXRvci0sIGFyaXRobWV0aWNfYWN0aW9uPG1pbnVzX2FjdGlvbj4sIEEpCi1ORE5CT09TVF9MQU1CREFfUFRSX0FSSVRITUVUSUNfRTIob3BlcmF0b3ItLCBhcml0aG1ldGljX2FjdGlvbjxtaW51c19hY3Rpb24+LCBjb25zdCBBKQotCi0KLSN1bmRlZiBORE5CT09TVF9MQU1CREFfQkUxCi0jdW5kZWYgTkROQk9PU1RfTEFNQkRBX0JFMgotI3VuZGVmIE5ETkJPT1NUX0xBTUJEQV9CRTMKLSN1bmRlZiBORE5CT09TVF9MQU1CREFfQkUKLSN1bmRlZiBORE5CT09TVF9MQU1CREFfQ09NTUFfT1BFUkFUT1JfTkFNRQotCi0jdW5kZWYgTkROQk9PU1RfTEFNQkRBX1BUUl9BUklUSE1FVElDX0UxCi0jdW5kZWYgTkROQk9PU1RfTEFNQkRBX1BUUl9BUklUSE1FVElDX0UyCi0KLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyB1bmFyeSBvcGVyYXRvcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWYgZGVmaW5lZCBORE5CT09TVF9MQU1CREFfVUUKLSNlcnJvciAiTXVsdGlwbGUgZGVmaW5lcyBvZiBORE5CT09TVF9MQU1CREFfVUUiCi0jZW5kaWYKLQotI2RlZmluZSBORE5CT09TVF9MQU1CREFfVUUoT1BFUl9OQU1FLCBBQ1RJT04pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGU8Y2xhc3MgQXJnPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotaW5saW5lIGNvbnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotbGFtYmRhX2Z1bmN0b3I8bGFtYmRhX2Z1bmN0b3JfYmFzZTxBQ1RJT04sIHR1cGxlPGxhbWJkYV9mdW5jdG9yPEFyZz4gPiA+ID4gXAotT1BFUl9OQU1FIChjb25zdCBsYW1iZGFfZnVuY3RvcjxBcmc+JiBhKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICByZXR1cm4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8QUNUSU9OLCB0dXBsZTxsYW1iZGFfZnVuY3RvcjxBcmc+ID4gPiAgICAgICAgICAgICAgXAotICAgICggdHVwbGU8bGFtYmRhX2Z1bmN0b3I8QXJnPiA+KGEpICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfQotCi0KLU5ETkJPT1NUX0xBTUJEQV9VRShvcGVyYXRvcissIHVuYXJ5X2FyaXRobWV0aWNfYWN0aW9uPHBsdXNfYWN0aW9uPikKLU5ETkJPT1NUX0xBTUJEQV9VRShvcGVyYXRvci0sIHVuYXJ5X2FyaXRobWV0aWNfYWN0aW9uPG1pbnVzX2FjdGlvbj4pCi1ORE5CT09TVF9MQU1CREFfVUUob3BlcmF0b3J+LCBiaXR3aXNlX2FjdGlvbjxub3RfYWN0aW9uPikKLU5ETkJPT1NUX0xBTUJEQV9VRShvcGVyYXRvciEsIGxvZ2ljYWxfYWN0aW9uPG5vdF9hY3Rpb24+KQotTkROQk9PU1RfTEFNQkRBX1VFKG9wZXJhdG9yKyssIHByZV9pbmNyZW1lbnRfZGVjcmVtZW50X2FjdGlvbjxpbmNyZW1lbnRfYWN0aW9uPikKLU5ETkJPT1NUX0xBTUJEQV9VRShvcGVyYXRvci0tLCBwcmVfaW5jcmVtZW50X2RlY3JlbWVudF9hY3Rpb248ZGVjcmVtZW50X2FjdGlvbj4pCi1ORE5CT09TVF9MQU1CREFfVUUob3BlcmF0b3IqLCBvdGhlcl9hY3Rpb248Y29udGVudHNvZl9hY3Rpb24+KQotTkROQk9PU1RfTEFNQkRBX1VFKG9wZXJhdG9yJiwgb3RoZXJfYWN0aW9uPGFkZHJlc3NvZl9hY3Rpb24+KQotCi0jaWYgZGVmaW5lZCBORE5CT09TVF9MQU1CREFfUE9TVEZJWF9VRQotI2Vycm9yICJNdWx0aXBsZSBkZWZpbmVzIG9mIE5ETkJPT1NUX0xBTUJEQV9QT1NURklYX1VFIgotI2VuZGlmCi0KLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX1BPU1RGSVhfVUUoT1BFUl9OQU1FLCBBQ1RJT04pICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlPGNsYXNzIEFyZz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLWlubGluZSBjb25zdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLWxhbWJkYV9mdW5jdG9yPGxhbWJkYV9mdW5jdG9yX2Jhc2U8QUNUSU9OLCB0dXBsZTxsYW1iZGFfZnVuY3RvcjxBcmc+ID4gPiA+IFwKLU9QRVJfTkFNRSAoY29uc3QgbGFtYmRhX2Z1bmN0b3I8QXJnPiYgYSwgaW50KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgcmV0dXJuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPEFDVElPTiwgdHVwbGU8bGFtYmRhX2Z1bmN0b3I8QXJnPiA+ID4gICAgICAgICAgICAgIFwKLSAgICAoIHR1cGxlPGxhbWJkYV9mdW5jdG9yPEFyZz4gPihhKSApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX0KLQotCi1ORE5CT09TVF9MQU1CREFfUE9TVEZJWF9VRShvcGVyYXRvcisrLCBwb3N0X2luY3JlbWVudF9kZWNyZW1lbnRfYWN0aW9uPGluY3JlbWVudF9hY3Rpb24+KQotTkROQk9PU1RfTEFNQkRBX1BPU1RGSVhfVUUob3BlcmF0b3ItLSwgcG9zdF9pbmNyZW1lbnRfZGVjcmVtZW50X2FjdGlvbjxkZWNyZW1lbnRfYWN0aW9uPikKLQotI3VuZGVmIE5ETkJPT1NUX0xBTUJEQV9VRQotI3VuZGVmIE5ETkJPT1NUX0xBTUJEQV9QT1NURklYX1VFCi0KLX0gLy8gbmFtZXNwYWNlIGxhbWJkYQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvcmV0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9yZXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTQ1ZWNlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9yZXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzI1ICswLDAgQEAKLS8vIEJvb3N0IExhbWJkYSBMaWJyYXJ5ICByZXQuaHBwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMCBKYWFra28gSmFydmkgKGphYWtrby5qYXJ2aUBjcy51dHUuZmkpCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgd3d3LmJvb3N0Lm9yZwotCi0KLSNpZm5kZWYgTkROQk9PU1RfTEFNQkRBX1JFVF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX1JFVF9IUFAKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgCi1uYW1lc3BhY2UgbGFtYmRhIHsKLQotICAvLyBUT0RPOgotCi0vLyAgQWRkIHNwZWNpYWxpemF0aW9ucyBmb3IgZnVuY3Rpb24gcmVmZXJlbmNlcyBmb3IgcmV0LCBwcm90ZWN0IGFuZCB1bmxhbWJkYQotLy8gIGUuZyB2b2lkIGZvbygpOyB1bmxhbWJkYShmb28pOyBmYWlscywgYXMgaXQgd291bGQgYWRkIGEgY29uc3QgcXVhbGlmaWVyCi0gIC8vIGZvciBhIGZ1bmN0aW9uIHR5cGUuIAotICAvLyBvbiB0aGUgb3RoZXIgaGFuZCB1bmxhbWJkYSgqZm9vKSBkb2VzIHdvcmsKLQotCi0vLyAtLSByZXQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gdGhlIGV4cGxpY2l0IHJldHVybiB0eXBlIHRlbXBsYXRlIAotCi0gIC8vIFRPRE86IEl0J2QgYmUgbmljZSB0byBtYWtlIHJldCBhIG5vcCBmb3Igb3RoZXIgdGhhbiBsYW1iZGEgZnVuY3RvcnMKLSAgLy8gYnV0IGNhdXNlcyBhbiBhbWJpZ3VpeXR5IHdpdGggZ2NjIChub3Qgd2l0aCBLQ0MpLCBjaGVjayB3aGF0IGlzIHRoZQotICAvLyByaWdodCBpbnRlcnByZXRhdGlvbi4KLQotICAvLyAgLy8gcmV0IGZvciBvdGhlcnMgdGhhbiBsYW1iZGEgZnVuY3RvcnMgaGFzIG5vIGVmZmVjdAotICAvLyB0ZW1wbGF0ZSA8Y2xhc3MgVSwgY2xhc3MgVD4KLSAgLy8gaW5saW5lIGNvbnN0IFQmIHJldChjb25zdCBUJiB0KSB7IHJldHVybiB0OyB9Ci0KLQotdGVtcGxhdGU8Y2xhc3MgUkVULCBjbGFzcyBBcmc+Ci1pbmxpbmUgY29uc3QgCi1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBleHBsaWNpdF9yZXR1cm5fdHlwZV9hY3Rpb248UkVUPiwgCi0gICAgdHVwbGU8bGFtYmRhX2Z1bmN0b3I8QXJnPiA+Ci0gID4gCi0+Ci1yZXQoY29uc3QgbGFtYmRhX2Z1bmN0b3I8QXJnPiYgYTEpCi17Ci0gIHJldHVybiAgCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGV4cGxpY2l0X3JldHVybl90eXBlX2FjdGlvbjxSRVQ+LCAKLSAgICAgIHR1cGxlPGxhbWJkYV9mdW5jdG9yPEFyZz4gPgotICAgID4gCi0gICAgKHR1cGxlPGxhbWJkYV9mdW5jdG9yPEFyZz4gPihhMSkpOwotfQotCi0vLyBwcm90ZWN0IC0tLS0tLS0tLS0tLS0tLS0tLQotCi0gIC8vIHByb3RlY3Rpbmcgb3RoZXJzIHRoYW4gbGFtYmRhIGZ1bmN0b3JzIGhhcyBubyBlZmZlY3QKLXRlbXBsYXRlIDxjbGFzcyBUPgotaW5saW5lIGNvbnN0IFQmIHByb3RlY3QoY29uc3QgVCYgdCkgeyByZXR1cm4gdDsgfQotCi10ZW1wbGF0ZTxjbGFzcyBBcmc+Ci1pbmxpbmUgY29uc3QgCi1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBwcm90ZWN0X2FjdGlvbiwgCi0gICAgdHVwbGU8bGFtYmRhX2Z1bmN0b3I8QXJnPiA+Ci0gID4gCi0+Ci1wcm90ZWN0KGNvbnN0IGxhbWJkYV9mdW5jdG9yPEFyZz4mIGExKQotewotICByZXR1cm4gCi0gICAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgICBwcm90ZWN0X2FjdGlvbiwgCi0gICAgICAgIHR1cGxlPGxhbWJkYV9mdW5jdG9yPEFyZz4gPgotICAgICAgPiAKLSAgICAodHVwbGU8bGFtYmRhX2Z1bmN0b3I8QXJnPiA+KGExKSk7Ci19Ci0gICAKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gSGlkZXMgdGhlIGxhbWJkYSBmdW5jdG9ybmVzcyBvZiBhIGxhbWJkYSBmdW5jdG9yLiAKLS8vIEFmdGVyIHRoaXMsIHRoZSBmdW5jdG9yIGlzIGltbXVuZSB0byBhcmd1bWVudCBzdWJzdGl0dXRpb24sIGV0Yy4KLS8vIFRoaXMgY2FuIGJlIHVzZWQsIGUuZy4gdG8gbWFrZSBpdCBzYWZlIHRvIHBhc3MgbGFtYmRhIGZ1bmN0b3JzIGFzIAotLy8gYXJndW1lbnRzIHRvIGZ1bmN0aW9ucywgd2hpY2ggbWlnaHQgdXNlIHRoZW0gYXMgdGFyZ2V0IGZ1bmN0aW9ucwotCi0vLyBub3RlLCB1bmxhbWJkYSBhbmQgcHJvdGVjdCBhcmUgZGlmZmVyZW50IHRoaW5ncy4gUHJvdGVjdCBoaWRlcyB0aGUgbGFtYmRhCi0vLyBmdW5jdG9yIGZvciBvbmUgYXBwbGljYXRpb24sIHVubGFtYmRhIGZvciBnb29kLgotCi10ZW1wbGF0ZSA8Y2xhc3MgTGFtYmRhRnVuY3Rvcj4KLWNsYXNzIG5vbl9sYW1iZGFfZnVuY3RvcgotewotICBMYW1iZGFGdW5jdG9yIGxmOwotcHVibGljOgotICAKLSAgLy8gVGhpcyBmdW5jdG9yIGRlZmluZXMgdGhlIHJlc3VsdF90eXBlIHR5cGVkZWYuCi0gIC8vIFRoZSByZXN1bHQgdHlwZSBtdXN0IGJlIGRlZHVjaWJsZSB3aXRob3V0IGtub3dpbmcgdGhlIGFyZ3VtZW50cwotCi0gIHRlbXBsYXRlIDxjbGFzcyBTaWdBcmdzPiBzdHJ1Y3Qgc2lnIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIAotICAgICAgTGFtYmRhRnVuY3Rvcjo6aW5oZXJpdGVkOjogCi0gICAgICAgIHRlbXBsYXRlIHNpZzx0eXBlbmFtZSBTaWdBcmdzOjp0YWlsX3R5cGU+Ojp0eXBlIHR5cGU7Ci0gIH07Ci0KLSAgZXhwbGljaXQgbm9uX2xhbWJkYV9mdW5jdG9yKGNvbnN0IExhbWJkYUZ1bmN0b3ImIGEpIDogbGYoYSkge30KLQotICB0eXBlbmFtZSBMYW1iZGFGdW5jdG9yOjpudWxsYXJ5X3JldHVybl90eXBlICAKLSAgb3BlcmF0b3IoKSgpIGNvbnN0IHsKLSAgICByZXR1cm4gbGYudGVtcGxhdGUgCi0gICAgICBjYWxsPHR5cGVuYW1lIExhbWJkYUZ1bmN0b3I6Om51bGxhcnlfcmV0dXJuX3R5cGU+Ci0gICAgICAgIChjbnVsbF90eXBlKCksIGNudWxsX3R5cGUoKSwgY251bGxfdHlwZSgpLCBjbnVsbF90eXBlKCkpOyAKLSAgfQotCi0gIHRlbXBsYXRlPGNsYXNzIEE+Ci0gIHR5cGVuYW1lIHNpZzx0dXBsZTxjb25zdCBub25fbGFtYmRhX2Z1bmN0b3IsIEEmPiA+Ojp0eXBlIAotICBvcGVyYXRvcigpKEEmIGEpIGNvbnN0IHsKLSAgICByZXR1cm4gbGYudGVtcGxhdGUgY2FsbDx0eXBlbmFtZSBzaWc8dHVwbGU8Y29uc3Qgbm9uX2xhbWJkYV9mdW5jdG9yLCBBJj4gPjo6dHlwZSA+KGEsIGNudWxsX3R5cGUoKSwgY251bGxfdHlwZSgpLCBjbnVsbF90eXBlKCkpOyAKLSAgfQotCi0gIHRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEI+Ci0gIHR5cGVuYW1lIHNpZzx0dXBsZTxjb25zdCBub25fbGFtYmRhX2Z1bmN0b3IsIEEmLCBCJj4gPjo6dHlwZSAKLSAgb3BlcmF0b3IoKShBJiBhLCBCJiBiKSBjb25zdCB7Ci0gICAgcmV0dXJuIGxmLnRlbXBsYXRlIGNhbGw8dHlwZW5hbWUgc2lnPHR1cGxlPGNvbnN0IG5vbl9sYW1iZGFfZnVuY3RvciwgQSYsIEImPiA+Ojp0eXBlID4oYSwgYiwgY251bGxfdHlwZSgpLCBjbnVsbF90eXBlKCkpOyAKLSAgfQotCi0gIHRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEIsIGNsYXNzIEM+Ci0gIHR5cGVuYW1lIHNpZzx0dXBsZTxjb25zdCBub25fbGFtYmRhX2Z1bmN0b3IsIEEmLCBCJiwgQyY+ID46OnR5cGUgCi0gIG9wZXJhdG9yKCkoQSYgYSwgQiYgYiwgQyYgYykgY29uc3QgewotICAgIHJldHVybiBsZi50ZW1wbGF0ZSBjYWxsPHR5cGVuYW1lIHNpZzx0dXBsZTxjb25zdCBub25fbGFtYmRhX2Z1bmN0b3IsIEEmLCBCJiwgQyY+ID46OnR5cGU+KGEsIGIsIGMsIGNudWxsX3R5cGUoKSk7IAotICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnPgotaW5saW5lIGNvbnN0IEFyZyYgdW5sYW1iZGEoY29uc3QgQXJnJiBhKSB7IHJldHVybiBhOyB9Ci0KLXRlbXBsYXRlIDxjbGFzcyBBcmc+Ci1pbmxpbmUgY29uc3Qgbm9uX2xhbWJkYV9mdW5jdG9yPGxhbWJkYV9mdW5jdG9yPEFyZz4gPiAKLXVubGFtYmRhKGNvbnN0IGxhbWJkYV9mdW5jdG9yPEFyZz4mIGEpCi17Ci0gIHJldHVybiBub25fbGFtYmRhX2Z1bmN0b3I8bGFtYmRhX2Z1bmN0b3I8QXJnPiA+KGEpOwotfQotCi0gIC8vIER1ZSB0byBhIGxhbmd1YWdlIHJlc3RyaWN0aW9uLCBsYW1iZGEgZnVuY3RvcnMgY2Fubm90IGJlIG1hZGUgdG8KLSAgLy8gYWNjZXB0IG5vbi1jb25zdCBydmFsdWUgYXJndW1lbnRzLiBVc3VhbGx5IGl0ZXJhdG9ycyBkbyBub3QgcmV0dXJuIAotICAvLyB0ZW1wb3JhcmllcywgYnV0IHNvbWV0aW1lcyB0aGV5IGRvLiBUaGF0J3Mgd2h5IGEgd29ya2Fyb3VuZCBpcyBwcm92aWRlZC4KLSAgLy8gTm90ZSwgdGhhdCB0aGlzIHBvdGVudGlhbGx5IGJyZWFrcyBjb25zdCBjb3JyZWN0bmVzcywgc28gYmUgY2FyZWZ1bCEKLQotLy8gYW55IGxhbWJkYSBmdW5jdG9yIGNhbiBiZSB0dXJuZWQgaW50byBhIGNvbnN0X2luY29ycmVjdF9sYW1iZGFfZnVuY3RvcgotLy8gVGhlIG9wZXJhdG9yKCkgdGFrZXMgYXJndW1lbnRzIGFzIGNvbnN0cyBhbmQgdGhlbiBjYXN0cyBjb25zdG5lc3MKLS8vIGF3YXkuIFNvIHRoaXMgYnJlYWtzIGNvbnN0IGNvcnJlY3RuZXNzISEhIGJ1dCBpcyBhIG5lY2Vzc2FyeSB3b3JrYXJvdW5kCi0vLyBpbiBzb21lIGNhc2VzIGR1ZSB0byBsYW5ndWFnZSBsaW1pdGF0aW9ucy4KLS8vIE5vdGUsIHRoYXQgdGhpcyBpcyBub3QgYSBsYW1iZGFfZnVuY3RvciBhbnltb3JlLCBzbyBpdCBjYW4gbm90IGJlIHVzZWQKLS8vIGFzIGEgc3ViIGxhbWJkYSBleHByZXNzaW9uLgotCi10ZW1wbGF0ZSA8Y2xhc3MgTGFtYmRhRnVuY3Rvcj4KLXN0cnVjdCBjb25zdF9pbmNvcnJlY3RfbGFtYmRhX2Z1bmN0b3IgewotICBMYW1iZGFGdW5jdG9yIGxmOwotcHVibGljOgotCi0gIGV4cGxpY2l0IGNvbnN0X2luY29ycmVjdF9sYW1iZGFfZnVuY3Rvcihjb25zdCBMYW1iZGFGdW5jdG9yJiBhKSA6IGxmKGEpIHt9Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIFNpZ0FyZ3M+IHN0cnVjdCBzaWcgewotICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgIExhbWJkYUZ1bmN0b3I6OmluaGVyaXRlZDo6dGVtcGxhdGUgCi0gICAgICAgIHNpZzx0eXBlbmFtZSBTaWdBcmdzOjp0YWlsX3R5cGU+Ojp0eXBlIHR5cGU7Ci0gIH07Ci0KLSAgLy8gVGhlIG51bGxhcnkgY2FzZSBpcyBub3QgbmVlZGVkIChubyBhcmd1bWVudHMsIG5vIHBhcmFtZXRlciB0eXBlIHByb2JsZW1zKQotCi0gIHRlbXBsYXRlPGNsYXNzIEE+Ci0gIHR5cGVuYW1lIHNpZzx0dXBsZTxjb25zdCBjb25zdF9pbmNvcnJlY3RfbGFtYmRhX2Z1bmN0b3IsIEEmPiA+Ojp0eXBlCi0gIG9wZXJhdG9yKCkoY29uc3QgQSYgYSkgY29uc3QgewotICAgIHJldHVybiBsZi50ZW1wbGF0ZSBjYWxsPHR5cGVuYW1lIHNpZzx0dXBsZTxjb25zdCBjb25zdF9pbmNvcnJlY3RfbGFtYmRhX2Z1bmN0b3IsIEEmPiA+Ojp0eXBlID4oY29uc3RfY2FzdDxBJj4oYSksIGNudWxsX3R5cGUoKSwgY251bGxfdHlwZSgpLCBjbnVsbF90eXBlKCkpOwotICB9Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQj4KLSAgdHlwZW5hbWUgc2lnPHR1cGxlPGNvbnN0IGNvbnN0X2luY29ycmVjdF9sYW1iZGFfZnVuY3RvciwgQSYsIEImPiA+Ojp0eXBlCi0gIG9wZXJhdG9yKCkoY29uc3QgQSYgYSwgY29uc3QgQiYgYikgY29uc3QgewotICAgIHJldHVybiBsZi50ZW1wbGF0ZSBjYWxsPHR5cGVuYW1lIHNpZzx0dXBsZTxjb25zdCBjb25zdF9pbmNvcnJlY3RfbGFtYmRhX2Z1bmN0b3IsIEEmLCBCJj4gPjo6dHlwZSA+KGNvbnN0X2Nhc3Q8QSY+KGEpLCBjb25zdF9jYXN0PEImPihiKSwgY251bGxfdHlwZSgpLCBjbnVsbF90eXBlKCkpOwotICB9Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQiwgY2xhc3MgQz4KLSAgdHlwZW5hbWUgc2lnPHR1cGxlPGNvbnN0IGNvbnN0X2luY29ycmVjdF9sYW1iZGFfZnVuY3RvciwgQSYsIEImLCBDJj4gPjo6dHlwZQotICBvcGVyYXRvcigpKGNvbnN0IEEmIGEsIGNvbnN0IEImIGIsIGNvbnN0IEMmIGMpIGNvbnN0IHsKLSAgICByZXR1cm4gbGYudGVtcGxhdGUgY2FsbDx0eXBlbmFtZSBzaWc8dHVwbGU8Y29uc3QgY29uc3RfaW5jb3JyZWN0X2xhbWJkYV9mdW5jdG9yLCBBJiwgQiYsIEMmPiA+Ojp0eXBlPihjb25zdF9jYXN0PEEmPihhKSwgY29uc3RfY2FzdDxCJj4oYiksIGNvbnN0X2Nhc3Q8QyY+KGMpLCBjbnVsbF90eXBlKCkpOwotICB9Ci19OwotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIGFueSBsYW1iZGEgZnVuY3RvciBjYW4gYmUgdHVybmVkIGludG8gYSBjb25zdF9wYXJhbWV0ZXJfbGFtYmRhX2Z1bmN0b3IKLS8vIFRoZSBvcGVyYXRvcigpIHRha2VzIGFyZ3VtZW50cyBhcyBjb25zdC4KLS8vIFRoaXMgaXMgdXNlZnVsIGlmIGxhbWJkYSBmdW5jdG9ycyBhcmUgY2FsbGVkIHdpdGggbm9uLWNvbnN0IHJ2YWx1ZXMuCi0vLyBOb3RlLCB0aGF0IHRoaXMgaXMgbm90IGEgbGFtYmRhX2Z1bmN0b3IgYW55bW9yZSwgc28gaXQgY2FuIG5vdCBiZSB1c2VkCi0vLyBhcyBhIHN1YiBsYW1iZGEgZXhwcmVzc2lvbi4KLQotdGVtcGxhdGUgPGNsYXNzIExhbWJkYUZ1bmN0b3I+Ci1zdHJ1Y3QgY29uc3RfcGFyYW1ldGVyX2xhbWJkYV9mdW5jdG9yIHsKLSAgTGFtYmRhRnVuY3RvciBsZjsKLXB1YmxpYzoKLQotICBleHBsaWNpdCBjb25zdF9wYXJhbWV0ZXJfbGFtYmRhX2Z1bmN0b3IoY29uc3QgTGFtYmRhRnVuY3RvciYgYSkgOiBsZihhKSB7fQotCi0gIHRlbXBsYXRlIDxjbGFzcyBTaWdBcmdzPiBzdHJ1Y3Qgc2lnIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICBMYW1iZGFGdW5jdG9yOjppbmhlcml0ZWQ6OnRlbXBsYXRlIAotICAgICAgICBzaWc8dHlwZW5hbWUgU2lnQXJnczo6dGFpbF90eXBlPjo6dHlwZSB0eXBlOwotICB9OwotCi0gIC8vIFRoZSBudWxsYXJ5IGNhc2UgaXMgbm90IG5lZWRlZDogbm8gYXJndW1lbnRzLCBubyBjb25zdG5lc3MgcHJvYmxlbXMuCi0KLSAgdGVtcGxhdGU8Y2xhc3MgQT4KLSAgdHlwZW5hbWUgc2lnPHR1cGxlPGNvbnN0IGNvbnN0X3BhcmFtZXRlcl9sYW1iZGFfZnVuY3RvciwgY29uc3QgQSY+ID46OnR5cGUKLSAgb3BlcmF0b3IoKShjb25zdCBBJiBhKSBjb25zdCB7Ci0gICAgcmV0dXJuIGxmLnRlbXBsYXRlIGNhbGw8dHlwZW5hbWUgc2lnPHR1cGxlPGNvbnN0IGNvbnN0X3BhcmFtZXRlcl9sYW1iZGFfZnVuY3RvciwgY29uc3QgQSY+ID46OnR5cGUgPihhLCBjbnVsbF90eXBlKCksIGNudWxsX3R5cGUoKSwgY251bGxfdHlwZSgpKTsKLSAgfQotCi0gIHRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEI+Ci0gIHR5cGVuYW1lIHNpZzx0dXBsZTxjb25zdCBjb25zdF9wYXJhbWV0ZXJfbGFtYmRhX2Z1bmN0b3IsIGNvbnN0IEEmLCBjb25zdCBCJj4gPjo6dHlwZQotICBvcGVyYXRvcigpKGNvbnN0IEEmIGEsIGNvbnN0IEImIGIpIGNvbnN0IHsKLSAgICByZXR1cm4gbGYudGVtcGxhdGUgY2FsbDx0eXBlbmFtZSBzaWc8dHVwbGU8Y29uc3QgY29uc3RfcGFyYW1ldGVyX2xhbWJkYV9mdW5jdG9yLCBjb25zdCBBJiwgY29uc3QgQiY+ID46OnR5cGUgPihhLCBiLCBjbnVsbF90eXBlKCksIGNudWxsX3R5cGUoKSk7Ci0gIH0KLQotICB0ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCLCBjbGFzcyBDPgotICB0eXBlbmFtZSBzaWc8dHVwbGU8Y29uc3QgY29uc3RfcGFyYW1ldGVyX2xhbWJkYV9mdW5jdG9yLCBjb25zdCBBJiwgY29uc3QgQiYsIGNvbnN0IEMmPgotPjo6dHlwZQotICBvcGVyYXRvcigpKGNvbnN0IEEmIGEsIGNvbnN0IEImIGIsIGNvbnN0IEMmIGMpIGNvbnN0IHsKLSAgICByZXR1cm4gbGYudGVtcGxhdGUgY2FsbDx0eXBlbmFtZSBzaWc8dHVwbGU8Y29uc3QgY29uc3RfcGFyYW1ldGVyX2xhbWJkYV9mdW5jdG9yLCBjb25zdCBBJiwgY29uc3QgQiYsIGNvbnN0IEMmPiA+Ojp0eXBlPihhLCBiLCBjLCBjbnVsbF90eXBlKCkpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnPgotaW5saW5lIGNvbnN0IGNvbnN0X2luY29ycmVjdF9sYW1iZGFfZnVuY3RvcjxsYW1iZGFfZnVuY3RvcjxBcmc+ID4KLWJyZWFrX2NvbnN0KGNvbnN0IGxhbWJkYV9mdW5jdG9yPEFyZz4mIGxmKQotewotICByZXR1cm4gY29uc3RfaW5jb3JyZWN0X2xhbWJkYV9mdW5jdG9yPGxhbWJkYV9mdW5jdG9yPEFyZz4gPihsZik7Ci19Ci0KLQotdGVtcGxhdGUgPGNsYXNzIEFyZz4KLWlubGluZSBjb25zdCBjb25zdF9wYXJhbWV0ZXJfbGFtYmRhX2Z1bmN0b3I8bGFtYmRhX2Z1bmN0b3I8QXJnPiA+Ci1jb25zdF9wYXJhbWV0ZXJzKGNvbnN0IGxhbWJkYV9mdW5jdG9yPEFyZz4mIGxmKQotewotICByZXR1cm4gY29uc3RfcGFyYW1ldGVyX2xhbWJkYV9mdW5jdG9yPGxhbWJkYV9mdW5jdG9yPEFyZz4gPihsZik7Ci19Ci0KLS8vIG1ha2Ugdm9pZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIG1ha2Vfdm9pZCggeCApIHR1cm5zIGEgbGFtYmRhIGZ1bmN0b3IgeCB3aXRoIHNvbWUgcmV0dXJuIHR5cGUgeSBpbnRvCi0vLyBhbm90aGVyIGxhbWJkYSBmdW5jdG9yLCB3aGljaCBoYXMgYSB2b2lkIHJldHVybiB0eXBlCi0vLyB3aGVuIGNhbGxlZCwgdGhlIG9yaWdpbmFsIHJldHVybiB0eXBlIGlzIGRpc2NhcmRlZAotCi0vLyB3ZSB1c2UgdGhpcyBhY3Rpb24uIFRoZSBhY3Rpb24gY2xhc3Mgd2lsbCBiZSBjYWxsZWQsIHdoaWNoIG1lYW5zIHRoYXQKLS8vIHRoZSB3cmFwcGVkIGxhbWJkYSBmdW5jdG9yIGlzIGV2YWx1YXRlZCwgYnV0IHdlIGp1c3QgZG9uJ3QgZG8gYW55dGhpbmcKLS8vIHdpdGggdGhlIHJlc3VsdC4KLXN0cnVjdCB2b2lkaWZpZXJfYWN0aW9uIHsKLSAgdGVtcGxhdGU8Y2xhc3MgUmV0LCBjbGFzcyBBPiBzdGF0aWMgdm9pZCBhcHBseShBJikge30KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEFyZ3M+IHN0cnVjdCByZXR1cm5fdHlwZV9OPHZvaWRpZmllcl9hY3Rpb24sIEFyZ3M+IHsKLSAgdHlwZWRlZiB2b2lkIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBBcmcxPgotaW5saW5lIGNvbnN0IAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDEsIHZvaWRpZmllcl9hY3Rpb24+LAotICAgIHR1cGxlPGxhbWJkYV9mdW5jdG9yPEFyZzE+ID4KLSAgPiAKLT4gCi1tYWtlX3ZvaWQoY29uc3QgbGFtYmRhX2Z1bmN0b3I8QXJnMT4mIGExKSB7IAotcmV0dXJuIAotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248MSwgdm9pZGlmaWVyX2FjdGlvbj4sCi0gICAgICB0dXBsZTxsYW1iZGFfZnVuY3RvcjxBcmcxPiA+Ci0gICAgPiAKLSAgKHR1cGxlPGxhbWJkYV9mdW5jdG9yPEFyZzE+ID4gKGExKSk7Ci19Ci0KLS8vIGZvciBub24tbGFtYmRhIGZ1bmN0b3JzLCBtYWtlX3ZvaWQgZG9lcyBub3RoaW5nIAotLy8gKHRoZSBhcmd1bWVudCBnZXRzIGV2YWx1YXRlZCBpbW1lZGlhdGVseSkKLQotdGVtcGxhdGU8Y2xhc3MgQXJnMT4KLWlubGluZSBjb25zdCAKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPGRvX25vdGhpbmdfYWN0aW9uLCBudWxsX3R5cGU+IAotPiAKLW1ha2Vfdm9pZChjb25zdCBBcmcxJikgeyAKLXJldHVybiAKLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPGRvX25vdGhpbmdfYWN0aW9uLCBudWxsX3R5cGU+KCk7Ci19Ci0KLS8vIHN0ZF9mdW5jdG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vICBUaGUgU1RMIHVzZXMgdGhlIHJlc3VsdF90eXBlIHR5cGVkZWYgYXMgdGhlIGNvbnZlbnRpb24gdG8gbGV0IGJpbmRlcnMga25vdwotLy8gIHRoZSByZXR1cm4gdHlwZSBvZiBhIGZ1bmN0aW9uIG9iamVjdC4gCi0vLyAgTEwgdXNlcyB0aGUgc2lnIHRlbXBsYXRlLgotLy8gIFRvIGxldCBMTCBrbm93IHRoYXQgdGhlIGZ1bmN0aW9uIG9iamVjdCBoYXMgdGhlIHJlc3VsdF90eXBlIHR5cGVkZWYgCi0vLyAgZGVmaW5lZCwgaXQgY2FuIGJlIHdyYXBwZWQgd2l0aCB0aGUgc3RkX2Z1bmN0b3IgZnVuY3Rpb24uCi0KLQotLy8gSnVzdCBpbmhlcml0IGZvcm0gdGhlIHRlbXBsYXRlIHBhcmFtZXRlciAodGhlIHN0YW5kYXJkIGZ1bmN0b3IpLCAKLS8vIGFuZCBwcm92aWRlIGEgc2lnIHRlbXBsYXRlLiBTbyB3ZSBoYXZlIGEgY2xhc3Mgd2hpY2ggaXMgc3RpbGwgdGhlCi0vLyBzYW1lIGZ1bmN0b3IgKyB0aGUgc2lnIHRlbXBsYXRlLgotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IHJlc3VsdF90eXBlX3RvX3NpZyA6IHB1YmxpYyBUIHsKLSAgdGVtcGxhdGU8Y2xhc3MgQXJncz4gc3RydWN0IHNpZyB7IHR5cGVkZWYgdHlwZW5hbWUgVDo6cmVzdWx0X3R5cGUgdHlwZTsgfTsKLSAgcmVzdWx0X3R5cGVfdG9fc2lnKGNvbnN0IFQmIHQpIDogVCh0KSB7fQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgRj4KLWlubGluZSByZXN1bHRfdHlwZV90b19zaWc8Rj4gc3RkX2Z1bmN0b3IoY29uc3QgRiYgZikgeyByZXR1cm4gZjsgfQotCi0KLX0gLy8gbmFtZXNwYWNlIGxhbWJkYSAKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZgotCi0KLQotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvcmV0dXJuX3R5cGVfdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9yZXR1cm5fdHlwZV90cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTUwYTY4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9yZXR1cm5fdHlwZV90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjgyICswLDAgQEAKLS8vICByZXR1cm5fdHlwZV90cmFpdHMuaHBwIC0tIEJvb3N0IExhbWJkYSBMaWJyYXJ5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAgSmFha2tvIEphcnZpIChqYWFra28uamFydmlAY3MudXR1LmZpKQotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHd3dy5ib29zdC5vcmcKLQotCi0jaWZuZGVmIE5ETkJPT1NUX0xBTUJEQV9SRVRVUk5fVFlQRV9UUkFJVFNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9SRVRVUk5fVFlQRV9UUkFJVFNfSFBQCi0KLSNpbmNsdWRlICJuZG5ib29zdC9tcGwvaGFzX3h4eC5ocHAiCi0KLSNpbmNsdWRlIDxjc3RkZGVmPiAvLyBuZWVkZWQgZm9yIHRoZSBwdHJkaWZmX3QKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgCi1uYW1lc3BhY2UgbGFtYmRhIHsKLQotdXNpbmcgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ7Ci11c2luZyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yOwotdXNpbmcgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q7Ci0KLS8vIE11Y2ggb2YgdGhlIHR5cGUgZGVkdWN0aW9uIGNvZGUgZm9yIHN0YW5kYXJkIGFyaXRobWV0aWMgdHlwZXMgCi0vLyBmcm9tIEdhcnkgUG93ZWxsCi0KLSAgLy8gZGlmZmVyZW50IGFyaXRpZXM6Ci10ZW1wbGF0ZSA8Y2xhc3MgQWN0LCBjbGFzcyBBMT4gc3RydWN0IHJldHVybl90eXBlXzE7IC8vIDEtYXJ5IGFjdGlvbnMKLXRlbXBsYXRlIDxjbGFzcyBBY3QsIGNsYXNzIEExLCBjbGFzcyBBMj4gc3RydWN0IHJldHVybl90eXBlXzI7IC8vIDItYXJ5Ci10ZW1wbGF0ZSA8Y2xhc3MgQWN0LCBjbGFzcyBBcmdzPiBzdHJ1Y3QgcmV0dXJuX3R5cGVfTjsgLy8gPjMtIGFyeQotCi10ZW1wbGF0ZSA8Y2xhc3MgQWN0LCBjbGFzcyBBMT4gc3RydWN0IHJldHVybl90eXBlXzFfcHJvdDsKLXRlbXBsYXRlIDxjbGFzcyBBY3QsIGNsYXNzIEExLCBjbGFzcyBBMj4gc3RydWN0IHJldHVybl90eXBlXzJfcHJvdDsgLy8gMi1hcnkKLXRlbXBsYXRlIDxjbGFzcyBBY3QsIGNsYXNzIEExPiBzdHJ1Y3QgcmV0dXJuX3R5cGVfTl9wcm90OyAvLyA+My1hcnkKLQotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8Y2xhc3M+IGNsYXNzIHJldHVybl90eXBlX2RlZHVjdGlvbl9mYWlsdXJlIHt9OwotCi0gIC8vIEluIHNvbWUgY2FzZXMgcmV0dXJuIHR5cGUgZGVkdWN0aW9uIHNob3VsZCBmYWlsIChhbiBpbnZhbGlkIGxhbWJkYSAKLSAgLy8gZXhwcmVzc2lvbikuIFNvbWV0aW1lcyB0aGUgbGFtYmRhIGV4cHJlc3Npb24gY2FuIGJlIG9rLCB0aGUgcmV0dXJuIHR5cGUKLSAgLy8ganVzdCBpcyBub3QgZGVkdWNpYmxlICh1c2VyIGRlZmluZWQgb3BlcmF0b3JzKS4gVGhlbiByZXR1cm4gdHlwZSBkZWR1Y3Rpb24KLSAgLy8gc2hvdWxkIG5ldmVyIGJlIGVudGVyZWQgYXQgYWxsLCBhbmQgdGhlIHVzZSBvZiByZXQ8PiBkb2VzIHRoaXMuCi0gIC8vIEhvd2V2ZXIsIGZvciBudWxsYXJ5IGxhbWJkYSBmdW5jdG9ycywgcmV0dXJuIHR5cGUgZGVkdWN0aW9uIGlzIGFsd2F5cwotICAvLyBlbnRlcmVkLCBhbmQgdGhlcmUgc2VlbXMgdG8gYmUgbm8gd2F5IGFyb3VuZCB0aGlzLgotCi0gIC8vICh0aGUgcmV0dXJuIHR5cGUgaXMgcGFydCBvZiB0aGUgcHJvdG90eXBlIG9mIHRoZSBub24tdGVtcGxhdGUKLSAgLy8gb3BlcmF0b3IoKSgpLiBUaGUgcHJvdG90eXBlIGlzIGluc3RhbnRpYXRlZCwgZXZlbiB0aG91Z2ggdGhlIGJvZHkgCi0gIC8vIGlzIG5vdC4pIAotIAotICAvLyBTbywgaW4gdGhlIGNhc2UgdGhlIHJldHVybiB0eXBlIGRlZHVjdGlvbiBzaG91bGQgZmFpbCwgaXQgc2hvdWxkIG5vdAotICAvLyBmYWlsIGRpcmVjdGx5LCBidXQgcmF0aGVyIHJlc3VsdCBpbiBhIHZhbGlkIGJ1dCB3cm9uZyByZXR1cm4gdHlwZSwKLSAgLy8gY2F1c2luZyBhIGNvbXBpbGUgdGltZSBlcnJvciBvbmx5IGlmIHRoZSBmdW5jdGlvbiBpcyByZWFsbHkgY2FsbGVkLgotCi0KLQotfSAvLyBlbmQgZGV0YWlsCi0KLQotCi0vLyByZXR1cm5fdHlwZV9YX3Byb3QgY2xhc3NlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gVGhlc2UgY2xhc3NlcyBhcmUgdGhlIGZpcnN0IGxheWVyIHRoYXQgZ2V0cyBpbnN0YW50aWF0ZWQgZnJvbSB0aGUgCi0vLyBsYW1iZGFfZnVuY3Rvcl9iYXNlIHNpZyB0ZW1wbGF0ZXMuIEl0IHdpbGwgY2hlY2sgd2hldGhlciAKLS8vIHRoZSBhY3Rpb24gaXMgcHJvdGVjdGFibGUgYW5kIG9uZSBvZiBhcmd1bWVudHMgaXMgInByb3RlY3RlZCIgb3IgaXRzCi0vLyBldmFsdWF0aW9uIHdpbGwgb3RoZXJ3aXNlIHJlc3VsdCBpbiBhbm90aGVyIGxhbWJkYSBmdW5jdG9yLgotLy8gSWYgdGhpcyBpcyBhIGNhc2UsIHRoZSByZXN1bHQgdHlwZSB3aWxsIGJlIGFub3RoZXIgbGFtYmRhIGZ1bmN0b3IuCi0KLS8vIFRoZSBhcmd1bWVudHMgYXJlIGFsd2F5cyBub24tcmVmZXJlbmNlIHR5cGVzLCBleGNlcHQgZm9yIGNvbW1hIGFjdGlvbgotLy8gd2hlcmUgdGhlIHJpZ2h0IGFyZ3VtZW50IGNhbiBiZSBhIHJlZmVyZW5jZSB0b28uIFRoaXMgaXMgYmVjYXVzZSBpdCAKLS8vIG1hdHRlcnMgKGluIHRoZSBidWlsdGluIGNhc2UpIHdoZXRoZXIgdGhlIGFyZ3VtZW50IGlzIGFuIGx2YWx1ZSBvciAKLS8vIHJ2YWx1ZTogaW50IGk7IGksIDEgLT4gcnZhbHVlOyAxLCBpIC0+IGx2YWx1ZQotCi10ZW1wbGF0ZSA8Y2xhc3MgQWN0LCBjbGFzcyBBPiBzdHJ1Y3QgcmV0dXJuX3R5cGVfMV9wcm90IHsKLXB1YmxpYzoKLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICBkZXRhaWw6OklGPAotICAvLyAgICAgIGlzX3Byb3RlY3RhYmxlPEFjdD46OnZhbHVlICYmIGlzX2xhbWJkYV9mdW5jdG9yPEE+Ojp2YWx1ZSwKLSAgICAgIGljZV9hbmQ8aXNfcHJvdGVjdGFibGU8QWN0Pjo6dmFsdWUsIGlzX2xhbWJkYV9mdW5jdG9yPEE+Ojp2YWx1ZT46OnZhbHVlLAotICAgICAgbGFtYmRhX2Z1bmN0b3I8Ci0gICAgICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8IAotICAgICAgICAgIEFjdCwgCi0gICAgICAgICAgdHVwbGU8dHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxBPjo6dHlwZT4KLSAgICAgICAgPgotICAgICAgPiwKLSAgICAgIHR5cGVuYW1lIHJldHVybl90eXBlXzE8QWN0LCBBPjo6dHlwZQotICAgID46OlJFVCB0eXBlOyAgCi19OwotCi0gIC8vIHRha2UgY2FyZSBvZiB0aGUgdW5hdm9pZGFibGUgaW5zdGFudGlhdGlvbiBmb3IgbnVsbGFyeSBjYXNlCi10ZW1wbGF0ZTxjbGFzcyBBY3Q+IHN0cnVjdCByZXR1cm5fdHlwZV8xX3Byb3Q8QWN0LCBudWxsX3R5cGU+IHsKLSAgdHlwZWRlZiBudWxsX3R5cGUgdHlwZTsKLX07Ci0gCi0vLyBVbmFyeSBhY3Rpb25zIChyZXN1bHQgZnJvbSB1bmFyeSBvcGVyYXRvcnMpCi0vLyBkbyBub3QgaGF2ZSBhIGRlZmF1bHQgcmV0dXJuIHR5cGUuCi10ZW1wbGF0ZTxjbGFzcyBBY3QsIGNsYXNzIEE+IHN0cnVjdCByZXR1cm5fdHlwZV8xIHsgCi0gICB0eXBlZGVmIHR5cGVuYW1lIAotICAgICBkZXRhaWw6OnJldHVybl90eXBlX2RlZHVjdGlvbl9mYWlsdXJlPHJldHVybl90eXBlXzE+IHR5cGU7Ci19OwotCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0gIHRlbXBsYXRlIDxjbGFzcyBUPgotICBjbGFzcyBwcm90ZWN0X2NvbnZlcnNpb24gewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZSBub25fcmVmX1Q7Ci0gICAgcHVibGljOgotCi0gIC8vIGFkZCBjb25zdCB0byBydmFsdWVzLCBzbyB0aGF0IGFsbCBydmFsdWVzIGFyZSBzdG9yZWQgYXMgY29uc3QgaW4gCi0gIC8vIHRoZSBhcmdzIHR1cGxlCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OklGX3R5cGU8Ci0vLyAgICAgIG5kbmJvb3N0Ojppc19yZWZlcmVuY2U8VD46OnZhbHVlICYmICFuZG5ib29zdDo6aXNfY29uc3Q8bm9uX3JlZl9UPjo6dmFsdWUsCi0gICAgICBpY2VfYW5kPG5kbmJvb3N0Ojppc19yZWZlcmVuY2U8VD46OnZhbHVlLAotICAgICAgICAgICAgICBpY2Vfbm90PG5kbmJvb3N0Ojppc19jb25zdDxub25fcmVmX1Q+Ojp2YWx1ZT46OnZhbHVlPjo6dmFsdWUsCi0gICAgICBkZXRhaWw6OmlkZW50aXR5X21hcHBpbmc8VD4sCi0gICAgICBjb25zdF9jb3B5X2FyZ3VtZW50PG5vbl9yZWZfVD4gLy8gaGFuZGxlcyBmdW50aW9uIGFuZCBhcnJheSAKLSAgICA+Ojp0eXBlIHR5cGU7ICAgICAgICAgICAgICAgICAgICAgIC8vIHR5cGVzIGNvcnJlY3RseQotICB9OwotCi19IC8vIGVuZCBkZXRhaWwKLQotdGVtcGxhdGUgPGNsYXNzIEFjdCwgY2xhc3MgQSwgY2xhc3MgQj4gc3RydWN0IHJldHVybl90eXBlXzJfcHJvdCB7Ci0KLS8vIGV4cGVyaW1lbnRhbCBmZWF0dXJlCi0gIC8vIFdlIG1heSBoYXZlIGEgbGFtYmRhIGZ1bmN0b3IgYXMgYSByZXN1bHQgdHlwZSBvZiBhIHN1YmV4cHJlc3Npb24gCi0gIC8vIChpZiBwcm90ZWN0KSBoYXMgIGJlZW4gdXNlZC4KLSAgLy8gVGh1cywgaWYgb25lIG9mIHRoZSBwYXJhbWV0ZXIgdHlwZXMgaXMgYSBsYW1iZGEgZnVuY3RvciwgdGhlIHJlc3VsdAotICAvLyBpcyBhIGxhbWJkYSBmdW5jdG9yIGFzIHdlbGwuIAotICAvLyBXZSBuZWVkIHRvIG1ha2UgYSBjb25zZXJ2YXRpdmUgY2hvaXNlIGhlcmUuCi0gIC8vIFRoZSByZXN1bHRpbmcgbGFtYmRhIGZ1bmN0b3Igc3RvcmVzIGFsbCBjb25zdCByZWZlcmVuY2UgYXJndW1lbnRzIGFzCi0gIC8vIGNvbnN0IGNvcGllcy4gUmVmZXJlbmNlcyB0byBub24tY29uc3QgYXJlIHN0b3JlZCBhcyBzdWNoLgotICAvLyBTbyBpZiB0aGUgc291cmNlIG9mIHRoZSBhcmd1bWVudCBpcyBhIGNvbnN0IG9wZW4gYXJndW1lbnQsIGEgYm91bmQKLSAgLy8gYXJndW1lbnQgc3RvcmVkIGFzIGEgY29uc3QgcmVmZXJlbmNlLCBvciBhIGZ1bmN0aW9uIHJldHVybmluZyBhIAotICAvLyBjb25zdCByZWZlcmVuY2UsIHRoYXQgaW5mb3JtYXRpb24gaXMgbG9zdC4gVGhlcmUgaXMgbm8gd2F5IG9mIAotICAvLyB0ZWxsaW5nIGFwYXJ0ICdyZWFsIGNvbnN0IHJlZmVyZW5jZXMnIGZyb20ganVzdCAnTEwgaW50ZXJuYWwKLSAgLy8gY29uc3QgcmVmZXJlbmNlcycgKG9yIGl0IHdvdWxkIGJlIHJlYWxseSBoYXJkKQotCi0gIC8vIFRoZSByZXR1cm4gdHlwZSBpcyBhIHN1YmNsYXNzIG9mIGxhbWJkYV9mdW5jdG9yLCB3aGljaCBoYXMgYSBjb252ZXJ0aW5nIAotICAvLyBjb3B5IGNvbnN0cnVjdG9yLiBJdCBjYW4gY29weSBhbnkgbGFtYmRhIGZ1bmN0b3IsIHRoYXQgaGFzIHRoZSBzYW1lIAotICAvLyBhY3Rpb24gdHlwZSBhbmQgY29kZSwgYW5kIGEgY29weSBjb21wYXRpYmxlIGFyZ3VtZW50IHR1cGxlLgotCi0KLSAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTxBPjo6dHlwZSBub25fcmVmX0E7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9yZWZlcmVuY2U8Qj46OnR5cGUgbm9uX3JlZl9COwotCi10eXBlZGVmIHR5cGVuYW1lIAotICBkZXRhaWw6OklGPAotLy8gICAgaXNfcHJvdGVjdGFibGU8QWN0Pjo6dmFsdWUgJiYKLS8vICAgICAgKGlzX2xhbWJkYV9mdW5jdG9yPEE+Ojp2YWx1ZSB8fCBpc19sYW1iZGFfZnVuY3RvcjxCPjo6dmFsdWUpLAotICAgIGljZV9hbmQ8aXNfcHJvdGVjdGFibGU8QWN0Pjo6dmFsdWUsCi0gICAgICAgICAgICBpY2Vfb3I8aXNfbGFtYmRhX2Z1bmN0b3I8QT46OnZhbHVlLCAKLSAgICAgICAgICAgICAgICAgICBpc19sYW1iZGFfZnVuY3RvcjxCPjo6dmFsdWU+Ojp2YWx1ZT46OnZhbHVlLAotICAgIGxhbWJkYV9mdW5jdG9yPAotICAgICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwgCi0gICAgICAgIEFjdCwgCi0gICAgICAgIHR1cGxlPHR5cGVuYW1lIGRldGFpbDo6cHJvdGVjdF9jb252ZXJzaW9uPEE+Ojp0eXBlLCAKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZGV0YWlsOjpwcm90ZWN0X2NvbnZlcnNpb248Qj46OnR5cGU+Ci0gICAgICA+Ci0gICAgPiwKLSAgICB0eXBlbmFtZSByZXR1cm5fdHlwZV8yPEFjdCwgbm9uX3JlZl9BLCBub25fcmVmX0I+Ojp0eXBlCi0gID46OlJFVCB0eXBlOwotfTsKLQotICAvLyB0YWtlIGNhcmUgb2YgdGhlIHVuYXZvaWRhYmxlIGluc3RhbnRpYXRpb24gZm9yIG51bGxhcnkgY2FzZQotdGVtcGxhdGU8Y2xhc3MgQWN0PiBzdHJ1Y3QgcmV0dXJuX3R5cGVfMl9wcm90PEFjdCwgbnVsbF90eXBlLCBudWxsX3R5cGU+IHsKLSAgdHlwZWRlZiBudWxsX3R5cGUgdHlwZTsKLX07Ci0gIC8vIHRha2UgY2FyZSBvZiB0aGUgdW5hdm9pZGFibGUgaW5zdGFudGlhdGlvbiBmb3IgbnVsbGFyeSBjYXNlCi10ZW1wbGF0ZTxjbGFzcyBBY3QsIGNsYXNzIE90aGVyPiBzdHJ1Y3QgcmV0dXJuX3R5cGVfMl9wcm90PEFjdCwgT3RoZXIsIG51bGxfdHlwZT4gewotICB0eXBlZGVmIG51bGxfdHlwZSB0eXBlOwotfTsKLSAgLy8gdGFrZSBjYXJlIG9mIHRoZSB1bmF2b2lkYWJsZSBpbnN0YW50aWF0aW9uIGZvciBudWxsYXJ5IGNhc2UKLXRlbXBsYXRlPGNsYXNzIEFjdCwgY2xhc3MgT3RoZXI+IHN0cnVjdCByZXR1cm5fdHlwZV8yX3Byb3Q8QWN0LCBudWxsX3R5cGUsIE90aGVyPiB7Ci0gIHR5cGVkZWYgbnVsbF90eXBlIHR5cGU7Ci19OwotCi0gIC8vIGNvbW1hIGlzIGEgc3BlY2lhbCBjYXNlLCBhcyB0aGUgdXNlciBkZWZpbmVkIG9wZXJhdG9yIGNhbiByZXR1cm4KLSAgLy8gYW4gbHZhbHVlIChyZWZlcmVuY2UpIHRvbywgaGVuY2UgaXQgbXVzdCBiZSBoYW5kbGVkIGF0IHRoaXMgbGV2ZWwuCi10ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCPiAKLXN0cnVjdCByZXR1cm5fdHlwZV8yX2NvbW1hCi17Ci0gIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9yZWZlcmVuY2U8QT46OnR5cGUgbm9uX3JlZl9BOwotICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfcmVmZXJlbmNlPEI+Ojp0eXBlIG5vbl9yZWZfQjsKLQotdHlwZWRlZiB0eXBlbmFtZSAKLSAgZGV0YWlsOjpJRjwKLS8vICBpc19wcm90ZWN0YWJsZTxvdGhlcl9hY3Rpb248Y29tbWFfYWN0aW9uPiA+Ojp2YWx1ZSAmJiAvLyBpdCBpcyBwcm90ZWN0YWJsZQotLy8gIChpc19sYW1iZGFfZnVuY3RvcjxBPjo6dmFsdWUgfHwgaXNfbGFtYmRhX2Z1bmN0b3I8Qj46OnZhbHVlKSwKLSAgICBpY2VfYW5kPGlzX3Byb3RlY3RhYmxlPG90aGVyX2FjdGlvbjxjb21tYV9hY3Rpb24+ID46OnZhbHVlLCAvLyBpdCBpcyBwcm90ZWN0YWJsZQotICAgICAgICAgICAgaWNlX29yPGlzX2xhbWJkYV9mdW5jdG9yPEE+Ojp2YWx1ZSwgCi0gICAgICAgICAgICAgICAgICAgaXNfbGFtYmRhX2Z1bmN0b3I8Qj46OnZhbHVlPjo6dmFsdWU+Ojp2YWx1ZSwKLSAgICBsYW1iZGFfZnVuY3RvcjwKLSAgICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8IAotICAgICAgICBvdGhlcl9hY3Rpb248Y29tbWFfYWN0aW9uPiwgCi0gICAgICAgIHR1cGxlPHR5cGVuYW1lIGRldGFpbDo6cHJvdGVjdF9jb252ZXJzaW9uPEE+Ojp0eXBlLCAKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZGV0YWlsOjpwcm90ZWN0X2NvbnZlcnNpb248Qj46OnR5cGU+Ci0gICAgICA+Ci0gICAgPiwKLSAgICB0eXBlbmFtZSAKLSAgICAgIHJldHVybl90eXBlXzI8b3RoZXJfYWN0aW9uPGNvbW1hX2FjdGlvbj4sIG5vbl9yZWZfQSwgbm9uX3JlZl9CPjo6dHlwZQotICA+OjpSRVQgdHlwZTE7Ci0KLSAgIC8vIGlmIG5vIHVzZXIgZGVmaW5lZCByZXR1cm5fdHlwZV8yIChvciBwbGFpbl9yZXR1cm5fdHlwZV8yKSBzcGVjaWFsaXphdGlvbgotICAvLyBtYXRjaGVzLCB0aGVuIHJldHVybiB0aGUgcmlnaHRoYW5kIGFyZ3VtZW50Ci0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgZGV0YWlsOjpJRjwKLSAgICAgIG5kbmJvb3N0Ojppc19zYW1lPHR5cGUxLCBkZXRhaWw6OnVuc3BlY2lmaWVkPjo6dmFsdWUsIAotICAgICAgQiwKLSAgICAgIHR5cGUxCi0gICAgPjo6UkVUIHR5cGU7Ci0KLX07Ci0KLQotICAvLyBjdXJyZW50bHkgdGhlcmUgYXJlIG5vIHByb3RlY3RhYmxlIGFjdGlvbnMgd2l0aCA+IDIgYXJncwotCi10ZW1wbGF0ZTxjbGFzcyBBY3QsIGNsYXNzIEFyZ3M+IHN0cnVjdCByZXR1cm5fdHlwZV9OX3Byb3QgewotICB0eXBlZGVmIHR5cGVuYW1lIHJldHVybl90eXBlX048QWN0LCBBcmdzPjo6dHlwZSB0eXBlOwotfTsKLQotICAvLyB0YWtlIGNhcmUgb2YgdGhlIHVuYXZvaWRhYmxlIGluc3RhbnRpYXRpb24gZm9yIG51bGxhcnkgY2FzZQotdGVtcGxhdGU8Y2xhc3MgQWN0PiBzdHJ1Y3QgcmV0dXJuX3R5cGVfTl9wcm90PEFjdCwgbnVsbF90eXBlPiB7Ci0gIHR5cGVkZWYgbnVsbF90eXBlIHR5cGU7Ci19OwotCi0vLyBoYW5kbGUgZGlmZmVyZW50IGtpbmQgb2YgYWN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAvLyB1c2UgdGhlIHJldHVybiB0eXBlIGdpdmVuIGluIHRoZSBiaW5kIGludm9jYXRpb24gYXMgYmluZDxSZXQ+KC4uLikKLXRlbXBsYXRlPGludCBJLCBjbGFzcyBBcmdzLCBjbGFzcyBSZXQ+IAotc3RydWN0IHJldHVybl90eXBlX048ZnVuY3Rpb25fYWN0aW9uPEksIFJldD4sIEFyZ3M+IHsgCi0gIHR5cGVkZWYgUmV0IHR5cGU7Ci19OwotCi0vLyA6OnJlc3VsdF90eXBlIHN1cHBvcnQKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi1ORE5CT09TVF9NUExfSEFTX1hYWF9UUkFJVF9ERUYocmVzdWx0X3R5cGUpCi0KLXRlbXBsYXRlPGNsYXNzIEY+IHN0cnVjdCBnZXRfcmVzdWx0X3R5cGUKLXsKLSAgdHlwZWRlZiB0eXBlbmFtZSBGOjpyZXN1bHRfdHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgQT4gc3RydWN0IGdldF9zaWcKLXsKLSAgdHlwZWRlZiB0eXBlbmFtZSBmdW5jdGlvbl9hZGFwdG9yPEY+Ojp0ZW1wbGF0ZSBzaWc8QT46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0gIC8vIFJldCBpcyBkZXRhaWw6OnVuc3BlY2lmaWVkLCBzbyB0cnkgdG8gZGVkdWNlIHJldHVybiB0eXBlCi10ZW1wbGF0ZTxpbnQgSSwgY2xhc3MgQXJncz4gCi1zdHJ1Y3QgcmV0dXJuX3R5cGVfTjxmdW5jdGlvbl9hY3Rpb248SSwgZGV0YWlsOjp1bnNwZWNpZmllZD4sIEFyZ3MgPiB7IAotCi0gIC8vIGluIHRoZSBjYXNlIG9mIGZ1bmN0aW9uIGFjdGlvbiwgdGhlIGZpcnN0IGVsZW1lbnQgaW4gQXJncyBpcyAKLSAgLy8gc29tZSB0eXBlIG9mIGZ1bmN0aW9uCi0gIHR5cGVkZWYgdHlwZW5hbWUgQXJnczo6aGVhZF90eXBlIEZ1bmM7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxGdW5jPjo6dHlwZSBwbGFpbl9GdW5jOwotCi1wdWJsaWM6IAotICAvLyBwYXNzIHRoZSBmdW5jdGlvbiB0byBmdW5jdGlvbl9hZGFwdG9yLCBhbmQgZ2V0IHRoZSByZXR1cm4gdHlwZSBmcm9tIAotICAvLyB0aGF0Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpJRjwKLSAgICBkZXRhaWw6Omhhc19yZXN1bHRfdHlwZTxwbGFpbl9GdW5jPjo6dmFsdWUsCi0gICAgZGV0YWlsOjpnZXRfcmVzdWx0X3R5cGU8cGxhaW5fRnVuYz4sCi0gICAgZGV0YWlsOjpnZXRfc2lnPHBsYWluX0Z1bmMsIEFyZ3M+Ci0gID46OlJFVDo6dHlwZSB0eXBlOwotfTsKLQotCi19IC8vIG5hbWVzcGFjZSBsYW1iZGEKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZgotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL3NlbGVjdF9mdW5jdGlvbnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL3NlbGVjdF9mdW5jdGlvbnMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTVjZTA1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9zZWxlY3RfZnVuY3Rpb25zLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLS8vIC0tIHNlbGVjdF9mdW5jdGlvbnMuaHBwIC0tIEJvb3N0IExhbWJkYSBMaWJyYXJ5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMCBKYWFra28gSmFydmkgKGphYWtrby5qYXJ2aUBjcy51dHUuZmkpCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcKLQotCi0jaWZuZGVmIE5ETkJPT1NUX0xBTUJEQV9TRUxFQ1RfRlVOQ1RJT05TX0hQUAotI2RlZmluZSBORE5CT09TVF9MQU1CREFfU0VMRUNUX0ZVTkNUSU9OU19IUFAKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgCi1uYW1lc3BhY2UgbGFtYmRhIHsKLW5hbWVzcGFjZSBkZXRhaWwgewotCi0KLS8vIHNlbGVjdCBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotdGVtcGxhdGU8Y2xhc3MgQW55LCBDQUxMX1RFTVBMQVRFX0FSR1M+Ci1pbmxpbmUgQW55JiBzZWxlY3QoQW55JiBhbnksIENBTExfRk9STUFMX0FSR1MpIHsgQ0FMTF9VU0VfQVJHUzsgcmV0dXJuIGFueTsgfQotCi0KLXRlbXBsYXRlPGNsYXNzIEFyZywgQ0FMTF9URU1QTEFURV9BUkdTPgotaW5saW5lIHR5cGVuYW1lIEFyZzo6dGVtcGxhdGUgc2lnPHR1cGxlPENBTExfUkVGRVJFTkNFX1RZUEVTPiA+Ojp0eXBlCi1zZWxlY3QgKCBjb25zdCBsYW1iZGFfZnVuY3RvcjxBcmc+JiBvcCwgQ0FMTF9GT1JNQUxfQVJHUyApIHsgCi0gIHJldHVybiBvcC50ZW1wbGF0ZSBjYWxsPAotICAgIHR5cGVuYW1lIEFyZzo6dGVtcGxhdGUgc2lnPHR1cGxlPENBTExfUkVGRVJFTkNFX1RZUEVTPiA+Ojp0eXBlCi0gID4oQ0FMTF9BQ1RVQUxfQVJHUyk7IAotfQotdGVtcGxhdGU8Y2xhc3MgQXJnLCBDQUxMX1RFTVBMQVRFX0FSR1M+Ci1pbmxpbmUgdHlwZW5hbWUgQXJnOjp0ZW1wbGF0ZSBzaWc8dHVwbGU8Q0FMTF9SRUZFUkVOQ0VfVFlQRVM+ID46OnR5cGUKLXNlbGVjdCAoIGxhbWJkYV9mdW5jdG9yPEFyZz4mIG9wLCBDQUxMX0ZPUk1BTF9BUkdTKSB7IAotICByZXR1cm4gb3AudGVtcGxhdGUgY2FsbDwKLSAgICB0eXBlbmFtZSBBcmc6OnRlbXBsYXRlIHNpZzx0dXBsZTxDQUxMX1JFRkVSRU5DRV9UWVBFUz4gPjo6dHlwZQotICA+KENBTExfQUNUVUFMX0FSR1MpOyAKLX0KLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBzZWxlY3QgZnVuY3Rpb25zIHdoZXJlIHRoZSByZXR1cm4gdHlwZSBpcyBleHBsaWNpdGx5IGdpdmVuCi0vLyBOb3RlOiBvbiBtYW55IGZ1bmN0aW9ucywgdGhpcyByZXR1cm4gdHlwZSBpcyBqdXN0IGRpc2NhcmRlZC4KLS8vIFRoZSBzZWxlY3QgZnVuY3Rpb25zIGFyZSBpbnNpZGUgYSBjbGFzcyB0ZW1wbGF0ZSwgYW5kIHRoZSByZXR1cm4gdHlwZQotLy8gaXMgYSBjbGFzcyB0ZW1wbGF0ZSBhcmd1bWVudC4KLS8vIFRoZSBmaXJzdCBpbXBsZW1lbnRhdGlvbiB1c2VkIGZ1bmN0aW9uIHRlbXBsYXRlcyB3aXRoIGFuIGV4cGxpY2l0bHkgCi0vLyBzcGVjaWZpZWQgdGVtcGxhdGUgcGFyYW1ldGVyLgotLy8gSG93ZXZlciwgdGhpcyByZXN1bHRlZCBpbiBhbWJpZ3VvdXMgY2FsbHMgKGF0IGxlYXN0IHdpdGggZ2NjIDIuOTUuMiAKLS8vIGFuZCBlZGcgMi40NCkuIE5vdCBzdXJlIHdoZXRoZXIgdGhlIGNvbXBpbGVycyB3ZXJlIHJpZ2h0IG9yIHdyb25nLiAKLSAgCi10ZW1wbGF0ZTxjbGFzcyBSRVQ+IHN0cnVjdCByX3NlbGVjdCB7Ci0KLS8vIEFueSA9PSBSRVQKLSAgdGVtcGxhdGU8Y2xhc3MgQW55LCBDQUxMX1RFTVBMQVRFX0FSR1M+Ci0gIHN0YXRpYyAKLSAgaW5saW5lIFJFVCBnbyAoQW55JiBhbnksIENBTExfRk9STUFMX0FSR1MpIHsgQ0FMTF9VU0VfQVJHUzsgcmV0dXJuIGFueTsgfQotCi0KLSAgdGVtcGxhdGU8Y2xhc3MgQXJnLCBDQUxMX1RFTVBMQVRFX0FSR1M+IAotICBzdGF0aWMgCi0gIGlubGluZSBSRVQgZ28gKGNvbnN0IGxhbWJkYV9mdW5jdG9yPEFyZz4mIG9wLCBDQUxMX0ZPUk1BTF9BUkdTICkgewotICAgIHJldHVybiBvcC50ZW1wbGF0ZSBjYWxsPFJFVD4oQ0FMTF9BQ1RVQUxfQVJHUyk7IAotICB9Ci0gIHRlbXBsYXRlPGNsYXNzIEFyZywgQ0FMTF9URU1QTEFURV9BUkdTPiAKLSAgc3RhdGljIAotICBpbmxpbmUgUkVUIGdvIChsYW1iZGFfZnVuY3RvcjxBcmc+JiBvcCwgQ0FMTF9GT1JNQUxfQVJHUyApIHsgCi0gICAgcmV0dXJuIG9wLnRlbXBsYXRlIGNhbGw8UkVUPihDQUxMX0FDVFVBTF9BUkdTKTsgCi0gIH0KLX07Ci0gICAKLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotfSAvLyBuYW1lc3BhY2UgbGFtYmRhCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2xhbWJkYS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9sYW1iZGEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNDM0NjUyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2xhbWJkYS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vLyAtLSBsYW1iZGEuaHBwIC0tIEJvb3N0IExhbWJkYSBMaWJyYXJ5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAgSmFha2tvIEphcnZpIChqYWFra28uamFydmlAY3MudXR1LmZpKQotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly9sYW1iZGEuY3MudXR1LmZpIAotCi0jaWZuZGVmIE5ETkJPT1NUX0xBTUJEQV9MQU1CREFfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9MQU1CREFfSFBQCi0KLQotI2luY2x1ZGUgIm5kbmJvb3N0L2xhbWJkYS9jb3JlLmhwcCIKLQotI2lmZGVmIE5ETkJPT1NUX05PX0ZERUNMX1RFTVBMQVRFU19BU19URU1QTEFURV9URU1QTEFURV9QQVJBTVMKLSNpbmNsdWRlIDxpc3RyZWFtPgotI2luY2x1ZGUgPG9zdHJlYW0+Ci0jZW5kaWYKLQotI2luY2x1ZGUgIm5kbmJvb3N0L2xhbWJkYS9kZXRhaWwvb3BlcmF0b3JfYWN0aW9ucy5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbGFtYmRhL2RldGFpbC9vcGVyYXRvcl9sYW1iZGFfZnVuY19iYXNlLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9sYW1iZGEvZGV0YWlsL29wZXJhdG9yX3JldHVybl90eXBlX3RyYWl0cy5ocHAiCi0KLQotI2luY2x1ZGUgIm5kbmJvb3N0L2xhbWJkYS9kZXRhaWwvb3BlcmF0b3JzLmhwcCIKLQotI2lmbmRlZiBORE5CT09TVF9MQU1CREFfRkFJTFNfSU5fVEVNUExBVEVfS0VZV09SRF9BRlRFUl9TQ09QRV9PUEVSCi0vLyBzb3JyeSwgbWVtYmVyIHB0ciBkb2VzIG5vdCB3b3JrIHdpdGggZ2NjMi45NQotI2luY2x1ZGUgIm5kbmJvb3N0L2xhbWJkYS9kZXRhaWwvbWVtYmVyX3B0ci5ocHAiCi0jZW5kaWYKLQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbGV4aWNhbF9jYXN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbGV4aWNhbF9jYXN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODI4YTFmMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2xleGljYWxfY2FzdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNzI1ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfTEVYSUNBTF9DQVNUX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0xFWElDQUxfQ0FTVF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8gQm9vc3QgbGV4aWNhbF9jYXN0LmhwcCBoZWFkZXIgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2NvbnZlcnNpb24gZm9yIGRvY3VtZW50YXRpb24uCi0vLyBTZWUgZW5kIG9mIHRoaXMgaGVhZGVyIGZvciByaWdodHMgYW5kIHBlcm1pc3Npb25zLgotLy8KLS8vIHdoYXQ6ICBsZXhpY2FsX2Nhc3QgY3VzdG9tIGtleXdvcmQgY2FzdAotLy8gd2hvOiAgIGNvbnRyaWJ1dGVkIGJ5IEtldmxpbiBIZW5uZXksCi0vLyAgICAgICAgZW5oYW5jZWQgd2l0aCBjb250cmlidXRpb25zIGZyb20gVGVyamUgU2xldHRlYm8sCi0vLyAgICAgICAgd2l0aCBhZGRpdGlvbmFsIGZpeGVzIGFuZCBzdWdnZXN0aW9ucyBmcm9tIEdlbm5hcm8gUHJvdGEsCi0vLyAgICAgICAgQmVtYW4gRGF3ZXMsIERhdmUgQWJyYWhhbXMsIERhcnlsZSBXYWxrZXIsIFBldGVyIERpbW92LAotLy8gICAgICAgIEFsZXhhbmRlciBOYXNvbm92LCBBbnRvbnkgUG9sdWtoaW4sIEp1c3RpbiBWaWlyZXQsIE1pY2hhZWwgSG9mbWFubiwKLS8vICAgICAgICBDaGVuZyBZYW5nLCBNYXR0aGV3IEJyYWRidXJ5LCBEYXZpZCBXLiBCaXJkc2FsbCwgUGF2ZWwgS29yemggYW5kIG90aGVyIEJvb3N0ZXJzCi0vLyB3aGVuOiAgTm92ZW1iZXIgMjAwMCwgTWFyY2ggMjAwMywgSnVuZSAyMDA1LCBKdW5lIDIwMDYsIE1hcmNoIDIwMTEgLSAyMDEzCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fU1RSSU5HU1RSRUFNKSB8fCBkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9XU1RSSU5HKQotI2RlZmluZSBORE5CT09TVF9MQ0FTVF9OT19XQ0hBUl9UCi0jZW5kaWYKLQotI2luY2x1ZGUgPGNsaW1pdHM+Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8Y3N0cmluZz4KLSNpbmNsdWRlIDxjc3RkaW8+Ci0jaW5jbHVkZSA8dHlwZWluZm8+Ci0jaW5jbHVkZSA8ZXhjZXB0aW9uPgotI2luY2x1ZGUgPG5kbmJvb3N0L2xpbWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90aHJvd19leGNlcHRpb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ljZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9pbnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL2xjYXN0X3ByZWNpc2lvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0xPQ0FMRQotIyAgIGluY2x1ZGUgPGxvY2FsZT4KLSNlbHNlCi0jICAgaWZuZGVmIE5ETkJPT1NUX0xFWElDQUxfQ0FTVF9BU1NVTUVfQ19MT0NBTEUKLSAgICAgICAgLy8gR2V0dGluZyBlcnJvciBhdCB0aGlzIHBvaW50IG1lYW5zLCB0aGF0IHlvdXIgU1RMIGxpYnJhcnkgaXMgb2xkL2xhbWUvbWlzY29uZmlndXJlZC4KLSAgICAgICAgLy8gSWYgbm90aGluZyBjYW4gYmUgZG9uZSB3aXRoIFNUTCBsaWJyYXJ5LCBkZWZpbmUgTkROQk9PU1RfTEVYSUNBTF9DQVNUX0FTU1VNRV9DX0xPQ0FMRSwKLSAgICAgICAgLy8gYnV0IGJld2FyZTogbGV4aWNhbF9jYXN0IHdpbGwgdW5kZXJzdGFuZCBvbmx5ICdDJyBsb2NhbGUgZGVsaW1ldGVycyBhbmQgdGhvdXNhbmRzCi0gICAgICAgIC8vIHNlcGFyYXRvcnMuCi0jICAgICAgIGVycm9yICJVbmFibGUgdG8gdXNlIDxsb2NhbGU+IGhlYWRlci4gRGVmaW5lIE5ETkJPT1NUX0xFWElDQUxfQ0FTVF9BU1NVTUVfQ19MT0NBTEUgdG8gZm9yY2UgIgotIyAgICAgICBlcnJvciAibmRuYm9vc3Q6OmxleGljYWxfY2FzdCB0byB1c2Ugb25seSAnQycgbG9jYWxlIGR1cmluZyBjb252ZXJzaW9ucy4iCi0jICAgZW5kaWYKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTk9fU1RSSU5HU1RSRUFNCi0jaW5jbHVkZSA8c3Ryc3RyZWFtPgotI2Vsc2UKLSNpbmNsdWRlIDxzc3RyZWFtPgotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9OT19UWVBFSUQKLSNkZWZpbmUgTkROQk9PU1RfTENBU1RfVEhST1dfQkFEX0NBU1QoUywgVCkgdGhyb3dfZXhjZXB0aW9uKGJhZF9sZXhpY2FsX2Nhc3QoKSkKLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX0xDQVNUX1RIUk9XX0JBRF9DQVNUKFNvdXJjZSwgVGFyZ2V0KSBcCi0gICAgdGhyb3dfZXhjZXB0aW9uKGJhZF9sZXhpY2FsX2Nhc3QodHlwZWlkKFNvdXJjZSksIHR5cGVpZChUYXJnZXQpKSkKLSNlbmRpZgotCi0jaWYgKGRlZmluZWQoTkROQk9PU1RfTENBU1RfSEFTX0lOVDEyOCkgJiYgIWRlZmluZWQoX19HTlVDX18pKSB8fCBHQ0NfVkVSU0lPTiA+IDQwNzAwCi0jZGVmaW5lIE5ETkJPT1NUX0xDQVNUX0hBU19JTlQxMjgKLSNlbmRpZgotCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIC8vIGV4Y2VwdGlvbiB1c2VkIHRvIGluZGljYXRlIHJ1bnRpbWUgbGV4aWNhbF9jYXN0IGZhaWx1cmUKLSAgICBjbGFzcyBORE5CT09TVF9TWU1CT0xfVklTSUJMRSBiYWRfbGV4aWNhbF9jYXN0IDoKLSAgICAvLyB3b3JrYXJvdW5kIE1TVkMgYnVnIHdpdGggc3RkOjpiYWRfY2FzdCB3aGVuIF9IQVNfRVhDRVBUSU9OUyA9PSAwIAotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgZGVmaW5lZChfSEFTX0VYQ0VQVElPTlMpICYmICFfSEFTX0VYQ0VQVElPTlMgCi0gICAgICAgIHB1YmxpYyBzdGQ6OmV4Y2VwdGlvbiAKLSNlbHNlIAotICAgICAgICBwdWJsaWMgc3RkOjpiYWRfY2FzdCAKLSNlbmRpZiAKLQotI2lmIGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKCBfX0JPUkxBTkRDX18sIDwgMHg1NjAgKQotICAgICAgICAvLyB1bmRlciBiY2MzMiA1LjUuMSBiYWRfY2FzdCBkb2Vzbid0IGRlcml2ZSBmcm9tIGV4Y2VwdGlvbgotICAgICAgICAsIHB1YmxpYyBzdGQ6OmV4Y2VwdGlvbgotI2VuZGlmCi0KLSAgICB7Ci0gICAgcHVibGljOgotICAgICAgICBiYWRfbGV4aWNhbF9jYXN0KCkgTkROQk9PU1RfTk9FWENFUFQgOgotI2lmbmRlZiBORE5CT09TVF9OT19UWVBFSUQKLSAgICAgICAgICBzb3VyY2UoJnR5cGVpZCh2b2lkKSksIHRhcmdldCgmdHlwZWlkKHZvaWQpKQotI2Vsc2UKLSAgICAgICAgICBzb3VyY2UoMCksIHRhcmdldCgwKSAvLyB0aGlzIGJyZWFrcyBnZXR0ZXJzCi0jZW5kaWYKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgYmFkX2xleGljYWxfY2FzdCgKLSAgICAgICAgICAgIGNvbnN0IHN0ZDo6dHlwZV9pbmZvICZzb3VyY2VfdHlwZV9hcmcsCi0gICAgICAgICAgICBjb25zdCBzdGQ6OnR5cGVfaW5mbyAmdGFyZ2V0X3R5cGVfYXJnKSBORE5CT09TVF9OT0VYQ0VQVCA6Ci0gICAgICAgICAgICBzb3VyY2UoJnNvdXJjZV90eXBlX2FyZyksIHRhcmdldCgmdGFyZ2V0X3R5cGVfYXJnKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdCBzdGQ6OnR5cGVfaW5mbyAmc291cmNlX3R5cGUoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKnNvdXJjZTsKLSAgICAgICAgfQotICAgICAgICBjb25zdCBzdGQ6OnR5cGVfaW5mbyAmdGFyZ2V0X3R5cGUoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKnRhcmdldDsKLSAgICAgICAgfQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX05PRVhDRVBUCi0gICAgICAgIHZpcnR1YWwgY29uc3QgY2hhciAqd2hhdCgpIGNvbnN0IG5vZXhjZXB0Ci0jZWxzZQotICAgICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIgKndoYXQoKSBjb25zdCB0aHJvdygpCi0jZW5kaWYKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICJiYWQgbGV4aWNhbCBjYXN0OiAiCi0gICAgICAgICAgICAgICAgICAgInNvdXJjZSB0eXBlIHZhbHVlIGNvdWxkIG5vdCBiZSBpbnRlcnByZXRlZCBhcyB0YXJnZXQiOwotICAgICAgICB9Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfTk9FWENFUFQKLSAgICAgICAgdmlydHVhbCB+YmFkX2xleGljYWxfY2FzdCgpIE5ETkJPT1NUX05PRVhDRVBUCi0jZWxzZQotICAgICAgICB2aXJ0dWFsIH5iYWRfbGV4aWNhbF9jYXN0KCkgdGhyb3coKQotI2VuZGlmCi0gICAgICAgIHt9Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgY29uc3Qgc3RkOjp0eXBlX2luZm8gKnNvdXJjZTsKLSAgICAgICAgY29uc3Qgc3RkOjp0eXBlX2luZm8gKnRhcmdldDsKLSAgICB9OwotCi0gICAgbmFtZXNwYWNlIGRldGFpbCAvLyB3aWRlc3RfY2hhcgotICAgIHsKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldENoYXIsIHR5cGVuYW1lIFNvdXJjZUNoYXI+Ci0gICAgICAgIHN0cnVjdCB3aWRlc3RfY2hhcgotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbmRuYm9vc3Q6Om1wbDo6aWZfYzwKLSAgICAgICAgICAgICAgICAoc2l6ZW9mKFRhcmdldENoYXIpID4gc2l6ZW9mKFNvdXJjZUNoYXIpKQotICAgICAgICAgICAgICAgICwgVGFyZ2V0Q2hhcgotICAgICAgICAgICAgICAgICwgU291cmNlQ2hhciA+Ojp0eXBlIHR5cGU7Ci0gICAgICAgIH07Ci0gICAgfQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pICYmICFkZWZpbmVkKF9fU1VOUFJPX0NDKSAmJiAhZGVmaW5lZChfX1BHSUNfXykKLQotI2luY2x1ZGUgPGNtYXRoPgotI2luY2x1ZGUgPGlzdHJlYW0+Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0FSUkFZCi0jaW5jbHVkZSA8YXJyYXk+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2FycmF5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vY2FzdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvbWFrZV91bnNpZ25lZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2lnbmVkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19pbnRlZ3JhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJpdGhtZXRpYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19sZWZ0X3NoaWZ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcmlnaHRfc2hpZnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21hdGgvc3BlY2lhbF9mdW5jdGlvbnMvc2lnbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbWF0aC9zcGVjaWFsX2Z1bmN0aW9ucy9mcGNsYXNzaWZ5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9pdGVyYXRvcl9yYW5nZV9jb3JlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb250YWluZXIvY29udGFpbmVyX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW50ZWdlci5ocHA+Ci0jaWZuZGVmIE5ETkJPT1NUX05PX0NXQ0hBUgotIyAgIGluY2x1ZGUgPGN3Y2hhcj4KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0gICAgbmFtZXNwYWNlIGRldGFpbCAvLyBpc19jaGFyX29yX3djaGFyPC4uLj4KLSAgICB7Ci0gICAgICAgIC8vIHJldHVybnMgdHJ1ZSwgaWYgVCBpcyBvbmUgb2YgdGhlIGNoYXJhY3RlciB0eXBlcwotICAgICAgICB0ZW1wbGF0ZSA8IHR5cGVuYW1lIFQgPgotICAgICAgICBzdHJ1Y3QgaXNfY2hhcl9vcl93Y2hhcgotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6aXNfc2FtZTwgVCwgY2hhciA+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgI2lmbmRlZiBORE5CT09TVF9MQ0FTVF9OT19XQ0hBUl9UCi0gICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6aXNfc2FtZTwgVCwgd2NoYXJfdCA+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjE2X1QKLSAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppc19zYW1lPCBULCBjaGFyMTZfdCA+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjMyX1QKLSAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppc19zYW1lPCBULCBjaGFyMzJfdCA+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppc19zYW1lPCBULCB1bnNpZ25lZCBjaGFyID46OnZhbHVlLAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6aXNfc2FtZTwgVCwgc2lnbmVkIGNoYXIgPjo6dmFsdWUKLSAgICAgICAgICAgID4gcmVzdWx0X3R5cGU7Ci0KLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IChyZXN1bHRfdHlwZTo6dmFsdWUpICk7Ci0gICAgICAgIH07Ci0gICAgfQotCi0gICAgbmFtZXNwYWNlIGRldGFpbCAvLyBub3JtYWxpemVfc2luZ2xlX2J5dGVfY2hhcjxDaGFyPgotICAgIHsKLSAgICAgICAgLy8gQ29udmVydHMgc2lnbmVkL3Vuc2lnbmVkIGNoYXIgdG8gY2hhcgotICAgICAgICB0ZW1wbGF0ZSA8IGNsYXNzIENoYXIgPgotICAgICAgICBzdHJ1Y3Qgbm9ybWFsaXplX3NpbmdsZV9ieXRlX2NoYXIgCi0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgQ2hhciB0eXBlOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlIDw+Ci0gICAgICAgIHN0cnVjdCBub3JtYWxpemVfc2luZ2xlX2J5dGVfY2hhcjwgc2lnbmVkIGNoYXIgPgotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIGNoYXIgdHlwZTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZSA8PgotICAgICAgICBzdHJ1Y3Qgbm9ybWFsaXplX3NpbmdsZV9ieXRlX2NoYXI8IHVuc2lnbmVkIGNoYXIgPgotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIGNoYXIgdHlwZTsKLSAgICAgICAgfTsKLSAgICB9Ci0KLSAgICBuYW1lc3BhY2UgZGV0YWlsIC8vIGRlZHVjZV9jaGFyYWN0ZXJfdHlwZV9sYXRlcjxUPgotICAgIHsKLSAgICAgICAgLy8gSGVscGVyIHR5cGUsIG1lYW5pbmcgdGhhdCBzdHJhbSBjaGFyYWN0ZXIgZm9yIFQgbXVzdCBiZSBkZWR1Y2VkIAotICAgICAgICAvLyBhdCBTdGFnZSAyIChTZWUgZGVkdWNlX3NvdXJjZV9jaGFyPFQ+IGFuZCBkZWR1Y2VfdGFyZ2V0X2NoYXI8VD4pCi0gICAgICAgIHRlbXBsYXRlIDwgY2xhc3MgVCA+IHN0cnVjdCBkZWR1Y2VfY2hhcmFjdGVyX3R5cGVfbGF0ZXIge307Ci0gICAgfQotCi0gICAgbmFtZXNwYWNlIGRldGFpbCAvLyBzdHJlYW1fY2hhcl9jb21tb248VD4KLSAgICB7Ci0gICAgICAgIC8vIFNlbGVjdG9ycyB0byBjaG9vc2Ugc3RyZWFtIGNoYXJhY3RlciB0eXBlIChjb21tb24gZm9yIFNvdXJjZSBhbmQgVGFyZ2V0KQotICAgICAgICAvLyBSZXR1cm5zIG9uZSBvZiBjaGFyLCB3Y2hhcl90LCBjaGFyMTZfdCwgY2hhcjMyX3Qgb3IgZGVkdWNlX2NoYXJhY3Rlcl90eXBlX2xhdGVyPFQ+IHR5cGVzCi0gICAgICAgIC8vIEV4ZWN1dGVkIG9uIFN0YWdlIDEgKFNlZSBkZWR1Y2Vfc291cmNlX2NoYXI8VD4gYW5kIGRlZHVjZV90YXJnZXRfY2hhcjxUPikKLSAgICAgICAgdGVtcGxhdGUgPCB0eXBlbmFtZSBUeXBlID4KLSAgICAgICAgc3RydWN0IHN0cmVhbV9jaGFyX2NvbW1vbjogcHVibGljIG5kbmJvb3N0OjptcGw6OmlmX2M8Ci0gICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjppc19jaGFyX29yX3djaGFyPCBUeXBlID46OnZhbHVlLAotICAgICAgICAgICAgVHlwZSwKLSAgICAgICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmRlZHVjZV9jaGFyYWN0ZXJfdHlwZV9sYXRlcjwgVHlwZSA+Ci0gICAgICAgID4ge307Ci0KLSAgICAgICAgdGVtcGxhdGUgPCB0eXBlbmFtZSBDaGFyID4KLSAgICAgICAgc3RydWN0IHN0cmVhbV9jaGFyX2NvbW1vbjwgQ2hhciogPjogcHVibGljIG5kbmJvb3N0OjptcGw6OmlmX2M8Ci0gICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjppc19jaGFyX29yX3djaGFyPCBDaGFyID46OnZhbHVlLAotICAgICAgICAgICAgQ2hhciwKLSAgICAgICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmRlZHVjZV9jaGFyYWN0ZXJfdHlwZV9sYXRlcjwgQ2hhciogPgotICAgICAgICA+IHt9OwotCi0gICAgICAgIHRlbXBsYXRlIDwgdHlwZW5hbWUgQ2hhciA+Ci0gICAgICAgIHN0cnVjdCBzdHJlYW1fY2hhcl9jb21tb248IGNvbnN0IENoYXIqID46IHB1YmxpYyBuZG5ib29zdDo6bXBsOjppZl9jPAotICAgICAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6aXNfY2hhcl9vcl93Y2hhcjwgQ2hhciA+Ojp2YWx1ZSwKLSAgICAgICAgICAgIENoYXIsCi0gICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpkZWR1Y2VfY2hhcmFjdGVyX3R5cGVfbGF0ZXI8IGNvbnN0IENoYXIqID4KLSAgICAgICAgPiB7fTsKLQotICAgICAgICB0ZW1wbGF0ZSA8IHR5cGVuYW1lIENoYXIgPgotICAgICAgICBzdHJ1Y3Qgc3RyZWFtX2NoYXJfY29tbW9uPCBuZG5ib29zdDo6aXRlcmF0b3JfcmFuZ2U8IENoYXIqID4gPjogcHVibGljIG5kbmJvb3N0OjptcGw6OmlmX2M8Ci0gICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjppc19jaGFyX29yX3djaGFyPCBDaGFyID46OnZhbHVlLAotICAgICAgICAgICAgQ2hhciwKLSAgICAgICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmRlZHVjZV9jaGFyYWN0ZXJfdHlwZV9sYXRlcjwgbmRuYm9vc3Q6Oml0ZXJhdG9yX3JhbmdlPCBDaGFyKiA+ID4KLSAgICAgICAgPiB7fTsKLSAgICAKLSAgICAgICAgdGVtcGxhdGUgPCB0eXBlbmFtZSBDaGFyID4KLSAgICAgICAgc3RydWN0IHN0cmVhbV9jaGFyX2NvbW1vbjwgbmRuYm9vc3Q6Oml0ZXJhdG9yX3JhbmdlPCBjb25zdCBDaGFyKiA+ID46IHB1YmxpYyBuZG5ib29zdDo6bXBsOjppZl9jPAotICAgICAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6aXNfY2hhcl9vcl93Y2hhcjwgQ2hhciA+Ojp2YWx1ZSwKLSAgICAgICAgICAgIENoYXIsCi0gICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpkZWR1Y2VfY2hhcmFjdGVyX3R5cGVfbGF0ZXI8IG5kbmJvb3N0OjppdGVyYXRvcl9yYW5nZTwgY29uc3QgQ2hhciogPiA+Ci0gICAgICAgID4ge307Ci0KLSAgICAgICAgdGVtcGxhdGUgPCBjbGFzcyBDaGFyLCBjbGFzcyBUcmFpdHMsIGNsYXNzIEFsbG9jID4KLSAgICAgICAgc3RydWN0IHN0cmVhbV9jaGFyX2NvbW1vbjwgc3RkOjpiYXNpY19zdHJpbmc8IENoYXIsIFRyYWl0cywgQWxsb2MgPiA+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgQ2hhciB0eXBlOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlIDwgY2xhc3MgQ2hhciwgY2xhc3MgVHJhaXRzLCBjbGFzcyBBbGxvYyA+Ci0gICAgICAgIHN0cnVjdCBzdHJlYW1fY2hhcl9jb21tb248IG5kbmJvb3N0Ojpjb250YWluZXI6OmJhc2ljX3N0cmluZzwgQ2hhciwgVHJhaXRzLCBBbGxvYyA+ID4KLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBDaGFyIHR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGUgPCB0eXBlbmFtZSBDaGFyLCBzdGQ6OnNpemVfdCBOID4KLSAgICAgICAgc3RydWN0IHN0cmVhbV9jaGFyX2NvbW1vbjwgbmRuYm9vc3Q6OmFycmF5PCBDaGFyLCBOID4gPjogcHVibGljIG5kbmJvb3N0OjptcGw6OmlmX2M8Ci0gICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjppc19jaGFyX29yX3djaGFyPCBDaGFyID46OnZhbHVlLAotICAgICAgICAgICAgQ2hhciwKLSAgICAgICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmRlZHVjZV9jaGFyYWN0ZXJfdHlwZV9sYXRlcjwgbmRuYm9vc3Q6OmFycmF5PCBDaGFyLCBOID4gPgotICAgICAgICA+IHt9OwotCi0gICAgICAgIHRlbXBsYXRlIDwgdHlwZW5hbWUgQ2hhciwgc3RkOjpzaXplX3QgTiA+Ci0gICAgICAgIHN0cnVjdCBzdHJlYW1fY2hhcl9jb21tb248IG5kbmJvb3N0OjphcnJheTwgY29uc3QgQ2hhciwgTiA+ID46IHB1YmxpYyBuZG5ib29zdDo6bXBsOjppZl9jPAotICAgICAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6aXNfY2hhcl9vcl93Y2hhcjwgQ2hhciA+Ojp2YWx1ZSwKLSAgICAgICAgICAgIENoYXIsCi0gICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpkZWR1Y2VfY2hhcmFjdGVyX3R5cGVfbGF0ZXI8IG5kbmJvb3N0OjphcnJheTwgY29uc3QgQ2hhciwgTiA+ID4KLSAgICAgICAgPiB7fTsKLQotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9IRFJfQVJSQVkKLSAgICAgICAgdGVtcGxhdGUgPCB0eXBlbmFtZSBDaGFyLCBzdGQ6OnNpemVfdCBOID4KLSAgICAgICAgc3RydWN0IHN0cmVhbV9jaGFyX2NvbW1vbjwgc3RkOjphcnJheTxDaGFyLCBOID4gPjogcHVibGljIG5kbmJvb3N0OjptcGw6OmlmX2M8Ci0gICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjppc19jaGFyX29yX3djaGFyPCBDaGFyID46OnZhbHVlLAotICAgICAgICAgICAgQ2hhciwKLSAgICAgICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmRlZHVjZV9jaGFyYWN0ZXJfdHlwZV9sYXRlcjwgc3RkOjphcnJheTwgQ2hhciwgTiA+ID4KLSAgICAgICAgPiB7fTsKLQotICAgICAgICB0ZW1wbGF0ZSA8IHR5cGVuYW1lIENoYXIsIHN0ZDo6c2l6ZV90IE4gPgotICAgICAgICBzdHJ1Y3Qgc3RyZWFtX2NoYXJfY29tbW9uPCBzdGQ6OmFycmF5PCBjb25zdCBDaGFyLCBOID4gPjogcHVibGljIG5kbmJvb3N0OjptcGw6OmlmX2M8Ci0gICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjppc19jaGFyX29yX3djaGFyPCBDaGFyID46OnZhbHVlLAotICAgICAgICAgICAgQ2hhciwKLSAgICAgICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmRlZHVjZV9jaGFyYWN0ZXJfdHlwZV9sYXRlcjwgc3RkOjphcnJheTwgY29uc3QgQ2hhciwgTiA+ID4KLSAgICAgICAgPiB7fTsKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTENBU1RfSEFTX0lOVDEyOAotICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3Qgc3RyZWFtX2NoYXJfY29tbW9uPCBuZG5ib29zdDo6aW50MTI4X3R5cGUgPjogcHVibGljIG5kbmJvb3N0OjptcGw6OmlkZW50aXR5PCBjaGFyID4ge307Ci0gICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBzdHJlYW1fY2hhcl9jb21tb248IG5kbmJvb3N0Ojp1aW50MTI4X3R5cGUgPjogcHVibGljIG5kbmJvb3N0OjptcGw6OmlkZW50aXR5PCBjaGFyID4ge307Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0xDQVNUX05PX1dDSEFSX1QpICYmIGRlZmluZWQoTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QpCi0gICAgICAgIHRlbXBsYXRlIDw+Ci0gICAgICAgIHN0cnVjdCBzdHJlYW1fY2hhcl9jb21tb248IHdjaGFyX3QgPgotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIGNoYXIgdHlwZTsKLSAgICAgICAgfTsKLSNlbmRpZgotICAgIH0KLQotICAgIG5hbWVzcGFjZSBkZXRhaWwgLy8gZGVkdWNlX3NvdXJjZV9jaGFyX2ltcGw8VD4KLSAgICB7Ci0gICAgICAgIC8vIElmIHR5cGUgVCBpcyBgZGVkdWNlX2NoYXJhY3Rlcl90eXBlX2xhdGVyYCB0eXBlLCB0aGVuIHRyaWVzIHRvIGRlZHVjZQotICAgICAgICAvLyBjaGFyYWN0ZXIgdHlwZSB1c2luZyBuZG5ib29zdDo6aGFzX2xlZnRfc2hpZnQ8VD4gbWV0YWZ1bmN0aW9uLgotICAgICAgICAvLyBPdGhlcndpc2Ugc3VwcGxpZWQgdHlwZSBUIGlzIGEgY2hhcmFjdGVyIHR5cGUsIHRoYXQgbXVzdCBiZSBub3JtYWxpemVkCi0gICAgICAgIC8vIHVzaW5nIG5vcm1hbGl6ZV9zaW5nbGVfYnl0ZV9jaGFyPENoYXI+LgotICAgICAgICAvLyBFeGVjdXRlZCBhdCBTdGFnZSAyICAoU2VlIGRlZHVjZV9zb3VyY2VfY2hhcjxUPiBhbmQgZGVkdWNlX3RhcmdldF9jaGFyPFQ+KQotICAgICAgICB0ZW1wbGF0ZSA8IGNsYXNzIENoYXIgPiAKLSAgICAgICAgc3RydWN0IGRlZHVjZV9zb3VyY2VfY2hhcl9pbXBsCi0gICAgICAgIHsgCi0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbmRuYm9vc3Q6OmRldGFpbDo6bm9ybWFsaXplX3NpbmdsZV9ieXRlX2NoYXI8IENoYXIgPjo6dHlwZSB0eXBlOyAKLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlIDwgY2xhc3MgVCA+IAotICAgICAgICBzdHJ1Y3QgZGVkdWNlX3NvdXJjZV9jaGFyX2ltcGw8IGRlZHVjZV9jaGFyYWN0ZXJfdHlwZV9sYXRlcjwgVCA+ID4gCi0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6Omhhc19sZWZ0X3NoaWZ0PCBzdGQ6OmJhc2ljX29zdHJlYW08IGNoYXIgPiwgVCA+IHJlc3VsdF90OwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9MQ0FTVF9OT19XQ0hBUl9UKQotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVF9NU0coKHJlc3VsdF90Ojp2YWx1ZSksIAotICAgICAgICAgICAgICAgICJTb3VyY2UgdHlwZSBpcyBub3Qgc3RkOjpvc3RyZWFtYGFibGUgYW5kIHN0ZDo6d29zdHJlYW1gcyBhcmUgbm90IHN1cHBvcnRlZCBieSB5b3VyIFNUTCBpbXBsZW1lbnRhdGlvbiIpOwotICAgICAgICAgICAgdHlwZWRlZiBjaGFyIHR5cGU7Ci0jZWxzZQotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG5kbmJvb3N0OjptcGw6OmlmX2M8Ci0gICAgICAgICAgICAgICAgcmVzdWx0X3Q6OnZhbHVlLCBjaGFyLCB3Y2hhcl90Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfTVNHKChyZXN1bHRfdDo6dmFsdWUgfHwgbmRuYm9vc3Q6Omhhc19sZWZ0X3NoaWZ0PCBzdGQ6OmJhc2ljX29zdHJlYW08IHR5cGUgPiwgVCA+Ojp2YWx1ZSksIAotICAgICAgICAgICAgICAgICJTb3VyY2UgdHlwZSBpcyBuZWl0aGVyIHN0ZDo6b3N0cmVhbWBhYmxlIG5vciBzdGQ6Ondvc3RyZWFtYGFibGUiKTsKLSNlbmRpZgotICAgICAgICB9OwotICAgIH0KLQotICAgIG5hbWVzcGFjZSBkZXRhaWwgIC8vIGRlZHVjZV90YXJnZXRfY2hhcl9pbXBsPFQ+Ci0gICAgewotICAgICAgICAvLyBJZiB0eXBlIFQgaXMgYGRlZHVjZV9jaGFyYWN0ZXJfdHlwZV9sYXRlcmAgdHlwZSwgdGhlbiB0cmllcyB0byBkZWR1Y2UKLSAgICAgICAgLy8gY2hhcmFjdGVyIHR5cGUgdXNpbmcgbmRuYm9vc3Q6Omhhc19yaWdodF9zaGlmdDxUPiBtZXRhZnVuY3Rpb24uCi0gICAgICAgIC8vIE90aGVyd2lzZSBzdXBwbGllZCB0eXBlIFQgaXMgYSBjaGFyYWN0ZXIgdHlwZSwgdGhhdCBtdXN0IGJlIG5vcm1hbGl6ZWQKLSAgICAgICAgLy8gdXNpbmcgbm9ybWFsaXplX3NpbmdsZV9ieXRlX2NoYXI8Q2hhcj4uCi0gICAgICAgIC8vIEV4ZWN1dGVkIGF0IFN0YWdlIDIgIChTZWUgZGVkdWNlX3NvdXJjZV9jaGFyPFQ+IGFuZCBkZWR1Y2VfdGFyZ2V0X2NoYXI8VD4pCi0gICAgICAgIHRlbXBsYXRlIDwgY2xhc3MgQ2hhciA+IAotICAgICAgICBzdHJ1Y3QgZGVkdWNlX3RhcmdldF9jaGFyX2ltcGwgCi0gICAgICAgIHsgCi0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbm9ybWFsaXplX3NpbmdsZV9ieXRlX2NoYXI8IENoYXIgPjo6dHlwZSB0eXBlOyAKLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlIDwgY2xhc3MgVCA+IAotICAgICAgICBzdHJ1Y3QgZGVkdWNlX3RhcmdldF9jaGFyX2ltcGw8IGRlZHVjZV9jaGFyYWN0ZXJfdHlwZV9sYXRlcjxUPiA+IAotICAgICAgICB7IAotICAgICAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6aGFzX3JpZ2h0X3NoaWZ0PHN0ZDo6YmFzaWNfaXN0cmVhbTxjaGFyPiwgVCA+IHJlc3VsdF90OwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9MQ0FTVF9OT19XQ0hBUl9UKQotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVF9NU0coKHJlc3VsdF90Ojp2YWx1ZSksIAotICAgICAgICAgICAgICAgICJUYXJnZXQgdHlwZSBpcyBub3Qgc3RkOjppc3RyZWFtYGFibGUgYW5kIHN0ZDo6d2lzdHJlYW1gcyBhcmUgbm90IHN1cHBvcnRlZCBieSB5b3VyIFNUTCBpbXBsZW1lbnRhdGlvbiIpOwotICAgICAgICAgICAgdHlwZWRlZiBjaGFyIHR5cGU7Ci0jZWxzZQotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG5kbmJvb3N0OjptcGw6OmlmX2M8Ci0gICAgICAgICAgICAgICAgcmVzdWx0X3Q6OnZhbHVlLCBjaGFyLCB3Y2hhcl90Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfTVNHKChyZXN1bHRfdDo6dmFsdWUgfHwgbmRuYm9vc3Q6Omhhc19yaWdodF9zaGlmdDxzdGQ6OmJhc2ljX2lzdHJlYW08d2NoYXJfdD4sIFQgPjo6dmFsdWUpLCAKLSAgICAgICAgICAgICAgICAiVGFyZ2V0IHR5cGUgaXMgbmVpdGhlciBzdGQ6OmlzdHJlYW1gYWJsZSBub3Igc3RkOjp3aXN0cmVhbWBhYmxlIik7Ci0jZW5kaWYKLSAgICAgICAgfTsKLSAgICB9IAotCi0gICAgbmFtZXNwYWNlIGRldGFpbCAgLy8gZGVkdWNlX3RhcmdldF9jaGFyPFQ+IGFuZCBkZWR1Y2Vfc291cmNlX2NoYXI8VD4KLSAgICB7Ci0gICAgICAgIC8vIFdlIGRlZHVjZSBzdHJlYW0gY2hhcmFjdGVyIHR5cGVzIGluIHR3byBzdGFnZXMuCi0gICAgICAgIC8vCi0gICAgICAgIC8vIFN0YWdlIDEgaXMgY29tbW9uIGZvciBUYXJnZXQgYW5kIFNvdXJjZS4gQXQgU3RhZ2UgMSB3ZSBnZXQgCi0gICAgICAgIC8vIG5vbiBub3JtYWxpemVkIGNoYXJhY3RlciB0eXBlIChtYXkgY29udGFpbiB1bnNpZ25lZC9zaWduZWQgY2hhcikKLSAgICAgICAgLy8gb3IgZGVkdWNlX2NoYXJhY3Rlcl90eXBlX2xhdGVyPFQ+IHdoZXJlIFQgaXMgdGhlIG9yaWdpbmFsIHR5cGUuCi0gICAgICAgIC8vIFN0YWdlIDEgaXMgZXhlY3V0ZWQgYnkgc3RyZWFtX2NoYXJfY29tbW9uPFQ+Ci0gICAgICAgIC8vCi0gICAgICAgIC8vIEF0IFN0YWdlIDIgd2Ugbm9ybWFsaXplIGNoYXJhY3RlciB0eXBlcyBvciB0cnkgdG8gZGVkdWNlIGNoYXJhY3RlciAKLSAgICAgICAgLy8gdHlwZSB1c2luZyBtZXRhZnVuY3Rpb25zLiAKLSAgICAgICAgLy8gU3RhZ2UgMiBpcyBleGVjdXRlZCBieSBkZWR1Y2VfdGFyZ2V0X2NoYXJfaW1wbDxUPiBhbmQgCi0gICAgICAgIC8vIGRlZHVjZV9zb3VyY2VfY2hhcl9pbXBsPFQ+Ci0gICAgICAgIC8vCi0gICAgICAgIC8vIGRlZHVjZV90YXJnZXRfY2hhcjxUPiBhbmQgZGVkdWNlX3NvdXJjZV9jaGFyPFQ+IGZ1bmN0aW9ucyBjb21iaW5lIAotICAgICAgICAvLyBib3RoIHN0YWdlcwotCi0gICAgICAgIHRlbXBsYXRlIDwgY2xhc3MgVCA+Ci0gICAgICAgIHN0cnVjdCBkZWR1Y2VfdGFyZ2V0X2NoYXIKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHN0cmVhbV9jaGFyX2NvbW1vbjwgVCA+Ojp0eXBlIHN0YWdlMV90eXBlOwotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGRlZHVjZV90YXJnZXRfY2hhcl9pbXBsPCBzdGFnZTFfdHlwZSA+Ojp0eXBlIHN0YWdlMl90eXBlOwotCi0gICAgICAgICAgICB0eXBlZGVmIHN0YWdlMl90eXBlIHR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGUgPCBjbGFzcyBUID4KLSAgICAgICAgc3RydWN0IGRlZHVjZV9zb3VyY2VfY2hhcgotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgc3RyZWFtX2NoYXJfY29tbW9uPCBUID46OnR5cGUgc3RhZ2UxX3R5cGU7Ci0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgZGVkdWNlX3NvdXJjZV9jaGFyX2ltcGw8IHN0YWdlMV90eXBlID46OnR5cGUgc3RhZ2UyX3R5cGU7Ci0KLSAgICAgICAgICAgIHR5cGVkZWYgc3RhZ2UyX3R5cGUgdHlwZTsKLSAgICAgICAgfTsKLSAgICB9Ci0KLSAgICBuYW1lc3BhY2UgZGV0YWlsIC8vIGRlZHVjZV9jaGFyX3RyYWl0cyB0ZW1wbGF0ZQotICAgIHsKLSAgICAgICAgLy8gV2UgYXJlIGF0dGVtcHRpbmcgdG8gZ2V0IGNoYXJfdHJhaXRzPD4gZnJvbSBTb3VyY2Ugb3IgVGFncmV0Ci0gICAgICAgIC8vIHRlbXBsYXRlIHBhcmFtZXRlci4gT3RoZXJ3aXNlIHdlJ2xsIGJlIHVzaW5nIHN0ZDo6Y2hhcl90cmFpdHM8Q2hhcj4KLSAgICAgICAgdGVtcGxhdGUgPCBjbGFzcyBDaGFyLCBjbGFzcyBUYXJnZXQsIGNsYXNzIFNvdXJjZSA+Ci0gICAgICAgIHN0cnVjdCBkZWR1Y2VfY2hhcl90cmFpdHMKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBzdGQ6OmNoYXJfdHJhaXRzPCBDaGFyID4gdHlwZTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZSA8IGNsYXNzIENoYXIsIGNsYXNzIFRyYWl0cywgY2xhc3MgQWxsb2MsIGNsYXNzIFNvdXJjZSA+Ci0gICAgICAgIHN0cnVjdCBkZWR1Y2VfY2hhcl90cmFpdHM8IENoYXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgc3RkOjpiYXNpY19zdHJpbmc8IENoYXIsIFRyYWl0cywgQWxsb2MgPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBTb3VyY2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBUcmFpdHMgdHlwZTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZSA8IGNsYXNzIENoYXIsIGNsYXNzIFRhcmdldCwgY2xhc3MgVHJhaXRzLCBjbGFzcyBBbGxvYyA+Ci0gICAgICAgIHN0cnVjdCBkZWR1Y2VfY2hhcl90cmFpdHM8IENoYXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgVGFyZ2V0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIHN0ZDo6YmFzaWNfc3RyaW5nPCBDaGFyLCBUcmFpdHMsIEFsbG9jID4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBUcmFpdHMgdHlwZTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZSA8IGNsYXNzIENoYXIsIGNsYXNzIFRyYWl0cywgY2xhc3MgQWxsb2MsIGNsYXNzIFNvdXJjZSA+Ci0gICAgICAgIHN0cnVjdCBkZWR1Y2VfY2hhcl90cmFpdHM8IENoYXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgbmRuYm9vc3Q6OmNvbnRhaW5lcjo6YmFzaWNfc3RyaW5nPCBDaGFyLCBUcmFpdHMsIEFsbG9jID4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgU291cmNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgVHJhaXRzIHR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGUgPCBjbGFzcyBDaGFyLCBjbGFzcyBUYXJnZXQsIGNsYXNzIFRyYWl0cywgY2xhc3MgQWxsb2MgPgotICAgICAgICBzdHJ1Y3QgZGVkdWNlX2NoYXJfdHJhaXRzPCBDaGFyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIFRhcmdldAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBuZG5ib29zdDo6Y29udGFpbmVyOjpiYXNpY19zdHJpbmc8IENoYXIsIFRyYWl0cywgQWxsb2MgPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPgotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIFRyYWl0cyB0eXBlOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlIDwgY2xhc3MgQ2hhciwgY2xhc3MgVHJhaXRzLCBjbGFzcyBBbGxvYzEsIGNsYXNzIEFsbG9jMiA+Ci0gICAgICAgIHN0cnVjdCBkZWR1Y2VfY2hhcl90cmFpdHM8IENoYXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgc3RkOjpiYXNpY19zdHJpbmc8IENoYXIsIFRyYWl0cywgQWxsb2MxID4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgc3RkOjpiYXNpY19zdHJpbmc8IENoYXIsIFRyYWl0cywgQWxsb2MyID4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBUcmFpdHMgdHlwZTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBDaGFyLCBjbGFzcyBUcmFpdHMsIGNsYXNzIEFsbG9jMSwgY2xhc3MgQWxsb2MyPgotICAgICAgICBzdHJ1Y3QgZGVkdWNlX2NoYXJfdHJhaXRzPCBDaGFyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIG5kbmJvb3N0Ojpjb250YWluZXI6OmJhc2ljX3N0cmluZzwgQ2hhciwgVHJhaXRzLCBBbGxvYzEgPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBuZG5ib29zdDo6Y29udGFpbmVyOjpiYXNpY19zdHJpbmc8IENoYXIsIFRyYWl0cywgQWxsb2MyID4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBUcmFpdHMgdHlwZTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZSA8IGNsYXNzIENoYXIsIGNsYXNzIFRyYWl0cywgY2xhc3MgQWxsb2MxLCBjbGFzcyBBbGxvYzIgPgotICAgICAgICBzdHJ1Y3QgZGVkdWNlX2NoYXJfdHJhaXRzPCBDaGFyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIG5kbmJvb3N0Ojpjb250YWluZXI6OmJhc2ljX3N0cmluZzwgQ2hhciwgVHJhaXRzLCBBbGxvYzEgPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBzdGQ6OmJhc2ljX3N0cmluZzwgQ2hhciwgVHJhaXRzLCBBbGxvYzIgPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPgotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIFRyYWl0cyB0eXBlOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlIDwgY2xhc3MgQ2hhciwgY2xhc3MgVHJhaXRzLCBjbGFzcyBBbGxvYzEsIGNsYXNzIEFsbG9jMiA+Ci0gICAgICAgIHN0cnVjdCBkZWR1Y2VfY2hhcl90cmFpdHM8IENoYXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgc3RkOjpiYXNpY19zdHJpbmc8IENoYXIsIFRyYWl0cywgQWxsb2MxID4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgbmRuYm9vc3Q6OmNvbnRhaW5lcjo6YmFzaWNfc3RyaW5nPCBDaGFyLCBUcmFpdHMsIEFsbG9jMiA+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgVHJhaXRzIHR5cGU7Ci0gICAgICAgIH07Ci0gICAgfQotCi0gICAgbmFtZXNwYWNlIGRldGFpbCAvLyBhcnJheV90b19wb2ludGVyX2RlY2F5PFQ+Ci0gICAgewotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgICAgICBzdHJ1Y3QgYXJyYXlfdG9fcG9pbnRlcl9kZWNheQotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBULCBzdGQ6OnNpemVfdCBOPgotICAgICAgICBzdHJ1Y3QgYXJyYXlfdG9fcG9pbnRlcl9kZWNheTxUW05dPgotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIGNvbnN0IFQgKiB0eXBlOwotICAgICAgICB9OwotICAgIH0KLQotICAgIG5hbWVzcGFjZSBkZXRhaWwgLy8gaXNfdGhpc19mbG9hdF9jb252ZXJzaW9uX29wdGltaXplZDxGbG9hdCwgQ2hhcj4KLSAgICB7Ci0gICAgICAgIC8vIHRoaXMgbWV0YWZ1bmN0aW9uIGV2YWx1YXRlcyB0byB0cnVlLCBpZiB3ZSBoYXZlIG9wdGltaXplZCBjb21udmVyc2lvbiAKLSAgICAgICAgLy8gZnJvbSBGbG9hdCB0eXBlIHRvIENoYXIgYXJyYXkuIAotICAgICAgICAvLyBNdXN0IGJlIGluIHN5bmMgd2l0aCBsZXhpY2FsX3N0cmVhbV9saW1pdGVkX3NyYzxDaGFyLCAuLi4+OjpzaGxfcmVhbF90eXBlKC4uLikKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZsb2F0LCB0eXBlbmFtZSBDaGFyPgotICAgICAgICBzdHJ1Y3QgaXNfdGhpc19mbG9hdF9jb252ZXJzaW9uX29wdGltaXplZCAKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX2Zsb2F0PEZsb2F0Pjo6dmFsdWUsCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTENBU1RfTk9fV0NIQVJfVCkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fU1dQUklOVEYpICYmICFkZWZpbmVkKF9fTUlOR1czMl9fKQotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9lcTxzaXplb2YoQ2hhciksIHNpemVvZihjaGFyKSA+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX3NhbWU8Q2hhciwgd2NoYXJfdD46OnZhbHVlCi0gICAgICAgICAgICAgICAgPjo6dmFsdWUKLSNlbHNlCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfZXE8c2l6ZW9mKENoYXIpLCBzaXplb2YoY2hhcikgPjo6dmFsdWUKLSNlbmRpZgotICAgICAgICAgICAgPiByZXN1bHRfdHlwZTsKLQotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKHJlc3VsdF90eXBlOjp2YWx1ZSkgKTsKLSAgICAgICAgfTsKLSAgICB9Ci0gICAgCi0gICAgbmFtZXNwYWNlIGRldGFpbCAvLyBsY2FzdF9zcmNfbGVuZ3RoCi0gICAgewotICAgICAgICAvLyBSZXR1cm4gbWF4LiBsZW5ndGggb2Ygc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIFNvdXJjZTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFNvdXJjZSAvLyBTb3VyY2UgdHlwZSBvZiBsZXhpY2FsX2Nhc3QuCi0gICAgICAgICAgICAgICAgPgotICAgICAgICBzdHJ1Y3QgbGNhc3Rfc3JjX2xlbmd0aAotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gMSk7Ci0gICAgICAgICAgICAvLyBUbyBjaGVjayBjb3ZlcmFnZSwgYnVpbGQgdGhlIHRlc3Qgd2l0aAotICAgICAgICAgICAgLy8gYmphbSAtLXYyIHByb2ZpbGUgb3B0aW1pemF0aW9uPW9mZgotICAgICAgICAgICAgc3RhdGljIHZvaWQgY2hlY2tfY292ZXJhZ2UoKSB7fQotICAgICAgICB9OwotCi0gICAgICAgIC8vIEhlbHBlciBmb3IgaW50ZWdyYWwgdHlwZXMuCi0gICAgICAgIC8vIE5vdGVzIG9uIGxlbmd0aCBjYWxjdWxhdGlvbjoKLSAgICAgICAgLy8gTWF4IGxlbmd0aCBmb3IgMzJiaXQgaW50IHdpdGggZ3JvdXBpbmcgIlwxIiBhbmQgdGhvdXNhbmRzX3NlcCAnLCc6Ci0gICAgICAgIC8vICItMiwxLDQsNyw0LDgsMyw2LDQsNyIKLSAgICAgICAgLy8gIF4gICAgICAgICAgICAgICAgICAgIC0gaXNfc2lnbmVkCi0gICAgICAgIC8vICAgXiAgICAgICAgICAgICAgICAgICAtIDEgZGlnaXQgbm90IGNvdW50ZWQgYnkgZGlnaXRzMTAKLSAgICAgICAgLy8gICAgXl5eXl5eXl5eXl5eXl5eXl5eIC0gZGlnaXRzMTAgKiAyCi0gICAgICAgIC8vCi0gICAgICAgIC8vIENvbnN0YW50IGlzX3NwZWNpYWxpemVkIGlzIHVzZWQgaW5zdGVhZCBvZiBjb25zdGFudCAxCi0gICAgICAgIC8vIHRvIHByZXZlbnQgYnVmZmVyIG92ZXJmbG93IGluIGEgcmFyZSBjYXNlIHdoZW4KLSAgICAgICAgLy8gPG5kbmJvb3N0L2xpbWl0cy5ocHA+IGRvZXNuJ3QgYWRkIG1pc3Npbmcgc3BlY2lhbGl6YXRpb24gZm9yCi0gICAgICAgIC8vIG51bWVyaWNfbGltaXRzPFQ+IGZvciBzb21lIGludGVncmFsIHR5cGUgVC4KLSAgICAgICAgLy8gV2hlbiBpc19zcGVjaWFsaXplZCBpcyBmYWxzZSwgdGhlIHdob2xlIGV4cHJlc3Npb24gaXMgMC4KLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgU291cmNlPgotICAgICAgICBzdHJ1Y3QgbGNhc3Rfc3JjX2xlbmd0aF9pbnRlZ3JhbAotICAgICAgICB7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX0xJTUlUU19DT01QSUxFX1RJTUVfQ09OU1RBTlRTCi0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0KLSAgICAgICAgICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8U291cmNlPjo6aXNfc2lnbmVkICsKLSAgICAgICAgICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8U291cmNlPjo6aXNfc3BlY2lhbGl6ZWQgKyAvKiA9PSAxICovCi0gICAgICAgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPFNvdXJjZT46OmRpZ2l0czEwICogMgotICAgICAgICAgICAgICApOwotI2Vsc2UKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSAxNTYpOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChzaXplb2YoU291cmNlKSAqIENIQVJfQklUIDw9IDI1Nik7Ci0jZW5kaWYKLSAgICAgICAgfTsKLQotI2RlZmluZSBORE5CT09TVF9MQ0FTVF9ERUYoVCkgICAgICAgICAgICAgICBcCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgbGNhc3Rfc3JjX2xlbmd0aDxUPiBcCi0gICAgICAgIDogbGNhc3Rfc3JjX2xlbmd0aF9pbnRlZ3JhbDxUPiAgICAgICAgICAgXAotICAgIHsgc3RhdGljIHZvaWQgY2hlY2tfY292ZXJhZ2UoKSB7fSB9OwotCi0gICAgICAgIE5ETkJPT1NUX0xDQVNUX0RFRihzaG9ydCkKLSAgICAgICAgTkROQk9PU1RfTENBU1RfREVGKHVuc2lnbmVkIHNob3J0KQotICAgICAgICBORE5CT09TVF9MQ0FTVF9ERUYoaW50KQotICAgICAgICBORE5CT09TVF9MQ0FTVF9ERUYodW5zaWduZWQgaW50KQotICAgICAgICBORE5CT09TVF9MQ0FTVF9ERUYobG9uZykKLSAgICAgICAgTkROQk9PU1RfTENBU1RfREVGKHVuc2lnbmVkIGxvbmcpCi0jaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKQotICAgICAgICBORE5CT09TVF9MQ0FTVF9ERUYobmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZSkKLSAgICAgICAgTkROQk9PU1RfTENBU1RfREVGKG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSApCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19NU19JTlQ2NCkKLSAgICAgICAgTkROQk9PU1RfTENBU1RfREVGKHVuc2lnbmVkIF9faW50NjQpCi0gICAgICAgIE5ETkJPT1NUX0xDQVNUX0RFRiggICAgICAgICBfX2ludDY0KQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTENBU1RfSEFTX0lOVDEyOAotICAgICAgICBORE5CT09TVF9MQ0FTVF9ERUYobmRuYm9vc3Q6OmludDEyOF90eXBlKQotICAgICAgICBORE5CT09TVF9MQ0FTVF9ERUYobmRuYm9vc3Q6OnVpbnQxMjhfdHlwZSkKLSNlbmRpZgotCi0jdW5kZWYgTkROQk9PU1RfTENBU1RfREVGCi0KLSNpZm5kZWYgTkROQk9PU1RfTENBU1RfTk9fQ09NUElMRV9USU1FX1BSRUNJU0lPTgotICAgICAgICAvLyBIZWxwZXIgZm9yIGZsb2F0aW5nIHBvaW50IHR5cGVzLgotICAgICAgICAvLyAtMS4yMzQ1Njc4OWUtMTIzNDU2Ci0gICAgICAgIC8vIF4gICAgICAgICAgICAgICAgICAgc2lnbgotICAgICAgICAvLyAgXiAgICAgICAgICAgICAgICAgIGxlYWRpbmcgZGlnaXQKLSAgICAgICAgLy8gICBeICAgICAgICAgICAgICAgICBkZWNpbWFsIHBvaW50IAotICAgICAgICAvLyAgICBeXl5eXl5eXiAgICAgICAgIGxjYXN0X3ByZWNpc2lvbjxTb3VyY2U+Ojp2YWx1ZQotICAgICAgICAvLyAgICAgICAgICAgIF4gICAgICAgICJlIgotICAgICAgICAvLyAgICAgICAgICAgICBeICAgICAgIGV4cG9uZW50IHNpZ24KLSAgICAgICAgLy8gICAgICAgICAgICAgIF5eXl5eXiBleHBvbmVudCAoYXNzdW1lZCA2IG9yIGxlc3MgZGlnaXRzKQotICAgICAgICAvLyBzaWduICsgbGVhZGluZyBkaWdpdCArIGRlY2ltYWwgcG9pbnQgKyAiZSIgKyBleHBvbmVudCBzaWduID09IDUKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgU291cmNlPgotICAgICAgICBzdHJ1Y3QgbGNhc3Rfc3JjX2xlbmd0aF9mbG9hdGluZwotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKAotICAgICAgICAgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPFNvdXJjZT46Om1heF9leHBvbmVudDEwIDw9ICA5OTk5OTlMICYmCi0gICAgICAgICAgICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8U291cmNlPjo6bWluX2V4cG9uZW50MTAgPj0gLTk5OTk5OUwKLSAgICAgICAgICAgICAgICApOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9Ci0gICAgICAgICAgICAgICAgICAgIDUgKyBsY2FzdF9wcmVjaXNpb248U291cmNlPjo6dmFsdWUgKyA2Ci0gICAgICAgICAgICAgICAgKTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCBsY2FzdF9zcmNfbGVuZ3RoPGZsb2F0PgotICAgICAgICAgIDogbGNhc3Rfc3JjX2xlbmd0aF9mbG9hdGluZzxmbG9hdD4KLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIHZvaWQgY2hlY2tfY292ZXJhZ2UoKSB7fQotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IGxjYXN0X3NyY19sZW5ndGg8ZG91YmxlPgotICAgICAgICAgIDogbGNhc3Rfc3JjX2xlbmd0aF9mbG9hdGluZzxkb3VibGU+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyB2b2lkIGNoZWNrX2NvdmVyYWdlKCkge30KLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCBsY2FzdF9zcmNfbGVuZ3RoPGxvbmcgZG91YmxlPgotICAgICAgICAgIDogbGNhc3Rfc3JjX2xlbmd0aF9mbG9hdGluZzxsb25nIGRvdWJsZT4KLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIHZvaWQgY2hlY2tfY292ZXJhZ2UoKSB7fQotICAgICAgICB9OwotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9MQ0FTVF9OT19DT01QSUxFX1RJTUVfUFJFQ0lTSU9OCi0gICAgfQotCi0gICAgbmFtZXNwYWNlIGRldGFpbCAvLyBsZXhpY2FsX2Nhc3Rfc3RyZWFtX3RyYWl0czxTb3VyY2UsIFRhcmdldD4KLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBTb3VyY2UsIGNsYXNzIFRhcmdldD4KLSAgICAgICAgc3RydWN0IGxleGljYWxfY2FzdF9zdHJlYW1fdHJhaXRzIHsKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV90b19wb2ludGVyX2RlY2F5PFNvdXJjZT46OnR5cGUgc3JjOwotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG5kbmJvb3N0OjpyZW1vdmVfY3Y8c3JjPjo6dHlwZSAgICAgICAgICAgIG5vX2N2X3NyYzsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6ZGVkdWNlX3NvdXJjZV9jaGFyPG5vX2N2X3NyYz4gICAgICAgICAgICAgICAgICAgICAgICAgICBkZWR1Y2Vfc3JjX2NoYXJfbWV0YWZ1bmM7Ci0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgZGVkdWNlX3NyY19jaGFyX21ldGFmdW5jOjp0eXBlICAgICAgICAgICBzcmNfY2hhcl90OwotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG5kbmJvb3N0OjpkZXRhaWw6OmRlZHVjZV90YXJnZXRfY2hhcjxUYXJnZXQ+Ojp0eXBlIHRhcmdldF9jaGFyX3Q7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbmRuYm9vc3Q6OmRldGFpbDo6d2lkZXN0X2NoYXI8Ci0gICAgICAgICAgICAgICAgdGFyZ2V0X2NoYXJfdCwgc3JjX2NoYXJfdAotICAgICAgICAgICAgPjo6dHlwZSBjaGFyX3R5cGU7Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9DSEFSMTZfVCkgJiYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9VTklDT0RFX0xJVEVSQUxTKQotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVF9NU0coKCAhbmRuYm9vc3Q6OmlzX3NhbWU8Y2hhcjE2X3QsIHNyY19jaGFyX3Q+Ojp2YWx1ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICFuZG5ib29zdDo6aXNfc2FtZTxjaGFyMTZfdCwgdGFyZ2V0X2NoYXJfdD46OnZhbHVlKSwKLSAgICAgICAgICAgICAgICAiWW91ciBjb21waWxlciBkb2VzIG5vdCBoYXZlIGZ1bGwgc3VwcG9ydCBmb3IgY2hhcjE2X3QiICk7Ci0jZW5kaWYKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9DSEFSMzJfVCkgJiYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9VTklDT0RFX0xJVEVSQUxTKQotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVF9NU0coKCAhbmRuYm9vc3Q6OmlzX3NhbWU8Y2hhcjMyX3QsIHNyY19jaGFyX3Q+Ojp2YWx1ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICFuZG5ib29zdDo6aXNfc2FtZTxjaGFyMzJfdCwgdGFyZ2V0X2NoYXJfdD46OnZhbHVlKSwKLSAgICAgICAgICAgICAgICAiWW91ciBjb21waWxlciBkb2VzIG5vdCBoYXZlIGZ1bGwgc3VwcG9ydCBmb3IgY2hhcjMyX3QiICk7Ci0jZW5kaWYKLQotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG5kbmJvb3N0OjpkZXRhaWw6OmRlZHVjZV9jaGFyX3RyYWl0czwKLSAgICAgICAgICAgICAgICBjaGFyX3R5cGUsIFRhcmdldCwgbm9fY3Zfc3JjCi0gICAgICAgICAgICA+Ojp0eXBlIHRyYWl0czsKLQotICAgICAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX3NhbWU8Y2hhciwgc3JjX2NoYXJfdD46OnZhbHVlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzb3VyY2UgaXMgbm90IGEgd2lkZSBjaGFyYWN0ZXIgYmFzZWQgdHlwZQotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25lPHNpemVvZihjaGFyKSwgc2l6ZW9mKHRhcmdldF9jaGFyX3QpID46OnZhbHVlLCAgLy8gdGFyZ2V0IHR5cGUgaXMgYmFzZWQgb24gd2lkZSBjaGFyYWN0ZXIKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8Ci0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmlzX2NoYXJfb3Jfd2NoYXI8bm9fY3Zfc3JjPjo6dmFsdWUgICAgICAgICAgICAgICAgICAgICAvLyBzaW5nbGUgY2hhcmFjdGVyIHdpZGVuaW5nIGlzIG9wdGltaXplZAotICAgICAgICAgICAgICAgID46OnZhbHVlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIGRvZXMgbm90IHJlcXVpcmVzIHN0cmluZ2J1ZmZlcgotICAgICAgICAgICAgPiAgIGlzX3N0cmluZ193aWRlbmluZ19yZXF1aXJlZF90OwotCi0gICAgICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX2ludGVncmFsPG5vX2N2X3NyYz46OnZhbHVlLAotICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmlzX3RoaXNfZmxvYXRfY29udmVyc2lvbl9vcHRpbWl6ZWQ8bm9fY3Zfc3JjLCBjaGFyX3R5cGUgPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6aXNfY2hhcl9vcl93Y2hhcjwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBkZWR1Y2Vfc3JjX2NoYXJfbWV0YWZ1bmM6OnN0YWdlMV90eXBlICAgICAgICAgIC8vIGlmIHdlIGRpZCBub3QgZ2V0IGNoYXJhY3RlciB0eXBlIGF0IHN0YWdlMQotICAgICAgICAgICAgICAgID46OnZhbHVlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlbiB3ZSBoYXZlIG5vIG9wdGltaXphdGlvbiBmb3IgdGhhdCB0eXBlCi0gICAgICAgICAgICA+Ojp2YWx1ZSA+ICAgaXNfc291cmNlX2lucHV0X25vdF9vcHRpbWl6ZWRfdDsKLQotICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhbiBvcHRpbWl6ZWQgY29udmVyc2lvbiBmb3IKLSAgICAgICAgICAgIC8vIFNvdXJjZSwgd2UgZG8gbm90IG5lZWQgdG8gY29uc3RydWN0IHN0cmluZ2J1Zi4KLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCByZXF1aXJlc19zdHJpbmdidWYgPSAKLSAgICAgICAgICAgICAgICAobmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8Ci0gICAgICAgICAgICAgICAgICAgIGlzX3N0cmluZ193aWRlbmluZ19yZXF1aXJlZF90Ojp2YWx1ZSwgaXNfc291cmNlX2lucHV0X25vdF9vcHRpbWl6ZWRfdDo6dmFsdWUKLSAgICAgICAgICAgICAgICA+Ojp2YWx1ZSkKLSAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6bGNhc3Rfc3JjX2xlbmd0aDxub19jdl9zcmM+IGxlbl90OwotICAgICAgICB9OwotICAgIH0KLQotICAgIG5hbWVzcGFjZSBkZXRhaWwgLy8gJzAnLCAnKycgYW5kICctJyBjb25zdGFudHMKLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlIDwgdHlwZW5hbWUgQ2hhciA+IHN0cnVjdCBsY2FzdF9jaGFyX2NvbnN0YW50czsKLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCBsY2FzdF9jaGFyX2NvbnN0YW50czxjaGFyPgotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoY2hhciwgemVybyAgPSAnMCcpOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGNoYXIsIG1pbnVzID0gJy0nKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChjaGFyLCBwbHVzID0gJysnKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChjaGFyLCBsb3dlcmNhc2VfZSA9ICdlJyk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoY2hhciwgY2FwaXRhbF9lID0gJ0UnKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChjaGFyLCBjX2RlY2ltYWxfc2VwYXJhdG9yID0gJy4nKTsKLSAgICAgICAgfTsKLQotI2lmbmRlZiBORE5CT09TVF9MQ0FTVF9OT19XQ0hBUl9UCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IGxjYXN0X2NoYXJfY29uc3RhbnRzPHdjaGFyX3Q+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh3Y2hhcl90LCB6ZXJvICA9IEwnMCcpOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHdjaGFyX3QsIG1pbnVzID0gTCctJyk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQod2NoYXJfdCwgcGx1cyA9IEwnKycpOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHdjaGFyX3QsIGxvd2VyY2FzZV9lID0gTCdlJyk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQod2NoYXJfdCwgY2FwaXRhbF9lID0gTCdFJyk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQod2NoYXJfdCwgY19kZWNpbWFsX3NlcGFyYXRvciA9IEwnLicpOwotICAgICAgICB9OwotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9DSEFSMTZfVCkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVU5JQ09ERV9MSVRFUkFMUykKLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgbGNhc3RfY2hhcl9jb25zdGFudHM8Y2hhcjE2X3Q+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChjaGFyMTZfdCwgemVybyAgPSB1JzAnKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChjaGFyMTZfdCwgbWludXMgPSB1Jy0nKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChjaGFyMTZfdCwgcGx1cyA9IHUnKycpOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGNoYXIxNl90LCBsb3dlcmNhc2VfZSA9IHUnZScpOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGNoYXIxNl90LCBjYXBpdGFsX2UgPSB1J0UnKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChjaGFyMTZfdCwgY19kZWNpbWFsX3NlcGFyYXRvciA9IHUnLicpOwotICAgICAgICB9OwotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9DSEFSMzJfVCkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVU5JQ09ERV9MSVRFUkFMUykKLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgbGNhc3RfY2hhcl9jb25zdGFudHM8Y2hhcjMyX3Q+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChjaGFyMzJfdCwgemVybyAgPSBVJzAnKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChjaGFyMzJfdCwgbWludXMgPSBVJy0nKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChjaGFyMzJfdCwgcGx1cyA9IFUnKycpOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGNoYXIzMl90LCBsb3dlcmNhc2VfZSA9IFUnZScpOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGNoYXIzMl90LCBjYXBpdGFsX2UgPSBVJ0UnKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChjaGFyMzJfdCwgY19kZWNpbWFsX3NlcGFyYXRvciA9IFUnLicpOwotICAgICAgICB9OwotI2VuZGlmCi0gICAgfQotCi0gICAgbmFtZXNwYWNlIGRldGFpbCAvLyBsY2FzdF90b191bnNpZ25lZAotICAgIHsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICAgICAgaW5saW5lCi0gICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbWFrZV91bnNpZ25lZDxUPjo6dHlwZSBsY2FzdF90b191bnNpZ25lZChUIHZhbHVlKSBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbmRuYm9vc3Q6Om1ha2VfdW5zaWduZWQ8VD46OnR5cGUgcmVzdWx0X3R5cGU7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8cmVzdWx0X3R5cGU+KAotICAgICAgICAgICAgICAgIHZhbHVlIDwgMCA/IDB1IC0gc3RhdGljX2Nhc3Q8cmVzdWx0X3R5cGU+KHZhbHVlKSA6IHZhbHVlCi0gICAgICAgICAgICApOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbmFtZXNwYWNlIGRldGFpbCAvLyBsY2FzdF9wdXRfdW5zaWduZWQKLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFRyYWl0cywgY2xhc3MgVCwgY2xhc3MgQ2hhclQ+Ci0gICAgICAgIENoYXJUKiBsY2FzdF9wdXRfdW5zaWduZWQoY29uc3QgVCBuX3BhcmFtLCBDaGFyVCogZmluaXNoKQotICAgICAgICB7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX0xJTUlUU19DT01QSUxFX1RJTUVfQ09OU1RBTlRTCi0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCFzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojppc19zaWduZWQpOwotI2VuZGlmCi0KLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjppbnRfdHlwZSBpbnRfdHlwZTsKLSAgICAgICAgICAgIENoYXJUIGNvbnN0IGN6ZXJvID0gbGNhc3RfY2hhcl9jb25zdGFudHM8Q2hhclQ+Ojp6ZXJvOwotICAgICAgICAgICAgaW50X3R5cGUgY29uc3QgemVybyA9IFRyYWl0czo6dG9faW50X3R5cGUoY3plcm8pOwotICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6bXBsOjppZl9jPAotICAgICAgICAgICAgICAgICAgICAoc2l6ZW9mKGludF90eXBlKSA+IHNpemVvZihUKSkKLSAgICAgICAgICAgICAgICAgICAgLCBpbnRfdHlwZQotICAgICAgICAgICAgICAgICAgICAsIFQKLSAgICAgICAgICAgID46OnR5cGUgbiA9IG5fcGFyYW07Ci0KLSNpZm5kZWYgTkROQk9PU1RfTEVYSUNBTF9DQVNUX0FTU1VNRV9DX0xPQ0FMRQotICAgICAgICAgICAgc3RkOjpsb2NhbGUgbG9jOwotICAgICAgICAgICAgaWYgKGxvYyAhPSBzdGQ6OmxvY2FsZTo6Y2xhc3NpYygpKSB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBzdGQ6Om51bXB1bmN0PENoYXJUPiBudW1wdW5jdDsKLSAgICAgICAgICAgICAgICBudW1wdW5jdCBjb25zdCYgbnAgPSBORE5CT09TVF9VU0VfRkFDRVQobnVtcHVuY3QsIGxvYyk7Ci0gICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgY29uc3QgZ3JvdXBpbmcgPSBucC5ncm91cGluZygpOwotICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgY29uc3QgZ3JvdXBpbmdfc2l6ZSA9IGdyb3VwaW5nLnNpemUoKTsKLQotICAgICAgICAgICAgICAgIGlmICggZ3JvdXBpbmdfc2l6ZSAmJiBncm91cGluZ1swXSA+IDAgKQotICAgICAgICAgICAgICAgIHsKLQotI2lmbmRlZiBORE5CT09TVF9OT19MSU1JVFNfQ09NUElMRV9USU1FX0NPTlNUQU5UUwotICAgICAgICAgICAgICAgIC8vIENoZWNrIHRoYXQgdWxpbWl0ZWQgZ3JvdXAgaXMgdW5yZWFjaGFibGU6Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjpkaWdpdHMxMCA8IENIQVJfTUFYKTsKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICBDaGFyVCB0aG91c2FuZHNfc2VwID0gbnAudGhvdXNhbmRzX3NlcCgpOwotICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIGdyb3VwID0gMDsgLy8gY3VycmVudCBncm91cCBudW1iZXIKLSAgICAgICAgICAgICAgICAgICAgY2hhciBsYXN0X2dycF9zaXplID0gZ3JvdXBpbmdbMF07Ci0gICAgICAgICAgICAgICAgICAgIGNoYXIgbGVmdCA9IGxhc3RfZ3JwX3NpemU7Ci0KLSAgICAgICAgICAgICAgICAgICAgZG8KLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYobGVmdCA9PSAwKQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrZ3JvdXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoZ3JvdXAgPCBncm91cGluZ19zaXplKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBjb25zdCBncnBfc2l6ZSA9IGdyb3VwaW5nW2dyb3VwXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdF9ncnBfc2l6ZSA9IGdycF9zaXplIDw9IDAgPyBzdGF0aWNfY2FzdDxjaGFyPihDSEFSX01BWCkgOiBncnBfc2l6ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gbGFzdF9ncnBfc2l6ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWZpbmlzaDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFpdHM6OmFzc2lnbigqZmluaXNoLCB0aG91c2FuZHNfc2VwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgLS1sZWZ0OwotCi0gICAgICAgICAgICAgICAgICAgICAgICAtLWZpbmlzaDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGludF90eXBlIGNvbnN0IGRpZ2l0ID0gc3RhdGljX2Nhc3Q8aW50X3R5cGU+KG4gJSAxMFUpOwotICAgICAgICAgICAgICAgICAgICAgICAgVHJhaXRzOjphc3NpZ24oKmZpbmlzaCwgVHJhaXRzOjp0b19jaGFyX3R5cGUoemVybyArIGRpZ2l0KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuIC89IDEwOwotICAgICAgICAgICAgICAgICAgICB9IHdoaWxlKG4pOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmluaXNoOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSNlbmRpZgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGRvCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAtLWZpbmlzaDsKLSAgICAgICAgICAgICAgICAgICAgaW50X3R5cGUgY29uc3QgZGlnaXQgPSBzdGF0aWNfY2FzdDxpbnRfdHlwZT4obiAlIDEwVSk7Ci0gICAgICAgICAgICAgICAgICAgIFRyYWl0czo6YXNzaWduKCpmaW5pc2gsIFRyYWl0czo6dG9fY2hhcl90eXBlKHplcm8gKyBkaWdpdCkpOwotICAgICAgICAgICAgICAgICAgICBuIC89IDEwOwotICAgICAgICAgICAgICAgIH0gd2hpbGUobik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVybiBmaW5pc2g7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBuYW1lc3BhY2UgZGV0YWlsIC8vIGxjYXN0X3JldF91bnNpZ25lZAotICAgIHsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVHJhaXRzLCBjbGFzcyBULCBjbGFzcyBDaGFyVD4KLSAgICAgICAgaW5saW5lIGJvb2wgbGNhc3RfcmV0X3Vuc2lnbmVkKFQmIHZhbHVlLCBjb25zdCBDaGFyVCogY29uc3QgYmVnaW4sIGNvbnN0IENoYXJUKiBlbmQpCi0gICAgICAgIHsKLSNpZm5kZWYgTkROQk9PU1RfTk9fTElNSVRTX0NPTVBJTEVfVElNRV9DT05TVEFOVFMKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoIXN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmlzX3NpZ25lZCk7Ci0jZW5kaWYKLSAgICAgICAgICAgIENoYXJUIGNvbnN0IGN6ZXJvID0gbGNhc3RfY2hhcl9jb25zdGFudHM8Q2hhclQ+Ojp6ZXJvOwotICAgICAgICAgICAgLS1lbmQ7Ci0gICAgICAgICAgICB2YWx1ZSA9IDA7Ci0KLSAgICAgICAgICAgIGlmIChiZWdpbiA+IGVuZCB8fCAqZW5kIDwgY3plcm8gfHwgKmVuZCA+PSBjemVybyArIDEwKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIHZhbHVlID0gc3RhdGljX2Nhc3Q8VD4oKmVuZCAtIGN6ZXJvKTsKLSAgICAgICAgICAgIC0tZW5kOwotICAgICAgICAgICAgVCBtdWx0aXBsaWVyID0gMTsKLSAgICAgICAgICAgIGJvb2wgbXVsdGlwbGllcl9vdmVyZmxvd2VkID0gZmFsc2U7Ci0KLSNpZm5kZWYgTkROQk9PU1RfTEVYSUNBTF9DQVNUX0FTU1VNRV9DX0xPQ0FMRQotICAgICAgICAgICAgc3RkOjpsb2NhbGUgbG9jOwotICAgICAgICAgICAgaWYgKGxvYyAhPSBzdGQ6OmxvY2FsZTo6Y2xhc3NpYygpKSB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBzdGQ6Om51bXB1bmN0PENoYXJUPiBudW1wdW5jdDsKLSAgICAgICAgICAgICAgICBudW1wdW5jdCBjb25zdCYgbnAgPSBORE5CT09TVF9VU0VfRkFDRVQobnVtcHVuY3QsIGxvYyk7Ci0gICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgY29uc3QmIGdyb3VwaW5nID0gbnAuZ3JvdXBpbmcoKTsKLSAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIGNvbnN0IGdyb3VwaW5nX3NpemUgPSBncm91cGluZy5zaXplKCk7Ci0KLSAgICAgICAgICAgICAgICAvKiBBY2NvcmRpbmcgdG8gUHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzIC0gQysrCi0gICAgICAgICAgICAgICAgICogd2UgTVVTVCBjaGVjayBmb3IgY29ycmVjdCBncm91cGluZwotICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgIGlmIChncm91cGluZ19zaXplICYmIGdyb3VwaW5nWzBdID4gMCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgY3VycmVudF9ncm91cGluZyA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIENoYXJUIGNvbnN0IHRob3VzYW5kc19zZXAgPSBucC50aG91c2FuZHNfc2VwKCk7Ci0gICAgICAgICAgICAgICAgICAgIGNoYXIgcmVtYWluZWQgPSBzdGF0aWNfY2FzdDxjaGFyPihncm91cGluZ1tjdXJyZW50X2dyb3VwaW5nXSAtIDEpOwotICAgICAgICAgICAgICAgICAgICBib29sIHNoYWxsX3dlX3JldHVybiA9IHRydWU7Ci0KLSAgICAgICAgICAgICAgICAgICAgZm9yKDtlbmQ+PWJlZ2luOyAtLWVuZCkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlbWFpbmVkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVCBjb25zdCBtdWx0aXBsaWVyXzEwID0gc3RhdGljX2Nhc3Q8VD4obXVsdGlwbGllciAqIDEwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobXVsdGlwbGllcl8xMCAvIDEwICE9IG11bHRpcGxpZXIpIG11bHRpcGxpZXJfb3ZlcmZsb3dlZCA9IHRydWU7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUIGNvbnN0IGRpZ192YWx1ZSA9IHN0YXRpY19jYXN0PFQ+KCplbmQgLSBjemVybyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVCBjb25zdCBuZXdfc3ViX3ZhbHVlID0gc3RhdGljX2Nhc3Q8VD4obXVsdGlwbGllcl8xMCAqIGRpZ192YWx1ZSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKmVuZCA8IGN6ZXJvIHx8ICplbmQgPj0gY3plcm8gKyAxMAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZGV0ZWN0aW5nIG92ZXJmbG93ICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoZGlnX3ZhbHVlICYmIG5ld19zdWJfdmFsdWUgLyBkaWdfdmFsdWUgIT0gbXVsdGlwbGllcl8xMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHN0YXRpY19jYXN0PFQ+KChzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgpKCktbmV3X3N1Yl92YWx1ZSkgPCB2YWx1ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKG11bHRpcGxpZXJfb3ZlcmZsb3dlZCAmJiBkaWdfdmFsdWUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gc3RhdGljX2Nhc3Q8VD4odmFsdWUgKyBuZXdfc3ViX3ZhbHVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsaWVyID0gc3RhdGljX2Nhc3Q8VD4obXVsdGlwbGllciAqIDEwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLXJlbWFpbmVkOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICFUcmFpdHM6OmVxKCplbmQsIHRob3VzYW5kc19zZXApICkgLy98fCBiZWdpbiA9PSBlbmQgKSByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBBY2NvcmRpbmcgdG8gUHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzIC0gQysrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIERpZ2l0IGdyb3VwaW5nIGlzIGNoZWNrZWQuIFRoYXQgaXMsIHRoZSBwb3NpdGlvbnMgb2YgZGlzY2FyZGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHNlcGFyYXRvcnMgaXMgZXhhbWluZWQgZm9yIGNvbnNpc3RlbmN5IHdpdGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdXNlX2ZhY2V0PG51bXB1bmN0PGNoYXJUPiA+KGxvYyApLmdyb3VwaW5nKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogQlVUIHdoYXQgaWYgdGhlcmUgaXMgbm8gc2VwYXJhdG9ycyBhdCBhbGwgYW5kIGdyb3VwaW5nKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaXMgbm90IGVtcHR5PyBXZWxsLCB3ZSBoYXZlIG5vIGV4dHJhY2VkIHNlcGFyYXRvcnMsIHNvIHdlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHdvbmB0IGNoZWNrIHRoZW0gZm9yIGNvbnNpc3RlbmN5LiBUaGlzIHdpbGwgYWxsb3cgdXMgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogd29yayB3aXRoICJDIiBsb2NhbGUgZnJvbSBvdGhlciBsb2NhbGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFsbF93ZV9yZXR1cm4gPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBiZWdpbiA9PSBlbmQgKSByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50X2dyb3VwaW5nIDwgZ3JvdXBpbmdfc2l6ZS0xICkgKytjdXJyZW50X2dyb3VwaW5nOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1haW5lZCA9IGdyb3VwaW5nW2N1cnJlbnRfZ3JvdXBpbmddOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGlmIChzaGFsbF93ZV9yZXR1cm4pIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSNlbmRpZgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHdoaWxlICggYmVnaW4gPD0gZW5kICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIFQgY29uc3QgbXVsdGlwbGllcl8xMCA9IHN0YXRpY19jYXN0PFQ+KG11bHRpcGxpZXIgKiAxMCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtdWx0aXBsaWVyXzEwIC8gMTAgIT0gbXVsdGlwbGllcikgbXVsdGlwbGllcl9vdmVyZmxvd2VkID0gdHJ1ZTsKLQotICAgICAgICAgICAgICAgICAgICBUIGNvbnN0IGRpZ192YWx1ZSA9IHN0YXRpY19jYXN0PFQ+KCplbmQgLSBjemVybyk7Ci0gICAgICAgICAgICAgICAgICAgIFQgY29uc3QgbmV3X3N1Yl92YWx1ZSA9IHN0YXRpY19jYXN0PFQ+KG11bHRpcGxpZXJfMTAgKiBkaWdfdmFsdWUpOwotCi0gICAgICAgICAgICAgICAgICAgIGlmICgqZW5kIDwgY3plcm8gfHwgKmVuZCA+PSBjemVybyArIDEwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZGV0ZWN0aW5nIG92ZXJmbG93ICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKGRpZ192YWx1ZSAmJiBuZXdfc3ViX3ZhbHVlIC8gZGlnX3ZhbHVlICE9IG11bHRpcGxpZXJfMTApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgc3RhdGljX2Nhc3Q8VD4oKHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heCkoKS1uZXdfc3ViX3ZhbHVlKSA8IHZhbHVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKG11bHRpcGxpZXJfb3ZlcmZsb3dlZCAmJiBkaWdfdmFsdWUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gc3RhdGljX2Nhc3Q8VD4odmFsdWUgKyBuZXdfc3ViX3ZhbHVlKTsKLSAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGllciA9IHN0YXRpY19jYXN0PFQ+KG11bHRpcGxpZXIgKiAxMCk7Ci0gICAgICAgICAgICAgICAgICAgIC0tZW5kOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbmFtZXNwYWNlIGRldGFpbAotICAgIHsKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIENoYXJUPgotICAgICAgICBib29sIGxjX2llcXVhbChjb25zdCBDaGFyVCogdmFsLCBjb25zdCBDaGFyVCogbGNhc2UsIGNvbnN0IENoYXJUKiB1Y2FzZSwgdW5zaWduZWQgaW50IGxlbikgTkROQk9PU1RfTk9FWENFUFQgewotICAgICAgICAgICAgZm9yKCB1bnNpZ25lZCBpbnQgaT0wOyBpIDwgbGVuOyArK2kgKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCB2YWxbaV0gIT0gbGNhc2VbaV0gJiYgdmFsW2ldICE9IHVjYXNlW2ldICkgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8qIFJldHVybnMgdHJ1ZSBhbmQgc2V0cyB0aGUgY29ycmVjdCB2YWx1ZSBpZiBmb3VuZCBOYU4gb3IgSW5mLiAqLwotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ2hhclQsIGNsYXNzIFQ+Ci0gICAgICAgIGlubGluZSBib29sIHBhcnNlX2luZl9uYW5faW1wbChjb25zdCBDaGFyVCogYmVnaW4sIGNvbnN0IENoYXJUKiBlbmQsIFQmIHZhbHVlCi0gICAgICAgICAgICAsIGNvbnN0IENoYXJUKiBsY19OQU4sIGNvbnN0IENoYXJUKiBsY19uYW4KLSAgICAgICAgICAgICwgY29uc3QgQ2hhclQqIGxjX0lORklOSVRZLCBjb25zdCBDaGFyVCogbGNfaW5maW5pdHkKLSAgICAgICAgICAgICwgY29uc3QgQ2hhclQgb3BlbmluZ19icmFjZSwgY29uc3QgQ2hhclQgY2xvc2luZ19icmFjZSkgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICAgICAgICAgIGlmIChiZWdpbiA9PSBlbmQpIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGNvbnN0IENoYXJUIG1pbnVzID0gbGNhc3RfY2hhcl9jb25zdGFudHM8Q2hhclQ+OjptaW51czsKLSAgICAgICAgICAgIGNvbnN0IENoYXJUIHBsdXMgPSBsY2FzdF9jaGFyX2NvbnN0YW50czxDaGFyVD46OnBsdXM7Ci0gICAgICAgICAgICBjb25zdCBpbnQgaW5pZmluaXR5X3NpemUgPSA4OwotCi0gICAgICAgICAgICBib29sIGhhc19taW51cyA9IGZhbHNlOwotICAgICAgICAgICAgLyogUGFyc2luZyArLy0gKi8KLSAgICAgICAgICAgIGlmKCAqYmVnaW4gPT0gbWludXMpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgKysgYmVnaW47Ci0gICAgICAgICAgICAgICAgaGFzX21pbnVzID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYoICpiZWdpbiA9PSBwbHVzICkgKytiZWdpbjsKLQotICAgICAgICAgICAgaWYoIGVuZC1iZWdpbiA8IDMgKSByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiggbGNfaWVxdWFsKGJlZ2luLCBsY19uYW4sIGxjX05BTiwgMykgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGJlZ2luICs9IDM7Ci0gICAgICAgICAgICAgICAgaWYgKGVuZCAhPSBiZWdpbikgLyogSXQgaXMgJ25hbiguLi4pJyBvciBzb21lIGJhZCBpbnB1dCovCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZihlbmQtYmVnaW48MikgcmV0dXJuIGZhbHNlOyAvLyBiYWQgaW5wdXQKLSAgICAgICAgICAgICAgICAgICAgLS0gZW5kOwotICAgICAgICAgICAgICAgICAgICBpZiggKmJlZ2luICE9IG9wZW5pbmdfYnJhY2UgfHwgKmVuZCAhPSBjbG9zaW5nX2JyYWNlKSByZXR1cm4gZmFsc2U7IC8vIGJhZCBpbnB1dAotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmKCAhaGFzX21pbnVzICkgdmFsdWUgPSBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjpxdWlldF9OYU4oKTsKLSAgICAgICAgICAgICAgICBlbHNlIHZhbHVlID0gKG5kbmJvb3N0OjptYXRoOjpjaGFuZ2VzaWduKSAoc3RkOjpudW1lcmljX2xpbWl0czxUPjo6cXVpZXRfTmFOKCkpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBpZiAoKCAvKiAnSU5GJyBvciAnaW5mJyAqLwotICAgICAgICAgICAgICAgICAgZW5kLWJlZ2luPT0zCi0gICAgICAgICAgICAgICAgICAmJgotICAgICAgICAgICAgICAgICAgbGNfaWVxdWFsKGJlZ2luLCBsY19pbmZpbml0eSwgbGNfSU5GSU5JVFksIDMpCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgIHx8Ci0gICAgICAgICAgICAgICAgKCAvKiAnSU5GSU5JVFknIG9yICdpbmZpbml0eScgKi8KLSAgICAgICAgICAgICAgICAgIGVuZC1iZWdpbj09aW5pZmluaXR5X3NpemUKLSAgICAgICAgICAgICAgICAgICYmCi0gICAgICAgICAgICAgICAgICBsY19pZXF1YWwoYmVnaW4sIGxjX2luZmluaXR5LCBsY19JTkZJTklUWSwgaW5pZmluaXR5X3NpemUpCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiggIWhhc19taW51cyApIHZhbHVlID0gc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aW5maW5pdHkoKTsKLSAgICAgICAgICAgICAgICBlbHNlIHZhbHVlID0gKG5kbmJvb3N0OjptYXRoOjpjaGFuZ2VzaWduKSAoc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aW5maW5pdHkoKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBDaGFyVCwgY2xhc3MgVD4KLSAgICAgICAgYm9vbCBwdXRfaW5mX25hbl9pbXBsKENoYXJUKiBiZWdpbiwgQ2hhclQqJiBlbmQsIGNvbnN0IFQmIHZhbHVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgLCBjb25zdCBDaGFyVCogbGNfbmFuCi0gICAgICAgICAgICAgICAgICAgICAgICAgLCBjb25zdCBDaGFyVCogbGNfaW5maW5pdHkpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgICAgICAgICBjb25zdCBDaGFyVCBtaW51cyA9IGxjYXN0X2NoYXJfY29uc3RhbnRzPENoYXJUPjo6bWludXM7Ci0gICAgICAgICAgICBpZiAoIChuZG5ib29zdDo6bWF0aDo6aXNuYW4pKHZhbHVlKSApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKCAobmRuYm9vc3Q6Om1hdGg6OnNpZ25iaXQpKHZhbHVlKSApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAqYmVnaW4gPSBtaW51czsKLSAgICAgICAgICAgICAgICAgICAgKysgYmVnaW47Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgbWVtY3B5KGJlZ2luLCBsY19uYW4sIDMgKiBzaXplb2YoQ2hhclQpKTsKLSAgICAgICAgICAgICAgICBlbmQgPSBiZWdpbiArIDM7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCAobmRuYm9vc3Q6Om1hdGg6OmlzaW5mKSh2YWx1ZSkgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICggKG5kbmJvb3N0OjptYXRoOjpzaWduYml0KSh2YWx1ZSkgKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgKmJlZ2luID0gbWludXM7Ci0gICAgICAgICAgICAgICAgICAgICsrIGJlZ2luOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIG1lbWNweShiZWdpbiwgbGNfaW5maW5pdHksIDMgKiBzaXplb2YoQ2hhclQpKTsKLSAgICAgICAgICAgICAgICBlbmQgPSBiZWdpbiArIDM7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0KLSNpZm5kZWYgTkROQk9PU1RfTENBU1RfTk9fV0NIQVJfVAotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgYm9vbCBwYXJzZV9pbmZfbmFuKGNvbnN0IHdjaGFyX3QqIGJlZ2luLCBjb25zdCB3Y2hhcl90KiBlbmQsIFQmIHZhbHVlKSBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcGFyc2VfaW5mX25hbl9pbXBsKGJlZ2luLCBlbmQsIHZhbHVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBMIk5BTiIsIEwibmFuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgTCJJTkZJTklUWSIsIEwiaW5maW5pdHkiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBMJygnLCBMJyknKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgICBib29sIHB1dF9pbmZfbmFuKHdjaGFyX3QqIGJlZ2luLCB3Y2hhcl90KiYgZW5kLCBjb25zdCBUJiB2YWx1ZSkgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHB1dF9pbmZfbmFuX2ltcGwoYmVnaW4sIGVuZCwgdmFsdWUsIEwibmFuIiwgTCJpbmZpbml0eSIpOwotICAgICAgICB9Ci0KLSNlbmRpZgotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0NIQVIxNl9UKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9VTklDT0RFX0xJVEVSQUxTKQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgYm9vbCBwYXJzZV9pbmZfbmFuKGNvbnN0IGNoYXIxNl90KiBiZWdpbiwgY29uc3QgY2hhcjE2X3QqIGVuZCwgVCYgdmFsdWUpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBwYXJzZV9pbmZfbmFuX2ltcGwoYmVnaW4sIGVuZCwgdmFsdWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIHUiTkFOIiwgdSJuYW4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCB1IklORklOSVRZIiwgdSJpbmZpbml0eSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIHUnKCcsIHUnKScpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgIGJvb2wgcHV0X2luZl9uYW4oY2hhcjE2X3QqIGJlZ2luLCBjaGFyMTZfdComIGVuZCwgY29uc3QgVCYgdmFsdWUpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBwdXRfaW5mX25hbl9pbXBsKGJlZ2luLCBlbmQsIHZhbHVlLCB1Im5hbiIsIHUiaW5maW5pdHkiKTsKLSAgICAgICAgfQotI2VuZGlmCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjMyX1QpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1VOSUNPREVfTElURVJBTFMpCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgICBib29sIHBhcnNlX2luZl9uYW4oY29uc3QgY2hhcjMyX3QqIGJlZ2luLCBjb25zdCBjaGFyMzJfdCogZW5kLCBUJiB2YWx1ZSkgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHBhcnNlX2luZl9uYW5faW1wbChiZWdpbiwgZW5kLCB2YWx1ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgVSJOQU4iLCBVIm5hbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIFUiSU5GSU5JVFkiLCBVImluZmluaXR5IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgVScoJywgVScpJyk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgYm9vbCBwdXRfaW5mX25hbihjaGFyMzJfdCogYmVnaW4sIGNoYXIzMl90KiYgZW5kLCBjb25zdCBUJiB2YWx1ZSkgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHB1dF9pbmZfbmFuX2ltcGwoYmVnaW4sIGVuZCwgdmFsdWUsIFUibmFuIiwgVSJpbmZpbml0eSIpOwotICAgICAgICB9Ci0jZW5kaWYKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ2hhclQsIGNsYXNzIFQ+Ci0gICAgICAgIGJvb2wgcGFyc2VfaW5mX25hbihjb25zdCBDaGFyVCogYmVnaW4sIGNvbnN0IENoYXJUKiBlbmQsIFQmIHZhbHVlKSBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcGFyc2VfaW5mX25hbl9pbXBsKGJlZ2luLCBlbmQsIHZhbHVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAiTkFOIiwgIm5hbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsICJJTkZJTklUWSIsICJpbmZpbml0eSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsICcoJywgJyknKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBDaGFyVCwgY2xhc3MgVD4KLSAgICAgICAgYm9vbCBwdXRfaW5mX25hbihDaGFyVCogYmVnaW4sIENoYXJUKiYgZW5kLCBjb25zdCBUJiB2YWx1ZSkgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHB1dF9pbmZfbmFuX2ltcGwoYmVnaW4sIGVuZCwgdmFsdWUsICJuYW4iLCAiaW5maW5pdHkiKTsKLSAgICAgICAgfQotICAgIH0KLQotCi0gICAgbmFtZXNwYWNlIGRldGFpbCAvLyBsY2FzdF9yZXRfZmxvYXQKLSAgICB7Ci0KLS8vIFNpbGVuY2UgYnVnZ3kgTVMgd2FybmluZ3MgbGlrZSBDNDI0NDogJys9JyA6IGNvbnZlcnNpb24gZnJvbSAnaW50JyB0byAndW5zaWduZWQgc2hvcnQnLCBwb3NzaWJsZSBsb3NzIG9mIGRhdGEgCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID09IDE0MDApIAotIyAgcHJhZ21hIHdhcm5pbmcocHVzaCkgCi0jICBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQyNDQpIAotI2VuZGlmIAotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgc3RydWN0IG1hbnRpc3NhX2hvbGRlcl90eXBlCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8qIENhbiBub3QgYmUgdXNlZCB3aXRoIHRoaXMgdHlwZSAqLwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlIDw+Ci0gICAgICAgIHN0cnVjdCBtYW50aXNzYV9ob2xkZXJfdHlwZTxmbG9hdD4KLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgdHlwZTsKLSAgICAgICAgICAgIHR5cGVkZWYgZG91YmxlICAgICAgIHdpZGVfcmVzdWx0X3Q7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGUgPD4KLSAgICAgICAgc3RydWN0IG1hbnRpc3NhX2hvbGRlcl90eXBlPGRvdWJsZT4KLSAgICAgICAgewotI2lmbmRlZiBORE5CT09TVF9NQVRIX05PX0xPTkdfRE9VQkxFX01BVEhfRlVOQ1RJT05TCi0gICAgICAgICAgICB0eXBlZGVmIGxvbmcgZG91YmxlICB3aWRlX3Jlc3VsdF90OwotI2lmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykKLSAgICAgICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZSB0eXBlOwotI2VsaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTVNfSU5UNjQpCi0gICAgICAgICAgICB0eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgdHlwZTsKLSNlbmRpZgotI2VuZGlmCi0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVHJhaXRzLCBjbGFzcyBULCBjbGFzcyBDaGFyVD4KLSAgICAgICAgaW5saW5lIGJvb2wgbGNhc3RfcmV0X2Zsb2F0KFQmIHZhbHVlLCBjb25zdCBDaGFyVCogYmVnaW4sIGNvbnN0IENoYXJUKiBlbmQpCi0gICAgICAgIHsKLQotI2lmbmRlZiBORE5CT09TVF9MRVhJQ0FMX0NBU1RfQVNTVU1FX0NfTE9DQUxFCi0gICAgICAgICAgICBzdGQ6OmxvY2FsZSBsb2M7Ci0gICAgICAgICAgICB0eXBlZGVmIHN0ZDo6bnVtcHVuY3Q8Q2hhclQ+IG51bXB1bmN0OwotICAgICAgICAgICAgbnVtcHVuY3QgY29uc3QmIG5wID0gTkROQk9PU1RfVVNFX0ZBQ0VUKG51bXB1bmN0LCBsb2MpOwotICAgICAgICAgICAgc3RkOjpzdHJpbmcgY29uc3QgZ3JvdXBpbmcoCi0gICAgICAgICAgICAgICAgICAgIChsb2MgPT0gc3RkOjpsb2NhbGU6OmNsYXNzaWMoKSkKLSAgICAgICAgICAgICAgICAgICAgPyBzdGQ6OnN0cmluZygpCi0gICAgICAgICAgICAgICAgICAgIDogbnAuZ3JvdXBpbmcoKQotICAgICAgICAgICAgKTsKLSAgICAgICAgICAgIHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgY29uc3QgZ3JvdXBpbmdfc2l6ZSA9IGdyb3VwaW5nLnNpemUoKTsKLSAgICAgICAgICAgIENoYXJUIGNvbnN0IHRob3VzYW5kc19zZXAgPSBzdGF0aWNfY2FzdDxDaGFyVD4oZ3JvdXBpbmdfc2l6ZSA/IG5wLnRob3VzYW5kc19zZXAoKSA6IDApOwotICAgICAgICAgICAgQ2hhclQgY29uc3QgZGVjaW1hbF9wb2ludCA9IG5wLmRlY2ltYWxfcG9pbnQoKTsKLSAgICAgICAgICAgIGJvb2wgZm91bmRfZ3JvdXBpbmcgPSBmYWxzZTsKLSAgICAgICAgICAgIHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgbGFzdF9ncm91cGluZ19wb3MgPSBncm91cGluZ19zaXplIC0gMTsKLSNlbHNlCi0gICAgICAgICAgICBDaGFyVCBjb25zdCBkZWNpbWFsX3BvaW50ID0gbGNhc3RfY2hhcl9jb25zdGFudHM8Q2hhclQ+OjpjX2RlY2ltYWxfc2VwYXJhdG9yOwotI2VuZGlmCi0KLSAgICAgICAgICAgIENoYXJUIGNvbnN0IGN6ZXJvID0gbGNhc3RfY2hhcl9jb25zdGFudHM8Q2hhclQ+Ojp6ZXJvOwotICAgICAgICAgICAgQ2hhclQgY29uc3QgbWludXMgPSBsY2FzdF9jaGFyX2NvbnN0YW50czxDaGFyVD46Om1pbnVzOwotICAgICAgICAgICAgQ2hhclQgY29uc3QgcGx1cyA9IGxjYXN0X2NoYXJfY29uc3RhbnRzPENoYXJUPjo6cGx1czsKLSAgICAgICAgICAgIENoYXJUIGNvbnN0IGNhcGl0YWxfZSA9IGxjYXN0X2NoYXJfY29uc3RhbnRzPENoYXJUPjo6Y2FwaXRhbF9lOwotICAgICAgICAgICAgQ2hhclQgY29uc3QgbG93ZXJjYXNlX2UgPSBsY2FzdF9jaGFyX2NvbnN0YW50czxDaGFyVD46Omxvd2VyY2FzZV9lOwotCi0gICAgICAgICAgICB2YWx1ZSA9IHN0YXRpY19jYXN0PFQ+KDApOwotCi0gICAgICAgICAgICBpZiAocGFyc2VfaW5mX25hbihiZWdpbiwgZW5kLCB2YWx1ZSkpIHJldHVybiB0cnVlOwotCi0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6aW50X3R5cGUgaW50X3R5cGU7Ci0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbWFudGlzc2FfaG9sZGVyX3R5cGU8VD46OnR5cGUgbWFudGlzc2FfdHlwZTsKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBtYW50aXNzYV9ob2xkZXJfdHlwZTxUPjo6d2lkZV9yZXN1bHRfdCB3aWRlX3Jlc3VsdF90OwotICAgICAgICAgICAgaW50X3R5cGUgY29uc3QgemVybyA9IFRyYWl0czo6dG9faW50X3R5cGUoY3plcm8pOwotICAgICAgICAgICAgaWYgKGJlZ2luID09IGVuZCkgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICAvKiBHZXR0aW5nIHRoZSBwbHVzL21pbnVzIHNpZ24gKi8KLSAgICAgICAgICAgIGJvb2wgaGFzX21pbnVzID0gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoVHJhaXRzOjplcSgqYmVnaW4sIG1pbnVzKSApIHsKLSAgICAgICAgICAgICAgICArKyBiZWdpbjsKLSAgICAgICAgICAgICAgICBoYXNfbWludXMgPSB0cnVlOwotICAgICAgICAgICAgICAgIGlmIChiZWdpbiA9PSBlbmQpIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoVHJhaXRzOjplcSgqYmVnaW4sIHBsdXMpICkgewotICAgICAgICAgICAgICAgICsrYmVnaW47Ci0gICAgICAgICAgICAgICAgaWYgKGJlZ2luID09IGVuZCkgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBib29sIGZvdW5kX2RlY2ltYWwgPSBmYWxzZTsKLSAgICAgICAgICAgIGJvb2wgZm91bmRfbnVtYmVyX2JlZm9yZV9leHAgPSBmYWxzZTsKLSAgICAgICAgICAgIGludCBwb3dfb2ZfMTAgPSAwOwotICAgICAgICAgICAgbWFudGlzc2FfdHlwZSBtYW50aXNzYT0wOwotICAgICAgICAgICAgYm9vbCBpc19tYW50aXNzYV9mdWxsID0gZmFsc2U7Ci0KLSAgICAgICAgICAgIGNoYXIgbGVuZ3RoX3NpbmNlX2xhc3RfZGVsaW0gPSAwOwotCi0gICAgICAgICAgICB3aGlsZSAoIGJlZ2luICE9IGVuZCApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKGZvdW5kX2RlY2ltYWwpIHsKLSAgICAgICAgICAgICAgICAgICAgLyogV2UgYWxsb3cgbm8gdGhvdXNhbmRfc2VwYXJhdG9ycyBhZnRlciBkZWNpbWFsIHBvaW50ICovCi0KLSAgICAgICAgICAgICAgICAgICAgbWFudGlzc2FfdHlwZSB0bXBfbWFudGlzc2EgPSBtYW50aXNzYSAqIDEwdTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKFRyYWl0czo6ZXEoKmJlZ2luLCBsb3dlcmNhc2VfZSkgfHwgVHJhaXRzOjplcSgqYmVnaW4sIGNhcGl0YWxfZSkpIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBpZiAoICpiZWdpbiA8IGN6ZXJvIHx8ICpiZWdpbiA+PSBjemVybyArIDEwICkgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICBpZiAoICAgIGlzX21hbnRpc3NhX2Z1bGwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCB0bXBfbWFudGlzc2EgLyAxMHUgIT0gbWFudGlzc2EKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoc3RkOjpudW1lcmljX2xpbWl0czxtYW50aXNzYV90eXBlPjo6bWF4KSgpLSgqYmVnaW4gLSB6ZXJvKSA8IHRtcF9tYW50aXNzYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgewotICAgICAgICAgICAgICAgICAgICAgICAgaXNfbWFudGlzc2FfZnVsbCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICArKyBiZWdpbjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgLS0gcG93X29mXzEwOwotICAgICAgICAgICAgICAgICAgICBtYW50aXNzYSA9IHRtcF9tYW50aXNzYTsKLSAgICAgICAgICAgICAgICAgICAgbWFudGlzc2EgKz0gKmJlZ2luIC0gemVybzsKLQotICAgICAgICAgICAgICAgICAgICBmb3VuZF9udW1iZXJfYmVmb3JlX2V4cCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLQotICAgICAgICAgICAgICAgICAgICBpZiAoKmJlZ2luID49IGN6ZXJvICYmICpiZWdpbiA8IGN6ZXJvICsgMTApIHsKLQotICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2hlY2tpbmcgZm9yIG1hbnRpc3NhIG92ZXJmbG93LiBJZiBvdmVyZmxvdyB3aWxsCi0gICAgICAgICAgICAgICAgICAgICAgICAgKiBvY2N1ciwgdGhlbSB3ZSBvbmx5IGluY3JlYXNlIG11bHRpcGx5ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgICAgICAgICAgbWFudGlzc2FfdHlwZSB0bXBfbWFudGlzc2EgPSBtYW50aXNzYSAqIDEwdTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmKCAgICAgIWlzX21hbnRpc3NhX2Z1bGwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgdG1wX21hbnRpc3NhIC8gMTB1ID09IG1hbnRpc3NhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIChzdGQ6Om51bWVyaWNfbGltaXRzPG1hbnRpc3NhX3R5cGU+OjptYXgpKCktKCpiZWdpbiAtIHplcm8pID49IHRtcF9tYW50aXNzYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYW50aXNzYSA9IHRtcF9tYW50aXNzYTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYW50aXNzYSArPSAqYmVnaW4gLSB6ZXJvOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfbWFudGlzc2FfZnVsbCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKysgcG93X29mXzEwOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9udW1iZXJfYmVmb3JlX2V4cCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICArKyBsZW5ndGhfc2luY2VfbGFzdF9kZWxpbTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChUcmFpdHM6OmVxKCpiZWdpbiwgZGVjaW1hbF9wb2ludCkgfHwgVHJhaXRzOjplcSgqYmVnaW4sIGxvd2VyY2FzZV9lKSB8fCBUcmFpdHM6OmVxKCpiZWdpbiwgY2FwaXRhbF9lKSkgewotI2lmbmRlZiBORE5CT09TVF9MRVhJQ0FMX0NBU1RfQVNTVU1FX0NfTE9DQUxFCi0gICAgICAgICAgICAgICAgICAgICAgICAvKiBJZiAoIHdlIG5lZWQgdG8gY2hlY2sgZ3JvdXBpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAqICAgICAgYW5kICggICBncm91cGluZyBtaXNzbWF0Y2hlcwotICAgICAgICAgICAgICAgICAgICAgICAgICogICAgICAgICAgICAgIG9yIGdyb3VwaW5nIHBvc2l0aW9uIGlzIGluY29ycmVjdAotICAgICAgICAgICAgICAgICAgICAgICAgICogICAgICAgICAgICAgIG9yIHdlIGFyZSB1c2luZyB0aGUgZ3JvdXBpbmcgcG9zaXRpb24gMCB0d2ljZQotICAgICAgICAgICAgICAgICAgICAgICAgICogICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAqICAgICkgdGhlbiByZXR1cm4gZXJyb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgICAgICAgICAgaWYoIGdyb3VwaW5nX3NpemUgJiYgZm91bmRfZ3JvdXBpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aF9zaW5jZV9sYXN0X2RlbGltICE9IGdyb3VwaW5nWzBdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGxhc3RfZ3JvdXBpbmdfcG9zPjEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKGxhc3RfZ3JvdXBpbmdfcG9zPT0wICYmIGdyb3VwaW5nX3NpemU+MSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgKSByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLQotICAgICAgICAgICAgICAgICAgICAgICAgaWYoVHJhaXRzOjplcSgqYmVnaW4sIGRlY2ltYWxfcG9pbnQpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKysgYmVnaW47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRfZGVjaW1hbCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmb3VuZF9udW1iZXJfYmVmb3JlX2V4cCAmJiBiZWdpbj09ZW5kKSByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmb3VuZF9udW1iZXJfYmVmb3JlX2V4cCkgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0jaWZuZGVmIE5ETkJPT1NUX0xFWElDQUxfQ0FTVF9BU1NVTUVfQ19MT0NBTEUKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZ3JvdXBpbmdfc2l6ZSAmJiBUcmFpdHM6OmVxKCpiZWdpbiwgdGhvdXNhbmRzX3NlcCkpewotICAgICAgICAgICAgICAgICAgICAgICAgaWYoZm91bmRfZ3JvdXBpbmcpCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSXQgaXMgbm90IGhlIGZpcnN0IHRpbWUsIHdoZW4gd2UgZmluZCB0aG91c2FuZHMgc2VwYXJhdG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHNvIHdlIG5lZWQgdG8gY2hlaywgaXMgdGhlIGRpc3RhbmNlIGJldHdlZW4gdHdvIGdyb3VwaW5ncwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGVxdWFsIHRvIGdyb3VwaW5nW2xhc3RfZ3JvdXBpbmdfcG9zXSAqLwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbmd0aF9zaW5jZV9sYXN0X2RlbGltICE9IGdyb3VwaW5nW2xhc3RfZ3JvdXBpbmdfcG9zXSApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxhc3RfZ3JvdXBpbmdfcG9zKSByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0gbGFzdF9ncm91cGluZ19wb3M7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGVuZ3RoX3NpbmNlX2xhc3RfZGVsaW0gIT0gZ3JvdXBpbmdbbGFzdF9ncm91cGluZ19wb3NdKSByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogV2UgYXJlIGNhbGxpbmcgdGhlIGdyb3VwaW5nWzBdIHR3aWNlLCB3aGVuIGdyb3VwaW5nIHNpemUgaXMgbW9yZSB0aGFuIDEgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdyb3VwaW5nX3NpemU+MXUgJiYgbGFzdF9ncm91cGluZ19wb3MrMTxncm91cGluZ19zaXplKSByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRGVsaW1pdGVyIGF0IHRoZSBiZWdpbmluZyAnLDAwMCcgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxlbmd0aF9zaW5jZV9sYXN0X2RlbGltKSByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9ncm91cGluZyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbmd0aF9zaW5jZV9sYXN0X2RlbGltID4gZ3JvdXBpbmdbbGFzdF9ncm91cGluZ19wb3NdICkgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGhfc2luY2VfbGFzdF9kZWxpbSA9IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgICArKyBiZWdpbjsKLQotICAgICAgICAgICAgICAgICAgICAgICAgLyogRGVsaW1pdGVyIGF0IHRoZSBlbmQgJzEwMCwnICovCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmVnaW4gPT0gZW5kKSByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgIGVsc2UgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICsrYmVnaW47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIEV4cG9uZW50IGZvdW5kCi0gICAgICAgICAgICBpZiAoIGJlZ2luICE9IGVuZCAmJiAoVHJhaXRzOjplcSgqYmVnaW4sIGxvd2VyY2FzZV9lKSB8fCBUcmFpdHM6OmVxKCpiZWdpbiwgY2FwaXRhbF9lKSkgKSB7Ci0gICAgICAgICAgICAgICAgKysgYmVnaW47Ci0gICAgICAgICAgICAgICAgaWYgKCBiZWdpbiA9PSBlbmQgKSByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgICAgICBib29sIGV4cF9oYXNfbWludXMgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBpZihUcmFpdHM6OmVxKCpiZWdpbiwgbWludXMpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGV4cF9oYXNfbWludXMgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICArKyBiZWdpbjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCBiZWdpbiA9PSBlbmQgKSByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChUcmFpdHM6OmVxKCpiZWdpbiwgcGx1cykpIHsKLSAgICAgICAgICAgICAgICAgICAgKysgYmVnaW47Ci0gICAgICAgICAgICAgICAgICAgIGlmICggYmVnaW4gPT0gZW5kICkgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGludCBleHBfcG93X29mXzEwID0gMDsKLSAgICAgICAgICAgICAgICB3aGlsZSAoIGJlZ2luICE9IGVuZCApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAoICpiZWdpbiA8IGN6ZXJvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKmJlZ2luID49IGN6ZXJvICsgMTAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBleHBfcG93X29mXzEwICogMTAgPCBleHBfcG93X29mXzEwKSAvKiBPdmVyZmxvd3MgYXJlIGNoZWNrZWQgbG93ZXIgbW9yZSBwcmVjaXNlbHkqLwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICAgICAgICAgIGV4cF9wb3dfb2ZfMTAgKj0gMTA7Ci0gICAgICAgICAgICAgICAgICAgIGV4cF9wb3dfb2ZfMTAgKz0gKmJlZ2luIC0gemVybzsKLSAgICAgICAgICAgICAgICAgICAgKysgYmVnaW47Ci0gICAgICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAgICAgIGlmICggZXhwX3Bvd19vZl8xMCApIHsKLSAgICAgICAgICAgICAgICAgICAgLyogT3ZlcmZsb3dzIGFyZSBjaGVja2VkIGxvd2VyICovCi0gICAgICAgICAgICAgICAgICAgIGlmICggZXhwX2hhc19taW51cyApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvd19vZl8xMCAtPSBleHBfcG93X29mXzEwOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgcG93X29mXzEwICs9IGV4cF9wb3dfb2ZfMTA7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8qIFdlIG5lZWQgYSBtb3JlIGFjY3VyYXRlIGFsZ29yaXRobS4uLiBXZSBjYW4gbm90IHVzZSBjdXJyZW50IGFsZ29yaXRobQotICAgICAgICAgICAgICogd2l0aCBsb25nIGRvdWJsZXMgKGFuZCB3aXRoIGRvdWJsZXMgaWYgc2l6ZW9mKGRvdWJsZSk9PXNpemVvZihsb25nIGRvdWJsZSkpLgotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBjb25zdCB3aWRlX3Jlc3VsdF90IHJlc3VsdCA9IHN0ZDo6cG93KHN0YXRpY19jYXN0PHdpZGVfcmVzdWx0X3Q+KDEwLjApLCBwb3dfb2ZfMTApICogbWFudGlzc2E7Ci0gICAgICAgICAgICB2YWx1ZSA9IHN0YXRpY19jYXN0PFQ+KCBoYXNfbWludXMgPyAobmRuYm9vc3Q6Om1hdGg6OmNoYW5nZXNpZ24pKHJlc3VsdCkgOiByZXN1bHQpOwotCi0gICAgICAgICAgICBpZiAoIChuZG5ib29zdDo6bWF0aDo6aXNpbmYpKHZhbHVlKSB8fCAobmRuYm9vc3Q6Om1hdGg6OmlzbmFuKSh2YWx1ZSkgKSByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0vLyBVbnNpbGVuY2UgYnVnZ3kgTVMgd2FybmluZ3MgbGlrZSBDNDI0NDogJys9JyA6IGNvbnZlcnNpb24gZnJvbSAnaW50JyB0byAndW5zaWduZWQgc2hvcnQnLCBwb3NzaWJsZSBsb3NzIG9mIGRhdGEgCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID09IDE0MDApIAotIyAgcHJhZ21hIHdhcm5pbmcocG9wKSAKLSNlbmRpZiAKLSAgICB9Ci0KLSAgICBuYW1lc3BhY2UgZGV0YWlsIC8vIHBhcnNlcl9idWYKLSAgICB7Ci0gICAgICAgIC8vCi0gICAgICAgIC8vIGNsYXNzIHBhcnNlcl9idWY6Ci0gICAgICAgIC8vIGFjdHMgYXMgYSBzdHJlYW0gYnVmZmVyIHdoaWNoIHdyYXBzIGFyb3VuZCBhIHBhaXIgb2YgcG9pbnRlcnMKLSAgICAgICAgLy8KLSAgICAgICAgLy8gVGhpcyBjbGFzcyBpcyBjb3BpZWQgKGFuZCBzbGlnaHRseSBjaGFuZ2VkKSBmcm9tCi0gICAgICAgIC8vIG5kbmJvb3N0L3JlZ2V4L3Y0L2NwcF9yZWdleF90cmFpdHMuaHBwCi0gICAgICAgIC8vIFRoYW5rcyBKb2huIE1hZGRvY2sgZm9yIGl0ISAocHJldmlvdXMgdmVyc2lvbiBoYWQgc29tZQotICAgICAgICAvLyBwcm9ibGVtcyB3aXRoIGxpYmMrKyBhbmQgc29tZSBvdGhlciBTVEwgaW1wbGVtZW50YXRpb25zKQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgQnVmZmVyVHlwZSwgY2xhc3MgY2hhclQ+Ci0gICAgICAgIGNsYXNzIHBhcnNlcl9idWYgOiBwdWJsaWMgQnVmZmVyVHlwZSB7Ci0gICAgICAgICAgIHR5cGVkZWYgQnVmZmVyVHlwZSBiYXNlX3R5cGU7Ci0gICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV90eXBlOjppbnRfdHlwZSBpbnRfdHlwZTsKLSAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX3R5cGU6OmNoYXJfdHlwZSBjaGFyX3R5cGU7Ci0gICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV90eXBlOjpwb3NfdHlwZSBwb3NfdHlwZTsKLSAgICAgICAgICAgdHlwZWRlZiA6OnN0ZDo6c3RyZWFtc2l6ZSBzdHJlYW1zaXplOwotICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfdHlwZTo6b2ZmX3R5cGUgb2ZmX3R5cGU7Ci0KLSAgICAgICAgcHVibGljOgotICAgICAgICAgICBwYXJzZXJfYnVmKCkgOiBiYXNlX3R5cGUoKSB7IHNldGJ1ZigwLCAwKTsgfQotICAgICAgICAgICBjb25zdCBjaGFyVCogZ2V0bmV4dCgpIHsgcmV0dXJuIHRoaXMtPmdwdHIoKTsgfQotI2lmbmRlZiBORE5CT09TVF9OT19VU0lOR19URU1QTEFURQotICAgICAgICAgICAgdXNpbmcgYmFzZV90eXBlOjpwcHRyOwotICAgICAgICAgICAgdXNpbmcgYmFzZV90eXBlOjpwYmFzZTsKLSNlbHNlCi0gICAgICAgICAgICBjaGFyVCogcHB0cigpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6cHB0cigpOyB9Ci0gICAgICAgICAgICBjaGFyVCogcGJhc2UoKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OnBiYXNlKCk7IH0KLSNlbmRpZgotICAgICAgICAgICBiYXNlX3R5cGUqIHNldGJ1ZihjaGFyX3R5cGUqIHMsIHN0cmVhbXNpemUgbikgewotICAgICAgICAgICAgICAgdGhpcy0+c2V0ZyhzLCBzLCBzICsgbik7Ci0gICAgICAgICAgICAgICByZXR1cm4gdGhpczsKLSAgICAgICAgICAgfQotCi0gICAgICAgICAgIHBvc190eXBlIHNlZWtwb3MocG9zX3R5cGUgc3AsIDo6c3RkOjppb3NfYmFzZTo6b3Blbm1vZGUgd2hpY2gpIHsKLSAgICAgICAgICAgICAgIGlmKHdoaWNoICYgOjpzdGQ6Omlvc19iYXNlOjpvdXQpCi0gICAgICAgICAgICAgICAgICByZXR1cm4gcG9zX3R5cGUob2ZmX3R5cGUoLTEpKTsKLSAgICAgICAgICAgICAgIG9mZl90eXBlIHNpemUgPSBzdGF0aWNfY2FzdDxvZmZfdHlwZT4odGhpcy0+ZWdwdHIoKSAtIHRoaXMtPmViYWNrKCkpOwotICAgICAgICAgICAgICAgY2hhclQqIGcgPSB0aGlzLT5lYmFjaygpOwotICAgICAgICAgICAgICAgaWYob2ZmX3R5cGUoc3ApIDw9IHNpemUpCi0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICB0aGlzLT5zZXRnKGcsIGcgKyBvZmZfdHlwZShzcCksIGcgKyBzaXplKTsKLSAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgIHJldHVybiBwb3NfdHlwZShvZmZfdHlwZSgtMSkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgIHBvc190eXBlIHNlZWtvZmYob2ZmX3R5cGUgb2ZmLCA6OnN0ZDo6aW9zX2Jhc2U6OnNlZWtkaXIgd2F5LCA6OnN0ZDo6aW9zX2Jhc2U6Om9wZW5tb2RlIHdoaWNoKSB7Ci0gICAgICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjppbnRfdDxzaXplb2Yod2F5KSAqIENIQVJfQklUPjo6bGVhc3QgY2FzdF90eXBlOwotCi0gICAgICAgICAgICAgICBpZih3aGljaCAmIDo6c3RkOjppb3NfYmFzZTo6b3V0KQotICAgICAgICAgICAgICAgICAgcmV0dXJuIHBvc190eXBlKG9mZl90eXBlKC0xKSk7Ci0gICAgICAgICAgICAgICBzdGQ6OnB0cmRpZmZfdCBzaXplID0gdGhpcy0+ZWdwdHIoKSAtIHRoaXMtPmViYWNrKCk7Ci0gICAgICAgICAgICAgICBzdGQ6OnB0cmRpZmZfdCBwb3MgPSB0aGlzLT5ncHRyKCkgLSB0aGlzLT5lYmFjaygpOwotICAgICAgICAgICAgICAgY2hhclQqIGcgPSB0aGlzLT5lYmFjaygpOwotICAgICAgICAgICAgICAgc3dpdGNoKHN0YXRpY19jYXN0PGNhc3RfdHlwZT4od2F5KSkKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGNhc2UgOjpzdGQ6Omlvc19iYXNlOjpiZWc6Ci0gICAgICAgICAgICAgICAgICBpZigob2ZmIDwgMCkgfHwgKG9mZiA+IHNpemUpKQotICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBvc190eXBlKG9mZl90eXBlKC0xKSk7Ci0gICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICB0aGlzLT5zZXRnKGcsIGcgKyBvZmYsIGcgKyBzaXplKTsKLSAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgY2FzZSA6OnN0ZDo6aW9zX2Jhc2U6OmVuZDoKLSAgICAgICAgICAgICAgICAgIGlmKChvZmYgPCAwKSB8fCAob2ZmID4gc2l6ZSkpCi0gICAgICAgICAgICAgICAgICAgICByZXR1cm4gcG9zX3R5cGUob2ZmX3R5cGUoLTEpKTsKLSAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgIHRoaXMtPnNldGcoZywgZyArIHNpemUgLSBvZmYsIGcgKyBzaXplKTsKLSAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgY2FzZSA6OnN0ZDo6aW9zX2Jhc2U6OmN1cjoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIHN0ZDo6cHRyZGlmZl90IG5ld3BvcyA9IHN0YXRpY19jYXN0PHN0ZDo6cHRyZGlmZl90Pihwb3MgKyBvZmYpOwotICAgICAgICAgICAgICAgICAgaWYoKG5ld3BvcyA8IDApIHx8IChuZXdwb3MgPiBzaXplKSkKLSAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwb3NfdHlwZShvZmZfdHlwZSgtMSkpOwotICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgdGhpcy0+c2V0ZyhnLCBnICsgbmV3cG9zLCBnICsgc2l6ZSk7Ci0gICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgIGRlZmF1bHQ6IDsKLSAgICAgICAgICAgICAgIH0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQyNDQpCi0jZW5kaWYKLSAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxwb3NfdHlwZT4odGhpcy0+Z3B0cigpIC0gdGhpcy0+ZWJhY2soKSk7Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotICAgICAgICAgICAgfQotICAgICAgICBwcml2YXRlOgotICAgICAgICAgICBwYXJzZXJfYnVmJiBvcGVyYXRvcj0oY29uc3QgcGFyc2VyX2J1ZiYpOwotICAgICAgICAgICBwYXJzZXJfYnVmKGNvbnN0IHBhcnNlcl9idWYmKTsKLSAgICAgICAgfTsKLSAgICB9Ci0KLSAgICBuYW1lc3BhY2UgZGV0YWlsCi0gICAgewotICAgICAgICBzdHJ1Y3QgZG9fbm90X2NvbnN0cnVjdF9vdXRfc3RyZWFtX3R7fTsKLSAgICB9Ci0KLSAgICBuYW1lc3BhY2UgZGV0YWlsIC8vIG9wdGltaXplZCBzdHJlYW0gd3JhcHBlcgotICAgIHsKLSAgICAgICAgLy8gU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIFNvdXJjZSBoYXMgYW4gdXBwZXIgbGltaXQuCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBDaGFyVCAvLyBhIHJlc3VsdCBvZiB3aWRlc3RfY2hhciB0cmFuc2Zvcm1hdGlvbgotICAgICAgICAgICAgICAgICwgY2xhc3MgVHJhaXRzIC8vIHVzdWFsbHkgY2hhcl90cmFpdHM8Q2hhclQ+Ci0gICAgICAgICAgICAgICAgLCBib29sIFJlcXVpcmVzU3RyaW5nYnVmZmVyCi0gICAgICAgICAgICAgICAgPgotICAgICAgICBjbGFzcyBsZXhpY2FsX3N0cmVhbV9saW1pdGVkX3NyYwotICAgICAgICB7Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NUUklOR1NUUkVBTSkKLSAgICAgICAgICAgIHR5cGVkZWYgc3RkOjpvc3Ryc3RyZWFtICAgICAgICAgICAgICAgICAgICAgICAgIG91dF9zdHJlYW1fdDsKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REX0xPQ0FMRSkKLSAgICAgICAgICAgIHR5cGVkZWYgc3RkOjpvc3RyaW5nc3RyZWFtICAgICAgICAgICAgICAgICAgICAgIG91dF9zdHJlYW1fdDsKLSAgICAgICAgICAgIHR5cGVkZWYgcGFyc2VyX2J1ZjxzdGQ6OnN0cmVhbWJ1ZiwgY2hhcj4gICAgICAgIGJ1ZmZlcl90OwotI2Vsc2UKLSAgICAgICAgICAgIHR5cGVkZWYgc3RkOjpiYXNpY19vc3RyaW5nc3RyZWFtPENoYXJULCBUcmFpdHM+ICAgICAgICAgICAgICAgICBvdXRfc3RyZWFtX3Q7Ci0gICAgICAgICAgICB0eXBlZGVmIHBhcnNlcl9idWY8c3RkOjpiYXNpY19zdHJlYW1idWY8Q2hhclQsIFRyYWl0cz4sIENoYXJUPiAgYnVmZmVyX3Q7Ci0jZW5kaWYKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6bXBsOjppZl9jPAotICAgICAgICAgICAgICAgIFJlcXVpcmVzU3RyaW5nYnVmZmVyLAotICAgICAgICAgICAgICAgIG91dF9zdHJlYW1fdCwKLSAgICAgICAgICAgICAgICBkb19ub3RfY29uc3RydWN0X291dF9zdHJlYW1fdAotICAgICAgICAgICAgPjo6dHlwZSBkZWR1Y2VkX291dF9zdHJlYW1fdDsKLQotICAgICAgICAgICAgLy8gQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgU291cmNlIGlzIHdyaXR0ZW4gdG8gW3N0YXJ0LCBmaW5pc2gpLgotICAgICAgICAgICAgQ2hhclQqIHN0YXJ0OwotICAgICAgICAgICAgQ2hhclQqIGZpbmlzaDsKLSAgICAgICAgICAgIGRlZHVjZWRfb3V0X3N0cmVhbV90IG91dF9zdHJlYW07Ci0KLSAgICAgICAgcHVibGljOgotICAgICAgICAgICAgbGV4aWNhbF9zdHJlYW1fbGltaXRlZF9zcmMoQ2hhclQqIHN0YSwgQ2hhclQqIGZpbikgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgICAgICAgOiBzdGFydChzdGEpCi0gICAgICAgICAgICAgICwgZmluaXNoKGZpbikKLSAgICAgICAgICAgIHt9Ci0KLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIC8vIFVuZGVmaW5lZDoKLSAgICAgICAgICAgIGxleGljYWxfc3RyZWFtX2xpbWl0ZWRfc3JjKGxleGljYWxfc3RyZWFtX2xpbWl0ZWRfc3JjIGNvbnN0Jik7Ci0gICAgICAgICAgICB2b2lkIG9wZXJhdG9yPShsZXhpY2FsX3N0cmVhbV9saW1pdGVkX3NyYyBjb25zdCYpOwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIEhFTFBFUiBGVU5DVElPTlMgRk9SIE9QRVJBVE9SUyA8PCAoIC4uLiApICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotICAgICAgICAgICAgYm9vbCBzaGxfY2hhcihDaGFyVCBjaCkgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBUcmFpdHM6OmFzc2lnbigqc3RhcnQsIGNoKTsKLSAgICAgICAgICAgICAgICBmaW5pc2ggPSBzdGFydCArIDE7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0KLSNpZm5kZWYgTkROQk9PU1RfTENBU1RfTk9fV0NIQVJfVAotICAgICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgICAgICBib29sIHNobF9jaGFyKFQgY2gpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVF9NU0coKCBzaXplb2YoVCkgPD0gc2l6ZW9mKENoYXJUKSkgLAotICAgICAgICAgICAgICAgICAgICAibmRuYm9vc3Q6OmxleGljYWxfY2FzdCBkb2VzIG5vdCBzdXBwb3J0IG5hcnJvd2luZyBvZiBjaGFyIHR5cGVzLiIKLSAgICAgICAgICAgICAgICAgICAgIlVzZSBuZG5ib29zdDo6bG9jYWxlIGluc3RlYWQiICk7Ci0jaWZuZGVmIE5ETkJPT1NUX0xFWElDQUxfQ0FTVF9BU1NVTUVfQ19MT0NBTEUKLSAgICAgICAgICAgICAgICBzdGQ6OmxvY2FsZSBsb2M7Ci0gICAgICAgICAgICAgICAgQ2hhclQgY29uc3QgdyA9IE5ETkJPT1NUX1VTRV9GQUNFVChzdGQ6OmN0eXBlPENoYXJUPiwgbG9jKS53aWRlbihjaCk7Ci0jZWxzZQotICAgICAgICAgICAgICAgIENoYXJUIGNvbnN0IHcgPSBzdGF0aWNfY2FzdDxDaGFyVD4oY2gpOwotI2VuZGlmCi0gICAgICAgICAgICAgICAgVHJhaXRzOjphc3NpZ24oKnN0YXJ0LCB3KTsKLSAgICAgICAgICAgICAgICBmaW5pc2ggPSBzdGFydCArIDE7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKLQotICAgICAgICAgICAgYm9vbCBzaGxfY2hhcl9hcnJheShDaGFyVCBjb25zdCogc3RyKSBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0YXJ0ID0gY29uc3RfY2FzdDxDaGFyVCo+KHN0cik7Ci0gICAgICAgICAgICAgICAgZmluaXNoID0gc3RhcnQgKyBUcmFpdHM6Omxlbmd0aChzdHIpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgICAgIGJvb2wgc2hsX2NoYXJfYXJyYXkoVCBjb25zdCogc3RyKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfTVNHKCggc2l6ZW9mKFQpIDw9IHNpemVvZihDaGFyVCkpLAotICAgICAgICAgICAgICAgICAgICAibmRuYm9vc3Q6OmxleGljYWxfY2FzdCBkb2VzIG5vdCBzdXBwb3J0IG5hcnJvd2luZyBvZiBjaGFyIHR5cGVzLiIKLSAgICAgICAgICAgICAgICAgICAgIlVzZSBuZG5ib29zdDo6bG9jYWxlIGluc3RlYWQiICk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNobF9pbnB1dF9zdHJlYW1hYmxlKHN0cik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGJvb2wgc2hsX2NoYXJfYXJyYXlfbGltaXRlZChDaGFyVCBjb25zdCogc3RyLCBzdGQ6OnNpemVfdCBtYXhfc2l6ZSkgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdGFydCA9IGNvbnN0X2Nhc3Q8Q2hhclQqPihzdHIpOwotICAgICAgICAgICAgICAgIGZpbmlzaCA9IHN0ZDo6ZmluZChzdGFydCwgc3RhcnQgKyBtYXhfc2l6ZSwgVHJhaXRzOjp0b19jaGFyX3R5cGUoMCkpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnB1dFN0cmVhbWFibGU+Ci0gICAgICAgICAgICBib29sIHNobF9pbnB1dF9zdHJlYW1hYmxlKElucHV0U3RyZWFtYWJsZSYgaW5wdXQpCi0gICAgICAgICAgICB7Ci0jaWYgZGVmaW5lZChORE5CT09TVF9OT19TVFJJTkdTVFJFQU0pIHx8IGRlZmluZWQoTkROQk9PU1RfTk9fU1REX0xPQ0FMRSkKLSAgICAgICAgICAgICAgICAvLyBJZiB5b3UgaGF2ZSBjb21waWxhdGlvbiBlcnJvciBhdCB0aGlzIHBvaW50LCB0aGFuIHlvdXIgU1RMIGxpYnJhcnkKLSAgICAgICAgICAgICAgICAvLyBkb2VzIG5vdCBzdXBwb3J0IHN1Y2ggY29udmVyc2lvbnMuIFRyeSB1cGRhdGluZyBpdC4KLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKChuZG5ib29zdDo6aXNfc2FtZTxjaGFyLCBDaGFyVD46OnZhbHVlKSk7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICBib29sIGNvbnN0IHJlc3VsdCA9ICEob3V0X3N0cmVhbSA8PCBpbnB1dCkuZmFpbCgpOwotICAgICAgICAgICAgICAgIGNvbnN0IGJ1ZmZlcl90KiBjb25zdCBwID0gc3RhdGljX2Nhc3Q8YnVmZmVyX3QqPigKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8c3RkOjpiYXNpY19zdHJlYW1idWY8Q2hhclQsIFRyYWl0cz4qPihvdXRfc3RyZWFtLnJkYnVmKCkpCi0gICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgICAgICBzdGFydCA9IHAtPnBiYXNlKCk7Ci0gICAgICAgICAgICAgICAgZmluaXNoID0gcC0+cHB0cigpOwotICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgICAgICAgaW5saW5lIGJvb2wgc2hsX3NpZ25lZChUIG4pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RhcnQgPSBsY2FzdF9wdXRfdW5zaWduZWQ8VHJhaXRzPihsY2FzdF90b191bnNpZ25lZChuKSwgZmluaXNoKTsKLSAgICAgICAgICAgICAgICBpZihuIDwgMCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIC0tc3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIENoYXJUIGNvbnN0IG1pbnVzID0gbGNhc3RfY2hhcl9jb25zdGFudHM8Q2hhclQ+OjptaW51czsKLSAgICAgICAgICAgICAgICAgICAgVHJhaXRzOjphc3NpZ24oKnN0YXJ0LCBtaW51cyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgU29tZUNoYXJUPgotICAgICAgICAgICAgYm9vbCBzaGxfcmVhbF90eXBlKGNvbnN0IFQmIHZhbCwgU29tZUNoYXJUKiBiZWdpbiwgU29tZUNoYXJUKiYgZW5kKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChwdXRfaW5mX25hbihiZWdpbiwgZW5kLCB2YWwpKSByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICBsY2FzdF9zZXRfcHJlY2lzaW9uKG91dF9zdHJlYW0sICZ2YWwpOwotICAgICAgICAgICAgICAgIHJldHVybiBzaGxfaW5wdXRfc3RyZWFtYWJsZSh2YWwpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBzdGF0aWMgYm9vbCBzaGxfcmVhbF90eXBlKGZsb2F0IHZhbCwgY2hhciogYmVnaW4sIGNoYXIqJiBlbmQpCi0gICAgICAgICAgICB7ICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICAgICAgICAgICAgICBpZiAocHV0X2luZl9uYW4oYmVnaW4sIGVuZCwgdmFsKSkgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgY29uc3QgZG91YmxlIHZhbF9hc19kb3VibGUgPSB2YWw7Ci0gICAgICAgICAgICAgICAgZW5kID0gYmVnaW4gKyAKLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTQwMCkgJiYgIWRlZmluZWQoX19TR0lfU1RMX1BPUlQpICYmICFkZWZpbmVkKF9TVExQT1JUX1ZFUlNJT04pCi0gICAgICAgICAgICAgICAgICAgIHNwcmludGZfcyhiZWdpbiwgZW5kLWJlZ2luLAotI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgc3ByaW50ZihiZWdpbiwgCi0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgIiUuKmciLCBzdGF0aWNfY2FzdDxpbnQ+KG5kbmJvb3N0OjpkZXRhaWw6OmxjYXN0X2dldF9wcmVjaXNpb248ZmxvYXQ+KCkpLCB2YWxfYXNfZG91YmxlKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZW5kID4gYmVnaW47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHN0YXRpYyBib29sIHNobF9yZWFsX3R5cGUoZG91YmxlIHZhbCwgY2hhciogYmVnaW4sIGNoYXIqJiBlbmQpCi0gICAgICAgICAgICB7ICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICAgICAgICAgICAgICBpZiAocHV0X2luZl9uYW4oYmVnaW4sIGVuZCwgdmFsKSkgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgZW5kID0gYmVnaW4gKyAKLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTQwMCkgJiYgIWRlZmluZWQoX19TR0lfU1RMX1BPUlQpICYmICFkZWZpbmVkKF9TVExQT1JUX1ZFUlNJT04pCi0gICAgICAgICAgICAgICAgICAgIHNwcmludGZfcyhiZWdpbiwgZW5kLWJlZ2luLAotI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgc3ByaW50ZihiZWdpbiwgCi0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgIiUuKmciLCBzdGF0aWNfY2FzdDxpbnQ+KG5kbmJvb3N0OjpkZXRhaWw6OmxjYXN0X2dldF9wcmVjaXNpb248ZG91YmxlPigpKSwgdmFsKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZW5kID4gYmVnaW47Ci0gICAgICAgICAgICB9Ci0KLSNpZm5kZWYgX19NSU5HVzMyX18KLSAgICAgICAgICAgIHN0YXRpYyBib29sIHNobF9yZWFsX3R5cGUobG9uZyBkb3VibGUgdmFsLCBjaGFyKiBiZWdpbiwgY2hhciomIGVuZCkKLSAgICAgICAgICAgIHsgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgICAgICAgICAgICAgIGlmIChwdXRfaW5mX25hbihiZWdpbiwgZW5kLCB2YWwpKSByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICBlbmQgPSBiZWdpbiArIAotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxNDAwKSAmJiAhZGVmaW5lZChfX1NHSV9TVExfUE9SVCkgJiYgIWRlZmluZWQoX1NUTFBPUlRfVkVSU0lPTikKLSAgICAgICAgICAgICAgICAgICAgc3ByaW50Zl9zKGJlZ2luLCBlbmQtYmVnaW4sCi0jZWxzZQotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKGJlZ2luLCAKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICAiJS4qTGciLCBzdGF0aWNfY2FzdDxpbnQ+KG5kbmJvb3N0OjpkZXRhaWw6OmxjYXN0X2dldF9wcmVjaXNpb248bG9uZyBkb3VibGU+KCkpLCB2YWwgKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZW5kID4gYmVnaW47Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKLQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTENBU1RfTk9fV0NIQVJfVCkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fU1dQUklOVEYpICYmICFkZWZpbmVkKF9fTUlOR1czMl9fKQotICAgICAgICAgICAgc3RhdGljIGJvb2wgc2hsX3JlYWxfdHlwZShmbG9hdCB2YWwsIHdjaGFyX3QqIGJlZ2luLCB3Y2hhcl90KiYgZW5kKQotICAgICAgICAgICAgeyAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgICAgICAgICAgICAgaWYgKHB1dF9pbmZfbmFuKGJlZ2luLCBlbmQsIHZhbCkpIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIGNvbnN0IGRvdWJsZSB2YWxfYXNfZG91YmxlID0gdmFsOwotICAgICAgICAgICAgICAgIGVuZCA9IGJlZ2luICsgc3dwcmludGYoYmVnaW4sIGVuZC1iZWdpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwiJS4qZyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KG5kbmJvb3N0OjpkZXRhaWw6OmxjYXN0X2dldF9wcmVjaXNpb248ZmxvYXQgPigpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbF9hc19kb3VibGUgKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZW5kID4gYmVnaW47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHN0YXRpYyBib29sIHNobF9yZWFsX3R5cGUoZG91YmxlIHZhbCwgd2NoYXJfdCogYmVnaW4sIHdjaGFyX3QqJiBlbmQpCi0gICAgICAgICAgICB7ICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICAgICAgICAgICAgICBpZiAocHV0X2luZl9uYW4oYmVnaW4sIGVuZCwgdmFsKSkgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgZW5kID0gYmVnaW4gKyBzd3ByaW50ZihiZWdpbiwgZW5kLWJlZ2luLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTCIlLipnIiwgc3RhdGljX2Nhc3Q8aW50PihuZG5ib29zdDo6ZGV0YWlsOjpsY2FzdF9nZXRfcHJlY2lzaW9uPGRvdWJsZSA+KCkpLCB2YWwgKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZW5kID4gYmVnaW47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHN0YXRpYyBib29sIHNobF9yZWFsX3R5cGUobG9uZyBkb3VibGUgdmFsLCB3Y2hhcl90KiBiZWdpbiwgd2NoYXJfdComIGVuZCkKLSAgICAgICAgICAgIHsgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgICAgICAgICAgICAgIGlmIChwdXRfaW5mX25hbihiZWdpbiwgZW5kLCB2YWwpKSByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICBlbmQgPSBiZWdpbiArIHN3cHJpbnRmKGJlZ2luLCBlbmQtYmVnaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMIiUuKkxnIiwgc3RhdGljX2Nhc3Q8aW50PihuZG5ib29zdDo6ZGV0YWlsOjpsY2FzdF9nZXRfcHJlY2lzaW9uPGxvbmcgZG91YmxlID4oKSksIHZhbCApOwotICAgICAgICAgICAgICAgIHJldHVybiBlbmQgPiBiZWdpbjsKLSAgICAgICAgICAgIH0KLSNlbmRpZgotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIE9QRVJBVE9SUyA8PCAoIC4uLiApICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBBbGxvYz4KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChzdGQ6OmJhc2ljX3N0cmluZzxDaGFyVCxUcmFpdHMsQWxsb2M+IGNvbnN0JiBzdHIpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RhcnQgPSBjb25zdF9jYXN0PENoYXJUKj4oc3RyLmRhdGEoKSk7Ci0gICAgICAgICAgICAgICAgZmluaXNoID0gc3RhcnQgKyBzdHIubGVuZ3RoKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEFsbG9jPgotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KG5kbmJvb3N0Ojpjb250YWluZXI6OmJhc2ljX3N0cmluZzxDaGFyVCxUcmFpdHMsQWxsb2M+IGNvbnN0JiBzdHIpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RhcnQgPSBjb25zdF9jYXN0PENoYXJUKj4oc3RyLmRhdGEoKSk7Ci0gICAgICAgICAgICAgICAgZmluaXNoID0gc3RhcnQgKyBzdHIubGVuZ3RoKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChib29sIHZhbHVlKSBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIENoYXJUIGNvbnN0IGN6ZXJvID0gbGNhc3RfY2hhcl9jb25zdGFudHM8Q2hhclQ+Ojp6ZXJvOwotICAgICAgICAgICAgICAgIFRyYWl0czo6YXNzaWduKCpzdGFydCwgVHJhaXRzOjp0b19jaGFyX3R5cGUoY3plcm8gKyB2YWx1ZSkpOwotICAgICAgICAgICAgICAgIGZpbmlzaCA9IHN0YXJ0ICsgMTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KGNvbnN0IGl0ZXJhdG9yX3JhbmdlPENoYXJUKj4mIHJuZykgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdGFydCA9IHJuZy5iZWdpbigpOwotICAgICAgICAgICAgICAgIGZpbmlzaCA9IHJuZy5lbmQoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsgCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChjb25zdCBpdGVyYXRvcl9yYW5nZTxjb25zdCBDaGFyVCo+JiBybmcpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RhcnQgPSBjb25zdF9jYXN0PENoYXJUKj4ocm5nLmJlZ2luKCkpOwotICAgICAgICAgICAgICAgIGZpbmlzaCA9IGNvbnN0X2Nhc3Q8Q2hhclQqPihybmcuZW5kKCkpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOyAKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KGNvbnN0IGl0ZXJhdG9yX3JhbmdlPGNvbnN0IHNpZ25lZCBjaGFyKj4mIHJuZykgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gKCp0aGlzKSA8PCBpdGVyYXRvcl9yYW5nZTxjaGFyKj4oCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8Y2hhcio+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHJuZy5iZWdpbigpKSksCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8Y2hhcio+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHJuZy5lbmQoKSkpCi0gICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KGNvbnN0IGl0ZXJhdG9yX3JhbmdlPGNvbnN0IHVuc2lnbmVkIGNoYXIqPiYgcm5nKSBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiAoKnRoaXMpIDw8IGl0ZXJhdG9yX3JhbmdlPGNoYXIqPigKLSAgICAgICAgICAgICAgICAgICAgY29uc3RfY2FzdDxjaGFyKj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocm5nLmJlZ2luKCkpKSwKLSAgICAgICAgICAgICAgICAgICAgY29uc3RfY2FzdDxjaGFyKj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocm5nLmVuZCgpKSkKLSAgICAgICAgICAgICAgICApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwoY29uc3QgaXRlcmF0b3JfcmFuZ2U8c2lnbmVkIGNoYXIqPiYgcm5nKSBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiAoKnRoaXMpIDw8IGl0ZXJhdG9yX3JhbmdlPGNoYXIqPigKLSAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocm5nLmJlZ2luKCkpLAotICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNoYXIqPihybmcuZW5kKCkpCi0gICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KGNvbnN0IGl0ZXJhdG9yX3JhbmdlPHVuc2lnbmVkIGNoYXIqPiYgcm5nKSBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiAoKnRoaXMpIDw8IGl0ZXJhdG9yX3JhbmdlPGNoYXIqPigKLSAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocm5nLmJlZ2luKCkpLAotICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNoYXIqPihybmcuZW5kKCkpCi0gICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KGNoYXIgY2gpICAgICAgICAgICAgICAgICAgICB7IHJldHVybiBzaGxfY2hhcihjaCk7IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PCh1bnNpZ25lZCBjaGFyIGNoKSAgICAgICAgICAgeyByZXR1cm4gKCgqdGhpcykgPDwgc3RhdGljX2Nhc3Q8Y2hhcj4oY2gpKTsgfQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KHNpZ25lZCBjaGFyIGNoKSAgICAgICAgICAgICB7IHJldHVybiAoKCp0aGlzKSA8PCBzdGF0aWNfY2FzdDxjaGFyPihjaCkpOyB9Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTENBU1RfTk9fV0NIQVJfVCkKLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PCh3Y2hhcl90IGNvbnN0KiBzdHIpICAgICAgICAgeyByZXR1cm4gc2hsX2NoYXJfYXJyYXkoc3RyKTsgfQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KHdjaGFyX3QgKiBzdHIpICAgICAgICAgICAgICB7IHJldHVybiBzaGxfY2hhcl9hcnJheShzdHIpOyB9Ci0jaWZuZGVmIE5ETkJPT1NUX05PX0lOVFJJTlNJQ19XQ0hBUl9UCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwod2NoYXJfdCBjaCkgICAgICAgICAgICAgICAgIHsgcmV0dXJuIHNobF9jaGFyKGNoKTsgfQotI2VuZGlmCi0jZW5kaWYKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9DSEFSMTZfVCkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVU5JQ09ERV9MSVRFUkFMUykKLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChjaGFyMTZfdCBjaCkgICAgICAgICAgICAgICAgeyByZXR1cm4gc2hsX2NoYXIoY2gpOyB9Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwoY2hhcjE2X3QgKiBzdHIpICAgICAgICAgICAgIHsgcmV0dXJuIHNobF9jaGFyX2FycmF5KHN0cik7IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChjaGFyMTZfdCBjb25zdCAqIHN0cikgICAgICAgeyByZXR1cm4gc2hsX2NoYXJfYXJyYXkoc3RyKTsgfQotI2VuZGlmCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjMyX1QpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1VOSUNPREVfTElURVJBTFMpCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwoY2hhcjMyX3QgY2gpICAgICAgICAgICAgICAgIHsgcmV0dXJuIHNobF9jaGFyKGNoKTsgfQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KGNoYXIzMl90ICogc3RyKSAgICAgICAgICAgICB7IHJldHVybiBzaGxfY2hhcl9hcnJheShzdHIpOyB9Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwoY2hhcjMyX3QgY29uc3QgKiBzdHIpICAgICAgIHsgcmV0dXJuIHNobF9jaGFyX2FycmF5KHN0cik7IH0KLSNlbmRpZgotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KHVuc2lnbmVkIGNoYXIgY29uc3QqIGNoKSAgICB7IHJldHVybiAoKCp0aGlzKSA8PCByZWludGVycHJldF9jYXN0PGNoYXIgY29uc3QqPihjaCkpOyB9Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwodW5zaWduZWQgY2hhciAqIGNoKSAgICAgICAgIHsgcmV0dXJuICgoKnRoaXMpIDw8IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhciAqPihjaCkpOyB9Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwoc2lnbmVkIGNoYXIgY29uc3QqIGNoKSAgICAgIHsgcmV0dXJuICgoKnRoaXMpIDw8IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhciBjb25zdCo+KGNoKSk7IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChzaWduZWQgY2hhciAqIGNoKSAgICAgICAgICAgeyByZXR1cm4gKCgqdGhpcykgPDwgcmVpbnRlcnByZXRfY2FzdDxjaGFyICo+KGNoKSk7IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChjaGFyIGNvbnN0KiBzdHIpICAgICAgICAgICAgeyByZXR1cm4gc2hsX2NoYXJfYXJyYXkoc3RyKTsgfQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KGNoYXIqIHN0cikgICAgICAgICAgICAgICAgICB7IHJldHVybiBzaGxfY2hhcl9hcnJheShzdHIpOyB9Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwoc2hvcnQgbikgICAgICAgICAgICAgICAgICAgIHsgcmV0dXJuIHNobF9zaWduZWQobik7IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChpbnQgbikgICAgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gc2hsX3NpZ25lZChuKTsgfQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KGxvbmcgbikgICAgICAgICAgICAgICAgICAgICB7IHJldHVybiBzaGxfc2lnbmVkKG4pOyB9Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwodW5zaWduZWQgc2hvcnQgbikgICAgICAgICAgIHsgc3RhcnQgPSBsY2FzdF9wdXRfdW5zaWduZWQ8VHJhaXRzPihuLCBmaW5pc2gpOyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KHVuc2lnbmVkIGludCBuKSAgICAgICAgICAgICB7IHN0YXJ0ID0gbGNhc3RfcHV0X3Vuc2lnbmVkPFRyYWl0cz4obiwgZmluaXNoKTsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PCh1bnNpZ25lZCBsb25nIG4pICAgICAgICAgICAgeyBzdGFydCA9IGxjYXN0X3B1dF91bnNpZ25lZDxUcmFpdHM+KG4sIGZpbmlzaCk7IHJldHVybiB0cnVlOyB9Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwobmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZSBuKSAgIHsgc3RhcnQgPSBsY2FzdF9wdXRfdW5zaWduZWQ8VHJhaXRzPihuLCBmaW5pc2gpOyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSBuKSAgICB7IHJldHVybiBzaGxfc2lnbmVkKG4pOyB9Ci0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19NU19JTlQ2NCkKLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PCh1bnNpZ25lZCBfX2ludDY0IG4pICAgICAgICAgeyBzdGFydCA9IGxjYXN0X3B1dF91bnNpZ25lZDxUcmFpdHM+KG4sIGZpbmlzaCk7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwoICAgICAgICAgX19pbnQ2NCBuKSAgICAgICAgIHsgcmV0dXJuIHNobF9zaWduZWQobik7IH0KLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTENBU1RfSEFTX0lOVDEyOAotICAgICAgICBib29sIG9wZXJhdG9yPDwoY29uc3QgbmRuYm9vc3Q6OnVpbnQxMjhfdHlwZSYgbikgICB7IHN0YXJ0ID0gbGNhc3RfcHV0X3Vuc2lnbmVkPFRyYWl0cz4obiwgZmluaXNoKTsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgYm9vbCBvcGVyYXRvcjw8KGNvbnN0IG5kbmJvb3N0OjppbnQxMjhfdHlwZSYgbikgICAgeyByZXR1cm4gc2hsX3NpZ25lZChuKTsgfQotI2VuZGlmCi0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChmbG9hdCB2YWwpICAgICAgICAgICAgICAgICAgeyByZXR1cm4gc2hsX3JlYWxfdHlwZSh2YWwsIHN0YXJ0LCBmaW5pc2gpOyB9Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwoZG91YmxlIHZhbCkgICAgICAgICAgICAgICAgIHsgcmV0dXJuIHNobF9yZWFsX3R5cGUodmFsLCBzdGFydCwgZmluaXNoKTsgfQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KGxvbmcgZG91YmxlIHZhbCkgICAgICAgICAgICB7Ci0jaWZuZGVmIF9fTUlOR1czMl9fCi0gICAgICAgICAgICAgICAgcmV0dXJuIHNobF9yZWFsX3R5cGUodmFsLCBzdGFydCwgZmluaXNoKTsKLSNlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIHNobF9yZWFsX3R5cGUoc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWwpLCBzdGFydCwgZmluaXNoKTsKLSNlbmRpZgotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTj4KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChuZG5ib29zdDo6YXJyYXk8Q2hhclQsIE4+IGNvbnN0JiBpbnB1dCkgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgICAgIHsgcmV0dXJuIHNobF9jaGFyX2FycmF5X2xpbWl0ZWQoaW5wdXQuYmVnaW4oKSwgTik7IH0KLQotICAgICAgICAgICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IE4+Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwobmRuYm9vc3Q6OmFycmF5PHVuc2lnbmVkIGNoYXIsIE4+IGNvbnN0JiBpbnB1dCkgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgICAgIHsgcmV0dXJuICgoKnRoaXMpIDw8IHJlaW50ZXJwcmV0X2Nhc3Q8bmRuYm9vc3Q6OmFycmF5PGNoYXIsIE4+IGNvbnN0JiA+KGlucHV0KSk7IH0KLQotICAgICAgICAgICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IE4+Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwobmRuYm9vc3Q6OmFycmF5PHNpZ25lZCBjaGFyLCBOPiBjb25zdCYgaW5wdXQpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgICAgICB7IHJldHVybiAoKCp0aGlzKSA8PCByZWludGVycHJldF9jYXN0PG5kbmJvb3N0OjphcnJheTxjaGFyLCBOPiBjb25zdCYgPihpbnB1dCkpOyB9Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBOPgotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KG5kbmJvb3N0OjphcnJheTxjb25zdCBDaGFyVCwgTj4gY29uc3QmIGlucHV0KSBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICAgICAgeyByZXR1cm4gc2hsX2NoYXJfYXJyYXlfbGltaXRlZChpbnB1dC5iZWdpbigpLCBOKTsgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTj4KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChuZG5ib29zdDo6YXJyYXk8Y29uc3QgdW5zaWduZWQgY2hhciwgTj4gY29uc3QmIGlucHV0KSBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICAgICAgeyByZXR1cm4gKCgqdGhpcykgPDwgcmVpbnRlcnByZXRfY2FzdDxuZG5ib29zdDo6YXJyYXk8Y29uc3QgY2hhciwgTj4gY29uc3QmID4oaW5wdXQpKTsgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTj4KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChuZG5ib29zdDo6YXJyYXk8Y29uc3Qgc2lnbmVkIGNoYXIsIE4+IGNvbnN0JiBpbnB1dCkgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgICAgIHsgcmV0dXJuICgoKnRoaXMpIDw8IHJlaW50ZXJwcmV0X2Nhc3Q8bmRuYm9vc3Q6OmFycmF5PGNvbnN0IGNoYXIsIE4+IGNvbnN0JiA+KGlucHV0KSk7IH0KLSAKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0FSUkFZCi0gICAgICAgICAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTj4KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChzdGQ6OmFycmF5PENoYXJULCBOPiBjb25zdCYgaW5wdXQpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgICAgICB7IAotICAgICAgICAgICAgICAgIGlmIChpbnB1dC5zaXplKCkpIHJldHVybiBzaGxfY2hhcl9hcnJheV9saW1pdGVkKCZpbnB1dFswXSwgTik7Ci0gICAgICAgICAgICAgICAgZWxzZSByZXR1cm4gdHJ1ZTsgCi0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBOPgotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KHN0ZDo6YXJyYXk8dW5zaWduZWQgY2hhciwgTj4gY29uc3QmIGlucHV0KSBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICAgICAgeyByZXR1cm4gKCgqdGhpcykgPDwgcmVpbnRlcnByZXRfY2FzdDxuZG5ib29zdDo6YXJyYXk8Y2hhciwgTj4gY29uc3QmID4oaW5wdXQpKTsgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTj4KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChzdGQ6OmFycmF5PHNpZ25lZCBjaGFyLCBOPiBjb25zdCYgaW5wdXQpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgICAgICB7IHJldHVybiAoKCp0aGlzKSA8PCByZWludGVycHJldF9jYXN0PG5kbmJvb3N0OjphcnJheTxjaGFyLCBOPiBjb25zdCYgPihpbnB1dCkpOyB9Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBOPgotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KHN0ZDo6YXJyYXk8Y29uc3QgQ2hhclQsIE4+IGNvbnN0JiBpbnB1dCkgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgICAgIHsgCi0gICAgICAgICAgICAgICAgaWYgKGlucHV0LnNpemUoKSkgcmV0dXJuIHNobF9jaGFyX2FycmF5X2xpbWl0ZWQoJmlucHV0WzBdLCBOKTsKLSAgICAgICAgICAgICAgICBlbHNlIHJldHVybiB0cnVlOyAKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IE4+Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwoc3RkOjphcnJheTxjb25zdCB1bnNpZ25lZCBjaGFyLCBOPiBjb25zdCYgaW5wdXQpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgICAgICB7IHJldHVybiAoKCp0aGlzKSA8PCByZWludGVycHJldF9jYXN0PG5kbmJvb3N0OjphcnJheTxjb25zdCBjaGFyLCBOPiBjb25zdCYgPihpbnB1dCkpOyB9Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBOPgotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KHN0ZDo6YXJyYXk8Y29uc3Qgc2lnbmVkIGNoYXIsIE4+IGNvbnN0JiBpbnB1dCkgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgICAgIHsgcmV0dXJuICgoKnRoaXMpIDw8IHJlaW50ZXJwcmV0X2Nhc3Q8bmRuYm9vc3Q6OmFycmF5PGNvbnN0IGNoYXIsIE4+IGNvbnN0JiA+KGlucHV0KSk7IH0KLSNlbmRpZgotICAgICAgICAgICAgCi0gICAgICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgSW5TdHJlYW1hYmxlPgotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KGNvbnN0IEluU3RyZWFtYWJsZSYgaW5wdXQpICB7IHJldHVybiBzaGxfaW5wdXRfc3RyZWFtYWJsZShpbnB1dCk7IH0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBIRUxQRVIgRlVOQ1RJT05TIEZPUiBPUEVSQVRPUlMgPj4gKCAuLi4gKSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSAgICAgICAgcHJpdmF0ZToKLQotICAgICAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGU+Ci0gICAgICAgICAgICBib29sIHNocl91bnNpZ25lZChUeXBlJiBvdXRwdXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKHN0YXJ0ID09IGZpbmlzaCkgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIENoYXJUIGNvbnN0IG1pbnVzID0gbGNhc3RfY2hhcl9jb25zdGFudHM8Q2hhclQ+OjptaW51czsKLSAgICAgICAgICAgICAgICBDaGFyVCBjb25zdCBwbHVzID0gbGNhc3RfY2hhcl9jb25zdGFudHM8Q2hhclQ+OjpwbHVzOwotICAgICAgICAgICAgICAgIGJvb2wgaGFzX21pbnVzID0gZmFsc2U7Ci0KLSAgICAgICAgICAgICAgICAvKiBXZSB3b25gdCB1c2UgYHN0YXJ0JyBhbnkgbW9yZSwgc28gbm8gbmVlZCBpbiBkZWNyZW1lbnRpbmcgaXQgYWZ0ZXIgKi8KLSAgICAgICAgICAgICAgICBpZiAoIFRyYWl0czo6ZXEobWludXMsKnN0YXJ0KSApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICArK3N0YXJ0OwotICAgICAgICAgICAgICAgICAgICBoYXNfbWludXMgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIFRyYWl0czo6ZXEoIHBsdXMsICpzdGFydCApICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICsrc3RhcnQ7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgYm9vbCBjb25zdCBzdWNjZWVkID0gbGNhc3RfcmV0X3Vuc2lnbmVkPFRyYWl0cz4ob3V0cHV0LCBzdGFydCwgZmluaXNoKTsKLQotICAgICAgICAgICAgICAgIGlmIChoYXNfbWludXMpIHsKLSAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gc3RhdGljX2Nhc3Q8VHlwZT4oMHUgLSBvdXRwdXQpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHJldHVybiBzdWNjZWVkOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZT4KLSAgICAgICAgICAgIGJvb2wgc2hyX3NpZ25lZChUeXBlJiBvdXRwdXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKHN0YXJ0ID09IGZpbmlzaCkgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIENoYXJUIGNvbnN0IG1pbnVzID0gbGNhc3RfY2hhcl9jb25zdGFudHM8Q2hhclQ+OjptaW51czsKLSAgICAgICAgICAgICAgICBDaGFyVCBjb25zdCBwbHVzID0gbGNhc3RfY2hhcl9jb25zdGFudHM8Q2hhclQ+OjpwbHVzOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBtYWtlX3Vuc2lnbmVkPFR5cGU+Ojp0eXBlIHV0eXBlOwotICAgICAgICAgICAgICAgIHV0eXBlIG91dF90bXAgPTA7Ci0gICAgICAgICAgICAgICAgYm9vbCBoYXNfbWludXMgPSBmYWxzZTsKLQotICAgICAgICAgICAgICAgIC8qIFdlIHdvbmB0IHVzZSBgc3RhcnQnIGFueSBtb3JlLCBzbyBubyBuZWVkIGluIGRlY3JlbWVudGluZyBpdCBhZnRlciAqLwotICAgICAgICAgICAgICAgIGlmICggVHJhaXRzOjplcShtaW51cywqc3RhcnQpICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICsrc3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIGhhc19taW51cyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmICggVHJhaXRzOjplcShwbHVzLCAqc3RhcnQpICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICsrc3RhcnQ7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgYm9vbCBzdWNjZWVkID0gbGNhc3RfcmV0X3Vuc2lnbmVkPFRyYWl0cz4ob3V0X3RtcCwgc3RhcnQsIGZpbmlzaCk7Ci0gICAgICAgICAgICAgICAgaWYgKGhhc19taW51cykgewotICAgICAgICAgICAgICAgICAgICB1dHlwZSBjb25zdCBjb21wX3ZhbCA9IChzdGF0aWNfY2FzdDx1dHlwZT4oMSkgPDwgc3RkOjpudW1lcmljX2xpbWl0czxUeXBlPjo6ZGlnaXRzKTsKLSAgICAgICAgICAgICAgICAgICAgc3VjY2VlZCA9IHN1Y2NlZWQgJiYgb3V0X3RtcDw9Y29tcF92YWw7Ci0gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IHN0YXRpY19jYXN0PFR5cGU+KDB1IC0gb3V0X3RtcCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgdXR5cGUgY29uc3QgY29tcF92YWwgPSBzdGF0aWNfY2FzdDx1dHlwZT4oKHN0ZDo6bnVtZXJpY19saW1pdHM8VHlwZT46Om1heCkoKSk7Ci0gICAgICAgICAgICAgICAgICAgIHN1Y2NlZWQgPSBzdWNjZWVkICYmIG91dF90bXA8PWNvbXBfdmFsOwotICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSBvdXRfdG1wOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gc3VjY2VlZDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW5wdXRTdHJlYW1hYmxlPgotICAgICAgICAgICAgYm9vbCBzaHJfdXNpbmdfYmFzZV9jbGFzcyhJbnB1dFN0cmVhbWFibGUmIG91dHB1dCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUX01TRygKLSAgICAgICAgICAgICAgICAgICAgKCFuZG5ib29zdDo6aXNfcG9pbnRlcjxJbnB1dFN0cmVhbWFibGU+Ojp2YWx1ZSksCi0gICAgICAgICAgICAgICAgICAgICJuZG5ib29zdDo6bGV4aWNhbF9jYXN0IGNhbiBub3QgY29udmVydCB0byBwb2ludGVycyIKLSAgICAgICAgICAgICAgICApOwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19TVFJJTkdTVFJFQU0pIHx8IGRlZmluZWQoTkROQk9PU1RfTk9fU1REX0xPQ0FMRSkKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUX01TRygobmRuYm9vc3Q6OmlzX3NhbWU8Y2hhciwgQ2hhclQ+Ojp2YWx1ZSksCi0gICAgICAgICAgICAgICAgICAgICJuZG5ib29zdDo6bGV4aWNhbF9jYXN0IGNhbiBub3QgY29udmVydCwgYmVjYXVzZSB5b3VyIFNUTCBsaWJyYXJ5IGRvZXMgbm90ICIKLSAgICAgICAgICAgICAgICAgICAgInN1cHBvcnQgc3VjaCBjb252ZXJzaW9ucy4gVHJ5IHVwZGF0aW5nIGl0LiIKLSAgICAgICAgICAgICAgICApOwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NUUklOR1NUUkVBTSkKLSAgICAgICAgICAgICAgICBzdGQ6OmlzdHJzdHJlYW0gc3RyZWFtKHN0YXJ0LCBmaW5pc2ggLSBzdGFydCk7Ci0jZWxzZQotCi0gICAgICAgICAgICAgICAgYnVmZmVyX3QgYnVmOwotICAgICAgICAgICAgICAgIGJ1Zi5zZXRidWYoc3RhcnQsIGZpbmlzaCAtIHN0YXJ0KTsKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9MT0NBTEUpCi0gICAgICAgICAgICAgICAgc3RkOjppc3RyZWFtIHN0cmVhbSgmYnVmKTsKLSNlbHNlCi0gICAgICAgICAgICAgICAgc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULCBUcmFpdHM+IHN0cmVhbSgmYnVmKTsKLSNlbmRpZiAvLyBORE5CT09TVF9OT19TVERfTE9DQUxFCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fU1RSSU5HU1RSRUFNCi0KLSAgICAgICAgICAgICAgICBzdHJlYW0udW5zZXRmKHN0ZDo6aW9zOjpza2lwd3MpOwotICAgICAgICAgICAgICAgIGxjYXN0X3NldF9wcmVjaXNpb24oc3RyZWFtLCBzdGF0aWNfY2FzdDxJbnB1dFN0cmVhbWFibGUqPigwKSk7Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4gc3RyZWFtID4+IG91dHB1dCAmJgotICAgICAgICAgICAgICAgICAgICBzdHJlYW0uZ2V0KCkgPT0KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX188MykgJiYgZGVmaW5lZChORE5CT09TVF9OT19TVERfV1NUUklORykKLSAgICAgICAgLy8gR0NDIDIuOXggbGFja3Mgc3RkOjpjaGFyX3RyYWl0czw+Ojplb2YoKS4KLSAgICAgICAgLy8gV2UgdXNlIE5ETkJPT1NUX05PX1NURF9XU1RSSU5HIHRvIGZpbHRlciBvdXQgU1RMcG9ydCBhbmQgbGlic3RkYysrLXYzCi0gICAgICAgIC8vIGNvbmZpZ3VyYXRpb25zLCB3aGljaCBkbyBwcm92aWRlIHN0ZDo6Y2hhcl90cmFpdHM8Pjo6ZW9mKCkuCi0KLSAgICAgICAgICAgICAgICAgICAgRU9GOwotI2Vsc2UKLSAgICAgICAgICAgICAgICBUcmFpdHM6OmVvZigpOwotI2VuZGlmCi0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgICAgICAgICBpbmxpbmUgYm9vbCBzaHJfeGNoYXIoVCYgb3V0cHV0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfTVNHKCggc2l6ZW9mKENoYXJUKSA9PSBzaXplb2YoVCkgKSwKLSAgICAgICAgICAgICAgICAgICAgIm5kbmJvb3N0OjpsZXhpY2FsX2Nhc3QgZG9lcyBub3Qgc3VwcG9ydCBuYXJyb3dpbmcgb2YgY2hhcmFjdGVyIHR5cGVzLiIKLSAgICAgICAgICAgICAgICAgICAgIlVzZSBuZG5ib29zdDo6bG9jYWxlIGluc3RlYWQiICk7Ci0gICAgICAgICAgICAgICAgYm9vbCBjb25zdCBvayA9IChmaW5pc2ggLSBzdGFydCA9PSAxKTsKLSAgICAgICAgICAgICAgICBpZiAob2spIHsKLSAgICAgICAgICAgICAgICAgICAgQ2hhclQgb3V0OwotICAgICAgICAgICAgICAgICAgICBUcmFpdHM6OmFzc2lnbihvdXQsICpzdGFydCk7Ci0gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IHN0YXRpY19jYXN0PFQ+KG91dCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBvazsKLSAgICAgICAgICAgIH0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBPUEVSQVRPUlMgPj4gKCAuLi4gKSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSAgICAgICAgcHVibGljOgotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj4+KHVuc2lnbmVkIHNob3J0JiBvdXRwdXQpICAgICAgICAgICAgIHsgcmV0dXJuIHNocl91bnNpZ25lZChvdXRwdXQpOyB9Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPj4odW5zaWduZWQgaW50JiBvdXRwdXQpICAgICAgICAgICAgICAgeyByZXR1cm4gc2hyX3Vuc2lnbmVkKG91dHB1dCk7IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+Pih1bnNpZ25lZCBsb25nIGludCYgb3V0cHV0KSAgICAgICAgICB7IHJldHVybiBzaHJfdW5zaWduZWQob3V0cHV0KTsgfQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj4+KHNob3J0JiBvdXRwdXQpICAgICAgICAgICAgICAgICAgICAgIHsgcmV0dXJuIHNocl9zaWduZWQob3V0cHV0KTsgfQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj4+KGludCYgb3V0cHV0KSAgICAgICAgICAgICAgICAgICAgICAgIHsgcmV0dXJuIHNocl9zaWduZWQob3V0cHV0KTsgfQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj4+KGxvbmcgaW50JiBvdXRwdXQpICAgICAgICAgICAgICAgICAgIHsgcmV0dXJuIHNocl9zaWduZWQob3V0cHV0KTsgfQotI2lmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykKLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+PihuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlJiBvdXRwdXQpICAgICB7IHJldHVybiBzaHJfdW5zaWduZWQob3V0cHV0KTsgfQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj4+KG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSYgb3V0cHV0KSAgICAgIHsgcmV0dXJuIHNocl9zaWduZWQob3V0cHV0KTsgfQotI2VsaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTVNfSU5UNjQpCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yPj4odW5zaWduZWQgX19pbnQ2NCYgb3V0cHV0KSAgICAgICAgICAgeyByZXR1cm4gc2hyX3Vuc2lnbmVkKG91dHB1dCk7IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+PihfX2ludDY0JiBvdXRwdXQpICAgICAgICAgICAgICAgICAgICB7IHJldHVybiBzaHJfc2lnbmVkKG91dHB1dCk7IH0KLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTENBU1RfSEFTX0lOVDEyOAotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj4+KG5kbmJvb3N0Ojp1aW50MTI4X3R5cGUmIG91dHB1dCkgICAgICAgIHsgcmV0dXJuIHNocl91bnNpZ25lZChvdXRwdXQpOyB9Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPj4obmRuYm9vc3Q6OmludDEyOF90eXBlJiBvdXRwdXQpICAgICAgICAgeyByZXR1cm4gc2hyX3NpZ25lZChvdXRwdXQpOyB9Ci0jZW5kaWYKLQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj4+KGNoYXImIG91dHB1dCkgICAgICAgICAgICAgICAgICAgICAgIHsgcmV0dXJuIHNocl94Y2hhcihvdXRwdXQpOyB9Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPj4odW5zaWduZWQgY2hhciYgb3V0cHV0KSAgICAgICAgICAgICAgeyByZXR1cm4gc2hyX3hjaGFyKG91dHB1dCk7IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+PihzaWduZWQgY2hhciYgb3V0cHV0KSAgICAgICAgICAgICAgICB7IHJldHVybiBzaHJfeGNoYXIob3V0cHV0KTsgfQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0xDQVNUX05PX1dDSEFSX1QpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lOVFJJTlNJQ19XQ0hBUl9UKQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj4+KHdjaGFyX3QmIG91dHB1dCkgICAgICAgICAgICAgICAgICAgIHsgcmV0dXJuIHNocl94Y2hhcihvdXRwdXQpOyB9Ci0jZW5kaWYKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9DSEFSMTZfVCkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVU5JQ09ERV9MSVRFUkFMUykKLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+PihjaGFyMTZfdCYgb3V0cHV0KSAgICAgICAgICAgICAgICAgICB7IHJldHVybiBzaHJfeGNoYXIob3V0cHV0KTsgfQotI2VuZGlmCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjMyX1QpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1VOSUNPREVfTElURVJBTFMpCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yPj4oY2hhcjMyX3QmIG91dHB1dCkgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gc2hyX3hjaGFyKG91dHB1dCk7IH0KLSNlbmRpZgotICAgICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgQWxsb2M+Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPj4oc3RkOjpiYXNpY19zdHJpbmc8Q2hhclQsVHJhaXRzLEFsbG9jPiYgc3RyKSB7IHN0ci5hc3NpZ24oc3RhcnQsIGZpbmlzaCk7IHJldHVybiB0cnVlOyB9Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEFsbG9jPgotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj4+KG5kbmJvb3N0Ojpjb250YWluZXI6OmJhc2ljX3N0cmluZzxDaGFyVCxUcmFpdHMsQWxsb2M+JiBzdHIpIHsgc3RyLmFzc2lnbihzdGFydCwgZmluaXNoKTsgcmV0dXJuIHRydWU7IH0KLQotICAgICAgICAgICAgCi0gICAgcHJpdmF0ZToKLSAgICAgICAgICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBOLCBjbGFzcyBBcnJheVQ+Ci0gICAgICAgICAgICBib29sIHNocl9zdGRfYXJyYXkoQXJyYXlUJiBvdXRwdXQpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnNpemVfdCBzaXplID0gZmluaXNoIC0gc3RhcnQ7Ci0gICAgICAgICAgICAgICAgaWYgKHNpemUgPiBOIC0gMSkgeyAvLyBgLTFgIGJlY2F1c2Ugd2UgbmVlZCB0byBzdG9yZSBcMCBhdCB0aGUgZW5kIAotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgbWVtY3B5KCZvdXRwdXRbMF0sIHN0YXJ0LCBzaXplICogc2l6ZW9mKENoYXJUKSk7Ci0gICAgICAgICAgICAgICAgb3V0cHV0W3NpemVdID0gVHJhaXRzOjp0b19jaGFyX3R5cGUoMCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICBwdWJsaWM6Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBOPgotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj4+KG5kbmJvb3N0OjphcnJheTxDaGFyVCwgTj4mIG91dHB1dCkgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgICAgIHsgCi0gICAgICAgICAgICAgICAgcmV0dXJuIHNocl9zdGRfYXJyYXk8Tj4ob3V0cHV0KTsgCi0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBOPgotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj4+KG5kbmJvb3N0OjphcnJheTx1bnNpZ25lZCBjaGFyLCBOPiYgb3V0cHV0KSAgIAotICAgICAgICAgICAgeyAKLSAgICAgICAgICAgICAgICByZXR1cm4gKCgqdGhpcykgPj4gcmVpbnRlcnByZXRfY2FzdDxuZG5ib29zdDo6YXJyYXk8Y2hhciwgTj4mID4ob3V0cHV0KSk7IAotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTj4KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+PihuZG5ib29zdDo6YXJyYXk8c2lnbmVkIGNoYXIsIE4+JiBvdXRwdXQpICAgCi0gICAgICAgICAgICB7IAotICAgICAgICAgICAgICAgIHJldHVybiAoKCp0aGlzKSA+PiByZWludGVycHJldF9jYXN0PG5kbmJvb3N0OjphcnJheTxjaGFyLCBOPiYgPihvdXRwdXQpKTsgCi0gICAgICAgICAgICB9Ci0gCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX0hEUl9BUlJBWQotICAgICAgICAgICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IE4+Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPj4oc3RkOjphcnJheTxDaGFyVCwgTj4mIG91dHB1dCkgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgICAgIHsgCi0gICAgICAgICAgICAgICAgcmV0dXJuIHNocl9zdGRfYXJyYXk8Tj4ob3V0cHV0KTsgCi0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBOPgotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj4+KHN0ZDo6YXJyYXk8dW5zaWduZWQgY2hhciwgTj4mIG91dHB1dCkgICAKLSAgICAgICAgICAgIHsgCi0gICAgICAgICAgICAgICAgcmV0dXJuICgoKnRoaXMpID4+IHJlaW50ZXJwcmV0X2Nhc3Q8c3RkOjphcnJheTxjaGFyLCBOPiYgPihvdXRwdXQpKTsgCi0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBOPgotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj4+KHN0ZDo6YXJyYXk8c2lnbmVkIGNoYXIsIE4+JiBvdXRwdXQpCi0gICAgICAgICAgICB7IAotICAgICAgICAgICAgICAgIHJldHVybiAoKCp0aGlzKSA+PiByZWludGVycHJldF9jYXN0PHN0ZDo6YXJyYXk8Y2hhciwgTj4mID4ob3V0cHV0KSk7IAotICAgICAgICAgICAgfQotI2VuZGlmCi0KLQotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIGNhc2UgIi0wIiB8fCAiMCIgfHwgIiswIiA6ICAgb3V0cHV0ID0gZmFsc2U7IHJldHVybiB0cnVlOwotICAgICAgICAgICAgICogY2FzZSAiMSIgfHwgIisxIjogICAgICAgICAgICBvdXRwdXQgPSB0cnVlOyAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgKiBkZWZhdWx0OiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj4+KGJvb2wmIG91dHB1dCkgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBDaGFyVCBjb25zdCB6ZXJvID0gbGNhc3RfY2hhcl9jb25zdGFudHM8Q2hhclQ+Ojp6ZXJvOwotICAgICAgICAgICAgICAgIENoYXJUIGNvbnN0IHBsdXMgPSBsY2FzdF9jaGFyX2NvbnN0YW50czxDaGFyVD46OnBsdXM7Ci0gICAgICAgICAgICAgICAgQ2hhclQgY29uc3QgbWludXMgPSBsY2FzdF9jaGFyX2NvbnN0YW50czxDaGFyVD46Om1pbnVzOwotCi0gICAgICAgICAgICAgICAgc3dpdGNoKGZpbmlzaC1zdGFydCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IFRyYWl0czo6ZXEoc3RhcnRbMF0sICB6ZXJvKzEpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG91dHB1dCB8fCBUcmFpdHM6OmVxKHN0YXJ0WzBdLCB6ZXJvICk7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggVHJhaXRzOjplcSggcGx1cywgKnN0YXJ0KSApCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKytzdGFydDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSBUcmFpdHM6OmVxKHN0YXJ0WzBdLCB6ZXJvICsxKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3V0cHV0IHx8IFRyYWl0czo6ZXEoc3RhcnRbMF0sIHplcm8gKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBUcmFpdHM6OmVxKCBtaW51cywgKnN0YXJ0KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBUcmFpdHM6OmVxKCB6ZXJvLCBzdGFydFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSBmYWxzZTsgLy8gU3VwcHJlc3Mgd2FybmluZyBhYm91dCB1bmluaXRhbGl6ZWQgdmFyaWFibGUKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+PihmbG9hdCYgb3V0cHV0KSB7IHJldHVybiBsY2FzdF9yZXRfZmxvYXQ8VHJhaXRzPihvdXRwdXQsc3RhcnQsZmluaXNoKTsgfQotCi0gICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICAvLyBOb3Qgb3B0aW1pc2VkIGNvbnZlcnRlcgotICAgICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgICAgICBib29sIGZsb2F0X3R5cGVzX2NvbnZlcnRlcl9pbnRlcm5hbChUJiBvdXRwdXQsIGludCAvKnRhZyovKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHBhcnNlX2luZl9uYW4oc3RhcnQsIGZpbmlzaCwgb3V0cHV0KSkgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgYm9vbCByZXR1cm5fdmFsdWUgPSBzaHJfdXNpbmdfYmFzZV9jbGFzcyhvdXRwdXQpOwotCi0gICAgICAgICAgICAgICAgLyogU29tZSBjb21waWxlcnMgYW5kIGxpYnJhcmllcyBzdWNjZXNzZnVsbHkKLSAgICAgICAgICAgICAgICAgKiBwYXJzZSAnaW5mJywgJ0lORklOSVRZJywgJzEuMEUnLCAnMS4wRS0nLi4uCi0gICAgICAgICAgICAgICAgICogV2UgYXJlIHRyeWluZyB0byBwcm92aWRlIGEgdW5pZmllZCBiZWhhdmlvdXIsCi0gICAgICAgICAgICAgICAgICogc28gd2UganVzdCBmb3JiaWQgc3VjaCBjb252ZXJzaW9ucyAoYXMgc29tZQotICAgICAgICAgICAgICAgICAqIG9mIHRoZSBtb3N0IHBvcHVsYXIgY29tcGlsZXJzL2xpYnJhcmllcyBkbykKLSAgICAgICAgICAgICAgICAgKiAqLwotICAgICAgICAgICAgICAgIENoYXJUIGNvbnN0IG1pbnVzID0gbGNhc3RfY2hhcl9jb25zdGFudHM8Q2hhclQ+OjptaW51czsKLSAgICAgICAgICAgICAgICBDaGFyVCBjb25zdCBwbHVzID0gbGNhc3RfY2hhcl9jb25zdGFudHM8Q2hhclQ+OjpwbHVzOwotICAgICAgICAgICAgICAgIENoYXJUIGNvbnN0IGNhcGl0YWxfZSA9IGxjYXN0X2NoYXJfY29uc3RhbnRzPENoYXJUPjo6Y2FwaXRhbF9lOwotICAgICAgICAgICAgICAgIENoYXJUIGNvbnN0IGxvd2VyY2FzZV9lID0gbGNhc3RfY2hhcl9jb25zdGFudHM8Q2hhclQ+Ojpsb3dlcmNhc2VfZTsKLSAgICAgICAgICAgICAgICBpZiAoIHJldHVybl92YWx1ZSAmJgotICAgICAgICAgICAgICAgICAgICAgKAotICAgICAgICAgICAgICAgICAgICAgICAgVHJhaXRzOjplcSgqKGZpbmlzaC0xKSwgbG93ZXJjYXNlX2UpICAgICAgICAgICAgICAgICAgIC8vIDEuMGUKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IFRyYWl0czo6ZXEoKihmaW5pc2gtMSksIGNhcGl0YWxfZSkgICAgICAgICAgICAgICAgICAvLyAxLjBFCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBUcmFpdHM6OmVxKCooZmluaXNoLTEpLCBtaW51cykgICAgICAgICAgICAgICAgICAgICAgLy8gMS4wZS0gb3IgMS4wRS0KLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IFRyYWl0czo6ZXEoKihmaW5pc2gtMSksIHBsdXMpICAgICAgICAgICAgICAgICAgICAgICAvLyAxLjBlKyBvciAxLjBFKwotICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgICkgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gT3B0aW1pc2VkIGNvbnZlcnRlcgotICAgICAgICAgICAgYm9vbCBmbG9hdF90eXBlc19jb252ZXJ0ZXJfaW50ZXJuYWwoZG91YmxlJiBvdXRwdXQsY2hhciAvKnRhZyovKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGxjYXN0X3JldF9mbG9hdDxUcmFpdHM+KG91dHB1dCxzdGFydCxmaW5pc2gpOwotICAgICAgICAgICAgfQotICAgICAgICBwdWJsaWM6Ci0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+Pihkb3VibGUmIG91dHB1dCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvKgotICAgICAgICAgICAgICAgICAqIFNvbWUgY29tcGlsZXJzIGltcGxlbWVudCBsb25nIGRvdWJsZSBhcyBkb3VibGUuIEluIHRoYXQgY2FzZSB0aGVzZSB0eXBlcyBoYXZlCi0gICAgICAgICAgICAgICAgICogc2FtZSBzaXplLCBzYW1lIHByZWNpc2lvbiwgc2FtZSBtYXggYW5kIG1pbiB2YWx1ZXMuLi4gQW5kIGl0IG1lYW5zLAotICAgICAgICAgICAgICAgICAqIHRoYXQgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiBsY2FzdF9yZXRfZmxvYXQgY2Fubm90IGJlIHVzZWQgZm9yIHR5cGUKLSAgICAgICAgICAgICAgICAgKiBkb3VibGUsIGJlY2F1c2UgaXQgd2lsbCBnaXZlIGEgYmlnIHByZWNpc2lvbiBsb3NzLgotICAgICAgICAgICAgICAgICAqICovCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6Om1wbDo6aWZfYzwKLSNpZiAoZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKSB8fCBkZWZpbmVkKE5ETkJPT1NUX0hBU19NU19JTlQ2NCkpICYmICFkZWZpbmVkKE5ETkJPT1NUX01BVEhfTk9fTE9OR19ET1VCTEVfTUFUSF9GVU5DVElPTlMpCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2VxPCBzaXplb2YoZG91YmxlKSwgc2l6ZW9mKGxvbmcgZG91YmxlKSA+Ojp2YWx1ZSwKLSNlbHNlCi0gICAgICAgICAgICAgICAgICAgICAxLAotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgIGludCwKLSAgICAgICAgICAgICAgICAgICAgY2hhcgotICAgICAgICAgICAgICAgID46OnR5cGUgdGFnID0gMDsKLQotICAgICAgICAgICAgICAgIHJldHVybiBmbG9hdF90eXBlc19jb252ZXJ0ZXJfaW50ZXJuYWwob3V0cHV0LCB0YWcpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yPj4obG9uZyBkb3VibGUmIG91dHB1dCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbnQgdGFnID0gMDsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmxvYXRfdHlwZXNfY29udmVydGVyX2ludGVybmFsKG91dHB1dCwgdGFnKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gR2VuZXJpYyBpc3RyZWFtLWJhc2VkIGFsZ29yaXRobS4KLSAgICAgICAgICAgIC8vIGxjYXN0X3N0cmVhbWJ1Zl9mb3JfdGFyZ2V0PElucHV0U3RyZWFtYWJsZT46OnZhbHVlIGlzIHRydWUuCi0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnB1dFN0cmVhbWFibGU+Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPj4oSW5wdXRTdHJlYW1hYmxlJiBvdXRwdXQpIHsgcmV0dXJuIHNocl91c2luZ19iYXNlX2NsYXNzKG91dHB1dCk7IH0KLSAgICAgICAgfTsKLSAgICB9Ci0KLSAgICBuYW1lc3BhY2UgZGV0YWlsCi0gICAgewotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBzdHJ1Y3QgaXNfc3Rkc3RyaW5nCi0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlICk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgQWxsb2M+Ci0gICAgICAgIHN0cnVjdCBpc19zdGRzdHJpbmc8IHN0ZDo6YmFzaWNfc3RyaW5nPENoYXJULCBUcmFpdHMsIEFsbG9jPiA+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUgKTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVCwgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBBbGxvYz4KLSAgICAgICAgc3RydWN0IGlzX3N0ZHN0cmluZzwgbmRuYm9vc3Q6OmNvbnRhaW5lcjo6YmFzaWNfc3RyaW5nPENoYXJULCBUcmFpdHMsIEFsbG9jPiA+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUgKTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4KLSAgICAgICAgc3RydWN0IGlzX2FyaXRobWV0aWNfYW5kX25vdF94Y2hhcnMKLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgICAgICgKLSAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6aXNfYXJpdGhtZXRpYzxTb3VyY2U+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppc19hcml0aG1ldGljPFRhcmdldD46OnZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmlzX2NoYXJfb3Jfd2NoYXI8VGFyZ2V0Pjo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgID46OnZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmlzX2NoYXJfb3Jfd2NoYXI8U291cmNlPjo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgID46OnZhbHVlCi0gICAgICAgICAgICAgICAgICAgPjo6dmFsdWUKLSAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgLyoKLSAgICAgICAgICogaXNfeGNoYXJfdG9feGNoYXI8VGFyZ2V0LCBTb3VyY2U+Ojp2YWx1ZSBpcyB0cnVlLCB3aGVuCi0gICAgICAgICAqIFRhcmdldCBhbmQgU291Y2UgYXJlIHRoZSBzYW1lIGNoYXIgdHlwZXMsIG9yIHdoZW4KLSAgICAgICAgICogVGFyZ2V0IGFuZCBTb3VjZSBhcmUgY2hhciB0eXBlcyBvZiB0aGUgc2FtZSBzaXplLgotICAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+Ci0gICAgICAgIHN0cnVjdCBpc194Y2hhcl90b194Y2hhcgotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAgICAgICgKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8U291cmNlLFRhcmdldD46OnZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19jaGFyX29yX3djaGFyPFRhcmdldD46OnZhbHVlCi0gICAgICAgICAgICAgICAgICAgICAgICA+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfZXE8IHNpemVvZihjaGFyKSxzaXplb2YoVGFyZ2V0KT46OnZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9lcTwgc2l6ZW9mKGNoYXIpLHNpemVvZihTb3VyY2UpPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2NoYXJfb3Jfd2NoYXI8VGFyZ2V0Pjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2NoYXJfb3Jfd2NoYXI8U291cmNlPjo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICAgICAgID46OnZhbHVlCi0gICAgICAgICAgICAgICAgICAgID46OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4KLSAgICAgICAgc3RydWN0IGlzX2NoYXJfYXJyYXlfdG9fc3Rkc3RyaW5nCi0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlICk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgQWxsb2M+Ci0gICAgICAgIHN0cnVjdCBpc19jaGFyX2FycmF5X3RvX3N0ZHN0cmluZzwgc3RkOjpiYXNpY19zdHJpbmc8Q2hhclQsIFRyYWl0cywgQWxsb2M+LCBDaGFyVCogPgotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlICk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgQWxsb2M+Ci0gICAgICAgIHN0cnVjdCBpc19jaGFyX2FycmF5X3RvX3N0ZHN0cmluZzwgc3RkOjpiYXNpY19zdHJpbmc8Q2hhclQsIFRyYWl0cywgQWxsb2M+LCBjb25zdCBDaGFyVCogPgotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlICk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgQWxsb2M+Ci0gICAgICAgIHN0cnVjdCBpc19jaGFyX2FycmF5X3RvX3N0ZHN0cmluZzwgbmRuYm9vc3Q6OmNvbnRhaW5lcjo6YmFzaWNfc3RyaW5nPENoYXJULCBUcmFpdHMsIEFsbG9jPiwgQ2hhclQqID4KLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSApOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJULCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEFsbG9jPgotICAgICAgICBzdHJ1Y3QgaXNfY2hhcl9hcnJheV90b19zdGRzdHJpbmc8IG5kbmJvb3N0Ojpjb250YWluZXI6OmJhc2ljX3N0cmluZzxDaGFyVCwgVHJhaXRzLCBBbGxvYz4sIGNvbnN0IENoYXJUKiA+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUgKTsKLSAgICAgICAgfTsKLQotI2lmIChkZWZpbmVkIF9NU0NfVkVSKQotIyBwcmFnbWEgd2FybmluZyggcHVzaCApCi0jIHByYWdtYSB3YXJuaW5nKCBkaXNhYmxlIDogNDcwMSApIC8vIHBvc3NpYmxlIHVzZSBvZiAuLi4gYmVmb3JlIGluaXRpYWxpemF0aW9uCi0jIHByYWdtYSB3YXJuaW5nKCBkaXNhYmxlIDogNDcwMiApIC8vIHVucmVhY2hhYmxlIGNvZGUKLSMgcHJhZ21hIHdhcm5pbmcoIGRpc2FibGUgOiA0MjY3ICkgLy8gY29udmVyc2lvbiBmcm9tICdzaXplX3QnIHRvICd1bnNpZ25lZCBpbnQnCi0jZW5kaWYKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+Ci0gICAgICAgIHN0cnVjdCBsZXhpY2FsX2Nhc3RfZG9fY2FzdAotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgaW5saW5lIFRhcmdldCBsZXhpY2FsX2Nhc3RfaW1wbChjb25zdCBTb3VyY2UmIGFyZykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIGxleGljYWxfY2FzdF9zdHJlYW1fdHJhaXRzPFNvdXJjZSwgVGFyZ2V0PiAgc3RyZWFtX3RyYWl0OwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHR5cGVkZWYgZGV0YWlsOjpsZXhpY2FsX3N0cmVhbV9saW1pdGVkX3NyYzwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBzdHJlYW1fdHJhaXQ6OmNoYXJfdHlwZSwgCi0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgc3RyZWFtX3RyYWl0Ojp0cmFpdHMsIAotICAgICAgICAgICAgICAgICAgICBzdHJlYW1fdHJhaXQ6OnJlcXVpcmVzX3N0cmluZ2J1ZiAKLSAgICAgICAgICAgICAgICA+IGludGVycHJldGVyX3R5cGU7Ci0KLSAgICAgICAgICAgICAgICAvLyBUYXJnZXQgdHlwZSBtdXN0IGJlIGRlZmF1bHQgY29uc3RydWN0aWJsZQotICAgICAgICAgICAgICAgIFRhcmdldCByZXN1bHQ7ICAgICAgICAgICAgICAgCi0KLSAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHN0cmVhbV90cmFpdDo6Y2hhcl90eXBlIGJ1ZltzdHJlYW1fdHJhaXQ6Omxlbl90Ojp2YWx1ZSArIDFdOwotICAgICAgICAgICAgICAgIHN0cmVhbV90cmFpdDo6bGVuX3Q6OmNoZWNrX2NvdmVyYWdlKCk7Ci0KLSAgICAgICAgICAgICAgICBpbnRlcnByZXRlcl90eXBlIGludGVycHJldGVyKGJ1ZiwgYnVmICsgc3RyZWFtX3RyYWl0OjpsZW5fdDo6dmFsdWUgKyAxKTsKLQotICAgICAgICAgICAgICAgIC8vIERpc2FibGluZyBBREwsIGJ5IGRpcmVjdGx5IHNwZWNpZnlpbmcgb3BlcmF0b3JzLgotICAgICAgICAgICAgICAgIGlmKCEoaW50ZXJwcmV0ZXIub3BlcmF0b3IgPDwoYXJnKSAmJiBpbnRlcnByZXRlci5vcGVyYXRvciA+PihyZXN1bHQpKSkKLSAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0xDQVNUX1RIUk9XX0JBRF9DQVNUKFNvdXJjZSwgVGFyZ2V0KTsKLQotICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0jaWYgKGRlZmluZWQgX01TQ19WRVIpCi0jIHByYWdtYSB3YXJuaW5nKCBwb3AgKQotI2VuZGlmCi0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFNvdXJjZT4KLSAgICAgICAgc3RydWN0IGxleGljYWxfY2FzdF9jb3B5Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBpbmxpbmUgY29uc3QgU291cmNlJiBsZXhpY2FsX2Nhc3RfaW1wbChjb25zdCBTb3VyY2UgJmFyZykgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gYXJnOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBTb3VyY2UsIGNsYXNzIFRhcmdldCA+Ci0gICAgICAgIHN0cnVjdCBkZXRlY3RfcHJlY2lzaW9uX2xvc3MKLSAgICAgICAgewotICAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6bnVtZXJpYzo6VHJ1bmM8U291cmNlPiBSb3VuZGVyOwotICAgICAgICAgdHlwZWRlZiBTb3VyY2Ugc291cmNlX3R5cGUgOwotCi0gICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbXBsOjppZl88Ci0gICAgICAgICAgICBuZG5ib29zdDo6aXNfYXJpdGhtZXRpYzxTb3VyY2U+LCBTb3VyY2UsIFNvdXJjZSBjb25zdCYKLSAgICAgICAgICA+Ojp0eXBlIGFyZ3VtZW50X3R5cGUgOwotCi0gICAgICAgICBzdGF0aWMgc291cmNlX3R5cGUgbmVhcmJ5aW50ICggYXJndW1lbnRfdHlwZSBzICkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IHNvdXJjZV90eXBlIG5lYXJfaW50ID0gUm91bmRlcjo6bmVhcmJ5aW50KHMpOwotICAgICAgICAgICAgaWYgKG5lYXJfaW50KSB7Ci0gICAgICAgICAgICAgICAgY29uc3Qgc291cmNlX3R5cGUgb3JpZ19kaXZfcm91bmQgPSBzIC8gbmVhcl9pbnQ7Ci0gICAgICAgICAgICAgICAgY29uc3Qgc291cmNlX3R5cGUgZXBzID0gc3RkOjpudW1lcmljX2xpbWl0czxzb3VyY2VfdHlwZT46OmVwc2lsb24oKTsKLQotICAgICAgICAgICAgICAgIGlmICgob3JpZ19kaXZfcm91bmQgPiAxID8gb3JpZ19kaXZfcm91bmQgLSAxIDogMSAtIG9yaWdfZGl2X3JvdW5kKSA+IGVwcykKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfTENBU1RfVEhST1dfQkFEX0NBU1QoU291cmNlLCBUYXJnZXQpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4gcyA7Ci0gICAgICAgICB9Ci0KLSAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgUm91bmRlcjo6cm91bmRfc3R5bGUgcm91bmRfc3R5bGU7Ci0gICAgICAgIH0gOwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBTb3VyY2UsIGNsYXNzIFRhcmdldCA+Ci0gICAgICAgIHN0cnVjdCBub3Rocm93X292ZXJmbG93X2hhbmRsZXIKLSAgICAgICAgewotICAgICAgICAgIHZvaWQgb3BlcmF0b3IoKSAoIG5kbmJvb3N0OjpudW1lcmljOjpyYW5nZV9jaGVja19yZXN1bHQgciApCi0gICAgICAgICAgewotICAgICAgICAgICAgaWYgKHIgIT0gbmRuYm9vc3Q6Om51bWVyaWM6OmNJblJhbmdlKQotICAgICAgICAgICAgICAgIE5ETkJPT1NUX0xDQVNUX1RIUk9XX0JBRF9DQVNUKFNvdXJjZSwgVGFyZ2V0KTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0gOwotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4KLSAgICAgICAgc3RydWN0IGxleGljYWxfY2FzdF9keW5hbWljX251bV9ub3RfaWdub3JpbmdfbWludXMKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGlubGluZSBUYXJnZXQgbGV4aWNhbF9jYXN0X2ltcGwoY29uc3QgU291cmNlICZhcmcpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpudW1lcmljOjpjb252ZXJ0ZXI8Ci0gICAgICAgICAgICAgICAgICAgICAgICBUYXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6bnVtZXJpYzo6Y29udmVyc2lvbl90cmFpdHM8VGFyZ2V0LFNvdXJjZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICBub3Rocm93X292ZXJmbG93X2hhbmRsZXI8U291cmNlLCBUYXJnZXQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0ZWN0X3ByZWNpc2lvbl9sb3NzPFNvdXJjZSwgVGFyZ2V0PgotICAgICAgICAgICAgICAgID46OmNvbnZlcnQoYXJnKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+Ci0gICAgICAgIHN0cnVjdCBsZXhpY2FsX2Nhc3RfZHluYW1pY19udW1faWdub3JpbmdfbWludXMKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGlubGluZSBUYXJnZXQgbGV4aWNhbF9jYXN0X2ltcGwoY29uc3QgU291cmNlICZhcmcpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG5kbmJvb3N0OjptcGw6OmV2YWxfaWZfYzwKLSAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppc19mbG9hdDxTb3VyY2U+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjptcGw6OmlkZW50aXR5PFNvdXJjZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6bWFrZV91bnNpZ25lZDxTb3VyY2U+Ci0gICAgICAgICAgICAgICAgPjo6dHlwZSB1c291cmNlX3Q7Ci0KLSAgICAgICAgICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjpudW1lcmljOjpjb252ZXJ0ZXI8Ci0gICAgICAgICAgICAgICAgICAgICAgICBUYXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICB1c291cmNlX3QsCi0gICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6bnVtZXJpYzo6Y29udmVyc2lvbl90cmFpdHM8VGFyZ2V0LHVzb3VyY2VfdD4sCi0gICAgICAgICAgICAgICAgICAgICAgICBub3Rocm93X292ZXJmbG93X2hhbmRsZXI8dXNvdXJjZV90LCBUYXJnZXQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0ZWN0X3ByZWNpc2lvbl9sb3NzPHVzb3VyY2VfdCwgVGFyZ2V0PgotICAgICAgICAgICAgICAgID4gY29udmVydGVyX3Q7Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4gKAotICAgICAgICAgICAgICAgICAgICBhcmcgPCAwID8gc3RhdGljX2Nhc3Q8VGFyZ2V0PigwdSAtIGNvbnZlcnRlcl90Ojpjb252ZXJ0KDB1IC0gYXJnKSkgOiBjb252ZXJ0ZXJfdDo6Y29udmVydChhcmcpCi0gICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLQotICAgICAgICAvKgotICAgICAgICAgKiBsZXhpY2FsX2Nhc3RfZHluYW1pY19udW0gZm9sbG93cyB0aGUgcnVsZXM6Ci0gICAgICAgICAqIDEpIElmIFNvdXJjZSBjYW4gYmUgY29udmVydGVkIHRvIFRhcmdldCB3aXRob3V0IHByZWNpc2lvbiBsb3NzIGFuZAotICAgICAgICAgKiB3aXRob3V0IG92ZXJmbG93cywgdGhlbiBhc3NpZ24gU291cmNlIHRvIFRhcmdldCBhbmQgcmV0dXJuCi0gICAgICAgICAqCi0gICAgICAgICAqIDIpIElmIFNvdXJjZSBpcyBsZXNzIHRoYW4gMCBhbmQgVGFyZ2V0IGlzIGFuIHVuc2lnbmVkIGludGVnZXIsCi0gICAgICAgICAqIHRoZW4gbmVnYXRlIFNvdXJjZSwgY2hlY2sgdGhlIHJlcXVpcmVtZW50cyBvZiBydWxlIDEpIGFuZCBpZgotICAgICAgICAgKiBzdWNjZXNzZnVsLCBhc3NpZ24gc3RhdGljX2Nhc3RlZCBTb3VyY2UgdG8gVGFyZ2V0IGFuZCByZXR1cm4KLSAgICAgICAgICoKLSAgICAgICAgICogMykgT3RoZXJ3aXNlIHRocm93IGEgYmFkX2xleGljYWxfY2FzdCBleGNlcHRpb24KLSAgICAgICAgICoKLSAgICAgICAgICoKLSAgICAgICAgICogUnVsZSAyKSByZXF1aXJlZCBiZWNhdXNlIG5kbmJvb3N0OjpsZXhpY2FsX2Nhc3QgaGFzIHRoZSBiZWhhdmlvciBvZgotICAgICAgICAgKiBzdHJpbmdzdHJlYW0sIHdoaWNoIHVzZXMgdGhlIHJ1bGVzIG9mIHNjYW5mIGZvciBjb252ZXJzaW9ucy4gQW5kCi0gICAgICAgICAqIGluIHRoZSBDOTkgc3RhbmRhcmQgZm9yIHVuc2lnbmVkIGlucHV0IHZhbHVlIG1pbnVzIHNpZ24gaXMKLSAgICAgICAgICogb3B0aW9uYWwsIHNvIGlmIGEgbmVnYXRpdmUgbnVtYmVyIGlzIHJlYWQsIG5vIGVycm9ycyB3aWxsIGFyaXNlCi0gICAgICAgICAqIGFuZCB0aGUgcmVzdWx0IHdpbGwgYmUgdGhlIHR3bydzIGNvbXBsZW1lbnQuCi0gICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+Ci0gICAgICAgIHN0cnVjdCBsZXhpY2FsX2Nhc3RfZHluYW1pY19udW0KLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGlubGluZSBUYXJnZXQgbGV4aWNhbF9jYXN0X2ltcGwoY29uc3QgU291cmNlICZhcmcpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG5kbmJvb3N0OjptcGw6OmlmX2M8Ci0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwKLSAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppc19zaWduZWQ8U291cmNlPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX2Zsb2F0PFNvdXJjZT46OnZhbHVlCi0gICAgICAgICAgICAgICAgICAgICAgICA+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6aXNfc2FtZTxTb3VyY2UsIGJvb2w+Ojp2YWx1ZQotICAgICAgICAgICAgICAgICAgICAgICAgPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX3NhbWU8VGFyZ2V0LCBib29sPjo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICAgICAgID46OnZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX3Vuc2lnbmVkPFRhcmdldD46OnZhbHVlCi0gICAgICAgICAgICAgICAgICAgID46OnZhbHVlLAotICAgICAgICAgICAgICAgICAgICBsZXhpY2FsX2Nhc3RfZHluYW1pY19udW1faWdub3JpbmdfbWludXM8VGFyZ2V0LCBTb3VyY2U+LAotICAgICAgICAgICAgICAgICAgICBsZXhpY2FsX2Nhc3RfZHluYW1pY19udW1fbm90X2lnbm9yaW5nX21pbnVzPFRhcmdldCwgU291cmNlPgotICAgICAgICAgICAgICAgID46OnR5cGUgY2FzdGVyX3R5cGU7Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4gY2FzdGVyX3R5cGU6OmxleGljYWxfY2FzdF9pbXBsKGFyZyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPgotICAgIGlubGluZSBUYXJnZXQgbGV4aWNhbF9jYXN0KGNvbnN0IFNvdXJjZSAmYXJnKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X3RvX3BvaW50ZXJfZGVjYXk8U291cmNlPjo6dHlwZSBzcmM7Ci0KLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmlzX3hjaGFyX3RvX3hjaGFyPFRhcmdldCwgc3JjID46OnZhbHVlLAotICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmlzX2NoYXJfYXJyYXlfdG9fc3Rkc3RyaW5nPFRhcmdldCwgc3JjID46OnZhbHVlLAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwKLSAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppc19zYW1lPFRhcmdldCwgc3JjID46OnZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6aXNfc3Rkc3RyaW5nPFRhcmdldCA+Ojp2YWx1ZQotICAgICAgICAgICAgICAgID46OnZhbHVlCi0gICAgICAgID4gc2hhbGxfd2VfY29weV90OwotCi0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRQotICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmlzX2FyaXRobWV0aWNfYW5kX25vdF94Y2hhcnM8VGFyZ2V0LCBzcmMgPiBzaGFsbF93ZV9jb3B5X3dpdGhfZHluYW1pY19jaGVja190OwotCi0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6bXBsOjppZl9jPAotICAgICAgICAgICAgc2hhbGxfd2VfY29weV90Ojp2YWx1ZSwKLSAgICAgICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmxleGljYWxfY2FzdF9jb3B5PHNyYyA+LAotICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6bXBsOjppZl9jPAotICAgICAgICAgICAgICAgICBzaGFsbF93ZV9jb3B5X3dpdGhfZHluYW1pY19jaGVja190Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6bGV4aWNhbF9jYXN0X2R5bmFtaWNfbnVtPFRhcmdldCwgc3JjID4sCi0gICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmxleGljYWxfY2FzdF9kb19jYXN0PFRhcmdldCwgc3JjID4KLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgPjo6dHlwZSBjYXN0ZXJfdHlwZTsKLQotICAgICAgICByZXR1cm4gY2FzdGVyX3R5cGU6OmxleGljYWxfY2FzdF9pbXBsKGFyZyk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldD4KLSAgICBpbmxpbmUgVGFyZ2V0IGxleGljYWxfY2FzdChjb25zdCBjaGFyKiBjaGFycywgc3RkOjpzaXplX3QgY291bnQpCi0gICAgIHsKLSAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OmxleGljYWxfY2FzdDxUYXJnZXQ+KAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXRlcmF0b3JfcmFuZ2U8Y29uc3QgY2hhcio+KGNoYXJzLCBjaGFycyArIGNvdW50KQotICAgICAgICApOwotICAgIH0KLQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldD4KLSAgICBpbmxpbmUgVGFyZ2V0IGxleGljYWxfY2FzdChjb25zdCB1bnNpZ25lZCBjaGFyKiBjaGFycywgc3RkOjpzaXplX3QgY291bnQpCi0gICAgewotICAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OmxleGljYWxfY2FzdDxUYXJnZXQ+KAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXRlcmF0b3JfcmFuZ2U8Y29uc3QgdW5zaWduZWQgY2hhcio+KGNoYXJzLCBjaGFycyArIGNvdW50KQotICAgICAgICAgKTsKLSAgICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldD4KLSAgICBpbmxpbmUgVGFyZ2V0IGxleGljYWxfY2FzdChjb25zdCBzaWduZWQgY2hhciogY2hhcnMsIHN0ZDo6c2l6ZV90IGNvdW50KQotICAgIHsKLSAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OmxleGljYWxfY2FzdDxUYXJnZXQ+KAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXRlcmF0b3JfcmFuZ2U8Y29uc3Qgc2lnbmVkIGNoYXIqPihjaGFycywgY2hhcnMgKyBjb3VudCkKLSAgICAgICAgKTsKLSAgICB9Ci0KLSNpZm5kZWYgTkROQk9PU1RfTENBU1RfTk9fV0NIQVJfVAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQ+Ci0gICAgaW5saW5lIFRhcmdldCBsZXhpY2FsX2Nhc3QoY29uc3Qgd2NoYXJfdCogY2hhcnMsIHN0ZDo6c2l6ZV90IGNvdW50KQotICAgIHsKLSAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OmxleGljYWxfY2FzdDxUYXJnZXQ+KAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXRlcmF0b3JfcmFuZ2U8Y29uc3Qgd2NoYXJfdCo+KGNoYXJzLCBjaGFycyArIGNvdW50KQotICAgICAgICApOwotICAgIH0KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9OT19DSEFSMTZfVAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQ+Ci0gICAgaW5saW5lIFRhcmdldCBsZXhpY2FsX2Nhc3QoY29uc3QgY2hhcjE2X3QqIGNoYXJzLCBzdGQ6OnNpemVfdCBjb3VudCkKLSAgICB7Ci0gICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjpsZXhpY2FsX2Nhc3Q8VGFyZ2V0PigKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6Oml0ZXJhdG9yX3JhbmdlPGNvbnN0IGNoYXIxNl90Kj4oY2hhcnMsIGNoYXJzICsgY291bnQpCi0gICAgICAgICk7Ci0gICAgfQotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NIQVIzMl9UCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldD4KLSAgICBpbmxpbmUgVGFyZ2V0IGxleGljYWxfY2FzdChjb25zdCBjaGFyMzJfdCogY2hhcnMsIHN0ZDo6c2l6ZV90IGNvdW50KQotICAgIHsKLSAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OmxleGljYWxfY2FzdDxUYXJnZXQ+KAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXRlcmF0b3JfcmFuZ2U8Y29uc3QgY2hhcjMyX3QqPihjaGFycywgY2hhcnMgKyBjb3VudCkKLSAgICAgICAgKTsKLSAgICB9Ci0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2Vsc2UgLy8gI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgbmFtZXNwYWNlIGRldGFpbAotICAgIHsKLQotICAgICAgICAvLyBzZWxlY3RvcnMgZm9yIGNob29zaW5nIHN0cmVhbSBjaGFyYWN0ZXIgdHlwZQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgotICAgICAgICBzdHJ1Y3Qgc3RyZWFtX2NoYXIKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBjaGFyIHR5cGU7Ci0gICAgICAgIH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfTENBU1RfTk9fV0NIQVJfVAotI2lmbmRlZiBORE5CT09TVF9OT19JTlRSSU5TSUNfV0NIQVJfVAotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCBzdHJlYW1fY2hhcjx3Y2hhcl90PgotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIHdjaGFyX3QgdHlwZTsKLSAgICAgICAgfTsKLSNlbmRpZgotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHN0cmVhbV9jaGFyPHdjaGFyX3QgKj4KLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiB3Y2hhcl90IHR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3Qgc3RyZWFtX2NoYXI8Y29uc3Qgd2NoYXJfdCAqPgotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIHdjaGFyX3QgdHlwZTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCBzdHJlYW1fY2hhcjxzdGQ6OndzdHJpbmc+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgd2NoYXJfdCB0eXBlOwotICAgICAgICB9OwotI2VuZGlmCi0KLSAgICAgICAgLy8gc3RyZWFtIHdyYXBwZXIgZm9yIGhhbmRsaW5nIGxleGljYWwgY29udmVyc2lvbnMKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2UsIHR5cGVuYW1lIFRyYWl0cz4KLSAgICAgICAgY2xhc3MgbGV4aWNhbF9zdHJlYW0KLSAgICAgICAgewotICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB3aWRlc3RfY2hhcjwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBzdHJlYW1fY2hhcjxUYXJnZXQ+Ojp0eXBlLAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIHN0cmVhbV9jaGFyPFNvdXJjZT46OnR5cGU+Ojp0eXBlIGNoYXJfdHlwZTsKLQotICAgICAgICAgICAgdHlwZWRlZiBUcmFpdHMgdHJhaXRzX3R5cGU7Ci0KLSAgICAgICAgcHVibGljOgotICAgICAgICAgICAgbGV4aWNhbF9zdHJlYW0oY2hhcl90eXBlKiA9IDAsIGNoYXJfdHlwZSogPSAwKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0cmVhbS51bnNldGYoc3RkOjppb3M6OnNraXB3cyk7Ci0gICAgICAgICAgICAgICAgbGNhc3Rfc2V0X3ByZWNpc2lvbihzdHJlYW0sIHN0YXRpY19jYXN0PFNvdXJjZSo+KDApLCBzdGF0aWNfY2FzdDxUYXJnZXQqPigwKSApOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgfmxleGljYWxfc3RyZWFtKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAjaWYgZGVmaW5lZChORE5CT09TVF9OT19TVFJJTkdTVFJFQU0pCi0gICAgICAgICAgICAgICAgc3RyZWFtLmZyZWV6ZShmYWxzZSk7Ci0gICAgICAgICAgICAgICAgI2VuZGlmCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwoY29uc3QgU291cmNlICZpbnB1dCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gIShzdHJlYW0gPDwgaW5wdXQpLmZhaWwoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIElucHV0U3RyZWFtYWJsZT4KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+PihJbnB1dFN0cmVhbWFibGUgJm91dHB1dCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gIWlzX3BvaW50ZXI8SW5wdXRTdHJlYW1hYmxlPjo6dmFsdWUgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtID4+IG91dHB1dCAmJgotICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW0uZ2V0KCkgPT0KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX188MykgJiYgZGVmaW5lZChORE5CT09TVF9OT19TVERfV1NUUklORykKLS8vIEdDQyAyLjl4IGxhY2tzIHN0ZDo6Y2hhcl90cmFpdHM8Pjo6ZW9mKCkuCi0vLyBXZSB1c2UgTkROQk9PU1RfTk9fU1REX1dTVFJJTkcgdG8gZmlsdGVyIG91dCBTVExwb3J0IGFuZCBsaWJzdGRjKystdjMKLS8vIGNvbmZpZ3VyYXRpb25zLCB3aGljaCBkbyBwcm92aWRlIHN0ZDo6Y2hhcl90cmFpdHM8Pjo6ZW9mKCkuCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEVPRjsKLSNlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFpdHNfdHlwZTo6ZW9mKCk7Ci0jZW5kaWYKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj4+KHN0ZDo6c3RyaW5nICZvdXRwdXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fU1RSSU5HU1RSRUFNKQotICAgICAgICAgICAgICAgIHN0cmVhbSA8PCAnXDAnOwotICAgICAgICAgICAgICAgICNlbmRpZgotICAgICAgICAgICAgICAgIHN0cmVhbS5zdHIoKS5zd2FwKG91dHB1dCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAjaWZuZGVmIE5ETkJPT1NUX0xDQVNUX05PX1dDSEFSX1QKLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+PihzdGQ6OndzdHJpbmcgJm91dHB1dCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdHJlYW0uc3RyKCkuc3dhcChvdXRwdXQpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgI2VuZGlmCi0KLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgICNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NUUklOR1NUUkVBTSkKLSAgICAgICAgICAgIHN0ZDo6c3Ryc3RyZWFtIHN0cmVhbTsKLSAgICAgICAgICAgICNlbGlmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REX0xPQ0FMRSkKLSAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsKLSAgICAgICAgICAgICNlbHNlCi0gICAgICAgICAgICBzdGQ6OmJhc2ljX3N0cmluZ3N0cmVhbTxjaGFyX3R5cGUsdHJhaXRzX3R5cGU+IHN0cmVhbTsKLSAgICAgICAgICAgICNlbmRpZgotICAgICAgICB9OwotICAgIH0KLQotICAgIC8vIGNhbGwtYnktdmFsdWUgZmFsbGJhY2sgdmVyc2lvbiAoZGVwcmVjYXRlZCkKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPgotICAgIFRhcmdldCBsZXhpY2FsX2Nhc3QoU291cmNlIGFyZykKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjp3aWRlc3RfY2hhcjwgCi0gICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGRldGFpbDo6c3RyZWFtX2NoYXI8VGFyZ2V0Pjo6dHlwZSAKLSAgICAgICAgICAsIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgZGV0YWlsOjpzdHJlYW1fY2hhcjxTb3VyY2U+Ojp0eXBlIAotICAgICAgICA+Ojp0eXBlIGNoYXJfdHlwZTsgCi0KLSAgICAgICAgdHlwZWRlZiBzdGQ6OmNoYXJfdHJhaXRzPGNoYXJfdHlwZT4gdHJhaXRzOwotICAgICAgICBkZXRhaWw6OmxleGljYWxfc3RyZWFtPFRhcmdldCwgU291cmNlLCB0cmFpdHM+IGludGVycHJldGVyOwotICAgICAgICBUYXJnZXQgcmVzdWx0OwotCi0gICAgICAgIGlmKCEoaW50ZXJwcmV0ZXIgPDwgYXJnICYmIGludGVycHJldGVyID4+IHJlc3VsdCkpCi0gICAgICAgICAgTkROQk9PU1RfTENBU1RfVEhST1dfQkFEX0NBU1QoU291cmNlLCBUYXJnZXQpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmCi0KLS8vIENvcHlyaWdodCBLZXZsaW4gSGVubmV5LCAyMDAwLTIwMDUuCi0vLyBDb3B5cmlnaHQgQWxleGFuZGVyIE5hc29ub3YsIDIwMDYtMjAxMC4KLS8vIENvcHlyaWdodCBBbnRvbnkgUG9sdWtoaW4sIDIwMTEtMjAxMy4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSN1bmRlZiBORE5CT09TVF9MQ0FTVF9USFJPV19CQURfQ0FTVAotI3VuZGVmIE5ETkJPT1NUX0xDQVNUX05PX1dDSEFSX1QKLSN1bmRlZiBORE5CT09TVF9MQ0FTVF9IQVNfSU5UMTI4Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9MRVhJQ0FMX0NBU1RfSU5DTFVERUQKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9saW1pdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9saW1pdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDU1ZDliLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbGltaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NiArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gbWFkZG9jayAxOTk5LiAKLS8vICAoQykgRGF2aWQgQWJyYWhhbXMgMjAwMi4gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdAotLy8gIFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIHVzZSB0aGlzIGhlYWRlciBhcyBhIHdvcmthcm91bmQgZm9yIG1pc3NpbmcgPGxpbWl0cz4KLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2NvbXBhdGliaWxpdHkvaW5kZXguaHRtbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9MSU1JVFMKLSNkZWZpbmUgTkROQk9PU1RfTElNSVRTCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0jaWZkZWYgTkROQk9PU1RfTk9fTElNSVRTCi0jICBlcnJvciAiVGhlcmUgaXMgbm8gc3RkOjpudW1lcmljX2xpbWl0cyBzdXBwcG9ydCBhdmFpbGFibGUuIgotI2Vsc2UKLSMgaW5jbHVkZSA8bGltaXRzPgotI2VuZGlmCi0KLSNpZiAoZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKSAmJiBkZWZpbmVkKE5ETkJPT1NUX05PX0xPTkdfTE9OR19OVU1FUklDX0xJTUlUUykpIFwKLSAgICAgIHx8IChkZWZpbmVkKE5ETkJPT1NUX0hBU19NU19JTlQ2NCkgJiYgZGVmaW5lZChORE5CT09TVF9OT19NU19JTlQ2NF9OVU1FUklDX0xJTUlUUykpCi0vLyBBZGQgbWlzc2luZyBzcGVjaWFsaXphdGlvbnMgZm9yIG51bWVyaWNfbGltaXRzOgotI2lmZGVmIE5ETkJPT1NUX0hBU19NU19JTlQ2NAotIyAgZGVmaW5lIE5ETkJPT1NUX0xMVCBfX2ludDY0Ci0jICBkZWZpbmUgTkROQk9PU1RfVUxMVCB1bnNpZ25lZCBfX2ludDY0Ci0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX0xMVCAgOjpuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUKLSMgIGRlZmluZSBORE5CT09TVF9VTExUICA6Om5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUKLSNlbmRpZgotCi0jaW5jbHVkZSA8Y2xpbWl0cz4gIC8vIGZvciBDSEFSX0JJVAotCi1uYW1lc3BhY2Ugc3RkCi17Ci0gIHRlbXBsYXRlPD4KLSAgY2xhc3MgbnVtZXJpY19saW1pdHM8TkROQk9PU1RfTExUPiAKLSAgewotICAgcHVibGljOgotCi0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfc3BlY2lhbGl6ZWQgPSB0cnVlKTsKLSNpZmRlZiBORE5CT09TVF9IQVNfTVNfSU5UNjQKLSAgICAgIHN0YXRpYyBORE5CT09TVF9MTFQgbWluIE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpeyByZXR1cm4gMHg4MDAwMDAwMDAwMDAwMDAwaTY0OyB9Ci0gICAgICBzdGF0aWMgTkROQk9PU1RfTExUIG1heCBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTiAoKXsgcmV0dXJuIDB4N0ZGRkZGRkZGRkZGRkZGRmk2NDsgfQotI2VsaWYgZGVmaW5lZChMTE9OR19NQVgpCi0gICAgICBzdGF0aWMgTkROQk9PU1RfTExUIG1pbiBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTiAoKXsgcmV0dXJuIExMT05HX01JTjsgfQotICAgICAgc3RhdGljIE5ETkJPT1NUX0xMVCBtYXggTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCl7IHJldHVybiBMTE9OR19NQVg7IH0KLSNlbGlmIGRlZmluZWQoTE9OR0xPTkdfTUFYKQotICAgICAgc3RhdGljIE5ETkJPT1NUX0xMVCBtaW4gTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCl7IHJldHVybiBMT05HTE9OR19NSU47IH0KLSAgICAgIHN0YXRpYyBORE5CT09TVF9MTFQgbWF4IE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpeyByZXR1cm4gTE9OR0xPTkdfTUFYOyB9Ci0jZWxzZQotICAgICAgc3RhdGljIE5ETkJPT1NUX0xMVCBtaW4gTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCl7IHJldHVybiAxTEwgPDwgKHNpemVvZihORE5CT09TVF9MTFQpICogQ0hBUl9CSVQgLSAxKTsgfQotICAgICAgc3RhdGljIE5ETkJPT1NUX0xMVCBtYXggTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCl7IHJldHVybiB+KG1pbikoKTsgfQotI2VuZGlmCi0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCBkaWdpdHMgPSBzaXplb2YoTkROQk9PU1RfTExUKSAqIENIQVJfQklUIC0xKTsKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIGRpZ2l0czEwID0gKENIQVJfQklUICogc2l6ZW9mIChORE5CT09TVF9MTFQpIC0gMSkgKiAzMDFMIC8gMTAwMCk7Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfc2lnbmVkID0gdHJ1ZSk7Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfaW50ZWdlciA9IHRydWUpOwotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2V4YWN0ID0gdHJ1ZSk7Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCByYWRpeCA9IDIpOwotICAgICAgc3RhdGljIE5ETkJPT1NUX0xMVCBlcHNpbG9uKCkgdGhyb3coKSB7IHJldHVybiAwOyB9OwotICAgICAgc3RhdGljIE5ETkJPT1NUX0xMVCByb3VuZF9lcnJvcigpIHRocm93KCkgeyByZXR1cm4gMDsgfTsKLQotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgbWluX2V4cG9uZW50ID0gMCk7Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCBtaW5fZXhwb25lbnQxMCA9IDApOwotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgbWF4X2V4cG9uZW50ID0gMCk7Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCBtYXhfZXhwb25lbnQxMCA9IDApOwotCi0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaGFzX2luZmluaXR5ID0gZmFsc2UpOwotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGhhc19xdWlldF9OYU4gPSBmYWxzZSk7Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaGFzX3NpZ25hbGluZ19OYU4gPSBmYWxzZSk7Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaGFzX2Rlbm9ybSA9IGZhbHNlKTsKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBoYXNfZGVub3JtX2xvc3MgPSBmYWxzZSk7Ci0gICAgICBzdGF0aWMgTkROQk9PU1RfTExUIGluZmluaXR5KCkgdGhyb3coKSB7IHJldHVybiAwOyB9OwotICAgICAgc3RhdGljIE5ETkJPT1NUX0xMVCBxdWlldF9OYU4oKSB0aHJvdygpIHsgcmV0dXJuIDA7IH07Ci0gICAgICBzdGF0aWMgTkROQk9PU1RfTExUIHNpZ25hbGluZ19OYU4oKSB0aHJvdygpIHsgcmV0dXJuIDA7IH07Ci0gICAgICBzdGF0aWMgTkROQk9PU1RfTExUIGRlbm9ybV9taW4oKSB0aHJvdygpIHsgcmV0dXJuIDA7IH07Ci0KLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19pZWM1NTkgPSBmYWxzZSk7Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfYm91bmRlZCA9IHRydWUpOwotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX21vZHVsbyA9IHRydWUpOwotCi0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdHJhcHMgPSBmYWxzZSk7Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdGlueW5lc3NfYmVmb3JlID0gZmFsc2UpOwotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGZsb2F0X3JvdW5kX3N0eWxlLCByb3VuZF9zdHlsZSA9IHJvdW5kX3Rvd2FyZF96ZXJvKTsKLSAgICAgIAotICB9OwotCi0gIHRlbXBsYXRlPD4KLSAgY2xhc3MgbnVtZXJpY19saW1pdHM8TkROQk9PU1RfVUxMVD4gCi0gIHsKLSAgIHB1YmxpYzoKLQotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX3NwZWNpYWxpemVkID0gdHJ1ZSk7Ci0jaWZkZWYgTkROQk9PU1RfSEFTX01TX0lOVDY0Ci0gICAgICBzdGF0aWMgTkROQk9PU1RfVUxMVCBtaW4gTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCl7IHJldHVybiAwdWk2NDsgfQotICAgICAgc3RhdGljIE5ETkJPT1NUX1VMTFQgbWF4IE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpeyByZXR1cm4gMHhGRkZGRkZGRkZGRkZGRkZGdWk2NDsgfQotI2VsaWYgZGVmaW5lZChVTExPTkdfTUFYKSAmJiBkZWZpbmVkKFVMTE9OR19NSU4pCi0gICAgICBzdGF0aWMgTkROQk9PU1RfVUxMVCBtaW4gTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCl7IHJldHVybiBVTExPTkdfTUlOOyB9Ci0gICAgICBzdGF0aWMgTkROQk9PU1RfVUxMVCBtYXggTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCl7IHJldHVybiBVTExPTkdfTUFYOyB9Ci0jZWxpZiBkZWZpbmVkKFVMT05HTE9OR19NQVgpICYmIGRlZmluZWQoVUxPTkdMT05HX01JTikKLSAgICAgIHN0YXRpYyBORE5CT09TVF9VTExUIG1pbiBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTiAoKXsgcmV0dXJuIFVMT05HTE9OR19NSU47IH0KLSAgICAgIHN0YXRpYyBORE5CT09TVF9VTExUIG1heCBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTiAoKXsgcmV0dXJuIFVMT05HTE9OR19NQVg7IH0KLSNlbHNlCi0gICAgICBzdGF0aWMgTkROQk9PU1RfVUxMVCBtaW4gTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCl7IHJldHVybiAwdUxMOyB9Ci0gICAgICBzdGF0aWMgTkROQk9PU1RfVUxMVCBtYXggTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCl7IHJldHVybiB+MHVMTDsgfQotI2VuZGlmCi0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCBkaWdpdHMgPSBzaXplb2YoTkROQk9PU1RfTExUKSAqIENIQVJfQklUKTsKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIGRpZ2l0czEwID0gKENIQVJfQklUICogc2l6ZW9mIChORE5CT09TVF9MTFQpKSAqIDMwMUwgLyAxMDAwKTsKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19zaWduZWQgPSBmYWxzZSk7Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfaW50ZWdlciA9IHRydWUpOwotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2V4YWN0ID0gdHJ1ZSk7Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCByYWRpeCA9IDIpOwotICAgICAgc3RhdGljIE5ETkJPT1NUX1VMTFQgZXBzaWxvbigpIHRocm93KCkgeyByZXR1cm4gMDsgfTsKLSAgICAgIHN0YXRpYyBORE5CT09TVF9VTExUIHJvdW5kX2Vycm9yKCkgdGhyb3coKSB7IHJldHVybiAwOyB9OwotCi0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCBtaW5fZXhwb25lbnQgPSAwKTsKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIG1pbl9leHBvbmVudDEwID0gMCk7Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCBtYXhfZXhwb25lbnQgPSAwKTsKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIG1heF9leHBvbmVudDEwID0gMCk7Ci0KLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBoYXNfaW5maW5pdHkgPSBmYWxzZSk7Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaGFzX3F1aWV0X05hTiA9IGZhbHNlKTsKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBoYXNfc2lnbmFsaW5nX05hTiA9IGZhbHNlKTsKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBoYXNfZGVub3JtID0gZmFsc2UpOwotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGhhc19kZW5vcm1fbG9zcyA9IGZhbHNlKTsKLSAgICAgIHN0YXRpYyBORE5CT09TVF9VTExUIGluZmluaXR5KCkgdGhyb3coKSB7IHJldHVybiAwOyB9OwotICAgICAgc3RhdGljIE5ETkJPT1NUX1VMTFQgcXVpZXRfTmFOKCkgdGhyb3coKSB7IHJldHVybiAwOyB9OwotICAgICAgc3RhdGljIE5ETkJPT1NUX1VMTFQgc2lnbmFsaW5nX05hTigpIHRocm93KCkgeyByZXR1cm4gMDsgfTsKLSAgICAgIHN0YXRpYyBORE5CT09TVF9VTExUIGRlbm9ybV9taW4oKSB0aHJvdygpIHsgcmV0dXJuIDA7IH07Ci0KLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19pZWM1NTkgPSBmYWxzZSk7Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfYm91bmRlZCA9IHRydWUpOwotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX21vZHVsbyA9IHRydWUpOwotCi0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdHJhcHMgPSBmYWxzZSk7Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdGlueW5lc3NfYmVmb3JlID0gZmFsc2UpOwotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGZsb2F0X3JvdW5kX3N0eWxlLCByb3VuZF9zdHlsZSA9IHJvdW5kX3Rvd2FyZF96ZXJvKTsKLSAgICAgIAotICB9OwotfQotI2VuZGlmIAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tYWtlX3NoYXJlZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21ha2Vfc2hhcmVkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjI4YmVlMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21ha2Vfc2hhcmVkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfTUFLRV9TSEFSRURfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01BS0VfU0hBUkVEX0hQUF9JTkNMVURFRAotCi0vLyAgbWFrZV9zaGFyZWQuaHBwCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwNywgMjAwOCBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3NtYXJ0X3B0ci9tYWtlX3NoYXJlZC5odG1sCi0vLyAgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvbWFrZV9zaGFyZWQuaHBwPgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9NQUtFX1NIQVJFRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbWF0aC9wb2xpY2llcy9wb2xpY3kuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tYXRoL3BvbGljaWVzL3BvbGljeS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2YTM1ZDkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tYXRoL3BvbGljaWVzL3BvbGljeS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OTIgKzAsMCBAQAotLy8gIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwNy4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX01BVEhfUE9MSUNZX0hQUAotI2RlZmluZSBORE5CT09TVF9NQVRIX1BPTElDWV9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvY29udGFpbnMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ZpbmRfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9yZW1vdmVfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9wdXNoX2JhY2suaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3NpemUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9jb21wYXJpc29uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21hdGgvdG9vbHMvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxsaW1pdHM+Ci0vLyBTYWRseSB3ZSBkbyBuZWVkIHRoZSAuaCB2ZXJzaW9ucyBvZiB0aGVzZSB0byBiZSBzdXJlIG9mIGdldHRpbmcKLS8vIEZMVF9NQU5UX0RJRyBldGMuCi0jaW5jbHVkZSA8bGltaXRzLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8c3RkZGVmLmg+Ci0jaW5jbHVkZSA8bWF0aC5oPgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7IG5hbWVzcGFjZSBtYXRoeyAKLQotbmFtZXNwYWNlIHRvb2xzewotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLWludCBkaWdpdHMoTkROQk9PU1RfTUFUSF9FWFBMSUNJVF9URU1QTEFURV9UWVBFKFQpKTsKLXRlbXBsYXRlIDxjbGFzcyBUPgotVCBlcHNpbG9uKE5ETkJPT1NUX01BVEhfRVhQTElDSVRfVEVNUExBVEVfVFlQRShUKSk7Ci0KLX0KLQotbmFtZXNwYWNlIHBvbGljaWVzewotCi0vLwotLy8gRGVmaW5lIG1hY3JvcyBmb3Igb3VyIGRlZmF1bHQgcG9saWNpZXMsIGlmIHRoZXkncmUgbm90IGRlZmluZWQgYWxyZWFkeToKLS8vCi0jaWZuZGVmIE5ETkJPT1NUX01BVEhfRE9NQUlOX0VSUk9SX1BPTElDWQotI2RlZmluZSBORE5CT09TVF9NQVRIX0RPTUFJTl9FUlJPUl9QT0xJQ1kgdGhyb3dfb25fZXJyb3IKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9NQVRIX1BPTEVfRVJST1JfUE9MSUNZCi0jZGVmaW5lIE5ETkJPT1NUX01BVEhfUE9MRV9FUlJPUl9QT0xJQ1kgdGhyb3dfb25fZXJyb3IKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9NQVRIX09WRVJGTE9XX0VSUk9SX1BPTElDWQotI2RlZmluZSBORE5CT09TVF9NQVRIX09WRVJGTE9XX0VSUk9SX1BPTElDWSB0aHJvd19vbl9lcnJvcgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX01BVEhfRVZBTFVBVElPTl9FUlJPUl9QT0xJQ1kKLSNkZWZpbmUgTkROQk9PU1RfTUFUSF9FVkFMVUFUSU9OX0VSUk9SX1BPTElDWSB0aHJvd19vbl9lcnJvcgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX01BVEhfUk9VTkRJTkdfRVJST1JfUE9MSUNZCi0jZGVmaW5lIE5ETkJPT1NUX01BVEhfUk9VTkRJTkdfRVJST1JfUE9MSUNZIHRocm93X29uX2Vycm9yCi0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfTUFUSF9VTkRFUkZMT1dfRVJST1JfUE9MSUNZCi0jZGVmaW5lIE5ETkJPT1NUX01BVEhfVU5ERVJGTE9XX0VSUk9SX1BPTElDWSBpZ25vcmVfZXJyb3IKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9NQVRIX0RFTk9STV9FUlJPUl9QT0xJQ1kKLSNkZWZpbmUgTkROQk9PU1RfTUFUSF9ERU5PUk1fRVJST1JfUE9MSUNZIGlnbm9yZV9lcnJvcgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX01BVEhfSU5ERVRFUk1JTkFURV9SRVNVTFRfRVJST1JfUE9MSUNZCi0jZGVmaW5lIE5ETkJPT1NUX01BVEhfSU5ERVRFUk1JTkFURV9SRVNVTFRfRVJST1JfUE9MSUNZIGlnbm9yZV9lcnJvcgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX01BVEhfRElHSVRTMTBfUE9MSUNZCi0jZGVmaW5lIE5ETkJPT1NUX01BVEhfRElHSVRTMTBfUE9MSUNZIDAKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9NQVRIX1BST01PVEVfRkxPQVRfUE9MSUNZCi0jZGVmaW5lIE5ETkJPT1NUX01BVEhfUFJPTU9URV9GTE9BVF9QT0xJQ1kgdHJ1ZQotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX01BVEhfUFJPTU9URV9ET1VCTEVfUE9MSUNZCi0jaWZkZWYgTkROQk9PU1RfTUFUSF9OT19MT05HX0RPVUJMRV9NQVRIX0ZVTkNUSU9OUwotI2RlZmluZSBORE5CT09TVF9NQVRIX1BST01PVEVfRE9VQkxFX1BPTElDWSBmYWxzZQotI2Vsc2UKLSNkZWZpbmUgTkROQk9PU1RfTUFUSF9QUk9NT1RFX0RPVUJMRV9QT0xJQ1kgdHJ1ZQotI2VuZGlmCi0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfTUFUSF9ESVNDUkVURV9RVUFOVElMRV9QT0xJQ1kKLSNkZWZpbmUgTkROQk9PU1RfTUFUSF9ESVNDUkVURV9RVUFOVElMRV9QT0xJQ1kgaW50ZWdlcl9yb3VuZF9vdXR3YXJkcwotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX01BVEhfQVNTRVJUX1VOREVGSU5FRF9QT0xJQ1kKLSNkZWZpbmUgTkROQk9PU1RfTUFUSF9BU1NFUlRfVU5ERUZJTkVEX1BPTElDWSB0cnVlCi0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfTUFUSF9NQVhfU0VSSUVTX0lURVJBVElPTl9QT0xJQ1kKLSNkZWZpbmUgTkROQk9PU1RfTUFUSF9NQVhfU0VSSUVTX0lURVJBVElPTl9QT0xJQ1kgMTAwMDAwMAotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX01BVEhfTUFYX1JPT1RfSVRFUkFUSU9OX1BPTElDWQotI2RlZmluZSBORE5CT09TVF9NQVRIX01BWF9ST09UX0lURVJBVElPTl9QT0xJQ1kgMjAwCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKF9fQk9STEFORENfXykgXAotICAgJiYgIShkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fIDw9IDIpKQotI2RlZmluZSBORE5CT09TVF9NQVRIX01FVEFfSU5UKHR5cGUsIG5hbWUsIERlZmF1bHQpXAotICAgdGVtcGxhdGUgPHR5cGUgTiA9IERlZmF1bHQ+IHN0cnVjdCBuYW1lIDogcHVibGljIG5kbmJvb3N0OjptcGw6OmludF88Tj57fTtcCi0gICBuYW1lc3BhY2UgZGV0YWlse1wKLSAgIHRlbXBsYXRlIDx0eXBlIE4+XAotICAgY2hhciB0ZXN0X2lzX3ZhbGlkX2FyZyhjb25zdCBuYW1lPE4+Kik7XAotICAgY2hhciB0ZXN0X2lzX2RlZmF1bHRfYXJnKGNvbnN0IG5hbWU8RGVmYXVsdD4qKTtcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IGlzXyMjbmFtZSMjX2ltcFwKLSAgIHtcCi0gICAgICB0ZW1wbGF0ZSA8dHlwZSBOPiBzdGF0aWMgY2hhciB0ZXN0KGNvbnN0IG5hbWU8Tj4qKTtcCi0gICAgICBzdGF0aWMgZG91YmxlIHRlc3QoLi4uKTtcCi0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBzaXplb2YodGVzdChzdGF0aWNfY2FzdDxUKj4oMCkpKSA9PSAxKTtcCi0gICB9O1wKLSAgIH1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IGlzXyMjbmFtZSA6IHB1YmxpYyBuZG5ib29zdDo6bXBsOjpib29sXzwgOjpuZG5ib29zdDo6bWF0aDo6cG9saWNpZXM6OmRldGFpbDo6aXNfIyNuYW1lIyNfaW1wPFQ+Ojp2YWx1ZT57fTsKLQotI2RlZmluZSBORE5CT09TVF9NQVRIX01FVEFfQk9PTChuYW1lLCBEZWZhdWx0KVwKLSAgIHRlbXBsYXRlIDxib29sIE4gPSBEZWZhdWx0PiBzdHJ1Y3QgbmFtZSA6IHB1YmxpYyBuZG5ib29zdDo6bXBsOjpib29sXzxOPnt9O1wKLSAgIG5hbWVzcGFjZSBkZXRhaWx7XAotICAgdGVtcGxhdGUgPGJvb2wgTj5cCi0gICBjaGFyIHRlc3RfaXNfdmFsaWRfYXJnKGNvbnN0IG5hbWU8Tj4qKTtcCi0gICBjaGFyIHRlc3RfaXNfZGVmYXVsdF9hcmcoY29uc3QgbmFtZTxEZWZhdWx0PiopO1wKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgaXNfIyNuYW1lIyNfaW1wXAotICAge1wKLSAgICAgIHRlbXBsYXRlIDxib29sIE4+IHN0YXRpYyBjaGFyIHRlc3QoY29uc3QgbmFtZTxOPiopO1wKLSAgICAgIHN0YXRpYyBkb3VibGUgdGVzdCguLi4pO1wKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHNpemVvZih0ZXN0KHN0YXRpY19jYXN0PFQqPigwKSkpID09IDEpO1wKLSAgIH07XAotICAgfVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgaXNfIyNuYW1lIDogcHVibGljIG5kbmJvb3N0OjptcGw6OmJvb2xfPCA6Om5kbmJvb3N0OjptYXRoOjpwb2xpY2llczo6ZGV0YWlsOjppc18jI25hbWUjI19pbXA8VD46OnZhbHVlPnt9OwotI2Vsc2UKLSNkZWZpbmUgTkROQk9PU1RfTUFUSF9NRVRBX0lOVChUeXBlLCBuYW1lLCBEZWZhdWx0KVwKLSAgIHRlbXBsYXRlIDxUeXBlIE4gPSBEZWZhdWx0PiBzdHJ1Y3QgbmFtZSA6IHB1YmxpYyBuZG5ib29zdDo6bXBsOjppbnRfPE4+e307XAotICAgbmFtZXNwYWNlIGRldGFpbHtcCi0gICB0ZW1wbGF0ZSA8VHlwZSBOPlwKLSAgIGNoYXIgdGVzdF9pc192YWxpZF9hcmcoY29uc3QgbmFtZTxOPiopO1wKLSAgIGNoYXIgdGVzdF9pc19kZWZhdWx0X2FyZyhjb25zdCBuYW1lPERlZmF1bHQ+Kik7XAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBpc18jI25hbWUjI190ZXN0ZXJcCi0gICB7XAotICAgICAgdGVtcGxhdGUgPFR5cGUgTj4gc3RhdGljIGNoYXIgdGVzdChjb25zdCBuYW1lPE4+Jik7XAotICAgICAgc3RhdGljIGRvdWJsZSB0ZXN0KC4uLik7XAotICAgfTtcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IGlzXyMjbmFtZSMjX2ltcFwKLSAgIHtcCi0gICAgICBzdGF0aWMgVCBpbnN0O1wKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHNpemVvZiggOjpuZG5ib29zdDo6bWF0aDo6cG9saWNpZXM6OmRldGFpbDo6aXNfIyNuYW1lIyNfdGVzdGVyPFQ+Ojp0ZXN0KGluc3QpKSA9PSAxKTtcCi0gICB9O1wKLSAgIH1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IGlzXyMjbmFtZSA6IHB1YmxpYyBuZG5ib29zdDo6bXBsOjpib29sXzwgOjpuZG5ib29zdDo6bWF0aDo6cG9saWNpZXM6OmRldGFpbDo6aXNfIyNuYW1lIyNfaW1wPFQ+Ojp2YWx1ZT5cCi0gICB7XAotICAgICAgdGVtcGxhdGUgPGNsYXNzIFU+IHN0cnVjdCBhcHBseXsgdHlwZWRlZiBpc18jI25hbWU8VT4gdHlwZTsgfTtcCi0gICB9OwotCi0jZGVmaW5lIE5ETkJPT1NUX01BVEhfTUVUQV9CT09MKG5hbWUsIERlZmF1bHQpXAotICAgdGVtcGxhdGUgPGJvb2wgTiA9IERlZmF1bHQ+IHN0cnVjdCBuYW1lIDogcHVibGljIG5kbmJvb3N0OjptcGw6OmJvb2xfPE4+e307XAotICAgbmFtZXNwYWNlIGRldGFpbHtcCi0gICB0ZW1wbGF0ZSA8Ym9vbCBOPlwKLSAgIGNoYXIgdGVzdF9pc192YWxpZF9hcmcoY29uc3QgbmFtZTxOPiopO1wKLSAgIGNoYXIgdGVzdF9pc19kZWZhdWx0X2FyZyhjb25zdCBuYW1lPERlZmF1bHQ+Kik7XAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBpc18jI25hbWUjI190ZXN0ZXJcCi0gICB7XAotICAgICAgdGVtcGxhdGUgPGJvb2wgTj4gc3RhdGljIGNoYXIgdGVzdChjb25zdCBuYW1lPE4+Jik7XAotICAgICAgc3RhdGljIGRvdWJsZSB0ZXN0KC4uLik7XAotICAgfTtcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IGlzXyMjbmFtZSMjX2ltcFwKLSAgIHtcCi0gICAgICBzdGF0aWMgVCBpbnN0O1wKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHNpemVvZiggOjpuZG5ib29zdDo6bWF0aDo6cG9saWNpZXM6OmRldGFpbDo6aXNfIyNuYW1lIyNfdGVzdGVyPFQ+Ojp0ZXN0KGluc3QpKSA9PSAxKTtcCi0gICB9O1wKLSAgIH1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IGlzXyMjbmFtZSA6IHB1YmxpYyBuZG5ib29zdDo6bXBsOjpib29sXzwgOjpuZG5ib29zdDo6bWF0aDo6cG9saWNpZXM6OmRldGFpbDo6aXNfIyNuYW1lIyNfaW1wPFQ+Ojp2YWx1ZT5cCi0gICB7XAotICAgICAgdGVtcGxhdGUgPGNsYXNzIFU+IHN0cnVjdCBhcHBseXsgdHlwZWRlZiBpc18jI25hbWU8VT4gdHlwZTsgIH07XAotICAgfTsKLSNlbmRpZgotLy8KLS8vIEJlZ2luIGJ5IGRlZmluaW5nIHBvbGljeSB0eXBlcyBmb3IgZXJyb3IgaGFuZGxpbmc6Ci0vLwotZW51bSBlcnJvcl9wb2xpY3lfdHlwZQotewotICAgdGhyb3dfb25fZXJyb3IgPSAwLAotICAgZXJybm9fb25fZXJyb3IgPSAxLAotICAgaWdub3JlX2Vycm9yID0gMiwKLSAgIHVzZXJfZXJyb3IgPSAzCi19OwotCi1ORE5CT09TVF9NQVRIX01FVEFfSU5UKGVycm9yX3BvbGljeV90eXBlLCBkb21haW5fZXJyb3IsIE5ETkJPT1NUX01BVEhfRE9NQUlOX0VSUk9SX1BPTElDWSkKLU5ETkJPT1NUX01BVEhfTUVUQV9JTlQoZXJyb3JfcG9saWN5X3R5cGUsIHBvbGVfZXJyb3IsIE5ETkJPT1NUX01BVEhfUE9MRV9FUlJPUl9QT0xJQ1kpCi1ORE5CT09TVF9NQVRIX01FVEFfSU5UKGVycm9yX3BvbGljeV90eXBlLCBvdmVyZmxvd19lcnJvciwgTkROQk9PU1RfTUFUSF9PVkVSRkxPV19FUlJPUl9QT0xJQ1kpCi1ORE5CT09TVF9NQVRIX01FVEFfSU5UKGVycm9yX3BvbGljeV90eXBlLCB1bmRlcmZsb3dfZXJyb3IsIE5ETkJPT1NUX01BVEhfVU5ERVJGTE9XX0VSUk9SX1BPTElDWSkKLU5ETkJPT1NUX01BVEhfTUVUQV9JTlQoZXJyb3JfcG9saWN5X3R5cGUsIGRlbm9ybV9lcnJvciwgTkROQk9PU1RfTUFUSF9ERU5PUk1fRVJST1JfUE9MSUNZKQotTkROQk9PU1RfTUFUSF9NRVRBX0lOVChlcnJvcl9wb2xpY3lfdHlwZSwgZXZhbHVhdGlvbl9lcnJvciwgTkROQk9PU1RfTUFUSF9FVkFMVUFUSU9OX0VSUk9SX1BPTElDWSkKLU5ETkJPT1NUX01BVEhfTUVUQV9JTlQoZXJyb3JfcG9saWN5X3R5cGUsIHJvdW5kaW5nX2Vycm9yLCBORE5CT09TVF9NQVRIX1JPVU5ESU5HX0VSUk9SX1BPTElDWSkKLU5ETkJPT1NUX01BVEhfTUVUQV9JTlQoZXJyb3JfcG9saWN5X3R5cGUsIGluZGV0ZXJtaW5hdGVfcmVzdWx0X2Vycm9yLCBORE5CT09TVF9NQVRIX0lOREVURVJNSU5BVEVfUkVTVUxUX0VSUk9SX1BPTElDWSkKLQotLy8KLS8vIFBvbGljeSB0eXBlcyBmb3IgaW50ZXJuYWwgcHJvbW90aW9uOgotLy8KLU5ETkJPT1NUX01BVEhfTUVUQV9CT09MKHByb21vdGVfZmxvYXQsIE5ETkJPT1NUX01BVEhfUFJPTU9URV9GTE9BVF9QT0xJQ1kpCi1ORE5CT09TVF9NQVRIX01FVEFfQk9PTChwcm9tb3RlX2RvdWJsZSwgTkROQk9PU1RfTUFUSF9QUk9NT1RFX0RPVUJMRV9QT0xJQ1kpCi1ORE5CT09TVF9NQVRIX01FVEFfQk9PTChhc3NlcnRfdW5kZWZpbmVkLCBORE5CT09TVF9NQVRIX0FTU0VSVF9VTkRFRklORURfUE9MSUNZKQotLy8KLS8vIFBvbGljeSB0eXBlcyBmb3IgZGlzY3JldGUgcXVhbnRpbGVzOgotLy8KLWVudW0gZGlzY3JldGVfcXVhbnRpbGVfcG9saWN5X3R5cGUKLXsKLSAgIHJlYWwsCi0gICBpbnRlZ2VyX3JvdW5kX291dHdhcmRzLAotICAgaW50ZWdlcl9yb3VuZF9pbndhcmRzLAotICAgaW50ZWdlcl9yb3VuZF9kb3duLAotICAgaW50ZWdlcl9yb3VuZF91cCwKLSAgIGludGVnZXJfcm91bmRfbmVhcmVzdAotfTsKLQotTkROQk9PU1RfTUFUSF9NRVRBX0lOVChkaXNjcmV0ZV9xdWFudGlsZV9wb2xpY3lfdHlwZSwgZGlzY3JldGVfcXVhbnRpbGUsIE5ETkJPT1NUX01BVEhfRElTQ1JFVEVfUVVBTlRJTEVfUE9MSUNZKQotLy8KLS8vIFByZWNpc2lvbjoKLS8vCi1ORE5CT09TVF9NQVRIX01FVEFfSU5UKGludCwgZGlnaXRzMTAsIE5ETkJPT1NUX01BVEhfRElHSVRTMTBfUE9MSUNZKQotTkROQk9PU1RfTUFUSF9NRVRBX0lOVChpbnQsIGRpZ2l0czIsIDApCi0vLwotLy8gSXRlcmF0aW9uczoKLS8vCi1ORE5CT09TVF9NQVRIX01FVEFfSU5UKHVuc2lnbmVkIGxvbmcsIG1heF9zZXJpZXNfaXRlcmF0aW9ucywgTkROQk9PU1RfTUFUSF9NQVhfU0VSSUVTX0lURVJBVElPTl9QT0xJQ1kpCi1ORE5CT09TVF9NQVRIX01FVEFfSU5UKHVuc2lnbmVkIGxvbmcsIG1heF9yb290X2l0ZXJhdGlvbnMsIE5ETkJPT1NUX01BVEhfTUFYX1JPT1RfSVRFUkFUSU9OX1BPTElDWSkKLS8vCi0vLyBEZWZpbmUgdGhlIG5hbWVzIGZvciBlYWNoIHBvc3NpYmxlIHBvbGljeToKLS8vCi0jZGVmaW5lIE5ETkJPT1NUX01BVEhfUEFSQU1FVEVSKG5hbWUpXAotICAgTkROQk9PU1RfUEFSQU1FVEVSX1RFTVBMQVRFX0tFWVdPUkQobmFtZSMjX25hbWUpXAotICAgTkROQk9PU1RfUEFSQU1FVEVSX05BTUUobmFtZSMjX25hbWUpCi0KLXN0cnVjdCBkZWZhdWx0X3BvbGljeXt9OwotCi1uYW1lc3BhY2UgZGV0YWlsewotLy8KLS8vIFRyYWl0IHRvIHdvcmsgb3V0IGJpdHMgcHJlY2lzaW9uIGZyb20gZGlnaXRzMTAgYW5kIGRpZ2l0czI6Ci0vLwotdGVtcGxhdGUgPGNsYXNzIERpZ2l0czEwLCBjbGFzcyBEaWdpdHMyPgotc3RydWN0IHByZWNpc2lvbgotewotICAgLy8KLSAgIC8vIE5vdyB3b3JrIG91dCB0aGUgcHJlY2lzaW9uOgotICAgLy8KLSAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl9jPAotICAgICAgKERpZ2l0czEwOjp2YWx1ZSA9PSAwKSwKLSAgICAgIGRpZ2l0czI8MD4sCi0gICAgICBkaWdpdHMyPCgoRGlnaXRzMTA6OnZhbHVlICsgMSkgKiAxMDAwTCkgLyAzMDFMPgotICAgPjo6dHlwZSBkaWdpdHMyX3R5cGU7Ci1wdWJsaWM6Ci0jaWZkZWYgX19CT1JMQU5EQ19fCi0gICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfYzwKLSAgICAgIChEaWdpdHMyOjp2YWx1ZSA+IDo6bmRuYm9vc3Q6Om1hdGg6OnBvbGljaWVzOjpkZXRhaWw6OnByZWNpc2lvbjxEaWdpdHMxMCxEaWdpdHMyPjo6ZGlnaXRzMl90eXBlOjp2YWx1ZSksCi0gICAgICBEaWdpdHMyLCBkaWdpdHMyX3R5cGU+Ojp0eXBlIHR5cGU7Ci0jZWxzZQotICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmX2M8Ci0gICAgICAoRGlnaXRzMjo6dmFsdWUgPiBkaWdpdHMyX3R5cGU6OnZhbHVlKSwKLSAgICAgIERpZ2l0czIsIGRpZ2l0czJfdHlwZT46OnR5cGUgdHlwZTsKLSNlbmRpZgotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEEsIGNsYXNzIEIsIGJvb2wgYj4KLXN0cnVjdCBzZWxlY3RfcmVzdWx0Ci17Ci0gICB0eXBlZGVmIEEgdHlwZTsKLX07Ci10ZW1wbGF0ZSA8Y2xhc3MgQSwgY2xhc3MgQj4KLXN0cnVjdCBzZWxlY3RfcmVzdWx0PEEsIEIsIGZhbHNlPgotewotICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmRlcmVmPEI+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgU2VxLCBjbGFzcyBQcmVkLCBjbGFzcyBEZWZhdWx0VHlwZT4KLXN0cnVjdCBmaW5kX2FyZwotewotcHJpdmF0ZToKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpmaW5kX2lmPFNlcSwgUHJlZD46OnR5cGUgaXRlcjsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjplbmQ8U2VxPjo6dHlwZSBlbmRfdHlwZTsKLXB1YmxpYzoKLSAgIHR5cGVkZWYgdHlwZW5hbWUgc2VsZWN0X3Jlc3VsdDwKLSAgICAgIERlZmF1bHRUeXBlLCBpdGVyLAotICAgICAgOjpuZG5ib29zdDo6aXNfc2FtZTxpdGVyLCBlbmRfdHlwZT46OnZhbHVlPjo6dHlwZSB0eXBlOwotfTsKLQotZG91YmxlIHRlc3RfaXNfdmFsaWRfYXJnKC4uLik7Ci1kb3VibGUgdGVzdF9pc19kZWZhdWx0X2FyZyguLi4pOwotY2hhciB0ZXN0X2lzX3ZhbGlkX2FyZyhjb25zdCBkZWZhdWx0X3BvbGljeSopOwotY2hhciB0ZXN0X2lzX2RlZmF1bHRfYXJnKGNvbnN0IGRlZmF1bHRfcG9saWN5Kik7Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3ZhbGlkX3BvbGljeV9pbXAgCi17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBzaXplb2YoOjpuZG5ib29zdDo6bWF0aDo6cG9saWNpZXM6OmRldGFpbDo6dGVzdF9pc192YWxpZF9hcmcoc3RhdGljX2Nhc3Q8VCo+KDApKSkgPT0gMSk7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19kZWZhdWx0X3BvbGljeV9pbXAKLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHNpemVvZig6Om5kbmJvb3N0OjptYXRoOjpwb2xpY2llczo6ZGV0YWlsOjp0ZXN0X2lzX2RlZmF1bHRfYXJnKHN0YXRpY19jYXN0PFQqPigwKSkpID09IDEpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBpc192YWxpZF9wb2xpY3kgCi06IHB1YmxpYyBtcGw6OmJvb2xfPCAKLSAgIDo6bmRuYm9vc3Q6Om1hdGg6OnBvbGljaWVzOjpkZXRhaWw6OmlzX3ZhbGlkX3BvbGljeV9pbXA8VD46OnZhbHVlPgote307Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgaXNfZGVmYXVsdF9wb2xpY3kgCi06IHB1YmxpYyBtcGw6OmJvb2xfPCAKLSAgIDo6bmRuYm9vc3Q6Om1hdGg6OnBvbGljaWVzOjpkZXRhaWw6OmlzX2RlZmF1bHRfcG9saWN5X2ltcDxUPjo6dmFsdWU+Ci17Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVT4KLSAgIHN0cnVjdCBhcHBseQotICAgewotICAgICAgdHlwZWRlZiBpc19kZWZhdWx0X3BvbGljeTxVPiB0eXBlOwotICAgfTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBTZXEsIGNsYXNzIFQsIGludCBOPgotc3RydWN0IGFwcGVuZF9OCi17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6cHVzaF9iYWNrPFNlcSwgVD46OnR5cGUgbmV3X3NlcTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwZW5kX048bmV3X3NlcSwgVCwgTi0xPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFNlcSwgY2xhc3MgVD4KLXN0cnVjdCBhcHBlbmRfTjxTZXEsIFQsIDA+Ci17Ci0gICB0eXBlZGVmIFNlcSB0eXBlOwotfTsKLQotLy8KLS8vIFRyYWl0cyBjbGFzcyB0byB3b3JrIG91dCB3aGF0IHRlbXBsYXRlIHBhcmFtZXRlcnMgb3VyIGRlZmF1bHQKLS8vIHBvbGljeTw+IGNsYXNzIHdpbGwgaGF2ZSB3aGVuIG1vZGlmaWVkIGZvciBmb3J3YXJkaW5nOgotLy8KLXRlbXBsYXRlIDxib29sIGYsIGJvb2wgZD4KLXN0cnVjdCBkZWZhdWx0X2FyZ3MKLXsKLSAgIHR5cGVkZWYgcHJvbW90ZV9mbG9hdDxmYWxzZT4gYXJnMTsKLSAgIHR5cGVkZWYgcHJvbW90ZV9kb3VibGU8ZmFsc2U+IGFyZzI7Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGRlZmF1bHRfYXJnczxmYWxzZSwgZmFsc2U+Ci17Ci0gICB0eXBlZGVmIGRlZmF1bHRfcG9saWN5IGFyZzE7Ci0gICB0eXBlZGVmIGRlZmF1bHRfcG9saWN5IGFyZzI7Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGRlZmF1bHRfYXJnczx0cnVlLCBmYWxzZT4KLXsKLSAgIHR5cGVkZWYgcHJvbW90ZV9mbG9hdDxmYWxzZT4gYXJnMTsKLSAgIHR5cGVkZWYgZGVmYXVsdF9wb2xpY3kgYXJnMjsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgZGVmYXVsdF9hcmdzPGZhbHNlLCB0cnVlPgotewotICAgdHlwZWRlZiBwcm9tb3RlX2RvdWJsZTxmYWxzZT4gYXJnMTsKLSAgIHR5cGVkZWYgZGVmYXVsdF9wb2xpY3kgYXJnMjsKLX07Ci0KLXR5cGVkZWYgZGVmYXVsdF9hcmdzPE5ETkJPT1NUX01BVEhfUFJPTU9URV9GTE9BVF9QT0xJQ1ksIE5ETkJPT1NUX01BVEhfUFJPTU9URV9ET1VCTEVfUE9MSUNZPjo6YXJnMSBmb3J3YXJkaW5nX2FyZzE7Ci10eXBlZGVmIGRlZmF1bHRfYXJnczxORE5CT09TVF9NQVRIX1BST01PVEVfRkxPQVRfUE9MSUNZLCBORE5CT09TVF9NQVRIX1BST01PVEVfRE9VQkxFX1BPTElDWT46OmFyZzIgZm9yd2FyZGluZ19hcmcyOwotCi19IC8vIGRldGFpbAotLy8KLS8vIE5vdyBkZWZpbmUgdGhlIHBvbGljeSB0eXBlIHdpdGggZW5vdWdoIGFyZ3VtZW50cyB0byBoYW5kbGUgYWxsCi0vLyB0aGUgcG9saWNpZXM6Ci0vLwotdGVtcGxhdGUgPGNsYXNzIEExID0gZGVmYXVsdF9wb2xpY3ksIAotICAgICAgICAgIGNsYXNzIEEyID0gZGVmYXVsdF9wb2xpY3ksIAotICAgICAgICAgIGNsYXNzIEEzID0gZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgY2xhc3MgQTQgPSBkZWZhdWx0X3BvbGljeSwKLSAgICAgICAgICBjbGFzcyBBNSA9IGRlZmF1bHRfcG9saWN5LAotICAgICAgICAgIGNsYXNzIEE2ID0gZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgY2xhc3MgQTcgPSBkZWZhdWx0X3BvbGljeSwKLSAgICAgICAgICBjbGFzcyBBOCA9IGRlZmF1bHRfcG9saWN5LAotICAgICAgICAgIGNsYXNzIEE5ID0gZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgY2xhc3MgQTEwID0gZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgY2xhc3MgQTExID0gZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgY2xhc3MgQTEyID0gZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgY2xhc3MgQTEzID0gZGVmYXVsdF9wb2xpY3k+Ci1zdHJ1Y3QgcG9saWN5Ci17Ci1wcml2YXRlOgotICAgLy8KLSAgIC8vIFZhbGlkYXRlIGFsbCBvdXIgYXJndW1lbnRzOgotICAgLy8KLSAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoOjpuZG5ib29zdDo6bWF0aDo6cG9saWNpZXM6OmRldGFpbDo6aXNfdmFsaWRfcG9saWN5PEExPjo6dmFsdWUpOwotICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCg6Om5kbmJvb3N0OjptYXRoOjpwb2xpY2llczo6ZGV0YWlsOjppc192YWxpZF9wb2xpY3k8QTI+Ojp2YWx1ZSk7Ci0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKDo6bmRuYm9vc3Q6Om1hdGg6OnBvbGljaWVzOjpkZXRhaWw6OmlzX3ZhbGlkX3BvbGljeTxBMz46OnZhbHVlKTsKLSAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoOjpuZG5ib29zdDo6bWF0aDo6cG9saWNpZXM6OmRldGFpbDo6aXNfdmFsaWRfcG9saWN5PEE0Pjo6dmFsdWUpOwotICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCg6Om5kbmJvb3N0OjptYXRoOjpwb2xpY2llczo6ZGV0YWlsOjppc192YWxpZF9wb2xpY3k8QTU+Ojp2YWx1ZSk7Ci0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKDo6bmRuYm9vc3Q6Om1hdGg6OnBvbGljaWVzOjpkZXRhaWw6OmlzX3ZhbGlkX3BvbGljeTxBNj46OnZhbHVlKTsKLSAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoOjpuZG5ib29zdDo6bWF0aDo6cG9saWNpZXM6OmRldGFpbDo6aXNfdmFsaWRfcG9saWN5PEE3Pjo6dmFsdWUpOwotICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCg6Om5kbmJvb3N0OjptYXRoOjpwb2xpY2llczo6ZGV0YWlsOjppc192YWxpZF9wb2xpY3k8QTg+Ojp2YWx1ZSk7Ci0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKDo6bmRuYm9vc3Q6Om1hdGg6OnBvbGljaWVzOjpkZXRhaWw6OmlzX3ZhbGlkX3BvbGljeTxBOT46OnZhbHVlKTsKLSAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoOjpuZG5ib29zdDo6bWF0aDo6cG9saWNpZXM6OmRldGFpbDo6aXNfdmFsaWRfcG9saWN5PEExMD46OnZhbHVlKTsKLSAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoOjpuZG5ib29zdDo6bWF0aDo6cG9saWNpZXM6OmRldGFpbDo6aXNfdmFsaWRfcG9saWN5PEExMT46OnZhbHVlKTsKLSAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoOjpuZG5ib29zdDo6bWF0aDo6cG9saWNpZXM6OmRldGFpbDo6aXNfdmFsaWRfcG9saWN5PEExMj46OnZhbHVlKTsKLSAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoOjpuZG5ib29zdDo6bWF0aDo6cG9saWNpZXM6OmRldGFpbDo6aXNfdmFsaWRfcG9saWN5PEExMz46OnZhbHVlKTsKLSAgIC8vCi0gICAvLyBUeXBlbGlzdCBvZiB0aGUgYXJndW1lbnRzOgotICAgLy8KLSAgIHR5cGVkZWYgbXBsOjpsaXN0PEExLEEyLEEzLEE0LEE1LEE2LEE3LEE4LEE5LEExMCxBMTEsQTEyLEExMz4gYXJnX2xpc3Q7Ci0KLXB1YmxpYzoKLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmaW5kX2FyZzxhcmdfbGlzdCwgaXNfZG9tYWluX2Vycm9yPG1wbDo6XzE+LCBkb21haW5fZXJyb3I8PiA+Ojp0eXBlIGRvbWFpbl9lcnJvcl90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmZpbmRfYXJnPGFyZ19saXN0LCBpc19wb2xlX2Vycm9yPG1wbDo6XzE+LCBwb2xlX2Vycm9yPD4gPjo6dHlwZSBwb2xlX2Vycm9yX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6ZmluZF9hcmc8YXJnX2xpc3QsIGlzX292ZXJmbG93X2Vycm9yPG1wbDo6XzE+LCBvdmVyZmxvd19lcnJvcjw+ID46OnR5cGUgb3ZlcmZsb3dfZXJyb3JfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmaW5kX2FyZzxhcmdfbGlzdCwgaXNfdW5kZXJmbG93X2Vycm9yPG1wbDo6XzE+LCB1bmRlcmZsb3dfZXJyb3I8PiA+Ojp0eXBlIHVuZGVyZmxvd19lcnJvcl90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmZpbmRfYXJnPGFyZ19saXN0LCBpc19kZW5vcm1fZXJyb3I8bXBsOjpfMT4sIGRlbm9ybV9lcnJvcjw+ID46OnR5cGUgZGVub3JtX2Vycm9yX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6ZmluZF9hcmc8YXJnX2xpc3QsIGlzX2V2YWx1YXRpb25fZXJyb3I8bXBsOjpfMT4sIGV2YWx1YXRpb25fZXJyb3I8PiA+Ojp0eXBlIGV2YWx1YXRpb25fZXJyb3JfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmaW5kX2FyZzxhcmdfbGlzdCwgaXNfcm91bmRpbmdfZXJyb3I8bXBsOjpfMT4sIHJvdW5kaW5nX2Vycm9yPD4gPjo6dHlwZSByb3VuZGluZ19lcnJvcl90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmZpbmRfYXJnPGFyZ19saXN0LCBpc19pbmRldGVybWluYXRlX3Jlc3VsdF9lcnJvcjxtcGw6Ol8xPiwgaW5kZXRlcm1pbmF0ZV9yZXN1bHRfZXJyb3I8PiA+Ojp0eXBlIGluZGV0ZXJtaW5hdGVfcmVzdWx0X2Vycm9yX3R5cGU7Ci1wcml2YXRlOgotICAgLy8KLSAgIC8vIE5vdyB3b3JrIG91dCB0aGUgcHJlY2lzaW9uOgotICAgLy8KLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmaW5kX2FyZzxhcmdfbGlzdCwgaXNfZGlnaXRzMTA8bXBsOjpfMT4sIGRpZ2l0czEwPD4gPjo6dHlwZSBkaWdpdHMxMF90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmZpbmRfYXJnPGFyZ19saXN0LCBpc19kaWdpdHMyPG1wbDo6XzE+LCBkaWdpdHMyPD4gPjo6dHlwZSBiaXRzX3ByZWNpc2lvbl90eXBlOwotcHVibGljOgotICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnByZWNpc2lvbjxkaWdpdHMxMF90eXBlLCBiaXRzX3ByZWNpc2lvbl90eXBlPjo6dHlwZSBwcmVjaXNpb25fdHlwZTsKLSAgIC8vCi0gICAvLyBJbnRlcm5hbCBwcm9tb3Rpb246Ci0gICAvLwotICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmZpbmRfYXJnPGFyZ19saXN0LCBpc19wcm9tb3RlX2Zsb2F0PG1wbDo6XzE+LCBwcm9tb3RlX2Zsb2F0PD4gPjo6dHlwZSBwcm9tb3RlX2Zsb2F0X3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6ZmluZF9hcmc8YXJnX2xpc3QsIGlzX3Byb21vdGVfZG91YmxlPG1wbDo6XzE+LCBwcm9tb3RlX2RvdWJsZTw+ID46OnR5cGUgcHJvbW90ZV9kb3VibGVfdHlwZTsKLSAgIC8vCi0gICAvLyBEaXNjcmV0ZSBxdWFudGlsZXM6Ci0gICAvLwotICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmZpbmRfYXJnPGFyZ19saXN0LCBpc19kaXNjcmV0ZV9xdWFudGlsZTxtcGw6Ol8xPiwgZGlzY3JldGVfcXVhbnRpbGU8PiA+Ojp0eXBlIGRpc2NyZXRlX3F1YW50aWxlX3R5cGU7Ci0gICAvLwotICAgLy8gTWF0aGVtYXRpY2FsbHkgdW5kZWZpbmVkIHByb3BlcnRpZXM6Ci0gICAvLwotICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmZpbmRfYXJnPGFyZ19saXN0LCBpc19hc3NlcnRfdW5kZWZpbmVkPG1wbDo6XzE+LCBhc3NlcnRfdW5kZWZpbmVkPD4gPjo6dHlwZSBhc3NlcnRfdW5kZWZpbmVkX3R5cGU7Ci0gICAvLwotICAgLy8gTWF4IGl0ZXJhdGlvbnM6Ci0gICAvLwotICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmZpbmRfYXJnPGFyZ19saXN0LCBpc19tYXhfc2VyaWVzX2l0ZXJhdGlvbnM8bXBsOjpfMT4sIG1heF9zZXJpZXNfaXRlcmF0aW9uczw+ID46OnR5cGUgbWF4X3Nlcmllc19pdGVyYXRpb25zX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6ZmluZF9hcmc8YXJnX2xpc3QsIGlzX21heF9yb290X2l0ZXJhdGlvbnM8bXBsOjpfMT4sIG1heF9yb290X2l0ZXJhdGlvbnM8PiA+Ojp0eXBlIG1heF9yb290X2l0ZXJhdGlvbnNfdHlwZTsKLX07Ci0vLwotLy8gVGhlc2UgZnVsbCBzcGVjaWFsaXphdGlvbnMgYXJlIGRlZmluZWQgdG8gcmVkdWNlIHRoZSBhbW91bnQgb2YKLS8vIHRlbXBsYXRlIGluc3RhbnRpYXRpb25zIHRoYXQgaGF2ZSB0byB0YWtlIHBsYWNlIHdoZW4gdXNpbmcgdGhlIGRlZmF1bHQKLS8vIHBvbGljaWVzLCB0aGV5IGhhdmUgcXVpdGUgYSBsYXJnZSBpbXBhY3Qgb24gY29tcGlsZSB0aW1lczoKLS8vCi10ZW1wbGF0ZSA8Pgotc3RydWN0IHBvbGljeTxkZWZhdWx0X3BvbGljeSwgZGVmYXVsdF9wb2xpY3ksIGRlZmF1bHRfcG9saWN5LCBkZWZhdWx0X3BvbGljeSwgZGVmYXVsdF9wb2xpY3ksIGRlZmF1bHRfcG9saWN5LCBkZWZhdWx0X3BvbGljeSwgZGVmYXVsdF9wb2xpY3ksIGRlZmF1bHRfcG9saWN5LCBkZWZhdWx0X3BvbGljeSwgZGVmYXVsdF9wb2xpY3k+Ci17Ci1wdWJsaWM6Ci0gICB0eXBlZGVmIGRvbWFpbl9lcnJvcjw+IGRvbWFpbl9lcnJvcl90eXBlOwotICAgdHlwZWRlZiBwb2xlX2Vycm9yPD4gcG9sZV9lcnJvcl90eXBlOwotICAgdHlwZWRlZiBvdmVyZmxvd19lcnJvcjw+IG92ZXJmbG93X2Vycm9yX3R5cGU7Ci0gICB0eXBlZGVmIHVuZGVyZmxvd19lcnJvcjw+IHVuZGVyZmxvd19lcnJvcl90eXBlOwotICAgdHlwZWRlZiBkZW5vcm1fZXJyb3I8PiBkZW5vcm1fZXJyb3JfdHlwZTsKLSAgIHR5cGVkZWYgZXZhbHVhdGlvbl9lcnJvcjw+IGV2YWx1YXRpb25fZXJyb3JfdHlwZTsKLSAgIHR5cGVkZWYgcm91bmRpbmdfZXJyb3I8PiByb3VuZGluZ19lcnJvcl90eXBlOwotICAgdHlwZWRlZiBpbmRldGVybWluYXRlX3Jlc3VsdF9lcnJvcjw+IGluZGV0ZXJtaW5hdGVfcmVzdWx0X2Vycm9yX3R5cGU7Ci0jaWYgTkROQk9PU1RfTUFUSF9ESUdJVFMxMF9QT0xJQ1kgPT0gMAotICAgdHlwZWRlZiBkaWdpdHMyPD4gcHJlY2lzaW9uX3R5cGU7Ci0jZWxzZQotICAgdHlwZWRlZiBkZXRhaWw6OnByZWNpc2lvbjxkaWdpdHMxMDw+LCBkaWdpdHMyPD4gPjo6dHlwZSBwcmVjaXNpb25fdHlwZTsKLSNlbmRpZgotICAgdHlwZWRlZiBwcm9tb3RlX2Zsb2F0PD4gcHJvbW90ZV9mbG9hdF90eXBlOwotICAgdHlwZWRlZiBwcm9tb3RlX2RvdWJsZTw+IHByb21vdGVfZG91YmxlX3R5cGU7Ci0gICB0eXBlZGVmIGRpc2NyZXRlX3F1YW50aWxlPD4gZGlzY3JldGVfcXVhbnRpbGVfdHlwZTsKLSAgIHR5cGVkZWYgYXNzZXJ0X3VuZGVmaW5lZDw+IGFzc2VydF91bmRlZmluZWRfdHlwZTsKLSAgIHR5cGVkZWYgbWF4X3Nlcmllc19pdGVyYXRpb25zPD4gbWF4X3Nlcmllc19pdGVyYXRpb25zX3R5cGU7Ci0gICB0eXBlZGVmIG1heF9yb290X2l0ZXJhdGlvbnM8PiBtYXhfcm9vdF9pdGVyYXRpb25zX3R5cGU7Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IHBvbGljeTxkZXRhaWw6OmZvcndhcmRpbmdfYXJnMSwgZGV0YWlsOjpmb3J3YXJkaW5nX2FyZzIsIGRlZmF1bHRfcG9saWN5LCBkZWZhdWx0X3BvbGljeSwgZGVmYXVsdF9wb2xpY3ksIGRlZmF1bHRfcG9saWN5LCBkZWZhdWx0X3BvbGljeSwgZGVmYXVsdF9wb2xpY3ksIGRlZmF1bHRfcG9saWN5LCBkZWZhdWx0X3BvbGljeSwgZGVmYXVsdF9wb2xpY3k+Ci17Ci1wdWJsaWM6Ci0gICB0eXBlZGVmIGRvbWFpbl9lcnJvcjw+IGRvbWFpbl9lcnJvcl90eXBlOwotICAgdHlwZWRlZiBwb2xlX2Vycm9yPD4gcG9sZV9lcnJvcl90eXBlOwotICAgdHlwZWRlZiBvdmVyZmxvd19lcnJvcjw+IG92ZXJmbG93X2Vycm9yX3R5cGU7Ci0gICB0eXBlZGVmIHVuZGVyZmxvd19lcnJvcjw+IHVuZGVyZmxvd19lcnJvcl90eXBlOwotICAgdHlwZWRlZiBkZW5vcm1fZXJyb3I8PiBkZW5vcm1fZXJyb3JfdHlwZTsKLSAgIHR5cGVkZWYgZXZhbHVhdGlvbl9lcnJvcjw+IGV2YWx1YXRpb25fZXJyb3JfdHlwZTsKLSAgIHR5cGVkZWYgcm91bmRpbmdfZXJyb3I8PiByb3VuZGluZ19lcnJvcl90eXBlOwotICAgdHlwZWRlZiBpbmRldGVybWluYXRlX3Jlc3VsdF9lcnJvcjw+IGluZGV0ZXJtaW5hdGVfcmVzdWx0X2Vycm9yX3R5cGU7Ci0jaWYgTkROQk9PU1RfTUFUSF9ESUdJVFMxMF9QT0xJQ1kgPT0gMAotICAgdHlwZWRlZiBkaWdpdHMyPD4gcHJlY2lzaW9uX3R5cGU7Ci0jZWxzZQotICAgdHlwZWRlZiBkZXRhaWw6OnByZWNpc2lvbjxkaWdpdHMxMDw+LCBkaWdpdHMyPD4gPjo6dHlwZSBwcmVjaXNpb25fdHlwZTsKLSNlbmRpZgotICAgdHlwZWRlZiBwcm9tb3RlX2Zsb2F0PGZhbHNlPiBwcm9tb3RlX2Zsb2F0X3R5cGU7Ci0gICB0eXBlZGVmIHByb21vdGVfZG91YmxlPGZhbHNlPiBwcm9tb3RlX2RvdWJsZV90eXBlOwotICAgdHlwZWRlZiBkaXNjcmV0ZV9xdWFudGlsZTw+IGRpc2NyZXRlX3F1YW50aWxlX3R5cGU7Ci0gICB0eXBlZGVmIGFzc2VydF91bmRlZmluZWQ8PiBhc3NlcnRfdW5kZWZpbmVkX3R5cGU7Ci0gICB0eXBlZGVmIG1heF9zZXJpZXNfaXRlcmF0aW9uczw+IG1heF9zZXJpZXNfaXRlcmF0aW9uc190eXBlOwotICAgdHlwZWRlZiBtYXhfcm9vdF9pdGVyYXRpb25zPD4gbWF4X3Jvb3RfaXRlcmF0aW9uc190eXBlOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFBvbGljeSwgCi0gICAgICAgICAgY2xhc3MgQTEgPSBkZWZhdWx0X3BvbGljeSwgCi0gICAgICAgICAgY2xhc3MgQTIgPSBkZWZhdWx0X3BvbGljeSwgCi0gICAgICAgICAgY2xhc3MgQTMgPSBkZWZhdWx0X3BvbGljeSwKLSAgICAgICAgICBjbGFzcyBBNCA9IGRlZmF1bHRfcG9saWN5LAotICAgICAgICAgIGNsYXNzIEE1ID0gZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgY2xhc3MgQTYgPSBkZWZhdWx0X3BvbGljeSwKLSAgICAgICAgICBjbGFzcyBBNyA9IGRlZmF1bHRfcG9saWN5LAotICAgICAgICAgIGNsYXNzIEE4ID0gZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgY2xhc3MgQTkgPSBkZWZhdWx0X3BvbGljeSwKLSAgICAgICAgICBjbGFzcyBBMTAgPSBkZWZhdWx0X3BvbGljeSwKLSAgICAgICAgICBjbGFzcyBBMTEgPSBkZWZhdWx0X3BvbGljeSwKLSAgICAgICAgICBjbGFzcyBBMTIgPSBkZWZhdWx0X3BvbGljeSwKLSAgICAgICAgICBjbGFzcyBBMTMgPSBkZWZhdWx0X3BvbGljeT4KLXN0cnVjdCBub3JtYWxpc2UKLXsKLXByaXZhdGU6Ci0gICB0eXBlZGVmIG1wbDo6bGlzdDxBMSxBMixBMyxBNCxBNSxBNixBNyxBOCxBOSxBMTAsQTExLEExMixBMTM+IGFyZ19saXN0OwotICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmZpbmRfYXJnPGFyZ19saXN0LCBpc19kb21haW5fZXJyb3I8bXBsOjpfMT4sIHR5cGVuYW1lIFBvbGljeTo6ZG9tYWluX2Vycm9yX3R5cGUgPjo6dHlwZSBkb21haW5fZXJyb3JfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmaW5kX2FyZzxhcmdfbGlzdCwgaXNfcG9sZV9lcnJvcjxtcGw6Ol8xPiwgdHlwZW5hbWUgUG9saWN5Ojpwb2xlX2Vycm9yX3R5cGUgPjo6dHlwZSBwb2xlX2Vycm9yX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6ZmluZF9hcmc8YXJnX2xpc3QsIGlzX292ZXJmbG93X2Vycm9yPG1wbDo6XzE+LCB0eXBlbmFtZSBQb2xpY3k6Om92ZXJmbG93X2Vycm9yX3R5cGUgPjo6dHlwZSBvdmVyZmxvd19lcnJvcl90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmZpbmRfYXJnPGFyZ19saXN0LCBpc191bmRlcmZsb3dfZXJyb3I8bXBsOjpfMT4sIHR5cGVuYW1lIFBvbGljeTo6dW5kZXJmbG93X2Vycm9yX3R5cGUgPjo6dHlwZSB1bmRlcmZsb3dfZXJyb3JfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmaW5kX2FyZzxhcmdfbGlzdCwgaXNfZGVub3JtX2Vycm9yPG1wbDo6XzE+LCB0eXBlbmFtZSBQb2xpY3k6OmRlbm9ybV9lcnJvcl90eXBlID46OnR5cGUgZGVub3JtX2Vycm9yX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6ZmluZF9hcmc8YXJnX2xpc3QsIGlzX2V2YWx1YXRpb25fZXJyb3I8bXBsOjpfMT4sIHR5cGVuYW1lIFBvbGljeTo6ZXZhbHVhdGlvbl9lcnJvcl90eXBlID46OnR5cGUgZXZhbHVhdGlvbl9lcnJvcl90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmZpbmRfYXJnPGFyZ19saXN0LCBpc19yb3VuZGluZ19lcnJvcjxtcGw6Ol8xPiwgdHlwZW5hbWUgUG9saWN5Ojpyb3VuZGluZ19lcnJvcl90eXBlID46OnR5cGUgcm91bmRpbmdfZXJyb3JfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmaW5kX2FyZzxhcmdfbGlzdCwgaXNfaW5kZXRlcm1pbmF0ZV9yZXN1bHRfZXJyb3I8bXBsOjpfMT4sIHR5cGVuYW1lIFBvbGljeTo6aW5kZXRlcm1pbmF0ZV9yZXN1bHRfZXJyb3JfdHlwZSA+Ojp0eXBlIGluZGV0ZXJtaW5hdGVfcmVzdWx0X2Vycm9yX3R5cGU7Ci0gICAvLwotICAgLy8gTm93IHdvcmsgb3V0IHRoZSBwcmVjaXNpb246Ci0gICAvLwotICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmZpbmRfYXJnPGFyZ19saXN0LCBpc19kaWdpdHMxMDxtcGw6Ol8xPiwgZGlnaXRzMTA8PiA+Ojp0eXBlIGRpZ2l0czEwX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6ZmluZF9hcmc8YXJnX2xpc3QsIGlzX2RpZ2l0czI8bXBsOjpfMT4sIHR5cGVuYW1lIFBvbGljeTo6cHJlY2lzaW9uX3R5cGUgPjo6dHlwZSBiaXRzX3ByZWNpc2lvbl90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnByZWNpc2lvbjxkaWdpdHMxMF90eXBlLCBiaXRzX3ByZWNpc2lvbl90eXBlPjo6dHlwZSBwcmVjaXNpb25fdHlwZTsKLSAgIC8vCi0gICAvLyBJbnRlcm5hbCBwcm9tb3Rpb246Ci0gICAvLwotICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmZpbmRfYXJnPGFyZ19saXN0LCBpc19wcm9tb3RlX2Zsb2F0PG1wbDo6XzE+LCB0eXBlbmFtZSBQb2xpY3k6OnByb21vdGVfZmxvYXRfdHlwZSA+Ojp0eXBlIHByb21vdGVfZmxvYXRfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmaW5kX2FyZzxhcmdfbGlzdCwgaXNfcHJvbW90ZV9kb3VibGU8bXBsOjpfMT4sIHR5cGVuYW1lIFBvbGljeTo6cHJvbW90ZV9kb3VibGVfdHlwZSA+Ojp0eXBlIHByb21vdGVfZG91YmxlX3R5cGU7Ci0gICAvLwotICAgLy8gRGlzY3JldGUgcXVhbnRpbGVzOgotICAgLy8KLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmaW5kX2FyZzxhcmdfbGlzdCwgaXNfZGlzY3JldGVfcXVhbnRpbGU8bXBsOjpfMT4sIHR5cGVuYW1lIFBvbGljeTo6ZGlzY3JldGVfcXVhbnRpbGVfdHlwZSA+Ojp0eXBlIGRpc2NyZXRlX3F1YW50aWxlX3R5cGU7Ci0gICAvLwotICAgLy8gTWF0aGVtYXRpY2FsbHkgdW5kZWZpbmVkIHByb3BlcnRpZXM6Ci0gICAvLwotICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmZpbmRfYXJnPGFyZ19saXN0LCBpc19hc3NlcnRfdW5kZWZpbmVkPG1wbDo6XzE+LCB0eXBlbmFtZSBQb2xpY3k6OmFzc2VydF91bmRlZmluZWRfdHlwZSA+Ojp0eXBlIGFzc2VydF91bmRlZmluZWRfdHlwZTsKLSAgIC8vCi0gICAvLyBNYXggaXRlcmF0aW9uczoKLSAgIC8vCi0gICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6ZmluZF9hcmc8YXJnX2xpc3QsIGlzX21heF9zZXJpZXNfaXRlcmF0aW9uczxtcGw6Ol8xPiwgdHlwZW5hbWUgUG9saWN5OjptYXhfc2VyaWVzX2l0ZXJhdGlvbnNfdHlwZT46OnR5cGUgbWF4X3Nlcmllc19pdGVyYXRpb25zX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6ZmluZF9hcmc8YXJnX2xpc3QsIGlzX21heF9yb290X2l0ZXJhdGlvbnM8bXBsOjpfMT4sIHR5cGVuYW1lIFBvbGljeTo6bWF4X3Jvb3RfaXRlcmF0aW9uc190eXBlPjo6dHlwZSBtYXhfcm9vdF9pdGVyYXRpb25zX3R5cGU7Ci0gICAvLwotICAgLy8gRGVmaW5lIGEgdHlwZWxpc3Qgb2YgdGhlIHBvbGljaWVzOgotICAgLy8KLSAgIHR5cGVkZWYgbXBsOjp2ZWN0b3I8Ci0gICAgICBkb21haW5fZXJyb3JfdHlwZSwKLSAgICAgIHBvbGVfZXJyb3JfdHlwZSwKLSAgICAgIG92ZXJmbG93X2Vycm9yX3R5cGUsCi0gICAgICB1bmRlcmZsb3dfZXJyb3JfdHlwZSwKLSAgICAgIGRlbm9ybV9lcnJvcl90eXBlLAotICAgICAgZXZhbHVhdGlvbl9lcnJvcl90eXBlLAotICAgICAgcm91bmRpbmdfZXJyb3JfdHlwZSwKLSAgICAgIGluZGV0ZXJtaW5hdGVfcmVzdWx0X2Vycm9yX3R5cGUsCi0gICAgICBwcmVjaXNpb25fdHlwZSwKLSAgICAgIHByb21vdGVfZmxvYXRfdHlwZSwKLSAgICAgIHByb21vdGVfZG91YmxlX3R5cGUsCi0gICAgICBkaXNjcmV0ZV9xdWFudGlsZV90eXBlLAotICAgICAgYXNzZXJ0X3VuZGVmaW5lZF90eXBlLAotICAgICAgbWF4X3Nlcmllc19pdGVyYXRpb25zX3R5cGUsCi0gICAgICBtYXhfcm9vdF9pdGVyYXRpb25zX3R5cGU+IHJlc3VsdF9saXN0OwotICAgLy8KLSAgIC8vIFJlbW92ZSBhbGwgdGhlIHBvbGljaWVzIHRoYXQgYXJlIHRoZSBzYW1lIGFzIHRoZSBkZWZhdWx0OgotICAgLy8KLSAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpyZW1vdmVfaWY8cmVzdWx0X2xpc3QsIGRldGFpbDo6aXNfZGVmYXVsdF9wb2xpY3k8bXBsOjpfPiA+Ojp0eXBlIHJlZHVjZWRfbGlzdDsKLSAgIC8vCi0gICAvLyBQYWQgb3V0IHRoZSBsaXN0IHdpdGggZGVmYXVsdHM6Ci0gICAvLwotICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmFwcGVuZF9OPHJlZHVjZWRfbGlzdCwgZGVmYXVsdF9wb2xpY3ksICgxNCAtIDo6bmRuYm9vc3Q6Om1wbDo6c2l6ZTxyZWR1Y2VkX2xpc3Q+Ojp2YWx1ZSk+Ojp0eXBlIHJlc3VsdF90eXBlOwotcHVibGljOgotICAgdHlwZWRlZiBwb2xpY3k8Ci0gICAgICB0eXBlbmFtZSBtcGw6OmF0PHJlc3VsdF90eXBlLCBtcGw6OmludF88MD4gPjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIG1wbDo6YXQ8cmVzdWx0X3R5cGUsIG1wbDo6aW50XzwxPiA+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgbXBsOjphdDxyZXN1bHRfdHlwZSwgbXBsOjppbnRfPDI+ID46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBtcGw6OmF0PHJlc3VsdF90eXBlLCBtcGw6OmludF88Mz4gPjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIG1wbDo6YXQ8cmVzdWx0X3R5cGUsIG1wbDo6aW50Xzw0PiA+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgbXBsOjphdDxyZXN1bHRfdHlwZSwgbXBsOjppbnRfPDU+ID46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBtcGw6OmF0PHJlc3VsdF90eXBlLCBtcGw6OmludF88Nj4gPjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIG1wbDo6YXQ8cmVzdWx0X3R5cGUsIG1wbDo6aW50Xzw3PiA+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgbXBsOjphdDxyZXN1bHRfdHlwZSwgbXBsOjppbnRfPDg+ID46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBtcGw6OmF0PHJlc3VsdF90eXBlLCBtcGw6OmludF88OT4gPjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIG1wbDo6YXQ8cmVzdWx0X3R5cGUsIG1wbDo6aW50XzwxMD4gPjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIG1wbDo6YXQ8cmVzdWx0X3R5cGUsIG1wbDo6aW50XzwxMT4gPjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIG1wbDo6YXQ8cmVzdWx0X3R5cGUsIG1wbDo6aW50XzwxMj4gPjo6dHlwZSA+IHR5cGU7Ci19OwotLy8KLS8vIEZ1bGwgc3BlY2lhbGlzYXRpb24gdG8gc3BlZWQgdXAgY29tcGlsYXRpb24gb2YgdGhlIGNvbW1vbiBjYXNlOgotLy8KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3Qgbm9ybWFsaXNlPHBvbGljeTw+LCAKLSAgICAgICAgICBwcm9tb3RlX2Zsb2F0PGZhbHNlPiwgCi0gICAgICAgICAgcHJvbW90ZV9kb3VibGU8ZmFsc2U+LCAKLSAgICAgICAgICBkaXNjcmV0ZV9xdWFudGlsZTw+LAotICAgICAgICAgIGFzc2VydF91bmRlZmluZWQ8PiwKLSAgICAgICAgICBkZWZhdWx0X3BvbGljeSwKLSAgICAgICAgICBkZWZhdWx0X3BvbGljeSwKLSAgICAgICAgICBkZWZhdWx0X3BvbGljeSwKLSAgICAgICAgICBkZWZhdWx0X3BvbGljeSwKLSAgICAgICAgICBkZWZhdWx0X3BvbGljeSwKLSAgICAgICAgICBkZWZhdWx0X3BvbGljeSwKLSAgICAgICAgICBkZWZhdWx0X3BvbGljeT4KLXsKLSAgIHR5cGVkZWYgcG9saWN5PGRldGFpbDo6Zm9yd2FyZGluZ19hcmcxLCBkZXRhaWw6OmZvcndhcmRpbmdfYXJnMj4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3Qgbm9ybWFsaXNlPHBvbGljeTxkZXRhaWw6OmZvcndhcmRpbmdfYXJnMSwgZGV0YWlsOjpmb3J3YXJkaW5nX2FyZzI+LAotICAgICAgICAgIHByb21vdGVfZmxvYXQ8ZmFsc2U+LAotICAgICAgICAgIHByb21vdGVfZG91YmxlPGZhbHNlPiwKLSAgICAgICAgICBkaXNjcmV0ZV9xdWFudGlsZTw+LAotICAgICAgICAgIGFzc2VydF91bmRlZmluZWQ8PiwKLSAgICAgICAgICBkZWZhdWx0X3BvbGljeSwKLSAgICAgICAgICBkZWZhdWx0X3BvbGljeSwKLSAgICAgICAgICBkZWZhdWx0X3BvbGljeSwKLSAgICAgICAgICBkZWZhdWx0X3BvbGljeSwKLSAgICAgICAgICBkZWZhdWx0X3BvbGljeSwKLSAgICAgICAgICBkZWZhdWx0X3BvbGljeSwKLSAgICAgICAgICBkZWZhdWx0X3BvbGljeT4KLXsKLSAgIHR5cGVkZWYgcG9saWN5PGRldGFpbDo6Zm9yd2FyZGluZ19hcmcxLCBkZXRhaWw6OmZvcndhcmRpbmdfYXJnMj4gdHlwZTsKLX07Ci0KLWlubGluZSBwb2xpY3k8PiBtYWtlX3BvbGljeSgpCi17IHJldHVybiBwb2xpY3k8PigpOyB9Ci0KLXRlbXBsYXRlIDxjbGFzcyBBMT4KLWlubGluZSB0eXBlbmFtZSBub3JtYWxpc2U8cG9saWN5PD4sIEExPjo6dHlwZSBtYWtlX3BvbGljeShjb25zdCBBMSYpCi17IAotICAgdHlwZWRlZiB0eXBlbmFtZSBub3JtYWxpc2U8cG9saWN5PD4sIEExPjo6dHlwZSByZXN1bHRfdHlwZTsKLSAgIHJldHVybiByZXN1bHRfdHlwZSgpOyAKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEExLCBjbGFzcyBBMj4KLWlubGluZSB0eXBlbmFtZSBub3JtYWxpc2U8cG9saWN5PD4sIEExLCBBMj46OnR5cGUgbWFrZV9wb2xpY3koY29uc3QgQTEmLCBjb25zdCBBMiYpCi17IAotICAgdHlwZWRlZiB0eXBlbmFtZSBub3JtYWxpc2U8cG9saWN5PD4sIEExLCBBMj46OnR5cGUgcmVzdWx0X3R5cGU7Ci0gICByZXR1cm4gcmVzdWx0X3R5cGUoKTsgCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzPgotaW5saW5lIHR5cGVuYW1lIG5vcm1hbGlzZTxwb2xpY3k8PiwgQTEsIEEyLCBBMz46OnR5cGUgbWFrZV9wb2xpY3koY29uc3QgQTEmLCBjb25zdCBBMiYsIGNvbnN0IEEzJikKLXsgCi0gICB0eXBlZGVmIHR5cGVuYW1lIG5vcm1hbGlzZTxwb2xpY3k8PiwgQTEsIEEyLCBBMz46OnR5cGUgcmVzdWx0X3R5cGU7Ci0gICByZXR1cm4gcmVzdWx0X3R5cGUoKTsgCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBND4KLWlubGluZSB0eXBlbmFtZSBub3JtYWxpc2U8cG9saWN5PD4sIEExLCBBMiwgQTMsIEE0Pjo6dHlwZSBtYWtlX3BvbGljeShjb25zdCBBMSYsIGNvbnN0IEEyJiwgY29uc3QgQTMmLCBjb25zdCBBNCYpCi17IAotICAgdHlwZWRlZiB0eXBlbmFtZSBub3JtYWxpc2U8cG9saWN5PD4sIEExLCBBMiwgQTMsIEE0Pjo6dHlwZSByZXN1bHRfdHlwZTsKLSAgIHJldHVybiByZXN1bHRfdHlwZSgpOyAKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNT4KLWlubGluZSB0eXBlbmFtZSBub3JtYWxpc2U8cG9saWN5PD4sIEExLCBBMiwgQTMsIEE0LCBBNT46OnR5cGUgbWFrZV9wb2xpY3koY29uc3QgQTEmLCBjb25zdCBBMiYsIGNvbnN0IEEzJiwgY29uc3QgQTQmLCBjb25zdCBBNSYpCi17IAotICAgdHlwZWRlZiB0eXBlbmFtZSBub3JtYWxpc2U8cG9saWN5PD4sIEExLCBBMiwgQTMsIEE0LCBBNT46OnR5cGUgcmVzdWx0X3R5cGU7Ci0gICByZXR1cm4gcmVzdWx0X3R5cGUoKTsgCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2PgotaW5saW5lIHR5cGVuYW1lIG5vcm1hbGlzZTxwb2xpY3k8PiwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNj46OnR5cGUgbWFrZV9wb2xpY3koY29uc3QgQTEmLCBjb25zdCBBMiYsIGNvbnN0IEEzJiwgY29uc3QgQTQmLCBjb25zdCBBNSYsIGNvbnN0IEE2JikKLXsgCi0gICB0eXBlZGVmIHR5cGVuYW1lIG5vcm1hbGlzZTxwb2xpY3k8PiwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNj46OnR5cGUgcmVzdWx0X3R5cGU7Ci0gICByZXR1cm4gcmVzdWx0X3R5cGUoKTsgCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNz4KLWlubGluZSB0eXBlbmFtZSBub3JtYWxpc2U8cG9saWN5PD4sIEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3Pjo6dHlwZSBtYWtlX3BvbGljeShjb25zdCBBMSYsIGNvbnN0IEEyJiwgY29uc3QgQTMmLCBjb25zdCBBNCYsIGNvbnN0IEE1JiwgY29uc3QgQTYmLCBjb25zdCBBNyYpCi17IAotICAgdHlwZWRlZiB0eXBlbmFtZSBub3JtYWxpc2U8cG9saWN5PD4sIEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3Pjo6dHlwZSByZXN1bHRfdHlwZTsKLSAgIHJldHVybiByZXN1bHRfdHlwZSgpOyAKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOD4KLWlubGluZSB0eXBlbmFtZSBub3JtYWxpc2U8cG9saWN5PD4sIEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOD46OnR5cGUgbWFrZV9wb2xpY3koY29uc3QgQTEmLCBjb25zdCBBMiYsIGNvbnN0IEEzJiwgY29uc3QgQTQmLCBjb25zdCBBNSYsIGNvbnN0IEE2JiwgY29uc3QgQTcmLCBjb25zdCBBOCYpCi17IAotICAgdHlwZWRlZiB0eXBlbmFtZSBub3JtYWxpc2U8cG9saWN5PD4sIEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOD46OnR5cGUgcmVzdWx0X3R5cGU7Ci0gICByZXR1cm4gcmVzdWx0X3R5cGUoKTsgCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTgsIGNsYXNzIEE5PgotaW5saW5lIHR5cGVuYW1lIG5vcm1hbGlzZTxwb2xpY3k8PiwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOT46OnR5cGUgbWFrZV9wb2xpY3koY29uc3QgQTEmLCBjb25zdCBBMiYsIGNvbnN0IEEzJiwgY29uc3QgQTQmLCBjb25zdCBBNSYsIGNvbnN0IEE2JiwgY29uc3QgQTcmLCBjb25zdCBBOCYsIGNvbnN0IEE5JikKLXsgCi0gICB0eXBlZGVmIHR5cGVuYW1lIG5vcm1hbGlzZTxwb2xpY3k8PiwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOT46OnR5cGUgcmVzdWx0X3R5cGU7Ci0gICByZXR1cm4gcmVzdWx0X3R5cGUoKTsgCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTgsIGNsYXNzIEE5LCBjbGFzcyBBMTA+Ci1pbmxpbmUgdHlwZW5hbWUgbm9ybWFsaXNlPHBvbGljeTw+LCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsIEE5LCBBMTA+Ojp0eXBlIG1ha2VfcG9saWN5KGNvbnN0IEExJiwgY29uc3QgQTImLCBjb25zdCBBMyYsIGNvbnN0IEE0JiwgY29uc3QgQTUmLCBjb25zdCBBNiYsIGNvbnN0IEE3JiwgY29uc3QgQTgmLCBjb25zdCBBOSYsIGNvbnN0IEExMCYpCi17IAotICAgdHlwZWRlZiB0eXBlbmFtZSBub3JtYWxpc2U8cG9saWN5PD4sIEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgQTksIEExMD46OnR5cGUgcmVzdWx0X3R5cGU7Ci0gICByZXR1cm4gcmVzdWx0X3R5cGUoKTsgCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTgsIGNsYXNzIEE5LCBjbGFzcyBBMTAsIGNsYXNzIEExMT4KLWlubGluZSB0eXBlbmFtZSBub3JtYWxpc2U8cG9saWN5PD4sIEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgQTksIEExMCwgQTExPjo6dHlwZSBtYWtlX3BvbGljeShjb25zdCBBMSYsIGNvbnN0IEEyJiwgY29uc3QgQTMmLCBjb25zdCBBNCYsIGNvbnN0IEE1JiwgY29uc3QgQTYmLCBjb25zdCBBNyYsIGNvbnN0IEE4JiwgY29uc3QgQTkmLCBjb25zdCBBMTAmLCBjb25zdCBBMTEmKQotewotICAgdHlwZWRlZiB0eXBlbmFtZSBub3JtYWxpc2U8cG9saWN5PD4sIEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgQTksIEExMCwgQTExPjo6dHlwZSByZXN1bHRfdHlwZTsKLSAgIHJldHVybiByZXN1bHRfdHlwZSgpOwotfQotCi0vLwotLy8gVHJhaXRzIGNsYXNzIHRvIGhhbmRsZSBpbnRlcm5hbCBwcm9tb3Rpb246Ci0vLwotdGVtcGxhdGUgPGNsYXNzIFJlYWwsIGNsYXNzIFBvbGljeT4KLXN0cnVjdCBldmFsdWF0aW9uCi17Ci0gICB0eXBlZGVmIFJlYWwgdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBQb2xpY3k+Ci1zdHJ1Y3QgZXZhbHVhdGlvbjxmbG9hdCwgUG9saWN5PgotewotICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzx0eXBlbmFtZSBQb2xpY3k6OnByb21vdGVfZmxvYXRfdHlwZSwgZG91YmxlLCBmbG9hdD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBQb2xpY3k+Ci1zdHJ1Y3QgZXZhbHVhdGlvbjxkb3VibGUsIFBvbGljeT4KLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl88dHlwZW5hbWUgUG9saWN5Ojpwcm9tb3RlX2RvdWJsZV90eXBlLCBsb25nIGRvdWJsZSwgZG91YmxlPjo6dHlwZSB0eXBlOwotfTsKLQotI2lmZGVmIE5ETkJPT1NUX05PX0xJTUlUU19DT01QSUxFX1RJTUVfQ09OU1RBTlRTCi0KLXRlbXBsYXRlIDxjbGFzcyBSZWFsPgotc3RydWN0IGJhc2ljX2RpZ2l0cyA6IHB1YmxpYyBtcGw6OmludF88MD57IH07Ci10ZW1wbGF0ZSA8Pgotc3RydWN0IGJhc2ljX2RpZ2l0czxmbG9hdD4gOiBwdWJsaWMgbXBsOjppbnRfPEZMVF9NQU5UX0RJRz57IH07Ci10ZW1wbGF0ZSA8Pgotc3RydWN0IGJhc2ljX2RpZ2l0czxkb3VibGU+IDogcHVibGljIG1wbDo6aW50XzxEQkxfTUFOVF9ESUc+eyB9OwotdGVtcGxhdGUgPD4KLXN0cnVjdCBiYXNpY19kaWdpdHM8bG9uZyBkb3VibGU+IDogcHVibGljIG1wbDo6aW50XzxMREJMX01BTlRfRElHPnsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFJlYWwsIGNsYXNzIFBvbGljeT4KLXN0cnVjdCBwcmVjaXNpb24KLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoIDo6c3RkOjpudW1lcmljX2xpbWl0czxSZWFsPjo6cmFkaXggPT0gMik7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIFBvbGljeTo6cHJlY2lzaW9uX3R5cGUgcHJlY2lzaW9uX3R5cGU7Ci0gICB0eXBlZGVmIGJhc2ljX2RpZ2l0czxSZWFsPiBkaWdpdHNfdDsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl88Ci0gICAgICBtcGw6OmVxdWFsX3RvPGRpZ2l0c190LCBtcGw6OmludF88MD4gPiwKLSAgICAgIC8vIFBvc3NpYmx5IHVua25vd24gcHJlY2lzaW9uOgotICAgICAgcHJlY2lzaW9uX3R5cGUsCi0gICAgICB0eXBlbmFtZSBtcGw6OmlmXzwKLSAgICAgICAgIG1wbDo6b3JfPG1wbDo6bGVzc19lcXVhbDxkaWdpdHNfdCwgcHJlY2lzaW9uX3R5cGU+LCBtcGw6Omxlc3NfZXF1YWw8cHJlY2lzaW9uX3R5cGUsIG1wbDo6aW50XzwwPiA+ID4sCi0gICAgICAgICAvLyBEZWZhdWx0IGNhc2UsIGZ1bGwgcHJlY2lzaW9uIGZvciBSZWFsVHlwZToKLSAgICAgICAgIGRpZ2l0czI8IDo6c3RkOjpudW1lcmljX2xpbWl0czxSZWFsPjo6ZGlnaXRzPiwKLSAgICAgICAgIC8vIFVzZXIgY3VzdG9taXNlZCBwcmVjaXNpb246Ci0gICAgICAgICBwcmVjaXNpb25fdHlwZQotICAgICAgPjo6dHlwZQotICAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFBvbGljeT4KLXN0cnVjdCBwcmVjaXNpb248ZmxvYXQsIFBvbGljeT4KLXsKLSAgIHR5cGVkZWYgZGlnaXRzMjxGTFRfTUFOVF9ESUc+IHR5cGU7Ci19OwotdGVtcGxhdGUgPGNsYXNzIFBvbGljeT4KLXN0cnVjdCBwcmVjaXNpb248ZG91YmxlLCBQb2xpY3k+Ci17Ci0gICB0eXBlZGVmIGRpZ2l0czI8REJMX01BTlRfRElHPiB0eXBlOwotfTsKLXRlbXBsYXRlIDxjbGFzcyBQb2xpY3k+Ci1zdHJ1Y3QgcHJlY2lzaW9uPGxvbmcgZG91YmxlLCBQb2xpY3k+Ci17Ci0gICB0eXBlZGVmIGRpZ2l0czI8TERCTF9NQU5UX0RJRz4gdHlwZTsKLX07Ci0KLSNlbHNlCi0KLXRlbXBsYXRlIDxjbGFzcyBSZWFsLCBjbGFzcyBQb2xpY3k+Ci1zdHJ1Y3QgcHJlY2lzaW9uCi17Ci0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCg6OnN0ZDo6bnVtZXJpY19saW1pdHM8UmVhbD46OnJhZGl4ID09IDIpIHx8ICgoOjpzdGQ6Om51bWVyaWNfbGltaXRzPFJlYWw+Ojppc19zcGVjaWFsaXplZCA9PSAwKSB8fCAoOjpzdGQ6Om51bWVyaWNfbGltaXRzPFJlYWw+OjpkaWdpdHMgPT0gMCkpKTsKLSNpZm5kZWYgX19CT1JMQU5EQ19fCi0gICB0eXBlZGVmIHR5cGVuYW1lIFBvbGljeTo6cHJlY2lzaW9uX3R5cGUgcHJlY2lzaW9uX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfYzwKLSAgICAgICgoOjpzdGQ6Om51bWVyaWNfbGltaXRzPFJlYWw+Ojppc19zcGVjaWFsaXplZCA9PSAwKSB8fCAoOjpzdGQ6Om51bWVyaWNfbGltaXRzPFJlYWw+OjpkaWdpdHMgPT0gMCkpLAotICAgICAgLy8gUG9zc2libHkgdW5rbm93biBwcmVjaXNpb246Ci0gICAgICBwcmVjaXNpb25fdHlwZSwKLSAgICAgIHR5cGVuYW1lIG1wbDo6aWZfYzwKLSAgICAgICAgICgoOjpzdGQ6Om51bWVyaWNfbGltaXRzPFJlYWw+OjpkaWdpdHMgPD0gcHJlY2lzaW9uX3R5cGU6OnZhbHVlKSAKLSAgICAgICAgIHx8IChQb2xpY3k6OnByZWNpc2lvbl90eXBlOjp2YWx1ZSA8PSAwKSksCi0gICAgICAgICAvLyBEZWZhdWx0IGNhc2UsIGZ1bGwgcHJlY2lzaW9uIGZvciBSZWFsVHlwZToKLSAgICAgICAgIGRpZ2l0czI8IDo6c3RkOjpudW1lcmljX2xpbWl0czxSZWFsPjo6ZGlnaXRzPiwKLSAgICAgICAgIC8vIFVzZXIgY3VzdG9taXNlZCBwcmVjaXNpb246Ci0gICAgICAgICBwcmVjaXNpb25fdHlwZQotICAgICAgPjo6dHlwZQotICAgPjo6dHlwZSB0eXBlOwotI2Vsc2UKLSAgIHR5cGVkZWYgdHlwZW5hbWUgUG9saWN5OjpwcmVjaXNpb25fdHlwZSBwcmVjaXNpb25fdHlwZTsKLSAgIHR5cGVkZWYgbXBsOjppbnRfPCA6OnN0ZDo6bnVtZXJpY19saW1pdHM8UmVhbD46OmRpZ2l0cz4gZGlnaXRzX3Q7Ci0gICB0eXBlZGVmIG1wbDo6Ym9vbF88IDo6c3RkOjpudW1lcmljX2xpbWl0czxSZWFsPjo6aXNfc3BlY2lhbGl6ZWQ+IHNwZWNfdDsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl88Ci0gICAgICBtcGw6Om9yXzxtcGw6OmVxdWFsX3RvPHNwZWNfdCwgbXBsOjpmYWxzZV8+LCBtcGw6OmVxdWFsX3RvPGRpZ2l0c190LCBtcGw6OmludF88MD4gPiA+LAotICAgICAgLy8gUG9zc2libHkgdW5rbm93biBwcmVjaXNpb246Ci0gICAgICBwcmVjaXNpb25fdHlwZSwKLSAgICAgIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgICAgbXBsOjpvcl88bXBsOjpsZXNzX2VxdWFsPGRpZ2l0c190LCBwcmVjaXNpb25fdHlwZT4sIG1wbDo6bGVzc19lcXVhbDxwcmVjaXNpb25fdHlwZSwgbXBsOjppbnRfPDA+ID4gPiwKLSAgICAgICAgIC8vIERlZmF1bHQgY2FzZSwgZnVsbCBwcmVjaXNpb24gZm9yIFJlYWxUeXBlOgotICAgICAgICAgZGlnaXRzMjwgOjpzdGQ6Om51bWVyaWNfbGltaXRzPFJlYWw+OjpkaWdpdHM+LAotICAgICAgICAgLy8gVXNlciBjdXN0b21pc2VkIHByZWNpc2lvbjoKLSAgICAgICAgIHByZWNpc2lvbl90eXBlCi0gICAgICA+Ojp0eXBlCi0gICA+Ojp0eXBlIHR5cGU7Ci0jZW5kaWYKLX07Ci0KLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTUFUSF9VU0VfRkxPQVQxMjgKLQotdGVtcGxhdGUgPGNsYXNzIFBvbGljeT4KLXN0cnVjdCBwcmVjaXNpb248X19mbG9hdDEyOCwgUG9saWN5PgotewotICAgdHlwZWRlZiBtcGw6OmludF88MTEzPiB0eXBlOwotfTsKLQotI2VuZGlmCi0KLW5hbWVzcGFjZSBkZXRhaWx7Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci1pbmxpbmUgaW50IGRpZ2l0c19pbXAobXBsOjp0cnVlXyBjb25zdCYpCi17Ci0jaWZuZGVmIE5ETkJPT1NUX05PX0xJTUlUU19DT01QSUxFX1RJTUVfQ09OU1RBTlRTCi0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCA6OnN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmlzX3NwZWNpYWxpemVkKTsKLSNlbHNlCi0gICBORE5CT09TVF9BU1NFUlQoOjpzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojppc19zcGVjaWFsaXplZCk7Ci0jZW5kaWYKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnBvbGljaWVzOjpwcmVjaXNpb248VCwgUG9saWN5Pjo6dHlwZSBwX3Q7Ci0gICByZXR1cm4gcF90Ojp2YWx1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLWlubGluZSBpbnQgZGlnaXRzX2ltcChtcGw6OmZhbHNlXyBjb25zdCYpCi17Ci0gICByZXR1cm4gdG9vbHM6OmRpZ2l0czxUPigpOwotfQotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLWlubGluZSBpbnQgZGlnaXRzKE5ETkJPT1NUX01BVEhfRVhQTElDSVRfVEVNUExBVEVfVFlQRShUKSkKLXsKLSAgIHR5cGVkZWYgbXBsOjpib29sXzwgc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfc3BlY2lhbGl6ZWQgPiB0YWdfdHlwZTsKLSAgIHJldHVybiBkZXRhaWw6OmRpZ2l0c19pbXA8VCwgUG9saWN5Pih0YWdfdHlwZSgpKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFBvbGljeT4KLWlubGluZSB1bnNpZ25lZCBsb25nIGdldF9tYXhfc2VyaWVzX2l0ZXJhdGlvbnMoKQotewotICAgdHlwZWRlZiB0eXBlbmFtZSBQb2xpY3k6Om1heF9zZXJpZXNfaXRlcmF0aW9uc190eXBlIGl0ZXJfdHlwZTsKLSAgIHJldHVybiBpdGVyX3R5cGU6OnZhbHVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgUG9saWN5PgotaW5saW5lIHVuc2lnbmVkIGxvbmcgZ2V0X21heF9yb290X2l0ZXJhdGlvbnMoKQotewotICAgdHlwZWRlZiB0eXBlbmFtZSBQb2xpY3k6Om1heF9yb290X2l0ZXJhdGlvbnNfdHlwZSBpdGVyX3R5cGU7Ci0gICByZXR1cm4gaXRlcl90eXBlOjp2YWx1ZTsKLX0KLQotbmFtZXNwYWNlIGRldGFpbHsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIERpZ2l0cywgY2xhc3MgU21hbGwsIGNsYXNzIERlZmF1bHQ+Ci1zdHJ1Y3Qgc2VyaWVzX2ZhY3Rvcl9jYWxjCi17Ci0gICBzdGF0aWMgVCBnZXQoKQotICAgewotICAgICAgcmV0dXJuIGxkZXhwKFQoMS4wKSwgMSAtIERpZ2l0czo6dmFsdWUpOwotICAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIERpZ2l0cz4KLXN0cnVjdCBzZXJpZXNfZmFjdG9yX2NhbGM8VCwgRGlnaXRzLCBtcGw6OnRydWVfLCBtcGw6OnRydWVfPgotewotICAgc3RhdGljIFQgZ2V0KCkKLSAgIHsKLSAgICAgIHJldHVybiBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OmVwc2lsb248VD4oKTsKLSAgIH0KLX07Ci10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRGlnaXRzPgotc3RydWN0IHNlcmllc19mYWN0b3JfY2FsYzxULCBEaWdpdHMsIG1wbDo6dHJ1ZV8sIG1wbDo6ZmFsc2VfPgotewotICAgc3RhdGljIFQgZ2V0KCkKLSAgIHsKLSAgICAgIHN0YXRpYyBjb25zdCBuZG5ib29zdDo6dWludG1heF90IHYgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6dWludG1heF90PigxdSkgPDwgKERpZ2l0czo6dmFsdWUgLSAxKTsKLSAgICAgIHJldHVybiAxIC8gc3RhdGljX2Nhc3Q8VD4odik7Ci0gICB9Ci19OwotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIERpZ2l0cz4KLXN0cnVjdCBzZXJpZXNfZmFjdG9yX2NhbGM8VCwgRGlnaXRzLCBtcGw6OmZhbHNlXywgbXBsOjp0cnVlXz4KLXsKLSAgIHN0YXRpYyBUIGdldCgpCi0gICB7Ci0gICAgICByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjplcHNpbG9uPFQ+KCk7Ci0gICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotaW5saW5lIFQgZ2V0X2Vwc2lsb25faW1wKG1wbDo6dHJ1ZV8gY29uc3QmKQotewotI2lmbmRlZiBORE5CT09TVF9OT19MSU1JVFNfQ09NUElMRV9USU1FX0NPTlNUQU5UUwotICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCggOjpzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojppc19zcGVjaWFsaXplZCk7Ci0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCA6OnN0ZDo6bnVtZXJpY19saW1pdHM8VD46OnJhZGl4ID09IDIpOwotI2Vsc2UKLSAgIE5ETkJPT1NUX0FTU0VSVCg6OnN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmlzX3NwZWNpYWxpemVkKTsKLSAgIE5ETkJPT1NUX0FTU0VSVCg6OnN0ZDo6bnVtZXJpY19saW1pdHM8VD46OnJhZGl4ID09IDIpOwotI2VuZGlmCi0gICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjpwb2xpY2llczo6cHJlY2lzaW9uPFQsIFBvbGljeT46OnR5cGUgcF90OwotICAgdHlwZWRlZiBtcGw6OmJvb2xfPHBfdDo6dmFsdWUgPD0gc3RkOjpudW1lcmljX2xpbWl0czxuZG5ib29zdDo6dWludG1heF90Pjo6ZGlnaXRzPiBpc19zbWFsbF9pbnQ7Ci0gICB0eXBlZGVmIG1wbDo6Ym9vbF88cF90Ojp2YWx1ZSA+PSBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjpkaWdpdHM+IGlzX2RlZmF1bHRfdmFsdWU7Ci0gICByZXR1cm4gc2VyaWVzX2ZhY3Rvcl9jYWxjPFQsIHBfdCwgaXNfc21hbGxfaW50LCBpc19kZWZhdWx0X3ZhbHVlPjo6Z2V0KCk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci1pbmxpbmUgVCBnZXRfZXBzaWxvbl9pbXAobXBsOjpmYWxzZV8gY29uc3QmKQotewotICAgcmV0dXJuIHRvb2xzOjplcHNpbG9uPFQ+KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotaW5saW5lIFQgZ2V0X2Vwc2lsb24oTkROQk9PU1RfTUFUSF9FWFBMSUNJVF9URU1QTEFURV9UWVBFKFQpKQotewotICAgdHlwZWRlZiBtcGw6OmJvb2xfPCAoc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfc3BlY2lhbGl6ZWQgJiYgKHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OnJhZGl4ID09IDIpKSA+IHRhZ190eXBlOwotICAgcmV0dXJuIGRldGFpbDo6Z2V0X2Vwc2lsb25faW1wPFQsIFBvbGljeT4odGFnX3R5cGUoKSk7Ci19Ci0KLW5hbWVzcGFjZSBkZXRhaWx7Ci0KLXRlbXBsYXRlIDxjbGFzcyBBMSwgCi0gICAgICAgICAgY2xhc3MgQTIsIAotICAgICAgICAgIGNsYXNzIEEzLAotICAgICAgICAgIGNsYXNzIEE0LAotICAgICAgICAgIGNsYXNzIEE1LAotICAgICAgICAgIGNsYXNzIEE2LAotICAgICAgICAgIGNsYXNzIEE3LAotICAgICAgICAgIGNsYXNzIEE4LAotICAgICAgICAgIGNsYXNzIEE5LAotICAgICAgICAgIGNsYXNzIEExMCwKLSAgICAgICAgICBjbGFzcyBBMTE+Ci1jaGFyIHRlc3RfaXNfcG9saWN5KGNvbnN0IHBvbGljeTxBMSxBMixBMyxBNCxBNSxBNixBNyxBOCxBOSxBMTAsQTExPiopOwotZG91YmxlIHRlc3RfaXNfcG9saWN5KC4uLik7Ci0KLXRlbXBsYXRlIDxjbGFzcyBQPgotc3RydWN0IGlzX3BvbGljeV9pbXAKLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IChzaXplb2YoOjpuZG5ib29zdDo6bWF0aDo6cG9saWNpZXM6OmRldGFpbDo6dGVzdF9pc19wb2xpY3koc3RhdGljX2Nhc3Q8UCo+KDApKSkgPT0gMSkpOwotfTsKLQotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgUD4KLXN0cnVjdCBpc19wb2xpY3kgOiBwdWJsaWMgbXBsOjpib29sXzwgOjpuZG5ib29zdDo6bWF0aDo6cG9saWNpZXM6OmRldGFpbDo6aXNfcG9saWN5X2ltcDxQPjo6dmFsdWU+IHt9OwotCi0vLwotLy8gSGVscGVyIHRyYWl0cyBjbGFzcyBmb3IgZGlzdHJpYnV0aW9uIGVycm9yIGhhbmRsaW5nOgotLy8KLXRlbXBsYXRlIDxjbGFzcyBQb2xpY3k+Ci1zdHJ1Y3QgY29uc3RydWN0b3JfZXJyb3JfY2hlY2sKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgUG9saWN5Ojpkb21haW5fZXJyb3JfdHlwZSBkb21haW5fZXJyb3JfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl9jPAotICAgICAgKGRvbWFpbl9lcnJvcl90eXBlOjp2YWx1ZSA9PSB0aHJvd19vbl9lcnJvcikgfHwgKGRvbWFpbl9lcnJvcl90eXBlOjp2YWx1ZSA9PSB1c2VyX2Vycm9yKSwKLSAgICAgIG1wbDo6dHJ1ZV8sCi0gICAgICBtcGw6OmZhbHNlXz46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBQb2xpY3k+Ci1zdHJ1Y3QgbWV0aG9kX2Vycm9yX2NoZWNrCi17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIFBvbGljeTo6ZG9tYWluX2Vycm9yX3R5cGUgZG9tYWluX2Vycm9yX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfYzwKLSAgICAgIChkb21haW5fZXJyb3JfdHlwZTo6dmFsdWUgPT0gdGhyb3dfb25fZXJyb3IpICYmIChkb21haW5fZXJyb3JfdHlwZTo6dmFsdWUgIT0gdXNlcl9lcnJvciksCi0gICAgICBtcGw6OmZhbHNlXywKLSAgICAgIG1wbDo6dHJ1ZV8+Ojp0eXBlIHR5cGU7Ci19OwotCi19fX0gLy8gbmFtZXNwYWNlcwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTUFUSF9QT0xJQ1lfSFBQCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21hdGgvc3BlY2lhbF9mdW5jdGlvbnMvZGV0YWlsL2ZwX3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21hdGgvc3BlY2lhbF9mdW5jdGlvbnMvZGV0YWlsL2ZwX3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmZjE3OGEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tYXRoL3NwZWNpYWxfZnVuY3Rpb25zL2RldGFpbC9mcF90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTcwICswLDAgQEAKLS8vIGZwX3RyYWl0cy5ocHAKLQotI2lmbmRlZiBORE5CT09TVF9NQVRIX0ZQX1RSQUlUU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfTUFUSF9GUF9UUkFJVFNfSFBQCi0KLS8vIENvcHlyaWdodCAoYykgMjAwNiBKb2hhbiBSYWRlCi0KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0Ci0vLyBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLyoKLVRvIHN1cHBvcnQgb2xkIGNvbXBpbGVycywgY2FyZSBoYXMgYmVlbiB0YWtlbiB0byBhdm9pZCBwYXJ0aWFsIHRlbXBsYXRlCi1zcGVjaWFsaXphdGlvbiBhbmQgbWV0YSBmdW5jdGlvbiBmb3J3YXJkaW5nLgotV2l0aCB0aGVzZSB0ZWNobmlxdWVzLCB0aGUgY29kZSBjb3VsZCBiZSBzaW1wbGlmaWVkLgotKi8KLQotI2lmIGRlZmluZWQoX192bXMpICYmIGRlZmluZWQoX19ERUNDWFgpICYmICFfX0lFRUVfRkxPQVQKLS8vIFRoZSBWQVggZmxvYXRpbmcgcG9pbnQgZm9ybWF0cyBhcmUgdXNlZCAoZm9yIGZsb2F0IGFuZCBkb3VibGUpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0ZQQ0xBU1NJRllfVkFYX0ZPUk1BVAotI2VuZGlmCi0KLSNpbmNsdWRlIDxjc3RyaW5nPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jc3RkaW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvZW5kaWFuLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19mbG9hdGluZ19wb2ludC5ocHA+Ci0KLSNpZmRlZiBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRQotICBuYW1lc3BhY2Ugc3RkeyB1c2luZyA6Om1lbWNweTsgfQotI2VuZGlmCi0KLSNpZm5kZWYgRlBfTk9STUFMCi0KLSNkZWZpbmUgRlBfWkVSTyAgICAgICAgMAotI2RlZmluZSBGUF9OT1JNQUwgICAgICAxCi0jZGVmaW5lIEZQX0lORklOSVRFICAgIDIKLSNkZWZpbmUgRlBfTkFOICAgICAgICAgMwotI2RlZmluZSBGUF9TVUJOT1JNQUwgICA0Ci0KLSNlbHNlCi0KLSNkZWZpbmUgTkROQk9PU1RfSEFTX0ZQQ0xBU1NJRlkKLQotI2lmbmRlZiBmcGNsYXNzaWZ5Ci0jICBpZiAoZGVmaW5lZChfX0dMSUJDUFBfXykgfHwgZGVmaW5lZChfX0dMSUJDWFhfXykpIFwKLSAgICAgICAgICYmIGRlZmluZWQoX0dMSUJDWFhfVVNFX0M5OV9NQVRIKSBcCi0gICAgICAgICAmJiAhKGRlZmluZWQoX0dMSUJDWFhfVVNFX0M5OV9GUF9NQUNST1NfRFlOQU1JQykgXAotICAgICAgICAgJiYgKF9HTElCQ1hYX1VTRV9DOTlfRlBfTUFDUk9TX0RZTkFNSUMgIT0gMCkpCi0jICAgICBpZmRlZiBfU1RMUF9WRU5ET1JfQ1NURAotIyAgICAgICAgaWYgX1NUTFBPUlRfVkVSU0lPTiA+PSAweDUyMAotIyAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0ZQQ0xBU1NJRllfUFJFRklYIDo6X19zdGRfYWxpYXM6OiAKLSMgICAgICAgIGVsc2UKLSMgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9GUENMQVNTSUZZX1BSRUZJWCA6Ol9TVExQX1ZFTkRPUl9DU1REOjogCi0jICAgICAgICBlbmRpZgotIyAgICAgZWxzZQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0ZQQ0xBU1NJRllfUFJFRklYIDo6c3RkOjoKLSMgICAgIGVuZGlmCi0jICBlbHNlCi0jICAgICB1bmRlZiBORE5CT09TVF9IQVNfRlBDTEFTU0lGWQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0ZQQ0xBU1NJRllfUFJFRklYCi0jICBlbmRpZgotI2VsaWYgKGRlZmluZWQoX19IUF9hQ0MpICYmICFkZWZpbmVkKF9faHBwYSkpCi0vLyBhQ0MgNiBhcHBlYXJzIHRvIGRvICIjZGVmaW5lIGZwY2xhc3NpZnkgZnBjbGFzc2lmeSIgd2hpY2ggbWVzc2VzIHVzIHVwIGEgYml0IQotIyAgZGVmaW5lIE5ETkJPT1NUX0ZQQ0xBU1NJRllfUFJFRklYIDo6Ci0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX0ZQQ0xBU1NJRllfUFJFRklYCi0jZW5kaWYKLQotI2lmZGVmIF9fTUlOR1czMl9fCi0jICB1bmRlZiBORE5CT09TVF9IQVNfRlBDTEFTU0lGWQotI2VuZGlmCi0KLSNlbmRpZgotCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgbWF0aCB7Ci1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLyogCi1UaGUgZm9sbG93aW5nIGNsYXNzZXMgYXJlIHVzZWQgdG8gdGFnIHRoZSBkaWZmZXJlbnQgbWV0aG9kcyB0aGF0IGFyZSB1c2VkCi1mb3IgZmxvYXRpbmcgcG9pbnQgY2xhc3NpZmljYXRpb24KLSovCi0KLXN0cnVjdCBuYXRpdmVfdGFnIHt9OwotdGVtcGxhdGUgPGJvb2wgaGFzX2xpbWl0cz4KLXN0cnVjdCBnZW5lcmljX3RhZyB7fTsKLXN0cnVjdCBpZWVlX3RhZyB7fTsKLXN0cnVjdCBpZWVlX2NvcHlfYWxsX2JpdHNfdGFnIDogcHVibGljIGllZWVfdGFnIHt9Owotc3RydWN0IGllZWVfY29weV9sZWFkaW5nX2JpdHNfdGFnIDogcHVibGljIGllZWVfdGFnIHt9OwotCi0jaWZkZWYgTkROQk9PU1RfTk9fTElNSVRTX0NPTVBJTEVfVElNRV9DT05TVEFOVFMKLS8vCi0vLyBUaGVzZSBoZWxwZXIgZnVuY3Rpb25zIGFyZSB1c2VkIG9ubHkgd2hlbiBudW1lcmljX2xpbWl0czw+Ci0vLyBtZW1iZXJzIGFyZSBub3QgY29tcGlsZSB0aW1lIGNvbnN0YW50czoKLS8vCi1pbmxpbmUgYm9vbCBpc19nZW5lcmljX3RhZ19mYWxzZShjb25zdCBnZW5lcmljX3RhZzxmYWxzZT4qKQotewotICAgcmV0dXJuIHRydWU7Ci19Ci1pbmxpbmUgYm9vbCBpc19nZW5lcmljX3RhZ19mYWxzZShjb25zdCB2b2lkKikKLXsKLSAgIHJldHVybiBmYWxzZTsKLX0KLSNlbmRpZgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vKgotTW9zdCBwcm9jZXNzb3JzIHN1cHBvcnQgdGhyZWUgZGlmZmVyZW50IGZsb2F0aW5nIHBvaW50IHByZWNpc2lvbnM6Ci1zaW5nbGUgcHJlY2lzaW9uICgzMiBiaXRzKSwgZG91YmxlIHByZWNpc2lvbiAoNjQgYml0cykKLWFuZCBleHRlbmRlZCBkb3VibGUgcHJlY2lzaW9uICg4MCAtIDEyOCBiaXRzLCBkZXBlbmRpbmcgb24gdGhlIHByb2Nlc3NvcikKLQotTm90ZSB0aGF0IHRoZSBDKysgdHlwZSBsb25nIGRvdWJsZSBjYW4gYmUgaW1wbGVtZW50ZWQKLWJvdGggYXMgZG91YmxlIHByZWNpc2lvbiBhbmQgZXh0ZW5kZWQgZG91YmxlIHByZWNpc2lvbi4KLSovCi0KLXN0cnVjdCB1bmtub3duX3ByZWNpc2lvbnt9Owotc3RydWN0IHNpbmdsZV9wcmVjaXNpb24ge307Ci1zdHJ1Y3QgZG91YmxlX3ByZWNpc2lvbiB7fTsKLXN0cnVjdCBleHRlbmRlZF9kb3VibGVfcHJlY2lzaW9uIHt9OwotCi0vLyBuYXRpdmVfdGFnIHZlcnNpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IGZwX3RyYWl0c19uYXRpdmUKLXsKLSAgICB0eXBlZGVmIG5hdGl2ZV90YWcgbWV0aG9kOwotfTsKLQotLy8gZ2VuZXJpY190YWcgdmVyc2lvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFU+IHN0cnVjdCBmcF90cmFpdHNfbm9uX25hdGl2ZQotewotI2lmbmRlZiBORE5CT09TVF9OT19MSU1JVFNfQ09NUElMRV9USU1FX0NPTlNUQU5UUwotICAgdHlwZWRlZiBnZW5lcmljX3RhZzxzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojppc19zcGVjaWFsaXplZD4gbWV0aG9kOwotI2Vsc2UKLSAgIHR5cGVkZWYgZ2VuZXJpY190YWc8ZmFsc2U+IG1ldGhvZDsKLSNlbmRpZgotfTsKLQotLy8gaWVlZV90YWcgdmVyc2lvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8qCi1UaGVzZSBzcGVjaWFsaXphdGlvbnMgb2YgZnBfdHJhaXRzX25vbl9uYXRpdmUgY29udGFpbiBpbmZvcm1hdGlvbiBuZWVkZWQKLXRvICJwYXJzZSIgdGhlIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiBhIGZsb2F0aW5nIHBvaW50IG51bWJlci4KLQotVHlwZWRlZiBtZW1iZXJzOgotCi0gIGJpdHMgLS0gdGhlIHRhcmdldCB0eXBlIHdoZW4gY29weWluZyB0aGUgbGVhZGluZyBieXRlcyBvZiBhIGZsb2F0aW5nCi0gICAgICBwb2ludCBudW1iZXIuIEl0IGlzIGEgdHlwZWRlZiBmb3IgdWludDMyX3Qgb3IgdWludDY0X3QuCi0KLSAgbWV0aG9kIC0tIHRlbGxzIHVzIHdoZXRoZXIgYWxsIGJ5dGVzIGFyZSBjb3BpZWQgb3Igbm90LgotICAgICAgSXQgaXMgYSB0eXBlZGVmIGZvciBpZWVlX2NvcHlfYWxsX2JpdHNfdGFnIG9yIGllZWVfY29weV9sZWFkaW5nX2JpdHNfdGFnLgotCi1TdGF0aWMgZGF0YSBtZW1iZXJzOgotCi0gIHNpZ24sIGV4cG9uZW50LCBmbGFnLCBzaWduaWZpY2FuZCAtLSBiaXQgbWFza3MgdGhhdCBnaXZlIHRoZSBtZWFuaW5nIG9mIHRoZQotICBiaXRzIGluIHRoZSBsZWFkaW5nIGJ5dGVzLgotCi1TdGF0aWMgZnVuY3Rpb24gbWVtYmVyczoKLQotICBnZXRfYml0cygpLCBzZXRfYml0cygpIC0tIHByb3ZpZGUgYWNjZXNzIHRvIHRoZSBsZWFkaW5nIGJ5dGVzLgotCi0qLwotCi0vLyBpZWVlX3RhZyB2ZXJzaW9uLCBmbG9hdCAoMzIgYml0cykgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBORE5CT09TVF9GUENMQVNTSUZZX1ZBWF9GT1JNQVQKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZnBfdHJhaXRzX25vbl9uYXRpdmU8ZmxvYXQsIHNpbmdsZV9wcmVjaXNpb24+Ci17Ci0gICAgdHlwZWRlZiBpZWVlX2NvcHlfYWxsX2JpdHNfdGFnIG1ldGhvZDsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1aW50MzJfdCwgc2lnbiAgICAgICAgPSAweDgwMDAwMDAwdSk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVpbnQzMl90LCBleHBvbmVudCAgICA9IDB4N2Y4MDAwMDApOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1aW50MzJfdCwgZmxhZyAgICAgICAgPSAweDAwMDAwMDAwKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodWludDMyX3QsIHNpZ25pZmljYW5kID0gMHgwMDdmZmZmZik7Ci0KLSAgICB0eXBlZGVmIHVpbnQzMl90IGJpdHM7Ci0gICAgc3RhdGljIHZvaWQgZ2V0X2JpdHMoZmxvYXQgeCwgdWludDMyX3QmIGEpIHsgc3RkOjptZW1jcHkoJmEsICZ4LCA0KTsgfQotICAgIHN0YXRpYyB2b2lkIHNldF9iaXRzKGZsb2F0JiB4LCB1aW50MzJfdCBhKSB7IHN0ZDo6bWVtY3B5KCZ4LCAmYSwgNCk7IH0KLX07Ci0KLS8vIGllZWVfdGFnIHZlcnNpb24sIGRvdWJsZSAoNjQgYml0cykgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19JTlQ2NF9UKSB8fCBkZWZpbmVkKE5ETkJPT1NUX05PX0lOQ0xBU1NfTUVNQkVSX0lOSVRJQUxJWkFUSU9OKSBcCi0gICB8fCBkZWZpbmVkKF9fQk9STEFORENfXykgfHwgZGVmaW5lZChfX0NPREVHRUFSX18pCi0KLXRlbXBsYXRlPD4gc3RydWN0IGZwX3RyYWl0c19ub25fbmF0aXZlPGRvdWJsZSwgZG91YmxlX3ByZWNpc2lvbj4KLXsKLSAgICB0eXBlZGVmIGllZWVfY29weV9sZWFkaW5nX2JpdHNfdGFnIG1ldGhvZDsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1aW50MzJfdCwgc2lnbiAgICAgICAgPSAweDgwMDAwMDAwdSk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVpbnQzMl90LCBleHBvbmVudCAgICA9IDB4N2ZmMDAwMDApOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1aW50MzJfdCwgZmxhZyAgICAgICAgPSAwKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodWludDMyX3QsIHNpZ25pZmljYW5kID0gMHgwMDBmZmZmZik7Ci0KLSAgICB0eXBlZGVmIHVpbnQzMl90IGJpdHM7Ci0KLSAgICBzdGF0aWMgdm9pZCBnZXRfYml0cyhkb3VibGUgeCwgdWludDMyX3QmIGEpCi0gICAgewotICAgICAgICBzdGQ6Om1lbWNweSgmYSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oJngpICsgb2Zmc2V0XywgNCk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgc2V0X2JpdHMoZG91YmxlJiB4LCB1aW50MzJfdCBhKQotICAgIHsKLSAgICAgICAgc3RkOjptZW1jcHkocmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oJngpICsgb2Zmc2V0XywgJmEsIDQpOwotICAgIH0KLQotcHJpdmF0ZToKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfQklHX0VORElBTikKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCBvZmZzZXRfID0gMCk7Ci0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0xJVFRMRV9FTkRJQU4pCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgb2Zmc2V0XyA9IDQpOwotI2Vsc2UKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKGZhbHNlKTsKLSNlbmRpZgotfTsKLQotLy8uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLQotI2Vsc2UKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZnBfdHJhaXRzX25vbl9uYXRpdmU8ZG91YmxlLCBkb3VibGVfcHJlY2lzaW9uPgotewotICAgIHR5cGVkZWYgaWVlZV9jb3B5X2FsbF9iaXRzX3RhZyBtZXRob2Q7Ci0KLSAgICBzdGF0aWMgY29uc3QgdWludDY0X3Qgc2lnbiAgICAgPSAoKHVpbnQ2NF90KTB4ODAwMDAwMDB1KSA8PCAzMjsKLSAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgZXhwb25lbnQgPSAoKHVpbnQ2NF90KTB4N2ZmMDAwMDApIDw8IDMyOwotICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBmbGFnICAgICA9IDA7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IHNpZ25pZmljYW5kCi0gICAgICAgID0gKCgodWludDY0X3QpMHgwMDBmZmZmZikgPDwgMzIpICsgKCh1aW50NjRfdCkweGZmZmZmZmZmdSk7Ci0KLSAgICB0eXBlZGVmIHVpbnQ2NF90IGJpdHM7Ci0gICAgc3RhdGljIHZvaWQgZ2V0X2JpdHMoZG91YmxlIHgsIHVpbnQ2NF90JiBhKSB7IHN0ZDo6bWVtY3B5KCZhLCAmeCwgOCk7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRfYml0cyhkb3VibGUmIHgsIHVpbnQ2NF90IGEpIHsgc3RkOjptZW1jcHkoJngsICZhLCA4KTsgfQotfTsKLQotI2VuZGlmCi0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9GUENMQVNTSUZZX1ZBWF9GT1JNQVQKLQotLy8gbG9uZyBkb3VibGUgKDY0IGJpdHMpIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fSU5UNjRfVCkgfHwgZGVmaW5lZChORE5CT09TVF9OT19JTkNMQVNTX01FTUJFUl9JTklUSUFMSVpBVElPTilcCi0gICB8fCBkZWZpbmVkKF9fQk9STEFORENfXykgfHwgZGVmaW5lZChfX0NPREVHRUFSX18pCi0KLXRlbXBsYXRlPD4gc3RydWN0IGZwX3RyYWl0c19ub25fbmF0aXZlPGxvbmcgZG91YmxlLCBkb3VibGVfcHJlY2lzaW9uPgotewotICAgIHR5cGVkZWYgaWVlZV9jb3B5X2xlYWRpbmdfYml0c190YWcgbWV0aG9kOwotCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVpbnQzMl90LCBzaWduICAgICAgICA9IDB4ODAwMDAwMDB1KTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodWludDMyX3QsIGV4cG9uZW50ICAgID0gMHg3ZmYwMDAwMCk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVpbnQzMl90LCBmbGFnICAgICAgICA9IDApOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1aW50MzJfdCwgc2lnbmlmaWNhbmQgPSAweDAwMGZmZmZmKTsKLQotICAgIHR5cGVkZWYgdWludDMyX3QgYml0czsKLQotICAgIHN0YXRpYyB2b2lkIGdldF9iaXRzKGxvbmcgZG91YmxlIHgsIHVpbnQzMl90JiBhKQotICAgIHsKLSAgICAgICAgc3RkOjptZW1jcHkoJmEsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KCZ4KSArIG9mZnNldF8sIDQpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHNldF9iaXRzKGxvbmcgZG91YmxlJiB4LCB1aW50MzJfdCBhKQotICAgIHsKLSAgICAgICAgc3RkOjptZW1jcHkocmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oJngpICsgb2Zmc2V0XywgJmEsIDQpOwotICAgIH0KLQotcHJpdmF0ZToKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfQklHX0VORElBTikKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCBvZmZzZXRfID0gMCk7Ci0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0xJVFRMRV9FTkRJQU4pCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgb2Zmc2V0XyA9IDQpOwotI2Vsc2UKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKGZhbHNlKTsKLSNlbmRpZgotfTsKLQotLy8uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLQotI2Vsc2UKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZnBfdHJhaXRzX25vbl9uYXRpdmU8bG9uZyBkb3VibGUsIGRvdWJsZV9wcmVjaXNpb24+Ci17Ci0gICAgdHlwZWRlZiBpZWVlX2NvcHlfYWxsX2JpdHNfdGFnIG1ldGhvZDsKLQotICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBzaWduICAgICA9ICh1aW50NjRfdCkweDgwMDAwMDAwdSA8PCAzMjsKLSAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgZXhwb25lbnQgPSAodWludDY0X3QpMHg3ZmYwMDAwMCA8PCAzMjsKLSAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgZmxhZyAgICAgPSAwOwotICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBzaWduaWZpY2FuZAotICAgICAgICA9ICgodWludDY0X3QpMHgwMDBmZmZmZiA8PCAzMikgKyAodWludDY0X3QpMHhmZmZmZmZmZnU7Ci0KLSAgICB0eXBlZGVmIHVpbnQ2NF90IGJpdHM7Ci0gICAgc3RhdGljIHZvaWQgZ2V0X2JpdHMobG9uZyBkb3VibGUgeCwgdWludDY0X3QmIGEpIHsgc3RkOjptZW1jcHkoJmEsICZ4LCA4KTsgfQotICAgIHN0YXRpYyB2b2lkIHNldF9iaXRzKGxvbmcgZG91YmxlJiB4LCB1aW50NjRfdCBhKSB7IHN0ZDo6bWVtY3B5KCZ4LCAmYSwgOCk7IH0KLX07Ci0KLSNlbmRpZgotCi0KLS8vIGxvbmcgZG91YmxlICg+NjQgYml0cyksIHg4NiBhbmQgeDY0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZiBkZWZpbmVkKF9faTM4NikgfHwgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfTV9JWDg2KSBcCi0gICAgfHwgZGVmaW5lZChfX2FtZDY0KSB8fCBkZWZpbmVkKF9fYW1kNjRfXykgIHx8IGRlZmluZWQoX01fQU1ENjQpIFwKLSAgICB8fCBkZWZpbmVkKF9feDg2XzY0KSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX01fWDY0KQotCi0vLyBJbnRlbCBleHRlbmRlZCBkb3VibGUgcHJlY2lzaW9uIGZvcm1hdCAoODAgYml0cykKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZwX3RyYWl0c19ub25fbmF0aXZlPGxvbmcgZG91YmxlLCBleHRlbmRlZF9kb3VibGVfcHJlY2lzaW9uPgotewotICAgIHR5cGVkZWYgaWVlZV9jb3B5X2xlYWRpbmdfYml0c190YWcgbWV0aG9kOwotCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVpbnQzMl90LCBzaWduICAgICAgICA9IDB4ODAwMDAwMDB1KTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodWludDMyX3QsIGV4cG9uZW50ICAgID0gMHg3ZmZmMDAwMCk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVpbnQzMl90LCBmbGFnICAgICAgICA9IDB4MDAwMDgwMDApOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1aW50MzJfdCwgc2lnbmlmaWNhbmQgPSAweDAwMDA3ZmZmKTsKLQotICAgIHR5cGVkZWYgdWludDMyX3QgYml0czsKLQotICAgIHN0YXRpYyB2b2lkIGdldF9iaXRzKGxvbmcgZG91YmxlIHgsIHVpbnQzMl90JiBhKQotICAgIHsKLSAgICAgICAgc3RkOjptZW1jcHkoJmEsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KCZ4KSArIDYsIDQpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHNldF9iaXRzKGxvbmcgZG91YmxlJiB4LCB1aW50MzJfdCBhKQotICAgIHsKLSAgICAgICAgc3RkOjptZW1jcHkocmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oJngpICsgNiwgJmEsIDQpOwotICAgIH0KLX07Ci0KLQotLy8gbG9uZyBkb3VibGUgKD42NCBiaXRzKSwgSXRhbml1bSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2VsaWYgZGVmaW5lZChfX2lhNjQpIHx8IGRlZmluZWQoX19pYTY0X18pIHx8IGRlZmluZWQoX01fSUE2NCkKLQotLy8gVGhlIGZsb2F0aW5nIHBvaW50IGZvcm1hdCBpcyB1bmtub3duIGF0IGNvbXBpbGUgdGltZQotLy8gTm8gdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24gaXMgcHJvdmlkZWQuCi0vLyBUaGUgZ2VuZXJpY190YWcgZGVmaW5pdGlvbiBpcyB1c2VkLgotCi0vLyBUaGUgSXRhbml1bSBzdXBwb3J0cyBib3RoCi0vLyB0aGUgSW50ZWwgZXh0ZW5kZWQgZG91YmxlIHByZWNpc2lvbiBmb3JtYXQgKDgwIGJpdHMpIGFuZAotLy8gdGhlIElFRUUgZXh0ZW5kZWQgZG91YmxlIHByZWNpc2lvbiBmb3JtYXQgd2l0aCAxNSBleHBvbmVudCBiaXRzICgxMjggYml0cykuCi0KLQotLy8gbG9uZyBkb3VibGUgKD42NCBiaXRzKSwgUG93ZXJQQyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2VsaWYgZGVmaW5lZChfX3Bvd2VycGMpIHx8IGRlZmluZWQoX19wb3dlcnBjX18pIHx8IGRlZmluZWQoX19QT1dFUlBDX18pIFwKLSAgICB8fCBkZWZpbmVkKF9fcHBjKSB8fCBkZWZpbmVkKF9fcHBjX18pIHx8IGRlZmluZWQoX19QUENfXykKLQotLy8gUG93ZXJQQyBleHRlbmRlZCBkb3VibGUgcHJlY2lzaW9uIGZvcm1hdCAoMTI4IGJpdHMpCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcF90cmFpdHNfbm9uX25hdGl2ZTxsb25nIGRvdWJsZSwgZXh0ZW5kZWRfZG91YmxlX3ByZWNpc2lvbj4KLXsKLSAgICB0eXBlZGVmIGllZWVfY29weV9sZWFkaW5nX2JpdHNfdGFnIG1ldGhvZDsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1aW50MzJfdCwgc2lnbiAgICAgICAgPSAweDgwMDAwMDAwdSk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVpbnQzMl90LCBleHBvbmVudCAgICA9IDB4N2ZmMDAwMDApOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1aW50MzJfdCwgZmxhZyAgICAgICAgPSAweDAwMDAwMDAwKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodWludDMyX3QsIHNpZ25pZmljYW5kID0gMHgwMDBmZmZmZik7Ci0KLSAgICB0eXBlZGVmIHVpbnQzMl90IGJpdHM7Ci0KLSAgICBzdGF0aWMgdm9pZCBnZXRfYml0cyhsb25nIGRvdWJsZSB4LCB1aW50MzJfdCYgYSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6bWVtY3B5KCZhLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPigmeCkgKyBvZmZzZXRfLCA0KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBzZXRfYml0cyhsb25nIGRvdWJsZSYgeCwgdWludDMyX3QgYSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6bWVtY3B5KHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KCZ4KSArIG9mZnNldF8sICZhLCA0KTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0JJR19FTkRJQU4pCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgb2Zmc2V0XyA9IDApOwotI2VsaWYgZGVmaW5lZChORE5CT09TVF9MSVRUTEVfRU5ESUFOKQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIG9mZnNldF8gPSAxMik7Ci0jZWxzZQotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoZmFsc2UpOwotI2VuZGlmCi19OwotCi0KLS8vIGxvbmcgZG91YmxlICg+NjQgYml0cyksIE1vdG9yb2xhIDY4SyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNlbGlmIGRlZmluZWQoX19tNjhrKSB8fCBkZWZpbmVkKF9fbTY4a19fKSBcCi0gICAgfHwgZGVmaW5lZChfX21jNjgwMDApIHx8IGRlZmluZWQoX19tYzY4MDAwX18pIFwKLQotLy8gTW90b3JvbGEgZXh0ZW5kZWQgZG91YmxlIHByZWNpc2lvbiBmb3JtYXQgKDk2IGJpdHMpCi0KLS8vIEl0IGlzIHRoZSBzYW1lIGZvcm1hdCBhcyB0aGUgSW50ZWwgZXh0ZW5kZWQgZG91YmxlIHByZWNpc2lvbiBmb3JtYXQsCi0vLyBleGNlcHQgdGhhdCAxKSBpdCBpcyBiaWctZW5kaWFuLCAyKSB0aGUgM3JkIGFuZCA0dGggYnl0ZSBhcmUgcGFkZGluZywgYW5kCi0vLyAzKSB0aGUgZmxhZyBiaXQgaXMgbm90IHNldCBmb3IgaW5maW5pdHkKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZwX3RyYWl0c19ub25fbmF0aXZlPGxvbmcgZG91YmxlLCBleHRlbmRlZF9kb3VibGVfcHJlY2lzaW9uPgotewotICAgIHR5cGVkZWYgaWVlZV9jb3B5X2xlYWRpbmdfYml0c190YWcgbWV0aG9kOwotCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVpbnQzMl90LCBzaWduICAgICAgICA9IDB4ODAwMDAwMDB1KTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodWludDMyX3QsIGV4cG9uZW50ICAgID0gMHg3ZmZmMDAwMCk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVpbnQzMl90LCBmbGFnICAgICAgICA9IDB4MDAwMDgwMDApOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1aW50MzJfdCwgc2lnbmlmaWNhbmQgPSAweDAwMDA3ZmZmKTsKLQotICAgIC8vIGNvcHkgMXN0LCAybmQsIDV0aCBhbmQgNnRoIGJ5dGUuIDNyZCBhbmQgNHRoIGJ5dGUgYXJlIHBhZGRpbmcuCi0KLSAgICB0eXBlZGVmIHVpbnQzMl90IGJpdHM7Ci0KLSAgICBzdGF0aWMgdm9pZCBnZXRfYml0cyhsb25nIGRvdWJsZSB4LCB1aW50MzJfdCYgYSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6bWVtY3B5KCZhLCAmeCwgMik7Ci0gICAgICAgIHN0ZDo6bWVtY3B5KHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KCZhKSArIDIsCi0gICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPigmeCkgKyA0LCAyKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBzZXRfYml0cyhsb25nIGRvdWJsZSYgeCwgdWludDMyX3QgYSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6bWVtY3B5KCZ4LCAmYSwgMik7Ci0gICAgICAgIHN0ZDo6bWVtY3B5KHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KCZ4KSArIDQsCi0gICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPigmYSkgKyAyLCAyKTsKLSAgICB9Ci19OwotCi0KLS8vIGxvbmcgZG91YmxlICg+NjQgYml0cyksIEFsbCBvdGhlciBwcm9jZXNzb3JzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNlbHNlCi0KLS8vIElFRUUgZXh0ZW5kZWQgZG91YmxlIHByZWNpc2lvbiBmb3JtYXQgd2l0aCAxNSBleHBvbmVudCBiaXRzICgxMjggYml0cykKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZwX3RyYWl0c19ub25fbmF0aXZlPGxvbmcgZG91YmxlLCBleHRlbmRlZF9kb3VibGVfcHJlY2lzaW9uPgotewotICAgIHR5cGVkZWYgaWVlZV9jb3B5X2xlYWRpbmdfYml0c190YWcgbWV0aG9kOwotCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVpbnQzMl90LCBzaWduICAgICAgICA9IDB4ODAwMDAwMDB1KTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodWludDMyX3QsIGV4cG9uZW50ICAgID0gMHg3ZmZmMDAwMCk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVpbnQzMl90LCBmbGFnICAgICAgICA9IDB4MDAwMDAwMDApOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1aW50MzJfdCwgc2lnbmlmaWNhbmQgPSAweDAwMDBmZmZmKTsKLQotICAgIHR5cGVkZWYgdWludDMyX3QgYml0czsKLQotICAgIHN0YXRpYyB2b2lkIGdldF9iaXRzKGxvbmcgZG91YmxlIHgsIHVpbnQzMl90JiBhKQotICAgIHsKLSAgICAgICAgc3RkOjptZW1jcHkoJmEsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KCZ4KSArIG9mZnNldF8sIDQpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHNldF9iaXRzKGxvbmcgZG91YmxlJiB4LCB1aW50MzJfdCBhKQotICAgIHsKLSAgICAgICAgc3RkOjptZW1jcHkocmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oJngpICsgb2Zmc2V0XywgJmEsIDQpOwotICAgIH0KLQotcHJpdmF0ZToKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfQklHX0VORElBTikKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCBvZmZzZXRfID0gMCk7Ci0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0xJVFRMRV9FTkRJQU4pCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgb2Zmc2V0XyA9IDEyKTsKLSNlbHNlCi0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChmYWxzZSk7Ci0jZW5kaWYKLX07Ci0KLSNlbmRpZgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBzaXplX3RvX3ByZWNpc2lvbiBpcyBhIHR5cGUgc3dpdGNoIGZvciBjb252ZXJ0aW5nIGEgQysrIGZsb2F0aW5nIHBvaW50IHR5cGUKLS8vIHRvIHRoZSBjb3JyZXNwb25kaW5nIHByZWNpc2lvbiB0eXBlLgotCi10ZW1wbGF0ZTxpbnQgbiwgYm9vbCBmcD4gc3RydWN0IHNpemVfdG9fcHJlY2lzaW9uCi17Ci0gICB0eXBlZGVmIHVua25vd25fcHJlY2lzaW9uIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBzaXplX3RvX3ByZWNpc2lvbjw0LCB0cnVlPgotewotICAgIHR5cGVkZWYgc2luZ2xlX3ByZWNpc2lvbiB0eXBlOwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2l6ZV90b19wcmVjaXNpb248OCwgdHJ1ZT4KLXsKLSAgICB0eXBlZGVmIGRvdWJsZV9wcmVjaXNpb24gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHNpemVfdG9fcHJlY2lzaW9uPDEwLCB0cnVlPgotewotICAgIHR5cGVkZWYgZXh0ZW5kZWRfZG91YmxlX3ByZWNpc2lvbiB0eXBlOwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2l6ZV90b19wcmVjaXNpb248MTIsIHRydWU+Ci17Ci0gICAgdHlwZWRlZiBleHRlbmRlZF9kb3VibGVfcHJlY2lzaW9uIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBzaXplX3RvX3ByZWNpc2lvbjwxNiwgdHJ1ZT4KLXsKLSAgICB0eXBlZGVmIGV4dGVuZGVkX2RvdWJsZV9wcmVjaXNpb24gdHlwZTsKLX07Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLwotLy8gRmlndXJlIG91dCB3aGV0aGVyIHRvIHVzZSBuYXRpdmUgY2xhc3NpZmljYXRpb24gZnVuY3Rpb25zIGJhc2VkIG9uCi0vLyB3aGV0aGVyIFQgaXMgYSBidWlsdCBpbiBmbG9hdGluZyBwb2ludCB0eXBlIG9yIG5vdDoKLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBzZWxlY3RfbmF0aXZlCi17Ci0gICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHNpemVfdG9fcHJlY2lzaW9uPHNpemVvZihUKSwgOjpuZG5ib29zdDo6aXNfZmxvYXRpbmdfcG9pbnQ8VD46OnZhbHVlPjo6dHlwZSBwcmVjaXNpb247Ci0gICAgdHlwZWRlZiBmcF90cmFpdHNfbm9uX25hdGl2ZTxULCBwcmVjaXNpb24+IHR5cGU7Ci19OwotdGVtcGxhdGU8Pgotc3RydWN0IHNlbGVjdF9uYXRpdmU8ZmxvYXQ+Ci17Ci0gICAgdHlwZWRlZiBmcF90cmFpdHNfbmF0aXZlPGZsb2F0PiB0eXBlOwotfTsKLXRlbXBsYXRlPD4KLXN0cnVjdCBzZWxlY3RfbmF0aXZlPGRvdWJsZT4KLXsKLSAgICB0eXBlZGVmIGZwX3RyYWl0c19uYXRpdmU8ZG91YmxlPiB0eXBlOwotfTsKLXRlbXBsYXRlPD4KLXN0cnVjdCBzZWxlY3RfbmF0aXZlPGxvbmcgZG91YmxlPgotewotICAgIHR5cGVkZWYgZnBfdHJhaXRzX25hdGl2ZTxsb25nIGRvdWJsZT4gdHlwZTsKLX07Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIGZwX3RyYWl0cyBpcyBhIHR5cGUgc3dpdGNoIHRoYXQgc2VsZWN0cyB0aGUgcmlnaHQgZnBfdHJhaXRzX25vbl9uYXRpdmUKLQotI2lmIChkZWZpbmVkKE5ETkJPT1NUX01BVEhfVVNFX0M5OSkgJiYgIShkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPCA0KSkpIFwKLSAgICYmICFkZWZpbmVkKF9faHB1eCkgXAotICAgJiYgIWRlZmluZWQoX19ERUNDWFgpXAotICAgJiYgIWRlZmluZWQoX19vc2ZfXykgXAotICAgJiYgIWRlZmluZWQoX19TR0lfU1RMX1BPUlQpICYmICFkZWZpbmVkKF9TVExQT1JUX1ZFUlNJT04pXAotICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTUFUSF9ESVNBQkxFX1NURF9GUENMQVNTSUZZKQotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfVVNFX1NURF9GUENMQVNTSUZZCi0jZW5kaWYKLQotdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IGZwX3RyYWl0cwotewotICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBzaXplX3RvX3ByZWNpc2lvbjxzaXplb2YoVCksIDo6bmRuYm9vc3Q6OmlzX2Zsb2F0aW5nX3BvaW50PFQ+Ojp2YWx1ZT46OnR5cGUgcHJlY2lzaW9uOwotI2lmIGRlZmluZWQoTkROQk9PU1RfTUFUSF9VU0VfU1REX0ZQQ0xBU1NJRlkpICYmICFkZWZpbmVkKE5ETkJPT1NUX01BVEhfRElTQUJMRV9TVERfRlBDTEFTU0lGWSkKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNlbGVjdF9uYXRpdmU8VD46OnR5cGUgdHlwZTsKLSNlbHNlCi0gICAgdHlwZWRlZiBmcF90cmFpdHNfbm9uX25hdGl2ZTxULCBwcmVjaXNpb24+IHR5cGU7Ci0jZW5kaWYKLSAgICB0eXBlZGVmIGZwX3RyYWl0c19ub25fbmF0aXZlPFQsIHByZWNpc2lvbj4gc2lnbl9jaGFuZ2VfdHlwZTsKLX07Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLX0gICAvLyBuYW1lc3BhY2UgZGV0YWlsCi19ICAgLy8gbmFtZXNwYWNlIG1hdGgKLX0gICAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21hdGgvc3BlY2lhbF9mdW5jdGlvbnMvZGV0YWlsL3JvdW5kX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21hdGgvc3BlY2lhbF9mdW5jdGlvbnMvZGV0YWlsL3JvdW5kX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwNTE4YzcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tYXRoL3NwZWNpYWxfZnVuY3Rpb25zL2RldGFpbC9yb3VuZF9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBAQAotLy8gQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDA4LgotCi0vLyBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotLy8gQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dAotLy8gb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfTUFUSF9TUEVDSUFMX1JPVU5EX0ZXRF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfTUFUSF9TUEVDSUFMX1JPVU5EX0ZXRF9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbWF0aC90b29scy9wcm9tb3Rpb24uaHBwPgotCi0jaWZkZWYgX01TQ19WRVIKLSNwcmFnbWEgb25jZQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgbmFtZXNwYWNlIG1hdGgKLSAgIHsgCi0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIHRydW5jKGNvbnN0IFQmIHYsIGNvbnN0IFBvbGljeSYgcG9sKTsKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSB0cnVuYyhjb25zdCBUJiB2KTsKLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci0gICBpbnQgaXRydW5jKGNvbnN0IFQmIHYsIGNvbnN0IFBvbGljeSYgcG9sKTsKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgaW50IGl0cnVuYyhjb25zdCBUJiB2KTsKLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci0gICBsb25nIGx0cnVuYyhjb25zdCBUJiB2LCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIGxvbmcgbHRydW5jKGNvbnN0IFQmIHYpOwotI2lmZGVmIE5ETkJPT1NUX0hBU19MT05HX0xPTkcKLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci0gICBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUgbGx0cnVuYyhjb25zdCBUJiB2LCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSBsbHRydW5jKGNvbnN0IFQmIHYpOwotI2VuZGlmCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSByb3VuZChjb25zdCBUJiB2LCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgcm91bmQoY29uc3QgVCYgdik7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgaW50IGlyb3VuZChjb25zdCBUJiB2LCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIGludCBpcm91bmQoY29uc3QgVCYgdik7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgbG9uZyBscm91bmQoY29uc3QgVCYgdiwgY29uc3QgUG9saWN5JiBwb2wpOwotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBsb25nIGxyb3VuZChjb25zdCBUJiB2KTsKLSNpZmRlZiBORE5CT09TVF9IQVNfTE9OR19MT05HCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlIGxscm91bmQoY29uc3QgVCYgdiwgY29uc3QgUG9saWN5JiBwb2wpOwotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUgbGxyb3VuZChjb25zdCBUJiB2KTsKLSNlbmRpZgotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLSAgIFQgbW9kZihjb25zdCBUJiB2LCBUKiBpcGFydCwgY29uc3QgUG9saWN5JiBwb2wpOwotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBUIG1vZGYoY29uc3QgVCYgdiwgVCogaXBhcnQpOwotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLSAgIFQgbW9kZihjb25zdCBUJiB2LCBpbnQqIGlwYXJ0LCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIFQgbW9kZihjb25zdCBUJiB2LCBpbnQqIGlwYXJ0KTsKLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci0gICBUIG1vZGYoY29uc3QgVCYgdiwgbG9uZyogaXBhcnQsIGNvbnN0IFBvbGljeSYgcG9sKTsKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgVCBtb2RmKGNvbnN0IFQmIHYsIGxvbmcqIGlwYXJ0KTsKLSNpZmRlZiBORE5CT09TVF9IQVNfTE9OR19MT05HCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgVCBtb2RmKGNvbnN0IFQmIHYsIG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSogaXBhcnQsIGNvbnN0IFBvbGljeSYgcG9sKTsKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgVCBtb2RmKGNvbnN0IFQmIHYsIG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSogaXBhcnQpOwotI2VuZGlmCi0KLSAgIH0KLX0KLQotI3VuZGVmIE5ETkJPT1NUX01BVEhfU1REX1VTSU5HCi0jZGVmaW5lIE5ETkJPT1NUX01BVEhfU1REX1VTSU5HIE5ETkJPT1NUX01BVEhfU1REX1VTSU5HX0NPUkVcCi0gICB1c2luZyBuZG5ib29zdDo6bWF0aDo6cm91bmQ7XAotICAgdXNpbmcgbmRuYm9vc3Q6Om1hdGg6Omlyb3VuZDtcCi0gICB1c2luZyBuZG5ib29zdDo6bWF0aDo6bHJvdW5kO1wKLSAgIHVzaW5nIG5kbmJvb3N0OjptYXRoOjp0cnVuYztcCi0gICB1c2luZyBuZG5ib29zdDo6bWF0aDo6aXRydW5jO1wKLSAgIHVzaW5nIG5kbmJvb3N0OjptYXRoOjpsdHJ1bmM7XAotICAgdXNpbmcgbmRuYm9vc3Q6Om1hdGg6Om1vZGY7Ci0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01BVEhfU1BFQ0lBTF9ST1VORF9GV0RfSFBQCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbWF0aC9zcGVjaWFsX2Z1bmN0aW9ucy9mcGNsYXNzaWZ5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbWF0aC9zcGVjaWFsX2Z1bmN0aW9ucy9mcGNsYXNzaWZ5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2I0YjE5My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21hdGgvc3BlY2lhbF9mdW5jdGlvbnMvZnBjbGFzc2lmeS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MDYgKzAsMCBAQAotLy8gIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwNS0yMDA4LgotLy8gIENvcHlyaWdodCAoYykgMjAwNi0yMDA4IEpvaGFuIFJhZGUKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX01BVEhfRlBDTEFTU0lGWV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfTUFUSF9GUENMQVNTSUZZX0hQUAotCi0jaWZkZWYgX01TQ19WRVIKLSNwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxtYXRoLmg+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL25vX3RyMS9jbWF0aC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbGltaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tYXRoL3Rvb2xzL3JlYWxfY2FzdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZmxvYXRpbmdfcG9pbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21hdGgvc3BlY2lhbF9mdW5jdGlvbnMvbWF0aF9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21hdGgvc3BlY2lhbF9mdW5jdGlvbnMvZGV0YWlsL2ZwX3RyYWl0cy5ocHA+Ci0vKiEKLSAgXGZpbGUgZnBjbGFzc2lmeS5ocHAKLSAgXGJyaWVmIENsYXNzaWZ5IGZsb2F0aW5nLXBvaW50IHZhbHVlIGFzIG5vcm1hbCwgc3Vibm9ybWFsLCB6ZXJvLCBpbmZpbml0ZSwgb3IgTmFOLgotICBcdmVyc2lvbiAxLjAKLSAgXGF1dGhvciBKb2huIE1hZGRvY2sKLSAqLwotCi0vKgotCi0xLiBJZiB0aGUgcGxhdGZvcm0gaXMgQzk5IGNvbXBsaWFudCwgdGhlbiB0aGUgbmF0aXZlIGZsb2F0aW5nIHBvaW50Ci1jbGFzc2lmaWNhdGlvbiBmdW5jdGlvbnMgYXJlIHVzZWQuICBIb3dldmVyLCBub3RlIHRoYXQgd2UgbXVzdCBvbmx5Ci1kZWZpbmUgdGhlIGZ1bmN0aW9ucyB3aGljaCBjYWxsIHN0ZDo6ZnBjbGFzc2lmeSBldGMgaWYgdGhhdCBmdW5jdGlvbgotcmVhbGx5IGRvZXMgZXhpc3Q6IG90aGVyd2lzZSBhIGNvbXBpbGVyIG1heSByZWplY3QgdGhlIGNvZGUgZXZlbiB0aG91Z2gKLXRoZSB0ZW1wbGF0ZSBpcyBuZXZlciBpbnN0YW50aWF0ZWQuCi0KLTIuIElmIHRoZSBwbGF0Zm9ybSBpcyBub3QgQzk5IGNvbXBsaWFudCwgYW5kIHRoZSBiaW5hcnkgZm9ybWF0IGZvcgotYSBmbG9hdGluZyBwb2ludCB0eXBlIChmbG9hdCwgZG91YmxlIG9yIGxvbmcgZG91YmxlKSBjYW4gYmUgZGV0ZXJtaW5lZAotYXQgY29tcGlsZSB0aW1lLCB0aGVuIHRoZSBmb2xsb3dpbmcgYWxnb3JpdGhtIGlzIHVzZWQ6Ci0KLSAgICAgICAgSWYgYWxsIGV4cG9uZW50IGJpdHMsIHRoZSBmbGFnIGJpdCAoaWYgdGhlcmUgaXMgb25lKSwKLSAgICAgICAgYW5kIGFsbCBzaWduaWZpY2FuZCBiaXRzIGFyZSAwLCB0aGVuIHRoZSBudW1iZXIgaXMgemVyby4KLQotICAgICAgICBJZiBhbGwgZXhwb25lbnQgYml0cyBhbmQgdGhlIGZsYWcgYml0IChpZiB0aGVyZSBpcyBvbmUpIGFyZSAwLAotICAgICAgICBhbmQgYXQgbGVhc3Qgb25lIHNpZ25pZmljYW5kIGJpdCBpcyAxLCB0aGVuIHRoZSBudW1iZXIgaXMgc3Vibm9ybWFsLgotCi0gICAgICAgIElmIGFsbCBleHBvbmVudCBiaXRzIGFyZSAxIGFuZCBhbGwgc2lnbmlmaWNhbmQgYml0cyBhcmUgMCwKLSAgICAgICAgdGhlbiB0aGUgbnVtYmVyIGlzIGluZmluaXR5LgotCi0gICAgICAgIElmIGFsbCBleHBvbmVudCBiaXRzIGFyZSAxIGFuZCBhdCBsZWFzdCBvbmUgc2lnbmlmaWNhbmQgYml0IGlzIDEsCi0gICAgICAgIHRoZW4gdGhlIG51bWJlciBpcyBhIG5vdC1hLW51bWJlci4KLQotICAgICAgICBPdGhlcndpc2UgdGhlIG51bWJlciBpcyBub3JtYWwuCi0KLSAgICAgICAgVGhpcyBhbGdvcml0aG0gd29ya3MgZm9yIHRoZSBJRUVFIDc1NCByZXByZXNlbnRhdGlvbiwKLSAgICAgICAgYW5kIGFsc28gZm9yIHNldmVyYWwgbm9uIElFRUUgNzU0IGZvcm1hdHMuCi0KLSAgICBNb3N0IGZvcm1hdHMgaGF2ZSB0aGUgc3RydWN0dXJlCi0gICAgICAgIHNpZ24gYml0ICsgZXhwb25lbnQgYml0cyArIHNpZ25pZmljYW5kIGJpdHMuCi0KLSAgICBBIGZldyBoYXZlIHRoZSBzdHJ1Y3R1cmUKLSAgICAgICAgc2lnbiBiaXQgKyBleHBvbmVudCBiaXRzICsgZmxhZyBiaXQgKyBzaWduaWZpY2FuZCBiaXRzLgotICAgIFRoZSBmbGFnIGJpdCBpcyAwIGZvciB6ZXJvIGFuZCBzdWJub3JtYWwgbnVtYmVycywKLSAgICAgICAgYW5kIDEgZm9yIG5vcm1hbCBudW1iZXJzIGFuZCBOYU4uCi0gICAgICAgIEl0IGlzIDAgKE1vdG9yb2xhIDY4Sykgb3IgMSAoSW50ZWwpIGZvciBpbmZpbml0eS4KLQotICAgIFRvIGdldCB0aGUgYml0cywgdGhlIGZvdXIgb3IgZWlnaHQgbW9zdCBzaWduaWZpY2FudCBieXRlcyBhcmUgY29waWVkCi0gICAgaW50byBhbiB1aW50MzJfdCBvciB1aW50NjRfdCBhbmQgYml0IG1hc2tzIGFyZSBhcHBsaWVkLgotICAgIFRoaXMgY292ZXJzIGFsbCB0aGUgZXhwb25lbnQgYml0cyBhbmQgdGhlIGZsYWcgYml0IChpZiB0aGVyZSBpcyBvbmUpLAotICAgIGJ1dCBub3QgYWx3YXlzIGFsbCB0aGUgc2lnbmlmaWNhbmQgYml0cy4KLSAgICBTb21lIG9mIHRoZSBmdW5jdGlvbnMgYmVsb3cgaGF2ZSB0d28gaW1wbGVtZW50YXRpb25zLAotICAgIGRlcGVuZGluZyBvbiB3aGV0aGVyIGFsbCB0aGUgc2lnbmlmaWNhbmQgYml0cyBhcmUgY29waWVkIG9yIG5vdC4KLQotMy4gSWYgdGhlIHBsYXRmb3JtIGlzIG5vdCBDOTkgY29tcGxpYW50LCBhbmQgdGhlIGJpbmFyeSBmb3JtYXQgZm9yCi1hIGZsb2F0aW5nIHBvaW50IHR5cGUgKGZsb2F0LCBkb3VibGUgb3IgbG9uZyBkb3VibGUpIGNhbiBub3QgYmUgZGV0ZXJtaW5lZAotYXQgY29tcGlsZSB0aW1lLCB0aGVuIGNvbXBhcmlzb24gd2l0aCBzdGQ6Om51bWVyaWNfbGltaXRzIHZhbHVlcwotaXMgdXNlZC4KLQotKi8KLQotI2lmIGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKQotI2luY2x1ZGUgPGZsb2F0Lmg+Ci0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFCi0gIG5hbWVzcGFjZSBzdGR7IHVzaW5nIDo6YWJzOyB1c2luZyA6OmZhYnM7IH0KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLS8vCi0vLyBUaGlzIG11c3Qgbm90IGJlIGxvY2F0ZWQgaW4gYW55IG5hbWVzcGFjZSB1bmRlciBuZG5ib29zdDo6bWF0aAotLy8gb3RoZXJ3aXNlIHdlIGNhbiBnZXQgaW50byBhbiBpbmZpbml0ZSBsb29wIGlmIGlzbmFuIGlzCi0vLyBhICNkZWZpbmUgZm9yICJpc25hbiIgIQotLy8KLW5hbWVzcGFjZSBtYXRoX2RldGFpbHsKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDgwMCkKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLWlubGluZSBib29sIGlzX25hbl9oZWxwZXIoVCB0LCBjb25zdCBuZG5ib29zdDo6dHJ1ZV90eXBlJikKLXsKLSNpZmRlZiBpc25hbgotICAgcmV0dXJuIGlzbmFuKHQpOwotI2VsaWYgZGVmaW5lZChORE5CT09TVF9NQVRIX0RJU0FCTEVfU1REX0ZQQ0xBU1NJRlkpIHx8ICFkZWZpbmVkKE5ETkJPT1NUX0hBU19GUENMQVNTSUZZKQotICAgKHZvaWQpdDsKLSAgIHJldHVybiBmYWxzZTsKLSNlbHNlIC8vIE5ETkJPT1NUX0hBU19GUENMQVNTSUZZCi0gICByZXR1cm4gKE5ETkJPT1NUX0ZQQ0xBU1NJRllfUFJFRklYIGZwY2xhc3NpZnkodCkgPT0gKGludClGUF9OQU4pOwotI2VuZGlmCi19Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBUPgotaW5saW5lIGJvb2wgaXNfbmFuX2hlbHBlcihULCBjb25zdCBuZG5ib29zdDo6ZmFsc2VfdHlwZSYpCi17Ci0gICByZXR1cm4gZmFsc2U7Ci19Ci0KLX0KLQotbmFtZXNwYWNlIG1hdGh7Ci0KLW5hbWVzcGFjZSBkZXRhaWx7Ci0KLSNpZmRlZiBORE5CT09TVF9NQVRIX1VTRV9TVERfRlBDTEFTU0lGWQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1pbmxpbmUgaW50IGZwY2xhc3NpZnlfaW1wIE5ETkJPT1NUX05PX01BQ1JPX0VYUEFORChUIHQsIGNvbnN0IG5hdGl2ZV90YWcmKQotewotICAgcmV0dXJuIChzdGQ6OmZwY2xhc3NpZnkpKHQpOwotfQotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBUPgotaW5saW5lIGludCBmcGNsYXNzaWZ5X2ltcCBORE5CT09TVF9OT19NQUNST19FWFBBTkQoVCB0LCBjb25zdCBnZW5lcmljX3RhZzx0cnVlPiYpCi17Ci0gICBORE5CT09TVF9NQVRIX0lOU1RSVU1FTlRfVkFSSUFCTEUodCk7Ci0KLSAgIC8vIHdoZW5ldmVyIHBvc3NpYmxlIGNoZWNrIGZvciBOYW4ncyBmaXJzdDoKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19GUENMQVNTSUZZKSAgJiYgIWRlZmluZWQoTkROQk9PU1RfTUFUSF9ESVNBQkxFX1NURF9GUENMQVNTSUZZKQotICAgaWYoOjpuZG5ib29zdDo6bWF0aF9kZXRhaWw6OmlzX25hbl9oZWxwZXIodCwgOjpuZG5ib29zdDo6aXNfZmxvYXRpbmdfcG9pbnQ8VD4oKSkpCi0gICAgICByZXR1cm4gRlBfTkFOOwotI2VsaWYgZGVmaW5lZChpc25hbikKLSAgIGlmKG5kbmJvb3N0OjptYXRoX2RldGFpbDo6aXNfbmFuX2hlbHBlcih0LCA6Om5kbmJvb3N0Ojppc19mbG9hdGluZ19wb2ludDxUPigpKSkKLSAgICAgIHJldHVybiBGUF9OQU47Ci0jZWxpZiBkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fQk9STEFORENfXykKLSAgIGlmKDo6X2lzbmFuKG5kbmJvb3N0OjptYXRoOjp0b29sczo6cmVhbF9jYXN0PGRvdWJsZT4odCkpKQotICAgICAgcmV0dXJuIEZQX05BTjsKLSNlbmRpZgotICAgLy8gc3RkOjpmYWJzIGJyb2tlbiBvbiBhIGZldyBzeXN0ZW1zIGVzcGVjaWFsbHkgZm9yIGxvbmcgbG9uZyEhISEKLSAgIFQgYXQgPSAodCA8IFQoMCkpID8gLXQgOiB0OwotCi0gICAvLyBVc2UgYSBwcm9jZXNzIG9mIGV4Y2x1c2lvbiB0byBmaWd1cmUgb3V0Ci0gICAvLyB3aGF0IGtpbmQgb2YgdHlwZSB3ZSBoYXZlLCB0aGlzIHJlbGllcyBvbgotICAgLy8gSUVFRSBjb25mb3JtaW5nIHJlYWxzIHRoYXQgd2lsbCB0cmVhdAotICAgLy8gTmFuJ3MgYXMgdW5vcmRlcmVkLiAgU29tZSBjb21waWxlcnMKLSAgIC8vIGRvbid0IGRvIHRoaXMgb25jZSBvcHRpbWlzYXRpb25zIGFyZQotICAgLy8gdHVybmVkIG9uLCBoZW5jZSB0aGUgY2hlY2sgZm9yIG5hbidzIGFib3ZlLgotICAgaWYoYXQgPD0gKHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heCkoKSkKLSAgIHsKLSAgICAgIGlmKGF0ID49IChzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptaW4pKCkpCi0gICAgICAgICByZXR1cm4gRlBfTk9STUFMOwotICAgICAgcmV0dXJuIChhdCAhPSAwKSA/IEZQX1NVQk5PUk1BTCA6IEZQX1pFUk87Ci0gICB9Ci0gICBlbHNlIGlmKGF0ID4gKHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heCkoKSkKLSAgICAgIHJldHVybiBGUF9JTkZJTklURTsKLSAgIHJldHVybiBGUF9OQU47Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotaW5saW5lIGludCBmcGNsYXNzaWZ5X2ltcCBORE5CT09TVF9OT19NQUNST19FWFBBTkQoVCB0LCBjb25zdCBnZW5lcmljX3RhZzxmYWxzZT4mKQotewotI2lmZGVmIE5ETkJPT1NUX05PX0xJTUlUU19DT01QSUxFX1RJTUVfQ09OU1RBTlRTCi0gICBpZihzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojppc19zcGVjaWFsaXplZCkKLSAgICAgIHJldHVybiBmcGNsYXNzaWZ5X2ltcCh0LCBnZW5lcmljX3RhZzx0cnVlPigpKTsKLSNlbmRpZgotICAgLy8KLSAgIC8vIEFuIHVua25vd24gdHlwZSB3aXRoIG5vIG51bWVyaWNfbGltaXRzIHN1cHBvcnQsCi0gICAvLyBzbyB3aGF0IGFyZSB3ZSBzdXBwb3NlZCB0byBkbyB3ZSBkbyBoZXJlPwotICAgLy8KLSAgIE5ETkJPT1NUX01BVEhfSU5TVFJVTUVOVF9WQVJJQUJMRSh0KTsKLQotICAgcmV0dXJuIHQgPT0gMCA/IEZQX1pFUk8gOiBGUF9OT1JNQUw7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbnQgZnBjbGFzc2lmeV9pbXAgTkROQk9PU1RfTk9fTUFDUk9fRVhQQU5EKFQgeCwgaWVlZV9jb3B5X2FsbF9iaXRzX3RhZykKLXsKLSAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBmcF90cmFpdHM8VD46OnR5cGUgdHJhaXRzOwotCi0gICBORE5CT09TVF9NQVRIX0lOU1RSVU1FTlRfVkFSSUFCTEUoeCk7Ci0KLSAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgdHJhaXRzOjpiaXRzIGE7Ci0gICB0cmFpdHM6OmdldF9iaXRzKHgsYSk7Ci0gICBORE5CT09TVF9NQVRIX0lOU1RSVU1FTlRfVkFSSUFCTEUoYSk7Ci0gICBhICY9IHRyYWl0czo6ZXhwb25lbnQgfCB0cmFpdHM6OmZsYWcgfCB0cmFpdHM6OnNpZ25pZmljYW5kOwotICAgTkROQk9PU1RfTUFUSF9JTlNUUlVNRU5UX1ZBUklBQkxFKCh0cmFpdHM6OmV4cG9uZW50IHwgdHJhaXRzOjpmbGFnIHwgdHJhaXRzOjpzaWduaWZpY2FuZCkpOwotICAgTkROQk9PU1RfTUFUSF9JTlNUUlVNRU5UX1ZBUklBQkxFKGEpOwotCi0gICBpZihhIDw9IHRyYWl0czo6c2lnbmlmaWNhbmQpIHsKLSAgICAgIGlmKGEgPT0gMCkKLSAgICAgICAgIHJldHVybiBGUF9aRVJPOwotICAgICAgZWxzZQotICAgICAgICAgcmV0dXJuIEZQX1NVQk5PUk1BTDsKLSAgIH0KLQotICAgaWYoYSA8IHRyYWl0czo6ZXhwb25lbnQpIHJldHVybiBGUF9OT1JNQUw7Ci0KLSAgIGEgJj0gdHJhaXRzOjpzaWduaWZpY2FuZDsKLSAgIGlmKGEgPT0gMCkgcmV0dXJuIEZQX0lORklOSVRFOwotCi0gICByZXR1cm4gRlBfTkFOOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW50IGZwY2xhc3NpZnlfaW1wIE5ETkJPT1NUX05PX01BQ1JPX0VYUEFORChUIHgsIGllZWVfY29weV9sZWFkaW5nX2JpdHNfdGFnKQotewotICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGZwX3RyYWl0czxUPjo6dHlwZSB0cmFpdHM7Ci0KLSAgIE5ETkJPT1NUX01BVEhfSU5TVFJVTUVOVF9WQVJJQUJMRSh4KTsKLQotICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSB0cmFpdHM6OmJpdHMgYTsKLSAgIHRyYWl0czo6Z2V0X2JpdHMoeCxhKTsKLSAgIGEgJj0gdHJhaXRzOjpleHBvbmVudCB8IHRyYWl0czo6ZmxhZyB8IHRyYWl0czo6c2lnbmlmaWNhbmQ7Ci0KLSAgIGlmKGEgPD0gdHJhaXRzOjpzaWduaWZpY2FuZCkgewotICAgICAgaWYoeCA9PSAwKQotICAgICAgICAgcmV0dXJuIEZQX1pFUk87Ci0gICAgICBlbHNlCi0gICAgICAgICByZXR1cm4gRlBfU1VCTk9STUFMOwotICAgfQotCi0gICBpZihhIDwgdHJhaXRzOjpleHBvbmVudCkgcmV0dXJuIEZQX05PUk1BTDsKLQotICAgYSAmPSB0cmFpdHM6OnNpZ25pZmljYW5kOwotICAgdHJhaXRzOjpzZXRfYml0cyh4LGEpOwotICAgaWYoeCA9PSAwKSByZXR1cm4gRlBfSU5GSU5JVEU7Ci0KLSAgIHJldHVybiBGUF9OQU47Ci19Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01BVEhfVVNFX1NURF9GUENMQVNTSUZZKSAmJiAoZGVmaW5lZChORE5CT09TVF9NQVRIX05PX05BVElWRV9MT05HX0RPVUJMRV9GUF9DTEFTU0lGWSkgfHwgZGVmaW5lZChORE5CT09TVF9NQVRIX05PX0xPTkdfRE9VQkxFX01BVEhfRlVOQ1RJT05TKSkKLWlubGluZSBpbnQgZnBjbGFzc2lmeV9pbXAgTkROQk9PU1RfTk9fTUFDUk9fRVhQQU5EKGxvbmcgZG91YmxlIHQsIGNvbnN0IG5hdGl2ZV90YWcmKQotewotICAgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpkZXRhaWw6OmZwY2xhc3NpZnlfaW1wKHQsIGdlbmVyaWNfdGFnPHRydWU+KCkpOwotfQotI2VuZGlmCi0KLX0gIC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1pbmxpbmUgaW50IGZwY2xhc3NpZnkgTkROQk9PU1RfTk9fTUFDUk9fRVhQQU5EKFQgdCkKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmcF90cmFpdHM8VD46OnR5cGUgdHJhaXRzOwotICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6Om1ldGhvZCBtZXRob2Q7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgdmFsdWVfdHlwZTsKLSNpZmRlZiBORE5CT09TVF9OT19MSU1JVFNfQ09NUElMRV9USU1FX0NPTlNUQU5UUwotICAgaWYoc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfc3BlY2lhbGl6ZWQgJiYgZGV0YWlsOjppc19nZW5lcmljX3RhZ19mYWxzZShzdGF0aWNfY2FzdDxtZXRob2QqPigwKSkpCi0gICAgICByZXR1cm4gZGV0YWlsOjpmcGNsYXNzaWZ5X2ltcChzdGF0aWNfY2FzdDx2YWx1ZV90eXBlPih0KSwgZGV0YWlsOjpnZW5lcmljX3RhZzx0cnVlPigpKTsKLSAgIHJldHVybiBkZXRhaWw6OmZwY2xhc3NpZnlfaW1wKHN0YXRpY19jYXN0PHZhbHVlX3R5cGU+KHQpLCBtZXRob2QoKSk7Ci0jZWxzZQotICAgcmV0dXJuIGRldGFpbDo6ZnBjbGFzc2lmeV9pbXAoc3RhdGljX2Nhc3Q8dmFsdWVfdHlwZT4odCksIG1ldGhvZCgpKTsKLSNlbmRpZgotfQotCi0jaWZkZWYgTkROQk9PU1RfTUFUSF9OT19MT05HX0RPVUJMRV9NQVRIX0ZVTkNUSU9OUwotdGVtcGxhdGUgPD4KLWlubGluZSBpbnQgZnBjbGFzc2lmeTxsb25nIGRvdWJsZT4gTkROQk9PU1RfTk9fTUFDUk9fRVhQQU5EKGxvbmcgZG91YmxlIHQpCi17Ci0gICB0eXBlZGVmIGRldGFpbDo6ZnBfdHJhaXRzPGxvbmcgZG91YmxlPjo6dHlwZSB0cmFpdHM7Ci0gICB0eXBlZGVmIHRyYWl0czo6bWV0aG9kIG1ldGhvZDsKLSAgIHR5cGVkZWYgbG9uZyBkb3VibGUgdmFsdWVfdHlwZTsKLSNpZmRlZiBORE5CT09TVF9OT19MSU1JVFNfQ09NUElMRV9USU1FX0NPTlNUQU5UUwotICAgaWYoc3RkOjpudW1lcmljX2xpbWl0czxsb25nIGRvdWJsZT46OmlzX3NwZWNpYWxpemVkICYmIGRldGFpbDo6aXNfZ2VuZXJpY190YWdfZmFsc2Uoc3RhdGljX2Nhc3Q8bWV0aG9kKj4oMCkpKQotICAgICAgcmV0dXJuIGRldGFpbDo6ZnBjbGFzc2lmeV9pbXAoc3RhdGljX2Nhc3Q8dmFsdWVfdHlwZT4odCksIGRldGFpbDo6Z2VuZXJpY190YWc8dHJ1ZT4oKSk7Ci0gICByZXR1cm4gZGV0YWlsOjpmcGNsYXNzaWZ5X2ltcChzdGF0aWNfY2FzdDx2YWx1ZV90eXBlPih0KSwgbWV0aG9kKCkpOwotI2Vsc2UKLSAgIHJldHVybiBkZXRhaWw6OmZwY2xhc3NpZnlfaW1wKHN0YXRpY19jYXN0PHZhbHVlX3R5cGU+KHQpLCBtZXRob2QoKSk7Ci0jZW5kaWYKLX0KLSNlbmRpZgotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotI2lmZGVmIE5ETkJPT1NUX01BVEhfVVNFX1NURF9GUENMQVNTSUZZCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBpbmxpbmUgYm9vbCBpc2Zpbml0ZV9pbXBsKFQgeCwgbmF0aXZlX3RhZyBjb25zdCYpCi0gICAgewotICAgICAgICByZXR1cm4gKHN0ZDo6aXNmaW5pdGUpKHgpOwotICAgIH0KLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBpbmxpbmUgYm9vbCBpc2Zpbml0ZV9pbXBsKFQgeCwgZ2VuZXJpY190YWc8dHJ1ZT4gY29uc3QmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHggPj0gLShzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgpKCkKLSAgICAgICAgICAgICYmIHggPD0gKHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heCkoKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIGlubGluZSBib29sIGlzZmluaXRlX2ltcGwoVCB4LCBnZW5lcmljX3RhZzxmYWxzZT4gY29uc3QmKQotICAgIHsKLSNpZmRlZiBORE5CT09TVF9OT19MSU1JVFNfQ09NUElMRV9USU1FX0NPTlNUQU5UUwotICAgICAgaWYoc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfc3BlY2lhbGl6ZWQpCi0gICAgICAgICByZXR1cm4gaXNmaW5pdGVfaW1wbCh4LCBnZW5lcmljX3RhZzx0cnVlPigpKTsKLSNlbmRpZgotICAgICAgICh2b2lkKXg7IC8vIHdhcm5pbmcgc3VwcmVzc2lvbi4KLSAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIGlubGluZSBib29sIGlzZmluaXRlX2ltcGwoVCB4LCBpZWVlX3RhZyBjb25zdCYpCi0gICAgewotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgZGV0YWlsOjpmcF90cmFpdHM8VD46OnR5cGUgdHJhaXRzOwotICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHRyYWl0czo6Yml0cyBhOwotICAgICAgICB0cmFpdHM6OmdldF9iaXRzKHgsYSk7Ci0gICAgICAgIGEgJj0gdHJhaXRzOjpleHBvbmVudDsKLSAgICAgICAgcmV0dXJuIGEgIT0gdHJhaXRzOjpleHBvbmVudDsKLSAgICB9Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01BVEhfVVNFX1NURF9GUENMQVNTSUZZKSAmJiBkZWZpbmVkKE5ETkJPT1NUX01BVEhfTk9fTkFUSVZFX0xPTkdfRE9VQkxFX0ZQX0NMQVNTSUZZKQotaW5saW5lIGJvb2wgaXNmaW5pdGVfaW1wbCBORE5CT09TVF9OT19NQUNST19FWFBBTkQobG9uZyBkb3VibGUgdCwgY29uc3QgbmF0aXZlX3RhZyYpCi17Ci0gICByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmRldGFpbDo6aXNmaW5pdGVfaW1wbCh0LCBnZW5lcmljX3RhZzx0cnVlPigpKTsKLX0KLSNlbmRpZgotCi19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUgYm9vbCAoaXNmaW5pdGUpKFQgeCkKLXsgLy8hPCBcYnJpZWYgcmV0dXJuIHRydWUgaWYgZmxvYXRpbmctcG9pbnQgdHlwZSB0IGlzIGZpbml0ZS4KLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmcF90cmFpdHM8VD46OnR5cGUgdHJhaXRzOwotICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6Om1ldGhvZCBtZXRob2Q7Ci0gICAvLyB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojppc19mbG9hdGluZ19wb2ludDxUPjo6dHlwZSBmcF90YWc7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgdmFsdWVfdHlwZTsKLSAgIHJldHVybiBkZXRhaWw6OmlzZmluaXRlX2ltcGwoc3RhdGljX2Nhc3Q8dmFsdWVfdHlwZT4oeCksIG1ldGhvZCgpKTsKLX0KLQotI2lmZGVmIE5ETkJPT1NUX01BVEhfTk9fTE9OR19ET1VCTEVfTUFUSF9GVU5DVElPTlMKLXRlbXBsYXRlPD4KLWlubGluZSBib29sIChpc2Zpbml0ZSkobG9uZyBkb3VibGUgeCkKLXsgLy8hPCBcYnJpZWYgcmV0dXJuIHRydWUgaWYgZmxvYXRpbmctcG9pbnQgdHlwZSB0IGlzIGZpbml0ZS4KLSAgIHR5cGVkZWYgZGV0YWlsOjpmcF90cmFpdHM8bG9uZyBkb3VibGU+Ojp0eXBlIHRyYWl0czsKLSAgIHR5cGVkZWYgdHJhaXRzOjptZXRob2QgbWV0aG9kOwotICAgdHlwZWRlZiBuZG5ib29zdDo6aXNfZmxvYXRpbmdfcG9pbnQ8bG9uZyBkb3VibGU+Ojp0eXBlIGZwX3RhZzsKLSAgIHR5cGVkZWYgbG9uZyBkb3VibGUgdmFsdWVfdHlwZTsKLSAgIHJldHVybiBkZXRhaWw6OmlzZmluaXRlX2ltcGwoc3RhdGljX2Nhc3Q8dmFsdWVfdHlwZT4oeCksIG1ldGhvZCgpKTsKLX0KLSNlbmRpZgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotI2lmZGVmIE5ETkJPT1NUX01BVEhfVVNFX1NURF9GUENMQVNTSUZZCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBpbmxpbmUgYm9vbCBpc25vcm1hbF9pbXBsKFQgeCwgbmF0aXZlX3RhZyBjb25zdCYpCi0gICAgewotICAgICAgICByZXR1cm4gKHN0ZDo6aXNub3JtYWwpKHgpOwotICAgIH0KLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBpbmxpbmUgYm9vbCBpc25vcm1hbF9pbXBsKFQgeCwgZ2VuZXJpY190YWc8dHJ1ZT4gY29uc3QmKQotICAgIHsKLSAgICAgICAgaWYoeCA8IDApIHggPSAteDsKLSAgICAgICAgcmV0dXJuIHggPj0gKHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1pbikoKQotICAgICAgICAgICAgJiYgeCA8PSAoc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWF4KSgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgaW5saW5lIGJvb2wgaXNub3JtYWxfaW1wbChUIHgsIGdlbmVyaWNfdGFnPGZhbHNlPiBjb25zdCYpCi0gICAgewotI2lmZGVmIE5ETkJPT1NUX05PX0xJTUlUU19DT01QSUxFX1RJTUVfQ09OU1RBTlRTCi0gICAgICBpZihzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojppc19zcGVjaWFsaXplZCkKLSAgICAgICAgIHJldHVybiBpc25vcm1hbF9pbXBsKHgsIGdlbmVyaWNfdGFnPHRydWU+KCkpOwotI2VuZGlmCi0gICAgICAgcmV0dXJuICEoeCA9PSAwKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIGlubGluZSBib29sIGlzbm9ybWFsX2ltcGwoVCB4LCBpZWVlX3RhZyBjb25zdCYpCi0gICAgewotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgZGV0YWlsOjpmcF90cmFpdHM8VD46OnR5cGUgdHJhaXRzOwotICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHRyYWl0czo6Yml0cyBhOwotICAgICAgICB0cmFpdHM6OmdldF9iaXRzKHgsYSk7Ci0gICAgICAgIGEgJj0gdHJhaXRzOjpleHBvbmVudCB8IHRyYWl0czo6ZmxhZzsKLSAgICAgICAgcmV0dXJuIChhICE9IDApICYmIChhIDwgdHJhaXRzOjpleHBvbmVudCk7Ci0gICAgfQotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NQVRIX1VTRV9TVERfRlBDTEFTU0lGWSkgJiYgZGVmaW5lZChORE5CT09TVF9NQVRIX05PX05BVElWRV9MT05HX0RPVUJMRV9GUF9DTEFTU0lGWSkKLWlubGluZSBib29sIGlzbm9ybWFsX2ltcGwgTkROQk9PU1RfTk9fTUFDUk9fRVhQQU5EKGxvbmcgZG91YmxlIHQsIGNvbnN0IG5hdGl2ZV90YWcmKQotewotICAgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpkZXRhaWw6Omlzbm9ybWFsX2ltcGwodCwgZ2VuZXJpY190YWc8dHJ1ZT4oKSk7Ci19Ci0jZW5kaWYKLQotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lIGJvb2wgKGlzbm9ybWFsKShUIHgpCi17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6ZnBfdHJhaXRzPFQ+Ojp0eXBlIHRyYWl0czsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjptZXRob2QgbWV0aG9kOwotICAgLy90eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojppc19mbG9hdGluZ19wb2ludDxUPjo6dHlwZSBmcF90YWc7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgdmFsdWVfdHlwZTsKLSAgIHJldHVybiBkZXRhaWw6Omlzbm9ybWFsX2ltcGwoc3RhdGljX2Nhc3Q8dmFsdWVfdHlwZT4oeCksIG1ldGhvZCgpKTsKLX0KLQotI2lmZGVmIE5ETkJPT1NUX01BVEhfTk9fTE9OR19ET1VCTEVfTUFUSF9GVU5DVElPTlMKLXRlbXBsYXRlPD4KLWlubGluZSBib29sIChpc25vcm1hbCkobG9uZyBkb3VibGUgeCkKLXsKLSAgIHR5cGVkZWYgZGV0YWlsOjpmcF90cmFpdHM8bG9uZyBkb3VibGU+Ojp0eXBlIHRyYWl0czsKLSAgIHR5cGVkZWYgdHJhaXRzOjptZXRob2QgbWV0aG9kOwotICAgdHlwZWRlZiBuZG5ib29zdDo6aXNfZmxvYXRpbmdfcG9pbnQ8bG9uZyBkb3VibGU+Ojp0eXBlIGZwX3RhZzsKLSAgIHR5cGVkZWYgbG9uZyBkb3VibGUgdmFsdWVfdHlwZTsKLSAgIHJldHVybiBkZXRhaWw6Omlzbm9ybWFsX2ltcGwoc3RhdGljX2Nhc3Q8dmFsdWVfdHlwZT4oeCksIG1ldGhvZCgpKTsKLX0KLSNlbmRpZgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotI2lmZGVmIE5ETkJPT1NUX01BVEhfVVNFX1NURF9GUENMQVNTSUZZCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBpbmxpbmUgYm9vbCBpc2luZl9pbXBsKFQgeCwgbmF0aXZlX3RhZyBjb25zdCYpCi0gICAgewotICAgICAgICByZXR1cm4gKHN0ZDo6aXNpbmYpKHgpOwotICAgIH0KLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBpbmxpbmUgYm9vbCBpc2luZl9pbXBsKFQgeCwgZ2VuZXJpY190YWc8dHJ1ZT4gY29uc3QmKQotICAgIHsKLSAgICAgICAgKHZvaWQpeDsgLy8gaW4gY2FzZSB0aGUgY29tcGlsZXIgdGhpbmtzIHRoYXQgeCBpcyB1bnVzZWQgYmVjYXVzZSBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjpoYXNfaW5maW5pdHkgaXMgZmFsc2UKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Omhhc19pbmZpbml0eQotICAgICAgICAgICAgJiYgKCB4ID09IHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmluZmluaXR5KCkKLSAgICAgICAgICAgICAgICAgfHwgeCA9PSAtc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aW5maW5pdHkoKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBpbmxpbmUgYm9vbCBpc2luZl9pbXBsKFQgeCwgZ2VuZXJpY190YWc8ZmFsc2U+IGNvbnN0JikKLSAgICB7Ci0jaWZkZWYgTkROQk9PU1RfTk9fTElNSVRTX0NPTVBJTEVfVElNRV9DT05TVEFOVFMKLSAgICAgIGlmKHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmlzX3NwZWNpYWxpemVkKQotICAgICAgICAgcmV0dXJuIGlzaW5mX2ltcGwoeCwgZ2VuZXJpY190YWc8dHJ1ZT4oKSk7Ci0jZW5kaWYKLSAgICAgICAgKHZvaWQpeDsgLy8gd2FybmluZyBzdXByZXNzaW9uLgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBpbmxpbmUgYm9vbCBpc2luZl9pbXBsKFQgeCwgaWVlZV9jb3B5X2FsbF9iaXRzX3RhZyBjb25zdCYpCi0gICAgewotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgZnBfdHJhaXRzPFQ+Ojp0eXBlIHRyYWl0czsKLQotICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHRyYWl0czo6Yml0cyBhOwotICAgICAgICB0cmFpdHM6OmdldF9iaXRzKHgsYSk7Ci0gICAgICAgIGEgJj0gdHJhaXRzOjpleHBvbmVudCB8IHRyYWl0czo6c2lnbmlmaWNhbmQ7Ci0gICAgICAgIHJldHVybiBhID09IHRyYWl0czo6ZXhwb25lbnQ7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBpbmxpbmUgYm9vbCBpc2luZl9pbXBsKFQgeCwgaWVlZV9jb3B5X2xlYWRpbmdfYml0c190YWcgY29uc3QmKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGZwX3RyYWl0czxUPjo6dHlwZSB0cmFpdHM7Ci0KLSAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSB0cmFpdHM6OmJpdHMgYTsKLSAgICAgICAgdHJhaXRzOjpnZXRfYml0cyh4LGEpOwotICAgICAgICBhICY9IHRyYWl0czo6ZXhwb25lbnQgfCB0cmFpdHM6OnNpZ25pZmljYW5kOwotICAgICAgICBpZihhICE9IHRyYWl0czo6ZXhwb25lbnQpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgdHJhaXRzOjpzZXRfYml0cyh4LDApOwotICAgICAgICByZXR1cm4geCA9PSAwOwotICAgIH0KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTUFUSF9VU0VfU1REX0ZQQ0xBU1NJRlkpICYmIGRlZmluZWQoTkROQk9PU1RfTUFUSF9OT19OQVRJVkVfTE9OR19ET1VCTEVfRlBfQ0xBU1NJRlkpCi1pbmxpbmUgYm9vbCBpc2luZl9pbXBsIE5ETkJPT1NUX05PX01BQ1JPX0VYUEFORChsb25nIGRvdWJsZSB0LCBjb25zdCBuYXRpdmVfdGFnJikKLXsKLSAgIHJldHVybiBuZG5ib29zdDo6bWF0aDo6ZGV0YWlsOjppc2luZl9pbXBsKHQsIGdlbmVyaWNfdGFnPHRydWU+KCkpOwotfQotI2VuZGlmCi0KLX0gICAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUgYm9vbCAoaXNpbmYpKFQgeCkKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmcF90cmFpdHM8VD46OnR5cGUgdHJhaXRzOwotICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6Om1ldGhvZCBtZXRob2Q7Ci0gICAvLyB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojppc19mbG9hdGluZ19wb2ludDxUPjo6dHlwZSBmcF90YWc7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgdmFsdWVfdHlwZTsKLSAgIHJldHVybiBkZXRhaWw6OmlzaW5mX2ltcGwoc3RhdGljX2Nhc3Q8dmFsdWVfdHlwZT4oeCksIG1ldGhvZCgpKTsKLX0KLQotI2lmZGVmIE5ETkJPT1NUX01BVEhfTk9fTE9OR19ET1VCTEVfTUFUSF9GVU5DVElPTlMKLXRlbXBsYXRlPD4KLWlubGluZSBib29sIChpc2luZikobG9uZyBkb3VibGUgeCkKLXsKLSAgIHR5cGVkZWYgZGV0YWlsOjpmcF90cmFpdHM8bG9uZyBkb3VibGU+Ojp0eXBlIHRyYWl0czsKLSAgIHR5cGVkZWYgdHJhaXRzOjptZXRob2QgbWV0aG9kOwotICAgdHlwZWRlZiBuZG5ib29zdDo6aXNfZmxvYXRpbmdfcG9pbnQ8bG9uZyBkb3VibGU+Ojp0eXBlIGZwX3RhZzsKLSAgIHR5cGVkZWYgbG9uZyBkb3VibGUgdmFsdWVfdHlwZTsKLSAgIHJldHVybiBkZXRhaWw6OmlzaW5mX2ltcGwoc3RhdGljX2Nhc3Q8dmFsdWVfdHlwZT4oeCksIG1ldGhvZCgpKTsKLX0KLSNlbmRpZgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotI2lmZGVmIE5ETkJPT1NUX01BVEhfVVNFX1NURF9GUENMQVNTSUZZCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBpbmxpbmUgYm9vbCBpc25hbl9pbXBsKFQgeCwgbmF0aXZlX3RhZyBjb25zdCYpCi0gICAgewotICAgICAgICByZXR1cm4gKHN0ZDo6aXNuYW4pKHgpOwotICAgIH0KLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBpbmxpbmUgYm9vbCBpc25hbl9pbXBsKFQgeCwgZ2VuZXJpY190YWc8dHJ1ZT4gY29uc3QmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Omhhc19pbmZpbml0eQotICAgICAgICAgICAgPyAhKHggPD0gc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aW5maW5pdHkoKSkKLSAgICAgICAgICAgIDogeCAhPSB4OwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgaW5saW5lIGJvb2wgaXNuYW5faW1wbChUIHgsIGdlbmVyaWNfdGFnPGZhbHNlPiBjb25zdCYpCi0gICAgewotI2lmZGVmIE5ETkJPT1NUX05PX0xJTUlUU19DT01QSUxFX1RJTUVfQ09OU1RBTlRTCi0gICAgICBpZihzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojppc19zcGVjaWFsaXplZCkKLSAgICAgICAgIHJldHVybiBpc25hbl9pbXBsKHgsIGdlbmVyaWNfdGFnPHRydWU+KCkpOwotI2VuZGlmCi0gICAgICAgICh2b2lkKXg7IC8vIHdhcm5pbmcgc3VwcmVzc2lvbgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBpbmxpbmUgYm9vbCBpc25hbl9pbXBsKFQgeCwgaWVlZV9jb3B5X2FsbF9iaXRzX3RhZyBjb25zdCYpCi0gICAgewotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgZnBfdHJhaXRzPFQ+Ojp0eXBlIHRyYWl0czsKLQotICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHRyYWl0czo6Yml0cyBhOwotICAgICAgICB0cmFpdHM6OmdldF9iaXRzKHgsYSk7Ci0gICAgICAgIGEgJj0gdHJhaXRzOjpleHBvbmVudCB8IHRyYWl0czo6c2lnbmlmaWNhbmQ7Ci0gICAgICAgIHJldHVybiBhID4gdHJhaXRzOjpleHBvbmVudDsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIGlubGluZSBib29sIGlzbmFuX2ltcGwoVCB4LCBpZWVlX2NvcHlfbGVhZGluZ19iaXRzX3RhZyBjb25zdCYpCi0gICAgewotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgZnBfdHJhaXRzPFQ+Ojp0eXBlIHRyYWl0czsKLQotICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHRyYWl0czo6Yml0cyBhOwotICAgICAgICB0cmFpdHM6OmdldF9iaXRzKHgsYSk7Ci0KLSAgICAgICAgYSAmPSB0cmFpdHM6OmV4cG9uZW50IHwgdHJhaXRzOjpzaWduaWZpY2FuZDsKLSAgICAgICAgaWYoYSA8IHRyYWl0czo6ZXhwb25lbnQpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgYSAmPSB0cmFpdHM6OnNpZ25pZmljYW5kOwotICAgICAgICB0cmFpdHM6OnNldF9iaXRzKHgsYSk7Ci0gICAgICAgIHJldHVybiB4ICE9IDA7Ci0gICAgfQotCi19ICAgLy8gbmFtZXNwYWNlIGRldGFpbAotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lIGJvb2wgKGlzbmFuKShUIHgpCi17IC8vITwgXGJyaWVmIHJldHVybiB0cnVlIGlmIGZsb2F0aW5nLXBvaW50IHR5cGUgdCBpcyBOYU4gKE5vdCBBIE51bWJlcikuCi0gICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6ZnBfdHJhaXRzPFQ+Ojp0eXBlIHRyYWl0czsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjptZXRob2QgbWV0aG9kOwotICAgLy8gdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6aXNfZmxvYXRpbmdfcG9pbnQ8VD46OnR5cGUgZnBfdGFnOwotICAgcmV0dXJuIGRldGFpbDo6aXNuYW5faW1wbCh4LCBtZXRob2QoKSk7Ci19Ci0KLSNpZmRlZiBpc25hbgotdGVtcGxhdGUgPD4gaW5saW5lIGJvb2wgaXNuYW4gTkROQk9PU1RfTk9fTUFDUk9fRVhQQU5EPGZsb2F0PihmbG9hdCB0KXsgcmV0dXJuIDo6bmRuYm9vc3Q6Om1hdGhfZGV0YWlsOjppc19uYW5faGVscGVyKHQsIG5kbmJvb3N0Ojp0cnVlX3R5cGUoKSk7IH0KLXRlbXBsYXRlIDw+IGlubGluZSBib29sIGlzbmFuIE5ETkJPT1NUX05PX01BQ1JPX0VYUEFORDxkb3VibGU+KGRvdWJsZSB0KXsgcmV0dXJuIDo6bmRuYm9vc3Q6Om1hdGhfZGV0YWlsOjppc19uYW5faGVscGVyKHQsIG5kbmJvb3N0Ojp0cnVlX3R5cGUoKSk7IH0KLXRlbXBsYXRlIDw+IGlubGluZSBib29sIGlzbmFuIE5ETkJPT1NUX05PX01BQ1JPX0VYUEFORDxsb25nIGRvdWJsZT4obG9uZyBkb3VibGUgdCl7IHJldHVybiA6Om5kbmJvb3N0OjptYXRoX2RldGFpbDo6aXNfbmFuX2hlbHBlcih0LCBuZG5ib29zdDo6dHJ1ZV90eXBlKCkpOyB9Ci0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX01BVEhfTk9fTE9OR19ET1VCTEVfTUFUSF9GVU5DVElPTlMpCi10ZW1wbGF0ZTw+Ci1pbmxpbmUgYm9vbCAoaXNuYW4pKGxvbmcgZG91YmxlIHgpCi17IC8vITwgXGJyaWVmIHJldHVybiB0cnVlIGlmIGZsb2F0aW5nLXBvaW50IHR5cGUgdCBpcyBOYU4gKE5vdCBBIE51bWJlcikuCi0gICB0eXBlZGVmIGRldGFpbDo6ZnBfdHJhaXRzPGxvbmcgZG91YmxlPjo6dHlwZSB0cmFpdHM7Ci0gICB0eXBlZGVmIHRyYWl0czo6bWV0aG9kIG1ldGhvZDsKLSAgIHR5cGVkZWYgbmRuYm9vc3Q6OmlzX2Zsb2F0aW5nX3BvaW50PGxvbmcgZG91YmxlPjo6dHlwZSBmcF90YWc7Ci0gICByZXR1cm4gZGV0YWlsOjppc25hbl9pbXBsKHgsIG1ldGhvZCgpKTsKLX0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBtYXRoCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfTUFUSF9GUENMQVNTSUZZX0hQUAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21hdGgvc3BlY2lhbF9mdW5jdGlvbnMvbWF0aF9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tYXRoL3NwZWNpYWxfZnVuY3Rpb25zL21hdGhfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDRlMTg2Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21hdGgvc3BlY2lhbF9mdW5jdGlvbnMvbWF0aF9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQwOCArMCwwIEBACi0vLyBtYXRoX2Z3ZC5ocHAKLQotLy8gVE9ETyByZXZpc2UgY29tcGxldGVseSBmb3IgbmV3IGRpc3RyaWJ1dGlvbiBjbGFzc2VzLgotCi0vLyBDb3B5cmlnaHQgUGF1bCBBLiBCcmlzdG93IDIwMDYuCi0vLyBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDYuCi0KLS8vIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0vLyBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0Ci0vLyBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gT21uaWJ1cyBsaXN0IG9mIGZvcndhcmQgZGVjbGFyYXRpb25zIG9mIG1hdGggc3BlY2lhbCBmdW5jdGlvbnMuCi0KLS8vIElUID0gSW50ZWdlciB0eXBlLgotLy8gUlQgPSBSZWFsIHR5cGUgKGJ1aWx0LWluIGZsb2F0aW5nLXBvaW50IHR5cGVzLCBmbG9hdCwgZG91YmxlLCBsb25nIGRvdWJsZSkgJiBVc2VyIERlZmluZWQgVHlwZXMKLS8vIEFUID0gSW50ZWdlciBvciBSZWFsIHR5cGUKLQotI2lmbmRlZiBORE5CT09TVF9NQVRIX1NQRUNJQUxfTUFUSF9GV0RfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX01BVEhfU1BFQ0lBTF9NQVRIX0ZXRF9IUFAKLQotI2lmZGVmIF9NU0NfVkVSCi0jcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbWF0aC9zcGVjaWFsX2Z1bmN0aW9ucy9kZXRhaWwvcm91bmRfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tYXRoL3Rvb2xzL3Byb21vdGlvbi5ocHA+IC8vIGZvciBhcmd1bWVudCBwcm9tb3Rpb24uCi0jaW5jbHVkZSA8bmRuYm9vc3QvbWF0aC9wb2xpY2llcy9wb2xpY3kuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9jb21wYXJpc29uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvbm9fdHIxL2NvbXBsZXguaHBwPgotCi0jZGVmaW5lIE5ETkJPT1NUX05PX01BQ1JPX0VYUEFORCAvKiovCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgbmFtZXNwYWNlIG1hdGgKLSAgIHsgLy8gTWF0aCBmdW5jdGlvbnMgKGluIHJvdWdobHkgYWxwaGFiZXRpYyBvcmRlcikuCi0KLSAgIC8vIEJldGEgZnVuY3Rpb25zLgotICAgdGVtcGxhdGUgPGNsYXNzIFJUMSwgY2xhc3MgUlQyPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMj46OnR5cGUKLSAgICAgICAgIGJldGEoUlQxIGEsIFJUMiBiKTsgLy8gQmV0YSBmdW5jdGlvbiAoMiBhcmd1bWVudHMpLgotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDIsIGNsYXNzIEE+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyLCBBPjo6dHlwZQotICAgICAgICAgYmV0YShSVDEgYSwgUlQyIGIsIEEgeCk7IC8vIEJldGEgZnVuY3Rpb24gKDMgYXJndW1lbnRzKS4KLQotICAgdGVtcGxhdGUgPGNsYXNzIFJUMSwgY2xhc3MgUlQyLCBjbGFzcyBSVDMsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDIsIFJUMz46OnR5cGUKLSAgICAgICAgIGJldGEoUlQxIGEsIFJUMiBiLCBSVDMgeCwgY29uc3QgUG9saWN5JiBwb2wpOyAvLyBCZXRhIGZ1bmN0aW9uICgzIGFyZ3VtZW50cykuCi0KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMiwgY2xhc3MgUlQzPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMiwgUlQzPjo6dHlwZQotICAgICAgICAgYmV0YWMoUlQxIGEsIFJUMiBiLCBSVDMgeCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMiwgY2xhc3MgUlQzLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyLCBSVDM+Ojp0eXBlCi0gICAgICAgICBiZXRhYyhSVDEgYSwgUlQyIGIsIFJUMyB4LCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMiwgY2xhc3MgUlQzPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMiwgUlQzPjo6dHlwZQotICAgICAgICAgaWJldGEoUlQxIGEsIFJUMiBiLCBSVDMgeCk7IC8vIEluY29tcGxldGUgYmV0YSBmdW5jdGlvbi4KLQotICAgdGVtcGxhdGUgPGNsYXNzIFJUMSwgY2xhc3MgUlQyLCBjbGFzcyBSVDMsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDIsIFJUMz46OnR5cGUKLSAgICAgICAgIGliZXRhKFJUMSBhLCBSVDIgYiwgUlQzIHgsIGNvbnN0IFBvbGljeSYgcG9sKTsgLy8gSW5jb21wbGV0ZSBiZXRhIGZ1bmN0aW9uLgotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDIsIGNsYXNzIFJUMz4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDIsIFJUMz46OnR5cGUKLSAgICAgICAgIGliZXRhYyhSVDEgYSwgUlQyIGIsIFJUMyB4KTsgLy8gSW5jb21wbGV0ZSBiZXRhIGNvbXBsZW1lbnQgZnVuY3Rpb24uCi0KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMiwgY2xhc3MgUlQzLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyLCBSVDM+Ojp0eXBlCi0gICAgICAgICBpYmV0YWMoUlQxIGEsIFJUMiBiLCBSVDMgeCwgY29uc3QgUG9saWN5JiBwb2wpOyAvLyBJbmNvbXBsZXRlIGJldGEgY29tcGxlbWVudCBmdW5jdGlvbi4KLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDIsIFQzLCBUND46OnR5cGUKLSAgICAgICAgIGliZXRhX2ludihUMSBhLCBUMiBiLCBUMyBwLCBUNCogcHkpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgVDQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyLCBUMywgVDQ+Ojp0eXBlCi0gICAgICAgICBpYmV0YV9pbnYoVDEgYSwgVDIgYiwgVDMgcCwgVDQqIHB5LCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMiwgY2xhc3MgUlQzPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMiwgUlQzPjo6dHlwZQotICAgICAgICAgaWJldGFfaW52KFJUMSBhLCBSVDIgYiwgUlQzIHApOyAvLyBJbmNvbXBsZXRlIGJldGEgaW52ZXJzZSBmdW5jdGlvbi4KLQotICAgdGVtcGxhdGUgPGNsYXNzIFJUMSwgY2xhc3MgUlQyLCBjbGFzcyBSVDMsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDIsIFJUMz46OnR5cGUKLSAgICAgICAgIGliZXRhX2ludihSVDEgYSwgUlQyIGIsIFJUMyBwLCBjb25zdCBQb2xpY3kmKTsgLy8gSW5jb21wbGV0ZSBiZXRhIGludmVyc2UgZnVuY3Rpb24uCi0KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMiwgY2xhc3MgUlQzPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMiwgUlQzPjo6dHlwZQotICAgICAgICAgaWJldGFfaW52YShSVDEgYSwgUlQyIGIsIFJUMyBwKTsgLy8gSW5jb21wbGV0ZSBiZXRhIGludmVyc2UgZnVuY3Rpb24uCi0KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMiwgY2xhc3MgUlQzLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyLCBSVDM+Ojp0eXBlCi0gICAgICAgICBpYmV0YV9pbnZhKFJUMSBhLCBSVDIgYiwgUlQzIHAsIGNvbnN0IFBvbGljeSYpOyAvLyBJbmNvbXBsZXRlIGJldGEgaW52ZXJzZSBmdW5jdGlvbi4KLQotICAgdGVtcGxhdGUgPGNsYXNzIFJUMSwgY2xhc3MgUlQyLCBjbGFzcyBSVDM+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyLCBSVDM+Ojp0eXBlCi0gICAgICAgICBpYmV0YV9pbnZiKFJUMSBhLCBSVDIgYiwgUlQzIHApOyAvLyBJbmNvbXBsZXRlIGJldGEgaW52ZXJzZSBmdW5jdGlvbi4KLQotICAgdGVtcGxhdGUgPGNsYXNzIFJUMSwgY2xhc3MgUlQyLCBjbGFzcyBSVDMsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDIsIFJUMz46OnR5cGUKLSAgICAgICAgIGliZXRhX2ludmIoUlQxIGEsIFJUMiBiLCBSVDMgcCwgY29uc3QgUG9saWN5Jik7IC8vIEluY29tcGxldGUgYmV0YSBpbnZlcnNlIGZ1bmN0aW9uLgotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgVDQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMiwgVDMsIFQ0Pjo6dHlwZQotICAgICAgICAgaWJldGFjX2ludihUMSBhLCBUMiBiLCBUMyBxLCBUNCogcHkpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgVDQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyLCBUMywgVDQ+Ojp0eXBlCi0gICAgICAgICBpYmV0YWNfaW52KFQxIGEsIFQyIGIsIFQzIHEsIFQ0KiBweSwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDIsIGNsYXNzIFJUMz4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDIsIFJUMz46OnR5cGUKLSAgICAgICAgIGliZXRhY19pbnYoUlQxIGEsIFJUMiBiLCBSVDMgcSk7IC8vIEluY29tcGxldGUgYmV0YSBjb21wbGVtZW50IGludmVyc2UgZnVuY3Rpb24uCi0KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMiwgY2xhc3MgUlQzLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyLCBSVDM+Ojp0eXBlCi0gICAgICAgICBpYmV0YWNfaW52KFJUMSBhLCBSVDIgYiwgUlQzIHEsIGNvbnN0IFBvbGljeSYpOyAvLyBJbmNvbXBsZXRlIGJldGEgY29tcGxlbWVudCBpbnZlcnNlIGZ1bmN0aW9uLgotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDIsIGNsYXNzIFJUMz4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDIsIFJUMz46OnR5cGUKLSAgICAgICAgIGliZXRhY19pbnZhKFJUMSBhLCBSVDIgYiwgUlQzIHEpOyAvLyBJbmNvbXBsZXRlIGJldGEgY29tcGxlbWVudCBpbnZlcnNlIGZ1bmN0aW9uLgotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDIsIGNsYXNzIFJUMywgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMiwgUlQzPjo6dHlwZQotICAgICAgICAgaWJldGFjX2ludmEoUlQxIGEsIFJUMiBiLCBSVDMgcSwgY29uc3QgUG9saWN5Jik7IC8vIEluY29tcGxldGUgYmV0YSBjb21wbGVtZW50IGludmVyc2UgZnVuY3Rpb24uCi0KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMiwgY2xhc3MgUlQzPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMiwgUlQzPjo6dHlwZQotICAgICAgICAgaWJldGFjX2ludmIoUlQxIGEsIFJUMiBiLCBSVDMgcSk7IC8vIEluY29tcGxldGUgYmV0YSBjb21wbGVtZW50IGludmVyc2UgZnVuY3Rpb24uCi0KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMiwgY2xhc3MgUlQzLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyLCBSVDM+Ojp0eXBlCi0gICAgICAgICBpYmV0YWNfaW52YihSVDEgYSwgUlQyIGIsIFJUMyBxLCBjb25zdCBQb2xpY3kmKTsgLy8gSW5jb21wbGV0ZSBiZXRhIGNvbXBsZW1lbnQgaW52ZXJzZSBmdW5jdGlvbi4KLQotICAgdGVtcGxhdGUgPGNsYXNzIFJUMSwgY2xhc3MgUlQyLCBjbGFzcyBSVDM+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyLCBSVDM+Ojp0eXBlCi0gICAgICAgICBpYmV0YV9kZXJpdmF0aXZlKFJUMSBhLCBSVDIgYiwgUlQzIHgpOyAgLy8gZGVyaXZhdGl2ZSBvZiBpbmNvbXBsZXRlIGJldGEKLQotICAgdGVtcGxhdGUgPGNsYXNzIFJUMSwgY2xhc3MgUlQyLCBjbGFzcyBSVDMsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDIsIFJUMz46OnR5cGUKLSAgICAgICAgIGliZXRhX2Rlcml2YXRpdmUoUlQxIGEsIFJUMiBiLCBSVDMgeCwgY29uc3QgUG9saWN5JiBwb2wpOyAgLy8gZGVyaXZhdGl2ZSBvZiBpbmNvbXBsZXRlIGJldGEKLQotICAgLy8gZXJmICYgZXJmYyBlcnJvciBmdW5jdGlvbnMuCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQ+IC8vIEVycm9yIGZ1bmN0aW9uLgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVD46OnR5cGUgZXJmKFJUIHopOwotICAgdGVtcGxhdGUgPGNsYXNzIFJULCBjbGFzcyBQb2xpY3k+IC8vIEVycm9yIGZ1bmN0aW9uLgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVD46OnR5cGUgZXJmKFJUIHosIGNvbnN0IFBvbGljeSYpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQ+Ly8gRXJyb3IgZnVuY3Rpb24gY29tcGxlbWVudC4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQ+Ojp0eXBlIGVyZmMoUlQgeik7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQsIGNsYXNzIFBvbGljeT4vLyBFcnJvciBmdW5jdGlvbiBjb21wbGVtZW50LgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVD46OnR5cGUgZXJmYyhSVCB6LCBjb25zdCBQb2xpY3kmKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFJUPi8vIEVycm9yIGZ1bmN0aW9uIGludmVyc2UuCi0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUPjo6dHlwZSBlcmZfaW52KFJUIHopOwotICAgdGVtcGxhdGUgPGNsYXNzIFJULCBjbGFzcyBQb2xpY3k+Ly8gRXJyb3IgZnVuY3Rpb24gaW52ZXJzZS4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQ+Ojp0eXBlIGVyZl9pbnYoUlQgeiwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQ+Ly8gRXJyb3IgZnVuY3Rpb24gY29tcGxlbWVudCBpbnZlcnNlLgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVD46OnR5cGUgZXJmY19pbnYoUlQgeik7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQsIGNsYXNzIFBvbGljeT4vLyBFcnJvciBmdW5jdGlvbiBjb21wbGVtZW50IGludmVyc2UuCi0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUPjo6dHlwZSBlcmZjX2ludihSVCB6LCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIC8vIFBvbHlub21pYWxzOgotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDM+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMiwgVDM+Ojp0eXBlCi0gICAgICAgICBsZWdlbmRyZV9uZXh0KHVuc2lnbmVkIGwsIFQxIHgsIFQyIFBsLCBUMyBQbG0xKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlCi0gICAgICAgICBsZWdlbmRyZV9wKGludCBsLCBUIHgpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZQotICAgICAgICAgbGVnZW5kcmVfcChpbnQgbCwgVCB4LCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZQotICAgICAgICAgbGVnZW5kcmVfcSh1bnNpZ25lZCBsLCBUIHgpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZQotICAgICAgICAgbGVnZW5kcmVfcSh1bnNpZ25lZCBsLCBUIHgsIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDM+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMiwgVDM+Ojp0eXBlCi0gICAgICAgICBsZWdlbmRyZV9uZXh0KHVuc2lnbmVkIGwsIHVuc2lnbmVkIG0sIFQxIHgsIFQyIFBsLCBUMyBQbG0xKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlCi0gICAgICAgICBsZWdlbmRyZV9wKGludCBsLCBpbnQgbSwgVCB4KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUKLSAgICAgICAgIGxlZ2VuZHJlX3AoaW50IGwsIGludCBtLCBUIHgsIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDM+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMiwgVDM+Ojp0eXBlCi0gICAgICAgICBsYWd1ZXJyZV9uZXh0KHVuc2lnbmVkIG4sIFQxIHgsIFQyIExuLCBUMyBMbm0xKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDM+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMiwgVDM+Ojp0eXBlCi0gICAgICBsYWd1ZXJyZV9uZXh0KHVuc2lnbmVkIG4sIHVuc2lnbmVkIGwsIFQxIHgsIFQyIFBsLCBUMyBQbG0xKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlCi0gICAgICBsYWd1ZXJyZSh1bnNpZ25lZCBuLCBUIHgpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZQotICAgICAgbGFndWVycmUodW5zaWduZWQgbiwgdW5zaWduZWQgbSwgVCB4LCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+Ci0gICBzdHJ1Y3QgbGFndWVycmVfcmVzdWx0Ci0gICB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgICAgcG9saWNpZXM6OmlzX3BvbGljeTxUMj4sCi0gICAgICAgICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxPjo6dHlwZSwKLSAgICAgICAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDI+Ojp0eXBlCi0gICAgICA+Ojp0eXBlIHR5cGU7Ci0gICB9OwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPgotICAgdHlwZW5hbWUgbGFndWVycmVfcmVzdWx0PFQxLCBUMj46OnR5cGUKLSAgICAgIGxhZ3VlcnJlKHVuc2lnbmVkIG4sIFQxIG0sIFQyIHgpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUKLSAgICAgIGhlcm1pdGUodW5zaWduZWQgbiwgVCB4KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUKLSAgICAgIGhlcm1pdGUodW5zaWduZWQgbiwgVCB4LCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDIsIFQzPjo6dHlwZQotICAgICAgaGVybWl0ZV9uZXh0KHVuc2lnbmVkIG4sIFQxIHgsIFQyIEhuLCBUMyBIbm0xKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj4KLSAgIHN0ZDo6Y29tcGxleDx0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGU+Ci0gICAgICAgICBzcGhlcmljYWxfaGFybW9uaWModW5zaWduZWQgbiwgaW50IG0sIFQxIHRoZXRhLCBUMiBwaGkpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBQb2xpY3k+Ci0gICBzdGQ6OmNvbXBsZXg8dHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlPgotICAgICAgc3BoZXJpY2FsX2hhcm1vbmljKHVuc2lnbmVkIG4sIGludCBtLCBUMSB0aGV0YSwgVDIgcGhpLCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGUKLSAgICAgICAgIHNwaGVyaWNhbF9oYXJtb25pY19yKHVuc2lnbmVkIG4sIGludCBtLCBUMSB0aGV0YSwgVDIgcGhpKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlCi0gICAgICBzcGhlcmljYWxfaGFybW9uaWNfcih1bnNpZ25lZCBuLCBpbnQgbSwgVDEgdGhldGEsIFQyIHBoaSwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlCi0gICAgICAgICBzcGhlcmljYWxfaGFybW9uaWNfaSh1bnNpZ25lZCBuLCBpbnQgbSwgVDEgdGhldGEsIFQyIHBoaSk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZQotICAgICAgc3BoZXJpY2FsX2hhcm1vbmljX2kodW5zaWduZWQgbiwgaW50IG0sIFQxIHRoZXRhLCBUMiBwaGksIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgLy8gRWxsaXB0aWMgaW50ZWdyYWxzOgotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDM+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMiwgVDM+Ojp0eXBlCi0gICAgICAgICBlbGxpbnRfcmYoVDEgeCwgVDIgeSwgVDMgeik7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMiwgVDM+Ojp0eXBlCi0gICAgICAgICBlbGxpbnRfcmYoVDEgeCwgVDIgeSwgVDMgeiwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMz4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyLCBUMz46OnR5cGUKLSAgICAgICAgIGVsbGludF9yZChUMSB4LCBUMiB5LCBUMyB6KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyLCBUMz46OnR5cGUKLSAgICAgICAgIGVsbGludF9yZChUMSB4LCBUMiB5LCBUMyB6LCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGUKLSAgICAgICAgIGVsbGludF9yYyhUMSB4LCBUMiB5KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlCi0gICAgICAgICBlbGxpbnRfcmMoVDEgeCwgVDIgeSwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgVDQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMiwgVDMsIFQ0Pjo6dHlwZQotICAgICAgICAgZWxsaW50X3JqKFQxIHgsIFQyIHksIFQzIHosIFQ0IHApOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgVDQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyLCBUMywgVDQ+Ojp0eXBlCi0gICAgICAgICBlbGxpbnRfcmooVDEgeCwgVDIgeSwgVDMgeiwgVDQgcCwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgZWxsaW50XzIoVCBrKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZSBlbGxpbnRfMihUMSBrLCBUMiBwaGkpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGUgZWxsaW50XzIoVDEgaywgVDIgcGhpLCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBlbGxpbnRfMShUIGspOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlIGVsbGludF8xKFQxIGssIFQyIHBoaSk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZSBlbGxpbnRfMShUMSBrLCBUMiBwaGksIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgbmFtZXNwYWNlIGRldGFpbHsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIFY+Ci0gICBzdHJ1Y3QgZWxsaW50XzNfcmVzdWx0Ci0gICB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgICAgcG9saWNpZXM6OmlzX3BvbGljeTxWPiwKLSAgICAgICAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUsCi0gICAgICAgICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQsIFUsIFY+Ojp0eXBlCi0gICAgICA+Ojp0eXBlIHR5cGU7Ci0gICB9OwotCi0gICB9IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMz4KLSAgIHR5cGVuYW1lIGRldGFpbDo6ZWxsaW50XzNfcmVzdWx0PFQxLCBUMiwgVDM+Ojp0eXBlIGVsbGludF8zKFQxIGssIFQyIHYsIFQzIHBoaSk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMiwgVDM+Ojp0eXBlIGVsbGludF8zKFQxIGssIFQyIHYsIFQzIHBoaSwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlIGVsbGludF8zKFQxIGssIFQyIHYpOwotCi0gICAvLyBGYWN0b3JpYWwgZnVuY3Rpb25zLgotICAgLy8gTm90ZTogbm90IGZvciBpbnRlZ3JhbCB0eXBlcywgYXQgcHJlc2VudC4KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVD4KLSAgIHN0cnVjdCBtYXhfZmFjdG9yaWFsOwotICAgdGVtcGxhdGUgPGNsYXNzIFJUPgotICAgUlQgZmFjdG9yaWFsKHVuc2lnbmVkIGludCk7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQsIGNsYXNzIFBvbGljeT4KLSAgIFJUIGZhY3RvcmlhbCh1bnNpZ25lZCBpbnQsIGNvbnN0IFBvbGljeSYgcG9sKTsKLSAgIHRlbXBsYXRlIDxjbGFzcyBSVD4KLSAgIFJUIHVuY2hlY2tlZF9mYWN0b3JpYWwodW5zaWduZWQgaW50IE5ETkJPT1NUX01BVEhfQVBQRU5EX0VYUExJQ0lUX1RFTVBMQVRFX1RZUEUoUlQpKTsKLSAgIHRlbXBsYXRlIDxjbGFzcyBSVD4KLSAgIFJUIGRvdWJsZV9mYWN0b3JpYWwodW5zaWduZWQgaSk7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQsIGNsYXNzIFBvbGljeT4KLSAgIFJUIGRvdWJsZV9mYWN0b3JpYWwodW5zaWduZWQgaSwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUPjo6dHlwZSBmYWxsaW5nX2ZhY3RvcmlhbChSVCB4LCB1bnNpZ25lZCBuKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFJULCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUPjo6dHlwZSBmYWxsaW5nX2ZhY3RvcmlhbChSVCB4LCB1bnNpZ25lZCBuLCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVD4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQ+Ojp0eXBlIHJpc2luZ19mYWN0b3JpYWwoUlQgeCwgaW50IG4pOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQ+Ojp0eXBlIHJpc2luZ19mYWN0b3JpYWwoUlQgeCwgaW50IG4sIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgLy8gR2FtbWEgZnVuY3Rpb25zLgotICAgdGVtcGxhdGUgPGNsYXNzIFJUPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVD46OnR5cGUgdGdhbW1hKFJUIHopOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUPjo6dHlwZSB0Z2FtbWExcG0xKFJUIHopOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQ+Ojp0eXBlIHRnYW1tYTFwbTEoUlQgeiwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDI+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyPjo6dHlwZSB0Z2FtbWEoUlQxIGEsIFJUMiB6KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFJUMSwgY2xhc3MgUlQyLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyPjo6dHlwZSB0Z2FtbWEoUlQxIGEsIFJUMiB6LCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVD4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQ+Ojp0eXBlIGxnYW1tYShSVCB6LCBpbnQqIHNpZ24pOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQ+Ojp0eXBlIGxnYW1tYShSVCB6LCBpbnQqIHNpZ24sIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFJUPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVD46OnR5cGUgbGdhbW1hKFJUIHgpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQ+Ojp0eXBlIGxnYW1tYShSVCB4LCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMj4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDI+Ojp0eXBlIHRnYW1tYV9sb3dlcihSVDEgYSwgUlQyIHopOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDIsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDI+Ojp0eXBlIHRnYW1tYV9sb3dlcihSVDEgYSwgUlQyIHosIGNvbnN0IFBvbGljeSYpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDI+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyPjo6dHlwZSBnYW1tYV9xKFJUMSBhLCBSVDIgeik7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMiwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMj46OnR5cGUgZ2FtbWFfcShSVDEgYSwgUlQyIHosIGNvbnN0IFBvbGljeSYpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDI+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyPjo6dHlwZSBnYW1tYV9wKFJUMSBhLCBSVDIgeik7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMiwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMj46OnR5cGUgZ2FtbWFfcChSVDEgYSwgUlQyIHosIGNvbnN0IFBvbGljeSYpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlIHRnYW1tYV9kZWx0YV9yYXRpbyhUMSB6LCBUMiBkZWx0YSk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZSB0Z2FtbWFfZGVsdGFfcmF0aW8oVDEgeiwgVDIgZGVsdGEsIGNvbnN0IFBvbGljeSYpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlIHRnYW1tYV9yYXRpbyhUMSBhLCBUMiBiKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlIHRnYW1tYV9yYXRpbyhUMSBhLCBUMiBiLCBjb25zdCBQb2xpY3kmKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZSBnYW1tYV9wX2Rlcml2YXRpdmUoVDEgYSwgVDIgeCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZSBnYW1tYV9wX2Rlcml2YXRpdmUoVDEgYSwgVDIgeCwgY29uc3QgUG9saWN5Jik7Ci0KLSAgIC8vIGdhbW1hIGludmVyc2UuCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlIGdhbW1hX3BfaW52KFQxIGEsIFQyIHApOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGUgZ2FtbWFfcF9pbnZhKFQxIGEsIFQyIHAsIGNvbnN0IFBvbGljeSYpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlIGdhbW1hX3BfaW52YShUMSBhLCBUMiBwKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlIGdhbW1hX3BfaW52KFQxIGEsIFQyIHAsIGNvbnN0IFBvbGljeSYpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlIGdhbW1hX3FfaW52KFQxIGEsIFQyIHEpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGUgZ2FtbWFfcV9pbnYoVDEgYSwgVDIgcSwgY29uc3QgUG9saWN5Jik7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGUgZ2FtbWFfcV9pbnZhKFQxIGEsIFQyIHEpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGUgZ2FtbWFfcV9pbnZhKFQxIGEsIFQyIHEsIGNvbnN0IFBvbGljeSYpOwotCi0gICAvLyBkaWdhbW1hOgotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGRpZ2FtbWEoVCB4KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgZGlnYW1tYShUIHgsIGNvbnN0IFBvbGljeSYpOwotCi0gICAvLyBIeXBvdGVudXNlIGZ1bmN0aW9uIHNxcnQoeCBeIDIgKyB5IF4gMikuCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlCi0gICAgICAgICBoeXBvdChUMSB4LCBUMiB5KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlCi0gICAgICAgICBoeXBvdChUMSB4LCBUMiB5LCBjb25zdCBQb2xpY3kmKTsKLQotICAgLy8gY2JydCAtIGN1YmUgcm9vdC4KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVD4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQ+Ojp0eXBlIGNicnQoUlQgeik7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVCwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVD46OnR5cGUgY2JydChSVCB6LCBjb25zdCBQb2xpY3kmKTsKLQotICAgLy8gbG9nMXAgaXMgbG9nKHggKyAxKQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGxvZzFwKFQpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBsb2cxcChULCBjb25zdCBQb2xpY3kmKTsKLQotICAgLy8gbG9nMXBteCBpcyBsb2coeCArIDEpIC0geAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGxvZzFwbXgoVCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGxvZzFwbXgoVCwgY29uc3QgUG9saWN5Jik7Ci0KLSAgIC8vIEV4cCAoeCkgbWludXMgMSBmdW5jdGlvbnMuCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgZXhwbTEoVCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGV4cG0xKFQsIGNvbnN0IFBvbGljeSYpOwotCi0gICAvLyBQb3dlciAtIDEKLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGUKLSAgICAgICAgIHBvd20xKGNvbnN0IFQxIGEsIGNvbnN0IFQyIHopOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGUKLSAgICAgICAgIHBvd20xKGNvbnN0IFQxIGEsIGNvbnN0IFQyIHosIGNvbnN0IFBvbGljeSYpOwotCi0gICAvLyBzcXJ0KDEreCkgLSAxCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgc3FydDFwbTEoY29uc3QgVCYgdmFsKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgc3FydDFwbTEoY29uc3QgVCYgdmFsLCBjb25zdCBQb2xpY3kmKTsKLQotICAgLy8gc2ludXMgY2FyZGluYWxzOgotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIHNpbmNfcGkoVCB4KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgc2luY19waShUIHgsIGNvbnN0IFBvbGljeSYpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgc2luaGNfcGkoVCB4KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgc2luaGNfcGkoVCB4LCBjb25zdCBQb2xpY3kmKTsKLQotICAgLy8gaW52ZXJzZSBoeXBlcmJvbGljczoKLSAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGFzaW5oKFQgeCk7Ci0KLSAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgYXNpbmgoVCB4LCBjb25zdCBQb2xpY3kmKTsKLQotICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgYWNvc2goVCB4KTsKLQotICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBhY29zaChUIHgsIGNvbnN0IFBvbGljeSYpOwotCi0gICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBhdGFuaChUIHgpOwotCi0gICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGF0YW5oKFQgeCwgY29uc3QgUG9saWN5Jik7Ci0KLSAgIG5hbWVzcGFjZSBkZXRhaWx7Ci0KLSAgICAgIHR5cGVkZWYgbXBsOjppbnRfPDA+IGJlc3NlbF9ub19pbnRfdGFnOyAgICAgIC8vIE5vIGludGVnZXIgb3B0aW1pc2F0aW9uIHBvc3NpYmxlLgotICAgICAgdHlwZWRlZiBtcGw6OmludF88MT4gYmVzc2VsX21heWJlX2ludF90YWc7ICAgLy8gTWF5YmUgaW50ZWdlciBvcHRpbWlzYXRpb24uCi0gICAgICB0eXBlZGVmIG1wbDo6aW50XzwyPiBiZXNzZWxfaW50X3RhZzsgICAgICAgICAvLyBEZWZpbml0ZSBpbnRlZ2VyIG9wdGltaXN0YWlvbi4KLQotICAgICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgUG9saWN5PgotICAgICAgc3RydWN0IGJlc3NlbF90cmFpdHMKLSAgICAgIHsKLSAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczwKLSAgICAgICAgICAgIFQxLCBUMgotICAgICAgICAgPjo6dHlwZSByZXN1bHRfdHlwZTsKLQotICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwb2xpY2llczo6cHJlY2lzaW9uPHJlc3VsdF90eXBlLCBQb2xpY3k+Ojp0eXBlIHByZWNpc2lvbl90eXBlOwotCi0gICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgICAgICAgbXBsOjpvcl88Ci0gICAgICAgICAgICAgICBtcGw6Omxlc3NfZXF1YWw8cHJlY2lzaW9uX3R5cGUsIG1wbDo6aW50XzwwPiA+LAotICAgICAgICAgICAgICAgbXBsOjpncmVhdGVyPHByZWNpc2lvbl90eXBlLCBtcGw6OmludF88NjQ+ID4gPiwKLSAgICAgICAgICAgIGJlc3NlbF9ub19pbnRfdGFnLAotICAgICAgICAgICAgdHlwZW5hbWUgbXBsOjppZl88Ci0gICAgICAgICAgICAgICBpc19pbnRlZ3JhbDxUMT4sCi0gICAgICAgICAgICAgICBiZXNzZWxfaW50X3RhZywKLSAgICAgICAgICAgICAgIGJlc3NlbF9tYXliZV9pbnRfdGFnCi0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICA+Ojp0eXBlIG9wdGltaXNhdGlvbl90YWc7Ci0gICAgICB9OwotICAgfSAvLyBkZXRhaWwKLQotICAgLy8gQmVzc2VsIGZ1bmN0aW9uczoKLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIGRldGFpbDo6YmVzc2VsX3RyYWl0czxUMSwgVDIsIFBvbGljeT46OnJlc3VsdF90eXBlIGN5bF9iZXNzZWxfaihUMSB2LCBUMiB4LCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+Ci0gICB0eXBlbmFtZSBkZXRhaWw6OmJlc3NlbF90cmFpdHM8VDEsIFQyLCBwb2xpY2llczo6cG9saWN5PD4gPjo6cmVzdWx0X3R5cGUgY3lsX2Jlc3NlbF9qKFQxIHYsIFQyIHgpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgZGV0YWlsOjpiZXNzZWxfdHJhaXRzPFQsIFQsIFBvbGljeT46OnJlc3VsdF90eXBlIHNwaF9iZXNzZWwodW5zaWduZWQgdiwgVCB4LCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgdHlwZW5hbWUgZGV0YWlsOjpiZXNzZWxfdHJhaXRzPFQsIFQsIHBvbGljaWVzOjpwb2xpY3k8PiA+OjpyZXN1bHRfdHlwZSBzcGhfYmVzc2VsKHVuc2lnbmVkIHYsIFQgeCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIGRldGFpbDo6YmVzc2VsX3RyYWl0czxUMSwgVDIsIFBvbGljeT46OnJlc3VsdF90eXBlIGN5bF9iZXNzZWxfaShUMSB2LCBUMiB4LCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+Ci0gICB0eXBlbmFtZSBkZXRhaWw6OmJlc3NlbF90cmFpdHM8VDEsIFQyLCBwb2xpY2llczo6cG9saWN5PD4gPjo6cmVzdWx0X3R5cGUgY3lsX2Jlc3NlbF9pKFQxIHYsIFQyIHgpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSBkZXRhaWw6OmJlc3NlbF90cmFpdHM8VDEsIFQyLCBQb2xpY3k+OjpyZXN1bHRfdHlwZSBjeWxfYmVzc2VsX2soVDEgdiwgVDIgeCwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPgotICAgdHlwZW5hbWUgZGV0YWlsOjpiZXNzZWxfdHJhaXRzPFQxLCBUMiwgcG9saWNpZXM6OnBvbGljeTw+ID46OnJlc3VsdF90eXBlIGN5bF9iZXNzZWxfayhUMSB2LCBUMiB4KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgZGV0YWlsOjpiZXNzZWxfdHJhaXRzPFQxLCBUMiwgUG9saWN5Pjo6cmVzdWx0X3R5cGUgY3lsX25ldW1hbm4oVDEgdiwgVDIgeCwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPgotICAgdHlwZW5hbWUgZGV0YWlsOjpiZXNzZWxfdHJhaXRzPFQxLCBUMiwgcG9saWNpZXM6OnBvbGljeTw+ID46OnJlc3VsdF90eXBlIGN5bF9uZXVtYW5uKFQxIHYsIFQyIHgpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgZGV0YWlsOjpiZXNzZWxfdHJhaXRzPFQsIFQsIFBvbGljeT46OnJlc3VsdF90eXBlIHNwaF9uZXVtYW5uKHVuc2lnbmVkIHYsIFQgeCwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHR5cGVuYW1lIGRldGFpbDo6YmVzc2VsX3RyYWl0czxULCBULCBwb2xpY2llczo6cG9saWN5PD4gPjo6cmVzdWx0X3R5cGUgc3BoX25ldW1hbm4odW5zaWduZWQgdiwgVCB4KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIGRldGFpbDo6YmVzc2VsX3RyYWl0czxULCBULCBQb2xpY3k+OjpyZXN1bHRfdHlwZSBjeWxfYmVzc2VsX2pfemVybyhUIHYsIGludCBtLCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgdHlwZW5hbWUgZGV0YWlsOjpiZXNzZWxfdHJhaXRzPFQsIFQsIHBvbGljaWVzOjpwb2xpY3k8PiA+OjpyZXN1bHRfdHlwZSBjeWxfYmVzc2VsX2pfemVybyhUIHYsIGludCBtKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIE91dHB1dEl0ZXJhdG9yPgotICAgT3V0cHV0SXRlcmF0b3IgY3lsX2Jlc3NlbF9qX3plcm8oVCB2LAotICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnRfaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlcl9vZl96ZXJvcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0SXRlcmF0b3Igb3V0X2l0KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBQb2xpY3k+Ci0gICBPdXRwdXRJdGVyYXRvciBjeWxfYmVzc2VsX2pfemVybyhUIHYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGFydF9pbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyX29mX3plcm9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXRJdGVyYXRvciBvdXRfaXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBvbGljeSYpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgZGV0YWlsOjpiZXNzZWxfdHJhaXRzPFQsIFQsIFBvbGljeT46OnJlc3VsdF90eXBlIGN5bF9uZXVtYW5uX3plcm8oVCB2LCBpbnQgbSwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHR5cGVuYW1lIGRldGFpbDo6YmVzc2VsX3RyYWl0czxULCBULCBwb2xpY2llczo6cG9saWN5PD4gPjo6cmVzdWx0X3R5cGUgY3lsX25ldW1hbm5femVybyhUIHYsIGludCBtKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIE91dHB1dEl0ZXJhdG9yPgotICAgT3V0cHV0SXRlcmF0b3IgY3lsX25ldW1hbm5femVybyhUIHYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0X2luZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlcl9vZl96ZXJvcywKLSAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXRJdGVyYXRvciBvdXRfaXQpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgT3V0cHV0SXRlcmF0b3IsIGNsYXNzIFBvbGljeT4KLSAgIE91dHB1dEl0ZXJhdG9yIGN5bF9uZXVtYW5uX3plcm8oVCB2LAotICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGFydF9pbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJfb2ZfemVyb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0SXRlcmF0b3Igb3V0X2l0LAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBvbGljeSYpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPgotICAgc3RkOjpjb21wbGV4PHR5cGVuYW1lIGRldGFpbDo6YmVzc2VsX3RyYWl0czxUMSwgVDIsIHBvbGljaWVzOjpwb2xpY3k8PiA+OjpyZXN1bHRfdHlwZT4gY3lsX2hhbmtlbF8xKFQxIHYsIFQyIHgpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBQb2xpY3k+Ci0gICBzdGQ6OmNvbXBsZXg8dHlwZW5hbWUgZGV0YWlsOjpiZXNzZWxfdHJhaXRzPFQxLCBUMiwgUG9saWN5Pjo6cmVzdWx0X3R5cGU+IGN5bF9oYW5rZWxfMShUMSB2LCBUMiB4LCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFBvbGljeT4KLSAgIHN0ZDo6Y29tcGxleDx0eXBlbmFtZSBkZXRhaWw6OmJlc3NlbF90cmFpdHM8VDEsIFQyLCBQb2xpY3k+OjpyZXN1bHRfdHlwZT4gY3lsX2hhbmtlbF8yKFQxIHYsIFQyIHgsIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj4KLSAgIHN0ZDo6Y29tcGxleDx0eXBlbmFtZSBkZXRhaWw6OmJlc3NlbF90cmFpdHM8VDEsIFQyLCBwb2xpY2llczo6cG9saWN5PD4gPjo6cmVzdWx0X3R5cGU+IGN5bF9oYW5rZWxfMihUMSB2LCBUMiB4KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgUG9saWN5PgotICAgc3RkOjpjb21wbGV4PHR5cGVuYW1lIGRldGFpbDo6YmVzc2VsX3RyYWl0czxUMSwgVDIsIFBvbGljeT46OnJlc3VsdF90eXBlPiBzcGhfaGFua2VsXzEoVDEgdiwgVDIgeCwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPgotICAgc3RkOjpjb21wbGV4PHR5cGVuYW1lIGRldGFpbDo6YmVzc2VsX3RyYWl0czxUMSwgVDIsIHBvbGljaWVzOjpwb2xpY3k8PiA+OjpyZXN1bHRfdHlwZT4gc3BoX2hhbmtlbF8xKFQxIHYsIFQyIHgpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBQb2xpY3k+Ci0gICBzdGQ6OmNvbXBsZXg8dHlwZW5hbWUgZGV0YWlsOjpiZXNzZWxfdHJhaXRzPFQxLCBUMiwgUG9saWN5Pjo6cmVzdWx0X3R5cGU+IHNwaF9oYW5rZWxfMihUMSB2LCBUMiB4LCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+Ci0gICBzdGQ6OmNvbXBsZXg8dHlwZW5hbWUgZGV0YWlsOjpiZXNzZWxfdHJhaXRzPFQxLCBUMiwgcG9saWNpZXM6OnBvbGljeTw+ID46OnJlc3VsdF90eXBlPiBzcGhfaGFua2VsXzIoVDEgdiwgVDIgeCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGFpcnlfYWkoVCB4LCBjb25zdCBQb2xpY3kmKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGFpcnlfYWkoVCB4KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgYWlyeV9iaShUIHgsIGNvbnN0IFBvbGljeSYpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgYWlyeV9iaShUIHgpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBhaXJ5X2FpX3ByaW1lKFQgeCwgY29uc3QgUG9saWN5Jik7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBhaXJ5X2FpX3ByaW1lKFQgeCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGFpcnlfYmlfcHJpbWUoVCB4LCBjb25zdCBQb2xpY3kmKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGFpcnlfYmlfcHJpbWUoVCB4KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBUIGFpcnlfYWlfemVybyh1bnNpZ25lZCBtKTsKLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci0gICBUIGFpcnlfYWlfemVybyh1bnNpZ25lZCBtLCBjb25zdCBQb2xpY3kmKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yPgotICAgT3V0cHV0SXRlcmF0b3IgYWlyeV9haV96ZXJvKAotICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc3RhcnRfaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJfb2ZfemVyb3MsCi0gICAgICAgICAgICAgICAgICAgICBPdXRwdXRJdGVyYXRvciBvdXRfaXQpOwotICAgdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBQb2xpY3k+Ci0gICBPdXRwdXRJdGVyYXRvciBhaXJ5X2FpX3plcm8oCi0gICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzdGFydF9pbmRleCwKLSAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlcl9vZl96ZXJvcywKLSAgICAgICAgICAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yIG91dF9pdCwKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBvbGljeSYpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIFQgYWlyeV9iaV96ZXJvKHVuc2lnbmVkIG0pOwotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLSAgIFQgYWlyeV9iaV96ZXJvKHVuc2lnbmVkIG0sIGNvbnN0IFBvbGljeSYpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcmF0b3I+Ci0gICBPdXRwdXRJdGVyYXRvciBhaXJ5X2JpX3plcm8oCi0gICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzdGFydF9pbmRleCwKLSAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlcl9vZl96ZXJvcywKLSAgICAgICAgICAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yIG91dF9pdCk7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcmF0b3IsIGNsYXNzIFBvbGljeT4KLSAgIE91dHB1dEl0ZXJhdG9yIGFpcnlfYmlfemVybygKLSAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0X2luZGV4LAotICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyX29mX3plcm9zLAotICAgICAgICAgICAgICAgICAgICAgT3V0cHV0SXRlcmF0b3Igb3V0X2l0LAotICAgICAgICAgICAgICAgICAgICAgY29uc3QgUG9saWN5Jik7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIHNpbl9waShUIHgsIGNvbnN0IFBvbGljeSYpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgc2luX3BpKFQgeCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGNvc19waShUIHgsIGNvbnN0IFBvbGljeSYpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgY29zX3BpKFQgeCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgaW50IGZwY2xhc3NpZnkgTkROQk9PU1RfTk9fTUFDUk9fRVhQQU5EKFQgdCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgYm9vbCBpc2Zpbml0ZSBORE5CT09TVF9OT19NQUNST19FWFBBTkQoVCB6KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBib29sIGlzaW5mIE5ETkJPT1NUX05PX01BQ1JPX0VYUEFORChUIHQpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIGJvb2wgaXNuYW4gTkROQk9PU1RfTk9fTUFDUk9fRVhQQU5EKFQgdCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgYm9vbCBpc25vcm1hbCBORE5CT09TVF9OT19NQUNST19FWFBBTkQoVCB0KTsKLQotICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgIGludCBzaWduYml0IE5ETkJPT1NUX05PX01BQ1JPX0VYUEFORChUIHgpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIGludCBzaWduIE5ETkJPT1NUX05PX01BQ1JPX0VYUEFORChjb25zdCBUJiB6KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFU+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQsIFU+Ojp0eXBlIGNvcHlzaWduIE5ETkJPT1NUX05PX01BQ1JPX0VYUEFORChjb25zdCBUJiB4LCBjb25zdCBVJiB5KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGNoYW5nZXNpZ24gTkROQk9PU1RfTk9fTUFDUk9fRVhQQU5EKGNvbnN0IFQmIHopOwotCi0gICAvLyBFeHBvbmVudGlhbCBpbnRlZ3JhbHM6Ci0gICBuYW1lc3BhY2UgZGV0YWlsewotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT4KLSAgIHN0cnVjdCBleHBpbnRfcmVzdWx0Ci0gICB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgICAgcG9saWNpZXM6OmlzX3BvbGljeTxVPiwKLSAgICAgICAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUsCi0gICAgICAgICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFU+Ojp0eXBlCi0gICAgICA+Ojp0eXBlIHR5cGU7Ci0gICB9OwotCi0gICB9IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgZXhwaW50KHVuc2lnbmVkIG4sIFQgeiwgY29uc3QgUG9saWN5Jik7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPgotICAgdHlwZW5hbWUgZGV0YWlsOjpleHBpbnRfcmVzdWx0PFQsIFU+Ojp0eXBlIGV4cGludChUIGNvbnN0IHosIFUgY29uc3QgdSk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBleHBpbnQoVCB6KTsKLQotICAgLy8gWmV0YToKLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIHpldGEoVCBzLCBjb25zdCBQb2xpY3kmKTsKLQotICAgLy8gT3dlbidzIFQgZnVuY3Rpb246Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGUgb3dlbnNfdChUMSBoLCBUMiBhLCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGUgb3dlbnNfdChUMSBoLCBUMiBhKTsKLQotICAgLy8gSmFjb2JpIEZ1bmN0aW9uczoKLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBWLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQsIFUsIFY+Ojp0eXBlIGphY29iaV9lbGxpcHRpYyhUIGssIFUgdGhldGEsIFYqIHBjbiwgViogcGRuLCBjb25zdCBQb2xpY3kmKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIFY+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQsIFUsIFY+Ojp0eXBlIGphY29iaV9lbGxpcHRpYyhUIGssIFUgdGhldGEsIFYqIHBjbiA9IDAsIFYqIHBkbiA9IDApOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVSwgY2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSBqYWNvYmlfc24oVSBrLCBUIHRoZXRhLCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBVLCBjbGFzcyBUPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSBqYWNvYmlfc24oVSBrLCBUIHRoZXRhKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX2NuKFQgaywgVSB0aGV0YSwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX2NuKFQgaywgVSB0aGV0YSk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQsIFU+Ojp0eXBlIGphY29iaV9kbihUIGssIFUgdGhldGEsIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFU+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQsIFU+Ojp0eXBlIGphY29iaV9kbihUIGssIFUgdGhldGEpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSBqYWNvYmlfY2QoVCBrLCBVIHRoZXRhLCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSBqYWNvYmlfY2QoVCBrLCBVIHRoZXRhKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX2RjKFQgaywgVSB0aGV0YSwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX2RjKFQgaywgVSB0aGV0YSk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQsIFU+Ojp0eXBlIGphY29iaV9ucyhUIGssIFUgdGhldGEsIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFU+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQsIFU+Ojp0eXBlIGphY29iaV9ucyhUIGssIFUgdGhldGEpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSBqYWNvYmlfc2QoVCBrLCBVIHRoZXRhLCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSBqYWNvYmlfc2QoVCBrLCBVIHRoZXRhKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX2RzKFQgaywgVSB0aGV0YSwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX2RzKFQgaywgVSB0aGV0YSk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQsIFU+Ojp0eXBlIGphY29iaV9uYyhUIGssIFUgdGhldGEsIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFU+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQsIFU+Ojp0eXBlIGphY29iaV9uYyhUIGssIFUgdGhldGEpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSBqYWNvYmlfbmQoVCBrLCBVIHRoZXRhLCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSBqYWNvYmlfbmQoVCBrLCBVIHRoZXRhKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX3NjKFQgaywgVSB0aGV0YSwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX3NjKFQgaywgVSB0aGV0YSk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQsIFU+Ojp0eXBlIGphY29iaV9jcyhUIGssIFUgdGhldGEsIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFU+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQsIFU+Ojp0eXBlIGphY29iaV9jcyhUIGssIFUgdGhldGEpOwotCi0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSB6ZXRhKFQgcyk7Ci0KLSAgIC8vIHBvdzoKLSAgIHRlbXBsYXRlIDxpbnQgTiwgdHlwZW5hbWUgVCwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBwb3coVCBiYXNlLCBjb25zdCBQb2xpY3kmIHBvbGljeSk7Ci0KLSAgIHRlbXBsYXRlIDxpbnQgTiwgdHlwZW5hbWUgVD4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgcG93KFQgYmFzZSk7Ci0KLSAgIC8vIG5leHQ6Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSBuZXh0YWZ0ZXIoY29uc3QgVCYsIGNvbnN0IFUmLCBjb25zdCBQb2xpY3kmKTsKLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSBuZXh0YWZ0ZXIoY29uc3QgVCYsIGNvbnN0IFUmKTsKLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGZsb2F0X25leHQoY29uc3QgVCYsIGNvbnN0IFBvbGljeSYpOwotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGZsb2F0X25leHQoY29uc3QgVCYpOwotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgZmxvYXRfcHJpb3IoY29uc3QgVCYsIGNvbnN0IFBvbGljeSYpOwotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGZsb2F0X3ByaW9yKGNvbnN0IFQmKTsKLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQsIFU+Ojp0eXBlIGZsb2F0X2Rpc3RhbmNlKGNvbnN0IFQmLCBjb25zdCBVJiwgY29uc3QgUG9saWN5Jik7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgZmxvYXRfZGlzdGFuY2UoY29uc3QgVCYsIGNvbnN0IFUmKTsKLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGZsb2F0X2FkdmFuY2UoVCB2YWwsIGludCBkaXN0YW5jZSwgY29uc3QgUG9saWN5JiBwb2wpOwotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGZsb2F0X2FkdmFuY2UoY29uc3QgVCYgdmFsLCBpbnQgZGlzdGFuY2UpOwotCi0gICAgfSAvLyBuYW1lc3BhY2UgbWF0aAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmZGVmIE5ETkJPT1NUX0hBU19MT05HX0xPTkcKLSNkZWZpbmUgTkROQk9PU1RfTUFUSF9ERVRBSUxfTExfRlVOQyhQb2xpY3kpXAotICAgXAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+XAotICAgaW5saW5lIFQgbW9kZihjb25zdCBUJiB2LCBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUqIGlwYXJ0KXsgdXNpbmcgbmRuYm9vc3Q6Om1hdGg6Om1vZGY7IHJldHVybiBtb2RmKHYsIGlwYXJ0LCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlIGxsdHJ1bmMoY29uc3QgVCYgdil7IHVzaW5nIG5kbmJvb3N0OjptYXRoOjpsbHRydW5jOyByZXR1cm4gbGx0cnVuYyh2LCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlIGxscm91bmQoY29uc3QgVCYgdil7IHVzaW5nIG5kbmJvb3N0OjptYXRoOjpsbHJvdW5kOyByZXR1cm4gbGxyb3VuZCh2LCBQb2xpY3koKSk7IH1cCi0KLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX01BVEhfREVUQUlMX0xMX0ZVTkMoUG9saWN5KQotI2VuZGlmCi0KLSNkZWZpbmUgTkROQk9PU1RfTUFUSF9ERUNMQVJFX1NQRUNJQUxfRlVOQ1RJT05TKFBvbGljeSlcCi0gICBcCi0gICBORE5CT09TVF9NQVRIX0RFVEFJTF9MTF9GVU5DKFBvbGljeSlcCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDI+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyPjo6dHlwZSBcCi0gICBiZXRhKFJUMSBhLCBSVDIgYikgeyByZXR1cm4gOjpuZG5ib29zdDo6bWF0aDo6YmV0YShhLCBiLCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDIsIGNsYXNzIEE+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyLCBBPjo6dHlwZSBcCi0gICBiZXRhKFJUMSBhLCBSVDIgYiwgQSB4KXsgcmV0dXJuIDo6bmRuYm9vc3Q6Om1hdGg6OmJldGEoYSwgYiwgeCwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFJUMSwgY2xhc3MgUlQyLCBjbGFzcyBSVDM+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyLCBSVDM+Ojp0eXBlIFwKLSAgIGJldGFjKFJUMSBhLCBSVDIgYiwgUlQzIHgpIHsgcmV0dXJuIDo6bmRuYm9vc3Q6Om1hdGg6OmJldGFjKGEsIGIsIHgsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMiwgY2xhc3MgUlQzPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMiwgUlQzPjo6dHlwZSBcCi0gICBpYmV0YShSVDEgYSwgUlQyIGIsIFJUMyB4KXsgcmV0dXJuIDo6bmRuYm9vc3Q6Om1hdGg6OmliZXRhKGEsIGIsIHgsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMiwgY2xhc3MgUlQzPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMiwgUlQzPjo6dHlwZSBcCi0gICBpYmV0YWMoUlQxIGEsIFJUMiBiLCBSVDMgeCl7IHJldHVybiA6Om5kbmJvb3N0OjptYXRoOjppYmV0YWMoYSwgYiwgeCwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0PlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDIsIFQzLCBUND46OnR5cGUgIFwKLSAgIGliZXRhX2ludihUMSBhLCBUMiBiLCBUMyBwLCBUNCogcHkpeyByZXR1cm4gOjpuZG5ib29zdDo6bWF0aDo6aWJldGFfaW52KGEsIGIsIHAsIHB5LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDIsIGNsYXNzIFJUMz5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDIsIFJUMz46OnR5cGUgXAotICAgaWJldGFfaW52KFJUMSBhLCBSVDIgYiwgUlQzIHApeyByZXR1cm4gOjpuZG5ib29zdDo6bWF0aDo6aWJldGFfaW52KGEsIGIsIHAsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBUND5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyLCBUMywgVDQ+Ojp0eXBlIFwKLSAgIGliZXRhY19pbnYoVDEgYSwgVDIgYiwgVDMgcSwgVDQqIHB5KXsgcmV0dXJuIDo6bmRuYm9vc3Q6Om1hdGg6OmliZXRhY19pbnYoYSwgYiwgcSwgcHksIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMiwgY2xhc3MgUlQzPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMiwgUlQzPjo6dHlwZSBcCi0gICBpYmV0YV9pbnZhKFJUMSBhLCBSVDIgYiwgUlQzIHApeyByZXR1cm4gOjpuZG5ib29zdDo6bWF0aDo6aWJldGFfaW52YShhLCBiLCBwLCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMz5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyLCBUMz46OnR5cGUgXAotICAgaWJldGFjX2ludmEoVDEgYSwgVDIgYiwgVDMgcSl7IHJldHVybiA6Om5kbmJvb3N0OjptYXRoOjppYmV0YWNfaW52YShhLCBiLCBxLCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDIsIGNsYXNzIFJUMz5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDIsIFJUMz46OnR5cGUgXAotICAgaWJldGFfaW52YihSVDEgYSwgUlQyIGIsIFJUMyBwKXsgcmV0dXJuIDo6bmRuYm9vc3Q6Om1hdGg6OmliZXRhX2ludmIoYSwgYiwgcCwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDM+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMiwgVDM+Ojp0eXBlIFwKLSAgIGliZXRhY19pbnZiKFQxIGEsIFQyIGIsIFQzIHEpeyByZXR1cm4gOjpuZG5ib29zdDo6bWF0aDo6aWJldGFjX2ludmIoYSwgYiwgcSwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFJUMSwgY2xhc3MgUlQyLCBjbGFzcyBSVDM+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyLCBSVDM+Ojp0eXBlIFwKLSAgIGliZXRhY19pbnYoUlQxIGEsIFJUMiBiLCBSVDMgcSl7IHJldHVybiA6Om5kbmJvb3N0OjptYXRoOjppYmV0YWNfaW52KGEsIGIsIHEsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMiwgY2xhc3MgUlQzPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMiwgUlQzPjo6dHlwZSBcCi0gICBpYmV0YV9kZXJpdmF0aXZlKFJUMSBhLCBSVDIgYiwgUlQzIHgpeyByZXR1cm4gOjpuZG5ib29zdDo6bWF0aDo6aWJldGFfZGVyaXZhdGl2ZShhLCBiLCB4LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFJUPjo6dHlwZSBlcmYoUlQgeikgeyByZXR1cm4gOjpuZG5ib29zdDo6bWF0aDo6ZXJmKHosIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBSVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQ+Ojp0eXBlIGVyZmMoUlQgeil7IHJldHVybiA6Om5kbmJvb3N0OjptYXRoOjplcmZjKHosIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBSVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQ+Ojp0eXBlIGVyZl9pbnYoUlQgeikgeyByZXR1cm4gOjpuZG5ib29zdDo6bWF0aDo6ZXJmX2ludih6LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFJUPjo6dHlwZSBlcmZjX2ludihSVCB6KXsgcmV0dXJuIDo6bmRuYm9vc3Q6Om1hdGg6OmVyZmNfaW52KHosIFBvbGljeSgpKTsgfVwKLVwKLSAgIHVzaW5nIG5kbmJvb3N0OjptYXRoOjpsZWdlbmRyZV9uZXh0O1wKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBcCi0gICBsZWdlbmRyZV9wKGludCBsLCBUIHgpeyByZXR1cm4gOjpuZG5ib29zdDo6bWF0aDo6bGVnZW5kcmVfcChsLCB4LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgXAotICAgbGVnZW5kcmVfcSh1bnNpZ25lZCBsLCBUIHgpeyByZXR1cm4gOjpuZG5ib29zdDo6bWF0aDo6bGVnZW5kcmVfcShsLCB4LCBQb2xpY3koKSk7IH1cCi1cCi0gICB1c2luZyA6Om5kbmJvb3N0OjptYXRoOjpsZWdlbmRyZV9uZXh0O1wKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBcCi0gICBsZWdlbmRyZV9wKGludCBsLCBpbnQgbSwgVCB4KXsgcmV0dXJuIDo6bmRuYm9vc3Q6Om1hdGg6OmxlZ2VuZHJlX3AobCwgbSwgeCwgUG9saWN5KCkpOyB9XAotXAotICAgdXNpbmcgOjpuZG5ib29zdDo6bWF0aDo6bGFndWVycmVfbmV4dDtcCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgXAotICAgbGFndWVycmUodW5zaWduZWQgbiwgVCB4KXsgcmV0dXJuIDo6bmRuYm9vc3Q6Om1hdGg6OmxhZ3VlcnJlKG4sIHgsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjpsYWd1ZXJyZV9yZXN1bHQ8VDEsIFQyPjo6dHlwZSBcCi0gICBsYWd1ZXJyZSh1bnNpZ25lZCBuLCBUMSBtLCBUMiB4KSB7IHJldHVybiA6Om5kbmJvb3N0OjptYXRoOjpsYWd1ZXJyZShuLCBtLCB4LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgXAotICAgaGVybWl0ZSh1bnNpZ25lZCBuLCBUIHgpeyByZXR1cm4gOjpuZG5ib29zdDo6bWF0aDo6aGVybWl0ZShuLCB4LCBQb2xpY3koKSk7IH1cCi1cCi0gICB1c2luZyBuZG5ib29zdDo6bWF0aDo6aGVybWl0ZV9uZXh0O1wKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+XAotICAgaW5saW5lIHN0ZDo6Y29tcGxleDx0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlPiBcCi0gICBzcGhlcmljYWxfaGFybW9uaWModW5zaWduZWQgbiwgaW50IG0sIFQxIHRoZXRhLCBUMiBwaGkpeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OnNwaGVyaWNhbF9oYXJtb25pYyhuLCBtLCB0aGV0YSwgcGhpLCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlIFwKLSAgIHNwaGVyaWNhbF9oYXJtb25pY19yKHVuc2lnbmVkIG4sIGludCBtLCBUMSB0aGV0YSwgVDIgcGhpKXsgcmV0dXJuIDo6bmRuYm9vc3Q6Om1hdGg6OnNwaGVyaWNhbF9oYXJtb25pY19yKG4sIG0sIHRoZXRhLCBwaGksIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGUgXAotICAgc3BoZXJpY2FsX2hhcm1vbmljX2kodW5zaWduZWQgbiwgaW50IG0sIFQxIHRoZXRhLCBUMiBwaGkpeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OnNwaGVyaWNhbF9oYXJtb25pY19pKG4sIG0sIHRoZXRhLCBwaGksIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFBvbGljeT5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZSBcCi0gICAgICBzcGhlcmljYWxfaGFybW9uaWNfaSh1bnNpZ25lZCBuLCBpbnQgbSwgVDEgdGhldGEsIFQyIHBoaSwgY29uc3QgUG9saWN5JiBwb2wpO1wKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDIsIFQzPjo6dHlwZSBcCi0gICBlbGxpbnRfcmYoVDEgeCwgVDIgeSwgVDMgeil7IHJldHVybiA6Om5kbmJvb3N0OjptYXRoOjplbGxpbnRfcmYoeCwgeSwgeiwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDM+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMiwgVDM+Ojp0eXBlIFwKLSAgIGVsbGludF9yZChUMSB4LCBUMiB5LCBUMyB6KXsgcmV0dXJuIDo6bmRuYm9vc3Q6Om1hdGg6OmVsbGludF9yZCh4LCB5LCB6LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlIFwKLSAgIGVsbGludF9yYyhUMSB4LCBUMiB5KXsgcmV0dXJuIDo6bmRuYm9vc3Q6Om1hdGg6OmVsbGludF9yYyh4LCB5LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgVDQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMiwgVDMsIFQ0Pjo6dHlwZSBcCi0gICBlbGxpbnRfcmooVDEgeCwgVDIgeSwgVDMgeiwgVDQgcCl7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6ZWxsaW50X3JqKHgsIHksIHosIHAsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBlbGxpbnRfMihUIGspeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmVsbGludF8yKGssIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGUgZWxsaW50XzIoVDEgaywgVDIgcGhpKXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjplbGxpbnRfMihrLCBwaGksIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBlbGxpbnRfMShUIGspeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmVsbGludF8xKGssIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGUgZWxsaW50XzEoVDEgaywgVDIgcGhpKXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjplbGxpbnRfMShrLCBwaGksIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDIsIFQzPjo6dHlwZSBlbGxpbnRfMyhUMSBrLCBUMiB2LCBUMyBwaGkpeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmVsbGludF8zKGssIHYsIHBoaSwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZSBlbGxpbnRfMyhUMSBrLCBUMiB2KXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjplbGxpbnRfMyhrLCB2LCBQb2xpY3koKSk7IH1cCi1cCi0gICB1c2luZyBuZG5ib29zdDo6bWF0aDo6bWF4X2ZhY3RvcmlhbDtcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQ+XAotICAgaW5saW5lIFJUIGZhY3RvcmlhbCh1bnNpZ25lZCBpbnQgaSkgeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmZhY3RvcmlhbDxSVD4oaSwgUG9saWN5KCkpOyB9XAotICAgdXNpbmcgbmRuYm9vc3Q6Om1hdGg6OnVuY2hlY2tlZF9mYWN0b3JpYWw7XAotICAgdGVtcGxhdGUgPGNsYXNzIFJUPlwKLSAgIGlubGluZSBSVCBkb3VibGVfZmFjdG9yaWFsKHVuc2lnbmVkIGkpeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmRvdWJsZV9mYWN0b3JpYWw8UlQ+KGksIFBvbGljeSgpKTsgfVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBSVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQ+Ojp0eXBlIGZhbGxpbmdfZmFjdG9yaWFsKFJUIHgsIHVuc2lnbmVkIG4peyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmZhbGxpbmdfZmFjdG9yaWFsKHgsIG4sIFBvbGljeSgpKTsgfVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBSVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQ+Ojp0eXBlIHJpc2luZ19mYWN0b3JpYWwoUlQgeCwgdW5zaWduZWQgbil7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6cmlzaW5nX2ZhY3RvcmlhbCh4LCBuLCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFJUPjo6dHlwZSB0Z2FtbWEoUlQgeil7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6dGdhbW1hKHosIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBSVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQ+Ojp0eXBlIHRnYW1tYTFwbTEoUlQgeil7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6dGdhbW1hMXBtMSh6LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDI+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyPjo6dHlwZSB0Z2FtbWEoUlQxIGEsIFJUMiB6KXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjp0Z2FtbWEoYSwgeiwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFJUPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxSVD46OnR5cGUgbGdhbW1hKFJUIHosIGludCogc2lnbil7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6bGdhbW1hKHosIHNpZ24sIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBSVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQ+Ojp0eXBlIGxnYW1tYShSVCB4KXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpsZ2FtbWEoeCwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFJUMSwgY2xhc3MgUlQyPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMj46OnR5cGUgdGdhbW1hX2xvd2VyKFJUMSBhLCBSVDIgeil7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6dGdhbW1hX2xvd2VyKGEsIHosIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMj5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDI+Ojp0eXBlIGdhbW1hX3EoUlQxIGEsIFJUMiB6KXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpnYW1tYV9xKGEsIHosIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMj5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDI+Ojp0eXBlIGdhbW1hX3AoUlQxIGEsIFJUMiB6KXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpnYW1tYV9wKGEsIHosIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGUgdGdhbW1hX2RlbHRhX3JhdGlvKFQxIHosIFQyIGRlbHRhKXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjp0Z2FtbWFfZGVsdGFfcmF0aW8oeiwgZGVsdGEsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGUgdGdhbW1hX3JhdGlvKFQxIGEsIFQyIGIpIHsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjp0Z2FtbWFfcmF0aW8oYSwgYiwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZSBnYW1tYV9wX2Rlcml2YXRpdmUoVDEgYSwgVDIgeCl7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6Z2FtbWFfcF9kZXJpdmF0aXZlKGEsIHgsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGUgZ2FtbWFfcF9pbnYoVDEgYSwgVDIgcCl7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6Z2FtbWFfcF9pbnYoYSwgcCwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZSBnYW1tYV9wX2ludmEoVDEgYSwgVDIgcCl7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6Z2FtbWFfcF9pbnZhKGEsIHAsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGUgZ2FtbWFfcV9pbnYoVDEgYSwgVDIgcSl7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6Z2FtbWFfcV9pbnYoYSwgcSwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZSBnYW1tYV9xX2ludmEoVDEgYSwgVDIgcSl7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6Z2FtbWFfcV9pbnZhKGEsIHEsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBkaWdhbW1hKFQgeCl7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6ZGlnYW1tYSh4LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlIFwKLSAgIGh5cG90KFQxIHgsIFQyIHkpeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6Omh5cG90KHgsIHksIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBSVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQ+Ojp0eXBlIGNicnQoUlQgeil7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6Y2JydCh6LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgbG9nMXAoVCB4KXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpsb2cxcCh4LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgbG9nMXBteChUIHgpeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmxvZzFwbXgoeCwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGV4cG0xKFQgeCl7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6ZXhwbTEoeCwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZSBcCi0gICBwb3dtMShjb25zdCBUMSBhLCBjb25zdCBUMiB6KXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpwb3dtMShhLCB6LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgc3FydDFwbTEoY29uc3QgVCYgdmFsKXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpzcXJ0MXBtMSh2YWwsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBzaW5jX3BpKFQgeCl7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6c2luY19waSh4LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgc2luaGNfcGkoVCB4KXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpzaW5oY19waSh4LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBhc2luaChjb25zdCBUIHgpeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmFzaW5oKHgsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGFjb3NoKGNvbnN0IFQgeCl7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6YWNvc2goeCwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGU8dHlwZW5hbWUgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgYXRhbmgoY29uc3QgVCB4KXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjphdGFuaCh4LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6ZGV0YWlsOjpiZXNzZWxfdHJhaXRzPFQxLCBUMiwgUG9saWN5ID46OnJlc3VsdF90eXBlIGN5bF9iZXNzZWxfaihUMSB2LCBUMiB4KVwKLSAgIHsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpjeWxfYmVzc2VsX2oodiwgeCwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjpkZXRhaWw6OmJlc3NlbF90cmFpdHM8VCwgVCwgUG9saWN5ID46OnJlc3VsdF90eXBlIHNwaF9iZXNzZWwodW5zaWduZWQgdiwgVCB4KVwKLSAgIHsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpzcGhfYmVzc2VsKHYsIHgsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjpkZXRhaWw6OmJlc3NlbF90cmFpdHM8VDEsIFQyLCBQb2xpY3kgPjo6cmVzdWx0X3R5cGUgXAotICAgY3lsX2Jlc3NlbF9pKFQxIHYsIFQyIHgpIHsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpjeWxfYmVzc2VsX2kodiwgeCwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OmRldGFpbDo6YmVzc2VsX3RyYWl0czxUMSwgVDIsIFBvbGljeSA+OjpyZXN1bHRfdHlwZSBcCi0gICBjeWxfYmVzc2VsX2soVDEgdiwgVDIgeCkgeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmN5bF9iZXNzZWxfayh2LCB4LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6ZGV0YWlsOjpiZXNzZWxfdHJhaXRzPFQxLCBUMiwgUG9saWN5ID46OnJlc3VsdF90eXBlIFwKLSAgIGN5bF9uZXVtYW5uKFQxIHYsIFQyIHgpeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmN5bF9uZXVtYW5uKHYsIHgsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6ZGV0YWlsOjpiZXNzZWxfdHJhaXRzPFQsIFQsIFBvbGljeSA+OjpyZXN1bHRfdHlwZSBcCi0gICBzcGhfbmV1bWFubih1bnNpZ25lZCB2LCBUIHgpeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OnNwaF9uZXVtYW5uKHYsIHgsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6ZGV0YWlsOjpiZXNzZWxfdHJhaXRzPFQsIFQsIFBvbGljeSA+OjpyZXN1bHRfdHlwZSBjeWxfYmVzc2VsX2pfemVybyhUIHYsIGludCBtKVwKLSAgIHsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpjeWxfYmVzc2VsX2pfemVybyh2LCBtLCBQb2xpY3koKSk7IH1cCi1cCi10ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcmF0b3IsIGNsYXNzIFQ+XAotICAgaW5saW5lIHZvaWQgY3lsX2Jlc3NlbF9qX3plcm8oVCB2LFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGFydF9pbmRleCxcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJfb2ZfemVyb3MsXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0SXRlcmF0b3Igb3V0X2l0KVwKLSAgIHsgbmRuYm9vc3Q6Om1hdGg6OmN5bF9iZXNzZWxfal96ZXJvKHYsIHN0YXJ0X2luZGV4LCBudW1iZXJfb2ZfemVyb3MsIG91dF9pdCwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjpkZXRhaWw6OmJlc3NlbF90cmFpdHM8VCwgVCwgUG9saWN5ID46OnJlc3VsdF90eXBlIGN5bF9uZXVtYW5uX3plcm8oVCB2LCBpbnQgbSlcCi0gICB7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6Y3lsX25ldW1hbm5femVybyh2LCBtLCBQb2xpY3koKSk7IH1cCi1cCi10ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcmF0b3IsIGNsYXNzIFQ+XAotICAgaW5saW5lIHZvaWQgY3lsX25ldW1hbm5femVybyhUIHYsXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnRfaW5kZXgsXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJfb2ZfemVyb3MsXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXRJdGVyYXRvciBvdXRfaXQpXAotICAgeyBuZG5ib29zdDo6bWF0aDo6Y3lsX25ldW1hbm5femVybyh2LCBzdGFydF9pbmRleCwgbnVtYmVyX29mX3plcm9zLCBvdXRfaXQsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBzaW5fcGkoVCB4KXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpzaW5fcGkoeCk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgY29zX3BpKFQgeCl7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6Y29zX3BpKHgpOyB9XAotXAotICAgdXNpbmcgbmRuYm9vc3Q6Om1hdGg6OmZwY2xhc3NpZnk7XAotICAgdXNpbmcgbmRuYm9vc3Q6Om1hdGg6OmlzZmluaXRlO1wKLSAgIHVzaW5nIG5kbmJvb3N0OjptYXRoOjppc2luZjtcCi0gICB1c2luZyBuZG5ib29zdDo6bWF0aDo6aXNuYW47XAotICAgdXNpbmcgbmRuYm9vc3Q6Om1hdGg6Omlzbm9ybWFsO1wKLSAgIHVzaW5nIG5kbmJvb3N0OjptYXRoOjpzaWduYml0O1wKLSAgIHVzaW5nIG5kbmJvb3N0OjptYXRoOjpzaWduO1wKLSAgIHVzaW5nIG5kbmJvb3N0OjptYXRoOjpjb3B5c2lnbjtcCi0gICB1c2luZyBuZG5ib29zdDo6bWF0aDo6Y2hhbmdlc2lnbjtcCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VCxVPjo6dHlwZSBleHBpbnQoVCBjb25zdCYgeiwgVSBjb25zdCYgdSlcCi0gICB7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6ZXhwaW50KHosIHUsIFBvbGljeSgpKTsgfVwKLSAgIFwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBleHBpbnQoVCB6KXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpleHBpbnQoeiwgUG9saWN5KCkpOyB9XAotICAgXAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIHpldGEoVCBzKXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjp6ZXRhKHMsIFBvbGljeSgpKTsgfVwKLSAgIFwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPlwKLSAgIGlubGluZSBUIHJvdW5kKGNvbnN0IFQmIHYpeyB1c2luZyBuZG5ib29zdDo6bWF0aDo6cm91bmQ7IHJldHVybiByb3VuZCh2LCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgaW50IGlyb3VuZChjb25zdCBUJiB2KXsgdXNpbmcgbmRuYm9vc3Q6Om1hdGg6Omlyb3VuZDsgcmV0dXJuIGlyb3VuZCh2LCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgbG9uZyBscm91bmQoY29uc3QgVCYgdil7IHVzaW5nIG5kbmJvb3N0OjptYXRoOjpscm91bmQ7IHJldHVybiBscm91bmQodiwgUG9saWN5KCkpOyB9XAotICAgXAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+XAotICAgaW5saW5lIFQgdHJ1bmMoY29uc3QgVCYgdil7IHVzaW5nIG5kbmJvb3N0OjptYXRoOjp0cnVuYzsgcmV0dXJuIHRydW5jKHYsIFBvbGljeSgpKTsgfVwKLSAgIFwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPlwKLSAgIGlubGluZSBpbnQgaXRydW5jKGNvbnN0IFQmIHYpeyB1c2luZyBuZG5ib29zdDo6bWF0aDo6aXRydW5jOyByZXR1cm4gaXRydW5jKHYsIFBvbGljeSgpKTsgfVwKLSAgIFwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPlwKLSAgIGlubGluZSBsb25nIGx0cnVuYyhjb25zdCBUJiB2KXsgdXNpbmcgbmRuYm9vc3Q6Om1hdGg6Omx0cnVuYzsgcmV0dXJuIGx0cnVuYyh2LCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgVCBtb2RmKGNvbnN0IFQmIHYsIFQqIGlwYXJ0KXsgdXNpbmcgbmRuYm9vc3Q6Om1hdGg6Om1vZGY7IHJldHVybiBtb2RmKHYsIGlwYXJ0LCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgVCBtb2RmKGNvbnN0IFQmIHYsIGludCogaXBhcnQpeyB1c2luZyBuZG5ib29zdDo6bWF0aDo6bW9kZjsgcmV0dXJuIG1vZGYodiwgaXBhcnQsIFBvbGljeSgpKTsgfVwKLSAgIFwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPlwKLSAgIGlubGluZSBUIG1vZGYoY29uc3QgVCYgdiwgbG9uZyogaXBhcnQpeyB1c2luZyBuZG5ib29zdDo6bWF0aDo6bW9kZjsgcmV0dXJuIG1vZGYodiwgaXBhcnQsIFBvbGljeSgpKTsgfVwKLSAgIFwKLSAgIHRlbXBsYXRlIDxpbnQgTiwgY2xhc3MgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgcG93KFQgdil7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6cG93PE4+KHYsIFBvbGljeSgpKTsgfVwKLSAgIFwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPiBUIG5leHRhZnRlcihjb25zdCBUJiBhLCBjb25zdCBUJiBiKXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpuZXh0YWZ0ZXIoYSwgYiwgUG9saWN5KCkpOyB9XAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+IFQgZmxvYXRfbmV4dChjb25zdCBUJiBhKXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpmbG9hdF9uZXh0KGEsIFBvbGljeSgpKTsgfVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPiBUIGZsb2F0X3ByaW9yKGNvbnN0IFQmIGEpeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmZsb2F0X3ByaW9yKGEsIFBvbGljeSgpKTsgfVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPiBUIGZsb2F0X2Rpc3RhbmNlKGNvbnN0IFQmIGEsIGNvbnN0IFQmIGIpeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmZsb2F0X2Rpc3RhbmNlKGEsIGIsIFBvbGljeSgpKTsgfVwKLSAgIFwKLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMj5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDI+Ojp0eXBlIG93ZW5zX3QoUlQxIGEsIFJUMiB6KXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpvd2Vuc190KGEsIHosIFBvbGljeSgpKTsgfVwKLSAgIFwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+XAotICAgaW5saW5lIHN0ZDo6Y29tcGxleDx0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6ZGV0YWlsOjpiZXNzZWxfdHJhaXRzPFQxLCBUMiwgUG9saWN5ID46OnJlc3VsdF90eXBlPiBjeWxfaGFua2VsXzEoVDEgdiwgVDIgeClcCi0gICB7ICByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmN5bF9oYW5rZWxfMSh2LCB4LCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPlwKLSAgIGlubGluZSBzdGQ6OmNvbXBsZXg8dHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OmRldGFpbDo6YmVzc2VsX3RyYWl0czxUMSwgVDIsIFBvbGljeSA+OjpyZXN1bHRfdHlwZT4gY3lsX2hhbmtlbF8yKFQxIHYsIFQyIHgpXAotICAgeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmN5bF9oYW5rZWxfMih2LCB4LCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPlwKLSAgIGlubGluZSBzdGQ6OmNvbXBsZXg8dHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OmRldGFpbDo6YmVzc2VsX3RyYWl0czxUMSwgVDIsIFBvbGljeSA+OjpyZXN1bHRfdHlwZT4gc3BoX2hhbmtlbF8xKFQxIHYsIFQyIHgpXAotICAgeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OnNwaF9oYW5rZWxfMSh2LCB4LCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPlwKLSAgIGlubGluZSBzdGQ6OmNvbXBsZXg8dHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OmRldGFpbDo6YmVzc2VsX3RyYWl0czxUMSwgVDIsIFBvbGljeSA+OjpyZXN1bHRfdHlwZT4gc3BoX2hhbmtlbF8yKFQxIHYsIFQyIHgpXAotICAgeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OnNwaF9oYW5rZWxfMih2LCB4LCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgamFjb2JpX2VsbGlwdGljKFQgaywgVCB0aGV0YSwgVCogcGNuLCBUKiBwZG4pXAotICAgeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmphY29iaV9lbGxpcHRpYyhrLCB0aGV0YSwgcGNuLCBwZG4sIFBvbGljeSgpKTsgfVwKLSAgIFwKLSAgIHRlbXBsYXRlIDxjbGFzcyBVLCBjbGFzcyBUPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSBqYWNvYmlfc24oVSBrLCBUIHRoZXRhKVwKLSAgIHsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpqYWNvYmlfc24oaywgdGhldGEsIFBvbGljeSgpKTsgfVwKLSAgIFwKLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSBqYWNvYmlfY24oVCBrLCBVIHRoZXRhKVwKLSAgIHsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpqYWNvYmlfY24oaywgdGhldGEsIFBvbGljeSgpKTsgfVwKLSAgIFwKLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSBqYWNvYmlfZG4oVCBrLCBVIHRoZXRhKVwKLSAgIHsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpqYWNvYmlfZG4oaywgdGhldGEsIFBvbGljeSgpKTsgfVwKLSAgIFwKLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSBqYWNvYmlfY2QoVCBrLCBVIHRoZXRhKVwKLSAgIHsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpqYWNvYmlfY2QoaywgdGhldGEsIFBvbGljeSgpKTsgfVwKLSAgIFwKLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSBqYWNvYmlfZGMoVCBrLCBVIHRoZXRhKVwKLSAgIHsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpqYWNvYmlfZGMoaywgdGhldGEsIFBvbGljeSgpKTsgfVwKLSAgIFwKLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSBqYWNvYmlfbnMoVCBrLCBVIHRoZXRhKVwKLSAgIHsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpqYWNvYmlfbnMoaywgdGhldGEsIFBvbGljeSgpKTsgfVwKLSAgIFwKLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSBqYWNvYmlfc2QoVCBrLCBVIHRoZXRhKVwKLSAgIHsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpqYWNvYmlfc2QoaywgdGhldGEsIFBvbGljeSgpKTsgfVwKLSAgIFwKLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSBqYWNvYmlfZHMoVCBrLCBVIHRoZXRhKVwKLSAgIHsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpqYWNvYmlfZHMoaywgdGhldGEsIFBvbGljeSgpKTsgfVwKLSAgIFwKLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSBqYWNvYmlfbmMoVCBrLCBVIHRoZXRhKVwKLSAgIHsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpqYWNvYmlfbmMoaywgdGhldGEsIFBvbGljeSgpKTsgfVwKLSAgIFwKLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSBqYWNvYmlfbmQoVCBrLCBVIHRoZXRhKVwKLSAgIHsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpqYWNvYmlfbmQoaywgdGhldGEsIFBvbGljeSgpKTsgfVwKLSAgIFwKLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSBqYWNvYmlfc2MoVCBrLCBVIHRoZXRhKVwKLSAgIHsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpqYWNvYmlfc2MoaywgdGhldGEsIFBvbGljeSgpKTsgfVwKLSAgIFwKLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSBqYWNvYmlfY3MoVCBrLCBVIHRoZXRhKVwKLSAgIHsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpqYWNvYmlfY3MoaywgdGhldGEsIFBvbGljeSgpKTsgfVwKLSAgIFwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBhaXJ5X2FpKFQgeClcCi0gICB7ICByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmFpcnlfYWkoeCwgUG9saWN5KCkpOyAgfVwKLSAgIFwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBhaXJ5X2JpKFQgeClcCi0gICB7ICByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmFpcnlfYmkoeCwgUG9saWN5KCkpOyAgfVwKLSAgIFwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBhaXJ5X2FpX3ByaW1lKFQgeClcCi0gICB7ICByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmFpcnlfYWlfcHJpbWUoeCwgUG9saWN5KCkpOyAgfVwKLSAgIFwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBhaXJ5X2JpX3ByaW1lKFQgeClcCi0gICB7ICByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmFpcnlfYmlfcHJpbWUoeCwgUG9saWN5KCkpOyAgfVwKLSAgIFwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPlwKLSAgIGlubGluZSBUIGFpcnlfYWlfemVybyhpbnQgbSlcCi0gICB7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6YWlyeV9haV96ZXJvPFQ+KG0sIFBvbGljeSgpKTsgfVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBPdXRwdXRJdGVyYXRvcj5cCi0gICBPdXRwdXRJdGVyYXRvciBhaXJ5X2FpX3plcm8oaW50IHN0YXJ0X2luZGV4LCB1bnNpZ25lZCBudW1iZXJfb2ZfemVyb3MsIE91dHB1dEl0ZXJhdG9yIG91dF9pdClcCi0gICB7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6YWlyeV9haV96ZXJvPFQ+KHN0YXJ0X2luZGV4LCBudW1iZXJfb2ZfemVyb3MsIG91dF9pdCwgUG9saWN5KCkpOyB9XAotICAgXAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+XAotICAgaW5saW5lIFQgYWlyeV9iaV96ZXJvKGludCBtKVwKLSAgIHsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjphaXJ5X2JpX3plcm88VD4obSwgUG9saWN5KCkpOyB9XAotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIE91dHB1dEl0ZXJhdG9yPlwKLSAgIE91dHB1dEl0ZXJhdG9yIGFpcnlfYmlfemVybyhpbnQgc3RhcnRfaW5kZXgsIHVuc2lnbmVkIG51bWJlcl9vZl96ZXJvcywgT3V0cHV0SXRlcmF0b3Igb3V0X2l0KVwKLSAgIHsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjphaXJ5X2JpX3plcm88VD4oc3RhcnRfaW5kZXgsIG51bWJlcl9vZl96ZXJvcywgb3V0X2l0LCBQb2xpY3koKSk7IH1cCi0gICBcCi0KLQotCi0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01BVEhfU1BFQ0lBTF9NQVRIX0ZXRF9IUFAKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21hdGgvc3BlY2lhbF9mdW5jdGlvbnMvc2lnbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21hdGgvc3BlY2lhbF9mdW5jdGlvbnMvc2lnbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwZmJkOWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tYXRoL3NwZWNpYWxfZnVuY3Rpb25zL3NpZ24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTUwICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDA2LgotLy8gIChDKSBDb3B5cmlnaHQgSm9oYW4gUmFkZSAyMDA2LgotLy8gIChDKSBDb3B5cmlnaHQgUGF1bCBBLiBCcmlzdG93IDIwMTEgKGFkZGVkIGNoYW5nZXNpZ24pLgotCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9NQVRIX1RPT0xTX1NJR05fSFBQCi0jZGVmaW5lIE5ETkJPT1NUX01BVEhfVE9PTFNfU0lHTl9IUFAKLQotI2lmZGVmIF9NU0NfVkVSCi0jcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbWF0aC90b29scy9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21hdGgvc3BlY2lhbF9mdW5jdGlvbnMvbWF0aF9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21hdGgvc3BlY2lhbF9mdW5jdGlvbnMvZGV0YWlsL2ZwX3RyYWl0cy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdHsgbmFtZXNwYWNlIG1hdGh7IAotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotICAvLyBzaWduYml0Ci0KLSNpZmRlZiBORE5CT09TVF9NQVRIX1VTRV9TVERfRlBDTEFTU0lGWQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IAotICAgIGlubGluZSBpbnQgc2lnbmJpdF9pbXBsKFQgeCwgbmF0aXZlX3RhZyBjb25zdCYpCi0gICAgewotICAgICAgICByZXR1cm4gKHN0ZDo6c2lnbmJpdCkoeCk7Ci0gICAgfQotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiAKLSAgICBpbmxpbmUgaW50IHNpZ25iaXRfaW1wbChUIHgsIGdlbmVyaWNfdGFnPHRydWU+IGNvbnN0JikKLSAgICB7Ci0gICAgICAgIHJldHVybiB4IDwgMDsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiAKLSAgICBpbmxpbmUgaW50IHNpZ25iaXRfaW1wbChUIHgsIGdlbmVyaWNfdGFnPGZhbHNlPiBjb25zdCYpCi0gICAgewotICAgICAgICByZXR1cm4geCA8IDA7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gCi0gICAgaW5saW5lIGludCBzaWduYml0X2ltcGwoVCB4LCBpZWVlX2NvcHlfYWxsX2JpdHNfdGFnIGNvbnN0JikKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBmcF90cmFpdHM8VD46OnR5cGUgdHJhaXRzOwotCi0gICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgdHJhaXRzOjpiaXRzIGE7Ci0gICAgICAgIHRyYWl0czo6Z2V0X2JpdHMoeCxhKTsKLSAgICAgICAgcmV0dXJuIGEgJiB0cmFpdHM6OnNpZ24gPyAxIDogMDsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiAKLSAgICBpbmxpbmUgaW50IHNpZ25iaXRfaW1wbChUIHgsIGllZWVfY29weV9sZWFkaW5nX2JpdHNfdGFnIGNvbnN0JikKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBmcF90cmFpdHM8VD46OnR5cGUgdHJhaXRzOwotCi0gICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgdHJhaXRzOjpiaXRzIGE7Ci0gICAgICAgIHRyYWl0czo6Z2V0X2JpdHMoeCxhKTsKLQotICAgICAgICByZXR1cm4gYSAmIHRyYWl0czo6c2lnbiA/IDEgOiAwOwotICAgIH0KLQotICAgIC8vIENoYW5nZXNpZ24KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgaW5saW5lIFQgKGNoYW5nZXNpZ25faW1wbCkoVCB4LCBnZW5lcmljX3RhZzx0cnVlPiBjb25zdCYpCi0gICAgewotICAgICAgICByZXR1cm4gLXg7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBpbmxpbmUgVCAoY2hhbmdlc2lnbl9pbXBsKShUIHgsIGdlbmVyaWNfdGFnPGZhbHNlPiBjb25zdCYpCi0gICAgewotICAgICAgICByZXR1cm4gLXg7Ci0gICAgfQotCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIGlubGluZSBUIGNoYW5nZXNpZ25faW1wbChUIHgsIGllZWVfY29weV9hbGxfYml0c190YWcgY29uc3QmKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGZwX3RyYWl0czxUPjo6c2lnbl9jaGFuZ2VfdHlwZSB0cmFpdHM7Ci0KLSAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSB0cmFpdHM6OmJpdHMgYTsKLSAgICAgICAgdHJhaXRzOjpnZXRfYml0cyh4LGEpOwotICAgICAgICBhIF49IHRyYWl0czo6c2lnbjsKLSAgICAgICAgdHJhaXRzOjpzZXRfYml0cyh4LGEpOwotICAgICAgICByZXR1cm4geDsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIGlubGluZSBUIChjaGFuZ2VzaWduX2ltcGwpKFQgeCwgaWVlZV9jb3B5X2xlYWRpbmdfYml0c190YWcgY29uc3QmKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGZwX3RyYWl0czxUPjo6c2lnbl9jaGFuZ2VfdHlwZSB0cmFpdHM7Ci0KLSAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSB0cmFpdHM6OmJpdHMgYTsKLSAgICAgICAgdHJhaXRzOjpnZXRfYml0cyh4LGEpOwotICAgICAgICBhIF49IHRyYWl0czo6c2lnbjsKLSAgICAgICAgdHJhaXRzOjpzZXRfYml0cyh4LGEpOwotICAgICAgICByZXR1cm4geDsKLSAgICB9Ci0KLQotfSAgIC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW50IChzaWduYml0KShUIHgpCi17IAotICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmZwX3RyYWl0czxUPjo6dHlwZSB0cmFpdHM7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0czo6bWV0aG9kIG1ldGhvZDsKLSAgIC8vIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmlzX2Zsb2F0aW5nX3BvaW50PFQ+Ojp0eXBlIGZwX3RhZzsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSByZXN1bHRfdHlwZTsKLSAgIHJldHVybiBkZXRhaWw6OnNpZ25iaXRfaW1wbChzdGF0aWNfY2FzdDxyZXN1bHRfdHlwZT4oeCksIG1ldGhvZCgpKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1pbmxpbmUgaW50IHNpZ24gTkROQk9PU1RfTk9fTUFDUk9fRVhQQU5EKGNvbnN0IFQmIHopCi17Ci0gICByZXR1cm4gKHogPT0gMCkgPyAwIDogKG5kbmJvb3N0OjptYXRoOjpzaWduYml0KSh6KSA/IC0xIDogMTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFQ+IHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgKGNoYW5nZXNpZ24pKGNvbnN0IFQmIHgpCi17IC8vITwgXGJyaWVmIHJldHVybiB1bmNoYW5nZWQgYmluYXJ5IHBhdHRlcm4gb2YgeCwgZXhjZXB0IGZvciBjaGFuZ2Ugb2Ygc2lnbiBiaXQuIAotICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmZwX3RyYWl0czxUPjo6c2lnbl9jaGFuZ2VfdHlwZSB0cmFpdHM7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0czo6bWV0aG9kIG1ldGhvZDsKLSAgIC8vIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmlzX2Zsb2F0aW5nX3BvaW50PFQ+Ojp0eXBlIGZwX3RhZzsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSByZXN1bHRfdHlwZTsKLQotICAgcmV0dXJuIGRldGFpbDo6Y2hhbmdlc2lnbl9pbXBsKHN0YXRpY19jYXN0PHJlc3VsdF90eXBlPih4KSwgbWV0aG9kKCkpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT4KLWlubGluZSB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQsIFU+Ojp0eXBlIAotICAgY29weXNpZ24gTkROQk9PU1RfTk9fTUFDUk9fRVhQQU5EKGNvbnN0IFQmIHgsIGNvbnN0IFUmIHkpCi17Ci0gICBORE5CT09TVF9NQVRIX1NURF9VU0lORwotICAgdHlwZWRlZiB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQsIFU+Ojp0eXBlIHJlc3VsdF90eXBlOwotICAgcmV0dXJuIChuZG5ib29zdDo6bWF0aDo6c2lnbmJpdCkoc3RhdGljX2Nhc3Q8cmVzdWx0X3R5cGU+KHgpKSAhPSAobmRuYm9vc3Q6Om1hdGg6OnNpZ25iaXQpKHN0YXRpY19jYXN0PHJlc3VsdF90eXBlPih5KSkgCi0gICAgICA/IChuZG5ib29zdDo6bWF0aDo6Y2hhbmdlc2lnbikoc3RhdGljX2Nhc3Q8cmVzdWx0X3R5cGU+KHgpKSA6IHN0YXRpY19jYXN0PHJlc3VsdF90eXBlPih4KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgbWF0aAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTUFUSF9UT09MU19TSUdOX0hQUAotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbWF0aC90b29scy9jb25maWcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tYXRoL3Rvb2xzL2NvbmZpZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3ZjAzYTUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tYXRoL3Rvb2xzL2NvbmZpZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNTIgKzAsMCBAQAotLy8gIENvcHlyaWdodCAoYykgMjAwNi03IEpvaG4gTWFkZG9jawotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfTUFUSF9UT09MU19DT05GSUdfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX01BVEhfVE9PTFNfQ09ORklHX0hQUAotCi0jaWZkZWYgX01TQ19WRVIKLSNwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NzdGRpbnQuaHBwPiAvLyBmb3IgbmRuYm9vc3Q6OnVpbnRtYXhfdAotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxhbGdvcml0aG0+ICAvLyBmb3IgbWluIGFuZCBtYXgKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvbm9fdHIxL2NtYXRoLmhwcD4KLSNpbmNsdWRlIDxjbGltaXRzPgotI2luY2x1ZGUgPGNmbG9hdD4KLSNpZiAoZGVmaW5lZChtYWNpbnRvc2gpIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfQ0NfXykpCi0jICBpbmNsdWRlIDxtYXRoLmg+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21hdGgvdG9vbHMvdXNlci5ocHA+Ci0KLSNpZiAoZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fTmV0QlNEX18pIFwKLSAgIHx8IChkZWZpbmVkKF9faHBwYSkgJiYgIWRlZmluZWQoX19PcGVuQlNEX18pKSB8fCAoZGVmaW5lZChfX05PX0xPTkdfRE9VQkxFX01BVEgpICYmIChEQkxfTUFOVF9ESUcgIT0gTERCTF9NQU5UX0RJRykpKSBcCi0gICAmJiAhZGVmaW5lZChORE5CT09TVF9NQVRIX05PX0xPTkdfRE9VQkxFX01BVEhfRlVOQ1RJT05TKQotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfTk9fTE9OR19ET1VCTEVfTUFUSF9GVU5DVElPTlMKLSNlbmRpZgotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1ODIpKQotLy8KLS8vIEJvcmxhbmQgcG9zdCA1LjguMiB1c2VzIERpbmt1bXdhcmUncyBzdGQgQyBsaWIgd2hpY2gKLS8vIGRvZXNuJ3QgaGF2ZSB0cnVlIGxvbmcgZG91YmxlIHByZWNpc2lvbi4gIEVhcmxpZXIKLS8vIHZlcnNpb25zIGFyZSBwcm9ibGVtYXRpYyB0b286Ci0vLwotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfTk9fUkVBTF9DT05DRVBUX1RFU1RTCi0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9OT19MT05HX0RPVUJMRV9NQVRIX0ZVTkNUSU9OUwotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfQ09OVFJPTF9GUCBfY29udHJvbDg3KE1DV19FTSxNQ1dfRU0pCi0jICBpbmNsdWRlIDxmbG9hdC5oPgotI2VuZGlmCi0jaWZkZWYgX19JQk1DUFBfXwotLy8KLS8vIEZvciByZWFzb25zIEkgZG9uJ3QgdW5zZXJzdGFuZCwgdGhlIHRlc3RzIHdpdGggSU1CJ3MgY29tcGlsZXIgYWxsCi0vLyBwYXNzIGF0IGxvbmcgZG91YmxlIHByZWNpc2lvbiwgYnV0IGZhaWwgd2l0aCByZWFsX2NvbmNlcHQsIHRob3NlIHRlc3RzCi0vLyBhcmUgZGlzYWJsZWQgZm9yIG5vdy4gIChKTSAyMDEyKS4KLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX05PX1JFQUxfQ09OQ0VQVF9URVNUUwotI2VuZGlmCi0jaWYgKGRlZmluZWQobWFjaW50b3NoKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX0FQUExFX0NDX18pKSAmJiAoKExEQkxfTUFOVF9ESUcgPT0gMTA2KSB8fCAoX19MREJMX01BTlRfRElHX18gPT0gMTA2KSkgJiYgIWRlZmluZWQoTkROQk9PU1RfTUFUSF9OT19MT05HX0RPVUJMRV9NQVRIX0ZVTkNUSU9OUykKLS8vCi0vLyBEYXJ3aW4ncyByYXRoZXIgc3RyYW5nZSAiZG91YmxlIGRvdWJsZSIgaXMgcmF0aGVyIGhhcmQgdG8KLS8vIHN1cHBvcnQsIGl0IHNob3VsZCBiZSBwb3NzaWJsZSBnaXZlbiBlbm91Z2ggZWZmb3J0IHRob3VnaC4uLgotLy8KLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX05PX0xPTkdfRE9VQkxFX01BVEhfRlVOQ1RJT05TCi0jZW5kaWYKLSNpZiBkZWZpbmVkKHVuaXgpICYmIGRlZmluZWQoX19JTlRFTF9DT01QSUxFUikgJiYgKF9fSU5URUxfQ09NUElMRVIgPD0gMTAwMCkgJiYgIWRlZmluZWQoTkROQk9PU1RfTUFUSF9OT19MT05HX0RPVUJMRV9NQVRIX0ZVTkNUSU9OUykKLS8vCi0vLyBJbnRlbCBjb21waWxlciBwcmlvciB0byB2ZXJzaW9uIDEwIGhhcyBzcG9yYWRpYyBwcm9ibGVtcwotLy8gY2FsbGluZyB0aGUgbG9uZyBkb3VibGUgb3ZlcmxvYWRzIG9mIHRoZSBzdGQgbGliIG1hdGggZnVuY3Rpb25zOgotLy8gY2FsbGluZyA6OnBvd2wgaXMgT0ssIGJ1dCBzdGQ6OnBvdyhsb25nIGRvdWJsZSwgbG9uZyBkb3VibGUpIAotLy8gbWF5IHNlZ2ZhdWx0IGRlcGVuZGluZyB1cG9uIHRoZSB2YWx1ZSBvZiB0aGUgYXJndW1lbnRzIHBhc3NlZCAKLS8vIGFuZCB0aGUgc3BlY2lmaWMgTGludXggZGlzdHJpYnV0aW9uLgotLy8KLS8vIFdlJ2xsIGJlIGNvbnNlcnZhdGl2ZSBhbmQgZGlzYWJsZSBsb25nIGRvdWJsZSBzdXBwb3J0IGZvciB0aGlzIGNvbXBpbGVyLgotLy8KLS8vIENvbW1lbnQgb3V0IHRoaXMgI2RlZmluZSBhbmQgdHJ5IGJ1aWxkaW5nIHRoZSB0ZXN0cyB0byBkZXRlcm1pbmUgd2hldGhlcgotLy8geW91ciBJbnRlbCBjb21waWxlciB2ZXJzaW9uIGhhcyB0aGlzIGlzc3VlIG9yIG5vdC4KLS8vCi0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9OT19MT05HX0RPVUJMRV9NQVRIX0ZVTkNUSU9OUwotI2VuZGlmCi0jaWYgZGVmaW5lZCh1bml4KSAmJiBkZWZpbmVkKF9fSU5URUxfQ09NUElMRVIpCi0vLwotLy8gSW50ZWwgY29tcGlsZXIgaGFzIHNwb3JhZGljIGlzc3VlcyBjb21waWxpbmcgc3RkOjpmcGNsYXNzaWZ5IGRlcGVuZGluZyBvbgotLy8gdGhlIGV4YWN0IE9TIHZlcnNpb24gdXNlZC4gIFVzZSBvdXIgb3duIGNvZGUgZm9yIHRoaXMgYXMgd2Uga25vdyBpdCB3b3JrcwotLy8gd2VsbCBvbiBJbnRlbCBwcm9jZXNzb3JzOgotLy8KLSNkZWZpbmUgTkROQk9PU1RfTUFUSF9ESVNBQkxFX1NURF9GUENMQVNTSUZZCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgIWRlZmluZWQoX1dJTjMyX1dDRSkKLSAgIC8vIEJldHRlciBzYWZlIHRoYW4gc29ycnksIG91ciB0ZXN0cyBkb24ndCBzdXBwb3J0IGhhcmR3YXJlIGV4Y2VwdGlvbnM6Ci0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9DT05UUk9MX0ZQIF9jb250cm9sODcoTUNXX0VNLE1DV19FTSkKLSNlbmRpZgotCi0jaWZkZWYgX19JQk1DUFBfXwotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfTk9fREVEVUNFRF9GVU5DVElPTl9QT0lOVEVSUwotI2VuZGlmCi0KLSNpZiAoZGVmaW5lZChfX1NURENfVkVSU0lPTl9fKSAmJiAoX19TVERDX1ZFUlNJT05fXyA+PSAxOTk5MDEpKQotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfVVNFX0M5OQotI2VuZGlmCi0KLSNpZiAoZGVmaW5lZChfX2hwdXgpICYmICFkZWZpbmVkKF9faHBwYSkpCi0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9VU0VfQzk5Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX0dMSUJDWFhfVVNFX0M5OSkKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX1VTRV9DOTkKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfTElCQ1BQX1ZFUlNJT04pICYmICFkZWZpbmVkKF9NU0NfVkVSKQotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfVVNFX0M5OQotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX19IUF9hQ0MpIHx8IGRlZmluZWQoTkROQk9PU1RfSU5URUwpIFwKLSAgfHwgZGVmaW5lZChORE5CT09TVF9OT19OQVRJVkVfTE9OR19ET1VCTEVfRlBfQ0xBU1NJRlkpIFwKLSAgfHwgKGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKE5ETkJPT1NUX01BVEhfVVNFX0M5OSkpXAotICB8fCBkZWZpbmVkKE5ETkJPT1NUX01BVEhfTk9fTE9OR19ET1VCTEVfTUFUSF9GVU5DVElPTlMpCi0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9OT19OQVRJVkVfTE9OR19ET1VCTEVfRlBfQ0xBU1NJRlkKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19FWFBMSUNJVF9GVU5DVElPTl9URU1QTEFURV9BUkdVTUVOVFMpIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19TVU5QUk9fQ0MsIDw9IDB4NTkwKQotCi0jICBpbmNsdWRlICJuZG5ib29zdC90eXBlLmhwcCIKLSMgIGluY2x1ZGUgIm5kbmJvb3N0L25vbl90eXBlLmhwcCIKLQotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfRVhQTElDSVRfVEVNUExBVEVfVFlQRSh0KSAgICAgICAgIG5kbmJvb3N0Ojp0eXBlPHQ+KiA9IDAKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX0VYUExJQ0lUX1RFTVBMQVRFX1RZUEVfU1BFQyh0KSAgICBuZG5ib29zdDo6dHlwZTx0PioKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX0VYUExJQ0lUX1RFTVBMQVRFX05PTl9UWVBFKHQsIHYpICBuZG5ib29zdDo6bm9uX3R5cGU8dCwgdj4qID0gMAotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfRVhQTElDSVRfVEVNUExBVEVfTk9OX1RZUEVfU1BFQyh0LCB2KSAgbmRuYm9vc3Q6Om5vbl90eXBlPHQsIHY+KgotCi0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9BUFBFTkRfRVhQTElDSVRfVEVNUExBVEVfVFlQRSh0KSAgICAgICAgIFwKLSAgICAgICAgICAgICAsIE5ETkJPT1NUX01BVEhfRVhQTElDSVRfVEVNUExBVEVfVFlQRSh0KQotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfQVBQRU5EX0VYUExJQ0lUX1RFTVBMQVRFX1RZUEVfU1BFQyh0KSAgICBcCi0gICAgICAgICAgICAgLCBORE5CT09TVF9NQVRIX0VYUExJQ0lUX1RFTVBMQVRFX1RZUEVfU1BFQyh0KQotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfQVBQRU5EX0VYUExJQ0lUX1RFTVBMQVRFX05PTl9UWVBFKHQsIHYpICBcCi0gICAgICAgICAgICAgLCBORE5CT09TVF9NQVRIX0VYUExJQ0lUX1RFTVBMQVRFX05PTl9UWVBFKHQsIHYpCi0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9BUFBFTkRfRVhQTElDSVRfVEVNUExBVEVfTk9OX1RZUEVfU1BFQyh0LCB2KSAgXAotICAgICAgICAgICAgICwgTkROQk9PU1RfTUFUSF9FWFBMSUNJVF9URU1QTEFURV9OT05fVFlQRV9TUEVDKHQsIHYpCi0KLSNlbHNlCi0KLS8vIG5vIHdvcmthcm91bmQgbmVlZGVkOiBleHBhbmQgdG8gbm90aGluZwotCi0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9FWFBMSUNJVF9URU1QTEFURV9UWVBFKHQpCi0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9FWFBMSUNJVF9URU1QTEFURV9UWVBFX1NQRUModCkKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX0VYUExJQ0lUX1RFTVBMQVRFX05PTl9UWVBFKHQsIHYpCi0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9FWFBMSUNJVF9URU1QTEFURV9OT05fVFlQRV9TUEVDKHQsIHYpCi0KLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX0FQUEVORF9FWFBMSUNJVF9URU1QTEFURV9UWVBFKHQpCi0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9BUFBFTkRfRVhQTElDSVRfVEVNUExBVEVfVFlQRV9TUEVDKHQpCi0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9BUFBFTkRfRVhQTElDSVRfVEVNUExBVEVfTk9OX1RZUEUodCwgdikKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX0FQUEVORF9FWFBMSUNJVF9URU1QTEFURV9OT05fVFlQRV9TUEVDKHQsIHYpCi0KLQotI2VuZGlmIC8vIGRlZmluZWQgTkROQk9PU1RfTk9fRVhQTElDSVRfRlVOQ1RJT05fVEVNUExBVEVfQVJHVU1FTlRTCi0KLSNpZiAoZGVmaW5lZChfX1NVTlBST19DQykgfHwgZGVmaW5lZChfX2hwcGEpIHx8IGRlZmluZWQoX19HTlVDX18pKSAmJiAhZGVmaW5lZChORE5CT09TVF9NQVRIX1NNQUxMX0NPTlNUQU5UKQotLy8gU3VuJ3MgY29tcGlsZXIgZW1pdHMgYSBoYXJkIGVycm9yIGlmIGEgY29uc3RhbnQgdW5kZXJmbG93cywKLS8vIGFzIGRvZXMgYUNDIG9uIFBBLVJJU0MsIHdoaWxlIGdjYyBpc3N1ZXMgYSBsYXJnZSBudW1iZXIgb2Ygd2FybmluZ3M6Ci0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9TTUFMTF9DT05TVEFOVCh4KSAwCi0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfU01BTExfQ09OU1RBTlQoeCkgeAotI2VuZGlmCi0KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxNDAwKQotLy8KLS8vIERlZmluZSBpZiBjb25zdGFudHMgdG9vIGxhcmdlIGZvciBhIGZsb2F0IGNhdXNlICJiYWQiCi0vLyB2YWx1ZXMgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhLCByYXRoZXIgdGhhbiBpbmZpbml0eQotLy8gb3IgYSBzdWl0YWJseSBsYXJnZSB2YWx1ZS4KLS8vCi0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9CVUdHWV9MQVJHRV9GTE9BVF9DT05TVEFOVFMKLSNlbmRpZgotLy8KLS8vIFR1bmUgcGVyZm9ybWFuY2Ugb3B0aW9ucyBmb3Igc3BlY2lmaWMgY29tcGlsZXJzOgotLy8KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9QT0xZX01FVEhPRCAyCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0lOVEVMKQotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfUE9MWV9NRVRIT0QgMgotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfUkFUSU9OQUxfTUVUSE9EIDIKLSNlbGlmIGRlZmluZWQoX19HTlVDX18pCi0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9QT0xZX01FVEhPRCAzCi0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9SQVRJT05BTF9NRVRIT0QgMwotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfSU5UX1RBQkxFX1RZUEUoUlQsIElUKSBSVAotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfSU5UX1ZBTFVFX1NVRkZJWChSViwgU1VGKSBSViMjLjBMCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fTE9OR19MT05HKSAmJiAhZGVmaW5lZChORE5CT09TVF9NQVRIX0lOVF9UQUJMRV9UWVBFKQotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfSU5UX1RBQkxFX1RZUEUoUlQsIElUKSBSVAotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfSU5UX1ZBTFVFX1NVRkZJWChSViwgU1VGKSBSViMjLjBMCi0jZW5kaWYKLQotLy8KLS8vIFRoZSBtYXhpbXVtIG9yZGVyIG9mIHBvbHlub21pYWwgdGhhdCB3aWxsIGJlIGV2YWx1YXRlZCAKLS8vIHZpYSBhbiB1bnJvbGxlZCBzcGVjaWFsaXNhdGlvbjoKLS8vCi0jaWZuZGVmIE5ETkJPT1NUX01BVEhfTUFYX1BPTFlfT1JERVIKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX01BWF9QT0xZX09SREVSIDE3Ci0jZW5kaWYgCi0vLwotLy8gU2V0IHRoZSBtZXRob2QgdXNlZCB0byBldmFsdWF0ZSBwb2x5bm9taWFscyBhbmQgcmF0aW9uYWxzOgotLy8KLSNpZm5kZWYgTkROQk9PU1RfTUFUSF9QT0xZX01FVEhPRAotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfUE9MWV9NRVRIT0QgMQotI2VuZGlmIAotI2lmbmRlZiBORE5CT09TVF9NQVRIX1JBVElPTkFMX01FVEhPRAotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfUkFUSU9OQUxfTUVUSE9EIDAKLSNlbmRpZiAKLS8vCi0vLyBkZWNpZGUgd2hldGhlciB0byBzdG9yZSBjb25zdGFudHMgYXMgaW50ZWdlcnMgb3IgcmVhbHM6Ci0vLwotI2lmbmRlZiBORE5CT09TVF9NQVRIX0lOVF9UQUJMRV9UWVBFCi0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9JTlRfVEFCTEVfVFlQRShSVCwgSVQpIElUCi0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfTUFUSF9JTlRfVkFMVUVfU1VGRklYCi0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9JTlRfVkFMVUVfU1VGRklYKFJWLCBTVUYpIFJWIyNTVUYKLSNlbmRpZgotLy8KLS8vIFRlc3Qgd2hldGhlciB0byBzdXBwb3J0IF9fZmxvYXQxMjg6Ci0vLwotI2lmIGRlZmluZWQoX0dMSUJDWFhfVVNFX0ZMT0FUMTI4KSAmJiBkZWZpbmVkKE5ETkJPT1NUX0dDQykgJiYgIWRlZmluZWQoX19TVFJJQ1RfQU5TSV9fKQotLy8KLS8vIE9ubHkgZW5hYmxlIHRoaXMgd2hlbiB0aGUgY29tcGlsZXIgcmVhbGx5IGlzIEdDQyBhcyBjbGFuZyBhbmQgcHJvYmFibHkgCi0vLyBpbnRlbCB0b28gZG9uJ3Qgc3VwcG9ydCBfX2Zsb2F0MTI4IHlldCA6LSgKLS8vCi0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9VU0VfRkxPQVQxMjgKLSNlbmRpZgotLy8KLS8vIENoZWNrIGZvciBXaW5DRSB3aXRoIG5vIGlvc3RyZWFtIHN1cHBvcnQ6Ci0vLwotI2lmIGRlZmluZWQoX1dJTjMyX1dDRSkgJiYgIWRlZmluZWQoX19TR0lfU1RMX1BPUlQpCi0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9OT19MRVhJQ0FMX0NBU1QKLSNlbmRpZgotCi0vLwotLy8gSGVscGVyIG1hY3JvIGZvciBjb250cm9sbGluZyB0aGUgRlAgYmVoYXZpb3VyOgotLy8KLSNpZm5kZWYgTkROQk9PU1RfTUFUSF9DT05UUk9MX0ZQCi0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9DT05UUk9MX0ZQCi0jZW5kaWYKLS8vCi0vLyBIZWxwZXIgbWFjcm8gZm9yIHVzaW5nIHN0YXRlbWVudHM6Ci0vLwotI2RlZmluZSBORE5CT09TVF9NQVRIX1NURF9VU0lOR19DT1JFIFwKLSAgIHVzaW5nIHN0ZDo6YWJzO1wKLSAgIHVzaW5nIHN0ZDo6YWNvcztcCi0gICB1c2luZyBzdGQ6OmNvcztcCi0gICB1c2luZyBzdGQ6OmZtb2Q7XAotICAgdXNpbmcgc3RkOjptb2RmO1wKLSAgIHVzaW5nIHN0ZDo6dGFuO1wKLSAgIHVzaW5nIHN0ZDo6YXNpbjtcCi0gICB1c2luZyBzdGQ6OmNvc2g7XAotICAgdXNpbmcgc3RkOjpmcmV4cDtcCi0gICB1c2luZyBzdGQ6OnBvdztcCi0gICB1c2luZyBzdGQ6OnRhbmg7XAotICAgdXNpbmcgc3RkOjphdGFuO1wKLSAgIHVzaW5nIHN0ZDo6ZXhwO1wKLSAgIHVzaW5nIHN0ZDo6bGRleHA7XAotICAgdXNpbmcgc3RkOjpzaW47XAotICAgdXNpbmcgc3RkOjphdGFuMjtcCi0gICB1c2luZyBzdGQ6OmZhYnM7XAotICAgdXNpbmcgc3RkOjpsb2c7XAotICAgdXNpbmcgc3RkOjpzaW5oO1wKLSAgIHVzaW5nIHN0ZDo6Y2VpbDtcCi0gICB1c2luZyBzdGQ6OmZsb29yO1wKLSAgIHVzaW5nIHN0ZDo6bG9nMTA7XAotICAgdXNpbmcgc3RkOjpzcXJ0OwotCi0jZGVmaW5lIE5ETkJPT1NUX01BVEhfU1REX1VTSU5HIE5ETkJPT1NUX01BVEhfU1REX1VTSU5HX0NPUkUKLQotbmFtZXNwYWNlIG5kbmJvb3N0eyBuYW1lc3BhY2UgbWF0aHsKLW5hbWVzcGFjZSB0b29scwotewotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLWlubGluZSBUIG1heCBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTihUIGEsIFQgYiwgVCBjKQotewotICAgcmV0dXJuIChzdGQ6Om1heCkoKHN0ZDo6bWF4KShhLCBiKSwgYyk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotaW5saW5lIFQgbWF4IE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OKFQgYSwgVCBiLCBUIGMsIFQgZCkKLXsKLSAgIHJldHVybiAoc3RkOjptYXgpKChzdGQ6Om1heCkoYSwgYiksIChzdGQ6Om1heCkoYywgZCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSB0b29scwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXZvaWQgc3VwcHJlc3NfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcoY29uc3QgVCYpCi17Ci19Ci0KLX19IC8vIG5hbWVzcGFjZSBuZG5ib29zdCBuYW1lc3BhY2UgbWF0aAotCi0jaWYgKChkZWZpbmVkKF9fbGludXhfXykgJiYgIWRlZmluZWQoX19VQ0xJQkNfXykpIHx8IGRlZmluZWQoX19RTlhfXykgfHwgZGVmaW5lZChfX0lCTUNQUF9fKSkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fRkVOVl9IKQotCi0gICAjaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL2ZlbnYuaHBwPgotCi0jICBpZmRlZiBGRV9BTExfRVhDRVBUCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsgbmFtZXNwYWNlIG1hdGh7Ci0gICBuYW1lc3BhY2UgZGV0YWlsCi0gICB7Ci0gICBzdHJ1Y3QgZnB1X2d1YXJkCi0gICB7Ci0gICAgICBmcHVfZ3VhcmQoKQotICAgICAgewotICAgICAgICAgZmVnZXRleGNlcHRmbGFnKCZtX2ZsYWdzLCBGRV9BTExfRVhDRVBUKTsKLSAgICAgICAgIGZlY2xlYXJleGNlcHQoRkVfQUxMX0VYQ0VQVCk7Ci0gICAgICB9Ci0gICAgICB+ZnB1X2d1YXJkKCkKLSAgICAgIHsKLSAgICAgICAgIGZlc2V0ZXhjZXB0ZmxhZygmbV9mbGFncywgRkVfQUxMX0VYQ0VQVCk7Ci0gICAgICB9Ci0gICBwcml2YXRlOgotICAgICAgZmV4Y2VwdF90IG1fZmxhZ3M7Ci0gICB9OwotCi0gICB9IC8vIG5hbWVzcGFjZSBkZXRhaWwKLSAgIH19IC8vIG5hbWVzcGFjZXMKLQotIyAgICBkZWZpbmUgTkROQk9PU1RfRlBVX0VYQ0VQVElPTl9HVUFSRCBuZG5ib29zdDo6bWF0aDo6ZGV0YWlsOjpmcHVfZ3VhcmQgbG9jYWxfZ3VhcmRfb2JqZWN0OwotIyAgICBkZWZpbmUgTkROQk9PU1RfTUFUSF9JTlNUUlVNRU5UX0ZQVSBkb3sgZmV4Y2VwdF90IGNwdV9mbGFnczsgZmVnZXRleGNlcHRmbGFnKCZjcHVfZmxhZ3MsIEZFX0FMTF9FWENFUFQpOyBORE5CT09TVF9NQVRIX0lOU1RSVU1FTlRfVkFSSUFCTEUoY3B1X2ZsYWdzKTsgfSB3aGlsZSgwKTsgCi0KLSMgIGVsc2UKLQotIyAgICBkZWZpbmUgTkROQk9PU1RfRlBVX0VYQ0VQVElPTl9HVUFSRAotIyAgICBkZWZpbmUgTkROQk9PU1RfTUFUSF9JTlNUUlVNRU5UX0ZQVQotCi0jICBlbmRpZgotCi0jZWxzZSAvLyBBbGwgb3RoZXIgcGxhdGZvcm1zLgotIyAgZGVmaW5lIE5ETkJPT1NUX0ZQVV9FWENFUFRJT05fR1VBUkQKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX0lOU1RSVU1FTlRfRlBVCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01BVEhfSU5TVFJVTUVOVAotCi0jICBpbmNsdWRlIDxpb3N0cmVhbT4KLSMgIGluY2x1ZGUgPGlvbWFuaXA+Ci0jICBpbmNsdWRlIDx0eXBlaW5mbz4KLQotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfSU5TVFJVTUVOVF9DT0RFKHgpIFwKLSAgICAgIHN0ZDo6Y291dCA8PCBzdGQ6OnNldHByZWNpc2lvbigzNSkgPDwgX19GSUxFX18gPDwgIjoiIDw8IF9fTElORV9fIDw8ICIgIiA8PCB4IDw8IHN0ZDo6ZW5kbDsKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX0lOU1RSVU1FTlRfVkFSSUFCTEUobmFtZSkgTkROQk9PU1RfTUFUSF9JTlNUUlVNRU5UX0NPREUoTkROQk9PU1RfU1RSSU5HSVpFKG5hbWUpIDw8ICIgPSAiIDw8IG5hbWUpCi0KLSNlbHNlCi0KLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX0lOU1RSVU1FTlRfQ09ERSh4KQotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfSU5TVFJVTUVOVF9WQVJJQUJMRShuYW1lKQotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01BVEhfVE9PTFNfQ09ORklHX0hQUAotCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbWF0aC90b29scy9wcm9tb3Rpb24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tYXRoL3Rvb2xzL3Byb21vdGlvbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3MWZlYTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tYXRoL3Rvb2xzL3Byb21vdGlvbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTAgKzAsMCBAQAotLy8gYm9vc3RcbWF0aFx0b29sc1xwcm9tb3Rpb24uaHBwCi0KLS8vIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwNi4KLS8vIENvcHlyaWdodCBQYXVsIEEuIEJyaXN0b3cgMjAwNi4KLQotLy8gVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLS8vIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQKLS8vIG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyBQcm9tb3RlIGFyZ3VtZW50cyBmdW5jdGlvbnMgdG8gYWxsb3cgbWF0aCBmdW5jdGlvbnMgdG8gaGF2ZSBhcmd1bWVudHMKLS8vIHByb3ZpZGVkIGFzIGludGVnZXIgT1IgcmVhbCAoZmxvYXRpbmctcG9pbnQsIGJ1aWx0LWluIG9yIFVEVCkKLS8vIChjYWxsZWQgQXJpdGhtZXRpY1R5cGUgaW4gZnVuY3Rpb25zIHRoYXQgdXNlIHByb21vdGlvbikKLS8vIHRoYXQgaGVscCB0byByZWR1Y2UgdGhlIHJpc2sgb2YgY3JlYXRpbmcgbXVsdGlwbGUgaW5zdGFudGlhdGlvbnMuCi0vLyBBbGxvd3MgY3JlYXRpb24gb2YgYW4gaW5saW5lIHdyYXBwZXIgdGhhdCBmb3J3YXJkcyB0byBhIGZvbyhSVCwgUlQpIGZ1bmN0aW9uLAotLy8gc28geW91IG5ldmVyIGdldCB0byBpbnN0YW50aWF0ZSBhbnkgbWl4ZWQgZm9vKFJULCBJVCkgZnVuY3Rpb25zLgotCi0jaWZuZGVmIE5ETkJPT1NUX01BVEhfUFJPTU9USU9OX0hQUAotI2RlZmluZSBORE5CT09TVF9NQVRIX1BST01PVElPTl9IUFAKLQotI2lmZGVmIF9NU0NfVkVSCi0jcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLyBCb29zdCB0eXBlIHRyYWl0czoKLSNpbmNsdWRlIDxuZG5ib29zdC9tYXRoL3Rvb2xzL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZmxvYXRpbmdfcG9pbnQuaHBwPiAvLyBmb3IgbmRuYm9vc3Q6OmlzX2Zsb2F0aW5nX3BvaW50OwotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2ludGVncmFsLmhwcD4gLy8gZm9yIG5kbmJvb3N0Ojppc19pbnRlZ3JhbAotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4gLy8gZm9yIG5kbmJvb3N0Ojppc19jb252ZXJ0aWJsZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPi8vIGZvciBuZG5ib29zdDo6aXNfc2FtZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHA+Ly8gZm9yIG5kbmJvb3N0OjpyZW1vdmVfY3YKLS8vIEJvb3N0IFRlbXBsYXRlIG1ldGEgcHJvZ3JhbW1pbmc6Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4gLy8gZm9yIG5kbmJvb3N0OjptcGw6OmlmX2MuCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FuZC5ocHA+IC8vIGZvciBuZG5ib29zdDo6bXBsOjppZl9jLgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9vci5ocHA+IC8vIGZvciBuZG5ib29zdDo6bXBsOjppZl9jLgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ub3QuaHBwPiAvLyBmb3IgbmRuYm9vc3Q6Om1wbDo6aWZfYy4KLQotI2lmZGVmIE5ETkJPT1NUX01BVEhfTk9fTE9OR19ET1VCTEVfTUFUSF9GVU5DVElPTlMKLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgbmFtZXNwYWNlIG1hdGgKLSAgewotICAgIG5hbWVzcGFjZSB0b29scwotICAgIHsKLSAgICAgIC8vIElmIGVpdGhlciBUMSBvciBUMiBpcyBhbiBpbnRlZ2VyIHR5cGUsCi0gICAgICAvLyBwcmV0ZW5kIGl0IHdhcyBhIGRvdWJsZSAoZm9yIHRoZSBwdXJwb3NlcyBvZiBmdXJ0aGVyIGFuYWx5c2lzKS4KLSAgICAgIC8vIFRoZW4gcGljayB0aGUgd2lkZXIgb2YgdGhlIHR3byBmbG9hdGluZy1wb2ludCB0eXBlcwotICAgICAgLy8gYXMgdGhlIGFjdHVhbCBzaWduYXR1cmUgdG8gZm9yd2FyZCB0by4KLSAgICAgIC8vIEZvciBleGFtcGxlOgotICAgICAgLy8gZm9vKGludCwgc2hvcnQpIC0+IGRvdWJsZSBmb28oZG91YmxlLCBkb3VibGUpOwotICAgICAgLy8gZm9vKGludCwgZmxvYXQpIC0+IGRvdWJsZSBmb28oZG91YmxlLCBkb3VibGUpOwotICAgICAgLy8gTm90ZTogTk9UIGZsb2F0IGZvbyhmbG9hdCwgZmxvYXQpCi0gICAgICAvLyBmb28oaW50LCBkb3VibGUpIC0+IGZvbyhkb3VibGUsIGRvdWJsZSk7Ci0gICAgICAvLyBmb28oZG91YmxlLCBmbG9hdCkgLT4gZG91YmxlIGZvbyhkb3VibGUsIGRvdWJsZSk7Ci0gICAgICAvLyBmb28oZG91YmxlLCBmbG9hdCkgLT4gZG91YmxlIGZvbyhkb3VibGUsIGRvdWJsZSk7Ci0gICAgICAvLyBmb28oYW55LWludC1vci1mbG9hdC10eXBlLCBsb25nIGRvdWJsZSkgLT4gZm9vKGxvbmcgZG91YmxlLCBsb25nIGRvdWJsZSk7Ci0gICAgICAvLyBidXQgT05MWSBmbG9hdCBmb28oZmxvYXQsIGZsb2F0KSBpcyB1bmNoYW5nZWQuCi0gICAgICAvLyBTbyB0aGUgb25seSB3YXkgdG8gZ2V0IGFuIGVudGlyZWx5IGZsb2F0IHZlcnNpb24gaXMgdG8gY2FsbCBmb28oMS5GLCAyLkYpLAotICAgICAgLy8gQnV0IHNpbmNlIG1vc3QgKGFsbD8pIHRoZSBtYXRoIGZ1bmN0aW9ucyBjb252ZXJ0IHRvIGRvdWJsZSBpbnRlcm5hbGx5LAotICAgICAgLy8gcHJvYmFibHkgdGhlcmUgd291bGQgbm90IGJlIHRoZSBob3BlZC1mb3IgZ2FpbiBieSB1c2luZyBmbG9hdCBoZXJlLgotCi0gICAgICAvLyBUaGlzIGZvbGxvd3MgdGhlIEMtY29tcGF0aWJsZSBjb252ZXJzaW9uIHJ1bGVzIG9mIHBvdywgZXRjCi0gICAgICAvLyB3aGVyZSBwb3coaW50LCBmbG9hdCkgaXMgY29udmVydGVkIHRvIHBvdyhkb3VibGUsIGRvdWJsZSkuCi0KLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgc3RydWN0IHByb21vdGVfYXJnCi0gICAgICB7IC8vIElmIFQgaXMgaW50ZWdyYWwgdHlwZSwgdGhlbiBwcm9tb3RlIHRvIGRvdWJsZS4KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzxpc19pbnRlZ3JhbDxUPiwgZG91YmxlLCBUPjo6dHlwZSB0eXBlOwotICAgICAgfTsKLSAgICAgIC8vIFRoZXNlIGZ1bGwgc3BlY2lhbGlzYXRpb25zIHJlZHVjZSBtcGw6OmlmXyB1c2FnZSBhbmQgc3BlZWQgdXAKLSAgICAgIC8vIGNvbXBpbGF0aW9uOgotICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfYXJnPGZsb2F0PiB7IHR5cGVkZWYgZmxvYXQgdHlwZTsgfTsKLSAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBwcm9tb3RlX2FyZzxkb3VibGU+eyB0eXBlZGVmIGRvdWJsZSB0eXBlOyB9OwotICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfYXJnPGxvbmcgZG91YmxlPiB7IHR5cGVkZWYgbG9uZyBkb3VibGUgdHlwZTsgfTsKLSAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBwcm9tb3RlX2FyZzxpbnQ+IHsgIHR5cGVkZWYgZG91YmxlIHR5cGU7IH07Ci0KLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+Ci0gICAgICBzdHJ1Y3QgcHJvbW90ZV9hcmdzXzIKLSAgICAgIHsgLy8gUHJvbW90ZSwgaWYgbmVjZXNzYXJ5LCAmIHBpY2sgdGhlIHdpZGVyIG9mIHRoZSB0d28gZmxvYXRpbmctcG9pbnQgdHlwZXMuCi0gICAgICAgIC8vIGZvciBib3RoIHBhcmFtZXRlciB0eXBlcywgaWYgaW50ZWdyYWwgcHJvbW90ZSB0byBkb3VibGUuCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJvbW90ZV9hcmc8VDE+Ojp0eXBlIFQxUDsgLy8gVDEgcGVyaGFwcyBwcm9tb3RlZC4KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcm9tb3RlX2FyZzxUMj46OnR5cGUgVDJQOyAvLyBUMiBwZXJoYXBzIHByb21vdGVkLgotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl88Ci0gICAgICAgICAgdHlwZW5hbWUgbXBsOjphbmRfPGlzX2Zsb2F0aW5nX3BvaW50PFQxUD4sIGlzX2Zsb2F0aW5nX3BvaW50PFQyUD4gPjo6dHlwZSwgLy8gYm90aCBUMVAgYW5kIFQyUCBhcmUgZmxvYXRpbmctcG9pbnQ/Ci0gICAgICAgICAgdHlwZW5hbWUgbXBsOjppZl88IHR5cGVuYW1lIG1wbDo6b3JfPGlzX3NhbWU8bG9uZyBkb3VibGUsIFQxUD4sIGlzX3NhbWU8bG9uZyBkb3VibGUsIFQyUD4gPjo6dHlwZSwgLy8gZWl0aGVyIGxvbmcgZG91YmxlPwotICAgICAgICAgICAgbG9uZyBkb3VibGUsIC8vIHRoZW4gcmVzdWx0IHR5cGUgaXMgbG9uZyBkb3VibGUuCi0gICAgICAgICAgICB0eXBlbmFtZSBtcGw6OmlmXzwgdHlwZW5hbWUgbXBsOjpvcl88aXNfc2FtZTxkb3VibGUsIFQxUD4sIGlzX3NhbWU8ZG91YmxlLCBUMlA+ID46OnR5cGUsIC8vIGVpdGhlciBkb3VibGU/Ci0gICAgICAgICAgICBkb3VibGUsIC8vIHJlc3VsdCB0eXBlIGlzIGRvdWJsZS4KLSAgICAgICAgICBmbG9hdCAvLyBlbHNlIHJlc3VsdCB0eXBlIGlzIGZsb2F0LgotICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICA+Ojp0eXBlLAotICAgICAgICAgIC8vIGVsc2Ugb25lIG9yIHRoZSBvdGhlciBpcyBhIHVzZXItZGVmaW5lZCB0eXBlOgotICAgICAgICAgIHR5cGVuYW1lIG1wbDo6aWZfPCB0eXBlbmFtZSBtcGw6OmFuZF88bXBsOjpub3RfPGlzX2Zsb2F0aW5nX3BvaW50PFQyUD4gPiwgOjpuZG5ib29zdDo6aXNfY29udmVydGlibGU8VDFQLCBUMlA+ID4sIFQyUCwgVDFQPjo6dHlwZT46OnR5cGUgdHlwZTsKLSAgICAgIH07IC8vIHByb21vdGVfYXJnMgotICAgICAgLy8gVGhlc2UgZnVsbCBzcGVjaWFsaXNhdGlvbnMgcmVkdWNlIG1wbDo6aWZfIHVzYWdlIGFuZCBzcGVlZCB1cAotICAgICAgLy8gY29tcGlsYXRpb246Ci0gICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgcHJvbW90ZV9hcmdzXzI8ZmxvYXQsIGZsb2F0PiB7IHR5cGVkZWYgZmxvYXQgdHlwZTsgfTsKLSAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBwcm9tb3RlX2FyZ3NfMjxkb3VibGUsIGRvdWJsZT57IHR5cGVkZWYgZG91YmxlIHR5cGU7IH07Ci0gICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgcHJvbW90ZV9hcmdzXzI8bG9uZyBkb3VibGUsIGxvbmcgZG91YmxlPiB7IHR5cGVkZWYgbG9uZyBkb3VibGUgdHlwZTsgfTsKLSAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBwcm9tb3RlX2FyZ3NfMjxpbnQsIGludD4geyAgdHlwZWRlZiBkb3VibGUgdHlwZTsgfTsKLSAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBwcm9tb3RlX2FyZ3NfMjxpbnQsIGZsb2F0PiB7ICB0eXBlZGVmIGRvdWJsZSB0eXBlOyB9OwotICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfYXJnc18yPGZsb2F0LCBpbnQ+IHsgIHR5cGVkZWYgZG91YmxlIHR5cGU7IH07Ci0gICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgcHJvbW90ZV9hcmdzXzI8aW50LCBkb3VibGU+IHsgIHR5cGVkZWYgZG91YmxlIHR5cGU7IH07Ci0gICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgcHJvbW90ZV9hcmdzXzI8ZG91YmxlLCBpbnQ+IHsgIHR5cGVkZWYgZG91YmxlIHR5cGU7IH07Ci0gICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgcHJvbW90ZV9hcmdzXzI8aW50LCBsb25nIGRvdWJsZT4geyAgdHlwZWRlZiBsb25nIGRvdWJsZSB0eXBlOyB9OwotICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfYXJnc18yPGxvbmcgZG91YmxlLCBpbnQ+IHsgIHR5cGVkZWYgbG9uZyBkb3VibGUgdHlwZTsgfTsKLSAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBwcm9tb3RlX2FyZ3NfMjxmbG9hdCwgZG91YmxlPiB7ICB0eXBlZGVmIGRvdWJsZSB0eXBlOyB9OwotICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfYXJnc18yPGRvdWJsZSwgZmxvYXQ+IHsgIHR5cGVkZWYgZG91YmxlIHR5cGU7IH07Ci0gICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgcHJvbW90ZV9hcmdzXzI8ZmxvYXQsIGxvbmcgZG91YmxlPiB7ICB0eXBlZGVmIGxvbmcgZG91YmxlIHR5cGU7IH07Ci0gICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgcHJvbW90ZV9hcmdzXzI8bG9uZyBkb3VibGUsIGZsb2F0PiB7ICB0eXBlZGVmIGxvbmcgZG91YmxlIHR5cGU7IH07Ci0gICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgcHJvbW90ZV9hcmdzXzI8ZG91YmxlLCBsb25nIGRvdWJsZT4geyAgdHlwZWRlZiBsb25nIGRvdWJsZSB0eXBlOyB9OwotICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfYXJnc18yPGxvbmcgZG91YmxlLCBkb3VibGU+IHsgIHR5cGVkZWYgbG9uZyBkb3VibGUgdHlwZTsgfTsKLQotICAgICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj1mbG9hdCwgY2xhc3MgVDM9ZmxvYXQsIGNsYXNzIFQ0PWZsb2F0LCBjbGFzcyBUNT1mbG9hdCwgY2xhc3MgVDY9ZmxvYXQ+Ci0gICAgICBzdHJ1Y3QgcHJvbW90ZV9hcmdzCi0gICAgICB7Ci0gICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByb21vdGVfYXJnc18yPAotICAgICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX2N2PFQxPjo6dHlwZSwKLSAgICAgICAgICAgIHR5cGVuYW1lIHByb21vdGVfYXJnc18yPAotICAgICAgICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX2N2PFQyPjo6dHlwZSwKLSAgICAgICAgICAgICAgIHR5cGVuYW1lIHByb21vdGVfYXJnc18yPAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX2N2PFQzPjo6dHlwZSwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIHByb21vdGVfYXJnc18yPAotICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX2N2PFQ0Pjo6dHlwZSwKLSAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIHByb21vdGVfYXJnc18yPAotICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX2N2PFQ1Pjo6dHlwZSwgdHlwZW5hbWUgcmVtb3ZlX2N2PFQ2Pjo6dHlwZQotICAgICAgICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0jaWZkZWYgTkROQk9PU1RfTUFUSF9OT19MT05HX0RPVUJMRV9NQVRIX0ZVTkNUSU9OUwotICAgICAgICAgLy8KLSAgICAgICAgIC8vIEd1YXJkIGFnYWluc3QgdXNlIG9mIGxvbmcgZG91YmxlIGlmIGl0J3Mgbm90IHN1cHBvcnRlZDoKLSAgICAgICAgIC8vCi0gICAgICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCgwID09IDo6bmRuYm9vc3Q6OmlzX3NhbWU8dHlwZSwgbG9uZyBkb3VibGU+Ojp2YWx1ZSkpOwotI2VuZGlmCi0gICAgICB9OwotCi0gICAgfSAvLyBuYW1lc3BhY2UgdG9vbHMKLSAgfSAvLyBuYW1lc3BhY2UgbWF0aAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01BVEhfUFJPTU9USU9OX0hQUAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21hdGgvdG9vbHMvcmVhbF9jYXN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbWF0aC90b29scy9yZWFsX2Nhc3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTE0NjEyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbWF0aC90b29scy9yZWFsX2Nhc3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotLy8gIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwNi4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX01BVEhfVE9PTFNfUkVBTF9DQVNUX0hQUAotI2RlZmluZSBORE5CT09TVF9NQVRIX1RPT0xTX1JFQUxfQ0FTVF9IUFAKLQotI2lmZGVmIF9NU0NfVkVSCi0jcHJhZ21hIG9uY2UKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7IG5hbWVzcGFjZSBtYXRoCi17Ci0gIG5hbWVzcGFjZSB0b29scwotICB7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRvLCBjbGFzcyBUPgotICAgIGlubGluZSBUbyByZWFsX2Nhc3QoVCB0KQotICAgIHsKLSAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VG8+KHQpOwotICAgIH0KLSAgfSAvLyBuYW1lc3BhY2UgdG9vbHMKLX0gLy8gbmFtZXNwYWNlIG1hdGgKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NQVRIX1RPT0xTX1JFQUxfQ0FTVF9IUFAKLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbWF0aC90b29scy91c2VyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbWF0aC90b29scy91c2VyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjgyMjQ1OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21hdGgvdG9vbHMvdXNlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0vLyBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDcuCi0vLyBDb3B5cmlnaHQgUGF1bCBBLiBCcmlzdG93IDIwMDcuCi0KLS8vIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0vLyBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0Ci0vLyBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9NQVRIX1RPT0xTX1VTRVJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX01BVEhfVE9PTFNfVVNFUl9IUFAKLQotI2lmZGVmIF9NU0NfVkVSCi0jcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLyBUaGlzIGZpbGUgY2FuIGJlIG1vZGlmaWVkIGJ5IHRoZSB1c2VyIHRvIGNoYW5nZSB0aGUgZGVmYXVsdCBwb2xpY2llcy4KLS8vIFNlZSAiQ2hhbmdpbmcgdGhlIFBvbGljeSBEZWZhdWx0cyIgaW4gZG9jdW1lbnRhdGlvbi4KLQotLy8gZGVmaW5lIHRoaXMgaWYgdGhlIHBsYXRmb3JtIGhhcyBubyBsb25nIGRvdWJsZSBmdW5jdGlvbnMsCi0vLyBvciBpZiB0aGUgbG9uZyBkb3VibGUgdmVyc2lvbnMgaGF2ZSBvbmx5IGRvdWJsZSBwcmVjaXNpb246Ci0vLwotLy8gI2RlZmluZSBORE5CT09TVF9NQVRIX05PX0xPTkdfRE9VQkxFX01BVEhfRlVOQ1RJT05TCi0vLwotLy8gUGVyZm9ybWFuY2UgdHVuaW5nIG9wdGlvbnM6Ci0vLwotLy8gI2RlZmluZSBORE5CT09TVF9NQVRIX1BPTFlfTUVUSE9EIDMKLS8vICNkZWZpbmUgTkROQk9PU1RfTUFUSF9SQVRJT05BTF9NRVRIT0QgMwotLy8KLS8vIFRoZSBtYXhpbXVtIG9yZGVyIG9mIHBvbHlub21pYWwgdGhhdCB3aWxsIGJlIGV2YWx1YXRlZAotLy8gdmlhIGFuIHVucm9sbGVkIHNwZWNpYWxpc2F0aW9uOgotLy8KLS8vICNkZWZpbmUgTkROQk9PU1RfTUFUSF9NQVhfUE9MWV9PUkRFUiAxNwotLy8KLS8vIGRlY2lkZSB3aGV0aGVyIHRvIHN0b3JlIGNvbnN0YW50cyBhcyBpbnRlZ2VycyBvciByZWFsczoKLS8vCi0vLyAjZGVmaW5lIE5ETkJPT1NUX01BVEhfSU5UX1RBQkxFX1RZUEUoUlQsIElUKSBJVAotCi0vLwotLy8gRGVmYXVsdCBwb2xpY2llcyBmb2xsb3c6Ci0vLwotLy8gRG9tYWluIGVycm9yczoKLS8vCi0vLyAjZGVmaW5lIE5ETkJPT1NUX01BVEhfRE9NQUlOX0VSUk9SX1BPTElDWSB0aHJvd19vbl9lcnJvcgotLy8KLS8vIFBvbGUgZXJyb3JzOgotLy8KLS8vICNkZWZpbmUgTkROQk9PU1RfTUFUSF9QT0xFX0VSUk9SX1BPTElDWSB0aHJvd19vbl9lcnJvcgotLy8KLS8vIE92ZXJmbG93IEVycm9yczoKLS8vCi0vLyAjZGVmaW5lIE5ETkJPT1NUX01BVEhfT1ZFUkZMT1dfRVJST1JfUE9MSUNZIHRocm93X29uX2Vycm9yCi0vLwotLy8gSW50ZXJuYWwgRXZhbHVhdGlvbiBFcnJvcnM6Ci0vLwotLy8gI2RlZmluZSBORE5CT09TVF9NQVRIX0VWQUxVQVRJT05fRVJST1JfUE9MSUNZIHRocm93X29uX2Vycm9yCi0vLwotLy8gVW5kZXJmb3c6Ci0vLwotLy8gI2RlZmluZSBORE5CT09TVF9NQVRIX1VOREVSRkxPV19FUlJPUl9QT0xJQ1kgaWdub3JlX2Vycm9yCi0vLwotLy8gRGVub3JtczoKLS8vCi0vLyAjZGVmaW5lIE5ETkJPT1NUX01BVEhfREVOT1JNX0VSUk9SX1BPTElDWSBpZ25vcmVfZXJyb3IKLS8vCi0vLyBNYXggZGlnaXRzIHRvIHVzZSBmb3IgaW50ZXJuYWwgY2FsY3VsYXRpb25zOgotLy8KLS8vICNkZWZpbmUgTkROQk9PU1RfTUFUSF9ESUdJVFMxMF9QT0xJQ1kgMAotLy8KLS8vIFByb21vdGUgZmxvYXRzIHRvIGRvdWJsZXMgaW50ZXJuYWxseT8KLS8vCi0vLyAjZGVmaW5lIE5ETkJPT1NUX01BVEhfUFJPTU9URV9GTE9BVF9QT0xJQ1kgdHJ1ZQotLy8KLS8vIFByb21vdGUgZG91YmxlcyB0byBsb25nIGRvdWJsZSBpbnRlcm5hbGx5OgotLy8KLS8vICNkZWZpbmUgTkROQk9PU1RfTUFUSF9QUk9NT1RFX0RPVUJMRV9QT0xJQ1kgdHJ1ZQotLy8KLS8vIFdoYXQgZG8gZGlzY3JldGUgcXVhbnRpbGVzIHJldHVybj8KLS8vCi0vLyAjZGVmaW5lIE5ETkJPT1NUX01BVEhfRElTQ1JFVEVfUVVBTlRJTEVfUE9MSUNZIGludGVnZXJfcm91bmRfb3V0d2FyZHMKLS8vCi0vLyBJZiBhIGZ1bmN0aW9uIGlzIG1hdGhlbWF0aWNhbGx5IHVuZGVmaW5lZAotLy8gKGZvciBleGFtcGxlIHRoZSBDYXVjaHkgZGlzdHJpYnV0aW9uIGhhcyBubyBtZWFuKSwKLS8vIHRoZW4gZG8gd2Ugc3RvcCB0aGUgY29kZSBmcm9tIGNvbXBpbGluZz8KLS8vCi0vLyAjZGVmaW5lIE5ETkJPT1NUX01BVEhfQVNTRVJUX1VOREVGSU5FRF9QT0xJQ1kgdHJ1ZQotLy8KLS8vIE1heGltdW0gc2VyaWVzIGl0ZXJzdGlvbnMgcGVybWl0dGVkOgotLy8KLS8vICNkZWZpbmUgTkROQk9PU1RfTUFUSF9NQVhfU0VSSUVTX0lURVJBVElPTl9QT0xJQ1kgMTAwMDAwMAotLy8KLS8vIE1heGltdW0gcm9vdCBmaW5kaW5nIHN0ZXBzIHBlcm1pdHRlZDoKLS8vCi0vLyBkZWZpbmUgTkROQk9PU1RfTUFUSF9NQVhfUk9PVF9JVEVSQVRJT05fUE9MSUNZIDIwMAotCi0jZW5kaWYgLy8gTkROQk9PU1RfTUFUSF9UT09MU19VU0VSX0hQUAotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbWVtX2ZuLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbWVtX2ZuLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWNkNjQxNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21lbV9mbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX01FTV9GTl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICBtZW1fZm4uaHBwIC0gYSBnZW5lcmFsaXphdGlvbiBvZiBzdGQ6Om1lbV9mdW5bX3JlZl0KLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDA5IFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQKLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvYmluZC9tZW1fZm4uaHRtbCBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL21lbV9mbi5ocHA+Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX01FTV9GTl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbWVtb3J5X29yZGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbWVtb3J5X29yZGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGM4Zjg1Mi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21lbW9yeV9vcmRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX01FTU9SWV9PUkRFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTUVNT1JZX09SREVSX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8gIG5kbmJvb3N0L21lbW9yeV9vcmRlci5ocHAKLS8vCi0vLyAgRGVmaW5lcyBlbnVtIG5kbmJvb3N0OjptZW1vcnlfb3JkZXIgcGVyIHRoZSBDKysweCB3b3JraW5nIGRyYWZ0Ci0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwOCwgMjAwOSBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi0vLwotLy8gRW51bSB2YWx1ZXMgYXJlIGNob3NlbiBzbyB0aGF0IGNvZGUgdGhhdCBuZWVkcyB0byBpbnNlcnQKLS8vIGEgdHJhaWxpbmcgZmVuY2UgZm9yIGFjcXVpcmUgc2VtYW50aWNzIGNhbiB1c2UgYSBzaW5nbGUKLS8vIHRlc3Qgc3VjaCBhczoKLS8vCi0vLyBpZiggbW8gJiBtZW1vcnlfb3JkZXJfYWNxdWlyZSApIHsgLi4uZmVuY2UuLi4gfQotLy8KLS8vIEZvciBsZWFkaW5nIGZlbmNlcyBvbmUgY2FuIHVzZToKLS8vCi0vLyBpZiggbW8gJiBtZW1vcnlfb3JkZXJfcmVsZWFzZSApIHsgLi4uZmVuY2UuLi4gfQotLy8KLS8vIEFyY2hpdGVjdHVyZXMgc3VjaCBhcyBBbHBoYSB0aGF0IG5lZWQgYSBmZW5jZSBvbiBjb25zdW1lCi0vLyBjYW4gdXNlOgotLy8KLS8vIGlmKCBtbyAmICggbWVtb3J5X29yZGVyX2FjcXVpcmUgfCBtZW1vcnlfb3JkZXJfY29uc3VtZSApICkgeyAuLi5mZW5jZS4uLiB9Ci0vLwotCi1lbnVtIG1lbW9yeV9vcmRlcgotewotICAgIG1lbW9yeV9vcmRlcl9yZWxheGVkID0gMCwKLSAgICBtZW1vcnlfb3JkZXJfYWNxdWlyZSA9IDEsCi0gICAgbWVtb3J5X29yZGVyX3JlbGVhc2UgPSAyLAotICAgIG1lbW9yeV9vcmRlcl9hY3FfcmVsID0gMywgLy8gYWNxdWlyZSB8IHJlbGVhc2UKLSAgICBtZW1vcnlfb3JkZXJfc2VxX2NzdCA9IDcsIC8vIGFjcV9yZWwgfCA0Ci0gICAgbWVtb3J5X29yZGVyX2NvbnN1bWUgPSA4Ci19OwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9NRU1PUllfT1JERVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21vdmUvYWxnb3JpdGhtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbW92ZS9hbGdvcml0aG0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZmQxOTE4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbW92ZS9hbGdvcml0aG0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjc1ICswLDAgQEAKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIChDKSBDb3B5cmlnaHQgSW9uIEdhenRhbmFnYSAyMDEyLTIwMTIuCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbW92ZSBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotLy8hIFxmaWxlCi0KLSNpZm5kZWYgTkROQk9PU1RfTU9WRV9BTEdPUklUSE1fSFBQCi0jZGVmaW5lIE5ETkJPT1NUX01PVkVfQUxHT1JJVEhNX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbW92ZS9kZXRhaWwvY29uZmlnX2JlZ2luLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L21vdmUvdXRpbGl0eS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbW92ZS9pdGVyYXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbW92ZS9hbGdvcml0aG0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9ub19leGNlcHRpb25zX3N1cHBvcnQuaHBwPgotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPiAvL2NvcHksIGNvcHlfYmFja3dhcmQKLSNpbmNsdWRlIDxtZW1vcnk+ICAgIC8vdW5pbml0aWFsaXplZF9jb3B5Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUKLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01PVkVfVVNFX1NUQU5EQVJEX0xJQlJBUllfTU9WRSkKLQotICAgLy8hIDxiPkVmZmVjdHM8L2I+OiBNb3ZlcyBlbGVtZW50cyBpbiB0aGUgcmFuZ2UgW2ZpcnN0LGxhc3QpIGludG8gdGhlIHJhbmdlIFtyZXN1bHQscmVzdWx0ICsgKGxhc3QgLQotICAgLy8hICAgZmlyc3QpKSBzdGFydGluZyBmcm9tIGZpcnN0IGFuZCBwcm9jZWVkaW5nIHRvIGxhc3QuIEZvciBlYWNoIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyIG4gPCAobGFzdC1maXJzdCksCi0gICAvLyEgICBwZXJmb3JtcyAqKHJlc3VsdCArIG4pID0gOjpuZG5ib29zdDo6bW92ZSAoKihmaXJzdCArIG4pKS4KLSAgIC8vIQotICAgLy8hIDxiPkVmZmVjdHM8L2I+OiByZXN1bHQgKyAobGFzdCAtIGZpcnN0KS4KLSAgIC8vIQotICAgLy8hIDxiPlJlcXVpcmVzPC9iPjogcmVzdWx0IHNoYWxsIG5vdCBiZSBpbiB0aGUgcmFuZ2UgW2ZpcnN0LGxhc3QpLgotICAgLy8hCi0gICAvLyEgPGI+Q29tcGxleGl0eTwvYj46IEV4YWN0bHkgbGFzdCAtIGZpcnN0IG1vdmUgYXNzaWdubWVudHMuCi0gICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSSwgLy8gSSBtb2RlbHMgSW5wdXRJdGVyYXRvcgotICAgICAgICAgICAgdHlwZW5hbWUgTz4gLy8gTyBtb2RlbHMgT3V0cHV0SXRlcmF0b3IKLSAgIE8gbW92ZShJIGYsIEkgbCwgTyByZXN1bHQpCi0gICB7Ci0gICAgICB3aGlsZSAoZiAhPSBsKSB7Ci0gICAgICAgICAqcmVzdWx0ID0gOjpuZG5ib29zdDo6bW92ZSgqZik7Ci0gICAgICAgICArK2Y7ICsrcmVzdWx0OwotICAgICAgfQotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgIH0KLQotICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAvLwotICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZV9iYWNrd2FyZAotICAgLy8KLSAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAvLyEgPGI+RWZmZWN0czwvYj46IE1vdmVzIGVsZW1lbnRzIGluIHRoZSByYW5nZSBbZmlyc3QsbGFzdCkgaW50byB0aGUgcmFuZ2UKLSAgIC8vISAgIFtyZXN1bHQgLSAobGFzdC1maXJzdCkscmVzdWx0KSBzdGFydGluZyBmcm9tIGxhc3QgLSAxIGFuZCBwcm9jZWVkaW5nIHRvCi0gICAvLyEgICBmaXJzdC4gRm9yIGVhY2ggcG9zaXRpdmUgaW50ZWdlciBuIDw9IChsYXN0IC0gZmlyc3QpLAotICAgLy8hICAgcGVyZm9ybXMgKihyZXN1bHQgLSBuKSA9IDo6bmRuYm9vc3Q6Om1vdmUoKihsYXN0IC0gbikpLgotICAgLy8hCi0gICAvLyEgPGI+UmVxdWlyZXM8L2I+OiByZXN1bHQgc2hhbGwgbm90IGJlIGluIHRoZSByYW5nZSBbZmlyc3QsbGFzdCkuCi0gICAvLyEKLSAgIC8vISA8Yj5SZXR1cm5zPC9iPjogcmVzdWx0IC0gKGxhc3QgLSBmaXJzdCkuCi0gICAvLyEKLSAgIC8vISA8Yj5Db21wbGV4aXR5PC9iPjogRXhhY3RseSBsYXN0IC0gZmlyc3QgYXNzaWdubWVudHMuCi0gICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSSwgLy8gSSBtb2RlbHMgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yCi0gICB0eXBlbmFtZSBPPiAvLyBPIG1vZGVscyBCaWRpcmVjdGlvbmFsSXRlcmF0b3IKLSAgIE8gbW92ZV9iYWNrd2FyZChJIGYsIEkgbCwgTyByZXN1bHQpCi0gICB7Ci0gICAgICB3aGlsZSAoZiAhPSBsKSB7Ci0gICAgICAgICAtLWw7IC0tcmVzdWx0OwotICAgICAgICAgKnJlc3VsdCA9IDo6bmRuYm9vc3Q6Om1vdmUoKmwpOwotICAgICAgfQotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgIH0KLQotI2Vsc2UKLQotICAgdXNpbmcgOjpzdGQ6Om1vdmVfYmFja3dhcmQ7Ci0KLSNlbmRpZiAgIC8vIWRlZmluZWQoTkROQk9PU1RfTU9WRV9VU0VfU1RBTkRBUkRfTElCUkFSWV9NT1ZFKQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmluaXRpYWxpemVkX21vdmUKLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotLy8hIDxiPkVmZmVjdHM8L2I+OgotLy8hICAgXGNvZGUKLS8vISAgIGZvciAoOyBmaXJzdCAhPSBsYXN0OyArK3Jlc3VsdCwgKytmaXJzdCkKLS8vISAgICAgIG5ldyAoc3RhdGljX2Nhc3Q8dm9pZCo+KCYqcmVzdWx0KSkKLS8vISAgICAgICAgIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlKG5kbmJvb3N0Ojptb3ZlKCpmaXJzdCkpOwotLy8hICAgXGVuZGNvZGUKLS8vIQotLy8hIDxiPlJldHVybnM8L2I+OiByZXN1bHQKLXRlbXBsYXRlCi0gICA8dHlwZW5hbWUgSSwgLy8gSSBtb2RlbHMgSW5wdXRJdGVyYXRvcgotICAgIHR5cGVuYW1lIEY+IC8vIEYgbW9kZWxzIEZvcndhcmRJdGVyYXRvcgotRiB1bmluaXRpYWxpemVkX21vdmUoSSBmLCBJIGwsIEYgcgotICAgLy8vIEBjb25kCi0vLyAgICx0eXBlbmFtZSA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6ZW5hYmxlX2lmPGhhc19tb3ZlX2VtdWxhdGlvbl9lbmFibGVkPHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPEk+Ojp2YWx1ZV90eXBlPiA+Ojp0eXBlKiA9IDAKLSAgIC8vLyBAZW5kY29uZAotICAgKQotewotICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxJPjo6dmFsdWVfdHlwZSBpbnB1dF92YWx1ZV90eXBlOwotCi0gICBGIGJhY2sgPSByOwotICAgTkROQk9PU1RfVFJZewotICAgICAgd2hpbGUgKGYgIT0gbCkgewotICAgICAgICAgdm9pZCAqIGNvbnN0IGFkZHIgPSBzdGF0aWNfY2FzdDx2b2lkKj4oOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmFkZHJlc3NvZigqcikpOwotICAgICAgICAgOjpuZXcoYWRkcikgaW5wdXRfdmFsdWVfdHlwZSg6Om5kbmJvb3N0Ojptb3ZlKCpmKSk7Ci0gICAgICAgICArK2Y7ICsrcjsKLSAgICAgIH0KLSAgIH0KLSAgIE5ETkJPT1NUX0NBVENIKC4uLil7Ci0JICAgZm9yICg7IGJhY2sgIT0gcjsgKytiYWNrKXsKLSAgICAgICAgIGJhY2stPn5pbnB1dF92YWx1ZV90eXBlKCk7Ci0gICAgICB9Ci0JICAgTkROQk9PU1RfUkVUSFJPVzsKLSAgIH0KLSAgIE5ETkJPT1NUX0NBVENIX0VORAotICAgcmV0dXJuIHI7Ci19Ci0KLS8vLyBAY29uZAotLyoKLXRlbXBsYXRlCi0gICA8dHlwZW5hbWUgSSwgICAvLyBJIG1vZGVscyBJbnB1dEl0ZXJhdG9yCi0gICAgdHlwZW5hbWUgRj4gICAvLyBGIG1vZGVscyBGb3J3YXJkSXRlcmF0b3IKLUYgdW5pbml0aWFsaXplZF9tb3ZlKEkgZiwgSSBsLCBGIHIsCi0gICB0eXBlbmFtZSA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6ZGlzYWJsZV9pZjxoYXNfbW92ZV9lbXVsYXRpb25fZW5hYmxlZDx0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxJPjo6dmFsdWVfdHlwZT4gPjo6dHlwZSogPSAwKQotewotICAgcmV0dXJuIHN0ZDo6dW5pbml0aWFsaXplZF9jb3B5KGYsIGwsIHIpOwotfQotKi8KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pbml0aWFsaXplZF9jb3B5X29yX21vdmUKLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotbmFtZXNwYWNlIG1vdmVfZGV0YWlsIHsKLQotdGVtcGxhdGUKLTx0eXBlbmFtZSBJLCAgIC8vIEkgbW9kZWxzIElucHV0SXRlcmF0b3IKLXR5cGVuYW1lIEY+ICAgLy8gRiBtb2RlbHMgRm9yd2FyZEl0ZXJhdG9yCi1pbmxpbmUgRiB1bmluaXRpYWxpemVkX21vdmVfbW92ZV9pdGVyYXRvcihJIGYsIEkgbCwgRiByCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLHR5cGVuYW1lIDo6bmRuYm9vc3Q6Om1vdmVfZGV0YWlsOjplbmFibGVfaWY8IGhhc19tb3ZlX2VtdWxhdGlvbl9lbmFibGVkPHR5cGVuYW1lIEk6OnZhbHVlX3R5cGU+ID46OnR5cGUqID0gMAotKQotewotICAgcmV0dXJuIDo6bmRuYm9vc3Q6OnVuaW5pdGlhbGl6ZWRfbW92ZShmLCBsLCByKTsKLX0KLS8qCi10ZW1wbGF0ZQotPHR5cGVuYW1lIEksICAgLy8gSSBtb2RlbHMgSW5wdXRJdGVyYXRvcgotdHlwZW5hbWUgRj4gICAvLyBGIG1vZGVscyBGb3J3YXJkSXRlcmF0b3IKLUYgdW5pbml0aWFsaXplZF9tb3ZlX21vdmVfaXRlcmF0b3IoSSBmLCBJIGwsIEYgciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmRpc2FibGVfaWY8IGhhc19tb3ZlX2VtdWxhdGlvbl9lbmFibGVkPHR5cGVuYW1lIEk6OnZhbHVlX3R5cGU+ID46OnR5cGUqID0gMCkKLXsKLSAgIHJldHVybiBzdGQ6OnVuaW5pdGlhbGl6ZWRfY29weShmLmJhc2UoKSwgbC5iYXNlKCksIHIpOwotfQotKi8KLX0gIC8vbmFtZXNwYWNlIG1vdmVfZGV0YWlsIHsKLQotdGVtcGxhdGUKLTx0eXBlbmFtZSBJLCAgIC8vIEkgbW9kZWxzIElucHV0SXRlcmF0b3IKLXR5cGVuYW1lIEY+ICAgLy8gRiBtb2RlbHMgRm9yd2FyZEl0ZXJhdG9yCi1pbmxpbmUgRiB1bmluaXRpYWxpemVkX2NvcHlfb3JfbW92ZShJIGYsIEkgbCwgRiByLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6ZW5hYmxlX2lmPCBtb3ZlX2RldGFpbDo6aXNfbW92ZV9pdGVyYXRvcjxJPiA+Ojp0eXBlKiA9IDApCi17Ci0gICByZXR1cm4gOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OnVuaW5pdGlhbGl6ZWRfbW92ZV9tb3ZlX2l0ZXJhdG9yKGYsIGwsIHIpOwotfQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3B5X29yX21vdmUKLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotbmFtZXNwYWNlIG1vdmVfZGV0YWlsIHsKLQotdGVtcGxhdGUKLTx0eXBlbmFtZSBJLCAgIC8vIEkgbW9kZWxzIElucHV0SXRlcmF0b3IKLXR5cGVuYW1lIEY+ICAgLy8gRiBtb2RlbHMgRm9yd2FyZEl0ZXJhdG9yCi1pbmxpbmUgRiBtb3ZlX21vdmVfaXRlcmF0b3IoSSBmLCBJIGwsIEYgcgotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICx0eXBlbmFtZSA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6ZW5hYmxlX2lmPCBoYXNfbW92ZV9lbXVsYXRpb25fZW5hYmxlZDx0eXBlbmFtZSBJOjp2YWx1ZV90eXBlPiA+Ojp0eXBlKiA9IDAKLSkKLXsKLSAgIHJldHVybiA6Om5kbmJvb3N0Ojptb3ZlKGYsIGwsIHIpOwotfQotLyoKLXRlbXBsYXRlCi08dHlwZW5hbWUgSSwgICAvLyBJIG1vZGVscyBJbnB1dEl0ZXJhdG9yCi10eXBlbmFtZSBGPiAgIC8vIEYgbW9kZWxzIEZvcndhcmRJdGVyYXRvcgotRiBtb3ZlX21vdmVfaXRlcmF0b3IoSSBmLCBJIGwsIEYgciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmRpc2FibGVfaWY8IGhhc19tb3ZlX2VtdWxhdGlvbl9lbmFibGVkPHR5cGVuYW1lIEk6OnZhbHVlX3R5cGU+ID46OnR5cGUqID0gMCkKLXsKLSAgIHJldHVybiBzdGQ6OmNvcHkoZi5iYXNlKCksIGwuYmFzZSgpLCByKTsKLX0KLSovCi0KLX0gIC8vbmFtZXNwYWNlIG1vdmVfZGV0YWlsIHsKLQotdGVtcGxhdGUKLTx0eXBlbmFtZSBJLCAgIC8vIEkgbW9kZWxzIElucHV0SXRlcmF0b3IKLXR5cGVuYW1lIEY+ICAgLy8gRiBtb2RlbHMgRm9yd2FyZEl0ZXJhdG9yCi1pbmxpbmUgRiBjb3B5X29yX21vdmUoSSBmLCBJIGwsIEYgciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmVuYWJsZV9pZjwgbW92ZV9kZXRhaWw6OmlzX21vdmVfaXRlcmF0b3I8ST4gPjo6dHlwZSogPSAwKQotewotICAgcmV0dXJuIDo6bmRuYm9vc3Q6Om1vdmVfZGV0YWlsOjptb3ZlX21vdmVfaXRlcmF0b3IoZiwgbCwgcik7Ci19Ci0KLS8vLyBAZW5kY29uZAotCi0vLyEgPGI+RWZmZWN0czwvYj46Ci0vLyEgICBcY29kZQotLy8hICAgZm9yICg7IGZpcnN0ICE9IGxhc3Q7ICsrcmVzdWx0LCArK2ZpcnN0KQotLy8hICAgICAgbmV3IChzdGF0aWNfY2FzdDx2b2lkKj4oJipyZXN1bHQpKQotLy8hICAgICAgICAgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPEZvcndhcmRJdGVyYXRvcj46OnZhbHVlX3R5cGUoKmZpcnN0KTsKLS8vISAgIFxlbmRjb2RlCi0vLyEKLS8vISA8Yj5SZXR1cm5zPC9iPjogcmVzdWx0Ci0vLyEKLS8vISA8Yj5Ob3RlPC9iPjogVGhpcyBmdW5jdGlvbiBpcyBwcm92aWRlZCBiZWNhdXNlCi0vLyEgICA8aT5zdGQ6OnVuaW5pdGlhbGl6ZWRfY29weTwvaT4gZnJvbSBzb21lIFNUTCBpbXBsZW1lbnRhdGlvbnMKLS8vISAgICBpcyBub3QgY29tcGF0aWJsZSB3aXRoIDxpPm1vdmVfaXRlcmF0b3I8L2k+Ci10ZW1wbGF0ZQotPHR5cGVuYW1lIEksICAgLy8gSSBtb2RlbHMgSW5wdXRJdGVyYXRvcgotdHlwZW5hbWUgRj4gICAvLyBGIG1vZGVscyBGb3J3YXJkSXRlcmF0b3IKLWlubGluZSBGIHVuaW5pdGlhbGl6ZWRfY29weV9vcl9tb3ZlKEkgZiwgSSBsLCBGIHIKLSAgIC8vLyBAY29uZAotICAgLHR5cGVuYW1lIDo6bmRuYm9vc3Q6Om1vdmVfZGV0YWlsOjpkaXNhYmxlX2lmPCBtb3ZlX2RldGFpbDo6aXNfbW92ZV9pdGVyYXRvcjxJPiA+Ojp0eXBlKiA9IDAKLSAgIC8vLyBAZW5kY29uZAotICAgKQotewotICAgcmV0dXJuIHN0ZDo6dW5pbml0aWFsaXplZF9jb3B5KGYsIGwsIHIpOwotfQotCi0vLyEgPGI+RWZmZWN0czwvYj46Ci0vLyEgICBcY29kZQotLy8hICAgZm9yICg7IGZpcnN0ICE9IGxhc3Q7ICsrcmVzdWx0LCArK2ZpcnN0KQotLy8hICAgICAgKnJlc3VsdCA9ICpmaXJzdDsKLS8vISAgIFxlbmRjb2RlCi0vLyEKLS8vISA8Yj5SZXR1cm5zPC9iPjogcmVzdWx0Ci0vLyEKLS8vISA8Yj5Ob3RlPC9iPjogVGhpcyBmdW5jdGlvbiBpcyBwcm92aWRlZCBiZWNhdXNlCi0vLyEgICA8aT5zdGQ6OnVuaW5pdGlhbGl6ZWRfY29weTwvaT4gZnJvbSBzb21lIFNUTCBpbXBsZW1lbnRhdGlvbnMKLS8vISAgICBpcyBub3QgY29tcGF0aWJsZSB3aXRoIDxpPm1vdmVfaXRlcmF0b3I8L2k+Ci10ZW1wbGF0ZQotPHR5cGVuYW1lIEksICAgLy8gSSBtb2RlbHMgSW5wdXRJdGVyYXRvcgotdHlwZW5hbWUgRj4gICAvLyBGIG1vZGVscyBGb3J3YXJkSXRlcmF0b3IKLWlubGluZSBGIGNvcHlfb3JfbW92ZShJIGYsIEkgbCwgRiByCi0gICAvLy8gQGNvbmQKLSAgICx0eXBlbmFtZSA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6ZGlzYWJsZV9pZjwgbW92ZV9kZXRhaWw6OmlzX21vdmVfaXRlcmF0b3I8ST4gPjo6dHlwZSogPSAwCi0gICAvLy8gQGVuZGNvbmQKLSAgICkKLXsKLSAgIHJldHVybiBzdGQ6OmNvcHkoZiwgbCwgcik7Ci19Ci0KLX0gIC8vbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21vdmUvZGV0YWlsL2NvbmZpZ19lbmQuaHBwPgotCi0jZW5kaWYgLy8jaWZuZGVmIE5ETkJPT1NUX01PVkVfTU9WRV9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbW92ZS9jb3JlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbW92ZS9jb3JlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTAzNzE3OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21vdmUvY29yZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMzIgKzAsMCBAQAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gKEMpIENvcHlyaWdodCBJb24gR2F6dGFuYWdhIDIwMTItMjAxMi4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tb3ZlIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0vLyEgXGZpbGUgY29yZS5ocHAKLS8vISBUaGlzIGhlYWRlciBpbXBsZW1lbnRzIG1hY3JvcyB0byBkZWZpbmUgbW92YWJsZSBjbGFzc2VzIGFuZAotLy8hIG1vdmUtYXdhcmUgZnVuY3Rpb25zCi0KLSNpZm5kZWYgTkROQk9PU1RfTU9WRV9DT1JFX0hQUAotI2RlZmluZSBORE5CT09TVF9NT1ZFX0NPUkVfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tb3ZlL2RldGFpbC9jb25maWdfYmVnaW4uaHBwPgotCi0jaWZkZWYgTkROQk9PU1RfTk9fQ1hYMTFfREVMRVRFRF9GVU5DVElPTlMKLSAgICNkZWZpbmUgTkROQk9PU1RfTU9WRV9JTVBMX05PX0NPUFlfQ1RPUl9PUl9BU1NJR04oVFlQRSkgXAotICAgICAgcHJpdmF0ZTpcCi0gICAgICBUWVBFKFRZUEUgJik7XAotICAgICAgVFlQRSYgb3BlcmF0b3I9KFRZUEUgJik7XAotICAgLy8KLSNlbHNlCi0gICAjZGVmaW5lIE5ETkJPT1NUX01PVkVfSU1QTF9OT19DT1BZX0NUT1JfT1JfQVNTSUdOKFRZUEUpIFwKLSAgICAgIHB1YmxpYzpcCi0gICAgICBUWVBFKFRZUEUgY29uc3QgJikgPSBkZWxldGU7XAotICAgICAgVFlQRSYgb3BlcmF0b3I9KFRZUEUgY29uc3QgJikgPSBkZWxldGU7XAotICAgICAgcHJpdmF0ZTpcCi0gICAvLwotI2VuZGlmICAgLy9ORE5CT09TVF9OT19DWFgxMV9ERUxFVEVEX0ZVTkNUSU9OUwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTU9WRV9ET1hZR0VOX0lOVk9LRUQpCi0KLSAgICNpbmNsdWRlIDxuZG5ib29zdC9tb3ZlL2RldGFpbC9tZXRhX3V0aWxzLmhwcD4KLQotICAgLy9Nb3ZlIGVtdWxhdGlvbiBydiBicmVha3Mgc3RhbmRhcmQgYWxpYXNpbmcgcnVsZXMgc28gYWRkIHdvcmthcm91bmRzIGZvciBzb21lIGNvbXBpbGVycwotICAgI2lmIGRlZmluZWQoX19HTlVDX18pICYmIChfX0dOVUNfXyA+PSA0KQotICAgICAgI2RlZmluZSBORE5CT09TVF9NT1ZFX0FUVFJJQlVURV9NQVlfQUxJQVMgX19hdHRyaWJ1dGVfXygoX19tYXlfYWxpYXNfXykpCi0gICAjZWxzZQotICAgICAgI2RlZmluZSBORE5CT09TVF9NT1ZFX0FUVFJJQlVURV9NQVlfQUxJQVMKLSAgICNlbmRpZgotCi0gICBuYW1lc3BhY2UgbmRuYm9vc3QgewotCi0gICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgIC8vCi0gICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcnYKLSAgIC8vCi0gICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgY2xhc3MgcnYKLSAgICAgIDogcHVibGljIDo6bmRuYm9vc3Q6Om1vdmVfZGV0YWlsOjppZl9jCi0gICAgICAgICA8IDo6bmRuYm9vc3Q6Om1vdmVfZGV0YWlsOjppc19jbGFzc19vcl91bmlvbjxUPjo6dmFsdWUKLSAgICAgICAgICwgVAotICAgICAgICAgLCA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6ZW1wdHkKLSAgICAgICAgID46OnR5cGUKLSAgIHsKLSAgICAgIHJ2KCk7Ci0gICAgICB+cnYoKTsKLSAgICAgIHJ2KHJ2IGNvbnN0Jik7Ci0gICAgICB2b2lkIG9wZXJhdG9yPShydiBjb25zdCYpOwotICAgfSBORE5CT09TVF9NT1ZFX0FUVFJJQlVURV9NQVlfQUxJQVM7Ci0KLQotICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAvLwotICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZV9kZXRhaWw6OmlzX3J2Ci0gICAvLwotICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgIG5hbWVzcGFjZSBtb3ZlX2RldGFpbCB7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgc3RydWN0IGlzX3J2Ci0gICAgICA6IDo6bmRuYm9vc3Q6Om1vdmVfZGV0YWlsOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCBmYWxzZT4KLSAgIHt9OwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHN0cnVjdCBpc19ydjwgcnY8VD4gPgotICAgICAgOiA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgdHJ1ZT4KLSAgIHt9OwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHN0cnVjdCBpc19ydjwgY29uc3QgcnY8VD4gPgotICAgICAgOiA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgdHJ1ZT4KLSAgIHt9OwotCi0gICB9ICAvL25hbWVzcGFjZSBtb3ZlX2RldGFpbCB7Ci0KLSAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgLy8KLSAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc19tb3ZlX2VtdWxhdGlvbl9lbmFibGVkCi0gICAvLwotICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgc3RydWN0IGhhc19tb3ZlX2VtdWxhdGlvbl9lbmFibGVkCi0gICAgICA6IDo6bmRuYm9vc3Q6Om1vdmVfZGV0YWlsOjppc19jb252ZXJ0aWJsZTwgVCwgOjpuZG5ib29zdDo6cnY8VD4mID4KLSAgIHt9OwotCi0gICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgc3RydWN0IGhhc19tb3ZlX2VtdWxhdGlvbl9lbmFibGVkPFQmPgotICAgICAgOiA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgZmFsc2U+Ci0gICB7fTsKLQotICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgIHN0cnVjdCBoYXNfbW92ZV9lbXVsYXRpb25fZW5hYmxlZDwgOjpuZG5ib29zdDo6cnY8VD4gPgotICAgICAgOiA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgZmFsc2U+Ci0gICB7fTsKLQotICAgfSAgLy9uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0gICAjZGVmaW5lIE5ETkJPT1NUX1JWX1JFRihUWVBFKVwKLSAgICAgIDo6bmRuYm9vc3Q6OnJ2PCBUWVBFID4mIFwKLSAgIC8vCi0KLSAgICNkZWZpbmUgTkROQk9PU1RfUlZfUkVGXzJfVEVNUExfQVJHUyhUWVBFLCBBUkcxLCBBUkcyKVwKLSAgICAgIDo6bmRuYm9vc3Q6OnJ2PCBUWVBFPEFSRzEsIEFSRzI+ID4mIFwKLSAgIC8vCi0KLSAgICNkZWZpbmUgTkROQk9PU1RfUlZfUkVGXzNfVEVNUExfQVJHUyhUWVBFLCBBUkcxLCBBUkcyLCBBUkczKVwKLSAgICAgIDo6bmRuYm9vc3Q6OnJ2PCBUWVBFPEFSRzEsIEFSRzIsIEFSRzM+ID4mIFwKLSAgIC8vCi0KLSAgICNkZWZpbmUgTkROQk9PU1RfUlZfUkVGX0JFR1wKLSAgICAgIDo6bmRuYm9vc3Q6OnJ2PCAgIFwKLSAgIC8vCi0KLSAgICNkZWZpbmUgTkROQk9PU1RfUlZfUkVGX0VORFwKLSAgICAgID4mIFwKLSAgIC8vCi0KLSAgICNkZWZpbmUgTkROQk9PU1RfRldEX1JFRihUWVBFKVwKLSAgICAgIGNvbnN0IFRZUEUgJiBcCi0gICAvLwotCi0gICAjZGVmaW5lIE5ETkJPT1NUX0NPUFlfQVNTSUdOX1JFRihUWVBFKVwKLSAgICAgIGNvbnN0IDo6bmRuYm9vc3Q6OnJ2PCBUWVBFID4mIFwKLSAgIC8vCi0KLSAgICNkZWZpbmUgTkROQk9PU1RfQ09QWV9BU1NJR05fUkVGX0JFRyBcCi0gICAgICBjb25zdCA6Om5kbmJvb3N0OjpydjwgIFwKLSAgIC8vCi0KLSAgICNkZWZpbmUgTkROQk9PU1RfQ09QWV9BU1NJR05fUkVGX0VORCBcCi0gICAgICA+JiBcCi0gICAvLwotCi0gICAjZGVmaW5lIE5ETkJPT1NUX0NPUFlfQVNTSUdOX1JFRl8yX1RFTVBMX0FSR1MoVFlQRSwgQVJHMSwgQVJHMilcCi0gICAgICBjb25zdCA6Om5kbmJvb3N0OjpydjwgVFlQRTxBUkcxLCBBUkcyPiA+JiBcCi0gICAvLwotCi0gICAjZGVmaW5lIE5ETkJPT1NUX0NPUFlfQVNTSUdOX1JFRl8zX1RFTVBMX0FSR1MoVFlQRSwgQVJHMSwgQVJHMiwgQVJHMylcCi0gICAgICBjb25zdCA6Om5kbmJvb3N0OjpydjwgVFlQRTxBUkcxLCBBUkcyLCBBUkczPiA+JiBcCi0gICAvLwotCi0gICAjZGVmaW5lIE5ETkJPT1NUX0NBVENIX0NPTlNUX1JMVkFMVUUoVFlQRSlcCi0gICAgICBjb25zdCA6Om5kbmJvb3N0OjpydjwgVFlQRSA+JiBcCi0gICAvLwotCi0gICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgIC8vCi0gICAvLyAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9NT1ZBQkxFX0JVVF9OT1RfQ09QWUFCTEUKLSAgIC8vCi0gICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICNkZWZpbmUgTkROQk9PU1RfTU9WQUJMRV9CVVRfTk9UX0NPUFlBQkxFKFRZUEUpXAotICAgICAgTkROQk9PU1RfTU9WRV9JTVBMX05PX0NPUFlfQ1RPUl9PUl9BU1NJR04oVFlQRSlcCi0gICAgICBwdWJsaWM6XAotICAgICAgb3BlcmF0b3IgOjpuZG5ib29zdDo6cnY8VFlQRT4mKCkgXAotICAgICAgeyAgcmV0dXJuICpzdGF0aWNfY2FzdDwgOjpuZG5ib29zdDo6cnY8VFlQRT4qID4odGhpcyk7ICB9XAotICAgICAgb3BlcmF0b3IgY29uc3QgOjpuZG5ib29zdDo6cnY8VFlQRT4mKCkgY29uc3QgXAotICAgICAgeyAgcmV0dXJuICpzdGF0aWNfY2FzdDxjb25zdCA6Om5kbmJvb3N0OjpydjxUWVBFPiogPih0aGlzKTsgIH1cCi0gICAgICBwcml2YXRlOlwKLSAgIC8vCi0KLSAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgLy8KLSAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0NPUFlBQkxFX0FORF9NT1ZBQkxFCi0gICAvLwotICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgICNkZWZpbmUgTkROQk9PU1RfQ09QWUFCTEVfQU5EX01PVkFCTEUoVFlQRSlcCi0gICAgICBwdWJsaWM6XAotICAgICAgVFlQRSYgb3BlcmF0b3I9KFRZUEUgJnQpXAotICAgICAgeyAgdGhpcy0+b3BlcmF0b3I9KHN0YXRpY19jYXN0PGNvbnN0IDo6bmRuYm9vc3Q6OnJ2PFRZUEU+ICY+KGNvbnN0X2Nhc3Q8Y29uc3QgVFlQRSAmPih0KSkpOyByZXR1cm4gKnRoaXM7fVwKLSAgICAgIHB1YmxpYzpcCi0gICAgICBvcGVyYXRvciA6Om5kbmJvb3N0OjpydjxUWVBFPiYoKSBcCi0gICAgICB7ICByZXR1cm4gKnN0YXRpY19jYXN0PCA6Om5kbmJvb3N0OjpydjxUWVBFPiogPih0aGlzKTsgIH1cCi0gICAgICBvcGVyYXRvciBjb25zdCA6Om5kbmJvb3N0OjpydjxUWVBFPiYoKSBjb25zdCBcCi0gICAgICB7ICByZXR1cm4gKnN0YXRpY19jYXN0PGNvbnN0IDo6bmRuYm9vc3Q6OnJ2PFRZUEU+KiA+KHRoaXMpOyAgfVwKLSAgICAgIHByaXZhdGU6XAotICAgLy8KLQotICAgI2RlZmluZSBORE5CT09TVF9DT1BZQUJMRV9BTkRfTU9WQUJMRV9BTFQoVFlQRSlcCi0gICAgICBwdWJsaWM6XAotICAgICAgb3BlcmF0b3IgOjpuZG5ib29zdDo6cnY8VFlQRT4mKCkgXAotICAgICAgeyAgcmV0dXJuICpzdGF0aWNfY2FzdDwgOjpuZG5ib29zdDo6cnY8VFlQRT4qID4odGhpcyk7ICB9XAotICAgICAgb3BlcmF0b3IgY29uc3QgOjpuZG5ib29zdDo6cnY8VFlQRT4mKCkgY29uc3QgXAotICAgICAgeyAgcmV0dXJuICpzdGF0aWNfY2FzdDxjb25zdCA6Om5kbmJvb3N0OjpydjxUWVBFPiogPih0aGlzKTsgIH1cCi0gICAgICBwcml2YXRlOlwKLSAgIC8vCi0KLSNlbHNlICAgIC8vTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLQotICAgLy9Db21waWxlciB3b3JrYXJvdW5kIGRldGVjdGlvbgotICAgI2lmICFkZWZpbmVkKE5ETkJPT1NUX01PVkVfRE9YWUdFTl9JTlZPS0VEKQotICAgICAgI2lmIGRlZmluZWQoX19HTlVDX18pICYmIChfX0dOVUNfXyA9PSA0KSAmJiAoX19HTlVDX01JTk9SX18gPCA1KSAmJiAhZGVmaW5lZChfX2NsYW5nX18pCi0gICAgICAgICAvL1ByZS1zdGFuZGFyZCBydmFsdWUgYmluZGluZyBydWxlcwotICAgICAgICAgI2RlZmluZSBORE5CT09TVF9NT1ZFX09MRF9SVkFMVUVfUkVGX0JJTkRJTkdfUlVMRVMKLSAgICAgICNlbGlmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA9PSAxNjAwKQotICAgICAgICAgLy9TdGFuZGFyZCBydmFsdWUgYmluZGluZyBydWxlcyBidXQgd2l0aCBzb21lIGJ1Z3MKLSAgICAgICAgICNkZWZpbmUgTkROQk9PU1RfTU9WRV9NU1ZDXzEwX01FTUJFUl9SVkFMVUVfUkVGX0JVRwotICAgICAgICAgLy9Vc2Ugc3RhbmRhcmQgbGlicmFyeSBmb3IgTVNWQyB0byBhdm9pZCBuYW1lc3BhY2UgaXNzdWVzIGFzCi0gICAgICAgICAvL3NvbWUgbW92ZSBjYWxscyBpbiB0aGUgU1RMIGFyZSBub3QgZnVsbHkgcXVhbGlmaWVkLgotICAgICAgICAgLy8jZGVmaW5lIE5ETkJPT1NUX01PVkVfVVNFX1NUQU5EQVJEX0xJQlJBUllfTU9WRQotICAgICAgI2VuZGlmCi0gICAjZW5kaWYKLQotICAgLy8hIFRoaXMgbWFjcm8gbWFya3MgYSB0eXBlIGFzIG1vdmFibGUgYnV0IG5vdCBjb3B5YWJsZSwgZGlzYWJsaW5nIGNvcHkgY29uc3RydWN0aW9uCi0gICAvLyEgYW5kIGFzc2lnbm1lbnQuIFRoZSB1c2VyIHdpbGwgbmVlZCB0byB3cml0ZSBhIG1vdmUgY29uc3RydWN0b3IvYXNzaWdubWVudCBhcyBleHBsYWluZWQKLSAgIC8vISBpbiB0aGUgZG9jdW1lbnRhdGlvbiB0byBmdWxseSB3cml0ZSBhIG1vdmFibGUgYnV0IG5vdCBjb3B5YWJsZSBjbGFzcy4KLSAgICNkZWZpbmUgTkROQk9PU1RfTU9WQUJMRV9CVVRfTk9UX0NPUFlBQkxFKFRZUEUpXAotICAgICAgTkROQk9PU1RfTU9WRV9JTVBMX05PX0NPUFlfQ1RPUl9PUl9BU1NJR04oVFlQRSlcCi0gICAgICBwdWJsaWM6XAotICAgICAgdHlwZWRlZiBpbnQgYm9vc3RfbW92ZV9lbXVsYXRpb25fdDtcCi0gICAvLwotCi0gICAvLyEgVGhpcyBtYWNybyBtYXJrcyBhIHR5cGUgYXMgY29weWFibGUgYW5kIG1vdmFibGUuCi0gICAvLyEgVGhlIHVzZXIgd2lsbCBuZWVkIHRvIHdyaXRlIGEgbW92ZSBjb25zdHJ1Y3Rvci9hc3NpZ25tZW50IGFuZCBhIGNvcHkgYXNzaWdubWVudAotICAgLy8hIGFzIGV4cGxhaW5lZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiB0byBmdWxseSB3cml0ZSBhIGNvcHlhYmxlIGFuZCBtb3ZhYmxlIGNsYXNzLgotICAgI2RlZmluZSBORE5CT09TVF9DT1BZQUJMRV9BTkRfTU9WQUJMRShUWVBFKVwKLSAgIC8vCi0KLSAgICNpZiAhZGVmaW5lZChORE5CT09TVF9NT1ZFX0RPWFlHRU5fSU5WT0tFRCkKLSAgICNkZWZpbmUgTkROQk9PU1RfQ09QWUFCTEVfQU5EX01PVkFCTEVfQUxUKFRZUEUpXAotICAgLy8KLSAgICNlbmRpZiAgIC8vI2lmICFkZWZpbmVkKE5ETkJPT1NUX01PVkVfRE9YWUdFTl9JTlZPS0VEKQotCi0gICBuYW1lc3BhY2UgbmRuYm9vc3QgewotCi0gICAvLyFUaGlzIHRyYWl0IHlpZWxkcyB0byBhIGNvbXBpbGUtdGltZSB0cnVlIGJvb2xlYW4gaWYgVCB3YXMgbWFya2VkIGFzCi0gICAvLyFORE5CT09TVF9NT1ZBQkxFX0JVVF9OT1RfQ09QWUFCTEUgb3IgTkROQk9PU1RfQ09QWUFCTEVfQU5EX01PVkFCTEUgYW5kCi0gICAvLyFydmFsdWUgcmVmZXJlbmNlcyBhcmUgbm90IGF2YWlsYWJsZSBvbiB0aGUgcGxhdGZvcm0uIEZhbHNlIG90aGVyd2lzZS4KLSAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICBzdHJ1Y3QgaGFzX21vdmVfZW11bGF0aW9uX2VuYWJsZWQKLSAgIHsKLSAgICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gZmFsc2U7Ci0gICB9OwotCi0gICB9ICAvL25hbWVzcGFjZSBuZG5ib29zdHsKLQotICAgLy8hVGhpcyBtYWNybyBpcyB1c2VkIHRvIGFjaGlldmUgcG9ydGFibGUgc3ludGF4IGluIG1vdmUKLSAgIC8vIWNvbnN0cnVjdG9ycyBhbmQgYXNzaWdubWVudHMgZm9yIGNsYXNzZXMgbWFya2VkIGFzCi0gICAvLyFORE5CT09TVF9DT1BZQUJMRV9BTkRfTU9WQUJMRSBvciBORE5CT09TVF9NT1ZBQkxFX0JVVF9OT1RfQ09QWUFCTEUKLSAgICNkZWZpbmUgTkROQk9PU1RfUlZfUkVGKFRZUEUpXAotICAgICAgVFlQRSAmJiBcCi0gICAvLwotCi0gICAvLyFUaGlzIG1hY3JvIGlzIHVzZWQgdG8gYWNoaWV2ZSBwb3J0YWJsZSBzeW50YXggaW4gbW92ZQotICAgLy8hY29uc3RydWN0b3JzIGFuZCBhc3NpZ25tZW50cyBmb3IgdGVtcGxhdGUgY2xhc3NlcyBtYXJrZWQgYXMKLSAgIC8vIU5ETkJPT1NUX0NPUFlBQkxFX0FORF9NT1ZBQkxFIG9yIE5ETkJPT1NUX01PVkFCTEVfQlVUX05PVF9DT1BZQUJMRS4KLSAgIC8vIUFzIG1hY3JvcyBoYXZlIHByb2JsZW1zIHdpdGggY29tbWEtc2VwYXJhdGQgdGVtcGxhdGUgYXJndW1lbnRzLAotICAgLy8hdGhlIHRlbXBsYXRlIGFyZ3VtZW50IG11c3QgYmUgcHJlY2VkZWQgd2l0aCBORE5CT09TVF9SVl9SRUZfU1RBUlQKLSAgIC8vIWFuZCBlbmRlZCB3aXRoIE5ETkJPT1NUX1JWX1JFRl9FTkQKLSAgICNkZWZpbmUgTkROQk9PU1RfUlZfUkVGX0JFR1wKLSAgICAgICAgIFwKLSAgIC8vCi0KLSAgIC8vIVRoaXMgbWFjcm8gaXMgdXNlZCB0byBhY2hpZXZlIHBvcnRhYmxlIHN5bnRheCBpbiBtb3ZlCi0gICAvLyFjb25zdHJ1Y3RvcnMgYW5kIGFzc2lnbm1lbnRzIGZvciB0ZW1wbGF0ZSBjbGFzc2VzIG1hcmtlZCBhcwotICAgLy8hTkROQk9PU1RfQ09QWUFCTEVfQU5EX01PVkFCTEUgb3IgTkROQk9PU1RfTU9WQUJMRV9CVVRfTk9UX0NPUFlBQkxFLgotICAgLy8hQXMgbWFjcm9zIGhhdmUgcHJvYmxlbXMgd2l0aCBjb21tYS1zZXBhcmF0ZCB0ZW1wbGF0ZSBhcmd1bWVudHMsCi0gICAvLyF0aGUgdGVtcGxhdGUgYXJndW1lbnQgbXVzdCBiZSBwcmVjZWRlZCB3aXRoIE5ETkJPT1NUX1JWX1JFRl9TVEFSVAotICAgLy8hYW5kIGVuZGVkIHdpdGggTkROQk9PU1RfUlZfUkVGX0VORAotICAgI2RlZmluZSBORE5CT09TVF9SVl9SRUZfRU5EXAotICAgICAgJiYgXAotCi0gICAvLyFUaGlzIG1hY3JvIGlzIHVzZWQgdG8gYWNoaWV2ZSBwb3J0YWJsZSBzeW50YXggaW4gY29weQotICAgLy8hYXNzaWdubWVudCBmb3IgY2xhc3NlcyBtYXJrZWQgYXMgTkROQk9PU1RfQ09QWUFCTEVfQU5EX01PVkFCTEUuCi0gICAjZGVmaW5lIE5ETkJPT1NUX0NPUFlfQVNTSUdOX1JFRihUWVBFKVwKLSAgICAgIGNvbnN0IFRZUEUgJiBcCi0gICAvLwotCi0gICAvLyEgVGhpcyBtYWNybyBpcyB1c2VkIHRvIGltcGxlbWVudCBwb3J0YWJsZSBwZXJmZWN0IGZvcndhcmRpbmcKLSAgIC8vISBhcyBleHBsYWluZWQgaW4gdGhlIGRvY3VtZW50YXRpb24uCi0gICAjZGVmaW5lIE5ETkJPT1NUX0ZXRF9SRUYoVFlQRSlcCi0gICAgICBUWVBFICYmIFwKLSAgIC8vCi0KLSAgICNpZiAhZGVmaW5lZChORE5CT09TVF9NT1ZFX0RPWFlHRU5fSU5WT0tFRCkKLSAgIC8vLyBAY29uZAotCi0gICAjZGVmaW5lIE5ETkJPT1NUX1JWX1JFRl8yX1RFTVBMX0FSR1MoVFlQRSwgQVJHMSwgQVJHMilcCi0gICAgICBUWVBFPEFSRzEsIEFSRzI+ICYmIFwKLSAgIC8vCi0KLSAgICNkZWZpbmUgTkROQk9PU1RfUlZfUkVGXzNfVEVNUExfQVJHUyhUWVBFLCBBUkcxLCBBUkcyLCBBUkczKVwKLSAgICAgIFRZUEU8QVJHMSwgQVJHMiwgQVJHMz4gJiYgXAotICAgLy8KLQotICAgI2RlZmluZSBORE5CT09TVF9DT1BZX0FTU0lHTl9SRUZfQkVHIFwKLSAgICAgIGNvbnN0IFwKLSAgIC8vCi0KLSAgICNkZWZpbmUgTkROQk9PU1RfQ09QWV9BU1NJR05fUkVGX0VORCBcCi0gICAgICAmIFwKLSAgIC8vCi0KLSAgICNkZWZpbmUgTkROQk9PU1RfQ09QWV9BU1NJR05fUkVGXzJfVEVNUExfQVJHUyhUWVBFLCBBUkcxLCBBUkcyKVwKLSAgICAgIGNvbnN0IFRZUEU8QVJHMSwgQVJHMj4gJiBcCi0gICAvLwotCi0gICAjZGVmaW5lIE5ETkJPT1NUX0NPUFlfQVNTSUdOX1JFRl8zX1RFTVBMX0FSR1MoVFlQRSwgQVJHMSwgQVJHMiwgQVJHMylcCi0gICAgICBjb25zdCBUWVBFPEFSRzEsIEFSRzIsIEFSRzM+JiBcCi0gICAvLwotCi0gICAjZGVmaW5lIE5ETkJPT1NUX0NBVENIX0NPTlNUX1JMVkFMVUUoVFlQRSlcCi0gICAgICBjb25zdCBUWVBFICYgXAotICAgLy8KLQotICAgLy8vIEBlbmRjb25kCi0KLSAgICNlbmRpZiAgIC8vI2lmICFkZWZpbmVkKE5ETkJPT1NUX01PVkVfRE9YWUdFTl9JTlZPS0VEKQotCi0jZW5kaWYgICAvL05ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tb3ZlL2RldGFpbC9jb25maWdfZW5kLmhwcD4KLQotI2VuZGlmIC8vI2lmbmRlZiBORE5CT09TVF9NT1ZFX0NPUkVfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21vdmUvZGV0YWlsL2NvbmZpZ19iZWdpbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21vdmUvZGV0YWlsL2NvbmZpZ19iZWdpbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4OThkZDQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tb3ZlL2RldGFpbC9jb25maWdfYmVnaW4uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gKEMpIENvcHlyaWdodCBJb24gR2F6dGFuYWdhIDIwMTItMjAxMi4gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0Ci0vLyBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21vdmUgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSAgICNpZm5kZWYgX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFCi0gICAgICAjZGVmaW5lICBORE5CT09TVF9NT1ZFX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFCi0gICAgICAjZGVmaW5lIF9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURQotICAgI2VuZGlmCi0gICAjaWZuZGVmIF9TQ0xfU0VDVVJFX05PX1dBUk5JTkdTCi0gICAgICAjZGVmaW5lICBORE5CT09TVF9NT1ZFX1NDTF9TRUNVUkVfTk9fV0FSTklOR1MKLSAgICAgICNkZWZpbmUgX1NDTF9TRUNVUkVfTk9fV0FSTklOR1MKLSAgICNlbmRpZgotICAgI3ByYWdtYSB3YXJuaW5nIChwdXNoKQotICAgI3ByYWdtYSB3YXJuaW5nIChkaXNhYmxlIDogNDk5NikgLy8gImZ1bmN0aW9uIjogd2FzIGRlY2xhcmVkIGRlcHJlY2F0ZWQKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tb3ZlL2RldGFpbC9jb25maWdfZW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbW92ZS9kZXRhaWwvY29uZmlnX2VuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmYmE3MzMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tb3ZlL2RldGFpbC9jb25maWdfZW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIChDKSBDb3B5cmlnaHQgSW9uIEdhenRhbmFnYSAyMDEyLTIwMTIuIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdAotLy8gU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9jb250YWluZXIgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0jaWYgZGVmaW5lZCBORE5CT09TVF9NU1ZDCi0gICAjcHJhZ21hIHdhcm5pbmcgKHBvcCkKLSAgICNpZmRlZiBORE5CT09TVF9NT1ZFX0RFVEFJTF9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURQotICAgICAgI3VuZGVmIE5ETkJPT1NUX01PVkVfREVUQUlMX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFCi0gICAgICAjdW5kZWYgX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFCi0gICAjZW5kaWYKLSAgICNpZm5kZWYgTkROQk9PU1RfTU9WRV9TQ0xfU0VDVVJFX05PX1dBUk5JTkdTCi0gICAgICAjdW5kZWYgIE5ETkJPT1NUX01PVkVfU0NMX1NFQ1VSRV9OT19XQVJOSU5HUwotICAgICAgI3VuZGVmIF9TQ0xfU0VDVVJFX05PX1dBUk5JTkdTCi0gICAjZW5kaWYKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tb3ZlL2RldGFpbC9tZXRhX3V0aWxzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbW92ZS9kZXRhaWwvbWV0YV91dGlscy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4MjNjMjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tb3ZlL2RldGFpbC9tZXRhX3V0aWxzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1OCArMCwwIEBACi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyAoQykgQ29weXJpZ2h0IElvbiBHYXp0YW5hZ2EgMjAxMi0yMDEyLgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21vdmUgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLS8vISBcZmlsZQotCi0jaWZuZGVmIE5ETkJPT1NUX01PVkVfREVUQUlMX01FVEFfVVRJTFNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX01PVkVfREVUQUlMX01FVEFfVVRJTFNfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tb3ZlL2RldGFpbC9jb25maWdfYmVnaW4uaHBwPgotCi0vL1NtYWxsIG1ldGEtdHlwZXRyYWl0cyB0byBzdXBwb3J0IG1vdmUKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSBtb3ZlX2RldGFpbCB7Ci0KLS8vaWZfCi10ZW1wbGF0ZTxib29sIEMsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLXN0cnVjdCBpZl9jCi17Ci0gICB0eXBlZGVmIFQxIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci1zdHJ1Y3QgaWZfYzxmYWxzZSxUMSxUMj4KLXsKLSAgIHR5cGVkZWYgVDIgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDM+Ci1zdHJ1Y3QgaWZfCi17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGlmX2M8MCAhPSBUMTo6dmFsdWUsIFQyLCBUMz46OnR5cGUgdHlwZTsKLX07Ci0KLS8vZW5hYmxlX2lmXwotdGVtcGxhdGUgPGJvb2wgQiwgY2xhc3MgVCA9IHZvaWQ+Ci1zdHJ1Y3QgZW5hYmxlX2lmX2MKLXsKLSAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgZW5hYmxlX2lmX2M8ZmFsc2UsIFQ+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQ29uZCwgY2xhc3MgVCA9IHZvaWQ+Ci1zdHJ1Y3QgZW5hYmxlX2lmIDogcHVibGljIGVuYWJsZV9pZl9jPENvbmQ6OnZhbHVlLCBUPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIENvbmQsIGNsYXNzIFQgPSB2b2lkPgotc3RydWN0IGRpc2FibGVfaWYgOiBwdWJsaWMgZW5hYmxlX2lmX2M8IUNvbmQ6OnZhbHVlLCBUPiB7fTsKLQotLy9pbnRlZ3JhbF9jb25zdGFudAotdGVtcGxhdGU8Y2xhc3MgVCwgVCB2Pgotc3RydWN0IGludGVncmFsX2NvbnN0YW50Ci17Ci0gICBzdGF0aWMgY29uc3QgVCB2YWx1ZSA9IHY7Ci0gICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLSAgIHR5cGVkZWYgaW50ZWdyYWxfY29uc3RhbnQ8VCwgdj4gdHlwZTsKLX07Ci0KLS8vaWRlbnRpdHkKLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlkZW50aXR5Ci17Ci0gICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLS8vaXNfY29udmVydGlibGUKLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPgotY2xhc3MgaXNfY29udmVydGlibGUKLXsKLSAgIHR5cGVkZWYgY2hhciB0cnVlX3Q7Ci0gICBjbGFzcyBmYWxzZV90IHsgY2hhciBkdW1teVsyXTsgfTsKLSAgIHN0YXRpYyB0cnVlX3QgZGlzcGF0Y2goVSk7Ci0gICBzdGF0aWMgZmFsc2VfdCBkaXNwYXRjaCguLi4pOwotICAgc3RhdGljIFQgJnRyaWdnZXIoKTsKLSAgIHB1YmxpYzoKLSAgIGVudW0geyB2YWx1ZSA9IHNpemVvZihkaXNwYXRjaCh0cmlnZ2VyKCkpKSA9PSBzaXplb2YodHJ1ZV90KSB9OwotfTsKLQotLy9hbmRfIG5vdF8KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb25kaXRpb24xLCB0eXBlbmFtZSBDb25kaXRpb24yLCB0eXBlbmFtZSBDb25kaXRpb24zID0gaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgdHJ1ZT4gPgotc3RydWN0IGFuZF8KLSAgIDogcHVibGljIGludGVncmFsX2NvbnN0YW50PGJvb2wsIENvbmRpdGlvbjE6OnZhbHVlICYmIENvbmRpdGlvbjI6OnZhbHVlICYmIENvbmRpdGlvbjM6OnZhbHVlPgote307Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBCb29sZWFuPgotc3RydWN0IG5vdF8KLSAgIDogcHVibGljIGludGVncmFsX2NvbnN0YW50PGJvb2wsICFCb29sZWFuOjp2YWx1ZT4KLXt9OwotCi0vL2lzX2x2YWx1ZV9yZWZlcmVuY2UKLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfbHZhbHVlX3JlZmVyZW5jZQotICAgOiBwdWJsaWMgaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgZmFsc2U+Ci17fTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBpc19sdmFsdWVfcmVmZXJlbmNlPFQmPgotICAgOiBwdWJsaWMgaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgdHJ1ZT4KLXt9OwotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IGlzX2NsYXNzX29yX3VuaW9uCi17Ci0gICBzdHJ1Y3QgdHdvY2hhciB7IGNoYXIgX1syXTsgfTsKLSAgIHRlbXBsYXRlIDxjbGFzcyBVPgotICAgc3RhdGljIGNoYXIgaXNfY2xhc3Nfb3JfdW5pb25fdGVzdGVyKHZvaWQoVTo6Kikodm9pZCkpOwotICAgdGVtcGxhdGUgPGNsYXNzIFU+Ci0gICBzdGF0aWMgdHdvY2hhciBpc19jbGFzc19vcl91bmlvbl90ZXN0ZXIoLi4uKTsKLSAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gc2l6ZW9mKGlzX2NsYXNzX29yX3VuaW9uX3Rlc3RlcjxUPigwKSkgPT0gc2l6ZW9mKGNoYXIpOwotfTsKLQotc3RydWN0IGVtcHR5e307Ci0KLS8vYWRkcmVzc29mCi10ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3QgYWRkcl9pbXBsX3JlZgotewotICAgVCAmIHZfOwotICAgaW5saW5lIGFkZHJfaW1wbF9yZWYoIFQgJiB2ICk6IHZfKCB2ICkge30KLSAgIGlubGluZSBvcGVyYXRvciBUJiAoKSBjb25zdCB7IHJldHVybiB2XzsgfQotCi0gICBwcml2YXRlOgotICAgYWRkcl9pbXBsX3JlZiAmIG9wZXJhdG9yPShjb25zdCBhZGRyX2ltcGxfcmVmICYpOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IGFkZHJlc3NvZl9pbXBsCi17Ci0gICBzdGF0aWMgaW5saW5lIFQgKiBmKCBUICYgdiwgbG9uZyApCi0gICB7Ci0gICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUKj4oCi0gICAgICAgICAmY29uc3RfY2FzdDxjaGFyJj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2xhdGlsZSBjaGFyICY+KHYpKSk7Ci0gICB9Ci0KLSAgIHN0YXRpYyBpbmxpbmUgVCAqIGYoIFQgKiB2LCBpbnQgKQotICAgeyAgcmV0dXJuIHY7ICB9Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lIFQgKiBhZGRyZXNzb2YoIFQgJiB2ICkKLXsKLSAgIHJldHVybiA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6YWRkcmVzc29mX2ltcGw8VD46OmYKLSAgICAgICggOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmFkZHJfaW1wbF9yZWY8VD4oIHYgKSwgMCApOwotfQotCi19ICAvL25hbWVzcGFjZSBtb3ZlX2RldGFpbCB7Ci19ICAvL25hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9tb3ZlL2RldGFpbC9jb25maWdfZW5kLmhwcD4KLQotI2VuZGlmIC8vI2lmbmRlZiBORE5CT09TVF9NT1ZFX0RFVEFJTF9NRVRBX1VUSUxTX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tb3ZlL2l0ZXJhdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbW92ZS9pdGVyYXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5ZDFhODQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tb3ZlL2l0ZXJhdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5OCArMCwwIEBACi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyAoQykgQ29weXJpZ2h0IElvbiBHYXp0YW5hZ2EgMjAxMi0yMDEyLgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21vdmUgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLS8vISBcZmlsZQotCi0jaWZuZGVmIE5ETkJPT1NUX01PVkVfSVRFUkFUT1JfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX01PVkVfSVRFUkFUT1JfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tb3ZlL2RldGFpbC9jb25maWdfYmVnaW4uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21vdmUvdXRpbGl0eS5ocHA+Ci0jaW5jbHVkZSA8aXRlcmF0b3I+ICAvL3N0ZDo6aXRlcmF0b3IKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZV9pdGVyYXRvcgotLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0vLyEgQ2xhc3MgdGVtcGxhdGUgbW92ZV9pdGVyYXRvciBpcyBhbiBpdGVyYXRvciBhZGFwdG9yIHdpdGggdGhlIHNhbWUgYmVoYXZpb3IKLS8vISBhcyB0aGUgdW5kZXJseWluZyBpdGVyYXRvciBleGNlcHQgdGhhdCBpdHMgZGVyZWZlcmVuY2Ugb3BlcmF0b3IgaW1wbGljaXRseQotLy8hIGNvbnZlcnRzIHRoZSB2YWx1ZSByZXR1cm5lZCBieSB0aGUgdW5kZXJseWluZyBpdGVyYXRvcidzIGRlcmVmZXJlbmNlIG9wZXJhdG9yCi0vLyEgdG8gYW4gcnZhbHVlIHJlZmVyZW5jZS4gU29tZSBnZW5lcmljIGFsZ29yaXRobXMgY2FuIGJlIGNhbGxlZCB3aXRoIG1vdmUKLS8vISBpdGVyYXRvcnMgdG8gcmVwbGFjZSBjb3B5aW5nIHdpdGggbW92aW5nLgotdGVtcGxhdGUgPGNsYXNzIEl0PgotY2xhc3MgbW92ZV9pdGVyYXRvcgotewotICAgcHVibGljOgotICAgdHlwZWRlZiBJdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3JfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8aXRlcmF0b3JfdHlwZT46OnZhbHVlX3R5cGUgICAgICAgIHZhbHVlX3R5cGU7Ci0gICAjaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMpIHx8IGRlZmluZWQoTkROQk9PU1RfTU9WRV9ET1hZR0VOX0lOVk9LRUQpCi0gICB0eXBlZGVmIHZhbHVlX3R5cGUgJiYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2U7Ci0gICAjZWxzZQotICAgdHlwZWRlZiB0eXBlbmFtZSA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6aWZfCi0gICAgICA8IDo6bmRuYm9vc3Q6Omhhc19tb3ZlX2VtdWxhdGlvbl9lbmFibGVkPHZhbHVlX3R5cGU+Ci0gICAgICAsIDo6bmRuYm9vc3Q6OnJ2PHZhbHVlX3R5cGU+JgotICAgICAgLCB2YWx1ZV90eXBlICYgPjo6dHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlOwotICAgI2VuZGlmCi0gICB0eXBlZGVmIEl0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyOwotICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxpdGVyYXRvcl90eXBlPjo6ZGlmZmVyZW5jZV90eXBlICAgZGlmZmVyZW5jZV90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxpdGVyYXRvcl90eXBlPjo6aXRlcmF0b3JfY2F0ZWdvcnkgaXRlcmF0b3JfY2F0ZWdvcnk7Ci0KLSAgIG1vdmVfaXRlcmF0b3IoKQotICAge30KLQotICAgZXhwbGljaXQgbW92ZV9pdGVyYXRvcihJdCBpKQotICAgICAgOiAgbV9pdChpKQotICAge30KLQotICAgdGVtcGxhdGUgPGNsYXNzIFU+Ci0gICBtb3ZlX2l0ZXJhdG9yKGNvbnN0IG1vdmVfaXRlcmF0b3I8VT4mIHUpCi0gICAgICA6ICBtX2l0KHUuYmFzZSgpKQotICAge30KLQotICAgaXRlcmF0b3JfdHlwZSBiYXNlKCkgY29uc3QKLSAgIHsgIHJldHVybiBtX2l0OyAgIH0KLQotICAgcmVmZXJlbmNlIG9wZXJhdG9yKigpIGNvbnN0Ci0gICB7Ci0gICAgICAjaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUykgfHwgZGVmaW5lZChORE5CT09TVF9NT1ZFX09MRF9SVkFMVUVfUkVGX0JJTkRJTkdfUlVMRVMpCi0gICAgICByZXR1cm4gKm1faXQ7Ci0gICAgICAjZWxzZQotICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6Om1vdmUoKm1faXQpOwotICAgICAgI2VuZGlmCi0gICB9Ci0KLSAgIHBvaW50ZXIgICBvcGVyYXRvci0+KCkgY29uc3QKLSAgIHsgIHJldHVybiBtX2l0OyAgIH0KLQotICAgbW92ZV9pdGVyYXRvciYgb3BlcmF0b3IrKygpCi0gICB7ICArK21faXQ7IHJldHVybiAqdGhpczsgICB9Ci0KLSAgIG1vdmVfaXRlcmF0b3I8aXRlcmF0b3JfdHlwZT4gIG9wZXJhdG9yKysoaW50KQotICAgeyAgbW92ZV9pdGVyYXRvcjxpdGVyYXRvcl90eXBlPiB0bXAoKnRoaXMpOyArKygqdGhpcyk7IHJldHVybiB0bXA7ICAgfQotCi0gICBtb3ZlX2l0ZXJhdG9yJiBvcGVyYXRvci0tKCkKLSAgIHsgIC0tbV9pdDsgcmV0dXJuICp0aGlzOyAgIH0KLQotICAgbW92ZV9pdGVyYXRvcjxpdGVyYXRvcl90eXBlPiAgb3BlcmF0b3ItLShpbnQpCi0gICB7ICBtb3ZlX2l0ZXJhdG9yPGl0ZXJhdG9yX3R5cGU+IHRtcCgqdGhpcyk7IC0tKCp0aGlzKTsgcmV0dXJuIHRtcDsgICB9Ci0KLSAgIG1vdmVfaXRlcmF0b3I8aXRlcmF0b3JfdHlwZT4gIG9wZXJhdG9yKyAoZGlmZmVyZW5jZV90eXBlIG4pIGNvbnN0Ci0gICB7ICByZXR1cm4gbW92ZV9pdGVyYXRvcjxpdGVyYXRvcl90eXBlPihtX2l0ICsgbik7ICB9Ci0KLSAgIG1vdmVfaXRlcmF0b3ImIG9wZXJhdG9yKz0oZGlmZmVyZW5jZV90eXBlIG4pCi0gICB7ICBtX2l0ICs9IG47IHJldHVybiAqdGhpczsgICB9Ci0KLSAgIG1vdmVfaXRlcmF0b3I8aXRlcmF0b3JfdHlwZT4gIG9wZXJhdG9yLSAoZGlmZmVyZW5jZV90eXBlIG4pIGNvbnN0Ci0gICB7ICByZXR1cm4gbW92ZV9pdGVyYXRvcjxpdGVyYXRvcl90eXBlPihtX2l0IC0gbik7ICB9Ci0KLSAgIG1vdmVfaXRlcmF0b3ImIG9wZXJhdG9yLT0oZGlmZmVyZW5jZV90eXBlIG4pCi0gICB7ICBtX2l0IC09IG47IHJldHVybiAqdGhpczsgICB9Ci0KLSAgIHJlZmVyZW5jZSBvcGVyYXRvcltdKGRpZmZlcmVuY2VfdHlwZSBuKSBjb25zdAotICAgewotICAgICAgI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMpIHx8IGRlZmluZWQoTkROQk9PU1RfTU9WRV9PTERfUlZBTFVFX1JFRl9CSU5ESU5HX1JVTEVTKQotICAgICAgcmV0dXJuIG1faXRbbl07Ci0gICAgICAjZWxzZQotICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6Om1vdmUobV9pdFtuXSk7Ci0gICAgICAjZW5kaWYKLSAgIH0KLQotICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBtb3ZlX2l0ZXJhdG9yJiB4LCBjb25zdCBtb3ZlX2l0ZXJhdG9yJiB5KQotICAgeyAgcmV0dXJuIHguYmFzZSgpID09IHkuYmFzZSgpOyAgfQotCi0gICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IG1vdmVfaXRlcmF0b3ImIHgsIGNvbnN0IG1vdmVfaXRlcmF0b3ImIHkpCi0gICB7ICByZXR1cm4geC5iYXNlKCkgIT0geS5iYXNlKCk7ICB9Ci0KLSAgIGZyaWVuZCBib29sIG9wZXJhdG9yPCAoY29uc3QgbW92ZV9pdGVyYXRvciYgeCwgY29uc3QgbW92ZV9pdGVyYXRvciYgeSkKLSAgIHsgIHJldHVybiB4LmJhc2UoKSA8IHkuYmFzZSgpOyAgIH0KLQotICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I8PShjb25zdCBtb3ZlX2l0ZXJhdG9yJiB4LCBjb25zdCBtb3ZlX2l0ZXJhdG9yJiB5KQotICAgeyAgcmV0dXJuIHguYmFzZSgpIDw9IHkuYmFzZSgpOyAgfQotCi0gICBmcmllbmQgYm9vbCBvcGVyYXRvcj4gKGNvbnN0IG1vdmVfaXRlcmF0b3ImIHgsIGNvbnN0IG1vdmVfaXRlcmF0b3ImIHkpCi0gICB7ICByZXR1cm4geC5iYXNlKCkgPiB5LmJhc2UoKTsgIH0KLQotICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I+PShjb25zdCBtb3ZlX2l0ZXJhdG9yJiB4LCBjb25zdCBtb3ZlX2l0ZXJhdG9yJiB5KQotICAgeyAgcmV0dXJuIHguYmFzZSgpID49IHkuYmFzZSgpOyAgfQotCi0gICBmcmllbmQgZGlmZmVyZW5jZV90eXBlIG9wZXJhdG9yLShjb25zdCBtb3ZlX2l0ZXJhdG9yJiB4LCBjb25zdCBtb3ZlX2l0ZXJhdG9yJiB5KQotICAgeyAgcmV0dXJuIHguYmFzZSgpIC0geS5iYXNlKCk7ICAgfQotCi0gICBmcmllbmQgbW92ZV9pdGVyYXRvciBvcGVyYXRvcisoZGlmZmVyZW5jZV90eXBlIG4sIGNvbnN0IG1vdmVfaXRlcmF0b3ImIHgpCi0gICB7ICByZXR1cm4gbW92ZV9pdGVyYXRvcih4LmJhc2UoKSArIG4pOyAgIH0KLQotICAgcHJpdmF0ZToKLSAgIEl0IG1faXQ7Ci19OwotCi0vL2lzX21vdmVfaXRlcmF0b3IKLW5hbWVzcGFjZSBtb3ZlX2RldGFpbCB7Ci0KLXRlbXBsYXRlIDxjbGFzcyBJPgotc3RydWN0IGlzX21vdmVfaXRlcmF0b3IKLSAgIDogcHVibGljIDo6bmRuYm9vc3Q6Om1vdmVfZGV0YWlsOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCBmYWxzZT4KLXsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBJPgotc3RydWN0IGlzX21vdmVfaXRlcmF0b3I8IDo6bmRuYm9vc3Q6Om1vdmVfaXRlcmF0b3I8ST4gPgotICAgOiBwdWJsaWMgOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIHRydWU+Ci17Ci19OwotCi19ICAvL25hbWVzcGFjZSBtb3ZlX2RldGFpbCB7Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVfaXRlcmF0b3IKLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotLy8hCi0vLyEgPGI+UmV0dXJuczwvYj46IG1vdmVfaXRlcmF0b3I8SXQ+KGkpLgotdGVtcGxhdGU8Y2xhc3MgSXQ+Ci1pbmxpbmUgbW92ZV9pdGVyYXRvcjxJdD4gbWFrZV9tb3ZlX2l0ZXJhdG9yKGNvbnN0IEl0ICZpdCkKLXsgIHJldHVybiBtb3ZlX2l0ZXJhdG9yPEl0PihpdCk7IH0KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgYmFja19tb3ZlX2luc2VydF9pdGVyYXRvcgotLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0KLS8vISBBIG1vdmUgaW5zZXJ0IGl0ZXJhdG9yIHRoYXQgbW92ZSBjb25zdHJ1Y3RzIGVsZW1lbnRzIGF0IHRoZQotLy8hIGJhY2sgb2YgYSBjb250YWluZXIKLXRlbXBsYXRlIDx0eXBlbmFtZSBDPiAvLyBDIG1vZGVscyBDb250YWluZXIKLWNsYXNzIGJhY2tfbW92ZV9pbnNlcnRfaXRlcmF0b3IKLSAgIDogcHVibGljIHN0ZDo6aXRlcmF0b3I8c3RkOjpvdXRwdXRfaXRlcmF0b3JfdGFnLCB2b2lkLCB2b2lkLCB2b2lkLCB2b2lkPgotewotICAgQyogY29udGFpbmVyX207Ci0KLSAgIHB1YmxpYzoKLSAgIHR5cGVkZWYgQyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcl90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBDOjp2YWx1ZV90eXBlICAgdmFsdWVfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgQzo6cmVmZXJlbmNlICAgIHJlZmVyZW5jZTsKLQotICAgZXhwbGljaXQgYmFja19tb3ZlX2luc2VydF9pdGVyYXRvcihDJiB4KSA6IGNvbnRhaW5lcl9tKCZ4KSB7IH0KLQotICAgYmFja19tb3ZlX2luc2VydF9pdGVyYXRvciYgb3BlcmF0b3I9KHJlZmVyZW5jZSB4KQotICAgeyBjb250YWluZXJfbS0+cHVzaF9iYWNrKG5kbmJvb3N0Ojptb3ZlKHgpKTsgcmV0dXJuICp0aGlzOyB9Ci0KLSAgIGJhY2tfbW92ZV9pbnNlcnRfaXRlcmF0b3ImIG9wZXJhdG9yPShORE5CT09TVF9SVl9SRUYodmFsdWVfdHlwZSkgeCkKLSAgIHsgIHJlZmVyZW5jZSByeCA9IHg7IHJldHVybiB0aGlzLT5vcGVyYXRvcj0ocngpOyAgfQotCi0gICBiYWNrX21vdmVfaW5zZXJ0X2l0ZXJhdG9yJiBvcGVyYXRvciooKSAgICAgeyByZXR1cm4gKnRoaXM7IH0KLSAgIGJhY2tfbW92ZV9pbnNlcnRfaXRlcmF0b3ImIG9wZXJhdG9yKysoKSAgICB7IHJldHVybiAqdGhpczsgfQotICAgYmFja19tb3ZlX2luc2VydF9pdGVyYXRvciYgb3BlcmF0b3IrKyhpbnQpIHsgcmV0dXJuICp0aGlzOyB9Ci19OwotCi0vLyEKLS8vISA8Yj5SZXR1cm5zPC9iPjogYmFja19tb3ZlX2luc2VydF9pdGVyYXRvcjxDPih4KS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBDPiAvLyBDIG1vZGVscyBDb250YWluZXIKLWlubGluZSBiYWNrX21vdmVfaW5zZXJ0X2l0ZXJhdG9yPEM+IGJhY2tfbW92ZV9pbnNlcnRlcihDJiB4KQotewotICAgcmV0dXJuIGJhY2tfbW92ZV9pbnNlcnRfaXRlcmF0b3I8Qz4oeCk7Ci19Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgIGZyb250X21vdmVfaW5zZXJ0X2l0ZXJhdG9yCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLS8vISBBIG1vdmUgaW5zZXJ0IGl0ZXJhdG9yIHRoYXQgbW92ZSBjb25zdHJ1Y3RzIGVsZW1lbnRzIGludCB0aGUKLS8vISBmcm9udCBvZiBhIGNvbnRhaW5lcgotdGVtcGxhdGUgPHR5cGVuYW1lIEM+IC8vIEMgbW9kZWxzIENvbnRhaW5lcgotY2xhc3MgZnJvbnRfbW92ZV9pbnNlcnRfaXRlcmF0b3IKLSAgIDogcHVibGljIHN0ZDo6aXRlcmF0b3I8c3RkOjpvdXRwdXRfaXRlcmF0b3JfdGFnLCB2b2lkLCB2b2lkLCB2b2lkLCB2b2lkPgotewotICAgQyogY29udGFpbmVyX207Ci0KLXB1YmxpYzoKLSAgIHR5cGVkZWYgQyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcl90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBDOjp2YWx1ZV90eXBlICAgdmFsdWVfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgQzo6cmVmZXJlbmNlICAgIHJlZmVyZW5jZTsKLQotICAgZXhwbGljaXQgZnJvbnRfbW92ZV9pbnNlcnRfaXRlcmF0b3IoQyYgeCkgOiBjb250YWluZXJfbSgmeCkgeyB9Ci0KLSAgIGZyb250X21vdmVfaW5zZXJ0X2l0ZXJhdG9yJiBvcGVyYXRvcj0ocmVmZXJlbmNlIHgpCi0gICB7IGNvbnRhaW5lcl9tLT5wdXNoX2Zyb250KG5kbmJvb3N0Ojptb3ZlKHgpKTsgcmV0dXJuICp0aGlzOyB9Ci0KLSAgIGZyb250X21vdmVfaW5zZXJ0X2l0ZXJhdG9yJiBvcGVyYXRvcj0oTkROQk9PU1RfUlZfUkVGKHZhbHVlX3R5cGUpIHgpCi0gICB7ICByZWZlcmVuY2UgcnggPSB4OyByZXR1cm4gdGhpcy0+b3BlcmF0b3I9KHJ4KTsgIH0KLQotICAgZnJvbnRfbW92ZV9pbnNlcnRfaXRlcmF0b3ImIG9wZXJhdG9yKigpICAgICB7IHJldHVybiAqdGhpczsgfQotICAgZnJvbnRfbW92ZV9pbnNlcnRfaXRlcmF0b3ImIG9wZXJhdG9yKysoKSAgICB7IHJldHVybiAqdGhpczsgfQotICAgZnJvbnRfbW92ZV9pbnNlcnRfaXRlcmF0b3ImIG9wZXJhdG9yKysoaW50KSB7IHJldHVybiAqdGhpczsgfQotfTsKLQotLy8hCi0vLyEgPGI+UmV0dXJuczwvYj46IGZyb250X21vdmVfaW5zZXJ0X2l0ZXJhdG9yPEM+KHgpLgotdGVtcGxhdGUgPHR5cGVuYW1lIEM+IC8vIEMgbW9kZWxzIENvbnRhaW5lcgotaW5saW5lIGZyb250X21vdmVfaW5zZXJ0X2l0ZXJhdG9yPEM+IGZyb250X21vdmVfaW5zZXJ0ZXIoQyYgeCkKLXsKLSAgIHJldHVybiBmcm9udF9tb3ZlX2luc2VydF9pdGVyYXRvcjxDPih4KTsKLX0KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0X21vdmVfaXRlcmF0b3IKLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBDPiAvLyBDIG1vZGVscyBDb250YWluZXIKLWNsYXNzIG1vdmVfaW5zZXJ0X2l0ZXJhdG9yCi0gICA6IHB1YmxpYyBzdGQ6Oml0ZXJhdG9yPHN0ZDo6b3V0cHV0X2l0ZXJhdG9yX3RhZywgdm9pZCwgdm9pZCwgdm9pZCwgdm9pZD4KLXsKLSAgIEMqIGNvbnRhaW5lcl9tOwotICAgdHlwZW5hbWUgQzo6aXRlcmF0b3IgcG9zXzsKLQotICAgcHVibGljOgotICAgdHlwZWRlZiBDICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIEM6OnZhbHVlX3R5cGUgICB2YWx1ZV90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBDOjpyZWZlcmVuY2UgICAgcmVmZXJlbmNlOwotCi0gICBleHBsaWNpdCBtb3ZlX2luc2VydF9pdGVyYXRvcihDJiB4LCB0eXBlbmFtZSBDOjppdGVyYXRvciBwb3MpCi0gICAgICA6IGNvbnRhaW5lcl9tKCZ4KSwgcG9zXyhwb3MpCi0gICB7fQotCi0gICBtb3ZlX2luc2VydF9pdGVyYXRvciYgb3BlcmF0b3I9KHJlZmVyZW5jZSB4KQotICAgewotICAgICAgcG9zXyA9IGNvbnRhaW5lcl9tLT5pbnNlcnQocG9zXywgOjpuZG5ib29zdDo6bW92ZSh4KSk7Ci0gICAgICArK3Bvc187Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICB9Ci0KLSAgIG1vdmVfaW5zZXJ0X2l0ZXJhdG9yJiBvcGVyYXRvcj0oTkROQk9PU1RfUlZfUkVGKHZhbHVlX3R5cGUpIHgpCi0gICB7ICByZWZlcmVuY2UgcnggPSB4OyByZXR1cm4gdGhpcy0+b3BlcmF0b3I9KHJ4KTsgIH0KLQotICAgbW92ZV9pbnNlcnRfaXRlcmF0b3ImIG9wZXJhdG9yKigpICAgICB7IHJldHVybiAqdGhpczsgfQotICAgbW92ZV9pbnNlcnRfaXRlcmF0b3ImIG9wZXJhdG9yKysoKSAgICB7IHJldHVybiAqdGhpczsgfQotICAgbW92ZV9pbnNlcnRfaXRlcmF0b3ImIG9wZXJhdG9yKysoaW50KSB7IHJldHVybiAqdGhpczsgfQotfTsKLQotLy8hCi0vLyEgPGI+UmV0dXJuczwvYj46IG1vdmVfaW5zZXJ0X2l0ZXJhdG9yPEM+KHgsIGl0KS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBDPiAvLyBDIG1vZGVscyBDb250YWluZXIKLWlubGluZSBtb3ZlX2luc2VydF9pdGVyYXRvcjxDPiBtb3ZlX2luc2VydGVyKEMmIHgsIHR5cGVuYW1lIEM6Oml0ZXJhdG9yIGl0KQotewotICAgcmV0dXJuIG1vdmVfaW5zZXJ0X2l0ZXJhdG9yPEM+KHgsIGl0KTsKLX0KLQotfSAgLy9uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbW92ZS9kZXRhaWwvY29uZmlnX2VuZC5ocHA+Ci0KLSNlbmRpZiAvLyNpZm5kZWYgTkROQk9PU1RfTU9WRV9JVEVSQVRPUl9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbW92ZS9tb3ZlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbW92ZS9tb3ZlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzI3YjZkOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21vdmUvbW92ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyAoQykgQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zLCBWaWNlbnRlIEJvdGV0IDIwMDkuCi0vLyAoQykgQ29weXJpZ2h0IElvbiBHYXp0YW5hZ2EgMjAwOS0yMDEyLgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21vdmUgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLS8vISBcZmlsZSBtb3ZlLmhwcAotLy8hIEEgZ2VuZXJhbCBsaWJyYXJ5IGhlYWRlciB0aGF0IGluY2x1ZGVzCi0vLyEgdGhlIHJlc3Qgb2YgdG9wLWxldmVsIGhlYWRlcnMuCi0KLSNpZm5kZWYgTkROQk9PU1RfTU9WRV9NT1ZFX0hQUAotI2RlZmluZSBORE5CT09TVF9NT1ZFX01PVkVfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tb3ZlL2RldGFpbC9jb25maWdfYmVnaW4uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21vdmUvdXRpbGl0eS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbW92ZS9pdGVyYXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbW92ZS90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21vdmUvYWxnb3JpdGhtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tb3ZlL2RldGFpbC9jb25maWdfZW5kLmhwcD4KLQotI2VuZGlmIC8vI2lmbmRlZiBORE5CT09TVF9NT1ZFX01PVkVfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21vdmUvdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbW92ZS90cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YjI1ZmQ1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbW92ZS90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQyICswLDAgQEAKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIChDKSBDb3B5cmlnaHQgSW9uIEdhenRhbmFnYSAyMDA5LTIwMTIuCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbW92ZSBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotLy8hIFxmaWxlCi0KLSNpZm5kZWYgTkROQk9PU1RfTU9WRV9NT1ZFX1RSQUlUU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfTU9WRV9NT1ZFX1RSQUlUU19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21vdmUvZGV0YWlsL2NvbmZpZ19iZWdpbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbW92ZS9kZXRhaWwvbWV0YV91dGlscy5ocHA+Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLSNpbmNsdWRlIDxuZG5ib29zdC9tb3ZlL2NvcmUuaHBwPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLS8vISBJZiB0aGlzIHRyYWl0IHlpZWxkcyB0byB0cnVlCi0vLyEgKDxpPmhhc190cml2aWFsX2Rlc3RydWN0b3JfYWZ0ZXJfbW92ZSAmbHQ7VCZndDs6OnZhbHVlID09IHRydWU8L2k+KQotLy8hIG1lYW5zIHRoYXQgaWYgVCBpcyB1c2VkIGFzIGFyZ3VtZW50IG9mIGEgbW92ZSBjb25zdHJ1Y3Rpb24vYXNzaWdubWVudCwKLS8vISB0aGVyZSBpcyBubyBuZWVkIHRvIGNhbGwgVCdzIGRlc3RydWN0b3IuCi0vLyEgVGhpcyBvcHRpbWl6YXRpb24gdGlwaWNhbGx5IGlzIHVzZWQgdG8gaW1wcm92ZSBjb250YWluZXJzJyBwZXJmb3JtYW5jZS4KLS8vIQotLy8hIEJ5IGRlZmF1bHQgdGhpcyB0cmFpdCBpcyB0cnVlIGlmIHRoZSB0eXBlIGhhcyB0cml2aWFsIGRlc3RydWN0b3IsCi0vLyEgZXZlcnkgY2xhc3Mgc2hvdWxkIHNwZWNpYWxpemUgdGhpcyB0cmFpdCBpZiBpdCB3YW50cyB0byBpbXByb3ZlIHBlcmZvcm1hbmNlCi0vLyEgd2hlbiBpbnNlcnRlZCBpbiBjb250YWluZXJzLgotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcl9hZnRlcl9tb3ZlCi0gICA6IDo6bmRuYm9vc3Q6Omhhc190cml2aWFsX2Rlc3RydWN0b3I8VD4KLXt9OwotCi0vLyEgQnkgZGVmYXVsdCB0aGlzIHRyYWl0cyByZXR1cm5zIGZhbHNlLiBDbGFzc2VzIHdpdGggbm9uLXRocm93aW5nIG1vdmUgY29uc3RydWN0b3IKLS8vISBhbmQgYXNzaWdubWVudCBjYW4gc3BlY2lhbGl6ZSB0aGlzIHRyYWl0IHRvIG9idGFpbiBzb21lIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50cy4KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGhhc19ub3Rocm93X21vdmUKLSAgIDogcHVibGljIDo6bmRuYm9vc3Q6Om1vdmVfZGV0YWlsOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCBmYWxzZT4KLXt9OwotCi1uYW1lc3BhY2UgbW92ZV9kZXRhaWwgewotCi0vLyBDb2RlIGZyb20gSmVmZnJleSBMZWUgSGVsbHJ1bmcsIG1hbnkgdGhhbmtzCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLSAgIHRlbXBsYXRlPCBjbGFzcyBUPiBzdHJ1Y3QgZm9yd2FyZF90eXBlIHsgdHlwZWRlZiBUIHR5cGU7IH07Ci0jZWxzZSAvLyAjaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0gICB0ZW1wbGF0ZTwgY2xhc3MgVD4KLSAgIHN0cnVjdCBmb3J3YXJkX3R5cGUKLSAgIHsgdHlwZWRlZiBjb25zdCBUICZ0eXBlOyB9OwotCi0gICB0ZW1wbGF0ZTwgY2xhc3MgVD4KLSAgIHN0cnVjdCBmb3J3YXJkX3R5cGU8IG5kbmJvb3N0OjpydjxUPiA+Ci0gICB7IHR5cGVkZWYgVCB0eXBlOyB9OwotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLQotdGVtcGxhdGU8IGNsYXNzIFQgPiBzdHJ1Y3QgaXNfcnZhbHVlX3JlZmVyZW5jZSA6IDo6bmRuYm9vc3Q6Om1vdmVfZGV0YWlsOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCBmYWxzZT4geyB9OwotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotICAgdGVtcGxhdGU8IGNsYXNzIFQgPiBzdHJ1Y3QgaXNfcnZhbHVlX3JlZmVyZW5jZTwgVCYmID4gOiA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgdHJ1ZT4geyB9OwotI2Vsc2UgLy8gI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotICAgdGVtcGxhdGU8IGNsYXNzIFQgPiBzdHJ1Y3QgaXNfcnZhbHVlX3JlZmVyZW5jZTwgbmRuYm9vc3Q6OnJ2PFQ+JiA+Ci0gICAgICA6ICA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgdHJ1ZT4KLSAgIHt9OwotCi0gICB0ZW1wbGF0ZTwgY2xhc3MgVCA+IHN0cnVjdCBpc19ydmFsdWVfcmVmZXJlbmNlPCBjb25zdCBuZG5ib29zdDo6cnY8VD4mID4KLSAgICAgIDogOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIHRydWU+Ci0gICB7fTsKLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLSAgIHRlbXBsYXRlPCBjbGFzcyBUID4gc3RydWN0IGFkZF9ydmFsdWVfcmVmZXJlbmNlIHsgdHlwZWRlZiBUJiYgdHlwZTsgfTsKLSNlbHNlIC8vICNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLSAgIG5hbWVzcGFjZSBkZXRhaWxfYWRkX3J2YWx1ZV9yZWZlcmVuY2UKLSAgIHsKLSAgICAgIHRlbXBsYXRlPCBjbGFzcyBUCi0gICAgICAgICAgICAgICwgYm9vbCBlbXVsYXRpb24gPSA6Om5kbmJvb3N0OjpoYXNfbW92ZV9lbXVsYXRpb25fZW5hYmxlZDxUPjo6dmFsdWUKLSAgICAgICAgICAgICAgLCBib29sIHJ2ICAgICAgICA9IDo6bmRuYm9vc3Q6Om1vdmVfZGV0YWlsOjppc19ydjxUPjo6dmFsdWUgID4KLSAgICAgIHN0cnVjdCBhZGRfcnZhbHVlX3JlZmVyZW5jZV9pbXBsIHsgdHlwZWRlZiBUIHR5cGU7IH07Ci0KLSAgICAgIHRlbXBsYXRlPCBjbGFzcyBULCBib29sIGVtdWxhdGlvbj4KLSAgICAgIHN0cnVjdCBhZGRfcnZhbHVlX3JlZmVyZW5jZV9pbXBsPCBULCBlbXVsYXRpb24sIHRydWUgPiB7IHR5cGVkZWYgVCAmIHR5cGU7IH07Ci0KLSAgICAgIHRlbXBsYXRlPCBjbGFzcyBULCBib29sIHJ2ID4KLSAgICAgIHN0cnVjdCBhZGRfcnZhbHVlX3JlZmVyZW5jZV9pbXBsPCBULCB0cnVlLCBydiA+IHsgdHlwZWRlZiA6Om5kbmJvb3N0OjpydjxUPiYgdHlwZTsgfTsKLSAgIH0gLy8gbmFtZXNwYWNlIGRldGFpbF9hZGRfcnZhbHVlX3JlZmVyZW5jZQotCi0gICB0ZW1wbGF0ZTwgY2xhc3MgVCA+Ci0gICBzdHJ1Y3QgYWRkX3J2YWx1ZV9yZWZlcmVuY2UKLSAgICAgIDogZGV0YWlsX2FkZF9ydmFsdWVfcmVmZXJlbmNlOjphZGRfcnZhbHVlX3JlZmVyZW5jZV9pbXBsPFQ+Ci0gICB7IH07Ci0KLSAgIHRlbXBsYXRlPCBjbGFzcyBUID4KLSAgIHN0cnVjdCBhZGRfcnZhbHVlX3JlZmVyZW5jZTxUICY+Ci0gICB7ICB0eXBlZGVmIFQgJiB0eXBlOyB9OwotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotCi10ZW1wbGF0ZTwgY2xhc3MgVCA+IHN0cnVjdCByZW1vdmVfcnZhbHVlX3JlZmVyZW5jZSB7IHR5cGVkZWYgVCB0eXBlOyB9OwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0gICB0ZW1wbGF0ZTwgY2xhc3MgVCA+IHN0cnVjdCByZW1vdmVfcnZhbHVlX3JlZmVyZW5jZTwgVCYmID4gICAgICAgICAgICAgICAgICB7IHR5cGVkZWYgVCB0eXBlOyB9OwotI2Vsc2UgLy8gI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotICAgdGVtcGxhdGU8IGNsYXNzIFQgPiBzdHJ1Y3QgcmVtb3ZlX3J2YWx1ZV9yZWZlcmVuY2U8IHJ2PFQ+ID4gICAgICAgICAgICAgICAgeyB0eXBlZGVmIFQgdHlwZTsgfTsKLSAgIHRlbXBsYXRlPCBjbGFzcyBUID4gc3RydWN0IHJlbW92ZV9ydmFsdWVfcmVmZXJlbmNlPCBjb25zdCBydjxUPiA+ICAgICAgICAgIHsgdHlwZWRlZiBUIHR5cGU7IH07Ci0gICB0ZW1wbGF0ZTwgY2xhc3MgVCA+IHN0cnVjdCByZW1vdmVfcnZhbHVlX3JlZmVyZW5jZTwgdm9sYXRpbGUgcnY8VD4gPiAgICAgICB7IHR5cGVkZWYgVCB0eXBlOyB9OwotICAgdGVtcGxhdGU8IGNsYXNzIFQgPiBzdHJ1Y3QgcmVtb3ZlX3J2YWx1ZV9yZWZlcmVuY2U8IGNvbnN0IHZvbGF0aWxlIHJ2PFQ+ID4geyB0eXBlZGVmIFQgdHlwZTsgfTsKLSAgIHRlbXBsYXRlPCBjbGFzcyBUID4gc3RydWN0IHJlbW92ZV9ydmFsdWVfcmVmZXJlbmNlPCBydjxUPiYgPiAgICAgICAgICAgICAgIHsgdHlwZWRlZiBUIHR5cGU7IH07Ci0gICB0ZW1wbGF0ZTwgY2xhc3MgVCA+IHN0cnVjdCByZW1vdmVfcnZhbHVlX3JlZmVyZW5jZTwgY29uc3QgcnY8VD4mID4gICAgICAgICB7IHR5cGVkZWYgVCB0eXBlOyB9OwotICAgdGVtcGxhdGU8IGNsYXNzIFQgPiBzdHJ1Y3QgcmVtb3ZlX3J2YWx1ZV9yZWZlcmVuY2U8IHZvbGF0aWxlIHJ2PFQ+JiA+ICAgICAgeyB0eXBlZGVmIFQgdHlwZTsgfTsKLSAgIHRlbXBsYXRlPCBjbGFzcyBUID4gc3RydWN0IHJlbW92ZV9ydmFsdWVfcmVmZXJlbmNlPCBjb25zdCB2b2xhdGlsZSBydjxUPiYgPnsgdHlwZWRlZiBUIHR5cGU7IH07Ci0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXR5cGVuYW1lIG5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6YWRkX3J2YWx1ZV9yZWZlcmVuY2U8VD46OnR5cGUgZGVjbHZhbCgpOwotCi19ICAvL21vdmVfZGV0YWlsIHsKLQotLy8gSWRlYXMgZnJvbSBCb29zdC5Nb3ZlIHJldmlldywgSmVmZnJleSBMZWUgSGVsbHJ1bmc6Ci0vLwotLy8tIFR5cGVUcmFpdHMgbWV0YWZ1bmN0aW9ucyBpc19sdmFsdWVfcmVmZXJlbmNlLCBhZGRfbHZhbHVlX3JlZmVyZW5jZSwgYW5kIHJlbW92ZV9sdmFsdWVfcmVmZXJlbmNlID8KLS8vICBQZXJoYXBzIGFkZF9yZWZlcmVuY2UgYW5kIHJlbW92ZV9yZWZlcmVuY2UgY2FuIGJlIG1vZGlmaWVkIHNvIHRoYXQgdGhleSBiZWhhdmUgd3J0IGVtdWxhdGVkIHJ2YWx1ZQotLy8gIHJlZmVyZW5jZXMgdGhlIHNhbWUgYXMgd3J0IHJlYWwgcnZhbHVlIHJlZmVyZW5jZXMsIGkuZS4sIGFkZF9yZWZlcmVuY2U8IHJ2PFQ+JiA+IC0+IFQmIHJhdGhlciB0aGFuCi0vLyAgcnY8VD4mIChzaW5jZSBUJiYgJiAtPiBUJikuCi0vLwotLy8tIEFkZCdsIFR5cGVUcmFpdHMgaGFzX1t0cml2aWFsX11tb3ZlX3tjb25zdHJ1Y3Rvcixhc3NpZ259Li4uPwotLy8KLS8vLSBBbiBhc19sdmFsdWUoVCYgeCkgZnVuY3Rpb24sIHdoaWNoIGFtb3VudHMgdG8gYW4gaWRlbnRpdHkgb3BlcmF0aW9uIGluIEMrKzB4LCBidXQgc3RyaXBzIGVtdWxhdGVkCi0vLyAgcnZhbHVlIHJlZmVyZW5jZXMgaW4gQysrMDMuICBUaGlzIG1heSBiZSBuZWNlc3NhcnkgdG8gcHJldmVudCAiYWNjaWRlbnRhbCBtb3ZlcyIuCi0KLQotfSAgLy9uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbW92ZS9kZXRhaWwvY29uZmlnX2VuZC5ocHA+Ci0KLSNlbmRpZiAvLyNpZm5kZWYgTkROQk9PU1RfTU9WRV9NT1ZFX1RSQUlUU19IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbW92ZS91dGlsaXR5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbW92ZS91dGlsaXR5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2JjOTE5ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21vdmUvdXRpbGl0eS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOTQgKzAsMCBAQAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gKEMpIENvcHlyaWdodCBJb24gR2F6dGFuYWdhIDIwMTItMjAxMi4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tb3ZlIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0vLyEgXGZpbGUKLQotI2lmbmRlZiBORE5CT09TVF9NT1ZFX01PVkVfVVRJTElUWV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfTU9WRV9NT1ZFX1VUSUxJVFlfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tb3ZlL2RldGFpbC9jb25maWdfYmVnaW4uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21vdmUvY29yZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbW92ZS9kZXRhaWwvbWV0YV91dGlscy5ocHA+Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTKSAmJiAhZGVmaW5lZChORE5CT09TVF9NT1ZFX0RPWFlHRU5fSU5WT0tFRCkKLQotICAgbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgIHN0cnVjdCBlbmFibGVfbW92ZV91dGlsaXR5X2VtdWxhdGlvbgotICAgewotICAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOwotICAgfTsKLSAgICAKLSAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgLy8KLSAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUoKQotICAgLy8KLSAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIGlubGluZSB0eXBlbmFtZSA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6ZW5hYmxlX2lmX2MKLSAgICAgIDwgZW5hYmxlX21vdmVfdXRpbGl0eV9lbXVsYXRpb248VD46OnZhbHVlICYmICFoYXNfbW92ZV9lbXVsYXRpb25fZW5hYmxlZDxUPjo6dmFsdWUsIFQmPjo6dHlwZQotICAgICAgICAgbW92ZShUJiB4KQotICAgewotICAgICAgcmV0dXJuIHg7Ci0gICB9Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgaW5saW5lIHR5cGVuYW1lIDo6bmRuYm9vc3Q6Om1vdmVfZGV0YWlsOjplbmFibGVfaWZfYwotICAgICAgPCBlbmFibGVfbW92ZV91dGlsaXR5X2VtdWxhdGlvbjxUPjo6dmFsdWUgJiYgaGFzX21vdmVfZW11bGF0aW9uX2VuYWJsZWQ8VD46OnZhbHVlLCBydjxUPiY+Ojp0eXBlCi0gICAgICAgICBtb3ZlKFQmIHgpCi0gICB7Ci0gICAgICByZXR1cm4gKnN0YXRpY19jYXN0PHJ2PFQ+KiA+KDo6bmRuYm9vc3Q6Om1vdmVfZGV0YWlsOjphZGRyZXNzb2YoeCkpOwotICAgfQotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIGlubGluZSB0eXBlbmFtZSA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6ZW5hYmxlX2lmX2MKLSAgICAgIDwgZW5hYmxlX21vdmVfdXRpbGl0eV9lbXVsYXRpb248VD46OnZhbHVlICYmIGhhc19tb3ZlX2VtdWxhdGlvbl9lbmFibGVkPFQ+Ojp2YWx1ZSwgcnY8VD4mPjo6dHlwZQotICAgICAgICAgbW92ZShydjxUPiYgeCkKLSAgIHsKLSAgICAgIHJldHVybiB4OwotICAgfQotCi0gICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgIC8vCi0gICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3J3YXJkKCkKLSAgIC8vCi0gICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBpbmxpbmUgdHlwZW5hbWUgOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmVuYWJsZV9pZl9jCi0gICAgICA8IGVuYWJsZV9tb3ZlX3V0aWxpdHlfZW11bGF0aW9uPFQ+Ojp2YWx1ZSAmJiA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6aXNfcnY8VD46OnZhbHVlLCBUICY+Ojp0eXBlCi0gICAgICAgICBmb3J3YXJkKGNvbnN0IHR5cGVuYW1lIDo6bmRuYm9vc3Q6Om1vdmVfZGV0YWlsOjppZGVudGl0eTxUPjo6dHlwZSAmeCkKLSAgIHsKLSAgICAgIHJldHVybiBjb25zdF9jYXN0PFQmPih4KTsKLSAgIH0KLQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBpbmxpbmUgdHlwZW5hbWUgOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmVuYWJsZV9pZl9jCi0gICAgICA8IGVuYWJsZV9tb3ZlX3V0aWxpdHlfZW11bGF0aW9uPFQ+Ojp2YWx1ZSAmJiAhOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmlzX3J2PFQ+Ojp2YWx1ZSwgY29uc3QgVCAmPjo6dHlwZQotICAgICAgZm9yd2FyZChjb25zdCB0eXBlbmFtZSA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6aWRlbnRpdHk8VD46OnR5cGUgJngpCi0gICB7Ci0gICAgICByZXR1cm4geDsKLSAgIH0KLQotICAgfSAgLy9uYW1lc3BhY2UgbmRuYm9vc3QKLQotI2Vsc2UgICAgLy8jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTU9WRV9ET1hZR0VOX0lOVk9LRUQpCi0KLSAgICNpZiBkZWZpbmVkKE5ETkJPT1NUX01PVkVfVVNFX1NUQU5EQVJEX0xJQlJBUllfTU9WRSkKLSAgICAgICNpbmNsdWRlIDx1dGlsaXR5PgotCi0gICAgICBuYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLSAgICAgIHVzaW5nIDo6c3RkOjptb3ZlOwotICAgICAgdXNpbmcgOjpzdGQ6OmZvcndhcmQ7Ci0KLSAgICAgIH0gIC8vbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSAgICNlbHNlIC8vIU5ETkJPT1NUX01PVkVfVVNFX1NUQU5EQVJEX0xJQlJBUllfTU9WRQotCi0gICAgICAjaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3JlZmVyZW5jZS5ocHA+Ci0KLSAgICAgIG5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSAgICAgIC8vISBUaGlzIHRyYWl0J3MgaW50ZXJuYWwgYm9vbGVhbiBgdmFsdWVgIGlzIGZhbHNlIGluIGNvbXBpbGVycyB3aXRoIHJ2YWx1ZSByZWZlcmVuY2VzCi0gICAgICAvLyEgYW5kIHRydWUgaW4gY29tcGlsZXJzIHdpdGhvdXQgcnZhbHVlIHJlZmVyZW5jZXMuCi0gICAgICAvLyEKLSAgICAgIC8vISBBIHVzZXIgY2FuIHNwZWNpYWxpemUgdGhpcyB0cmFpdCBmb3IgYSB0eXBlIFQgdG8gZmFsc2UgdG8gU0ZJTkFFIG91dCBgbW92ZWAgYW5kIGBmb3J3YXJkYAotICAgICAgLy8hIHNvIHRoYXQgdGhlIHVzZXIgY2FuIGRlZmluZSBhIGRpZmZlcmVudCBtb3ZlIGVtdWxhdGlvbiBmb3IgdGhhdCB0eXBlIGluIG5hbWVzcGFjZSBuZG5ib29zdAotICAgICAgLy8hIChlLmcuIGFub3RoZXIgQm9vc3QgbGlicmFyeSBmb3IgaXRzIHR5cGVzKSBhbmQgYXZvaWQgYW55IG92ZXJsb2FkIGFtYmlndWl0eS4KLSAgICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgICBzdHJ1Y3QgZW5hYmxlX21vdmVfdXRpbGl0eV9lbXVsYXRpb24KLSAgICAgIHsKLSAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gZmFsc2U7Ci0gICAgICB9OwotCi0gICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgIC8vCi0gICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlCi0gICAgICAvLwotICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgICAgICNpZiBkZWZpbmVkKE5ETkJPT1NUX01PVkVfRE9YWUdFTl9JTlZPS0VEKQotICAgICAgICAgLy8hIFRoaXMgZnVuY3Rpb24gcHJvdmlkZXMgYSB3YXkgdG8gY29udmVydCBhIHJlZmVyZW5jZSBpbnRvIGEgcnZhbHVlIHJlZmVyZW5jZQotICAgICAgICAgLy8hIGluIGNvbXBpbGVycyB3aXRoIHJ2YWx1ZSByZWZlcmVuY2VzLiBGb3Igb3RoZXIgY29tcGlsZXJzIGNvbnZlcnRzIFQgJiBpbnRvCi0gICAgICAgICAvLyEgPGk+OjpuZG5ib29zdDo6cnY8VD4gJjwvaT4gc28gdGhhdCBtb3ZlIGVtdWxhdGlvbiBpcyBhY3RpdmF0ZWQuCi0gICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgIHJ2YWx1ZV9yZWZlcmVuY2UgbW92ZSAoaW5wdXRfcmVmZXJlbmNlKTsKLQotICAgICAgI2VsaWYgZGVmaW5lZChORE5CT09TVF9NT1ZFX09MRF9SVkFMVUVfUkVGX0JJTkRJTkdfUlVMRVMpCi0KLSAgICAgICAgIC8vT2xkIG1vdmUgYXBwcm9hY2gsIGx2YWx1ZXMgY291bGQgYmluZCB0byBydmFsdWUgcmVmZXJlbmNlcwotICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgICBpbmxpbmUgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZSAmJiBtb3ZlKFQmJiB0KQotICAgICAgICAgeyAgcmV0dXJuIHQ7ICAgfQotCi0gICAgICAjZWxzZSAvL05ETkJPT1NUX01PVkVfT0xEX1JWQUxVRV9SRUZfQklORElOR19SVUxFUwotCi0gICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgIGlubGluZSB0eXBlbmFtZSByZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0eXBlICYmIG1vdmUoVCYmIHQpCi0gICAgICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDx0eXBlbmFtZSByZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0eXBlICYmPih0KTsgfQotCi0gICAgICAjZW5kaWYgICAvL05ETkJPT1NUX01PVkVfT0xEX1JWQUxVRV9SRUZfQklORElOR19SVUxFUwotCi0gICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgIC8vCi0gICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3J3YXJkCi0gICAgICAvLwotICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLQotICAgICAgI2lmIGRlZmluZWQoTkROQk9PU1RfTU9WRV9ET1hZR0VOX0lOVk9LRUQpCi0gICAgICAgICAvLyEgVGhpcyBmdW5jdGlvbiBwcm92aWRlcyBsaW1pdGVkIGZvcm0gb2YgZm9yd2FyZGluZyB0aGF0IGlzIHVzdWFsbHkgZW5vdWdoIGZvcgotICAgICAgICAgLy8hIGluLXBsYWNlIGNvbnN0cnVjdGlvbiBhbmQgYXZvaWRzIHRoZSBleHBvbmVudGlhbCBvdmVybG9hZGluZyBmb3IKLSAgICAgICAgIC8vISBhY2hpZXZlIHRoZSBsaW1pdGVkIGZvcndhcmRpbmcgaW4gQysrMDMuCi0gICAgICAgICAvLyEKLSAgICAgICAgIC8vISBGb3IgY29tcGlsZXJzIHdpdGggcnZhbHVlIHJlZmVyZW5jZXMgdGhpcyBmdW5jdGlvbiBwcm92aWRlcyBwZXJmZWN0IGZvcndhcmRpbmcuCi0gICAgICAgICAvLyEKLSAgICAgICAgIC8vISBPdGhlcndpc2U6Ci0gICAgICAgICAvLyEgKiBJZiBpbnB1dF9yZWZlcmVuY2UgYmluZHMgdG8gY29uc3QgOjpuZG5ib29zdDo6cnY8VD4gJiB0aGVuIGl0IG91dHB1dF9yZWZlcmVuY2UgaXMKLSAgICAgICAgIC8vISAgIDo6bmRuYm9vc3Q6OnJ2PFQ+ICYKLSAgICAgICAgIC8vIQotICAgICAgICAgLy8hICogRWxzZSwgb3V0cHV0X3JlZmVyZW5jZSBpcyBlcXVhbCB0byBpbnB1dF9yZWZlcmVuY2UuCi0gICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gb3V0cHV0X3JlZmVyZW5jZSBmb3J3YXJkKGlucHV0X3JlZmVyZW5jZSk7Ci0gICAgICAjZWxpZiBkZWZpbmVkKE5ETkJPT1NUX01PVkVfT0xEX1JWQUxVRV9SRUZfQklORElOR19SVUxFUykKLQotICAgICAgICAgLy9PbGQgbW92ZSBhcHByb2FjaCwgbHZhbHVlcyBjb3VsZCBiaW5kIHRvIHJ2YWx1ZSByZWZlcmVuY2VzCi0KLSAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgICAgaW5saW5lIFQmJiBmb3J3YXJkICh0eXBlbmFtZSA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6aWRlbnRpdHk8VD46OnR5cGUmJiB0KQotICAgICAgICAgeyAgcmV0dXJuIHQ7ICAgfQotCi0gICAgICAjZWxzZSAvL09sZCBtb3ZlCi0KLSAgICAgICAgIC8vSW1wbGVtZW50YXRpb24gIzUgZnJvbSBOMjk1MSwgdGhhbmtzIHRvIEhvd2FyZCBIaW5uYW50Ci0KLSAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPgotICAgICAgICAgaW5saW5lIFQmJiBmb3J3YXJkKFUmJiB0Ci0gICAgICAgICAgICAgLCB0eXBlbmFtZSA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6ZW5hYmxlX2lmX2M8Ci0gICAgICAgICAgICAgICBtb3ZlX2RldGFpbDo6aXNfbHZhbHVlX3JlZmVyZW5jZTxUPjo6dmFsdWUgPyBtb3ZlX2RldGFpbDo6aXNfbHZhbHVlX3JlZmVyZW5jZTxVPjo6dmFsdWUgOiB0cnVlPjo6dHlwZSAqID0gMC8qCi0gICAgICAgICAgICAgLCB0eXBlbmFtZSA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6ZW5hYmxlX2lmX2M8Ci0gICAgICAgICAgICAgICBtb3ZlX2RldGFpbDo6aXNfY29udmVydGlibGUKLSAgICAgICAgICAgICAgICAgIDx0eXBlbmFtZSByZW1vdmVfcmVmZXJlbmNlPFU+Ojp0eXBlKiwgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZSo+Ojp2YWx1ZT46OnR5cGUgKiA9IDAqLykKLSAgICAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PFQmJj4odCk7ICAgfQotCi0gICAgICAjZW5kaWYgICAvL05ETkJPT1NUX01PVkVfRE9YWUdFTl9JTlZPS0VECi0KLSAgICAgIH0gIC8vbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotICAgI2VuZGlmICAgLy8jaWYgZGVmaW5lZChORE5CT09TVF9NT1ZFX1VTRV9TVEFOREFSRF9MSUJSQVJZX01PVkUpCi0KLSNlbmRpZiAgIC8vTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21vdmUvZGV0YWlsL2NvbmZpZ19lbmQuaHBwPgotCi0jZW5kaWYgLy8jaWZuZGVmIE5ETkJPT1NUX01PVkVfTU9WRV9VVElMSVRZX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvTzFfc2l6ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9PMV9zaXplLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDZhNDYzMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9PMV9zaXplLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTzFfU0laRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX08xX1NJWkVfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBPMV9zaXplLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL08xX3NpemVfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvc2VxdWVuY2VfdGFnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9PMV9zaXplX2ltcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLS8vIHJldHVybnMgc2VxdWVuY2Ugc2l6ZSBpZiBpdCdzIGFuIE8oMSkgb3BlcmF0aW9uOyBvdGhlcndpc2UgcmV0dXJucyAtMQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFNlcXVlbmNlKQotICAgID4KLXN0cnVjdCBPMV9zaXplCi0gICAgOiBPMV9zaXplX2ltcGw8IHR5cGVuYW1lIHNlcXVlbmNlX3RhZzxTZXF1ZW5jZT46OnR5cGUgPgotICAgICAgICA6OnRlbXBsYXRlIGFwcGx5PCBTZXF1ZW5jZSA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLCBPMV9zaXplLCAoU2VxdWVuY2UpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDEsIE8xX3NpemUpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTzFfU0laRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL08xX3NpemVfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL08xX3NpemVfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGE5Nzg2My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9PMV9zaXplX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX08xX1NJWkVfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTzFfU0laRV9GV0RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBPMV9zaXplX2Z3ZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgTzFfc2l6ZV9pbXBsOwotdGVtcGxhdGU8IHR5cGVuYW1lIFNlcXVlbmNlID4gc3RydWN0IE8xX3NpemU7Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTzFfU0laRV9GV0RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hZHZhbmNlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2FkdmFuY2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZDAwODM1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2FkdmFuY2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BRFZBTkNFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQURWQU5DRV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGFkdmFuY2UuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYWR2YW5jZV9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9sZXNzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbmVnYXRlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbG9uZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdGFnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXBwbHlfd3JhcC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vYWR2YW5jZV9mb3J3YXJkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9hZHZhbmNlX2JhY2t3YXJkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy92YWx1ZV93a25kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9udHRwX2RlY2wuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotLy8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBmb3IgZm9yd2FyZC9iaWRpcmVjdGlvbmFsIGl0ZXJhdG9ycwotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgYWR2YW5jZV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxlc3M8IE4sbG9uZ188MD4gPjo6dHlwZSBiYWNrd2FyZF87Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPCBiYWNrd2FyZF8sIG5lZ2F0ZTxOPiwgTiA+Ojp0eXBlIG9mZnNldF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGJhY2t3YXJkXwotICAgICAgICAgICAgLCBhdXg6OmFkdmFuY2VfYmFja3dhcmQ8IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChvZmZzZXRfKTo6dmFsdWUgPgotICAgICAgICAgICAgLCBhdXg6OmFkdmFuY2VfZm9yd2FyZDwgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKG9mZnNldF8pOjp2YWx1ZSA+Ci0gICAgICAgICAgICA+Ojp0eXBlIGZfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Zl8sSXRlcmF0b3I+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKEl0ZXJhdG9yKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOKQotICAgID4KLXN0cnVjdCBhZHZhbmNlCi0gICAgOiBhZHZhbmNlX2ltcGw8IHR5cGVuYW1lIHRhZzxJdGVyYXRvcj46OnR5cGUgPgotICAgICAgICA6OnRlbXBsYXRlIGFwcGx5PEl0ZXJhdG9yLE4+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChsb25nLCBOKQotICAgID4KLXN0cnVjdCBhZHZhbmNlX2MKLSAgICA6IGFkdmFuY2VfaW1wbDwgdHlwZW5hbWUgdGFnPEl0ZXJhdG9yPjo6dHlwZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgYXBwbHk8SXRlcmF0b3IsbG9uZ188Tj4gPgotewotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDIsIGFkdmFuY2UpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQURWQU5DRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2FkdmFuY2VfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2FkdmFuY2VfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWQyNTg2Mi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hZHZhbmNlX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FEVkFOQ0VfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQURWQU5DRV9GV0RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBhZHZhbmNlX2Z3ZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbW1vbl9uYW1lX3drbmQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9DT01NT05fTkFNRV9XS05EKGFkdmFuY2UpCi0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYWR2YW5jZV9pbXBsOwotdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBOID4gc3RydWN0IGFkdmFuY2U7Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQURWQU5DRV9GV0RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hbHdheXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYWx3YXlzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWViYTY0Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hbHdheXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BTFdBWVNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BTFdBWVNfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBhbHdheXMuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZGVmX3BhcmFtc190YWlsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vYXJpdHlfc3BlYy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVmFsdWUgPiBzdHJ1Y3QgYWx3YXlzCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVAotICAgICAgICBORE5CT09TVF9NUExfUFBfTkVTVEVEX0RFRl9QQVJBTVNfVEFJTCgxLCB0eXBlbmFtZSBULCBuYSkKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBWYWx1ZSB0eXBlOwotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMSwgYWx3YXlzKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FMV0FZU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2FuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYmM5ZDQ4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2FuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FORF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FORF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGFuZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25lc3RlZF90eXBlX3drbmQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLQotLy8gYWd1cnQsIDE5L21heS8wNDogd29ya2Fyb3VuZCBhIGNvbmZsaWN0IHdpdGggPGlzbzY0Ni5oPiBoZWFkZXIncyAKLS8vICdvcicgYW5kICdhbmQnIG1hY3Jvcywgc2VlIGh0dHA6Ly90aW55dXJsLmNvbS8zZXQ2OTsgJ2RlZmluZWQoYW5kKScKLS8vIGhhcyB0byBiZSBjaGVja2VkIGluIGEgc2VwYXJhdGUgY29uZGl0aW9uLCBvdGhlcndpc2UgR0NDIGNvbXBsYWlucyAKLS8vIGFib3V0ICdhbmQnIGJlaW5nIGFuIGFsdGVybmF0aXZlIHRva2VuCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgCi0jaWZuZGVmIF9fR0NDWE1MX18KLSNpZiBkZWZpbmVkKGFuZCkgCi0jICAgcHJhZ21hIHB1c2hfbWFjcm8oImFuZCIpCi0jICAgdW5kZWYgYW5kCi0jICAgZGVmaW5lIGFuZCh4KQotI2VuZGlmCi0jZW5kaWYKLSNlbmRpZgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIGFuZC5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKQotI2lmbmRlZiBfX0dDQ1hNTF9fCi0jaWYgZGVmaW5lZChhbmQpIAotIyAgIHByYWdtYSBwb3BfbWFjcm8oImFuZCIpCi0jZW5kaWYKLSNlbmRpZgotI2VuZGlmCi0KLSNlbHNlCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X09QX05BTUUgYW5kXwotIyAgIGRlZmluZSBBVVg3NzgwNzZfT1BfVkFMVUUxIGZhbHNlCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9PUF9WQUxVRTIgdHJ1ZQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xvZ2ljYWxfb3AuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BTkRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hcHBseS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hcHBseS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmZDY2MTIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXBwbHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjI5ICswLDAgQEAKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0lTX0lURVJBVElORykKLQotLy8vLy8gaGVhZGVyIGJvZHkKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVBQTFlfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BUFBMWV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGFwcGx5LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXBwbHlfZndkLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXBwbHlfd3JhcC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3BsYWNlaG9sZGVycy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xhbWJkYS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmEuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgYXBwbHkuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpbWl0cy9hcml0eS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3BhcmFtcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2RlZmF1bHRfcGFyYW1zLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFydGlhbF9zcGVjX3BhcmFtcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2VudW0uaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9sYW1iZGEuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9kdHAuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL250dHBfZGVjbC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2V0aS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL21zdmMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb21tYV9pZi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2luYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotLy8gbG9jYWwgbWFjcm9zLCAjdW5kZWYtaW5lZCBhdCB0aGUgZW5kIG9mIHRoZSBoZWFkZXIKLSMgICBkZWZpbmUgQVVYNzc4MDc2X0FQUExZX1BBUkFNUyhwYXJhbSkgXAotICAgIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoIFwKLSAgICAgICAgICBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZIFwKLSAgICAgICAgLCBwYXJhbSBcCi0gICAgICAgICkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfQVBQTFlfREVGX1BBUkFNUyhwYXJhbSwgdmFsdWUpIFwKLSAgICBORE5CT09TVF9NUExfUFBfREVGQVVMVF9QQVJBTVMoIFwKLSAgICAgICAgICBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZIFwKLSAgICAgICAgLCBwYXJhbSBcCi0gICAgICAgICwgdmFsdWUgXAotICAgICAgICApIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0FQUExZX05fUEFSQU1TKG4sIHBhcmFtKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhuLCBwYXJhbSkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfQVBQTFlfTl9DT01NQV9QQVJBTVMobiwgcGFyYW0pIFwKLSAgICBORE5CT09TVF9QUF9DT01NQV9JRihuKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhuLCBwYXJhbSkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfQVBQTFlfTl9QQVJUSUFMX1NQRUNfUEFSQU1TKG4sIHBhcmFtLCBkZWYpIFwKLSAgICBORE5CT09TVF9QUF9DT01NQV9JRihuKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX1BBUlRJQUxfU1BFQ19QQVJBTVMobiwgcGFyYW0sIGRlZikgXAotICAgIC8qKi8KLSAgICAKLSMgICBkZWZpbmUgQVVYNzc4MDc2X0FQUExZX05fU1BFQ19QQVJBTVMobiwgcGFyYW0pIFwKLSAgICBORE5CT09TVF9NUExfUFBfRU5VTShORE5CT09TVF9QUF9JTkMobiksIHBhcmFtKSBcCi0gICAgLyoqLwotCi0KLSNkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywoMCwgTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSwgPG5kbmJvb3N0L21wbC9hcHBseS5ocHA+KSkKLSNpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi0jICAgaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19BUFBMWV9URU1QTEFURSkKLS8vIHJlYWwgQysrIHZlcnNpb24gaXMgYWxyZWFkeSB0YWtlbiBjYXJlIG9mCi0jICAgaWYgZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotCi1uYW1lc3BhY2UgYXV4IHsKLS8vIGFwcGx5X2NvdW50X2FyZ3MKLSNkZWZpbmUgQVVYNzc4MDc2X0NPVU5UX0FSR1NfUFJFRklYIGFwcGx5Ci0jZGVmaW5lIEFVWDc3ODA3Nl9DT1VOVF9BUkdTX0RFRkFVTFQgbmEKLSNkZWZpbmUgQVVYNzc4MDc2X0NPVU5UX0FSR1NfQVJJVFkgTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvdW50X2FyZ3MuaHBwPgotfQotCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgQVVYNzc4MDc2X0FQUExZX0RFRl9QQVJBTVModHlwZW5hbWUgVCwgbmEpCi0gICAgPgotc3RydWN0IGFwcGx5Ci0gICAgOiBhdXg6OmFwcGx5X2Nob29zZXI8IAotICAgICAgICAgIGF1eDo6YXBwbHlfY291bnRfYXJnczwgQVVYNzc4MDc2X0FQUExZX1BBUkFNUyhUKSA+Ojp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBGLCBBVVg3NzgwNzZfQVBQTFlfUEFSQU1TKFQpID46OnR5cGUKLXsKLX07Ci0KLSMgICBlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0jICAgZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19BUFBMWV9URU1QTEFURQotCi0jICAgdW5kZWYgQVVYNzc4MDc2X0FQUExZX05fU1BFQ19QQVJBTVMKLSMgICB1bmRlZiBBVVg3NzgwNzZfQVBQTFlfTl9QQVJUSUFMX1NQRUNfUEFSQU1TCi0jICAgdW5kZWYgQVVYNzc4MDc2X0FQUExZX05fQ09NTUFfUEFSQU1TCi0jICAgdW5kZWYgQVVYNzc4MDc2X0FQUExZX05fUEFSQU1TCi0jICAgdW5kZWYgQVVYNzc4MDc2X0FQUExZX0RFRl9QQVJBTVMKLSMgICB1bmRlZiBBVVg3NzgwNzZfQVBQTFlfUEFSQU1TCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FQUExZX0hQUF9JTkNMVURFRAotCi0vLy8vLyBpdGVyYXRpb24sIGRlcHRoID09IDEKLQotLy8gRm9yIGdjYyA0LjQgY29tcGF0YWJpbGl0eSwgd2UgbXVzdCBpbmNsdWRlIHRoZQotLy8gTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIIHRlc3QgaW5zaWRlIGFuICNlbHNlIGNsYXVzZS4KLSNlbHNlIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwotI2lmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpID09IDEKLQotIyAgIGRlZmluZSBpXyBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGIEFVWDc3ODA3Nl9BUFBMWV9OX0NPTU1BX1BBUkFNUyhpXywgdHlwZW5hbWUgVCkKLSAgICA+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKGFwcGx5LGlfKQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSAgICA6IE5ETkJPT1NUX1BQX0NBVChhcHBseV93cmFwLGlfKTwgCi0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgIEFVWDc3ODA3Nl9BUFBMWV9OX0NPTU1BX1BBUkFNUyhpXywgVCkKLSAgICAgICAgPgotewotI2Vsc2UKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIE5ETkJPT1NUX1BQX0NBVChhcHBseV93cmFwLGlfKTwgCi0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgIEFVWDc3ODA3Nl9BUFBMWV9OX0NPTU1BX1BBUkFNUyhpXywgVCkKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotI2VuZGlmCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICBORE5CT09TVF9QUF9JTkMoaV8pCi0gICAgICAgICwgTkROQk9PU1RfUFBfQ0FUKGFwcGx5LGlfKQotICAgICAgICAsIChGIEFVWDc3ODA3Nl9BUFBMWV9OX0NPTU1BX1BBUkFNUyhpXyxUKSkKLSAgICAgICAgKQotfTsKLQotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX01TVkNfRVRJX0JVRykKLS8vLyB3b3JrYXJvdW5kIGZvciBFVEkgYnVnCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKGFwcGx5LGlfKTxBVVg3NzgwNzZfQVBQTFlfTl9TUEVDX1BBUkFNUyhpXywgaW50KT4KLXsKLSAgICB0eXBlZGVmIGludCB0eXBlOwotfTsKLSNlbmRpZgotCi0jICAgaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19BUFBMWV9URU1QTEFURSkKLSMgICBpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotCi0jaWYgaV8gPT0gTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiBBVVg3NzgwNzZfQVBQTFlfTl9DT01NQV9QQVJBTVMoaV8sIHR5cGVuYW1lIFQpCi0gICAgPgotc3RydWN0IGFwcGx5Ci0gICAgOiBORE5CT09TVF9QUF9DQVQoYXBwbHksaV8pPCBGIEFVWDc3ODA3Nl9BUFBMWV9OX0NPTU1BX1BBUkFNUyhpXywgVCkgPgotewotfTsKLSNlbHNlCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYgQVVYNzc4MDc2X0FQUExZX05fQ09NTUFfUEFSQU1TKGlfLCB0eXBlbmFtZSBUKQotICAgID4KLXN0cnVjdCBhcHBseTwgRiBBVVg3NzgwNzZfQVBQTFlfTl9QQVJUSUFMX1NQRUNfUEFSQU1TKGlfLCBULCBuYSkgPgotICAgIDogTkROQk9PU1RfUFBfQ0FUKGFwcGx5LGlfKTwgRiBBVVg3NzgwNzZfQVBQTFlfTl9DT01NQV9QQVJBTVMoaV8sIFQpID4KLXsKLX07Ci0jZW5kaWYKLQotIyAgIGVsc2UgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19BUFBMWV9URU1QTEFURSkKLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXBwbHlfY2hvb3NlcjxpXz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGLCBBVVg3NzgwNzZfQVBQTFlfUEFSQU1TKHR5cGVuYW1lIFQpCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQoYXBwbHksaV8pPAotICAgICAgICAgICAgICBGIEFVWDc3ODA3Nl9BUFBMWV9OX0NPTU1BX1BBUkFNUyhpXywgVCkKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0jZW5kaWYKLQotIyAgIGVuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSMgICBlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX0FQUExZX1RFTVBMQVRFCi0KLSMgICB1bmRlZiBpXwotCi0jZW5kaWYgLy8gTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkKLSNlbmRpZiAvLyBORE5CT09TVF9QUF9JU19JVEVSQVRJTkcKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2FwcGx5X2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hcHBseV9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNDc3ZTA2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2FwcGx5X2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDcgKzAsMCBAQAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HKQotCi0vLy8vLyBoZWFkZXIgYm9keQotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BUFBMWV9GV0RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BUFBMWV9GV0RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBhcHBseV9md2QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgYXBwbHlfZndkLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saW1pdHMvYXJpdHkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9wYXJhbXMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9kZWZhdWx0X3BhcmFtcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL250dHBfZGVjbC5ocHA+Ci0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29tbWFfaWYuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLQotLy8gYWd1cnQsIDE1L2phbi8wMjogdG9wLWxldmVsICdhcHBseScgdGVtcGxhdGUgZ2l2ZXMgYW4gSUNFIG9uIE1TVkMKLS8vIChmb3Iga25vd24gcmVhc29ucykKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19OT19BUFBMWV9URU1QTEFURQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0vLyBsb2NhbCBtYWNybywgI3VuZGVmLWluZWQgYXQgdGhlIGVuZCBvZiB0aGUgaGVhZGVyCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9BUFBMWV9ERUZfUEFSQU1TKHBhcmFtLCB2YWx1ZSkgXAotICAgIE5ETkJPT1NUX01QTF9QUF9ERUZBVUxUX1BBUkFNUyggXAotICAgICAgICAgIE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFkgXAotICAgICAgICAsIHBhcmFtIFwKLSAgICAgICAgLCB2YWx1ZSBcCi0gICAgICAgICkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfQVBQTFlfTl9DT01NQV9QQVJBTVMobiwgcGFyYW0pIFwKLSAgICBORE5CT09TVF9QUF9DT01NQV9JRihuKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhuLCBwYXJhbSkgXAotICAgIC8qKi8KLQotIyAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fQVBQTFlfVEVNUExBVEUpCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCBBVVg3NzgwNzZfQVBQTFlfREVGX1BBUkFNUyh0eXBlbmFtZSBULCBuYSkKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk7Ci0jZWxzZQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgTkROQk9PU1RfQVVYX05UVFBfREVDTChpbnQsIGFyaXR5XykgPiBzdHJ1Y3QgYXBwbHlfY2hvb3NlcjsKLX0KLSNlbmRpZgotCi0jICAgZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19BUFBMWV9URU1QTEFURQotCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDAsIE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFksIDxuZG5ib29zdC9tcGwvYXBwbHlfZndkLmhwcD4pKQotI2luY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9BUFBMWV9OX0NPTU1BX1BBUkFNUwotIyAgIHVuZGVmIEFVWDc3ODA3Nl9BUFBMWV9ERUZfUEFSQU1TCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FQUExZX0ZXRF9IUFBfSU5DTFVERUQKLQotLy8vLy8gaXRlcmF0aW9uCi0KLSNlbHNlCi0jZGVmaW5lIGlfIE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigxKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYgQVVYNzc4MDc2X0FQUExZX05fQ09NTUFfUEFSQU1TKGlfLCB0eXBlbmFtZSBUKQotICAgID4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQoYXBwbHksaV8pOwotCi0jdW5kZWYgaV8KLSNlbmRpZiAvLyBORE5CT09TVF9QUF9JU19JVEVSQVRJTkcKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2FwcGx5X3dyYXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXBwbHlfd3JhcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlN2MwNDIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXBwbHlfd3JhcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMzQgKzAsMCBAQAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HKQotCi0vLy8vLyBoZWFkZXIgYm9keQotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BUFBMWV9XUkFQX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVBQTFlfV1JBUF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA4Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGFwcGx5X3dyYXAuaHBwIDQ5MjcyIDIwMDgtMTAtMTEgMDY6NTA6NDZaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzo1MDo0NiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI3MiAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2FyaXR5LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9oYXNfYXBwbHkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9tc3ZjX25ldmVyX3RydWUuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBhcHBseV93cmFwLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saW1pdHMvYXJpdHkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9wYXJhbXMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9lbnVtLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvYWRkLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvYmNjLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2R0cC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2V0aS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL21zdmMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb21tYV9pZi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvYW5kLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaW5jLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLS8vIGxvY2FsIG1hY3JvcywgI3VuZGVmLWluZWQgYXQgdGhlIGVuZCBvZiB0aGUgaGVhZGVyCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9BUFBMWV9XUkFQX1BBUkFNUyhuLCBwYXJhbSkgXAotICAgIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMobiwgcGFyYW0pIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0FQUExZX1dSQVBfU1BFQ19QQVJBTVMobiwgcGFyYW0pIFwKLSAgICBORE5CT09TVF9NUExfUFBfRU5VTShORE5CT09TVF9QUF9JTkMobiksIHBhcmFtKSBcCi0gICAgLyoqLwotCi0KLSNkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywoMCwgTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSwgPG5kbmJvb3N0L21wbC9hcHBseV93cmFwLmhwcD4pKQotI2luY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9BUFBMWV9XUkFQX1NQRUNfUEFSQU1TCi0jICAgdW5kZWYgQVVYNzc4MDc2X0FQUExZX1dSQVBfUEFSQU1TCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FQUExZX1dSQVBfSFBQX0lOQ0xVREVECi0KLS8vLy8vIGl0ZXJhdGlvbiwgZGVwdGggPT0gMQotCi0vLyBGb3IgZ2NjIDQuNCBjb21wYXRhYmlsaXR5LCB3ZSBtdXN0IGluY2x1ZGUgdGhlCi0vLyBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEggdGVzdCBpbnNpZGUgYW4gI2Vsc2UgY2xhdXNlLgotI2Vsc2UgLy8gTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCi0jaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkgPT0gMQotCi0jICAgZGVmaW5lIGlfIE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigxKQotCi0jICAgaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0vLyBNU1ZDIHZlcnNpb24KLQotI2RlZmluZSBBVVg3NzgwNzZfTVNWQ19EVFdfTkFNRSBORE5CT09TVF9QUF9DQVQobXN2Y19hcHBseSxpXykKLSNkZWZpbmUgQVVYNzc4MDc2X01TVkNfRFRXX09SSUdJTkFMX05BTUUgYXBwbHkKLSNkZWZpbmUgQVVYNzc4MDc2X01TVkNfRFRXX0FSSVRZIGlfCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbXN2Y19kdHcuaHBwPgotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYgTkROQk9PU1RfUFBfQ09NTUFfSUYoaV8pIEFVWDc3ODA3Nl9BUFBMWV9XUkFQX1BBUkFNUyhpXywgdHlwZW5hbWUgVCkKLSAgICA+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKGFwcGx5X3dyYXAsaV8pCi17Ci0gICAgLy8gTWV0YWZ1bmN0aW9uIGZvcndhcmRpbmcgY29uZnVzZXMgdmM2Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBORE5CT09TVF9QUF9DQVQobXN2Y19hcHBseSxpXyk8Rj46OnRlbXBsYXRlIHJlc3VsdF88Ci0gICAgICAgICAgQVVYNzc4MDc2X0FQUExZX1dSQVBfUEFSQU1TKGlfLCBUKQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi0jICAgZWxpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfQlJPS0VOX0RFRkFVTFRfUEFSQU1FVEVSU19JTl9ORVNURURfVEVNUExBVEVTKQotLy8gTVdDVy9Cb3JsYW5kIHZlcnNpb24KLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgRiBORE5CT09TVF9QUF9DT01NQV9JRihpXykgQVVYNzc4MDc2X0FQUExZX1dSQVBfUEFSQU1TKGlfLCB0eXBlbmFtZSBUKQotICAgID4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQoYXBwbHlfd3JhcF9pbXBsLGlfKTsKLQotI2RlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzIgXAotICAgICgzLCgwLCBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZIC0gaV8sIDxuZG5ib29zdC9tcGwvYXBwbHlfd3JhcC5ocHA+KSkKLSNpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYgTkROQk9PU1RfUFBfQ09NTUFfSUYoaV8pIEFVWDc3ODA3Nl9BUFBMWV9XUkFQX1BBUkFNUyhpXywgdHlwZW5hbWUgVCkKLSAgICA+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKGFwcGx5X3dyYXAsaV8pCi0gICAgOiBORE5CT09TVF9QUF9DQVQoYXBwbHlfd3JhcF9pbXBsLGlfKTwKLSAgICAgICAgICA6Om5kbmJvb3N0OjptcGw6OmF1eDo6YXJpdHk8RixpXz46OnZhbHVlCi0gICAgICAgICwgRgotICAgICAgICBORE5CT09TVF9QUF9DT01NQV9JRihpXykgQVVYNzc4MDc2X0FQUExZX1dSQVBfUEFSQU1TKGlfLCBUKQotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0jICAgZWxzZQotLy8gSVNPOTggQysrLCB3aXRoIG1pbm9yIGNvbmNlc3Npb24gdG8gdmM3Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiBORE5CT09TVF9QUF9DT01NQV9JRihpXykgQVVYNzc4MDc2X0FQUExZX1dSQVBfUEFSQU1TKGlfLCB0eXBlbmFtZSBUKQotI2lmIGlfID09IDAKLSAgICAsIHR5cGVuYW1lIGhhc19hcHBseV8gPSB0eXBlbmFtZSBhdXg6Omhhc19hcHBseTxGPjo6dHlwZQotI2VuZGlmCi0gICAgPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChhcHBseV93cmFwLGlfKQotLy8gbWV0YWZ1bmN0aW9uIGZvcndhcmRpbmcgY29uZnVzZXMgTVNWQyA3LjAKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA9PSAxMzAwKQotICAgIDogRjo6dGVtcGxhdGUgYXBwbHk8IEFVWDc3ODA3Nl9BUFBMWV9XUkFQX1BBUkFNUyhpXywgVCkgPgotewotI2Vsc2UKLXsgICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgIEFVWDc3ODA3Nl9BUFBMWV9XUkFQX1BBUkFNUyhpXywgVCkKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotI2VuZGlmCi19OwotCi0jaWYgaV8gPT0gMCAmJiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotdGVtcGxhdGU8IHR5cGVuYW1lIEYgPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChhcHBseV93cmFwLGlfKTxGLHRydWVfPgotICAgIDogRjo6YXBwbHkKLXsKLX07Ci0jZW5kaWYKLQotIyAgIGVuZGlmIC8vIHdvcmthcm91bmRzCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTVNWQ19FVElfQlVHKQotLy8vIHdvcmthcm91bmQgZm9yIEVUSSBidWcKLXRlbXBsYXRlPD4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQoYXBwbHlfd3JhcCxpXyk8QVVYNzc4MDc2X0FQUExZX1dSQVBfU1BFQ19QQVJBTVMoaV8sIGludCk+Ci17Ci0gICAgdHlwZWRlZiBpbnQgdHlwZTsKLX07Ci0jZW5kaWYKLQotIyAgIHVuZGVmIGlfCi0KLS8vLy8vIGl0ZXJhdGlvbiwgZGVwdGggPT0gMgotCi0jZWxpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKSA9PSAyCi0KLSMgICBkZWZpbmUgal8gTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OKDIpCi0KLSNpZiBpXyA9PSAwICYmIGpfID09IDAgXAotICAgICYmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19CQ0M1OTBfV09SS0FST1VORFMpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0hBU19BUFBMWSkKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIGJvb2wgRl9oYXNfYXBwbHkgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDBfYmNiIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PCBuYSA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMF9iY2I8IEYsIHRydWUgPiB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjphcHBseSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGIE5ETkJPT1NUX1BQX0NPTU1BX0lGKGlfKSBBVVg3NzgwNzZfQVBQTFlfV1JBUF9QQVJBTVMoaV8sIHR5cGVuYW1lIFQpCi0gICAgPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChhcHBseV93cmFwX2ltcGwsaV8pPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9QUF9BREQoaV8sIGpfKQotICAgICAgICAsIEYKLSAgICAgICAgTkROQk9PU1RfUFBfQ09NTUFfSUYoaV8pIEFVWDc3ODA3Nl9BUFBMWV9XUkFQX1BBUkFNUyhpXywgVCkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgYXBwbHlfd3JhcF9pbXBsMF9iY2I8IEYsIGF1eDo6aGFzX2FwcGx5PCBGID46OnZhbHVlID46OnR5cGUgdHlwZTsKLX07Ci0jZWxzZQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYgTkROQk9PU1RfUFBfQ09NTUFfSUYoaV8pIEFVWDc3ODA3Nl9BUFBMWV9XUkFQX1BBUkFNUyhpXywgdHlwZW5hbWUgVCkKLSAgICA+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKGFwcGx5X3dyYXBfaW1wbCxpXyk8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX1BQX0FERChpXywgal8pCi0gICAgICAgICwgRgotICAgICAgICBORE5CT09TVF9QUF9DT01NQV9JRihpXykgQVVYNzc4MDc2X0FQUExZX1dSQVBfUEFSQU1TKGlfLCBUKQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBBVVg3NzgwNzZfQVBQTFlfV1JBUF9QQVJBTVMoaV8sIFQpCi0jaWYgaV8gPT0gMCAmJiBqXyA9PSAwCi0vLy8gc2luY2UgdGhlIGRlZmF1bHRzIGFyZSAibG9zdCIsIHdlIGhhdmUgdG8gcGFzcyAqc29tZXRoaW5nKiBldmVuIGZvciBudWxsYXJ5Ci0vLy8gbWV0YWZ1bmN0aW9uIGNsYXNzZXMKLSAgICAgICAgbmEKLSNlbHNlCi0gICAgICAgIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0FORChpXywgal8pKSBORE5CT09TVF9NUExfUFBfRU5VTShqXywgbmEpCi0jZW5kaWYKLSAgICAgICAgPiB0eXBlOwotfTsKLQotI2VuZGlmCi0KLSMgICB1bmRlZiBqXwotCi0jZW5kaWYgLy8gTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkKLSNlbmRpZiAvLyBORE5CT09TVF9QUF9JU19JVEVSQVRJTkcKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2FyZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hcmcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDAxNjRhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2FyZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzEgKzAsMCBAQAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HKQotCi0vLy8vLyBoZWFkZXIgYm9keQotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BUkdfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BUkdfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxLTIwMDIKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBhcmcuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hcmdfZndkLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfYXNzZXJ0LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9hcml0eV9zcGVjLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9hcmdfdHlwZWRlZi5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9zdGF0aWNfY29uc3RhbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIGFyZy5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGltaXRzL2FyaXR5LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZGVmYXVsdF9wYXJhbXMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9wYXJhbXMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9sYW1iZGEuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9kdHAuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL250dHBfZGVjbC5ocHA+Ci0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2luYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLQotLy8gbG9jYWwgbWFjcm8sICN1bmRlZi1pbmVkIGF0IHRoZSBlbmQgb2YgdGhlIGhlYWRlcgotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fREVGQVVMVF9QQVJBTUVURVJTX0lOX05FU1RFRF9URU1QTEFURVMpCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9BUkdfTl9ERUZBVUxUX1BBUkFNUyhwYXJhbSx2YWx1ZSkgXAotICAgIE5ETkJPT1NUX01QTF9QUF9ERUZBVUxUX1BBUkFNUyggXAotICAgICAgICAgIE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFkgXAotICAgICAgICAsIHBhcmFtIFwKLSAgICAgICAgLCB2YWx1ZSBcCi0gICAgICAgICkgXAotICAgIC8qKi8KLSNlbHNlCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9BUkdfTl9ERUZBVUxUX1BBUkFNUyhwYXJhbSx2YWx1ZSkgXAotICAgIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoIFwKLSAgICAgICAgICBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZIFwKLSAgICAgICAgLCBwYXJhbSBcCi0gICAgICAgICkgXAotICAgIC8qKi8KLSNlbmRpZgotCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDAsIE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFksIDxuZG5ib29zdC9tcGwvYXJnLmhwcD4pKQotI2luY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9BUkdfTl9ERUZBVUxUX1BBUkFNUwotCi1ORE5CT09TVF9NUExfQVVYX05PTlRZUEVfQVJJVFlfU1BFQygxLGludCxhcmcpCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FSR19IUFBfSU5DTFVERUQKLQotLy8vLy8gaXRlcmF0aW9uCi0KLSNlbHNlCi0jZGVmaW5lIGlfIE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigxKQotCi0jaWYgaV8gPiAwCi0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzxpXz4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9IGlfKTsKLSAgICB0eXBlZGVmIGFyZzxORE5CT09TVF9QUF9JTkMoaV8pPiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgQVVYNzc4MDc2X0FSR19OX0RFRkFVTFRfUEFSQU1TKHR5cGVuYW1lIFUsIG5hKQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChVLGlfKSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLSNlbHNlCi0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwtMT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9IC0xKTsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIEFVWDc3ODA3Nl9BUkdfTl9ERUZBVUxUX1BBUkFNUyh0eXBlbmFtZSBVLCBuYSkKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLSNlbmRpZiAvLyBpXyA+IDAKLQotI3VuZGVmIGlfCi0jZW5kaWYgLy8gTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hcmdfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2FyZ19md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZGM4ZWUzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2FyZ19md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BUkdfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVJHX0ZXRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEtMjAwMgotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGFyZ19md2QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9hZGxfYmFycmllci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbnR0cF9kZWNsLmhwcD4KLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCBOKSA+IHN0cnVjdCBhcmc7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX0RFQ0woYXJnKQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FSR19GV0RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hc3NlcnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXNzZXJ0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjNkNWRlYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hc3NlcnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDM4ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVNTRVJUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVNTRVJUX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDYKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogYXNzZXJ0LmhwcCA4NDQ0MiAyMDEzLTA1LTIzIDE0OjM4OjIyWiBzdGV2ZW5fd2F0YW5hYmUgJAotLy8gJERhdGU6IDIwMTMtMDUtMjMgMDc6Mzg6MjIgLTA3MDAgKFRodSwgMjMgTWF5IDIwMTMpICQKLS8vICRSZXZpc2lvbjogODQ0NDIgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL25vdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdmFsdWVfd2tuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmVzdGVkX3R5cGVfd2tuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8veWVzX25vLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vYWRsX2JhcnJpZXIuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL250dHAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9kdHAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9nY2MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9tc3ZjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvc3RhdGljX2NvbnN0YW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvcHBfY291bnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAvLyBtYWtlIHN1cmUgJ3NpemVfdCcgaXMgcGxhY2VkIGludG8gJ3N0ZCcKLSNpbmNsdWRlIDxjc3RkZGVmPgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA9PSAxNzAwKQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jZW5kaWYKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg2MTApKSBcCi0gICAgfHwgKE5ETkJPT1NUX01QTF9DRkdfR0NDICE9IDApIFwKLSAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fSUJNQ1BQX18sIDw9IDYwMCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19BU1NFUlRfVVNFX1JFTEFUSU9OX05BTUVTCi0jZW5kaWYKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgPCAweDMyMDIpIFwKLSAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fRURHX1ZFUlNJT05fXywgPD0gMjM4KSBcCi0gICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDYxMCkpIFwKLSAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fRE1DX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDg0MCkpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfQVNTRVJUX0JST0tFTl9QT0lOVEVSX1RPX1BPSU5URVJfVE9fTUVNQkVSCi0jZW5kaWYKLQotLy8gYWd1cnQsIDEwL25vdi8wNjogdXNlIGVudW1zIGZvciBCb3JsYW5kICh3aGljaCBjYW5ub3QgY29wZSB3aXRoIHN0YXRpYyBjb25zdGFudHMpIAotLy8gYW5kIEdDQyAod2hpY2ggaXNzdWVzICJ1bnVzZWQgdmFyaWFibGUiIHdhcm5pbmdzIHdoZW4gc3RhdGljIGNvbnN0YW50cyBhcmUgdXNlZCAKLS8vIGF0IGEgZnVuY3Rpb24gc2NvcGUpCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDYxMCkpIFwKLSAgICB8fCAoTkROQk9PU1RfTVBMX0NGR19HQ0MgIT0gMCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfQ09OU1RBTlQoVCwgZXhwcikgZW51bSB7IGV4cHIgfQotI2Vsc2UKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfQ09OU1RBTlQoVCwgZXhwcikgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIGV4cHIpCi0jZW5kaWYKLQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi0KLXN0cnVjdCBmYWlsZWQge307Ci0KLS8vIGFndXJ0LCAyNC9hdWcvMDQ6IE1TVkMgNy4xIHdvcmthcm91bmQgaGVyZSBhbmQgYmVsb3c6IHJldHVybi9hY2NlcHQgCi0vLyAnYXNzZXJ0PGZhbHNlPicgYnkgcmVmZXJlbmNlOyBjYW4ndCBhcHBseSBpdCB1bmNvbmRpdGlvbmFsbHkgLS0gYXBwYXJlbnRseSBpdAotLy8gZGVncmFkZXMgdGhlIHF1YWxpdHkgb2YgR0NDIGRpYWdub3N0aWNzCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA9PSAxMzEwKQotIyAgIGRlZmluZSBBVVg3NzgwNzZfQVNTRVJUX0FSRyh4KSB4JgotI2Vsc2UKLSMgICBkZWZpbmUgQVVYNzc4MDc2X0FTU0VSVF9BUkcoeCkgeAotI2VuZGlmCi0KLXRlbXBsYXRlPCBib29sIEMgPiAgc3RydWN0IGFzc2VydCAgICAgICAgeyB0eXBlZGVmIHZvaWQqIHR5cGU7IH07Ci10ZW1wbGF0ZTw+ICAgICAgICAgIHN0cnVjdCBhc3NlcnQ8ZmFsc2U+IHsgdHlwZWRlZiBBVVg3NzgwNzZfQVNTRVJUX0FSRyhhc3NlcnQpIHR5cGU7IH07Ci0KLXRlbXBsYXRlPCBib29sIEMgPgotaW50IGFzc2VydGlvbl9mYWlsZWQoIHR5cGVuYW1lIGFzc2VydDxDPjo6dHlwZSApOwotCi10ZW1wbGF0ZTwgYm9vbCBDID4KLXN0cnVjdCBhc3NlcnRpb24KLXsKLSAgICBzdGF0aWMgaW50IGZhaWxlZCggYXNzZXJ0PGZhbHNlPiApOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFzc2VydGlvbjx0cnVlPgotewotICAgIHN0YXRpYyBpbnQgZmFpbGVkKCB2b2lkKiApOwotfTsKLQotc3RydWN0IGFzc2VydF8KLXsKLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0RFRkFVTFRfUEFSQU1FVEVSU19JTl9ORVNURURfVEVNUExBVEVTKQotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYSwgdHlwZW5hbWUgVDQgPSBuYSA+IHN0cnVjdCB0eXBlcyB7fTsKLSNlbmRpZgotICAgIHN0YXRpYyBhc3NlcnRfIGNvbnN0IGFyZzsKLSAgICBlbnVtIHJlbGF0aW9ucyB7IGVxdWFsID0gMSwgbm90X2VxdWFsLCBncmVhdGVyLCBncmVhdGVyX2VxdWFsLCBsZXNzLCBsZXNzX2VxdWFsIH07Ci19OwotCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0FTU0VSVF9VU0VfUkVMQVRJT05fTkFNRVMpCi0KLWJvb2wgb3BlcmF0b3I9PSggZmFpbGVkLCBmYWlsZWQgKTsKLWJvb2wgb3BlcmF0b3IhPSggZmFpbGVkLCBmYWlsZWQgKTsKLWJvb2wgb3BlcmF0b3I+KCBmYWlsZWQsIGZhaWxlZCApOwotYm9vbCBvcGVyYXRvcj49KCBmYWlsZWQsIGZhaWxlZCApOwotYm9vbCBvcGVyYXRvcjwoIGZhaWxlZCwgZmFpbGVkICk7Ci1ib29sIG9wZXJhdG9yPD0oIGZhaWxlZCwgZmFpbGVkICk7Ci0KLSNpZiBkZWZpbmVkKF9fRURHX1ZFUlNJT05fXykKLXRlbXBsYXRlPCBib29sICgqKShmYWlsZWQsIGZhaWxlZCksIGxvbmcgeCwgbG9uZyB5ID4gc3RydWN0IGFzc2VydF9yZWxhdGlvbiB7fTsKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfUkVMQVRJT04oeCwgeSwgcikgYXNzZXJ0X3JlbGF0aW9uPHIseCx5PgotI2Vsc2UKLXRlbXBsYXRlPCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChsb25nLCB4KSwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0wobG9uZywgeSksIGJvb2wgKCopKGZhaWxlZCwgZmFpbGVkKSA+IAotc3RydWN0IGFzc2VydF9yZWxhdGlvbiB7fTsKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfUkVMQVRJT04oeCwgeSwgcikgYXNzZXJ0X3JlbGF0aW9uPHgseSxyPgotI2VuZGlmCi0KLSNlbHNlIC8vIE5ETkJPT1NUX01QTF9DRkdfQVNTRVJUX1VTRV9SRUxBVElPTl9OQU1FUwotCi1uZG5ib29zdDo6bXBsOjphdXg6OndlaWdodGVkX3RhZzwxPjo6dHlwZSBvcGVyYXRvcj09KCBhc3NlcnRfLCBhc3NlcnRfICk7Ci1uZG5ib29zdDo6bXBsOjphdXg6OndlaWdodGVkX3RhZzwyPjo6dHlwZSBvcGVyYXRvciE9KCBhc3NlcnRfLCBhc3NlcnRfICk7Ci1uZG5ib29zdDo6bXBsOjphdXg6OndlaWdodGVkX3RhZzwzPjo6dHlwZSBvcGVyYXRvcj4oICBhc3NlcnRfLCBhc3NlcnRfICk7Ci1uZG5ib29zdDo6bXBsOjphdXg6OndlaWdodGVkX3RhZzw0Pjo6dHlwZSBvcGVyYXRvcj49KCBhc3NlcnRfLCBhc3NlcnRfICk7Ci1uZG5ib29zdDo6bXBsOjphdXg6OndlaWdodGVkX3RhZzw1Pjo6dHlwZSBvcGVyYXRvcjwoIGFzc2VydF8sIGFzc2VydF8gKTsKLW5kbmJvb3N0OjptcGw6OmF1eDo6d2VpZ2h0ZWRfdGFnPDY+Ojp0eXBlIG9wZXJhdG9yPD0oIGFzc2VydF8sIGFzc2VydF8gKTsKLQotdGVtcGxhdGU8IGFzc2VydF86OnJlbGF0aW9ucyByLCBsb25nIHgsIGxvbmcgeSA+IHN0cnVjdCBhc3NlcnRfcmVsYXRpb24ge307Ci0KLSNlbmRpZiAKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPj0gMTcwMCkKLQotdGVtcGxhdGU8Y2xhc3MgUHJlZD4KLXN0cnVjdCBleHRyYWN0X2Fzc2VydF9wcmVkOwotCi10ZW1wbGF0ZTxjbGFzcyBQcmVkPgotc3RydWN0IGV4dHJhY3RfYXNzZXJ0X3ByZWQ8dm9pZChQcmVkKT4geyB0eXBlZGVmIFByZWQgdHlwZTsgfTsKLQotdGVtcGxhdGU8Y2xhc3MgUHJlZD4KLXN0cnVjdCBldmFsX2Fzc2VydCB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBleHRyYWN0X2Fzc2VydF9wcmVkPFByZWQ+Ojp0eXBlIFA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBQOjp0eXBlIHBfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIDo6bmRuYm9vc3Q6Om1wbDo6aWZfYzxwX3R5cGU6OnZhbHVlLAotICAgICAgICBBVVg3NzgwNzZfQVNTRVJUX0FSRyhhc3NlcnQ8ZmFsc2U+KSwKLSAgICAgICAgZmFpbGVkICoqKioqKioqKioqKiBQOjoqKioqKioqKioqKioKLSAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBQcmVkPgotc3RydWN0IGV2YWxfYXNzZXJ0X25vdCB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBleHRyYWN0X2Fzc2VydF9wcmVkPFByZWQ+Ojp0eXBlIFA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBQOjp0eXBlIHBfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIDo6bmRuYm9vc3Q6Om1wbDo6aWZfYzwhcF90eXBlOjp2YWx1ZSwKLSAgICAgICAgQVVYNzc4MDc2X0FTU0VSVF9BUkcoYXNzZXJ0PGZhbHNlPiksCi0gICAgICAgIGZhaWxlZCAqKioqKioqKioqKiogOjpuZG5ib29zdDo6bXBsOjpub3RfPFA+OjoqKioqKioqKioqKioKLSAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1UIG1ha2VfYXNzZXJ0X2FyZygpOwotCi0jZWxpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0FTU0VSVF9CUk9LRU5fUE9JTlRFUl9UT19QT0lOVEVSX1RPX01FTUJFUikKLQotdGVtcGxhdGU8IGJvb2wgPiBzdHJ1Y3QgYXNzZXJ0X2FyZ19wcmVkX2ltcGwgeyB0eXBlZGVmIGludCB0eXBlOyB9OwotdGVtcGxhdGU8PiBzdHJ1Y3QgYXNzZXJ0X2FyZ19wcmVkX2ltcGw8dHJ1ZT4geyB0eXBlZGVmIHZvaWQqIHR5cGU7IH07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBQID4gc3RydWN0IGFzc2VydF9hcmdfcHJlZAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgUDo6dHlwZSBwX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhc3NlcnRfYXJnX3ByZWRfaW1wbDwgcF90eXBlOjp2YWx1ZSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgUCA+IHN0cnVjdCBhc3NlcnRfYXJnX3ByZWRfbm90Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBQOjp0eXBlIHBfdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9DT05TVEFOVCggYm9vbCwgcCA9ICFwX3R5cGU6OnZhbHVlICk7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhc3NlcnRfYXJnX3ByZWRfaW1wbDxwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFByZWQgPgotZmFpbGVkICoqKioqKioqKioqKiAoUHJlZDo6KioqKioqKioqKioqIAotICAgICAgYXNzZXJ0X2FyZyggdm9pZCAoKikoUHJlZCksIHR5cGVuYW1lIGFzc2VydF9hcmdfcHJlZDxQcmVkPjo6dHlwZSApCi0gICAgKTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFByZWQgPgotZmFpbGVkICoqKioqKioqKioqKiAobmRuYm9vc3Q6Om1wbDo6bm90XzxQcmVkPjo6KioqKioqKioqKioqIAotICAgICAgYXNzZXJ0X25vdF9hcmcoIHZvaWQgKCopKFByZWQpLCB0eXBlbmFtZSBhc3NlcnRfYXJnX3ByZWRfbm90PFByZWQ+Ojp0eXBlICkKLSAgICApOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgUHJlZCA+Ci1BVVg3NzgwNzZfQVNTRVJUX0FSRyhhc3NlcnQ8ZmFsc2U+KQotYXNzZXJ0X2FyZyggdm9pZCAoKikoUHJlZCksIHR5cGVuYW1lIGFzc2VydF9hcmdfcHJlZF9ub3Q8UHJlZD46OnR5cGUgKTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFByZWQgPgotQVVYNzc4MDc2X0FTU0VSVF9BUkcoYXNzZXJ0PGZhbHNlPikKLWFzc2VydF9ub3RfYXJnKCB2b2lkICgqKShQcmVkKSwgdHlwZW5hbWUgYXNzZXJ0X2FyZ19wcmVkPFByZWQ+Ojp0eXBlICk7Ci0KLQotI2Vsc2UgLy8gTkROQk9PU1RfTVBMX0NGR19BU1NFUlRfQlJPS0VOX1BPSU5URVJfVE9fUE9JTlRFUl9UT19NRU1CRVIKLSAgICAgICAgCi10ZW1wbGF0ZTwgYm9vbCBjLCB0eXBlbmFtZSBQcmVkID4gc3RydWN0IGFzc2VydF9hcmdfdHlwZV9pbXBsCi17Ci0gICAgdHlwZWRlZiBmYWlsZWQgICAgICAqKioqKioqKioqKiogUHJlZDo6KiBtd2N3ODNfd2tuZDsKLSAgICB0eXBlZGVmIG13Y3c4M193a25kICoqKioqKioqKioqKiogdHlwZTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBQcmVkID4gc3RydWN0IGFzc2VydF9hcmdfdHlwZV9pbXBsPHRydWUsUHJlZD4KLXsKLSAgICB0eXBlZGVmIEFVWDc3ODA3Nl9BU1NFUlRfQVJHKGFzc2VydDxmYWxzZT4pIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgUHJlZCA+IHN0cnVjdCBhc3NlcnRfYXJnX3R5cGUKLSAgICA6IGFzc2VydF9hcmdfdHlwZV9pbXBsPCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFByZWQpKTo6dmFsdWUsIFByZWQgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFByZWQgPgotdHlwZW5hbWUgYXNzZXJ0X2FyZ190eXBlPFByZWQ+Ojp0eXBlIAotYXNzZXJ0X2FyZyh2b2lkICgqKShQcmVkKSwgaW50KTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFByZWQgPgotdHlwZW5hbWUgYXNzZXJ0X2FyZ190eXBlPCBuZG5ib29zdDo6bXBsOjpub3RfPFByZWQ+ID46OnR5cGUgCi1hc3NlcnRfbm90X2FyZyh2b2lkICgqKShQcmVkKSwgaW50KTsKLQotIyAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfQVNTRVJUX1VTRV9SRUxBVElPTl9OQU1FUykKLXRlbXBsYXRlPCBsb25nIHgsIGxvbmcgeSwgYm9vbCAoKnIpKGZhaWxlZCwgZmFpbGVkKSA+Ci10eXBlbmFtZSBhc3NlcnRfYXJnX3R5cGVfaW1wbDwgZmFsc2UsTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfUkVMQVRJT04oeCx5LHIpID46OnR5cGUKLWFzc2VydF9yZWxfYXJnKCBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9SRUxBVElPTih4LHkscikgKTsKLSMgICBlbHNlCi10ZW1wbGF0ZTwgYXNzZXJ0Xzo6cmVsYXRpb25zIHIsIGxvbmcgeCwgbG9uZyB5ID4KLXR5cGVuYW1lIGFzc2VydF9hcmdfdHlwZV9pbXBsPCBmYWxzZSxhc3NlcnRfcmVsYXRpb248cix4LHk+ID46OnR5cGUKLWFzc2VydF9yZWxfYXJnKCBhc3NlcnRfcmVsYXRpb248cix4LHk+ICk7Ci0jICAgZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfQVNTRVJUX0JST0tFTl9QT0lOVEVSX1RPX1BPSU5URVJfVE9fTUVNQkVSCi0KLSN1bmRlZiBBVVg3NzgwNzZfQVNTRVJUX0FSRwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA9PSAxNzAwKQotCi0vLyBORE5CT09TVF9NUExfQVNTRVJUKChwcmVkPHgsLi4uPikpCi0KLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FTU0VSVChwcmVkKSBcCi1ORE5CT09TVF9NUExfQVVYX0FTU0VSVF9DT05TVEFOVCggXAotICAgICAgc3RkOjpzaXplX3QgXAotICAgICwgTkROQk9PU1RfUFBfQ0FUKG1wbF9hc3NlcnRpb25faW5fbGluZV8sTkROQk9PU1RfTVBMX0FVWF9QUF9DT1VOVEVSKCkpID0gc2l6ZW9mKCBcCi0gICAgICAgICAgbmRuYm9vc3Q6Om1wbDo6YXNzZXJ0aW9uX2ZhaWxlZDxmYWxzZT4oIFwKLSAgICAgICAgICAgICAgbmRuYm9vc3Q6Om1wbDo6bWFrZV9hc3NlcnRfYXJnPCBcCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6bXBsOjpldmFsX2Fzc2VydDx2b2lkIHByZWQ+Ojp0eXBlIFwKLSAgICAgICAgICAgICAgICA+KCkgXAotICAgICAgICAgICAgKSBcCi0gICAgICAgICkgXAotICAgICkgXAotLyoqLwotCi0vLyBORE5CT09TVF9NUExfQVNTRVJUX05PVCgocHJlZDx4LC4uLj4pKQotCi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BU1NFUlRfTk9UKHByZWQpIFwKLU5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX0NPTlNUQU5UKCBcCi0gICAgICBzdGQ6OnNpemVfdCBcCi0gICAgLCBORE5CT09TVF9QUF9DQVQobXBsX2Fzc2VydGlvbl9pbl9saW5lXyxORE5CT09TVF9NUExfQVVYX1BQX0NPVU5URVIoKSkgPSBzaXplb2YoIFwKLSAgICAgICAgICBuZG5ib29zdDo6bXBsOjphc3NlcnRpb25fZmFpbGVkPGZhbHNlPiggXAotICAgICAgICAgICAgICBuZG5ib29zdDo6bXBsOjptYWtlX2Fzc2VydF9hcmc8IFwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjptcGw6OmV2YWxfYXNzZXJ0X25vdDx2b2lkIHByZWQ+Ojp0eXBlIFwKLSAgICAgICAgICAgICAgICA+KCkgXAotICAgICAgICAgICAgKSBcCi0gICAgICAgICkgXAotICAgICkgXAotLyoqLwotCi0jZWxzZQotCi0vLyBORE5CT09TVF9NUExfQVNTRVJUKChwcmVkPHgsLi4uPikpCi0KLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FTU0VSVChwcmVkKSBcCi1ORE5CT09TVF9NUExfQVVYX0FTU0VSVF9DT05TVEFOVCggXAotICAgICAgc3RkOjpzaXplX3QgXAotICAgICwgTkROQk9PU1RfUFBfQ0FUKG1wbF9hc3NlcnRpb25faW5fbGluZV8sTkROQk9PU1RfTVBMX0FVWF9QUF9DT1VOVEVSKCkpID0gc2l6ZW9mKCBcCi0gICAgICAgICAgbmRuYm9vc3Q6Om1wbDo6YXNzZXJ0aW9uX2ZhaWxlZDxmYWxzZT4oIFwKLSAgICAgICAgICAgICAgbmRuYm9vc3Q6Om1wbDo6YXNzZXJ0X2FyZyggKHZvaWQgKCopIHByZWQpMCwgMSApIFwKLSAgICAgICAgICAgICkgXAotICAgICAgICApIFwKLSAgICApIFwKLS8qKi8KLQotLy8gTkROQk9PU1RfTVBMX0FTU0VSVF9OT1QoKHByZWQ8eCwuLi4+KSkKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FTU0VSVF9OT1QocHJlZCkgXAotZW51bSB7IFwKLSAgICAgIE5ETkJPT1NUX1BQX0NBVChtcGxfYXNzZXJ0aW9uX2luX2xpbmVfLE5ETkJPT1NUX01QTF9BVVhfUFBfQ09VTlRFUigpKSA9IHNpemVvZiggXAotICAgICAgICAgIG5kbmJvb3N0OjptcGw6OmFzc2VydGlvbjxmYWxzZT46OmZhaWxlZCggXAotICAgICAgICAgICAgICBuZG5ib29zdDo6bXBsOjphc3NlcnRfbm90X2FyZyggKHZvaWQgKCopIHByZWQpMCwgMSApIFwKLSAgICAgICAgICAgICkgXAotICAgICAgICApIFwKLX1cCi0vKiovCi0jZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVNTRVJUX05PVChwcmVkKSBcCi1ORE5CT09TVF9NUExfQVVYX0FTU0VSVF9DT05TVEFOVCggXAotICAgICAgc3RkOjpzaXplX3QgXAotICAgICwgTkROQk9PU1RfUFBfQ0FUKG1wbF9hc3NlcnRpb25faW5fbGluZV8sTkROQk9PU1RfTVBMX0FVWF9QUF9DT1VOVEVSKCkpID0gc2l6ZW9mKCBcCi0gICAgICAgICAgbmRuYm9vc3Q6Om1wbDo6YXNzZXJ0aW9uX2ZhaWxlZDxmYWxzZT4oIFwKLSAgICAgICAgICAgICAgbmRuYm9vc3Q6Om1wbDo6YXNzZXJ0X25vdF9hcmcoICh2b2lkICgqKSBwcmVkKTAsIDEgKSBcCi0gICAgICAgICAgICApIFwKLSAgICAgICAgKSBcCi0gICApIFwKLS8qKi8KLSNlbmRpZgotCi0jZW5kaWYKLQotLy8gTkROQk9PU1RfTVBMX0FTU0VSVF9SRUxBVElPTih4LCA9PXwhPXw8PXw8fD49fD4sIHkpCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfQVNTRVJUX1VTRV9SRUxBVElPTl9OQU1FUykKLQotIyAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfQVNTRVJUX0JST0tFTl9QT0lOVEVSX1RPX1BPSU5URVJfVE9fTUVNQkVSKQotLy8gYWd1cnQsIDkvbm92LzA2OiAnZW51bScgYmVsb3cgaXMgYSB3b3JrYXJvdW5kIGZvciBnY2MgNC4wLjQvNC4xLjEgYnVncyAjMjk1MjIgYW5kICMyOTUxOAotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVNTRVJUX1JFTEFUSU9OX0lNUEwoY291bnRlciwgeCwgcmVsLCB5KSAgICAgIFwKLWVudW0geyBORE5CT09TVF9QUF9DQVQobXBsX2Fzc2VydF9yZWxfdmFsdWUsY291bnRlcikgPSAoeCByZWwgeSkgfTsgXAotTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfQ09OU1RBTlQoIFwKLSAgICAgIHN0ZDo6c2l6ZV90IFwKLSAgICAsIE5ETkJPT1NUX1BQX0NBVChtcGxfYXNzZXJ0aW9uX2luX2xpbmVfLGNvdW50ZXIpID0gc2l6ZW9mKCBcCi0gICAgICAgIG5kbmJvb3N0OjptcGw6OmFzc2VydGlvbl9mYWlsZWQ8TkROQk9PU1RfUFBfQ0FUKG1wbF9hc3NlcnRfcmVsX3ZhbHVlLGNvdW50ZXIpPiggXAotICAgICAgICAgICAgKG5kbmJvb3N0OjptcGw6OmZhaWxlZCAqKioqKioqKioqKiogKCBuZG5ib29zdDo6bXBsOjphc3NlcnRfcmVsYXRpb248IFwKLSAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjptcGw6OmFzc2VydF86OnJlbGF0aW9ucyggc2l6ZW9mKCBcCi0gICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6Om1wbDo6YXNzZXJ0Xzo6YXJnIHJlbCBuZG5ib29zdDo6bXBsOjphc3NlcnRfOjphcmcgXAotICAgICAgICAgICAgICAgICAgICApICkgXAotICAgICAgICAgICAgICAgICwgeCBcCi0gICAgICAgICAgICAgICAgLCB5IFwKLSAgICAgICAgICAgICAgICA+OjoqKioqKioqKioqKiopKSAwICkgXAotICAgICAgICApIFwKLSAgICApIFwKLS8qKi8KLSMgICBlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BU1NFUlRfUkVMQVRJT05fSU1QTChjb3VudGVyLCB4LCByZWwsIHkpICAgIFwKLU5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX0NPTlNUQU5UKCBcCi0gICAgICBzdGQ6OnNpemVfdCBcCi0gICAgLCBORE5CT09TVF9QUF9DQVQobXBsX2Fzc2VydF9yZWwsY291bnRlcikgPSBzaXplb2YoIFwKLSAgICAgICAgICBuZG5ib29zdDo6bXBsOjphc3NlcnRfOjphcmcgcmVsIG5kbmJvb3N0OjptcGw6OmFzc2VydF86OmFyZyBcCi0gICAgICAgICkgXAotICAgICk7IFwKLU5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX0NPTlNUQU5UKCBib29sLCBORE5CT09TVF9QUF9DQVQobXBsX2Fzc2VydF9yZWxfdmFsdWUsY291bnRlcikgPSAoeCByZWwgeSkgKTsgXAotTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfQ09OU1RBTlQoIFwKLSAgICAgIHN0ZDo6c2l6ZV90IFwKLSAgICAsIE5ETkJPT1NUX1BQX0NBVChtcGxfYXNzZXJ0aW9uX2luX2xpbmVfLGNvdW50ZXIpID0gc2l6ZW9mKCBcCi0gICAgICAgIG5kbmJvb3N0OjptcGw6OmFzc2VydGlvbl9mYWlsZWQ8TkROQk9PU1RfUFBfQ0FUKG1wbF9hc3NlcnRfcmVsX3ZhbHVlLGNvdW50ZXIpPiggXAotICAgICAgICAgICAgICBuZG5ib29zdDo6bXBsOjphc3NlcnRfcmVsX2FyZyggbmRuYm9vc3Q6Om1wbDo6YXNzZXJ0X3JlbGF0aW9uPCBcCi0gICAgICAgICAgICAgICAgICBuZG5ib29zdDo6bXBsOjphc3NlcnRfOjpyZWxhdGlvbnMoTkROQk9PU1RfUFBfQ0FUKG1wbF9hc3NlcnRfcmVsLGNvdW50ZXIpKSBcCi0gICAgICAgICAgICAgICAgLCB4IFwKLSAgICAgICAgICAgICAgICAsIHkgXAotICAgICAgICAgICAgICAgID4oKSApIFwKLSAgICAgICAgICAgICkgXAotICAgICAgICApIFwKLSAgICApIFwKLS8qKi8KLSMgICBlbmRpZgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BU1NFUlRfUkVMQVRJT04oeCwgcmVsLCB5KSBcCi1ORE5CT09TVF9NUExfQVNTRVJUX1JFTEFUSU9OX0lNUEwoTkROQk9PU1RfTVBMX0FVWF9QUF9DT1VOVEVSKCksIHgsIHJlbCwgeSkgXAotLyoqLwotCi0jZWxzZSAvLyAhTkROQk9PU1RfTVBMX0NGR19BU1NFUlRfVVNFX1JFTEFUSU9OX05BTUVTCi0KLSMgICBpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfQVNTRVJUX0JST0tFTl9QT0lOVEVSX1RPX1BPSU5URVJfVE9fTUVNQkVSKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVNTRVJUX1JFTEFUSU9OKHgsIHJlbCwgeSkgXAotTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfQ09OU1RBTlQoIFwKLSAgICAgIHN0ZDo6c2l6ZV90IFwKLSAgICAsIE5ETkJPT1NUX1BQX0NBVChtcGxfYXNzZXJ0aW9uX2luX2xpbmVfLE5ETkJPT1NUX01QTF9BVVhfUFBfQ09VTlRFUigpKSA9IHNpemVvZiggXAotICAgICAgICBuZG5ib29zdDo6bXBsOjphc3NlcnRpb25fZmFpbGVkPCh4IHJlbCB5KT4oIG5kbmJvb3N0OjptcGw6OmFzc2VydF9yZWxfYXJnKCBcCi0gICAgICAgICAgICAgIG5kbmJvb3N0OjptcGw6Ok5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX1JFTEFUSU9OKHgseSwoJm5kbmJvb3N0OjptcGw6Om9wZXJhdG9yIHJlbCkpKCkgXAotICAgICAgICAgICAgKSApIFwKLSAgICAgICAgKSBcCi0gICAgKSBcCi0vKiovCi0jICAgZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVNTRVJUX1JFTEFUSU9OKHgsIHJlbCwgeSkgXAotTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfQ09OU1RBTlQoIFwKLSAgICAgIHN0ZDo6c2l6ZV90IFwKLSAgICAsIE5ETkJPT1NUX1BQX0NBVChtcGxfYXNzZXJ0aW9uX2luX2xpbmVfLE5ETkJPT1NUX01QTF9BVVhfUFBfQ09VTlRFUigpKSA9IHNpemVvZiggXAotICAgICAgICBuZG5ib29zdDo6bXBsOjphc3NlcnRpb25fZmFpbGVkPCh4IHJlbCB5KT4oIChuZG5ib29zdDo6bXBsOjpmYWlsZWQgKioqKioqKioqKioqICggXAotICAgICAgICAgICAgbmRuYm9vc3Q6Om1wbDo6TkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfUkVMQVRJT04oeCx5LCgmbmRuYm9vc3Q6Om1wbDo6b3BlcmF0b3IgcmVsKSk6OioqKioqKioqKioqKikpMCApIFwKLSAgICAgICAgKSBcCi0gICAgKSBcCi0vKiovCi0jICAgZW5kaWYKLQotI2VuZGlmCi0KLQotLy8gTkROQk9PU1RfTVBMX0FTU0VSVF9NU0coIChwcmVkPHgsLi4uPjo6dmFsdWUpLCBVU0VSX1BST1ZJREVEX01FU1NBR0UsICh0eXBlczx4LC4uLj4pICkgCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDMyMDIpKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVNTRVJUX01TR19JTVBMKCBjb3VudGVyLCBjLCBtc2csIHR5cGVzXyApIFwKLXN0cnVjdCBtc2c7IFwKLXR5cGVkZWYgc3RydWN0IE5ETkJPT1NUX1BQX0NBVChtc2csY291bnRlcikgOiBuZG5ib29zdDo6bXBsOjphc3NlcnRfIFwKLXsgXAotICAgIHVzaW5nIG5kbmJvb3N0OjptcGw6OmFzc2VydF86OnR5cGVzOyBcCi0gICAgc3RhdGljIG5kbmJvb3N0OjptcGw6OmZhaWxlZCAqKioqKioqKioqKiogKG1zZzo6KioqKioqKioqKioqIGFzc2VydF9hcmcoKSkgdHlwZXNfIFwKLSAgICB7IHJldHVybiAwOyB9IFwKLX0gTkROQk9PU1RfUFBfQ0FUKG1wbF9hc3NlcnRfYXJnLGNvdW50ZXIpOyBcCi1ORE5CT09TVF9NUExfQVVYX0FTU0VSVF9DT05TVEFOVCggXAotICAgICAgc3RkOjpzaXplX3QgXAotICAgICwgTkROQk9PU1RfUFBfQ0FUKG1wbF9hc3NlcnRpb25faW5fbGluZV8sY291bnRlcikgPSBzaXplb2YoIFwKLSAgICAgICAgbmRuYm9vc3Q6Om1wbDo6YXNzZXJ0aW9uPChjKT46OmZhaWxlZCggTkROQk9PU1RfUFBfQ0FUKG1wbF9hc3NlcnRfYXJnLGNvdW50ZXIpOjphc3NlcnRfYXJnKCkgKSBcCi0gICAgICAgICkgXAotICAgICkgXAotLyoqLwotI2Vsc2UKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FTU0VSVF9NU0dfSU1QTCggY291bnRlciwgYywgbXNnLCB0eXBlc18gKSAgXAotc3RydWN0IG1zZzsgXAotdHlwZWRlZiBzdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKG1zZyxjb3VudGVyKSA6IG5kbmJvb3N0OjptcGw6OmFzc2VydF8gXAoteyBcCi0gICAgc3RhdGljIG5kbmJvb3N0OjptcGw6OmZhaWxlZCAqKioqKioqKioqKiogKG1zZzo6KioqKioqKioqKioqIGFzc2VydF9hcmcoKSkgdHlwZXNfIFwKLSAgICB7IHJldHVybiAwOyB9IFwKLX0gTkROQk9PU1RfUFBfQ0FUKG1wbF9hc3NlcnRfYXJnLGNvdW50ZXIpOyBcCi1ORE5CT09TVF9NUExfQVVYX0FTU0VSVF9DT05TVEFOVCggXAotICAgICAgc3RkOjpzaXplX3QgXAotICAgICwgTkROQk9PU1RfUFBfQ0FUKG1wbF9hc3NlcnRpb25faW5fbGluZV8sY291bnRlcikgPSBzaXplb2YoIFwKLSAgICAgICAgbmRuYm9vc3Q6Om1wbDo6YXNzZXJ0aW9uX2ZhaWxlZDwoYyk+KCBORE5CT09TVF9QUF9DQVQobXBsX2Fzc2VydF9hcmcsY291bnRlcik6OmFzc2VydF9hcmcoKSApIFwKLSAgICAgICAgKSBcCi0gICAgKSBcCi0vKiovCi0jZW5kaWYKLQotI2RlZmluZSBORE5CT09TVF9NUExfQVNTRVJUX01TRyggYywgbXNnLCB0eXBlc18gKSBcCi1ORE5CT09TVF9NUExfQVNTRVJUX01TR19JTVBMKCBORE5CT09TVF9NUExfQVVYX1BQX0NPVU5URVIoKSwgYywgbXNnLCB0eXBlc18gKSBcCi0vKiovCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVNTRVJUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjM2Q4OTY4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGF0LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F0X2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vYXRfaW1wbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xvbmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9zZXF1ZW5jZV90YWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9udHRwX2RlY2wuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFNlcXVlbmNlKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOKQotICAgID4KLXN0cnVjdCBhdAotICAgIDogYXRfaW1wbDwgdHlwZW5hbWUgc2VxdWVuY2VfdGFnPFNlcXVlbmNlPjo6dHlwZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgYXBwbHk8IFNlcXVlbmNlLE4gPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMixhdCwoU2VxdWVuY2UsTikpCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFNlcXVlbmNlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChsb25nLCBOKQotICAgID4KLXN0cnVjdCBhdF9jCi0gICAgOiBhdF9pbXBsPCB0eXBlbmFtZSBzZXF1ZW5jZV90YWc8U2VxdWVuY2U+Ojp0eXBlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSBhcHBseTwgU2VxdWVuY2UsbXBsOjpsb25nXzxOPiA+Ci17Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMiwgYXQpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdF9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXRfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGE4MDJlMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdF9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVF9GV0RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVF9GV0RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBhdF9md2QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGF0X2ltcGw7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxdWVuY2UsIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXQ7Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVRfRldEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9PMV9zaXplX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9PMV9zaXplX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NWRhOTJjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vTzFfc2l6ZV9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTzFfU0laRV9JTVBMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTzFfU0laRV9JTVBMX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogTzFfc2l6ZV9pbXBsLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL08xX3NpemVfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbG9uZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9oYXNfc2l6ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2ZvcndhcmRpbmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9zdGF0aWNfY29uc3RhbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9tc3ZjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0vLyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIC0gcmV0dXJucyAnU2VxdWVuY2U6OnNpemUnIGlmIHNlcXVlbmNlIGhhcyBhICdzaXplJwotLy8gbWVtYmVyLCBhbmQgLTEgb3RoZXJ3aXNlOyBjb25yZXRlIHNlcXVlbmNlcyBtaWdodCBvdmVycmlkZSBpdCBieSAKLS8vIHNwZWNpYWxpemluZyBlaXRoZXIgdGhlICdPMV9zaXplX2ltcGwnIG9yIHRoZSBwcmltYXJ5ICdPMV9zaXplJyB0ZW1wbGF0ZQotCi0jICAgaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKSBcCi0gICAgJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4MzAwMykpCi0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFNlcXVlbmNlID4gc3RydWN0IE8xX3NpemVfaW1wbAotICAgIDogU2VxdWVuY2U6OnNpemUKLXsKLX07Ci19Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IE8xX3NpemVfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSA+IHN0cnVjdCBhcHBseQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fTkVTVEVEX0ZPUldBUkRJTkcpCi0gICAgICAgIDogaWZfPAotICAgICAgICAgICAgICBhdXg6Omhhc19zaXplPFNlcXVlbmNlPgotICAgICAgICAgICAgLCBhdXg6Ok8xX3NpemVfaW1wbDxTZXF1ZW5jZT4KLSAgICAgICAgICAgICwgbG9uZ188LTE+Ci0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgewotI2Vsc2UKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBhdXg6Omhhc19zaXplPFNlcXVlbmNlPgotICAgICAgICAgICAgLCBhdXg6Ok8xX3NpemVfaW1wbDxTZXF1ZW5jZT4KLSAgICAgICAgICAgICwgbG9uZ188LTE+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGxvbmcsIHZhbHVlID0KLSAgICAgICAgICAgICAgKGlmXzwKLSAgICAgICAgICAgICAgICAgIGF1eDo6aGFzX3NpemU8U2VxdWVuY2U+Ci0gICAgICAgICAgICAgICAgLCBhdXg6Ok8xX3NpemVfaW1wbDxTZXF1ZW5jZT4KLSAgICAgICAgICAgICAgICAsIGxvbmdfPC0xPgotICAgICAgICAgICAgICAgID46OnR5cGU6OnZhbHVlKQotICAgICAgICAgICAgKTsKLSNlbmRpZgotICAgIH07Ci19OwotCi0jICAgZWxzZSAvLyBORE5CT09TVF9NU1ZDCi0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IE8xX3NpemVfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPC0xPgotICAgICAgICB7Ci0gICAgICAgIH07Ci19OwotCi0jICAgZW5kaWYKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9PMV9TSVpFX0lNUExfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2FkbF9iYXJyaWVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vYWRsX2JhcnJpZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZTNjNGE3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vYWRsX2JhcnJpZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBhZGxfYmFycmllci5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9hZGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9nY2MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fQURMX0JBUlJJRVJfTkFNRVNQQUNFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFIG5kbmJvb3N0X21wbF8KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTiBuYW1lc3BhY2UgbmRuYm9vc3RfbXBsXyB7Ci0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFIH0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9ERUNMKHR5cGUpIFwKLSAgICBuYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgXAotICAgIHVzaW5nIDo6TkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6OnR5cGU7IFwKLSAgICB9IH0gXAotLyoqLwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLW5hbWVzcGFjZSBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRSB7IG5hbWVzcGFjZSBhdXgge30gfQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IHVzaW5nIG5hbWVzcGFjZSBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTsgCi1uYW1lc3BhY2UgYXV4IHsgdXNpbmcgbmFtZXNwYWNlIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjphdXg7IH0KLX19Ci0jZW5kaWYKLQotI2Vsc2UgLy8gTkROQk9PU1RfTVBMX0NGR19OT19BRExfQkFSUklFUl9OQU1FU1BBQ0UKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRSBuZG5ib29zdDo6bXBsCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4gbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFIH19Ci0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfREVDTCh0eXBlKSAvKiovCi0KLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vYWR2YW5jZV9iYWNrd2FyZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2FkdmFuY2VfYmFja3dhcmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTYyOWYwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vYWR2YW5jZV9iYWNrd2FyZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjggKzAsMCBAQAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HKQotCi0vLy8vLyBoZWFkZXIgYm9keQotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVg3NzgwNzZfQURWQU5DRV9CQUNLV0FSRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWDc3ODA3Nl9BRFZBTkNFX0JBQ0tXQVJEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogYWR2YW5jZV9iYWNrd2FyZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ByaW9yLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXBwbHlfd3JhcC5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICAgICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIGFkdmFuY2VfYmFja3dhcmQuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpbWl0cy91bnJvbGxpbmcuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL250dHBfZGVjbC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2V0aS5ocHA+Ci0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2luYy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGxvbmcsIE4pID4gc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ7Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywoMCwgTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORywgPG5kbmJvb3N0L21wbC9hdXhfL2FkdmFuY2VfYmFja3dhcmQuaHBwPikpCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotLy8gaW1wbGVtZW50YXRpb24gZm9yIE4gdGhhdCBleGNlZWRzIE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcKLXRlbXBsYXRlPCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChsb25nLCBOKSA+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9iYWNrd2FyZDxORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HPgotICAgICAgICAgICAgLCBJdGVyYXRvcgotICAgICAgICAgICAgPjo6dHlwZSBjaHVua19yZXN1bHRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfYmFja3dhcmQ8KAotICAgICAgICAgICAgICAgIChOIC0gTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORykgPCAwCi0gICAgICAgICAgICAgICAgICAgID8gMAotICAgICAgICAgICAgICAgICAgICA6IE4gLSBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HCi0gICAgICAgICAgICAgICAgICAgICk+Ci0gICAgICAgICAgICAsIGNodW5rX3Jlc3VsdF8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWDc3ODA3Nl9BRFZBTkNFX0JBQ0tXQVJEX0hQUF9JTkNMVURFRAotCi0vLy8vLyBpdGVyYXRpb24sIGRlcHRoID09IDEKLQotLy8gRm9yIGdjYyA0LjQgY29tcGF0YWJpbGl0eSwgd2UgbXVzdCBpbmNsdWRlIHRoZQotLy8gTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIIHRlc3QgaW5zaWRlIGFuICNlbHNlIGNsYXVzZS4KLSNlbHNlIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwotI2lmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpID09IDEKLSNkZWZpbmUgaV8gTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OKDEpCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPCBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLQotI2lmIGlfID4gMAotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzIgXAotICAgICgzLCgxLCBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSksIDxuZG5ib29zdC9tcGwvYXV4Xy9hZHZhbmNlX2JhY2t3YXJkLmhwcD4pKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0jZW5kaWYKLQotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChpdGVyLE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigxKSkgdHlwZTsKLSAgICB9OwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX01TVkNfNjBfRVRJX0JVRykKLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBhcHBseTxpbnQ+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCB0eXBlOwotICAgIH07Ci0jZW5kaWYKLX07Ci0KLSN1bmRlZiBpXwotCi0vLy8vLyBpdGVyYXRpb24sIGRlcHRoID09IDIKLQotI2VsaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkgPT0gMgotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9JVEVSXzAgTkROQk9PU1RfUFBfQ0FUKGl0ZXIsTkROQk9PU1RfUFBfREVDKE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigyKSkpCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9JVEVSXzEgTkROQk9PU1RfUFBfQ0FUKGl0ZXIsTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OKDIpKQotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8QVVYNzc4MDc2X0lURVJfMD46OnR5cGUgQVVYNzc4MDc2X0lURVJfMTsKLSAgICAgICAgCi0jICAgdW5kZWYgQVVYNzc4MDc2X0lURVJfMQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9JVEVSXzAKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpCi0jZW5kaWYgLy8gTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2FkdmFuY2VfZm9yd2FyZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2FkdmFuY2VfZm9yd2FyZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5MWEyNmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9hZHZhbmNlX2ZvcndhcmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTI3ICswLDAgQEAKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0lTX0lURVJBVElORykKLQotLy8vLy8gaGVhZGVyIGJvZHkKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0FEVkFOQ0VfRk9SV0FSRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9BRFZBTkNFX0ZPUldBUkRfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBhZHZhbmNlX2ZvcndhcmQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9uZXh0LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXBwbHlfd3JhcC5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICAgICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIGFkdmFuY2VfZm9yd2FyZC5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGltaXRzL3Vucm9sbGluZy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbnR0cF9kZWNsLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZXRpLmhwcD4KLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaW5jLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0wobG9uZywgTikgPiBzdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkOwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDAsIE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcsIDxuZG5ib29zdC9tcGwvYXV4Xy9hZHZhbmNlX2ZvcndhcmQuaHBwPikpCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotLy8gaW1wbGVtZW50YXRpb24gZm9yIE4gdGhhdCBleGNlZWRzIE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcKLXRlbXBsYXRlPCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChsb25nLCBOKSA+IAotc3RydWN0IGFkdmFuY2VfZm9yd2FyZAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9mb3J3YXJkPE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkc+Ci0gICAgICAgICAgICAsIEl0ZXJhdG9yCi0gICAgICAgICAgICA+Ojp0eXBlIGNodW5rX3Jlc3VsdF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9mb3J3YXJkPCgKLSAgICAgICAgICAgICAgICAoTiAtIE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcpIDwgMAotICAgICAgICAgICAgICAgICAgICA/IDAKLSAgICAgICAgICAgICAgICAgICAgOiBOIC0gTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORwotICAgICAgICAgICAgICAgICAgICApPgotICAgICAgICAgICAgLCBjaHVua19yZXN1bHRfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQURWQU5DRV9GT1JXQVJEX0hQUF9JTkNMVURFRAotCi0vLy8vLyBpdGVyYXRpb24sIGRlcHRoID09IDEKLQotLy8gRm9yIGdjYyA0LjQgY29tcGF0YWJpbGl0eSwgd2UgbXVzdCBpbmNsdWRlIHRoZQotLy8gTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIIHRlc3QgaW5zaWRlIGFuICNlbHNlIGNsYXVzZS4KLSNlbHNlIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwotI2lmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpID09IDEKLSNkZWZpbmUgaV8gTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OKDEpCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8IE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigxKSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotCi0jaWYgaV8gPiAwCi0jICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMiBcCi0gICAgKDMsKDEsIGlfLCA8bmRuYm9vc3QvbXBsL2F1eF8vYWR2YW5jZV9mb3J3YXJkLmhwcD4pKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0jZW5kaWYKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQoaXRlcixpXykgdHlwZTsKLSAgICB9OwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX01TVkNfNjBfRVRJX0JVRykKLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBhcHBseTxpbnQ+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCB0eXBlOwotICAgIH07Ci0jZW5kaWYKLX07Ci0KLSN1bmRlZiBpXwotCi0vLy8vLyBpdGVyYXRpb24sIGRlcHRoID09IDIKLQotI2VsaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkgPT0gMgotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9JVEVSXzAgTkROQk9PU1RfUFBfQ0FUKGl0ZXIsTkROQk9PU1RfUFBfREVDKE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigyKSkpCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9JVEVSXzEgTkROQk9PU1RfUFBfQ0FUKGl0ZXIsTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OKDIpKQotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxBVVg3NzgwNzZfSVRFUl8wPjo6dHlwZSBBVVg3NzgwNzZfSVRFUl8xOwotICAgICAgICAKLSMgICB1bmRlZiBBVVg3NzgwNzZfSVRFUl8xCi0jICAgdW5kZWYgQVVYNzc4MDc2X0lURVJfMAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkKLSNlbmRpZiAvLyBORE5CT09TVF9QUF9JU19JVEVSQVRJTkcKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vYXJnX3R5cGVkZWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9hcmdfdHlwZWRlZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkOWE5NGQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9hcmdfdHlwZWRlZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRl9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGFyZ190eXBlZGVmLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2xhbWJkYS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0ZVTExfTEFNQkRBX1NVUFBPUlQpIFwKLSAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fRE1DX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDg0MCkpCi0gICAgCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYoVCwgbmFtZSkgdHlwZWRlZiBUIG5hbWU7Ci0KLSNlbHNlCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihULCBuYW1lKSAvKiovCi0KLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vYXJpdGhtZXRpY19vcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2FyaXRobWV0aWNfb3AuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTdkM2FiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vYXJpdGhtZXRpY19vcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MiArMCwwIEBACi0KLS8vIE5PIElOQ0xVREUgR1VBUkRTLCBUSEUgSEVBREVSIElTIElOVEVOREVEIEZPUiBNVUxUSVBMRSBJTkNMVVNJT04KLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGFyaXRobWV0aWNfb3AuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9pbnRlZ3JhbF9jLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYXJnZXN0X2ludC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdmFsdWVfd2tuZC5ocHA+Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKEFVWDc3ODA3Nl9PUF9QUkVGSVgpCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9PUF9QUkVGSVggQVVYNzc4MDc2X09QX05BTUUKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbnVtZXJpY19vcC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3N0YXRpY19jb25zdGFudC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgQVVYNzc4MDc2X09QX1BSRUZJWC5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fTkVTVEVEX1ZBTFVFX0FSSVRITUVUSUMpCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBUIG4xLCBUIG4yID4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X09QX1BSRUZJWCxfd2tuZCkKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgPSAobjEgQVVYNzc4MDc2X09QX1RPS0VOIG4yKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPFQsdmFsdWU+IHR5cGU7Ci19OwotfQotI2VuZGlmCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCBBVVg3NzgwNzZfT1BfSU1QTF9OQU1FPGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX05FU1RFRF9WQUxVRV9BUklUSE1FVElDKQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIEFVWDc3ODA3Nl9PUF9UT0tFTiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSNlbHNlCi0gICAgICAgIDogYXV4OjpORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X09QX1BSRUZJWCxfd2tuZCk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsIE4xOjp2YWx1ZQotICAgICAgICAgICAgLCBOMjo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUKLSNlbmRpZgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLQotI3VuZGVmIEFVWDc3ODA3Nl9PUF9UQUdfTkFNRQotI3VuZGVmIEFVWDc3ODA3Nl9PUF9JTVBMX05BTUUKLSN1bmRlZiBBVVg3NzgwNzZfT1BfQVJJVFkKLSN1bmRlZiBBVVg3NzgwNzZfT1BfUFJFRklYCi0jdW5kZWYgQVVYNzc4MDc2X09QX05BTUUKLSN1bmRlZiBBVVg3NzgwNzZfT1BfVE9LRU4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vYXJpdHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9hcml0eS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyOGY1NjQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9hcml0eS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9BUklUWV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9BUklUWV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGFyaXR5LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2R0cC5ocHA+Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfQlJPS0VOX0RFRkFVTFRfUEFSQU1FVEVSU19JTl9ORVNURURfVEVNUExBVEVTKQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbnR0cF9kZWNsLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvc3RhdGljX2NvbnN0YW50LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLyBhZ3VydCwgMTUvbWFyLzAyOiBpdCdzIHBvc3NpYmxlIHRvIGltcGxlbWVudCB0aGUgdGVtcGxhdGUgc28gdGhhdCBpdCB3aWxsIAotLy8gImp1c3Qgd29yayIgYW5kIGRvIG5vdCByZXF1aXJlIGFueSBzcGVjaWFsaXphdGlvbiwgYnV0IG5vdCBvbiB0aGUgY29tcGlsZXJzCi0vLyB0aGF0IHJlcXVpcmUgdGhlIGFyaXR5IHdvcmthcm91bmQgaW4gdGhlIGZpcnN0IHBsYWNlCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCBOKSA+Ci1zdHJ1Y3QgYXJpdHkKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9IE4pOwotfTsKLQotfX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX0JST0tFTl9ERUZBVUxUX1BBUkFNRVRFUlNfSU5fTkVTVEVEX1RFTVBMQVRFUwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9BUklUWV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vYXJpdHlfc3BlYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2FyaXR5X3NwZWMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMTBlZTExLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vYXJpdHlfc3BlYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUNfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBhcml0eV9zcGVjLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ludC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpbWl0cy9hcml0eS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2R0cC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vYXJpdHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3RlbXBsYXRlX2FyaXR5X2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R0cC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2xhbWJkYS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3N0YXRpY19jb25zdGFudC5ocHA+Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfQlJPS0VOX0RFRkFVTFRfUEFSQU1FVEVSU19JTl9ORVNURURfVEVNUExBVEVTKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX05PTlRZUEVfQVJJVFlfU1BFQyhpLHR5cGUsbmFtZSkgXAotbmFtZXNwYWNlIGF1eCB7IFwKLXRlbXBsYXRlPCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIE4pLCBORE5CT09TVF9NUExfUFBfUEFSQU1TKGksdHlwZSBUKSA+IFwKLXN0cnVjdCBhcml0eTwgXAotICAgICAgbmFtZTwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpLFQpID4gXAotICAgICwgTiBcCi0gICAgPiBcCi17IFwKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50IFwKLSAgICAgICAgLCB2YWx1ZSA9IE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFkgXAotICAgICAgICApOyBcCi19OyBcCi19IFwKLS8qKi8KLSNlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTk9OVFlQRV9BUklUWV9TUEVDKGksdHlwZSxuYW1lKSAvKiovCi0jZW5kaWYKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoaSxuYW1lKSBcCi0gICAgTkROQk9PU1RfTVBMX0FVWF9OT05UWVBFX0FSSVRZX1NQRUMoaSx0eXBlbmFtZSxuYW1lKSBcCi0vKiovCi0KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19FWFRFTkRFRF9URU1QTEFURV9QQVJBTUVURVJTX01BVENISU5HKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19GVUxMX0xBTUJEQV9TVVBQT1JUKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoaSwgbmFtZSkgXAotbmFtZXNwYWNlIGF1eCB7IFwKLXRlbXBsYXRlPCBORE5CT09TVF9NUExfUFBfUEFSQU1TKGksdHlwZW5hbWUgVCkgPiBcCi1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHk8IG5hbWU8TkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpLFQpPiA+IFwKLSAgICA6IGludF88aT4gXAoteyBcCi19OyBcCi19IFwKLS8qKi8KLSNlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyhpLCBuYW1lKSAvKiovCi0jZW5kaWYKLQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9hdF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vYXRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwMjg3MzEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9hdF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0FUX0lNUExfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQVRfSU1QTF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGF0X2ltcGwuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYmVnaW5fZW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYWR2YW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2RlcmVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy90cmFpdHNfbGFtYmRhX3NwZWMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotLy8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbjsgY29ucmV0ZSBzZXF1ZW5jZXMgbWlnaHQgb3ZlcnJpZGUgaXQgYnkgCi0vLyBzcGVjaWFsaXppbmcgZWl0aGVyIHRoZSAnYXRfaW1wbCcgb3IgdGhlIHByaW1hcnkgJ2F0JyB0ZW1wbGF0ZQotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBhdF9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFNlcXVlbmNlLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFkdmFuY2U8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGJlZ2luPFNlcXVlbmNlPjo6dHlwZQotICAgICAgICAgICAgLCBOCi0gICAgICAgICAgICA+Ojp0eXBlIGl0ZXJfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGVyZWY8aXRlcl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BTEdPUklUTV9UUkFJVFNfTEFNQkRBX1NQRUMoMiwgYXRfaW1wbCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQVRfSU1QTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vYmVnaW5fZW5kX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9iZWdpbl9lbmRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlNTY3YWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9iZWdpbl9lbmRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDEgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQkVHSU5fRU5EX0lNUExfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQkVHSU5fRU5EX0lNUExfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGJlZ2luX2VuZF9pbXBsLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2JlZ2luX2VuZF9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9zZXF1ZW5jZV90YWdfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdm9pZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2V2YWxfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2hhc19iZWdpbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmEuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3RyYWl0c19sYW1iZGFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2V0aS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0KLW5hbWVzcGFjZSBhdXggeyAKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFNlcXVlbmNlID4gCi1zdHJ1Y3QgYmVnaW5fdHlwZSAKLXsgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBTZXF1ZW5jZTo6YmVnaW4gdHlwZTsgCi19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFNlcXVlbmNlID4gCi1zdHJ1Y3QgZW5kX3R5cGUKLXsgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBTZXF1ZW5jZTo6ZW5kIHR5cGU7IAotfTsKLQotfQotCi0vLyBkZWZhdWx0IGltcGxlbWVudGF0aW9uOyBjb25yZXRlIHNlcXVlbmNlcyBtaWdodCBvdmVycmlkZSBpdCBieSAKLS8vIHNwZWNpYWxpemluZyBlaXRoZXIgdGhlICdiZWdpbl9pbXBsL2VuZF9pbXBsJyBvciB0aGUgcHJpbWFyeSAKLS8vICdiZWdpbi9lbmQnIHRlbXBsYXRlcwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBiZWdpbl9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFNlcXVlbmNlID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGV2YWxfaWY8YXV4OjpoYXNfYmVnaW48U2VxdWVuY2UsIHRydWVfPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1eDo6YmVnaW5fdHlwZTxTZXF1ZW5jZT4sIHZvaWRfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBlbmRfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBldmFsX2lmPGF1eDo6aGFzX2JlZ2luPFNlcXVlbmNlLCB0cnVlXz4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXg6OmVuZF90eXBlPFNlcXVlbmNlPiwgdm9pZF8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLS8vIHNwZWNpYWxpemUgJ2JlZ2luX3RyYWl0L2VuZF90cmFpdCcgZm9yIHR3byBwcmUtZGVmaW5lZCB0YWdzCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0lNUExfU1BFQyhuYW1lLCB0YWcsIHJlc3VsdCkgXAotdGVtcGxhdGU8PiBcCi1zdHJ1Y3QgbmFtZSMjX2ltcGw8dGFnPiBcCi17IFwKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxdWVuY2UgPiBzdHJ1Y3QgYXBwbHkgXAotICAgIHsgXAotICAgICAgICB0eXBlZGVmIHJlc3VsdCB0eXBlOyBcCi0gICAgfTsgXAotfTsgXAotLyoqLwotCi0vLyBhIHNlcXVlbmNlIHdpdGggbmVzdGVkICdiZWdpbi9lbmQnIHR5cGVkZWZzOyBqdXN0IHF1ZXJ5IHRoZW0KLUFVWDc3ODA3Nl9JTVBMX1NQRUMoYmVnaW4sIG5lc3RlZF9iZWdpbl9lbmRfdGFnLCB0eXBlbmFtZSBTZXF1ZW5jZTo6YmVnaW4pCi1BVVg3NzgwNzZfSU1QTF9TUEVDKGVuZCwgbmVzdGVkX2JlZ2luX2VuZF90YWcsIHR5cGVuYW1lIFNlcXVlbmNlOjplbmQpCi0KLS8vIGlmIGEgdHlwZSAnVCcgZG9lcyBub3QgY29udGFpbiAnYmVnaW4vZW5kJyBvciAndGFnJyBtZW1iZXJzIAotLy8gYW5kIGRvZXNuJ3Qgc3BlY2lhbGl6ZSBlaXRoZXIgJ2JlZ2luL2VuZCcgb3IgJ2JlZ2luX2ltcGwvZW5kX2ltcGwnIAotLy8gdGVtcGxhdGVzLCB0aGVuIHdlIGVuZCB1cCBoZXJlCi1BVVg3NzgwNzZfSU1QTF9TUEVDKGJlZ2luLCBub25fc2VxdWVuY2VfdGFnLCB2b2lkXykKLUFVWDc3ODA3Nl9JTVBMX1NQRUMoZW5kLCBub25fc2VxdWVuY2VfdGFnLCB2b2lkXykKLUFVWDc3ODA3Nl9JTVBMX1NQRUMoYmVnaW4sIG5hLCB2b2lkXykKLUFVWDc3ODA3Nl9JTVBMX1NQRUMoZW5kLCBuYSwgdm9pZF8pCi0KLSMgICB1bmRlZiBBVVg3NzgwNzZfSU1QTF9TUEVDCi0KLQotTkROQk9PU1RfTVBMX0FMR09SSVRNX1RSQUlUU19MQU1CREFfU1BFQ19JTVBMKDEsYmVnaW5faW1wbCkKLU5ETkJPT1NUX01QTF9BTEdPUklUTV9UUkFJVFNfTEFNQkRBX1NQRUNfSU1QTCgxLGVuZF9pbXBsKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9CRUdJTl9FTkRfSU1QTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY2xlYXJfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NsZWFyX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYWU1NTY4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY2xlYXJfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9DTEVBUl9JTVBMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0NMRUFSX0lNUExfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBjbGVhcl9pbXBsLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2NsZWFyX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdHJhaXRzX2xhbWJkYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZXRpLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLS8vIG5vIGRlZmF1bHQgaW1wbGVtZW50YXRpb247IHRoZSBkZWZpbml0aW9uIGlzIG5lZWRlZCB0byBtYWtlIE1TVkMgaGFwcHkKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgY2xlYXJfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSA+IHN0cnVjdCBhcHBseTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BTEdPUklUTV9UUkFJVFNfTEFNQkRBX1NQRUMoMSwgY2xlYXJfaW1wbCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQ0xFQVJfSU1QTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29tbW9uX25hbWVfd2tuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbW1vbl9uYW1lX3drbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NTRhNzFhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29tbW9uX25hbWVfd2tuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9DT01NT05fTkFNRV9XS05EX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0NPTU1PTl9OQU1FX1dLTkRfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBjb21tb25fbmFtZV93a25kLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg1NjEpCi0vLyBhZ3VydCwgMTIvbm92LzAyOiB0byBzdXBwcmVzcyB0aGUgYm9ndXMgIkNhbm5vdCBoYXZlIGJvdGggYSB0ZW1wbGF0ZSBjbGFzcyAKLS8vIGFuZCBmdW5jdGlvbiBuYW1lZCAneHh4JyIgZGlhZ25vc3RpYwotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX0NPTU1PTl9OQU1FX1dLTkQobmFtZSkgXAotbmFtZXNwYWNlIG5hbWVfIyN3a25kIHsgXAotdGVtcGxhdGU8IHR5cGVuYW1lID4gdm9pZCBuYW1lKCk7IFwKLX0gXAotLyoqLwotCi0jZWxzZQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQ09NTU9OX05BTUVfV0tORChuYW1lKSAvKiovCi0KLSNlbmRpZiAvLyBfX0JPUkxBTkRDX18KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQ09NTU9OX05BTUVfV0tORF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29tcGFyaXNvbl9vcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbXBhcmlzb25fb3AuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYmVkNmE0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29tcGFyaXNvbl9vcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi0KLS8vIE5PIElOQ0xVREUgR1VBUkRTLCBUSEUgSEVBREVSIElTIElOVEVOREVEIEZPUiBNVUxUSVBMRSBJTkNMVVNJT04KLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGNvbXBhcmlzb25fb3AuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy92YWx1ZV93a25kLmhwcD4KLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoQVVYNzc4MDc2X09QX1BSRUZJWCkKLSMgICBkZWZpbmUgQVVYNzc4MDc2X09QX1BSRUZJWCBBVVg3NzgwNzZfT1BfTkFNRQotI2VuZGlmCi0KLSNkZWZpbmUgQVVYNzc4MDc2X09QX0FSSVRZIDIKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL251bWVyaWNfb3AuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9zdGF0aWNfY29uc3RhbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIEFVWDc3ODA3Nl9PUF9QUkVGSVguaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2ludGVncmFsLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLS8vIE1TVkMgd29ya2Fyb3VuZDogaW1wbGVtZW50IGxlc3MgaW4gdGVybXMgb2YgZ3JlYXRlcgotI2lmIDAgQVVYNzc4MDc2X09QX1RPS0VOIDEgJiYgISgxIEFVWDc3ODA3Nl9PUF9UT0tFTiAwKSAmJiAhKDAgQVVYNzc4MDc2X09QX1RPS0VOIDApCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9PUChOMSwgTjIpIFwKLSAgICAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlID4gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgKSBcCi0vKiovCi0jZWxzZQotIyAgIGRlZmluZSBBVVg3NzgwNzZfT1AoTjEsIE4yKSBcCi0gICAgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSBcCi0gICAgICAgICAgQVVYNzc4MDc2X09QX1RPS0VOIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlIFwKLSAgICAgICAgKSBcCi0vKiovCi0jZW5kaWYKLQotdGVtcGxhdGU8Pgotc3RydWN0IEFVWDc3ODA3Nl9PUF9JTVBMX05BTUU8aW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWc+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fTkVTVEVEX1ZBTFVFX0FSSVRITUVUSUMpCi0gICAgICAgIDogYm9vbF88IEFVWDc3ODA3Nl9PUChOMSwgTjIpID4KLSAgICB7Ci0jZWxzZQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gQVVYNzc4MDc2X09QKE4xLCBOMikpOwotICAgICAgICB0eXBlZGVmIGJvb2xfPHZhbHVlPiB0eXBlOwotI2VuZGlmCi0gICAgfTsKLX07Ci0KLSN1bmRlZiBBVVg3NzgwNzZfT1AKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLQotI3VuZGVmIEFVWDc3ODA3Nl9PUF9UQUdfTkFNRQotI3VuZGVmIEFVWDc3ODA3Nl9PUF9JTVBMX05BTUUKLSN1bmRlZiBBVVg3NzgwNzZfT1BfQVJJVFkKLSN1bmRlZiBBVVg3NzgwNzZfT1BfUFJFRklYCi0jdW5kZWYgQVVYNzc4MDc2X09QX05BTUUKLSN1bmRlZiBBVVg3NzgwNzZfT1BfVE9LRU4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2FkbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9hZGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNTc5NGQ0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2FkbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfQURMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0NPTkZJR19BRExfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBhZGwuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbXN2Yy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2ludGVsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZ2NjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLS8vIGFndXJ0LCAyNS9hcHIvMDQ6IHRlY2huaWNhbGx5LCB0aGUgQURMIHdvcmthcm91bmQgaXMgb25seSBuZWVkZWQgZm9yIEdDQywKLS8vIGJ1dCBwdXR0aW5nIGV2ZXJ5dGhpbmcgZXhwZWN0IHB1YmxpYywgdXNlci1zcGVjaWFsaXphYmxlIG1ldGFmdW5jdGlvbnMgaW50bwotLy8gYSBzZXBhcmF0ZSBnbG9iYWwgbmFtZXNwYWNlIGhhcyBhIG5pY2Ugc2lkZSBlZmZlY3Qgb2YgcmVkdWNpbmcgdGhlIGxlbmd0aCAKLS8vIG9mIHRlbXBsYXRlIGluc3RhbnRpYXRpb24gc3ltYm9scywgc28gd2UgYXBwbHkgdGhlIHdvcmthcm91bmQgb24gYWxsIAotLy8gcGxhdGZvcm1zIHRoYXQgY2FuIGhhbmRsZSBpdAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19BRExfQkFSUklFUl9OQU1FU1BBQ0UpIFwKLSAgICAmJiAoICAgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCBORE5CT09TVF9URVNURURfQVQoMTQwMCkpIFwKLSAgICAgICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDYxMCkpIFwKLSAgICAgICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0RNQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg4NDApKSBcCi0gICAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4MzIwMikpIFwKLSAgICAgICAgfHwgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTiwgTkROQk9PU1RfVEVTVEVEX0FUKDgxMCkpIFwKLSAgICAgICAgKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfTk9fQURMX0JBUlJJRVJfTkFNRVNQQUNFCi0KLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfQURMX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvYXJyYXlzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2FycmF5cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3MWFmMzQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvYXJyYXlzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0NPTkZJR19BUlJBWVNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0FSUkFZU19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMy0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGFycmF5cy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9tc3ZjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiAgICAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0RFUEVOREVOVF9BUlJBWV9UWVBFUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpIFwKLSAgICAmJiAoIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg2MTApKSBcCi0gICAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgXAotICAgICAgICApCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19OT19ERVBFTkRFTlRfQVJSQVlfVFlQRVMKLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0NPTkZJR19BUlJBWVNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9iY2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvYmNjLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzAzNTU3MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9iY2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0JDQ19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfQkNDX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDA4Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGJjYy5ocHAgNDkyNzIgMjAwOC0xMC0xMSAwNjo1MDo0NlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA0LTA5LTAyIDEwOjQxOjM3IC0wNTAwIChUaHUsIDAyIFNlcCAyMDA0KSAkCi0vLyAkUmV2aXNpb246IDI0ODc0ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotI2lmICAgICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfQkNDNTkwX1dPUktBUk9VTkRTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkgXAotICAgICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA+PSAweDU5MCkgXAotICAgICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg2MTApKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfQkNDNTkwX1dPUktBUk9VTkRTCi0KLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfQkNDX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvYmluZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9iaW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTY4ZDU4Mi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9iaW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0NPTkZJR19CSU5EX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0NPTkZJR19CSU5EX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMgotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGJpbmQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbXN2Yy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi0jaWYgICAgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19CSU5EX1RFTVBMQVRFKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkgXAotICAgICYmICggICBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApIFwKLSAgICAgICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDYxMCkpIFwKLSAgICAgICAgKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfTk9fQklORF9URU1QTEFURQotCi0jZW5kaWYKLQotLy8jZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfTk9fVU5OQU1FRF9QTEFDRUhPTERFUl9TVVBQT1JUCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0NPTkZJR19CSU5EX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY29tcGlsZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY29tcGlsZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDZlNzNiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2NvbXBpbGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0NPTkZJR19DT01QSUxFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfQ09NUElMRVJfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwOAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBjb21waWxlci5ocHAgNTMxODkgMjAwOS0wNS0yMiAyMDowNzo1NVogaGthaXNlciAkCi0vLyAkRGF0ZTogMjAwOS0wNS0yMiAxMzowNzo1NSAtMDcwMCAoRnJpLCAyMiBNYXkgMjAwOSkgJAotLy8gJFJldmlzaW9uOiA1MzE4OSAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0NPTVBJTEVSX0RJUikKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9kdHAuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90dHAuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbXN2Yy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2djYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi0jICAgaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX0NPTVBJTEVSX0RJUiBtc3ZjNjAKLQotIyAgIGVsaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA9PSAxMzAwKQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19DT01QSUxFUl9ESVIgbXN2YzcwCi0KLSMgICBlbGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVBMX0NGR19HQ0MsIE5ETkJPT1NUX1RFU1RFRF9BVCgweDAzMDQpKQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19DT01QSUxFUl9ESVIgZ2NjCi0KLSMgICBlbGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg2MTApKQotIyAgICAgICBpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0RFRkFVTFRfUEFSQU1FVEVSU19JTl9ORVNURURfVEVNUExBVEVTKQotIyAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfQ09NUElMRVJfRElSIGJjYzU1MQotIyAgICAgICBlbGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA+PSAweDU5MCkKLSMgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX0NPTVBJTEVSX0RJUiBiY2MKLSMgICAgICAgZWxzZQotIyAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfQ09NUElMRVJfRElSIGJjY19wcmU1OTAKLSMgICAgICAgZW5kaWYKLQotIyAgIGVsaWYgTkROQk9PU1RfV09SS0FST1VORChfX0RNQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg4NDApKQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19DT01QSUxFUl9ESVIgZG1jCi0KLSMgICBlbGlmIGRlZmluZWQoX19NV0VSS1NfXykKLSMgICAgICAgaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0JST0tFTl9ERUZBVUxUX1BBUkFNRVRFUlNfSU5fTkVTVEVEX1RFTVBMQVRFUykKLSMgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX0NPTVBJTEVSX0RJUiBtd2N3Ci0jICAgICAgIGVsc2UKLSMgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX0NPTVBJTEVSX0RJUiBwbGFpbgotIyAgICAgICBlbmRpZgotCi0jICAgZWxpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX0NPTVBJTEVSX0RJUiBub19jdHBzCi0KLSMgICBlbGlmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19URU1QTEFURV9URU1QTEFURV9QQVJBTUVURVJTKQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19DT01QSUxFUl9ESVIgbm9fdHRwCi0KLSMgICBlbHNlCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX0NPTVBJTEVSX0RJUiBwbGFpbgotIyAgIGVuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX0NPTVBJTEVSX0RJUgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfQ09NUElMRVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNmE1MGEzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0NUUFNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0NUUFNfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBjdHBzLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLSNpZiAgICAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX05PTlRZUEVfVEVNUExBVEVfUEFSVElBTF9TUEVDKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkgXAotICAgICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4NTgyKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfTk9fTk9OVFlQRV9URU1QTEFURV9QQVJUSUFMX1NQRUMKLQotI2VuZGlmCi0KLS8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gaXMgZGVmaW5lZCBpbiA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0NUUFNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9kbWNfYW1iaWd1b3VzX2N0cHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZG1jX2FtYmlndW91c19jdHBzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTE5NjI2Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9kbWNfYW1iaWd1b3VzX2N0cHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0RNQ19BTUJJR1VPVVNfQ1RQU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfRE1DX0FNQklHVU9VU19DVFBTX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGRtY19hbWJpZ3VvdXNfY3Rwcy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotI2lmICAgICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfRE1DX0FNQklHVU9VU19DVFBTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkgXAotICAgICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19ETUNfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4ODQwKSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX0RNQ19BTUJJR1VPVVNfQ1RQUwotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0RNQ19BTUJJR1VPVVNfQ1RQU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2R0cC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9kdHAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Zjc1YTljLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2R0cC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfRFRQX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0NPTkZJR19EVFBfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBkdHAuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLS8vIE1XQ1cgNy54LTguMCAibG9zdHMiIGRlZmF1bHQgdGVtcGxhdGUgcGFyYW1ldGVycyBvZiBuZXN0ZWQgY2xhc3MgCi0vLyB0ZW1wbGF0ZXMgd2hlbiB0aGVpciBvd25lciBjbGFzc2VzIGFyZSBwYXNzZWQgYXMgYXJndW1lbnRzIHRvIG90aGVyIAotLy8gdGVtcGxhdGVzOyBCb3JsYW5kIDUuNS4xICJmb3JnZXRzIiB0aGVtIGZyb20gdGhlIHZlcnkgYmVnaW5uaW5nIChpZiAKLS8vIHRoZSBvd25lciBjbGFzcyBpcyBhIGNsYXNzIHRlbXBsYXRlKSwgYW5kIEJvcmxhbmQgNS42IGlzbid0IGV2ZW4KLS8vIGFibGUgdG8gY29tcGlsZSBhIGRlZmluaXRpb24gb2YgbmVzdGVkIGNsYXNzIHRlbXBsYXRlIHdpdGggRFRQCi0KLSNpZiAgICAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0RFRkFVTFRfUEFSQU1FVEVSU19JTl9ORVNURURfVEVNUExBVEVTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkgXAotICAgICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA+PSAweDU2MCkgXAotICAgICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg2MTApKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfTk9fREVGQVVMVF9QQVJBTUVURVJTX0lOX05FU1RFRF9URU1QTEFURVMKLQotI2VuZGlmCi0KLQotI2lmICAgICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfQlJPS0VOX0RFRkFVTFRfUEFSQU1FVEVSU19JTl9ORVNURURfVEVNUExBVEVTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkgXAotICAgICYmICggICBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIDw9IDB4MzAwMSkgXAotICAgICAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NjEwKSkgXAotICAgICAgICB8fCBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fREVGQVVMVF9QQVJBTUVURVJTX0lOX05FU1RFRF9URU1QTEFURVMpIFwKLSAgICAgICAgKQotICAgICAgICAKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19CUk9LRU5fREVGQVVMVF9QQVJBTUVURVJTX0lOX05FU1RFRF9URU1QTEFURVMKLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0NPTkZJR19EVFBfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9ldGkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZXRpLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2U4OTAxNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9ldGkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0VUSV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfRVRJX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogZXRpLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL21zdmMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotLy8gZmxhZ3MgZm9yIE1TVkMgNi41J3Mgc28tY2FsbGVkICJlYXJseSB0ZW1wbGF0ZSBpbnN0YW50aWF0aW9uIGJ1ZyIKLSNpZiAgICAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX01TVkNfNjBfRVRJX0JVRykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpIFwKLSAgICAmJiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX01TVkNfNjBfRVRJX0JVRwotCi0jZW5kaWYKLQotI2lmICAgICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTVNWQ183MF9FVElfQlVHKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkgXAotICAgICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPT0gMTMwMCkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX01TVkNfNzBfRVRJX0JVRwotCi0jZW5kaWYKLQotI2lmICAgICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTVNWQ19FVElfQlVHKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkgXAotICAgICYmICggZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX01TVkNfNjBfRVRJX0JVRykgXAotICAgICAgICB8fCBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTVNWQ183MF9FVElfQlVHKSBcCi0gICAgICAgICkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX01TVkNfRVRJX0JVRwotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0VUSV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2ZvcndhcmRpbmcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZm9yd2FyZGluZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1N2U1ZWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZm9yd2FyZGluZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfRk9SV0FSRElOR19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfRk9SV0FSRElOR19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBmb3J3YXJkaW5nLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi0jaWYgICAgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19ORVNURURfRk9SV0FSRElORykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpIFwKLSAgICAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NjEwKSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX05PX05FU1RFRF9GT1JXQVJESU5HCi0KLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfRk9SV0FSRElOR19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2djYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9nY2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOTY0NGMxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2djYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfR0NDX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0NPTkZJR19HQ0NfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogZ2NjLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmluZWQoX19FREdfVkVSU0lPTl9fKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX0dDQyAoKF9fR05VQ19fIDw8IDgpIHwgX19HTlVDX01JTk9SX18pCi0jZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX0dDQyAwCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0dDQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2hhc19hcHBseS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9oYXNfYXBwbHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOGRkMTYwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2hhc19hcHBseS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfSEFTX0FQUExZX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0NPTkZJR19IQVNfQVBQTFlfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogaGFzX2FwcGx5LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2hhc194eHguaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9tc3ZjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0hBU19BUFBMWSkgXAotICAgICYmICggICBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fSEFTX1hYWCkgXAotICAgICAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fRURHX1ZFUlNJT05fXywgPCAzMDApIFwKLSAgICAgICAgfHwgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSBcCi0gICAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4MzIwMikpIFwKLSAgICAgICAgKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfTk9fSEFTX0FQUExZCi0KLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfSEFTX0FQUExZX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvaGFzX3h4eC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9oYXNfeHh4LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Y5YTExMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9oYXNfeHh4LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0NPTkZJR19IQVNfWFhYX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0NPTkZJR19IQVNfWFhYX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAyLTIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogaGFzX3h4eC5ocHAgNjM1MTggMjAxMC0wNy0wMiAwODozMjowM1ogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDEwLTA3LTAyIDAxOjMyOjAzIC0wNzAwIChGcmksIDAyIEp1bCAyMDEwKSAkCi0vLyAkUmV2aXNpb246IDYzNTE4ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9vdmVybG9hZF9yZXNvbHV0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLS8vIGFndXJ0LCAxMS9qYW4vMDM6IHNpZ25hbHMgYSBzdHViLW9ubHkgJ2hhc194eHgnIGltcGxlbWVudGF0aW9uCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0hBU19YWFgpIFwKLSAgICAmJiAoICAgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0JST0tFTl9PVkVSTE9BRF9SRVNPTFVUSU9OKSBcCi0gICAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sIDw9IDIpIFwKLSAgICAgICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0RNQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg4NDApKSBcCi0gICAgICAgICkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX05PX0hBU19YWFgKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19OT19IQVNfWFhYX1RFTVBMQVRFCi0KLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfSEFTX1hYWF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2ludGVncmFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2ludGVncmFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzI1YmYwOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9pbnRlZ3JhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfSU5URUdSQUxfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0lOVEVHUkFMX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGludGVncmFsLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL21zdmMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotI2lmICAgICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfQkNDX0lOVEVHUkFMX0NPTlNUQU5UUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpIFwKLSAgICAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NjEwKSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX0JDQ19JTlRFR1JBTF9DT05TVEFOVFMKLQotI2VuZGlmCi0KLSNpZiAgICAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX05FU1RFRF9WQUxVRV9BUklUSE1FVElDKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkgXAotICAgICYmICggTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSBcCi0gICAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19FREdfVkVSU0lPTl9fLCA8PSAyMzgpIFwKLSAgICAgICAgKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfTk9fTkVTVEVEX1ZBTFVFX0FSSVRITUVUSUMKLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0NPTkZJR19JTlRFR1JBTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2ludGVsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2ludGVsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDk3YWI2ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9pbnRlbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfSU5URUxfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0lOVEVMX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGludGVsLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0KLS8vIE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OIGlzIGRlZmluZWQgaGVyZToKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfSU5URUxfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9sYW1iZGEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbGFtYmRhLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjZlMWJiYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9sYW1iZGEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0xBTUJEQV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfTEFNQkRBX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbGFtYmRhLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R0cC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotCi0vLyBhZ3VydCwgMTUvamFuLzAyOiBmdWxsLWZsZWRnZWQgaW1wbGVtZW50YXRpb24gcmVxdWlyZXMgYm90aCAKLS8vIHRlbXBsYXRlIHRlbXBsYXRlIHBhcmFtZXRlcnMgX2FuZF8gcGFydGlhbCBzcGVjaWFsaXphdGlvbgotCi0jaWYgICAgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19GVUxMX0xBTUJEQV9TVVBQT1JUKSBcCi0gICAgJiYgKCAgIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19URU1QTEFURV9URU1QTEFURV9QQVJBTUVURVJTKSBcCi0gICAgICAgIHx8IGRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgXAotICAgICAgICApCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19OT19GVUxMX0xBTUJEQV9TVVBQT1JUCi0KLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfTEFNQkRBX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbXN2Yy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9tc3ZjLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWY3ZmNhYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9tc3ZjLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0NPTkZJR19NU1ZDX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0NPTkZJR19NU1ZDX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbXN2Yy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotCi0vLyBORE5CT09TVF9NU1ZDIGlzIGRlZmluZWQgaGVyZToKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfTVNWQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL21zdmNfdHlwZW5hbWUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbXN2Y190eXBlbmFtZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3MDZhOTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbXN2Y190eXBlbmFtZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfTVNWQ19UWVBFTkFNRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfTVNWQ19UWVBFTkFNRV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IG1zdmNfdHlwZW5hbWUuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbXN2Yy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKQotIyAgIGRlZmluZSBORE5CT09TVF9NU1ZDX1RZUEVOQU1FCi0jZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9NU1ZDX1RZUEVOQU1FIHR5cGVuYW1lCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX01TVkNfVFlQRU5BTUVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9udHRwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL250dHAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Yzc0MDE4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL250dHAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX05UVFBfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX05UVFBfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBudHRwLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL21zdmMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotLy8gTVNWQyA2LjUgSUNFLXMgb24gdGhlIGNvZGUgYXMgc2ltcGxlIGFzIHRoaXMgKHNlZSAiYXV4Xy9udHRwX2RlY2wuaHBwIgotLy8gZm9yIGEgd29ya2Fyb3VuZCk6Ci0vLwotLy8gICAgbmFtZXNwYWNlIHN0ZCB7Ci0vLyAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQ2hhciA+IHN0cnVjdCBzdHJpbmc7Ci0vLyAgICB9Ci0vLwotLy8gICAgdm9pZCBmb28oc3RkOjpzdHJpbmc8Y2hhcj4pOwotLy8KLS8vICAgIG5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotLy8gICAgdGVtcGxhdGU8IGludCA+IHN0cnVjdCBhcmc7Ci0vLyAgICB9fQotCi0jaWYgICAgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OVFRQX0JVRykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpIFwKLSAgICAmJiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX05UVFBfQlVHCi0KLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfTlRUUF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL292ZXJsb2FkX3Jlc29sdXRpb24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvb3ZlcmxvYWRfcmVzb2x1dGlvbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4YWI1ZjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvb3ZlcmxvYWRfcmVzb2x1dGlvbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfT1ZFUkxPQURfUkVTT0xVVElPTl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfT1ZFUkxPQURfUkVTT0xVVElPTl9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IG92ZXJsb2FkX3Jlc29sdXRpb24uaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiAgICAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0JST0tFTl9PVkVSTE9BRF9SRVNPTFVUSU9OKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkgXAotICAgICYmICggICBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPCAweDU5MCkgXAotICAgICAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIDwgMHgzMDAxKSBcCi0gICAgICAgICkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX0JST0tFTl9PVkVSTE9BRF9SRVNPTFVUSU9OCi0KLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfT1ZFUkxPQURfUkVTT0xVVElPTl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3BwX2NvdW50ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvcHBfY291bnRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1ZjNhYzcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvcHBfY291bnRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfUFBfQ09VTlRFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfUFBfQ09VTlRFUl9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwNgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBwcF9jb3VudGVyLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0FVWF9QUF9DT1VOVEVSKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9tc3ZjLmhwcD4KLSMgICBpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID49IDEzMDApCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX1BQX0NPVU5URVIoKSBfX0NPVU5URVJfXwotIyAgIGVsc2UKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfUFBfQ09VTlRFUigpIF9fTElORV9fCi0jICAgZW5kaWYKLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfUFBfQ09VTlRFUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3ByZXByb2Nlc3Nvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9wcmVwcm9jZXNzb3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MjVlNmJiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3ByZXByb2Nlc3Nvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfUFJFUFJPQ0VTU09SX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0NPTkZJR19QUkVQUk9DRVNTT1JfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBwcmVwcm9jZXNzb3IuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0JST0tFTl9QUF9NQUNST19FWFBBTlNJT04pIFwKLSAgICAmJiAoICAgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCA8PSAweDMwMDMpIFwKLSAgICAgICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg1ODIpIFwKLSAgICAgICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0lCTUNQUF9fLCBORE5CT09TVF9URVNURURfQVQoNTAyKSkgXAotICAgICAgICApCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19CUk9LRU5fUFBfTUFDUk9fRVhQQU5TSU9OCi0KLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19PV05fUFBfUFJJTUlUSVZFUykKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19OT19PV05fUFBfUFJJTUlUSVZFUwotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9ORUVEU19UT0tFTl9QQVNUSU5HX09QX0ZPUl9UT0tFTlNfSlVYVEFQT1NJTkcpIFwKLSAgICAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fRE1DX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDg0MCkpCi0jICAgZGVmaW5lIE5ETkJPT1NUX05FRURTX1RPS0VOX1BBU1RJTkdfT1BfRk9SX1RPS0VOU19KVVhUQVBPU0lORwotI2VuZGlmCi0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX1BSRVBST0NFU1NPUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3N0YXRpY19jb25zdGFudC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9zdGF0aWNfY29uc3RhbnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NDIxYjg5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3N0YXRpY19jb25zdGFudC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfU1RBVElDX0NPTlNUQU5UX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0NPTkZJR19TVEFUSUNfQ09OU1RBTlRfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBzdGF0aWNfY29uc3RhbnQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotLy8gTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UIGlzIGRlZmluZWQgaGVyZToKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2Vsc2UKLS8vIHVuZGVmIHRoZSBtYWNybyBmb3IgdGhlIHByZXByb2Nlc3NpbmcgbW9kZQotIyAgIHVuZGVmIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVAotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0NPTkZJR19TVEFUSUNfQ09OU1RBTlRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90dHAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHRwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2RhOTU2MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90dHAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX1RUUF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfVFRQX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogdHRwLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL21zdmMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9nY2MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fVEVNUExBVEVfVEVNUExBVEVfUEFSQU1FVEVSUykgXAotICAgICYmICggZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9URU1QTEFURVMpIFwKLSAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoIF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKCAweDU5MCkgKSBcCi0gICAgICAgKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfTk9fVEVNUExBVEVfVEVNUExBVEVfUEFSQU1FVEVSUwotCi0jZW5kaWYKLQotCi0jaWYgICAgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19FWFRFTkRFRF9URU1QTEFURV9QQVJBTUVURVJTX01BVENISU5HKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkgXAotICAgICYmICggICBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01QTF9DRkdfR0NDLCBORE5CT09TVF9URVNURURfQVQoMHgwMzAyKSkgXAotICAgICAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NjEwKSkgXAotICAgICAgICApCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19FWFRFTkRFRF9URU1QTEFURV9QQVJBTUVURVJTX01BVENISU5HCi0KLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfVFRQX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHlwZW9mLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R5cGVvZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjMmI3MTUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHlwZW9mLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0NPTkZJR19UWVBFT0ZfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX1RZUEVPRl9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMy0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHR5cGVvZi5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9nY2MuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19IQVNfVFlQRU9GKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkgXAotICAgICYmICggICBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfR0NDKSAmJiBORE5CT09TVF9NUExfQ0ZHX0dDQyA+PSAweDAzMDIgXAotICAgICAgICB8fCBkZWZpbmVkKF9fTVdFUktTX18pICYmIF9fTVdFUktTX18gPj0gMHgzMDAwIFwKLSAgICAgICAgKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfSEFTX1RZUEVPRgotCi0jZW5kaWYKLQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkgXAotICAgICYmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19IQVNfVFlQRU9GKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUwotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX1RZUEVPRl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmODEwZTUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfVVNFX1BSRVBST0NFU1NFRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfVVNFX1BSRVBST0NFU1NFRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHVzZV9wcmVwcm9jZXNzZWQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLS8vICNkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfVVNFX1BSRVBST0NFU1NFRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4MGVhYmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfV09SS0FST1VORF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfV09SS0FST1VORF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHdvcmthcm91bmQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0NPTkZJR19XT1JLQVJPVU5EX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb250YWluc19pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29udGFpbnNfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiNWVkMGMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb250YWluc19pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0NPTlRBSU5TX0lNUExfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQ09OVEFJTlNfSU1QTF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEVyaWMgRnJpZWRtYW4gMjAwMgotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBjb250YWluc19pbXBsLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2NvbnRhaW5zX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2JlZ2luX2VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ZpbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ub3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3RyYWl0c19sYW1iZGFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2ZvcndhcmRpbmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9zdGF0aWNfY29uc3RhbnQuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBjb250YWluc19pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFNlcXVlbmNlLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19ORVNURURfRk9SV0FSRElORykKLSAgICAgICAgOiBub3RfPCBpc19zYW1lPAotICAgICAgICAgICAgICB0eXBlbmFtZSBmaW5kPFNlcXVlbmNlLFQ+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGVuZDxTZXF1ZW5jZT46OnR5cGUKLSAgICAgICAgICAgID4gPgotICAgIHsKLSNlbHNlCi0gICAgewotICAgICAgICB0eXBlZGVmIG5vdF88IGlzX3NhbWU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGZpbmQ8U2VxdWVuY2UsVD46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZW5kPFNlcXVlbmNlPjo6dHlwZQotICAgICAgICAgICAgPiA+IHR5cGU7Ci0KLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gCi0gICAgICAgICAgICAgIChub3RfPCBpc19zYW1lPAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgZmluZDxTZXF1ZW5jZSxUPjo6dHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgZW5kPFNlcXVlbmNlPjo6dHlwZQotICAgICAgICAgICAgICAgID4gPjo6dmFsdWUpCi0gICAgICAgICAgICApOwotI2VuZGlmCi0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BTEdPUklUTV9UUkFJVFNfTEFNQkRBX1NQRUMoMixjb250YWluc19pbXBsKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9DT05UQUlOU19JTVBMX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb3VudF9hcmdzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY291bnRfYXJncy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4ZTYzNzQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb3VudF9hcmdzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi0KLS8vIE5PIElOQ0xVREUgR1VBUkRTLCBUSEUgSEVBREVSIElTIElOVEVOREVEIEZPUiBNVUxUSVBMRSBJTkNMVVNJT04KLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGNvdW50X2FyZ3MuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZXhwcl9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2luYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChBVVg3NzgwNzZfQ09VTlRfQVJHU19QQVJBTV9OQU1FKQotIyAgIGRlZmluZSBBVVg3NzgwNzZfQ09VTlRfQVJHU19QQVJBTV9OQU1FIFQKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoQVVYNzc4MDc2X0NPVU5UX0FSR1NfVEVNUExBVEVfUEFSQU0pCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9DT1VOVF9BUkdTX1RFTVBMQVRFX1BBUkFNIHR5cGVuYW1lIEFVWDc3ODA3Nl9DT1VOVF9BUkdTX1BBUkFNX05BTUUKLSNlbmRpZgotCi0vLyBsb2NhbCBtYWNyb3MsICN1bmRlZi1pbmVkIGF0IHRoZSBlbmQgb2YgdGhlIGhlYWRlcgotCi0jaWYgIWRlZmluZWQoQVVYNzc4MDc2X0NPVU5UX0FSR1NfVVNFX1NUQU5EQVJEX1BQX1BSSU1JVElWRVMpCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcmVwZWF0LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFyYW1zLmhwcD4KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfQ09VTlRfQVJHU19SRVBFQVQgTkROQk9PU1RfTVBMX1BQX1JFUEVBVAotIyAgIGRlZmluZSBBVVg3NzgwNzZfQ09VTlRfQVJHU19QQVJBTVMocGFyYW0pIFwKLSAgICBORE5CT09TVF9NUExfUFBfUEFSQU1TKCBcCi0gICAgICAgICAgQVVYNzc4MDc2X0NPVU5UX0FSR1NfQVJJVFkgXAotICAgICAgICAsIHBhcmFtIFwKLSAgICAgICAgKSBcCi0gICAgLyoqLwotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VudW1fc2hpZnRlZF9wYXJhbXMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBlYXQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pbmMuaHBwPgotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9DT1VOVF9BUkdTX1JFUEVBVCBORE5CT09TVF9QUF9SRVBFQVQKLSMgICBkZWZpbmUgQVVYNzc4MDc2X0NPVU5UX0FSR1NfUEFSQU1TKHBhcmFtKSBcCi0gICAgTkROQk9PU1RfUFBfRU5VTV9TSElGVEVEX1BBUkFNUyggXAotICAgICAgICAgIE5ETkJPT1NUX1BQX0lOQyhBVVg3NzgwNzZfQ09VTlRfQVJHU19BUklUWSkgXAotICAgICAgICAsIHBhcmFtIFwKLSAgICAgICAgKSBcCi0gICAgLyoqLwotCi0jZW5kaWYgLy8gQVVYNzc4MDc2X0NPVU5UX0FSR1NfVVNFX1NUQU5EQVJEX1BQX1BSSU1JVElWRVMKLQotCi0jZGVmaW5lIEFVWDc3ODA3Nl9JU19BUkdfVEVNUExBVEVfTkFNRSBcCi0gICAgTkROQk9PU1RfUFBfQ0FUKGlzXyxORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X0NPVU5UX0FSR1NfUFJFRklYLF9hcmcpKSBcCi0vKiovCi0KLSNkZWZpbmUgQVVYNzc4MDc2X0NPVU5UX0FSR1NfRlVOQyh1bnVzZWQsIGksIHBhcmFtKSBcCi0gICAgTkROQk9PU1RfUFBfRVhQUl9JRihpLCArKSBcCi0gICAgQVVYNzc4MDc2X0lTX0FSR19URU1QTEFURV9OQU1FPE5ETkJPT1NUX1BQX0NBVChwYXJhbSxORE5CT09TVF9QUF9JTkMoaSkpPjo6dmFsdWUgXAotLyoqLwotCi0vLyBpc188eHh4Pl9hcmcKLXRlbXBsYXRlPCBBVVg3NzgwNzZfQ09VTlRfQVJHU19URU1QTEFURV9QQVJBTSA+Ci1zdHJ1Y3QgQVVYNzc4MDc2X0lTX0FSR19URU1QTEFURV9OQU1FCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgQVVYNzc4MDc2X0lTX0FSR19URU1QTEFURV9OQU1FPEFVWDc3ODA3Nl9DT1VOVF9BUkdTX0RFRkFVTFQ+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotfTsKLQotLy8gPHh4eD5fY291bnRfYXJncwotdGVtcGxhdGU8Ci0gICAgICBBVVg3NzgwNzZfQ09VTlRfQVJHU19QQVJBTVMoQVVYNzc4MDc2X0NPVU5UX0FSR1NfVEVNUExBVEVfUEFSQU0pCi0gICAgPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfQ09VTlRfQVJHU19QUkVGSVgsX2NvdW50X2FyZ3MpCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSBBVVg3NzgwNzZfQ09VTlRfQVJHU19SRVBFQVQoCi0gICAgICAgICAgQVVYNzc4MDc2X0NPVU5UX0FSR1NfQVJJVFkKLSAgICAgICAgLCBBVVg3NzgwNzZfQ09VTlRfQVJHU19GVU5DCi0gICAgICAgICwgQVVYNzc4MDc2X0NPVU5UX0FSR1NfUEFSQU1fTkFNRQotICAgICAgICApKTsKLX07Ci0KLSN1bmRlZiBBVVg3NzgwNzZfQ09VTlRfQVJHU19GVU5DCi0jdW5kZWYgQVVYNzc4MDc2X0lTX0FSR19URU1QTEFURV9OQU1FCi0jdW5kZWYgQVVYNzc4MDc2X0NPVU5UX0FSR1NfUEFSQU1TCi0jdW5kZWYgQVVYNzc4MDc2X0NPVU5UX0FSR1NfUkVQRUFUCi0KLSN1bmRlZiBBVVg3NzgwNzZfQ09VTlRfQVJHU19BUklUWQotI3VuZGVmIEFVWDc3ODA3Nl9DT1VOVF9BUkdTX0RFRkFVTFQKLSN1bmRlZiBBVVg3NzgwNzZfQ09VTlRfQVJHU19QUkVGSVgKLSN1bmRlZiBBVVg3NzgwNzZfQ09VTlRfQVJHU19VU0VfU1RBTkRBUkRfUFBfUFJJTUlUSVZFUwotI3VuZGVmIEFVWDc3ODA3Nl9DT1VOVF9BUkdTX1RFTVBMQVRFX1BBUkFNCi0jdW5kZWYgQVVYNzc4MDc2X0NPVU5UX0FSR1NfUEFSQU1fTkFNRQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9maW5kX2lmX3ByZWQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9maW5kX2lmX3ByZWQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjJiM2MzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vZmluZF9pZl9wcmVkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0ZJTkRfSUZfUFJFRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9GSU5EX0lGX1BSRURfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEVyaWMgRnJpZWRtYW4gMjAwMgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2l0ZXJfYXBwbHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ub3QuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBQcmVkaWNhdGUgPgotc3RydWN0IGZpbmRfaWZfcHJlZAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIG5vdF88IGF1eDo6aXRlcl9hcHBseTE8UHJlZGljYXRlLEl0ZXJhdG9yPiA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9GSU5EX0lGX1BSRURfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllN2QzNGQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfRk9MRF9JTVBMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0ZPTERfSU1QTF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGZvbGRfaW1wbC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL25leHRfcHJpb3IuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hcHBseS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2RlcmVmLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0jICAgaWYgZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotIyAgICAgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotIyAgICAgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLSMgICBlbmRpZgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBmb2xkX2ltcGwuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9GT0xEX0lNUExfT1AoaXRlcikgdHlwZW5hbWUgZGVyZWY8aXRlcj46OnR5cGUKLSMgICBkZWZpbmUgQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FX1BSRUZJWCBmb2xkCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vZm9sZF9pbXBsX2JvZHkuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfRk9MRF9JTVBMX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9mb2xkX2ltcGxfYm9keS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2ZvbGRfaW1wbF9ib2R5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjdjNGI5YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2ZvbGRfaW1wbF9ib2R5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM2NSArMCwwIEBACi0KLS8vIE5PIElOQ0xVREUgR1VBUkRTLCBUSEUgSEVBREVSIElTIElOVEVOREVEIEZPUiBNVUxUSVBMRSBJTkNMVVNJT04KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0lTX0lURVJBVElORykKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGZvbGRfaW1wbF9ib2R5LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpbWl0cy91bnJvbGxpbmcuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9yZXBlYXQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbnR0cF9kZWNsLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZXRpLmhwcD4KLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGVjLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLQotLy8gbG9jYWwgbWFjcm9zLCAjdW5kZWYtaW5lZCBhdCB0aGUgZW5kIG9mIHRoZSBoZWFkZXIKLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfSVRFUl9GT0xEX1NURVAodW51c2VkLCBpLCB1bnVzZWQyKSBcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFwKLSAgICAgICAgICBGb3J3YXJkT3AgXAotICAgICAgICAsIE5ETkJPT1NUX1BQX0NBVChzdGF0ZSxpKSBcCi0gICAgICAgICwgQVVYNzc4MDc2X0ZPTERfSU1QTF9PUChORE5CT09TVF9QUF9DQVQoaXRlcixpKSkgXAotICAgICAgICA+Ojp0eXBlIE5ETkJPT1NUX1BQX0NBVChzdGF0ZSxORE5CT09TVF9QUF9JTkMoaSkpOyBcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8TkROQk9PU1RfUFBfQ0FUKGl0ZXIsaSk+Ojp0eXBlIFwKLSAgICAgICAgTkROQk9PU1RfUFBfQ0FUKGl0ZXIsTkROQk9PU1RfUFBfSU5DKGkpKTsgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUUgXAotICAgIE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUVfUFJFRklYLF9pbXBsKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9GT0xEX0NIVU5LX05BTUUgXAotICAgIE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUVfUFJFRklYLF9jaHVuaykgXAotICAgIC8qKi8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotdGVtcGxhdGU8Ci0gICAgICBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIE4pCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4gCi1zdHJ1Y3QgQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FOwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLQotIyAgIGlmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPCAweDYwMCkKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgwLCBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HLCA8bmRuYm9vc3QvbXBsL2F1eF8vZm9sZF9pbXBsX2JvZHkuaHBwPikpCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotLy8gaW1wbGVtZW50YXRpb24gZm9yIE4gdGhhdCBleGNlZWRzIE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcKLXRlbXBsYXRlPAotICAgICAgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCBOKQotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+IAotc3RydWN0IEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRQotewotICAgIHR5cGVkZWYgQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcKLSAgICAgICAgLCBGaXJzdAotICAgICAgICAsIExhc3QKLSAgICAgICAgLCBTdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IGNodW5rXzsKLQotICAgIHR5cGVkZWYgQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FPAotICAgICAgICAgICggKE4gLSBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HKSA8IDAgPyAwIDogTiAtIE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcgKQotICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6aXRlcmF0b3IKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjpzdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IHJlc187Ci0gICAgICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLS8vIGZhbGxiYWNrIGltcGxlbWVudGF0aW9uIGZvciBzZXF1ZW5jZXMgb2YgdW5rbm93biBzaXplCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPiAKLXN0cnVjdCBBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUU8LTEsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3A+Ci0gICAgOiBBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUU8Ci0gICAgICAgICAgLTEKLSAgICAgICAgLCB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjxGb3J3YXJkT3AsU3RhdGUsQVVYNzc4MDc2X0ZPTERfSU1QTF9PUChGaXJzdCk+Ojp0eXBlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4gCi1zdHJ1Y3QgQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FPC0xLExhc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3A+Ci17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci19OwotCi0jICAgZWxzZSAvLyBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPCAweDYwMCkKLQotLy8gQm9ybGFuZCBoYXZlIHNvbWUgc2VyaW91cyBwcm9ibGVtcyB3aXRoIHRoZSB1bnJvbGxlZCB2ZXJzaW9uLCBzbwotLy8gd2UgYWx3YXlzIHVzZSBhIGJhc2ljIGltcGxlbWVudGF0aW9uCi10ZW1wbGF0ZTwKLSAgICAgIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgTikKLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPiAKLXN0cnVjdCBBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUUKLXsKLSAgICB0eXBlZGVmIEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRTwKLSAgICAgICAgICAtMQotICAgICAgICAsIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPEZvcndhcmRPcCxTdGF0ZSxBVVg3NzgwNzZfRk9MRF9JTVBMX09QKEZpcnN0KT46OnR5cGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiByZXNfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgc3RhdGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCBOKQotICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+IAotc3RydWN0IEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRTxOLExhc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgc3RhdGUgdHlwZTsKLX07Ci0KLSMgICBlbmRpZiAvLyBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPCAweDYwMCkKLSAKLSNlbHNlIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgTikgPgotc3RydWN0IEFVWDc3ODA3Nl9GT0xEX0NIVU5LX05BTUU7Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywoMCwgTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORywgPG5kbmJvb3N0L21wbC9hdXhfL2ZvbGRfaW1wbF9ib2R5LmhwcD4pKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLS8vIGltcGxlbWVudGF0aW9uIGZvciBOIHRoYXQgZXhjZWVkcyBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCBOKSA+IAotc3RydWN0IEFVWDc3ODA3Nl9GT0xEX0NIVU5LX05BTUUKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+IAotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRTwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORwotICAgICAgICAgICAgLCBGaXJzdAotICAgICAgICAgICAgLCBMYXN0Ci0gICAgICAgICAgICAsIFN0YXRlCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgPiBjaHVua187Ci0KLSAgICAgICAgdHlwZWRlZiBBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUU8Ci0gICAgICAgICAgICAgICggKE4gLSBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HKSA8IDAgPyAwIDogTiAtIE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcgKQotICAgICAgICAgICAgLCB0eXBlbmFtZSBjaHVua186Oml0ZXJhdG9yCi0gICAgICAgICAgICAsIExhc3QKLSAgICAgICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjpzdGF0ZQotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgID4gcmVzXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi0vLyBmYWxsYmFjayBpbXBsZW1lbnRhdGlvbiBmb3Igc2VxdWVuY2VzIG9mIHVua25vd24gc2l6ZQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4gCi1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRV9QUkVGSVgsX3N0ZXApOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUVfUFJFRklYLF9udWxsX3N0ZXApCi17Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci19OwotCi10ZW1wbGF0ZTw+IAotc3RydWN0IEFVWDc3ODA3Nl9GT0xEX0NIVU5LX05BTUU8LTE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPiAKLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGlzX3NhbWU8Rmlyc3QsTGFzdD46OnR5cGUKLSAgICAgICAgICAgICwgTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRV9QUkVGSVgsX251bGxfc3RlcCk8TGFzdCxTdGF0ZT4KLSAgICAgICAgICAgICwgTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRV9QUkVGSVgsX3N0ZXApPEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wPgotICAgICAgICAgICAgPjo6dHlwZSByZXNfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19NU1ZDXzYwX0VUSV9CVUcpCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcmVzdWx0XzxpbnQsaW50LGludCxpbnQ+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpbnQgaXRlcmF0b3I7Ci0gICAgfTsKLSNlbmRpZgotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4gCi1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRV9QUkVGSVgsX3N0ZXApCi17Ci0gICAgLy8gY2FuJ3QgaW5oZXJpdCBoZXJlIC0gaXQgYnJlYWtzIE1TVkMgNy4wCi0gICAgdHlwZWRlZiBBVVg3NzgwNzZfRk9MRF9DSFVOS19OQU1FPC0xPjo6dGVtcGxhdGUgcmVzdWx0XzwKLSAgICAgICAgICB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjxGb3J3YXJkT3AsU3RhdGUsQVVYNzc4MDc2X0ZPTERfSU1QTF9PUChGaXJzdCk+Ojp0eXBlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gY2h1bmtfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaHVua186OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2h1bmtfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCBOKQotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+IAotc3RydWN0IEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRQotICAgIDogQVVYNzc4MDc2X0ZPTERfQ0hVTktfTkFNRTxOPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Rmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3A+Ci17Ci19OwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi19fX0KLQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9GT0xEX0NIVU5LX05BTUUKLSMgICB1bmRlZiBBVVg3NzgwNzZfSVRFUl9GT0xEX1NURVAKLQotI3VuZGVmIEFVWDc3ODA3Nl9GT0xEX0lNUExfT1AKLSN1bmRlZiBBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUVfUFJFRklYCi0KLS8vLy8vIGl0ZXJhdGlvbgotCi0jZWxzZQotCi0jICAgZGVmaW5lIG5fIE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigxKQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUU8bl8sRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3A+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLQotICAgIE5ETkJPT1NUX01QTF9QUF9SRVBFQVQobl8sIEFVWDc3ODA3Nl9JVEVSX0ZPTERfU1RFUCwgdW51c2VkKQotCi0gICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQoc3RhdGUsbl8pIHN0YXRlOwotICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKGl0ZXIsbl8pIGl0ZXJhdG9yOwotfTsKLQotI2Vsc2UKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgQVVYNzc4MDc2X0ZPTERfQ0hVTktfTkFNRTxuXz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotCi0gICAgICAgIE5ETkJPT1NUX01QTF9QUF9SRVBFQVQobl8sIEFVWDc3ODA3Nl9JVEVSX0ZPTERfU1RFUCwgdW51c2VkKQotCi0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKHN0YXRlLG5fKSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQoaXRlcixuXykgaXRlcmF0b3I7Ci0gICAgfTsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19NU1ZDXzYwX0VUSV9CVUcpCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcmVzdWx0XzxpbnQsaW50LGludCxpbnQ+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpbnQgaXRlcmF0b3I7Ci0gICAgfTsKLSNlbmRpZgotfTsKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotIyAgIHVuZGVmIG5fCi0KLSNlbmRpZiAvLyBORE5CT09TVF9QUF9JU19JVEVSQVRJTkcKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vZnVsbF9sYW1iZGEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9mdWxsX2xhbWJkYS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhMzI4NGQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9mdWxsX2xhbWJkYS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNTQgKzAsMCBAQAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HKQotCi0vLy8vLyBoZWFkZXIgYm9keQotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfRlVMTF9MQU1CREFfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfRlVMTF9MQU1CREFfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBmdWxsX2xhbWJkYS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xhbWJkYV9md2QuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9iaW5kX2Z3ZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3Byb3RlY3QuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9xdW90ZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FyZy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9pbnRfZndkLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy90ZW1wbGF0ZV9hcml0eS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R0cC5ocHA+Ci0jICAgaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0VYVEVOREVEX1RFTVBMQVRFX1BBUkFNRVRFUlNfTUFUQ0hJTkcpCi0jICAgICAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jICAgZW5kaWYKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX2FyaXR5X3BhcmFtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBmdWxsX2xhbWJkYS5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGltaXRzL2FyaXR5LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZGVmYXVsdF9wYXJhbXMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9wYXJhbXMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9lbnVtLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcmVwZWF0LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZG1jX2FtYmlndW91c19jdHBzLmhwcD4KLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29tbWFfaWYuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pbmMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotLy8gbG9jYWwgbWFjcm9zLCAjdW5kZWYtaW5lZCBhdCB0aGUgZW5kIG9mIHRoZSBoZWFkZXIKLSMgICBkZWZpbmUgQVVYNzc4MDc2X0xBTUJEQV9QQVJBTVMoaV8sIHBhcmFtKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpXywgcGFyYW0pIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0JJTkRfUEFSQU1TKHBhcmFtKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyggXAotICAgICAgICAgIE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFkgXAotICAgICAgICAsIHBhcmFtIFwKLSAgICAgICAgKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9CSU5EX05fUEFSQU1TKGlfLCBwYXJhbSkgXAotICAgIE5ETkJPT1NUX1BQX0NPTU1BX0lGKGlfKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpXywgcGFyYW0pIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0FSSVRZX1BBUkFNKHBhcmFtKSBcCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfQVJJVFlfUEFSQU0ocGFyYW0pIFwKLSAgICAvKiovCi0KLQotI2RlZmluZSBuXyBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICBORE5CT09TVF9NUExfUFBfREVGQVVMVF9QQVJBTVMobl8sYm9vbCBDLGZhbHNlKQotICAgID4KLXN0cnVjdCBsYW1iZGFfb3IKLSAgICA6IHRydWVfCi17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGFtYmRhX29yPCBORE5CT09TVF9NUExfUFBfRU5VTShuXyxmYWxzZSkgPgotICAgIDogZmFsc2VfCi17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLSN1bmRlZiBuXwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgIEFVWDc3ODA3Nl9BUklUWV9QQVJBTSh0eXBlbmFtZSBBcml0eSkKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhCi17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBUIHJlc3VsdF87Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgaXNfbGFtYmRhX2V4cHJlc3Npb24KLSAgICA6IGxhbWJkYTxUPjo6aXNfbGUKLXsKLX07Ci0KLQotdGVtcGxhdGU8IGludCBOLCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IGxhbWJkYTwgYXJnPE4+LFRhZyBBVVg3NzgwNzZfQVJJVFlfUEFSQU0oaW50XzwtMT4pID4KLXsKLSAgICB0eXBlZGVmIHRydWVfIGlzX2xlOwotICAgIHR5cGVkZWYgbXBsOjphcmc8Tj4gcmVzdWx0XzsgLy8gcXVhbGlmaWVkIGZvciB0aGUgc2FrZSBvZiBNSVBTcHJvIDcuNDEKLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOyAKLX07Ci0KLQotI2RlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgwLCBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZLCA8bmRuYm9vc3QvbXBsL2F1eF8vZnVsbF9sYW1iZGEuaHBwPikpCi0jaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotLy8vIHNwZWNpYWwgY2FzZSBmb3IgJ3Byb3RlY3QnCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBsYW1iZGE8IG1wbDo6cHJvdGVjdDxUPixUYWcgQVVYNzc4MDc2X0FSSVRZX1BBUkFNKGludF88MT4pID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxUPiByZXN1bHRfOwotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotLy8vIHNwZWNpYWxpemF0aW9ucyBmb3IgdGhlIG1haW4gJ2JpbmQnIGZvcm0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgQVVYNzc4MDc2X0JJTkRfUEFSQU1TKHR5cGVuYW1lIFQpCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQ8RixBVVg3NzgwNzZfQklORF9QQVJBTVMoVCk+Ci0gICAgICAgICwgVGFnCi0gICAgICAgIEFVWDc3ODA3Nl9BUklUWV9QQVJBTShpbnRfPE5ETkJPT1NUX1BQX0lOQyhORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZKT4pCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQ8RiwgQVVYNzc4MDc2X0JJTkRfUEFSQU1TKFQpPiByZXN1bHRfOwotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0VYVEVOREVEX1RFTVBMQVRFX1BBUkFNRVRFUlNfTUFUQ0hJTkcpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgICwgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgICwgdHlwZW5hbWUgQXJpdHkKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGxhbWJkYTxGLFRhZzEsQXJpdHk+Ci0gICAgICAgICwgVGFnMgotICAgICAgICAsIGludF88Mz4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBGLFRhZzIgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVGFnMSxUYWcyID4gbDI7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQxPCBxdW90ZTE8YXV4Ojp0ZW1wbGF0ZV9hcml0eT4sIHR5cGVuYW1lIGwxOjpyZXN1bHRfID4gYXJpdHlfOwotICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBpZl88aXNfbGUsYXJpdHlfLEFyaXR5Pjo6dHlwZSxUYWcyID4gbDM7Ci0gICAgCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDM8aXNfbGUsIFRhZzIsIG1wbDo6bGFtYmRhLCBsMSwgbDIsIGwzPiBsZV9yZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotI2VsaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19ETUNfQU1CSUdVT1VTX0NUUFMpCi0KLS8vLyB3b3JrYXJvdW5kIGZvciBNV0NXIDguMysvRURHIDwgMzAzLCBsZWFkcyB0byBhbWJpZ3VpdHkgb24gRGlnaXRhbCBNYXJzCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZzEsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGxhbWJkYTwgRixUYWcxID4KLSAgICAgICAgLCBUYWcyCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgRixUYWcyID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFRhZzEsVGFnMiA+IGwyOwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlOwotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQyPGlzX2xlLCBUYWcyLCBtcGw6OmxhbWJkYSwgbDEsIGwyPiBsZV9yZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotI2VuZGlmCi0KLSMgICB1bmRlZiBBVVg3NzgwNzZfQVJJVFlfUEFSQU0KLSMgICB1bmRlZiBBVVg3NzgwNzZfQklORF9OX1BBUkFNUwotIyAgIHVuZGVmIEFVWDc3ODA3Nl9CSU5EX1BBUkFNUwotIyAgIHVuZGVmIEFVWDc3ODA3Nl9MQU1CREFfUEFSQU1TCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0VYVEVOREVEX1RFTVBMQVRFX1BBUkFNRVRFUlNfTUFUQ0hJTkcpCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMiwgbGFtYmRhKQotI2Vsc2UKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMywgbGFtYmRhKQotI2VuZGlmCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9GVUxMX0xBTUJEQV9IUFBfSU5DTFVERUQKLQotLy8vLy8gaXRlcmF0aW9uLCBkZXB0aCA9PSAxCi0KLS8vIEZvciBnY2MgNC40IGNvbXBhdGFiaWxpdHksIHdlIG11c3QgaW5jbHVkZSB0aGUKLS8vIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCB0ZXN0IGluc2lkZSBhbiAjZWxzZSBjbGF1c2UuCi0jZWxzZSAvLyBORE5CT09TVF9QUF9JU19JVEVSQVRJTkcKLSNpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKSA9PSAxCi0jZGVmaW5lIGlfIE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigxKQotCi0jaWYgaV8gPiAwCi0KLW5hbWVzcGFjZSBhdXggewotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9SRVNVTFQodW51c2VkLCBpXywgVCkgXAotICAgIE5ETkJPT1NUX1BQX0NPTU1BX0lGKGlfKSBcCi0gICAgdHlwZW5hbWUgTkROQk9PU1RfUFBfQ0FUKFQsIE5ETkJPT1NUX1BQX0lOQyhpXykpOjpyZXN1bHRfIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X1RZUEUodW51c2VkLCBpXywgVCkgXAotICAgIE5ETkJPT1NUX1BQX0NPTU1BX0lGKGlfKSBcCi0gICAgdHlwZW5hbWUgTkROQk9PU1RfUFBfQ0FUKFQsIE5ETkJPT1NUX1BQX0lOQyhpXykpOjp0eXBlIFwKLSAgICAvKiovCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgQVVYNzc4MDc2X0xBTUJEQV9QQVJBTVMoaV8sIHR5cGVuYW1lIFApID4gY2xhc3MgRgotICAgICwgQVVYNzc4MDc2X0xBTUJEQV9QQVJBTVMoaV8sIHR5cGVuYW1lIEwpCi0gICAgPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChsZV9yZXN1bHQsaV8pCi17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9QUF9SRVBFQVQoaV8sIEFVWDc3ODA3Nl9UWVBFLCBMKQotICAgICAgICA+IHJlc3VsdF87Ci0gICAgCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IEFVWDc3ODA3Nl9MQU1CREFfUEFSQU1TKGlfLCB0eXBlbmFtZSBQKSA+IGNsYXNzIEYKLSAgICAsIEFVWDc3ODA3Nl9MQU1CREFfUEFSQU1TKGlfLCB0eXBlbmFtZSBMKQotICAgID4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQobGVfcmVzdWx0LGlfKTwgdHJ1ZV8sVGFnLEYsQVVYNzc4MDc2X0xBTUJEQV9QQVJBTVMoaV8sIEwpID4KLXsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChiaW5kLGlfKTwKLSAgICAgICAgICBORE5CT09TVF9QUF9DQVQocXVvdGUsaV8pPEYsVGFnPgotICAgICAgICAsIE5ETkJPT1NUX01QTF9QUF9SRVBFQVQoaV8sIEFVWDc3ODA3Nl9SRVNVTFQsIEwpCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi0jICAgdW5kZWYgQVVYNzc4MDc2X1RZUEUKLSMgICB1bmRlZiBBVVg3NzgwNzZfUkVTVUxUCi0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0xBTUJEQV9UWVBFREVGKHVudXNlZCwgaV8sIFQpIFwKLSAgICB0eXBlZGVmIGxhbWJkYTwgTkROQk9PU1RfUFBfQ0FUKFQsIE5ETkJPT1NUX1BQX0lOQyhpXykpLCBUYWcgPiBcCi0gICAgICAgIE5ETkJPT1NUX1BQX0NBVChsLE5ETkJPT1NUX1BQX0lOQyhpXykpOyBcCi0vKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0lTX0xFX1RZUEVERUYodW51c2VkLCBpXywgdW51c2VkMikgXAotICAgIHR5cGVkZWYgdHlwZW5hbWUgTkROQk9PU1RfUFBfQ0FUKGwsTkROQk9PU1RfUFBfSU5DKGlfKSk6OmlzX2xlIFwKLSAgICAgICAgTkROQk9PU1RfUFBfQ0FUKGlzX2xlLE5ETkJPT1NUX1BQX0lOQyhpXykpOyBcCi0vKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0lTX0xBTUJEQV9FWFBSKHVudXNlZCwgaV8sIHVudXNlZDIpIFwKLSAgICBORE5CT09TVF9QUF9DT01NQV9JRihpXykgXAotICAgIE5ETkJPT1NUX1BQX0NBVChpc19sZSxORE5CT09TVF9QUF9JTkMoaV8pKTo6dmFsdWUgXAotLyoqLwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCBBVVg3NzgwNzZfTEFNQkRBX1BBUkFNUyhpXywgdHlwZW5hbWUgUCkgPiBjbGFzcyBGCi0gICAgLCBBVVg3NzgwNzZfTEFNQkRBX1BBUkFNUyhpXywgdHlwZW5hbWUgVCkKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8IAotICAgICAgICAgIEY8QVVYNzc4MDc2X0xBTUJEQV9QQVJBTVMoaV8sIFQpPgotICAgICAgICAsIFRhZwotICAgICAgICBBVVg3NzgwNzZfQVJJVFlfUEFSQU0oaW50XzxpXz4pCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfUFBfUkVQRUFUKGlfLCBBVVg3NzgwNzZfTEFNQkRBX1RZUEVERUYsIFQpCi0gICAgTkROQk9PU1RfTVBMX1BQX1JFUEVBVChpXywgQVVYNzc4MDc2X0lTX0xFX1RZUEVERUYsIHVudXNlZCkKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX1BQX1JFUEVBVChpXywgQVVYNzc4MDc2X0lTX0xBTUJEQV9FWFBSLCB1bnVzZWQpCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6TkROQk9PU1RfUFBfQ0FUKGxlX3Jlc3VsdCxpXyk8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgQVVYNzc4MDc2X0xBTUJEQV9QQVJBTVMoaV8sIGwpCi0gICAgICAgID4gbGVfcmVzdWx0XzsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9JU19MQU1CREFfRVhQUgotIyAgIHVuZGVmIEFVWDc3ODA3Nl9JU19MRV9UWVBFREVGCi0jICAgdW5kZWYgQVVYNzc4MDc2X0xBTUJEQV9UWVBFREVGCi0KLSNlbmRpZiAvLyBpXyA+IDAKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGIEFVWDc3ODA3Nl9CSU5EX05fUEFSQU1TKGlfLCB0eXBlbmFtZSBUKQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBORE5CT09TVF9QUF9DQVQoYmluZCxpXyk8RiBBVVg3NzgwNzZfQklORF9OX1BBUkFNUyhpXywgVCk+Ci0gICAgICAgICwgVGFnCi0gICAgICAgIEFVWDc3ODA3Nl9BUklUWV9QQVJBTShpbnRfPE5ETkJPT1NUX1BQX0lOQyhpXyk+KQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQoYmluZCxpXyk8Ci0gICAgICAgICAgRgotICAgICAgICBBVVg3NzgwNzZfQklORF9OX1BBUkFNUyhpXywgVCkKLSAgICAgICAgPiByZXN1bHRfOwotICAgICAgICAKLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLSN1bmRlZiBpXwotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpCi0jZW5kaWYgLy8gTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2hhc19hcHBseS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2hhc19hcHBseS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyOTAxMWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9oYXNfYXBwbHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfSEFTX0FQUExZX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0hBU19BUFBMWV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBoYXNfYXBwbHkuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaGFzX3h4eC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2hhc19hcHBseS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0hBU19BUFBMWSkKLU5ETkJPT1NUX01QTF9IQVNfWFhYX1RSQUlUX05BTUVEX0RFRihoYXNfYXBwbHksIGFwcGx5LCBmYWxzZSkKLSNlbHNlCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgZmFsbGJhY2tfID0gZmFsc2VfID4KLXN0cnVjdCBoYXNfYXBwbHkKLSAgICA6IGZhbGxiYWNrXwotewotfTsKLSNlbmRpZgotfX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0hBU19BUFBMWV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vaGFzX2JlZ2luLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vaGFzX2JlZ2luLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjJjMTczZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2hhc19iZWdpbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9IQVNfQkVHSU5fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfSEFTX0JFR0lOX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogaGFzX2JlZ2luLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2hhc194eHguaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci1ORE5CT09TVF9NUExfSEFTX1hYWF9UUkFJVF9OQU1FRF9ERUYoaGFzX2JlZ2luLCBiZWdpbiwgdHJ1ZSkKLX19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9IQVNfQkVHSU5fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2hhc19yZWJpbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9oYXNfcmViaW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTBiNjZlNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2hhc19yZWJpbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfSEFTX1JFQklORF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9IQVNfUkVCSU5EX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogaGFzX3JlYmluZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9tc3ZjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvaW50ZWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19FREdfVkVSU0lPTl9fLCA8PSAyNDQpICYmICFkZWZpbmVkKE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9oYXNfeHh4LmhwcD4KLSNlbGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9oYXNfeHh4LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9tc3ZjX2lzX2NsYXNzLmhwcD4KLSNlbGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg2MTApKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3llc19uby5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3N0YXRpY19jb25zdGFudC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY2xhc3MuaHBwPgotI2Vsc2UKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy90eXBlX3dyYXBwZXIuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3llc19uby5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3N0YXRpY19jb25zdGFudC5ocHA+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0VER19WRVJTSU9OX18sIDw9IDI0NCkgJiYgIWRlZmluZWQoTkROQk9PU1RfSU5URUxfQ1hYX1ZFUlNJT04pCi0KLU5ETkJPT1NUX01QTF9IQVNfWFhYX1RSQUlUX05BTUVEX0RFRihoYXNfcmViaW5kLCByZWJpbmQsIGZhbHNlKQotCi0jZWxpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLQotTkROQk9PU1RfTVBMX0hBU19YWFhfVFJBSVRfTkFNRURfREVGKGhhc19yZWJpbmRfaW1wbCwgcmViaW5kLCBmYWxzZSkKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGhhc19yZWJpbmQKLSAgICA6IGlmXzwgCi0gICAgICAgICAgbXN2Y19pc19jbGFzczxUPgotICAgICAgICAsIGhhc19yZWJpbmRfaW1wbDxUPgotICAgICAgICAsIGJvb2xfPGZhbHNlPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0jZWxzZSAvLyB0aGUgcmVzdAotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBoYXNfcmViaW5kX3RhZyB7fTsKLW5vX3RhZyBvcGVyYXRvcnwoaGFzX3JlYmluZF90YWc8aW50Piwgdm9pZCBjb25zdCB2b2xhdGlsZSopOwotCi0jICAgaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg2MTApKQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGhhc19yZWJpbmQKLXsKLSAgICBzdGF0aWMgaGFzX3JlYmluZF90YWc8VD4qIGdldCgpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IAotICAgICAgICAgIHNpemVvZihoYXNfcmViaW5kX3RhZzxpbnQ+KCkgfCBnZXQoKSkgPT0gc2l6ZW9mKHllc190YWcpCi0gICAgICAgICk7Ci19OwotIyAgIGVsc2UgLy8gX19CT1JMQU5EQ19fCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgaGFzX3JlYmluZF9pbXBsCi17Ci0gICAgc3RhdGljIFQqIGdldCgpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IAotICAgICAgICAgIHNpemVvZihoYXNfcmViaW5kX3RhZzxpbnQ+KCkgfCBnZXQoKSkgPT0gc2l6ZW9mKHllc190YWcpCi0gICAgICAgICk7Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgaGFzX3JlYmluZAotICAgIDogaWZfPCAKLSAgICAgICAgICBpc19jbGFzczxUPgotICAgICAgICAsIGhhc19yZWJpbmRfaW1wbDxUPgotICAgICAgICAsIGJvb2xfPGZhbHNlPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotIyAgIGVuZGlmIC8vIF9fQk9STEFORENfXwotCi0jZW5kaWYKLQotfX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0hBU19SRUJJTkRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2hhc19zaXplLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vaGFzX3NpemUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTVlOTMyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vaGFzX3NpemUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfSEFTX1NJWkVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfSEFTX1NJWkVfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBoYXNfc2l6ZS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9oYXNfeHh4LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotTkROQk9PU1RfTVBMX0hBU19YWFhfVFJBSVRfREVGKHNpemUpCi19fX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfSEFTX1NJWkVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2hhc190YWcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9oYXNfdGFnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWM2MDg2Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2hhc190YWcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfSEFTX1RBR19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9IQVNfVEFHX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogaGFzX3RhZy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9oYXNfeHh4LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotTkROQk9PU1RfTVBMX0hBU19YWFhfVFJBSVRfTkFNRURfREVGKGhhc190YWcsIHRhZywgZmFsc2UpCi19fX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfSEFTX1RBR19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vaGFzX3R5cGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9oYXNfdHlwZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhNWZlMjMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9oYXNfdHlwZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9IQVNfVFlQRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9IQVNfVFlQRV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGhhc190eXBlLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2hhc194eHguaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci1ORE5CT09TVF9NUExfSEFTX1hYWF9UUkFJVF9OQU1FRF9ERUYoaGFzX3R5cGUsIHR5cGUsIHRydWUpCi19fX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfSEFTX1RZUEVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzU3MDMxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotCi0vLyBOTyBJTkNMVURFIEdVQVJEUywgVEhFIEhFQURFUiBJUyBJTlRFTkRFRCBGT1IgTVVMVElQTEUgSU5DTFVTSU9OCi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBpbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jb21waWxlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3ByZXByb2Nlc3Nvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zdHJpbmdpemUuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTkVFRFNfVE9LRU5fUEFTVElOR19PUF9GT1JfVE9LRU5TX0pVWFRBUE9TSU5HKQotIyAgIGRlZmluZSBBVVg3NzgwNzZfUFJFUFJPQ0VTU0VEX0hFQURFUiBcCi0gICAgTkROQk9PU1RfTVBMX0NGR19DT01QSUxFUl9ESVIvTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgXAotLyoqLwotI2Vsc2UKLSMgICBkZWZpbmUgQVVYNzc4MDc2X1BSRVBST0NFU1NFRF9IRUFERVIgXAotICAgIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9NUExfQ0ZHX0NPTVBJTEVSX0RJUiwvKSMjTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgXAotLyoqLwotI2VuZGlmCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fSUJNQ1BQX18sIE5ETkJPT1NUX1RFU1RFRF9BVCg3MDApKQotIyAgIGRlZmluZSBBVVg3NzgwNzZfSU5DTFVERV9TVFJJTkcgTkROQk9PU1RfUFBfU1RSSU5HSVpFKG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9BVVg3NzgwNzZfUFJFUFJPQ0VTU0VEX0hFQURFUikKLSMgICBpbmNsdWRlIEFVWDc3ODA3Nl9JTkNMVURFX1NUUklORwotIyAgIHVuZGVmIEFVWDc3ODA3Nl9JTkNMVURFX1NUUklORwotI2Vsc2UKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX1NUUklOR0laRShuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvQVVYNzc4MDc2X1BSRVBST0NFU1NFRF9IRUFERVIpCi0jZW5kaWYKLQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9QUkVQUk9DRVNTRURfSEVBREVSCi0KLSN1bmRlZiBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9pbnNlcnRlcl9hbGdvcml0aG0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9pbnNlcnRlcl9hbGdvcml0aG0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTc1OTc4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vaW5zZXJ0ZXJfYWxnb3JpdGhtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1OSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9JTlNFUlRFUl9BTEdPUklUSE1fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfSU5TRVJURVJfQUxHT1JJVEhNX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAzLTIwMDQKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAzLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogaW5zZXJ0ZXJfYWxnb3JpdGhtLmhwcCA1NTY0OCAyMDA5LTA4LTE4IDA1OjE2OjUzWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDktMDgtMTcgMjI6MTY6NTMgLTA3MDAgKE1vbiwgMTcgQXVnIDIwMDkpICQKLS8vICRSZXZpc2lvbjogNTU2NDggJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2JhY2tfaW5zZXJ0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9mcm9udF9pbnNlcnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3B1c2hfYmFjay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3B1c2hfZnJvbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9iYWNrX2luc2VydGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZnJvbnRfaW5zZXJ0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9jbGVhci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2V2YWxfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmEuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbW1vbl9uYW1lX3drbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9kZWZhdWx0X3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvZGVjLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9JTlNFUlRFUl9BTEdPUklUSE1fREVGKGFyaXR5LCBuYW1lKSBcCi1ORE5CT09TVF9NUExfQVVYX0NPTU1PTl9OQU1FX1dLTkQobmFtZSkgXAotdGVtcGxhdGU8IFwKLSAgICAgIE5ETkJPT1NUX01QTF9QUF9ERUZBVUxUX1BBUkFNUyhhcml0eSwgdHlwZW5hbWUgUCwgbmEpIFwKLSAgICA+IFwKLXN0cnVjdCBuYW1lIFwKLSAgICA6IGF1eDo6bmFtZSMjX2ltcGw8TkROQk9PU1RfTVBMX1BQX1BBUkFNUyhhcml0eSwgUCk+IFwKLXsgXAotfTsgXAotXAotdGVtcGxhdGU8IFwKLSAgICAgIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoTkROQk9PU1RfUFBfREVDKGFyaXR5KSwgdHlwZW5hbWUgUCkgXAotICAgID4gXAotc3RydWN0IG5hbWU8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoTkROQk9PU1RfUFBfREVDKGFyaXR5KSwgUCksbmEgPiBcCi0gICAgOiBpZl88IGhhc19wdXNoX2JhY2s8IHR5cGVuYW1lIGNsZWFyPFAxPjo6dHlwZT4gXAotICAgICAgICAsIGF1eDo6bmFtZSMjX2ltcGw8IFwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhORE5CT09TVF9QUF9ERUMoYXJpdHkpLCBQKSBcCi0gICAgICAgICAgICAsIGJhY2tfaW5zZXJ0ZXI8IHR5cGVuYW1lIGNsZWFyPFAxPjo6dHlwZSA+IFwKLSAgICAgICAgICAgID4gXAotICAgICAgICAsIGF1eDo6cmV2ZXJzZV8jI25hbWUjI19pbXBsPCBcCi0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoTkROQk9PU1RfUFBfREVDKGFyaXR5KSwgUCkgXAotICAgICAgICAgICAgLCBmcm9udF9pbnNlcnRlcjwgdHlwZW5hbWUgY2xlYXI8UDE+Ojp0eXBlID4gXAotICAgICAgICAgICAgPiBcCi0gICAgICAgID46OnR5cGUgXAoteyBcCi19OyBcCi1cCi10ZW1wbGF0ZTwgXAotICAgICAgTkROQk9PU1RfTVBMX1BQX0RFRkFVTFRfUEFSQU1TKGFyaXR5LCB0eXBlbmFtZSBQLCBuYSkgXAotICAgID4gXAotc3RydWN0IHJldmVyc2VfIyNuYW1lIFwKLSAgICA6IGF1eDo6cmV2ZXJzZV8jI25hbWUjI19pbXBsPE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoYXJpdHksIFApPiBcCi17IFwKLX07IFwKLVwKLXRlbXBsYXRlPCBcCi0gICAgICBORE5CT09TVF9NUExfUFBfUEFSQU1TKE5ETkJPT1NUX1BQX0RFQyhhcml0eSksIHR5cGVuYW1lIFApIFwKLSAgICA+IFwKLXN0cnVjdCByZXZlcnNlXyMjbmFtZTwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhORE5CT09TVF9QUF9ERUMoYXJpdHkpLCBQKSxuYSA+IFwKLSAgICA6IGlmXzwgaGFzX3B1c2hfYmFjazxQMT4gXAotICAgICAgICAsIGF1eDo6cmV2ZXJzZV8jI25hbWUjI19pbXBsPCBcCi0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoTkROQk9PU1RfUFBfREVDKGFyaXR5KSwgUCkgXAotICAgICAgICAgICAgLCBiYWNrX2luc2VydGVyPCB0eXBlbmFtZSBjbGVhcjxQMT46OnR5cGUgPiBcCi0gICAgICAgICAgICA+IFwKLSAgICAgICAgLCBhdXg6Om5hbWUjI19pbXBsPCBcCi0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoTkROQk9PU1RfUFBfREVDKGFyaXR5KSwgUCkgXAotICAgICAgICAgICAgLCBmcm9udF9pbnNlcnRlcjwgdHlwZW5hbWUgY2xlYXI8UDE+Ojp0eXBlID4gXAotICAgICAgICAgICAgPiBcCi0gICAgICAgID46OnR5cGUgXAoteyBcCi19OyBcCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoYXJpdHksIG5hbWUpIFwKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQyhhcml0eSwgcmV2ZXJzZV8jI25hbWUpIFwKLS8qKi8KLQotI2Vsc2UKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX0lOU0VSVEVSX0FMR09SSVRITV9ERUYoYXJpdHksIG5hbWUpIFwKLU5ETkJPT1NUX01QTF9BVVhfQ09NTU9OX05BTUVfV0tORChuYW1lKSBcCi10ZW1wbGF0ZTwgXAotICAgICAgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhORE5CT09TVF9QUF9ERUMoYXJpdHkpLCB0eXBlbmFtZSBQKSBcCi0gICAgPiBcCi1zdHJ1Y3QgZGVmXyMjbmFtZSMjX2ltcGwgXAotICAgIDogaWZfPCBoYXNfcHVzaF9iYWNrPFAxPiBcCi0gICAgICAgICwgYXV4OjpuYW1lIyNfaW1wbDwgXAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfUFBfUEFSQU1TKE5ETkJPT1NUX1BQX0RFQyhhcml0eSksIFApIFwKLSAgICAgICAgICAgICwgYmFja19pbnNlcnRlcjwgdHlwZW5hbWUgY2xlYXI8UDE+Ojp0eXBlID4gXAotICAgICAgICAgICAgPiBcCi0gICAgICAgICwgYXV4OjpyZXZlcnNlXyMjbmFtZSMjX2ltcGw8IFwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhORE5CT09TVF9QUF9ERUMoYXJpdHkpLCBQKSBcCi0gICAgICAgICAgICAsIGZyb250X2luc2VydGVyPCB0eXBlbmFtZSBjbGVhcjxQMT46OnR5cGUgPiBcCi0gICAgICAgICAgICA+IFwKLSAgICAgICAgPjo6dHlwZSBcCi17IFwKLX07IFwKLVwKLXRlbXBsYXRlPCBcCi0gICAgICBORE5CT09TVF9NUExfUFBfREVGQVVMVF9QQVJBTVMoYXJpdHksIHR5cGVuYW1lIFAsIG5hKSBcCi0gICAgPiBcCi1zdHJ1Y3QgbmFtZSBcCi17IFwKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGV2YWxfaWY8IFwKLSAgICAgICAgICBpc19uYTxORE5CT09TVF9QUF9DQVQoUCwgYXJpdHkpPiBcCi0gICAgICAgICwgZGVmXyMjbmFtZSMjX2ltcGw8TkROQk9PU1RfTVBMX1BQX1BBUkFNUyhORE5CT09TVF9QUF9ERUMoYXJpdHkpLCBQKT4gXAotICAgICAgICAsIGF1eDo6bmFtZSMjX2ltcGw8TkROQk9PU1RfTVBMX1BQX1BBUkFNUyhhcml0eSwgUCk+IFwKLSAgICAgICAgPjo6dHlwZSB0eXBlOyBcCi19OyBcCi1cCi10ZW1wbGF0ZTwgXAotICAgICAgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhORE5CT09TVF9QUF9ERUMoYXJpdHkpLCB0eXBlbmFtZSBQKSBcCi0gICAgPiBcCi1zdHJ1Y3QgZGVmX3JldmVyc2VfIyNuYW1lIyNfaW1wbCBcCi0gICAgOiBpZl88IGhhc19wdXNoX2JhY2s8UDE+IFwKLSAgICAgICAgLCBhdXg6OnJldmVyc2VfIyNuYW1lIyNfaW1wbDwgXAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfUFBfUEFSQU1TKE5ETkJPT1NUX1BQX0RFQyhhcml0eSksIFApIFwKLSAgICAgICAgICAgICwgYmFja19pbnNlcnRlcjwgdHlwZW5hbWUgY2xlYXI8UDE+Ojp0eXBlID4gXAotICAgICAgICAgICAgPiBcCi0gICAgICAgICwgYXV4OjpuYW1lIyNfaW1wbDwgXAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfUFBfUEFSQU1TKE5ETkJPT1NUX1BQX0RFQyhhcml0eSksIFApIFwKLSAgICAgICAgICAgICwgZnJvbnRfaW5zZXJ0ZXI8IHR5cGVuYW1lIGNsZWFyPFAxPjo6dHlwZSA+IFwKLSAgICAgICAgICAgID4gXAotICAgICAgICA+Ojp0eXBlIFwKLXsgXAotfTsgXAotdGVtcGxhdGU8IFwKLSAgICAgIE5ETkJPT1NUX01QTF9QUF9ERUZBVUxUX1BBUkFNUyhhcml0eSwgdHlwZW5hbWUgUCwgbmEpIFwKLSAgICA+IFwKLXN0cnVjdCByZXZlcnNlXyMjbmFtZSBcCi17IFwKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGV2YWxfaWY8IFwKLSAgICAgICAgICBpc19uYTxORE5CT09TVF9QUF9DQVQoUCwgYXJpdHkpPiBcCi0gICAgICAgICwgZGVmX3JldmVyc2VfIyNuYW1lIyNfaW1wbDxORE5CT09TVF9NUExfUFBfUEFSQU1TKE5ETkJPT1NUX1BQX0RFQyhhcml0eSksIFApPiBcCi0gICAgICAgICwgYXV4OjpyZXZlcnNlXyMjbmFtZSMjX2ltcGw8TkROQk9PU1RfTVBMX1BQX1BBUkFNUyhhcml0eSwgUCk+IFwKLSAgICAgICAgPjo6dHlwZSB0eXBlOyBcCi19OyBcCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoYXJpdHksIG5hbWUpIFwKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQyhhcml0eSwgcmV2ZXJzZV8jI25hbWUpIFwKLS8qKi8KLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfSU5TRVJURVJfQUxHT1JJVEhNX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9pbnRlZ3JhbF93cmFwcGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vaW50ZWdyYWxfd3JhcHBlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2MjgzNGEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9pbnRlZ3JhbF93cmFwcGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA2Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGludGVncmFsX3dyYXBwZXIuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLS8vIE5PIElOQ0xVREUgR1VBUkRTLCBUSEUgSEVBREVSIElTIElOVEVOREVEIEZPUiBNVUxUSVBMRSBJTkNMVVNJT04hCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaW50ZWdyYWxfY190YWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3N0YXRpY19jYXN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9udHRwX2RlY2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9zdGF0aWNfY29uc3RhbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotCi0jaWYgIWRlZmluZWQoQVVYX1dSQVBQRVJfTkFNRSkKLSMgICBkZWZpbmUgQVVYX1dSQVBQRVJfTkFNRSBORE5CT09TVF9QUF9DQVQoQVVYX1dSQVBQRVJfVkFMVUVfVFlQRSxfKQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChBVVhfV1JBUFBFUl9QQVJBTVMpCi0jICAgZGVmaW5lIEFVWF9XUkFQUEVSX1BBUkFNUyhOKSBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChBVVhfV1JBUFBFUl9WQUxVRV9UWVBFLCBOKQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChBVVhfV1JBUFBFUl9JTlNUKQotIyAgIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgPD0gMHgyNDA3KQotIyAgICAgICBkZWZpbmUgQVVYX1dSQVBQRVJfSU5TVCh2YWx1ZSkgQVVYX1dSQVBQRVJfTkFNRTwgdmFsdWUgPgotIyAgIGVsc2UgCi0jICAgICAgIGRlZmluZSBBVVhfV1JBUFBFUl9JTlNUKHZhbHVlKSBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6QVVYX1dSQVBQRVJfTkFNRTwgdmFsdWUgPgotIyAgIGVuZGlmCi0jZW5kaWYKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotCi10ZW1wbGF0ZTwgQVVYX1dSQVBQRVJfUEFSQU1TKE4pID4KLXN0cnVjdCBBVVhfV1JBUFBFUl9OQU1FCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKEFVWF9XUkFQUEVSX1ZBTFVFX1RZUEUsIHZhbHVlID0gTik7Ci0vLyBhZ3VydCwgMDgvbWFyLzAzOiBTR0kgTUlQU3BybyBDKysgd29ya2Fyb3VuZCwgaGF2ZSB0byAjaWZkZWYgYmVjYXVzZSBzb21lIAotLy8gb3RoZXIgY29tcGlsZXJzIChlLmcuIE1TVkMpIGFyZSBub3QgcGFydGljdWxhcnkgaGFwcHkgYWJvdXQgaXQKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fRURHX1ZFUlNJT05fXywgPD0gMjM4KQotICAgIHR5cGVkZWYgc3RydWN0IEFVWF9XUkFQUEVSX05BTUUgdHlwZTsKLSNlbHNlCi0gICAgdHlwZWRlZiBBVVhfV1JBUFBFUl9OQU1FIHR5cGU7Ci0jZW5kaWYKLSAgICB0eXBlZGVmIEFVWF9XUkFQUEVSX1ZBTFVFX1RZUEUgdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIGludGVncmFsX2NfdGFnIHRhZzsKLQotLy8gaGF2ZSB0byAjaWZkZWYgaGVyZTogc29tZSBjb21waWxlcnMgZG9uJ3QgbGlrZSB0aGUgJ04gKyAxJyBmb3JtIChNU1ZDKSwKLS8vIHdoaWxlIHNvbWUgb3RoZXIgZG9uJ3QgbGlrZSAndmFsdWUgKyAxJyAoQm9ybGFuZCksIGFuZCBzb21lIGRvbid0IGxpa2UKLS8vIGVpdGhlcgotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19FREdfVkVSU0lPTl9fLCA8PSAyNDMpCi0gcHJpdmF0ZToKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoQVVYX1dSQVBQRVJfVkFMVUVfVFlQRSwgbmV4dF92YWx1ZSA9IE5ETkJPT1NUX01QTF9BVVhfU1RBVElDX0NBU1QoQVVYX1dSQVBQRVJfVkFMVUVfVFlQRSwgKE4gKyAxKSkpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChBVVhfV1JBUFBFUl9WQUxVRV9UWVBFLCBwcmlvcl92YWx1ZSA9IE5ETkJPT1NUX01QTF9BVVhfU1RBVElDX0NBU1QoQVVYX1dSQVBQRVJfVkFMVUVfVFlQRSwgKE4gLSAxKSkpOwotIHB1YmxpYzoKLSAgICB0eXBlZGVmIEFVWF9XUkFQUEVSX0lOU1QobmV4dF92YWx1ZSkgbmV4dDsKLSAgICB0eXBlZGVmIEFVWF9XUkFQUEVSX0lOU1QocHJpb3JfdmFsdWUpIHByaW9yOwotI2VsaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU2MSkpIFwKLSAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fSUJNQ1BQX18sIE5ETkJPT1NUX1RFU1RFRF9BVCg1MDIpKSBcCi0gICAgfHwgKE5ETkJPT1NUX1dPUktBUk9VTkQoX19IUF9hQ0MsIDw9IDUzODAwKSAmJiAoTkROQk9PU1RfV09SS0FST1VORChfX2hweHN0ZDk4LCAhPSAxKSkpCi0gICAgdHlwZWRlZiBBVVhfV1JBUFBFUl9JTlNUKCBORE5CT09TVF9NUExfQVVYX1NUQVRJQ19DQVNUKEFVWF9XUkFQUEVSX1ZBTFVFX1RZUEUsIChOICsgMSkpICkgbmV4dDsKLSAgICB0eXBlZGVmIEFVWF9XUkFQUEVSX0lOU1QoIE5ETkJPT1NUX01QTF9BVVhfU1RBVElDX0NBU1QoQVVYX1dSQVBQRVJfVkFMVUVfVFlQRSwgKE4gLSAxKSkgKSBwcmlvcjsKLSNlbHNlCi0gICAgdHlwZWRlZiBBVVhfV1JBUFBFUl9JTlNUKCBORE5CT09TVF9NUExfQVVYX1NUQVRJQ19DQVNUKEFVWF9XUkFQUEVSX1ZBTFVFX1RZUEUsICh2YWx1ZSArIDEpKSApIG5leHQ7Ci0gICAgdHlwZWRlZiBBVVhfV1JBUFBFUl9JTlNUKCBORE5CT09TVF9NUExfQVVYX1NUQVRJQ19DQVNUKEFVWF9XUkFQUEVSX1ZBTFVFX1RZUEUsICh2YWx1ZSAtIDEpKSApIHByaW9yOwotI2VuZGlmCi0KLSAgICAvLyBlbmFibGVzIHVuaWZvcm0gZnVuY3Rpb24gY2FsbCBzeW50YXggZm9yIGZhbWlsaWVzIG9mIG92ZXJsb2FkZWQgCi0gICAgLy8gZnVuY3Rpb25zIHRoYXQgcmV0dXJuIG9iamVjdHMgb2YgYm90aCBhcml0aG1ldGljICgnaW50JywgJ2xvbmcnLAotICAgIC8vICdkb3VibGUnLCBldGMuKSBhbmQgd3JhcHBlZCBpbnRlZ3JhbCB0eXBlcyAoZm9yIGFuIGV4YW1wbGUsIHNlZSAKLSAgICAvLyAibXBsL2V4YW1wbGUvcG93ZXIuY3BwIikKLSAgICBvcGVyYXRvciBBVVhfV1JBUFBFUl9WQUxVRV9UWVBFKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QVVYX1dSQVBQRVJfVkFMVUVfVFlQRT4odGhpcy0+dmFsdWUpOyB9IAotfTsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lOQ0xBU1NfTUVNQkVSX0lOSVRJQUxJWkFUSU9OKQotdGVtcGxhdGU8IEFVWF9XUkFQUEVSX1BBUkFNUyhOKSA+Ci1BVVhfV1JBUFBFUl9WQUxVRV9UWVBFIGNvbnN0IEFVWF9XUkFQUEVSX0lOU1QoTik6OnZhbHVlOwotI2VuZGlmCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi0KLSN1bmRlZiBBVVhfV1JBUFBFUl9OQU1FCi0jdW5kZWYgQVVYX1dSQVBQRVJfUEFSQU1TCi0jdW5kZWYgQVVYX1dSQVBQRVJfSU5TVAotI3VuZGVmIEFVWF9XUkFQUEVSX1ZBTFVFX1RZUEUKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vaXNfbXN2Y19ldGlfYXJnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vaXNfbXN2Y19ldGlfYXJnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTRhOTNlYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2lzX21zdmNfZXRpX2FyZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9JU19NU1ZDX0VUSV9BUkdfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfSVNfTVNWQ19FVElfQVJHX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogaXNfbXN2Y19ldGlfYXJnLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8veWVzX25vLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZXRpLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvc3RhdGljX2NvbnN0YW50LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX01TVkNfRVRJX0JVRykKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19NU1ZDXzYwX0VUSV9CVUcpCi0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBpc19tc3ZjX2V0aV9hcmcKLXsgCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotfTsKLQotI2Vsc2UgLy8gTkROQk9PU1RfTVBMX0NGR19NU1ZDXzYwX0VUSV9CVUcKLQotc3RydWN0IGV0aV9pbnRfY29udmVydGlibGUKLXsKLSAgICBldGlfaW50X2NvbnZlcnRpYmxlKGludCk7Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgaXNfbXN2Y19ldGlfYXJnCi17IAotICAgIHN0YXRpYyBub190YWcgdGVzdCguLi4pOwotICAgIHN0YXRpYyB5ZXNfdGFnIHRlc3QoZXRpX2ludF9jb252ZXJ0aWJsZSk7Ci0gICAgc3RhdGljIFQmIGdldCgpOwotCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gCi0gICAgICAgICAgc2l6ZW9mKHRlc3QoZ2V0KCkpKSA9PSBzaXplb2YoeWVzX3RhZykKLSAgICAgICAgKTsKLX07Ci0KLSNlbmRpZgotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfbXN2Y19ldGlfYXJnPGludD4KLXsgCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7Ci19OwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19NU1ZDX0VUSV9CVUcKLQotfX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0lTX01TVkNfRVRJX0FSR19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vaXRlcl9hcHBseS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2l0ZXJfYXBwbHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YjNiN2ZlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vaXRlcl9hcHBseS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0lURVJfQVBQTFlfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9JVEVSX0FQUExZX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogaXRlcl9hcHBseS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hcHBseS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2RlcmVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICAsIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgPgotc3RydWN0IGl0ZXJfYXBwbHkxCi0gICAgOiBhcHBseTE8IEYsdHlwZW5hbWUgZGVyZWY8SXRlcmF0b3I+Ojp0eXBlID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgICwgdHlwZW5hbWUgSXRlcmF0b3IxCi0gICAgLCB0eXBlbmFtZSBJdGVyYXRvcjIKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9hcHBseTIKLSAgICA6IGFwcGx5MjwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgZGVyZWY8SXRlcmF0b3IxPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGRlcmVmPEl0ZXJhdG9yMj46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotfX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfSVRFUl9BUFBMWV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vaXRlcl9mb2xkX2lmX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzZDkzYmUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMTAgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfSVRFUl9GT0xEX0lGX0lNUExfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfSVRFUl9GT0xEX0lGX0lNUExfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDEtMjAwMgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBpdGVyX2ZvbGRfaWZfaW1wbC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lkZW50aXR5LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbmV4dC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXBwbHkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ZhbHVlX3drbmQuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBpdGVyX2ZvbGRfaWZfaW1wbC5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGltaXRzL3Vucm9sbGluZy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvc3ViLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZWF0LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaW5jLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGVjLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIFN0YXRlID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwCi17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8IGJvb2wgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGVPcAotICAgICAgICAsIHR5cGVuYW1lIEl0ZXJhdG9yT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjxTdGF0ZU9wLFN0YXRlLEl0ZXJhdG9yPjo6dHlwZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBJdGVyYXRvck9wOjp0eXBlIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGVPcAotICAgICAgICAsIHR5cGVuYW1lIEl0ZXJhdG9yT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi0vLyBhZ3VydCwgMjUvanVuLzAyOiBNU1ZDIDYuNSB3b3JrYXJvdW5kLCBoYWQgdG8gZ2V0IHJpZCBvZiBpbmhlcml0YW5jZSAKLS8vIGhlcmUgYW5kIGluICdpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcCcsIGJlY2F1c2Ugc29tZXRpbWVzIGl0IGludGVyZmVyZWQgCi0vLyB3aXRoIHRoZSAiZWFybHkgdGVtcGxhdGUgaW5zdGFudGlhdGlvbiBidWciIGluIF9yZWFsbHlfIHVnbHkgd2F5cwotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICwgdHlwZW5hbWUgUHJlZGljYXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjxQcmVkaWNhdGUsU3RhdGUsSXRlcmF0b3I+Ojp0eXBlIG5vdF9sYXN0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChub3RfbGFzdCk6OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IEl0ZXJhdG9yLFN0YXRlLEZvcndhcmRPcCxtcGw6Om5leHQ8SXRlcmF0b3I+ID4gaW1wbF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBQcmVkaWNhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjxQcmVkaWNhdGUsU3RhdGUsSXRlcmF0b3I+Ojp0eXBlIG5vdF9sYXN0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChub3RfbGFzdCk6OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IEl0ZXJhdG9yLFN0YXRlLEJhY2t3YXJkT3AsaWRlbnRpdHk8SXRlcmF0b3I+ID4gaW1wbF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLQotLy8gbG9jYWwgbWFjcm9zLCAjdW5kZWYtaW5lZCBhdCB0aGUgZW5kIG9mIHRoZSBoZWFkZXIKLQotIyAgIGRlZmluZSBBVVhfSVRFUl9GT0xEX0ZPUldBUkRfU1RFUCh1bnVzZWQsIGksIHVudXNlZDIpIFwKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IFwKLSAgICAgICAgICB0eXBlbmFtZSBORE5CT09TVF9QUF9DQVQoZm9yd2FyZF9zdGVwLGkpOjppdGVyYXRvciBcCi0gICAgICAgICwgdHlwZW5hbWUgTkROQk9PU1RfUFBfQ0FUKGZvcndhcmRfc3RlcCxpKTo6c3RhdGUgXAotICAgICAgICAsIEZvcndhcmRPcCBcCi0gICAgICAgICwgRm9yd2FyZFByZWRpY2F0ZSBcCi0gICAgICAgID4gTkROQk9PU1RfUFBfQ0FUKGZvcndhcmRfc3RlcCwgTkROQk9PU1RfUFBfSU5DKGkpKTsgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVhfSVRFUl9GT0xEX0JBQ0tXQVJEX1NURVBfRlVOQyhpKSBcCi0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgXAotICAgICAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX1BQX0NBVChmb3J3YXJkX3N0ZXAsTkROQk9PU1RfUFBfREVDKGkpKTo6aXRlcmF0b3IgXAotICAgICAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX1BQX0NBVChiYWNrd2FyZF9zdGVwLGkpOjpzdGF0ZSBcCi0gICAgICAgICwgQmFja3dhcmRPcCBcCi0gICAgICAgICwgQmFja3dhcmRQcmVkaWNhdGUgXAotICAgICAgICA+IE5ETkJPT1NUX1BQX0NBVChiYWNrd2FyZF9zdGVwLE5ETkJPT1NUX1BQX0RFQyhpKSk7IFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYX0lURVJfRk9MRF9CQUNLV0FSRF9TVEVQKHVudXNlZCwgaSwgdW51c2VkMikgXAotICAgIEFVWF9JVEVSX0ZPTERfQkFDS1dBUkRfU1RFUF9GVU5DKCBcCi0gICAgICAgIE5ETkJPT1NUX1BQX1NVQl9EKDEsTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORyxpKSBcCi0gICAgICAgICkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVhfTEFTVF9GT1JXQVJEX1NURVAgXAotICAgIE5ETkJPT1NUX1BQX0NBVChmb3J3YXJkX3N0ZXAsIE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcpIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYX0xBU1RfQkFDS1dBUkRfU1RFUCBcCi0gICAgTkROQk9PU1RfUFBfQ0FUKGJhY2t3YXJkX3N0ZXAsIE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcpIFwKLSAgICAvKiovCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRQcmVkaWNhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkUHJlZGljYXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9pbXBsCi17Ci0gcHJpdmF0ZToKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9udWxsX3N0ZXA8SXRlcmF0b3IsU3RhdGU+IGZvcndhcmRfc3RlcDA7Ci0gICAgTkROQk9PU1RfUFBfUkVQRUFUKAotICAgICAgICAgIE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcKLSAgICAgICAgLCBBVVhfSVRFUl9GT0xEX0ZPUldBUkRfU1RFUAotICAgICAgICAsIHVudXNlZAotICAgICAgICApCi0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgdHlwZW5hbWUgQVVYX0xBU1RfRk9SV0FSRF9TVEVQOjpub3RfbGFzdAotICAgICAgICAsIGl0ZXJfZm9sZF9pZl9pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBBVVhfTEFTVF9GT1JXQVJEX1NURVA6Oml0ZXJhdG9yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIEFVWF9MQVNUX0ZPUldBUkRfU1RFUDo6c3RhdGUKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICAsIEZvcndhcmRQcmVkaWNhdGUKLSAgICAgICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAgICAgLCBCYWNrd2FyZFByZWRpY2F0ZQotICAgICAgICAgICAgPgotICAgICAgICAsIGl0ZXJfZm9sZF9pZl9udWxsX3N0ZXA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEFVWF9MQVNUX0ZPUldBUkRfU1RFUDo6aXRlcmF0b3IKLSAgICAgICAgICAgICwgdHlwZW5hbWUgQVVYX0xBU1RfRk9SV0FSRF9TVEVQOjpzdGF0ZQotICAgICAgICAgICAgPgotICAgICAgICA+Ojp0eXBlIEFVWF9MQVNUX0JBQ0tXQVJEX1NURVA7Ci0KLSAgICBORE5CT09TVF9QUF9SRVBFQVQoCi0gICAgICAgICAgTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORwotICAgICAgICAsIEFVWF9JVEVSX0ZPTERfQkFDS1dBUkRfU1RFUAotICAgICAgICAsIHVudXNlZAotICAgICAgICApCi0KLSBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMDo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBBVVhfTEFTVF9CQUNLV0FSRF9TVEVQOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLSMgICB1bmRlZiBBVVhfTEFTVF9CQUNLV0FSRF9TVEVQCi0jICAgdW5kZWYgQVVYX0xBU1RfRk9SV0FSRF9TVEVQCi0jICAgdW5kZWYgQVVYX0lURVJfRk9MRF9CQUNLV0FSRF9TVEVQCi0jICAgdW5kZWYgQVVYX0lURVJfRk9MRF9CQUNLV0FSRF9TVEVQX0ZVTkMKLSMgICB1bmRlZiBBVVhfSVRFUl9GT0xEX0ZPUldBUkRfU1RFUAotCi19fX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0lURVJfRk9MRF9JRl9JTVBMX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9pdGVyX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2l0ZXJfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjE1NDEyNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2l0ZXJfZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0lURVJfRk9MRF9JTVBMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0lURVJfRk9MRF9JTVBMX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogaXRlcl9mb2xkX2ltcGwuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9uZXh0X3ByaW9yLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXBwbHkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLSMgICBpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0jICAgICAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jICAgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotIyAgIGVuZGlmCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIGl0ZXJfZm9sZF9pbXBsLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfRk9MRF9JTVBMX09QKGl0ZXIpIGl0ZXIKLSMgICBkZWZpbmUgQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FX1BSRUZJWCBpdGVyX2ZvbGQKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9mb2xkX2ltcGxfYm9keS5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9JVEVSX0ZPTERfSU1QTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX2FyaXR5X3BhcmFtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX2FyaXR5X3BhcmFtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzY5NDI1ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9hcml0eV9wYXJhbS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfQVJJVFlfUEFSQU1fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX0FSSVRZX1BBUkFNX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbGFtYmRhX2FyaXR5X3BhcmFtLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R0cC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0VYVEVOREVEX1RFTVBMQVRFX1BBUkFNRVRFUlNfTUFUQ0hJTkcpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX0FSSVRZX1BBUkFNKHBhcmFtKSAgICAKLSNlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX0FSSVRZX1BBUkFNKHBhcmFtKSAsIHBhcmFtCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX0FSSVRZX1BBUkFNX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfbm9fY3Rwcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9ub19jdHBzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGRhNDcxNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9ub19jdHBzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5MyArMCwwIEBACi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9QUF9JU19JVEVSQVRJTkcpCi0KLS8vLy8vIGhlYWRlciBib2R5Ci0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfTk9fQ1RQU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfTk9fQ1RQU19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxhbWJkYV9ub19jdHBzLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGFtYmRhX2Z3ZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2JpbmRfZndkLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvcHJvdGVjdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lzX3BsYWNlaG9sZGVyLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9pZGVudGl0eS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy90ZW1wbGF0ZV9hcml0eS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdmFsdWVfd2tuZC5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICAgICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIGxhbWJkYV9ub19jdHBzLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saW1pdHMvYXJpdHkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9wYXJhbXMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9kZWZhdWx0X3BhcmFtcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3JlcGVhdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2VudW0uaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9tc3ZjLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29tbWFfaWYuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaW5jLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0xBTUJEQV9QQVJBTVMoaV8sIHBhcmFtKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpXywgcGFyYW0pIFwKLSAgICAvKiovCi0KLW5hbWVzcGFjZSBhdXggewotCi0jZGVmaW5lIG5fIE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFkKLXRlbXBsYXRlPAotICAgICAgTkROQk9PU1RfTVBMX1BQX0RFRkFVTFRfUEFSQU1TKG5fLGJvb2wgQyxmYWxzZSkKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhX29yCi0gICAgOiB0cnVlXwotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxhbWJkYV9vcjwgTkROQk9PU1RfTVBMX1BQX0VOVU0obl8sZmFsc2UpID4KLSAgICA6IGZhbHNlXwotewotfTsKLSN1bmRlZiBuXwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgQXJpdHkgPiBzdHJ1Y3QgbGFtYmRhX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICB0eXBlZGVmIGlzX3BsYWNlaG9sZGVyPFQ+IGlzX2xlOwotICAgIH07Ci19OwotCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDEsIE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFksIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfbm9fY3Rwcy5ocHA+KSkKLSNpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICAsIHR5cGVuYW1lIFByb3RlY3QKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhCi17Ci0gICAgLy8vIE1ldGFmdW5jdGlvbiBmb3J3YXJkaW5nIGNvbmZ1c2VzIE1TVkMgNi54Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnRlbXBsYXRlX2FyaXR5PFQ+Ojp0eXBlIGFyaXR5XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX2ltcGw8YXJpdHlfPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQsVGFnLFByb3RlY3QgPiBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbF86OnR5cGUgdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxfOjppc19sZSBpc19sZTsKLSAgICAKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDMsIGxhbWJkYSwgKFQsIFRhZywgUHJvdGVjdCkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDEsIDMsIGxhbWJkYSkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IGlzX2xhbWJkYV9leHByZXNzaW9uCi0gICAgOiBsYW1iZGE8VD46OmlzX2xlCi17Ci19OwotCi0jICAgdW5kZWYgQVVYNzc4MDc2X0xBTUJEQV9QQVJBTVMKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9OT19DVFBTX0hQUF9JTkNMVURFRAotCi0vLy8vLyBpdGVyYXRpb24sIGRlcHRoID09IDEKLQotI2Vsc2UKLQotI2RlZmluZSBpXyBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkKLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfTEFNQkRBX1RZUEVERUYodW51c2VkLCBpXywgRikgXAotICAgIHR5cGVkZWYgbGFtYmRhPCBcCi0gICAgICAgICAgdHlwZW5hbWUgRjo6TkROQk9PU1RfUFBfQ0FUKGFyZyxORE5CT09TVF9QUF9JTkMoaV8pKSBcCi0gICAgICAgICwgVGFnIFwKLSAgICAgICAgLCBmYWxzZV8gXAotICAgICAgICA+IE5ETkJPT1NUX1BQX0NBVChsLE5ETkJPT1NUX1BQX0lOQyhpXykpOyBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9JU19MRV9UWVBFREVGKHVudXNlZCwgaV8sIHVudXNlZDIpIFwKLSAgICB0eXBlZGVmIHR5cGVuYW1lIE5ETkJPT1NUX1BQX0NBVChsLE5ETkJPT1NUX1BQX0lOQyhpXykpOjppc19sZSBcCi0gICAgICAgIE5ETkJPT1NUX1BQX0NBVChpc19sZSxORE5CT09TVF9QUF9JTkMoaV8pKTsgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfSVNfTEFNQkRBX0VYUFIodW51c2VkLCBpXywgdW51c2VkMikgXAotICAgIE5ETkJPT1NUX1BQX0NPTU1BX0lGKGlfKSBcCi0gICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoTkROQk9PU1RfUFBfQ0FUKGlzX2xlLE5ETkJPT1NUX1BQX0lOQyhpXykpKTo6dmFsdWUgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfTEFNQkRBX1JFU1VMVCh1bnVzZWQsIGlfLCB1bnVzZWQyKSBcCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9QUF9DQVQobCxORE5CT09TVF9QUF9JTkMoaV8pKTo6dHlwZSBcCi0gICAgLyoqLwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50XzxpXz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTVBMX1BQX1JFUEVBVChpXywgQVVYNzc4MDc2X0xBTUJEQV9UWVBFREVGLCBGKQotICAgICAgICBORE5CT09TVF9NUExfUFBfUkVQRUFUKGlfLCBBVVg3NzgwNzZfSVNfTEVfVFlQRURFRiwgdW51c2VkKQotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9QUF9SRVBFQVQoaV8sIEFVWDc3ODA3Nl9JU19MQU1CREFfRVhQUiwgdW51c2VkKQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChiaW5kLGlfKTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICBORE5CT09TVF9NUExfUFBfUkVQRUFUKGlfLCBBVVg3NzgwNzZfTEFNQkRBX1JFU1VMVCwgdW51c2VkKQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLSMgICB1bmRlZiBBVVg3NzgwNzZfTEFNQkRBX1JFU1VMVAotIyAgIHVuZGVmIEFVWDc3ODA3Nl9JU19MQU1CREFfRVhQUgotIyAgIHVuZGVmIEFVWDc3ODA3Nl9JU19MRV9UWVBFREVGCi0jICAgdW5kZWYgQVVYNzc4MDc2X0xBTUJEQV9UWVBFREVGCi0KLSN1bmRlZiBpXwotCi0jZW5kaWYgLy8gTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zcGVjLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3NwZWMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZDI1YTM1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3NwZWMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NQRUNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NQRUNfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBsYW1iZGFfc3BlYy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92b2lkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGFtYmRhX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ludF9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9hcml0eV9wYXJhbS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2xhbWJkYS5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0ZVTExfTEFNQkRBX1NVUFBPUlQpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9QQVNTX1RIUk9VR0hfTEFNQkRBX1NQRUMoaSwgbmFtZSkgXAotdGVtcGxhdGU8IFwKLSAgICAgIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaSwgdHlwZW5hbWUgVCkgXAotICAgICwgdHlwZW5hbWUgVGFnIFwKLSAgICA+IFwKLXN0cnVjdCBsYW1iZGE8IFwKLSAgICAgIG5hbWU8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaSwgVCkgPiBcCi0gICAgLCBUYWcgXAotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX0FSSVRZX1BBUkFNKGludF88aT4pIFwKLSAgICA+IFwKLXsgXAotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOyBcCi0gICAgdHlwZWRlZiBuYW1lPCBORE5CT09TVF9NUExfUFBfUEFSQU1TKGksIFQpID4gcmVzdWx0XzsgXAotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOyBcCi19OyBcCi0vKiovCi0KLSNlbHNlCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9QQVNTX1RIUk9VR0hfTEFNQkRBX1NQRUMoaSwgbmFtZSkgLyoqLwotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NQRUNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTA4Zjk4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTY5ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbGFtYmRhX3N1cHBvcnQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbGFtYmRhLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fRlVMTF9MQU1CREFfU1VQUE9SVCkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoaSwgbmFtZSwgcGFyYW1zKSAvKiovCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoaSxuYW1lLHBhcmFtcykgLyoqLwotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ludF9md2QuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3llc19uby5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfZndkLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFyYW1zLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZW51bS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL21zdmMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS90b19saXN0LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9mb3JfZWFjaF9pLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaW5jLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX0FSR19UWVBFREVGX0ZVTkMoUix0eXBlZGVmXyxpLHBhcmFtKSBcCi0gICAgdHlwZWRlZl8gcGFyYW0gTkROQk9PU1RfUFBfQ0FUKGFyZyxORE5CT09TVF9QUF9JTkMoaSkpOyBcCi0gICAgLyoqLwotCi0vLyBhZ3VydCwgMDcvbWFyLzAzOiByZXN0b3JlIGFuIG9sZCByZXZpc2lvbiBmb3IgdGhlIHNha2Ugb2YgU0dJIE1JUFNwcm8gQysrCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0VER19WRVJTSU9OX18sIDw9IDIzOCkgCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVChpLCBuYW1lLCBwYXJhbXMpIFwKLSAgICB0eXBlZGVmIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjppbnRfPGk+IGFyaXR5OyBcCi0gICAgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX1IoIFwKLSAgICAgICAgICAxIFwKLSAgICAgICAgLCBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX0FSR19UWVBFREVGX0ZVTkMgXAotICAgICAgICAsIHR5cGVkZWYgXAotICAgICAgICAsIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1QoaSxwYXJhbXMpIFwKLSAgICAgICAgKSBcCi0gICAgc3RydWN0IHJlYmluZCBcCi0gICAgeyBcCi0gICAgICAgIHRlbXBsYXRlPCBORE5CT09TVF9NUExfUFBfUEFSQU1TKGksdHlwZW5hbWUgVSkgPiBzdHJ1Y3QgYXBwbHkgXAotICAgICAgICAgICAgOiBuYW1lPCBORE5CT09TVF9NUExfUFBfUEFSQU1TKGksVSkgPiBcCi0gICAgICAgIHsgXAotICAgICAgICB9OyBcCi0gICAgfTsgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoaSwgbmFtZSwgcGFyYW1zKSBcCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVChpLCBuYW1lLCBwYXJhbXMpIFwKLSAgICAvKiovCi0KLSNlbGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19FREdfVkVSU0lPTl9fLCA8PSAyNDQpICYmICFkZWZpbmVkKE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OKQotLy8gYWd1cnQsIDE4L2phbi8wMzogb2xkIEVERy1iYXNlZCBjb21waWxlcnMgYWN0dWFsbHkgZW5mb3JjZSAxMS40IHBhcmEgOQotLy8gKGluIHN0cmljdCBtb2RlKSwgc28gd2UgaGF2ZSB0byBwcm92aWRlIGFuIGFsdGVybmF0aXZlIHRvIHRoZSAKLS8vIE1TVkMtb3B0aW1pemVkIGltcGxlbWVudGF0aW9uCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKGksIG5hbWUsIHBhcmFtcykgXAotICAgIHR5cGVkZWYgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6OmludF88aT4gYXJpdHk7IFwKLSAgICBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfUiggXAotICAgICAgICAgIDEgXAotICAgICAgICAsIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfQVJHX1RZUEVERUZfRlVOQyBcCi0gICAgICAgICwgdHlwZWRlZiBcCi0gICAgICAgICwgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVChpLHBhcmFtcykgXAotICAgICAgICApIFwKLSAgICBzdHJ1Y3QgcmViaW5kOyBcCi0vKiovCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVChpLCBuYW1lLCBwYXJhbXMpIFwKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoaSwgbmFtZSwgcGFyYW1zKSBcCi19OyBcCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpLHR5cGVuYW1lIFQpID4gXAotc3RydWN0IG5hbWU8TkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpLFQpPjo6cmViaW5kIFwKLXsgXAotICAgIHRlbXBsYXRlPCBORE5CT09TVF9NUExfUFBfUEFSQU1TKGksdHlwZW5hbWUgVSkgPiBzdHJ1Y3QgYXBwbHkgXAotICAgICAgICA6IG5hbWU8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaSxVKSA+IFwKLSAgICB7IFwKLSAgICB9OyBcCi0vKiovCi0KLSNlbHNlIC8vIF9fRURHX1ZFUlNJT05fXwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBoYXNfcmViaW5kX3RhZzsKLX19fQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQyhpLCBuYW1lLCBwYXJhbXMpIFwKLSAgICB0eXBlZGVmIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjppbnRfPGk+IGFyaXR5OyBcCi0gICAgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX1IoIFwKLSAgICAgICAgICAxIFwKLSAgICAgICAgLCBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX0FSR19UWVBFREVGX0ZVTkMgXAotICAgICAgICAsIHR5cGVkZWYgXAotICAgICAgICAsIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1QoaSxwYXJhbXMpIFwKLSAgICAgICAgKSBcCi0gICAgZnJpZW5kIGNsYXNzIE5ETkJPT1NUX1BQX0NBVChuYW1lLF9yZWJpbmQpOyBcCi0gICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQobmFtZSxfcmViaW5kKSByZWJpbmQ7IFwKLS8qKi8KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg2MTApKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX0hBU19SRUJJTkQoaSwgbmFtZSwgcGFyYW1zKSBcCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpLHR5cGVuYW1lIFQpID4gXAotOjpuZG5ib29zdDo6bXBsOjphdXg6Onllc190YWcgb3BlcmF0b3J8KCBcCi0gICAgICA6Om5kbmJvb3N0OjptcGw6OmF1eDo6aGFzX3JlYmluZF90YWc8aW50PiBcCi0gICAgLCBuYW1lPE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaSxUKT4qIFwKLSAgICApOyBcCi06Om5kbmJvb3N0OjptcGw6OmF1eDo6bm9fdGFnIG9wZXJhdG9yfCggXAotICAgICAgOjpuZG5ib29zdDo6bXBsOjphdXg6Omhhc19yZWJpbmRfdGFnPGludD4gXAotICAgICwgbmFtZTwgTkROQk9PU1RfTVBMX1BQX0VOVU0oaSw6Om5kbmJvb3N0OjptcGw6Om5hKSA+KiBcCi0gICAgKTsgXAotLyoqLwotI2VsaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX0hBU19SRUJJTkQoaSwgbmFtZSwgcGFyYW1zKSBcCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpLHR5cGVuYW1lIFQpID4gXAotOjpuZG5ib29zdDo6bXBsOjphdXg6Onllc190YWcgb3BlcmF0b3J8KCBcCi0gICAgICA6Om5kbmJvb3N0OjptcGw6OmF1eDo6aGFzX3JlYmluZF90YWc8aW50PiBcCi0gICAgLCA6Om5kbmJvb3N0OjptcGw6OmF1eDo6aGFzX3JlYmluZF90YWc8IG5hbWU8TkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpLFQpPiA+KiBcCi0gICAgKTsgXAotLyoqLwotI2Vsc2UKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9IQVNfUkVCSU5EKGksIG5hbWUsIHBhcmFtcykgLyoqLwotI2VuZGlmCi0KLSMgICBpZiAhZGVmaW5lZChfX0JPUkxBTkRDX18pCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoaSwgbmFtZSwgcGFyYW1zKSBcCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKGksIG5hbWUsIHBhcmFtcykgXAotfTsgXAotTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9IQVNfUkVCSU5EKGksIG5hbWUsIHBhcmFtcykgXAotY2xhc3MgTkROQk9PU1RfUFBfQ0FUKG5hbWUsX3JlYmluZCkgXAoteyBcCi0gcHVibGljOiBcCi0gICAgdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaSx0eXBlbmFtZSBVKSA+IHN0cnVjdCBhcHBseSBcCi0gICAgICAgIDogbmFtZTwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpLFUpID4gXAotICAgIHsgXAotICAgIH07IFwKLS8qKi8KLSMgICBlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoaSwgbmFtZSwgcGFyYW1zKSBcCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKGksIG5hbWUsIHBhcmFtcykgXAotfTsgXAotTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9IQVNfUkVCSU5EKGksIG5hbWUsIHBhcmFtcykgXAotY2xhc3MgTkROQk9PU1RfUFBfQ0FUKG5hbWUsX3JlYmluZCkgXAoteyBcCi0gcHVibGljOiBcCi0gICAgdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaSx0eXBlbmFtZSBVKSA+IHN0cnVjdCBhcHBseSBcCi0gICAgeyBcCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmFtZTwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpLFUpID46OnR5cGUgdHlwZTsgXAotICAgIH07IFwKLS8qKi8KLSMgICBlbmRpZiAvLyBfX0JPUkxBTkRDX18KLQotI2VuZGlmIC8vIF9fRURHX1ZFUlNJT05fXwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19GVUxMX0xBTUJEQV9TVVBQT1JUCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9sYXJnZXN0X2ludC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2xhcmdlc3RfaW50LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmQ2NjhjYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2xhcmdlc3RfaW50LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0xBUkdFU1RfSU5UX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0xBUkdFU1RfSU5UX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbGFyZ2VzdF9pbnQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9pbnRlZ3JhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBpbnRlZ3JhbF9yYW5rOwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBpbnRlZ3JhbF9yYW5rPGJvb2w+ICAgICAgICAgICA6IGludF88MT4ge307Ci10ZW1wbGF0ZTw+IHN0cnVjdCBpbnRlZ3JhbF9yYW5rPHNpZ25lZCBjaGFyPiAgICA6IGludF88Mj4ge307Ci10ZW1wbGF0ZTw+IHN0cnVjdCBpbnRlZ3JhbF9yYW5rPGNoYXI+ICAgICAgICAgICA6IGludF88Mz4ge307Ci10ZW1wbGF0ZTw+IHN0cnVjdCBpbnRlZ3JhbF9yYW5rPHVuc2lnbmVkIGNoYXI+ICA6IGludF88ND4ge307Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QpCi10ZW1wbGF0ZTw+IHN0cnVjdCBpbnRlZ3JhbF9yYW5rPHdjaGFyX3Q+ICAgICAgICA6IGludF88NT4ge307Ci0jZW5kaWYKLXRlbXBsYXRlPD4gc3RydWN0IGludGVncmFsX3Jhbms8c2hvcnQ+ICAgICAgICAgIDogaW50Xzw2PiB7fTsKLXRlbXBsYXRlPD4gc3RydWN0IGludGVncmFsX3Jhbms8dW5zaWduZWQgc2hvcnQ+IDogaW50Xzw3PiB7fTsKLXRlbXBsYXRlPD4gc3RydWN0IGludGVncmFsX3Jhbms8aW50PiAgICAgICAgICAgIDogaW50Xzw4PiB7fTsKLXRlbXBsYXRlPD4gc3RydWN0IGludGVncmFsX3Jhbms8dW5zaWduZWQgaW50PiAgIDogaW50Xzw5PiB7fTsKLXRlbXBsYXRlPD4gc3RydWN0IGludGVncmFsX3Jhbms8bG9uZz4gICAgICAgICAgIDogaW50XzwxMD4ge307Ci10ZW1wbGF0ZTw+IHN0cnVjdCBpbnRlZ3JhbF9yYW5rPHVuc2lnbmVkIGxvbmc+ICA6IGludF88MTE+IHt9OwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKQotdGVtcGxhdGU8PiBzdHJ1Y3QgaW50ZWdyYWxfcmFuazxsb25nX2xvbmdfdHlwZT4gOiBpbnRfPDEyPiB7fTsKLXRlbXBsYXRlPD4gc3RydWN0IGludGVncmFsX3Jhbms8dWxvbmdfbG9uZ190eXBlPjogaW50XzwxMz4ge307Ci0jZW5kaWYKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiA+IHN0cnVjdCBsYXJnZXN0X2ludAotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fTkVTVEVEX1ZBTFVFX0FSSVRITUVUSUMpCi0gICAgOiBpZl9jPCAKLSAgICAgICAgICAoIGludGVncmFsX3Jhbms8VDE+Ojp2YWx1ZSA+PSBpbnRlZ3JhbF9yYW5rPFQyPjo6dmFsdWUgKQotICAgICAgICAsIFQxCi0gICAgICAgICwgVDIKLSAgICAgICAgPgotewotI2Vsc2UKLXsKLSAgICBlbnVtIHsgcmFuazEgPSBpbnRlZ3JhbF9yYW5rPFQxPjo6dmFsdWUgfTsKLSAgICBlbnVtIHsgcmFuazIgPSBpbnRlZ3JhbF9yYW5rPFQyPjo6dmFsdWUgfTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGlmX2M8IChyYW5rMSA+PSByYW5rMiksVDEsVDIgPjo6dHlwZSB0eXBlOwotI2VuZGlmCi19OwotCi19fX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfTEFSR0VTVF9JTlRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2xvZ2ljYWxfb3AuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9sb2dpY2FsX29wLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGQwNmNjNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2xvZ2ljYWxfb3AuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTY1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxvZ2ljYWxfb3AuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLS8vIE5PIElOQ0xVREUgR1VBUkRTLCBUSEUgSEVBREVSIElTIElOVEVOREVEIEZPUiBNVUxUSVBMRSBJTkNMVVNJT04hCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uZXN0ZWRfdHlwZV93a25kLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saW1pdHMvYXJpdHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9leHRfcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZGVmX3BhcmFtc190YWlsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZW51bS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3N1Yi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pbmMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfUEFSQU1TKHBhcmFtLCBzdWIpIFwKLSAgICBORE5CT09TVF9NUExfUFBfUEFSQU1TKCBcCi0gICAgICAgICAgTkROQk9PU1RfTVBMX1BQX1NVQihORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZLCBzdWIpIFwKLSAgICAgICAgLCBwYXJhbSBcCi0gICAgICAgICkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfU0hJRlRFRF9QQVJBTVMocGFyYW0sIHN1YikgXAotICAgIE5ETkJPT1NUX01QTF9QUF9FWFRfUEFSQU1TKCBcCi0gICAgICAgICAgMiwgTkROQk9PU1RfTVBMX1BQX1NVQihORE5CT09TVF9QUF9JTkMoTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSksIHN1YikgXAotICAgICAgICAsIHBhcmFtIFwKLSAgICAgICAgKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9TUEVDX1BBUkFNUyhwYXJhbSkgXAotICAgIE5ETkJPT1NUX01QTF9QUF9FTlVNKCBcCi0gICAgICAgICAgTkROQk9PU1RfUFBfREVDKE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFkpIFwKLSAgICAgICAgLCBwYXJhbSBcCi0gICAgICAgICkgXAotICAgIC8qKi8KLQotbmFtZXNwYWNlIGF1eCB7Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotCi10ZW1wbGF0ZTwgYm9vbCBDXywgQVVYNzc4MDc2X1BBUkFNUyh0eXBlbmFtZSBULCAxKSA+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9PUF9OQU1FLGltcGwpCi0gICAgOiBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X09QX1ZBTFVFMSxfKQotewotfTsKLQotdGVtcGxhdGU8IEFVWDc3ODA3Nl9QQVJBTVModHlwZW5hbWUgVCwgMSkgPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfT1BfTkFNRSxpbXBsKTwgQVVYNzc4MDc2X09QX1ZBTFVFMixBVVg3NzgwNzZfUEFSQU1TKFQsIDEpID4KLSAgICA6IE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfT1BfTkFNRSxpbXBsKTwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAsIEFVWDc3ODA3Nl9TSElGVEVEX1BBUkFNUyhULCAxKQotICAgICAgICAsIE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfT1BfVkFMVUUyLF8pCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X09QX05BTUUsaW1wbCk8Ci0gICAgICAgICAgQVVYNzc4MDc2X09QX1ZBTFVFMgotICAgICAgICAsIEFVWDc3ODA3Nl9TUEVDX1BBUkFNUyhORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X09QX1ZBTFVFMixfKSkKLSAgICAgICAgPgotICAgIDogTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9PUF9WQUxVRTIsXykKLXsKLX07Ci0KLSNlbHNlCi0KLXRlbXBsYXRlPCBib29sIENfID4gc3RydWN0IE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfT1BfTkFNRSxpbXBsKQotewotICAgIHRlbXBsYXRlPCBBVVg3NzgwNzZfUEFSQU1TKHR5cGVuYW1lIFQsIDEpID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X09QX1ZBTFVFMSxfKQotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9PUF9OQU1FLGltcGwpPEFVWDc3ODA3Nl9PUF9WQUxVRTI+Ci17Ci0gICAgdGVtcGxhdGU8IEFVWDc3ODA3Nl9QQVJBTVModHlwZW5hbWUgVCwgMSkgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfT1BfTkFNRSxpbXBsKTwgCi0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBBVVg3NzgwNzZfU0hJRlRFRF9QQVJBTVMoVCwxKSxORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X09QX1ZBTFVFMixfKSA+Ci0gICAgewotICAgIH07Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID09IDEzMDApCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcmVzdWx0XzxBVVg3NzgwNzZfU1BFQ19QQVJBTVMoTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9PUF9WQUxVRTIsXykpPgotICAgICAgICA6IE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfT1BfVkFMVUUyLF8pCi0gICAgewotICAgIH07Ci19OwotI2Vsc2UKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X09QX05BTUUsaW1wbCk8QVVYNzc4MDc2X09QX1ZBTFVFMj4KLSAgICA6OnJlc3VsdF88IEFVWDc3ODA3Nl9TUEVDX1BBUkFNUyhORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X09QX1ZBTFVFMixfKSkgPgotICAgICAgICA6IE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfT1BfVkFMVUUyLF8pCi17Ci19OwotI2VuZGlmIC8vIE5ETkJPT1NUX01TVkMgPT0gMTMwMAotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICBORE5CT09TVF9NUExfUFBfREVGX1BBUkFNU19UQUlMKDIsIHR5cGVuYW1lIFQsIE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfT1BfVkFMVUUyLF8pKQotICAgID4KLXN0cnVjdCBBVVg3NzgwNzZfT1BfTkFNRQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0gICAgOiBhdXg6Ok5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfT1BfTkFNRSxpbXBsKTwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAsIEFVWDc3ODA3Nl9TSElGVEVEX1BBUkFNUyhULDApCi0gICAgICAgID4KLSNlbHNlCi0gICAgOiBhdXg6Ok5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfT1BfTkFNRSxpbXBsKTwgCi0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgQVVYNzc4MDc2X1NISUZURURfUEFSQU1TKFQsMCkgPgotI2VuZGlmCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZCi0gICAgICAgICwgQVVYNzc4MDc2X09QX05BTUUKLSAgICAgICAgLCAoQVVYNzc4MDc2X1BBUkFNUyhULCAwKSkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigKLSAgICAgIDIKLSAgICAsIE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFkKLSAgICAsIEFVWDc3ODA3Nl9PUF9OQU1FCi0gICAgKQotCi19fQotCi0jdW5kZWYgQVVYNzc4MDc2X1NQRUNfUEFSQU1TCi0jdW5kZWYgQVVYNzc4MDc2X1NISUZURURfUEFSQU1TCi0jdW5kZWYgQVVYNzc4MDc2X1BBUkFNUwotI3VuZGVmIEFVWDc3ODA3Nl9PUF9OQU1FCi0jdW5kZWYgQVVYNzc4MDc2X09QX1ZBTFVFMQotI3VuZGVmIEFVWDc3ODA3Nl9PUF9WQUxVRTIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbXN2Y19kdHcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9tc3ZjX2R0dy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5Y2QwNjIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9tc3ZjX2R0dy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBtc3ZjX2R0dy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotLy8gTk8gSU5DTFVERSBHVUFSRFMsIFRIRSBIRUFERVIgSVMgSU5URU5ERUQgRk9SIE1VTFRJUExFIElOQ0xVU0lPTiEKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9wYXJhbXMuaHBwPgotCi0vLyBsb2NhbCBtYWNyb3MsICN1bmRlZi1pbmVkIGF0IHRoZSBlbmQgb2YgdGhlIGhlYWRlcgotI2RlZmluZSBBVVg3NzgwNzZfRFRXX1BBUkFNUyhwYXJhbSkgXAotICAgIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoQVVYNzc4MDc2X01TVkNfRFRXX0FSSVRZLCBwYXJhbSkgXAotLyoqLwotCi0jZGVmaW5lIEFVWDc3ODA3Nl9EVFdfT1JJR0lOQUxfTkFNRSBcCi0gICAgQVVYNzc4MDc2X01TVkNfRFRXX09SSUdJTkFMX05BTUUgXAotLyoqLwotCi0vLyB3YXJuaW5nOiBub3QgYSB3ZWxsLWZvcm1lZCBDKysKLS8vIHdvcmthcm91bmQgZm9yIE1TVkMgNi41J3MgImRlcGVuZGVudCB0ZW1wbGF0ZSB0eXBlZGVmIGJ1ZyIKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEY+Ci1zdHJ1Y3QgQVVYNzc4MDc2X01TVkNfRFRXX05BTUUKLXsKLSAgICB0ZW1wbGF0ZTwgYm9vbCA+IHN0cnVjdCBmXyA6IEYge307Ci0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgZl88dHJ1ZT4KLSAgICB7Ci0jaWYgQVVYNzc4MDc2X01TVkNfRFRXX0FSSVRZID4gMAotICAgICAgICB0ZW1wbGF0ZTwgQVVYNzc4MDc2X0RUV19QQVJBTVModHlwZW5hbWUgUCkgPiBzdHJ1Y3QgQVVYNzc4MDc2X0RUV19PUklHSU5BTF9OQU1FCi0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgaW50IHR5cGU7Ci0gICAgICAgIH07Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPCBBVVg3NzgwNzZfRFRXX1BBUkFNUyh0eXBlbmFtZSBUKSA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogZl88IGF1eDo6bXN2Y19uZXZlcl90cnVlPEY+Ojp2YWx1ZSA+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIEFVWDc3ODA3Nl9EVFdfT1JJR0lOQUxfTkFNRTwgQVVYNzc4MDc2X0RUV19QQVJBTVMoVCkgPgotICAgIHsKLSAgICB9OwotI2Vsc2UKLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAgPSBpbnQgPiBzdHJ1Y3QgQVVYNzc4MDc2X0RUV19PUklHSU5BTF9OQU1FCi0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgaW50IHR5cGU7Ci0gICAgICAgIH07Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID0gaW50ID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBmXzwgYXV4Ojptc3ZjX25ldmVyX3RydWU8Rj46OnZhbHVlID4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgQVVYNzc4MDc2X0RUV19PUklHSU5BTF9OQU1FPD4KLSAgICB7Ci0gICAgfTsKLSNlbmRpZgotfTsKLQotI3VuZGVmIEFVWDc3ODA3Nl9EVFdfT1JJR0lOQUxfTkFNRQotI3VuZGVmIEFVWDc3ODA3Nl9EVFdfUEFSQU1TCi0KLSN1bmRlZiBBVVg3NzgwNzZfTVNWQ19EVFdfTkFNRQotI3VuZGVmIEFVWDc3ODA3Nl9NU1ZDX0RUV19PUklHSU5BTF9OQU1FCi0jdW5kZWYgQVVYNzc4MDc2X01TVkNfRFRXX0FSSVRZCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL21zdmNfZXRpX2Jhc2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9tc3ZjX2V0aV9iYXNlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWY1MzEzYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL21zdmNfZXRpX2Jhc2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19FVElfQkFTRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX0VUSV9CQVNFX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbXN2Y19ldGlfYmFzZS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2lzX21zdmNfZXRpX2FyZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2V0aS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2djYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTVNWQ183MF9FVElfQlVHKQotCi10ZW1wbGF0ZTwgYm9vbCA+IHN0cnVjdCBtc3ZjX2V0aV9iYXNlX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogVAotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IG1zdmNfZXRpX2Jhc2VfaW1wbDx0cnVlPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotICAgICAgICB0eXBlZGVmIHJlc3VsdF8gZmlyc3Q7Ci0gICAgICAgIHR5cGVkZWYgcmVzdWx0XyBzZWNvbmQ7Ci0gICAgICAgIHR5cGVkZWYgcmVzdWx0XyB0YWc7Ci0gICAgICAgIGVudW0geyB2YWx1ZSA9IDAgfTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbXN2Y19ldGlfYmFzZQotICAgIDogbXN2Y19ldGlfYmFzZV9pbXBsPCBpc19tc3ZjX2V0aV9hcmc8VD46OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFQ+Ci17Ci19OwotCi0jZWxzZSAvLyAhTkROQk9PU1RfTVBMX0NGR19NU1ZDXzcwX0VUSV9CVUcKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbXN2Y19ldGlfYmFzZQotICAgIDogVAotewotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVBMX0NGR19HQ0MsIE5ETkJPT1NUX1RFU1RFRF9BVCgweDAzMDQpKQotICAgIG1zdmNfZXRpX2Jhc2UoKTsKLSNlbmRpZgotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotI2VuZGlmIAotCi10ZW1wbGF0ZTw+IHN0cnVjdCBtc3ZjX2V0aV9iYXNlPGludD4KLXsKLSAgICB0eXBlZGVmIG1zdmNfZXRpX2Jhc2UgdHlwZTsKLSAgICB0eXBlZGVmIG1zdmNfZXRpX2Jhc2UgZmlyc3Q7Ci0gICAgdHlwZWRlZiBtc3ZjX2V0aV9iYXNlIHNlY29uZDsKLSAgICB0eXBlZGVmIG1zdmNfZXRpX2Jhc2UgdGFnOwotICAgIGVudW0geyB2YWx1ZSA9IDAgfTsKLX07Ci0KLX19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX0VUSV9CQVNFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9tc3ZjX2lzX2NsYXNzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbXN2Y19pc19jbGFzcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0N2Y3ZDYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9tc3ZjX2lzX2NsYXNzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX01TVkNfSVNfQ0xBU1NfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19JU19DTEFTU19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IG1zdmNfaXNfY2xhc3MuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy90eXBlX3dyYXBwZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3llc19uby5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGlzX2NsYXNzX2hlbHBlcgotewotICAgIHR5cGVkZWYgaW50IChUOjoqIHR5cGUpKCk7Ci19OwotCi0vLyBNU1ZDIDYueC1zcGVjaWZpYyBsaWdodHdlaWdodCAnaXNfY2xhc3MnIGltcGxlbWVudGF0aW9uOyAKLS8vIERpc3Rpbmd1aXNoaW5nIGZlYXR1cmU6IGRvZXMgbm90IGluc3RhbnRpYXRlIHRoZSB0eXBlIGJlaW5nIHRlc3RlZC4KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBtc3ZjX2lzX2NsYXNzX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVT4KLSAgICBzdGF0aWMgeWVzX3RhZyAgdGVzdCh0eXBlX3dyYXBwZXI8VT4qLCAvKnR5cGVuYW1lKi8gaXNfY2xhc3NfaGVscGVyPFU+Ojp0eXBlID0gMCk7Ci0gICAgc3RhdGljIG5vX3RhZyAgIHRlc3Qodm9pZCBjb25zdCB2b2xhdGlsZSosIC4uLik7Ci0KLSAgICBlbnVtIHsgdmFsdWUgPSBzaXplb2YodGVzdCgodHlwZV93cmFwcGVyPFQ+KikwKSkgPT0gc2l6ZW9mKHllc190YWcpIH07Ci0gICAgdHlwZWRlZiBib29sXzx2YWx1ZT4gdHlwZTsKLX07Ci0KLS8vIGFndXJ0LCAxNy9zZXAvMDQ6IGhhdmUgdG8gY2hlY2sgZm9yICdpc19yZWZlcmVuY2UnIHVwZnJvbnQgdG8gYXZvaWQgSUNFcyBpbgotLy8gY29tcGxleCBtZXRhcHJvZ3JhbXMKLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBtc3ZjX2lzX2NsYXNzCi0gICAgOiBpZl88Ci0gICAgICAgICAgaXNfcmVmZXJlbmNlPFQ+Ci0gICAgICAgICwgZmFsc2VfCi0gICAgICAgICwgbXN2Y19pc19jbGFzc19pbXBsPFQ+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLX19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX0lTX0NMQVNTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9tc3ZjX25ldmVyX3RydWUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9tc3ZjX25ldmVyX3RydWUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOWUyZTAyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbXN2Y19uZXZlcl90cnVlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX01TVkNfTkVWRVJfVFJVRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX05FVkVSX1RSVUVfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBtc3ZjX25ldmVyX3RydWUuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbXN2Yy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBtc3ZjX25ldmVyX3RydWUKLXsKLSAgICBlbnVtIHsgdmFsdWUgPSBmYWxzZSB9OwotfTsKLQotfX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NU1ZDCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX01TVkNfTkVWRVJfVFJVRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbXN2Y190eXBlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbXN2Y190eXBlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjJlOGZjNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL21zdmNfdHlwZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1RZUEVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19UWVBFX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbXN2Y190eXBlLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2V0aS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaXNfbXN2Y19ldGlfYXJnLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX01TVkNfNzBfRVRJX0JVRykKLQotdGVtcGxhdGU8IGJvb2wgPiBzdHJ1Y3QgbXN2Y190eXBlX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbXN2Y190eXBlX2ltcGw8dHJ1ZT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbXN2Y190eXBlCi0gICAgOiBtc3ZjX3R5cGVfaW1wbDwgaXNfbXN2Y19ldGlfYXJnPFQ+Ojp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxUPgotewotfTsKLQotI2Vsc2UgLy8gTkROQk9PU1RfTVBMX0NGR19NU1ZDXzcwX0VUSV9CVUcKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbXN2Y190eXBlIAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbXN2Y190eXBlPGludD4KLXsKLSAgICB0eXBlZGVmIGludCB0eXBlOwotfTsKLQotI2VuZGlmCi0KLX19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1RZUEVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL25hLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbmEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjlmODFlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbmEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTUgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfTkFfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTkFfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBuYS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9tc3ZjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgaXNfbmEKLSAgICA6IGZhbHNlXwotewotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotICAgIHVzaW5nIGZhbHNlXzo6dmFsdWU7Ci0jZW5kaWYKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc19uYTxuYT4KLSAgICA6IHRydWVfCi17Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0gICAgdXNpbmcgdHJ1ZV86OnZhbHVlOwotI2VuZGlmCi19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgaXNfbm90X25hCi0gICAgOiB0cnVlXwotewotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotICAgIHVzaW5nIHRydWVfOjp2YWx1ZTsKLSNlbmRpZgotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX25vdF9uYTxuYT4KLSAgICA6IGZhbHNlXwotewotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotICAgIHVzaW5nIGZhbHNlXzo6dmFsdWU7Ci0jZW5kaWYKLX07Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUgPiBzdHJ1Y3QgaWZfbmEKLXsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBVID4gc3RydWN0IGlmX25hPG5hLFU+Ci17Ci0gICAgdHlwZWRlZiBVIHR5cGU7Ci19OwotI2Vsc2UKLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGlmX25hX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVSA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGlmX25hX2ltcGw8bmE+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVSA+IHN0cnVjdCBpZl9uYQotICAgIDogaWZfbmFfaW1wbDxUPjo6dGVtcGxhdGUgYXBwbHk8VT4KLXsKLX07Ci0jZW5kaWYKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfTkFfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL25hX2Fzc2VydC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL25hX2Fzc2VydC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwNzVjNGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9uYV9hc3NlcnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfTkFfQVNTRVJUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX05BX0FTU0VSVF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IG5hX2Fzc2VydC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbXN2Yy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX01TQ19GVUxMX1ZFUiwgPD0gMTQwMDUwNjAxKSAgICBcCi0gICAgJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19FREdfVkVSU0lPTl9fLCA8PSAyNDMpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Fzc2VydC5ocHA+Ci0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh4KSBcCi0gICAgTkROQk9PU1RfTVBMX0FTU0VSVF9OT1QoKG5kbmJvb3N0OjptcGw6OmlzX25hPHR5cGU+KSkgXAotLyoqLwotI2Vsc2UKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHgpIFwKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCFuZG5ib29zdDo6bXBsOjppc19uYTx4Pjo6dmFsdWUpIFwKLS8qKi8KLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9OQV9BU1NFUlRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL25hX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL25hX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0ZGU0MzAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9uYV9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfTkFfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX05BX0ZXRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IG5hX2Z3ZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2FkbF9iYXJyaWVyLmhwcD4KLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotCi0vLyBuLmEuID09IG5vdCBhdmFpbGFibGUKLXN0cnVjdCBuYQotewotICAgIHR5cGVkZWYgbmEgdHlwZTsKLSAgICBlbnVtIHsgdmFsdWUgPSAwIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9ERUNMKG5hKQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9OQV9GV0RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQwM2Y0Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTc1ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX05BX1NQRUNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IG5hX3NwZWMuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9sYW1iZGFfZndkLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaW50LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmEuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2FyaXR5LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy90ZW1wbGF0ZV9hcml0eV9md2QuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZW51bS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2RlZl9wYXJhbXNfdGFpbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX2FyaXR5X3BhcmFtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZHRwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZXRpLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9udHRwX2RlY2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90dHAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9sYW1iZGEuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9vdmVybG9hZF9yZXNvbHV0aW9uLmhwcD4KLQotCi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU1TKGkpIFwKLSAgICBORE5CT09TVF9NUExfUFBfRU5VTShpLCBuYSkgXAotLyoqLwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0JST0tFTl9ERUZBVUxUX1BBUkFNRVRFUlNfSU5fTkVTVEVEX1RFTVBMQVRFUykKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX0FSSVRZKGksIG5hbWUpIFwKLW5hbWVzcGFjZSBhdXggeyBcCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCBOKSA+IFwKLXN0cnVjdCBhcml0eTwgXAotICAgICAgICAgIG5hbWU8IE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU1TKGkpID4gXAotICAgICAgICAsIE4gXAotICAgICAgICA+IFwKLSAgICA6IGludF88IE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFkgPiBcCi17IFwKLX07IFwKLX0gXAotLyoqLwotI2Vsc2UKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX0FSSVRZKGksIG5hbWUpIC8qKi8KLSNlbmRpZgotCi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19NQUlOKGksIG5hbWUpIFwKLXRlbXBsYXRlPD4gXAotc3RydWN0IG5hbWU8IE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU1TKGkpID4gXAoteyBcCi0gICAgdGVtcGxhdGU8IFwKLSAgICAgICAgICBORE5CT09TVF9NUExfUFBfUEFSQU1TKGksIHR5cGVuYW1lIFQpIFwKLSAgICAgICAgTkROQk9PU1RfTVBMX1BQX05FU1RFRF9ERUZfUEFSQU1TX1RBSUwoaSwgdHlwZW5hbWUgVCwgbmEpIFwKLSAgICAgICAgPiBcCi0gICAgc3RydWN0IGFwcGx5IFwKLSAgICAgICAgOiBuYW1lPCBORE5CT09TVF9NUExfUFBfUEFSQU1TKGksIFQpID4gXAotICAgIHsgXAotICAgIH07IFwKLX07IFwKLS8qKi8KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19GVUxMX0xBTUJEQV9TVVBQT1JUKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX05BX1NQRUNfTEFNQkRBKGksIG5hbWUpIFwKLXRlbXBsYXRlPD4gXAotc3RydWN0IGxhbWJkYTwgXAotICAgICAgbmFtZTwgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTVMoaSkgPiBcCi0gICAgLCB2b2lkXyBcCi0gICAgLCB0cnVlXyBcCi0gICAgPiBcCi17IFwKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsgXAotICAgIHR5cGVkZWYgbmFtZTwgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTVMoaSkgPiB0eXBlOyBcCi19OyBcCi10ZW1wbGF0ZTw+IFwKLXN0cnVjdCBsYW1iZGE8IFwKLSAgICAgIG5hbWU8IE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU1TKGkpID4gXAotICAgICwgdm9pZF8gXAotICAgICwgZmFsc2VfIFwKLSAgICA+IFwKLXsgXAotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOyBcCi0gICAgdHlwZWRlZiBuYW1lPCBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNUyhpKSA+IHR5cGU7IFwKLX07IFwKLS8qKi8KLSNlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19MQU1CREEoaSwgbmFtZSkgXAotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IFwKLXN0cnVjdCBsYW1iZGE8IFwKLSAgICAgIG5hbWU8IE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU1TKGkpID4gXAotICAgICwgVGFnIFwKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9BUklUWV9QQVJBTShpbnRfPC0xPikgXAotICAgID4gXAoteyBcCi0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7IFwKLSAgICB0eXBlZGVmIG5hbWU8IE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU1TKGkpID4gcmVzdWx0XzsgXAotICAgIHR5cGVkZWYgbmFtZTwgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTVMoaSkgPiB0eXBlOyBcCi19OyBcCi0vKiovCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19FWFRFTkRFRF9URU1QTEFURV9QQVJBTUVURVJTX01BVENISU5HKSBcCi0gICAgfHwgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0ZVTExfTEFNQkRBX1NVUFBPUlQpIFwKLSAgICAgICAgJiYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0JST0tFTl9PVkVSTE9BRF9SRVNPTFVUSU9OKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX05BX1NQRUNfVEVNUExBVEVfQVJJVFkoaSwgaiwgbmFtZSkgXAotbmFtZXNwYWNlIGF1eCB7IFwKLXRlbXBsYXRlPCBORE5CT09TVF9NUExfUFBfUEFSQU1TKGosIHR5cGVuYW1lIFQpID4gXAotc3RydWN0IHRlbXBsYXRlX2FyaXR5PCBcCi0gICAgICAgICAgbmFtZTwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhqLCBUKSA+IFwKLSAgICAgICAgPiBcCi0gICAgOiBpbnRfPGo+IFwKLXsgXAotfTsgXAotXAotdGVtcGxhdGU8PiBcCi1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHk8IFwKLSAgICAgICAgICBuYW1lPCBORE5CT09TVF9NUExfUFBfRU5VTShpLCBuYSkgPiBcCi0gICAgICAgID4gXAotICAgIDogaW50XzwtMT4gXAoteyBcCi19OyBcCi19IFwKLS8qKi8KLSNlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19URU1QTEFURV9BUklUWShpLCBqLCBuYW1lKSAvKiovCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19NU1ZDX0VUSV9CVUcpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19FVEkoaSwgbmFtZSkgXAotdGVtcGxhdGU8PiBcCi1zdHJ1Y3QgbmFtZTwgTkROQk9PU1RfTVBMX1BQX0VOVU0oaSwgaW50KSA+IFwKLXsgXAotICAgIHR5cGVkZWYgaW50IHR5cGU7IFwKLSAgICBlbnVtIHsgdmFsdWUgPSAwIH07IFwKLX07IFwKLS8qKi8KLSNlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19FVEkoaSwgbmFtZSkgLyoqLwotI2VuZGlmCi0KLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShwYXJhbSkgcGFyYW0gPSBuYQotCi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19OT19FVEkoaSwgbmFtZSkgXAotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX01BSU4oaSwgbmFtZSkgXAotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX0xBTUJEQShpLCBuYW1lKSBcCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfQVJJVFkoaSwgbmFtZSkgXAotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX1RFTVBMQVRFX0FSSVRZKGksIGksIG5hbWUpIFwKLS8qKi8KLQotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX05BX1NQRUMoaSwgbmFtZSkgXAotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX05PX0VUSShpLCBuYW1lKSBcCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfRVRJKGksIG5hbWUpIFwKLS8qKi8KLQotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKGksIGosIG5hbWUpIFwKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19NQUlOKGksIG5hbWUpIFwKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19FVEkoaSwgbmFtZSkgXAotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX0xBTUJEQShpLCBuYW1lKSBcCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfQVJJVFkoaSwgbmFtZSkgXAotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX1RFTVBMQVRFX0FSSVRZKGksIGosIG5hbWUpIFwKLS8qKi8KLQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9uZXN0ZWRfdHlwZV93a25kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbmVzdGVkX3R5cGVfd2tuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzNjZhODcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9uZXN0ZWRfdHlwZV93a25kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IG5lc3RlZF90eXBlX3drbmQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZ2NjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01QTF9DRkdfR0NDLCBORE5CT09TVF9URVNURURfQVQoMHgwMzAyKSkgXAotICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NjEpKSBcCi0gICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX1NVTlBST19DQywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTMwKSkgXAotICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19ETUNfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4ODQwKSkKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbmVzdGVkX3R5cGVfd2tuZAotICAgIDogVDo6dHlwZQotewotfTsKLX19fQotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0RNQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg4NDApKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVCkgXAotICAgIGF1eDo6bmVzdGVkX3R5cGVfd2tuZDxUPiBcCi0vKiovCi0jZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVCkgXAotICAgIDo6bmRuYm9vc3Q6Om1wbDo6YXV4OjpuZXN0ZWRfdHlwZV93a25kPFQ+IFwKLS8qKi8KLSNlbmRpZgotCi0jZWxzZSAvLyAhTkROQk9PU1RfTVBMX0NGR19HQ0MgZXQgYWwuCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQpIFQ6OnR5cGUKLQotI2VuZGlmIAotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9udHRwX2RlY2wuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9udHRwX2RlY2wuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNWI2NGFlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbnR0cF9kZWNsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0xfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBudHRwX2RlY2wuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbnR0cC5ocHA+Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTlRUUF9CVUcpCi0KLXR5cGVkZWYgYm9vbCAgICAgICAgX21wbF9udHRwX2Jvb2w7Ci10eXBlZGVmIGludCAgICAgICAgIF9tcGxfbnR0cF9pbnQ7Ci10eXBlZGVmIHVuc2lnbmVkICAgIF9tcGxfbnR0cF91bnNpZ25lZDsKLXR5cGVkZWYgbG9uZyAgICAgICAgX21wbF9udHRwX2xvbmc7Ci0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woVCwgeCkgTkROQk9PU1RfUFBfQ0FUKF9tcGxfbnR0cF8sVCkgeCAvKiovCi0KLSNlbHNlCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woVCwgeCkgVCB4IC8qKi8KLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbnVtZXJpY19jYXN0X3V0aWxzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbnVtZXJpY19jYXN0X3V0aWxzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjAyMWZlZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL251bWVyaWNfY2FzdF91dGlscy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9OVU1FUklDX0NBU1RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTlVNRVJJQ19DQVNUX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAzLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbnVtZXJpY19jYXN0X3V0aWxzLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL251bWVyaWNfY2FzdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FwcGx5X3dyYXAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9mb3J3YXJkaW5nLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICAsIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgY2FzdDFzdF9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fTkVTVEVEX0ZPUldBUkRJTkcpCi0gICAgICAgIDogYXBwbHlfd3JhcDI8IAotICAgICAgICAgICAgICBGCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGFwcGx5X3dyYXAxPCBORE5CT09TVF9NUExfQVVYX05VTUVSSUNfQ0FTVDxUYWcxLFRhZzI+LE4xID46OnR5cGUKLSAgICAgICAgICAgICwgTjIKLSAgICAgICAgICAgID4KLSAgICB7Ci0jZWxzZQotICAgIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAyPCAKLSAgICAgICAgICAgICAgRgotICAgICAgICAgICAgLCB0eXBlbmFtZSBhcHBseV93cmFwMTwgTkROQk9PU1RfTVBMX0FVWF9OVU1FUklDX0NBU1Q8VGFnMSxUYWcyPixOMSA+Ojp0eXBlCi0gICAgICAgICAgICAsIE4yCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0jZW5kaWYKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgLCB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGNhc3QybmRfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX05FU1RFRF9GT1JXQVJESU5HKQotICAgICAgICA6IGFwcGx5X3dyYXAyPCAKLSAgICAgICAgICAgICAgRgotICAgICAgICAgICAgLCBOMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBhcHBseV93cmFwMTwgTkROQk9PU1RfTVBMX0FVWF9OVU1FUklDX0NBU1Q8VGFnMixUYWcxPixOMiA+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgewotI2Vsc2UKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDI8IAotICAgICAgICAgICAgICBGCi0gICAgICAgICAgICAsIE4xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGFwcGx5X3dyYXAxPCBORE5CT09TVF9NUExfQVVYX05VTUVSSUNfQ0FTVDxUYWcyLFRhZzE+LE4yID46OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSNlbmRpZgotICAgIH07Ci19OwotCi19fX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfTlVNRVJJQ19DQVNUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9udW1lcmljX29wLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbnVtZXJpY19vcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3YmY1NjQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9udW1lcmljX29wLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMxNSArMCwwIEBACi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9QUF9JU19JVEVSQVRJTkcpCi0KLS8vLy8vIGhlYWRlciBib2R5Ci0KLS8vIE5PIElOQ0xVREUgR1VBUkRTLCBUSEUgSEVBREVSIElTIElOVEVOREVEIEZPUiBNVUxUSVBMRSBJTkNMVVNJT04hCi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBudW1lcmljX29wLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbnVtZXJpY19jYXN0LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXBwbHlfd3JhcC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdGFnLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9udW1lcmljX2Nhc3RfdXRpbHMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbXN2Y19ldGlfYmFzZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdmFsdWVfd2tuZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2V0aS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbnR0cF9kZWNsLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3N0YXRpY19jb25zdGFudC5ocHA+Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAgICB8fCBkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGltaXRzL2FyaXR5LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFydGlhbF9zcGVjX3BhcmFtcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2RlZl9wYXJhbXNfdGFpbC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3JlcGVhdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2V4dF9wYXJhbXMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9wYXJhbXMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9lbnVtLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvYWRkLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3Ivc3ViLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2V0aS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL21zdmMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZWMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pbmMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLQotCi0jaWYgIWRlZmluZWQoQVVYNzc4MDc2X09QX0FSSVRZKQotIyAgIGRlZmluZSBBVVg3NzgwNzZfT1BfQVJJVFkgTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChBVVg3NzgwNzZfT1BfSU1QTF9OQU1FKQotIyAgIGRlZmluZSBBVVg3NzgwNzZfT1BfSU1QTF9OQU1FIE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfT1BfUFJFRklYLF9pbXBsKQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChBVVg3NzgwNzZfT1BfVEFHX05BTUUpCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9PUF9UQUdfTkFNRSBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X09QX1BSRUZJWCxfdGFnKQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgCi0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUgCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZSAKLSAgICA+Ci1zdHJ1Y3QgQVVYNzc4MDc2X09QX0lNUExfTkFNRQotICAgIDogaWZfYzwKLSAgICAgICAgICAoIHRhZzFfID4gdGFnMl8gKQotI2Vsc2UKLSAgICA+Ci1zdHJ1Y3QgQVVYNzc4MDc2X09QX0lNUExfTkFNRQotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotI2VuZGlmCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IEFVWDc3ODA3Nl9PUF9JTVBMX05BTUU8VGFnMSxUYWcxPixUYWcxLFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBBVVg3NzgwNzZfT1BfSU1QTF9OQU1FPFRhZzIsVGFnMj4sVGFnMSxUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IEFVWDc3ODA3Nl9PUF9JTVBMX05BTUU8bmEsbmE+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseSAKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSAwKTsKLSAgICB9OwotfTsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IEFVWDc3ODA3Nl9PUF9JTVBMX05BTUU8bmEsVGFnPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkgCi0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgQVVYNzc4MDc2X09QX0lNUExfTkFNRTxUYWcsbmE+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseSAKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSAwKTsKLSAgICB9OwotfTsKLSNlbHNlCi10ZW1wbGF0ZTw+IHN0cnVjdCBBVVg3NzgwNzZfT1BfSU1QTF9OQU1FPG5hLGludGVncmFsX2NfdGFnPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkgCi0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEFVWDc3ODA3Nl9PUF9JTVBMX05BTUU8aW50ZWdyYWxfY190YWcsbmE+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseSAKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSAwKTsKLSAgICB9OwotfTsKLSNlbmRpZgotCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pIFwKLSAgICAmJiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID49IDEzMDApCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBBVVg3NzgwNzZfT1BfVEFHX05BTUUKLSAgICA6IHRhZzxULG5hPgotewotfTsKLSNlbHNlCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBBVVg3NzgwNzZfT1BfVEFHX05BTUUKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLSNlbmRpZgotCi0KLSNpZiBBVVg3NzgwNzZfT1BfQVJJVFkgIT0gMgotCi0jICAgaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfT1BfUklHSFRfT1BFUkFORCh1bnVzZWQsIGksIE4pICwgTkROQk9PU1RfUFBfQ0FUKE4sIE5ETkJPT1NUX01QTF9QUF9BREQoaSwgMikpPgotIyAgIGRlZmluZSBBVVg3NzgwNzZfT1BfTl9DQUxMUyhpLCBOKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX1JFUEVBVCggTkROQk9PU1RfUFBfREVDKGkpLCBORE5CT09TVF9NUExfUFBfUkVQRUFUX0lERU5USVRZX0ZVTkMsIEFVWDc3ODA3Nl9PUF9OQU1FPCApIFwKLSAgICBOMSBORE5CT09TVF9NUExfUFBfUkVQRUFUKCBORE5CT09TVF9NUExfUFBfU1VCKGksIDEpLCBBVVg3NzgwNzZfT1BfUklHSFRfT1BFUkFORCwgTiApIFwKLS8qKi8KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICBORE5CT09TVF9NUExfUFBfREVGX1BBUkFNU19UQUlMKDIsIHR5cGVuYW1lIE4sIG5hKQotICAgID4KLXN0cnVjdCBBVVg3NzgwNzZfT1BfTkFNRQotICAgIDogQVVYNzc4MDc2X09QX05fQ0FMTFMoQVVYNzc4MDc2X09QX0FSSVRZLCBOKQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgQVVYNzc4MDc2X09QX0FSSVRZCi0gICAgICAgICwgQVVYNzc4MDc2X09QX05BTUUKLSAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoQVVYNzc4MDc2X09QX0FSSVRZLCBOKSApCi0gICAgICAgICkKLX07Ci0KLSNkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywoIE5ETkJPT1NUX1BQX0RFQyhBVVg3NzgwNzZfT1BfQVJJVFkpLCAyLCA8bmRuYm9vc3QvbXBsL2F1eF8vbnVtZXJpY19vcC5ocHA+ICkpCi0jaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9PUF9OX0NBTExTCi0jICAgdW5kZWYgQVVYNzc4MDc2X09QX1JJR0hUX09QRVJBTkQKLQotIyAgIGVsc2UgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotdGVtcGxhdGU8IAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfT1BfTkFNRSwyKTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICBORE5CT09TVF9NUExfUFBfREVGX1BBUkFNU19UQUlMKDIsIHR5cGVuYW1lIE4sIG5hKQotICAgID4KLXN0cnVjdCBBVVg3NzgwNzZfT1BfTkFNRQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPT0gMTMwMCkKLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgaWZfPAotI2Vsc2UKLSAgICA6IGlmXzwKLSNlbmRpZgotICAgICAgICAgIGlzX25hPE4zPgotICAgICAgICAsIE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfT1BfTkFNRSwyKTxOMSxOMj4KLSAgICAgICAgLCBBVVg3NzgwNzZfT1BfTkFNRTwKLSAgICAgICAgICAgICAgTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9PUF9OQU1FLDIpPE4xLE4yPgotICAgICAgICAgICAgLCBORE5CT09TVF9NUExfUFBfRVhUX1BBUkFNUygzLCBORE5CT09TVF9QUF9JTkMoQVVYNzc4MDc2X09QX0FSSVRZKSwgTikKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPT0gMTMwMCkKLSAgICA+Ci0jZW5kaWYKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIEFVWDc3ODA3Nl9PUF9BUklUWQotICAgICAgICAsIEFVWDc3ODA3Nl9PUF9OQU1FCi0gICAgICAgICwgKCBORE5CT09TVF9NUExfUFBfUEFSQU1TKEFVWDc3ODA3Nl9PUF9BUklUWSwgTikgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwgCi0gICAgICB0eXBlbmFtZSBOMQotICAgICwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9PUF9OQU1FLDIpCi0KLSNlbmRpZgotCi0jZWxzZSAvLyBBVVg3NzgwNzZfT1BfQVJJVFkgPT0gMgotCi10ZW1wbGF0ZTwgCi0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgQVVYNzc4MDc2X09QX05BTUUKLQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX01TVkNfRVRJX0JVRykKLSAgICA6IEFVWDc3ODA3Nl9PUF9JTVBMX05BTUU8Ci0gICAgICAgICAgdHlwZW5hbWUgQVVYNzc4MDc2X09QX1RBR19OQU1FPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIEFVWDc3ODA3Nl9PUF9UQUdfTkFNRTxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8TjEsTjI+Ojp0eXBlCi0jZWxzZQotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICBBVVg3NzgwNzZfT1BfSU1QTF9OQU1FPAotICAgICAgICAgICAgICB0eXBlbmFtZSBBVVg3NzgwNzZfT1BfVEFHX05BTUU8TjE+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIEFVWDc3ODA3Nl9PUF9UQUdfTkFNRTxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotI2VuZGlmCi17Ci0jaWYgQVVYNzc4MDc2X09QX0FSSVRZICE9IDIKLQotIyAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIEFVWDc3ODA3Nl9PUF9BUklUWQotICAgICAgICAsIEFVWDc3ODA3Nl9PUF9OQU1FCi0gICAgICAgICwgKCBORE5CT09TVF9NUExfUFBfUEFSVElBTF9TUEVDX1BBUkFNUygyLCBOLCBuYSkgKQotICAgICAgICApCi0jICAgZWxzZQotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9PUF9OQU1FLDIpLCAoTjEsIE4yKSkKLSMgICBlbmRpZgotCi0jZWxzZQotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgQVVYNzc4MDc2X09QX05BTUUsIChOMSwgTjIpKQotI2VuZGlmCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIEFVWDc3ODA3Nl9PUF9BUklUWSwgQVVYNzc4MDc2X09QX05BTUUpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0KLS8vLy8vIGl0ZXJhdGlvbiwgZGVwdGggPT0gMQotCi0vLyBGb3IgZ2NjIDQuNCBjb21wYXRhYmlsaXR5LCB3ZSBtdXN0IGluY2x1ZGUgdGhlCi0vLyBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEggdGVzdCBpbnNpZGUgYW4gI2Vsc2UgY2xhdXNlLgotI2Vsc2UgLy8gTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCi0jaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkgPT0gMQotCi0jICAgZGVmaW5lIGlfIE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigxKQotCi10ZW1wbGF0ZTwKLSAgICAgIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaV8sIHR5cGVuYW1lIE4pCi0gICAgPgotc3RydWN0IEFVWDc3ODA3Nl9PUF9OQU1FPE5ETkJPT1NUX01QTF9QUF9QQVJUSUFMX1NQRUNfUEFSQU1TKGlfLCBOLCBuYSk+Ci0jaWYgaV8gIT0gMgotICAgIDogQVVYNzc4MDc2X09QX05fQ0FMTFMoaV8sIE4pCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIEFVWDc3ODA3Nl9PUF9BUklUWQotICAgICAgICAsIEFVWDc3ODA3Nl9PUF9OQU1FCi0gICAgICAgICwgKCBORE5CT09TVF9NUExfUFBfUEFSVElBTF9TUEVDX1BBUkFNUyhpXywgTiwgbmEpICkKLSAgICAgICAgKQotfTsKLSNlbmRpZgotCi0jICAgdW5kZWYgaV8KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpCi0jZW5kaWYgLy8gTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvYWR2YW5jZV9iYWNrd2FyZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvYWR2YW5jZV9iYWNrd2FyZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlNDgwOWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2FkdmFuY2VfYmFja3dhcmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImFkdmFuY2VfYmFja3dhcmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgbG9uZyBOID4gc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwwPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwxPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwzPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDw0PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9iYWNrd2FyZDw0PgotICAgICAgICAgICAgLCBJdGVyYXRvcgotICAgICAgICAgICAgPjo6dHlwZSBjaHVua19yZXN1bHRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfYmFja3dhcmQ8KAotICAgICAgICAgICAgICAgIChOIC0gNCkgPCAwCi0gICAgICAgICAgICAgICAgICAgID8gMAotICAgICAgICAgICAgICAgICAgICA6IE4gLSA0Ci0gICAgICAgICAgICAgICAgICAgICk+Ci0gICAgICAgICAgICAsIGNodW5rX3Jlc3VsdF8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9hZHZhbmNlX2ZvcndhcmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2FkdmFuY2VfZm9yd2FyZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyMzMxZGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2FkdmFuY2VfZm9yd2FyZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiYWR2YW5jZV9mb3J3YXJkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGxvbmcgTiA+IHN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8MT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwyPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDM+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8ND4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2ZvcndhcmQ8ND4KLSAgICAgICAgICAgICwgSXRlcmF0b3IKLSAgICAgICAgICAgID46OnR5cGUgY2h1bmtfcmVzdWx0XzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2ZvcndhcmQ8KAotICAgICAgICAgICAgICAgIChOIC0gNCkgPCAwCi0gICAgICAgICAgICAgICAgICAgID8gMAotICAgICAgICAgICAgICAgICAgICA6IE4gLSA0Ci0gICAgICAgICAgICAgICAgICAgICk+Ci0gICAgICAgICAgICAsIGNodW5rX3Jlc3VsdF8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9hbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2FuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlY2Q3ZmQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2FuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiYW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGJvb2wgQ18sIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0ID4KLXN0cnVjdCBhbmRfaW1wbAotICAgIDogZmFsc2VfCi17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQgPgotc3RydWN0IGFuZF9pbXBsPCB0cnVlLFQxLFQyLFQzLFQ0ID4KLSAgICA6IGFuZF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICwgVDIsIFQzLCBUNAotICAgICAgICAsIHRydWVfCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhbmRfaW1wbDwKLSAgICAgICAgICB0cnVlCi0gICAgICAgICwgdHJ1ZV8sIHRydWVfLCB0cnVlXywgdHJ1ZV8KLSAgICAgICAgPgotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgICwgdHlwZW5hbWUgVDMgPSB0cnVlXywgdHlwZW5hbWUgVDQgPSB0cnVlXywgdHlwZW5hbWUgVDUgPSB0cnVlXwotICAgID4KLXN0cnVjdCBhbmRfCi0KLSAgICA6IGF1eDo6YW5kX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ci0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBhbmRfCi0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoCi0gICAgICAyCi0gICAgLCA1Ci0gICAgLCBhbmRfCi0gICAgKQotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2FwcGx5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9hcHBseS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5NTM3N2MuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2FwcGx5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiYXBwbHkuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseTAKLQotICAgIDogYXBwbHlfd3JhcDA8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDEKLSAgICAgICAgLCBhcHBseTAKLSAgICAgICAgLCAoRiApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseTwgRixuYSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBhcHBseTA8Rj4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkxCi0KLSAgICA6IGFwcGx5X3dyYXAxPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDIKLSAgICAgICAgLCBhcHBseTEKLSAgICAgICAgLCAoRiwgVDEpCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsbmEsbmEsbmEsbmEgPgotICAgIDogYXBwbHkxPCBGLFQxID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5MgotCi0gICAgOiBhcHBseV93cmFwMjwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMwotICAgICAgICAsIGFwcGx5MgotICAgICAgICAsIChGLCBUMSwgVDIpCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5PCBGLFQxLFQyLG5hLG5hLG5hID4KLSAgICA6IGFwcGx5MjwgRixUMSxUMiA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkzCi0KLSAgICA6IGFwcGx5X3dyYXAzPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNAotICAgICAgICAsIGFwcGx5MwotICAgICAgICAsIChGLCBUMSwgVDIsIFQzKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsVDIsVDMsbmEsbmEgPgotICAgIDogYXBwbHkzPCBGLFQxLFQyLFQzID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk0Ci0KLSAgICA6IGFwcGx5X3dyYXA0PAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBhcHBseTQKLSAgICAgICAgLCAoRiwgVDEsIFQyLCBUMywgVDQpCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsVDIsVDMsVDQsbmEgPgotICAgIDogYXBwbHk0PCBGLFQxLFQyLFQzLFQ0ID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5NQotCi0gICAgOiBhcHBseV93cmFwNTwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNgotICAgICAgICAsIGFwcGx5NQotICAgICAgICAsIChGLCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5Ci0gICAgOiBhcHBseTU8IEYsVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2FwcGx5X2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvYXBwbHlfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY2NzFkMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvYXBwbHlfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJhcHBseV9md2QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYQotICAgID4KLXN0cnVjdCBhcHBseTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5MDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseTE7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5MjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5MzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseTQ7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5NTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2FwcGx5X3dyYXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2FwcGx5X3dyYXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZWM2Mzk3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9hcHBseV93cmFwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ2MSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwOAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiYXBwbHlfd3JhcC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwwOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgYm9vbCBGX2hhc19hcHBseSA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMF9iY2IgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8bmE+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMF9iY2I8IEYsdHJ1ZSA+IHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OmFwcGx5IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMDwKLSAgICAgICAgICAwCi0gICAgICAgICwgRgotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBhcHBseV93cmFwX2ltcGwwX2JjYjwgRiwgYXV4OjpoYXNfYXBwbHk8Rj46OnZhbHVlID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwwPAotICAgICAgICAgIDEKLSAgICAgICAgLCBGCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgCi0gICAgICAgIG5hCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwwPAotICAgICAgICAgIDIKLSAgICAgICAgLCBGCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgCi0gICAgICAgIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwwPAotICAgICAgICAgIDMKLSAgICAgICAgLCBGCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgCi0gICAgICAgIG5hLCBuYSwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMDwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRgotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgIAotICAgICAgICBuYSwgbmEsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwwPAotICAgICAgICAgIDUKLSAgICAgICAgLCBGCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgCi0gICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMAotICAgIDogYXBwbHlfd3JhcF9pbXBsMDwKLSAgICAgICAgICA6Om5kbmJvb3N0OjptcGw6OmF1eDo6YXJpdHk8IEYsMCA+Ojp2YWx1ZQotICAgICAgICAsIEYKLSAgICAgICAKLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwxPAotICAgICAgICAgIDEKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEKLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwxPAotICAgICAgICAgIDIKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEKLSAgICAgICAgLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMTwKLSAgICAgICAgICAzCi0gICAgICAgICwgRgotICAgICAgICAsIFQxCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxCi0gICAgICAgICwgbmEsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwxPAotICAgICAgICAgIDQKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwxPAotICAgICAgICAgIDUKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDEKLSAgICA6IGFwcGx5X3dyYXBfaW1wbDE8Ci0gICAgICAgICAgOjpuZG5ib29zdDo6bXBsOjphdXg6OmFyaXR5PCBGLDEgPjo6dmFsdWUKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDI8Ci0gICAgICAgICAgMgotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMjwKLSAgICAgICAgICAzCi0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMSwgVDIKLQotICAgICAgICAsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMjwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMSwgVDIKLQotICAgICAgICAsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDI8Ci0gICAgICAgICAgNQotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyCi0KLSAgICAgICAgLCBuYSwgbmEsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDIKLSAgICA6IGFwcGx5X3dyYXBfaW1wbDI8Ci0gICAgICAgICAgOjpuZG5ib29zdDo6bXBsOjphdXg6OmFyaXR5PCBGLDIgPjo6dmFsdWUKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDM8Ci0gICAgICAgICAgMwotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMiwgVDMKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMzwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyLCBUMwotCi0gICAgICAgICwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMzwKLSAgICAgICAgICA1Ci0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyLCBUMwotCi0gICAgICAgICwgbmEsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAzCi0gICAgOiBhcHBseV93cmFwX2ltcGwzPAotICAgICAgICAgIDo6bmRuYm9vc3Q6Om1wbDo6YXV4Ojphcml0eTwgRiwzID46OnZhbHVlCi0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsNDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGw0PAotICAgICAgICAgIDQKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyLCBUMywgVDQKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDQ8Ci0gICAgICAgICAgNQotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMSwgVDIsIFQzLCBUNAotCi0gICAgICAgICwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5X3dyYXA0Ci0gICAgOiBhcHBseV93cmFwX2ltcGw0PAotICAgICAgICAgIDo6bmRuYm9vc3Q6Om1wbDo6YXV4Ojphcml0eTwgRiw0ID46OnZhbHVlCi0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGw1OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGw1PAotICAgICAgICAgIDUKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMiwgVDMsIFQ0LCBUNQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5X3dyYXA1Ci0gICAgOiBhcHBseV93cmFwX2ltcGw1PAotICAgICAgICAgIDo6bmRuYm9vc3Q6Om1wbDo6YXV4Ojphcml0eTwgRiw1ID46OnZhbHVlCi0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvYXJnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9hcmcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOWMwMTdhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9hcmcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEtMjAwMgotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJhcmcuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPCAtMSA+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gLTEpOwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTEgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8MT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAxKTsKLSAgICB0eXBlZGVmIGFyZzwyPiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTEgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8Mj4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAyKTsKLSAgICB0eXBlZGVmIGFyZzwzPiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTIgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8Mz4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAzKTsKLSAgICB0eXBlZGVmIGFyZzw0PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTMgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8ND4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSA0KTsKLSAgICB0eXBlZGVmIGFyZzw1PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTQgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8NT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSA1KTsKLSAgICB0eXBlZGVmIGFyZzw2PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTUgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05PTlRZUEVfQVJJVFlfU1BFQygxLGludCwgYXJnKQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2Jhc2ljX2JpbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2Jhc2ljX2JpbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYmE0Y2E1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9iYXNpY19iaW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwMCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImJhc2ljX2JpbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnCi17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwgYXJnPE4+LCBVMSwgVTIsIFUzLCBVNCwgVTUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8bXBsOjphcmc8Tj4sIFUxLCBVMiwgVTMsIFU0LCBVNT46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDAKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDA8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMDxGPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDA8Rj4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygxLCBiaW5kMCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygxLCBiaW5kMCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kMQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMKLSAgICAsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDE8IEYsVDEgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDE8IEYsVDEgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDIsIGJpbmQxKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDIsIGJpbmQxKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kMgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMgotICAgICwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDI8IEYsVDEsVDIgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDI8IEYsVDEsVDIgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDMsIGJpbmQyKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDMsIGJpbmQyKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDMKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBVMQotICAgICwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQzPCBGLFQxLFQyLFQzID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQzPCBGLFQxLFQyLFQzID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg0LCBiaW5kMykKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg0LCBiaW5kMykKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kNAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDQ8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kNDwgRixUMSxUMixUMyxUNCA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNDwgRixUMSxUMixUMyxUNCA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNSwgYmluZDQpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNSwgYmluZDQpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQ1Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDUsVTEsVTIsVTMsVTQsVTUgPiB0NTsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUsIHR5cGVuYW1lIHQ1Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9iaW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9iaW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2E1NzU0Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvYmluZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJiaW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZwotewotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBBcmcKLSAgICA+Ci1zdHJ1Y3QgcmVwbGFjZV91bm5hbWVkX2FyZwotewotICAgIHR5cGVkZWYgQXJnIG5leHQ7Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEFyZwotICAgID4KLXN0cnVjdCByZXBsYWNlX3VubmFtZWRfYXJnPCBhcmc8IC0xID4sIEFyZyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBBcmc6Om5leHQgbmV4dDsKLSAgICB0eXBlZGVmIEFyZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8IGFyZzxOPiwgVTEsIFUyLCBVMywgVTQsIFU1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PG1wbDo6YXJnPE4+LCBVMSwgVTIsIFUzLCBVNCwgVTU+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQwCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQwPEY+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMDxGPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDEsIGJpbmQwKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDEsIGJpbmQwKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGJpbmQxCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMwotICAgICwgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMTwgRixUMSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMTwgRixUMSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMiwgYmluZDEpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMiwgYmluZDEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQyCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIKLSAgICAsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQyPCBGLFQxLFQyID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQyPCBGLFQxLFQyID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygzLCBiaW5kMikKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygzLCBiaW5kMikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMzwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFUxCi0gICAgLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDM8IEYsVDEsVDIsVDMgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDM8IEYsVDEsVDIsVDMgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDQsIGJpbmQzKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDQsIGJpbmQzKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGJpbmQ0Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUNCxuNCA+IHI0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0Ojp0eXBlIGE0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0OjpuZXh0IG41OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZDUKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ0LG40ID4gcjQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6OnR5cGUgYTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6Om5leHQgbjU7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ1LG41ID4gcjU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjU6OnR5cGUgYTU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjU6Om5leHQgbjY7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNSxVMSxVMixVMyxVNCxVNSA+IHQ1OwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlLCB0eXBlbmFtZSB0NTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNiwgYmluZDUpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNiwgYmluZDUpCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvYmluZF9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2JpbmRfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGU1ZDU1NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvYmluZF9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImJpbmRfZndkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDE7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDM7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDQ7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQ1OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvYml0YW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9iaXRhbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YTNmODQ3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9iaXRhbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJiaXRhbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBiaXRhbmRfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGJpdGFuZF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgYml0YW5kX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0YW5kX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdGFuZF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0YW5kX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0YW5kX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBiaXRhbmRfCi0gICAgOiBiaXRhbmRfPCBiaXRhbmRfPCBiaXRhbmRfPCBiaXRhbmRfPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0YW5kXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBiaXRhbmRfPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IGJpdGFuZF88IGJpdGFuZF88IGJpdGFuZF88IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRhbmRfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXzwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBiaXRhbmRfPCBiaXRhbmRfPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdGFuZF8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGJpdGFuZF88IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IGJpdGFuZF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGJpdGFuZF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYml0YW5kX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdGFuZF8KLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXRhbmRfKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBiaXRhbmRfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICYgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2JpdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9iaXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwODI4OTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2JpdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiYml0b3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBiaXRvcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0b3JfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdG9yX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0b3JfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0b3JfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdG9yX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0b3JfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdG9yXwotICAgIDogYml0b3JfPCBiaXRvcl88IGJpdG9yXzwgYml0b3JfPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGJpdG9yXzwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBiaXRvcl88IGJpdG9yXzwgYml0b3JfPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGJpdG9yXzwgYml0b3JfPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBiaXRvcl9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGJpdG9yX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBiaXRvcl90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXRvcl8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGJpdG9yX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICB8IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9iaXR4b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2JpdHhvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4Y2RkMjMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2JpdHhvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImJpdHhvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGJpdHhvcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0eG9yX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBiaXR4b3JfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBiaXR4b3JfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0eG9yX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXR4b3JfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBiaXR4b3JfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdHhvcl8KLSAgICA6IGJpdHhvcl88IGJpdHhvcl88IGJpdHhvcl88IGJpdHhvcl88IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXR4b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGJpdHhvcl88IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogYml0eG9yXzwgYml0eG9yXzwgYml0eG9yXzwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdHhvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBiaXR4b3JfPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGJpdHhvcl88IGJpdHhvcl88IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0eG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXzwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogYml0eG9yX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgYml0eG9yX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBiaXR4b3JfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0eG9yXwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGJpdHhvcl8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGJpdHhvcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgXiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvZGVxdWUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2RlcXVlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTM1ZDhhMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvZGVxdWUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJkZXF1ZS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBkZXF1ZTsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjA8ICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IyPCBUMCxUMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyPCBUMCxUMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I1PCBUMCxUMSxUMixUMyxUNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I1PCBUMCxUMSxUMixUMyxUNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE3PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IGRlcXVlCi0gICAgOiB2ZWN0b3IyMDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9kaXZpZGVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9kaXZpZGVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWVjNTgwZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvZGl2aWRlcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImRpdmlkZXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBkaXZpZGVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBkaXZpZGVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBkaXZpZGVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZGl2aWRlc19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBkaXZpZGVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBkaXZpZGVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZGl2aWRlc190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlcwotICAgIDogZGl2aWRlczwgZGl2aWRlczwgZGl2aWRlczwgZGl2aWRlczwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGRpdmlkZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlczwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBkaXZpZGVzPCBkaXZpZGVzPCBkaXZpZGVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IGRpdmlkZXM8IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogZGl2aWRlczwgZGl2aWRlczwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBkaXZpZGVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBkaXZpZGVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBkaXZpZGVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZGl2aWRlc190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZGl2aWRlc190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBkaXZpZGVzCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgZGl2aWRlcykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGl2aWRlc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgLyBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvZXF1YWxfdG8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2VxdWFsX3RvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzExNTljMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvZXF1YWxfdG8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImVxdWFsX3RvLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZXF1YWxfdG9faW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGVxdWFsX3RvX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBlcXVhbF90b19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBlcXVhbF90b19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGVxdWFsX3RvX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBlcXVhbF90bwotCi0gICAgOiBlcXVhbF90b19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGVxdWFsX3RvX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBlcXVhbF90b190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBlcXVhbF90bywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgZXF1YWxfdG8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZXF1YWxfdG9faW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlICA9PSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YmI0YmVlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTgwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJmb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAwLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgMSxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMSBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDIsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUyIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgMyxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUzIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgNCxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIHN0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlNCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsCi17Ci0gICAgdHlwZWRlZiBmb2xkX2ltcGw8Ci0gICAgICAgICAgNAotICAgICAgICAsIEZpcnN0Ci0gICAgICAgICwgTGFzdAotICAgICAgICAsIFN0YXRlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gY2h1bmtfOwotCi0gICAgdHlwZWRlZiBmb2xkX2ltcGw8Ci0gICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjppdGVyYXRvcgotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBjaHVua186OnN0YXRlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gcmVzXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAtMSxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci0gICAgOiBmb2xkX2ltcGw8Ci0gICAgICAgICAgLTEKLSAgICAgICAgLCB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjxGb3J3YXJkT3AsU3RhdGUsIHR5cGVuYW1lIGRlcmVmPEZpcnN0Pjo6dHlwZT46OnR5cGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgLTEsTGFzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9mdWxsX2xhbWJkYS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvZnVsbF9sYW1iZGEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNDcxZjE4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9mdWxsX2xhbWJkYS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NTggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImZ1bGxfbGFtYmRhLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICBib29sIEMxID0gZmFsc2UsIGJvb2wgQzIgPSBmYWxzZSwgYm9vbCBDMyA9IGZhbHNlLCBib29sIEM0ID0gZmFsc2UKLSAgICAsIGJvb2wgQzUgPSBmYWxzZQotICAgID4KLXN0cnVjdCBsYW1iZGFfb3IKLSAgICA6IHRydWVfCi17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGFtYmRhX29yPCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSA+Ci0gICAgOiBmYWxzZV8KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgICwgdHlwZW5hbWUgQXJpdHkKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhCi17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBUIHJlc3VsdF87Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgaXNfbGFtYmRhX2V4cHJlc3Npb24KLSAgICA6IGxhbWJkYTxUPjo6aXNfbGUKLXsKLX07Ci0KLXRlbXBsYXRlPCBpbnQgTiwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBsYW1iZGE8IGFyZzxOPixUYWcsIGludF88IC0xID4gPgotewotICAgIHR5cGVkZWYgdHJ1ZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBtcGw6OmFyZzxOPiByZXN1bHRfOyAvLyBxdWFsaWZpZWQgZm9yIHRoZSBzYWtlIG9mIE1JUFNwcm8gNy40MQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDA8Rj4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgLCBpbnRfPDE+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQwPAotICAgICAgICAgIEYKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDEKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MTwgdHJ1ZV8sVGFnLEYsTDEgPgotewotICAgIHR5cGVkZWYgYmluZDE8Ci0gICAgICAgICAgcXVvdGUxPCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8VDE+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50XzwxPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQxPAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxCi0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kMTwgRixUMSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50XzwyPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMTwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MgotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMgotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQyPCB0cnVlXyxUYWcsRixMMSxMMiA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMjwKLSAgICAgICAgICBxdW90ZTI8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XywgdHlwZW5hbWUgTDI6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88Mj4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDI8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyCi0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDI8IEYsVDEsVDIgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88Mz4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDI8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDMKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlLCB0eXBlbmFtZSBMMzo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MzwgdHJ1ZV8sVGFnLEYsTDEsTDIsTDMgPgotewotICAgIHR5cGVkZWYgYmluZDM8Ci0gICAgICAgICAgcXVvdGUzPCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfLCB0eXBlbmFtZSBMMzo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8IFQxLFQyLFQzID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgLCBpbnRfPDM+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQyLFRhZyA+IGwyOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMyxUYWcgPiBsMzsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZSwgaXNfbGUzOjp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDM8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyLCBsMwotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kMzwgRixUMSxUMixUMyA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50Xzw0PgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMzwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEsIFQyLCBUMwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMywgdHlwZW5hbWUgTDQKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NAotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUsIHR5cGVuYW1lIEwzOjp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMywgdHlwZW5hbWUgTDQKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NDwgdHJ1ZV8sVGFnLEYsTDEsTDIsTDMsTDQgPgotewotICAgIHR5cGVkZWYgYmluZDQ8Ci0gICAgICAgICAgcXVvdGU0PCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfLCB0eXBlbmFtZSBMMzo6cmVzdWx0XwotICAgICAgICAsIHR5cGVuYW1lIEw0OjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMixUMyxUNCA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50Xzw0PgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDMsVGFnID4gbDM7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQ0LFRhZyA+IGw0OwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZSwgaXNfbGUzOjp2YWx1ZSwgaXNfbGU0Ojp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDQ8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyLCBsMywgbDQKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgLCBpbnRfPDU+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQ0PAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBQNSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0LCB0eXBlbmFtZSBMNQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQ1Ci17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlLCB0eXBlbmFtZSBMMjo6dHlwZSwgdHlwZW5hbWUgTDM6OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBMNDo6dHlwZSwgdHlwZW5hbWUgTDU6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBQNSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0LCB0eXBlbmFtZSBMNQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQ1PCB0cnVlXyxUYWcsRixMMSxMMixMMyxMNCxMNSA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNTwKLSAgICAgICAgICBxdW90ZTU8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XywgdHlwZW5hbWUgTDI6OnJlc3VsdF8sIHR5cGVuYW1lIEwzOjpyZXN1bHRfCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnJlc3VsdF8sIHR5cGVuYW1lIEw1OjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNAotICAgICAgICAsIHR5cGVuYW1lIFA1Ci0gICAgICAgID4KLSAgICAgIGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMixUMyxUNCxUNSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50Xzw1PgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDMsVGFnID4gbDM7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQ0LFRhZyA+IGw0OwotICAgIHR5cGVkZWYgbGFtYmRhPCBUNSxUYWcgPiBsNTsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsNTo6aXNfbGUgaXNfbGU1OwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlLCBpc19sZTI6OnZhbHVlLCBpc19sZTM6OnZhbHVlLCBpc19sZTQ6OnZhbHVlCi0gICAgICAgICwgaXNfbGU1Ojp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDU8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyLCBsMywgbDQsIGw1Ci0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88Nj4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDU8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLS8vLyBzcGVjaWFsIGNhc2UgZm9yICdwcm90ZWN0JwotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgbGFtYmRhPCBtcGw6OnByb3RlY3Q8VD4sVGFnLCBpbnRfPDE+ID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxUPiByZXN1bHRfOwotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotLy8vIHNwZWNpYWxpemF0aW9ucyBmb3IgdGhlIG1haW4gJ2JpbmQnIGZvcm0KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50Xzw2PgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgICwgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgICwgdHlwZW5hbWUgQXJpdHkKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGxhbWJkYTwgRixUYWcxLEFyaXR5ID4KLSAgICAgICAgLCBUYWcyCi0gICAgICAgICwgaW50XzwzPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IEYsVGFnMiA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUYWcxLFRhZzIgPiBsMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQxPCBxdW90ZTE8YXV4Ojp0ZW1wbGF0ZV9hcml0eT4sIHR5cGVuYW1lIGwxOjpyZXN1bHRfID4gYXJpdHlfOwotICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBpZl88IGlzX2xlLGFyaXR5XyxBcml0eSA+Ojp0eXBlLCBUYWcyID4gbDM7Ci0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDM8aXNfbGUsIFRhZzIsIG1wbDo6bGFtYmRhLCBsMSwgbDIsIGwzPiBsZV9yZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAzLCBsYW1iZGEpCi0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9ncmVhdGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9ncmVhdGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjYwODg1MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvZ3JlYXRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiZ3JlYXRlci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGdyZWF0ZXJfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGdyZWF0ZXJfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGdyZWF0ZXJfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBncmVhdGVyX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBncmVhdGVyCi0KLSAgICA6IGdyZWF0ZXJfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBncmVhdGVyX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBncmVhdGVyX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGdyZWF0ZXIsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGdyZWF0ZXIpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgPiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvZ3JlYXRlcl9lcXVhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvZ3JlYXRlcl9lcXVhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3NTg2MjkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2dyZWF0ZXJfZXF1YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImdyZWF0ZXJfZXF1YWwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBncmVhdGVyX2VxdWFsX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBncmVhdGVyX2VxdWFsX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcl9lcXVhbAotCi0gICAgOiBncmVhdGVyX2VxdWFsX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZ3JlYXRlcl9lcXVhbF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZ3JlYXRlcl9lcXVhbF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBncmVhdGVyX2VxdWFsLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBncmVhdGVyX2VxdWFsKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlID49IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9pbmhlcml0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9pbmhlcml0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWNlMTg5NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvaW5oZXJpdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImluaGVyaXQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgPgotc3RydWN0IGluaGVyaXQyCi0gICAgOiBUMSwgVDIKLXsKLSAgICB0eXBlZGVmIGluaGVyaXQyIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBpbmhlcml0MiwgKFQxLCBUMikpCi19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEgPgotc3RydWN0IGluaGVyaXQyPCBUMSxlbXB0eV9iYXNlID4KLXsKLSAgICB0eXBlZGVmIFQxIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKDIsIGluaGVyaXQyLCAoVDEsIGVtcHR5X2Jhc2UpKQotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQyID4KLXN0cnVjdCBpbmhlcml0MjwgZW1wdHlfYmFzZSxUMiA+Ci17Ci0gICAgdHlwZWRlZiBUMiB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygyLCBpbmhlcml0MiwgKGVtcHR5X2Jhc2UsIFQyKSkKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpbmhlcml0MjwgZW1wdHlfYmFzZSxlbXB0eV9iYXNlID4KLXsKLSAgICB0eXBlZGVmIGVtcHR5X2Jhc2UgdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoMiwgaW5oZXJpdDIsIChlbXB0eV9iYXNlLCBlbXB0eV9iYXNlKSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygyLCBpbmhlcml0MikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgPgotc3RydWN0IGluaGVyaXQzCi0gICAgOiBpbmhlcml0MjwKLSAgICAgICAgICB0eXBlbmFtZSBpbmhlcml0MjwKLSAgICAgICAgICAgICAgVDEsIFQyCi0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgVDMKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMwotICAgICAgICAsIGluaGVyaXQzCi0gICAgICAgICwgKCBUMSwgVDIsIFQzKQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMywgaW5oZXJpdDMpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYSwgdHlwZW5hbWUgVDQgPSBuYQotICAgID4KLXN0cnVjdCBpbmhlcml0NAotICAgIDogaW5oZXJpdDI8Ci0gICAgICAgICAgdHlwZW5hbWUgaW5oZXJpdDM8Ci0gICAgICAgICAgICAgIFQxLCBUMiwgVDMKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgLCBUNAotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA0Ci0gICAgICAgICwgaW5oZXJpdDQKLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoNCwgaW5oZXJpdDQpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYSwgdHlwZW5hbWUgVDQgPSBuYQotICAgICwgdHlwZW5hbWUgVDUgPSBuYQotICAgID4KLXN0cnVjdCBpbmhlcml0NQotICAgIDogaW5oZXJpdDI8Ci0gICAgICAgICAgdHlwZW5hbWUgaW5oZXJpdDQ8Ci0gICAgICAgICAgICAgIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgVDUKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGluaGVyaXQ1Ci0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQyg1LCBpbmhlcml0NSkKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQyID0gZW1wdHlfYmFzZQotICAgICwgdHlwZW5hbWUgVDMgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUNCA9IGVtcHR5X2Jhc2UKLSAgICAsIHR5cGVuYW1lIFQ1ID0gZW1wdHlfYmFzZQotICAgID4KLXN0cnVjdCBpbmhlcml0Ci0gICAgOiBpbmhlcml0NTwgVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGluaGVyaXQ8IG5hLG5hLG5hLG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwKLQotICAgICAgICAgIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNQotCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBpbmhlcml0PCBUMSxUMixUMyxUNCxUNSA+Ci0gICAgewotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfTEFNQkRBKDUsIGluaGVyaXQpCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfQVJJVFkoNSwgaW5oZXJpdCkKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19URU1QTEFURV9BUklUWSg1LCA1LCBpbmhlcml0KQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0OWUzMTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDEtMjAwMgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiaXRlcl9mb2xkX2lmX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIFN0YXRlID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwCi17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8IGJvb2wgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGVPcAotICAgICAgICAsIHR5cGVuYW1lIEl0ZXJhdG9yT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgU3RhdGVPcCxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXJhdG9yT3A6OnR5cGUgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsPGZhbHNlPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZU9wCi0gICAgICAgICwgdHlwZW5hbWUgSXRlcmF0b3JPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAsIHR5cGVuYW1lIFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFByZWRpY2F0ZSxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIG5vdF9sYXN0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChub3RfbGFzdCk6OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IEl0ZXJhdG9yLFN0YXRlLEZvcndhcmRPcCwgbXBsOjpuZXh0PEl0ZXJhdG9yPiA+IGltcGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgUHJlZGljYXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFByZWRpY2F0ZSxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIG5vdF9sYXN0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChub3RfbGFzdCk6OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IEl0ZXJhdG9yLFN0YXRlLEJhY2t3YXJkT3AsIGlkZW50aXR5PEl0ZXJhdG9yPiA+IGltcGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkUHJlZGljYXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfaW1wbAotewotIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwPCBJdGVyYXRvcixTdGF0ZSA+IGZvcndhcmRfc3RlcDA7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAwOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMDo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDE7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAxOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDI7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAyOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDM7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAzOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMzo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0Ojpub3RfbGFzdAotICAgICAgICAsIGl0ZXJfZm9sZF9pZl9pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjppdGVyYXRvcgotICAgICAgICAgICAgLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjpzdGF0ZQotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgICwgRm9yd2FyZFByZWRpY2F0ZQotICAgICAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICAgICAsIEJhY2t3YXJkUHJlZGljYXRlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgaXRlcl9mb2xkX2lmX251bGxfc3RlcDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6aXRlcmF0b3IKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6c3RhdGUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZSBiYWNrd2FyZF9zdGVwNDsKLQotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDM6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwNDo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDM7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAzOjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMjsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAxOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDI6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAxOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDA6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMTo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDA7Ci0gICAgCi0KLSBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMDo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwNDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9pdGVyX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvaXRlcl9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTU1ZGE1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9pdGVyX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gIml0ZXJfZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDAsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiBzdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDEsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTEgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDIsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUyIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAzLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMSxpdGVyMSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTIsaXRlcjIgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTMgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDQsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMixpdGVyMiA+Ojp0eXBlIHN0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTMsaXRlcjMgPjo6dHlwZSBzdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTQgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsCi17Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRmlyc3QKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgU3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBjaHVua187Ci0KLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6aXRlcmF0b3IKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjpzdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IHJlc187Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAtMSxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci0gICAgOiBpdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAtMQotICAgICAgICAsIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsU3RhdGUsRmlyc3QgPjo6dHlwZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IC0xLExhc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvbGFtYmRhX25vX2N0cHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2xhbWJkYV9ub19jdHBzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTI4N2ExZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvbGFtYmRhX25vX2N0cHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjI5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJsYW1iZGFfbm9fY3Rwcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgYm9vbCBDMSA9IGZhbHNlLCBib29sIEMyID0gZmFsc2UsIGJvb2wgQzMgPSBmYWxzZSwgYm9vbCBDNCA9IGZhbHNlCi0gICAgLCBib29sIEM1ID0gZmFsc2UKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhX29yCi0gICAgOiB0cnVlXwotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxhbWJkYV9vcjwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UgPgotICAgIDogZmFsc2VfCi17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgQXJpdHkgPiBzdHJ1Y3QgbGFtYmRhX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICB0eXBlZGVmIGlzX3BsYWNlaG9sZGVyPFQ+IGlzX2xlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50XzwxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMywgVGFnLCBmYWxzZV8gPiBsMzsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUzKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc0LCBUYWcsIGZhbHNlXyA+IGw0OwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTQpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQ0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlLCB0eXBlbmFtZSBsMzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBsNDo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMywgVGFnLCBmYWxzZV8gPiBsMzsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzQsIFRhZywgZmFsc2VfID4gbDQ7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc1LCBUYWcsIGZhbHNlXyA+IGw1OwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGw1Ojppc19sZSBpc19sZTU7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUzKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlNCk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTUpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQ1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlLCB0eXBlbmFtZSBsMzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBsNDo6dHlwZSwgdHlwZW5hbWUgbDU6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgICwgdHlwZW5hbWUgUHJvdGVjdAotICAgID4KLXN0cnVjdCBsYW1iZGEKLXsKLSAgICAvLy8gTWV0YWZ1bmN0aW9uIGZvcndhcmRpbmcgY29uZnVzZXMgTVNWQyA2LngKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dGVtcGxhdGVfYXJpdHk8VD46OnR5cGUgYXJpdHlfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfaW1wbDxhcml0eV8+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVCxUYWcsUHJvdGVjdCA+IGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsXzo6dHlwZSB0eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbF86OmlzX2xlIGlzX2xlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMywgbGFtYmRhLCAoVCwgVGFnLCBQcm90ZWN0KSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMSwgMywgbGFtYmRhKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgaXNfbGFtYmRhX2V4cHJlc3Npb24KLSAgICA6IGxhbWJkYTxUPjo6aXNfbGUKLXsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9sZXNzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9sZXNzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGY5YTEwYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvbGVzcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAibGVzcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGxlc3NfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGxlc3NfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGxlc3NfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBsZXNzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGxlc3NfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGxlc3NfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBsZXNzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBsZXNzCi0KLSAgICA6IGxlc3NfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBsZXNzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBsZXNzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGxlc3MsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGxlc3MpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGVzc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgPiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvbGVzc19lcXVhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvbGVzc19lcXVhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlNDcyNmYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2xlc3NfZXF1YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImxlc3NfZXF1YWwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBsZXNzX2VxdWFsX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBsZXNzX2VxdWFsX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBsZXNzX2VxdWFsX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbGVzc19lcXVhbF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbGVzc19lcXVhbAotCi0gICAgOiBsZXNzX2VxdWFsX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbGVzc19lcXVhbF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbGVzc19lcXVhbF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBsZXNzX2VxdWFsLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBsZXNzX2VxdWFsKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlIDw9IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9saXN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9saXN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzhlZGJjYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvbGlzdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImxpc3QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgbGlzdDsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDA8ICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MDwgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE8VDA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDI8IFQwLFQxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyPCBUMCxUMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MzwgVDAsVDEsVDIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q0PCBUMCxUMSxUMixUMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDU8IFQwLFQxLFQyLFQzLFQ0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q1PCBUMCxUMSxUMixUMyxUNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NjwgVDAsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0OTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTc8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgbGlzdAotICAgIDogbGlzdDIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9saXN0X2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2xpc3RfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxYmIzNmIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2xpc3RfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImxpc3RfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QwX2M8VD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QwX2M8VD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDFfYzwgVCxDMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MV9jPCBULEMwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDJfYzwgVCxDMCxDMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0Ml9jPCBULEMwLEMxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMgotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDNfYzwgVCxDMCxDMSxDMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0M19jPCBULEMwLEMxLEMyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMwotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDRfYzwgVCxDMCxDMSxDMixDMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NF9jPCBULEMwLEMxLEMyLEMzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDVfYzwgVCxDMCxDMSxDMixDMyxDNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NV9jPCBULEMwLEMxLEMyLEMzLEM0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0Nl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNgotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0N19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNwotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0OF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0OV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDEwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDExX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxMl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEyX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDEzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMwotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTRfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTVfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE1X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE2X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxN19jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxN19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNwotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxOF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE5X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxOV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jCi0gICAgOiBsaXN0MjBfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MjBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL21hcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvbWFwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTZmODk2NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvbWFwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAibWFwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IG1hcDsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAwPCAgPgotewotICAgIHR5cGVkZWYgbWFwMDwgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTxUMD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE8VDA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAyPCBUMCxUMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAyPCBUMCxUMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMzwgVDAsVDEsVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMzwgVDAsVDEsVDIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA0PCBUMCxUMSxUMixUMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA0PCBUMCxUMSxUMixUMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA1PCBUMCxUMSxUMixUMyxUNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA1PCBUMCxUMSxUMixUMyxUNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwNjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNjwgVDAsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTY8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE3PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxODwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTk8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgbWFwCi0gICAgOiBtYXAyMDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9taW51cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvbWludXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MDA2ZTI2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9taW51cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gIm1pbnVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbWludXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IG1pbnVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBtaW51c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IG1pbnVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG1pbnVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBtaW51c19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG1pbnVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBtaW51cwotICAgIDogbWludXM8IG1pbnVzPCBtaW51czwgbWludXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBtaW51cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBtaW51czwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBtaW51czwgbWludXM8IG1pbnVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBtaW51czwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBtaW51czwgbWludXM8IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IG1pbnVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBtaW51c19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIG1pbnVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBtaW51c190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBtaW51cwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIG1pbnVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBtaW51c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgLSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvbW9kdWx1cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvbW9kdWx1cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwMDlmODkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL21vZHVsdXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJtb2R1bHVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbW9kdWx1c19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbW9kdWx1c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbW9kdWx1c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IG1vZHVsdXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbW9kdWx1c19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbW9kdWx1c19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG1vZHVsdXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IG1vZHVsdXMKLQotICAgIDogbW9kdWx1c19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIG1vZHVsdXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIG1vZHVsdXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbW9kdWx1cywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbW9kdWx1cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbW9kdWx1c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgJSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2Mvbm90X2VxdWFsX3RvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9ub3RfZXF1YWxfdG8uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NDA2YTQyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9ub3RfZXF1YWxfdG8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gIm5vdF9lcXVhbF90by5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IG5vdF9lcXVhbF90b19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbm90X2VxdWFsX3RvX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBub3RfZXF1YWxfdG9faW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBub3RfZXF1YWxfdG9fdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IG5vdF9lcXVhbF90bwotCi0gICAgOiBub3RfZXF1YWxfdG9faW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBub3RfZXF1YWxfdG9fdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIG5vdF9lcXVhbF90b190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBub3RfZXF1YWxfdG8sIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIG5vdF9lcXVhbF90bykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlICE9IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9vci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2Mvb3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YmMxOWQwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9vci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAib3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgYm9vbCBDXywgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQgPgotc3RydWN0IG9yX2ltcGwKLSAgICA6IHRydWVfCi17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQgPgotc3RydWN0IG9yX2ltcGw8IGZhbHNlLFQxLFQyLFQzLFQ0ID4KLSAgICA6IG9yX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgLCBUMiwgVDMsIFQ0Ci0gICAgICAgICwgZmFsc2VfCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBvcl9pbXBsPAotICAgICAgICAgIGZhbHNlCi0gICAgICAgICwgZmFsc2VfLCBmYWxzZV8sIGZhbHNlXywgZmFsc2VfCi0gICAgICAgID4KLSAgICA6IGZhbHNlXwotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgLCB0eXBlbmFtZSBUMyA9IGZhbHNlXywgdHlwZW5hbWUgVDQgPSBmYWxzZV8sIHR5cGVuYW1lIFQ1ID0gZmFsc2VfCi0gICAgPgotc3RydWN0IG9yXwotCi0gICAgOiBhdXg6Om9yX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ci0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBvcl8KLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigKLSAgICAgIDIKLSAgICAsIDUKLSAgICAsIG9yXwotICAgICkKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9wbGFjZWhvbGRlcnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL3BsYWNlaG9sZGVycy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzMTc2MWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL3BsYWNlaG9sZGVycy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxLTIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gInBsYWNlaG9sZGVycy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwgLTEgPiBfOwotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8pCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol87Ci19Ci0KLX19Ci0KLS8vLyBhZ3VydCwgMTcvbWFyLzAyOiBvbmUgbW9yZSBwbGFjZWhvbGRlciBmb3IgdGhlIGxhc3QgJ2FwcGx5IycgCi0vLy8gc3BlY2lhbGl6YXRpb24KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDE+IF8xOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzEpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol8xOwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Mj4gXzI7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfMikKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzI7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwzPiBfMzsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8zKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfMzsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDQ+IF80OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzQpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol80OwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8NT4gXzU7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfNSkKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzU7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzw2PiBfNjsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF82KQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfNjsKLX0KLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9wbHVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9wbHVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTRiZDYzMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvcGx1cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gInBsdXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBwbHVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBwbHVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBwbHVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgcGx1c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBwbHVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBwbHVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcGx1c190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgcGx1cwotICAgIDogcGx1czwgcGx1czwgcGx1czwgcGx1czwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIHBsdXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgcGx1czwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBwbHVzPCBwbHVzPCBwbHVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgcGx1cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IHBsdXM8IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogcGx1czwgcGx1czwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBwbHVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBwbHVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgcGx1c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgcGx1c190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgcGx1cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcGx1c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgKyBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvcXVvdGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL3F1b3RlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjgyYjkzMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvcXVvdGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA4Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJxdW90ZS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIGJvb2wgaGFzX3R5cGVfID4KLXN0cnVjdCBxdW90ZV9pbXBsCi0KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBxdW90ZV9pbXBsPCBULGZhbHNlID4KLXsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGUxCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxID4gc3RydWN0IGFwcGx5Ci0KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcXVvdGVfaW1wbDwKLSAgICAgICAgICAgICAgRjxVMT4KLSAgICAgICAgICAgICwgYXV4OjpoYXNfdHlwZTwgRjxVMT4gPjo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGUyCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHF1b3RlX2ltcGw8Ci0gICAgICAgICAgICAgIEY8IFUxLFUyID4KLSAgICAgICAgICAgICwgYXV4OjpoYXNfdHlwZTwgRjwgVTEsVTIgPiA+Ojp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGUzCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMgPiBzdHJ1Y3QgYXBwbHkKLQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBxdW90ZV9pbXBsPAotICAgICAgICAgICAgICBGPCBVMSxVMixVMyA+Ci0gICAgICAgICAgICAsIGF1eDo6aGFzX3R5cGU8IEY8IFUxLFUyLFUzID4gPjo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgID4KLXN0cnVjdCBxdW90ZTQKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcXVvdGVfaW1wbDwKLSAgICAgICAgICAgICAgRjwgVTEsVTIsVTMsVTQgPgotICAgICAgICAgICAgLCBhdXg6Omhhc190eXBlPCBGPCBVMSxVMixVMyxVNCA+ID46OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQKLSAgICAgICAgLCB0eXBlbmFtZSBQNQotICAgICAgICA+Ci0gICAgICBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgID4KLXN0cnVjdCBxdW90ZTUKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICAgICAsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBxdW90ZV9pbXBsPAotICAgICAgICAgICAgICBGPCBVMSxVMixVMyxVNCxVNSA+Ci0gICAgICAgICAgICAsIGF1eDo6aGFzX3R5cGU8IEY8IFUxLFUyLFUzLFU0LFU1ID4gPjo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL3JldmVyc2VfZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2YTQzOGIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL3JldmVyc2VfZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5NSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAicmV2ZXJzZV9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTAgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTEgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMiBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTMgYmt3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTQgYmt3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlNCwgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuawotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIHJldmVyc2VfZm9sZF9pbXBsPAotICAgICAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgICAgICwgaXRlcjQKLSAgICAgICAgICAgICwgTGFzdAotICAgICAgICAgICAgLCBmd2Rfc3RhdGU0Ci0gICAgICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICA+IG5lc3RlZF9jaHVuazsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6c3RhdGUgYmt3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlNCwgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfc3RlcDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfbnVsbF9zdGVwCi17Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rPCAtMSA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGlzX3NhbWU8IEZpcnN0LExhc3QgPjo6dHlwZQotICAgICAgICAgICAgLCByZXZlcnNlX2ZvbGRfbnVsbF9zdGVwPCBMYXN0LFN0YXRlID4KLSAgICAgICAgICAgICwgcmV2ZXJzZV9mb2xkX3N0ZXA8IEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotICAgICAgICAgICAgPjo6dHlwZSByZXNfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIHJldmVyc2VfZm9sZF9jaHVuazwgLTEgPjo6dGVtcGxhdGUgcmVzdWx0XzwKLSAgICAgICAgICB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjxGb3J3YXJkT3AsU3RhdGUsIHR5cGVuYW1lIGRlcmVmPEZpcnN0Pjo6dHlwZT46OnR5cGUKLSAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gbmVzdGVkX3N0ZXA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwKLSAgICAgICAgICBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6OnN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgZGVyZWY8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgID46OnR5cGUgc3RhdGU7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbAotICAgIDogcmV2ZXJzZV9mb2xkX2NodW5rPE4+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGM5ODA5Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOTUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gInJldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTAgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTIgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTMgYmt3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUzLGl0ZXIyID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTMsaXRlcjMgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlNCBia3dkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTQsaXRlcjMgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTMsaXRlcjIgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bmsKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTIsaXRlcjIgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMyxpdGVyMyA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgICAgICwgaXRlcjQKLSAgICAgICAgICAgICwgTGFzdAotICAgICAgICAgICAgLCBmd2Rfc3RhdGU0Ci0gICAgICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICA+IG5lc3RlZF9jaHVuazsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6c3RhdGUgYmt3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGU0LGl0ZXIzID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUzLGl0ZXIyID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9zdGVwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX251bGxfc3RlcAotewotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPCAtMSA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGlzX3NhbWU8IEZpcnN0LExhc3QgPjo6dHlwZQotICAgICAgICAgICAgLCByZXZlcnNlX2l0ZXJfZm9sZF9udWxsX3N0ZXA8IExhc3QsU3RhdGUgPgotICAgICAgICAgICAgLCByZXZlcnNlX2l0ZXJfZm9sZF9zdGVwPCBGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLSAgICAgICAgICAgID46OnR5cGUgcmVzXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPCAtMSA+Ojp0ZW1wbGF0ZSByZXN1bHRfPAotICAgICAgICAgIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsU3RhdGUsRmlyc3QgPjo6dHlwZQotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfc3RlcDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPAotICAgICAgICAgIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6c3RhdGUKLSAgICAgICAgLCBGaXJzdAotICAgICAgICA+Ojp0eXBlIHN0YXRlOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbAotICAgIDogcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8Tj4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL3NldC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2Mvc2V0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWJjNDRmOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2Mvc2V0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAic2V0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IHNldDsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQwPCAgPgotewotICAgIHR5cGVkZWYgc2V0MDwgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTxUMD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE8VDA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQyPCBUMCxUMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyPCBUMCxUMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MzwgVDAsVDEsVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MzwgVDAsVDEsVDIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ0PCBUMCxUMSxUMixUMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ0PCBUMCxUMSxUMixUMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ1PCBUMCxUMSxUMixUMyxUNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ1PCBUMCxUMSxUMixUMyxUNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NjwgVDAsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0OTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0OTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTY8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE3PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxODwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTk8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3Qgc2V0Ci0gICAgOiBzZXQyMDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9zZXRfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2Mvc2V0X2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzI0OWI2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9zZXRfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gInNldF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAgPSBMT05HX01BWCwgbG9uZyBDMSA9IExPTkdfTUFYLCBsb25nIEMyID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzMgPSBMT05HX01BWCwgbG9uZyBDNCA9IExPTkdfTUFYLCBsb25nIEM1ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzYgPSBMT05HX01BWCwgbG9uZyBDNyA9IExPTkdfTUFYLCBsb25nIEM4ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzkgPSBMT05HX01BWCwgbG9uZyBDMTAgPSBMT05HX01BWCwgbG9uZyBDMTEgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTIgPSBMT05HX01BWCwgbG9uZyBDMTMgPSBMT05HX01BWCwgbG9uZyBDMTQgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTUgPSBMT05HX01BWCwgbG9uZyBDMTYgPSBMT05HX01BWCwgbG9uZyBDMTcgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTggPSBMT05HX01BWCwgbG9uZyBDMTkgPSBMT05HX01BWAotICAgID4KLXN0cnVjdCBzZXRfYzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDBfYzxUPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MF9jPFQ+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MV9jPCBULEMwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDFfYzwgVCxDMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0Ml9jPCBULEMwLEMxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDJfYzwgVCxDMCxDMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0M19jPCBULEMwLEMxLEMyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDNfYzwgVCxDMCxDMSxDMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0NF9jPCBULEMwLEMxLEMyLEMzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDRfYzwgVCxDMCxDMSxDMixDMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0NV9jPCBULEMwLEMxLEMyLEMzLEM0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDVfYzwgVCxDMCxDMSxDMixDMyxDNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0Nl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0N19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0OF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0OV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzkKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTFfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTFfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDEyX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTNfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxM19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE0X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxNV9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTZfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE3X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE4X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTlfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgPgotc3RydWN0IHNldF9jCi0gICAgOiBzZXQyMF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDIwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9zaGlmdF9sZWZ0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9zaGlmdF9sZWZ0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWM1MDUyMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2Mvc2hpZnRfbGVmdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAic2hpZnRfbGVmdC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHNoaWZ0X2xlZnRfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHNoaWZ0X2xlZnRfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHNoaWZ0X2xlZnRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBzaGlmdF9sZWZ0X3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBzaGlmdF9sZWZ0Ci0KLSAgICA6IHNoaWZ0X2xlZnRfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBzaGlmdF9sZWZ0X3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBzaGlmdF9sZWZ0X3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIHNoaWZ0X2xlZnQsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIHNoaWZ0X2xlZnQpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOLCB0eXBlbmFtZSBTID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBOOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgPDwgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKFMpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2Mvc2hpZnRfcmlnaHQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL3NoaWZ0X3JpZ2h0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODhkYjkzMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2Mvc2hpZnRfcmlnaHQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gInNoaWZ0X3JpZ2h0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHNoaWZ0X3JpZ2h0X2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBzaGlmdF9yaWdodF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHNoaWZ0X3JpZ2h0X3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBzaGlmdF9yaWdodAotCi0gICAgOiBzaGlmdF9yaWdodF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHNoaWZ0X3JpZ2h0X3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBzaGlmdF9yaWdodF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBzaGlmdF9yaWdodCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgc2hpZnRfcmlnaHQpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTiwgdHlwZW5hbWUgUyA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgTjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgID4+IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChTKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL3RlbXBsYXRlX2FyaXR5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy90ZW1wbGF0ZV9hcml0eS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkOWYwZjEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL3RlbXBsYXRlX2FyaXR5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJ0ZW1wbGF0ZV9hcml0eS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBib29sID4KLXN0cnVjdCB0ZW1wbGF0ZV9hcml0eV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IG1wbDo6aW50XzwgLTEgPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHRlbXBsYXRlX2FyaXR5X2ltcGw8dHJ1ZT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogRjo6YXJpdHkKLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGID4KLXN0cnVjdCB0ZW1wbGF0ZV9hcml0eQotICAgIDogdGVtcGxhdGVfYXJpdHlfaW1wbDwgOjpuZG5ib29zdDo6bXBsOjphdXg6Omhhc19yZWJpbmQ8Rj46OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPEY+Ci17Ci19OwotCi19fX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL3RpbWVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy90aW1lcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0MGMwODMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL3RpbWVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAidGltZXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCB0aW1lc19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgdGltZXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHRpbWVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgdGltZXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgdGltZXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHRpbWVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgdGltZXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IHRpbWVzCi0gICAgOiB0aW1lczwgdGltZXM8IHRpbWVzPCB0aW1lczwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIHRpbWVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IHRpbWVzPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IHRpbWVzPCB0aW1lczwgdGltZXM8IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IHRpbWVzPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IHRpbWVzPCB0aW1lczwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgdGltZXM8IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IHRpbWVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgdGltZXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIHRpbWVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHRpbWVzCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgdGltZXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IHRpbWVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAqIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy91bnBhY2tfYXJncy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvdW5wYWNrX2FyZ3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZDBjMzI4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy91bnBhY2tfYXJncy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAidW5wYWNrX2FyZ3MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgaW50IHNpemUsIHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCAwLEYsQXJncyA+Ci0gICAgOiBhcHBseTA8Ci0gICAgICAgICAgRgotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgMSxGLEFyZ3MgPgotICAgIDogYXBwbHkxPAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgMixGLEFyZ3MgPgotICAgIDogYXBwbHkyPAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDMsRixBcmdzID4KLSAgICA6IGFwcGx5MzwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywyID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDQsRixBcmdzID4KLSAgICA6IGFwcGx5NDwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywyID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMyA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCA1LEYsQXJncyA+Ci0gICAgOiBhcHBseTU8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDMgPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsNCA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IHVucGFja19hcmdzCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEFyZ3MgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp1bnBhY2tfYXJnc19pbXBsPAotICAgICAgICAgICAgICBzaXplPEFyZ3M+Ojp2YWx1ZQotICAgICAgICAgICAgLCBGCi0gICAgICAgICAgICAsIEFyZ3MKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX1BBU1NfVEhST1VHSF9MQU1CREFfU1BFQygxLCB1bnBhY2tfYXJncykKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL3ZlY3Rvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvdmVjdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTlhYjg2MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvdmVjdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAidmVjdG9yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IHZlY3RvcjsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IwPCAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMDwgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTxUMD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE8VDA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IyPCBUMCxUMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyPCBUMCxUMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMzwgVDAsVDEsVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMzwgVDAsVDEsVDIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I0PCBUMCxUMSxUMixUMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I0PCBUMCxUMSxUMixUMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I1PCBUMCxUMSxUMixUMyxUNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I1PCBUMCxUMSxUMixUMyxUNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNjwgVDAsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTY8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE3PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxODwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTk8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yCi0gICAgOiB2ZWN0b3IyMDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy92ZWN0b3JfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvdmVjdG9yX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDdiZmQ4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy92ZWN0b3JfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMDkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDgKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gInZlY3Rvcl9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAgPSBMT05HX01BWCwgbG9uZyBDMSA9IExPTkdfTUFYLCBsb25nIEMyID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzMgPSBMT05HX01BWCwgbG9uZyBDNCA9IExPTkdfTUFYLCBsb25nIEM1ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzYgPSBMT05HX01BWCwgbG9uZyBDNyA9IExPTkdfTUFYLCBsb25nIEM4ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzkgPSBMT05HX01BWCwgbG9uZyBDMTAgPSBMT05HX01BWCwgbG9uZyBDMTEgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTIgPSBMT05HX01BWCwgbG9uZyBDMTMgPSBMT05HX01BWCwgbG9uZyBDMTQgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTUgPSBMT05HX01BWCwgbG9uZyBDMTYgPSBMT05HX01BWCwgbG9uZyBDMTcgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTggPSBMT05HX01BWCwgbG9uZyBDMTkgPSBMT05HX01BWAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjBfYzxUPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMF9jPFQ+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMV9jPCBULCBUKEMwKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxX2M8IFQsIFQoQzApID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IyX2M8IFQsIFQoQzApLCBUKEMxKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyX2M8IFQsIFQoQzApLCBUKEMxKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yM19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjNfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I0X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I1X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I1X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yNl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjZfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I3X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNwotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I4X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I4X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yOV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjlfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTBfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTBfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjExX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEyX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTNfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMikgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTNfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMikgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMwotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE0X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMykgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE1X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTZfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTZfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNgotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE3X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNikgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE4X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNykgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTlfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTlfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCkgPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYwotICAgIDogdmVjdG9yMjBfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCksIFQoQzE5KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyMF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNyksIFQoQzE4KSwgVChDMTkpID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9hZHZhbmNlX2JhY2t3YXJkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9hZHZhbmNlX2JhY2t3YXJkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGUwYzgyOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYWR2YW5jZV9iYWNrd2FyZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2FkdmFuY2VfYmFja3dhcmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgbG9uZyBOID4gc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwwPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwxPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwzPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDw0PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9iYWNrd2FyZDw0PgotICAgICAgICAgICAgLCBJdGVyYXRvcgotICAgICAgICAgICAgPjo6dHlwZSBjaHVua19yZXN1bHRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfYmFja3dhcmQ8KAotICAgICAgICAgICAgICAgIChOIC0gNCkgPCAwCi0gICAgICAgICAgICAgICAgICAgID8gMAotICAgICAgICAgICAgICAgICAgICA6IE4gLSA0Ci0gICAgICAgICAgICAgICAgICAgICk+Ci0gICAgICAgICAgICAsIGNodW5rX3Jlc3VsdF8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9hZHZhbmNlX2ZvcndhcmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2FkdmFuY2VfZm9yd2FyZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzYTVhZmQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2FkdmFuY2VfZm9yd2FyZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2FkdmFuY2VfZm9yd2FyZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBsb25nIE4gPiBzdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkOwotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwwPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDE+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwzPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDQ+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICB0eXBlZGVmIGl0ZXI0IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9mb3J3YXJkPDQ+Ci0gICAgICAgICAgICAsIEl0ZXJhdG9yCi0gICAgICAgICAgICA+Ojp0eXBlIGNodW5rX3Jlc3VsdF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9mb3J3YXJkPCgKLSAgICAgICAgICAgICAgICAoTiAtIDQpIDwgMAotICAgICAgICAgICAgICAgICAgICA/IDAKLSAgICAgICAgICAgICAgICAgICAgOiBOIC0gNAotICAgICAgICAgICAgICAgICAgICApPgotICAgICAgICAgICAgLCBjaHVua19yZXN1bHRfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9hbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YzFiOTVhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9hbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGJvb2wgQ18sIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0ID4KLXN0cnVjdCBhbmRfaW1wbAotICAgIDogZmFsc2VfCi17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQgPgotc3RydWN0IGFuZF9pbXBsPCB0cnVlLFQxLFQyLFQzLFQ0ID4KLSAgICA6IGFuZF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICwgVDIsIFQzLCBUNAotICAgICAgICAsIHRydWVfCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhbmRfaW1wbDwKLSAgICAgICAgICB0cnVlCi0gICAgICAgICwgdHJ1ZV8sIHRydWVfLCB0cnVlXywgdHJ1ZV8KLSAgICAgICAgPgotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgICwgdHlwZW5hbWUgVDMgPSB0cnVlXywgdHlwZW5hbWUgVDQgPSB0cnVlXywgdHlwZW5hbWUgVDUgPSB0cnVlXwotICAgID4KLXN0cnVjdCBhbmRfCi0KLSAgICA6IGF1eDo6YW5kX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ci0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBhbmRfCi0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoCi0gICAgICAyCi0gICAgLCA1Ci0gICAgLCBhbmRfCi0gICAgKQotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2FwcGx5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9hcHBseS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwZjcyYjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2FwcGx5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcHBseS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5MAotCi0gICAgOiBhcHBseV93cmFwMDwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMQotICAgICAgICAsIGFwcGx5MAotICAgICAgICAsIChGICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5PCBGLG5hLG5hLG5hLG5hLG5hID4KLSAgICA6IGFwcGx5MDxGPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseTEKLQotICAgIDogYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMgotICAgICAgICAsIGFwcGx5MQotICAgICAgICAsIChGLCBUMSkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseTwgRixUMSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBhcHBseTE8IEYsVDEgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkyCi0KLSAgICA6IGFwcGx5X3dyYXAyPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAzCi0gICAgICAgICwgYXBwbHkyCi0gICAgICAgICwgKEYsIFQxLCBUMikKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsVDIsbmEsbmEsbmEgPgotICAgIDogYXBwbHkyPCBGLFQxLFQyID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseTMKLQotICAgIDogYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyLCBUMwotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA0Ci0gICAgICAgICwgYXBwbHkzCi0gICAgICAgICwgKEYsIFQxLCBUMiwgVDMpCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseTwgRixUMSxUMixUMyxuYSxuYSA+Ci0gICAgOiBhcHBseTM8IEYsVDEsVDIsVDMgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseTQKLQotICAgIDogYXBwbHlfd3JhcDQ8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGFwcGx5NAotICAgICAgICAsIChGLCBUMSwgVDIsIFQzLCBUNCkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseTwgRixUMSxUMixUMyxUNCxuYSA+Ci0gICAgOiBhcHBseTQ8IEYsVDEsVDIsVDMsVDQgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk1Ci0KLSAgICA6IGFwcGx5X3dyYXA1PAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA2Ci0gICAgICAgICwgYXBwbHk1Ci0gICAgICAgICwgKEYsIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkKLSAgICA6IGFwcGx5NTwgRixUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYXBwbHlfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9hcHBseV9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiY2NjOTRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9hcHBseV9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXBwbHlfZndkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseTA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkxOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseTI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseTM7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk0OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseTU7Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9hcHBseV93cmFwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9hcHBseV93cmFwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGQwMzkwNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYXBwbHlfd3JhcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NTYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXBwbHlfd3JhcC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMDwKLSAgICAgICAgICAwCi0gICAgICAgICwgRgotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgIAotLy8vIHNpbmNlIHRoZSBkZWZhdWx0cyBhcmUgImxvc3QiLCB3ZSBoYXZlIHRvIHBhc3MgKnNvbWV0aGluZyogZXZlbiBmb3IgbnVsbGFyeQotLy8vIG1ldGFmdW5jdGlvbiBjbGFzc2VzCi0gICAgICAgIG5hCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwwPAotICAgICAgICAgIDEKLSAgICAgICAgLCBGCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgCi0gICAgICAgIG5hCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwwPAotICAgICAgICAgIDIKLSAgICAgICAgLCBGCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgCi0gICAgICAgIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwwPAotICAgICAgICAgIDMKLSAgICAgICAgLCBGCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgCi0gICAgICAgIG5hLCBuYSwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMDwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRgotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgIAotICAgICAgICBuYSwgbmEsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwwPAotICAgICAgICAgIDUKLSAgICAgICAgLCBGCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgCi0gICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMAotICAgIDogYXBwbHlfd3JhcF9pbXBsMDwKLSAgICAgICAgICA6Om5kbmJvb3N0OjptcGw6OmF1eDo6YXJpdHk8IEYsMCA+Ojp2YWx1ZQotICAgICAgICAsIEYKLSAgICAgICAKLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwxPAotICAgICAgICAgIDEKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEKLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwxPAotICAgICAgICAgIDIKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEKLSAgICAgICAgLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMTwKLSAgICAgICAgICAzCi0gICAgICAgICwgRgotICAgICAgICAsIFQxCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxCi0gICAgICAgICwgbmEsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwxPAotICAgICAgICAgIDQKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwxPAotICAgICAgICAgIDUKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDEKLSAgICA6IGFwcGx5X3dyYXBfaW1wbDE8Ci0gICAgICAgICAgOjpuZG5ib29zdDo6bXBsOjphdXg6OmFyaXR5PCBGLDEgPjo6dmFsdWUKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDI8Ci0gICAgICAgICAgMgotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMjwKLSAgICAgICAgICAzCi0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMSwgVDIKLQotICAgICAgICAsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMjwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMSwgVDIKLQotICAgICAgICAsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDI8Ci0gICAgICAgICAgNQotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyCi0KLSAgICAgICAgLCBuYSwgbmEsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDIKLSAgICA6IGFwcGx5X3dyYXBfaW1wbDI8Ci0gICAgICAgICAgOjpuZG5ib29zdDo6bXBsOjphdXg6OmFyaXR5PCBGLDIgPjo6dmFsdWUKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDM8Ci0gICAgICAgICAgMwotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMiwgVDMKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMzwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyLCBUMwotCi0gICAgICAgICwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMzwKLSAgICAgICAgICA1Ci0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyLCBUMwotCi0gICAgICAgICwgbmEsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAzCi0gICAgOiBhcHBseV93cmFwX2ltcGwzPAotICAgICAgICAgIDo6bmRuYm9vc3Q6Om1wbDo6YXV4Ojphcml0eTwgRiwzID46OnZhbHVlCi0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsNDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGw0PAotICAgICAgICAgIDQKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyLCBUMywgVDQKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDQ8Ci0gICAgICAgICAgNQotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMSwgVDIsIFQzLCBUNAotCi0gICAgICAgICwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5X3dyYXA0Ci0gICAgOiBhcHBseV93cmFwX2ltcGw0PAotICAgICAgICAgIDo6bmRuYm9vc3Q6Om1wbDo6YXV4Ojphcml0eTwgRiw0ID46OnZhbHVlCi0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGw1OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGw1PAotICAgICAgICAgIDUKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMiwgVDMsIFQ0LCBUNQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5X3dyYXA1Ci0gICAgOiBhcHBseV93cmFwX2ltcGw1PAotICAgICAgICAgIDo6bmRuYm9vc3Q6Om1wbDo6YXV4Ojphcml0eTwgRiw1ID46OnZhbHVlCi0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYXJnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9hcmcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTQ0NzZhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9hcmcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEtMjAwMgotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FyZy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8IC0xID4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAtMSk7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUxIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDE+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMSk7Ci0gICAgdHlwZWRlZiBhcmc8Mj4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTEgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8Mj4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAyKTsKLSAgICB0eXBlZGVmIGFyZzwzPiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMiB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwzPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDMpOwotICAgIHR5cGVkZWYgYXJnPDQ+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUzIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDQ+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gNCk7Ci0gICAgdHlwZWRlZiBhcmc8NT4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTQgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8NT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSA1KTsKLSAgICB0eXBlZGVmIGFyZzw2PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVNSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTk9OVFlQRV9BUklUWV9TUEVDKDEsaW50LCBhcmcpCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYmFzaWNfYmluZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYmFzaWNfYmluZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1MTk5MjkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2Jhc2ljX2JpbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzA2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2Jhc2ljX2JpbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnCi17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwgYXJnPE4+LCBVMSwgVTIsIFUzLCBVNCwgVTUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8bXBsOjphcmc8Tj4sIFUxLCBVMiwgVTMsIFU0LCBVNT46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDAKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQwPEY+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMDxGPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDEsIGJpbmQwKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDEsIGJpbmQwKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGJpbmQxCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzCi0gICAgLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQxPCBGLFQxID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQxPCBGLFQxID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygyLCBiaW5kMSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygyLCBiaW5kMSkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDIKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMgotICAgICwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDI8IEYsVDEsVDIgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDI8IEYsVDEsVDIgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDMsIGJpbmQyKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDMsIGJpbmQyKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDMKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMzwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFUxCi0gICAgLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDM8IEYsVDEsVDIsVDMgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDM8IEYsVDEsVDIsVDMgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDQsIGJpbmQzKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDQsIGJpbmQzKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGJpbmQ0Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQ0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA0PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDQ8IEYsVDEsVDIsVDMsVDQgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDQ8IEYsVDEsVDIsVDMsVDQgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDUsIGJpbmQ0KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDUsIGJpbmQ0KQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kNQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDUsVTEsVTIsVTMsVTQsVTUgPiB0NTsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUsIHR5cGVuYW1lIHQ1Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9iaW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9iaW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzUzOTZkYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYmluZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MDMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnCi17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIHR5cGVuYW1lIEFyZwotICAgID4KLXN0cnVjdCByZXBsYWNlX3VubmFtZWRfYXJnCi17Ci0gICAgdHlwZWRlZiBBcmcgbmV4dDsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgQXJnCi0gICAgPgotc3RydWN0IHJlcGxhY2VfdW5uYW1lZF9hcmc8IGFyZzwgLTEgPiwgQXJnID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEFyZzo6bmV4dCBuZXh0OwotICAgIHR5cGVkZWYgQXJnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwgYXJnPE4+LCBVMSwgVTIsIFUzLCBVNCwgVTUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8bXBsOjphcmc8Tj4sIFUxLCBVMiwgVTMsIFU0LCBVNT46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDAKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDA8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMDxGPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDA8Rj4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygxLCBiaW5kMCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygxLCBiaW5kMCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kMQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMwotICAgICwgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMTwgRixUMSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMTwgRixUMSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMiwgYmluZDEpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMiwgYmluZDEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQyCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMgotICAgICwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDI8IEYsVDEsVDIgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDI8IEYsVDEsVDIgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDMsIGJpbmQyKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDMsIGJpbmQyKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDMKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBVMQotICAgICwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQzPCBGLFQxLFQyLFQzID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQzPCBGLFQxLFQyLFQzID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg0LCBiaW5kMykKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg0LCBiaW5kMykKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kNAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUNCxuNCA+IHI0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0Ojp0eXBlIGE0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0OjpuZXh0IG41OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZDUKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDQsbjQgPiByNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6dHlwZSBhNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6bmV4dCBuNTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGE0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDUsbjUgPiByNTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNTo6dHlwZSBhNTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNTo6bmV4dCBuNjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGE1LFUxLFUyLFUzLFU0LFU1ID4gdDU7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUsIHR5cGVuYW1lIHQ1Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9iaW5kX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYmluZF9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYmQxYjZkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9iaW5kX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaW5kX2Z3ZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGJpbmQxOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kMjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGJpbmQ0OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kNTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2JpdGFuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYml0YW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Q4Y2M1Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYml0YW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaXRhbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBiaXRhbmRfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGJpdGFuZF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgYml0YW5kX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0YW5kX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdGFuZF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0YW5kX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0YW5kX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBiaXRhbmRfCi0gICAgOiBiaXRhbmRfPCBiaXRhbmRfPCBiaXRhbmRfPCBiaXRhbmRfPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0YW5kXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBiaXRhbmRfPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IGJpdGFuZF88IGJpdGFuZF88IGJpdGFuZF88IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRhbmRfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXzwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBiaXRhbmRfPCBiaXRhbmRfPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdGFuZF8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGJpdGFuZF88IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IGJpdGFuZF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGJpdGFuZF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYml0YW5kX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdGFuZF8KLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXRhbmRfKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBiaXRhbmRfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICYgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2JpdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9iaXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5ODI0N2IuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2JpdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaXRvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGJpdG9yX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBiaXRvcl9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgYml0b3JfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBiaXRvcl9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXRvcl9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0b3JfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBiaXRvcl90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfCi0gICAgOiBiaXRvcl88IGJpdG9yXzwgYml0b3JfPCBiaXRvcl88IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IGJpdG9yXzwgYml0b3JfPCBiaXRvcl88IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBiaXRvcl88IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogYml0b3JfPCBiaXRvcl88IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBiaXRvcl88IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IGJpdG9yX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgYml0b3JfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGJpdG9yX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdG9yXwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGJpdG9yXykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYml0b3JfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIHwgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2JpdHhvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYml0eG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWYyNzZiNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYml0eG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaXR4b3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBiaXR4b3JfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGJpdHhvcl9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgYml0eG9yX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0eG9yX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdHhvcl9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0eG9yX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0eG9yX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBiaXR4b3JfCi0gICAgOiBiaXR4b3JfPCBiaXR4b3JfPCBiaXR4b3JfPCBiaXR4b3JfPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0eG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBiaXR4b3JfPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IGJpdHhvcl88IGJpdHhvcl88IGJpdHhvcl88IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXR4b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXzwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBiaXR4b3JfPCBiaXR4b3JfPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdHhvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGJpdHhvcl88IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IGJpdHhvcl9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGJpdHhvcl90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYml0eG9yX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdHhvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXR4b3JfKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBiaXR4b3JfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIF4gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2RlcXVlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9kZXF1ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2MzFmNjYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2RlcXVlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9kZXF1ZS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBkZXF1ZTsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjA8ICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IyPCBUMCxUMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyPCBUMCxUMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I1PCBUMCxUMSxUMixUMyxUNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I1PCBUMCxUMSxUMixUMyxUNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE3PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IGRlcXVlCi0gICAgOiB2ZWN0b3IyMDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9kaXZpZGVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9kaXZpZGVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWJjNDQzMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvZGl2aWRlcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZGl2aWRlcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGRpdmlkZXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGRpdmlkZXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGRpdmlkZXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBkaXZpZGVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGRpdmlkZXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGRpdmlkZXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBkaXZpZGVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBkaXZpZGVzCi0gICAgOiBkaXZpZGVzPCBkaXZpZGVzPCBkaXZpZGVzPCBkaXZpZGVzPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBkaXZpZGVzPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IGRpdmlkZXM8IGRpdmlkZXM8IGRpdmlkZXM8IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBkaXZpZGVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlczwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBkaXZpZGVzPCBkaXZpZGVzPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGRpdmlkZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGRpdmlkZXM8IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IGRpdmlkZXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBkaXZpZGVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBkaXZpZGVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGRpdmlkZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBkaXZpZGVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBkaXZpZGVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAvIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9lcXVhbF90by5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvZXF1YWxfdG8uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDU1ODg1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9lcXVhbF90by5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9lcXVhbF90by5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGVxdWFsX3RvX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBlcXVhbF90b19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZXF1YWxfdG9faW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBlcXVhbF90b19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBlcXVhbF90b19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZXF1YWxfdG9faW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBlcXVhbF90b190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZXF1YWxfdG8KLQotICAgIDogZXF1YWxfdG9faW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBlcXVhbF90b190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZXF1YWxfdG9fdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgZXF1YWxfdG8sIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGVxdWFsX3RvKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVxdWFsX3RvX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSAgPT0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDk0Y2Q0MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDAsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiBzdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAxLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUxIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgMixGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTIgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAzLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTMgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCA0LEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGU0IHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGwKLXsKLSAgICB0eXBlZGVmIGZvbGRfaW1wbDwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRmlyc3QKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgU3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBjaHVua187Ci0KLSAgICB0eXBlZGVmIGZvbGRfaW1wbDwKLSAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgLCB0eXBlbmFtZSBjaHVua186Oml0ZXJhdG9yCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6c3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiByZXNfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IC0xLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLSAgICA6IGZvbGRfaW1wbDwKLSAgICAgICAgICAtMQotICAgICAgICAsIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPEZvcndhcmRPcCxTdGF0ZSwgdHlwZW5hbWUgZGVyZWY8Rmlyc3Q+Ojp0eXBlPjo6dHlwZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAtMSxMYXN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2Z1bGxfbGFtYmRhLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9mdWxsX2xhbWJkYS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhY2JkOWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2Z1bGxfbGFtYmRhLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1OCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2Z1bGxfbGFtYmRhLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICBib29sIEMxID0gZmFsc2UsIGJvb2wgQzIgPSBmYWxzZSwgYm9vbCBDMyA9IGZhbHNlLCBib29sIEM0ID0gZmFsc2UKLSAgICAsIGJvb2wgQzUgPSBmYWxzZQotICAgID4KLXN0cnVjdCBsYW1iZGFfb3IKLSAgICA6IHRydWVfCi17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGFtYmRhX29yPCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSA+Ci0gICAgOiBmYWxzZV8KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgICwgdHlwZW5hbWUgQXJpdHkKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhCi17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBUIHJlc3VsdF87Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgaXNfbGFtYmRhX2V4cHJlc3Npb24KLSAgICA6IGxhbWJkYTxUPjo6aXNfbGUKLXsKLX07Ci0KLXRlbXBsYXRlPCBpbnQgTiwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBsYW1iZGE8IGFyZzxOPixUYWcsIGludF88IC0xID4gPgotewotICAgIHR5cGVkZWYgdHJ1ZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBtcGw6OmFyZzxOPiByZXN1bHRfOyAvLyBxdWFsaWZpZWQgZm9yIHRoZSBzYWtlIG9mIE1JUFNwcm8gNy40MQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDA8Rj4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgLCBpbnRfPDE+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQwPAotICAgICAgICAgIEYKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDEKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MTwgdHJ1ZV8sVGFnLEYsTDEgPgotewotICAgIHR5cGVkZWYgYmluZDE8Ci0gICAgICAgICAgcXVvdGUxPCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8VDE+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50XzwxPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQxPAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxCi0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kMTwgRixUMSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50XzwyPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMTwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MgotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMgotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQyPCB0cnVlXyxUYWcsRixMMSxMMiA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMjwKLSAgICAgICAgICBxdW90ZTI8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XywgdHlwZW5hbWUgTDI6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88Mj4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDI8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyCi0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDI8IEYsVDEsVDIgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88Mz4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDI8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDMKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlLCB0eXBlbmFtZSBMMzo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MzwgdHJ1ZV8sVGFnLEYsTDEsTDIsTDMgPgotewotICAgIHR5cGVkZWYgYmluZDM8Ci0gICAgICAgICAgcXVvdGUzPCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfLCB0eXBlbmFtZSBMMzo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8IFQxLFQyLFQzID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgLCBpbnRfPDM+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQyLFRhZyA+IGwyOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMyxUYWcgPiBsMzsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZSwgaXNfbGUzOjp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDM8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyLCBsMwotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kMzwgRixUMSxUMixUMyA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50Xzw0PgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMzwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEsIFQyLCBUMwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMywgdHlwZW5hbWUgTDQKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NAotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUsIHR5cGVuYW1lIEwzOjp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMywgdHlwZW5hbWUgTDQKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NDwgdHJ1ZV8sVGFnLEYsTDEsTDIsTDMsTDQgPgotewotICAgIHR5cGVkZWYgYmluZDQ8Ci0gICAgICAgICAgcXVvdGU0PCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfLCB0eXBlbmFtZSBMMzo6cmVzdWx0XwotICAgICAgICAsIHR5cGVuYW1lIEw0OjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMixUMyxUNCA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50Xzw0PgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDMsVGFnID4gbDM7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQ0LFRhZyA+IGw0OwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZSwgaXNfbGUzOjp2YWx1ZSwgaXNfbGU0Ojp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDQ8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyLCBsMywgbDQKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgLCBpbnRfPDU+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQ0PAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBQNSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0LCB0eXBlbmFtZSBMNQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQ1Ci17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlLCB0eXBlbmFtZSBMMjo6dHlwZSwgdHlwZW5hbWUgTDM6OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBMNDo6dHlwZSwgdHlwZW5hbWUgTDU6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBQNSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0LCB0eXBlbmFtZSBMNQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQ1PCB0cnVlXyxUYWcsRixMMSxMMixMMyxMNCxMNSA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNTwKLSAgICAgICAgICBxdW90ZTU8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XywgdHlwZW5hbWUgTDI6OnJlc3VsdF8sIHR5cGVuYW1lIEwzOjpyZXN1bHRfCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnJlc3VsdF8sIHR5cGVuYW1lIEw1OjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNAotICAgICAgICAsIHR5cGVuYW1lIFA1Ci0gICAgICAgID4KLSAgICAgIGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMixUMyxUNCxUNSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50Xzw1PgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDMsVGFnID4gbDM7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQ0LFRhZyA+IGw0OwotICAgIHR5cGVkZWYgbGFtYmRhPCBUNSxUYWcgPiBsNTsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsNTo6aXNfbGUgaXNfbGU1OwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlLCBpc19sZTI6OnZhbHVlLCBpc19sZTM6OnZhbHVlLCBpc19sZTQ6OnZhbHVlCi0gICAgICAgICwgaXNfbGU1Ojp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDU8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyLCBsMywgbDQsIGw1Ci0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88Nj4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDU8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLS8vLyBzcGVjaWFsIGNhc2UgZm9yICdwcm90ZWN0JwotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgbGFtYmRhPCBtcGw6OnByb3RlY3Q8VD4sVGFnLCBpbnRfPDE+ID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxUPiByZXN1bHRfOwotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotLy8vIHNwZWNpYWxpemF0aW9ucyBmb3IgdGhlIG1haW4gJ2JpbmQnIGZvcm0KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50Xzw2PgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgICwgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgICwgdHlwZW5hbWUgQXJpdHkKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGxhbWJkYTwgRixUYWcxLEFyaXR5ID4KLSAgICAgICAgLCBUYWcyCi0gICAgICAgICwgaW50XzwzPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IEYsVGFnMiA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUYWcxLFRhZzIgPiBsMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQxPCBxdW90ZTE8YXV4Ojp0ZW1wbGF0ZV9hcml0eT4sIHR5cGVuYW1lIGwxOjpyZXN1bHRfID4gYXJpdHlfOwotICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBpZl88IGlzX2xlLGFyaXR5XyxBcml0eSA+Ojp0eXBlLCBUYWcyID4gbDM7Ci0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDM8aXNfbGUsIFRhZzIsIG1wbDo6bGFtYmRhLCBsMSwgbDIsIGwzPiBsZV9yZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAzLCBsYW1iZGEpCi0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9ncmVhdGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9ncmVhdGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTdlYjRhNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvZ3JlYXRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9ncmVhdGVyLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZ3JlYXRlcl9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZ3JlYXRlcl9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGdyZWF0ZXJfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGdyZWF0ZXIKLQotICAgIDogZ3JlYXRlcl9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGdyZWF0ZXJfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGdyZWF0ZXJfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgZ3JlYXRlciwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgZ3JlYXRlcikKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBncmVhdGVyX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA+IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9ncmVhdGVyX2VxdWFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9ncmVhdGVyX2VxdWFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzViZDQxMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvZ3JlYXRlcl9lcXVhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9ncmVhdGVyX2VxdWFsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZ3JlYXRlcl9lcXVhbF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZ3JlYXRlcl9lcXVhbF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGdyZWF0ZXJfZXF1YWwKLQotICAgIDogZ3JlYXRlcl9lcXVhbF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGdyZWF0ZXJfZXF1YWxfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGdyZWF0ZXJfZXF1YWxfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgZ3JlYXRlcl9lcXVhbCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgZ3JlYXRlcl9lcXVhbCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA+PSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvaW5oZXJpdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvaW5oZXJpdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5N2YzMTMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2luaGVyaXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2luaGVyaXQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgPgotc3RydWN0IGluaGVyaXQyCi0gICAgOiBUMSwgVDIKLXsKLSAgICB0eXBlZGVmIGluaGVyaXQyIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBpbmhlcml0MiwgKFQxLCBUMikpCi19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEgPgotc3RydWN0IGluaGVyaXQyPCBUMSxlbXB0eV9iYXNlID4KLXsKLSAgICB0eXBlZGVmIFQxIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKDIsIGluaGVyaXQyLCAoVDEsIGVtcHR5X2Jhc2UpKQotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQyID4KLXN0cnVjdCBpbmhlcml0MjwgZW1wdHlfYmFzZSxUMiA+Ci17Ci0gICAgdHlwZWRlZiBUMiB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygyLCBpbmhlcml0MiwgKGVtcHR5X2Jhc2UsIFQyKSkKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpbmhlcml0MjwgZW1wdHlfYmFzZSxlbXB0eV9iYXNlID4KLXsKLSAgICB0eXBlZGVmIGVtcHR5X2Jhc2UgdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoMiwgaW5oZXJpdDIsIChlbXB0eV9iYXNlLCBlbXB0eV9iYXNlKSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygyLCBpbmhlcml0MikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgPgotc3RydWN0IGluaGVyaXQzCi0gICAgOiBpbmhlcml0MjwKLSAgICAgICAgICB0eXBlbmFtZSBpbmhlcml0MjwKLSAgICAgICAgICAgICAgVDEsIFQyCi0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgVDMKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMwotICAgICAgICAsIGluaGVyaXQzCi0gICAgICAgICwgKCBUMSwgVDIsIFQzKQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMywgaW5oZXJpdDMpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYSwgdHlwZW5hbWUgVDQgPSBuYQotICAgID4KLXN0cnVjdCBpbmhlcml0NAotICAgIDogaW5oZXJpdDI8Ci0gICAgICAgICAgdHlwZW5hbWUgaW5oZXJpdDM8Ci0gICAgICAgICAgICAgIFQxLCBUMiwgVDMKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgLCBUNAotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA0Ci0gICAgICAgICwgaW5oZXJpdDQKLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoNCwgaW5oZXJpdDQpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYSwgdHlwZW5hbWUgVDQgPSBuYQotICAgICwgdHlwZW5hbWUgVDUgPSBuYQotICAgID4KLXN0cnVjdCBpbmhlcml0NQotICAgIDogaW5oZXJpdDI8Ci0gICAgICAgICAgdHlwZW5hbWUgaW5oZXJpdDQ8Ci0gICAgICAgICAgICAgIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgVDUKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGluaGVyaXQ1Ci0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQyg1LCBpbmhlcml0NSkKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQyID0gZW1wdHlfYmFzZQotICAgICwgdHlwZW5hbWUgVDMgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUNCA9IGVtcHR5X2Jhc2UKLSAgICAsIHR5cGVuYW1lIFQ1ID0gZW1wdHlfYmFzZQotICAgID4KLXN0cnVjdCBpbmhlcml0Ci0gICAgOiBpbmhlcml0NTwgVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGluaGVyaXQ8IG5hLG5hLG5hLG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwKLQotICAgICAgICAgIHR5cGVuYW1lIFQxID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDIgPSBlbXB0eV9iYXNlCi0gICAgICAgICwgdHlwZW5hbWUgVDMgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUNCA9IGVtcHR5X2Jhc2UKLSAgICAgICAgLCB0eXBlbmFtZSBUNSA9IGVtcHR5X2Jhc2UKLQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgICAgIDogaW5oZXJpdDwgVDEsVDIsVDMsVDQsVDUgPgotICAgIHsKLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX0xBTUJEQSg1LCBpbmhlcml0KQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX0FSSVRZKDUsIGluaGVyaXQpCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfVEVNUExBVEVfQVJJVFkoNSwgNSwgaW5oZXJpdCkKLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvaXRlcl9mb2xkX2lmX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzRiZDgzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAxLTIwMDIKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciwgdHlwZW5hbWUgU3RhdGUgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9udWxsX3N0ZXAKLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwgYm9vbCA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZU9wCi0gICAgICAgICwgdHlwZW5hbWUgSXRlcmF0b3JPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBTdGF0ZU9wLFN0YXRlLEl0ZXJhdG9yID46OnR5cGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3JPcDo6dHlwZSBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8ZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlT3AKLSAgICAgICAgLCB0eXBlbmFtZSBJdGVyYXRvck9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICwgdHlwZW5hbWUgUHJlZGljYXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgUHJlZGljYXRlLFN0YXRlLEl0ZXJhdG9yID46OnR5cGUgbm90X2xhc3Q7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKG5vdF9sYXN0KTo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgSXRlcmF0b3IsU3RhdGUsRm9yd2FyZE9wLCBtcGw6Om5leHQ8SXRlcmF0b3I+ID4gaW1wbF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBQcmVkaWNhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgUHJlZGljYXRlLFN0YXRlLEl0ZXJhdG9yID46OnR5cGUgbm90X2xhc3Q7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKG5vdF9sYXN0KTo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgSXRlcmF0b3IsU3RhdGUsQmFja3dhcmRPcCwgaWRlbnRpdHk8SXRlcmF0b3I+ID4gaW1wbF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRQcmVkaWNhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkUHJlZGljYXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9pbXBsCi17Ci0gcHJpdmF0ZToKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9udWxsX3N0ZXA8IEl0ZXJhdG9yLFN0YXRlID4gZm9yd2FyZF9zdGVwMDsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDA6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAwOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwMTsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDE6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAxOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwMjsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDI6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAyOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwMzsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDM6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAzOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwNDsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6Om5vdF9sYXN0Ci0gICAgICAgICwgaXRlcl9mb2xkX2lmX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6Oml0ZXJhdG9yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6OnN0YXRlCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgLCBGb3J3YXJkUHJlZGljYXRlCi0gICAgICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgICAgICwgQmFja3dhcmRQcmVkaWNhdGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjppdGVyYXRvcgotICAgICAgICAgICAgLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjpzdGF0ZQotICAgICAgICAgICAgPgotICAgICAgICA+Ojp0eXBlIGJhY2t3YXJkX3N0ZXA0OwotCi0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMzo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXA0OjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMzsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAyOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDM6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAyOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDE6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMjo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDE7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMDo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAxOjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMDsKLSAgICAKLQotIHB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAwOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXA0OjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2l0ZXJfZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9pdGVyX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjMDhiMzAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2l0ZXJfZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2l0ZXJfZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDAsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiBzdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDEsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTEgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDIsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUyIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAzLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMSxpdGVyMSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTIsaXRlcjIgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTMgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDQsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMixpdGVyMiA+Ojp0eXBlIHN0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTMsaXRlcjMgPjo6dHlwZSBzdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTQgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsCi17Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRmlyc3QKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgU3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBjaHVua187Ci0KLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6aXRlcmF0b3IKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjpzdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IHJlc187Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAtMSxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci0gICAgOiBpdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAtMQotICAgICAgICAsIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsU3RhdGUsRmlyc3QgPjo6dHlwZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IC0xLExhc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvbGFtYmRhX25vX2N0cHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2xhbWJkYV9ub19jdHBzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDVmNWY2Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvbGFtYmRhX25vX2N0cHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjI5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX25vX2N0cHMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIGJvb2wgQzEgPSBmYWxzZSwgYm9vbCBDMiA9IGZhbHNlLCBib29sIEMzID0gZmFsc2UsIGJvb2wgQzQgPSBmYWxzZQotICAgICwgYm9vbCBDNSA9IGZhbHNlCi0gICAgPgotc3RydWN0IGxhbWJkYV9vcgotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsYW1iZGFfb3I8IGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlID4KLSAgICA6IGZhbHNlXwotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEFyaXR5ID4gc3RydWN0IGxhbWJkYV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgdHlwZWRlZiBpc19wbGFjZWhvbGRlcjxUPiBpc19sZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50XzwyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUsIHR5cGVuYW1lIGwzOjp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50Xzw0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmczLCBUYWcsIGZhbHNlXyA+IGwzOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnNCwgVGFnLCBmYWxzZV8gPiBsNDsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTMpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGU0KTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDQ6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc0LCBUYWcsIGZhbHNlXyA+IGw0OwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnNSwgVGFnLCBmYWxzZV8gPiBsNTsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNTo6aXNfbGUgaXNfbGU1OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTQpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGU1KTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDQ6OnR5cGUsIHR5cGVuYW1lIGw1Ojp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICAsIHR5cGVuYW1lIFByb3RlY3QKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhCi17Ci0gICAgLy8vIE1ldGFmdW5jdGlvbiBmb3J3YXJkaW5nIGNvbmZ1c2VzIE1TVkMgNi54Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnRlbXBsYXRlX2FyaXR5PFQ+Ojp0eXBlIGFyaXR5XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX2ltcGw8YXJpdHlfPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQsVGFnLFByb3RlY3QgPiBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbF86OnR5cGUgdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxfOjppc19sZSBpc19sZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDMsIGxhbWJkYSwgKFQsIFRhZywgUHJvdGVjdCkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDEsIDMsIGxhbWJkYSkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IGlzX2xhbWJkYV9leHByZXNzaW9uCi0gICAgOiBsYW1iZGE8VD46OmlzX2xlCi17Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvbGVzcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvbGVzcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0YjhlZWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2xlc3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGVzcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGxlc3NfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGxlc3NfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGxlc3NfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBsZXNzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGxlc3NfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGxlc3NfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBsZXNzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBsZXNzCi0KLSAgICA6IGxlc3NfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBsZXNzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBsZXNzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGxlc3MsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGxlc3MpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGVzc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgPiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvbGVzc19lcXVhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvbGVzc19lcXVhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjZDE0MWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2xlc3NfZXF1YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGVzc19lcXVhbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGxlc3NfZXF1YWxfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGxlc3NfZXF1YWxfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGxlc3NfZXF1YWxfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBsZXNzX2VxdWFsX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBsZXNzX2VxdWFsCi0KLSAgICA6IGxlc3NfZXF1YWxfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBsZXNzX2VxdWFsX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBsZXNzX2VxdWFsX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGxlc3NfZXF1YWwsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGxlc3NfZXF1YWwpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgPD0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2xpc3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2xpc3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Y2M4YzQ2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9saXN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9saXN0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IGxpc3Q7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QwPCAgPgotewotICAgIHR5cGVkZWYgbGlzdDA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTxUMD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QyPCBUMCxUMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MzwgVDAsVDEsVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q0PCBUMCxUMSxUMixUMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q1PCBUMCxUMSxUMixUMyxUNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0NjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0ODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0OTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTY8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE3PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxODwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTk8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IGxpc3QKLSAgICA6IGxpc3QyMDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvbGlzdF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9saXN0X2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDNmMzhmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9saXN0X2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzI4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xpc3RfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QwX2M8VD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QwX2M8VD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDFfYzwgVCxDMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MV9jPCBULEMwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDJfYzwgVCxDMCxDMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0Ml9jPCBULEMwLEMxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMgotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDNfYzwgVCxDMCxDMSxDMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0M19jPCBULEMwLEMxLEMyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMwotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDRfYzwgVCxDMCxDMSxDMixDMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NF9jPCBULEMwLEMxLEMyLEMzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDVfYzwgVCxDMCxDMSxDMixDMyxDNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NV9jPCBULEMwLEMxLEMyLEMzLEM0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0Nl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNgotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0N19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNwotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0OF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0OV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDEwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDExX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxMl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEyX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDEzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMwotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTRfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTVfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE1X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE2X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxN19jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxN19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNwotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxOF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE5X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxOV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jCi0gICAgOiBsaXN0MjBfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MjBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL21hcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvbWFwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzk3NGYyOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvbWFwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9tYXAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgbWFwOwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDA8ICA+Ci17Ci0gICAgdHlwZWRlZiBtYXAwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDI8IFQwLFQxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDI8IFQwLFQxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDU8IFQwLFQxLFQyLFQzLFQ0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDU8IFQwLFQxLFQyLFQzLFQ0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTc8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBtYXAKLSAgICA6IG1hcDIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL21pbnVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9taW51cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1NGZkYTguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL21pbnVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9taW51cy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IG1pbnVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBtaW51c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbWludXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBtaW51c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBtaW51c19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbWludXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBtaW51c190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgbWludXMKLSAgICA6IG1pbnVzPCBtaW51czwgbWludXM8IG1pbnVzPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgbWludXM8IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogbWludXM8IG1pbnVzPCBtaW51czwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIG1pbnVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgbWludXM8IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogbWludXM8IG1pbnVzPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIG1pbnVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBtaW51czwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogbWludXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBtaW51c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbWludXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBtaW51cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWludXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIC0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL21vZHVsdXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL21vZHVsdXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTg5NjkxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9tb2R1bHVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9tb2R1bHVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbW9kdWx1c19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbW9kdWx1c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbW9kdWx1c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IG1vZHVsdXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbW9kdWx1c19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbW9kdWx1c19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG1vZHVsdXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IG1vZHVsdXMKLQotICAgIDogbW9kdWx1c19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIG1vZHVsdXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIG1vZHVsdXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbW9kdWx1cywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbW9kdWx1cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbW9kdWx1c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgJSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvbm90X2VxdWFsX3RvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9ub3RfZXF1YWxfdG8uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZGUxZTE2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9ub3RfZXF1YWxfdG8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbm90X2VxdWFsX3RvLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBub3RfZXF1YWxfdG9faW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IG5vdF9lcXVhbF90b19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG5vdF9lcXVhbF90b190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgbm90X2VxdWFsX3RvCi0KLSAgICA6IG5vdF9lcXVhbF90b19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIG5vdF9lcXVhbF90b190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbm90X2VxdWFsX3RvX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIG5vdF9lcXVhbF90bywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbm90X2VxdWFsX3RvKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgIT0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL29yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9vci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhZThlZGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL29yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL29yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGJvb2wgQ18sIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0ID4KLXN0cnVjdCBvcl9pbXBsCi0gICAgOiB0cnVlXwotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0ID4KLXN0cnVjdCBvcl9pbXBsPCBmYWxzZSxUMSxUMixUMyxUNCA+Ci0gICAgOiBvcl9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICwgVDIsIFQzLCBUNAotICAgICAgICAsIGZhbHNlXwotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgb3JfaW1wbDwKLSAgICAgICAgICBmYWxzZQotICAgICAgICAsIGZhbHNlXywgZmFsc2VfLCBmYWxzZV8sIGZhbHNlXwotICAgICAgICA+Ci0gICAgOiBmYWxzZV8KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgICwgdHlwZW5hbWUgVDMgPSBmYWxzZV8sIHR5cGVuYW1lIFQ0ID0gZmFsc2VfLCB0eXBlbmFtZSBUNSA9IGZhbHNlXwotICAgID4KLXN0cnVjdCBvcl8KLQotICAgIDogYXV4Ojpvcl9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPgotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgb3JfCi0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoCi0gICAgICAyCi0gICAgLCA1Ci0gICAgLCBvcl8KLSAgICApCi0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvcGxhY2Vob2xkZXJzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9wbGFjZWhvbGRlcnMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTI4YzA5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9wbGFjZWhvbGRlcnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMS0yMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3BsYWNlaG9sZGVycy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwgLTEgPiBfOwotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8pCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol87Ci19Ci0KLX19Ci0KLS8vLyBhZ3VydCwgMTcvbWFyLzAyOiBvbmUgbW9yZSBwbGFjZWhvbGRlciBmb3IgdGhlIGxhc3QgJ2FwcGx5IycgCi0vLy8gc3BlY2lhbGl6YXRpb24KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDE+IF8xOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzEpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol8xOwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Mj4gXzI7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfMikKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzI7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwzPiBfMzsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8zKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfMzsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDQ+IF80OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzQpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol80OwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8NT4gXzU7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfNSkKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzU7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzw2PiBfNjsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF82KQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfNjsKLX0KLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9wbHVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9wbHVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQ4YjJjZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvcGx1cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvcGx1cy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHBsdXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHBsdXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHBsdXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBwbHVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHBsdXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHBsdXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBwbHVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBwbHVzCi0gICAgOiBwbHVzPCBwbHVzPCBwbHVzPCBwbHVzPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgcGx1cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBwbHVzPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IHBsdXM8IHBsdXM8IHBsdXM8IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgcGx1czwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBwbHVzPCBwbHVzPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHBsdXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IHBsdXM8IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IHBsdXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBwbHVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBwbHVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHBsdXMKLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBwbHVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBwbHVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICArIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9xdW90ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvcXVvdGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTc3ZmJhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9xdW90ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9xdW90ZS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvcmV2ZXJzZV9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL3JldmVyc2VfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmM2YzE3My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvcmV2ZXJzZV9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjk1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vcmV2ZXJzZV9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTAgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTEgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMiBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTMgYmt3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTQgYmt3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlNCwgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuawotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIHJldmVyc2VfZm9sZF9pbXBsPAotICAgICAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgICAgICwgaXRlcjQKLSAgICAgICAgICAgICwgTGFzdAotICAgICAgICAgICAgLCBmd2Rfc3RhdGU0Ci0gICAgICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICA+IG5lc3RlZF9jaHVuazsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6c3RhdGUgYmt3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlNCwgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfc3RlcDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfbnVsbF9zdGVwCi17Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rPCAtMSA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGlzX3NhbWU8IEZpcnN0LExhc3QgPjo6dHlwZQotICAgICAgICAgICAgLCByZXZlcnNlX2ZvbGRfbnVsbF9zdGVwPCBMYXN0LFN0YXRlID4KLSAgICAgICAgICAgICwgcmV2ZXJzZV9mb2xkX3N0ZXA8IEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotICAgICAgICAgICAgPjo6dHlwZSByZXNfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIHJldmVyc2VfZm9sZF9jaHVuazwgLTEgPjo6dGVtcGxhdGUgcmVzdWx0XzwKLSAgICAgICAgICB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjxGb3J3YXJkT3AsU3RhdGUsIHR5cGVuYW1lIGRlcmVmPEZpcnN0Pjo6dHlwZT46OnR5cGUKLSAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gbmVzdGVkX3N0ZXA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwKLSAgICAgICAgICBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6OnN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgZGVyZWY8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgID46OnR5cGUgc3RhdGU7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbAotICAgIDogcmV2ZXJzZV9mb2xkX2NodW5rPE4+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTdjYzY4OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOTUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rOwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUwIGJrd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTEgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUyIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMixpdGVyMiA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUzIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMyxpdGVyMiA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMixpdGVyMiA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUzLGl0ZXIzID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTQgYmt3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGU0LGl0ZXIzID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUzLGl0ZXIyID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTMsaXRlcjMgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICAgICAsIGl0ZXI0Ci0gICAgICAgICAgICAsIExhc3QKLSAgICAgICAgICAgICwgZndkX3N0YXRlNAotICAgICAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgPiBuZXN0ZWRfY2h1bms7Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6OnN0YXRlIGJrd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlNCxpdGVyMyA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMyxpdGVyMiA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfc3RlcDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9udWxsX3N0ZXAKLXsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazwgLTEgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICB0eXBlbmFtZSBpc19zYW1lPCBGaXJzdCxMYXN0ID46OnR5cGUKLSAgICAgICAgICAgICwgcmV2ZXJzZV9pdGVyX2ZvbGRfbnVsbF9zdGVwPCBMYXN0LFN0YXRlID4KLSAgICAgICAgICAgICwgcmV2ZXJzZV9pdGVyX2ZvbGRfc3RlcDwgRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci0gICAgICAgICAgICA+Ojp0eXBlIHJlc187Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9zdGVwCi17Ci0gICAgdHlwZWRlZiByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazwgLTEgPjo6dGVtcGxhdGUgcmVzdWx0XzwKLSAgICAgICAgICB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLFN0YXRlLEZpcnN0ID46OnR5cGUKLSAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gbmVzdGVkX3N0ZXA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwKLSAgICAgICAgICBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6OnN0YXRlCi0gICAgICAgICwgRmlyc3QKLSAgICAgICAgPjo6dHlwZSBzdGF0ZTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGwKLSAgICA6IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPE4+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9zZXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL3NldC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjNGNhMTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL3NldC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2V0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IHNldDsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQwPCAgPgotewotICAgIHR5cGVkZWYgc2V0MDwgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTxUMD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE8VDA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQyPCBUMCxUMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyPCBUMCxUMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MzwgVDAsVDEsVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MzwgVDAsVDEsVDIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ0PCBUMCxUMSxUMixUMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ0PCBUMCxUMSxUMixUMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ1PCBUMCxUMSxUMixUMyxUNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ1PCBUMCxUMSxUMixUMyxUNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NjwgVDAsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0OTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0OTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTY8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE3PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxODwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTk8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3Qgc2V0Ci0gICAgOiBzZXQyMDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9zZXRfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvc2V0X2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZWYyZmRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9zZXRfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2V0X2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCA9IExPTkdfTUFYLCBsb25nIEMxID0gTE9OR19NQVgsIGxvbmcgQzIgPSBMT05HX01BWAotICAgICwgbG9uZyBDMyA9IExPTkdfTUFYLCBsb25nIEM0ID0gTE9OR19NQVgsIGxvbmcgQzUgPSBMT05HX01BWAotICAgICwgbG9uZyBDNiA9IExPTkdfTUFYLCBsb25nIEM3ID0gTE9OR19NQVgsIGxvbmcgQzggPSBMT05HX01BWAotICAgICwgbG9uZyBDOSA9IExPTkdfTUFYLCBsb25nIEMxMCA9IExPTkdfTUFYLCBsb25nIEMxMSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxMiA9IExPTkdfTUFYLCBsb25nIEMxMyA9IExPTkdfTUFYLCBsb25nIEMxNCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxNSA9IExPTkdfTUFYLCBsb25nIEMxNiA9IExPTkdfTUFYLCBsb25nIEMxNyA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxOCA9IExPTkdfTUFYLCBsb25nIEMxOSA9IExPTkdfTUFYCi0gICAgPgotc3RydWN0IHNldF9jOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MF9jPFQ+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQwX2M8VD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxX2M8IFQsQzAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MV9jPCBULEMwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMQotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQyX2M8IFQsQzAsQzEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0Ml9jPCBULEMwLEMxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMgotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQzX2M8IFQsQzAsQzEsQzIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0M19jPCBULEMwLEMxLEMyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMwotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQ0X2M8IFQsQzAsQzEsQzIsQzMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NF9jPCBULEMwLEMxLEMyLEMzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQ1X2M8IFQsQzAsQzEsQzIsQzMsQzQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NV9jPCBULEMwLEMxLEMyLEMzLEM0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQ2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0Nl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNgotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQ3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0N19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNwotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQ4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0OF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQ5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0OV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOQotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxMV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMQotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTJfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEyX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxM19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMwotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxNF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTRfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE1X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE1X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxNl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTdfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxN19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNwotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MThfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxOV9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2MKLSAgICA6IHNldDIwX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL3NoaWZ0X2xlZnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL3NoaWZ0X2xlZnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTY0ZmI4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9zaGlmdF9sZWZ0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NoaWZ0X2xlZnQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBzaGlmdF9sZWZ0X2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBzaGlmdF9sZWZ0X2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBzaGlmdF9sZWZ0X2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3Qgc2hpZnRfbGVmdF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdAotCi0gICAgOiBzaGlmdF9sZWZ0X2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgc2hpZnRfbGVmdF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgc2hpZnRfbGVmdF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBzaGlmdF9sZWZ0LCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBzaGlmdF9sZWZ0KQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTiwgdHlwZW5hbWUgUyA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgTjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIDw8IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChTKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL3NoaWZ0X3JpZ2h0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9zaGlmdF9yaWdodC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3YTVmZTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL3NoaWZ0X3JpZ2h0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NoaWZ0X3JpZ2h0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHNoaWZ0X3JpZ2h0X2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBzaGlmdF9yaWdodF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHNoaWZ0X3JpZ2h0X3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBzaGlmdF9yaWdodAotCi0gICAgOiBzaGlmdF9yaWdodF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHNoaWZ0X3JpZ2h0X3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBzaGlmdF9yaWdodF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBzaGlmdF9yaWdodCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgc2hpZnRfcmlnaHQpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTiwgdHlwZW5hbWUgUyA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgTjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgID4+IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChTKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL3RlbXBsYXRlX2FyaXR5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS90ZW1wbGF0ZV9hcml0eS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1MDU3OGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL3RlbXBsYXRlX2FyaXR5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vdGVtcGxhdGVfYXJpdHkuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgYm9vbCA+Ci1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHlfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBtcGw6OmludF88IC0xID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB0ZW1wbGF0ZV9hcml0eV9pbXBsPHRydWU+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IEY6OmFyaXR5Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+Ci1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHkKLSAgICA6IHRlbXBsYXRlX2FyaXR5X2ltcGw8IDo6bmRuYm9vc3Q6Om1wbDo6YXV4OjpoYXNfcmViaW5kPEY+Ojp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxGPgotewotfTsKLQotfX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS90aW1lcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvdGltZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTU1ZmVkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS90aW1lcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdGltZXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCB0aW1lc19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgdGltZXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHRpbWVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgdGltZXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgdGltZXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHRpbWVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgdGltZXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IHRpbWVzCi0gICAgOiB0aW1lczwgdGltZXM8IHRpbWVzPCB0aW1lczwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIHRpbWVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IHRpbWVzPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IHRpbWVzPCB0aW1lczwgdGltZXM8IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IHRpbWVzPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IHRpbWVzPCB0aW1lczwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgdGltZXM8IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IHRpbWVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgdGltZXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIHRpbWVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHRpbWVzCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgdGltZXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IHRpbWVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAqIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS91bnBhY2tfYXJncy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvdW5wYWNrX2FyZ3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTA0OWVhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS91bnBhY2tfYXJncy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC91bnBhY2tfYXJncy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBpbnQgc2l6ZSwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDAsRixBcmdzID4KLSAgICA6IGFwcGx5MDwKLSAgICAgICAgICBGCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCAxLEYsQXJncyA+Ci0gICAgOiBhcHBseTE8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCAyLEYsQXJncyA+Ci0gICAgOiBhcHBseTI8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgMyxGLEFyZ3MgPgotICAgIDogYXBwbHkzPAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDIgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgNCxGLEFyZ3MgPgotICAgIDogYXBwbHk0PAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDIgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywzID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDUsRixBcmdzID4KLSAgICA6IGFwcGx5NTwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywyID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMyA+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncyw0ID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotfQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3MKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQXJncyA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnVucGFja19hcmdzX2ltcGw8Ci0gICAgICAgICAgICAgIHNpemU8QXJncz46OnZhbHVlCi0gICAgICAgICAgICAsIEYKLSAgICAgICAgICAgICwgQXJncwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfUEFTU19USFJPVUdIX0xBTUJEQV9TUEVDKDEsIHVucGFja19hcmdzKQotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvdmVjdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS92ZWN0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjY3NTg5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS92ZWN0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCB2ZWN0b3I7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMDwgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IHZlY3RvcgotICAgIDogdmVjdG9yMjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvdmVjdG9yX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL3ZlY3Rvcl9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTJmYmRiNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvdmVjdG9yX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzA5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvcl9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAgPSBMT05HX01BWCwgbG9uZyBDMSA9IExPTkdfTUFYLCBsb25nIEMyID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzMgPSBMT05HX01BWCwgbG9uZyBDNCA9IExPTkdfTUFYLCBsb25nIEM1ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzYgPSBMT05HX01BWCwgbG9uZyBDNyA9IExPTkdfTUFYLCBsb25nIEM4ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzkgPSBMT05HX01BWCwgbG9uZyBDMTAgPSBMT05HX01BWCwgbG9uZyBDMTEgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTIgPSBMT05HX01BWCwgbG9uZyBDMTMgPSBMT05HX01BWCwgbG9uZyBDMTQgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTUgPSBMT05HX01BWCwgbG9uZyBDMTYgPSBMT05HX01BWCwgbG9uZyBDMTcgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTggPSBMT05HX01BWCwgbG9uZyBDMTkgPSBMT05HX01BWAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjBfYzxUPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMF9jPFQ+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMV9jPCBULCBUKEMwKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxX2M8IFQsIFQoQzApID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IyX2M8IFQsIFQoQzApLCBUKEMxKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyX2M8IFQsIFQoQzApLCBUKEMxKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yM19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjNfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I0X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I1X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I1X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yNl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjZfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I3X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNwotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I4X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I4X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yOV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjlfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTBfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTBfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjExX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEyX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTNfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMikgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTNfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMikgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMwotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE0X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMykgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE1X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTZfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTZfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNgotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE3X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNikgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE4X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNykgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTlfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTlfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCkgPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYwotICAgIDogdmVjdG9yMjBfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCksIFQoQzE5KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyMF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNyksIFQoQzE4KSwgVChDMTkpID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvYWR2YW5jZV9iYWNrd2FyZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2FkdmFuY2VfYmFja3dhcmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTQ4MDljLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvYWR2YW5jZV9iYWNrd2FyZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiYWR2YW5jZV9iYWNrd2FyZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBsb25nIE4gPiBzdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDsKLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDE+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwyPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDM+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDQ+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2JhY2t3YXJkPDQ+Ci0gICAgICAgICAgICAsIEl0ZXJhdG9yCi0gICAgICAgICAgICA+Ojp0eXBlIGNodW5rX3Jlc3VsdF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9iYWNrd2FyZDwoCi0gICAgICAgICAgICAgICAgKE4gLSA0KSA8IDAKLSAgICAgICAgICAgICAgICAgICAgPyAwCi0gICAgICAgICAgICAgICAgICAgIDogTiAtIDQKLSAgICAgICAgICAgICAgICAgICAgKT4KLSAgICAgICAgICAgICwgY2h1bmtfcmVzdWx0XwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19fX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9hZHZhbmNlX2ZvcndhcmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9hZHZhbmNlX2ZvcndhcmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjMzMWRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvYWR2YW5jZV9mb3J3YXJkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJhZHZhbmNlX2ZvcndhcmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgbG9uZyBOID4gc3RydWN0IGFkdmFuY2VfZm9yd2FyZDsKLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8MD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwxPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDI+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDw0PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfZm9yd2FyZDw0PgotICAgICAgICAgICAgLCBJdGVyYXRvcgotICAgICAgICAgICAgPjo6dHlwZSBjaHVua19yZXN1bHRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfZm9yd2FyZDwoCi0gICAgICAgICAgICAgICAgKE4gLSA0KSA8IDAKLSAgICAgICAgICAgICAgICAgICAgPyAwCi0gICAgICAgICAgICAgICAgICAgIDogTiAtIDQKLSAgICAgICAgICAgICAgICAgICAgKT4KLSAgICAgICAgICAgICwgY2h1bmtfcmVzdWx0XwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19fX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9hbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9hbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZWNkN2ZkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvYW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJhbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgYm9vbCBDXywgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQgPgotc3RydWN0IGFuZF9pbXBsCi0gICAgOiBmYWxzZV8KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCA+Ci1zdHJ1Y3QgYW5kX2ltcGw8IHRydWUsVDEsVDIsVDMsVDQgPgotICAgIDogYW5kX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgLCBUMiwgVDMsIFQ0Ci0gICAgICAgICwgdHJ1ZV8KLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFuZF9pbXBsPAotICAgICAgICAgIHRydWUKLSAgICAgICAgLCB0cnVlXywgdHJ1ZV8sIHRydWVfLCB0cnVlXwotICAgICAgICA+Ci0gICAgOiB0cnVlXwotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgLCB0eXBlbmFtZSBUMyA9IHRydWVfLCB0eXBlbmFtZSBUNCA9IHRydWVfLCB0eXBlbmFtZSBUNSA9IHRydWVfCi0gICAgPgotc3RydWN0IGFuZF8KLQotICAgIDogYXV4OjphbmRfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4KLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGFuZF8KLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigKLSAgICAgIDIKLSAgICAsIDUKLSAgICAsIGFuZF8KLSAgICApCi0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2FwcGx5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvYXBwbHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTUzNzdjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvYXBwbHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTY5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJhcHBseS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5MAotCi0gICAgOiBhcHBseV93cmFwMDwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMQotICAgICAgICAsIGFwcGx5MAotICAgICAgICAsIChGICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5PCBGLG5hLG5hLG5hLG5hLG5hID4KLSAgICA6IGFwcGx5MDxGPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseTEKLQotICAgIDogYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMgotICAgICAgICAsIGFwcGx5MQotICAgICAgICAsIChGLCBUMSkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseTwgRixUMSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBhcHBseTE8IEYsVDEgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkyCi0KLSAgICA6IGFwcGx5X3dyYXAyPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAzCi0gICAgICAgICwgYXBwbHkyCi0gICAgICAgICwgKEYsIFQxLCBUMikKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsVDIsbmEsbmEsbmEgPgotICAgIDogYXBwbHkyPCBGLFQxLFQyID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseTMKLQotICAgIDogYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyLCBUMwotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA0Ci0gICAgICAgICwgYXBwbHkzCi0gICAgICAgICwgKEYsIFQxLCBUMiwgVDMpCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseTwgRixUMSxUMixUMyxuYSxuYSA+Ci0gICAgOiBhcHBseTM8IEYsVDEsVDIsVDMgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseTQKLQotICAgIDogYXBwbHlfd3JhcDQ8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGFwcGx5NAotICAgICAgICAsIChGLCBUMSwgVDIsIFQzLCBUNCkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseTwgRixUMSxUMixUMyxUNCxuYSA+Ci0gICAgOiBhcHBseTQ8IEYsVDEsVDIsVDMsVDQgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk1Ci0KLSAgICA6IGFwcGx5X3dyYXA1PAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA2Ci0gICAgICAgICwgYXBwbHk1Ci0gICAgICAgICwgKEYsIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkKLSAgICA6IGFwcGx5NTwgRixUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2FwcGx5X2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2FwcGx5X2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmNjcxZDEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9hcHBseV9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImFwcGx5X2Z3ZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hCi0gICAgPgotc3RydWN0IGFwcGx5OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5MTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkzOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5NDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk1OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2FwcGx5X3dyYXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9hcHBseV93cmFwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjhhYmEzMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2FwcGx5X3dyYXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDU2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA4Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJhcHBseV93cmFwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOLCB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwwPAotICAgICAgICAgIDAKLSAgICAgICAgLCBGCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgCi0vLy8gc2luY2UgdGhlIGRlZmF1bHRzIGFyZSAibG9zdCIsIHdlIGhhdmUgdG8gcGFzcyAqc29tZXRoaW5nKiBldmVuIGZvciBudWxsYXJ5Ci0vLy8gbWV0YWZ1bmN0aW9uIGNsYXNzZXMKLSAgICAgICAgbmEKLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDA8Ci0gICAgICAgICAgMQotICAgICAgICAsIEYKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAKLSAgICAgICAgbmEKLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDA8Ci0gICAgICAgICAgMgotICAgICAgICAsIEYKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAKLSAgICAgICAgbmEsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDA8Ci0gICAgICAgICAgMwotICAgICAgICAsIEYKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAKLSAgICAgICAgbmEsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwwPAotICAgICAgICAgIDQKLSAgICAgICAgLCBGCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgCi0gICAgICAgIG5hLCBuYSwgbmEsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDA8Ci0gICAgICAgICAgNQotICAgICAgICAsIEYKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAKLSAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAwCi0gICAgOiBhcHBseV93cmFwX2ltcGwwPAotICAgICAgICAgIDo6bmRuYm9vc3Q6Om1wbDo6YXV4Ojphcml0eTwgRiwwID46OnZhbHVlCi0gICAgICAgICwgRgotICAgICAgIAotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOLCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwxOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDE8Ci0gICAgICAgICAgMQotICAgICAgICAsIEYKLSAgICAgICAgLCBUMQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDE8Ci0gICAgICAgICAgMgotICAgICAgICAsIEYKLSAgICAgICAgLCBUMQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMQotICAgICAgICAsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwxPAotICAgICAgICAgIDMKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEKLSAgICAgICAgLCBuYSwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDE8Ci0gICAgICAgICAgNAotICAgICAgICAsIEYKLSAgICAgICAgLCBUMQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMQotICAgICAgICAsIG5hLCBuYSwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDE8Ci0gICAgICAgICAgNQotICAgICAgICAsIEYKLSAgICAgICAgLCBUMQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMQotICAgIDogYXBwbHlfd3JhcF9pbXBsMTwKLSAgICAgICAgICA6Om5kbmJvb3N0OjptcGw6OmF1eDo6YXJpdHk8IEYsMSA+Ojp2YWx1ZQotICAgICAgICAsIEYKLSAgICAgICAgLCBUMQotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOLCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMjwKLSAgICAgICAgICAyCi0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMSwgVDIKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwyPAotICAgICAgICAgIDMKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMgotCi0gICAgICAgICwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwyPAotICAgICAgICAgIDQKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMgotCi0gICAgICAgICwgbmEsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMjwKLSAgICAgICAgICA1Ci0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMSwgVDIKLQotICAgICAgICAsIG5hLCBuYSwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMgotICAgIDogYXBwbHlfd3JhcF9pbXBsMjwKLSAgICAgICAgICA6Om5kbmJvb3N0OjptcGw6OmF1eDo6YXJpdHk8IEYsMiA+Ojp2YWx1ZQotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwzOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMzwKLSAgICAgICAgICAzCi0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyLCBUMwotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwzPAotICAgICAgICAgIDQKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyLCBUMwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMSwgVDIsIFQzCi0KLSAgICAgICAgLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwzPAotICAgICAgICAgIDUKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyLCBUMwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMSwgVDIsIFQzCi0KLSAgICAgICAgLCBuYSwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDMKLSAgICA6IGFwcGx5X3dyYXBfaW1wbDM8Ci0gICAgICAgICAgOjpuZG5ib29zdDo6bXBsOjphdXg6OmFyaXR5PCBGLDMgPjo6dmFsdWUKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyLCBUMwotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOLCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGw0OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDQ8Ci0gICAgICAgICAgNAotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMSwgVDIsIFQzLCBUNAotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsNDwKLSAgICAgICAgICA1Ci0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMiwgVDMsIFQ0Ci0KLSAgICAgICAgLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDQKLSAgICA6IGFwcGx5X3dyYXBfaW1wbDQ8Ci0gICAgICAgICAgOjpuZG5ib29zdDo6bXBsOjphdXg6OmFyaXR5PCBGLDQgPjo6dmFsdWUKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDU7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDU8Ci0gICAgICAgICAgNQotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyLCBUMywgVDQsIFQ1Ci0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDUKLSAgICA6IGFwcGx5X3dyYXBfaW1wbDU8Ci0gICAgICAgICAgOjpuZG5ib29zdDo6bXBsOjphdXg6OmFyaXR5PCBGLDUgPjo6dmFsdWUKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvYXJnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvYXJnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjljMDE3YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2FyZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMS0yMDAyCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImFyZy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8IC0xID4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAtMSk7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwxPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDEpOwotICAgIHR5cGVkZWYgYXJnPDI+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwyPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDIpOwotICAgIHR5cGVkZWYgYXJnPDM+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMiB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwzPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDMpOwotICAgIHR5cGVkZWYgYXJnPDQ+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMyB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzw0PgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDQpOwotICAgIHR5cGVkZWYgYXJnPDU+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVNCB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzw1PgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDUpOwotICAgIHR5cGVkZWYgYXJnPDY+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVNSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTk9OVFlQRV9BUklUWV9TUEVDKDEsaW50LCBhcmcpCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2Jhc2ljX2JpbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9iYXNpY19iaW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGJhNGNhNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2Jhc2ljX2JpbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzAwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiYmFzaWNfYmluZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmcKLXsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPCBhcmc8Tj4sIFUxLCBVMiwgVTMsIFU0LCBVNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTxtcGw6OmFyZzxOPiwgVTEsIFUyLCBVMywgVTQsIFU1Pjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBiaW5kMAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQwPEY+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMDxGPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDEsIGJpbmQwKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDEsIGJpbmQwKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGJpbmQxCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMwotICAgICwgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMTwgRixUMSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMTwgRixUMSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMiwgYmluZDEpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMiwgYmluZDEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQyCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyCi0gICAgLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMjwgRixUMSxUMiA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMjwgRixUMSxUMiA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMywgYmluZDIpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMywgYmluZDIpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMwotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMzwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFUxCi0gICAgLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDM8IEYsVDEsVDIsVDMgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDM8IEYsVDEsVDIsVDMgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDQsIGJpbmQzKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDQsIGJpbmQzKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGJpbmQ0Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZDUKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQ0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUNSxVMSxVMixVMyxVNCxVNSA+IHQ1OwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZSwgdHlwZW5hbWUgdDU6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDYsIGJpbmQ1KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDYsIGJpbmQ1KQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9iaW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvYmluZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhNTc1NGIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9iaW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM5NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImJpbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnCi17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIHR5cGVuYW1lIEFyZwotICAgID4KLXN0cnVjdCByZXBsYWNlX3VubmFtZWRfYXJnCi17Ci0gICAgdHlwZWRlZiBBcmcgbmV4dDsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgQXJnCi0gICAgPgotc3RydWN0IHJlcGxhY2VfdW5uYW1lZF9hcmc8IGFyZzwgLTEgPiwgQXJnID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEFyZzo6bmV4dCBuZXh0OwotICAgIHR5cGVkZWYgQXJnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwgYXJnPE4+LCBVMSwgVTIsIFUzLCBVNCwgVTUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8bXBsOjphcmc8Tj4sIFUxLCBVMiwgVTMsIFU0LCBVNT46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDAKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAwPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDA8Rj4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQwPEY+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMSwgYmluZDApCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMSwgYmluZDApCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDEKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzCi0gICAgLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQxPCBGLFQxID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQxPCBGLFQxID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygyLCBiaW5kMSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygyLCBiaW5kMSkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDIKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMgotICAgICwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDI8IEYsVDEsVDIgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDI8IEYsVDEsVDIgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDMsIGJpbmQyKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDMsIGJpbmQyKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDMKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAzPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVTEKLSAgICAsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMzwgRixUMSxUMixUMyA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMzwgRixUMSxUMixUMyA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNCwgYmluZDMpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNCwgYmluZDMpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDQKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ0LG40ID4gcjQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6OnR5cGUgYTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6Om5leHQgbjU7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA0PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDQ8IEYsVDEsVDIsVDMsVDQgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDQ8IEYsVDEsVDIsVDMsVDQgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDUsIGJpbmQ0KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDUsIGJpbmQ0KQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kNQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDQsbjQgPiByNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6dHlwZSBhNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6bmV4dCBuNTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGE0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDUsbjUgPiByNTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNTo6dHlwZSBhNTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNTo6bmV4dCBuNjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGE1LFUxLFUyLFUzLFU0LFU1ID4gdDU7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUsIHR5cGVuYW1lIHQ1Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvYmluZF9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9iaW5kX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlNWQ1NTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9iaW5kX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiYmluZF9md2QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBiaW5kMDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kMTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kNDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZDU7Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvYml0YW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvYml0YW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmEzZjg0Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2JpdGFuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImJpdGFuZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGJpdGFuZF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0YW5kX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBiaXRhbmRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBiaXRhbmRfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0YW5kX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXRhbmRfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBiaXRhbmRfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdGFuZF8KLSAgICA6IGJpdGFuZF88IGJpdGFuZF88IGJpdGFuZF88IGJpdGFuZF88IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRhbmRfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGJpdGFuZF88IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogYml0YW5kXzwgYml0YW5kXzwgYml0YW5kXzwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdGFuZF8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBiaXRhbmRfPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGJpdGFuZF88IGJpdGFuZF88IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0YW5kXwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXzwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogYml0YW5kX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgYml0YW5kX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBiaXRhbmRfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0YW5kXwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGJpdGFuZF8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGJpdGFuZF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgJiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2JpdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvYml0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDgyODkwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvYml0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJiaXRvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGJpdG9yX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBiaXRvcl9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgYml0b3JfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBiaXRvcl9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXRvcl9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0b3JfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBiaXRvcl90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfCi0gICAgOiBiaXRvcl88IGJpdG9yXzwgYml0b3JfPCBiaXRvcl88IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IGJpdG9yXzwgYml0b3JfPCBiaXRvcl88IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBiaXRvcl88IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogYml0b3JfPCBiaXRvcl88IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBiaXRvcl88IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IGJpdG9yX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgYml0b3JfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGJpdG9yX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdG9yXwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGJpdG9yXykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYml0b3JfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIHwgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9iaXR4b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9iaXR4b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OGNkZDIzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvYml0eG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiYml0eG9yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBiaXR4b3JfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdHhvcl9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGJpdHhvcl9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXR4b3JfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdHhvcl9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGJpdHhvcl90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXwotICAgIDogYml0eG9yXzwgYml0eG9yXzwgYml0eG9yXzwgYml0eG9yXzwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdHhvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXzwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBiaXR4b3JfPCBiaXR4b3JfPCBiaXR4b3JfPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0eG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IGJpdHhvcl88IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogYml0eG9yXzwgYml0eG9yXzwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXR4b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBiaXR4b3JfPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBiaXR4b3JfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBiaXR4b3JfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGJpdHhvcl90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXR4b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgYml0eG9yXykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYml0eG9yX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICBeIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvZGVxdWUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9kZXF1ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzNWQ4YTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9kZXF1ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImRlcXVlLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IGRlcXVlOwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMDwgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTxUMD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE8VDA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjI8IFQwLFQxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjI8IFQwLFQxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I0PCBUMCxUMSxUMixUMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I0PCBUMCxUMSxUMixUMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjU8IFQwLFQxLFQyLFQzLFQ0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjU8IFQwLFQxLFQyLFQzLFQ0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTY8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTc8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTk8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgZGVxdWUKLSAgICA6IHZlY3RvcjIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9kaXZpZGVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvZGl2aWRlcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllYzU4MGQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9kaXZpZGVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiZGl2aWRlcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGRpdmlkZXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGRpdmlkZXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGRpdmlkZXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBkaXZpZGVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGRpdmlkZXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGRpdmlkZXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBkaXZpZGVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBkaXZpZGVzCi0gICAgOiBkaXZpZGVzPCBkaXZpZGVzPCBkaXZpZGVzPCBkaXZpZGVzPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBkaXZpZGVzPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IGRpdmlkZXM8IGRpdmlkZXM8IGRpdmlkZXM8IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBkaXZpZGVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlczwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBkaXZpZGVzPCBkaXZpZGVzPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGRpdmlkZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGRpdmlkZXM8IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IGRpdmlkZXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBkaXZpZGVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBkaXZpZGVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGRpdmlkZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBkaXZpZGVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBkaXZpZGVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAvIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvZXF1YWxfdG8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9lcXVhbF90by5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxMTU5YzIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9lcXVhbF90by5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiZXF1YWxfdG8uaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBlcXVhbF90b19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZXF1YWxfdG9faW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGVxdWFsX3RvX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZXF1YWxfdG9faW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZXF1YWxfdG9faW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZXF1YWxfdG9fdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGVxdWFsX3RvCi0KLSAgICA6IGVxdWFsX3RvX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZXF1YWxfdG9fdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGVxdWFsX3RvX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGVxdWFsX3RvLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBlcXVhbF90bykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlcXVhbF90b19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgID09IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmJiNGJlZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDAsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiBzdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAxLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUxIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgMixGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTIgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAzLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTMgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCA0LEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGU0IHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGwKLXsKLSAgICB0eXBlZGVmIGZvbGRfaW1wbDwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRmlyc3QKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgU3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBjaHVua187Ci0KLSAgICB0eXBlZGVmIGZvbGRfaW1wbDwKLSAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgLCB0eXBlbmFtZSBjaHVua186Oml0ZXJhdG9yCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6c3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiByZXNfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IC0xLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLSAgICA6IGZvbGRfaW1wbDwKLSAgICAgICAgICAtMQotICAgICAgICAsIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPEZvcndhcmRPcCxTdGF0ZSwgdHlwZW5hbWUgZGVyZWY8Rmlyc3Q+Ojp0eXBlPjo6dHlwZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAtMSxMYXN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9mdWxsX2xhbWJkYS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2Z1bGxfbGFtYmRhLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzQ3MWYxOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2Z1bGxfbGFtYmRhLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1OCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiZnVsbF9sYW1iZGEuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIGJvb2wgQzEgPSBmYWxzZSwgYm9vbCBDMiA9IGZhbHNlLCBib29sIEMzID0gZmFsc2UsIGJvb2wgQzQgPSBmYWxzZQotICAgICwgYm9vbCBDNSA9IGZhbHNlCi0gICAgPgotc3RydWN0IGxhbWJkYV9vcgotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsYW1iZGFfb3I8IGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlID4KLSAgICA6IGZhbHNlXwotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgLCB0eXBlbmFtZSBBcml0eQotICAgID4KLXN0cnVjdCBsYW1iZGEKLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIFQgcmVzdWx0XzsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBpc19sYW1iZGFfZXhwcmVzc2lvbgotICAgIDogbGFtYmRhPFQ+Ojppc19sZQotewotfTsKLQotdGVtcGxhdGU8IGludCBOLCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IGxhbWJkYTwgYXJnPE4+LFRhZywgaW50XzwgLTEgPiA+Ci17Ci0gICAgdHlwZWRlZiB0cnVlXyBpc19sZTsKLSAgICB0eXBlZGVmIG1wbDo6YXJnPE4+IHJlc3VsdF87IC8vIHF1YWxpZmllZCBmb3IgdGhlIHNha2Ugb2YgTUlQU3BybyA3LjQxCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kMDxGPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88MT4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDA8Ci0gICAgICAgICAgRgotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MQotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQxPCB0cnVlXyxUYWcsRixMMSA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMTwKLSAgICAgICAgICBxdW90ZTE8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjxUMT4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgLCBpbnRfPDE+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDE8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQxPCBGLFQxID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgLCBpbnRfPDI+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQxPAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMgotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQyCi17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlLCB0eXBlbmFtZSBMMjo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDI8IHRydWVfLFRhZyxGLEwxLEwyID4KLXsKLSAgICB0eXBlZGVmIGJpbmQyPAotICAgICAgICAgIHF1b3RlMjwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfLCB0eXBlbmFtZSBMMjo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMiA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50XzwyPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlLCBpc19sZTI6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0MjwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMSwgbDIKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kMjwgRixUMSxUMiA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50XzwzPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMjwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MwotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUsIHR5cGVuYW1lIEwzOjp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMwotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQzPCB0cnVlXyxUYWcsRixMMSxMMixMMyA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMzwKLSAgICAgICAgICBxdW90ZTM8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XywgdHlwZW5hbWUgTDI6OnJlc3VsdF8sIHR5cGVuYW1lIEwzOjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIsVDMgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88Mz4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQzLFRhZyA+IGwzOwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlLCBpc19sZTI6OnZhbHVlLCBpc19sZTM6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0MzwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMSwgbDIsIGwzCi0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQzPCBGLFQxLFQyLFQzID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgLCBpbnRfPDQ+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQzPAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzLCB0eXBlbmFtZSBMNAotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQ0Ci17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlLCB0eXBlbmFtZSBMMjo6dHlwZSwgdHlwZW5hbWUgTDM6OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBMNDo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzLCB0eXBlbmFtZSBMNAotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQ0PCB0cnVlXyxUYWcsRixMMSxMMixMMyxMNCA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNDwKLSAgICAgICAgICBxdW90ZTQ8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XywgdHlwZW5hbWUgTDI6OnJlc3VsdF8sIHR5cGVuYW1lIEwzOjpyZXN1bHRfCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8IFQxLFQyLFQzLFQ0ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgLCBpbnRfPDQ+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQyLFRhZyA+IGwyOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMyxUYWcgPiBsMzsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDQsVGFnID4gbDQ7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlLCBpc19sZTI6OnZhbHVlLCBpc19sZTM6OnZhbHVlLCBpc19sZTQ6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0NDwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMSwgbDIsIGwzLCBsNAotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDQ8IEYsVDEsVDIsVDMsVDQgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88NT4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDQ8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIFA1ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMywgdHlwZW5hbWUgTDQsIHR5cGVuYW1lIEw1Ci0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDUKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlLCB0eXBlbmFtZSBMMzo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIEw0Ojp0eXBlLCB0eXBlbmFtZSBMNTo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIFA1ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMywgdHlwZW5hbWUgTDQsIHR5cGVuYW1lIEw1Ci0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDU8IHRydWVfLFRhZyxGLEwxLEwyLEwzLEw0LEw1ID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ1PAotICAgICAgICAgIHF1b3RlNTwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfLCB0eXBlbmFtZSBMMjo6cmVzdWx0XywgdHlwZW5hbWUgTDM6OnJlc3VsdF8KLSAgICAgICAgLCB0eXBlbmFtZSBMNDo6cmVzdWx0XywgdHlwZW5hbWUgTDU6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0Ci0gICAgICAgICwgdHlwZW5hbWUgUDUKLSAgICAgICAgPgotICAgICAgY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8IFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgLCBpbnRfPDU+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQyLFRhZyA+IGwyOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMyxUYWcgPiBsMzsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDQsVGFnID4gbDQ7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQ1LFRhZyA+IGw1OwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGw1Ojppc19sZSBpc19sZTU7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUsIGlzX2xlMzo6dmFsdWUsIGlzX2xlNDo6dmFsdWUKLSAgICAgICAgLCBpc19sZTU6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0NTwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMSwgbDIsIGwzLCBsNCwgbDUKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50Xzw2PgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kNTwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotLy8vIHNwZWNpYWwgY2FzZSBmb3IgJ3Byb3RlY3QnCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBsYW1iZGE8IG1wbDo6cHJvdGVjdDxUPixUYWcsIGludF88MT4gPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PFQ+IHJlc3VsdF87Ci0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi0vLy8gc3BlY2lhbGl6YXRpb25zIGZvciB0aGUgbWFpbiAnYmluZCcgZm9ybQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgLCBpbnRfPDY+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPiByZXN1bHRfOwotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgLCB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgLCB0eXBlbmFtZSBBcml0eQotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgbGFtYmRhPCBGLFRhZzEsQXJpdHkgPgotICAgICAgICAsIFRhZzIKLSAgICAgICAgLCBpbnRfPDM+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgRixUYWcyID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFRhZzEsVGFnMiA+IGwyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDE8IHF1b3RlMTxhdXg6OnRlbXBsYXRlX2FyaXR5PiwgdHlwZW5hbWUgbDE6OnJlc3VsdF8gPiBhcml0eV87Ci0gICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIGlmXzwgaXNfbGUsYXJpdHlfLEFyaXR5ID46OnR5cGUsIFRhZzIgPiBsMzsKLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0Mzxpc19sZSwgVGFnMiwgbXBsOjpsYW1iZGEsIGwxLCBsMiwgbDM+IGxlX3Jlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDMsIGxhbWJkYSkKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9ncmVhdGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvZ3JlYXRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2MDg4NTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9ncmVhdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJncmVhdGVyLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZ3JlYXRlcl9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZ3JlYXRlcl9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGdyZWF0ZXJfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGdyZWF0ZXIKLQotICAgIDogZ3JlYXRlcl9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGdyZWF0ZXJfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGdyZWF0ZXJfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgZ3JlYXRlciwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgZ3JlYXRlcikKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBncmVhdGVyX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA+IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvZ3JlYXRlcl9lcXVhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2dyZWF0ZXJfZXF1YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzU4NjI5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvZ3JlYXRlcl9lcXVhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiZ3JlYXRlcl9lcXVhbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGdyZWF0ZXJfZXF1YWxfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGdyZWF0ZXJfZXF1YWxfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBncmVhdGVyX2VxdWFsX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBncmVhdGVyX2VxdWFsCi0KLSAgICA6IGdyZWF0ZXJfZXF1YWxfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBncmVhdGVyX2VxdWFsX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBncmVhdGVyX2VxdWFsX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGdyZWF0ZXJfZXF1YWwsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGdyZWF0ZXJfZXF1YWwpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgPj0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9pbmhlcml0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvaW5oZXJpdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjZTE4OTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9pbmhlcml0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzOSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiaW5oZXJpdC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDIKLSAgICA6IFQxLCBUMgotewotICAgIHR5cGVkZWYgaW5oZXJpdDIgdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGluaGVyaXQyLCAoVDEsIFQyKSkKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSA+Ci1zdHJ1Y3QgaW5oZXJpdDI8IFQxLGVtcHR5X2Jhc2UgPgotewotICAgIHR5cGVkZWYgVDEgdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoMiwgaW5oZXJpdDIsIChUMSwgZW1wdHlfYmFzZSkpCi19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDIgPgotc3RydWN0IGluaGVyaXQyPCBlbXB0eV9iYXNlLFQyID4KLXsKLSAgICB0eXBlZGVmIFQyIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKDIsIGluaGVyaXQyLCAoZW1wdHlfYmFzZSwgVDIpKQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGluaGVyaXQyPCBlbXB0eV9iYXNlLGVtcHR5X2Jhc2UgPgotewotICAgIHR5cGVkZWYgZW1wdHlfYmFzZSB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygyLCBpbmhlcml0MiwgKGVtcHR5X2Jhc2UsIGVtcHR5X2Jhc2UpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDIsIGluaGVyaXQyKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDMKLSAgICA6IGluaGVyaXQyPAotICAgICAgICAgIHR5cGVuYW1lIGluaGVyaXQyPAotICAgICAgICAgICAgICBUMSwgVDIKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgLCBUMwotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAzCi0gICAgICAgICwgaW5oZXJpdDMKLSAgICAgICAgLCAoIFQxLCBUMiwgVDMpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygzLCBpbmhlcml0MykKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hLCB0eXBlbmFtZSBUNCA9IG5hCi0gICAgPgotc3RydWN0IGluaGVyaXQ0Ci0gICAgOiBpbmhlcml0MjwKLSAgICAgICAgICB0eXBlbmFtZSBpbmhlcml0MzwKLSAgICAgICAgICAgICAgVDEsIFQyLCBUMwotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAsIFQ0Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDQKLSAgICAgICAgLCBpbmhlcml0NAotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQyg0LCBpbmhlcml0NCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hLCB0eXBlbmFtZSBUNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNSA9IG5hCi0gICAgPgotc3RydWN0IGluaGVyaXQ1Ci0gICAgOiBpbmhlcml0MjwKLSAgICAgICAgICB0eXBlbmFtZSBpbmhlcml0NDwKLSAgICAgICAgICAgICAgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgLCBUNQotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgaW5oZXJpdDUKLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDUsIGluaGVyaXQ1KQotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDIgPSBlbXB0eV9iYXNlCi0gICAgLCB0eXBlbmFtZSBUMyA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQ0ID0gZW1wdHlfYmFzZQotICAgICwgdHlwZW5hbWUgVDUgPSBlbXB0eV9iYXNlCi0gICAgPgotc3RydWN0IGluaGVyaXQKLSAgICA6IGluaGVyaXQ1PCBUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW5oZXJpdDwgbmEsbmEsbmEsbmEsbmEgPgotewotICAgIHRlbXBsYXRlPAotCi0gICAgICAgICAgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1Ci0KLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgICAgICA6IGluaGVyaXQ8IFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19MQU1CREEoNSwgaW5oZXJpdCkKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19BUklUWSg1LCBpbmhlcml0KQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX1RFTVBMQVRFX0FSSVRZKDUsIDUsIGluaGVyaXQpCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvaXRlcl9mb2xkX2lmX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NDllMzE2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvaXRlcl9mb2xkX2lmX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTMzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMS0yMDAyCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJpdGVyX2ZvbGRfaWZfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciwgdHlwZW5hbWUgU3RhdGUgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9udWxsX3N0ZXAKLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwgYm9vbCA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZU9wCi0gICAgICAgICwgdHlwZW5hbWUgSXRlcmF0b3JPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBTdGF0ZU9wLFN0YXRlLEl0ZXJhdG9yID46OnR5cGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3JPcDo6dHlwZSBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8ZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlT3AKLSAgICAgICAgLCB0eXBlbmFtZSBJdGVyYXRvck9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICwgdHlwZW5hbWUgUHJlZGljYXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgUHJlZGljYXRlLFN0YXRlLEl0ZXJhdG9yID46OnR5cGUgbm90X2xhc3Q7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKG5vdF9sYXN0KTo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgSXRlcmF0b3IsU3RhdGUsRm9yd2FyZE9wLCBtcGw6Om5leHQ8SXRlcmF0b3I+ID4gaW1wbF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBQcmVkaWNhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgUHJlZGljYXRlLFN0YXRlLEl0ZXJhdG9yID46OnR5cGUgbm90X2xhc3Q7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKG5vdF9sYXN0KTo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgSXRlcmF0b3IsU3RhdGUsQmFja3dhcmRPcCwgaWRlbnRpdHk8SXRlcmF0b3I+ID4gaW1wbF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRQcmVkaWNhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkUHJlZGljYXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9pbXBsCi17Ci0gcHJpdmF0ZToKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9udWxsX3N0ZXA8IEl0ZXJhdG9yLFN0YXRlID4gZm9yd2FyZF9zdGVwMDsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDA6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAwOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwMTsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDE6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAxOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwMjsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDI6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAyOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwMzsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDM6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAzOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwNDsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6Om5vdF9sYXN0Ci0gICAgICAgICwgaXRlcl9mb2xkX2lmX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6Oml0ZXJhdG9yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6OnN0YXRlCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgLCBGb3J3YXJkUHJlZGljYXRlCi0gICAgICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgICAgICwgQmFja3dhcmRQcmVkaWNhdGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjppdGVyYXRvcgotICAgICAgICAgICAgLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjpzdGF0ZQotICAgICAgICAgICAgPgotICAgICAgICA+Ojp0eXBlIGJhY2t3YXJkX3N0ZXA0OwotCi0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMzo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXA0OjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMzsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAyOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDM6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAyOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDE6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMjo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDE7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMDo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAxOjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMDsKLSAgICAKLQotIHB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAwOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXA0OjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9pdGVyX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2l0ZXJfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTE1NWRhNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2l0ZXJfZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiaXRlcl9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgMCxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHN0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgMSxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMSBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgMixGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTEsaXRlcjEgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTIgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDMsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMixpdGVyMiA+Ojp0eXBlIHN0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMyBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgNCxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTEsaXRlcjEgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUyLGl0ZXIyID46OnR5cGUgc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMyxpdGVyMyA+Ojp0eXBlIHN0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlNCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGwKLXsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgIDQKLSAgICAgICAgLCBGaXJzdAotICAgICAgICAsIExhc3QKLSAgICAgICAgLCBTdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IGNodW5rXzsKLQotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjppdGVyYXRvcgotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBjaHVua186OnN0YXRlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gcmVzXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IC0xLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLSAgICA6IGl0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgIC0xCi0gICAgICAgICwgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxTdGF0ZSxGaXJzdCA+Ojp0eXBlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgLTEsTGFzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvbGFtYmRhX25vX2N0cHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9sYW1iZGFfbm9fY3Rwcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyODdhMWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9sYW1iZGFfbm9fY3Rwcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMjkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImxhbWJkYV9ub19jdHBzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICBib29sIEMxID0gZmFsc2UsIGJvb2wgQzIgPSBmYWxzZSwgYm9vbCBDMyA9IGZhbHNlLCBib29sIEM0ID0gZmFsc2UKLSAgICAsIGJvb2wgQzUgPSBmYWxzZQotICAgID4KLXN0cnVjdCBsYW1iZGFfb3IKLSAgICA6IHRydWVfCi17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGFtYmRhX29yPCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSA+Ci0gICAgOiBmYWxzZV8KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBBcml0eSA+IHN0cnVjdCBsYW1iZGFfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgIHR5cGVkZWYgaXNfcGxhY2Vob2xkZXI8VD4gaXNfbGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50XzwzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmczLCBUYWcsIGZhbHNlXyA+IGwzOwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTMpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlLCB0eXBlbmFtZSBsMzo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMywgVGFnLCBmYWxzZV8gPiBsMzsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzQsIFRhZywgZmFsc2VfID4gbDQ7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUzKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlNCk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUsIHR5cGVuYW1lIGwzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGw0Ojp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50Xzw1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmczLCBUYWcsIGZhbHNlXyA+IGwzOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnNCwgVGFnLCBmYWxzZV8gPiBsNDsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzUsIFRhZywgZmFsc2VfID4gbDU7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDU6OmlzX2xlIGlzX2xlNTsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTMpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGU0KTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlNSk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUsIHR5cGVuYW1lIGwzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGw0Ojp0eXBlLCB0eXBlbmFtZSBsNTo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgLCB0eXBlbmFtZSBQcm90ZWN0Ci0gICAgPgotc3RydWN0IGxhbWJkYQotewotICAgIC8vLyBNZXRhZnVuY3Rpb24gZm9yd2FyZGluZyBjb25mdXNlcyBNU1ZDIDYueAotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp0ZW1wbGF0ZV9hcml0eTxUPjo6dHlwZSBhcml0eV87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9pbXBsPGFyaXR5Xz4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBULFRhZyxQcm90ZWN0ID4gbF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxfOjp0eXBlIHR5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsXzo6aXNfbGUgaXNfbGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgzLCBsYW1iZGEsIChULCBUYWcsIFByb3RlY3QpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigxLCAzLCBsYW1iZGEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBpc19sYW1iZGFfZXhwcmVzc2lvbgotICAgIDogbGFtYmRhPFQ+Ojppc19sZQotewotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9sZXNzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvbGVzcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmOWExMGIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9sZXNzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJsZXNzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbGVzc19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbGVzc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbGVzc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbGVzc19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbGVzc19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGxlc3NfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGxlc3MKLQotICAgIDogbGVzc19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGxlc3NfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGxlc3NfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbGVzcywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbGVzcykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsZXNzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSA+IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvbGVzc19lcXVhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2xlc3NfZXF1YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTQ3MjZmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvbGVzc19lcXVhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAibGVzc19lcXVhbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGxlc3NfZXF1YWxfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGxlc3NfZXF1YWxfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGxlc3NfZXF1YWxfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBsZXNzX2VxdWFsX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBsZXNzX2VxdWFsCi0KLSAgICA6IGxlc3NfZXF1YWxfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBsZXNzX2VxdWFsX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBsZXNzX2VxdWFsX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGxlc3NfZXF1YWwsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGxlc3NfZXF1YWwpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgPD0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9saXN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvbGlzdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4ZWRiY2MuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9saXN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAibGlzdC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBsaXN0OwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MDwgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDI8IFQwLFQxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0NDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0NTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDU8IFQwLFQxLFQyLFQzLFQ0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0NzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0ODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBsaXN0Ci0gICAgOiBsaXN0MjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9saXN0X2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9saXN0X2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMWJiMzZiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvbGlzdF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyOCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAibGlzdF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAgPSBMT05HX01BWCwgbG9uZyBDMSA9IExPTkdfTUFYLCBsb25nIEMyID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzMgPSBMT05HX01BWCwgbG9uZyBDNCA9IExPTkdfTUFYLCBsb25nIEM1ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzYgPSBMT05HX01BWCwgbG9uZyBDNyA9IExPTkdfTUFYLCBsb25nIEM4ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzkgPSBMT05HX01BWCwgbG9uZyBDMTAgPSBMT05HX01BWCwgbG9uZyBDMTEgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTIgPSBMT05HX01BWCwgbG9uZyBDMTMgPSBMT05HX01BWCwgbG9uZyBDMTQgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTUgPSBMT05HX01BWCwgbG9uZyBDMTYgPSBMT05HX01BWCwgbG9uZyBDMTcgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTggPSBMT05HX01BWCwgbG9uZyBDMTkgPSBMT05HX01BWAotICAgID4KLXN0cnVjdCBsaXN0X2M7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDBfYzxUPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDBfYzxUPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MV9jPCBULEMwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxX2M8IFQsQzAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0Ml9jPCBULEMwLEMxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyX2M8IFQsQzAsQzEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0M19jPCBULEMwLEMxLEMyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QzX2M8IFQsQzAsQzEsQzIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0NF9jPCBULEMwLEMxLEMyLEMzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q0X2M8IFQsQzAsQzEsQzIsQzMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0NV9jPCBULEMwLEMxLEMyLEMzLEM0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q1X2M8IFQsQzAsQzEsQzIsQzMsQzQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0Nl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0N19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0OF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0OV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTFfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDExX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDEyX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTJfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTNfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTNfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxNV9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTVfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTZfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNgotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE3X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE4X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MThfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTlfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgID4KLXN0cnVjdCBsaXN0X2MKLSAgICA6IGxpc3QyMF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL21hcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL21hcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2Zjg5NjQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9tYXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJtYXAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgbWFwOwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDA8ICA+Ci17Ci0gICAgdHlwZWRlZiBtYXAwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDI8IFQwLFQxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDI8IFQwLFQxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDU8IFQwLFQxLFQyLFQzLFQ0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDU8IFQwLFQxLFQyLFQzLFQ0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTc8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBtYXAKLSAgICA6IG1hcDIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9taW51cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL21pbnVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjAwNmUyNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL21pbnVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAibWludXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBtaW51c19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbWludXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IG1pbnVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbWludXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbWludXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG1pbnVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbWludXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IG1pbnVzCi0gICAgOiBtaW51czwgbWludXM8IG1pbnVzPCBtaW51czwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIG1pbnVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IG1pbnVzPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IG1pbnVzPCBtaW51czwgbWludXM8IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBtaW51cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IG1pbnVzPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IG1pbnVzPCBtaW51czwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBtaW51cwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgbWludXM8IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IG1pbnVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbWludXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIG1pbnVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIG1pbnVzCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgbWludXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IG1pbnVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAtIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvbW9kdWx1cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL21vZHVsdXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMDA5Zjg5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvbW9kdWx1cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gIm1vZHVsdXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBtb2R1bHVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBtb2R1bHVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBtb2R1bHVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbW9kdWx1c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBtb2R1bHVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBtb2R1bHVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbW9kdWx1c190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbW9kdWx1cwotCi0gICAgOiBtb2R1bHVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbW9kdWx1c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbW9kdWx1c190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBtb2R1bHVzLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBtb2R1bHVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBtb2R1bHVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAlIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvbm90X2VxdWFsX3RvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvbm90X2VxdWFsX3RvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTQwNmE0Mi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL25vdF9lcXVhbF90by5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAibm90X2VxdWFsX3RvLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBub3RfZXF1YWxfdG9faW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IG5vdF9lcXVhbF90b19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG5vdF9lcXVhbF90b190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgbm90X2VxdWFsX3RvCi0KLSAgICA6IG5vdF9lcXVhbF90b19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIG5vdF9lcXVhbF90b190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbm90X2VxdWFsX3RvX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIG5vdF9lcXVhbF90bywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbm90X2VxdWFsX3RvKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgIT0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9vci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL29yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmJjMTlkMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL29yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBib29sIENfLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCA+Ci1zdHJ1Y3Qgb3JfaW1wbAotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCA+Ci1zdHJ1Y3Qgb3JfaW1wbDwgZmFsc2UsVDEsVDIsVDMsVDQgPgotICAgIDogb3JfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAsIFQyLCBUMywgVDQKLSAgICAgICAgLCBmYWxzZV8KLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG9yX2ltcGw8Ci0gICAgICAgICAgZmFsc2UKLSAgICAgICAgLCBmYWxzZV8sIGZhbHNlXywgZmFsc2VfLCBmYWxzZV8KLSAgICAgICAgPgotICAgIDogZmFsc2VfCi17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICAsIHR5cGVuYW1lIFQzID0gZmFsc2VfLCB0eXBlbmFtZSBUNCA9IGZhbHNlXywgdHlwZW5hbWUgVDUgPSBmYWxzZV8KLSAgICA+Ci1zdHJ1Y3Qgb3JfCi0KLSAgICA6IGF1eDo6b3JfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4KLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIG9yXwotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKAotICAgICAgMgotICAgICwgNQotICAgICwgb3JfCi0gICAgKQotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9wbGFjZWhvbGRlcnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9wbGFjZWhvbGRlcnMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzE3NjFkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvcGxhY2Vob2xkZXJzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEtMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAicGxhY2Vob2xkZXJzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPCAtMSA+IF87Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXykKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzsKLX0KLQotfX0KLQotLy8vIGFndXJ0LCAxNy9tYXIvMDI6IG9uZSBtb3JlIHBsYWNlaG9sZGVyIGZvciB0aGUgbGFzdCAnYXBwbHkjJyAKLS8vLyBzcGVjaWFsaXphdGlvbgotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8MT4gXzE7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfMSkKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzE7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwyPiBfMjsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8yKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfMjsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDM+IF8zOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzMpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol8zOwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8ND4gXzQ7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfNCkKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzQ7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzw1PiBfNTsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF81KQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfNTsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDY+IF82OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzYpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol82OwotfQotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9wbHVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvcGx1cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0YmQ2MzMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9wbHVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAicGx1cy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHBsdXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHBsdXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHBsdXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBwbHVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHBsdXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHBsdXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBwbHVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBwbHVzCi0gICAgOiBwbHVzPCBwbHVzPCBwbHVzPCBwbHVzPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgcGx1cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBwbHVzPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IHBsdXM8IHBsdXM8IHBsdXM8IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgcGx1czwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBwbHVzPCBwbHVzPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHBsdXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IHBsdXM8IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IHBsdXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBwbHVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBwbHVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHBsdXMKLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBwbHVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBwbHVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICArIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvcXVvdGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9xdW90ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmOWQxOGIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9xdW90ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwOAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAicXVvdGUuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3JldmVyc2VfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTZhNDM4Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3JldmVyc2VfZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5NSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAicmV2ZXJzZV9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTAgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTEgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMiBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTMgYmt3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTQgYmt3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlNCwgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuawotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIHJldmVyc2VfZm9sZF9pbXBsPAotICAgICAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgICAgICwgaXRlcjQKLSAgICAgICAgICAgICwgTGFzdAotICAgICAgICAgICAgLCBmd2Rfc3RhdGU0Ci0gICAgICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICA+IG5lc3RlZF9jaHVuazsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6c3RhdGUgYmt3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlNCwgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfc3RlcDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfbnVsbF9zdGVwCi17Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rPCAtMSA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGlzX3NhbWU8IEZpcnN0LExhc3QgPjo6dHlwZQotICAgICAgICAgICAgLCByZXZlcnNlX2ZvbGRfbnVsbF9zdGVwPCBMYXN0LFN0YXRlID4KLSAgICAgICAgICAgICwgcmV2ZXJzZV9mb2xkX3N0ZXA8IEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotICAgICAgICAgICAgPjo6dHlwZSByZXNfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIHJldmVyc2VfZm9sZF9jaHVuazwgLTEgPjo6dGVtcGxhdGUgcmVzdWx0XzwKLSAgICAgICAgICB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjxGb3J3YXJkT3AsU3RhdGUsIHR5cGVuYW1lIGRlcmVmPEZpcnN0Pjo6dHlwZT46OnR5cGUKLSAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gbmVzdGVkX3N0ZXA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwKLSAgICAgICAgICBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6OnN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgZGVyZWY8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgID46OnR5cGUgc3RhdGU7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbAotICAgIDogcmV2ZXJzZV9mb2xkX2NodW5rPE4+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Yzk4MDljLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOTUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gInJldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTAgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTIgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTMgYmt3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUzLGl0ZXIyID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTMsaXRlcjMgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlNCBia3dkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTQsaXRlcjMgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTMsaXRlcjIgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bmsKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTIsaXRlcjIgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMyxpdGVyMyA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgICAgICwgaXRlcjQKLSAgICAgICAgICAgICwgTGFzdAotICAgICAgICAgICAgLCBmd2Rfc3RhdGU0Ci0gICAgICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICA+IG5lc3RlZF9jaHVuazsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6c3RhdGUgYmt3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGU0LGl0ZXIzID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUzLGl0ZXIyID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9zdGVwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX251bGxfc3RlcAotewotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPCAtMSA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGlzX3NhbWU8IEZpcnN0LExhc3QgPjo6dHlwZQotICAgICAgICAgICAgLCByZXZlcnNlX2l0ZXJfZm9sZF9udWxsX3N0ZXA8IExhc3QsU3RhdGUgPgotICAgICAgICAgICAgLCByZXZlcnNlX2l0ZXJfZm9sZF9zdGVwPCBGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLSAgICAgICAgICAgID46OnR5cGUgcmVzXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPCAtMSA+Ojp0ZW1wbGF0ZSByZXN1bHRfPAotICAgICAgICAgIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsU3RhdGUsRmlyc3QgPjo6dHlwZQotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfc3RlcDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPAotICAgICAgICAgIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6c3RhdGUKLSAgICAgICAgLCBGaXJzdAotICAgICAgICA+Ojp0eXBlIHN0YXRlOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbAotICAgIDogcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8Tj4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9zZXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9zZXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYmM0NGY5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvc2V0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAic2V0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IHNldDsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQwPCAgPgotewotICAgIHR5cGVkZWYgc2V0MDwgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTxUMD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE8VDA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQyPCBUMCxUMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyPCBUMCxUMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MzwgVDAsVDEsVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MzwgVDAsVDEsVDIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ0PCBUMCxUMSxUMixUMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ0PCBUMCxUMSxUMixUMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ1PCBUMCxUMSxUMixUMyxUNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ1PCBUMCxUMSxUMixUMyxUNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NjwgVDAsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0OTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0OTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTY8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE3PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxODwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTk8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3Qgc2V0Ci0gICAgOiBzZXQyMDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvc2V0X2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9zZXRfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3MjQ5YjYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9zZXRfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gInNldF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAgPSBMT05HX01BWCwgbG9uZyBDMSA9IExPTkdfTUFYLCBsb25nIEMyID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzMgPSBMT05HX01BWCwgbG9uZyBDNCA9IExPTkdfTUFYLCBsb25nIEM1ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzYgPSBMT05HX01BWCwgbG9uZyBDNyA9IExPTkdfTUFYLCBsb25nIEM4ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzkgPSBMT05HX01BWCwgbG9uZyBDMTAgPSBMT05HX01BWCwgbG9uZyBDMTEgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTIgPSBMT05HX01BWCwgbG9uZyBDMTMgPSBMT05HX01BWCwgbG9uZyBDMTQgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTUgPSBMT05HX01BWCwgbG9uZyBDMTYgPSBMT05HX01BWCwgbG9uZyBDMTcgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTggPSBMT05HX01BWCwgbG9uZyBDMTkgPSBMT05HX01BWAotICAgID4KLXN0cnVjdCBzZXRfYzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDBfYzxUPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MF9jPFQ+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MV9jPCBULEMwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDFfYzwgVCxDMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0Ml9jPCBULEMwLEMxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDJfYzwgVCxDMCxDMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0M19jPCBULEMwLEMxLEMyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDNfYzwgVCxDMCxDMSxDMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0NF9jPCBULEMwLEMxLEMyLEMzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDRfYzwgVCxDMCxDMSxDMixDMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0NV9jPCBULEMwLEMxLEMyLEMzLEM0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDVfYzwgVCxDMCxDMSxDMixDMyxDNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0Nl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0N19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0OF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0OV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzkKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTFfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTFfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDEyX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTNfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxM19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE0X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxNV9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTZfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE3X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE4X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTlfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgPgotc3RydWN0IHNldF9jCi0gICAgOiBzZXQyMF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDIwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvc2hpZnRfbGVmdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3NoaWZ0X2xlZnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzUwNTIxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvc2hpZnRfbGVmdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAic2hpZnRfbGVmdC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHNoaWZ0X2xlZnRfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHNoaWZ0X2xlZnRfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHNoaWZ0X2xlZnRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBzaGlmdF9sZWZ0X3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBzaGlmdF9sZWZ0Ci0KLSAgICA6IHNoaWZ0X2xlZnRfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBzaGlmdF9sZWZ0X3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBzaGlmdF9sZWZ0X3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIHNoaWZ0X2xlZnQsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIHNoaWZ0X2xlZnQpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOLCB0eXBlbmFtZSBTID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBOOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgPDwgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKFMpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3NoaWZ0X3JpZ2h0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvc2hpZnRfcmlnaHQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OGRiOTMxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvc2hpZnRfcmlnaHQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gInNoaWZ0X3JpZ2h0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHNoaWZ0X3JpZ2h0X2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBzaGlmdF9yaWdodF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHNoaWZ0X3JpZ2h0X3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBzaGlmdF9yaWdodAotCi0gICAgOiBzaGlmdF9yaWdodF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHNoaWZ0X3JpZ2h0X3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBzaGlmdF9yaWdodF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBzaGlmdF9yaWdodCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgc2hpZnRfcmlnaHQpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTiwgdHlwZW5hbWUgUyA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgTjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgID4+IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChTKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC90ZW1wbGF0ZV9hcml0eS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3RlbXBsYXRlX2FyaXR5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWQ5ZjBmMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3RlbXBsYXRlX2FyaXR5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJ0ZW1wbGF0ZV9hcml0eS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBib29sID4KLXN0cnVjdCB0ZW1wbGF0ZV9hcml0eV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IG1wbDo6aW50XzwgLTEgPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHRlbXBsYXRlX2FyaXR5X2ltcGw8dHJ1ZT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogRjo6YXJpdHkKLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGID4KLXN0cnVjdCB0ZW1wbGF0ZV9hcml0eQotICAgIDogdGVtcGxhdGVfYXJpdHlfaW1wbDwgOjpuZG5ib29zdDo6bXBsOjphdXg6Omhhc19yZWJpbmQ8Rj46OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPEY+Ci17Ci19OwotCi19fX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC90aW1lcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3RpbWVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjQwYzA4My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3RpbWVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAidGltZXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCB0aW1lc19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgdGltZXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHRpbWVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgdGltZXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgdGltZXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHRpbWVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgdGltZXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IHRpbWVzCi0gICAgOiB0aW1lczwgdGltZXM8IHRpbWVzPCB0aW1lczwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIHRpbWVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IHRpbWVzPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IHRpbWVzPCB0aW1lczwgdGltZXM8IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IHRpbWVzPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IHRpbWVzPCB0aW1lczwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgdGltZXM8IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IHRpbWVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgdGltZXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIHRpbWVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHRpbWVzCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgdGltZXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IHRpbWVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAqIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvdW5wYWNrX2FyZ3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC91bnBhY2tfYXJncy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkMGMzMjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC91bnBhY2tfYXJncy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAidW5wYWNrX2FyZ3MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgaW50IHNpemUsIHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCAwLEYsQXJncyA+Ci0gICAgOiBhcHBseTA8Ci0gICAgICAgICAgRgotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgMSxGLEFyZ3MgPgotICAgIDogYXBwbHkxPAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgMixGLEFyZ3MgPgotICAgIDogYXBwbHkyPAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDMsRixBcmdzID4KLSAgICA6IGFwcGx5MzwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywyID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDQsRixBcmdzID4KLSAgICA6IGFwcGx5NDwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywyID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMyA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCA1LEYsQXJncyA+Ci0gICAgOiBhcHBseTU8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDMgPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsNCA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IHVucGFja19hcmdzCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEFyZ3MgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp1bnBhY2tfYXJnc19pbXBsPAotICAgICAgICAgICAgICBzaXplPEFyZ3M+Ojp2YWx1ZQotICAgICAgICAgICAgLCBGCi0gICAgICAgICAgICAsIEFyZ3MKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX1BBU1NfVEhST1VHSF9MQU1CREFfU1BFQygxLCB1bnBhY2tfYXJncykKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC92ZWN0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC92ZWN0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOWFiODYwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvdmVjdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAidmVjdG9yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IHZlY3RvcjsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IwPCAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMDwgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTxUMD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE8VDA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IyPCBUMCxUMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyPCBUMCxUMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMzwgVDAsVDEsVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMzwgVDAsVDEsVDIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I0PCBUMCxUMSxUMixUMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I0PCBUMCxUMSxUMixUMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I1PCBUMCxUMSxUMixUMyxUNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I1PCBUMCxUMSxUMixUMyxUNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNjwgVDAsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTY8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE3PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxODwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTk8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yCi0gICAgOiB2ZWN0b3IyMDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvdmVjdG9yX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC92ZWN0b3JfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwN2JmZDguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC92ZWN0b3JfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMDkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDgKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gInZlY3Rvcl9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAgPSBMT05HX01BWCwgbG9uZyBDMSA9IExPTkdfTUFYLCBsb25nIEMyID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzMgPSBMT05HX01BWCwgbG9uZyBDNCA9IExPTkdfTUFYLCBsb25nIEM1ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzYgPSBMT05HX01BWCwgbG9uZyBDNyA9IExPTkdfTUFYLCBsb25nIEM4ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzkgPSBMT05HX01BWCwgbG9uZyBDMTAgPSBMT05HX01BWCwgbG9uZyBDMTEgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTIgPSBMT05HX01BWCwgbG9uZyBDMTMgPSBMT05HX01BWCwgbG9uZyBDMTQgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTUgPSBMT05HX01BWCwgbG9uZyBDMTYgPSBMT05HX01BWCwgbG9uZyBDMTcgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTggPSBMT05HX01BWCwgbG9uZyBDMTkgPSBMT05HX01BWAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjBfYzxUPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMF9jPFQ+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMV9jPCBULCBUKEMwKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxX2M8IFQsIFQoQzApID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IyX2M8IFQsIFQoQzApLCBUKEMxKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyX2M8IFQsIFQoQzApLCBUKEMxKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yM19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjNfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I0X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I1X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I1X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yNl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjZfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I3X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNwotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I4X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I4X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yOV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjlfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTBfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTBfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjExX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEyX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTNfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMikgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTNfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMikgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMwotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE0X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMykgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE1X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTZfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTZfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNgotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE3X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNikgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE4X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNykgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTlfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTlfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCkgPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYwotICAgIDogdmVjdG9yMjBfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCksIFQoQzE5KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyMF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNyksIFQoQzE4KSwgVChDMTkpID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9hZHZhbmNlX2JhY2t3YXJkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9hZHZhbmNlX2JhY2t3YXJkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGUwYzgyOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYWR2YW5jZV9iYWNrd2FyZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2FkdmFuY2VfYmFja3dhcmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgbG9uZyBOID4gc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwwPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwxPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwzPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDw0PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9iYWNrd2FyZDw0PgotICAgICAgICAgICAgLCBJdGVyYXRvcgotICAgICAgICAgICAgPjo6dHlwZSBjaHVua19yZXN1bHRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfYmFja3dhcmQ8KAotICAgICAgICAgICAgICAgIChOIC0gNCkgPCAwCi0gICAgICAgICAgICAgICAgICAgID8gMAotICAgICAgICAgICAgICAgICAgICA6IE4gLSA0Ci0gICAgICAgICAgICAgICAgICAgICk+Ci0gICAgICAgICAgICAsIGNodW5rX3Jlc3VsdF8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9hZHZhbmNlX2ZvcndhcmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2FkdmFuY2VfZm9yd2FyZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzYTVhZmQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2FkdmFuY2VfZm9yd2FyZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2FkdmFuY2VfZm9yd2FyZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBsb25nIE4gPiBzdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkOwotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwwPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDE+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwzPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDQ+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICB0eXBlZGVmIGl0ZXI0IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9mb3J3YXJkPDQ+Ci0gICAgICAgICAgICAsIEl0ZXJhdG9yCi0gICAgICAgICAgICA+Ojp0eXBlIGNodW5rX3Jlc3VsdF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9mb3J3YXJkPCgKLSAgICAgICAgICAgICAgICAoTiAtIDQpIDwgMAotICAgICAgICAgICAgICAgICAgICA/IDAKLSAgICAgICAgICAgICAgICAgICAgOiBOIC0gNAotICAgICAgICAgICAgICAgICAgICApPgotICAgICAgICAgICAgLCBjaHVua19yZXN1bHRfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9hbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YzFiOTVhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9hbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGJvb2wgQ18sIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0ID4KLXN0cnVjdCBhbmRfaW1wbAotICAgIDogZmFsc2VfCi17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQgPgotc3RydWN0IGFuZF9pbXBsPCB0cnVlLFQxLFQyLFQzLFQ0ID4KLSAgICA6IGFuZF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICwgVDIsIFQzLCBUNAotICAgICAgICAsIHRydWVfCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhbmRfaW1wbDwKLSAgICAgICAgICB0cnVlCi0gICAgICAgICwgdHJ1ZV8sIHRydWVfLCB0cnVlXywgdHJ1ZV8KLSAgICAgICAgPgotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgICwgdHlwZW5hbWUgVDMgPSB0cnVlXywgdHlwZW5hbWUgVDQgPSB0cnVlXywgdHlwZW5hbWUgVDUgPSB0cnVlXwotICAgID4KLXN0cnVjdCBhbmRfCi0KLSAgICA6IGF1eDo6YW5kX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ci0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBhbmRfCi0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoCi0gICAgICAyCi0gICAgLCA1Ci0gICAgLCBhbmRfCi0gICAgKQotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2FwcGx5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9hcHBseS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwZjcyYjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2FwcGx5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcHBseS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5MAotCi0gICAgOiBhcHBseV93cmFwMDwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMQotICAgICAgICAsIGFwcGx5MAotICAgICAgICAsIChGICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5PCBGLG5hLG5hLG5hLG5hLG5hID4KLSAgICA6IGFwcGx5MDxGPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseTEKLQotICAgIDogYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMgotICAgICAgICAsIGFwcGx5MQotICAgICAgICAsIChGLCBUMSkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseTwgRixUMSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBhcHBseTE8IEYsVDEgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkyCi0KLSAgICA6IGFwcGx5X3dyYXAyPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAzCi0gICAgICAgICwgYXBwbHkyCi0gICAgICAgICwgKEYsIFQxLCBUMikKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsVDIsbmEsbmEsbmEgPgotICAgIDogYXBwbHkyPCBGLFQxLFQyID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseTMKLQotICAgIDogYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyLCBUMwotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA0Ci0gICAgICAgICwgYXBwbHkzCi0gICAgICAgICwgKEYsIFQxLCBUMiwgVDMpCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseTwgRixUMSxUMixUMyxuYSxuYSA+Ci0gICAgOiBhcHBseTM8IEYsVDEsVDIsVDMgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseTQKLQotICAgIDogYXBwbHlfd3JhcDQ8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGFwcGx5NAotICAgICAgICAsIChGLCBUMSwgVDIsIFQzLCBUNCkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseTwgRixUMSxUMixUMyxUNCxuYSA+Ci0gICAgOiBhcHBseTQ8IEYsVDEsVDIsVDMsVDQgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk1Ci0KLSAgICA6IGFwcGx5X3dyYXA1PAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA2Ci0gICAgICAgICwgYXBwbHk1Ci0gICAgICAgICwgKEYsIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkKLSAgICA6IGFwcGx5NTwgRixUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYXBwbHlfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9hcHBseV9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiY2NjOTRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9hcHBseV9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXBwbHlfZndkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseTA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkxOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseTI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseTM7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk0OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseTU7Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9hcHBseV93cmFwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9hcHBseV93cmFwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWM5MDIwMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYXBwbHlfd3JhcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcHBseV93cmFwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLQotICAgICwgdHlwZW5hbWUgaGFzX2FwcGx5XyA9IHR5cGVuYW1lIGF1eDo6aGFzX2FwcGx5PEY+Ojp0eXBlCi0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDAKLQotICAgIDogRjo6dGVtcGxhdGUgYXBwbHk8ICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDA8IEYsdHJ1ZV8gPgotICAgIDogRjo6YXBwbHkKLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMQotCi0gICAgOiBGOjp0ZW1wbGF0ZSBhcHBseTxUMT4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDIKLQotICAgIDogRjo6dGVtcGxhdGUgYXBwbHk8IFQxLFQyID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAzCi0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PCBUMSxUMixUMyA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDQKLQotICAgIDogRjo6dGVtcGxhdGUgYXBwbHk8IFQxLFQyLFQzLFQ0ID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDUKLQotICAgIDogRjo6dGVtcGxhdGUgYXBwbHk8IFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9hcmcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2FyZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1NDQ3NmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2FyZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMS0yMDAyCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXJnLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwgLTEgPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IC0xKTsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTEgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8MT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAxKTsKLSAgICB0eXBlZGVmIGFyZzwyPiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwyPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDIpOwotICAgIHR5cGVkZWYgYXJnPDM+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUyIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDM+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMyk7Ci0gICAgdHlwZWRlZiBhcmc8ND4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTMgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8ND4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSA0KTsKLSAgICB0eXBlZGVmIGFyZzw1PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVNCB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzw1PgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDUpOwotICAgIHR5cGVkZWYgYXJnPDY+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFU1IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OT05UWVBFX0FSSVRZX1NQRUMoMSxpbnQsIGFyZykKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9iYXNpY19iaW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9iYXNpY19iaW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTdlZjNmZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYmFzaWNfYmluZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vYmFzaWNfYmluZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmcKLXsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPCBhcmc8Tj4sIFUxLCBVMiwgVTMsIFU0LCBVNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTxtcGw6OmFyZzxOPiwgVTEsIFUyLCBVMywgVTQsIFU1Pjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPCBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4sIFUxLCBVMiwgVTMsIFU0LCBVNSA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgaW50IGR1bW15XwotICAgID4KLXN0cnVjdCBiaW5kMAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAwPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDA8Rj4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQwPEY+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMSwgYmluZDApCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMSwgYmluZDApCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgaW50IGR1bW15XwotICAgID4KLXN0cnVjdCBiaW5kPCBGLG5hLG5hLG5hLG5hLG5hID4KLSAgICA6IGJpbmQwPEY+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCBpbnQgZHVtbXlfCi0gICAgPgotc3RydWN0IGJpbmQxCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzCi0gICAgLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQxPCBGLFQxID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQxPCBGLFQxID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygyLCBiaW5kMSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygyLCBiaW5kMSkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgaW50IGR1bW15XwotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLG5hLG5hLG5hLG5hID4KLSAgICA6IGJpbmQxPCBGLFQxID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCBpbnQgZHVtbXlfCi0gICAgPgotc3RydWN0IGJpbmQyCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIKLSAgICAsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQyPCBGLFQxLFQyID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQyPCBGLFQxLFQyID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygzLCBiaW5kMikKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygzLCBiaW5kMikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIGludCBkdW1teV8KLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxUMixuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMjwgRixUMSxUMiA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIGludCBkdW1teV8KLSAgICA+Ci1zdHJ1Y3QgYmluZDMKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMzwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFUxCi0gICAgLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDM8IEYsVDEsVDIsVDMgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDM8IEYsVDEsVDIsVDMgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDQsIGJpbmQzKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDQsIGJpbmQzKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIGludCBkdW1teV8KLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxUMixUMyxuYSxuYSA+Ci0gICAgOiBiaW5kMzwgRixUMSxUMixUMyA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCBpbnQgZHVtbXlfCi0gICAgPgotc3RydWN0IGJpbmQ0Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQ0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA0PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDQ8IEYsVDEsVDIsVDMsVDQgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDQ8IEYsVDEsVDIsVDMsVDQgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDUsIGJpbmQ0KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDUsIGJpbmQ0KQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCBpbnQgZHVtbXlfCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsVDIsVDMsVDQsbmEgPgotICAgIDogYmluZDQ8IEYsVDEsVDIsVDMsVDQgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIGludCBkdW1teV8KLSAgICA+Ci1zdHJ1Y3QgYmluZDUKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQ1LFUxLFUyLFUzLFU0LFU1ID4gdDU7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlLCB0eXBlbmFtZSB0NTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNiwgYmluZDUpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNiwgYmluZDUpCi0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCBpbnQgZHVtbXlfCi0gICAgPgotc3RydWN0IGJpbmQKLSAgICA6IGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLX07Ci0KLS8vLyBpZl8vZXZhbF9pZiBzcGVjaWFsaXphdGlvbnMKLXRlbXBsYXRlPCB0ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IGNsYXNzIEYsIHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgcXVvdGUzOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IHN0cnVjdCBpZl87Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzPAotICAgICAgcXVvdGUzPCBpZl8sVGFnID4KLSAgICAsIFQxLCBUMiwgVDMKLSAgICA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBtcGw6OmFyZzwxPiBuMTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICAsIHQyLCB0MwotICAgICAgICAgICAgPjo6dHlwZSBmXzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZl86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2JpbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2JpbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTZmNjNkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9iaW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUxNSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYmluZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmcKLXsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgdHlwZW5hbWUgQXJnCi0gICAgPgotc3RydWN0IHJlcGxhY2VfdW5uYW1lZF9hcmcKLXsKLSAgICB0eXBlZGVmIEFyZyBuZXh0OwotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBBcmcKLSAgICA+Ci1zdHJ1Y3QgcmVwbGFjZV91bm5hbWVkX2FyZzwgYXJnPCAtMSA+LCBBcmcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgQXJnOjpuZXh0IG5leHQ7Ci0gICAgdHlwZWRlZiBBcmcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPCBhcmc8Tj4sIFUxLCBVMiwgVTMsIFU0LCBVNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTxtcGw6OmFyZzxOPiwgVTEsIFUyLCBVMywgVTQsIFU1Pjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPCBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4sIFUxLCBVMiwgVTMsIFU0LCBVNSA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgaW50IGR1bW15XwotICAgID4KLXN0cnVjdCBiaW5kMAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQwPEY+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMDxGPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDEsIGJpbmQwKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDEsIGJpbmQwKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIGludCBkdW1teV8KLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixuYSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMDxGPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgaW50IGR1bW15XwotICAgID4KLXN0cnVjdCBiaW5kMQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMwotICAgICwgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMTwgRixUMSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMTwgRixUMSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMiwgYmluZDEpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMiwgYmluZDEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIGludCBkdW1teV8KLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMTwgRixUMSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgaW50IGR1bW15XwotICAgID4KLXN0cnVjdCBiaW5kMgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIKLSAgICAsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQyPCBGLFQxLFQyID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQyPCBGLFQxLFQyID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygzLCBiaW5kMikKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygzLCBiaW5kMikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIGludCBkdW1teV8KLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxUMixuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMjwgRixUMSxUMiA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIGludCBkdW1teV8KLSAgICA+Ci1zdHJ1Y3QgYmluZDMKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBVMQotICAgICwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQzPCBGLFQxLFQyLFQzID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQzPCBGLFQxLFQyLFQzID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg0LCBiaW5kMykKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg0LCBiaW5kMykKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCBpbnQgZHVtbXlfCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsVDIsVDMsbmEsbmEgPgotICAgIDogYmluZDM8IEYsVDEsVDIsVDMgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgaW50IGR1bW15XwotICAgID4KLXN0cnVjdCBiaW5kNAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUNCxuNCA+IHI0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0Ojp0eXBlIGE0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0OjpuZXh0IG41OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgaW50IGR1bW15XwotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLFQyLFQzLFQ0LG5hID4KLSAgICA6IGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCBpbnQgZHVtbXlfCi0gICAgPgotc3RydWN0IGJpbmQ1Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ0LG40ID4gcjQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6OnR5cGUgYTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6Om5leHQgbjU7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ1LG41ID4gcjU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjU6OnR5cGUgYTU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjU6Om5leHQgbjY7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNSxVMSxVMixVMyxVNCxVNSA+IHQ1OwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlLCB0eXBlbmFtZSB0NTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNiwgYmluZDUpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNiwgYmluZDUpCi0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCBpbnQgZHVtbXlfCi0gICAgPgotc3RydWN0IGJpbmQKLSAgICA6IGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLX07Ci0KLS8vLyBpZl8vZXZhbF9pZiBzcGVjaWFsaXphdGlvbnMKLXRlbXBsYXRlPCB0ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IGNsYXNzIEYsIHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgcXVvdGUzOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IHN0cnVjdCBpZl87Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzPAotICAgICAgcXVvdGUzPCBpZl8sVGFnID4KLSAgICAsIFQxLCBUMiwgVDMKLSAgICA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBtcGw6OmFyZzwxPiBuMTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICAsIHQyLCB0MwotICAgICAgICAgICAgPjo6dHlwZSBmXzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZl86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2JpbmRfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9iaW5kX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyZWVlYjkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2JpbmRfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpbmRfZndkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIGludCBkdW1teV8gPSAwCi0gICAgPgotc3RydWN0IGJpbmQ7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgaW50IGR1bW15XyA9IDAKLSAgICA+Ci1zdHJ1Y3QgYmluZDA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIGludCBkdW1teV8gPSAwCi0gICAgPgotc3RydWN0IGJpbmQxOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgaW50IGR1bW15XyA9IDAKLSAgICA+Ci1zdHJ1Y3QgYmluZDI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgaW50IGR1bW15XyA9IDAKLSAgICA+Ci1zdHJ1Y3QgYmluZDM7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIGludCBkdW1teV8gPSAwCi0gICAgPgotc3RydWN0IGJpbmQ0OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgaW50IGR1bW15XyA9IDAKLSAgICA+Ci1zdHJ1Y3QgYmluZDU7Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9iaXRhbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2JpdGFuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkOGNjNWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2JpdGFuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYml0YW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBiaXRhbmRfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdGFuZF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGJpdGFuZF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXRhbmRfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdGFuZF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGJpdGFuZF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXwotICAgIDogYml0YW5kXzwgYml0YW5kXzwgYml0YW5kXzwgYml0YW5kXzwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdGFuZF8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXzwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBiaXRhbmRfPCBiaXRhbmRfPCBiaXRhbmRfPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0YW5kXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IGJpdGFuZF88IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogYml0YW5kXzwgYml0YW5kXzwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRhbmRfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBiaXRhbmRfPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBiaXRhbmRfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBiaXRhbmRfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGJpdGFuZF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRhbmRfCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgYml0YW5kXykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYml0YW5kX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAmIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9iaXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYml0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTgyNDdiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9iaXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYml0b3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBiaXRvcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0b3JfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdG9yX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0b3JfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0b3JfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdG9yX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0b3JfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdG9yXwotICAgIDogYml0b3JfPCBiaXRvcl88IGJpdG9yXzwgYml0b3JfPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGJpdG9yXzwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBiaXRvcl88IGJpdG9yXzwgYml0b3JfPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGJpdG9yXzwgYml0b3JfPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBiaXRvcl9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGJpdG9yX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBiaXRvcl90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXRvcl8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGJpdG9yX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICB8IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9iaXR4b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2JpdHhvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmMjc2YjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2JpdHhvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYml0eG9yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBiaXR4b3JfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdHhvcl9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGJpdHhvcl9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXR4b3JfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdHhvcl9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGJpdHhvcl90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXwotICAgIDogYml0eG9yXzwgYml0eG9yXzwgYml0eG9yXzwgYml0eG9yXzwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdHhvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXzwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBiaXR4b3JfPCBiaXR4b3JfPCBiaXR4b3JfPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0eG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IGJpdHhvcl88IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogYml0eG9yXzwgYml0eG9yXzwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXR4b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBiaXR4b3JfPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBiaXR4b3JfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBiaXR4b3JfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGJpdHhvcl90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXR4b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgYml0eG9yXykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYml0eG9yX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICBeIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9kZXF1ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvZGVxdWUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NjMxZjY2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9kZXF1ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZGVxdWUuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IwPCAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMDwgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMzwgVDAsVDEsVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMzwgVDAsVDEsVDIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNjwgVDAsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxODwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBkZXF1ZQotICAgIDogdmVjdG9yMjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvZGl2aWRlcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvZGl2aWRlcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiYzQ0MzMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2RpdmlkZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2RpdmlkZXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBkaXZpZGVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBkaXZpZGVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBkaXZpZGVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZGl2aWRlc19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBkaXZpZGVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBkaXZpZGVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZGl2aWRlc190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlcwotICAgIDogZGl2aWRlczwgZGl2aWRlczwgZGl2aWRlczwgZGl2aWRlczwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGRpdmlkZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlczwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBkaXZpZGVzPCBkaXZpZGVzPCBkaXZpZGVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IGRpdmlkZXM8IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogZGl2aWRlczwgZGl2aWRlczwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBkaXZpZGVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBkaXZpZGVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBkaXZpZGVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZGl2aWRlc190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZGl2aWRlc190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBkaXZpZGVzCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgZGl2aWRlcykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGl2aWRlc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgLyBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvZXF1YWxfdG8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2VxdWFsX3RvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjQ1NTg4NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvZXF1YWxfdG8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZXF1YWxfdG8uaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBlcXVhbF90b19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZXF1YWxfdG9faW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGVxdWFsX3RvX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZXF1YWxfdG9faW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZXF1YWxfdG9faW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZXF1YWxfdG9fdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGVxdWFsX3RvCi0KLSAgICA6IGVxdWFsX3RvX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZXF1YWxfdG9fdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGVxdWFsX3RvX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGVxdWFsX3RvLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBlcXVhbF90bykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlcXVhbF90b19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgID09IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5NGNkNDEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAwLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgMSxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMSBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDIsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUyIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgMyxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUzIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgNCxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIHN0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlNCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsCi17Ci0gICAgdHlwZWRlZiBmb2xkX2ltcGw8Ci0gICAgICAgICAgNAotICAgICAgICAsIEZpcnN0Ci0gICAgICAgICwgTGFzdAotICAgICAgICAsIFN0YXRlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gY2h1bmtfOwotCi0gICAgdHlwZWRlZiBmb2xkX2ltcGw8Ci0gICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjppdGVyYXRvcgotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBjaHVua186OnN0YXRlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gcmVzXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAtMSxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci0gICAgOiBmb2xkX2ltcGw8Ci0gICAgICAgICAgLTEKLSAgICAgICAgLCB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjxGb3J3YXJkT3AsU3RhdGUsIHR5cGVuYW1lIGRlcmVmPEZpcnN0Pjo6dHlwZT46OnR5cGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgLTEsTGFzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9mdWxsX2xhbWJkYS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvZnVsbF9sYW1iZGEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjFlYjU0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9mdWxsX2xhbWJkYS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MzYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9mdWxsX2xhbWJkYS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgYm9vbCBDMSA9IGZhbHNlLCBib29sIEMyID0gZmFsc2UsIGJvb2wgQzMgPSBmYWxzZSwgYm9vbCBDNCA9IGZhbHNlCi0gICAgLCBib29sIEM1ID0gZmFsc2UKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhX29yCi0gICAgOiB0cnVlXwotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxhbWJkYV9vcjwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UgPgotICAgIDogZmFsc2VfCi17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgIAotICAgID4KLXN0cnVjdCBsYW1iZGEKLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIFQgcmVzdWx0XzsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBpc19sYW1iZGFfZXhwcmVzc2lvbgotICAgIDogbGFtYmRhPFQ+Ojppc19sZQotewotfTsKLQotdGVtcGxhdGU8IGludCBOLCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IGxhbWJkYTwgYXJnPE4+LCBUYWcgPgotewotICAgIHR5cGVkZWYgdHJ1ZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBtcGw6OmFyZzxOPiByZXN1bHRfOyAvLyBxdWFsaWZpZWQgZm9yIHRoZSBzYWtlIG9mIE1JUFNwcm8gNy40MQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDA8Rj4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDA8Ci0gICAgICAgICAgRgotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MQotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQxPCB0cnVlXyxUYWcsRixMMSA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMTwKLSAgICAgICAgICBxdW90ZTE8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjxUMT4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0MTwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMQotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDE8IEYsVDEgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMTwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MgotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMgotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQyPCB0cnVlXyxUYWcsRixMMSxMMiA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMjwKLSAgICAgICAgICBxdW90ZTI8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XywgdHlwZW5hbWUgTDI6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlLCBpc19sZTI6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0MjwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMSwgbDIKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kMjwgRixUMSxUMiA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQyPAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMwotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQzCi17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlLCB0eXBlbmFtZSBMMjo6dHlwZSwgdHlwZW5hbWUgTDM6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDM8IHRydWVfLFRhZyxGLEwxLEwyLEwzID4KLXsKLSAgICB0eXBlZGVmIGJpbmQzPAotICAgICAgICAgIHF1b3RlMzwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfLCB0eXBlbmFtZSBMMjo6cmVzdWx0XywgdHlwZW5hbWUgTDM6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMixUMyA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQyLFRhZyA+IGwyOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMyxUYWcgPiBsMzsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZSwgaXNfbGUzOjp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDM8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyLCBsMwotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kMzwgRixUMSxUMixUMyA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQzPAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzLCB0eXBlbmFtZSBMNAotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQ0Ci17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlLCB0eXBlbmFtZSBMMjo6dHlwZSwgdHlwZW5hbWUgTDM6OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBMNDo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzLCB0eXBlbmFtZSBMNAotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQ0PCB0cnVlXyxUYWcsRixMMSxMMixMMyxMNCA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNDwKLSAgICAgICAgICBxdW90ZTQ8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XywgdHlwZW5hbWUgTDI6OnJlc3VsdF8sIHR5cGVuYW1lIEwzOjpyZXN1bHRfCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8IFQxLFQyLFQzLFQ0ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQzLFRhZyA+IGwzOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUNCxUYWcgPiBsNDsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUsIGlzX2xlMzo6dmFsdWUsIGlzX2xlNDo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQ0PAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMiwgbDMsIGw0Ci0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kNDwgRixUMSxUMixUMyxUNCA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQ0PAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBQNSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0LCB0eXBlbmFtZSBMNQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQ1Ci17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlLCB0eXBlbmFtZSBMMjo6dHlwZSwgdHlwZW5hbWUgTDM6OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBMNDo6dHlwZSwgdHlwZW5hbWUgTDU6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBQNSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0LCB0eXBlbmFtZSBMNQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQ1PCB0cnVlXyxUYWcsRixMMSxMMixMMyxMNCxMNSA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNTwKLSAgICAgICAgICBxdW90ZTU8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XywgdHlwZW5hbWUgTDI6OnJlc3VsdF8sIHR5cGVuYW1lIEwzOjpyZXN1bHRfCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnJlc3VsdF8sIHR5cGVuYW1lIEw1OjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNAotICAgICAgICAsIHR5cGVuYW1lIFA1Ci0gICAgICAgID4KLSAgICAgIGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMixUMyxUNCxUNSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQyLFRhZyA+IGwyOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMyxUYWcgPiBsMzsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDQsVGFnID4gbDQ7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQ1LFRhZyA+IGw1OwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGw1Ojppc19sZSBpc19sZTU7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUsIGlzX2xlMzo6dmFsdWUsIGlzX2xlNDo6dmFsdWUKLSAgICAgICAgLCBpc19sZTU6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0NTwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMSwgbDIsIGwzLCBsNCwgbDUKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQ1PAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi0vLy8gc3BlY2lhbCBjYXNlIGZvciAncHJvdGVjdCcKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IGxhbWJkYTwgbXBsOjpwcm90ZWN0PFQ+LCBUYWcgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PFQ+IHJlc3VsdF87Ci0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi0vLy8gc3BlY2lhbGl6YXRpb25zIGZvciB0aGUgbWFpbiAnYmluZCcgZm9ybQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+IHJlc3VsdF87Ci0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMiwgbGFtYmRhKQotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvZ3JlYXRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvZ3JlYXRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3ZWI0YTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2dyZWF0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZ3JlYXRlci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGdyZWF0ZXJfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGdyZWF0ZXJfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGdyZWF0ZXJfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBncmVhdGVyX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBncmVhdGVyCi0KLSAgICA6IGdyZWF0ZXJfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBncmVhdGVyX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBncmVhdGVyX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGdyZWF0ZXIsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGdyZWF0ZXIpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgPiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvZ3JlYXRlcl9lcXVhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvZ3JlYXRlcl9lcXVhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1YmQ0MTMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2dyZWF0ZXJfZXF1YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZ3JlYXRlcl9lcXVhbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGdyZWF0ZXJfZXF1YWxfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGdyZWF0ZXJfZXF1YWxfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBncmVhdGVyX2VxdWFsX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBncmVhdGVyX2VxdWFsCi0KLSAgICA6IGdyZWF0ZXJfZXF1YWxfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBncmVhdGVyX2VxdWFsX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBncmVhdGVyX2VxdWFsX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGdyZWF0ZXJfZXF1YWwsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGdyZWF0ZXJfZXF1YWwpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgPj0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2luaGVyaXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2luaGVyaXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOTdmMzEzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9pbmhlcml0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9pbmhlcml0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgID4KLXN0cnVjdCBpbmhlcml0MgotICAgIDogVDEsIFQyCi17Ci0gICAgdHlwZWRlZiBpbmhlcml0MiB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgaW5oZXJpdDIsIChUMSwgVDIpKQotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxID4KLXN0cnVjdCBpbmhlcml0MjwgVDEsZW1wdHlfYmFzZSA+Ci17Ci0gICAgdHlwZWRlZiBUMSB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygyLCBpbmhlcml0MiwgKFQxLCBlbXB0eV9iYXNlKSkKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMiA+Ci1zdHJ1Y3QgaW5oZXJpdDI8IGVtcHR5X2Jhc2UsVDIgPgotewotICAgIHR5cGVkZWYgVDIgdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoMiwgaW5oZXJpdDIsIChlbXB0eV9iYXNlLCBUMikpCi19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW5oZXJpdDI8IGVtcHR5X2Jhc2UsZW1wdHlfYmFzZSA+Ci17Ci0gICAgdHlwZWRlZiBlbXB0eV9iYXNlIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKDIsIGluaGVyaXQyLCAoZW1wdHlfYmFzZSwgZW1wdHlfYmFzZSkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMiwgaW5oZXJpdDIpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgID4KLXN0cnVjdCBpbmhlcml0MwotICAgIDogaW5oZXJpdDI8Ci0gICAgICAgICAgdHlwZW5hbWUgaW5oZXJpdDI8Ci0gICAgICAgICAgICAgIFQxLCBUMgotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAsIFQzCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDMKLSAgICAgICAgLCBpbmhlcml0MwotICAgICAgICAsICggVDEsIFQyLCBUMykKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDMsIGluaGVyaXQzKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEsIHR5cGVuYW1lIFQ0ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDQKLSAgICA6IGluaGVyaXQyPAotICAgICAgICAgIHR5cGVuYW1lIGluaGVyaXQzPAotICAgICAgICAgICAgICBUMSwgVDIsIFQzCi0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgVDQKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNAotICAgICAgICAsIGluaGVyaXQ0Ci0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDQsIGluaGVyaXQ0KQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEsIHR5cGVuYW1lIFQ0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ1ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDUKLSAgICA6IGluaGVyaXQyPAotICAgICAgICAgIHR5cGVuYW1lIGluaGVyaXQ0PAotICAgICAgICAgICAgICBUMSwgVDIsIFQzLCBUNAotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAsIFQ1Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBpbmhlcml0NQotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoNSwgaW5oZXJpdDUpCi0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUMiA9IGVtcHR5X2Jhc2UKLSAgICAsIHR5cGVuYW1lIFQzID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDQgPSBlbXB0eV9iYXNlCi0gICAgLCB0eXBlbmFtZSBUNSA9IGVtcHR5X2Jhc2UKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdAotICAgIDogaW5oZXJpdDU8IFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpbmhlcml0PCBuYSxuYSxuYSxuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0KLSAgICAgICAgICB0eXBlbmFtZSBUMSA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQyID0gZW1wdHlfYmFzZQotICAgICAgICAsIHR5cGVuYW1lIFQzID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDQgPSBlbXB0eV9iYXNlCi0gICAgICAgICwgdHlwZW5hbWUgVDUgPSBlbXB0eV9iYXNlCi0KLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgICAgICA6IGluaGVyaXQ8IFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19MQU1CREEoNSwgaW5oZXJpdCkKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19BUklUWSg1LCBpbmhlcml0KQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX1RFTVBMQVRFX0FSSVRZKDUsIDUsIGluaGVyaXQpCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvaXRlcl9mb2xkX2lmX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTc0YmQ4My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvaXRlcl9mb2xkX2lmX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTMzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMS0yMDAyCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vaXRlcl9mb2xkX2lmX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIFN0YXRlID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwCi17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8IGJvb2wgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGVPcAotICAgICAgICAsIHR5cGVuYW1lIEl0ZXJhdG9yT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgU3RhdGVPcCxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXJhdG9yT3A6OnR5cGUgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsPGZhbHNlPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZU9wCi0gICAgICAgICwgdHlwZW5hbWUgSXRlcmF0b3JPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAsIHR5cGVuYW1lIFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFByZWRpY2F0ZSxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIG5vdF9sYXN0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChub3RfbGFzdCk6OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IEl0ZXJhdG9yLFN0YXRlLEZvcndhcmRPcCwgbXBsOjpuZXh0PEl0ZXJhdG9yPiA+IGltcGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgUHJlZGljYXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFByZWRpY2F0ZSxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIG5vdF9sYXN0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChub3RfbGFzdCk6OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IEl0ZXJhdG9yLFN0YXRlLEJhY2t3YXJkT3AsIGlkZW50aXR5PEl0ZXJhdG9yPiA+IGltcGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkUHJlZGljYXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfaW1wbAotewotIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwPCBJdGVyYXRvcixTdGF0ZSA+IGZvcndhcmRfc3RlcDA7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAwOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMDo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDE7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAxOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDI7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAyOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDM7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAzOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMzo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0Ojpub3RfbGFzdAotICAgICAgICAsIGl0ZXJfZm9sZF9pZl9pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjppdGVyYXRvcgotICAgICAgICAgICAgLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjpzdGF0ZQotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgICwgRm9yd2FyZFByZWRpY2F0ZQotICAgICAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICAgICAsIEJhY2t3YXJkUHJlZGljYXRlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgaXRlcl9mb2xkX2lmX251bGxfc3RlcDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6aXRlcmF0b3IKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6c3RhdGUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZSBiYWNrd2FyZF9zdGVwNDsKLQotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDM6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwNDo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDM7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAzOjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMjsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAxOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDI6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAxOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDA6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMTo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDA7Ci0gICAgCi0KLSBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMDo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwNDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9pdGVyX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvaXRlcl9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzA4YjMwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9pdGVyX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9pdGVyX2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAwLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAxLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUxIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAyLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMSxpdGVyMSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMiBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgMyxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTEsaXRlcjEgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUyLGl0ZXIyID46OnR5cGUgc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUzIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCA0LEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMSxpdGVyMSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTIsaXRlcjIgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUzLGl0ZXIzID46OnR5cGUgc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGU0IHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbAotewotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgNAotICAgICAgICAsIEZpcnN0Ci0gICAgICAgICwgTGFzdAotICAgICAgICAsIFN0YXRlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gY2h1bmtfOwotCi0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgLCB0eXBlbmFtZSBjaHVua186Oml0ZXJhdG9yCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6c3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiByZXNfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgLTEsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotICAgIDogaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgLTEKLSAgICAgICAgLCB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLFN0YXRlLEZpcnN0ID46OnR5cGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAtMSxMYXN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2xhbWJkYV9ub19jdHBzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9sYW1iZGFfbm9fY3Rwcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1ZjVmNmIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2xhbWJkYV9ub19jdHBzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyOSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9ub19jdHBzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICBib29sIEMxID0gZmFsc2UsIGJvb2wgQzIgPSBmYWxzZSwgYm9vbCBDMyA9IGZhbHNlLCBib29sIEM0ID0gZmFsc2UKLSAgICAsIGJvb2wgQzUgPSBmYWxzZQotICAgID4KLXN0cnVjdCBsYW1iZGFfb3IKLSAgICA6IHRydWVfCi17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGFtYmRhX29yPCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSA+Ci0gICAgOiBmYWxzZV8KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBBcml0eSA+IHN0cnVjdCBsYW1iZGFfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgIHR5cGVkZWYgaXNfcGxhY2Vob2xkZXI8VD4gaXNfbGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50XzwzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmczLCBUYWcsIGZhbHNlXyA+IGwzOwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTMpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlLCB0eXBlbmFtZSBsMzo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMywgVGFnLCBmYWxzZV8gPiBsMzsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzQsIFRhZywgZmFsc2VfID4gbDQ7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUzKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlNCk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUsIHR5cGVuYW1lIGwzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGw0Ojp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50Xzw1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmczLCBUYWcsIGZhbHNlXyA+IGwzOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnNCwgVGFnLCBmYWxzZV8gPiBsNDsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzUsIFRhZywgZmFsc2VfID4gbDU7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDU6OmlzX2xlIGlzX2xlNTsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTMpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGU0KTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlNSk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUsIHR5cGVuYW1lIGwzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGw0Ojp0eXBlLCB0eXBlbmFtZSBsNTo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgLCB0eXBlbmFtZSBQcm90ZWN0Ci0gICAgPgotc3RydWN0IGxhbWJkYQotewotICAgIC8vLyBNZXRhZnVuY3Rpb24gZm9yd2FyZGluZyBjb25mdXNlcyBNU1ZDIDYueAotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp0ZW1wbGF0ZV9hcml0eTxUPjo6dHlwZSBhcml0eV87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9pbXBsPGFyaXR5Xz4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBULFRhZyxQcm90ZWN0ID4gbF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxfOjp0eXBlIHR5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsXzo6aXNfbGUgaXNfbGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgzLCBsYW1iZGEsIChULCBUYWcsIFByb3RlY3QpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigxLCAzLCBsYW1iZGEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBpc19sYW1iZGFfZXhwcmVzc2lvbgotICAgIDogbGFtYmRhPFQ+Ojppc19sZQotewotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2xlc3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2xlc3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNGI4ZWViLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9sZXNzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xlc3MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBsZXNzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBsZXNzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBsZXNzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbGVzc190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbGVzcwotCi0gICAgOiBsZXNzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbGVzc190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbGVzc190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBsZXNzLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBsZXNzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxlc3NfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlID4gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2xlc3NfZXF1YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2xlc3NfZXF1YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Y2QxNDFiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9sZXNzX2VxdWFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xlc3NfZXF1YWwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBsZXNzX2VxdWFsX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBsZXNzX2VxdWFsX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBsZXNzX2VxdWFsX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbGVzc19lcXVhbF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbGVzc19lcXVhbAotCi0gICAgOiBsZXNzX2VxdWFsX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbGVzc19lcXVhbF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbGVzc19lcXVhbF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBsZXNzX2VxdWFsLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBsZXNzX2VxdWFsKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlIDw9IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9saXN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9saXN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGNjOGM0Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvbGlzdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGlzdC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBsaXN0OwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MDwgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDI8IFQwLFQxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0NDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0NTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDU8IFQwLFQxLFQyLFQzLFQ0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0NzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0ODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBsaXN0Ci0gICAgOiBsaXN0MjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2xpc3RfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvbGlzdF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQzZjM4Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvbGlzdF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyOCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9saXN0X2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCA9IExPTkdfTUFYLCBsb25nIEMxID0gTE9OR19NQVgsIGxvbmcgQzIgPSBMT05HX01BWAotICAgICwgbG9uZyBDMyA9IExPTkdfTUFYLCBsb25nIEM0ID0gTE9OR19NQVgsIGxvbmcgQzUgPSBMT05HX01BWAotICAgICwgbG9uZyBDNiA9IExPTkdfTUFYLCBsb25nIEM3ID0gTE9OR19NQVgsIGxvbmcgQzggPSBMT05HX01BWAotICAgICwgbG9uZyBDOSA9IExPTkdfTUFYLCBsb25nIEMxMCA9IExPTkdfTUFYLCBsb25nIEMxMSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxMiA9IExPTkdfTUFYLCBsb25nIEMxMyA9IExPTkdfTUFYLCBsb25nIEMxNCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxNSA9IExPTkdfTUFYLCBsb25nIEMxNiA9IExPTkdfTUFYLCBsb25nIEMxNyA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxOCA9IExPTkdfTUFYLCBsb25nIEMxOSA9IExPTkdfTUFYCi0gICAgPgotc3RydWN0IGxpc3RfYzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MF9jPFQ+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MF9jPFQ+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxX2M8IFQsQzAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDFfYzwgVCxDMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QyX2M8IFQsQzAsQzEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDJfYzwgVCxDMCxDMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QzX2M8IFQsQzAsQzEsQzIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDNfYzwgVCxDMCxDMSxDMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q0X2M8IFQsQzAsQzEsQzIsQzMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDRfYzwgVCxDMCxDMSxDMixDMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q1X2M8IFQsQzAsQzEsQzIsQzMsQzQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDVfYzwgVCxDMCxDMSxDMixDMyxDNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzkKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxMV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTFfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTJfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxM19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxM19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxNF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE0X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE1X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxNl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTdfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MThfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxOF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxOV9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgPgotc3RydWN0IGxpc3RfYwotICAgIDogbGlzdDIwX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDIwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9tYXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL21hcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5NzRmMjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL21hcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbWFwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IG1hcDsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAwPCAgPgotewotICAgIHR5cGVkZWYgbWFwMDwgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTxUMD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE8VDA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAyPCBUMCxUMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAyPCBUMCxUMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMzwgVDAsVDEsVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMzwgVDAsVDEsVDIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA0PCBUMCxUMSxUMixUMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA0PCBUMCxUMSxUMixUMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA1PCBUMCxUMSxUMixUMyxUNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA1PCBUMCxUMSxUMixUMyxUNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwNjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNjwgVDAsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTY8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE3PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxODwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTk8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgbWFwCi0gICAgOiBtYXAyMDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9taW51cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvbWludXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NTRmZGE4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9taW51cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbWludXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBtaW51c19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbWludXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IG1pbnVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbWludXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbWludXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG1pbnVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbWludXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IG1pbnVzCi0gICAgOiBtaW51czwgbWludXM8IG1pbnVzPCBtaW51czwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIG1pbnVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IG1pbnVzPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IG1pbnVzPCBtaW51czwgbWludXM8IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBtaW51cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IG1pbnVzPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IG1pbnVzPCBtaW51czwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBtaW51cwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgbWludXM8IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IG1pbnVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbWludXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIG1pbnVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIG1pbnVzCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgbWludXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IG1pbnVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAtIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9tb2R1bHVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9tb2R1bHVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2U4OTY5MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvbW9kdWx1cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbW9kdWx1cy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IG1vZHVsdXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IG1vZHVsdXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IG1vZHVsdXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBtb2R1bHVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG1vZHVsdXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG1vZHVsdXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBtb2R1bHVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBtb2R1bHVzCi0KLSAgICA6IG1vZHVsdXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBtb2R1bHVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBtb2R1bHVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIG1vZHVsdXMsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIG1vZHVsdXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IG1vZHVsdXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICUgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL25vdF9lcXVhbF90by5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvbm90X2VxdWFsX3RvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRlMWUxNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvbm90X2VxdWFsX3RvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL25vdF9lcXVhbF90by5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IG5vdF9lcXVhbF90b19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbm90X2VxdWFsX3RvX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBub3RfZXF1YWxfdG9faW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBub3RfZXF1YWxfdG9fdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IG5vdF9lcXVhbF90bwotCi0gICAgOiBub3RfZXF1YWxfdG9faW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBub3RfZXF1YWxfdG9fdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIG5vdF9lcXVhbF90b190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBub3RfZXF1YWxfdG8sIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIG5vdF9lcXVhbF90bykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlICE9IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9vci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvb3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYWU4ZWRmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9vci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9vci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBib29sIENfLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCA+Ci1zdHJ1Y3Qgb3JfaW1wbAotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCA+Ci1zdHJ1Y3Qgb3JfaW1wbDwgZmFsc2UsVDEsVDIsVDMsVDQgPgotICAgIDogb3JfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAsIFQyLCBUMywgVDQKLSAgICAgICAgLCBmYWxzZV8KLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG9yX2ltcGw8Ci0gICAgICAgICAgZmFsc2UKLSAgICAgICAgLCBmYWxzZV8sIGZhbHNlXywgZmFsc2VfLCBmYWxzZV8KLSAgICAgICAgPgotICAgIDogZmFsc2VfCi17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICAsIHR5cGVuYW1lIFQzID0gZmFsc2VfLCB0eXBlbmFtZSBUNCA9IGZhbHNlXywgdHlwZW5hbWUgVDUgPSBmYWxzZV8KLSAgICA+Ci1zdHJ1Y3Qgb3JfCi0KLSAgICA6IGF1eDo6b3JfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4KLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIG9yXwotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKAotICAgICAgMgotICAgICwgNQotICAgICwgb3JfCi0gICAgKQotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3BsYWNlaG9sZGVycy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvcGxhY2Vob2xkZXJzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2EyOGMwOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvcGxhY2Vob2xkZXJzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEtMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9wbGFjZWhvbGRlcnMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8IC0xID4gXzsKLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfOwotfQotCi19fQotCi0vLy8gYWd1cnQsIDE3L21hci8wMjogb25lIG1vcmUgcGxhY2Vob2xkZXIgZm9yIHRoZSBsYXN0ICdhcHBseSMnIAotLy8vIHNwZWNpYWxpemF0aW9uCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwxPiBfMTsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8xKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfMTsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDI+IF8yOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzIpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol8yOwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Mz4gXzM7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfMykKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzM7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzw0PiBfNDsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF80KQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfNDsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDU+IF81OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzUpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol81OwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Nj4gXzY7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfNikKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzY7Ci19Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvcGx1cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvcGx1cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkOGIyY2QuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3BsdXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3BsdXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBwbHVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBwbHVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBwbHVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgcGx1c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBwbHVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBwbHVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcGx1c190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgcGx1cwotICAgIDogcGx1czwgcGx1czwgcGx1czwgcGx1czwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIHBsdXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgcGx1czwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBwbHVzPCBwbHVzPCBwbHVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgcGx1cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IHBsdXM8IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogcGx1czwgcGx1czwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBwbHVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBwbHVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgcGx1c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgcGx1c190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgcGx1cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcGx1c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgKyBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvcXVvdGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3F1b3RlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGNlNzllZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvcXVvdGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3F1b3RlLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgYm9vbCBoYXNfdHlwZV8gPgotc3RydWN0IHF1b3RlX2ltcGwKLSAgICA6IFQKLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBxdW90ZV9pbXBsPCBULGZhbHNlID4KLXsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGUxCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBxdW90ZV9pbXBsPAotICAgICAgICAgICAgICBGPFUxPgotICAgICAgICAgICAgLCBhdXg6Omhhc190eXBlPCBGPFUxPiA+Ojp2YWx1ZQotICAgICAgICAgICAgPgotCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgID4KLXN0cnVjdCBxdW90ZTIKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBxdW90ZV9pbXBsPAotICAgICAgICAgICAgICBGPCBVMSxVMiA+Ci0gICAgICAgICAgICAsIGF1eDo6aGFzX3R5cGU8IEY8IFUxLFUyID4gPjo6dmFsdWUKLSAgICAgICAgICAgID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlMwotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBxdW90ZV9pbXBsPAotICAgICAgICAgICAgICBGPCBVMSxVMixVMyA+Ci0gICAgICAgICAgICAsIGF1eDo6aGFzX3R5cGU8IEY8IFUxLFUyLFUzID4gPjo6dmFsdWUKLSAgICAgICAgICAgID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgID4KLXN0cnVjdCBxdW90ZTQKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBxdW90ZV9pbXBsPAotICAgICAgICAgICAgICBGPCBVMSxVMixVMyxVNCA+Ci0gICAgICAgICAgICAsIGF1eDo6aGFzX3R5cGU8IEY8IFUxLFUyLFUzLFU0ID4gPjo6dmFsdWUKLSAgICAgICAgICAgID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNAotICAgICAgICAsIHR5cGVuYW1lIFA1Ci0gICAgICAgID4KLSAgICAgIGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlNQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgICAgICwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwKLSAgICAgICAgICAgICAgRjwgVTEsVTIsVTMsVTQsVTUgPgotICAgICAgICAgICAgLCBhdXg6Omhhc190eXBlPCBGPCBVMSxVMixVMyxVNCxVNSA+ID46OnZhbHVlCi0gICAgICAgICAgICA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvcmV2ZXJzZV9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDNhZDc1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMzEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDwgMCxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTAgYmt3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDwgMSxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlMSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw8IDIsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTIgYmt3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIAotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDwgMyxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlMyBia3dkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw8IDQsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTQgYmt3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGU0LCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbAotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgIAotCi0gICAgdHlwZWRlZiByZXZlcnNlX2ZvbGRfaW1wbDwKLSAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgLCBpdGVyNAotICAgICAgICAsIExhc3QKLSAgICAgICAgLCBmd2Rfc3RhdGU0Ci0gICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IG5lc3RlZF9jaHVuazsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjpzdGF0ZSBia3dkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTQsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIAotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsPCAtMSxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIHJldmVyc2VfZm9sZF9pbXBsPAotICAgICAgICAgIC0xCi0gICAgICAgICwgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8Rm9yd2FyZE9wLFN0YXRlLCB0eXBlbmFtZSBkZXJlZjxGaXJzdD46OnR5cGU+Ojp0eXBlCi0gICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IG5lc3RlZF9zdGVwOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8Ci0gICAgICAgICAgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjpzdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIGRlcmVmPEZpcnN0Pjo6dHlwZQotICAgICAgICA+Ojp0eXBlIHN0YXRlOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw8IC0xLExhc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzNiZjUwOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMzEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgMCxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTAgYmt3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPCAxLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIAotCi0gICAgdHlwZWRlZiBmd2Rfc3RhdGUxIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPCAyLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIAotCi0gICAgdHlwZWRlZiBmd2Rfc3RhdGUyIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgMyxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTIsaXRlcjIgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlMyBia3dkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMyxpdGVyMiA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgNCxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTIsaXRlcjIgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTMsaXRlcjMgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlNCBia3dkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlNCxpdGVyMyA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUzLGl0ZXIyID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIAotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGwKLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTIsaXRlcjIgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTMsaXRlcjMgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAKLQotICAgIHR5cGVkZWYgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgLCBpdGVyNAotICAgICAgICAsIExhc3QKLSAgICAgICAgLCBmd2Rfc3RhdGU0Ci0gICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IG5lc3RlZF9jaHVuazsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjpzdGF0ZSBia3dkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlNCxpdGVyMyA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUzLGl0ZXIyID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIAotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IC0xLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAtMQotICAgICAgICAsIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsU3RhdGUsRmlyc3QgPjo6dHlwZQotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfc3RlcDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPAotICAgICAgICAgIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6c3RhdGUKLSAgICAgICAgLCBGaXJzdAotICAgICAgICA+Ojp0eXBlIHN0YXRlOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgLTEsTGFzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3NldC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvc2V0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGM0Y2ExMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvc2V0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zZXQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3Qgc2V0OwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDA8ICA+Ci17Ci0gICAgdHlwZWRlZiBzZXQwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDI8IFQwLFQxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDI8IFQwLFQxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDU8IFQwLFQxLFQyLFQzLFQ0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDU8IFQwLFQxLFQyLFQzLFQ0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTc8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBzZXQKLSAgICA6IHNldDIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3NldF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9zZXRfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlZjJmZGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3NldF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyOCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zZXRfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQwX2M8VD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDBfYzxUPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDFfYzwgVCxDMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxX2M8IFQsQzAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDJfYzwgVCxDMCxDMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyX2M8IFQsQzAsQzEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDNfYzwgVCxDMCxDMSxDMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQzX2M8IFQsQzAsQzEsQzIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDRfYzwgVCxDMCxDMSxDMixDMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ0X2M8IFQsQzAsQzEsQzIsQzMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDVfYzwgVCxDMCxDMSxDMixDMyxDNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ1X2M8IFQsQzAsQzEsQzIsQzMsQzQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDEwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDExX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDExX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxMl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTJfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDEzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTNfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTVfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTVfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE2X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNgotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxN19jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxOF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MThfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE5X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgID4KLXN0cnVjdCBzZXRfYwotICAgIDogc2V0MjBfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvc2hpZnRfbGVmdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvc2hpZnRfbGVmdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5NjRmYjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3NoaWZ0X2xlZnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2hpZnRfbGVmdC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHNoaWZ0X2xlZnRfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHNoaWZ0X2xlZnRfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHNoaWZ0X2xlZnRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBzaGlmdF9sZWZ0X3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBzaGlmdF9sZWZ0Ci0KLSAgICA6IHNoaWZ0X2xlZnRfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBzaGlmdF9sZWZ0X3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBzaGlmdF9sZWZ0X3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIHNoaWZ0X2xlZnQsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIHNoaWZ0X2xlZnQpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOLCB0eXBlbmFtZSBTID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBOOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgPDwgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKFMpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvc2hpZnRfcmlnaHQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3NoaWZ0X3JpZ2h0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTdhNWZlMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvc2hpZnRfcmlnaHQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2hpZnRfcmlnaHQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBzaGlmdF9yaWdodF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgc2hpZnRfcmlnaHRfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHNoaWZ0X3JpZ2h0X2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IHNoaWZ0X3JpZ2h0Ci0KLSAgICA6IHNoaWZ0X3JpZ2h0X2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgc2hpZnRfcmlnaHRfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIHNoaWZ0X3JpZ2h0X3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIHNoaWZ0X3JpZ2h0LCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBzaGlmdF9yaWdodCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOLCB0eXBlbmFtZSBTID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBOOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgPj4gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKFMpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvdGVtcGxhdGVfYXJpdHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3RlbXBsYXRlX2FyaXR5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmNiNDJhZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvdGVtcGxhdGVfYXJpdHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy90ZW1wbGF0ZV9hcml0eS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvdGltZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3RpbWVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWE1NWZlZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvdGltZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3RpbWVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgdGltZXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHRpbWVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCB0aW1lc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHRpbWVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHRpbWVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCB0aW1lc19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHRpbWVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCB0aW1lcwotICAgIDogdGltZXM8IHRpbWVzPCB0aW1lczwgdGltZXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCB0aW1lczwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiB0aW1lczwgdGltZXM8IHRpbWVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCB0aW1lczwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiB0aW1lczwgdGltZXM8IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IHRpbWVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiB0aW1lc19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHRpbWVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSB0aW1lc190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIHRpbWVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCB0aW1lc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgKiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvdW5wYWNrX2FyZ3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3VucGFja19hcmdzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWVjMzFhZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvdW5wYWNrX2FyZ3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdW5wYWNrX2FyZ3MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgaW50IHNpemUsIHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCAwLEYsQXJncyA+Ci0gICAgOiBhcHBseTA8Ci0gICAgICAgICAgRgotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgMSxGLEFyZ3MgPgotICAgIDogYXBwbHkxPAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgMixGLEFyZ3MgPgotICAgIDogYXBwbHkyPAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDMsRixBcmdzID4KLSAgICA6IGFwcGx5MzwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywyID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDQsRixBcmdzID4KLSAgICA6IGFwcGx5NDwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywyID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMyA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCA1LEYsQXJncyA+Ci0gICAgOiBhcHBseTU8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDMgPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsNCA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IHVucGFja19hcmdzCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEFyZ3MgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGF1eDo6dW5wYWNrX2FyZ3NfaW1wbDwgc2l6ZTxBcmdzPjo6dmFsdWUsRiwgQXJncyA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfUEFTU19USFJPVUdIX0xBTUJEQV9TUEVDKDEsIHVucGFja19hcmdzKQotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvdmVjdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy92ZWN0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjY3NTg5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy92ZWN0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCB2ZWN0b3I7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMDwgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IHZlY3RvcgotICAgIDogdmVjdG9yMjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvdmVjdG9yX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3ZlY3Rvcl9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTJmYmRiNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvdmVjdG9yX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzA5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvcl9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAgPSBMT05HX01BWCwgbG9uZyBDMSA9IExPTkdfTUFYLCBsb25nIEMyID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzMgPSBMT05HX01BWCwgbG9uZyBDNCA9IExPTkdfTUFYLCBsb25nIEM1ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzYgPSBMT05HX01BWCwgbG9uZyBDNyA9IExPTkdfTUFYLCBsb25nIEM4ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzkgPSBMT05HX01BWCwgbG9uZyBDMTAgPSBMT05HX01BWCwgbG9uZyBDMTEgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTIgPSBMT05HX01BWCwgbG9uZyBDMTMgPSBMT05HX01BWCwgbG9uZyBDMTQgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTUgPSBMT05HX01BWCwgbG9uZyBDMTYgPSBMT05HX01BWCwgbG9uZyBDMTcgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTggPSBMT05HX01BWCwgbG9uZyBDMTkgPSBMT05HX01BWAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjBfYzxUPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMF9jPFQ+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMV9jPCBULCBUKEMwKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxX2M8IFQsIFQoQzApID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IyX2M8IFQsIFQoQzApLCBUKEMxKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyX2M8IFQsIFQoQzApLCBUKEMxKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yM19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjNfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I0X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I1X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I1X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yNl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjZfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I3X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNwotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I4X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I4X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yOV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjlfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTBfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTBfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjExX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEyX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTNfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMikgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTNfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMikgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMwotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE0X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMykgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE1X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTZfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTZfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNgotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE3X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNikgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE4X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNykgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTlfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTlfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCkgPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYwotICAgIDogdmVjdG9yMjBfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCksIFQoQzE5KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyMF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNyksIFQoQzE4KSwgVChDMTkpID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9hZHZhbmNlX2JhY2t3YXJkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9hZHZhbmNlX2JhY2t3YXJkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGUwYzgyOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYWR2YW5jZV9iYWNrd2FyZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2FkdmFuY2VfYmFja3dhcmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgbG9uZyBOID4gc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwwPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwxPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwzPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDw0PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9iYWNrd2FyZDw0PgotICAgICAgICAgICAgLCBJdGVyYXRvcgotICAgICAgICAgICAgPjo6dHlwZSBjaHVua19yZXN1bHRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfYmFja3dhcmQ8KAotICAgICAgICAgICAgICAgIChOIC0gNCkgPCAwCi0gICAgICAgICAgICAgICAgICAgID8gMAotICAgICAgICAgICAgICAgICAgICA6IE4gLSA0Ci0gICAgICAgICAgICAgICAgICAgICk+Ci0gICAgICAgICAgICAsIGNodW5rX3Jlc3VsdF8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9hZHZhbmNlX2ZvcndhcmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2FkdmFuY2VfZm9yd2FyZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzYTVhZmQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2FkdmFuY2VfZm9yd2FyZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2FkdmFuY2VfZm9yd2FyZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBsb25nIE4gPiBzdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkOwotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwwPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDE+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwzPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDQ+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICB0eXBlZGVmIGl0ZXI0IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9mb3J3YXJkPDQ+Ci0gICAgICAgICAgICAsIEl0ZXJhdG9yCi0gICAgICAgICAgICA+Ojp0eXBlIGNodW5rX3Jlc3VsdF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9mb3J3YXJkPCgKLSAgICAgICAgICAgICAgICAoTiAtIDQpIDwgMAotICAgICAgICAgICAgICAgICAgICA/IDAKLSAgICAgICAgICAgICAgICAgICAgOiBOIC0gNAotICAgICAgICAgICAgICAgICAgICApPgotICAgICAgICAgICAgLCBjaHVua19yZXN1bHRfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9hbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YzFiOTVhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9hbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGJvb2wgQ18sIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0ID4KLXN0cnVjdCBhbmRfaW1wbAotICAgIDogZmFsc2VfCi17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQgPgotc3RydWN0IGFuZF9pbXBsPCB0cnVlLFQxLFQyLFQzLFQ0ID4KLSAgICA6IGFuZF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICwgVDIsIFQzLCBUNAotICAgICAgICAsIHRydWVfCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhbmRfaW1wbDwKLSAgICAgICAgICB0cnVlCi0gICAgICAgICwgdHJ1ZV8sIHRydWVfLCB0cnVlXywgdHJ1ZV8KLSAgICAgICAgPgotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgICwgdHlwZW5hbWUgVDMgPSB0cnVlXywgdHlwZW5hbWUgVDQgPSB0cnVlXywgdHlwZW5hbWUgVDUgPSB0cnVlXwotICAgID4KLXN0cnVjdCBhbmRfCi0KLSAgICA6IGF1eDo6YW5kX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ci0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBhbmRfCi0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoCi0gICAgICAyCi0gICAgLCA1Ci0gICAgLCBhbmRfCi0gICAgKQotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2FwcGx5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9hcHBseS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwZjcyYjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2FwcGx5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcHBseS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5MAotCi0gICAgOiBhcHBseV93cmFwMDwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMQotICAgICAgICAsIGFwcGx5MAotICAgICAgICAsIChGICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5PCBGLG5hLG5hLG5hLG5hLG5hID4KLSAgICA6IGFwcGx5MDxGPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseTEKLQotICAgIDogYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMgotICAgICAgICAsIGFwcGx5MQotICAgICAgICAsIChGLCBUMSkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseTwgRixUMSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBhcHBseTE8IEYsVDEgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkyCi0KLSAgICA6IGFwcGx5X3dyYXAyPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAzCi0gICAgICAgICwgYXBwbHkyCi0gICAgICAgICwgKEYsIFQxLCBUMikKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsVDIsbmEsbmEsbmEgPgotICAgIDogYXBwbHkyPCBGLFQxLFQyID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseTMKLQotICAgIDogYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyLCBUMwotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA0Ci0gICAgICAgICwgYXBwbHkzCi0gICAgICAgICwgKEYsIFQxLCBUMiwgVDMpCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseTwgRixUMSxUMixUMyxuYSxuYSA+Ci0gICAgOiBhcHBseTM8IEYsVDEsVDIsVDMgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseTQKLQotICAgIDogYXBwbHlfd3JhcDQ8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGFwcGx5NAotICAgICAgICAsIChGLCBUMSwgVDIsIFQzLCBUNCkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseTwgRixUMSxUMixUMyxUNCxuYSA+Ci0gICAgOiBhcHBseTQ8IEYsVDEsVDIsVDMsVDQgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk1Ci0KLSAgICA6IGFwcGx5X3dyYXA1PAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA2Ci0gICAgICAgICwgYXBwbHk1Ci0gICAgICAgICwgKEYsIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkKLSAgICA6IGFwcGx5NTwgRixUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYXBwbHlfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9hcHBseV9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiY2NjOTRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9hcHBseV9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXBwbHlfZndkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseTA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkxOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseTI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseTM7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk0OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseTU7Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9hcHBseV93cmFwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9hcHBseV93cmFwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWM5MDIwMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYXBwbHlfd3JhcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcHBseV93cmFwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLQotICAgICwgdHlwZW5hbWUgaGFzX2FwcGx5XyA9IHR5cGVuYW1lIGF1eDo6aGFzX2FwcGx5PEY+Ojp0eXBlCi0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDAKLQotICAgIDogRjo6dGVtcGxhdGUgYXBwbHk8ICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDA8IEYsdHJ1ZV8gPgotICAgIDogRjo6YXBwbHkKLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMQotCi0gICAgOiBGOjp0ZW1wbGF0ZSBhcHBseTxUMT4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDIKLQotICAgIDogRjo6dGVtcGxhdGUgYXBwbHk8IFQxLFQyID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAzCi0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PCBUMSxUMixUMyA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDQKLQotICAgIDogRjo6dGVtcGxhdGUgYXBwbHk8IFQxLFQyLFQzLFQ0ID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDUKLQotICAgIDogRjo6dGVtcGxhdGUgYXBwbHk8IFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9hcmcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2FyZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1NDQ3NmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2FyZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMS0yMDAyCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXJnLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwgLTEgPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IC0xKTsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTEgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8MT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAxKTsKLSAgICB0eXBlZGVmIGFyZzwyPiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwyPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDIpOwotICAgIHR5cGVkZWYgYXJnPDM+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUyIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDM+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMyk7Ci0gICAgdHlwZWRlZiBhcmc8ND4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTMgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8ND4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSA0KTsKLSAgICB0eXBlZGVmIGFyZzw1PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVNCB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzw1PgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDUpOwotICAgIHR5cGVkZWYgYXJnPDY+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFU1IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OT05UWVBFX0FSSVRZX1NQRUMoMSxpbnQsIGFyZykKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9iYXNpY19iaW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9iYXNpY19iaW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGUwYmY3My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYmFzaWNfYmluZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NDAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vYmFzaWNfYmluZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmcKLXsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPCBhcmc8Tj4sIFUxLCBVMiwgVTMsIFU0LCBVNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTxtcGw6OmFyZzxOPiwgVTEsIFUyLCBVMywgVTQsIFU1Pjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPCBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4sIFUxLCBVMiwgVTMsIFU0LCBVNSA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBiaW5kMAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAwPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDA8Rj4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQwPEY+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMSwgYmluZDApCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMSwgYmluZDApCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBiaW5kPCBGLG5hLG5hLG5hLG5hLG5hID4KLSAgICA6IGJpbmQwPEY+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGJpbmQxCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzCi0gICAgLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQxPCBGLFQxID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQxPCBGLFQxID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygyLCBiaW5kMSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygyLCBiaW5kMSkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLG5hLG5hLG5hLG5hID4KLSAgICA6IGJpbmQxPCBGLFQxID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQyCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIKLSAgICAsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQyPCBGLFQxLFQyID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQyPCBGLFQxLFQyID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygzLCBiaW5kMikKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygzLCBiaW5kMikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxUMixuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMjwgRixUMSxUMiA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDMKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMzwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFUxCi0gICAgLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDM8IEYsVDEsVDIsVDMgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDM8IEYsVDEsVDIsVDMgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDQsIGJpbmQzKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDQsIGJpbmQzKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxUMixUMyxuYSxuYSA+Ci0gICAgOiBiaW5kMzwgRixUMSxUMixUMyA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGJpbmQ0Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQ0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA0PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDQ8IEYsVDEsVDIsVDMsVDQgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDQ8IEYsVDEsVDIsVDMsVDQgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDUsIGJpbmQ0KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDUsIGJpbmQ0KQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsVDIsVDMsVDQsbmEgPgotICAgIDogYmluZDQ8IEYsVDEsVDIsVDMsVDQgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZDUKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQ1LFUxLFUyLFUzLFU0LFU1ID4gdDU7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlLCB0eXBlbmFtZSB0NTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNiwgYmluZDUpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNiwgYmluZDUpCi0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQKLSAgICA6IGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLX07Ci0KLS8vLyBpZl8vZXZhbF9pZiBzcGVjaWFsaXphdGlvbnMKLXRlbXBsYXRlPCB0ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IGNsYXNzIEYsIHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgcXVvdGUzOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IHN0cnVjdCBpZl87Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzPAotICAgICAgcXVvdGUzPCBpZl8sVGFnID4KLSAgICAsIFQxLCBUMiwgVDMKLSAgICA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBtcGw6OmFyZzwxPiBuMTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICAsIHQyLCB0MwotICAgICAgICAgICAgPjo6dHlwZSBmXzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZl86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IGNsYXNzIEYsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBxdW90ZTM7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzID4gc3RydWN0IGV2YWxfaWY7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzPAotICAgICAgcXVvdGUzPCBldmFsX2lmLFRhZyA+Ci0gICAgLCBUMSwgVDIsIFQzCi0gICAgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgbXBsOjphcmc8MT4gbjE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZXZhbF9pZjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgICwgdDIsIHQzCi0gICAgICAgICAgICA+Ojp0eXBlIGZfOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBmXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYmluZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYmluZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1Y2ZjNjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2JpbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTYxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZwotewotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBBcmcKLSAgICA+Ci1zdHJ1Y3QgcmVwbGFjZV91bm5hbWVkX2FyZwotewotICAgIHR5cGVkZWYgQXJnIG5leHQ7Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEFyZwotICAgID4KLXN0cnVjdCByZXBsYWNlX3VubmFtZWRfYXJnPCBhcmc8IC0xID4sIEFyZyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBBcmc6Om5leHQgbmV4dDsKLSAgICB0eXBlZGVmIEFyZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8IGFyZzxOPiwgVTEsIFUyLCBVMywgVTQsIFU1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PG1wbDo6YXJnPE4+LCBVMSwgVTIsIFUzLCBVNCwgVTU+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8IGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPiwgVTEsIFUyLCBVMywgVTQsIFU1ID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQwCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAwPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDA8Rj4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQwPEY+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMSwgYmluZDApCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMSwgYmluZDApCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBiaW5kPCBGLG5hLG5hLG5hLG5hLG5hID4KLSAgICA6IGJpbmQwPEY+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGJpbmQxCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzCi0gICAgLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQxPCBGLFQxID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQxPCBGLFQxID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygyLCBiaW5kMSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygyLCBiaW5kMSkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLG5hLG5hLG5hLG5hID4KLSAgICA6IGJpbmQxPCBGLFQxID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQyCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMgotICAgICwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDI8IEYsVDEsVDIgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDI8IEYsVDEsVDIgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDMsIGJpbmQyKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDMsIGJpbmQyKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLFQyLG5hLG5hLG5hID4KLSAgICA6IGJpbmQyPCBGLFQxLFQyID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMwotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMzwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFUxCi0gICAgLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDM8IEYsVDEsVDIsVDMgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDM8IEYsVDEsVDIsVDMgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDQsIGJpbmQzKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDQsIGJpbmQzKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxUMixUMyxuYSxuYSA+Ci0gICAgOiBiaW5kMzwgRixUMSxUMixUMyA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGJpbmQ0Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ0LG40ID4gcjQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6OnR5cGUgYTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6Om5leHQgbjU7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA0PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDQ8IEYsVDEsVDIsVDMsVDQgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDQ8IEYsVDEsVDIsVDMsVDQgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDUsIGJpbmQ0KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDUsIGJpbmQ0KQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsVDIsVDMsVDQsbmEgPgotICAgIDogYmluZDQ8IEYsVDEsVDIsVDMsVDQgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZDUKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDQsbjQgPiByNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6dHlwZSBhNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6bmV4dCBuNTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGE0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDUsbjUgPiByNTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNTo6dHlwZSBhNTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNTo6bmV4dCBuNjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGE1LFUxLFUyLFUzLFU0LFU1ID4gdDU7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUsIHR5cGVuYW1lIHQ1Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZAotICAgIDogYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotLy8vIGlmXy9ldmFsX2lmIHNwZWNpYWxpemF0aW9ucwotdGVtcGxhdGU8IHRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzID4gY2xhc3MgRiwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBxdW90ZTM7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzID4gc3RydWN0IGlmXzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDM8Ci0gICAgICBxdW90ZTM8IGlmXyxUYWcgPgotICAgICwgVDEsIFQyLCBUMwotICAgID4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIG1wbDo6YXJnPDE+IG4xOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgICwgdDIsIHQzCi0gICAgICAgICAgICA+Ojp0eXBlIGZfOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBmXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzID4gY2xhc3MgRiwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IHF1b3RlMzsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBzdHJ1Y3QgZXZhbF9pZjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDM8Ci0gICAgICBxdW90ZTM8IGV2YWxfaWYsVGFnID4KLSAgICAsIFQxLCBUMiwgVDMKLSAgICA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBtcGw6OmFyZzwxPiBuMTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBldmFsX2lmPAotICAgICAgICAgICAgICB0eXBlbmFtZSB0MTo6dHlwZQotICAgICAgICAgICAgLCB0MiwgdDMKLSAgICAgICAgICAgID46OnR5cGUgZl87Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGZfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9iaW5kX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYmluZF9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTA0NmVlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9iaW5kX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaW5kX2Z3ZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hCi0gICAgPgotc3RydWN0IGJpbmQ7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBiaW5kMDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kMTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kNDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZDU7Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9iaXRhbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2JpdGFuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkOGNjNWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2JpdGFuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYml0YW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBiaXRhbmRfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdGFuZF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGJpdGFuZF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXRhbmRfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdGFuZF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGJpdGFuZF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXwotICAgIDogYml0YW5kXzwgYml0YW5kXzwgYml0YW5kXzwgYml0YW5kXzwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdGFuZF8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXzwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBiaXRhbmRfPCBiaXRhbmRfPCBiaXRhbmRfPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0YW5kXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IGJpdGFuZF88IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogYml0YW5kXzwgYml0YW5kXzwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRhbmRfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBiaXRhbmRfPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBiaXRhbmRfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBiaXRhbmRfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGJpdGFuZF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRhbmRfCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgYml0YW5kXykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYml0YW5kX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAmIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9iaXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYml0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTgyNDdiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9iaXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYml0b3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBiaXRvcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0b3JfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdG9yX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0b3JfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0b3JfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdG9yX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0b3JfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdG9yXwotICAgIDogYml0b3JfPCBiaXRvcl88IGJpdG9yXzwgYml0b3JfPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGJpdG9yXzwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBiaXRvcl88IGJpdG9yXzwgYml0b3JfPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGJpdG9yXzwgYml0b3JfPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBiaXRvcl9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGJpdG9yX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBiaXRvcl90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXRvcl8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGJpdG9yX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICB8IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9iaXR4b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2JpdHhvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmMjc2YjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2JpdHhvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYml0eG9yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBiaXR4b3JfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdHhvcl9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGJpdHhvcl9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXR4b3JfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdHhvcl9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGJpdHhvcl90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXwotICAgIDogYml0eG9yXzwgYml0eG9yXzwgYml0eG9yXzwgYml0eG9yXzwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdHhvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXzwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBiaXR4b3JfPCBiaXR4b3JfPCBiaXR4b3JfPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0eG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IGJpdHhvcl88IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogYml0eG9yXzwgYml0eG9yXzwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXR4b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBiaXR4b3JfPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBiaXR4b3JfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBiaXR4b3JfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGJpdHhvcl90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXR4b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgYml0eG9yXykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYml0eG9yX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICBeIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9kZXF1ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvZGVxdWUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NjMxZjY2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9kZXF1ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZGVxdWUuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IwPCAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMDwgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMzwgVDAsVDEsVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMzwgVDAsVDEsVDIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNjwgVDAsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxODwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBkZXF1ZQotICAgIDogdmVjdG9yMjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvZGl2aWRlcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvZGl2aWRlcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiYzQ0MzMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2RpdmlkZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2RpdmlkZXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBkaXZpZGVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBkaXZpZGVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBkaXZpZGVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZGl2aWRlc19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBkaXZpZGVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBkaXZpZGVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZGl2aWRlc190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlcwotICAgIDogZGl2aWRlczwgZGl2aWRlczwgZGl2aWRlczwgZGl2aWRlczwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGRpdmlkZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlczwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBkaXZpZGVzPCBkaXZpZGVzPCBkaXZpZGVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IGRpdmlkZXM8IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogZGl2aWRlczwgZGl2aWRlczwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBkaXZpZGVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBkaXZpZGVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBkaXZpZGVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZGl2aWRlc190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZGl2aWRlc190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBkaXZpZGVzCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgZGl2aWRlcykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGl2aWRlc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgLyBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvZXF1YWxfdG8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2VxdWFsX3RvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjQ1NTg4NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvZXF1YWxfdG8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZXF1YWxfdG8uaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBlcXVhbF90b19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZXF1YWxfdG9faW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGVxdWFsX3RvX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZXF1YWxfdG9faW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZXF1YWxfdG9faW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZXF1YWxfdG9fdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGVxdWFsX3RvCi0KLSAgICA6IGVxdWFsX3RvX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZXF1YWxfdG9fdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGVxdWFsX3RvX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGVxdWFsX3RvLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBlcXVhbF90bykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlcXVhbF90b19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgID09IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5NGNkNDEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAwLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgMSxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMSBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDIsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUyIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgMyxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUzIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgNCxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIHN0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlNCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsCi17Ci0gICAgdHlwZWRlZiBmb2xkX2ltcGw8Ci0gICAgICAgICAgNAotICAgICAgICAsIEZpcnN0Ci0gICAgICAgICwgTGFzdAotICAgICAgICAsIFN0YXRlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gY2h1bmtfOwotCi0gICAgdHlwZWRlZiBmb2xkX2ltcGw8Ci0gICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjppdGVyYXRvcgotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBjaHVua186OnN0YXRlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gcmVzXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAtMSxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci0gICAgOiBmb2xkX2ltcGw8Ci0gICAgICAgICAgLTEKLSAgICAgICAgLCB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjxGb3J3YXJkT3AsU3RhdGUsIHR5cGVuYW1lIGRlcmVmPEZpcnN0Pjo6dHlwZT46OnR5cGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgLTEsTGFzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9mdWxsX2xhbWJkYS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvZnVsbF9sYW1iZGEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYWNiZDlmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9mdWxsX2xhbWJkYS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NTggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9mdWxsX2xhbWJkYS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgYm9vbCBDMSA9IGZhbHNlLCBib29sIEMyID0gZmFsc2UsIGJvb2wgQzMgPSBmYWxzZSwgYm9vbCBDNCA9IGZhbHNlCi0gICAgLCBib29sIEM1ID0gZmFsc2UKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhX29yCi0gICAgOiB0cnVlXwotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxhbWJkYV9vcjwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UgPgotICAgIDogZmFsc2VfCi17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICAsIHR5cGVuYW1lIEFyaXR5Ci0gICAgPgotc3RydWN0IGxhbWJkYQotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgVCByZXN1bHRfOwotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IGlzX2xhbWJkYV9leHByZXNzaW9uCi0gICAgOiBsYW1iZGE8VD46OmlzX2xlCi17Ci19OwotCi10ZW1wbGF0ZTwgaW50IE4sIHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgbGFtYmRhPCBhcmc8Tj4sVGFnLCBpbnRfPCAtMSA+ID4KLXsKLSAgICB0eXBlZGVmIHRydWVfIGlzX2xlOwotICAgIHR5cGVkZWYgbXBsOjphcmc8Tj4gcmVzdWx0XzsgLy8gcXVhbGlmaWVkIGZvciB0aGUgc2FrZSBvZiBNSVBTcHJvIDcuNDEKLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQwPEY+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50XzwxPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMDwKLSAgICAgICAgICBGCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQxCi17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDE8IHRydWVfLFRhZyxGLEwxID4KLXsKLSAgICB0eXBlZGVmIGJpbmQxPAotICAgICAgICAgIHF1b3RlMTwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPFQxPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88MT4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0MTwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMQotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDE8IEYsVDEgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88Mj4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDE8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDIKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MjwgdHJ1ZV8sVGFnLEYsTDEsTDIgPgotewotICAgIHR5cGVkZWYgYmluZDI8Ci0gICAgICAgICAgcXVvdGUyPCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8IFQxLFQyID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgLCBpbnRfPDI+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQyLFRhZyA+IGwyOwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQyPAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMgotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQyPCBGLFQxLFQyID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgLCBpbnRfPDM+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQyPAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMwotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQzCi17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlLCB0eXBlbmFtZSBMMjo6dHlwZSwgdHlwZW5hbWUgTDM6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDM8IHRydWVfLFRhZyxGLEwxLEwyLEwzID4KLXsKLSAgICB0eXBlZGVmIGJpbmQzPAotICAgICAgICAgIHF1b3RlMzwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfLCB0eXBlbmFtZSBMMjo6cmVzdWx0XywgdHlwZW5hbWUgTDM6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMixUMyA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50XzwzPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDMsVGFnID4gbDM7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUsIGlzX2xlMzo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQzPAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMiwgbDMKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDM8IEYsVDEsVDIsVDMgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88ND4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDM8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0Ci0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDQKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlLCB0eXBlbmFtZSBMMzo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIEw0Ojp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0Ci0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDQ8IHRydWVfLFRhZyxGLEwxLEwyLEwzLEw0ID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ0PAotICAgICAgICAgIHF1b3RlNDwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfLCB0eXBlbmFtZSBMMjo6cmVzdWx0XywgdHlwZW5hbWUgTDM6OnJlc3VsdF8KLSAgICAgICAgLCB0eXBlbmFtZSBMNDo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIsVDMsVDQgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88ND4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQzLFRhZyA+IGwzOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUNCxUYWcgPiBsNDsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUsIGlzX2xlMzo6dmFsdWUsIGlzX2xlNDo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQ0PAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMiwgbDMsIGw0Ci0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kNDwgRixUMSxUMixUMyxUNCA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50Xzw1PgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kNDwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgUDUgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzLCB0eXBlbmFtZSBMNCwgdHlwZW5hbWUgTDUKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NQotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUsIHR5cGVuYW1lIEwzOjp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnR5cGUsIHR5cGVuYW1lIEw1Ojp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgUDUgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzLCB0eXBlbmFtZSBMNCwgdHlwZW5hbWUgTDUKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NTwgdHJ1ZV8sVGFnLEYsTDEsTDIsTDMsTDQsTDUgPgotewotICAgIHR5cGVkZWYgYmluZDU8Ci0gICAgICAgICAgcXVvdGU1PCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfLCB0eXBlbmFtZSBMMzo6cmVzdWx0XwotICAgICAgICAsIHR5cGVuYW1lIEw0OjpyZXN1bHRfLCB0eXBlbmFtZSBMNTo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQKLSAgICAgICAgLCB0eXBlbmFtZSBQNQotICAgICAgICA+Ci0gICAgICBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIsVDMsVDQsVDUgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88NT4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQzLFRhZyA+IGwzOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUNCxUYWcgPiBsNDsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDUsVGFnID4gbDU7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDU6OmlzX2xlIGlzX2xlNTsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZSwgaXNfbGUzOjp2YWx1ZSwgaXNfbGU0Ojp2YWx1ZQotICAgICAgICAsIGlzX2xlNTo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQ1PAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMiwgbDMsIGw0LCBsNQotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgLCBpbnRfPDY+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQ1PAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi0vLy8gc3BlY2lhbCBjYXNlIGZvciAncHJvdGVjdCcKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IGxhbWJkYTwgbXBsOjpwcm90ZWN0PFQ+LFRhZywgaW50XzwxPiA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8VD4gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLS8vLyBzcGVjaWFsaXphdGlvbnMgZm9yIHRoZSBtYWluICdiaW5kJyBmb3JtCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88Nj4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+IHJlc3VsdF87Ci0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICAsIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICAsIHR5cGVuYW1lIEFyaXR5Ci0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBsYW1iZGE8IEYsVGFnMSxBcml0eSA+Ci0gICAgICAgICwgVGFnMgotICAgICAgICAsIGludF88Mz4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBGLFRhZzIgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVGFnMSxUYWcyID4gbDI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMTwgcXVvdGUxPGF1eDo6dGVtcGxhdGVfYXJpdHk+LCB0eXBlbmFtZSBsMTo6cmVzdWx0XyA+IGFyaXR5XzsKLSAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgaWZfPCBpc19sZSxhcml0eV8sQXJpdHkgPjo6dHlwZSwgVGFnMiA+IGwzOwotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQzPGlzX2xlLCBUYWcyLCBtcGw6OmxhbWJkYSwgbDEsIGwyLCBsMz4gbGVfcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMywgbGFtYmRhKQotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvZ3JlYXRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvZ3JlYXRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3ZWI0YTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2dyZWF0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZ3JlYXRlci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGdyZWF0ZXJfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGdyZWF0ZXJfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGdyZWF0ZXJfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBncmVhdGVyX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBncmVhdGVyCi0KLSAgICA6IGdyZWF0ZXJfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBncmVhdGVyX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBncmVhdGVyX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGdyZWF0ZXIsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGdyZWF0ZXIpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgPiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvZ3JlYXRlcl9lcXVhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvZ3JlYXRlcl9lcXVhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1YmQ0MTMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2dyZWF0ZXJfZXF1YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZ3JlYXRlcl9lcXVhbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGdyZWF0ZXJfZXF1YWxfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGdyZWF0ZXJfZXF1YWxfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBncmVhdGVyX2VxdWFsX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBncmVhdGVyX2VxdWFsCi0KLSAgICA6IGdyZWF0ZXJfZXF1YWxfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBncmVhdGVyX2VxdWFsX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBncmVhdGVyX2VxdWFsX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGdyZWF0ZXJfZXF1YWwsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGdyZWF0ZXJfZXF1YWwpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgPj0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2luaGVyaXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2luaGVyaXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOTdmMzEzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9pbmhlcml0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9pbmhlcml0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgID4KLXN0cnVjdCBpbmhlcml0MgotICAgIDogVDEsIFQyCi17Ci0gICAgdHlwZWRlZiBpbmhlcml0MiB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgaW5oZXJpdDIsIChUMSwgVDIpKQotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxID4KLXN0cnVjdCBpbmhlcml0MjwgVDEsZW1wdHlfYmFzZSA+Ci17Ci0gICAgdHlwZWRlZiBUMSB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygyLCBpbmhlcml0MiwgKFQxLCBlbXB0eV9iYXNlKSkKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMiA+Ci1zdHJ1Y3QgaW5oZXJpdDI8IGVtcHR5X2Jhc2UsVDIgPgotewotICAgIHR5cGVkZWYgVDIgdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoMiwgaW5oZXJpdDIsIChlbXB0eV9iYXNlLCBUMikpCi19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW5oZXJpdDI8IGVtcHR5X2Jhc2UsZW1wdHlfYmFzZSA+Ci17Ci0gICAgdHlwZWRlZiBlbXB0eV9iYXNlIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKDIsIGluaGVyaXQyLCAoZW1wdHlfYmFzZSwgZW1wdHlfYmFzZSkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMiwgaW5oZXJpdDIpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgID4KLXN0cnVjdCBpbmhlcml0MwotICAgIDogaW5oZXJpdDI8Ci0gICAgICAgICAgdHlwZW5hbWUgaW5oZXJpdDI8Ci0gICAgICAgICAgICAgIFQxLCBUMgotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAsIFQzCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDMKLSAgICAgICAgLCBpbmhlcml0MwotICAgICAgICAsICggVDEsIFQyLCBUMykKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDMsIGluaGVyaXQzKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEsIHR5cGVuYW1lIFQ0ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDQKLSAgICA6IGluaGVyaXQyPAotICAgICAgICAgIHR5cGVuYW1lIGluaGVyaXQzPAotICAgICAgICAgICAgICBUMSwgVDIsIFQzCi0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgVDQKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNAotICAgICAgICAsIGluaGVyaXQ0Ci0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDQsIGluaGVyaXQ0KQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEsIHR5cGVuYW1lIFQ0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ1ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDUKLSAgICA6IGluaGVyaXQyPAotICAgICAgICAgIHR5cGVuYW1lIGluaGVyaXQ0PAotICAgICAgICAgICAgICBUMSwgVDIsIFQzLCBUNAotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAsIFQ1Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBpbmhlcml0NQotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoNSwgaW5oZXJpdDUpCi0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUMiA9IGVtcHR5X2Jhc2UKLSAgICAsIHR5cGVuYW1lIFQzID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDQgPSBlbXB0eV9iYXNlCi0gICAgLCB0eXBlbmFtZSBUNSA9IGVtcHR5X2Jhc2UKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdAotICAgIDogaW5oZXJpdDU8IFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpbmhlcml0PCBuYSxuYSxuYSxuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0KLSAgICAgICAgICB0eXBlbmFtZSBUMSA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQyID0gZW1wdHlfYmFzZQotICAgICAgICAsIHR5cGVuYW1lIFQzID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDQgPSBlbXB0eV9iYXNlCi0gICAgICAgICwgdHlwZW5hbWUgVDUgPSBlbXB0eV9iYXNlCi0KLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgICAgICA6IGluaGVyaXQ8IFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19MQU1CREEoNSwgaW5oZXJpdCkKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19BUklUWSg1LCBpbmhlcml0KQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX1RFTVBMQVRFX0FSSVRZKDUsIDUsIGluaGVyaXQpCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvaXRlcl9mb2xkX2lmX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTc0YmQ4My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvaXRlcl9mb2xkX2lmX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTMzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMS0yMDAyCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vaXRlcl9mb2xkX2lmX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIFN0YXRlID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwCi17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8IGJvb2wgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGVPcAotICAgICAgICAsIHR5cGVuYW1lIEl0ZXJhdG9yT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgU3RhdGVPcCxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXJhdG9yT3A6OnR5cGUgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsPGZhbHNlPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZU9wCi0gICAgICAgICwgdHlwZW5hbWUgSXRlcmF0b3JPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAsIHR5cGVuYW1lIFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFByZWRpY2F0ZSxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIG5vdF9sYXN0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChub3RfbGFzdCk6OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IEl0ZXJhdG9yLFN0YXRlLEZvcndhcmRPcCwgbXBsOjpuZXh0PEl0ZXJhdG9yPiA+IGltcGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgUHJlZGljYXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFByZWRpY2F0ZSxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIG5vdF9sYXN0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChub3RfbGFzdCk6OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IEl0ZXJhdG9yLFN0YXRlLEJhY2t3YXJkT3AsIGlkZW50aXR5PEl0ZXJhdG9yPiA+IGltcGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkUHJlZGljYXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfaW1wbAotewotIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwPCBJdGVyYXRvcixTdGF0ZSA+IGZvcndhcmRfc3RlcDA7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAwOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMDo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDE7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAxOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDI7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAyOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDM7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAzOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMzo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0Ojpub3RfbGFzdAotICAgICAgICAsIGl0ZXJfZm9sZF9pZl9pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjppdGVyYXRvcgotICAgICAgICAgICAgLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjpzdGF0ZQotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgICwgRm9yd2FyZFByZWRpY2F0ZQotICAgICAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICAgICAsIEJhY2t3YXJkUHJlZGljYXRlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgaXRlcl9mb2xkX2lmX251bGxfc3RlcDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6aXRlcmF0b3IKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6c3RhdGUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZSBiYWNrd2FyZF9zdGVwNDsKLQotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDM6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwNDo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDM7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAzOjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMjsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAxOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDI6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAxOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDA6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMTo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDA7Ci0gICAgCi0KLSBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMDo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwNDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9pdGVyX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvaXRlcl9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzA4YjMwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9pdGVyX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9pdGVyX2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAwLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAxLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUxIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAyLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMSxpdGVyMSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMiBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgMyxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTEsaXRlcjEgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUyLGl0ZXIyID46OnR5cGUgc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUzIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCA0LEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMSxpdGVyMSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTIsaXRlcjIgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUzLGl0ZXIzID46OnR5cGUgc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGU0IHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbAotewotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgNAotICAgICAgICAsIEZpcnN0Ci0gICAgICAgICwgTGFzdAotICAgICAgICAsIFN0YXRlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gY2h1bmtfOwotCi0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgLCB0eXBlbmFtZSBjaHVua186Oml0ZXJhdG9yCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6c3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiByZXNfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgLTEsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotICAgIDogaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgLTEKLSAgICAgICAgLCB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLFN0YXRlLEZpcnN0ID46OnR5cGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAtMSxMYXN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2xhbWJkYV9ub19jdHBzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9sYW1iZGFfbm9fY3Rwcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1ZjVmNmIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2xhbWJkYV9ub19jdHBzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyOSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9ub19jdHBzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICBib29sIEMxID0gZmFsc2UsIGJvb2wgQzIgPSBmYWxzZSwgYm9vbCBDMyA9IGZhbHNlLCBib29sIEM0ID0gZmFsc2UKLSAgICAsIGJvb2wgQzUgPSBmYWxzZQotICAgID4KLXN0cnVjdCBsYW1iZGFfb3IKLSAgICA6IHRydWVfCi17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGFtYmRhX29yPCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSA+Ci0gICAgOiBmYWxzZV8KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBBcml0eSA+IHN0cnVjdCBsYW1iZGFfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgIHR5cGVkZWYgaXNfcGxhY2Vob2xkZXI8VD4gaXNfbGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50XzwzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmczLCBUYWcsIGZhbHNlXyA+IGwzOwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTMpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlLCB0eXBlbmFtZSBsMzo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMywgVGFnLCBmYWxzZV8gPiBsMzsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzQsIFRhZywgZmFsc2VfID4gbDQ7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUzKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlNCk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUsIHR5cGVuYW1lIGwzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGw0Ojp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50Xzw1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmczLCBUYWcsIGZhbHNlXyA+IGwzOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnNCwgVGFnLCBmYWxzZV8gPiBsNDsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzUsIFRhZywgZmFsc2VfID4gbDU7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDU6OmlzX2xlIGlzX2xlNTsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTMpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGU0KTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlNSk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUsIHR5cGVuYW1lIGwzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGw0Ojp0eXBlLCB0eXBlbmFtZSBsNTo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgLCB0eXBlbmFtZSBQcm90ZWN0Ci0gICAgPgotc3RydWN0IGxhbWJkYQotewotICAgIC8vLyBNZXRhZnVuY3Rpb24gZm9yd2FyZGluZyBjb25mdXNlcyBNU1ZDIDYueAotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp0ZW1wbGF0ZV9hcml0eTxUPjo6dHlwZSBhcml0eV87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9pbXBsPGFyaXR5Xz4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBULFRhZyxQcm90ZWN0ID4gbF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxfOjp0eXBlIHR5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsXzo6aXNfbGUgaXNfbGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgzLCBsYW1iZGEsIChULCBUYWcsIFByb3RlY3QpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigxLCAzLCBsYW1iZGEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBpc19sYW1iZGFfZXhwcmVzc2lvbgotICAgIDogbGFtYmRhPFQ+Ojppc19sZQotewotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2xlc3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2xlc3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNGI4ZWViLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9sZXNzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xlc3MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBsZXNzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBsZXNzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBsZXNzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbGVzc190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbGVzcwotCi0gICAgOiBsZXNzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbGVzc190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbGVzc190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBsZXNzLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBsZXNzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxlc3NfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlID4gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2xlc3NfZXF1YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2xlc3NfZXF1YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Y2QxNDFiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9sZXNzX2VxdWFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xlc3NfZXF1YWwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBsZXNzX2VxdWFsX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBsZXNzX2VxdWFsX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBsZXNzX2VxdWFsX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbGVzc19lcXVhbF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbGVzc19lcXVhbAotCi0gICAgOiBsZXNzX2VxdWFsX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbGVzc19lcXVhbF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbGVzc19lcXVhbF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBsZXNzX2VxdWFsLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBsZXNzX2VxdWFsKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlIDw9IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9saXN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9saXN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGNjOGM0Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvbGlzdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGlzdC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBsaXN0OwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MDwgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDI8IFQwLFQxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0NDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0NTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDU8IFQwLFQxLFQyLFQzLFQ0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0NzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0ODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBsaXN0Ci0gICAgOiBsaXN0MjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2xpc3RfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvbGlzdF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQzZjM4Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvbGlzdF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyOCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9saXN0X2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCA9IExPTkdfTUFYLCBsb25nIEMxID0gTE9OR19NQVgsIGxvbmcgQzIgPSBMT05HX01BWAotICAgICwgbG9uZyBDMyA9IExPTkdfTUFYLCBsb25nIEM0ID0gTE9OR19NQVgsIGxvbmcgQzUgPSBMT05HX01BWAotICAgICwgbG9uZyBDNiA9IExPTkdfTUFYLCBsb25nIEM3ID0gTE9OR19NQVgsIGxvbmcgQzggPSBMT05HX01BWAotICAgICwgbG9uZyBDOSA9IExPTkdfTUFYLCBsb25nIEMxMCA9IExPTkdfTUFYLCBsb25nIEMxMSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxMiA9IExPTkdfTUFYLCBsb25nIEMxMyA9IExPTkdfTUFYLCBsb25nIEMxNCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxNSA9IExPTkdfTUFYLCBsb25nIEMxNiA9IExPTkdfTUFYLCBsb25nIEMxNyA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxOCA9IExPTkdfTUFYLCBsb25nIEMxOSA9IExPTkdfTUFYCi0gICAgPgotc3RydWN0IGxpc3RfYzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MF9jPFQ+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MF9jPFQ+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxX2M8IFQsQzAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDFfYzwgVCxDMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QyX2M8IFQsQzAsQzEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDJfYzwgVCxDMCxDMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QzX2M8IFQsQzAsQzEsQzIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDNfYzwgVCxDMCxDMSxDMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q0X2M8IFQsQzAsQzEsQzIsQzMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDRfYzwgVCxDMCxDMSxDMixDMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q1X2M8IFQsQzAsQzEsQzIsQzMsQzQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDVfYzwgVCxDMCxDMSxDMixDMyxDNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzkKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxMV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTFfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTJfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxM19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxM19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxNF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE0X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE1X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxNl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTdfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MThfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxOF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxOV9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgPgotc3RydWN0IGxpc3RfYwotICAgIDogbGlzdDIwX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDIwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9tYXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL21hcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5NzRmMjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL21hcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbWFwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IG1hcDsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAwPCAgPgotewotICAgIHR5cGVkZWYgbWFwMDwgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTxUMD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE8VDA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAyPCBUMCxUMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAyPCBUMCxUMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMzwgVDAsVDEsVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMzwgVDAsVDEsVDIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA0PCBUMCxUMSxUMixUMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA0PCBUMCxUMSxUMixUMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA1PCBUMCxUMSxUMixUMyxUNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA1PCBUMCxUMSxUMixUMyxUNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwNjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNjwgVDAsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTY8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE3PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxODwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTk8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgbWFwCi0gICAgOiBtYXAyMDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9taW51cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvbWludXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NTRmZGE4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9taW51cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbWludXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBtaW51c19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbWludXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IG1pbnVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbWludXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbWludXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG1pbnVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbWludXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IG1pbnVzCi0gICAgOiBtaW51czwgbWludXM8IG1pbnVzPCBtaW51czwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIG1pbnVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IG1pbnVzPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IG1pbnVzPCBtaW51czwgbWludXM8IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBtaW51cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IG1pbnVzPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IG1pbnVzPCBtaW51czwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBtaW51cwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgbWludXM8IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IG1pbnVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbWludXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIG1pbnVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIG1pbnVzCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgbWludXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IG1pbnVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAtIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9tb2R1bHVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9tb2R1bHVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2U4OTY5MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvbW9kdWx1cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbW9kdWx1cy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IG1vZHVsdXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IG1vZHVsdXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IG1vZHVsdXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBtb2R1bHVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG1vZHVsdXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG1vZHVsdXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBtb2R1bHVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBtb2R1bHVzCi0KLSAgICA6IG1vZHVsdXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBtb2R1bHVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBtb2R1bHVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIG1vZHVsdXMsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIG1vZHVsdXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IG1vZHVsdXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICUgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL25vdF9lcXVhbF90by5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2Mvbm90X2VxdWFsX3RvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRlMWUxNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2Mvbm90X2VxdWFsX3RvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL25vdF9lcXVhbF90by5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IG5vdF9lcXVhbF90b19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbm90X2VxdWFsX3RvX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBub3RfZXF1YWxfdG9faW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBub3RfZXF1YWxfdG9fdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IG5vdF9lcXVhbF90bwotCi0gICAgOiBub3RfZXF1YWxfdG9faW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBub3RfZXF1YWxfdG9fdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIG5vdF9lcXVhbF90b190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBub3RfZXF1YWxfdG8sIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIG5vdF9lcXVhbF90bykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlICE9IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9vci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2Mvb3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYWU4ZWRmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9vci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9vci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBib29sIENfLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCA+Ci1zdHJ1Y3Qgb3JfaW1wbAotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCA+Ci1zdHJ1Y3Qgb3JfaW1wbDwgZmFsc2UsVDEsVDIsVDMsVDQgPgotICAgIDogb3JfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAsIFQyLCBUMywgVDQKLSAgICAgICAgLCBmYWxzZV8KLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG9yX2ltcGw8Ci0gICAgICAgICAgZmFsc2UKLSAgICAgICAgLCBmYWxzZV8sIGZhbHNlXywgZmFsc2VfLCBmYWxzZV8KLSAgICAgICAgPgotICAgIDogZmFsc2VfCi17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICAsIHR5cGVuYW1lIFQzID0gZmFsc2VfLCB0eXBlbmFtZSBUNCA9IGZhbHNlXywgdHlwZW5hbWUgVDUgPSBmYWxzZV8KLSAgICA+Ci1zdHJ1Y3Qgb3JfCi0KLSAgICA6IGF1eDo6b3JfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4KLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIG9yXwotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKAotICAgICAgMgotICAgICwgNQotICAgICwgb3JfCi0gICAgKQotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3BsYWNlaG9sZGVycy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvcGxhY2Vob2xkZXJzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2EyOGMwOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvcGxhY2Vob2xkZXJzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEtMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9wbGFjZWhvbGRlcnMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8IC0xID4gXzsKLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfOwotfQotCi19fQotCi0vLy8gYWd1cnQsIDE3L21hci8wMjogb25lIG1vcmUgcGxhY2Vob2xkZXIgZm9yIHRoZSBsYXN0ICdhcHBseSMnIAotLy8vIHNwZWNpYWxpemF0aW9uCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwxPiBfMTsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8xKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfMTsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDI+IF8yOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzIpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol8yOwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Mz4gXzM7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfMykKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzM7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzw0PiBfNDsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF80KQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfNDsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDU+IF81OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzUpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol81OwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Nj4gXzY7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfNikKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzY7Ci19Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvcGx1cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvcGx1cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkOGIyY2QuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3BsdXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3BsdXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBwbHVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBwbHVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBwbHVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgcGx1c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBwbHVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBwbHVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcGx1c190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgcGx1cwotICAgIDogcGx1czwgcGx1czwgcGx1czwgcGx1czwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIHBsdXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgcGx1czwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBwbHVzPCBwbHVzPCBwbHVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgcGx1cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IHBsdXM8IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogcGx1czwgcGx1czwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBwbHVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBwbHVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgcGx1c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgcGx1c190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgcGx1cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcGx1c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgKyBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvcXVvdGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3F1b3RlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTBiYjNhNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvcXVvdGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3F1b3RlLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgYm9vbCBoYXNfdHlwZV8gPgotc3RydWN0IHF1b3RlX2ltcGwKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBxdW90ZV9pbXBsPCBULGZhbHNlID4KLXsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGUxCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBxdW90ZV9pbXBsPAotICAgICAgICAgICAgICBGPFUxPgotICAgICAgICAgICAgLCBhdXg6Omhhc190eXBlPCBGPFUxPiA+Ojp2YWx1ZQotICAgICAgICAgICAgPgotCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgID4KLXN0cnVjdCBxdW90ZTIKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBxdW90ZV9pbXBsPAotICAgICAgICAgICAgICBGPCBVMSxVMiA+Ci0gICAgICAgICAgICAsIGF1eDo6aGFzX3R5cGU8IEY8IFUxLFUyID4gPjo6dmFsdWUKLSAgICAgICAgICAgID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlMwotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBxdW90ZV9pbXBsPAotICAgICAgICAgICAgICBGPCBVMSxVMixVMyA+Ci0gICAgICAgICAgICAsIGF1eDo6aGFzX3R5cGU8IEY8IFUxLFUyLFUzID4gPjo6dmFsdWUKLSAgICAgICAgICAgID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgID4KLXN0cnVjdCBxdW90ZTQKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBxdW90ZV9pbXBsPAotICAgICAgICAgICAgICBGPCBVMSxVMixVMyxVNCA+Ci0gICAgICAgICAgICAsIGF1eDo6aGFzX3R5cGU8IEY8IFUxLFUyLFUzLFU0ID4gPjo6dmFsdWUKLSAgICAgICAgICAgID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNAotICAgICAgICAsIHR5cGVuYW1lIFA1Ci0gICAgICAgID4KLSAgICAgIGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlNQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgICAgICwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwKLSAgICAgICAgICAgICAgRjwgVTEsVTIsVTMsVTQsVTUgPgotICAgICAgICAgICAgLCBhdXg6Omhhc190eXBlPCBGPCBVMSxVMixVMyxVNCxVNSA+ID46OnZhbHVlCi0gICAgICAgICAgICA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvcmV2ZXJzZV9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDNhZDc1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMzEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDwgMCxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTAgYmt3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDwgMSxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlMSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw8IDIsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTIgYmt3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIAotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDwgMyxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlMyBia3dkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw8IDQsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTQgYmt3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGU0LCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbAotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgIAotCi0gICAgdHlwZWRlZiByZXZlcnNlX2ZvbGRfaW1wbDwKLSAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgLCBpdGVyNAotICAgICAgICAsIExhc3QKLSAgICAgICAgLCBmd2Rfc3RhdGU0Ci0gICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IG5lc3RlZF9jaHVuazsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjpzdGF0ZSBia3dkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTQsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIAotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsPCAtMSxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIHJldmVyc2VfZm9sZF9pbXBsPAotICAgICAgICAgIC0xCi0gICAgICAgICwgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8Rm9yd2FyZE9wLFN0YXRlLCB0eXBlbmFtZSBkZXJlZjxGaXJzdD46OnR5cGU+Ojp0eXBlCi0gICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IG5lc3RlZF9zdGVwOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8Ci0gICAgICAgICAgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjpzdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIGRlcmVmPEZpcnN0Pjo6dHlwZQotICAgICAgICA+Ojp0eXBlIHN0YXRlOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw8IC0xLExhc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzNiZjUwOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMzEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgMCxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTAgYmt3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPCAxLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIAotCi0gICAgdHlwZWRlZiBmd2Rfc3RhdGUxIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPCAyLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIAotCi0gICAgdHlwZWRlZiBmd2Rfc3RhdGUyIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgMyxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTIsaXRlcjIgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlMyBia3dkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMyxpdGVyMiA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgNCxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTIsaXRlcjIgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTMsaXRlcjMgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlNCBia3dkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlNCxpdGVyMyA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUzLGl0ZXIyID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIAotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGwKLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTIsaXRlcjIgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTMsaXRlcjMgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAKLQotICAgIHR5cGVkZWYgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgLCBpdGVyNAotICAgICAgICAsIExhc3QKLSAgICAgICAgLCBmd2Rfc3RhdGU0Ci0gICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IG5lc3RlZF9jaHVuazsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjpzdGF0ZSBia3dkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlNCxpdGVyMyA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUzLGl0ZXIyID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIAotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IC0xLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAtMQotICAgICAgICAsIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsU3RhdGUsRmlyc3QgPjo6dHlwZQotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfc3RlcDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPAotICAgICAgICAgIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6c3RhdGUKLSAgICAgICAgLCBGaXJzdAotICAgICAgICA+Ojp0eXBlIHN0YXRlOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgLTEsTGFzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3NldC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2Mvc2V0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGM0Y2ExMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2Mvc2V0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zZXQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3Qgc2V0OwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDA8ICA+Ci17Ci0gICAgdHlwZWRlZiBzZXQwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDI8IFQwLFQxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDI8IFQwLFQxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDU8IFQwLFQxLFQyLFQzLFQ0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDU8IFQwLFQxLFQyLFQzLFQ0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTc8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBzZXQKLSAgICA6IHNldDIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3NldF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9zZXRfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlZjJmZGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3NldF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyOCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zZXRfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQwX2M8VD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDBfYzxUPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDFfYzwgVCxDMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxX2M8IFQsQzAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDJfYzwgVCxDMCxDMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyX2M8IFQsQzAsQzEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDNfYzwgVCxDMCxDMSxDMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQzX2M8IFQsQzAsQzEsQzIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDRfYzwgVCxDMCxDMSxDMixDMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ0X2M8IFQsQzAsQzEsQzIsQzMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDVfYzwgVCxDMCxDMSxDMixDMyxDNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ1X2M8IFQsQzAsQzEsQzIsQzMsQzQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDEwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDExX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDExX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxMl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTJfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDEzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTNfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTVfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTVfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE2X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNgotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxN19jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxOF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MThfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE5X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgID4KLXN0cnVjdCBzZXRfYwotICAgIDogc2V0MjBfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2Mvc2hpZnRfbGVmdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2Mvc2hpZnRfbGVmdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5NjRmYjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3NoaWZ0X2xlZnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2hpZnRfbGVmdC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHNoaWZ0X2xlZnRfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHNoaWZ0X2xlZnRfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHNoaWZ0X2xlZnRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBzaGlmdF9sZWZ0X3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBzaGlmdF9sZWZ0Ci0KLSAgICA6IHNoaWZ0X2xlZnRfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBzaGlmdF9sZWZ0X3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBzaGlmdF9sZWZ0X3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIHNoaWZ0X2xlZnQsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIHNoaWZ0X2xlZnQpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOLCB0eXBlbmFtZSBTID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBOOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgPDwgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKFMpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2Mvc2hpZnRfcmlnaHQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3NoaWZ0X3JpZ2h0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTdhNWZlMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2Mvc2hpZnRfcmlnaHQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2hpZnRfcmlnaHQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBzaGlmdF9yaWdodF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgc2hpZnRfcmlnaHRfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHNoaWZ0X3JpZ2h0X2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IHNoaWZ0X3JpZ2h0Ci0KLSAgICA6IHNoaWZ0X3JpZ2h0X2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgc2hpZnRfcmlnaHRfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIHNoaWZ0X3JpZ2h0X3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIHNoaWZ0X3JpZ2h0LCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBzaGlmdF9yaWdodCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOLCB0eXBlbmFtZSBTID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBOOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgPj4gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKFMpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvdGVtcGxhdGVfYXJpdHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3RlbXBsYXRlX2FyaXR5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzJiYTBhYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvdGVtcGxhdGVfYXJpdHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gInRlbXBsYXRlX2FyaXR5LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBpbnQgTiA+IHN0cnVjdCBhcml0eV90YWcKLXsKLSAgICB0eXBlZGVmIGNoYXIgKCZ0eXBlKVtOICsgMV07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBDMSwgaW50IEMyLCBpbnQgQzMsIGludCBDNCwgaW50IEM1LCBpbnQgQzYKLSAgICA+Ci1zdHJ1Y3QgbWF4X2FyaXR5Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPQotICAgICAgICAgICggQzYgPiAwID8gQzYgOiAoIEM1ID4gMCA/IEM1IDogKCBDNCA+IDAgPyBDNCA6ICggQzMgPiAwID8gQzMgOiAoIEMyID4gMCA/IEMyIDogKCBDMSA+IDAgPyBDMSA6IC0xICkgKSApICkgKSApCi0gICAgICAgICk7Ci19OwotCi1hcml0eV90YWc8MD46OnR5cGUgYXJpdHlfaGVscGVyKC4uLik7Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEKLSAgICA+Ci10eXBlbmFtZSBhcml0eV90YWc8MT46OnR5cGUKLWFyaXR5X2hlbHBlcih0eXBlX3dyYXBwZXI8IEY8VDE+ID4sIGFyaXR5X3RhZzwxPik7Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXR5cGVuYW1lIGFyaXR5X3RhZzwyPjo6dHlwZQotYXJpdHlfaGVscGVyKHR5cGVfd3JhcHBlcjwgRjwgVDEsVDIgPiA+LCBhcml0eV90YWc8Mj4pOwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXR5cGVuYW1lIGFyaXR5X3RhZzwzPjo6dHlwZQotYXJpdHlfaGVscGVyKHR5cGVfd3JhcHBlcjwgRjwgVDEsVDIsVDMgPiA+LCBhcml0eV90YWc8Mz4pOwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotdHlwZW5hbWUgYXJpdHlfdGFnPDQ+Ojp0eXBlCi1hcml0eV9oZWxwZXIodHlwZV93cmFwcGVyPCBGPCBUMSxUMixUMyxUNCA+ID4sIGFyaXR5X3RhZzw0Pik7Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQKLSAgICAgICAgLCB0eXBlbmFtZSBQNQotICAgICAgICA+Ci0gICAgICBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLSAgICA+Ci10eXBlbmFtZSBhcml0eV90YWc8NT46OnR5cGUKLWFyaXR5X2hlbHBlcih0eXBlX3dyYXBwZXI8IEY8IFQxLFQyLFQzLFQ0LFQ1ID4gPiwgYXJpdHlfdGFnPDU+KTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNAotICAgICAgICAsIHR5cGVuYW1lIFA1LCB0eXBlbmFtZSBQNgotICAgICAgICA+Ci0gICAgICBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFQ2Ci0gICAgPgotdHlwZW5hbWUgYXJpdHlfdGFnPDY+Ojp0eXBlCi1hcml0eV9oZWxwZXIodHlwZV93cmFwcGVyPCBGPCBUMSxUMixUMyxUNCxUNSxUNiA+ID4sIGFyaXR5X3RhZzw2Pik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgaW50IE4gPgotc3RydWN0IHRlbXBsYXRlX2FyaXR5X2ltcGwKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9Ci0gICAgICAgICAgc2l6ZW9mKDo6bmRuYm9vc3Q6Om1wbDo6YXV4Ojphcml0eV9oZWxwZXIodHlwZV93cmFwcGVyPEY+KCksIGFyaXR5X3RhZzxOPigpKSkgLSAxCi0gICAgICAgICk7Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+Ci1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHkKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAoCi0gICAgICAgICAgbWF4X2FyaXR5PCB0ZW1wbGF0ZV9hcml0eV9pbXBsPCBGLDEgPjo6dmFsdWUsIHRlbXBsYXRlX2FyaXR5X2ltcGw8IEYsMiA+Ojp2YWx1ZSwgdGVtcGxhdGVfYXJpdHlfaW1wbDwgRiwzID46OnZhbHVlLCB0ZW1wbGF0ZV9hcml0eV9pbXBsPCBGLDQgPjo6dmFsdWUsIHRlbXBsYXRlX2FyaXR5X2ltcGw8IEYsNSA+Ojp2YWx1ZSwgdGVtcGxhdGVfYXJpdHlfaW1wbDwgRiw2ID46OnZhbHVlID46OnZhbHVlCi0gICAgICAgICkpOwotICAgIHR5cGVkZWYgbXBsOjppbnRfPHZhbHVlPiB0eXBlOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvdGltZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3RpbWVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWE1NWZlZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvdGltZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3RpbWVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgdGltZXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHRpbWVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCB0aW1lc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHRpbWVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHRpbWVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCB0aW1lc19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHRpbWVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCB0aW1lcwotICAgIDogdGltZXM8IHRpbWVzPCB0aW1lczwgdGltZXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCB0aW1lczwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiB0aW1lczwgdGltZXM8IHRpbWVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCB0aW1lczwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiB0aW1lczwgdGltZXM8IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IHRpbWVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiB0aW1lc19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHRpbWVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSB0aW1lc190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIHRpbWVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCB0aW1lc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgKiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvdW5wYWNrX2FyZ3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3VucGFja19hcmdzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWVjMzFhZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvdW5wYWNrX2FyZ3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdW5wYWNrX2FyZ3MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgaW50IHNpemUsIHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCAwLEYsQXJncyA+Ci0gICAgOiBhcHBseTA8Ci0gICAgICAgICAgRgotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgMSxGLEFyZ3MgPgotICAgIDogYXBwbHkxPAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgMixGLEFyZ3MgPgotICAgIDogYXBwbHkyPAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDMsRixBcmdzID4KLSAgICA6IGFwcGx5MzwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywyID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDQsRixBcmdzID4KLSAgICA6IGFwcGx5NDwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywyID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMyA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCA1LEYsQXJncyA+Ci0gICAgOiBhcHBseTU8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDMgPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsNCA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IHVucGFja19hcmdzCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEFyZ3MgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGF1eDo6dW5wYWNrX2FyZ3NfaW1wbDwgc2l6ZTxBcmdzPjo6dmFsdWUsRiwgQXJncyA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfUEFTU19USFJPVUdIX0xBTUJEQV9TUEVDKDEsIHVucGFja19hcmdzKQotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvdmVjdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy92ZWN0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjY3NTg5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy92ZWN0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCB2ZWN0b3I7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMDwgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IHZlY3RvcgotICAgIDogdmVjdG9yMjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvdmVjdG9yX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3ZlY3Rvcl9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTJmYmRiNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvdmVjdG9yX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzA5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvcl9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAgPSBMT05HX01BWCwgbG9uZyBDMSA9IExPTkdfTUFYLCBsb25nIEMyID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzMgPSBMT05HX01BWCwgbG9uZyBDNCA9IExPTkdfTUFYLCBsb25nIEM1ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzYgPSBMT05HX01BWCwgbG9uZyBDNyA9IExPTkdfTUFYLCBsb25nIEM4ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzkgPSBMT05HX01BWCwgbG9uZyBDMTAgPSBMT05HX01BWCwgbG9uZyBDMTEgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTIgPSBMT05HX01BWCwgbG9uZyBDMTMgPSBMT05HX01BWCwgbG9uZyBDMTQgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTUgPSBMT05HX01BWCwgbG9uZyBDMTYgPSBMT05HX01BWCwgbG9uZyBDMTcgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTggPSBMT05HX01BWCwgbG9uZyBDMTkgPSBMT05HX01BWAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjBfYzxUPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMF9jPFQ+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMV9jPCBULCBUKEMwKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxX2M8IFQsIFQoQzApID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IyX2M8IFQsIFQoQzApLCBUKEMxKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyX2M8IFQsIFQoQzApLCBUKEMxKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yM19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjNfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I0X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I1X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I1X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yNl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjZfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I3X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNwotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I4X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I4X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yOV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjlfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTBfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTBfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjExX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEyX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTNfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMikgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTNfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMikgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMwotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE0X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMykgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE1X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTZfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTZfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNgotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE3X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNikgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE4X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNykgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTlfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTlfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCkgPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYwotICAgIDogdmVjdG9yMjBfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCksIFQoQzE5KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyMF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNyksIFQoQzE4KSwgVChDMTkpID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9hZHZhbmNlX2JhY2t3YXJkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9hZHZhbmNlX2JhY2t3YXJkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTc2MTJhMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYWR2YW5jZV9iYWNrd2FyZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9hZHZhbmNlX2JhY2t3YXJkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGxvbmcgTiA+IHN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkOwotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8MD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgdHlwZTsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgYXBwbHk8aW50PgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgdHlwZTsKLSAgICB9OwotCi19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwxPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgdHlwZTsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgYXBwbHk8aW50PgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgdHlwZTsKLSAgICB9OwotCi19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwyPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIHR5cGU7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IGFwcGx5PGludD4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHR5cGU7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgdHlwZTsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgYXBwbHk8aW50PgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgdHlwZTsKLSAgICB9OwotCi19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDw0PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgdHlwZTsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgYXBwbHk8aW50PgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgdHlwZTsKLSAgICB9OwotCi19OwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2JhY2t3YXJkPDQ+Ci0gICAgICAgICAgICAsIEl0ZXJhdG9yCi0gICAgICAgICAgICA+Ojp0eXBlIGNodW5rX3Jlc3VsdF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9iYWNrd2FyZDwoCi0gICAgICAgICAgICAgICAgKE4gLSA0KSA8IDAKLSAgICAgICAgICAgICAgICAgICAgPyAwCi0gICAgICAgICAgICAgICAgICAgIDogTiAtIDQKLSAgICAgICAgICAgICAgICAgICAgKT4KLSAgICAgICAgICAgICwgY2h1bmtfcmVzdWx0XwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19fX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2FkdmFuY2VfZm9yd2FyZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYWR2YW5jZV9mb3J3YXJkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODg1MjA3NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYWR2YW5jZV9mb3J3YXJkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2FkdmFuY2VfZm9yd2FyZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBsb25nIE4gPiBzdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkOwotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwwPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCB0eXBlOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBhcHBseTxpbnQ+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCB0eXBlOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8MT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgdHlwZTsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgYXBwbHk8aW50PgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgdHlwZTsKLSAgICB9OwotCi19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDI+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIHR5cGU7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IGFwcGx5PGludD4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHR5cGU7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwzPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyB0eXBlOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBhcHBseTxpbnQ+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCB0eXBlOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8ND4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgdHlwZTsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgYXBwbHk8aW50PgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgdHlwZTsKLSAgICB9OwotCi19OwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfZm9yd2FyZDw0PgotICAgICAgICAgICAgLCBJdGVyYXRvcgotICAgICAgICAgICAgPjo6dHlwZSBjaHVua19yZXN1bHRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfZm9yd2FyZDwoCi0gICAgICAgICAgICAgICAgKE4gLSA0KSA8IDAKLSAgICAgICAgICAgICAgICAgICAgPyAwCi0gICAgICAgICAgICAgICAgICAgIDogTiAtIDQKLSAgICAgICAgICAgICAgICAgICAgKT4KLSAgICAgICAgICAgICwgY2h1bmtfcmVzdWx0XwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19fX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2FuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDY5Yjk0MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FuZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgYm9vbCBDXyA+IHN0cnVjdCBhbmRfaW1wbAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYW5kX2ltcGw8dHJ1ZT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBhbmRfaW1wbDwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IFQyLFQzLFQ0LHRydWVfID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhbmRfaW1wbDx0cnVlPgotICAgIDo6cmVzdWx0XzwgdHJ1ZV8sdHJ1ZV8sdHJ1ZV8sdHJ1ZV8gPgotICAgICAgICA6IHRydWVfCi17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICAsIHR5cGVuYW1lIFQzID0gdHJ1ZV8sIHR5cGVuYW1lIFQ0ID0gdHJ1ZV8sIHR5cGVuYW1lIFQ1ID0gdHJ1ZV8KLSAgICA+Ci1zdHJ1Y3QgYW5kXwotCi0gICAgOiBhdXg6OmFuZF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IFQyLFQzLFQ0LFQ1ID4KLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGFuZF8KLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigKLSAgICAgIDIKLSAgICAsIDUKLSAgICAsIGFuZF8KLSAgICApCi0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYXBwbHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2FwcGx5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQ1YzQ3Mi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYXBwbHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTY2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FwcGx5LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkwCi0KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAwPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgIAotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDEKLSAgICAgICAgLCBhcHBseTAKLSAgICAgICAgLCAoRiApCi0gICAgICAgICkKLX07Ci0KLS8vLyB3b3JrYXJvdW5kIGZvciBFVEkgYnVnCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXBwbHkwPGludD4KLXsKLSAgICB0eXBlZGVmIGludCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseTEKLQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAyCi0gICAgICAgICwgYXBwbHkxCi0gICAgICAgICwgKEYsIFQxKQotICAgICAgICApCi19OwotCi0vLy8gd29ya2Fyb3VuZCBmb3IgRVRJIGJ1ZwotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5MTwgaW50LGludCA+Ci17Ci0gICAgdHlwZWRlZiBpbnQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5MgotCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAzCi0gICAgICAgICwgYXBwbHkyCi0gICAgICAgICwgKEYsIFQxLCBUMikKLSAgICAgICAgKQotfTsKLQotLy8vIHdvcmthcm91bmQgZm9yIEVUSSBidWcKLXRlbXBsYXRlPD4KLXN0cnVjdCBhcHBseTI8IGludCxpbnQsaW50ID4KLXsKLSAgICB0eXBlZGVmIGludCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5MwotCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMzwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIsIFQzCi0gICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNAotICAgICAgICAsIGFwcGx5MwotICAgICAgICAsIChGLCBUMSwgVDIsIFQzKQotICAgICAgICApCi19OwotCi0vLy8gd29ya2Fyb3VuZCBmb3IgRVRJIGJ1ZwotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5MzwgaW50LGludCxpbnQsaW50ID4KLXsKLSAgICB0eXBlZGVmIGludCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseTQKLQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDQ8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYXBwbHk0Ci0gICAgICAgICwgKEYsIFQxLCBUMiwgVDMsIFQ0KQotICAgICAgICApCi19OwotCi0vLy8gd29ya2Fyb3VuZCBmb3IgRVRJIGJ1ZwotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5NDwgaW50LGludCxpbnQsaW50LGludCA+Ci17Ci0gICAgdHlwZWRlZiBpbnQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5NQotCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA2Ci0gICAgICAgICwgYXBwbHk1Ci0gICAgICAgICwgKEYsIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotLy8vIHdvcmthcm91bmQgZm9yIEVUSSBidWcKLXRlbXBsYXRlPD4KLXN0cnVjdCBhcHBseTU8IGludCxpbnQsaW50LGludCxpbnQsaW50ID4KLXsKLSAgICB0eXBlZGVmIGludCB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2FwcGx5X2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYXBwbHlfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjJhOWE3Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYXBwbHlfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FwcGx5X2Z3ZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5MDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseTE7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5MjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5MzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseTQ7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5NTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2FwcGx5X3dyYXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2FwcGx5X3dyYXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTE1N2QxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9hcHBseV93cmFwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcHBseV93cmFwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRj4KLXN0cnVjdCBtc3ZjX2FwcGx5MAotewotICAgIHRlbXBsYXRlPCBib29sID4gc3RydWN0IGZfIDogRiB7fTsKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBmXzx0cnVlPgotICAgIHsKLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAgID0gaW50ID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgaW50IHR5cGU7Ci0gICAgICAgIH07Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUICA9IGludCA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogZl88IGF1eDo6bXN2Y19uZXZlcl90cnVlPEY+Ojp2YWx1ZSA+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIGFwcGx5PD4KLSAgICB7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAwCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2FwcGx5MDxGPjo6dGVtcGxhdGUgcmVzdWx0XzwKLSAgICAgICAgIAotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gd29ya2Fyb3VuZCBmb3IgRVRJIGJ1ZwotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5X3dyYXAwPGludD4KLXsKLSAgICB0eXBlZGVmIGludCB0eXBlOwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEY+Ci1zdHJ1Y3QgbXN2Y19hcHBseTEKLXsKLSAgICB0ZW1wbGF0ZTwgYm9vbCA+IHN0cnVjdCBmXyA6IEYge307Ci0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgZl88dHJ1ZT4KLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IHN0cnVjdCBhcHBseQotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIGludCB0eXBlOwotICAgICAgICB9OwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVDEgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IGZfPCBhdXg6Om1zdmNfbmV2ZXJfdHJ1ZTxGPjo6dmFsdWUgPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSBhcHBseTxUMT4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDEKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfYXBwbHkxPEY+Ojp0ZW1wbGF0ZSByZXN1bHRfPAotICAgICAgICAgIFQxCi0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyB3b3JrYXJvdW5kIGZvciBFVEkgYnVnCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDE8IGludCxpbnQgPgotewotICAgIHR5cGVkZWYgaW50IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRj4KLXN0cnVjdCBtc3ZjX2FwcGx5MgotewotICAgIHRlbXBsYXRlPCBib29sID4gc3RydWN0IGZfIDogRiB7fTsKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBmXzx0cnVlPgotICAgIHsKLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IHN0cnVjdCBhcHBseQotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIGludCB0eXBlOwotICAgICAgICB9OwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBmXzwgYXV4Ojptc3ZjX25ldmVyX3RydWU8Rj46OnZhbHVlID4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgYXBwbHk8IFQxLFQyID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAyCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2FwcGx5MjxGPjo6dGVtcGxhdGUgcmVzdWx0XzwKLSAgICAgICAgICBUMSwgVDIKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHdvcmthcm91bmQgZm9yIEVUSSBidWcKLXRlbXBsYXRlPD4KLXN0cnVjdCBhcHBseV93cmFwMjwgaW50LGludCxpbnQgPgotewotICAgIHR5cGVkZWYgaW50IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRj4KLXN0cnVjdCBtc3ZjX2FwcGx5MwotewotICAgIHRlbXBsYXRlPCBib29sID4gc3RydWN0IGZfIDogRiB7fTsKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBmXzx0cnVlPgotICAgIHsKLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBpbnQgdHlwZTsKLSAgICAgICAgfTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IGZfPCBhdXg6Om1zdmNfbmV2ZXJfdHJ1ZTxGPjo6dmFsdWUgPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSBhcHBseTwgVDEsVDIsVDMgPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAzCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2FwcGx5MzxGPjo6dGVtcGxhdGUgcmVzdWx0XzwKLSAgICAgICAgICBUMSwgVDIsIFQzCi0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyB3b3JrYXJvdW5kIGZvciBFVEkgYnVnCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDM8IGludCxpbnQsaW50LGludCA+Ci17Ci0gICAgdHlwZWRlZiBpbnQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGPgotc3RydWN0IG1zdmNfYXBwbHk0Ci17Ci0gICAgdGVtcGxhdGU8IGJvb2wgPiBzdHJ1Y3QgZl8gOiBGIHt9OwotICAgIHRlbXBsYXRlPD4gc3RydWN0IGZfPHRydWU+Ci0gICAgewotICAgICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQKLSAgICAgICAgICAgID4KLSAgICAgICAgc3RydWN0IGFwcGx5Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgaW50IHR5cGU7Ci0gICAgICAgIH07Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IGZfPCBhdXg6Om1zdmNfbmV2ZXJfdHJ1ZTxGPjo6dmFsdWUgPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSBhcHBseTwgVDEsVDIsVDMsVDQgPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseV93cmFwNAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19hcHBseTQ8Rj46OnRlbXBsYXRlIHJlc3VsdF88Ci0gICAgICAgICAgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHdvcmthcm91bmQgZm9yIEVUSSBidWcKLXRlbXBsYXRlPD4KLXN0cnVjdCBhcHBseV93cmFwNDwgaW50LGludCxpbnQsaW50LGludCA+Ci17Ci0gICAgdHlwZWRlZiBpbnQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGPgotc3RydWN0IG1zdmNfYXBwbHk1Ci17Ci0gICAgdGVtcGxhdGU8IGJvb2wgPiBzdHJ1Y3QgZl8gOiBGIHt9OwotICAgIHRlbXBsYXRlPD4gc3RydWN0IGZfPHRydWU+Ci0gICAgewotICAgICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgUDUKLSAgICAgICAgICAgID4KLSAgICAgICAgc3RydWN0IGFwcGx5Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgaW50IHR5cGU7Ci0gICAgICAgIH07Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogZl88IGF1eDo6bXN2Y19uZXZlcl90cnVlPEY+Ojp2YWx1ZSA+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIGFwcGx5PCBUMSxUMixUMyxUNCxUNSA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwNQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19hcHBseTU8Rj46OnRlbXBsYXRlIHJlc3VsdF88Ci0gICAgICAgICAgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyB3b3JrYXJvdW5kIGZvciBFVEkgYnVnCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDU8IGludCxpbnQsaW50LGludCxpbnQsaW50ID4KLXsKLSAgICB0eXBlZGVmIGludCB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2FyZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYXJnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU0NDc2YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYXJnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxLTIwMDIKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcmcuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPCAtMSA+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gLTEpOwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwxPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDEpOwotICAgIHR5cGVkZWYgYXJnPDI+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUxIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDI+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMik7Ci0gICAgdHlwZWRlZiBhcmc8Mz4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTIgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8Mz4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAzKTsKLSAgICB0eXBlZGVmIGFyZzw0PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMyB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzw0PgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDQpOwotICAgIHR5cGVkZWYgYXJnPDU+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFU0IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDU+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gNSk7Ci0gICAgdHlwZWRlZiBhcmc8Nj4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTUgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05PTlRZUEVfQVJJVFlfU1BFQygxLGludCwgYXJnKQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2Jhc2ljX2JpbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2Jhc2ljX2JpbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NDk0YTI2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9iYXNpY19iaW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyOCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9iYXNpY19iaW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBib29sID4KLXN0cnVjdCByZXNvbHZlX2FyZ19pbXBsCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMwotICAgICAgICAsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmVzb2x2ZV9hcmdfaW1wbDx0cnVlPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMKLSAgICAgICAgLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAsIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBpc19iaW5kX3RlbXBsYXRlOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnCi0gICAgOiByZXNvbHZlX2FyZ19pbXBsPCBpc19iaW5kX3RlbXBsYXRlPFQ+Ojp2YWx1ZSA+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQsVTEsVTIsVTMsVTQsVTUgPgotewotfTsKLQotdGVtcGxhdGU8IGludCBhcml0eV8gPiBzdHJ1Y3QgYmluZF9jaG9vc2VyOwotCi1hdXg6Om5vX3RhZyBpc19iaW5kX2hlbHBlciguLi4pOwotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBhdXg6Om5vX3RhZyBpc19iaW5kX2hlbHBlcihwcm90ZWN0PFQ+Kik7Ci0KLXRlbXBsYXRlPCBpbnQgTiA+Ci1hdXg6Onllc190YWcgaXNfYmluZF9oZWxwZXIoYXJnPE4+Kik7Ci0KLXRlbXBsYXRlPCBib29sIGlzX3JlZl8gID0gdHJ1ZSA+Ci1zdHJ1Y3QgaXNfYmluZF90ZW1wbGF0ZV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IGZhbHNlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX2JpbmRfdGVtcGxhdGVfaW1wbDxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAgICBzaXplb2YoYXV4Ojppc19iaW5kX2hlbHBlcihzdGF0aWNfY2FzdDxUKj4oMCkpKQotICAgICAgICAgICAgICAgID09IHNpemVvZihhdXg6Onllc190YWcpCi0gICAgICAgICAgICApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBpc19iaW5kX3RlbXBsYXRlCi0gICAgOiBpc19iaW5kX3RlbXBsYXRlX2ltcGw8IDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfcmVmZXJlbmNlX2ltcGw8VD46OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFQ+Ci17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQwCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDA8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDA8Rj4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygxLCBiaW5kMCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygxLCBiaW5kMCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kMQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDE8IEYsVDEgPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDIsIGJpbmQxKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDIsIGJpbmQxKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kMgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDI8IEYsVDEsVDIgPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDMsIGJpbmQyKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDMsIGJpbmQyKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDMKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMzwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQzPCBGLFQxLFQyLFQzID4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg0LCBiaW5kMykKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg0LCBiaW5kMykKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kNAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kNDwgRixUMSxUMixUMyxUNCA+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNSwgYmluZDQpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNSwgYmluZDQpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQ1Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQ0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUNSxVMSxVMixVMyxVNCxVNSA+IHQ1OwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZSwgdHlwZW5hbWUgdDU6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9iaW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9iaW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTJhMmIyNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYmluZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MzIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGJvb2wgPgotc3RydWN0IHJlc29sdmVfYXJnX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzCi0gICAgICAgICwgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCByZXNvbHZlX2FyZ19pbXBsPHRydWU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMwotICAgICAgICAsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGlzX2JpbmRfdGVtcGxhdGU7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmcKLSAgICA6IHJlc29sdmVfYXJnX2ltcGw8IGlzX2JpbmRfdGVtcGxhdGU8VD46OnZhbHVlID4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVCxVMSxVMixVMyxVNCxVNSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgcmVwbGFjZV91bm5hbWVkX2FyZ19pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEFyZyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEFyZyBuZXh0OwotICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJlcGxhY2VfdW5uYW1lZF9hcmdfaW1wbDwgYXJnPCAtMSA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQXJnID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxBcmc+Ojp0eXBlIG5leHQ7Ci0gICAgICAgIHR5cGVkZWYgQXJnIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBBcmcgPgotc3RydWN0IHJlcGxhY2VfdW5uYW1lZF9hcmcKLSAgICA6IHJlcGxhY2VfdW5uYW1lZF9hcmdfaW1wbDxUPjo6dGVtcGxhdGUgcmVzdWx0XzxBcmc+Ci17Ci19OwotCi10ZW1wbGF0ZTwgaW50IGFyaXR5XyA+IHN0cnVjdCBiaW5kX2Nob29zZXI7Ci0KLWF1eDo6bm9fdGFnIGlzX2JpbmRfaGVscGVyKC4uLik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IGF1eDo6bm9fdGFnIGlzX2JpbmRfaGVscGVyKHByb3RlY3Q8VD4qKTsKLQotdGVtcGxhdGU8IGludCBOID4KLWF1eDo6eWVzX3RhZyBpc19iaW5kX2hlbHBlcihhcmc8Tj4qKTsKLQotdGVtcGxhdGU8IGJvb2wgaXNfcmVmXyAgPSB0cnVlID4KLXN0cnVjdCBpc19iaW5kX3RlbXBsYXRlX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfYmluZF90ZW1wbGF0ZV9pbXBsPGZhbHNlPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICAgICAgIHNpemVvZihhdXg6OmlzX2JpbmRfaGVscGVyKHN0YXRpY19jYXN0PFQqPigwKSkpCi0gICAgICAgICAgICAgICAgPT0gc2l6ZW9mKGF1eDo6eWVzX3RhZykKLSAgICAgICAgICAgICk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGlzX2JpbmRfdGVtcGxhdGUKLSAgICA6IGlzX2JpbmRfdGVtcGxhdGVfaW1wbDwgOjpuZG5ib29zdDo6ZGV0YWlsOjppc19yZWZlcmVuY2VfaW1wbDxUPjo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88VD4KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDAKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDA8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDA8Rj4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygxLCBiaW5kMCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygxLCBiaW5kMCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kMQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDE8IEYsVDEgPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDIsIGJpbmQxKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDIsIGJpbmQxKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kMgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kMjwgRixUMSxUMiA+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMywgYmluZDIpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMywgYmluZDIpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMwotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMzwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQzPCBGLFQxLFQyLFQzID4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg0LCBiaW5kMykKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg0LCBiaW5kMykKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kNAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUNCxuNCA+IHI0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0Ojp0eXBlIGE0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0OjpuZXh0IG41OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kNDwgRixUMSxUMixUMyxUNCA+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNSwgYmluZDQpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNSwgYmluZDQpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQ1Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ0LG40ID4gcjQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6OnR5cGUgYTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6Om5leHQgbjU7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ1LG41ID4gcjU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjU6OnR5cGUgYTU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjU6Om5leHQgbjY7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNSxVMSxVMixVMyxVNCxVNSA+IHQ1OwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlLCB0eXBlbmFtZSB0NTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDYsIGJpbmQ1KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDYsIGJpbmQ1KQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2JpbmRfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9iaW5kX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiZDFiNmQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2JpbmRfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpbmRfZndkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDE7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDM7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDQ7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQ1OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYml0YW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9iaXRhbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2ViMTQ3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9iaXRhbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpdGFuZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0KLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzEpOjp2YWx1ZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMik6OnZhbHVlCi0gICAgPgotc3RydWN0IGJpdGFuZF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggdGFnMV8gPiB0YWcyXyApCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGJpdGFuZF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgYml0YW5kX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0YW5kX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBiaXRhbmRfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGJpdGFuZF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0YW5kX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBiaXRhbmRfMjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXwotCi0gICAgOiBpZl88Ci0KLSAgICAgICAgICBpc19uYTxOMz4KLSAgICAgICAgLCBiaXRhbmRfMjwgTjEsTjIgPgotICAgICAgICAsIGJpdGFuZF88Ci0gICAgICAgICAgICAgIGJpdGFuZF8yPCBOMSxOMiA+Ci0gICAgICAgICAgICAsIE4zLCBONCwgTjUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0YW5kXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMQotICAgICwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXzIKLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgYml0YW5kX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGJpdGFuZF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGJpdGFuZF90YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgYml0YW5kXzIsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGJpdGFuZF8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBUIG4xLCBUIG4yID4KLXN0cnVjdCBiaXRhbmRfd2tuZAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChULCB2YWx1ZSAgPSAobjEgJiBuMikpOwotICAgIHR5cGVkZWYgaW50ZWdyYWxfYzwgVCx2YWx1ZSA+IHR5cGU7Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiaXRhbmRfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhdXg6OmJpdGFuZF93a25kPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCBOMTo6dmFsdWUKLSAgICAgICAgICAgICwgTjI6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYml0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2JpdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjNmNWEwMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYml0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpdG9yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIHRhZzFfID4gdGFnMl8gKQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBiaXRvcl9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgYml0b3JfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBiaXRvcl9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0b3JfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGJpdG9yX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBiaXRvcl90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfMjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfCi0KLSAgICA6IGlmXzwKLQotICAgICAgICAgIGlzX25hPE4zPgotICAgICAgICAsIGJpdG9yXzI8IE4xLE4yID4KLSAgICAgICAgLCBiaXRvcl88Ci0gICAgICAgICAgICAgIGJpdG9yXzI8IE4xLE4yID4KLSAgICAgICAgICAgICwgTjMsIE40LCBONQotICAgICAgICAgICAgPgotICAgICAgICA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEKLSAgICAsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGJpdG9yXzIKLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgYml0b3JfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYml0b3JfdGFnPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBiaXRvcl90YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgYml0b3JfMiwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgYml0b3JfKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgVCBuMSwgVCBuMiA+Ci1zdHJ1Y3QgYml0b3Jfd2tuZAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChULCB2YWx1ZSAgPSAobjEgfCBuMikpOwotICAgIHR5cGVkZWYgaW50ZWdyYWxfYzwgVCx2YWx1ZSA+IHR5cGU7Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiaXRvcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGF1eDo6Yml0b3Jfd2tuZDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgTjE6OnZhbHVlCi0gICAgICAgICAgICAsIE4yOjp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZQotCi0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2JpdHhvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYml0eG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDhjZjdjNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYml0eG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaXR4b3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCBiaXR4b3JfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIHRhZzFfID4gdGFnMl8gKQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBiaXR4b3JfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdHhvcl9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGJpdHhvcl9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0eG9yX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBiaXR4b3JfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGJpdHhvcl90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXzI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdHhvcl8KLQotICAgIDogaWZfPAotCi0gICAgICAgICAgaXNfbmE8TjM+Ci0gICAgICAgICwgYml0eG9yXzI8IE4xLE4yID4KLSAgICAgICAgLCBiaXR4b3JfPAotICAgICAgICAgICAgICBiaXR4b3JfMjwgTjEsTjIgPgotICAgICAgICAgICAgLCBOMywgTjQsIE41Ci0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdHhvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEKLSAgICAsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGJpdHhvcl8yCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIGJpdHhvcl9pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBiaXR4b3JfdGFnPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBiaXR4b3JfdGFnPE4yPjo6dHlwZQotICAgICAgICAgICAgPgotICAgICAgICAsIE4xCi0gICAgICAgICwgTjIKLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGJpdHhvcl8yLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXR4b3JfKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgVCBuMSwgVCBuMiA+Ci1zdHJ1Y3QgYml0eG9yX3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgID0gKG4xIF4gbjIpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYml0eG9yX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4OjpiaXR4b3Jfd2tuZDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgTjE6OnZhbHVlCi0gICAgICAgICAgICAsIE4yOjp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZQotCi0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2RlcXVlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9kZXF1ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkOTdkODIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2RlcXVlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9kZXF1ZS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IGRlcXVlX2Nob29zZXI7Ci0KLX0KLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDwKLSAgICAgICAgICAgICAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTwKLSAgICAgICAgICAgICAgVDAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjwKLSAgICAgICAgICAgICAgVDAsIFQxCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjM8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3Nlcjw2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjY8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yODwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3Nlcjw5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjk8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDEwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEwPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8MTE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTE8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDEyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEyPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDEzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEzPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8MTQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTQ8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDE1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDE2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE2PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8MTc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTc8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDE4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDE5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE5PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8MjA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjA8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBpc19kZXF1ZV9hcmcKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfZGVxdWVfYXJnPG5hPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMAotICAgICwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUKLSAgICAsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwCi0gICAgPgotc3RydWN0IGRlcXVlX2NvdW50X2FyZ3MKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9Ci0gICAgICAgICAgaXNfZGVxdWVfYXJnPFQxPjo6dmFsdWUgKyBpc19kZXF1ZV9hcmc8VDI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19kZXF1ZV9hcmc8VDM+Ojp2YWx1ZSArIGlzX2RlcXVlX2FyZzxUND46OnZhbHVlIAotICAgICAgICArIGlzX2RlcXVlX2FyZzxUNT46OnZhbHVlICsgaXNfZGVxdWVfYXJnPFQ2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfZGVxdWVfYXJnPFQ3Pjo6dmFsdWUgKyBpc19kZXF1ZV9hcmc8VDg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19kZXF1ZV9hcmc8VDk+Ojp2YWx1ZSArIGlzX2RlcXVlX2FyZzxUMTA+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19kZXF1ZV9hcmc8VDExPjo6dmFsdWUgKyBpc19kZXF1ZV9hcmc8VDEyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfZGVxdWVfYXJnPFQxMz46OnZhbHVlICsgaXNfZGVxdWVfYXJnPFQxND46OnZhbHVlIAotICAgICAgICArIGlzX2RlcXVlX2FyZzxUMTU+Ojp2YWx1ZSArIGlzX2RlcXVlX2FyZzxUMTY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19kZXF1ZV9hcmc8VDE3Pjo6dmFsdWUgKyBpc19kZXF1ZV9hcmc8VDE4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfZGVxdWVfYXJnPFQxOT46OnZhbHVlICsgaXNfZGVxdWVfYXJnPFQyMD46OnZhbHVlCi0gICAgICAgICk7Ci0KLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBkZXF1ZV9pbXBsCi17Ci0gICAgdHlwZWRlZiBhdXg6OmRlcXVlX2NvdW50X2FyZ3M8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+IGFyZ19udW1fOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmRlcXVlX2Nob29zZXI8IGFyZ19udW1fOjp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IGRlcXVlCi0gICAgOiBhdXg6OmRlcXVlX2ltcGw8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ojp0eXBlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmRlcXVlX2ltcGw8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvZGl2aWRlcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvZGl2aWRlcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2NjMxYWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2RpdmlkZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2RpdmlkZXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCBkaXZpZGVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZGl2aWRlc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZGl2aWRlc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGRpdmlkZXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGRpdmlkZXNfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGRpdmlkZXNfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGRpdmlkZXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGRpdmlkZXMyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBkaXZpZGVzCi0KLSAgICA6IGlmXzwKLQotICAgICAgICAgIGlzX25hPE4zPgotICAgICAgICAsIGRpdmlkZXMyPCBOMSxOMiA+Ci0gICAgICAgICwgZGl2aWRlczwKLSAgICAgICAgICAgICAgZGl2aWRlczI8IE4xLE4yID4KLSAgICAgICAgICAgICwgTjMsIE40LCBONQotICAgICAgICAgICAgPgotICAgICAgICA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBkaXZpZGVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xCi0gICAgLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBkaXZpZGVzMgotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICBkaXZpZGVzX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGRpdmlkZXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBkaXZpZGVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBkaXZpZGVzMiwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgZGl2aWRlcykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIFQgbjEsIFQgbjIgPgotc3RydWN0IGRpdmlkZXNfd2tuZAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChULCB2YWx1ZSAgPSAobjEgLyBuMikpOwotICAgIHR5cGVkZWYgaW50ZWdyYWxfYzwgVCx2YWx1ZSA+IHR5cGU7Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkaXZpZGVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4OjpkaXZpZGVzX3drbmQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsIE4xOjp2YWx1ZQotICAgICAgICAgICAgLCBOMjo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUKLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9lcXVhbF90by5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvZXF1YWxfdG8uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZmEyY2FlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9lcXVhbF90by5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZXF1YWxfdG8uaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCBlcXVhbF90b19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggdGFnMV8gPiB0YWcyXyApCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGVxdWFsX3RvX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBlcXVhbF90b19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBlcXVhbF90b19pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZXF1YWxfdG9faW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGVxdWFsX3RvX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBlcXVhbF90bwotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICBlcXVhbF90b19pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBlcXVhbF90b190YWc8TjE+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGVxdWFsX3RvX3RhZzxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBlcXVhbF90bywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgZXF1YWxfdG8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZXF1YWxfdG9faW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlID09Ci0gICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKQotICAgICAgICAgICAgKTsKLSAgICAgICAgdHlwZWRlZiBib29sXzx2YWx1ZT4gdHlwZTsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4Y2EwYzcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOTMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPCBpbnQgTiA+Ci1zdHJ1Y3QgZm9sZF9jaHVuazsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZm9sZF9jaHVuazwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCByZXN1bHRfPCBpbnQsaW50LGludCxpbnQgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaW50IGl0ZXJhdG9yOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGZvbGRfY2h1bms8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIHN0YXRlMSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcmVzdWx0XzwgaW50LGludCxpbnQsaW50ID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHN0YXRlOwotICAgICAgICB0eXBlZGVmIGludCBpdGVyYXRvcjsKLSAgICB9OwotCi19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBmb2xkX2NodW5rPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBzdGF0ZTIgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHJlc3VsdF88IGludCxpbnQsaW50LGludCA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpbnQgaXRlcmF0b3I7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZm9sZF9jaHVuazwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgc3RhdGUzIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCByZXN1bHRfPCBpbnQsaW50LGludCxpbnQgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaW50IGl0ZXJhdG9yOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGZvbGRfY2h1bms8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIHN0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIHN0YXRlNCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcmVzdWx0XzwgaW50LGludCxpbnQsaW50ID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHN0YXRlOwotICAgICAgICB0eXBlZGVmIGludCBpdGVyYXRvcjsKLSAgICB9OwotCi19OwotCi10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IGZvbGRfY2h1bmsKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZm9sZF9pbXBsPAotICAgICAgICAgICAgICA0Ci0gICAgICAgICAgICAsIEZpcnN0Ci0gICAgICAgICAgICAsIExhc3QKLSAgICAgICAgICAgICwgU3RhdGUKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICA+IGNodW5rXzsKLQotICAgICAgICB0eXBlZGVmIGZvbGRfaW1wbDwKLSAgICAgICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6aXRlcmF0b3IKLSAgICAgICAgICAgICwgTGFzdAotICAgICAgICAgICAgLCB0eXBlbmFtZSBjaHVua186OnN0YXRlCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgPiByZXNfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9zdGVwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgPgotc3RydWN0IGZvbGRfbnVsbF9zdGVwCi17Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZm9sZF9jaHVuazwgLTEgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGlzX3NhbWU8IEZpcnN0LExhc3QgPjo6dHlwZQotICAgICAgICAgICAgLCBmb2xkX251bGxfc3RlcDwgTGFzdCxTdGF0ZSA+Ci0gICAgICAgICAgICAsIGZvbGRfc3RlcDwgRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotICAgICAgICAgICAgPjo6dHlwZSByZXNfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHJlc3VsdF88IGludCxpbnQsaW50LGludCA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpbnQgaXRlcmF0b3I7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIGZvbGRfY2h1bms8IC0xID46OnRlbXBsYXRlIHJlc3VsdF88Ci0gICAgICAgICAgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8Rm9yd2FyZE9wLFN0YXRlLCB0eXBlbmFtZSBkZXJlZjxGaXJzdD46OnR5cGU+Ojp0eXBlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gY2h1bmtfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaHVua186OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2h1bmtfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbAotICAgIDogZm9sZF9jaHVuazxOPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2Z1bGxfbGFtYmRhLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9mdWxsX2xhbWJkYS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkYTk3MWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2Z1bGxfbGFtYmRhLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2Z1bGxfbGFtYmRhLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICBib29sIEMxID0gZmFsc2UsIGJvb2wgQzIgPSBmYWxzZSwgYm9vbCBDMyA9IGZhbHNlLCBib29sIEM0ID0gZmFsc2UKLSAgICAsIGJvb2wgQzUgPSBmYWxzZQotICAgID4KLXN0cnVjdCBsYW1iZGFfb3IKLSAgICA6IHRydWVfCi17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGFtYmRhX29yPCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSA+Ci0gICAgOiBmYWxzZV8KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgCi0gICAgPgotc3RydWN0IGxhbWJkYQotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgVCByZXN1bHRfOwotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IGlzX2xhbWJkYV9leHByZXNzaW9uCi0gICAgOiBsYW1iZGE8VD46OmlzX2xlCi17Ci19OwotCi10ZW1wbGF0ZTwgaW50IE4sIHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgbGFtYmRhPCBhcmc8Tj4sIFRhZyA+Ci17Ci0gICAgdHlwZWRlZiB0cnVlXyBpc19sZTsKLSAgICB0eXBlZGVmIG1wbDo6YXJnPE4+IHJlc3VsdF87IC8vIHF1YWxpZmllZCBmb3IgdGhlIHNha2Ugb2YgTUlQU3BybyA3LjQxCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kMDxGPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMDwKLSAgICAgICAgICBGCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQxCi17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDE8IHRydWVfLFRhZyxGLEwxID4KLXsKLSAgICB0eXBlZGVmIGJpbmQxPAotICAgICAgICAgIHF1b3RlMTwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPFQxPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQxPAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxCi0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kMTwgRixUMSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQxPAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMgotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQyCi17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlLCB0eXBlbmFtZSBMMjo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDI8IHRydWVfLFRhZyxGLEwxLEwyID4KLXsKLSAgICB0eXBlZGVmIGJpbmQyPAotICAgICAgICAgIHF1b3RlMjwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfLCB0eXBlbmFtZSBMMjo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMiA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQyLFRhZyA+IGwyOwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQyPAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMgotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQyPCBGLFQxLFQyID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDI8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDMKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlLCB0eXBlbmFtZSBMMzo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MzwgdHJ1ZV8sVGFnLEYsTDEsTDIsTDMgPgotewotICAgIHR5cGVkZWYgYmluZDM8Ci0gICAgICAgICAgcXVvdGUzPCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfLCB0eXBlbmFtZSBMMzo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8IFQxLFQyLFQzID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQzLFRhZyA+IGwzOwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlLCBpc19sZTI6OnZhbHVlLCBpc19sZTM6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0MzwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMSwgbDIsIGwzCi0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQzPCBGLFQxLFQyLFQzID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDM8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0Ci0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDQKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlLCB0eXBlbmFtZSBMMzo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIEw0Ojp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0Ci0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDQ8IHRydWVfLFRhZyxGLEwxLEwyLEwzLEw0ID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ0PAotICAgICAgICAgIHF1b3RlNDwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfLCB0eXBlbmFtZSBMMjo6cmVzdWx0XywgdHlwZW5hbWUgTDM6OnJlc3VsdF8KLSAgICAgICAgLCB0eXBlbmFtZSBMNDo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIsVDMsVDQgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDMsVGFnID4gbDM7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQ0LFRhZyA+IGw0OwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZSwgaXNfbGUzOjp2YWx1ZSwgaXNfbGU0Ojp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDQ8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyLCBsMywgbDQKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDQ8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIFA1ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMywgdHlwZW5hbWUgTDQsIHR5cGVuYW1lIEw1Ci0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDUKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlLCB0eXBlbmFtZSBMMzo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIEw0Ojp0eXBlLCB0eXBlbmFtZSBMNTo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIFA1ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMywgdHlwZW5hbWUgTDQsIHR5cGVuYW1lIEw1Ci0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDU8IHRydWVfLFRhZyxGLEwxLEwyLEwzLEw0LEw1ID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ1PAotICAgICAgICAgIHF1b3RlNTwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfLCB0eXBlbmFtZSBMMjo6cmVzdWx0XywgdHlwZW5hbWUgTDM6OnJlc3VsdF8KLSAgICAgICAgLCB0eXBlbmFtZSBMNDo6cmVzdWx0XywgdHlwZW5hbWUgTDU6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0Ci0gICAgICAgICwgdHlwZW5hbWUgUDUKLSAgICAgICAgPgotICAgICAgY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8IFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQzLFRhZyA+IGwzOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUNCxUYWcgPiBsNDsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDUsVGFnID4gbDU7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDU6OmlzX2xlIGlzX2xlNTsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZSwgaXNfbGUzOjp2YWx1ZSwgaXNfbGU0Ojp2YWx1ZQotICAgICAgICAsIGlzX2xlNTo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQ1PAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMiwgbDMsIGw0LCBsNQotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDU8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLS8vLyBzcGVjaWFsIGNhc2UgZm9yICdwcm90ZWN0JwotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgbGFtYmRhPCBtcGw6OnByb3RlY3Q8VD4sIFRhZyA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8VD4gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLS8vLyBzcGVjaWFsaXphdGlvbnMgZm9yIHRoZSBtYWluICdiaW5kJyBmb3JtCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLS8vLyB3b3JrYXJvdW5kIGZvciBNV0NXIDguMysvRURHIDwgMzAzLCBsZWFkcyB0byBhbWJpZ3VpdHkgb24gRGlnaXRhbCBNYXJzCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnMSwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgbGFtYmRhPCBGLFRhZzEgPgotICAgICAgICAsIFRhZzIKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBGLFRhZzIgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVGFnMSxUYWcyID4gbDI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGU7Ci0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDI8aXNfbGUsIFRhZzIsIG1wbDo6bGFtYmRhLCBsMSwgbDI+IGxlX3Jlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMiwgbGFtYmRhKQotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvZ3JlYXRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvZ3JlYXRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwODM0Y2YuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2dyZWF0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2dyZWF0ZXIuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCBncmVhdGVyX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZ3JlYXRlcl9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZ3JlYXRlcl9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGdyZWF0ZXJfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGdyZWF0ZXIKLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgZ3JlYXRlcl9pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBncmVhdGVyX3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZ3JlYXRlcl90YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgZ3JlYXRlciwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgZ3JlYXRlcikKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBncmVhdGVyX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA+Ci0gICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKQotICAgICAgICAgICAgKTsKLSAgICAgICAgdHlwZWRlZiBib29sXzx2YWx1ZT4gdHlwZTsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9ncmVhdGVyX2VxdWFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9ncmVhdGVyX2VxdWFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjdjYTBjMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvZ3JlYXRlcl9lcXVhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZ3JlYXRlcl9lcXVhbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0KLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzEpOjp2YWx1ZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMik6OnZhbHVlCi0gICAgPgotc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIHRhZzFfID4gdGFnMl8gKQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBncmVhdGVyX2VxdWFsX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBncmVhdGVyX2VxdWFsX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcl9lcXVhbAotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICBncmVhdGVyX2VxdWFsX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGdyZWF0ZXJfZXF1YWxfdGFnPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBncmVhdGVyX2VxdWFsX3RhZzxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBncmVhdGVyX2VxdWFsLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBncmVhdGVyX2VxdWFsKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlID49Ci0gICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKQotICAgICAgICAgICAgKTsKLSAgICAgICAgdHlwZWRlZiBib29sXzx2YWx1ZT4gdHlwZTsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9pbmhlcml0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9pbmhlcml0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2NiMGE0OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvaW5oZXJpdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvaW5oZXJpdC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBib29sIEMxLCBib29sIEMyID4KLXN0cnVjdCBpbmhlcml0Ml9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIERlcml2ZWQsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogVDEsIFQyCi0gICAgewotICAgICAgICB0eXBlZGVmIERlcml2ZWQgdHlwZV87Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpbmhlcml0Ml9pbXBsPCBmYWxzZSx0cnVlID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRGVyaXZlZCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBUMQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUMSB0eXBlXzsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGluaGVyaXQyX2ltcGw8IHRydWUsZmFsc2UgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBEZXJpdmVkLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IFQyCi0gICAgewotICAgICAgICB0eXBlZGVmIFQyIHR5cGVfOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW5oZXJpdDJfaW1wbDwgdHJ1ZSx0cnVlID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRGVyaXZlZCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVDEgdHlwZV87Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgID4KLXN0cnVjdCBpbmhlcml0MgotICAgIDogYXV4Ojppbmhlcml0Ml9pbXBsPAotICAgICAgICAgIGlzX2VtcHR5X2Jhc2U8VDE+Ojp2YWx1ZQotICAgICAgICAsIGlzX2VtcHR5X2Jhc2U8VDI+Ojp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBpbmhlcml0MjwgVDEsVDIgPixUMSwgVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW5oZXJpdDI6OnR5cGVfIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBpbmhlcml0MiwgKFQxLCBUMikpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMiwgaW5oZXJpdDIpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgID4KLXN0cnVjdCBpbmhlcml0MwotICAgIDogaW5oZXJpdDI8Ci0gICAgICAgICAgdHlwZW5hbWUgaW5oZXJpdDI8Ci0gICAgICAgICAgICAgIFQxLCBUMgotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAsIFQzCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDMKLSAgICAgICAgLCBpbmhlcml0MwotICAgICAgICAsICggVDEsIFQyLCBUMykKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDMsIGluaGVyaXQzKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEsIHR5cGVuYW1lIFQ0ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDQKLSAgICA6IGluaGVyaXQyPAotICAgICAgICAgIHR5cGVuYW1lIGluaGVyaXQzPAotICAgICAgICAgICAgICBUMSwgVDIsIFQzCi0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgVDQKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNAotICAgICAgICAsIGluaGVyaXQ0Ci0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDQsIGluaGVyaXQ0KQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEsIHR5cGVuYW1lIFQ0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ1ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDUKLSAgICA6IGluaGVyaXQyPAotICAgICAgICAgIHR5cGVuYW1lIGluaGVyaXQ0PAotICAgICAgICAgICAgICBUMSwgVDIsIFQzLCBUNAotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAsIFQ1Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBpbmhlcml0NQotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoNSwgaW5oZXJpdDUpCi0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUMiA9IGVtcHR5X2Jhc2UKLSAgICAsIHR5cGVuYW1lIFQzID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDQgPSBlbXB0eV9iYXNlCi0gICAgLCB0eXBlbmFtZSBUNSA9IGVtcHR5X2Jhc2UKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdAotICAgIDogaW5oZXJpdDU8IFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpbmhlcml0PCBuYSxuYSxuYSxuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0KLSAgICAgICAgICB0eXBlbmFtZSBUMSA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQyID0gZW1wdHlfYmFzZQotICAgICAgICAsIHR5cGVuYW1lIFQzID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDQgPSBlbXB0eV9iYXNlCi0gICAgICAgICwgdHlwZW5hbWUgVDUgPSBlbXB0eV9iYXNlCi0KLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgICAgICA6IGluaGVyaXQ8IFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19MQU1CREEoNSwgaW5oZXJpdCkKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19BUklUWSg1LCBpbmhlcml0KQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX1RFTVBMQVRFX0FSSVRZKDUsIDUsIGluaGVyaXQpCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvaXRlcl9mb2xkX2lmX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTc0YmQ4My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvaXRlcl9mb2xkX2lmX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTMzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMS0yMDAyCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vaXRlcl9mb2xkX2lmX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIFN0YXRlID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwCi17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8IGJvb2wgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGVPcAotICAgICAgICAsIHR5cGVuYW1lIEl0ZXJhdG9yT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgU3RhdGVPcCxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXJhdG9yT3A6OnR5cGUgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsPGZhbHNlPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZU9wCi0gICAgICAgICwgdHlwZW5hbWUgSXRlcmF0b3JPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAsIHR5cGVuYW1lIFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFByZWRpY2F0ZSxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIG5vdF9sYXN0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChub3RfbGFzdCk6OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IEl0ZXJhdG9yLFN0YXRlLEZvcndhcmRPcCwgbXBsOjpuZXh0PEl0ZXJhdG9yPiA+IGltcGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgUHJlZGljYXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFByZWRpY2F0ZSxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIG5vdF9sYXN0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChub3RfbGFzdCk6OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IEl0ZXJhdG9yLFN0YXRlLEJhY2t3YXJkT3AsIGlkZW50aXR5PEl0ZXJhdG9yPiA+IGltcGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkUHJlZGljYXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfaW1wbAotewotIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwPCBJdGVyYXRvcixTdGF0ZSA+IGZvcndhcmRfc3RlcDA7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAwOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMDo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDE7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAxOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDI7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAyOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDM7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAzOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMzo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0Ojpub3RfbGFzdAotICAgICAgICAsIGl0ZXJfZm9sZF9pZl9pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjppdGVyYXRvcgotICAgICAgICAgICAgLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjpzdGF0ZQotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgICwgRm9yd2FyZFByZWRpY2F0ZQotICAgICAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICAgICAsIEJhY2t3YXJkUHJlZGljYXRlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgaXRlcl9mb2xkX2lmX251bGxfc3RlcDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6aXRlcmF0b3IKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6c3RhdGUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZSBiYWNrd2FyZF9zdGVwNDsKLQotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDM6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwNDo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDM7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAzOjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMjsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAxOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDI6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAxOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDA6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMTo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDA7Ci0gICAgCi0KLSBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMDo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwNDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9pdGVyX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvaXRlcl9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NzUzMTcwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9pdGVyX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOTMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9pdGVyX2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IGl0ZXJfZm9sZF9jaHVuazsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgaXRlcl9mb2xkX2NodW5rPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBzdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHJlc3VsdF88IGludCxpbnQsaW50LGludCA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpbnQgaXRlcmF0b3I7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgaXRlcl9mb2xkX2NodW5rPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBzdGF0ZTEgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHJlc3VsdF88IGludCxpbnQsaW50LGludCA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpbnQgaXRlcmF0b3I7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgaXRlcl9mb2xkX2NodW5rPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTEsaXRlcjEgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBzdGF0ZTIgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHJlc3VsdF88IGludCxpbnQsaW50LGludCA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpbnQgaXRlcmF0b3I7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgaXRlcl9mb2xkX2NodW5rPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTEsaXRlcjEgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTIsaXRlcjIgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBzdGF0ZTMgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHJlc3VsdF88IGludCxpbnQsaW50LGludCA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpbnQgaXRlcmF0b3I7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgaXRlcl9mb2xkX2NodW5rPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTEsaXRlcjEgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTIsaXRlcjIgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTMsaXRlcjMgPjo6dHlwZSBzdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBzdGF0ZTQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHJlc3VsdF88IGludCxpbnQsaW50LGludCA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpbnQgaXRlcmF0b3I7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBpdGVyX2ZvbGRfY2h1bmsKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgICAgIDQKLSAgICAgICAgICAgICwgRmlyc3QKLSAgICAgICAgICAgICwgTGFzdAotICAgICAgICAgICAgLCBTdGF0ZQotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgID4gY2h1bmtfOwotCi0gICAgICAgIHR5cGVkZWYgaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAgICAgLCB0eXBlbmFtZSBjaHVua186Oml0ZXJhdG9yCi0gICAgICAgICAgICAsIExhc3QKLSAgICAgICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjpzdGF0ZQotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgID4gcmVzXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9zdGVwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9udWxsX3N0ZXAKLXsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpdGVyX2ZvbGRfY2h1bms8IC0xID4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICB0eXBlbmFtZSBpc19zYW1lPCBGaXJzdCxMYXN0ID46OnR5cGUKLSAgICAgICAgICAgICwgaXRlcl9mb2xkX251bGxfc3RlcDwgTGFzdCxTdGF0ZSA+Ci0gICAgICAgICAgICAsIGl0ZXJfZm9sZF9zdGVwPCBGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci0gICAgICAgICAgICA+Ojp0eXBlIHJlc187Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcmVzdWx0XzwgaW50LGludCxpbnQsaW50ID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHN0YXRlOwotICAgICAgICB0eXBlZGVmIGludCBpdGVyYXRvcjsKLSAgICB9OwotCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9zdGVwCi17Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfY2h1bms8IC0xID46OnRlbXBsYXRlIHJlc3VsdF88Ci0gICAgICAgICAgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxTdGF0ZSxGaXJzdCA+Ojp0eXBlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gY2h1bmtfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaHVua186OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2h1bmtfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsCi0gICAgOiBpdGVyX2ZvbGRfY2h1bms8Tj4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9sYW1iZGFfbm9fY3Rwcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvbGFtYmRhX25vX2N0cHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NWY1ZjZiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9sYW1iZGFfbm9fY3Rwcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMjkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfbm9fY3Rwcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgYm9vbCBDMSA9IGZhbHNlLCBib29sIEMyID0gZmFsc2UsIGJvb2wgQzMgPSBmYWxzZSwgYm9vbCBDNCA9IGZhbHNlCi0gICAgLCBib29sIEM1ID0gZmFsc2UKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhX29yCi0gICAgOiB0cnVlXwotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxhbWJkYV9vcjwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UgPgotICAgIDogZmFsc2VfCi17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgQXJpdHkgPiBzdHJ1Y3QgbGFtYmRhX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICB0eXBlZGVmIGlzX3BsYWNlaG9sZGVyPFQ+IGlzX2xlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50XzwxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMywgVGFnLCBmYWxzZV8gPiBsMzsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUzKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc0LCBUYWcsIGZhbHNlXyA+IGw0OwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTQpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQ0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlLCB0eXBlbmFtZSBsMzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBsNDo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMywgVGFnLCBmYWxzZV8gPiBsMzsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzQsIFRhZywgZmFsc2VfID4gbDQ7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc1LCBUYWcsIGZhbHNlXyA+IGw1OwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGw1Ojppc19sZSBpc19sZTU7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUzKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlNCk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTUpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQ1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlLCB0eXBlbmFtZSBsMzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBsNDo6dHlwZSwgdHlwZW5hbWUgbDU6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgICwgdHlwZW5hbWUgUHJvdGVjdAotICAgID4KLXN0cnVjdCBsYW1iZGEKLXsKLSAgICAvLy8gTWV0YWZ1bmN0aW9uIGZvcndhcmRpbmcgY29uZnVzZXMgTVNWQyA2LngKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dGVtcGxhdGVfYXJpdHk8VD46OnR5cGUgYXJpdHlfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfaW1wbDxhcml0eV8+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVCxUYWcsUHJvdGVjdCA+IGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsXzo6dHlwZSB0eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbF86OmlzX2xlIGlzX2xlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMywgbGFtYmRhLCAoVCwgVGFnLCBQcm90ZWN0KSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMSwgMywgbGFtYmRhKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgaXNfbGFtYmRhX2V4cHJlc3Npb24KLSAgICA6IGxhbWJkYTxUPjo6aXNfbGUKLXsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9sZXNzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9sZXNzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDViNmQxMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvbGVzcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGVzcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0KLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzEpOjp2YWx1ZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMik6OnZhbHVlCi0gICAgPgotc3RydWN0IGxlc3NfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIHRhZzFfID4gdGFnMl8gKQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBsZXNzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBsZXNzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbGVzc190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbGVzcwotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICBsZXNzX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGxlc3NfdGFnPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBsZXNzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBsZXNzLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBsZXNzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxlc3NfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlID4KLSAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSApCi0gICAgICAgICAgICApOwotICAgICAgICB0eXBlZGVmIGJvb2xfPHZhbHVlPiB0eXBlOwotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2xlc3NfZXF1YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2xlc3NfZXF1YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YWMyYTNhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9sZXNzX2VxdWFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9sZXNzX2VxdWFsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3QgbGVzc19lcXVhbF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggdGFnMV8gPiB0YWcyXyApCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGxlc3NfZXF1YWxfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGxlc3NfZXF1YWxfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBsZXNzX2VxdWFsX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBsZXNzX2VxdWFsCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIGxlc3NfZXF1YWxfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgbGVzc19lcXVhbF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGxlc3NfZXF1YWxfdGFnPE4yPjo6dHlwZQotICAgICAgICAgICAgPgotICAgICAgICAsIE4xCi0gICAgICAgICwgTjIKLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGxlc3NfZXF1YWwsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGxlc3NfZXF1YWwpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgPD0KLSAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApCi0gICAgICAgICAgICApOwotICAgICAgICB0eXBlZGVmIGJvb2xfPHZhbHVlPiB0eXBlOwotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2xpc3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2xpc3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjE5ZTYwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9saXN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9saXN0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBpbnQgTiA+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyOwotCi19Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGlzdDA8Ci0gICAgICAgICAgICAgCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE8Ci0gICAgICAgICAgICAgIFQwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDI8Ci0gICAgICAgICAgICAgIFQwLCBUMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QzPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDQ8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDU8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3Nlcjw2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q2PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDc8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDg8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3Nlcjw5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q5PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDEwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDExPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDEyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDEzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE0PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDE1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDE2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE3PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDE4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxODwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDE5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxOTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MjA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDIwPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgaXNfbGlzdF9hcmcKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfbGlzdF9hcmc8bmE+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwCi0gICAgLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNQotICAgICwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jb3VudF9hcmdzCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPQotICAgICAgICAgIGlzX2xpc3RfYXJnPFQxPjo6dmFsdWUgKyBpc19saXN0X2FyZzxUMj46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfYXJnPFQzPjo6dmFsdWUgKyBpc19saXN0X2FyZzxUND46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfYXJnPFQ1Pjo6dmFsdWUgKyBpc19saXN0X2FyZzxUNj46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfYXJnPFQ3Pjo6dmFsdWUgKyBpc19saXN0X2FyZzxUOD46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfYXJnPFQ5Pjo6dmFsdWUgKyBpc19saXN0X2FyZzxUMTA+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2FyZzxUMTE+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQxMj46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfYXJnPFQxMz46OnZhbHVlICsgaXNfbGlzdF9hcmc8VDE0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9hcmc8VDE1Pjo6dmFsdWUgKyBpc19saXN0X2FyZzxUMTY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2FyZzxUMTc+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQxOD46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfYXJnPFQxOT46OnZhbHVlICsgaXNfbGlzdF9hcmc8VDIwPjo6dmFsdWUKLSAgICAgICAgKTsKLQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IGxpc3RfaW1wbAotewotICAgIHR5cGVkZWYgYXV4OjpsaXN0X2NvdW50X2FyZ3M8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+IGFyZ19udW1fOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6Omxpc3RfY2hvb3NlcjwgYXJnX251bV86OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgbGlzdAotICAgIDogYXV4OjpsaXN0X2ltcGw8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ojp0eXBlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6Omxpc3RfaW1wbDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9saXN0X2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2xpc3RfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlZDdmN2UuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2xpc3RfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MzQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGlzdF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBpbnQgTiA+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI7Ci0KLX0KLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QwX2M8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxX2M8Ci0gICAgICAgICAgICAgIFQsIEMwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0Ml9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QzX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3Nlcjw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q0X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8NT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3Nlcjw2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q2X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3Nlcjw3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q3X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8OD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0OF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3Nlcjw5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q5X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwxMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTBfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwxMT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTFfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDEyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMl9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwxMz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTNfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwxND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTRfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDE1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwxNj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTZfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwxNz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTdfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDE4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxOF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwxOT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTlfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwyMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MjBfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGxvbmcgQyA+Ci1zdHJ1Y3QgaXNfbGlzdF9jX2FyZwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc19saXN0X2NfYXJnPExPTkdfTUFYPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgKLSAgICAsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUKLSAgICAsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5LCBsb25nIEMyMAotICAgID4KLXN0cnVjdCBsaXN0X2NfY291bnRfYXJncwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0KLSAgICAgICAgICBpc19saXN0X2NfYXJnPEMxPjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEMyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9jX2FyZzxDMz46OnZhbHVlICsgaXNfbGlzdF9jX2FyZzxDND46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfY19hcmc8QzU+Ojp2YWx1ZSArIGlzX2xpc3RfY19hcmc8QzY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2NfYXJnPEM3Pjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEM4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9jX2FyZzxDOT46OnZhbHVlICsgaXNfbGlzdF9jX2FyZzxDMTA+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2NfYXJnPEMxMT46OnZhbHVlICsgaXNfbGlzdF9jX2FyZzxDMTI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2NfYXJnPEMxMz46OnZhbHVlICsgaXNfbGlzdF9jX2FyZzxDMTQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2NfYXJnPEMxNT46OnZhbHVlICsgaXNfbGlzdF9jX2FyZzxDMTY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2NfYXJnPEMxNz46OnZhbHVlICsgaXNfbGlzdF9jX2FyZzxDMTg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2NfYXJnPEMxOT46OnZhbHVlICsgaXNfbGlzdF9jX2FyZzxDMjA+Ojp2YWx1ZQotICAgICAgICApOwotCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgPgotc3RydWN0IGxpc3RfY19pbXBsCi17Ci0gICAgdHlwZWRlZiBhdXg6Omxpc3RfY19jb3VudF9hcmdzPAotICAgICAgICAgIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPiBhcmdfbnVtXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsaXN0X2NfY2hvb3NlcjwgYXJnX251bV86OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jCi0gICAgOiBhdXg6Omxpc3RfY19pbXBsPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPjo6dHlwZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsaXN0X2NfaW1wbDwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9tYXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL21hcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1MTc0YzguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL21hcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NTYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbWFwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBpbnQgTiA+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI7Ci0KLX0KLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIG1hcDA8Ci0gICAgICAgICAgICAgCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxPAotICAgICAgICAgICAgICBUMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMjwKLSAgICAgICAgICAgICAgVDAsIFQxCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAzPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA0PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8Nj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA2PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8Nz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA3PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwODwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8OT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA5PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8MTA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTA8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8MTE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTE8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxMj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8MTM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTM8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8MTQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTQ8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxNT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8MTY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTY8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8MTc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTc8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxOD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxODwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8MTk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTk8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8MjA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMjA8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBpc19tYXBfYXJnCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IHRydWUpOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX21hcF9hcmc8bmE+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwCi0gICAgLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNQotICAgICwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAKLSAgICA+Ci1zdHJ1Y3QgbWFwX2NvdW50X2FyZ3MKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9Ci0gICAgICAgICAgaXNfbWFwX2FyZzxUMT46OnZhbHVlICsgaXNfbWFwX2FyZzxUMj46OnZhbHVlIAotICAgICAgICArIGlzX21hcF9hcmc8VDM+Ojp2YWx1ZSArIGlzX21hcF9hcmc8VDQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19tYXBfYXJnPFQ1Pjo6dmFsdWUgKyBpc19tYXBfYXJnPFQ2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbWFwX2FyZzxUNz46OnZhbHVlICsgaXNfbWFwX2FyZzxUOD46OnZhbHVlIAotICAgICAgICArIGlzX21hcF9hcmc8VDk+Ojp2YWx1ZSArIGlzX21hcF9hcmc8VDEwPjo6dmFsdWUgCi0gICAgICAgICsgaXNfbWFwX2FyZzxUMTE+Ojp2YWx1ZSArIGlzX21hcF9hcmc8VDEyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfbWFwX2FyZzxUMTM+Ojp2YWx1ZSArIGlzX21hcF9hcmc8VDE0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbWFwX2FyZzxUMTU+Ojp2YWx1ZSArIGlzX21hcF9hcmc8VDE2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbWFwX2FyZzxUMTc+Ojp2YWx1ZSArIGlzX21hcF9hcmc8VDE4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbWFwX2FyZzxUMTk+Ojp2YWx1ZSArIGlzX21hcF9hcmc8VDIwPjo6dmFsdWUKLSAgICAgICAgKTsKLQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IG1hcF9pbXBsCi17Ci0gICAgdHlwZWRlZiBhdXg6Om1hcF9jb3VudF9hcmdzPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPiBhcmdfbnVtXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjptYXBfY2hvb3NlcjwgYXJnX251bV86OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgbWFwCi0gICAgOiBhdXg6Om1hcF9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjptYXBfaW1wbDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9taW51cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvbWludXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTNhOTA3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9taW51cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbWludXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCBtaW51c19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggdGFnMV8gPiB0YWcyXyApCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IG1pbnVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBtaW51c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IG1pbnVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBtaW51c19pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbWludXNfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG1pbnVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBtaW51czI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IG1pbnVzCi0KLSAgICA6IGlmXzwKLQotICAgICAgICAgIGlzX25hPE4zPgotICAgICAgICAsIG1pbnVzMjwgTjEsTjIgPgotICAgICAgICAsIG1pbnVzPAotICAgICAgICAgICAgICBtaW51czI8IE4xLE4yID4KLSAgICAgICAgICAgICwgTjMsIE40LCBONQotICAgICAgICAgICAgPgotICAgICAgICA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBtaW51cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMQotICAgICwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgbWludXMyCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIG1pbnVzX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIG1pbnVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbWludXNfdGFnPE4yPjo6dHlwZQotICAgICAgICAgICAgPgotICAgICAgICAsIE4xCi0gICAgICAgICwgTjIKLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIG1pbnVzMiwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgbWludXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBUIG4xLCBUIG4yID4KLXN0cnVjdCBtaW51c193a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlICA9IChuMSAtIG4yKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IG1pbnVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4OjptaW51c193a25kPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCBOMTo6dmFsdWUKLSAgICAgICAgICAgICwgTjI6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvbW9kdWx1cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvbW9kdWx1cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxODVlYmYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL21vZHVsdXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL21vZHVsdXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCBtb2R1bHVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbW9kdWx1c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbW9kdWx1c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IG1vZHVsdXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IG1vZHVsdXNfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IG1vZHVsdXNfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG1vZHVsdXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IG1vZHVsdXMKLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgbW9kdWx1c19pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBtb2R1bHVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbW9kdWx1c190YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbW9kdWx1cywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbW9kdWx1cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIFQgbjEsIFQgbjIgPgotc3RydWN0IG1vZHVsdXNfd2tuZAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChULCB2YWx1ZSAgPSAobjEgJSBuMikpOwotICAgIHR5cGVkZWYgaW50ZWdyYWxfYzwgVCx2YWx1ZSA+IHR5cGU7Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtb2R1bHVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4Ojptb2R1bHVzX3drbmQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsIE4xOjp2YWx1ZQotICAgICAgICAgICAgLCBOMjo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUKLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9ub3RfZXF1YWxfdG8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL25vdF9lcXVhbF90by5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3YjBhMTMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL25vdF9lcXVhbF90by5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbm90X2VxdWFsX3RvLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbm90X2VxdWFsX3RvX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBub3RfZXF1YWxfdG9faW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBub3RfZXF1YWxfdG9fdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IG5vdF9lcXVhbF90bwotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICBub3RfZXF1YWxfdG9faW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgbm90X2VxdWFsX3RvX3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbm90X2VxdWFsX3RvX3RhZzxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBub3RfZXF1YWxfdG8sIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIG5vdF9lcXVhbF90bykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlICE9Ci0gICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKQotICAgICAgICAgICAgKTsKLSAgICAgICAgdHlwZWRlZiBib29sXzx2YWx1ZT4gdHlwZTsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9vci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvb3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MTIzYjhkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9vci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9vci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgYm9vbCBDXyA+IHN0cnVjdCBvcl9pbXBsCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogdHJ1ZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IG9yX2ltcGw8ZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogb3JfaW1wbDwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IFQyLFQzLFQ0LGZhbHNlXyA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgb3JfaW1wbDxmYWxzZT4KLSAgICA6OnJlc3VsdF88IGZhbHNlXyxmYWxzZV8sZmFsc2VfLGZhbHNlXyA+Ci0gICAgICAgIDogZmFsc2VfCi17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICAsIHR5cGVuYW1lIFQzID0gZmFsc2VfLCB0eXBlbmFtZSBUNCA9IGZhbHNlXywgdHlwZW5hbWUgVDUgPSBmYWxzZV8KLSAgICA+Ci1zdHJ1Y3Qgb3JfCi0KLSAgICA6IGF1eDo6b3JfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBUMixUMyxUNCxUNSA+Ci0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBvcl8KLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigKLSAgICAgIDIKLSAgICAsIDUKLSAgICAsIG9yXwotICAgICkKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9wbGFjZWhvbGRlcnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3BsYWNlaG9sZGVycy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhMjhjMDkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3BsYWNlaG9sZGVycy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxLTIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvcGxhY2Vob2xkZXJzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPCAtMSA+IF87Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXykKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzsKLX0KLQotfX0KLQotLy8vIGFndXJ0LCAxNy9tYXIvMDI6IG9uZSBtb3JlIHBsYWNlaG9sZGVyIGZvciB0aGUgbGFzdCAnYXBwbHkjJyAKLS8vLyBzcGVjaWFsaXphdGlvbgotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8MT4gXzE7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfMSkKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzE7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwyPiBfMjsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8yKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfMjsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDM+IF8zOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzMpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol8zOwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8ND4gXzQ7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfNCkKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzQ7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzw1PiBfNTsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF81KQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfNTsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDY+IF82OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzYpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol82OwotfQotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3BsdXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3BsdXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OTc3OTRhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9wbHVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0OCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9wbHVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3QgcGx1c19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggdGFnMV8gPiB0YWcyXyApCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHBsdXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHBsdXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBwbHVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBwbHVzX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBwbHVzX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBwbHVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBwbHVzMjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgcGx1cwotCi0gICAgOiBpZl88Ci0KLSAgICAgICAgICBpc19uYTxOMz4KLSAgICAgICAgLCBwbHVzMjwgTjEsTjIgPgotICAgICAgICAsIHBsdXM8Ci0gICAgICAgICAgICAgIHBsdXMyPCBOMSxOMiA+Ci0gICAgICAgICAgICAsIE4zLCBONCwgTjUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgcGx1cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMQotICAgICwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgcGx1czIKLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgcGx1c19pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBwbHVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgcGx1c190YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgcGx1czIsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIHBsdXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBUIG4xLCBUIG4yID4KLXN0cnVjdCBwbHVzX3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgID0gKG4xICsgbjIpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcGx1c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGF1eDo6cGx1c193a25kPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCBOMTo6dmFsdWUKLSAgICAgICAgICAgICwgTjI6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvcXVvdGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3F1b3RlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2U3N2ZiYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvcXVvdGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvcXVvdGUuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3JldmVyc2VfZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzZTNjZGQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3JldmVyc2VfZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM0MyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL3JldmVyc2VfZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUwIGJrd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCByZXN1bHRfPCBpbnQsaW50LGludCxpbnQsaW50ID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHN0YXRlOwotICAgICAgICB0eXBlZGVmIGludCBpdGVyYXRvcjsKLSAgICB9OwotCi19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUxIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCByZXN1bHRfPCBpbnQsaW50LGludCxpbnQsaW50ID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHN0YXRlOwotICAgICAgICB0eXBlZGVmIGludCBpdGVyYXRvcjsKLSAgICB9OwotCi19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTIgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHJlc3VsdF88IGludCxpbnQsaW50LGludCxpbnQgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaW50IGl0ZXJhdG9yOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUzIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCByZXN1bHRfPCBpbnQsaW50LGludCxpbnQsaW50ID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHN0YXRlOwotICAgICAgICB0eXBlZGVmIGludCBpdGVyYXRvcjsKLSAgICB9OwotCi19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGU0IGJrd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTQsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCByZXN1bHRfPCBpbnQsaW50LGludCxpbnQsaW50ID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHN0YXRlOwotICAgICAgICB0eXBlZGVmIGludCBpdGVyYXRvcjsKLSAgICB9OwotCi19OwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bmsKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiByZXZlcnNlX2ZvbGRfaW1wbDwKLSAgICAgICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICAgICAsIGl0ZXI0Ci0gICAgICAgICAgICAsIExhc3QKLSAgICAgICAgICAgICwgZndkX3N0YXRlNAotICAgICAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgPiBuZXN0ZWRfY2h1bms7Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6OnN0YXRlIGJrd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTQsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX3N0ZXA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX251bGxfc3RlcAotewotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazwgLTEgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICB0eXBlbmFtZSBpc19zYW1lPCBGaXJzdCxMYXN0ID46OnR5cGUKLSAgICAgICAgICAgICwgcmV2ZXJzZV9mb2xkX251bGxfc3RlcDwgTGFzdCxTdGF0ZSA+Ci0gICAgICAgICAgICAsIHJldmVyc2VfZm9sZF9zdGVwPCBGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLSAgICAgICAgICAgID46OnR5cGUgcmVzXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCByZXN1bHRfPCBpbnQsaW50LGludCxpbnQsaW50ID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHN0YXRlOwotICAgICAgICB0eXBlZGVmIGludCBpdGVyYXRvcjsKLSAgICB9OwotCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9zdGVwCi17Ci0gICAgdHlwZWRlZiByZXZlcnNlX2ZvbGRfY2h1bms8IC0xID46OnRlbXBsYXRlIHJlc3VsdF88Ci0gICAgICAgICAgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8Rm9yd2FyZE9wLFN0YXRlLCB0eXBlbmFtZSBkZXJlZjxGaXJzdD46OnR5cGU+Ojp0eXBlCi0gICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IG5lc3RlZF9zdGVwOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8Ci0gICAgICAgICAgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjpzdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIGRlcmVmPEZpcnN0Pjo6dHlwZQotICAgICAgICA+Ojp0eXBlIHN0YXRlOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGwKLSAgICA6IHJldmVyc2VfZm9sZF9jaHVuazxOPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0NDE3ZjQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzQzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMCBia3dkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcmVzdWx0XzwgaW50LGludCxpbnQsaW50LGludCA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpbnQgaXRlcmF0b3I7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUxIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCByZXN1bHRfPCBpbnQsaW50LGludCxpbnQsaW50ID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHN0YXRlOwotICAgICAgICB0eXBlZGVmIGludCBpdGVyYXRvcjsKLSAgICB9OwotCi19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMiBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcmVzdWx0XzwgaW50LGludCxpbnQsaW50LGludCA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpbnQgaXRlcmF0b3I7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTIsaXRlcjIgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMyBia3dkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTMsaXRlcjIgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcmVzdWx0XzwgaW50LGludCxpbnQsaW50LGludCA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpbnQgaXRlcmF0b3I7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTIsaXRlcjIgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMyxpdGVyMyA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGU0IGJrd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlNCxpdGVyMyA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMyxpdGVyMiA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCByZXN1bHRfPCBpbnQsaW50LGludCxpbnQsaW50ID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHN0YXRlOwotICAgICAgICB0eXBlZGVmIGludCBpdGVyYXRvcjsKLSAgICB9OwotCi19OwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuawotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMixpdGVyMiA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUzLGl0ZXIzID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAgICAgLCBpdGVyNAotICAgICAgICAgICAgLCBMYXN0Ci0gICAgICAgICAgICAsIGZ3ZF9zdGF0ZTQKLSAgICAgICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgID4gbmVzdGVkX2NodW5rOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjpzdGF0ZSBia3dkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTQsaXRlcjMgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTMsaXRlcjIgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX3N0ZXA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfbnVsbF9zdGVwCi17Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8IC0xID4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgaXNfc2FtZTwgRmlyc3QsTGFzdCA+Ojp0eXBlCi0gICAgICAgICAgICAsIHJldmVyc2VfaXRlcl9mb2xkX251bGxfc3RlcDwgTGFzdCxTdGF0ZSA+Ci0gICAgICAgICAgICAsIHJldmVyc2VfaXRlcl9mb2xkX3N0ZXA8IEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotICAgICAgICAgICAgPjo6dHlwZSByZXNfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHJlc3VsdF88IGludCxpbnQsaW50LGludCxpbnQgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaW50IGl0ZXJhdG9yOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfc3RlcAotewotICAgIHR5cGVkZWYgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8IC0xID46OnRlbXBsYXRlIHJlc3VsdF88Ci0gICAgICAgICAgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxTdGF0ZSxGaXJzdCA+Ojp0eXBlCi0gICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IG5lc3RlZF9zdGVwOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8Ci0gICAgICAgICAgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjpzdGF0ZQotICAgICAgICAsIEZpcnN0Ci0gICAgICAgID46OnR5cGUgc3RhdGU7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsCi0gICAgOiByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazxOPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvc2V0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9zZXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ODRkNTNlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9zZXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTU2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NldC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IHNldF9jaG9vc2VyOwotCi19Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBzZXQwPAotICAgICAgICAgICAgIAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTwKLSAgICAgICAgICAgICAgVDAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDI8Ci0gICAgICAgICAgICAgIFQwLCBUMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3Nlcjw1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDU8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3Nlcjw4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDg8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0OTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDEwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEwPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDExPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDExPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8MTI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTI8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDEzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEzPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDE0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE0PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8MTU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTU8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDE2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE2PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDE3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE3PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8MTg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTg8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDE5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE5PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDIwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDIwPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgaXNfc2V0X2FyZwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc19zZXRfYXJnPG5hPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMAotICAgICwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUKLSAgICAsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwCi0gICAgPgotc3RydWN0IHNldF9jb3VudF9hcmdzCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPQotICAgICAgICAgIGlzX3NldF9hcmc8VDE+Ojp2YWx1ZSArIGlzX3NldF9hcmc8VDI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQzPjo6dmFsdWUgKyBpc19zZXRfYXJnPFQ0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2FyZzxUNT46OnZhbHVlICsgaXNfc2V0X2FyZzxUNj46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9hcmc8VDc+Ojp2YWx1ZSArIGlzX3NldF9hcmc8VDg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQ5Pjo6dmFsdWUgKyBpc19zZXRfYXJnPFQxMD46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9hcmc8VDExPjo6dmFsdWUgKyBpc19zZXRfYXJnPFQxMj46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9hcmc8VDEzPjo6dmFsdWUgKyBpc19zZXRfYXJnPFQxND46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9hcmc8VDE1Pjo6dmFsdWUgKyBpc19zZXRfYXJnPFQxNj46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9hcmc8VDE3Pjo6dmFsdWUgKyBpc19zZXRfYXJnPFQxOD46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9hcmc8VDE5Pjo6dmFsdWUgKyBpc19zZXRfYXJnPFQyMD46OnZhbHVlCi0gICAgICAgICk7Ci0KLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBzZXRfaW1wbAotewotICAgIHR5cGVkZWYgYXV4OjpzZXRfY291bnRfYXJnczwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4gYXJnX251bV87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6c2V0X2Nob29zZXI8IGFyZ19udW1fOjp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IHNldAotICAgIDogYXV4OjpzZXRfaW1wbDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID46OnR5cGUKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6c2V0X2ltcGw8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvc2V0X2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3NldF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2I1ZjJhYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvc2V0X2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTM0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NldF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBpbnQgTiA+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjsKLQotfQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQwX2M8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MV9jPAotICAgICAgICAgICAgICBULCBDMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQzX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8NT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ1X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8Nj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ2X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0N19jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8OD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ4X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8OT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ5X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDEwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEwX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxMT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxMj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMl9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDEzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEzX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxNT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDE2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE2X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxNz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxN19jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxOD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDE5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE5X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwyMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyMF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgbG9uZyBDID4KLXN0cnVjdCBpc19zZXRfY19hcmcKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfc2V0X2NfYXJnPExPTkdfTUFYPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgKLSAgICAsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUKLSAgICAsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5LCBsb25nIEMyMAotICAgID4KLXN0cnVjdCBzZXRfY19jb3VudF9hcmdzCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPQotICAgICAgICAgIGlzX3NldF9jX2FyZzxDMT46OnZhbHVlICsgaXNfc2V0X2NfYXJnPEMyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2NfYXJnPEMzPjo6dmFsdWUgKyBpc19zZXRfY19hcmc8QzQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfY19hcmc8QzU+Ojp2YWx1ZSArIGlzX3NldF9jX2FyZzxDNj46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9jX2FyZzxDNz46OnZhbHVlICsgaXNfc2V0X2NfYXJnPEM4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2NfYXJnPEM5Pjo6dmFsdWUgKyBpc19zZXRfY19hcmc8QzEwPjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2NfYXJnPEMxMT46OnZhbHVlICsgaXNfc2V0X2NfYXJnPEMxMj46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9jX2FyZzxDMTM+Ojp2YWx1ZSArIGlzX3NldF9jX2FyZzxDMTQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfY19hcmc8QzE1Pjo6dmFsdWUgKyBpc19zZXRfY19hcmc8QzE2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2NfYXJnPEMxNz46OnZhbHVlICsgaXNfc2V0X2NfYXJnPEMxOD46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9jX2FyZzxDMTk+Ojp2YWx1ZSArIGlzX3NldF9jX2FyZzxDMjA+Ojp2YWx1ZQotICAgICAgICApOwotCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgPgotc3RydWN0IHNldF9jX2ltcGwKLXsKLSAgICB0eXBlZGVmIGF1eDo6c2V0X2NfY291bnRfYXJnczwKLSAgICAgICAgICBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID4gYXJnX251bV87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6c2V0X2NfY2hvb3NlcjwgYXJnX251bV86OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2MKLSAgICA6IGF1eDo6c2V0X2NfaW1wbDwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID46OnR5cGUKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6c2V0X2NfaW1wbDwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9zaGlmdF9sZWZ0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9zaGlmdF9sZWZ0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTgxOTk5YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvc2hpZnRfbGVmdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2hpZnRfbGVmdC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0KLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzEpOjp2YWx1ZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMik6OnZhbHVlCi0gICAgPgotc3RydWN0IHNoaWZ0X2xlZnRfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIHRhZzFfID4gdGFnMl8gKQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBzaGlmdF9sZWZ0X2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBzaGlmdF9sZWZ0X2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3Qgc2hpZnRfbGVmdF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdAotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICBzaGlmdF9sZWZ0X2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIHNoaWZ0X2xlZnRfdGFnPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBzaGlmdF9sZWZ0X3RhZzxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBzaGlmdF9sZWZ0LCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBzaGlmdF9sZWZ0KQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgU2hpZnQsIFQgbiwgU2hpZnQgcyA+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdF93a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlICA9IChuIDw8IHMpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4sIHR5cGVuYW1lIFMgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhdXg6OnNoaWZ0X2xlZnRfd2tuZDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgTjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBTOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAsIE46OnZhbHVlCi0gICAgICAgICAgICAsIFM6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvc2hpZnRfcmlnaHQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3NoaWZ0X3JpZ2h0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2RiNjBhNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvc2hpZnRfcmlnaHQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NoaWZ0X3JpZ2h0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIHRhZzFfID4gdGFnMl8gKQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBzaGlmdF9yaWdodF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgc2hpZnRfcmlnaHRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBzaGlmdF9yaWdodF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHQKLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgc2hpZnRfcmlnaHRfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgc2hpZnRfcmlnaHRfdGFnPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBzaGlmdF9yaWdodF90YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgc2hpZnRfcmlnaHQsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIHNoaWZ0X3JpZ2h0KQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgU2hpZnQsIFQgbiwgU2hpZnQgcyA+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHRfd2tuZAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChULCB2YWx1ZSAgPSAobiA+PiBzKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTiwgdHlwZW5hbWUgUyA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGF1eDo6c2hpZnRfcmlnaHRfd2tuZDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgTjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBTOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAsIE46OnZhbHVlCi0gICAgICAgICAgICAsIFM6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvdGVtcGxhdGVfYXJpdHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3RlbXBsYXRlX2FyaXR5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDMxZGJhNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvdGVtcGxhdGVfYXJpdHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy90ZW1wbGF0ZV9hcml0eS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBib29sID4KLXN0cnVjdCB0ZW1wbGF0ZV9hcml0eV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IG1wbDo6aW50XzwgLTEgPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHRlbXBsYXRlX2FyaXR5X2ltcGw8dHJ1ZT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogRjo6YXJpdHkKLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGID4KLXN0cnVjdCB0ZW1wbGF0ZV9hcml0eQotICAgIDogdGVtcGxhdGVfYXJpdHlfaW1wbDwgOjpuZG5ib29zdDo6bXBsOjphdXg6Omhhc19yZWJpbmQ8Rj46OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPEY+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHk8aW50PgotICAgIDogbXBsOjppbnRfPCAtMSA+Ci17Ci19OwotCi19fX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3RpbWVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC90aW1lcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiZWNiNjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3RpbWVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0OCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC90aW1lcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0KLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzEpOjp2YWx1ZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMik6OnZhbHVlCi0gICAgPgotc3RydWN0IHRpbWVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgdGltZXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHRpbWVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgdGltZXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHRpbWVzX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCB0aW1lc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgdGltZXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IHRpbWVzMjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgdGltZXMKLQotICAgIDogaWZfPAotCi0gICAgICAgICAgaXNfbmE8TjM+Ci0gICAgICAgICwgdGltZXMyPCBOMSxOMiA+Ci0gICAgICAgICwgdGltZXM8Ci0gICAgICAgICAgICAgIHRpbWVzMjwgTjEsTjIgPgotICAgICAgICAgICAgLCBOMywgTjQsIE41Ci0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIHRpbWVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xCi0gICAgLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCB0aW1lczIKLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgdGltZXNfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgdGltZXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0aW1lc190YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgdGltZXMyLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCB0aW1lcykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIFQgbjEsIFQgbjIgPgotc3RydWN0IHRpbWVzX3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgID0gKG4xICogbjIpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdGltZXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhdXg6OnRpbWVzX3drbmQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsIE4xOjp2YWx1ZQotICAgICAgICAgICAgLCBOMjo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUKLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC91bnBhY2tfYXJncy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvdW5wYWNrX2FyZ3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkY2RiNDZlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC91bnBhY2tfYXJncy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdW5wYWNrX2FyZ3MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCBzaXplKSA+IHN0cnVjdCB1bnBhY2tfYXJnc19pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPiBzdHJ1Y3QgYXBwbHk7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPDA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhcHBseTA8Ci0gICAgICAgICAgICAgIEYKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHVucGFja19hcmdzX2ltcGw8MT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGFwcGx5MTwKLSAgICAgICAgICAgICAgRgotICAgICAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwyPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXBwbHkyPAotICAgICAgICAgICAgICBGCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwzPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXBwbHkzPAotICAgICAgICAgICAgICBGCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDIgPjo6dHlwZQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDw0PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXBwbHk0PAotICAgICAgICAgICAgICBGCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDIgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywzID46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHVucGFja19hcmdzX2ltcGw8NT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGFwcGx5NTwKLSAgICAgICAgICAgICAgRgotICAgICAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywyID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMyA+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsNCA+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCB1bnBhY2tfYXJncwotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBhdXg6OnVucGFja19hcmdzX2ltcGw8IHNpemU8QXJncz46OnZhbHVlID4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgYXBwbHk8IEYsQXJncyA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfUEFTU19USFJPVUdIX0xBTUJEQV9TUEVDKDEsIHVucGFja19hcmdzKQotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvdmVjdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC92ZWN0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhY2I2NzA0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC92ZWN0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTU2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyOwotCi19Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPAotICAgICAgICAgICAgIAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTwKLSAgICAgICAgICAgICAgVDAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjI8Ci0gICAgICAgICAgICAgIFQwLCBUMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3Nlcjw1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjU8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3Nlcjw4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjg8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDEwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEwPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDExPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjExPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8MTI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTI8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDEzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEzPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDE0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE0PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8MTU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTU8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDE2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE2PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDE3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE3PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8MTg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTg8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDE5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE5PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDIwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjIwPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgaXNfdmVjdG9yX2FyZwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc192ZWN0b3JfYXJnPG5hPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMAotICAgICwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUKLSAgICAsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jb3VudF9hcmdzCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPQotICAgICAgICAgIGlzX3ZlY3Rvcl9hcmc8VDE+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9hcmc8VDI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfYXJnPFQzPjo6dmFsdWUgKyBpc192ZWN0b3JfYXJnPFQ0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2FyZzxUNT46OnZhbHVlICsgaXNfdmVjdG9yX2FyZzxUNj46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9hcmc8VDc+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9hcmc8VDg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfYXJnPFQ5Pjo6dmFsdWUgKyBpc192ZWN0b3JfYXJnPFQxMD46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9hcmc8VDExPjo6dmFsdWUgKyBpc192ZWN0b3JfYXJnPFQxMj46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9hcmc8VDEzPjo6dmFsdWUgKyBpc192ZWN0b3JfYXJnPFQxND46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9hcmc8VDE1Pjo6dmFsdWUgKyBpc192ZWN0b3JfYXJnPFQxNj46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9hcmc8VDE3Pjo6dmFsdWUgKyBpc192ZWN0b3JfYXJnPFQxOD46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9hcmc8VDE5Pjo6dmFsdWUgKyBpc192ZWN0b3JfYXJnPFQyMD46OnZhbHVlCi0gICAgICAgICk7Ci0KLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCB2ZWN0b3JfaW1wbAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfY291bnRfYXJnczwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4gYXJnX251bV87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dmVjdG9yX2Nob29zZXI8IGFyZ19udW1fOjp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IHZlY3RvcgotICAgIDogYXV4Ojp2ZWN0b3JfaW1wbDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID46OnR5cGUKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dmVjdG9yX2ltcGw8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvdmVjdG9yX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3ZlY3Rvcl9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzY1NGM2Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvdmVjdG9yX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTM0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvcl9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBpbnQgTiA+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjsKLQotfQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IwX2M8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMV9jPAotICAgICAgICAgICAgICBULCBUKEMwKQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyX2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzX2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMikKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNF9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8NT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I1X2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8Nj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2X2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yN19jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8OD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I4X2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8OT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5X2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDEwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEwX2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwxMT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMV9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwxMj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMl9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDEzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEzX2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwxND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNF9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwxNT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNV9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDE2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE2X2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwxNz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxN19jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwxOD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOF9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNykKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDE5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE5X2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwyMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyMF9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNyksIFQoQzE4KSwgVChDMTkpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgbG9uZyBDID4KLXN0cnVjdCBpc192ZWN0b3JfY19hcmcKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfdmVjdG9yX2NfYXJnPExPTkdfTUFYPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgKLSAgICAsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUKLSAgICAsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5LCBsb25nIEMyMAotICAgID4KLXN0cnVjdCB2ZWN0b3JfY19jb3VudF9hcmdzCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPQotICAgICAgICAgIGlzX3ZlY3Rvcl9jX2FyZzxDMT46OnZhbHVlICsgaXNfdmVjdG9yX2NfYXJnPEMyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2NfYXJnPEMzPjo6dmFsdWUgKyBpc192ZWN0b3JfY19hcmc8QzQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfY19hcmc8QzU+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9jX2FyZzxDNj46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9jX2FyZzxDNz46OnZhbHVlICsgaXNfdmVjdG9yX2NfYXJnPEM4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2NfYXJnPEM5Pjo6dmFsdWUgKyBpc192ZWN0b3JfY19hcmc8QzEwPjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2NfYXJnPEMxMT46OnZhbHVlICsgaXNfdmVjdG9yX2NfYXJnPEMxMj46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9jX2FyZzxDMTM+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9jX2FyZzxDMTQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfY19hcmc8QzE1Pjo6dmFsdWUgKyBpc192ZWN0b3JfY19hcmc8QzE2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2NfYXJnPEMxNz46OnZhbHVlICsgaXNfdmVjdG9yX2NfYXJnPEMxOD46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9jX2FyZzxDMTk+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9jX2FyZzxDMjA+Ojp2YWx1ZQotICAgICAgICApOwotCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jX2ltcGwKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX2NfY291bnRfYXJnczwKLSAgICAgICAgICBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID4gYXJnX251bV87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dmVjdG9yX2NfY2hvb3NlcjwgYXJnX251bV86OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2MKLSAgICA6IGF1eDo6dmVjdG9yX2NfaW1wbDwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID46OnR5cGUKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dmVjdG9yX2NfaW1wbDwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9hZHZhbmNlX2JhY2t3YXJkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9hZHZhbmNlX2JhY2t3YXJkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGUwYzgyOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYWR2YW5jZV9iYWNrd2FyZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2FkdmFuY2VfYmFja3dhcmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgbG9uZyBOID4gc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwwPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwxPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwzPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDw0PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9iYWNrd2FyZDw0PgotICAgICAgICAgICAgLCBJdGVyYXRvcgotICAgICAgICAgICAgPjo6dHlwZSBjaHVua19yZXN1bHRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfYmFja3dhcmQ8KAotICAgICAgICAgICAgICAgIChOIC0gNCkgPCAwCi0gICAgICAgICAgICAgICAgICAgID8gMAotICAgICAgICAgICAgICAgICAgICA6IE4gLSA0Ci0gICAgICAgICAgICAgICAgICAgICk+Ci0gICAgICAgICAgICAsIGNodW5rX3Jlc3VsdF8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9hZHZhbmNlX2ZvcndhcmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2FkdmFuY2VfZm9yd2FyZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzYTVhZmQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2FkdmFuY2VfZm9yd2FyZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2FkdmFuY2VfZm9yd2FyZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBsb25nIE4gPiBzdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkOwotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwwPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDE+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwzPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDQ+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICB0eXBlZGVmIGl0ZXI0IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9mb3J3YXJkPDQ+Ci0gICAgICAgICAgICAsIEl0ZXJhdG9yCi0gICAgICAgICAgICA+Ojp0eXBlIGNodW5rX3Jlc3VsdF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9mb3J3YXJkPCgKLSAgICAgICAgICAgICAgICAoTiAtIDQpIDwgMAotICAgICAgICAgICAgICAgICAgICA/IDAKLSAgICAgICAgICAgICAgICAgICAgOiBOIC0gNAotICAgICAgICAgICAgICAgICAgICApPgotICAgICAgICAgICAgLCBjaHVua19yZXN1bHRfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9hbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZGE2ZjMzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9hbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBib29sIENfID4gc3RydWN0IGFuZF9pbXBsCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhbmRfaW1wbDx0cnVlPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IGFuZF9pbXBsPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgVDIsVDMsVDQsdHJ1ZV8gPgotICAgIHsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcmVzdWx0XzwgdHJ1ZV8sdHJ1ZV8sdHJ1ZV8sdHJ1ZV8gPgotICAgICAgICA6IHRydWVfCi0gICAgewotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICAsIHR5cGVuYW1lIFQzID0gdHJ1ZV8sIHR5cGVuYW1lIFQ0ID0gdHJ1ZV8sIHR5cGVuYW1lIFQ1ID0gdHJ1ZV8KLSAgICA+Ci1zdHJ1Y3QgYW5kXwotCi0gICAgOiBhdXg6OmFuZF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IFQyLFQzLFQ0LFQ1ID4KLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGFuZF8KLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigKLSAgICAgIDIKLSAgICAsIDUKLSAgICAsIGFuZF8KLSAgICApCi0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYXBwbHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2FwcGx5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjgxZmRkYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYXBwbHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTYwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FwcGx5LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkwCi0KLSAgICA6IGFwcGx5X3dyYXAwPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAxCi0gICAgICAgICwgYXBwbHkwCi0gICAgICAgICwgKEYgKQotICAgICAgICApCi19OwotCi0vLy8gd29ya2Fyb3VuZCBmb3IgRVRJIGJ1ZwotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5MDxpbnQ+Ci17Ci0gICAgdHlwZWRlZiBpbnQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkxCi0KLSAgICA6IGFwcGx5X3dyYXAxPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDIKLSAgICAgICAgLCBhcHBseTEKLSAgICAgICAgLCAoRiwgVDEpCi0gICAgICAgICkKLX07Ci0KLS8vLyB3b3JrYXJvdW5kIGZvciBFVEkgYnVnCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXBwbHkxPCBpbnQsaW50ID4KLXsKLSAgICB0eXBlZGVmIGludCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkyCi0KLSAgICA6IGFwcGx5X3dyYXAyPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAzCi0gICAgICAgICwgYXBwbHkyCi0gICAgICAgICwgKEYsIFQxLCBUMikKLSAgICAgICAgKQotfTsKLQotLy8vIHdvcmthcm91bmQgZm9yIEVUSSBidWcKLXRlbXBsYXRlPD4KLXN0cnVjdCBhcHBseTI8IGludCxpbnQsaW50ID4KLXsKLSAgICB0eXBlZGVmIGludCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5MwotCi0gICAgOiBhcHBseV93cmFwMzwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIsIFQzCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDQKLSAgICAgICAgLCBhcHBseTMKLSAgICAgICAgLCAoRiwgVDEsIFQyLCBUMykKLSAgICAgICAgKQotfTsKLQotLy8vIHdvcmthcm91bmQgZm9yIEVUSSBidWcKLXRlbXBsYXRlPD4KLXN0cnVjdCBhcHBseTM8IGludCxpbnQsaW50LGludCA+Ci17Ci0gICAgdHlwZWRlZiBpbnQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk0Ci0KLSAgICA6IGFwcGx5X3dyYXA0PAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBhcHBseTQKLSAgICAgICAgLCAoRiwgVDEsIFQyLCBUMywgVDQpCi0gICAgICAgICkKLX07Ci0KLS8vLyB3b3JrYXJvdW5kIGZvciBFVEkgYnVnCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXBwbHk0PCBpbnQsaW50LGludCxpbnQsaW50ID4KLXsKLSAgICB0eXBlZGVmIGludCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk1Ci0KLSAgICA6IGFwcGx5X3dyYXA1PAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA2Ci0gICAgICAgICwgYXBwbHk1Ci0gICAgICAgICwgKEYsIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotLy8vIHdvcmthcm91bmQgZm9yIEVUSSBidWcKLXRlbXBsYXRlPD4KLXN0cnVjdCBhcHBseTU8IGludCxpbnQsaW50LGludCxpbnQsaW50ID4KLXsKLSAgICB0eXBlZGVmIGludCB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2FwcGx5X2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYXBwbHlfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjJhOWE3Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYXBwbHlfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FwcGx5X2Z3ZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5MDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseTE7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5MjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5MzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseTQ7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5NTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2FwcGx5X3dyYXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2FwcGx5X3dyYXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZmQyZjA0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9hcHBseV93cmFwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzOCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcHBseV93cmFwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLQotICAgICwgdHlwZW5hbWUgaGFzX2FwcGx5XyA9IHR5cGVuYW1lIGF1eDo6aGFzX2FwcGx5PEY+Ojp0eXBlCi0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDAKLQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgIAotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLX07Ci0KLS8vLyB3b3JrYXJvdW5kIGZvciBFVEkgYnVnCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDA8aW50PgotewotICAgIHR5cGVkZWYgaW50IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDEKLQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICBUMQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLX07Ci0KLS8vLyB3b3JrYXJvdW5kIGZvciBFVEkgYnVnCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDE8IGludCxpbnQgPgotewotICAgIHR5cGVkZWYgaW50IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAyCi0KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgVDEsIFQyCi0gICAgICAgID46OnR5cGUgdHlwZTsKLQotfTsKLQotLy8vIHdvcmthcm91bmQgZm9yIEVUSSBidWcKLXRlbXBsYXRlPD4KLXN0cnVjdCBhcHBseV93cmFwMjwgaW50LGludCxpbnQgPgotewotICAgIHR5cGVkZWYgaW50IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMwotCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgIFQxLCBUMiwgVDMKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotCi19OwotCi0vLy8gd29ya2Fyb3VuZCBmb3IgRVRJIGJ1ZwotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5X3dyYXAzPCBpbnQsaW50LGludCxpbnQgPgotewotICAgIHR5cGVkZWYgaW50IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDQKLQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICBUMSwgVDIsIFQzLCBUNAotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLX07Ci0KLS8vLyB3b3JrYXJvdW5kIGZvciBFVEkgYnVnCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDQ8IGludCxpbnQsaW50LGludCxpbnQgPgotewotICAgIHR5cGVkZWYgaW50IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXA1Ci0KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID46OnR5cGUgdHlwZTsKLQotfTsKLQotLy8vIHdvcmthcm91bmQgZm9yIEVUSSBidWcKLXRlbXBsYXRlPD4KLXN0cnVjdCBhcHBseV93cmFwNTwgaW50LGludCxpbnQsaW50LGludCxpbnQgPgotewotICAgIHR5cGVkZWYgaW50IHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYXJnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9hcmcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTQ0NzZhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9hcmcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEtMjAwMgotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FyZy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8IC0xID4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAtMSk7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUxIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDE+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMSk7Ci0gICAgdHlwZWRlZiBhcmc8Mj4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTEgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8Mj4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAyKTsKLSAgICB0eXBlZGVmIGFyZzwzPiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMiB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwzPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDMpOwotICAgIHR5cGVkZWYgYXJnPDQ+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUzIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDQ+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gNCk7Ci0gICAgdHlwZWRlZiBhcmc8NT4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTQgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8NT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSA1KTsKLSAgICB0eXBlZGVmIGFyZzw2PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVNSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTk9OVFlQRV9BUklUWV9TUEVDKDEsaW50LCBhcmcpCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYmFzaWNfYmluZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYmFzaWNfYmluZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0OTRhMjYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2Jhc2ljX2JpbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzI4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2Jhc2ljX2JpbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGJvb2wgPgotc3RydWN0IHJlc29sdmVfYXJnX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzCi0gICAgICAgICwgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCByZXNvbHZlX2FyZ19pbXBsPHRydWU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMwotICAgICAgICAsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGlzX2JpbmRfdGVtcGxhdGU7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmcKLSAgICA6IHJlc29sdmVfYXJnX2ltcGw8IGlzX2JpbmRfdGVtcGxhdGU8VD46OnZhbHVlID4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVCxVMSxVMixVMyxVNCxVNSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgaW50IGFyaXR5XyA+IHN0cnVjdCBiaW5kX2Nob29zZXI7Ci0KLWF1eDo6bm9fdGFnIGlzX2JpbmRfaGVscGVyKC4uLik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IGF1eDo6bm9fdGFnIGlzX2JpbmRfaGVscGVyKHByb3RlY3Q8VD4qKTsKLQotdGVtcGxhdGU8IGludCBOID4KLWF1eDo6eWVzX3RhZyBpc19iaW5kX2hlbHBlcihhcmc8Tj4qKTsKLQotdGVtcGxhdGU8IGJvb2wgaXNfcmVmXyAgPSB0cnVlID4KLXN0cnVjdCBpc19iaW5kX3RlbXBsYXRlX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfYmluZF90ZW1wbGF0ZV9pbXBsPGZhbHNlPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICAgICAgIHNpemVvZihhdXg6OmlzX2JpbmRfaGVscGVyKHN0YXRpY19jYXN0PFQqPigwKSkpCi0gICAgICAgICAgICAgICAgPT0gc2l6ZW9mKGF1eDo6eWVzX3RhZykKLSAgICAgICAgICAgICk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGlzX2JpbmRfdGVtcGxhdGUKLSAgICA6IGlzX2JpbmRfdGVtcGxhdGVfaW1wbDwgOjpuZG5ib29zdDo6ZGV0YWlsOjppc19yZWZlcmVuY2VfaW1wbDxUPjo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88VD4KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDAKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kMDxGPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDEsIGJpbmQwKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDEsIGJpbmQwKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGJpbmQxCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kMTwgRixUMSA+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMiwgYmluZDEpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMiwgYmluZDEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQyCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kMjwgRixUMSxUMiA+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMywgYmluZDIpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMywgYmluZDIpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMwotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAzPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDM8IEYsVDEsVDIsVDMgPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDQsIGJpbmQzKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDQsIGJpbmQzKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGJpbmQ0Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQ0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA0PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZDUKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQ1LFUxLFUyLFUzLFU0LFU1ID4gdDU7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlLCB0eXBlbmFtZSB0NTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDYsIGJpbmQ1KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDYsIGJpbmQ1KQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2JpbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2JpbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MmEyYjI3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9iaW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzMiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYmluZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgYm9vbCA+Ci1zdHJ1Y3QgcmVzb2x2ZV9hcmdfaW1wbAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMKLSAgICAgICAgLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJlc29sdmVfYXJnX2ltcGw8dHJ1ZT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzCi0gICAgICAgICwgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgLCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgaXNfYmluZF90ZW1wbGF0ZTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZwotICAgIDogcmVzb2x2ZV9hcmdfaW1wbDwgaXNfYmluZF90ZW1wbGF0ZTxUPjo6dmFsdWUgPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBULFUxLFUyLFUzLFU0LFU1ID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCByZXBsYWNlX3VubmFtZWRfYXJnX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQXJnID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgQXJnIG5leHQ7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmVwbGFjZV91bm5hbWVkX2FyZ19pbXBsPCBhcmc8IC0xID4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBBcmcgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PEFyZz46OnR5cGUgbmV4dDsKLSAgICAgICAgdHlwZWRlZiBBcmcgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIEFyZyA+Ci1zdHJ1Y3QgcmVwbGFjZV91bm5hbWVkX2FyZwotICAgIDogcmVwbGFjZV91bm5hbWVkX2FyZ19pbXBsPFQ+Ojp0ZW1wbGF0ZSByZXN1bHRfPEFyZz4KLXsKLX07Ci0KLXRlbXBsYXRlPCBpbnQgYXJpdHlfID4gc3RydWN0IGJpbmRfY2hvb3NlcjsKLQotYXV4Ojpub190YWcgaXNfYmluZF9oZWxwZXIoLi4uKTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gYXV4Ojpub190YWcgaXNfYmluZF9oZWxwZXIocHJvdGVjdDxUPiopOwotCi10ZW1wbGF0ZTwgaW50IE4gPgotYXV4Ojp5ZXNfdGFnIGlzX2JpbmRfaGVscGVyKGFyZzxOPiopOwotCi10ZW1wbGF0ZTwgYm9vbCBpc19yZWZfICA9IHRydWUgPgotc3RydWN0IGlzX2JpbmRfdGVtcGxhdGVfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSBmYWxzZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc19iaW5kX3RlbXBsYXRlX2ltcGw8ZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgICAgc2l6ZW9mKGF1eDo6aXNfYmluZF9oZWxwZXIoc3RhdGljX2Nhc3Q8VCo+KDApKSkKLSAgICAgICAgICAgICAgICA9PSBzaXplb2YoYXV4Ojp5ZXNfdGFnKQotICAgICAgICAgICAgKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgaXNfYmluZF90ZW1wbGF0ZQotICAgIDogaXNfYmluZF90ZW1wbGF0ZV9pbXBsPCA6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX3JlZmVyZW5jZV9pbXBsPFQ+Ojp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxUPgotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBiaW5kMAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kMDxGPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDEsIGJpbmQwKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDEsIGJpbmQwKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGJpbmQxCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kMTwgRixUMSA+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMiwgYmluZDEpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMiwgYmluZDEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQyCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQyPCBGLFQxLFQyID4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygzLCBiaW5kMikKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygzLCBiaW5kMikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAzPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDM8IEYsVDEsVDIsVDMgPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDQsIGJpbmQzKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDQsIGJpbmQzKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGJpbmQ0Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ0LG40ID4gcjQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6OnR5cGUgYTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6Om5leHQgbjU7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA0PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZDUKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDQsbjQgPiByNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6dHlwZSBhNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6bmV4dCBuNTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGE0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDUsbjUgPiByNTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNTo6dHlwZSBhNTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNTo6bmV4dCBuNjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGE1LFUxLFUyLFUzLFU0LFU1ID4gdDU7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUsIHR5cGVuYW1lIHQ1Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNiwgYmluZDUpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNiwgYmluZDUpCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYmluZF9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2JpbmRfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmJkMWI2ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYmluZF9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYmluZF9md2QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBiaW5kMDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kMTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kNDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZDU7Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9iaXRhbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2JpdGFuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjZGZhYzkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2JpdGFuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYml0YW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0YW5kX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBiaXRhbmRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBiaXRhbmRfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGJpdGFuZF9pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0YW5kX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBiaXRhbmRfdGFnCi0gICAgOiB0YWc8IFQsbmEgPgotewotfTsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXzI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdGFuZF8KLQotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBpZl88Ci0KLSAgICAgICAgICBpc19uYTxOMz4KLSAgICAgICAgLCBiaXRhbmRfMjwgTjEsTjIgPgotICAgICAgICAsIGJpdGFuZF88Ci0gICAgICAgICAgICAgIGJpdGFuZF8yPCBOMSxOMiA+Ci0gICAgICAgICAgICAsIE4zLCBONCwgTjUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZQotCi0gICAgPgotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0YW5kXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMQotICAgICwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXzIKLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgYml0YW5kX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGJpdGFuZF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGJpdGFuZF90YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgYml0YW5kXzIsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGJpdGFuZF8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBUIG4xLCBUIG4yID4KLXN0cnVjdCBiaXRhbmRfd2tuZAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChULCB2YWx1ZSAgPSAobjEgJiBuMikpOwotICAgIHR5cGVkZWYgaW50ZWdyYWxfYzwgVCx2YWx1ZSA+IHR5cGU7Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiaXRhbmRfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhdXg6OmJpdGFuZF93a25kPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCBOMTo6dmFsdWUKLSAgICAgICAgICAgICwgTjI6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYml0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2JpdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjVlYjZiZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYml0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTUxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpdG9yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIHRhZzFfID4gdGFnMl8gKQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBiaXRvcl9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgYml0b3JfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBiaXRvcl9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0b3JfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGJpdG9yX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBiaXRvcl90YWcKLSAgICA6IHRhZzwgVCxuYSA+Ci17Ci19OwotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBiaXRvcl8yOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBiaXRvcl8KLQotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBpZl88Ci0KLSAgICAgICAgICBpc19uYTxOMz4KLSAgICAgICAgLCBiaXRvcl8yPCBOMSxOMiA+Ci0gICAgICAgICwgYml0b3JfPAotICAgICAgICAgICAgICBiaXRvcl8yPCBOMSxOMiA+Ci0gICAgICAgICAgICAsIE4zLCBONCwgTjUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZQotCi0gICAgPgotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xCi0gICAgLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBiaXRvcl8yCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIGJpdG9yX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGJpdG9yX3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYml0b3JfdGFnPE4yPjo6dHlwZQotICAgICAgICAgICAgPgotICAgICAgICAsIE4xCi0gICAgICAgICwgTjIKLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGJpdG9yXzIsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGJpdG9yXykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIFQgbjEsIFQgbjIgPgotc3RydWN0IGJpdG9yX3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgID0gKG4xIHwgbjIpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYml0b3JfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhdXg6OmJpdG9yX3drbmQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsIE4xOjp2YWx1ZQotICAgICAgICAgICAgLCBOMjo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUKLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9iaXR4b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2JpdHhvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlMDg5YTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2JpdHhvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYml0eG9yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0eG9yX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBiaXR4b3JfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBiaXR4b3JfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGJpdHhvcl9pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0eG9yX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBiaXR4b3JfdGFnCi0gICAgOiB0YWc8IFQsbmEgPgotewotfTsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXzI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdHhvcl8KLQotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBpZl88Ci0KLSAgICAgICAgICBpc19uYTxOMz4KLSAgICAgICAgLCBiaXR4b3JfMjwgTjEsTjIgPgotICAgICAgICAsIGJpdHhvcl88Ci0gICAgICAgICAgICAgIGJpdHhvcl8yPCBOMSxOMiA+Ci0gICAgICAgICAgICAsIE4zLCBONCwgTjUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZQotCi0gICAgPgotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0eG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMQotICAgICwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXzIKLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgYml0eG9yX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGJpdHhvcl90YWc8TjE+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGJpdHhvcl90YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgYml0eG9yXzIsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGJpdHhvcl8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBUIG4xLCBUIG4yID4KLXN0cnVjdCBiaXR4b3Jfd2tuZAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChULCB2YWx1ZSAgPSAobjEgXiBuMikpOwotICAgIHR5cGVkZWYgaW50ZWdyYWxfYzwgVCx2YWx1ZSA+IHR5cGU7Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiaXR4b3JfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhdXg6OmJpdHhvcl93a25kPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCBOMTo6dmFsdWUKLSAgICAgICAgICAgICwgTjI6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvZGVxdWUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2RlcXVlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQ5N2Q4Mi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvZGVxdWUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTU2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2RlcXVlLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBpbnQgTiA+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjsKLQotfQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPAotICAgICAgICAgICAgIAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxPAotICAgICAgICAgICAgICBUMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyPAotICAgICAgICAgICAgICBUMCwgVDEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I0PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8NT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8Nz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I3PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8OD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8MTA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTA8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxMT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8MTI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTI8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8MTM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTM8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8MTU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTU8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8MTY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTY8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxNz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8MTg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTg8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8MTk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTk8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwyMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGlzX2RlcXVlX2FyZwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc19kZXF1ZV9hcmc8bmE+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwCi0gICAgLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNQotICAgICwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAKLSAgICA+Ci1zdHJ1Y3QgZGVxdWVfY291bnRfYXJncwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0KLSAgICAgICAgICBpc19kZXF1ZV9hcmc8VDE+Ojp2YWx1ZSArIGlzX2RlcXVlX2FyZzxUMj46OnZhbHVlIAotICAgICAgICArIGlzX2RlcXVlX2FyZzxUMz46OnZhbHVlICsgaXNfZGVxdWVfYXJnPFQ0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfZGVxdWVfYXJnPFQ1Pjo6dmFsdWUgKyBpc19kZXF1ZV9hcmc8VDY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19kZXF1ZV9hcmc8VDc+Ojp2YWx1ZSArIGlzX2RlcXVlX2FyZzxUOD46OnZhbHVlIAotICAgICAgICArIGlzX2RlcXVlX2FyZzxUOT46OnZhbHVlICsgaXNfZGVxdWVfYXJnPFQxMD46OnZhbHVlIAotICAgICAgICArIGlzX2RlcXVlX2FyZzxUMTE+Ojp2YWx1ZSArIGlzX2RlcXVlX2FyZzxUMTI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19kZXF1ZV9hcmc8VDEzPjo6dmFsdWUgKyBpc19kZXF1ZV9hcmc8VDE0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfZGVxdWVfYXJnPFQxNT46OnZhbHVlICsgaXNfZGVxdWVfYXJnPFQxNj46OnZhbHVlIAotICAgICAgICArIGlzX2RlcXVlX2FyZzxUMTc+Ojp2YWx1ZSArIGlzX2RlcXVlX2FyZzxUMTg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19kZXF1ZV9hcmc8VDE5Pjo6dmFsdWUgKyBpc19kZXF1ZV9hcmc8VDIwPjo6dmFsdWUKLSAgICAgICAgKTsKLQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IGRlcXVlX2ltcGwKLXsKLSAgICB0eXBlZGVmIGF1eDo6ZGVxdWVfY291bnRfYXJnczwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4gYXJnX251bV87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6ZGVxdWVfY2hvb3NlcjwgYXJnX251bV86OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgZGVxdWUKLSAgICA6IGF1eDo6ZGVxdWVfaW1wbDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID46OnR5cGUKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6ZGVxdWVfaW1wbDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9kaXZpZGVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9kaXZpZGVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjRmNDljNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvZGl2aWRlcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZGl2aWRlcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0KLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzEpOjp2YWx1ZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMik6OnZhbHVlCi0gICAgPgotc3RydWN0IGRpdmlkZXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIHRhZzFfID4gdGFnMl8gKQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBkaXZpZGVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBkaXZpZGVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZGl2aWRlc19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZGl2aWRlc19pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZGl2aWRlc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZGl2aWRlc190YWcKLSAgICA6IHRhZzwgVCxuYSA+Ci17Ci19OwotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBkaXZpZGVzMjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlcwotCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGlmXzwKLQotICAgICAgICAgIGlzX25hPE4zPgotICAgICAgICAsIGRpdmlkZXMyPCBOMSxOMiA+Ci0gICAgICAgICwgZGl2aWRlczwKLSAgICAgICAgICAgICAgZGl2aWRlczI8IE4xLE4yID4KLSAgICAgICAgICAgICwgTjMsIE40LCBONQotICAgICAgICAgICAgPgotICAgICAgICA+Ojp0eXBlCi0KLSAgICA+Ci0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBkaXZpZGVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xCi0gICAgLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBkaXZpZGVzMgotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICBkaXZpZGVzX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGRpdmlkZXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBkaXZpZGVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBkaXZpZGVzMiwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgZGl2aWRlcykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIFQgbjEsIFQgbjIgPgotc3RydWN0IGRpdmlkZXNfd2tuZAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChULCB2YWx1ZSAgPSAobjEgLyBuMikpOwotICAgIHR5cGVkZWYgaW50ZWdyYWxfYzwgVCx2YWx1ZSA+IHR5cGU7Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkaXZpZGVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4OjpkaXZpZGVzX3drbmQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsIE4xOjp2YWx1ZQotICAgICAgICAgICAgLCBOMjo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUKLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9lcXVhbF90by5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvZXF1YWxfdG8uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMzlmNDdkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9lcXVhbF90by5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZXF1YWxfdG8uaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCBlcXVhbF90b19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggdGFnMV8gPiB0YWcyXyApCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGVxdWFsX3RvX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBlcXVhbF90b19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBlcXVhbF90b19pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZXF1YWxfdG9faW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGVxdWFsX3RvX3RhZwotICAgIDogdGFnPCBULG5hID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGVxdWFsX3RvCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIGVxdWFsX3RvX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGVxdWFsX3RvX3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZXF1YWxfdG9fdGFnPE4yPjo6dHlwZQotICAgICAgICAgICAgPgotICAgICAgICAsIE4xCi0gICAgICAgICwgTjIKLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGVxdWFsX3RvLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBlcXVhbF90bykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlcXVhbF90b19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgPT0KLSAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApCi0gICAgICAgICAgICApOwotICAgICAgICB0eXBlZGVmIGJvb2xfPHZhbHVlPiB0eXBlOwotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzRjYWNlNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0NSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDsKLQotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBmb2xkX2NodW5rOwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBmb2xkX2NodW5rPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBzdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGZvbGRfY2h1bms8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIHN0YXRlMSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZm9sZF9jaHVuazwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgc3RhdGUyIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBmb2xkX2NodW5rPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBzdGF0ZTMgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGZvbGRfY2h1bms8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIHN0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIHN0YXRlNCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBmb2xkX2NodW5rCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGZvbGRfaW1wbDwKLSAgICAgICAgICAgICAgNAotICAgICAgICAgICAgLCBGaXJzdAotICAgICAgICAgICAgLCBMYXN0Ci0gICAgICAgICAgICAsIFN0YXRlCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgPiBjaHVua187Ci0KLSAgICAgICAgdHlwZWRlZiBmb2xkX2ltcGw8Ci0gICAgICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAgICAgLCB0eXBlbmFtZSBjaHVua186Oml0ZXJhdG9yCi0gICAgICAgICAgICAsIExhc3QKLSAgICAgICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjpzdGF0ZQotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgID4gcmVzXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfc3RlcDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgID4KLXN0cnVjdCBmb2xkX251bGxfc3RlcAotewotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZvbGRfY2h1bms8IC0xID4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICB0eXBlbmFtZSBpc19zYW1lPCBGaXJzdCxMYXN0ID46OnR5cGUKLSAgICAgICAgICAgICwgZm9sZF9udWxsX3N0ZXA8IExhc3QsU3RhdGUgPgotICAgICAgICAgICAgLCBmb2xkX3N0ZXA8IEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLSAgICAgICAgICAgID46OnR5cGUgcmVzXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfc3RlcAotewotICAgIHR5cGVkZWYgZm9sZF9jaHVuazwgLTEgPjo6dGVtcGxhdGUgcmVzdWx0XzwKLSAgICAgICAgICB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjxGb3J3YXJkT3AsU3RhdGUsIHR5cGVuYW1lIGRlcmVmPEZpcnN0Pjo6dHlwZT46OnR5cGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBjaHVua187Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNodW5rXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaHVua186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsCi0gICAgOiBmb2xkX2NodW5rPE4+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvZnVsbF9sYW1iZGEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2Z1bGxfbGFtYmRhLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2RhOTcxZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvZnVsbF9sYW1iZGEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTU0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vZnVsbF9sYW1iZGEuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIGJvb2wgQzEgPSBmYWxzZSwgYm9vbCBDMiA9IGZhbHNlLCBib29sIEMzID0gZmFsc2UsIGJvb2wgQzQgPSBmYWxzZQotICAgICwgYm9vbCBDNSA9IGZhbHNlCi0gICAgPgotc3RydWN0IGxhbWJkYV9vcgotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsYW1iZGFfb3I8IGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlID4KLSAgICA6IGZhbHNlXwotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhCi17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBUIHJlc3VsdF87Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgaXNfbGFtYmRhX2V4cHJlc3Npb24KLSAgICA6IGxhbWJkYTxUPjo6aXNfbGUKLXsKLX07Ci0KLXRlbXBsYXRlPCBpbnQgTiwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBsYW1iZGE8IGFyZzxOPiwgVGFnID4KLXsKLSAgICB0eXBlZGVmIHRydWVfIGlzX2xlOwotICAgIHR5cGVkZWYgbXBsOjphcmc8Tj4gcmVzdWx0XzsgLy8gcXVhbGlmaWVkIGZvciB0aGUgc2FrZSBvZiBNSVBTcHJvIDcuNDEKLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQwPEY+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQwPAotICAgICAgICAgIEYKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDEKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MTwgdHJ1ZV8sVGFnLEYsTDEgPgotewotICAgIHR5cGVkZWYgYmluZDE8Ci0gICAgICAgICAgcXVvdGUxPCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8VDE+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDE8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQxPCBGLFQxID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDE8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDIKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MjwgdHJ1ZV8sVGFnLEYsTDEsTDIgPgotewotICAgIHR5cGVkZWYgYmluZDI8Ci0gICAgICAgICAgcXVvdGUyPCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8IFQxLFQyID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDI8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyCi0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDI8IEYsVDEsVDIgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMjwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MwotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUsIHR5cGVuYW1lIEwzOjp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMwotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQzPCB0cnVlXyxUYWcsRixMMSxMMixMMyA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMzwKLSAgICAgICAgICBxdW90ZTM8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XywgdHlwZW5hbWUgTDI6OnJlc3VsdF8sIHR5cGVuYW1lIEwzOjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIsVDMgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDMsVGFnID4gbDM7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUsIGlzX2xlMzo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQzPAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMiwgbDMKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDM8IEYsVDEsVDIsVDMgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMzwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEsIFQyLCBUMwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMywgdHlwZW5hbWUgTDQKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NAotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUsIHR5cGVuYW1lIEwzOjp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMywgdHlwZW5hbWUgTDQKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NDwgdHJ1ZV8sVGFnLEYsTDEsTDIsTDMsTDQgPgotewotICAgIHR5cGVkZWYgYmluZDQ8Ci0gICAgICAgICAgcXVvdGU0PCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfLCB0eXBlbmFtZSBMMzo6cmVzdWx0XwotICAgICAgICAsIHR5cGVuYW1lIEw0OjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMixUMyxUNCA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQyLFRhZyA+IGwyOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMyxUYWcgPiBsMzsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDQsVGFnID4gbDQ7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlLCBpc19sZTI6OnZhbHVlLCBpc19sZTM6OnZhbHVlLCBpc19sZTQ6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0NDwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMSwgbDIsIGwzLCBsNAotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDQ8IEYsVDEsVDIsVDMsVDQgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kNDwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgUDUgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzLCB0eXBlbmFtZSBMNCwgdHlwZW5hbWUgTDUKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NQotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUsIHR5cGVuYW1lIEwzOjp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnR5cGUsIHR5cGVuYW1lIEw1Ojp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgUDUgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzLCB0eXBlbmFtZSBMNCwgdHlwZW5hbWUgTDUKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NTwgdHJ1ZV8sVGFnLEYsTDEsTDIsTDMsTDQsTDUgPgotewotICAgIHR5cGVkZWYgYmluZDU8Ci0gICAgICAgICAgcXVvdGU1PCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfLCB0eXBlbmFtZSBMMzo6cmVzdWx0XwotICAgICAgICAsIHR5cGVuYW1lIEw0OjpyZXN1bHRfLCB0eXBlbmFtZSBMNTo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQKLSAgICAgICAgLCB0eXBlbmFtZSBQNQotICAgICAgICA+Ci0gICAgICBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIsVDMsVDQsVDUgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDMsVGFnID4gbDM7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQ0LFRhZyA+IGw0OwotICAgIHR5cGVkZWYgbGFtYmRhPCBUNSxUYWcgPiBsNTsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsNTo6aXNfbGUgaXNfbGU1OwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlLCBpc19sZTI6OnZhbHVlLCBpc19sZTM6OnZhbHVlLCBpc19sZTQ6OnZhbHVlCi0gICAgICAgICwgaXNfbGU1Ojp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDU8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyLCBsMywgbDQsIGw1Ci0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kNTwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotLy8vIHNwZWNpYWwgY2FzZSBmb3IgJ3Byb3RlY3QnCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBsYW1iZGE8IG1wbDo6cHJvdGVjdDxUPiwgVGFnID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxUPiByZXN1bHRfOwotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotLy8vIHNwZWNpYWxpemF0aW9ucyBmb3IgdGhlIG1haW4gJ2JpbmQnIGZvcm0KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPiByZXN1bHRfOwotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotLy8vIHdvcmthcm91bmQgZm9yIE1XQ1cgOC4zKy9FREcgPCAzMDMsIGxlYWRzIHRvIGFtYmlndWl0eSBvbiBEaWdpdGFsIE1hcnMKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcxLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBsYW1iZGE8IEYsVGFnMSA+Ci0gICAgICAgICwgVGFnMgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IEYsVGFnMiA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUYWcxLFRhZzIgPiBsMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTsKLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0Mjxpc19sZSwgVGFnMiwgbXBsOjpsYW1iZGEsIGwxLCBsMj4gbGVfcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygyLCBsYW1iZGEpCi0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9ncmVhdGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9ncmVhdGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTVjYzMwNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvZ3JlYXRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZ3JlYXRlci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0KLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzEpOjp2YWx1ZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMik6OnZhbHVlCi0gICAgPgotc3RydWN0IGdyZWF0ZXJfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIHRhZzFfID4gdGFnMl8gKQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBncmVhdGVyX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBncmVhdGVyX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZ3JlYXRlcl90YWcKLSAgICA6IHRhZzwgVCxuYSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBncmVhdGVyCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIGdyZWF0ZXJfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZ3JlYXRlcl90YWc8TjE+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGdyZWF0ZXJfdGFnPE4yPjo6dHlwZQotICAgICAgICAgICAgPgotICAgICAgICAsIE4xCi0gICAgICAgICwgTjIKLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGdyZWF0ZXIsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGdyZWF0ZXIpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgPgotICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIHR5cGVkZWYgYm9vbF88dmFsdWU+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvZ3JlYXRlcl9lcXVhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvZ3JlYXRlcl9lcXVhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlNzAyNzQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2dyZWF0ZXJfZXF1YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2dyZWF0ZXJfZXF1YWwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZ3JlYXRlcl9lcXVhbF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZ3JlYXRlcl9lcXVhbF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfdGFnCi0gICAgOiB0YWc8IFQsbmEgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcl9lcXVhbAotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICBncmVhdGVyX2VxdWFsX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGdyZWF0ZXJfZXF1YWxfdGFnPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBncmVhdGVyX2VxdWFsX3RhZzxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBncmVhdGVyX2VxdWFsLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBncmVhdGVyX2VxdWFsKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlID49Ci0gICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKQotICAgICAgICAgICAgKTsKLSAgICAgICAgdHlwZWRlZiBib29sXzx2YWx1ZT4gdHlwZTsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9pbmhlcml0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9pbmhlcml0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2NiMGE0OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvaW5oZXJpdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvaW5oZXJpdC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBib29sIEMxLCBib29sIEMyID4KLXN0cnVjdCBpbmhlcml0Ml9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIERlcml2ZWQsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogVDEsIFQyCi0gICAgewotICAgICAgICB0eXBlZGVmIERlcml2ZWQgdHlwZV87Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpbmhlcml0Ml9pbXBsPCBmYWxzZSx0cnVlID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRGVyaXZlZCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBUMQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUMSB0eXBlXzsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGluaGVyaXQyX2ltcGw8IHRydWUsZmFsc2UgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBEZXJpdmVkLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IFQyCi0gICAgewotICAgICAgICB0eXBlZGVmIFQyIHR5cGVfOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW5oZXJpdDJfaW1wbDwgdHJ1ZSx0cnVlID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRGVyaXZlZCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVDEgdHlwZV87Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgID4KLXN0cnVjdCBpbmhlcml0MgotICAgIDogYXV4Ojppbmhlcml0Ml9pbXBsPAotICAgICAgICAgIGlzX2VtcHR5X2Jhc2U8VDE+Ojp2YWx1ZQotICAgICAgICAsIGlzX2VtcHR5X2Jhc2U8VDI+Ojp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBpbmhlcml0MjwgVDEsVDIgPixUMSwgVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW5oZXJpdDI6OnR5cGVfIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBpbmhlcml0MiwgKFQxLCBUMikpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMiwgaW5oZXJpdDIpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgID4KLXN0cnVjdCBpbmhlcml0MwotICAgIDogaW5oZXJpdDI8Ci0gICAgICAgICAgdHlwZW5hbWUgaW5oZXJpdDI8Ci0gICAgICAgICAgICAgIFQxLCBUMgotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAsIFQzCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDMKLSAgICAgICAgLCBpbmhlcml0MwotICAgICAgICAsICggVDEsIFQyLCBUMykKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDMsIGluaGVyaXQzKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEsIHR5cGVuYW1lIFQ0ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDQKLSAgICA6IGluaGVyaXQyPAotICAgICAgICAgIHR5cGVuYW1lIGluaGVyaXQzPAotICAgICAgICAgICAgICBUMSwgVDIsIFQzCi0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgVDQKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNAotICAgICAgICAsIGluaGVyaXQ0Ci0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDQsIGluaGVyaXQ0KQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEsIHR5cGVuYW1lIFQ0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ1ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDUKLSAgICA6IGluaGVyaXQyPAotICAgICAgICAgIHR5cGVuYW1lIGluaGVyaXQ0PAotICAgICAgICAgICAgICBUMSwgVDIsIFQzLCBUNAotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAsIFQ1Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBpbmhlcml0NQotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoNSwgaW5oZXJpdDUpCi0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUMiA9IGVtcHR5X2Jhc2UKLSAgICAsIHR5cGVuYW1lIFQzID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDQgPSBlbXB0eV9iYXNlCi0gICAgLCB0eXBlbmFtZSBUNSA9IGVtcHR5X2Jhc2UKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdAotICAgIDogaW5oZXJpdDU8IFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpbmhlcml0PCBuYSxuYSxuYSxuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0KLSAgICAgICAgICB0eXBlbmFtZSBUMSA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQyID0gZW1wdHlfYmFzZQotICAgICAgICAsIHR5cGVuYW1lIFQzID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDQgPSBlbXB0eV9iYXNlCi0gICAgICAgICwgdHlwZW5hbWUgVDUgPSBlbXB0eV9iYXNlCi0KLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgICAgICA6IGluaGVyaXQ8IFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19MQU1CREEoNSwgaW5oZXJpdCkKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19BUklUWSg1LCBpbmhlcml0KQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX1RFTVBMQVRFX0FSSVRZKDUsIDUsIGluaGVyaXQpCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvaXRlcl9mb2xkX2lmX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTc0YmQ4My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvaXRlcl9mb2xkX2lmX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTMzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMS0yMDAyCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vaXRlcl9mb2xkX2lmX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIFN0YXRlID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwCi17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8IGJvb2wgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGVPcAotICAgICAgICAsIHR5cGVuYW1lIEl0ZXJhdG9yT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgU3RhdGVPcCxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXJhdG9yT3A6OnR5cGUgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsPGZhbHNlPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZU9wCi0gICAgICAgICwgdHlwZW5hbWUgSXRlcmF0b3JPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAsIHR5cGVuYW1lIFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFByZWRpY2F0ZSxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIG5vdF9sYXN0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChub3RfbGFzdCk6OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IEl0ZXJhdG9yLFN0YXRlLEZvcndhcmRPcCwgbXBsOjpuZXh0PEl0ZXJhdG9yPiA+IGltcGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgUHJlZGljYXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFByZWRpY2F0ZSxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIG5vdF9sYXN0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChub3RfbGFzdCk6OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IEl0ZXJhdG9yLFN0YXRlLEJhY2t3YXJkT3AsIGlkZW50aXR5PEl0ZXJhdG9yPiA+IGltcGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkUHJlZGljYXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfaW1wbAotewotIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwPCBJdGVyYXRvcixTdGF0ZSA+IGZvcndhcmRfc3RlcDA7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAwOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMDo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDE7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAxOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDI7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAyOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDM7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAzOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMzo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0Ojpub3RfbGFzdAotICAgICAgICAsIGl0ZXJfZm9sZF9pZl9pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjppdGVyYXRvcgotICAgICAgICAgICAgLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjpzdGF0ZQotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgICwgRm9yd2FyZFByZWRpY2F0ZQotICAgICAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICAgICAsIEJhY2t3YXJkUHJlZGljYXRlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgaXRlcl9mb2xkX2lmX251bGxfc3RlcDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6aXRlcmF0b3IKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6c3RhdGUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZSBiYWNrd2FyZF9zdGVwNDsKLQotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDM6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwNDo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDM7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAzOjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMjsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAxOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDI6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAxOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDA6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMTo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDA7Ci0gICAgCi0KLSBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMDo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwNDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9pdGVyX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvaXRlcl9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMWE0NWZlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9pdGVyX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNDUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9pdGVyX2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IGl0ZXJfZm9sZF9jaHVuazsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgaXRlcl9mb2xkX2NodW5rPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBzdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGl0ZXJfZm9sZF9jaHVuazwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgc3RhdGUxIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBpdGVyX2ZvbGRfY2h1bms8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMSxpdGVyMSA+Ojp0eXBlIHN0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIHN0YXRlMiBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgaXRlcl9mb2xkX2NodW5rPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTEsaXRlcjEgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTIsaXRlcjIgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBzdGF0ZTMgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGl0ZXJfZm9sZF9jaHVuazw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUyLGl0ZXIyID46OnR5cGUgc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUzLGl0ZXIzID46OnR5cGUgc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgc3RhdGU0IHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IGl0ZXJfZm9sZF9jaHVuawotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAgICAgNAotICAgICAgICAgICAgLCBGaXJzdAotICAgICAgICAgICAgLCBMYXN0Ci0gICAgICAgICAgICAsIFN0YXRlCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgPiBjaHVua187Ci0KLSAgICAgICAgdHlwZWRlZiBpdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6aXRlcmF0b3IKLSAgICAgICAgICAgICwgTGFzdAotICAgICAgICAgICAgLCB0eXBlbmFtZSBjaHVua186OnN0YXRlCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgPiByZXNfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX3N0ZXA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX251bGxfc3RlcAotewotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGl0ZXJfZm9sZF9jaHVuazwgLTEgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGlzX3NhbWU8IEZpcnN0LExhc3QgPjo6dHlwZQotICAgICAgICAgICAgLCBpdGVyX2ZvbGRfbnVsbF9zdGVwPCBMYXN0LFN0YXRlID4KLSAgICAgICAgICAgICwgaXRlcl9mb2xkX3N0ZXA8IEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLSAgICAgICAgICAgID46OnR5cGUgcmVzXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9zdGVwCi17Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfY2h1bms8IC0xID46OnRlbXBsYXRlIHJlc3VsdF88Ci0gICAgICAgICAgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxTdGF0ZSxGaXJzdCA+Ojp0eXBlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gY2h1bmtfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaHVua186OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2h1bmtfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsCi0gICAgOiBpdGVyX2ZvbGRfY2h1bms8Tj4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9sYW1iZGFfbm9fY3Rwcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvbGFtYmRhX25vX2N0cHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NWY1ZjZiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9sYW1iZGFfbm9fY3Rwcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMjkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfbm9fY3Rwcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgYm9vbCBDMSA9IGZhbHNlLCBib29sIEMyID0gZmFsc2UsIGJvb2wgQzMgPSBmYWxzZSwgYm9vbCBDNCA9IGZhbHNlCi0gICAgLCBib29sIEM1ID0gZmFsc2UKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhX29yCi0gICAgOiB0cnVlXwotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxhbWJkYV9vcjwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UgPgotICAgIDogZmFsc2VfCi17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgQXJpdHkgPiBzdHJ1Y3QgbGFtYmRhX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICB0eXBlZGVmIGlzX3BsYWNlaG9sZGVyPFQ+IGlzX2xlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50XzwxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMywgVGFnLCBmYWxzZV8gPiBsMzsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUzKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc0LCBUYWcsIGZhbHNlXyA+IGw0OwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTQpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQ0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlLCB0eXBlbmFtZSBsMzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBsNDo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMywgVGFnLCBmYWxzZV8gPiBsMzsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzQsIFRhZywgZmFsc2VfID4gbDQ7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc1LCBUYWcsIGZhbHNlXyA+IGw1OwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGw1Ojppc19sZSBpc19sZTU7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUzKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlNCk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTUpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQ1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlLCB0eXBlbmFtZSBsMzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBsNDo6dHlwZSwgdHlwZW5hbWUgbDU6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgICwgdHlwZW5hbWUgUHJvdGVjdAotICAgID4KLXN0cnVjdCBsYW1iZGEKLXsKLSAgICAvLy8gTWV0YWZ1bmN0aW9uIGZvcndhcmRpbmcgY29uZnVzZXMgTVNWQyA2LngKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dGVtcGxhdGVfYXJpdHk8VD46OnR5cGUgYXJpdHlfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfaW1wbDxhcml0eV8+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVCxUYWcsUHJvdGVjdCA+IGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsXzo6dHlwZSB0eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbF86OmlzX2xlIGlzX2xlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMywgbGFtYmRhLCAoVCwgVGFnLCBQcm90ZWN0KSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMSwgMywgbGFtYmRhKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgaXNfbGFtYmRhX2V4cHJlc3Npb24KLSAgICA6IGxhbWJkYTxUPjo6aXNfbGUKLXsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9sZXNzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9sZXNzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWE1ODk1My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvbGVzcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGVzcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0KLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzEpOjp2YWx1ZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMik6OnZhbHVlCi0gICAgPgotc3RydWN0IGxlc3NfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIHRhZzFfID4gdGFnMl8gKQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBsZXNzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBsZXNzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbGVzc190YWcKLSAgICA6IHRhZzwgVCxuYSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBsZXNzCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIGxlc3NfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgbGVzc190YWc8TjE+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGxlc3NfdGFnPE4yPjo6dHlwZQotICAgICAgICAgICAgPgotICAgICAgICAsIE4xCi0gICAgICAgICwgTjIKLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGxlc3MsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGxlc3MpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGVzc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgPgotICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlICkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIHR5cGVkZWYgYm9vbF88dmFsdWU+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvbGVzc19lcXVhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvbGVzc19lcXVhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4OTA0NDEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2xlc3NfZXF1YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xlc3NfZXF1YWwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCBsZXNzX2VxdWFsX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbGVzc19lcXVhbF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbGVzc19lcXVhbF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGxlc3NfZXF1YWxfdGFnCi0gICAgOiB0YWc8IFQsbmEgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbGVzc19lcXVhbAotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICBsZXNzX2VxdWFsX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGxlc3NfZXF1YWxfdGFnPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBsZXNzX2VxdWFsX3RhZzxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBsZXNzX2VxdWFsLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBsZXNzX2VxdWFsKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlIDw9Ci0gICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKQotICAgICAgICAgICAgKTsKLSAgICAgICAgdHlwZWRlZiBib29sXzx2YWx1ZT4gdHlwZTsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9saXN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9saXN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmIxOWU2MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvbGlzdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NTYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGlzdC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IGxpc3RfY2hvb3NlcjsKLQotfQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxpc3QwPAotICAgICAgICAgICAgIAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxPAotICAgICAgICAgICAgICBUMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyPAotICAgICAgICAgICAgICBUMCwgVDEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3Nlcjw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q0PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3Nlcjw1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8Nj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3Nlcjw3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q3PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3Nlcjw4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8OT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0OTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTA8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDExPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxMj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTI8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxMz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTM8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDE0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxNT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTU8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxNj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTY8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDE3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxOD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTg8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxOT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTk8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDIwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGlzX2xpc3RfYXJnCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IHRydWUpOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX2xpc3RfYXJnPG5hPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMAotICAgICwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUKLSAgICAsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwCi0gICAgPgotc3RydWN0IGxpc3RfY291bnRfYXJncwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0KLSAgICAgICAgICBpc19saXN0X2FyZzxUMT46OnZhbHVlICsgaXNfbGlzdF9hcmc8VDI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2FyZzxUMz46OnZhbHVlICsgaXNfbGlzdF9hcmc8VDQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2FyZzxUNT46OnZhbHVlICsgaXNfbGlzdF9hcmc8VDY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2FyZzxUNz46OnZhbHVlICsgaXNfbGlzdF9hcmc8VDg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2FyZzxUOT46OnZhbHVlICsgaXNfbGlzdF9hcmc8VDEwPjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9hcmc8VDExPjo6dmFsdWUgKyBpc19saXN0X2FyZzxUMTI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2FyZzxUMTM+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQxND46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfYXJnPFQxNT46OnZhbHVlICsgaXNfbGlzdF9hcmc8VDE2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9hcmc8VDE3Pjo6dmFsdWUgKyBpc19saXN0X2FyZzxUMTg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2FyZzxUMTk+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQyMD46OnZhbHVlCi0gICAgICAgICk7Ci0KLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBsaXN0X2ltcGwKLXsKLSAgICB0eXBlZGVmIGF1eDo6bGlzdF9jb3VudF9hcmdzPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPiBhcmdfbnVtXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsaXN0X2Nob29zZXI8IGFyZ19udW1fOjp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IGxpc3QKLSAgICA6IGF1eDo6bGlzdF9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsaXN0X2ltcGw8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvbGlzdF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9saXN0X2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZWQ3ZjdlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9saXN0X2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTM0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xpc3RfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IGxpc3RfY19jaG9vc2VyOwotCi19Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MF9jPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MV9jPAotICAgICAgICAgICAgICBULCBDMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDJfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0M19jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDVfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8Nj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0Nl9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8Nz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0N19jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDhfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8OT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0OV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MTA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEwX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MTE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDExX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwxMj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTJfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MTM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEzX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MTQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE0X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwxNT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTVfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MTY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE2X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MTc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE3X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwxOD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MThfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MTk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE5X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MjA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDIwX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBsb25nIEMgPgotc3RydWN0IGlzX2xpc3RfY19hcmcKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfbGlzdF9jX2FyZzxMT05HX01BWD4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1LCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgLCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1Ci0gICAgLCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOSwgbG9uZyBDMjAKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jX2NvdW50X2FyZ3MKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9Ci0gICAgICAgICAgaXNfbGlzdF9jX2FyZzxDMT46OnZhbHVlICsgaXNfbGlzdF9jX2FyZzxDMj46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfY19hcmc8QzM+Ojp2YWx1ZSArIGlzX2xpc3RfY19hcmc8QzQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2NfYXJnPEM1Pjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEM2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9jX2FyZzxDNz46OnZhbHVlICsgaXNfbGlzdF9jX2FyZzxDOD46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfY19hcmc8Qzk+Ojp2YWx1ZSArIGlzX2xpc3RfY19hcmc8QzEwPjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9jX2FyZzxDMTE+Ojp2YWx1ZSArIGlzX2xpc3RfY19hcmc8QzEyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9jX2FyZzxDMTM+Ojp2YWx1ZSArIGlzX2xpc3RfY19hcmc8QzE0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9jX2FyZzxDMTU+Ojp2YWx1ZSArIGlzX2xpc3RfY19hcmc8QzE2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9jX2FyZzxDMTc+Ojp2YWx1ZSArIGlzX2xpc3RfY19hcmc8QzE4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9jX2FyZzxDMTk+Ojp2YWx1ZSArIGlzX2xpc3RfY19hcmc8QzIwPjo6dmFsdWUKLSAgICAgICAgKTsKLQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgID4KLXN0cnVjdCBsaXN0X2NfaW1wbAotewotICAgIHR5cGVkZWYgYXV4OjpsaXN0X2NfY291bnRfYXJnczwKLSAgICAgICAgICBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID4gYXJnX251bV87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGlzdF9jX2Nob29zZXI8IGFyZ19udW1fOjp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCA9IExPTkdfTUFYLCBsb25nIEMxID0gTE9OR19NQVgsIGxvbmcgQzIgPSBMT05HX01BWAotICAgICwgbG9uZyBDMyA9IExPTkdfTUFYLCBsb25nIEM0ID0gTE9OR19NQVgsIGxvbmcgQzUgPSBMT05HX01BWAotICAgICwgbG9uZyBDNiA9IExPTkdfTUFYLCBsb25nIEM3ID0gTE9OR19NQVgsIGxvbmcgQzggPSBMT05HX01BWAotICAgICwgbG9uZyBDOSA9IExPTkdfTUFYLCBsb25nIEMxMCA9IExPTkdfTUFYLCBsb25nIEMxMSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxMiA9IExPTkdfTUFYLCBsb25nIEMxMyA9IExPTkdfTUFYLCBsb25nIEMxNCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxNSA9IExPTkdfTUFYLCBsb25nIEMxNiA9IExPTkdfTUFYLCBsb25nIEMxNyA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxOCA9IExPTkdfTUFYLCBsb25nIEMxOSA9IExPTkdfTUFYCi0gICAgPgotc3RydWN0IGxpc3RfYwotICAgIDogYXV4OjpsaXN0X2NfaW1wbDwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID46OnR5cGUKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGlzdF9jX2ltcGw8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvbWFwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9tYXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTE3NGM4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9tYXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTU2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL21hcC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IG1hcF9jaG9vc2VyOwotCi19Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBtYXAwPAotICAgICAgICAgICAgIAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTwKLSAgICAgICAgICAgICAgVDAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDI8Ci0gICAgICAgICAgICAgIFQwLCBUMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3Nlcjw1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDU8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3Nlcjw4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDg8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwOTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDEwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDEwPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDExPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDExPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8MTI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTI8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDEzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDEzPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDE0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE0PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8MTU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTU8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDE2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE2PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDE3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE3PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8MTg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTg8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDE5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE5PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDIwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDIwPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgaXNfbWFwX2FyZwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc19tYXBfYXJnPG5hPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMAotICAgICwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUKLSAgICAsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwCi0gICAgPgotc3RydWN0IG1hcF9jb3VudF9hcmdzCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPQotICAgICAgICAgIGlzX21hcF9hcmc8VDE+Ojp2YWx1ZSArIGlzX21hcF9hcmc8VDI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19tYXBfYXJnPFQzPjo6dmFsdWUgKyBpc19tYXBfYXJnPFQ0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbWFwX2FyZzxUNT46OnZhbHVlICsgaXNfbWFwX2FyZzxUNj46OnZhbHVlIAotICAgICAgICArIGlzX21hcF9hcmc8VDc+Ojp2YWx1ZSArIGlzX21hcF9hcmc8VDg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19tYXBfYXJnPFQ5Pjo6dmFsdWUgKyBpc19tYXBfYXJnPFQxMD46OnZhbHVlIAotICAgICAgICArIGlzX21hcF9hcmc8VDExPjo6dmFsdWUgKyBpc19tYXBfYXJnPFQxMj46OnZhbHVlIAotICAgICAgICArIGlzX21hcF9hcmc8VDEzPjo6dmFsdWUgKyBpc19tYXBfYXJnPFQxND46OnZhbHVlIAotICAgICAgICArIGlzX21hcF9hcmc8VDE1Pjo6dmFsdWUgKyBpc19tYXBfYXJnPFQxNj46OnZhbHVlIAotICAgICAgICArIGlzX21hcF9hcmc8VDE3Pjo6dmFsdWUgKyBpc19tYXBfYXJnPFQxOD46OnZhbHVlIAotICAgICAgICArIGlzX21hcF9hcmc8VDE5Pjo6dmFsdWUgKyBpc19tYXBfYXJnPFQyMD46OnZhbHVlCi0gICAgICAgICk7Ci0KLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBtYXBfaW1wbAotewotICAgIHR5cGVkZWYgYXV4OjptYXBfY291bnRfYXJnczwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4gYXJnX251bV87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bWFwX2Nob29zZXI8IGFyZ19udW1fOjp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IG1hcAotICAgIDogYXV4OjptYXBfaW1wbDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID46OnR5cGUKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bWFwX2ltcGw8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvbWludXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL21pbnVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjBjMjdhYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvbWludXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTUwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL21pbnVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3QgbWludXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIHRhZzFfID4gdGFnMl8gKQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBtaW51c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbWludXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBtaW51c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbWludXNfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IG1pbnVzX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBtaW51c190YWcKLSAgICA6IHRhZzwgVCxuYSA+Ci17Ci19OwotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBtaW51czI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IG1pbnVzCi0KLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgaWZfPAotCi0gICAgICAgICAgaXNfbmE8TjM+Ci0gICAgICAgICwgbWludXMyPCBOMSxOMiA+Ci0gICAgICAgICwgbWludXM8Ci0gICAgICAgICAgICAgIG1pbnVzMjwgTjEsTjIgPgotICAgICAgICAgICAgLCBOMywgTjQsIE41Ci0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUKLQotICAgID4KLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIG1pbnVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xCi0gICAgLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBtaW51czIKLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgbWludXNfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgbWludXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBtaW51c190YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbWludXMyLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBtaW51cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIFQgbjEsIFQgbjIgPgotc3RydWN0IG1pbnVzX3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgID0gKG4xIC0gbjIpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWludXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhdXg6Om1pbnVzX3drbmQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsIE4xOjp2YWx1ZQotICAgICAgICAgICAgLCBOMjo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUKLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9tb2R1bHVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9tb2R1bHVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTkyYTIwNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvbW9kdWx1cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbW9kdWx1cy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0KLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzEpOjp2YWx1ZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMik6OnZhbHVlCi0gICAgPgotc3RydWN0IG1vZHVsdXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIHRhZzFfID4gdGFnMl8gKQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBtb2R1bHVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBtb2R1bHVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbW9kdWx1c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbW9kdWx1c19pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbW9kdWx1c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbW9kdWx1c190YWcKLSAgICA6IHRhZzwgVCxuYSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBtb2R1bHVzCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIG1vZHVsdXNfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgbW9kdWx1c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIG1vZHVsdXNfdGFnPE4yPjo6dHlwZQotICAgICAgICAgICAgPgotICAgICAgICAsIE4xCi0gICAgICAgICwgTjIKLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIG1vZHVsdXMsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIG1vZHVsdXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBUIG4xLCBUIG4yID4KLXN0cnVjdCBtb2R1bHVzX3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgID0gKG4xICUgbjIpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbW9kdWx1c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGF1eDo6bW9kdWx1c193a25kPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCBOMTo6dmFsdWUKLSAgICAgICAgICAgICwgTjI6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvbm90X2VxdWFsX3RvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9ub3RfZXF1YWxfdG8uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmODYxODA5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9ub3RfZXF1YWxfdG8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL25vdF9lcXVhbF90by5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0KLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzEpOjp2YWx1ZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMik6OnZhbHVlCi0gICAgPgotc3RydWN0IG5vdF9lcXVhbF90b19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggdGFnMV8gPiB0YWcyXyApCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IG5vdF9lcXVhbF90b19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbm90X2VxdWFsX3RvX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX3RhZwotICAgIDogdGFnPCBULG5hID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IG5vdF9lcXVhbF90bwotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICBub3RfZXF1YWxfdG9faW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgbm90X2VxdWFsX3RvX3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbm90X2VxdWFsX3RvX3RhZzxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBub3RfZXF1YWxfdG8sIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIG5vdF9lcXVhbF90bykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlICE9Ci0gICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKQotICAgICAgICAgICAgKTsKLSAgICAgICAgdHlwZWRlZiBib29sXzx2YWx1ZT4gdHlwZTsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9vci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvb3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjQ0NjU4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9vci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9vci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgYm9vbCBDXyA+IHN0cnVjdCBvcl9pbXBsCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogdHJ1ZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IG9yX2ltcGw8ZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogb3JfaW1wbDwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IFQyLFQzLFQ0LGZhbHNlXyA+Ci0gICAgewotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCByZXN1bHRfPCBmYWxzZV8sZmFsc2VfLGZhbHNlXyxmYWxzZV8gPgotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgLCB0eXBlbmFtZSBUMyA9IGZhbHNlXywgdHlwZW5hbWUgVDQgPSBmYWxzZV8sIHR5cGVuYW1lIFQ1ID0gZmFsc2VfCi0gICAgPgotc3RydWN0IG9yXwotCi0gICAgOiBhdXg6Om9yX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgVDIsVDMsVDQsVDUgPgotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgb3JfCi0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoCi0gICAgICAyCi0gICAgLCA1Ci0gICAgLCBvcl8KLSAgICApCi0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvcGxhY2Vob2xkZXJzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9wbGFjZWhvbGRlcnMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTI4YzA5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9wbGFjZWhvbGRlcnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMS0yMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3BsYWNlaG9sZGVycy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwgLTEgPiBfOwotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8pCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol87Ci19Ci0KLX19Ci0KLS8vLyBhZ3VydCwgMTcvbWFyLzAyOiBvbmUgbW9yZSBwbGFjZWhvbGRlciBmb3IgdGhlIGxhc3QgJ2FwcGx5IycgCi0vLy8gc3BlY2lhbGl6YXRpb24KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDE+IF8xOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzEpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol8xOwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Mj4gXzI7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfMikKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzI7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwzPiBfMzsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8zKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfMzsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDQ+IF80OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzQpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol80OwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8NT4gXzU7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfNSkKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzU7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzw2PiBfNjsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF82KQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfNjsKLX0KLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9wbHVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9wbHVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmY4Y2NiNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvcGx1cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvcGx1cy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0KLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzEpOjp2YWx1ZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMik6OnZhbHVlCi0gICAgPgotc3RydWN0IHBsdXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIHRhZzFfID4gdGFnMl8gKQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBwbHVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBwbHVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgcGx1c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcGx1c19pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcGx1c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcGx1c190YWcKLSAgICA6IHRhZzwgVCxuYSA+Ci17Ci19OwotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBwbHVzMjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgcGx1cwotCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGlmXzwKLQotICAgICAgICAgIGlzX25hPE4zPgotICAgICAgICAsIHBsdXMyPCBOMSxOMiA+Ci0gICAgICAgICwgcGx1czwKLSAgICAgICAgICAgICAgcGx1czI8IE4xLE4yID4KLSAgICAgICAgICAgICwgTjMsIE40LCBONQotICAgICAgICAgICAgPgotICAgICAgICA+Ojp0eXBlCi0KLSAgICA+Ci0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xCi0gICAgLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBwbHVzMgotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICBwbHVzX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIHBsdXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBwbHVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBwbHVzMiwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgcGx1cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIFQgbjEsIFQgbjIgPgotc3RydWN0IHBsdXNfd2tuZAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChULCB2YWx1ZSAgPSAobjEgKyBuMikpOwotICAgIHR5cGVkZWYgaW50ZWdyYWxfYzwgVCx2YWx1ZSA+IHR5cGU7Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwbHVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4OjpwbHVzX3drbmQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsIE4xOjp2YWx1ZQotICAgICAgICAgICAgLCBOMjo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUKLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9xdW90ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvcXVvdGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MjU5OGNiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9xdW90ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvcXVvdGUuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTwgYm9vbCA+IHN0cnVjdCBxdW90ZV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IFQKLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHF1b3RlX2ltcGw8ZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGUxCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBxdW90ZV9pbXBsPCBhdXg6Omhhc190eXBlPCBGPFUxPiA+Ojp2YWx1ZSA+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IEY8VTE+ID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGUyCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwgYXV4OjpoYXNfdHlwZTwgRjwgVTEsVTIgPiA+Ojp2YWx1ZSA+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IEY8IFUxLFUyID4gPgotCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGUzCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IHF1b3RlX2ltcGw8IGF1eDo6aGFzX3R5cGU8IEY8IFUxLFUyLFUzID4gPjo6dmFsdWUgPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBGPCBVMSxVMixVMyA+ID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgID4KLXN0cnVjdCBxdW90ZTQKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBxdW90ZV9pbXBsPCBhdXg6Omhhc190eXBlPCBGPCBVMSxVMixVMyxVNCA+ID46OnZhbHVlID4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgRjwgVTEsVTIsVTMsVTQgPiA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQKLSAgICAgICAgLCB0eXBlbmFtZSBQNQotICAgICAgICA+Ci0gICAgICBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgID4KLXN0cnVjdCBxdW90ZTUKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICAgICAsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IHF1b3RlX2ltcGw8IGF1eDo6aGFzX3R5cGU8IEY8IFUxLFUyLFUzLFU0LFU1ID4gPjo6dmFsdWUgPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBGPCBVMSxVMixVMyxVNCxVNSA+ID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3JldmVyc2VfZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjNmMxNzMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3JldmVyc2VfZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5NSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL3JldmVyc2VfZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUwIGJrd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUxIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTIgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUzIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGU0IGJrd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTQsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bmsKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiByZXZlcnNlX2ZvbGRfaW1wbDwKLSAgICAgICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICAgICAsIGl0ZXI0Ci0gICAgICAgICAgICAsIExhc3QKLSAgICAgICAgICAgICwgZndkX3N0YXRlNAotICAgICAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgPiBuZXN0ZWRfY2h1bms7Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6OnN0YXRlIGJrd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTQsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX3N0ZXA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX251bGxfc3RlcAotewotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazwgLTEgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICB0eXBlbmFtZSBpc19zYW1lPCBGaXJzdCxMYXN0ID46OnR5cGUKLSAgICAgICAgICAgICwgcmV2ZXJzZV9mb2xkX251bGxfc3RlcDwgTGFzdCxTdGF0ZSA+Ci0gICAgICAgICAgICAsIHJldmVyc2VfZm9sZF9zdGVwPCBGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLSAgICAgICAgICAgID46OnR5cGUgcmVzXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9zdGVwCi17Ci0gICAgdHlwZWRlZiByZXZlcnNlX2ZvbGRfY2h1bms8IC0xID46OnRlbXBsYXRlIHJlc3VsdF88Ci0gICAgICAgICAgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8Rm9yd2FyZE9wLFN0YXRlLCB0eXBlbmFtZSBkZXJlZjxGaXJzdD46OnR5cGU+Ojp0eXBlCi0gICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IG5lc3RlZF9zdGVwOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8Ci0gICAgICAgICAgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjpzdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIGRlcmVmPEZpcnN0Pjo6dHlwZQotICAgICAgICA+Ojp0eXBlIHN0YXRlOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGwKLSAgICA6IHJldmVyc2VfZm9sZF9jaHVuazxOPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3Y2M2ODguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjk1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMCBia3dkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUxIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMiBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTIsaXRlcjIgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMyBia3dkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTMsaXRlcjIgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTIsaXRlcjIgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMyxpdGVyMyA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGU0IGJrd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlNCxpdGVyMyA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMyxpdGVyMiA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuawotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMixpdGVyMiA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUzLGl0ZXIzID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAgICAgLCBpdGVyNAotICAgICAgICAgICAgLCBMYXN0Ci0gICAgICAgICAgICAsIGZ3ZF9zdGF0ZTQKLSAgICAgICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgID4gbmVzdGVkX2NodW5rOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjpzdGF0ZSBia3dkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTQsaXRlcjMgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTMsaXRlcjIgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX3N0ZXA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfbnVsbF9zdGVwCi17Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8IC0xID4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgaXNfc2FtZTwgRmlyc3QsTGFzdCA+Ojp0eXBlCi0gICAgICAgICAgICAsIHJldmVyc2VfaXRlcl9mb2xkX251bGxfc3RlcDwgTGFzdCxTdGF0ZSA+Ci0gICAgICAgICAgICAsIHJldmVyc2VfaXRlcl9mb2xkX3N0ZXA8IEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotICAgICAgICAgICAgPjo6dHlwZSByZXNfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfc3RlcAotewotICAgIHR5cGVkZWYgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8IC0xID46OnRlbXBsYXRlIHJlc3VsdF88Ci0gICAgICAgICAgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxTdGF0ZSxGaXJzdCA+Ojp0eXBlCi0gICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IG5lc3RlZF9zdGVwOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8Ci0gICAgICAgICAgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjpzdGF0ZQotICAgICAgICAsIEZpcnN0Ci0gICAgICAgID46OnR5cGUgc3RhdGU7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsCi0gICAgOiByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazxOPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvc2V0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9zZXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ODRkNTNlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9zZXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTU2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NldC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IHNldF9jaG9vc2VyOwotCi19Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBzZXQwPAotICAgICAgICAgICAgIAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTwKLSAgICAgICAgICAgICAgVDAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDI8Ci0gICAgICAgICAgICAgIFQwLCBUMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3Nlcjw1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDU8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3Nlcjw4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDg8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0OTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDEwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEwPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDExPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDExPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8MTI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTI8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDEzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEzPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDE0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE0PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8MTU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTU8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDE2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE2PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDE3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE3PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8MTg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTg8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDE5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE5PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDIwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDIwPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgaXNfc2V0X2FyZwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc19zZXRfYXJnPG5hPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMAotICAgICwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUKLSAgICAsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwCi0gICAgPgotc3RydWN0IHNldF9jb3VudF9hcmdzCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPQotICAgICAgICAgIGlzX3NldF9hcmc8VDE+Ojp2YWx1ZSArIGlzX3NldF9hcmc8VDI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQzPjo6dmFsdWUgKyBpc19zZXRfYXJnPFQ0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2FyZzxUNT46OnZhbHVlICsgaXNfc2V0X2FyZzxUNj46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9hcmc8VDc+Ojp2YWx1ZSArIGlzX3NldF9hcmc8VDg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQ5Pjo6dmFsdWUgKyBpc19zZXRfYXJnPFQxMD46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9hcmc8VDExPjo6dmFsdWUgKyBpc19zZXRfYXJnPFQxMj46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9hcmc8VDEzPjo6dmFsdWUgKyBpc19zZXRfYXJnPFQxND46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9hcmc8VDE1Pjo6dmFsdWUgKyBpc19zZXRfYXJnPFQxNj46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9hcmc8VDE3Pjo6dmFsdWUgKyBpc19zZXRfYXJnPFQxOD46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9hcmc8VDE5Pjo6dmFsdWUgKyBpc19zZXRfYXJnPFQyMD46OnZhbHVlCi0gICAgICAgICk7Ci0KLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBzZXRfaW1wbAotewotICAgIHR5cGVkZWYgYXV4OjpzZXRfY291bnRfYXJnczwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4gYXJnX251bV87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6c2V0X2Nob29zZXI8IGFyZ19udW1fOjp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IHNldAotICAgIDogYXV4OjpzZXRfaW1wbDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID46OnR5cGUKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6c2V0X2ltcGw8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvc2V0X2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3NldF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2I1ZjJhYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvc2V0X2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTM0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NldF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBpbnQgTiA+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjsKLQotfQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQwX2M8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MV9jPAotICAgICAgICAgICAgICBULCBDMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQzX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8NT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ1X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8Nj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ2X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0N19jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8OD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ4X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8OT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ5X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDEwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEwX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxMT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxMj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMl9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDEzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEzX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxNT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDE2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE2X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxNz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxN19jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxOD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDE5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE5X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwyMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyMF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgbG9uZyBDID4KLXN0cnVjdCBpc19zZXRfY19hcmcKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfc2V0X2NfYXJnPExPTkdfTUFYPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgKLSAgICAsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUKLSAgICAsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5LCBsb25nIEMyMAotICAgID4KLXN0cnVjdCBzZXRfY19jb3VudF9hcmdzCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPQotICAgICAgICAgIGlzX3NldF9jX2FyZzxDMT46OnZhbHVlICsgaXNfc2V0X2NfYXJnPEMyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2NfYXJnPEMzPjo6dmFsdWUgKyBpc19zZXRfY19hcmc8QzQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfY19hcmc8QzU+Ojp2YWx1ZSArIGlzX3NldF9jX2FyZzxDNj46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9jX2FyZzxDNz46OnZhbHVlICsgaXNfc2V0X2NfYXJnPEM4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2NfYXJnPEM5Pjo6dmFsdWUgKyBpc19zZXRfY19hcmc8QzEwPjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2NfYXJnPEMxMT46OnZhbHVlICsgaXNfc2V0X2NfYXJnPEMxMj46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9jX2FyZzxDMTM+Ojp2YWx1ZSArIGlzX3NldF9jX2FyZzxDMTQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfY19hcmc8QzE1Pjo6dmFsdWUgKyBpc19zZXRfY19hcmc8QzE2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2NfYXJnPEMxNz46OnZhbHVlICsgaXNfc2V0X2NfYXJnPEMxOD46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9jX2FyZzxDMTk+Ojp2YWx1ZSArIGlzX3NldF9jX2FyZzxDMjA+Ojp2YWx1ZQotICAgICAgICApOwotCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgPgotc3RydWN0IHNldF9jX2ltcGwKLXsKLSAgICB0eXBlZGVmIGF1eDo6c2V0X2NfY291bnRfYXJnczwKLSAgICAgICAgICBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID4gYXJnX251bV87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6c2V0X2NfY2hvb3NlcjwgYXJnX251bV86OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2MKLSAgICA6IGF1eDo6c2V0X2NfaW1wbDwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID46OnR5cGUKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6c2V0X2NfaW1wbDwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9zaGlmdF9sZWZ0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9zaGlmdF9sZWZ0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDYzMmVkMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvc2hpZnRfbGVmdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2hpZnRfbGVmdC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0KLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzEpOjp2YWx1ZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMik6OnZhbHVlCi0gICAgPgotc3RydWN0IHNoaWZ0X2xlZnRfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIHRhZzFfID4gdGFnMl8gKQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBzaGlmdF9sZWZ0X2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBzaGlmdF9sZWZ0X2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3Qgc2hpZnRfbGVmdF90YWcKLSAgICA6IHRhZzwgVCxuYSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBzaGlmdF9sZWZ0Ci0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIHNoaWZ0X2xlZnRfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgc2hpZnRfbGVmdF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHNoaWZ0X2xlZnRfdGFnPE4yPjo6dHlwZQotICAgICAgICAgICAgPgotICAgICAgICAsIE4xCi0gICAgICAgICwgTjIKLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIHNoaWZ0X2xlZnQsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIHNoaWZ0X2xlZnQpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBTaGlmdCwgVCBuLCBTaGlmdCBzID4KLXN0cnVjdCBzaGlmdF9sZWZ0X3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgID0gKG4gPDwgcykpOwotICAgIHR5cGVkZWYgaW50ZWdyYWxfYzwgVCx2YWx1ZSA+IHR5cGU7Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTiwgdHlwZW5hbWUgUyA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGF1eDo6c2hpZnRfbGVmdF93a25kPAotICAgICAgICAgICAgICB0eXBlbmFtZSBOOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFM6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICwgTjo6dmFsdWUKLSAgICAgICAgICAgICwgUzo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUKLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9zaGlmdF9yaWdodC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvc2hpZnRfcmlnaHQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZTQzODAzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9zaGlmdF9yaWdodC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2hpZnRfcmlnaHQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCBzaGlmdF9yaWdodF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggdGFnMV8gPiB0YWcyXyApCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHNoaWZ0X3JpZ2h0X2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBzaGlmdF9yaWdodF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHNoaWZ0X3JpZ2h0X3RhZwotICAgIDogdGFnPCBULG5hID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IHNoaWZ0X3JpZ2h0Ci0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIHNoaWZ0X3JpZ2h0X2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIHNoaWZ0X3JpZ2h0X3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgc2hpZnRfcmlnaHRfdGFnPE4yPjo6dHlwZQotICAgICAgICAgICAgPgotICAgICAgICAsIE4xCi0gICAgICAgICwgTjIKLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIHNoaWZ0X3JpZ2h0LCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBzaGlmdF9yaWdodCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFNoaWZ0LCBUIG4sIFNoaWZ0IHMgPgotc3RydWN0IHNoaWZ0X3JpZ2h0X3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgID0gKG4gPj4gcykpOwotICAgIHR5cGVkZWYgaW50ZWdyYWxfYzwgVCx2YWx1ZSA+IHR5cGU7Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4sIHR5cGVuYW1lIFMgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhdXg6OnNoaWZ0X3JpZ2h0X3drbmQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIE46OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgUzo6dmFsdWVfdHlwZQotICAgICAgICAgICAgLCBOOjp2YWx1ZQotICAgICAgICAgICAgLCBTOjp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZQotCi0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3RlbXBsYXRlX2FyaXR5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC90ZW1wbGF0ZV9hcml0eS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzMWRiYTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3RlbXBsYXRlX2FyaXR5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vdGVtcGxhdGVfYXJpdHkuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgYm9vbCA+Ci1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHlfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBtcGw6OmludF88IC0xID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB0ZW1wbGF0ZV9hcml0eV9pbXBsPHRydWU+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IEY6OmFyaXR5Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+Ci1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHkKLSAgICA6IHRlbXBsYXRlX2FyaXR5X2ltcGw8IDo6bmRuYm9vc3Q6Om1wbDo6YXV4OjpoYXNfcmViaW5kPEY+Ojp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxGPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHRlbXBsYXRlX2FyaXR5PGludD4KLSAgICA6IG1wbDo6aW50XzwgLTEgPgotewotfTsKLQotfX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC90aW1lcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvdGltZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZjJmMjY3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC90aW1lcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdGltZXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCB0aW1lc19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggdGFnMV8gPiB0YWcyXyApCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHRpbWVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCB0aW1lc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHRpbWVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCB0aW1lc19pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgdGltZXNfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHRpbWVzX3RhZwotICAgIDogdGFnPCBULG5hID4KLXsKLX07Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IHRpbWVzMjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgdGltZXMKLQotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBpZl88Ci0KLSAgICAgICAgICBpc19uYTxOMz4KLSAgICAgICAgLCB0aW1lczI8IE4xLE4yID4KLSAgICAgICAgLCB0aW1lczwKLSAgICAgICAgICAgICAgdGltZXMyPCBOMSxOMiA+Ci0gICAgICAgICAgICAsIE4zLCBONCwgTjUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZQotCi0gICAgPgotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEKLSAgICAsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IHRpbWVzMgotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICB0aW1lc19pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSB0aW1lc190YWc8TjE+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHRpbWVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCB0aW1lczIsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIHRpbWVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgVCBuMSwgVCBuMiA+Ci1zdHJ1Y3QgdGltZXNfd2tuZAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChULCB2YWx1ZSAgPSAobjEgKiBuMikpOwotICAgIHR5cGVkZWYgaW50ZWdyYWxfYzwgVCx2YWx1ZSA+IHR5cGU7Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB0aW1lc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGF1eDo6dGltZXNfd2tuZDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgTjE6OnZhbHVlCi0gICAgICAgICAgICAsIE4yOjp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZQotCi0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3VucGFja19hcmdzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC91bnBhY2tfYXJncy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjZGI0NmUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3VucGFja19hcmdzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC91bnBhY2tfYXJncy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHNpemUpID4gc3RydWN0IHVucGFja19hcmdzX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+IHN0cnVjdCBhcHBseTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHVucGFja19hcmdzX2ltcGw8MD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGFwcGx5MDwKLSAgICAgICAgICAgICAgRgotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwxPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXBwbHkxPAotICAgICAgICAgICAgICBGCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPDI+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhcHBseTI8Ci0gICAgICAgICAgICAgIEYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPDM+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhcHBseTM8Ci0gICAgICAgICAgICAgIEYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPDQ+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhcHBseTQ8Ci0gICAgICAgICAgICAgIEYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDMgPjo6dHlwZQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDw1PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXBwbHk1PAotICAgICAgICAgICAgICBGCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDIgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywzID46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncyw0ID46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IHVucGFja19hcmdzCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEFyZ3MgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGF1eDo6dW5wYWNrX2FyZ3NfaW1wbDwgc2l6ZTxBcmdzPjo6dmFsdWUgPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSBhcHBseTwgRixBcmdzID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9QQVNTX1RIUk9VR0hfTEFNQkRBX1NQRUMoMSwgdW5wYWNrX2FyZ3MpCi0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC92ZWN0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3ZlY3Rvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjYjY3MDQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3ZlY3Rvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NTYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBpbnQgTiA+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI7Ci0KLX0KLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8Ci0gICAgICAgICAgICAgCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxPAotICAgICAgICAgICAgICBUMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjwKLSAgICAgICAgICAgICAgVDAsIFQxCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I0PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8Nj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8Nz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I3PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yODwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8OT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8MTA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTA8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8MTE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTE8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwxMj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8MTM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTM8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8MTQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTQ8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwxNT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8MTY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTY8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8MTc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTc8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwxOD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxODwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8MTk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTk8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8MjA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjA8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBpc192ZWN0b3JfYXJnCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IHRydWUpOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX3ZlY3Rvcl9hcmc8bmE+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwCi0gICAgLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNQotICAgICwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2NvdW50X2FyZ3MKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9Ci0gICAgICAgICAgaXNfdmVjdG9yX2FyZzxUMT46OnZhbHVlICsgaXNfdmVjdG9yX2FyZzxUMj46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9hcmc8VDM+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9hcmc8VDQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfYXJnPFQ1Pjo6dmFsdWUgKyBpc192ZWN0b3JfYXJnPFQ2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2FyZzxUNz46OnZhbHVlICsgaXNfdmVjdG9yX2FyZzxUOD46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9hcmc8VDk+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9hcmc8VDEwPjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2FyZzxUMTE+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9hcmc8VDEyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2FyZzxUMTM+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9hcmc8VDE0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2FyZzxUMTU+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9hcmc8VDE2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2FyZzxUMTc+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9hcmc8VDE4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2FyZzxUMTk+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9hcmc8VDIwPjo6dmFsdWUKLSAgICAgICAgKTsKLQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9pbXBsCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl9jb3VudF9hcmdzPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPiBhcmdfbnVtXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2ZWN0b3JfY2hvb3NlcjwgYXJnX251bV86OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yCi0gICAgOiBhdXg6OnZlY3Rvcl9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2ZWN0b3JfaW1wbDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC92ZWN0b3JfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvdmVjdG9yX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjU0YzZmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC92ZWN0b3JfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MzQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yX2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyOwotCi19Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjBfYzwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxX2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjJfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjNfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I0X2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3Nlcjw1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjVfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3Nlcjw2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjZfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8Nz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I3X2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3Nlcjw4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjhfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3Nlcjw5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjlfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8MTA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTBfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDExPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjExX2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDEyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEyX2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8MTM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTNfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMikKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDE0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE0X2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMykKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDE1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE1X2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8MTY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTZfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDE3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE3X2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNikKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDE4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE4X2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8MTk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTlfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDIwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjIwX2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpLCBUKEMxOSkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBsb25nIEMgPgotc3RydWN0IGlzX3ZlY3Rvcl9jX2FyZwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc192ZWN0b3JfY19hcmc8TE9OR19NQVg+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNSwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOAotICAgICwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMiwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgICwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTksIGxvbmcgQzIwCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jX2NvdW50X2FyZ3MKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9Ci0gICAgICAgICAgaXNfdmVjdG9yX2NfYXJnPEMxPjo6dmFsdWUgKyBpc192ZWN0b3JfY19hcmc8QzI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfY19hcmc8QzM+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9jX2FyZzxDND46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9jX2FyZzxDNT46OnZhbHVlICsgaXNfdmVjdG9yX2NfYXJnPEM2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2NfYXJnPEM3Pjo6dmFsdWUgKyBpc192ZWN0b3JfY19hcmc8Qzg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfY19hcmc8Qzk+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9jX2FyZzxDMTA+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfY19hcmc8QzExPjo6dmFsdWUgKyBpc192ZWN0b3JfY19hcmc8QzEyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2NfYXJnPEMxMz46OnZhbHVlICsgaXNfdmVjdG9yX2NfYXJnPEMxND46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9jX2FyZzxDMTU+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9jX2FyZzxDMTY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfY19hcmc8QzE3Pjo6dmFsdWUgKyBpc192ZWN0b3JfY19hcmc8QzE4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2NfYXJnPEMxOT46OnZhbHVlICsgaXNfdmVjdG9yX2NfYXJnPEMyMD46OnZhbHVlCi0gICAgICAgICk7Ci0KLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2NfaW1wbAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfY19jb3VudF9hcmdzPAotICAgICAgICAgIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPiBhcmdfbnVtXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2ZWN0b3JfY19jaG9vc2VyPCBhcmdfbnVtXzo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAgPSBMT05HX01BWCwgbG9uZyBDMSA9IExPTkdfTUFYLCBsb25nIEMyID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzMgPSBMT05HX01BWCwgbG9uZyBDNCA9IExPTkdfTUFYLCBsb25nIEM1ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzYgPSBMT05HX01BWCwgbG9uZyBDNyA9IExPTkdfTUFYLCBsb25nIEM4ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzkgPSBMT05HX01BWCwgbG9uZyBDMTAgPSBMT05HX01BWCwgbG9uZyBDMTEgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTIgPSBMT05HX01BWCwgbG9uZyBDMTMgPSBMT05HX01BWCwgbG9uZyBDMTQgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTUgPSBMT05HX01BWCwgbG9uZyBDMTYgPSBMT05HX01BWCwgbG9uZyBDMTcgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTggPSBMT05HX01BWCwgbG9uZyBDMTkgPSBMT05HX01BWAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYwotICAgIDogYXV4Ojp2ZWN0b3JfY19pbXBsPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPjo6dHlwZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2ZWN0b3JfY19pbXBsPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9hZHZhbmNlX2JhY2t3YXJkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYWR2YW5jZV9iYWNrd2FyZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlMGM4MjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9hZHZhbmNlX2JhY2t3YXJkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vYWR2YW5jZV9iYWNrd2FyZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBsb25nIE4gPiBzdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDsKLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDE+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwyPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDM+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDQ+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2JhY2t3YXJkPDQ+Ci0gICAgICAgICAgICAsIEl0ZXJhdG9yCi0gICAgICAgICAgICA+Ojp0eXBlIGNodW5rX3Jlc3VsdF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9iYWNrd2FyZDwoCi0gICAgICAgICAgICAgICAgKE4gLSA0KSA8IDAKLSAgICAgICAgICAgICAgICAgICAgPyAwCi0gICAgICAgICAgICAgICAgICAgIDogTiAtIDQKLSAgICAgICAgICAgICAgICAgICAgKT4KLSAgICAgICAgICAgICwgY2h1bmtfcmVzdWx0XwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19fX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9hZHZhbmNlX2ZvcndhcmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9hZHZhbmNlX2ZvcndhcmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2E1YWZkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYWR2YW5jZV9mb3J3YXJkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vYWR2YW5jZV9mb3J3YXJkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGxvbmcgTiA+IHN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8MT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwyPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDM+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8ND4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2ZvcndhcmQ8ND4KLSAgICAgICAgICAgICwgSXRlcmF0b3IKLSAgICAgICAgICAgID46OnR5cGUgY2h1bmtfcmVzdWx0XzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2ZvcndhcmQ8KAotICAgICAgICAgICAgICAgIChOIC0gNCkgPCAwCi0gICAgICAgICAgICAgICAgICAgID8gMAotICAgICAgICAgICAgICAgICAgICA6IE4gLSA0Ci0gICAgICAgICAgICAgICAgICAgICk+Ci0gICAgICAgICAgICAsIGNodW5rX3Jlc3VsdF8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWMxYjk1YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2FuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgYm9vbCBDXywgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQgPgotc3RydWN0IGFuZF9pbXBsCi0gICAgOiBmYWxzZV8KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCA+Ci1zdHJ1Y3QgYW5kX2ltcGw8IHRydWUsVDEsVDIsVDMsVDQgPgotICAgIDogYW5kX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgLCBUMiwgVDMsIFQ0Ci0gICAgICAgICwgdHJ1ZV8KLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFuZF9pbXBsPAotICAgICAgICAgIHRydWUKLSAgICAgICAgLCB0cnVlXywgdHJ1ZV8sIHRydWVfLCB0cnVlXwotICAgICAgICA+Ci0gICAgOiB0cnVlXwotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgLCB0eXBlbmFtZSBUMyA9IHRydWVfLCB0eXBlbmFtZSBUNCA9IHRydWVfLCB0eXBlbmFtZSBUNSA9IHRydWVfCi0gICAgPgotc3RydWN0IGFuZF8KLQotICAgIDogYXV4OjphbmRfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4KLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGFuZF8KLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigKLSAgICAgIDIKLSAgICAsIDUKLSAgICAsIGFuZF8KLSAgICApCi0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2FwcGx5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYXBwbHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MGY3MmIwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYXBwbHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTY5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FwcGx5LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkwCi0KLSAgICA6IGFwcGx5X3dyYXAwPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAxCi0gICAgICAgICwgYXBwbHkwCi0gICAgICAgICwgKEYgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsbmEsbmEsbmEsbmEsbmEgPgotICAgIDogYXBwbHkwPEY+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5MQotCi0gICAgOiBhcHBseV93cmFwMTwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMQotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAyCi0gICAgICAgICwgYXBwbHkxCi0gICAgICAgICwgKEYsIFQxKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5PCBGLFQxLG5hLG5hLG5hLG5hID4KLSAgICA6IGFwcGx5MTwgRixUMSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseTIKLQotICAgIDogYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDMKLSAgICAgICAgLCBhcHBseTIKLSAgICAgICAgLCAoRiwgVDEsIFQyKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseTwgRixUMSxUMixuYSxuYSxuYSA+Ci0gICAgOiBhcHBseTI8IEYsVDEsVDIgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5MwotCi0gICAgOiBhcHBseV93cmFwMzwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIsIFQzCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDQKLSAgICAgICAgLCBhcHBseTMKLSAgICAgICAgLCAoRiwgVDEsIFQyLCBUMykKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5PCBGLFQxLFQyLFQzLG5hLG5hID4KLSAgICA6IGFwcGx5MzwgRixUMSxUMixUMyA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5NAotCi0gICAgOiBhcHBseV93cmFwNDwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYXBwbHk0Ci0gICAgICAgICwgKEYsIFQxLCBUMiwgVDMsIFQ0KQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5PCBGLFQxLFQyLFQzLFQ0LG5hID4KLSAgICA6IGFwcGx5NDwgRixUMSxUMixUMyxUNCA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseTUKLQotICAgIDogYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDYKLSAgICAgICAgLCBhcHBseTUKLSAgICAgICAgLCAoRiwgVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseQotICAgIDogYXBwbHk1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYXBwbHlfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYXBwbHlfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmNjYzk0ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2FwcGx5X2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcHBseV9md2QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYQotICAgID4KLXN0cnVjdCBhcHBseTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5MDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseTE7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5MjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5MzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseTQ7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5NTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9hcHBseV93cmFwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYXBwbHlfd3JhcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkMDM5MDcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9hcHBseV93cmFwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcHBseV93cmFwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOLCB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwwPAotICAgICAgICAgIDAKLSAgICAgICAgLCBGCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgCi0vLy8gc2luY2UgdGhlIGRlZmF1bHRzIGFyZSAibG9zdCIsIHdlIGhhdmUgdG8gcGFzcyAqc29tZXRoaW5nKiBldmVuIGZvciBudWxsYXJ5Ci0vLy8gbWV0YWZ1bmN0aW9uIGNsYXNzZXMKLSAgICAgICAgbmEKLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDA8Ci0gICAgICAgICAgMQotICAgICAgICAsIEYKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAKLSAgICAgICAgbmEKLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDA8Ci0gICAgICAgICAgMgotICAgICAgICAsIEYKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAKLSAgICAgICAgbmEsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDA8Ci0gICAgICAgICAgMwotICAgICAgICAsIEYKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAKLSAgICAgICAgbmEsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwwPAotICAgICAgICAgIDQKLSAgICAgICAgLCBGCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgCi0gICAgICAgIG5hLCBuYSwgbmEsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDA8Ci0gICAgICAgICAgNQotICAgICAgICAsIEYKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAKLSAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAwCi0gICAgOiBhcHBseV93cmFwX2ltcGwwPAotICAgICAgICAgIDo6bmRuYm9vc3Q6Om1wbDo6YXV4Ojphcml0eTwgRiwwID46OnZhbHVlCi0gICAgICAgICwgRgotICAgICAgIAotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOLCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwxOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDE8Ci0gICAgICAgICAgMQotICAgICAgICAsIEYKLSAgICAgICAgLCBUMQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDE8Ci0gICAgICAgICAgMgotICAgICAgICAsIEYKLSAgICAgICAgLCBUMQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMQotICAgICAgICAsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwxPAotICAgICAgICAgIDMKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEKLSAgICAgICAgLCBuYSwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDE8Ci0gICAgICAgICAgNAotICAgICAgICAsIEYKLSAgICAgICAgLCBUMQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMQotICAgICAgICAsIG5hLCBuYSwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDE8Ci0gICAgICAgICAgNQotICAgICAgICAsIEYKLSAgICAgICAgLCBUMQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMQotICAgIDogYXBwbHlfd3JhcF9pbXBsMTwKLSAgICAgICAgICA6Om5kbmJvb3N0OjptcGw6OmF1eDo6YXJpdHk8IEYsMSA+Ojp2YWx1ZQotICAgICAgICAsIEYKLSAgICAgICAgLCBUMQotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOLCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMjwKLSAgICAgICAgICAyCi0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMSwgVDIKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwyPAotICAgICAgICAgIDMKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMgotCi0gICAgICAgICwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwyPAotICAgICAgICAgIDQKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMgotCi0gICAgICAgICwgbmEsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMjwKLSAgICAgICAgICA1Ci0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMSwgVDIKLQotICAgICAgICAsIG5hLCBuYSwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMgotICAgIDogYXBwbHlfd3JhcF9pbXBsMjwKLSAgICAgICAgICA6Om5kbmJvb3N0OjptcGw6OmF1eDo6YXJpdHk8IEYsMiA+Ojp2YWx1ZQotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwzOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMzwKLSAgICAgICAgICAzCi0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyLCBUMwotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwzPAotICAgICAgICAgIDQKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyLCBUMwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMSwgVDIsIFQzCi0KLSAgICAgICAgLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwzPAotICAgICAgICAgIDUKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyLCBUMwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMSwgVDIsIFQzCi0KLSAgICAgICAgLCBuYSwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDMKLSAgICA6IGFwcGx5X3dyYXBfaW1wbDM8Ci0gICAgICAgICAgOjpuZG5ib29zdDo6bXBsOjphdXg6OmFyaXR5PCBGLDMgPjo6dmFsdWUKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyLCBUMwotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOLCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGw0OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDQ8Ci0gICAgICAgICAgNAotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMSwgVDIsIFQzLCBUNAotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsNDwKLSAgICAgICAgICA1Ci0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMiwgVDMsIFQ0Ci0KLSAgICAgICAgLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDQKLSAgICA6IGFwcGx5X3dyYXBfaW1wbDQ8Ci0gICAgICAgICAgOjpuZG5ib29zdDo6bXBsOjphdXg6OmFyaXR5PCBGLDQgPjo6dmFsdWUKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDU7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDU8Ci0gICAgICAgICAgNQotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyLCBUMywgVDQsIFQ1Ci0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDUKLSAgICA6IGFwcGx5X3dyYXBfaW1wbDU8Ci0gICAgICAgICAgOjpuZG5ib29zdDo6bXBsOjphdXg6OmFyaXR5PCBGLDUgPjo6dmFsdWUKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYXJnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYXJnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU0NDc2YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2FyZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMS0yMDAyCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXJnLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwgLTEgPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IC0xKTsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTEgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8MT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAxKTsKLSAgICB0eXBlZGVmIGFyZzwyPiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwyPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDIpOwotICAgIHR5cGVkZWYgYXJnPDM+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUyIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDM+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMyk7Ci0gICAgdHlwZWRlZiBhcmc8ND4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTMgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8ND4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSA0KTsKLSAgICB0eXBlZGVmIGFyZzw1PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVNCB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzw1PgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDUpOwotICAgIHR5cGVkZWYgYXJnPDY+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFU1IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OT05UWVBFX0FSSVRZX1NQRUMoMSxpbnQsIGFyZykKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYmFzaWNfYmluZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2Jhc2ljX2JpbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZTBiZjczLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYmFzaWNfYmluZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NDAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vYmFzaWNfYmluZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmcKLXsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPCBhcmc8Tj4sIFUxLCBVMiwgVTMsIFU0LCBVNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTxtcGw6OmFyZzxOPiwgVTEsIFUyLCBVMywgVTQsIFU1Pjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPCBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4sIFUxLCBVMiwgVTMsIFU0LCBVNSA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBiaW5kMAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAwPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDA8Rj4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQwPEY+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMSwgYmluZDApCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMSwgYmluZDApCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBiaW5kPCBGLG5hLG5hLG5hLG5hLG5hID4KLSAgICA6IGJpbmQwPEY+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGJpbmQxCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzCi0gICAgLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQxPCBGLFQxID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQxPCBGLFQxID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygyLCBiaW5kMSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygyLCBiaW5kMSkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLG5hLG5hLG5hLG5hID4KLSAgICA6IGJpbmQxPCBGLFQxID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQyCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIKLSAgICAsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQyPCBGLFQxLFQyID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQyPCBGLFQxLFQyID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygzLCBiaW5kMikKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygzLCBiaW5kMikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxUMixuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMjwgRixUMSxUMiA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDMKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMzwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFUxCi0gICAgLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDM8IEYsVDEsVDIsVDMgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDM8IEYsVDEsVDIsVDMgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDQsIGJpbmQzKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDQsIGJpbmQzKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxUMixUMyxuYSxuYSA+Ci0gICAgOiBiaW5kMzwgRixUMSxUMixUMyA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGJpbmQ0Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQ0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA0PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDQ8IEYsVDEsVDIsVDMsVDQgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDQ8IEYsVDEsVDIsVDMsVDQgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDUsIGJpbmQ0KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDUsIGJpbmQ0KQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsVDIsVDMsVDQsbmEgPgotICAgIDogYmluZDQ8IEYsVDEsVDIsVDMsVDQgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZDUKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQ1LFUxLFUyLFUzLFU0LFU1ID4gdDU7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlLCB0eXBlbmFtZSB0NTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNiwgYmluZDUpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNiwgYmluZDUpCi0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQKLSAgICA6IGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLX07Ci0KLS8vLyBpZl8vZXZhbF9pZiBzcGVjaWFsaXphdGlvbnMKLXRlbXBsYXRlPCB0ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IGNsYXNzIEYsIHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgcXVvdGUzOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IHN0cnVjdCBpZl87Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzPAotICAgICAgcXVvdGUzPCBpZl8sVGFnID4KLSAgICAsIFQxLCBUMiwgVDMKLSAgICA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBtcGw6OmFyZzwxPiBuMTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICAsIHQyLCB0MwotICAgICAgICAgICAgPjo6dHlwZSBmXzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZl86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IGNsYXNzIEYsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBxdW90ZTM7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzID4gc3RydWN0IGV2YWxfaWY7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzPAotICAgICAgcXVvdGUzPCBldmFsX2lmLFRhZyA+Ci0gICAgLCBUMSwgVDIsIFQzCi0gICAgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgbXBsOjphcmc8MT4gbjE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZXZhbF9pZjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgICwgdDIsIHQzCi0gICAgICAgICAgICA+Ojp0eXBlIGZfOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBmXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2JpbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9iaW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDVjZmM2Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2JpbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTYxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZwotewotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBBcmcKLSAgICA+Ci1zdHJ1Y3QgcmVwbGFjZV91bm5hbWVkX2FyZwotewotICAgIHR5cGVkZWYgQXJnIG5leHQ7Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEFyZwotICAgID4KLXN0cnVjdCByZXBsYWNlX3VubmFtZWRfYXJnPCBhcmc8IC0xID4sIEFyZyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBBcmc6Om5leHQgbmV4dDsKLSAgICB0eXBlZGVmIEFyZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8IGFyZzxOPiwgVTEsIFUyLCBVMywgVTQsIFU1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PG1wbDo6YXJnPE4+LCBVMSwgVTIsIFUzLCBVNCwgVTU+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8IGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPiwgVTEsIFUyLCBVMywgVTQsIFU1ID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQwCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAwPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDA8Rj4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQwPEY+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMSwgYmluZDApCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMSwgYmluZDApCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBiaW5kPCBGLG5hLG5hLG5hLG5hLG5hID4KLSAgICA6IGJpbmQwPEY+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGJpbmQxCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzCi0gICAgLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQxPCBGLFQxID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQxPCBGLFQxID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygyLCBiaW5kMSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygyLCBiaW5kMSkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLG5hLG5hLG5hLG5hID4KLSAgICA6IGJpbmQxPCBGLFQxID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQyCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMgotICAgICwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDI8IEYsVDEsVDIgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDI8IEYsVDEsVDIgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDMsIGJpbmQyKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDMsIGJpbmQyKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLFQyLG5hLG5hLG5hID4KLSAgICA6IGJpbmQyPCBGLFQxLFQyID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMwotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMzwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFUxCi0gICAgLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDM8IEYsVDEsVDIsVDMgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDM8IEYsVDEsVDIsVDMgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDQsIGJpbmQzKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDQsIGJpbmQzKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxUMixUMyxuYSxuYSA+Ci0gICAgOiBiaW5kMzwgRixUMSxUMixUMyA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGJpbmQ0Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ0LG40ID4gcjQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6OnR5cGUgYTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6Om5leHQgbjU7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA0PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDQ8IEYsVDEsVDIsVDMsVDQgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDQ8IEYsVDEsVDIsVDMsVDQgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDUsIGJpbmQ0KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDUsIGJpbmQ0KQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsVDIsVDMsVDQsbmEgPgotICAgIDogYmluZDQ8IEYsVDEsVDIsVDMsVDQgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZDUKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDQsbjQgPiByNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6dHlwZSBhNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6bmV4dCBuNTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGE0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDUsbjUgPiByNTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNTo6dHlwZSBhNTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNTo6bmV4dCBuNjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGE1LFUxLFUyLFUzLFU0LFU1ID4gdDU7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUsIHR5cGVuYW1lIHQ1Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZAotICAgIDogYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotLy8vIGlmXy9ldmFsX2lmIHNwZWNpYWxpemF0aW9ucwotdGVtcGxhdGU8IHRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzID4gY2xhc3MgRiwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBxdW90ZTM7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzID4gc3RydWN0IGlmXzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDM8Ci0gICAgICBxdW90ZTM8IGlmXyxUYWcgPgotICAgICwgVDEsIFQyLCBUMwotICAgID4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIG1wbDo6YXJnPDE+IG4xOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgICwgdDIsIHQzCi0gICAgICAgICAgICA+Ojp0eXBlIGZfOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBmXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzID4gY2xhc3MgRiwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IHF1b3RlMzsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBzdHJ1Y3QgZXZhbF9pZjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDM8Ci0gICAgICBxdW90ZTM8IGV2YWxfaWYsVGFnID4KLSAgICAsIFQxLCBUMiwgVDMKLSAgICA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBtcGw6OmFyZzwxPiBuMTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBldmFsX2lmPAotICAgICAgICAgICAgICB0eXBlbmFtZSB0MTo6dHlwZQotICAgICAgICAgICAgLCB0MiwgdDMKLSAgICAgICAgICAgID46OnR5cGUgZl87Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGZfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYmluZF9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9iaW5kX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhMDQ2ZWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9iaW5kX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaW5kX2Z3ZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hCi0gICAgPgotc3RydWN0IGJpbmQ7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBiaW5kMDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kMTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kNDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZDU7Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYml0YW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYml0YW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Q4Y2M1Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2JpdGFuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYml0YW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBiaXRhbmRfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdGFuZF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGJpdGFuZF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXRhbmRfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdGFuZF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGJpdGFuZF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXwotICAgIDogYml0YW5kXzwgYml0YW5kXzwgYml0YW5kXzwgYml0YW5kXzwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdGFuZF8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXzwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBiaXRhbmRfPCBiaXRhbmRfPCBiaXRhbmRfPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0YW5kXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IGJpdGFuZF88IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogYml0YW5kXzwgYml0YW5kXzwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRhbmRfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBiaXRhbmRfPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBiaXRhbmRfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBiaXRhbmRfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGJpdGFuZF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRhbmRfCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgYml0YW5kXykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYml0YW5kX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAmIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYml0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9iaXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5ODI0N2IuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9iaXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYml0b3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBiaXRvcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0b3JfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdG9yX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0b3JfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0b3JfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdG9yX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0b3JfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdG9yXwotICAgIDogYml0b3JfPCBiaXRvcl88IGJpdG9yXzwgYml0b3JfPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGJpdG9yXzwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBiaXRvcl88IGJpdG9yXzwgYml0b3JfPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGJpdG9yXzwgYml0b3JfPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBiaXRvcl9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGJpdG9yX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBiaXRvcl90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXRvcl8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGJpdG9yX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICB8IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYml0eG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYml0eG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWYyNzZiNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2JpdHhvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYml0eG9yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBiaXR4b3JfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdHhvcl9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGJpdHhvcl9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXR4b3JfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdHhvcl9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGJpdHhvcl90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXwotICAgIDogYml0eG9yXzwgYml0eG9yXzwgYml0eG9yXzwgYml0eG9yXzwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdHhvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXzwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBiaXR4b3JfPCBiaXR4b3JfPCBiaXR4b3JfPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0eG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IGJpdHhvcl88IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogYml0eG9yXzwgYml0eG9yXzwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXR4b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBiaXR4b3JfPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBiaXR4b3JfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBiaXR4b3JfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGJpdHhvcl90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXR4b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgYml0eG9yXykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYml0eG9yX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICBeIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvZGVxdWUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9kZXF1ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2MzFmNjYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9kZXF1ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZGVxdWUuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IwPCAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMDwgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMzwgVDAsVDEsVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMzwgVDAsVDEsVDIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNjwgVDAsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxODwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBkZXF1ZQotICAgIDogdmVjdG9yMjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2RpdmlkZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9kaXZpZGVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWJjNDQzMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2RpdmlkZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2RpdmlkZXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBkaXZpZGVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBkaXZpZGVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBkaXZpZGVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZGl2aWRlc19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBkaXZpZGVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBkaXZpZGVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZGl2aWRlc190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlcwotICAgIDogZGl2aWRlczwgZGl2aWRlczwgZGl2aWRlczwgZGl2aWRlczwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGRpdmlkZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlczwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBkaXZpZGVzPCBkaXZpZGVzPCBkaXZpZGVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IGRpdmlkZXM8IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogZGl2aWRlczwgZGl2aWRlczwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBkaXZpZGVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBkaXZpZGVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBkaXZpZGVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZGl2aWRlc190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZGl2aWRlc190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBkaXZpZGVzCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgZGl2aWRlcykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGl2aWRlc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgLyBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2VxdWFsX3RvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvZXF1YWxfdG8uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDU1ODg1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvZXF1YWxfdG8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZXF1YWxfdG8uaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBlcXVhbF90b19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZXF1YWxfdG9faW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGVxdWFsX3RvX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZXF1YWxfdG9faW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZXF1YWxfdG9faW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZXF1YWxfdG9fdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGVxdWFsX3RvCi0KLSAgICA6IGVxdWFsX3RvX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZXF1YWxfdG9fdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGVxdWFsX3RvX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGVxdWFsX3RvLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBlcXVhbF90bykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlcXVhbF90b19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgID09IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDk0Y2Q0MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAwLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgMSxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMSBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDIsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUyIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgMyxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUzIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgNCxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIHN0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlNCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsCi17Ci0gICAgdHlwZWRlZiBmb2xkX2ltcGw8Ci0gICAgICAgICAgNAotICAgICAgICAsIEZpcnN0Ci0gICAgICAgICwgTGFzdAotICAgICAgICAsIFN0YXRlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gY2h1bmtfOwotCi0gICAgdHlwZWRlZiBmb2xkX2ltcGw8Ci0gICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjppdGVyYXRvcgotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBjaHVua186OnN0YXRlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gcmVzXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAtMSxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci0gICAgOiBmb2xkX2ltcGw8Ci0gICAgICAgICAgLTEKLSAgICAgICAgLCB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjxGb3J3YXJkT3AsU3RhdGUsIHR5cGVuYW1lIGRlcmVmPEZpcnN0Pjo6dHlwZT46OnR5cGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgLTEsTGFzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvZnVsbF9sYW1iZGEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9mdWxsX2xhbWJkYS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkYTk3MWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9mdWxsX2xhbWJkYS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9mdWxsX2xhbWJkYS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgYm9vbCBDMSA9IGZhbHNlLCBib29sIEMyID0gZmFsc2UsIGJvb2wgQzMgPSBmYWxzZSwgYm9vbCBDNCA9IGZhbHNlCi0gICAgLCBib29sIEM1ID0gZmFsc2UKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhX29yCi0gICAgOiB0cnVlXwotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxhbWJkYV9vcjwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UgPgotICAgIDogZmFsc2VfCi17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgIAotICAgID4KLXN0cnVjdCBsYW1iZGEKLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIFQgcmVzdWx0XzsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBpc19sYW1iZGFfZXhwcmVzc2lvbgotICAgIDogbGFtYmRhPFQ+Ojppc19sZQotewotfTsKLQotdGVtcGxhdGU8IGludCBOLCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IGxhbWJkYTwgYXJnPE4+LCBUYWcgPgotewotICAgIHR5cGVkZWYgdHJ1ZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBtcGw6OmFyZzxOPiByZXN1bHRfOyAvLyBxdWFsaWZpZWQgZm9yIHRoZSBzYWtlIG9mIE1JUFNwcm8gNy40MQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDA8Rj4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDA8Ci0gICAgICAgICAgRgotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MQotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQxPCB0cnVlXyxUYWcsRixMMSA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMTwKLSAgICAgICAgICBxdW90ZTE8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjxUMT4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0MTwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMQotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDE8IEYsVDEgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMTwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MgotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMgotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQyPCB0cnVlXyxUYWcsRixMMSxMMiA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMjwKLSAgICAgICAgICBxdW90ZTI8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XywgdHlwZW5hbWUgTDI6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlLCBpc19sZTI6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0MjwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMSwgbDIKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kMjwgRixUMSxUMiA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQyPAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMwotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQzCi17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlLCB0eXBlbmFtZSBMMjo6dHlwZSwgdHlwZW5hbWUgTDM6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDM8IHRydWVfLFRhZyxGLEwxLEwyLEwzID4KLXsKLSAgICB0eXBlZGVmIGJpbmQzPAotICAgICAgICAgIHF1b3RlMzwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfLCB0eXBlbmFtZSBMMjo6cmVzdWx0XywgdHlwZW5hbWUgTDM6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMixUMyA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQyLFRhZyA+IGwyOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMyxUYWcgPiBsMzsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZSwgaXNfbGUzOjp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDM8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyLCBsMwotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kMzwgRixUMSxUMixUMyA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQzPAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzLCB0eXBlbmFtZSBMNAotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQ0Ci17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlLCB0eXBlbmFtZSBMMjo6dHlwZSwgdHlwZW5hbWUgTDM6OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBMNDo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzLCB0eXBlbmFtZSBMNAotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQ0PCB0cnVlXyxUYWcsRixMMSxMMixMMyxMNCA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNDwKLSAgICAgICAgICBxdW90ZTQ8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XywgdHlwZW5hbWUgTDI6OnJlc3VsdF8sIHR5cGVuYW1lIEwzOjpyZXN1bHRfCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8IFQxLFQyLFQzLFQ0ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQzLFRhZyA+IGwzOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUNCxUYWcgPiBsNDsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUsIGlzX2xlMzo6dmFsdWUsIGlzX2xlNDo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQ0PAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMiwgbDMsIGw0Ci0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kNDwgRixUMSxUMixUMyxUNCA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQ0PAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBQNSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0LCB0eXBlbmFtZSBMNQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQ1Ci17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlLCB0eXBlbmFtZSBMMjo6dHlwZSwgdHlwZW5hbWUgTDM6OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBMNDo6dHlwZSwgdHlwZW5hbWUgTDU6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBQNSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0LCB0eXBlbmFtZSBMNQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQ1PCB0cnVlXyxUYWcsRixMMSxMMixMMyxMNCxMNSA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNTwKLSAgICAgICAgICBxdW90ZTU8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XywgdHlwZW5hbWUgTDI6OnJlc3VsdF8sIHR5cGVuYW1lIEwzOjpyZXN1bHRfCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnJlc3VsdF8sIHR5cGVuYW1lIEw1OjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNAotICAgICAgICAsIHR5cGVuYW1lIFA1Ci0gICAgICAgID4KLSAgICAgIGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMixUMyxUNCxUNSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQyLFRhZyA+IGwyOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMyxUYWcgPiBsMzsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDQsVGFnID4gbDQ7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQ1LFRhZyA+IGw1OwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGw1Ojppc19sZSBpc19sZTU7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUsIGlzX2xlMzo6dmFsdWUsIGlzX2xlNDo6dmFsdWUKLSAgICAgICAgLCBpc19sZTU6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0NTwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMSwgbDIsIGwzLCBsNCwgbDUKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQ1PAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi0vLy8gc3BlY2lhbCBjYXNlIGZvciAncHJvdGVjdCcKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IGxhbWJkYTwgbXBsOjpwcm90ZWN0PFQ+LCBUYWcgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PFQ+IHJlc3VsdF87Ci0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi0vLy8gc3BlY2lhbGl6YXRpb25zIGZvciB0aGUgbWFpbiAnYmluZCcgZm9ybQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+IHJlc3VsdF87Ci0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi0vLy8gd29ya2Fyb3VuZCBmb3IgTVdDVyA4LjMrL0VERyA8IDMwMywgbGVhZHMgdG8gYW1iaWd1aXR5IG9uIERpZ2l0YWwgTWFycwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZzEsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGxhbWJkYTwgRixUYWcxID4KLSAgICAgICAgLCBUYWcyCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgRixUYWcyID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFRhZzEsVGFnMiA+IGwyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlOwotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQyPGlzX2xlLCBUYWcyLCBtcGw6OmxhbWJkYSwgbDEsIGwyPiBsZV9yZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDIsIGxhbWJkYSkKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9ncmVhdGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvZ3JlYXRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3ZWI0YTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9ncmVhdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2dyZWF0ZXIuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBncmVhdGVyX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBncmVhdGVyX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBncmVhdGVyX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBncmVhdGVyX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBncmVhdGVyX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZ3JlYXRlcl90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcgotCi0gICAgOiBncmVhdGVyX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZ3JlYXRlcl90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZ3JlYXRlcl90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBncmVhdGVyLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBncmVhdGVyKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGdyZWF0ZXJfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlID4gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9ncmVhdGVyX2VxdWFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvZ3JlYXRlcl9lcXVhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1YmQ0MTMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9ncmVhdGVyX2VxdWFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2dyZWF0ZXJfZXF1YWwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBncmVhdGVyX2VxdWFsX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBncmVhdGVyX2VxdWFsX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcl9lcXVhbAotCi0gICAgOiBncmVhdGVyX2VxdWFsX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZ3JlYXRlcl9lcXVhbF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZ3JlYXRlcl9lcXVhbF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBncmVhdGVyX2VxdWFsLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBncmVhdGVyX2VxdWFsKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlID49IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvaW5oZXJpdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2luaGVyaXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOTdmMzEzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvaW5oZXJpdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvaW5oZXJpdC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDIKLSAgICA6IFQxLCBUMgotewotICAgIHR5cGVkZWYgaW5oZXJpdDIgdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGluaGVyaXQyLCAoVDEsIFQyKSkKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSA+Ci1zdHJ1Y3QgaW5oZXJpdDI8IFQxLGVtcHR5X2Jhc2UgPgotewotICAgIHR5cGVkZWYgVDEgdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoMiwgaW5oZXJpdDIsIChUMSwgZW1wdHlfYmFzZSkpCi19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDIgPgotc3RydWN0IGluaGVyaXQyPCBlbXB0eV9iYXNlLFQyID4KLXsKLSAgICB0eXBlZGVmIFQyIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKDIsIGluaGVyaXQyLCAoZW1wdHlfYmFzZSwgVDIpKQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGluaGVyaXQyPCBlbXB0eV9iYXNlLGVtcHR5X2Jhc2UgPgotewotICAgIHR5cGVkZWYgZW1wdHlfYmFzZSB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygyLCBpbmhlcml0MiwgKGVtcHR5X2Jhc2UsIGVtcHR5X2Jhc2UpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDIsIGluaGVyaXQyKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDMKLSAgICA6IGluaGVyaXQyPAotICAgICAgICAgIHR5cGVuYW1lIGluaGVyaXQyPAotICAgICAgICAgICAgICBUMSwgVDIKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgLCBUMwotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAzCi0gICAgICAgICwgaW5oZXJpdDMKLSAgICAgICAgLCAoIFQxLCBUMiwgVDMpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygzLCBpbmhlcml0MykKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hLCB0eXBlbmFtZSBUNCA9IG5hCi0gICAgPgotc3RydWN0IGluaGVyaXQ0Ci0gICAgOiBpbmhlcml0MjwKLSAgICAgICAgICB0eXBlbmFtZSBpbmhlcml0MzwKLSAgICAgICAgICAgICAgVDEsIFQyLCBUMwotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAsIFQ0Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDQKLSAgICAgICAgLCBpbmhlcml0NAotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQyg0LCBpbmhlcml0NCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hLCB0eXBlbmFtZSBUNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNSA9IG5hCi0gICAgPgotc3RydWN0IGluaGVyaXQ1Ci0gICAgOiBpbmhlcml0MjwKLSAgICAgICAgICB0eXBlbmFtZSBpbmhlcml0NDwKLSAgICAgICAgICAgICAgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgLCBUNQotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgaW5oZXJpdDUKLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDUsIGluaGVyaXQ1KQotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDIgPSBlbXB0eV9iYXNlCi0gICAgLCB0eXBlbmFtZSBUMyA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQ0ID0gZW1wdHlfYmFzZQotICAgICwgdHlwZW5hbWUgVDUgPSBlbXB0eV9iYXNlCi0gICAgPgotc3RydWN0IGluaGVyaXQKLSAgICA6IGluaGVyaXQ1PCBUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW5oZXJpdDwgbmEsbmEsbmEsbmEsbmEgPgotewotICAgIHRlbXBsYXRlPAotCi0gICAgICAgICAgdHlwZW5hbWUgVDEgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUMiA9IGVtcHR5X2Jhc2UKLSAgICAgICAgLCB0eXBlbmFtZSBUMyA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQ0ID0gZW1wdHlfYmFzZQotICAgICAgICAsIHR5cGVuYW1lIFQ1ID0gZW1wdHlfYmFzZQotCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBpbmhlcml0PCBUMSxUMixUMyxUNCxUNSA+Ci0gICAgewotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfTEFNQkRBKDUsIGluaGVyaXQpCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfQVJJVFkoNSwgaW5oZXJpdCkKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19URU1QTEFURV9BUklUWSg1LCA1LCBpbmhlcml0KQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2l0ZXJfZm9sZF9pZl9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTc0YmQ4My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2l0ZXJfZm9sZF9pZl9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDEtMjAwMgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBTdGF0ZSA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX251bGxfc3RlcAotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPCBib29sID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlT3AKLSAgICAgICAgLCB0eXBlbmFtZSBJdGVyYXRvck9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFN0YXRlT3AsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBJdGVyYXRvck9wOjp0eXBlIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGVPcAotICAgICAgICAsIHR5cGVuYW1lIEl0ZXJhdG9yT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBQcmVkaWNhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBQcmVkaWNhdGUsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBub3RfbGFzdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQobm90X2xhc3QpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBJdGVyYXRvcixTdGF0ZSxGb3J3YXJkT3AsIG1wbDo6bmV4dDxJdGVyYXRvcj4gPiBpbXBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBQcmVkaWNhdGUsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBub3RfbGFzdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQobm90X2xhc3QpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBJdGVyYXRvcixTdGF0ZSxCYWNrd2FyZE9wLCBpZGVudGl0eTxJdGVyYXRvcj4gPiBpbXBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZFByZWRpY2F0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgQmFja3dhcmRQcmVkaWNhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX2ltcGwKLXsKLSBwcml2YXRlOgotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX251bGxfc3RlcDwgSXRlcmF0b3IsU3RhdGUgPiBmb3J3YXJkX3N0ZXAwOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMDo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDA6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAxOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDE6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAyOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDI6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAzOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMzo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDM6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXA0OwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6bm90X2xhc3QKLSAgICAgICAgLCBpdGVyX2ZvbGRfaWZfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6aXRlcmF0b3IKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6c3RhdGUKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICAsIEZvcndhcmRQcmVkaWNhdGUKLSAgICAgICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAgICAgLCBCYWNrd2FyZFByZWRpY2F0ZQotICAgICAgICAgICAgPgotICAgICAgICAsIGl0ZXJfZm9sZF9pZl9udWxsX3N0ZXA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6Oml0ZXJhdG9yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6OnN0YXRlCi0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUgYmFja3dhcmRfc3RlcDQ7Ci0KLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAzOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDQ6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAzOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDI6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMzo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDI7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAyOjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMTsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAwOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDE6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAwOwotICAgIAotCi0gcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDA6OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDQ6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2l0ZXJfZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvaXRlcl9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzA4YjMwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvaXRlcl9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTgwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vaXRlcl9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgMCxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHN0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgMSxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMSBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgMixGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTEsaXRlcjEgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTIgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDMsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMixpdGVyMiA+Ojp0eXBlIHN0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMyBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgNCxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTEsaXRlcjEgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUyLGl0ZXIyID46OnR5cGUgc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMyxpdGVyMyA+Ojp0eXBlIHN0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlNCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGwKLXsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgIDQKLSAgICAgICAgLCBGaXJzdAotICAgICAgICAsIExhc3QKLSAgICAgICAgLCBTdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IGNodW5rXzsKLQotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjppdGVyYXRvcgotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBjaHVua186OnN0YXRlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gcmVzXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IC0xLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLSAgICA6IGl0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgIC0xCi0gICAgICAgICwgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxTdGF0ZSxGaXJzdCA+Ojp0eXBlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgLTEsTGFzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvbGFtYmRhX25vX2N0cHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9sYW1iZGFfbm9fY3Rwcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1ZjVmNmIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9sYW1iZGFfbm9fY3Rwcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMjkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfbm9fY3Rwcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgYm9vbCBDMSA9IGZhbHNlLCBib29sIEMyID0gZmFsc2UsIGJvb2wgQzMgPSBmYWxzZSwgYm9vbCBDNCA9IGZhbHNlCi0gICAgLCBib29sIEM1ID0gZmFsc2UKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhX29yCi0gICAgOiB0cnVlXwotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxhbWJkYV9vcjwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UgPgotICAgIDogZmFsc2VfCi17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgQXJpdHkgPiBzdHJ1Y3QgbGFtYmRhX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICB0eXBlZGVmIGlzX3BsYWNlaG9sZGVyPFQ+IGlzX2xlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50XzwxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMywgVGFnLCBmYWxzZV8gPiBsMzsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUzKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc0LCBUYWcsIGZhbHNlXyA+IGw0OwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTQpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQ0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlLCB0eXBlbmFtZSBsMzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBsNDo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMywgVGFnLCBmYWxzZV8gPiBsMzsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzQsIFRhZywgZmFsc2VfID4gbDQ7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc1LCBUYWcsIGZhbHNlXyA+IGw1OwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGw1Ojppc19sZSBpc19sZTU7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUzKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlNCk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTUpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQ1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlLCB0eXBlbmFtZSBsMzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBsNDo6dHlwZSwgdHlwZW5hbWUgbDU6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgICwgdHlwZW5hbWUgUHJvdGVjdAotICAgID4KLXN0cnVjdCBsYW1iZGEKLXsKLSAgICAvLy8gTWV0YWZ1bmN0aW9uIGZvcndhcmRpbmcgY29uZnVzZXMgTVNWQyA2LngKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dGVtcGxhdGVfYXJpdHk8VD46OnR5cGUgYXJpdHlfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfaW1wbDxhcml0eV8+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVCxUYWcsUHJvdGVjdCA+IGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsXzo6dHlwZSB0eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbF86OmlzX2xlIGlzX2xlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMywgbGFtYmRhLCAoVCwgVGFnLCBQcm90ZWN0KSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMSwgMywgbGFtYmRhKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgaXNfbGFtYmRhX2V4cHJlc3Npb24KLSAgICA6IGxhbWJkYTxUPjo6aXNfbGUKLXsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvbGVzcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2xlc3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNGI4ZWViLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvbGVzcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9sZXNzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbGVzc19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbGVzc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbGVzc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbGVzc19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbGVzc19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGxlc3NfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGxlc3MKLQotICAgIDogbGVzc19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGxlc3NfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGxlc3NfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbGVzcywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbGVzcykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsZXNzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSA+IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvbGVzc19lcXVhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2xlc3NfZXF1YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Y2QxNDFiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvbGVzc19lcXVhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9sZXNzX2VxdWFsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbGVzc19lcXVhbF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbGVzc19lcXVhbF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbGVzc19lcXVhbF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGxlc3NfZXF1YWxfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGxlc3NfZXF1YWwKLQotICAgIDogbGVzc19lcXVhbF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGxlc3NfZXF1YWxfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGxlc3NfZXF1YWxfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbGVzc19lcXVhbCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbGVzc19lcXVhbCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA8PSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2xpc3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9saXN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGNjOGM0Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2xpc3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xpc3QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgbGlzdDsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDA8ICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MDwgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE8VDA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDI8IFQwLFQxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyPCBUMCxUMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MzwgVDAsVDEsVDIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q0PCBUMCxUMSxUMixUMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDU8IFQwLFQxLFQyLFQzLFQ0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q1PCBUMCxUMSxUMixUMyxUNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NjwgVDAsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0OTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTc8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgbGlzdAotICAgIDogbGlzdDIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvbGlzdF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvbGlzdF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQzZjM4Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2xpc3RfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGlzdF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAgPSBMT05HX01BWCwgbG9uZyBDMSA9IExPTkdfTUFYLCBsb25nIEMyID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzMgPSBMT05HX01BWCwgbG9uZyBDNCA9IExPTkdfTUFYLCBsb25nIEM1ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzYgPSBMT05HX01BWCwgbG9uZyBDNyA9IExPTkdfTUFYLCBsb25nIEM4ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzkgPSBMT05HX01BWCwgbG9uZyBDMTAgPSBMT05HX01BWCwgbG9uZyBDMTEgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTIgPSBMT05HX01BWCwgbG9uZyBDMTMgPSBMT05HX01BWCwgbG9uZyBDMTQgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTUgPSBMT05HX01BWCwgbG9uZyBDMTYgPSBMT05HX01BWCwgbG9uZyBDMTcgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTggPSBMT05HX01BWCwgbG9uZyBDMTkgPSBMT05HX01BWAotICAgID4KLXN0cnVjdCBsaXN0X2M7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDBfYzxUPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDBfYzxUPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MV9jPCBULEMwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxX2M8IFQsQzAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0Ml9jPCBULEMwLEMxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyX2M8IFQsQzAsQzEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0M19jPCBULEMwLEMxLEMyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QzX2M8IFQsQzAsQzEsQzIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0NF9jPCBULEMwLEMxLEMyLEMzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q0X2M8IFQsQzAsQzEsQzIsQzMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0NV9jPCBULEMwLEMxLEMyLEMzLEM0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q1X2M8IFQsQzAsQzEsQzIsQzMsQzQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0Nl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0N19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0OF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0OV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTFfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDExX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDEyX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTJfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTNfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTNfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxNV9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTVfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTZfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNgotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE3X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE4X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MThfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTlfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgID4KLXN0cnVjdCBsaXN0X2MKLSAgICA6IGxpc3QyMF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L21hcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L21hcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5NzRmMjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9tYXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL21hcC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBtYXA7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMDwgID4KLXsKLSAgICB0eXBlZGVmIG1hcDA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwNDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwNTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IG1hcAotICAgIDogbWFwMjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L21pbnVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvbWludXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NTRmZGE4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvbWludXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL21pbnVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbWludXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IG1pbnVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBtaW51c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IG1pbnVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG1pbnVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBtaW51c19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG1pbnVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBtaW51cwotICAgIDogbWludXM8IG1pbnVzPCBtaW51czwgbWludXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBtaW51cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBtaW51czwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBtaW51czwgbWludXM8IG1pbnVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBtaW51czwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBtaW51czwgbWludXM8IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IG1pbnVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBtaW51c19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIG1pbnVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBtaW51c190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBtaW51cwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIG1pbnVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBtaW51c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgLSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L21vZHVsdXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9tb2R1bHVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2U4OTY5MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L21vZHVsdXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL21vZHVsdXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBtb2R1bHVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBtb2R1bHVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBtb2R1bHVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbW9kdWx1c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBtb2R1bHVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBtb2R1bHVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbW9kdWx1c190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbW9kdWx1cwotCi0gICAgOiBtb2R1bHVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbW9kdWx1c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbW9kdWx1c190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBtb2R1bHVzLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBtb2R1bHVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBtb2R1bHVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAlIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvbm90X2VxdWFsX3RvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvbm90X2VxdWFsX3RvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRlMWUxNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L25vdF9lcXVhbF90by5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9ub3RfZXF1YWxfdG8uaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBub3RfZXF1YWxfdG9faW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IG5vdF9lcXVhbF90b19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbm90X2VxdWFsX3RvX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBub3RfZXF1YWxfdG8KLQotICAgIDogbm90X2VxdWFsX3RvX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbm90X2VxdWFsX3RvX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBub3RfZXF1YWxfdG9fdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbm90X2VxdWFsX3RvLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBub3RfZXF1YWxfdG8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSAhPSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L29yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvb3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYWU4ZWRmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvb3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvb3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgYm9vbCBDXywgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQgPgotc3RydWN0IG9yX2ltcGwKLSAgICA6IHRydWVfCi17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQgPgotc3RydWN0IG9yX2ltcGw8IGZhbHNlLFQxLFQyLFQzLFQ0ID4KLSAgICA6IG9yX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgLCBUMiwgVDMsIFQ0Ci0gICAgICAgICwgZmFsc2VfCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBvcl9pbXBsPAotICAgICAgICAgIGZhbHNlCi0gICAgICAgICwgZmFsc2VfLCBmYWxzZV8sIGZhbHNlXywgZmFsc2VfCi0gICAgICAgID4KLSAgICA6IGZhbHNlXwotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgLCB0eXBlbmFtZSBUMyA9IGZhbHNlXywgdHlwZW5hbWUgVDQgPSBmYWxzZV8sIHR5cGVuYW1lIFQ1ID0gZmFsc2VfCi0gICAgPgotc3RydWN0IG9yXwotCi0gICAgOiBhdXg6Om9yX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ci0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBvcl8KLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigKLSAgICAgIDIKLSAgICAsIDUKLSAgICAsIG9yXwotICAgICkKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvcGxhY2Vob2xkZXJzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvcGxhY2Vob2xkZXJzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2EyOGMwOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3BsYWNlaG9sZGVycy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxLTIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvcGxhY2Vob2xkZXJzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPCAtMSA+IF87Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXykKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzsKLX0KLQotfX0KLQotLy8vIGFndXJ0LCAxNy9tYXIvMDI6IG9uZSBtb3JlIHBsYWNlaG9sZGVyIGZvciB0aGUgbGFzdCAnYXBwbHkjJyAKLS8vLyBzcGVjaWFsaXphdGlvbgotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8MT4gXzE7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfMSkKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzE7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwyPiBfMjsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8yKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfMjsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDM+IF8zOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzMpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol8zOwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8ND4gXzQ7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfNCkKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzQ7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzw1PiBfNTsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF81KQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfNTsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDY+IF82OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzYpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol82OwotfQotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9wbHVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvcGx1cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkOGIyY2QuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9wbHVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9wbHVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgcGx1c19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgcGx1c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgcGx1c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHBsdXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgcGx1c19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgcGx1c19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHBsdXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IHBsdXMKLSAgICA6IHBsdXM8IHBsdXM8IHBsdXM8IHBsdXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IHBsdXM8IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogcGx1czwgcGx1czwgcGx1czwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHBsdXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBwbHVzPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IHBsdXM8IHBsdXM8IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgcGx1cwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgcGx1czwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogcGx1c19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHBsdXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIHBsdXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgcGx1cwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIHBsdXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IHBsdXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICsgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9xdW90ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3F1b3RlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGNlNzllZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3F1b3RlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9xdW90ZS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIGJvb2wgaGFzX3R5cGVfID4KLXN0cnVjdCBxdW90ZV9pbXBsCi0gICAgOiBUCi17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgcXVvdGVfaW1wbDwgVCxmYWxzZSA+Ci17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlMQotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwKLSAgICAgICAgICAgICAgRjxVMT4KLSAgICAgICAgICAgICwgYXV4OjpoYXNfdHlwZTwgRjxVMT4gPjo6dmFsdWUKLSAgICAgICAgICAgID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGUyCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwKLSAgICAgICAgICAgICAgRjwgVTEsVTIgPgotICAgICAgICAgICAgLCBhdXg6Omhhc190eXBlPCBGPCBVMSxVMiA+ID46OnZhbHVlCi0gICAgICAgICAgICA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgID4KLXN0cnVjdCBxdW90ZTMKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMyA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwKLSAgICAgICAgICAgICAgRjwgVTEsVTIsVTMgPgotICAgICAgICAgICAgLCBhdXg6Omhhc190eXBlPCBGPCBVMSxVMixVMyA+ID46OnZhbHVlCi0gICAgICAgICAgICA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGU0Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwKLSAgICAgICAgICAgICAgRjwgVTEsVTIsVTMsVTQgPgotICAgICAgICAgICAgLCBhdXg6Omhhc190eXBlPCBGPCBVMSxVMixVMyxVNCA+ID46OnZhbHVlCi0gICAgICAgICAgICA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQKLSAgICAgICAgLCB0eXBlbmFtZSBQNQotICAgICAgICA+Ci0gICAgICBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgID4KLXN0cnVjdCBxdW90ZTUKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICAgICAsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IHF1b3RlX2ltcGw8Ci0gICAgICAgICAgICAgIEY8IFUxLFUyLFUzLFU0LFU1ID4KLSAgICAgICAgICAgICwgYXV4OjpoYXNfdHlwZTwgRjwgVTEsVTIsVTMsVTQsVTUgPiA+Ojp2YWx1ZQotICAgICAgICAgICAgPgotCi0gICAgewotICAgIH07Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3JldmVyc2VfZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvcmV2ZXJzZV9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDNhZDc1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvcmV2ZXJzZV9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjMxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vcmV2ZXJzZV9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw8IDAsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiBmd2Rfc3RhdGUwIGJrd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw8IDEsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTEgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsPCAyLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIAotCi0gICAgdHlwZWRlZiBmd2Rfc3RhdGUyIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw8IDMsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTMgYmt3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsPCA0LEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgIAotCi0gICAgdHlwZWRlZiBmd2Rfc3RhdGU0IGJrd2Rfc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlNCwgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGwKLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAKLQotICAgIHR5cGVkZWYgcmV2ZXJzZV9mb2xkX2ltcGw8Ci0gICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICwgaXRlcjQKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgZndkX3N0YXRlNAotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfY2h1bms7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6c3RhdGUgYmt3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGU0LCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDwgLTEsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiByZXZlcnNlX2ZvbGRfaW1wbDwKLSAgICAgICAgICAtMQotICAgICAgICAsIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPEZvcndhcmRPcCxTdGF0ZSwgdHlwZW5hbWUgZGVyZWY8Rmlyc3Q+Ojp0eXBlPjo6dHlwZQotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfc3RlcDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPAotICAgICAgICAgIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6c3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBkZXJlZjxGaXJzdD46OnR5cGUKLSAgICAgICAgPjo6dHlwZSBzdGF0ZTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsPCAtMSxMYXN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzNiZjUwOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjMxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IDAsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiBmd2Rfc3RhdGUwIGJrd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgMSxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlMSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgMixGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlMiBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IDMsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTMgYmt3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTMsaXRlcjIgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IDQsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUzLGl0ZXIzID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTQgYmt3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTQsaXRlcjMgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMyxpdGVyMiA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsCi17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUzLGl0ZXIzID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICwgaXRlcjQKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgZndkX3N0YXRlNAotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfY2h1bms7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6c3RhdGUgYmt3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTQsaXRlcjMgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMyxpdGVyMiA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPCAtMSxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgLTEKLSAgICAgICAgLCB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLFN0YXRlLEZpcnN0ID46OnR5cGUKLSAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gbmVzdGVkX3N0ZXA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwKLSAgICAgICAgICBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6OnN0YXRlCi0gICAgICAgICwgRmlyc3QKLSAgICAgICAgPjo6dHlwZSBzdGF0ZTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IC0xLExhc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvc2V0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvc2V0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGM0Y2ExMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3NldC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2V0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IHNldDsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQwPCAgPgotewotICAgIHR5cGVkZWYgc2V0MDwgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTxUMD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE8VDA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQyPCBUMCxUMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyPCBUMCxUMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MzwgVDAsVDEsVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MzwgVDAsVDEsVDIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ0PCBUMCxUMSxUMixUMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ0PCBUMCxUMSxUMixUMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ1PCBUMCxUMSxUMixUMyxUNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ1PCBUMCxUMSxUMixUMyxUNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NjwgVDAsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0OTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0OTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTY8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE3PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxODwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTk8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3Qgc2V0Ci0gICAgOiBzZXQyMDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvc2V0X2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9zZXRfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlZjJmZGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9zZXRfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2V0X2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCA9IExPTkdfTUFYLCBsb25nIEMxID0gTE9OR19NQVgsIGxvbmcgQzIgPSBMT05HX01BWAotICAgICwgbG9uZyBDMyA9IExPTkdfTUFYLCBsb25nIEM0ID0gTE9OR19NQVgsIGxvbmcgQzUgPSBMT05HX01BWAotICAgICwgbG9uZyBDNiA9IExPTkdfTUFYLCBsb25nIEM3ID0gTE9OR19NQVgsIGxvbmcgQzggPSBMT05HX01BWAotICAgICwgbG9uZyBDOSA9IExPTkdfTUFYLCBsb25nIEMxMCA9IExPTkdfTUFYLCBsb25nIEMxMSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxMiA9IExPTkdfTUFYLCBsb25nIEMxMyA9IExPTkdfTUFYLCBsb25nIEMxNCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxNSA9IExPTkdfTUFYLCBsb25nIEMxNiA9IExPTkdfTUFYLCBsb25nIEMxNyA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxOCA9IExPTkdfTUFYLCBsb25nIEMxOSA9IExPTkdfTUFYCi0gICAgPgotc3RydWN0IHNldF9jOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MF9jPFQ+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQwX2M8VD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxX2M8IFQsQzAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MV9jPCBULEMwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMQotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQyX2M8IFQsQzAsQzEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0Ml9jPCBULEMwLEMxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMgotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQzX2M8IFQsQzAsQzEsQzIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0M19jPCBULEMwLEMxLEMyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMwotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQ0X2M8IFQsQzAsQzEsQzIsQzMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NF9jPCBULEMwLEMxLEMyLEMzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQ1X2M8IFQsQzAsQzEsQzIsQzMsQzQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NV9jPCBULEMwLEMxLEMyLEMzLEM0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQ2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0Nl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNgotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQ3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0N19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNwotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQ4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0OF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQ5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0OV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOQotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxMV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMQotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTJfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEyX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxM19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMwotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxNF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTRfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE1X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE1X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxNl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTdfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxN19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNwotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MThfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxOV9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2MKLSAgICA6IHNldDIwX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9zaGlmdF9sZWZ0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvc2hpZnRfbGVmdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5NjRmYjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9zaGlmdF9sZWZ0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NoaWZ0X2xlZnQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBzaGlmdF9sZWZ0X2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBzaGlmdF9sZWZ0X2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBzaGlmdF9sZWZ0X2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3Qgc2hpZnRfbGVmdF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdAotCi0gICAgOiBzaGlmdF9sZWZ0X2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgc2hpZnRfbGVmdF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgc2hpZnRfbGVmdF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBzaGlmdF9sZWZ0LCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBzaGlmdF9sZWZ0KQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTiwgdHlwZW5hbWUgUyA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgTjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIDw8IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChTKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9zaGlmdF9yaWdodC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3NoaWZ0X3JpZ2h0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTdhNWZlMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3NoaWZ0X3JpZ2h0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NoaWZ0X3JpZ2h0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHNoaWZ0X3JpZ2h0X2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBzaGlmdF9yaWdodF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHNoaWZ0X3JpZ2h0X3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBzaGlmdF9yaWdodAotCi0gICAgOiBzaGlmdF9yaWdodF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHNoaWZ0X3JpZ2h0X3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBzaGlmdF9yaWdodF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBzaGlmdF9yaWdodCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgc2hpZnRfcmlnaHQpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTiwgdHlwZW5hbWUgUyA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgTjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgID4+IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChTKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy90ZW1wbGF0ZV9hcml0eS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3RlbXBsYXRlX2FyaXR5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmNiNDJhZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3RlbXBsYXRlX2FyaXR5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vdGVtcGxhdGVfYXJpdHkuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy90aW1lcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3RpbWVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWE1NWZlZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3RpbWVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC90aW1lcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHRpbWVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCB0aW1lc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgdGltZXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCB0aW1lc19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCB0aW1lc19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgdGltZXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCB0aW1lc190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgdGltZXMKLSAgICA6IHRpbWVzPCB0aW1lczwgdGltZXM8IHRpbWVzPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgdGltZXM8IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogdGltZXM8IHRpbWVzPCB0aW1lczwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHRpbWVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgdGltZXM8IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogdGltZXM8IHRpbWVzPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHRpbWVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCB0aW1lczwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogdGltZXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSB0aW1lc190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgdGltZXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCB0aW1lcykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdGltZXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICogTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy91bnBhY2tfYXJncy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3VucGFja19hcmdzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWVjMzFhZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3VucGFja19hcmdzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3VucGFja19hcmdzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGludCBzaXplLCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgMCxGLEFyZ3MgPgotICAgIDogYXBwbHkwPAotICAgICAgICAgIEYKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDEsRixBcmdzID4KLSAgICA6IGFwcGx5MTwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDIsRixBcmdzID4KLSAgICA6IGFwcGx5MjwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCAzLEYsQXJncyA+Ci0gICAgOiBhcHBseTM8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCA0LEYsQXJncyA+Ci0gICAgOiBhcHBseTQ8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDMgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgNSxGLEFyZ3MgPgotICAgIDogYXBwbHk1PAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDIgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywzID46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDQgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi19Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCB1bnBhY2tfYXJncwotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBhdXg6OnVucGFja19hcmdzX2ltcGw8IHNpemU8QXJncz46OnZhbHVlLEYsIEFyZ3MgPgotCi0gICAgewotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX1BBU1NfVEhST1VHSF9MQU1CREFfU1BFQygxLCB1bnBhY2tfYXJncykKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy92ZWN0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy92ZWN0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjY3NTg5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvdmVjdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yOwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjA8ICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjI8IFQwLFQxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjI8IFQwLFQxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjU8IFQwLFQxLFQyLFQzLFQ0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjU8IFQwLFQxLFQyLFQzLFQ0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTc8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCB2ZWN0b3IKLSAgICA6IHZlY3RvcjIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy92ZWN0b3JfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3ZlY3Rvcl9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTJmYmRiNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3ZlY3Rvcl9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwOSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3JfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IwX2M8VD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjBfYzxUPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjFfYzwgVCwgVChDMCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMV9jPCBULCBUKEMwKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMl9jPCBULCBUKEMwKSwgVChDMSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMl9jPCBULCBUKEMwKSwgVChDMSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjNfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMikgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjZfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNikgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNykgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjlfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTFfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTJfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTVfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMThfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2MKLSAgICA6IHZlY3RvcjIwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpLCBUKEMxOSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjBfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCksIFQoQzE5KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2FkdmFuY2VfYmFja3dhcmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9hZHZhbmNlX2JhY2t3YXJkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGUwYzgyOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2FkdmFuY2VfYmFja3dhcmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9hZHZhbmNlX2JhY2t3YXJkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGxvbmcgTiA+IHN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkOwotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8MD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8MT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDI+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8ND4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICB0eXBlZGVmIGl0ZXI0IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfYmFja3dhcmQ8ND4KLSAgICAgICAgICAgICwgSXRlcmF0b3IKLSAgICAgICAgICAgID46OnR5cGUgY2h1bmtfcmVzdWx0XzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2JhY2t3YXJkPCgKLSAgICAgICAgICAgICAgICAoTiAtIDQpIDwgMAotICAgICAgICAgICAgICAgICAgICA/IDAKLSAgICAgICAgICAgICAgICAgICAgOiBOIC0gNAotICAgICAgICAgICAgICAgICAgICApPgotICAgICAgICAgICAgLCBjaHVua19yZXN1bHRfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2FkdmFuY2VfZm9yd2FyZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2FkdmFuY2VfZm9yd2FyZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzYTVhZmQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9hZHZhbmNlX2ZvcndhcmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9hZHZhbmNlX2ZvcndhcmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgbG9uZyBOID4gc3RydWN0IGFkdmFuY2VfZm9yd2FyZDsKLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8MD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwxPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDI+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDw0PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfZm9yd2FyZDw0PgotICAgICAgICAgICAgLCBJdGVyYXRvcgotICAgICAgICAgICAgPjo6dHlwZSBjaHVua19yZXN1bHRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfZm9yd2FyZDwoCi0gICAgICAgICAgICAgICAgKE4gLSA0KSA8IDAKLSAgICAgICAgICAgICAgICAgICAgPyAwCi0gICAgICAgICAgICAgICAgICAgIDogTiAtIDQKLSAgICAgICAgICAgICAgICAgICAgKT4KLSAgICAgICAgICAgICwgY2h1bmtfcmVzdWx0XwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19fX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9hbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9hbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNjliOTQwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FuZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgYm9vbCBDXyA+IHN0cnVjdCBhbmRfaW1wbAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYW5kX2ltcGw8dHJ1ZT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBhbmRfaW1wbDwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IFQyLFQzLFQ0LHRydWVfID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhbmRfaW1wbDx0cnVlPgotICAgIDo6cmVzdWx0XzwgdHJ1ZV8sdHJ1ZV8sdHJ1ZV8sdHJ1ZV8gPgotICAgICAgICA6IHRydWVfCi17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICAsIHR5cGVuYW1lIFQzID0gdHJ1ZV8sIHR5cGVuYW1lIFQ0ID0gdHJ1ZV8sIHR5cGVuYW1lIFQ1ID0gdHJ1ZV8KLSAgICA+Ci1zdHJ1Y3QgYW5kXwotCi0gICAgOiBhdXg6OmFuZF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IFQyLFQzLFQ0LFQ1ID4KLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGFuZF8KLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigKLSAgICAgIDIKLSAgICAsIDUKLSAgICAsIGFuZF8KLSAgICApCi0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2FwcGx5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYXBwbHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYjYwZTBiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYXBwbHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjY4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FwcGx5LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkwCi0KLSAgICA6IGFwcGx5X3dyYXAwPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAxCi0gICAgICAgICwgYXBwbHkwCi0gICAgICAgICwgKEYgKQotICAgICAgICApCi19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5X2Nob29zZXI8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseTA8Ci0gICAgICAgICAgICAgIEYKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkxCi0KLSAgICA6IGFwcGx5X3dyYXAxPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDIKLSAgICAgICAgLCBhcHBseTEKLSAgICAgICAgLCAoRiwgVDEpCi0gICAgICAgICkKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXBwbHlfY2hvb3NlcjwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5MTwKLSAgICAgICAgICAgICAgRiwgVDEKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5MgotCi0gICAgOiBhcHBseV93cmFwMjwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMwotICAgICAgICAsIGFwcGx5MgotICAgICAgICAsIChGLCBUMSwgVDIpCi0gICAgICAgICkKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXBwbHlfY2hvb3NlcjwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5MjwKLSAgICAgICAgICAgICAgRiwgVDEsIFQyCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkzCi0KLSAgICA6IGFwcGx5X3dyYXAzPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNAotICAgICAgICAsIGFwcGx5MwotICAgICAgICAsIChGLCBUMSwgVDIsIFQzKQotICAgICAgICApCi19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5X2Nob29zZXI8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseTM8Ci0gICAgICAgICAgICAgIEYsIFQxLCBUMiwgVDMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk0Ci0KLSAgICA6IGFwcGx5X3dyYXA0PAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBhcHBseTQKLSAgICAgICAgLCAoRiwgVDEsIFQyLCBUMywgVDQpCi0gICAgICAgICkKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXBwbHlfY2hvb3Nlcjw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5NDwKLSAgICAgICAgICAgICAgRiwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5NQotCi0gICAgOiBhcHBseV93cmFwNTwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNgotICAgICAgICAsIGFwcGx5NQotICAgICAgICAsIChGLCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXBwbHlfY2hvb3Nlcjw1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5NTwKLSAgICAgICAgICAgICAgRiwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGlzX2FwcGx5X2FyZwotewotICAgIHN0YXRpYyBib29sIGNvbnN0IHZhbHVlICA9IHRydWU7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfYXBwbHlfYXJnPG5hPgotewotICAgIHN0YXRpYyBib29sIGNvbnN0IHZhbHVlICA9IGZhbHNlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfY291bnRfYXJncwotewotICAgIHN0YXRpYyBpbnQgY29uc3QgdmFsdWUgID0gaXNfYXBwbHlfYXJnPFQxPjo6dmFsdWUgKyBpc19hcHBseV9hcmc8VDI+Ojp2YWx1ZSArIGlzX2FwcGx5X2FyZzxUMz46OnZhbHVlICsgaXNfYXBwbHlfYXJnPFQ0Pjo6dmFsdWUgKyBpc19hcHBseV9hcmc8VDU+Ojp2YWx1ZTsKLQotfTsKLQotfQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkKLSAgICA6IGF1eDo6YXBwbHlfY2hvb3NlcjwKLSAgICAgICAgICBhdXg6OmFwcGx5X2NvdW50X2FyZ3M8IFQxLFQyLFQzLFQ0LFQ1ID46OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IEYsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZQotewotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9hcHBseV9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9hcHBseV9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZjUyODhjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYXBwbHlfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FwcGx5X2Z3ZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgTkROQk9PU1RfQVVYX05UVFBfREVDTChpbnQsIGFyaXR5XykgPiBzdHJ1Y3QgYXBwbHlfY2hvb3NlcjsKLX0KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5MDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseTE7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5MjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5MzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseTQ7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5NTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9hcHBseV93cmFwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYXBwbHlfd3JhcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1Y2JkNTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9hcHBseV93cmFwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FwcGx5X3dyYXAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotCi0gICAgLCB0eXBlbmFtZSBoYXNfYXBwbHlfID0gdHlwZW5hbWUgYXV4OjpoYXNfYXBwbHk8Rj46OnR5cGUKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMAotCi0gICAgOiBGOjp0ZW1wbGF0ZSBhcHBseTwgID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMQotCi0gICAgOiBGOjp0ZW1wbGF0ZSBhcHBseTxUMT4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDIKLQotICAgIDogRjo6dGVtcGxhdGUgYXBwbHk8IFQxLFQyID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAzCi0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PCBUMSxUMixUMyA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDQKLQotICAgIDogRjo6dGVtcGxhdGUgYXBwbHk8IFQxLFQyLFQzLFQ0ID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDUKLQotICAgIDogRjo6dGVtcGxhdGUgYXBwbHk8IFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYXJnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYXJnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU0NDc2YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2FyZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMS0yMDAyCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXJnLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwgLTEgPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IC0xKTsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTEgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8MT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAxKTsKLSAgICB0eXBlZGVmIGFyZzwyPiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwyPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDIpOwotICAgIHR5cGVkZWYgYXJnPDM+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUyIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDM+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMyk7Ci0gICAgdHlwZWRlZiBhcmc8ND4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTMgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8ND4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSA0KTsKLSAgICB0eXBlZGVmIGFyZzw1PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVNCB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzw1PgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDUpOwotICAgIHR5cGVkZWYgYXJnPDY+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFU1IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OT05UWVBFX0FSSVRZX1NQRUMoMSxpbnQsIGFyZykKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYmFzaWNfYmluZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2Jhc2ljX2JpbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYzk2MmU3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYmFzaWNfYmluZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0ODYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vYmFzaWNfYmluZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgYm9vbCA+Ci1zdHJ1Y3QgcmVzb2x2ZV9hcmdfaW1wbAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMKLSAgICAgICAgLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJlc29sdmVfYXJnX2ltcGw8dHJ1ZT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzCi0gICAgICAgICwgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgLCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgaXNfYmluZF90ZW1wbGF0ZTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZwotICAgIDogcmVzb2x2ZV9hcmdfaW1wbDwgaXNfYmluZF90ZW1wbGF0ZTxUPjo6dmFsdWUgPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBULFUxLFUyLFUzLFU0LFU1ID4KLXsKLX07Ci0KLXRlbXBsYXRlPCBpbnQgYXJpdHlfID4gc3RydWN0IGJpbmRfY2hvb3NlcjsKLQotYXV4Ojpub190YWcgaXNfYmluZF9oZWxwZXIoLi4uKTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gYXV4Ojpub190YWcgaXNfYmluZF9oZWxwZXIocHJvdGVjdDxUPiopOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLWF1eDo6eWVzX3RhZyBpc19iaW5kX2hlbHBlcihiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4qKTsKLQotdGVtcGxhdGU8IGludCBOID4KLWF1eDo6eWVzX3RhZyBpc19iaW5kX2hlbHBlcihhcmc8Tj4qKTsKLQotdGVtcGxhdGU8IGJvb2wgaXNfcmVmXyAgPSB0cnVlID4KLXN0cnVjdCBpc19iaW5kX3RlbXBsYXRlX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfYmluZF90ZW1wbGF0ZV9pbXBsPGZhbHNlPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICAgICAgIHNpemVvZihhdXg6OmlzX2JpbmRfaGVscGVyKHN0YXRpY19jYXN0PFQqPigwKSkpCi0gICAgICAgICAgICAgICAgPT0gc2l6ZW9mKGF1eDo6eWVzX3RhZykKLSAgICAgICAgICAgICk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGlzX2JpbmRfdGVtcGxhdGUKLSAgICA6IGlzX2JpbmRfdGVtcGxhdGVfaW1wbDwgOjpuZG5ib29zdDo6ZGV0YWlsOjppc19yZWZlcmVuY2VfaW1wbDxUPjo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88VD4KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDAKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kMDxGPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDEsIGJpbmQwKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDEsIGJpbmQwKQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJpbmRfY2hvb3NlcjwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGJpbmQwPEY+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGJpbmQxCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kMTwgRixUMSA+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMiwgYmluZDEpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMiwgYmluZDEpCi0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmluZF9jaG9vc2VyPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYmluZDE8IEYsVDEgPiB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDIKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQyPCBGLFQxLFQyID4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygzLCBiaW5kMikKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygzLCBiaW5kMikKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiaW5kX2Nob29zZXI8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBiaW5kMjwgRixUMSxUMiA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDMKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMzwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQzPCBGLFQxLFQyLFQzID4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg0LCBiaW5kMykKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg0LCBiaW5kMykKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiaW5kX2Nob29zZXI8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBiaW5kMzwgRixUMSxUMixUMyA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGJpbmQ0Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQ0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA0PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiaW5kX2Nob29zZXI8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBiaW5kNDwgRixUMSxUMixUMyxUNCA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kNQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDUsVTEsVTIsVTMsVTQsVTUgPiB0NTsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUsIHR5cGVuYW1lIHQ1Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNiwgYmluZDUpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNiwgYmluZDUpCi0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmluZF9jaG9vc2VyPDU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPiB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBpc19iaW5kX2FyZwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc19iaW5kX2FyZzxuYT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZF9jb3VudF9hcmdzCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPQotICAgICAgICAgIGlzX2JpbmRfYXJnPFQxPjo6dmFsdWUgKyBpc19iaW5kX2FyZzxUMj46OnZhbHVlIAotICAgICAgICArIGlzX2JpbmRfYXJnPFQzPjo6dmFsdWUgKyBpc19iaW5kX2FyZzxUND46OnZhbHVlIAotICAgICAgICArIGlzX2JpbmRfYXJnPFQ1Pjo6dmFsdWUKLSAgICAgICAgKTsKLQotfTsKLQotfQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kCi0gICAgOiBhdXg6OmJpbmRfY2hvb3NlcjwKLSAgICAgICAgICBhdXg6OmJpbmRfY291bnRfYXJnczwgVDEsVDIsVDMsVDQsVDUgPjo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgRixUMSxUMixUMyxUNCxUNSA+Ojp0eXBlCi17Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoCi0gICAgICA2Ci0gICAgLCBiaW5kCi0gICAgKQotCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoCi0gICAgICA2Ci0gICAgLCBiaW5kCi0gICAgKQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9iaW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYmluZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5NTI1MWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9iaW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU5MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYmluZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgYm9vbCA+Ci1zdHJ1Y3QgcmVzb2x2ZV9hcmdfaW1wbAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMKLSAgICAgICAgLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJlc29sdmVfYXJnX2ltcGw8dHJ1ZT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzCi0gICAgICAgICwgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgLCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgaXNfYmluZF90ZW1wbGF0ZTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZwotICAgIDogcmVzb2x2ZV9hcmdfaW1wbDwgaXNfYmluZF90ZW1wbGF0ZTxUPjo6dmFsdWUgPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBULFUxLFUyLFUzLFU0LFU1ID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCByZXBsYWNlX3VubmFtZWRfYXJnX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQXJnID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgQXJnIG5leHQ7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmVwbGFjZV91bm5hbWVkX2FyZ19pbXBsPCBhcmc8IC0xID4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBBcmcgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PEFyZz46OnR5cGUgbmV4dDsKLSAgICAgICAgdHlwZWRlZiBBcmcgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIEFyZyA+Ci1zdHJ1Y3QgcmVwbGFjZV91bm5hbWVkX2FyZwotICAgIDogcmVwbGFjZV91bm5hbWVkX2FyZ19pbXBsPFQ+Ojp0ZW1wbGF0ZSByZXN1bHRfPEFyZz4KLXsKLX07Ci0KLXRlbXBsYXRlPCBpbnQgYXJpdHlfID4gc3RydWN0IGJpbmRfY2hvb3NlcjsKLQotYXV4Ojpub190YWcgaXNfYmluZF9oZWxwZXIoLi4uKTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gYXV4Ojpub190YWcgaXNfYmluZF9oZWxwZXIocHJvdGVjdDxUPiopOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLWF1eDo6eWVzX3RhZyBpc19iaW5kX2hlbHBlcihiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4qKTsKLQotdGVtcGxhdGU8IGludCBOID4KLWF1eDo6eWVzX3RhZyBpc19iaW5kX2hlbHBlcihhcmc8Tj4qKTsKLQotdGVtcGxhdGU8IGJvb2wgaXNfcmVmXyAgPSB0cnVlID4KLXN0cnVjdCBpc19iaW5kX3RlbXBsYXRlX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfYmluZF90ZW1wbGF0ZV9pbXBsPGZhbHNlPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICAgICAgIHNpemVvZihhdXg6OmlzX2JpbmRfaGVscGVyKHN0YXRpY19jYXN0PFQqPigwKSkpCi0gICAgICAgICAgICAgICAgPT0gc2l6ZW9mKGF1eDo6eWVzX3RhZykKLSAgICAgICAgICAgICk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGlzX2JpbmRfdGVtcGxhdGUKLSAgICA6IGlzX2JpbmRfdGVtcGxhdGVfaW1wbDwgOjpuZG5ib29zdDo6ZGV0YWlsOjppc19yZWZlcmVuY2VfaW1wbDxUPjo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88VD4KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDAKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDA8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDA8Rj4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygxLCBiaW5kMCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygxLCBiaW5kMCkKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiaW5kX2Nob29zZXI8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBiaW5kMDxGPiB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kMQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDE8IEYsVDEgPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDIsIGJpbmQxKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDIsIGJpbmQxKQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJpbmRfY2hvb3NlcjwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGJpbmQxPCBGLFQxID4gdHlwZTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQyCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQyPCBGLFQxLFQyID4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygzLCBiaW5kMikKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygzLCBiaW5kMikKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiaW5kX2Nob29zZXI8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBiaW5kMjwgRixUMSxUMiA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDMKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kMzwgRixUMSxUMixUMyA+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNCwgYmluZDMpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNCwgYmluZDMpCi0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmluZF9jaG9vc2VyPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYmluZDM8IEYsVDEsVDIsVDMgPiB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kNAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUNCxuNCA+IHI0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0Ojp0eXBlIGE0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0OjpuZXh0IG41OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kNDwgRixUMSxUMixUMyxUNCA+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNSwgYmluZDQpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNSwgYmluZDQpCi0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmluZF9jaG9vc2VyPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYmluZDQ8IEYsVDEsVDIsVDMsVDQgPiB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZDUKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDQsbjQgPiByNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6dHlwZSBhNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6bmV4dCBuNTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGE0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDUsbjUgPiByNTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNTo6dHlwZSBhNTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNTo6bmV4dCBuNjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGE1LFUxLFUyLFUzLFU0LFU1ID4gdDU7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUsIHR5cGVuYW1lIHQ1Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNiwgYmluZDUpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNiwgYmluZDUpCi0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmluZF9jaG9vc2VyPDU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPiB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBpc19iaW5kX2FyZwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc19iaW5kX2FyZzxuYT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZF9jb3VudF9hcmdzCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPQotICAgICAgICAgIGlzX2JpbmRfYXJnPFQxPjo6dmFsdWUgKyBpc19iaW5kX2FyZzxUMj46OnZhbHVlIAotICAgICAgICArIGlzX2JpbmRfYXJnPFQzPjo6dmFsdWUgKyBpc19iaW5kX2FyZzxUND46OnZhbHVlIAotICAgICAgICArIGlzX2JpbmRfYXJnPFQ1Pjo6dmFsdWUKLSAgICAgICAgKTsKLQotfTsKLQotfQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kCi0gICAgOiBhdXg6OmJpbmRfY2hvb3NlcjwKLSAgICAgICAgICBhdXg6OmJpbmRfY291bnRfYXJnczwgVDEsVDIsVDMsVDQsVDUgPjo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgRixUMSxUMixUMyxUNCxUNSA+Ojp0eXBlCi17Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoCi0gICAgICA2Ci0gICAgLCBiaW5kCi0gICAgKQotCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoCi0gICAgICA2Ci0gICAgLCBiaW5kCi0gICAgKQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9iaW5kX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2JpbmRfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWEwNDZlZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2JpbmRfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpbmRfZndkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYmluZDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGJpbmQxOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kMjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGJpbmQ0OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kNTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9iaXRhbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9iaXRhbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyM2EyZTAxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYml0YW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzNCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaXRhbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBiaXRhbmRfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGJpdGFuZF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgYml0YW5kX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0YW5kX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBiaXRhbmRfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGJpdGFuZF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0YW5kX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBiaXRhbmRfMjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXwotCi0gICAgOiBpZl88Ci0KLSAgICAgICAgICBpc19uYTxOMz4KLSAgICAgICAgLCBiaXRhbmRfMjwgTjEsTjIgPgotICAgICAgICAsIGJpdGFuZF88Ci0gICAgICAgICAgICAgIGJpdGFuZF8yPCBOMSxOMiA+Ci0gICAgICAgICAgICAsIE4zLCBONCwgTjUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0YW5kXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMQotICAgICwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXzIKLSAgICA6IGJpdGFuZF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGJpdGFuZF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYml0YW5kX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGJpdGFuZF8yLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXRhbmRfKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBiaXRhbmRfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICYgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9iaXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2JpdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmVjOTIzZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2JpdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzNCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaXRvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGJpdG9yX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBiaXRvcl9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgYml0b3JfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBiaXRvcl9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0b3JfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGJpdG9yX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBiaXRvcl90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfMjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfCi0KLSAgICA6IGlmXzwKLQotICAgICAgICAgIGlzX25hPE4zPgotICAgICAgICAsIGJpdG9yXzI8IE4xLE4yID4KLSAgICAgICAgLCBiaXRvcl88Ci0gICAgICAgICAgICAgIGJpdG9yXzI8IE4xLE4yID4KLSAgICAgICAgICAgICwgTjMsIE40LCBONQotICAgICAgICAgICAgPgotICAgICAgICA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEKLSAgICAsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGJpdG9yXzIKLSAgICA6IGJpdG9yX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgYml0b3JfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGJpdG9yX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGJpdG9yXzIsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGJpdG9yXykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYml0b3JfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIHwgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9iaXR4b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9iaXR4b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZDQ4NzE4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYml0eG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzNCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaXR4b3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBiaXR4b3JfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGJpdHhvcl9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgYml0eG9yX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0eG9yX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBiaXR4b3JfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGJpdHhvcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0eG9yX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBiaXR4b3JfMjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXwotCi0gICAgOiBpZl88Ci0KLSAgICAgICAgICBpc19uYTxOMz4KLSAgICAgICAgLCBiaXR4b3JfMjwgTjEsTjIgPgotICAgICAgICAsIGJpdHhvcl88Ci0gICAgICAgICAgICAgIGJpdHhvcl8yPCBOMSxOMiA+Ci0gICAgICAgICAgICAsIE4zLCBONCwgTjUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0eG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMQotICAgICwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXzIKLSAgICA6IGJpdHhvcl9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGJpdHhvcl90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYml0eG9yX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGJpdHhvcl8yLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXR4b3JfKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBiaXR4b3JfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIF4gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9kZXF1ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2RlcXVlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQ5N2Q4Mi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2RlcXVlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9kZXF1ZS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IGRlcXVlX2Nob29zZXI7Ci0KLX0KLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDwKLSAgICAgICAgICAgICAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTwKLSAgICAgICAgICAgICAgVDAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjwKLSAgICAgICAgICAgICAgVDAsIFQxCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjM8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3Nlcjw2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjY8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yODwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3Nlcjw5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjk8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDEwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEwPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8MTE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTE8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDEyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEyPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDEzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEzPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8MTQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTQ8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDE1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDE2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE2PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8MTc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTc8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDE4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDE5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE5PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8MjA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjA8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBpc19kZXF1ZV9hcmcKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfZGVxdWVfYXJnPG5hPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMAotICAgICwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUKLSAgICAsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwCi0gICAgPgotc3RydWN0IGRlcXVlX2NvdW50X2FyZ3MKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9Ci0gICAgICAgICAgaXNfZGVxdWVfYXJnPFQxPjo6dmFsdWUgKyBpc19kZXF1ZV9hcmc8VDI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19kZXF1ZV9hcmc8VDM+Ojp2YWx1ZSArIGlzX2RlcXVlX2FyZzxUND46OnZhbHVlIAotICAgICAgICArIGlzX2RlcXVlX2FyZzxUNT46OnZhbHVlICsgaXNfZGVxdWVfYXJnPFQ2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfZGVxdWVfYXJnPFQ3Pjo6dmFsdWUgKyBpc19kZXF1ZV9hcmc8VDg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19kZXF1ZV9hcmc8VDk+Ojp2YWx1ZSArIGlzX2RlcXVlX2FyZzxUMTA+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19kZXF1ZV9hcmc8VDExPjo6dmFsdWUgKyBpc19kZXF1ZV9hcmc8VDEyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfZGVxdWVfYXJnPFQxMz46OnZhbHVlICsgaXNfZGVxdWVfYXJnPFQxND46OnZhbHVlIAotICAgICAgICArIGlzX2RlcXVlX2FyZzxUMTU+Ojp2YWx1ZSArIGlzX2RlcXVlX2FyZzxUMTY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19kZXF1ZV9hcmc8VDE3Pjo6dmFsdWUgKyBpc19kZXF1ZV9hcmc8VDE4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfZGVxdWVfYXJnPFQxOT46OnZhbHVlICsgaXNfZGVxdWVfYXJnPFQyMD46OnZhbHVlCi0gICAgICAgICk7Ci0KLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBkZXF1ZV9pbXBsCi17Ci0gICAgdHlwZWRlZiBhdXg6OmRlcXVlX2NvdW50X2FyZ3M8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+IGFyZ19udW1fOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmRlcXVlX2Nob29zZXI8IGFyZ19udW1fOjp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IGRlcXVlCi0gICAgOiBhdXg6OmRlcXVlX2ltcGw8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ojp0eXBlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmRlcXVlX2ltcGw8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2RpdmlkZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9kaXZpZGVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGE5OGJhMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2RpdmlkZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTMzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2RpdmlkZXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBkaXZpZGVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBkaXZpZGVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBkaXZpZGVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZGl2aWRlc19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZGl2aWRlc19pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZGl2aWRlc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZGl2aWRlc190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlczI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGRpdmlkZXMKLQotICAgIDogaWZfPAotCi0gICAgICAgICAgaXNfbmE8TjM+Ci0gICAgICAgICwgZGl2aWRlczI8IE4xLE4yID4KLSAgICAgICAgLCBkaXZpZGVzPAotICAgICAgICAgICAgICBkaXZpZGVzMjwgTjEsTjIgPgotICAgICAgICAgICAgLCBOMywgTjQsIE41Ci0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGRpdmlkZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEKLSAgICAsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGRpdmlkZXMyCi0gICAgOiBkaXZpZGVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZGl2aWRlc190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZGl2aWRlc190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBkaXZpZGVzMiwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgZGl2aWRlcykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGl2aWRlc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgLyBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2VxdWFsX3RvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvZXF1YWxfdG8uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMWU2ZDExLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvZXF1YWxfdG8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZXF1YWxfdG8uaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBlcXVhbF90b19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZXF1YWxfdG9faW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGVxdWFsX3RvX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZXF1YWxfdG9faW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBlcXVhbF90b19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZXF1YWxfdG9fdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGVxdWFsX3RvCi0KLSAgICA6IGVxdWFsX3RvX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZXF1YWxfdG9fdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGVxdWFsX3RvX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGVxdWFsX3RvLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBlcXVhbF90bykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlcXVhbF90b19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgID09IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzRjYWNlNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNDUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPCBpbnQgTiA+Ci1zdHJ1Y3QgZm9sZF9jaHVuazsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZm9sZF9jaHVuazwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBmb2xkX2NodW5rPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBzdGF0ZTEgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGZvbGRfY2h1bms8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIHN0YXRlMiBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZm9sZF9jaHVuazwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgc3RhdGUzIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBmb2xkX2NodW5rPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBzdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBzdGF0ZTQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBpbnQgTiA+Ci1zdHJ1Y3QgZm9sZF9jaHVuawotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBmb2xkX2ltcGw8Ci0gICAgICAgICAgICAgIDQKLSAgICAgICAgICAgICwgRmlyc3QKLSAgICAgICAgICAgICwgTGFzdAotICAgICAgICAgICAgLCBTdGF0ZQotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgID4gY2h1bmtfOwotCi0gICAgICAgIHR5cGVkZWYgZm9sZF9pbXBsPAotICAgICAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjppdGVyYXRvcgotICAgICAgICAgICAgLCBMYXN0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6c3RhdGUKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICA+IHJlc187Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX3N0ZXA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9udWxsX3N0ZXAKLXsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmb2xkX2NodW5rPCAtMSA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgaXNfc2FtZTwgRmlyc3QsTGFzdCA+Ojp0eXBlCi0gICAgICAgICAgICAsIGZvbGRfbnVsbF9zdGVwPCBMYXN0LFN0YXRlID4KLSAgICAgICAgICAgICwgZm9sZF9zdGVwPCBGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci0gICAgICAgICAgICA+Ojp0eXBlIHJlc187Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIGZvbGRfY2h1bms8IC0xID46OnRlbXBsYXRlIHJlc3VsdF88Ci0gICAgICAgICAgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8Rm9yd2FyZE9wLFN0YXRlLCB0eXBlbmFtZSBkZXJlZjxGaXJzdD46OnR5cGU+Ojp0eXBlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gY2h1bmtfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaHVua186OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2h1bmtfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbAotICAgIDogZm9sZF9jaHVuazxOPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9mdWxsX2xhbWJkYS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2Z1bGxfbGFtYmRhLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2RhOTcxZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2Z1bGxfbGFtYmRhLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2Z1bGxfbGFtYmRhLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICBib29sIEMxID0gZmFsc2UsIGJvb2wgQzIgPSBmYWxzZSwgYm9vbCBDMyA9IGZhbHNlLCBib29sIEM0ID0gZmFsc2UKLSAgICAsIGJvb2wgQzUgPSBmYWxzZQotICAgID4KLXN0cnVjdCBsYW1iZGFfb3IKLSAgICA6IHRydWVfCi17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGFtYmRhX29yPCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSA+Ci0gICAgOiBmYWxzZV8KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgCi0gICAgPgotc3RydWN0IGxhbWJkYQotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgVCByZXN1bHRfOwotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IGlzX2xhbWJkYV9leHByZXNzaW9uCi0gICAgOiBsYW1iZGE8VD46OmlzX2xlCi17Ci19OwotCi10ZW1wbGF0ZTwgaW50IE4sIHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgbGFtYmRhPCBhcmc8Tj4sIFRhZyA+Ci17Ci0gICAgdHlwZWRlZiB0cnVlXyBpc19sZTsKLSAgICB0eXBlZGVmIG1wbDo6YXJnPE4+IHJlc3VsdF87IC8vIHF1YWxpZmllZCBmb3IgdGhlIHNha2Ugb2YgTUlQU3BybyA3LjQxCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kMDxGPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMDwKLSAgICAgICAgICBGCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQxCi17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDE8IHRydWVfLFRhZyxGLEwxID4KLXsKLSAgICB0eXBlZGVmIGJpbmQxPAotICAgICAgICAgIHF1b3RlMTwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPFQxPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQxPAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxCi0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kMTwgRixUMSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQxPAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMgotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQyCi17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlLCB0eXBlbmFtZSBMMjo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDI8IHRydWVfLFRhZyxGLEwxLEwyID4KLXsKLSAgICB0eXBlZGVmIGJpbmQyPAotICAgICAgICAgIHF1b3RlMjwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfLCB0eXBlbmFtZSBMMjo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMiA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQyLFRhZyA+IGwyOwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQyPAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMgotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQyPCBGLFQxLFQyID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDI8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDMKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlLCB0eXBlbmFtZSBMMzo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MzwgdHJ1ZV8sVGFnLEYsTDEsTDIsTDMgPgotewotICAgIHR5cGVkZWYgYmluZDM8Ci0gICAgICAgICAgcXVvdGUzPCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfLCB0eXBlbmFtZSBMMzo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8IFQxLFQyLFQzID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQzLFRhZyA+IGwzOwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlLCBpc19sZTI6OnZhbHVlLCBpc19sZTM6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0MzwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMSwgbDIsIGwzCi0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQzPCBGLFQxLFQyLFQzID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDM8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0Ci0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDQKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlLCB0eXBlbmFtZSBMMzo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIEw0Ojp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0Ci0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDQ8IHRydWVfLFRhZyxGLEwxLEwyLEwzLEw0ID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ0PAotICAgICAgICAgIHF1b3RlNDwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfLCB0eXBlbmFtZSBMMjo6cmVzdWx0XywgdHlwZW5hbWUgTDM6OnJlc3VsdF8KLSAgICAgICAgLCB0eXBlbmFtZSBMNDo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIsVDMsVDQgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDMsVGFnID4gbDM7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQ0LFRhZyA+IGw0OwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZSwgaXNfbGUzOjp2YWx1ZSwgaXNfbGU0Ojp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDQ8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyLCBsMywgbDQKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDQ8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIFA1ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMywgdHlwZW5hbWUgTDQsIHR5cGVuYW1lIEw1Ci0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDUKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlLCB0eXBlbmFtZSBMMzo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIEw0Ojp0eXBlLCB0eXBlbmFtZSBMNTo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIFA1ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMywgdHlwZW5hbWUgTDQsIHR5cGVuYW1lIEw1Ci0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDU8IHRydWVfLFRhZyxGLEwxLEwyLEwzLEw0LEw1ID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ1PAotICAgICAgICAgIHF1b3RlNTwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfLCB0eXBlbmFtZSBMMjo6cmVzdWx0XywgdHlwZW5hbWUgTDM6OnJlc3VsdF8KLSAgICAgICAgLCB0eXBlbmFtZSBMNDo6cmVzdWx0XywgdHlwZW5hbWUgTDU6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0Ci0gICAgICAgICwgdHlwZW5hbWUgUDUKLSAgICAgICAgPgotICAgICAgY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8IFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQzLFRhZyA+IGwzOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUNCxUYWcgPiBsNDsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDUsVGFnID4gbDU7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDU6OmlzX2xlIGlzX2xlNTsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZSwgaXNfbGUzOjp2YWx1ZSwgaXNfbGU0Ojp2YWx1ZQotICAgICAgICAsIGlzX2xlNTo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQ1PAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMiwgbDMsIGw0LCBsNQotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDU8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLS8vLyBzcGVjaWFsIGNhc2UgZm9yICdwcm90ZWN0JwotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgbGFtYmRhPCBtcGw6OnByb3RlY3Q8VD4sIFRhZyA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8VD4gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLS8vLyBzcGVjaWFsaXphdGlvbnMgZm9yIHRoZSBtYWluICdiaW5kJyBmb3JtCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLS8vLyB3b3JrYXJvdW5kIGZvciBNV0NXIDguMysvRURHIDwgMzAzLCBsZWFkcyB0byBhbWJpZ3VpdHkgb24gRGlnaXRhbCBNYXJzCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnMSwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgbGFtYmRhPCBGLFRhZzEgPgotICAgICAgICAsIFRhZzIKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBGLFRhZzIgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVGFnMSxUYWcyID4gbDI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGU7Ci0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDI8aXNfbGUsIFRhZzIsIG1wbDo6bGFtYmRhLCBsMSwgbDI+IGxlX3Jlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMiwgbGFtYmRhKQotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2dyZWF0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9ncmVhdGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTZlYjYxZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2dyZWF0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZ3JlYXRlci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGdyZWF0ZXJfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGdyZWF0ZXJfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGdyZWF0ZXJfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBncmVhdGVyX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBncmVhdGVyCi0KLSAgICA6IGdyZWF0ZXJfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBncmVhdGVyX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBncmVhdGVyX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGdyZWF0ZXIsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGdyZWF0ZXIpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgPiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2dyZWF0ZXJfZXF1YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9ncmVhdGVyX2VxdWFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWFiNDQ0MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2dyZWF0ZXJfZXF1YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZ3JlYXRlcl9lcXVhbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGdyZWF0ZXJfZXF1YWxfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGdyZWF0ZXJfZXF1YWxfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBncmVhdGVyX2VxdWFsX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBncmVhdGVyX2VxdWFsCi0KLSAgICA6IGdyZWF0ZXJfZXF1YWxfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBncmVhdGVyX2VxdWFsX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBncmVhdGVyX2VxdWFsX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGdyZWF0ZXJfZXF1YWwsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGdyZWF0ZXJfZXF1YWwpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgPj0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9pbmhlcml0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvaW5oZXJpdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjYjBhNDguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9pbmhlcml0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9pbmhlcml0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGJvb2wgQzEsIGJvb2wgQzIgPgotc3RydWN0IGluaGVyaXQyX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRGVyaXZlZCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBUMSwgVDIKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRGVyaXZlZCB0eXBlXzsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGluaGVyaXQyX2ltcGw8IGZhbHNlLHRydWUgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBEZXJpdmVkLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IFQxCi0gICAgewotICAgICAgICB0eXBlZGVmIFQxIHR5cGVfOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW5oZXJpdDJfaW1wbDwgdHJ1ZSxmYWxzZSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIERlcml2ZWQsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogVDIKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVDIgdHlwZV87Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpbmhlcml0Ml9pbXBsPCB0cnVlLHRydWUgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBEZXJpdmVkLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUMSB0eXBlXzsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgPgotc3RydWN0IGluaGVyaXQyCi0gICAgOiBhdXg6OmluaGVyaXQyX2ltcGw8Ci0gICAgICAgICAgaXNfZW1wdHlfYmFzZTxUMT46OnZhbHVlCi0gICAgICAgICwgaXNfZW1wdHlfYmFzZTxUMj46OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IGluaGVyaXQyPCBUMSxUMiA+LFQxLCBUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbmhlcml0Mjo6dHlwZV8gdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGluaGVyaXQyLCAoVDEsIFQyKSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygyLCBpbmhlcml0MikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgPgotc3RydWN0IGluaGVyaXQzCi0gICAgOiBpbmhlcml0MjwKLSAgICAgICAgICB0eXBlbmFtZSBpbmhlcml0MjwKLSAgICAgICAgICAgICAgVDEsIFQyCi0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgVDMKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMwotICAgICAgICAsIGluaGVyaXQzCi0gICAgICAgICwgKCBUMSwgVDIsIFQzKQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMywgaW5oZXJpdDMpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYSwgdHlwZW5hbWUgVDQgPSBuYQotICAgID4KLXN0cnVjdCBpbmhlcml0NAotICAgIDogaW5oZXJpdDI8Ci0gICAgICAgICAgdHlwZW5hbWUgaW5oZXJpdDM8Ci0gICAgICAgICAgICAgIFQxLCBUMiwgVDMKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgLCBUNAotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA0Ci0gICAgICAgICwgaW5oZXJpdDQKLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoNCwgaW5oZXJpdDQpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYSwgdHlwZW5hbWUgVDQgPSBuYQotICAgICwgdHlwZW5hbWUgVDUgPSBuYQotICAgID4KLXN0cnVjdCBpbmhlcml0NQotICAgIDogaW5oZXJpdDI8Ci0gICAgICAgICAgdHlwZW5hbWUgaW5oZXJpdDQ8Ci0gICAgICAgICAgICAgIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgVDUKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGluaGVyaXQ1Ci0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQyg1LCBpbmhlcml0NSkKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQyID0gZW1wdHlfYmFzZQotICAgICwgdHlwZW5hbWUgVDMgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUNCA9IGVtcHR5X2Jhc2UKLSAgICAsIHR5cGVuYW1lIFQ1ID0gZW1wdHlfYmFzZQotICAgID4KLXN0cnVjdCBpbmhlcml0Ci0gICAgOiBpbmhlcml0NTwgVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGluaGVyaXQ8IG5hLG5hLG5hLG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwKLQotICAgICAgICAgIHR5cGVuYW1lIFQxID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDIgPSBlbXB0eV9iYXNlCi0gICAgICAgICwgdHlwZW5hbWUgVDMgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUNCA9IGVtcHR5X2Jhc2UKLSAgICAgICAgLCB0eXBlbmFtZSBUNSA9IGVtcHR5X2Jhc2UKLQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgICAgIDogaW5oZXJpdDwgVDEsVDIsVDMsVDQsVDUgPgotICAgIHsKLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX0xBTUJEQSg1LCBpbmhlcml0KQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX0FSSVRZKDUsIGluaGVyaXQpCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfVEVNUExBVEVfQVJJVFkoNSwgNSwgaW5oZXJpdCkKLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvaXRlcl9mb2xkX2lmX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3NGJkODMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAxLTIwMDIKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciwgdHlwZW5hbWUgU3RhdGUgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9udWxsX3N0ZXAKLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwgYm9vbCA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZU9wCi0gICAgICAgICwgdHlwZW5hbWUgSXRlcmF0b3JPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBTdGF0ZU9wLFN0YXRlLEl0ZXJhdG9yID46OnR5cGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3JPcDo6dHlwZSBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8ZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlT3AKLSAgICAgICAgLCB0eXBlbmFtZSBJdGVyYXRvck9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICwgdHlwZW5hbWUgUHJlZGljYXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgUHJlZGljYXRlLFN0YXRlLEl0ZXJhdG9yID46OnR5cGUgbm90X2xhc3Q7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKG5vdF9sYXN0KTo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgSXRlcmF0b3IsU3RhdGUsRm9yd2FyZE9wLCBtcGw6Om5leHQ8SXRlcmF0b3I+ID4gaW1wbF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBQcmVkaWNhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgUHJlZGljYXRlLFN0YXRlLEl0ZXJhdG9yID46OnR5cGUgbm90X2xhc3Q7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKG5vdF9sYXN0KTo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgSXRlcmF0b3IsU3RhdGUsQmFja3dhcmRPcCwgaWRlbnRpdHk8SXRlcmF0b3I+ID4gaW1wbF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRQcmVkaWNhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkUHJlZGljYXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9pbXBsCi17Ci0gcHJpdmF0ZToKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9udWxsX3N0ZXA8IEl0ZXJhdG9yLFN0YXRlID4gZm9yd2FyZF9zdGVwMDsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDA6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAwOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwMTsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDE6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAxOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwMjsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDI6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAyOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwMzsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDM6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAzOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwNDsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6Om5vdF9sYXN0Ci0gICAgICAgICwgaXRlcl9mb2xkX2lmX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6Oml0ZXJhdG9yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6OnN0YXRlCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgLCBGb3J3YXJkUHJlZGljYXRlCi0gICAgICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgICAgICwgQmFja3dhcmRQcmVkaWNhdGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjppdGVyYXRvcgotICAgICAgICAgICAgLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjpzdGF0ZQotICAgICAgICAgICAgPgotICAgICAgICA+Ojp0eXBlIGJhY2t3YXJkX3N0ZXA0OwotCi0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMzo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXA0OjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMzsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAyOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDM6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAyOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDE6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMjo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDE7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMDo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAxOjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMDsKLSAgICAKLQotIHB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAwOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXA0OjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9pdGVyX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2l0ZXJfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTFhNDVmZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2l0ZXJfZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0NSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2l0ZXJfZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPCBpbnQgTiA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2NodW5rOwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBpdGVyX2ZvbGRfY2h1bms8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHN0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgaXRlcl9mb2xkX2NodW5rPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBzdGF0ZTEgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGl0ZXJfZm9sZF9jaHVuazwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgc3RhdGUyIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBpdGVyX2ZvbGRfY2h1bms8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMSxpdGVyMSA+Ojp0eXBlIHN0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMixpdGVyMiA+Ojp0eXBlIHN0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIHN0YXRlMyBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgaXRlcl9mb2xkX2NodW5rPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTEsaXRlcjEgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTIsaXRlcjIgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTMsaXRlcjMgPjo6dHlwZSBzdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBzdGF0ZTQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBpbnQgTiA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2NodW5rCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgICAgICA0Ci0gICAgICAgICAgICAsIEZpcnN0Ci0gICAgICAgICAgICAsIExhc3QKLSAgICAgICAgICAgICwgU3RhdGUKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICA+IGNodW5rXzsKLQotICAgICAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjppdGVyYXRvcgotICAgICAgICAgICAgLCBMYXN0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6c3RhdGUKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICA+IHJlc187Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfc3RlcDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfbnVsbF9zdGVwCi17Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2NodW5rPCAtMSA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgaXNfc2FtZTwgRmlyc3QsTGFzdCA+Ojp0eXBlCi0gICAgICAgICAgICAsIGl0ZXJfZm9sZF9udWxsX3N0ZXA8IExhc3QsU3RhdGUgPgotICAgICAgICAgICAgLCBpdGVyX2ZvbGRfc3RlcDwgRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotICAgICAgICAgICAgPjo6dHlwZSByZXNfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9jaHVuazwgLTEgPjo6dGVtcGxhdGUgcmVzdWx0XzwKLSAgICAgICAgICB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLFN0YXRlLEZpcnN0ID46OnR5cGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBjaHVua187Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNodW5rXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaHVua186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGwKLSAgICA6IGl0ZXJfZm9sZF9jaHVuazxOPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9sYW1iZGFfbm9fY3Rwcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2xhbWJkYV9ub19jdHBzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDVmNWY2Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2xhbWJkYV9ub19jdHBzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyOSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9ub19jdHBzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICBib29sIEMxID0gZmFsc2UsIGJvb2wgQzIgPSBmYWxzZSwgYm9vbCBDMyA9IGZhbHNlLCBib29sIEM0ID0gZmFsc2UKLSAgICAsIGJvb2wgQzUgPSBmYWxzZQotICAgID4KLXN0cnVjdCBsYW1iZGFfb3IKLSAgICA6IHRydWVfCi17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGFtYmRhX29yPCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSA+Ci0gICAgOiBmYWxzZV8KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBBcml0eSA+IHN0cnVjdCBsYW1iZGFfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgIHR5cGVkZWYgaXNfcGxhY2Vob2xkZXI8VD4gaXNfbGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50XzwzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmczLCBUYWcsIGZhbHNlXyA+IGwzOwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTMpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlLCB0eXBlbmFtZSBsMzo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMywgVGFnLCBmYWxzZV8gPiBsMzsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzQsIFRhZywgZmFsc2VfID4gbDQ7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUzKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlNCk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUsIHR5cGVuYW1lIGwzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGw0Ojp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50Xzw1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmczLCBUYWcsIGZhbHNlXyA+IGwzOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnNCwgVGFnLCBmYWxzZV8gPiBsNDsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzUsIFRhZywgZmFsc2VfID4gbDU7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDU6OmlzX2xlIGlzX2xlNTsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTMpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGU0KTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlNSk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUsIHR5cGVuYW1lIGwzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGw0Ojp0eXBlLCB0eXBlbmFtZSBsNTo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgLCB0eXBlbmFtZSBQcm90ZWN0Ci0gICAgPgotc3RydWN0IGxhbWJkYQotewotICAgIC8vLyBNZXRhZnVuY3Rpb24gZm9yd2FyZGluZyBjb25mdXNlcyBNU1ZDIDYueAotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp0ZW1wbGF0ZV9hcml0eTxUPjo6dHlwZSBhcml0eV87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9pbXBsPGFyaXR5Xz4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBULFRhZyxQcm90ZWN0ID4gbF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxfOjp0eXBlIHR5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsXzo6aXNfbGUgaXNfbGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgzLCBsYW1iZGEsIChULCBUYWcsIFByb3RlY3QpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigxLCAzLCBsYW1iZGEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBpc19sYW1iZGFfZXhwcmVzc2lvbgotICAgIDogbGFtYmRhPFQ+Ojppc19sZQotewotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9sZXNzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvbGVzcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViZTg2MDcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9sZXNzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xlc3MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBsZXNzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBsZXNzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBsZXNzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbGVzc190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbGVzcwotCi0gICAgOiBsZXNzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbGVzc190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbGVzc190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBsZXNzLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBsZXNzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxlc3NfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlID4gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9sZXNzX2VxdWFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvbGVzc19lcXVhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3YjE5YWEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9sZXNzX2VxdWFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xlc3NfZXF1YWwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBsZXNzX2VxdWFsX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBsZXNzX2VxdWFsX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBsZXNzX2VxdWFsX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbGVzc19lcXVhbF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbGVzc19lcXVhbAotCi0gICAgOiBsZXNzX2VxdWFsX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbGVzc19lcXVhbF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbGVzc19lcXVhbF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBsZXNzX2VxdWFsLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBsZXNzX2VxdWFsKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlIDw9IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvbGlzdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2xpc3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjE5ZTYwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvbGlzdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NTYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGlzdC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IGxpc3RfY2hvb3NlcjsKLQotfQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxpc3QwPAotICAgICAgICAgICAgIAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxPAotICAgICAgICAgICAgICBUMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyPAotICAgICAgICAgICAgICBUMCwgVDEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3Nlcjw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q0PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3Nlcjw1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8Nj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3Nlcjw3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q3PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3Nlcjw4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8OT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0OTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTA8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDExPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxMj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTI8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxMz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTM8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDE0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxNT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTU8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxNj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTY8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDE3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxOD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTg8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxOT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTk8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDIwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGlzX2xpc3RfYXJnCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IHRydWUpOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX2xpc3RfYXJnPG5hPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMAotICAgICwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUKLSAgICAsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwCi0gICAgPgotc3RydWN0IGxpc3RfY291bnRfYXJncwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0KLSAgICAgICAgICBpc19saXN0X2FyZzxUMT46OnZhbHVlICsgaXNfbGlzdF9hcmc8VDI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2FyZzxUMz46OnZhbHVlICsgaXNfbGlzdF9hcmc8VDQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2FyZzxUNT46OnZhbHVlICsgaXNfbGlzdF9hcmc8VDY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2FyZzxUNz46OnZhbHVlICsgaXNfbGlzdF9hcmc8VDg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2FyZzxUOT46OnZhbHVlICsgaXNfbGlzdF9hcmc8VDEwPjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9hcmc8VDExPjo6dmFsdWUgKyBpc19saXN0X2FyZzxUMTI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2FyZzxUMTM+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQxND46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfYXJnPFQxNT46OnZhbHVlICsgaXNfbGlzdF9hcmc8VDE2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9hcmc8VDE3Pjo6dmFsdWUgKyBpc19saXN0X2FyZzxUMTg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2FyZzxUMTk+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQyMD46OnZhbHVlCi0gICAgICAgICk7Ci0KLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBsaXN0X2ltcGwKLXsKLSAgICB0eXBlZGVmIGF1eDo6bGlzdF9jb3VudF9hcmdzPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPiBhcmdfbnVtXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsaXN0X2Nob29zZXI8IGFyZ19udW1fOjp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IGxpc3QKLSAgICA6IGF1eDo6bGlzdF9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsaXN0X2ltcGw8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2xpc3RfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2xpc3RfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlZDdmN2UuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9saXN0X2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTM0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xpc3RfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IGxpc3RfY19jaG9vc2VyOwotCi19Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MF9jPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MV9jPAotICAgICAgICAgICAgICBULCBDMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDJfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0M19jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDVfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8Nj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0Nl9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8Nz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0N19jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDhfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8OT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0OV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MTA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEwX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MTE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDExX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwxMj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTJfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MTM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEzX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MTQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE0X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwxNT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTVfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MTY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE2X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MTc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE3X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwxOD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MThfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MTk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE5X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MjA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDIwX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBsb25nIEMgPgotc3RydWN0IGlzX2xpc3RfY19hcmcKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfbGlzdF9jX2FyZzxMT05HX01BWD4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1LCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgLCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1Ci0gICAgLCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOSwgbG9uZyBDMjAKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jX2NvdW50X2FyZ3MKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9Ci0gICAgICAgICAgaXNfbGlzdF9jX2FyZzxDMT46OnZhbHVlICsgaXNfbGlzdF9jX2FyZzxDMj46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfY19hcmc8QzM+Ojp2YWx1ZSArIGlzX2xpc3RfY19hcmc8QzQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2NfYXJnPEM1Pjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEM2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9jX2FyZzxDNz46OnZhbHVlICsgaXNfbGlzdF9jX2FyZzxDOD46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfY19hcmc8Qzk+Ojp2YWx1ZSArIGlzX2xpc3RfY19hcmc8QzEwPjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9jX2FyZzxDMTE+Ojp2YWx1ZSArIGlzX2xpc3RfY19hcmc8QzEyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9jX2FyZzxDMTM+Ojp2YWx1ZSArIGlzX2xpc3RfY19hcmc8QzE0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9jX2FyZzxDMTU+Ojp2YWx1ZSArIGlzX2xpc3RfY19hcmc8QzE2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9jX2FyZzxDMTc+Ojp2YWx1ZSArIGlzX2xpc3RfY19hcmc8QzE4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9jX2FyZzxDMTk+Ojp2YWx1ZSArIGlzX2xpc3RfY19hcmc8QzIwPjo6dmFsdWUKLSAgICAgICAgKTsKLQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgID4KLXN0cnVjdCBsaXN0X2NfaW1wbAotewotICAgIHR5cGVkZWYgYXV4OjpsaXN0X2NfY291bnRfYXJnczwKLSAgICAgICAgICBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID4gYXJnX251bV87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGlzdF9jX2Nob29zZXI8IGFyZ19udW1fOjp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCA9IExPTkdfTUFYLCBsb25nIEMxID0gTE9OR19NQVgsIGxvbmcgQzIgPSBMT05HX01BWAotICAgICwgbG9uZyBDMyA9IExPTkdfTUFYLCBsb25nIEM0ID0gTE9OR19NQVgsIGxvbmcgQzUgPSBMT05HX01BWAotICAgICwgbG9uZyBDNiA9IExPTkdfTUFYLCBsb25nIEM3ID0gTE9OR19NQVgsIGxvbmcgQzggPSBMT05HX01BWAotICAgICwgbG9uZyBDOSA9IExPTkdfTUFYLCBsb25nIEMxMCA9IExPTkdfTUFYLCBsb25nIEMxMSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxMiA9IExPTkdfTUFYLCBsb25nIEMxMyA9IExPTkdfTUFYLCBsb25nIEMxNCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxNSA9IExPTkdfTUFYLCBsb25nIEMxNiA9IExPTkdfTUFYLCBsb25nIEMxNyA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxOCA9IExPTkdfTUFYLCBsb25nIEMxOSA9IExPTkdfTUFYCi0gICAgPgotc3RydWN0IGxpc3RfYwotICAgIDogYXV4OjpsaXN0X2NfaW1wbDwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID46OnR5cGUKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGlzdF9jX2ltcGw8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL21hcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL21hcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1MTc0YzguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9tYXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTU2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL21hcC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IG1hcF9jaG9vc2VyOwotCi19Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBtYXAwPAotICAgICAgICAgICAgIAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTwKLSAgICAgICAgICAgICAgVDAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDI8Ci0gICAgICAgICAgICAgIFQwLCBUMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3Nlcjw1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDU8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3Nlcjw4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDg8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwOTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDEwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDEwPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDExPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDExPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8MTI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTI8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDEzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDEzPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDE0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE0PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8MTU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTU8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDE2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE2PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDE3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE3PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8MTg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTg8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDE5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE5PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDIwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDIwPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgaXNfbWFwX2FyZwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc19tYXBfYXJnPG5hPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMAotICAgICwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUKLSAgICAsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwCi0gICAgPgotc3RydWN0IG1hcF9jb3VudF9hcmdzCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPQotICAgICAgICAgIGlzX21hcF9hcmc8VDE+Ojp2YWx1ZSArIGlzX21hcF9hcmc8VDI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19tYXBfYXJnPFQzPjo6dmFsdWUgKyBpc19tYXBfYXJnPFQ0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbWFwX2FyZzxUNT46OnZhbHVlICsgaXNfbWFwX2FyZzxUNj46OnZhbHVlIAotICAgICAgICArIGlzX21hcF9hcmc8VDc+Ojp2YWx1ZSArIGlzX21hcF9hcmc8VDg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19tYXBfYXJnPFQ5Pjo6dmFsdWUgKyBpc19tYXBfYXJnPFQxMD46OnZhbHVlIAotICAgICAgICArIGlzX21hcF9hcmc8VDExPjo6dmFsdWUgKyBpc19tYXBfYXJnPFQxMj46OnZhbHVlIAotICAgICAgICArIGlzX21hcF9hcmc8VDEzPjo6dmFsdWUgKyBpc19tYXBfYXJnPFQxND46OnZhbHVlIAotICAgICAgICArIGlzX21hcF9hcmc8VDE1Pjo6dmFsdWUgKyBpc19tYXBfYXJnPFQxNj46OnZhbHVlIAotICAgICAgICArIGlzX21hcF9hcmc8VDE3Pjo6dmFsdWUgKyBpc19tYXBfYXJnPFQxOD46OnZhbHVlIAotICAgICAgICArIGlzX21hcF9hcmc8VDE5Pjo6dmFsdWUgKyBpc19tYXBfYXJnPFQyMD46OnZhbHVlCi0gICAgICAgICk7Ci0KLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBtYXBfaW1wbAotewotICAgIHR5cGVkZWYgYXV4OjptYXBfY291bnRfYXJnczwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4gYXJnX251bV87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bWFwX2Nob29zZXI8IGFyZ19udW1fOjp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IG1hcAotICAgIDogYXV4OjptYXBfaW1wbDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID46OnR5cGUKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bWFwX2ltcGw8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL21pbnVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvbWludXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTRkNjY5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvbWludXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTMzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL21pbnVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbWludXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IG1pbnVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBtaW51c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IG1pbnVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBtaW51c19pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbWludXNfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG1pbnVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBtaW51czI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IG1pbnVzCi0KLSAgICA6IGlmXzwKLQotICAgICAgICAgIGlzX25hPE4zPgotICAgICAgICAsIG1pbnVzMjwgTjEsTjIgPgotICAgICAgICAsIG1pbnVzPAotICAgICAgICAgICAgICBtaW51czI8IE4xLE4yID4KLSAgICAgICAgICAgICwgTjMsIE40LCBONQotICAgICAgICAgICAgPgotICAgICAgICA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBtaW51cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMQotICAgICwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgbWludXMyCi0gICAgOiBtaW51c19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIG1pbnVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBtaW51c190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBtaW51czIsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIG1pbnVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBtaW51c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgLSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL21vZHVsdXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9tb2R1bHVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2IyZTdhYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL21vZHVsdXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL21vZHVsdXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBtb2R1bHVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBtb2R1bHVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBtb2R1bHVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbW9kdWx1c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbW9kdWx1c19pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbW9kdWx1c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbW9kdWx1c190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbW9kdWx1cwotCi0gICAgOiBtb2R1bHVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbW9kdWx1c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbW9kdWx1c190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBtb2R1bHVzLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBtb2R1bHVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBtb2R1bHVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAlIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvbm90X2VxdWFsX3RvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvbm90X2VxdWFsX3RvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGY5MTA5Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL25vdF9lcXVhbF90by5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9ub3RfZXF1YWxfdG8uaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBub3RfZXF1YWxfdG9faW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IG5vdF9lcXVhbF90b19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbm90X2VxdWFsX3RvX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBub3RfZXF1YWxfdG8KLQotICAgIDogbm90X2VxdWFsX3RvX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbm90X2VxdWFsX3RvX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBub3RfZXF1YWxfdG9fdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbm90X2VxdWFsX3RvLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBub3RfZXF1YWxfdG8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSAhPSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL29yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvb3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MTIzYjhkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvb3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvb3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGJvb2wgQ18gPiBzdHJ1Y3Qgb3JfaW1wbAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IHRydWVfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBvcl9pbXBsPGZhbHNlPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IG9yX2ltcGw8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBUMixUMyxUNCxmYWxzZV8gPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG9yX2ltcGw8ZmFsc2U+Ci0gICAgOjpyZXN1bHRfPCBmYWxzZV8sZmFsc2VfLGZhbHNlXyxmYWxzZV8gPgotICAgICAgICA6IGZhbHNlXwotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgLCB0eXBlbmFtZSBUMyA9IGZhbHNlXywgdHlwZW5hbWUgVDQgPSBmYWxzZV8sIHR5cGVuYW1lIFQ1ID0gZmFsc2VfCi0gICAgPgotc3RydWN0IG9yXwotCi0gICAgOiBhdXg6Om9yX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgVDIsVDMsVDQsVDUgPgotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgb3JfCi0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoCi0gICAgICAyCi0gICAgLCA1Ci0gICAgLCBvcl8KLSAgICApCi0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3BsYWNlaG9sZGVycy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3BsYWNlaG9sZGVycy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhMjhjMDkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9wbGFjZWhvbGRlcnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMS0yMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3BsYWNlaG9sZGVycy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwgLTEgPiBfOwotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8pCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol87Ci19Ci0KLX19Ci0KLS8vLyBhZ3VydCwgMTcvbWFyLzAyOiBvbmUgbW9yZSBwbGFjZWhvbGRlciBmb3IgdGhlIGxhc3QgJ2FwcGx5IycgCi0vLy8gc3BlY2lhbGl6YXRpb24KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDE+IF8xOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzEpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol8xOwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Mj4gXzI7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfMikKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzI7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwzPiBfMzsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8zKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfMzsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDQ+IF80OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzQpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol80OwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8NT4gXzU7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfNSkKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzU7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzw2PiBfNjsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF82KQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfNjsKLX0KLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvcGx1cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3BsdXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MzcyZWFkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvcGx1cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvcGx1cy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHBsdXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHBsdXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHBsdXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBwbHVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBwbHVzX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBwbHVzX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBwbHVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBwbHVzMjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgcGx1cwotCi0gICAgOiBpZl88Ci0KLSAgICAgICAgICBpc19uYTxOMz4KLSAgICAgICAgLCBwbHVzMjwgTjEsTjIgPgotICAgICAgICAsIHBsdXM8Ci0gICAgICAgICAgICAgIHBsdXMyPCBOMSxOMiA+Ci0gICAgICAgICAgICAsIE4zLCBONCwgTjUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgcGx1cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMQotICAgICwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgcGx1czIKLSAgICA6IHBsdXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBwbHVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBwbHVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIHBsdXMyLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBwbHVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBwbHVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICArIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvcXVvdGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9xdW90ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyNTk4Y2IuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9xdW90ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvcXVvdGUuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTwgYm9vbCA+IHN0cnVjdCBxdW90ZV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IFQKLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHF1b3RlX2ltcGw8ZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGUxCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBxdW90ZV9pbXBsPCBhdXg6Omhhc190eXBlPCBGPFUxPiA+Ojp2YWx1ZSA+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IEY8VTE+ID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGUyCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwgYXV4OjpoYXNfdHlwZTwgRjwgVTEsVTIgPiA+Ojp2YWx1ZSA+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IEY8IFUxLFUyID4gPgotCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGUzCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IHF1b3RlX2ltcGw8IGF1eDo6aGFzX3R5cGU8IEY8IFUxLFUyLFUzID4gPjo6dmFsdWUgPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBGPCBVMSxVMixVMyA+ID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgID4KLXN0cnVjdCBxdW90ZTQKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBxdW90ZV9pbXBsPCBhdXg6Omhhc190eXBlPCBGPCBVMSxVMixVMyxVNCA+ID46OnZhbHVlID4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgRjwgVTEsVTIsVTMsVTQgPiA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQKLSAgICAgICAgLCB0eXBlbmFtZSBQNQotICAgICAgICA+Ci0gICAgICBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgID4KLXN0cnVjdCBxdW90ZTUKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICAgICAsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IHF1b3RlX2ltcGw8IGF1eDo6aGFzX3R5cGU8IEY8IFUxLFUyLFUzLFU0LFU1ID4gPjo6dmFsdWUgPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBGPCBVMSxVMixVMyxVNCxVNSA+ID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3JldmVyc2VfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmM2YzE3My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3JldmVyc2VfZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5NSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL3JldmVyc2VfZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUwIGJrd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUxIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTIgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUzIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGU0IGJrd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTQsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bmsKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiByZXZlcnNlX2ZvbGRfaW1wbDwKLSAgICAgICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICAgICAsIGl0ZXI0Ci0gICAgICAgICAgICAsIExhc3QKLSAgICAgICAgICAgICwgZndkX3N0YXRlNAotICAgICAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgPiBuZXN0ZWRfY2h1bms7Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6OnN0YXRlIGJrd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTQsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX3N0ZXA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX251bGxfc3RlcAotewotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazwgLTEgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICB0eXBlbmFtZSBpc19zYW1lPCBGaXJzdCxMYXN0ID46OnR5cGUKLSAgICAgICAgICAgICwgcmV2ZXJzZV9mb2xkX251bGxfc3RlcDwgTGFzdCxTdGF0ZSA+Ci0gICAgICAgICAgICAsIHJldmVyc2VfZm9sZF9zdGVwPCBGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLSAgICAgICAgICAgID46OnR5cGUgcmVzXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9zdGVwCi17Ci0gICAgdHlwZWRlZiByZXZlcnNlX2ZvbGRfY2h1bms8IC0xID46OnRlbXBsYXRlIHJlc3VsdF88Ci0gICAgICAgICAgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8Rm9yd2FyZE9wLFN0YXRlLCB0eXBlbmFtZSBkZXJlZjxGaXJzdD46OnR5cGU+Ojp0eXBlCi0gICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IG5lc3RlZF9zdGVwOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8Ci0gICAgICAgICAgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjpzdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIGRlcmVmPEZpcnN0Pjo6dHlwZQotICAgICAgICA+Ojp0eXBlIHN0YXRlOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGwKLSAgICA6IHJldmVyc2VfZm9sZF9jaHVuazxOPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTdjYzY4OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjk1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMCBia3dkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUxIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMiBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTIsaXRlcjIgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMyBia3dkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTMsaXRlcjIgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTIsaXRlcjIgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMyxpdGVyMyA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGU0IGJrd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlNCxpdGVyMyA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMyxpdGVyMiA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuawotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMixpdGVyMiA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUzLGl0ZXIzID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAgICAgLCBpdGVyNAotICAgICAgICAgICAgLCBMYXN0Ci0gICAgICAgICAgICAsIGZ3ZF9zdGF0ZTQKLSAgICAgICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgID4gbmVzdGVkX2NodW5rOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjpzdGF0ZSBia3dkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTQsaXRlcjMgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTMsaXRlcjIgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX3N0ZXA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfbnVsbF9zdGVwCi17Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8IC0xID4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgaXNfc2FtZTwgRmlyc3QsTGFzdCA+Ojp0eXBlCi0gICAgICAgICAgICAsIHJldmVyc2VfaXRlcl9mb2xkX251bGxfc3RlcDwgTGFzdCxTdGF0ZSA+Ci0gICAgICAgICAgICAsIHJldmVyc2VfaXRlcl9mb2xkX3N0ZXA8IEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotICAgICAgICAgICAgPjo6dHlwZSByZXNfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfc3RlcAotewotICAgIHR5cGVkZWYgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8IC0xID46OnRlbXBsYXRlIHJlc3VsdF88Ci0gICAgICAgICAgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxTdGF0ZSxGaXJzdCA+Ojp0eXBlCi0gICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IG5lc3RlZF9zdGVwOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8Ci0gICAgICAgICAgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjpzdGF0ZQotICAgICAgICAsIEZpcnN0Ci0gICAgICAgID46OnR5cGUgc3RhdGU7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsCi0gICAgOiByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazxOPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3NldC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3NldC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4NGQ1M2UuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9zZXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTU2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NldC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IHNldF9jaG9vc2VyOwotCi19Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBzZXQwPAotICAgICAgICAgICAgIAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTwKLSAgICAgICAgICAgICAgVDAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDI8Ci0gICAgICAgICAgICAgIFQwLCBUMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3Nlcjw1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDU8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3Nlcjw4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDg8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0OTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDEwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEwPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDExPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDExPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8MTI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTI8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDEzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEzPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDE0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE0PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8MTU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTU8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDE2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE2PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDE3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE3PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8MTg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTg8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDE5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE5PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDIwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDIwPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgaXNfc2V0X2FyZwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc19zZXRfYXJnPG5hPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMAotICAgICwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUKLSAgICAsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwCi0gICAgPgotc3RydWN0IHNldF9jb3VudF9hcmdzCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPQotICAgICAgICAgIGlzX3NldF9hcmc8VDE+Ojp2YWx1ZSArIGlzX3NldF9hcmc8VDI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQzPjo6dmFsdWUgKyBpc19zZXRfYXJnPFQ0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2FyZzxUNT46OnZhbHVlICsgaXNfc2V0X2FyZzxUNj46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9hcmc8VDc+Ojp2YWx1ZSArIGlzX3NldF9hcmc8VDg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQ5Pjo6dmFsdWUgKyBpc19zZXRfYXJnPFQxMD46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9hcmc8VDExPjo6dmFsdWUgKyBpc19zZXRfYXJnPFQxMj46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9hcmc8VDEzPjo6dmFsdWUgKyBpc19zZXRfYXJnPFQxND46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9hcmc8VDE1Pjo6dmFsdWUgKyBpc19zZXRfYXJnPFQxNj46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9hcmc8VDE3Pjo6dmFsdWUgKyBpc19zZXRfYXJnPFQxOD46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9hcmc8VDE5Pjo6dmFsdWUgKyBpc19zZXRfYXJnPFQyMD46OnZhbHVlCi0gICAgICAgICk7Ci0KLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBzZXRfaW1wbAotewotICAgIHR5cGVkZWYgYXV4OjpzZXRfY291bnRfYXJnczwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4gYXJnX251bV87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6c2V0X2Nob29zZXI8IGFyZ19udW1fOjp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IHNldAotICAgIDogYXV4OjpzZXRfaW1wbDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID46OnR5cGUKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6c2V0X2ltcGw8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3NldF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvc2V0X2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYjVmMmFiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvc2V0X2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTM0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NldF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBpbnQgTiA+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjsKLQotfQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQwX2M8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MV9jPAotICAgICAgICAgICAgICBULCBDMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQzX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8NT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ1X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8Nj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ2X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0N19jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8OD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ4X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8OT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ5X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDEwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEwX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxMT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxMj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMl9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDEzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEzX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxNT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDE2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE2X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxNz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxN19jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxOD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDE5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE5X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwyMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyMF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgbG9uZyBDID4KLXN0cnVjdCBpc19zZXRfY19hcmcKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfc2V0X2NfYXJnPExPTkdfTUFYPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgKLSAgICAsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUKLSAgICAsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5LCBsb25nIEMyMAotICAgID4KLXN0cnVjdCBzZXRfY19jb3VudF9hcmdzCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPQotICAgICAgICAgIGlzX3NldF9jX2FyZzxDMT46OnZhbHVlICsgaXNfc2V0X2NfYXJnPEMyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2NfYXJnPEMzPjo6dmFsdWUgKyBpc19zZXRfY19hcmc8QzQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfY19hcmc8QzU+Ojp2YWx1ZSArIGlzX3NldF9jX2FyZzxDNj46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9jX2FyZzxDNz46OnZhbHVlICsgaXNfc2V0X2NfYXJnPEM4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2NfYXJnPEM5Pjo6dmFsdWUgKyBpc19zZXRfY19hcmc8QzEwPjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2NfYXJnPEMxMT46OnZhbHVlICsgaXNfc2V0X2NfYXJnPEMxMj46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9jX2FyZzxDMTM+Ojp2YWx1ZSArIGlzX3NldF9jX2FyZzxDMTQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfY19hcmc8QzE1Pjo6dmFsdWUgKyBpc19zZXRfY19hcmc8QzE2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2NfYXJnPEMxNz46OnZhbHVlICsgaXNfc2V0X2NfYXJnPEMxOD46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9jX2FyZzxDMTk+Ojp2YWx1ZSArIGlzX3NldF9jX2FyZzxDMjA+Ojp2YWx1ZQotICAgICAgICApOwotCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgPgotc3RydWN0IHNldF9jX2ltcGwKLXsKLSAgICB0eXBlZGVmIGF1eDo6c2V0X2NfY291bnRfYXJnczwKLSAgICAgICAgICBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID4gYXJnX251bV87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6c2V0X2NfY2hvb3NlcjwgYXJnX251bV86OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2MKLSAgICA6IGF1eDo6c2V0X2NfaW1wbDwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID46OnR5cGUKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6c2V0X2NfaW1wbDwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvc2hpZnRfbGVmdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3NoaWZ0X2xlZnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YjU2NzU5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvc2hpZnRfbGVmdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zaGlmdF9sZWZ0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgc2hpZnRfbGVmdF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgc2hpZnRfbGVmdF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHNoaWZ0X2xlZnRfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IHNoaWZ0X2xlZnQKLQotICAgIDogc2hpZnRfbGVmdF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHNoaWZ0X2xlZnRfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIHNoaWZ0X2xlZnRfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgc2hpZnRfbGVmdCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgc2hpZnRfbGVmdCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4sIHR5cGVuYW1lIFMgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIE46OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlCi0gICAgICAgICAgICAgICAgICA8PCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoUyk6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvc2hpZnRfcmlnaHQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9zaGlmdF9yaWdodC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4ZGMwZGIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9zaGlmdF9yaWdodC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zaGlmdF9yaWdodC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBzaGlmdF9yaWdodF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgc2hpZnRfcmlnaHRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBzaGlmdF9yaWdodF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHQKLQotICAgIDogc2hpZnRfcmlnaHRfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBzaGlmdF9yaWdodF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgc2hpZnRfcmlnaHRfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgc2hpZnRfcmlnaHQsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIHNoaWZ0X3JpZ2h0KQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4sIHR5cGVuYW1lIFMgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIE46OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlCi0gICAgICAgICAgICAgICAgICA+PiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoUyk6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdGVtcGxhdGVfYXJpdHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy90ZW1wbGF0ZV9hcml0eS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1MDU3OGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy90ZW1wbGF0ZV9hcml0eS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL3RlbXBsYXRlX2FyaXR5LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGJvb2wgPgotc3RydWN0IHRlbXBsYXRlX2FyaXR5X2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogbXBsOjppbnRfPCAtMSA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHlfaW1wbDx0cnVlPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBGOjphcml0eQotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYgPgotc3RydWN0IHRlbXBsYXRlX2FyaXR5Ci0gICAgOiB0ZW1wbGF0ZV9hcml0eV9pbXBsPCA6Om5kbmJvb3N0OjptcGw6OmF1eDo6aGFzX3JlYmluZDxGPjo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Rj4KLXsKLX07Ci0KLX19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3RpbWVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdGltZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Yzk5ZTY3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdGltZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTMzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3RpbWVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgdGltZXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHRpbWVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCB0aW1lc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHRpbWVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCB0aW1lc19pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgdGltZXNfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHRpbWVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCB0aW1lczI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IHRpbWVzCi0KLSAgICA6IGlmXzwKLQotICAgICAgICAgIGlzX25hPE4zPgotICAgICAgICAsIHRpbWVzMjwgTjEsTjIgPgotICAgICAgICAsIHRpbWVzPAotICAgICAgICAgICAgICB0aW1lczI8IE4xLE4yID4KLSAgICAgICAgICAgICwgTjMsIE40LCBONQotICAgICAgICAgICAgPgotICAgICAgICA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMQotICAgICwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgdGltZXMyCi0gICAgOiB0aW1lc19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHRpbWVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSB0aW1lc190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCB0aW1lczIsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIHRpbWVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCB0aW1lc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgKiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3VucGFja19hcmdzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdW5wYWNrX2FyZ3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkY2RiNDZlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdW5wYWNrX2FyZ3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3VucGFja19hcmdzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgc2l6ZSkgPiBzdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwwPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXBwbHkwPAotICAgICAgICAgICAgICBGCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPDE+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhcHBseTE8Ci0gICAgICAgICAgICAgIEYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHVucGFja19hcmdzX2ltcGw8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGFwcGx5MjwKLSAgICAgICAgICAgICAgRgotICAgICAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHVucGFja19hcmdzX2ltcGw8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGFwcGx5MzwKLSAgICAgICAgICAgICAgRgotICAgICAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywyID46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHVucGFja19hcmdzX2ltcGw8ND4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGFwcGx5NDwKLSAgICAgICAgICAgICAgRgotICAgICAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywyID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMyA+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPDU+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhcHBseTU8Ci0gICAgICAgICAgICAgIEYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDMgPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDQgPjo6dHlwZQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3MKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQXJncyA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYXV4Ojp1bnBhY2tfYXJnc19pbXBsPCBzaXplPEFyZ3M+Ojp2YWx1ZSA+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIGFwcGx5PCBGLEFyZ3MgPgotCi0gICAgewotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX1BBU1NfVEhST1VHSF9MQU1CREFfU1BFQygxLCB1bnBhY2tfYXJncykKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhY2I2NzA0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjsKLQotfQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDwKLSAgICAgICAgICAgICAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE8Ci0gICAgICAgICAgICAgIFQwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyPAotICAgICAgICAgICAgICBUMCwgVDEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjM8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3Nlcjw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjQ8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8NT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3Nlcjw2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjY8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3Nlcjw3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjc8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8OD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3Nlcjw5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjk8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwxMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwxMT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDEyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEyPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwxMz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwxND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDE1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwxNj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwxNz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDE4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwxOT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwyMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGlzX3ZlY3Rvcl9hcmcKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfdmVjdG9yX2FyZzxuYT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAKLSAgICAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1Ci0gICAgLCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMAotICAgID4KLXN0cnVjdCB2ZWN0b3JfY291bnRfYXJncwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0KLSAgICAgICAgICBpc192ZWN0b3JfYXJnPFQxPjo6dmFsdWUgKyBpc192ZWN0b3JfYXJnPFQyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2FyZzxUMz46OnZhbHVlICsgaXNfdmVjdG9yX2FyZzxUND46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9hcmc8VDU+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9hcmc8VDY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfYXJnPFQ3Pjo6dmFsdWUgKyBpc192ZWN0b3JfYXJnPFQ4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2FyZzxUOT46OnZhbHVlICsgaXNfdmVjdG9yX2FyZzxUMTA+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfYXJnPFQxMT46OnZhbHVlICsgaXNfdmVjdG9yX2FyZzxUMTI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfYXJnPFQxMz46OnZhbHVlICsgaXNfdmVjdG9yX2FyZzxUMTQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfYXJnPFQxNT46OnZhbHVlICsgaXNfdmVjdG9yX2FyZzxUMTY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfYXJnPFQxNz46OnZhbHVlICsgaXNfdmVjdG9yX2FyZzxUMTg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfYXJnPFQxOT46OnZhbHVlICsgaXNfdmVjdG9yX2FyZzxUMjA+Ojp2YWx1ZQotICAgICAgICApOwotCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2ltcGwKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX2NvdW50X2FyZ3M8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+IGFyZ19udW1fOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZlY3Rvcl9jaG9vc2VyPCBhcmdfbnVtXzo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCB2ZWN0b3IKLSAgICA6IGF1eDo6dmVjdG9yX2ltcGw8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ojp0eXBlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZlY3Rvcl9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3JfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3Rvcl9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzY1NGM2Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3Rvcl9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzNCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3JfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI7Ci0KLX0KLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMF9jPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjFfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMl9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yM19jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3Nlcjw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjRfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMykKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNV9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNl9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3Nlcjw3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjdfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNikKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOF9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNykKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOV9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwxMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMF9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8MTE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTFfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8MTI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTJfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwxMz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxM19jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8MTQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTRfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8MTU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTVfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwxNj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNl9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8MTc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTdfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8MTg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMThfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwxOT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOV9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNyksIFQoQzE4KQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8MjA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjBfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCksIFQoQzE5KQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGxvbmcgQyA+Ci1zdHJ1Y3QgaXNfdmVjdG9yX2NfYXJnCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IHRydWUpOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX3ZlY3Rvcl9jX2FyZzxMT05HX01BWD4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1LCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgLCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1Ci0gICAgLCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOSwgbG9uZyBDMjAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2NfY291bnRfYXJncwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0KLSAgICAgICAgICBpc192ZWN0b3JfY19hcmc8QzE+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9jX2FyZzxDMj46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9jX2FyZzxDMz46OnZhbHVlICsgaXNfdmVjdG9yX2NfYXJnPEM0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2NfYXJnPEM1Pjo6dmFsdWUgKyBpc192ZWN0b3JfY19hcmc8QzY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfY19hcmc8Qzc+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9jX2FyZzxDOD46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9jX2FyZzxDOT46OnZhbHVlICsgaXNfdmVjdG9yX2NfYXJnPEMxMD46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9jX2FyZzxDMTE+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9jX2FyZzxDMTI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfY19hcmc8QzEzPjo6dmFsdWUgKyBpc192ZWN0b3JfY19hcmc8QzE0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2NfYXJnPEMxNT46OnZhbHVlICsgaXNfdmVjdG9yX2NfYXJnPEMxNj46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9jX2FyZzxDMTc+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9jX2FyZzxDMTg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfY19hcmc8QzE5Pjo6dmFsdWUgKyBpc192ZWN0b3JfY19hcmc8QzIwPjo6dmFsdWUKLSAgICAgICAgKTsKLQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgID4KLXN0cnVjdCB2ZWN0b3JfY19pbXBsCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl9jX2NvdW50X2FyZ3M8Ci0gICAgICAgICAgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+IGFyZ19udW1fOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZlY3Rvcl9jX2Nob29zZXI8IGFyZ19udW1fOjp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCA9IExPTkdfTUFYLCBsb25nIEMxID0gTE9OR19NQVgsIGxvbmcgQzIgPSBMT05HX01BWAotICAgICwgbG9uZyBDMyA9IExPTkdfTUFYLCBsb25nIEM0ID0gTE9OR19NQVgsIGxvbmcgQzUgPSBMT05HX01BWAotICAgICwgbG9uZyBDNiA9IExPTkdfTUFYLCBsb25nIEM3ID0gTE9OR19NQVgsIGxvbmcgQzggPSBMT05HX01BWAotICAgICwgbG9uZyBDOSA9IExPTkdfTUFYLCBsb25nIEMxMCA9IExPTkdfTUFYLCBsb25nIEMxMSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxMiA9IExPTkdfTUFYLCBsb25nIEMxMyA9IExPTkdfTUFYLCBsb25nIEMxNCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxNSA9IExPTkdfTUFYLCBsb25nIEMxNiA9IExPTkdfTUFYLCBsb25nIEMxNyA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxOCA9IExPTkdfTUFYLCBsb25nIEMxOSA9IExPTkdfTUFYCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jCi0gICAgOiBhdXg6OnZlY3Rvcl9jX2ltcGw8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ojp0eXBlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZlY3Rvcl9jX2ltcGw8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYWR2YW5jZV9iYWNrd2FyZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYWR2YW5jZV9iYWNrd2FyZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlMGM4MjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2FkdmFuY2VfYmFja3dhcmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9hZHZhbmNlX2JhY2t3YXJkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGxvbmcgTiA+IHN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkOwotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8MD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8MT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDI+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8ND4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICB0eXBlZGVmIGl0ZXI0IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfYmFja3dhcmQ8ND4KLSAgICAgICAgICAgICwgSXRlcmF0b3IKLSAgICAgICAgICAgID46OnR5cGUgY2h1bmtfcmVzdWx0XzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2JhY2t3YXJkPCgKLSAgICAgICAgICAgICAgICAoTiAtIDQpIDwgMAotICAgICAgICAgICAgICAgICAgICA/IDAKLSAgICAgICAgICAgICAgICAgICAgOiBOIC0gNAotICAgICAgICAgICAgICAgICAgICApPgotICAgICAgICAgICAgLCBjaHVua19yZXN1bHRfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYWR2YW5jZV9mb3J3YXJkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9hZHZhbmNlX2ZvcndhcmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2E1YWZkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9hZHZhbmNlX2ZvcndhcmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9hZHZhbmNlX2ZvcndhcmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgbG9uZyBOID4gc3RydWN0IGFkdmFuY2VfZm9yd2FyZDsKLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8MD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwxPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDI+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDw0PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfZm9yd2FyZDw0PgotICAgICAgICAgICAgLCBJdGVyYXRvcgotICAgICAgICAgICAgPjo6dHlwZSBjaHVua19yZXN1bHRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfZm9yd2FyZDwoCi0gICAgICAgICAgICAgICAgKE4gLSA0KSA8IDAKLSAgICAgICAgICAgICAgICAgICAgPyAwCi0gICAgICAgICAgICAgICAgICAgIDogTiAtIDQKLSAgICAgICAgICAgICAgICAgICAgKT4KLSAgICAgICAgICAgICwgY2h1bmtfcmVzdWx0XwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19fX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2FuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWMxYjk1YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FuZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBib29sIENfLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCA+Ci1zdHJ1Y3QgYW5kX2ltcGwKLSAgICA6IGZhbHNlXwotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0ID4KLXN0cnVjdCBhbmRfaW1wbDwgdHJ1ZSxUMSxUMixUMyxUNCA+Ci0gICAgOiBhbmRfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAsIFQyLCBUMywgVDQKLSAgICAgICAgLCB0cnVlXwotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYW5kX2ltcGw8Ci0gICAgICAgICAgdHJ1ZQotICAgICAgICAsIHRydWVfLCB0cnVlXywgdHJ1ZV8sIHRydWVfCi0gICAgICAgID4KLSAgICA6IHRydWVfCi17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICAsIHR5cGVuYW1lIFQzID0gdHJ1ZV8sIHR5cGVuYW1lIFQ0ID0gdHJ1ZV8sIHR5cGVuYW1lIFQ1ID0gdHJ1ZV8KLSAgICA+Ci1zdHJ1Y3QgYW5kXwotCi0gICAgOiBhdXg6OmFuZF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPgotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYW5kXwotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKAotICAgICAgMgotICAgICwgNQotICAgICwgYW5kXwotICAgICkKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9hcHBseS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYXBwbHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MGY3MmIwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9hcHBseS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXBwbHkuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseTAKLQotICAgIDogYXBwbHlfd3JhcDA8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDEKLSAgICAgICAgLCBhcHBseTAKLSAgICAgICAgLCAoRiApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseTwgRixuYSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBhcHBseTA8Rj4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkxCi0KLSAgICA6IGFwcGx5X3dyYXAxPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDIKLSAgICAgICAgLCBhcHBseTEKLSAgICAgICAgLCAoRiwgVDEpCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsbmEsbmEsbmEsbmEgPgotICAgIDogYXBwbHkxPCBGLFQxID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5MgotCi0gICAgOiBhcHBseV93cmFwMjwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMwotICAgICAgICAsIGFwcGx5MgotICAgICAgICAsIChGLCBUMSwgVDIpCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5PCBGLFQxLFQyLG5hLG5hLG5hID4KLSAgICA6IGFwcGx5MjwgRixUMSxUMiA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkzCi0KLSAgICA6IGFwcGx5X3dyYXAzPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNAotICAgICAgICAsIGFwcGx5MwotICAgICAgICAsIChGLCBUMSwgVDIsIFQzKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsVDIsVDMsbmEsbmEgPgotICAgIDogYXBwbHkzPCBGLFQxLFQyLFQzID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk0Ci0KLSAgICA6IGFwcGx5X3dyYXA0PAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBhcHBseTQKLSAgICAgICAgLCAoRiwgVDEsIFQyLCBUMywgVDQpCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsVDIsVDMsVDQsbmEgPgotICAgIDogYXBwbHk0PCBGLFQxLFQyLFQzLFQ0ID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5NQotCi0gICAgOiBhcHBseV93cmFwNTwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNgotICAgICAgICAsIGFwcGx5NQotICAgICAgICAsIChGLCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5Ci0gICAgOiBhcHBseTU8IEYsVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2FwcGx5X2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYXBwbHlfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmNjYzk0ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYXBwbHlfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FwcGx5X2Z3ZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hCi0gICAgPgotc3RydWN0IGFwcGx5OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5MTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkzOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5NDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk1OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYXBwbHlfd3JhcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYXBwbHlfd3JhcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjOTAyMDIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2FwcGx5X3dyYXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXBwbHlfd3JhcC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0KLSAgICAsIHR5cGVuYW1lIGhhc19hcHBseV8gPSB0eXBlbmFtZSBhdXg6Omhhc19hcHBseTxGPjo6dHlwZQotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAwCi0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PCAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYgPgotc3RydWN0IGFwcGx5X3dyYXAwPCBGLHRydWVfID4KLSAgICA6IEY6OmFwcGx5Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDEKLQotICAgIDogRjo6dGVtcGxhdGUgYXBwbHk8VDE+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAyCi0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PCBUMSxUMiA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMwotCi0gICAgOiBGOjp0ZW1wbGF0ZSBhcHBseTwgVDEsVDIsVDMgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXA0Ci0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PCBUMSxUMixUMyxUNCA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXA1Ci0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PCBUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYXJnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9hcmcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTQ0NzZhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9hcmcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEtMjAwMgotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FyZy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8IC0xID4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAtMSk7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUxIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDE+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMSk7Ci0gICAgdHlwZWRlZiBhcmc8Mj4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTEgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8Mj4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAyKTsKLSAgICB0eXBlZGVmIGFyZzwzPiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMiB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwzPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDMpOwotICAgIHR5cGVkZWYgYXJnPDQ+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUzIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDQ+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gNCk7Ci0gICAgdHlwZWRlZiBhcmc8NT4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTQgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8NT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSA1KTsKLSAgICB0eXBlZGVmIGFyZzw2PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVNSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTk9OVFlQRV9BUklUWV9TUEVDKDEsaW50LCBhcmcpCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYmFzaWNfYmluZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYmFzaWNfYmluZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwZjRjNGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2Jhc2ljX2JpbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzY5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2Jhc2ljX2JpbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnCi17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwgYXJnPE4+LCBVMSwgVTIsIFUzLCBVNCwgVTUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8bXBsOjphcmc8Tj4sIFUxLCBVMiwgVTMsIFU0LCBVNT46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUgPgotewotICAgIHR5cGVkZWYgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDAKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQwPEY+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMDxGPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDEsIGJpbmQwKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDEsIGJpbmQwKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixuYSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMDxGPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kMQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMwotICAgICwgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMTwgRixUMSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMTwgRixUMSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMiwgYmluZDEpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMiwgYmluZDEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMTwgRixUMSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kMgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyCi0gICAgLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMjwgRixUMSxUMiA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMjwgRixUMSxUMiA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMywgYmluZDIpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMywgYmluZDIpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsVDIsbmEsbmEsbmEgPgotICAgIDogYmluZDI8IEYsVDEsVDIgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBVMQotICAgICwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQzPCBGLFQxLFQyLFQzID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQzPCBGLFQxLFQyLFQzID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg0LCBiaW5kMykKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg0LCBiaW5kMykKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsVDIsVDMsbmEsbmEgPgotICAgIDogYmluZDM8IEYsVDEsVDIsVDMgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kNAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLFQyLFQzLFQ0LG5hID4KLSAgICA6IGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQ1Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQ0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUNSxVMSxVMixVMyxVNCxVNSA+IHQ1OwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZSwgdHlwZW5hbWUgdDU6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDYsIGJpbmQ1KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDYsIGJpbmQ1KQotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kCi0gICAgOiBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYmluZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYmluZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyMzQ0NjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2JpbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDY2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZwotewotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBBcmcKLSAgICA+Ci1zdHJ1Y3QgcmVwbGFjZV91bm5hbWVkX2FyZwotewotICAgIHR5cGVkZWYgQXJnIG5leHQ7Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEFyZwotICAgID4KLXN0cnVjdCByZXBsYWNlX3VubmFtZWRfYXJnPCBhcmc8IC0xID4sIEFyZyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBBcmc6Om5leHQgbmV4dDsKLSAgICB0eXBlZGVmIEFyZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8IGFyZzxOPiwgVTEsIFUyLCBVMywgVTQsIFU1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PG1wbDo6YXJnPE4+LCBVMSwgVTIsIFUzLCBVNCwgVTU+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8IGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPiwgVTEsIFUyLCBVMywgVTQsIFU1ID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQwCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAwPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDA8Rj4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQwPEY+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMSwgYmluZDApCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMSwgYmluZDApCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBiaW5kPCBGLG5hLG5hLG5hLG5hLG5hID4KLSAgICA6IGJpbmQwPEY+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGJpbmQxCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzCi0gICAgLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQxPCBGLFQxID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQxPCBGLFQxID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygyLCBiaW5kMSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygyLCBiaW5kMSkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLG5hLG5hLG5hLG5hID4KLSAgICA6IGJpbmQxPCBGLFQxID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQyCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMgotICAgICwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDI8IEYsVDEsVDIgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDI8IEYsVDEsVDIgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDMsIGJpbmQyKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDMsIGJpbmQyKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLFQyLG5hLG5hLG5hID4KLSAgICA6IGJpbmQyPCBGLFQxLFQyID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMwotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMzwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFUxCi0gICAgLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDM8IEYsVDEsVDIsVDMgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDM8IEYsVDEsVDIsVDMgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDQsIGJpbmQzKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDQsIGJpbmQzKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxUMixUMyxuYSxuYSA+Ci0gICAgOiBiaW5kMzwgRixUMSxUMixUMyA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGJpbmQ0Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ0LG40ID4gcjQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6OnR5cGUgYTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6Om5leHQgbjU7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA0PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDQ8IEYsVDEsVDIsVDMsVDQgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDQ8IEYsVDEsVDIsVDMsVDQgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDUsIGJpbmQ0KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDUsIGJpbmQ0KQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsVDIsVDMsVDQsbmEgPgotICAgIDogYmluZDQ8IEYsVDEsVDIsVDMsVDQgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZDUKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDQsbjQgPiByNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6dHlwZSBhNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6bmV4dCBuNTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGE0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDUsbjUgPiByNTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNTo6dHlwZSBhNTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNTo6bmV4dCBuNjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGE1LFUxLFUyLFUzLFU0LFU1ID4gdDU7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUsIHR5cGVuYW1lIHQ1Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZAotICAgIDogYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2JpbmRfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9iaW5kX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhMDQ2ZWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2JpbmRfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpbmRfZndkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYmluZDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGJpbmQxOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kMjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGJpbmQ0OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kNTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2JpdGFuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYml0YW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDA1NDJiNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYml0YW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaXRhbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBiaXRhbmRfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGJpdGFuZF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgYml0YW5kX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0YW5kX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdGFuZF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0YW5kX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0YW5kX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBiaXRhbmRfCi0gICAgOiBiaXRhbmRfPCBiaXRhbmRfPCBiaXRhbmRfPCBiaXRhbmRfPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0YW5kXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBiaXRhbmRfPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IGJpdGFuZF88IGJpdGFuZF88IGJpdGFuZF88IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRhbmRfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXzwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBiaXRhbmRfPCBiaXRhbmRfPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdGFuZF8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGJpdGFuZF88IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IGJpdGFuZF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGJpdGFuZF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYml0YW5kX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdGFuZF8KLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXRhbmRfKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgVCBuMSwgVCBuMiA+Ci1zdHJ1Y3QgYml0YW5kX3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgID0gKG4xICYgbjIpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYml0YW5kX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4OjpiaXRhbmRfd2tuZDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgTjE6OnZhbHVlCi0gICAgICAgICAgICAsIE4yOjp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZQotCi0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2JpdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9iaXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0ODg0ZGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2JpdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaXRvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGJpdG9yX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBiaXRvcl9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgYml0b3JfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBiaXRvcl9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXRvcl9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0b3JfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBiaXRvcl90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfCi0gICAgOiBiaXRvcl88IGJpdG9yXzwgYml0b3JfPCBiaXRvcl88IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IGJpdG9yXzwgYml0b3JfPCBiaXRvcl88IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBiaXRvcl88IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogYml0b3JfPCBiaXRvcl88IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBiaXRvcl88IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IGJpdG9yX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgYml0b3JfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGJpdG9yX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdG9yXwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGJpdG9yXykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIFQgbjEsIFQgbjIgPgotc3RydWN0IGJpdG9yX3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgID0gKG4xIHwgbjIpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYml0b3JfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhdXg6OmJpdG9yX3drbmQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsIE4xOjp2YWx1ZQotICAgICAgICAgICAgLCBOMjo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUKLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9iaXR4b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2JpdHhvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzOTJlMmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2JpdHhvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYml0eG9yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBiaXR4b3JfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdHhvcl9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGJpdHhvcl9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXR4b3JfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdHhvcl9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGJpdHhvcl90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXwotICAgIDogYml0eG9yXzwgYml0eG9yXzwgYml0eG9yXzwgYml0eG9yXzwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdHhvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXzwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBiaXR4b3JfPCBiaXR4b3JfPCBiaXR4b3JfPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0eG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IGJpdHhvcl88IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogYml0eG9yXzwgYml0eG9yXzwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXR4b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBiaXR4b3JfPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBiaXR4b3JfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBiaXR4b3JfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGJpdHhvcl90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXR4b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgYml0eG9yXykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIFQgbjEsIFQgbjIgPgotc3RydWN0IGJpdHhvcl93a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlICA9IChuMSBeIG4yKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGJpdHhvcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGF1eDo6Yml0eG9yX3drbmQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsIE4xOjp2YWx1ZQotICAgICAgICAgICAgLCBOMjo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUKLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9kZXF1ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvZGVxdWUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NjMxZjY2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9kZXF1ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZGVxdWUuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IwPCAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMDwgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMzwgVDAsVDEsVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMzwgVDAsVDEsVDIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNjwgVDAsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxODwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBkZXF1ZQotICAgIDogdmVjdG9yMjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvZGl2aWRlcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvZGl2aWRlcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmMWUwNGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2RpdmlkZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTU2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2RpdmlkZXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBkaXZpZGVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBkaXZpZGVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBkaXZpZGVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZGl2aWRlc19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBkaXZpZGVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBkaXZpZGVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZGl2aWRlc190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlcwotICAgIDogZGl2aWRlczwgZGl2aWRlczwgZGl2aWRlczwgZGl2aWRlczwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGRpdmlkZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlczwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBkaXZpZGVzPCBkaXZpZGVzPCBkaXZpZGVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IGRpdmlkZXM8IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogZGl2aWRlczwgZGl2aWRlczwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBkaXZpZGVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBkaXZpZGVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBkaXZpZGVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZGl2aWRlc190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZGl2aWRlc190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBkaXZpZGVzCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgZGl2aWRlcykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIFQgbjEsIFQgbjIgPgotc3RydWN0IGRpdmlkZXNfd2tuZAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChULCB2YWx1ZSAgPSAobjEgLyBuMikpOwotICAgIHR5cGVkZWYgaW50ZWdyYWxfYzwgVCx2YWx1ZSA+IHR5cGU7Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkaXZpZGVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4OjpkaXZpZGVzX3drbmQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsIE4xOjp2YWx1ZQotICAgICAgICAgICAgLCBOMjo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUKLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9lcXVhbF90by5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvZXF1YWxfdG8uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMmYxZTJhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9lcXVhbF90by5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9lcXVhbF90by5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGVxdWFsX3RvX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBlcXVhbF90b19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZXF1YWxfdG9faW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBlcXVhbF90b19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBlcXVhbF90b19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZXF1YWxfdG9faW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBlcXVhbF90b190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZXF1YWxfdG8KLQotICAgIDogZXF1YWxfdG9faW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBlcXVhbF90b190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZXF1YWxfdG9fdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgZXF1YWxfdG8sIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGVxdWFsX3RvKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVxdWFsX3RvX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA9PQotICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIHR5cGVkZWYgYm9vbF88dmFsdWU+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTRjZDQxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTgwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgMCxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHN0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDEsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTEgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAyLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMiBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDMsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMyBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDQsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBzdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTQgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbAotewotICAgIHR5cGVkZWYgZm9sZF9pbXBsPAotICAgICAgICAgIDQKLSAgICAgICAgLCBGaXJzdAotICAgICAgICAsIExhc3QKLSAgICAgICAgLCBTdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IGNodW5rXzsKLQotICAgIHR5cGVkZWYgZm9sZF9pbXBsPAotICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6aXRlcmF0b3IKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjpzdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IHJlc187Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgLTEsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotICAgIDogZm9sZF9pbXBsPAotICAgICAgICAgIC0xCi0gICAgICAgICwgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8Rm9yd2FyZE9wLFN0YXRlLCB0eXBlbmFtZSBkZXJlZjxGaXJzdD46OnR5cGU+Ojp0eXBlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IC0xLExhc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvZnVsbF9sYW1iZGEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2Z1bGxfbGFtYmRhLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2RhOTcxZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvZnVsbF9sYW1iZGEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTU0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vZnVsbF9sYW1iZGEuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIGJvb2wgQzEgPSBmYWxzZSwgYm9vbCBDMiA9IGZhbHNlLCBib29sIEMzID0gZmFsc2UsIGJvb2wgQzQgPSBmYWxzZQotICAgICwgYm9vbCBDNSA9IGZhbHNlCi0gICAgPgotc3RydWN0IGxhbWJkYV9vcgotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsYW1iZGFfb3I8IGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlID4KLSAgICA6IGZhbHNlXwotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhCi17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBUIHJlc3VsdF87Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgaXNfbGFtYmRhX2V4cHJlc3Npb24KLSAgICA6IGxhbWJkYTxUPjo6aXNfbGUKLXsKLX07Ci0KLXRlbXBsYXRlPCBpbnQgTiwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBsYW1iZGE8IGFyZzxOPiwgVGFnID4KLXsKLSAgICB0eXBlZGVmIHRydWVfIGlzX2xlOwotICAgIHR5cGVkZWYgbXBsOjphcmc8Tj4gcmVzdWx0XzsgLy8gcXVhbGlmaWVkIGZvciB0aGUgc2FrZSBvZiBNSVBTcHJvIDcuNDEKLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQwPEY+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQwPAotICAgICAgICAgIEYKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDEKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MTwgdHJ1ZV8sVGFnLEYsTDEgPgotewotICAgIHR5cGVkZWYgYmluZDE8Ci0gICAgICAgICAgcXVvdGUxPCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8VDE+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDE8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQxPCBGLFQxID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDE8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDIKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MjwgdHJ1ZV8sVGFnLEYsTDEsTDIgPgotewotICAgIHR5cGVkZWYgYmluZDI8Ci0gICAgICAgICAgcXVvdGUyPCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8IFQxLFQyID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDI8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyCi0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDI8IEYsVDEsVDIgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMjwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MwotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUsIHR5cGVuYW1lIEwzOjp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMwotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQzPCB0cnVlXyxUYWcsRixMMSxMMixMMyA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMzwKLSAgICAgICAgICBxdW90ZTM8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XywgdHlwZW5hbWUgTDI6OnJlc3VsdF8sIHR5cGVuYW1lIEwzOjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIsVDMgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDMsVGFnID4gbDM7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUsIGlzX2xlMzo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQzPAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMiwgbDMKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDM8IEYsVDEsVDIsVDMgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMzwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEsIFQyLCBUMwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMywgdHlwZW5hbWUgTDQKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NAotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUsIHR5cGVuYW1lIEwzOjp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMywgdHlwZW5hbWUgTDQKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NDwgdHJ1ZV8sVGFnLEYsTDEsTDIsTDMsTDQgPgotewotICAgIHR5cGVkZWYgYmluZDQ8Ci0gICAgICAgICAgcXVvdGU0PCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfLCB0eXBlbmFtZSBMMzo6cmVzdWx0XwotICAgICAgICAsIHR5cGVuYW1lIEw0OjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMixUMyxUNCA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQyLFRhZyA+IGwyOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMyxUYWcgPiBsMzsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDQsVGFnID4gbDQ7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlLCBpc19sZTI6OnZhbHVlLCBpc19sZTM6OnZhbHVlLCBpc19sZTQ6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0NDwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMSwgbDIsIGwzLCBsNAotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDQ8IEYsVDEsVDIsVDMsVDQgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kNDwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgUDUgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzLCB0eXBlbmFtZSBMNCwgdHlwZW5hbWUgTDUKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NQotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUsIHR5cGVuYW1lIEwzOjp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnR5cGUsIHR5cGVuYW1lIEw1Ojp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgUDUgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzLCB0eXBlbmFtZSBMNCwgdHlwZW5hbWUgTDUKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NTwgdHJ1ZV8sVGFnLEYsTDEsTDIsTDMsTDQsTDUgPgotewotICAgIHR5cGVkZWYgYmluZDU8Ci0gICAgICAgICAgcXVvdGU1PCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfLCB0eXBlbmFtZSBMMzo6cmVzdWx0XwotICAgICAgICAsIHR5cGVuYW1lIEw0OjpyZXN1bHRfLCB0eXBlbmFtZSBMNTo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQKLSAgICAgICAgLCB0eXBlbmFtZSBQNQotICAgICAgICA+Ci0gICAgICBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIsVDMsVDQsVDUgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDMsVGFnID4gbDM7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQ0LFRhZyA+IGw0OwotICAgIHR5cGVkZWYgbGFtYmRhPCBUNSxUYWcgPiBsNTsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsNTo6aXNfbGUgaXNfbGU1OwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlLCBpc19sZTI6OnZhbHVlLCBpc19sZTM6OnZhbHVlLCBpc19sZTQ6OnZhbHVlCi0gICAgICAgICwgaXNfbGU1Ojp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDU8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyLCBsMywgbDQsIGw1Ci0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kNTwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotLy8vIHNwZWNpYWwgY2FzZSBmb3IgJ3Byb3RlY3QnCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBsYW1iZGE8IG1wbDo6cHJvdGVjdDxUPiwgVGFnID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxUPiByZXN1bHRfOwotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotLy8vIHNwZWNpYWxpemF0aW9ucyBmb3IgdGhlIG1haW4gJ2JpbmQnIGZvcm0KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPiByZXN1bHRfOwotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotLy8vIHdvcmthcm91bmQgZm9yIE1XQ1cgOC4zKy9FREcgPCAzMDMsIGxlYWRzIHRvIGFtYmlndWl0eSBvbiBEaWdpdGFsIE1hcnMKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcxLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBsYW1iZGE8IEYsVGFnMSA+Ci0gICAgICAgICwgVGFnMgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IEYsVGFnMiA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUYWcxLFRhZzIgPiBsMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTsKLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0Mjxpc19sZSwgVGFnMiwgbXBsOjpsYW1iZGEsIGwxLCBsMj4gbGVfcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygyLCBsYW1iZGEpCi0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9ncmVhdGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9ncmVhdGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTZhMWIzMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvZ3JlYXRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9ncmVhdGVyLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZ3JlYXRlcl9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZ3JlYXRlcl9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGdyZWF0ZXJfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGdyZWF0ZXIKLQotICAgIDogZ3JlYXRlcl9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGdyZWF0ZXJfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGdyZWF0ZXJfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgZ3JlYXRlciwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgZ3JlYXRlcikKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBncmVhdGVyX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA+Ci0gICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKQotICAgICAgICAgICAgKTsKLSAgICAgICAgdHlwZWRlZiBib29sXzx2YWx1ZT4gdHlwZTsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9ncmVhdGVyX2VxdWFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9ncmVhdGVyX2VxdWFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTNlYTZjYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvZ3JlYXRlcl9lcXVhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9ncmVhdGVyX2VxdWFsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZ3JlYXRlcl9lcXVhbF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZ3JlYXRlcl9lcXVhbF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGdyZWF0ZXJfZXF1YWwKLQotICAgIDogZ3JlYXRlcl9lcXVhbF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGdyZWF0ZXJfZXF1YWxfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGdyZWF0ZXJfZXF1YWxfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgZ3JlYXRlcl9lcXVhbCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgZ3JlYXRlcl9lcXVhbCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA+PQotICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIHR5cGVkZWYgYm9vbF88dmFsdWU+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvaW5oZXJpdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvaW5oZXJpdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5N2YzMTMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2luaGVyaXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2luaGVyaXQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgPgotc3RydWN0IGluaGVyaXQyCi0gICAgOiBUMSwgVDIKLXsKLSAgICB0eXBlZGVmIGluaGVyaXQyIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBpbmhlcml0MiwgKFQxLCBUMikpCi19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEgPgotc3RydWN0IGluaGVyaXQyPCBUMSxlbXB0eV9iYXNlID4KLXsKLSAgICB0eXBlZGVmIFQxIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKDIsIGluaGVyaXQyLCAoVDEsIGVtcHR5X2Jhc2UpKQotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQyID4KLXN0cnVjdCBpbmhlcml0MjwgZW1wdHlfYmFzZSxUMiA+Ci17Ci0gICAgdHlwZWRlZiBUMiB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygyLCBpbmhlcml0MiwgKGVtcHR5X2Jhc2UsIFQyKSkKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpbmhlcml0MjwgZW1wdHlfYmFzZSxlbXB0eV9iYXNlID4KLXsKLSAgICB0eXBlZGVmIGVtcHR5X2Jhc2UgdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoMiwgaW5oZXJpdDIsIChlbXB0eV9iYXNlLCBlbXB0eV9iYXNlKSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygyLCBpbmhlcml0MikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgPgotc3RydWN0IGluaGVyaXQzCi0gICAgOiBpbmhlcml0MjwKLSAgICAgICAgICB0eXBlbmFtZSBpbmhlcml0MjwKLSAgICAgICAgICAgICAgVDEsIFQyCi0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgVDMKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMwotICAgICAgICAsIGluaGVyaXQzCi0gICAgICAgICwgKCBUMSwgVDIsIFQzKQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMywgaW5oZXJpdDMpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYSwgdHlwZW5hbWUgVDQgPSBuYQotICAgID4KLXN0cnVjdCBpbmhlcml0NAotICAgIDogaW5oZXJpdDI8Ci0gICAgICAgICAgdHlwZW5hbWUgaW5oZXJpdDM8Ci0gICAgICAgICAgICAgIFQxLCBUMiwgVDMKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgLCBUNAotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA0Ci0gICAgICAgICwgaW5oZXJpdDQKLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoNCwgaW5oZXJpdDQpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYSwgdHlwZW5hbWUgVDQgPSBuYQotICAgICwgdHlwZW5hbWUgVDUgPSBuYQotICAgID4KLXN0cnVjdCBpbmhlcml0NQotICAgIDogaW5oZXJpdDI8Ci0gICAgICAgICAgdHlwZW5hbWUgaW5oZXJpdDQ8Ci0gICAgICAgICAgICAgIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgVDUKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGluaGVyaXQ1Ci0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQyg1LCBpbmhlcml0NSkKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQyID0gZW1wdHlfYmFzZQotICAgICwgdHlwZW5hbWUgVDMgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUNCA9IGVtcHR5X2Jhc2UKLSAgICAsIHR5cGVuYW1lIFQ1ID0gZW1wdHlfYmFzZQotICAgID4KLXN0cnVjdCBpbmhlcml0Ci0gICAgOiBpbmhlcml0NTwgVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGluaGVyaXQ8IG5hLG5hLG5hLG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwKLQotICAgICAgICAgIHR5cGVuYW1lIFQxID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDIgPSBlbXB0eV9iYXNlCi0gICAgICAgICwgdHlwZW5hbWUgVDMgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUNCA9IGVtcHR5X2Jhc2UKLSAgICAgICAgLCB0eXBlbmFtZSBUNSA9IGVtcHR5X2Jhc2UKLQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgICAgIDogaW5oZXJpdDwgVDEsVDIsVDMsVDQsVDUgPgotICAgIHsKLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX0xBTUJEQSg1LCBpbmhlcml0KQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX0FSSVRZKDUsIGluaGVyaXQpCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfVEVNUExBVEVfQVJJVFkoNSwgNSwgaW5oZXJpdCkKLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvaXRlcl9mb2xkX2lmX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzRiZDgzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAxLTIwMDIKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciwgdHlwZW5hbWUgU3RhdGUgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9udWxsX3N0ZXAKLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwgYm9vbCA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZU9wCi0gICAgICAgICwgdHlwZW5hbWUgSXRlcmF0b3JPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBTdGF0ZU9wLFN0YXRlLEl0ZXJhdG9yID46OnR5cGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3JPcDo6dHlwZSBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8ZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlT3AKLSAgICAgICAgLCB0eXBlbmFtZSBJdGVyYXRvck9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICwgdHlwZW5hbWUgUHJlZGljYXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgUHJlZGljYXRlLFN0YXRlLEl0ZXJhdG9yID46OnR5cGUgbm90X2xhc3Q7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKG5vdF9sYXN0KTo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgSXRlcmF0b3IsU3RhdGUsRm9yd2FyZE9wLCBtcGw6Om5leHQ8SXRlcmF0b3I+ID4gaW1wbF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBQcmVkaWNhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgUHJlZGljYXRlLFN0YXRlLEl0ZXJhdG9yID46OnR5cGUgbm90X2xhc3Q7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKG5vdF9sYXN0KTo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgSXRlcmF0b3IsU3RhdGUsQmFja3dhcmRPcCwgaWRlbnRpdHk8SXRlcmF0b3I+ID4gaW1wbF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRQcmVkaWNhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkUHJlZGljYXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9pbXBsCi17Ci0gcHJpdmF0ZToKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9udWxsX3N0ZXA8IEl0ZXJhdG9yLFN0YXRlID4gZm9yd2FyZF9zdGVwMDsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDA6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAwOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwMTsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDE6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAxOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwMjsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDI6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAyOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwMzsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDM6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAzOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwNDsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6Om5vdF9sYXN0Ci0gICAgICAgICwgaXRlcl9mb2xkX2lmX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6Oml0ZXJhdG9yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6OnN0YXRlCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgLCBGb3J3YXJkUHJlZGljYXRlCi0gICAgICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgICAgICwgQmFja3dhcmRQcmVkaWNhdGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjppdGVyYXRvcgotICAgICAgICAgICAgLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjpzdGF0ZQotICAgICAgICAgICAgPgotICAgICAgICA+Ojp0eXBlIGJhY2t3YXJkX3N0ZXA0OwotCi0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMzo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXA0OjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMzsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAyOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDM6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAyOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDE6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMjo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDE7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMDo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAxOjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMDsKLSAgICAKLQotIHB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAwOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXA0OjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2l0ZXJfZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9pdGVyX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjMDhiMzAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2l0ZXJfZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2l0ZXJfZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDAsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiBzdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDEsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTEgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDIsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUyIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAzLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMSxpdGVyMSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTIsaXRlcjIgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTMgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDQsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMixpdGVyMiA+Ojp0eXBlIHN0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTMsaXRlcjMgPjo6dHlwZSBzdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTQgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsCi17Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRmlyc3QKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgU3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBjaHVua187Ci0KLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6aXRlcmF0b3IKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjpzdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IHJlc187Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAtMSxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci0gICAgOiBpdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAtMQotICAgICAgICAsIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsU3RhdGUsRmlyc3QgPjo6dHlwZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IC0xLExhc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvbGFtYmRhX25vX2N0cHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2xhbWJkYV9ub19jdHBzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDVmNWY2Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvbGFtYmRhX25vX2N0cHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjI5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX25vX2N0cHMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIGJvb2wgQzEgPSBmYWxzZSwgYm9vbCBDMiA9IGZhbHNlLCBib29sIEMzID0gZmFsc2UsIGJvb2wgQzQgPSBmYWxzZQotICAgICwgYm9vbCBDNSA9IGZhbHNlCi0gICAgPgotc3RydWN0IGxhbWJkYV9vcgotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsYW1iZGFfb3I8IGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlID4KLSAgICA6IGZhbHNlXwotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEFyaXR5ID4gc3RydWN0IGxhbWJkYV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgdHlwZWRlZiBpc19wbGFjZWhvbGRlcjxUPiBpc19sZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50XzwyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUsIHR5cGVuYW1lIGwzOjp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50Xzw0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmczLCBUYWcsIGZhbHNlXyA+IGwzOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnNCwgVGFnLCBmYWxzZV8gPiBsNDsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTMpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGU0KTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDQ6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc0LCBUYWcsIGZhbHNlXyA+IGw0OwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnNSwgVGFnLCBmYWxzZV8gPiBsNTsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNTo6aXNfbGUgaXNfbGU1OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTQpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGU1KTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDQ6OnR5cGUsIHR5cGVuYW1lIGw1Ojp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICAsIHR5cGVuYW1lIFByb3RlY3QKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhCi17Ci0gICAgLy8vIE1ldGFmdW5jdGlvbiBmb3J3YXJkaW5nIGNvbmZ1c2VzIE1TVkMgNi54Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnRlbXBsYXRlX2FyaXR5PFQ+Ojp0eXBlIGFyaXR5XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX2ltcGw8YXJpdHlfPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQsVGFnLFByb3RlY3QgPiBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbF86OnR5cGUgdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxfOjppc19sZSBpc19sZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDMsIGxhbWJkYSwgKFQsIFRhZywgUHJvdGVjdCkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDEsIDMsIGxhbWJkYSkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IGlzX2xhbWJkYV9leHByZXNzaW9uCi0gICAgOiBsYW1iZGE8VD46OmlzX2xlCi17Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvbGVzcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvbGVzcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhNmYwODguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2xlc3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGVzcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGxlc3NfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGxlc3NfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGxlc3NfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBsZXNzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGxlc3NfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGxlc3NfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBsZXNzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBsZXNzCi0KLSAgICA6IGxlc3NfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBsZXNzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBsZXNzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGxlc3MsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGxlc3MpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGVzc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgPgotICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlICkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIHR5cGVkZWYgYm9vbF88dmFsdWU+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvbGVzc19lcXVhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvbGVzc19lcXVhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhMDZmOTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2xlc3NfZXF1YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGVzc19lcXVhbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGxlc3NfZXF1YWxfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGxlc3NfZXF1YWxfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGxlc3NfZXF1YWxfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBsZXNzX2VxdWFsX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBsZXNzX2VxdWFsCi0KLSAgICA6IGxlc3NfZXF1YWxfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBsZXNzX2VxdWFsX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBsZXNzX2VxdWFsX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGxlc3NfZXF1YWwsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGxlc3NfZXF1YWwpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgPD0KLSAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApCi0gICAgICAgICAgICApOwotICAgICAgICB0eXBlZGVmIGJvb2xfPHZhbHVlPiB0eXBlOwotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2xpc3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2xpc3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Y2M4YzQ2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9saXN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9saXN0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IGxpc3Q7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QwPCAgPgotewotICAgIHR5cGVkZWYgbGlzdDA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTxUMD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QyPCBUMCxUMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MzwgVDAsVDEsVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q0PCBUMCxUMSxUMixUMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q1PCBUMCxUMSxUMixUMyxUNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0NjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0ODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0OTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTY8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE3PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxODwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTk8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IGxpc3QKLSAgICA6IGxpc3QyMDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvbGlzdF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9saXN0X2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDNmMzhmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9saXN0X2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzI4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xpc3RfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QwX2M8VD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QwX2M8VD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDFfYzwgVCxDMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MV9jPCBULEMwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDJfYzwgVCxDMCxDMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0Ml9jPCBULEMwLEMxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMgotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDNfYzwgVCxDMCxDMSxDMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0M19jPCBULEMwLEMxLEMyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMwotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDRfYzwgVCxDMCxDMSxDMixDMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NF9jPCBULEMwLEMxLEMyLEMzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDVfYzwgVCxDMCxDMSxDMixDMyxDNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NV9jPCBULEMwLEMxLEMyLEMzLEM0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0Nl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNgotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0N19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNwotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0OF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0OV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDEwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDExX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxMl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEyX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDEzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMwotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTRfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTVfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE1X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE2X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxN19jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxN19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNwotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxOF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE5X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxOV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jCi0gICAgOiBsaXN0MjBfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MjBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL21hcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvbWFwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzk3NGYyOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvbWFwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9tYXAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgbWFwOwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDA8ICA+Ci17Ci0gICAgdHlwZWRlZiBtYXAwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDI8IFQwLFQxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDI8IFQwLFQxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDU8IFQwLFQxLFQyLFQzLFQ0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDU8IFQwLFQxLFQyLFQzLFQ0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTc8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBtYXAKLSAgICA6IG1hcDIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL21pbnVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9taW51cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1Y2NjOGIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL21pbnVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9taW51cy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IG1pbnVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBtaW51c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbWludXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBtaW51c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBtaW51c19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbWludXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBtaW51c190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgbWludXMKLSAgICA6IG1pbnVzPCBtaW51czwgbWludXM8IG1pbnVzPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgbWludXM8IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogbWludXM8IG1pbnVzPCBtaW51czwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIG1pbnVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgbWludXM8IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogbWludXM8IG1pbnVzPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIG1pbnVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBtaW51czwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogbWludXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBtaW51c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbWludXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBtaW51cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIFQgbjEsIFQgbjIgPgotc3RydWN0IG1pbnVzX3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgID0gKG4xIC0gbjIpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWludXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhdXg6Om1pbnVzX3drbmQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsIE4xOjp2YWx1ZQotICAgICAgICAgICAgLCBOMjo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUKLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9tb2R1bHVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9tb2R1bHVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWI2NmFiNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvbW9kdWx1cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbW9kdWx1cy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IG1vZHVsdXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IG1vZHVsdXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IG1vZHVsdXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBtb2R1bHVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG1vZHVsdXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG1vZHVsdXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBtb2R1bHVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBtb2R1bHVzCi0KLSAgICA6IG1vZHVsdXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBtb2R1bHVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBtb2R1bHVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIG1vZHVsdXMsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIG1vZHVsdXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBUIG4xLCBUIG4yID4KLXN0cnVjdCBtb2R1bHVzX3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgID0gKG4xICUgbjIpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbW9kdWx1c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGF1eDo6bW9kdWx1c193a25kPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCBOMTo6dmFsdWUKLSAgICAgICAgICAgICwgTjI6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvbm90X2VxdWFsX3RvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9ub3RfZXF1YWxfdG8uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNDAxYjQxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9ub3RfZXF1YWxfdG8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbm90X2VxdWFsX3RvLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBub3RfZXF1YWxfdG9faW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IG5vdF9lcXVhbF90b19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG5vdF9lcXVhbF90b190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgbm90X2VxdWFsX3RvCi0KLSAgICA6IG5vdF9lcXVhbF90b19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIG5vdF9lcXVhbF90b190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbm90X2VxdWFsX3RvX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIG5vdF9lcXVhbF90bywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbm90X2VxdWFsX3RvKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgIT0KLSAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApCi0gICAgICAgICAgICApOwotICAgICAgICB0eXBlZGVmIGJvb2xfPHZhbHVlPiB0eXBlOwotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL29yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9vci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhZThlZGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL29yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL29yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGJvb2wgQ18sIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0ID4KLXN0cnVjdCBvcl9pbXBsCi0gICAgOiB0cnVlXwotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0ID4KLXN0cnVjdCBvcl9pbXBsPCBmYWxzZSxUMSxUMixUMyxUNCA+Ci0gICAgOiBvcl9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICwgVDIsIFQzLCBUNAotICAgICAgICAsIGZhbHNlXwotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgb3JfaW1wbDwKLSAgICAgICAgICBmYWxzZQotICAgICAgICAsIGZhbHNlXywgZmFsc2VfLCBmYWxzZV8sIGZhbHNlXwotICAgICAgICA+Ci0gICAgOiBmYWxzZV8KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgICwgdHlwZW5hbWUgVDMgPSBmYWxzZV8sIHR5cGVuYW1lIFQ0ID0gZmFsc2VfLCB0eXBlbmFtZSBUNSA9IGZhbHNlXwotICAgID4KLXN0cnVjdCBvcl8KLQotICAgIDogYXV4Ojpvcl9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPgotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgb3JfCi0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoCi0gICAgICAyCi0gICAgLCA1Ci0gICAgLCBvcl8KLSAgICApCi0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvcGxhY2Vob2xkZXJzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9wbGFjZWhvbGRlcnMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTI4YzA5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9wbGFjZWhvbGRlcnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMS0yMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3BsYWNlaG9sZGVycy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwgLTEgPiBfOwotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8pCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol87Ci19Ci0KLX19Ci0KLS8vLyBhZ3VydCwgMTcvbWFyLzAyOiBvbmUgbW9yZSBwbGFjZWhvbGRlciBmb3IgdGhlIGxhc3QgJ2FwcGx5IycgCi0vLy8gc3BlY2lhbGl6YXRpb24KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDE+IF8xOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzEpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol8xOwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Mj4gXzI7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfMikKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzI7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwzPiBfMzsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8zKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfMzsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDQ+IF80OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzQpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol80OwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8NT4gXzU7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfNSkKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzU7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzw2PiBfNjsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF82KQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfNjsKLX0KLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9wbHVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9wbHVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmI2MWJiMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvcGx1cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvcGx1cy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHBsdXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHBsdXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHBsdXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBwbHVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHBsdXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHBsdXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBwbHVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBwbHVzCi0gICAgOiBwbHVzPCBwbHVzPCBwbHVzPCBwbHVzPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgcGx1cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBwbHVzPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IHBsdXM8IHBsdXM8IHBsdXM8IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgcGx1czwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBwbHVzPCBwbHVzPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHBsdXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IHBsdXM8IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IHBsdXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBwbHVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBwbHVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHBsdXMKLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBwbHVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgVCBuMSwgVCBuMiA+Ci1zdHJ1Y3QgcGx1c193a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlICA9IChuMSArIG4yKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IHBsdXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhdXg6OnBsdXNfd2tuZDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgTjE6OnZhbHVlCi0gICAgICAgICAgICAsIE4yOjp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZQotCi0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3F1b3RlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9xdW90ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlNzdmYmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3F1b3RlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3F1b3RlLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvcmV2ZXJzZV9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDNhZDc1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMzEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDwgMCxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTAgYmt3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDwgMSxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlMSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw8IDIsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTIgYmt3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIAotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDwgMyxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlMyBia3dkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw8IDQsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTQgYmt3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGU0LCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbAotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgIAotCi0gICAgdHlwZWRlZiByZXZlcnNlX2ZvbGRfaW1wbDwKLSAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgLCBpdGVyNAotICAgICAgICAsIExhc3QKLSAgICAgICAgLCBmd2Rfc3RhdGU0Ci0gICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IG5lc3RlZF9jaHVuazsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjpzdGF0ZSBia3dkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTQsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIAotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsPCAtMSxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIHJldmVyc2VfZm9sZF9pbXBsPAotICAgICAgICAgIC0xCi0gICAgICAgICwgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8Rm9yd2FyZE9wLFN0YXRlLCB0eXBlbmFtZSBkZXJlZjxGaXJzdD46OnR5cGU+Ojp0eXBlCi0gICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IG5lc3RlZF9zdGVwOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8Ci0gICAgICAgICAgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjpzdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIGRlcmVmPEZpcnN0Pjo6dHlwZQotICAgICAgICA+Ojp0eXBlIHN0YXRlOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw8IC0xLExhc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzNiZjUwOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMzEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgMCxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTAgYmt3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPCAxLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIAotCi0gICAgdHlwZWRlZiBmd2Rfc3RhdGUxIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPCAyLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIAotCi0gICAgdHlwZWRlZiBmd2Rfc3RhdGUyIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgMyxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTIsaXRlcjIgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlMyBia3dkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMyxpdGVyMiA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgNCxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTIsaXRlcjIgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTMsaXRlcjMgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlNCBia3dkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlNCxpdGVyMyA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUzLGl0ZXIyID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIAotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGwKLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTIsaXRlcjIgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTMsaXRlcjMgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAKLQotICAgIHR5cGVkZWYgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgLCBpdGVyNAotICAgICAgICAsIExhc3QKLSAgICAgICAgLCBmd2Rfc3RhdGU0Ci0gICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IG5lc3RlZF9jaHVuazsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjpzdGF0ZSBia3dkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlNCxpdGVyMyA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUzLGl0ZXIyID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIAotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IC0xLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAtMQotICAgICAgICAsIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsU3RhdGUsRmlyc3QgPjo6dHlwZQotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfc3RlcDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPAotICAgICAgICAgIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6c3RhdGUKLSAgICAgICAgLCBGaXJzdAotICAgICAgICA+Ojp0eXBlIHN0YXRlOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgLTEsTGFzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3NldC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvc2V0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGM0Y2ExMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvc2V0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zZXQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3Qgc2V0OwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDA8ICA+Ci17Ci0gICAgdHlwZWRlZiBzZXQwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDI8IFQwLFQxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDI8IFQwLFQxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDU8IFQwLFQxLFQyLFQzLFQ0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDU8IFQwLFQxLFQyLFQzLFQ0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTc8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBzZXQKLSAgICA6IHNldDIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3NldF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9zZXRfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlZjJmZGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3NldF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyOCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zZXRfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQwX2M8VD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDBfYzxUPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDFfYzwgVCxDMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxX2M8IFQsQzAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDJfYzwgVCxDMCxDMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyX2M8IFQsQzAsQzEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDNfYzwgVCxDMCxDMSxDMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQzX2M8IFQsQzAsQzEsQzIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDRfYzwgVCxDMCxDMSxDMixDMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ0X2M8IFQsQzAsQzEsQzIsQzMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDVfYzwgVCxDMCxDMSxDMixDMyxDNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ1X2M8IFQsQzAsQzEsQzIsQzMsQzQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDEwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDExX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDExX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxMl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTJfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDEzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTNfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTVfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTVfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE2X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNgotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxN19jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxOF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MThfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE5X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgID4KLXN0cnVjdCBzZXRfYwotICAgIDogc2V0MjBfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvc2hpZnRfbGVmdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvc2hpZnRfbGVmdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiYzllNmYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3NoaWZ0X2xlZnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTEwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NoaWZ0X2xlZnQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBzaGlmdF9sZWZ0X2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBzaGlmdF9sZWZ0X2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBzaGlmdF9sZWZ0X2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3Qgc2hpZnRfbGVmdF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdAotCi0gICAgOiBzaGlmdF9sZWZ0X2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgc2hpZnRfbGVmdF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgc2hpZnRfbGVmdF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBzaGlmdF9sZWZ0LCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBzaGlmdF9sZWZ0KQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgU2hpZnQsIFQgbiwgU2hpZnQgcyA+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdF93a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlICA9IChuIDw8IHMpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4sIHR5cGVuYW1lIFMgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhdXg6OnNoaWZ0X2xlZnRfd2tuZDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgTjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBTOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAsIE46OnZhbHVlCi0gICAgICAgICAgICAsIFM6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvc2hpZnRfcmlnaHQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3NoaWZ0X3JpZ2h0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGZiOTE2ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvc2hpZnRfcmlnaHQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTEwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NoaWZ0X3JpZ2h0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHNoaWZ0X3JpZ2h0X2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBzaGlmdF9yaWdodF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHNoaWZ0X3JpZ2h0X3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBzaGlmdF9yaWdodAotCi0gICAgOiBzaGlmdF9yaWdodF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHNoaWZ0X3JpZ2h0X3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBzaGlmdF9yaWdodF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBzaGlmdF9yaWdodCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgc2hpZnRfcmlnaHQpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBTaGlmdCwgVCBuLCBTaGlmdCBzID4KLXN0cnVjdCBzaGlmdF9yaWdodF93a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlICA9IChuID4+IHMpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOLCB0eXBlbmFtZSBTID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4OjpzaGlmdF9yaWdodF93a25kPAotICAgICAgICAgICAgICB0eXBlbmFtZSBOOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFM6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICwgTjo6dmFsdWUKLSAgICAgICAgICAgICwgUzo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUKLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC90ZW1wbGF0ZV9hcml0eS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvdGVtcGxhdGVfYXJpdHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNTA1NzhmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC90ZW1wbGF0ZV9hcml0eS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL3RlbXBsYXRlX2FyaXR5LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGJvb2wgPgotc3RydWN0IHRlbXBsYXRlX2FyaXR5X2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogbXBsOjppbnRfPCAtMSA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHlfaW1wbDx0cnVlPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBGOjphcml0eQotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYgPgotc3RydWN0IHRlbXBsYXRlX2FyaXR5Ci0gICAgOiB0ZW1wbGF0ZV9hcml0eV9pbXBsPCA6Om5kbmJvb3N0OjptcGw6OmF1eDo6aGFzX3JlYmluZDxGPjo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Rj4KLXsKLX07Ci0KLX19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvdGltZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3RpbWVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmE1NDA3Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvdGltZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTU2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3RpbWVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgdGltZXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHRpbWVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCB0aW1lc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHRpbWVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHRpbWVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCB0aW1lc19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHRpbWVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCB0aW1lcwotICAgIDogdGltZXM8IHRpbWVzPCB0aW1lczwgdGltZXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCB0aW1lczwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiB0aW1lczwgdGltZXM8IHRpbWVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCB0aW1lczwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiB0aW1lczwgdGltZXM8IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IHRpbWVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiB0aW1lc19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHRpbWVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSB0aW1lc190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIHRpbWVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgVCBuMSwgVCBuMiA+Ci1zdHJ1Y3QgdGltZXNfd2tuZAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChULCB2YWx1ZSAgPSAobjEgKiBuMikpOwotICAgIHR5cGVkZWYgaW50ZWdyYWxfYzwgVCx2YWx1ZSA+IHR5cGU7Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB0aW1lc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGF1eDo6dGltZXNfd2tuZDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgTjE6OnZhbHVlCi0gICAgICAgICAgICAsIE4yOjp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZQotCi0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3VucGFja19hcmdzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC91bnBhY2tfYXJncy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlYzMxYWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3VucGFja19hcmdzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3VucGFja19hcmdzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGludCBzaXplLCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgMCxGLEFyZ3MgPgotICAgIDogYXBwbHkwPAotICAgICAgICAgIEYKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDEsRixBcmdzID4KLSAgICA6IGFwcGx5MTwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDIsRixBcmdzID4KLSAgICA6IGFwcGx5MjwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCAzLEYsQXJncyA+Ci0gICAgOiBhcHBseTM8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCA0LEYsQXJncyA+Ci0gICAgOiBhcHBseTQ8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDMgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgNSxGLEFyZ3MgPgotICAgIDogYXBwbHk1PAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDIgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywzID46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDQgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi19Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCB1bnBhY2tfYXJncwotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBhdXg6OnVucGFja19hcmdzX2ltcGw8IHNpemU8QXJncz46OnZhbHVlLEYsIEFyZ3MgPgotCi0gICAgewotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX1BBU1NfVEhST1VHSF9MQU1CREFfU1BFQygxLCB1bnBhY2tfYXJncykKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3ZlY3Rvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvdmVjdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGY2NzU4OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvdmVjdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yOwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjA8ICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjI8IFQwLFQxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjI8IFQwLFQxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjU8IFQwLFQxLFQyLFQzLFQ0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjU8IFQwLFQxLFQyLFQzLFQ0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTc8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCB2ZWN0b3IKLSAgICA6IHZlY3RvcjIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3ZlY3Rvcl9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC92ZWN0b3JfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyZmJkYjQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3ZlY3Rvcl9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwOSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3JfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IwX2M8VD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjBfYzxUPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjFfYzwgVCwgVChDMCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMV9jPCBULCBUKEMwKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMl9jPCBULCBUKEMwKSwgVChDMSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMl9jPCBULCBUKEMwKSwgVChDMSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjNfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMikgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjZfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNikgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNykgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjlfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTFfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTJfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTVfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMThfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2MKLSAgICA6IHZlY3RvcjIwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpLCBUKEMxOSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjBfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCksIFQoQzE5KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9hZHZhbmNlX2JhY2t3YXJkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2FkdmFuY2VfYmFja3dhcmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZTBjODI4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2FkdmFuY2VfYmFja3dhcmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9hZHZhbmNlX2JhY2t3YXJkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGxvbmcgTiA+IHN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkOwotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8MD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8MT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDI+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8ND4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICB0eXBlZGVmIGl0ZXI0IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfYmFja3dhcmQ8ND4KLSAgICAgICAgICAgICwgSXRlcmF0b3IKLSAgICAgICAgICAgID46OnR5cGUgY2h1bmtfcmVzdWx0XzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2JhY2t3YXJkPCgKLSAgICAgICAgICAgICAgICAoTiAtIDQpIDwgMAotICAgICAgICAgICAgICAgICAgICA/IDAKLSAgICAgICAgICAgICAgICAgICAgOiBOIC0gNAotICAgICAgICAgICAgICAgICAgICApPgotICAgICAgICAgICAgLCBjaHVua19yZXN1bHRfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9hZHZhbmNlX2ZvcndhcmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYWR2YW5jZV9mb3J3YXJkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjNhNWFmZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9hZHZhbmNlX2ZvcndhcmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9hZHZhbmNlX2ZvcndhcmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgbG9uZyBOID4gc3RydWN0IGFkdmFuY2VfZm9yd2FyZDsKLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8MD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwxPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDI+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDw0PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfZm9yd2FyZDw0PgotICAgICAgICAgICAgLCBJdGVyYXRvcgotICAgICAgICAgICAgPjo6dHlwZSBjaHVua19yZXN1bHRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfZm9yd2FyZDwoCi0gICAgICAgICAgICAgICAgKE4gLSA0KSA8IDAKLSAgICAgICAgICAgICAgICAgICAgPyAwCi0gICAgICAgICAgICAgICAgICAgIDogTiAtIDQKLSAgICAgICAgICAgICAgICAgICAgKT4KLSAgICAgICAgICAgICwgY2h1bmtfcmVzdWx0XwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19fX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2FuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4MDkyNzQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FuZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBib29sIENfLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCA+Ci1zdHJ1Y3QgYW5kX2ltcGwKLSAgICA6IGZhbHNlXwotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0ID4KLXN0cnVjdCBhbmRfaW1wbDwgdHJ1ZSxUMSxUMixUMyxUNCA+Ci0gICAgOiBhbmRfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAsIFQyLCBUMywgVDQKLSAgICAgICAgLCB0cnVlXwotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYW5kX2ltcGw8Ci0gICAgICAgICAgdHJ1ZQotICAgICAgICAsIHRydWVfLCB0cnVlXywgdHJ1ZV8sIHRydWVfCi0gICAgICAgID4KLSAgICA6IHRydWVfCi17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICAsIHR5cGVuYW1lIFQzID0gdHJ1ZV8sIHR5cGVuYW1lIFQ0ID0gdHJ1ZV8sIHR5cGVuYW1lIFQ1ID0gdHJ1ZV8KLSAgICA+Ci1zdHJ1Y3QgYW5kXwotCi0gICAgOiBhdXg6OmFuZF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPgotCi17Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKAotICAgICAgMgotICAgICwgNQotICAgICwgYW5kXwotICAgICkKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2FwcGx5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2FwcGx5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTIwZWM0Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9hcHBseS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXBwbHkuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseTAKLQotICAgIDogYXBwbHlfd3JhcDA8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseTwgRixuYSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBhcHBseTA8Rj4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkxCi0KLSAgICA6IGFwcGx5X3dyYXAxPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsbmEsbmEsbmEsbmEgPgotICAgIDogYXBwbHkxPCBGLFQxID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5MgotCi0gICAgOiBhcHBseV93cmFwMjwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsVDIsbmEsbmEsbmEgPgotICAgIDogYXBwbHkyPCBGLFQxLFQyID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseTMKLQotICAgIDogYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyLCBUMwotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsVDIsVDMsbmEsbmEgPgotICAgIDogYXBwbHkzPCBGLFQxLFQyLFQzID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk0Ci0KLSAgICA6IGFwcGx5X3dyYXA0PAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsVDIsVDMsVDQsbmEgPgotICAgIDogYXBwbHk0PCBGLFQxLFQyLFQzLFQ0ID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5NQotCi0gICAgOiBhcHBseV93cmFwNTwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPgotewotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkKLSAgICA6IGFwcGx5NTwgRixUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9hcHBseV9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYXBwbHlfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmNjYzk0ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9hcHBseV9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXBwbHlfZndkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseTA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkxOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseTI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseTM7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk0OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseTU7Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2FwcGx5X3dyYXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYXBwbHlfd3JhcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjOTAyMDIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYXBwbHlfd3JhcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcHBseV93cmFwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLQotICAgICwgdHlwZW5hbWUgaGFzX2FwcGx5XyA9IHR5cGVuYW1lIGF1eDo6aGFzX2FwcGx5PEY+Ojp0eXBlCi0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDAKLQotICAgIDogRjo6dGVtcGxhdGUgYXBwbHk8ICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDA8IEYsdHJ1ZV8gPgotICAgIDogRjo6YXBwbHkKLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMQotCi0gICAgOiBGOjp0ZW1wbGF0ZSBhcHBseTxUMT4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDIKLQotICAgIDogRjo6dGVtcGxhdGUgYXBwbHk8IFQxLFQyID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAzCi0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PCBUMSxUMixUMyA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDQKLQotICAgIDogRjo6dGVtcGxhdGUgYXBwbHk8IFQxLFQyLFQzLFQ0ID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDUKLQotICAgIDogRjo6dGVtcGxhdGUgYXBwbHk8IFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2FyZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9hcmcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTQ0NzZhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2FyZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMS0yMDAyCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXJnLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwgLTEgPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IC0xKTsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTEgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8MT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAxKTsKLSAgICB0eXBlZGVmIGFyZzwyPiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwyPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDIpOwotICAgIHR5cGVkZWYgYXJnPDM+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUyIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDM+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMyk7Ci0gICAgdHlwZWRlZiBhcmc8ND4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTMgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8ND4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSA0KTsKLSAgICB0eXBlZGVmIGFyZzw1PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVNCB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzw1PgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDUpOwotICAgIHR5cGVkZWYgYXJnPDY+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFU1IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OT05UWVBFX0FSSVRZX1NQRUMoMSxpbnQsIGFyZykKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2Jhc2ljX2JpbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYmFzaWNfYmluZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlMGJmNzMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYmFzaWNfYmluZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NDAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vYmFzaWNfYmluZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmcKLXsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPCBhcmc8Tj4sIFUxLCBVMiwgVTMsIFU0LCBVNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTxtcGw6OmFyZzxOPiwgVTEsIFUyLCBVMywgVTQsIFU1Pjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPCBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4sIFUxLCBVMiwgVTMsIFU0LCBVNSA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBiaW5kMAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAwPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDA8Rj4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQwPEY+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMSwgYmluZDApCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMSwgYmluZDApCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBiaW5kPCBGLG5hLG5hLG5hLG5hLG5hID4KLSAgICA6IGJpbmQwPEY+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGJpbmQxCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzCi0gICAgLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQxPCBGLFQxID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQxPCBGLFQxID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygyLCBiaW5kMSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygyLCBiaW5kMSkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLG5hLG5hLG5hLG5hID4KLSAgICA6IGJpbmQxPCBGLFQxID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQyCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIKLSAgICAsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQyPCBGLFQxLFQyID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQyPCBGLFQxLFQyID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygzLCBiaW5kMikKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygzLCBiaW5kMikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxUMixuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMjwgRixUMSxUMiA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDMKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMzwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFUxCi0gICAgLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDM8IEYsVDEsVDIsVDMgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDM8IEYsVDEsVDIsVDMgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDQsIGJpbmQzKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDQsIGJpbmQzKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxUMixUMyxuYSxuYSA+Ci0gICAgOiBiaW5kMzwgRixUMSxUMixUMyA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGJpbmQ0Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQ0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA0PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDQ8IEYsVDEsVDIsVDMsVDQgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDQ8IEYsVDEsVDIsVDMsVDQgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDUsIGJpbmQ0KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDUsIGJpbmQ0KQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsVDIsVDMsVDQsbmEgPgotICAgIDogYmluZDQ8IEYsVDEsVDIsVDMsVDQgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZDUKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQ1LFUxLFUyLFUzLFU0LFU1ID4gdDU7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlLCB0eXBlbmFtZSB0NTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNiwgYmluZDUpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNiwgYmluZDUpCi0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQKLSAgICA6IGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLX07Ci0KLS8vLyBpZl8vZXZhbF9pZiBzcGVjaWFsaXphdGlvbnMKLXRlbXBsYXRlPCB0ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IGNsYXNzIEYsIHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgcXVvdGUzOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IHN0cnVjdCBpZl87Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzPAotICAgICAgcXVvdGUzPCBpZl8sVGFnID4KLSAgICAsIFQxLCBUMiwgVDMKLSAgICA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBtcGw6OmFyZzwxPiBuMTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICAsIHQyLCB0MwotICAgICAgICAgICAgPjo6dHlwZSBmXzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZl86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IGNsYXNzIEYsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBxdW90ZTM7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzID4gc3RydWN0IGV2YWxfaWY7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzPAotICAgICAgcXVvdGUzPCBldmFsX2lmLFRhZyA+Ci0gICAgLCBUMSwgVDIsIFQzCi0gICAgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgbXBsOjphcmc8MT4gbjE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZXZhbF9pZjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgICwgdDIsIHQzCi0gICAgICAgICAgICA+Ojp0eXBlIGZfOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBmXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9iaW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2JpbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NWNmYzY3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2JpbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTYxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZwotewotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBBcmcKLSAgICA+Ci1zdHJ1Y3QgcmVwbGFjZV91bm5hbWVkX2FyZwotewotICAgIHR5cGVkZWYgQXJnIG5leHQ7Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEFyZwotICAgID4KLXN0cnVjdCByZXBsYWNlX3VubmFtZWRfYXJnPCBhcmc8IC0xID4sIEFyZyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBBcmc6Om5leHQgbmV4dDsKLSAgICB0eXBlZGVmIEFyZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8IGFyZzxOPiwgVTEsIFUyLCBVMywgVTQsIFU1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PG1wbDo6YXJnPE4+LCBVMSwgVTIsIFUzLCBVNCwgVTU+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8IGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPiwgVTEsIFUyLCBVMywgVTQsIFU1ID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQwCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAwPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDA8Rj4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQwPEY+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMSwgYmluZDApCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMSwgYmluZDApCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBiaW5kPCBGLG5hLG5hLG5hLG5hLG5hID4KLSAgICA6IGJpbmQwPEY+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGJpbmQxCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzCi0gICAgLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQxPCBGLFQxID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQxPCBGLFQxID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygyLCBiaW5kMSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygyLCBiaW5kMSkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLG5hLG5hLG5hLG5hID4KLSAgICA6IGJpbmQxPCBGLFQxID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQyCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMgotICAgICwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDI8IEYsVDEsVDIgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDI8IEYsVDEsVDIgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDMsIGJpbmQyKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDMsIGJpbmQyKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLFQyLG5hLG5hLG5hID4KLSAgICA6IGJpbmQyPCBGLFQxLFQyID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMwotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMzwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFUxCi0gICAgLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDM8IEYsVDEsVDIsVDMgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDM8IEYsVDEsVDIsVDMgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDQsIGJpbmQzKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDQsIGJpbmQzKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxUMixUMyxuYSxuYSA+Ci0gICAgOiBiaW5kMzwgRixUMSxUMixUMyA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGJpbmQ0Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ0LG40ID4gcjQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6OnR5cGUgYTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6Om5leHQgbjU7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA0PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDQ8IEYsVDEsVDIsVDMsVDQgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDQ8IEYsVDEsVDIsVDMsVDQgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDUsIGJpbmQ0KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDUsIGJpbmQ0KQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsVDIsVDMsVDQsbmEgPgotICAgIDogYmluZDQ8IEYsVDEsVDIsVDMsVDQgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZDUKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDQsbjQgPiByNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6dHlwZSBhNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6bmV4dCBuNTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGE0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDUsbjUgPiByNTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNTo6dHlwZSBhNTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNTo6bmV4dCBuNjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGE1LFUxLFUyLFUzLFU0LFU1ID4gdDU7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUsIHR5cGVuYW1lIHQ1Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZAotICAgIDogYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotLy8vIGlmXy9ldmFsX2lmIHNwZWNpYWxpemF0aW9ucwotdGVtcGxhdGU8IHRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzID4gY2xhc3MgRiwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBxdW90ZTM7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzID4gc3RydWN0IGlmXzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDM8Ci0gICAgICBxdW90ZTM8IGlmXyxUYWcgPgotICAgICwgVDEsIFQyLCBUMwotICAgID4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIG1wbDo6YXJnPDE+IG4xOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgICwgdDIsIHQzCi0gICAgICAgICAgICA+Ojp0eXBlIGZfOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBmXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzID4gY2xhc3MgRiwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IHF1b3RlMzsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBzdHJ1Y3QgZXZhbF9pZjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDM8Ci0gICAgICBxdW90ZTM8IGV2YWxfaWYsVGFnID4KLSAgICAsIFQxLCBUMiwgVDMKLSAgICA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBtcGw6OmFyZzwxPiBuMTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBldmFsX2lmPAotICAgICAgICAgICAgICB0eXBlbmFtZSB0MTo6dHlwZQotICAgICAgICAgICAgLCB0MiwgdDMKLSAgICAgICAgICAgID46OnR5cGUgZl87Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGZfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2JpbmRfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2JpbmRfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWEwNDZlZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9iaW5kX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaW5kX2Z3ZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hCi0gICAgPgotc3RydWN0IGJpbmQ7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBiaW5kMDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kMTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kNDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZDU7Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2JpdGFuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9iaXRhbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDUwYmJlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2JpdGFuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYml0YW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBiaXRhbmRfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdGFuZF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGJpdGFuZF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXRhbmRfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdGFuZF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGJpdGFuZF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXwotICAgIDogYml0YW5kXzwgYml0YW5kXzwgYml0YW5kXzwgYml0YW5kXzwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBiaXRhbmRfPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IGJpdGFuZF88IGJpdGFuZF88IGJpdGFuZF88IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRhbmRfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXzwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBiaXRhbmRfPCBiaXRhbmRfPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdGFuZF8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGJpdGFuZF88IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IGJpdGFuZF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGJpdGFuZF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYml0YW5kX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdGFuZF8KLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXRhbmRfKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBiaXRhbmRfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICYgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYml0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYml0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDAyYTM5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2JpdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaXRvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGJpdG9yX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBiaXRvcl9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgYml0b3JfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBiaXRvcl9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXRvcl9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0b3JfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBiaXRvcl90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfCi0gICAgOiBiaXRvcl88IGJpdG9yXzwgYml0b3JfPCBiaXRvcl88IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IGJpdG9yXzwgYml0b3JfPCBiaXRvcl88IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBiaXRvcl88IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogYml0b3JfPCBiaXRvcl88IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBiaXRvcl88IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IGJpdG9yX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgYml0b3JfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGJpdG9yX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdG9yXwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGJpdG9yXykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYml0b3JfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIHwgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYml0eG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2JpdHhvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhMmU4YTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYml0eG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaXR4b3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBiaXR4b3JfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGJpdHhvcl9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgYml0eG9yX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0eG9yX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdHhvcl9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0eG9yX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0eG9yX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBiaXR4b3JfCi0gICAgOiBiaXR4b3JfPCBiaXR4b3JfPCBiaXR4b3JfPCBiaXR4b3JfPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGJpdHhvcl88IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogYml0eG9yXzwgYml0eG9yXzwgYml0eG9yXzwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdHhvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBiaXR4b3JfPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGJpdHhvcl88IGJpdHhvcl88IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0eG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXzwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogYml0eG9yX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgYml0eG9yX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBiaXR4b3JfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0eG9yXwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGJpdHhvcl8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGJpdHhvcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgXiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9kZXF1ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9kZXF1ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2MzFmNjYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vZGVxdWUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2RlcXVlLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IGRlcXVlOwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMDwgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTxUMD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE8VDA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjI8IFQwLFQxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjI8IFQwLFQxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I0PCBUMCxUMSxUMixUMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I0PCBUMCxUMSxUMixUMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjU8IFQwLFQxLFQyLFQzLFQ0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjU8IFQwLFQxLFQyLFQzLFQ0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTY8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTc8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTk8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgZGVxdWUKLSAgICA6IHZlY3RvcjIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vZGl2aWRlcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9kaXZpZGVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmNmNmUyMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9kaXZpZGVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9kaXZpZGVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlc19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZGl2aWRlc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZGl2aWRlc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGRpdmlkZXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZGl2aWRlc19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZGl2aWRlc19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGRpdmlkZXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGRpdmlkZXMKLSAgICA6IGRpdmlkZXM8IGRpdmlkZXM8IGRpdmlkZXM8IGRpdmlkZXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlczwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBkaXZpZGVzPCBkaXZpZGVzPCBkaXZpZGVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IGRpdmlkZXM8IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogZGl2aWRlczwgZGl2aWRlczwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBkaXZpZGVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBkaXZpZGVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBkaXZpZGVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZGl2aWRlc190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZGl2aWRlc190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBkaXZpZGVzCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgZGl2aWRlcykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGl2aWRlc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgLyBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9lcXVhbF90by5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9lcXVhbF90by5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwNzBhMDguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vZXF1YWxfdG8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZXF1YWxfdG8uaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBlcXVhbF90b19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZXF1YWxfdG9faW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGVxdWFsX3RvX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZXF1YWxfdG9faW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZXF1YWxfdG9faW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZXF1YWxfdG9fdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGVxdWFsX3RvCi0KLSAgICA6IGVxdWFsX3RvX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZXF1YWxfdG9fdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGVxdWFsX3RvX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgZXF1YWxfdG8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZXF1YWxfdG9faW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlICA9PSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDk0Y2Q0MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTgwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgMCxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHN0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDEsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTEgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAyLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMiBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDMsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMyBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDQsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBzdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTQgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbAotewotICAgIHR5cGVkZWYgZm9sZF9pbXBsPAotICAgICAgICAgIDQKLSAgICAgICAgLCBGaXJzdAotICAgICAgICAsIExhc3QKLSAgICAgICAgLCBTdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IGNodW5rXzsKLQotICAgIHR5cGVkZWYgZm9sZF9pbXBsPAotICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6aXRlcmF0b3IKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjpzdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IHJlc187Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgLTEsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotICAgIDogZm9sZF9pbXBsPAotICAgICAgICAgIC0xCi0gICAgICAgICwgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8Rm9yd2FyZE9wLFN0YXRlLCB0eXBlbmFtZSBkZXJlZjxGaXJzdD46OnR5cGU+Ojp0eXBlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IC0xLExhc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9mdWxsX2xhbWJkYS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9mdWxsX2xhbWJkYS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkYTk3MWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vZnVsbF9sYW1iZGEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTU0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vZnVsbF9sYW1iZGEuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIGJvb2wgQzEgPSBmYWxzZSwgYm9vbCBDMiA9IGZhbHNlLCBib29sIEMzID0gZmFsc2UsIGJvb2wgQzQgPSBmYWxzZQotICAgICwgYm9vbCBDNSA9IGZhbHNlCi0gICAgPgotc3RydWN0IGxhbWJkYV9vcgotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsYW1iZGFfb3I8IGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlID4KLSAgICA6IGZhbHNlXwotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhCi17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBUIHJlc3VsdF87Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgaXNfbGFtYmRhX2V4cHJlc3Npb24KLSAgICA6IGxhbWJkYTxUPjo6aXNfbGUKLXsKLX07Ci0KLXRlbXBsYXRlPCBpbnQgTiwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBsYW1iZGE8IGFyZzxOPiwgVGFnID4KLXsKLSAgICB0eXBlZGVmIHRydWVfIGlzX2xlOwotICAgIHR5cGVkZWYgbXBsOjphcmc8Tj4gcmVzdWx0XzsgLy8gcXVhbGlmaWVkIGZvciB0aGUgc2FrZSBvZiBNSVBTcHJvIDcuNDEKLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQwPEY+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQwPAotICAgICAgICAgIEYKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDEKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MTwgdHJ1ZV8sVGFnLEYsTDEgPgotewotICAgIHR5cGVkZWYgYmluZDE8Ci0gICAgICAgICAgcXVvdGUxPCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8VDE+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDE8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQxPCBGLFQxID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDE8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDIKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MjwgdHJ1ZV8sVGFnLEYsTDEsTDIgPgotewotICAgIHR5cGVkZWYgYmluZDI8Ci0gICAgICAgICAgcXVvdGUyPCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8IFQxLFQyID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDI8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyCi0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDI8IEYsVDEsVDIgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMjwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MwotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUsIHR5cGVuYW1lIEwzOjp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMwotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQzPCB0cnVlXyxUYWcsRixMMSxMMixMMyA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMzwKLSAgICAgICAgICBxdW90ZTM8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XywgdHlwZW5hbWUgTDI6OnJlc3VsdF8sIHR5cGVuYW1lIEwzOjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIsVDMgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDMsVGFnID4gbDM7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUsIGlzX2xlMzo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQzPAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMiwgbDMKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDM8IEYsVDEsVDIsVDMgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMzwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEsIFQyLCBUMwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMywgdHlwZW5hbWUgTDQKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NAotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUsIHR5cGVuYW1lIEwzOjp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMywgdHlwZW5hbWUgTDQKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NDwgdHJ1ZV8sVGFnLEYsTDEsTDIsTDMsTDQgPgotewotICAgIHR5cGVkZWYgYmluZDQ8Ci0gICAgICAgICAgcXVvdGU0PCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfLCB0eXBlbmFtZSBMMzo6cmVzdWx0XwotICAgICAgICAsIHR5cGVuYW1lIEw0OjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMixUMyxUNCA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQyLFRhZyA+IGwyOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMyxUYWcgPiBsMzsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDQsVGFnID4gbDQ7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlLCBpc19sZTI6OnZhbHVlLCBpc19sZTM6OnZhbHVlLCBpc19sZTQ6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0NDwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMSwgbDIsIGwzLCBsNAotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDQ8IEYsVDEsVDIsVDMsVDQgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kNDwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgUDUgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzLCB0eXBlbmFtZSBMNCwgdHlwZW5hbWUgTDUKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NQotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUsIHR5cGVuYW1lIEwzOjp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnR5cGUsIHR5cGVuYW1lIEw1Ojp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgUDUgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzLCB0eXBlbmFtZSBMNCwgdHlwZW5hbWUgTDUKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NTwgdHJ1ZV8sVGFnLEYsTDEsTDIsTDMsTDQsTDUgPgotewotICAgIHR5cGVkZWYgYmluZDU8Ci0gICAgICAgICAgcXVvdGU1PCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfLCB0eXBlbmFtZSBMMzo6cmVzdWx0XwotICAgICAgICAsIHR5cGVuYW1lIEw0OjpyZXN1bHRfLCB0eXBlbmFtZSBMNTo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQKLSAgICAgICAgLCB0eXBlbmFtZSBQNQotICAgICAgICA+Ci0gICAgICBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIsVDMsVDQsVDUgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDMsVGFnID4gbDM7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQ0LFRhZyA+IGw0OwotICAgIHR5cGVkZWYgbGFtYmRhPCBUNSxUYWcgPiBsNTsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsNTo6aXNfbGUgaXNfbGU1OwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlLCBpc19sZTI6OnZhbHVlLCBpc19sZTM6OnZhbHVlLCBpc19sZTQ6OnZhbHVlCi0gICAgICAgICwgaXNfbGU1Ojp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDU8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyLCBsMywgbDQsIGw1Ci0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kNTwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotLy8vIHNwZWNpYWwgY2FzZSBmb3IgJ3Byb3RlY3QnCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBsYW1iZGE8IG1wbDo6cHJvdGVjdDxUPiwgVGFnID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxUPiByZXN1bHRfOwotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotLy8vIHNwZWNpYWxpemF0aW9ucyBmb3IgdGhlIG1haW4gJ2JpbmQnIGZvcm0KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPiByZXN1bHRfOwotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotLy8vIHdvcmthcm91bmQgZm9yIE1XQ1cgOC4zKy9FREcgPCAzMDMsIGxlYWRzIHRvIGFtYmlndWl0eSBvbiBEaWdpdGFsIE1hcnMKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcxLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBsYW1iZGE8IEYsVGFnMSA+Ci0gICAgICAgICwgVGFnMgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IEYsVGFnMiA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUYWcxLFRhZzIgPiBsMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTsKLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0Mjxpc19sZSwgVGFnMiwgbXBsOjpsYW1iZGEsIGwxLCBsMj4gbGVfcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygyLCBsYW1iZGEpCi0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2dyZWF0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vZ3JlYXRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0YTM1ZDUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vZ3JlYXRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9ncmVhdGVyLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZ3JlYXRlcl9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZ3JlYXRlcl9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGdyZWF0ZXJfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGdyZWF0ZXIKLQotICAgIDogZ3JlYXRlcl9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGdyZWF0ZXJfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGdyZWF0ZXJfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBncmVhdGVyKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGdyZWF0ZXJfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlID4gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vZ3JlYXRlcl9lcXVhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9ncmVhdGVyX2VxdWFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDNiNDAzNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9ncmVhdGVyX2VxdWFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2dyZWF0ZXJfZXF1YWwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBncmVhdGVyX2VxdWFsX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBncmVhdGVyX2VxdWFsX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcl9lcXVhbAotCi0gICAgOiBncmVhdGVyX2VxdWFsX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZ3JlYXRlcl9lcXVhbF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZ3JlYXRlcl9lcXVhbF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGdyZWF0ZXJfZXF1YWwpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgPj0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vaW5oZXJpdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9pbmhlcml0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjc3MzAxMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9pbmhlcml0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyNSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9pbmhlcml0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgID4KLXN0cnVjdCBpbmhlcml0MgotICAgIDogVDEsIFQyCi17Ci0gICAgdHlwZWRlZiBpbmhlcml0MiB0eXBlOwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxID4KLXN0cnVjdCBpbmhlcml0MjwgVDEsZW1wdHlfYmFzZSA+Ci17Ci0gICAgdHlwZWRlZiBUMSB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygyLCBpbmhlcml0MiwgKFQxLCBlbXB0eV9iYXNlKSkKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMiA+Ci1zdHJ1Y3QgaW5oZXJpdDI8IGVtcHR5X2Jhc2UsVDIgPgotewotICAgIHR5cGVkZWYgVDIgdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoMiwgaW5oZXJpdDIsIChlbXB0eV9iYXNlLCBUMikpCi19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW5oZXJpdDI8IGVtcHR5X2Jhc2UsZW1wdHlfYmFzZSA+Ci17Ci0gICAgdHlwZWRlZiBlbXB0eV9iYXNlIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKDIsIGluaGVyaXQyLCAoZW1wdHlfYmFzZSwgZW1wdHlfYmFzZSkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMiwgaW5oZXJpdDIpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgID4KLXN0cnVjdCBpbmhlcml0MwotICAgIDogaW5oZXJpdDI8Ci0gICAgICAgICAgdHlwZW5hbWUgaW5oZXJpdDI8Ci0gICAgICAgICAgICAgIFQxLCBUMgotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAsIFQzCi0gICAgICAgID4KLXsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygzLCBpbmhlcml0MykKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hLCB0eXBlbmFtZSBUNCA9IG5hCi0gICAgPgotc3RydWN0IGluaGVyaXQ0Ci0gICAgOiBpbmhlcml0MjwKLSAgICAgICAgICB0eXBlbmFtZSBpbmhlcml0MzwKLSAgICAgICAgICAgICAgVDEsIFQyLCBUMwotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAsIFQ0Ci0gICAgICAgID4KLXsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQyg0LCBpbmhlcml0NCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hLCB0eXBlbmFtZSBUNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNSA9IG5hCi0gICAgPgotc3RydWN0IGluaGVyaXQ1Ci0gICAgOiBpbmhlcml0MjwKLSAgICAgICAgICB0eXBlbmFtZSBpbmhlcml0NDwKLSAgICAgICAgICAgICAgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgLCBUNQotICAgICAgICA+Ci17Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoNSwgaW5oZXJpdDUpCi0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUMiA9IGVtcHR5X2Jhc2UKLSAgICAsIHR5cGVuYW1lIFQzID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDQgPSBlbXB0eV9iYXNlCi0gICAgLCB0eXBlbmFtZSBUNSA9IGVtcHR5X2Jhc2UKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdAotICAgIDogaW5oZXJpdDU8IFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpbmhlcml0PCBuYSxuYSxuYSxuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0KLSAgICAgICAgICB0eXBlbmFtZSBUMSA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQyID0gZW1wdHlfYmFzZQotICAgICAgICAsIHR5cGVuYW1lIFQzID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDQgPSBlbXB0eV9iYXNlCi0gICAgICAgICwgdHlwZW5hbWUgVDUgPSBlbXB0eV9iYXNlCi0KLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgICAgICA6IGluaGVyaXQ8IFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19MQU1CREEoNSwgaW5oZXJpdCkKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19BUklUWSg1LCBpbmhlcml0KQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX1RFTVBMQVRFX0FSSVRZKDUsIDUsIGluaGVyaXQpCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3NGJkODMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vaXRlcl9mb2xkX2lmX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTMzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMS0yMDAyCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vaXRlcl9mb2xkX2lmX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIFN0YXRlID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwCi17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8IGJvb2wgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGVPcAotICAgICAgICAsIHR5cGVuYW1lIEl0ZXJhdG9yT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgU3RhdGVPcCxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXJhdG9yT3A6OnR5cGUgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsPGZhbHNlPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZU9wCi0gICAgICAgICwgdHlwZW5hbWUgSXRlcmF0b3JPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAsIHR5cGVuYW1lIFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFByZWRpY2F0ZSxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIG5vdF9sYXN0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChub3RfbGFzdCk6OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IEl0ZXJhdG9yLFN0YXRlLEZvcndhcmRPcCwgbXBsOjpuZXh0PEl0ZXJhdG9yPiA+IGltcGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgUHJlZGljYXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFByZWRpY2F0ZSxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIG5vdF9sYXN0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChub3RfbGFzdCk6OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IEl0ZXJhdG9yLFN0YXRlLEJhY2t3YXJkT3AsIGlkZW50aXR5PEl0ZXJhdG9yPiA+IGltcGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkUHJlZGljYXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfaW1wbAotewotIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwPCBJdGVyYXRvcixTdGF0ZSA+IGZvcndhcmRfc3RlcDA7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAwOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMDo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDE7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAxOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDI7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAyOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDM7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAzOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMzo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0Ojpub3RfbGFzdAotICAgICAgICAsIGl0ZXJfZm9sZF9pZl9pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjppdGVyYXRvcgotICAgICAgICAgICAgLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjpzdGF0ZQotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgICwgRm9yd2FyZFByZWRpY2F0ZQotICAgICAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICAgICAsIEJhY2t3YXJkUHJlZGljYXRlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgaXRlcl9mb2xkX2lmX251bGxfc3RlcDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6aXRlcmF0b3IKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6c3RhdGUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZSBiYWNrd2FyZF9zdGVwNDsKLQotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDM6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwNDo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDM7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAzOjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMjsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAxOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDI6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAxOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDA6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMTo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDA7Ci0gICAgCi0KLSBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMDo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwNDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2l0ZXJfZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2l0ZXJfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2MwOGIzMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9pdGVyX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9pdGVyX2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAwLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAxLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUxIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAyLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMSxpdGVyMSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMiBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgMyxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTEsaXRlcjEgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUyLGl0ZXIyID46OnR5cGUgc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUzIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCA0LEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMSxpdGVyMSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTIsaXRlcjIgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUzLGl0ZXIzID46OnR5cGUgc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGU0IHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbAotewotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgNAotICAgICAgICAsIEZpcnN0Ci0gICAgICAgICwgTGFzdAotICAgICAgICAsIFN0YXRlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gY2h1bmtfOwotCi0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgLCB0eXBlbmFtZSBjaHVua186Oml0ZXJhdG9yCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6c3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiByZXNfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgLTEsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotICAgIDogaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgLTEKLSAgICAgICAgLCB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLFN0YXRlLEZpcnN0ID46OnR5cGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAtMSxMYXN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGFtYmRhX25vX2N0cHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGFtYmRhX25vX2N0cHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NTQwMjhiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xhbWJkYV9ub19jdHBzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyOCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9ub19jdHBzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICBib29sIEMxID0gZmFsc2UsIGJvb2wgQzIgPSBmYWxzZSwgYm9vbCBDMyA9IGZhbHNlLCBib29sIEM0ID0gZmFsc2UKLSAgICAsIGJvb2wgQzUgPSBmYWxzZQotICAgID4KLXN0cnVjdCBsYW1iZGFfb3IKLSAgICA6IHRydWVfCi17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGFtYmRhX29yPCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSA+Ci0gICAgOiBmYWxzZV8KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBBcml0eSA+IHN0cnVjdCBsYW1iZGFfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgIHR5cGVkZWYgaXNfcGxhY2Vob2xkZXI8VD4gaXNfbGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50XzwzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmczLCBUYWcsIGZhbHNlXyA+IGwzOwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTMpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlLCB0eXBlbmFtZSBsMzo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMywgVGFnLCBmYWxzZV8gPiBsMzsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzQsIFRhZywgZmFsc2VfID4gbDQ7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUzKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlNCk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUsIHR5cGVuYW1lIGwzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGw0Ojp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50Xzw1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmczLCBUYWcsIGZhbHNlXyA+IGwzOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnNCwgVGFnLCBmYWxzZV8gPiBsNDsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzUsIFRhZywgZmFsc2VfID4gbDU7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDU6OmlzX2xlIGlzX2xlNTsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTMpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGU0KTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlNSk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUsIHR5cGVuYW1lIGwzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGw0Ojp0eXBlLCB0eXBlbmFtZSBsNTo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgLCB0eXBlbmFtZSBQcm90ZWN0Ci0gICAgPgotc3RydWN0IGxhbWJkYQotewotICAgIC8vLyBNZXRhZnVuY3Rpb24gZm9yd2FyZGluZyBjb25mdXNlcyBNU1ZDIDYueAotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp0ZW1wbGF0ZV9hcml0eTxUPjo6dHlwZSBhcml0eV87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9pbXBsPGFyaXR5Xz4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBULFRhZyxQcm90ZWN0ID4gbF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxfOjp0eXBlIHR5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsXzo6aXNfbGUgaXNfbGU7Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDEsIDMsIGxhbWJkYSkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IGlzX2xhbWJkYV9leHByZXNzaW9uCi0gICAgOiBsYW1iZGE8VD46OmlzX2xlCi17Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9sZXNzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xlc3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMmVkZDBhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xlc3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGVzcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGxlc3NfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGxlc3NfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGxlc3NfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBsZXNzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGxlc3NfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGxlc3NfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBsZXNzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBsZXNzCi0KLSAgICA6IGxlc3NfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBsZXNzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBsZXNzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbGVzcykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsZXNzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSA+IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xlc3NfZXF1YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGVzc19lcXVhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzOGFmOTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGVzc19lcXVhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9sZXNzX2VxdWFsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbGVzc19lcXVhbF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbGVzc19lcXVhbF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbGVzc19lcXVhbF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGxlc3NfZXF1YWxfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGxlc3NfZXF1YWwKLQotICAgIDogbGVzc19lcXVhbF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGxlc3NfZXF1YWxfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGxlc3NfZXF1YWxfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBsZXNzX2VxdWFsKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlIDw9IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjYzhjNDYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGlzdC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBsaXN0OwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MDwgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDI8IFQwLFQxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0NDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0NTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDU8IFQwLFQxLFQyLFQzLFQ0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0NzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0ODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBsaXN0Ci0gICAgOiBsaXN0MjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3RfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0M2YzOGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyOCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9saXN0X2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCA9IExPTkdfTUFYLCBsb25nIEMxID0gTE9OR19NQVgsIGxvbmcgQzIgPSBMT05HX01BWAotICAgICwgbG9uZyBDMyA9IExPTkdfTUFYLCBsb25nIEM0ID0gTE9OR19NQVgsIGxvbmcgQzUgPSBMT05HX01BWAotICAgICwgbG9uZyBDNiA9IExPTkdfTUFYLCBsb25nIEM3ID0gTE9OR19NQVgsIGxvbmcgQzggPSBMT05HX01BWAotICAgICwgbG9uZyBDOSA9IExPTkdfTUFYLCBsb25nIEMxMCA9IExPTkdfTUFYLCBsb25nIEMxMSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxMiA9IExPTkdfTUFYLCBsb25nIEMxMyA9IExPTkdfTUFYLCBsb25nIEMxNCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxNSA9IExPTkdfTUFYLCBsb25nIEMxNiA9IExPTkdfTUFYLCBsb25nIEMxNyA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxOCA9IExPTkdfTUFYLCBsb25nIEMxOSA9IExPTkdfTUFYCi0gICAgPgotc3RydWN0IGxpc3RfYzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MF9jPFQ+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MF9jPFQ+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxX2M8IFQsQzAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDFfYzwgVCxDMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QyX2M8IFQsQzAsQzEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDJfYzwgVCxDMCxDMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QzX2M8IFQsQzAsQzEsQzIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDNfYzwgVCxDMCxDMSxDMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q0X2M8IFQsQzAsQzEsQzIsQzMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDRfYzwgVCxDMCxDMSxDMixDMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q1X2M8IFQsQzAsQzEsQzIsQzMsQzQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDVfYzwgVCxDMCxDMSxDMixDMyxDNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzkKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxMV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTFfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTJfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxM19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxM19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxNF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE0X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE1X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxNl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTdfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MThfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxOF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxOV9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgPgotc3RydWN0IGxpc3RfYwotICAgIDogbGlzdDIwX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDIwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL21hcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9tYXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTc0ZjI4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL21hcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbWFwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IG1hcDsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAwPCAgPgotewotICAgIHR5cGVkZWYgbWFwMDwgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTxUMD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE8VDA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAyPCBUMCxUMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAyPCBUMCxUMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMzwgVDAsVDEsVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMzwgVDAsVDEsVDIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA0PCBUMCxUMSxUMixUMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA0PCBUMCxUMSxUMixUMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA1PCBUMCxUMSxUMixUMyxUNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA1PCBUMCxUMSxUMixUMyxUNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwNjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNjwgVDAsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTY8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE3PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxODwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTk8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgbWFwCi0gICAgOiBtYXAyMDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL21pbnVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL21pbnVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWU4MmZiMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9taW51cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbWludXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBtaW51c19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbWludXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IG1pbnVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbWludXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbWludXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG1pbnVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbWludXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IG1pbnVzCi0gICAgOiBtaW51czwgbWludXM8IG1pbnVzPCBtaW51czwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBtaW51czwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBtaW51czwgbWludXM8IG1pbnVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBtaW51czwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBtaW51czwgbWludXM8IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IG1pbnVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBtaW51c19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIG1pbnVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBtaW51c190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBtaW51cwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIG1pbnVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBtaW51c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgLSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9tb2R1bHVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL21vZHVsdXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTE0M2Q2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL21vZHVsdXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbW9kdWx1cy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IG1vZHVsdXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IG1vZHVsdXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IG1vZHVsdXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBtb2R1bHVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG1vZHVsdXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG1vZHVsdXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBtb2R1bHVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBtb2R1bHVzCi0KLSAgICA6IG1vZHVsdXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBtb2R1bHVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBtb2R1bHVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbW9kdWx1cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbW9kdWx1c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgJSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9ub3RfZXF1YWxfdG8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbm90X2VxdWFsX3RvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmYxMTVhZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9ub3RfZXF1YWxfdG8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbm90X2VxdWFsX3RvLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBub3RfZXF1YWxfdG9faW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IG5vdF9lcXVhbF90b19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG5vdF9lcXVhbF90b190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgbm90X2VxdWFsX3RvCi0KLSAgICA6IG5vdF9lcXVhbF90b19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIG5vdF9lcXVhbF90b190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbm90X2VxdWFsX3RvX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbm90X2VxdWFsX3RvKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgIT0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vb3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vb3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MWNlM2QzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL29yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL29yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGJvb2wgQ18sIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0ID4KLXN0cnVjdCBvcl9pbXBsCi0gICAgOiB0cnVlXwotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0ID4KLXN0cnVjdCBvcl9pbXBsPCBmYWxzZSxUMSxUMixUMyxUNCA+Ci0gICAgOiBvcl9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICwgVDIsIFQzLCBUNAotICAgICAgICAsIGZhbHNlXwotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgb3JfaW1wbDwKLSAgICAgICAgICBmYWxzZQotICAgICAgICAsIGZhbHNlXywgZmFsc2VfLCBmYWxzZV8sIGZhbHNlXwotICAgICAgICA+Ci0gICAgOiBmYWxzZV8KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgICwgdHlwZW5hbWUgVDMgPSBmYWxzZV8sIHR5cGVuYW1lIFQ0ID0gZmFsc2VfLCB0eXBlbmFtZSBUNSA9IGZhbHNlXwotICAgID4KLXN0cnVjdCBvcl8KLQotICAgIDogYXV4Ojpvcl9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPgotCi17Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKAotICAgICAgMgotICAgICwgNQotICAgICwgb3JfCi0gICAgKQotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vcGxhY2Vob2xkZXJzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3BsYWNlaG9sZGVycy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhMjhjMDkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vcGxhY2Vob2xkZXJzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEtMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9wbGFjZWhvbGRlcnMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8IC0xID4gXzsKLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfOwotfQotCi19fQotCi0vLy8gYWd1cnQsIDE3L21hci8wMjogb25lIG1vcmUgcGxhY2Vob2xkZXIgZm9yIHRoZSBsYXN0ICdhcHBseSMnIAotLy8vIHNwZWNpYWxpemF0aW9uCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwxPiBfMTsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8xKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfMTsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDI+IF8yOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzIpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol8yOwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Mz4gXzM7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfMykKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzM7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzw0PiBfNDsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF80KQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfNDsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDU+IF81OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzUpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol81OwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Nj4gXzY7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfNikKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzY7Ci19Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9wbHVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3BsdXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZTdmZTc1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3BsdXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3BsdXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBwbHVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBwbHVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBwbHVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgcGx1c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBwbHVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBwbHVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcGx1c190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgcGx1cwotICAgIDogcGx1czwgcGx1czwgcGx1czwgcGx1czwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBwbHVzPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IHBsdXM8IHBsdXM8IHBsdXM8IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgcGx1czwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBwbHVzPCBwbHVzPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHBsdXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IHBsdXM8IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IHBsdXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBwbHVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBwbHVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHBsdXMKLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBwbHVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBwbHVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICArIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3F1b3RlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3F1b3RlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGNlNzllZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9xdW90ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvcXVvdGUuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBib29sIGhhc190eXBlXyA+Ci1zdHJ1Y3QgcXVvdGVfaW1wbAotICAgIDogVAotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IHF1b3RlX2ltcGw8IFQsZmFsc2UgPgotewotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgID4KLXN0cnVjdCBxdW90ZTEKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IHF1b3RlX2ltcGw8Ci0gICAgICAgICAgICAgIEY8VTE+Ci0gICAgICAgICAgICAsIGF1eDo6aGFzX3R5cGU8IEY8VTE+ID46OnZhbHVlCi0gICAgICAgICAgICA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlMgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IHF1b3RlX2ltcGw8Ci0gICAgICAgICAgICAgIEY8IFUxLFUyID4KLSAgICAgICAgICAgICwgYXV4OjpoYXNfdHlwZTwgRjwgVTEsVTIgPiA+Ojp2YWx1ZQotICAgICAgICAgICAgPgotCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGUzCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IHF1b3RlX2ltcGw8Ci0gICAgICAgICAgICAgIEY8IFUxLFUyLFUzID4KLSAgICAgICAgICAgICwgYXV4OjpoYXNfdHlwZTwgRjwgVTEsVTIsVTMgPiA+Ojp2YWx1ZQotICAgICAgICAgICAgPgotCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlNAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IHF1b3RlX2ltcGw8Ci0gICAgICAgICAgICAgIEY8IFUxLFUyLFUzLFU0ID4KLSAgICAgICAgICAgICwgYXV4OjpoYXNfdHlwZTwgRjwgVTEsVTIsVTMsVTQgPiA+Ojp2YWx1ZQotICAgICAgICAgICAgPgotCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0Ci0gICAgICAgICwgdHlwZW5hbWUgUDUKLSAgICAgICAgPgotICAgICAgY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGU1Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAgICAgLCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBxdW90ZV9pbXBsPAotICAgICAgICAgICAgICBGPCBVMSxVMixVMyxVNCxVNSA+Ci0gICAgICAgICAgICAsIGF1eDo6aGFzX3R5cGU8IEY8IFUxLFUyLFUzLFU0LFU1ID4gPjo6dmFsdWUKLSAgICAgICAgICAgID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vcmV2ZXJzZV9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vcmV2ZXJzZV9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDNhZDc1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3JldmVyc2VfZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzMSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL3JldmVyc2VfZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsPCAwLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgZndkX3N0YXRlMCBia3dkX3N0YXRlMDsKLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsPCAxLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIAotCi0gICAgdHlwZWRlZiBmd2Rfc3RhdGUxIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDwgMixGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlMiBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsPCAzLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIAotCi0gICAgdHlwZWRlZiBmd2Rfc3RhdGUzIGJrd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIAotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDwgNCxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlNCBia3dkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTQsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIAotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsCi17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHJldmVyc2VfZm9sZF9pbXBsPAotICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAsIGl0ZXI0Ci0gICAgICAgICwgTGFzdAotICAgICAgICAsIGZ3ZF9zdGF0ZTQKLSAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gbmVzdGVkX2NodW5rOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6OnN0YXRlIGJrd2Rfc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlNCwgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw8IC0xLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgcmV2ZXJzZV9mb2xkX2ltcGw8Ci0gICAgICAgICAgLTEKLSAgICAgICAgLCB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjxGb3J3YXJkT3AsU3RhdGUsIHR5cGVuYW1lIGRlcmVmPEZpcnN0Pjo6dHlwZT46OnR5cGUKLSAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gbmVzdGVkX3N0ZXA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwKLSAgICAgICAgICBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6OnN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgZGVyZWY8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgID46OnR5cGUgc3RhdGU7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDwgLTEsTGFzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzNiZjUwOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzMSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPCAwLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgZndkX3N0YXRlMCBia3dkX3N0YXRlMDsKLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IDEsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTEgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IDIsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTIgYmt3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIAotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPCAzLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMixpdGVyMiA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIAotCi0gICAgdHlwZWRlZiBmd2Rfc3RhdGUzIGJrd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUzLGl0ZXIyID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIAotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPCA0LEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMixpdGVyMiA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMyxpdGVyMyA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgIAotCi0gICAgdHlwZWRlZiBmd2Rfc3RhdGU0IGJrd2Rfc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGU0LGl0ZXIzID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTMsaXRlcjIgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbAotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMixpdGVyMiA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMyxpdGVyMyA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgIAotCi0gICAgdHlwZWRlZiByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAsIGl0ZXI0Ci0gICAgICAgICwgTGFzdAotICAgICAgICAsIGZ3ZF9zdGF0ZTQKLSAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gbmVzdGVkX2NodW5rOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6OnN0YXRlIGJrd2Rfc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGU0LGl0ZXIzID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTMsaXRlcjIgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgLTEsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgIC0xCi0gICAgICAgICwgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxTdGF0ZSxGaXJzdCA+Ojp0eXBlCi0gICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IG5lc3RlZF9zdGVwOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8Ci0gICAgICAgICAgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjpzdGF0ZQotICAgICAgICAsIEZpcnN0Ci0gICAgICAgID46OnR5cGUgc3RhdGU7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPCAtMSxMYXN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9zZXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vc2V0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGM0Y2ExMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9zZXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NldC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBzZXQ7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MDwgID4KLXsKLSAgICB0eXBlZGVmIHNldDA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0ODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0ODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IHNldAotICAgIDogc2V0MjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9zZXRfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9zZXRfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlZjJmZGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vc2V0X2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzI4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NldF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAgPSBMT05HX01BWCwgbG9uZyBDMSA9IExPTkdfTUFYLCBsb25nIEMyID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzMgPSBMT05HX01BWCwgbG9uZyBDNCA9IExPTkdfTUFYLCBsb25nIEM1ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzYgPSBMT05HX01BWCwgbG9uZyBDNyA9IExPTkdfTUFYLCBsb25nIEM4ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzkgPSBMT05HX01BWCwgbG9uZyBDMTAgPSBMT05HX01BWCwgbG9uZyBDMTEgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTIgPSBMT05HX01BWCwgbG9uZyBDMTMgPSBMT05HX01BWCwgbG9uZyBDMTQgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTUgPSBMT05HX01BWCwgbG9uZyBDMTYgPSBMT05HX01BWCwgbG9uZyBDMTcgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTggPSBMT05HX01BWCwgbG9uZyBDMTkgPSBMT05HX01BWAotICAgID4KLXN0cnVjdCBzZXRfYzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDBfYzxUPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MF9jPFQ+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MV9jPCBULEMwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDFfYzwgVCxDMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0Ml9jPCBULEMwLEMxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDJfYzwgVCxDMCxDMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0M19jPCBULEMwLEMxLEMyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDNfYzwgVCxDMCxDMSxDMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0NF9jPCBULEMwLEMxLEMyLEMzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDRfYzwgVCxDMCxDMSxDMixDMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0NV9jPCBULEMwLEMxLEMyLEMzLEM0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDVfYzwgVCxDMCxDMSxDMixDMyxDNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0Nl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0N19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0OF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0OV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzkKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTFfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTFfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDEyX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTNfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxM19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE0X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxNV9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTZfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE3X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE4X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTlfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgPgotc3RydWN0IHNldF9jCi0gICAgOiBzZXQyMF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDIwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3NoaWZ0X2xlZnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vc2hpZnRfbGVmdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjNGQzODkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vc2hpZnRfbGVmdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zaGlmdF9sZWZ0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgc2hpZnRfbGVmdF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgc2hpZnRfbGVmdF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHNoaWZ0X2xlZnRfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IHNoaWZ0X2xlZnQKLQotICAgIDogc2hpZnRfbGVmdF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHNoaWZ0X2xlZnRfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIHNoaWZ0X2xlZnRfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBzaGlmdF9sZWZ0KQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTiwgdHlwZW5hbWUgUyA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgTjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIDw8IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChTKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vc2hpZnRfcmlnaHQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vc2hpZnRfcmlnaHQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YjYwOGMxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3NoaWZ0X3JpZ2h0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NoaWZ0X3JpZ2h0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHNoaWZ0X3JpZ2h0X2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBzaGlmdF9yaWdodF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHNoaWZ0X3JpZ2h0X3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBzaGlmdF9yaWdodAotCi0gICAgOiBzaGlmdF9yaWdodF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHNoaWZ0X3JpZ2h0X3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBzaGlmdF9yaWdodF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIHNoaWZ0X3JpZ2h0KQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4sIHR5cGVuYW1lIFMgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIE46OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlCi0gICAgICAgICAgICAgICAgICA+PiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoUyk6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3RlbXBsYXRlX2FyaXR5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3RlbXBsYXRlX2FyaXR5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmNiNDJhZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi90ZW1wbGF0ZV9hcml0eS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL3RlbXBsYXRlX2FyaXR5LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3RpbWVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3RpbWVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmVlODUzYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi90aW1lcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdGltZXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCB0aW1lc19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgdGltZXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHRpbWVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgdGltZXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgdGltZXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHRpbWVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgdGltZXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IHRpbWVzCi0gICAgOiB0aW1lczwgdGltZXM8IHRpbWVzPCB0aW1lczwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCB0aW1lczwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiB0aW1lczwgdGltZXM8IHRpbWVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCB0aW1lczwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiB0aW1lczwgdGltZXM8IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IHRpbWVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiB0aW1lc19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHRpbWVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSB0aW1lc190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIHRpbWVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCB0aW1lc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgKiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi91bnBhY2tfYXJncy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi91bnBhY2tfYXJncy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlYzMxYWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdW5wYWNrX2FyZ3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdW5wYWNrX2FyZ3MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgaW50IHNpemUsIHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCAwLEYsQXJncyA+Ci0gICAgOiBhcHBseTA8Ci0gICAgICAgICAgRgotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgMSxGLEFyZ3MgPgotICAgIDogYXBwbHkxPAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgMixGLEFyZ3MgPgotICAgIDogYXBwbHkyPAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDMsRixBcmdzID4KLSAgICA6IGFwcGx5MzwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywyID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDQsRixBcmdzID4KLSAgICA6IGFwcGx5NDwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywyID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMyA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCA1LEYsQXJncyA+Ci0gICAgOiBhcHBseTU8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDMgPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsNCA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IHVucGFja19hcmdzCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEFyZ3MgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGF1eDo6dW5wYWNrX2FyZ3NfaW1wbDwgc2l6ZTxBcmdzPjo6dmFsdWUsRiwgQXJncyA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfUEFTU19USFJPVUdIX0xBTUJEQV9TUEVDKDEsIHVucGFja19hcmdzKQotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGY2NzU4OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCB2ZWN0b3I7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMDwgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IHZlY3RvcgotICAgIDogdmVjdG9yMjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3JfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3JfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyZmJkYjQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzA5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvcl9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAgPSBMT05HX01BWCwgbG9uZyBDMSA9IExPTkdfTUFYLCBsb25nIEMyID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzMgPSBMT05HX01BWCwgbG9uZyBDNCA9IExPTkdfTUFYLCBsb25nIEM1ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzYgPSBMT05HX01BWCwgbG9uZyBDNyA9IExPTkdfTUFYLCBsb25nIEM4ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzkgPSBMT05HX01BWCwgbG9uZyBDMTAgPSBMT05HX01BWCwgbG9uZyBDMTEgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTIgPSBMT05HX01BWCwgbG9uZyBDMTMgPSBMT05HX01BWCwgbG9uZyBDMTQgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTUgPSBMT05HX01BWCwgbG9uZyBDMTYgPSBMT05HX01BWCwgbG9uZyBDMTcgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTggPSBMT05HX01BWCwgbG9uZyBDMTkgPSBMT05HX01BWAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjBfYzxUPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMF9jPFQ+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMV9jPCBULCBUKEMwKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxX2M8IFQsIFQoQzApID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IyX2M8IFQsIFQoQzApLCBUKEMxKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyX2M8IFQsIFQoQzApLCBUKEMxKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yM19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjNfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I0X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I1X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I1X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yNl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjZfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I3X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNwotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I4X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I4X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yOV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjlfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTBfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTBfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjExX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEyX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTNfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMikgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTNfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMikgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMwotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE0X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMykgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE1X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTZfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTZfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNgotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE3X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNikgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE4X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNykgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTlfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTlfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCkgPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYwotICAgIDogdmVjdG9yMjBfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCksIFQoQzE5KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyMF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNyksIFQoQzE4KSwgVChDMTkpID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2FkZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9hZGQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNDBiNzAzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2FkZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfQUREX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9BRERfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBhZGQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvcHJlcHJvY2Vzc29yLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fT1dOX1BQX1BSSU1JVElWRVMpCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvdHVwbGUuaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0JST0tFTl9QUF9NQUNST19FWFBBTlNJT04pCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0FERChpLGopIFwKLSAgICBORE5CT09TVF9NUExfUFBfQUREX0RFTEFZKGksaikgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfQUREX0RFTEFZKGksaikgXAotICAgIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9NUExfUFBfVFVQTEVfMTFfRUxFTV8jI2ksTkROQk9PU1RfTVBMX1BQX0FERF8jI2opIFwKLSAgICAvKiovCi0jZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfQUREKGksaikgXAotICAgIE5ETkJPT1NUX01QTF9QUF9BRERfREVMQVkoaSxqKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9BRERfREVMQVkoaSxqKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX1RVUExFXzExX0VMRU1fIyNpIE5ETkJPT1NUX01QTF9QUF9BRERfIyNqIFwKLSAgICAvKiovCi0jZW5kaWYKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfQUREXzAgKDAsMSwyLDMsNCw1LDYsNyw4LDksMTApCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9BRERfMSAoMSwyLDMsNCw1LDYsNyw4LDksMTAsMCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0FERF8yICgyLDMsNCw1LDYsNyw4LDksMTAsMCwwKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfQUREXzMgKDMsNCw1LDYsNyw4LDksMTAsMCwwLDApCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9BRERfNCAoNCw1LDYsNyw4LDksMTAsMCwwLDAsMCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0FERF81ICg1LDYsNyw4LDksMTAsMCwwLDAsMCwwKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfQUREXzYgKDYsNyw4LDksMTAsMCwwLDAsMCwwLDApCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9BRERfNyAoNyw4LDksMTAsMCwwLDAsMCwwLDAsMCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0FERF84ICg4LDksMTAsMCwwLDAsMCwwLDAsMCwwKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfQUREXzkgKDksMTAsMCwwLDAsMCwwLDAsMCwwLDApCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9BRERfMTAgKDEwLDAsMCwwLDAsMCwwLDAsMCwwLDApCi0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9hZGQuaHBwPgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9BREQoaSxqKSBcCi0gICAgTkROQk9PU1RfUFBfQUREKGksaikgXAotICAgIC8qKi8KLSAgICAKLSNlbmRpZiAKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX0FERF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2RlZl9wYXJhbXNfdGFpbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9kZWZfcGFyYW1zX3RhaWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjUzNmQwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2RlZl9wYXJhbXNfdGFpbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX0RFRl9QQVJBTVNfVEFJTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfREVGX1BBUkFNU19UQUlMX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogZGVmX3BhcmFtc190YWlsLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpbWl0cy9hcml0eS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2R0cC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3ByZXByb2Nlc3Nvci5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29tbWFfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2FuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2lkZW50aXR5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZW1wdHkuaHBwPgotCi0vLyBORE5CT09TVF9NUExfUFBfREVGX1BBUkFNU19UQUlMKDEsVCx2YWx1ZSk6ICwgVDEgPSB2YWx1ZSwgLi4sIFRuID0gdmFsdWUKLS8vIE5ETkJPT1NUX01QTF9QUF9ERUZfUEFSQU1TX1RBSUwoMixULHZhbHVlKTogLCBUMiA9IHZhbHVlLCAuLiwgVG4gPSB2YWx1ZQotLy8gTkROQk9PU1RfTVBMX1BQX0RFRl9QQVJBTVNfVEFJTChuLFQsdmFsdWUpOiA8bm90aGluZz4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fT1dOX1BQX1BSSU1JVElWRVMpCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZmlsdGVyX3BhcmFtcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3N1Yi5ocHA+Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0RFRl9QQVJBTVNfVEFJTF9JTVBMKGksIHBhcmFtLCB2YWx1ZV9mdW5jKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX0RFRl9QQVJBTVNfVEFJTF9ERUxBWV8xKCBcCi0gICAgICAgICAgaSBcCi0gICAgICAgICwgTkROQk9PU1RfTVBMX1BQX1NVQihORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZLGkpIFwKLSAgICAgICAgLCBwYXJhbSBcCi0gICAgICAgICwgdmFsdWVfZnVuYyBcCi0gICAgICAgICkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfREVGX1BBUkFNU19UQUlMX0RFTEFZXzEoaSwgbiwgcGFyYW0sIHZhbHVlX2Z1bmMpIFwKLSAgICBORE5CT09TVF9NUExfUFBfREVGX1BBUkFNU19UQUlMX0RFTEFZXzIoaSxuLHBhcmFtLHZhbHVlX2Z1bmMpIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0RFRl9QQVJBTVNfVEFJTF9ERUxBWV8yKGksIG4sIHBhcmFtLCB2YWx1ZV9mdW5jKSBcCi0gICAgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQU5EKGksbikpIFwKLSAgICBORE5CT09TVF9NUExfUFBfREVGX1BBUkFNU19UQUlMXyMjaShuLHBhcmFtLHZhbHVlX2Z1bmMpIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0RFRl9QQVJBTVNfVEFJTF8wKGkscCx2KSBORE5CT09TVF9NUExfUFBfRklMVEVSX1BBUkFNU18jI2kocCMjMSB2KCkscCMjMiB2KCkscCMjMyB2KCkscCMjNCB2KCkscCMjNSB2KCkscCMjNiB2KCkscCMjNyB2KCkscCMjOCB2KCkscCMjOSB2KCkpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ERUZfUEFSQU1TX1RBSUxfMShpLHAsdikgTkROQk9PU1RfTVBMX1BQX0ZJTFRFUl9QQVJBTVNfIyNpKHAjIzIgdigpLHAjIzMgdigpLHAjIzQgdigpLHAjIzUgdigpLHAjIzYgdigpLHAjIzcgdigpLHAjIzggdigpLHAjIzkgdigpLHAxKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfREVGX1BBUkFNU19UQUlMXzIoaSxwLHYpIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXyMjaShwIyMzIHYoKSxwIyM0IHYoKSxwIyM1IHYoKSxwIyM2IHYoKSxwIyM3IHYoKSxwIyM4IHYoKSxwIyM5IHYoKSxwMSxwMikKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0RFRl9QQVJBTVNfVEFJTF8zKGkscCx2KSBORE5CT09TVF9NUExfUFBfRklMVEVSX1BBUkFNU18jI2kocCMjNCB2KCkscCMjNSB2KCkscCMjNiB2KCkscCMjNyB2KCkscCMjOCB2KCkscCMjOSB2KCkscDEscDIscDMpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ERUZfUEFSQU1TX1RBSUxfNChpLHAsdikgTkROQk9PU1RfTVBMX1BQX0ZJTFRFUl9QQVJBTVNfIyNpKHAjIzUgdigpLHAjIzYgdigpLHAjIzcgdigpLHAjIzggdigpLHAjIzkgdigpLHAxLHAyLHAzLHA0KQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfREVGX1BBUkFNU19UQUlMXzUoaSxwLHYpIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXyMjaShwIyM2IHYoKSxwIyM3IHYoKSxwIyM4IHYoKSxwIyM5IHYoKSxwMSxwMixwMyxwNCxwNSkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0RFRl9QQVJBTVNfVEFJTF82KGkscCx2KSBORE5CT09TVF9NUExfUFBfRklMVEVSX1BBUkFNU18jI2kocCMjNyB2KCkscCMjOCB2KCkscCMjOSB2KCkscDEscDIscDMscDQscDUscDYpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ERUZfUEFSQU1TX1RBSUxfNyhpLHAsdikgTkROQk9PU1RfTVBMX1BQX0ZJTFRFUl9QQVJBTVNfIyNpKHAjIzggdigpLHAjIzkgdigpLHAxLHAyLHAzLHA0LHA1LHA2LHA3KQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfREVGX1BBUkFNU19UQUlMXzgoaSxwLHYpIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXyMjaShwIyM5IHYoKSxwMSxwMixwMyxwNCxwNSxwNixwNyxwOCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0RFRl9QQVJBTVNfVEFJTF85KGkscCx2KSBORE5CT09TVF9NUExfUFBfRklMVEVSX1BBUkFNU18jI2kocDEscDIscDMscDQscDUscDYscDcscDgscDkpCi0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9hZGQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL3N1Yi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2luYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VsZW0uaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBlYXQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9BVVhfVEFJTF9QQVJBTV9GVU5DKHVudXNlZCwgaSwgb3ApIFwKLSAgICAsIE5ETkJPT1NUX1BQX0NBVCggXAotICAgICAgICAgIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMSwgb3ApIFwKLSAgICAgICAgLCBORE5CT09TVF9QUF9BRERfRCgxLCBpLCBORE5CT09TVF9QUF9JTkMoTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAwLCBvcCkpKSBcCi0gICAgICAgICkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAyLCBvcCkoKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ERUZfUEFSQU1TX1RBSUxfSU1QTChpLCBwYXJhbSwgdmFsdWVfZnVuYykgXAotICAgIE5ETkJPT1NUX1BQX1JFUEVBVCggXAotICAgICAgICAgIE5ETkJPT1NUX1BQX1NVQl9EKDEsIE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFksIGkpIFwKLSAgICAgICAgLCBORE5CT09TVF9NUExfUFBfQVVYX1RBSUxfUEFSQU1fRlVOQyBcCi0gICAgICAgICwgKGksIHBhcmFtLCB2YWx1ZV9mdW5jKSBcCi0gICAgICAgICkgXAotICAgIC8qKi8KLQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19PV05fUFBfUFJJTUlUSVZFUwotCi0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ERUZfUEFSQU1TX1RBSUwoaSwgcGFyYW0sIHZhbHVlKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX0RFRl9QQVJBTVNfVEFJTF9JTVBMKGksIHBhcmFtLCBORE5CT09TVF9QUF9JREVOVElUWSg9dmFsdWUpKSBcCi0gICAgLyoqLwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19ERUZBVUxUX1BBUkFNRVRFUlNfSU5fTkVTVEVEX1RFTVBMQVRFUykKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX05FU1RFRF9ERUZfUEFSQU1TX1RBSUwoaSwgcGFyYW0sIHZhbHVlKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX0RFRl9QQVJBTVNfVEFJTF9JTVBMKGksIHBhcmFtLCBORE5CT09TVF9QUF9JREVOVElUWSg9dmFsdWUpKSBcCi0gICAgLyoqLwotI2Vsc2UKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX05FU1RFRF9ERUZfUEFSQU1TX1RBSUwoaSwgcGFyYW0sIHZhbHVlKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX0RFRl9QQVJBTVNfVEFJTF9JTVBMKGksIHBhcmFtLCBORE5CT09TVF9QUF9FTVBUWSkgXAotICAgIC8qKi8KLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfREVGX1BBUkFNU19UQUlMX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZGVmYXVsdF9wYXJhbXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZGVmYXVsdF9wYXJhbXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNTIzM2Y0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2RlZmF1bHRfcGFyYW1zLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9ERUZBVUxUX1BBUkFNU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfREVGQVVMVF9QQVJBTVNfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBkZWZhdWx0X3BhcmFtcy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9wcmVwcm9jZXNzb3IuaHBwPgotCi0vLyBORE5CT09TVF9NUExfUFBfREVGQVVMVF9QQVJBTVMoMCxULGludCk6IDxub3RoaW5nPgotLy8gTkROQk9PU1RfTVBMX1BQX0RFRkFVTFRfUEFSQU1TKDEsVCxpbnQpOiBUMSA9IGludAotLy8gTkROQk9PU1RfTVBMX1BQX0RFRkFVTFRfUEFSQU1TKDIsVCxpbnQpOiBUMSA9IGludCwgVDIgPSBpbnQKLS8vIE5ETkJPT1NUX01QTF9QUF9ERUZBVUxUX1BBUkFNUyhuLFQsaW50KTogVDEgPSBpbnQsIFQyID0gaW50LCAuLiwgVG4gPSBpbnQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fT1dOX1BQX1BSSU1JVElWRVMpCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfREVGQVVMVF9QQVJBTVMobixwLHYpIFwKLSAgICBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfTVBMX1BQX0RFRkFVTFRfUEFSQU1TXyxuKShwLHYpIFwKLSAgICAvKiovCi0gICAgCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ERUZBVUxUX1BBUkFNU18wKHAsdikKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0RFRkFVTFRfUEFSQU1TXzEocCx2KSBwIyMxPXYKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0RFRkFVTFRfUEFSQU1TXzIocCx2KSBwIyMxPXYscCMjMj12Ci0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ERUZBVUxUX1BBUkFNU18zKHAsdikgcCMjMT12LHAjIzI9dixwIyMzPXYKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0RFRkFVTFRfUEFSQU1TXzQocCx2KSBwIyMxPXYscCMjMj12LHAjIzM9dixwIyM0PXYKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0RFRkFVTFRfUEFSQU1TXzUocCx2KSBwIyMxPXYscCMjMj12LHAjIzM9dixwIyM0PXYscCMjNT12Ci0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ERUZBVUxUX1BBUkFNU182KHAsdikgcCMjMT12LHAjIzI9dixwIyMzPXYscCMjND12LHAjIzU9dixwIyM2PXYKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0RFRkFVTFRfUEFSQU1TXzcocCx2KSBwIyMxPXYscCMjMj12LHAjIzM9dixwIyM0PXYscCMjNT12LHAjIzY9dixwIyM3PXYKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0RFRkFVTFRfUEFSQU1TXzgocCx2KSBwIyMxPXYscCMjMj12LHAjIzM9dixwIyM0PXYscCMjNT12LHAjIzY9dixwIyM3PXYscCMjOD12Ci0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ERUZBVUxUX1BBUkFNU185KHAsdikgcCMjMT12LHAjIzI9dixwIyMzPXYscCMjND12LHAjIzU9dixwIyM2PXYscCMjNz12LHAjIzg9dixwIyM5PXYKLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29tbWFfaWYuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBlYXQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pbmMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9BVVhfREVGQVVMVF9QQVJBTV9GVU5DKHVudXNlZCwgaSwgcHYpIFwKLSAgICBORE5CT09TVF9QUF9DT01NQV9JRihpKSBcCi0gICAgTkROQk9PU1RfUFBfQ0FUKCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsMCxwdiksIE5ETkJPT1NUX1BQX0lOQyhpKSApIFwKLSAgICAgICAgPSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsMSxwdikgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfREVGQVVMVF9QQVJBTVMobiwgcGFyYW0sIHZhbHVlKSBcCi0gICAgTkROQk9PU1RfUFBfUkVQRUFUKCBcCi0gICAgICAgICAgbiBcCi0gICAgICAgICwgTkROQk9PU1RfTVBMX1BQX0FVWF9ERUZBVUxUX1BBUkFNX0ZVTkMgXAotICAgICAgICAsIChwYXJhbSx2YWx1ZSkgXAotICAgICAgICApIFwKLSAgICAvKiovCi0KLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfREVGQVVMVF9QQVJBTVNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9lbnVtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2VudW0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNWExNjQxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2VudW0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX0VOVU1fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX0VOVU1fSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBlbnVtLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3ByZXByb2Nlc3Nvci5ocHA+Ci0KLS8vIE5ETkJPT1NUX01QTF9QUF9FTlVNKDAsaW50KTogPG5vdGhpbmc+Ci0vLyBORE5CT09TVF9NUExfUFBfRU5VTSgxLGludCk6IGludAotLy8gTkROQk9PU1RfTVBMX1BQX0VOVU0oMixpbnQpOiBpbnQsIGludAotLy8gTkROQk9PU1RfTVBMX1BQX0VOVU0obixpbnQpOiBpbnQsIGludCwgLi4sIGludAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19PV05fUFBfUFJJTUlUSVZFUykKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9FTlVNKG4sIHBhcmFtKSBcCi0gICAgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX01QTF9QUF9FTlVNXyxuKShwYXJhbSkgXAotICAgIC8qKi8KLSAgICAKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0VOVU1fMChwKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfRU5VTV8xKHApIHAKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0VOVU1fMihwKSBwLHAKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0VOVU1fMyhwKSBwLHAscAotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfRU5VTV80KHApIHAscCxwLHAKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0VOVU1fNShwKSBwLHAscCxwLHAKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0VOVU1fNihwKSBwLHAscCxwLHAscAotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfRU5VTV83KHApIHAscCxwLHAscCxwLHAKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0VOVU1fOChwKSBwLHAscCxwLHAscCxwLHAKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0VOVU1fOShwKSBwLHAscCxwLHAscCxwLHAscAotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbW1hX2lmLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZWF0LmhwcD4KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfQVVYX0VOVU1fRlVOQyh1bnVzZWQsIGksIHBhcmFtKSBcCi0gICAgTkROQk9PU1RfUFBfQ09NTUFfSUYoaSkgcGFyYW0gXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfRU5VTShuLCBwYXJhbSkgXAotICAgIE5ETkJPT1NUX1BQX1JFUEVBVCggXAotICAgICAgICAgIG4gXAotICAgICAgICAsIE5ETkJPT1NUX01QTF9QUF9BVVhfRU5VTV9GVU5DIFwKLSAgICAgICAgLCBwYXJhbSBcCi0gICAgICAgICkgXAotICAgIC8qKi8KLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9FTlVNX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZXh0X3BhcmFtcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9leHRfcGFyYW1zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDg5ZTQ5NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9leHRfcGFyYW1zLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9FWFRfUEFSQU1TX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9FWFRfUEFSQU1TX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogZXh0X3BhcmFtcy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9wcmVwcm9jZXNzb3IuaHBwPgotCi0vLyBORE5CT09TVF9NUExfUFBfRVhUX1BBUkFNUygyLDIsVCk6IDxub3RoaW5nPgotLy8gTkROQk9PU1RfTVBMX1BQX0VYVF9QQVJBTVMoMiwzLFQpOiBUMgotLy8gTkROQk9PU1RfTVBMX1BQX0VYVF9QQVJBTVMoMiw0LFQpOiBUMiwgVDMKLS8vIE5ETkJPT1NUX01QTF9QUF9FWFRfUEFSQU1TKDIsbixUKTogVDIsIFQzLCAuLiwgVG4tMQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19PV05fUFBfUFJJTUlUSVZFUykKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9maWx0ZXJfcGFyYW1zLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3Ivc3ViLmhwcD4KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfRVhUX1BBUkFNUyhpLGoscCkgXAotICAgIE5ETkJPT1NUX01QTF9QUF9FWFRfUEFSQU1TX0RFTEFZXzEoaSxORE5CT09TVF9NUExfUFBfU1VCKGosaSkscCkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfRVhUX1BBUkFNU19ERUxBWV8xKGksbixwKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX0VYVF9QQVJBTVNfREVMQVlfMihpLG4scCkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfRVhUX1BBUkFNU19ERUxBWV8yKGksbixwKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX0VYVF9QQVJBTVNfIyNpKG4scCkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfRVhUX1BBUkFNU18xKGkscCkgTkROQk9PU1RfTVBMX1BQX0ZJTFRFUl9QQVJBTVNfIyNpKHAjIzEscCMjMixwIyMzLHAjIzQscCMjNSxwIyM2LHAjIzcscCMjOCxwIyM5KQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfRVhUX1BBUkFNU18yKGkscCkgTkROQk9PU1RfTVBMX1BQX0ZJTFRFUl9QQVJBTVNfIyNpKHAjIzIscCMjMyxwIyM0LHAjIzUscCMjNixwIyM3LHAjIzgscCMjOSxwMSkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0VYVF9QQVJBTVNfMyhpLHApIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXyMjaShwIyMzLHAjIzQscCMjNSxwIyM2LHAjIzcscCMjOCxwIyM5LHAxLHAyKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfRVhUX1BBUkFNU180KGkscCkgTkROQk9PU1RfTVBMX1BQX0ZJTFRFUl9QQVJBTVNfIyNpKHAjIzQscCMjNSxwIyM2LHAjIzcscCMjOCxwIyM5LHAxLHAyLHAzKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfRVhUX1BBUkFNU181KGkscCkgTkROQk9PU1RfTVBMX1BQX0ZJTFRFUl9QQVJBTVNfIyNpKHAjIzUscCMjNixwIyM3LHAjIzgscCMjOSxwMSxwMixwMyxwNCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0VYVF9QQVJBTVNfNihpLHApIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXyMjaShwIyM2LHAjIzcscCMjOCxwIyM5LHAxLHAyLHAzLHA0LHA1KQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfRVhUX1BBUkFNU183KGkscCkgTkROQk9PU1RfTVBMX1BQX0ZJTFRFUl9QQVJBTVNfIyNpKHAjIzcscCMjOCxwIyM5LHAxLHAyLHAzLHA0LHA1LHA2KQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfRVhUX1BBUkFNU184KGkscCkgTkROQk9PU1RfTVBMX1BQX0ZJTFRFUl9QQVJBTVNfIyNpKHAjIzgscCMjOSxwMSxwMixwMyxwNCxwNSxwNixwNykKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0VYVF9QQVJBTVNfOShpLHApIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXyMjaShwIyM5LHAxLHAyLHAzLHA0LHA1LHA2LHA3LHA4KQotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvYWRkLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9zdWIuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb21tYV9pZi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGVhdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VsZW0uaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9BVVhfRVhUX1BBUkFNX0ZVTkModW51c2VkLCBpLCBvcCkgXAotICAgIE5ETkJPT1NUX1BQX0NPTU1BX0lGKGkpIFwKLSAgICBORE5CT09TVF9QUF9DQVQoIFwKLSAgICAgICAgICBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsMSxvcCkgXAotICAgICAgICAsIE5ETkJPT1NUX1BQX0FERF9EKDEsIGksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwwLG9wKSkgXAotICAgICAgICApIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0VYVF9QQVJBTVMoaSwgaiwgcGFyYW0pIFwKLSAgICBORE5CT09TVF9QUF9SRVBFQVQoIFwKLSAgICAgICAgICBORE5CT09TVF9QUF9TVUJfRCgxLGosaSkgXAotICAgICAgICAsIE5ETkJPT1NUX01QTF9QUF9BVVhfRVhUX1BBUkFNX0ZVTkMgXAotICAgICAgICAsIChpLHBhcmFtKSBcCi0gICAgICAgICkgXAotICAgIC8qKi8KLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9FWFRfUEFSQU1TX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZmlsdGVyX3BhcmFtcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9maWx0ZXJfcGFyYW1zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2E3NTEwNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9maWx0ZXJfcGFyYW1zLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9GSUxURVJfUEFSQU1TX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9GSUxURVJfUEFSQU1TX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogZmlsdGVyX3BhcmFtcy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2RlZmluZSBORE5CT09TVF9NUExfUFBfRklMVEVSX1BBUkFNU18wKHAxLHAyLHAzLHA0LHA1LHA2LHA3LHA4LHA5KSAKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0ZJTFRFUl9QQVJBTVNfMShwMSxwMixwMyxwNCxwNSxwNixwNyxwOCxwOSkgcDEKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0ZJTFRFUl9QQVJBTVNfMihwMSxwMixwMyxwNCxwNSxwNixwNyxwOCxwOSkgcDEscDIKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0ZJTFRFUl9QQVJBTVNfMyhwMSxwMixwMyxwNCxwNSxwNixwNyxwOCxwOSkgcDEscDIscDMKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0ZJTFRFUl9QQVJBTVNfNChwMSxwMixwMyxwNCxwNSxwNixwNyxwOCxwOSkgcDEscDIscDMscDQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0ZJTFRFUl9QQVJBTVNfNShwMSxwMixwMyxwNCxwNSxwNixwNyxwOCxwOSkgcDEscDIscDMscDQscDUKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0ZJTFRFUl9QQVJBTVNfNihwMSxwMixwMyxwNCxwNSxwNixwNyxwOCxwOSkgcDEscDIscDMscDQscDUscDYKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0ZJTFRFUl9QQVJBTVNfNyhwMSxwMixwMyxwNCxwNSxwNixwNyxwOCxwOSkgcDEscDIscDMscDQscDUscDYscDcKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0ZJTFRFUl9QQVJBTVNfOChwMSxwMixwMyxwNCxwNSxwNixwNyxwOCxwOSkgcDEscDIscDMscDQscDUscDYscDcscDgKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0ZJTFRFUl9QQVJBTVNfOShwMSxwMixwMyxwNCxwNSxwNixwNyxwOCxwOSkgcDEscDIscDMscDQscDUscDYscDcscDgscDkKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX0ZJTFRFUl9QQVJBTVNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9wYXJhbXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFyYW1zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2RkNmM2OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9wYXJhbXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX1BBUkFNU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfUEFSQU1TX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogcGFyYW1zLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3ByZXByb2Nlc3Nvci5ocHA+Ci0KLS8vIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoMCxUKTogPG5vdGhpbmc+Ci0vLyBORE5CT09TVF9NUExfUFBfUEFSQU1TKDEsVCk6IFQxCi0vLyBORE5CT09TVF9NUExfUFBfUEFSQU1TKDIsVCk6IFQxLCBUMgotLy8gTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhuLFQpOiBUMSwgVDIsIC4uLCBUbgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19PV05fUFBfUFJJTUlUSVZFUykKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMobixwKSBcCi0gICAgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX01QTF9QUF9QQVJBTVNfLG4pKHApIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1BBUkFNU18wKHApCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9QQVJBTVNfMShwKSBwIyMxCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9QQVJBTVNfMihwKSBwIyMxLHAjIzIKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1BBUkFNU18zKHApIHAjIzEscCMjMixwIyMzCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9QQVJBTVNfNChwKSBwIyMxLHAjIzIscCMjMyxwIyM0Ci0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9QQVJBTVNfNShwKSBwIyMxLHAjIzIscCMjMyxwIyM0LHAjIzUKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1BBUkFNU182KHApIHAjIzEscCMjMixwIyMzLHAjIzQscCMjNSxwIyM2Ci0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9QQVJBTVNfNyhwKSBwIyMxLHAjIzIscCMjMyxwIyM0LHAjIzUscCMjNixwIyM3Ci0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9QQVJBTVNfOChwKSBwIyMxLHAjIzIscCMjMyxwIyM0LHAjIzUscCMjNixwIyM3LHAjIzgKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1BBUkFNU185KHApIHAjIzEscCMjMixwIyMzLHAjIzQscCMjNSxwIyM2LHAjIzcscCMjOCxwIyM5Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29tbWFfaWYuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBlYXQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pbmMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9BVVhfUEFSQU1fRlVOQyh1bnVzZWQsIGksIHBhcmFtKSBcCi0gICAgTkROQk9PU1RfUFBfQ09NTUFfSUYoaSkgXAotICAgIE5ETkJPT1NUX1BQX0NBVChwYXJhbSwgTkROQk9PU1RfUFBfSU5DKGkpKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMobiwgcGFyYW0pIFwKLSAgICBORE5CT09TVF9QUF9SRVBFQVQoIFwKLSAgICAgICAgICBuIFwKLSAgICAgICAgLCBORE5CT09TVF9NUExfUFBfQVVYX1BBUkFNX0ZVTkMgXAotICAgICAgICAsIHBhcmFtIFwKLSAgICAgICAgKSBcCi0gICAgLyoqLwotCi0jZW5kaWYgCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9QQVJBTVNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9wYXJ0aWFsX3NwZWNfcGFyYW1zLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3BhcnRpYWxfc3BlY19wYXJhbXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMWI2M2E1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3BhcnRpYWxfc3BlY19wYXJhbXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX1BBUlRJQUxfU1BFQ19QQVJBTVNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX1BBUlRJQUxfU1BFQ19QQVJBTVNfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBwYXJ0aWFsX3NwZWNfcGFyYW1zLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpbWl0cy9hcml0eS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2VudW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9zdWIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb21tYV9pZi5ocHA+Ci0KLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1BBUlRJQUxfU1BFQ19QQVJBTVMobiwgcGFyYW0sIGRlZikgXAotTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhuLCBwYXJhbSkgXAotTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfTVBMX1BQX1NVQihORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZLG4pKSBcCi1ORE5CT09TVF9NUExfUFBfRU5VTSggXAotICAgICAgTkROQk9PU1RfTVBMX1BQX1NVQihORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZLG4pIFwKLSAgICAsIGRlZiBcCi0gICAgKSBcCi0vKiovCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9QQVJUSUFMX1NQRUNfUEFSQU1TX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcmFuZ2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcmFuZ2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YzUzNmQ3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3JhbmdlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9SQU5HRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfUkFOR0VfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiByYW5nZS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvc3Vic2VxLmhwcD4KLQotI2RlZmluZSBORE5CT09TVF9NUExfUFBfUkFOR0UoZmlyc3QsIGxlbmd0aCkgXAotICAgIE5ETkJPT1NUX1BQX1NFUV9TVUJTRVEoKDApKDEpKDIpKDMpKDQpKDUpKDYpKDcpKDgpKDkpLCBmaXJzdCwgbGVuZ3RoKSBcCi0vKiovCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9SQU5HRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3JlcGVhdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9yZXBlYXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjhhMjAyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3JlcGVhdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfUkVQRUFUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9SRVBFQVRfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiByZXBlYXQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvcHJlcHJvY2Vzc29yLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fT1dOX1BQX1BSSU1JVElWRVMpCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfUkVQRUFUKG4sZixwYXJhbSkgXAotICAgIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9NUExfUFBfUkVQRUFUXyxuKShmLHBhcmFtKSBcCi0gICAgLyoqLwotICAgIAotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfUkVQRUFUXzAoZixwKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfUkVQRUFUXzEoZixwKSBmKDAsMCxwKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfUkVQRUFUXzIoZixwKSBmKDAsMCxwKSBmKDAsMSxwKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfUkVQRUFUXzMoZixwKSBmKDAsMCxwKSBmKDAsMSxwKSBmKDAsMixwKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfUkVQRUFUXzQoZixwKSBmKDAsMCxwKSBmKDAsMSxwKSBmKDAsMixwKSBmKDAsMyxwKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfUkVQRUFUXzUoZixwKSBmKDAsMCxwKSBmKDAsMSxwKSBmKDAsMixwKSBmKDAsMyxwKSBmKDAsNCxwKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfUkVQRUFUXzYoZixwKSBmKDAsMCxwKSBmKDAsMSxwKSBmKDAsMixwKSBmKDAsMyxwKSBmKDAsNCxwKSBmKDAsNSxwKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfUkVQRUFUXzcoZixwKSBmKDAsMCxwKSBmKDAsMSxwKSBmKDAsMixwKSBmKDAsMyxwKSBmKDAsNCxwKSBmKDAsNSxwKSBmKDAsNixwKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfUkVQRUFUXzgoZixwKSBmKDAsMCxwKSBmKDAsMSxwKSBmKDAsMixwKSBmKDAsMyxwKSBmKDAsNCxwKSBmKDAsNSxwKSBmKDAsNixwKSBmKDAsNyxwKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfUkVQRUFUXzkoZixwKSBmKDAsMCxwKSBmKDAsMSxwKSBmKDAsMixwKSBmKDAsMyxwKSBmKDAsNCxwKSBmKDAsNSxwKSBmKDAsNixwKSBmKDAsNyxwKSBmKDAsOCxwKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfUkVQRUFUXzEwKGYscCkgZigwLDAscCkgZigwLDEscCkgZigwLDIscCkgZigwLDMscCkgZigwLDQscCkgZigwLDUscCkgZigwLDYscCkgZigwLDcscCkgZigwLDgscCkgZigwLDkscCkKLQotI2Vsc2UgCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZWF0LmhwcD4KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfUkVQRUFUKG4sZixwYXJhbSkgXAotICAgIE5ETkJPT1NUX1BQX1JFUEVBVChuLGYscGFyYW0pIFwKLSAgICAvKiovCi0KLSNlbmRpZiAKLQotI2RlZmluZSBORE5CT09TVF9NUExfUFBfUkVQRUFUX0lERU5USVRZX0ZVTkModW51c2VkMSwgdW51c2VkMiwgeCkgeAotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfUkVQRUFUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3Ivc3ViLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3N1Yi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxOTQ4MmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3Ivc3ViLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9TVUJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX1NVQl9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHN1Yi5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9wcmVwcm9jZXNzb3IuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19PV05fUFBfUFJJTUlUSVZFUykKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci90dXBsZS5ocHA+Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfQlJPS0VOX1BQX01BQ1JPX0VYUEFOU0lPTikKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfU1VCKGksaikgXAotICAgIE5ETkJPT1NUX01QTF9QUF9TVUJfREVMQVkoaSxqKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9TVUJfREVMQVkoaSxqKSBcCi0gICAgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX01QTF9QUF9UVVBMRV8xMV9FTEVNXyMjaSxORE5CT09TVF9NUExfUFBfU1VCXyMjaikgXAotICAgIC8qKi8KLSNlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9TVUIoaSxqKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX1NVQl9ERUxBWShpLGopIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1NVQl9ERUxBWShpLGopIFwKLSAgICBORE5CT09TVF9NUExfUFBfVFVQTEVfMTFfRUxFTV8jI2kgTkROQk9PU1RfTVBMX1BQX1NVQl8jI2ogXAotICAgIC8qKi8KLSNlbmRpZgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9TVUJfMCAoMCwxLDIsMyw0LDUsNiw3LDgsOSwxMCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1NVQl8xICgwLDAsMSwyLDMsNCw1LDYsNyw4LDkpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9TVUJfMiAoMCwwLDAsMSwyLDMsNCw1LDYsNyw4KQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfU1VCXzMgKDAsMCwwLDAsMSwyLDMsNCw1LDYsNykKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1NVQl80ICgwLDAsMCwwLDAsMSwyLDMsNCw1LDYpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9TVUJfNSAoMCwwLDAsMCwwLDAsMSwyLDMsNCw1KQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfU1VCXzYgKDAsMCwwLDAsMCwwLDAsMSwyLDMsNCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1NVQl83ICgwLDAsMCwwLDAsMCwwLDAsMSwyLDMpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9TVUJfOCAoMCwwLDAsMCwwLDAsMCwwLDAsMSwyKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfU1VCXzkgKDAsMCwwLDAsMCwwLDAsMCwwLDAsMSkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1NVQl8xMCAoMCwwLDAsMCwwLDAsMCwwLDAsMCwwKQotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvc3ViLmhwcD4KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfU1VCKGksaikgXAotICAgIE5ETkJPT1NUX1BQX1NVQihpLGopIFwKLSAgICAvKiovCi0gICAgCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX1NVQl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3R1cGxlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3R1cGxlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2JiMzY5ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci90dXBsZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfVFVQTEVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX1RVUExFX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogdHVwbGUuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1RVUExFXzExX0VMRU1fMChlMCxlMSxlMixlMyxlNCxlNSxlNixlNyxlOCxlOSxlMTApIGUwCi0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9UVVBMRV8xMV9FTEVNXzEoZTAsZTEsZTIsZTMsZTQsZTUsZTYsZTcsZTgsZTksZTEwKSBlMQotI2RlZmluZSBORE5CT09TVF9NUExfUFBfVFVQTEVfMTFfRUxFTV8yKGUwLGUxLGUyLGUzLGU0LGU1LGU2LGU3LGU4LGU5LGUxMCkgZTIKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1RVUExFXzExX0VMRU1fMyhlMCxlMSxlMixlMyxlNCxlNSxlNixlNyxlOCxlOSxlMTApIGUzCi0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9UVVBMRV8xMV9FTEVNXzQoZTAsZTEsZTIsZTMsZTQsZTUsZTYsZTcsZTgsZTksZTEwKSBlNAotI2RlZmluZSBORE5CT09TVF9NUExfUFBfVFVQTEVfMTFfRUxFTV81KGUwLGUxLGUyLGUzLGU0LGU1LGU2LGU3LGU4LGU5LGUxMCkgZTUKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1RVUExFXzExX0VMRU1fNihlMCxlMSxlMixlMyxlNCxlNSxlNixlNyxlOCxlOSxlMTApIGU2Ci0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9UVVBMRV8xMV9FTEVNXzcoZTAsZTEsZTIsZTMsZTQsZTUsZTYsZTcsZTgsZTksZTEwKSBlNwotI2RlZmluZSBORE5CT09TVF9NUExfUFBfVFVQTEVfMTFfRUxFTV84KGUwLGUxLGUyLGUzLGU0LGU1LGU2LGU3LGU4LGU5LGUxMCkgZTgKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1RVUExFXzExX0VMRU1fOShlMCxlMSxlMixlMyxlNCxlNSxlNixlNyxlOCxlOSxlMTApIGU5Ci0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9UVVBMRV8xMV9FTEVNXzEwKGUwLGUxLGUyLGUzLGU0LGU1LGU2LGU3LGU4LGU5LGUxMCkgZTEwCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9UVVBMRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHVzaF9iYWNrX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wdXNoX2JhY2tfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlODFkZTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wdXNoX2JhY2tfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9QVVNIX0JBQ0tfSU1QTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9QVVNIX0JBQ0tfSU1QTF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA4Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHB1c2hfYmFja19pbXBsLmhwcCA1NTY3OSAyMDA5LTA4LTIwIDA3OjUwOjE2WiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDktMDgtMjAgMDA6NTA6MTYgLTA3MDAgKFRodSwgMjAgQXVnIDIwMDkpICQKLS8vICRSZXZpc2lvbjogNTU2NzkgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3B1c2hfYmFja19md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2hhc190eXBlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy90cmFpdHNfbGFtYmRhX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9mb3J3YXJkaW5nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvc3RhdGljX2NvbnN0YW50LmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotc3RydWN0IGhhc19wdXNoX2JhY2tfYXJnIHt9OwotCi0vLyBhZ3VydCAwNS9mZWIvMDQ6IG5vIGRlZmF1bHQgaW1wbGVtZW50YXRpb247IHRoZSBzdHViIGRlZmluaXRpb24gaXMgbmVlZGVkIAotLy8gdG8gZW5hYmxlIHRoZSBkZWZhdWx0ICdoYXNfcHVzaF9iYWNrJyBpbXBsZW1lbnRhdGlvbiBiZWxvdwotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxdWVuY2UsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIC8vIHNob3VsZCBiZSBpbnN0YW50aWF0ZWQgb25seSBpbiB0aGUgY29udGV4dCBvZiAnaGFzX3B1c2hfYmFja19pbXBsJzsKLSAgICAgICAgLy8gaWYgeW91J3ZlIGdvdCBhbiBhc3NlcnQgaGVyZSwgeW91IGFyZSByZXF1ZXN0aW5nIGEgJ3B1c2hfYmFjaycgCi0gICAgICAgIC8vIHNwZWNpYWxpemF0aW9uIHRoYXQgZG9lc24ndCBleGlzdC4KLSAgICAgICAgTkROQk9PU1RfTVBMX0FTU0VSVF9NU0coCi0gICAgICAgICAgICAgICggbmRuYm9vc3Q6OmlzX3NhbWU8IFQsIGhhc19wdXNoX2JhY2tfYXJnID46OnZhbHVlICkKLSAgICAgICAgICAgICwgUkVRVUVTVEVEX1BVU0hfQkFDS19TUEVDSUFMSVpBVElPTl9GT1JfU0VRVUVOQ0VfRE9FU19OT1RfRVhJU1QKLSAgICAgICAgICAgICwgKCBTZXF1ZW5jZSApCi0gICAgICAgICAgICApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBoYXNfcHVzaF9iYWNrX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxID4gc3RydWN0IGFwcGx5Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19ORVNURURfRk9SV0FSRElORykKLSAgICAgICAgOiBhdXg6Omhhc190eXBlPCBwdXNoX2JhY2s8IFNlcSwgaGFzX3B1c2hfYmFja19hcmcgPiA+Ci0gICAgewotI2Vsc2UKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpoYXNfdHlwZTwgcHVzaF9iYWNrPCBTZXEsIGhhc19wdXNoX2JhY2tfYXJnID4gPiB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAKLSAgICAgICAgICAgICAgKGF1eDo6aGFzX3R5cGU8IHB1c2hfYmFjazwgU2VxLCBoYXNfcHVzaF9iYWNrX2FyZyA+ID46OnZhbHVlKQotICAgICAgICAgICAgKTsKLSNlbmRpZgotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQUxHT1JJVE1fVFJBSVRTX0xBTUJEQV9TUEVDKDIsIHB1c2hfYmFja19pbXBsKQotTkROQk9PU1RfTVBMX0FMR09SSVRNX1RSQUlUU19MQU1CREFfU1BFQygxLCBoYXNfcHVzaF9iYWNrX2ltcGwpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX1BVU0hfQkFDS19JTVBMX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wdXNoX2Zyb250X2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wdXNoX2Zyb250X2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZmE4NzQ1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHVzaF9mcm9udF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX1BVU0hfRlJPTlRfSU1QTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9QVVNIX0ZST05UX0lNUExfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwOAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBwdXNoX2Zyb250X2ltcGwuaHBwIDU1Njc5IDIwMDktMDgtMjAgMDc6NTA6MTZaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOS0wOC0yMCAwMDo1MDoxNiAtMDcwMCAoVGh1LCAyMCBBdWcgMjAwOSkgJAotLy8gJFJldmlzaW9uOiA1NTY3OSAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvcHVzaF9mcm9udF9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2hhc190eXBlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy90cmFpdHNfbGFtYmRhX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9mb3J3YXJkaW5nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvc3RhdGljX2NvbnN0YW50LmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotc3RydWN0IGhhc19wdXNoX2Zyb250X2FyZyB7fTsKLQotLy8gYWd1cnQgMDUvZmViLzA0OiBubyBkZWZhdWx0IGltcGxlbWVudGF0aW9uOyB0aGUgc3R1YiBkZWZpbml0aW9uIGlzIG5lZWRlZCAKLS8vIHRvIGVuYWJsZSB0aGUgZGVmYXVsdCAnaGFzX3B1c2hfZnJvbnQnIGltcGxlbWVudGF0aW9uIGJlbG93Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgLy8gc2hvdWxkIGJlIGluc3RhbnRpYXRlZCBvbmx5IGluIHRoZSBjb250ZXh0IG9mICdoYXNfcHVzaF9mcm9udF9pbXBsJzsKLSAgICAgICAgLy8gaWYgeW91J3ZlIGdvdCBhbiBhc3NlcnQgaGVyZSwgeW91IGFyZSByZXF1ZXN0aW5nIGEgJ3B1c2hfZnJvbnQnIAotICAgICAgICAvLyBzcGVjaWFsaXphdGlvbiB0aGF0IGRvZXNuJ3QgZXhpc3QuCi0gICAgICAgIE5ETkJPT1NUX01QTF9BU1NFUlRfTVNHKAotICAgICAgICAgICAgICAoIG5kbmJvb3N0Ojppc19zYW1lPCBULCBoYXNfcHVzaF9mcm9udF9hcmcgPjo6dmFsdWUgKQotICAgICAgICAgICAgLCBSRVFVRVNURURfUFVTSF9GUk9OVF9TUEVDSUFMSVpBVElPTl9GT1JfU0VRVUVOQ0VfRE9FU19OT1RfRVhJU1QKLSAgICAgICAgICAgICwgKCBTZXF1ZW5jZSApCi0gICAgICAgICAgICApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBoYXNfcHVzaF9mcm9udF9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFNlcSA+IHN0cnVjdCBhcHBseQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fTkVTVEVEX0ZPUldBUkRJTkcpCi0gICAgICAgIDogYXV4OjpoYXNfdHlwZTwgcHVzaF9mcm9udDwgU2VxLCBoYXNfcHVzaF9mcm9udF9hcmcgPiA+Ci0gICAgewotI2Vsc2UKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpoYXNfdHlwZTwgcHVzaF9mcm9udDwgU2VxLCBoYXNfcHVzaF9mcm9udF9hcmcgPiA+IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IAotICAgICAgICAgICAgICAoYXV4OjpoYXNfdHlwZTwgcHVzaF9mcm9udDwgU2VxLCBoYXNfcHVzaF9mcm9udF9hcmcgPiA+Ojp2YWx1ZSkKLSAgICAgICAgICAgICk7Ci0jZW5kaWYKLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FMR09SSVRNX1RSQUlUU19MQU1CREFfU1BFQygyLCBwdXNoX2Zyb250X2ltcGwpCi1ORE5CT09TVF9NUExfQUxHT1JJVE1fVFJBSVRTX0xBTUJEQV9TUEVDKDEsIGhhc19wdXNoX2Zyb250X2ltcGwpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX1BVU0hfRlJPTlRfSU1QTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcmV2ZXJzZV9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4NjQ5YzEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9SRVZFUlNFX0ZPTERfSU1QTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9SRVZFUlNFX0ZPTERfSU1QTF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHJldmVyc2VfZm9sZF9pbXBsLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbmV4dF9wcmlvci5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2RlcmVmLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXBwbHkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLSMgICBpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pIFwKLSAgICB8fCBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fTk9OVFlQRV9URU1QTEFURV9QQVJUSUFMX1NQRUMpCi0jICAgICAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jICAgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotIyAgIGVuZGlmCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIHJldmVyc2VfZm9sZF9pbXBsLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfRk9MRF9JTVBMX09QKGl0ZXIpIHR5cGVuYW1lIGRlcmVmPGl0ZXI+Ojp0eXBlCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRV9QUkVGSVggcmV2ZXJzZV9mb2xkCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcmV2ZXJzZV9mb2xkX2ltcGxfYm9keS5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9SRVZFUlNFX0ZPTERfSU1QTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcmV2ZXJzZV9mb2xkX2ltcGxfYm9keS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3JldmVyc2VfZm9sZF9pbXBsX2JvZHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzY2E2ZWVlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcmV2ZXJzZV9mb2xkX2ltcGxfYm9keS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MTIgKzAsMCBAQAotCi0vLyBOTyBJTkNMVURFIEdVQVJEUywgVEhFIEhFQURFUiBJUyBJTlRFTkRFRCBGT1IgTVVMVElQTEUgSU5DTFVTSU9OIQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HKQotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogcmV2ZXJzZV9mb2xkX2ltcGxfYm9keS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saW1pdHMvdW5yb2xsaW5nLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcmVwZWF0LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbnR0cF9kZWNsLmhwcD4KLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL3N1Yi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZWMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pbmMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotCi0vLyBsb2NhbCBtYWNyb3MsICN1bmRlZi1pbmVkIGF0IHRoZSBlbmQgb2YgdGhlIGhlYWRlcgotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9JVEVSX0ZPTERfRk9SV0FSRF9TVEVQKHVudXNlZCwgbl8sIHVudXNlZDIpIFwKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgXAotICAgICAgICAgIEZvcndhcmRPcCBcCi0gICAgICAgICwgTkROQk9PU1RfUFBfQ0FUKGZ3ZF9zdGF0ZSxuXykgXAotICAgICAgICAsIEFVWDc3ODA3Nl9GT0xEX0lNUExfT1AoTkROQk9PU1RfUFBfQ0FUKGl0ZXIsbl8pKSBcCi0gICAgICAgID46OnR5cGUgTkROQk9PU1RfUFBfQ0FUKGZ3ZF9zdGF0ZSxORE5CT09TVF9QUF9JTkMobl8pKTsgXAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PE5ETkJPT1NUX1BQX0NBVChpdGVyLG5fKT46OnR5cGUgXAotICAgICAgICBORE5CT09TVF9QUF9DQVQoaXRlcixORE5CT09TVF9QUF9JTkMobl8pKTsgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfSVRFUl9GT0xEX0JBQ0tXQVJEX1NURVBfRlVOQyhuXykgXAotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBcCi0gICAgICAgICAgQmFja3dhcmRPcCBcCi0gICAgICAgICwgTkROQk9PU1RfUFBfQ0FUKGJrd2Rfc3RhdGUsbl8pIFwKLSAgICAgICAgLCBBVVg3NzgwNzZfRk9MRF9JTVBMX09QKE5ETkJPT1NUX1BQX0NBVChpdGVyLE5ETkJPT1NUX1BQX0RFQyhuXykpKSBcCi0gICAgICAgID46OnR5cGUgTkROQk9PU1RfUFBfQ0FUKGJrd2Rfc3RhdGUsTkROQk9PU1RfUFBfREVDKG5fKSk7IFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0lURVJfRk9MRF9CQUNLV0FSRF9TVEVQKHVudXNlZCwgbl8sIGopIFwKLSAgICBBVVg3NzgwNzZfSVRFUl9GT0xEX0JBQ0tXQVJEX1NURVBfRlVOQyggXAotICAgICAgICAgIE5ETkJPT1NUX1BQX1NVQl9EKDEsaixuXykgXAotICAgICAgICApIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0ZJUlNUX0JBQ0tXQVJEX1NUQVRFX1RZUEVERUYobl8pIFwKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6c3RhdGUgTkROQk9PU1RfUFBfQ0FUKGJrd2Rfc3RhdGUsbl8pOwotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUUgXAotICAgIE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUVfUFJFRklYLF9pbXBsKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9GT0xEX0NIVU5LX05BTUUgXAotICAgIE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUVfUFJFRklYLF9jaHVuaykgXAotICAgIC8qKi8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotdGVtcGxhdGU8Ci0gICAgICBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChsb25nLCBOKQotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+IAotc3RydWN0IEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRTsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX05PTlRZUEVfVEVNUExBVEVfUEFSVElBTF9TUEVDKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDAsIE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcsIDxuZG5ib29zdC9tcGwvYXV4Xy9yZXZlcnNlX2ZvbGRfaW1wbF9ib2R5LmhwcD4pKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLS8vIGltcGxlbWVudGF0aW9uIGZvciBOIHRoYXQgZXhjZWVkcyBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HCi10ZW1wbGF0ZTwKLSAgICAgIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGxvbmcsIE4pCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4gCi1zdHJ1Y3QgQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FCi17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0KLSAgICBORE5CT09TVF9NUExfUFBfUkVQRUFUKAotICAgICAgICAgIE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcKLSAgICAgICAgLCBBVVg3NzgwNzZfSVRFUl9GT0xEX0ZPUldBUkRfU1RFUAotICAgICAgICAsIHVudXNlZAotICAgICAgICApCi0KLSAgICB0eXBlZGVmIEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRTwKLSAgICAgICAgICAoIChOIC0gTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORykgPCAwID8gMCA6IE4gLSBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HICkKLSAgICAgICAgLCBORE5CT09TVF9QUF9DQVQoaXRlcixORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HKQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCBORE5CT09TVF9QUF9DQVQoZndkX3N0YXRlLE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcpCi0gICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IG5lc3RlZF9jaHVuazsKLSAgICAgICAgCi0gICAgQVVYNzc4MDc2X0ZJUlNUX0JBQ0tXQVJEX1NUQVRFX1RZUEVERUYoTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORykKLQotICAgIE5ETkJPT1NUX01QTF9QUF9SRVBFQVQoCi0gICAgICAgICAgTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORwotICAgICAgICAsIEFVWDc3ODA3Nl9JVEVSX0ZPTERfQkFDS1dBUkRfU1RFUAotICAgICAgICAsIE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcKLSAgICAgICAgKQotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi0vLyBmYWxsYmFjayBpbXBsZW1lbnRhdGlvbiBmb3Igc2VxdWVuY2VzIG9mIHVua25vd24gc2l6ZQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4gCi1zdHJ1Y3QgQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FPC0xLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3A+Ci17Ci0gICAgdHlwZWRlZiBBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUU8Ci0gICAgICAgICAgLTEKLSAgICAgICAgLCB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjxGb3J3YXJkT3AsU3RhdGUsQVVYNzc4MDc2X0ZPTERfSU1QTF9PUChGaXJzdCk+Ojp0eXBlCi0gICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IG5lc3RlZF9zdGVwOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8Ci0gICAgICAgICAgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjpzdGF0ZQotICAgICAgICAsIEFVWDc3ODA3Nl9GT0xEX0lNUExfT1AoRmlyc3QpCi0gICAgICAgID46OnR5cGUgc3RhdGU7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4gCi1zdHJ1Y3QgQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FPC0xLExhc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcD4KLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLX07Ci0KLSNlbHNlIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGxvbmcsIE4pID4KLXN0cnVjdCBBVVg3NzgwNzZfRk9MRF9DSFVOS19OQU1FOwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDAsIE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcsIDxuZG5ib29zdC9tcGwvYXV4Xy9yZXZlcnNlX2ZvbGRfaW1wbF9ib2R5LmhwcD4pKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLS8vIGltcGxlbWVudGF0aW9uIGZvciBOIHRoYXQgZXhjZWVkcyBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0wobG9uZywgTikgPiAKLXN0cnVjdCBBVVg3NzgwNzZfRk9MRF9DSFVOS19OQU1FCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4gCi0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLQotICAgICAgICBORE5CT09TVF9NUExfUFBfUkVQRUFUKAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HCi0gICAgICAgICAgICAsIEFVWDc3ODA3Nl9JVEVSX0ZPTERfRk9SV0FSRF9TVEVQCi0gICAgICAgICAgICAsIHVudXNlZAotICAgICAgICAgICAgKQotCi0gICAgICAgIHR5cGVkZWYgQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FPAotICAgICAgICAgICAgICAoIChOIC0gTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORykgPCAwID8gMCA6IE4gLSBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HICkKLSAgICAgICAgICAgICwgTkROQk9PU1RfUFBfQ0FUKGl0ZXIsTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORykKLSAgICAgICAgICAgICwgTGFzdAotICAgICAgICAgICAgLCBORE5CT09TVF9QUF9DQVQoZndkX3N0YXRlLE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcpCi0gICAgICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICA+IG5lc3RlZF9jaHVuazsKLSAgICAgICAgICAgIAotICAgICAgICBBVVg3NzgwNzZfRklSU1RfQkFDS1dBUkRfU1RBVEVfVFlQRURFRihORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HKQotCi0gICAgICAgIE5ETkJPT1NUX01QTF9QUF9SRVBFQVQoCi0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcKLSAgICAgICAgICAgICwgQVVYNzc4MDc2X0lURVJfRk9MRF9CQUNLV0FSRF9TVEVQCi0gICAgICAgICAgICAsIE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcKLSAgICAgICAgICAgICkKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLS8vIGZhbGxiYWNrIGltcGxlbWVudGF0aW9uIGZvciBzZXF1ZW5jZXMgb2YgdW5rbm93biBzaXplCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPiAKLXN0cnVjdCBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FX1BSRUZJWCxfc3RlcCk7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICA+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRV9QUkVGSVgsX251bGxfc3RlcCkKLXsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLX07Ci0KLXRlbXBsYXRlPD4gCi1zdHJ1Y3QgQVVYNzc4MDc2X0ZPTERfQ0hVTktfTkFNRTwtMT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPiAKLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGlzX3NhbWU8Rmlyc3QsTGFzdD46OnR5cGUKLSAgICAgICAgICAgICwgTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRV9QUkVGSVgsX251bGxfc3RlcCk8TGFzdCxTdGF0ZT4KLSAgICAgICAgICAgICwgTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRV9QUkVGSVgsX3N0ZXApPEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3A+Ci0gICAgICAgICAgICA+Ojp0eXBlIHJlc187Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX01TVkNfNjBfRVRJX0JVRykKLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCByZXN1bHRfPGludCxpbnQsaW50LGludCxpbnQ+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpbnQgaXRlcmF0b3I7Ci0gICAgfTsKLSNlbmRpZgotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4gCi1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRV9QUkVGSVgsX3N0ZXApCi17Ci0gICAgdHlwZWRlZiBBVVg3NzgwNzZfRk9MRF9DSFVOS19OQU1FPC0xPjo6dGVtcGxhdGUgcmVzdWx0XzwKLSAgICAgICAgICB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjxGb3J3YXJkT3AsU3RhdGUsQVVYNzc4MDc2X0ZPTERfSU1QTF9PUChGaXJzdCk+Ojp0eXBlCi0gICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IG5lc3RlZF9zdGVwOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8Ci0gICAgICAgICAgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjpzdGF0ZQotICAgICAgICAsIEFVWDc3ODA3Nl9GT0xEX0lNUExfT1AoRmlyc3QpCi0gICAgICAgID46OnR5cGUgc3RhdGU7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0wobG9uZywgTikKLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPiAKLXN0cnVjdCBBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUUKLSAgICA6IEFVWDc3ODA3Nl9GT0xEX0NIVU5LX05BTUU8Tj4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3A+Ci17Ci19OwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi19fX0KLQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9GSVJTVF9CQUNLV0FSRF9TVEFURV9UWVBFREVGCi0jICAgdW5kZWYgQVVYNzc4MDc2X0lURVJfRk9MRF9CQUNLV0FSRF9TVEVQCi0jICAgdW5kZWYgQVVYNzc4MDc2X0lURVJfRk9MRF9CQUNLV0FSRF9TVEVQX0ZVTkMKLSMgICB1bmRlZiBBVVg3NzgwNzZfSVRFUl9GT0xEX0ZPUldBUkRfU1RFUAotCi0jdW5kZWYgQVVYNzc4MDc2X0ZPTERfSU1QTF9PUAotI3VuZGVmIEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRV9QUkVGSVgKLQotLy8vLy8gaXRlcmF0aW9uCi0KLSNlbHNlCi0KLSMgICBkZWZpbmUgbl8gTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OKDEpCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19OT05UWVBFX1RFTVBMQVRFX1BBUlRJQUxfU1BFQykKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUU8bl8sRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcD4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLQotICAgIE5ETkJPT1NUX01QTF9QUF9SRVBFQVQoCi0gICAgICAgICAgbl8KLSAgICAgICAgLCBBVVg3NzgwNzZfSVRFUl9GT0xEX0ZPUldBUkRfU1RFUAotICAgICAgICAsIHVudXNlZAotICAgICAgICApCi0KLSAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChmd2Rfc3RhdGUsbl8pIE5ETkJPT1NUX1BQX0NBVChia3dkX3N0YXRlLG5fKTsKLQotICAgIE5ETkJPT1NUX01QTF9QUF9SRVBFQVQoCi0gICAgICAgICAgbl8KLSAgICAgICAgLCBBVVg3NzgwNzZfSVRFUl9GT0xEX0JBQ0tXQVJEX1NURVAKLSAgICAgICAgLCBuXwotICAgICAgICApCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKGl0ZXIsbl8pIGl0ZXJhdG9yOwotfTsKLQotI2Vsc2UKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgQVVYNzc4MDc2X0ZPTERfQ0hVTktfTkFNRTxuXz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0KLSAgICAgICAgTkROQk9PU1RfTVBMX1BQX1JFUEVBVCgKLSAgICAgICAgICAgICAgbl8KLSAgICAgICAgICAgICwgQVVYNzc4MDc2X0lURVJfRk9MRF9GT1JXQVJEX1NURVAKLSAgICAgICAgICAgICwgdW51c2VkCi0gICAgICAgICAgICApCi0KLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQoZndkX3N0YXRlLG5fKSBORE5CT09TVF9QUF9DQVQoYmt3ZF9zdGF0ZSxuXyk7Ci0KLSAgICAgICAgTkROQk9PU1RfTVBMX1BQX1JFUEVBVCgKLSAgICAgICAgICAgICAgbl8KLSAgICAgICAgICAgICwgQVVYNzc4MDc2X0lURVJfRk9MRF9CQUNLV0FSRF9TVEVQCi0gICAgICAgICAgICAsIG5fCi0gICAgICAgICAgICApCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQoaXRlcixuXykgaXRlcmF0b3I7Ci0gICAgfTsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19NU1ZDXzYwX0VUSV9CVUcpCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcmVzdWx0XzxpbnQsaW50LGludCxpbnQsaW50PgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaW50IGl0ZXJhdG9yOwotICAgIH07Ci0jZW5kaWYKLX07Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLSMgICB1bmRlZiBuXwotCi0jZW5kaWYgLy8gTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3NlcXVlbmNlX3dyYXBwZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9zZXF1ZW5jZV93cmFwcGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzJhMjc1NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3NlcXVlbmNlX3dyYXBwZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjkyICswLDAgQEAKLQotLy8gTk8gSU5DTFVERSBHVUFSRFMsIFRIRSBIRUFERVIgSVMgSU5URU5ERUQgRk9SIE1VTFRJUExFIElOQ0xVU0lPTgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HKQotCi0vLy8vLyBoZWFkZXIgYm9keQotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDgKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogc2VxdWVuY2Vfd3JhcHBlci5ocHAgNDkyNzEgMjAwOC0xMC0xMSAwNjo0NjowMFogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjQ2OjAwIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjcxICQKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvc3RhdGljX2NvbnN0YW50LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9udHRwX2RlY2wuaHBwPgotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvc3ViLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWxlbS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VudW1fcGFyYW1zX3dpdGhfYV9kZWZhdWx0LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZW51bV9wYXJhbXMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZWF0LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29tbWFfaWYuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICB1bmRlZiBMT05HX01BWAotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jaWYgIWRlZmluZWQoQVVYNzc4MDc2X1NFUVVFTkNFX0JBU0VfTkFNRSkKLSMgICBkZWZpbmUgQVVYNzc4MDc2X1NFUVVFTkNFX0JBU0VfTkFNRSBBVVg3NzgwNzZfU0VRVUVOQ0VfTkFNRQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChBVVg3NzgwNzZfU0VRVUVOQ0VfSU5URUdSQUxfV1JBUFBFUikKLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfU0VRVUVOQ0VfUEFSQU1fTkFNRSBUCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9TRVFVRU5DRV9URU1QTEFURV9QQVJBTSB0eXBlbmFtZSBUCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9TRVFVRU5DRV9ERUZBVUxUIG5hCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X1NFUVVFTkNFX05BTUVfTihuKSBcCi0gICAgTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9TRVFVRU5DRV9CQVNFX05BTUUsbikgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfU0VRVUVOQ0VfUEFSQU1TKCkgXAotICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKCBcCi0gICAgICAgICAgQVVYNzc4MDc2X1NFUVVFTkNFX0xJTUlUIFwKLSAgICAgICAgLCBBVVg3NzgwNzZfU0VRVUVOQ0VfVEVNUExBVEVfUEFSQU0gXAotICAgICAgICApIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X1NFUVVFTkNFX0FSR1MoKSBcCi0gICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoIFwKLSAgICAgICAgICBBVVg3NzgwNzZfU0VRVUVOQ0VfTElNSVQgXAotICAgICAgICAsIFQgXAotICAgICAgICApIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X1NFUVVFTkNFX0RFRkFVTFRfUEFSQU1TKCkgXAotICAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNU19XSVRIX0FfREVGQVVMVCggXAotICAgICAgICAgIEFVWDc3ODA3Nl9TRVFVRU5DRV9MSU1JVCBcCi0gICAgICAgICwgQVVYNzc4MDc2X1NFUVVFTkNFX1RFTVBMQVRFX1BBUkFNIFwKLSAgICAgICAgLCBBVVg3NzgwNzZfU0VRVUVOQ0VfREVGQVVMVCBcCi0gICAgICAgICkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfU0VRVUVOQ0VfTl9QQVJBTVMobikgXAotICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKG4sIEFVWDc3ODA3Nl9TRVFVRU5DRV9URU1QTEFURV9QQVJBTSkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfU0VRVUVOQ0VfTl9BUkdTKG4pIFwKLSAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhuLCBUKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9TRVFVRU5DRV9OX1BBUlRJQUxfU1BFQ19BUkdTKG4pIFwKLSAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhuLCBUKSBcCi0gICAgTkROQk9PU1RfUFBfQ09NTUFfSUYobikgXAotICAgIE5ETkJPT1NUX1BQX0VOVU0oIFwKLSAgICAgICAgICBORE5CT09TVF9QUF9TVUJfRCgxLEFVWDc3ODA3Nl9TRVFVRU5DRV9MSU1JVCxuKSBcCi0gICAgICAgICwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIgXAotICAgICAgICAsIEFVWDc3ODA3Nl9TRVFVRU5DRV9ERUZBVUxUIFwKLSAgICAgICAgKSBcCi0gICAgLyoqLwotCi0jZWxzZSAvLyBBVVg3NzgwNzZfU0VRVUVOQ0VfSU5URUdSQUxfV1JBUFBFUgotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9TRVFVRU5DRV9QQVJBTV9OQU1FIEMKLSMgICBkZWZpbmUgQVVYNzc4MDc2X1NFUVVFTkNFX1RFTVBMQVRFX1BBUkFNIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGxvbmcsIEMpCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9TRVFVRU5DRV9ERUZBVUxUIExPTkdfTUFYCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X1NFUVVFTkNFX1BBUkFNUygpIFwKLSAgICB0eXBlbmFtZSBULCBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyggXAotICAgICAgICAgIEFVWDc3ODA3Nl9TRVFVRU5DRV9MSU1JVCBcCi0gICAgICAgICwgQVVYNzc4MDc2X1NFUVVFTkNFX1RFTVBMQVRFX1BBUkFNIFwKLSAgICAgICAgKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9TRVFVRU5DRV9BUkdTKCkgXAotICAgIFQsIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKCBcCi0gICAgICAgICAgQVVYNzc4MDc2X1NFUVVFTkNFX0xJTUlUIFwKLSAgICAgICAgLCBDIFwKLSAgICAgICAgKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9TRVFVRU5DRV9ERUZBVUxUX1BBUkFNUygpIFwKLSAgICB0eXBlbmFtZSBULCBcCi0gICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfV0lUSF9BX0RFRkFVTFQoIFwKLSAgICAgICAgICBBVVg3NzgwNzZfU0VRVUVOQ0VfTElNSVQgXAotICAgICAgICAsIEFVWDc3ODA3Nl9TRVFVRU5DRV9URU1QTEFURV9QQVJBTSBcCi0gICAgICAgICwgQVVYNzc4MDc2X1NFUVVFTkNFX0RFRkFVTFQgXAotICAgICAgICApIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X1NFUVVFTkNFX05fUEFSQU1TKG4pIFwKLSAgICB0eXBlbmFtZSBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKG4pIFwKLSAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhuLCBBVVg3NzgwNzZfU0VRVUVOQ0VfVEVNUExBVEVfUEFSQU0pIFwKLSAgICAvKiovCi0KLSMgICBpZiAhZGVmaW5lZChBVVg3NzgwNzZfU0VRVUVOQ0VfQ09OVkVSVF9DTl9UTykKLSMgICAgICAgZGVmaW5lIEFVWDc3ODA3Nl9TRVFVRU5DRV9DT05WRVJUX0NOX1RPKHosbixUQVJHRVQpIE5ETkJPT1NUX1BQX0NBVChDLG4pCi0jICAgZW5kaWYKLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfU0VRVUVOQ0VfTl9BUkdTKG4pIFwKLSAgICBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKG4pIFwKLSAgICBORE5CT09TVF9QUF9FTlVNKG4sQVVYNzc4MDc2X1NFUVVFTkNFX0NPTlZFUlRfQ05fVE8sVCkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfU0VRVUVOQ0VfTl9QQVJUSUFMX1NQRUNfQVJHUyhuKSBcCi0gICAgVCwgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMobiwgQykgXAotICAgIE5ETkJPT1NUX1BQX0NPTU1BX0lGKG4pIFwKLSAgICBORE5CT09TVF9QUF9FTlVNKCBcCi0gICAgICAgICAgTkROQk9PU1RfUFBfU1VCX0QoMSxBVVg3NzgwNzZfU0VRVUVOQ0VfTElNSVQsbikgXAotICAgICAgICAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yIFwKLSAgICAgICAgLCBBVVg3NzgwNzZfU0VRVUVOQ0VfREVGQVVMVCBcCi0gICAgICAgICkgXAotICAgIC8qKi8KLQotI2VuZGlmIC8vIEFVWDc3ODA3Nl9TRVFVRU5DRV9JTlRFR1JBTF9XUkFQUEVSCi0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi10ZW1wbGF0ZTwKLSAgICAgIEFVWDc3ODA3Nl9TRVFVRU5DRV9ERUZBVUxUX1BBUkFNUygpCi0gICAgPgotc3RydWN0IEFVWDc3ODA3Nl9TRVFVRU5DRV9OQU1FOwotI2Vsc2UKLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgTikgPiAKLXN0cnVjdCBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X1NFUVVFTkNFX05BTUUsX2Nob29zZXIpOwotfQotI2VuZGlmCi0KLSNkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywoMCwgQVVYNzc4MDc2X1NFUVVFTkNFX0xJTUlULCA8bmRuYm9vc3QvbXBsL2F1eF8vc2VxdWVuY2Vfd3JhcHBlci5ocHA+KSkKLSNpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi0vLyByZWFsIEMrKyB2ZXJzaW9uIGlzIGFscmVhZHkgdGFrZW4gY2FyZSBvZgotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLQotbmFtZXNwYWNlIGF1eCB7Ci0vLyA/Pz9fY291bnRfYXJncwotI2RlZmluZSBBVVg3NzgwNzZfQ09VTlRfQVJHU19QUkVGSVggICAgICAgICBBVVg3NzgwNzZfU0VRVUVOQ0VfTkFNRQotI2RlZmluZSBBVVg3NzgwNzZfQ09VTlRfQVJHU19ERUZBVUxUICAgICAgICBBVVg3NzgwNzZfU0VRVUVOQ0VfREVGQVVMVAotI2RlZmluZSBBVVg3NzgwNzZfQ09VTlRfQVJHU19QQVJBTV9OQU1FICAgICBBVVg3NzgwNzZfU0VRVUVOQ0VfUEFSQU1fTkFNRQotI2RlZmluZSBBVVg3NzgwNzZfQ09VTlRfQVJHU19URU1QTEFURV9QQVJBTSBBVVg3NzgwNzZfU0VRVUVOQ0VfVEVNUExBVEVfUEFSQU0KLSNkZWZpbmUgQVVYNzc4MDc2X0NPVU5UX0FSR1NfQVJJVFkgICAgICAgICAgQVVYNzc4MDc2X1NFUVVFTkNFX0xJTUlUCi0jZGVmaW5lIEFVWDc3ODA3Nl9DT1VOVF9BUkdTX1VTRV9TVEFOREFSRF9QUF9QUklNSVRJVkVTCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY291bnRfYXJncy5ocHA+Ci0KLXRlbXBsYXRlPAotICAgICAgQVVYNzc4MDc2X1NFUVVFTkNFX1BBUkFNUygpCi0gICAgPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfU0VRVUVOQ0VfTkFNRSxfaW1wbCkKLXsKLSAgICB0eXBlZGVmIGF1eDo6TkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9TRVFVRU5DRV9OQU1FLF9jb3VudF9hcmdzKTwKLSAgICAgICAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhBVVg3NzgwNzZfU0VRVUVOQ0VfTElNSVQsIEFVWDc3ODA3Nl9TRVFVRU5DRV9QQVJBTV9OQU1FKQotICAgICAgICA+IGFyZ19udW1fOwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X1NFUVVFTkNFX05BTUUsX2Nob29zZXIpPCBhcmdfbnVtXzo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IEFVWDc3ODA3Nl9TRVFVRU5DRV9BUkdTKCkgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgQVVYNzc4MDc2X1NFUVVFTkNFX0RFRkFVTFRfUEFSQU1TKCkKLSAgICA+Ci1zdHJ1Y3QgQVVYNzc4MDc2X1NFUVVFTkNFX05BTUUKLSAgICA6IGF1eDo6TkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9TRVFVRU5DRV9OQU1FLF9pbXBsKTwKLSAgICAgICAgICBBVVg3NzgwNzZfU0VRVUVOQ0VfQVJHUygpCi0gICAgICAgID46OnR5cGUKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6TkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9TRVFVRU5DRV9OQU1FLF9pbXBsKTwKLSAgICAgICAgICBBVVg3NzgwNzZfU0VRVUVOQ0VfQVJHUygpCi0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLSMgICB1bmRlZiBBVVg3NzgwNzZfU0VRVUVOQ0VfTl9QQVJUSUFMX1NQRUNfQVJHUwotIyAgIHVuZGVmIEFVWDc3ODA3Nl9TRVFVRU5DRV9OX0FSR1MKLSMgICB1bmRlZiBBVVg3NzgwNzZfU0VRVUVOQ0VfQ09OVkVSVF9DTl9UTwotIyAgIHVuZGVmIEFVWDc3ODA3Nl9TRVFVRU5DRV9OX1BBUkFNUwotIyAgIHVuZGVmIEFVWDc3ODA3Nl9TRVFVRU5DRV9ERUZBVUxUX1BBUkFNUwotIyAgIHVuZGVmIEFVWDc3ODA3Nl9TRVFVRU5DRV9BUkdTCi0jICAgdW5kZWYgQVVYNzc4MDc2X1NFUVVFTkNFX1BBUkFNUwotIyAgIHVuZGVmIEFVWDc3ODA3Nl9TRVFVRU5DRV9OQU1FX04KLSMgICB1bmRlZiBBVVg3NzgwNzZfU0VRVUVOQ0VfREVGQVVMVAotIyAgIHVuZGVmIEFVWDc3ODA3Nl9TRVFVRU5DRV9URU1QTEFURV9QQVJBTQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9TRVFVRU5DRV9QQVJBTV9OQU1FCi0jICAgdW5kZWYgQVVYNzc4MDc2X1NFUVVFTkNFX0xJTUlUCi0jICAgdW5kZWYgQVVYNzc4MDc2X1NFUVVFTkNFX0JBU0VfTkFNRQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9TRVFVRU5DRV9OQU1FCi0jICAgdW5kZWYgQVVYNzc4MDc2X1NFUVVFTkNFX0lOVEVHUkFMX1dSQVBQRVIKLQotfX0KLQotLy8vLy8gaXRlcmF0aW9uCi0KLSNlbHNlCi0jZGVmaW5lIGlfIE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigxKQotCi0jICAgaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLQotI2lmIGlfID09IEFVWDc3ODA3Nl9TRVFVRU5DRV9MSU1JVAotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotdGVtcGxhdGU8Ci0gICAgICBBVVg3NzgwNzZfU0VRVUVOQ0VfTl9QQVJBTVMoaV8pCi0gICAgPgotc3RydWN0IEFVWDc3ODA3Nl9TRVFVRU5DRV9OQU1FCi0gICAgOiBBVVg3NzgwNzZfU0VRVUVOQ0VfTkFNRV9OKGlfKTwgQVVYNzc4MDc2X1NFUVVFTkNFX05fQVJHUyhpXykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgQVVYNzc4MDc2X1NFUVVFTkNFX05BTUVfTihpXyk8IEFVWDc3ODA3Nl9TRVFVRU5DRV9OX0FSR1MoaV8pID46OnR5cGUgdHlwZTsKLX07Ci0KLSNlbHNlCi0KLXRlbXBsYXRlPAotICAgICAgQVVYNzc4MDc2X1NFUVVFTkNFX05fUEFSQU1TKGlfKQotICAgID4KLXN0cnVjdCBBVVg3NzgwNzZfU0VRVUVOQ0VfTkFNRTwgQVVYNzc4MDc2X1NFUVVFTkNFX05fUEFSVElBTF9TUEVDX0FSR1MoaV8pID4KLSAgICA6IEFVWDc3ODA3Nl9TRVFVRU5DRV9OQU1FX04oaV8pPCBBVVg3NzgwNzZfU0VRVUVOQ0VfTl9BUkdTKGlfKSA+Ci17Ci0jaWYgaV8gPiAwIHx8IGRlZmluZWQoQVVYNzc4MDc2X1NFUVVFTkNFX0lOVEVHUkFMX1dSQVBQRVIpCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBBVVg3NzgwNzZfU0VRVUVOQ0VfTkFNRV9OKGlfKTwgQVVYNzc4MDc2X1NFUVVFTkNFX05fQVJHUyhpXykgPjo6dHlwZSB0eXBlOwotI2Vsc2UKLSAgICB0eXBlZGVmIEFVWDc3ODA3Nl9TRVFVRU5DRV9OQU1FX04oaV8pPCBBVVg3NzgwNzZfU0VRVUVOQ0VfTl9BUkdTKGlfKSA+Ojp0eXBlIHR5cGU7Ci0jZW5kaWYKLX07Ci0KLSNlbmRpZiAvLyBpXyA9PSBBVVg3NzgwNzZfU0VRVUVOQ0VfTElNSVQKLQotIyAgIGVsc2UKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X1NFUVVFTkNFX05BTUUsX2Nob29zZXIpPGlfPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIEFVWDc3ODA3Nl9TRVFVRU5DRV9QQVJBTVMoKQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0jaWYgaV8gPiAwIHx8IGRlZmluZWQoQVVYNzc4MDc2X1NFUVVFTkNFX0lOVEVHUkFMX1dSQVBQRVIpCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQVVYNzc4MDc2X1NFUVVFTkNFX05BTUVfTihpXyk8Ci0gICAgICAgICAgICAgIEFVWDc3ODA3Nl9TRVFVRU5DRV9OX0FSR1MoaV8pCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0jZWxzZQotICAgICAgICB0eXBlZGVmIEFVWDc3ODA3Nl9TRVFVRU5DRV9OQU1FX04oaV8pPAotICAgICAgICAgICAgICBBVVg3NzgwNzZfU0VRVUVOQ0VfTl9BUkdTKGlfKQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotI2VuZGlmCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi0jICAgZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0jdW5kZWYgaV8KLSNlbmRpZiAvLyBORE5CT09TVF9QUF9JU19JVEVSQVRJTkcKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vc2l6ZV9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vc2l6ZV9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ZiMTZmYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3NpemVfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9TSVpFX0lNUExfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfU0laRV9JTVBMX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogc2l6ZV9pbXBsLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3NpemVfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYmVnaW5fZW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZGlzdGFuY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3RyYWl0c19sYW1iZGFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotLy8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbjsgY29ucmV0ZSBzZXF1ZW5jZXMgbWlnaHQgb3ZlcnJpZGUgaXQgYnkgCi0vLyBzcGVjaWFsaXppbmcgZWl0aGVyIHRoZSAnc2l6ZV9pbXBsJyBvciB0aGUgcHJpbWFyeSAnc2l6ZScgdGVtcGxhdGUKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFNlcXVlbmNlID4gc3RydWN0IGFwcGx5Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NjEpKQotICAgICAgICA6IGRpc3RhbmNlPAotICAgICAgICAgICAgICB0eXBlbmFtZSBiZWdpbjxTZXF1ZW5jZT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZW5kPFNlcXVlbmNlPjo6dHlwZQotICAgICAgICAgICAgPgotICAgIHsKLSNlbHNlCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGRpc3RhbmNlPAotICAgICAgICAgICAgICB0eXBlbmFtZSBiZWdpbjxTZXF1ZW5jZT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZW5kPFNlcXVlbmNlPjo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotI2VuZGlmCi0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BTEdPUklUTV9UUkFJVFNfTEFNQkRBX1NQRUMoMSwgc2l6ZV9pbXBsKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9TSVpFX0lNUExfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3N0YXRpY19jYXN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vc3RhdGljX2Nhc3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzEyMWViLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vc3RhdGljX2Nhc3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfU1RBVElDX0NBU1RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfU1RBVElDX0NBU1RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBzdGF0aWNfY2FzdC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NjEpKSBcCi0gfHwgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPCAzKSBcCi0gfHwgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCA8PSAweDMwMDEpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfU1RBVElDX0NBU1QoVCwgZXhwcikgKFQpKGV4cHIpCi0jZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX1NUQVRJQ19DQVNUKFQsIGV4cHIpIHN0YXRpY19jYXN0PFQ+KGV4cHIpCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfU1RBVElDX0NBU1RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3RlbXBsYXRlX2FyaXR5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vdGVtcGxhdGVfYXJpdHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNTczMDgwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vdGVtcGxhdGVfYXJpdHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTg5ICswLDAgQEAKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0lTX0lURVJBVElORykKLQotLy8vLy8gaGVhZGVyIGJvZHkKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogdGVtcGxhdGVfYXJpdHkuaHBwIDYxNTg0IDIwMTAtMDQtMjYgMTg6NDg6MjZaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAxMC0wNC0yNiAxMTo0ODoyNiAtMDcwMCAoTW9uLCAyNiBBcHIgMjAxMCkgJAotLy8gJFJldmlzaW9uOiA2MTU4NCAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHRwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbGFtYmRhLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdGVtcGxhdGVfYXJpdHlfZndkLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaW50LmhwcD4KLSMgICBpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0ZVTExfTEFNQkRBX1NVUFBPUlQpCi0jICAgaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0VYVEVOREVEX1RFTVBMQVRFX1BBUkFNRVRFUlNfTUFUQ0hJTkcpCi0jICAgICAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3R5cGVfd3JhcHBlci5ocHA+Ci0jICAgZW5kaWYKLSMgICBlbHNlCi0jICAgICAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2hhc19yZWJpbmQuaHBwPgotIyAgIGVuZGlmCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9zdGF0aWNfY29uc3RhbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIHRlbXBsYXRlX2FyaXR5LmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fRlVMTF9MQU1CREFfU1VQUE9SVCkKLSMgICBpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfRVhURU5ERURfVEVNUExBVEVfUEFSQU1FVEVSU19NQVRDSElORykKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saW1pdHMvYXJpdHkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9yYW5nZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3JlcGVhdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3BhcmFtcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbnR0cF9kZWNsLmhwcD4KLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZm9sZF9sZWZ0LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29tbWFfaWYuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaW5jLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfQVJJVFkgTkROQk9PU1RfUFBfSU5DKE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFkpCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgTikgPiBzdHJ1Y3QgYXJpdHlfdGFnCi17Ci0gICAgdHlwZWRlZiBjaGFyICgmdHlwZSlbTiArIDFdOwotfTsKLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfTUFYX0FSSVRZX09QKHVudXNlZCwgc3RhdGUsIGlfKSBcCi0gICAgKCBORE5CT09TVF9QUF9DQVQoQyxpXykgPiAwID8gTkROQk9PU1RfUFBfQ0FUKEMsaV8pIDogc3RhdGUgKSBcCi0vKiovCi0KLXRlbXBsYXRlPAotICAgICAgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhBVVg3NzgwNzZfQVJJVFksIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgQykpCi0gICAgPgotc3RydWN0IG1heF9hcml0eQotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gCi0gICAgICAgICAgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVCgKLSAgICAgICAgICAgICAgQVVYNzc4MDc2X01BWF9BUklUWV9PUAotICAgICAgICAgICAgLCAtMQotICAgICAgICAgICAgLCBORE5CT09TVF9NUExfUFBfUkFOR0UoMSwgQVVYNzc4MDc2X0FSSVRZKQotICAgICAgICAgICAgKQotICAgICAgICApOwotfTsKLQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9NQVhfQVJJVFlfT1AKLQotYXJpdHlfdGFnPDA+Ojp0eXBlIGFyaXR5X2hlbHBlciguLi4pOwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9MSU1JVFMgKDEsIEFVWDc3ODA3Nl9BUklUWSkKLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfRklMRU5BTUVfMSA8bmRuYm9vc3QvbXBsL2F1eF8vdGVtcGxhdGVfYXJpdHkuaHBwPgotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIE4pID4KLXN0cnVjdCB0ZW1wbGF0ZV9hcml0eV9pbXBsCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSAKLSAgICAgICAgICBzaXplb2YoOjpuZG5ib29zdDo6bXBsOjphdXg6OmFyaXR5X2hlbHBlcih0eXBlX3dyYXBwZXI8Rj4oKSxhcml0eV90YWc8Tj4oKSkpIC0gMQotICAgICAgICApOwotfTsKLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfVEVNUExBVEVfQVJJVFlfSU1QTF9JTlZPQ0FUSU9OKHVudXNlZCwgaV8sIEYpIFwKLSAgICBORE5CT09TVF9QUF9DT01NQV9JRihpXykgdGVtcGxhdGVfYXJpdHlfaW1wbDxGLE5ETkJPT1NUX1BQX0lOQyhpXyk+Ojp2YWx1ZSBcCi0vKiovCi0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGID4KLXN0cnVjdCB0ZW1wbGF0ZV9hcml0eQotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gKAotICAgICAgICAgIG1heF9hcml0eTwgTkROQk9PU1RfTVBMX1BQX1JFUEVBVCgKLSAgICAgICAgICAgICAgQVVYNzc4MDc2X0FSSVRZCi0gICAgICAgICAgICAsIEFVWDc3ODA3Nl9URU1QTEFURV9BUklUWV9JTVBMX0lOVk9DQVRJT04KLSAgICAgICAgICAgICwgRgotICAgICAgICAgICAgKSA+Ojp2YWx1ZQotICAgICAgICApKTsKLSAgICAgICAgCi0gICAgdHlwZWRlZiBtcGw6OmludF88dmFsdWU+IHR5cGU7Ci19OwotCi0jICAgdW5kZWYgQVVYNzc4MDc2X1RFTVBMQVRFX0FSSVRZX0lNUExfSU5WT0NBVElPTgotCi0jICAgdW5kZWYgQVVYNzc4MDc2X0FSSVRZCi0KLX19fQotCi0jICAgZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19FWFRFTkRFRF9URU1QTEFURV9QQVJBTUVURVJTX01BVENISU5HCi0jICAgZWxzZSAvLyBORE5CT09TVF9NUExfQ0ZHX05PX0ZVTExfTEFNQkRBX1NVUFBPUlQKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9ldGkuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBib29sID4KLXN0cnVjdCB0ZW1wbGF0ZV9hcml0eV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IG1wbDo6aW50XzwtMT4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB0ZW1wbGF0ZV9hcml0eV9pbXBsPHRydWU+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IEY6OmFyaXR5Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+Ci1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHkKLSAgICA6IHRlbXBsYXRlX2FyaXR5X2ltcGw8IDo6bmRuYm9vc3Q6Om1wbDo6YXV4OjpoYXNfcmViaW5kPEY+Ojp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxGPgotewotfTsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19NU1ZDX0VUSV9CVUcpCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHk8aW50PgotICAgIDogbXBsOjppbnRfPC0xPgotewotfTsKLSNlbmRpZgotCi19fX0KLQotIyAgIGVuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fRlVMTF9MQU1CREFfU1VQUE9SVAotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfSFBQX0lOQ0xVREVECi0KLS8vLy8vIGl0ZXJhdGlvbgotCi0jZWxzZQotI2RlZmluZSBpXyBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpXywgdHlwZW5hbWUgUCkgPiBjbGFzcyBGCi0gICAgLCBORE5CT09TVF9NUExfUFBfUEFSQU1TKGlfLCB0eXBlbmFtZSBUKQotICAgID4KLXR5cGVuYW1lIGFyaXR5X3RhZzxpXz46OnR5cGUKLWFyaXR5X2hlbHBlcih0eXBlX3dyYXBwZXI8IEY8TkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpXywgVCk+ID4sIGFyaXR5X3RhZzxpXz4pOwotCi0jdW5kZWYgaV8KLSNlbmRpZiAvLyBORE5CT09TVF9QUF9JU19JVEVSQVRJTkcKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vdGVtcGxhdGVfYXJpdHlfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vdGVtcGxhdGVfYXJpdHlfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjI0YmQ5OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3RlbXBsYXRlX2FyaXR5X2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9GV0RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfRldEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogdGVtcGxhdGVfYXJpdHlfZndkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGID4gc3RydWN0IHRlbXBsYXRlX2FyaXR5OwotCi19fX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfRldEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy90cmFpdHNfbGFtYmRhX3NwZWMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy90cmFpdHNfbGFtYmRhX3NwZWMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZjIxZGRhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vdHJhaXRzX2xhbWJkYV9zcGVjLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX1RSQUlUU19MQU1CREFfU1BFQ19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9UUkFJVFNfTEFNQkRBX1NQRUNfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwOAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB0cmFpdHNfbGFtYmRhX3NwZWMuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvc2VxdWVuY2VfdGFnX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZvaWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9sYW1iZGEuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19GVUxMX0xBTUJEQV9TVVBQT1JUKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BTEdPUklUTV9UUkFJVFNfTEFNQkRBX1NQRUNfSU1QTChpLCB0cmFpdCkgLyoqLwotCi0jZWxpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX01TVkNfRVRJX0JVRykKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQUxHT1JJVE1fVFJBSVRTX0xBTUJEQV9TUEVDX0lNUEwoaSwgdHJhaXQpIFwKLXRlbXBsYXRlPD4gc3RydWN0IHRyYWl0PHZvaWRfPiBcCi17IFwKLSAgICB0ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpLCB0eXBlbmFtZSBUKSA+IHN0cnVjdCBhcHBseSBcCi0gICAgeyBcCi0gICAgfTsgXAotfTsgXAotLyoqLwotCi0jZWxzZQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BTEdPUklUTV9UUkFJVFNfTEFNQkRBX1NQRUNfSU1QTChpLCB0cmFpdCkgXAotdGVtcGxhdGU8PiBzdHJ1Y3QgdHJhaXQ8dm9pZF8+IFwKLXsgXAotICAgIHRlbXBsYXRlPCBORE5CT09TVF9NUExfUFBfUEFSQU1TKGksIHR5cGVuYW1lIFQpID4gc3RydWN0IGFwcGx5IFwKLSAgICB7IFwKLSAgICB9OyBcCi19OyBcCi10ZW1wbGF0ZTw+IHN0cnVjdCB0cmFpdDxpbnQ+IFwKLXsgXAotICAgIHRlbXBsYXRlPCBORE5CT09TVF9NUExfUFBfUEFSQU1TKGksIHR5cGVuYW1lIFQpID4gc3RydWN0IGFwcGx5IFwKLSAgICB7IFwKLSAgICAgICAgdHlwZWRlZiBpbnQgdHlwZTsgXAotICAgIH07IFwKLX07IFwKLS8qKi8KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fRlVMTF9MQU1CREFfU1VQUE9SVAotCi0KLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FMR09SSVRNX1RSQUlUU19MQU1CREFfU1BFQyhpLCB0cmFpdCkgXAotICAgIE5ETkJPT1NUX01QTF9BTEdPUklUTV9UUkFJVFNfTEFNQkRBX1NQRUNfSU1QTChpLCB0cmFpdCkgXAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHRyYWl0PG5vbl9zZXF1ZW5jZV90YWc+IHt9OyBcCi0vKiovCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX1RSQUlUU19MQU1CREFfU1BFQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vdHlwZV93cmFwcGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vdHlwZV93cmFwcGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmFhZjU0Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3R5cGVfd3JhcHBlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9UWVBFX1dSQVBQRVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfVFlQRV9XUkFQUEVSX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAwLTIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogdHlwZV93cmFwcGVyLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHR5cGVfd3JhcHBlcgotewotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0vLyBhZ3VydCAwOC9tYXkvMDM6IGEgY29tcGxpY2F0ZWQgd2F5IHRvIGV4dHJhY3QgdGhlIHdyYXBwZWQgdHlwZTsgbmVlZCBpdCAKLS8vIG1vc3RseSBmb3IgdGhlIHNha2Ugb2YgR0NDICgzLjIueCksIHdoaWNoIElDRXMgaWYgeW91IHRyeSB0byBleHRyYWN0IHRoZSAKLS8vIG5lc3RlZCAndHlwZScgZnJvbSAndHlwZV93cmFwcGVyPFQ+JyB3aGVuIHRoZSBsYXR0ZXIgd2FzIHRoZSByZXN1bHQgb2YgYQotLy8gJ3R5cGVvZicgZXhwcmVzc2lvbgotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3Qgd3JhcHBlZF90eXBlOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCB3cmFwcGVkX3R5cGU8IHR5cGVfd3JhcHBlcjxUPiA+Ci17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotI2Vsc2UKLXRlbXBsYXRlPCB0eXBlbmFtZSBXID4gc3RydWN0IHdyYXBwZWRfdHlwZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVzo6dHlwZSB0eXBlOwotfTsKLSNlbmRpZgotCi19fX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfVFlQRV9XUkFQUEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy91bndyYXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy91bndyYXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTJkOGM4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vdW53cmFwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX1VOV1JBUF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9VTldSQVBfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiBhbmQgTXVsdGkgTWVkaWEgTHRkIDIwMDEsIDIwMDIKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAxCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHVud3JhcC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYgPgotaW5saW5lCi1GJiB1bndyYXAoRiYgZiwgbG9uZykKLXsKLSAgICByZXR1cm4gZjsKLX0KLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYgPgotaW5saW5lCi1GJgotdW53cmFwKHJlZmVyZW5jZV93cmFwcGVyPEY+JiBmLCBpbnQpCi17Ci0gICAgcmV0dXJuIGY7Ci19Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGID4KLWlubGluZQotRiYKLXVud3JhcChyZWZlcmVuY2Vfd3JhcHBlcjxGPiBjb25zdCYgZiwgaW50KQotewotICAgIHJldHVybiBmOwotfQotCi19fX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfVU5XUkFQX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy92YWx1ZV93a25kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vdmFsdWVfd2tuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyMDNiYWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy92YWx1ZV93a25kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHZhbHVlX3drbmQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9zdGF0aWNfY2FzdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2ludGVncmFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZXRpLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfQkNDX0lOVEVHUkFMX0NPTlNUQU5UUykgXAotICAgIHx8IGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19NU1ZDXzYwX0VUSV9CVUcpCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaW50LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIENfID4gc3RydWN0IHZhbHVlX3drbmQKLSAgICA6IENfCi17Ci19OwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX01TVkNfNjBfRVRJX0JVRykKLXRlbXBsYXRlPD4gc3RydWN0IHZhbHVlX3drbmQ8aW50PgotICAgIDogaW50XzwxPgotewotICAgIHVzaW5nIGludF88MT46OnZhbHVlOwotfTsKLSNlbmRpZgotfX19Ci0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTVNWQ182MF9FVElfQlVHKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoQykgXAotICAgIDo6TkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6OmF1eDo6dmFsdWVfd2tuZDwgQyA+IFwKLS8qKi8KLSMgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKEMpIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChDKQotI2Vsc2UKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKEMpIEMKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoQykgXAotICAgIDo6bmRuYm9vc3Q6Om1wbDo6YXV4Ojp2YWx1ZV93a25kPCBDID4gXAotLyoqLwotI2VuZGlmCi0KLSNlbHNlIC8vIE5ETkJPT1NUX01QTF9DRkdfQkNDX0lOVEVHUkFMX0NPTlNUQU5UUwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChDKSBDCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKEMpIEMKLQotI2VuZGlmCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fRURHX1ZFUlNJT05fXywgPD0gMjM4KQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKFQsIEMpIFwKLSAgICBORE5CT09TVF9NUExfQVVYX1NUQVRJQ19DQVNUKFQsIEM6OnZhbHVlKSBcCi0vKiovCi0jZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKFQsIEMpIFwKLSAgICBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoQyk6OnZhbHVlIFwKLS8qKi8KLSNlbmRpZgotCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgdmFsdWVfdHlwZV93a25kCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp2YWx1ZV90eXBlIHR5cGU7Ci19OwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX01TVkNfRVRJX0JVRykKLXRlbXBsYXRlPD4gc3RydWN0IHZhbHVlX3R5cGVfd2tuZDxpbnQ+Ci17Ci0gICAgdHlwZWRlZiBpbnQgdHlwZTsKLX07Ci0jZW5kaWYKLQotfX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3llc19uby5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3llc19uby5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0MjIyNjIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy95ZXNfbm8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfWUVTX05PX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX1lFU19OT19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHllc19uby5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL250dHBfZGVjbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2FycmF5cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL21zdmMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXR5cGVkZWYgY2hhciAoJm5vX3RhZylbMV07Ci10eXBlZGVmIGNoYXIgKCZ5ZXNfdGFnKVsyXTsKLQotdGVtcGxhdGU8IGJvb2wgQ18gPiBzdHJ1Y3QgeWVzX25vX3RhZwotewotICAgIHR5cGVkZWYgbm9fdGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCB5ZXNfbm9fdGFnPHRydWU+Ci17Ci0gICAgdHlwZWRlZiB5ZXNfdGFnIHR5cGU7Ci19OwotCi0KLXRlbXBsYXRlPCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChsb25nLCBuKSA+IHN0cnVjdCB3ZWlnaHRlZF90YWcKLXsKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0gICAgdHlwZWRlZiBjaGFyICgmdHlwZSlbbl07Ci0jZWxzZQotICAgIGNoYXIgYnVmW25dOwotICAgIHR5cGVkZWYgd2VpZ2h0ZWRfdGFnIHR5cGU7Ci0jZW5kaWYKLX07Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fREVQRU5ERU5UX0FSUkFZX1RZUEVTKQotdGVtcGxhdGU8PiBzdHJ1Y3Qgd2VpZ2h0ZWRfdGFnPDA+Ci17Ci0gICAgdHlwZWRlZiBjaGFyICgmdHlwZSlbMV07Ci19OwotI2VuZGlmCi0KLX19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9ZRVNfTk9fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9iYWNrX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9iYWNrX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0ZDg1ZTUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYmFja19md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9CQUNLX0ZXRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0JBQ0tfRldEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogYmFja19md2QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJhY2tfaW1wbDsKLXRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSA+IHN0cnVjdCBiYWNrOwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0JBQ0tfRldEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYmFja19pbnNlcnRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9iYWNrX2luc2VydGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTlmNmMxMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9iYWNrX2luc2VydGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQkFDS19JTlNFUlRFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0JBQ0tfSU5TRVJURVJfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDMtMjAwNAotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDMtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBiYWNrX2luc2VydGVyLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3B1c2hfYmFjay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2luc2VydGVyLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFNlcXVlbmNlCi0gICAgPgotc3RydWN0IGJhY2tfaW5zZXJ0ZXIKLSAgICA6IGluc2VydGVyPCBTZXF1ZW5jZSxwdXNoX2JhY2s8PiA+Ci17Ci19OwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0JBQ0tfSU5TRVJURVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9iZWdpbl9lbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYmVnaW5fZW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDU5OTFmOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9iZWdpbl9lbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9CRUdJTl9FTkRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9CRUdJTl9FTkRfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBiZWdpbl9lbmQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYmVnaW5fZW5kX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vYmVnaW5fZW5kX2ltcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9zZXF1ZW5jZV90YWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLS8vIGFndXJ0LCAxMy9zZXAvMDI6IHN3aXRjaGVkIGZyb20gaW5oZXJpdGFuY2UgdG8gdHlwZWRlZjsgTVNWQyBpcyBtb3JlCi0vLyBoYXBweSB0aGlzIHdheSAobGVzcyBFVEktcmVsYXRlZCBlcnJvcnMpLCBhbmQgaXQgZG9lc24ndCBhZmZlY3QgCi0vLyBhbnl0aGluZyBlbHNlCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oU2VxdWVuY2UpCi0gICAgPgotc3RydWN0IGJlZ2luCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXF1ZW5jZV90YWc8U2VxdWVuY2U+Ojp0eXBlIHRhZ187Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiZWdpbl9pbXBsPCB0YWdfID4KLSAgICAgICAgOjp0ZW1wbGF0ZSBhcHBseTwgU2VxdWVuY2UgPjo6dHlwZSB0eXBlOwotCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLGJlZ2luLChTZXF1ZW5jZSkpCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oU2VxdWVuY2UpCi0gICAgPgotc3RydWN0IGVuZAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2VxdWVuY2VfdGFnPFNlcXVlbmNlPjo6dHlwZSB0YWdfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgZW5kX2ltcGw8IHRhZ18gPgotICAgICAgICA6OnRlbXBsYXRlIGFwcGx5PCBTZXF1ZW5jZSA+Ojp0eXBlIHR5cGU7Ci0KLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEsZW5kLChTZXF1ZW5jZSkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMSwgYmVnaW4pCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMSwgZW5kKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0JFR0lOX0VORF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2JlZ2luX2VuZF9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYmVnaW5fZW5kX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlNDg2YWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYmVnaW5fZW5kX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0JFR0lOX0VORF9GV0RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9CRUdJTl9FTkRfRldEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogYmVnaW5fZW5kX2Z3ZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYmVnaW5faW1wbDsKLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZW5kX2ltcGw7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSA+IHN0cnVjdCBiZWdpbjsKLXRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSA+IHN0cnVjdCBlbmQ7Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQkVHSU5fRU5EX0ZXRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2JpbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYmluZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViMzBhMTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYmluZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NTEgKzAsMCBAQAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HKQotCi0vLy8vLyBoZWFkZXIgYm9keQotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9CSU5EX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQklORF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBiaW5kLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYmluZF9md2QuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9wbGFjZWhvbGRlcnMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9uZXh0LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvcHJvdGVjdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FwcGx5X3dyYXAuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saW1pdHMvYXJpdHkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9hcml0eV9zcGVjLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy90eXBlX3dyYXBwZXIuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3llc19uby5ocHA+Ci0jICAgaWYgZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotIyAgICAgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwPgotIyAgIGVuZGlmIAotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvYmluZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3N0YXRpY19jb25zdGFudC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fVU5OQU1FRF9QTEFDRUhPTERFUl9TVVBQT1JUKQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgYmFzaWNfYmluZC5ocHAKLSMgICBlbHNlCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBiaW5kLmhwcAotIyAgIGVuZGlmCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3BhcmFtcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2RlZmF1bHRfcGFyYW1zLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZGVmX3BhcmFtc190YWlsLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFydGlhbF9zcGVjX3BhcmFtcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2V4dF9wYXJhbXMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9yZXBlYXQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9lbnVtLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvYWRkLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZG1jX2FtYmlndW91c19jdHBzLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R0cC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2R0cC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbnR0cF9kZWNsLmhwcD4KLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29tbWFfaWYuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pbmMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotLy8gbG9jYWwgbWFjcm9zLCAjdW5kZWYtaW5lZCBhdCB0aGUgZW5kIG9mIHRoZSBoZWFkZXIKLSMgICBkZWZpbmUgQVVYNzc4MDc2X0FQUExZIFwKLSAgICBORE5CT09TVF9QUF9DQVQoYXBwbHlfd3JhcCxORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZKSBcCi0gICAgLyoqLwotCi0jICAgaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0RNQ19BTUJJR1VPVVNfQ1RQUykKLSMgICAgICAgZGVmaW5lIEFVWDc3ODA3Nl9ETUNfUEFSQU0oKSAsIGludCBkdW1teV8KLSMgICBlbHNlCi0jICAgICAgIGRlZmluZSBBVVg3NzgwNzZfRE1DX1BBUkFNKCkKLSMgICBlbmRpZgotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyhwYXJhbSkgXAotICAgIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoIFwKLSAgICAgICAgICBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZIFwKLSAgICAgICAgLCBwYXJhbSBcCi0gICAgICAgICkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfQklORF9ERUZBVUxUX1BBUkFNUyhwYXJhbSwgdmFsdWUpIFwKLSAgICBORE5CT09TVF9NUExfUFBfREVGQVVMVF9QQVJBTVMoIFwKLSAgICAgICAgICBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZIFwKLSAgICAgICAgLCBwYXJhbSBcCi0gICAgICAgICwgdmFsdWUgXAotICAgICAgICApIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0JJTkRfTl9QQVJBTVMobiwgcGFyYW0pIFwKLSAgICBORE5CT09TVF9QUF9DT01NQV9JRihuKSBORE5CT09TVF9NUExfUFBfUEFSQU1TKG4sIHBhcmFtKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9CSU5EX05fU1BFQ19QQVJBTVMobiwgcGFyYW0sIGRlZikgXAotICAgIE5ETkJPT1NUX1BQX0NPTU1BX0lGKG4pIFwKLSAgICBORE5CT09TVF9NUExfUFBfUEFSVElBTF9TUEVDX1BBUkFNUyhuLCBwYXJhbSwgZGVmKSBcCi0gICAgLyoqLwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19ERUZBVUxUX1BBUkFNRVRFUlNfSU5fTkVTVEVEX1RFTVBMQVRFUykKLSMgICBkZWZpbmUgQVVYNzc4MDc2X0JJTkRfTkVTVEVEX0RFRkFVTFRfUEFSQU1TKHBhcmFtLCB2YWx1ZSkgXAotICAgIEFVWDc3ODA3Nl9CSU5EX0RFRkFVTFRfUEFSQU1TKHBhcmFtLCB2YWx1ZSkgXAotICAgIC8qKi8KLSNlbHNlCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9CSU5EX05FU1RFRF9ERUZBVUxUX1BBUkFNUyhwYXJhbSwgdmFsdWUpIFwKLSAgICBBVVg3NzgwNzZfQklORF9QQVJBTVMocGFyYW0pIFwKLSAgICAvKiovCi0jZW5kaWYKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyh0eXBlbmFtZSBVKQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnCi17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi0jICAgaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19VTk5BTUVEX1BMQUNFSE9MREVSX1NVUFBPUlQpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgdHlwZW5hbWUgQXJnCi0gICAgPgotc3RydWN0IHJlcGxhY2VfdW5uYW1lZF9hcmcKLXsKLSAgICB0eXBlZGVmIEFyZyBuZXh0OwotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBBcmcKLSAgICA+Ci1zdHJ1Y3QgcmVwbGFjZV91bm5hbWVkX2FyZzwgYXJnPC0xPixBcmcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgQXJnOjpuZXh0IG5leHQ7Ci0gICAgdHlwZWRlZiBBcmcgdHlwZTsKLX07Ci0KLSMgICBlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1VOTkFNRURfUExBQ0VIT0xERVJfU1VQUE9SVAotCi10ZW1wbGF0ZTwKLSAgICAgIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgTiksIEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyh0eXBlbmFtZSBVKQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPCBhcmc8Tj4sQVVYNzc4MDc2X0JJTkRfUEFSQU1TKFUpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEFVWDc3ODA3Nl9BUFBMWTxtcGw6OmFyZzxOPiwgQVVYNzc4MDc2X0JJTkRfUEFSQU1TKFUpPjo6dHlwZSB0eXBlOwotfTsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fQklORF9URU1QTEFURSkKLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgQVVYNzc4MDc2X0JJTkRfUEFSQU1TKHR5cGVuYW1lIFQpLCBBVVg3NzgwNzZfQklORF9QQVJBTVModHlwZW5hbWUgVSkKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwgYmluZDxGLEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyhUKT4sQVVYNzc4MDc2X0JJTkRfUEFSQU1TKFUpID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ8RixBVVg3NzgwNzZfQklORF9QQVJBTVMoVCk+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgQVVYNzc4MDc2X0FQUExZPGZfLCBBVVg3NzgwNzZfQklORF9QQVJBTVMoVSk+Ojp0eXBlIHR5cGU7Ci19OwotI2VuZGlmCi0KLSNlbHNlIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotLy8gYWd1cnQsIDE1L2phbi8wMjogaXQncyBub3QgYSBpbnRlbmRlZCB0byBiZSB1c2VkIGFzIGEgZnVuY3Rpb24gY2xhc3MsIGFuZCAKLS8vIE1TVkM2LjUgaGFzIHByb2JsZW1zIHdpdGggJ2FwcGx5JyBuYW1lIGhlcmUgKHRoZSBjb2RlIGNvbXBpbGVzLCBidXQgZG9lc24ndAotLy8gd29yayksIHNvIEkgd2VudCB3aXRoIHRoZSAncmVzdWx0XycgaGVyZSwgYW5kIGluIGFsbCBvdGhlciBzaW1pbGFyIGNhc2VzCi10ZW1wbGF0ZTwgYm9vbCA+Ci1zdHJ1Y3QgcmVzb2x2ZV9hcmdfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBULCBBVVg3NzgwNzZfQklORF9QQVJBTVModHlwZW5hbWUgVSkgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gCi1zdHJ1Y3QgcmVzb2x2ZV9hcmdfaW1wbDx0cnVlPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBULCBBVVg3NzgwNzZfQklORF9QQVJBTVModHlwZW5hbWUgVSkgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBVVg3NzgwNzZfQVBQTFk8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICwgQVVYNzc4MDc2X0JJTkRfUEFSQU1TKFUpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLS8vIGZvciAncmVzb2x2ZV9iaW5kX2FyZycKLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGlzX2JpbmRfdGVtcGxhdGU7Ci0KLXRlbXBsYXRlPCAKLSAgICAgIHR5cGVuYW1lIFQsIEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyh0eXBlbmFtZSBVKQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnCi0gICAgOiByZXNvbHZlX2FyZ19pbXBsPCBpc19iaW5kX3RlbXBsYXRlPFQ+Ojp2YWx1ZSA+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQsQVVYNzc4MDc2X0JJTkRfUEFSQU1TKFUpID4KLXsKLX07Ci0KLSMgICBpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1VOTkFNRURfUExBQ0VIT0xERVJfU1VQUE9SVCkKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiAKLXN0cnVjdCByZXBsYWNlX3VubmFtZWRfYXJnX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQXJnID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgQXJnIG5leHQ7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IAotc3RydWN0IHJlcGxhY2VfdW5uYW1lZF9hcmdfaW1wbDwgYXJnPC0xPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEFyZyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8QXJnPjo6dHlwZSBuZXh0OwotICAgICAgICB0eXBlZGVmIEFyZyB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgQXJnID4gCi1zdHJ1Y3QgcmVwbGFjZV91bm5hbWVkX2FyZwotICAgIDogcmVwbGFjZV91bm5hbWVkX2FyZ19pbXBsPFQ+Ojp0ZW1wbGF0ZSByZXN1bHRfPEFyZz4KLXsKLX07Ci0KLSMgICBlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1VOTkFNRURfUExBQ0VIT0xERVJfU1VQUE9SVAotCi0vLyBhZ3VydCwgMTAvbWFyLzAyOiB0aGUgZm9yd2FyZCBkZWNsYXJhdGlvbiBoYXMgdG8gYXBwZWFyIGJlZm9yZSBhbnkgb2YKLS8vICdpc19iaW5kX2hlbHBlcicgb3ZlcmxvYWRzLCBvdGhlcndpc2UgTVNWQzYuNSBpc3N1ZXMgYW4gSUNFIG9uIGl0Ci10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCBhcml0eV8pID4gc3RydWN0IGJpbmRfY2hvb3NlcjsKLQotYXV4Ojpub190YWcgaXNfYmluZF9oZWxwZXIoLi4uKTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gYXV4Ojpub190YWcgaXNfYmluZF9oZWxwZXIocHJvdGVjdDxUPiopOwotCi0vLyBvdmVybG9hZCBmb3IgIm1haW4iIGZvcm0KLS8vIGFndXJ0LCAxNS9tYXIvMDI6IE1TVkMgNi41IGZhaWxzIHRvIHByb3Blcmx5IHJlc29sdmUgdGhlIG92ZXJsb2FkIAotLy8gaW4gY2FzZSBpZiB3ZSB1c2UgJ2F1eDo6dHlwZV93cmFwcGVyPCBiaW5kPC4uLj4gPicgaGVyZSwgYW5kIGFsbCAKLS8vICdiaW5kJyBpbnN0YW50aWF0aW9ucyBmb3JtIGEgY29tcGxldGUgdHlwZSBhbnl3YXkKLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0JJTkRfVEVNUExBVEUpCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyh0eXBlbmFtZSBUKQotICAgID4KLWF1eDo6eWVzX3RhZyBpc19iaW5kX2hlbHBlcihiaW5kPEYsQVVYNzc4MDc2X0JJTkRfUEFSQU1TKFQpPiopOwotI2VuZGlmCi0KLXRlbXBsYXRlPCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIE4pID4KLWF1eDo6eWVzX3RhZyBpc19iaW5kX2hlbHBlcihhcmc8Tj4qKTsKLQotdGVtcGxhdGU8IGJvb2wgaXNfcmVmXyA9IHRydWUgPgotc3RydWN0IGlzX2JpbmRfdGVtcGxhdGVfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX2JpbmRfdGVtcGxhdGVfaW1wbDxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAKLSAgICAgICAgICAgICAgc2l6ZW9mKGF1eDo6aXNfYmluZF9oZWxwZXIoc3RhdGljX2Nhc3Q8VCo+KDApKSkgCi0gICAgICAgICAgICAgICAgPT0gc2l6ZW9mKGF1eDo6eWVzX3RhZykKLSAgICAgICAgICAgICk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGlzX2JpbmRfdGVtcGxhdGUKLSAgICA6IGlzX2JpbmRfdGVtcGxhdGVfaW1wbDwgOjpuZG5ib29zdDo6ZGV0YWlsOjppc19yZWZlcmVuY2VfaW1wbDxUPjo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88VD4KLXsKLX07Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi0KLSNkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywoMCwgTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSwgPG5kbmJvb3N0L21wbC9iaW5kLmhwcD4pKQotI2luY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19URU1QTEFURV9URU1QTEFURV9QQVJBTUVURVJTKQotLy8vIGlmXy9ldmFsX2lmIHNwZWNpYWxpemF0aW9ucwotIyAgIGRlZmluZSBBVVg3NzgwNzZfU1BFQ19OQU1FIGlmXwotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgKDMsKDMsIDMsIDxuZG5ib29zdC9tcGwvYmluZC5ocHA+KSkKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19ETUNfQU1CSUdVT1VTX0NUUFMpCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9TUEVDX05BTUUgZXZhbF9pZgotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgKDMsKDMsIDMsIDxuZG5ib29zdC9tcGwvYmluZC5ocHA+KSkKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotI2VuZGlmCi0jZW5kaWYKLQotLy8gcmVhbCBDKysgdmVyc2lvbiBpcyBhbHJlYWR5IHRha2VuIGNhcmUgb2YKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0JJTkRfVEVNUExBVEUpCi0KLW5hbWVzcGFjZSBhdXggewotLy8gYXBwbHlfY291bnRfYXJncwotI2RlZmluZSBBVVg3NzgwNzZfQ09VTlRfQVJHU19QUkVGSVggYmluZAotI2RlZmluZSBBVVg3NzgwNzZfQ09VTlRfQVJHU19ERUZBVUxUIG5hCi0jZGVmaW5lIEFVWDc3ODA3Nl9DT1VOVF9BUkdTX0FSSVRZIE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFkKLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb3VudF9hcmdzLmhwcD4KLX0KLQotLy8gYmluZAotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCBBVVg3NzgwNzZfQklORF9QQVJBTVModHlwZW5hbWUgVCkgQVVYNzc4MDc2X0RNQ19QQVJBTSgpCi0gICAgPgotc3RydWN0IGJpbmQKLSAgICA6IGF1eDo6YmluZF9jaG9vc2VyPAotICAgICAgICAgIGF1eDo6YmluZF9jb3VudF9hcmdzPEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyhUKT46OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IEYsQVVYNzc4MDc2X0JJTkRfUEFSQU1TKFQpID46OnR5cGUKLXsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygKLSAgICAgIE5ETkJPT1NUX1BQX0lOQyhORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZKQotICAgICwgYmluZAotICAgICkKLQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKAotICAgICAgTkROQk9PU1RfUFBfSU5DKE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFkpCi0gICAgLCBiaW5kCi0gICAgKQotCi0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLSMgICB1bmRlZiBBVVg3NzgwNzZfQklORF9ORVNURURfREVGQVVMVF9QQVJBTVMKLSMgICB1bmRlZiBBVVg3NzgwNzZfQklORF9OX1NQRUNfUEFSQU1TCi0jICAgdW5kZWYgQVVYNzc4MDc2X0JJTkRfTl9QQVJBTVMKLSMgICB1bmRlZiBBVVg3NzgwNzZfQklORF9ERUZBVUxUX1BBUkFNUwotIyAgIHVuZGVmIEFVWDc3ODA3Nl9CSU5EX1BBUkFNUwotIyAgIHVuZGVmIEFVWDc3ODA3Nl9ETUNfUEFSQU0KLSMgICB1bmRlZiBBVVg3NzgwNzZfQVBQTFkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQklORF9IUFBfSU5DTFVERUQKLQotLy8vLy8gaXRlcmF0aW9uLCBkZXB0aCA9PSAxCi0KLS8vIEZvciBnY2MgNC40IGNvbXBhdGFiaWxpdHksIHdlIG11c3QgaW5jbHVkZSB0aGUKLS8vIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCB0ZXN0IGluc2lkZSBhbiAjZWxzZSBjbGF1c2UuCi0jZWxzZSAvLyBORE5CT09TVF9QUF9JU19JVEVSQVRJTkcKLSNpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKSA9PSAxCi0KLSMgICBkZWZpbmUgaV8gTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OKDEpCi0KLSNpZiBkZWZpbmVkKEFVWDc3ODA3Nl9TUEVDX05BTUUpCi0KLS8vIGxhenkgbWV0YWZ1bmN0aW9uIHNwZWNpYWxpemF0aW9uCi10ZW1wbGF0ZTwgdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaV8sIHR5cGVuYW1lIFQpID4gY2xhc3MgRiwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQocXVvdGUsaV8pOwotCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpXywgdHlwZW5hbWUgVCkgPiBzdHJ1Y3QgQVVYNzc4MDc2X1NQRUNfTkFNRTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcgQVVYNzc4MDc2X0JJTkRfTl9QQVJBTVMoaV8sIHR5cGVuYW1lIFQpCi0gICAgPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChiaW5kLGlfKTwgCi0gICAgICBORE5CT09TVF9QUF9DQVQocXVvdGUsaV8pPEFVWDc3ODA3Nl9TUEVDX05BTUUsVGFnPgotICAgIEFVWDc3ODA3Nl9CSU5EX05fUEFSQU1TKGlfLFQpCi0gICAgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIEFVWDc3ODA3Nl9CSU5EX05FU1RFRF9ERUZBVUxUX1BBUkFNUyh0eXBlbmFtZSBVLCBuYSkKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBtcGw6OmFyZzwxPiBuMTsKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMiAoMywoMSwgaV8sIDxuZG5ib29zdC9tcGwvYmluZC5ocHA+KSkKLSMgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEFVWDc3ODA3Nl9TUEVDX05BTUU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICAsIE5ETkJPT1NUX01QTF9QUF9FWFRfUEFSQU1TKDIsIE5ETkJPT1NUX1BQX0lOQyhpXyksIHQpCi0gICAgICAgICAgICA+Ojp0eXBlIGZfOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBmXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi0jdW5kZWYgQVVYNzc4MDc2X1NQRUNfTkFNRQotCi0jZWxzZSAvLyBBVVg3NzgwNzZfU1BFQ19OQU1FCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiBBVVg3NzgwNzZfQklORF9OX1BBUkFNUyhpXywgdHlwZW5hbWUgVCkgQVVYNzc4MDc2X0RNQ19QQVJBTSgpCi0gICAgPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChiaW5kLGlfKQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIEFVWDc3ODA3Nl9CSU5EX05FU1RFRF9ERUZBVUxUX1BBUkFNUyh0eXBlbmFtZSBVLCBuYSkKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSMgICBpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1VOTkFNRURfUExBQ0VIT0xERVJfU1VQUE9SVCkKLQotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRixtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzxhMCxBVVg3NzgwNzZfQklORF9QQVJBTVMoVSk+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSMgICBlbHNlCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPEYsQVVYNzc4MDc2X0JJTkRfUEFSQU1TKFUpPjo6dHlwZSBmXzsKLQotIyAgIGVuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fVU5OQU1FRF9QTEFDRUhPTERFUl9TVVBQT1JUCi0KLSMgICBpZiBpXyA+IDAKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMiAoMywoMSwgaV8sIDxuZG5ib29zdC9tcGwvYmluZC5ocHA+KSkKLSMgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLSMgICBlbmRpZgotCi0gICAgIHB1YmxpYzoKLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfQVJHKHVudXNlZCwgaV8sIHQpIFwKLSAgICBORE5CT09TVF9QUF9DT01NQV9JRihpXykgXAotICAgIHR5cGVuYW1lIE5ETkJPT1NUX1BQX0NBVCh0LE5ETkJPT1NUX1BQX0lOQyhpXykpOjp0eXBlIFwKLS8qKi8KLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE5ETkJPT1NUX1BQX0NBVChhcHBseV93cmFwLGlfKTwKLSAgICAgICAgICAgICAgZl8gCi0gICAgICAgICAgICBORE5CT09TVF9QUF9DT01NQV9JRihpXykgTkROQk9PU1RfTVBMX1BQX1JFUEVBVChpXywgQVVYNzc4MDc2X0FSRywgdCkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9BUkcKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYgQVVYNzc4MDc2X0JJTkRfTl9QQVJBTVMoaV8sIHR5cGVuYW1lIFQpLCBBVVg3NzgwNzZfQklORF9QQVJBTVModHlwZW5hbWUgVSkKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIE5ETkJPT1NUX1BQX0NBVChiaW5kLGlfKTxGIEFVWDc3ODA3Nl9CSU5EX05fUEFSQU1TKGlfLFQpPixBVVg3NzgwNzZfQklORF9QQVJBTVMoVSkKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQoYmluZCxpXyk8RiBBVVg3NzgwNzZfQklORF9OX1BBUkFNUyhpXyxUKT4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBBVVg3NzgwNzZfQVBQTFk8Zl8sIEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyhVKT46OnR5cGUgdHlwZTsKLX07Ci0KLSNlbHNlCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiBBVVg3NzgwNzZfQklORF9OX1BBUkFNUyhpXywgdHlwZW5hbWUgVCkKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKE5ETkJPT1NUX1BQX0NBVChiaW5kLGlfKTxGIEFVWDc3ODA3Nl9CSU5EX05fUEFSQU1TKGlfLFQpPiopOwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKE5ETkJPT1NUX1BQX0lOQyhpXyksIE5ETkJPT1NUX1BQX0NBVChiaW5kLGlfKSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyhORE5CT09TVF9QUF9JTkMoaV8pLCBORE5CT09TVF9QUF9DQVQoYmluZCxpXykpCi0KLSMgICBpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0JJTkRfVEVNUExBVEUpCi0jICAgaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLSAgICAKLSNpZiBpXyA9PSBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGIEFVWDc3ODA3Nl9CSU5EX05fUEFSQU1TKGlfLCB0eXBlbmFtZSBUKSBBVVg3NzgwNzZfRE1DX1BBUkFNKCkKLSAgICA+Ci1zdHJ1Y3QgYmluZAotICAgIDogTkROQk9PU1RfUFBfQ0FUKGJpbmQsaV8pPEYgQVVYNzc4MDc2X0JJTkRfTl9QQVJBTVMoaV8sVCkgPgotewotfTsKLSNlbHNlCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYgQVVYNzc4MDc2X0JJTkRfTl9QQVJBTVMoaV8sIHR5cGVuYW1lIFQpIEFVWDc3ODA3Nl9ETUNfUEFSQU0oKQotICAgID4KLXN0cnVjdCBiaW5kPCBGIEFVWDc3ODA3Nl9CSU5EX05fU1BFQ19QQVJBTVMoaV8sIFQsIG5hKSA+Ci0gICAgOiBORE5CT09TVF9QUF9DQVQoYmluZCxpXyk8RiBBVVg3NzgwNzZfQklORF9OX1BBUkFNUyhpXyxUKSA+Ci17Ci19OwotI2VuZGlmCi0KLSMgICBlbHNlIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiaW5kX2Nob29zZXI8aV8+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRiwgQVVYNzc4MDc2X0JJTkRfUEFSQU1TKHR5cGVuYW1lIFQpCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQoYmluZCxpXyk8IEYgQVVYNzc4MDc2X0JJTkRfTl9QQVJBTVMoaV8sVCkgPiB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotIyAgIGVuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSMgICBlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX0JJTkRfVEVNUExBVEUKLQotI2VuZGlmIC8vIEFVWDc3ODA3Nl9TUEVDX05BTUUKLQotIyAgIHVuZGVmIGlfCi0KLS8vLy8vIGl0ZXJhdGlvbiwgZGVwdGggPT0gMgotCi0jZWxpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKSA9PSAyCi0KLSMgICBkZWZpbmUgal8gTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OKDIpCi0jICAgaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19VTk5BTUVEX1BMQUNFSE9MREVSX1NVUFBPUlQpCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IE5ETkJPT1NUX1BQX0NBVChULGpfKSxORE5CT09TVF9QUF9DQVQobixqXykgPiBORE5CT09TVF9QUF9DQVQocixqXyk7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgTkROQk9PU1RfUFBfQ0FUKHIsal8pOjp0eXBlIE5ETkJPT1NUX1BQX0NBVChhLGpfKTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBORE5CT09TVF9QUF9DQVQocixqXyk6Om5leHQgTkROQk9PU1RfUFBfQ0FUKG4sTkROQk9PU1RfUFBfSU5DKGpfKSk7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPE5ETkJPT1NUX1BQX0NBVChhLGpfKSwgQVVYNzc4MDc2X0JJTkRfUEFSQU1TKFUpPiBORE5CT09TVF9QUF9DQVQodCxqXyk7Ci0gICAgICAgIC8vLwotIyAgIGVsc2UKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IE5ETkJPT1NUX1BQX0NBVChULGpfKSxBVVg3NzgwNzZfQklORF9QQVJBTVMoVSk+IE5ETkJPT1NUX1BQX0NBVCh0LGpfKTsKLQotIyAgIGVuZGlmCi0jICAgdW5kZWYgal8KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpCi0jZW5kaWYgLy8gTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9iaW5kX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9iaW5kX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4OWJjYzUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYmluZF9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HKQotCi0vLy8vLyBoZWFkZXIgYm9keQotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9CSU5EX0ZXRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0JJTkRfRldEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogYmluZF9md2QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2JpbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIGJpbmRfZndkLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saW1pdHMvYXJpdHkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9wYXJhbXMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9kZWZhdWx0X3BhcmFtcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2RtY19hbWJpZ3VvdXNfY3Rwcy5ocHA+Ci0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29tbWFfaWYuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLS8vIGxvY2FsIG1hY3JvcywgI3VuZGVmLWluZWQgYXQgdGhlIGVuZCBvZiB0aGUgaGVhZGVyCi0KLSMgICBpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfRE1DX0FNQklHVU9VU19DVFBTKQotIyAgICAgICBkZWZpbmUgQVVYNzc4MDc2X0RNQ19QQVJBTSgpICwgaW50IGR1bW15XyA9IDAKLSMgICBlbHNlCi0jICAgICAgIGRlZmluZSBBVVg3NzgwNzZfRE1DX1BBUkFNKCkKLSMgICBlbmRpZgotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9CSU5EX0RFRkFVTFRfUEFSQU1TKHBhcmFtLCB2YWx1ZSkgXAotICAgIE5ETkJPT1NUX01QTF9QUF9ERUZBVUxUX1BBUkFNUyggXAotICAgICAgICAgIE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFkgXAotICAgICAgICAsIHBhcmFtIFwKLSAgICAgICAgLCB2YWx1ZSBcCi0gICAgICAgICkgXAotICAgIEFVWDc3ODA3Nl9ETUNfUEFSQU0oKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9CSU5EX05fUEFSQU1TKG4sIHBhcmFtKSBcCi0gICAgTkROQk9PU1RfUFBfQ09NTUFfSUYobikgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhuLCBwYXJhbSkgXAotICAgIEFVWDc3ODA3Nl9ETUNfUEFSQU0oKSBcCi0gICAgLyoqLwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19CSU5EX1RFTVBMQVRFKQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCBBVVg3NzgwNzZfQklORF9ERUZBVUxUX1BBUkFNUyh0eXBlbmFtZSBULCBuYSkKLSAgICA+Ci1zdHJ1Y3QgYmluZDsKLSNlbmRpZgotCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDAsIE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFksIDxuZG5ib29zdC9tcGwvYmluZF9md2QuaHBwPikpCi0jaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9CSU5EX05fUEFSQU1TCi0jICAgdW5kZWYgQVVYNzc4MDc2X0JJTkRfREVGQVVMVF9QQVJBTVMKLSMgICB1bmRlZiBBVVg3NzgwNzZfRE1DX1BBUkFNCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9CSU5EX0ZXRF9IUFBfSU5DTFVERUQKLQotLy8vLy8gaXRlcmF0aW9uCi0KLSNlbHNlCi0jZGVmaW5lIGlfIE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigxKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYgQVVYNzc4MDc2X0JJTkRfTl9QQVJBTVMoaV8sIHR5cGVuYW1lIFQpCi0gICAgPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChiaW5kLGlfKTsKLQotI3VuZGVmIGlfCi0jZW5kaWYgLy8gTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9ib29sLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2Jvb2wuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YmU3MDMzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2Jvb2wuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9CT09MX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQk9PTF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGJvb2wuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbF9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pbnRlZ3JhbF9jX3RhZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3N0YXRpY19jb25zdGFudC5ocHA+Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLQotdGVtcGxhdGU8IGJvb2wgQ18gPiBzdHJ1Y3QgYm9vbF8KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBDXyk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jX3RhZyB0YWc7Ci0gICAgdHlwZWRlZiBib29sXyB0eXBlOwotICAgIHR5cGVkZWYgYm9vbCB2YWx1ZV90eXBlOwotICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiB0aGlzLT52YWx1ZTsgfQotfTsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lOQ0xBU1NfTUVNQkVSX0lOSVRJQUxJWkFUSU9OKQotdGVtcGxhdGU8IGJvb2wgQ18gPgotYm9vbCBjb25zdCBib29sXzxDXz46OnZhbHVlOwotI2VuZGlmCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQk9PTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2Jvb2xfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2Jvb2xfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzI1Y2FjNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9ib29sX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0JPT0xfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQk9PTF9GV0RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBib29sX2Z3ZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2FkbF9iYXJyaWVyLmhwcD4KLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotCi10ZW1wbGF0ZTwgYm9vbCBDXyA+IHN0cnVjdCBib29sXzsKLQotLy8gc2hvcmN1dHMKLXR5cGVkZWYgYm9vbF88dHJ1ZT4gdHJ1ZV87Ci10eXBlZGVmIGJvb2xfPGZhbHNlPiBmYWxzZV87Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfREVDTChib29sXykKLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfREVDTCh0cnVlXykKLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfREVDTChmYWxzZV8pCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQk9PTF9GV0RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9jbGVhci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9jbGVhci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExYjQ5YTIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvY2xlYXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9DTEVBUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0NMRUFSX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogY2xlYXIuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvY2xlYXJfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jbGVhcl9pbXBsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvc2VxdWVuY2VfdGFnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oU2VxdWVuY2UpCi0gICAgPgotc3RydWN0IGNsZWFyCi0gICAgOiBjbGVhcl9pbXBsPCB0eXBlbmFtZSBzZXF1ZW5jZV90YWc8U2VxdWVuY2U+Ojp0eXBlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSBhcHBseTwgU2VxdWVuY2UgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSxjbGVhciwoU2VxdWVuY2UpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDEsIGNsZWFyKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NMRUFSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvY2xlYXJfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2NsZWFyX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkMGRhZjIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvY2xlYXJfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQ0xFQVJfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQ0xFQVJfRldEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogY2xlYXJfZndkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBjbGVhcl9pbXBsOwotdGVtcGxhdGU8IHR5cGVuYW1lIFNlcXVlbmNlID4gc3RydWN0IGNsZWFyOwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NMRUFSX0ZXRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2NvbXBhcmlzb24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvY29tcGFyaXNvbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhZmFkMWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvY29tcGFyaXNvbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0NPTVBBUklTT05fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9DT01QQVJJU09OX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogY29tcGFyaXNvbi5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9lcXVhbF90by5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL25vdF9lcXVhbF90by5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xlc3MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ncmVhdGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGVzc19lcXVhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2dyZWF0ZXJfZXF1YWwuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NPTVBBUklTT05fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9jb250YWlucy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9jb250YWlucy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzOTVlOGMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvY29udGFpbnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9DT05UQUlOU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0NPTlRBSU5TX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgRXJpYyBGcmllZG1hbiAyMDAyCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGNvbnRhaW5zLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2NvbnRhaW5zX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3NlcXVlbmNlX3RhZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29udGFpbnNfaW1wbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFNlcXVlbmNlKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUKQotICAgID4KLXN0cnVjdCBjb250YWlucwotICAgIDogY29udGFpbnNfaW1wbDwgdHlwZW5hbWUgc2VxdWVuY2VfdGFnPFNlcXVlbmNlPjo6dHlwZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgYXBwbHk8IFNlcXVlbmNlLFQgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMixjb250YWlucywoU2VxdWVuY2UsVCkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMiwgY29udGFpbnMpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ09OVEFJTlNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9jb250YWluc19md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvY29udGFpbnNfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWI0YzJkZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9jb250YWluc19md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9DT05UQUlOU19GV0RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9DT05UQUlOU19GV0RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBFcmljIEZyaWVkbWFuIDIwMDIKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogY29udGFpbnNfZndkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBjb250YWluc19pbXBsOwotdGVtcGxhdGU8IHR5cGVuYW1lIFNlcXVlbmNlLCB0eXBlbmFtZSBUID4gc3RydWN0IGNvbnRhaW5zOwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NPTlRBSU5TX0ZXRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2NvcHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvY29weS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzZTE2YzguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvY29weS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0NPUFlfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9DT1BZX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAzLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogY29weS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9mb2xkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvcmV2ZXJzZV9mb2xkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pbnNlcnRlcl9hbGdvcml0aG0uaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgU2VxdWVuY2UKLSAgICAsIHR5cGVuYW1lIEluc2VydGVyCi0gICAgPgotc3RydWN0IGNvcHlfaW1wbAotICAgIDogZm9sZDwgCi0gICAgICAgICAgU2VxdWVuY2UKLSAgICAgICAgLCB0eXBlbmFtZSBJbnNlcnRlcjo6c3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBJbnNlcnRlcjo6b3BlcmF0aW9uCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgU2VxdWVuY2UKLSAgICAsIHR5cGVuYW1lIEluc2VydGVyCi0gICAgPgotc3RydWN0IHJldmVyc2VfY29weV9pbXBsCi0gICAgOiByZXZlcnNlX2ZvbGQ8Ci0gICAgICAgICAgU2VxdWVuY2UKLSAgICAgICAgLCB0eXBlbmFtZSBJbnNlcnRlcjo6c3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBJbnNlcnRlcjo6b3BlcmF0aW9uCi0gICAgICAgID4KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0lOU0VSVEVSX0FMR09SSVRITV9ERUYoMiwgY29weSkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DT1BZX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvZGVyZWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvZGVyZWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNWZjMmFiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2RlcmVmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfREVSRUZfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9ERVJFRl9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGRlcmVmLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbXN2Y190eXBlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2V0aS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oSXRlcmF0b3IpCi0gICAgPgotc3RydWN0IGRlcmVmCi17Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19NU1ZDXzcwX0VUSV9CVUcpCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBJdGVyYXRvcjo6dHlwZSB0eXBlOwotI2Vsc2UKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bXN2Y190eXBlPEl0ZXJhdG9yPjo6dHlwZSB0eXBlOwotI2VuZGlmCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLGRlcmVmLChJdGVyYXRvcikpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMSwgZGVyZWYpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfREVSRUZfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9kaXN0YW5jZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9kaXN0YW5jZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1MzYwZjQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvZGlzdGFuY2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9ESVNUQU5DRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0RJU1RBTkNFX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogZGlzdGFuY2UuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZGlzdGFuY2VfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaXRlcl9mb2xkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaXRlcmF0b3JfcmFuZ2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9sb25nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbmV4dC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3RhZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FwcGx5X3dyYXAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL21zdmNfZXRpX2Jhc2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ZhbHVlX3drbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9mb3J3YXJkaW5nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvc3RhdGljX2NvbnN0YW50LmhwcD4KLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotLy8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBmb3IgZm9yd2FyZC9iaWRpcmVjdGlvbmFsIGl0ZXJhdG9ycwotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBkaXN0YW5jZV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEZpcnN0LCB0eXBlbmFtZSBMYXN0ID4gc3RydWN0IGFwcGx5Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19ORVNURURfRk9SV0FSRElORykKLSAgICAgICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGl0ZXJfZm9sZDwKLSAgICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2U8Rmlyc3QsTGFzdD4KLSAgICAgICAgICAgICwgbXBsOjpsb25nXzwwPgotICAgICAgICAgICAgLCBuZXh0PD4KLSAgICAgICAgICAgID46OnR5cGUgPgotICAgIHsKLSNlbHNlCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJfZm9sZDwKLSAgICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2U8Rmlyc3QsTGFzdD4KLSAgICAgICAgICAgICwgbXBsOjpsb25nXzwwPgotICAgICAgICAgICAgLCBuZXh0PD4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICAgICAgCi0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChsb25nLCB2YWx1ZSA9Ci0gICAgICAgICAgICAgIChpdGVyX2ZvbGQ8Ci0gICAgICAgICAgICAgICAgICBpdGVyYXRvcl9yYW5nZTxGaXJzdCxMYXN0PgotICAgICAgICAgICAgICAgICwgbXBsOjpsb25nXzwwPgotICAgICAgICAgICAgICAgICwgbmV4dDw+Ci0gICAgICAgICAgICAgICAgPjo6dHlwZTo6dmFsdWUpCi0gICAgICAgICAgICApOwotI2VuZGlmCi0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShGaXJzdCkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTGFzdCkKLSAgICA+Ci1zdHJ1Y3QgZGlzdGFuY2UKLSAgICA6IGRpc3RhbmNlX2ltcGw8IHR5cGVuYW1lIHRhZzxGaXJzdD46OnR5cGUgPgotICAgICAgICA6OnRlbXBsYXRlIGFwcGx5PEZpcnN0LCBMYXN0PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgZGlzdGFuY2UsIChGaXJzdCwgTGFzdCkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMiwgZGlzdGFuY2UpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfRElTVEFOQ0VfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9kaXN0YW5jZV9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvZGlzdGFuY2VfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODUzZTliMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9kaXN0YW5jZV9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9ESVNUQU5DRV9GV0RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9ESVNUQU5DRV9GV0RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBkaXN0YW5jZV9md2QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb21tb25fbmFtZV93a25kLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQ09NTU9OX05BTUVfV0tORChkaXN0YW5jZSkKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBkaXN0YW5jZV9pbXBsOwotdGVtcGxhdGU8IHR5cGVuYW1lIEZpcnN0LCB0eXBlbmFtZSBMYXN0ID4gc3RydWN0IGRpc3RhbmNlOwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0RJU1RBTkNFX0ZXRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2VtcHR5X2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9lbXB0eV9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDEyODE0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2VtcHR5X2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0VNUFRZX0ZXRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0VNUFRZX0ZXRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGVtcHR5X2Z3ZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZW1wdHlfaW1wbDsKLXRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSA+IHN0cnVjdCBlbXB0eTsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9FTVBUWV9GV0RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9lcXVhbF90by5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9lcXVhbF90by5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmYTBhZTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvZXF1YWxfdG8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9FUVVBTF9UT19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0VRVUFMX1RPX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogZXF1YWxfdG8uaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNkZWZpbmUgQVVYNzc4MDc2X09QX05BTUUgZXF1YWxfdG8KLSNkZWZpbmUgQVVYNzc4MDc2X09QX1RPS0VOID09Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29tcGFyaXNvbl9vcC5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfRVFVQUxfVE9fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9ldmFsX2lmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2V2YWxfaWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzMyZmFlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2V2YWxfaWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9FVkFMX0lGX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfRVZBTF9JRl9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGV2YWxfaWYuaHBwIDYxOTIxIDIwMTAtMDUtMTEgMjE6MzM6MjRaIG5laWxncm92ZXMgJAotLy8gJERhdGU6IDIwMTAtMDUtMTEgMTQ6MzM6MjQgLTA3MDAgKFR1ZSwgMTEgTWF5IDIwMTApICQKLS8vICRSZXZpc2lvbjogNjE5MjEgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL21zdmMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9nY2MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShDKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShGMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oRjIpCi0gICAgPgotc3RydWN0IGV2YWxfaWYKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApIFwKLSAgICAgfHwgKCBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01QTF9DRkdfR0NDLCA+PSAweDAzMDApIFwKLSAgICAgICAgJiYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NUExfQ0ZHX0dDQywgTkROQk9PU1RfVEVTVEVEX0FUKDB4MDMwNCkpIFwKLSAgICAgICAgKQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPEMsRjEsRjI+Ojp0eXBlIGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgZl86OnR5cGUgdHlwZTsKLSNlbHNlCi0gICAgOiBpZl88QyxGMSxGMj46OnR5cGUKLXsKLSNlbmRpZgotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMyxldmFsX2lmLChDLEYxLEYyKSkKLX07Ci0KLS8vIChhbG1vc3QpIGNvcHkgJiBwYXN0ZSBpbiBvcmRlciB0byBzYXZlIG9uZSBtb3JlIAotLy8gcmVjdXJzaXZlbHkgbmVzdGVkIHRlbXBsYXRlIGluc3RhbnRpYXRpb24gdG8gdXNlcgotdGVtcGxhdGU8Ci0gICAgICBib29sIEMKLSAgICAsIHR5cGVuYW1lIEYxCi0gICAgLCB0eXBlbmFtZSBGMgotICAgID4KLXN0cnVjdCBldmFsX2lmX2MKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApIFwKLSAgICAgfHwgKCBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01QTF9DRkdfR0NDLCA+PSAweDAzMDApIFwKLSAgICAgICAgJiYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NUExfQ0ZHX0dDQywgTkROQk9PU1RfVEVTVEVEX0FUKDB4MDMwNCkpIFwKLSAgICAgICAgKQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfYzxDLEYxLEYyPjo6dHlwZSBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGZfOjp0eXBlIHR5cGU7Ci0jZWxzZQotICAgIDogaWZfYzxDLEYxLEYyPjo6dHlwZQotewotI2VuZGlmCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMywgZXZhbF9pZikKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9FVkFMX0lGX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvZmluZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9maW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDExYzFlYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9maW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfRklORF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0ZJTkRfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwMgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBmaW5kLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ZpbmRfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9zYW1lX2FzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oU2VxdWVuY2UpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQpCi0gICAgPgotc3RydWN0IGZpbmQKLSAgICA6IGZpbmRfaWY8IFNlcXVlbmNlLHNhbWVfYXM8VD4gPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMixmaW5kLChTZXF1ZW5jZSxUKSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygyLCBmaW5kKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0ZJTkRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9maW5kX2lmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2ZpbmRfaWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMmYzYWFmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2ZpbmRfaWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9GSU5EX0lGX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfRklORF9JRl9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGZpbmRfaWYuaHBwIDQ5Mjc0IDIwMDgtMTAtMTEgMDc6MjI6MDVaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMSAwMDoyMjowNSAtMDcwMCAoU2F0LCAxMSBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI3NCAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9maW5kX2lmX3ByZWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hcmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pdGVyX2ZvbGRfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbW1vbl9uYW1lX3drbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQ09NTU9OX05BTUVfV0tORChmaW5kX2lmKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oU2VxdWVuY2UpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFByZWRpY2F0ZSkKLSAgICA+Ci1zdHJ1Y3QgZmluZF9pZgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcl9mb2xkX2lmPAotICAgICAgICAgIFNlcXVlbmNlCi0gICAgICAgICwgdm9pZAotICAgICAgICAsIG1wbDo6YXJnPDE+IC8vIGlnbm9yZQotICAgICAgICAsIHByb3RlY3Q8IGF1eDo6ZmluZF9pZl9wcmVkPFByZWRpY2F0ZT4gPgotICAgICAgICA+Ojp0eXBlIHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNlY29uZDxyZXN1bHRfPjo6dHlwZSB0eXBlOwotCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLGZpbmRfaWYsKFNlcXVlbmNlLFByZWRpY2F0ZSkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMixmaW5kX2lmKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0ZJTkRfSUZfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9mb2xkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2ZvbGQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NGVhNTYxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2ZvbGQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9GT0xEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfRk9MRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMS0yMDAyCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGZvbGQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYmVnaW5fZW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvTzFfc2l6ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vZm9sZF9pbXBsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oU2VxdWVuY2UpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFN0YXRlKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShGb3J3YXJkT3ApCi0gICAgPgotc3RydWN0IGZvbGQKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6Zm9sZF9pbXBsPAotICAgICAgICAgIDo6bmRuYm9vc3Q6Om1wbDo6TzFfc2l6ZTxTZXF1ZW5jZT46OnZhbHVlCi0gICAgICAgICwgdHlwZW5hbWUgYmVnaW48U2VxdWVuY2U+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZW5kPFNlcXVlbmNlPjo6dHlwZQotICAgICAgICAsIFN0YXRlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID46OnN0YXRlIHR5cGU7Ci0KLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDMsZm9sZCwoU2VxdWVuY2UsU3RhdGUsRm9yd2FyZE9wKSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygzLCBmb2xkKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0ZPTERfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9mb3JfZWFjaC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9mb3JfZWFjaC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViNzI2MzIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvZm9yX2VhY2guaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE2ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfRk9SX0VBQ0hfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9GT1JfRUFDSF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA4Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGZvcl9lYWNoLmhwcCA1NTY0OCAyMDA5LTA4LTE4IDA1OjE2OjUzWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDktMDgtMTcgMjI6MTY6NTMgLTA3MDAgKE1vbiwgMTcgQXVnIDIwMDkpICQKLS8vICRSZXZpc2lvbjogNTU2NDggJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lzX3NlcXVlbmNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYmVnaW5fZW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXBwbHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbmV4dF9wcmlvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2RlcmVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWRlbnRpdHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3Vud3JhcC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L3ZhbHVlX2luaXQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBib29sIGRvbmUgPSB0cnVlID4KLXN0cnVjdCBmb3JfZWFjaF9pbXBsCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0SXRlcmF0b3IKLSAgICAgICAgLCB0eXBlbmFtZSBUcmFuc2Zvcm1GdW5jCi0gICAgICAgICwgdHlwZW5hbWUgRgotICAgICAgICA+Ci0gICAgc3RhdGljIHZvaWQgZXhlY3V0ZSgKLSAgICAgICAgICBJdGVyYXRvcioKLSAgICAgICAgLCBMYXN0SXRlcmF0b3IqCi0gICAgICAgICwgVHJhbnNmb3JtRnVuYyoKLSAgICAgICAgLCBGCi0gICAgICAgICkKLSAgICB7Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZvcl9lYWNoX2ltcGw8ZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0SXRlcmF0b3IKLSAgICAgICAgLCB0eXBlbmFtZSBUcmFuc2Zvcm1GdW5jCi0gICAgICAgICwgdHlwZW5hbWUgRgotICAgICAgICA+Ci0gICAgc3RhdGljIHZvaWQgZXhlY3V0ZSgKLSAgICAgICAgICBJdGVyYXRvcioKLSAgICAgICAgLCBMYXN0SXRlcmF0b3IqCi0gICAgICAgICwgVHJhbnNmb3JtRnVuYyogCi0gICAgICAgICwgRiBmCi0gICAgICAgICkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGVyZWY8SXRlcmF0b3I+Ojp0eXBlIGl0ZW07Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkxPFRyYW5zZm9ybUZ1bmMsaXRlbT46OnR5cGUgYXJnOwotICAgIAotICAgICAgICAvLyBkd2EgMjAwMi85LzEwIC0tIG1ha2Ugc3VyZSBub3QgdG8gaW52b2tlIHVuZGVmaW5lZCBiZWhhdmlvcgotICAgICAgICAvLyB3aGVuIHdlIHBhc3MgYXJnLgotICAgICAgICB2YWx1ZV9pbml0aWFsaXplZDxhcmc+IHg7Ci0gICAgICAgIGF1eDo6dW53cmFwKGYsIDApKG5kbmJvb3N0OjpnZXQoeCkpOwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8SXRlcmF0b3I+Ojp0eXBlIGl0ZXI7Ci0gICAgICAgIGZvcl9lYWNoX2ltcGw8bmRuYm9vc3Q6OmlzX3NhbWU8aXRlcixMYXN0SXRlcmF0b3I+Ojp2YWx1ZT4KLSAgICAgICAgICAgIDo6ZXhlY3V0ZSggc3RhdGljX2Nhc3Q8aXRlcio+KDApLCBzdGF0aWNfY2FzdDxMYXN0SXRlcmF0b3IqPigwKSwgc3RhdGljX2Nhc3Q8VHJhbnNmb3JtRnVuYyo+KDApLCBmKTsKLSAgICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotLy8gYWd1cnQsIDE3L21hci8wMjogcG9pbnRlciBkZWZhdWx0IHBhcmFtZXRlcnMgYXJlIG5lY2Vzc2FyeSB0byB3b3JrYXJvdW5kIAotLy8gTVNWQyA2LjUgZnVuY3Rpb24gdGVtcGxhdGUgc2lnbmF0dXJlJ3MgbWFuZ2xpbmcgYnVnCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFNlcXVlbmNlCi0gICAgLCB0eXBlbmFtZSBUcmFuc2Zvcm1PcAotICAgICwgdHlwZW5hbWUgRgotICAgID4KLWlubGluZQotdm9pZCBmb3JfZWFjaChGIGYsIFNlcXVlbmNlKiA9IDAsIFRyYW5zZm9ybU9wKiA9IDApCi17Ci0gICAgTkROQk9PU1RfTVBMX0FTU0VSVCgoIGlzX3NlcXVlbmNlPFNlcXVlbmNlPiApKTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmVnaW48U2VxdWVuY2U+Ojp0eXBlIGZpcnN0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgZW5kPFNlcXVlbmNlPjo6dHlwZSBsYXN0OwotCi0gICAgYXV4Ojpmb3JfZWFjaF9pbXBsPCBuZG5ib29zdDo6aXNfc2FtZTxmaXJzdCxsYXN0Pjo6dmFsdWUgPgotICAgICAgICA6OmV4ZWN1dGUoc3RhdGljX2Nhc3Q8Zmlyc3QqPigwKSwgc3RhdGljX2Nhc3Q8bGFzdCo+KDApLCBzdGF0aWNfY2FzdDxUcmFuc2Zvcm1PcCo+KDApLCBmKTsKLX0KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBTZXF1ZW5jZQotICAgICwgdHlwZW5hbWUgRgotICAgID4KLWlubGluZQotdm9pZCBmb3JfZWFjaChGIGYsIFNlcXVlbmNlKiA9IDApCi17Ci0gICAgZm9yX2VhY2g8U2VxdWVuY2UsIGlkZW50aXR5PD4gPihmKTsKLX0KLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9GT1JfRUFDSF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2Zyb250X2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9mcm9udF9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDdjNmVkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2Zyb250X2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0ZST05UX0ZXRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0ZST05UX0ZXRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGZyb250X2Z3ZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZnJvbnRfaW1wbDsKLXRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSA+IHN0cnVjdCBmcm9udDsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9GUk9OVF9GV0RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9mcm9udF9pbnNlcnRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9mcm9udF9pbnNlcnRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1MDYxYzcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvZnJvbnRfaW5zZXJ0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9GUk9OVF9JTlNFUlRFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0ZST05UX0lOU0VSVEVSX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAzLTIwMDQKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAzLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogZnJvbnRfaW5zZXJ0ZXIuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvcHVzaF9mcm9udC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2luc2VydGVyLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgU2VxdWVuY2UKLSAgICA+Ci1zdHJ1Y3QgZnJvbnRfaW5zZXJ0ZXIKLSAgICA6IGluc2VydGVyPCBTZXF1ZW5jZSxwdXNoX2Zyb250PD4gPgotewotfTsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9GUk9OVF9JTlNFUlRFUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2dyZWF0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvZ3JlYXRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkNjE0NDEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvZ3JlYXRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0dSRUFURVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9HUkVBVEVSX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogZ3JlYXRlci5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2RlZmluZSBBVVg3NzgwNzZfT1BfTkFNRSBncmVhdGVyCi0jZGVmaW5lIEFVWDc3ODA3Nl9PUF9UT0tFTiA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29tcGFyaXNvbl9vcC5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfR1JFQVRFUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2dyZWF0ZXJfZXF1YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvZ3JlYXRlcl9lcXVhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkMGE4ZTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvZ3JlYXRlcl9lcXVhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0dSRUFURVJfRVFVQUxfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9HUkVBVEVSX0VRVUFMX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogZ3JlYXRlcl9lcXVhbC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2RlZmluZSBBVVg3NzgwNzZfT1BfTkFNRSBncmVhdGVyX2VxdWFsCi0jZGVmaW5lIEFVWDc3ODA3Nl9PUF9UT0tFTiA+PQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbXBhcmlzb25fb3AuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0dSRUFURVJfRVFVQUxfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9oYXNfeHh4LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2hhc194eHguaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODg1NjA5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2hhc194eHguaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjQwICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfSEFTX1hYWF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19YWFhfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNgotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDItMjAwMwotLy8gQ29weXJpZ2h0IERhbmllbCBXYWxrZXIgMjAwNwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBoYXNfeHh4LmhwcCA2NDE0NiAyMDEwLTA3LTE5IDAwOjQ2OjMxWiBkandhbGtlciAkCi0vLyAkRGF0ZTogMjAxMC0wNy0xOCAxNzo0NjozMSAtMDcwMCAoU3VuLCAxOCBKdWwgMjAxMCkgJAotLy8gJFJldmlzaW9uOiA2NDE0NiAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdHlwZV93cmFwcGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy95ZXNfbm8uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9nY2MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9oYXNfeHh4LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbXN2Y190eXBlbmFtZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL21zdmMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9zdGF0aWNfY29uc3RhbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcnJheS9lbGVtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fdHJhaWxpbmdfcGFyYW1zLmhwcD4KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoIF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTkwKSApCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NsYXNzLmhwcD4KLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19IQVNfWFhYKQotCi0jICAgaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKQotCi0vLyBhZ3VydCwgMTEvc2VwLzAyOiBNU1ZDLXNwZWNpZmljIHZlcnNpb24gKDwgNy4xKSwgYmFzZWQgb24gYSBVU0VORVQgCi0vLyBuZXdzZ3JvdXAncyBwb3N0aW5nIGJ5IEpvaG4gTWFkc2VuIChjb21wLmxhbmcuYysrLm1vZGVyYXRlZCwgCi0vLyAxOTk5LTExLTEyIDE5OjE3OjA2IEdNVCk7IHRoZSBjb2RlIGlzIF9ub3RfIHN0YW5kYXJkLWNvbmZvcm1pbmcsIGJ1dCAKLS8vIGl0IHdvcmtzIHdheSBtb3JlIHJlbGlhYmx5IHRoYW4gdGhlIFNGSU5BRS1iYXNlZCBpbXBsZW1lbnRhdGlvbgotCi0vLyBNb2RpZmllZCBkd2EgOC9PY3QvMDIgdG8gaGFuZGxlIHJlZmVyZW5jZSB0eXBlcy4KLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXN0cnVjdCBoYXNfeHh4X3RhZzsKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPT0gMTMwMCkKLXRlbXBsYXRlPCB0eXBlbmFtZSBVID4gc3RydWN0IG1zdmNfaW5jb21wbGV0ZV9hcnJheQotewotICAgIHR5cGVkZWYgY2hhciAoJnR5cGUpW3NpemVvZihVKSArIDFdOwotfTsKLSNlbmRpZgotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgbXN2Y19pc19pbmNvbXBsZXRlCi17Ci0gICAgLy8gTVNWQyBpcyBjYXBhYmxlIG9mIHNvbWUga2luZHMgb2YgU0ZJTkFFLiAgSWYgVSBpcyBhbiBpbmNvbXBsZXRlCi0gICAgLy8gdHlwZSwgaXQgd29uJ3QgcGljayB0aGUgc2Vjb25kIG92ZXJsb2FkCi0gICAgc3RhdGljIGNoYXIgdGVzdGVyKC4uLik7Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID09IDEzMDApCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUgPgotICAgIHN0YXRpYyB0eXBlbmFtZSBtc3ZjX2luY29tcGxldGVfYXJyYXk8VT46OnR5cGUgdGVzdGVyKHR5cGVfd3JhcHBlcjxVPik7Ci0jZWxzZQotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVID4KLSAgICBzdGF0aWMgY2hhciAoJiB0ZXN0ZXIodHlwZV93cmFwcGVyPFU+KSApW3NpemVvZihVKSsxXTsKLSNlbmRpZiAKLSAgICAKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAKLSAgICAgICAgICBzaXplb2YodGVzdGVyKHR5cGVfd3JhcHBlcjxUPigpKSkgPT0gMQotICAgICAgICApOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1zdmNfaXNfaW5jb21wbGV0ZTxpbnQ+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotfTsKLQotfX19Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19YWFhfVFJBSVRfTkFNRURfREVGXyh0cmFpdCwgbmFtZSwgZGVmYXVsdF8pIFwKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBuYW1lID0gOjpuZG5ib29zdDo6bXBsOjphdXg6Omhhc194eHhfdGFnID4gXAotc3RydWN0IE5ETkJPT1NUX1BQX0NBVCh0cmFpdCxfaW1wbCkgOiBUIFwKLXsgXAotICAgIHN0YXRpYyBuZG5ib29zdDo6bXBsOjphdXg6Om5vX3RhZyBcCi0gICAgdGVzdCh2b2lkKCopKDo6bmRuYm9vc3Q6Om1wbDo6YXV4OjpoYXNfeHh4X3RhZykpOyBcCi0gICAgXAotICAgIHN0YXRpYyBuZG5ib29zdDo6bXBsOjphdXg6Onllc190YWcgdGVzdCguLi4pOyBcCi0gICAgXAotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IFwKLSAgICAgICAgICBzaXplb2YodGVzdChzdGF0aWNfY2FzdDx2b2lkKCopKG5hbWUpPigwKSkpIFwKLSAgICAgICAgICAgICE9IHNpemVvZihuZG5ib29zdDo6bXBsOjphdXg6Om5vX3RhZykgXAotICAgICAgICApOyBcCi0gICAgdHlwZWRlZiBuZG5ib29zdDo6bXBsOjpib29sXzx2YWx1ZT4gdHlwZTsgXAotfTsgXAotXAotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIGZhbGxiYWNrXyA9IG5kbmJvb3N0OjptcGw6OmJvb2xfPGRlZmF1bHRfPiA+IFwKLXN0cnVjdCB0cmFpdCBcCi0gICAgOiBuZG5ib29zdDo6bXBsOjppZl9jPCBcCi0gICAgICAgICAgbmRuYm9vc3Q6Om1wbDo6YXV4Ojptc3ZjX2lzX2luY29tcGxldGU8VD46OnZhbHVlIFwKLSAgICAgICAgLCBuZG5ib29zdDo6bXBsOjpib29sXzxmYWxzZT4gXAotICAgICAgICAsIE5ETkJPT1NUX1BQX0NBVCh0cmFpdCxfaW1wbCk8VD4gXAotICAgICAgICA+Ojp0eXBlIFwKLXsgXAotfTsgXAotXAotTkROQk9PU1RfTVBMX0FVWF9IQVNfWFhYX1RSQUlUX1NQRUModHJhaXQsIHZvaWQpIFwKLU5ETkJPT1NUX01QTF9BVVhfSEFTX1hYWF9UUkFJVF9TUEVDKHRyYWl0LCBib29sKSBcCi1ORE5CT09TVF9NUExfQVVYX0hBU19YWFhfVFJBSVRfU1BFQyh0cmFpdCwgY2hhcikgXAotTkROQk9PU1RfTVBMX0FVWF9IQVNfWFhYX1RSQUlUX1NQRUModHJhaXQsIHNpZ25lZCBjaGFyKSBcCi1ORE5CT09TVF9NUExfQVVYX0hBU19YWFhfVFJBSVRfU1BFQyh0cmFpdCwgdW5zaWduZWQgY2hhcikgXAotTkROQk9PU1RfTVBMX0FVWF9IQVNfWFhYX1RSQUlUX1NQRUModHJhaXQsIHNpZ25lZCBzaG9ydCkgXAotTkROQk9PU1RfTVBMX0FVWF9IQVNfWFhYX1RSQUlUX1NQRUModHJhaXQsIHVuc2lnbmVkIHNob3J0KSBcCi1ORE5CT09TVF9NUExfQVVYX0hBU19YWFhfVFJBSVRfU1BFQyh0cmFpdCwgc2lnbmVkIGludCkgXAotTkROQk9PU1RfTVBMX0FVWF9IQVNfWFhYX1RSQUlUX1NQRUModHJhaXQsIHVuc2lnbmVkIGludCkgXAotTkROQk9PU1RfTVBMX0FVWF9IQVNfWFhYX1RSQUlUX1NQRUModHJhaXQsIHNpZ25lZCBsb25nKSBcCi1ORE5CT09TVF9NUExfQVVYX0hBU19YWFhfVFJBSVRfU1BFQyh0cmFpdCwgdW5zaWduZWQgbG9uZykgXAotTkROQk9PU1RfTVBMX0FVWF9IQVNfWFhYX1RSQUlUX1NQRUModHJhaXQsIGZsb2F0KSBcCi1ORE5CT09TVF9NUExfQVVYX0hBU19YWFhfVFJBSVRfU1BFQyh0cmFpdCwgZG91YmxlKSBcCi1ORE5CT09TVF9NUExfQVVYX0hBU19YWFhfVFJBSVRfU1BFQyh0cmFpdCwgbG9uZyBkb3VibGUpIFwKLS8qKi8KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX0hBU19YWFhfVFJBSVRfU1BFQyh0cmFpdCwgVCkgXAotdGVtcGxhdGU8PiBzdHJ1Y3QgdHJhaXQ8VD4gXAoteyBcCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOyBcCi0gICAgdHlwZWRlZiBuZG5ib29zdDo6bXBsOjpib29sXzxmYWxzZT4gdHlwZTsgXAotfTsgXAotLyoqLwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfWFhYX1RSQUlUX05BTUVEX0RFRih0cmFpdCwgbmFtZSwgdW51c2VkKSBcCi0gICAgTkROQk9PU1RfTVBMX0hBU19YWFhfVFJBSVRfTkFNRURfREVGXyh0cmFpdCwgbmFtZSwgdW51c2VkKSBcCi0gICAgTkROQk9PU1RfTVBMX0FVWF9IQVNfWFhYX1RSQUlUX1NQRUModHJhaXQsIHdjaGFyX3QpIFwKLS8qKi8KLSNlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfWFhYX1RSQUlUX05BTUVEX0RFRih0cmFpdCwgbmFtZSwgdW51c2VkKSBcCi0gICAgTkROQk9PU1RfTVBMX0hBU19YWFhfVFJBSVRfTkFNRURfREVGXyh0cmFpdCwgbmFtZSwgdW51c2VkKSBcCi0vKiovCi0jZW5kaWYKLQotCi0vLyBTRklOQUUtYmFzZWQgaW1wbGVtZW50YXRpb25zIGJlbG93IGFyZSBkZXJpdmVkIGZyb20gYSBVU0VORVQgbmV3c2dyb3VwJ3MgCi0vLyBwb3N0aW5nIGJ5IFJhbmkgU2hhcm9uaSAoY29tcC5sYW5nLmMrKy5tb2RlcmF0ZWQsIDIwMDItMDMtMTcgMDc6NDU6MDkgUFNUKQotCi0jICAgZWxpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIE5ETkJPT1NUX1RFU1RFRF9BVCgxNDAwKSkgXAotICAgICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0lCTUNQUF9fLCA8PSA3MDApCi0KLS8vIE1TVkMgNy4xKyAmIFZBQ1BQCi0KLS8vIGFndXJ0LCAxNS9qdW4vMDU6IHJlcGxhY2Ugb3ZlcmxvYWQtYmFzZWQgU0ZJTkFFIGltcGxlbWVudGF0aW9uIHdpdGggU0ZJTkFFCi0vLyBhcHBsaWVkIHRvIHBhcnRpYWwgc3BlY2lhbGl6YXRpb24gdG8gZml4IHNvbWUgYXBwYXJlbnRseSByYW5kb20gZmFpbHVyZXMgCi0vLyAodGhhbmtzIHRvIERhbmllbCBXYWxsaW4gZm9yIHJlc2VhcmNoaW5nIHRoaXMhKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfWFhYX1RSQUlUX05BTUVEX0RFRih0cmFpdCwgbmFtZSwgZGVmYXVsdF8pIFwKLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gXAotc3RydWN0IE5ETkJPT1NUX1BQX0NBVCh0cmFpdCwgX21zdmNfc2ZpbmFlX2hlbHBlcikgXAoteyBcCi0gICAgdHlwZWRlZiB2b2lkIHR5cGU7IFwKLX07XAotXAotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUgPSB2b2lkID4gXAotc3RydWN0IE5ETkJPT1NUX1BQX0NBVCh0cmFpdCxfaW1wbF8pIFwKLXsgXAotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsgXAotICAgIHR5cGVkZWYgbmRuYm9vc3Q6Om1wbDo6Ym9vbF88dmFsdWU+IHR5cGU7IFwKLX07IFwKLVwKLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gXAotc3RydWN0IE5ETkJPT1NUX1BQX0NBVCh0cmFpdCxfaW1wbF8pPCBcCi0gICAgICBUIFwKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX1BQX0NBVCh0cmFpdCwgX21zdmNfc2ZpbmFlX2hlbHBlcik8IHR5cGVuYW1lIFQ6Om5hbWUgPjo6dHlwZSBcCi0gICAgPiBcCi17IFwKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgXAotICAgIHR5cGVkZWYgbmRuYm9vc3Q6Om1wbDo6Ym9vbF88dmFsdWU+IHR5cGU7IFwKLX07IFwKLVwKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBmYWxsYmFja18gPSBuZG5ib29zdDo6bXBsOjpib29sXzxkZWZhdWx0Xz4gPiBcCi1zdHJ1Y3QgdHJhaXQgXAotICAgIDogTkROQk9PU1RfUFBfQ0FUKHRyYWl0LF9pbXBsXyk8VD4gXAoteyBcCi19OyBcCi0vKiovCi0KLSMgICBlbGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoIF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTkwKSApCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19YWFhfVFJBSVRfTkFNRURfQkNCX0RFRih0cmFpdCwgdHJhaXRfdGVzdGVyLCBuYW1lLCBkZWZhdWx0XykgXAotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIGJvb2wgSVNfQ0xBU1MgPiBcCi1zdHJ1Y3QgdHJhaXRfdGVzdGVyIFwKLXsgXAotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCggYm9vbCwgIHZhbHVlID0gZmFsc2UgKTsgXAotfTsgXAotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBcCi1zdHJ1Y3QgdHJhaXRfdGVzdGVyPCBULCB0cnVlID4gXAoteyBcCi0gICAgc3RydWN0IHRyYWl0X3Rlc3Rlcl9pbXBsIFwKLSAgICB7IFwKLSAgICAgICAgdGVtcGxhdGUgPCBjbGFzcyBVID4gXAotICAgICAgICBzdGF0aWMgaW50ICByZXNvbHZlKCBuZG5ib29zdDo6bXBsOjphdXg6OnR5cGVfd3JhcHBlcjxVPiBjb25zdCB2b2xhdGlsZSAqIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICwgbmRuYm9vc3Q6Om1wbDo6YXV4Ojp0eXBlX3dyYXBwZXI8dHlwZW5hbWUgVTo6bmFtZSA+KiA9IDAgKTsgXAotICAgICAgICBzdGF0aWMgY2hhciByZXNvbHZlKCAuLi4gKTsgXAotICAgIH07IFwKLSAgICB0eXBlZGVmIG5kbmJvb3N0OjptcGw6OmF1eDo6dHlwZV93cmFwcGVyPFQ+IHRfOyBcCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKCBib29sLCB2YWx1ZSA9ICggc2l6ZW9mKCB0cmFpdF90ZXN0ZXJfaW1wbDo6cmVzb2x2ZSggc3RhdGljX2Nhc3Q8IHRfICogPigwKSApICkgPT0gc2l6ZW9mKGludCkgKSApOyBcCi19OyBcCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgZmFsbGJhY2tfID0gbmRuYm9vc3Q6Om1wbDo6Ym9vbF88ZGVmYXVsdF8+ID4gXAotc3RydWN0IHRyYWl0ICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoIGJvb2wsIHZhbHVlID0gKHRyYWl0X3Rlc3RlcjwgVCwgbmRuYm9vc3Q6OmlzX2NsYXNzPCBUID46OnZhbHVlID46OnZhbHVlKSApOyAgICAgXAotICAgIHR5cGVkZWYgbmRuYm9vc3Q6Om1wbDo6Ym9vbF88IHRyYWl0PCBULCBmYWxsYmFja18gPjo6dmFsdWUgPiB0eXBlOyBcCi19OwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfWFhYX1RSQUlUX05BTUVEX0RFRih0cmFpdCwgbmFtZSwgZGVmYXVsdF8pIFwKLSAgICBORE5CT09TVF9NUExfSEFTX1hYWF9UUkFJVF9OQU1FRF9CQ0JfREVGKCB0cmFpdCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgTkROQk9PU1RfUFBfQ0FUKHRyYWl0LF90ZXN0ZXIpICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIG5hbWUgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIGRlZmF1bHRfICkgXAotLyoqLwotCi0jICAgZWxzZSAvLyBvdGhlciBTRklOQUUtY2FwYWJsZSBjb21waWxlcnMKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX1hYWF9UUkFJVF9OQU1FRF9ERUYodHJhaXQsIG5hbWUsIGRlZmF1bHRfKSBcCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgZmFsbGJhY2tfID0gbmRuYm9vc3Q6Om1wbDo6Ym9vbF88ZGVmYXVsdF8+ID4gXAotc3RydWN0IHRyYWl0IFwKLXsgXAotICAgIHN0cnVjdCBnY2NfM18yX3drbmQgXAotICAgIHsgXAotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVSA+IFwKLSAgICAgICAgc3RhdGljIG5kbmJvb3N0OjptcGw6OmF1eDo6eWVzX3RhZyB0ZXN0KCBcCi0gICAgICAgICAgICAgIG5kbmJvb3N0OjptcGw6OmF1eDo6dHlwZV93cmFwcGVyPFU+IGNvbnN0IHZvbGF0aWxlKiBcCi0gICAgICAgICAgICAsIG5kbmJvb3N0OjptcGw6OmF1eDo6dHlwZV93cmFwcGVyPE5ETkJPT1NUX01TVkNfVFlQRU5BTUUgVTo6bmFtZT4qID0gMCBcCi0gICAgICAgICAgICApOyBcCi0gICAgXAotICAgICAgICBzdGF0aWMgbmRuYm9vc3Q6Om1wbDo6YXV4Ojpub190YWcgdGVzdCguLi4pOyBcCi0gICAgfTsgXAotICAgIFwKLSAgICB0eXBlZGVmIG5kbmJvb3N0OjptcGw6OmF1eDo6dHlwZV93cmFwcGVyPFQ+IHRfOyBcCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gXAotICAgICAgICAgIHNpemVvZihnY2NfM18yX3drbmQ6OnRlc3Qoc3RhdGljX2Nhc3Q8dF8qPigwKSkpIFwKLSAgICAgICAgICAgID09IHNpemVvZihuZG5ib29zdDo6bXBsOjphdXg6Onllc190YWcpIFwKLSAgICAgICAgKTsgXAotICAgIHR5cGVkZWYgbmRuYm9vc3Q6Om1wbDo6Ym9vbF88dmFsdWU+IHR5cGU7IFwKLX07IFwKLS8qKi8KLQotIyAgIGVuZGlmIC8vIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkKLQotCi0jZWxzZSAvLyBORE5CT09TVF9NUExfQ0ZHX05PX0hBU19YWFgKLQotLy8gcGxhY2Vob2xkZXIgaW1wbGVtZW50YXRpb24KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX1hYWF9UUkFJVF9OQU1FRF9ERUYodHJhaXQsIG5hbWUsIGRlZmF1bHRfKSBcCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgZmFsbGJhY2tfID0gbmRuYm9vc3Q6Om1wbDo6Ym9vbF88ZGVmYXVsdF8+ID4gXAotc3RydWN0IHRyYWl0IFwKLXsgXAotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbGxiYWNrXzo6dmFsdWUpOyBcCi0gICAgdHlwZWRlZiBmYWxsYmFja18gdHlwZTsgXAotfTsgXAotLyoqLwotCi0jZW5kaWYKLQotI2RlZmluZSBORE5CT09TVF9NUExfSEFTX1hYWF9UUkFJVF9ERUYobmFtZSkgXAotICAgIE5ETkJPT1NUX01QTF9IQVNfWFhYX1RSQUlUX05BTUVEX0RFRihORE5CT09TVF9QUF9DQVQoaGFzXyxuYW1lKSwgbmFtZSwgZmFsc2UpIFwKLS8qKi8KLQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19IQVNfWFhYX1RFTVBMQVRFKQotCi0vLyBDcmVhdGUgYSBib29sZWFuIE1ldGFmdW5jdGlvbiB0byBkZXRlY3QgYSBuZXN0ZWQgdGVtcGxhdGUKLS8vIG1lbWJlci4gVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBiYXNlZCBvbiBhIFVTRU5FVCBuZXdzZ3JvdXAncwotLy8gcG9zdGluZyBieSBBbGVrc2V5IEd1cnRvdm95IChjb21wLmxhbmcuYysrLm1vZGVyYXRlZCwgMjAwMi0wMy0xOSksCi0vLyBSYW5pIFNoYXJvbmkncyBVU0VORVQgcG9zdGluZyBjaXRlZCBhYm92ZSwgdGhlIG5vbi10ZW1wbGF0ZSBoYXNfeHh4Ci0vLyBpbXBsZW1lbnRhdGlvbnMgYWJvdmUsIGFuZCBkaXNjdXNzaW9uIG9uIHRoZSBCb29zdCBtYWlsaW5nIGxpc3QuCi0KLSMgICBpZiAhZGVmaW5lZChORE5CT09TVF9NUExfSEFTX1hYWF9OT19XUkFQUEVEX1RZUEVTKQotIyAgICAgaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxNDAwKQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19YWFhfTk9fV1JBUFBFRF9UWVBFUyAxCi0jICAgICBlbmRpZgotIyAgIGVuZGlmCi0KLSMgICBpZiAhZGVmaW5lZChORE5CT09TVF9NUExfSEFTX1hYWF9OT19FWFBMSUNJVF9URVNUX0ZVTkNUSU9OKQotIyAgICAgaWYgKGRlZmluZWQoTkROQk9PU1RfTk9fRVhQTElDSVRfRlVOQ1RJT05fVEVNUExBVEVfQVJHVU1FTlRTKSkKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfWFhYX05PX0VYUExJQ0lUX1RFU1RfRlVOQ1RJT04gMQotIyAgICAgZW5kaWYKLSMgICBlbmRpZgotCi0jICAgaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0hBU19YWFhfTkVFRFNfVEVNUExBVEVfU0ZJTkFFKQotIyAgICAgaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxNDAwKQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19YWFhfTkVFRFNfVEVNUExBVEVfU0ZJTkFFIDEKLSMgICAgIGVuZGlmCi0jICAgZW5kaWYKLQotLy8gTk9URTogTWFueSBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBtYWNyb3MgdGFrZSBhIEJvb3N0LlByZXByb2Nlc3NvcgotLy8gYXJyYXkgYXJndW1lbnQgY2FsbGVkIGFyZ3Mgd2hpY2ggaXMgb2YgdGhlIGZvbGxvd2luZyBmb3JtLgotLy8gICAgICAgICAgICggNCwgKCB0cmFpdCwgbmFtZSwgbWF4X2FyaXR5LCBkZWZhdWx0XyApICkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUSU9OX05BTUUoYXJncykgXAotICAgICAgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMCwgYXJncykgLCBfaW50cm9zcGVjdCkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUSU9OX1NVQlNUSVRVVEVfTkFNRShhcmdzLCBuKSBcCi0gICAgICBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMCwgYXJncykgLCBfc3Vic3RpdHV0ZSksIG4pIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVElPTl9URVNUX05BTUUoYXJncykgXAotICAgICAgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMCwgYXJncykgLCBfdGVzdCkgXAotICAgIC8qKi8KLQotLy8gVGhhbmtzIHRvIEd1aWxsYXVtZSBNZWxxdWlvbmQgZm9yIHBvaW50aW5nIG91dCB0aGUgbmVlZCBmb3IgdGhlCi0vLyAic3Vic3RpdHV0ZSIgdGVtcGxhdGUgYXMgYW4gYXJndW1lbnQgdG8gdGhlIG92ZXJsb2FkZWQgdGVzdAotLy8gZnVuY3Rpb25zIHRvIGdldCBTRklOQUUgdG8gd29yayBmb3IgbWVtYmVyIHRlbXBsYXRlcyB3aXRoIHRoZQotLy8gY29ycmVjdCBuYW1lIGJ1dCBkaWZmZXJlbnQgbnVtYmVyIG9mIGFyZ3VtZW50cy4KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfTVVMVElfU1VCU1RJVFVURSh6LCBuLCBhcmdzKSBcCi0gICAgICB0ZW1wbGF0ZTwgXAotICAgICAgICAgIHRlbXBsYXRlPCBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9JTkMobiksIHR5cGVuYW1lIFYpID4gY2xhc3MgViBcCi0gICAgICAgPiBcCi0gICAgICBzdHJ1Y3QgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVElPTl9TVUJTVElUVVRFX05BTUUoYXJncywgbikgeyBcCi0gICAgICB9OyBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX1NVQlNUSVRVVEUoYXJncywgc3Vic3RpdHV0ZV9tYWNybykgXAotICAgICAgTkROQk9PU1RfUFBfUkVQRUFUKCBcCi0gICAgICAgICAgTkROQk9PU1RfUFBfQVJSQVlfRUxFTSgyLCBhcmdzKSBcCi0gICAgICAgICwgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfTVVMVElfU1VCU1RJVFVURSBcCi0gICAgICAgICwgYXJncyBcCi0gICAgICApIFwKLSAgICAvKiovCi0KLSMgICBpZiAhTkROQk9PU1RfTVBMX0hBU19YWFhfTk9fRVhQTElDSVRfVEVTVF9GVU5DVElPTgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX1JFSkVDVChhcmdzLCBtZW1iZXJfbWFjcm8pIFwKLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFYgPiBcCi0gICAgICAgIHN0YXRpYyBuZG5ib29zdDo6bXBsOjphdXg6Om5vX3RhZyBcCi0gICAgICAgIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RJT05fVEVTVF9OQU1FKGFyZ3MpKC4uLik7IFwKLSAgICAgIC8qKi8KLSMgICBlbHNlCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfUkVKRUNUKGFyZ3MsIG1lbWJlcl9tYWNybykgXAotICAgICAgICBzdGF0aWMgbmRuYm9vc3Q6Om1wbDo6YXV4Ojpub190YWcgXAotICAgICAgICBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUSU9OX1RFU1RfTkFNRShhcmdzKSguLi4pOyBcCi0gICAgICAvKiovCi0jICAgZW5kaWYKLQotIyAgIGlmICFORE5CT09TVF9NUExfSEFTX1hYWF9OT19XUkFQUEVEX1RZUEVTCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfTVVMVElfQUNDRVBUKHosIG4sIGFyZ3MpIFwKLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFYgPiBcCi0gICAgICAgIHN0YXRpYyBuZG5ib29zdDo6bXBsOjphdXg6Onllc190YWcgXAotICAgICAgICBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUSU9OX1RFU1RfTkFNRShhcmdzKSggXAotICAgICAgICAgICAgbmRuYm9vc3Q6Om1wbDo6YXV4Ojp0eXBlX3dyYXBwZXI8IFYgPiBjb25zdCB2b2xhdGlsZSogXAotICAgICAgICAgICwgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVElPTl9TVUJTVElUVVRFX05BTUUoYXJncywgbikgPCBcCi0gICAgICAgICAgICAgICAgVjo6dGVtcGxhdGUgTkROQk9PU1RfUFBfQVJSQVlfRUxFTSgxLCBhcmdzKSBcCi0gICAgICAgICAgICA+KiA9IDAgXAotICAgICAgICApOyBcCi0gICAgICAvKiovCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfQUNDRVBUKGFyZ3MsIG1lbWJlcl9tYWNybykgXAotICAgICAgICBORE5CT09TVF9QUF9SRVBFQVQoIFwKLSAgICAgICAgICAgIE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMiwgYXJncykgXAotICAgICAgICAgICwgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfTVVMVElfQUNDRVBUIFwKLSAgICAgICAgICAsIGFyZ3MgXAotICAgICAgICApIFwKLSAgICAgIC8qKi8KLSMgICBlbHNlCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfQUNDRVBUKGFyZ3MsIG1lbWJlcl9tYWNybykgXAotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgViA+IFwKLSAgICAgICAgc3RhdGljIG5kbmJvb3N0OjptcGw6OmF1eDo6eWVzX3RhZyBcCi0gICAgICAgIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RJT05fVEVTVF9OQU1FKGFyZ3MpKCBcCi0gICAgICAgICAgICBWIGNvbnN0IHZvbGF0aWxlKiBcCi0gICAgICAgICAgLCBtZW1iZXJfbWFjcm8oYXJncywgViwgVCkqID0gMCBcCi0gICAgICAgICk7IFwKLSAgICAgIC8qKi8KLSMgICBlbmRpZgotCi0jICAgaWYgIU5ETkJPT1NUX01QTF9IQVNfWFhYX05PX0VYUExJQ0lUX1RFU1RfRlVOQ1RJT04KLSMgICAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX01FTUJFUl9URVNUKGFyZ3MpIFwKLSAgICAgICAgICBzaXplb2YoTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVElPTl9URVNUX05BTUUoYXJncyk8IFUgPigwKSkgXAotICAgICAgICAgICAgICA9PSBzaXplb2YobmRuYm9vc3Q6Om1wbDo6YXV4Ojp5ZXNfdGFnKSBcCi0gICAgICAvKiovCi0jICAgZWxzZQotIyAgICAgaWYgIU5ETkJPT1NUX01QTF9IQVNfWFhYX05PX1dSQVBQRURfVFlQRVMKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX1RFU1QoYXJncykgXAotICAgICAgICAgIHNpemVvZiggXAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUSU9OX1RFU1RfTkFNRShhcmdzKSggXAotICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8IG5kbmJvb3N0OjptcGw6OmF1eDo6dHlwZV93cmFwcGVyPCBVID4qID4oMCkgXAotICAgICAgICAgICAgICApIFwKLSAgICAgICAgICApID09IHNpemVvZihuZG5ib29zdDo6bXBsOjphdXg6Onllc190YWcpIFwKLSAgICAgICAgLyoqLwotIyAgICAgZWxzZQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfVEVTVChhcmdzKSBcCi0gICAgICAgICAgc2l6ZW9mKCBcCi0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RJT05fVEVTVF9OQU1FKGFyZ3MpKCBcCi0gICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDwgVSogPigwKSBcCi0gICAgICAgICAgICAgICkgXAotICAgICAgICAgICkgPT0gc2l6ZW9mKG5kbmJvb3N0OjptcGw6OmF1eDo6eWVzX3RhZykgXAotICAgICAgICAvKiovCi0jICAgICBlbmRpZgotIyAgIGVuZGlmCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVCggXAotICAgICAgICAgICAgICAgYXJncywgc3Vic3RpdHV0ZV9tYWNybywgbWVtYmVyX21hY3JvIFwKLSAgICAgICAgICAgKSBcCi0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVSA+IFwKLSAgICAgIHN0cnVjdCBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUSU9OX05BTUUoYXJncykgeyBcCi0gICAgICAgICAgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfU1VCU1RJVFVURShhcmdzLCBzdWJzdGl0dXRlX21hY3JvKSBcCi0gICAgICAgICAgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfUkVKRUNUKGFyZ3MsIG1lbWJlcl9tYWNybykgXAotICAgICAgICAgIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0FDQ0VQVChhcmdzLCBtZW1iZXJfbWFjcm8pIFwKLSAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoIFwKLSAgICAgICAgICAgICAgYm9vbCwgdmFsdWUgPSBORE5CT09TVF9NUExfSEFTX01FTUJFUl9URVNUKGFyZ3MpIFwKLSAgICAgICAgICApOyBcCi0gICAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6bXBsOjpib29sXzwgdmFsdWUgPiB0eXBlOyBcCi0gICAgICB9OyBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lNUExFTUVOVEFUSU9OKCBcCi0gICAgICAgICAgICAgICBhcmdzLCBpbnRyb3NwZWN0X21hY3JvLCBzdWJzdGl0dXRlX21hY3JvLCBtZW1iZXJfbWFjcm8gXAotICAgICAgICAgICApIFwKLSAgICAgIHRlbXBsYXRlPCBcCi0gICAgICAgICAgdHlwZW5hbWUgVCBcCi0gICAgICAgICwgdHlwZW5hbWUgZmFsbGJhY2tfIFwKLSAgICAgICAgICAgICAgPSBuZG5ib29zdDo6bXBsOjpib29sXzwgTkROQk9PU1RfUFBfQVJSQVlfRUxFTSgzLCBhcmdzKSA+IFwKLSAgICAgID4gXAotICAgICAgY2xhc3MgTkROQk9PU1RfUFBfQVJSQVlfRUxFTSgwLCBhcmdzKSB7IFwKLSAgICAgICAgICBpbnRyb3NwZWN0X21hY3JvKGFyZ3MsIHN1YnN0aXR1dGVfbWFjcm8sIG1lbWJlcl9tYWNybykgXAotICAgICAgcHVibGljOiBcCi0gICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgXAotICAgICAgICAgICAgICA9IE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RJT05fTkFNRShhcmdzKTwgVCA+Ojp2YWx1ZTsgXAotICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVElPTl9OQU1FKGFyZ3MpPCBcCi0gICAgICAgICAgICAgIFQgXAotICAgICAgICAgID46OnR5cGUgdHlwZTsgXAotICAgICAgfTsgXAotICAgIC8qKi8KLQotLy8gTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfV0lUSF9GVU5DVElPTl9TRklOQUUgZXhwYW5kcyB0byB0aGUgZnVsbAotLy8gaW1wbGVtZW50YXRpb24gb2YgdGhlIGZ1bmN0aW9uLWJhc2VkIG1ldGFmdW5jdGlvbi4gQ29tcGlsZSB3aXRoIC1FCi0vLyB0byBzZWUgdGhlIHByZXByb2Nlc3NvciBvdXRwdXQgZm9yIHRoaXMgbWFjcm8uCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX1dJVEhfRlVOQ1RJT05fU0ZJTkFFKCBcCi0gICAgICAgICAgICAgICBhcmdzLCBzdWJzdGl0dXRlX21hY3JvLCBtZW1iZXJfbWFjcm8gXAotICAgICAgICAgICApIFwKLSAgICAgIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lNUExFTUVOVEFUSU9OKCBcCi0gICAgICAgICAgYXJncyBcCi0gICAgICAgICwgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVCBcCi0gICAgICAgICwgc3Vic3RpdHV0ZV9tYWNybyBcCi0gICAgICAgICwgbWVtYmVyX21hY3JvIFwKLSAgICAgICkgXAotICAgIC8qKi8KLQotIyAgIGlmIE5ETkJPT1NUX01QTF9IQVNfWFhYX05FRURTX1RFTVBMQVRFX1NGSU5BRQotCi0jICAgICBpZiAhZGVmaW5lZChORE5CT09TVF9NUExfSEFTX1hYWF9ORUVEU19OQU1FU1BBQ0VfTEVWRUxfU1VCU1RJVFVURSkKLSMgICAgICAgaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxNDAwKQotIyAgICAgICAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX1hYWF9ORUVEU19OQU1FU1BBQ0VfTEVWRUxfU1VCU1RJVFVURSAxCi0jICAgICAgIGVuZGlmCi0jICAgICBlbmRpZgotCi0jICAgICBpZiAhTkROQk9PU1RfTVBMX0hBU19YWFhfTkVFRFNfTkFNRVNQQUNFX0xFVkVMX1NVQlNUSVRVVEUKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RJT05fU1VCU1RJVFVURV9OQU1FX1dJVEhfVEVNUExBVEVfU0ZJTkFFKCBcCi0gICAgICAgICAgICAgICAgICAgYXJncywgbiBcCi0gICAgICAgICAgICAgICApIFwKLSAgICAgICAgICBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUSU9OX1NVQlNUSVRVVEVfTkFNRShhcmdzLCBuKSBcCi0gICAgICAgIC8qKi8KLSMgICAgIGVsc2UKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RJT05fU1VCU1RJVFVURV9OQU1FX1dJVEhfVEVNUExBVEVfU0ZJTkFFKCBcCi0gICAgICAgICAgICAgICAgICAgYXJncywgbiBcCi0gICAgICAgICAgICAgICApIFwKLSAgICAgICAgICBORE5CT09TVF9QUF9DQVQoIFwKLSAgICAgICAgICAgICAgYm9vc3RfbXBsX2hhc194eHhfIFwKLSAgICAgICAgICAgICwgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVElPTl9TVUJTVElUVVRFX05BTUUoYXJncywgbikgXAotICAgICAgICAgICkgXAotICAgICAgICAvKiovCi0jICAgICBlbmRpZgotCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVElPTl9TVUJTVElUVVRFX1RBR19OQU1FKCBcCi0gICAgICAgICAgICAgICAgIGFyZ3MgXAotICAgICAgICAgICAgICkgXAotICAgICAgICBORE5CT09TVF9QUF9DQVQoIFwKLSAgICAgICAgICAgIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RJT05fU1VCU1RJVFVURV9OQU1FX1dJVEhfVEVNUExBVEVfU0ZJTkFFKCBcCi0gICAgICAgICAgICAgICAgYXJncywgMCBcCi0gICAgICAgICAgICApIFwKLSAgICAgICAgICAsIF90YWcgXAotICAgICAgICApIFwKLSAgICAgIC8qKi8KLQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX01VTFRJX1NVQlNUSVRVVEVfV0lUSF9URU1QTEFURV9TRklOQUUoIFwKLSAgICAgICAgICAgICAgICAgeiwgbiwgYXJncyBcCi0gICAgICAgICAgICAgKSBcCi0gICAgICAgIHRlbXBsYXRlPCBcCi0gICAgICAgICAgICAgdGVtcGxhdGU8IE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0lOQyhuKSwgdHlwZW5hbWUgVSkgPiBjbGFzcyBVIFwKLSAgICAgICAgPiBcCi0gICAgICAgIHN0cnVjdCBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUSU9OX1NVQlNUSVRVVEVfTkFNRV9XSVRIX1RFTVBMQVRFX1NGSU5BRSggXAotICAgICAgICAgICAgICAgIGFyZ3MsIG4gXAotICAgICAgICAgICAgICAgKSB7IFwKLSAgICAgICAgICAgIHR5cGVkZWYgXAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RJT05fU1VCU1RJVFVURV9UQUdfTkFNRShhcmdzKSBcCi0gICAgICAgICAgICAgICAgdHlwZTsgXAotICAgICAgICB9OyBcCi0gICAgICAvKiovCi0KLSMgICAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX01FTUJFUl9TVUJTVElUVVRFX1dJVEhfVEVNUExBVEVfU0ZJTkFFKCBcCi0gICAgICAgICAgICAgICAgIGFyZ3MsIHN1YnN0aXR1dGVfbWFjcm8gXAotICAgICAgICAgICAgICkgXAotICAgICAgICB0eXBlZGVmIHZvaWQgXAotICAgICAgICAgICAgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVElPTl9TVUJTVElUVVRFX1RBR19OQU1FKGFyZ3MpOyBcCi0gICAgICAgIE5ETkJPT1NUX1BQX1JFUEVBVCggXAotICAgICAgICAgICAgTkROQk9PU1RfUFBfQVJSQVlfRUxFTSgyLCBhcmdzKSBcCi0gICAgICAgICAgLCBORE5CT09TVF9NUExfSEFTX01FTUJFUl9NVUxUSV9TVUJTVElUVVRFX1dJVEhfVEVNUExBVEVfU0ZJTkFFIFwKLSAgICAgICAgICAsIGFyZ3MgXAotICAgICAgICApIFwKLSAgICAgIC8qKi8KLQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX1JFSkVDVF9XSVRIX1RFTVBMQVRFX1NGSU5BRSggXAotICAgICAgICAgICAgICAgICBhcmdzLCBtZW1iZXJfbWFjcm8gXAotICAgICAgICAgICAgICkgXAotICAgICAgICB0ZW1wbGF0ZTwgXAotICAgICAgICAgICAgdHlwZW5hbWUgVSBcCi0gICAgICAgICAgLCB0eXBlbmFtZSBWIFwKLSAgICAgICAgICAgICAgICA9IE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RJT05fU1VCU1RJVFVURV9UQUdfTkFNRShhcmdzKSBcCi0gICAgICAgID4gXAotICAgICAgICBzdHJ1Y3QgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVElPTl9URVNUX05BTUUoYXJncykgeyBcCi0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7IFwKLSAgICAgICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6Om1wbDo6Ym9vbF88IHZhbHVlID4gdHlwZTsgXAotICAgICAgICB9OyBcCi0gICAgICAvKiovCi0KLSMgICAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX01FTUJFUl9NVUxUSV9BQ0NFUFRfV0lUSF9URU1QTEFURV9TRklOQUUoIFwKLSAgICAgICAgICAgICAgICAgeiwgbiwgYXJncyBcCi0gICAgICAgICAgICAgKSBcCi0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVID4gXAotICAgICAgICBzdHJ1Y3QgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVElPTl9URVNUX05BTUUoYXJncyk8IFwKLSAgICAgICAgICAgIFUgXAotICAgICAgICAgICwgdHlwZW5hbWUgXAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RJT05fU1VCU1RJVFVURV9OQU1FX1dJVEhfVEVNUExBVEVfU0ZJTkFFKCBcCi0gICAgICAgICAgICAgICAgICAgIGFyZ3MsIG4gXAotICAgICAgICAgICAgICAgICk8IFwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfTVNWQ19UWVBFTkFNRSBVOjpORE5CT09TVF9QUF9BUlJBWV9FTEVNKDEsIGFyZ3MpPCA+IFwKLSAgICAgICAgICAgICAgICA+Ojp0eXBlIFwKLSAgICAgICAgPiB7IFwKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyBcCi0gICAgICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjptcGw6OmJvb2xfPCB2YWx1ZSA+IHR5cGU7IFwKLSAgICAgICAgfTsgXAotICAgICAgLyoqLwotCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfQUNDRVBUX1dJVEhfVEVNUExBVEVfU0ZJTkFFKCBcCi0gICAgICAgICAgICAgICAgIGFyZ3MsIG1lbWJlcl9tYWNybyBcCi0gICAgICAgICAgICAgKSBcCi0gICAgICAgIE5ETkJPT1NUX1BQX1JFUEVBVCggXAotICAgICAgICAgICAgTkROQk9PU1RfUFBfQVJSQVlfRUxFTSgyLCBhcmdzKSBcCi0gICAgICAgICAgLCBORE5CT09TVF9NUExfSEFTX01FTUJFUl9NVUxUSV9BQ0NFUFRfV0lUSF9URU1QTEFURV9TRklOQUUgXAotICAgICAgICAgICwgYXJncyBcCi0gICAgICAgICkgXAotICAgICAgLyoqLwotCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVF9XSVRIX1RFTVBMQVRFX1NGSU5BRSggXAotICAgICAgICAgICAgICAgICBhcmdzLCBzdWJzdGl0dXRlX21hY3JvLCBtZW1iZXJfbWFjcm8gXAotICAgICAgICAgICAgICkgXAotICAgICAgICBORE5CT09TVF9NUExfSEFTX01FTUJFUl9SRUpFQ1RfV0lUSF9URU1QTEFURV9TRklOQUUoYXJncywgbWVtYmVyX21hY3JvKSBcCi0gICAgICAgIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0FDQ0VQVF9XSVRIX1RFTVBMQVRFX1NGSU5BRShhcmdzLCBtZW1iZXJfbWFjcm8pIFwKLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUgPiBcCi0gICAgICAgIHN0cnVjdCBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUSU9OX05BTUUoYXJncykgXAotICAgICAgICAgICAgOiBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUSU9OX1RFU1RfTkFNRShhcmdzKTwgVSA+IHsgXAotICAgICAgICB9OyBcCi0gICAgICAvKiovCi0gCi0vLyBORE5CT09TVF9NUExfSEFTX01FTUJFUl9XSVRIX1RFTVBMQVRFX1NGSU5BRSBleHBhbmRzIHRvIHRoZSBmdWxsCi0vLyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgdGVtcGxhdGUtYmFzZWQgbWV0YWZ1bmN0aW9uLiBDb21waWxlIHdpdGggLUUKLS8vIHRvIHNlZSB0aGUgcHJlcHJvY2Vzc29yIG91dHB1dCBmb3IgdGhpcyBtYWNyby4KLS8vCi0vLyBOb3RlIHRoYXQgaWYgTkROQk9PU1RfTVBMX0hBU19YWFhfTkVFRFNfTkFNRVNQQUNFX0xFVkVMX1NVQlNUSVRVVEUgaXMKLS8vIGRlZmluZWQgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfU1VCU1RJVFVURV9XSVRIX1RFTVBMQVRFX1NGSU5BRSBuZWVkcwotLy8gdG8gYmUgZXhwYW5kZWQgYXQgbmFtZXNwYWNlIGxldmVsIGJlZm9yZQotLy8gTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfV0lUSF9URU1QTEFURV9TRklOQUUgY2FuIGJlIHVzZWQuCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfV0lUSF9URU1QTEFURV9TRklOQUUoIFwKLSAgICAgICAgICAgICAgICAgYXJncywgc3Vic3RpdHV0ZV9tYWNybywgbWVtYmVyX21hY3JvIFwKLSAgICAgICAgICAgICApIFwKLSAgICAgICAgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfU1VCU1RJVFVURV9XSVRIX1RFTVBMQVRFX1NGSU5BRSggXAotICAgICAgICAgICAgYXJncywgc3Vic3RpdHV0ZV9tYWNybyBcCi0gICAgICAgICkgXAotICAgICAgICBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTVBMRU1FTlRBVElPTiggXAotICAgICAgICAgICAgYXJncyBcCi0gICAgICAgICAgLCBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUX1dJVEhfVEVNUExBVEVfU0ZJTkFFIFwKLSAgICAgICAgICAsIHN1YnN0aXR1dGVfbWFjcm8gXAotICAgICAgICAgICwgbWVtYmVyX21hY3JvIFwKLSAgICAgICAgKSBcCi0gICAgICAvKiovCi0KLSMgICBlbmRpZiAvLyBORE5CT09TVF9NUExfSEFTX1hYWF9ORUVEU19URU1QTEFURV9TRklOQUUKLQotLy8gTm90ZTogSW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gdGhlIHBhcmFtZXRlciBhbmQgYWNjZXNzIG1hY3JvcwotLy8gYXJlIG5vIGxvbmdlciBleHBhbmRlZC4KLSMgICBpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxNDAwKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfWFhYX1RFTVBMQVRFX05BTUVEX0RFRih0cmFpdCwgbmFtZSwgZGVmYXVsdF8pIFwKLSAgICAgICAgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfV0lUSF9GVU5DVElPTl9TRklOQUUoIFwKLSAgICAgICAgICAgICggNCwgKCB0cmFpdCwgbmFtZSwgTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSwgZGVmYXVsdF8gKSApIFwKLSAgICAgICAgICAsIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX1RFTVBMQVRFX1NVQlNUSVRVVEVfUEFSQU1FVEVSIFwKLSAgICAgICAgICAsIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX1RFTVBMQVRFX0FDQ0VTUyBcCi0gICAgICAgICkgXAotICAgICAgLyoqLwotIyAgIGVsc2UKLSMgICAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX1hYWF9URU1QTEFURV9OQU1FRF9ERUYodHJhaXQsIG5hbWUsIGRlZmF1bHRfKSBcCi0gICAgICAgIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX1dJVEhfVEVNUExBVEVfU0ZJTkFFKCBcCi0gICAgICAgICAgICAoIDQsICggdHJhaXQsIG5hbWUsIE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFksIGRlZmF1bHRfICkgKSBcCi0gICAgICAgICAgLCBORE5CT09TVF9NUExfSEFTX01FTUJFUl9URU1QTEFURV9TVUJTVElUVVRFX1BBUkFNRVRFUiBcCi0gICAgICAgICAgLCBORE5CT09TVF9NUExfSEFTX01FTUJFUl9URU1QTEFURV9BQ0NFU1MgXAotICAgICAgICApIFwKLSAgICAgIC8qKi8KLSMgICBlbmRpZgotCi0jZWxzZSAvLyBORE5CT09TVF9NUExfQ0ZHX05PX0hBU19YWFhfVEVNUExBVEUKLQotLy8gcGxhY2Vob2xkZXIgaW1wbGVtZW50YXRpb24KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX1hYWF9URU1QTEFURV9OQU1FRF9ERUYodHJhaXQsIG5hbWUsIGRlZmF1bHRfKSBcCi0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCBcCi0gICAgICAgICAgICAgICwgdHlwZW5hbWUgZmFsbGJhY2tfID0gbmRuYm9vc3Q6Om1wbDo6Ym9vbF88IGRlZmF1bHRfID4gPiBcCi0gICAgICBzdHJ1Y3QgdHJhaXQgeyBcCi0gICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsbGJhY2tfOjp2YWx1ZSk7IFwKLSAgICAgICAgICB0eXBlZGVmIGZhbGxiYWNrXyB0eXBlOyBcCi0gICAgICB9OyBcCi0gICAgLyoqLwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19IQVNfWFhYX1RFTVBMQVRFCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19YWFhfVEVNUExBVEVfREVGKG5hbWUpIFwKLSAgICAgIE5ETkJPT1NUX01QTF9IQVNfWFhYX1RFTVBMQVRFX05BTUVEX0RFRiggXAotICAgICAgICAgIE5ETkJPT1NUX1BQX0NBVChoYXNfLCBuYW1lKSwgbmFtZSwgZmFsc2UgXAotICAgICAgKSBcCi0gICAgLyoqLwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0hBU19YWFhfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9pZGVudGl0eS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9pZGVudGl0eS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllOTIwN2YuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvaWRlbnRpdHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9JREVOVElUWV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0lERU5USVRZX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogaWRlbnRpdHkuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVCkKLSAgICA+Ci1zdHJ1Y3QgaWRlbnRpdHkKLXsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEsIGlkZW50aXR5LCAoVCkpCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVCkKLSAgICA+Ci1zdHJ1Y3QgbWFrZV9pZGVudGl0eQotewotICAgIHR5cGVkZWYgaWRlbnRpdHk8VD4gdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEsIG1ha2VfaWRlbnRpdHksIChUKSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19OT19FVEkoMSwgaWRlbnRpdHkpCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfTk9fRVRJKDEsIG1ha2VfaWRlbnRpdHkpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfSURFTlRJVFlfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9pZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9pZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3NGJlNWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvaWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTM1ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfSUZfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9JRl9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGlmLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdmFsdWVfd2tuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vc3RhdGljX2Nhc3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvaW50ZWdyYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLQotdGVtcGxhdGU8Ci0gICAgICBib29sIEMKLSAgICAsIHR5cGVuYW1lIFQxCi0gICAgLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBpZl9jCi17Ci0gICAgdHlwZWRlZiBUMSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMQotICAgICwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgaWZfYzxmYWxzZSxUMSxUMj4KLXsKLSAgICB0eXBlZGVmIFQyIHR5cGU7Ci19OwotCi0vLyBhZ3VydCwgMDUvc2VwLzA0OiBub25kZXNjcmlwdGl2ZSBwYXJhbWV0ZXIgbmFtZXMgZm9yIHRoZSBzYWtlIG9mIERpZ2l0YWxNYXJzCi0vLyAoYW5kIHBvc3NpYmx5IE1XQ1cgPCA4LjApOyBzZWUgaHR0cDovL2FydGljbGUuZ21hbmUub3JnL2dtYW5lLmNvbXAubGliLmJvb3N0LmRldmVsLzEwODk1OQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDMpCi0gICAgPgotc3RydWN0IGlmXwotewotIHByaXZhdGU6Ci0gICAgLy8gYWd1cnQsIDAyL2phbi8wMzogdHdvLXN0ZXAgJ3R5cGUnIGRlZmluaXRpb24gZm9yIHRoZSBzYWtlIG9mIGFDQyAKLSAgICB0eXBlZGVmIGlmX2M8Ci0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0JDQ19JTlRFR1JBTF9DT05TVEFOVFMpCi0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKFQxKTo6dmFsdWUKLSNlbHNlCi0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9TVEFUSUNfQ0FTVChib29sLCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoVDEpOjp2YWx1ZSkKLSNlbmRpZgotICAgICAgICAsIFQyCi0gICAgICAgICwgVDMKLSAgICAgICAgPiBhbG1vc3RfdHlwZV87Ci0gCi0gcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWxtb3N0X3R5cGVfOjp0eXBlIHR5cGU7Ci0gICAgCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgzLGlmXywoVDEsVDIsVDMpKQotfTsKLQotI2Vsc2UKLQotLy8gbm8gcGFydGlhbCBjbGFzcyB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbgotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGJvb2wgQyA+Ci1zdHJ1Y3QgaWZfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUMSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaWZfaW1wbDxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyID4gc3RydWN0IHJlc3VsdF8KLSAgICB7IAotICAgICAgICB0eXBlZGVmIFQyIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIGJvb2wgQ18KLSAgICAsIHR5cGVuYW1lIFQxCi0gICAgLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBpZl9jCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmlmX2ltcGw8IENfID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFQxLFQyPjo6dHlwZSB0eXBlOwotfTsKLQotLy8gKGFsbW9zdCkgY29weSAmIHBhc3RlIGluIG9yZGVyIHRvIHNhdmUgb25lIG1vcmUgCi0vLyByZWN1cnNpdmVseSBuZXN0ZWQgdGVtcGxhdGUgaW5zdGFudGlhdGlvbiB0byB1c2VyCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oQ18pCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICA+Ci1zdHJ1Y3QgaWZfCi17Ci0gICAgZW51bSB7IG1zdmNfd2tuZF8gPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChDXyk6OnZhbHVlIH07Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6aWZfaW1wbDwgTkROQk9PU1RfTVBMX0FVWF9TVEFUSUNfQ0FTVChib29sLCBtc3ZjX3drbmRfKSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxUMSxUMj46OnR5cGUgdHlwZTsKLQotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMyxpZl8sKENfLFQxLFQyKSkKLX07Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygzLCBpZl8pCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfSUZfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9pbnNlcnRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9pbnNlcnRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiY2ViYTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvaW5zZXJ0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9JTlNFUlRFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0lOU0VSVEVSX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAzLTIwMDQKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAzLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogaW5zZXJ0ZXIuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFNlcXVlbmNlCi0gICAgLCB0eXBlbmFtZSBPcGVyYXRpb24KLSAgICA+Ci1zdHJ1Y3QgaW5zZXJ0ZXIKLXsKLSAgICB0eXBlZGVmIFNlcXVlbmNlICAgIHN0YXRlOwotICAgIHR5cGVkZWYgT3BlcmF0aW9uICAgb3BlcmF0aW9uOwotfTsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9JTlNFUlRFUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2ludC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9pbnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNWY2OTk3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2ludC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0lOVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0lOVF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGludC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pbnRfZndkLmhwcD4KLQotI2RlZmluZSBBVVhfV1JBUFBFUl9WQUxVRV9UWVBFIGludAotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2ludGVncmFsX3dyYXBwZXIuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0lOVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2ludF9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvaW50X2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiMzAyNDcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvaW50X2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0lOVF9GV0RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9JTlRfRldEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogaW50X2Z3ZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2FkbF9iYXJyaWVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9udHRwX2RlY2wuaHBwPgotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi0KLXRlbXBsYXRlPCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIE4pID4gc3RydWN0IGludF87Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX0RFQ0woaW50XykKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9JTlRfRldEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvaW50ZWdyYWxfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9pbnRlZ3JhbF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWM5ZmE5MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9pbnRlZ3JhbF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfSU5URUdSQUxfQ19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0lOVEVHUkFMX0NfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBpbnRlZ3JhbF9jLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ludGVncmFsX2NfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3N0YXRpY19jb25zdGFudC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0hQX2FDQywgPD0gNTM4MDApCi0vLyB0aGUgdHlwZSBvZiBub24tdHlwZSB0ZW1wbGF0ZSBhcmd1bWVudHMgbWF5IG5vdCBkZXBlbmQgb24gdGVtcGxhdGUgYXJndW1lbnRzCi0jICAgZGVmaW5lIEFVWF9XUkFQUEVSX1BBUkFNUyhOKSB0eXBlbmFtZSBULCBsb25nIE4KLSNlbHNlCi0jICAgZGVmaW5lIEFVWF9XUkFQUEVSX1BBUkFNUyhOKSB0eXBlbmFtZSBULCBUIE4KLSNlbmRpZgotCi0jZGVmaW5lIEFVWF9XUkFQUEVSX05BTUUgaW50ZWdyYWxfYwotI2RlZmluZSBBVVhfV1JBUFBFUl9WQUxVRV9UWVBFIFQKLSNkZWZpbmUgQVVYX1dSQVBQRVJfSU5TVCh2YWx1ZSkgQVVYX1dSQVBQRVJfTkFNRTwgVCwgdmFsdWUgPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2ludGVncmFsX3dyYXBwZXIuaHBwPgotCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSBcCi0gJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8PSAweDU1MSkKLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLS8vICdib29sJyBjb25zdGFudCBkb2Vzbid0IGhhdmUgJ25leHQnLydwcmlvcicgbWVtYmVycwotdGVtcGxhdGU8IGJvb2wgQyA+Ci1zdHJ1Y3QgaW50ZWdyYWxfYzxib29sLCBDPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IEMpOwotICAgIHR5cGVkZWYgaW50ZWdyYWxfY190YWcgdGFnOwotICAgIHR5cGVkZWYgaW50ZWdyYWxfYyB0eXBlOwotICAgIHR5cGVkZWYgYm9vbCB2YWx1ZV90eXBlOwotICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiB0aGlzLT52YWx1ZTsgfQotfTsKLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9JTlRFR1JBTF9DX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvaW50ZWdyYWxfY19md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvaW50ZWdyYWxfY19md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZWFlYzY0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2ludGVncmFsX2NfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfSU5URUdSQUxfQ19GV0RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9JTlRFR1JBTF9DX0ZXRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA2Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGludGVncmFsX2NfZndkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2FkbF9iYXJyaWVyLmhwcD4KLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0hQX2FDQywgPD0gNTM4MDApCi0vLyB0aGUgdHlwZSBvZiBub24tdHlwZSB0ZW1wbGF0ZSBhcmd1bWVudHMgbWF5IG5vdCBkZXBlbmQgb24gdGVtcGxhdGUgYXJndW1lbnRzCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgbG9uZyBOID4gc3RydWN0IGludGVncmFsX2M7Ci0jZWxzZQotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIFQgTiA+IHN0cnVjdCBpbnRlZ3JhbF9jOwotI2VuZGlmCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX0RFQ0woaW50ZWdyYWxfYykKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9JTlRFR1JBTF9DX0ZXRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2ludGVncmFsX2NfdGFnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2ludGVncmFsX2NfdGFnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTVkMmFhNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9pbnRlZ3JhbF9jX3RhZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0lOVEVHUkFMX0NfVEFHX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfSU5URUdSQUxfQ19UQUdfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogaW50ZWdyYWxfY190YWcuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2FkbF9iYXJyaWVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvc3RhdGljX2NvbnN0YW50LmhwcD4KLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotc3RydWN0IGludGVncmFsX2NfdGFnIHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSAwKTsgfTsKLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX0RFQ0woaW50ZWdyYWxfY190YWcpCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfSU5URUdSQUxfQ19UQUdfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9pc19wbGFjZWhvbGRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9pc19wbGFjZWhvbGRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzZjk2NTMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvaXNfcGxhY2Vob2xkZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9JU19QTEFDRUhPTERFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0lTX1BMQUNFSE9MREVSX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogaXNfcGxhY2Vob2xkZXIuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXJnX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3llc19uby5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdHlwZV93cmFwcGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9udHRwX2RlY2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvc3RhdGljX2NvbnN0YW50LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgaXNfcGxhY2Vob2xkZXIKLSAgICA6IGJvb2xfPGZhbHNlPgotewotfTsKLQotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgTikgPgotc3RydWN0IGlzX3BsYWNlaG9sZGVyPCBhcmc8Tj4gPgotICAgIDogYm9vbF88dHJ1ZT4KLXsKLX07Ci0KLSNlbHNlCi0KLW5hbWVzcGFjZSBhdXggewotCi1hdXg6Om5vX3RhZyBpc19wbGFjZWhvbGRlcl9oZWxwZXIoLi4uKTsKLQotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgTikgPgotYXV4Ojp5ZXNfdGFnIGlzX3BsYWNlaG9sZGVyX2hlbHBlcihhdXg6OnR5cGVfd3JhcHBlcjwgYXJnPE4+ID4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBpc19wbGFjZWhvbGRlcgotewotICAgIHN0YXRpYyBhdXg6OnR5cGVfd3JhcHBlcjxUPiogZ2V0KCk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gCi0gICAgICAgICAgc2l6ZW9mKGF1eDo6aXNfcGxhY2Vob2xkZXJfaGVscGVyKGdldCgpKSkgPT0gc2l6ZW9mKGF1eDo6eWVzX3RhZykKLSAgICAgICAgKTsKLSAgICAKLSAgICB0eXBlZGVmIGJvb2xfPHZhbHVlPiB0eXBlOwotfTsKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9JU19QTEFDRUhPTERFUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2lzX3NlcXVlbmNlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2lzX3NlcXVlbmNlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjQxMTFiZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9pc19zZXF1ZW5jZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9JU19TRVFVRU5DRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0lTX1NFUVVFTkNFX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogaXNfc2VxdWVuY2UuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbm90LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYmVnaW5fZW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvc2VxdWVuY2VfdGFnX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lkZW50aXR5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdm9pZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaGFzX3RhZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaGFzX2JlZ2luLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2V0aS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL21zdmMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9tc3ZjX2lzX2NsYXNzLmhwcD4KLSNlbGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPT0gMTMwMCkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jbGFzcy5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLS8vIGFndXJ0LCAxMS9qdW4vMDM6IAotLy8gTVNWQyA2LjUvNy4wIGZhaWxzIGlmICdoYXNfYmVnaW4nIGlzIGluc3RhbnRpYXRlZCBvbiBhIGNsYXNzIHR5cGUgdGhhdCBoYXMgYQotLy8gJ2JlZ2luJyBtZW1iZXIgdGhhdCBkb2Vzbid0IG5hbWUgYSB0eXBlOyBlLmcuICdoYXNfYmVnaW48IHN0ZDo6dmVjdG9yPGludD4gPicKLS8vIHdvdWxkIGZhaWw7IHJlcXVpcmluZyAnVCcgdG8gaGF2ZSBfYm90aF8gJ3RhZycgYW5kICdiZWdpbicgbWVtYmVycyB3b3JrYXJvdW5kcwotLy8gdGhlIGlzc3VlIGZvciBtb3N0IHJlYWwtd29ybGQgY2FzZXMKLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGlzX3NlcXVlbmNlX2ltcGwKLSAgICA6IGFuZF88Ci0gICAgICAgICAgaWRlbnRpdHk8IGF1eDo6aGFzX3RhZzxUPiA+Ci0gICAgICAgICwgaWRlbnRpdHk8IGF1eDo6aGFzX2JlZ2luPFQ+ID4KLSAgICAgICAgPgotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0gICAgICAgIAotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQpCi0gICAgPgotc3RydWN0IGlzX3NlcXVlbmNlCi0gICAgOiBpZl88Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0gICAgICAgICAgYXV4Ojptc3ZjX2lzX2NsYXNzPFQ+IAotI2Vsc2UKLSAgICAgICAgICBuZG5ib29zdDo6aXNfY2xhc3M8VD4gCi0jZW5kaWYKLSAgICAgICAgLCBhdXg6OmlzX3NlcXVlbmNlX2ltcGw8VD4KLSAgICAgICAgLCBib29sXzxmYWxzZT4KLSAgICAgICAgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSwgaXNfc2VxdWVuY2UsIChUKSkKLX07Ci0KLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19IQVNfWFhYKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVCkKLSAgICA+Ci1zdHJ1Y3QgaXNfc2VxdWVuY2UKLSAgICA6IGJvb2xfPGZhbHNlPgotewotfTsKLQotI2Vsc2UKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQpCi0gICAgPgotc3RydWN0IGlzX3NlcXVlbmNlCi0gICAgOiBub3RfPCBpc19zYW1lPCB0eXBlbmFtZSBiZWdpbjxUPjo6dHlwZSwgdm9pZF8gPiA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLCBpc19zZXF1ZW5jZSwgKFQpKQotfTsKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01TVkMKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19NU1ZDXzYwX0VUSV9CVUcpCi10ZW1wbGF0ZTw+IHN0cnVjdCBpc19zZXF1ZW5jZTxpbnQ+Ci0gICAgOiBib29sXzxmYWxzZT4KLXsKLX07Ci0jZW5kaWYKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX05PX0VUSSgxLCBpc19zZXF1ZW5jZSkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9JU19TRVFVRU5DRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2l0ZXJfZm9sZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9pdGVyX2ZvbGQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhODQ4MGI4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2l0ZXJfZm9sZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0lURVJfRk9MRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0lURVJfRk9MRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMS0yMDAyCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGl0ZXJfZm9sZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9iZWdpbl9lbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9PMV9zaXplLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGFtYmRhLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pdGVyX2ZvbGRfaW1wbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFNlcXVlbmNlKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShTdGF0ZSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oRm9yd2FyZE9wKQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGQKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6aXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgOjpuZG5ib29zdDo6bXBsOjpPMV9zaXplPFNlcXVlbmNlPjo6dmFsdWUKLSAgICAgICAgLCB0eXBlbmFtZSBiZWdpbjxTZXF1ZW5jZT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBlbmQ8U2VxdWVuY2U+Ojp0eXBlCi0gICAgICAgICwgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBsYW1iZGE8Rm9yd2FyZE9wPjo6dHlwZQotICAgICAgICA+OjpzdGF0ZSB0eXBlOwotCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgzLGl0ZXJfZm9sZCwoU2VxdWVuY2UsU3RhdGUsRm9yd2FyZE9wKSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygzLCBpdGVyX2ZvbGQpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfSVRFUl9GT0xEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvaXRlcl9mb2xkX2lmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2l0ZXJfZm9sZF9pZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0Zjg3NjUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvaXRlcl9mb2xkX2lmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0lURVJfRk9MRF9JRl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0lURVJfRk9MRF9JRl9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMy0yMDA0Ci0vLyBDb3B5cmlnaHQgRXJpYyBGcmllZG1hbiAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGl0ZXJfZm9sZF9pZi5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9iZWdpbl9lbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9sb2dpY2FsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYWx3YXlzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZXZhbF9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvcGFpci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FwcGx5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pdGVyX2ZvbGRfaWZfaW1wbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9mb3J3YXJkaW5nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgUHJlZGljYXRlLCB0eXBlbmFtZSBMYXN0SXRlcmF0b3IgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9wcmVkCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFN0YXRlLCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fTkVTVEVEX0ZPUldBUkRJTkcpCi0gICAgICAgIDogYW5kXzwKLSAgICAgICAgICAgICAgbm90XzwgaXNfc2FtZTxJdGVyYXRvcixMYXN0SXRlcmF0b3I+ID4KLSAgICAgICAgICAgICwgYXBwbHkxPFByZWRpY2F0ZSxJdGVyYXRvcj4KLSAgICAgICAgICAgID4KLSAgICB7Ci0jZWxzZQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhbmRfPAotICAgICAgICAgICAgICBub3RfPCBpc19zYW1lPEl0ZXJhdG9yLExhc3RJdGVyYXRvcj4gPgotICAgICAgICAgICAgLCBhcHBseTE8UHJlZGljYXRlLEl0ZXJhdG9yPgotICAgICAgICAgICAgPiB0eXBlOwotI2VuZGlmCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oU2VxdWVuY2UpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFN0YXRlKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShGb3J3YXJkT3ApCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKEZvcndhcmRQcmVkaWNhdGUpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKEJhY2t3YXJkT3ApCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKEJhY2t3YXJkUHJlZGljYXRlKQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWYKLXsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmVnaW48U2VxdWVuY2U+Ojp0eXBlIGZpcnN0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGVuZDxTZXF1ZW5jZT46OnR5cGUgbGFzdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGV2YWxfaWY8Ci0gICAgICAgICAgaXNfbmE8QmFja3dhcmRQcmVkaWNhdGU+Ci0gICAgICAgICwgaWZfPCBpc19uYTxCYWNrd2FyZE9wPiwgYWx3YXlzPGZhbHNlXz4sIGFsd2F5czx0cnVlXz4gPgotICAgICAgICAsIGlkZW50aXR5PEJhY2t3YXJkUHJlZGljYXRlPgotICAgICAgICA+Ojp0eXBlIGJhY2t3YXJkX3ByZWRfOwotCi0vLyBjd3BybzggZG9lc24ndCBsaWtlICdjdXQtb2ZmJyB0eXBlIGhlcmUgKHVzZSB0eXBlZGVmIGluc3RlYWQpCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4MzAwMykpICYmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fSUJNQ1BQX18sIE5ETkJPT1NUX1RFU1RFRF9BVCg2MDApKQotICAgIHN0cnVjdCByZXN1bHRfIDoKLSNlbHNlCi0gICAgdHlwZWRlZgotI2VuZGlmCi0gICAgICAgIGF1eDo6aXRlcl9mb2xkX2lmX2ltcGw8Ci0gICAgICAgICAgZmlyc3RfCi0gICAgICAgICwgU3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgLCBwcm90ZWN0PCBhdXg6Oml0ZXJfZm9sZF9pZl9wcmVkPCBGb3J3YXJkUHJlZGljYXRlLGxhc3RfID4gPgotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBiYWNrd2FyZF9wcmVkXwotICAgICAgICA+Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4MzAwMykpICYmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fSUJNQ1BQX18sIE5ETkJPT1NUX1RFU1RFRF9BVCg2MDApKQotICAgIHsgfTsKLSNlbHNlCi0gICAgcmVzdWx0XzsKLSNlbmRpZgotCi1wdWJsaWM6Ci0KLSAgICB0eXBlZGVmIHBhaXI8Ci0gICAgICAgICAgdHlwZW5hbWUgcmVzdWx0Xzo6c3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSByZXN1bHRfOjppdGVyYXRvcgotICAgICAgICA+IHR5cGU7Ci0KLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDYKLSAgICAgICAgLCBpdGVyX2ZvbGRfaWYKLSAgICAgICAgLCAoU2VxdWVuY2UsU3RhdGUsRm9yd2FyZE9wLEZvcndhcmRQcmVkaWNhdGUsQmFja3dhcmRPcCxCYWNrd2FyZFByZWRpY2F0ZSkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDYsIGl0ZXJfZm9sZF9pZikKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9JVEVSX0ZPTERfSUZfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9pdGVyYXRvcl9yYW5nZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9pdGVyYXRvcl9yYW5nZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjOGNjODguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvaXRlcmF0b3JfcmFuZ2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9JVEVSQVRPUl9SQU5HRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0lURVJBVE9SX1JBTkdFX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogaXRlcmF0b3JfcmFuZ2UuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1zdHJ1Y3QgaXRlcmF0b3JfcmFuZ2VfdGFnOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oRmlyc3QpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKExhc3QpCi0gICAgPgotc3RydWN0IGl0ZXJhdG9yX3JhbmdlCi17Ci0gICAgdHlwZWRlZiBpdGVyYXRvcl9yYW5nZV90YWcgdGFnOwotICAgIHR5cGVkZWYgaXRlcmF0b3JfcmFuZ2UgdHlwZTsKLSAgICB0eXBlZGVmIEZpcnN0IGJlZ2luOwotICAgIHR5cGVkZWYgTGFzdCBlbmQ7Ci0KLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsaXRlcmF0b3JfcmFuZ2UsKEZpcnN0LExhc3QpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDIsIGl0ZXJhdG9yX3JhbmdlKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0lURVJBVE9SX1JBTkdFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvaXRlcmF0b3JfdGFncy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9pdGVyYXRvcl90YWdzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTg2YWI2OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9pdGVyYXRvcl90YWdzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfSVRFUkFUT1JfVEFHX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfSVRFUkFUT1JfVEFHX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogaXRlcmF0b3JfdGFncy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pbnQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotc3RydWN0IGZvcndhcmRfaXRlcmF0b3JfdGFnICAgICAgIDogaW50XzwwPiB7IHR5cGVkZWYgZm9yd2FyZF9pdGVyYXRvcl90YWcgdHlwZTsgfTsKLXN0cnVjdCBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZyA6IGludF88MT4geyB0eXBlZGVmIGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnIHR5cGU7IH07Ci1zdHJ1Y3QgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcgOiBpbnRfPDI+IHsgdHlwZWRlZiByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZyB0eXBlOyB9OwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0lURVJBVE9SX1RBR19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xhbWJkYS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9sYW1iZGEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNjE3NTQ3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xhbWJkYS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xBTUJEQV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0xBTUJEQV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxhbWJkYS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9sYW1iZGFfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYmluZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2xhbWJkYS5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0ZVTExfTEFNQkRBX1NVUFBPUlQpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vZnVsbF9sYW1iZGEuaHBwPgotI2Vsc2UKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfbm9fY3Rwcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX05PX0lNUExJQ0lUX01FVEFGVU5DVElPTlMKLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xBTUJEQV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xhbWJkYV9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGFtYmRhX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmYjk0ZDguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGFtYmRhX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xBTUJEQV9GV0RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MQU1CREFfRldEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbGFtYmRhX2Z3ZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92b2lkX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmEuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9sYW1iZGEuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19GVUxMX0xBTUJEQV9TVVBQT1JUKQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ludC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX2FyaXR5X3BhcmFtLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy90ZW1wbGF0ZV9hcml0eV9md2QuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IAotICAgICAgdHlwZW5hbWUgVCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX0FSSVRZX1BBUkFNKAotICAgICAgICAgIHR5cGVuYW1lIEFyaXR5ID0gaW50XzwgYXV4Ojp0ZW1wbGF0ZV9hcml0eTxUPjo6dmFsdWUgPgotICAgICAgICApCi0gICAgPgotc3RydWN0IGxhbWJkYTsKLQotfX0KLQotI2Vsc2UgLy8gTkROQk9PU1RfTVBMX0NGR19OT19GVUxMX0xBTUJEQV9TVVBQT1JUCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgCi0gICAgICB0eXBlbmFtZSBUID0gbmEKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgLCB0eXBlbmFtZSBQcm90ZWN0ID0gdHJ1ZV8KLSAgICA+IAotc3RydWN0IGxhbWJkYTsKLQotfX0KLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTEFNQkRBX0ZXRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xlc3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGVzcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0NDMxZjUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGVzcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xFU1NfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MRVNTX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbGVzcy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2RlZmluZSBBVVg3NzgwNzZfT1BfTkFNRSBsZXNzCi0jZGVmaW5lIEFVWDc3ODA3Nl9PUF9UT0tFTiA8Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29tcGFyaXNvbl9vcC5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTEVTU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xlc3NfZXF1YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGVzc19lcXVhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3NThhM2YuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGVzc19lcXVhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xFU1NfRVFVQUxfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MRVNTX0VRVUFMX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbGVzc19lcXVhbC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2RlZmluZSBBVVg3NzgwNzZfT1BfTkFNRSBsZXNzX2VxdWFsCi0jZGVmaW5lIEFVWDc3ODA3Nl9PUF9UT0tFTiA8PQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbXBhcmlzb25fb3AuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xFU1NfRVFVQUxfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saW1pdHMvYXJpdHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGltaXRzL2FyaXR5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGM5NjUwYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saW1pdHMvYXJpdHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MSU1JVFNfQVJJVFlfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSU1JVFNfQVJJVFlfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBhcml0eS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFkpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFkgNQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTElNSVRTX0FSSVRZX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGltaXRzL2xpc3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGltaXRzL2xpc3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTM3ZWEwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpbWl0cy9saXN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTElNSVRTX0xJU1RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSU1JVFNfTElTVF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxpc3QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfTElNSVRfTElTVF9TSVpFKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfTElNSVRfTElTVF9TSVpFIDIwCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MSU1JVFNfTElTVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpbWl0cy91bnJvbGxpbmcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGltaXRzL3Vucm9sbGluZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkZjU1MDAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGltaXRzL3Vucm9sbGluZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xJTUlUU19VTlJPTExJTkdfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSU1JVFNfVU5ST0xMSU5HX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogdW5yb2xsaW5nLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORykKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORyA0Ci0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MSU1JVFNfVU5ST0xMSU5HX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGltaXRzL3ZlY3Rvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saW1pdHMvdmVjdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTY3YjI1OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saW1pdHMvdmVjdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTElNSVRTX1ZFQ1RPUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0xJTUlUU19WRUNUT1JfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB2ZWN0b3IuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfTElNSVRfVkVDVE9SX1NJWkUpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9MSU1JVF9WRUNUT1JfU0laRSAyMAotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTElNSVRTX1ZFQ1RPUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzNGM4MjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xJU1RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSVNUX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbGlzdC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpbWl0cy9saXN0LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3ByZXByb2Nlc3Nvci5ocHA+Ci0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaW5jLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc3RyaW5naXplLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05FRURTX1RPS0VOX1BBU1RJTkdfT1BfRk9SX1RPS0VOU19KVVhUQVBPU0lORykKLSMgICBkZWZpbmUgQVVYNzc4MDc2X0xJU1RfSEVBREVSIFwKLSAgICBORE5CT09TVF9QUF9DQVQobGlzdCxORE5CT09TVF9NUExfTElNSVRfTElTVF9TSVpFKS5ocHAgXAotICAgIC8qKi8KLSNlbHNlCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9MSVNUX0hFQURFUiBcCi0gICAgTkROQk9PU1RfUFBfQ0FUKGxpc3QsTkROQk9PU1RfTVBMX0xJTUlUX0xJU1RfU0laRSkjIy5ocHAgXAotICAgIC8qKi8KLSNlbmRpZgotCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9TVFJJTkdJWkUobmRuYm9vc3QvbXBsL2xpc3QvQVVYNzc4MDc2X0xJU1RfSEVBREVSKQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9MSVNUX0hFQURFUgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBsaXN0LmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saW1pdHMvbGlzdC5ocHA+Ci0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X1NFUVVFTkNFX05BTUUgbGlzdAotIyAgIGRlZmluZSBBVVg3NzgwNzZfU0VRVUVOQ0VfTElNSVQgTkROQk9PU1RfTVBMX0xJTUlUX0xJU1RfU0laRQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3NlcXVlbmNlX3dyYXBwZXIuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MSVNUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL08xX3NpemUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL08xX3NpemUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDFhNDA0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9PMV9zaXplLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTElTVF9BVVhfTzFfU0laRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0xJU1RfQVVYX08xX1NJWkVfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBPMV9zaXplLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL08xX3NpemVfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL3RhZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6Omxpc3RfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTGlzdCA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IExpc3Q6OnNpemUKLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTElTVF9BVVhfTzFfU0laRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9iZWdpbl9lbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL2JlZ2luX2VuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4MWVjZTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL2JlZ2luX2VuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xJU1RfQVVYX0JFR0lOX0VORF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0xJU1RfQVVYX0JFR0lOX0VORF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGJlZ2luX2VuZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9iZWdpbl9lbmRfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL2l0ZXJhdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL3RhZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9pdGVtLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiZWdpbl9pbXBsPCBhdXg6Omxpc3RfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTGlzdCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsX2l0ZXI8dHlwZW5hbWUgTGlzdDo6dHlwZT4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVuZF9pbXBsPCBhdXg6Omxpc3RfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbF9pdGVyPGxfZW5kPiB0eXBlOwotICAgIH07Ci19OwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xJU1RfQVVYX0JFR0lOX0VORF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9jbGVhci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vY2xlYXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ODZjYTU2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9jbGVhci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xJU1RfQVVYX0NMRUFSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTElTVF9BVVhfQ0xFQVJfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBjbGVhci5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9jbGVhcl9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vaXRlbS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy90YWcuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6bGlzdF90YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBMaXN0ID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGxfZW5kIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTElTVF9BVVhfQ0xFQVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vZW1wdHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL2VtcHR5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmRkOWYzMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vZW1wdHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9FTVBUWV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0xJU1RfQVVYX0VNUFRZX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogZW1wdHkuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZW1wdHlfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbm90LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL3RhZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4OjpsaXN0X3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIExpc3QgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBub3RfPHR5cGVuYW1lIExpc3Q6OnNpemU+Ci0gICAgewotICAgIH07Ci19OwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xJU1RfQVVYX0VNUFRZX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL2Zyb250LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9mcm9udC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllZTFkZDYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL2Zyb250LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTElTVF9BVVhfRlJPTlRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9GUk9OVF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGZyb250LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Zyb250X2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy90YWcuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6bGlzdF90YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBMaXN0ID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIExpc3Q6Oml0ZW0gdHlwZTsKLSAgICB9OwotfTsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9GUk9OVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYmVlYThiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBpbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotLy8gTk8gSU5DTFVERSBHVUFSRFMsIFRIRSBIRUFERVIgSVMgSU5URU5ERUQgRk9SIE1VTFRJUExFIElOQ0xVU0lPTiEKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zdHJpbmdpemUuaHBwPgotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9IRUFERVIgXAotICAgIGF1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL05ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIFwKLS8qKi8KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19JQk1DUFBfXywgTkROQk9PU1RfVEVTVEVEX0FUKDcwMCkpCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9JTkNMVURFX1NUUklORyBORE5CT09TVF9QUF9TVFJJTkdJWkUobmRuYm9vc3QvbXBsL2xpc3QvQVVYNzc4MDc2X0hFQURFUikKLSMgICBpbmNsdWRlIEFVWDc3ODA3Nl9JTkNMVURFX1NUUklORwotIyAgIHVuZGVmIEFVWDc3ODA3Nl9JTkNMVURFX1NUUklORwotI2Vsc2UKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX1NUUklOR0laRShuZG5ib29zdC9tcGwvbGlzdC9BVVg3NzgwNzZfSEVBREVSKQotI2VuZGlmCi0KLSMgICB1bmRlZiBBVVg3NzgwNzZfSEVBREVSCi0KLSN1bmRlZiBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL2l0ZW0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL2l0ZW0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTM1MjlhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9pdGVtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTElTVF9BVVhfTk9ERV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0xJU1RfQVVYX05PREVfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBpdGVtLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xvbmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vdGFnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbXN2Yy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBTaXplCi0gICAgLCB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBOZXh0Ci0gICAgPgotc3RydWN0IGxfaXRlbQotewotLy8gYWd1cnQsIDE3L2p1bC8wMzogdG8gZmFjaWxpdGF0ZSB0aGUgZGVmaWNpZW50ICdpc19zZXF1ZW5jZScgaW1wbGVtZW50YXRpb24gCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKQotICAgIHR5cGVkZWYgaW50IGJlZ2luOwotI2VuZGlmCi0gICAgdHlwZWRlZiBhdXg6Omxpc3RfdGFnIHRhZzsKLSAgICB0eXBlZGVmIGxfaXRlbSB0eXBlOwotCi0gICAgdHlwZWRlZiBTaXplIHNpemU7Ci0gICAgdHlwZWRlZiBUIGl0ZW07Ci0gICAgdHlwZWRlZiBOZXh0IG5leHQ7Ci19OwotCi1zdHJ1Y3QgbF9lbmQKLXsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApCi0gICAgdHlwZWRlZiBpbnQgYmVnaW47Ci0jZW5kaWYKLSAgICB0eXBlZGVmIGF1eDo6bGlzdF90YWcgdGFnOwotICAgIHR5cGVkZWYgbF9lbmQgdHlwZTsKLSAgICB0eXBlZGVmIGxvbmdfPDA+IHNpemU7Ci19OwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xJU1RfQVVYX05PREVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vaXRlcmF0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL2l0ZXJhdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTE0YTI3ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vaXRlcmF0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9JVEVSQVRPUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0xJU1RfQVVYX0lURVJBVE9SX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogaXRlcmF0b3IuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaXRlcmF0b3JfdGFncy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL25leHRfcHJpb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9kZXJlZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9pdGVtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgTm9kZSA+Ci1zdHJ1Y3QgbF9pdGVyCi17Ci0gICAgdHlwZWRlZiBhdXg6OmxfaXRlcl90YWcgdGFnOwotICAgIHR5cGVkZWYgZm9yd2FyZF9pdGVyYXRvcl90YWcgY2F0ZWdvcnk7Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgTm9kZSA+Ci1zdHJ1Y3QgZGVyZWY8IGxfaXRlcjxOb2RlPiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBOb2RlOjppdGVtIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgTm9kZSA+Ci1zdHJ1Y3QgbmV4dDwgbF9pdGVyPE5vZGU+ID4KLXsKLSAgICB0eXBlZGVmIGxfaXRlcjwgdHlwZW5hbWUgTm9kZTo6bmV4dCA+IHR5cGU7Ci19OwotCi0jZWxzZSAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLXRlbXBsYXRlPCB0eXBlbmFtZSBOb2RlID4KLXN0cnVjdCBsX2l0ZXIKLXsKLSAgICB0eXBlZGVmIGF1eDo6bF9pdGVyX3RhZyB0YWc7Ci0gICAgdHlwZWRlZiBmb3J3YXJkX2l0ZXJhdG9yX3RhZyBjYXRlZ29yeTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIE5vZGU6Oml0ZW0gdHlwZTsKLSAgICB0eXBlZGVmIGxfaXRlcjwgdHlwZW5hbWUgbXBsOjpuZXh0PE5vZGU+Ojp0eXBlID4gbmV4dDsKLX07Ci0KLSNlbmRpZgotCi0KLXRlbXBsYXRlPD4gc3RydWN0IGxfaXRlcjxsX2VuZD4KLXsKLSAgICB0eXBlZGVmIGF1eDo6bF9pdGVyX3RhZyB0YWc7Ci0gICAgdHlwZWRlZiBmb3J3YXJkX2l0ZXJhdG9yX3RhZyBjYXRlZ29yeTsKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0gICAgdHlwZWRlZiBuYSB0eXBlOwotICAgIHR5cGVkZWYgbF9pdGVyIG5leHQ7Ci0jZW5kaWYKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfUEFTU19USFJPVUdIX0xBTUJEQV9TUEVDKDEsIGxfaXRlcikKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9JVEVSQVRPUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9udW1iZXJlZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vbnVtYmVyZWQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNWM2NDJlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9udW1iZXJlZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi0KLS8vIE5PIElOQ0xVREUgR1VBUkRTLCBUSEUgSEVBREVSIElTIElOVEVOREVEIEZPUiBNVUxUSVBMRSBJTkNMVVNJT04KLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDAtMjAwMgotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IG51bWJlcmVkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgZGVmaW5lZChORE5CT09TVF9QUF9JU19JVEVSQVRJTkcpCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZW51bV9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtX3NoaWZ0ZWRfcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLQotI2RlZmluZSBpIE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigxKQotCi0jaWYgaSA9PSAxCi0KLXRlbXBsYXRlPAotICAgICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoaSwgdHlwZW5hbWUgVCkKLSAgICA+Ci1zdHJ1Y3QgbGlzdDEKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwxPgotICAgICAgICAsIFQwCi0gICAgICAgICwgbF9lbmQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDEgdHlwZTsKLX07Ci0KLSNlbHNlCi0KLSMgICBkZWZpbmUgTVBMX0FVWF9MSVNUX1RBSUwobGlzdCwgaSwgVCkgXAotICAgIE5ETkJPT1NUX1BQX0NBVChsaXN0LE5ETkJPT1NUX1BQX0RFQyhpKSk8IFwKLSAgICAgIE5ETkJPT1NUX1BQX0VOVU1fU0hJRlRFRF9QQVJBTVMoaSwgVCkgXAotICAgID4gXAotICAgIC8qKi8KLSAgICAKLXRlbXBsYXRlPAotICAgICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoaSwgdHlwZW5hbWUgVCkKLSAgICA+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKGxpc3QsaSkKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzxpPgotICAgICAgICAsIFQwCi0gICAgICAgICwgTVBMX0FVWF9MSVNUX1RBSUwobGlzdCxpLFQpCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChsaXN0LGkpIHR5cGU7Ci19OwotCi0jICAgdW5kZWYgTVBMX0FVWF9MSVNUX1RBSUwKLQotI2VuZGlmIC8vIGkgPT0gMQotCi0jdW5kZWYgaQotCi0jZW5kaWYgLy8gTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vbnVtYmVyZWRfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vbnVtYmVyZWRfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjOGZkNjMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL251bWJlcmVkX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotCi0vLyBOTyBJTkNMVURFIEdVQVJEUywgVEhFIEhFQURFUiBJUyBJTlRFTkRFRCBGT1IgTVVMVElQTEUgSU5DTFVTSU9OCi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBudW1iZXJlZF9jLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgZGVmaW5lZChORE5CT09TVF9QUF9JU19JVEVSQVRJTkcpCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZW51bV9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtX3NoaWZ0ZWRfcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLQotI2RlZmluZSBpIE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigxKQotCi0jaWYgaSA9PSAxCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoaSwgVCBDKQotICAgID4KLXN0cnVjdCBsaXN0MV9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MT4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPFQsQzA+Ci0gICAgICAgICwgbF9lbmQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDFfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotI2Vsc2UKLQotIyAgIGRlZmluZSBNUExfQVVYX0xJU1RfQ19UQUlMKGxpc3QsIGksIEMpIFwKLSAgICBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfQ0FUKGxpc3QsTkROQk9PU1RfUFBfREVDKGkpKSxfYyk8VCwgXAotICAgICAgTkROQk9PU1RfUFBfRU5VTV9TSElGVEVEX1BBUkFNUyhpLCBDKSBcCi0gICAgPiBcCi0gICAgLyoqLwotICAgIAotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhpLCBUIEMpCi0gICAgPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9DQVQobGlzdCxpKSxfYykKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzxpPgotICAgICAgICAsIGludGVncmFsX2M8VCxDMD4KLSAgICAgICAgLCBNUExfQVVYX0xJU1RfQ19UQUlMKGxpc3QsaSxDKQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfQ0FUKGxpc3QsaSksX2MpIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi0jICAgdW5kZWYgTVBMX0FVWF9MSVNUX0NfVEFJTAotCi0jZW5kaWYgLy8gaSA9PSAxCi0KLSN1bmRlZiBpCi0KLSNlbmRpZiAvLyBORE5CT09TVF9QUF9JU19JVEVSQVRJTkcKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wb3BfZnJvbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3BvcF9mcm9udC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4ZDc0NDQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3BvcF9mcm9udC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xJU1RfQVVYX1BPUF9GUk9OVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0xJU1RfQVVYX1BPUF9GUk9OVF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHBvcF9mcm9udC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9wb3BfZnJvbnRfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbmV4dF9wcmlvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy90YWcuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6Omxpc3RfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTGlzdCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8TGlzdD46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9QT1BfRlJPTlRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3QxMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3QxMC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlOGVkYjIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0MTAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xpc3QvbGlzdDEwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IGxpc3QxCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MT4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxfZW5kCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QxIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBsaXN0MgotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDI+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0MTxUMT4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDIgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBsaXN0MwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDM+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0MjwgVDEsVDIgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBsaXN0NAotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDQ+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0MzwgVDEsVDIsVDMgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0NCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgbGlzdDUKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw1PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDQ8IFQxLFQyLFQzLFQ0ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBsaXN0NgotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDY+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0NTwgVDEsVDIsVDMsVDQsVDUgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0NiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCBsaXN0NwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDc+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0NjwgVDEsVDIsVDMsVDQsVDUsVDYgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0NyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3QgbGlzdDgKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw4PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDc8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDggdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCBsaXN0OQotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDk+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0ODwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0OSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCBsaXN0MTAKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwxMD4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3Q5PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QxMCB0eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDEwX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0MTBfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmYzA1ODIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0MTBfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGlzdC9saXN0MTBfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwCi0gICAgPgotc3RydWN0IGxpc3QxX2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwxPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxfZW5kCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QxX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMQotICAgID4KLXN0cnVjdCBsaXN0Ml9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188Mj4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0MV9jPCBULEMxID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDJfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyCi0gICAgPgotc3RydWN0IGxpc3QzX2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwzPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QyX2M8IFQsQzEsQzIgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0M19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMKLSAgICA+Ci1zdHJ1Y3QgbGlzdDRfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDQ+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDNfYzwgVCxDMSxDMixDMyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3Q0X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNAotICAgID4KLXN0cnVjdCBsaXN0NV9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188NT4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0NF9jPCBULEMxLEMyLEMzLEM0ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDVfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1Ci0gICAgPgotc3RydWN0IGxpc3Q2X2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw2PgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3Q1X2M8IFQsQzEsQzIsQzMsQzQsQzUgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0Nl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYKLSAgICA+Ci1zdHJ1Y3QgbGlzdDdfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDc+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDZfYzwgVCxDMSxDMixDMyxDNCxDNSxDNiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3Q3X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNwotICAgID4KLXN0cnVjdCBsaXN0OF9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188OD4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0N19jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDhfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4Ci0gICAgPgotc3RydWN0IGxpc3Q5X2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw5PgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3Q4X2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzggPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0OV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzkKLSAgICA+Ci1zdHJ1Y3QgbGlzdDEwX2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwxMD4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0OV9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDEwX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3QyMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3QyMC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiNjQyOTUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0MjAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTY5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xpc3QvbGlzdDIwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3QgbGlzdDExCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MTE+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0MTA8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QxMSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3QgbGlzdDEyCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MTI+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0MTE8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MTIgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3QgbGlzdDEzCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MTM+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0MTI8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDEzIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3QgbGlzdDE0Ci0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MTQ+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0MTM8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QxNCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3QgbGlzdDE1Ci0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MTU+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0MTQ8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MTUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3QgbGlzdDE2Ci0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MTY+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0MTU8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDE2IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3QgbGlzdDE3Ci0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MTc+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0MTY8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QxNyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3QgbGlzdDE4Ci0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MTg+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0MTc8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MTggdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3QgbGlzdDE5Ci0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MTk+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0MTg8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDE5IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgbGlzdDIwCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MjA+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0MTk8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QyMCB0eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDIwX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0MjBfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjMzRkZWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0MjBfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNzMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGlzdC9saXN0MjBfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgID4KLXN0cnVjdCBsaXN0MTFfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDExPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QxMF9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QxMV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMQotICAgID4KLXN0cnVjdCBsaXN0MTJfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDEyPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QxMV9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MTJfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyCi0gICAgPgotc3RydWN0IGxpc3QxM19jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MTM+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDEyX2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MTNfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMwotICAgID4KLXN0cnVjdCBsaXN0MTRfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDE0PgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QxM19jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QxNF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNAotICAgID4KLXN0cnVjdCBsaXN0MTVfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDE1PgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QxNF9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MTVfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1Ci0gICAgPgotc3RydWN0IGxpc3QxNl9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MTY+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDE1X2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MTZfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNgotICAgID4KLXN0cnVjdCBsaXN0MTdfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDE3PgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QxNl9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QxN19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNwotICAgID4KLXN0cnVjdCBsaXN0MThfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDE4PgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QxN19jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MThfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4Ci0gICAgPgotc3RydWN0IGxpc3QxOV9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MTk+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDE4X2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTggPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MTlfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOQotICAgID4KLXN0cnVjdCBsaXN0MjBfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDIwPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QxOV9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QyMF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0MzAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0MzAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Y2RjYWM3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDMwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9saXN0L2xpc3QzMC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAKLSAgICA+Ci1zdHJ1Y3QgbGlzdDIxCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MjE+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0MjA8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MjEgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEKLSAgICA+Ci1zdHJ1Y3QgbGlzdDIyCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MjI+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0MjE8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDIyIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIKLSAgICA+Ci1zdHJ1Y3QgbGlzdDIzCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MjM+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0MjI8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QyMyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMKLSAgICA+Ci1zdHJ1Y3QgbGlzdDI0Ci0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MjQ+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0MjM8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MjQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICA+Ci1zdHJ1Y3QgbGlzdDI1Ci0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MjU+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0MjQ8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDI1IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUKLSAgICA+Ci1zdHJ1Y3QgbGlzdDI2Ci0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MjY+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0MjU8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QyNiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYKLSAgICA+Ci1zdHJ1Y3QgbGlzdDI3Ci0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188Mjc+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0MjY8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MjcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcKLSAgICA+Ci1zdHJ1Y3QgbGlzdDI4Ci0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188Mjg+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0Mjc8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDI4IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgKLSAgICA+Ci1zdHJ1Y3QgbGlzdDI5Ci0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188Mjk+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0Mjg8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QyOSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICA+Ci1zdHJ1Y3QgbGlzdDMwCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MzA+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0Mjk8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjkgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MzAgdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3QzMF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDMwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMzk4MTUwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDMwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTgzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xpc3QvbGlzdDMwX2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgPgotc3RydWN0IGxpc3QyMV9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MjE+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDIwX2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QyMV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEKLSAgICA+Ci1zdHJ1Y3QgbGlzdDIyX2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwyMj4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0MjFfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QyMl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyCi0gICAgPgotc3RydWN0IGxpc3QyM19jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MjM+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDIyX2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDIzX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzCi0gICAgPgotc3RydWN0IGxpc3QyNF9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MjQ+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDIzX2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QyNF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQKLSAgICA+Ci1zdHJ1Y3QgbGlzdDI1X2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwyNT4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0MjRfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QyNV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1Ci0gICAgPgotc3RydWN0IGxpc3QyNl9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MjY+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDI1X2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDI2X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2Ci0gICAgPgotc3RydWN0IGxpc3QyN19jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188Mjc+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDI2X2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QyN19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcKLSAgICA+Ci1zdHJ1Y3QgbGlzdDI4X2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwyOD4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0MjdfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QyOF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4Ci0gICAgPgotc3RydWN0IGxpc3QyOV9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188Mjk+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDI4X2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDI5X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5Ci0gICAgPgotc3RydWN0IGxpc3QzMF9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MzA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDI5X2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QzMF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0NDAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0NDAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTBhZTk5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDQwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwOSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9saXN0L2xpc3Q0MC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMAotICAgID4KLXN0cnVjdCBsaXN0MzEKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwzMT4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3QzMDwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4LFQyOSxUMzAgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MzEgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMQotICAgID4KLXN0cnVjdCBsaXN0MzIKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwzMj4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3QzMTwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4LFQyOSxUMzAsVDMxID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDMyIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMgotICAgID4KLXN0cnVjdCBsaXN0MzMKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwzMz4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3QzMjwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4LFQyOSxUMzAsVDMxLFQzMiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QzMyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMwotICAgID4KLXN0cnVjdCBsaXN0MzQKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwzND4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3QzMzwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4LFQyOSxUMzAsVDMxLFQzMixUMzMgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MzQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgID4KLXN0cnVjdCBsaXN0MzUKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwzNT4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3QzNDwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4LFQyOSxUMzAsVDMxLFQzMixUMzMsVDM0ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDM1IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNQotICAgID4KLXN0cnVjdCBsaXN0MzYKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwzNj4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3QzNTwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4LFQyOSxUMzAsVDMxLFQzMixUMzMsVDM0LFQzNSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QzNiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNgotICAgID4KLXN0cnVjdCBsaXN0MzcKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwzNz4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3QzNjwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4LFQyOSxUMzAsVDMxLFQzMixUMzMsVDM0LFQzNSxUMzYgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MzcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNwotICAgID4KLXN0cnVjdCBsaXN0MzgKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwzOD4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3QzNzwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4LFQyOSxUMzAsVDMxLFQzMixUMzMsVDM0LFQzNSxUMzYsVDM3ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDM4IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOAotICAgID4KLXN0cnVjdCBsaXN0MzkKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwzOT4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3QzODwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4LFQyOSxUMzAsVDMxLFQzMixUMzMsVDM0LFQzNSxUMzYsVDM3LFQzOCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QzOSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgID4KLXN0cnVjdCBsaXN0NDAKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw0MD4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3QzOTwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4LFQyOSxUMzAsVDMxLFQzMixUMzMsVDM0LFQzNSxUMzYsVDM3LFQzOCxUMzkgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0NDAgdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3Q0MF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDQwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOGVkNjQ5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDQwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTkzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xpc3QvbGlzdDQwX2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgID4KLXN0cnVjdCBsaXN0MzFfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDMxPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QzMF9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDMxX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEKLSAgICA+Ci1zdHJ1Y3QgbGlzdDMyX2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwzMj4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0MzFfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MzJfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIKLSAgICA+Ci1zdHJ1Y3QgbGlzdDMzX2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwzMz4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0MzJfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDMzX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMwotICAgID4KLXN0cnVjdCBsaXN0MzRfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDM0PgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QzM19jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSxDMzIsQzMzID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDM0X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQKLSAgICA+Ci1zdHJ1Y3QgbGlzdDM1X2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwzNT4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0MzRfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MzVfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUKLSAgICA+Ci1zdHJ1Y3QgbGlzdDM2X2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwzNj4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0MzVfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDM2X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNgotICAgID4KLXN0cnVjdCBsaXN0MzdfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDM3PgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QzNl9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSxDMzIsQzMzLEMzNCxDMzUsQzM2ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDM3X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcKLSAgICA+Ci1zdHJ1Y3QgbGlzdDM4X2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwzOD4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0MzdfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1LEMzNixDMzcgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MzhfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgKLSAgICA+Ci1zdHJ1Y3QgbGlzdDM5X2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwzOT4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0MzhfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1LEMzNixDMzcsQzM4ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDM5X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOQotICAgID4KLXN0cnVjdCBsaXN0NDBfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDQwPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QzOV9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSxDMzIsQzMzLEMzNCxDMzUsQzM2LEMzNyxDMzgsQzM5ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDQwX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3Q1MC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3Q1MC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViOGZkYTUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0NTAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjI5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xpc3QvbGlzdDUwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAKLSAgICA+Ci1zdHJ1Y3QgbGlzdDQxCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188NDE+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0NDA8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIsVDMzLFQzNCxUMzUsVDM2LFQzNyxUMzgsVDM5LFQ0MCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3Q0MSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEKLSAgICA+Ci1zdHJ1Y3QgbGlzdDQyCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188NDI+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0NDE8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIsVDMzLFQzNCxUMzUsVDM2LFQzNyxUMzgsVDM5LFQ0MCxUNDEgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0NDIgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIKLSAgICA+Ci1zdHJ1Y3QgbGlzdDQzCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188NDM+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0NDI8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIsVDMzLFQzNCxUMzUsVDM2LFQzNyxUMzgsVDM5LFQ0MCxUNDEsVDQyID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDQzIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMKLSAgICA+Ci1zdHJ1Y3QgbGlzdDQ0Ci0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188NDQ+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0NDM8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIsVDMzLFQzNCxUMzUsVDM2LFQzNyxUMzgsVDM5LFQ0MCxUNDEsVDQyLFQ0MyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3Q0NCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQKLSAgICA+Ci1zdHJ1Y3QgbGlzdDQ1Ci0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188NDU+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0NDQ8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIsVDMzLFQzNCxUMzUsVDM2LFQzNyxUMzgsVDM5LFQ0MCxUNDEsVDQyLFQ0MyxUNDQgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0NDUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0Ci0gICAgLCB0eXBlbmFtZSBUNDUKLSAgICA+Ci1zdHJ1Y3QgbGlzdDQ2Ci0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188NDY+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0NDU8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIsVDMzLFQzNCxUMzUsVDM2LFQzNyxUMzgsVDM5LFQ0MCxUNDEsVDQyLFQ0MyxUNDQsVDQ1ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDQ2IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NAotICAgICwgdHlwZW5hbWUgVDQ1LCB0eXBlbmFtZSBUNDYKLSAgICA+Ci1zdHJ1Y3QgbGlzdDQ3Ci0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188NDc+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0NDY8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIsVDMzLFQzNCxUMzUsVDM2LFQzNyxUMzgsVDM5LFQ0MCxUNDEsVDQyLFQ0MyxUNDQsVDQ1LFQ0NiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3Q0NyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQKLSAgICAsIHR5cGVuYW1lIFQ0NSwgdHlwZW5hbWUgVDQ2LCB0eXBlbmFtZSBUNDcKLSAgICA+Ci1zdHJ1Y3QgbGlzdDQ4Ci0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188NDg+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0NDc8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIsVDMzLFQzNCxUMzUsVDM2LFQzNyxUMzgsVDM5LFQ0MCxUNDEsVDQyLFQ0MyxUNDQsVDQ1LFQ0NixUNDcgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0NDggdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0Ci0gICAgLCB0eXBlbmFtZSBUNDUsIHR5cGVuYW1lIFQ0NiwgdHlwZW5hbWUgVDQ3LCB0eXBlbmFtZSBUNDgKLSAgICA+Ci1zdHJ1Y3QgbGlzdDQ5Ci0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188NDk+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0NDg8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIsVDMzLFQzNCxUMzUsVDM2LFQzNyxUMzgsVDM5LFQ0MCxUNDEsVDQyLFQ0MyxUNDQsVDQ1LFQ0NixUNDcsVDQ4ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDQ5IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NAotICAgICwgdHlwZW5hbWUgVDQ1LCB0eXBlbmFtZSBUNDYsIHR5cGVuYW1lIFQ0NywgdHlwZW5hbWUgVDQ4LCB0eXBlbmFtZSBUNDkKLSAgICA+Ci1zdHJ1Y3QgbGlzdDUwCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188NTA+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0NDk8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIsVDMzLFQzNCxUMzUsVDM2LFQzNyxUMzgsVDM5LFQ0MCxUNDEsVDQyLFQ0MyxUNDQsVDQ1LFQ0NixUNDcsVDQ4LFQ0OSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3Q1MCB0eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDUwX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0NTBfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwZjYxOWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0NTBfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMDMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGlzdC9saXN0NTBfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgID4KLXN0cnVjdCBsaXN0NDFfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDQxPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3Q0MF9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSxDMzIsQzMzLEMzNCxDMzUsQzM2LEMzNyxDMzgsQzM5LEM0MCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3Q0MV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgLCBUIEM0MQotICAgID4KLXN0cnVjdCBsaXN0NDJfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDQyPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3Q0MV9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSxDMzIsQzMzLEMzNCxDMzUsQzM2LEMzNyxDMzgsQzM5LEM0MCxDNDEgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0NDJfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEsIFQgQzQyCi0gICAgPgotc3RydWN0IGxpc3Q0M19jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188NDM+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDQyX2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMsQzM0LEMzNSxDMzYsQzM3LEMzOCxDMzksQzQwLEM0MSxDNDIgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0NDNfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEsIFQgQzQyLCBUIEM0MwotICAgID4KLXN0cnVjdCBsaXN0NDRfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDQ0PgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3Q0M19jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSxDMzIsQzMzLEMzNCxDMzUsQzM2LEMzNyxDMzgsQzM5LEM0MCxDNDEsQzQyLEM0MyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3Q0NF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgLCBUIEM0MSwgVCBDNDIsIFQgQzQzLCBUIEM0NAotICAgID4KLXN0cnVjdCBsaXN0NDVfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDQ1PgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3Q0NF9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSxDMzIsQzMzLEMzNCxDMzUsQzM2LEMzNyxDMzgsQzM5LEM0MCxDNDEsQzQyLEM0MyxDNDQgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0NDVfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEsIFQgQzQyLCBUIEM0MywgVCBDNDQsIFQgQzQ1Ci0gICAgPgotc3RydWN0IGxpc3Q0Nl9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188NDY+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDQ1X2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMsQzM0LEMzNSxDMzYsQzM3LEMzOCxDMzksQzQwLEM0MSxDNDIsQzQzLEM0NCxDNDUgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0NDZfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEsIFQgQzQyLCBUIEM0MywgVCBDNDQsIFQgQzQ1LCBUIEM0NgotICAgID4KLXN0cnVjdCBsaXN0NDdfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDQ3PgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3Q0Nl9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSxDMzIsQzMzLEMzNCxDMzUsQzM2LEMzNyxDMzgsQzM5LEM0MCxDNDEsQzQyLEM0MyxDNDQsQzQ1LEM0NiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3Q0N19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgLCBUIEM0MSwgVCBDNDIsIFQgQzQzLCBUIEM0NCwgVCBDNDUsIFQgQzQ2LCBUIEM0NwotICAgID4KLXN0cnVjdCBsaXN0NDhfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDQ4PgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3Q0N19jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSxDMzIsQzMzLEMzNCxDMzUsQzM2LEMzNyxDMzgsQzM5LEM0MCxDNDEsQzQyLEM0MyxDNDQsQzQ1LEM0NixDNDcgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0NDhfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEsIFQgQzQyLCBUIEM0MywgVCBDNDQsIFQgQzQ1LCBUIEM0NiwgVCBDNDcsIFQgQzQ4Ci0gICAgPgotc3RydWN0IGxpc3Q0OV9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188NDk+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDQ4X2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMsQzM0LEMzNSxDMzYsQzM3LEMzOCxDMzksQzQwLEM0MSxDNDIsQzQzLEM0NCxDNDUsQzQ2LEM0NyxDNDggPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0NDlfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEsIFQgQzQyLCBUIEM0MywgVCBDNDQsIFQgQzQ1LCBUIEM0NiwgVCBDNDcsIFQgQzQ4LCBUIEM0OQotICAgID4KLXN0cnVjdCBsaXN0NTBfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDUwPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3Q0OV9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSxDMzIsQzMzLEMzNCxDMzUsQzM2LEMzNyxDMzgsQzM5LEM0MCxDNDEsQzQyLEM0MyxDNDQsQzQ1LEM0NixDNDcsQzQ4LEM0OSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3Q1MF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3B1c2hfYmFjay5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHVzaF9iYWNrLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjgyNzU4Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHVzaF9iYWNrLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTElTVF9BVVhfUFVTSF9CQUNLX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTElTVF9BVVhfUFVTSF9CQUNLX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogcHVzaF9iYWNrLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3B1c2hfYmFja19md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL3RhZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGhhc19wdXNoX2JhY2tfaW1wbDsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGhhc19wdXNoX2JhY2tfaW1wbDwgYXV4OjpsaXN0X3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFNlcSA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9QVVNIX0JBQ0tfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHVzaF9mcm9udC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHVzaF9mcm9udC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyMzM4ODIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3B1c2hfZnJvbnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9QVVNIX0ZST05UX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTElTVF9BVVhfUFVTSF9GUk9OVF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHB1c2hfZnJvbnQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvcHVzaF9mcm9udF9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9uZXh0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL2l0ZW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vdGFnLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6bGlzdF90YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBMaXN0LCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGxfaXRlbTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgbmV4dDx0eXBlbmFtZSBMaXN0OjpzaXplPjo6dHlwZQotICAgICAgICAgICAgLCBUCi0gICAgICAgICAgICAsIHR5cGVuYW1lIExpc3Q6OnR5cGUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9QVVNIX0ZST05UX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3NpemUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3NpemUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZTljNWQxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9zaXplLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTElTVF9BVVhfU0laRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0xJU1RfQVVYX1NJWkVfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBzaXplLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3NpemVfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL3RhZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6Omxpc3RfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTGlzdCA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IExpc3Q6OnNpemUKLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTElTVF9BVVhfU0laRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy90YWcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3RhZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllYTUzYzIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3RhZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xJU1RfQVVYX1RBR19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0xJU1RfQVVYX1RBR19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHRhZy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi1zdHJ1Y3QgbGlzdF90YWc7Ci1zdHJ1Y3QgbF9pdGVyX3RhZzsKLQotfX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTElTVF9BVVhfVEFHX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0MC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2xpc3QwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGZhZTkzNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2xpc3QwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTElTVF9MSVNUMF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0xJU1RfTElTVDBfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBsaXN0MC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9sb25nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wdXNoX2Zyb250LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL3BvcF9mcm9udC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wdXNoX2JhY2suaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vZnJvbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vY2xlYXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vTzFfc2l6ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9zaXplLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL2VtcHR5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL2JlZ2luX2VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9pdGVtLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBEdW1teSA9IG5hID4gc3RydWN0IGxpc3QwOwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsaXN0MDxuYT4KLSAgICA6IGxfZW5kCi17Ci0gICAgdHlwZWRlZiBsX2VuZCB0eXBlOwotfTsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MSVNUX0xJU1QwX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0MF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDBfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3NjFjYWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0MF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTElTVF9MSVNUMF9DX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTElTVF9MSVNUMF9DX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbGlzdDBfYy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2xpc3QwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaW50ZWdyYWxfYy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBsaXN0MF9jCi0gICAgOiBsX2VuZAotewotICAgIHR5cGVkZWYgbF9lbmQgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTElTVF9MSVNUMF9DX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0MTAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0MTAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOGNjNzMzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDEwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTElTVF9MSVNUMTBfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSVNUX0xJU1QxMF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxpc3QxMC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvbGlzdDAuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBsaXN0MTAuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDEsIDEwLCA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9udW1iZXJlZC5ocHA+KSkKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xJU1RfTElTVDEwX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0MTBfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2xpc3QxMF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjU5NzVjZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2xpc3QxMF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTElTVF9MSVNUMTBfQ19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0xJU1RfTElTVDEwX0NfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBsaXN0MTBfYy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvbGlzdDBfYy5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIGxpc3QxMF9jLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgxLCAxMCwgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vbnVtYmVyZWRfYy5ocHA+KSkKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xJU1RfTElTVDEwX0NfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2xpc3QyMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2xpc3QyMC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4MTdlNTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0MjAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MSVNUX0xJU1QyMF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0xJU1RfTElTVDIwX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbGlzdDIwLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9saXN0MTAuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBsaXN0MjAuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDExLCAyMCwgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vbnVtYmVyZWQuaHBwPikpCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MSVNUX0xJU1QyMF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDIwX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0MjBfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyNjdiNWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0MjBfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xJU1RfTElTVDIwX0NfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSVNUX0xJU1QyMF9DX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbGlzdDIwX2MuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2xpc3QxMF9jLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgbGlzdDIwX2MuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDExLCAyMCwgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vbnVtYmVyZWRfYy5ocHA+KSkKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xJU1RfTElTVDIwX0NfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2xpc3QzMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2xpc3QzMC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3YzczYTMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0MzAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MSVNUX0xJU1QzMF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0xJU1RfTElTVDMwX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbGlzdDMwLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9saXN0MjAuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBsaXN0MzAuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDIxLCAzMCwgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vbnVtYmVyZWQuaHBwPikpCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MSVNUX0xJU1QzMF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDMwX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0MzBfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlODY1ZmQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0MzBfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xJU1RfTElTVDMwX0NfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSVNUX0xJU1QzMF9DX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbGlzdDMwX2MuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2xpc3QyMF9jLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgbGlzdDMwX2MuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDIxLCAzMCwgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vbnVtYmVyZWRfYy5ocHA+KSkKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xJU1RfTElTVDMwX0NfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2xpc3Q0MC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2xpc3Q0MC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxYTFkZWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0NDAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MSVNUX0xJU1Q0MF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0xJU1RfTElTVDQwX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbGlzdDQwLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9saXN0MzAuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBsaXN0NDAuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDMxLCA0MCwgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vbnVtYmVyZWQuaHBwPikpCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MSVNUX0xJU1Q0MF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDQwX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0NDBfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlMTRjM2MuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0NDBfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xJU1RfTElTVDQwX0NfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSVNUX0xJU1Q0MF9DX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbGlzdDQwX2MuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2xpc3QzMF9jLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgbGlzdDQwX2MuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDMxLCA0MCwgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vbnVtYmVyZWRfYy5ocHA+KSkKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xJU1RfTElTVDQwX0NfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2xpc3Q1MC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2xpc3Q1MC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliZDAwYjUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0NTAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MSVNUX0xJU1Q1MF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0xJU1RfTElTVDUwX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbGlzdDUwLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9saXN0NDAuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBsaXN0NTAuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDQxLCA1MCwgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vbnVtYmVyZWQuaHBwPikpCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MSVNUX0xJU1Q1MF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDUwX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0NTBfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3ODRkYjYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0NTBfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xJU1RfTElTVDUwX0NfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSVNUX0xJU1Q1MF9DX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbGlzdDUwX2MuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2xpc3Q0MF9jLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgbGlzdDUwX2MuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDQxLCA1MCwgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vbnVtYmVyZWRfYy5ocHA+KSkKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xJU1RfTElTVDUwX0NfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9sb2dpY2FsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xvZ2ljYWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YzQzNmM4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xvZ2ljYWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MT0dJQ0FMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTE9HSUNBTF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxvZ2ljYWwuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ub3QuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xPR0lDQUxfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9sb25nLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xvbmcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YjcwYjQ5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xvbmcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MT05HX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTE9OR19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxvbmcuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbG9uZ19md2QuaHBwPgotCi0jZGVmaW5lIEFVWF9XUkFQUEVSX1ZBTFVFX1RZUEUgbG9uZwotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2ludGVncmFsX3dyYXBwZXIuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xPTkdfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9sb25nX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9sb25nX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkY2RhZGEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbG9uZ19md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MT05HX0ZXRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0xPTkdfRldEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbG9uZ19md2QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9hZGxfYmFycmllci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbnR0cF9kZWNsLmhwcD4KLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0wobG9uZywgTikgPiBzdHJ1Y3QgbG9uZ187Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX0RFQ0wobG9uZ18pCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTE9OR19GV0RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9taW51cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9taW51cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3NjVjYjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbWludXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9NSU5VU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX01JTlVTX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbWludXMuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNkZWZpbmUgQVVYNzc4MDc2X09QX05BTUUgbWludXMKLSNkZWZpbmUgQVVYNzc4MDc2X09QX1RPS0VOIC0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9hcml0aG1ldGljX29wLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9NSU5VU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL211bHRpcGxpZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbXVsdGlwbGllcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiMDZkNzcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbXVsdGlwbGllcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX01VTFRJUExJRVNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9NVUxUSVBMSUVTX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbXVsdGlwbGllcy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC90aW1lcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9kZWZhdWx0X3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotCi0vLyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGhlYWRlciwgZGVwcmVjYXRlZAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9PUF9BUklUWSBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZCi0jZWxzZQotIyAgIGRlZmluZSBBVVg3NzgwNzZfT1BfQVJJVFkgMgotI2VuZGlmCi0KLXRlbXBsYXRlPAotICAgICAgTkROQk9PU1RfTVBMX1BQX0RFRkFVTFRfUEFSQU1TKEFVWDc3ODA3Nl9PUF9BUklUWSwgdHlwZW5hbWUgTiwgbmEpCi0gICAgPgotc3RydWN0IG11bHRpcGxpZXMKLSAgICA6IHRpbWVzPCBORE5CT09TVF9NUExfUFBfUEFSQU1TKEFVWDc3ODA3Nl9PUF9BUklUWSwgTikgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgQVVYNzc4MDc2X09QX0FSSVRZCi0gICAgICAgICwgbXVsdGlwbGllcwotICAgICAgICAsICggTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhBVVg3NzgwNzZfT1BfQVJJVFksIE4pICkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKEFVWDc3ODA3Nl9PUF9BUklUWSwgbXVsdGlwbGllcykKLQotI3VuZGVmIEFVWDc3ODA3Nl9PUF9BUklUWQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX01VTFRJUExJRVNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9uZWdhdGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbmVnYXRlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZThiOWFjYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9uZWdhdGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9ORUdBVEVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9ORUdBVEVfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBuZWdhdGUuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaW50ZWdyYWxfYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbXN2Y19ldGlfYmFzZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9ldGkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9pbnRlZ3JhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3N0YXRpY19jb25zdGFudC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG5lZ2F0ZV9pbXBsOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBuZWdhdGVfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOKQotICAgID4KLXN0cnVjdCBuZWdhdGUKLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX01TVkNfRVRJX0JVRykKLSAgICA6IG5lZ2F0ZV9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIG5lZ2F0ZV90YWc8Tj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8Tj46OnR5cGUKLSNlbHNlCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgIG5lZ2F0ZV9pbXBsPCB0eXBlbmFtZSBuZWdhdGVfdGFnPE4+Ojp0eXBlID4KLSAgICAgICAgLCBOCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotI2VuZGlmCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLCBuZWdhdGUsIChOKSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygxLCBuZWdhdGUpCi0KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19ORVNURURfVkFMVUVfQVJJVEhNRVRJQykKLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIFQgbiA+IHN0cnVjdCBuZWdhdGVfd2tuZAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChULCB2YWx1ZSA9IC1uKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8VCx2YWx1ZT4gdHlwZTsKLX07Ci19Ci0jZW5kaWYKLQotdGVtcGxhdGU8Pgotc3RydWN0IG5lZ2F0ZV9pbXBsPGludGVncmFsX2NfdGFnPgotewotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19ORVNURURfVkFMVUVfQVJJVEhNRVRJQykKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGF1eDo6bmVnYXRlX3drbmQ8IHR5cGVuYW1lIE46OnZhbHVlX3R5cGUsIE46OnZhbHVlID4KLSNlbHNlCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBpbnRlZ3JhbF9jPCB0eXBlbmFtZSBOOjp2YWx1ZV90eXBlLCAoLU46OnZhbHVlKSA+Ci0jZW5kaWYgICAgCi0gICAgewotICAgIH07Ci19OwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX05FR0FURV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL25leHQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbmV4dC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5YzRjOTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbmV4dC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX05FWFRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9ORVhUX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IG5leHQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbmV4dF9wcmlvci5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTkVYVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL25leHRfcHJpb3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbmV4dF9wcmlvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxOTAyYzcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbmV4dF9wcmlvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX05FWFRfUFJJT1JfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9ORVhUX1BSSU9SX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbmV4dF9wcmlvci5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbW1vbl9uYW1lX3drbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQ09NTU9OX05BTUVfV0tORChuZXh0KQotTkROQk9PU1RfTVBMX0FVWF9DT01NT05fTkFNRV9XS05EKHByaW9yKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVCkKLSAgICA+Ci1zdHJ1Y3QgbmV4dAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6bmV4dCB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSxuZXh0LChUKSkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUKQotICAgID4KLXN0cnVjdCBwcmlvcgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6cHJpb3IgdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEscHJpb3IsKFQpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDEsIG5leHQpCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMSwgcHJpb3IpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTkVYVF9QUklPUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL25vdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9ub3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNjEyYTk1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL25vdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX05PVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX05PVF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IG5vdC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9udHRwX2RlY2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25lc3RlZF90eXBlX3drbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0wobG9uZywgQ18pID4gLy8gJ2xvbmcnIGlzIGludGVudGlvbmFsIGhlcmUKLXN0cnVjdCBub3RfaW1wbAotICAgIDogYm9vbF88IUNfPgotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQpCi0gICAgPgotc3RydWN0IG5vdF8KLSAgICA6IGF1eDo6bm90X2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQpOjp2YWx1ZQotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLG5vdF8sKFQpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDEsbm90XykKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9OT1RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9ub3RfZXF1YWxfdG8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbm90X2VxdWFsX3RvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDc0YWY4YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9ub3RfZXF1YWxfdG8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9OT1RfRVFVQUxfVE9fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9OT1RfRVFVQUxfVE9fSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBub3RfZXF1YWxfdG8uaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNkZWZpbmUgQVVYNzc4MDc2X09QX05BTUUgbm90X2VxdWFsX3RvCi0jZGVmaW5lIEFVWDc3ODA3Nl9PUF9UT0tFTiAhPQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbXBhcmlzb25fb3AuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX05PVF9FUVVBTF9UT19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL251bWVyaWNfY2FzdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9udW1lcmljX2Nhc3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYmY0YWJmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL251bWVyaWNfY2FzdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX05VTUVSSUNfQ0FTVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX05VTUVSSUNfQ0FTVF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMy0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBudW1lcmljX2Nhc3QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbXN2Yy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi0vLyBhZ3VydCAyMS9zZXAvMDQ6IHBvcnRhYmlsaXR5IG1hY3JvIGZvciB0aGUgc2FrZSBvZiBNU1ZDIDYueC03LjA7Ci0vLyByZXNvbHZlcyBjb25mbGljdHMgd2l0aCAnbmRuYm9vc3Q6Om51bWVyaWNfY2FzdCcgZnVuY3Rpb24gdGVtcGxhdGUuCi0vLyB1c2UgaXQgaW4geW91ciBvd24gY29kZSBfb25seV8gaWYgeW91IGNhcmUgYWJvdXQgY29tcGF0aWJpbGl0eSB3aXRoCi0vLyB0aGVzZSBvdXRkYXRlZCBjb21waWxlcnMhCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTcwKSApCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTlVNRVJJQ19DQVNUIG51bWVyaWNfY2FzdF8KLSNlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTlVNRVJJQ19DQVNUIG51bWVyaWNfY2FzdAotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0vLyBubyBkZWZhdWx0IGltcGxlbWVudGF0aW9uOyB0aGUgZGVmaW5pdGlvbiBpcyBuZWVkZWQgdG8gbWFrZSBNU1ZDIGhhcHB5Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBTb3VyY2VUYWcsIHR5cGVuYW1lIFRhcmdldFRhZyA+IHN0cnVjdCBORE5CT09TVF9NUExfQVVYX05VTUVSSUNfQ0FTVAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5OwotfTsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9OVU1FUklDX0NBU1RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9vci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9vci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzNWRiNGQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvb3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9PUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX09SX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogb3IuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uZXN0ZWRfdHlwZV93a25kLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL21zdmMuaHBwPgotCi0vLyBhZ3VydCwgMTkvbWF5LzA0OiB3b3JrYXJvdW5kIGEgY29uZmxpY3Qgd2l0aCA8aXNvNjQ2Lmg+IGhlYWRlcidzIAotLy8gJ29yJyBhbmQgJ2FuZCcgbWFjcm9zLCBzZWUgaHR0cDovL3Rpbnl1cmwuY29tLzNldDY5OyAnZGVmaW5lZChvciknCi0vLyBoYXMgdG8gYmUgY2hlY2tlZCBpbiBhIHNlcGFyYXRlIGNvbmRpdGlvbiwgb3RoZXJ3aXNlIEdDQyBjb21wbGFpbnMgCi0vLyBhYm91dCAnb3InIGJlaW5nIGFuIGFsdGVybmF0aXZlIHRva2VuCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikKLSNpZm5kZWYgX19HQ0NYTUxfXwotI2lmIGRlZmluZWQob3IpCi0jICAgcHJhZ21hIHB1c2hfbWFjcm8oIm9yIikKLSMgICB1bmRlZiBvcgotIyAgIGRlZmluZSBvcih4KQotI2VuZGlmCi0jZW5kaWYKLSNlbmRpZgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIG9yLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmIGRlZmluZWQoX01TQ19WRVIpIAotI2lmbmRlZiBfX0dDQ1hNTF9fCi0jaWYgZGVmaW5lZChvcikKLSMgICBwcmFnbWEgcG9wX21hY3JvKCJvciIpCi0jZW5kaWYKLSNlbmRpZgotI2VuZGlmCi0KLSNlbHNlCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X09QX05BTUUgb3JfCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9PUF9WQUxVRTEgdHJ1ZQotIyAgIGRlZmluZSBBVVg3NzgwNzZfT1BfVkFMVUUyIGZhbHNlCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbG9naWNhbF9vcC5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX09SX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvcGFpci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9wYWlyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2MyOTVjNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9wYWlyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfUEFJUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BBSVJfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBwYWlyLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbXN2Y19ldGlfYmFzZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9ldGkuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICA+Ci1zdHJ1Y3QgcGFpcgotewotICAgIHR5cGVkZWYgcGFpciB0eXBlOwotICAgIHR5cGVkZWYgVDEgZmlyc3Q7Ci0gICAgdHlwZWRlZiBUMiBzZWNvbmQ7Ci0KLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIscGFpciwoVDEsVDIpKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFApCi0gICAgPgotc3RydWN0IGZpcnN0Ci17Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19NU1ZDXzcwX0VUSV9CVUcpCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBQOjpmaXJzdCB0eXBlOwotI2Vsc2UKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bXN2Y19ldGlfYmFzZTxQPjo6Zmlyc3QgdHlwZTsKLSNlbmRpZgotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSxmaXJzdCwoUCkpCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oUCkKLSAgICA+Ci1zdHJ1Y3Qgc2Vjb25kCi17Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19NU1ZDXzcwX0VUSV9CVUcpCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBQOjpzZWNvbmQgdHlwZTsKLSNlbHNlCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6Om1zdmNfZXRpX2Jhc2U8UD46OnNlY29uZCB0eXBlOwotI2VuZGlmCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLHNlY29uZCwoUCkpCi19OwotCi0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19OT19FVEkoMiwgcGFpcikKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygxLCBmaXJzdCkKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygxLCBzZWNvbmQpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfUEFJUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3BsYWNlaG9sZGVycy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9wbGFjZWhvbGRlcnMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNDQ0ZDhhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3BsYWNlaG9sZGVycy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HKQotCi0vLy8vLyBoZWFkZXIgYm9keQotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9QTEFDRUhPTERFUlNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9QTEFDRUhPTERFUlNfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEtMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBwbGFjZWhvbGRlcnMuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FyZy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vYWRsX2JhcnJpZXIuaHBwPgotCi0jICAgaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19BRExfQkFSUklFUl9OQU1FU1BBQ0UpCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKHR5cGUpIFwKLSAgICAgICAgdXNpbmcgOjpORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6dHlwZTsgXAotICAgICAgICAvKiovCi0jICAgZWxzZQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTCh0eXBlKSAvKiovCi0jICAgZW5kaWYKLQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBwbGFjZWhvbGRlcnMuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbnR0cF9kZWNsLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGltaXRzL2FyaXR5LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLS8vIHdhdGNoIG91dCBmb3IgR05VIGdldHRleHQgdXNlcnMsIHdobyAjZGVmaW5lIF8oeCkKLSNpZiAhZGVmaW5lZChfKSB8fCBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fVU5OQU1FRF9QTEFDRUhPTERFUl9TVVBQT1JUKQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8LTE+IF87Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgCi0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXykKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzsKLX0KLQotfX0KLSNlbmRpZgotCi0vLy8gYWd1cnQsIDE3L21hci8wMjogb25lIG1vcmUgcGxhY2Vob2xkZXIgZm9yIHRoZSBsYXN0ICdhcHBseSMnIAotLy8vIHNwZWNpYWxpemF0aW9uCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDEsIE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFkgKyAxLCA8bmRuYm9vc3QvbXBsL3BsYWNlaG9sZGVycy5ocHA+KSkKLSNpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9QTEFDRUhPTERFUlNfSFBQX0lOQ0xVREVECi0KLS8vLy8vIGl0ZXJhdGlvbgotCi0jZWxzZQotI2RlZmluZSBpXyBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotCi10eXBlZGVmIGFyZzxpXz4gTkROQk9PU1RfUFBfQ0FUKF8saV8pOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgCi0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woTkROQk9PU1RfUFBfQ0FUKF8saV8pKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpORE5CT09TVF9QUF9DQVQoXyxpXyk7Ci19Ci0KLX19Ci0KLSN1bmRlZiBpXwotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvcGx1cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9wbHVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjI2NWNmYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9wbHVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfUExVU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BMVVNfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBwbHVzLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jZGVmaW5lIEFVWDc3ODA3Nl9PUF9OQU1FIHBsdXMKLSNkZWZpbmUgQVVYNzc4MDc2X09QX1RPS0VOICsKLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9hcml0aG1ldGljX29wLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9QTFVTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvcG9wX2JhY2tfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3BvcF9iYWNrX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzZTk0NTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvcG9wX2JhY2tfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfUE9QX0JBQ0tfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfUE9QX0JBQ0tfRldEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogcG9wX2JhY2tfZndkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBwb3BfYmFja19pbXBsOwotdGVtcGxhdGU8IHR5cGVuYW1lIFNlcXVlbmNlID4gc3RydWN0IHBvcF9iYWNrOwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1BPUF9CQUNLX0ZXRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3BvcF9mcm9udF9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvcG9wX2Zyb250X2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0MTIwNWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvcG9wX2Zyb250X2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1BPUF9GUk9OVF9GV0RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9QT1BfRlJPTlRfRldEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogcG9wX2Zyb250X2Z3ZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgcG9wX2Zyb250X2ltcGw7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxdWVuY2UgPiBzdHJ1Y3QgcG9wX2Zyb250OwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1BPUF9GUk9OVF9GV0RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9wcmlvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9wcmlvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllODgwZWEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvcHJpb3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9QUklPUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BSSU9SX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHByaW9yLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL25leHRfcHJpb3IuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1BSSU9SX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvcHJvdGVjdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9wcm90ZWN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDJkNGM0MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9wcm90ZWN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfUFJPVEVDVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BST1RFQ1RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogcHJvdGVjdC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2FyaXR5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZHRwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9udHRwX2RlY2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQpCi0gICAgLCBpbnQgbm90X2xlXyA9IDAKLSAgICA+Ci1zdHJ1Y3QgcHJvdGVjdCA6IFQKLXsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fRURHX1ZFUlNJT05fXywgPT0gMjM4KQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0IHR5cGU7Ci0jZWxzZQotICAgIHR5cGVkZWYgcHJvdGVjdCB0eXBlOwotI2VuZGlmCi19OwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0JST0tFTl9ERUZBVUxUX1BBUkFNRVRFUlNfSU5fTkVTVEVEX1RFTVBMQVRFUykKLW5hbWVzcGFjZSBhdXggeyAKLXRlbXBsYXRlPCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIE4pLCB0eXBlbmFtZSBUID4KLXN0cnVjdCBhcml0eTwgcHJvdGVjdDxUPiwgTiA+IAotICAgIDogYXJpdHk8VCxOPgoteyAKLX07Ci19IC8vIG5hbWVzcGFjZSBhdXgKLSNlbmRpZgotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfTUFJTigxLCBwcm90ZWN0KQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fRlVMTF9MQU1CREFfU1VQUE9SVCkKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19URU1QTEFURV9BUklUWSgxLCAxLCBwcm90ZWN0KQotI2VuZGlmCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfUFJPVEVDVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3B1c2hfYmFjay5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9wdXNoX2JhY2suaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Y2VhODk1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3B1c2hfYmFjay5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1BVU0hfQkFDS19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BVU0hfQkFDS19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHB1c2hfYmFjay5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9wdXNoX2JhY2tfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wdXNoX2JhY2tfaW1wbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3NlcXVlbmNlX3RhZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFNlcXVlbmNlKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUKQotICAgID4KLXN0cnVjdCBwdXNoX2JhY2sKLSAgICA6IHB1c2hfYmFja19pbXBsPCB0eXBlbmFtZSBzZXF1ZW5jZV90YWc8U2VxdWVuY2U+Ojp0eXBlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSBhcHBseTwgU2VxdWVuY2UsVCA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLHB1c2hfYmFjaywoU2VxdWVuY2UsVCkpCi19OwotCi0KLXRlbXBsYXRlPCAKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oU2VxdWVuY2UpCi0gICAgPgotc3RydWN0IGhhc19wdXNoX2JhY2sKLSAgICA6IGhhc19wdXNoX2JhY2tfaW1wbDwgdHlwZW5hbWUgc2VxdWVuY2VfdGFnPFNlcXVlbmNlPjo6dHlwZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgYXBwbHk8IFNlcXVlbmNlID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEsaGFzX3B1c2hfYmFjaywoU2VxdWVuY2UpKQotfTsKLQotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMiwgcHVzaF9iYWNrKQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDEsIGhhc19wdXNoX2JhY2spCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfUFVTSF9CQUNLX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvcHVzaF9iYWNrX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9wdXNoX2JhY2tfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWRlMGZmMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9wdXNoX2JhY2tfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfUFVTSF9CQUNLX0ZXRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BVU0hfQkFDS19GV0RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBwdXNoX2JhY2tfZndkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBwdXNoX2JhY2tfaW1wbDsKLXRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSwgdHlwZW5hbWUgVCA+IHN0cnVjdCBwdXNoX2JhY2s7Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfUFVTSF9CQUNLX0ZXRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3B1c2hfZnJvbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvcHVzaF9mcm9udC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzMzEzYzguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvcHVzaF9mcm9udC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1BVU0hfRlJPTlRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9QVVNIX0ZST05UX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogcHVzaF9mcm9udC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9wdXNoX2Zyb250X2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHVzaF9mcm9udF9pbXBsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvc2VxdWVuY2VfdGFnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oU2VxdWVuY2UpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQpCi0gICAgPgotc3RydWN0IHB1c2hfZnJvbnQKLSAgICA6IHB1c2hfZnJvbnRfaW1wbDwgdHlwZW5hbWUgc2VxdWVuY2VfdGFnPFNlcXVlbmNlPjo6dHlwZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgYXBwbHk8IFNlcXVlbmNlLFQgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMixwdXNoX2Zyb250LChTZXF1ZW5jZSxUKSkKLX07Ci0KLQotdGVtcGxhdGU8IAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShTZXF1ZW5jZSkKLSAgICA+Ci1zdHJ1Y3QgaGFzX3B1c2hfZnJvbnQKLSAgICA6IGhhc19wdXNoX2Zyb250X2ltcGw8IHR5cGVuYW1lIHNlcXVlbmNlX3RhZzxTZXF1ZW5jZT46OnR5cGUgPgotICAgICAgICA6OnRlbXBsYXRlIGFwcGx5PCBTZXF1ZW5jZSA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLGhhc19wdXNoX2Zyb250LChTZXF1ZW5jZSkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMiwgcHVzaF9mcm9udCkKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygxLCBoYXNfcHVzaF9mcm9udCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9QVVNIX0ZST05UX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvcHVzaF9mcm9udF9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvcHVzaF9mcm9udF9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDM5NGZkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3B1c2hfZnJvbnRfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfUFVTSF9GUk9OVF9GV0RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9QVVNIX0ZST05UX0ZXRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHB1c2hfZnJvbnRfZndkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBwdXNoX2Zyb250X2ltcGw7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxdWVuY2UsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcHVzaF9mcm9udDsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9QVVNIX0ZST05UX0ZXRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3F1b3RlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3F1b3RlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTliN2QzYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9xdW90ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTEgKzAsMCBAQAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HKQotCi0vLy8vLyBoZWFkZXIgYm9keQotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9RVU9URV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1FVT1RFX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDgKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogcXVvdGUuaHBwIDQ5MjcyIDIwMDgtMTAtMTEgMDY6NTA6NDZaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzo1MDo0NiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI3MiAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92b2lkLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9oYXNfdHlwZS5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9iY2MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90dHAuaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1RFTVBMQVRFX1RFTVBMQVRFX1BBUkFNRVRFUlMpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0JDQzU5MF9XT1JLQVJPVU5EUykKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19OT19RVU9URV9URU1QTEFURQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0lNUExJQ0lUX01FVEFGVU5DVElPTlMpIFwKLSAgICAmJiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fSEFTX1hYWCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19OT19JTVBMSUNJVF9NRVRBRlVOQ1RJT05TCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIHF1b3RlLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saW1pdHMvYXJpdHkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9wYXJhbXMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1FVT1RFX1RFTVBMQVRFKQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBib29sIGhhc190eXBlXyA+Ci1zdHJ1Y3QgcXVvdGVfaW1wbAotLy8gR0NDIGhhcyBhIHByb2JsZW0gd2l0aCBtZXRhZnVuY3Rpb24gZm9yd2FyZGluZyB3aGVuIFQgaXMgYQotLy8gc3BlY2lhbGl6YXRpb24gb2YgYSB0ZW1wbGF0ZSBjYWxsZWQgJ3R5cGUnLgotIyBpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCBORE5CT09TVF9URVNURURfQVQoNCkpIFwKLSAgICAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19NSU5PUl9fLCBORE5CT09TVF9URVNURURfQVQoMCkpIFwKLSAgICAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19QQVRDSExFVkVMX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgyKSkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnR5cGUgdHlwZTsKLX07Ci0jIGVsc2UgCi0gICAgOiBUCi17Ci19OwotIyBlbmRpZiAKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IHF1b3RlX2ltcGw8VCxmYWxzZT4KLXsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLSNlbHNlIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotdGVtcGxhdGU8IGJvb2wgPiBzdHJ1Y3QgcXVvdGVfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBUCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBxdW90ZV9pbXBsPGZhbHNlPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgIH07Ci19OwotCi0jZW5kaWYgCi0KLSNkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywoMSwgTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSwgPG5kbmJvb3N0L21wbC9xdW90ZS5ocHA+KSkKLSNpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19RVU9URV9URU1QTEFURQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9RVU9URV9IUFBfSU5DTFVERUQKLQotLy8vLy8gaXRlcmF0aW9uCi0KLSNlbHNlCi0jZGVmaW5lIGlfIE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigxKQotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCBORE5CT09TVF9NUExfUFBfUEFSQU1TKGlfLCB0eXBlbmFtZSBQKSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChxdW90ZSxpXykKLXsKLSAgICB0ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpXywgdHlwZW5hbWUgVSkgPiBzdHJ1Y3QgYXBwbHkKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfQkNDNTkwX1dPUktBUk9VTkRTKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBxdW90ZV9pbXBsPAotICAgICAgICAgICAgICBGPCBORE5CT09TVF9NUExfUFBfUEFSQU1TKGlfLCBVKSA+Ci0gICAgICAgICAgICAsIGF1eDo6aGFzX3R5cGU8IEY8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaV8sIFUpID4gPjo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotI2VsaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLSAgICAgICAgOiBxdW90ZV9pbXBsPAotICAgICAgICAgICAgICBGPCBORE5CT09TVF9NUExfUFBfUEFSQU1TKGlfLCBVKSA+Ci0gICAgICAgICAgICAsIGF1eDo6aGFzX3R5cGU8IEY8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaV8sIFUpID4gPjo6dmFsdWUKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLSNlbHNlCi0gICAgICAgIDogcXVvdGVfaW1wbDwgYXV4OjpoYXNfdHlwZTwgRjwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpXywgVSkgPiA+Ojp2YWx1ZSA+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IEY8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaV8sIFUpID4gPgotICAgIHsKLSAgICB9OwotI2VuZGlmCi19OwotCi0jdW5kZWYgaV8KLSNlbmRpZiAvLyBORE5CT09TVF9QUF9JU19JVEVSQVRJTkcKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3JlbW92ZV9pZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9yZW1vdmVfaWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDk5N2UyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3JlbW92ZV9pZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1JFTU9WRV9JRl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1JFTU9WRV9JRl9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMy0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHJlbW92ZV9pZi5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9mb2xkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvcmV2ZXJzZV9mb2xkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZXZhbF9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lkZW50aXR5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvcHJvdGVjdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xhbWJkYS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FwcGx5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pbnNlcnRlcl9hbGdvcml0aG0uaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBQcmVkLCB0eXBlbmFtZSBJbnNlcnRPcCA+IHN0cnVjdCByZW1vdmVfaWZfaGVscGVyCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFNlcXVlbmNlLCB0eXBlbmFtZSBVID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGV2YWxfaWY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGFwcGx5MTxQcmVkLFU+Ojp0eXBlCi0gICAgICAgICAgICAsIGlkZW50aXR5PFNlcXVlbmNlPgotICAgICAgICAgICAgLCBhcHBseTI8SW5zZXJ0T3AsU2VxdWVuY2UsVT4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBTZXF1ZW5jZQotICAgICwgdHlwZW5hbWUgUHJlZGljYXRlCi0gICAgLCB0eXBlbmFtZSBJbnNlcnRlcgotICAgID4KLXN0cnVjdCByZW1vdmVfaWZfaW1wbAotICAgIDogZm9sZDwKLSAgICAgICAgICBTZXF1ZW5jZQotICAgICAgICAsIHR5cGVuYW1lIEluc2VydGVyOjpzdGF0ZQotICAgICAgICAsIHByb3RlY3Q8IGF1eDo6cmVtb3ZlX2lmX2hlbHBlcjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPFByZWRpY2F0ZT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgSW5zZXJ0ZXI6Om9wZXJhdGlvbgotICAgICAgICAgICAgPiA+Ci0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgU2VxdWVuY2UKLSAgICAsIHR5cGVuYW1lIFByZWRpY2F0ZQotICAgICwgdHlwZW5hbWUgSW5zZXJ0ZXIKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9yZW1vdmVfaWZfaW1wbAotICAgIDogcmV2ZXJzZV9mb2xkPAotICAgICAgICAgIFNlcXVlbmNlCi0gICAgICAgICwgdHlwZW5hbWUgSW5zZXJ0ZXI6OnN0YXRlCi0gICAgICAgICwgcHJvdGVjdDwgYXV4OjpyZW1vdmVfaWZfaGVscGVyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8UHJlZGljYXRlPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBJbnNlcnRlcjo6b3BlcmF0aW9uCi0gICAgICAgICAgICA+ID4KLSAgICAgICAgPgotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfSU5TRVJURVJfQUxHT1JJVEhNX0RFRigzLCByZW1vdmVfaWYpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfUkVNT1ZFX0lGX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvcmV2ZXJzZV9mb2xkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3JldmVyc2VfZm9sZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3OTBhNDMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvcmV2ZXJzZV9mb2xkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfUkVWRVJTRV9GT0xEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfUkVWRVJTRV9GT0xEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAxLTIwMDIKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogcmV2ZXJzZV9mb2xkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2JlZ2luX2VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL08xX3NpemUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hcmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3JldmVyc2VfZm9sZF9pbXBsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShTZXF1ZW5jZSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oU3RhdGUpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKEJhY2t3YXJkT3ApCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AgPSBhcmc8MT4KLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJldmVyc2VfZm9sZF9pbXBsPAotICAgICAgICAgIDo6bmRuYm9vc3Q6Om1wbDo6TzFfc2l6ZTxTZXF1ZW5jZT46OnZhbHVlCi0gICAgICAgICwgdHlwZW5hbWUgYmVnaW48U2VxdWVuY2U+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZW5kPFNlcXVlbmNlPjo6dHlwZQotICAgICAgICAsIFN0YXRlCi0gICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+OjpzdGF0ZSB0eXBlOwotCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgzLHJldmVyc2VfZm9sZCwoU2VxdWVuY2UsU3RhdGUsQmFja3dhcmRPcCkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMywgcmV2ZXJzZV9mb2xkKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1JFVkVSU0VfRk9MRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3NhbWVfYXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvc2FtZV9hcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5ZmRiY2IuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvc2FtZV9hcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1NBTUVfQVNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9TQU1FX0FTX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogc2FtZV9hcy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ub3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZm9yd2FyZGluZy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSA+Ci1zdHJ1Y3Qgc2FtZV9hcwotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUMiA+IHN0cnVjdCBhcHBseQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fTkVTVEVEX0ZPUldBUkRJTkcpCi0gICAgICAgIDogaXNfc2FtZTxUMSxUMj4KLSAgICB7Ci0jZWxzZQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpc19zYW1lPFQxLFQyPjo6dHlwZSB0eXBlOwotI2VuZGlmCi0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSA+Ci1zdHJ1Y3Qgbm90X3NhbWVfYXMKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVDIgPiBzdHJ1Y3QgYXBwbHkKLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX05FU1RFRF9GT1JXQVJESU5HKQotICAgICAgICA6IG5vdF88IGlzX3NhbWU8VDEsVDI+ID4KLSAgICB7Ci0jZWxzZQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBub3RfPCBpc19zYW1lPFQxLFQyPiA+Ojp0eXBlIHR5cGU7Ci0jZW5kaWYKLSAgICB9OwotfTsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9TQU1FX0FTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvc2VxdWVuY2VfdGFnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3NlcXVlbmNlX3RhZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxYzFlNzguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvc2VxdWVuY2VfdGFnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyNCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1NFUVVFTkNFX1RBR19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1NFUVVFTkNFX1RBR19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHNlcXVlbmNlX3RhZy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9zZXF1ZW5jZV90YWdfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9oYXNfdGFnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9oYXNfYmVnaW4uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2lzX21zdmNfZXRpX2FyZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2V0aS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8veWVzX25vLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0vLyBhZ3VydCwgMjcvbm92LzAyOiBoYXZlIHRvIHVzZSBhIHNpbXBsaXN0aWMgJ3NlcXVlbmNlX3RhZycgaW1wbGVtZW50YXRpb24KLS8vIG9uIE1TVkMgdG8gYXZvaWQgZHJlYWRmdWwgImludGVybmFsIHN0cnVjdHVyZSBvdmVyZmxvdyIgZXJyb3IKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkgXAotICAgIHx8IGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19IQVNfWFhYKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oU2VxdWVuY2UpCi0gICAgPgotc3RydWN0IHNlcXVlbmNlX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgU2VxdWVuY2U6OnRhZyB0eXBlOwotfTsKLQotI2VsaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA9PSAxMzAwKQotCi0vLyBhZ3VydCwgMDcvZmViLzAzOiB3b3JrYXJvdW5kIGZvciB3aGF0IHNlZW1zIHRvIGJlIE1TVkMgNy4wLXNwZWNpZmljIEVUSSBpc3N1ZQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGJvb2wgPgotc3RydWN0IHNlcXVlbmNlX3RhZ19pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFNlcXVlbmNlID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgU2VxdWVuY2U6OnRhZyB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2VxdWVuY2VfdGFnX2ltcGw8ZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFNlcXVlbmNlID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oU2VxdWVuY2UpCi0gICAgPgotc3RydWN0IHNlcXVlbmNlX3RhZwotICAgIDogYXV4OjpzZXF1ZW5jZV90YWdfaW1wbDwgIWF1eDo6aXNfbXN2Y19ldGlfYXJnPFNlcXVlbmNlPjo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88U2VxdWVuY2U+Ci17Ci19OwotCi0jZWxzZQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGJvb2wgaGFzX3RhZ18sIGJvb2wgaGFzX2JlZ2luXyA+Ci1zdHJ1Y3Qgc2VxdWVuY2VfdGFnX2ltcGwKLXsKLSAgICAvLyBhZ3VydCAyNC9ub3YvMDI6IE1TVkMgNi41IGdldHMgY29uZnVzZWQgaW4gJ3NlcXVlbmNlX3RhZ19pbXBsPHRydWU+JyAKLSAgICAvLyBzcGVjaWFsaXphdGlvbiBiZWxvdywgaWYgd2UgbmFtZSBpdCAncmVzdWx0XycgaGVyZQotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSA+IHN0cnVjdCByZXN1bHQyXzsKLX07Ci0KLSMgICBkZWZpbmUgQVVYX0NMQVNTX1NFUVVFTkNFX1RBR19TUEVDKGhhc190YWcsIGhhc19iZWdpbiwgcmVzdWx0X3R5cGUpIFwKLXRlbXBsYXRlPD4gc3RydWN0IHNlcXVlbmNlX3RhZ19pbXBsPGhhc190YWcsaGFzX2JlZ2luPiBcCi17IFwKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxdWVuY2UgPiBzdHJ1Y3QgcmVzdWx0Ml8gXAotICAgIHsgXAotICAgICAgICB0eXBlZGVmIHJlc3VsdF90eXBlIHR5cGU7IFwKLSAgICB9OyBcCi19OyBcCi0vKiovCi0KLUFVWF9DTEFTU19TRVFVRU5DRV9UQUdfU1BFQyh0cnVlLCB0cnVlLCB0eXBlbmFtZSBTZXF1ZW5jZTo6dGFnKQotQVVYX0NMQVNTX1NFUVVFTkNFX1RBR19TUEVDKHRydWUsIGZhbHNlLCB0eXBlbmFtZSBTZXF1ZW5jZTo6dGFnKQotQVVYX0NMQVNTX1NFUVVFTkNFX1RBR19TUEVDKGZhbHNlLCB0cnVlLCBuZXN0ZWRfYmVnaW5fZW5kX3RhZykKLUFVWF9DTEFTU19TRVFVRU5DRV9UQUdfU1BFQyhmYWxzZSwgZmFsc2UsIG5vbl9zZXF1ZW5jZV90YWcpCi0KLSMgICB1bmRlZiBBVVhfQ0xBU1NfU0VRVUVOQ0VfVEFHX1NQRUMKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShTZXF1ZW5jZSkKLSAgICA+Ci1zdHJ1Y3Qgc2VxdWVuY2VfdGFnCi0gICAgOiBhdXg6OnNlcXVlbmNlX3RhZ19pbXBsPAotICAgICAgICAgIDo6bmRuYm9vc3Q6Om1wbDo6YXV4OjpoYXNfdGFnPFNlcXVlbmNlPjo6dmFsdWUKLSAgICAgICAgLCA6Om5kbmJvb3N0OjptcGw6OmF1eDo6aGFzX2JlZ2luPFNlcXVlbmNlPjo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0Ml88U2VxdWVuY2U+Ci17Ci19OwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVNWQwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMSwgc2VxdWVuY2VfdGFnKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1NFUVVFTkNFX1RBR19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3NlcXVlbmNlX3RhZ19md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvc2VxdWVuY2VfdGFnX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllM2FlZTMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvc2VxdWVuY2VfdGFnX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1NFUVVFTkNFX1RBR19GV0RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9TRVFVRU5DRV9UQUdfRldEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogc2VxdWVuY2VfdGFnX2Z3ZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXN0cnVjdCBuZXN0ZWRfYmVnaW5fZW5kX3RhZzsKLXN0cnVjdCBub25fc2VxdWVuY2VfdGFnOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxdWVuY2UgPiBzdHJ1Y3Qgc2VxdWVuY2VfdGFnOwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1NFUVVFTkNFX1RBR19GV0RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9zaXplLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3NpemUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTE1NDliLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3NpemUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9TSVpFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfU0laRV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHNpemUuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvc2l6ZV9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9zZXF1ZW5jZV90YWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3NpemVfaW1wbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL21zdmNfZXRpX2Jhc2UuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFNlcXVlbmNlKQotICAgID4KLXN0cnVjdCBzaXplCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8Ci0gICAgICAgIHR5cGVuYW1lIHNpemVfaW1wbDwgdHlwZW5hbWUgc2VxdWVuY2VfdGFnPFNlcXVlbmNlPjo6dHlwZSA+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIGFwcGx5PCBTZXF1ZW5jZSA+Ojp0eXBlCi0gICAgICA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLCBzaXplLCAoU2VxdWVuY2UpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDEsIHNpemUpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfU0laRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3NpemVfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3NpemVfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWQ5NDhhMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9zaXplX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1NJWkVfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfU0laRV9GV0RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBzaXplX2Z3ZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgc2l6ZV9pbXBsOwotdGVtcGxhdGU8IHR5cGVuYW1lIFNlcXVlbmNlID4gc3RydWN0IHNpemU7Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfU0laRV9GV0RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9zaXplX3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvc2l6ZV90LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmM4NjY5OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9zaXplX3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9TSVpFX1RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9TSVpFX1RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBzaXplX3QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvc2l6ZV90X2Z3ZC5ocHA+Ci0KLSNkZWZpbmUgQVVYX1dSQVBQRVJfVkFMVUVfVFlQRSBzdGQ6OnNpemVfdAotI2RlZmluZSBBVVhfV1JBUFBFUl9OQU1FIHNpemVfdAotI2RlZmluZSBBVVhfV1JBUFBFUl9QQVJBTVMoTikgc3RkOjpzaXplX3QgTgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaW50ZWdyYWxfd3JhcHBlci5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfU0laRV9UX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvc2l6ZV90X2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9zaXplX3RfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmFkYzk4MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9zaXplX3RfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfU0laRV9UX0ZXRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1NJWkVfVF9GV0RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBzaXplX3RfZndkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vYWRsX2JhcnJpZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+IC8vIG1ha2Ugc3VyZSAnc2l6ZV90JyBpcyBwbGFjZWQgaW50byAnc3RkJwotI2luY2x1ZGUgPGNzdGRkZWY+Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLQotdGVtcGxhdGU8IHN0ZDo6c2l6ZV90IE4gPiBzdHJ1Y3Qgc2l6ZV90OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9ERUNMKHNpemVfdCkKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9TSVpFX1RfRldEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdGFnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3RhZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlZWQ2OTguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdGFnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVEFHX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfVEFHX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHRhZy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ldmFsX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdm9pZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaGFzX3RhZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2V0aS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHRhZ19pbXBsCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci19Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBEZWZhdWx0ID0gdm9pZF8gPiBzdHJ1Y3QgdGFnCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19NU1ZDX0VUSV9CVUcpCi0gICAgOiBpZl88IAotICAgICAgICAgIGF1eDo6aGFzX3RhZzxUPgotICAgICAgICAsIGF1eDo6dGFnX2ltcGw8VD4KLSAgICAgICAgLCBEZWZhdWx0Ci0gICAgICAgID46OnR5cGUKLXsKLSNlbHNlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBldmFsX2lmPCAKLSAgICAgICAgICBhdXg6Omhhc190YWc8VD4KLSAgICAgICAgLCBhdXg6OnRhZ19pbXBsPFQ+Ci0gICAgICAgICwgRGVmYXVsdAotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSNlbmRpZgotfTsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9UQUdfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC90aW1lcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC90aW1lcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2ZmE3MDIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdGltZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9USU1FU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1RJTUVTX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogdGltZXMuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNkZWZpbmUgQVVYNzc4MDc2X09QX05BTUUgdGltZXMKLSNkZWZpbmUgQVVYNzc4MDc2X09QX1RPS0VOICoKLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9hcml0aG1ldGljX29wLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9USU1FU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDkyZjIyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1ZFQ1RPUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1ZFQ1RPUl9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHZlY3Rvci5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpbWl0cy92ZWN0b3IuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvcHJlcHJvY2Vzc29yLmhwcD4KLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pbmMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zdHJpbmdpemUuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTkVFRFNfVE9LRU5fUEFTVElOR19PUF9GT1JfVE9LRU5TX0pVWFRBUE9TSU5HKQotIyAgIGRlZmluZSBBVVg3NzgwNzZfVkVDVE9SX0hFQURFUiBcCi0gICAgTkROQk9PU1RfUFBfQ0FUKHZlY3RvciwgTkROQk9PU1RfTVBMX0xJTUlUX1ZFQ1RPUl9TSVpFKS5ocHAgXAotICAgIC8qKi8KLSNlbHNlCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9WRUNUT1JfSEVBREVSIFwKLSAgICBORE5CT09TVF9QUF9DQVQodmVjdG9yLCBORE5CT09TVF9NUExfTElNSVRfVkVDVE9SX1NJWkUpIyMuaHBwIFwKLSAgICAvKiovCi0jZW5kaWYKLQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfU1RSSU5HSVpFKG5kbmJvb3N0L21wbC92ZWN0b3IvQVVYNzc4MDc2X1ZFQ1RPUl9IRUFERVIpCi0jICAgdW5kZWYgQVVYNzc4MDc2X1ZFQ1RPUl9IRUFERVIKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgdmVjdG9yLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saW1pdHMvdmVjdG9yLmhwcD4KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfU0VRVUVOQ0VfTkFNRSB2ZWN0b3IKLSMgICBkZWZpbmUgQVVYNzc4MDc2X1NFUVVFTkNFX0xJTUlUIE5ETkJPT1NUX01QTF9MSU1JVF9WRUNUT1JfU0laRQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3NlcXVlbmNlX3dyYXBwZXIuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9WRUNUT1JfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9PMV9zaXplLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL08xX3NpemUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MGIwZjg4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL08xX3NpemUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX08xX1NJWkVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX08xX1NJWkVfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBPMV9zaXplLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL08xX3NpemVfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbWludXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9sb25nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vdGFnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHlwZW9mLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMpCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IFZlY3Rvcjo6c2l6ZQotICAgIHsKLSAgICB9OwotfTsKLQotI2Vsc2UKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPE4+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbXBsOjpsb25nXzxOPgotICAgIHsKLSAgICB9OwotfTsKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfTzFfU0laRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2F0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2F0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjUwNzc0My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9hdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTYgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX0FUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9BVF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGF0LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F0X2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3RhZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xvbmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92b2lkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9udHRwX2RlY2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3R5cGVfd3JhcHBlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdmFsdWVfd2tuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R5cGVvZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTKQotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCBsb25nIG5fID4KLXN0cnVjdCB2X2F0X2ltcGwKLXsKLSAgICB0eXBlZGVmIGxvbmdfPCAoVmVjdG9yOjpsb3dlcl9ib3VuZF86OnZhbHVlICsgbl8pID4gaW5kZXhfOwotICAgIHR5cGVkZWYgX190eXBlb2ZfXyggVmVjdG9yOjppdGVtXyhpbmRleF8oKSkgKSB0eXBlOwotfTsKLQotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCBsb25nIG5fID4KLXN0cnVjdCB2X2F0Ci0gICAgOiBhdXg6OndyYXBwZWRfdHlwZTwgdHlwZW5hbWUgdl9hdF9pbXBsPFZlY3RvcixuXz46OnR5cGUgPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IHZfYXQ8Ci0gICAgICAgICAgICAgIFZlY3RvcgotICAgICAgICAgICAgLCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi0jZWxzZQotCi0jICAgaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fTk9OVFlQRV9URU1QTEFURV9QQVJUSUFMX1NQRUMpCi0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGxvbmcsIG5fKSA+IHN0cnVjdCB2X2F0OwotCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0wobG9uZywgbl8pID4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8bl8+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0jaWYgIWRlZmluZWQoX19CT1JMQU5EQ19fKQotICAgICAgICA6IHZfYXQ8Ci0gICAgICAgICAgICAgIFZlY3RvcgotICAgICAgICAgICAgLCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlCi0gICAgICAgICAgICA+Ci0gICAgewotI2Vsc2UKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdl9hdDwKLSAgICAgICAgICAgICAgVmVjdG9yCi0gICAgICAgICAgICAsIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSNlbmRpZgotICAgIH07Ci19OwotCi0jICAgZWxzZQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGxvbmcsIG5fKSA+IHN0cnVjdCB2X2F0X2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgViA+IHN0cnVjdCByZXN1bHRfOwotfTsKLQotLy8gdG8gd29yayBhcm91bmQgRVRJLCBldGMuCi10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8LTE+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFYgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2b2lkXyB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGxvbmcsIG5fKSA+Ci1zdHJ1Y3Qgdl9hdAotICAgIDogYXV4Ojp2X2F0X2ltcGw8bl8+Ojp0ZW1wbGF0ZSByZXN1bHRfPFQ+Ci17Ci19OwotCi0jICAgZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9BVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2JhY2suaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vYmFjay5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3OTQ2YWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vYmFjay5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfQkFDS19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfQkFDS19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGJhY2suaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYmFja19md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9uZXh0X3ByaW9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy90YWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90eXBlb2YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUykKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogdl9hdDwKLSAgICAgICAgICAgICAgVmVjdG9yCi0gICAgICAgICAgICAsIHByaW9yPHR5cGVuYW1lIFZlY3Rvcjo6c2l6ZT46OnR5cGU6OnZhbHVlCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi0jZWxzZQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLQotdGVtcGxhdGU8IGxvbmcgbl8gPgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPG5fPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfQkFDS19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2JlZ2luX2VuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9iZWdpbl9lbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjRkMDY4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2JlZ2luX2VuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfQkVHSU5fRU5EX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9CRUdJTl9FTkRfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBiZWdpbl9lbmQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHlwZW9mLmhwcD4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTKQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2JlZ2luX2VuZF9md2QuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9pdGVyYXRvci5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3RhZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmVnaW5faW1wbDwgYXV4Ojp2ZWN0b3JfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZfaXRlcjxWZWN0b3IsMD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVuZF9pbXBsPCBhdXg6OnZlY3Rvcl90YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdl9pdGVyPFZlY3RvcixWZWN0b3I6OnNpemU6OnZhbHVlPiB0eXBlOwotICAgIH07Ci19OwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9CRUdJTl9FTkRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9jbGVhci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9jbGVhci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiYmM3OGMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vY2xlYXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX0NMRUFSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9DTEVBUl9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGNsZWFyLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2NsZWFyX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ZlY3RvcjAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy90YWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90eXBlb2YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUykKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotI2Vsc2UKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzxOPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfQ0xFQVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9lbXB0eS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9lbXB0eS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxNzc5ZTMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vZW1wdHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX0VNUFRZX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9FTVBUWV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGVtcHR5LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2VtcHR5X2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy90YWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90eXBlb2YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUykKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGlzX3NhbWU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6bG93ZXJfYm91bmRfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6dXBwZXJfYm91bmRfCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi0jZWxzZQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogdHJ1ZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Tj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX0VNUFRZX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vZnJvbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vZnJvbnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMDFiNGFlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2Zyb250LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9GUk9OVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfRlJPTlRfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwOAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBmcm9udC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9mcm9udF9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9hdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3RhZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbnR0cF9kZWNsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHlwZW9mLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMpCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiB2X2F0PFZlY3RvciwwPgotICAgIHsKLSAgICB9OwotfTsKLQotI2Vsc2UKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLXRlbXBsYXRlPCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChsb25nLCBuXykgPgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzxuXz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9GUk9OVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzQyNzBkYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0KLS8vIE5PIElOQ0xVREUgR1VBUkRTLCBUSEUgSEVBREVSIElTIElOVEVOREVEIEZPUiBNVUxUSVBMRSBJTkNMVVNJT04KLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA2Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGluY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R5cGVvZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9wcmVwcm9jZXNzb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zdHJpbmdpemUuaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMpCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9JTkNMVURFX0RJUiB0eXBlb2ZfYmFzZWQKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgXAotICAgfHwgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX05PTlRZUEVfVEVNUExBVEVfUEFSVElBTF9TUEVDKQotIyAgIGRlZmluZSBBVVg3NzgwNzZfSU5DTFVERV9ESVIgbm9fY3RwcwotI2Vsc2UKLSMgICBkZWZpbmUgQVVYNzc4MDc2X0lOQ0xVREVfRElSIHBsYWluCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05FRURTX1RPS0VOX1BBU1RJTkdfT1BfRk9SX1RPS0VOU19KVVhUQVBPU0lORykKLSMgICBkZWZpbmUgQVVYNzc4MDc2X0hFQURFUiBcCi0gICAgQVVYNzc4MDc2X0lOQ0xVREVfRElSL05ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIFwKLS8qKi8KLSNlbHNlCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9IRUFERVIgXAotICAgIE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfSU5DTFVERV9ESVIsLykjI05ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIFwKLS8qKi8KLSNlbmRpZgotCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fSUJNQ1BQX18sIE5ETkJPT1NUX1RFU1RFRF9BVCg3MDApKQotIyAgIGRlZmluZSBBVVg3NzgwNzZfSU5DTFVERV9TVFJJTkcgTkROQk9PU1RfUFBfU1RSSU5HSVpFKG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvQVVYNzc4MDc2X0hFQURFUikKLSMgICBpbmNsdWRlIEFVWDc3ODA3Nl9JTkNMVURFX1NUUklORwotIyAgIHVuZGVmIEFVWDc3ODA3Nl9JTkNMVURFX1NUUklORwotI2Vsc2UKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX1NUUklOR0laRShuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL0FVWDc3ODA3Nl9IRUFERVIpCi0jZW5kaWYKLQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9IRUFERVIKLSMgICB1bmRlZiBBVVg3NzgwNzZfSU5DTFVERV9ESVIKLQotI3VuZGVmIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9pdGVtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2l0ZW0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODU4YWEwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2l0ZW0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9JVEVNX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9JVEVNX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogaXRlbS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9sb25nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdm9pZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL25leHRfcHJpb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3R5cGVfd3JhcHBlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R5cGVvZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTKQotCi10ZW1wbGF0ZTwgCi0gICAgICB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBCYXNlCi0gICAgLCBpbnQgYXRfZnJvbnQgPSAwCi0gICAgPgotc3RydWN0IHZfaXRlbQotICAgIDogQmFzZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgQmFzZTo6dXBwZXJfYm91bmRfIGluZGV4XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aW5kZXhfPjo6dHlwZSB1cHBlcl9ib3VuZF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PHR5cGVuYW1lIEJhc2U6OnNpemU+Ojp0eXBlIHNpemU7Ci0gICAgdHlwZWRlZiBCYXNlIGJhc2U7Ci0gICAgdHlwZWRlZiB2X2l0ZW0gdHlwZTsKLQotICAgIC8vIGFndXJ0IDEwL3NlcC8wNDogTVdDVyA8PSA5LjMgd29ya2Fyb3VuZCBoZXJlIGFuZCBiZWxvdzsgdGhlIGNvbXBpbGVyCi0gICAgLy8gYnJlYWtzIGlmIHVzaW5nIGRlY2xhcmF0aW9uIGNvbWVzIF9iZWZvcmVfIHRoZSBuZXcgb3ZlcmxvYWQKLSAgICBzdGF0aWMgYXV4Ojp0eXBlX3dyYXBwZXI8VD4gaXRlbV8oaW5kZXhfKTsKLSAgICB1c2luZyBCYXNlOjppdGVtXzsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgdHlwZW5hbWUgQmFzZQotICAgID4KLXN0cnVjdCB2X2l0ZW08VCxCYXNlLDE+Ci0gICAgOiBCYXNlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjx0eXBlbmFtZSBCYXNlOjpsb3dlcl9ib3VuZF8+Ojp0eXBlIGluZGV4XzsKLSAgICB0eXBlZGVmIGluZGV4XyBsb3dlcl9ib3VuZF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PHR5cGVuYW1lIEJhc2U6OnNpemU+Ojp0eXBlIHNpemU7Ci0gICAgdHlwZWRlZiBCYXNlIGJhc2U7Ci0gICAgdHlwZWRlZiB2X2l0ZW0gdHlwZTsKLQotICAgIHN0YXRpYyBhdXg6OnR5cGVfd3JhcHBlcjxUPiBpdGVtXyhpbmRleF8pOwotICAgIHVzaW5nIEJhc2U6Oml0ZW1fOwotfTsKLQotLy8gImVyYXN1cmUiIGl0ZW0KLXRlbXBsYXRlPCAKLSAgICAgIHR5cGVuYW1lIEJhc2UKLSAgICAsIGludCBhdF9mcm9udAotICAgID4KLXN0cnVjdCB2X21hc2sKLSAgICA6IEJhc2UKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPHR5cGVuYW1lIEJhc2U6OnVwcGVyX2JvdW5kXz46OnR5cGUgaW5kZXhfOwotICAgIHR5cGVkZWYgaW5kZXhfIHVwcGVyX2JvdW5kXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPHR5cGVuYW1lIEJhc2U6OnNpemU+Ojp0eXBlIHNpemU7Ci0gICAgdHlwZWRlZiBCYXNlIGJhc2U7Ci0gICAgdHlwZWRlZiB2X21hc2sgdHlwZTsKLQotICAgIHN0YXRpYyBhdXg6OnR5cGVfd3JhcHBlcjx2b2lkXz4gaXRlbV8oaW5kZXhfKTsKLSAgICB1c2luZyBCYXNlOjppdGVtXzsKLX07Ci0KLXRlbXBsYXRlPCAKLSAgICAgIHR5cGVuYW1lIEJhc2UKLSAgICA+Ci1zdHJ1Y3Qgdl9tYXNrPEJhc2UsMT4KLSAgICA6IEJhc2UKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEJhc2U6Omxvd2VyX2JvdW5kXyBpbmRleF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGluZGV4Xz46OnR5cGUgbG93ZXJfYm91bmRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8dHlwZW5hbWUgQmFzZTo6c2l6ZT46OnR5cGUgc2l6ZTsKLSAgICB0eXBlZGVmIEJhc2UgYmFzZTsKLSAgICB0eXBlZGVmIHZfbWFzayB0eXBlOwotCi0gICAgc3RhdGljIGF1eDo6dHlwZV93cmFwcGVyPHZvaWRfPiBpdGVtXyhpbmRleF8pOwotICAgIHVzaW5nIEJhc2U6Oml0ZW1fOwotfTsKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfSVRFTV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2l0ZXJhdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2l0ZXJhdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzk5ZDBlNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9pdGVyYXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzAgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfVkVDVE9SX0lURVJBVE9SX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX1ZFQ1RPUl9JVEVSQVRPUl9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGl0ZXJhdG9yLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2F0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaXRlcmF0b3JfdGFncy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3BsdXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9taW51cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FkdmFuY2VfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZGlzdGFuY2VfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbmV4dC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ByaW9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9udHRwX2RlY2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ZhbHVlX3drbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFZlY3RvcgotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0wobG9uZywgbl8pCi0gICAgPgotc3RydWN0IHZfaXRlcgotewotICAgIHR5cGVkZWYgYXV4Ojp2X2l0ZXJfdGFnIHRhZzsKLSAgICB0eXBlZGVmIHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnIGNhdGVnb3J5OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgdl9hdDxWZWN0b3Isbl8+Ojp0eXBlIHR5cGU7Ci0KLSAgICB0eXBlZGVmIFZlY3RvciB2ZWN0b3JfOwotICAgIHR5cGVkZWYgbXBsOjpsb25nXzxuXz4gcG9zOwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotICAgIGVudW0geyAKLSAgICAgICAgICBuZXh0XyA9IG5fICsgMQotICAgICAgICAsIHByaW9yXyA9IG5fIC0gMQotICAgICAgICAsIHBvc18gPSBuXwotICAgIH07Ci0gICAgCi0gICAgdHlwZWRlZiB2X2l0ZXI8VmVjdG9yLG5leHRfPiBuZXh0OwotICAgIHR5cGVkZWYgdl9pdGVyPFZlY3Rvcixwcmlvcl8+IHByaW9yOwotI2VuZGlmCi0KLX07Ci0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVmVjdG9yCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChsb25nLCBuXykKLSAgICA+Ci1zdHJ1Y3QgbmV4dDwgdl9pdGVyPFZlY3RvcixuXz4gPgotewotICAgIHR5cGVkZWYgdl9pdGVyPFZlY3Rvciwobl8gKyAxKT4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVmVjdG9yCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChsb25nLCBuXykKLSAgICA+Ci1zdHJ1Y3QgcHJpb3I8IHZfaXRlcjxWZWN0b3Isbl8+ID4KLXsKLSAgICB0eXBlZGVmIHZfaXRlcjxWZWN0b3IsKG5fIC0gMSk+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFZlY3RvcgotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0wobG9uZywgbl8pCi0gICAgLCB0eXBlbmFtZSBEaXN0YW5jZQotICAgID4KLXN0cnVjdCBhZHZhbmNlPCB2X2l0ZXI8VmVjdG9yLG5fPixEaXN0YW5jZT4KLXsKLSAgICB0eXBlZGVmIHZfaXRlcjwKLSAgICAgICAgICBWZWN0b3IKLSAgICAgICAgLCAobl8gKyBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGxvbmcsIERpc3RhbmNlKSkKLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8IAotICAgICAgdHlwZW5hbWUgVmVjdG9yCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChsb25nLCBuXykKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGxvbmcsIG1fKQotICAgID4gCi1zdHJ1Y3QgZGlzdGFuY2U8IHZfaXRlcjxWZWN0b3Isbl8+LCB2X2l0ZXI8VmVjdG9yLG1fPiA+Ci0gICAgOiBtcGw6OmxvbmdfPChtXyAtIG5fKT4KLXsKLX07Ci0KLSNlbHNlIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYWR2YW5jZV9pbXBsPGF1eDo6dl9pdGVyX3RhZz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIGVudW0geyBwb3NfID0gSXRlcmF0b3I6OnBvc18sIG5fID0gTjo6dmFsdWUgfTsKLSAgICAgICAgdHlwZWRlZiB2X2l0ZXI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yOjp2ZWN0b3JfCi0gICAgICAgICAgICAsIChwb3NfICsgbl8pCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGRpc3RhbmNlX2ltcGw8YXV4Ojp2X2l0ZXJfdGFnPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyMSwgdHlwZW5hbWUgSXRlcjIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIGVudW0geyBwb3MxXyA9IEl0ZXIxOjpwb3NfLCBwb3MyXyA9IEl0ZXIyOjpwb3NfIH07Ci0gICAgICAgIHR5cGVkZWYgbG9uZ188KCBwb3MyXyAtIHBvczFfICk+IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChsb25nLCB2YWx1ZSA9ICggcG9zMl8gLSBwb3MxXyApKTsKLSAgICB9OwotfTsKLQotI2VuZGlmCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX1ZFQ1RPUl9JVEVSQVRPUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL251bWJlcmVkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL251bWJlcmVkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDI1NmUzMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9udW1iZXJlZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMTggKzAsMCBAQAotCi0vLyBOTyBJTkNMVURFIEdVQVJEUywgVEhFIEhFQURFUiBJUyBJTlRFTkRFRCBGT1IgTVVMVElQTEUgSU5DTFVTSU9OCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1BQX0lTX0lURVJBVElORykKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IG51bWJlcmVkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VudW1fcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZW51bV9zaGlmdGVkX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbW1hX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZWF0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLQotI2RlZmluZSBpXyBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTKQotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9WRUNUT1JfVEFJTCh2ZWN0b3IsIGlfLCBUKSBcCi0gICAgTkROQk9PU1RfUFBfQ0FUKHZlY3RvcixpXyk8IFwKLSAgICAgICAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhpXywgVCkgXAotICAgICAgICA+IFwKLSAgICAvKiovCi0KLSNpZiBpXyA+IDAKLXRlbXBsYXRlPAotICAgICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoaV8sIHR5cGVuYW1lIFQpCi0gICAgPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVCh2ZWN0b3IsaV8pCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgTkROQk9PU1RfUFBfQ0FUKFQsTkROQk9PU1RfUFBfREVDKGlfKSkKLSAgICAgICAgLCBBVVg3NzgwNzZfVkVDVE9SX1RBSUwodmVjdG9yLE5ETkJPT1NUX1BQX0RFQyhpXyksVCkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKHZlY3RvcixpXykgdHlwZTsKLX07Ci0jZW5kaWYKLQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9WRUNUT1JfVEFJTAotCi0jZWxzZSAvLyAiYnJ1dGUgZm9yY2UiIGltcGxlbWVudGF0aW9uCi0KLSMgICBpZiBpXyA+IDAKLQotdGVtcGxhdGU8Ci0gICAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhpXywgdHlwZW5hbWUgVCkKLSAgICA+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKHZlY3RvcixpXykKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzxpXz4gdGFnOwotICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKHZlY3RvcixpXykgdHlwZTsKLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfVkVDVE9SX0lURU0odW51c2VkLCBpXywgdW51c2VkMikgXAotICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKFQsaV8pIE5ETkJPT1NUX1BQX0NBVChpdGVtLGlfKTsgXAotICAgIC8qKi8KLQotICAgIE5ETkJPT1NUX1BQX1JFUEVBVChpXywgQVVYNzc4MDc2X1ZFQ1RPUl9JVEVNLCB1bnVzZWQpCi0jICAgdW5kZWYgQVVYNzc4MDc2X1ZFQ1RPUl9JVEVNCi0gICAgdHlwZWRlZiB2b2lkXyBORE5CT09TVF9QUF9DQVQoaXRlbSxpXyk7Ci0gICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQoVCxORE5CT09TVF9QUF9ERUMoaV8pKSBiYWNrOwotCi0gICAgLy8gQm9ybGFuZCBmb3JjZXMgdXMgdG8gdXNlICd0eXBlJyBoZXJlIChpbnN0ZWFkIG9mIHRoZSBjbGFzcyBuYW1lKQotICAgIHR5cGVkZWYgdl9pdGVyPHR5cGUsMD4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8dHlwZSxpXz4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPE5ETkJPT1NUX1BQX0RFQyhpXyk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVCh2ZWN0b3IsaV8pPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0RFQyhpXykpCi0gICAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0RFQyhpXyksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbSkKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8aV8+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVCh2ZWN0b3IsTkROQk9PU1RfUFBfREVDKGlfKSk8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fU0hJRlRFRF9QQVJBTVMoaV8sIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbSkKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzxORE5CT09TVF9QUF9ERUMoaV8pPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQodmVjdG9yLGlfKTwKLSAgICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfREVDKGlfKSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtKQotICAgICAgICAgICAgICBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9ERUMoaV8pKQotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8aV8+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVCh2ZWN0b3IsTkROQk9PU1RfUFBfREVDKGlfKSk8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0RFQyhpXyksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbSkKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotIyAgIGVuZGlmIC8vIGlfID4gMAotCi0jICAgaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fTk9OVFlQRV9URU1QTEFURV9QQVJUSUFMX1NQRUMpCi0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PFYsaV8+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjpORE5CT09TVF9QUF9DQVQoaXRlbSxpXykgdHlwZTsKLX07Ci0KLSMgICBlbHNlCi0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPGlfPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjpORE5CT09TVF9QUF9DQVQoaXRlbSxpXykgdHlwZTsKLSAgICB9OwotfTsKLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzxpXz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi0jaWYgaV8gPiAwCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPGlfPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzxpXz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8aV8+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotI2VuZGlmCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzxpXz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzxpXz4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzxpXz4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8aV8+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8aV8+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi0jICAgZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTCi0KLSN1bmRlZiBpXwotCi0jZW5kaWYgLy8gTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9udW1iZXJlZF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL251bWJlcmVkX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOWZkOTA0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL251bWJlcmVkX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotCi0vLyBOTyBJTkNMVURFIEdVQVJEUywgVEhFIEhFQURFUiBJUyBJTlRFTkRFRCBGT1IgTVVMVElQTEUgSU5DTFVTSU9OCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1BQX0lTX0lURVJBVElORykKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IG51bWJlcmVkX2MuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZW51bV9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtX3NoaWZ0ZWRfcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29tbWFfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBlYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotCi0jZGVmaW5lIGlfIE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigxKQotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMpCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X1ZFQ1RPUl9UQUlMKHZlY3RvciwgaV8sIEMpIFwKLSAgICBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfQ0FUKHZlY3RvcixpXyksX2MpPFQgXAotICAgICAgICAgIE5ETkJPT1NUX1BQX0NPTU1BX0lGKGlfKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhpXywgQykgXAotICAgICAgICA+IFwKLSAgICAvKiovCi0KLSNpZiBpXyA+IDAKLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoaV8sIFQgQykKLSAgICA+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0NBVCh2ZWN0b3IsaV8pLF9jKQotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8VCxORE5CT09TVF9QUF9DQVQoQyxORE5CT09TVF9QUF9ERUMoaV8pKT4KLSAgICAgICAgLCBBVVg3NzgwNzZfVkVDVE9SX1RBSUwodmVjdG9yLE5ETkJPT1NUX1BQX0RFQyhpXyksQykKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0NBVCh2ZWN0b3IsaV8pLF9jKSB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLSNlbmRpZgotCi0jICAgdW5kZWYgQVVYNzc4MDc2X1ZFQ1RPUl9UQUlMCi0KLSNlbHNlIC8vICJicnV0ZSBmb3JjZSIgaW1wbGVtZW50YXRpb24KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfVkVDVE9SX0NfUEFSQU1fRlVOQyh1bnVzZWQsIGlfLCBwYXJhbSkgXAotICAgIE5ETkJPT1NUX1BQX0NPTU1BX0lGKGlfKSBcCi0gICAgaW50ZWdyYWxfYzxULE5ETkJPT1NUX1BQX0NBVChwYXJhbSxpXyk+IFwKLSAgICAvKiovCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoaV8sIFQgQykKLSAgICA+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0NBVCh2ZWN0b3IsaV8pLF9jKQotICAgIDogTkROQk9PU1RfUFBfQ0FUKHZlY3RvcixpXyk8IE5ETkJPT1NUX1BQX1JFUEVBVChpXyxBVVg3NzgwNzZfVkVDVE9SX0NfUEFSQU1fRlVOQyxDKSA+Ci17Ci0gICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfQ0FUKHZlY3RvcixpXyksX2MpIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi0jICAgdW5kZWYgQVVYNzc4MDc2X1ZFQ1RPUl9DX1BBUkFNX0ZVTkMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUwotCi0jdW5kZWYgaV8KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcG9wX2JhY2suaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcG9wX2JhY2suaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjYwM2FhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3BvcF9iYWNrLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9QT1BfQkFDS19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfUE9QX0JBQ0tfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBwb3BfYmFjay5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9wb3BfYmFja19md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90eXBlb2YuaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMpCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vaXRlbS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3RhZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZfbWFzazxWZWN0b3IsMD4gdHlwZTsKLSAgICB9OwotfTsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfUE9QX0JBQ0tfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wb3BfZnJvbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcG9wX2Zyb250LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDk3YjU0MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wb3BfZnJvbnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX1BPUF9GUk9OVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfUE9QX0ZST05UX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogcG9wX2Zyb250LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3BvcF9mcm9udF9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90eXBlb2YuaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMpCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vaXRlbS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3RhZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2X21hc2s8VmVjdG9yLDE+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX1BPUF9GUk9OVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3RvcjEwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3RvcjEwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWY5YWU3Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3IxMC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTI4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IxMC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8MD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188MD4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwwPiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwwPiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IHZlY3RvcjEKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwxPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IxIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0xOwotICAgIHR5cGVkZWYgVDAgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8Ci0gICAgICAgICAgICAgCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE8Ci0gICAgICAgICAgICAgCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPAotICAgICAgICAgICAgIAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwxPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMSB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwxPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IHZlY3RvcjIKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwyPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IyIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMjsKLSAgICB0eXBlZGVmIFQxIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDIgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTIgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188Mj4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyPiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyPiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMwotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDM+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjMgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTM7Ci0gICAgdHlwZWRlZiBUMiBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwzID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDM+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0zIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDM+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mz4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mz4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCB2ZWN0b3I0Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8ND4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNCB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW00OwotICAgIHR5cGVkZWYgVDMgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsNCA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDQ+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW00IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDQ+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8ND4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8ND4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNQotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDU+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjUgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW01OwotICAgIHR5cGVkZWYgVDQgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsNSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I1PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDU+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW01IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDU+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NT4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NT4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IHZlY3RvcjYKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw2PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I2IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW02OwotICAgIHR5cGVkZWYgVDUgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsNiA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I2PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8Nj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTYgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188Nj4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw2PiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw2PiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IHZlY3RvcjcKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw3PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I3IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTc7Ci0gICAgdHlwZWRlZiBUNiBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw3ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3Rvcjc8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I2PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I3PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I2PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDw3PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtNyB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzw3PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDc+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDc+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IHZlY3RvcjgKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw4PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I4IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtODsKLSAgICB0eXBlZGVmIFQ3IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDggPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yODwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I4PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3Rvcjc8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8OD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTggdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188OD4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw4PiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw4PiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yOQotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDk+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjkgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTk7Ci0gICAgdHlwZWRlZiBUOCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw5ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3Rvcjk8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3Rvcjg8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yOTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I4PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDk+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW05IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDk+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OT4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OT4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCB2ZWN0b3IxMAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDEwPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IxMCB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQ5IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDEwID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjEwPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I5PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yOTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDEwPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMTAgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwxMD4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMD4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTA+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yMTBfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3IxMF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDI1YzkzZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3IxMF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMTBfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwCi0gICAgPgotc3RydWN0IHZlY3RvcjFfYwotICAgIDogdmVjdG9yMTwgaW50ZWdyYWxfYzwgVCxDMCA+ID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjFfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxCi0gICAgPgotc3RydWN0IHZlY3RvcjJfYwotICAgIDogdmVjdG9yMjwgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yM19jCi0gICAgOiB2ZWN0b3IzPCBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+ID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjNfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzCi0gICAgPgotc3RydWN0IHZlY3RvcjRfYwotICAgIDogdmVjdG9yNDwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+LCBpbnRlZ3JhbF9jPFQKLSAgICAgICAgLCBDMz4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yNF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNV9jCi0gICAgOiB2ZWN0b3I1PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I1X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNQotICAgID4KLXN0cnVjdCB2ZWN0b3I2X2MKLSAgICA6IHZlY3RvcjY8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yNl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yN19jCi0gICAgOiB2ZWN0b3I3PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPFQKLSAgICAgICAgLCBDNj4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yN19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yOF9jCi0gICAgOiB2ZWN0b3I4PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yOF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yOV9jCi0gICAgOiB2ZWN0b3I5PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I5X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOQotICAgID4KLXN0cnVjdCB2ZWN0b3IxMF9jCi0gICAgOiB2ZWN0b3IxMDwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxMF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yMjAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yMjAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZmI2ZDdkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3RvcjIwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4MDQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjIwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTEKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwxMT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMTEgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTExOwotICAgIHR5cGVkZWYgVDEwIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDExID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxMTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjExPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjEwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8MTE+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0xMSB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDExPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDExPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDExPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDExPiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMT4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IHZlY3RvcjEyCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MTI+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjEyIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTEgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMTIgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjEyPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwxMj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTEyIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188MTI+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTI+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEyPiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCB2ZWN0b3IxMwotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDEzPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IxMyB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxMiBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwxMyA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTM8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjEzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwxMz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTEzIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188MTM+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTM+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEzPiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IHZlY3RvcjE0Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MTQ+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjE0IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxMyBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwxNCA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTQ8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwxND4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTE0IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188MTQ+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTQ+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE0PiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTUKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwxNT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMTUgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwxNSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTU8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8MTU+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0xNSB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDE1PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE1PiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNT4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTYKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwxNj4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMTYgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTUgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMTYgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE2PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE2PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDE2PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMTYgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwxNj4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNj4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTY+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTcKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwxNz4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMTcgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTE3OwotICAgIHR5cGVkZWYgVDE2IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDE3ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNzwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE3PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE2PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8MTc+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0xNyB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDE3PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE3PiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNz4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IHZlY3RvcjE4Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MTg+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjE4IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTcgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMTggPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE4PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTg8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTc8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwxOD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTE4IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188MTg+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTg+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE4PiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCB2ZWN0b3IxOQotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDE5PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IxOSB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQxOCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwxOSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTk8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE5PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwxOT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTE5IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188MTk+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTk+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE5PiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IHZlY3RvcjIwCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MjA+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjIwIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQxOSBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwyMCA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjA8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxOTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjIwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxOTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwyMD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTIwIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188MjA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjA+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIwPiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3RvcjIwX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yMjBfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4MTRjY2IuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yMjBfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOTUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjIwX2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTFfYwotICAgIDogdmVjdG9yMTE8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4sIGludGVncmFsX2M8VAotICAgICAgICAsIEMxMD4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTFfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTJfYwotICAgIDogdmVjdG9yMTI8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjEyX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMgotICAgID4KLXN0cnVjdCB2ZWN0b3IxM19jCi0gICAgOiB2ZWN0b3IxMzwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTNfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMwotICAgID4KLXN0cnVjdCB2ZWN0b3IxNF9jCi0gICAgOiB2ZWN0b3IxNDwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4sIGludGVncmFsX2M8VAotICAgICAgICAsIEMxMz4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTRfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTVfYwotICAgIDogdmVjdG9yMTU8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxNV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTZfYwotICAgIDogdmVjdG9yMTY8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxNl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2Ci0gICAgPgotc3RydWN0IHZlY3RvcjE3X2MKLSAgICA6IHZlY3RvcjE3PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4sIGludGVncmFsX2M8VAotICAgICAgICAsIEMxNj4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTdfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMThfYwotICAgIDogdmVjdG9yMTg8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMThfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4Ci0gICAgPgotc3RydWN0IHZlY3RvcjE5X2MKLSAgICA6IHZlY3RvcjE5PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjE5X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjBfYwotICAgIDogdmVjdG9yMjA8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4sIGludGVncmFsX2M8VAotICAgICAgICAsIEMxOT4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjBfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3RvcjMwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3RvcjMwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDA3MDVmNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3IzMC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMTI0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IzMC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjEKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwyMT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMjEgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwyMSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjE8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8MjE+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0yMSB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDIxPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIxPiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMT4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjIKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwyMj4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMjIgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjEgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMjIgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjIyPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjIxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjIyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDIyPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMjIgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwyMj4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMj4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjI+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjMKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwyMz4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMjMgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTIzOwotICAgIHR5cGVkZWYgVDIyIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDIzID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMzwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjIzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjIyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8MjM+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0yMyB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDIzPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIzPiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMz4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzCi0gICAgPgotc3RydWN0IHZlY3RvcjI0Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MjQ+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjI0IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjMgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMjQgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI0PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwyND4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTI0IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188MjQ+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjQ+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI0PiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgID4KLXN0cnVjdCB2ZWN0b3IyNQotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDI1PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IyNSB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwyNSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjU8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwyNT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTI1IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188MjU+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjU+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI1PiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1Ci0gICAgPgotc3RydWN0IHZlY3RvcjI2Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MjY+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjI2IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNSBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwyNiA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjY8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI2PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwyNj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTI2IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188MjY+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjY+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI2PiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjcKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwyNz4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMjcgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyNiBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwyNyA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjc8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjc8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyNjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8Mjc+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0yNyB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDI3PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI3PiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNz4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjgKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwyOD4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMjggdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjcgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMjggPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI4PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI3PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI4PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjc8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDI4PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMjggdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwyOD4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyOD4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjg+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjkKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwyOT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMjkgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTI5OwotICAgIHR5cGVkZWYgVDI4IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDI5ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyOTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjg8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI5PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI4PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8Mjk+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0yOSB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDI5PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI5PiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyOT4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgPgotc3RydWN0IHZlY3RvcjMwCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MzA+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjMwIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMjkgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMzAgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjMwPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyOTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwzMD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTMwIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188MzA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzA+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMwPiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3RvcjMwX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yMzBfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiMTA0NDQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yMzBfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMzggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjMwX2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgPgotc3RydWN0IHZlY3RvcjIxX2MKLSAgICA6IHZlY3RvcjIxPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyMV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjJfYwotICAgIDogdmVjdG9yMjI8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjIyX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjNfYwotICAgIDogdmVjdG9yMjM8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+LCBpbnRlZ3JhbF9jPFQKLSAgICAgICAgLCBDMjI+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjIzX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzCi0gICAgPgotc3RydWN0IHZlY3RvcjI0X2MKLSAgICA6IHZlY3RvcjI0PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjRfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0Ci0gICAgPgotc3RydWN0IHZlY3RvcjI1X2MKLSAgICA6IHZlY3RvcjI1PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjVfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNQotICAgID4KLXN0cnVjdCB2ZWN0b3IyNl9jCi0gICAgOiB2ZWN0b3IyNjwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+LCBpbnRlZ3JhbF9jPFQKLSAgICAgICAgLCBDMjU+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjI2X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2Ci0gICAgPgotc3RydWN0IHZlY3RvcjI3X2MKLSAgICA6IHZlY3RvcjI3PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjI3X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNwotICAgID4KLXN0cnVjdCB2ZWN0b3IyOF9jCi0gICAgOiB2ZWN0b3IyODwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyOF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4Ci0gICAgPgotc3RydWN0IHZlY3RvcjI5X2MKLSAgICA6IHZlY3RvcjI5PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+LCBpbnRlZ3JhbF9jPFQKLSAgICAgICAgLCBDMjg+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjI5X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5Ci0gICAgPgotc3RydWN0IHZlY3RvcjMwX2MKLSAgICA6IHZlY3RvcjMwPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzMF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yNDAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yNDAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNTIwNDU1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3RvcjQwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0NDQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjQwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwCi0gICAgPgotc3RydWN0IHZlY3RvcjMxCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MzE+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjMxIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTMxOwotICAgIHR5cGVkZWYgVDMwIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDMxID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjMwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjMwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDMxPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMzEgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwzMT4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMT4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzE+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzIKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwzMj4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMzIgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTMyOwotICAgIHR5cGVkZWYgVDMxIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDMyID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMjwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjMxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjMxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDMyPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMzIgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwzMj4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMj4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzI+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMgotICAgID4KLXN0cnVjdCB2ZWN0b3IzMwotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDMzPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IzMyB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTMzOwotICAgIHR5cGVkZWYgVDMyIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDMzID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMzwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjMyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwzMz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTMzIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188MzM+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzM+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMzPiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMwotICAgID4KLXN0cnVjdCB2ZWN0b3IzNAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDM0PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IzNCB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzMyBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwzNCA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzQ8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8MzQ+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0zNCB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDM0PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM0PiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzND4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgID4KLXN0cnVjdCB2ZWN0b3IzNQotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDM1PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IzNSB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMzU7Ci0gICAgdHlwZWRlZiBUMzQgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMzUgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM1PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwzNT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTM1IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188MzU+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzU+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM1PiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzYKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwzNj4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMzYgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzNSBpdGVtMzU7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0zNjsKLSAgICB0eXBlZGVmIFQzNSBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwzNiA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzY8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDM2PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMzYgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwzNj4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNj4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzY+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2Ci0gICAgPgotc3RydWN0IHZlY3RvcjM3Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8Mzc+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjM3IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzNCBpdGVtMzQ7Ci0gICAgdHlwZWRlZiBUMzUgaXRlbTM1OwotICAgIHR5cGVkZWYgVDM2IGl0ZW0zNjsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTM3OwotICAgIHR5cGVkZWYgVDM2IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDM3ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNzwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM2PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzc8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM2PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDM3PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMzcgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwzNz4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNz4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzc+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzgKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwzOD4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMzggdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzNSBpdGVtMzU7Ci0gICAgdHlwZWRlZiBUMzYgaXRlbTM2OwotICAgIHR5cGVkZWYgVDM3IGl0ZW0zNzsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTM4OwotICAgIHR5cGVkZWYgVDM3IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDM4ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzODwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM3PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzg8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM3PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDM4PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMzggdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwzOD4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzOD4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzg+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOAotICAgID4KLXN0cnVjdCB2ZWN0b3IzOQotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDM5PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IzOSB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIHR5cGVkZWYgVDM1IGl0ZW0zNTsKLSAgICB0eXBlZGVmIFQzNiBpdGVtMzY7Ci0gICAgdHlwZWRlZiBUMzcgaXRlbTM3OwotICAgIHR5cGVkZWYgVDM4IGl0ZW0zODsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTM5OwotICAgIHR5cGVkZWYgVDM4IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDM5ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzOTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzOTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM4PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwzOT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTM5IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188Mzk+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzk+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM5PiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgID4KLXN0cnVjdCB2ZWN0b3I0MAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDQwPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I0MCB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIHR5cGVkZWYgVDM1IGl0ZW0zNTsKLSAgICB0eXBlZGVmIFQzNiBpdGVtMzY7Ci0gICAgdHlwZWRlZiBUMzcgaXRlbTM3OwotICAgIHR5cGVkZWYgVDM4IGl0ZW0zODsKLSAgICB0eXBlZGVmIFQzOSBpdGVtMzk7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW00MDsKLSAgICB0eXBlZGVmIFQzOSBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw0MCA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDA8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzOTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8NDA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW00MCB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDQwPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQwPiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MD4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3I0MF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3RvcjQwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NWQ2MmQzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3RvcjQwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjgxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I0MF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzFfYwotICAgIDogdmVjdG9yMzE8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjMxX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzJfYwotICAgIDogdmVjdG9yMzI8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+LCBpbnRlZ3JhbF9jPFQKLSAgICAgICAgLCBDMzE+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjMyX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyCi0gICAgPgotc3RydWN0IHZlY3RvcjMzX2MKLSAgICA6IHZlY3RvcjMzPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzNfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzCi0gICAgPgotc3RydWN0IHZlY3RvcjM0X2MKLSAgICA6IHZlY3RvcjM0PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4sIGludGVncmFsX2M8IFQsQzMzID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzRfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNAotICAgID4KLXN0cnVjdCB2ZWN0b3IzNV9jCi0gICAgOiB2ZWN0b3IzNTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzMSA+LCBpbnRlZ3JhbF9jPCBULEMzMiA+LCBpbnRlZ3JhbF9jPCBULEMzMyA+LCBpbnRlZ3JhbF9jPFQKLSAgICAgICAgLCBDMzQ+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjM1X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1Ci0gICAgPgotc3RydWN0IHZlY3RvcjM2X2MKLSAgICA6IHZlY3RvcjM2PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4sIGludGVncmFsX2M8IFQsQzMzID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNCA+LCBpbnRlZ3JhbF9jPCBULEMzNSA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjM2X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNgotICAgID4KLXN0cnVjdCB2ZWN0b3IzN19jCi0gICAgOiB2ZWN0b3IzNzwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzMSA+LCBpbnRlZ3JhbF9jPCBULEMzMiA+LCBpbnRlZ3JhbF9jPCBULEMzMyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzQgPiwgaW50ZWdyYWxfYzwgVCxDMzUgPiwgaW50ZWdyYWxfYzwgVCxDMzYgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzN19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3Ci0gICAgPgotc3RydWN0IHZlY3RvcjM4X2MKLSAgICA6IHZlY3RvcjM4PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4sIGludGVncmFsX2M8IFQsQzMzID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNCA+LCBpbnRlZ3JhbF9jPCBULEMzNSA+LCBpbnRlZ3JhbF9jPCBULEMzNiA+LCBpbnRlZ3JhbF9jPFQKLSAgICAgICAgLCBDMzc+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjM4X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4Ci0gICAgPgotc3RydWN0IHZlY3RvcjM5X2MKLSAgICA6IHZlY3RvcjM5PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4sIGludGVncmFsX2M8IFQsQzMzID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNCA+LCBpbnRlZ3JhbF9jPCBULEMzNSA+LCBpbnRlZ3JhbF9jPCBULEMzNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzcgPiwgaW50ZWdyYWxfYzwgVCxDMzggPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzOV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDBfYwotICAgIDogdmVjdG9yNDA8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiwgaW50ZWdyYWxfYzwgVCxDMzMgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM0ID4sIGludGVncmFsX2M8IFQsQzM1ID4sIGludGVncmFsX2M8IFQsQzM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNyA+LCBpbnRlZ3JhbF9jPCBULEMzOCA+LCBpbnRlZ3JhbF9jPCBULEMzOSA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQwX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3I1MC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3I1MC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlNmU1ZGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yNTAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjc2NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yNTAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MAotICAgID4KLXN0cnVjdCB2ZWN0b3I0MQotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDQxPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I0MSB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIHR5cGVkZWYgVDM1IGl0ZW0zNTsKLSAgICB0eXBlZGVmIFQzNiBpdGVtMzY7Ci0gICAgdHlwZWRlZiBUMzcgaXRlbTM3OwotICAgIHR5cGVkZWYgVDM4IGl0ZW0zODsKLSAgICB0eXBlZGVmIFQzOSBpdGVtMzk7Ci0gICAgdHlwZWRlZiBUNDAgaXRlbTQwOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtNDE7Ci0gICAgdHlwZWRlZiBUNDAgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsNDEgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQxPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDw0MT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTQxIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188NDE+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDE+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQxPiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDIKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw0Mj4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNDIgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzNSBpdGVtMzU7Ci0gICAgdHlwZWRlZiBUMzYgaXRlbTM2OwotICAgIHR5cGVkZWYgVDM3IGl0ZW0zNzsKLSAgICB0eXBlZGVmIFQzOCBpdGVtMzg7Ci0gICAgdHlwZWRlZiBUMzkgaXRlbTM5OwotICAgIHR5cGVkZWYgVDQwIGl0ZW00MDsKLSAgICB0eXBlZGVmIFQ0MSBpdGVtNDE7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW00MjsKLSAgICB0eXBlZGVmIFQ0MSBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw0MiA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDI8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDQyPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtNDIgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzw0Mj4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Mj4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDI+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyCi0gICAgPgotc3RydWN0IHZlY3RvcjQzCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8NDM+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjQzIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzNCBpdGVtMzQ7Ci0gICAgdHlwZWRlZiBUMzUgaXRlbTM1OwotICAgIHR5cGVkZWYgVDM2IGl0ZW0zNjsKLSAgICB0eXBlZGVmIFQzNyBpdGVtMzc7Ci0gICAgdHlwZWRlZiBUMzggaXRlbTM4OwotICAgIHR5cGVkZWYgVDM5IGl0ZW0zOTsKLSAgICB0eXBlZGVmIFQ0MCBpdGVtNDA7Ci0gICAgdHlwZWRlZiBUNDEgaXRlbTQxOwotICAgIHR5cGVkZWYgVDQyIGl0ZW00MjsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTQzOwotICAgIHR5cGVkZWYgVDQyIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDQzID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MzwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDQzPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtNDMgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzw0Mz4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Mz4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDM+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDQKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw0ND4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNDQgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzNSBpdGVtMzU7Ci0gICAgdHlwZWRlZiBUMzYgaXRlbTM2OwotICAgIHR5cGVkZWYgVDM3IGl0ZW0zNzsKLSAgICB0eXBlZGVmIFQzOCBpdGVtMzg7Ci0gICAgdHlwZWRlZiBUMzkgaXRlbTM5OwotICAgIHR5cGVkZWYgVDQwIGl0ZW00MDsKLSAgICB0eXBlZGVmIFQ0MSBpdGVtNDE7Ci0gICAgdHlwZWRlZiBUNDIgaXRlbTQyOwotICAgIHR5cGVkZWYgVDQzIGl0ZW00MzsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTQ0OwotICAgIHR5cGVkZWYgVDQzIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDQ0ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0NDwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDQ0PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtNDQgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzw0ND4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0ND4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDQ+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NAotICAgID4KLXN0cnVjdCB2ZWN0b3I0NQotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDQ1PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I0NSB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIHR5cGVkZWYgVDM1IGl0ZW0zNTsKLSAgICB0eXBlZGVmIFQzNiBpdGVtMzY7Ci0gICAgdHlwZWRlZiBUMzcgaXRlbTM3OwotICAgIHR5cGVkZWYgVDM4IGl0ZW0zODsKLSAgICB0eXBlZGVmIFQzOSBpdGVtMzk7Ci0gICAgdHlwZWRlZiBUNDAgaXRlbTQwOwotICAgIHR5cGVkZWYgVDQxIGl0ZW00MTsKLSAgICB0eXBlZGVmIFQ0MiBpdGVtNDI7Ci0gICAgdHlwZWRlZiBUNDMgaXRlbTQzOwotICAgIHR5cGVkZWYgVDQ0IGl0ZW00NDsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTQ1OwotICAgIHR5cGVkZWYgVDQ0IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDQ1ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0NTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0NDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0NTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDw0NT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTQ1IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188NDU+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDU+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ1PiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQKLSAgICAsIHR5cGVuYW1lIFQ0NQotICAgID4KLXN0cnVjdCB2ZWN0b3I0NgotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDQ2PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I0NiB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIHR5cGVkZWYgVDM1IGl0ZW0zNTsKLSAgICB0eXBlZGVmIFQzNiBpdGVtMzY7Ci0gICAgdHlwZWRlZiBUMzcgaXRlbTM3OwotICAgIHR5cGVkZWYgVDM4IGl0ZW0zODsKLSAgICB0eXBlZGVmIFQzOSBpdGVtMzk7Ci0gICAgdHlwZWRlZiBUNDAgaXRlbTQwOwotICAgIHR5cGVkZWYgVDQxIGl0ZW00MTsKLSAgICB0eXBlZGVmIFQ0MiBpdGVtNDI7Ci0gICAgdHlwZWRlZiBUNDMgaXRlbTQzOwotICAgIHR5cGVkZWYgVDQ0IGl0ZW00NDsKLSAgICB0eXBlZGVmIFQ0NSBpdGVtNDU7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW00NjsKLSAgICB0eXBlZGVmIFQ0NSBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw0NiA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDY8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0NTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8NDY+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW00NiB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDQ2PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ2PiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nj4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0Ci0gICAgLCB0eXBlbmFtZSBUNDUsIHR5cGVuYW1lIFQ0NgotICAgID4KLXN0cnVjdCB2ZWN0b3I0NwotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDQ3PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I0NyB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIHR5cGVkZWYgVDM1IGl0ZW0zNTsKLSAgICB0eXBlZGVmIFQzNiBpdGVtMzY7Ci0gICAgdHlwZWRlZiBUMzcgaXRlbTM3OwotICAgIHR5cGVkZWYgVDM4IGl0ZW0zODsKLSAgICB0eXBlZGVmIFQzOSBpdGVtMzk7Ci0gICAgdHlwZWRlZiBUNDAgaXRlbTQwOwotICAgIHR5cGVkZWYgVDQxIGl0ZW00MTsKLSAgICB0eXBlZGVmIFQ0MiBpdGVtNDI7Ci0gICAgdHlwZWRlZiBUNDMgaXRlbTQzOwotICAgIHR5cGVkZWYgVDQ0IGl0ZW00NDsKLSAgICB0eXBlZGVmIFQ0NSBpdGVtNDU7Ci0gICAgdHlwZWRlZiBUNDYgaXRlbTQ2OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtNDc7Ci0gICAgdHlwZWRlZiBUNDYgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsNDcgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ3PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0NjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDc8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NQotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDw0Nz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTQ3IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188NDc+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDc+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ3PiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQKLSAgICAsIHR5cGVuYW1lIFQ0NSwgdHlwZW5hbWUgVDQ2LCB0eXBlbmFtZSBUNDcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDgKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw0OD4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNDggdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzNSBpdGVtMzU7Ci0gICAgdHlwZWRlZiBUMzYgaXRlbTM2OwotICAgIHR5cGVkZWYgVDM3IGl0ZW0zNzsKLSAgICB0eXBlZGVmIFQzOCBpdGVtMzg7Ci0gICAgdHlwZWRlZiBUMzkgaXRlbTM5OwotICAgIHR5cGVkZWYgVDQwIGl0ZW00MDsKLSAgICB0eXBlZGVmIFQ0MSBpdGVtNDE7Ci0gICAgdHlwZWRlZiBUNDIgaXRlbTQyOwotICAgIHR5cGVkZWYgVDQzIGl0ZW00MzsKLSAgICB0eXBlZGVmIFQ0NCBpdGVtNDQ7Ci0gICAgdHlwZWRlZiBUNDUgaXRlbTQ1OwotICAgIHR5cGVkZWYgVDQ2IGl0ZW00NjsKLSAgICB0eXBlZGVmIFQ0NyBpdGVtNDc7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW00ODsKLSAgICB0eXBlZGVmIFQ0NyBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw0OCA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDg8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDYKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ3PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ3Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0ODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ2Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0NzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ2Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDQ4PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtNDggdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0OD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0OD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzw0OD4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0OD4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDg+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NAotICAgICwgdHlwZW5hbWUgVDQ1LCB0eXBlbmFtZSBUNDYsIHR5cGVuYW1lIFQ0NywgdHlwZW5hbWUgVDQ4Ci0gICAgPgotc3RydWN0IHZlY3RvcjQ5Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8NDk+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjQ5IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzNCBpdGVtMzQ7Ci0gICAgdHlwZWRlZiBUMzUgaXRlbTM1OwotICAgIHR5cGVkZWYgVDM2IGl0ZW0zNjsKLSAgICB0eXBlZGVmIFQzNyBpdGVtMzc7Ci0gICAgdHlwZWRlZiBUMzggaXRlbTM4OwotICAgIHR5cGVkZWYgVDM5IGl0ZW0zOTsKLSAgICB0eXBlZGVmIFQ0MCBpdGVtNDA7Ci0gICAgdHlwZWRlZiBUNDEgaXRlbTQxOwotICAgIHR5cGVkZWYgVDQyIGl0ZW00MjsKLSAgICB0eXBlZGVmIFQ0MyBpdGVtNDM7Ci0gICAgdHlwZWRlZiBUNDQgaXRlbTQ0OwotICAgIHR5cGVkZWYgVDQ1IGl0ZW00NTsKLSAgICB0eXBlZGVmIFQ0NiBpdGVtNDY7Ci0gICAgdHlwZWRlZiBUNDcgaXRlbTQ3OwotICAgIHR5cGVkZWYgVDQ4IGl0ZW00ODsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTQ5OwotICAgIHR5cGVkZWYgVDQ4IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDQ5ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0OTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDcKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ4PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00OAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0OD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDcKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ4PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ3Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDQ5PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtNDkgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0OT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0OT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzw0OT4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0OT4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDk+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NAotICAgICwgdHlwZW5hbWUgVDQ1LCB0eXBlbmFtZSBUNDYsIHR5cGVuYW1lIFQ0NywgdHlwZW5hbWUgVDQ4LCB0eXBlbmFtZSBUNDkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNTAKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw1MD4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNTAgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzNSBpdGVtMzU7Ci0gICAgdHlwZWRlZiBUMzYgaXRlbTM2OwotICAgIHR5cGVkZWYgVDM3IGl0ZW0zNzsKLSAgICB0eXBlZGVmIFQzOCBpdGVtMzg7Ci0gICAgdHlwZWRlZiBUMzkgaXRlbTM5OwotICAgIHR5cGVkZWYgVDQwIGl0ZW00MDsKLSAgICB0eXBlZGVmIFQ0MSBpdGVtNDE7Ci0gICAgdHlwZWRlZiBUNDIgaXRlbTQyOwotICAgIHR5cGVkZWYgVDQzIGl0ZW00MzsKLSAgICB0eXBlZGVmIFQ0NCBpdGVtNDQ7Ci0gICAgdHlwZWRlZiBUNDUgaXRlbTQ1OwotICAgIHR5cGVkZWYgVDQ2IGl0ZW00NjsKLSAgICB0eXBlZGVmIFQ0NyBpdGVtNDc7Ci0gICAgdHlwZWRlZiBUNDggaXRlbTQ4OwotICAgIHR5cGVkZWYgVDQ5IGl0ZW00OTsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTUwOwotICAgIHR5cGVkZWYgVDQ5IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDUwID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I1MDwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDgKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NTA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ5PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00OAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00OQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0OT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNTA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDgKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NTA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ5PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ4Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDUwPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtNTAgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDUwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NTA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDUwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw1MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw1MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzw1MD4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw1MD4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NTA+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NTA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yNTBfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3I1MF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGU1YTYzOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3I1MF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyNSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yNTBfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgID4KLXN0cnVjdCB2ZWN0b3I0MV9jCi0gICAgOiB2ZWN0b3I0MTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzMSA+LCBpbnRlZ3JhbF9jPCBULEMzMiA+LCBpbnRlZ3JhbF9jPCBULEMzMyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzQgPiwgaW50ZWdyYWxfYzwgVCxDMzUgPiwgaW50ZWdyYWxfYzwgVCxDMzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM3ID4sIGludGVncmFsX2M8IFQsQzM4ID4sIGludGVncmFsX2M8IFQsQzM5ID4sIGludGVncmFsX2M8VAotICAgICAgICAsIEM0MD4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDFfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDJfYwotICAgIDogdmVjdG9yNDI8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiwgaW50ZWdyYWxfYzwgVCxDMzMgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM0ID4sIGludGVncmFsX2M8IFQsQzM1ID4sIGludGVncmFsX2M8IFQsQzM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNyA+LCBpbnRlZ3JhbF9jPCBULEMzOCA+LCBpbnRlZ3JhbF9jPCBULEMzOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNDAgPiwgaW50ZWdyYWxfYzwgVCxDNDEgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0Ml9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgLCBUIEM0MSwgVCBDNDIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDNfYwotICAgIDogdmVjdG9yNDM8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiwgaW50ZWdyYWxfYzwgVCxDMzMgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM0ID4sIGludGVncmFsX2M8IFQsQzM1ID4sIGludGVncmFsX2M8IFQsQzM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNyA+LCBpbnRlZ3JhbF9jPCBULEMzOCA+LCBpbnRlZ3JhbF9jPCBULEMzOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNDAgPiwgaW50ZWdyYWxfYzwgVCxDNDEgPiwgaW50ZWdyYWxfYzwgVCxDNDIgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0M19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgLCBUIEM0MSwgVCBDNDIsIFQgQzQzCi0gICAgPgotc3RydWN0IHZlY3RvcjQ0X2MKLSAgICA6IHZlY3RvcjQ0PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4sIGludGVncmFsX2M8IFQsQzMzID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNCA+LCBpbnRlZ3JhbF9jPCBULEMzNSA+LCBpbnRlZ3JhbF9jPCBULEMzNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzcgPiwgaW50ZWdyYWxfYzwgVCxDMzggPiwgaW50ZWdyYWxfYzwgVCxDMzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQwID4sIGludGVncmFsX2M8IFQsQzQxID4sIGludGVncmFsX2M8IFQsQzQyID4sIGludGVncmFsX2M8VAotICAgICAgICAsIEM0Mz4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDRfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEsIFQgQzQyLCBUIEM0MywgVCBDNDQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDVfYwotICAgIDogdmVjdG9yNDU8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiwgaW50ZWdyYWxfYzwgVCxDMzMgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM0ID4sIGludGVncmFsX2M8IFQsQzM1ID4sIGludGVncmFsX2M8IFQsQzM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNyA+LCBpbnRlZ3JhbF9jPCBULEMzOCA+LCBpbnRlZ3JhbF9jPCBULEMzOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNDAgPiwgaW50ZWdyYWxfYzwgVCxDNDEgPiwgaW50ZWdyYWxfYzwgVCxDNDIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQzID4sIGludGVncmFsX2M8IFQsQzQ0ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDVfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEsIFQgQzQyLCBUIEM0MywgVCBDNDQsIFQgQzQ1Ci0gICAgPgotc3RydWN0IHZlY3RvcjQ2X2MKLSAgICA6IHZlY3RvcjQ2PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4sIGludGVncmFsX2M8IFQsQzMzID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNCA+LCBpbnRlZ3JhbF9jPCBULEMzNSA+LCBpbnRlZ3JhbF9jPCBULEMzNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzcgPiwgaW50ZWdyYWxfYzwgVCxDMzggPiwgaW50ZWdyYWxfYzwgVCxDMzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQwID4sIGludGVncmFsX2M8IFQsQzQxID4sIGludGVncmFsX2M8IFQsQzQyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0MyA+LCBpbnRlZ3JhbF9jPCBULEM0NCA+LCBpbnRlZ3JhbF9jPCBULEM0NSA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQ2X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxLCBUIEM0MiwgVCBDNDMsIFQgQzQ0LCBUIEM0NSwgVCBDNDYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDdfYwotICAgIDogdmVjdG9yNDc8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiwgaW50ZWdyYWxfYzwgVCxDMzMgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM0ID4sIGludGVncmFsX2M8IFQsQzM1ID4sIGludGVncmFsX2M8IFQsQzM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNyA+LCBpbnRlZ3JhbF9jPCBULEMzOCA+LCBpbnRlZ3JhbF9jPCBULEMzOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNDAgPiwgaW50ZWdyYWxfYzwgVCxDNDEgPiwgaW50ZWdyYWxfYzwgVCxDNDIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQzID4sIGludGVncmFsX2M8IFQsQzQ0ID4sIGludGVncmFsX2M8IFQsQzQ1ID4sIGludGVncmFsX2M8VAotICAgICAgICAsIEM0Nj4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDdfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEsIFQgQzQyLCBUIEM0MywgVCBDNDQsIFQgQzQ1LCBUIEM0NiwgVCBDNDcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDhfYwotICAgIDogdmVjdG9yNDg8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiwgaW50ZWdyYWxfYzwgVCxDMzMgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM0ID4sIGludGVncmFsX2M8IFQsQzM1ID4sIGludGVncmFsX2M8IFQsQzM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNyA+LCBpbnRlZ3JhbF9jPCBULEMzOCA+LCBpbnRlZ3JhbF9jPCBULEMzOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNDAgPiwgaW50ZWdyYWxfYzwgVCxDNDEgPiwgaW50ZWdyYWxfYzwgVCxDNDIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQzID4sIGludGVncmFsX2M8IFQsQzQ0ID4sIGludGVncmFsX2M8IFQsQzQ1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0NiA+LCBpbnRlZ3JhbF9jPCBULEM0NyA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQ4X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxLCBUIEM0MiwgVCBDNDMsIFQgQzQ0LCBUIEM0NSwgVCBDNDYsIFQgQzQ3LCBUIEM0OAotICAgID4KLXN0cnVjdCB2ZWN0b3I0OV9jCi0gICAgOiB2ZWN0b3I0OTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzMSA+LCBpbnRlZ3JhbF9jPCBULEMzMiA+LCBpbnRlZ3JhbF9jPCBULEMzMyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzQgPiwgaW50ZWdyYWxfYzwgVCxDMzUgPiwgaW50ZWdyYWxfYzwgVCxDMzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM3ID4sIGludGVncmFsX2M8IFQsQzM4ID4sIGludGVncmFsX2M8IFQsQzM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0MCA+LCBpbnRlZ3JhbF9jPCBULEM0MSA+LCBpbnRlZ3JhbF9jPCBULEM0MiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNDMgPiwgaW50ZWdyYWxfYzwgVCxDNDQgPiwgaW50ZWdyYWxfYzwgVCxDNDUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQ2ID4sIGludGVncmFsX2M8IFQsQzQ3ID4sIGludGVncmFsX2M8IFQsQzQ4ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDlfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEsIFQgQzQyLCBUIEM0MywgVCBDNDQsIFQgQzQ1LCBUIEM0NiwgVCBDNDcsIFQgQzQ4LCBUIEM0OQotICAgID4KLXN0cnVjdCB2ZWN0b3I1MF9jCi0gICAgOiB2ZWN0b3I1MDwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzMSA+LCBpbnRlZ3JhbF9jPCBULEMzMiA+LCBpbnRlZ3JhbF9jPCBULEMzMyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzQgPiwgaW50ZWdyYWxfYzwgVCxDMzUgPiwgaW50ZWdyYWxfYzwgVCxDMzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM3ID4sIGludGVncmFsX2M8IFQsQzM4ID4sIGludGVncmFsX2M8IFQsQzM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0MCA+LCBpbnRlZ3JhbF9jPCBULEM0MSA+LCBpbnRlZ3JhbF9jPCBULEM0MiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNDMgPiwgaW50ZWdyYWxfYzwgVCxDNDQgPiwgaW50ZWdyYWxfYzwgVCxDNDUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQ2ID4sIGludGVncmFsX2M8IFQsQzQ3ID4sIGludGVncmFsX2M8IFQsQzQ4ID4sIGludGVncmFsX2M8VAotICAgICAgICAsIEM0OT4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yNTBfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3IxMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yMTAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZWZlMzJiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3IxMC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MjkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjEwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0wIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IHZlY3RvcjEKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwxPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IxIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0xOwotICAgIHR5cGVkZWYgVDAgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8Ci0gICAgICAgICAgICAgCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE8Ci0gICAgICAgICAgICAgCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPAotICAgICAgICAgICAgIAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCB2ZWN0b3IyCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8Mj4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMiB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTI7Ci0gICAgdHlwZWRlZiBUMSBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwyID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTIgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCB2ZWN0b3IzCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8Mz4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMyB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMzsKLSAgICB0eXBlZGVmIFQyIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDMgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCB2ZWN0b3I0Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8ND4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNCB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW00OwotICAgIHR5cGVkZWYgVDMgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsNCA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IHZlY3RvcjUKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw1PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I1IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtNTsKLSAgICB0eXBlZGVmIFQ0IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDUgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViw1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW01IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNgotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDY+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjYgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTY7Ci0gICAgdHlwZWRlZiBUNSBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw2ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjY8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I2PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViw2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IHZlY3RvcjcKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw3PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I3IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTc7Ci0gICAgdHlwZWRlZiBUNiBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw3ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3Rvcjc8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I2PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I3PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I2PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViw3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCB2ZWN0b3I4Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8OD4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yOCB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTg7Ci0gICAgdHlwZWRlZiBUNyBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw4ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3Rvcjg8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3Rvcjc8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I3PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTggdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCB2ZWN0b3I5Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8OT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yOSB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtOTsKLSAgICB0eXBlZGVmIFQ4IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDkgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yOTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I5PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3Rvcjg8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCB2ZWN0b3IxMAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDEwPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IxMCB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQ5IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDEwID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjEwPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I5PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yOTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMCB0eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3IxMF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3IxMF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDI1YzkzZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yMTBfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjEwX2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMAotICAgID4KLXN0cnVjdCB2ZWN0b3IxX2MKLSAgICA6IHZlY3RvcjE8IGludGVncmFsX2M8IFQsQzAgPiA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMQotICAgID4KLXN0cnVjdCB2ZWN0b3IyX2MKLSAgICA6IHZlY3RvcjI8IGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+ID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjJfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyCi0gICAgPgotc3RydWN0IHZlY3RvcjNfYwotICAgIDogdmVjdG9yMzwgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPiA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMwotICAgID4KLXN0cnVjdCB2ZWN0b3I0X2MKLSAgICA6IHZlY3RvcjQ8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPiwgaW50ZWdyYWxfYzxUCi0gICAgICAgICwgQzM+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjRfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0Ci0gICAgPgotc3RydWN0IHZlY3RvcjVfYwotICAgIDogdmVjdG9yNTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yNV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNl9jCi0gICAgOiB2ZWN0b3I2PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjZfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2Ci0gICAgPgotc3RydWN0IHZlY3RvcjdfYwotICAgIDogdmVjdG9yNzwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzxUCi0gICAgICAgICwgQzY+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjdfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3Ci0gICAgPgotc3RydWN0IHZlY3RvcjhfYwotICAgIDogdmVjdG9yODwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjhfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4Ci0gICAgPgotc3RydWN0IHZlY3RvcjlfYwotICAgIDogdmVjdG9yOTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yOV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTBfYwotICAgIDogdmVjdG9yMTA8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTBfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3IyMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yMjAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDkyMDllLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3IyMC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQ0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IyMC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IHZlY3RvcjExCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MTE+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjExIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwxMSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTE8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjEwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDExPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxMDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTIKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwxMj4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMTIgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMSBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwxMiA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTI8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjExPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDExPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCB2ZWN0b3IxMwotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDEzPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IxMyB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxMiBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwxMyA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTM8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjEzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTMgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCB2ZWN0b3IxNAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDE0PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IxNCB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTMgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMTQgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE0PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMTQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE0IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCB2ZWN0b3IxNQotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDE1PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IxNSB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTE1OwotICAgIHR5cGVkZWYgVDE0IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDE1ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwxNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTYKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwxNj4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMTYgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTUgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMTYgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE2PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE2PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDE2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IHZlY3RvcjE3Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MTc+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjE3IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxNiBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwxNyA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTc8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE2PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDE3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTgKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwxOD4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMTggdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxNyBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwxOCA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTg8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE3PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDE4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xOCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCB2ZWN0b3IxOQotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDE5PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IxOSB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQxOCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwxOSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTk8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE5PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwxOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTkgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCB2ZWN0b3IyMAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDIwPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IyMCB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMTkgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMjAgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjIwPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMjAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTIwIHR5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3RvcjIwX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3RvcjIwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxODE0Y2NiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3IyMF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5NSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMjBfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgID4KLXN0cnVjdCB2ZWN0b3IxMV9jCi0gICAgOiB2ZWN0b3IxMTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPiwgaW50ZWdyYWxfYzxUCi0gICAgICAgICwgQzEwPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxMV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMQotICAgID4KLXN0cnVjdCB2ZWN0b3IxMl9jCi0gICAgOiB2ZWN0b3IxMjwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTJfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyCi0gICAgPgotc3RydWN0IHZlY3RvcjEzX2MKLSAgICA6IHZlY3RvcjEzPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxM19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzCi0gICAgPgotc3RydWN0IHZlY3RvcjE0X2MKLSAgICA6IHZlY3RvcjE0PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPiwgaW50ZWdyYWxfYzxUCi0gICAgICAgICwgQzEzPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxNF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNAotICAgID4KLXN0cnVjdCB2ZWN0b3IxNV9jCi0gICAgOiB2ZWN0b3IxNTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjE1X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNQotICAgID4KLXN0cnVjdCB2ZWN0b3IxNl9jCi0gICAgOiB2ZWN0b3IxNjwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjE2X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTdfYwotICAgIDogdmVjdG9yMTc8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPiwgaW50ZWdyYWxfYzxUCi0gICAgICAgICwgQzE2PiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxN19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNwotICAgID4KLXN0cnVjdCB2ZWN0b3IxOF9jCi0gICAgOiB2ZWN0b3IxODwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxOF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTlfYwotICAgIDogdmVjdG9yMTk8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTlfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOQotICAgID4KLXN0cnVjdCB2ZWN0b3IyMF9jCi0gICAgOiB2ZWN0b3IyMDwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPiwgaW50ZWdyYWxfYzxUCi0gICAgICAgICwgQzE5PiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyMF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3RvcjMwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3IzMC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4OGY1Y2EuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3RvcjMwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NjQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjMwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMAotICAgID4KLXN0cnVjdCB2ZWN0b3IyMQotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDIxPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IyMSB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTIxOwotICAgIHR5cGVkZWYgVDIwIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDIxID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjIwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwyMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjEgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjIKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwyMj4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMjIgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjEgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMjIgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjIyPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjIxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjIyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDIyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yMiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyCi0gICAgPgotc3RydWN0IHZlY3RvcjIzCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MjM+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjIzIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyMiBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwyMyA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjM8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjIyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDIzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yMyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjQKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwyND4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMjQgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyMyBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwyNCA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjQ8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjIzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDI0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yNCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgID4KLXN0cnVjdCB2ZWN0b3IyNQotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDI1PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IyNSB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwyNSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjU8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwyNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNQotICAgID4KLXN0cnVjdCB2ZWN0b3IyNgotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDI2PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IyNiB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjUgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMjYgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI2PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyNjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMjYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTI2IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNgotICAgID4KLXN0cnVjdCB2ZWN0b3IyNwotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDI3PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IyNyB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTI3OwotICAgIHR5cGVkZWYgVDI2IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDI3ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyNzwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyNjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyNzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI2PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwyNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjgKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwyOD4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMjggdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjcgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMjggPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI4PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI3PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI4PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjc8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDI4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yOCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4Ci0gICAgPgotc3RydWN0IHZlY3RvcjI5Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8Mjk+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjI5IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQyOCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwyOSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjk8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI4PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyOTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDI5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yOSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzAKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwzMD4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMzAgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQyOSBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwzMCA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzA8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI5PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyOTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDMwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zMCB0eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3IzMF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3IzMF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2IxMDQ0NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yMzBfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMzggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjMwX2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgPgotc3RydWN0IHZlY3RvcjIxX2MKLSAgICA6IHZlY3RvcjIxPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyMV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjJfYwotICAgIDogdmVjdG9yMjI8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjIyX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjNfYwotICAgIDogdmVjdG9yMjM8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+LCBpbnRlZ3JhbF9jPFQKLSAgICAgICAgLCBDMjI+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjIzX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzCi0gICAgPgotc3RydWN0IHZlY3RvcjI0X2MKLSAgICA6IHZlY3RvcjI0PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjRfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0Ci0gICAgPgotc3RydWN0IHZlY3RvcjI1X2MKLSAgICA6IHZlY3RvcjI1PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjVfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNQotICAgID4KLXN0cnVjdCB2ZWN0b3IyNl9jCi0gICAgOiB2ZWN0b3IyNjwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+LCBpbnRlZ3JhbF9jPFQKLSAgICAgICAgLCBDMjU+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjI2X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2Ci0gICAgPgotc3RydWN0IHZlY3RvcjI3X2MKLSAgICA6IHZlY3RvcjI3PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjI3X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNwotICAgID4KLXN0cnVjdCB2ZWN0b3IyOF9jCi0gICAgOiB2ZWN0b3IyODwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyOF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4Ci0gICAgPgotc3RydWN0IHZlY3RvcjI5X2MKLSAgICA6IHZlY3RvcjI5PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+LCBpbnRlZ3JhbF9jPFQKLSAgICAgICAgLCBDMjg+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjI5X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5Ci0gICAgPgotc3RydWN0IHZlY3RvcjMwX2MKLSAgICA6IHZlY3RvcjMwPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzMF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3RvcjQwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3I0MC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3Yzc1M2QuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3RvcjQwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3ODQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjQwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwCi0gICAgPgotc3RydWN0IHZlY3RvcjMxCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MzE+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjMxIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTMxOwotICAgIHR5cGVkZWYgVDMwIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDMxID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjMwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjMwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDMxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zMSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxCi0gICAgPgotc3RydWN0IHZlY3RvcjMyCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MzI+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjMyIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMSBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwzMiA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzI8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjMyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwzMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzIgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyCi0gICAgPgotc3RydWN0IHZlY3RvcjMzCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MzM+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjMzIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzIgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMzMgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjMzPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjMyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjMzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDMzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zMyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMwotICAgID4KLXN0cnVjdCB2ZWN0b3IzNAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDM0PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IzNCB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzMyBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwzNCA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzQ8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMzQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTM0IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzUKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwzNT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMzUgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTM1OwotICAgIHR5cGVkZWYgVDM0IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDM1ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMzUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTM1IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNQotICAgID4KLXN0cnVjdCB2ZWN0b3IzNgotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDM2PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IzNiB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIHR5cGVkZWYgVDM1IGl0ZW0zNTsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTM2OwotICAgIHR5cGVkZWYgVDM1IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDM2ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNjwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM2PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMzYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTM2IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2Ci0gICAgPgotc3RydWN0IHZlY3RvcjM3Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8Mzc+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjM3IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzNCBpdGVtMzQ7Ci0gICAgdHlwZWRlZiBUMzUgaXRlbTM1OwotICAgIHR5cGVkZWYgVDM2IGl0ZW0zNjsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTM3OwotICAgIHR5cGVkZWYgVDM2IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDM3ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNzwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM2PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzc8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM2PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDM3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zNyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3Ci0gICAgPgotc3RydWN0IHZlY3RvcjM4Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8Mzg+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjM4IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzNCBpdGVtMzQ7Ci0gICAgdHlwZWRlZiBUMzUgaXRlbTM1OwotICAgIHR5cGVkZWYgVDM2IGl0ZW0zNjsKLSAgICB0eXBlZGVmIFQzNyBpdGVtMzc7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0zODsKLSAgICB0eXBlZGVmIFQzNyBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwzOCA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzg8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM4PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwzOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzggdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4Ci0gICAgPgotc3RydWN0IHZlY3RvcjM5Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8Mzk+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjM5IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzNCBpdGVtMzQ7Ci0gICAgdHlwZWRlZiBUMzUgaXRlbTM1OwotICAgIHR5cGVkZWYgVDM2IGl0ZW0zNjsKLSAgICB0eXBlZGVmIFQzNyBpdGVtMzc7Ci0gICAgdHlwZWRlZiBUMzggaXRlbTM4OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMzk7Ci0gICAgdHlwZWRlZiBUMzggYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMzkgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM5PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM4PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM5PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzg8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDM5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zOSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgID4KLXN0cnVjdCB2ZWN0b3I0MAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDQwPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I0MCB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIHR5cGVkZWYgVDM1IGl0ZW0zNTsKLSAgICB0eXBlZGVmIFQzNiBpdGVtMzY7Ci0gICAgdHlwZWRlZiBUMzcgaXRlbTM3OwotICAgIHR5cGVkZWYgVDM4IGl0ZW0zODsKLSAgICB0eXBlZGVmIFQzOSBpdGVtMzk7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW00MDsKLSAgICB0eXBlZGVmIFQzOSBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw0MCA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDA8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzOTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsNDAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQwIHR5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3RvcjQwX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3RvcjQwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NWQ2MmQzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3I0MF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4MSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yNDBfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgPgotc3RydWN0IHZlY3RvcjMxX2MKLSAgICA6IHZlY3RvcjMxPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzMV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxCi0gICAgPgotc3RydWN0IHZlY3RvcjMyX2MKLSAgICA6IHZlY3RvcjMyPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPiwgaW50ZWdyYWxfYzxUCi0gICAgICAgICwgQzMxPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzMl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMgotICAgID4KLXN0cnVjdCB2ZWN0b3IzM19jCi0gICAgOiB2ZWN0b3IzMzwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzMSA+LCBpbnRlZ3JhbF9jPCBULEMzMiA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjMzX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMwotICAgID4KLXN0cnVjdCB2ZWN0b3IzNF9jCi0gICAgOiB2ZWN0b3IzNDwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzMSA+LCBpbnRlZ3JhbF9jPCBULEMzMiA+LCBpbnRlZ3JhbF9jPCBULEMzMyA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjM0X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzVfYwotICAgIDogdmVjdG9yMzU8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiwgaW50ZWdyYWxfYzwgVCxDMzMgPiwgaW50ZWdyYWxfYzxUCi0gICAgICAgICwgQzM0PiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzNV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNQotICAgID4KLXN0cnVjdCB2ZWN0b3IzNl9jCi0gICAgOiB2ZWN0b3IzNjwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzMSA+LCBpbnRlZ3JhbF9jPCBULEMzMiA+LCBpbnRlZ3JhbF9jPCBULEMzMyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzQgPiwgaW50ZWdyYWxfYzwgVCxDMzUgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzNl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzdfYwotICAgIDogdmVjdG9yMzc8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiwgaW50ZWdyYWxfYzwgVCxDMzMgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM0ID4sIGludGVncmFsX2M8IFQsQzM1ID4sIGludGVncmFsX2M8IFQsQzM2ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzdfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNwotICAgID4KLXN0cnVjdCB2ZWN0b3IzOF9jCi0gICAgOiB2ZWN0b3IzODwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzMSA+LCBpbnRlZ3JhbF9jPCBULEMzMiA+LCBpbnRlZ3JhbF9jPCBULEMzMyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzQgPiwgaW50ZWdyYWxfYzwgVCxDMzUgPiwgaW50ZWdyYWxfYzwgVCxDMzYgPiwgaW50ZWdyYWxfYzxUCi0gICAgICAgICwgQzM3PiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzOF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOAotICAgID4KLXN0cnVjdCB2ZWN0b3IzOV9jCi0gICAgOiB2ZWN0b3IzOTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzMSA+LCBpbnRlZ3JhbF9jPCBULEMzMiA+LCBpbnRlZ3JhbF9jPCBULEMzMyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzQgPiwgaW50ZWdyYWxfYzwgVCxDMzUgPiwgaW50ZWdyYWxfYzwgVCxDMzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM3ID4sIGludGVncmFsX2M8IFQsQzM4ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzlfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5Ci0gICAgPgotc3RydWN0IHZlY3RvcjQwX2MKLSAgICA6IHZlY3RvcjQwPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4sIGludGVncmFsX2M8IFQsQzMzID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNCA+LCBpbnRlZ3JhbF9jPCBULEMzNSA+LCBpbnRlZ3JhbF9jPCBULEMzNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzcgPiwgaW50ZWdyYWxfYzwgVCxDMzggPiwgaW50ZWdyYWxfYzwgVCxDMzkgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0MF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3RvcjUwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3I1MC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmZDJjM2EuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3RvcjUwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxMDQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjUwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDEKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw0MT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNDEgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzNSBpdGVtMzU7Ci0gICAgdHlwZWRlZiBUMzYgaXRlbTM2OwotICAgIHR5cGVkZWYgVDM3IGl0ZW0zNzsKLSAgICB0eXBlZGVmIFQzOCBpdGVtMzg7Ci0gICAgdHlwZWRlZiBUMzkgaXRlbTM5OwotICAgIHR5cGVkZWYgVDQwIGl0ZW00MDsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTQxOwotICAgIHR5cGVkZWYgVDQwIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDQxID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsNDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQxIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MQotICAgID4KLXN0cnVjdCB2ZWN0b3I0MgotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDQyPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I0MiB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIHR5cGVkZWYgVDM1IGl0ZW0zNTsKLSAgICB0eXBlZGVmIFQzNiBpdGVtMzY7Ci0gICAgdHlwZWRlZiBUMzcgaXRlbTM3OwotICAgIHR5cGVkZWYgVDM4IGl0ZW0zODsKLSAgICB0eXBlZGVmIFQzOSBpdGVtMzk7Ci0gICAgdHlwZWRlZiBUNDAgaXRlbTQwOwotICAgIHR5cGVkZWYgVDQxIGl0ZW00MTsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTQyOwotICAgIHR5cGVkZWYgVDQxIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDQyID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MjwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsNDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQyIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyCi0gICAgPgotc3RydWN0IHZlY3RvcjQzCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8NDM+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjQzIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzNCBpdGVtMzQ7Ci0gICAgdHlwZWRlZiBUMzUgaXRlbTM1OwotICAgIHR5cGVkZWYgVDM2IGl0ZW0zNjsKLSAgICB0eXBlZGVmIFQzNyBpdGVtMzc7Ci0gICAgdHlwZWRlZiBUMzggaXRlbTM4OwotICAgIHR5cGVkZWYgVDM5IGl0ZW0zOTsKLSAgICB0eXBlZGVmIFQ0MCBpdGVtNDA7Ci0gICAgdHlwZWRlZiBUNDEgaXRlbTQxOwotICAgIHR5cGVkZWYgVDQyIGl0ZW00MjsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTQzOwotICAgIHR5cGVkZWYgVDQyIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDQzID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MzwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00MyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzCi0gICAgPgotc3RydWN0IHZlY3RvcjQ0Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8NDQ+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjQ0IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzNCBpdGVtMzQ7Ci0gICAgdHlwZWRlZiBUMzUgaXRlbTM1OwotICAgIHR5cGVkZWYgVDM2IGl0ZW0zNjsKLSAgICB0eXBlZGVmIFQzNyBpdGVtMzc7Ci0gICAgdHlwZWRlZiBUMzggaXRlbTM4OwotICAgIHR5cGVkZWYgVDM5IGl0ZW0zOTsKLSAgICB0eXBlZGVmIFQ0MCBpdGVtNDA7Ci0gICAgdHlwZWRlZiBUNDEgaXRlbTQxOwotICAgIHR5cGVkZWYgVDQyIGl0ZW00MjsKLSAgICB0eXBlZGVmIFQ0MyBpdGVtNDM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW00NDsKLSAgICB0eXBlZGVmIFQ0MyBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw0NCA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDQ8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViw0NCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0Ci0gICAgPgotc3RydWN0IHZlY3RvcjQ1Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8NDU+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjQ1IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzNCBpdGVtMzQ7Ci0gICAgdHlwZWRlZiBUMzUgaXRlbTM1OwotICAgIHR5cGVkZWYgVDM2IGl0ZW0zNjsKLSAgICB0eXBlZGVmIFQzNyBpdGVtMzc7Ci0gICAgdHlwZWRlZiBUMzggaXRlbTM4OwotICAgIHR5cGVkZWYgVDM5IGl0ZW0zOTsKLSAgICB0eXBlZGVmIFQ0MCBpdGVtNDA7Ci0gICAgdHlwZWRlZiBUNDEgaXRlbTQxOwotICAgIHR5cGVkZWYgVDQyIGl0ZW00MjsKLSAgICB0eXBlZGVmIFQ0MyBpdGVtNDM7Ci0gICAgdHlwZWRlZiBUNDQgaXRlbTQ0OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtNDU7Ci0gICAgdHlwZWRlZiBUNDQgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsNDUgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ1PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00NSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQKLSAgICAsIHR5cGVuYW1lIFQ0NQotICAgID4KLXN0cnVjdCB2ZWN0b3I0NgotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDQ2PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I0NiB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIHR5cGVkZWYgVDM1IGl0ZW0zNTsKLSAgICB0eXBlZGVmIFQzNiBpdGVtMzY7Ci0gICAgdHlwZWRlZiBUMzcgaXRlbTM3OwotICAgIHR5cGVkZWYgVDM4IGl0ZW0zODsKLSAgICB0eXBlZGVmIFQzOSBpdGVtMzk7Ci0gICAgdHlwZWRlZiBUNDAgaXRlbTQwOwotICAgIHR5cGVkZWYgVDQxIGl0ZW00MTsKLSAgICB0eXBlZGVmIFQ0MiBpdGVtNDI7Ci0gICAgdHlwZWRlZiBUNDMgaXRlbTQzOwotICAgIHR5cGVkZWYgVDQ0IGl0ZW00NDsKLSAgICB0eXBlZGVmIFQ0NSBpdGVtNDU7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW00NjsKLSAgICB0eXBlZGVmIFQ0NSBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw0NiA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDY8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0NTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsNDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQ2IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NAotICAgICwgdHlwZW5hbWUgVDQ1LCB0eXBlbmFtZSBUNDYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDcKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw0Nz4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNDcgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzNSBpdGVtMzU7Ci0gICAgdHlwZWRlZiBUMzYgaXRlbTM2OwotICAgIHR5cGVkZWYgVDM3IGl0ZW0zNzsKLSAgICB0eXBlZGVmIFQzOCBpdGVtMzg7Ci0gICAgdHlwZWRlZiBUMzkgaXRlbTM5OwotICAgIHR5cGVkZWYgVDQwIGl0ZW00MDsKLSAgICB0eXBlZGVmIFQ0MSBpdGVtNDE7Ci0gICAgdHlwZWRlZiBUNDIgaXRlbTQyOwotICAgIHR5cGVkZWYgVDQzIGl0ZW00MzsKLSAgICB0eXBlZGVmIFQ0NCBpdGVtNDQ7Ci0gICAgdHlwZWRlZiBUNDUgaXRlbTQ1OwotICAgIHR5cGVkZWYgVDQ2IGl0ZW00NjsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTQ3OwotICAgIHR5cGVkZWYgVDQ2IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDQ3ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0NzwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDYKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ3PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ2PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsNDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQ3IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NAotICAgICwgdHlwZW5hbWUgVDQ1LCB0eXBlbmFtZSBUNDYsIHR5cGVuYW1lIFQ0NwotICAgID4KLXN0cnVjdCB2ZWN0b3I0OAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDQ4PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I0OCB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIHR5cGVkZWYgVDM1IGl0ZW0zNTsKLSAgICB0eXBlZGVmIFQzNiBpdGVtMzY7Ci0gICAgdHlwZWRlZiBUMzcgaXRlbTM3OwotICAgIHR5cGVkZWYgVDM4IGl0ZW0zODsKLSAgICB0eXBlZGVmIFQzOSBpdGVtMzk7Ci0gICAgdHlwZWRlZiBUNDAgaXRlbTQwOwotICAgIHR5cGVkZWYgVDQxIGl0ZW00MTsKLSAgICB0eXBlZGVmIFQ0MiBpdGVtNDI7Ci0gICAgdHlwZWRlZiBUNDMgaXRlbTQzOwotICAgIHR5cGVkZWYgVDQ0IGl0ZW00NDsKLSAgICB0eXBlZGVmIFQ0NSBpdGVtNDU7Ci0gICAgdHlwZWRlZiBUNDYgaXRlbTQ2OwotICAgIHR5cGVkZWYgVDQ3IGl0ZW00NzsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTQ4OwotICAgIHR5cGVkZWYgVDQ3IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDQ4ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0ODwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0OD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDc8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDcKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ4PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDYKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ3PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDYKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsNDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQ4IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NAotICAgICwgdHlwZW5hbWUgVDQ1LCB0eXBlbmFtZSBUNDYsIHR5cGVuYW1lIFQ0NywgdHlwZW5hbWUgVDQ4Ci0gICAgPgotc3RydWN0IHZlY3RvcjQ5Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8NDk+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjQ5IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzNCBpdGVtMzQ7Ci0gICAgdHlwZWRlZiBUMzUgaXRlbTM1OwotICAgIHR5cGVkZWYgVDM2IGl0ZW0zNjsKLSAgICB0eXBlZGVmIFQzNyBpdGVtMzc7Ci0gICAgdHlwZWRlZiBUMzggaXRlbTM4OwotICAgIHR5cGVkZWYgVDM5IGl0ZW0zOTsKLSAgICB0eXBlZGVmIFQ0MCBpdGVtNDA7Ci0gICAgdHlwZWRlZiBUNDEgaXRlbTQxOwotICAgIHR5cGVkZWYgVDQyIGl0ZW00MjsKLSAgICB0eXBlZGVmIFQ0MyBpdGVtNDM7Ci0gICAgdHlwZWRlZiBUNDQgaXRlbTQ0OwotICAgIHR5cGVkZWYgVDQ1IGl0ZW00NTsKLSAgICB0eXBlZGVmIFQ0NiBpdGVtNDY7Ci0gICAgdHlwZWRlZiBUNDcgaXRlbTQ3OwotICAgIHR5cGVkZWYgVDQ4IGl0ZW00ODsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTQ5OwotICAgIHR5cGVkZWYgVDQ4IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDQ5ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0OTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDcKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ4PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00OAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0OD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDcKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ4PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ3Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00OSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQKLSAgICAsIHR5cGVuYW1lIFQ0NSwgdHlwZW5hbWUgVDQ2LCB0eXBlbmFtZSBUNDcsIHR5cGVuYW1lIFQ0OCwgdHlwZW5hbWUgVDQ5Ci0gICAgPgotc3RydWN0IHZlY3RvcjUwCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8NTA+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjUwIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzNCBpdGVtMzQ7Ci0gICAgdHlwZWRlZiBUMzUgaXRlbTM1OwotICAgIHR5cGVkZWYgVDM2IGl0ZW0zNjsKLSAgICB0eXBlZGVmIFQzNyBpdGVtMzc7Ci0gICAgdHlwZWRlZiBUMzggaXRlbTM4OwotICAgIHR5cGVkZWYgVDM5IGl0ZW0zOTsKLSAgICB0eXBlZGVmIFQ0MCBpdGVtNDA7Ci0gICAgdHlwZWRlZiBUNDEgaXRlbTQxOwotICAgIHR5cGVkZWYgVDQyIGl0ZW00MjsKLSAgICB0eXBlZGVmIFQ0MyBpdGVtNDM7Ci0gICAgdHlwZWRlZiBUNDQgaXRlbTQ0OwotICAgIHR5cGVkZWYgVDQ1IGl0ZW00NTsKLSAgICB0eXBlZGVmIFQ0NiBpdGVtNDY7Ci0gICAgdHlwZWRlZiBUNDcgaXRlbTQ3OwotICAgIHR5cGVkZWYgVDQ4IGl0ZW00ODsKLSAgICB0eXBlZGVmIFQ0OSBpdGVtNDk7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW01MDsKLSAgICB0eXBlZGVmIFQ0OSBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw1MCA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0OT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNTA8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ4Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDUwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0OTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDkKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjUwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ4Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDUwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0OTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00OAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViw1MCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNTAgdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yNTBfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yNTBfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlNWE2MzkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3RvcjUwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzI1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I1MF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgPgotc3RydWN0IHZlY3RvcjQxX2MKLSAgICA6IHZlY3RvcjQxPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4sIGludGVncmFsX2M8IFQsQzMzID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNCA+LCBpbnRlZ3JhbF9jPCBULEMzNSA+LCBpbnRlZ3JhbF9jPCBULEMzNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzcgPiwgaW50ZWdyYWxfYzwgVCxDMzggPiwgaW50ZWdyYWxfYzwgVCxDMzkgPiwgaW50ZWdyYWxfYzxUCi0gICAgICAgICwgQzQwPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0MV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgLCBUIEM0MQotICAgID4KLXN0cnVjdCB2ZWN0b3I0Ml9jCi0gICAgOiB2ZWN0b3I0MjwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzMSA+LCBpbnRlZ3JhbF9jPCBULEMzMiA+LCBpbnRlZ3JhbF9jPCBULEMzMyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzQgPiwgaW50ZWdyYWxfYzwgVCxDMzUgPiwgaW50ZWdyYWxfYzwgVCxDMzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM3ID4sIGludGVncmFsX2M8IFQsQzM4ID4sIGludGVncmFsX2M8IFQsQzM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0MCA+LCBpbnRlZ3JhbF9jPCBULEM0MSA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQyX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxLCBUIEM0MgotICAgID4KLXN0cnVjdCB2ZWN0b3I0M19jCi0gICAgOiB2ZWN0b3I0MzwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzMSA+LCBpbnRlZ3JhbF9jPCBULEMzMiA+LCBpbnRlZ3JhbF9jPCBULEMzMyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzQgPiwgaW50ZWdyYWxfYzwgVCxDMzUgPiwgaW50ZWdyYWxfYzwgVCxDMzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM3ID4sIGludGVncmFsX2M8IFQsQzM4ID4sIGludGVncmFsX2M8IFQsQzM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0MCA+LCBpbnRlZ3JhbF9jPCBULEM0MSA+LCBpbnRlZ3JhbF9jPCBULEM0MiA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQzX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxLCBUIEM0MiwgVCBDNDMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDRfYwotICAgIDogdmVjdG9yNDQ8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiwgaW50ZWdyYWxfYzwgVCxDMzMgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM0ID4sIGludGVncmFsX2M8IFQsQzM1ID4sIGludGVncmFsX2M8IFQsQzM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNyA+LCBpbnRlZ3JhbF9jPCBULEMzOCA+LCBpbnRlZ3JhbF9jPCBULEMzOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNDAgPiwgaW50ZWdyYWxfYzwgVCxDNDEgPiwgaW50ZWdyYWxfYzwgVCxDNDIgPiwgaW50ZWdyYWxfYzxUCi0gICAgICAgICwgQzQzPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0NF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgLCBUIEM0MSwgVCBDNDIsIFQgQzQzLCBUIEM0NAotICAgID4KLXN0cnVjdCB2ZWN0b3I0NV9jCi0gICAgOiB2ZWN0b3I0NTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzMSA+LCBpbnRlZ3JhbF9jPCBULEMzMiA+LCBpbnRlZ3JhbF9jPCBULEMzMyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzQgPiwgaW50ZWdyYWxfYzwgVCxDMzUgPiwgaW50ZWdyYWxfYzwgVCxDMzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM3ID4sIGludGVncmFsX2M8IFQsQzM4ID4sIGludGVncmFsX2M8IFQsQzM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0MCA+LCBpbnRlZ3JhbF9jPCBULEM0MSA+LCBpbnRlZ3JhbF9jPCBULEM0MiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNDMgPiwgaW50ZWdyYWxfYzwgVCxDNDQgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0NV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgLCBUIEM0MSwgVCBDNDIsIFQgQzQzLCBUIEM0NCwgVCBDNDUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDZfYwotICAgIDogdmVjdG9yNDY8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiwgaW50ZWdyYWxfYzwgVCxDMzMgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM0ID4sIGludGVncmFsX2M8IFQsQzM1ID4sIGludGVncmFsX2M8IFQsQzM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNyA+LCBpbnRlZ3JhbF9jPCBULEMzOCA+LCBpbnRlZ3JhbF9jPCBULEMzOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNDAgPiwgaW50ZWdyYWxfYzwgVCxDNDEgPiwgaW50ZWdyYWxfYzwgVCxDNDIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQzID4sIGludGVncmFsX2M8IFQsQzQ0ID4sIGludGVncmFsX2M8IFQsQzQ1ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDZfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEsIFQgQzQyLCBUIEM0MywgVCBDNDQsIFQgQzQ1LCBUIEM0NgotICAgID4KLXN0cnVjdCB2ZWN0b3I0N19jCi0gICAgOiB2ZWN0b3I0NzwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzMSA+LCBpbnRlZ3JhbF9jPCBULEMzMiA+LCBpbnRlZ3JhbF9jPCBULEMzMyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzQgPiwgaW50ZWdyYWxfYzwgVCxDMzUgPiwgaW50ZWdyYWxfYzwgVCxDMzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM3ID4sIGludGVncmFsX2M8IFQsQzM4ID4sIGludGVncmFsX2M8IFQsQzM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0MCA+LCBpbnRlZ3JhbF9jPCBULEM0MSA+LCBpbnRlZ3JhbF9jPCBULEM0MiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNDMgPiwgaW50ZWdyYWxfYzwgVCxDNDQgPiwgaW50ZWdyYWxfYzwgVCxDNDUgPiwgaW50ZWdyYWxfYzxUCi0gICAgICAgICwgQzQ2PiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0N19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgLCBUIEM0MSwgVCBDNDIsIFQgQzQzLCBUIEM0NCwgVCBDNDUsIFQgQzQ2LCBUIEM0NwotICAgID4KLXN0cnVjdCB2ZWN0b3I0OF9jCi0gICAgOiB2ZWN0b3I0ODwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzMSA+LCBpbnRlZ3JhbF9jPCBULEMzMiA+LCBpbnRlZ3JhbF9jPCBULEMzMyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzQgPiwgaW50ZWdyYWxfYzwgVCxDMzUgPiwgaW50ZWdyYWxfYzwgVCxDMzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM3ID4sIGludGVncmFsX2M8IFQsQzM4ID4sIGludGVncmFsX2M8IFQsQzM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0MCA+LCBpbnRlZ3JhbF9jPCBULEM0MSA+LCBpbnRlZ3JhbF9jPCBULEM0MiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNDMgPiwgaW50ZWdyYWxfYzwgVCxDNDQgPiwgaW50ZWdyYWxfYzwgVCxDNDUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQ2ID4sIGludGVncmFsX2M8IFQsQzQ3ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDhfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEsIFQgQzQyLCBUIEM0MywgVCBDNDQsIFQgQzQ1LCBUIEM0NiwgVCBDNDcsIFQgQzQ4Ci0gICAgPgotc3RydWN0IHZlY3RvcjQ5X2MKLSAgICA6IHZlY3RvcjQ5PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4sIGludGVncmFsX2M8IFQsQzMzID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNCA+LCBpbnRlZ3JhbF9jPCBULEMzNSA+LCBpbnRlZ3JhbF9jPCBULEMzNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzcgPiwgaW50ZWdyYWxfYzwgVCxDMzggPiwgaW50ZWdyYWxfYzwgVCxDMzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQwID4sIGludGVncmFsX2M8IFQsQzQxID4sIGludGVncmFsX2M8IFQsQzQyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0MyA+LCBpbnRlZ3JhbF9jPCBULEM0NCA+LCBpbnRlZ3JhbF9jPCBULEM0NSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNDYgPiwgaW50ZWdyYWxfYzwgVCxDNDcgPiwgaW50ZWdyYWxfYzwgVCxDNDggPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0OV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgLCBUIEM0MSwgVCBDNDIsIFQgQzQzLCBUIEM0NCwgVCBDNDUsIFQgQzQ2LCBUIEM0NywgVCBDNDgsIFQgQzQ5Ci0gICAgPgotc3RydWN0IHZlY3RvcjUwX2MKLSAgICA6IHZlY3RvcjUwPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4sIGludGVncmFsX2M8IFQsQzMzID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNCA+LCBpbnRlZ3JhbF9jPCBULEMzNSA+LCBpbnRlZ3JhbF9jPCBULEMzNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzcgPiwgaW50ZWdyYWxfYzwgVCxDMzggPiwgaW50ZWdyYWxfYzwgVCxDMzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQwID4sIGludGVncmFsX2M8IFQsQzQxID4sIGludGVncmFsX2M8IFQsQzQyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0MyA+LCBpbnRlZ3JhbF9jPCBULEM0NCA+LCBpbnRlZ3JhbF9jPCBULEM0NSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNDYgPiwgaW50ZWdyYWxfYzwgVCxDNDcgPiwgaW50ZWdyYWxfYzwgVCxDNDggPiwgaW50ZWdyYWxfYzxUCi0gICAgICAgICwgQzQ5PiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I1MF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3IxMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvdHlwZW9mX2Jhc2VkL3ZlY3RvcjEwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTRmNGEyMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvdHlwZW9mX2Jhc2VkL3ZlY3RvcjEwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzOSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMTAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMQotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQwCi0gICAgICAgICwgdmVjdG9yMDwgID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMgotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQxCi0gICAgICAgICwgdmVjdG9yMTxUMD4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IHZlY3RvcjMKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUMgotICAgICAgICAsIHZlY3RvcjI8IFQwLFQxID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCB2ZWN0b3I0Ci0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDMKLSAgICAgICAgLCB2ZWN0b3IzPCBUMCxUMSxUMiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IHZlY3RvcjUKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUNAotICAgICAgICAsIHZlY3RvcjQ8IFQwLFQxLFQyLFQzID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yNSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IHZlY3RvcjYKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUNQotICAgICAgICAsIHZlY3RvcjU8IFQwLFQxLFQyLFQzLFQ0ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yNiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCB2ZWN0b3I3Ci0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDYKLSAgICAgICAgLCB2ZWN0b3I2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IHZlY3RvcjgKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUNwotICAgICAgICAsIHZlY3Rvcjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yOCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IHZlY3RvcjkKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUOAotICAgICAgICAsIHZlY3Rvcjg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yOSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCB2ZWN0b3IxMAotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQ5Ci0gICAgICAgICwgdmVjdG9yOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxMCB0eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC90eXBlb2ZfYmFzZWQvdmVjdG9yMTBfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvdHlwZW9mX2Jhc2VkL3ZlY3RvcjEwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMGExODIxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC90eXBlb2ZfYmFzZWQvdmVjdG9yMTBfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjEwX2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMAotICAgID4KLXN0cnVjdCB2ZWN0b3IxX2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCB2ZWN0b3IwX2M8VD4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMl9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMSA+Ci0gICAgICAgICwgdmVjdG9yMV9jPCBULEMwID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yM19jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgdmVjdG9yMl9jPCBULEMwLEMxID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yM19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNF9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMyA+Ci0gICAgICAgICwgdmVjdG9yM19jPCBULEMwLEMxLEMyID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yNF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNV9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDNCA+Ci0gICAgICAgICwgdmVjdG9yNF9jPCBULEMwLEMxLEMyLEMzID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yNV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNl9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDNSA+Ci0gICAgICAgICwgdmVjdG9yNV9jPCBULEMwLEMxLEMyLEMzLEM0ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yNl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yN19jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgdmVjdG9yNl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yN19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yOF9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDNyA+Ci0gICAgICAgICwgdmVjdG9yN19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yOF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yOV9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDOCA+Ci0gICAgICAgICwgdmVjdG9yOF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yOV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTBfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIHZlY3RvcjlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjEwX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvdHlwZW9mX2Jhc2VkL3ZlY3RvcjIwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC90eXBlb2ZfYmFzZWQvdmVjdG9yMjAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTM0ZjMwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC90eXBlb2ZfYmFzZWQvdmVjdG9yMjAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTU5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IyMC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IHZlY3RvcjExCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDEwCi0gICAgICAgICwgdmVjdG9yMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTEgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IHZlY3RvcjEyCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDExCi0gICAgICAgICwgdmVjdG9yMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjEyIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IHZlY3RvcjEzCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDEyCi0gICAgICAgICwgdmVjdG9yMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxMyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IHZlY3RvcjE0Ci0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDEzCi0gICAgICAgICwgdmVjdG9yMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IHZlY3RvcjE1Ci0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDE0Ci0gICAgICAgICwgdmVjdG9yMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjE1IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IHZlY3RvcjE2Ci0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDE1Ci0gICAgICAgICwgdmVjdG9yMTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxNiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IHZlY3RvcjE3Ci0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDE2Ci0gICAgICAgICwgdmVjdG9yMTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IHZlY3RvcjE4Ci0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDE3Ci0gICAgICAgICwgdmVjdG9yMTc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjE4IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IHZlY3RvcjE5Ci0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDE4Ci0gICAgICAgICwgdmVjdG9yMTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxOSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IHZlY3RvcjIwCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDE5Ci0gICAgICAgICwgdmVjdG9yMTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjAgdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvdHlwZW9mX2Jhc2VkL3ZlY3RvcjIwX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3IyMF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTUxZTc4ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvdHlwZW9mX2Jhc2VkL3ZlY3RvcjIwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTYzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IyMF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgPgotc3RydWN0IHZlY3RvcjExX2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMxMCA+Ci0gICAgICAgICwgdmVjdG9yMTBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjExX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExCi0gICAgPgotc3RydWN0IHZlY3RvcjEyX2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMxMSA+Ci0gICAgICAgICwgdmVjdG9yMTFfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxMl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTNfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCB2ZWN0b3IxMl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxM19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzCi0gICAgPgotc3RydWN0IHZlY3RvcjE0X2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMxMyA+Ci0gICAgICAgICwgdmVjdG9yMTNfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjE0X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0Ci0gICAgPgotc3RydWN0IHZlY3RvcjE1X2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMxNCA+Ci0gICAgICAgICwgdmVjdG9yMTRfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxNV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTZfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCB2ZWN0b3IxNV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxNl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2Ci0gICAgPgotc3RydWN0IHZlY3RvcjE3X2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMxNiA+Ci0gICAgICAgICwgdmVjdG9yMTZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjE3X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3Ci0gICAgPgotc3RydWN0IHZlY3RvcjE4X2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMxNyA+Ci0gICAgICAgICwgdmVjdG9yMTdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxOF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTlfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCB2ZWN0b3IxOF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxOV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5Ci0gICAgPgotc3RydWN0IHZlY3RvcjIwX2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMxOSA+Ci0gICAgICAgICwgdmVjdG9yMTlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjIwX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvdHlwZW9mX2Jhc2VkL3ZlY3RvcjMwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC90eXBlb2ZfYmFzZWQvdmVjdG9yMzAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzZkNWRmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC90eXBlb2ZfYmFzZWQvdmVjdG9yMzAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTc5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IzMC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjEKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUMjAKLSAgICAgICAgLCB2ZWN0b3IyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjEgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjIKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUMjEKLSAgICAgICAgLCB2ZWN0b3IyMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjIyIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjMKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUMjIKLSAgICAgICAgLCB2ZWN0b3IyMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyMyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjQKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUMjMKLSAgICAgICAgLCB2ZWN0b3IyMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjUKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUMjQKLSAgICAgICAgLCB2ZWN0b3IyNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjI1IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjYKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUMjUKLSAgICAgICAgLCB2ZWN0b3IyNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyNiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjcKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUMjYKLSAgICAgICAgLCB2ZWN0b3IyNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjgKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUMjcKLSAgICAgICAgLCB2ZWN0b3IyNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjI4IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjkKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUMjgKLSAgICAgICAgLCB2ZWN0b3IyODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyOSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzAKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUMjkKLSAgICAgICAgLCB2ZWN0b3IyOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzAgdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvdHlwZW9mX2Jhc2VkL3ZlY3RvcjMwX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3IzMF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjdmYTIzNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvdHlwZW9mX2Jhc2VkL3ZlY3RvcjMwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTczICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IzMF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgID4KLXN0cnVjdCB2ZWN0b3IyMV9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMjAgPgotICAgICAgICAsIHZlY3RvcjIwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjFfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxCi0gICAgPgotc3RydWN0IHZlY3RvcjIyX2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgdmVjdG9yMjFfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjJfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMgotICAgID4KLXN0cnVjdCB2ZWN0b3IyM19jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMjIgPgotICAgICAgICAsIHZlY3RvcjIyX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyM19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMwotICAgID4KLXN0cnVjdCB2ZWN0b3IyNF9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMjMgPgotICAgICAgICAsIHZlY3RvcjIzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjRfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0Ci0gICAgPgotc3RydWN0IHZlY3RvcjI1X2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgdmVjdG9yMjRfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjVfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNQotICAgID4KLXN0cnVjdCB2ZWN0b3IyNl9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMjUgPgotICAgICAgICAsIHZlY3RvcjI1X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyNl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNgotICAgID4KLXN0cnVjdCB2ZWN0b3IyN19jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMjYgPgotICAgICAgICAsIHZlY3RvcjI2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjdfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3Ci0gICAgPgotc3RydWN0IHZlY3RvcjI4X2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgdmVjdG9yMjdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjhfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOAotICAgID4KLXN0cnVjdCB2ZWN0b3IyOV9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMjggPgotICAgICAgICAsIHZlY3RvcjI4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyOV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOQotICAgID4KLXN0cnVjdCB2ZWN0b3IzMF9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMjkgPgotICAgICAgICAsIHZlY3RvcjI5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzBfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC90eXBlb2ZfYmFzZWQvdmVjdG9yNDAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3I0MC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhMTQyMzUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3I0MC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOTkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjQwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwCi0gICAgPgotc3RydWN0IHZlY3RvcjMxCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDMwCi0gICAgICAgICwgdmVjdG9yMzA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjkgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzMSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxCi0gICAgPgotc3RydWN0IHZlY3RvcjMyCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDMxCi0gICAgICAgICwgdmVjdG9yMzE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzIgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyCi0gICAgPgotc3RydWN0IHZlY3RvcjMzCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDMyCi0gICAgICAgICwgdmVjdG9yMzI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjMzIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzCi0gICAgPgotc3RydWN0IHZlY3RvcjM0Ci0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDMzCi0gICAgICAgICwgdmVjdG9yMzM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzNCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgPgotc3RydWN0IHZlY3RvcjM1Ci0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDM0Ci0gICAgICAgICwgdmVjdG9yMzQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIsVDMzID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1Ci0gICAgPgotc3RydWN0IHZlY3RvcjM2Ci0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDM1Ci0gICAgICAgICwgdmVjdG9yMzU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIsVDMzLFQzNCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjM2IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2Ci0gICAgPgotc3RydWN0IHZlY3RvcjM3Ci0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDM2Ci0gICAgICAgICwgdmVjdG9yMzY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIsVDMzLFQzNCxUMzUgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzNyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3Ci0gICAgPgotc3RydWN0IHZlY3RvcjM4Ci0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDM3Ci0gICAgICAgICwgdmVjdG9yMzc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIsVDMzLFQzNCxUMzUsVDM2ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzggdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4Ci0gICAgPgotc3RydWN0IHZlY3RvcjM5Ci0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDM4Ci0gICAgICAgICwgdmVjdG9yMzg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIsVDMzLFQzNCxUMzUsVDM2LFQzNyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjM5IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgPgotc3RydWN0IHZlY3RvcjQwCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDM5Ci0gICAgICAgICwgdmVjdG9yMzk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIsVDMzLFQzNCxUMzUsVDM2LFQzNyxUMzggPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0MCB0eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC90eXBlb2ZfYmFzZWQvdmVjdG9yNDBfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvdHlwZW9mX2Jhc2VkL3ZlY3RvcjQwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYTc0OGE5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC90eXBlb2ZfYmFzZWQvdmVjdG9yNDBfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjQwX2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgID4KLXN0cnVjdCB2ZWN0b3IzMV9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIHZlY3RvcjMwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjMxX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzJfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzMxID4KLSAgICAgICAgLCB2ZWN0b3IzMV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzJfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzNfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzMyID4KLSAgICAgICAgLCB2ZWN0b3IzMl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjMzX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMwotICAgID4KLXN0cnVjdCB2ZWN0b3IzNF9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMzMgPgotICAgICAgICAsIHZlY3RvcjMzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjM0X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzVfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzM0ID4KLSAgICAgICAgLCB2ZWN0b3IzNF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSxDMzIsQzMzID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzVfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzZfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzM1ID4KLSAgICAgICAgLCB2ZWN0b3IzNV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSxDMzIsQzMzLEMzNCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjM2X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNgotICAgID4KLXN0cnVjdCB2ZWN0b3IzN19jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMzYgPgotICAgICAgICAsIHZlY3RvcjM2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMsQzM0LEMzNSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjM3X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzhfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzM3ID4KLSAgICAgICAgLCB2ZWN0b3IzN19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSxDMzIsQzMzLEMzNCxDMzUsQzM2ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzhfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzlfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzM4ID4KLSAgICAgICAgLCB2ZWN0b3IzOF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSxDMzIsQzMzLEMzNCxDMzUsQzM2LEMzNyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjM5X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOQotICAgID4KLXN0cnVjdCB2ZWN0b3I0MF9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMzkgPgotICAgICAgICAsIHZlY3RvcjM5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMsQzM0LEMzNSxDMzYsQzM3LEMzOCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQwX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvdHlwZW9mX2Jhc2VkL3ZlY3RvcjUwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC90eXBlb2ZfYmFzZWQvdmVjdG9yNTAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZjZhZTY3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC90eXBlb2ZfYmFzZWQvdmVjdG9yNTAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjE5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I1MC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwCi0gICAgPgotc3RydWN0IHZlY3RvcjQxCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDQwCi0gICAgICAgICwgdmVjdG9yNDA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIsVDMzLFQzNCxUMzUsVDM2LFQzNyxUMzgsVDM5ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDEgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxCi0gICAgPgotc3RydWN0IHZlY3RvcjQyCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDQxCi0gICAgICAgICwgdmVjdG9yNDE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIsVDMzLFQzNCxUMzUsVDM2LFQzNyxUMzgsVDM5LFQ0MCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQyIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyCi0gICAgPgotc3RydWN0IHZlY3RvcjQzCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDQyCi0gICAgICAgICwgdmVjdG9yNDI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIsVDMzLFQzNCxUMzUsVDM2LFQzNyxUMzgsVDM5LFQ0MCxUNDEgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0MyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzCi0gICAgPgotc3RydWN0IHZlY3RvcjQ0Ci0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDQzCi0gICAgICAgICwgdmVjdG9yNDM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIsVDMzLFQzNCxUMzUsVDM2LFQzNyxUMzgsVDM5LFQ0MCxUNDEsVDQyID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0Ci0gICAgPgotc3RydWN0IHZlY3RvcjQ1Ci0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDQ0Ci0gICAgICAgICwgdmVjdG9yNDQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIsVDMzLFQzNCxUMzUsVDM2LFQzNyxUMzgsVDM5LFQ0MCxUNDEsVDQyLFQ0MyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQ1IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NAotICAgICwgdHlwZW5hbWUgVDQ1Ci0gICAgPgotc3RydWN0IHZlY3RvcjQ2Ci0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDQ1Ci0gICAgICAgICwgdmVjdG9yNDU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIsVDMzLFQzNCxUMzUsVDM2LFQzNyxUMzgsVDM5LFQ0MCxUNDEsVDQyLFQ0MyxUNDQgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0NiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQKLSAgICAsIHR5cGVuYW1lIFQ0NSwgdHlwZW5hbWUgVDQ2Ci0gICAgPgotc3RydWN0IHZlY3RvcjQ3Ci0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDQ2Ci0gICAgICAgICwgdmVjdG9yNDY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIsVDMzLFQzNCxUMzUsVDM2LFQzNyxUMzgsVDM5LFQ0MCxUNDEsVDQyLFQ0MyxUNDQsVDQ1ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0Ci0gICAgLCB0eXBlbmFtZSBUNDUsIHR5cGVuYW1lIFQ0NiwgdHlwZW5hbWUgVDQ3Ci0gICAgPgotc3RydWN0IHZlY3RvcjQ4Ci0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDQ3Ci0gICAgICAgICwgdmVjdG9yNDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIsVDMzLFQzNCxUMzUsVDM2LFQzNyxUMzgsVDM5LFQ0MCxUNDEsVDQyLFQ0MyxUNDQsVDQ1LFQ0NiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQ4IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NAotICAgICwgdHlwZW5hbWUgVDQ1LCB0eXBlbmFtZSBUNDYsIHR5cGVuYW1lIFQ0NywgdHlwZW5hbWUgVDQ4Ci0gICAgPgotc3RydWN0IHZlY3RvcjQ5Ci0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDQ4Ci0gICAgICAgICwgdmVjdG9yNDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIsVDMzLFQzNCxUMzUsVDM2LFQzNyxUMzgsVDM5LFQ0MCxUNDEsVDQyLFQ0MyxUNDQsVDQ1LFQ0NixUNDcgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0OSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQKLSAgICAsIHR5cGVuYW1lIFQ0NSwgdHlwZW5hbWUgVDQ2LCB0eXBlbmFtZSBUNDcsIHR5cGVuYW1lIFQ0OCwgdHlwZW5hbWUgVDQ5Ci0gICAgPgotc3RydWN0IHZlY3RvcjUwCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDQ5Ci0gICAgICAgICwgdmVjdG9yNDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIsVDMzLFQzNCxUMzUsVDM2LFQzNyxUMzgsVDM5LFQ0MCxUNDEsVDQyLFQ0MyxUNDQsVDQ1LFQ0NixUNDcsVDQ4ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yNTAgdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvdHlwZW9mX2Jhc2VkL3ZlY3RvcjUwX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3I1MF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODY5YzZhMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvdHlwZW9mX2Jhc2VkL3ZlY3RvcjUwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTkzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I1MF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgPgotc3RydWN0IHZlY3RvcjQxX2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEM0MCA+Ci0gICAgICAgICwgdmVjdG9yNDBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1LEMzNixDMzcsQzM4LEMzOSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQxX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxCi0gICAgPgotc3RydWN0IHZlY3RvcjQyX2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEM0MSA+Ci0gICAgICAgICwgdmVjdG9yNDFfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1LEMzNixDMzcsQzM4LEMzOSxDNDAgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0Ml9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgLCBUIEM0MSwgVCBDNDIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDNfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzQyID4KLSAgICAgICAgLCB2ZWN0b3I0Ml9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSxDMzIsQzMzLEMzNCxDMzUsQzM2LEMzNyxDMzgsQzM5LEM0MCxDNDEgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0M19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgLCBUIEM0MSwgVCBDNDIsIFQgQzQzCi0gICAgPgotc3RydWN0IHZlY3RvcjQ0X2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEM0MyA+Ci0gICAgICAgICwgdmVjdG9yNDNfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1LEMzNixDMzcsQzM4LEMzOSxDNDAsQzQxLEM0MiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQ0X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxLCBUIEM0MiwgVCBDNDMsIFQgQzQ0Ci0gICAgPgotc3RydWN0IHZlY3RvcjQ1X2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEM0NCA+Ci0gICAgICAgICwgdmVjdG9yNDRfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1LEMzNixDMzcsQzM4LEMzOSxDNDAsQzQxLEM0MixDNDMgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0NV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgLCBUIEM0MSwgVCBDNDIsIFQgQzQzLCBUIEM0NCwgVCBDNDUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDZfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzQ1ID4KLSAgICAgICAgLCB2ZWN0b3I0NV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSxDMzIsQzMzLEMzNCxDMzUsQzM2LEMzNyxDMzgsQzM5LEM0MCxDNDEsQzQyLEM0MyxDNDQgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0Nl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgLCBUIEM0MSwgVCBDNDIsIFQgQzQzLCBUIEM0NCwgVCBDNDUsIFQgQzQ2Ci0gICAgPgotc3RydWN0IHZlY3RvcjQ3X2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEM0NiA+Ci0gICAgICAgICwgdmVjdG9yNDZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1LEMzNixDMzcsQzM4LEMzOSxDNDAsQzQxLEM0MixDNDMsQzQ0LEM0NSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQ3X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxLCBUIEM0MiwgVCBDNDMsIFQgQzQ0LCBUIEM0NSwgVCBDNDYsIFQgQzQ3Ci0gICAgPgotc3RydWN0IHZlY3RvcjQ4X2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEM0NyA+Ci0gICAgICAgICwgdmVjdG9yNDdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1LEMzNixDMzcsQzM4LEMzOSxDNDAsQzQxLEM0MixDNDMsQzQ0LEM0NSxDNDYgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0OF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgLCBUIEM0MSwgVCBDNDIsIFQgQzQzLCBUIEM0NCwgVCBDNDUsIFQgQzQ2LCBUIEM0NywgVCBDNDgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDlfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzQ4ID4KLSAgICAgICAgLCB2ZWN0b3I0OF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSxDMzIsQzMzLEMzNCxDMzUsQzM2LEMzNyxDMzgsQzM5LEM0MCxDNDEsQzQyLEM0MyxDNDQsQzQ1LEM0NixDNDcgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0OV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgLCBUIEM0MSwgVCBDNDIsIFQgQzQzLCBUIEM0NCwgVCBDNDUsIFQgQzQ2LCBUIEM0NywgVCBDNDgsIFQgQzQ5Ci0gICAgPgotc3RydWN0IHZlY3RvcjUwX2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEM0OSA+Ci0gICAgICAgICwgdmVjdG9yNDlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1LEMzNixDMzcsQzM4LEMzOSxDNDAsQzQxLEM0MixDNDMsQzQ0LEM0NSxDNDYsQzQ3LEM0OCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjUwX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wdXNoX2JhY2suaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHVzaF9iYWNrLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjYxZDliMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wdXNoX2JhY2suaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX1BVU0hfQkFDS19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfUFVTSF9CQUNLX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogcHVzaF9iYWNrLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3B1c2hfYmFja19md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90eXBlb2YuaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMpCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vaXRlbS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3RhZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2X2l0ZW08VCxWZWN0b3IsMD4gdHlwZTsKLSAgICB9OwotfTsKLQotfX0KLQotI2VuZGlmIAotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfUFVTSF9CQUNLX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHVzaF9mcm9udC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wdXNoX2Zyb250LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDY0M2ZlZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wdXNoX2Zyb250LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9QVVNIX0ZST05UX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9QVVNIX0ZST05UX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogcHVzaF9mcm9udC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9wdXNoX2Zyb250X2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R5cGVvZi5ocHA+Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUykKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9pdGVtLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vdGFnLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2X2l0ZW08VCxWZWN0b3IsMT4gdHlwZTsKLSAgICB9OwotfTsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfUFVTSF9GUk9OVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3NpemUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vc2l6ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzODdhZmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vc2l6ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfU0laRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfU0laRV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHNpemUuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvc2l6ZV9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9PMV9zaXplLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vdGFnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHlwZW9mLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMpCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZyA+Ci0gICAgOiBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZyA+Ci17Ci19OwotCi0jZWxzZQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Tj4gPgotICAgIDogTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Tj4gPgotewotfTsKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfU0laRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3RhZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy90YWcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiY2Q1MWQ0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3RhZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfVEFHX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9UQUdfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB0YWcuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHlwZW9mLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9udHRwX2RlY2wuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXN0cnVjdCB2X2l0ZXJfdGFnOwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMpCi1zdHJ1Y3QgdmVjdG9yX3RhZzsKLSNlbHNlCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0wobG9uZywgTikgPiBzdHJ1Y3QgdmVjdG9yX3RhZzsKLSNlbmRpZgotCi19fX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX1RBR19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ZlY3RvcjAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vdmVjdG9yMC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhYWRiMTMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vdmVjdG9yMC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfVkVDVE9SMF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfVkVDVE9SMF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHZlY3RvcjAuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbG9uZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZvaWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy90eXBlX3dyYXBwZXIuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2l0ZXJhdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vdGFnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHlwZW9mLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBEdW1teSA9IG5hID4gc3RydWN0IHZlY3RvcjA7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHZlY3RvcjA8bmE+Ci17Ci0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMpCi0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWcgdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMCAgICAgICAgIHR5cGU7Ci0gICAgdHlwZWRlZiBsb25nXzwzMjc2OD4gICAgbG93ZXJfYm91bmRfOwotICAgIHR5cGVkZWYgbG93ZXJfYm91bmRfICAgIHVwcGVyX2JvdW5kXzsKLSAgICB0eXBlZGVmIGxvbmdfPDA+ICAgICAgICBzaXplOwotCi0gICAgc3RhdGljIGF1eDo6dHlwZV93cmFwcGVyPHZvaWRfPiBpdGVtXyguLi4pOwotI2Vsc2UKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwwPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IwIHR5cGU7Ci0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMDsKLSAgICAKLSAgICB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IwPD4sMD4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMDw+LDA+IGVuZDsKLSNlbmRpZgotfTsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX1ZFQ1RPUjBfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlMTFiNjEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SMF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1IwX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogdmVjdG9yMC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9hdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2Zyb250LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHVzaF9mcm9udC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3BvcF9mcm9udC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3B1c2hfYmFjay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3BvcF9iYWNrLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vYmFjay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2NsZWFyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vTzFfc2l6ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3NpemUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9lbXB0eS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2l0ZW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9pdGVyYXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ZlY3RvcjAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9iZWdpbl9lbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy90YWcuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1IwX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjBfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWM2YmJhYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjBfQ19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1IwX0NfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB2ZWN0b3IwX2MuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pbnRlZ3JhbF9jLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHZlY3RvcjBfYwotICAgIDogdmVjdG9yMDw+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IwX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjBfQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IxMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMTAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZGI0OGNiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IxMC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1IxMF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1IxMF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHZlY3RvcjEwLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjAuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiB2ZWN0b3IxMC5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R5cGVvZi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywoMCwgMTAsIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vbnVtYmVyZWQuaHBwPikpCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SMTBfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMTBfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMTBfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhZmQxZjkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjEwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SMTBfQ19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1IxMF9DX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogdmVjdG9yMTBfYy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IwX2MuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMTAuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiB2ZWN0b3IxMF9jLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHlwZW9mLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgxLCAxMCwgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9udW1iZXJlZF9jLmhwcD4pKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjEwX0NfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMjAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjIwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2IwYTBkNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMjAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SMjBfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SMjBfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB2ZWN0b3IyMC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IxMC5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIHZlY3RvcjIwLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHlwZW9mLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgxMSwgMjAsIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vbnVtYmVyZWQuaHBwPikpCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SMjBfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMjBfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMjBfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzMjRlZDIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjIwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SMjBfQ19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1IyMF9DX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogdmVjdG9yMjBfYy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IxMF9jLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjIwLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgdmVjdG9yMjBfYy5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R5cGVvZi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywoMTEsIDIwLCA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL251bWJlcmVkX2MuaHBwPikpCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SMjBfQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IzMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMzAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZWU0ZTQ2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IzMC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1IzMF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1IzMF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHZlY3RvcjMwLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjIwLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgdmVjdG9yMzAuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90eXBlb2YuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDIxLCAzMCwgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9udW1iZXJlZC5ocHA+KSkKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1IzMF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IzMF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IzMF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWNhMTBmMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMzBfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1IzMF9DX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjMwX0NfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB2ZWN0b3IzMF9jLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjIwX2MuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMzAuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiB2ZWN0b3IzMF9jLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHlwZW9mLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDIxLCAzMCwgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9udW1iZXJlZF9jLmhwcD4pKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX1VTRV9QUkVQUk9DRVNTRURfSEVBREVSUwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1IzMF9DX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjQwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I0MC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1NWZmZDcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjQwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjQwX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjQwX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogdmVjdG9yNDAuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMzAuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiB2ZWN0b3I0MC5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R5cGVvZi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywoMzEsIDQwLCA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL251bWJlcmVkLmhwcD4pKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjQwX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjQwX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjQwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDQ3YTAyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I0MF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjQwX0NfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SNDBfQ19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHZlY3RvcjQwX2MuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMzBfYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I0MC5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIHZlY3RvcjQwX2MuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90eXBlb2YuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDMxLCA0MCwgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9udW1iZXJlZF9jLmhwcD4pKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjQwX0NfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yNTAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjUwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmZhOTE2YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yNTAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SNTBfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SNTBfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB2ZWN0b3I1MC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I0MC5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIHZlY3RvcjUwLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHlwZW9mLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCg0MSwgNTAsIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vbnVtYmVyZWQuaHBwPikpCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SNTBfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yNTBfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yNTBfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiZGNmNjQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjUwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SNTBfQ19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1I1MF9DX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogdmVjdG9yNTBfYy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I0MF9jLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjUwLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgdmVjdG9yNTBfYy5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R5cGVvZi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywoNDEsIDUwLCA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL251bWJlcmVkX2MuaHBwPikpCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SNTBfQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZvaWQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdm9pZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhYTIzN2IuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdm9pZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1ZPSURfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WT0lEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogdm9pZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92b2lkX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9tc3ZjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLQotLy8gIFtKREcgRmViLTQtMjAwM10gbWFkZSB2b2lkXyBhIGNvbXBsZXRlIHR5cGUgdG8gYWxsb3cgaXQgdG8gYmUKLS8vICBpbnN0YW50aWF0ZWQgc28gdGhhdCBpdCBjYW4gYmUgcGFzc2VkIGluIGFzIGFuIG9iamVjdCB0aGF0IGNhbiBiZQotLy8gIHVzZWQgdG8gc2VsZWN0IGFuIG92ZXJsb2FkZWQgZnVuY3Rpb24uIFBvc3NpYmxlIHVzZSBpbmNsdWRlcyBzaWduYWxpbmcKLS8vICBhIHplcm8gYXJpdHkgZnVuY3RvciBldmFsdWF0aW9uIGNhbGwuCi1zdHJ1Y3Qgdm9pZF8geyB0eXBlZGVmIHZvaWRfIHR5cGU7IH07Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgaXNfdm9pZF8KLSAgICA6IGZhbHNlXwotewotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotICAgIHVzaW5nIGZhbHNlXzo6dmFsdWU7Ci0jZW5kaWYKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc192b2lkXzx2b2lkXz4KLSAgICA6IHRydWVfCi17Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0gICAgdXNpbmcgdHJ1ZV86OnZhbHVlOwotI2VuZGlmCi19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgaXNfbm90X3ZvaWRfCi0gICAgOiB0cnVlXwotewotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotICAgIHVzaW5nIHRydWVfOjp2YWx1ZTsKLSNlbmRpZgotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX25vdF92b2lkXzx2b2lkXz4KLSAgICA6IGZhbHNlXwotewotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotICAgIHVzaW5nIGZhbHNlXzo6dmFsdWU7Ci0jZW5kaWYKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygxLCBpc192b2lkXykKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygxLCBpc19ub3Rfdm9pZF8pCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVk9JRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZvaWRfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZvaWRfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGYyYTc2ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92b2lkX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1ZPSURfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfVk9JRF9GV0RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB2b2lkX2Z3ZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2FkbF9iYXJyaWVyLmhwcD4KLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotCi1zdHJ1Y3Qgdm9pZF87Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX0RFQ0wodm9pZF8pCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVk9JRF9GV0RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L25leHRfcHJpb3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9uZXh0X3ByaW9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGU2MDI4MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L25leHRfcHJpb3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotLy8gIEJvb3N0IG5leHRfcHJpb3IuaHBwIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgKEMpIENvcHlyaWdodCBEYXZlIEFicmFoYW1zIGFuZCBEYW5pZWwgV2Fsa2VyIDE5OTktMjAwMy4gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0Ci0vLyAgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy91dGlsaXR5IGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAgUmV2aXNpb24gSGlzdG9yeQotLy8gIDEzIERlYyAyMDAzICBBZGRlZCBuZXh0KHgsIG4pIGFuZCBwcmlvcih4LCBuKSAoRGFuaWVsIFdhbGtlcikKLQotI2lmbmRlZiBORE5CT09TVF9ORVhUX1BSSU9SX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9ORVhUX1BSSU9SX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8aXRlcmF0b3I+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLS8vICBIZWxwZXIgZnVuY3Rpb25zIGZvciBjbGFzc2VzIGxpa2UgYmlkaXJlY3Rpb25hbCBpdGVyYXRvcnMgbm90IHN1cHBvcnRpbmcKLS8vICBvcGVyYXRvcisgYW5kIG9wZXJhdG9yLQotLy8KLS8vICBVc2FnZToKLS8vICAgIGNvbnN0IHN0ZDo6bGlzdDxUPjo6aXRlcmF0b3IgcCA9IGdldF9zb21lX2l0ZXJhdG9yKCk7Ci0vLyAgICBjb25zdCBzdGQ6Omxpc3Q8VD46Oml0ZXJhdG9yIHByZXYgPSBuZG5ib29zdDo6cHJpb3IocCk7Ci0vLyAgICBjb25zdCBzdGQ6Omxpc3Q8VD46Oml0ZXJhdG9yIG5leHQgPSBuZG5ib29zdDo6bmV4dChwcmV2LCAyKTsKLQotLy8gIENvbnRyaWJ1dGVkIGJ5IERhdmUgQWJyYWhhbXMKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1pbmxpbmUgVCBuZXh0KFQgeCkgeyByZXR1cm4gKyt4OyB9Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBEaXN0YW5jZT4KLWlubGluZSBUIG5leHQoVCB4LCBEaXN0YW5jZSBuKQotewotICAgIHN0ZDo6YWR2YW5jZSh4LCBuKTsKLSAgICByZXR1cm4geDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1pbmxpbmUgVCBwcmlvcihUIHgpIHsgcmV0dXJuIC0teDsgfQotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRGlzdGFuY2U+Ci1pbmxpbmUgVCBwcmlvcihUIHgsIERpc3RhbmNlIG4pCi17Ci0gICAgc3RkOjphZHZhbmNlKHgsIC1uKTsKLSAgICByZXR1cm4geDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyBORE5CT09TVF9ORVhUX1BSSU9SX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9ub25fdHlwZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L25vbl90eXBlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTU1MGIxYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L25vbl90eXBlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vCi0vLyAgICAgICAgICAgKEMpIENvcHlyaWdodCBHZW5uYXJvIFByb3RhIDIwMDMuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gICAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gICAgICAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX05PTl9UWVBFX0hQUF9HUF8yMDAzMDQxNwotI2RlZmluZSBORE5CT09TVF9OT05fVFlQRV9IUFBfR1BfMjAwMzA0MTcKLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0gIC8vIEp1c3QgYSBzaW1wbGUgImVudmVsb3BlIiBmb3Igbm9uLXR5cGUgdGVtcGxhdGUgcGFyYW1ldGVycy4gVXNlZnVsCi0gIC8vIHRvIHdvcmsgYXJvdW5kIHNvbWUgTVNWQyBkZWZpY2llbmNpZXMuCi0KLSB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgVCBuPgotIHN0cnVjdCBub25fdHlwZSB7IH07Ci0KLQotfQotCi0KLSNlbmRpZiAvLyBpbmNsdWRlIGd1YXJkCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L25vbmNvcHlhYmxlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvbm9uY29weWFibGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYWU5ZDExLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvbm9uY29weWFibGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLy8gIEJvb3N0IG5vbmNvcHlhYmxlLmhwcCBoZWFkZXIgZmlsZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgKEMpIENvcHlyaWdodCBCZW1hbiBEYXdlcyAxOTk5LTIwMDMuIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdAotLy8gIFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdXRpbGl0eSBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9OT05DT1BZQUJMRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTk9OQ09QWUFCTEVfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0vLyAgUHJpdmF0ZSBjb3B5IGNvbnN0cnVjdG9yIGFuZCBjb3B5IGFzc2lnbm1lbnQgZW5zdXJlIGNsYXNzZXMgZGVyaXZlZCBmcm9tCi0vLyAgY2xhc3Mgbm9uY29weWFibGUgY2Fubm90IGJlIGNvcGllZC4KLQotLy8gIENvbnRyaWJ1dGVkIGJ5IERhdmUgQWJyYWhhbXMKLQotbmFtZXNwYWNlIG5vbmNvcHlhYmxlXyAgLy8gcHJvdGVjdGlvbiBmcm9tIHVuaW50ZW5kZWQgQURMCi17Ci0gIGNsYXNzIG5vbmNvcHlhYmxlCi0gIHsKLSAgIHByb3RlY3RlZDoKLSNpZm5kZWYgTkROQk9PU1RfTk9fREVGQVVMVEVEX0ZVTkNUSU9OUwotICAgIE5ETkJPT1NUX0NPTlNURVhQUiBub25jb3B5YWJsZSgpID0gZGVmYXVsdDsKLSAgICB+bm9uY29weWFibGUoKSA9IGRlZmF1bHQ7Ci0jZWxzZQotICAgIG5vbmNvcHlhYmxlKCkge30KLSAgICAgIH5ub25jb3B5YWJsZSgpIHt9Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfTk9fREVMRVRFRF9GVU5DVElPTlMKLSAgICAgICAgbm9uY29weWFibGUoIGNvbnN0IG5vbmNvcHlhYmxlJiApID0gZGVsZXRlOwotICAgICAgICBub25jb3B5YWJsZSYgb3BlcmF0b3I9KCBjb25zdCBub25jb3B5YWJsZSYgKSA9IGRlbGV0ZTsKLSNlbHNlCi0gICAgcHJpdmF0ZTogIC8vIGVtcGhhc2l6ZSB0aGUgZm9sbG93aW5nIG1lbWJlcnMgYXJlIHByaXZhdGUKLSAgICAgIG5vbmNvcHlhYmxlKCBjb25zdCBub25jb3B5YWJsZSYgKTsKLSAgICAgIG5vbmNvcHlhYmxlJiBvcGVyYXRvcj0oIGNvbnN0IG5vbmNvcHlhYmxlJiApOwotI2VuZGlmCi0gIH07Ci19Ci0KLXR5cGVkZWYgbm9uY29weWFibGVfOjpub25jb3B5YWJsZSBub25jb3B5YWJsZTsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyBORE5CT09TVF9OT05DT1BZQUJMRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvbm9uZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L25vbmUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NGUxOTIxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvbm9uZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDMsIEZlcm5hbmRvIEx1aXMgQ2FjY2lvbGEgQ2FyYmFsbGFsLgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9vcHRpb25hbCBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0vLyBZb3UgYXJlIHdlbGNvbWUgdG8gY29udGFjdCB0aGUgYXV0aG9yIGF0OgotLy8gIGZlcm5hbmRvX2NhY2Npb2xhQGhvdG1haWwuY29tCi0vLwotI2lmbmRlZiBORE5CT09TVF9OT05FXzE3U0VQMjAwM19IUFAKLSNkZWZpbmUgTkROQk9PU1RfTk9ORV8xN1NFUDIwMDNfSFBQCi0KLSNpbmNsdWRlICJuZG5ib29zdC9ub25lX3QuaHBwIgotCi0vLyBOT1RFOiBCb3JsYW5kIHVzZXJzIGhhdmUgdG8gaW5jbHVkZSB0aGlzIGhlYWRlciBvdXRzaWRlIGFueSBwcmVjb21waWxlZCBoZWFkZXJzCi0vLyAoYmNjPD01LjY0IGNhbm5vdCBpbmNsdWRlIGluc3RhbmNlIGRhdGEgaW4gYSBwcmVjb21waWxlZCBoZWFkZXIpCi0vLyAgLS0gKiBUbyBiZSB2ZXJpZmllZCwgbm93IHRoYXQgdGhlcmUncyBubyB1bm5hbWVkIG5hbWVzcGFjZQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1ub25lX3QgY29uc3Qgbm9uZSA9IChzdGF0aWNfY2FzdDxub25lX3Q+KDApKSA7Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L25vbmVfdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L25vbmVfdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2ODQyODguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9ub25lX3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDAzLCBGZXJuYW5kbyBMdWlzIENhY2Npb2xhIENhcmJhbGxhbC4KLS8vCi0vLyBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9vcHRpb25hbCBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0vLyBZb3UgYXJlIHdlbGNvbWUgdG8gY29udGFjdCB0aGUgYXV0aG9yIGF0OgotLy8gIGZlcm5hbmRvX2NhY2Npb2xhQGhvdG1haWwuY29tCi0vLwotI2lmbmRlZiBORE5CT09TVF9OT05FX1RfMTdTRVAyMDAzX0hQUAotI2RlZmluZSBORE5CT09TVF9OT05FX1RfMTdTRVAyMDAzX0hQUAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsgc3RydWN0IG5vbmVfaGVscGVye307IH0KLQotdHlwZWRlZiBpbnQgZGV0YWlsOjpub25lX2hlbHBlcjo6Km5vbmVfdCA7Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9ib3VuZHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vYm91bmRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTE5ZGU4MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9ib3VuZHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotLy8gIChjKSBDb3B5cmlnaHQgRmVybmFuZG8gTHVpcyBDYWNjaW9sYSBDYXJiYWxsYWwgMjAwMC0yMDA0Ci0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vICBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBsaWJyYXJ5IGhvbWUgcGFnZSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL251bWVyaWMvY29udmVyc2lvbgotLy8KLS8vIENvbnRhY3QgdGhlIGF1dGhvciBhdDogZmVybmFuZG9fY2FjY2lvbGFAaG90bWFpbC5jb20KLS8vIAotI2lmbmRlZiBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQk9VTkRTXzEyTk9WMjAwMl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0JPVU5EU18xMk5PVjIwMDJfSFBQCi0KLSNpbmNsdWRlICJuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL2JvdW5kcy5ocHAiCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBudW1lcmljIAotewotCi10ZW1wbGF0ZTxjbGFzcyBOPgotc3RydWN0IGJvdW5kcyA6IGJvdW5kc2RldGFpbDo6Z2V0X2ltcGw8Tj46OnR5cGUKLXt9IDsKLQotfSB9IC8vIG5hbWVzcGFjZSBuZG5ib29zdDo6bnVtZXJpYwotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2Nhc3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vY2FzdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3OTlmY2QuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vY2FzdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vLyAgKGMpIENvcHlyaWdodCBGZXJuYW5kbyBMdWlzIENhY2Npb2xhIENhcmJhbGxhbCAyMDAwLTIwMDQKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGxpYnJhcnkgaG9tZSBwYWdlIGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbnVtZXJpYy9jb252ZXJzaW9uCi0vLwotLy8gQ29udGFjdCB0aGUgYXV0aG9yIGF0OiBmZXJuYW5kb19jYWNjaW9sYUBob3RtYWlsLmNvbQotLy8KLS8vCi0vLyAgUmV2aXNpb24gSGlzdG9yeQotLy8KLS8vICAgIDE5IE5vdiAyMDAxIFN5bnRhdGljIGNoYW5nZXMgYXMgc3VnZ2VzdGVkIGJ5IERhcmluIEFkbGVyIChGZXJuYW5kbyBDYWNjaW9sYSkKLS8vICAgIDA4IE5vdiAyMDAxIEZpeGVzIHRvIGFjY29tbW9kYXRlIE1TVkMgKEZlcm5hbmRvIENhY2Npb2xhKQotLy8gICAgMDQgTm92IDIwMDEgRml4ZXMgdG8gYWNjb21tb2RhdGUgZ2NjMi45MiAoRmVybmFuZG8gQ2FjY2lvbGEpCi0vLyAgICAzMCBPY3QgMjAwMSBTb21lIGZpeGVzIHN1Z2dlc3RlZCBieSBEYXJ5bGUgV2Fsa2VyIChGZXJuYW5kbyBDYWNjaW9sYSkKLS8vICAgIDI1IE9jdCAyMDAxIEluaXRpYWwgYm9vc3RpZmljYXRpb24gKEZlcm5hbmRvIENhY2Npb2xhKQotLy8gICAgMjMgSmFuIDIwMDQgSW5pdGFsIGFkZCB0byBjdnMgKHBvc3QgcmV2aWV3KXMKLS8vICAgIDIyIEp1biAyMDExIEFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpYWxpemluZyBjYXN0IHBvbGljaWVzIHZpYSBudW1lcmljX2Nhc3RfdHJhaXRzIChCcmFuZG9uIEtvaG4pLgotLy8KLSNpZm5kZWYgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0NBU1RfMjVPQ1QyMDAxX0hQUAotI2RlZmluZSBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQ0FTVF8yNU9DVDIwMDFfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU4MikpCi0KLSMgIGluY2x1ZGU8bmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9vbGRfbnVtZXJpY19jYXN0LmhwcD4KLQotI2Vsc2UKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9jb252ZXJ0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9udW1lcmljX2Nhc3RfdHJhaXRzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiAKLSAgICBpbmxpbmUgVGFyZ2V0IG51bWVyaWNfY2FzdCggU291cmNlIGFyZyApCi0gICAgewotICAgICAgICB0eXBlZGVmIG51bWVyaWM6OmNvbnZlcnNpb25fdHJhaXRzPFRhcmdldCwgU291cmNlPiAgIGNvbnZfdHJhaXRzOwotICAgICAgICB0eXBlZGVmIG51bWVyaWM6Om51bWVyaWNfY2FzdF90cmFpdHM8VGFyZ2V0LCBTb3VyY2U+IGNhc3RfdHJhaXRzOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjpudW1lcmljOjpjb252ZXJ0ZXIKLSAgICAgICAgICAgIDwKLSAgICAgICAgICAgICAgICBUYXJnZXQsCi0gICAgICAgICAgICAgICAgU291cmNlLCAKLSAgICAgICAgICAgICAgICBjb252X3RyYWl0cywKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBjYXN0X3RyYWl0czo6b3ZlcmZsb3dfcG9saWN5LCAKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBjYXN0X3RyYWl0czo6cm91bmRpbmdfcG9saWN5LCAKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6bnVtZXJpYzo6cmF3X2NvbnZlcnRlcjwgY29udl90cmFpdHMgPiwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBjYXN0X3RyYWl0czo6cmFuZ2VfY2hlY2tpbmdfcG9saWN5Ci0gICAgICAgICAgICA+IGNvbnZlcnRlcjsKLSAgICAgICAgcmV0dXJuIGNvbnZlcnRlcjo6Y29udmVydChhcmcpOwotICAgIH0KLSAgICAKLSAgICB1c2luZyBudW1lcmljOjpiYWRfbnVtZXJpY19jYXN0OwotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vY29udmVyc2lvbl90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vY29udmVyc2lvbl90cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTI1ZDhlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2NvbnZlcnNpb25fdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLS8vICAoYykgQ29weXJpZ2h0IEZlcm5hbmRvIEx1aXMgQ2FjY2lvbGEgQ2FyYmFsbGFsIDIwMDAtMjAwNAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyAgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgbGlicmFyeSBob21lIHBhZ2UgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9udW1lcmljL2NvbnZlcnNpb24KLS8vCi0vLyBDb250YWN0IHRoZSBhdXRob3IgYXQ6IGZlcm5hbmRvX2NhY2Npb2xhQGhvdG1haWwuY29tCi0vLyAKLSNpZm5kZWYgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0NPTlZFUlNJT05fVFJBSVRTX0ZMQ18xMk5PVjIwMDJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9DT05WRVJTSU9OX1RSQUlUU19GTENfMTJOT1YyMDAyX0hQUAotCi0jaW5jbHVkZSAibmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9jb252ZXJzaW9uX3RyYWl0cy5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L2NvbmZpZy5ocHAiCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBudW1lcmljCi17Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFM+Ci1zdHJ1Y3QgY29udmVyc2lvbl90cmFpdHMgCi0gICAgOiBjb252ZGV0YWlsOjpnZXRfY29udmVyc2lvbl90cmFpdHM8VCxTPjo6dHlwZSAKLXsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBjb252ZGV0YWlsOjpnZXRfY29udmVyc2lvbl90cmFpdHM8VCxTPjo6dHlwZSBiYXNlXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfOjp0YXJnZXRfdHlwZSAgICAgdGFyZ2V0X3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlXzo6c291cmNlX3R5cGUgICAgIHNvdXJjZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV86OnJlc3VsdF90eXBlICAgICByZXN1bHRfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfOjphcmd1bWVudF90eXBlICAgYXJndW1lbnRfdHlwZTsKLSNlbmRpZgotfSA7Ci0KLX0gfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3Q6Om51bWVyaWMKLQotI2VuZGlmCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9jb252ZXJ0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vY29udmVydGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTU3NTJmZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9jb252ZXJ0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotLy8gIChjKSBDb3B5cmlnaHQgRmVybmFuZG8gTHVpcyBDYWNjaW9sYSBDYXJiYWxsYWwgMjAwMC0yMDA0Ci0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vICBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBsaWJyYXJ5IGhvbWUgcGFnZSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL251bWVyaWMvY29udmVyc2lvbgotLy8KLS8vIENvbnRhY3QgdGhlIGF1dGhvciBhdDogZmVybmFuZG9fY2FjY2lvbGFAaG90bWFpbC5jb20KLS8vIAotI2lmbmRlZiBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQ09OVkVSVEVSX0ZMQ18xMk5PVjIwMDJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9DT05WRVJURVJfRkxDXzEyTk9WMjAwMl9IUFAKLQotI2luY2x1ZGUgIm5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9jb252ZXJzaW9uX3RyYWl0cy5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2NvbnZlcnRlcl9wb2xpY2llcy5ocHAiCi0KLSNpbmNsdWRlICJuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL2NvbnZlcnRlci5ocHAiCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBudW1lcmljIAotewotCi10ZW1wbGF0ZTxjbGFzcyBULAotICAgICAgICAgY2xhc3MgUywKLSAgICAgICAgIGNsYXNzIFRyYWl0cyAgICAgICAgICAgPSBjb252ZXJzaW9uX3RyYWl0czxULFM+LAotICAgICAgICAgY2xhc3MgT3ZlcmZsb3dIYW5kbGVyICA9IGRlZl9vdmVyZmxvd19oYW5kbGVyLAotICAgICAgICAgY2xhc3MgRmxvYXQySW50Um91bmRlciA9IFRydW5jPCBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIFRyYWl0czo6c291cmNlX3R5cGU+ICAsCi0gICAgICAgICBjbGFzcyBSYXdDb252ZXJ0ZXIgICAgID0gcmF3X2NvbnZlcnRlcjxUcmFpdHM+LAotICAgICAgICAgY2xhc3MgVXNlclJhbmdlQ2hlY2tlciA9IFVzZUludGVybmFsUmFuZ2VDaGVja2VyCi0gICAgICAgID4KLXN0cnVjdCBjb252ZXJ0ZXIgOiBjb252ZGV0YWlsOjpnZXRfY29udmVydGVyX2ltcGw8VHJhaXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdmVyZmxvd0hhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0MkludFJvdW5kZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJhd0NvbnZlcnRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlclJhbmdlQ2hlY2tlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID46OnR5cGUKLXsKLSAgdHlwZWRlZiBUcmFpdHMgdHJhaXRzIDsKLQotICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6YXJndW1lbnRfdHlwZSBhcmd1bWVudF90eXBlIDsKLSAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OnJlc3VsdF90eXBlICAgcmVzdWx0X3R5cGUgICA7Ci0KLSAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKSAoIGFyZ3VtZW50X3R5cGUgcyApIGNvbnN0IHsgcmV0dXJuIHRoaXMtPmNvbnZlcnQocykgOyB9Ci19IDsKLQotCi0KLXRlbXBsYXRlPGNsYXNzIFMsCi0gICAgICAgICBjbGFzcyBPdmVyZmxvd0hhbmRsZXIgID0gZGVmX292ZXJmbG93X2hhbmRsZXIsCi0gICAgICAgICBjbGFzcyBGbG9hdDJJbnRSb3VuZGVyID0gVHJ1bmM8Uz4gICwKLSAgICAgICAgIGNsYXNzIFVzZXJSYW5nZUNoZWNrZXIgPSBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlcgotICAgICAgICA+Ci1zdHJ1Y3QgbWFrZV9jb252ZXJ0ZXJfZnJvbQotewotICB0ZW1wbGF0ZTxjbGFzcyBULAotICAgICAgICAgICBjbGFzcyBUcmFpdHMgICAgICAgPSBjb252ZXJzaW9uX3RyYWl0czxULFM+LAotICAgICAgICAgICBjbGFzcyBSYXdDb252ZXJ0ZXIgPSByYXdfY29udmVydGVyPFRyYWl0cz4KLSAgICAgICAgICA+IAotICBzdHJ1Y3QgdG8KLSAgewotICAgIHR5cGVkZWYgY29udmVydGVyPFQsUyxUcmFpdHMsT3ZlcmZsb3dIYW5kbGVyLEZsb2F0MkludFJvdW5kZXIsUmF3Q29udmVydGVyLFVzZXJSYW5nZUNoZWNrZXI+IHR5cGUgOwotICB9IDsKLQotfSA7Ci0KLX0gfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3Q6Om51bWVyaWMKLQotI2VuZGlmCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vY29udmVydGVyX3BvbGljaWVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2NvbnZlcnRlcl9wb2xpY2llcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxYzk3OGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vY29udmVydGVyX3BvbGljaWVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5NCArMCwwIEBACi0vLyAgKGMpIENvcHlyaWdodCBGZXJuYW5kbyBMdWlzIENhY2Npb2xhIENhcmJhbGxhbCAyMDAwLTIwMDQKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGxpYnJhcnkgaG9tZSBwYWdlIGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbnVtZXJpYy9jb252ZXJzaW9uCi0vLwotLy8gQ29udGFjdCB0aGUgYXV0aG9yIGF0OiBmZXJuYW5kb19jYWNjaW9sYUBob3RtYWlsLmNvbQotLy8KLSNpZm5kZWYgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0NPTlZFUlRFUl9QT0xJQ0lFU19GTENfMTJOT1YyMDAyX0hQUAotI2RlZmluZSBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQ09OVkVSVEVSX1BPTElDSUVTX0ZMQ18xMk5PVjIwMDJfSFBQCi0KLSNpbmNsdWRlIDx0eXBlaW5mbz4gLy8gZm9yIHN0ZDo6YmFkX2Nhc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9ub190cjEvY21hdGguaHBwPiAvLyBmb3Igc3RkOjpmbG9vciBhbmQgc3RkOjpjZWlsCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGhyb3dfZXhjZXB0aW9uLmhwcD4KLQotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0KLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcml0aG1ldGljLmhwcCIKLQotI2luY2x1ZGUgIm5kbmJvb3N0L21wbC9pZi5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbXBsL2ludGVncmFsX2MuaHBwIgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbnVtZXJpYwotewotCi10ZW1wbGF0ZTxjbGFzcyBTPgotc3RydWN0IFRydW5jCi17Ci0gIHR5cGVkZWYgUyBzb3VyY2VfdHlwZSA7Ci0KLSAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzwgaXNfYXJpdGhtZXRpYzxTPixTLFMgY29uc3QmPjo6dHlwZSBhcmd1bWVudF90eXBlIDsKLQotICBzdGF0aWMgc291cmNlX3R5cGUgbmVhcmJ5aW50ICggYXJndW1lbnRfdHlwZSBzICkKLSAgewotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFKQotICAgIHVzaW5nIHN0ZDo6Zmxvb3IgOwotICAgIHVzaW5nIHN0ZDo6Y2VpbCAgOwotI2VuZGlmCi0KLSAgICByZXR1cm4gcyA8IHN0YXRpY19jYXN0PFM+KDApID8gY2VpbChzKSA6IGZsb29yKHMpIDsKLSAgfQotCi0gIHR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPCBzdGQ6OmZsb2F0X3JvdW5kX3N0eWxlLCBzdGQ6OnJvdW5kX3Rvd2FyZF96ZXJvPiByb3VuZF9zdHlsZSA7Ci19IDsKLQotCi0KLXRlbXBsYXRlPGNsYXNzIFM+Ci1zdHJ1Y3QgRmxvb3IKLXsKLSAgdHlwZWRlZiBTIHNvdXJjZV90eXBlIDsKLQotICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPCBpc19hcml0aG1ldGljPFM+LFMsUyBjb25zdCY+Ojp0eXBlIGFyZ3VtZW50X3R5cGUgOwotCi0gIHN0YXRpYyBzb3VyY2VfdHlwZSBuZWFyYnlpbnQgKCBhcmd1bWVudF90eXBlIHMgKQotICB7Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpCi0gICAgdXNpbmcgc3RkOjpmbG9vciA7Ci0jZW5kaWYKLQotICAgIHJldHVybiBmbG9vcihzKSA7Ci0gIH0KLQotICB0eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzwgc3RkOjpmbG9hdF9yb3VuZF9zdHlsZSwgc3RkOjpyb3VuZF90b3dhcmRfbmVnX2luZmluaXR5PiByb3VuZF9zdHlsZSA7Ci19IDsKLQotdGVtcGxhdGU8Y2xhc3MgUz4KLXN0cnVjdCBDZWlsCi17Ci0gIHR5cGVkZWYgUyBzb3VyY2VfdHlwZSA7Ci0KLSAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzwgaXNfYXJpdGhtZXRpYzxTPixTLFMgY29uc3QmPjo6dHlwZSBhcmd1bWVudF90eXBlIDsKLQotICBzdGF0aWMgc291cmNlX3R5cGUgbmVhcmJ5aW50ICggYXJndW1lbnRfdHlwZSBzICkKLSAgewotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFKQotICAgIHVzaW5nIHN0ZDo6Y2VpbCA7Ci0jZW5kaWYKLQotICAgIHJldHVybiBjZWlsKHMpIDsKLSAgfQotCi0gIHR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPCBzdGQ6OmZsb2F0X3JvdW5kX3N0eWxlLCBzdGQ6OnJvdW5kX3Rvd2FyZF9pbmZpbml0eT4gcm91bmRfc3R5bGUgOwotfSA7Ci0KLXRlbXBsYXRlPGNsYXNzIFM+Ci1zdHJ1Y3QgUm91bmRFdmVuCi17Ci0gIHR5cGVkZWYgUyBzb3VyY2VfdHlwZSA7Ci0KLSAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzwgaXNfYXJpdGhtZXRpYzxTPixTLFMgY29uc3QmPjo6dHlwZSBhcmd1bWVudF90eXBlIDsKLQotICBzdGF0aWMgc291cmNlX3R5cGUgbmVhcmJ5aW50ICggYXJndW1lbnRfdHlwZSBzICkKLSAgewotICAgIC8vIEFsZ29yaXRobSBjb250cmlidXRlZCBieSBHdWlsbGF1bWUgTWVscXVpb25kCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSkKLSAgICB1c2luZyBzdGQ6OmZsb29yIDsKLSAgICB1c2luZyBzdGQ6OmNlaWwgIDsKLSNlbmRpZgotCi0gICAgLy8gb25seSB3b3JrcyBpbnNpZGUgdGhlIHJhbmdlIG5vdCBhdCB0aGUgYm91bmRhcmllcwotICAgIFMgcHJldiA9IGZsb29yKHMpOwotICAgIFMgbmV4dCA9IGNlaWwocyk7Ci0KLSAgICBTIHJ0ID0gKHMgLSBwcmV2KSAtIChuZXh0IC0gcyk7IC8vIHJlbWFpbmRlciB0eXBlCi0KLSAgICBTIGNvbnN0IHplcm8oMC4wKTsKLSAgICBTIGNvbnN0IHR3bygyLjApOwotCi0gICAgaWYgKCBydCA8IHplcm8gKQotICAgICAgcmV0dXJuIHByZXY7Ci0gICAgZWxzZSBpZiAoIHJ0ID4gemVybyApCi0gICAgICByZXR1cm4gbmV4dDsKLSAgICBlbHNlCi0gICAgewotICAgICAgYm9vbCBpc19wcmV2X2V2ZW4gPSB0d28gKiBmbG9vcihwcmV2IC8gdHdvKSA9PSBwcmV2IDsKLSAgICAgIHJldHVybiAoIGlzX3ByZXZfZXZlbiA/IHByZXYgOiBuZXh0ICkgOwotICAgIH0KLSAgfQotCi0gIHR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPCBzdGQ6OmZsb2F0X3JvdW5kX3N0eWxlLCBzdGQ6OnJvdW5kX3RvX25lYXJlc3Q+IHJvdW5kX3N0eWxlIDsKLX0gOwotCi0KLWVudW0gcmFuZ2VfY2hlY2tfcmVzdWx0Ci17Ci0gIGNJblJhbmdlICAgICA9IDAgLAotICBjTmVnT3ZlcmZsb3cgPSAxICwKLSAgY1Bvc092ZXJmbG93ID0gMgotfSA7Ci0KLWNsYXNzIGJhZF9udW1lcmljX2Nhc3QgOiBwdWJsaWMgc3RkOjpiYWRfY2FzdAotewotICBwdWJsaWM6Ci0KLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIgKiB3aGF0KCkgY29uc3QgdGhyb3coKQotICAgICAgeyAgcmV0dXJuICJiYWQgbnVtZXJpYyBjb252ZXJzaW9uOiBvdmVyZmxvdyI7IH0KLX07Ci0KLWNsYXNzIG5lZ2F0aXZlX292ZXJmbG93IDogcHVibGljIGJhZF9udW1lcmljX2Nhc3QKLXsKLSAgcHVibGljOgotCi0gICAgdmlydHVhbCBjb25zdCBjaGFyICogd2hhdCgpIGNvbnN0IHRocm93KCkKLSAgICAgIHsgIHJldHVybiAiYmFkIG51bWVyaWMgY29udmVyc2lvbjogbmVnYXRpdmUgb3ZlcmZsb3ciOyB9Ci19OwotY2xhc3MgcG9zaXRpdmVfb3ZlcmZsb3cgOiBwdWJsaWMgYmFkX251bWVyaWNfY2FzdAotewotICBwdWJsaWM6Ci0KLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIgKiB3aGF0KCkgY29uc3QgdGhyb3coKQotICAgICAgeyByZXR1cm4gImJhZCBudW1lcmljIGNvbnZlcnNpb246IHBvc2l0aXZlIG92ZXJmbG93IjsgfQotfTsKLQotc3RydWN0IGRlZl9vdmVyZmxvd19oYW5kbGVyCi17Ci0gIHZvaWQgb3BlcmF0b3IoKSAoIHJhbmdlX2NoZWNrX3Jlc3VsdCByICkgLy8gdGhyb3cobmVnYXRpdmVfb3ZlcmZsb3cscG9zaXRpdmVfb3ZlcmZsb3cpCi0gIHsKLSNpZm5kZWYgTkROQk9PU1RfTk9fRVhDRVBUSU9OUwotICAgIGlmICggciA9PSBjTmVnT3ZlcmZsb3cgKQotICAgICAgdGhyb3cgbmVnYXRpdmVfb3ZlcmZsb3coKSA7Ci0gICAgZWxzZSBpZiAoIHIgPT0gY1Bvc092ZXJmbG93ICkKLSAgICAgICAgICAgdGhyb3cgcG9zaXRpdmVfb3ZlcmZsb3coKSA7Ci0jZWxzZQotICAgIGlmICggciA9PSBjTmVnT3ZlcmZsb3cgKQotICAgICAgOjpuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKG5lZ2F0aXZlX292ZXJmbG93KCkpIDsKLSAgICBlbHNlIGlmICggciA9PSBjUG9zT3ZlcmZsb3cgKQotICAgICAgICAgICA6Om5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24ocG9zaXRpdmVfb3ZlcmZsb3coKSkgOwotI2VuZGlmCi0gIH0KLX0gOwotCi1zdHJ1Y3Qgc2lsZW50X292ZXJmbG93X2hhbmRsZXIKLXsKLSAgdm9pZCBvcGVyYXRvcigpICggcmFuZ2VfY2hlY2tfcmVzdWx0ICkge30gLy8gdGhyb3coKQotfSA7Ci0KLXRlbXBsYXRlPGNsYXNzIFRyYWl0cz4KLXN0cnVjdCByYXdfY29udmVydGVyCi17Ci0gIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjpyZXN1bHRfdHlwZSAgIHJlc3VsdF90eXBlICAgOwotICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6YXJndW1lbnRfdHlwZSBhcmd1bWVudF90eXBlIDsKLQotICBzdGF0aWMgcmVzdWx0X3R5cGUgbG93X2xldmVsX2NvbnZlcnQgKCBhcmd1bWVudF90eXBlIHMgKSB7IHJldHVybiBzdGF0aWNfY2FzdDxyZXN1bHRfdHlwZT4ocykgOyB9Ci19IDsKLQotc3RydWN0IFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHt9IDsKLQotfSB9IC8vIG5hbWVzcGFjZSBuZG5ib29zdDo6bnVtZXJpYwotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9ib3VuZHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL2JvdW5kcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5ZDMyMDIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL2JvdW5kcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0vLyAgKGMpIENvcHlyaWdodCBGZXJuYW5kbyBMdWlzIENhY2Npb2xhIENhcmJhbGxhbCAyMDAwLTIwMDQKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGxpYnJhcnkgaG9tZSBwYWdlIGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbnVtZXJpYy9jb252ZXJzaW9uCi0vLwotLy8gQ29udGFjdCB0aGUgYXV0aG9yIGF0OiBmZXJuYW5kb19jYWNjaW9sYUBob3RtYWlsLmNvbQotLy8gCi0jaWZuZGVmIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9CT1VORFNfREVUQUlMX0ZMQ18xMk5PVjIwMDJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9CT1VORFNfREVUQUlMX0ZMQ18xMk5PVjIwMDJfSFBQCi0KLSNpbmNsdWRlICJuZG5ib29zdC9saW1pdHMuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L2NvbmZpZy5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbXBsL2lmLmhwcCIKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG51bWVyaWMgeyBuYW1lc3BhY2UgYm91bmRzZGV0YWlsCi17Ci0gIHRlbXBsYXRlPGNsYXNzIE4+Ci0gIGNsYXNzIEludGVncmFsCi0gIHsKLSAgICAgIHR5cGVkZWYgc3RkOjpudW1lcmljX2xpbWl0czxOPiBsaW1pdHMgOwotCi0gICAgcHVibGljIDoKLSAgICAKLSAgICAgIHN0YXRpYyBOIGxvd2VzdCAgKCkgeyByZXR1cm4gbGltaXRzOjptaW4gTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCk7IH0KLSAgICAgIHN0YXRpYyBOIGhpZ2hlc3QgKCkgeyByZXR1cm4gbGltaXRzOjptYXggTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCk7IH0KLSAgICAgIHN0YXRpYyBOIHNtYWxsZXN0KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Tj4oMSk7IH0KLSAgfSA7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgTj4KLSAgY2xhc3MgRmxvYXQKLSAgewotICAgICAgdHlwZWRlZiBzdGQ6Om51bWVyaWNfbGltaXRzPE4+IGxpbWl0cyA7Ci0KLSAgICBwdWJsaWMgOgotICAgIAotICAgICAgc3RhdGljIE4gbG93ZXN0ICAoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxOPigtbGltaXRzOjptYXggTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCkpIDsgfQotICAgICAgc3RhdGljIE4gaGlnaGVzdCAoKSB7IHJldHVybiBsaW1pdHM6Om1heCBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTiAoKTsgfQotICAgICAgc3RhdGljIE4gc21hbGxlc3QoKSB7IHJldHVybiBsaW1pdHM6Om1pbiBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTiAoKTsgfQotICB9IDsKLQotICB0ZW1wbGF0ZTxjbGFzcyBOPgotICBzdHJ1Y3QgZ2V0X2ltcGwKLSAgewotICAgIHR5cGVkZWYgbXBsOjpib29sXzwgOjpzdGQ6Om51bWVyaWNfbGltaXRzPE4+Ojppc19pbnRlZ2VyID4gaXNfaW50IDsKLQotICAgIHR5cGVkZWYgSW50ZWdyYWw8Tj4gaW1wbF9pbnQgICA7Ci0gICAgdHlwZWRlZiBGbG9hdCAgIDxOPiBpbXBsX2Zsb2F0IDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl88aXNfaW50LGltcGxfaW50LGltcGxfZmxvYXQ+Ojp0eXBlIHR5cGUgOwotICB9IDsKLQotfSB9IH0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0OjpudW1lcmljOjpib3VuZHNkZXRhaWwuCi0KLSNlbmRpZgotLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvY29udmVyc2lvbl90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL2NvbnZlcnNpb25fdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDlmZTEwNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvY29udmVyc2lvbl90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotLy8gIChjKSBDb3B5cmlnaHQgRmVybmFuZG8gTHVpcyBDYWNjaW9sYSBDYXJiYWxsYWwgMjAwMC0yMDA0Ci0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vICBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBsaWJyYXJ5IGhvbWUgcGFnZSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL251bWVyaWMvY29udmVyc2lvbgotLy8KLS8vIENvbnRhY3QgdGhlIGF1dGhvciBhdDogZmVybmFuZG9fY2FjY2lvbGFAaG90bWFpbC5jb20KLS8vIAotI2lmbmRlZiBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fREVUQUlMX0NPTlZFUlNJT05fVFJBSVRTX0ZMQ18xMk5PVjIwMDJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9ERVRBSUxfQ09OVkVSU0lPTl9UUkFJVFNfRkxDXzEyTk9WMjAwMl9IUFAKLQotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FyaXRobWV0aWMuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHAiCi0KLSNpbmNsdWRlICJuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL21ldGEuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvaW50X2Zsb2F0X21peHR1cmUuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvc2lnbl9taXh0dXJlLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL3VkdF9idWlsdGluX21peHR1cmUuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvaXNfc3VicmFuZ2VkLmhwcCIKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG51bWVyaWMgeyBuYW1lc3BhY2UgY29udmRldGFpbAotewotICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgLy8gSW1wbGVtZW50YXRpb24gb2YgdGhlIENvbnZlcnNpb24gVHJhaXRzIGZvciBUICE9IFMKLSAgLy8KLSAgLy8gVGhpcyBpcyBhIFZJU0lCTEUgYmFzZSBjbGFzcyBvZiB0aGUgdXNlci1sZXZlbCBjb252ZXJzaW9uX3RyYWl0czw+IGNsYXNzLgotICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgdGVtcGxhdGU8Y2xhc3MgVCxjbGFzcyBTPgotICBzdHJ1Y3Qgbm9uX3RyaXZpYWxfdHJhaXRzX2ltcGwKLSAgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgZ2V0X2ludF9mbG9hdF9taXh0dXJlICAgPFQsUz46OnR5cGUgaW50X2Zsb2F0X21peHR1cmUgOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgZ2V0X3NpZ25fbWl4dHVyZSAgICAgICAgPFQsUz46OnR5cGUgc2lnbl9taXh0dXJlIDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGdldF91ZHRfYnVpbHRpbl9taXh0dXJlIDxULFM+Ojp0eXBlIHVkdF9idWlsdGluX21peHR1cmUgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBnZXRfaXNfc3VicmFuZ2VkPFQsUz46OnR5cGUgc3VicmFuZ2VkIDsKLQotICAgIHR5cGVkZWYgbXBsOjpmYWxzZV8gdHJpdmlhbCA7Ci0KLSAgICB0eXBlZGVmIFQgdGFyZ2V0X3R5cGUgOwotICAgIHR5cGVkZWYgUyBzb3VyY2VfdHlwZSA7Ci0gICAgdHlwZWRlZiBUIHJlc3VsdF90eXBlIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl88IGlzX2FyaXRobWV0aWM8Uz4sIFMsIFMgY29uc3QmPjo6dHlwZSBhcmd1bWVudF90eXBlIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl88c3VicmFuZ2VkLFMsVD46OnR5cGUgc3VwZXJ0eXBlIDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPHN1YnJhbmdlZCxULFM+Ojp0eXBlIHN1YnR5cGUgICA7Ci0gIH0gOwotCi0gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAvLyBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgQ29udmVyc2lvbiBUcmFpdHMgZm9yIFQgPT0gUwotICAvLwotICAvLyBUaGlzIGlzIGEgVklTSUJMRSBiYXNlIGNsYXNzIG9mIHRoZSB1c2VyLWxldmVsIGNvbnZlcnNpb25fdHJhaXRzPD4gY2xhc3MuCi0gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICB0ZW1wbGF0ZTxjbGFzcyBOPgotICBzdHJ1Y3QgdHJpdmlhbF90cmFpdHNfaW1wbAotICB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBnZXRfaW50X2Zsb2F0X21peHR1cmUgIDxOLE4+Ojp0eXBlIGludF9mbG9hdF9taXh0dXJlIDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGdldF9zaWduX21peHR1cmUgICAgICAgPE4sTj46OnR5cGUgc2lnbl9taXh0dXJlIDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGdldF91ZHRfYnVpbHRpbl9taXh0dXJlPE4sTj46OnR5cGUgdWR0X2J1aWx0aW5fbWl4dHVyZSA7Ci0KLSAgICB0eXBlZGVmIG1wbDo6ZmFsc2VfIHN1YnJhbmdlZCA7Ci0gICAgdHlwZWRlZiBtcGw6OnRydWVfICB0cml2aWFsIDsKLQotICAgIHR5cGVkZWYgTiAgICAgICAgdGFyZ2V0X3R5cGUgOwotICAgIHR5cGVkZWYgTiAgICAgICAgc291cmNlX3R5cGUgOwotICAgIHR5cGVkZWYgTiBjb25zdCYgcmVzdWx0X3R5cGUgOwotICAgIHR5cGVkZWYgTiBjb25zdCYgYXJndW1lbnRfdHlwZSA7Ci0KLSAgICB0eXBlZGVmIE4gc3VwZXJ0eXBlIDsKLSAgICB0eXBlZGVmIE4gc3VidHlwZSAgOwotCi0gIH0gOwotCi0gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAvLyBUb3AgbGV2ZWwgaW1wbGVtZW50YXRpb24gc2VsZWN0b3IuCi0gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBTPgotICBzdHJ1Y3QgZ2V0X2NvbnZlcnNpb25fdHJhaXRzCi0gIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlbW92ZV9jdjxUPjo6dHlwZSB0YXJnZXRfdHlwZSA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfY3Y8Uz46OnR5cGUgc291cmNlX3R5cGUgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpc19zYW1lPHRhcmdldF90eXBlLHNvdXJjZV90eXBlPjo6dHlwZSBpc190cml2aWFsIDsKLQotICAgIHR5cGVkZWYgdHJpdmlhbF90cmFpdHNfaW1wbCAgICA8dGFyZ2V0X3R5cGU+ICAgICAgICAgICAgIHRyaXZpYWxfaW1wIDsKLSAgICB0eXBlZGVmIG5vbl90cml2aWFsX3RyYWl0c19pbXBsPHRhcmdldF90eXBlLHNvdXJjZV90eXBlPiBub25fdHJpdmlhbF9pbXAgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzxpc190cml2aWFsLHRyaXZpYWxfaW1wLG5vbl90cml2aWFsX2ltcD46OnR5cGUgdHlwZSA7Ci0gIH0gOwotCi19IH0gfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3Q6Om51bWVyaWM6OmNvbnZkZXRhaWwKLQotI2VuZGlmCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL2NvbnZlcnRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvY29udmVydGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzcwOTllZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvY29udmVydGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYwMiArMCwwIEBACi0vLyAgKGMpIENvcHlyaWdodCBGZXJuYW5kbyBMdWlzIENhY2Npb2xhIENhcmJhbGxhbCAyMDAwLTIwMDQKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGxpYnJhcnkgaG9tZSBwYWdlIGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbnVtZXJpYy9jb252ZXJzaW9uCi0vLwotLy8gQ29udGFjdCB0aGUgYXV0aG9yIGF0OiBmZXJuYW5kb19jYWNjaW9sYUBob3RtYWlsLmNvbQotLy8KLSNpZm5kZWYgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0RFVEFJTF9DT05WRVJURVJfRkxDXzEyTk9WMjAwMl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0RFVEFJTF9DT05WRVJURVJfRkxDXzEyTk9WMjAwMl9IUFAKLQotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0KLSNpbmNsdWRlICJuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL21ldGEuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvY29udmVyc2lvbl90cmFpdHMuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9ib3VuZHMuaHBwIgotCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHAiCi0KLSNpbmNsdWRlICJuZG5ib29zdC9tcGwvaW50ZWdyYWxfYy5ocHAiCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBudW1lcmljIHsgbmFtZXNwYWNlIGNvbnZkZXRhaWwKLXsKLSAgLy8gSW50ZWdyYWwgQ29uc3RhbnRzIHJlcHJlc2VudGluZyByb3VuZGluZyBtb2RlcwotICB0eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OmZsb2F0X3JvdW5kX3N0eWxlLCBzdGQ6OnJvdW5kX3Rvd2FyZF96ZXJvPiAgICAgICAgIHJvdW5kMnplcm9fYyA7Ci0gIHR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6ZmxvYXRfcm91bmRfc3R5bGUsIHN0ZDo6cm91bmRfdG9fbmVhcmVzdD4gICAgICAgICAgcm91bmQybmVhcmVzdF9jIDsKLSAgdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpmbG9hdF9yb3VuZF9zdHlsZSwgc3RkOjpyb3VuZF90b3dhcmRfaW5maW5pdHk+ICAgICByb3VuZDJpbmZfYyA7Ci0gIHR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6ZmxvYXRfcm91bmRfc3R5bGUsIHN0ZDo6cm91bmRfdG93YXJkX25lZ19pbmZpbml0eT4gcm91bmQybmVnX2luZl9jIDsKLQotICAvLyBNZXRhZnVuY3Rpb246Ci0gIC8vCi0gIC8vICAgZm9yX3JvdW5kX3N0eWxlPFJvdW5kU3R5bGUsUm91bmRUb1plcm8sUm91bmRUb05lYXJlc3QsUm91bmRUb0luZixSb3VuZFRvTmVnSW5mPjo6dHlwZQotICAvLwotICAvLyB7Um91bmRTdHlsZX0gSW50ZWdyYWwgQ29uc3RhbnQgc3BlY2lmeWluZyBhIHJvdW5kIHN0eWxlIGFzIGRlY2xhcmVkIGFib3ZlLgotICAvLyB7Um91bmRUb1plcm8sUm91bmRUb05lYXJlc3QsUm91bmRUb0luZixSb3VuZFRvTmVnSW5mfSBhcmJpdHJhcnkgdHlwZXMuCi0gIC8vCi0gIC8vIFNlbGVjdHMgb25lIG9mIHRoZSA0IHR5cGVzIGFjY29yZGluZyB0byB0aGUgdmFsdWUgb2YgUm91bmRTdHlsZS4KLSAgLy8KLSAgdGVtcGxhdGU8Y2xhc3MgUm91bmRTdHlsZSxjbGFzcyBSb3VuZFRvWmVybyxjbGFzcyBSb3VuZFRvTmVhcmVzdCxjbGFzcyBSb3VuZFRvSW5mLGNsYXNzIFJvdW5kVG9OZWdJbmY+Ci0gIHN0cnVjdCBmb3Jfcm91bmRfc3R5bGUKLSAgewotICAgIHR5cGVkZWYgY3Rfc3dpdGNoNDxSb3VuZFN0eWxlCi0gICAgICAgICAgICAgICAgICAgICAgICwgcm91bmQyemVyb19jLCByb3VuZDJuZWFyZXN0X2MsIHJvdW5kMmluZl9jIC8vIHJvdW5kMm5lZ19pbmZfYwotICAgICAgICAgICAgICAgICAgICAgICAsIFJvdW5kVG9aZXJvICwgUm91bmRUb05lYXJlc3QgLCBSb3VuZFRvSW5mICwgUm91bmRUb05lZ0luZgotICAgICAgICAgICAgICAgICAgICAgID4gc2VsZWN0b3IgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZWxlY3Rvcjo6dHlwZSB0eXBlIDsKLSAgfSA7Ci0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmFuZ2UgQ2hlY2tpbmcgTG9naWMuCi0vLwotLy8gVGhlIHJhbmdlIGNoZWNraW5nIGxvZ2ljIGlzIGJ1aWx0IHVwIGJ5IGNvbWJpbmluZyAxIG9yIDIgcHJlZGljYXRlcy4KLS8vIEVhY2ggcHJlZGljYXRlIGlzIGVuY2Fwc3VsYXRlZCBpbiBhIHRlbXBsYXRlIGNsYXNzIGFuZCBleHBvc2VzCi0vLyB0aGUgc3RhdGljIG1lbWJlciBmdW5jdGlvbiAnYXBwbHknLgotLy8KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotCi0gIC8vIEJlY2F1c2UgYSBwYXJ0aWN1bGFyIGxvZ2ljIGNhbiBjb21iaW5lIGVpdGhlciAxIG9yIHR3byBwcmVkaWNhdGVzLCB0aGUgZm9sbG93aW5nCi0gIC8vIHRhZ3MgYXJlIHVzZWQgdG8gYWxsb3cgdGhlIHByZWRpY2F0ZSBhcHBsaWVyIHRvIHJlY2VpdmUgMiBwcmVkcywgYnV0IG9wdGltaXplIGF3YXkKLSAgLy8gb25lIG9mIHRoZW0gaWYgaXQgaXMgJ25vbi1hcHBsaWNhYmxlJwotICBzdHJ1Y3Qgbm9uX2FwcGxpY2FibGUgeyB0eXBlZGVmIG1wbDo6ZmFsc2VfIGRvX2FwcGx5IDsgfSA7Ci0gIHN0cnVjdCBhcHBsaWNhYmxlICAgICB7IHR5cGVkZWYgbXBsOjp0cnVlXyAgZG9fYXBwbHkgOyB9IDsKLQotCi0gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgLy8KLSAgLy8gICAgICAgICAgICAgICAgICAgICAgUmFuZ2UgQ2hlY2tpbmcgTG9naWMgaW1wbGVtZW50YXRpb25zLgotICAvLwotICAvLyBUaGUgZm9sbG93aW5nIGNsYXNzZXMsIGNvbGxlY3RpdmVsbHkgbmFtZWQgJ1ByZWRpY2F0ZXMnLCBhcmUgaW5zdGFudGlhdGVkIHdpdGhpbgotICAvLyB0aGUgY29ycmVzcG9uZGluZyByYW5nZSBjaGVja2Vycy4KLSAgLy8gVGhlaXIgc3RhdGljIG1lbWJlciBmdW5jdGlvbiAnYXBwbHknIGlzIGNhbGxlZCB0byBwZXJmb3JtIHRoZSBhY3R1YWwgcmFuZ2UgY2hlY2tpbmcgbG9naWMuCi0gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIC8vIHMgPCBMb3dlc3QoVCkgPyBjTmVnT3ZlcmZsb3cgOiBjSW5SYW5nZQotICAgIC8vCi0gICAgdGVtcGxhdGU8Y2xhc3MgVHJhaXRzPgotICAgIHN0cnVjdCBMVF9Mb1QgOiBhcHBsaWNhYmxlCi0gICAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OnRhcmdldF90eXBlIFQgOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OnNvdXJjZV90eXBlIFMgOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OmFyZ3VtZW50X3R5cGUgYXJndW1lbnRfdHlwZSA7Ci0KLSAgICAgIHN0YXRpYyByYW5nZV9jaGVja19yZXN1bHQgYXBwbHkgKCBhcmd1bWVudF90eXBlIHMgKQotICAgICAgewotICAgICAgICByZXR1cm4gcyA8IHN0YXRpY19jYXN0PFM+KGJvdW5kczxUPjo6bG93ZXN0KCkpID8gY05lZ092ZXJmbG93IDogY0luUmFuZ2UgOwotICAgICAgfQotICAgIH0gOwotCi0gICAgLy8gcyA8IDAgPyBjTmVnT3ZlcmZsb3cgOiBjSW5SYW5nZQotICAgIC8vCi0gICAgdGVtcGxhdGU8Y2xhc3MgVHJhaXRzPgotICAgIHN0cnVjdCBMVF9aZXJvIDogYXBwbGljYWJsZQotICAgIHsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjpzb3VyY2VfdHlwZSBTIDsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjphcmd1bWVudF90eXBlIGFyZ3VtZW50X3R5cGUgOwotCi0gICAgICBzdGF0aWMgcmFuZ2VfY2hlY2tfcmVzdWx0IGFwcGx5ICggYXJndW1lbnRfdHlwZSBzICkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIHMgPCBzdGF0aWNfY2FzdDxTPigwKSA/IGNOZWdPdmVyZmxvdyA6IGNJblJhbmdlIDsKLSAgICAgIH0KLSAgICB9IDsKLQotICAgIC8vIHMgPD0gTG93ZXN0KFQpLTEgPyBjTmVnT3ZlcmZsb3cgOiBjSW5SYW5nZQotICAgIC8vCi0gICAgdGVtcGxhdGU8Y2xhc3MgVHJhaXRzPgotICAgIHN0cnVjdCBMRV9QcmV2TG9UIDogYXBwbGljYWJsZQotICAgIHsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjp0YXJnZXRfdHlwZSBUIDsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjpzb3VyY2VfdHlwZSBTIDsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjphcmd1bWVudF90eXBlIGFyZ3VtZW50X3R5cGUgOwotCi0gICAgICBzdGF0aWMgcmFuZ2VfY2hlY2tfcmVzdWx0IGFwcGx5ICggYXJndW1lbnRfdHlwZSBzICkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIHMgPD0gc3RhdGljX2Nhc3Q8Uz4oYm91bmRzPFQ+Ojpsb3dlc3QoKSkgLSBzdGF0aWNfY2FzdDxTPigxLjApCi0gICAgICAgICAgICAgICAgID8gY05lZ092ZXJmbG93IDogY0luUmFuZ2UgOwotICAgICAgfQotICAgIH0gOwotCi0gICAgLy8gcyA8IExvd2VzdChUKS0wLjUgPyBjTmVnT3ZlcmZsb3cgOiBjSW5SYW5nZQotICAgIC8vCi0gICAgdGVtcGxhdGU8Y2xhc3MgVHJhaXRzPgotICAgIHN0cnVjdCBMVF9IYWxmUHJldkxvVCA6IGFwcGxpY2FibGUKLSAgICB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6dGFyZ2V0X3R5cGUgVCA7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6c291cmNlX3R5cGUgUyA7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6YXJndW1lbnRfdHlwZSBhcmd1bWVudF90eXBlIDsKLQotICAgICAgc3RhdGljIHJhbmdlX2NoZWNrX3Jlc3VsdCBhcHBseSAoIGFyZ3VtZW50X3R5cGUgcyApCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBzIDwgc3RhdGljX2Nhc3Q8Uz4oYm91bmRzPFQ+Ojpsb3dlc3QoKSkgLSBzdGF0aWNfY2FzdDxTPigwLjUpCi0gICAgICAgICAgICAgICAgID8gY05lZ092ZXJmbG93IDogY0luUmFuZ2UgOwotICAgICAgfQotICAgIH0gOwotCi0gICAgLy8gcyA+IEhpZ2hlc3QoVCkgPyBjUG9zT3ZlcmZsb3cgOiBjSW5SYW5nZQotICAgIC8vCi0gICAgdGVtcGxhdGU8Y2xhc3MgVHJhaXRzPgotICAgIHN0cnVjdCBHVF9IaVQgOiBhcHBsaWNhYmxlCi0gICAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OnRhcmdldF90eXBlIFQgOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OnNvdXJjZV90eXBlIFMgOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OmFyZ3VtZW50X3R5cGUgYXJndW1lbnRfdHlwZSA7Ci0KLSAgICAgIHN0YXRpYyByYW5nZV9jaGVja19yZXN1bHQgYXBwbHkgKCBhcmd1bWVudF90eXBlIHMgKQotICAgICAgewotICAgICAgICByZXR1cm4gcyA+IHN0YXRpY19jYXN0PFM+KGJvdW5kczxUPjo6aGlnaGVzdCgpKQotICAgICAgICAgICAgICAgICA/IGNQb3NPdmVyZmxvdyA6IGNJblJhbmdlIDsKLSAgICAgIH0KLSAgICB9IDsKLQotICAgIC8vIHMgPj0gTG93ZXN0KFQpICsgMSA/IGNQb3NPdmVyZmxvdyA6IGNJblJhbmdlCi0gICAgLy8KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUcmFpdHM+Ci0gICAgc3RydWN0IEdFX1N1Y2NIaVQgOiBhcHBsaWNhYmxlCi0gICAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OnRhcmdldF90eXBlIFQgOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OnNvdXJjZV90eXBlIFMgOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OmFyZ3VtZW50X3R5cGUgYXJndW1lbnRfdHlwZSA7Ci0KLSAgICAgIHN0YXRpYyByYW5nZV9jaGVja19yZXN1bHQgYXBwbHkgKCBhcmd1bWVudF90eXBlIHMgKQotICAgICAgewotICAgICAgICByZXR1cm4gcyA+PSBzdGF0aWNfY2FzdDxTPihib3VuZHM8VD46OmhpZ2hlc3QoKSkgKyBzdGF0aWNfY2FzdDxTPigxLjApCi0gICAgICAgICAgICAgICAgID8gY1Bvc092ZXJmbG93IDogY0luUmFuZ2UgOwotICAgICAgfQotICAgIH0gOwotCi0gICAgLy8gcyA+PSBMb3dlc3QoVCkgKyAwLjUgPyBjUG9zZ092ZXJmbG93IDogY0luUmFuZ2UKLSAgICAvLwotICAgIHRlbXBsYXRlPGNsYXNzIFRyYWl0cz4KLSAgICBzdHJ1Y3QgR1RfSGFsZlN1Y2NIaVQgOiBhcHBsaWNhYmxlCi0gICAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OnRhcmdldF90eXBlIFQgOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OnNvdXJjZV90eXBlIFMgOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OmFyZ3VtZW50X3R5cGUgYXJndW1lbnRfdHlwZSA7Ci0KLSAgICAgIHN0YXRpYyByYW5nZV9jaGVja19yZXN1bHQgYXBwbHkgKCBhcmd1bWVudF90eXBlIHMgKQotICAgICAgewotICAgICAgICByZXR1cm4gcyA+PSBzdGF0aWNfY2FzdDxTPihib3VuZHM8VD46OmhpZ2hlc3QoKSkgKyBzdGF0aWNfY2FzdDxTPigwLjUpCi0gICAgICAgICAgICAgICAgID8gY1Bvc092ZXJmbG93IDogY0luUmFuZ2UgOwotICAgICAgfQotICAgIH0gOwotCi0KLSAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAvLwotICAvLyBQcmVkaWNhdGUgQ29tYmluZXIuCi0gIC8vCi0gIC8vIFRoaXMgaGVscGVyIGNsYXNzZXMgYXJlIHVzZWQgdG8gcG9zc2libHkgY29tYmluZSB0aGUgcmFuZ2UgY2hlY2tpbmcgbG9naWMKLSAgLy8gaW5kaXZpZHVhbGx5IHBlcmZvcm1lZCBieSB0aGUgcHJlZGljYXRlcwotICAvLwotICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLQotICAgIC8vIEFwcGxpZXMgYm90aCBwcmVkaWNhdGVzOiBmaXJzdCAnUHJlZEEnLCBhbmQgaWYgaXQgZXF1YWxzICdjSW5SYW5nZScsICdQcmVkQicKLSAgICB0ZW1wbGF0ZTxjbGFzcyBQcmVkQSwgY2xhc3MgUHJlZEI+Ci0gICAgc3RydWN0IGFwcGx5Qm90aAotICAgIHsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgUHJlZEE6OmFyZ3VtZW50X3R5cGUgYXJndW1lbnRfdHlwZSA7Ci0KLSAgICAgIHN0YXRpYyByYW5nZV9jaGVja19yZXN1bHQgYXBwbHkgKCBhcmd1bWVudF90eXBlIHMgKQotICAgICAgewotICAgICAgICByYW5nZV9jaGVja19yZXN1bHQgciA9IFByZWRBOjphcHBseShzKSA7Ci0gICAgICAgIGlmICggciA9PSBjSW5SYW5nZSApCi0gICAgICAgICAgciA9IFByZWRCOjphcHBseShzKTsKLSAgICAgICAgcmV0dXJuIHIgOwotICAgICAgfQotICAgIH0gOwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUHJlZEEsIGNsYXNzIFByZWRCPgotICAgIHN0cnVjdCBjb21iaW5lCi0gICAgewotICAgICAgdHlwZWRlZiBhcHBseUJvdGg8UHJlZEEsUHJlZEI+IEJvdGggOwotICAgICAgdHlwZWRlZiB2b2lkICAgICAgICAgICAgICAgICAgIE5Ob25lIDsgLy8gJ05vbmUnIGlzIGRlZmluZWQgYXMgYSBtYWNybyBpbiAoL3Vzci9YMTFSNi9pbmNsdWRlL1gxMS9YLmgpCi0KLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgUHJlZEE6OmRvX2FwcGx5IGRvX2FwcGx5QSA7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIFByZWRCOjpkb19hcHBseSBkb19hcHBseUIgOwotCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGZvcl9ib3RoPGRvX2FwcGx5QSwgZG9fYXBwbHlCLCBCb3RoLCBQcmVkQSwgUHJlZEIsIE5Ob25lPjo6dHlwZSB0eXBlIDsKLSAgICB9IDsKLQotCi0KLQotCi0KLQotCi0KLQotCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYW5nZSBDaGVja2VyIGNsYXNzZXMuCi0vLwotLy8gVGhlIGZvbGxvd2luZyBjbGFzc2VzIGFyZSBWSVNJQkxFIGJhc2UgY2xhc3NlcyBvZiB0aGUgdXNlci1sZXZlbCBjb252ZXJ0ZXI8PiBjbGFzcy4KLS8vIFRoZXkgc3VwcGx5IHRoZSBvcHRpbWl6ZWQgJ291dF9vZl9yYW5nZSgpJyBhbmQgJ3ZhbGlkYXRlX3JhbmdlKCknIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb25zCi0vLyB2aXNpYmxlIGluIHRoZSB1c2VyIGludGVyZmFjZS4KLS8vCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgLy8gRHVtbXkgcmFuZ2UgY2hlY2tlci4KLSAgdGVtcGxhdGU8Y2xhc3MgVHJhaXRzPgotICBzdHJ1Y3QgZHVtbXlfcmFuZ2VfY2hlY2tlcgotICB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OmFyZ3VtZW50X3R5cGUgYXJndW1lbnRfdHlwZSA7Ci0KLSAgICBzdGF0aWMgcmFuZ2VfY2hlY2tfcmVzdWx0IG91dF9vZl9yYW5nZSAoIGFyZ3VtZW50X3R5cGUgKSB7IHJldHVybiBjSW5SYW5nZSA7IH0KLSAgICBzdGF0aWMgdm9pZCB2YWxpZGF0ZV9yYW5nZSAoIGFyZ3VtZW50X3R5cGUgKSB7fQotICB9IDsKLQotICAvLyBHZW5lcmljIHJhbmdlIGNoZWNrZXIuCi0gIC8vCi0gIC8vIEFsbCB0aGUgcmFuZ2UgY2hlY2tpbmcgbG9naWMgZm9yIGFsbCBwb3NzaWJsZSBjb21iaW5hdGlvbnMgb2Ygc291cmNlIGFuZCB0YXJnZXQKLSAgLy8gY2FuIGJlIGFycmFuZ2VkIGluIHRlcm1zIG9mIG9uZSBvciB0d28gcHJlZGljYXRlcywgd2hpY2ggdGVzdCBvdmVyZmxvdyBvbiBib3RoIG5lZy9wb3MgJ3NpZGVzJwotICAvLyBvZiB0aGUgcmFuZ2VzLgotICAvLwotICAvLyBUaGVzZSBwcmVkaWNhdGVzIGFyZSBnaXZlbiBoZXJlIGFzIElzTmVnT3ZlcmZsb3cgYW5kIElzUG9zT3ZlcmZsb3cuCi0gIC8vCi0gIHRlbXBsYXRlPGNsYXNzIFRyYWl0cywgY2xhc3MgSXNOZWdPdmVyZmxvdywgY2xhc3MgSXNQb3NPdmVyZmxvdywgY2xhc3MgT3ZlcmZsb3dIYW5kbGVyPgotICBzdHJ1Y3QgZ2VuZXJpY19yYW5nZV9jaGVja2VyCi0gIHsKLSAgICB0eXBlZGVmIE92ZXJmbG93SGFuZGxlciBvdmVyZmxvd19oYW5kbGVyIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjphcmd1bWVudF90eXBlIGFyZ3VtZW50X3R5cGUgOwotCi0gICAgc3RhdGljIHJhbmdlX2NoZWNrX3Jlc3VsdCBvdXRfb2ZfcmFuZ2UgKCBhcmd1bWVudF90eXBlIHMgKQotICAgIHsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgY29tYmluZTxJc05lZ092ZXJmbG93LElzUG9zT3ZlcmZsb3c+Ojp0eXBlIFByZWRpY2F0ZSA7Ci0KLSAgICAgIHJldHVybiBQcmVkaWNhdGU6OmFwcGx5KHMpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHZhbGlkYXRlX3JhbmdlICggYXJndW1lbnRfdHlwZSBzICkKLSAgICAgIHsgT3ZlcmZsb3dIYW5kbGVyKCkoIG91dF9vZl9yYW5nZShzKSApIDsgfQotICB9IDsKLQotCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vCi0vLyBTZWxlY3RvcnMgZm9yIHRoZSBvcHRpbWl6ZWQgUmFuZ2UgQ2hlY2tlciBjbGFzcy4KLS8vCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgdGVtcGxhdGU8Y2xhc3MgVHJhaXRzLGNsYXNzIE92ZXJmbG93SGFuZGxlcj4KLSAgc3RydWN0IEdldFJDX1NpZzJTaWdfb3JfVW5zaWcyVW5zaWcKLSAgewotICAgIHR5cGVkZWYgZHVtbXlfcmFuZ2VfY2hlY2tlcjxUcmFpdHM+IER1bW15IDsKLQotICAgIHR5cGVkZWYgTFRfTG9UPFRyYWl0cz4gUHJlZDEgOwotICAgIHR5cGVkZWYgR1RfSGlUPFRyYWl0cz4gUHJlZDIgOwotCi0gICAgdHlwZWRlZiBnZW5lcmljX3JhbmdlX2NoZWNrZXI8VHJhaXRzLFByZWQxLFByZWQyLE92ZXJmbG93SGFuZGxlcj4gTm9ybWFsIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjpzdWJyYW5nZWQgc3VicmFuZ2VkIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl88c3VicmFuZ2VkLE5vcm1hbCxEdW1teT46OnR5cGUgdHlwZSA7Ci0gIH0gOwotCi0gIHRlbXBsYXRlPGNsYXNzIFRyYWl0cywgY2xhc3MgT3ZlcmZsb3dIYW5kbGVyPgotICBzdHJ1Y3QgR2V0UkNfU2lnMlVuc2lnCi0gIHsKLSAgICB0eXBlZGVmIExUX1plcm88VHJhaXRzPiBQcmVkMSA7Ci0gICAgdHlwZWRlZiBHVF9IaVQgPFRyYWl0cz4gUHJlZDIgOwotCi0gICAgdHlwZWRlZiBnZW5lcmljX3JhbmdlX2NoZWNrZXI8VHJhaXRzLFByZWQxLFByZWQyLE92ZXJmbG93SGFuZGxlcj4gQ2hvaWNlQSA7Ci0KLSAgICB0eXBlZGVmIGdlbmVyaWNfcmFuZ2VfY2hlY2tlcjxUcmFpdHMsUHJlZDEsbm9uX2FwcGxpY2FibGUsT3ZlcmZsb3dIYW5kbGVyPiBDaG9pY2VCIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjp0YXJnZXRfdHlwZSBUIDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6c291cmNlX3R5cGUgUyA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIHN1YnJhbmdlZF9VbnNpZzJTaWc8UyxUPjo6dHlwZSBvcG9zaXRlX3N1YnJhbmdlZCA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bm90XzxvcG9zaXRlX3N1YnJhbmdlZD46OnR5cGUgcG9zaXRpdmVseV9zdWJyYW5nZWQgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzxwb3NpdGl2ZWx5X3N1YnJhbmdlZCxDaG9pY2VBLENob2ljZUI+Ojp0eXBlIHR5cGUgOwotICB9IDsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUcmFpdHMsIGNsYXNzIE92ZXJmbG93SGFuZGxlcj4KLSAgc3RydWN0IEdldFJDX1Vuc2lnMlNpZwotICB7Ci0gICAgdHlwZWRlZiBHVF9IaVQ8VHJhaXRzPiBQcmVkMSA7Ci0KLSAgICB0eXBlZGVmIGdlbmVyaWNfcmFuZ2VfY2hlY2tlcjxUcmFpdHMsbm9uX2FwcGxpY2FibGUsUHJlZDEsT3ZlcmZsb3dIYW5kbGVyPiB0eXBlIDsKLSAgfSA7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVHJhaXRzLGNsYXNzIE92ZXJmbG93SGFuZGxlcj4KLSAgc3RydWN0IEdldFJDX0ludDJJbnQKLSAgewotICAgIHR5cGVkZWYgR2V0UkNfU2lnMlNpZ19vcl9VbnNpZzJVbnNpZzxUcmFpdHMsT3ZlcmZsb3dIYW5kbGVyPiBTaWcyU2lnUSAgICAgOwotICAgIHR5cGVkZWYgR2V0UkNfU2lnMlVuc2lnICAgICAgICAgICAgIDxUcmFpdHMsT3ZlcmZsb3dIYW5kbGVyPiBTaWcyVW5zaWdRICAgOwotICAgIHR5cGVkZWYgR2V0UkNfVW5zaWcyU2lnICAgICAgICAgICAgIDxUcmFpdHMsT3ZlcmZsb3dIYW5kbGVyPiBVbnNpZzJTaWdRICAgOwotICAgIHR5cGVkZWYgU2lnMlNpZ1EgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbnNpZzJVbnNpZ1EgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OnNpZ25fbWl4dHVyZSBzaWduX21peHR1cmUgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgZm9yX3NpZ25fbWl4dHVyZTxzaWduX21peHR1cmUsU2lnMlNpZ1EsU2lnMlVuc2lnUSxVbnNpZzJTaWdRLFVuc2lnMlVuc2lnUT46OnR5cGUKLSAgICAgICAgc2VsZWN0b3IgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZWxlY3Rvcjo6dHlwZSB0eXBlIDsKLSAgfSA7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVHJhaXRzPgotICBzdHJ1Y3QgR2V0UkNfSW50MkZsb2F0Ci0gIHsKLSAgICB0eXBlZGVmIGR1bW15X3JhbmdlX2NoZWNrZXI8VHJhaXRzPiB0eXBlIDsKLSAgfSA7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVHJhaXRzLCBjbGFzcyBPdmVyZmxvd0hhbmRsZXIsIGNsYXNzIEZsb2F0MkludFJvdW5kZXI+Ci0gIHN0cnVjdCBHZXRSQ19GbG9hdDJJbnQKLSAgewotICAgIHR5cGVkZWYgTEVfUHJldkxvVCAgICA8VHJhaXRzPiBQcmVkMSA7Ci0gICAgdHlwZWRlZiBHRV9TdWNjSGlUICAgIDxUcmFpdHM+IFByZWQyIDsKLSAgICB0eXBlZGVmIExUX0hhbGZQcmV2TG9UPFRyYWl0cz4gUHJlZDMgOwotICAgIHR5cGVkZWYgR1RfSGFsZlN1Y2NIaVQ8VHJhaXRzPiBQcmVkNCA7Ci0gICAgdHlwZWRlZiBHVF9IaVQgICAgICAgIDxUcmFpdHM+IFByZWQ1IDsKLSAgICB0eXBlZGVmIExUX0xvVCAgICAgICAgPFRyYWl0cz4gUHJlZDYgOwotCi0gICAgdHlwZWRlZiBnZW5lcmljX3JhbmdlX2NoZWNrZXI8VHJhaXRzLFByZWQxLFByZWQyLE92ZXJmbG93SGFuZGxlcj4gVG9aZXJvICAgIDsKLSAgICB0eXBlZGVmIGdlbmVyaWNfcmFuZ2VfY2hlY2tlcjxUcmFpdHMsUHJlZDMsUHJlZDQsT3ZlcmZsb3dIYW5kbGVyPiBUb05lYXJlc3QgOwotICAgIHR5cGVkZWYgZ2VuZXJpY19yYW5nZV9jaGVja2VyPFRyYWl0cyxQcmVkMSxQcmVkNSxPdmVyZmxvd0hhbmRsZXI+IFRvSW5mICAgICA7Ci0gICAgdHlwZWRlZiBnZW5lcmljX3JhbmdlX2NoZWNrZXI8VHJhaXRzLFByZWQ2LFByZWQyLE92ZXJmbG93SGFuZGxlcj4gVG9OZWdJbmYgIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgRmxvYXQySW50Um91bmRlcjo6cm91bmRfc3R5bGUgcm91bmRfc3R5bGUgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBmb3Jfcm91bmRfc3R5bGU8cm91bmRfc3R5bGUsVG9aZXJvLFRvTmVhcmVzdCxUb0luZixUb05lZ0luZj46OnR5cGUgdHlwZSA7Ci0gIH0gOwotCi0gIHRlbXBsYXRlPGNsYXNzIFRyYWl0cywgY2xhc3MgT3ZlcmZsb3dIYW5kbGVyPgotICBzdHJ1Y3QgR2V0UkNfRmxvYXQyRmxvYXQKLSAgewotICAgIHR5cGVkZWYgZHVtbXlfcmFuZ2VfY2hlY2tlcjxUcmFpdHM+IER1bW15IDsKLQotICAgIHR5cGVkZWYgTFRfTG9UPFRyYWl0cz4gUHJlZDEgOwotICAgIHR5cGVkZWYgR1RfSGlUPFRyYWl0cz4gUHJlZDIgOwotCi0gICAgdHlwZWRlZiBnZW5lcmljX3JhbmdlX2NoZWNrZXI8VHJhaXRzLFByZWQxLFByZWQyLE92ZXJmbG93SGFuZGxlcj4gTm9ybWFsIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjpzdWJyYW5nZWQgc3VicmFuZ2VkIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl88c3VicmFuZ2VkLE5vcm1hbCxEdW1teT46OnR5cGUgdHlwZSA7Ci0gIH0gOwotCi0gIHRlbXBsYXRlPGNsYXNzIFRyYWl0cywgY2xhc3MgT3ZlcmZsb3dIYW5kbGVyLCBjbGFzcyBGbG9hdDJJbnRSb3VuZGVyPgotICBzdHJ1Y3QgR2V0UkNfQnVpbHRJbjJCdWlsdEluCi0gIHsKLSAgICB0eXBlZGVmIEdldFJDX0ludDJJbnQ8VHJhaXRzLE92ZXJmbG93SGFuZGxlcj4gICAgICAgICAgICAgICAgICAgIEludDJJbnRRIDsKLSAgICB0eXBlZGVmIEdldFJDX0ludDJGbG9hdDxUcmFpdHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludDJGbG9hdFEgOwotICAgIHR5cGVkZWYgR2V0UkNfRmxvYXQySW50PFRyYWl0cyxPdmVyZmxvd0hhbmRsZXIsRmxvYXQySW50Um91bmRlcj4gRmxvYXQySW50USA7Ci0gICAgdHlwZWRlZiBHZXRSQ19GbG9hdDJGbG9hdDxUcmFpdHMsT3ZlcmZsb3dIYW5kbGVyPiAgICAgICAgICAgICAgICBGbG9hdDJGbG9hdFEgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OmludF9mbG9hdF9taXh0dXJlIGludF9mbG9hdF9taXh0dXJlIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgZm9yX2ludF9mbG9hdF9taXh0dXJlPGludF9mbG9hdF9taXh0dXJlLCBJbnQySW50USwgSW50MkZsb2F0USwgRmxvYXQySW50USwgRmxvYXQyRmxvYXRRPjo6dHlwZSBzZWxlY3RvciA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNlbGVjdG9yOjp0eXBlIHR5cGUgOwotICB9IDsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUcmFpdHMsIGNsYXNzIE92ZXJmbG93SGFuZGxlciwgY2xhc3MgRmxvYXQySW50Um91bmRlcj4KLSAgc3RydWN0IEdldFJDCi0gIHsKLSAgICB0eXBlZGVmIEdldFJDX0J1aWx0SW4yQnVpbHRJbjxUcmFpdHMsT3ZlcmZsb3dIYW5kbGVyLEZsb2F0MkludFJvdW5kZXI+IEJ1aWx0SW4yQnVpbHRJblEgOwotCi0gICAgdHlwZWRlZiBkdW1teV9yYW5nZV9jaGVja2VyPFRyYWl0cz4gRHVtbXkgOwotCi0gICAgdHlwZWRlZiBtcGw6OmlkZW50aXR5PER1bW15PiBEdW1teVEgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OnVkdF9idWlsdGluX21peHR1cmUgdWR0X2J1aWx0aW5fbWl4dHVyZSA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGZvcl91ZHRfYnVpbHRpbl9taXh0dXJlPHVkdF9idWlsdGluX21peHR1cmUsQnVpbHRJbjJCdWlsdEluUSxEdW1teVEsRHVtbXlRLER1bW15UT46OnR5cGUgc2VsZWN0b3IgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZWxlY3Rvcjo6dHlwZSB0eXBlIDsKLSAgfSA7Ci0KLQotCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb252ZXJ0ZXIgY2xhc3Nlcy4KLS8vCi0vLyBUaGUgZm9sbG93aW5nIGNsYXNzZXMgYXJlIFZJU0lCTEUgYmFzZSBjbGFzc2VzIG9mIHRoZSB1c2VyLWxldmVsIGNvbnZlcnRlcjw+IGNsYXNzLgotLy8gVGhleSBzdXBwbHkgdGhlIG9wdGltaXplZCAnbmVhcmJ5aW50KCknIGFuZCAnY29udmVydCgpJyBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9ucwotLy8gdmlzaWJsZSBpbiB0aGUgdXNlciBpbnRlcmZhY2UuCi0vLwotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gIC8vCi0gIC8vIFRyaXZpYWwgQ29udmVydGVyIDogdXNlZCB3aGVuIChjdi11bnF1YWxpZmllZCkgVCA9PSAoY3YtdW5xdWFsaWZpZWQpICBTCi0gIC8vCi0gIHRlbXBsYXRlPGNsYXNzIFRyYWl0cz4KLSAgc3RydWN0IHRyaXZpYWxfY29udmVydGVyX2ltcGwgOiBwdWJsaWMgc3RkOjp1bmFyeV9mdW5jdGlvbjwgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgVHJhaXRzOjphcmd1bWVudF90eXBlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIFRyYWl0czo6cmVzdWx0X3R5cGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICxwdWJsaWMgZHVtbXlfcmFuZ2VfY2hlY2tlcjxUcmFpdHM+Ci0gIHsKLSAgICB0eXBlZGVmIFRyYWl0cyB0cmFpdHMgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OnNvdXJjZV90eXBlICAgc291cmNlX3R5cGUgICA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OmFyZ3VtZW50X3R5cGUgYXJndW1lbnRfdHlwZSA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OnJlc3VsdF90eXBlICAgcmVzdWx0X3R5cGUgICA7Ci0KLSAgICBzdGF0aWMgcmVzdWx0X3R5cGUgbG93X2xldmVsX2NvbnZlcnQgKCBhcmd1bWVudF90eXBlIHMgKSB7IHJldHVybiBzIDsgfQotICAgIHN0YXRpYyBzb3VyY2VfdHlwZSBuZWFyYnlpbnQgICAgICAgICAoIGFyZ3VtZW50X3R5cGUgcyApIHsgcmV0dXJuIHMgOyB9Ci0gICAgc3RhdGljIHJlc3VsdF90eXBlIGNvbnZlcnQgICAgICAgICAgICggYXJndW1lbnRfdHlwZSBzICkgeyByZXR1cm4gcyA7IH0KLSAgfSA7Ci0KLQotICAvLwotICAvLyBSb3VuZGluZyBDb252ZXJ0ZXIgOiB1c2VkIGZvciBmbG9hdCB0byBpbnRlZ3JhbCBjb252ZXJzaW9ucy4KLSAgLy8KLSAgdGVtcGxhdGU8Y2xhc3MgVHJhaXRzLGNsYXNzIFJhbmdlQ2hlY2tlcixjbGFzcyBSYXdDb252ZXJ0ZXIsY2xhc3MgRmxvYXQySW50Um91bmRlcj4KLSAgc3RydWN0IHJvdW5kaW5nX2NvbnZlcnRlciA6IHB1YmxpYyBzdGQ6OnVuYXJ5X2Z1bmN0aW9uPCAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBUcmFpdHM6OmFyZ3VtZW50X3R5cGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBUcmFpdHM6OnJlc3VsdF90eXBlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLHB1YmxpYyBSYW5nZUNoZWNrZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLHB1YmxpYyBGbG9hdDJJbnRSb3VuZGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICxwdWJsaWMgUmF3Q29udmVydGVyCi0gIHsKLSAgICB0eXBlZGVmIFJhbmdlQ2hlY2tlciAgICAgUmFuZ2VDaGVja2VyQmFzZSA7Ci0gICAgdHlwZWRlZiBGbG9hdDJJbnRSb3VuZGVyIEZsb2F0MkludFJvdW5kZXJCYXNlIDsKLSAgICB0eXBlZGVmIFJhd0NvbnZlcnRlciAgICAgUmF3Q29udmVydGVyQmFzZSA7Ci0KLSAgICB0eXBlZGVmIFRyYWl0cyB0cmFpdHMgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OnNvdXJjZV90eXBlICAgc291cmNlX3R5cGUgICA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OmFyZ3VtZW50X3R5cGUgYXJndW1lbnRfdHlwZSA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OnJlc3VsdF90eXBlICAgcmVzdWx0X3R5cGUgICA7Ci0KLSAgICBzdGF0aWMgcmVzdWx0X3R5cGUgY29udmVydCAoIGFyZ3VtZW50X3R5cGUgcyApCi0gICAgewotICAgICAgUmFuZ2VDaGVja2VyQmFzZTo6dmFsaWRhdGVfcmFuZ2Uocyk7Ci0gICAgICBzb3VyY2VfdHlwZSBzMSA9IEZsb2F0MkludFJvdW5kZXJCYXNlOjpuZWFyYnlpbnQocyk7Ci0gICAgICByZXR1cm4gUmF3Q29udmVydGVyQmFzZTo6bG93X2xldmVsX2NvbnZlcnQoczEpOwotICAgIH0KLSAgfSA7Ci0KLQotICAvLwotICAvLyBOb24tUm91bmRpbmcgQ29udmVydGVyIDogdXNlZCBmb3IgYWxsIG90aGVyIGNvbnZlcnNpb25zLgotICAvLwotICB0ZW1wbGF0ZTxjbGFzcyBUcmFpdHMsY2xhc3MgUmFuZ2VDaGVja2VyLGNsYXNzIFJhd0NvbnZlcnRlcj4KLSAgc3RydWN0IG5vbl9yb3VuZGluZ19jb252ZXJ0ZXIgOiBwdWJsaWMgc3RkOjp1bmFyeV9mdW5jdGlvbjwgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBUcmFpdHM6OmFyZ3VtZW50X3R5cGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBUcmFpdHM6OnJlc3VsdF90eXBlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICxwdWJsaWMgUmFuZ2VDaGVja2VyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAscHVibGljIFJhd0NvbnZlcnRlcgotICB7Ci0gICAgdHlwZWRlZiBSYW5nZUNoZWNrZXIgUmFuZ2VDaGVja2VyQmFzZSA7Ci0gICAgdHlwZWRlZiBSYXdDb252ZXJ0ZXIgUmF3Q29udmVydGVyQmFzZSA7Ci0KLSAgICB0eXBlZGVmIFRyYWl0cyB0cmFpdHMgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OnNvdXJjZV90eXBlICAgc291cmNlX3R5cGUgICA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OmFyZ3VtZW50X3R5cGUgYXJndW1lbnRfdHlwZSA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OnJlc3VsdF90eXBlICAgcmVzdWx0X3R5cGUgICA7Ci0KLSAgICBzdGF0aWMgc291cmNlX3R5cGUgbmVhcmJ5aW50ICggYXJndW1lbnRfdHlwZSBzICkgeyByZXR1cm4gcyA7IH0KLQotICAgIHN0YXRpYyByZXN1bHRfdHlwZSBjb252ZXJ0ICggYXJndW1lbnRfdHlwZSBzICkKLSAgICB7Ci0gICAgICBSYW5nZUNoZWNrZXJCYXNlOjp2YWxpZGF0ZV9yYW5nZShzKTsKLSAgICAgIHJldHVybiBSYXdDb252ZXJ0ZXJCYXNlOjpsb3dfbGV2ZWxfY29udmVydChzKTsKLSAgICB9Ci0gIH0gOwotCi0KLQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLwotLy8gU2VsZWN0b3JzIGZvciB0aGUgb3B0aW1pemVkIENvbnZlcnRlciBjbGFzcy4KLS8vCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgdGVtcGxhdGU8Y2xhc3MgVHJhaXRzLGNsYXNzIE92ZXJmbG93SGFuZGxlcixjbGFzcyBGbG9hdDJJbnRSb3VuZGVyLGNsYXNzIFJhd0NvbnZlcnRlciwgY2xhc3MgVXNlclJhbmdlQ2hlY2tlcj4KLSAgc3RydWN0IGdldF9ub25fdHJpdmlhbF9jb252ZXJ0ZXIKLSAgewotICAgIHR5cGVkZWYgR2V0UkM8VHJhaXRzLE92ZXJmbG93SGFuZGxlcixGbG9hdDJJbnRSb3VuZGVyPiBJbnRlcm5hbFJhbmdlQ2hlY2tlclEgOwotCi0gICAgdHlwZWRlZiBpc19zYW1lPFVzZXJSYW5nZUNoZWNrZXIsVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXI+IHVzZV9pbnRlcm5hbF9SQyA7Ci0KLSAgICB0eXBlZGVmIG1wbDo6aWRlbnRpdHk8VXNlclJhbmdlQ2hlY2tlcj4gVXNlclJhbmdlQ2hlY2tlclEgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgbXBsOjpldmFsX2lmPHVzZV9pbnRlcm5hbF9SQyxJbnRlcm5hbFJhbmdlQ2hlY2tlclEsVXNlclJhbmdlQ2hlY2tlclE+Ojp0eXBlCi0gICAgICAgIFJhbmdlQ2hlY2tlciA7Ci0KLSAgICB0eXBlZGVmIG5vbl9yb3VuZGluZ19jb252ZXJ0ZXI8VHJhaXRzLFJhbmdlQ2hlY2tlcixSYXdDb252ZXJ0ZXI+ICAgICAgICAgICAgICBOb25Sb3VuZGluZyA7Ci0gICAgdHlwZWRlZiByb3VuZGluZ19jb252ZXJ0ZXI8VHJhaXRzLFJhbmdlQ2hlY2tlcixSYXdDb252ZXJ0ZXIsRmxvYXQySW50Um91bmRlcj4gUm91bmRpbmcgOwotCi0gICAgdHlwZWRlZiBtcGw6OmlkZW50aXR5PE5vblJvdW5kaW5nPiBOb25Sb3VuZGluZ1EgOwotICAgIHR5cGVkZWYgbXBsOjppZGVudGl0eTxSb3VuZGluZz4gICAgUm91bmRpbmdRICAgIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjppbnRfZmxvYXRfbWl4dHVyZSBpbnRfZmxvYXRfbWl4dHVyZSA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICBmb3JfaW50X2Zsb2F0X21peHR1cmU8aW50X2Zsb2F0X21peHR1cmUsIE5vblJvdW5kaW5nUSwgTm9uUm91bmRpbmdRLCBSb3VuZGluZ1EsIE5vblJvdW5kaW5nUT46OnR5cGUKLSAgICAgICAgc2VsZWN0b3IgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZWxlY3Rvcjo6dHlwZSB0eXBlIDsKLSAgfSA7Ci0KLSAgdGVtcGxhdGU8IGNsYXNzIFRyYWl0cwotICAgICAgICAgICAsY2xhc3MgT3ZlcmZsb3dIYW5kbGVyCi0gICAgICAgICAgICxjbGFzcyBGbG9hdDJJbnRSb3VuZGVyCi0gICAgICAgICAgICxjbGFzcyBSYXdDb252ZXJ0ZXIKLSAgICAgICAgICAgLGNsYXNzIFVzZXJSYW5nZUNoZWNrZXIKLSAgICAgICAgICA+Ci0gIHN0cnVjdCBnZXRfY29udmVydGVyX2ltcGwKLSAgewotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoIDB4MDU2MSApICkKLSAgICAvLyBiY2M1NSBwcmVmZXJzIHNvbWV0aW1lcyB0ZW1wbGF0ZSBwYXJhbWV0ZXJzIHRvIGJlIGV4cGxpY2l0IGxvY2FsIHR5cGVzLgotICAgIC8vIChub3RpY2UgdGhhdCBpcyBpcyBpbGxlZ2FsIHRvIHJldXNlIHRoZSBuYW1lcyBsaWtlIHRoaXMpCi0gICAgdHlwZWRlZiBUcmFpdHMgICAgICAgICAgIFRyYWl0cyA7Ci0gICAgdHlwZWRlZiBPdmVyZmxvd0hhbmRsZXIgIE92ZXJmbG93SGFuZGxlciA7Ci0gICAgdHlwZWRlZiBGbG9hdDJJbnRSb3VuZGVyIEZsb2F0MkludFJvdW5kZXIgOwotICAgIHR5cGVkZWYgUmF3Q29udmVydGVyICAgICBSYXdDb252ZXJ0ZXIgOwotICAgIHR5cGVkZWYgVXNlclJhbmdlQ2hlY2tlciBVc2VyUmFuZ2VDaGVja2VyIDsKLSNlbmRpZgotCi0gICAgdHlwZWRlZiB0cml2aWFsX2NvbnZlcnRlcl9pbXBsPFRyYWl0cz4gVHJpdmlhbCA7Ci0gICAgdHlwZWRlZiBtcGw6OmlkZW50aXR5ICAgICAgICA8VHJpdmlhbD4gVHJpdmlhbFEgOwotCi0gICAgdHlwZWRlZiBnZXRfbm9uX3RyaXZpYWxfY29udmVydGVyPCBUcmFpdHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLE92ZXJmbG93SGFuZGxlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsRmxvYXQySW50Um91bmRlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsUmF3Q29udmVydGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICxVc2VyUmFuZ2VDaGVja2VyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiBOb25Ucml2aWFsUSA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6dHJpdmlhbCB0cml2aWFsIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpldmFsX2lmPHRyaXZpYWwsVHJpdmlhbFEsTm9uVHJpdmlhbFE+Ojp0eXBlIHR5cGUgOwotICB9IDsKLQotfSB9IH0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0OjpudW1lcmljOjpjb252ZGV0YWlsCi0KLSNlbmRpZgotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9pbnRfZmxvYXRfbWl4dHVyZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvaW50X2Zsb2F0X21peHR1cmUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTFhYzQwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9pbnRfZmxvYXRfbWl4dHVyZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vLyAgKGMpIENvcHlyaWdodCBGZXJuYW5kbyBMdWlzIENhY2Npb2xhIENhcmJhbGxhbCAyMDAwLTIwMDQKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGxpYnJhcnkgaG9tZSBwYWdlIGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbnVtZXJpYy9jb252ZXJzaW9uCi0vLwotLy8gQ29udGFjdCB0aGUgYXV0aG9yIGF0OiBmZXJuYW5kb19jYWNjaW9sYUBob3RtYWlsLmNvbQotLy8gCi0jaWZuZGVmIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9ERVRBSUxfSU5UX0ZMT0FUX01JWFRVUkVfRkxDXzEyTk9WMjAwMl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0RFVEFJTF9JTlRfRkxPQVRfTUlYVFVSRV9GTENfMTJOT1YyMDAyX0hQUAotCi0jaW5jbHVkZSAibmRuYm9vc3QvY29uZmlnLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9saW1pdHMuaHBwIgotCi0jaW5jbHVkZSAibmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2ludF9mbG9hdF9taXh0dXJlX2VudW0uaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvbWV0YS5ocHAiCi0KLSNpbmNsdWRlICJuZG5ib29zdC9tcGwvaW50ZWdyYWxfYy5ocHAiCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBudW1lcmljIHsgbmFtZXNwYWNlIGNvbnZkZXRhaWwKLXsKLSAgLy8gSW50ZWdyYWwgQ29uc3RhbnRzIGZvciAnSW50RmxvYXRNaXh0dXJlJwotICB0eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxpbnRfZmxvYXRfbWl4dHVyZV9lbnVtLCBpbnRlZ3JhbF90b19pbnRlZ3JhbD4gaW50MmludF9jIDsKLSAgdHlwZWRlZiBtcGw6OmludGVncmFsX2M8aW50X2Zsb2F0X21peHR1cmVfZW51bSwgaW50ZWdyYWxfdG9fZmxvYXQ+ICAgIGludDJmbG9hdF9jIDsKLSAgdHlwZWRlZiBtcGw6OmludGVncmFsX2M8aW50X2Zsb2F0X21peHR1cmVfZW51bSwgZmxvYXRfdG9faW50ZWdyYWw+ICAgIGZsb2F0MmludF9jIDsKLSAgdHlwZWRlZiBtcGw6OmludGVncmFsX2M8aW50X2Zsb2F0X21peHR1cmVfZW51bSwgZmxvYXRfdG9fZmxvYXQ+ICAgICAgIGZsb2F0MmZsb2F0X2MgOwotCi0gIC8vIE1ldGFmdW5jdGlvbjoKLSAgLy8KLSAgLy8gICBnZXRfaW50X2Zsb2F0X21peHR1cmU8VCxTPjo6dHlwZQotICAvLwotICAvLyBTZWxlY3RzIHRoZSBhcHByb3ByaWF0ZSBJbnQtRmxvYXQgTWl4dHVyZSBJbnRlZ3JhbCBDb25zdGFudCBmb3IgdGhlIGNvbWJpbmF0aW9uIFQsUy4KLSAgLy8KLSAgdGVtcGxhdGU8Y2xhc3MgVCxjbGFzcyBTPgotICBzdHJ1Y3QgZ2V0X2ludF9mbG9hdF9taXh0dXJlCi0gIHsKLSAgICB0eXBlZGVmIG1wbDo6Ym9vbF88IDo6c3RkOjpudW1lcmljX2xpbWl0czxTPjo6aXNfaW50ZWdlciA+IFNfaW50IDsKLSAgICB0eXBlZGVmIG1wbDo6Ym9vbF88IDo6c3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfaW50ZWdlciA+IFRfaW50IDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgIGZvcl9ib3RoPFNfaW50LCBUX2ludCwgaW50MmludF9jLCBpbnQyZmxvYXRfYywgZmxvYXQyaW50X2MsIGZsb2F0MmZsb2F0X2M+Ojp0eXBlCi0gICAgICAgIHR5cGUgOwotICB9IDsKLQotICAvLyBNZXRhZnVuY3Rpb246Ci0gIC8vCi0gIC8vICAgZm9yX2ludF9mbG9hdF9taXh0dXJlPE1peHR1cmUsaW50X2ludCxpbnRfZmxvYXQsZmxvYXRfaW50LGZsb2F0X2Zsb2F0Pjo6dHlwZQotICAvLwotICAvLyB7TWl4dHVyZX0gaXMgb25lIG9mIHRoZSBJbnRlZ3JhbCBDb25zdGFudHMgZm9yIE1peHR1cmUsIGRlY2xhcmVkIGFib3ZlLgotICAvLyB7aW50X2ludCxpbnRfZmxvYXQsZmxvYXRfaW50LGZsb2F0X2Zsb2F0fSBhcmUgYXJpYnRyYXJ5IHR5cGVzLiAobm90IG1ldGFmdW5jdGlvbnMpCi0gIC8vCi0gIC8vIEFjY29yZGluZyB0byB0aGUgdmFsdWUgb2YgJ0ludEZsb2F0TWl4dHVyZScsIHNlbGVjdHMgdGhlIGNvcnJlc3BvbmRpbmcgdHlwZS4KLSAgLy8KLSAgdGVtcGxhdGU8Y2xhc3MgSW50RmxvYXRNaXh0dXJlLCBjbGFzcyBJbnQySW50LCBjbGFzcyBJbnQyRmxvYXQsIGNsYXNzIEZsb2F0MkludCwgY2xhc3MgRmxvYXQyRmxvYXQ+Ci0gIHN0cnVjdCBmb3JfaW50X2Zsb2F0X21peHR1cmUKLSAgewotICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgIGN0X3N3aXRjaDQ8SW50RmxvYXRNaXh0dXJlCi0gICAgICAgICAgICAgICAgICxpbnQyaW50X2MsIGludDJmbG9hdF9jLCBmbG9hdDJpbnRfYyAgLy8gZGVmYXVsdAotICAgICAgICAgICAgICAgICAsSW50MkludCAgLCBJbnQyRmxvYXQgICwgRmxvYXQySW50ICAsIEZsb2F0MkZsb2F0Ci0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICB0eXBlIDsKLSAgfSA7Ci0KLX0gfSB9IC8vIG5hbWVzcGFjZSBuZG5ib29zdDo6bnVtZXJpYzo6Y29udmRldGFpbAotCi0jZW5kaWYKLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9pc19zdWJyYW5nZWQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL2lzX3N1YnJhbmdlZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhZjEyYzAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL2lzX3N1YnJhbmdlZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMzQgKzAsMCBAQAotLy8gIChjKSBDb3B5cmlnaHQgRmVybmFuZG8gTHVpcyBDYWNjaW9sYSBDYXJiYWxsYWwgMjAwMC0yMDA0Ci0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vICBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBsaWJyYXJ5IGhvbWUgcGFnZSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL251bWVyaWMvY29udmVyc2lvbgotLy8KLS8vIENvbnRhY3QgdGhlIGF1dGhvciBhdDogZmVybmFuZG9fY2FjY2lvbGFAaG90bWFpbC5jb20KLS8vIAotI2lmbmRlZiBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fREVUQUlMX0lTX1NVQlJBTkdFRF9GTENfMTJOT1YyMDAyX0hQUAotI2RlZmluZSBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fREVUQUlMX0lTX1NVQlJBTkdFRF9GTENfMTJOT1YyMDAyX0hQUAotCi0jaW5jbHVkZSAibmRuYm9vc3QvY29uZmlnLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9saW1pdHMuaHBwIgotCi0jaW5jbHVkZSAibmRuYm9vc3QvbXBsL2ludC5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbXBsL211bHRpcGxpZXMuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L21wbC9sZXNzLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9tcGwvZXF1YWxfdG8uaHBwIgotCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHAiCi0KLSNpbmNsdWRlICJuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL21ldGEuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvaW50X2Zsb2F0X21peHR1cmUuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvc2lnbl9taXh0dXJlLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL3VkdF9idWlsdGluX21peHR1cmUuaHBwIgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbnVtZXJpYyB7IG5hbWVzcGFjZSBjb252ZGV0YWlsCi17Ci0gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gIC8vIEltcGxlbWVudGF0aW9ucyBvZiB0aGUgY29tcGlsZSB0aW1lIHByZWRpY2F0ZSAiVCBpcyBzdWJyYW5nZWQiCi0gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICAvLyBmb3IgaW50ZWdyYWwgdG8gaW50ZWdyYWwgY29udmVyc2lvbnMKLSAgICB0ZW1wbGF0ZTxjbGFzcyBULGNsYXNzIFM+Ci0gICAgc3RydWN0IHN1YnJhbmdlZF9TaWcyVW5zaWcKLSAgICB7Ci0gICAgICAvLyBTaWduZWQgdG8gdW5zaWduZWQgY29udmVyc2lvbnMgYXJlICdzdWJyYW5nZWQnIGJlY2F1c2Ugb2YgcG9zc2libGUgbG9vc2UKLSAgICAgIC8vIG9mIG5lZ2F0aXZlIHZhbHVlcy4KLSAgICAgIHR5cGVkZWYgbXBsOjp0cnVlXyB0eXBlIDsKLSAgICB9IDsKLQotICAgIC8vIGZvciB1bnNpZ25lZCBpbnRlZ3JhbCB0byBzaWduZWQgaW50ZWdyYWwgY29udmVyc2lvbnMKLSAgICB0ZW1wbGF0ZTxjbGFzcyBULGNsYXNzIFM+Ci0gICAgc3RydWN0IHN1YnJhbmdlZF9VbnNpZzJTaWcKLSAgICB7Ci0gICAgICAgLy8gSU1QT1JUQU5UIE5PVEU6Ci0gICAgICAgLy8KLSAgICAgICAvLyBUaGlzIGNvZGUgYXNzdW1lcyB0aGF0IHNpZ25lZC91bnNpZ25lZCBpbnRlZ3JhbCB2YWx1ZXMgYXJlIHJlcHJlc2VudGVkCi0gICAgICAgLy8gc3VjaCB0aGF0OgotICAgICAgIC8vCi0gICAgICAgLy8gIG51bWVyaWNfbGltaXRzPHNpZ25lZCBUPjo6ZGlnaXRzICsgMSA9PSBudW1lcmljX2xpbWl0czx1bnNpZ25lZCBUPjo6ZGlnaXRzCi0gICAgICAgLy8KLSAgICAgICAvLyBUaGUgJysxJyBpcyByZXF1aXJlZCBzaW5jZSBudW1lcmljX2xpbWl0czw+OjpkaWdpdHMgZ2l2ZXMgMSBiaXQgbGVzcyBmb3Igc2lnbmVkIGludGVncmFsIHR5cGVzLgotICAgICAgIC8vCi0gICAgICAgLy8gVGhpcyBmYWN0IGlzIHVzZWQgYnkgdGhlIGZvbGxvd2luZyBsb2dpYzoKLSAgICAgICAvLwotICAgICAgIC8vICBpZiAoIChudW1lcmljX2xpbWl0czxUPjo6ZGlnaXRzKzEpIDwgKDIqbnVtZXJpY19saW1pdHM8Uz46OmRpZ2l0cykgKQotICAgICAgIC8vICAgIHRoZW4gdGhlIGNvbnZlcnNpb24gaXMgc3VicmFuZ2VkLgotICAgICAgIC8vCi0KLSAgICAgICB0eXBlZGVmIG1wbDo6aW50XzwgOjpzdGQ6Om51bWVyaWNfbGltaXRzPFM+OjpkaWdpdHMgPiBTX2RpZ2l0cyA7Ci0gICAgICAgdHlwZWRlZiBtcGw6OmludF88IDo6c3RkOjpudW1lcmljX2xpbWl0czxUPjo6ZGlnaXRzID4gVF9kaWdpdHMgOwotCi0gICAgICAgLy8gVCBpcyBzaWduZWQsIHNvIHRha2UgZGlnaXRzKzEKLSAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFRfZGlnaXRzOjpuZXh0IHVfVF9kaWdpdHMgOwotCi0gICAgICAgdHlwZWRlZiBtcGw6OmludF88Mj4gVHdvIDsKLQotICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjptdWx0aXBsaWVzPFNfZGlnaXRzLFR3bz46OnR5cGUgU19kaWdpdHNfdGltZXNfMiA7Ci0KLSAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bGVzczx1X1RfZGlnaXRzLFNfZGlnaXRzX3RpbWVzXzI+Ojp0eXBlIHR5cGUgOwotICAgIH0gOwotCi0gICAgLy8gZm9yIGludGVncmFsIHRvIGludGVncmFsIGNvbnZlcnNpb25zIG9mIHRoZSBzYW1lIHNpZ24uCi0gICAgdGVtcGxhdGU8Y2xhc3MgVCxjbGFzcyBTPgotICAgIHN0cnVjdCBzdWJyYW5nZWRfU2FtZVNpZ24KLSAgICB7Ci0gICAgICAgLy8gQW4gaW50ZWdyYWwgY29udmVyc2lvbiBvZiB0aGUgc2FtZSBzaWduIGlzIHN1YnJhbmdlZCBpZiBkaWdpdHMoVCkgPCBkaWdpdHMoUykuCi0KLSAgICAgICB0eXBlZGVmIG1wbDo6aW50XzwgOjpzdGQ6Om51bWVyaWNfbGltaXRzPFM+OjpkaWdpdHMgPiBTX2RpZ2l0cyA7Ci0gICAgICAgdHlwZWRlZiBtcGw6OmludF88IDo6c3RkOjpudW1lcmljX2xpbWl0czxUPjo6ZGlnaXRzID4gVF9kaWdpdHMgOwotCi0gICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Omxlc3M8VF9kaWdpdHMsU19kaWdpdHM+Ojp0eXBlIHR5cGUgOwotICAgIH0gOwotCi0gICAgLy8gZm9yIGludGVncmFsIHRvIGZsb2F0IGNvbnZlcnNpb25zCi0gICAgdGVtcGxhdGU8Y2xhc3MgVCxjbGFzcyBTPgotICAgIHN0cnVjdCBzdWJyYW5nZWRfSW50MkZsb2F0Ci0gICAgewotICAgICAgdHlwZWRlZiBtcGw6OmZhbHNlXyB0eXBlIDsKLSAgICB9IDsKLQotICAgIC8vIGZvciBmbG9hdCB0byBpbnRlZ3JhbCBjb252ZXJzaW9ucwotICAgIHRlbXBsYXRlPGNsYXNzIFQsY2xhc3MgUz4KLSAgICBzdHJ1Y3Qgc3VicmFuZ2VkX0Zsb2F0MkludAotICAgIHsKLSAgICAgIHR5cGVkZWYgbXBsOjp0cnVlXyB0eXBlIDsKLSAgICB9IDsKLQotICAgIC8vIGZvciBmbG9hdCB0byBmbG9hdCBjb252ZXJzaW9ucwotICAgIHRlbXBsYXRlPGNsYXNzIFQsY2xhc3MgUz4KLSAgICBzdHJ1Y3Qgc3VicmFuZ2VkX0Zsb2F0MkZsb2F0Ci0gICAgewotICAgICAgLy8gSWYgYm90aCBUIGFuZCBTIGFyZSBmbG9hdHMsCi0gICAgICAvLyBjb21wYXJlIGV4cG9uZW50IGJpdHMgYW5kIGlmIHRoZXkgbWF0Y2gsIG1hbnRpc2EgYml0cy4KLQotICAgICAgdHlwZWRlZiBtcGw6OmludF88IDo6c3RkOjpudW1lcmljX2xpbWl0czxTPjo6ZGlnaXRzID4gU19tYW50aXNhIDsKLSAgICAgIHR5cGVkZWYgbXBsOjppbnRfPCA6OnN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmRpZ2l0cyA+IFRfbWFudGlzYSA7Ci0KLSAgICAgIHR5cGVkZWYgbXBsOjppbnRfPCA6OnN0ZDo6bnVtZXJpY19saW1pdHM8Uz46Om1heF9leHBvbmVudCA+IFNfZXhwb25lbnQgOwotICAgICAgdHlwZWRlZiBtcGw6OmludF88IDo6c3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWF4X2V4cG9uZW50ID4gVF9leHBvbmVudCA7Ci0KLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpsZXNzPFRfZXhwb25lbnQsU19leHBvbmVudD46OnR5cGUgVF9zbWFsbGVyX2V4cG9uZW50IDsKLQotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmVxdWFsX3RvPFRfZXhwb25lbnQsU19leHBvbmVudD46OnR5cGUgZXF1YWxfZXhwb25lbnRzIDsKLQotICAgICAgdHlwZWRlZiBtcGw6Omxlc3M8VF9tYW50aXNhLFNfbWFudGlzYT4gVF9zbWFsbGVyX21hbnRpc2EgOwotCi0gICAgICB0eXBlZGVmIG1wbDo6ZXZhbF9pZjxlcXVhbF9leHBvbmVudHMsVF9zbWFsbGVyX21hbnRpc2EsbXBsOjpmYWxzZV8+IG5vdF9iaWdnZXJfZXhwb25lbnRfY2FzZSA7Ci0KLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgICAgbXBsOjpldmFsX2lmPFRfc21hbGxlcl9leHBvbmVudCxtcGw6OnRydWVfLG5vdF9iaWdnZXJfZXhwb25lbnRfY2FzZT46OnR5cGUKLSAgICAgICAgICB0eXBlIDsKLSAgICB9IDsKLQotICAgIC8vIGZvciBVZHQgdG8gYnVpbHQtaW4gY29udmVyc2lvbnMKLSAgICB0ZW1wbGF0ZTxjbGFzcyBULGNsYXNzIFM+Ci0gICAgc3RydWN0IHN1YnJhbmdlZF9VZHQyQnVpbHRJbgotICAgIHsKLSAgICAgIHR5cGVkZWYgbXBsOjp0cnVlXyB0eXBlIDsKLSAgICB9IDsKLQotICAgIC8vIGZvciBidWlsdC1pbiB0byBVZHQgY29udmVyc2lvbnMKLSAgICB0ZW1wbGF0ZTxjbGFzcyBULGNsYXNzIFM+Ci0gICAgc3RydWN0IHN1YnJhbmdlZF9CdWlsdEluMlVkdAotICAgIHsKLSAgICAgIHR5cGVkZWYgbXBsOjpmYWxzZV8gdHlwZSA7Ci0gICAgfSA7Ci0KLSAgICAvLyBmb3IgVWR0IHRvIFVkdCBjb252ZXJzaW9ucwotICAgIHRlbXBsYXRlPGNsYXNzIFQsY2xhc3MgUz4KLSAgICBzdHJ1Y3Qgc3VicmFuZ2VkX1VkdDJVZHQKLSAgICB7Ci0gICAgICB0eXBlZGVmIG1wbDo6ZmFsc2VfIHR5cGUgOwotICAgIH0gOwotCi0gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAvLyBTZWxlY3RvcnMgZm9yIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIHN1YnJhbmdlZCBwcmVkaWNhdGUKLSAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBULGNsYXNzIFM+Ci0gICAgc3RydWN0IGdldF9zdWJyYW5nZWRfSW50MkludAotICAgIHsKLSAgICAgIHR5cGVkZWYgc3VicmFuZ2VkX1NhbWVTaWduPFQsUz4gIFNpZzJTaWcgICAgIDsKLSAgICAgIHR5cGVkZWYgc3VicmFuZ2VkX1NpZzJVbnNpZzxULFM+IFNpZzJVbnNpZyAgIDsKLSAgICAgIHR5cGVkZWYgc3VicmFuZ2VkX1Vuc2lnMlNpZzxULFM+IFVuc2lnMlNpZyAgIDsKLSAgICAgIHR5cGVkZWYgU2lnMlNpZyAgICAgICAgICAgICAgICAgIFVuc2lnMlVuc2lnIDsKLQotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBnZXRfc2lnbl9taXh0dXJlPFQsUz46OnR5cGUgc2lnbl9taXh0dXJlIDsKLQotICAgICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgICBmb3Jfc2lnbl9taXh0dXJlPHNpZ25fbWl4dHVyZSwgU2lnMlNpZywgU2lnMlVuc2lnLCBVbnNpZzJTaWcsIFVuc2lnMlVuc2lnPjo6dHlwZQotICAgICAgICAgICB0eXBlIDsKLSAgICB9IDsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFQsY2xhc3MgUz4KLSAgICBzdHJ1Y3QgZ2V0X3N1YnJhbmdlZF9CdWlsdEluMkJ1aWx0SW4KLSAgICB7Ci0gICAgICB0eXBlZGVmIGdldF9zdWJyYW5nZWRfSW50MkludDxULFM+IEludDJJbnRRIDsKLQotICAgICAgdHlwZWRlZiBzdWJyYW5nZWRfSW50MkZsb2F0ICA8VCxTPiBJbnQyRmxvYXQgICA7Ci0gICAgICB0eXBlZGVmIHN1YnJhbmdlZF9GbG9hdDJJbnQgIDxULFM+IEZsb2F0MkludCAgIDsKLSAgICAgIHR5cGVkZWYgc3VicmFuZ2VkX0Zsb2F0MkZsb2F0PFQsUz4gRmxvYXQyRmxvYXQgOwotCi0gICAgICB0eXBlZGVmIG1wbDo6aWRlbnRpdHk8SW50MkZsb2F0ICA+IEludDJGbG9hdFEgICA7Ci0gICAgICB0eXBlZGVmIG1wbDo6aWRlbnRpdHk8RmxvYXQySW50ICA+IEZsb2F0MkludFEgICA7Ci0gICAgICB0eXBlZGVmIG1wbDo6aWRlbnRpdHk8RmxvYXQyRmxvYXQ+IEZsb2F0MkZsb2F0USA7Ci0KLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZ2V0X2ludF9mbG9hdF9taXh0dXJlPFQsUz46OnR5cGUgaW50X2Zsb2F0X21peHR1cmUgOwotCi0gICAgICB0eXBlZGVmIGZvcl9pbnRfZmxvYXRfbWl4dHVyZTxpbnRfZmxvYXRfbWl4dHVyZSwgSW50MkludFEsIEludDJGbG9hdFEsIEZsb2F0MkludFEsIEZsb2F0MkZsb2F0UT4gZm9yXyA7Ci0KLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZm9yXzo6dHlwZSBzZWxlY3RlZCA7Ci0KLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2VsZWN0ZWQ6OnR5cGUgdHlwZSA7Ci0gICAgfSA7Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBULGNsYXNzIFM+Ci0gICAgc3RydWN0IGdldF9zdWJyYW5nZWQKLSAgICB7Ci0gICAgICB0eXBlZGVmIGdldF9zdWJyYW5nZWRfQnVpbHRJbjJCdWlsdEluPFQsUz4gQnVpbHRJbjJCdWlsdEluUSA7Ci0KLSAgICAgIHR5cGVkZWYgc3VicmFuZ2VkX0J1aWx0SW4yVWR0PFQsUz4gQnVpbHRJbjJVZHQgOwotICAgICAgdHlwZWRlZiBzdWJyYW5nZWRfVWR0MkJ1aWx0SW48VCxTPiBVZHQyQnVpbHRJbiA7Ci0gICAgICB0eXBlZGVmIHN1YnJhbmdlZF9VZHQyVWR0PFQsUz4gICAgIFVkdDJVZHQgOwotCi0gICAgICB0eXBlZGVmIG1wbDo6aWRlbnRpdHk8QnVpbHRJbjJVZHQ+IEJ1aWx0SW4yVWR0USA7Ci0gICAgICB0eXBlZGVmIG1wbDo6aWRlbnRpdHk8VWR0MkJ1aWx0SW4+IFVkdDJCdWlsdEluUSA7Ci0gICAgICB0eXBlZGVmIG1wbDo6aWRlbnRpdHk8VWR0MlVkdCAgICA+IFVkdDJVZHRRICAgICA7Ci0KLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZ2V0X3VkdF9idWlsdGluX21peHR1cmU8VCxTPjo6dHlwZSB1ZHRfYnVpbHRpbl9taXh0dXJlIDsKLSAgICAgIAotICAgICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgICBmb3JfdWR0X2J1aWx0aW5fbWl4dHVyZTx1ZHRfYnVpbHRpbl9taXh0dXJlLCBCdWlsdEluMkJ1aWx0SW5RLCBCdWlsdEluMlVkdFEsIFVkdDJCdWlsdEluUSwgVWR0MlVkdFE+Ojp0eXBlCi0gICAgICAgICAgc2VsZWN0ZWQgOwotCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIHNlbGVjdGVkOjp0eXBlIHNlbGVjdGVkMiA7Ci0gCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIHNlbGVjdGVkMjo6dHlwZSB0eXBlIDsKLSAgICB9IDsKLQotCi0gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAvLyBUb3AgbGV2ZWwgaW1wbGVtZW50YXRpb24gc2VsZWN0b3IuCi0gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBTPgotICBzdHJ1Y3QgZ2V0X2lzX3N1YnJhbmdlZAotICB7Ci0gICAgdHlwZWRlZiBnZXRfc3VicmFuZ2VkPFQsUz4gICAgICAgICBub25fdHJpdmlhbF9jYXNlIDsKLSAgICB0eXBlZGVmIG1wbDo6aWRlbnRpdHk8bXBsOjpmYWxzZV8+IHRyaXZpYWxfY2FzZSA7Ci0KLSAgICB0eXBlZGVmIGlzX3NhbWU8VCxTPiBpc190cml2aWFsIDsKLSAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl88aXNfdHJpdmlhbCx0cml2aWFsX2Nhc2Usbm9uX3RyaXZpYWxfY2FzZT46OnR5cGUgc2VsZWN0ZWQgOwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2VsZWN0ZWQ6OnR5cGUgdHlwZSA7Ci0gIH0gOwotCi19IH0gfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3Q6Om51bWVyaWM6OmNvbnZkZXRhaWwKLQotI2VuZGlmCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL21ldGEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL21ldGEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODdiYmI4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9tZXRhLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMCArMCwwIEBACi0vLyAgKGMpIENvcHlyaWdodCBGZXJuYW5kbyBMdWlzIENhY2Npb2xhIENhcmJhbGxhbCAyMDAwLTIwMDQKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGxpYnJhcnkgaG9tZSBwYWdlIGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbnVtZXJpYy9jb252ZXJzaW9uCi0vLwotLy8gQ29udGFjdCB0aGUgYXV0aG9yIGF0OiBmZXJuYW5kb19jYWNjaW9sYUBob3RtYWlsLmNvbQotLy8gCi0jaWZuZGVmIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9ERVRBSUxfTUVUQV9GTENfMTJOT1YyMDAyX0hQUAotI2RlZmluZSBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fREVUQUlMX01FVEFfRkxDXzEyTk9WMjAwMl9IUFAKLQotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHAiCi0KLSNpbmNsdWRlICJuZG5ib29zdC9tcGwvaWYuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L21wbC9ldmFsX2lmLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9tcGwvZXF1YWxfdG8uaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L21wbC9ub3QuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L21wbC9hbmQuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L21wbC9ib29sLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9tcGwvaWRlbnRpdHkuaHBwIgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbnVtZXJpYyB7IG5hbWVzcGFjZSBjb252ZGV0YWlsCi17Ci0gICB0ZW1wbGF0ZTwgY2xhc3MgVDEsIGNsYXNzIFQyPgotICAgc3RydWN0IGVxdWFsX3RvCi0gICB7Ci0gICAjaWYgIWRlZmluZWQoX19CT1JMQU5EQ19fKQotICAgCi0gICAgICAgZW51bSB7IHggPSAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChUMSk6OnZhbHVlID09IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChUMik6OnZhbHVlICkgfTsKLSAgICAgICAgICAgCi0gICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0geCk7Ci0gICAgICAgICAgIAotICAgICAgIHR5cGVkZWYgbXBsOjpib29sXzx2YWx1ZT4gdHlwZTsKLSAgICAgICAKLSAgICNlbHNlCi0gICAKLSAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoCi0gICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKFQxKTo6dmFsdWUgCi0gICAgICAgICAgICAgICA9PSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoVDIpOjp2YWx1ZQotICAgICAgICAgICApKTsKLSAgICAgICAgICAgCi0gICAgICAgdHlwZWRlZiBtcGw6OmJvb2xfPCgKLSAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoVDEpOjp2YWx1ZSAKLSAgICAgICAgICAgICAgID09IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChUMik6OnZhbHVlCi0gICAgICAgICAgICk+IHR5cGU7Ci0gICAjZW5kaWYKLSAgIH07Ci0gICAgCi0vLyBNZXRhZnVuY3Rpb246Ci0gIC8vCi0gIC8vICAgY3Rfc3dpdGNoNDxWYWx1ZSxDYXNlMFZhbCxDYXNlMVZhbCxDYXNlMlZhbCxDYXNlMFR5cGUsQ2FzZTFUeXBlLENhc2UyVHlwZSxEZWZhdWx0VHlwZT46OnR5cGUKLSAgLy8KLSAgLy8ge1ZhbHVlLENhc2UoWClWYWx9IGFyZSBJbnRlZ3JhbCBDb25zdGFudHMgKHN1Y2ggYXM6IG1wbDo6aW50Xzw+KQotICAvLyB7Q2FzZShYKVR5cGUsRGVmYXVsdFR5cGV9IGFyZSBhcmJpdHJhcnkgdHlwZXMuIChub3QgbWV0YWZ1bmN0aW9ucykKLSAgLy8KLSAgLy8gUmV0dXJucyBDYXNlKFgpVHlwZSBpZiBWYWw9PUNhc2UoWClWYWw7IERlZmF1bHRUeXBlIG90aGVyd2lzZS4KLSAgLy8KLSAgdGVtcGxhdGU8Y2xhc3MgVmFsdWUsCi0gICAgICAgICAgIGNsYXNzIENhc2UwVmFsLAotICAgICAgICAgICBjbGFzcyBDYXNlMVZhbCwKLSAgICAgICAgICAgY2xhc3MgQ2FzZTJWYWwsCi0gICAgICAgICAgIGNsYXNzIENhc2UwVHlwZSwKLSAgICAgICAgICAgY2xhc3MgQ2FzZTFUeXBlLAotICAgICAgICAgICBjbGFzcyBDYXNlMlR5cGUsCi0gICAgICAgICAgIGNsYXNzIERlZmF1bHRUeXBlCi0gICAgICAgICAgPgotICBzdHJ1Y3QgY3Rfc3dpdGNoNAotICB7Ci0gICAgdHlwZWRlZiBtcGw6OmlkZW50aXR5PENhc2UwVHlwZT4gQ2FzZTBUeXBlUSA7Ci0gICAgdHlwZWRlZiBtcGw6OmlkZW50aXR5PENhc2UxVHlwZT4gQ2FzZTFUeXBlUSA7Ci0KLSAgICB0eXBlZGVmIGVxdWFsX3RvPFZhbHVlLENhc2UwVmFsPiBpc19jYXNlMCA7Ci0gICAgdHlwZWRlZiBlcXVhbF90bzxWYWx1ZSxDYXNlMVZhbD4gaXNfY2FzZTEgOwotICAgIHR5cGVkZWYgZXF1YWxfdG88VmFsdWUsQ2FzZTJWYWw+IGlzX2Nhc2UyIDsKLQotICAgIHR5cGVkZWYgbXBsOjppZl88aXNfY2FzZTIsQ2FzZTJUeXBlLERlZmF1bHRUeXBlPiBjaG9vc2VfMl8zUSA7Ci0gICAgdHlwZWRlZiBtcGw6OmV2YWxfaWY8aXNfY2FzZTEsQ2FzZTFUeXBlUSxjaG9vc2VfMl8zUT4gY2hvb3NlXzFfMl8zUSA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICBtcGw6OmV2YWxfaWY8aXNfY2FzZTAsQ2FzZTBUeXBlUSxjaG9vc2VfMV8yXzNRPjo6dHlwZQotICAgICAgICB0eXBlIDsKLSAgfSA7Ci0KLQotCi0KLSAgLy8gTWV0YWZ1bmN0aW9uOgotICAvLwotICAvLyAgIGZvcl9ib3RoPGV4cHIwLGV4cHIxLFRULFRGLEZULEZGPjo6dHlwZQotICAvLwotICAvLyB7ZXhwMCxleHByMX0gYXJlIEJvb2xlYW4gSW50ZWdyYWwgQ29uc3RhbnRzCi0gIC8vIHtUVCxURixGVCxGRn0gYXJlIGFyaWJ0cmFyeSB0eXBlcy4gKG5vdCBtZXRhZnVuY3Rpb25zKQotICAvLwotICAvLyBBY2NvcmRpbmcgdG8gdGhlIGNvbWJpbmVkIGJvb2xlYW4gdmFsdWUgb2YgJ2V4cHIwICYmIGV4cHIxJywgc2VsZWN0cyB0aGUgY29ycmVzcG9uZGluZyB0eXBlLgotICAvLwotICB0ZW1wbGF0ZTxjbGFzcyBleHByMCwgY2xhc3MgZXhwcjEsIGNsYXNzIFRULCBjbGFzcyBURiwgY2xhc3MgRlQsIGNsYXNzIEZGPgotICBzdHJ1Y3QgZm9yX2JvdGgKLSAgewotICAgIHR5cGVkZWYgbXBsOjppZGVudGl0eTxURj4gVEZfUSA7Ci0gICAgdHlwZWRlZiBtcGw6OmlkZW50aXR5PFRUPiBUVF9RIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpub3RfPGV4cHIwPjo6dHlwZSBub3RfZXhwcjAgOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpub3RfPGV4cHIxPjo6dHlwZSBub3RfZXhwcjEgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmFuZF88ZXhwcjAsZXhwcjE+Ojp0eXBlICAgICBjYXNlVFQgOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjphbmRfPGV4cHIwLG5vdF9leHByMT46OnR5cGUgY2FzZVRGIDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6YW5kXzxub3RfZXhwcjAsZXhwcjE+Ojp0eXBlIGNhc2VGVCA7Ci0KLSAgICB0eXBlZGVmIG1wbDo6aWZfPGNhc2VGVCxGVCxGRj4gICAgICAgICAgICAgICAgICAgIGNob29zZV9GVF9GRl9RIDsKLSAgICB0eXBlZGVmIG1wbDo6ZXZhbF9pZjxjYXNlVEYsVEZfUSxjaG9vc2VfRlRfRkZfUT4gY2hvb3NlX1RGX0ZUX0ZGX1EgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmV2YWxfaWY8Y2FzZVRULFRUX1EsY2hvb3NlX1RGX0ZUX0ZGX1E+Ojp0eXBlIHR5cGUgOwotICB9IDsKLQotfSB9IH0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0OjpudW1lcmljOjpjb252ZGV0YWlsCi0KLSNlbmRpZgotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9udW1lcmljX2Nhc3RfdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9udW1lcmljX2Nhc3RfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTZiZDk2MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvbnVtZXJpY19jYXN0X3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzggKzAsMCBAQAotLy8KLS8vISBDb3B5cmlnaHQgKGMpIDIwMTEtMjAxMgotLy8hIEJyYW5kb24gS29obgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fRE9OVF9VU0VfUFJFUFJPQ0VTU0VEX0ZJTEVTKQotCi0gICAgI2luY2x1ZGUgPG5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvcHJlcHJvY2Vzc2VkL251bWVyaWNfY2FzdF90cmFpdHNfY29tbW9uLmhwcD4KLQkKLQkjaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fTE9OR19MT05HKQotICAgICAgICAjaW5jbHVkZSA8bmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9wcmVwcm9jZXNzZWQvbnVtZXJpY19jYXN0X3RyYWl0c19sb25nX2xvbmcuaHBwPgotCSNlbmRpZgotCQotI2Vsc2UKLSNpZiAhTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCi0KLSAgICAjaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9lbGVtLmhwcD4KLSAgICAjaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9zaXplLmhwcD4KLSAgICAjaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9pdGVyYXRlLmhwcD4KLSAgICAKLSAgICAjaWYgZGVmaW5lZChfX1dBVkVfXykgJiYgZGVmaW5lZChORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQ1JFQVRFX1BSRVBST0NFU1NFRF9GSUxFUykKLSAgICAgICAgI3ByYWdtYSB3YXZlIG9wdGlvbihwcmVzZXJ2ZTogMiwgbGluZTogMCwgb3V0cHV0OiAicHJlcHJvY2Vzc2VkL251bWVyaWNfY2FzdF90cmFpdHNfY29tbW9uLmhwcCIpCi0gICAgI2VuZGlmCi0vLwotLy8hIENvcHlyaWdodCAoYykgMjAxMS0yMDEyCi0vLyEgQnJhbmRvbiBLb2huCi0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLSAgICAjaWYgZGVmaW5lZChfX1dBVkVfXykgJiYgZGVmaW5lZChORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQ1JFQVRFX1BSRVBST0NFU1NFRF9GSUxFUykKLSAgICAgICAgI3ByYWdtYSB3YXZlIG9wdGlvbihwcmVzZXJ2ZTogMSkKLSAgICAjZW5kaWYKLQkKLQkvLyEgVGhlc2UgYXJlIHRoZSBhc3N1bWVkIGNvbW1vbiBidWlsdCBpbiBmdW5kYW1lbnRhbCB0eXBlcyAobm90IHR5cGVkZWZzL21hY3Jvcy4pCi0JI2RlZmluZSBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQkFTRV9CVUlMVElOX1RZUEVTKCkgXAotICAgICAgICAoY2hhcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgKHNpZ25lZCBjaGFyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICh1bnNpZ25lZCBjaGFyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAoc2hvcnQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgKHVuc2lnbmVkIHNob3J0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIChpbnQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAodW5zaWduZWQgaW50KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgKGxvbmcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICh1bnNpZ25lZCBsb25nKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAoZmxvYXQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgKGRvdWJsZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIChsb25nIGRvdWJsZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIC8qKiovCi0JCi0gICAgI2RlZmluZSBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fU0VRX0EoKSBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQkFTRV9CVUlMVElOX1RZUEVTKCkKLQkjZGVmaW5lIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9TRVFfQigpIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9CQVNFX0JVSUxUSU5fVFlQRVMoKQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbnVtZXJpYyB7Ci0KLSAgICAjZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSAoMywgKDAsIE5ETkJPT1NUX1BQX0RFQyhORE5CT09TVF9QUF9TRVFfU0laRShORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fU0VRX0EoKSkpLCA8bmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9udW1lcmljX2Nhc3RfdHJhaXRzLmhwcD4pKQotICAgICNpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKSAgICAKLQotfX0vL25hbWVzcGFjZSBuZG5ib29zdDo6bnVtZXJpYzsKLQotICAgICNpZiBkZWZpbmVkKF9fV0FWRV9fKSAmJiBkZWZpbmVkKE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9DUkVBVEVfUFJFUFJPQ0VTU0VEX0ZJTEVTKQotICAgICAgICAjcHJhZ21hIHdhdmUgb3B0aW9uKG91dHB1dDogbnVsbCkKLSAgICAjZW5kaWYgICAKLQkKLQkjaWYgKCBkZWZpbmVkKF9fV0FWRV9fKSAmJiBkZWZpbmVkKE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9DUkVBVEVfUFJFUFJPQ0VTU0VEX0ZJTEVTKSApIHx8ICFkZWZpbmVkKE5ETkJPT1NUX05PX0xPTkdfTE9ORykKLQkKLQkgICAgI3VuZGVmIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9TRVFfQQotCSAgICAjdW5kZWYgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX1NFUV9CCi0KLQkgICAgI2lmIGRlZmluZWQoX19XQVZFX18pICYmIGRlZmluZWQoTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0NSRUFURV9QUkVQUk9DRVNTRURfRklMRVMpCi0gICAgICAgICAgICAjcHJhZ21hIHdhdmUgb3B0aW9uKHByZXNlcnZlOiAyLCBsaW5lOiAwLCBvdXRwdXQ6ICJwcmVwcm9jZXNzZWQvbnVtZXJpY19jYXN0X3RyYWl0c19sb25nX2xvbmcuaHBwIikKLSAgICAgICAgI2VuZGlmCi0KLS8vCi0vLyEgQ29weXJpZ2h0IChjKSAyMDExLTIwMTIKLS8vISBCcmFuZG9uIEtvaG4KLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotICAgICAgICAjaWYgZGVmaW5lZChfX1dBVkVfXykgJiYgZGVmaW5lZChORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQ1JFQVRFX1BSRVBST0NFU1NFRF9GSUxFUykKLSAgICAgICAgICAgICNwcmFnbWEgd2F2ZSBvcHRpb24ocHJlc2VydmU6IDEpCi0gICAgICAgICNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbnVtZXJpYyB7Ci0KLSAgICAjZGVmaW5lIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9TRVFfQSgpIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9CQVNFX0JVSUxUSU5fVFlQRVMoKShuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUpKG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUpCi0JI2RlZmluZSBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fU0VRX0IoKSAobmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlKShuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlKQotICAgIAotICAgICNkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xICgzLCAoMCwgTkROQk9PU1RfUFBfREVDKE5ETkJPT1NUX1BQX1NFUV9TSVpFKE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9TRVFfQSgpKSksIDxuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL251bWVyaWNfY2FzdF90cmFpdHMuaHBwPikpCi0gICAgI2luY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpICAgIAotCi19fS8vbmFtZXNwYWNlIG5kbmJvb3N0OjpudW1lcmljOwotCi0gICAgICAgICNpZiBkZWZpbmVkKF9fV0FWRV9fKSAmJiBkZWZpbmVkKE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9DUkVBVEVfUFJFUFJPQ0VTU0VEX0ZJTEVTKQotICAgICAgICAgICAgI3ByYWdtYSB3YXZlIG9wdGlvbihvdXRwdXQ6IG51bGwpCi0gICAgICAgICNlbmRpZiAgIAotCQotCSNlbmRpZgotCQkKLSAgICAjdW5kZWYgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0JBU0VfQlVJTFRJTl9UWVBFUwotCSN1bmRlZiBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fU0VRX0EKLQkjdW5kZWYgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX1NFUV9CCi0gICAgCi0jZWxpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKSA9PSAxCi0KLSAgICAjZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMiAoMywgKDAsIE5ETkJPT1NUX1BQX0RFQyhORE5CT09TVF9QUF9TRVFfU0laRShORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fU0VRX0IoKSkpLCA8bmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9udW1lcmljX2Nhc3RfdHJhaXRzLmhwcD4pKQotICAgICNpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi0jZWxpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKSA9PSAyCi0KLSAgICAvLyEgR2VuZXJhdGUgZGVmYXVsdCB0cmFpdHMgZm9yIHRoZSBzcGVjaWZpZWQgc291cmNlIGFuZCB0YXJnZXQuCi0gICAgI2RlZmluZSBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQSBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkKLSAgICAjZGVmaW5lIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9CIE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigyKQotCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBORE5CT09TVF9QUF9TRVFfRUxFTShORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQSwgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX1NFUV9BKCkpCi0gICAgICAgICAgLCBORE5CT09TVF9QUF9TRVFfRUxFTShORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQiwgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX1NFUV9CKCkpCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxORE5CT09TVF9QUF9TRVFfRUxFTShORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQiwgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX1NFUV9CKCkpPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgICAgIAotCi0gICAgI3VuZGVmIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9BCi0gICAgI3VuZGVmIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9CCi0KLSNlbmRpZi8vISBEZXB0aCAyLgotI2VuZGlmLy8gTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0RPTlRfVVNFX1BSRVBST0NFU1NFRF9GSUxFUwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL29sZF9udW1lcmljX2Nhc3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL29sZF9udW1lcmljX2Nhc3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZmM0Y2FiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9vbGRfbnVtZXJpY19jYXN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzOSArMCwwIEBACi0vLyAgYm9vc3QgY2FzdC5ocHAgaGVhZGVyIGZpbGUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgKEMpIENvcHlyaWdodCBLZXZsaW4gSGVubmV5IGFuZCBEYXZlIEFicmFoYW1zIDE5OTkuCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0Ci0vLyAgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9jb252ZXJzaW9uIGZvciBEb2N1bWVudGF0aW9uLgotCi0vLyAgUmV2aXNpb24gSGlzdG9yeQotLy8gIDIzIEpVTiAwNSAgQ29kZSBleHRyYWN0ZWQgZnJvbSAvYm9vc3QvY2FzdC5ocHAgaW50byB0aGlzIG5ldyBoZWFkZXIuCi0vLyAgICAgICAgICAgICBLZWVwcyB0aGlzIGxlZ2FjeSB2ZXJzaW9uIG9mIG51bWVyaWNfY2FzdDw+IGZvciBvbGQgY29tcGlsZXJzCi0vLyAgICAgICAgICAgICB3aWNoIGNhbid0IGNvbXBpbGUgdGhlIG5ldyB2ZXJzaW9uIGluIC9ib29zdC9udW1lcmljL2NvbnZlcnNpb24vY2FzdC5ocHAKLS8vICAgICAgICAgICAgIChGZXJuYW5kbyBDYWNjaW9sYSkKLS8vICAwMiBBcHIgMDEgIFJlbW92ZWQgTkROQk9PU1RfTk9fTElNSVRTIHdvcmthcm91bmRzIGFuZCBpbmNsdWRlZAotLy8gICAgICAgICAgICAgPG5kbmJvb3N0L2xpbWl0cy5ocHA+IGluc3RlYWQgKHRoZSB3b3JrYXJvdW5kIGRpZCBub3QKLS8vICAgICAgICAgICAgIGFjdHVhbGx5IGNvbXBpbGUgd2hlbiBORE5CT09TVF9OT19MSU1JVFMgd2FzIGRlZmluZWQgaW4KLS8vICAgICAgICAgICAgIGFueSBjYXNlLCBzbyB3ZSBsb29zZSBub3RoaW5nKS4gKEpvaG4gTWFkZG9jaykKLS8vICAyMSBKYW4gMDEgIFVuZGlkIGEgYnVnIEkgaW50cm9kdWNlZCB5ZXN0ZXJkYXkuIG51bWVyaWNfY2FzdDw+IG5ldmVyCi0vLyAgICAgICAgICAgICB3b3JrZWQgd2l0aCBzdG9jayBHQ0M7IHRyeWluZyB0byBnZXQgaXQgdG8gZG8gdGhhdCBicm9rZQotLy8gICAgICAgICAgICAgdmMtc3RscG9ydC4KLS8vICAyMCBKYW4gMDEgIE1vdmVkIE5ETkJPT1NUX05PX0xJTUlUU19DT01QSUxFX1RJTUVfQ09OU1RBTlRTIHRvIGNvbmZpZy5ocHAuCi0vLyAgICAgICAgICAgICBSZW1vdmVkIHVudXNlZCBORE5CT09TVF9FWFBMSUNJVF9UQVJHRVQgbWFjcm8uIE1vdmVkCi0vLyAgICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjp0eXBlIHRvIG5kbmJvb3N0L3R5cGUuaHBwLiBNYWRlIGl0IGNvbXBpbGUgd2l0aAotLy8gICAgICAgICAgICAgc3RvY2sgZ2NjIGFnYWluIChEYXZlIEFicmFoYW1zKQotLy8gIDI5IE5vdiAwMCAgUmVtb3ZlIG5lc3RlZCBuYW1lc3BhY2UgY2FzdCwgY2xlYW51cCBzcGFjaW5nIGJlZm9yZSBGb3JtYWwKLS8vICAgICAgICAgICAgIFJldmlldyAoQmVtYW4gRGF3ZXMpCi0vLyAgMTkgT2N0IDAwICBGaXggbnVtZXJpY19jYXN0IGZvciBmbG9hdGluZy1wb2ludCB0eXBlcyAoRGF2ZSBBYnJhaGFtcykKLS8vICAxNSBKdWwgMDAgIFN1cHByZXNzIG51bWVyaWNfY2FzdCB3YXJuaW5ncyBmb3IgR0NDLCBCb3JsYW5kIGFuZCBNU1ZDCi0vLyAgICAgICAgICAgICAoRGF2ZSBBYnJhaGFtcykKLS8vICAzMCBKdW4gMDAgIE1vcmUgTVNWQzYgd29yZGFyb3VuZHMuICBTZWUgY29tbWVudHMgYmVsb3cuICAoRGF2ZSBBYnJhaGFtcykKLS8vICAyOCBKdW4gMDAgIFJlbW92ZWQgaW1wbGljaXRfY2FzdDw+LiAgU2VlIGNvbW1lbnQgYmVsb3cuIChCZW1hbiBEYXdlcykKLS8vICAyNyBKdW4gMDAgIE1vcmUgTVNWQzYgd29ya2Fyb3VuZHMKLS8vICAxNSBKdW4gMDAgIEFkZCB3b3JrYXJvdW5kcyBmb3IgTVNWQzYKLS8vICAgMiBGZWIgMDAgIFJlbW92ZSBiYWRfbnVtZXJpY19jYXN0ICI7IiBzeW50YXggZXJyb3IgKERvbmNobyBBbmdlbG92KQotLy8gIDI2IEphbiAwMCAgQWRkIG1pc3NpbmcgdGhyb3coKSB0byBiYWRfbnVtZXJpY19jYXN0Ojp3aGF0KDAgKEFkYW0gTGV2YXIpCi0vLyAgMjkgRGVjIDk5ICBDaGFuZ2UgdXNpbmcgZGVjbGFyYXRpb25zIHNvIHVzYWdlcyBpbiBvdGhlciBuYW1lc3BhY2VzIHdvcmsKLS8vICAgICAgICAgICAgIGNvcnJlY3RseSAoRGF2ZSBBYnJhaGFtcykKLS8vICAyMyBTZXAgOTkgIENoYW5nZSBwb2x5bW9ycGhpY19kb3duY2FzdCBhc3NlcnQgdG8gYWxzbyBkZXRlY3QgTS5JLiBlcnJvcnMKLS8vICAgICAgICAgICAgIGFzIHN1Z2dlc3RlZCBEYXJpbiBBZGxlciBhbmQgaW1wcm92ZWQgYnkgVmFsZW50aW4gQm9ubmFyZC4KLS8vICAgMiBTZXAgOTkgIFJlbW92ZSBjb250cm92ZXJzaWFsIGFzc2VydHMsIHNpbXBsaWZ5LCByZW5hbWUuCi0vLyAgMzAgQXVnIDk5ICBNb3ZlIHRvIGNhc3QuaHBwLCByZXBsYWNlIHZhbHVlX2Nhc3Qgd2l0aCBudW1lcmljX2Nhc3QsCi0vLyAgICAgICAgICAgICBwbGFjZSBpbiBuZXN0ZWQgbmFtZXNwYWNlLgotLy8gICAzIEF1ZyA5OSAgSW5pdGlhbCB2ZXJzaW9uCi0KLSNpZm5kZWYgTkROQk9PU1RfT0xEX05VTUVSSUNfQ0FTVF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfT0xEX05VTUVSSUNfQ0FTVF9IUFAKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxjYXNzZXJ0PgotIyBpbmNsdWRlIDx0eXBlaW5mbz4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L2xpbWl0cy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9jb252ZXJ0ZXJfcG9saWNpZXMuaHBwPgotCi0vLyAgSXQgaGFzIGJlZW4gZGVtb25zdHJhdGVkIG51bWVyb3VzIHRpbWVzIHRoYXQgTVNWQyA2LjAgZmFpbHMgc2lsZW50bHkgYXQgbGluawotLy8gIHRpbWUgaWYgeW91IHVzZSBhIHRlbXBsYXRlIGZ1bmN0aW9uIHdoaWNoIGhhcyB0ZW1wbGF0ZSBwYXJhbWV0ZXJzIHRoYXQgZG9uJ3QKLS8vICBhcHBlYXIgaW4gdGhlIGZ1bmN0aW9uJ3MgYXJndW1lbnQgbGlzdC4KLS8vCi0vLyAgVE9ETzogQWRkIHRoaXMgdG8gY29uZmlnLmhwcD8KLS8vICBGTEM6IFRoaXMgbWFjcm8gaXMgcmVwZWF0ZWQgaW4gbmRuYm9vc3QvY2FzdC5ocHAgYnV0IG9ubHkgbG9jYWxseSAoaXMgdW5kZWZpbmVkIGF0IHRoZSBib3R0b20pCi0vLyAgICAgICBzbyBpcyBPSyB0byByZXByb2R1Y2UgaXQgaGVyZS4KLSMgaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiBORE5CT09TVF9NU1ZDIDwgMTMwMAotIyAgZGVmaW5lIE5ETkJPT1NUX0VYUExJQ0lUX0RFRkFVTFRfVEFSR0VUICwgOjpuZG5ib29zdDo6dHlwZTxUYXJnZXQ+KiA9IDAKLSMgZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX0VYUExJQ0lUX0RFRkFVTFRfVEFSR0VUCi0jIGVuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICB1c2luZyBudW1lcmljOjpiYWRfbnVtZXJpY19jYXN0OwotCi0vLyAgTEVHQUNZIG51bWVyaWNfY2FzdCBbb25seSBmb3Igc29tZSBvbGQgYnJva2VuIGNvbXBpbGVyc10gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29udHJpYnV0ZWQgYnkgS2V2bGluIEhlbm5leQotCi0vLyAgbnVtZXJpY19jYXN0ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fTElNSVRTX0NPTVBJTEVfVElNRV9DT05TVEFOVFMpIHx8IGRlZmluZWQoTkROQk9PU1RfU0dJX0NQUF9MSU1JVFMpCi0KLSAgICBuYW1lc3BhY2UgZGV0YWlsCi0gICAgewotICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICBzdHJ1Y3Qgc2lnbmVkX251bWVyaWNfbGltaXRzIDogc3RkOjpudW1lcmljX2xpbWl0czxUPgotICAgICAgewotICAgICAgICAgICAgIHN0YXRpYyBpbmxpbmUgVCBtaW4gTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgICByZXR1cm4gKHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1pbikoKSA+PSAwCi0gICAgICAgICAgICAgICAgICAgICAvLyB1bmFyeSBtaW51cyBjYXVzZXMgaW50ZWdyYWwgcHJvbW90aW9uLCB0aHVzIHRoZSBzdGF0aWNfY2FzdDw+Ci0gICAgICAgICAgICAgICAgICAgICA/IHN0YXRpY19jYXN0PFQ+KC0oc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWF4KSgpKQotICAgICAgICAgICAgICAgICAgICAgOiAoc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWluKSgpOwotICAgICAgICAgfTsKLSAgICAgIH07Ci0KLSAgICAgIC8vIE1vdmUgdG8gbmFtZXNwYWNlIG5kbmJvb3N0IGluIHV0aWxpdHkuaHBwPwotICAgICAgdGVtcGxhdGUgPGNsYXNzIFQsIGJvb2wgc3BlY2lhbGl6ZWQ+Ci0gICAgICBzdHJ1Y3QgZml4ZWRfbnVtZXJpY19saW1pdHNfYmFzZQotICAgICAgICAgIDogcHVibGljIGlmX3RydWU8IHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmlzX3NpZ25lZCA+Ci0gICAgICAgICAgIDo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIHRoZW48IHNpZ25lZF9udW1lcmljX2xpbWl0czxUPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ci0gICAgICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAge307Ci0KLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgc3RydWN0IGZpeGVkX251bWVyaWNfbGltaXRzCi0gICAgICAgICAgOiBmaXhlZF9udW1lcmljX2xpbWl0c19iYXNlPFQsKHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmlzX3NwZWNpYWxpemVkKT4KLSAgICAgIHt9OwotCi0jIGlmZGVmIE5ETkJPT1NUX0hBU19MT05HX0xPTkcKLSAgICAgIC8vIGNvdmVyIGltcGxlbWVudGF0aW9ucyB3aGljaCBzdXBwbHkgbm8gc3BlY2lhbGl6YXRpb24gZm9yIGxvbmcKLSAgICAgIC8vIGxvbmcgLyB1bnNpZ25lZCBsb25nIGxvbmcuIE5vdCBpbnRlbmRlZCB0byBiZSBmdWxsCi0gICAgICAvLyBudW1lcmljX2xpbWl0cyByZXBsYWNlbWVudHMsIGJ1dCBnb29kIGVub3VnaCBmb3IgbnVtZXJpY19jYXN0PD4KLSAgICAgIHRlbXBsYXRlIDw+Ci0gICAgICBzdHJ1Y3QgZml4ZWRfbnVtZXJpY19saW1pdHNfYmFzZTwgOjpuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUsIGZhbHNlPgotICAgICAgewotICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19zcGVjaWFsaXplZCA9IHRydWUpOwotICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19zaWduZWQgPSB0cnVlKTsKLSAgICAgICAgICBzdGF0aWMgIDo6bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlIG1heCBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTiAoKQotICAgICAgICAgIHsKLSMgIGlmZGVmIExPTkdMT05HX01BWAotICAgICAgICAgICAgICByZXR1cm4gTE9OR0xPTkdfTUFYOwotIyAgZWxzZQotICAgICAgICAgICAgICByZXR1cm4gOTIyMzM3MjAzNjg1NDc3NTgwN0xMOyAvLyBob3BlIHRoaXMgaXMgcG9ydGFibGUKLSMgIGVuZGlmCi0gICAgICAgICAgfQotCi0gICAgICAgICAgc3RhdGljICA6Om5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSBtaW4gTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCkKLSAgICAgICAgICB7Ci0jICBpZmRlZiBMT05HTE9OR19NSU4KLSAgICAgICAgICAgICAgcmV0dXJuIExPTkdMT05HX01JTjsKLSMgIGVsc2UKLSAgICAgICAgICAgICAgIHJldHVybiAtKCA5MjIzMzcyMDM2ODU0Nzc1ODA3TEwgKS0xOyAvLyBob3BlIHRoaXMgaXMgcG9ydGFibGUKLSMgIGVuZGlmCi0gICAgICAgICAgfQotICAgICAgfTsKLQotICAgICAgdGVtcGxhdGUgPD4KLSAgICAgIHN0cnVjdCBmaXhlZF9udW1lcmljX2xpbWl0c19iYXNlPCA6Om5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUsIGZhbHNlPgotICAgICAgewotICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19zcGVjaWFsaXplZCA9IHRydWUpOwotICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19zaWduZWQgPSBmYWxzZSk7Ci0gICAgICAgICAgc3RhdGljICA6Om5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUgbWF4IE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpCi0gICAgICAgICAgewotIyAgaWZkZWYgVUxPTkdMT05HX01BWAotICAgICAgICAgICAgICByZXR1cm4gVUxPTkdMT05HX01BWDsKLSMgIGVsc2UKLSAgICAgICAgICAgICAgcmV0dXJuIDB4ZmZmZmZmZmZmZmZmZmZmZlVMTDsgLy8gaG9wZSB0aGlzIGlzIHBvcnRhYmxlCi0jICBlbmRpZgotICAgICAgICAgIH0KLQotICAgICAgICAgIHN0YXRpYyAgOjpuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlIG1pbiBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTiAoKSB7IHJldHVybiAwOyB9Ci0gICAgICB9OwotIyBlbmRpZgotICAgIH0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0vLyBsZXNzX3RoYW5fdHlwZV9taW4gLQotICAvLyAgICB4X2lzX3NpZ25lZCBzaG91bGQgYmUgbnVtZXJpY19saW1pdHM8WD46OmlzX3NpZ25lZAotICAvLyAgICB5X2lzX3NpZ25lZCBzaG91bGQgYmUgbnVtZXJpY19saW1pdHM8WT46OmlzX3NpZ25lZAotICAvLyAgICB5X21pbiBzaG91bGQgYmUgbnVtZXJpY19saW1pdHM8WT46Om1pbigpCi0gIC8vCi0gIC8vICAgIGNoZWNrKHgsIHlfbWluKSByZXR1cm5zIHRydWUgaWZmIHggPCB5X21pbiB3aXRob3V0IGludm9raW5nIGNvbXBhcmlzb25zCi0gIC8vICAgIGJldHdlZW4gc2lnbmVkIGFuZCB1bnNpZ25lZCB2YWx1ZXMuCi0gIC8vCi0gIC8vICAgICJwb29yIG1hbidzIHBhcnRpYWwgc3BlY2lhbGl6YXRpb24iIGlzIGluIHVzZSBoZXJlLgotICAgIHRlbXBsYXRlIDxib29sIHhfaXNfc2lnbmVkLCBib29sIHlfaXNfc2lnbmVkPgotICAgIHN0cnVjdCBsZXNzX3RoYW5fdHlwZV9taW4KLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBYLCBjbGFzcyBZPgotICAgICAgICBzdGF0aWMgYm9vbCBjaGVjayhYIHgsIFkgeV9taW4pCi0gICAgICAgICAgICB7IHJldHVybiB4IDwgeV9taW47IH0KLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbGVzc190aGFuX3R5cGVfbWluPGZhbHNlLCB0cnVlPgotICAgIHsKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFgsIGNsYXNzIFk+Ci0gICAgICAgIHN0YXRpYyBib29sIGNoZWNrKFgsIFkpCi0gICAgICAgICAgICB7IHJldHVybiBmYWxzZTsgfQotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBsZXNzX3RoYW5fdHlwZV9taW48dHJ1ZSwgZmFsc2U+Ci0gICAgewotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgWCwgY2xhc3MgWT4KLSAgICAgICAgc3RhdGljIGJvb2wgY2hlY2soWCB4LCBZKQotICAgICAgICAgICAgeyByZXR1cm4geCA8IDA7IH0KLSAgICB9OwotCi0gIC8vIGdyZWF0ZXJfdGhhbl90eXBlX21heCAtCi0gIC8vICAgIHNhbWVfc2lnbiBzaG91bGQgYmU6Ci0gIC8vICAgICAgICAgICAgbnVtZXJpY19saW1pdHM8WD46OmlzX3NpZ25lZCA9PSBudW1lcmljX2xpbWl0czxZPjo6aXNfc2lnbmVkCi0gIC8vICAgIHlfbWF4IHNob3VsZCBiZSBudW1lcmljX2xpbWl0czxZPjo6bWF4KCkKLSAgLy8KLSAgLy8gICAgY2hlY2soeCwgeV9tYXgpIHJldHVybnMgdHJ1ZSBpZmYgeCA+IHlfbWF4IHdpdGhvdXQgaW52b2tpbmcgY29tcGFyaXNvbnMKLSAgLy8gICAgYmV0d2VlbiBzaWduZWQgYW5kIHVuc2lnbmVkIHZhbHVlcy4KLSAgLy8KLSAgLy8gICAgInBvb3IgbWFuJ3MgcGFydGlhbCBzcGVjaWFsaXphdGlvbiIgaXMgaW4gdXNlIGhlcmUuCi0gICAgdGVtcGxhdGUgPGJvb2wgc2FtZV9zaWduLCBib29sIHhfaXNfc2lnbmVkPgotICAgIHN0cnVjdCBncmVhdGVyX3RoYW5fdHlwZV9tYXg7Ci0KLSAgICB0ZW1wbGF0ZTw+Ci0gICAgc3RydWN0IGdyZWF0ZXJfdGhhbl90eXBlX21heDx0cnVlLCB0cnVlPgotICAgIHsKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFgsIGNsYXNzIFk+Ci0gICAgICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBjaGVjayhYIHgsIFkgeV9tYXgpCi0gICAgICAgICAgICB7IHJldHVybiB4ID4geV9tYXg7IH0KLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgZ3JlYXRlcl90aGFuX3R5cGVfbWF4PGZhbHNlLCB0cnVlPgotICAgIHsKLSAgICAgICAgLy8gV2hhdCBkb2VzIHRoZSBzdGFuZGFyZCBzYXkgYWJvdXQgdGhpcz8gSSB0aGluayBpdCdzIHJpZ2h0LCBhbmQgaXQKLSAgICAgICAgLy8gd2lsbCB3b3JrIHdpdGggZXZlcnkgY29tcGlsZXIgSSBrbm93IG9mLgotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgWCwgY2xhc3MgWT4KLSAgICAgICAgc3RhdGljIGlubGluZSBib29sIGNoZWNrKFggeCwgWSkKLSAgICAgICAgICAgIHsgcmV0dXJuIHggPj0gMCAmJiBzdGF0aWNfY2FzdDxYPihzdGF0aWNfY2FzdDxZPih4KSkgIT0geDsgfQotCi0jIGlmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgTkROQk9PU1RfTVNWQyA8IDEzMDAKLSAgICAgICAgLy8gTVNWQzYgY2FuJ3Qgc3RhdGljX2Nhc3QgIHVuc2lnbmVkIF9faW50NjQgLT4gZmxvYXRpbmcgdHlwZXMKLSMgIGRlZmluZSBORE5CT09TVF9VSU5UNjRfQ0FTVChzcmNfdHlwZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljIGlubGluZSBib29sIGNoZWNrKHNyY190eXBlIHgsIHVuc2lnbmVkIF9faW50NjQpICAgICAgICAgIFwKLSAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIGlmICh4IDwgMCkgcmV0dXJuIGZhbHNlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHVuc2lnbmVkIF9faW50NjQgeSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIF9faW50NjQ+KHgpOyAgICAgIFwKLSAgICAgICAgICAgIGJvb2wgb2RkID0geSAmIDB4MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIF9faW50NjQgZGl2MiA9IHN0YXRpY19jYXN0PF9faW50NjQ+KHkgPj4gMSk7ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHJldHVybiAoKHN0YXRpY19jYXN0PHNyY190eXBlPihkaXYyKSAqIDIuMCkgKyBvZGQpICE9IHg7ICAgIFwKLSAgICAgICAgfQotCi0gICAgICAgIE5ETkJPT1NUX1VJTlQ2NF9DQVNUKGxvbmcgZG91YmxlKTsKLSAgICAgICAgTkROQk9PU1RfVUlOVDY0X0NBU1QoZG91YmxlKTsKLSAgICAgICAgTkROQk9PU1RfVUlOVDY0X0NBU1QoZmxvYXQpOwotIyAgdW5kZWYgTkROQk9PU1RfVUlOVDY0X0NBU1QKLSMgZW5kaWYKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8PgotICAgIHN0cnVjdCBncmVhdGVyX3RoYW5fdHlwZV9tYXg8dHJ1ZSwgZmFsc2U+Ci0gICAgewotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgWCwgY2xhc3MgWT4KLSAgICAgICAgc3RhdGljIGlubGluZSBib29sIGNoZWNrKFggeCwgWSB5X21heCkKLSAgICAgICAgICAgIHsgcmV0dXJuIHggPiB5X21heDsgfQotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBncmVhdGVyX3RoYW5fdHlwZV9tYXg8ZmFsc2UsIGZhbHNlPgotICAgIHsKLSAgICAgICAgLy8gV2hhdCBkb2VzIHRoZSBzdGFuZGFyZCBzYXkgYWJvdXQgdGhpcz8gSSB0aGluayBpdCdzIHJpZ2h0LCBhbmQgaXQKLSAgICAgICAgLy8gd2lsbCB3b3JrIHdpdGggZXZlcnkgY29tcGlsZXIgSSBrbm93IG9mLgotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgWCwgY2xhc3MgWT4KLSAgICAgICAgc3RhdGljIGlubGluZSBib29sIGNoZWNrKFggeCwgWSkKLSAgICAgICAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PFg+KHN0YXRpY19jYXN0PFk+KHgpKSAhPSB4OyB9Ci0gICAgfTsKLQotI2Vsc2UgLy8gdXNlICNwcmFnbWEgaGFja3MgaWYgYXZhaWxhYmxlCi0KLSAgbmFtZXNwYWNlIGRldGFpbAotICB7Ci0jIGlmIE5ETkJPT1NUX01TVkMKLSMgIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jICBwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDAxOCkKLSMgIHByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0MTQ2KQotI2VsaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pCi0jICBwcmFnbWEgb3B0aW9uIHB1c2ggLXctODA0MQotIyBlbmRpZgotCi0gICAgICAgLy8gTW92ZSB0byBuYW1lc3BhY2UgbmRuYm9vc3QgaW4gdXRpbGl0eS5ocHA/Ci0gICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgc3RydWN0IGZpeGVkX251bWVyaWNfbGltaXRzIDogcHVibGljIHN0ZDo6bnVtZXJpY19saW1pdHM8VD4KLSAgICAgICB7Ci0gICAgICAgICAgIHN0YXRpYyBpbmxpbmUgVCBtaW4gTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCkKLSAgICAgICAgICAgewotICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmlzX3NpZ25lZCAmJiAoc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWluKSgpID49IDAKLSAgICAgICAgICAgICAgICAgICA/IFQoLShzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgpKCkpIDogKHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1pbikoKTsKLSAgICAgICAgICAgfQotICAgICAgIH07Ci0KLSMgaWYgTkROQk9PU1RfTVNWQwotIyAgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VsaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pCi0jICBwcmFnbWEgb3B0aW9uIHBvcAotIyBlbmRpZgotICB9IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4KLSAgICBpbmxpbmUgVGFyZ2V0IG51bWVyaWNfY2FzdChTb3VyY2UgYXJnIE5ETkJPT1NUX0VYUExJQ0lUX0RFRkFVTFRfVEFSR0VUKQotICAgIHsKLSAgICAgICAgLy8gdHlwZWRlZnMgYWJicmV2aWF0aW5nIHJlc3BlY3RpdmUgdHJhaXQgY2xhc3NlcwotICAgICAgICB0eXBlZGVmIGRldGFpbDo6Zml4ZWRfbnVtZXJpY19saW1pdHM8U291cmNlPiBhcmdfdHJhaXRzOwotICAgICAgICB0eXBlZGVmIGRldGFpbDo6Zml4ZWRfbnVtZXJpY19saW1pdHM8VGFyZ2V0PiByZXN1bHRfdHJhaXRzOwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9TVFJJQ1RfQ09ORklHKSBcCi0gICAgfHwgKCFkZWZpbmVkKF9fSFBfYUNDKSB8fCBfX0hQX2FDQyA+IDMzOTAwKSBcCi0gICAgICAgICAmJiAoIWRlZmluZWQoTkROQk9PU1RfTk9fTElNSVRTX0NPTVBJTEVfVElNRV9DT05TVEFOVFMpIFwKLSAgICAgICAgICAgICB8fCBkZWZpbmVkKE5ETkJPT1NUX1NHSV9DUFBfTElNSVRTKSkKLSAgICAgICAgLy8gdHlwZWRlZnMgdGhhdCBhY3QgYXMgY29tcGlsZSB0aW1lIGFzc2VydGlvbnMKLSAgICAgICAgLy8gKHRvIGJlIHJlcGxhY2VkIGJ5IGJvb3N0IGNvbXBpbGUgdGltZSBhc3NlcnRpb25zCi0gICAgICAgIC8vIGFzIGFuZCB3aGVuIHRoZXkgYmVjb21lIGF2YWlsYWJsZSBhbmQgYXJlIHN0YWJsZSkKLSAgICAgICAgdHlwZWRlZiBib29sIGFyZ3VtZW50X211c3RfYmVfbnVtZXJpY1thcmdfdHJhaXRzOjppc19zcGVjaWFsaXplZF07Ci0gICAgICAgIHR5cGVkZWYgYm9vbCByZXN1bHRfbXVzdF9iZV9udW1lcmljW3Jlc3VsdF90cmFpdHM6OmlzX3NwZWNpYWxpemVkXTsKLQotICAgICAgICBjb25zdCBib29sIGFyZ19pc19zaWduZWQgPSBhcmdfdHJhaXRzOjppc19zaWduZWQ7Ci0gICAgICAgIGNvbnN0IGJvb2wgcmVzdWx0X2lzX3NpZ25lZCA9IHJlc3VsdF90cmFpdHM6OmlzX3NpZ25lZDsKLSAgICAgICAgY29uc3QgYm9vbCBzYW1lX3NpZ24gPSBhcmdfaXNfc2lnbmVkID09IHJlc3VsdF9pc19zaWduZWQ7Ci0KLSAgICAgICAgaWYgKGxlc3NfdGhhbl90eXBlX21pbjxhcmdfaXNfc2lnbmVkLCByZXN1bHRfaXNfc2lnbmVkPjo6Y2hlY2soYXJnLCAocmVzdWx0X3RyYWl0czo6bWluKSgpKQotICAgICAgICAgICAgfHwgZ3JlYXRlcl90aGFuX3R5cGVfbWF4PHNhbWVfc2lnbiwgYXJnX2lzX3NpZ25lZD46OmNoZWNrKGFyZywgKHJlc3VsdF90cmFpdHM6Om1heCkoKSkKLSAgICAgICAgICAgICkKLQotI2Vsc2UgLy8gV2UgbmVlZCB0byB1c2UgI3ByYWdtYSBoYWNrcyBpZiBhdmFpbGFibGUKLQotIyBpZiBORE5CT09TVF9NU1ZDCi0jICBwcmFnbWEgd2FybmluZyhwdXNoKQotIyAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQwMTgpCi0jZWxpZiBkZWZpbmVkKF9fQk9STEFORENfXykKLSNwcmFnbWEgb3B0aW9uIHB1c2ggLXctODAxMgotIyBlbmRpZgotICAgICAgICBpZiAoKGFyZyA8IDAgJiYgIXJlc3VsdF90cmFpdHM6OmlzX3NpZ25lZCkgIC8vIGxvc3Mgb2YgbmVnYXRpdmUgcmFuZ2UKLSAgICAgICAgICAgICB8fCAoYXJnX3RyYWl0czo6aXNfc2lnbmVkICYmIGFyZyA8IChyZXN1bHRfdHJhaXRzOjptaW4pKCkpICAvLyB1bmRlcmZsb3cKLSAgICAgICAgICAgICB8fCBhcmcgPiAocmVzdWx0X3RyYWl0czo6bWF4KSgpKSAgICAgICAgICAgIC8vIG92ZXJmbG93Ci0jIGlmIE5ETkJPT1NUX01TVkMKLSMgIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbGlmIGRlZmluZWQoX19CT1JMQU5EQ19fKQotI3ByYWdtYSBvcHRpb24gcG9wCi0jIGVuZGlmCi0jZW5kaWYKLSAgICAgICAgewotICAgICAgICAgICAgdGhyb3cgYmFkX251bWVyaWNfY2FzdCgpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUYXJnZXQ+KGFyZyk7Ci0gICAgfSAvLyBudW1lcmljX2Nhc3QKLQotIyAgdW5kZWYgTkROQk9PU1RfRVhQTElDSVRfREVGQVVMVF9UQVJHRVQKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyBORE5CT09TVF9PTERfTlVNRVJJQ19DQVNUX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL3ByZXByb2Nlc3NlZC9udW1lcmljX2Nhc3RfdHJhaXRzX2NvbW1vbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvcHJlcHJvY2Vzc2VkL251bWVyaWNfY2FzdF90cmFpdHNfY29tbW9uLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDhlZWU2YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvcHJlcHJvY2Vzc2VkL251bWVyaWNfY2FzdF90cmFpdHNfY29tbW9uLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3NDEgKzAsMCBAQAotLy8KLS8vISBDb3B5cmlnaHQgKGMpIDIwMTEtMjAxMgotLy8hIEJyYW5kb24gS29obgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0JCi0JCi0JCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbnVtZXJpYyB7Ci0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBjaGFyCi0gICAgICAgICAgLCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBjaGFyCi0gICAgICAgICAgLCBzaWduZWQgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8c2lnbmVkIGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGNoYXIKLSAgICAgICAgICAsIHVuc2lnbmVkIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGNoYXIKLSAgICAgICAgICAsIHNob3J0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxzaG9ydD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgY2hhcgotICAgICAgICAgICwgdW5zaWduZWQgc2hvcnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIHNob3J0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBjaGFyCi0gICAgICAgICAgLCBpbnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGludD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgY2hhcgotICAgICAgICAgICwgdW5zaWduZWQgaW50Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBpbnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGNoYXIKLSAgICAgICAgICAsIGxvbmcKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGxvbmc+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGNoYXIKLSAgICAgICAgICAsIHVuc2lnbmVkIGxvbmcKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGxvbmc+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGNoYXIKLSAgICAgICAgICAsIGZsb2F0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxmbG9hdD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgY2hhcgotICAgICAgICAgICwgZG91YmxlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxkb3VibGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGNoYXIKLSAgICAgICAgICAsIGxvbmcgZG91YmxlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxsb25nIGRvdWJsZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgc2lnbmVkIGNoYXIKLSAgICAgICAgICAsIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHNpZ25lZCBjaGFyCi0gICAgICAgICAgLCBzaWduZWQgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8c2lnbmVkIGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHNpZ25lZCBjaGFyCi0gICAgICAgICAgLCB1bnNpZ25lZCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBzaWduZWQgY2hhcgotICAgICAgICAgICwgc2hvcnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHNob3J0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBzaWduZWQgY2hhcgotICAgICAgICAgICwgdW5zaWduZWQgc2hvcnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIHNob3J0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBzaWduZWQgY2hhcgotICAgICAgICAgICwgaW50Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxpbnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHNpZ25lZCBjaGFyCi0gICAgICAgICAgLCB1bnNpZ25lZCBpbnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGludD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgc2lnbmVkIGNoYXIKLSAgICAgICAgICAsIGxvbmcKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGxvbmc+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHNpZ25lZCBjaGFyCi0gICAgICAgICAgLCB1bnNpZ25lZCBsb25nCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBsb25nPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBzaWduZWQgY2hhcgotICAgICAgICAgICwgZmxvYXQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGZsb2F0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBzaWduZWQgY2hhcgotICAgICAgICAgICwgZG91YmxlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxkb3VibGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHNpZ25lZCBjaGFyCi0gICAgICAgICAgLCBsb25nIGRvdWJsZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bG9uZyBkb3VibGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIKLSAgICAgICAgICAsIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIKLSAgICAgICAgICAsIHNpZ25lZCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxzaWduZWQgY2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgY2hhcgotICAgICAgICAgICwgdW5zaWduZWQgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgY2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgY2hhcgotICAgICAgICAgICwgc2hvcnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHNob3J0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyCi0gICAgICAgICAgLCB1bnNpZ25lZCBzaG9ydAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgc2hvcnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIKLSAgICAgICAgICAsIGludAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8aW50PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyCi0gICAgICAgICAgLCB1bnNpZ25lZCBpbnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGludD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgY2hhcgotICAgICAgICAgICwgbG9uZwotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bG9uZz4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgY2hhcgotICAgICAgICAgICwgdW5zaWduZWQgbG9uZwotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgbG9uZz4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgY2hhcgotICAgICAgICAgICwgZmxvYXQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGZsb2F0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyCi0gICAgICAgICAgLCBkb3VibGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGRvdWJsZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgY2hhcgotICAgICAgICAgICwgbG9uZyBkb3VibGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGxvbmcgZG91YmxlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBzaG9ydAotICAgICAgICAgICwgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8Y2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgc2hvcnQKLSAgICAgICAgICAsIHNpZ25lZCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxzaWduZWQgY2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgc2hvcnQKLSAgICAgICAgICAsIHVuc2lnbmVkIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHNob3J0Ci0gICAgICAgICAgLCBzaG9ydAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8c2hvcnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHNob3J0Ci0gICAgICAgICAgLCB1bnNpZ25lZCBzaG9ydAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgc2hvcnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHNob3J0Ci0gICAgICAgICAgLCBpbnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGludD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgc2hvcnQKLSAgICAgICAgICAsIHVuc2lnbmVkIGludAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgaW50PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBzaG9ydAotICAgICAgICAgICwgbG9uZwotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bG9uZz4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgc2hvcnQKLSAgICAgICAgICAsIHVuc2lnbmVkIGxvbmcKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGxvbmc+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHNob3J0Ci0gICAgICAgICAgLCBmbG9hdAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8ZmxvYXQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHNob3J0Ci0gICAgICAgICAgLCBkb3VibGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGRvdWJsZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgc2hvcnQKLSAgICAgICAgICAsIGxvbmcgZG91YmxlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxsb25nIGRvdWJsZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQKLSAgICAgICAgICAsIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0Ci0gICAgICAgICAgLCBzaWduZWQgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8c2lnbmVkIGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0Ci0gICAgICAgICAgLCB1bnNpZ25lZCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBzaG9ydAotICAgICAgICAgICwgc2hvcnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHNob3J0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBzaG9ydAotICAgICAgICAgICwgdW5zaWduZWQgc2hvcnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIHNob3J0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBzaG9ydAotICAgICAgICAgICwgaW50Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxpbnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0Ci0gICAgICAgICAgLCB1bnNpZ25lZCBpbnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGludD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQKLSAgICAgICAgICAsIGxvbmcKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGxvbmc+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0Ci0gICAgICAgICAgLCB1bnNpZ25lZCBsb25nCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBsb25nPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBzaG9ydAotICAgICAgICAgICwgZmxvYXQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGZsb2F0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBzaG9ydAotICAgICAgICAgICwgZG91YmxlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxkb3VibGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0Ci0gICAgICAgICAgLCBsb25nIGRvdWJsZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bG9uZyBkb3VibGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGludAotICAgICAgICAgICwgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8Y2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgaW50Ci0gICAgICAgICAgLCBzaWduZWQgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8c2lnbmVkIGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGludAotICAgICAgICAgICwgdW5zaWduZWQgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgY2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgaW50Ci0gICAgICAgICAgLCBzaG9ydAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8c2hvcnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGludAotICAgICAgICAgICwgdW5zaWduZWQgc2hvcnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIHNob3J0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBpbnQKLSAgICAgICAgICAsIGludAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8aW50PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBpbnQKLSAgICAgICAgICAsIHVuc2lnbmVkIGludAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgaW50PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBpbnQKLSAgICAgICAgICAsIGxvbmcKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGxvbmc+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGludAotICAgICAgICAgICwgdW5zaWduZWQgbG9uZwotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgbG9uZz4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgaW50Ci0gICAgICAgICAgLCBmbG9hdAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8ZmxvYXQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGludAotICAgICAgICAgICwgZG91YmxlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxkb3VibGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGludAotICAgICAgICAgICwgbG9uZyBkb3VibGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGxvbmcgZG91YmxlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBpbnQKLSAgICAgICAgICAsIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGludAotICAgICAgICAgICwgc2lnbmVkIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHNpZ25lZCBjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBpbnQKLSAgICAgICAgICAsIHVuc2lnbmVkIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGludAotICAgICAgICAgICwgc2hvcnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHNob3J0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBpbnQKLSAgICAgICAgICAsIHVuc2lnbmVkIHNob3J0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBzaG9ydD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgaW50Ci0gICAgICAgICAgLCBpbnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGludD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgaW50Ci0gICAgICAgICAgLCB1bnNpZ25lZCBpbnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGludD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgaW50Ci0gICAgICAgICAgLCBsb25nCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxsb25nPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBpbnQKLSAgICAgICAgICAsIHVuc2lnbmVkIGxvbmcKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGxvbmc+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGludAotICAgICAgICAgICwgZmxvYXQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGZsb2F0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBpbnQKLSAgICAgICAgICAsIGRvdWJsZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8ZG91YmxlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBpbnQKLSAgICAgICAgICAsIGxvbmcgZG91YmxlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxsb25nIGRvdWJsZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbG9uZwotICAgICAgICAgICwgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8Y2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbG9uZwotICAgICAgICAgICwgc2lnbmVkIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHNpZ25lZCBjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBsb25nCi0gICAgICAgICAgLCB1bnNpZ25lZCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBsb25nCi0gICAgICAgICAgLCBzaG9ydAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8c2hvcnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGxvbmcKLSAgICAgICAgICAsIHVuc2lnbmVkIHNob3J0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBzaG9ydD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbG9uZwotICAgICAgICAgICwgaW50Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxpbnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGxvbmcKLSAgICAgICAgICAsIHVuc2lnbmVkIGludAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgaW50PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBsb25nCi0gICAgICAgICAgLCBsb25nCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxsb25nPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBsb25nCi0gICAgICAgICAgLCB1bnNpZ25lZCBsb25nCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBsb25nPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBsb25nCi0gICAgICAgICAgLCBmbG9hdAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8ZmxvYXQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGxvbmcKLSAgICAgICAgICAsIGRvdWJsZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8ZG91YmxlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBsb25nCi0gICAgICAgICAgLCBsb25nIGRvdWJsZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bG9uZyBkb3VibGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcKLSAgICAgICAgICAsIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcKLSAgICAgICAgICAsIHNpZ25lZCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxzaWduZWQgY2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgbG9uZwotICAgICAgICAgICwgdW5zaWduZWQgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgY2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgbG9uZwotICAgICAgICAgICwgc2hvcnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHNob3J0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25nCi0gICAgICAgICAgLCB1bnNpZ25lZCBzaG9ydAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgc2hvcnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcKLSAgICAgICAgICAsIGludAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8aW50PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25nCi0gICAgICAgICAgLCB1bnNpZ25lZCBpbnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGludD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgbG9uZwotICAgICAgICAgICwgbG9uZwotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bG9uZz4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgbG9uZwotICAgICAgICAgICwgdW5zaWduZWQgbG9uZwotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgbG9uZz4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgbG9uZwotICAgICAgICAgICwgZmxvYXQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGZsb2F0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25nCi0gICAgICAgICAgLCBkb3VibGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGRvdWJsZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgbG9uZwotICAgICAgICAgICwgbG9uZyBkb3VibGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGxvbmcgZG91YmxlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBmbG9hdAotICAgICAgICAgICwgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8Y2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgZmxvYXQKLSAgICAgICAgICAsIHNpZ25lZCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxzaWduZWQgY2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgZmxvYXQKLSAgICAgICAgICAsIHVuc2lnbmVkIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGZsb2F0Ci0gICAgICAgICAgLCBzaG9ydAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8c2hvcnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGZsb2F0Ci0gICAgICAgICAgLCB1bnNpZ25lZCBzaG9ydAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgc2hvcnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGZsb2F0Ci0gICAgICAgICAgLCBpbnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGludD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgZmxvYXQKLSAgICAgICAgICAsIHVuc2lnbmVkIGludAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgaW50PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBmbG9hdAotICAgICAgICAgICwgbG9uZwotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bG9uZz4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgZmxvYXQKLSAgICAgICAgICAsIHVuc2lnbmVkIGxvbmcKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGxvbmc+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGZsb2F0Ci0gICAgICAgICAgLCBmbG9hdAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8ZmxvYXQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGZsb2F0Ci0gICAgICAgICAgLCBkb3VibGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGRvdWJsZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgZmxvYXQKLSAgICAgICAgICAsIGxvbmcgZG91YmxlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxsb25nIGRvdWJsZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgZG91YmxlCi0gICAgICAgICAgLCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBkb3VibGUKLSAgICAgICAgICAsIHNpZ25lZCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxzaWduZWQgY2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgZG91YmxlCi0gICAgICAgICAgLCB1bnNpZ25lZCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBkb3VibGUKLSAgICAgICAgICAsIHNob3J0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxzaG9ydD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgZG91YmxlCi0gICAgICAgICAgLCB1bnNpZ25lZCBzaG9ydAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgc2hvcnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGRvdWJsZQotICAgICAgICAgICwgaW50Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxpbnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGRvdWJsZQotICAgICAgICAgICwgdW5zaWduZWQgaW50Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBpbnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGRvdWJsZQotICAgICAgICAgICwgbG9uZwotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bG9uZz4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgZG91YmxlCi0gICAgICAgICAgLCB1bnNpZ25lZCBsb25nCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBsb25nPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBkb3VibGUKLSAgICAgICAgICAsIGZsb2F0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxmbG9hdD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgZG91YmxlCi0gICAgICAgICAgLCBkb3VibGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGRvdWJsZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgZG91YmxlCi0gICAgICAgICAgLCBsb25nIGRvdWJsZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bG9uZyBkb3VibGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGxvbmcgZG91YmxlCi0gICAgICAgICAgLCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBsb25nIGRvdWJsZQotICAgICAgICAgICwgc2lnbmVkIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHNpZ25lZCBjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBsb25nIGRvdWJsZQotICAgICAgICAgICwgdW5zaWduZWQgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgY2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbG9uZyBkb3VibGUKLSAgICAgICAgICAsIHNob3J0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxzaG9ydD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbG9uZyBkb3VibGUKLSAgICAgICAgICAsIHVuc2lnbmVkIHNob3J0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBzaG9ydD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbG9uZyBkb3VibGUKLSAgICAgICAgICAsIGludAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8aW50PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBsb25nIGRvdWJsZQotICAgICAgICAgICwgdW5zaWduZWQgaW50Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBpbnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGxvbmcgZG91YmxlCi0gICAgICAgICAgLCBsb25nCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxsb25nPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBsb25nIGRvdWJsZQotICAgICAgICAgICwgdW5zaWduZWQgbG9uZwotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgbG9uZz4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbG9uZyBkb3VibGUKLSAgICAgICAgICAsIGZsb2F0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxmbG9hdD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbG9uZyBkb3VibGUKLSAgICAgICAgICAsIGRvdWJsZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8ZG91YmxlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBsb25nIGRvdWJsZQotICAgICAgICAgICwgbG9uZyBkb3VibGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGxvbmcgZG91YmxlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL3ByZXByb2Nlc3NlZC9udW1lcmljX2Nhc3RfdHJhaXRzX2xvbmdfbG9uZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvcHJlcHJvY2Vzc2VkL251bWVyaWNfY2FzdF90cmFpdHNfbG9uZ19sb25nLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWY4ZDU0MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvcHJlcHJvY2Vzc2VkL251bWVyaWNfY2FzdF90cmFpdHNfbG9uZ19sb25nLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM0NyArMCwwIEBACi0vLwotLy8hIENvcHlyaWdodCAoYykgMjAxMS0yMDEyCi0vLyEgQnJhbmRvbiBLb2huCi0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBudW1lcmljIHsKLSAgICAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGNoYXIKLSAgICAgICAgICAsIG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBjaGFyCi0gICAgICAgICAgLCBuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBzaWduZWQgY2hhcgotICAgICAgICAgICwgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxuZG5ib29zdDo6bG9uZ19sb25nX3R5cGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHNpZ25lZCBjaGFyCi0gICAgICAgICAgLCBuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyCi0gICAgICAgICAgLCBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgY2hhcgotICAgICAgICAgICwgbmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgc2hvcnQKLSAgICAgICAgICAsIG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBzaG9ydAotICAgICAgICAgICwgbmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQKLSAgICAgICAgICAsIG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBzaG9ydAotICAgICAgICAgICwgbmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgaW50Ci0gICAgICAgICAgLCBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgaW50Ci0gICAgICAgICAgLCBuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBpbnQKLSAgICAgICAgICAsIG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBpbnQKLSAgICAgICAgICAsIG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGxvbmcKLSAgICAgICAgICAsIG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBsb25nCi0gICAgICAgICAgLCBuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25nCi0gICAgICAgICAgLCBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgbG9uZwotICAgICAgICAgICwgbmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgZmxvYXQKLSAgICAgICAgICAsIG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBmbG9hdAotICAgICAgICAgICwgbmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgZG91YmxlCi0gICAgICAgICAgLCBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgZG91YmxlCi0gICAgICAgICAgLCBuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBsb25nIGRvdWJsZQotICAgICAgICAgICwgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxuZG5ib29zdDo6bG9uZ19sb25nX3R5cGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGxvbmcgZG91YmxlCi0gICAgICAgICAgLCBuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUKLSAgICAgICAgICAsIG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUKLSAgICAgICAgICAsIG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUKLSAgICAgICAgICAsIG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlCi0gICAgICAgICAgLCBuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL3NpZ25fbWl4dHVyZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvc2lnbl9taXh0dXJlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWU5MGVlOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvc2lnbl9taXh0dXJlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8vICAoYykgQ29weXJpZ2h0IEZlcm5hbmRvIEx1aXMgQ2FjY2lvbGEgQ2FyYmFsbGFsIDIwMDAtMjAwNAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyAgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgbGlicmFyeSBob21lIHBhZ2UgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9udW1lcmljL2NvbnZlcnNpb24KLS8vCi0vLyBDb250YWN0IHRoZSBhdXRob3IgYXQ6IGZlcm5hbmRvX2NhY2Npb2xhQGhvdG1haWwuY29tCi0vLyAKLSNpZm5kZWYgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0RFVEFJTF9TSUdOX01JWFRVUkVfRkxDXzEyTk9WMjAwMl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0RFVEFJTF9TSUdOX01JWFRVUkVfRkxDXzEyTk9WMjAwMl9IUFAKLQotI2luY2x1ZGUgIm5kbmJvb3N0L2NvbmZpZy5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbGltaXRzLmhwcCIKLQotI2luY2x1ZGUgIm5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9zaWduX21peHR1cmVfZW51bS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9tZXRhLmhwcCIKLQotI2luY2x1ZGUgIm5kbmJvb3N0L21wbC9pbnRlZ3JhbF9jLmhwcCIKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG51bWVyaWMgeyBuYW1lc3BhY2UgY29udmRldGFpbAotewotICAvLyBJbnRlZ3JhbCBDb25zdGFudHMgZm9yICdTaWduTWl4dHVyZScKLSAgdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c2lnbl9taXh0dXJlX2VudW0sIHVuc2lnbmVkX3RvX3Vuc2lnbmVkPiB1bnNpZzJ1bnNpZ19jIDsKLSAgdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c2lnbl9taXh0dXJlX2VudW0sIHNpZ25lZF90b19zaWduZWQ+ICAgICBzaWcyc2lnX2MgOwotICB0eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzaWduX21peHR1cmVfZW51bSwgc2lnbmVkX3RvX3Vuc2lnbmVkPiAgIHNpZzJ1bnNpZ19jIDsKLSAgdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c2lnbl9taXh0dXJlX2VudW0sIHVuc2lnbmVkX3RvX3NpZ25lZD4gICB1bnNpZzJzaWdfYyA7Ci0KLSAgLy8gTWV0YWZ1bmN0aW9uOgotICAvLwotICAvLyAgIGdldF9zaWduX21peHR1cmU8VCxTPjo6dHlwZQotICAvLwotICAvLyBTZWxlY3RzIHRoZSBhcHByb3ByaWF0ZSBTaWduTWl4dHVyZSBJbnRlZ3JhbCBDb25zdGFudCBmb3IgdGhlIGNvbWJpbmF0aW9uIFQsUy4KLSAgLy8KLSAgdGVtcGxhdGU8Y2xhc3MgVCxjbGFzcyBTPgotICBzdHJ1Y3QgZ2V0X3NpZ25fbWl4dHVyZQotICB7Ci0gICAgdHlwZWRlZiBtcGw6OmJvb2xfPCA6OnN0ZDo6bnVtZXJpY19saW1pdHM8Uz46OmlzX3NpZ25lZCA+IFNfc2lnbmVkIDsKLSAgICB0eXBlZGVmIG1wbDo6Ym9vbF88IDo6c3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfc2lnbmVkID4gVF9zaWduZWQgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgZm9yX2JvdGg8U19zaWduZWQsIFRfc2lnbmVkLCBzaWcyc2lnX2MsIHNpZzJ1bnNpZ19jLCB1bnNpZzJzaWdfYywgdW5zaWcydW5zaWdfYz46OnR5cGUKLSAgICAgICAgdHlwZSA7Ci0gIH0gOwotCi0gIC8vIE1ldGFmdW5jdGlvbjoKLSAgLy8KLSAgLy8gICBmb3Jfc2lnbl9taXh0dXJlPFNpZ25NaXh0dXJlLFNpZzJTaWcsU2lnMlVuc2lnLFVuc2lnMlNpZyxVbnNpZzJVbnNpZz46OnR5cGUKLSAgLy8KLSAgLy8ge1NpZ25NaXh0dXJlfSBpcyBvbmUgb2YgdGhlIEludGVncmFsIENvbnN0YW50cyBmb3IgU2lnbk1peHR1cmUsIGRlY2xhcmVkIGFib3ZlLgotICAvLyB7U2lnMlNpZyxTaWcyVW5zaWcsVW5zaWcyU2lnLFVuc2lnMlVuc2lnfSBhcmUgYXJpYnRyYXJ5IHR5cGVzLiAobm90IG1ldGFmdW5jdGlvbnMpCi0gIC8vCi0gIC8vIEFjY29yZGluZyB0byB0aGUgdmFsdWUgb2YgJ1NpZ25NaXh0dXJlJywgc2VsZWN0cyB0aGUgY29ycmVzcG9uZGluZyB0eXBlLgotICAvLwotICB0ZW1wbGF0ZTxjbGFzcyBTaWduTWl4dHVyZSwgY2xhc3MgU2lnMlNpZywgY2xhc3MgU2lnMlVuc2lnLCBjbGFzcyBVbnNpZzJTaWcsIGNsYXNzIFVuc2lnMlVuc2lnPgotICBzdHJ1Y3QgZm9yX3NpZ25fbWl4dHVyZQotICB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgY3Rfc3dpdGNoNDxTaWduTWl4dHVyZQotICAgICAgICAgICAgICAgICAsIHNpZzJzaWdfYywgc2lnMnVuc2lnX2MsIHVuc2lnMnNpZ19jICAvLyBkZWZhdWx0Ci0gICAgICAgICAgICAgICAgICwgU2lnMlNpZyAgLCBTaWcyVW5zaWcgICwgVW5zaWcyU2lnICAsIFVuc2lnMlVuc2lnCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICB0eXBlIDsKLSAgfSA7Ci0KLX0gfSB9IC8vIG5hbWVzcGFjZSBuZG5ib29zdDo6bnVtZXJpYzo6Y29udmRldGFpbAotCi0jZW5kaWYKLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC91ZHRfYnVpbHRpbl9taXh0dXJlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC91ZHRfYnVpbHRpbl9taXh0dXJlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzMzODJlYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvdWR0X2J1aWx0aW5fbWl4dHVyZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0vLyAgKGMpIENvcHlyaWdodCBGZXJuYW5kbyBMdWlzIENhY2Npb2xhIENhcmJhbGxhbCAyMDAwLTIwMDQKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGxpYnJhcnkgaG9tZSBwYWdlIGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbnVtZXJpYy9jb252ZXJzaW9uCi0vLwotLy8gQ29udGFjdCB0aGUgYXV0aG9yIGF0OiBmZXJuYW5kb19jYWNjaW9sYUBob3RtYWlsLmNvbQotLy8gCi0jaWZuZGVmIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9ERVRBSUxfVURUX0JVSUxUSU5fTUlYVFVSRV9GTENfMTJOT1YyMDAyX0hQUAotI2RlZmluZSBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fREVUQUlMX1VEVF9CVUlMVElOX01JWFRVUkVfRkxDXzEyTk9WMjAwMl9IUFAKLQotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FyaXRobWV0aWMuaHBwIgotCi0jaW5jbHVkZSAibmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL3VkdF9idWlsdGluX21peHR1cmVfZW51bS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9tZXRhLmhwcCIKLQotI2luY2x1ZGUgIm5kbmJvb3N0L21wbC9pbnRlZ3JhbF9jLmhwcCIKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG51bWVyaWMgeyBuYW1lc3BhY2UgY29udmRldGFpbAotewotICAvLyBJbnRlZ3JhbCBDb25zdGFudHMgZm9yICdVZHRNaXh0dXJlJwotICB0eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzx1ZHRfYnVpbHRpbl9taXh0dXJlX2VudW0sIGJ1aWx0aW5fdG9fYnVpbHRpbj4gYnVpbHRpbjJidWlsdGluX2MgOwotICB0eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzx1ZHRfYnVpbHRpbl9taXh0dXJlX2VudW0sIGJ1aWx0aW5fdG9fdWR0PiAgICAgYnVpbHRpbjJ1ZHRfYyA7Ci0gIHR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHVkdF9idWlsdGluX21peHR1cmVfZW51bSwgdWR0X3RvX2J1aWx0aW4+ICAgICB1ZHQyYnVpbHRpbl9jIDsKLSAgdHlwZWRlZiBtcGw6OmludGVncmFsX2M8dWR0X2J1aWx0aW5fbWl4dHVyZV9lbnVtLCB1ZHRfdG9fdWR0PiAgICAgICAgIHVkdDJ1ZHRfYyA7Ci0KLSAgLy8gTWV0YWZ1bmN0aW9uOgotICAvLwotICAvLyAgIGZvcl91ZHRfbWl4dHVyZTxVZHRNaXh0dXJlLEJ1aWx0SW4yQnVpbHRJbixCdWlsdEluMlVkdCxVZHQyQnVpbHRJbixVZHQyVWR0Pjo6dHlwZQotICAvLwotICAvLyB7VWR0TWl4dHVyZX0gaXMgb25lIG9mIHRoZSBJbnRlZ3JhbCBDb25zdGFudHMgZm9yIFVkTWl4dHVyZSwgZGVjbGFyZWQgYWJvdmUuCi0gIC8vIHtCdWlsdEluMkJ1aWx0SW4sQnVpbHRJbjJVZHQsVWR0MkJ1aWx0SW4sVWR0MlVkdH0gYXJlIGFyaWJ0cmFyeSB0eXBlcy4gKG5vdCBtZXRhZnVuY3Rpb25zKQotICAvLwotICAvLyBBY2NvcmRpbmcgdG8gdGhlIHZhbHVlIG9mICdVZHRNaXh0dXJlJywgc2VsZWN0cyB0aGUgY29ycmVzcG9uZGluZyB0eXBlLgotICAvLwotICB0ZW1wbGF0ZTxjbGFzcyBVZHRNaXh0dXJlLCBjbGFzcyBCdWlsdEluMkJ1aWx0SW4sIGNsYXNzIEJ1aWx0SW4yVWR0LCBjbGFzcyBVZHQyQnVpbHRJbiwgY2xhc3MgVWR0MlVkdD4KLSAgc3RydWN0IGZvcl91ZHRfYnVpbHRpbl9taXh0dXJlCi0gIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICBjdF9zd2l0Y2g0PFVkdE1peHR1cmUKLSAgICAgICAgICAgICAgICAgLCBidWlsdGluMmJ1aWx0aW5fYywgYnVpbHRpbjJ1ZHRfYywgdWR0MmJ1aWx0aW5fYyAvLyBkZWZhdWx0Ci0gICAgICAgICAgICAgICAgICwgQnVpbHRJbjJCdWlsdEluICAsIEJ1aWx0SW4yVWR0ICAsIFVkdDJCdWlsdEluICAsIFVkdDJVZHQKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgIHR5cGUgOwotICB9IDsKLQotICAvLyBNZXRhZnVuY3Rpb246Ci0gIC8vCi0gIC8vICAgZ2V0X3VkdF9taXh0dXJlPFQsUz46OnR5cGUKLSAgLy8KLSAgLy8gU2VsZWN0cyB0aGUgYXBwcm9wcmlhdGUgVWR0TWl4dHVyZSBJbnRlZ3JhbCBDb25zdGFudCBmb3IgdGhlIGNvbWJpbmF0aW9uIFQsUy4KLSAgLy8KLSAgdGVtcGxhdGU8Y2xhc3MgVCxjbGFzcyBTPgotICBzdHJ1Y3QgZ2V0X3VkdF9idWlsdGluX21peHR1cmUKLSAgewotICAgIHR5cGVkZWYgaXNfYXJpdGhtZXRpYzxTPiBTX2J1aWx0aW4gOwotICAgIHR5cGVkZWYgaXNfYXJpdGhtZXRpYzxUPiBUX2J1aWx0aW4gOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgZm9yX2JvdGg8U19idWlsdGluLCBUX2J1aWx0aW4sIGJ1aWx0aW4yYnVpbHRpbl9jLCBidWlsdGluMnVkdF9jLCB1ZHQyYnVpbHRpbl9jLCB1ZHQydWR0X2M+Ojp0eXBlCi0gICAgICAgIHR5cGUgOwotICB9IDsKLQotfSB9IH0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0OjpudW1lcmljOjpjb252ZGV0YWlsCi0KLSNlbmRpZgotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2ludF9mbG9hdF9taXh0dXJlX2VudW0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vaW50X2Zsb2F0X21peHR1cmVfZW51bS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2NWNjNTUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vaW50X2Zsb2F0X21peHR1cmVfZW51bS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0vLyAgKGMpIENvcHlyaWdodCBGZXJuYW5kbyBMdWlzIENhY2Npb2xhIENhcmJhbGxhbCAyMDAwLTIwMDQKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGxpYnJhcnkgaG9tZSBwYWdlIGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbnVtZXJpYy9jb252ZXJzaW9uCi0vLwotLy8gQ29udGFjdCB0aGUgYXV0aG9yIGF0OiBmZXJuYW5kb19jYWNjaW9sYUBob3RtYWlsLmNvbQotLy8gCi0jaWZuZGVmIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9JTlRfRkxPQVRfTUlYVFVSRV9FTlVNX0ZMQ18xMk5PVjIwMDJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9JTlRfRkxPQVRfTUlYVFVSRV9FTlVNX0ZMQ18xMk5PVjIwMDJfSFBQCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBudW1lcmljCi17Ci0gIGVudW0gaW50X2Zsb2F0X21peHR1cmVfZW51bQotICB7Ci0gICAgIGludGVncmFsX3RvX2ludGVncmFsCi0gICAgLGludGVncmFsX3RvX2Zsb2F0Ci0gICAgLGZsb2F0X3RvX2ludGVncmFsCi0gICAgLGZsb2F0X3RvX2Zsb2F0Ci0gIH0gOwotCi19IH0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0OjpudW1lcmljCi0KLSNlbmRpZgotLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vbnVtZXJpY19jYXN0X3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9udW1lcmljX2Nhc3RfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQ5MzY0Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9udW1lcmljX2Nhc3RfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLS8vCi0vLyEgQ29weXJpZ2h0IChjKSAyMDExCi0vLyEgQnJhbmRvbiBLb2huCi0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLSNpZm5kZWYgTkROQk9PU1RfTlVNRVJJQ19DQVNUX1RSQUlUU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfTlVNRVJJQ19DQVNUX1RSQUlUU19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9jb252ZXJ0ZXJfcG9saWNpZXMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbnVtZXJpYyB7Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2UsIHR5cGVuYW1lIEVuYWJsZUlmID0gdm9pZD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciAgICBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPFNvdXJjZT4gICAgICAgICAgIHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OwotCi19fS8vbmFtZXNwYWNlIG5kbmJvb3N0OjpudW1lcmljOwotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9SRUxBWF9CVUlMVF9JTl9DQVNUX1RSQUlUUyApCi0jaW5jbHVkZSA8bmRuYm9vc3QvY3N0ZGludC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9udW1lcmljX2Nhc3RfdHJhaXRzLmhwcD4KLSNlbmRpZi8vIWRlZmluZWQgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX1JFTEFYX0JVSUxUX0lOX0NBU1RfVFJBSVRTCi0KLSNlbmRpZi8vTkROQk9PU1RfTlVNRVJJQ19DQVNUX1RSQUlUU19IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL3NpZ25fbWl4dHVyZV9lbnVtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL3NpZ25fbWl4dHVyZV9lbnVtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmQ0MWRmMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9zaWduX21peHR1cmVfZW51bS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0vLyAgKGMpIENvcHlyaWdodCBGZXJuYW5kbyBMdWlzIENhY2Npb2xhIENhcmJhbGxhbCAyMDAwLTIwMDQKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGxpYnJhcnkgaG9tZSBwYWdlIGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbnVtZXJpYy9jb252ZXJzaW9uCi0vLwotLy8gQ29udGFjdCB0aGUgYXV0aG9yIGF0OiBmZXJuYW5kb19jYWNjaW9sYUBob3RtYWlsLmNvbQotLy8gCi0jaWZuZGVmIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9TSUdOX01JWFRVUkVfRU5VTV9GTENfMTJOT1YyMDAyX0hQUAotI2RlZmluZSBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fU0lHTl9NSVhUVVJFX0VOVU1fRkxDXzEyTk9WMjAwMl9IUFAKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG51bWVyaWMKLXsKLSAgZW51bSBzaWduX21peHR1cmVfZW51bQotICB7Ci0gICAgIHVuc2lnbmVkX3RvX3Vuc2lnbmVkCi0gICAgLHNpZ25lZF90b19zaWduZWQKLSAgICAsc2lnbmVkX3RvX3Vuc2lnbmVkCi0gICAgLHVuc2lnbmVkX3RvX3NpZ25lZAotICB9IDsKLQotfSB9IC8vIG5hbWVzcGFjZSBuZG5ib29zdDo6bnVtZXJpYwotCi0jZW5kaWYKLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL3VkdF9idWlsdGluX21peHR1cmVfZW51bS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi91ZHRfYnVpbHRpbl9taXh0dXJlX2VudW0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YmE0NDFjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL3VkdF9idWlsdGluX21peHR1cmVfZW51bS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0vLyAgKGMpIENvcHlyaWdodCBGZXJuYW5kbyBMdWlzIENhY2Npb2xhIENhcmJhbGxhbCAyMDAwLTIwMDQKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGxpYnJhcnkgaG9tZSBwYWdlIGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbnVtZXJpYy9jb252ZXJzaW9uCi0vLwotLy8gQ29udGFjdCB0aGUgYXV0aG9yIGF0OiBmZXJuYW5kb19jYWNjaW9sYUBob3RtYWlsLmNvbQotLy8gCi0jaWZuZGVmIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9VRFRfQlVJTFRJTl9NSVhUVVJFX0VOVU1fRkxDXzEyTk9WMjAwMl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX1VEVF9CVUlMVElOX01JWFRVUkVfRU5VTV9GTENfMTJOT1YyMDAyX0hQUAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbnVtZXJpYwotewotICBlbnVtIHVkdF9idWlsdGluX21peHR1cmVfZW51bQotICB7Ci0gICAgIGJ1aWx0aW5fdG9fYnVpbHRpbgotICAgICxidWlsdGluX3RvX3VkdAotICAgICx1ZHRfdG9fYnVpbHRpbgotICAgICx1ZHRfdG9fdWR0Ci0gIH0gOwotCi19IH0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0OjpudW1lcmljCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L29wZXJhdG9ycy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L29wZXJhdG9ycy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4MmEwNjkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9vcGVyYXRvcnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTc4ICswLDAgQEAKLS8vICBCb29zdCBvcGVyYXRvcnMuaHBwIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIChDKSBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMsIEplcmVteSBTaWVrLCBEYXJ5bGUgV2Fsa2VyIDE5OTktMjAwMS4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3V0aWxpdHkvb3BlcmF0b3JzLmh0bSBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gIFJldmlzaW9uIEhpc3RvcnkKLS8vICAxNiBEZWMgMTAgTGltaXQgd2FybmluZyBzdXBwcmVzc2lvbiBmb3IgNDI4NCB0byBvbGRlciB2ZXJzaW9ucyBvZiBWQysrCi0vLyAgICAgICAgICAgIChNYXR0aGV3IEJyYWRidXJ5LCBmaXhlcyAjNDQzMikKLS8vICAwNyBBdWcgMDggQWRkZWQgImV1Y2xpZGVhbiIgc3BlbGxpbmcuIChEYW5pZWwgRnJleSkKLS8vICAwMyBBcHIgMDggTWFrZSBzdXJlICJjb252ZXJ0aWJsZSB0byBib29sIiBpcyBzdWZmaWNpZW50Ci0vLyAgICAgICAgICAgIGZvciBUOjpvcGVyYXRvcjwsIGV0Yy4gKERhbmllbCBGcmV5KQotLy8gIDI0IE1heSAwNyBDaGFuZ2VkIGVtcHR5X2Jhc2UgdG8gZGVwZW5kIG9uIFQsIHNlZQotLy8gICAgICAgICAgICBodHRwOi8vc3ZuLmJvb3N0Lm9yZy90cmFjL2Jvb3N0L3RpY2tldC85NzkKLS8vICAyMSBPY3QgMDIgTW9kaWZpZWQgaW1wbGVtZW50YXRpb24gb2Ygb3BlcmF0b3JzIHRvIGFsbG93IGNvbXBpbGVycyB3aXRoIGEKLS8vICAgICAgICAgICAgY29ycmVjdCBuYW1lZCByZXR1cm4gdmFsdWUgb3B0aW1pemF0aW9uIChOUlZPKSB0byBwcm9kdWNlIG9wdGltYWwKLS8vICAgICAgICAgICAgY29kZS4gIChEYW5pZWwgRnJleSkKLS8vICAwMiBEZWMgMDEgQnVnIGZpeGVkIGluIHJhbmRvbV9hY2Nlc3NfaXRlcmF0YWJsZS4gIChIZWxtdXQgWmVpc2VsKQotLy8gIDI4IFNlcCAwMSBGYWN0b3JlZCBvdXQgaXRlcmF0b3Igb3BlcmF0b3IgZ3JvdXBzLiAgKERhcnlsZSBXYWxrZXIpCi0vLyAgMjcgQXVnIDAxICdsZWZ0JyBmb3JtIGZvciBub24gY29tbXV0YXRpdmUgb3BlcmF0b3JzIGFkZGVkOwotLy8gICAgICAgICAgICBhZGRpdGlvbmFsIGNsYXNzZXMgZm9yIGdyb3VwcyBvZiByZWxhdGVkIG9wZXJhdG9ycyBhZGRlZDsKLS8vICAgICAgICAgICAgd29ya2Fyb3VuZCBmb3IgZW1wdHkgYmFzZSBjbGFzcyBvcHRpbWl6YXRpb24KLS8vICAgICAgICAgICAgYnVnIG9mIEdDQyAzLjAgKEhlbG11dCBaZWlzZWwpCi0vLyAgMjUgSnVuIDAxIG91dHB1dF9pdGVyYXRvcl9oZWxwZXIgY2hhbmdlczogcmVtb3ZlZCBkZWZhdWx0IHRlbXBsYXRlIAotLy8gICAgICAgICAgICBwYXJhbWV0ZXJzLCBhZGRlZCBzdXBwb3J0IGZvciBzZWxmLXByb3h5aW5nLCBhZGRpdGlvbmFsIAotLy8gICAgICAgICAgICBkb2N1bWVudGF0aW9uIGFuZCB0ZXN0cyAoQWxla3NleSBHdXJ0b3ZveSkKLS8vICAyOSBNYXkgMDEgQWRkZWQgb3BlcmF0b3IgY2xhc3NlcyBmb3IgPDwgYW5kID4+LiAgQWRkZWQgaW5wdXQgYW5kIG91dHB1dAotLy8gICAgICAgICAgICBpdGVyYXRvciBoZWxwZXIgY2xhc3Nlcy4gIEFkZGVkIGNsYXNzZXMgdG8gY29ubmVjdCBlcXVhbGl0eSBhbmQKLS8vICAgICAgICAgICAgcmVsYXRpb25hbCBvcGVyYXRvcnMuICBBZGRlZCBjbGFzc2VzIGZvciBncm91cHMgb2YgcmVsYXRlZAotLy8gICAgICAgICAgICBvcGVyYXRvcnMuICBSZWltcGxlbWVudGVkIGV4YW1wbGUgb3BlcmF0b3IgYW5kIGl0ZXJhdG9yIGhlbHBlcgotLy8gICAgICAgICAgICBjbGFzc2VzIGluIHRlcm1zIG9mIHRoZSBuZXcgZ3JvdXBzLiAgKERhcnlsZSBXYWxrZXIsIHdpdGggaGVscAotLy8gICAgICAgICAgICBmcm9tIEFsZXh5IEd1cnRvdm95KQotLy8gIDExIEZlYiAwMSBGaXhlZCBidWdzIGluIHRoZSBpdGVyYXRvciBoZWxwZXJzIHdoaWNoIHByZXZlbnRlZCBleHBsaWNpdGx5Ci0vLyAgICAgICAgICAgIHN1cHBsaWVkIGFyZ3VtZW50cyBmcm9tIGFjdHVhbGx5IGJlaW5nIHVzZWQgKERhdmUgQWJyYWhhbXMpCi0vLyAgMDQgSnVsIDAwIEZpeGVkIE5PX09QRVJBVE9SU19JTl9OQU1FU1BBQ0UgYnVncywgbWFqb3IgY2xlYW51cCBhbmQKLS8vICAgICAgICAgICAgcmVmYWN0b3Jpbmcgb2YgY29tcGlsZXIgd29ya2Fyb3VuZHMsIGFkZGl0aW9uYWwgZG9jdW1lbnRhdGlvbgotLy8gICAgICAgICAgICAoQWxleHkgR3VydG92b3kgYW5kIE1hcmsgUm9kZ2VycyB3aXRoIHNvbWUgaGVscCBhbmQgcHJvbXB0aW5nIGZyb20KLS8vICAgICAgICAgICAgRGF2ZSBBYnJhaGFtcykgCi0vLyAgMjggSnVuIDAwIEdlbmVyYWwgY2xlYW51cCBhbmQgaW50ZWdyYXRpb24gb2YgYnVnZml4ZXMgZnJvbSBNYXJrIFJvZGdlcnMgYW5kCi0vLyAgICAgICAgICAgIEplcmVteSBTaWVrIChEYXZlIEFicmFoYW1zKQotLy8gIDIwIEp1biAwMCBDaGFuZ2VzIHRvIGFjY29tbW9kYXRlIEJvcmxhbmQgQysrQnVpbGRlciA0IGFuZCBCb3JsYW5kIEMrKyA1LjUKLS8vICAgICAgICAgICAgKE1hcmsgUm9kZ2VycykKLS8vICAyMCBKdW4gMDAgTWlub3IgZml4ZXMgdG8gdGhlIHByaW9yIHJldmlzaW9uIChBbGVrc2V5IEd1cnRvdm95KQotLy8gIDEwIEp1biAwMCBTdXBwb3J0IGZvciB0aGUgYmFzZSBjbGFzcyBjaGFpbmluZyB0ZWNobmlxdWUgd2FzIGFkZGVkCi0vLyAgICAgICAgICAgIChBbGVrc2V5IEd1cnRvdm95KS4gU2VlIGRvY3VtZW50YXRpb24gYW5kIHRoZSBjb21tZW50cyBiZWxvdyAKLS8vICAgICAgICAgICAgZm9yIHRoZSBkZXRhaWxzLiAKLS8vICAxMiBEZWMgOTkgSW5pdGlhbCB2ZXJzaW9uIHdpdGggaXRlcmF0b3Igb3BlcmF0b3JzIChKZXJlbXkgU2llaykKLS8vICAxOCBOb3YgOTkgQ2hhbmdlIG5hbWUgImRpdmlkZWFibGUiIHRvICJkaXZpZGFibGUiLCByZW1vdmUgdW5uZWNlc3NhcnkKLS8vICAgICAgICAgICAgc3BlY2lhbGl6YXRpb25zIG9mIGRpdmlkYWJsZSwgc3VidHJhY3RhYmxlLCBtb2RhYmxlIChFZCBCcmV5KSAKLS8vICAxNyBOb3YgOTkgQWRkIGNvbW1lbnRzIChCZW1hbiBEYXdlcykKLS8vICAgICAgICAgICAgUmVtb3ZlIHVubmVjZXNzYXJ5IHNwZWNpYWxpemF0aW9uIG9mIG9wZXJhdG9yczw+IChFZCBCcmV5KQotLy8gIDE1IE5vdiA5OSBGaXggbGVzc190aGFuX2NvbXBhcmFibGU8VCxVPiBzZWNvbmQgb3BlcmFuZCB0eXBlIGZvciBmaXJzdCB0d28KLS8vICAgICAgICAgICAgb3BlcmF0b3JzLihCZW1hbiBEYXdlcykKLS8vICAxMiBOb3YgOTkgQWRkIG9wZXJhdG9ycyB0ZW1wbGF0ZXMgKEVkIEJyZXkpCi0vLyAgMTEgTm92IDk5IEFkZCBzaW5nbGUgdGVtcGxhdGUgcGFyYW1ldGVyIHZlcnNpb24gZm9yIGNvbXBpbGVycyB3aXRob3V0Ci0vLyAgICAgICAgICAgIHBhcnRpYWwgc3BlY2lhbGl6YXRpb24gKEJlbWFuIERhd2VzKQotLy8gIDEwIE5vdiA5OSBJbml0aWFsIHZlcnNpb24KLQotLy8gMTAgSnVuIDAwOgotLy8gQW4gYWRkaXRpb25hbCBvcHRpb25hbCB0ZW1wbGF0ZSBwYXJhbWV0ZXIgd2FzIGFkZGVkIHRvIG1vc3Qgb2YgCi0vLyBvcGVyYXRvciB0ZW1wbGF0ZXMgdG8gc3VwcG9ydCB0aGUgYmFzZSBjbGFzcyBjaGFpbmluZyB0ZWNobmlxdWUgKHNlZSAKLS8vIGRvY3VtZW50YXRpb24gZm9yIHRoZSBkZXRhaWxzKS4gVW5mb3J0dW5hdGVseSwgYSBzdHJhaWdodGZvcndhcmQKLS8vIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgY2hhbmdlIHdvdWxkIGhhdmUgYnJva2VuIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUKLS8vIHByZXZpb3VzIHZlcnNpb24gb2YgdGhlIGxpYnJhcnkgYnkgbWFraW5nIGl0IGltcG9zc2libGUgdG8gdXNlIHRoZSBzYW1lCi0vLyB0ZW1wbGF0ZSBuYW1lIChlLmcuICdhZGRhYmxlJykgZm9yIGJvdGggdGhlIDEtIGFuZCAyLWFyZ3VtZW50IHZlcnNpb25zIG9mCi0vLyBhbiBvcGVyYXRvciB0ZW1wbGF0ZS4gVGhpcyBpbXBsZW1lbnRhdGlvbiBzb2x2ZXMgdGhlIGJhY2t3YXJkLWNvbXBhdGliaWxpdHkKLS8vIGlzc3VlIGF0IHRoZSBjb3N0IG9mIHNvbWUgc2ltcGxpY2l0eS4KLS8vCi0vLyBPbmUgb2YgdGhlIGNvbXBsaWNhdGlvbnMgaXMgYW4gZXhpc3RlbmNlIG9mIHNwZWNpYWwgYXV4aWxpYXJ5IGNsYXNzIHRlbXBsYXRlCi0vLyAnaXNfY2hhaW5lZF9iYXNlPD4nIChzZWUgJ2RldGFpbCcgbmFtZXNwYWNlIGJlbG93KSwgd2hpY2ggaXMgdXNlZAotLy8gdG8gZGV0ZXJtaW5lIHdoZXRoZXIgaXRzIHRlbXBsYXRlIHBhcmFtZXRlciBpcyBhIGxpYnJhcnkncyBvcGVyYXRvciB0ZW1wbGF0ZQotLy8gb3Igbm90LiBZb3UgaGF2ZSB0byBzcGVjaWFsaXplICdpc19jaGFpbmVkX2Jhc2U8PicgZm9yIGVhY2ggbmV3IAotLy8gb3BlcmF0b3IgdGVtcGxhdGUgeW91IGFkZCB0byB0aGUgbGlicmFyeS4KLS8vCi0vLyBIb3dldmVyLCBtb3N0IG9mIHRoZSBub24tdHJpdmlhbCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGFyZSBoaWRkZW4gYmVoaW5kIAotLy8gc2V2ZXJhbCBsb2NhbCBtYWNyb3MgZGVmaW5lZCBiZWxvdywgYW5kIGFzIHNvb24gYXMgeW91IHVuZGVyc3RhbmQgdGhlbSwKLS8vIHlvdSB1bmRlcnN0YW5kIHRoZSB3aG9sZSBsaWJyYXJ5IGltcGxlbWVudGF0aW9uLiAKLQotI2lmbmRlZiBORE5CT09TVF9PUEVSQVRPUlNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX09QRVJBVE9SU19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2lmIGRlZmluZWQoX19zZ2kpICYmICFkZWZpbmVkKF9fR05VQ19fKQotIyAgIHByYWdtYSBzZXQgd29mZiAxMjM0Ci0jZW5kaWYKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxNjAwKQotIyAgIHByYWdtYSB3YXJuaW5nKCBkaXNhYmxlIDogNDI4NCApIC8vIGNvbXBsYWludCBhYm91dCByZXR1cm4gdHlwZSBvZiAKLSNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcGVyYXRvci0+IG5vdCBiZWdpbiBhIFVEVAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBlbXB0eV9iYXNlIHsKLQotLy8gSGVsbXV0IFplaXNlbCwgZW1wdHkgYmFzZSBjbGFzcyBvcHRpbWl6YXRpb24gYnVnIHdpdGggR0NDIDMuMC4wCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX189PTMgJiYgX19HTlVDX01JTk9SX189PTAgJiYgX19HTlVfUEFUQ0hMRVZFTF9fPT0wCi0gIGJvb2wgZHVtbXk7IAotI2VuZGlmCi0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy8gSW4gdGhpcyBzZWN0aW9uIHdlIHN1cHBseSB0aGUgeHh4eDEgYW5kIHh4eHgyIGZvcm1zIG9mIHRoZSBvcGVyYXRvcgotLy8gdGVtcGxhdGVzLCB3aGljaCBhcmUgZXhwbGljaXRseSB0YXJnZXRlZCBhdCB0aGUgMS10eXBlLWFyZ3VtZW50IGFuZAotLy8gMi10eXBlLWFyZ3VtZW50IG9wZXJhdG9yIGZvcm1zLCByZXNwZWN0aXZlbHkuIFNvbWUgY29tcGlsZXJzIGdldCBjb25mdXNlZAotLy8gd2hlbiBpbmxpbmUgZnJpZW5kIGZ1bmN0aW9ucyBhcmUgb3ZlcmxvYWRlZCBpbiBuYW1lc3BhY2VzIG90aGVyIHRoYW4gdGhlCi0vLyBnbG9iYWwgbmFtZXNwYWNlLiBXaGVuIE5ETkJPT1NUX05PX09QRVJBVE9SU19JTl9OQU1FU1BBQ0UgaXMgZGVmaW5lZCwgYWxsIG9mCi0vLyB0aGVzZSB0ZW1wbGF0ZXMgbXVzdCBnbyBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4KLQotI2lmbmRlZiBORE5CT09TVF9OT19PUEVSQVRPUlNfSU5fTkFNRVNQQUNFCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSNlbmRpZgotCi0vLyAgQmFzaWMgb3BlcmF0b3IgY2xhc3NlcyAoY29udHJpYnV0ZWQgYnkgRGF2ZSBBYnJhaGFtcykgLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIE5vdGUgdGhhdCBmcmllbmQgZnVuY3Rpb25zIGRlZmluZWQgaW4gYSBjbGFzcyBhcmUgaW1wbGljaXRseSBpbmxpbmUuCi0vLyAgU2VlIHRoZSBDKysgc3RkLCAxMS40IFtjbGFzcy5mcmllbmRdIHBhcmFncmFwaCA1Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBsZXNzX3RoYW5fY29tcGFyYWJsZTIgOiBCCi17Ci0gICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPD0oY29uc3QgVCYgeCwgY29uc3QgVSYgeSkgeyByZXR1cm4gIXN0YXRpY19jYXN0PGJvb2w+KHggPiB5KTsgfQotICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFQmIHgsIGNvbnN0IFUmIHkpIHsgcmV0dXJuICFzdGF0aWNfY2FzdDxib29sPih4IDwgeSk7IH0KLSAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I+KGNvbnN0IFUmIHgsIGNvbnN0IFQmIHkpICB7IHJldHVybiB5IDwgeDsgfQotICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcjwoY29uc3QgVSYgeCwgY29uc3QgVCYgeSkgIHsgcmV0dXJuIHkgPiB4OyB9Ci0gICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPD0oY29uc3QgVSYgeCwgY29uc3QgVCYgeSkgeyByZXR1cm4gIXN0YXRpY19jYXN0PGJvb2w+KHkgPCB4KTsgfQotICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFUmIHgsIGNvbnN0IFQmIHkpIHsgcmV0dXJuICFzdGF0aWNfY2FzdDxib29sPih5ID4geCk7IH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBsZXNzX3RoYW5fY29tcGFyYWJsZTEgOiBCCi17Ci0gICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPihjb25zdCBUJiB4LCBjb25zdCBUJiB5KSAgeyByZXR1cm4geSA8IHg7IH0KLSAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I8PShjb25zdCBUJiB4LCBjb25zdCBUJiB5KSB7IHJldHVybiAhc3RhdGljX2Nhc3Q8Ym9vbD4oeSA8IHgpOyB9Ci0gICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPj0oY29uc3QgVCYgeCwgY29uc3QgVCYgeSkgeyByZXR1cm4gIXN0YXRpY19jYXN0PGJvb2w+KHggPCB5KTsgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IGVxdWFsaXR5X2NvbXBhcmFibGUyIDogQgotewotICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFUmIHksIGNvbnN0IFQmIHgpIHsgcmV0dXJuIHggPT0geTsgfQotICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFUmIHksIGNvbnN0IFQmIHgpIHsgcmV0dXJuICFzdGF0aWNfY2FzdDxib29sPih4ID09IHkpOyB9Ci0gICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgVCYgeSwgY29uc3QgVSYgeCkgeyByZXR1cm4gIXN0YXRpY19jYXN0PGJvb2w+KHkgPT0geCk7IH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBlcXVhbGl0eV9jb21wYXJhYmxlMSA6IEIKLXsKLSAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUJiB4LCBjb25zdCBUJiB5KSB7IHJldHVybiAhc3RhdGljX2Nhc3Q8Ym9vbD4oeCA9PSB5KTsgfQotfTsKLQotLy8gQSBtYWNybyB3aGljaCBwcm9kdWNlcyAibmFtZV8ybGVmdCIgZnJvbSAibmFtZSIuCi0jZGVmaW5lIE5ETkJPT1NUX09QRVJBVE9SMl9MRUZUKG5hbWUpIG5hbWUjIzIjI18jI2xlZnQKLQotLy8gIE5SVk8tZnJpZW5kbHkgaW1wbGVtZW50YXRpb24gKGNvbnRyaWJ1dGVkIGJ5IERhbmllbCBGcmV5KSAtLS0tLS0tLS0tLS0tLS0vLwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTlJWTykgfHwgZGVmaW5lZChORE5CT09TVF9GT1JDRV9TWU1NRVRSSUNfT1BFUkFUT1JTKQotCi0vLyBUaGlzIGlzIHRoZSBvcHRpbWFsIGltcGxlbWVudGF0aW9uIGZvciBJU08vQU5TSSBDKyssCi0vLyBidXQgaXQgcmVxdWlyZXMgdGhlIGNvbXBpbGVyIHRvIGltcGxlbWVudCB0aGUgTlJWTy4KLS8vIElmIHRoZSBjb21waWxlciBoYXMgbm8gTlJWTywgdGhpcyBpcyB0aGUgYmVzdCBzeW1tZXRyaWMKLS8vIGltcGxlbWVudGF0aW9uIGF2YWlsYWJsZS4KLQotI2RlZmluZSBORE5CT09TVF9CSU5BUllfT1BFUkFUT1JfQ09NTVVUQVRJVkUoIE5BTUUsIE9QICkgICAgICAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPiAgICAgICAgXAotc3RydWN0IE5BTUUjIzIgOiBCICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBmcmllbmQgVCBvcGVyYXRvciBPUCggY29uc3QgVCYgbGhzLCBjb25zdCBVJiByaHMgKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHsgVCBucnYoIGxocyApOyBucnYgT1AjIz0gcmhzOyByZXR1cm4gbnJ2OyB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBmcmllbmQgVCBvcGVyYXRvciBPUCggY29uc3QgVSYgbGhzLCBjb25zdCBUJiByaHMgKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHsgVCBucnYoIHJocyApOyBucnYgT1AjIz0gbGhzOyByZXR1cm4gbnJ2OyB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPiAgICAgICAgICAgICAgICAgXAotc3RydWN0IE5BTUUjIzEgOiBCICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBmcmllbmQgVCBvcGVyYXRvciBPUCggY29uc3QgVCYgbGhzLCBjb25zdCBUJiByaHMgKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHsgVCBucnYoIGxocyApOyBucnYgT1AjIz0gcmhzOyByZXR1cm4gbnJ2OyB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfTsKLQotI2RlZmluZSBORE5CT09TVF9CSU5BUllfT1BFUkFUT1JfTk9OX0NPTU1VVEFUSVZFKCBOQU1FLCBPUCApICAgICAgICAgICAgICAgXAotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPiAgXAotc3RydWN0IE5BTUUjIzIgOiBCICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBmcmllbmQgVCBvcGVyYXRvciBPUCggY29uc3QgVCYgbGhzLCBjb25zdCBVJiByaHMgKSAgICAgICAgICAgICAgICAgICAgXAotICAgIHsgVCBucnYoIGxocyApOyBucnYgT1AjIz0gcmhzOyByZXR1cm4gbnJ2OyB9ICAgICAgICAgICAgICAgICAgICAgICAgXAotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPiAgXAotc3RydWN0IE5ETkJPT1NUX09QRVJBVE9SMl9MRUZUKE5BTUUpIDogQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBmcmllbmQgVCBvcGVyYXRvciBPUCggY29uc3QgVSYgbGhzLCBjb25zdCBUJiByaHMgKSAgICAgICAgICAgICAgICAgICAgXAotICAgIHsgVCBucnYoIGxocyApOyBucnYgT1AjIz0gcmhzOyByZXR1cm4gbnJ2OyB9ICAgICAgICAgICAgICAgICAgICAgICAgXAotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPiAgICAgICAgICAgXAotc3RydWN0IE5BTUUjIzEgOiBCICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBmcmllbmQgVCBvcGVyYXRvciBPUCggY29uc3QgVCYgbGhzLCBjb25zdCBUJiByaHMgKSAgICAgICAgICAgICAgICAgICAgXAotICAgIHsgVCBucnYoIGxocyApOyBucnYgT1AjIz0gcmhzOyByZXR1cm4gbnJ2OyB9ICAgICAgICAgICAgICAgICAgICAgICAgXAotfTsKLQotI2Vsc2UgLy8gZGVmaW5lZChORE5CT09TVF9IQVNfTlJWTykgfHwgZGVmaW5lZChORE5CT09TVF9GT1JDRV9TWU1NRVRSSUNfT1BFUkFUT1JTKQotCi0vLyBGb3IgY29tcGlsZXJzIHdpdGhvdXQgTlJWTyB0aGUgZm9sbG93aW5nIGNvZGUgaXMgb3B0aW1hbCwgYnV0IG5vdAotLy8gc3ltbWV0cmljISAgTm90ZSB0aGF0IHRoZSBpbXBsZW1lbnRhdGlvbiBvZgotLy8gTkROQk9PU1RfT1BFUkFUT1IyX0xFRlQoTkFNRSkgb25seSBsb29rcyBjb29sLCBidXQgZG9lc24ndCBwcm92aWRlCi0vLyBvcHRpbWl6YXRpb24gb3Bwb3J0dW5pdGllcyB0byB0aGUgY29tcGlsZXIgOikKLQotI2RlZmluZSBORE5CT09TVF9CSU5BUllfT1BFUkFUT1JfQ09NTVVUQVRJVkUoIE5BTUUsIE9QICkgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPiAgXAotc3RydWN0IE5BTUUjIzIgOiBCICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBmcmllbmQgVCBvcGVyYXRvciBPUCggVCBsaHMsIGNvbnN0IFUmIHJocyApIHsgcmV0dXJuIGxocyBPUCMjPSByaHM7IH0gXAotICBmcmllbmQgVCBvcGVyYXRvciBPUCggY29uc3QgVSYgbGhzLCBUIHJocyApIHsgcmV0dXJuIHJocyBPUCMjPSBsaHM7IH0gXAotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPiAgICAgICAgICAgXAotc3RydWN0IE5BTUUjIzEgOiBCICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBmcmllbmQgVCBvcGVyYXRvciBPUCggVCBsaHMsIGNvbnN0IFQmIHJocyApIHsgcmV0dXJuIGxocyBPUCMjPSByaHM7IH0gXAotfTsKLQotI2RlZmluZSBORE5CT09TVF9CSU5BUllfT1BFUkFUT1JfTk9OX0NPTU1VVEFUSVZFKCBOQU1FLCBPUCApICAgICAgICAgICAgICAgXAotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPiAgXAotc3RydWN0IE5BTUUjIzIgOiBCICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBmcmllbmQgVCBvcGVyYXRvciBPUCggVCBsaHMsIGNvbnN0IFUmIHJocyApIHsgcmV0dXJuIGxocyBPUCMjPSByaHM7IH0gXAotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPiAgXAotc3RydWN0IE5ETkJPT1NUX09QRVJBVE9SMl9MRUZUKE5BTUUpIDogQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBmcmllbmQgVCBvcGVyYXRvciBPUCggY29uc3QgVSYgbGhzLCBjb25zdCBUJiByaHMgKSAgICAgICAgICAgICAgICAgICAgXAotICAgIHsgcmV0dXJuIFQoIGxocyApIE9QIyM9IHJoczsgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPiAgICAgICAgICAgXAotc3RydWN0IE5BTUUjIzEgOiBCICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBmcmllbmQgVCBvcGVyYXRvciBPUCggVCBsaHMsIGNvbnN0IFQmIHJocyApIHsgcmV0dXJuIGxocyBPUCMjPSByaHM7IH0gXAotfTsKLQotI2VuZGlmIC8vIGRlZmluZWQoTkROQk9PU1RfSEFTX05SVk8pIHx8IGRlZmluZWQoTkROQk9PU1RfRk9SQ0VfU1lNTUVUUklDX09QRVJBVE9SUykKLQotTkROQk9PU1RfQklOQVJZX09QRVJBVE9SX0NPTU1VVEFUSVZFKCBtdWx0aXBsaWFibGUsICogKQotTkROQk9PU1RfQklOQVJZX09QRVJBVE9SX0NPTU1VVEFUSVZFKCBhZGRhYmxlLCArICkKLU5ETkJPT1NUX0JJTkFSWV9PUEVSQVRPUl9OT05fQ09NTVVUQVRJVkUoIHN1YnRyYWN0YWJsZSwgLSApCi1ORE5CT09TVF9CSU5BUllfT1BFUkFUT1JfTk9OX0NPTU1VVEFUSVZFKCBkaXZpZGFibGUsIC8gKQotTkROQk9PU1RfQklOQVJZX09QRVJBVE9SX05PTl9DT01NVVRBVElWRSggbW9kYWJsZSwgJSApCi1ORE5CT09TVF9CSU5BUllfT1BFUkFUT1JfQ09NTVVUQVRJVkUoIHhvcmFibGUsIF4gKQotTkROQk9PU1RfQklOQVJZX09QRVJBVE9SX0NPTU1VVEFUSVZFKCBhbmRhYmxlLCAmICkKLU5ETkJPT1NUX0JJTkFSWV9PUEVSQVRPUl9DT01NVVRBVElWRSggb3JhYmxlLCB8ICkKLQotI3VuZGVmIE5ETkJPT1NUX0JJTkFSWV9PUEVSQVRPUl9DT01NVVRBVElWRQotI3VuZGVmIE5ETkJPT1NUX0JJTkFSWV9PUEVSQVRPUl9OT05fQ09NTVVUQVRJVkUKLSN1bmRlZiBORE5CT09TVF9PUEVSQVRPUjJfTEVGVAotCi0vLyAgaW5jcmVtZW50YWJsZSBhbmQgZGVjcmVtZW50YWJsZSBjb250cmlidXRlZCBieSBKZXJlbXkgU2llawotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgaW5jcmVtZW50YWJsZSA6IEIKLXsKLSAgZnJpZW5kIFQgb3BlcmF0b3IrKyhUJiB4LCBpbnQpCi0gIHsKLSAgICBpbmNyZW1lbnRhYmxlX3R5cGUgbnJ2KHgpOwotICAgICsreDsKLSAgICByZXR1cm4gbnJ2OwotICB9Ci1wcml2YXRlOiAvLyBUaGUgdXNlIG9mIHRoaXMgdHlwZWRlZiB3b3JrcyBhcm91bmQgYSBCb3JsYW5kIGJ1ZwotICB0eXBlZGVmIFQgaW5jcmVtZW50YWJsZV90eXBlOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IGRlY3JlbWVudGFibGUgOiBCCi17Ci0gIGZyaWVuZCBUIG9wZXJhdG9yLS0oVCYgeCwgaW50KQotICB7Ci0gICAgZGVjcmVtZW50YWJsZV90eXBlIG5ydih4KTsKLSAgICAtLXg7Ci0gICAgcmV0dXJuIG5ydjsKLSAgfQotcHJpdmF0ZTogLy8gVGhlIHVzZSBvZiB0aGlzIHR5cGVkZWYgd29ya3MgYXJvdW5kIGEgQm9ybGFuZCBidWcKLSAgdHlwZWRlZiBUIGRlY3JlbWVudGFibGVfdHlwZTsKLX07Ci0KLS8vICBJdGVyYXRvciBvcGVyYXRvciBjbGFzc2VzIChjb250cmlidXRlZCBieSBKZXJlbXkgU2llaykgLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFAsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IGRlcmVmZXJlbmNlYWJsZSA6IEIKLXsKLSAgUCBvcGVyYXRvci0+KCkgY29uc3QKLSAgeyAKLSAgICByZXR1cm4gJipzdGF0aWNfY2FzdDxjb25zdCBUJj4oKnRoaXMpOyAKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEksIGNsYXNzIFIsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IGluZGV4YWJsZSA6IEIKLXsKLSAgUiBvcGVyYXRvcltdKEkgbikgY29uc3QKLSAgewotICAgIHJldHVybiAqKHN0YXRpY19jYXN0PGNvbnN0IFQmPigqdGhpcykgKyBuKTsKLSAgfQotfTsKLQotLy8gIE1vcmUgb3BlcmF0b3IgY2xhc3NlcyAoY29udHJpYnV0ZWQgYnkgRGFyeWxlIFdhbGtlcikgLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotLy8gIChOUlZPLWZyaWVuZGx5IGltcGxlbWVudGF0aW9uIGNvbnRyaWJ1dGVkIGJ5IERhbmllbCBGcmV5KSAtLS0tLS0tLS0tLS0tLS0vLwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTlJWTykgfHwgZGVmaW5lZChORE5CT09TVF9GT1JDRV9TWU1NRVRSSUNfT1BFUkFUT1JTKQotCi0jZGVmaW5lIE5ETkJPT1NUX0JJTkFSWV9PUEVSQVRPUiggTkFNRSwgT1AgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+ICAgICAgICBcCi1zdHJ1Y3QgTkFNRSMjMiA6IEIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGZyaWVuZCBUIG9wZXJhdG9yIE9QKCBjb25zdCBUJiBsaHMsIGNvbnN0IFUmIHJocyApICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgeyBUIG5ydiggbGhzICk7IG5ydiBPUCMjPSByaHM7IHJldHVybiBucnY7IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+ICAgICAgICAgICAgICAgICBcCi1zdHJ1Y3QgTkFNRSMjMSA6IEIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGZyaWVuZCBUIG9wZXJhdG9yIE9QKCBjb25zdCBUJiBsaHMsIGNvbnN0IFQmIHJocyApICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgeyBUIG5ydiggbGhzICk7IG5ydiBPUCMjPSByaHM7IHJldHVybiBucnY7IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi19OwotCi0jZWxzZSAvLyBkZWZpbmVkKE5ETkJPT1NUX0hBU19OUlZPKSB8fCBkZWZpbmVkKE5ETkJPT1NUX0ZPUkNFX1NZTU1FVFJJQ19PUEVSQVRPUlMpCi0KLSNkZWZpbmUgTkROQk9PU1RfQklOQVJZX09QRVJBVE9SKCBOQU1FLCBPUCApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4gICAgICAgIFwKLXN0cnVjdCBOQU1FIyMyIDogQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZnJpZW5kIFQgb3BlcmF0b3IgT1AoIFQgbGhzLCBjb25zdCBVJiByaHMgKSB7IHJldHVybiBsaHMgT1AjIz0gcmhzOyB9ICAgICAgIFwKLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4gICAgICAgICAgICAgICAgIFwKLXN0cnVjdCBOQU1FIyMxIDogQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZnJpZW5kIFQgb3BlcmF0b3IgT1AoIFQgbGhzLCBjb25zdCBUJiByaHMgKSB7IHJldHVybiBsaHMgT1AjIz0gcmhzOyB9ICAgICAgIFwKLX07Ci0KLSNlbmRpZiAvLyBkZWZpbmVkKE5ETkJPT1NUX0hBU19OUlZPKSB8fCBkZWZpbmVkKE5ETkJPT1NUX0ZPUkNFX1NZTU1FVFJJQ19PUEVSQVRPUlMpCi0KLU5ETkJPT1NUX0JJTkFSWV9PUEVSQVRPUiggbGVmdF9zaGlmdGFibGUsIDw8ICkKLU5ETkJPT1NUX0JJTkFSWV9PUEVSQVRPUiggcmlnaHRfc2hpZnRhYmxlLCA+PiApCi0KLSN1bmRlZiBORE5CT09TVF9CSU5BUllfT1BFUkFUT1IKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IGVxdWl2YWxlbnQyIDogQgotewotICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFQmIHgsIGNvbnN0IFUmIHkpCi0gIHsKLSAgICByZXR1cm4gIXN0YXRpY19jYXN0PGJvb2w+KHggPCB5KSAmJiAhc3RhdGljX2Nhc3Q8Ym9vbD4oeCA+IHkpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgZXF1aXZhbGVudDEgOiBCCi17Ci0gIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgVCZ4LCBjb25zdCBUJnkpCi0gIHsKLSAgICByZXR1cm4gIXN0YXRpY19jYXN0PGJvb2w+KHggPCB5KSAmJiAhc3RhdGljX2Nhc3Q8Ym9vbD4oeSA8IHgpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgcGFydGlhbGx5X29yZGVyZWQyIDogQgotewotICBmcmllbmQgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFQmIHgsIGNvbnN0IFUmIHkpCi0gICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oeCA8IHkpIHx8IHN0YXRpY19jYXN0PGJvb2w+KHggPT0geSk7IH0KLSAgZnJpZW5kIGJvb2wgb3BlcmF0b3I+PShjb25zdCBUJiB4LCBjb25zdCBVJiB5KQotICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KHggPiB5KSB8fCBzdGF0aWNfY2FzdDxib29sPih4ID09IHkpOyB9Ci0gIGZyaWVuZCBib29sIG9wZXJhdG9yPihjb25zdCBVJiB4LCBjb25zdCBUJiB5KQotICAgIHsgcmV0dXJuIHkgPCB4OyB9Ci0gIGZyaWVuZCBib29sIG9wZXJhdG9yPChjb25zdCBVJiB4LCBjb25zdCBUJiB5KQotICAgIHsgcmV0dXJuIHkgPiB4OyB9Ci0gIGZyaWVuZCBib29sIG9wZXJhdG9yPD0oY29uc3QgVSYgeCwgY29uc3QgVCYgeSkKLSAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxib29sPih5ID4geCkgfHwgc3RhdGljX2Nhc3Q8Ym9vbD4oeSA9PSB4KTsgfQotICBmcmllbmQgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFUmIHgsIGNvbnN0IFQmIHkpCi0gICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oeSA8IHgpIHx8IHN0YXRpY19jYXN0PGJvb2w+KHkgPT0geCk7IH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBwYXJ0aWFsbHlfb3JkZXJlZDEgOiBCCi17Ci0gIGZyaWVuZCBib29sIG9wZXJhdG9yPihjb25zdCBUJiB4LCBjb25zdCBUJiB5KQotICAgIHsgcmV0dXJuIHkgPCB4OyB9Ci0gIGZyaWVuZCBib29sIG9wZXJhdG9yPD0oY29uc3QgVCYgeCwgY29uc3QgVCYgeSkKLSAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxib29sPih4IDwgeSkgfHwgc3RhdGljX2Nhc3Q8Ym9vbD4oeCA9PSB5KTsgfQotICBmcmllbmQgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFQmIHgsIGNvbnN0IFQmIHkpCi0gICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oeSA8IHgpIHx8IHN0YXRpY19jYXN0PGJvb2w+KHggPT0geSk7IH0KLX07Ci0KLS8vICBDb21iaW5lZCBvcGVyYXRvciBjbGFzc2VzIChjb250cmlidXRlZCBieSBEYXJ5bGUgV2Fsa2VyKSAtLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IHRvdGFsbHlfb3JkZXJlZDIKLSAgICA6IGxlc3NfdGhhbl9jb21wYXJhYmxlMjxULCBVCi0gICAgLCBlcXVhbGl0eV9jb21wYXJhYmxlMjxULCBVLCBCCi0gICAgICA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCB0b3RhbGx5X29yZGVyZWQxCi0gICAgOiBsZXNzX3RoYW5fY29tcGFyYWJsZTE8VAotICAgICwgZXF1YWxpdHlfY29tcGFyYWJsZTE8VCwgQgotICAgICAgPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgYWRkaXRpdmUyCi0gICAgOiBhZGRhYmxlMjxULCBVCi0gICAgLCBzdWJ0cmFjdGFibGUyPFQsIFUsIEIKLSAgICAgID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IGFkZGl0aXZlMQotICAgIDogYWRkYWJsZTE8VAotICAgICwgc3VidHJhY3RhYmxlMTxULCBCCi0gICAgICA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBtdWx0aXBsaWNhdGl2ZTIKLSAgICA6IG11bHRpcGxpYWJsZTI8VCwgVQotICAgICwgZGl2aWRhYmxlMjxULCBVLCBCCi0gICAgICA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBtdWx0aXBsaWNhdGl2ZTEKLSAgICA6IG11bHRpcGxpYWJsZTE8VAotICAgICwgZGl2aWRhYmxlMTxULCBCCi0gICAgICA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBpbnRlZ2VyX211bHRpcGxpY2F0aXZlMgotICAgIDogbXVsdGlwbGljYXRpdmUyPFQsIFUKLSAgICAsIG1vZGFibGUyPFQsIFUsIEIKLSAgICAgID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IGludGVnZXJfbXVsdGlwbGljYXRpdmUxCi0gICAgOiBtdWx0aXBsaWNhdGl2ZTE8VAotICAgICwgbW9kYWJsZTE8VCwgQgotICAgICAgPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgYXJpdGhtZXRpYzIKLSAgICA6IGFkZGl0aXZlMjxULCBVCi0gICAgLCBtdWx0aXBsaWNhdGl2ZTI8VCwgVSwgQgotICAgICAgPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgYXJpdGhtZXRpYzEKLSAgICA6IGFkZGl0aXZlMTxUCi0gICAgLCBtdWx0aXBsaWNhdGl2ZTE8VCwgQgotICAgICAgPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgaW50ZWdlcl9hcml0aG1ldGljMgotICAgIDogYWRkaXRpdmUyPFQsIFUKLSAgICAsIGludGVnZXJfbXVsdGlwbGljYXRpdmUyPFQsIFUsIEIKLSAgICAgID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IGludGVnZXJfYXJpdGhtZXRpYzEKLSAgICA6IGFkZGl0aXZlMTxUCi0gICAgLCBpbnRlZ2VyX211bHRpcGxpY2F0aXZlMTxULCBCCi0gICAgICA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBiaXR3aXNlMgotICAgIDogeG9yYWJsZTI8VCwgVQotICAgICwgYW5kYWJsZTI8VCwgVQotICAgICwgb3JhYmxlMjxULCBVLCBCCi0gICAgICA+ID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IGJpdHdpc2UxCi0gICAgOiB4b3JhYmxlMTxUCi0gICAgLCBhbmRhYmxlMTxUCi0gICAgLCBvcmFibGUxPFQsIEIKLSAgICAgID4gPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgdW5pdF9zdGVwcGFibGUKLSAgICA6IGluY3JlbWVudGFibGU8VAotICAgICwgZGVjcmVtZW50YWJsZTxULCBCCi0gICAgICA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBzaGlmdGFibGUyCi0gICAgOiBsZWZ0X3NoaWZ0YWJsZTI8VCwgVQotICAgICwgcmlnaHRfc2hpZnRhYmxlMjxULCBVLCBCCi0gICAgICA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBzaGlmdGFibGUxCi0gICAgOiBsZWZ0X3NoaWZ0YWJsZTE8VAotICAgICwgcmlnaHRfc2hpZnRhYmxlMTxULCBCCi0gICAgICA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCByaW5nX29wZXJhdG9yczIKLSAgICA6IGFkZGl0aXZlMjxULCBVCi0gICAgLCBzdWJ0cmFjdGFibGUyX2xlZnQ8VCwgVQotICAgICwgbXVsdGlwbGlhYmxlMjxULCBVLCBCCi0gICAgICA+ID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IHJpbmdfb3BlcmF0b3JzMQotICAgIDogYWRkaXRpdmUxPFQKLSAgICAsIG11bHRpcGxpYWJsZTE8VCwgQgotICAgICAgPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3Qgb3JkZXJlZF9yaW5nX29wZXJhdG9yczIKLSAgICA6IHJpbmdfb3BlcmF0b3JzMjxULCBVCi0gICAgLCB0b3RhbGx5X29yZGVyZWQyPFQsIFUsIEIKLSAgICAgID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IG9yZGVyZWRfcmluZ19vcGVyYXRvcnMxCi0gICAgOiByaW5nX29wZXJhdG9yczE8VAotICAgICwgdG90YWxseV9vcmRlcmVkMTxULCBCCi0gICAgICA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBmaWVsZF9vcGVyYXRvcnMyCi0gICAgOiByaW5nX29wZXJhdG9yczI8VCwgVQotICAgICwgZGl2aWRhYmxlMjxULCBVCi0gICAgLCBkaXZpZGFibGUyX2xlZnQ8VCwgVSwgQgotICAgICAgPiA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBmaWVsZF9vcGVyYXRvcnMxCi0gICAgOiByaW5nX29wZXJhdG9yczE8VAotICAgICwgZGl2aWRhYmxlMTxULCBCCi0gICAgICA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBvcmRlcmVkX2ZpZWxkX29wZXJhdG9yczIKLSAgICA6IGZpZWxkX29wZXJhdG9yczI8VCwgVQotICAgICwgdG90YWxseV9vcmRlcmVkMjxULCBVLCBCCi0gICAgICA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBvcmRlcmVkX2ZpZWxkX29wZXJhdG9yczEKLSAgICA6IGZpZWxkX29wZXJhdG9yczE8VAotICAgICwgdG90YWxseV9vcmRlcmVkMTxULCBCCi0gICAgICA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBldWNsaWRpYW5fcmluZ19vcGVyYXRvcnMyCi0gICAgOiByaW5nX29wZXJhdG9yczI8VCwgVQotICAgICwgZGl2aWRhYmxlMjxULCBVCi0gICAgLCBkaXZpZGFibGUyX2xlZnQ8VCwgVQotICAgICwgbW9kYWJsZTI8VCwgVQotICAgICwgbW9kYWJsZTJfbGVmdDxULCBVLCBCCi0gICAgICA+ID4gPiA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBldWNsaWRpYW5fcmluZ19vcGVyYXRvcnMxCi0gICAgOiByaW5nX29wZXJhdG9yczE8VAotICAgICwgZGl2aWRhYmxlMTxUCi0gICAgLCBtb2RhYmxlMTxULCBCCi0gICAgICA+ID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IG9yZGVyZWRfZXVjbGlkaWFuX3Jpbmdfb3BlcmF0b3JzMgotICAgIDogdG90YWxseV9vcmRlcmVkMjxULCBVCi0gICAgLCBldWNsaWRpYW5fcmluZ19vcGVyYXRvcnMyPFQsIFUsIEIKLSAgICAgID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IG9yZGVyZWRfZXVjbGlkaWFuX3Jpbmdfb3BlcmF0b3JzMQotICAgIDogdG90YWxseV9vcmRlcmVkMTxUCi0gICAgLCBldWNsaWRpYW5fcmluZ19vcGVyYXRvcnMxPFQsIEIKLSAgICAgID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IGV1Y2xpZGVhbl9yaW5nX29wZXJhdG9yczIKLSAgICA6IHJpbmdfb3BlcmF0b3JzMjxULCBVCi0gICAgLCBkaXZpZGFibGUyPFQsIFUKLSAgICAsIGRpdmlkYWJsZTJfbGVmdDxULCBVCi0gICAgLCBtb2RhYmxlMjxULCBVCi0gICAgLCBtb2RhYmxlMl9sZWZ0PFQsIFUsIEIKLSAgICAgID4gPiA+ID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IGV1Y2xpZGVhbl9yaW5nX29wZXJhdG9yczEKLSAgICA6IHJpbmdfb3BlcmF0b3JzMTxUCi0gICAgLCBkaXZpZGFibGUxPFQKLSAgICAsIG1vZGFibGUxPFQsIEIKLSAgICAgID4gPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3Qgb3JkZXJlZF9ldWNsaWRlYW5fcmluZ19vcGVyYXRvcnMyCi0gICAgOiB0b3RhbGx5X29yZGVyZWQyPFQsIFUKLSAgICAsIGV1Y2xpZGVhbl9yaW5nX29wZXJhdG9yczI8VCwgVSwgQgotICAgICAgPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3Qgb3JkZXJlZF9ldWNsaWRlYW5fcmluZ19vcGVyYXRvcnMxCi0gICAgOiB0b3RhbGx5X29yZGVyZWQxPFQKLSAgICAsIGV1Y2xpZGVhbl9yaW5nX29wZXJhdG9yczE8VCwgQgotICAgICAgPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgaW5wdXRfaXRlcmF0YWJsZQotICAgIDogZXF1YWxpdHlfY29tcGFyYWJsZTE8VAotICAgICwgaW5jcmVtZW50YWJsZTxUCi0gICAgLCBkZXJlZmVyZW5jZWFibGU8VCwgUCwgQgotICAgICAgPiA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBvdXRwdXRfaXRlcmF0YWJsZQotICAgIDogaW5jcmVtZW50YWJsZTxULCBCCi0gICAgICA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgZm9yd2FyZF9pdGVyYXRhYmxlCi0gICAgOiBpbnB1dF9pdGVyYXRhYmxlPFQsIFAsIEIKLSAgICAgID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBiaWRpcmVjdGlvbmFsX2l0ZXJhdGFibGUKLSAgICA6IGZvcndhcmRfaXRlcmF0YWJsZTxULCBQCi0gICAgLCBkZWNyZW1lbnRhYmxlPFQsIEIKLSAgICAgID4gPiB7fTsKLQotLy8gIFRvIGF2b2lkIHJlcGVhdGVkIGRlcml2YXRpb24gZnJvbSBlcXVhbGl0eV9jb21wYXJhYmxlLAotLy8gIHdoaWNoIGlzIGFuIGluZGlyZWN0IGJhc2UgY2xhc3Mgb2YgYmlkaXJlY3Rpb25hbF9pdGVyYWJsZSwKLS8vICByYW5kb21fYWNjZXNzX2l0ZXJhdGFibGUgbXVzdCBub3QgYmUgZGVyaXZlZCBmcm9tIHRvdGFsbHlfb3JkZXJlZDEKLS8vICBidXQgZnJvbSBsZXNzX3RoYW5fY29tcGFyYWJsZTEgb25seS4gKEhlbG11dCBaZWlzZWwsIDAyLURlYy0yMDAxKQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFAsIGNsYXNzIEQsIGNsYXNzIFIsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IHJhbmRvbV9hY2Nlc3NfaXRlcmF0YWJsZQotICAgIDogYmlkaXJlY3Rpb25hbF9pdGVyYXRhYmxlPFQsIFAKLSAgICAsIGxlc3NfdGhhbl9jb21wYXJhYmxlMTxUCi0gICAgLCBhZGRpdGl2ZTI8VCwgRAotICAgICwgaW5kZXhhYmxlPFQsIEQsIFIsIEIKLSAgICAgID4gPiA+ID4ge307Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fT1BFUkFUT1JTX0lOX05BTUVTUEFDRQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLSNlbmRpZiAvLyBORE5CT09TVF9OT19PUEVSQVRPUlNfSU5fTkFNRVNQQUNFCi0KLQotLy8gTkROQk9PU1RfSU1QT1JUX1RFTVBMQVRFMSAuLiBORE5CT09TVF9JTVBPUlRfVEVNUExBVEU0IC0KLS8vCi0vLyBXaGVuIE5ETkJPT1NUX05PX09QRVJBVE9SU19JTl9OQU1FU1BBQ0UgaXMgZGVmaW5lZCB3ZSBuZWVkIGEgd2F5IHRvIGltcG9ydCBhbgotLy8gb3BlcmF0b3IgdGVtcGxhdGUgaW50byB0aGUgYm9vc3QgbmFtZXNwYWNlLiBORE5CT09TVF9JTVBPUlRfVEVNUExBVEUxIGlzIHVzZWQKLS8vIGZvciBvbmUtYXJndW1lbnQgZm9ybXMgb2Ygb3BlcmF0b3IgdGVtcGxhdGVzOyBORE5CT09TVF9JTVBPUlRfVEVNUExBVEUyIGZvcgotLy8gdHdvLWFyZ3VtZW50IGZvcm1zLiBOb3RlIHRoYXQgdGhlc2UgbWFjcm9zIGV4cGVjdCB0byBiZSBpbnZva2VkIGZyb20gd2l0aGluCi0vLyBib29zdC4KLQotI2lmbmRlZiBORE5CT09TVF9OT19PUEVSQVRPUlNfSU5fTkFNRVNQQUNFCi0KLSAgLy8gVGhlIHRlbXBsYXRlIGlzIGFscmVhZHkgaW4gYm9vc3Qgc28gd2UgaGF2ZSBub3RoaW5nIHRvIGRvLgotIyBkZWZpbmUgTkROQk9PU1RfSU1QT1JUX1RFTVBMQVRFNCh0ZW1wbGF0ZV9uYW1lKQotIyBkZWZpbmUgTkROQk9PU1RfSU1QT1JUX1RFTVBMQVRFMyh0ZW1wbGF0ZV9uYW1lKQotIyBkZWZpbmUgTkROQk9PU1RfSU1QT1JUX1RFTVBMQVRFMih0ZW1wbGF0ZV9uYW1lKQotIyBkZWZpbmUgTkROQk9PU1RfSU1QT1JUX1RFTVBMQVRFMSh0ZW1wbGF0ZV9uYW1lKQotCi0jZWxzZSAvLyBORE5CT09TVF9OT19PUEVSQVRPUlNfSU5fTkFNRVNQQUNFCi0KLSMgIGlmbmRlZiBORE5CT09TVF9OT19VU0lOR19URU1QTEFURQotCi0gICAgIC8vIEJyaW5nIHRoZSBuYW1lcyBpbiB3aXRoIGEgdXNpbmctZGVjbGFyYXRpb24KLSAgICAgLy8gdG8gYXZvaWQgc3RyZXNzaW5nIHRoZSBjb21waWxlci4KLSMgICAgZGVmaW5lIE5ETkJPT1NUX0lNUE9SVF9URU1QTEFURTQodGVtcGxhdGVfbmFtZSkgdXNpbmcgOjp0ZW1wbGF0ZV9uYW1lOwotIyAgICBkZWZpbmUgTkROQk9PU1RfSU1QT1JUX1RFTVBMQVRFMyh0ZW1wbGF0ZV9uYW1lKSB1c2luZyA6OnRlbXBsYXRlX25hbWU7Ci0jICAgIGRlZmluZSBORE5CT09TVF9JTVBPUlRfVEVNUExBVEUyKHRlbXBsYXRlX25hbWUpIHVzaW5nIDo6dGVtcGxhdGVfbmFtZTsKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0lNUE9SVF9URU1QTEFURTEodGVtcGxhdGVfbmFtZSkgdXNpbmcgOjp0ZW1wbGF0ZV9uYW1lOwotCi0jICBlbHNlCi0KLSAgICAgLy8gT3RoZXJ3aXNlLCBiZWNhdXNlIGEgQm9ybGFuZCBDKysgNS41IGJ1ZyBwcmV2ZW50cyBhIHVzaW5nIGRlY2xhcmF0aW9uCi0gICAgIC8vIGZyb20gd29ya2luZywgd2UgYXJlIGZvcmNlZCB0byB1c2UgaW5oZXJpdGFuY2UgZm9yIHRoYXQgY29tcGlsZXIuCi0jICAgIGRlZmluZSBORE5CT09TVF9JTVBPUlRfVEVNUExBVEU0KHRlbXBsYXRlX25hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgViwgY2xhc3MgVywgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+IFwKLSAgICAgc3RydWN0IHRlbXBsYXRlX25hbWUgOiA6OnRlbXBsYXRlX25hbWU8VCwgVSwgViwgVywgQj4ge307Ci0KLSMgICAgZGVmaW5lIE5ETkJPT1NUX0lNUE9SVF9URU1QTEFURTModGVtcGxhdGVfbmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBWLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4gXAotICAgICBzdHJ1Y3QgdGVtcGxhdGVfbmFtZSA6IDo6dGVtcGxhdGVfbmFtZTxULCBVLCBWLCBCPiB7fTsKLQotIyAgICBkZWZpbmUgTkROQk9PU1RfSU1QT1JUX1RFTVBMQVRFMih0ZW1wbGF0ZV9uYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPiBcCi0gICAgIHN0cnVjdCB0ZW1wbGF0ZV9uYW1lIDogOjp0ZW1wbGF0ZV9uYW1lPFQsIFUsIEI+IHt9OwotCi0jICAgIGRlZmluZSBORE5CT09TVF9JTVBPUlRfVEVNUExBVEUxKHRlbXBsYXRlX25hbWUpICAgICAgICAgICAgICAgICAgXAotICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+IFwKLSAgICAgc3RydWN0IHRlbXBsYXRlX25hbWUgOiA6OnRlbXBsYXRlX25hbWU8VCwgQj4ge307Ci0KLSMgIGVuZGlmIC8vIE5ETkJPT1NUX05PX1VTSU5HX1RFTVBMQVRFCi0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19PUEVSQVRPUlNfSU5fTkFNRVNQQUNFCi0KLS8vCi0vLyBIZXJlJ3Mgd2hlcmUgd2UgcHV0IGl0IGFsbCB0b2dldGhlciwgZGVmaW5pbmcgdGhlIHh4eHggZm9ybXMgb2YgdGhlIHRlbXBsYXRlcwotLy8gaW4gbmFtZXNwYWNlIG5kbmJvb3N0LiBXZSBhbHNvIGRlZmluZSBzcGVjaWFsaXphdGlvbnMgb2YgaXNfY2hhaW5lZF9iYXNlPD4gZm9yCi0vLyB0aGUgeHh4eCwgeHh4eDEsIGFuZCB4eHh4MiB0ZW1wbGF0ZXMsIGltcG9ydGluZyB0aGVtIGludG8gbmRuYm9vc3Q6OiBhcwotLy8gbmVjZXNzYXJ5LgotLy8KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0vLyBpc19jaGFpbmVkX2Jhc2U8PiAtIGEgdHJhaXRzIGNsYXNzIHVzZWQgdG8gZGlzdGluZ3Vpc2ggd2hldGhlciBhbiBvcGVyYXRvcgotLy8gdGVtcGxhdGUgYXJndW1lbnQgaXMgYmVpbmcgdXNlZCBmb3IgYmFzZSBjbGFzcyBjaGFpbmluZywgb3IgaXMgc3BlY2lmeWluZyBhCi0vLyAybmQgYXJndW1lbnQgdHlwZS4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLS8vIEEgdHlwZSBwYXJhbWV0ZXIgaXMgdXNlZCBpbnN0ZWFkIG9mIGEgcGxhaW4gYm9vbCBiZWNhdXNlIEJvcmxhbmQncyBjb21waWxlcgotLy8gZGlkbid0IGNvcGUgd2VsbCB3aXRoIHRoZSBtb3JlIG9idmlvdXMgbm9uLXR5cGUgdGVtcGxhdGUgcGFyYW1ldGVyLgotbmFtZXNwYWNlIGRldGFpbCB7Ci0gIHN0cnVjdCB0cnVlX3Qge307Ci0gIHN0cnVjdCBmYWxzZV90IHt9OwotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLS8vIFVuc3BlY2lhbGl6ZWQgdmVyc2lvbiBhc3N1bWVzIHRoYXQgbW9zdCB0eXBlcyBhcmUgbm90IGJlaW5nIHVzZWQgZm9yIGJhc2UKLS8vIGNsYXNzIGNoYWluaW5nLiBXZSBzcGVjaWFsaXplIGZvciB0aGUgb3BlcmF0b3IgdGVtcGxhdGVzIGRlZmluZWQgaW4gdGhpcwotLy8gbGlicmFyeS4KLXRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBpc19jaGFpbmVkX2Jhc2UgewotICB0eXBlZGVmIDo6bmRuYm9vc3Q6OmRldGFpbDo6ZmFsc2VfdCB2YWx1ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vIEltcG9ydCBhIDQtdHlwZS1hcmd1bWVudCBvcGVyYXRvciB0ZW1wbGF0ZSBpbnRvIGJvb3N0IChpZiBuZWNlc3NhcnkpIGFuZAotLy8gcHJvdmlkZSBhIHNwZWNpYWxpemF0aW9uIG9mICdpc19jaGFpbmVkX2Jhc2U8PicgZm9yIGl0LgotIyBkZWZpbmUgTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEU0KHRlbXBsYXRlX25hbWU0KSAgICAgICAgICAgICAgICAgICAgIFwKLSAgTkROQk9PU1RfSU1QT1JUX1RFTVBMQVRFNCh0ZW1wbGF0ZV9uYW1lNCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIHRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIFYsIGNsYXNzIFcsIGNsYXNzIEI+ICAgICAgICAgICAgICAgXAotICBzdHJ1Y3QgaXNfY2hhaW5lZF9iYXNlPCA6Om5kbmJvb3N0Ojp0ZW1wbGF0ZV9uYW1lNDxULCBVLCBWLCBXLCBCPiA+IHsgIFwKLSAgICB0eXBlZGVmIDo6bmRuYm9vc3Q6OmRldGFpbDo6dHJ1ZV90IHZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIH07Ci0KLS8vIEltcG9ydCBhIDMtdHlwZS1hcmd1bWVudCBvcGVyYXRvciB0ZW1wbGF0ZSBpbnRvIGJvb3N0IChpZiBuZWNlc3NhcnkpIGFuZAotLy8gcHJvdmlkZSBhIHNwZWNpYWxpemF0aW9uIG9mICdpc19jaGFpbmVkX2Jhc2U8PicgZm9yIGl0LgotIyBkZWZpbmUgTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUzKHRlbXBsYXRlX25hbWUzKSAgICAgICAgICAgICAgICAgICAgIFwKLSAgTkROQk9PU1RfSU1QT1JUX1RFTVBMQVRFMyh0ZW1wbGF0ZV9uYW1lMykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIHRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIFYsIGNsYXNzIEI+ICAgICAgICAgICAgICAgICAgICAgICAgXAotICBzdHJ1Y3QgaXNfY2hhaW5lZF9iYXNlPCA6Om5kbmJvb3N0Ojp0ZW1wbGF0ZV9uYW1lMzxULCBVLCBWLCBCPiA+IHsgICAgIFwKLSAgICB0eXBlZGVmIDo6bmRuYm9vc3Q6OmRldGFpbDo6dHJ1ZV90IHZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIH07Ci0KLS8vIEltcG9ydCBhIDItdHlwZS1hcmd1bWVudCBvcGVyYXRvciB0ZW1wbGF0ZSBpbnRvIGJvb3N0IChpZiBuZWNlc3NhcnkpIGFuZAotLy8gcHJvdmlkZSBhIHNwZWNpYWxpemF0aW9uIG9mICdpc19jaGFpbmVkX2Jhc2U8PicgZm9yIGl0LgotIyBkZWZpbmUgTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUyKHRlbXBsYXRlX25hbWUyKSAgICAgICAgICAgICAgICAgIFwKLSAgTkROQk9PU1RfSU1QT1JUX1RFTVBMQVRFMih0ZW1wbGF0ZV9uYW1lMikgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIHRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBzdHJ1Y3QgaXNfY2hhaW5lZF9iYXNlPCA6Om5kbmJvb3N0Ojp0ZW1wbGF0ZV9uYW1lMjxULCBVLCBCPiA+IHsgICAgIFwKLSAgICB0eXBlZGVmIDo6bmRuYm9vc3Q6OmRldGFpbDo6dHJ1ZV90IHZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIH07Ci0KLS8vIEltcG9ydCBhIDEtdHlwZS1hcmd1bWVudCBvcGVyYXRvciB0ZW1wbGF0ZSBpbnRvIGJvb3N0IChpZiBuZWNlc3NhcnkpIGFuZAotLy8gcHJvdmlkZSBhIHNwZWNpYWxpemF0aW9uIG9mICdpc19jaGFpbmVkX2Jhc2U8PicgZm9yIGl0LgotIyBkZWZpbmUgTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUxKHRlbXBsYXRlX25hbWUxKSAgICAgICAgICAgICAgICAgIFwKLSAgTkROQk9PU1RfSU1QT1JUX1RFTVBMQVRFMSh0ZW1wbGF0ZV9uYW1lMSkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIHRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBzdHJ1Y3QgaXNfY2hhaW5lZF9iYXNlPCA6Om5kbmJvb3N0Ojp0ZW1wbGF0ZV9uYW1lMTxULCBCPiA+IHsgICAgICAgIFwKLSAgICB0eXBlZGVmIDo6bmRuYm9vc3Q6OmRldGFpbDo6dHJ1ZV90IHZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIH07Ci0KLS8vIE5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKHRlbXBsYXRlX25hbWUpIGRlZmluZXMgdGVtcGxhdGVfbmFtZTw+IHN1Y2ggdGhhdCBpdAotLy8gY2FuIGJlIHVzZWQgZm9yIHNwZWNpZnlpbmcgYm90aCAxLWFyZ3VtZW50IGFuZCAyLWFyZ3VtZW50IGZvcm1zLiBSZXF1aXJlcyB0aGUKLS8vIGV4aXN0ZW5jZSBvZiB0d28gcHJldmlvdXNseSBkZWZpbmVkIGNsYXNzIHRlbXBsYXRlcyBuYW1lZCAnPHRlbXBsYXRlX25hbWU+MScKLS8vIGFuZCAnPHRlbXBsYXRlX25hbWU+Micgd2hpY2ggbXVzdCBpbXBsZW1lbnQgdGhlIGNvcnJlc3BvbmRpbmcgMS0gYW5kIDItCi0vLyBhcmd1bWVudCBmb3Jtcy4KLS8vCi0vLyBUaGUgdGVtcGxhdGUgdHlwZSBwYXJhbWV0ZXIgTyA9PSBpc19jaGFpbmVkX2Jhc2U8VT46OnZhbHVlIGlzIHVzZWQgdG8KLS8vIGRpc3Rpbmd1aXNoIHdoZXRoZXIgdGhlIDJuZCBhcmd1bWVudCB0byA8dGVtcGxhdGVfbmFtZT4gaXMgYmVpbmcgdXNlZCBmb3IKLS8vIGJhc2UgY2xhc3MgY2hhaW5pbmcgZnJvbSBhbm90aGVyIGJvb3N0IG9wZXJhdG9yIHRlbXBsYXRlIG9yIGlzIGRlc2NyaWJpbmcgYQotLy8gMm5kIG9wZXJhbmQgdHlwZS4gTyA9PSB0cnVlX3Qgb25seSB3aGVuIFUgaXMgYWN0dWFsbHkgYW4gYW5vdGhlciBvcGVyYXRvcgotLy8gdGVtcGxhdGUgZnJvbSB0aGUgbGlicmFyeS4gUGFydGlhbCBzcGVjaWFsaXphdGlvbiBpcyB1c2VkIHRvIHNlbGVjdCBhbgotLy8gaW1wbGVtZW50YXRpb24gaW4gdGVybXMgb2YgZWl0aGVyICc8dGVtcGxhdGVfbmFtZT4xJyBvciAnPHRlbXBsYXRlX25hbWU+MicuCi0vLwotCi0jIGRlZmluZSBORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURSh0ZW1wbGF0ZV9uYW1lKSAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGUgPGNsYXNzIFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICxjbGFzcyBVID0gVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAsY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiAgICAgICAgICAgICAgICAgXAotICAgICAgICAgLGNsYXNzIE8gPSB0eXBlbmFtZSBpc19jaGFpbmVkX2Jhc2U8VT46OnZhbHVlICAgICAgICAgICAgIFwKLSAgICAgICAgID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1zdHJ1Y3QgdGVtcGxhdGVfbmFtZSA6IHRlbXBsYXRlX25hbWUjIzI8VCwgVSwgQj4ge307ICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1zdHJ1Y3QgdGVtcGxhdGVfbmFtZTxULCBVLCBCLCA6Om5kbmJvb3N0OjpkZXRhaWw6OnRydWVfdD4gICAgICAgICAgICAgXAotICA6IHRlbXBsYXRlX25hbWUjIzE8VCwgVT4ge307ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotc3RydWN0IHRlbXBsYXRlX25hbWU8VCwgVCwgQiwgOjpuZG5ib29zdDo6ZGV0YWlsOjpmYWxzZV90PiAgICAgICAgICAgIFwKLSAgOiB0ZW1wbGF0ZV9uYW1lIyMxPFQsIEI+IHt9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQiwgY2xhc3MgTz4gICAgICAgICAgICAgICAgICAgICAgIFwKLXN0cnVjdCBpc19jaGFpbmVkX2Jhc2U8IDo6bmRuYm9vc3Q6OnRlbXBsYXRlX25hbWU8VCwgVSwgQiwgTz4gPiB7ICAgICBcCi0gIHR5cGVkZWYgOjpuZG5ib29zdDo6ZGV0YWlsOjp0cnVlX3QgdmFsdWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURTIodGVtcGxhdGVfbmFtZSMjMikgICAgICAgICAgICAgICAgICAgICAgICAgXAotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUxKHRlbXBsYXRlX25hbWUjIzEpCi0KLQotI2Vsc2UgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0jICBkZWZpbmUgTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEU0KHRlbXBsYXRlX25hbWU0KSBcCi0gICAgICAgIE5ETkJPT1NUX0lNUE9SVF9URU1QTEFURTQodGVtcGxhdGVfbmFtZTQpCi0jICBkZWZpbmUgTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUzKHRlbXBsYXRlX25hbWUzKSBcCi0gICAgICAgIE5ETkJPT1NUX0lNUE9SVF9URU1QTEFURTModGVtcGxhdGVfbmFtZTMpCi0jICBkZWZpbmUgTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUyKHRlbXBsYXRlX25hbWUyKSBcCi0gICAgICAgIE5ETkJPT1NUX0lNUE9SVF9URU1QTEFURTIodGVtcGxhdGVfbmFtZTIpCi0jICBkZWZpbmUgTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUxKHRlbXBsYXRlX25hbWUxKSBcCi0gICAgICAgIE5ETkJPT1NUX0lNUE9SVF9URU1QTEFURTEodGVtcGxhdGVfbmFtZTEpCi0KLSAgIC8vIEluIHRoaXMgY2FzZSB3ZSBjYW4gb25seSBhc3N1bWUgdGhhdCB0ZW1wbGF0ZV9uYW1lPD4gaXMgZXF1aXZhbGVudCB0byB0aGUKLSAgIC8vIG1vcmUgY29tbW9ubHkgbmVlZGVkIHRlbXBsYXRlX25hbWUxPD4gZm9ybS4KLSMgIGRlZmluZSBORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURSh0ZW1wbGF0ZV9uYW1lKSAgICAgICAgICAgICAgICAgICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+ICAgXAotICAgc3RydWN0IHRlbXBsYXRlX25hbWUgOiB0ZW1wbGF0ZV9uYW1lIyMxPFQsIEI+IHt9OwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIAotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUobGVzc190aGFuX2NvbXBhcmFibGUpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURShlcXVhbGl0eV9jb21wYXJhYmxlKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUobXVsdGlwbGlhYmxlKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUoYWRkYWJsZSkKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKHN1YnRyYWN0YWJsZSkKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFMihzdWJ0cmFjdGFibGUyX2xlZnQpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURShkaXZpZGFibGUpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURTIoZGl2aWRhYmxlMl9sZWZ0KQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUobW9kYWJsZSkKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFMihtb2RhYmxlMl9sZWZ0KQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUoeG9yYWJsZSkKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKGFuZGFibGUpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURShvcmFibGUpCi0KLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFMShpbmNyZW1lbnRhYmxlKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUxKGRlY3JlbWVudGFibGUpCi0KLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFMihkZXJlZmVyZW5jZWFibGUpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURTMoaW5kZXhhYmxlKQotCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURShsZWZ0X3NoaWZ0YWJsZSkKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKHJpZ2h0X3NoaWZ0YWJsZSkKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKGVxdWl2YWxlbnQpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURShwYXJ0aWFsbHlfb3JkZXJlZCkKLQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUodG90YWxseV9vcmRlcmVkKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUoYWRkaXRpdmUpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURShtdWx0aXBsaWNhdGl2ZSkKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKGludGVnZXJfbXVsdGlwbGljYXRpdmUpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURShhcml0aG1ldGljKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUoaW50ZWdlcl9hcml0aG1ldGljKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUoYml0d2lzZSkKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFMSh1bml0X3N0ZXBwYWJsZSkKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKHNoaWZ0YWJsZSkKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKHJpbmdfb3BlcmF0b3JzKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUob3JkZXJlZF9yaW5nX29wZXJhdG9ycykKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKGZpZWxkX29wZXJhdG9ycykKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKG9yZGVyZWRfZmllbGRfb3BlcmF0b3JzKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUoZXVjbGlkaWFuX3Jpbmdfb3BlcmF0b3JzKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUob3JkZXJlZF9ldWNsaWRpYW5fcmluZ19vcGVyYXRvcnMpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURShldWNsaWRlYW5fcmluZ19vcGVyYXRvcnMpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURShvcmRlcmVkX2V1Y2xpZGVhbl9yaW5nX29wZXJhdG9ycykKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFMihpbnB1dF9pdGVyYXRhYmxlKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUxKG91dHB1dF9pdGVyYXRhYmxlKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUyKGZvcndhcmRfaXRlcmF0YWJsZSkKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFMihiaWRpcmVjdGlvbmFsX2l0ZXJhdGFibGUpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURTQocmFuZG9tX2FjY2Vzc19pdGVyYXRhYmxlKQotCi0jdW5kZWYgTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUKLSN1bmRlZiBORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURTQKLSN1bmRlZiBORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURTMKLSN1bmRlZiBORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURTIKLSN1bmRlZiBORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURTEKLSN1bmRlZiBORE5CT09TVF9JTVBPUlRfVEVNUExBVEUxCi0jdW5kZWYgTkROQk9PU1RfSU1QT1JUX1RFTVBMQVRFMgotI3VuZGVmIE5ETkJPT1NUX0lNUE9SVF9URU1QTEFURTMKLSN1bmRlZiBORE5CT09TVF9JTVBPUlRfVEVNUExBVEU0Ci0KLS8vIFRoZSBmb2xsb3dpbmcgJ29wZXJhdG9ycycgY2xhc3NlcyBjYW4gb25seSBiZSB1c2VkIHBvcnRhYmx5IGlmIHRoZSBkZXJpdmVkIGNsYXNzCi0vLyBkZWNsYXJlcyBBTEwgb2YgdGhlIHJlcXVpcmVkIG1lbWJlciBvcGVyYXRvcnMuCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT4KLXN0cnVjdCBvcGVyYXRvcnMyCi0gICAgOiB0b3RhbGx5X29yZGVyZWQyPFQsVQotICAgICwgaW50ZWdlcl9hcml0aG1ldGljMjxULFUKLSAgICAsIGJpdHdpc2UyPFQsVQotICAgICAgPiA+ID4ge307Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUgPSBUPgotc3RydWN0IG9wZXJhdG9ycyA6IG9wZXJhdG9yczI8VCwgVT4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3Qgb3BlcmF0b3JzPFQsIFQ+Ci0jZWxzZQotdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBvcGVyYXRvcnMKLSNlbmRpZgotICAgIDogdG90YWxseV9vcmRlcmVkPFQKLSAgICAsIGludGVnZXJfYXJpdGhtZXRpYzxUCi0gICAgLCBiaXR3aXNlPFQKLSAgICAsIHVuaXRfc3RlcHBhYmxlPFQKLSAgICAgID4gPiA+ID4ge307Ci0KLS8vICBJdGVyYXRvciBoZWxwZXIgY2xhc3NlcyAoY29udHJpYnV0ZWQgYnkgSmVyZW15IFNpZWspIC0tLS0tLS0tLS0tLS0tLS0tLS0vLwotLy8gIChJbnB1dCBhbmQgb3V0cHV0IGl0ZXJhdG9yIGhlbHBlcnMgY29udHJpYnV0ZWQgYnkgRGFyeWxlIFdhbGtlcikgLS0tLS0tLS8vCi0vLyAgKENoYW5nZWQgdG8gdXNlIGNvbWJpbmVkIG9wZXJhdG9yIGNsYXNzZXMgYnkgRGFyeWxlIFdhbGtlcikgLS0tLS0tLS0tLS0tLy8KLXRlbXBsYXRlIDxjbGFzcyBULAotICAgICAgICAgIGNsYXNzIFYsCi0gICAgICAgICAgY2xhc3MgRCA9IHN0ZDo6cHRyZGlmZl90LAotICAgICAgICAgIGNsYXNzIFAgPSBWIGNvbnN0ICosCi0gICAgICAgICAgY2xhc3MgUiA9IFYgY29uc3QgJj4KLXN0cnVjdCBpbnB1dF9pdGVyYXRvcl9oZWxwZXIKLSAgOiBpbnB1dF9pdGVyYXRhYmxlPFQsIFAKLSAgLCBuZG5ib29zdDo6aXRlcmF0b3I8c3RkOjppbnB1dF9pdGVyYXRvcl90YWcsIFYsIEQsIFAsIFIKLSAgICA+ID4ge307Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3Qgb3V0cHV0X2l0ZXJhdG9yX2hlbHBlcgotICA6IG91dHB1dF9pdGVyYXRhYmxlPFQKLSAgLCBuZG5ib29zdDo6aXRlcmF0b3I8c3RkOjpvdXRwdXRfaXRlcmF0b3JfdGFnLCB2b2lkLCB2b2lkLCB2b2lkLCB2b2lkCi0gID4gPgotewotICBUJiBvcGVyYXRvciooKSAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VCY+KCp0aGlzKTsgfQotICBUJiBvcGVyYXRvcisrKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VCY+KCp0aGlzKTsgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsCi0gICAgICAgICAgY2xhc3MgViwKLSAgICAgICAgICBjbGFzcyBEID0gc3RkOjpwdHJkaWZmX3QsCi0gICAgICAgICAgY2xhc3MgUCA9IFYqLAotICAgICAgICAgIGNsYXNzIFIgPSBWJj4KLXN0cnVjdCBmb3J3YXJkX2l0ZXJhdG9yX2hlbHBlcgotICA6IGZvcndhcmRfaXRlcmF0YWJsZTxULCBQCi0gICwgbmRuYm9vc3Q6Oml0ZXJhdG9yPHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcsIFYsIEQsIFAsIFIKLSAgICA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULAotICAgICAgICAgIGNsYXNzIFYsCi0gICAgICAgICAgY2xhc3MgRCA9IHN0ZDo6cHRyZGlmZl90LAotICAgICAgICAgIGNsYXNzIFAgPSBWKiwKLSAgICAgICAgICBjbGFzcyBSID0gViY+Ci1zdHJ1Y3QgYmlkaXJlY3Rpb25hbF9pdGVyYXRvcl9oZWxwZXIKLSAgOiBiaWRpcmVjdGlvbmFsX2l0ZXJhdGFibGU8VCwgUAotICAsIG5kbmJvb3N0OjppdGVyYXRvcjxzdGQ6OmJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnLCBWLCBELCBQLCBSCi0gICAgPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwKLSAgICAgICAgICBjbGFzcyBWLCAKLSAgICAgICAgICBjbGFzcyBEID0gc3RkOjpwdHJkaWZmX3QsCi0gICAgICAgICAgY2xhc3MgUCA9IFYqLAotICAgICAgICAgIGNsYXNzIFIgPSBWJj4KLXN0cnVjdCByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX2hlbHBlcgotICA6IHJhbmRvbV9hY2Nlc3NfaXRlcmF0YWJsZTxULCBQLCBELCBSCi0gICwgbmRuYm9vc3Q6Oml0ZXJhdG9yPHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcsIFYsIEQsIFAsIFIKLSAgICA+ID4KLXsKLSAgZnJpZW5kIEQgcmVxdWlyZXNfZGlmZmVyZW5jZV9vcGVyYXRvcihjb25zdCBUJiB4LCBjb25zdCBUJiB5KSB7Ci0gICAgcmV0dXJuIHggLSB5OwotICB9Ci19OyAvLyByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX2hlbHBlcgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWYgZGVmaW5lZChfX3NnaSkgJiYgIWRlZmluZWQoX19HTlVDX18pCi0jcHJhZ21hIHJlc2V0IHdvZmYgMTIzNAotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9PUEVSQVRPUlNfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L29wdGlvbmFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvb3B0aW9uYWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjkyNjM5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvb3B0aW9uYWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDAzLCBGZXJuYW5kbyBMdWlzIENhY2Npb2xhIENhcmJhbGxhbC4KLS8vCi0vLyBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9vcHRpb25hbCBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0vLyBZb3UgYXJlIHdlbGNvbWUgdG8gY29udGFjdCB0aGUgYXV0aG9yIGF0OgotLy8gIGZlcm5hbmRvX2NhY2Npb2xhQGhvdG1haWwuY29tCi0vLwotI2lmbmRlZiBORE5CT09TVF9PUFRJT05BTF9GTENfMTlOT1YyMDAyX0hQUAotI2RlZmluZSBORE5CT09TVF9PUFRJT05BTF9GTENfMTlOT1YyMDAyX0hQUAotCi0jaW5jbHVkZSAibmRuYm9vc3Qvb3B0aW9uYWwvb3B0aW9uYWwuaHBwIgotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9vcHRpb25hbC9vcHRpb25hbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L29wdGlvbmFsL29wdGlvbmFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2EzZGIxNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L29wdGlvbmFsL29wdGlvbmFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5MSArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDggRmVybmFuZG8gTHVpcyBDYWNjaW9sYSBDYXJiYWxsYWwuCi0vLwotLy8gVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvb3B0aW9uYWwgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotLy8gWW91IGFyZSB3ZWxjb21lIHRvIGNvbnRhY3QgdGhlIGF1dGhvciBhdDoKLS8vICBmZXJuYW5kb19jYWNjaW9sYUBob3RtYWlsLmNvbQotLy8KLS8vIFJldmlzaW9uczoKLS8vIDI3IEFwciAyMDA4IChpbXByb3ZlZCBzd2FwKSBGZXJuYW5kbyBDYWNjaW9sYSwgTmllbHMgRGVra2VyLCBUaG9yc3RlbiBPdHRvc2VuCi0vLwotI2lmbmRlZiBORE5CT09TVF9PUFRJT05BTF9PUFRJT05BTF9GTENfMTlOT1YyMDAyX0hQUAotI2RlZmluZSBORE5CT09TVF9PUFRJT05BTF9PUFRJT05BTF9GTENfMTlOT1YyMDAyX0hQUAotCi0jaW5jbHVkZSA8bmV3PgotI2luY2x1ZGUgPGFsZ29yaXRobT4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hbGlnbm1lbnRfb2YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ub3Rocm93X2NvbnN0cnVjdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy90eXBlX3dpdGhfYWxpZ25tZW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfcmVmZXJlbmNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ub3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9yZWZlcmVuY2VfY29udGVudC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvbm9uZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9zd2FwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2FkZHJlc3NvZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9jb21wYXJlX3BvaW50ZWVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2luX3BsYWNlX2ZhY3RvcnkuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3Qvb3B0aW9uYWwvb3B0aW9uYWxfZndkLmhwcD4KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPT0gMTIwMCkKLS8vIFZDNi4wIGhhcyB0aGUgZm9sbG93aW5nIGJ1ZzoKLS8vICAgV2hlbiBhIHRlbXBsYXRlZCBhc3NpZ25tZW50IG9wZXJhdG9yIGV4aXN0LCBhbiBpbXBsaWNpdCBjb252ZXJzaW9uCi0vLyAgIGNvbnN0cnVjdGluZyBhbiBvcHRpb25hbDxUPiBpcyB1c2VkIHdoZW4gYXNzaWdtZW50IG9mIHRoZSBmb3JtOgotLy8gICAgIG9wdGlvbmFsPFQ+IG9wdCA7IG9wdCA9IFQoLi4uKTsKLS8vICAgaXMgY29tcGlsZWQuCi0vLyAgIEhvd2V2ZXIsIG9wdGlvbmFsJ3MgY3RvciBpcyBfZXhwbGljaXRfIGFuZCB0aGUgYXNzaWduZW10IHNob3VsZG4ndCBjb21waWxlLgotLy8gICBUaGVyZWZvcmUsIGZvciBWQzYuMCB0ZW1wbGF0ZWQgYXNzaWdubWVudCBpcyBkaXNhYmxlZC4KLS8vCi0jZGVmaW5lIE5ETkJPT1NUX09QVElPTkFMX05PX0NPTlZFUlRJTkdfQVNTSUdOTUVOVAotI2VuZGlmCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID09IDEzMDApCi0vLyBWQzcuMCBoYXMgdGhlIGZvbGxvd2luZyBidWc6Ci0vLyAgIFdoZW4gYm90aCBhIG5vbi10ZW1wbGF0ZSBhbmQgYSB0ZW1wbGF0ZSBjb3B5LWN0b3IgZXhpc3QKLS8vICAgYW5kIHRoZSB0ZW1wbGF0ZWQgdmVyc2lvbiBpcyBtYWRlICdleHBsaWNpdCcsIHRoZSBleHBsaWNpdCBpcyBhbHNvCi0vLyAgIGdpdmVuIHRvIHRoZSBub24tdGVtcGxhdGVkIHZlcnNpb24sIG1ha2luZyB0aGUgY2xhc3Mgbm9uLWltcGxpY2l0ZWx5LWNvcHlhYmxlLgotLy8KLSNkZWZpbmUgTkROQk9PU1RfT1BUSU9OQUxfTk9fQ09OVkVSVElOR19DT1BZX0NUT1IKLSNlbmRpZgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSB8fCBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OLDw9NzAwKQotLy8gQUZBSUNUIG9ubHkgVkM3LjEgY29ycmVjdGx5IHJlc29sdmVzIHRoZSBvdmVybG9hZCBzZXQKLS8vIHRoYXQgaW5jbHVkZXMgdGhlIGluLXBsYWNlIGZhY3RvcnkgdGFraW5nIGZ1bmN0aW9ucywKLS8vIHNvIGZvciB0aGUgb3RoZXIgVkMgdmVyc2lvbnMsIGluLXBsYWNlIGZhY3Rvcnkgc3VwcG9ydAotLy8gaXMgZGlzYWJsZWQKLSNkZWZpbmUgTkROQk9PU1RfT1BUSU9OQUxfTk9fSU5QTEFDRV9GQUNUT1JZX1NVUFBPUlQKLSNlbmRpZgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDw9IDB4NTUxKQotLy8gQkNCICg1LjUuMSkgY2Fubm90IHBhcnNlIHRoZSBuZXN0ZWQgdGVtcGxhdGUgc3RydWN0IGluIGFuIGlucGxhY2UgZmFjdG9yeS4KLSNkZWZpbmUgTkROQk9PU1RfT1BUSU9OQUxfTk9fSU5QTEFDRV9GQUNUT1JZX1NVUFBPUlQKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfT1BUSU9OQUxfTk9fSU5QTEFDRV9GQUNUT1JZX1NVUFBPUlQpIFwKLSAgICAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTgxKSApCi0vLyBCQ0IgKHVwIHRvIDUuNjQpIGhhcyB0aGUgZm9sbG93aW5nIGJ1ZzoKLS8vICAgSWYgdGhlcmUgaXMgYSBtZW1iZXIgZnVuY3Rpb24vb3BlcmF0b3IgdGVtcGxhdGUgb2YgdGhlIGZvcm0KLS8vICAgICB0ZW1wbGF0ZTxjbGFzcyBFeHByPiBtZnVuYyggRXhwciBleHByICkgOwotLy8gICBzb21lIGNhbGxzIGFyZSByZXNvbHZlZCB0byB0aGlzIGV2ZW4gaWYgdGhlcmUgYXJlIG90aGVyIGJldHRlciBtYXRjaGVzLgotLy8gICBUaGUgZWZmZWN0IG9mIHRoaXMgYnVnIGlzIHRoYXQgY2FsbHMgdG8gY29udmVydGluZyBjdG9ycyBhbmQgYXNzaWdubWVudHMKLS8vICAgYXJlIGluY3JvcnJlY3RseSBzaW5rIHRvIHRoaXMgZ2VuZXJhbCBjYXRjaC1hbGwgbWVtYmVyIGZ1bmN0aW9uIHRlbXBsYXRlIGFzIHNob3duIGFib3ZlLgotI2RlZmluZSBORE5CT09TVF9PUFRJT05BTF9XRUFLX09WRVJMT0FEX1JFU09MVVRJT04KLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fICogMTAwICsgX19HTlVDX01JTk9SX18pID4gMzAyIFwKLSAgICAmJiAhZGVmaW5lZChfX0lOVEVMX0NPTVBJTEVSKQotLy8gR0NDIHNpbmNlIDMuMyBoYXMgbWF5X2FsaWFzIGF0dHJpYnV0ZSB0aGF0IGhlbHBzIHRvIGFsbGV2aWF0ZSBvcHRpbWl6ZXIgaXNzdWVzIHdpdGgKLS8vIHJlZ2FyZCB0byB2aW9sYXRpb24gb2YgdGhlIHN0cmljdCBhbGlhc2luZyBydWxlcy4gVGhlIG9wdGlvbmFsPCBUID4gc3RvcmFnZSB0eXBlIGlzIG1hcmtlZAotLy8gd2l0aCB0aGlzIGF0dHJpYnV0ZSBpbiBvcmRlciB0byBsZXQgdGhlIGNvbXBpbGVyIGtub3cgdGhhdCBpdCB3aWxsIGFsaWFzIG9iamVjdHMgb2YgdHlwZSBUCi0vLyBhbmQgc2lsZW5jZSBjb21waWxhdGlvbiB3YXJuaW5ncy4KLSNkZWZpbmUgTkROQk9PU1RfT1BUSU9OQUxfREVUQUlMX1VTRV9BVFRSSUJVVEVfTUFZX0FMSUFTCi0jZW5kaWYKLQotLy8gRGFuaWVsIFdhbGxpbiBkaXNjb3ZlcmVkIHRoYXQgYmluZC9hcHBseS5ocHAgYmFkbHkgaW50ZXJhY3RzIHdpdGggdGhlIGFwcGx5PD4KLS8vIG1lbWJlciB0ZW1wbGF0ZSBvZiBhIGZhY3RvcnkgYXMgdXNlZCBpbiB0aGUgb3B0aW9uYWw8PiBpbXBsZW1lbnRhdGlvbi4KLS8vIEhlIHByb3Bvc2VkIHRoaXMgc2ltcGxlIGZpeCB3aGljaCBpcyB0byBtb3ZlIHRoZSBjYWxsIHRvIGFwcGx5PD4gb3V0c2lkZQotLy8gbmFtZXNwYWNlIG5kbmJvb3N0LgotbmFtZXNwYWNlIG5kbmJvb3N0X29wdGlvbmFsX2RldGFpbAotewotICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRmFjdG9yeT4KLSAgaW5saW5lIHZvaWQgY29uc3RydWN0KEZhY3RvcnkgY29uc3QmIGZhY3RvcnksIHZvaWQqIGFkZHJlc3MpCi0gIHsKLSAgICBmYWN0b3J5Lk5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBhcHBseTxUPihhZGRyZXNzKTsKLSAgfQotfQotCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLWNsYXNzIGluX3BsYWNlX2ZhY3RvcnlfYmFzZSA7Ci1jbGFzcyB0eXBlZF9pbl9wbGFjZV9mYWN0b3J5X2Jhc2UgOwotCi0vLyBUaGlzIGZvcndhcmQgaXMgbmVlZGVkIHRvIHJlZmVyIHRvIG5hbWVzcGFjZSBzY29wZSBzd2FwIGZyb20gdGhlIG1lbWJlciBzd2FwCi10ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkIHN3YXAgKCBvcHRpb25hbDxUPiYgeCwgb3B0aW9uYWw8VD4mIHkgKTsKLQotbmFtZXNwYWNlIG9wdGlvbmFsX2RldGFpbCB7Ci0KLS8vIFRoaXMgbG9jYWwgY2xhc3MgaXMgdXNlZCBpbnN0ZWFkIG9mIHRoYXQgaW4gImFsaWduZWRfc3RvcmFnZS5ocHAiCi0vLyBiZWNhdXNlIEkndmUgZm91bmQgdGhlICdvZmZpY2lhbCcgY2xhc3MgdG8gSUNFIEJDQjUuNQotLy8gd2hlbiBzb21lIHR5cGVzIGFyZSB1c2VkIHdpdGggb3B0aW9uYWw8PgotLy8gKGR1ZSB0byBzaXplb2YoKSBwYXNzZWQgZG93biBhcyBhIG5vbi10eXBlIHRlbXBsYXRlIHBhcmFtZXRlcikKLXRlbXBsYXRlIDxjbGFzcyBUPgotY2xhc3MgYWxpZ25lZF9zdG9yYWdlCi17Ci0gICAgLy8gQm9ybGFuZCBJQ0VzIGlmIHVubmFtZWQgdW5pb25zIGFyZSB1c2VkIGZvciB0aGlzIQotICAgIHVuaW9uCi0gICAgLy8gVGhpcyB3b3JrcyBhcm91bmQgR0NDIHdhcm5pbmdzIGFib3V0IGJyZWFraW5nIHN0cmljdCBhbGlhc2luZyBydWxlcyB3aGVuIGNhc3Rpbmcgc3RvcmFnZSBhZGRyZXNzIHRvIFQqCi0jaWYgZGVmaW5lZChORE5CT09TVF9PUFRJT05BTF9ERVRBSUxfVVNFX0FUVFJJQlVURV9NQVlfQUxJQVMpCi0gICAgX19hdHRyaWJ1dGVfXygobWF5X2FsaWFzKSkKLSNlbmRpZgotICAgIGR1bW15X3UKLSAgICB7Ci0gICAgICAgIGNoYXIgZGF0YVsgc2l6ZW9mKFQpIF07Ci0gICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgdHlwZV93aXRoX2FsaWdubWVudDwKLSAgICAgICAgICA6Om5kbmJvb3N0OjphbGlnbm1lbnRfb2Y8VD46OnZhbHVlID46OnR5cGUgYWxpZ25lcl87Ci0gICAgfSBkdW1teV8gOwotCi0gIHB1YmxpYzoKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfT1BUSU9OQUxfREVUQUlMX1VTRV9BVFRSSUJVVEVfTUFZX0FMSUFTKQotICAgIHZvaWQgY29uc3QqIGFkZHJlc3MoKSBjb25zdCB7IHJldHVybiAmZHVtbXlfOyB9Ci0gICAgdm9pZCAgICAgICogYWRkcmVzcygpICAgICAgIHsgcmV0dXJuICZkdW1teV87IH0KLSNlbHNlCi0gICAgdm9pZCBjb25zdCogYWRkcmVzcygpIGNvbnN0IHsgcmV0dXJuIGR1bW15Xy5kYXRhOyB9Ci0gICAgdm9pZCAgICAgICogYWRkcmVzcygpICAgICAgIHsgcmV0dXJuIGR1bW15Xy5kYXRhOyB9Ci0jZW5kaWYKLX0gOwotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IHR5cGVzX3doZW5faXNudF9yZWYKLXsKLSAgdHlwZWRlZiBUIGNvbnN0JiByZWZlcmVuY2VfY29uc3RfdHlwZSA7Ci0gIHR5cGVkZWYgVCAmICAgICAgcmVmZXJlbmNlX3R5cGUgOwotICB0eXBlZGVmIFQgY29uc3QqIHBvaW50ZXJfY29uc3RfdHlwZSA7Ci0gIHR5cGVkZWYgVCAqICAgICAgcG9pbnRlcl90eXBlIDsKLSAgdHlwZWRlZiBUIGNvbnN0JiBhcmd1bWVudF90eXBlIDsKLX0gOwotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCB0eXBlc193aGVuX2lzX3JlZgotewotICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZSByYXdfdHlwZSA7Ci0KLSAgdHlwZWRlZiByYXdfdHlwZSYgcmVmZXJlbmNlX2NvbnN0X3R5cGUgOwotICB0eXBlZGVmIHJhd190eXBlJiByZWZlcmVuY2VfdHlwZSA7Ci0gIHR5cGVkZWYgcmF3X3R5cGUqIHBvaW50ZXJfY29uc3RfdHlwZSA7Ci0gIHR5cGVkZWYgcmF3X3R5cGUqIHBvaW50ZXJfdHlwZSA7Ci0gIHR5cGVkZWYgcmF3X3R5cGUmIGFyZ3VtZW50X3R5cGUgOwotfSA7Ci0KLXN0cnVjdCBvcHRpb25hbF90YWcge30gOwotCi10ZW1wbGF0ZTxjbGFzcyBUPgotY2xhc3Mgb3B0aW9uYWxfYmFzZSA6IHB1YmxpYyBvcHRpb25hbF90YWcKLXsKLSAgcHJpdmF0ZSA6Ci0KLSAgICB0eXBlZGVmCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NjQpKQotICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUKLSNlbmRpZgotICAgIDo6bmRuYm9vc3Q6OmRldGFpbDo6bWFrZV9yZWZlcmVuY2VfY29udGVudDxUPjo6dHlwZSBpbnRlcm5hbF90eXBlIDsKLQotICAgIHR5cGVkZWYgYWxpZ25lZF9zdG9yYWdlPGludGVybmFsX3R5cGU+IHN0b3JhZ2VfdHlwZSA7Ci0KLSAgICB0eXBlZGVmIHR5cGVzX3doZW5faXNudF9yZWY8VD4gdHlwZXNfd2hlbl9ub3RfcmVmIDsKLSAgICB0eXBlZGVmIHR5cGVzX3doZW5faXNfcmVmPFQ+ICAgdHlwZXNfd2hlbl9yZWYgICA7Ci0KLSAgICB0eXBlZGVmIG9wdGlvbmFsX2Jhc2U8VD4gdGhpc190eXBlIDsKLQotICBwcm90ZWN0ZWQgOgotCi0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGUgOwotCi0gICAgdHlwZWRlZiBtcGw6OnRydWVfICBpc19yZWZlcmVuY2VfdGFnIDsKLSAgICB0eXBlZGVmIG1wbDo6ZmFsc2VfIGlzX25vdF9yZWZlcmVuY2VfdGFnIDsKLQotICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBpc19yZWZlcmVuY2U8VD46OnR5cGUgaXNfcmVmZXJlbmNlX3ByZWRpY2F0ZSA7Ci0KLSAgcHVibGljOgotICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBtcGw6OmlmXzxpc19yZWZlcmVuY2VfcHJlZGljYXRlLHR5cGVzX3doZW5fcmVmLHR5cGVzX3doZW5fbm90X3JlZj46OnR5cGUgdHlwZXMgOwotCi0gIHByb3RlY3RlZDoKLSAgICB0eXBlZGVmIGJvb2wgKHRoaXNfdHlwZTo6KnVuc3BlY2lmaWVkX2Jvb2xfdHlwZSkoKSBjb25zdDsKLQotICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSB0eXBlczo6cmVmZXJlbmNlX3R5cGUgICAgICAgcmVmZXJlbmNlX3R5cGUgOwotICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSB0eXBlczo6cmVmZXJlbmNlX2NvbnN0X3R5cGUgcmVmZXJlbmNlX2NvbnN0X3R5cGUgOwotICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSB0eXBlczo6cG9pbnRlcl90eXBlICAgICAgICAgcG9pbnRlcl90eXBlIDsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgdHlwZXM6OnBvaW50ZXJfY29uc3RfdHlwZSAgIHBvaW50ZXJfY29uc3RfdHlwZSA7Ci0gICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHR5cGVzOjphcmd1bWVudF90eXBlICAgICAgICBhcmd1bWVudF90eXBlIDsKLQotICAgIC8vIENyZWF0ZXMgYW4gb3B0aW9uYWw8VD4gdW5pbml0aWFsaXplZC4KLSAgICAvLyBOby10aHJvdwotICAgIG9wdGlvbmFsX2Jhc2UoKQotICAgICAgOgotICAgICAgbV9pbml0aWFsaXplZChmYWxzZSkge30KLQotICAgIC8vIENyZWF0ZXMgYW4gb3B0aW9uYWw8VD4gdW5pbml0aWFsaXplZC4KLSAgICAvLyBOby10aHJvdwotICAgIG9wdGlvbmFsX2Jhc2UgKCBub25lX3QgKQotICAgICAgOgotICAgICAgbV9pbml0aWFsaXplZChmYWxzZSkge30KLQotICAgIC8vIENyZWF0ZXMgYW4gb3B0aW9uYWw8VD4gaW5pdGlhbGl6ZWQgd2l0aCAndmFsJy4KLSAgICAvLyBDYW4gdGhyb3cgaWYgVDo6VChUIGNvbnN0JikgZG9lcwotICAgIG9wdGlvbmFsX2Jhc2UgKCBhcmd1bWVudF90eXBlIHZhbCApCi0gICAgICA6Ci0gICAgICBtX2luaXRpYWxpemVkKGZhbHNlKQotICAgIHsKLSAgICAgIGNvbnN0cnVjdCh2YWwpOwotICAgIH0KLQotICAgIC8vIENyZWF0ZXMgYW4gb3B0aW9uYWw8VD4gaW5pdGlhbGl6ZWQgd2l0aCAndmFsJyBJRkYgY29uZCBpcyB0cnVlLCBvdGhlcndpc2UgY3JlYXRlcyBhbiB1bmluaXRpYWx6ZWQgb3B0aW9uYWw8VD4uCi0gICAgLy8gQ2FuIHRocm93IGlmIFQ6OlQoVCBjb25zdCYpIGRvZXMKLSAgICBvcHRpb25hbF9iYXNlICggYm9vbCBjb25kLCBhcmd1bWVudF90eXBlIHZhbCApCi0gICAgICA6Ci0gICAgICBtX2luaXRpYWxpemVkKGZhbHNlKQotICAgIHsKLSAgICAgIGlmICggY29uZCApCi0gICAgICAgIGNvbnN0cnVjdCh2YWwpOwotICAgIH0KLQotICAgIC8vIENyZWF0ZXMgYSBkZWVwIGNvcHkgb2YgYW5vdGhlciBvcHRpb25hbDxUPgotICAgIC8vIENhbiB0aHJvdyBpZiBUOjpUKFQgY29uc3QmKSBkb2VzCi0gICAgb3B0aW9uYWxfYmFzZSAoIG9wdGlvbmFsX2Jhc2UgY29uc3QmIHJocyApCi0gICAgICA6Ci0gICAgICBtX2luaXRpYWxpemVkKGZhbHNlKQotICAgIHsKLSAgICAgIGlmICggcmhzLmlzX2luaXRpYWxpemVkKCkgKQotICAgICAgICBjb25zdHJ1Y3QocmhzLmdldF9pbXBsKCkpOwotICAgIH0KLQotCi0gICAgLy8gVGhpcyBpcyB1c2VkIGZvciBib3RoIGNvbnZlcnRpbmcgYW5kIGluLXBsYWNlIGNvbnN0cnVjdGlvbnMuCi0gICAgLy8gRGVyaXZlZCBjbGFzc2VzIHVzZSB0aGUgJ3RhZycgdG8gc2VsZWN0IHRoZSBhcHByb3ByaWF0ZQotICAgIC8vIGltcGxlbWVudGF0aW9uICh0aGUgY29ycmVjdCAnY29uc3RydWN0KCknIG92ZXJsb2FkKQotICAgIHRlbXBsYXRlPGNsYXNzIEV4cHI+Ci0gICAgZXhwbGljaXQgb3B0aW9uYWxfYmFzZSAoIEV4cHIgY29uc3QmIGV4cHIsIEV4cHIgY29uc3QqIHRhZyApCi0gICAgICA6Ci0gICAgICBtX2luaXRpYWxpemVkKGZhbHNlKQotICAgIHsKLSAgICAgIGNvbnN0cnVjdChleHByLHRhZyk7Ci0gICAgfQotCi0KLQotICAgIC8vIE5vLXRocm93IChhc3N1bWluZyBUOjp+VCgpIGRvZXNuJ3QpCi0gICAgfm9wdGlvbmFsX2Jhc2UoKSB7IGRlc3Ryb3koKSA7IH0KLQotICAgIC8vIEFzc2lnbnMgZnJvbSBhbm90aGVyIG9wdGlvbmFsPFQ+IChkZWVwLWNvcGllcyB0aGUgcmhzIHZhbHVlKQotICAgIHZvaWQgYXNzaWduICggb3B0aW9uYWxfYmFzZSBjb25zdCYgcmhzICkKLSAgICB7Ci0gICAgICBpZiAoaXNfaW5pdGlhbGl6ZWQoKSkKLSAgICAgIHsKLSAgICAgICAgaWYgKCByaHMuaXNfaW5pdGlhbGl6ZWQoKSApCi0gICAgICAgICAgICAgYXNzaWduX3ZhbHVlKHJocy5nZXRfaW1wbCgpLCBpc19yZWZlcmVuY2VfcHJlZGljYXRlKCkgKTsKLSAgICAgICAgZWxzZSBkZXN0cm95KCk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIGlmICggcmhzLmlzX2luaXRpYWxpemVkKCkgKQotICAgICAgICAgIGNvbnN0cnVjdChyaHMuZ2V0X2ltcGwoKSk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLy8gQXNzaWducyBmcm9tIGFub3RoZXIgX2NvbnZlcnRpYmxlXyBvcHRpb25hbDxVPiAoZGVlcC1jb3BpZXMgdGhlIHJocyB2YWx1ZSkKLSAgICB0ZW1wbGF0ZTxjbGFzcyBVPgotICAgIHZvaWQgYXNzaWduICggb3B0aW9uYWw8VT4gY29uc3QmIHJocyApCi0gICAgewotICAgICAgaWYgKGlzX2luaXRpYWxpemVkKCkpCi0gICAgICB7Ci0gICAgICAgIGlmICggcmhzLmlzX2luaXRpYWxpemVkKCkgKQotICAgICAgICAgICAgIGFzc2lnbl92YWx1ZShzdGF0aWNfY2FzdDx2YWx1ZV90eXBlPihyaHMuZ2V0KCkpLCBpc19yZWZlcmVuY2VfcHJlZGljYXRlKCkgKTsKLSAgICAgICAgZWxzZSBkZXN0cm95KCk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIGlmICggcmhzLmlzX2luaXRpYWxpemVkKCkgKQotICAgICAgICAgIGNvbnN0cnVjdChzdGF0aWNfY2FzdDx2YWx1ZV90eXBlPihyaHMuZ2V0KCkpKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBBc3NpZ25zIGZyb20gYSBUIChkZWVwLWNvcGllcyB0aGUgcmhzIHZhbHVlKQotICAgIHZvaWQgYXNzaWduICggYXJndW1lbnRfdHlwZSB2YWwgKQotICAgIHsKLSAgICAgIGlmIChpc19pbml0aWFsaXplZCgpKQotICAgICAgICAgICBhc3NpZ25fdmFsdWUodmFsLCBpc19yZWZlcmVuY2VfcHJlZGljYXRlKCkgKTsKLSAgICAgIGVsc2UgY29uc3RydWN0KHZhbCk7Ci0gICAgfQotCi0gICAgLy8gQXNzaWducyBmcm9tICJub25lIiwgZGVzdHJveWluZyB0aGUgY3VycmVudCB2YWx1ZSwgaWYgYW55LCBsZWF2aW5nIHRoaXMgVU5JTklUSUFMSVpFRAotICAgIC8vIE5vLXRocm93IChhc3N1bWluZyBUOjp+VCgpIGRvZXNuJ3QpCi0gICAgdm9pZCBhc3NpZ24gKCBub25lX3QgKSB7IGRlc3Ryb3koKTsgfQotCi0jaWZuZGVmIE5ETkJPT1NUX09QVElPTkFMX05PX0lOUExBQ0VfRkFDVE9SWV9TVVBQT1JUCi0gICAgdGVtcGxhdGU8Y2xhc3MgRXhwcj4KLSAgICB2b2lkIGFzc2lnbl9leHByICggRXhwciBjb25zdCYgZXhwciwgRXhwciBjb25zdCogdGFnICkKLSAgICAgIHsKLSAgICAgICAgaWYgKGlzX2luaXRpYWxpemVkKCkpCi0gICAgICAgICAgICAgYXNzaWduX2V4cHJfdG9faW5pdGlhbGl6ZWQoZXhwcix0YWcpOwotICAgICAgICBlbHNlIGNvbnN0cnVjdChleHByLHRhZyk7Ci0gICAgICB9Ci0jZW5kaWYKLQotICBwdWJsaWMgOgotCi0gICAgLy8gRGVzdHJveXMgdGhlIGN1cnJlbnQgdmFsdWUsIGlmIGFueSwgbGVhdmluZyB0aGlzIFVOSU5JVElBTElaRUQKLSAgICAvLyBOby10aHJvdyAoYXNzdW1pbmcgVDo6flQoKSBkb2Vzbid0KQotICAgIHZvaWQgcmVzZXQoKSB7IGRlc3Ryb3koKTsgfQotCi0gICAgLy8gUmVwbGFjZXMgdGhlIGN1cnJlbnQgdmFsdWUgLWlmIGFueS0gd2l0aCAndmFsJwotICAgIHZvaWQgcmVzZXQgKCBhcmd1bWVudF90eXBlIHZhbCApIHsgYXNzaWduKHZhbCk7IH0KLQotICAgIC8vIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSB2YWx1ZSBpZiB0aGlzIGlzIGluaXRpYWxpemVkLCBvdGhlcndpc2UsCi0gICAgLy8gcmV0dXJucyBOVUxMLgotICAgIC8vIE5vLXRocm93Ci0gICAgcG9pbnRlcl9jb25zdF90eXBlIGdldF9wdHIoKSBjb25zdCB7IHJldHVybiBtX2luaXRpYWxpemVkID8gZ2V0X3B0cl9pbXBsKCkgOiAwIDsgfQotICAgIHBvaW50ZXJfdHlwZSAgICAgICBnZXRfcHRyKCkgICAgICAgeyByZXR1cm4gbV9pbml0aWFsaXplZCA/IGdldF9wdHJfaW1wbCgpIDogMCA7IH0KLQotICAgIGJvb2wgaXNfaW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2luaXRpYWxpemVkIDsgfQotCi0gIHByb3RlY3RlZCA6Ci0KLSAgICB2b2lkIGNvbnN0cnVjdCAoIGFyZ3VtZW50X3R5cGUgdmFsICkKLSAgICAgewotICAgICAgIG5ldyAobV9zdG9yYWdlLmFkZHJlc3MoKSkgaW50ZXJuYWxfdHlwZSh2YWwpIDsKLSAgICAgICBtX2luaXRpYWxpemVkID0gdHJ1ZSA7Ci0gICAgIH0KLQotI2lmbmRlZiBORE5CT09TVF9PUFRJT05BTF9OT19JTlBMQUNFX0ZBQ1RPUllfU1VQUE9SVAotICAgIC8vIENvbnN0cnVjdHMgaW4tcGxhY2UgdXNpbmcgdGhlIGdpdmVuIGZhY3RvcnkKLSAgICB0ZW1wbGF0ZTxjbGFzcyBFeHByPgotICAgIHZvaWQgY29uc3RydWN0ICggRXhwciBjb25zdCYgZmFjdG9yeSwgaW5fcGxhY2VfZmFjdG9yeV9iYXNlIGNvbnN0KiApCi0gICAgIHsKLSAgICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUICggOjpuZG5ib29zdDo6bXBsOjpub3RfPGlzX3JlZmVyZW5jZV9wcmVkaWNhdGU+Ojp2YWx1ZSApIDsKLSAgICAgICBuZG5ib29zdF9vcHRpb25hbF9kZXRhaWw6OmNvbnN0cnVjdDx2YWx1ZV90eXBlPihmYWN0b3J5LCBtX3N0b3JhZ2UuYWRkcmVzcygpKTsKLSAgICAgICBtX2luaXRpYWxpemVkID0gdHJ1ZSA7Ci0gICAgIH0KLQotICAgIC8vIENvbnN0cnVjdHMgaW4tcGxhY2UgdXNpbmcgdGhlIGdpdmVuIHR5cGVkIGZhY3RvcnkKLSAgICB0ZW1wbGF0ZTxjbGFzcyBFeHByPgotICAgIHZvaWQgY29uc3RydWN0ICggRXhwciBjb25zdCYgZmFjdG9yeSwgdHlwZWRfaW5fcGxhY2VfZmFjdG9yeV9iYXNlIGNvbnN0KiApCi0gICAgIHsKLSAgICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUICggOjpuZG5ib29zdDo6bXBsOjpub3RfPGlzX3JlZmVyZW5jZV9wcmVkaWNhdGU+Ojp2YWx1ZSApIDsKLSAgICAgICBmYWN0b3J5LmFwcGx5KG1fc3RvcmFnZS5hZGRyZXNzKCkpIDsKLSAgICAgICBtX2luaXRpYWxpemVkID0gdHJ1ZSA7Ci0gICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEV4cHI+Ci0gICAgdm9pZCBhc3NpZ25fZXhwcl90b19pbml0aWFsaXplZCAoIEV4cHIgY29uc3QmIGZhY3RvcnksIGluX3BsYWNlX2ZhY3RvcnlfYmFzZSBjb25zdCogdGFnICkKLSAgICAgewotICAgICAgIGRlc3Ryb3koKTsKLSAgICAgICBjb25zdHJ1Y3QoZmFjdG9yeSx0YWcpOwotICAgICB9Ci0KLSAgICAvLyBDb25zdHJ1Y3RzIGluLXBsYWNlIHVzaW5nIHRoZSBnaXZlbiB0eXBlZCBmYWN0b3J5Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRXhwcj4KLSAgICB2b2lkIGFzc2lnbl9leHByX3RvX2luaXRpYWxpemVkICggRXhwciBjb25zdCYgZmFjdG9yeSwgdHlwZWRfaW5fcGxhY2VfZmFjdG9yeV9iYXNlIGNvbnN0KiB0YWcgKQotICAgICB7Ci0gICAgICAgZGVzdHJveSgpOwotICAgICAgIGNvbnN0cnVjdChmYWN0b3J5LHRhZyk7Ci0gICAgIH0KLSNlbmRpZgotCi0gICAgLy8gQ29uc3RydWN0cyB1c2luZyBhbnkgZXhwcmVzc2lvbiBpbXBsaWNpdGVseSBjb252ZXJ0aWJsZSB0byB0aGUgc2luZ2xlIGFyZ3VtZW50Ci0gICAgLy8gb2YgYSBvbmUtYXJndW1lbnQgVCBjb25zdHJ1Y3Rvci4KLSAgICAvLyBDb252ZXJ0aW5nIGNvbnN0cnVjdGlvbnMgb2Ygb3B0aW9uYWw8VD4gZnJvbSBvcHRpb25hbDxVPiB1c2VzIHRoaXMgZnVuY3Rpb24gd2l0aAotICAgIC8vICdFeHByJyBiZWluZyBvZiB0eXBlICdVJyBhbmQgcmVseWluZyBvbiBhIGNvbnZlcnRpbmcgY29uc3RydWN0b3Igb2YgVCBmcm9tIFUuCi0gICAgdGVtcGxhdGU8Y2xhc3MgRXhwcj4KLSAgICB2b2lkIGNvbnN0cnVjdCAoIEV4cHIgY29uc3QmIGV4cHIsIHZvaWQgY29uc3QqICkKLSAgICAgewotICAgICAgIG5ldyAobV9zdG9yYWdlLmFkZHJlc3MoKSkgaW50ZXJuYWxfdHlwZShleHByKSA7Ci0gICAgICAgbV9pbml0aWFsaXplZCA9IHRydWUgOwotICAgICB9Ci0KLSAgICAvLyBBc3NpZ25zIHVzaW5nIGEgZm9ybSBhbnkgZXhwcmVzc2lvbiBpbXBsaWNpdGVseSBjb252ZXJ0aWJsZSB0byB0aGUgc2luZ2xlIGFyZ3VtZW50Ci0gICAgLy8gb2YgYSBUJ3MgYXNzaWdubWVudCBvcGVyYXRvci4KLSAgICAvLyBDb252ZXJ0aW5nIGFzc2lnbm1lbnRzIG9mIG9wdGlvbmFsPFQ+IGZyb20gb3B0aW9uYWw8VT4gdXNlcyB0aGlzIGZ1bmN0aW9uIHdpdGgKLSAgICAvLyAnRXhwcicgYmVpbmcgb2YgdHlwZSAnVScgYW5kIHJlbHlpbmcgb24gYSBjb252ZXJ0aW5nIGFzc2lnbm1lbnQgb2YgVCBmcm9tIFUuCi0gICAgdGVtcGxhdGU8Y2xhc3MgRXhwcj4KLSAgICB2b2lkIGFzc2lnbl9leHByX3RvX2luaXRpYWxpemVkICggRXhwciBjb25zdCYgZXhwciwgdm9pZCBjb25zdCogKQotICAgICB7Ci0gICAgICAgYXNzaWduX3ZhbHVlKGV4cHIsIGlzX3JlZmVyZW5jZV9wcmVkaWNhdGUoKSk7Ci0gICAgIH0KLQotI2lmZGVmIE5ETkJPT1NUX09QVElPTkFMX1dFQUtfT1ZFUkxPQURfUkVTT0xVVElPTgotICAgIC8vIEJDQjUuNjQgKGFuZCBwcm9iYWJseSBsb3dlciB2ZXJzaW9ucykgd29ya2Fyb3VuZC4KLSAgICAvLyAgIFRoZSBpbi1wbGFjZSBmYWN0b3JpZXMgYXJlIHN1cHBvcnRlZCBieSBtZWFucyBvZiBjYXRjaC1hbGwgY29uc3RydWN0b3JzCi0gICAgLy8gICBhbmQgYXNzaWdubWVudCBvcGVyYXRvcnMgKHRoZSBmdW5jdGlvbnMgYXJlIHBhcmFtZXRlcml6ZWQgaW4gdGVybXMgb2YKLSAgICAvLyAgIGFuIGFyYml0cmFyeSAnRXhwcicgdHlwZSkKLSAgICAvLyAgIFRoaXMgY29tcGlsZXIgaW5jb3JyZWN0bHkgcmVzb2x2ZXMgdGhlIG92ZXJsb2FkIHNldCBhbmQgc2lua3Mgb3B0aW9uYWw8VD4gYW5kIG9wdGlvbmFsPFU+Ci0gICAgLy8gICB0byB0aGUgJ0V4cHInLXRha2luZyBmdW5jdGlvbnMgZXZlbiB0aG91Z2ggZXhwbGljaXQgb3ZlcmxvYWRzIGFyZSBwcmVzZW50IGZvciB0aGVtLgotICAgIC8vICAgVGh1cywgdGhlIGZvbGxvd2luZyBvdmVybG9hZCBpcyBuZWVkZWQgdG8gcHJvcGVybHkgaGFuZGxlIHRoZSBjYXNlIHdoZW4gdGhlICdsaHMnCi0gICAgLy8gICBpcyBhbm90aGVyIG9wdGlvbmFsLgotICAgIC8vCi0gICAgLy8gRm9yIFZDPD03MCBjb21waWxlcnMgdGhpcyB3b3JrYXJvdW5kIGRvc2VuJ3Qgd29yayBiZWNhc3VlIHRoZSBjb21ucGlsZXIgaXNzdWVzIGFuZCBlcnJvcgotICAgIC8vIGluc3RlYWQgb2YgY2hvb3NpbmcgdGhlIHdyb25nIG92ZXJsb2FkCi0gICAgLy8KLSAgICAvLyBOb3RpY2UgdGhhdCAnRXhwcicgd2lsbCBiZSBvcHRpb25hbDxUPiBvciBvcHRpb25hbDxVPiAoYnV0IG5vdCBvcHRpb25hbF9iYXNlPC4uPikKLSAgICB0ZW1wbGF0ZTxjbGFzcyBFeHByPgotICAgIHZvaWQgY29uc3RydWN0ICggRXhwciBjb25zdCYgZXhwciwgb3B0aW9uYWxfdGFnIGNvbnN0KiApCi0gICAgIHsKLSAgICAgICBpZiAoIGV4cHIuaXNfaW5pdGlhbGl6ZWQoKSApCi0gICAgICAgewotICAgICAgICAgLy8gQW4gZXhjZXB0aW9uIGNhbiBiZSB0aHJvd24gaGVyZS4KLSAgICAgICAgIC8vIEl0IGl0IGhhcHBlbnMsIFRISVMgd2lsbCBiZSBsZWZ0IHVuaW5pdGlhbGl6ZWQuCi0gICAgICAgICBuZXcgKG1fc3RvcmFnZS5hZGRyZXNzKCkpIGludGVybmFsX3R5cGUoZXhwci5nZXQoKSkgOwotICAgICAgICAgbV9pbml0aWFsaXplZCA9IHRydWUgOwotICAgICAgIH0KLSAgICAgfQotI2VuZGlmCi0KLSAgICB2b2lkIGFzc2lnbl92YWx1ZSAoIGFyZ3VtZW50X3R5cGUgdmFsLCBpc19ub3RfcmVmZXJlbmNlX3RhZyApIHsgZ2V0X2ltcGwoKSA9IHZhbDsgfQotICAgIHZvaWQgYXNzaWduX3ZhbHVlICggYXJndW1lbnRfdHlwZSB2YWwsIGlzX3JlZmVyZW5jZV90YWcgICAgICkgeyBjb25zdHJ1Y3QodmFsKTsgfQotCi0gICAgdm9pZCBkZXN0cm95KCkKLSAgICB7Ci0gICAgICBpZiAoIG1faW5pdGlhbGl6ZWQgKQotICAgICAgICBkZXN0cm95X2ltcGwoaXNfcmVmZXJlbmNlX3ByZWRpY2F0ZSgpKSA7Ci0gICAgfQotCi0gICAgdW5zcGVjaWZpZWRfYm9vbF90eXBlIHNhZmVfYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhbGl6ZWQgPyAmdGhpc190eXBlOjppc19pbml0aWFsaXplZCA6IDAgOyB9Ci0KLSAgICByZWZlcmVuY2VfY29uc3RfdHlwZSBnZXRfaW1wbCgpIGNvbnN0IHsgcmV0dXJuIGRlcmVmZXJlbmNlKGdldF9vYmplY3QoKSwgaXNfcmVmZXJlbmNlX3ByZWRpY2F0ZSgpICkgOyB9Ci0gICAgcmVmZXJlbmNlX3R5cGUgICAgICAgZ2V0X2ltcGwoKSAgICAgICB7IHJldHVybiBkZXJlZmVyZW5jZShnZXRfb2JqZWN0KCksIGlzX3JlZmVyZW5jZV9wcmVkaWNhdGUoKSApIDsgfQotCi0gICAgcG9pbnRlcl9jb25zdF90eXBlIGdldF9wdHJfaW1wbCgpIGNvbnN0IHsgcmV0dXJuIGNhc3RfcHRyKGdldF9vYmplY3QoKSwgaXNfcmVmZXJlbmNlX3ByZWRpY2F0ZSgpICkgOyB9Ci0gICAgcG9pbnRlcl90eXBlICAgICAgIGdldF9wdHJfaW1wbCgpICAgICAgIHsgcmV0dXJuIGNhc3RfcHRyKGdldF9vYmplY3QoKSwgaXNfcmVmZXJlbmNlX3ByZWRpY2F0ZSgpICkgOyB9Ci0KLSAgcHJpdmF0ZSA6Ci0KLSAgICAvLyBpbnRlcm5hbF90eXBlIGNhbiBiZSBlaXRoZXIgVCBvciByZWZlcmVuY2VfY29udGVudDxUPgotI2lmIGRlZmluZWQoTkROQk9PU1RfT1BUSU9OQUxfREVUQUlMX1VTRV9BVFRSSUJVVEVfTUFZX0FMSUFTKQotICAgIC8vIFRoaXMgd29ya2Fyb3VuZCBpcyBzdXBwb3NlZCB0byBzaWxlbmNlIEdDQyB3YXJuaW5ncyBhYm91dCBicm9rZW4gc3RyaWN0IGFsaWFzaW5nIHJ1bGVzCi0gICAgaW50ZXJuYWxfdHlwZSBjb25zdCogZ2V0X29iamVjdCgpIGNvbnN0Ci0gICAgewotICAgICAgICB1bmlvbiB7IHZvaWQgY29uc3QqIGFwX3B2b2lkOyBpbnRlcm5hbF90eXBlIGNvbnN0KiBhc19wdHlwZTsgfSBjYXN0ZXIgPSB7IG1fc3RvcmFnZS5hZGRyZXNzKCkgfTsKLSAgICAgICAgcmV0dXJuIGNhc3Rlci5hc19wdHlwZTsKLSAgICB9Ci0gICAgaW50ZXJuYWxfdHlwZSAqICAgICAgZ2V0X29iamVjdCgpCi0gICAgewotICAgICAgICB1bmlvbiB7IHZvaWQqIGFwX3B2b2lkOyBpbnRlcm5hbF90eXBlKiBhc19wdHlwZTsgfSBjYXN0ZXIgPSB7IG1fc3RvcmFnZS5hZGRyZXNzKCkgfTsKLSAgICAgICAgcmV0dXJuIGNhc3Rlci5hc19wdHlwZTsKLSAgICB9Ci0jZWxzZQotICAgIGludGVybmFsX3R5cGUgY29uc3QqIGdldF9vYmplY3QoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxpbnRlcm5hbF90eXBlIGNvbnN0Kj4obV9zdG9yYWdlLmFkZHJlc3MoKSk7IH0KLSAgICBpbnRlcm5hbF90eXBlICogICAgICBnZXRfb2JqZWN0KCkgICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8aW50ZXJuYWxfdHlwZSAqPiAgICAgKG1fc3RvcmFnZS5hZGRyZXNzKCkpOyB9Ci0jZW5kaWYKLQotICAgIC8vIHJlZmVyZW5jZV9jb250ZW50PFQ+IGxhY2tzIGFuIGltcGxpY2l0IGNvbnZlcnNpb24gdG8gVCYsIHNvIHRoZSBmb2xsb3dpbmcgaXMgbmVlZGVkIHRvIG9idGFpbiBhIHByb3BlciByZWZlcmVuY2UuCi0gICAgcmVmZXJlbmNlX2NvbnN0X3R5cGUgZGVyZWZlcmVuY2UoIGludGVybmFsX3R5cGUgY29uc3QqIHAsIGlzX25vdF9yZWZlcmVuY2VfdGFnICkgY29uc3QgeyByZXR1cm4gKnAgOyB9Ci0gICAgcmVmZXJlbmNlX3R5cGUgICAgICAgZGVyZWZlcmVuY2UoIGludGVybmFsX3R5cGUqICAgICAgIHAsIGlzX25vdF9yZWZlcmVuY2VfdGFnICkgICAgICAgeyByZXR1cm4gKnAgOyB9Ci0gICAgcmVmZXJlbmNlX2NvbnN0X3R5cGUgZGVyZWZlcmVuY2UoIGludGVybmFsX3R5cGUgY29uc3QqIHAsIGlzX3JlZmVyZW5jZV90YWcgICAgICkgY29uc3QgeyByZXR1cm4gcC0+Z2V0KCkgOyB9Ci0gICAgcmVmZXJlbmNlX3R5cGUgICAgICAgZGVyZWZlcmVuY2UoIGludGVybmFsX3R5cGUqICAgICAgIHAsIGlzX3JlZmVyZW5jZV90YWcgICAgICkgICAgICAgeyByZXR1cm4gcC0+Z2V0KCkgOyB9Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTgxKSkKLSAgICB2b2lkIGRlc3Ryb3lfaW1wbCAoIGlzX25vdF9yZWZlcmVuY2VfdGFnICkgeyBnZXRfcHRyX2ltcGwoKS0+aW50ZXJuYWxfdHlwZTo6fmludGVybmFsX3R5cGUoKSA7IG1faW5pdGlhbGl6ZWQgPSBmYWxzZSA7IH0KLSNlbHNlCi0gICAgdm9pZCBkZXN0cm95X2ltcGwgKCBpc19ub3RfcmVmZXJlbmNlX3RhZyApIHsgZ2V0X3B0cl9pbXBsKCktPlQ6On5UKCkgOyBtX2luaXRpYWxpemVkID0gZmFsc2UgOyB9Ci0jZW5kaWYKLQotICAgIHZvaWQgZGVzdHJveV9pbXBsICggaXNfcmVmZXJlbmNlX3RhZyAgICAgKSB7IG1faW5pdGlhbGl6ZWQgPSBmYWxzZSA7IH0KLQotICAgIC8vIElmIFQgaXMgb2YgcmVmZXJlbmNlIHR5cGUsIHRyeWluZyB0byBnZXQgYSBwb2ludGVyIHRvIHRoZSBoZWxkIHZhbHVlIG11c3QgcmVzdWx0IGluIGEgY29tcGlsZS10aW1lIGVycm9yLgotICAgIC8vIERlY2VudCBjb21waWxlcnMgc2hvdWxkIGRpc2FsbG93IGNvbnZlcnNpb25zIGZyb20gcmVmZXJlbmNlX2NvbnRlbnQ8VD4qIHRvIFQqLCBidXQganVzdCBpbiBjYXNlLAotICAgIC8vIHRoZSBmb2xsb3dpbmcgb2x2ZXJsb2FkcyBhcmUgdXNlZCB0byBmaWx0ZXIgb3V0IHRoZSBjYXNlIGFuZCBndWFyYW50ZWUgYW4gZXJyb3IgaW4gY2FzZSBvZiBUIGJlaW5nIGEgcmVmZXJlbmNlLgotICAgIHBvaW50ZXJfY29uc3RfdHlwZSBjYXN0X3B0ciggaW50ZXJuYWxfdHlwZSBjb25zdCogcCwgaXNfbm90X3JlZmVyZW5jZV90YWcgKSBjb25zdCB7IHJldHVybiBwIDsgfQotICAgIHBvaW50ZXJfdHlwZSAgICAgICBjYXN0X3B0ciggaW50ZXJuYWxfdHlwZSAqICAgICAgcCwgaXNfbm90X3JlZmVyZW5jZV90YWcgKSAgICAgICB7IHJldHVybiBwIDsgfQotICAgIHBvaW50ZXJfY29uc3RfdHlwZSBjYXN0X3B0ciggaW50ZXJuYWxfdHlwZSBjb25zdCogcCwgaXNfcmVmZXJlbmNlX3RhZyAgICAgKSBjb25zdCB7IHJldHVybiAmcC0+Z2V0KCkgOyB9Ci0gICAgcG9pbnRlcl90eXBlICAgICAgIGNhc3RfcHRyKCBpbnRlcm5hbF90eXBlICogICAgICBwLCBpc19yZWZlcmVuY2VfdGFnICAgICApICAgICAgIHsgcmV0dXJuICZwLT5nZXQoKSA7IH0KLQotICAgIGJvb2wgbV9pbml0aWFsaXplZCA7Ci0gICAgc3RvcmFnZV90eXBlIG1fc3RvcmFnZSA7Ci19IDsKLQotfSAvLyBuYW1lc3BhY2Ugb3B0aW9uYWxfZGV0YWlsCi0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1jbGFzcyBvcHRpb25hbCA6IHB1YmxpYyBvcHRpb25hbF9kZXRhaWw6Om9wdGlvbmFsX2Jhc2U8VD4KLXsKLSAgICB0eXBlZGVmIG9wdGlvbmFsX2RldGFpbDo6b3B0aW9uYWxfYmFzZTxUPiBiYXNlIDsKLQotICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBiYXNlOjp1bnNwZWNpZmllZF9ib29sX3R5cGUgIHVuc3BlY2lmaWVkX2Jvb2xfdHlwZSA7Ci0KLSAgcHVibGljIDoKLQotICAgIHR5cGVkZWYgb3B0aW9uYWw8VD4gdGhpc190eXBlIDsKLQotICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBiYXNlOjp2YWx1ZV90eXBlICAgICAgICAgICB2YWx1ZV90eXBlIDsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgYmFzZTo6cmVmZXJlbmNlX3R5cGUgICAgICAgcmVmZXJlbmNlX3R5cGUgOwotICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBiYXNlOjpyZWZlcmVuY2VfY29uc3RfdHlwZSByZWZlcmVuY2VfY29uc3RfdHlwZSA7Ci0gICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGJhc2U6OnBvaW50ZXJfdHlwZSAgICAgICAgIHBvaW50ZXJfdHlwZSA7Ci0gICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGJhc2U6OnBvaW50ZXJfY29uc3RfdHlwZSAgIHBvaW50ZXJfY29uc3RfdHlwZSA7Ci0gICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGJhc2U6OmFyZ3VtZW50X3R5cGUgICAgICAgIGFyZ3VtZW50X3R5cGUgOwotCi0gICAgLy8gQ3JlYXRlcyBhbiBvcHRpb25hbDxUPiB1bmluaXRpYWxpemVkLgotICAgIC8vIE5vLXRocm93Ci0gICAgb3B0aW9uYWwoKSA6IGJhc2UoKSB7fQotCi0gICAgLy8gQ3JlYXRlcyBhbiBvcHRpb25hbDxUPiB1bmluaXRpYWxpemVkLgotICAgIC8vIE5vLXRocm93Ci0gICAgb3B0aW9uYWwoIG5vbmVfdCBub25lXyApIDogYmFzZShub25lXykge30KLQotICAgIC8vIENyZWF0ZXMgYW4gb3B0aW9uYWw8VD4gaW5pdGlhbGl6ZWQgd2l0aCAndmFsJy4KLSAgICAvLyBDYW4gdGhyb3cgaWYgVDo6VChUIGNvbnN0JikgZG9lcwotICAgIG9wdGlvbmFsICggYXJndW1lbnRfdHlwZSB2YWwgKSA6IGJhc2UodmFsKSB7fQotCi0gICAgLy8gQ3JlYXRlcyBhbiBvcHRpb25hbDxUPiBpbml0aWFsaXplZCB3aXRoICd2YWwnIElGRiBjb25kIGlzIHRydWUsIG90aGVyd2lzZSBjcmVhdGVzIGFuIHVuaW5pdGlhbGl6ZWQgb3B0aW9uYWwuCi0gICAgLy8gQ2FuIHRocm93IGlmIFQ6OlQoVCBjb25zdCYpIGRvZXMKLSAgICBvcHRpb25hbCAoIGJvb2wgY29uZCwgYXJndW1lbnRfdHlwZSB2YWwgKSA6IGJhc2UoY29uZCx2YWwpIHt9Ci0KLSNpZm5kZWYgTkROQk9PU1RfT1BUSU9OQUxfTk9fQ09OVkVSVElOR19DT1BZX0NUT1IKLSAgICAvLyBOT1RFOiBNU1ZDIG5lZWRzIHRlbXBsYXRlZCB2ZXJzaW9ucyBmaXJzdAotCi0gICAgLy8gQ3JlYXRlcyBhIGRlZXAgY29weSBvZiBhbm90aGVyIGNvbnZlcnRpYmxlIG9wdGlvbmFsPFU+Ci0gICAgLy8gUmVxdWlyZXMgYSB2YWxpZCBjb252ZXJzaW9uIGZyb20gVSB0byBULgotICAgIC8vIENhbiB0aHJvdyBpZiBUOjpUKFUgY29uc3QmKSBkb2VzCi0gICAgdGVtcGxhdGU8Y2xhc3MgVT4KLSAgICBleHBsaWNpdCBvcHRpb25hbCAoIG9wdGlvbmFsPFU+IGNvbnN0JiByaHMgKQotICAgICAgOgotICAgICAgYmFzZSgpCi0gICAgewotICAgICAgaWYgKCByaHMuaXNfaW5pdGlhbGl6ZWQoKSApCi0gICAgICAgIHRoaXMtPmNvbnN0cnVjdChyaHMuZ2V0KCkpOwotICAgIH0KLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX09QVElPTkFMX05PX0lOUExBQ0VfRkFDVE9SWV9TVVBQT1JUCi0gICAgLy8gQ3JlYXRlcyBhbiBvcHRpb25hbDxUPiB3aXRoIGFuIGV4cHJlc3Npb24gd2hpY2ggY2FuIGJlIGVpdGhlcgotICAgIC8vICAoYSkgQW4gaW5zdGFuY2Ugb2YgSW5QbGFjZUZhY3RvcnkgKGkuZS4gaW5fcGxhY2UoYSxiLC4uLixuKTsKLSAgICAvLyAgKGIpIEFuIGluc3RhbmNlIG9mIFR5cGVkSW5QbGFjZUZhY3RvcnkgKCBpLmUuIGluX3BsYWNlPFQ+KGEsYiwuLi4sbik7Ci0gICAgLy8gIChjKSBBbnkgZXhwcmVzc2lvbiBpbXBsaWNpdGVseSBjb252ZXJ0aWJsZSB0byB0aGUgc2luZ2xlIHR5cGUKLSAgICAvLyAgICAgIG9mIGEgb25lLWFyZ3VtZW50IFQncyBjb25zdHJ1Y3Rvci4KLSAgICAvLyAgKGQqKSBXZWFrIGNvbXBpbGVycyAoQkNCKSBtaWdodCBhbHNvIHJlc29sdmVkIEV4cHIgYXMgb3B0aW9uYWw8VD4gYW5kIG9wdGlvbmFsPFU+Ci0gICAgLy8gICAgICAgZXZlbiB0aG91Z2ggZXhwbGljaXQgb3ZlcmxvYWRzIGFyZSBwcmVzZW50IGZvciB0aGVzZS4KLSAgICAvLyBEZXBlbmRpbmcgb24gdGhlIGFib3ZlIHNvbWUgVCBjdG9yIGlzIGNhbGxlZC4KLSAgICAvLyBDYW4gdGhyb3cgaXMgdGhlIHJlc29sdmVkIFQgY3RvciB0aHJvd3MuCi0gICAgdGVtcGxhdGU8Y2xhc3MgRXhwcj4KLSAgICBleHBsaWNpdCBvcHRpb25hbCAoIEV4cHIgY29uc3QmIGV4cHIgKSA6IGJhc2UoZXhwcixuZG5ib29zdDo6YWRkcmVzc29mKGV4cHIpKSB7fQotI2VuZGlmCi0KLSAgICAvLyBDcmVhdGVzIGEgZGVlcCBjb3B5IG9mIGFub3RoZXIgb3B0aW9uYWw8VD4KLSAgICAvLyBDYW4gdGhyb3cgaWYgVDo6VChUIGNvbnN0JikgZG9lcwotICAgIG9wdGlvbmFsICggb3B0aW9uYWwgY29uc3QmIHJocyApIDogYmFzZSggc3RhdGljX2Nhc3Q8YmFzZSBjb25zdCY+KHJocykgKSB7fQotCi0gICAvLyBOby10aHJvdyAoYXNzdW1pbmcgVDo6flQoKSBkb2Vzbid0KQotICAgIH5vcHRpb25hbCgpIHt9Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9PUFRJT05BTF9OT19JTlBMQUNFX0ZBQ1RPUllfU1VQUE9SVCkgJiYgIWRlZmluZWQoTkROQk9PU1RfT1BUSU9OQUxfV0VBS19PVkVSTE9BRF9SRVNPTFVUSU9OKQotICAgIC8vIEFzc2lnbnMgZnJvbSBhbiBleHByZXNzaW9uLiBTZWUgY29ycmVzcG9uZGluZyBjb25zdHJ1Y3Rvci4KLSAgICAvLyBCYXNpYyBHdWFyYW50ZWU6IElmIHRoZSByZXNvbHZlZCBUIGN0b3IgdGhyb3dzLCB0aGlzIGlzIGxlZnQgVU5JTklUSUFMSVpFRAotICAgIHRlbXBsYXRlPGNsYXNzIEV4cHI+Ci0gICAgb3B0aW9uYWwmIG9wZXJhdG9yPSAoIEV4cHIgY29uc3QmIGV4cHIgKQotICAgICAgewotICAgICAgICB0aGlzLT5hc3NpZ25fZXhwcihleHByLG5kbmJvb3N0OjphZGRyZXNzb2YoZXhwcikpOwotICAgICAgICByZXR1cm4gKnRoaXMgOwotICAgICAgfQotI2VuZGlmCi0KLQotI2lmbmRlZiBORE5CT09TVF9PUFRJT05BTF9OT19DT05WRVJUSU5HX0FTU0lHTk1FTlQKLSAgICAvLyBBc3NpZ25zIGZyb20gYW5vdGhlciBjb252ZXJ0aWJsZSBvcHRpb25hbDxVPiAoY29udmVydHMgJiYgZGVlcC1jb3BpZXMgdGhlIHJocyB2YWx1ZSkKLSAgICAvLyBSZXF1aXJlcyBhIHZhbGlkIGNvbnZlcnNpb24gZnJvbSBVIHRvIFQuCi0gICAgLy8gQmFzaWMgR3VhcmFudGVlOiBJZiBUOjpUKCBVIGNvbnN0JiApIHRocm93cywgdGhpcyBpcyBsZWZ0IFVOSU5JVElBTElaRUQKLSAgICB0ZW1wbGF0ZTxjbGFzcyBVPgotICAgIG9wdGlvbmFsJiBvcGVyYXRvcj0gKCBvcHRpb25hbDxVPiBjb25zdCYgcmhzICkKLSAgICAgIHsKLSAgICAgICAgdGhpcy0+YXNzaWduKHJocyk7Ci0gICAgICAgIHJldHVybiAqdGhpcyA7Ci0gICAgICB9Ci0jZW5kaWYKLQotICAgIC8vIEFzc2lnbnMgZnJvbSBhbm90aGVyIG9wdGlvbmFsPFQ+IChkZWVwLWNvcGllcyB0aGUgcmhzIHZhbHVlKQotICAgIC8vIEJhc2ljIEd1YXJhbnRlZTogSWYgVDo6VCggVCBjb25zdCYgKSB0aHJvd3MsIHRoaXMgaXMgbGVmdCBVTklOSVRJQUxJWkVECi0gICAgLy8gIChOT1RFOiBPbiBCQ0IsIHRoaXMgb3BlcmF0b3IgaXMgbm90IGFjdHVhbGx5IGNhbGxlZCBhbmQgbGVmdCBpcyBsZWZ0IFVOTU9ESUZJRUQgaW4gY2FzZSBvZiBhIHRocm93KQotICAgIG9wdGlvbmFsJiBvcGVyYXRvcj0gKCBvcHRpb25hbCBjb25zdCYgcmhzICkKLSAgICAgIHsKLSAgICAgICAgdGhpcy0+YXNzaWduKCBzdGF0aWNfY2FzdDxiYXNlIGNvbnN0Jj4ocmhzKSApIDsKLSAgICAgICAgcmV0dXJuICp0aGlzIDsKLSAgICAgIH0KLQotICAgIC8vIEFzc2lnbnMgZnJvbSBhIFQgKGRlZXAtY29waWVzIHRoZSByaHMgdmFsdWUpCi0gICAgLy8gQmFzaWMgR3VhcmFudGVlOiBJZiBUOjooIFQgY29uc3QmICkgdGhyb3dzLCB0aGlzIGlzIGxlZnQgVU5JTklUSUFMSVpFRAotICAgIG9wdGlvbmFsJiBvcGVyYXRvcj0gKCBhcmd1bWVudF90eXBlIHZhbCApCi0gICAgICB7Ci0gICAgICAgIHRoaXMtPmFzc2lnbiggdmFsICkgOwotICAgICAgICByZXR1cm4gKnRoaXMgOwotICAgICAgfQotCi0gICAgLy8gQXNzaWducyBmcm9tIGEgIm5vbmUiCi0gICAgLy8gV2hpY2ggZGVzdHJveXMgdGhlIGN1cnJlbnQgdmFsdWUsIGlmIGFueSwgbGVhdmluZyB0aGlzIFVOSU5JVElBTElaRUQKLSAgICAvLyBOby10aHJvdyAoYXNzdW1pbmcgVDo6flQoKSBkb2Vzbid0KQotICAgIG9wdGlvbmFsJiBvcGVyYXRvcj0gKCBub25lX3Qgbm9uZV8gKQotICAgICAgewotICAgICAgICB0aGlzLT5hc3NpZ24oIG5vbmVfICkgOwotICAgICAgICByZXR1cm4gKnRoaXMgOwotICAgICAgfQotCi0gICAgdm9pZCBzd2FwKCBvcHRpb25hbCAmIGFyZyApCi0gICAgICB7Ci0gICAgICAgIC8vIGFsbG93IGZvciBLb2VuaWcgbG9va3VwCi0gICAgICAgIHVzaW5nIG5kbmJvb3N0Ojpzd2FwOwotICAgICAgICBzd2FwKCp0aGlzLCBhcmcpOwotICAgICAgfQotCi0KLSAgICAvLyBSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSB2YWx1ZSBpZiB0aGlzIGlzIGluaXRpYWxpemVkLCBvdGhlcndpc2UsCi0gICAgLy8gdGhlIGJlaGF2aW91ciBpcyBVTkRFRklORUQKLSAgICAvLyBOby10aHJvdwotICAgIHJlZmVyZW5jZV9jb25zdF90eXBlIGdldCgpIGNvbnN0IHsgTkROQk9PU1RfQVNTRVJUKHRoaXMtPmlzX2luaXRpYWxpemVkKCkpIDsgcmV0dXJuIHRoaXMtPmdldF9pbXBsKCk7IH0KLSAgICByZWZlcmVuY2VfdHlwZSAgICAgICBnZXQoKSAgICAgICB7IE5ETkJPT1NUX0FTU0VSVCh0aGlzLT5pc19pbml0aWFsaXplZCgpKSA7IHJldHVybiB0aGlzLT5nZXRfaW1wbCgpOyB9Ci0KLSAgICAvLyBSZXR1cm5zIGEgY29weSBvZiB0aGUgdmFsdWUgaWYgdGhpcyBpcyBpbml0aWFsaXplZCwgJ3YnIG90aGVyd2lzZQotICAgIHJlZmVyZW5jZV9jb25zdF90eXBlIGdldF92YWx1ZV9vciAoIHJlZmVyZW5jZV9jb25zdF90eXBlIHYgKSBjb25zdCB7IHJldHVybiB0aGlzLT5pc19pbml0aWFsaXplZCgpID8gZ2V0KCkgOiB2IDsgfQotICAgIHJlZmVyZW5jZV90eXBlICAgICAgIGdldF92YWx1ZV9vciAoIHJlZmVyZW5jZV90eXBlICAgICAgIHYgKSAgICAgICB7IHJldHVybiB0aGlzLT5pc19pbml0aWFsaXplZCgpID8gZ2V0KCkgOiB2IDsgfQotCi0gICAgLy8gUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIHZhbHVlIGlmIHRoaXMgaXMgaW5pdGlhbGl6ZWQsIG90aGVyd2lzZSwKLSAgICAvLyB0aGUgYmVoYXZpb3VyIGlzIFVOREVGSU5FRAotICAgIC8vIE5vLXRocm93Ci0gICAgcG9pbnRlcl9jb25zdF90eXBlIG9wZXJhdG9yLT4oKSBjb25zdCB7IE5ETkJPT1NUX0FTU0VSVCh0aGlzLT5pc19pbml0aWFsaXplZCgpKSA7IHJldHVybiB0aGlzLT5nZXRfcHRyX2ltcGwoKSA7IH0KLSAgICBwb2ludGVyX3R5cGUgICAgICAgb3BlcmF0b3ItPigpICAgICAgIHsgTkROQk9PU1RfQVNTRVJUKHRoaXMtPmlzX2luaXRpYWxpemVkKCkpIDsgcmV0dXJuIHRoaXMtPmdldF9wdHJfaW1wbCgpIDsgfQotCi0gICAgLy8gUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgdmFsdWUgaWYgdGhpcyBpcyBpbml0aWFsaXplZCwgb3RoZXJ3aXNlLAotICAgIC8vIHRoZSBiZWhhdmlvdXIgaXMgVU5ERUZJTkVECi0gICAgLy8gTm8tdGhyb3cKLSAgICByZWZlcmVuY2VfY29uc3RfdHlwZSBvcGVyYXRvciAqKCkgY29uc3QgeyByZXR1cm4gdGhpcy0+Z2V0KCkgOyB9Ci0gICAgcmVmZXJlbmNlX3R5cGUgICAgICAgb3BlcmF0b3IgKigpICAgICAgIHsgcmV0dXJuIHRoaXMtPmdldCgpIDsgfQotCi0gICAgLy8gaW1wbGljaXQgY29udmVyc2lvbiB0byAiYm9vbCIKLSAgICAvLyBOby10aHJvdwotICAgIG9wZXJhdG9yIHVuc3BlY2lmaWVkX2Jvb2xfdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPnNhZmVfYm9vbCgpIDsgfQotCi0gICAgLy8gVGhpcyBpcyBwcm92aWRlZCBmb3IgdGhvc2UgY29tcGlsZXJzIHdoaWNoIGRvbid0IGxpa2UgdGhlIGNvbnZlcnNpb24gdG8gYm9vbAotICAgIC8vIG9uIHNvbWUgY29udGV4dHMuCi0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhdGhpcy0+aXNfaW5pdGlhbGl6ZWQoKSA7IH0KLX0gOwotCi0vLyBSZXR1cm5zIG9wdGlvbmFsPFQ+KHYpCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1vcHRpb25hbDxUPiBtYWtlX29wdGlvbmFsICggVCBjb25zdCYgdiAgKQotewotICByZXR1cm4gb3B0aW9uYWw8VD4odik7Ci19Ci0KLS8vIFJldHVybnMgb3B0aW9uYWw8VD4oY29uZCx2KQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotb3B0aW9uYWw8VD4gbWFrZV9vcHRpb25hbCAoIGJvb2wgY29uZCwgVCBjb25zdCYgdiApCi17Ci0gIHJldHVybiBvcHRpb25hbDxUPihjb25kLHYpOwotfQotCi0vLyBSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSB2YWx1ZSBpZiB0aGlzIGlzIGluaXRpYWxpemVkLCBvdGhlcndpc2UsIHRoZSBiZWhhdmlvdXIgaXMgVU5ERUZJTkVELgotLy8gTm8tdGhyb3cKLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLU5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgb3B0aW9uYWw8VD46OnJlZmVyZW5jZV9jb25zdF90eXBlCi1nZXQgKCBvcHRpb25hbDxUPiBjb25zdCYgb3B0ICkKLXsKLSAgcmV0dXJuIG9wdC5nZXQoKSA7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLU5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgb3B0aW9uYWw8VD46OnJlZmVyZW5jZV90eXBlCi1nZXQgKCBvcHRpb25hbDxUPiYgb3B0ICkKLXsKLSAgcmV0dXJuIG9wdC5nZXQoKSA7Ci19Ci0KLS8vIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSB2YWx1ZSBpZiB0aGlzIGlzIGluaXRpYWxpemVkLCBvdGhlcndpc2UsIHJldHVybnMgTlVMTC4KLS8vIE5vLXRocm93Ci10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG9wdGlvbmFsPFQ+Ojpwb2ludGVyX2NvbnN0X3R5cGUKLWdldCAoIG9wdGlvbmFsPFQ+IGNvbnN0KiBvcHQgKQotewotICByZXR1cm4gb3B0LT5nZXRfcHRyKCkgOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG9wdGlvbmFsPFQ+Ojpwb2ludGVyX3R5cGUKLWdldCAoIG9wdGlvbmFsPFQ+KiBvcHQgKQotewotICByZXR1cm4gb3B0LT5nZXRfcHRyKCkgOwotfQotCi0vLyBSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSB2YWx1ZSBpZiB0aGlzIGlzIGluaXRpYWxpemVkLCBvdGhlcndpc2UsIHRoZSBiZWhhdmlvdXIgaXMgVU5ERUZJTkVELgotLy8gTm8tdGhyb3cKLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLU5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgb3B0aW9uYWw8VD46OnJlZmVyZW5jZV9jb25zdF90eXBlCi1nZXRfb3B0aW9uYWxfdmFsdWVfb3IgKCBvcHRpb25hbDxUPiBjb25zdCYgb3B0LCBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG9wdGlvbmFsPFQ+OjpyZWZlcmVuY2VfY29uc3RfdHlwZSB2ICkKLXsKLSAgcmV0dXJuIG9wdC5nZXRfdmFsdWVfb3IodikgOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG9wdGlvbmFsPFQ+OjpyZWZlcmVuY2VfdHlwZQotZ2V0X29wdGlvbmFsX3ZhbHVlX29yICggb3B0aW9uYWw8VD4mIG9wdCwgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBvcHRpb25hbDxUPjo6cmVmZXJlbmNlX3R5cGUgdiApCi17Ci0gIHJldHVybiBvcHQuZ2V0X3ZhbHVlX29yKHYpIDsKLX0KLQotLy8gUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIHZhbHVlIGlmIHRoaXMgaXMgaW5pdGlhbGl6ZWQsIG90aGVyd2lzZSwgcmV0dXJucyBOVUxMLgotLy8gTm8tdGhyb3cKLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLU5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgb3B0aW9uYWw8VD46OnBvaW50ZXJfY29uc3RfdHlwZQotZ2V0X3BvaW50ZXIgKCBvcHRpb25hbDxUPiBjb25zdCYgb3B0ICkKLXsKLSAgcmV0dXJuIG9wdC5nZXRfcHRyKCkgOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG9wdGlvbmFsPFQ+Ojpwb2ludGVyX3R5cGUKLWdldF9wb2ludGVyICggb3B0aW9uYWw8VD4mIG9wdCApCi17Ci0gIHJldHVybiBvcHQuZ2V0X3B0cigpIDsKLX0KLQotLy8gb3B0aW9uYWwncyByZWxhdGlvbmFsIG9wZXJhdG9ycyAoID09LCAhPSwgPCwgPiwgPD0sID49ICkgaGF2ZSBkZWVwLXNlbWFudGljcyAoY29tcGFyZSB2YWx1ZXMpLgotLy8gV0FSTklORzogVGhpcyBpcyBVTkxJS0UgcG9pbnRlcnMuIFVzZSBlcXVhbF9wb2ludGVlcygpL2xlc3NfcG9pbnRlc3MoKSBpbiBnZW5lcmljIGNvZGUgaW5zdGVhZC4KLQotCi0vLwotLy8gb3B0aW9uYWw8VD4gdnMgb3B0aW9uYWw8VD4gY2FzZXMKLS8vCi0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLWJvb2wgb3BlcmF0b3IgPT0gKCBvcHRpb25hbDxUPiBjb25zdCYgeCwgb3B0aW9uYWw8VD4gY29uc3QmIHkgKQoteyByZXR1cm4gZXF1YWxfcG9pbnRlZXMoeCx5KTsgfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yIDwgKCBvcHRpb25hbDxUPiBjb25zdCYgeCwgb3B0aW9uYWw8VD4gY29uc3QmIHkgKQoteyByZXR1cm4gbGVzc19wb2ludGVlcyh4LHkpOyB9Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLWJvb2wgb3BlcmF0b3IgIT0gKCBvcHRpb25hbDxUPiBjb25zdCYgeCwgb3B0aW9uYWw8VD4gY29uc3QmIHkgKQoteyByZXR1cm4gISggeCA9PSB5ICkgOyB9Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLWJvb2wgb3BlcmF0b3IgPiAoIG9wdGlvbmFsPFQ+IGNvbnN0JiB4LCBvcHRpb25hbDxUPiBjb25zdCYgeSApCi17IHJldHVybiB5IDwgeCA7IH0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotYm9vbCBvcGVyYXRvciA8PSAoIG9wdGlvbmFsPFQ+IGNvbnN0JiB4LCBvcHRpb25hbDxUPiBjb25zdCYgeSApCi17IHJldHVybiAhKCB5IDwgeCApIDsgfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yID49ICggb3B0aW9uYWw8VD4gY29uc3QmIHgsIG9wdGlvbmFsPFQ+IGNvbnN0JiB5ICkKLXsgcmV0dXJuICEoIHggPCB5ICkgOyB9Ci0KLQotLy8KLS8vIG9wdGlvbmFsPFQ+IHZzIFQgY2FzZXMKLS8vCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yID09ICggb3B0aW9uYWw8VD4gY29uc3QmIHgsIFQgY29uc3QmIHkgKQoteyByZXR1cm4gZXF1YWxfcG9pbnRlZXMoeCwgb3B0aW9uYWw8VD4oeSkpOyB9Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLWJvb2wgb3BlcmF0b3IgPCAoIG9wdGlvbmFsPFQ+IGNvbnN0JiB4LCBUIGNvbnN0JiB5ICkKLXsgcmV0dXJuIGxlc3NfcG9pbnRlZXMoeCwgb3B0aW9uYWw8VD4oeSkpOyB9Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLWJvb2wgb3BlcmF0b3IgIT0gKCBvcHRpb25hbDxUPiBjb25zdCYgeCwgVCBjb25zdCYgeSApCi17IHJldHVybiAhKCB4ID09IHkgKSA7IH0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotYm9vbCBvcGVyYXRvciA+ICggb3B0aW9uYWw8VD4gY29uc3QmIHgsIFQgY29uc3QmIHkgKQoteyByZXR1cm4geSA8IHggOyB9Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLWJvb2wgb3BlcmF0b3IgPD0gKCBvcHRpb25hbDxUPiBjb25zdCYgeCwgVCBjb25zdCYgeSApCi17IHJldHVybiAhKCB5IDwgeCApIDsgfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yID49ICggb3B0aW9uYWw8VD4gY29uc3QmIHgsIFQgY29uc3QmIHkgKQoteyByZXR1cm4gISggeCA8IHkgKSA7IH0KLQotLy8KLS8vIFQgdnMgb3B0aW9uYWw8VD4gY2FzZXMKLS8vCi0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLWJvb2wgb3BlcmF0b3IgPT0gKCBUIGNvbnN0JiB4LCBvcHRpb25hbDxUPiBjb25zdCYgeSApCi17IHJldHVybiBlcXVhbF9wb2ludGVlcyggb3B0aW9uYWw8VD4oeCksIHkgKTsgfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yIDwgKCBUIGNvbnN0JiB4LCBvcHRpb25hbDxUPiBjb25zdCYgeSApCi17IHJldHVybiBsZXNzX3BvaW50ZWVzKCBvcHRpb25hbDxUPih4KSwgeSApOyB9Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLWJvb2wgb3BlcmF0b3IgIT0gKCBUIGNvbnN0JiB4LCBvcHRpb25hbDxUPiBjb25zdCYgeSApCi17IHJldHVybiAhKCB4ID09IHkgKSA7IH0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotYm9vbCBvcGVyYXRvciA+ICggVCBjb25zdCYgeCwgb3B0aW9uYWw8VD4gY29uc3QmIHkgKQoteyByZXR1cm4geSA8IHggOyB9Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLWJvb2wgb3BlcmF0b3IgPD0gKCBUIGNvbnN0JiB4LCBvcHRpb25hbDxUPiBjb25zdCYgeSApCi17IHJldHVybiAhKCB5IDwgeCApIDsgfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yID49ICggVCBjb25zdCYgeCwgb3B0aW9uYWw8VD4gY29uc3QmIHkgKQoteyByZXR1cm4gISggeCA8IHkgKSA7IH0KLQotCi0vLwotLy8gb3B0aW9uYWw8VD4gdnMgbm9uZSBjYXNlcwotLy8KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotYm9vbCBvcGVyYXRvciA9PSAoIG9wdGlvbmFsPFQ+IGNvbnN0JiB4LCBub25lX3QgKQoteyByZXR1cm4gZXF1YWxfcG9pbnRlZXMoeCwgb3B0aW9uYWw8VD4oKSApOyB9Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLWJvb2wgb3BlcmF0b3IgPCAoIG9wdGlvbmFsPFQ+IGNvbnN0JiB4LCBub25lX3QgKQoteyByZXR1cm4gbGVzc19wb2ludGVlcyh4LG9wdGlvbmFsPFQ+KCkgKTsgfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yICE9ICggb3B0aW9uYWw8VD4gY29uc3QmIHgsIG5vbmVfdCB5ICkKLXsgcmV0dXJuICEoIHggPT0geSApIDsgfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yID4gKCBvcHRpb25hbDxUPiBjb25zdCYgeCwgbm9uZV90IHkgKQoteyByZXR1cm4geSA8IHggOyB9Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLWJvb2wgb3BlcmF0b3IgPD0gKCBvcHRpb25hbDxUPiBjb25zdCYgeCwgbm9uZV90IHkgKQoteyByZXR1cm4gISggeSA8IHggKSA7IH0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotYm9vbCBvcGVyYXRvciA+PSAoIG9wdGlvbmFsPFQ+IGNvbnN0JiB4LCBub25lX3QgeSApCi17IHJldHVybiAhKCB4IDwgeSApIDsgfQotCi0vLwotLy8gbm9uZSB2cyBvcHRpb25hbDxUPiBjYXNlcwotLy8KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotYm9vbCBvcGVyYXRvciA9PSAoIG5vbmVfdCAsIG9wdGlvbmFsPFQ+IGNvbnN0JiB5ICkKLXsgcmV0dXJuIGVxdWFsX3BvaW50ZWVzKG9wdGlvbmFsPFQ+KCkgLHkpOyB9Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLWJvb2wgb3BlcmF0b3IgPCAoIG5vbmVfdCAsIG9wdGlvbmFsPFQ+IGNvbnN0JiB5ICkKLXsgcmV0dXJuIGxlc3NfcG9pbnRlZXMob3B0aW9uYWw8VD4oKSAseSk7IH0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotYm9vbCBvcGVyYXRvciAhPSAoIG5vbmVfdCB4LCBvcHRpb25hbDxUPiBjb25zdCYgeSApCi17IHJldHVybiAhKCB4ID09IHkgKSA7IH0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotYm9vbCBvcGVyYXRvciA+ICggbm9uZV90IHgsIG9wdGlvbmFsPFQ+IGNvbnN0JiB5ICkKLXsgcmV0dXJuIHkgPCB4IDsgfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yIDw9ICggbm9uZV90IHgsIG9wdGlvbmFsPFQ+IGNvbnN0JiB5ICkKLXsgcmV0dXJuICEoIHkgPCB4ICkgOyB9Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLWJvb2wgb3BlcmF0b3IgPj0gKCBub25lX3QgeCwgb3B0aW9uYWw8VD4gY29uc3QmIHkgKQoteyByZXR1cm4gISggeCA8IHkgKSA7IH0KLQotbmFtZXNwYWNlIG9wdGlvbmFsX2RldGFpbCB7Ci0KLXRlbXBsYXRlPGJvb2wgdXNlX2RlZmF1bHRfY29uc3RydWN0b3I+IHN0cnVjdCBzd2FwX3NlbGVjdG9yOwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc3dhcF9zZWxlY3Rvcjx0cnVlPgotewotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgc3RhdGljIHZvaWQgb3B0aW9uYWxfc3dhcCAoIG9wdGlvbmFsPFQ+JiB4LCBvcHRpb25hbDxUPiYgeSApCi0gICAgewotICAgICAgICBjb25zdCBib29sIGhhc1ggPSAhIXg7Ci0gICAgICAgIGNvbnN0IGJvb2wgaGFzWSA9ICEheTsKLQotICAgICAgICBpZiAoICFoYXNYICYmICFoYXNZICkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiggIWhhc1ggKQotICAgICAgICAgICAgeCA9IG5kbmJvb3N0Ojppbl9wbGFjZSgpOwotICAgICAgICBlbHNlIGlmICggIWhhc1kgKQotICAgICAgICAgICAgeSA9IG5kbmJvb3N0Ojppbl9wbGFjZSgpOwotCi0gICAgICAgIC8vIEJvb3N0LlV0aWxpdHkuU3dhcCB3aWxsIHRha2UgY2FyZSBvZiBBREwgYW5kIHdvcmthcm91bmRzIGZvciBicm9rZW4gY29tcGlsZXJzCi0gICAgICAgIG5kbmJvb3N0Ojpzd2FwKHguZ2V0KCkseS5nZXQoKSk7Ci0KLSAgICAgICAgaWYoICFoYXNYICkKLSAgICAgICAgICAgIHkgPSBuZG5ib29zdDo6bm9uZSA7Ci0gICAgICAgIGVsc2UgaWYoICFoYXNZICkKLSAgICAgICAgICAgIHggPSBuZG5ib29zdDo6bm9uZSA7Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHN3YXBfc2VsZWN0b3I8ZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBzdGF0aWMgdm9pZCBvcHRpb25hbF9zd2FwICggb3B0aW9uYWw8VD4mIHgsIG9wdGlvbmFsPFQ+JiB5ICkKLSAgICB7Ci0gICAgICAgIGNvbnN0IGJvb2wgaGFzWCA9ICEheDsKLSAgICAgICAgY29uc3QgYm9vbCBoYXNZID0gISF5OwotCi0gICAgICAgIGlmICggIWhhc1ggJiYgaGFzWSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHggPSB5LmdldCgpOwotICAgICAgICAgICAgeSA9IG5kbmJvb3N0Ojpub25lIDsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmICggaGFzWCAmJiAhaGFzWSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHkgPSB4LmdldCgpOwotICAgICAgICAgICAgeCA9IG5kbmJvb3N0Ojpub25lIDsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmICggaGFzWCAmJiBoYXNZICkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gQm9vc3QuVXRpbGl0eS5Td2FwIHdpbGwgdGFrZSBjYXJlIG9mIEFETCBhbmQgd29ya2Fyb3VuZHMgZm9yIGJyb2tlbiBjb21waWxlcnMKLSAgICAgICAgICAgIG5kbmJvb3N0Ojpzd2FwKHguZ2V0KCkseS5nZXQoKSk7Ci0gICAgICAgIH0KLSAgICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBvcHRpb25hbF9kZXRhaWwKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBvcHRpb25hbF9zd2FwX3Nob3VsZF91c2VfZGVmYXVsdF9jb25zdHJ1Y3RvciA6IGhhc19ub3Rocm93X2RlZmF1bHRfY29uc3RydWN0b3I8VD4ge30gOwotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdm9pZCBzd2FwICggb3B0aW9uYWw8VD4mIHgsIG9wdGlvbmFsPFQ+JiB5ICkKLXsKLSAgICBvcHRpb25hbF9kZXRhaWw6OnN3YXBfc2VsZWN0b3I8b3B0aW9uYWxfc3dhcF9zaG91bGRfdXNlX2RlZmF1bHRfY29uc3RydWN0b3I8VD46OnZhbHVlPjo6b3B0aW9uYWxfc3dhcCh4LCB5KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L29wdGlvbmFsL29wdGlvbmFsX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L29wdGlvbmFsL29wdGlvbmFsX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1NDk3YTIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9vcHRpb25hbC9vcHRpb25hbF9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA4IEZlcm5hbmRvIEx1aXMgQ2FjY2lvbGEgQ2FyYmFsbGFsLgotLy8KLS8vIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL29wdGlvbmFsIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLS8vIFlvdSBhcmUgd2VsY29tZSB0byBjb250YWN0IHRoZSBhdXRob3IgYXQ6Ci0vLyAgZmVybmFuZG9fY2FjY2lvbGFAaG90bWFpbC5jb20KLS8vCi0vLyBSZXZpc2lvbnM6Ci0vLyAxMCBNYXkgMjAwOCAoYWRkZWQgc3dhcCByZWxhdGVkIGZvcndhcmQgZGVjbGFyYXRpb24pIE5pZWxzIERla2tlcgotLy8gCi0jaWZuZGVmIE5ETkJPT1NUX09QVElPTkFMX09QVElPTkFMX0ZXRF9GTENfMTlOT1YyMDAyX0hQUAotI2RlZmluZSBORE5CT09TVF9PUFRJT05BTF9PUFRJT05BTF9GV0RfRkxDXzE5Tk9WMjAwMl9IUFAKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3Mgb3B0aW9uYWwgOwotCi10ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkIHN3YXAgKCBvcHRpb25hbDxUPiYgLCBvcHRpb25hbDxUPiYgKSA7Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBvcHRpb25hbF9zd2FwX3Nob3VsZF91c2VfZGVmYXVsdF9jb25zdHJ1Y3RvciA7Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3BlbmRpbmcvaW50ZWdlcl9sb2cyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcGVuZGluZy9pbnRlZ2VyX2xvZzIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODUwNGRiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcGVuZGluZy9pbnRlZ2VyX2xvZzIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBpbnRlZ2VyX2xvZzIuaHBwCi0vLwotLy8gICBHaXZlcyB0aGUgaW50ZWdlciBwYXJ0IG9mIHRoZSBsb2dhcml0aG0sIGluIGJhc2UgMiwgb2YgYQotLy8gZ2l2ZW4gbnVtYmVyLiBCZWhhdmlvciBpcyB1bmRlZmluZWQgaWYgdGhlIGFyZ3VtZW50IGlzIDw9IDAuCi0vLwotLy8gICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMDMtMjAwNCwgMjAwOCBHZW5uYXJvIFByb3RhCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gICAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gICAgICAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZm5kZWYgTkROQk9PU1RfSU5URUdFUl9MT0cyX0hQUF9HUF8yMDAzMDMwMQotI2RlZmluZSBORE5CT09TVF9JTlRFR0VSX0xPRzJfSFBQX0dQXzIwMDMwMzAxCi0KLSNpbmNsdWRlIDxhc3NlcnQuaD4KLSNpZmRlZiBfX0JPUkxBTkRDX18KLSNpbmNsdWRlIDxjbGltaXRzPgotI2VuZGlmCi0jaW5jbHVkZSAibmRuYm9vc3QvbGltaXRzLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9jb25maWcuaHBwIgotCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIGludCBpbnRlZ2VyX2xvZzJfaW1wbChUIHgsIGludCBuKSB7Ci0KLSAgICAgIGludCByZXN1bHQgPSAwOwotCi0gICAgICB3aGlsZSAoeCAhPSAxKSB7Ci0KLSAgICAgICAgICBjb25zdCBUIHQgPSBzdGF0aWNfY2FzdDxUPih4ID4+IG4pOwotICAgICAgICAgIGlmICh0KSB7Ci0gICAgICAgICAgICAgIHJlc3VsdCArPSBuOwotICAgICAgICAgICAgICB4ID0gdDsKLSAgICAgICAgICB9Ci0gICAgICAgICAgbiAvPSAyOwotCi0gICAgICB9Ci0KLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLQotCi0KLSAgLy8gaGVscGVyIHRvIGZpbmQgdGhlIG1heGltdW0gcG93ZXIgb2YgdHdvCi0gIC8vIGxlc3MgdGhhbiBwIChtb3JlIGludm9sdmVkIHRoYW4gbmVjZXNzYXJ5LAotICAvLyB0byBhdm9pZCBQVFMpCi0gIC8vCi0gIHRlbXBsYXRlIDxpbnQgcCwgaW50IG4+Ci0gIHN0cnVjdCBtYXhfcG93Ml9sZXNzIHsKLQotICAgICAgZW51bSB7IGMgPSAyKm4gPCBwIH07Ci0KLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0KLSAgICAgICAgICBjID8gKG1heF9wb3cyX2xlc3M8IGMqcCwgMipjKm4+Ojp2YWx1ZSkgOiBuKTsKLQotICB9OwotCi0gIHRlbXBsYXRlIDw+Ci0gIHN0cnVjdCBtYXhfcG93Ml9sZXNzPDAsIDA+IHsKLQotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSAwKTsKLSAgfTsKLQotICAvLyB0aGlzIHRlbXBsYXRlIGlzIGhlcmUganVzdCBmb3IgQm9ybGFuZCA6KAotICAvLyB3ZSBjb3VsZCBzaW1wbHkgcmVseSBvbiBudW1lcmljX2xpbWl0cyBidXQgc29tZXRpbWVzCi0gIC8vIEJvcmxhbmQgdHJpZXMgdG8gdXNlIG51bWVyaWNfbGltaXRzPGNvbnN0IFQ+LCBiZWNhdXNlCi0gIC8vIG9mIGl0cyB1c3VhbCBjb25zdC1yZWxhdGVkIHByb2JsZW1zIGluIGFyZ3VtZW50IGRlZHVjdGlvbgotICAvLyAtIGdwcwotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgc3RydWN0IHdpZHRoIHsKLQotI2lmZGVmIF9fQk9STEFORENfXwotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSBzaXplb2YoVCkgKiBDSEFSX0JJVCk7Ci0jZWxzZQotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSAoc3RkOjpudW1lcmljX2xpbWl0czxUPjo6ZGlnaXRzKSk7Ci0jZW5kaWYKLQotICB9OwotCi0gfSAvLyBkZXRhaWwKLQotCi0gLy8gLS0tLS0tLS0tCi0gLy8gaW50ZWdlcl9sb2cyCi0gLy8gLS0tLS0tLS0tLS0tLS0tCi0gLy8KLSB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSBpbnQgaW50ZWdlcl9sb2cyKFQgeCkgewotCi0gICAgIGFzc2VydCh4ID4gMCk7Ci0KLSAgICAgY29uc3QgaW50IG4gPSBkZXRhaWw6Om1heF9wb3cyX2xlc3M8Ci0gICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OndpZHRoPFQ+IDo6IHZhbHVlLCA0Ci0gICAgICAgICAgICAgICAgICAgPiA6OiB2YWx1ZTsKLQotICAgICByZXR1cm4gZGV0YWlsOjppbnRlZ2VyX2xvZzJfaW1wbCh4LCBuKTsKLQotIH0KLQotCi0KLX0KLQotCi0KLSNlbmRpZiAvLyBpbmNsdWRlIGd1YXJkCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3BvaW50ZWUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wb2ludGVlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzhjOTI3ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3BvaW50ZWUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzQgKzAsMCBAQAotI2lmbmRlZiBQT0lOVEVFX05ETkJPT1NUX0RXQTIwMDQxNV9IUFAKLSMgZGVmaW5lIFBPSU5URUVfTkROQk9PU1RfRFdBMjAwNDE1X0hQUAotCi0vLwotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDQuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMKLS8vIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gdHlwZW5hbWUgcG9pbnRlZTxQPjo6dHlwZSBwcm92aWRlcyB0aGUgcG9pbnRlZSB0eXBlIG9mIFAuCi0vLwotLy8gRm9yIGV4YW1wbGUsIGl0IGlzIFQgZm9yIFQqIGFuZCBYIGZvciBzaGFyZWRfcHRyPFg+LgotLy8KLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaXRlcmF0b3IvZG9jL3BvaW50ZWUuaHRtbAotLy8KLQotIyBpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvaXNfaW5jcmVtZW50YWJsZS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2l0ZXJhdG9yX3RyYWl0cy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9jb25zdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9ldmFsX2lmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgCi0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLSAgdGVtcGxhdGUgPGNsYXNzIFA+Ci0gIHN0cnVjdCBzbWFydF9wdHJfcG9pbnRlZQotICB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIFA6OmVsZW1lbnRfdHlwZSB0eXBlOwotICB9OwotCi0gIHRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvcj4KLSAgc3RydWN0IGl0ZXJhdG9yX3BvaW50ZWUKLSAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+Ojp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0gICAgICAKLSAgICAgIHN0cnVjdCBpbXBsCi0gICAgICB7Ci0gICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgICAgc3RhdGljIGNoYXIgdGVzdChUIGNvbnN0Jik7Ci0gICAgICAgICAgCi0gICAgICAgICAgc3RhdGljIGNoYXIgKCYgdGVzdCh2YWx1ZV90eXBlJikgKVsyXTsKLSAgICAgICAgICAKLSAgICAgICAgICBzdGF0aWMgSXRlcmF0b3ImIHg7Ci0gICAgICB9OwotICAgICAgCi0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfY29uc3RhbnQgPSBzaXplb2YoaW1wbDo6dGVzdCgqaW1wbDo6eCkpID09IDEpOwotICAgICAgCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfYzwKLSMgIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NTEpKQotICAgICAgICAgIDo6bmRuYm9vc3Q6OmRldGFpbDo6aXRlcmF0b3JfcG9pbnRlZTxJdGVyYXRvcj46OmlzX2NvbnN0YW50Ci0jICBlbHNlCi0gICAgICAgICAgaXNfY29uc3RhbnQKLSMgIGVuZGlmIAotICAgICAgICAsIHR5cGVuYW1lIGFkZF9jb25zdDx2YWx1ZV90eXBlPjo6dHlwZQotICAgICAgICAsIHZhbHVlX3R5cGUKLSAgICAgID46OnR5cGUgdHlwZTsKLSAgfTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFA+Ci1zdHJ1Y3QgcG9pbnRlZQotICA6IG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgZGV0YWlsOjppc19pbmNyZW1lbnRhYmxlPFA+Ci0gICAgICAsIGRldGFpbDo6aXRlcmF0b3JfcG9pbnRlZTxQPgotICAgICAgLCBkZXRhaWw6OnNtYXJ0X3B0cl9wb2ludGVlPFA+Ci0gICAgPgotewotfTsKLSAgCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gUE9JTlRFRV9ORE5CT09TVF9EV0EyMDA0MTVfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3BvaW50ZXJfdG9fb3RoZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wb2ludGVyX3RvX290aGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWM2ZDYxMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3BvaW50ZXJfdG9fb3RoZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9QT0lOVEVSX1RPX09USEVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9QT0lOVEVSX1RPX09USEVSX0hQUF9JTkNMVURFRAotCi0vLwotLy8gIHBvaW50ZXJfdG9fb3RoZXIuaHBwCi0vLwotLy8gIChDKSBDb3B5cmlnaHQgSW9uIEdhenRhbmFnYSAyMDA1LgotLy8gIENvcHlyaWdodCAoYykgMjAwNSBQZXRlciBEaW1vdi4KLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvc21hcnRfcHRyL3BvaW50ZXJfdG9fb3RoZXIuaHRtbAotLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLS8vIERlZmluZXMgdGhlIHNhbWUgcG9pbnRlciB0eXBlIChyYXcgb3Igc21hcnQpIHRvIGFub3RoZXIgcG9pbnRlZSB0eXBlCi0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFU+Ci1zdHJ1Y3QgcG9pbnRlcl90b19vdGhlcjsKLQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgCi0gICAgICAgICB0ZW1wbGF0ZTxjbGFzcz4gY2xhc3MgU3A+Ci1zdHJ1Y3QgcG9pbnRlcl90b19vdGhlcjwgU3A8VD4sIFUgPgotewotICAgdHlwZWRlZiBTcDxVPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVDIsIGNsYXNzIFUsIAotICAgICAgICAgdGVtcGxhdGU8Y2xhc3MsIGNsYXNzPiBjbGFzcyBTcD4KLXN0cnVjdCBwb2ludGVyX3RvX290aGVyPCBTcDxULCBUMj4sIFUgPgotewotICAgdHlwZWRlZiBTcDxVLCBUMj4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgVSwgCi0gICAgICAgICB0ZW1wbGF0ZTxjbGFzcywgY2xhc3MsIGNsYXNzPiBjbGFzcyBTcD4KLXN0cnVjdCBwb2ludGVyX3RvX290aGVyPCBTcDxULCBUMiwgVDM+LCBVID4KLXsKLSAgIHR5cGVkZWYgU3A8VSwgVDIsIFQzPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVT4KLXN0cnVjdCBwb2ludGVyX3RvX290aGVyPCBUKiwgVSA+Ci17Ci0gICB0eXBlZGVmIFUqIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9QT0lOVEVSX1RPX09USEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9hZGQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9hZGQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NzRjMGZiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvYWRkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0FSSVRITUVUSUNfQUREX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0FSSVRITUVUSUNfQUREX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9kZWMuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9pbmMuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL3doaWxlLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VsZW0uaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9BREQgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9BREQoeCwgeSkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAwLCBORE5CT09TVF9QUF9XSElMRShORE5CT09TVF9QUF9BRERfUCwgTkROQk9PU1RfUFBfQUREX08sICh4LCB5KSkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0FERCh4LCB5KSBORE5CT09TVF9QUF9BRERfSSh4LCB5KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQUREX0koeCwgeSkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAwLCBORE5CT09TVF9QUF9XSElMRShORE5CT09TVF9QUF9BRERfUCwgTkROQk9PU1RfUFBfQUREX08sICh4LCB5KSkpCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9BRERfUChkLCB4eSkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAxLCB4eSkKLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01XQ0MoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQUREX08oZCwgeHkpIE5ETkJPT1NUX1BQX0FERF9PX0kgeHkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQUREX08oZCwgeHkpIE5ETkJPT1NUX1BQX0FERF9PX0koTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAwLCB4eSksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMSwgeHkpKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfQUREX09fSSh4LCB5KSAoTkROQk9PU1RfUFBfSU5DKHgpLCBORE5CT09TVF9QUF9ERUMoeSkpCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0FERF9EICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQUREX0QoZCwgeCwgeSkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAwLCBORE5CT09TVF9QUF9XSElMRV8gIyMgZChORE5CT09TVF9QUF9BRERfUCwgTkROQk9PU1RfUFBfQUREX08sICh4LCB5KSkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0FERF9EKGQsIHgsIHkpIE5ETkJPT1NUX1BQX0FERF9EX0koZCwgeCwgeSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0FERF9EX0koZCwgeCwgeSkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAwLCBORE5CT09TVF9QUF9XSElMRV8gIyMgZChORE5CT09TVF9QUF9BRERfUCwgTkROQk9PU1RfUFBfQUREX08sICh4LCB5KSkpCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2RlYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2RlYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlMjBjMmQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9kZWMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjg4ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0FSSVRITUVUSUNfREVDX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0FSSVRITUVUSUNfREVDX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0RFQyAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVdDQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9ERUMoeCkgTkROQk9PU1RfUFBfREVDX0koeCkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfREVDKHgpIE5ETkJPT1NUX1BQX0RFQ19PTygoeCkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9ERUNfT08ocGFyKSBORE5CT09TVF9QUF9ERUNfSSAjIyBwYXIKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ19JKHgpIE5ETkJPT1NUX1BQX0RFQ18gIyMgeAotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzAgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzMgMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzQgMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzUgNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzYgNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzcgNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzggNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzkgOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEwIDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMSAxMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEyIDExCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTMgMTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNCAxMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE1IDE0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTYgMTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNyAxNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE4IDE3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTkgMTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMCAxOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIxIDIwCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjIgMjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMyAyMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzI0IDIzCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjUgMjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yNiAyNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzI3IDI2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjggMjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yOSAyOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzMwIDI5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMzEgMzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18zMiAzMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzMzIDMyCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMzQgMzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18zNSAzNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzM2IDM1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMzcgMzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18zOCAzNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzM5IDM4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNDAgMzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ180MSA0MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzQyIDQxCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNDMgNDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ180NCA0MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzQ1IDQ0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNDYgNDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ180NyA0NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzQ4IDQ3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNDkgNDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ181MCA0OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzUxIDUwCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNTIgNTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ181MyA1MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzU0IDUzCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNTUgNTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ181NiA1NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzU3IDU2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNTggNTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ181OSA1OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzYwIDU5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNjEgNjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ182MiA2MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzYzIDYyCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNjQgNjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ182NSA2NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzY2IDY1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNjcgNjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ182OCA2NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzY5IDY4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNzAgNjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ183MSA3MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzcyIDcxCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNzMgNzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ183NCA3MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzc1IDc0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNzYgNzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ183NyA3NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzc4IDc3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNzkgNzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ184MCA3OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzgxIDgwCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfODIgODEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ184MyA4MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzg0IDgzCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfODUgODQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ184NiA4NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzg3IDg2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfODggODcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ184OSA4OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzkwIDg5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfOTEgOTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ185MiA5MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzkzIDkyCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfOTQgOTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ185NSA5NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzk2IDk1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfOTcgOTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ185OCA5NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzk5IDk4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTAwIDk5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTAxIDEwMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEwMiAxMDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMDMgMTAyCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTA0IDEwMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEwNSAxMDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMDYgMTA1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTA3IDEwNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEwOCAxMDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMDkgMTA4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTEwIDEwOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzExMSAxMTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMTIgMTExCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTEzIDExMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzExNCAxMTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMTUgMTE0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTE2IDExNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzExNyAxMTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMTggMTE3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTE5IDExOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEyMCAxMTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMjEgMTIwCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTIyIDEyMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEyMyAxMjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMjQgMTIzCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTI1IDEyNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEyNiAxMjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMjcgMTI2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTI4IDEyNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEyOSAxMjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMzAgMTI5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTMxIDEzMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEzMiAxMzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMzMgMTMyCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTM0IDEzMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEzNSAxMzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMzYgMTM1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTM3IDEzNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEzOCAxMzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMzkgMTM4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTQwIDEzOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE0MSAxNDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNDIgMTQxCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTQzIDE0MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE0NCAxNDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNDUgMTQ0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTQ2IDE0NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE0NyAxNDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNDggMTQ3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTQ5IDE0OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE1MCAxNDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNTEgMTUwCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTUyIDE1MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE1MyAxNTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNTQgMTUzCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTU1IDE1NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE1NiAxNTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNTcgMTU2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTU4IDE1NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE1OSAxNTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNjAgMTU5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTYxIDE2MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE2MiAxNjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNjMgMTYyCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTY0IDE2MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE2NSAxNjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNjYgMTY1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTY3IDE2NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE2OCAxNjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNjkgMTY4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTcwIDE2OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE3MSAxNzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNzIgMTcxCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTczIDE3MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE3NCAxNzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNzUgMTc0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTc2IDE3NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE3NyAxNzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNzggMTc3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTc5IDE3OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE4MCAxNzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xODEgMTgwCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTgyIDE4MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE4MyAxODIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xODQgMTgzCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTg1IDE4NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE4NiAxODUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xODcgMTg2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTg4IDE4NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE4OSAxODgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xOTAgMTg5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTkxIDE5MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE5MiAxOTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xOTMgMTkyCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTk0IDE5MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE5NSAxOTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xOTYgMTk1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTk3IDE5NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE5OCAxOTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xOTkgMTk4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjAwIDE5OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIwMSAyMDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMDIgMjAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjAzIDIwMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIwNCAyMDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMDUgMjA0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjA2IDIwNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIwNyAyMDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMDggMjA3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjA5IDIwOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIxMCAyMDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMTEgMjEwCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjEyIDIxMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIxMyAyMTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMTQgMjEzCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjE1IDIxNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIxNiAyMTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMTcgMjE2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjE4IDIxNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIxOSAyMTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMjAgMjE5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjIxIDIyMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIyMiAyMjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMjMgMjIyCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjI0IDIyMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIyNSAyMjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMjYgMjI1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjI3IDIyNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIyOCAyMjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMjkgMjI4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjMwIDIyOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIzMSAyMzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMzIgMjMxCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjMzIDIzMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIzNCAyMzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMzUgMjM0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjM2IDIzNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIzNyAyMzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMzggMjM3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjM5IDIzOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzI0MCAyMzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yNDEgMjQwCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjQyIDI0MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzI0MyAyNDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yNDQgMjQzCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjQ1IDI0NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzI0NiAyNDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yNDcgMjQ2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjQ4IDI0NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzI0OSAyNDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yNTAgMjQ5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjUxIDI1MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzI1MiAyNTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yNTMgMjUyCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjU0IDI1MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzI1NSAyNTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yNTYgMjU1Ci0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2RldGFpbC9kaXZfYmFzZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2RldGFpbC9kaXZfYmFzZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyNGU0MTIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9kZXRhaWwvZGl2X2Jhc2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfQVJJVEhNRVRJQ19ERVRBSUxfRElWX0JBU0VfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfQVJJVEhNRVRJQ19ERVRBSUxfRElWX0JBU0VfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2luYy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL3N1Yi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb21wYXJpc29uL2xlc3NfZXF1YWwuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL3doaWxlLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VsZW0uaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvcmVtLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfRElWX0JBU0UgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9ESVZfQkFTRSh4LCB5KSBORE5CT09TVF9QUF9XSElMRShORE5CT09TVF9QUF9ESVZfQkFTRV9QLCBORE5CT09TVF9QUF9ESVZfQkFTRV9PLCAoMCwgeCwgeSkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0RJVl9CQVNFKHgsIHkpIE5ETkJPT1NUX1BQX0RJVl9CQVNFX0koeCwgeSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0RJVl9CQVNFX0koeCwgeSkgTkROQk9PU1RfUFBfV0hJTEUoTkROQk9PU1RfUFBfRElWX0JBU0VfUCwgTkROQk9PU1RfUFBfRElWX0JBU0VfTywgKDAsIHgsIHkpKQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19TVFJJQ1QoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRElWX0JBU0VfUChkLCByeHkpIE5ETkJPT1NUX1BQX0RJVl9CQVNFX1BfSU0oZCwgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzMgcnh5KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRElWX0JBU0VfUF9JTShkLCBpbSkgTkROQk9PU1RfUFBfRElWX0JBU0VfUF9JKGQsIGltKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9ESVZfQkFTRV9QKGQsIHJ4eSkgTkROQk9PU1RfUFBfRElWX0JBU0VfUF9JKGQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMCwgcnh5KSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAxLCByeHkpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDIsIHJ4eSkpCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9ESVZfQkFTRV9QX0koZCwgciwgeCwgeSkgTkROQk9PU1RfUFBfTEVTU19FUVVBTF9EKGQsIHksIHgpCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX1NUUklDVCgpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9ESVZfQkFTRV9PKGQsIHJ4eSkgTkROQk9PU1RfUFBfRElWX0JBU0VfT19JTShkLCBORE5CT09TVF9QUF9UVVBMRV9SRU1fMyByeHkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9ESVZfQkFTRV9PX0lNKGQsIGltKSBORE5CT09TVF9QUF9ESVZfQkFTRV9PX0koZCwgaW0pCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0RJVl9CQVNFX08oZCwgcnh5KSBORE5CT09TVF9QUF9ESVZfQkFTRV9PX0koZCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAwLCByeHkpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDEsIHJ4eSksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMiwgcnh5KSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RJVl9CQVNFX09fSShkLCByLCB4LCB5KSAoTkROQk9PU1RfUFBfSU5DKHIpLCBORE5CT09TVF9QUF9TVUJfRChkLCB4LCB5KSwgeSkKLSMKLSMgLyogTkROQk9PU1RfUFBfRElWX0JBU0VfRCAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0RJVl9CQVNFX0QoZCwgeCwgeSkgTkROQk9PU1RfUFBfV0hJTEVfICMjIGQoTkROQk9PU1RfUFBfRElWX0JBU0VfUCwgTkROQk9PU1RfUFBfRElWX0JBU0VfTywgKDAsIHgsIHkpKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9ESVZfQkFTRV9EKGQsIHgsIHkpIE5ETkJPT1NUX1BQX0RJVl9CQVNFX0RfSShkLCB4LCB5KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRElWX0JBU0VfRF9JKGQsIHgsIHkpIE5ETkJPT1NUX1BQX1dISUxFXyAjIyBkKE5ETkJPT1NUX1BQX0RJVl9CQVNFX1AsIE5ETkJPT1NUX1BQX0RJVl9CQVNFX08sICgwLCB4LCB5KSkKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvaW5jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvaW5jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODg3ODM5NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2luYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyODggKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfQVJJVEhNRVRJQ19JTkNfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfQVJJVEhNRVRJQ19JTkNfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfSU5DICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NV0NDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQyh4KSBORE5CT09TVF9QUF9JTkNfSSh4KQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JTkMoeCkgTkROQk9PU1RfUFBfSU5DX09PKCh4KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ19PTyhwYXIpIE5ETkJPT1NUX1BQX0lOQ19JICMjIHBhcgotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DX0koeCkgTkROQk9PU1RfUFBfSU5DXyAjIyB4Ci0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMSAyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMiAzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMyA0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNCA1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNSA2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNiA3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNyA4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfOCA5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfOSAxMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEwIDExCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTEgMTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMiAxMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEzIDE0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTQgMTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNSAxNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE2IDE3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTcgMTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xOCAxOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE5IDIwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjAgMjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMSAyMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIyIDIzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjMgMjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yNCAyNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzI1IDI2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjYgMjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yNyAyOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzI4IDI5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjkgMzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18zMCAzMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzMxIDMyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMzIgMzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18zMyAzNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzM0IDM1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMzUgMzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18zNiAzNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzM3IDM4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMzggMzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18zOSA0MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzQwIDQxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNDEgNDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ180MiA0MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzQzIDQ0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNDQgNDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ180NSA0NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzQ2IDQ3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNDcgNDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ180OCA0OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzQ5IDUwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNTAgNTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ181MSA1MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzUyIDUzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNTMgNTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ181NCA1NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzU1IDU2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNTYgNTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ181NyA1OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzU4IDU5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNTkgNjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ182MCA2MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzYxIDYyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNjIgNjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ182MyA2NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzY0IDY1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNjUgNjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ182NiA2NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzY3IDY4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNjggNjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ182OSA3MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzcwIDcxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNzEgNzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ183MiA3MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzczIDc0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNzQgNzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ183NSA3NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzc2IDc3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNzcgNzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ183OCA3OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzc5IDgwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfODAgODEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ184MSA4MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzgyIDgzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfODMgODQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ184NCA4NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzg1IDg2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfODYgODcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ184NyA4OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzg4IDg5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfODkgOTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ185MCA5MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzkxIDkyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfOTIgOTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ185MyA5NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzk0IDk1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfOTUgOTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ185NiA5NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzk3IDk4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfOTggOTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ185OSAxMDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMDAgMTAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTAxIDEwMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEwMiAxMDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMDMgMTA0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTA0IDEwNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEwNSAxMDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMDYgMTA3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTA3IDEwOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEwOCAxMDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMDkgMTEwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTEwIDExMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzExMSAxMTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMTIgMTEzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTEzIDExNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzExNCAxMTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMTUgMTE2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTE2IDExNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzExNyAxMTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMTggMTE5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTE5IDEyMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEyMCAxMjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMjEgMTIyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTIyIDEyMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEyMyAxMjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMjQgMTI1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTI1IDEyNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEyNiAxMjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMjcgMTI4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTI4IDEyOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEyOSAxMzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMzAgMTMxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTMxIDEzMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEzMiAxMzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMzMgMTM0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTM0IDEzNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEzNSAxMzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMzYgMTM3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTM3IDEzOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEzOCAxMzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMzkgMTQwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTQwIDE0MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE0MSAxNDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNDIgMTQzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTQzIDE0NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE0NCAxNDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNDUgMTQ2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTQ2IDE0NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE0NyAxNDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNDggMTQ5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTQ5IDE1MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE1MCAxNTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNTEgMTUyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTUyIDE1MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE1MyAxNTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNTQgMTU1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTU1IDE1NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE1NiAxNTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNTcgMTU4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTU4IDE1OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE1OSAxNjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNjAgMTYxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTYxIDE2MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE2MiAxNjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNjMgMTY0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTY0IDE2NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE2NSAxNjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNjYgMTY3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTY3IDE2OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE2OCAxNjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNjkgMTcwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTcwIDE3MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE3MSAxNzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNzIgMTczCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTczIDE3NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE3NCAxNzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNzUgMTc2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTc2IDE3NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE3NyAxNzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNzggMTc5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTc5IDE4MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE4MCAxODEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xODEgMTgyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTgyIDE4MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE4MyAxODQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xODQgMTg1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTg1IDE4NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE4NiAxODcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xODcgMTg4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTg4IDE4OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE4OSAxOTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xOTAgMTkxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTkxIDE5MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE5MiAxOTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xOTMgMTk0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTk0IDE5NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE5NSAxOTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xOTYgMTk3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTk3IDE5OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE5OCAxOTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xOTkgMjAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjAwIDIwMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIwMSAyMDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMDIgMjAzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjAzIDIwNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIwNCAyMDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMDUgMjA2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjA2IDIwNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIwNyAyMDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMDggMjA5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjA5IDIxMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIxMCAyMTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMTEgMjEyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjEyIDIxMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIxMyAyMTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMTQgMjE1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjE1IDIxNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIxNiAyMTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMTcgMjE4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjE4IDIxOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIxOSAyMjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMjAgMjIxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjIxIDIyMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIyMiAyMjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMjMgMjI0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjI0IDIyNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIyNSAyMjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMjYgMjI3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjI3IDIyOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIyOCAyMjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMjkgMjMwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjMwIDIzMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIzMSAyMzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMzIgMjMzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjMzIDIzNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIzNCAyMzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMzUgMjM2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjM2IDIzNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIzNyAyMzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMzggMjM5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjM5IDI0MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzI0MCAyNDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yNDEgMjQyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjQyIDI0MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzI0MyAyNDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yNDQgMjQ1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjQ1IDI0NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzI0NiAyNDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yNDcgMjQ4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjQ4IDI0OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzI0OSAyNTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yNTAgMjUxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjUxIDI1MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzI1MiAyNTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yNTMgMjU0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjU0IDI1NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzI1NSAyNTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yNTYgMjU2Ci0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL21vZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL21vZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmNTc1NGQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9tb2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfQVJJVEhNRVRJQ19NT0RfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfQVJJVEhNRVRJQ19NT0RfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2RldGFpbC9kaXZfYmFzZS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VsZW0uaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9NT0QgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9NT0QoeCwgeSkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAxLCBORE5CT09TVF9QUF9ESVZfQkFTRSh4LCB5KSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTU9EKHgsIHkpIE5ETkJPT1NUX1BQX01PRF9JKHgsIHkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9NT0RfSSh4LCB5KSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDEsIE5ETkJPT1NUX1BQX0RJVl9CQVNFKHgsIHkpKQotIyBlbmRpZgotIwotIyAvKiBORE5CT09TVF9QUF9NT0RfRCAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX01PRF9EKGQsIHgsIHkpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMSwgTkROQk9PU1RfUFBfRElWX0JBU0VfRChkLCB4LCB5KSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTU9EX0QoZCwgeCwgeSkgTkROQk9PU1RfUFBfTU9EX0RfSShkLCB4LCB5KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTU9EX0RfSShkLCB4LCB5KSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDEsIE5ETkJPT1NUX1BQX0RJVl9CQVNFX0QoZCwgeCwgeSkpCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL3N1Yi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL3N1Yi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0MzMxZjIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9zdWIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfQVJJVEhNRVRJQ19TVUJfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfQVJJVEhNRVRJQ19TVUJfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2RlYy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvd2hpbGUuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWxlbS5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX1NVQiAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NVQih4LCB5KSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDAsIE5ETkJPT1NUX1BQX1dISUxFKE5ETkJPT1NUX1BQX1NVQl9QLCBORE5CT09TVF9QUF9TVUJfTywgKHgsIHkpKSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU1VCKHgsIHkpIE5ETkJPT1NUX1BQX1NVQl9JKHgsIHkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TVUJfSSh4LCB5KSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDAsIE5ETkJPT1NUX1BQX1dISUxFKE5ETkJPT1NUX1BQX1NVQl9QLCBORE5CT09TVF9QUF9TVUJfTywgKHgsIHkpKSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NVQl9QKGQsIHh5KSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDEsIHh5KQotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVdDQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TVUJfTyhkLCB4eSkgTkROQk9PU1RfUFBfU1VCX09fSSB4eQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TVUJfTyhkLCB4eSkgTkROQk9PU1RfUFBfU1VCX09fSShORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDAsIHh5KSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAxLCB4eSkpCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TVUJfT19JKHgsIHkpIChORE5CT09TVF9QUF9ERUMoeCksIE5ETkJPT1NUX1BQX0RFQyh5KSkKLSMKLSMgLyogTkROQk9PU1RfUFBfU1VCX0QgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TVUJfRChkLCB4LCB5KSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDAsIE5ETkJPT1NUX1BQX1dISUxFXyAjIyBkKE5ETkJPT1NUX1BQX1NVQl9QLCBORE5CT09TVF9QUF9TVUJfTywgKHgsIHkpKSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU1VCX0QoZCwgeCwgeSkgTkROQk9PU1RfUFBfU1VCX0RfSShkLCB4LCB5KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU1VCX0RfSShkLCB4LCB5KSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDAsIE5ETkJPT1NUX1BQX1dISUxFXyAjIyBkKE5ETkJPT1NUX1BQX1NVQl9QLCBORE5CT09TVF9QUF9TVUJfTywgKHgsIHkpKSkKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FycmF5L2RhdGEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJyYXkvZGF0YS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjOGVlNzQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJyYXkvZGF0YS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0FSUkFZX0RBVEFfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfQVJSQVlfREFUQV9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWxlbS5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0FSUkFZX0RBVEEgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9BUlJBWV9EQVRBKGFycmF5KSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDEsIGFycmF5KQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9BUlJBWV9EQVRBKGFycmF5KSBORE5CT09TVF9QUF9BUlJBWV9EQVRBX0koYXJyYXkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9BUlJBWV9EQVRBX0koYXJyYXkpIE5ETkJPT1NUX1BQX0FSUkFZX0RBVEFfSUkgYXJyYXkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0FSUkFZX0RBVEFfSUkoc2l6ZSwgZGF0YSkgZGF0YQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJyYXkvZWxlbS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcnJheS9lbGVtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTZiYmE2Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcnJheS9lbGVtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfQVJSQVlfRUxFTV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9BUlJBWV9FTEVNX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJyYXkvZGF0YS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcnJheS9zaXplLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWxlbS5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0gKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9BUlJBWV9FTEVNKGksIGFycmF5KSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKE5ETkJPT1NUX1BQX0FSUkFZX1NJWkUoYXJyYXkpLCBpLCBORE5CT09TVF9QUF9BUlJBWV9EQVRBKGFycmF5KSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQVJSQVlfRUxFTShpLCBhcnJheSkgTkROQk9PU1RfUFBfQVJSQVlfRUxFTV9JKGksIGFycmF5KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQVJSQVlfRUxFTV9JKGksIGFycmF5KSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKE5ETkJPT1NUX1BQX0FSUkFZX1NJWkUoYXJyYXkpLCBpLCBORE5CT09TVF9QUF9BUlJBWV9EQVRBKGFycmF5KSkKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FycmF5L3NpemUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJyYXkvc2l6ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlZTkxYmQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJyYXkvc2l6ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0FSUkFZX1NJWkVfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfQVJSQVlfU0laRV9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWxlbS5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0FSUkFZX1NJWkUgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9BUlJBWV9TSVpFKGFycmF5KSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDAsIGFycmF5KQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9BUlJBWV9TSVpFKGFycmF5KSBORE5CT09TVF9QUF9BUlJBWV9TSVpFX0koYXJyYXkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9BUlJBWV9TSVpFX0koYXJyYXkpIE5ETkJPT1NUX1BQX0FSUkFZX1NJWkVfSUkgYXJyYXkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0FSUkFZX1NJWkVfSUkoc2l6ZSwgZGF0YSkgc2l6ZQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzZWQ5ZjYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0NBVF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9DQVRfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfQ0FUICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NV0NDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NBVChhLCBiKSBORE5CT09TVF9QUF9DQVRfSShhLCBiKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DQVQoYSwgYikgTkROQk9PU1RfUFBfQ0FUX09PKChhLCBiKSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NBVF9PTyhwYXIpIE5ETkJPT1NUX1BQX0NBVF9JICMjIHBhcgotIyBlbmRpZgotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVNWQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DQVRfSShhLCBiKSBhICMjIGIKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ0FUX0koYSwgYikgTkROQk9PU1RfUFBfQ0FUX0lJKH4sIGEgIyMgYikKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NBVF9JSShwLCByZXMpIHJlcwotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29tbWFfaWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29tbWFfaWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYWJmYmYxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbW1hX2lmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfQ09NTUFfSUZfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfQ09NTUFfSUZfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9wdW5jdHVhdGlvbi9jb21tYV9pZi5ocHA+Ci0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb21wYXJpc29uL2xlc3NfZXF1YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29tcGFyaXNvbi9sZXNzX2VxdWFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2MyMDljMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb21wYXJpc29uL2xlc3NfZXF1YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfQ09NUEFSSVNPTl9MRVNTX0VRVUFMX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0NPTVBBUklTT05fTEVTU19FUVVBTF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvc3ViLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9ub3QuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9MRVNTX0VRVUFMICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTEVTU19FUVVBTCh4LCB5KSBORE5CT09TVF9QUF9OT1QoTkROQk9PU1RfUFBfU1VCKHgsIHkpKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MRVNTX0VRVUFMKHgsIHkpIE5ETkJPT1NUX1BQX0xFU1NfRVFVQUxfSSh4LCB5KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTEVTU19FUVVBTF9JKHgsIHkpIE5ETkJPT1NUX1BQX05PVChORE5CT09TVF9QUF9TVUIoeCwgeSkpCi0jIGVuZGlmCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0xFU1NfRVFVQUxfRCAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xFU1NfRVFVQUxfRChkLCB4LCB5KSBORE5CT09TVF9QUF9OT1QoTkROQk9PU1RfUFBfU1VCX0QoZCwgeCwgeSkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xFU1NfRVFVQUxfRChkLCB4LCB5KSBORE5CT09TVF9QUF9MRVNTX0VRVUFMX0RfSShkLCB4LCB5KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTEVTU19FUVVBTF9EX0koZCwgeCwgeSkgTkROQk9PU1RfUFBfTk9UKE5ETkJPT1NUX1BQX1NVQl9EKGQsIHgsIHkpKQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmE1OWI0ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLTIwMTEuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IEVkd2FyZCBEaWVuZXIgMjAxMS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgICAgICAqCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfQ09ORklHX0NPTkZJR19IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9DT05GSUdfQ09ORklHX0hQUAotIwotIyAvKiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MgKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0NPTkZJR19TVFJJQ1QoKSAweDAwMDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0NPTkZJR19JREVBTCgpIDB4MDAwMgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfQ09ORklHX01TVkMoKSAweDAwMDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0NPTkZJR19NV0NDKCkgMHgwMDA4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9DT05GSUdfQkNDKCkgMHgwMDEwCi0jIGRlZmluZSBORE5CT09TVF9QUF9DT05GSUdfRURHKCkgMHgwMDIwCi0jIGRlZmluZSBORE5CT09TVF9QUF9DT05GSUdfRE1DKCkgMHgwMDQwCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MKLSMgICAgaWYgZGVmaW5lZChfX0dDQ1hNTF9fKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpIChORE5CT09TVF9QUF9DT05GSUdfU1RSSUNUKCkpCi0jICAgIGVsaWYgZGVmaW5lZChfX1dBVkVfXykKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAoTkROQk9PU1RfUFBfQ09ORklHX1NUUklDVCgpKQotIyAgICBlbGlmIGRlZmluZWQoX19NV0VSS1NfXykgJiYgX19NV0VSS1NfXyA+PSAweDMyMDAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAoTkROQk9PU1RfUFBfQ09ORklHX1NUUklDVCgpKQotIyAgICBlbGlmIGRlZmluZWQoX19FREdfXykgfHwgZGVmaW5lZChfX0VER19WRVJTSU9OX18pCi0jICAgICAgICBpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBfX0VER19WRVJTSU9OX18gPj0gMzA4Ci0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpIChORE5CT09TVF9QUF9DT05GSUdfTVNWQygpKQotIyAgICAgICAgZWxzZQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAoTkROQk9PU1RfUFBfQ09ORklHX0VERygpIHwgTkROQk9PU1RfUFBfQ09ORklHX1NUUklDVCgpKQotIyAgICAgICAgZW5kaWYKLSMgICAgZWxpZiBkZWZpbmVkKF9fTVdFUktTX18pCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgKE5ETkJPT1NUX1BQX0NPTkZJR19NV0NDKCkpCi0jICAgIGVsaWYgZGVmaW5lZChfX0RNQ19fKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpIChORE5CT09TVF9QUF9DT05GSUdfRE1DKCkpCi0jICAgIGVsaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pICYmIF9fQk9STEFORENfXyA+PSAweDU4MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpIChORE5CT09TVF9QUF9DT05GSUdfU1RSSUNUKCkpCi0jICAgIGVsaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pIHx8IGRlZmluZWQoX19JQk1DX18pIHx8IGRlZmluZWQoX19JQk1DUFBfXykgfHwgZGVmaW5lZChfX1NVTlBST19DQykKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAoTkROQk9PU1RfUFBfQ09ORklHX0JDQygpKQotIyAgICBlbGlmIGRlZmluZWQoX01TQ19WRVIpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgKE5ETkJPT1NUX1BQX0NPTkZJR19NU1ZDKCkpCi0jICAgIGVsc2UKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAoTkROQk9PU1RfUFBfQ09ORklHX1NUUklDVCgpKQotIyAgICBlbmRpZgotIyBlbmRpZgotIwotIyAvKiBORE5CT09TVF9QUF9DT05GSUdfRVhURU5ERURfTElORV9JTkZPICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUF9DT05GSUdfRVhURU5ERURfTElORV9JTkZPCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT05GSUdfRVhURU5ERURfTElORV9JTkZPIDAKLSMgZW5kaWYKLSMKLSMgLyogTkROQk9PU1RfUFBfQ09ORklHX0VSUk9SUyAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFBfQ09ORklHX0VSUk9SUwotIyAgICBpZmRlZiBOREVCVUcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9DT05GSUdfRVJST1JTIDAKLSMgICAgZWxzZQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPTkZJR19FUlJPUlMgMQotIyAgICBlbmRpZgotIyBlbmRpZgotIwotIyAvKiBORE5CT09TVF9QUF9WQVJJQURJQ1MgKi8KLSMKLSMgaWYgIWRlZmluZWQgTkROQk9PU1RfUFBfVkFSSUFESUNTCi0jICAgIC8qIHZhcmlhZGljIHN1cHBvcnQgZXhwbGljaXRseSBkaXNhYmxlZCBmb3IgYWxsIHVudGVzdGVkIGNvbXBpbGVycyAqLwotIyAgICBpZiBkZWZpbmVkIF9fR0NDWE1MX18gfHwgZGVmaW5lZCBfX0NVREFDQ19fIHx8IGRlZmluZWQgX19QQVRIU0NBTEVfXyB8fCBkZWZpbmVkIF9fY2xhbmdfXyB8fCBkZWZpbmVkIF9fRE1DX18gfHwgZGVmaW5lZCBfX0NPREVHRUFSQ19fIHx8IGRlZmluZWQgX19CT1JMQU5EQ19fIHx8IGRlZmluZWQgX19NV0VSS1NfXyB8fCBkZWZpbmVkIF9fU1VOUFJPX0NDIHx8IGRlZmluZWQgX19IUF9hQ0MgJiYgIWRlZmluZWQgX19FREdfXyB8fCBkZWZpbmVkIF9fTVJDX18gfHwgZGVmaW5lZCBfX1NDX18gfHwgZGVmaW5lZCBfX0lCTUNQUF9fIHx8IGRlZmluZWQgX19QR0kKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ1MgMAotIyAgICAvKiBWQysrIChDL0MrKykgKi8KLSMgICAgZWxpZiBkZWZpbmVkIF9NU0NfVkVSICYmIF9NU0NfVkVSID49IDE0MDAgJiYgIWRlZmluZWQgX19FREdfXwotIyAgICAgICAgaWYgX01TQ19WRVIgPj0gMTQwMAotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ1MgMQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ1NfTVNWQyAxCi0jICAgICAgICBlbHNlCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDUyAwCi0jICAgICAgICBlbmRpZgotIyAgICAvKiBXYXZlIChDL0MrKyksIEdDQyAoQysrKSAqLwotIyAgICBlbGlmIGRlZmluZWQgX19XQVZFX18gJiYgX19XQVZFX0hBU19WQVJJQURJQ1NfXyB8fCBkZWZpbmVkIF9fR05VQ19fICYmIF9fR1hYX0VYUEVSSU1FTlRBTF9DWFgwWF9fCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNTIDEKLSMgICAgLyogRURHLWJhc2VkIChDL0MrKyksIEdDQyAoQyksIGFuZCB1bmtub3duIChDL0MrKykgKi8KLSMgICAgZWxpZiAhZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiBfX1NURENfVkVSU0lPTl9fID49IDE5OTkwMUwgfHwgX19jcGx1c3BsdXMgPj0gMjAxMTAzTAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDUyAxCi0jICAgIGVsc2UKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ1MgMAotIyAgICBlbmRpZgotIyBlbGlmICFORE5CT09TVF9QUF9WQVJJQURJQ1MgKyAxIDwgMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9WQVJJQURJQ1MKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDUyAxCi0jICAgIGlmIGRlZmluZWQgX01TQ19WRVIgJiYgX01TQ19WRVIgPj0gMTQwMCAmJiAhKGRlZmluZWQgX19FREdfXyB8fCBkZWZpbmVkIF9fR0NDWE1MX18gfHwgZGVmaW5lZCBfX0NVREFDQ19fIHx8IGRlZmluZWQgX19QQVRIU0NBTEVfXyB8fCBkZWZpbmVkIF9fY2xhbmdfXyB8fCBkZWZpbmVkIF9fRE1DX18gfHwgZGVmaW5lZCBfX0NPREVHRUFSQ19fIHx8IGRlZmluZWQgX19CT1JMQU5EQ19fIHx8IGRlZmluZWQgX19NV0VSS1NfXyB8fCBkZWZpbmVkIF9fU1VOUFJPX0NDIHx8IGRlZmluZWQgX19IUF9hQ0MgfHwgZGVmaW5lZCBfX01SQ19fIHx8IGRlZmluZWQgX19TQ19fIHx8IGRlZmluZWQgX19JQk1DUFBfXyB8fCBkZWZpbmVkIF9fUEdJKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDU19NU1ZDIDEKLSMgICAgZW5kaWYKLSMgZWxzZQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9WQVJJQURJQ1MKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDUyAwCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2RlZHVjZV9kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZGVkdWNlX2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Yzc0Y2MwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZGVkdWNlX2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9DT05UUk9MX0RFRFVDRV9EX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0NPTlRST0xfREVEVUNFX0RfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL3doaWxlLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC9hdXRvX3JlYy5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0RFRFVDRV9EICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERURVQ0VfRCgpIE5ETkJPT1NUX1BQX0FVVE9fUkVDKE5ETkJPT1NUX1BQX1dISUxFX1AsIDI1NikKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZGV0YWlsL2RtYy93aGlsZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2RldGFpbC9kbWMvd2hpbGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzY2ZDliLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZGV0YWlsL2RtYy93aGlsZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MzYgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfQ09OVFJPTF9ERVRBSUxfV0hJTEVfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfQ09OVFJPTF9ERVRBSUxfV0hJTEVfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2lpZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2Jvb2wuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWF0LmhwcD4KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfM19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfN19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDExLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xM19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xN19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yM19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yN19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yOF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yOV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDMwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8zMF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDMxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8zMV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDMyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8zMl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDMzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8zM19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDM0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8zNF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDM1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8zNV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDM2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8zNl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDM3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8zN19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDM4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8zOF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDM5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8zOV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDQwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV80MF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDQxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV80MV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDQyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV80Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDQzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV80M19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDQ0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV80NF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDQ1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV80NV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDQ2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV80Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDQ3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV80N19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDQ4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV80OF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDQ5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV80OV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDUwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV81MF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDUxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV81MV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDUyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV81Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDUzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV81M19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDU0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV81NF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDU1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV81NV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDU2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV81Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDU3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV81N19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDU4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV81OF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDU5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV81OV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDYwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV82MF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDYxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV82MV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDYyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV82Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDYzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV82M19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDY0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV82NF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDY1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV82NV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDY2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV82Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDY3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV82N19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDY4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV82OF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDY5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV82OV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDcwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV83MF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDcxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV83MV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDcyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV83Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDczLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV83M19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDc0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV83NF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDc1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV83NV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDc2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV83Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDc3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV83N19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDc4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV83OF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDc5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV83OV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDgwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV84MF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDgxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV84MV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDgyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV84Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDgzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV84M19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDg0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV84NF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDg1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV84NV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDg2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV84Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDg3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV84N19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDg4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV84OF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDg5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV84OV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDkwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV85MF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDkxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV85MV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDkyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV85Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDkzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV85M19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDk0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV85NF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDk1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV85NV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDk2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV85Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDk3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV85N19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDk4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV85OF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDk5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV85OV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEwMCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTAwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEwMF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEwMSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTAxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEwMV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEwMiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTAyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEwMl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEwMywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTAzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEwM19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEwNCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEwNF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEwNSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEwNV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEwNiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEwNl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEwNywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEwN19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEwOCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEwOF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEwOSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEwOV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDExMCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTEwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzExMF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDExMSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTExKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzExMV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDExMiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTEyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzExMl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDExMywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTEzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzExM19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDExNCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzExNF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDExNSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzExNV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDExNiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzExNl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDExNywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzExN19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDExOCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzExOF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDExOSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzExOV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEyMCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTIwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEyMF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEyMSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTIxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEyMV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEyMiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTIyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEyMl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEyMywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTIzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEyM19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEyNCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEyNF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEyNSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEyNV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEyNiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEyNl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEyNywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEyN19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEyOCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEyOF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEyOSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEyOV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEzMCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTMwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEzMF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEzMSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTMxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEzMV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEzMiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTMyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEzMl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEzMywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTMzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEzM19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEzNCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEzNF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEzNSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEzNV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEzNiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEzNl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEzNywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEzN19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEzOCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEzOF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEzOSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEzOV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE0MCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE0MF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE0MSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE0MV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE0MiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE0Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE0MywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE0M19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE0NCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE0NF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE0NSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE0NV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE0NiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE0Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE0NywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE0N19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE0OCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE0OF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE0OSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE0OV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE1MCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTUwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE1MF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE1MSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTUxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE1MV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE1MiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTUyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE1Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE1MywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTUzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE1M19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE1NCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE1NF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE1NSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE1NV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE1NiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE1Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE1NywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE1N19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE1OCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE1OF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE1OSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE1OV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE2MCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTYwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE2MF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE2MSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTYxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE2MV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE2MiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTYyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE2Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE2MywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTYzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE2M19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE2NCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE2NF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE2NSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE2NV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE2NiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE2Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE2NywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE2N19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE2OCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE2OF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE2OSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE2OV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE3MCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTcwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE3MF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE3MSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTcxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE3MV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE3MiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTcyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE3Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE3MywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTczKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE3M19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE3NCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE3NF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE3NSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE3NV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE3NiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE3Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE3NywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE3N19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE3OCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE3OF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE3OSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE3OV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE4MCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTgwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE4MF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE4MSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTgxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE4MV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE4MiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTgyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE4Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE4MywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTgzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE4M19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE4NCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE4NF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE4NSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE4NV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE4NiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE4Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE4NywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE4N19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE4OCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE4OF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE4OSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE4OV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE5MCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTkwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE5MF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE5MSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTkxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE5MV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE5MiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTkyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE5Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE5MywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTkzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE5M19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE5NCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE5NF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE5NSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE5NV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE5NiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE5Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE5NywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE5N19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE5OCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE5OF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE5OSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE5OV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIwMCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIwMF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIwMSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIwMV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIwMiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIwMl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIwMywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIwM19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIwNCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIwNF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIwNSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIwNV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIwNiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIwNl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIwNywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIwN19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIwOCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIwOF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIwOSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIwOV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIxMCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjEwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIxMF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIxMSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjExKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIxMV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIxMiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjEyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIxMl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIxMywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjEzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIxM19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIxNCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIxNF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIxNSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIxNV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIxNiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIxNl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIxNywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIxN19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIxOCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIxOF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIxOSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIxOV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIyMCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjIwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIyMF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIyMSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjIxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIyMV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIyMiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjIyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIyMl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIyMywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjIzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIyM19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIyNCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIyNF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIyNSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIyNV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIyNiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIyNl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIyNywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIyN19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIyOCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIyOF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIyOSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIyOV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIzMCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIzMF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIzMSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIzMV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIzMiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIzMl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIzMywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIzM19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIzNCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIzNF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIzNSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIzNV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIzNiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIzNl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIzNywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIzN19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIzOCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIzOF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIzOSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIzOV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI0MCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI0MF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI0MSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI0MV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI0MiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI0Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI0MywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI0M19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI0NCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI0NF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI0NSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI0NV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI0NiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI0Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI0NywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI0N19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI0OCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI0OF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI0OSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI0OV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI1MCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjUwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI1MF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI1MSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjUxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI1MV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI1MiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjUyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI1Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI1MywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjUzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI1M19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI1NCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjU0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI1NF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI1NSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjU1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI1NV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI1NiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjU2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI1Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI1NywgcykpLCBwLCBvLCBzKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV81LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfN19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV84LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfOSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xM19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDI0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDI3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yOF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yOSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMzAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDMwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzMwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzMxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgzMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zMV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8zMiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMzIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMzMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDMzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzMzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzM0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgzNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zNF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8zNSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMzUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMzYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDM2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzM3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgzNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zN19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8zOCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMzgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMzksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDM5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzQwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg0MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80MF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV80MSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNDEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNDIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDQyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzQzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg0MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80M19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV80NCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNDQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNDUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDQ1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzQ2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg0NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80Nl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV80NywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNDcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNDgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDQ4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzQ5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg0OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80OV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV81MCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNTAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNTEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDUxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzUxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzUyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg1MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81Ml9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV81MywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNTMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNTQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDU0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzU1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg1NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81NV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV81NiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNTYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNTcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDU3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzU4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg1OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81OF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV81OSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNTksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNjAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDYwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzYwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzYxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg2MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82MV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV82MiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNjIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNjMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDYzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzYzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzY0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg2NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82NF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV82NSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNjUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNjYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDY2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzY3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg2NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82N19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV82OCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNjgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNjksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDY5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzcwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg3MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83MF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV83MSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNzEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNzIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDcyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzcyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzczLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg3MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83M19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV83NCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNzQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNzUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDc1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzc2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg3NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83Nl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV83NywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNzcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNzgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDc4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzc5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg3OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83OV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV84MCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoODAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfODEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDgxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzgxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzgyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg4MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84Ml9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV84MywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoODMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfODQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDg0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzg1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg4NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84NV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV84NiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoODYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfODcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDg3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzg4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg4OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84OF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV84OSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoODksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfOTAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDkwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzkwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzkxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg5MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85MV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV85MiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoOTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfOTMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDkzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzkzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzk0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg5NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85NF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV85NSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoOTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfOTYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDk2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzk3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg5NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85N19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV85OCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoOTgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOThfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfOTksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDk5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEwMCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTAwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwMF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMDEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEwMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTAyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMDIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTAyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEwMywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTAzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwM19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMDQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEwNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTA1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMDUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEwNiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTA2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwNl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMDcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEwNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTA4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMDgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEwOSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTA5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwOV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMTAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDExMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTExLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMTEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTExX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzExMiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTEyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExMl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMTMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDExMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTE0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMTQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzExNSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTE1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExNV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMTYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDExNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTE3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMTcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzExOCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTE4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExOF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMTksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDExOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTIwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMjAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTIwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEyMSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTIxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyMV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMjIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEyMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTIzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMjMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTIzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEyNCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTI0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyNF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMjUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEyNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTI2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMjYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEyNywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTI3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyN19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMjgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEyOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTI5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMjksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEzMCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTMwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzMF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMzEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEzMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTMyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMzIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTMyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEzMywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTMzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzM19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMzQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEzNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTM1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMzUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEzNiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTM2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzNl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMzcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEzNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTM4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMzgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEzOSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTM5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzOV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNDAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE0MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTQxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNDEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE0MiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTQyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0Ml9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNDMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE0MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTQ0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNDQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE0NSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTQ1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0NV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNDYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE0NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTQ3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNDcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE0OCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTQ4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0OF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNDksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE0OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTUwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNTAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTUwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE1MSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTUxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1MV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNTIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE1MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTUzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNTMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTUzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE1NCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTU0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1NF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNTUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE1NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTU2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNTYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE1NywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTU3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1N19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNTgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE1OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNThfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTU5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNTksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE2MCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTYwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2MF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNjEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE2MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTYyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNjIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTYyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE2MywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTYzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2M19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNjQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE2NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTY1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNjUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE2NiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTY2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2Nl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNjcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE2NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTY4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNjgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE2OSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTY5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2OV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNzAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE3MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTcxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNzEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTcxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE3MiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTcyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3Ml9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNzMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE3MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTc0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNzQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE3NSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTc1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3NV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNzYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE3NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTc3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNzcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE3OCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTc4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3OF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNzksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE3OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTgwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxODAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTgwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE4MSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTgxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4MV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xODIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE4MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTgzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxODMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTgzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE4NCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTg0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4NF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xODUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE4NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTg2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxODYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE4NywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTg3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4N19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xODgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE4OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTg5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxODksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE5MCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTkwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5MF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xOTEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE5MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTkyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxOTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTkyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE5MywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTkzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5M19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xOTQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE5NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTk1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxOTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE5NiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTk2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5Nl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xOTcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE5NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTk4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxOTgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE5OSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTk5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5OV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMDAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIwMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjAxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMDEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIwMiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjAyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwMl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMDMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIwMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjA0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMDQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIwNSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjA1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwNV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMDYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIwNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjA3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMDcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIwOCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjA4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwOF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMDksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIwOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjEwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMTAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjEwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIxMSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjExLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxMV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMTIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIxMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjEzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMTMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjEzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIxNCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjE0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxNF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMTUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIxNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjE2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMTYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIxNywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjE3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxN19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMTgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIxOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMThfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjE5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMTksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIyMCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjIwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyMF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMjEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIyMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjIyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMjIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjIyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIyMywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjIzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyM19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMjQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIyNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjI1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMjUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIyNiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjI2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyNl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMjcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIyNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjI4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMjgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIyOSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjI5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyOV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMzAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIzMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjMxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMzEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIzMiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjMyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzMl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMzMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIzMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjM0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMzQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIzNSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjM1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzNV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMzYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIzNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjM3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMzcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIzOCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjM4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzOF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMzksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIzOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjQwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyNDAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI0MSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjQxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0MV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNDIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDI0MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjQzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyNDMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI0NCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjQ0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0NF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNDUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDI0NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjQ2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyNDYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI0NywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjQ3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0N19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNDgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDI0OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjQ5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyNDksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI1MCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjUwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1MF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNTEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDI1MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjUyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyNTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjUyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI1MywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjUzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1M19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNTQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDI1NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjU1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyNTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjU1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI1NiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjU2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1Nl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNTcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDI1NywgcykpCi0jCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2RldGFpbC9lZGcvd2hpbGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9kZXRhaWwvZWRnL3doaWxlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWUxMzAzZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2RldGFpbC9lZGcvd2hpbGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTM0ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0NPTlRST0xfREVUQUlMX0VER19XSElMRV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9DT05UUk9MX0RFVEFJTF9FREdfV0hJTEVfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2lmLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VhdC5ocHA+Ci0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzFfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfM19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzRfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV81X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzdfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV84X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xM19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xN19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yM19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yN19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yOF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yOV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8zMF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8zMV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8zMl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8zM19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8zNF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8zNV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8zNl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8zN19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8zOF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8zOV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV80MF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV80MV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV80Ml9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV80M19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV80NF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV80NV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV80Nl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV80N19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV80OF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV80OV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV81MF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV81MV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV81Ml9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV81M19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV81NF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV81NV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV81Nl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV81N19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV81OF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV81OV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV82MF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV82MV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV82Ml9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV82M19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV82NF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV82NV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV82Nl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV82N19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV82OF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV82OV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV83MF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV83MV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV83Ml9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV83M19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV83NF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV83NV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV83Nl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV83N19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV83OF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV83OV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV84MF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV84MV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV84Ml9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV84M19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV84NF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV84NV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV84Nl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV84N19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV84OF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV84OV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV85MF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV85MV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV85Ml9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV85M19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV85NF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV85NV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV85Nl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV85N19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV85OF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV85OV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTAwX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDFfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTAyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEwMl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTAzX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDRfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEwNV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTA2X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDdfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEwOF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTA5X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTBfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTExKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzExMV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTEyX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTNfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzExNF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTE1X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTZfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzExN19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTE4X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTlfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTIwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEyMF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTIxX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjJfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTIzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEyM19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTI0X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjVfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEyNl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTI3X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjhfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEyOV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTMwX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzFfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTMyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEzMl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTMzX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzRfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEzNV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTM2X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzdfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEzOF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTM5X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDBfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE0MV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTQyX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDNfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE0NF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTQ1X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDZfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE0N19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTQ4X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDlfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTUwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE1MF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTUxX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNTJfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTUzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE1M19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTU0X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNTVfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE1Nl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTU3X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNThfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE1OV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTYwX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjFfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTYyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE2Ml9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTYzX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjRfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE2NV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTY2X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjdfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE2OF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTY5X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzBfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTcxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE3MV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTcyX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzNfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE3NF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTc1X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzZfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE3N19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTc4X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzlfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTgwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE4MF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTgxX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODJfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTgzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE4M19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTg0X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODVfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE4Nl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTg3X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODhfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE4OV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTkwX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOTFfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTkyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE5Ml9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTkzX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOTRfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE5NV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTk2X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOTdfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE5OF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTk5X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDBfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIwMV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjAyX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDNfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIwNF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjA1X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDZfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIwN19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjA4X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDlfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjEwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIxMF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjExX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMTJfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjEzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIxM19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjE0X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMTVfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIxNl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjE3X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMThfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIxOV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjIwX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjFfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjIyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIyMl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjIzX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjRfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIyNV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjI2X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjdfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIyOF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjI5X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzBfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIzMV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjMyX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzNfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIzNF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjM1X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzZfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIzN19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjM4X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzlfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI0MF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjQxX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDJfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI0M19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjQ0X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDVfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI0Nl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjQ3X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDhfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI0OV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjUwX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNTFfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjUyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI1Ml9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjUzX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNTRfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjU1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI1NV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjU2X0kocCwgbywgcykKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzFfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzRfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDUsIHMpLCBORE5CT09TVF9QUF9XSElMRV81LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzdfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDgsIHMpLCBORE5CT09TVF9QUF9XSElMRV84LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoOSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzExLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDExLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxOCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxOSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI2X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI3X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyOCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI4X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyOSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI5X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgzMCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzMwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDMwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzMwX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgzMSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzMxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDMxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzMxX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgzMiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzMyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDMyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzMyX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgzMywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzMzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDMzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzMzX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgzNCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzM0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDM0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM0X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgzNSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzM1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDM1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM1X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgzNiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzM2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDM2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM2X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgzNywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzM3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDM3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM3X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgzOCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzM4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDM4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM4X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgzOSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzM5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDM5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM5X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg0MCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzQwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDQwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQwX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg0MSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzQxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDQxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQxX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg0MiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzQyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDQyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQyX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg0MywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzQzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDQzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQzX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg0NCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzQ0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDQ0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ0X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg0NSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzQ1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDQ1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ1X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg0NiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzQ2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDQ2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ2X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg0NywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzQ3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDQ3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ3X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg0OCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzQ4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDQ4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ4X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg0OSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzQ5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDQ5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ5X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg1MCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzUwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDUwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzUwX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg1MSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzUxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDUxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzUxX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg1MiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzUyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDUyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzUyX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg1MywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzUzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDUzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzUzX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg1NCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzU0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDU0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU0X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg1NSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzU1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDU1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU1X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg1NiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzU2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDU2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU2X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg1NywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzU3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDU3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU3X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg1OCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzU4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDU4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU4X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg1OSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzU5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDU5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU5X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg2MCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzYwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDYwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzYwX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg2MSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzYxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDYxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzYxX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg2MiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzYyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDYyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzYyX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg2MywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzYzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDYzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzYzX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg2NCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzY0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDY0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY0X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg2NSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzY1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDY1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY1X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg2NiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzY2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDY2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY2X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg2NywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzY3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDY3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY3X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg2OCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzY4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDY4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY4X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg2OSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzY5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDY5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY5X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg3MCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzcwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDcwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzcwX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg3MSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzcxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDcxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzcxX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg3MiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzcyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDcyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzcyX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg3MywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzczLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDczLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzczX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg3NCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzc0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDc0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc0X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg3NSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzc1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDc1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc1X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg3NiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzc2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDc2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc2X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg3NywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzc3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDc3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc3X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg3OCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzc4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDc4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc4X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg3OSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzc5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDc5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc5X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg4MCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzgwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDgwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzgwX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg4MSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzgxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDgxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzgxX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg4MiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzgyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDgyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzgyX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg4MywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzgzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDgzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzgzX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg4NCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzg0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDg0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg0X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg4NSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzg1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDg1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg1X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg4NiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzg2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDg2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg2X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg4NywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzg3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDg3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg3X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg4OCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzg4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDg4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg4X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg4OSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzg5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDg5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg5X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg5MCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzkwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDkwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzkwX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg5MSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzkxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDkxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzkxX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg5MiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzkyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDkyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzkyX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg5MywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzkzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDkzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzkzX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg5NCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzk0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDk0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk0X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg5NSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzk1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDk1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk1X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg5NiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzk2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDk2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk2X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg5NywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzk3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDk3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk3X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg5OCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzk4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDk4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk4X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg5OSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzk5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDk5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk5X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMDAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMDAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTAwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwMF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTAxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTAxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEwMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDFfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEwMiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEwMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMDIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTAyX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMDMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMDMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTAzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwM19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTA0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTA0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEwNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDRfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEwNSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEwNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMDUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA1X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMDYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMDYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTA2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwNl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTA3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTA3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEwNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDdfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEwOCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEwOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMDgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA4X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMDksIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMDksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTA5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwOV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTEwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTEwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDExMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTBfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDExMSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzExMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMTEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTExX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMTIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTEyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExMl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTEzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTEzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDExMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTNfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDExNCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzExNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMTQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE0X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMTUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTE1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExNV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTE2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTE2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDExNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTZfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDExNywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzExNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMTcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE3X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMTgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTE4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExOF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTE5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTE5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDExOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTlfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEyMCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEyMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMjAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTIwX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMjEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMjEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTIxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyMV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTIyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTIyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEyMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjJfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEyMywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEyMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMjMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTIzX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMjQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMjQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTI0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyNF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTI1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTI1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEyNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjVfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEyNiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEyNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMjYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI2X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMjcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMjcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTI3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyN19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTI4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTI4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEyOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjhfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEyOSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEyOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMjksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI5X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMzAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMzAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTMwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzMF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTMxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTMxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEzMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzFfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEzMiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEzMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMzIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTMyX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMzMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMzMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTMzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzM19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTM0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTM0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEzNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzRfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEzNSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEzNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMzUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM1X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMzYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMzYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTM2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzNl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTM3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTM3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEzNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzdfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEzOCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEzOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMzgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM4X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMzksIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMzksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTM5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzOV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTQwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE0MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDBfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE0MSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE0MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNDEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQxX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNDIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNDIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTQyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0Ml9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTQzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE0MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDNfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE0NCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE0NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNDQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ0X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNDUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNDUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTQ1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0NV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQ2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTQ2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE0NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDZfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE0NywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE0NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNDcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ3X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNDgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNDgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTQ4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0OF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQ5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTQ5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE0OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDlfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE1MCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE1MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNTAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTUwX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNTEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTUxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1MV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTUyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTUyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE1MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTJfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE1MywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE1MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNTMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTUzX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNTQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTU0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1NF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTU1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTU1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE1NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTVfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE1NiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE1NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNTYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU2X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNTcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTU3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1N19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTU4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTU4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE1OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNThfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE1OSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE1OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNTksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU5X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNjAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNjAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTYwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2MF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTYxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTYxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE2MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjFfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE2MiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE2MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNjIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTYyX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNjMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNjMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTYzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2M19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTY0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTY0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE2NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjRfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE2NSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE2NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNjUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY1X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNjYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNjYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTY2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2Nl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTY3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTY3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE2NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjdfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE2OCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE2OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNjgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY4X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNjksIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNjksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTY5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2OV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTcwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTcwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE3MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzBfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE3MSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE3MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNzEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTcxX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNzIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNzIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTcyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3Ml9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTczLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTczLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE3MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzNfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE3NCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE3NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNzQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc0X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNzUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNzUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTc1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3NV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTc2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTc2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE3NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzZfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE3NywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE3NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNzcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc3X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNzgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNzgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTc4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3OF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTc5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTc5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE3OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzlfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE4MCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE4MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxODAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTgwX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxODEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xODEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTgxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4MV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTgyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTgyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE4MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODJfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE4MywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE4MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxODMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTgzX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxODQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xODQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTg0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4NF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTg1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTg1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE4NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODVfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE4NiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE4NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxODYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg2X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxODcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xODcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTg3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4N19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTg4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTg4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE4OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODhfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE4OSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE4OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxODksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg5X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxOTAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xOTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTkwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5MF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTkxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTkxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE5MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTFfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE5MiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE5MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxOTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTkyX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxOTMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xOTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTkzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5M19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTk0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTk0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE5NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTRfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE5NSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE5NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxOTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk1X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxOTYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xOTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTk2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5Nl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTk3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTk3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE5NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTdfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE5OCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE5OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxOTgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk4X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxOTksIHMpLCBORE5CT09TVF9QUF9XSElMRV8xOTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTk5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5OV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjAwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjAwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIwMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDBfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIwMSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIwMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMDEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAxX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMDIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMDIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjAyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwMl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjAzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjAzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIwMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDNfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIwNCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIwNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMDQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA0X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMDUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMDUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjA1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwNV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjA2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjA2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIwNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDZfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIwNywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIwNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMDcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA3X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMDgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMDgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjA4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwOF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjA5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjA5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIwOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDlfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIxMCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIxMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMTAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjEwX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMTEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjExLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxMV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjEyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjEyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIxMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTJfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIxMywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIxMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMTMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjEzX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMTQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjE0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxNF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjE1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjE1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIxNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTVfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIxNiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIxNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMTYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE2X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMTcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjE3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxN19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjE4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjE4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIxOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMThfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIxOSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIxOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMTksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE5X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMjAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMjAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjIwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyMF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjIxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjIxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIyMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjFfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIyMiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIyMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMjIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjIyX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMjMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMjMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjIzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyM19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjI0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjI0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIyNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjRfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIyNSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIyNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMjUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI1X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMjYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMjYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjI2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyNl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjI3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjI3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIyNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjdfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIyOCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIyOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMjgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI4X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMjksIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMjksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjI5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyOV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjMwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjMwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIzMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzBfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIzMSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIzMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMzEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMxX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMzIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMzIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjMyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzMl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjMzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjMzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIzMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzNfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIzNCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIzNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMzQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM0X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMzUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMzUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjM1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzNV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjM2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjM2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIzNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzZfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIzNywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIzNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMzcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM3X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMzgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMzgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjM4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzOF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjM5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjM5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIzOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzlfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI0MCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI0MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNDAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQwX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNDEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNDEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjQxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0MV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjQyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI0MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDJfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI0MywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI0MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNDMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQzX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNDQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNDQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjQ0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0NF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQ1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjQ1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI0NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDVfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI0NiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI0NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNDYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ2X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNDcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNDcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjQ3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0N19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQ4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjQ4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI0OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDhfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI0OSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI0OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNDksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ5X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNTAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjUwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1MF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjUxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjUxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI1MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTFfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI1MiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI1MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjUyX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNTMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjUzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1M19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjU0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjU0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI1NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTRfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI1NSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI1NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjU1X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNTYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjU2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1Nl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjU3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjU3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI1NywgcykpCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2RldGFpbC9tc3ZjL3doaWxlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZGV0YWlsL21zdmMvd2hpbGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYWM5ODYxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZGV0YWlsL21zdmMvd2hpbGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjc3ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0NPTlRST0xfREVUQUlMX01TVkNfV0hJTEVfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfQ09OVFJPTF9ERVRBSUxfTVNWQ19XSElMRV9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvaWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWF0LmhwcD4KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzMocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzUocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzYocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzcocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzgocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzkocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTIocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTUocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTgocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxOSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjEocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjcocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyOCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjksIHMpLCBORE5CT09TVF9QUF9XSElMRV8yOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yOShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDMwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMzAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMzAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzAocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgzMSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzMxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDMxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzMxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8zMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygzMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zMihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDMzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMzMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMzMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzMocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgzNCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzM0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDM0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8zNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygzNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zNShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDM2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMzYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMzYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzYocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgzNywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzM3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDM3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8zOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygzOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zOChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDM5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMzksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMzksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzkocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg0MCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzQwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDQwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDEsIHMpLCBORE5CT09TVF9QUF9XSElMRV80MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg0MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80MShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDQyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNDIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNDIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDIocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg0MywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzQzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDQzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDQsIHMpLCBORE5CT09TVF9QUF9XSElMRV80NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg0NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80NChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDQ1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNDUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNDUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDUocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg0NiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzQ2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDQ2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDcsIHMpLCBORE5CT09TVF9QUF9XSElMRV80NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg0NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80NyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDQ4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNDgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNDgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDgocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg0OSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzQ5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDQ5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTAsIHMpLCBORE5CT09TVF9QUF9XSElMRV81MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg1MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81MChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDUxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNTEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTEocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg1MiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzUyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDUyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzUyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTMsIHMpLCBORE5CT09TVF9QUF9XSElMRV81MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg1MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81MyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDU0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNTQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTQocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg1NSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzU1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDU1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTYsIHMpLCBORE5CT09TVF9QUF9XSElMRV81NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg1NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81NihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDU3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNTcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTcocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg1OCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzU4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDU4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTksIHMpLCBORE5CT09TVF9QUF9XSElMRV81OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg1OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81OShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDYwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNjAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNjAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjAocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg2MSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzYxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDYxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzYxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjIsIHMpLCBORE5CT09TVF9QUF9XSElMRV82MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg2MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82MihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDYzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNjMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNjMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjMocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg2NCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzY0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDY0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjUsIHMpLCBORE5CT09TVF9QUF9XSElMRV82NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg2NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82NShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDY2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNjYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNjYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjYocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg2NywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzY3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDY3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjgsIHMpLCBORE5CT09TVF9QUF9XSElMRV82OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg2OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82OChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDY5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNjksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNjksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjkocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg3MCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzcwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDcwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzcwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzEsIHMpLCBORE5CT09TVF9QUF9XSElMRV83MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg3MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83MShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDcyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNzIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNzIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzIocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg3MywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzczLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDczLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzczKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzQsIHMpLCBORE5CT09TVF9QUF9XSElMRV83NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg3NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83NChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDc1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNzUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNzUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzUocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg3NiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzc2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDc2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzcsIHMpLCBORE5CT09TVF9QUF9XSElMRV83NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg3NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83NyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDc4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNzgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNzgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzgocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg3OSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzc5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDc5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoODAsIHMpLCBORE5CT09TVF9QUF9XSElMRV84MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg4MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84MChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDgxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfODEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oODEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODEocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg4MiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzgyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDgyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzgyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoODMsIHMpLCBORE5CT09TVF9QUF9XSElMRV84MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg4MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84MyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDg0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfODQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oODQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODQocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg4NSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzg1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDg1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoODYsIHMpLCBORE5CT09TVF9QUF9XSElMRV84NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg4NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84NihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDg3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfODcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oODcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODcocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg4OCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzg4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDg4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoODksIHMpLCBORE5CT09TVF9QUF9XSElMRV84OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg4OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84OShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDkwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfOTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oOTAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTAocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg5MSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzkxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDkxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzkxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTIsIHMpLCBORE5CT09TVF9QUF9XSElMRV85MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg5MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85MihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDkzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfOTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oOTMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTMocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg5NCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzk0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDk0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTUsIHMpLCBORE5CT09TVF9QUF9XSElMRV85NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg5NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85NShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDk2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfOTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oOTYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTYocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg5NywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzk3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDk3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTgsIHMpLCBORE5CT09TVF9QUF9XSElMRV85OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg5OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85OChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDk5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfOTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oOTksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTkocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMDAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMDAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTAwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwMChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEwMSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEwMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMDEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTAxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTAyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTAyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEwMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDIocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMDMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMDMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTAzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwMyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEwNCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEwNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMDQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTA1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTA1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEwNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDUocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMDYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMDYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTA2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwNihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEwNywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEwNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMDcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTA4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTA4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEwOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDgocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMDksIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMDksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTA5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwOShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDExMCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzExMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMTAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTEwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTExLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTExLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDExMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTEocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMTIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTEyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExMihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDExMywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzExMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMTMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTEzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTE0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTE0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDExNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTQocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMTUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTE1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExNShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDExNiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzExNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMTYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTE3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTE3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDExNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTcocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMTgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTE4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExOChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDExOSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzExOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMTksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTIwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTIwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEyMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjAocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMjEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMjEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTIxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyMShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEyMiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEyMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMjIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTIyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTIzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTIzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEyMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjMocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMjQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMjQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTI0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyNChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEyNSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEyNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMjUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTI2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTI2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEyNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjYocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMjcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMjcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTI3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyNyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEyOCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEyOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMjgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTI5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTI5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEyOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjkocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMzAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMzAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTMwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzMChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEzMSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEzMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMzEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTMxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTMyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTMyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEzMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzIocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMzMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMzMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTMzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzMyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEzNCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEzNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMzQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTM1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTM1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEzNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzUocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMzYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMzYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTM2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzNihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEzNywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEzNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMzcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTM4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTM4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEzOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzgocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMzksIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMzksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTM5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzOShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE0MCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE0MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNDAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTQxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE0MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDEocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNDIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNDIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTQyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0MihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE0MywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE0MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNDMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQ0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTQ0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE0NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDQocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNDUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNDUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTQ1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0NShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE0NiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE0NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNDYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQ3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTQ3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE0NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDcocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNDgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNDgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTQ4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0OChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE0OSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE0OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNDksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTUwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTUwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE1MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTAocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNTEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTUxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1MShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE1MiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE1MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTUyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTUzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTUzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE1MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTMocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNTQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTU0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1NChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE1NSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE1NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTU2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTU2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE1NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTYocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNTcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTU3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1NyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE1OCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE1OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNTgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTU5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTU5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE1OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTkocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNjAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNjAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTYwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2MChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE2MSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE2MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNjEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTYxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTYyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTYyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE2MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjIocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNjMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNjMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTYzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2MyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE2NCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE2NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNjQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTY1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTY1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE2NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjUocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNjYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNjYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTY2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2NihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE2NywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE2NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNjcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTY4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTY4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE2OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjgocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNjksIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNjksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTY5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2OShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE3MCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE3MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNzAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTcwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTcxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTcxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE3MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzEocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNzIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNzIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTcyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3MihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE3MywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE3MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNzMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTczKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTc0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTc0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE3NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzQocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNzUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNzUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTc1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3NShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE3NiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE3NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNzYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTc3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTc3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE3NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzcocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNzgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNzgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTc4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3OChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE3OSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE3OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNzksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTgwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTgwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE4MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODAocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxODEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xODEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTgxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4MShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE4MiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE4MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxODIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTgyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTgzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTgzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE4MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODMocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxODQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xODQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTg0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4NChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE4NSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE4NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxODUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTg2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTg2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE4NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODYocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxODcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xODcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTg3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4NyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE4OCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE4OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxODgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTg5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTg5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE4OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODkocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxOTAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xOTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTkwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5MChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE5MSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE5MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxOTEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTkxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTkyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTkyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE5MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTIocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxOTMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xOTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTkzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5MyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE5NCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE5NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxOTQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTk1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTk1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE5NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTUocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxOTYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xOTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTk2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5NihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE5NywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE5NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxOTcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTk4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTk4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE5OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTgocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxOTksIHMpLCBORE5CT09TVF9QUF9XSElMRV8xOTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTk5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5OShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIwMCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIwMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMDAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjAxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjAxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIwMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDEocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMDIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMDIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjAyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwMihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIwMywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIwMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMDMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjA0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjA0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIwNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDQocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMDUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMDUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjA1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwNShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIwNiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIwNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMDYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjA3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjA3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIwNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDcocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMDgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMDgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjA4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwOChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIwOSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIwOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMDksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjEwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjEwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIxMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTAocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMTEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjExLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxMShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIxMiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIxMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjEyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjEzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjEzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIxMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTMocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMTQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjE0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxNChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIxNSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIxNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjE2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjE2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIxNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTYocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMTcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjE3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxNyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIxOCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIxOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMTgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjE5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjE5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIxOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTkocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMjAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMjAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjIwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyMChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIyMSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIyMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMjEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjIxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjIyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjIyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIyMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjIocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMjMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMjMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjIzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyMyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIyNCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIyNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMjQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjI1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjI1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIyNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjUocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMjYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMjYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjI2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyNihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIyNywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIyNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMjcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjI4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjI4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIyOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjgocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMjksIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMjksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjI5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyOShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIzMCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIzMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMzAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjMxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjMxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIzMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzEocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMzIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMzIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjMyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzMihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIzMywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIzMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMzMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjM0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjM0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIzNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzQocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMzUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMzUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjM1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzNShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIzNiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIzNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMzYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjM3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjM3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIzNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzcocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMzgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMzgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjM4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzOChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIzOSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIzOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMzksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjQwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI0MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDAocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNDEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNDEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjQxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0MShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI0MiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI0MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNDIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjQzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI0MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDMocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNDQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNDQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjQ0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0NChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI0NSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI0NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNDUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQ2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjQ2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI0NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDYocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNDcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNDcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjQ3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0NyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI0OCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI0OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNDgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQ5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjQ5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI0OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDkocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNTAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjUwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1MChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI1MSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI1MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNTEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjUxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjUyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjUyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI1MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTIocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNTMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjUzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1MyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI1NCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI1NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNTQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjU0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjU1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjU1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI1NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTUocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNTYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjU2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1NihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI1NywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI1NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNTcsIHMpKQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9kZXRhaWwvd2hpbGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9kZXRhaWwvd2hpbGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMWU5ZWUxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZGV0YWlsL3doaWxlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzNiArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9DT05UUk9MX0RFVEFJTF9XSElMRV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9DT05UUk9MX0RFVEFJTF9XSElMRV9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvaWlmLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvYm9vbC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lYXQuaHBwPgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xX0MoTkROQk9PU1RfUFBfQk9PTChwKDIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMl9DKE5ETkJPT1NUX1BQX0JPT0wocCgzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzNfQyhORE5CT09TVF9QUF9CT09MKHAoNCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV80X0MoTkROQk9PU1RfUFBfQk9PTChwKDUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNV9DKE5ETkJPT1NUX1BQX0JPT0wocCg2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzZfQyhORE5CT09TVF9QUF9CT09MKHAoNywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV83X0MoTkROQk9PU1RfUFBfQk9PTChwKDgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOF9DKE5ETkJPT1NUX1BQX0JPT0wocCg5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzlfQyhORE5CT09TVF9QUF9CT09MKHAoMTAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEwX0MoTkROQk9PU1RfUFBfQk9PTChwKDExLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTJfQyhORE5CT09TVF9QUF9CT09MKHAoMTMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEzX0MoTkROQk9PU1RfUFBfQk9PTChwKDE0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTVfQyhORE5CT09TVF9QUF9CT09MKHAoMTYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE2X0MoTkROQk9PU1RfUFBfQk9PTChwKDE3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xN19DKE5ETkJPT1NUX1BQX0JPT0wocCgxOCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMThfQyhORE5CT09TVF9QUF9CT09MKHAoMTksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE5X0MoTkROQk9PU1RfUFBfQk9PTChwKDIwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjFfQyhORE5CT09TVF9QUF9CT09MKHAoMjIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIyX0MoTkROQk9PU1RfUFBfQk9PTChwKDIzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yM19DKE5ETkJPT1NUX1BQX0JPT0wocCgyNCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjRfQyhORE5CT09TVF9QUF9CT09MKHAoMjUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI1X0MoTkROQk9PU1RfUFBfQk9PTChwKDI2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNl9DKE5ETkJPT1NUX1BQX0JPT0wocCgyNywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjdfQyhORE5CT09TVF9QUF9CT09MKHAoMjgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI4X0MoTkROQk9PU1RfUFBfQk9PTChwKDI5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yOV9DKE5ETkJPT1NUX1BQX0JPT0wocCgzMCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzBfQyhORE5CT09TVF9QUF9CT09MKHAoMzEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzMxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzMxX0MoTkROQk9PU1RfUFBfQk9PTChwKDMyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8zMl9DKE5ETkJPT1NUX1BQX0JPT0wocCgzMywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzNfQyhORE5CT09TVF9QUF9CT09MKHAoMzQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzM0X0MoTkROQk9PU1RfUFBfQk9PTChwKDM1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8zNV9DKE5ETkJPT1NUX1BQX0JPT0wocCgzNiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzZfQyhORE5CT09TVF9QUF9CT09MKHAoMzcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzM3X0MoTkROQk9PU1RfUFBfQk9PTChwKDM4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8zOF9DKE5ETkJPT1NUX1BQX0JPT0wocCgzOSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzlfQyhORE5CT09TVF9QUF9CT09MKHAoNDAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzQwX0MoTkROQk9PU1RfUFBfQk9PTChwKDQxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV80MV9DKE5ETkJPT1NUX1BQX0JPT0wocCg0MiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDJfQyhORE5CT09TVF9QUF9CT09MKHAoNDMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzQzX0MoTkROQk9PU1RfUFBfQk9PTChwKDQ0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV80NF9DKE5ETkJPT1NUX1BQX0JPT0wocCg0NSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDVfQyhORE5CT09TVF9QUF9CT09MKHAoNDYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzQ2X0MoTkROQk9PU1RfUFBfQk9PTChwKDQ3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV80N19DKE5ETkJPT1NUX1BQX0JPT0wocCg0OCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDhfQyhORE5CT09TVF9QUF9CT09MKHAoNDksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzQ5X0MoTkROQk9PU1RfUFBfQk9PTChwKDUwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV81MF9DKE5ETkJPT1NUX1BQX0JPT0wocCg1MSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTFfQyhORE5CT09TVF9QUF9CT09MKHAoNTIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzUyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzUyX0MoTkROQk9PU1RfUFBfQk9PTChwKDUzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV81M19DKE5ETkJPT1NUX1BQX0JPT0wocCg1NCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTRfQyhORE5CT09TVF9QUF9CT09MKHAoNTUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzU1X0MoTkROQk9PU1RfUFBfQk9PTChwKDU2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV81Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCg1NywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTdfQyhORE5CT09TVF9QUF9CT09MKHAoNTgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzU4X0MoTkROQk9PU1RfUFBfQk9PTChwKDU5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV81OV9DKE5ETkJPT1NUX1BQX0JPT0wocCg2MCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjBfQyhORE5CT09TVF9QUF9CT09MKHAoNjEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzYxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzYxX0MoTkROQk9PU1RfUFBfQk9PTChwKDYyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV82Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCg2MywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjNfQyhORE5CT09TVF9QUF9CT09MKHAoNjQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzY0X0MoTkROQk9PU1RfUFBfQk9PTChwKDY1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV82NV9DKE5ETkJPT1NUX1BQX0JPT0wocCg2NiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjZfQyhORE5CT09TVF9QUF9CT09MKHAoNjcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzY3X0MoTkROQk9PU1RfUFBfQk9PTChwKDY4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV82OF9DKE5ETkJPT1NUX1BQX0JPT0wocCg2OSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjlfQyhORE5CT09TVF9QUF9CT09MKHAoNzAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzcwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzcwX0MoTkROQk9PU1RfUFBfQk9PTChwKDcxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV83MV9DKE5ETkJPT1NUX1BQX0JPT0wocCg3MiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzJfQyhORE5CT09TVF9QUF9CT09MKHAoNzMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzczKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzczX0MoTkROQk9PU1RfUFBfQk9PTChwKDc0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV83NF9DKE5ETkJPT1NUX1BQX0JPT0wocCg3NSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzVfQyhORE5CT09TVF9QUF9CT09MKHAoNzYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzc2X0MoTkROQk9PU1RfUFBfQk9PTChwKDc3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV83N19DKE5ETkJPT1NUX1BQX0JPT0wocCg3OCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzhfQyhORE5CT09TVF9QUF9CT09MKHAoNzksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzc5X0MoTkROQk9PU1RfUFBfQk9PTChwKDgwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV84MF9DKE5ETkJPT1NUX1BQX0JPT0wocCg4MSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODFfQyhORE5CT09TVF9QUF9CT09MKHAoODIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzgyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzgyX0MoTkROQk9PU1RfUFBfQk9PTChwKDgzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV84M19DKE5ETkJPT1NUX1BQX0JPT0wocCg4NCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODRfQyhORE5CT09TVF9QUF9CT09MKHAoODUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzg1X0MoTkROQk9PU1RfUFBfQk9PTChwKDg2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV84Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCg4NywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODdfQyhORE5CT09TVF9QUF9CT09MKHAoODgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzg4X0MoTkROQk9PU1RfUFBfQk9PTChwKDg5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV84OV9DKE5ETkJPT1NUX1BQX0JPT0wocCg5MCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTBfQyhORE5CT09TVF9QUF9CT09MKHAoOTEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzkxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzkxX0MoTkROQk9PU1RfUFBfQk9PTChwKDkyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV85Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCg5MywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTNfQyhORE5CT09TVF9QUF9CT09MKHAoOTQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzk0X0MoTkROQk9PU1RfUFBfQk9PTChwKDk1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV85NV9DKE5ETkJPT1NUX1BQX0JPT0wocCg5NiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTZfQyhORE5CT09TVF9QUF9CT09MKHAoOTcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzk3X0MoTkROQk9PU1RfUFBfQk9PTChwKDk4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV85OF9DKE5ETkJPT1NUX1BQX0JPT0wocCg5OSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTlfQyhORE5CT09TVF9QUF9CT09MKHAoMTAwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTAwX0MoTkROQk9PU1RfUFBfQk9PTChwKDEwMSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTAxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEwMV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMDIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDJfQyhORE5CT09TVF9QUF9CT09MKHAoMTAzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTAzX0MoTkROQk9PU1RfUFBfQk9PTChwKDEwNCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEwNF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMDUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDVfQyhORE5CT09TVF9QUF9CT09MKHAoMTA2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTA2X0MoTkROQk9PU1RfUFBfQk9PTChwKDEwNywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEwN19DKE5ETkJPT1NUX1BQX0JPT0wocCgxMDgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDhfQyhORE5CT09TVF9QUF9CT09MKHAoMTA5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTA5X0MoTkROQk9PU1RfUFBfQk9PTChwKDExMCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTEwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzExMF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMTEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTFfQyhORE5CT09TVF9QUF9CT09MKHAoMTEyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTEyX0MoTkROQk9PU1RfUFBfQk9PTChwKDExMywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTEzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzExM19DKE5ETkJPT1NUX1BQX0JPT0wocCgxMTQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTRfQyhORE5CT09TVF9QUF9CT09MKHAoMTE1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTE1X0MoTkROQk9PU1RfUFBfQk9PTChwKDExNiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzExNl9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMTcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTdfQyhORE5CT09TVF9QUF9CT09MKHAoMTE4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTE4X0MoTkROQk9PU1RfUFBfQk9PTChwKDExOSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzExOV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMjAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjBfQyhORE5CT09TVF9QUF9CT09MKHAoMTIxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTIxX0MoTkROQk9PU1RfUFBfQk9PTChwKDEyMiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTIyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEyMl9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMjMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjNfQyhORE5CT09TVF9QUF9CT09MKHAoMTI0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTI0X0MoTkROQk9PU1RfUFBfQk9PTChwKDEyNSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEyNV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMjYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjZfQyhORE5CT09TVF9QUF9CT09MKHAoMTI3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTI3X0MoTkROQk9PU1RfUFBfQk9PTChwKDEyOCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEyOF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMjksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjlfQyhORE5CT09TVF9QUF9CT09MKHAoMTMwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTMwX0MoTkROQk9PU1RfUFBfQk9PTChwKDEzMSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTMxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEzMV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMzIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzJfQyhORE5CT09TVF9QUF9CT09MKHAoMTMzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTMzX0MoTkROQk9PU1RfUFBfQk9PTChwKDEzNCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEzNF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMzUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzVfQyhORE5CT09TVF9QUF9CT09MKHAoMTM2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTM2X0MoTkROQk9PU1RfUFBfQk9PTChwKDEzNywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEzN19DKE5ETkJPT1NUX1BQX0JPT0wocCgxMzgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzhfQyhORE5CT09TVF9QUF9CT09MKHAoMTM5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTM5X0MoTkROQk9PU1RfUFBfQk9PTChwKDE0MCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE0MF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNDEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDFfQyhORE5CT09TVF9QUF9CT09MKHAoMTQyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTQyX0MoTkROQk9PU1RfUFBfQk9PTChwKDE0MywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE0M19DKE5ETkJPT1NUX1BQX0JPT0wocCgxNDQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDRfQyhORE5CT09TVF9QUF9CT09MKHAoMTQ1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTQ1X0MoTkROQk9PU1RfUFBfQk9PTChwKDE0NiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE0Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNDcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDdfQyhORE5CT09TVF9QUF9CT09MKHAoMTQ4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTQ4X0MoTkROQk9PU1RfUFBfQk9PTChwKDE0OSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE0OV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNTAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNTBfQyhORE5CT09TVF9QUF9CT09MKHAoMTUxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTUxX0MoTkROQk9PU1RfUFBfQk9PTChwKDE1MiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTUyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE1Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNTMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNTNfQyhORE5CT09TVF9QUF9CT09MKHAoMTU0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTU0X0MoTkROQk9PU1RfUFBfQk9PTChwKDE1NSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE1NV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNTYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNTZfQyhORE5CT09TVF9QUF9CT09MKHAoMTU3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTU3X0MoTkROQk9PU1RfUFBfQk9PTChwKDE1OCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE1OF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNTksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNTlfQyhORE5CT09TVF9QUF9CT09MKHAoMTYwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTYwX0MoTkROQk9PU1RfUFBfQk9PTChwKDE2MSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTYxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE2MV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNjIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjJfQyhORE5CT09TVF9QUF9CT09MKHAoMTYzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTYzX0MoTkROQk9PU1RfUFBfQk9PTChwKDE2NCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE2NF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNjUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjVfQyhORE5CT09TVF9QUF9CT09MKHAoMTY2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTY2X0MoTkROQk9PU1RfUFBfQk9PTChwKDE2NywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE2N19DKE5ETkJPT1NUX1BQX0JPT0wocCgxNjgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjhfQyhORE5CT09TVF9QUF9CT09MKHAoMTY5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTY5X0MoTkROQk9PU1RfUFBfQk9PTChwKDE3MCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTcwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE3MF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNzEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzFfQyhORE5CT09TVF9QUF9CT09MKHAoMTcyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTcyX0MoTkROQk9PU1RfUFBfQk9PTChwKDE3MywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTczKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE3M19DKE5ETkJPT1NUX1BQX0JPT0wocCgxNzQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzRfQyhORE5CT09TVF9QUF9CT09MKHAoMTc1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTc1X0MoTkROQk9PU1RfUFBfQk9PTChwKDE3NiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE3Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNzcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzdfQyhORE5CT09TVF9QUF9CT09MKHAoMTc4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTc4X0MoTkROQk9PU1RfUFBfQk9PTChwKDE3OSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE3OV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxODAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODBfQyhORE5CT09TVF9QUF9CT09MKHAoMTgxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTgxX0MoTkROQk9PU1RfUFBfQk9PTChwKDE4MiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTgyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE4Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCgxODMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODNfQyhORE5CT09TVF9QUF9CT09MKHAoMTg0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTg0X0MoTkROQk9PU1RfUFBfQk9PTChwKDE4NSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE4NV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxODYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODZfQyhORE5CT09TVF9QUF9CT09MKHAoMTg3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTg3X0MoTkROQk9PU1RfUFBfQk9PTChwKDE4OCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE4OF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxODksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODlfQyhORE5CT09TVF9QUF9CT09MKHAoMTkwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTkwX0MoTkROQk9PU1RfUFBfQk9PTChwKDE5MSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTkxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE5MV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxOTIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOTJfQyhORE5CT09TVF9QUF9CT09MKHAoMTkzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTkzX0MoTkROQk9PU1RfUFBfQk9PTChwKDE5NCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE5NF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxOTUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOTVfQyhORE5CT09TVF9QUF9CT09MKHAoMTk2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTk2X0MoTkROQk9PU1RfUFBfQk9PTChwKDE5NywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE5N19DKE5ETkJPT1NUX1BQX0JPT0wocCgxOTgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOThfQyhORE5CT09TVF9QUF9CT09MKHAoMTk5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTk5X0MoTkROQk9PU1RfUFBfQk9PTChwKDIwMCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIwMF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMDEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDFfQyhORE5CT09TVF9QUF9CT09MKHAoMjAyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjAyX0MoTkROQk9PU1RfUFBfQk9PTChwKDIwMywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIwM19DKE5ETkJPT1NUX1BQX0JPT0wocCgyMDQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDRfQyhORE5CT09TVF9QUF9CT09MKHAoMjA1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjA1X0MoTkROQk9PU1RfUFBfQk9PTChwKDIwNiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIwNl9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMDcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDdfQyhORE5CT09TVF9QUF9CT09MKHAoMjA4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjA4X0MoTkROQk9PU1RfUFBfQk9PTChwKDIwOSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIwOV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMTAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMTBfQyhORE5CT09TVF9QUF9CT09MKHAoMjExLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjExX0MoTkROQk9PU1RfUFBfQk9PTChwKDIxMiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjEyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIxMl9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMTMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMTNfQyhORE5CT09TVF9QUF9CT09MKHAoMjE0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjE0X0MoTkROQk9PU1RfUFBfQk9PTChwKDIxNSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIxNV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMTYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMTZfQyhORE5CT09TVF9QUF9CT09MKHAoMjE3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjE3X0MoTkROQk9PU1RfUFBfQk9PTChwKDIxOCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIxOF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMTksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMTlfQyhORE5CT09TVF9QUF9CT09MKHAoMjIwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjIwX0MoTkROQk9PU1RfUFBfQk9PTChwKDIyMSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjIxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIyMV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMjIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjJfQyhORE5CT09TVF9QUF9CT09MKHAoMjIzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjIzX0MoTkROQk9PU1RfUFBfQk9PTChwKDIyNCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIyNF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMjUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjVfQyhORE5CT09TVF9QUF9CT09MKHAoMjI2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjI2X0MoTkROQk9PU1RfUFBfQk9PTChwKDIyNywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIyN19DKE5ETkJPT1NUX1BQX0JPT0wocCgyMjgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjhfQyhORE5CT09TVF9QUF9CT09MKHAoMjI5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjI5X0MoTkROQk9PU1RfUFBfQk9PTChwKDIzMCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIzMF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMzEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzFfQyhORE5CT09TVF9QUF9CT09MKHAoMjMyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjMyX0MoTkROQk9PU1RfUFBfQk9PTChwKDIzMywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIzM19DKE5ETkJPT1NUX1BQX0JPT0wocCgyMzQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzRfQyhORE5CT09TVF9QUF9CT09MKHAoMjM1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjM1X0MoTkROQk9PU1RfUFBfQk9PTChwKDIzNiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIzNl9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMzcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzdfQyhORE5CT09TVF9QUF9CT09MKHAoMjM4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjM4X0MoTkROQk9PU1RfUFBfQk9PTChwKDIzOSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIzOV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyNDAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDBfQyhORE5CT09TVF9QUF9CT09MKHAoMjQxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjQxX0MoTkROQk9PU1RfUFBfQk9PTChwKDI0MiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI0Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCgyNDMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDNfQyhORE5CT09TVF9QUF9CT09MKHAoMjQ0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjQ0X0MoTkROQk9PU1RfUFBfQk9PTChwKDI0NSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI0NV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyNDYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDZfQyhORE5CT09TVF9QUF9CT09MKHAoMjQ3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjQ3X0MoTkROQk9PU1RfUFBfQk9PTChwKDI0OCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI0OF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyNDksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDlfQyhORE5CT09TVF9QUF9CT09MKHAoMjUwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjUwX0MoTkROQk9PU1RfUFBfQk9PTChwKDI1MSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjUxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI1MV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyNTIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNTJfQyhORE5CT09TVF9QUF9CT09MKHAoMjUzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjUzX0MoTkROQk9PU1RfUFBfQk9PTChwKDI1NCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjU0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI1NF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyNTUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNTVfQyhORE5CT09TVF9QUF9CT09MKHAoMjU2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjU2X0MoTkROQk9PU1RfUFBfQk9PTChwKDI1NywgcykpLCBwLCBvLCBzKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV81LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfN19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV84LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xM19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yOF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMzAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDMwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzMwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzMxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zMV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8zMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMzMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDMzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzMzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzM0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zNF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8zNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMzYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDM2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzM3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zN19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8zOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMzksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDM5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzQwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80MF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV80MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNDIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzQzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80M19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV80NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNDUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQ1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzQ2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80Nl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV80NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNDgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQ4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzQ5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80OV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV81MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDUxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzUxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzUyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81Ml9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV81MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDU0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzU1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81NV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV81NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDU3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzU4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81OF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV81OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNjAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDYwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzYwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzYxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82MV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV82MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNjMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDYzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzYzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzY0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82NF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV82NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNjYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDY2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzY3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82N19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV82OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNjksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDY5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzcwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83MF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV83MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNzIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDcyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzcyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzczLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83M19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV83NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNzUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDc1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzc2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83Nl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV83NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNzgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDc4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzc5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83OV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV84MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfODEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDgxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzgxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzgyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84Ml9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV84MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfODQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDg0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzg1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84NV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV84NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfODcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDg3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzg4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84OF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV84OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfOTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDkwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzkwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzkxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85MV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV85MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfOTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDkzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzkzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzk0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85NF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV85NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfOTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDk2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzk3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85N19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV85OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOThfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfOTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDk5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEwMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTAwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwMF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMDEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTAyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTAyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEwMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTAzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwM19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMDQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTA1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEwNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTA2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwNl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMDcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTA4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEwOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTA5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwOV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTExLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTExX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzExMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTEyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExMl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTE0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzExNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTE1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExNV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTE3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzExOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTE4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExOF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTIwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTIwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEyMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTIxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyMV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMjIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTIzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTIzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEyNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTI0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyNF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMjUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTI2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEyNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTI3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyN19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMjgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTI5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEzMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTMwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzMF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMzEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTMyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTMyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEzMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTMzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzM19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMzQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTM1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEzNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTM2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzNl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMzcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTM4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEzOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTM5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzOV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNDAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTQxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE0MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0Ml9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNDMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTQ0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE0NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQ1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0NV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNDYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTQ3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE0OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQ4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0OF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNDksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTUwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTUwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE1MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTUxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1MV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTUzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTUzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE1NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTU0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1NF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTU2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE1NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTU3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1N19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNThfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTU5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE2MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTYwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2MF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNjEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTYyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTYyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE2MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTYzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2M19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNjQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTY1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE2NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTY2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2Nl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNjcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTY4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE2OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTY5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2OV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNzAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTcxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTcxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE3MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTcyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3Ml9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNzMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTc0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE3NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTc1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3NV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNzYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTc3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE3OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTc4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3OF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNzksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTgwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTgwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE4MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTgxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4MV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xODIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTgzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTgzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE4NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTg0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4NF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xODUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTg2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE4NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTg3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4N19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xODgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTg5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE5MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTkwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5MF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xOTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTkyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTkyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE5MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTkzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5M19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xOTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTk1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE5NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTk2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5Nl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xOTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTk4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE5OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTk5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5OV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMDAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjAxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIwMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjAyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwMl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMDMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjA0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIwNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjA1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwNV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMDYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjA3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIwOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjA4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwOF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMDksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjEwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjEwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIxMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjExLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxMV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjEzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjEzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIxNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjE0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxNF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjE2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIxNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjE3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxN19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMThfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjE5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIyMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjIwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyMF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMjEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjIyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjIyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIyMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjIzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyM19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMjQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjI1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIyNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjI2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyNl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMjcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjI4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIyOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjI5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyOV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMzAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjMxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIzMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjMyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzMl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMzMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjM0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIzNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjM1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzNV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMzYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjM3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIzOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjM4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzOF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMzksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjQwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI0MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0MV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNDIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjQzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI0NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQ0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0NF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNDUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjQ2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI0NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQ3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0N19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNDgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjQ5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI1MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjUwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1MF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjUyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjUyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI1MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjUzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1M19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjU1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjU1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI1NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjU2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1Nl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1NywgcykpCi0jCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2V4cHJfaWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9leHByX2lmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjUxYTMyNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2V4cHJfaWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfQ09OVFJPTF9FWFBSX0lGX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0NPTlRST0xfRVhQUl9JRl9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9leHByX2lpZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2Jvb2wuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9FWFBSX0lGICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRVhQUl9JRihjb25kLCBleHByKSBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9CT09MKGNvbmQpLCBleHByKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FWFBSX0lGKGNvbmQsIGV4cHIpIE5ETkJPT1NUX1BQX0VYUFJfSUZfSShjb25kLCBleHByKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRVhQUl9JRl9JKGNvbmQsIGV4cHIpIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0JPT0woY29uZCksIGV4cHIpCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2V4cHJfaWlmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZXhwcl9paWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZmE0YWVhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZXhwcl9paWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9DT05UUk9MX0VYUFJfSUlGX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0NPTlRST0xfRVhQUl9JSUZfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfRVhQUl9JSUYgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01XQ0MoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRVhQUl9JSUYoYml0LCBleHByKSBORE5CT09TVF9QUF9FWFBSX0lJRl9JKGJpdCwgZXhwcikKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRVhQUl9JSUYoYml0LCBleHByKSBORE5CT09TVF9QUF9FWFBSX0lJRl9PTygoYml0LCBleHByKSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VYUFJfSUlGX09PKHBhcikgTkROQk9PU1RfUFBfRVhQUl9JSUZfSSAjIyBwYXIKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0VYUFJfSUlGX0koYml0LCBleHByKSBORE5CT09TVF9QUF9FWFBSX0lJRl8gIyMgYml0KGV4cHIpCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9FWFBSX0lJRl8wKGV4cHIpCi0jIGRlZmluZSBORE5CT09TVF9QUF9FWFBSX0lJRl8xKGV4cHIpIGV4cHIKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvaWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9pZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiMmYxYzcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9pZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9DT05UUk9MX0lGX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0NPTlRST0xfSUZfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvaWlmLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvYm9vbC5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0lGICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSUYoY29uZCwgdCwgZikgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0JPT0woY29uZCksIHQsIGYpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lGKGNvbmQsIHQsIGYpIE5ETkJPT1NUX1BQX0lGX0koY29uZCwgdCwgZikKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lGX0koY29uZCwgdCwgZikgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0JPT0woY29uZCksIHQsIGYpCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2lpZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2lpZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjYzZmMjIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9paWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9DT05UUk9MX0lJRl9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9DT05UUk9MX0lJRl9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVdDQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JSUYoYml0LCB0LCBmKSBORE5CT09TVF9QUF9JSUZfSShiaXQsIHQsIGYpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lJRihiaXQsIHQsIGYpIE5ETkJPT1NUX1BQX0lJRl9PTygoYml0LCB0LCBmKSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lJRl9PTyhwYXIpIE5ETkJPT1NUX1BQX0lJRl9JICMjIHBhcgotIyBlbmRpZgotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVNWQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JSUZfSShiaXQsIHQsIGYpIE5ETkJPT1NUX1BQX0lJRl8gIyMgYml0KHQsIGYpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lJRl9JKGJpdCwgdCwgZikgTkROQk9PU1RfUFBfSUlGX0lJKE5ETkJPT1NUX1BQX0lJRl8gIyMgYml0KHQsIGYpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSUlGX0lJKGlkKSBpZAotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSUlGXzAodCwgZikgZgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSUlGXzEodCwgZikgdAotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC93aGlsZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL3doaWxlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTUzYzM5OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL3doaWxlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMxMiArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9DT05UUk9MX1dISUxFX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0NPTlRST0xfV0hJTEVfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZWJ1Zy9lcnJvci5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZXRhaWwvYXV0b19yZWMuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9mb2xkX2xlZnQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9mb2xkX3JpZ2h0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvYml0YW5kLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfV0hJTEUgKi8KLSMKLSMgaWYgMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEUocHJlZCwgb3AsIHN0YXRlKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEUgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX1dISUxFXywgTkROQk9PU1RfUFBfQVVUT19SRUMoTkROQk9PU1RfUFBfV0hJTEVfUCwgMjU2KSkKLSMKLSMgaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX1AobikgTkROQk9PU1RfUFBfQklUQU5EKE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9XSElMRV9DSEVDS18sIE5ETkJPT1NUX1BQX1dISUxFXyAjIyBuKE5ETkJPT1NUX1BQX1dISUxFX0YsIE5ETkJPT1NUX1BQX05JTCwgTkROQk9PU1RfUFBfTklMKSksIE5ETkJPT1NUX1BQX0JJVEFORChORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8gIyMgbihORE5CT09TVF9QUF9OSUwsIE5ETkJPT1NUX1BQX05JTCwgTkROQk9PU1RfUFBfTklMKSksIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfICMjIG4oTkROQk9PU1RfUFBfTklMLCBORE5CT09TVF9QUF9OSUwsIE5ETkJPT1NUX1BQX05JTCkpKSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfUChuKSBORE5CT09TVF9QUF9CSVRBTkQoTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLXywgTkROQk9PU1RfUFBfV0hJTEVfICMjIG4oTkROQk9PU1RfUFBfV0hJTEVfRiwgTkROQk9PU1RfUFBfTklMLCBORE5CT09TVF9QUF9OSUwpKSwgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLXywgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfICMjIG4oTkROQk9PU1RfUFBfTklMLCBORE5CT09TVF9QUF9OSUwsIE5ETkJPT1NUX1BQX05JTCkpKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfRihkLCBfKSAwCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2RldGFpbC9lZGcvd2hpbGUuaHBwPgotIyBlbGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01TVkMoKQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9kZXRhaWwvbXN2Yy93aGlsZS5ocHA+Ci0jIGVsaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRE1DKCkKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZGV0YWlsL2RtYy93aGlsZS5ocHA+Ci0jIGVsc2UKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZGV0YWlsL3doaWxlLmhwcD4KLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1NyhwLCBvLCBzKSBORE5CT09TVF9QUF9FUlJPUigweDAwMDEpCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9OSUwgMQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzMocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV81KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzYocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV84KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzkocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTAocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTEocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTIocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTMocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTQocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTUocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTYocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTcocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTgocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTkocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjAocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjEocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjIocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjMocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjQocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjUocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjYocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjcocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjgocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjkocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMzAocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMzEocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMzIocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMzMocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMzQocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMzUocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMzYocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMzcocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMzgocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMzkocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNDAocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNDEocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNDIocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNDMocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNDQocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNDUocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNDYocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNDcocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNDgocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNDkocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNTAocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNTEocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNTIocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNTMocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNTQocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNTUocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNTYocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNTcocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNTgocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNTkocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNjAocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNjEocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNjIocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNjMocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNjQocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNjUocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNjYocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNjcocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNjgocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNjkocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNzAocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNzEocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNzIocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNzMocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNzQocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNzUocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNzYocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNzcocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNzgocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNzkocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfODAocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfODEocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfODIocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfODMocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfODQocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfODUocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfODYocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfODcocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfODgocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfODkocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfOTAocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfOTEocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfOTIocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfOTMocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfOTQocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfOTUocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfOTYocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfOTcocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfOTgocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfOTkocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTAwKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEwMShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMDIocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTAzKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEwNChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMDUocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTA2KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEwNyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMDgocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTA5KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzExMChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMTEocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTEyKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzExMyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMTQocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTE1KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzExNihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMTcocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTE4KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzExOShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMjAocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTIxKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEyMihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMjMocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTI0KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEyNShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMjYocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTI3KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEyOChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMjkocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTMwKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEzMShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMzIocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTMzKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEzNChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMzUocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTM2KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEzNyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMzgocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTM5KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE0MChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNDEocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTQyKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE0MyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNDQocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTQ1KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE0NihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNDcocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTQ4KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE0OShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNTAocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTUxKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE1MihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNTMocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTU0KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE1NShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNTYocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTU3KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE1OChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNTkocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTYwKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE2MShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNjIocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTYzKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE2NChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNjUocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTY2KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE2NyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNjgocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTY5KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE3MChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNzEocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTcyKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE3MyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNzQocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTc1KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE3NihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNzcocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTc4KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE3OShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xODAocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTgxKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE4MihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xODMocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTg0KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE4NShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xODYocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTg3KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE4OChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xODkocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTkwKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE5MShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xOTIocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTkzKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE5NChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xOTUocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTk2KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE5NyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xOTgocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTk5KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIwMChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMDEocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjAyKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIwMyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMDQocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjA1KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIwNihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMDcocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjA4KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIwOShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMTAocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjExKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIxMihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMTMocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjE0KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIxNShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMTYocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjE3KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIxOChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMTkocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjIwKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIyMShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMjIocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjIzKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIyNChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMjUocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjI2KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIyNyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMjgocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjI5KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIzMChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMzEocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjMyKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIzMyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMzQocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjM1KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIzNihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMzcocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjM4KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIzOShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yNDAocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjQxKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzI0MihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yNDMocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjQ0KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzI0NShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yNDYocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjQ3KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzI0OChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yNDkocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjUwKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzI1MShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yNTIocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjUzKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzI1NChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yNTUocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjU2KHAsIG8sIHMpIDAKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RlYnVnL2Vycm9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RlYnVnL2Vycm9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjlmMTM1OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZWJ1Zy9lcnJvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0RFQlVHX0VSUk9SX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0RFQlVHX0VSUk9SX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9FUlJPUiAqLwotIwotIyBpZiBORE5CT09TVF9QUF9DT05GSUdfRVJST1JTCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FUlJPUihjb2RlKSBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfRVJST1JfLCBjb2RlKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRVJST1JfMHgwMDAwIE5ETkJPT1NUX1BQX0VSUk9SKDB4MDAwMCwgTkROQk9PU1RfUFBfSU5ERVhfT1VUX09GX0JPVU5EUykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0VSUk9SXzB4MDAwMSBORE5CT09TVF9QUF9FUlJPUigweDAwMDEsIE5ETkJPT1NUX1BQX1dISUxFX09WRVJGTE9XKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRVJST1JfMHgwMDAyIE5ETkJPT1NUX1BQX0VSUk9SKDB4MDAwMiwgTkROQk9PU1RfUFBfRk9SX09WRVJGTE9XKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRVJST1JfMHgwMDAzIE5ETkJPT1NUX1BQX0VSUk9SKDB4MDAwMywgTkROQk9PU1RfUFBfUkVQRUFUX09WRVJGTE9XKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRVJST1JfMHgwMDA0IE5ETkJPT1NUX1BQX0VSUk9SKDB4MDAwNCwgTkROQk9PU1RfUFBfTElTVF9GT0xEX09WRVJGTE9XKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRVJST1JfMHgwMDA1IE5ETkJPT1NUX1BQX0VSUk9SKDB4MDAwNSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfT1ZFUkZMT1cpCi0jIGRlZmluZSBORE5CT09TVF9QUF9FUlJPUl8weDAwMDYgTkROQk9PU1RfUFBfRVJST1IoMHgwMDA2LCBORE5CT09TVF9QUF9BUklUSE1FVElDX09WRVJGTE9XKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRVJST1JfMHgwMDA3IE5ETkJPT1NUX1BQX0VSUk9SKDB4MDAwNywgTkROQk9PU1RfUFBfRElWSVNJT05fQllfWkVSTykKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RlYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZWMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNDhlNzM5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RlYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0RFQ19IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9ERUNfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2RlYy5ocHA+Ci0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZXRhaWwvYXV0b19yZWMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2F1dG9fcmVjLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGJmNGFjZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZXRhaWwvYXV0b19yZWMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjkzICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMKLSMgaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRE1DKCkKLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZXRhaWwvZG1jL2F1dG9fcmVjLmhwcD4KLSMgZWxzZQotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0RFVEFJTF9BVVRPX1JFQ19IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9ERVRBSUxfQVVUT19SRUNfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2lpZi5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0FVVE9fUkVDICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9BVVRPX1JFQyhwcmVkLCBuKSBORE5CT09TVF9QUF9OT0RFX0VOVFJZXyAjIyBuKHByZWQpCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9OT0RFX0VOVFJZXzI1NihwKSBORE5CT09TVF9QUF9OT0RFXzEyOChwKShwKShwKShwKShwKShwKShwKShwKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV9FTlRSWV8xMjgocCkgTkROQk9PU1RfUFBfTk9ERV82NChwKShwKShwKShwKShwKShwKShwKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV9FTlRSWV82NChwKSBORE5CT09TVF9QUF9OT0RFXzMyKHApKHApKHApKHApKHApKHApCi0jIGRlZmluZSBORE5CT09TVF9QUF9OT0RFX0VOVFJZXzMyKHApIE5ETkJPT1NUX1BQX05PREVfMTYocCkocCkocCkocCkocCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfRU5UUllfMTYocCkgTkROQk9PU1RfUFBfTk9ERV84KHApKHApKHApKHApCi0jIGRlZmluZSBORE5CT09TVF9QUF9OT0RFX0VOVFJZXzgocCkgTkROQk9PU1RfUFBfTk9ERV80KHApKHApKHApCi0jIGRlZmluZSBORE5CT09TVF9QUF9OT0RFX0VOVFJZXzQocCkgTkROQk9PU1RfUFBfTk9ERV8yKHApKHApCi0jIGRlZmluZSBORE5CT09TVF9QUF9OT0RFX0VOVFJZXzIocCkgTkROQk9PU1RfUFBfTk9ERV8xKHApCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEyOChwKSBORE5CT09TVF9QUF9JSUYocCgxMjgpLCBORE5CT09TVF9QUF9OT0RFXzY0LCBORE5CT09TVF9QUF9OT0RFXzE5MikKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNjQocCkgTkROQk9PU1RfUFBfSUlGKHAoNjQpLCBORE5CT09TVF9QUF9OT0RFXzMyLCBORE5CT09TVF9QUF9OT0RFXzk2KQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMzIocCkgTkROQk9PU1RfUFBfSUlGKHAoMzIpLCBORE5CT09TVF9QUF9OT0RFXzE2LCBORE5CT09TVF9QUF9OT0RFXzQ4KQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE2KHApIE5ETkJPT1NUX1BQX0lJRihwKDE2KSwgTkROQk9PU1RfUFBfTk9ERV84LCBORE5CT09TVF9QUF9OT0RFXzI0KQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV84KHApIE5ETkJPT1NUX1BQX0lJRihwKDgpLCBORE5CT09TVF9QUF9OT0RFXzQsIE5ETkJPT1NUX1BQX05PREVfMTIpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV80KHApIE5ETkJPT1NUX1BQX0lJRihwKDQpLCBORE5CT09TVF9QUF9OT0RFXzIsIE5ETkJPT1NUX1BQX05PREVfNikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yKHApIE5ETkJPT1NUX1BQX0lJRihwKDIpLCBORE5CT09TVF9QUF9OT0RFXzEsIE5ETkJPT1NUX1BQX05PREVfMykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMShwKSBORE5CT09TVF9QUF9JSUYocCgxKSwgMSwgMikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMyhwKSBORE5CT09TVF9QUF9JSUYocCgzKSwgMywgNCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV82KHApIE5ETkJPT1NUX1BQX0lJRihwKDYpLCBORE5CT09TVF9QUF9OT0RFXzUsIE5ETkJPT1NUX1BQX05PREVfNykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNShwKSBORE5CT09TVF9QUF9JSUYocCg1KSwgNSwgNikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNyhwKSBORE5CT09TVF9QUF9JSUYocCg3KSwgNywgOCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEyKHApIE5ETkJPT1NUX1BQX0lJRihwKDEyKSwgTkROQk9PU1RfUFBfTk9ERV8xMCwgTkROQk9PU1RfUFBfTk9ERV8xNCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMChwKSBORE5CT09TVF9QUF9JSUYocCgxMCksIE5ETkJPT1NUX1BQX05PREVfOSwgTkROQk9PU1RfUFBfTk9ERV8xMSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfOShwKSBORE5CT09TVF9QUF9JSUYocCg5KSwgOSwgMTApCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzExKHApIE5ETkJPT1NUX1BQX0lJRihwKDExKSwgMTEsIDEyKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE0KHApIE5ETkJPT1NUX1BQX0lJRihwKDE0KSwgTkROQk9PU1RfUFBfTk9ERV8xMywgTkROQk9PU1RfUFBfTk9ERV8xNSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTMocCkgTkROQk9PU1RfUFBfSUlGKHAoMTMpLCAxMywgMTQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE1KHApIE5ETkJPT1NUX1BQX0lJRihwKDE1KSwgMTUsIDE2KQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNChwKSBORE5CT09TVF9QUF9JSUYocCgyNCksIE5ETkJPT1NUX1BQX05PREVfMjAsIE5ETkJPT1NUX1BQX05PREVfMjgpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMChwKSBORE5CT09TVF9QUF9JSUYocCgyMCksIE5ETkJPT1NUX1BQX05PREVfMTgsIE5ETkJPT1NUX1BQX05PREVfMjIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTgocCkgTkROQk9PU1RfUFBfSUlGKHAoMTgpLCBORE5CT09TVF9QUF9OT0RFXzE3LCBORE5CT09TVF9QUF9OT0RFXzE5KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNyhwKSBORE5CT09TVF9QUF9JSUYocCgxNyksIDE3LCAxOCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTkocCkgTkROQk9PU1RfUFBfSUlGKHAoMTkpLCAxOSwgMjApCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjIocCkgTkROQk9PU1RfUFBfSUlGKHAoMjIpLCBORE5CT09TVF9QUF9OT0RFXzIxLCBORE5CT09TVF9QUF9OT0RFXzIzKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMShwKSBORE5CT09TVF9QUF9JSUYocCgyMSksIDIxLCAyMikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjMocCkgTkROQk9PU1RfUFBfSUlGKHAoMjMpLCAyMywgMjQpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yOChwKSBORE5CT09TVF9QUF9JSUYocCgyOCksIE5ETkJPT1NUX1BQX05PREVfMjYsIE5ETkJPT1NUX1BQX05PREVfMzApCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjYocCkgTkROQk9PU1RfUFBfSUlGKHAoMjYpLCBORE5CT09TVF9QUF9OT0RFXzI1LCBORE5CT09TVF9QUF9OT0RFXzI3KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNShwKSBORE5CT09TVF9QUF9JSUYocCgyNSksIDI1LCAyNikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjcocCkgTkROQk9PU1RfUFBfSUlGKHAoMjcpLCAyNywgMjgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMzAocCkgTkROQk9PU1RfUFBfSUlGKHAoMzApLCBORE5CT09TVF9QUF9OT0RFXzI5LCBORE5CT09TVF9QUF9OT0RFXzMxKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yOShwKSBORE5CT09TVF9QUF9JSUYocCgyOSksIDI5LCAzMCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMzEocCkgTkROQk9PU1RfUFBfSUlGKHAoMzEpLCAzMSwgMzIpCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNDgocCkgTkROQk9PU1RfUFBfSUlGKHAoNDgpLCBORE5CT09TVF9QUF9OT0RFXzQwLCBORE5CT09TVF9QUF9OT0RFXzU2KQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV80MChwKSBORE5CT09TVF9QUF9JSUYocCg0MCksIE5ETkJPT1NUX1BQX05PREVfMzYsIE5ETkJPT1NUX1BQX05PREVfNDQpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8zNihwKSBORE5CT09TVF9QUF9JSUYocCgzNiksIE5ETkJPT1NUX1BQX05PREVfMzQsIE5ETkJPT1NUX1BQX05PREVfMzgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMzQocCkgTkROQk9PU1RfUFBfSUlGKHAoMzQpLCBORE5CT09TVF9QUF9OT0RFXzMzLCBORE5CT09TVF9QUF9OT0RFXzM1KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8zMyhwKSBORE5CT09TVF9QUF9JSUYocCgzMyksIDMzLCAzNCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMzUocCkgTkROQk9PU1RfUFBfSUlGKHAoMzUpLCAzNSwgMzYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMzgocCkgTkROQk9PU1RfUFBfSUlGKHAoMzgpLCBORE5CT09TVF9QUF9OT0RFXzM3LCBORE5CT09TVF9QUF9OT0RFXzM5KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8zNyhwKSBORE5CT09TVF9QUF9JSUYocCgzNyksIDM3LCAzOCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMzkocCkgTkROQk9PU1RfUFBfSUlGKHAoMzkpLCAzOSwgNDApCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV80NChwKSBORE5CT09TVF9QUF9JSUYocCg0NCksIE5ETkJPT1NUX1BQX05PREVfNDIsIE5ETkJPT1NUX1BQX05PREVfNDYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNDIocCkgTkROQk9PU1RfUFBfSUlGKHAoNDIpLCBORE5CT09TVF9QUF9OT0RFXzQxLCBORE5CT09TVF9QUF9OT0RFXzQzKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV80MShwKSBORE5CT09TVF9QUF9JSUYocCg0MSksIDQxLCA0MikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNDMocCkgTkROQk9PU1RfUFBfSUlGKHAoNDMpLCA0MywgNDQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNDYocCkgTkROQk9PU1RfUFBfSUlGKHAoNDYpLCBORE5CT09TVF9QUF9OT0RFXzQ1LCBORE5CT09TVF9QUF9OT0RFXzQ3KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV80NShwKSBORE5CT09TVF9QUF9JSUYocCg0NSksIDQ1LCA0NikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNDcocCkgTkROQk9PU1RfUFBfSUlGKHAoNDcpLCA0NywgNDgpCi0jICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzU2KHApIE5ETkJPT1NUX1BQX0lJRihwKDU2KSwgTkROQk9PU1RfUFBfTk9ERV81MiwgTkROQk9PU1RfUFBfTk9ERV82MCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzUyKHApIE5ETkJPT1NUX1BQX0lJRihwKDUyKSwgTkROQk9PU1RfUFBfTk9ERV81MCwgTkROQk9PU1RfUFBfTk9ERV81NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV81MChwKSBORE5CT09TVF9QUF9JSUYocCg1MCksIE5ETkJPT1NUX1BQX05PREVfNDksIE5ETkJPT1NUX1BQX05PREVfNTEpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzQ5KHApIE5ETkJPT1NUX1BQX0lJRihwKDQ5KSwgNDksIDUwKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV81MShwKSBORE5CT09TVF9QUF9JSUYocCg1MSksIDUxLCA1MikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV81NChwKSBORE5CT09TVF9QUF9JSUYocCg1NCksIE5ETkJPT1NUX1BQX05PREVfNTMsIE5ETkJPT1NUX1BQX05PREVfNTUpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzUzKHApIE5ETkJPT1NUX1BQX0lJRihwKDUzKSwgNTMsIDU0KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV81NShwKSBORE5CT09TVF9QUF9JSUYocCg1NSksIDU1LCA1NikKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzYwKHApIE5ETkJPT1NUX1BQX0lJRihwKDYwKSwgTkROQk9PU1RfUFBfTk9ERV81OCwgTkROQk9PU1RfUFBfTk9ERV82MikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV81OChwKSBORE5CT09TVF9QUF9JSUYocCg1OCksIE5ETkJPT1NUX1BQX05PREVfNTcsIE5ETkJPT1NUX1BQX05PREVfNTkpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzU3KHApIE5ETkJPT1NUX1BQX0lJRihwKDU3KSwgNTcsIDU4KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV81OShwKSBORE5CT09TVF9QUF9JSUYocCg1OSksIDU5LCA2MCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV82MihwKSBORE5CT09TVF9QUF9JSUYocCg2MiksIE5ETkJPT1NUX1BQX05PREVfNjEsIE5ETkJPT1NUX1BQX05PREVfNjMpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzYxKHApIE5ETkJPT1NUX1BQX0lJRihwKDYxKSwgNjEsIDYyKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV82MyhwKSBORE5CT09TVF9QUF9JSUYocCg2MyksIDYzLCA2NCkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzk2KHApIE5ETkJPT1NUX1BQX0lJRihwKDk2KSwgTkROQk9PU1RfUFBfTk9ERV84MCwgTkROQk9PU1RfUFBfTk9ERV8xMTIpCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfODAocCkgTkROQk9PU1RfUFBfSUlGKHAoODApLCBORE5CT09TVF9QUF9OT0RFXzcyLCBORE5CT09TVF9QUF9OT0RFXzg4KQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV83MihwKSBORE5CT09TVF9QUF9JSUYocCg3MiksIE5ETkJPT1NUX1BQX05PREVfNjgsIE5ETkJPT1NUX1BQX05PREVfNzYpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV82OChwKSBORE5CT09TVF9QUF9JSUYocCg2OCksIE5ETkJPT1NUX1BQX05PREVfNjYsIE5ETkJPT1NUX1BQX05PREVfNzApCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNjYocCkgTkROQk9PU1RfUFBfSUlGKHAoNjYpLCBORE5CT09TVF9QUF9OT0RFXzY1LCBORE5CT09TVF9QUF9OT0RFXzY3KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV82NShwKSBORE5CT09TVF9QUF9JSUYocCg2NSksIDY1LCA2NikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNjcocCkgTkROQk9PU1RfUFBfSUlGKHAoNjcpLCA2NywgNjgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNzAocCkgTkROQk9PU1RfUFBfSUlGKHAoNzApLCBORE5CT09TVF9QUF9OT0RFXzY5LCBORE5CT09TVF9QUF9OT0RFXzcxKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV82OShwKSBORE5CT09TVF9QUF9JSUYocCg2OSksIDY5LCA3MCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNzEocCkgTkROQk9PU1RfUFBfSUlGKHAoNzEpLCA3MSwgNzIpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV83NihwKSBORE5CT09TVF9QUF9JSUYocCg3NiksIE5ETkJPT1NUX1BQX05PREVfNzQsIE5ETkJPT1NUX1BQX05PREVfNzgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNzQocCkgTkROQk9PU1RfUFBfSUlGKHAoNzQpLCBORE5CT09TVF9QUF9OT0RFXzczLCBORE5CT09TVF9QUF9OT0RFXzc1KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV83MyhwKSBORE5CT09TVF9QUF9JSUYocCg3MyksIDczLCA3NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNzUocCkgTkROQk9PU1RfUFBfSUlGKHAoNzUpLCA3NSwgNzYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNzgocCkgTkROQk9PU1RfUFBfSUlGKHAoNzgpLCBORE5CT09TVF9QUF9OT0RFXzc3LCBORE5CT09TVF9QUF9OT0RFXzc5KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV83NyhwKSBORE5CT09TVF9QUF9JSUYocCg3NyksIDc3LCA3OCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNzkocCkgTkROQk9PU1RfUFBfSUlGKHAoNzkpLCA3OSwgODApCi0jICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzg4KHApIE5ETkJPT1NUX1BQX0lJRihwKDg4KSwgTkROQk9PU1RfUFBfTk9ERV84NCwgTkROQk9PU1RfUFBfTk9ERV85MikKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzg0KHApIE5ETkJPT1NUX1BQX0lJRihwKDg0KSwgTkROQk9PU1RfUFBfTk9ERV84MiwgTkROQk9PU1RfUFBfTk9ERV84NikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV84MihwKSBORE5CT09TVF9QUF9JSUYocCg4MiksIE5ETkJPT1NUX1BQX05PREVfODEsIE5ETkJPT1NUX1BQX05PREVfODMpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzgxKHApIE5ETkJPT1NUX1BQX0lJRihwKDgxKSwgODEsIDgyKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV84MyhwKSBORE5CT09TVF9QUF9JSUYocCg4MyksIDgzLCA4NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV84NihwKSBORE5CT09TVF9QUF9JSUYocCg4NiksIE5ETkJPT1NUX1BQX05PREVfODUsIE5ETkJPT1NUX1BQX05PREVfODcpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzg1KHApIE5ETkJPT1NUX1BQX0lJRihwKDg1KSwgODUsIDg2KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV84NyhwKSBORE5CT09TVF9QUF9JSUYocCg4NyksIDg3LCA4OCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzkyKHApIE5ETkJPT1NUX1BQX0lJRihwKDkyKSwgTkROQk9PU1RfUFBfTk9ERV85MCwgTkROQk9PU1RfUFBfTk9ERV85NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV85MChwKSBORE5CT09TVF9QUF9JSUYocCg5MCksIE5ETkJPT1NUX1BQX05PREVfODksIE5ETkJPT1NUX1BQX05PREVfOTEpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzg5KHApIE5ETkJPT1NUX1BQX0lJRihwKDg5KSwgODksIDkwKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV85MShwKSBORE5CT09TVF9QUF9JSUYocCg5MSksIDkxLCA5MikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV85NChwKSBORE5CT09TVF9QUF9JSUYocCg5NCksIE5ETkJPT1NUX1BQX05PREVfOTMsIE5ETkJPT1NUX1BQX05PREVfOTUpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzkzKHApIE5ETkJPT1NUX1BQX0lJRihwKDkzKSwgOTMsIDk0KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV85NShwKSBORE5CT09TVF9QUF9JSUYocCg5NSksIDk1LCA5NikKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMTIocCkgTkROQk9PU1RfUFBfSUlGKHAoMTEyKSwgTkROQk9PU1RfUFBfTk9ERV8xMDQsIE5ETkJPT1NUX1BQX05PREVfMTIwKQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMDQocCkgTkROQk9PU1RfUFBfSUlGKHAoMTA0KSwgTkROQk9PU1RfUFBfTk9ERV8xMDAsIE5ETkJPT1NUX1BQX05PREVfMTA4KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTAwKHApIE5ETkJPT1NUX1BQX0lJRihwKDEwMCksIE5ETkJPT1NUX1BQX05PREVfOTgsIE5ETkJPT1NUX1BQX05PREVfMTAyKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzk4KHApIE5ETkJPT1NUX1BQX0lJRihwKDk4KSwgTkROQk9PU1RfUFBfTk9ERV85NywgTkROQk9PU1RfUFBfTk9ERV85OSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfOTcocCkgTkROQk9PU1RfUFBfSUlGKHAoOTcpLCA5NywgOTgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzk5KHApIE5ETkJPT1NUX1BQX0lJRihwKDk5KSwgOTksIDEwMCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMDIocCkgTkROQk9PU1RfUFBfSUlGKHAoMTAyKSwgTkROQk9PU1RfUFBfTk9ERV8xMDEsIE5ETkJPT1NUX1BQX05PREVfMTAzKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMDEocCkgTkROQk9PU1RfUFBfSUlGKHAoMTAxKSwgMTAxLCAxMDIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEwMyhwKSBORE5CT09TVF9QUF9JSUYocCgxMDMpLCAxMDMsIDEwNCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEwOChwKSBORE5CT09TVF9QUF9JSUYocCgxMDgpLCBORE5CT09TVF9QUF9OT0RFXzEwNiwgTkROQk9PU1RfUFBfTk9ERV8xMTApCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTA2KHApIE5ETkJPT1NUX1BQX0lJRihwKDEwNiksIE5ETkJPT1NUX1BQX05PREVfMTA1LCBORE5CT09TVF9QUF9OT0RFXzEwNykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTA1KHApIE5ETkJPT1NUX1BQX0lJRihwKDEwNSksIDEwNSwgMTA2KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMDcocCkgTkROQk9PU1RfUFBfSUlGKHAoMTA3KSwgMTA3LCAxMDgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTEwKHApIE5ETkJPT1NUX1BQX0lJRihwKDExMCksIE5ETkJPT1NUX1BQX05PREVfMTA5LCBORE5CT09TVF9QUF9OT0RFXzExMSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTA5KHApIE5ETkJPT1NUX1BQX0lJRihwKDEwOSksIDEwOSwgMTEwKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMTEocCkgTkROQk9PU1RfUFBfSUlGKHAoMTExKSwgMTExLCAxMTIpCi0jICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEyMChwKSBORE5CT09TVF9QUF9JSUYocCgxMjApLCBORE5CT09TVF9QUF9OT0RFXzExNiwgTkROQk9PU1RfUFBfTk9ERV8xMjQpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMTYocCkgTkROQk9PU1RfUFBfSUlGKHAoMTE2KSwgTkROQk9PU1RfUFBfTk9ERV8xMTQsIE5ETkJPT1NUX1BQX05PREVfMTE4KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzExNChwKSBORE5CT09TVF9QUF9JSUYocCgxMTQpLCBORE5CT09TVF9QUF9OT0RFXzExMywgTkROQk9PU1RfUFBfTk9ERV8xMTUpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzExMyhwKSBORE5CT09TVF9QUF9JSUYocCgxMTMpLCAxMTMsIDExNCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTE1KHApIE5ETkJPT1NUX1BQX0lJRihwKDExNSksIDExNSwgMTE2KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzExOChwKSBORE5CT09TVF9QUF9JSUYocCgxMTgpLCBORE5CT09TVF9QUF9OT0RFXzExNywgTkROQk9PU1RfUFBfTk9ERV8xMTkpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzExNyhwKSBORE5CT09TVF9QUF9JSUYocCgxMTcpLCAxMTcsIDExOCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTE5KHApIE5ETkJPT1NUX1BQX0lJRihwKDExOSksIDExOSwgMTIwKQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTI0KHApIE5ETkJPT1NUX1BQX0lJRihwKDEyNCksIE5ETkJPT1NUX1BQX05PREVfMTIyLCBORE5CT09TVF9QUF9OT0RFXzEyNikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMjIocCkgTkROQk9PU1RfUFBfSUlGKHAoMTIyKSwgTkROQk9PU1RfUFBfTk9ERV8xMjEsIE5ETkJPT1NUX1BQX05PREVfMTIzKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMjEocCkgTkROQk9PU1RfUFBfSUlGKHAoMTIxKSwgMTIxLCAxMjIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEyMyhwKSBORE5CT09TVF9QUF9JSUYocCgxMjMpLCAxMjMsIDEyNCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMjYocCkgTkROQk9PU1RfUFBfSUlGKHAoMTI2KSwgTkROQk9PU1RfUFBfTk9ERV8xMjUsIE5ETkJPT1NUX1BQX05PREVfMTI3KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMjUocCkgTkROQk9PU1RfUFBfSUlGKHAoMTI1KSwgMTI1LCAxMjYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEyNyhwKSBORE5CT09TVF9QUF9JSUYocCgxMjcpLCAxMjcsIDEyOCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTkyKHApIE5ETkJPT1NUX1BQX0lJRihwKDE5MiksIE5ETkJPT1NUX1BQX05PREVfMTYwLCBORE5CT09TVF9QUF9OT0RFXzIyNCkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE2MChwKSBORE5CT09TVF9QUF9JSUYocCgxNjApLCBORE5CT09TVF9QUF9OT0RFXzE0NCwgTkROQk9PU1RfUFBfTk9ERV8xNzYpCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTQ0KHApIE5ETkJPT1NUX1BQX0lJRihwKDE0NCksIE5ETkJPT1NUX1BQX05PREVfMTM2LCBORE5CT09TVF9QUF9OT0RFXzE1MikKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTM2KHApIE5ETkJPT1NUX1BQX0lJRihwKDEzNiksIE5ETkJPT1NUX1BQX05PREVfMTMyLCBORE5CT09TVF9QUF9OT0RFXzE0MCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEzMihwKSBORE5CT09TVF9QUF9JSUYocCgxMzIpLCBORE5CT09TVF9QUF9OT0RFXzEzMCwgTkROQk9PU1RfUFBfTk9ERV8xMzQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTMwKHApIE5ETkJPT1NUX1BQX0lJRihwKDEzMCksIE5ETkJPT1NUX1BQX05PREVfMTI5LCBORE5CT09TVF9QUF9OT0RFXzEzMSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTI5KHApIE5ETkJPT1NUX1BQX0lJRihwKDEyOSksIDEyOSwgMTMwKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMzEocCkgTkROQk9PU1RfUFBfSUlGKHAoMTMxKSwgMTMxLCAxMzIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTM0KHApIE5ETkJPT1NUX1BQX0lJRihwKDEzNCksIE5ETkJPT1NUX1BQX05PREVfMTMzLCBORE5CT09TVF9QUF9OT0RFXzEzNSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTMzKHApIE5ETkJPT1NUX1BQX0lJRihwKDEzMyksIDEzMywgMTM0KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMzUocCkgTkROQk9PU1RfUFBfSUlGKHAoMTM1KSwgMTM1LCAxMzYpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNDAocCkgTkROQk9PU1RfUFBfSUlGKHAoMTQwKSwgTkROQk9PU1RfUFBfTk9ERV8xMzgsIE5ETkJPT1NUX1BQX05PREVfMTQyKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEzOChwKSBORE5CT09TVF9QUF9JSUYocCgxMzgpLCBORE5CT09TVF9QUF9OT0RFXzEzNywgTkROQk9PU1RfUFBfTk9ERV8xMzkpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEzNyhwKSBORE5CT09TVF9QUF9JSUYocCgxMzcpLCAxMzcsIDEzOCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTM5KHApIE5ETkJPT1NUX1BQX0lJRihwKDEzOSksIDEzOSwgMTQwKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE0MihwKSBORE5CT09TVF9QUF9JSUYocCgxNDIpLCBORE5CT09TVF9QUF9OT0RFXzE0MSwgTkROQk9PU1RfUFBfTk9ERV8xNDMpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE0MShwKSBORE5CT09TVF9QUF9JSUYocCgxNDEpLCAxNDEsIDE0MikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTQzKHApIE5ETkJPT1NUX1BQX0lJRihwKDE0MyksIDE0MywgMTQ0KQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNTIocCkgTkROQk9PU1RfUFBfSUlGKHAoMTUyKSwgTkROQk9PU1RfUFBfTk9ERV8xNDgsIE5ETkJPT1NUX1BQX05PREVfMTU2KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTQ4KHApIE5ETkJPT1NUX1BQX0lJRihwKDE0OCksIE5ETkJPT1NUX1BQX05PREVfMTQ2LCBORE5CT09TVF9QUF9OT0RFXzE1MCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNDYocCkgTkROQk9PU1RfUFBfSUlGKHAoMTQ2KSwgTkROQk9PU1RfUFBfTk9ERV8xNDUsIE5ETkJPT1NUX1BQX05PREVfMTQ3KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNDUocCkgTkROQk9PU1RfUFBfSUlGKHAoMTQ1KSwgMTQ1LCAxNDYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE0NyhwKSBORE5CT09TVF9QUF9JSUYocCgxNDcpLCAxNDcsIDE0OCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNTAocCkgTkROQk9PU1RfUFBfSUlGKHAoMTUwKSwgTkROQk9PU1RfUFBfTk9ERV8xNDksIE5ETkJPT1NUX1BQX05PREVfMTUxKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNDkocCkgTkROQk9PU1RfUFBfSUlGKHAoMTQ5KSwgMTQ5LCAxNTApCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE1MShwKSBORE5CT09TVF9QUF9JSUYocCgxNTEpLCAxNTEsIDE1MikKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE1NihwKSBORE5CT09TVF9QUF9JSUYocCgxNTYpLCBORE5CT09TVF9QUF9OT0RFXzE1NCwgTkROQk9PU1RfUFBfTk9ERV8xNTgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTU0KHApIE5ETkJPT1NUX1BQX0lJRihwKDE1NCksIE5ETkJPT1NUX1BQX05PREVfMTUzLCBORE5CT09TVF9QUF9OT0RFXzE1NSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTUzKHApIE5ETkJPT1NUX1BQX0lJRihwKDE1MyksIDE1MywgMTU0KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNTUocCkgTkROQk9PU1RfUFBfSUlGKHAoMTU1KSwgMTU1LCAxNTYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTU4KHApIE5ETkJPT1NUX1BQX0lJRihwKDE1OCksIE5ETkJPT1NUX1BQX05PREVfMTU3LCBORE5CT09TVF9QUF9OT0RFXzE1OSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTU3KHApIE5ETkJPT1NUX1BQX0lJRihwKDE1NyksIDE1NywgMTU4KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNTkocCkgTkROQk9PU1RfUFBfSUlGKHAoMTU5KSwgMTU5LCAxNjApCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTc2KHApIE5ETkJPT1NUX1BQX0lJRihwKDE3NiksIE5ETkJPT1NUX1BQX05PREVfMTY4LCBORE5CT09TVF9QUF9OT0RFXzE4NCkKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTY4KHApIE5ETkJPT1NUX1BQX0lJRihwKDE2OCksIE5ETkJPT1NUX1BQX05PREVfMTY0LCBORE5CT09TVF9QUF9OT0RFXzE3MikKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE2NChwKSBORE5CT09TVF9QUF9JSUYocCgxNjQpLCBORE5CT09TVF9QUF9OT0RFXzE2MiwgTkROQk9PU1RfUFBfTk9ERV8xNjYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTYyKHApIE5ETkJPT1NUX1BQX0lJRihwKDE2MiksIE5ETkJPT1NUX1BQX05PREVfMTYxLCBORE5CT09TVF9QUF9OT0RFXzE2MykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTYxKHApIE5ETkJPT1NUX1BQX0lJRihwKDE2MSksIDE2MSwgMTYyKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNjMocCkgTkROQk9PU1RfUFBfSUlGKHAoMTYzKSwgMTYzLCAxNjQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTY2KHApIE5ETkJPT1NUX1BQX0lJRihwKDE2NiksIE5ETkJPT1NUX1BQX05PREVfMTY1LCBORE5CT09TVF9QUF9OT0RFXzE2NykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTY1KHApIE5ETkJPT1NUX1BQX0lJRihwKDE2NSksIDE2NSwgMTY2KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNjcocCkgTkROQk9PU1RfUFBfSUlGKHAoMTY3KSwgMTY3LCAxNjgpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNzIocCkgTkROQk9PU1RfUFBfSUlGKHAoMTcyKSwgTkROQk9PU1RfUFBfTk9ERV8xNzAsIE5ETkJPT1NUX1BQX05PREVfMTc0KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE3MChwKSBORE5CT09TVF9QUF9JSUYocCgxNzApLCBORE5CT09TVF9QUF9OT0RFXzE2OSwgTkROQk9PU1RfUFBfTk9ERV8xNzEpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE2OShwKSBORE5CT09TVF9QUF9JSUYocCgxNjkpLCAxNjksIDE3MCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTcxKHApIE5ETkJPT1NUX1BQX0lJRihwKDE3MSksIDE3MSwgMTcyKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE3NChwKSBORE5CT09TVF9QUF9JSUYocCgxNzQpLCBORE5CT09TVF9QUF9OT0RFXzE3MywgTkROQk9PU1RfUFBfTk9ERV8xNzUpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE3MyhwKSBORE5CT09TVF9QUF9JSUYocCgxNzMpLCAxNzMsIDE3NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTc1KHApIE5ETkJPT1NUX1BQX0lJRihwKDE3NSksIDE3NSwgMTc2KQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xODQocCkgTkROQk9PU1RfUFBfSUlGKHAoMTg0KSwgTkROQk9PU1RfUFBfTk9ERV8xODAsIE5ETkJPT1NUX1BQX05PREVfMTg4KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTgwKHApIE5ETkJPT1NUX1BQX0lJRihwKDE4MCksIE5ETkJPT1NUX1BQX05PREVfMTc4LCBORE5CT09TVF9QUF9OT0RFXzE4MikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNzgocCkgTkROQk9PU1RfUFBfSUlGKHAoMTc4KSwgTkROQk9PU1RfUFBfTk9ERV8xNzcsIE5ETkJPT1NUX1BQX05PREVfMTc5KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNzcocCkgTkROQk9PU1RfUFBfSUlGKHAoMTc3KSwgMTc3LCAxNzgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE3OShwKSBORE5CT09TVF9QUF9JSUYocCgxNzkpLCAxNzksIDE4MCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xODIocCkgTkROQk9PU1RfUFBfSUlGKHAoMTgyKSwgTkROQk9PU1RfUFBfTk9ERV8xODEsIE5ETkJPT1NUX1BQX05PREVfMTgzKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xODEocCkgTkROQk9PU1RfUFBfSUlGKHAoMTgxKSwgMTgxLCAxODIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE4MyhwKSBORE5CT09TVF9QUF9JSUYocCgxODMpLCAxODMsIDE4NCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE4OChwKSBORE5CT09TVF9QUF9JSUYocCgxODgpLCBORE5CT09TVF9QUF9OT0RFXzE4NiwgTkROQk9PU1RfUFBfTk9ERV8xOTApCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTg2KHApIE5ETkJPT1NUX1BQX0lJRihwKDE4NiksIE5ETkJPT1NUX1BQX05PREVfMTg1LCBORE5CT09TVF9QUF9OT0RFXzE4NykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTg1KHApIE5ETkJPT1NUX1BQX0lJRihwKDE4NSksIDE4NSwgMTg2KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xODcocCkgTkROQk9PU1RfUFBfSUlGKHAoMTg3KSwgMTg3LCAxODgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTkwKHApIE5ETkJPT1NUX1BQX0lJRihwKDE5MCksIE5ETkJPT1NUX1BQX05PREVfMTg5LCBORE5CT09TVF9QUF9OT0RFXzE5MSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTg5KHApIE5ETkJPT1NUX1BQX0lJRihwKDE4OSksIDE4OSwgMTkwKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xOTEocCkgTkROQk9PU1RfUFBfSUlGKHAoMTkxKSwgMTkxLCAxOTIpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMjQocCkgTkROQk9PU1RfUFBfSUlGKHAoMjI0KSwgTkROQk9PU1RfUFBfTk9ERV8yMDgsIE5ETkJPT1NUX1BQX05PREVfMjQwKQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIwOChwKSBORE5CT09TVF9QUF9JSUYocCgyMDgpLCBORE5CT09TVF9QUF9OT0RFXzIwMCwgTkROQk9PU1RfUFBfTk9ERV8yMTYpCi0jICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIwMChwKSBORE5CT09TVF9QUF9JSUYocCgyMDApLCBORE5CT09TVF9QUF9OT0RFXzE5NiwgTkROQk9PU1RfUFBfTk9ERV8yMDQpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xOTYocCkgTkROQk9PU1RfUFBfSUlGKHAoMTk2KSwgTkROQk9PU1RfUFBfTk9ERV8xOTQsIE5ETkJPT1NUX1BQX05PREVfMTk4KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE5NChwKSBORE5CT09TVF9QUF9JSUYocCgxOTQpLCBORE5CT09TVF9QUF9OT0RFXzE5MywgTkROQk9PU1RfUFBfTk9ERV8xOTUpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE5MyhwKSBORE5CT09TVF9QUF9JSUYocCgxOTMpLCAxOTMsIDE5NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTk1KHApIE5ETkJPT1NUX1BQX0lJRihwKDE5NSksIDE5NSwgMTk2KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE5OChwKSBORE5CT09TVF9QUF9JSUYocCgxOTgpLCBORE5CT09TVF9QUF9OT0RFXzE5NywgTkROQk9PU1RfUFBfTk9ERV8xOTkpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE5NyhwKSBORE5CT09TVF9QUF9JSUYocCgxOTcpLCAxOTcsIDE5OCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTk5KHApIE5ETkJPT1NUX1BQX0lJRihwKDE5OSksIDE5OSwgMjAwKQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjA0KHApIE5ETkJPT1NUX1BQX0lJRihwKDIwNCksIE5ETkJPT1NUX1BQX05PREVfMjAyLCBORE5CT09TVF9QUF9OT0RFXzIwNikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMDIocCkgTkROQk9PU1RfUFBfSUlGKHAoMjAyKSwgTkROQk9PU1RfUFBfTk9ERV8yMDEsIE5ETkJPT1NUX1BQX05PREVfMjAzKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMDEocCkgTkROQk9PU1RfUFBfSUlGKHAoMjAxKSwgMjAxLCAyMDIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIwMyhwKSBORE5CT09TVF9QUF9JSUYocCgyMDMpLCAyMDMsIDIwNCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMDYocCkgTkROQk9PU1RfUFBfSUlGKHAoMjA2KSwgTkROQk9PU1RfUFBfTk9ERV8yMDUsIE5ETkJPT1NUX1BQX05PREVfMjA3KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMDUocCkgTkROQk9PU1RfUFBfSUlGKHAoMjA1KSwgMjA1LCAyMDYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIwNyhwKSBORE5CT09TVF9QUF9JSUYocCgyMDcpLCAyMDcsIDIwOCkKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjE2KHApIE5ETkJPT1NUX1BQX0lJRihwKDIxNiksIE5ETkJPT1NUX1BQX05PREVfMjEyLCBORE5CT09TVF9QUF9OT0RFXzIyMCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIxMihwKSBORE5CT09TVF9QUF9JSUYocCgyMTIpLCBORE5CT09TVF9QUF9OT0RFXzIxMCwgTkROQk9PU1RfUFBfTk9ERV8yMTQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjEwKHApIE5ETkJPT1NUX1BQX0lJRihwKDIxMCksIE5ETkJPT1NUX1BQX05PREVfMjA5LCBORE5CT09TVF9QUF9OT0RFXzIxMSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjA5KHApIE5ETkJPT1NUX1BQX0lJRihwKDIwOSksIDIwOSwgMjEwKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMTEocCkgTkROQk9PU1RfUFBfSUlGKHAoMjExKSwgMjExLCAyMTIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjE0KHApIE5ETkJPT1NUX1BQX0lJRihwKDIxNCksIE5ETkJPT1NUX1BQX05PREVfMjEzLCBORE5CT09TVF9QUF9OT0RFXzIxNSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjEzKHApIE5ETkJPT1NUX1BQX0lJRihwKDIxMyksIDIxMywgMjE0KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMTUocCkgTkROQk9PU1RfUFBfSUlGKHAoMjE1KSwgMjE1LCAyMTYpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMjAocCkgTkROQk9PU1RfUFBfSUlGKHAoMjIwKSwgTkROQk9PU1RfUFBfTk9ERV8yMTgsIE5ETkJPT1NUX1BQX05PREVfMjIyKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIxOChwKSBORE5CT09TVF9QUF9JSUYocCgyMTgpLCBORE5CT09TVF9QUF9OT0RFXzIxNywgTkROQk9PU1RfUFBfTk9ERV8yMTkpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIxNyhwKSBORE5CT09TVF9QUF9JSUYocCgyMTcpLCAyMTcsIDIxOCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjE5KHApIE5ETkJPT1NUX1BQX0lJRihwKDIxOSksIDIxOSwgMjIwKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIyMihwKSBORE5CT09TVF9QUF9JSUYocCgyMjIpLCBORE5CT09TVF9QUF9OT0RFXzIyMSwgTkROQk9PU1RfUFBfTk9ERV8yMjMpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIyMShwKSBORE5CT09TVF9QUF9JSUYocCgyMjEpLCAyMjEsIDIyMikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjIzKHApIE5ETkJPT1NUX1BQX0lJRihwKDIyMyksIDIyMywgMjI0KQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI0MChwKSBORE5CT09TVF9QUF9JSUYocCgyNDApLCBORE5CT09TVF9QUF9OT0RFXzIzMiwgTkROQk9PU1RfUFBfTk9ERV8yNDgpCi0jICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIzMihwKSBORE5CT09TVF9QUF9JSUYocCgyMzIpLCBORE5CT09TVF9QUF9OT0RFXzIyOCwgTkROQk9PU1RfUFBfTk9ERV8yMzYpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMjgocCkgTkROQk9PU1RfUFBfSUlGKHAoMjI4KSwgTkROQk9PU1RfUFBfTk9ERV8yMjYsIE5ETkJPT1NUX1BQX05PREVfMjMwKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIyNihwKSBORE5CT09TVF9QUF9JSUYocCgyMjYpLCBORE5CT09TVF9QUF9OT0RFXzIyNSwgTkROQk9PU1RfUFBfTk9ERV8yMjcpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIyNShwKSBORE5CT09TVF9QUF9JSUYocCgyMjUpLCAyMjUsIDIyNikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjI3KHApIE5ETkJPT1NUX1BQX0lJRihwKDIyNyksIDIyNywgMjI4KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIzMChwKSBORE5CT09TVF9QUF9JSUYocCgyMzApLCBORE5CT09TVF9QUF9OT0RFXzIyOSwgTkROQk9PU1RfUFBfTk9ERV8yMzEpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIyOShwKSBORE5CT09TVF9QUF9JSUYocCgyMjkpLCAyMjksIDIzMCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjMxKHApIE5ETkJPT1NUX1BQX0lJRihwKDIzMSksIDIzMSwgMjMyKQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjM2KHApIE5ETkJPT1NUX1BQX0lJRihwKDIzNiksIE5ETkJPT1NUX1BQX05PREVfMjM0LCBORE5CT09TVF9QUF9OT0RFXzIzOCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMzQocCkgTkROQk9PU1RfUFBfSUlGKHAoMjM0KSwgTkROQk9PU1RfUFBfTk9ERV8yMzMsIE5ETkJPT1NUX1BQX05PREVfMjM1KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMzMocCkgTkROQk9PU1RfUFBfSUlGKHAoMjMzKSwgMjMzLCAyMzQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIzNShwKSBORE5CT09TVF9QUF9JSUYocCgyMzUpLCAyMzUsIDIzNikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMzgocCkgTkROQk9PU1RfUFBfSUlGKHAoMjM4KSwgTkROQk9PU1RfUFBfTk9ERV8yMzcsIE5ETkJPT1NUX1BQX05PREVfMjM5KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMzcocCkgTkROQk9PU1RfUFBfSUlGKHAoMjM3KSwgMjM3LCAyMzgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIzOShwKSBORE5CT09TVF9QUF9JSUYocCgyMzkpLCAyMzksIDI0MCkKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjQ4KHApIE5ETkJPT1NUX1BQX0lJRihwKDI0OCksIE5ETkJPT1NUX1BQX05PREVfMjQ0LCBORE5CT09TVF9QUF9OT0RFXzI1MikKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI0NChwKSBORE5CT09TVF9QUF9JSUYocCgyNDQpLCBORE5CT09TVF9QUF9OT0RFXzI0MiwgTkROQk9PU1RfUFBfTk9ERV8yNDYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjQyKHApIE5ETkJPT1NUX1BQX0lJRihwKDI0MiksIE5ETkJPT1NUX1BQX05PREVfMjQxLCBORE5CT09TVF9QUF9OT0RFXzI0MykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjQxKHApIE5ETkJPT1NUX1BQX0lJRihwKDI0MSksIDI0MSwgMjQyKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNDMocCkgTkROQk9PU1RfUFBfSUlGKHAoMjQzKSwgMjQzLCAyNDQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjQ2KHApIE5ETkJPT1NUX1BQX0lJRihwKDI0NiksIE5ETkJPT1NUX1BQX05PREVfMjQ1LCBORE5CT09TVF9QUF9OT0RFXzI0NykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjQ1KHApIE5ETkJPT1NUX1BQX0lJRihwKDI0NSksIDI0NSwgMjQ2KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNDcocCkgTkROQk9PU1RfUFBfSUlGKHAoMjQ3KSwgMjQ3LCAyNDgpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNTIocCkgTkROQk9PU1RfUFBfSUlGKHAoMjUyKSwgTkROQk9PU1RfUFBfTk9ERV8yNTAsIE5ETkJPT1NUX1BQX05PREVfMjU0KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI1MChwKSBORE5CT09TVF9QUF9JSUYocCgyNTApLCBORE5CT09TVF9QUF9OT0RFXzI0OSwgTkROQk9PU1RfUFBfTk9ERV8yNTEpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI0OShwKSBORE5CT09TVF9QUF9JSUYocCgyNDkpLCAyNDksIDI1MCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjUxKHApIE5ETkJPT1NUX1BQX0lJRihwKDI1MSksIDI1MSwgMjUyKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI1NChwKSBORE5CT09TVF9QUF9JSUYocCgyNTQpLCBORE5CT09TVF9QUF9OT0RFXzI1MywgTkROQk9PU1RfUFBfTk9ERV8yNTUpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI1MyhwKSBORE5CT09TVF9QUF9JSUYocCgyNTMpLCAyNTMsIDI1NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjU1KHApIE5ETkJPT1NUX1BQX0lJRihwKDI1NSksIDI1NSwgMjU2KQotIwotIyBlbmRpZgotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2NoZWNrLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC9jaGVjay5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhMDhlM2UuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2NoZWNrLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfREVUQUlMX0NIRUNLX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0RFVEFJTF9DSEVDS19IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfQ0hFQ0sgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01XQ0MoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ0hFQ0soeCwgdHlwZSkgTkROQk9PU1RfUFBfQ0hFQ0tfRCh4LCB0eXBlKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DSEVDSyh4LCB0eXBlKSBORE5CT09TVF9QUF9DSEVDS19PTygoeCwgdHlwZSkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DSEVDS19PTyhwYXIpIE5ETkJPT1NUX1BQX0NIRUNLX0QgIyMgcGFyCi0jIGVuZGlmCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NU1ZDKCkgJiYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0RNQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DSEVDS19EKHgsIHR5cGUpIE5ETkJPT1NUX1BQX0NIRUNLXzEoTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0NIRUNLX1JFU1VMVF8sIHR5cGUgeCkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DSEVDS18xKGNoaykgTkROQk9PU1RfUFBfQ0hFQ0tfMihjaGspCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DSEVDS18yKHJlcywgXykgcmVzCi0jIGVsaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVNWQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DSEVDS19EKHgsIHR5cGUpIE5ETkJPT1NUX1BQX0NIRUNLXzEodHlwZSB4KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ0hFQ0tfMShjaGspIE5ETkJPT1NUX1BQX0NIRUNLXzIoY2hrKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ0hFQ0tfMihjaGspIE5ETkJPT1NUX1BQX0NIRUNLXzMoKE5ETkJPT1NUX1BQX0NIRUNLX1JFU1VMVF8gIyMgY2hrKSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NIRUNLXzMoaW0pIE5ETkJPT1NUX1BQX0NIRUNLXzUoTkROQk9PU1RfUFBfQ0hFQ0tfNCBpbSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NIRUNLXzQocmVzLCBfKSByZXMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NIRUNLXzUocmVzKSByZXMKLSMgZWxzZSAvKiBETUMgKi8KLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NIRUNLX0QoeCwgdHlwZSkgTkROQk9PU1RfUFBfQ0hFQ0tfT08oKHR5cGUgeCkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DSEVDS19PTyhwYXIpIE5ETkJPT1NUX1BQX0NIRUNLXzAgIyMgcGFyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DSEVDS18wKGNoaykgTkROQk9PU1RfUFBfQ0hFQ0tfMShORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfQ0hFQ0tfUkVTVUxUXywgY2hrKSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NIRUNLXzEoY2hrKSBORE5CT09TVF9QUF9DSEVDS18yKGNoaykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NIRUNLXzIocmVzLCBfKSByZXMKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0NIRUNLX1JFU1VMVF8xIDEsIE5ETkJPT1NUX1BQX05JTAotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2RtYy9hdXRvX3JlYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZXRhaWwvZG1jL2F1dG9fcmVjLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWYyZTZiNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZXRhaWwvZG1jL2F1dG9fcmVjLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4NiArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0RFVEFJTF9BVVRPX1JFQ19IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9ERVRBSUxfQVVUT19SRUNfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2lpZi5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0FVVE9fUkVDICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9BVVRPX1JFQyhwcmVkLCBuKSBORE5CT09TVF9QUF9OT0RFX0VOVFJZXyAjIyBuKHByZWQpCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9OT0RFX0VOVFJZXzI1NihwKSBORE5CT09TVF9QUF9OT0RFXzEyOChwKShwKShwKShwKShwKShwKShwKShwKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV9FTlRSWV8xMjgocCkgTkROQk9PU1RfUFBfTk9ERV82NChwKShwKShwKShwKShwKShwKShwKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV9FTlRSWV82NChwKSBORE5CT09TVF9QUF9OT0RFXzMyKHApKHApKHApKHApKHApKHApCi0jIGRlZmluZSBORE5CT09TVF9QUF9OT0RFX0VOVFJZXzMyKHApIE5ETkJPT1NUX1BQX05PREVfMTYocCkocCkocCkocCkocCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfRU5UUllfMTYocCkgTkROQk9PU1RfUFBfTk9ERV84KHApKHApKHApKHApCi0jIGRlZmluZSBORE5CT09TVF9QUF9OT0RFX0VOVFJZXzgocCkgTkROQk9PU1RfUFBfTk9ERV80KHApKHApKHApCi0jIGRlZmluZSBORE5CT09TVF9QUF9OT0RFX0VOVFJZXzQocCkgTkROQk9PU1RfUFBfTk9ERV8yKHApKHApCi0jIGRlZmluZSBORE5CT09TVF9QUF9OT0RFX0VOVFJZXzIocCkgTkROQk9PU1RfUFBfTk9ERV8xKHApCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEyOChwKSBORE5CT09TVF9QUF9JSUYocCMjKDEyOCksIE5ETkJPT1NUX1BQX05PREVfNjQsIE5ETkJPT1NUX1BQX05PREVfMTkyKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV82NChwKSBORE5CT09TVF9QUF9JSUYocCMjKDY0KSwgTkROQk9PU1RfUFBfTk9ERV8zMiwgTkROQk9PU1RfUFBfTk9ERV85NikKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzMyKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMzIpLCBORE5CT09TVF9QUF9OT0RFXzE2LCBORE5CT09TVF9QUF9OT0RFXzQ4KQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE2KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTYpLCBORE5CT09TVF9QUF9OT0RFXzgsIE5ETkJPT1NUX1BQX05PREVfMjQpCi0jICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzgocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg4KSwgTkROQk9PU1RfUFBfTk9ERV80LCBORE5CT09TVF9QUF9OT0RFXzEyKQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNChwKSBORE5CT09TVF9QUF9JSUYocCMjKDQpLCBORE5CT09TVF9QUF9OT0RFXzIsIE5ETkJPT1NUX1BQX05PREVfNikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMiksIE5ETkJPT1NUX1BQX05PREVfMSwgTkROQk9PU1RfUFBfTk9ERV8zKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMSksIDEsIDIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzMocCkgTkROQk9PU1RfUFBfSUlGKHAjIygzKSwgMywgNCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV82KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNiksIE5ETkJPT1NUX1BQX05PREVfNSwgTkROQk9PU1RfUFBfTk9ERV83KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV81KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNSksIDUsIDYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzcocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg3KSwgNywgOCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEyKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTIpLCBORE5CT09TVF9QUF9OT0RFXzEwLCBORE5CT09TVF9QUF9OT0RFXzE0KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEwKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTApLCBORE5CT09TVF9QUF9OT0RFXzksIE5ETkJPT1NUX1BQX05PREVfMTEpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzkocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg5KSwgOSwgMTApCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzExKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTEpLCAxMSwgMTIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTQocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNCksIE5ETkJPT1NUX1BQX05PREVfMTMsIE5ETkJPT1NUX1BQX05PREVfMTUpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEzKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTMpLCAxMywgMTQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE1KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTUpLCAxNSwgMTYpCi0jICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI0KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjQpLCBORE5CT09TVF9QUF9OT0RFXzIwLCBORE5CT09TVF9QUF9OT0RFXzI4KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjAocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMCksIE5ETkJPT1NUX1BQX05PREVfMTgsIE5ETkJPT1NUX1BQX05PREVfMjIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTgocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxOCksIE5ETkJPT1NUX1BQX05PREVfMTcsIE5ETkJPT1NUX1BQX05PREVfMTkpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE3KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTcpLCAxNywgMTgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE5KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTkpLCAxOSwgMjApCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjIocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMiksIE5ETkJPT1NUX1BQX05PREVfMjEsIE5ETkJPT1NUX1BQX05PREVfMjMpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIxKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjEpLCAyMSwgMjIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIzKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjMpLCAyMywgMjQpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yOChwKSBORE5CT09TVF9QUF9JSUYocCMjKDI4KSwgTkROQk9PU1RfUFBfTk9ERV8yNiwgTkROQk9PU1RfUFBfTk9ERV8zMCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNihwKSBORE5CT09TVF9QUF9JSUYocCMjKDI2KSwgTkROQk9PU1RfUFBfTk9ERV8yNSwgTkROQk9PU1RfUFBfTk9ERV8yNykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjUocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyNSksIDI1LCAyNikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjcocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyNyksIDI3LCAyOCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8zMChwKSBORE5CT09TVF9QUF9JSUYocCMjKDMwKSwgTkROQk9PU1RfUFBfTk9ERV8yOSwgTkROQk9PU1RfUFBfTk9ERV8zMSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjkocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyOSksIDI5LCAzMCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMzEocCkgTkROQk9PU1RfUFBfSUlGKHAjIygzMSksIDMxLCAzMikKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV80OChwKSBORE5CT09TVF9QUF9JSUYocCMjKDQ4KSwgTkROQk9PU1RfUFBfTk9ERV80MCwgTkROQk9PU1RfUFBfTk9ERV81NikKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNDAocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg0MCksIE5ETkJPT1NUX1BQX05PREVfMzYsIE5ETkJPT1NUX1BQX05PREVfNDQpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8zNihwKSBORE5CT09TVF9QUF9JSUYocCMjKDM2KSwgTkROQk9PU1RfUFBfTk9ERV8zNCwgTkROQk9PU1RfUFBfTk9ERV8zOCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8zNChwKSBORE5CT09TVF9QUF9JSUYocCMjKDM0KSwgTkROQk9PU1RfUFBfTk9ERV8zMywgTkROQk9PU1RfUFBfTk9ERV8zNSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMzMocCkgTkROQk9PU1RfUFBfSUlGKHAjIygzMyksIDMzLCAzNCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMzUocCkgTkROQk9PU1RfUFBfSUlGKHAjIygzNSksIDM1LCAzNikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8zOChwKSBORE5CT09TVF9QUF9JSUYocCMjKDM4KSwgTkROQk9PU1RfUFBfTk9ERV8zNywgTkROQk9PU1RfUFBfTk9ERV8zOSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMzcocCkgTkROQk9PU1RfUFBfSUlGKHAjIygzNyksIDM3LCAzOCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMzkocCkgTkROQk9PU1RfUFBfSUlGKHAjIygzOSksIDM5LCA0MCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzQ0KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNDQpLCBORE5CT09TVF9QUF9OT0RFXzQyLCBORE5CT09TVF9QUF9OT0RFXzQ2KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzQyKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNDIpLCBORE5CT09TVF9QUF9OT0RFXzQxLCBORE5CT09TVF9QUF9OT0RFXzQzKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV80MShwKSBORE5CT09TVF9QUF9JSUYocCMjKDQxKSwgNDEsIDQyKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV80MyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDQzKSwgNDMsIDQ0KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzQ2KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNDYpLCBORE5CT09TVF9QUF9OT0RFXzQ1LCBORE5CT09TVF9QUF9OT0RFXzQ3KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV80NShwKSBORE5CT09TVF9QUF9JSUYocCMjKDQ1KSwgNDUsIDQ2KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV80NyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDQ3KSwgNDcsIDQ4KQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV81NihwKSBORE5CT09TVF9QUF9JSUYocCMjKDU2KSwgTkROQk9PU1RfUFBfTk9ERV81MiwgTkROQk9PU1RfUFBfTk9ERV82MCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzUyKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNTIpLCBORE5CT09TVF9QUF9OT0RFXzUwLCBORE5CT09TVF9QUF9OT0RFXzU0KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzUwKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNTApLCBORE5CT09TVF9QUF9OT0RFXzQ5LCBORE5CT09TVF9QUF9OT0RFXzUxKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV80OShwKSBORE5CT09TVF9QUF9JSUYocCMjKDQ5KSwgNDksIDUwKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV81MShwKSBORE5CT09TVF9QUF9JSUYocCMjKDUxKSwgNTEsIDUyKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzU0KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNTQpLCBORE5CT09TVF9QUF9OT0RFXzUzLCBORE5CT09TVF9QUF9OT0RFXzU1KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV81MyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDUzKSwgNTMsIDU0KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV81NShwKSBORE5CT09TVF9QUF9JSUYocCMjKDU1KSwgNTUsIDU2KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNjAocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg2MCksIE5ETkJPT1NUX1BQX05PREVfNTgsIE5ETkJPT1NUX1BQX05PREVfNjIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNTgocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg1OCksIE5ETkJPT1NUX1BQX05PREVfNTcsIE5ETkJPT1NUX1BQX05PREVfNTkpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzU3KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNTcpLCA1NywgNTgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzU5KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNTkpLCA1OSwgNjApCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNjIocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg2MiksIE5ETkJPT1NUX1BQX05PREVfNjEsIE5ETkJPT1NUX1BQX05PREVfNjMpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzYxKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNjEpLCA2MSwgNjIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzYzKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNjMpLCA2MywgNjQpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV85NihwKSBORE5CT09TVF9QUF9JSUYocCMjKDk2KSwgTkROQk9PU1RfUFBfTk9ERV84MCwgTkROQk9PU1RfUFBfTk9ERV8xMTIpCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfODAocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg4MCksIE5ETkJPT1NUX1BQX05PREVfNzIsIE5ETkJPT1NUX1BQX05PREVfODgpCi0jICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzcyKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNzIpLCBORE5CT09TVF9QUF9OT0RFXzY4LCBORE5CT09TVF9QUF9OT0RFXzc2KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNjgocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg2OCksIE5ETkJPT1NUX1BQX05PREVfNjYsIE5ETkJPT1NUX1BQX05PREVfNzApCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNjYocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg2NiksIE5ETkJPT1NUX1BQX05PREVfNjUsIE5ETkJPT1NUX1BQX05PREVfNjcpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzY1KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNjUpLCA2NSwgNjYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzY3KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNjcpLCA2NywgNjgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNzAocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg3MCksIE5ETkJPT1NUX1BQX05PREVfNjksIE5ETkJPT1NUX1BQX05PREVfNzEpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzY5KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNjkpLCA2OSwgNzApCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzcxKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNzEpLCA3MSwgNzIpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV83NihwKSBORE5CT09TVF9QUF9JSUYocCMjKDc2KSwgTkROQk9PU1RfUFBfTk9ERV83NCwgTkROQk9PU1RfUFBfTk9ERV83OCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV83NChwKSBORE5CT09TVF9QUF9JSUYocCMjKDc0KSwgTkROQk9PU1RfUFBfTk9ERV83MywgTkROQk9PU1RfUFBfTk9ERV83NSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNzMocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg3MyksIDczLCA3NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNzUocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg3NSksIDc1LCA3NikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV83OChwKSBORE5CT09TVF9QUF9JSUYocCMjKDc4KSwgTkROQk9PU1RfUFBfTk9ERV83NywgTkROQk9PU1RfUFBfTk9ERV83OSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNzcocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg3NyksIDc3LCA3OCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNzkocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg3OSksIDc5LCA4MCkKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfODgocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg4OCksIE5ETkJPT1NUX1BQX05PREVfODQsIE5ETkJPT1NUX1BQX05PREVfOTIpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV84NChwKSBORE5CT09TVF9QUF9JSUYocCMjKDg0KSwgTkROQk9PU1RfUFBfTk9ERV84MiwgTkROQk9PU1RfUFBfTk9ERV84NikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV84MihwKSBORE5CT09TVF9QUF9JSUYocCMjKDgyKSwgTkROQk9PU1RfUFBfTk9ERV84MSwgTkROQk9PU1RfUFBfTk9ERV84MykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfODEocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg4MSksIDgxLCA4MikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfODMocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg4MyksIDgzLCA4NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV84NihwKSBORE5CT09TVF9QUF9JSUYocCMjKDg2KSwgTkROQk9PU1RfUFBfTk9ERV84NSwgTkROQk9PU1RfUFBfTk9ERV84NykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfODUocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg4NSksIDg1LCA4NikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfODcocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg4NyksIDg3LCA4OCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzkyKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoOTIpLCBORE5CT09TVF9QUF9OT0RFXzkwLCBORE5CT09TVF9QUF9OT0RFXzk0KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzkwKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoOTApLCBORE5CT09TVF9QUF9OT0RFXzg5LCBORE5CT09TVF9QUF9OT0RFXzkxKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV84OShwKSBORE5CT09TVF9QUF9JSUYocCMjKDg5KSwgODksIDkwKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV85MShwKSBORE5CT09TVF9QUF9JSUYocCMjKDkxKSwgOTEsIDkyKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzk0KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoOTQpLCBORE5CT09TVF9QUF9OT0RFXzkzLCBORE5CT09TVF9QUF9OT0RFXzk1KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV85MyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDkzKSwgOTMsIDk0KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV85NShwKSBORE5CT09TVF9QUF9JSUYocCMjKDk1KSwgOTUsIDk2KQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzExMihwKSBORE5CT09TVF9QUF9JSUYocCMjKDExMiksIE5ETkJPT1NUX1BQX05PREVfMTA0LCBORE5CT09TVF9QUF9OT0RFXzEyMCkKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTA0KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTA0KSwgTkROQk9PU1RfUFBfTk9ERV8xMDAsIE5ETkJPT1NUX1BQX05PREVfMTA4KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTAwKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTAwKSwgTkROQk9PU1RfUFBfTk9ERV85OCwgTkROQk9PU1RfUFBfTk9ERV8xMDIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfOTgocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg5OCksIE5ETkJPT1NUX1BQX05PREVfOTcsIE5ETkJPT1NUX1BQX05PREVfOTkpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzk3KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoOTcpLCA5NywgOTgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzk5KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoOTkpLCA5OSwgMTAwKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEwMihwKSBORE5CT09TVF9QUF9JSUYocCMjKDEwMiksIE5ETkJPT1NUX1BQX05PREVfMTAxLCBORE5CT09TVF9QUF9OT0RFXzEwMykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTAxKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTAxKSwgMTAxLCAxMDIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEwMyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDEwMyksIDEwMywgMTA0KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTA4KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTA4KSwgTkROQk9PU1RfUFBfTk9ERV8xMDYsIE5ETkJPT1NUX1BQX05PREVfMTEwKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEwNihwKSBORE5CT09TVF9QUF9JSUYocCMjKDEwNiksIE5ETkJPT1NUX1BQX05PREVfMTA1LCBORE5CT09TVF9QUF9OT0RFXzEwNykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTA1KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTA1KSwgMTA1LCAxMDYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEwNyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDEwNyksIDEwNywgMTA4KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzExMChwKSBORE5CT09TVF9QUF9JSUYocCMjKDExMCksIE5ETkJPT1NUX1BQX05PREVfMTA5LCBORE5CT09TVF9QUF9OT0RFXzExMSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTA5KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTA5KSwgMTA5LCAxMTApCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzExMShwKSBORE5CT09TVF9QUF9JSUYocCMjKDExMSksIDExMSwgMTEyKQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMjAocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMjApLCBORE5CT09TVF9QUF9OT0RFXzExNiwgTkROQk9PU1RfUFBfTk9ERV8xMjQpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMTYocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMTYpLCBORE5CT09TVF9QUF9OT0RFXzExNCwgTkROQk9PU1RfUFBfTk9ERV8xMTgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTE0KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTE0KSwgTkROQk9PU1RfUFBfTk9ERV8xMTMsIE5ETkJPT1NUX1BQX05PREVfMTE1KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMTMocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMTMpLCAxMTMsIDExNCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTE1KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTE1KSwgMTE1LCAxMTYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTE4KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTE4KSwgTkROQk9PU1RfUFBfTk9ERV8xMTcsIE5ETkJPT1NUX1BQX05PREVfMTE5KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMTcocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMTcpLCAxMTcsIDExOCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTE5KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTE5KSwgMTE5LCAxMjApCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMjQocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMjQpLCBORE5CT09TVF9QUF9OT0RFXzEyMiwgTkROQk9PU1RfUFBfTk9ERV8xMjYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTIyKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTIyKSwgTkROQk9PU1RfUFBfTk9ERV8xMjEsIE5ETkJPT1NUX1BQX05PREVfMTIzKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMjEocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMjEpLCAxMjEsIDEyMikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTIzKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTIzKSwgMTIzLCAxMjQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTI2KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTI2KSwgTkROQk9PU1RfUFBfTk9ERV8xMjUsIE5ETkJPT1NUX1BQX05PREVfMTI3KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMjUocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMjUpLCAxMjUsIDEyNikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTI3KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTI3KSwgMTI3LCAxMjgpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE5MihwKSBORE5CT09TVF9QUF9JSUYocCMjKDE5MiksIE5ETkJPT1NUX1BQX05PREVfMTYwLCBORE5CT09TVF9QUF9OT0RFXzIyNCkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE2MChwKSBORE5CT09TVF9QUF9JSUYocCMjKDE2MCksIE5ETkJPT1NUX1BQX05PREVfMTQ0LCBORE5CT09TVF9QUF9OT0RFXzE3NikKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNDQocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNDQpLCBORE5CT09TVF9QUF9OT0RFXzEzNiwgTkROQk9PU1RfUFBfTk9ERV8xNTIpCi0jICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEzNihwKSBORE5CT09TVF9QUF9JSUYocCMjKDEzNiksIE5ETkJPT1NUX1BQX05PREVfMTMyLCBORE5CT09TVF9QUF9OT0RFXzE0MCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEzMihwKSBORE5CT09TVF9QUF9JSUYocCMjKDEzMiksIE5ETkJPT1NUX1BQX05PREVfMTMwLCBORE5CT09TVF9QUF9OT0RFXzEzNCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMzAocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMzApLCBORE5CT09TVF9QUF9OT0RFXzEyOSwgTkROQk9PU1RfUFBfTk9ERV8xMzEpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEyOShwKSBORE5CT09TVF9QUF9JSUYocCMjKDEyOSksIDEyOSwgMTMwKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMzEocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMzEpLCAxMzEsIDEzMikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMzQocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMzQpLCBORE5CT09TVF9QUF9OT0RFXzEzMywgTkROQk9PU1RfUFBfTk9ERV8xMzUpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEzMyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDEzMyksIDEzMywgMTM0KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMzUocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMzUpLCAxMzUsIDEzNikKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE0MChwKSBORE5CT09TVF9QUF9JSUYocCMjKDE0MCksIE5ETkJPT1NUX1BQX05PREVfMTM4LCBORE5CT09TVF9QUF9OT0RFXzE0MikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMzgocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMzgpLCBORE5CT09TVF9QUF9OT0RFXzEzNywgTkROQk9PU1RfUFBfTk9ERV8xMzkpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEzNyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDEzNyksIDEzNywgMTM4KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMzkocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMzkpLCAxMzksIDE0MCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNDIocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNDIpLCBORE5CT09TVF9QUF9OT0RFXzE0MSwgTkROQk9PU1RfUFBfTk9ERV8xNDMpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE0MShwKSBORE5CT09TVF9QUF9JSUYocCMjKDE0MSksIDE0MSwgMTQyKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNDMocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNDMpLCAxNDMsIDE0NCkKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTUyKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTUyKSwgTkROQk9PU1RfUFBfTk9ERV8xNDgsIE5ETkJPT1NUX1BQX05PREVfMTU2KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTQ4KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTQ4KSwgTkROQk9PU1RfUFBfTk9ERV8xNDYsIE5ETkJPT1NUX1BQX05PREVfMTUwKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE0NihwKSBORE5CT09TVF9QUF9JSUYocCMjKDE0NiksIE5ETkJPT1NUX1BQX05PREVfMTQ1LCBORE5CT09TVF9QUF9OT0RFXzE0NykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTQ1KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTQ1KSwgMTQ1LCAxNDYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE0NyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDE0NyksIDE0NywgMTQ4KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE1MChwKSBORE5CT09TVF9QUF9JSUYocCMjKDE1MCksIE5ETkJPT1NUX1BQX05PREVfMTQ5LCBORE5CT09TVF9QUF9OT0RFXzE1MSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTQ5KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTQ5KSwgMTQ5LCAxNTApCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE1MShwKSBORE5CT09TVF9QUF9JSUYocCMjKDE1MSksIDE1MSwgMTUyKQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTU2KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTU2KSwgTkROQk9PU1RfUFBfTk9ERV8xNTQsIE5ETkJPT1NUX1BQX05PREVfMTU4KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE1NChwKSBORE5CT09TVF9QUF9JSUYocCMjKDE1NCksIE5ETkJPT1NUX1BQX05PREVfMTUzLCBORE5CT09TVF9QUF9OT0RFXzE1NSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTUzKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTUzKSwgMTUzLCAxNTQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE1NShwKSBORE5CT09TVF9QUF9JSUYocCMjKDE1NSksIDE1NSwgMTU2KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE1OChwKSBORE5CT09TVF9QUF9JSUYocCMjKDE1OCksIE5ETkJPT1NUX1BQX05PREVfMTU3LCBORE5CT09TVF9QUF9OT0RFXzE1OSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTU3KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTU3KSwgMTU3LCAxNTgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE1OShwKSBORE5CT09TVF9QUF9JSUYocCMjKDE1OSksIDE1OSwgMTYwKQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE3NihwKSBORE5CT09TVF9QUF9JSUYocCMjKDE3NiksIE5ETkJPT1NUX1BQX05PREVfMTY4LCBORE5CT09TVF9QUF9OT0RFXzE4NCkKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTY4KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTY4KSwgTkROQk9PU1RfUFBfTk9ERV8xNjQsIE5ETkJPT1NUX1BQX05PREVfMTcyKQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTY0KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTY0KSwgTkROQk9PU1RfUFBfTk9ERV8xNjIsIE5ETkJPT1NUX1BQX05PREVfMTY2KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE2MihwKSBORE5CT09TVF9QUF9JSUYocCMjKDE2MiksIE5ETkJPT1NUX1BQX05PREVfMTYxLCBORE5CT09TVF9QUF9OT0RFXzE2MykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTYxKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTYxKSwgMTYxLCAxNjIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE2MyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDE2MyksIDE2MywgMTY0KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE2NihwKSBORE5CT09TVF9QUF9JSUYocCMjKDE2NiksIE5ETkJPT1NUX1BQX05PREVfMTY1LCBORE5CT09TVF9QUF9OT0RFXzE2NykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTY1KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTY1KSwgMTY1LCAxNjYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE2NyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDE2NyksIDE2NywgMTY4KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTcyKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTcyKSwgTkROQk9PU1RfUFBfTk9ERV8xNzAsIE5ETkJPT1NUX1BQX05PREVfMTc0KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE3MChwKSBORE5CT09TVF9QUF9JSUYocCMjKDE3MCksIE5ETkJPT1NUX1BQX05PREVfMTY5LCBORE5CT09TVF9QUF9OT0RFXzE3MSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTY5KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTY5KSwgMTY5LCAxNzApCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE3MShwKSBORE5CT09TVF9QUF9JSUYocCMjKDE3MSksIDE3MSwgMTcyKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE3NChwKSBORE5CT09TVF9QUF9JSUYocCMjKDE3NCksIE5ETkJPT1NUX1BQX05PREVfMTczLCBORE5CT09TVF9QUF9OT0RFXzE3NSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTczKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTczKSwgMTczLCAxNzQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE3NShwKSBORE5CT09TVF9QUF9JSUYocCMjKDE3NSksIDE3NSwgMTc2KQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xODQocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxODQpLCBORE5CT09TVF9QUF9OT0RFXzE4MCwgTkROQk9PU1RfUFBfTk9ERV8xODgpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xODAocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxODApLCBORE5CT09TVF9QUF9OT0RFXzE3OCwgTkROQk9PU1RfUFBfTk9ERV8xODIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTc4KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTc4KSwgTkROQk9PU1RfUFBfTk9ERV8xNzcsIE5ETkJPT1NUX1BQX05PREVfMTc5KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNzcocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNzcpLCAxNzcsIDE3OCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTc5KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTc5KSwgMTc5LCAxODApCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTgyKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTgyKSwgTkROQk9PU1RfUFBfTk9ERV8xODEsIE5ETkJPT1NUX1BQX05PREVfMTgzKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xODEocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxODEpLCAxODEsIDE4MikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTgzKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTgzKSwgMTgzLCAxODQpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xODgocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxODgpLCBORE5CT09TVF9QUF9OT0RFXzE4NiwgTkROQk9PU1RfUFBfTk9ERV8xOTApCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTg2KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTg2KSwgTkROQk9PU1RfUFBfTk9ERV8xODUsIE5ETkJPT1NUX1BQX05PREVfMTg3KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xODUocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxODUpLCAxODUsIDE4NikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTg3KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTg3KSwgMTg3LCAxODgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTkwKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTkwKSwgTkROQk9PU1RfUFBfTk9ERV8xODksIE5ETkJPT1NUX1BQX05PREVfMTkxKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xODkocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxODkpLCAxODksIDE5MCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTkxKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTkxKSwgMTkxLCAxOTIpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMjQocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMjQpLCBORE5CT09TVF9QUF9OT0RFXzIwOCwgTkROQk9PU1RfUFBfTk9ERV8yNDApCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjA4KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjA4KSwgTkROQk9PU1RfUFBfTk9ERV8yMDAsIE5ETkJPT1NUX1BQX05PREVfMjE2KQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMDAocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMDApLCBORE5CT09TVF9QUF9OT0RFXzE5NiwgTkROQk9PU1RfUFBfTk9ERV8yMDQpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xOTYocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxOTYpLCBORE5CT09TVF9QUF9OT0RFXzE5NCwgTkROQk9PU1RfUFBfTk9ERV8xOTgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTk0KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTk0KSwgTkROQk9PU1RfUFBfTk9ERV8xOTMsIE5ETkJPT1NUX1BQX05PREVfMTk1KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xOTMocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxOTMpLCAxOTMsIDE5NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTk1KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTk1KSwgMTk1LCAxOTYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTk4KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTk4KSwgTkROQk9PU1RfUFBfTk9ERV8xOTcsIE5ETkJPT1NUX1BQX05PREVfMTk5KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xOTcocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxOTcpLCAxOTcsIDE5OCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTk5KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTk5KSwgMTk5LCAyMDApCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMDQocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMDQpLCBORE5CT09TVF9QUF9OT0RFXzIwMiwgTkROQk9PU1RfUFBfTk9ERV8yMDYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjAyKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjAyKSwgTkROQk9PU1RfUFBfTk9ERV8yMDEsIE5ETkJPT1NUX1BQX05PREVfMjAzKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMDEocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMDEpLCAyMDEsIDIwMikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjAzKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjAzKSwgMjAzLCAyMDQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjA2KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjA2KSwgTkROQk9PU1RfUFBfTk9ERV8yMDUsIE5ETkJPT1NUX1BQX05PREVfMjA3KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMDUocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMDUpLCAyMDUsIDIwNikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjA3KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjA3KSwgMjA3LCAyMDgpCi0jICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIxNihwKSBORE5CT09TVF9QUF9JSUYocCMjKDIxNiksIE5ETkJPT1NUX1BQX05PREVfMjEyLCBORE5CT09TVF9QUF9OT0RFXzIyMCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIxMihwKSBORE5CT09TVF9QUF9JSUYocCMjKDIxMiksIE5ETkJPT1NUX1BQX05PREVfMjEwLCBORE5CT09TVF9QUF9OT0RFXzIxNCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMTAocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMTApLCBORE5CT09TVF9QUF9OT0RFXzIwOSwgTkROQk9PU1RfUFBfTk9ERV8yMTEpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIwOShwKSBORE5CT09TVF9QUF9JSUYocCMjKDIwOSksIDIwOSwgMjEwKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMTEocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMTEpLCAyMTEsIDIxMikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMTQocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMTQpLCBORE5CT09TVF9QUF9OT0RFXzIxMywgTkROQk9PU1RfUFBfTk9ERV8yMTUpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIxMyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDIxMyksIDIxMywgMjE0KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMTUocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMTUpLCAyMTUsIDIxNikKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIyMChwKSBORE5CT09TVF9QUF9JSUYocCMjKDIyMCksIE5ETkJPT1NUX1BQX05PREVfMjE4LCBORE5CT09TVF9QUF9OT0RFXzIyMikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMTgocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMTgpLCBORE5CT09TVF9QUF9OT0RFXzIxNywgTkROQk9PU1RfUFBfTk9ERV8yMTkpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIxNyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDIxNyksIDIxNywgMjE4KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMTkocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMTkpLCAyMTksIDIyMCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMjIocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMjIpLCBORE5CT09TVF9QUF9OT0RFXzIyMSwgTkROQk9PU1RfUFBfTk9ERV8yMjMpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIyMShwKSBORE5CT09TVF9QUF9JSUYocCMjKDIyMSksIDIyMSwgMjIyKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMjMocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMjMpLCAyMjMsIDIyNCkKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNDAocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyNDApLCBORE5CT09TVF9QUF9OT0RFXzIzMiwgTkROQk9PU1RfUFBfTk9ERV8yNDgpCi0jICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIzMihwKSBORE5CT09TVF9QUF9JSUYocCMjKDIzMiksIE5ETkJPT1NUX1BQX05PREVfMjI4LCBORE5CT09TVF9QUF9OT0RFXzIzNikKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIyOChwKSBORE5CT09TVF9QUF9JSUYocCMjKDIyOCksIE5ETkJPT1NUX1BQX05PREVfMjI2LCBORE5CT09TVF9QUF9OT0RFXzIzMCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMjYocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMjYpLCBORE5CT09TVF9QUF9OT0RFXzIyNSwgTkROQk9PU1RfUFBfTk9ERV8yMjcpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIyNShwKSBORE5CT09TVF9QUF9JSUYocCMjKDIyNSksIDIyNSwgMjI2KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMjcocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMjcpLCAyMjcsIDIyOCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMzAocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMzApLCBORE5CT09TVF9QUF9OT0RFXzIyOSwgTkROQk9PU1RfUFBfTk9ERV8yMzEpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIyOShwKSBORE5CT09TVF9QUF9JSUYocCMjKDIyOSksIDIyOSwgMjMwKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMzEocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMzEpLCAyMzEsIDIzMikKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIzNihwKSBORE5CT09TVF9QUF9JSUYocCMjKDIzNiksIE5ETkJPT1NUX1BQX05PREVfMjM0LCBORE5CT09TVF9QUF9OT0RFXzIzOCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMzQocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMzQpLCBORE5CT09TVF9QUF9OT0RFXzIzMywgTkROQk9PU1RfUFBfTk9ERV8yMzUpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIzMyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDIzMyksIDIzMywgMjM0KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMzUocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMzUpLCAyMzUsIDIzNikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMzgocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMzgpLCBORE5CT09TVF9QUF9OT0RFXzIzNywgTkROQk9PU1RfUFBfTk9ERV8yMzkpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIzNyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDIzNyksIDIzNywgMjM4KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMzkocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMzkpLCAyMzksIDI0MCkKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjQ4KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjQ4KSwgTkROQk9PU1RfUFBfTk9ERV8yNDQsIE5ETkJPT1NUX1BQX05PREVfMjUyKQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjQ0KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjQ0KSwgTkROQk9PU1RfUFBfTk9ERV8yNDIsIE5ETkJPT1NUX1BQX05PREVfMjQ2KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI0MihwKSBORE5CT09TVF9QUF9JSUYocCMjKDI0MiksIE5ETkJPT1NUX1BQX05PREVfMjQxLCBORE5CT09TVF9QUF9OT0RFXzI0MykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjQxKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjQxKSwgMjQxLCAyNDIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI0MyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDI0MyksIDI0MywgMjQ0KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI0NihwKSBORE5CT09TVF9QUF9JSUYocCMjKDI0NiksIE5ETkJPT1NUX1BQX05PREVfMjQ1LCBORE5CT09TVF9QUF9OT0RFXzI0NykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjQ1KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjQ1KSwgMjQ1LCAyNDYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI0NyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDI0NyksIDI0NywgMjQ4KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjUyKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjUyKSwgTkROQk9PU1RfUFBfTk9ERV8yNTAsIE5ETkJPT1NUX1BQX05PREVfMjU0KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI1MChwKSBORE5CT09TVF9QUF9JSUYocCMjKDI1MCksIE5ETkJPT1NUX1BQX05PREVfMjQ5LCBORE5CT09TVF9QUF9OT0RFXzI1MSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjQ5KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjQ5KSwgMjQ5LCAyNTApCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI1MShwKSBORE5CT09TVF9QUF9JSUYocCMjKDI1MSksIDI1MSwgMjUyKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI1NChwKSBORE5CT09TVF9QUF9JSUYocCMjKDI1NCksIE5ETkJPT1NUX1BQX05PREVfMjUzLCBORE5CT09TVF9QUF9OT0RFXzI1NSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjUzKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjUzKSwgMjUzLCAyNTQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI1NShwKSBORE5CT09TVF9QUF9JSUYocCMjKDI1NSksIDI1NSwgMjU2KQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2lzX2JpbmFyeS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZXRhaWwvaXNfYmluYXJ5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzA4Nzc3Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZXRhaWwvaXNfYmluYXJ5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfREVUQUlMX0lTX0JJTkFSWV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9ERVRBSUxfSVNfQklOQVJZX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZXRhaWwvY2hlY2suaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9JU19CSU5BUlkgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JU19CSU5BUlkoeCkgTkROQk9PU1RfUFBfQ0hFQ0soeCwgTkROQk9PU1RfUFBfSVNfQklOQVJZX0NIRUNLKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JU19CSU5BUlkoeCkgTkROQk9PU1RfUFBfSVNfQklOQVJZX0koeCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lTX0JJTkFSWV9JKHgpIE5ETkJPT1NUX1BQX0NIRUNLKHgsIE5ETkJPT1NUX1BQX0lTX0JJTkFSWV9DSEVDSykKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lTX0JJTkFSWV9DSEVDSyhhLCBiKSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9DSEVDS19SRVNVTFRfTkROQk9PU1RfUFBfSVNfQklOQVJZX0NIRUNLIDAsIE5ETkJPT1NUX1BQX05JTAotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2lzX3VuYXJ5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC9pc191bmFyeS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxYWFmNTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2lzX3VuYXJ5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfREVUQUlMX0lTX1VOQVJZX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0RFVEFJTF9JU19VTkFSWV9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2NoZWNrLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfSVNfVU5BUlkgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JU19VTkFSWSh4KSBORE5CT09TVF9QUF9DSEVDSyh4LCBORE5CT09TVF9QUF9JU19VTkFSWV9DSEVDSykKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVNfVU5BUlkoeCkgTkROQk9PU1RfUFBfSVNfVU5BUllfSSh4KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVNfVU5BUllfSSh4KSBORE5CT09TVF9QUF9DSEVDSyh4LCBORE5CT09TVF9QUF9JU19VTkFSWV9DSEVDSykKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lTX1VOQVJZX0NIRUNLKGEpIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0NIRUNLX1JFU1VMVF9ORE5CT09TVF9QUF9JU19VTkFSWV9DSEVDSyAwLCBORE5CT09TVF9QUF9OSUwKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VtcHR5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VtcHR5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmRiOWFkYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbXB0eS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0VNUFRZX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0VNUFRZX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9lbXB0eS5ocHA+Ci0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VudW0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZGRiOGEwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VudW0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9FTlVNX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0VOVU1fSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW0uaHBwPgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZW51bV9wYXJhbXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZW51bV9wYXJhbXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMTFmNmRmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VudW1fcGFyYW1zLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfRU5VTV9QQVJBTVNfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfRU5VTV9QQVJBTVNfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fcGFyYW1zLmhwcD4KLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VudW1fcGFyYW1zX3dpdGhfYV9kZWZhdWx0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VudW1fcGFyYW1zX3dpdGhfYV9kZWZhdWx0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQ4MGZiYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtX3BhcmFtc193aXRoX2FfZGVmYXVsdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0VOVU1fUEFSQU1TX1dJVEhfQV9ERUZBVUxUX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0VOVU1fUEFSQU1TX1dJVEhfQV9ERUZBVUxUX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3BhcmFtc193aXRoX2FfZGVmYXVsdC5ocHA+Ci0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtX3NoaWZ0ZWRfcGFyYW1zLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VudW1fc2hpZnRlZF9wYXJhbXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTdhMjJhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VudW1fc2hpZnRlZF9wYXJhbXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9FTlVNX1NISUZURURfUEFSQU1TX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0VOVU1fU0hJRlRFRF9QQVJBTVNfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fc2hpZnRlZF9wYXJhbXMuaHBwPgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZXhwcl9pZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9leHByX2lmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGJkMzAyNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9leHByX2lmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfRVhQUl9JRl9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9FWFBSX0lGX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9leHByX2lmLmhwcD4KLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvZW1wdHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9lbXB0eS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzZmQzZWEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9lbXB0eS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9GQUNJTElUSUVTX0VNUFRZX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0ZBQ0lMSVRJRVNfRU1QVFlfSFBQCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0VNUFRZICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9FTVBUWSgpCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL2lkZW50aXR5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvaWRlbnRpdHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZTE0YWY0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvaWRlbnRpdHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfRkFDSUxJVElFU19JREVOVElUWV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9GQUNJTElUSUVTX0lERU5USVRZX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9lbXB0eS5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0lERU5USVRZICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9JREVOVElUWShpdGVtKSBpdGVtIE5ETkJPT1NUX1BQX0VNUFRZCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL2ludGVyY2VwdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL2ludGVyY2VwdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhMjI1NjYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9pbnRlcmNlcHQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjc3ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfRkFDSUxJVElFU19JTlRFUkNFUFRfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfRkFDSUxJVElFU19JTlRFUkNFUFRfSFBQCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVCAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8wCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8zCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF82Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF85Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzI0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzI3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzMwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8zMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzMzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8zNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzM2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8zOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzM5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF80MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzQyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF80NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzQ1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF80NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzQ4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF81MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzUxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF81MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzU0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF81NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzU3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF81OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzYwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF82MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzYzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF82NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzY2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF82OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzY5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF83MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzcyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF83NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzc1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF83NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzc4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF84MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzgxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfODIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF84MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzg0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfODUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF84NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzg3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfODgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF84OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzkwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfOTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF85MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzkzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfOTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF85NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzk2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfOTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF85OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzk5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTAyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTAzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTA0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTA1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTA2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTA3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTA4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTA5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTEwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTExCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTEyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTEzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTE0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTE1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTE2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTE3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTE4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTE5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTIwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTIxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTIyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTIzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTI0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTI1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTI2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTI3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTI4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTI5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTMwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTMxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTMyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTMzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTM0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTM1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTM2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTM3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTM4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTM5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTQwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTQxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTQyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTQzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTQ0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTQ1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTQ2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTQ3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTQ4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTQ5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTUwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTUxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTUyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTUzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTU0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTU1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTU2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTU3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTU4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTU5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTYwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTYxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTYyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTYzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTY0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTY1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTY2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTY3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTY4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTY5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTcwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTcxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTcyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTczCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTc0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTc1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTc2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTc3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTc4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTc5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTgwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTgxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTgyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTgzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTg0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTg1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTg2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTg3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTg4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTg5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTkwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTkxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTkyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTkzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTk0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTk1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTk2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTk3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTk4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTk5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjAyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjAzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjA0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjA1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjA2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjA3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjA4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjA5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjEwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjExCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjEyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjEzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjE0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjE1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjE2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjE3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjE4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjE5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjIwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjIxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjIyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjIzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjI0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjI1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjI2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjI3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjI4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjI5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjMwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjMxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjMyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjMzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjM0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjM1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjM2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjM3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjM4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjM5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjQwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjQxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjQyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjQzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjQ0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjQ1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjQ2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjQ3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjQ4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjQ5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjUwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjUxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjUyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjUzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjU0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjU1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjU2Ci0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL292ZXJsb2FkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvb3ZlcmxvYWQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjllZWRkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvb3ZlcmxvYWQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAxMS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBFZHdhcmQgRGllbmVyIDIwMTEuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlICAgICAgKgotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0ZBQ0lMSVRJRVNfT1ZFUkxPQURfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfRkFDSUxJVElFU19PVkVSTE9BRF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci92YXJpYWRpYy9zaXplLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfT1ZFUkxPQUQgKi8KLSMKLSMgaWYgTkROQk9PU1RfUFBfVkFSSUFESUNTCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9PVkVSTE9BRChwcmVmaXgsIC4uLikgTkROQk9PU1RfUFBfQ0FUKHByZWZpeCwgTkROQk9PU1RfUFBfVkFSSUFESUNfU0laRShfX1ZBX0FSR1NfXykpCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pZGVudGl0eS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pZGVudGl0eS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwNmJkNTguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaWRlbnRpdHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9JREVOVElUWV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9JREVOVElUWV9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvaWRlbnRpdHkuaHBwPgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YTQ0ZWQwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2lmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfSUZfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfSUZfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2lmLmhwcD4KLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2luYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pbmMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDViNjY4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2luYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0lOQ19IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9JTkNfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2luYy5ocHA+Ci0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMGIyZjM3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9JVEVSQVRFX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0lURVJBVEVfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vaXRlcmF0ZS5ocHA+Ci0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy9sb3dlcjEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvbG93ZXIxLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGQ3MTY2ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy9sb3dlcjEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3NoYXJlZC5ocHA+Ci0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzEKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMgotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8zCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzQKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfNQotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF82Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzcKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfOAotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF85Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzEwCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzMgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzMgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzMgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzMgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzMgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzMgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzMgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzMgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzMgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzMgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8yIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8yIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8yIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8yIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8yIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8yIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8yIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8yIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8yIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8yIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMSAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMSAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMSAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMSA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMSA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMSA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMSA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMyhORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8zLCBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8yLCBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMihORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8yLCBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8xKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8xCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy9sb3dlcjIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvbG93ZXIyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzc5YjJkZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy9sb3dlcjIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3NoYXJlZC5ocHA+Ci0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzEKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMgotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8zCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzQKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfNQotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF82Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzcKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfOAotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF85Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzEwCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzMgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzMgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzMgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzMgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzMgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzMgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzMgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzMgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzMgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzMgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8yIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8yIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8yIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8yIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8yIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8yIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8yIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8yIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8yIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8yIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMSAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMSAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMSAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMSA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMSA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMSA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMSA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMyhORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8zLCBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8yLCBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMihORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8yLCBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8xKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8xCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy9sb3dlcjMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvbG93ZXIzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjRlMzQ1My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy9sb3dlcjMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3NoYXJlZC5ocHA+Ci0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzEKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMgotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8zCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzQKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfNQotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF82Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzcKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfOAotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF85Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzEwCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzMgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzMgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzMgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzMgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzMgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzMgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzMgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzMgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzMgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzMgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8yIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8yIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8yIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8yIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8yIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8yIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8yIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8yIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8yIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8yIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMSAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMSAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMSAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMSA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMSA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMSA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMSA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMyhORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8zLCBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8yLCBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMihORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8yLCBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8xKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8xCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy9sb3dlcjQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvbG93ZXI0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGVjZDc5OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy9sb3dlcjQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3NoYXJlZC5ocHA+Ci0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80Ci0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzEKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMgotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8zCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzQKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfNQotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF82Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzcKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfOAotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF85Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzEwCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzMgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzMgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzMgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzMgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzMgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzMgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzMgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzMgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzMgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzMgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8yIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8yIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8yIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8yIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8yIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8yIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8yIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8yIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8yIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8yIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMSAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMSAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMSAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMSA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMSA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMSA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMSA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IE5ETkJPT1NUX1BQX1NMT1RfQ0NfMyhORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8zLCBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8yLCBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IE5ETkJPT1NUX1BQX1NMT1RfQ0NfMihORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8yLCBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8xKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8xCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy9sb3dlcjUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvbG93ZXI1LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTIwYzUzOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy9sb3dlcjUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3NoYXJlZC5ocHA+Ci0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81Ci0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzEKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMgotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8zCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzQKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfNQotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF82Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzcKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfOAotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF85Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzEwCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzMgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzMgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzMgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzMgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzMgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzMgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzMgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzMgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzMgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzMgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8yIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8yIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8yIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8yIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8yIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8yIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8yIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8yIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8yIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8yIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMSAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMSAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMSAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMSA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMSA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMSA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMSA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IE5ETkJPT1NUX1BQX1NMT1RfQ0NfMyhORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8zLCBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8yLCBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IE5ETkJPT1NUX1BQX1NMT1RfQ0NfMihORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8yLCBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8xKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8xCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy91cHBlcjEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvdXBwZXIxLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTg1NDdmZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy91cHBlcjEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3NoYXJlZC5ocHA+Ci0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMQotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMQotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMgotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfNAotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfNQotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfNgotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfNwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfOAotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfOQotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMTAKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzMgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8zIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMyAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzMgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8zIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMyA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzMgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8zIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMyA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzMgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMiAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzIgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8yIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMiAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzIgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8yIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMiA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzIgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8yIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMiA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8xIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMSAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzEgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8xIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMSA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzEgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8xIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMSA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzEgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8xIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSBORE5CT09TVF9QUF9TTE9UX0NDXzMoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzMsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8yLCBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMihORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMiwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzEpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMQotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvdXBwZXIyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL3VwcGVyMi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkODJhYWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvdXBwZXIyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zaGFyZWQuaHBwPgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzEKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzIKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzQKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzUKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzYKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzcKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzgKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzkKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzEwCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8zIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMyAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzMgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8zIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMyA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzMgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8zIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMyA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzMgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8zIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzIgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8yIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMiAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzIgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8yIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMiA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzIgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8yIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMiA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzIgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMSAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzEgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8xIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMSAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzEgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8xIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMSA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzEgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8xIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMSA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8zCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgTkROQk9PU1RfUFBfU0xPVF9DQ18zKE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8zLCBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMiwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiBORE5CT09TVF9QUF9TTE9UX0NDXzIoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzIsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8xKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzEKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL3VwcGVyMy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy91cHBlcjMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMjg1NzE3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL3VwcGVyMy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2hhcmVkLmhwcD4KLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8xCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8yCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8zCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF80Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF81Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF82Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF83Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF84Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF85Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8xMAotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMyAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzMgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8zIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMyAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzMgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8zIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMyA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzMgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8zIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMyA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8yIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMiAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzIgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8yIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMiA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzIgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8yIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMiA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzIgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8yIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzEgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8xIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzEgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8xIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzEgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8xIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzEgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMyhORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMywgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzIsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8yCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgTkROQk9PU1RfUFBfU0xPVF9DQ18yKE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8yLCBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8xCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy91cHBlcjQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvdXBwZXI0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjg2MTBjMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy91cHBlcjQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3NoYXJlZC5ocHA+Ci0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNAotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMQotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMgotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfNAotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfNQotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfNgotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfNwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfOAotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfOQotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMTAKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzMgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8zIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMyAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzMgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8zIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMyA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzMgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8zIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMyA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzMgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMiAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzIgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8yIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMiAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzIgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8yIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMiA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzIgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8yIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMiA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8xIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMSAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzEgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8xIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMSA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzEgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8xIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMSA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzEgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8xIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCBORE5CT09TVF9QUF9TTE9UX0NDXzMoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzMsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8yLCBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IE5ETkJPT1NUX1BQX1NMT1RfQ0NfMihORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMiwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzEpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMQotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvdXBwZXI1LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL3VwcGVyNS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3ODdjN2YuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvdXBwZXI1LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zaGFyZWQuaHBwPgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzEKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzIKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzQKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzUKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzYKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzcKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzgKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzkKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzEwCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8zIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMyAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzMgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8zIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMyA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzMgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8zIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMyA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzMgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8zIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzIgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8yIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMiAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzIgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8yIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMiA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzIgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8yIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMiA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzIgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMSAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzEgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8xIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMSAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzEgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8xIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMSA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzEgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8xIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMSA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8zCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgTkROQk9PU1RfUFBfU0xPVF9DQ18zKE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8zLCBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMiwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSBORE5CT09TVF9QUF9TTE9UX0NDXzIoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzIsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8xKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzEKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvZmluaXNoLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvZmluaXNoLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzM4MTcyYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2ZpbmlzaC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2hhcmVkLmhwcD4KLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfTE9DQUxfRkUKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMQotIyB1bmRlZiBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8yCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzMKLSMgdW5kZWYgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfNAotIyB1bmRlZiBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF81Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzYKLSMgdW5kZWYgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfNwotIyB1bmRlZiBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF84Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzkKLSMgdW5kZWYgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMTAKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMyAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMyAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMyAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMyAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMyA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMyA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMyA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMyA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMyA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMyA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzIgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzIgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzIgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzIgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzIgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzIgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzIgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzIgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzIgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzIgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8xIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8xIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8xIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8xIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8xIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8xIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8xIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8xIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8xIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8xIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkUoKSBORE5CT09TVF9QUF9TTE9UX0NDXzMoTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMywgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMiwgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8yCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRSgpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMihORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8yLCBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8xKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRSgpIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzEKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9mb3J3YXJkMS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvZm9yd2FyZDEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZDI5NDYwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9mb3J3YXJkMS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzQyICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmIGRlZmluZWQoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0xJTUlUUykKLSMgICAgaWYgIWRlZmluZWQoTkROQk9PU1RfUFBfRklMRU5BTUVfMSkKLSMgICAgICAgIGVycm9yIE5ETkJPT1NUX1BQX0VSUk9SOiAgZGVwdGggIzEgZmlsZW5hbWUgaXMgbm90IGRlZmluZWQKLSMgICAgZW5kaWYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBTFVFIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMCwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0xJTUlUUykKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL2xvd2VyMS5ocHA+Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQUxVRSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDEsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9MSU1JVFMpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy91cHBlcjEuaHBwPgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZMQUdTXzEoKSAwCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9MSU1JVFMKLSMgZWxpZiBkZWZpbmVkKE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBTFVFIE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMCwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xKQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvbG93ZXIxLmhwcD4KLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBTFVFIE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMSwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xKQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvdXBwZXIxLmhwcD4KLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEgTkROQk9PU1RfUFBfQVJSQVlfRUxFTSgyLCBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEpCi0jICAgIGlmIE5ETkJPT1NUX1BQX0FSUkFZX1NJWkUoTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xKSA+PSA0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZMQUdTXzEoKSBORE5CT09TVF9QUF9BUlJBWV9FTEVNKDMsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSkKLSMgICAgZWxzZQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GTEFHU18xKCkgMAotIyAgICBlbmRpZgotIyBlbHNlCi0jICAgIGVycm9yIE5ETkJPT1NUX1BQX0VSUk9SOiAgZGVwdGggIzEgaXRlcmF0aW9uIGJvdW5kYXJpZXMgb3IgZmlsZW5hbWUgbm90IGRlZmluZWQKLSMgZW5kaWYKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRICi0jIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKSAxCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9JU19JVEVSQVRJTkcgMQotIwotIyBpZiAoTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEpID4gKE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSkKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9yZXZlcnNlMS5ocHA+Ci0jIGVsc2UKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDEwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDExCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDEyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDEzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDI0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDI1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDI2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDI3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDI4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDI5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDMwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMzAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDMxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMzEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDMyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMzIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDMzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMzMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDM0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMzQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDM1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMzUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDM2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMzYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDM3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMzcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDM4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMzgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDM5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMzkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDQwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNDAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDQxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNDEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDQyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNDIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDQzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNDMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDQ0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNDQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDQ1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNDUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDQ2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNDYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDQ3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNDcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDQ4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNDgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDQ5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNDkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDUwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDUxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDUyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDUzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDU0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDU1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDU2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDU3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDU4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDU5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDYwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNjAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDYxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNjEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDYyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNjIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDYzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNjMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDY0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNjQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDY1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNjUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDY2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNjYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDY3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNjcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDY4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNjgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDY5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNjkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDcwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNzAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDcxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNzEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDcyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNzIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDczCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNzMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDc0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNzQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDc1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNzUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDc2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNzYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDc3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNzcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDc4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNzgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gNzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDc5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNzkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gODAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDgwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgODAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gODEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDgxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgODEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gODIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDgyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgODIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gODMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDgzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgODMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gODQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDg0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgODQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gODUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDg1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgODUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gODYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDg2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgODYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gODcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDg3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgODcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gODggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDg4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgODgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gODkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDg5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgODkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gOTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDkwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgOTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gOTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDkxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgOTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gOTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDkyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgOTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gOTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDkzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgOTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gOTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDk0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgOTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gOTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDk1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgOTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gOTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDk2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgOTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gOTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDk3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgOTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gOTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDk4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgOTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gOTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDk5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgOTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTAwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMDAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMDAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTAxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMDEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMDEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTAyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMDIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMDIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTAzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMDMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMDMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTA0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMDQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTA1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMDUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMDUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTA2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMDYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMDYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTA3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMDcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMDcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTA4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMDgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMDgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTA5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMDkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMDkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTEwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTExICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTEyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTEzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTE0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTE1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTE2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTE3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTE4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTE5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTIwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMjAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMjAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTIxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMjEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMjEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTIyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMjIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMjIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTIzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMjMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMjMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTI0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMjQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMjQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTI1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMjUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMjUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTI2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMjYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMjYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTI3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMjcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMjcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTI4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMjgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMjgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTI5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMjkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMjkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTMwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMzAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMzAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTMxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMzEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMzEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTMyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMzIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMzIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTMzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMzMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMzMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTM0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMzQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMzQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTM1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMzUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMzUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTM2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMzYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMzYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTM3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMzcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMzcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTM4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMzgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMzgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTM5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMzkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMzkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTQwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNDAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNDAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTQxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNDEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNDEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTQyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNDIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNDIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTQzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNDMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNDMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTQ0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNDQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTQ1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNDUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNDUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTQ2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNDYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNDYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTQ3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNDcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNDcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTQ4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNDgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNDgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTQ5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNDkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNDkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTUwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTUxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTUyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTUzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTU0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTU1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTU2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTU3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTU4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTU5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTYwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNjAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNjAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTYxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNjEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNjEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTYyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNjIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNjIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTYzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNjMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNjMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTY0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNjQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNjQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTY1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNjUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNjUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTY2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNjYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNjYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTY3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNjcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNjcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTY4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNjgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNjgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTY5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNjkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNjkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTcwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNzAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNzAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTcxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNzEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNzEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTcyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNzIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNzIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTczICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNzMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNzMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTc0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNzQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNzQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTc1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNzUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNzUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTc2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNzYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNzYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTc3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNzcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNzcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTc4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNzgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNzgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTc5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNzkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNzkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTgwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxODAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxODAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTgxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxODEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxODEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTgyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxODIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxODIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTgzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxODMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxODMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTg0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxODQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxODQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTg1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxODUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxODUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTg2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxODYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxODYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTg3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxODcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxODcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTg4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxODgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxODgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTg5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxODkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxODkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTkwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxOTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxOTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTkxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxOTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxOTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTkyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxOTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxOTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTkzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxOTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxOTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTk0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxOTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxOTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTk1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxOTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxOTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTk2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxOTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxOTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTk3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxOTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxOTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTk4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxOTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxOTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMTk5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxOTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxOTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjAwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMDAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMDAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjAxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMDEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMDEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjAyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMDIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMDIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjAzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMDMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMDMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjA0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMDQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjA1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMDUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMDUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjA2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMDYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMDYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjA3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMDcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMDcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjA4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMDgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMDgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjA5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMDkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMDkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjEwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjExICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjEyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjEzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjE0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjE1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjE2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjE3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjE4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjE5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjIwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMjAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMjAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjIxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMjEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMjEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjIyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMjIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMjIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjIzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMjMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMjMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjI0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMjQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMjQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjI1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMjUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMjUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjI2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMjYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMjYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjI3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMjcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMjcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjI4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMjgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMjgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjI5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMjkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMjkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjMwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMzAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMzAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjMxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMzEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMzEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjMyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMzIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMzIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjMzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMzMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMzMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjM0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMzQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMzQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjM1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMzUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMzUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjM2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMzYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMzYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjM3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMzcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMzcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjM4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMzgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMzgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjM5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMzkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMzkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjQwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyNDAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNDAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjQxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyNDEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNDEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjQyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyNDIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNDIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjQzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyNDMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNDMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjQ0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyNDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNDQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjQ1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyNDUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNDUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjQ2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyNDYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNDYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjQ3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyNDcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNDcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjQ4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyNDgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNDgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjQ5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyNDkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNDkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjUwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyNTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjUxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyNTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjUyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyNTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjUzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyNTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjU0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyNTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjU1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyNTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPD0gMjU2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyNTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgICAgZW5kaWYKLSMgZW5kaWYKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkgMAotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMQotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEKLSMgdW5kZWYgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRkxBR1NfMQotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9mb3J3YXJkMi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvZm9yd2FyZDIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOWEyZDljLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9mb3J3YXJkMi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzM4ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmIGRlZmluZWQoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0xJTUlUUykKLSMgICAgaWYgIWRlZmluZWQoTkROQk9PU1RfUFBfRklMRU5BTUVfMikKLSMgICAgICAgIGVycm9yIE5ETkJPT1NUX1BQX0VSUk9SOiAgZGVwdGggIzIgZmlsZW5hbWUgaXMgbm90IGRlZmluZWQKLSMgICAgZW5kaWYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBTFVFIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMCwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0xJTUlUUykKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL2xvd2VyMi5ocHA+Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQUxVRSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDEsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9MSU1JVFMpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy91cHBlcjIuaHBwPgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZMQUdTXzIoKSAwCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9MSU1JVFMKLSMgZWxpZiBkZWZpbmVkKE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMikKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBTFVFIE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMCwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18yKQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvbG93ZXIyLmhwcD4KLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBTFVFIE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMSwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18yKQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvdXBwZXIyLmhwcD4KLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIgTkROQk9PU1RfUFBfQVJSQVlfRUxFTSgyLCBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzIpCi0jICAgIGlmIE5ETkJPT1NUX1BQX0FSUkFZX1NJWkUoTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18yKSA+PSA0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZMQUdTXzIoKSBORE5CT09TVF9QUF9BUlJBWV9FTEVNKDMsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMikKLSMgICAgZWxzZQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GTEFHU18yKCkgMAotIyAgICBlbmRpZgotIyBlbHNlCi0jICAgIGVycm9yIE5ETkJPT1NUX1BQX0VSUk9SOiAgZGVwdGggIzIgaXRlcmF0aW9uIGJvdW5kYXJpZXMgb3IgZmlsZW5hbWUgbm90IGRlZmluZWQKLSMgZW5kaWYKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRICi0jIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKSAyCi0jCi0jIGlmIChORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMikgPiAoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yKQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL3JldmVyc2UyLmhwcD4KLSMgZWxzZQotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAzMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMzAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAzMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAzMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMzEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAzMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAzMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMzIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAzMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAzMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMzMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAzMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAzNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMzQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAzNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAzNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMzUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAzNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAzNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMzYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAzNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAzNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMzcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAzNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAzOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMzgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAzOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAzOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMzkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAzOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA0MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNDAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA0MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA0MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNDEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA0MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA0MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNDIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA0MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA0MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNDMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA0MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA0NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA0NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA0NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNDUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA0NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA0NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNDYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA0NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA0NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNDcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA0NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA0OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNDgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA0OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA0OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNDkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA0OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA1MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA1MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA1MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA1MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA1MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA1MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA1MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA1MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA1NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA1NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA1NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA1NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA1NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA1NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA1NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA1NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA1OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA1OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA1OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA1OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA2MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNjAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA2MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA2MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNjEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA2MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA2MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNjIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA2MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA2MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNjMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA2MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA2NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNjQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA2NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA2NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNjUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA2NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA2NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNjYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA2NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA2NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNjcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA2NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA2OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNjgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA2OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA2OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNjkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA2OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA3MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNzAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA3MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA3MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNzEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA3MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA3MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNzIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA3MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA3MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNzMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA3MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA3NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNzQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA3NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA3NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNzUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA3NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA3NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNzYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA3NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA3NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNzcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA3NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA3OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNzgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA3OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA3OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNzkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA3OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA4MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gODAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA4MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA4MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gODEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA4MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA4MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gODIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA4MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA4MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gODMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA4MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA4NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gODQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA4NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA4NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gODUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA4NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA4NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gODYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA4NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA4NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gODcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA4NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA4OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gODgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA4OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA4OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gODkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA4OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA5MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gOTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA5MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA5MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gOTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA5MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA5MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gOTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA5MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA5MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gOTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA5MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA5NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gOTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA5NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA5NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gOTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA5NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA5NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gOTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA5NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA5NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gOTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA5NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA5OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gOTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA5OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSA5OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gOTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA5OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDEwMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEwMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDEwMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEwMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDEwMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEwMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDEwMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEwMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDEwNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEwNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDEwNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEwNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDEwNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEwNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDEwNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEwNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDEwOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEwOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDEwOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEwOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDExMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDExMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDExMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDExMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDExMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDExMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDExMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDExMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDExNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDExNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDExNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDExNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDExNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDExNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDExNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDExNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDExOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDExOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDExOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDExOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDEyMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEyMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDEyMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEyMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDEyMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEyMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDEyMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEyMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDEyNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEyNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDEyNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEyNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDEyNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEyNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDEyNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEyNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDEyOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEyOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDEyOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEyOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDEzMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEzMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDEzMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEzMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDEzMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEzMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDEzMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEzMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDEzNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEzNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDEzNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEzNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDEzNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEzNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDEzNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEzNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDEzOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEzOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxMzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDEzOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEzOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE0MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE0MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE0MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE0MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE0MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE0MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE0MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE0MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE0NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE0NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE0NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE0NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE0NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE0NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE0NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE0NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE0OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE0OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE0OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE0OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE1MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE1MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE1MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE1MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE1MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE1MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE1MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE1MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE1NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE1NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE1NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE1NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE1NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE1NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE1NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE1NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE1OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE1OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE1OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE1OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE2MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE2MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE2MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE2MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE2MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE2MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE2MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE2MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE2NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE2NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE2NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE2NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE2NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE2NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE2NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE2NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE2OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE2OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE2OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE2OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE3MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE3MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE3MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE3MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE3MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE3MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE3MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE3MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE3NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE3NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE3NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE3NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE3NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE3NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE3NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE3NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE3OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE3OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxNzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE3OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE3OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxODAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE4MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE4MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxODEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE4MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE4MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxODIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE4MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE4MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxODMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE4MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE4MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxODQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE4NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE4NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxODUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE4NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE4NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxODYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE4NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE4NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxODcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE4NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE4NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxODggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE4OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE4OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxODkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE4OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE4OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxOTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE5MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE5MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxOTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE5MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE5MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxOTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE5MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE5MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxOTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE5MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE5MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxOTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE5NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE5NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxOTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE5NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE5NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxOTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE5NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE5NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxOTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE5NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE5NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxOTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE5OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE5OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAxOTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE5OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE5OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIwMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIwMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIwMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIwMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIwMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIwMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIwMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIwMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIwNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIwNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIwNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIwNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIwNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIwNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIwNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIwNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIwOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIwOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIwOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIwOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIxMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIxMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIxMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIxMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIxMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIxMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIxMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIxMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIxNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIxNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIxNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIxNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIxNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIxNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIxNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIxNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIxOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIxOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIxOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIxOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIyMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIyMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIyMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIyMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIyMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIyMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIyMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIyMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIyNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIyNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIyNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIyNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIyNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIyNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIyNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIyNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIyOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIyOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIyOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIyOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIzMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIzMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIzMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIzMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIzMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIzMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIzMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIzMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIzNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIzNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIzNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIzNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIzNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIzNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIzNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIzNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIzOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIzOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyMzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIzOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIzOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyNDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDI0MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI0MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyNDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDI0MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI0MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyNDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDI0MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI0MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyNDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDI0MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI0MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyNDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDI0NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI0NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyNDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDI0NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI0NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyNDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDI0NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI0NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyNDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDI0NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI0NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyNDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDI0OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI0OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyNDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDI0OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI0OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyNTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDI1MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI1MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyNTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDI1MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI1MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyNTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDI1MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI1MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyNTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDI1MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI1MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyNTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDI1NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI1NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyNTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDI1NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI1NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA8PSAyNTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDI1NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI1NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyAgICBlbmRpZgotIyBlbmRpZgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpIDEKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZMQUdTXzIKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18yCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvZm9yd2FyZDMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL2ZvcndhcmQzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQ3OWUxOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvZm9yd2FyZDMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTMzOCArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZiBkZWZpbmVkKE5ETkJPT1NUX1BQX0lURVJBVElPTl9MSU1JVFMpCi0jICAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMpCi0jICAgICAgICBlcnJvciBORE5CT09TVF9QUF9FUlJPUjogIGRlcHRoICMzIGZpbGVuYW1lIGlzIG5vdCBkZWZpbmVkCi0jICAgIGVuZGlmCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQUxVRSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDAsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9MSU1JVFMpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy9sb3dlcjMuaHBwPgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFMVUUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAxLCBORE5CT09TVF9QUF9JVEVSQVRJT05fTElNSVRTKQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvdXBwZXIzLmhwcD4KLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GTEFHU18zKCkgMAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fTElNSVRTCi0jIGVsaWYgZGVmaW5lZChORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzMpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQUxVRSBORE5CT09TVF9QUF9BUlJBWV9FTEVNKDAsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMykKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL2xvd2VyMy5ocHA+Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQUxVRSBORE5CT09TVF9QUF9BUlJBWV9FTEVNKDEsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMykKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL3VwcGVyMy5ocHA+Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zIE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMiwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18zKQotIyAgICBpZiBORE5CT09TVF9QUF9BUlJBWV9TSVpFKE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMykgPj0gNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GTEFHU18zKCkgTkROQk9PU1RfUFBfQVJSQVlfRUxFTSgzLCBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzMpCi0jICAgIGVsc2UKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRkxBR1NfMygpIDAKLSMgICAgZW5kaWYKLSMgZWxzZQotIyAgICBlcnJvciBORE5CT09TVF9QUF9FUlJPUjogIGRlcHRoICMzIGl0ZXJhdGlvbiBib3VuZGFyaWVzIG9yIGZpbGVuYW1lIG5vdCBkZWZpbmVkCi0jIGVuZGlmCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkgMwotIwotIyBpZiAoTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMpID4gKE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMykKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9yZXZlcnNlMy5ocHA+Ci0jIGVsc2UKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDEwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDExCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDEyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDEzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDI0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDI1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDI2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDI3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDI4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDI5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDMwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMzAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDMxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMzEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDMyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMzIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDMzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMzMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDM0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMzQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDM1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMzUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDM2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMzYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDM3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMzcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDM4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMzgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDM5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMzkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDQwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNDAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDQxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNDEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDQyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNDIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDQzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNDMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDQ0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNDQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDQ1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNDUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDQ2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNDYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDQ3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNDcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDQ4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNDgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDQ5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNDkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDUwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDUxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDUyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDUzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDU0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDU1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDU2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDU3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDU4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDU5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDYwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNjAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDYxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNjEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDYyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNjIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDYzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNjMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDY0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNjQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDY1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNjUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDY2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNjYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDY3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNjcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDY4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNjgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDY5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNjkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDcwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNzAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDcxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNzEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDcyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNzIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDczCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNzMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDc0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNzQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDc1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNzUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDc2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNzYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDc3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNzcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDc4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNzgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gNzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDc5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNzkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gODAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDgwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgODAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gODEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDgxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgODEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gODIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDgyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgODIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gODMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDgzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgODMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gODQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDg0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgODQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gODUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDg1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgODUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gODYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDg2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgODYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gODcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDg3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgODcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gODggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDg4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgODgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gODkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDg5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgODkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gOTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDkwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgOTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gOTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDkxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgOTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gOTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDkyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgOTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gOTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDkzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgOTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gOTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDk0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgOTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gOTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDk1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgOTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gOTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDk2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgOTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gOTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDk3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgOTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gOTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDk4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgOTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gOTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDk5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgOTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTAwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMDAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMDAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTAxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMDEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMDEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTAyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMDIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMDIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTAzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMDMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMDMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTA0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMDQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTA1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMDUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMDUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTA2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMDYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMDYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTA3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMDcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMDcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTA4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMDgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMDgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTA5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMDkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMDkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTEwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTExICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTEyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTEzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTE0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTE1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTE2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTE3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTE4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTE5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTIwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMjAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMjAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTIxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMjEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMjEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTIyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMjIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMjIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTIzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMjMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMjMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTI0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMjQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMjQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTI1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMjUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMjUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTI2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMjYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMjYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTI3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMjcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMjcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTI4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMjgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMjgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTI5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMjkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMjkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTMwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMzAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMzAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTMxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMzEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMzEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTMyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMzIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMzIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTMzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMzMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMzMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTM0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMzQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMzQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTM1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMzUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMzUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTM2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMzYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMzYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTM3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMzcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMzcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTM4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMzgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMzgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTM5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMzkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMzkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTQwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNDAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNDAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTQxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNDEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNDEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTQyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNDIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNDIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTQzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNDMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNDMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTQ0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNDQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTQ1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNDUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNDUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTQ2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNDYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNDYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTQ3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNDcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNDcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTQ4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNDgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNDgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTQ5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNDkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNDkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTUwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTUxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTUyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTUzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTU0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTU1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTU2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTU3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTU4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTU5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTYwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNjAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNjAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTYxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNjEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNjEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTYyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNjIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNjIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTYzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNjMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNjMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTY0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNjQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNjQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTY1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNjUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNjUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTY2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNjYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNjYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTY3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNjcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNjcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTY4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNjgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNjgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTY5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNjkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNjkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTcwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNzAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNzAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTcxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNzEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNzEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTcyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNzIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNzIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTczICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNzMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNzMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTc0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNzQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNzQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTc1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNzUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNzUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTc2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNzYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNzYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTc3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNzcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNzcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTc4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNzgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNzgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTc5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNzkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNzkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTgwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxODAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxODAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTgxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxODEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxODEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTgyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxODIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxODIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTgzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxODMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxODMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTg0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxODQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxODQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTg1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxODUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxODUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTg2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxODYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxODYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTg3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxODcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxODcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTg4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxODgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxODgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTg5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxODkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxODkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTkwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxOTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxOTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTkxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxOTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxOTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTkyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxOTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxOTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTkzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxOTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxOTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTk0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxOTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxOTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTk1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxOTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxOTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTk2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxOTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxOTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTk3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxOTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxOTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTk4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxOTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxOTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMTk5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxOTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxOTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjAwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMDAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMDAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjAxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMDEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMDEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjAyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMDIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMDIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjAzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMDMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMDMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjA0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMDQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjA1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMDUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMDUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjA2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMDYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMDYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjA3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMDcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMDcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjA4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMDgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMDgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjA5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMDkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMDkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjEwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjExICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjEyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjEzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjE0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjE1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjE2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjE3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjE4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjE5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjIwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMjAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMjAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjIxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMjEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMjEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjIyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMjIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMjIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjIzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMjMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMjMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjI0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMjQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMjQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjI1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMjUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMjUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjI2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMjYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMjYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjI3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMjcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMjcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjI4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMjgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMjgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjI5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMjkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMjkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjMwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMzAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMzAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjMxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMzEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMzEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjMyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMzIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMzIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjMzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMzMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMzMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjM0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMzQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMzQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjM1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMzUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMzUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjM2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMzYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMzYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjM3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMzcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMzcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjM4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMzgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMzgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjM5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMzkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMzkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjQwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyNDAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyNDAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjQxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyNDEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyNDEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjQyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyNDIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyNDIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjQzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyNDMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyNDMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjQ0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyNDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyNDQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjQ1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyNDUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyNDUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjQ2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyNDYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyNDYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjQ3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyNDcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyNDcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjQ4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyNDgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyNDgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjQ5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyNDkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyNDkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjUwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyNTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyNTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjUxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyNTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyNTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjUyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyNTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyNTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjUzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyNTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyNTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjU0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyNTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyNTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjU1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyNTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyNTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPD0gMjU2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyNTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyNTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgICAgZW5kaWYKLSMgZW5kaWYKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRICi0jIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKSAyCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMwotIyB1bmRlZiBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GTEFHU18zCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL2ZvcndhcmQ0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9mb3J3YXJkNC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiYzIxNTIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL2ZvcndhcmQ0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMzggKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWYgZGVmaW5lZChORE5CT09TVF9QUF9JVEVSQVRJT05fTElNSVRTKQotIyAgICBpZiAhZGVmaW5lZChORE5CT09TVF9QUF9GSUxFTkFNRV80KQotIyAgICAgICAgZXJyb3IgTkROQk9PU1RfUFBfRVJST1I6ICBkZXB0aCAjNCBmaWxlbmFtZSBpcyBub3QgZGVmaW5lZAotIyAgICBlbmRpZgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFMVUUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAwLCBORE5CT09TVF9QUF9JVEVSQVRJT05fTElNSVRTKQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvbG93ZXI0LmhwcD4KLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBTFVFIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMSwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0xJTUlUUykKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL3VwcGVyNC5ocHA+Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRkxBR1NfNCgpIDAKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0xJTUlUUwotIyBlbGlmIGRlZmluZWQoTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU180KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFMVUUgTkROQk9PU1RfUFBfQVJSQVlfRUxFTSgwLCBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzQpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy9sb3dlcjQuaHBwPgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFMVUUgTkROQk9PU1RfUFBfQVJSQVlfRUxFTSgxLCBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzQpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy91cHBlcjQuaHBwPgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRklMRU5BTUVfNCBORE5CT09TVF9QUF9BUlJBWV9FTEVNKDIsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfNCkKLSMgICAgaWYgTkROQk9PU1RfUFBfQVJSQVlfU0laRShORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzQpID49IDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRkxBR1NfNCgpIE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMywgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU180KQotIyAgICBlbHNlCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZMQUdTXzQoKSAwCi0jICAgIGVuZGlmCi0jIGVsc2UKLSMgICAgZXJyb3IgTkROQk9PU1RfUFBfRVJST1I6ICBkZXB0aCAjNCBpdGVyYXRpb24gYm91bmRhcmllcyBvciBmaWxlbmFtZSBub3QgZGVmaW5lZAotIyBlbmRpZgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpIDQKLSMKLSMgaWYgKE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80KSA+IChORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvcmV2ZXJzZTQuaHBwPgotIyBlbHNlCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDEwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDExICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDExCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDEyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDEzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDI0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDI1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDI2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDI3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDI4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDI5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDMwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAzMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDMwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDMxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAzMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDMxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDMyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAzMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDMyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDMzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAzMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDMzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDM0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAzNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDM0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDM1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAzNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDM1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDM2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAzNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDM2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDM3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAzNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDM3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDM4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAzOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDM4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDM5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAzOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDM5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDQwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA0MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDQwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDQxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA0MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDQxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDQyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA0MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDQyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDQzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA0MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDQzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDQ0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA0NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDQ0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDQ1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA0NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDQ1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDQ2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA0NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDQ2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDQ3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA0NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDQ3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDQ4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA0OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDQ4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDQ5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA0OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDQ5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDUwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA1MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDUwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDUxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA1MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDUxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDUyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA1MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDUyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDUzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA1MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDUzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDU0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA1NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDU0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDU1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA1NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDU1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDU2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA1NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDU2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDU3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA1NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDU3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDU4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA1OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDU4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDU5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA1OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDU5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDYwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA2MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDYwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDYxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA2MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDYxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDYyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA2MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDYyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDYzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA2MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDYzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDY0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA2NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDY0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDY1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA2NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDY1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDY2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA2NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDY2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDY3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA2NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDY3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDY4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA2OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDY4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDY5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA2OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDY5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDcwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA3MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDcwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDcxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA3MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDcxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDcyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA3MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDcyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDczICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA3MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDczCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDc0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA3NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDc0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDc1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA3NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDc1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDc2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA3NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDc2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDc3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA3NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDc3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDc4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA3OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDc4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDc5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA3OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDc5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDgwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA4MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDgwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDgxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA4MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDgxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDgyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA4MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDgyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDgzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA4MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDgzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDg0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA4NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDg0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDg1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA4NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDg1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDg2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA4NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDg2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDg3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA4NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDg3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDg4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA4OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDg4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDg5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA4OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDg5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDkwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA5MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDkwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDkxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA5MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDkxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDkyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA5MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDkyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDkzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA5MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDkzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDk0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA5NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDk0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDk1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA5NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDk1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDk2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA5NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDk2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDk3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA5NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDk3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDk4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA5OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDk4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDk5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA5OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDk5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDEwMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTAwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTAwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDEwMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTAxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTAxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDEwMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTAyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTAyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDEwMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTAzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTAzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDEwNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTA0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTA0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDEwNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTA1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTA1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDEwNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTA2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTA2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDEwNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTA3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTA3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDEwOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTA4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTA4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDEwOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTA5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTA5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDExMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTEwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTEwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDExMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTExCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTExCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDExMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTEyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTEyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDExMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTEzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTEzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDExNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTE0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTE0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDExNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTE1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTE1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDExNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTE2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTE2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDExNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTE3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTE3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDExOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTE4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTE4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDExOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTE5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTE5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDEyMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTIwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTIwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDEyMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTIxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTIxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDEyMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTIyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTIyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDEyMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTIzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTIzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDEyNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTI0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTI0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDEyNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTI1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTI1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDEyNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTI2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTI2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDEyNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTI3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTI3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDEyOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTI4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTI4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDEyOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTI5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTI5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDEzMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTMwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTMwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDEzMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTMxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTMxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDEzMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTMyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTMyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDEzMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTMzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTMzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDEzNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTM0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTM0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDEzNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTM1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTM1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDEzNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTM2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTM2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDEzNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTM3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTM3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDEzOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTM4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTM4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDEzOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTM5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTM5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE0MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTQwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTQwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE0MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTQxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTQxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE0MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTQyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTQyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE0MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTQzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTQzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE0NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTQ0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTQ0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE0NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTQ1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTQ1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE0NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTQ2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTQ2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE0NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTQ3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTQ3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE0OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTQ4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTQ4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE0OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTQ5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTQ5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE1MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTUwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTUwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE1MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTUxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTUxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE1MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTUyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTUyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE1MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTUzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTUzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE1NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTU0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTU0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE1NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTU1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTU1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE1NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTU2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTU2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE1NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTU3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTU3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE1OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTU4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTU4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE1OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTU5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTU5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE2MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTYwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTYwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE2MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTYxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTYxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE2MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTYyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTYyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE2MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTYzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTYzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE2NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTY0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTY0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE2NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTY1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTY1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE2NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTY2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTY2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE2NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTY3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTY3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE2OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTY4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTY4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE2OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTY5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTY5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE3MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTcwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTcwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE3MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTcxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTcxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE3MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTcyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTcyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE3MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTczCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTczCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE3NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTc0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTc0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE3NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTc1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTc1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE3NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTc2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTc2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE3NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTc3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTc3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE3OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTc4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTc4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE3OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTc5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTc5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE4MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTgwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTgwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE4MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTgxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTgxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE4MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTgyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTgyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE4MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTgzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTgzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE4NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTg0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTg0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE4NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTg1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTg1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE4NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTg2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTg2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE4NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTg3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTg3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE4OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTg4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTg4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE4OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTg5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTg5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE5MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTkwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTkwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE5MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTkxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTkxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE5MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTkyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTkyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE5MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTkzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTkzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE5NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTk0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTk0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE5NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTk1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTk1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE5NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTk2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTk2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE5NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTk3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTk3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE5OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTk4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTk4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDE5OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTk5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTk5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIwMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjAwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjAwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIwMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjAxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjAxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIwMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjAyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjAyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIwMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjAzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjAzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIwNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjA0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjA0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIwNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjA1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjA1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIwNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjA2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjA2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIwNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjA3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjA3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIwOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjA4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjA4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIwOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjA5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjA5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIxMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjEwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjEwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIxMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjExCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjExCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIxMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjEyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjEyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIxMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjEzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjEzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIxNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjE0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjE0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIxNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjE1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjE1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIxNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjE2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjE2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIxNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjE3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjE3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIxOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjE4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjE4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIxOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjE5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjE5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIyMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjIwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjIwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIyMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjIxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjIxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIyMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjIyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjIyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIyMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjIzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjIzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIyNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjI0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjI0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIyNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjI1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjI1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIyNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjI2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjI2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIyNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjI3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjI3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIyOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjI4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjI4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIyOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjI5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjI5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIzMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjMwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjMwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIzMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjMxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjMxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIzMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjMyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjMyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIzMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjMzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjMzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIzNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjM0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjM0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIzNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjM1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjM1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIzNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjM2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjM2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIzNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjM3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjM3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIzOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjM4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjM4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDIzOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjM5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjM5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDI0MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjQwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjQwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDI0MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjQxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjQxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDI0MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjQyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjQyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDI0MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjQzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjQzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDI0NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjQ0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjQ0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDI0NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjQ1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjQ1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDI0NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjQ2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjQ2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDI0NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjQ3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjQ3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDI0OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjQ4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjQ4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDI0OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjQ5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjQ5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDI1MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjUwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjUwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDI1MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjUxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjUxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDI1MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjUyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjUyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDI1MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjUzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjUzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDI1NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjU0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjU0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDI1NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjU1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjU1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IDw9IDI1NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjU2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjU2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jICAgIGVuZGlmCi0jIGVuZGlmCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkgMwotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNAotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQKLSMgdW5kZWYgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRkxBR1NfNAotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9mb3J3YXJkNS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvZm9yd2FyZDUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOWZlYmIxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9mb3J3YXJkNS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzM4ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmIGRlZmluZWQoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0xJTUlUUykKLSMgICAgaWYgIWRlZmluZWQoTkROQk9PU1RfUFBfRklMRU5BTUVfNSkKLSMgICAgICAgIGVycm9yIE5ETkJPT1NUX1BQX0VSUk9SOiAgZGVwdGggIzUgZmlsZW5hbWUgaXMgbm90IGRlZmluZWQKLSMgICAgZW5kaWYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBTFVFIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMCwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0xJTUlUUykKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL2xvd2VyNS5ocHA+Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQUxVRSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDEsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9MSU1JVFMpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy91cHBlcjUuaHBwPgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZMQUdTXzUoKSAwCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9MSU1JVFMKLSMgZWxpZiBkZWZpbmVkKE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfNSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBTFVFIE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMCwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU181KQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvbG93ZXI1LmhwcD4KLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBTFVFIE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMSwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU181KQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvdXBwZXI1LmhwcD4KLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUgTkROQk9PU1RfUFBfQVJSQVlfRUxFTSgyLCBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzUpCi0jICAgIGlmIE5ETkJPT1NUX1BQX0FSUkFZX1NJWkUoTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU181KSA+PSA0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZMQUdTXzUoKSBORE5CT09TVF9QUF9BUlJBWV9FTEVNKDMsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfNSkKLSMgICAgZWxzZQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GTEFHU181KCkgMAotIyAgICBlbmRpZgotIyBlbHNlCi0jICAgIGVycm9yIE5ETkJPT1NUX1BQX0VSUk9SOiAgZGVwdGggIzUgaXRlcmF0aW9uIGJvdW5kYXJpZXMgb3IgZmlsZW5hbWUgbm90IGRlZmluZWQKLSMgZW5kaWYKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRICi0jIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKSA1Ci0jCi0jIGlmIChORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSkgPiAoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81KQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL3JldmVyc2U1LmhwcD4KLSMgZWxzZQotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAzMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMzAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAzMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAzMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMzEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAzMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAzMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMzIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAzMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAzMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMzMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAzMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAzNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMzQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAzNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAzNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMzUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAzNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAzNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMzYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAzNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAzNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMzcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAzNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAzOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMzgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAzOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAzOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMzkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAzOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA0MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNDAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA0MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA0MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNDEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA0MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA0MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNDIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA0MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA0MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNDMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA0MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA0NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA0NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA0NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNDUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA0NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA0NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNDYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA0NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA0NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNDcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA0NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA0OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNDgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA0OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA0OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNDkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA0OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA1MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA1MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA1MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA1MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA1MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA1MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA1MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA1MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA1NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA1NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA1NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA1NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA1NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA1NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA1NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA1NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA1OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA1OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA1OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA1OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA2MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNjAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA2MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA2MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNjEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA2MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA2MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNjIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA2MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA2MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNjMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA2MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA2NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNjQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA2NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA2NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNjUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA2NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA2NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNjYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA2NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA2NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNjcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA2NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA2OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNjgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA2OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA2OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNjkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA2OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA3MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNzAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA3MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA3MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNzEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA3MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA3MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNzIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA3MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA3MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNzMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA3MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA3NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNzQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA3NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA3NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNzUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA3NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA3NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNzYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA3NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA3NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNzcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA3NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA3OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNzgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA3OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA3OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNzkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA3OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA4MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gODAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA4MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA4MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gODEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA4MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA4MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gODIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA4MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA4MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gODMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA4MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA4NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gODQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA4NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA4NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gODUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA4NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA4NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gODYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA4NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA4NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gODcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA4NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA4OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gODgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA4OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA4OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gODkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA4OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA5MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gOTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA5MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA5MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gOTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA5MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA5MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gOTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA5MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA5MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gOTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA5MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA5NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gOTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA5NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA5NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gOTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA5NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA5NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gOTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA5NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA5NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gOTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA5NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA5OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gOTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA5OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSA5OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gOTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA5OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDEwMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEwMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDEwMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEwMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDEwMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEwMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDEwMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEwMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDEwNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEwNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDEwNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEwNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDEwNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEwNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDEwNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEwNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDEwOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEwOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDEwOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEwOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDExMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDExMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDExMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDExMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDExMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDExMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDExMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDExMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDExNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDExNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDExNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDExNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDExNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDExNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDExNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDExNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDExOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDExOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDExOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDExOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDEyMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEyMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDEyMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEyMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDEyMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEyMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDEyMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEyMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDEyNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEyNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDEyNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEyNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDEyNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEyNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDEyNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEyNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDEyOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEyOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDEyOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEyOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDEzMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEzMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDEzMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEzMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDEzMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEzMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDEzMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEzMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDEzNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEzNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDEzNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEzNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDEzNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEzNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDEzNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEzNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDEzOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEzOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxMzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDEzOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEzOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE0MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE0MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE0MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE0MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE0MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE0MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE0MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE0MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE0NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE0NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE0NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE0NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE0NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE0NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE0NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE0NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE0OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE0OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE0OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE0OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE1MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE1MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE1MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE1MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE1MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE1MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE1MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE1MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE1NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE1NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE1NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE1NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE1NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE1NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE1NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE1NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE1OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE1OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE1OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE1OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE2MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE2MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE2MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE2MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE2MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE2MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE2MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE2MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE2NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE2NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE2NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE2NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE2NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE2NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE2NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE2NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE2OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE2OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE2OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE2OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE3MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE3MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE3MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE3MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE3MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE3MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE3MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE3MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE3NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE3NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE3NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE3NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE3NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE3NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE3NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE3NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE3OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE3OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxNzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE3OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE3OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxODAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE4MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE4MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxODEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE4MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE4MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxODIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE4MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE4MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxODMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE4MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE4MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxODQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE4NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE4NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxODUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE4NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE4NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxODYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE4NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE4NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxODcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE4NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE4NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxODggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE4OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE4OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxODkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE4OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE4OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxOTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE5MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE5MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxOTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE5MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE5MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxOTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE5MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE5MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxOTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE5MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE5MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxOTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE5NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE5NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxOTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE5NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE5NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxOTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE5NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE5NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxOTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE5NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE5NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxOTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE5OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE5OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAxOTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE5OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE5OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIwMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIwMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIwMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIwMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIwMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIwMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIwMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIwMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIwNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIwNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIwNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIwNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIwNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIwNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIwNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIwNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIwOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIwOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIwOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIwOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIxMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIxMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIxMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIxMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIxMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIxMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIxMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIxMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIxNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIxNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIxNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIxNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIxNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIxNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIxNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIxNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIxOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIxOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIxOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIxOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIyMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIyMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIyMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIyMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIyMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIyMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIyMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIyMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIyNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIyNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIyNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIyNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIyNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIyNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIyNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIyNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIyOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIyOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIyOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIyOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIzMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIzMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIzMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIzMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIzMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIzMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIzMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIzMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIzNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIzNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIzNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIzNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIzNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIzNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIzNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIzNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIzOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIzOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyMzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIzOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIzOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyNDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDI0MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI0MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyNDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDI0MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI0MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyNDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDI0MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI0MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyNDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDI0MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI0MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyNDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDI0NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI0NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyNDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDI0NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI0NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyNDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDI0NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI0NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyNDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDI0NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI0NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyNDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDI0OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI0OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyNDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDI0OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI0OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyNTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDI1MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI1MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyNTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDI1MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI1MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyNTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDI1MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI1MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyNTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDI1MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI1MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyNTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDI1NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI1NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyNTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDI1NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI1NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA8PSAyNTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDI1NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI1NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyAgICBlbmRpZgotIyBlbmRpZgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpIDQKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZMQUdTXzUKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU181CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvcmV2ZXJzZTEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL3JldmVyc2UxLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmIwMWFmMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvcmV2ZXJzZTEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTI5NiArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjU2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDI1NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjU2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjU1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDI1NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjU1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjU0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDI1NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjU0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjUzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDI1MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjUzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjUyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDI1MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjUyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjUxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDI1MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjUxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjUwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDI1MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjUwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjQ5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDI0OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjQ5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjQ4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDI0OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjQ4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjQ3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDI0NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjQ3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjQ2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDI0NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjQ2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjQ1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDI0NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjQ1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjQ0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDI0NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjQ0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjQzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDI0MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjQzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjQyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDI0MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjQyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjQxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDI0MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjQxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjQwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDI0MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjQwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjM5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIzOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjM5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjM4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIzOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjM4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjM3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIzNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjM3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjM2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIzNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjM2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjM1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIzNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjM1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjM0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIzNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjM0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjMzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIzMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjMzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjMyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIzMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjMyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjMxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIzMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjMxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjMwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIzMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjMwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjI5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIyOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjI5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjI4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIyOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjI4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjI3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIyNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjI3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjI2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIyNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjI2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjI1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIyNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjI1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjI0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIyNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjI0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjIzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIyMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjIzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjIyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIyMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjIyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjIxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIyMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjIxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjIwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIyMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjIwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjE5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIxOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjE5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjE4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIxOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjE4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjE3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIxNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjE3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjE2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIxNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjE2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjE1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIxNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjE1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjE0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIxNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjE0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjEzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIxMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjEzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjEyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIxMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjEyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjExICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIxMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjExCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjEwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIxMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjEwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjA5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIwOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjA5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjA4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIwOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjA4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjA3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIwNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjA3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjA2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIwNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjA2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjA1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIwNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjA1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjA0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIwNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjA0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjAzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIwMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjAzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjAyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIwMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjAyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjAxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIwMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjAxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjAwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIwMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjAwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTk5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE5OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTk5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTk4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE5OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTk4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTk3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE5NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTk3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTk2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE5NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTk2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTk1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE5NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTk1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTk0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE5NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTk0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTkzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE5MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTkzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTkyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE5MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTkyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTkxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE5MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTkxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTkwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE5MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTkwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTg5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE4OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTg5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTg4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE4OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTg4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTg3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE4NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTg3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTg2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE4NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTg2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTg1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE4NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTg1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTg0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE4NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTg0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTgzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE4MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTgzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTgyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE4MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTgyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTgxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE4MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTgxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTgwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE4MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTgwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTc5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE3OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTc5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTc4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE3OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTc4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTc3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE3NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTc3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTc2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE3NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTc2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTc1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE3NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTc1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTc0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE3NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTc0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTczICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE3MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTczCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTcyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE3MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTcyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTcxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE3MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTcxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTcwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE3MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTcwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTY5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE2OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTY5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTY4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE2OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTY4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTY3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE2NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTY3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTY2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE2NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTY2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTY1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE2NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTY1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTY0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE2NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTY0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTYzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE2MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTYzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTYyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE2MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTYyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTYxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE2MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTYxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTYwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE2MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTYwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTU5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE1OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTU5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTU4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE1OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTU4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTU3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE1NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTU3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTU2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE1NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTU2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTU1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE1NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTU1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTU0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE1NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTU0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTUzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE1MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTUzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTUyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE1MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTUyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTUxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE1MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTUxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTUwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE1MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTUwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTQ5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE0OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTQ5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTQ4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE0OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTQ4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTQ3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE0NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTQ3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTQ2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE0NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTQ2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTQ1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE0NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTQ1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTQ0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE0NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTQ0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTQzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE0MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTQzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTQyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE0MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTQyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTQxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE0MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTQxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTQwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE0MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTQwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTM5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDEzOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTM5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTM4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDEzOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTM4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTM3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDEzNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTM3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTM2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDEzNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTM2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTM1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDEzNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTM1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTM0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDEzNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTM0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTMzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDEzMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTMzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTMyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDEzMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTMyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTMxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDEzMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTMxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTMwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDEzMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTMwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTI5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDEyOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTI5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTI4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDEyOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTI4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTI3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDEyNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTI3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTI2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDEyNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTI2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTI1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDEyNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTI1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTI0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDEyNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTI0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTIzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDEyMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTIzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTIyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDEyMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTIyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTIxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDEyMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTIxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTIwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDEyMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTIwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTE5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDExOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTE5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTE4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDExOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTE4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTE3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDExNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTE3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTE2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDExNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTE2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTE1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDExNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTE1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTE0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDExNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTE0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTEzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDExMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTEzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTEyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDExMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTEyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTExICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDExMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTExCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTEwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDExMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTEwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTA5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDEwOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTA5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTA4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDEwOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTA4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTA3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDEwNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTA3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTA2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDEwNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTA2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTA1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDEwNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTA1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTA0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDEwNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTA0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTAzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDEwMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTAzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTAyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDEwMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTAyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTAxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDEwMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTAxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTAwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDEwMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTAwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gOTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gOTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDk5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gOTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gOTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDk4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gOTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gOTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDk3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gOTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gOTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDk2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gOTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gOTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDk1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gOTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gOTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDk0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gOTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gOTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDkzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gOTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gOTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDkyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gOTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gOTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDkxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gOTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gOTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDkwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gODkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gODkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDg5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gODggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gODgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDg4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gODcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gODcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDg3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gODYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gODYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDg2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gODUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gODUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDg1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gODQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gODQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDg0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gODMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gODMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDgzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gODIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gODIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDgyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gODEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gODEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDgxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gODAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gODAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDgwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDc5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDc4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDc3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDc2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDc1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDc0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDczCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDcyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNzEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDcxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNzAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDcwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNjkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDY5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNjgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDY4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNjcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDY3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNjYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDY2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNjUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDY1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNjQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDY0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNjMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDYzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNjIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDYyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNjEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDYxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNjAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDYwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDU5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDU4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDU3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDU2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDU1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDU0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDUzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDUyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDUxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDUwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDQ5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDQ4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDQ3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDQ2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDQ1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDQ0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDQzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDQyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDQxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDQwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDM5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDM4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDM3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDM2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDM1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDM0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDMzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDMyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMzEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDMxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMzAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDMwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDExCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPD0gMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL3JldmVyc2UyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9yZXZlcnNlMi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2Y2M2YjkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL3JldmVyc2UyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyOTYgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDI1NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyNTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI1NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDI1NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyNTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI1NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDI1NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyNTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI1NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDI1MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyNTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI1MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDI1MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyNTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI1MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDI1MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyNTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI1MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDI1MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyNTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI1MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDI0OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyNDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI0OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDI0OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyNDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI0OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDI0NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyNDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI0NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDI0NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyNDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI0NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDI0NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyNDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI0NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDI0NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyNDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI0NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDI0MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyNDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI0MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDI0MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyNDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI0MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDI0MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyNDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI0MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDI0MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyNDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI0MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIzOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIzOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIzOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIzOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIzNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIzNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIzNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIzNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIzNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIzNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIzNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIzNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIzMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIzMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIzMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIzMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIzMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMzEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIzMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIzMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMzAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIzMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIyOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMjkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIyOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIyOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMjgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIyOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIyNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMjcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIyNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIyNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMjYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIyNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIyNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMjUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIyNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIyNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMjQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIyNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIyMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMjMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIyMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIyMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMjIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIyMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIyMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMjEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIyMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIyMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMjAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIyMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIxOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIxOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIxOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIxOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIxNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIxNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIxNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIxNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIxNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIxNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIxNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIxNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIxMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIxMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIxMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIxMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIxMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIxMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIxMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIxMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIwOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIwOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIwOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIwOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIwNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIwNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIwNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIwNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIwNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIwNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIwNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIwNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIwMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIwMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIwMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIwMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIwMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIwMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIwMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIwMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE5OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxOTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE5OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE5OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxOTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE5OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE5NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxOTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE5NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE5NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxOTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE5NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE5NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxOTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE5NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE5NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxOTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE5NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE5MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxOTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE5MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE5MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxOTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE5MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE5MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxOTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE5MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE5MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxOTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE5MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE4OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxODkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE4OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE4OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxODgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE4OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE4NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxODcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE4NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE4NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxODYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE4NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE4NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxODUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE4NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE4NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxODQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE4NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE4MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxODMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE4MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE4MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxODIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE4MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE4MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxODEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE4MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE4MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxODAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE4MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE3OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE3OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE3OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE3OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE3NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE3NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE3NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE3NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE3NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE3NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE3NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE3NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE3MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE3MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE3MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE3MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE3MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNzEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE3MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE3MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNzAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE3MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE2OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNjkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE2OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE2OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNjgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE2OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE2NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNjcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE2NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE2NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNjYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE2NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE2NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNjUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE2NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE2NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNjQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE2NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE2MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNjMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE2MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE2MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNjIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE2MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE2MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNjEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE2MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE2MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNjAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE2MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE1OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE1OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE1OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE1OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE1NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE1NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE1NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE1NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE1NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE1NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE1NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE1NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE1MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE1MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE1MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE1MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE1MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE1MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE1MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE1MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE0OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE0OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE0OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE0OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE0NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE0NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE0NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE0NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE0NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE0NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE0NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE0NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE0MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE0MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE0MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE0MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE0MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE0MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE0MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE0MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDEzOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEzOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDEzOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEzOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDEzNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEzNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDEzNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEzNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDEzNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEzNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDEzNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEzNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDEzMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEzMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDEzMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEzMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDEzMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMzEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEzMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDEzMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMzAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEzMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDEyOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMjkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEyOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDEyOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMjgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEyOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDEyNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMjcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEyNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDEyNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMjYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEyNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDEyNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMjUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEyNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDEyNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMjQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEyNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDEyMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMjMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEyMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDEyMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMjIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEyMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDEyMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMjEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEyMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDEyMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMjAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEyMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDExOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDExOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDExOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDExOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDExNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDExNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDExNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDExNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDExNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDExNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDExNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDExNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDExMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDExMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDExMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDExMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDExMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDExMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDExMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDExMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDEwOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEwOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDEwOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEwOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDEwNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEwNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDEwNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEwNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDEwNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEwNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDEwNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEwNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDEwMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEwMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDEwMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEwMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDEwMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEwMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDEwMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEwMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDk5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDk5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA5OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDk4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDk4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA5OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDk3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDk3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA5NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDk2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDk2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA5NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDk1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDk1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA5NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDk0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDk0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA5NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDkzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDkzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA5MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDkyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDkyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA5MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDkxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDkxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA5MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDkwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDkwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA5MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDg5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDg5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA4OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDg4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDg4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA4OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDg3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDg3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA4NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDg2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDg2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA4NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDg1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDg1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA4NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDg0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDg0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA4NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDgzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDgzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA4MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDgyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDgyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA4MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDgxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDgxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA4MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDgwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDgwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA4MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDc5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDc5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA3OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDc4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDc4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA3OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDc3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDc3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA3NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDc2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDc2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA3NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDc1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDc1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA3NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDc0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDc0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA3NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDczICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDczCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA3MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDcyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDcyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA3MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDcxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDcxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA3MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDcwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDcwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA3MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDY5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDY5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA2OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDY4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDY4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA2OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDY3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDY3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA2NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDY2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDY2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA2NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDY1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDY1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA2NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDY0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDY0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA2NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDYzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDYzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA2MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDYyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDYyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA2MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDYxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDYxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA2MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDYwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDYwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA2MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDU5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDU5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA1OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDU4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDU4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA1OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDU3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDU3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA1NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDU2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDU2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA1NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDU1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDU1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA1NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDU0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDU0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA1NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDUzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDUzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA1MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDUyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDUyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA1MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDUxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDUxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA1MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDUwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDUwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA1MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDQ5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDQ5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA0OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDQ4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDQ4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA0OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDQ3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDQ3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA0NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDQ2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDQ2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA0NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDQ1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDQ1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA0NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDQ0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDQ0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA0NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDQzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDQzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA0MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDQyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDQyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA0MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDQxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDQxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA0MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDQwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDQwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA0MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDM5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDM5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAzOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDM4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDM4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAzOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDM3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDM3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAzNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDM2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDM2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAzNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDM1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDM1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAzNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDM0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDM0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAzNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDMzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDMzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAzMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDMyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDMyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAzMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDMxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDMxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAzMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDMwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDMwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAzMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDI5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDI5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDI4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDI4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDI3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDI3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDI2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDI2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDI1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDI1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDI0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDI0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDE0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDEzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDEzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDEyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDEyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDExICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDExCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDEwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDEwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIDw9IDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9yZXZlcnNlMy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvcmV2ZXJzZTMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzgxMGE0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9yZXZlcnNlMy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjk2ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyNTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjU2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyNTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyNTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjU1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyNTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyNTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjU0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyNTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyNTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjUzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyNTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyNTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjUyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyNTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyNTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjUxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyNTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyNTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjUwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyNTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyNDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjQ5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyNDkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyNDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjQ4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyNDgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyNDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjQ3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyNDcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyNDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjQ2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyNDYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyNDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjQ1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyNDUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyNDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjQ0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyNDQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyNDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjQzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyNDMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyNDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjQyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyNDIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyNDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjQxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyNDEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyNDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjQwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyNDAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjM5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMzkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjM4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMzgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjM3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMzcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjM2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMzYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjM1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMzUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjM0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMzQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjMzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMzMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjMyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMzIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjMxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMzEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjMwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMzAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjI5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMjkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjI4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMjgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjI3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMjcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjI2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMjYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjI1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMjUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjI0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMjQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjIzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMjMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjIyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMjIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjIxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMjEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjIwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMjAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjE5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjE4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjE3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjE2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjE1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjE0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjEzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjEyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjExCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjEwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMDkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMDgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMDcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMDYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMDUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMDQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMDMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMDIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMDEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMDAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxOTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTk5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxOTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxOTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTk4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxOTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxOTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTk3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxOTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxOTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTk2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxOTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxOTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTk1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxOTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxOTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTk0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxOTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxOTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTkzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxOTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxOTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTkyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxOTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxOTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTkxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxOTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxOTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTkwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxOTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxODkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTg5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxODkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxODggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTg4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxODgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxODcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTg3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxODcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxODYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTg2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxODYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxODUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTg1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxODUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxODQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTg0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxODQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxODMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTgzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxODMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxODIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTgyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxODIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxODEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTgxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxODEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxODAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTgwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxODAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTc5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNzkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTc4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNzgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTc3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNzcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTc2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNzYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTc1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNzUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTc0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNzQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTczCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNzMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTcyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNzIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTcxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNzEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTcwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNzAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTY5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNjkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTY4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNjgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTY3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNjcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTY2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNjYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTY1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNjUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTY0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNjQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTYzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNjMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTYyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNjIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTYxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNjEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTYwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNjAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTU5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTU4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTU3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTU2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTU1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTU0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTUzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTUyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTUxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTUwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTQ5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNDkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTQ4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNDgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTQ3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNDcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTQ2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNDYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTQ1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNDUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTQ0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNDQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTQzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNDMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTQyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNDIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTQxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNDEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTQwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNDAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTM5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMzkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTM4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMzgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTM3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMzcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTM2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMzYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTM1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMzUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTM0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMzQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTMzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMzMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTMyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMzIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTMxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMzEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTMwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMzAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTI5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMjkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTI4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMjgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTI3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMjcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTI2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMjYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTI1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMjUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTI0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMjQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTIzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMjMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTIyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMjIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTIxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMjEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTIwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMjAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTE5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTE4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTE3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTE2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTE1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTE0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTEzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTEyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTExCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTEwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMDkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMDgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMDcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMDYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMDUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMDQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMDMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMDIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMDEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMDAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA5OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA5OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgOTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA5OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA5OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgOTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA5NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA5NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgOTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA5NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA5NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgOTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA5NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA5NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgOTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA5NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA5NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgOTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA5MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA5MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgOTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA5MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA5MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgOTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA5MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA5MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgOTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA5MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA5MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgOTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA4OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA4OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgODkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA4OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA4OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgODgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA4NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA4NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgODcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA4NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA4NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgODYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA4NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA4NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgODUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA4NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA4NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgODQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA4MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA4MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgODMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA4MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA4MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgODIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA4MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA4MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgODEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA4MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA4MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgODAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA3OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA3OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNzkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA3OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA3OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNzgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA3NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA3NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNzcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA3NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA3NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNzYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA3NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA3NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNzUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA3NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA3NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNzQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA3MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA3MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNzMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA3MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA3MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNzIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA3MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA3MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNzEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA3MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA3MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNzAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA2OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA2OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNjkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA2OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA2OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNjgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA2NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA2NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNjcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA2NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA2NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNjYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA2NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA2NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNjUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA2NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA2NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNjQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA2MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA2MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNjMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA2MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA2MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNjIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA2MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA2MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNjEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA2MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA2MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNjAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA1OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA1OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA1OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA1OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA1NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA1NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA1NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA1NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA1NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA1NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA1NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA1NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA1MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA1MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA1MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA1MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA1MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA1MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA1MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA1MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA0OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA0OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNDkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA0OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA0OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNDgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA0NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA0NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNDcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA0NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA0NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNDYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA0NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA0NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNDUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA0NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA0NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNDQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA0MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA0MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNDMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA0MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA0MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNDIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA0MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA0MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNDEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA0MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA0MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNDAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAzOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAzOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMzkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAzOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAzOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMzgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAzNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAzNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMzcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAzNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAzNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMzYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAzNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAzNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMzUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAzNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAzNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMzQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAzMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAzMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMzMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAzMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAzMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMzIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAzMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAzMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMzEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAzMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAzMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMzAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSA0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA8PSAwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvcmV2ZXJzZTQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL3JldmVyc2U0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTllNzczNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvcmV2ZXJzZTQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTI5NiArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjU2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDI1NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjU2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjU1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDI1NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjU1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjU0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDI1NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjU0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjUzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDI1MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjUzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjUyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDI1MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjUyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjUxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDI1MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjUxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjUwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDI1MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjUwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjQ5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDI0OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjQ5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjQ4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDI0OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjQ4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjQ3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDI0NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjQ3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjQ2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDI0NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjQ2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjQ1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDI0NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjQ1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjQ0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDI0NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjQ0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjQzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDI0MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjQzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjQyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDI0MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjQyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjQxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDI0MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjQxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjQwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDI0MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjQwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjM5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIzOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjM5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjM4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIzOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjM4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjM3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIzNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjM3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjM2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIzNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjM2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjM1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIzNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjM1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjM0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIzNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjM0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjMzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIzMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjMzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjMyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIzMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjMyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjMxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIzMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjMxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjMwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIzMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjMwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjI5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIyOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjI5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjI4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIyOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjI4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjI3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIyNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjI3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjI2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIyNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjI2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjI1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIyNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjI1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjI0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIyNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjI0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjIzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIyMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjIzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjIyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIyMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjIyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjIxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIyMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjIxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjIwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIyMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjIwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjE5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIxOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjE5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjE4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIxOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjE4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjE3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIxNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjE3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjE2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIxNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjE2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjE1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIxNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjE1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjE0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIxNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjE0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjEzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIxMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjEzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjEyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIxMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjEyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjExICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIxMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjExCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjEwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIxMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjEwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjA5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIwOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjA5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjA4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIwOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjA4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjA3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIwNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjA3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjA2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIwNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjA2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjA1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIwNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjA1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjA0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIwNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjA0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjAzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIwMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjAzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjAyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIwMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjAyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjAxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIwMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjAxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjAwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIwMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjAwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTk5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE5OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTk5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTk4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE5OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTk4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTk3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE5NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTk3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTk2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE5NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTk2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTk1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE5NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTk1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTk0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE5NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTk0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTkzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE5MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTkzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTkyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE5MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTkyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTkxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE5MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTkxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTkwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE5MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTkwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTg5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE4OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTg5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTg4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE4OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTg4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTg3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE4NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTg3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTg2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE4NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTg2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTg1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE4NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTg1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTg0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE4NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTg0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTgzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE4MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTgzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTgyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE4MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTgyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTgxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE4MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTgxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTgwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE4MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTgwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTc5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE3OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTc5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTc4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE3OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTc4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTc3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE3NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTc3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTc2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE3NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTc2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTc1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE3NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTc1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTc0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE3NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTc0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTczICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE3MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTczCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTcyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE3MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTcyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTcxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE3MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTcxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTcwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE3MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTcwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTY5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE2OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTY5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTY4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE2OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTY4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTY3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE2NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTY3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTY2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE2NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTY2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTY1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE2NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTY1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTY0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE2NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTY0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTYzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE2MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTYzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTYyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE2MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTYyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTYxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE2MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTYxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTYwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE2MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTYwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTU5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE1OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTU5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTU4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE1OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTU4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTU3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE1NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTU3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTU2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE1NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTU2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTU1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE1NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTU1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTU0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE1NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTU0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTUzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE1MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTUzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTUyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE1MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTUyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTUxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE1MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTUxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTUwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE1MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTUwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTQ5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE0OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTQ5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTQ4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE0OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTQ4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTQ3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE0NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTQ3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTQ2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE0NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTQ2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTQ1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE0NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTQ1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTQ0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE0NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTQ0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTQzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE0MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTQzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTQyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE0MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTQyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTQxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE0MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTQxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTQwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE0MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTQwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTM5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDEzOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTM5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTM4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDEzOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTM4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTM3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDEzNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTM3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTM2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDEzNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTM2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTM1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDEzNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTM1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTM0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDEzNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTM0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTMzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDEzMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTMzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTMyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDEzMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTMyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTMxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDEzMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTMxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTMwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDEzMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTMwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTI5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDEyOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTI5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTI4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDEyOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTI4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTI3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDEyNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTI3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTI2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDEyNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTI2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTI1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDEyNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTI1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTI0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDEyNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTI0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTIzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDEyMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTIzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTIyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDEyMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTIyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTIxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDEyMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTIxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTIwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDEyMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTIwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTE5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDExOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTE5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTE4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDExOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTE4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTE3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDExNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTE3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTE2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDExNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTE2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTE1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDExNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTE1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTE0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDExNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTE0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTEzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDExMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTEzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTEyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDExMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTEyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTExICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDExMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTExCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTEwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDExMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTEwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTA5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDEwOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTA5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTA4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDEwOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTA4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTA3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDEwNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTA3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTA2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDEwNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTA2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTA1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDEwNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTA1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTA0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDEwNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTA0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTAzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDEwMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTAzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTAyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDEwMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTAyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTAxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDEwMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTAxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTAwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDEwMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTAwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gOTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gOTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDk5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gOTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gOTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDk4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gOTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gOTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDk3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gOTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gOTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDk2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gOTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gOTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDk1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gOTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gOTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDk0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gOTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gOTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDkzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gOTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gOTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDkyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gOTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gOTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDkxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gOTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gOTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDkwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gODkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gODkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDg5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gODggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gODgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDg4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gODcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gODcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDg3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gODYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gODYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDg2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gODUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gODUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDg1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gODQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gODQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDg0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gODMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gODMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDgzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gODIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gODIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDgyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gODEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gODEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDgxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gODAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gODAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDgwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDc5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDc4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDc3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDc2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDc1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDc0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDczCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDcyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNzEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDcxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNzAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDcwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNjkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDY5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNjgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDY4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNjcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDY3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNjYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDY2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNjUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDY1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNjQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDY0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNjMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDYzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNjIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDYyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNjEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDYxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNjAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDYwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDU5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDU4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDU3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDU2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDU1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDU0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDUzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDUyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDUxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDUwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDQ5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDQ4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDQ3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDQ2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDQ1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDQ0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDQzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDQyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDQxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDQwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDM5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDM4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDM3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDM2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDM1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDM0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDMzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDMyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMzEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDMxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMzAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDMwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDExCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPD0gMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL3JldmVyc2U1LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9yZXZlcnNlNS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzYmViZDcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL3JldmVyc2U1LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyOTYgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDI1NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyNTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI1NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDI1NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyNTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI1NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDI1NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyNTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI1NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDI1MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyNTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI1MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDI1MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyNTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI1MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDI1MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyNTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI1MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDI1MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyNTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI1MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDI0OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyNDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI0OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDI0OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyNDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI0OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDI0NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyNDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI0NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDI0NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyNDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI0NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDI0NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyNDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI0NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDI0NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyNDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI0NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDI0MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyNDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI0MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDI0MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyNDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI0MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDI0MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyNDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI0MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDI0MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyNDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI0MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIzOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIzOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIzOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIzOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIzNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIzNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIzNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIzNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIzNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIzNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIzNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIzNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIzMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIzMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIzMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIzMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIzMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMzEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIzMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIzMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMzAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIzMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIyOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMjkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIyOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIyOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMjgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIyOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIyNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMjcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIyNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIyNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMjYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIyNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIyNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMjUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIyNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIyNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMjQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIyNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIyMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMjMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIyMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIyMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMjIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIyMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIyMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMjEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIyMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIyMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMjAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIyMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIxOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIxOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIxOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIxOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIxNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIxNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIxNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIxNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIxNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIxNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIxNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIxNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIxMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIxMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIxMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIxMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIxMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIxMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIxMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIxMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIwOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIwOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIwOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIwOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIwNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIwNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIwNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIwNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIwNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIwNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIwNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIwNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIwMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIwMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIwMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIwMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIwMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIwMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIwMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIwMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE5OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxOTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE5OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE5OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxOTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE5OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE5NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxOTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE5NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE5NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxOTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE5NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE5NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxOTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE5NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE5NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxOTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE5NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE5MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxOTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE5MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE5MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxOTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE5MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE5MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxOTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE5MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE5MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxOTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE5MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE4OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxODkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE4OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE4OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxODgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE4OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE4NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxODcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE4NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE4NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxODYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE4NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE4NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxODUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE4NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE4NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxODQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE4NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE4MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxODMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE4MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE4MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxODIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE4MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE4MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxODEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE4MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE4MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxODAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE4MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE3OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE3OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE3OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE3OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE3NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE3NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE3NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE3NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE3NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE3NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE3NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE3NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE3MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE3MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE3MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE3MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE3MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNzEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE3MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE3MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNzAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE3MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE2OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNjkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE2OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE2OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNjgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE2OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE2NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNjcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE2NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE2NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNjYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE2NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE2NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNjUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE2NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE2NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNjQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE2NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE2MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNjMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE2MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE2MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNjIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE2MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE2MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNjEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE2MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE2MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNjAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE2MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE1OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE1OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE1OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE1OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE1NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE1NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE1NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE1NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE1NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE1NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE1NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE1NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE1MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE1MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE1MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE1MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE1MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE1MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE1MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE1MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE0OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE0OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE0OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE0OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE0NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE0NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE0NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE0NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE0NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE0NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE0NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE0NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE0MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE0MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE0MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE0MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE0MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE0MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE0MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE0MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDEzOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEzOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDEzOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEzOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDEzNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEzNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDEzNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEzNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDEzNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEzNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDEzNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEzNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDEzMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEzMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDEzMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEzMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDEzMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMzEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEzMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDEzMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMzAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEzMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDEyOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMjkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEyOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDEyOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMjgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEyOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDEyNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMjcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEyNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDEyNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMjYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEyNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDEyNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMjUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEyNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDEyNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMjQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEyNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDEyMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMjMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEyMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDEyMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMjIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEyMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDEyMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMjEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEyMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDEyMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMjAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEyMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDExOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDExOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDExOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDExOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDExNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDExNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDExNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDExNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDExNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDExNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDExNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDExNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDExMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDExMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDExMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDExMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDExMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDExMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDExMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDExMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDEwOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEwOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDEwOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEwOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDEwNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEwNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDEwNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEwNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDEwNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEwNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDEwNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEwNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDEwMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEwMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDEwMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEwMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDEwMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEwMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDEwMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEwMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDk5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDk5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA5OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDk4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDk4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA5OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDk3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDk3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA5NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDk2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDk2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA5NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDk1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDk1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA5NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDk0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDk0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA5NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDkzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDkzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA5MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDkyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDkyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA5MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDkxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDkxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA5MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDkwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDkwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA5MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDg5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDg5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA4OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDg4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDg4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA4OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDg3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDg3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA4NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDg2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDg2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA4NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDg1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDg1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA4NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDg0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDg0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA4NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDgzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDgzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA4MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDgyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDgyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA4MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDgxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDgxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA4MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDgwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDgwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA4MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDc5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDc5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA3OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDc4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDc4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA3OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDc3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDc3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA3NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDc2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDc2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA3NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDc1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDc1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA3NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDc0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDc0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA3NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDczICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDczCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA3MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDcyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDcyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA3MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDcxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDcxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA3MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDcwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDcwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA3MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDY5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDY5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA2OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDY4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDY4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA2OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDY3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDY3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA2NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDY2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDY2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA2NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDY1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDY1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA2NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDY0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDY0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA2NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDYzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDYzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA2MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDYyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDYyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA2MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDYxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDYxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA2MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDYwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDYwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA2MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDU5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDU5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA1OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDU4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDU4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA1OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDU3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDU3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA1NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDU2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDU2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA1NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDU1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDU1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA1NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDU0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDU0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA1NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDUzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDUzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA1MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDUyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDUyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA1MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDUxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDUxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA1MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDUwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDUwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA1MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDQ5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDQ5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA0OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDQ4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDQ4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA0OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDQ3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDQ3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA0NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDQ2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDQ2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA0NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDQ1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDQ1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA0NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDQ0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDQ0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA0NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDQzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDQzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA0MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDQyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDQyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA0MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDQxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDQxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA0MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDQwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDQwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA0MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDM5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDM5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAzOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDM4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDM4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAzOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDM3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDM3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAzNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDM2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDM2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAzNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDM1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDM1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAzNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDM0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDM0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAzNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDMzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDMzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAzMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDMyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDMyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAzMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDMxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDMxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAzMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDMwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDMwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAzMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDI5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDI5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDI4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDI4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDI3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDI3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDI2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDI2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDI1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDI1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDI0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDI0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDE0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDEzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDEzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDEyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDEyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDExICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDExCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDEwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDEwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IDw9IDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvbG9jYWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9sb2NhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlYzE0YTIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9sb2NhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MTIgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWYgIWRlZmluZWQoTkROQk9PU1RfUFBfTE9DQUxfTElNSVRTKQotIyAgICBlcnJvciBORE5CT09TVF9QUF9FUlJPUjogIGxvY2FsIGl0ZXJhdGlvbiBib3VuZGFyaWVzIGFyZSBub3QgZGVmaW5lZAotIyBlbGlmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKQotIyAgICBlcnJvciBORE5CT09TVF9QUF9FUlJPUjogIGxvY2FsIGl0ZXJhdGlvbiB0YXJnZXQgbWFjcm8gaXMgbm90IGRlZmluZWQKLSMgZWxzZQotIyAgICBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMCwgTkROQk9PU1RfUFBfTE9DQUxfTElNSVRTKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0YgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAxLCBORE5CT09TVF9QUF9MT0NBTF9MSU1JVFMpCi0jICAgIGVsc2UKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9WQUxVRSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDAsIE5ETkJPT1NUX1BQX0xPQ0FMX0xJTUlUUykKLSMgICAgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL3N0YXJ0LmhwcD4KLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9WQUxVRSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDEsIE5ETkJPT1NUX1BQX0xPQ0FMX0xJTUlUUykKLSMgICAgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2ZpbmlzaC5ocHA+Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfUyBORE5CT09TVF9QUF9MT0NBTF9TRSgpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRiBORE5CT09TVF9QUF9MT0NBTF9GRSgpCi0jICAgIGVuZGlmCi0jIGVuZGlmCi0jCi0jIGlmIChORE5CT09TVF9QUF9MT0NBTF9TKSA+IChORE5CT09TVF9QUF9MT0NBTF9GKQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ybG9jYWwuaHBwPgotIyBlbHNlCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg0KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDUpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg3KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg3KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDgpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDgpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoOSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oOSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTEpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDExKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDEyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTQpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE0KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTYpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTcpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE3KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE4KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxOCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxOSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTkpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjApCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIwKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIxKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjMpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIzKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDI0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyNSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjYpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI2KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDI3KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyOCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjgpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjkpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI5KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDMwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygzMCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygzMSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMzEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMzIpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDMyKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDMzKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygzMykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygzNCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMzQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMzUpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDM1KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDM2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygzNikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygzNykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMzcpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMzgpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDM4KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDM5KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygzOSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg0MCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNDApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNDEpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDQxKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDQyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg0MikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg0MykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNDMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNDQpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDQ0KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDQ1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg0NSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg0NikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNDYpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNDcpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDQ3KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDQ4KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg0OCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg0OSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNDkpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNTApCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDUwKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDUxKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg1MSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg1MikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNTIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNTMpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDUzKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDU0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg1NCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg1NSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNTUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNTYpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDU2KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDU3KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg1NykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg1OCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNTgpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNTkpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDU5KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDYwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg2MCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg2MSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNjEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNjIpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDYyKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDYzKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg2MykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg2NCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNjQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNjUpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDY1KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDY2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg2NikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg2NykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNjcpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNjgpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDY4KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDY5KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg2OSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg3MCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNzApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNzEpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDcxKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDcyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg3MikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg3MykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNzMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNzQpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDc0KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDc1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg3NSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg3NikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNzYpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNzcpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDc3KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDc4KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg3OCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg3OSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNzkpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoODApCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDgwKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDgxKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg4MSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg4MikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oODIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoODMpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDgzKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDg0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg4NCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg4NSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oODUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoODYpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDg2KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDg3KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg4NykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg4OCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oODgpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoODkpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDg5KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDkwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg5MCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg5MSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oOTEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoOTIpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDkyKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDkzKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg5MykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg5NCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oOTQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoOTUpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDk1KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDk2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg5NikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg5NykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oOTcpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoOTgpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDk4KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDk5KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg5OSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMDApCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEwMCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMDEpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEwMSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMDIpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEwMikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMDMpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEwMykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMDQpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEwNCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMDUpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEwNSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMDYpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEwNikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMDcpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEwNykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMDgpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEwOCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMDkpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEwOSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMTApCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDExMCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMTEpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDExMSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMTIpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDExMikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMTMpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDExMykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMTQpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDExNCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMTUpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDExNSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMTYpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDExNikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMTcpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDExNykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMTgpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDExOCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMTkpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDExOSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMjApCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEyMCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMjEpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEyMSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMjIpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEyMikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMjMpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEyMykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMjQpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEyNCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMjUpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEyNSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMjYpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEyNikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMjcpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEyNykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMjgpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEyOCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMjkpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEyOSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMzApCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEzMCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMzEpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEzMSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMzIpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEzMikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMzMpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEzMykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMzQpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEzNCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMzUpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEzNSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMzYpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEzNikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMzcpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEzNykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMzgpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEzOCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMzkpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEzOSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNDApCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE0MCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNDEpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE0MSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNDIpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE0MikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNDMpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE0MykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNDQpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE0NCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNDUpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE0NSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNDYpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE0NikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNDcpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE0NykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNDgpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE0OCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNDkpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE0OSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNTApCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE1MCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNTEpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE1MSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNTIpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE1MikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNTMpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE1MykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNTQpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE1NCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNTUpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE1NSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNTYpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE1NikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNTcpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE1NykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNTgpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE1OCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNTkpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE1OSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNjApCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE2MCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNjEpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE2MSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNjIpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE2MikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNjMpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE2MykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNjQpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE2NCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNjUpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE2NSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNjYpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE2NikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNjcpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE2NykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNjgpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE2OCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNjkpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE2OSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNzApCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE3MCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNzEpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE3MSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNzIpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE3MikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNzMpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE3MykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNzQpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE3NCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNzUpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE3NSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNzYpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE3NikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNzcpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE3NykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNzgpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE3OCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNzkpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE3OSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxODApCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE4MCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxODEpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE4MSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxODIpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE4MikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxODMpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE4MykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxODQpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE4NCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxODUpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE4NSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxODYpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE4NikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxODcpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE4NykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxODgpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE4OCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxODkpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE4OSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxOTApCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE5MCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxOTEpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE5MSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxOTIpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE5MikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxOTMpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE5MykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxOTQpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE5NCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxOTUpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE5NSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxOTYpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE5NikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxOTcpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE5NykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxOTgpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE5OCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxOTkpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE5OSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMDApCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIwMCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMDEpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIwMSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMDIpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIwMikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMDMpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIwMykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMDQpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIwNCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMDUpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIwNSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMDYpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIwNikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMDcpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIwNykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMDgpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIwOCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMDkpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIwOSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMTApCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIxMCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMTEpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIxMSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMTIpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIxMikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMTMpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIxMykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMTQpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIxNCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMTUpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIxNSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMTYpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIxNikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMTcpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIxNykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMTgpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIxOCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMTkpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIxOSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMjApCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIyMCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMjEpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIyMSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMjIpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIyMikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMjMpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIyMykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMjQpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIyNCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMjUpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIyNSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMjYpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIyNikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMjcpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIyNykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMjgpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIyOCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMjkpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIyOSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMzApCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIzMCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMzEpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIzMSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMzIpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIzMikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMzMpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIzMykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMzQpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIzNCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMzUpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIzNSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMzYpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIzNikKLSMgICAgZW5kaWYKLQotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIzNykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjM3KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIzOCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjM4KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIzOSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjM5KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDI0MCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjQwKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDI0MSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjQxKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDI0MikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjQyKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDI0MykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjQzKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDI0NCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjQ0KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDI0NSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjQ1KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDI0NikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjQ2KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDI0NykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjQ3KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDI0OCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjQ4KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDI0OSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjQ5KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDI1MCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjUwKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDI1MSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjUxKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDI1MikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjUyKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDI1MykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjUzKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDI1NCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjU0KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDI1NSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjU1KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDI1NikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjU2KQotIyAgICBlbmRpZgotIyBlbmRpZgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9MT0NBTF9MSU1JVFMKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfTE9DQUxfUwotIyB1bmRlZiBORE5CT09TVF9QUF9MT0NBTF9GCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL3Jsb2NhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL3Jsb2NhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkNjAxYTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ybG9jYWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzgyICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjU2KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI1NikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyNTUpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjU1KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDI1NCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNTQpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjUzKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI1MykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyNTIpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjUyKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDI1MSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNTEpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjUwKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI1MCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyNDkpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjQ5KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDI0OCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNDgpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjQ3KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI0NykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyNDYpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjQ2KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDI0NSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNDUpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjQ0KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI0NCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyNDMpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjQzKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDI0MikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNDIpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjQxKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI0MSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyNDApCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjQwKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIzOSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMzkpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjM4KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIzOCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMzcpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjM3KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIzNikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMzYpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjM1KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIzNSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMzQpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjM0KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIzMykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMzMpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjMyKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIzMikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMzEpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjMxKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIzMCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMzApCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjI5KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIyOSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMjgpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjI4KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIyNykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMjcpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjI2KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIyNikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMjUpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjI1KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIyNCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMjQpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjIzKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIyMykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMjIpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjIyKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIyMSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMjEpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjIwKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIyMCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMTkpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjE5KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIxOCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMTgpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjE3KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIxNykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMTYpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjE2KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIxNSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMTUpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjE0KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIxNCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMTMpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjEzKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIxMikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMTIpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjExKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIxMSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMTApCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjEwKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIwOSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMDkpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjA4KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIwOCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMDcpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjA3KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIwNikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMDYpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjA1KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIwNSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMDQpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjA0KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIwMykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMDMpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjAyKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIwMikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMDEpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjAxKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIwMCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMDApCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTk5KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE5OSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxOTgpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTk4KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE5NykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxOTcpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTk2KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE5NikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxOTUpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTk1KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE5NCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxOTQpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTkzKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE5MykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxOTIpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTkyKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE5MSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxOTEpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTkwKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE5MCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxODkpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTg5KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE4OCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxODgpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTg3KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE4NykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxODYpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTg2KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE4NSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxODUpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTg0KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE4NCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxODMpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTgzKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE4MikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxODIpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTgxKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE4MSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxODApCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTgwKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE3OSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNzkpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTc4KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE3OCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNzcpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTc3KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE3NikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNzYpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTc1KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE3NSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNzQpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTc0KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE3MykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNzMpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTcyKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE3MikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNzEpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTcxKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE3MCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNzApCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTY5KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE2OSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNjgpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTY4KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE2NykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNjcpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTY2KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE2NikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNjUpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTY1KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE2NCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNjQpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTYzKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE2MykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNjIpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTYyKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE2MSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNjEpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTYwKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE2MCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNTkpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTU5KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE1OCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNTgpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTU3KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE1NykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNTYpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTU2KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE1NSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNTUpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTU0KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE1NCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNTMpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTUzKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE1MikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNTIpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTUxKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE1MSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNTApCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTUwKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE0OSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNDkpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTQ4KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE0OCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNDcpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTQ3KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE0NikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNDYpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTQ1KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE0NSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNDQpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTQ0KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE0MykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNDMpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTQyKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE0MikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNDEpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTQxKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE0MCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNDApCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTM5KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEzOSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMzgpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTM4KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEzNykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMzcpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTM2KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEzNikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMzUpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTM1KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEzNCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMzQpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTMzKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEzMykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMzIpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTMyKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEzMSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMzEpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTMwKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEzMCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMjkpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTI5KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEyOCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMjgpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTI3KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEyNykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMjYpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTI2KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEyNSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMjUpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTI0KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEyNCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMjMpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTIzKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEyMikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMjIpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTIxKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEyMSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMjApCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTIwKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDExOSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMTkpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTE4KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDExOCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMTcpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTE3KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDExNikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMTYpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTE1KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDExNSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMTQpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTE0KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDExMykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMTMpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTEyKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDExMikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMTEpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTExKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDExMCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMTApCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTA5KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEwOSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMDgpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTA4KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEwNykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMDcpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTA2KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEwNikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMDUpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTA1KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEwNCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMDQpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTAzKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEwMykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMDIpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTAyKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEwMSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMDEpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTAwKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEwMCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig5OSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg5OSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig5OCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg5OCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig5NykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg5NykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig5NikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg5NikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig5NSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg5NSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig5NCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg5NCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig5MykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg5MykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig5MikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg5MikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig5MSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg5MSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig5MCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg5MCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig4OSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg4OSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig4OCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg4OCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig4NykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg4NykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig4NikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg4NikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig4NSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg4NSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig4NCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg4NCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig4MykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg4MykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig4MikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg4MikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig4MSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg4MSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig4MCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg4MCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig3OSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg3OSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig3OCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg3OCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig3NykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg3NykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig3NikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg3NikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig3NSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg3NSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig3NCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg3NCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig3MykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg3MykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig3MikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg3MikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig3MSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg3MSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig3MCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg3MCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig2OSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg2OSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig2OCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg2OCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig2NykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg2NykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig2NikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg2NikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig2NSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg2NSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig2NCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg2NCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig2MykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg2MykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig2MikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg2MikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig2MSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg2MSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig2MCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg2MCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig1OSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg1OSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig1OCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg1OCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig1NykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg1NykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig1NikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg1NikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig1NSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg1NSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig1NCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg1NCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig1MykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg1MykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig1MikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg1MikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig1MSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg1MSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig1MCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg1MCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig0OSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg0OSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig0OCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg0OCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig0NykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg0NykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig0NikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg0NikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig0NSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg0NSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig0NCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg0NCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig0MykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg0MykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig0MikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg0MikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig0MSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg0MSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig0MCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg0MCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigzOSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygzOSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigzOCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygzOCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigzNykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygzNykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigzNikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygzNikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigzNSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygzNSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigzNCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygzNCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigzMykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygzMykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigzMikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygzMikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigzMSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygzMSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigzMCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygzMCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyOSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyOSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyOCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyOCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyNykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyNikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyNSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyNCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxOSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxOSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxOCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxOCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig5KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDkpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoOCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg4KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDcpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig2KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDYpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg1KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDQpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigzKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDMpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigwKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDApCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL3NlbGYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9zZWxmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTg0MGM5OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL3NlbGYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWYgIWRlZmluZWQoTkROQk9PU1RfUFBfSU5ESVJFQ1RfU0VMRikKLSMgICAgZXJyb3IgTkROQk9PU1RfUFBfRVJST1I6ICBubyBpbmRpcmVjdCBmaWxlIHRvIGluY2x1ZGUKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lTX1NFTEZJU0ggMQotIwotIyBpbmNsdWRlIE5ETkJPT1NUX1BQX0lORElSRUNUX1NFTEYKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVNfU0VMRklTSAotIyB1bmRlZiBORE5CT09TVF9QUF9JTkRJUkVDVF9TRUxGCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL3N0YXJ0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvc3RhcnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZmFmMDMyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvc3RhcnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3NoYXJlZC5ocHA+Ci0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0xPQ0FMX1NFCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzEKLSMgdW5kZWYgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMgotIyB1bmRlZiBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8zCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzQKLSMgdW5kZWYgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfNQotIyB1bmRlZiBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF82Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzcKLSMgdW5kZWYgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfOAotIyB1bmRlZiBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF85Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzEwCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzMgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzMgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzMgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzMgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzMgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzMgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzMgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzMgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzMgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzMgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8yIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8yIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8yIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8yIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8yIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8yIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8yIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8yIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8yIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8yIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMSAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMSAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMSAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMSA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMSA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMSA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMSA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFKCkgTkROQk9PU1RfUFBfU0xPVF9DQ18zKE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzMsIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzIsIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0UoKSBORE5CT09TVF9QUF9TTE9UX0NDXzIoTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMiwgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0UoKSBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8xCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vaXRlcmF0ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vaXRlcmF0ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2ZTE5NDEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2l0ZXJhdGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9JVEVSQVRJT05fSVRFUkFURV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9JVEVSQVRJT05fSVRFUkFURV9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvZGVjLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvaW5jLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FycmF5L2VsZW0uaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJyYXkvc2l6ZS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9zbG90LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VsZW0uaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEggKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpIDAKLSMKLSMgLyogTkROQk9PU1RfUFBfSVRFUkFUSU9OICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT04oKSBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfSVRFUkFUSU9OXywgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkpCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlQoKSBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXywgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIKCkgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfLCBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKSkKLSMKLSMgLyogTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZMQUdTICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRkxBR1MoKSAoTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0lURVJBVElPTl9GTEFHU18sIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpKSgpKQotIwotIyAvKiBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04gKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTihpKSBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfSVRFUkFUSU9OXywgaSkKLSMKLSMgLyogTkROQk9PU1RfUFBfRlJBTUVfU1RBUlQgJiYgTkROQk9PU1RfUFBfRlJBTUVfRklOSVNIICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9GUkFNRV9TVEFSVChpKSBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXywgaSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZSQU1FX0ZJTklTSChpKSBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8sIGkpCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0ZSQU1FX0ZMQUdTICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9GUkFNRV9GTEFHUyhpKSAoTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0lURVJBVElPTl9GTEFHU18sIGkpKCkpCi0jCi0jIC8qIE5ETkJPT1NUX1BQX1JFTEFUSVZFX0lURVJBVElPTiAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVMQVRJVkVfSVRFUkFUSU9OKGkpIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9SRUxBVElWRV8sIGkpKE5ETkJPT1NUX1BQX0lURVJBVElPTl8pCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRUxBVElWRV8wKG0pIE5ETkJPT1NUX1BQX0NBVChtLCBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFTEFUSVZFXzEobSkgTkROQk9PU1RfUFBfQ0FUKG0sIE5ETkJPT1NUX1BQX0RFQyhORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRUxBVElWRV8yKG0pIE5ETkJPT1NUX1BQX0NBVChtLCBORE5CT09TVF9QUF9ERUMoTkROQk9PU1RfUFBfREVDKE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRUxBVElWRV8zKG0pIE5ETkJPT1NUX1BQX0NBVChtLCBORE5CT09TVF9QUF9ERUMoTkROQk9PU1RfUFBfREVDKE5ETkJPT1NUX1BQX0RFQyhORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFTEFUSVZFXzQobSkgTkROQk9PU1RfUFBfQ0FUKG0sIE5ETkJPT1NUX1BQX0RFQyhORE5CT09TVF9QUF9ERUMoTkROQk9PU1RfUFBfREVDKE5ETkJPT1NUX1BQX0RFQyhORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKSkpKSkpCi0jCi0jIC8qIE5ETkJPT1NUX1BQX1JFTEFUSVZFX1NUQVJUICYmIE5ETkJPT1NUX1BQX1JFTEFUSVZFX0ZJTklTSCAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVMQVRJVkVfU1RBUlQoaSkgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX1JFTEFUSVZFXywgaSkoTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFTEFUSVZFX0ZJTklTSChpKSBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfUkVMQVRJVkVfLCBpKShORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXykKLSMKLSMgLyogTkROQk9PU1RfUFBfUkVMQVRJVkVfRkxBR1MgKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFTEFUSVZFX0ZMQUdTKGkpIChORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfUkVMQVRJVkVfLCBpKShORE5CT09TVF9QUF9JVEVSQVRJT05fRkxBR1NfKSgpKQotIwotIyAvKiBORE5CT09TVF9QUF9JVEVSQVRFICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRFKCkgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0lURVJBVEVfLCBORE5CT09TVF9QUF9JTkMoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkpKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFURV8xIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL2ZvcndhcmQxLmhwcD4KLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVEVfMiA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9mb3J3YXJkMi5ocHA+Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRFXzMgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvZm9yd2FyZDMuaHBwPgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFURV80IDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL2ZvcndhcmQ0LmhwcD4KLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVEVfNSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9mb3J3YXJkNS5ocHA+Ci0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vbG9jYWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2xvY2FsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGFhYzhhZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vbG9jYWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9JVEVSQVRJT05fTE9DQUxfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfSVRFUkFUSU9OX0xPQ0FMX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L3Nsb3QuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWxlbS5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0xPQ0FMX0lURVJBVEUgKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0lURVJBVEUoKSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvbG9jYWwuaHBwPgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfQyhuKSAoTkROQk9PU1RfUFBfTE9DQUxfUykgPD0gbiAmJiAoTkROQk9PU1RfUFBfTE9DQUxfRikgPj0gbgotIyBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfUihuKSAoTkROQk9PU1RfUFBfTE9DQUxfRikgPD0gbiAmJiAoTkROQk9PU1RfUFBfTE9DQUxfUykgPj0gbgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL3NlbGYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL3NlbGYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTEyZjhlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9zZWxmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfSVRFUkFUSU9OX1NFTEZfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfSVRFUkFUSU9OX1NFTEZfSFBQCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0lOQ0xVREVfU0VMRiAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DTFVERV9TRUxGKCkgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL3NlbGYuaHBwPgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9hZHQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9hZHQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNzI1NDFjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvYWR0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqCi0jICAqIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xJU1RfQURUX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xJU1RfQURUX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZXRhaWwvaXNfYmluYXJ5LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvY29tcGwuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWF0LmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfTElTVF9DT05TICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0NPTlMoaGVhZCwgdGFpbCkgKGhlYWQsIHRhaWwpCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0xJU1RfTklMICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX05JTCBORE5CT09TVF9QUF9OSUwKLSMKLSMgLyogTkROQk9PU1RfUFBfTElTVF9GSVJTVCAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsaXN0KSBORE5CT09TVF9QUF9MSVNUX0ZJUlNUX0QobGlzdCkKLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01XQ0MoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GSVJTVF9EKGxpc3QpIE5ETkJPT1NUX1BQX0xJU1RfRklSU1RfSSBsaXN0Ci0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRklSU1RfRChsaXN0KSBORE5CT09TVF9QUF9MSVNUX0ZJUlNUX0kgIyMgbGlzdAotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GSVJTVF9JKGhlYWQsIHRhaWwpIGhlYWQKLSMKLSMgLyogTkROQk9PU1RfUFBfTElTVF9SRVNUICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX1JFU1QobGlzdCkgTkROQk9PU1RfUFBfTElTVF9SRVNUX0QobGlzdCkKLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01XQ0MoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9SRVNUX0QobGlzdCkgTkROQk9PU1RfUFBfTElTVF9SRVNUX0kgbGlzdAotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX1JFU1RfRChsaXN0KSBORE5CT09TVF9QUF9MSVNUX1JFU1RfSSAjIyBsaXN0Ci0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX1JFU1RfSShoZWFkLCB0YWlsKSB0YWlsCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyAqLwotIwotIyBpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19CQ0MoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGxpc3QpIE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OU19EKGxpc3QpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0lTX0NPTlNfRChsaXN0KSBORE5CT09TVF9QUF9MSVNUX0lTX0NPTlNfICMjIGxpc3QKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OU18oaGVhZCwgdGFpbCkgMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9JU19DT05TX05ETkJPT1NUX1BQX05JTCAwCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsaXN0KSBORE5CT09TVF9QUF9JU19CSU5BUlkobGlzdCkKLSMgZW5kaWYKLSMKLSMgLyogTkROQk9PU1RfUFBfTElTVF9JU19OSUwgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0JDQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0lTX05JTChsaXN0KSBORE5CT09TVF9QUF9DT01QTChORE5CT09TVF9QUF9JU19CSU5BUlkobGlzdCkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfSVNfTklMKGxpc3QpIE5ETkJPT1NUX1BQX0NPTVBMKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsaXN0KSkKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvYXBwZW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvYXBwZW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTRmMDE4YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2FwcGVuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MSVNUX0FQUEVORF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MSVNUX0FQUEVORF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9mb2xkX3JpZ2h0LmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfTElTVF9BUFBFTkQgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0FQUEVORChhLCBiKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFQoTkROQk9PU1RfUFBfTElTVF9BUFBFTkRfTywgYiwgYSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9BUFBFTkQoYSwgYikgTkROQk9PU1RfUFBfTElTVF9BUFBFTkRfSShhLCBiKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9BUFBFTkRfSShhLCBiKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFQoTkROQk9PU1RfUFBfTElTVF9BUFBFTkRfTywgYiwgYSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfQVBQRU5EX08oZCwgcywgeCkgKHgsIHMpCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0xJU1RfQVBQRU5EX0QgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0FQUEVORF9EKGQsIGEsIGIpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8gIyMgZChORE5CT09TVF9QUF9MSVNUX0FQUEVORF9PLCBiLCBhKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0FQUEVORF9EKGQsIGEsIGIpIE5ETkJPT1NUX1BQX0xJU1RfQVBQRU5EX0RfSShkLCBhLCBiKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9BUFBFTkRfRF9JKGQsIGEsIGIpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8gIyMgZChORE5CT09TVF9QUF9MSVNUX0FQUEVORF9PLCBiLCBhKQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9kZXRhaWwvZG1jL2ZvbGRfbGVmdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2RldGFpbC9kbWMvZm9sZF9sZWZ0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzQwODhiMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2RldGFpbC9kbWMvZm9sZF9sZWZ0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3OSArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MSVNUX0RFVEFJTF9GT0xEX0xFRlRfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfTElTVF9ERVRBSUxfRk9MRF9MRUZUX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9leHByX2lpZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2lpZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2FkdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcD4KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDI1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDI4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yOShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgzMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDMxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMzIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgzMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDM0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMzUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgzNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDM3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMzgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zOChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zOSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgzOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDQwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNDEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg0MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDQzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNDQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80NChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80NSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg0NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDQ2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNDcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80NyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80OCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg0OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDQ5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNTAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81MChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81MSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg1MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDUyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNTMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81MyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg1NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDU1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNTYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg1NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDU4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNTksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81OShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg2MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDYxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNjIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg2MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDY0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNjUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg2NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDY3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNjgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82OChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82OSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg2OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDcwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNzEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg3MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzczLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDczLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNzQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83NChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83NSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg3NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDc2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNzcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83NyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83OCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg3OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDc5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoODAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84MChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84MSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg4MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDgyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoODMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84MyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg4NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDg1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoODYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg4NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDg4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoODksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84OShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg5MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDkxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoOTIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg5MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDk0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoOTUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg5NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDk3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoOTgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85OChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85OSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg5OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMDAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEwMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTAyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMDMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEwNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTA1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMDYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEwNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTA4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwOSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMDksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDExMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTExLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTExKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMTIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDExMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTE0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMTUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDExNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTE3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExOCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMTgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDExOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExOShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTIwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMjEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEyMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTIzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMjQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEyNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTI2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMjcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEyOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyOChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTI5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMzAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEzMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTMyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMzMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEzNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTM1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMzYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEzNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTM4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzOSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMzksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE0MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTQxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNDIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE0MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTQ0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNDUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE0NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTQ3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0OCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNDgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE0OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0OShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTUwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNTEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE1MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTUzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNTQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE1NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTU2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNTcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE1OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1OChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTU5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNjAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE2MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTYyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNjMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE2NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTY1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNjYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE2NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTY4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2OSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNjksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE3MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTcxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNzIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTczLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE3MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTc0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNzUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE3NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTc3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3OCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNzgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE3OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3OShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTgwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxODEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE4MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTgzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxODQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE4NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTg2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxODcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE4OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4OChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTg5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxOTAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE5MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTkyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxOTMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE5NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTk1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxOTYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE5NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTk4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5OSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxOTksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIwMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjAxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMDIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIwMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjA0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMDUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIwNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjA3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwOCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMDgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIwOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwOShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjEwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMTEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIxMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjEzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMTQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIxNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjE2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMTcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIxOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxOChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjE5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMjAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIyMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjIyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMjMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIyNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjI1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMjYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIyNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjI4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyOSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMjksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIzMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjMxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMzIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIzMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjM0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMzUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIzNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjM3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzOCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMzgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIzOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzOShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjQwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyNDEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDI0MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjQzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyNDQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDI0NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjQ2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyNDcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDI0OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0OChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjQ5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyNTAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDI1MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjUyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyNTMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDI1NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjU1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyNTYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDI1NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZGV0YWlsL2VkZy9mb2xkX2xlZnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9kZXRhaWwvZWRnL2ZvbGRfbGVmdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzNTYxODYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9kZXRhaWwvZWRnL2ZvbGRfbGVmdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MzYgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfTElTVF9ERVRBSUxfRURHX0ZPTERfTEVGVF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MSVNUX0RFVEFJTF9FREdfRk9MRF9MRUZUX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9leHByX2lpZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2lpZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2FkdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lYXQuaHBwPgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMThfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNThfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOThfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwM19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwOV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExOF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyN19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzM19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzOV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0Ml9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0OF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1N19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2M19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2Nl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2OV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3Ml9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTczX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3OF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4N19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5M19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5Nl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOThfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5OV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwOF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjExKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxN19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyM19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyOV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzOF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0N19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1M19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1Nl9EKG8sIHMsIGwpCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xN19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMThfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yM19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yOV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDMwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgzMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMzIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDMzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgzNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMzUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDM2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgzNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMzgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zOF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDM5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg0MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNDEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDQyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg0MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNDQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDQ1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg0NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNDcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDQ4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDhfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg0OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNTAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDUxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg1MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNTMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDU0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg1NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNTYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDU3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg1OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNTksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDYwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg2MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNjIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDYzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg2NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNjUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDY2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg2NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNjgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDY5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg3MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNzEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDcyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg3MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzczX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNzQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDc1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg3NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNzcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDc4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzhfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg3OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoODAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDgxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg4MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoODMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDg0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg4NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoODYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDg3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg4OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoODksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDkwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg5MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoOTIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDkzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg5NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoOTUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDk2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg5NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoOTgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDk5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTAwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEwMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMDIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTAzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEwNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMDUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTA2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEwNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwN19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMDgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDhfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTA5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDExMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMTEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTEyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDExMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExM19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMTQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTE1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDExNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMTcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTE4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDExOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExOV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMjAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTIxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEyMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMjMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTI0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEyNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMjYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTI3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEyOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyOF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMjksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTMwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEzMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMzIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTMzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEzNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMzUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTM2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEzNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzN19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMzgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzhfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTM5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE0MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNDEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTQyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE0MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNDQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTQ1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE0NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNDcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTQ4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE0OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNTAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTUxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE1MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNTMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTU0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE1NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNTYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTU3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE1OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNTksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTYwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE2MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNjIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTYzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE2NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNjUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTY2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE2NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNjgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjhfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTY5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE3MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNzEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTcyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTczLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE3MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNzQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTc1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE3NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNzcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTc4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE3OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxODAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTgxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE4MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxODMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTg0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE4NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxODYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTg3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE4OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxODksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTkwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE5MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxOTIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTkzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE5NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxOTUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTk2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE5NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxOTgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOThfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTk5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIwMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMDEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjAyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIwMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwM19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMDQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjA1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIwNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMDcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjA4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIwOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwOV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMTAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjExLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjExX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIxMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMTMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjE0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIxNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMTYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjE3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIxOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxOF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMTksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjIwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIyMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMjIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjIzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIyNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMjUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjI2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIyNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyN19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMjgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjhfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjI5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIzMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMzEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjMyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIzMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzM19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMzQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjM1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIzNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMzcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjM4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIzOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzOV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNDAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjQxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI0MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNDMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjQ0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI0NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNDYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjQ3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI0OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNDksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjUwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI1MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNTIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjUzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI1NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNTUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjU2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI1NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZGV0YWlsL2VkZy9mb2xkX3JpZ2h0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZGV0YWlsL2VkZy9mb2xkX3JpZ2h0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTY3NzZhZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2RldGFpbC9lZGcvZm9sZF9yaWdodC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3OTQgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfTElTVF9ERVRBSUxfRURHX0ZPTERfUklHSFRfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfTElTVF9ERVRBSUxfRURHX0ZPTERfUklHSFRfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2lpZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2FkdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lYXQuaHBwPgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xM19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMThfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yOF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzMxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zMV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzMyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zNF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zN19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80MF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80M19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80Nl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80OV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzUwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzUyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81Ml9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzUzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81NV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81OF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzYxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82MV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzYyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82NF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82N19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzcwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83MF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzcxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzczKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83M19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83Nl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83OV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzgwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzgyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84Ml9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzgzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84NV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84OF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzkxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85MV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzkyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85NF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85N19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTAwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwMV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTAyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTAzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwNF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTA1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTA2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwN19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTA4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTA5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExMF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTExKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTEyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExM19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTE0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTE1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExNl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTE3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTE4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExOV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTIwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTIxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyMl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTIzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTI0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyNV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTI2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTI3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyOF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTI5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTMwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzMV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTMyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTMzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzNF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTM1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTM2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzN19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTM4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTM5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0MF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0M19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQ0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQ1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0Nl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQ3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQ4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0OV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTUwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTUxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1Ml9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTUzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTU0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1NV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTU2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTU3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1OF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTU5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTYwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2MV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTYyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTYzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2NF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTY1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTY2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2N19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTY4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTY5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3MF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTcxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTcyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3M19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTc0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTc1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3Nl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTc3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTc4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3OV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTgwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTgxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4Ml9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTgzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTg0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4NV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTg2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTg3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4OF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTg5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTkwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5MV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTkyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTkzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5NF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTk1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTk2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5N19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTk4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOThfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTk5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwMF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjAxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjAyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwM19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjA0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjA1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwNl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjA3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjA4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwOV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjEwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjExX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxMl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjEzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjE0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxNV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjE2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjE3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxOF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjE5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjIwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyMV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjIyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjIzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyNF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjI1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjI2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyN19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjI4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjI5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzMF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjMxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjMyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzM19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjM0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjM1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzNl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjM3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjM4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzOV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0Ml9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQ0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0NV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQ2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQ3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0OF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQ5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjUwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1MV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjUyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjUzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1NF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjU1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjU2X0QobywgcywgbCkKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzMsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzUsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzYsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzcsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoOCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzgsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoOSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzksIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTAsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTEsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTIsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTMsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTQsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTUsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTYsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTcsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTgsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTksIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjAsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjEsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjIsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjMsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjQsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjUsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjYsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjcsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjgsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yOCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjksIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yOSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMzAsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zMCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzMwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMzEsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zMSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzMxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMzIsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zMiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzMyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMzMsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zMywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzMzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMzQsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zNCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMzUsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zNSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMzYsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zNiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMzcsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zNywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMzgsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zOCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMzksIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zOSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNDAsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80MCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNDEsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80MSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNDIsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80MiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNDMsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80MywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNDQsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80NCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNDUsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80NSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNDYsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80NiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNDcsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80NywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNDgsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80OCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNDksIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80OSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNTAsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81MCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzUwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNTEsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81MSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzUxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNTIsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81MiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzUyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNTMsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81MywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzUzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNTQsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81NCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNTUsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81NSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNTYsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81NiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNTcsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81NywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNTgsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81OCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNTksIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81OSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNjAsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82MCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzYwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNjEsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82MSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzYxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNjIsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82MiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzYyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNjMsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82MywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzYzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNjQsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82NCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNjUsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82NSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNjYsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82NiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNjcsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82NywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNjgsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82OCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNjksIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82OSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNzAsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83MCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzcwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNzEsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83MSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzcxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNzIsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83MiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzcyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNzMsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83MywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzczX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNzQsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83NCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNzUsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83NSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNzYsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83NiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNzcsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83NywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNzgsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83OCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoNzksIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83OSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoODAsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84MCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzgwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoODEsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84MSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzgxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoODIsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84MiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzgyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoODMsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84MywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzgzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoODQsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84NCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoODUsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84NSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoODYsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84NiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoODcsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84NywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoODgsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84OCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoODksIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84OSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoOTAsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85MCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzkwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoOTEsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85MSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzkxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoOTIsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85MiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzkyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoOTMsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85MywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzkzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoOTQsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85NCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoOTUsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85NSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoOTYsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85NiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoOTcsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85NywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoOTgsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85OCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoOTksIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85OSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTAwLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTAwLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTAwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTAxLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTAxLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTAxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTAyLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTAyLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTAyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTAzLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTAzLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTAzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTA0LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTA0LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTA0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTA1LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTA1LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTA1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTA2LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTA2LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTA2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTA3LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTA3LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTA3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTA4LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTA4LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTA4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTA5LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTA5LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTA5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTEwLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTEwLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTEwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTExLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTExLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTExX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTEyLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTEyLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTEyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTEzLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTEzLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTEzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTE0LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTE0LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTE0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTE1LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTE1LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTE1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTE2LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTE2LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTE2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTE3LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTE3LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTE3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTE4LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTE4LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTE4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTE5LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTE5LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTE5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTIwLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTIwLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTIwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTIxLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTIxLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTIxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTIyLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTIyLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTIyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTIzLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTIzLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTIzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTI0LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTI0LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTI0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTI1LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTI1LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTI1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTI2LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTI2LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTI2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTI3LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTI3LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTI3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTI4LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTI4LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTI4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTI5LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTI5LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTI5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTMwLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTMwLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTMwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTMxLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTMxLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTMxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTMyLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTMyLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTMyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTMzLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTMzLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTMzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTM0LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTM0LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTM0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTM1LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTM1LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTM1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTM2LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTM2LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTM2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTM3LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTM3LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTM3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTM4LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTM4LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTM4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTM5LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTM5LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTM5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTQwLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQwLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTQxLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQxLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTQyLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQyLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTQzLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQzLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTQ0LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQ0LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQ0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTQ1LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQ1LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQ1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTQ2LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQ2LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQ2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTQ3LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQ3LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQ3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTQ4LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQ4LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQ4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTQ5LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQ5LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQ5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTUwLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTUwLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTUwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTUxLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTUxLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTUxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTUyLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTUyLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTUyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTUzLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTUzLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTUzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTU0LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTU0LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTU0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTU1LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTU1LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTU1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTU2LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTU2LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTU2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTU3LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTU3LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTU3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTU4LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTU4LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTU4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTU5LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTU5LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTU5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTYwLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTYwLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTYwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTYxLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTYxLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTYxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTYyLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTYyLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTYyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTYzLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTYzLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTYzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTY0LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTY0LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTY0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTY1LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTY1LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTY1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTY2LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTY2LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTY2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTY3LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTY3LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTY3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTY4LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTY4LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTY4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTY5LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTY5LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTY5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTcwLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTcwLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTcwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTcxLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTcxLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTcxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTcyLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTcyLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTcyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTczLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTczLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTczX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTc0LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTc0LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTc0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTc1LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTc1LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTc1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTc2LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTc2LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTc2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTc3LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTc3LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTc3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTc4LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTc4LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTc4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTc5LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTc5LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTc5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTgwLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTgwLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTgwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTgxLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTgxLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTgxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTgyLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTgyLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTgyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTgzLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTgzLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTgzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTg0LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTg0LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTg0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTg1LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTg1LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTg1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTg2LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTg2LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTg2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTg3LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTg3LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTg3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTg4LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTg4LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTg4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTg5LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTg5LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTg5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTkwLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTkwLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTkwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTkxLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTkxLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTkxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTkyLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTkyLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTkyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTkzLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTkzLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTkzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTk0LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTk0LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTk0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTk1LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTk1LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTk1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTk2LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTk2LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTk2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTk3LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTk3LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTk3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTk4LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTk4LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTk4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMTk5LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTk5LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTk5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjAwLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjAwLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjAwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjAxLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjAxLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjAxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjAyLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjAyLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjAyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjAzLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjAzLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjAzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjA0LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjA0LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjA0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjA1LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjA1LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjA1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjA2LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjA2LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjA2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjA3LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjA3LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjA3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjA4LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjA4LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjA4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjA5LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjA5LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjA5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjEwLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjEwLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjEwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjExLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjExLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjExX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjEyLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjEyLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjEyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjEzLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjEzLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjEzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjE0LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjE0LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjE0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjE1LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjE1LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjE1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjE2LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjE2LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjE2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjE3LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjE3LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjE3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjE4LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjE4LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjE4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjE5LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjE5LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjE5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjIwLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjIwLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjIwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjIxLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjIxLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjIxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjIyLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjIyLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjIyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjIzLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjIzLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjIzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjI0LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjI0LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjI0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjI1LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjI1LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjI1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjI2LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjI2LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjI2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjI3LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjI3LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjI3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjI4LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjI4LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjI4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjI5LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjI5LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjI5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjMwLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjMwLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjMwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjMxLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjMxLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjMxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjMyLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjMyLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjMyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjMzLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjMzLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjMzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjM0LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjM0LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjM0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjM1LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjM1LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjM1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjM2LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjM2LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjM2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjM3LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjM3LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjM3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjM4LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjM4LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjM4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjM5LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjM5LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjM5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjQwLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQwLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjQxLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQxLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjQyLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQyLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjQzLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQzLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjQ0LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQ0LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQ0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjQ1LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQ1LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQ1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjQ2LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQ2LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQ2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjQ3LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQ3LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQ3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjQ4LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQ4LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQ4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjQ5LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQ5LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQ5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjUwLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjUwLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjUwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjUxLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjUxLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjUxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjUyLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjUyLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjUyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjUzLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjUzLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjUzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjU0LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjU0LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjU0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjU1LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjU1LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjU1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjU2LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjU2LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjU2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMjU3LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjU3LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTklMIDEKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yOShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzMwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zMihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzMzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zNShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zOChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80MShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80NChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80NyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81MChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzUxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81MyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81NihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81OShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzYwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82MihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzYzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82NShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82OChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83MShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzcyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83NChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83NyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84MChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzgxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84MyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84NihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84OShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzkwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85MihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzkzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85NShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85OChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTAwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTAxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTAyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTAzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTA0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTA1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTA2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTA3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTA4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTA5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTEwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTExKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTEyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTEzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTE0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTE1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTE2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTE3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTE4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTE5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTIwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTIxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTIyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTIzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTI0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTI1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTI2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTI3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTI4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTI5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTMwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTMxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTMyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTMzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTM0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTM1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTM2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTM3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTM4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTM5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQ0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQ1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQ2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQ3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQ4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQ5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTUwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTUxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTUyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTUzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTU0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTU1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTU2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTU3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTU4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTU5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTYwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTYxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTYyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTYzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTY0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTY1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTY2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTY3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTY4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTY5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTcwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTcxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTcyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTczKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTc0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTc1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTc2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTc3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTc4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTc5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTgwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTgxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTgyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTgzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTg0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTg1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTg2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTg3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTg4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTg5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTkwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTkxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTkyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTkzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTk0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTk1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTk2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTk3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTk4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTk5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjAwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjAxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjAyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjAzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjA0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjA1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjA2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjA3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjA4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjA5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjEwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjExKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjEyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjEzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjE0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjE1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjE2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjE3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjE4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjE5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjIwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjIxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjIyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjIzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjI0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjI1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjI2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjI3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjI4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjI5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjMwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjMxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjMyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjMzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjM0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjM1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjM2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjM3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjM4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjM5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQ0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQ1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQ2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQ3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQ4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQ5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjUwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjUxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjUyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjUzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjU0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjU1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjU2KG8sIHMsIGwpIDAKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZGV0YWlsL2ZvbGRfbGVmdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2RldGFpbC9mb2xkX2xlZnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMjk4MGZkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZGV0YWlsL2ZvbGRfbGVmdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNzkgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfTElTVF9ERVRBSUxfRk9MRF9MRUZUX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xJU1RfREVUQUlMX0ZPTERfTEVGVF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZXhwcl9paWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9paWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9hZHQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWF0LmhwcD4KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yOShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgzMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDMxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMzIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgzMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDM0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMzUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgzNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDM3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMzgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zOChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgzOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDQwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNDEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg0MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDQzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNDQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80NChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg0NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDQ2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNDcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80NyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg0OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDQ5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNTAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81MChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg1MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDUyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNTMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81MyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg1NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDU1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNTYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg1NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDU4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNTksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81OShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg2MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDYxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNjIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg2MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDY0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNjUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg2NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDY3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNjgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82OChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg2OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDcwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNzEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg3MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzczLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDczLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNzQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83NChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg3NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDc2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNzcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83NyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg3OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDc5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoODAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84MChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg4MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDgyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoODMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84MyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg4NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDg1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoODYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg4NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDg4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoODksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84OShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg5MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDkxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoOTIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg5MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDk0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoOTUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg5NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDk3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoOTgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85OChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg5OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMDAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEwMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTAyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMDMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEwNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTA1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMDYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEwNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTA4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMDksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDExMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTExLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTExKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMTIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDExMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTE0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMTUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDExNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTE3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMTgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDExOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExOShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTIwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMjEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEyMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTIzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMjQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEyNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTI2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMjcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEyOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyOChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTI5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMzAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEzMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTMyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMzMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEzNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTM1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMzYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEzNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTM4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMzksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE0MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTQxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNDIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE0MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTQ0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNDUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE0NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTQ3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNDgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE0OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0OShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTUwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNTEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE1MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTUzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNTQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE1NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTU2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNTcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE1OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1OChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTU5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNjAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE2MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTYyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNjMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE2NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTY1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNjYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE2NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTY4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNjksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE3MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTcxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNzIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTczLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE3MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTc0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNzUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE3NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTc3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNzgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE3OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3OShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTgwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxODEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE4MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTgzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxODQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE4NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTg2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxODcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE4OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4OChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTg5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxOTAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE5MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTkyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxOTMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE5NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTk1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxOTYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE5NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTk4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxOTksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIwMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjAxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMDIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIwMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjA0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMDUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIwNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjA3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMDgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIwOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwOShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjEwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMTEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIxMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjEzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMTQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIxNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjE2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMTcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIxOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxOChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjE5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMjAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIyMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjIyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMjMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIyNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjI1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMjYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIyNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjI4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMjksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIzMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjMxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMzIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIzMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjM0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMzUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIzNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjM3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMzgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIzOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzOShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjQwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNDEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI0MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjQzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNDQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI0NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjQ2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNDcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI0OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0OChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjQ5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNTAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI1MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjUyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNTMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI1NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjU1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNTYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI1NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZGV0YWlsL2ZvbGRfcmlnaHQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9kZXRhaWwvZm9sZF9yaWdodC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhMWYwNDUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9kZXRhaWwvZm9sZF9yaWdodC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNzcgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfTElTVF9ERVRBSUxfRk9MRF9SSUdIVF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MSVNUX0RFVEFJTF9GT0xEX1JJR0hUX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9mb2xkX2xlZnQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9yZXZlcnNlLmhwcD4KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgzLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDUsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg2LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDgsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg5LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTEsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEyLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTQsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE1LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTcsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE4LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxOSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjAsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIxLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjMsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDI0LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyNSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjYobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjYsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI3KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDI3LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yOChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyOCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjkobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjksIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzMwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMwKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDMwLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgzMSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzIobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMzIsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzMzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMzKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDMzLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgzNCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzUobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMzUsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM2KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDM2LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgzNywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzgobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMzgsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM5KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDM5LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg0MCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDEobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNDEsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQyKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDQyLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg0MywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDQobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNDQsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ1KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDQ1LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80NihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg0NiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDcobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNDcsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ4KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDQ4LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80OShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg0OSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTAobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNTAsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzUxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUxKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDUxLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81MihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg1MiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTMobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNTMsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU0KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDU0LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg1NSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTYobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNTYsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU3KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDU3LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81OChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg1OCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTkobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNTksIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzYwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYwKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDYwLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg2MSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjIobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNjIsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzYzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYzKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDYzLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg2NCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjUobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNjUsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY2KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDY2LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg2NywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjgobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNjgsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY5KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDY5LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg3MCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzEobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNzEsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzcyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcyKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDcyLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg3MywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzQobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNzQsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc1KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDc1LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83NihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg3NiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzcobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNzcsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc4KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDc4LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83OShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg3OSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODAobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoODAsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzgxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgxKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDgxLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84MihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg4MiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODMobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoODMsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg0KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDg0LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg4NSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODYobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoODYsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg3KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDg3LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84OChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg4OCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODkobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoODksIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzkwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkwKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDkwLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg5MSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTIobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoOTIsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzkzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkzKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDkzLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg5NCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTUobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoOTUsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk2KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDk2LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg5NywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTgobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoOTgsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk5KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDk5LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAwKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEwMCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTAxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMDEsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDIobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTAyLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAzKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEwMywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTA0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMDQsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDUobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTA1LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA2KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEwNiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTA3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMDcsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDgobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTA4LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA5KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEwOSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTEwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMTAsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTEobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTExLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEyKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDExMiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTEzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMTMsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTQobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTE0LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE1KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDExNSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTE2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMTYsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTcobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTE3LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE4KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDExOCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTE5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExOShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMTksIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjAobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTIwLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIxKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEyMSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTIyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMjIsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjMobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTIzLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI0KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEyNCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTI1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMjUsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjYobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTI2LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI3KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEyNywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTI4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyOChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMjgsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjkobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTI5LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMwKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEzMCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTMxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMzEsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzIobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTMyLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMzKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEzMywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTM0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMzQsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzUobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTM1LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM2KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEzNiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTM3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMzcsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzgobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTM4LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM5KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEzOSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNDAsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDEobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTQxLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQyKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE0MiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNDMsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDQobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTQ0LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ1KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE0NSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQ2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNDYsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDcobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTQ3LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ4KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE0OCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQ5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0OShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNDksIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTAobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTUwLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUxKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE1MSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTUyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNTIsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTMobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTUzLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU0KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE1NCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTU1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNTUsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTYobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTU2LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU3KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE1NywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTU4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1OChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNTgsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTkobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTU5LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYwKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE2MCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTYxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNjEsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjIobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTYyLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYzKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE2MywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTY0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNjQsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjUobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTY1LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY2KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE2NiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTY3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNjcsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjgobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTY4LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY5KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE2OSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTcwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNzAsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzEobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTcxLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcyKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE3MiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTczKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNzMsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzQobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTc0LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc1KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE3NSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTc2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNzYsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzcobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTc3LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc4KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE3OCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTc5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3OShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNzksIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODAobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTgwLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgxKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE4MSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTgyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxODIsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODMobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTgzLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg0KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE4NCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTg1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxODUsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODYobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTg2LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg3KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE4NywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTg4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4OChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxODgsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODkobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTg5LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkwKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE5MCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTkxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxOTEsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTIobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTkyLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkzKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE5MywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTk0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxOTQsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTUobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTk1LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk2KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE5NiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTk3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxOTcsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTgobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTk4LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk5KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE5OSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjAwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMDAsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDEobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjAxLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAyKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIwMiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjAzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMDMsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDQobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjA0LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA1KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIwNSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjA2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMDYsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDcobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjA3LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA4KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIwOCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjA5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwOShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMDksIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTAobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjEwLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjExKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIxMSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjEyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMTIsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTMobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjEzLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE0KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIxNCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjE1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMTUsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTYobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjE2LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE3KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIxNywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjE4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxOChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMTgsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTkobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjE5LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIwKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIyMCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjIxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMjEsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjIobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjIyLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIzKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIyMywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjI0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMjQsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjUobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjI1LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI2KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIyNiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjI3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMjcsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjgobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjI4LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI5KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIyOSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjMwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMzAsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzEobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjMxLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMyKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIzMiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjMzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMzMsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzQobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjM0LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM1KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIzNSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjM2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMzYsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzcobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjM3LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM4KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIzOCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjM5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzOShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMzksIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDAobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjQwLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQxKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDI0MSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyNDIsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDMobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjQzLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ0KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDI0NCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQ1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyNDUsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDYobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjQ2LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ3KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDI0NywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQ4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0OChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyNDgsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDkobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjQ5LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUwKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDI1MCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjUxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyNTEsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTIobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjUyLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUzKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDI1MywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjU0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyNTQsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTUobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjU1LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU2KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDI1NiwgbCkpCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2ZvbGRfbGVmdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2ZvbGRfbGVmdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhNmQzYjYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9mb2xkX2xlZnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzAzICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xJU1RfRk9MRF9MRUZUX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xJU1RfRk9MRF9MRUZUX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvd2hpbGUuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGVidWcvZXJyb3IuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2F1dG9fcmVjLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlQgKi8KLSMKLSMgaWYgMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlQob3AsIHN0YXRlLCBsaXN0KQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlQgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXywgTkROQk9PU1RfUFBfQVVUT19SRUMoTkROQk9PU1RfUFBfV0hJTEVfUCwgMjU2KSkKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NyhvLCBzLCBsKSBORE5CT09TVF9QUF9FUlJPUigweDAwMDQpCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9EKGQsIG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXyAjIyBkKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yTkQgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzJORF9EIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0QKLSMKLSMgaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZGV0YWlsL2VkZy9mb2xkX2xlZnQuaHBwPgotIyBlbGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0RNQygpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2RldGFpbC9kbWMvZm9sZF9sZWZ0LmhwcD4KLSMgZWxzZQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9kZXRhaWwvZm9sZF9sZWZ0LmhwcD4KLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX05JTCAxCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yOChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yOShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zOChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zOShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80NChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80NShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80NihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80NyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80OChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80OShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81MChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81MShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81MihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81MyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81OChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81OShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82OChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82OShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83NChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83NShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83NihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83NyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83OChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83OShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84MChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84MShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84MihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84MyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84OChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84OShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85OChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85OShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwOChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyOShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzOChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1OShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2OChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTczKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4OShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5OChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxOShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyOChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0OShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTYobywgcywgbCkgMAotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9mb2xkX3JpZ2h0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZm9sZF9yaWdodC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkODU1OTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9mb2xkX3JpZ2h0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xJU1RfRk9MRF9SSUdIVF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MSVNUX0ZPTERfUklHSFRfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC93aGlsZS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZWJ1Zy9lcnJvci5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZXRhaWwvYXV0b19yZWMuaHBwPgotIwotIyBpZiAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFQob3AsIHN0YXRlLCBsaXN0KQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfLCBORE5CT09TVF9QUF9BVVRPX1JFQyhORE5CT09TVF9QUF9XSElMRV9QLCAyNTYpKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1NyhvLCBzLCBsKSBORE5CT09TVF9QUF9FUlJPUigweDAwMDQpCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfRChkLCBvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfICMjIGQobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yTkQgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMk5EX0QgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0QKLSMKLSMgaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZGV0YWlsL2VkZy9mb2xkX3JpZ2h0LmhwcD4KLSMgZWxzZQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9kZXRhaWwvZm9sZF9yaWdodC5ocHA+Ci0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2Zvcl9lYWNoX2kuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9mb3JfZWFjaF9pLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjBlYTQzZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2Zvcl9lYWNoX2kuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfTElTVF9MSVNUX0ZPUl9FQUNIX0lfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfTElTVF9MSVNUX0ZPUl9FQUNIX0lfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2luYy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvYWR0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZm9yLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VsZW0uaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvcmVtLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKSAmJiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVNWQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0kobWFjcm8sIGRhdGEsIGxpc3QpIE5ETkJPT1NUX1BQX0ZPUigobWFjcm8sIGRhdGEsIGxpc3QsIDApLCBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfUCwgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX08sIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9NKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0kobWFjcm8sIGRhdGEsIGxpc3QpIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9JKG1hY3JvLCBkYXRhLCBsaXN0KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX0kobWFjcm8sIGRhdGEsIGxpc3QpIE5ETkJPT1NUX1BQX0ZPUigobWFjcm8sIGRhdGEsIGxpc3QsIDApLCBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfUCwgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX08sIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9NKQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19TVFJJQ1QoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX1AociwgeCkgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX1BfRCB4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfUF9EKG0sIGQsIGwsIGkpIE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfUChyLCB4KSBORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMoTkROQk9PU1RfUFBfVFVQTEVfRUxFTSg0LCAyLCB4KSkKLSMgZW5kaWYKLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01XQ0MoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX08ociwgeCkgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX09fRCB4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfT19EKG0sIGQsIGwsIGkpIChtLCBkLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCksIE5ETkJPT1NUX1BQX0lOQyhpKSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX08ociwgeCkgKE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMCwgeCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMSwgeCksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChORE5CT09TVF9QUF9UVVBMRV9FTEVNKDQsIDIsIHgpKSwgTkROQk9PU1RfUFBfSU5DKE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMywgeCkpKQotIyBlbmRpZgotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9NKHIsIHgpIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9NX0QociwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSg0LCAwLCB4KSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSg0LCAxLCB4KSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSg0LCAyLCB4KSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSg0LCAzLCB4KSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX00ociwgeCkgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX01fSShyLCBORE5CT09TVF9QUF9UVVBMRV9SRU1fNCB4KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX01fSShyLCB4X2UpIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9NX0QociwgeF9lKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX01fRChyLCBtLCBkLCBsLCBpKSBtKHIsIGQsIGksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9SICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX1IociwgbWFjcm8sIGRhdGEsIGxpc3QpIE5ETkJPT1NUX1BQX0ZPUl8gIyMgcigobWFjcm8sIGRhdGEsIGxpc3QsIDApLCBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfUCwgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX08sIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9NKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfUihyLCBtYWNybywgZGF0YSwgbGlzdCkgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX1JfSShyLCBtYWNybywgZGF0YSwgbGlzdCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9SX0kociwgbWFjcm8sIGRhdGEsIGxpc3QpIE5ETkJPT1NUX1BQX0ZPUl8gIyMgcigobWFjcm8sIGRhdGEsIGxpc3QsIDApLCBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfUCwgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX08sIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9NKQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9yZXZlcnNlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvcmV2ZXJzZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmMWVhYjUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9yZXZlcnNlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xJU1RfUkVWRVJTRV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MSVNUX1JFVkVSU0VfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZm9sZF9sZWZ0LmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFKGxpc3QpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUKE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9PLCBORE5CT09TVF9QUF9OSUwsIGxpc3QpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRShsaXN0KSBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfSShsaXN0KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0kobGlzdCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlQoTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX08sIE5ETkJPT1NUX1BQX05JTCwgbGlzdCkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9PKGQsIHMsIHgpICh4LCBzKQotIwotIyAvKiBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKGQsIGxpc3QpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXyAjIyBkKE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9PLCBORE5CT09TVF9QUF9OSUwsIGxpc3QpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKGQsIGxpc3QpIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EX0koZCwgbGlzdCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EX0koZCwgbGlzdCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfICMjIGQoTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX08sIE5ETkJPT1NUX1BQX05JTCwgbGlzdCkKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvdHJhbnNmb3JtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvdHJhbnNmb3JtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTJkNTY0ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L3RyYW5zZm9ybS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MSVNUX1RSQU5TRk9STV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MSVNUX1RSQU5TRk9STV9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9mb2xkX3JpZ2h0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VsZW0uaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvcmVtLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfTElTVF9UUkFOU0ZPUk0gKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX1RSQU5TRk9STShvcCwgZGF0YSwgbGlzdCkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAyLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFQoTkROQk9PU1RfUFBfTElTVF9UUkFOU0ZPUk1fTywgKG9wLCBkYXRhLCBORE5CT09TVF9QUF9OSUwpLCBsaXN0KSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9UUkFOU0ZPUk0ob3AsIGRhdGEsIGxpc3QpIE5ETkJPT1NUX1BQX0xJU1RfVFJBTlNGT1JNX0kob3AsIGRhdGEsIGxpc3QpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX1RSQU5TRk9STV9JKG9wLCBkYXRhLCBsaXN0KSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDIsIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVChORE5CT09TVF9QUF9MSVNUX1RSQU5TRk9STV9PLCAob3AsIGRhdGEsIE5ETkJPT1NUX1BQX05JTCksIGxpc3QpKQotIyBlbmRpZgotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfVFJBTlNGT1JNX08oZCwgb2RyLCBlbGVtKSBORE5CT09TVF9QUF9MSVNUX1RSQU5TRk9STV9PX0QoZCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAwLCBvZHIpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDEsIG9kciksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMiwgb2RyKSwgZWxlbSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9UUkFOU0ZPUk1fTyhkLCBvZHIsIGVsZW0pIE5ETkJPT1NUX1BQX0xJU1RfVFJBTlNGT1JNX09fSShkLCBORE5CT09TVF9QUF9UVVBMRV9SRU1fMyBvZHIsIGVsZW0pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX1RSQU5TRk9STV9PX0koZCwgaW0sIGVsZW0pIE5ETkJPT1NUX1BQX0xJU1RfVFJBTlNGT1JNX09fRChkLCBpbSwgZWxlbSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfVFJBTlNGT1JNX09fRChkLCBvcCwgZGF0YSwgcmVzLCBlbGVtKSAob3AsIGRhdGEsIChvcChkLCBkYXRhLCBlbGVtKSwgcmVzKSkKLSMKLSMgLyogTkROQk9PU1RfUFBfTElTVF9UUkFOU0ZPUk1fRCAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfVFJBTlNGT1JNX0QoZCwgb3AsIGRhdGEsIGxpc3QpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMiwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXyAjIyBkKE5ETkJPT1NUX1BQX0xJU1RfVFJBTlNGT1JNX08sIChvcCwgZGF0YSwgTkROQk9PU1RfUFBfTklMKSwgbGlzdCkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfVFJBTlNGT1JNX0QoZCwgb3AsIGRhdGEsIGxpc3QpIE5ETkJPT1NUX1BQX0xJU1RfVFJBTlNGT1JNX0RfSShkLCBvcCwgZGF0YSwgbGlzdCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfVFJBTlNGT1JNX0RfSShkLCBvcCwgZGF0YSwgbGlzdCkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAyLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfICMjIGQoTkROQk9PU1RfUFBfTElTVF9UUkFOU0ZPUk1fTywgKG9wLCBkYXRhLCBORE5CT09TVF9QUF9OSUwpLCBsaXN0KSkKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvYW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvYW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDUzMjljZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2FuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MT0dJQ0FMX0FORF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MT0dJQ0FMX0FORF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9ib29sLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvYml0YW5kLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfQU5EICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQU5EKHAsIHEpIE5ETkJPT1NUX1BQX0JJVEFORChORE5CT09TVF9QUF9CT09MKHApLCBORE5CT09TVF9QUF9CT09MKHEpKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9BTkQocCwgcSkgTkROQk9PU1RfUFBfQU5EX0kocCwgcSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0FORF9JKHAsIHEpIE5ETkJPT1NUX1BQX0JJVEFORChORE5CT09TVF9QUF9CT09MKHApLCBORE5CT09TVF9QUF9CT09MKHEpKQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9iaXRhbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9iaXRhbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ODc5ZjExLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvYml0YW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfTE9HSUNBTF9CSVRBTkRfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfTE9HSUNBTF9CSVRBTkRfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfQklUQU5EICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NV0NDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0JJVEFORCh4LCB5KSBORE5CT09TVF9QUF9CSVRBTkRfSSh4LCB5KQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9CSVRBTkQoeCwgeSkgTkROQk9PU1RfUFBfQklUQU5EX09PKCh4LCB5KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0JJVEFORF9PTyhwYXIpIE5ETkJPT1NUX1BQX0JJVEFORF9JICMjIHBhcgotIyBlbmRpZgotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVNWQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9CSVRBTkRfSSh4LCB5KSBORE5CT09TVF9QUF9CSVRBTkRfICMjIHggIyMgeQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9CSVRBTkRfSSh4LCB5KSBORE5CT09TVF9QUF9CSVRBTkRfSUQoTkROQk9PU1RfUFBfQklUQU5EXyAjIyB4ICMjIHkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9CSVRBTkRfSUQocmVzKSByZXMKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JJVEFORF8wMCAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9CSVRBTkRfMDEgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfQklUQU5EXzEwIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JJVEFORF8xMSAxCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2JpdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvYml0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmODRhZDU5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvYml0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MT0dJQ0FMX0JJVE9SX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xPR0lDQUxfQklUT1JfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfQklUT1IgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01XQ0MoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQklUT1IoeCwgeSkgTkROQk9PU1RfUFBfQklUT1JfSSh4LCB5KQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9CSVRPUih4LCB5KSBORE5CT09TVF9QUF9CSVRPUl9PTygoeCwgeSkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9CSVRPUl9PTyhwYXIpIE5ETkJPT1NUX1BQX0JJVE9SX0kgIyMgcGFyCi0jIGVuZGlmCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NU1ZDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0JJVE9SX0koeCwgeSkgTkROQk9PU1RfUFBfQklUT1JfICMjIHggIyMgeQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9CSVRPUl9JKHgsIHkpIE5ETkJPT1NUX1BQX0JJVE9SX0lEKE5ETkJPT1NUX1BQX0JJVE9SXyAjIyB4ICMjIHkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9CSVRPUl9JRChpZCkgaWQKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JJVE9SXzAwIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JJVE9SXzAxIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JJVE9SXzEwIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JJVE9SXzExIDEKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvYm9vbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2Jvb2wuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZDQ1ZGQ0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvYm9vbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyODggKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfTE9HSUNBTF9CT09MX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xPR0lDQUxfQk9PTF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9CT09MICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NV0NDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0woeCkgTkROQk9PU1RfUFBfQk9PTF9JKHgpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0woeCkgTkROQk9PU1RfUFBfQk9PTF9PTygoeCkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9CT09MX09PKHBhcikgTkROQk9PU1RfUFBfQk9PTF9JICMjIHBhcgotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF9JKHgpIE5ETkJPT1NUX1BQX0JPT0xfICMjIHgKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMCAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF81IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF84IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfOSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzEwIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzEzIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE2IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xOCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE5IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIyIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yNCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzI1IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yNyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzI4IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8zMCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzMxIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMzIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8zMyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzM0IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMzUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8zNiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzM3IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMzggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8zOSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzQwIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNDEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF80MiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzQzIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNDQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF80NSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzQ2IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNDcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF80OCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzQ5IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNTAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF81MSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzUyIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNTMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF81NCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzU1IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNTYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF81NyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzU4IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNTkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF82MCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzYxIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNjIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF82MyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzY0IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNjUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF82NiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzY3IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNjggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF82OSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzcwIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNzEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF83MiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzczIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNzQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF83NSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzc2IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNzcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF83OCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzc5IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfODAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF84MSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzgyIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfODMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF84NCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzg1IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfODYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF84NyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzg4IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfODkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF85MCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzkxIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfOTIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF85MyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzk0IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfOTUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF85NiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzk3IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfOTggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF85OSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzEwMCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzEwMSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzEwMiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzEwMyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzEwNCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzEwNSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzEwNiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzEwNyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzEwOCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzEwOSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzExMCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzExMSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzExMiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzExMyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzExNCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzExNSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzExNiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzExNyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzExOCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzExOSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzEyMCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzEyMSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzEyMiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzEyMyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzEyNCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzEyNSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzEyNiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzEyNyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzEyOCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzEyOSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzEzMCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzEzMSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzEzMiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzEzMyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzEzNCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzEzNSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzEzNiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzEzNyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzEzOCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzEzOSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE0MCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE0MSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE0MiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE0MyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE0NCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE0NSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE0NiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE0NyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE0OCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE0OSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE1MCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE1MSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE1MiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE1MyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE1NCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE1NSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE1NiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE1NyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE1OCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE1OSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE2MCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE2MSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE2MiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE2MyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE2NCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE2NSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE2NiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE2NyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE2OCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE2OSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE3MCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE3MSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE3MiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE3MyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE3NCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE3NSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE3NiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE3NyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE3OCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE3OSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE4MCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE4MSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE4MiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE4MyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE4NCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE4NSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE4NiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE4NyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE4OCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE4OSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE5MCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE5MSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE5MiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE5MyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE5NCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE5NSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE5NiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE5NyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE5OCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE5OSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIwMCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIwMSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIwMiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIwMyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIwNCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIwNSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIwNiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIwNyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIwOCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIwOSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIxMCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIxMSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIxMiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIxMyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIxNCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIxNSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIxNiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIxNyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIxOCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIxOSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIyMCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIyMSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIyMiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIyMyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIyNCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIyNSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIyNiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIyNyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIyOCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIyOSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIzMCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIzMSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIzMiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIzMyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIzNCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIzNSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIzNiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIzNyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIzOCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIzOSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzI0MCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzI0MSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzI0MiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzI0MyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzI0NCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzI0NSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzI0NiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzI0NyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzI0OCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzI0OSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzI1MCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzI1MSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzI1MiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzI1MyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzI1NCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzI1NSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzI1NiAxCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2NvbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvY29tcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNmI0YzZjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvY29tcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MT0dJQ0FMX0NPTVBMX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xPR0lDQUxfQ09NUExfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfQ09NUEwgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01XQ0MoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09NUEwoeCkgTkROQk9PU1RfUFBfQ09NUExfSSh4KQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT01QTCh4KSBORE5CT09TVF9QUF9DT01QTF9PTygoeCkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT01QTF9PTyhwYXIpIE5ETkJPT1NUX1BQX0NPTVBMX0kgIyMgcGFyCi0jIGVuZGlmCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NU1ZDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPTVBMX0koeCkgTkROQk9PU1RfUFBfQ09NUExfICMjIHgKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09NUExfSSh4KSBORE5CT09TVF9QUF9DT01QTF9JRChORE5CT09TVF9QUF9DT01QTF8gIyMgeCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPTVBMX0lEKGlkKSBpZAotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfQ09NUExfMCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9DT01QTF8xIDAKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvbm90LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvbm90LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmM5MjEwZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL25vdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MT0dJQ0FMX05PVF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MT0dJQ0FMX05PVF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9ib29sLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvY29tcGwuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9OT1QgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9OT1QoeCkgTkROQk9PU1RfUFBfQ09NUEwoTkROQk9PU1RfUFBfQk9PTCh4KSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9UKHgpIE5ETkJPT1NUX1BQX05PVF9JKHgpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9OT1RfSSh4KSBORE5CT09TVF9QUF9DT01QTChORE5CT09TVF9QUF9CT09MKHgpKQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9vci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL29yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzYzOWVmMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL29yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xPR0lDQUxfT1JfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfTE9HSUNBTF9PUl9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9ib29sLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvYml0b3IuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9PUiAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX09SKHAsIHEpIE5ETkJPT1NUX1BQX0JJVE9SKE5ETkJPT1NUX1BQX0JPT0wocCksIE5ETkJPT1NUX1BQX0JPT0wocSkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX09SKHAsIHEpIE5ETkJPT1NUX1BQX09SX0kocCwgcSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX09SX0kocCwgcSkgTkROQk9PU1RfUFBfQklUT1IoTkROQk9PU1RfUFBfQk9PTChwKSwgTkROQk9PU1RfUFBfQk9PTChxKSkKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3B1bmN0dWF0aW9uL2NvbW1hLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3B1bmN0dWF0aW9uL2NvbW1hLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWMxYTMzNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9wdW5jdHVhdGlvbi9jb21tYS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9QVU5DVFVBVElPTl9DT01NQV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9QVU5DVFVBVElPTl9DT01NQV9IUFAKLSMKLSMgLyogTkROQk9PU1RfUFBfQ09NTUEgKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0NPTU1BKCkgLAotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcHVuY3R1YXRpb24vY29tbWFfaWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcHVuY3R1YXRpb24vY29tbWFfaWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODViMGJhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3B1bmN0dWF0aW9uL2NvbW1hX2lmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1BVTkNUVUFUSU9OX0NPTU1BX0lGX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1BVTkNUVUFUSU9OX0NPTU1BX0lGX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2lmLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvZW1wdHkuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcHVuY3R1YXRpb24vY29tbWEuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9DT01NQV9JRiAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPTU1BX0lGKGNvbmQpIE5ETkJPT1NUX1BQX0lGKGNvbmQsIE5ETkJPT1NUX1BQX0NPTU1BLCBORE5CT09TVF9QUF9FTVBUWSkoKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT01NQV9JRihjb25kKSBORE5CT09TVF9QUF9DT01NQV9JRl9JKGNvbmQpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT01NQV9JRl9JKGNvbmQpIE5ETkJPT1NUX1BQX0lGKGNvbmQsIE5ETkJPT1NUX1BQX0NPTU1BLCBORE5CT09TVF9QUF9FTVBUWSkoKQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcHVuY3R1YXRpb24vcGFyZW4uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcHVuY3R1YXRpb24vcGFyZW4uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MDMzZmVjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3B1bmN0dWF0aW9uL3BhcmVuLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfUFVOQ1RVQVRJT05fUEFSRU5fSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfUFVOQ1RVQVRJT05fUEFSRU5fSFBQCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0xQQVJFTiAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTFBBUkVOKCkgKAotIwotIyAvKiBORE5CT09TVF9QUF9SUEFSRU4gKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JQQVJFTigpICkKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGVhdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBlYXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNDM4Y2JhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGVhdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVBVF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9SRVBFQVRfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL3JlcGVhdC5ocHA+Ci0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBlYXRfMm5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGVhdF8ybmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTAzYjljLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGVhdF8ybmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9SRVBFQVRfMk5EX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVBVF8yTkRfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL3JlcGVhdC5ocHA+Ci0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBlYXRfZnJvbV90by5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBlYXRfZnJvbV90by5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5YzhhNTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZWF0X2Zyb21fdG8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9SRVBFQVRfRlJPTV9UT19IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9SRVBFQVRfRlJPTV9UT19IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vcmVwZWF0X2Zyb21fdG8uaHBwPgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9kZXRhaWwvZG1jL2Zvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2RldGFpbC9kbWMvZm9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzgzMDY3NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2RldGFpbC9kbWMvZm9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzNiArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9SRVBFVElUSU9OX0RFVEFJTF9GT1JfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRVRJVElPTl9ERVRBSUxfRk9SX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9leHByX2lpZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2lpZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2Jvb2wuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWF0LmhwcD4KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzJfQyhORE5CT09TVF9QUF9CT09MKHAjIygzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfM19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl80X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzVfQyhORE5CT09TVF9QUF9CT09MKHAjIyg2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl83X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoOCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzhfQyhORE5CT09TVF9QUF9CT09MKHAjIyg5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTFfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTRfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTdfQyhORE5CT09TVF9QUF9CT09MKHAjIygxOCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjBfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjNfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjZfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yN19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjlfQyhORE5CT09TVF9QUF9CT09MKHAjIygzMCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzMwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8zMF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDMxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzMxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMzIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMzJfQyhORE5CT09TVF9QUF9CT09MKHAjIygzMywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzMzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8zM19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDM0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzM0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMzUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMzVfQyhORE5CT09TVF9QUF9CT09MKHAjIygzNiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8zNl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDM3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzM3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMzgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMzhfQyhORE5CT09TVF9QUF9CT09MKHAjIygzOSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8zOV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDQwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNDEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNDFfQyhORE5CT09TVF9QUF9CT09MKHAjIyg0MiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl80Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDQzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNDQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNDRfQyhORE5CT09TVF9QUF9CT09MKHAjIyg0NSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl80NV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDQ2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQ2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNDcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNDdfQyhORE5CT09TVF9QUF9CT09MKHAjIyg0OCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl80OF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDQ5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQ5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNTAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNTBfQyhORE5CT09TVF9QUF9CT09MKHAjIyg1MSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzUxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81MV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDUyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzUyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNTMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNTNfQyhORE5CT09TVF9QUF9CT09MKHAjIyg1NCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81NF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDU1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzU1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNTYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNTZfQyhORE5CT09TVF9QUF9CT09MKHAjIyg1NywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81N19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDU4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzU4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNTksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNTlfQyhORE5CT09TVF9QUF9CT09MKHAjIyg2MCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzYwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl82MF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDYxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzYxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNjIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNjJfQyhORE5CT09TVF9QUF9CT09MKHAjIyg2MywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzYzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl82M19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDY0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzY0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNjUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNjVfQyhORE5CT09TVF9QUF9CT09MKHAjIyg2NiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl82Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDY3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzY3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNjgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNjhfQyhORE5CT09TVF9QUF9CT09MKHAjIyg2OSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl82OV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDcwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzcwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNzEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNzFfQyhORE5CT09TVF9QUF9CT09MKHAjIyg3MiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzcyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl83Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDczLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzczX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNzQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNzRfQyhORE5CT09TVF9QUF9CT09MKHAjIyg3NSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl83NV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDc2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzc2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNzcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNzdfQyhORE5CT09TVF9QUF9CT09MKHAjIyg3OCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl83OF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDc5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzc5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoODAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfODBfQyhORE5CT09TVF9QUF9CT09MKHAjIyg4MSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzgxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84MV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDgyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzgyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoODMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfODNfQyhORE5CT09TVF9QUF9CT09MKHAjIyg4NCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84NF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDg1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzg1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoODYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfODZfQyhORE5CT09TVF9QUF9CT09MKHAjIyg4NywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84N19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDg4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzg4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoODksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfODlfQyhORE5CT09TVF9QUF9CT09MKHAjIyg5MCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzkwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl85MF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDkxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzkxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoOTIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOTJfQyhORE5CT09TVF9QUF9CT09MKHAjIyg5MywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzkzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl85M19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDk0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzk0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoOTUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOTVfQyhORE5CT09TVF9QUF9CT09MKHAjIyg5NiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl85Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDk3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzk3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoOTgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOThfQyhORE5CT09TVF9QUF9CT09MKHAjIyg5OSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl85OV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEwMCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTAwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTAxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTAxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMDFfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMDIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEwMl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEwMywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTAzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTA0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMDRfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMDUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEwNV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEwNiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTA2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTA3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMDdfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMDgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEwOF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEwOSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTA5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTEwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTEwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMTBfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMTEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzExMV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDExMiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTEyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTEzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTEzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMTNfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMTQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzExNF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDExNSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTE1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTE2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMTZfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMTcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzExN19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDExOCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTE4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTE5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMTlfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMjAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEyMF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEyMSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTIxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTIyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTIyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMjJfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMjMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEyM19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEyNCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTI0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTI1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMjVfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMjYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEyNl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEyNywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTI3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTI4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMjhfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMjksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEyOV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEzMCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTMwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTMxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTMxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMzFfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMzIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEzMl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEzMywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTMzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTM0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMzRfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMzUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEzNV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEzNiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTM2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTM3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMzdfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMzgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEzOF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEzOSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTM5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTQwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNDBfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNDEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE0MV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE0MiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTQzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNDNfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNDQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE0NF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE0NSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQ1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTQ2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNDZfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNDcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE0N19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE0OCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQ4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTQ5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNDlfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNTAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE1MF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE1MSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTUxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTUyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTUyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNTJfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNTMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE1M19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE1NCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTU0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTU1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNTVfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNTYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE1Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE1NywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTU3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTU4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNThfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNTksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE1OV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE2MCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTYwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTYxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTYxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNjFfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNjIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE2Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE2MywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTYzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTY0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNjRfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNjUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE2NV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE2NiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTY2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTY3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNjdfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNjgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE2OF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE2OSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTY5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTcwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTcwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNzBfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNzEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE3MV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE3MiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTcyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTczLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTczKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNzNfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNzQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE3NF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE3NSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTc1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTc2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNzZfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNzcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE3N19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE3OCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTc4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTc5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNzlfQyhORE5CT09TVF9QUF9CT09MKHAjIygxODAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE4MF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE4MSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTgxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTgyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTgyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xODJfQyhORE5CT09TVF9QUF9CT09MKHAjIygxODMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE4M19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE4NCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTg0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTg1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xODVfQyhORE5CT09TVF9QUF9CT09MKHAjIygxODYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE4Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE4NywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTg3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTg4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xODhfQyhORE5CT09TVF9QUF9CT09MKHAjIygxODksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE4OV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE5MCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTkwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTkxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTkxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOTFfQyhORE5CT09TVF9QUF9CT09MKHAjIygxOTIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE5Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE5MywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTkzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTk0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOTRfQyhORE5CT09TVF9QUF9CT09MKHAjIygxOTUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE5NV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE5NiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTk2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTk3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOTdfQyhORE5CT09TVF9QUF9CT09MKHAjIygxOTgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE5OF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE5OSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTk5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjAwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMDBfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMDEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIwMV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIwMiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjAyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjAzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMDNfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMDQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIwNF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIwNSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjA1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjA2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMDZfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMDcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIwN19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIwOCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjA4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjA5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMDlfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMTAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIxMF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIxMSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjExX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjEyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjEyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMTJfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMTMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIxM19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIxNCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjE0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjE1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMTVfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMTYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIxNl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIxNywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjE3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjE4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMThfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMTksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIxOV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIyMCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjIwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjIxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjIxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMjFfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMjIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIyMl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIyMywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjIzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjI0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMjRfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMjUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIyNV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIyNiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjI2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjI3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMjdfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMjgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIyOF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIyOSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjI5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjMwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMzBfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMzEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIzMV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIzMiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjMyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjMzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMzNfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMzQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIzNF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIzNSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjM1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjM2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMzZfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMzcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIzN19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIzOCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjM4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjM5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMzlfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNDAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI0MF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI0MSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjQyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNDJfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNDMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI0M19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI0NCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQ0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjQ1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNDVfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNDYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI0Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI0NywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQ3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjQ4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNDhfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNDksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI0OV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI1MCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjUwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjUxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjUxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNTFfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNTIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI1Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI1MywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjUzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjU0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjU0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNTRfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNTUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI1NV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI1NiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjU2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjU3LCBzKSksIHMsIHAsIG8sIG0pCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8zLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfM19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl80LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl81LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl82LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl83LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfN19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl84LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl85LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzExLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yN19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzMCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8zMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDMwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zMF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMzEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgzMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDMyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzMyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMzIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzMyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzMywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8zMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDMzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zM19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMzQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgzNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDM1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzM1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMzUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzNiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8zNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDM2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zNl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMzcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgzNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDM4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzM4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMzgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzOSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8zOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDM5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zOV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNDAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg0MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzQxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNDEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0MiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl80MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDQyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80Ml9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNDMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg0MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQ0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzQ0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNDQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0NSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl80NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDQ1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80NV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNDYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg0NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQ3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzQ3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNDcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0OCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl80OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDQ4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80OF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNDksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg0OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDUwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzUwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzUwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1MSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl81MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDUxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81MV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNTIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg1MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDUzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzUzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzUzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1NCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl81NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDU0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81NF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNTUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg1NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDU2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzU2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1NywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl81NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDU3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81N19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNTgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg1OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNThfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDU5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzU5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNTksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2MCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl82MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDYwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82MF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNjEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg2MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDYyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzYyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNjIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzYyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2MywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl82MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDYzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82M19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNjQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg2NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDY1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzY1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNjUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2NiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl82NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDY2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82Nl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNjcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg2NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDY4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzY4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNjgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2OSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl82OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDY5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82OV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNzAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg3MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDcxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzcxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNzEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzcxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3MiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl83MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDcyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83Ml9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNzMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg3MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDc0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzc0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNzQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3NSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl83NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDc1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83NV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNzYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg3NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDc3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzc3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNzcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3OCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl83OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDc4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83OF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNzksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg3OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDgwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzgwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoODAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzgwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4MSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl84MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDgxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84MV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfODIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg4MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDgzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzgzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoODMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzgzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4NCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl84NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDg0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84NF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfODUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg4NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDg2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzg2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoODYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4NywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl84NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDg3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84N19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfODgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg4OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDg5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzg5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoODksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5MCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl85MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDkwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85MF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfOTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg5MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDkyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzkyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoOTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzkyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5MywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl85MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDkzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85M19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfOTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg5NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDk1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzk1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoOTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5NiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl85NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDk2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85Nl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfOTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg5NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDk4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzk4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoOTgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5OSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl85OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDk5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85OV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTAwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEwMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEwMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTAwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTAxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTAxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwMiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMDIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMDIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwMl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTAzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEwMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEwMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTAzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTA0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTA0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwNSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMDUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMDUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwNV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTA2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEwNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEwNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTA3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTA3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwOCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMDgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMDgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwOF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTA5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEwOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEwOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTEwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTEwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExMSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExMV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTEyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzExMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDExMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTEyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTEzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTEzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExNCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExNF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTE1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzExNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDExNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTE2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTE2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExNywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMTcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExN19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTE4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzExOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDExOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTE5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTE5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyMCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMjAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMjAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyMF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTIxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEyMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEyMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTIxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTIyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTIyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyMywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMjMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMjMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyM19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTI0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEyNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEyNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTI1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTI1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyNiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMjYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMjYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyNl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTI3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEyNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEyNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTI4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTI4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyOSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMjksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMjksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyOV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTMwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEzMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEzMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTMwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTMxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTMxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzMiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMzIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMzIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzMl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTMzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEzMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEzMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTMzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTM0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTM0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzNSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMzUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMzUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzNV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTM2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEzNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEzNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTM3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTM3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzOCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMzgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMzgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzOF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTM5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEzOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEzOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTQwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTQwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0MSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNDEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNDEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0MV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE0MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE0MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTQzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTQzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0NCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNDQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNDQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0NF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQ1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE0NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE0NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTQ2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTQ2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0NywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNDcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNDcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0N19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQ4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE0OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE0OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTQ5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTQ5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1MCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1MF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTUxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE1MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE1MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTUxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTUyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTUyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1MywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1M19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTU0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE1NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE1NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTU1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTU1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1NiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1Nl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTU3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE1NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE1NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTU4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTU4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNThfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1OSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNTksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNTksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1OV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTYwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE2MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE2MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTYwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTYxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTYxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2MiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNjIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNjIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2Ml9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTYzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE2MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE2MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTYzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTY0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTY0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2NSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNjUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNjUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2NV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTY2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE2NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE2NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTY3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTY3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2OCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNjgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNjgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2OF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTY5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE2OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE2OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTcwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTcwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3MSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNzEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNzEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3MV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTcyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE3MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE3MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTcyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTczLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTczLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3NCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNzQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNzQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3NF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTc1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE3NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE3NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTc2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTc2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3NywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNzcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNzcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3N19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTc4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE3OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE3OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTc5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTc5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4MCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xODAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxODAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4MF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTgxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE4MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE4MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTgxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTgyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTgyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4MywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xODMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxODMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4M19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTg0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE4NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE4NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTg1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTg1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4NiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xODYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxODYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4Nl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTg3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE4NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE4NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTg4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTg4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4OSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xODksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxODksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4OV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTkwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE5MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE5MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTkwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTkxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTkxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5MiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xOTIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxOTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5Ml9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTkzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE5MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE5MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTkzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTk0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTk0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5NSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xOTUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxOTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5NV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTk2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE5NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE5NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTk3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTk3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5OCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xOTgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxOTgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5OF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTk5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE5OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE5OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjAwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjAwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwMSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMDEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMDEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwMV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjAyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIwMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIwMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjAzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjAzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwNCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMDQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMDQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwNF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjA1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIwNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIwNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjA2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjA2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwNywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMDcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMDcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwN19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjA4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIwOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIwOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjA5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjA5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxMCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxMF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjExLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIxMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIxMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjExX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjEyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjEyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxMywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxM19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjE0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIxNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIxNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjE1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjE1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxNiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxNl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjE3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIxNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIxNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjE4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjE4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMThfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxOSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMTksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMTksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxOV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjIwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIyMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIyMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjIwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjIxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjIxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyMiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMjIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMjIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyMl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjIzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIyMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIyMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjIzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjI0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjI0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyNSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMjUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMjUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyNV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjI2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIyNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIyNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjI3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjI3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyOCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMjgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMjgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyOF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjI5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIyOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIyOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjMwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjMwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzMSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMzEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMzEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzMV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjMyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIzMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIzMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjMzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjMzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzNCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMzQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMzQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzNF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjM1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIzNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIzNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjM2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjM2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzNywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMzcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMzcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzN19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjM4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIzOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIzOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjM5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjM5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0MCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNDAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNDAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0MF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI0MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI0MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjQyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjQyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0MywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNDMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNDMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0M19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQ0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI0NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI0NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjQ1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjQ1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0NiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNDYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNDYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0Nl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQ3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI0NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI0NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjQ4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjQ4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0OSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNDksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNDksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0OV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjUwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI1MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI1MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjUwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjUxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjUxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1MiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNTIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1Ml9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjUzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI1MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI1MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjUzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjU0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjU0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1NSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNTUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1NV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjU2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI1NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI1NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjU2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjU3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjU3LCBzKSwgcCwgbywgbSkKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZGV0YWlsL2VkZy9mb3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9kZXRhaWwvZWRnL2Zvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxNzUwMzIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9kZXRhaWwvZWRnL2Zvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MzQgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRVRJVElPTl9ERVRBSUxfRURHX0ZPUl9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9SRVBFVElUSU9OX0RFVEFJTF9FREdfRk9SX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9pZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lYXQuaHBwPgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzFfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzJfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzNfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzRfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzVfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzZfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzdfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzhfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzlfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzExX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTJfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xM19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE0X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTVfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE3X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMThfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIwX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjFfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIzX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjRfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI2X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjdfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yOF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI5X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMzBfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzMxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8zMV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzMyX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMzNfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8zNF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzM1X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMzZfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8zN19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzM4X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMzlfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl80MF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQxX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNDJfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl80M19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQ0X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNDVfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl80Nl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQ3X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNDhfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl80OV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzUwX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNTFfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzUyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81Ml9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzUzX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNTRfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81NV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzU2X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNTdfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81OF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzU5X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNjBfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzYxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl82MV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzYyX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNjNfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl82NF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzY1X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNjZfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl82N19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzY4X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNjlfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzcwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl83MF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzcxX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNzJfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzczKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl83M19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzc0X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNzVfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl83Nl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzc3X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNzhfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl83OV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzgwX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfODFfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzgyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84Ml9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzgzX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfODRfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84NV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzg2X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfODdfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84OF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzg5X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOTBfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzkxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl85MV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzkyX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOTNfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl85NF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzk1X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOTZfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl85N19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzk4X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOTlfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTAwX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEwMV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTAyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMDJfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTAzX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEwNF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMDVfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTA2X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEwN19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMDhfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTA5X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzExMF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTExKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMTFfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTEyX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzExM19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMTRfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTE1X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzExNl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMTdfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTE4X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzExOV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTIwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMjBfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTIxX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEyMl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTIzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMjNfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTI0X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEyNV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMjZfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTI3X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEyOF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMjlfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTMwX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEzMV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTMyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMzJfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTMzX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEzNF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMzVfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTM2X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEzN19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMzhfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTM5X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE0MF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNDFfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQyX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE0M19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNDRfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQ1X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE0Nl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNDdfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQ4X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE0OV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTUwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNTBfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTUxX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE1Ml9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTUzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNTNfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTU0X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE1NV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNTZfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTU3X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE1OF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNTlfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTYwX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE2MV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTYyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNjJfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTYzX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE2NF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNjVfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTY2X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE2N19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNjhfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTY5X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE3MF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTcxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNzFfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTcyX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE3M19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNzRfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTc1X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE3Nl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNzdfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTc4X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE3OV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTgwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xODBfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTgxX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE4Ml9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTgzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xODNfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTg0X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE4NV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xODZfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTg3X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE4OF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xODlfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTkwX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE5MV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTkyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOTJfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTkzX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE5NF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOTVfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTk2X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE5N19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOThfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTk5X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIwMF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMDFfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjAyX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIwM19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMDRfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjA1X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIwNl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMDdfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjA4X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIwOV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjEwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMTBfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjExX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIxMl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjEzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMTNfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjE0X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIxNV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMTZfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjE3X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIxOF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMTlfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjIwX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIyMV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjIyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMjJfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjIzX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIyNF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMjVfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjI2X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIyN19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMjhfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjI5X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIzMF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMzFfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjMyX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIzM19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMzRfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjM1X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIzNl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMzdfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjM4X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIzOV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNDBfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQxX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI0Ml9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNDNfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQ0X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI0NV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNDZfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQ3X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI0OF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNDlfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjUwX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI1MV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjUyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNTJfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjUzX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI1NF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjU1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNTVfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjU2X0kocywgcCwgbywgbSkKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMywgcyksIE5ETkJPT1NUX1BQX0ZPUl8zLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNCwgcyksIE5ETkJPT1NUX1BQX0ZPUl80LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNSwgcyksIE5ETkJPT1NUX1BQX0ZPUl81LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNiwgcyksIE5ETkJPT1NUX1BQX0ZPUl82LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNywgcyksIE5ETkJPT1NUX1BQX0ZPUl83LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoOCwgcyksIE5ETkJPT1NUX1BQX0ZPUl84LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDksIHMpIE5ETkJPT1NUX1BQX0lGKHAoOSwgcyksIE5ETkJPT1NUX1BQX0ZPUl85LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMCwgcykgTkROQk9PU1RfUFBfSUYocCgxMCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMSwgcykgTkROQk9PU1RfUFBfSUYocCgxMSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMiwgcykgTkROQk9PU1RfUFBfSUYocCgxMiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMywgcykgTkROQk9PU1RfUFBfSUYocCgxMywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNCwgcykgTkROQk9PU1RfUFBfSUYocCgxNCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNSwgcykgTkROQk9PU1RfUFBfSUYocCgxNSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNiwgcykgTkROQk9PU1RfUFBfSUYocCgxNiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNywgcykgTkROQk9PU1RfUFBfSUYocCgxNywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxOCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOCwgcykgTkROQk9PU1RfUFBfSUYocCgxOCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxOSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOSwgcykgTkROQk9PU1RfUFBfSUYocCgxOSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMCwgcykgTkROQk9PU1RfUFBfSUYocCgyMCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMSwgcykgTkROQk9PU1RfUFBfSUYocCgyMSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMiwgcykgTkROQk9PU1RfUFBfSUYocCgyMiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMywgcykgTkROQk9PU1RfUFBfSUYocCgyMywgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNCwgcykgTkROQk9PU1RfUFBfSUYocCgyNCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNSwgcykgTkROQk9PU1RfUFBfSUYocCgyNSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNiwgcykgTkROQk9PU1RfUFBfSUYocCgyNiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI2X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNywgcykgTkROQk9PU1RfUFBfSUYocCgyNywgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI3X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyOCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyOCwgcykgTkROQk9PU1RfUFBfSUYocCgyOCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI4X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyOSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyOSwgcykgTkROQk9PU1RfUFBfSUYocCgyOSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI5X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgzMCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzMCwgcykgTkROQk9PU1RfUFBfSUYocCgzMCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8zMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMzAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzMwX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgzMSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzMSwgcykgTkROQk9PU1RfUFBfSUYocCgzMSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8zMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMzEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzMxX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgzMiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzMiwgcykgTkROQk9PU1RfUFBfSUYocCgzMiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8zMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMzIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzMyX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgzMywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzMywgcykgTkROQk9PU1RfUFBfSUYocCgzMywgcyksIE5ETkJPT1NUX1BQX0ZPUl8zMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMzMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzMzX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgzNCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzNCwgcykgTkROQk9PU1RfUFBfSUYocCgzNCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8zNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMzQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM0X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgzNSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzNSwgcykgTkROQk9PU1RfUFBfSUYocCgzNSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8zNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMzUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM1X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgzNiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzNiwgcykgTkROQk9PU1RfUFBfSUYocCgzNiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8zNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMzYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM2X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgzNywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzNywgcykgTkROQk9PU1RfUFBfSUYocCgzNywgcyksIE5ETkJPT1NUX1BQX0ZPUl8zNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMzcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM3X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgzOCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzOCwgcykgTkROQk9PU1RfUFBfSUYocCgzOCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8zOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMzgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM4X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgzOSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzOSwgcykgTkROQk9PU1RfUFBfSUYocCgzOSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8zOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMzksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM5X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg0MCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0MCwgcykgTkROQk9PU1RfUFBfSUYocCg0MCwgcyksIE5ETkJPT1NUX1BQX0ZPUl80MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNDAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQwX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg0MSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0MSwgcykgTkROQk9PU1RfUFBfSUYocCg0MSwgcyksIE5ETkJPT1NUX1BQX0ZPUl80MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNDEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQxX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg0MiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0MiwgcykgTkROQk9PU1RfUFBfSUYocCg0MiwgcyksIE5ETkJPT1NUX1BQX0ZPUl80MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNDIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQyX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg0MywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0MywgcykgTkROQk9PU1RfUFBfSUYocCg0MywgcyksIE5ETkJPT1NUX1BQX0ZPUl80MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNDMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQzX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg0NCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0NCwgcykgTkROQk9PU1RfUFBfSUYocCg0NCwgcyksIE5ETkJPT1NUX1BQX0ZPUl80NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNDQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ0X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg0NSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0NSwgcykgTkROQk9PU1RfUFBfSUYocCg0NSwgcyksIE5ETkJPT1NUX1BQX0ZPUl80NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNDUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ1X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg0NiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0NiwgcykgTkROQk9PU1RfUFBfSUYocCg0NiwgcyksIE5ETkJPT1NUX1BQX0ZPUl80NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNDYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ2X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg0NywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0NywgcykgTkROQk9PU1RfUFBfSUYocCg0NywgcyksIE5ETkJPT1NUX1BQX0ZPUl80NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNDcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ3X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg0OCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0OCwgcykgTkROQk9PU1RfUFBfSUYocCg0OCwgcyksIE5ETkJPT1NUX1BQX0ZPUl80OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNDgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ4X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg0OSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0OSwgcykgTkROQk9PU1RfUFBfSUYocCg0OSwgcyksIE5ETkJPT1NUX1BQX0ZPUl80OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNDksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ5X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg1MCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1MCwgcykgTkROQk9PU1RfUFBfSUYocCg1MCwgcyksIE5ETkJPT1NUX1BQX0ZPUl81MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzUwX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg1MSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1MSwgcykgTkROQk9PU1RfUFBfSUYocCg1MSwgcyksIE5ETkJPT1NUX1BQX0ZPUl81MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzUxX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg1MiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1MiwgcykgTkROQk9PU1RfUFBfSUYocCg1MiwgcyksIE5ETkJPT1NUX1BQX0ZPUl81MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzUyX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg1MywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1MywgcykgTkROQk9PU1RfUFBfSUYocCg1MywgcyksIE5ETkJPT1NUX1BQX0ZPUl81MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzUzX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg1NCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1NCwgcykgTkROQk9PU1RfUFBfSUYocCg1NCwgcyksIE5ETkJPT1NUX1BQX0ZPUl81NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU0X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg1NSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1NSwgcykgTkROQk9PU1RfUFBfSUYocCg1NSwgcyksIE5ETkJPT1NUX1BQX0ZPUl81NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU1X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg1NiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1NiwgcykgTkROQk9PU1RfUFBfSUYocCg1NiwgcyksIE5ETkJPT1NUX1BQX0ZPUl81NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU2X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg1NywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1NywgcykgTkROQk9PU1RfUFBfSUYocCg1NywgcyksIE5ETkJPT1NUX1BQX0ZPUl81NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNTcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU3X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg1OCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1OCwgcykgTkROQk9PU1RfUFBfSUYocCg1OCwgcyksIE5ETkJPT1NUX1BQX0ZPUl81OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNTgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU4X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg1OSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1OSwgcykgTkROQk9PU1RfUFBfSUYocCg1OSwgcyksIE5ETkJPT1NUX1BQX0ZPUl81OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNTksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU5X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg2MCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2MCwgcykgTkROQk9PU1RfUFBfSUYocCg2MCwgcyksIE5ETkJPT1NUX1BQX0ZPUl82MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNjAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzYwX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg2MSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2MSwgcykgTkROQk9PU1RfUFBfSUYocCg2MSwgcyksIE5ETkJPT1NUX1BQX0ZPUl82MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNjEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzYxX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg2MiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2MiwgcykgTkROQk9PU1RfUFBfSUYocCg2MiwgcyksIE5ETkJPT1NUX1BQX0ZPUl82MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNjIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzYyX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg2MywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2MywgcykgTkROQk9PU1RfUFBfSUYocCg2MywgcyksIE5ETkJPT1NUX1BQX0ZPUl82MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNjMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzYzX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg2NCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2NCwgcykgTkROQk9PU1RfUFBfSUYocCg2NCwgcyksIE5ETkJPT1NUX1BQX0ZPUl82NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNjQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY0X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg2NSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2NSwgcykgTkROQk9PU1RfUFBfSUYocCg2NSwgcyksIE5ETkJPT1NUX1BQX0ZPUl82NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNjUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY1X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg2NiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2NiwgcykgTkROQk9PU1RfUFBfSUYocCg2NiwgcyksIE5ETkJPT1NUX1BQX0ZPUl82NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNjYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY2X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg2NywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2NywgcykgTkROQk9PU1RfUFBfSUYocCg2NywgcyksIE5ETkJPT1NUX1BQX0ZPUl82NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNjcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY3X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg2OCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2OCwgcykgTkROQk9PU1RfUFBfSUYocCg2OCwgcyksIE5ETkJPT1NUX1BQX0ZPUl82OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNjgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY4X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg2OSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2OSwgcykgTkROQk9PU1RfUFBfSUYocCg2OSwgcyksIE5ETkJPT1NUX1BQX0ZPUl82OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNjksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY5X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg3MCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3MCwgcykgTkROQk9PU1RfUFBfSUYocCg3MCwgcyksIE5ETkJPT1NUX1BQX0ZPUl83MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNzAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzcwX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg3MSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3MSwgcykgTkROQk9PU1RfUFBfSUYocCg3MSwgcyksIE5ETkJPT1NUX1BQX0ZPUl83MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNzEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzcxX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg3MiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3MiwgcykgTkROQk9PU1RfUFBfSUYocCg3MiwgcyksIE5ETkJPT1NUX1BQX0ZPUl83MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNzIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzcyX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg3MywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3MywgcykgTkROQk9PU1RfUFBfSUYocCg3MywgcyksIE5ETkJPT1NUX1BQX0ZPUl83MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNzMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzczX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg3NCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3NCwgcykgTkROQk9PU1RfUFBfSUYocCg3NCwgcyksIE5ETkJPT1NUX1BQX0ZPUl83NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNzQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc0X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg3NSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3NSwgcykgTkROQk9PU1RfUFBfSUYocCg3NSwgcyksIE5ETkJPT1NUX1BQX0ZPUl83NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNzUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc1X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg3NiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3NiwgcykgTkROQk9PU1RfUFBfSUYocCg3NiwgcyksIE5ETkJPT1NUX1BQX0ZPUl83NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNzYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc2X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg3NywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3NywgcykgTkROQk9PU1RfUFBfSUYocCg3NywgcyksIE5ETkJPT1NUX1BQX0ZPUl83NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNzcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc3X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg3OCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3OCwgcykgTkROQk9PU1RfUFBfSUYocCg3OCwgcyksIE5ETkJPT1NUX1BQX0ZPUl83OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNzgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc4X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg3OSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3OSwgcykgTkROQk9PU1RfUFBfSUYocCg3OSwgcyksIE5ETkJPT1NUX1BQX0ZPUl83OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNzksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc5X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg4MCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4MCwgcykgTkROQk9PU1RfUFBfSUYocCg4MCwgcyksIE5ETkJPT1NUX1BQX0ZPUl84MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oODAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzgwX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg4MSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4MSwgcykgTkROQk9PU1RfUFBfSUYocCg4MSwgcyksIE5ETkJPT1NUX1BQX0ZPUl84MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oODEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzgxX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg4MiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4MiwgcykgTkROQk9PU1RfUFBfSUYocCg4MiwgcyksIE5ETkJPT1NUX1BQX0ZPUl84MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oODIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzgyX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg4MywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4MywgcykgTkROQk9PU1RfUFBfSUYocCg4MywgcyksIE5ETkJPT1NUX1BQX0ZPUl84MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oODMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzgzX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg4NCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4NCwgcykgTkROQk9PU1RfUFBfSUYocCg4NCwgcyksIE5ETkJPT1NUX1BQX0ZPUl84NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oODQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg0X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg4NSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4NSwgcykgTkROQk9PU1RfUFBfSUYocCg4NSwgcyksIE5ETkJPT1NUX1BQX0ZPUl84NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oODUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg1X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg4NiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4NiwgcykgTkROQk9PU1RfUFBfSUYocCg4NiwgcyksIE5ETkJPT1NUX1BQX0ZPUl84NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oODYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg2X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg4NywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4NywgcykgTkROQk9PU1RfUFBfSUYocCg4NywgcyksIE5ETkJPT1NUX1BQX0ZPUl84NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oODcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg3X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg4OCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4OCwgcykgTkROQk9PU1RfUFBfSUYocCg4OCwgcyksIE5ETkJPT1NUX1BQX0ZPUl84OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oODgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg4X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg4OSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4OSwgcykgTkROQk9PU1RfUFBfSUYocCg4OSwgcyksIE5ETkJPT1NUX1BQX0ZPUl84OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oODksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg5X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg5MCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5MCwgcykgTkROQk9PU1RfUFBfSUYocCg5MCwgcyksIE5ETkJPT1NUX1BQX0ZPUl85MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oOTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzkwX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg5MSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5MSwgcykgTkROQk9PU1RfUFBfSUYocCg5MSwgcyksIE5ETkJPT1NUX1BQX0ZPUl85MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oOTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzkxX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg5MiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5MiwgcykgTkROQk9PU1RfUFBfSUYocCg5MiwgcyksIE5ETkJPT1NUX1BQX0ZPUl85MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oOTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzkyX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg5MywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5MywgcykgTkROQk9PU1RfUFBfSUYocCg5MywgcyksIE5ETkJPT1NUX1BQX0ZPUl85MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oOTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzkzX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg5NCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5NCwgcykgTkROQk9PU1RfUFBfSUYocCg5NCwgcyksIE5ETkJPT1NUX1BQX0ZPUl85NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oOTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk0X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg5NSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5NSwgcykgTkROQk9PU1RfUFBfSUYocCg5NSwgcyksIE5ETkJPT1NUX1BQX0ZPUl85NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oOTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk1X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg5NiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5NiwgcykgTkROQk9PU1RfUFBfSUYocCg5NiwgcyksIE5ETkJPT1NUX1BQX0ZPUl85NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oOTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk2X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg5NywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5NywgcykgTkROQk9PU1RfUFBfSUYocCg5NywgcyksIE5ETkJPT1NUX1BQX0ZPUl85NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oOTcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk3X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg5OCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5OCwgcykgTkROQk9PU1RfUFBfSUYocCg5OCwgcyksIE5ETkJPT1NUX1BQX0ZPUl85OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oOTgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk4X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg5OSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5OSwgcykgTkROQk9PU1RfUFBfSUYocCg5OSwgcyksIE5ETkJPT1NUX1BQX0ZPUl85OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oOTksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk5X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMDAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTAwLCBzKSBORE5CT09TVF9QUF9JRihwKDEwMCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMDAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEwMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTAwX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMDEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTAxLCBzKSBORE5CT09TVF9QUF9JRihwKDEwMSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMDEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEwMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTAxX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMDIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTAyLCBzKSBORE5CT09TVF9QUF9JRihwKDEwMiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMDIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEwMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTAyX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMDMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTAzLCBzKSBORE5CT09TVF9QUF9JRihwKDEwMywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMDMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEwMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTAzX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMDQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTA0LCBzKSBORE5CT09TVF9QUF9JRihwKDEwNCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMDQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEwNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA0X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMDUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTA1LCBzKSBORE5CT09TVF9QUF9JRihwKDEwNSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMDUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEwNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA1X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMDYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTA2LCBzKSBORE5CT09TVF9QUF9JRihwKDEwNiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMDYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEwNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA2X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMDcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTA3LCBzKSBORE5CT09TVF9QUF9JRihwKDEwNywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMDcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEwNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA3X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMDgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTA4LCBzKSBORE5CT09TVF9QUF9JRihwKDEwOCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMDgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEwOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA4X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMDksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTA5LCBzKSBORE5CT09TVF9QUF9JRihwKDEwOSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMDksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEwOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA5X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMTAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTEwLCBzKSBORE5CT09TVF9QUF9JRihwKDExMCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDExMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTEwX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMTEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTExLCBzKSBORE5CT09TVF9QUF9JRihwKDExMSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDExMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTExX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMTIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTEyLCBzKSBORE5CT09TVF9QUF9JRihwKDExMiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMTIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDExMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTEyX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMTMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTEzLCBzKSBORE5CT09TVF9QUF9JRihwKDExMywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDExMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTEzX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMTQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTE0LCBzKSBORE5CT09TVF9QUF9JRihwKDExNCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDExNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE0X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMTUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTE1LCBzKSBORE5CT09TVF9QUF9JRihwKDExNSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMTUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDExNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE1X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMTYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTE2LCBzKSBORE5CT09TVF9QUF9JRihwKDExNiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDExNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE2X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMTcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTE3LCBzKSBORE5CT09TVF9QUF9JRihwKDExNywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDExNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE3X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMTgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTE4LCBzKSBORE5CT09TVF9QUF9JRihwKDExOCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMTgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDExOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE4X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMTksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTE5LCBzKSBORE5CT09TVF9QUF9JRihwKDExOSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMTksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDExOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE5X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMjAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTIwLCBzKSBORE5CT09TVF9QUF9JRihwKDEyMCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMjAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEyMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTIwX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMjEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTIxLCBzKSBORE5CT09TVF9QUF9JRihwKDEyMSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMjEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEyMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTIxX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMjIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTIyLCBzKSBORE5CT09TVF9QUF9JRihwKDEyMiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMjIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEyMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTIyX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMjMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTIzLCBzKSBORE5CT09TVF9QUF9JRihwKDEyMywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMjMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEyMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTIzX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMjQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTI0LCBzKSBORE5CT09TVF9QUF9JRihwKDEyNCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMjQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEyNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI0X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMjUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTI1LCBzKSBORE5CT09TVF9QUF9JRihwKDEyNSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMjUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEyNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI1X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMjYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTI2LCBzKSBORE5CT09TVF9QUF9JRihwKDEyNiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMjYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEyNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI2X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMjcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTI3LCBzKSBORE5CT09TVF9QUF9JRihwKDEyNywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMjcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEyNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI3X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMjgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTI4LCBzKSBORE5CT09TVF9QUF9JRihwKDEyOCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMjgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEyOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI4X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMjksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTI5LCBzKSBORE5CT09TVF9QUF9JRihwKDEyOSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMjksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEyOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI5X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMzAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTMwLCBzKSBORE5CT09TVF9QUF9JRihwKDEzMCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMzAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEzMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTMwX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMzEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTMxLCBzKSBORE5CT09TVF9QUF9JRihwKDEzMSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMzEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEzMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTMxX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMzIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTMyLCBzKSBORE5CT09TVF9QUF9JRihwKDEzMiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMzIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEzMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTMyX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMzMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTMzLCBzKSBORE5CT09TVF9QUF9JRihwKDEzMywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMzMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEzMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTMzX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMzQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTM0LCBzKSBORE5CT09TVF9QUF9JRihwKDEzNCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMzQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEzNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM0X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMzUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTM1LCBzKSBORE5CT09TVF9QUF9JRihwKDEzNSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMzUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEzNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM1X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMzYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTM2LCBzKSBORE5CT09TVF9QUF9JRihwKDEzNiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMzYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEzNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM2X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMzcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTM3LCBzKSBORE5CT09TVF9QUF9JRihwKDEzNywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMzcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEzNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM3X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMzgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTM4LCBzKSBORE5CT09TVF9QUF9JRihwKDEzOCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMzgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEzOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM4X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMzksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTM5LCBzKSBORE5CT09TVF9QUF9JRihwKDEzOSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMzksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEzOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM5X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNDAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQwLCBzKSBORE5CT09TVF9QUF9JRihwKDE0MCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNDAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE0MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQwX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNDEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQxLCBzKSBORE5CT09TVF9QUF9JRihwKDE0MSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNDEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE0MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQxX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNDIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQyLCBzKSBORE5CT09TVF9QUF9JRihwKDE0MiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNDIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE0MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQyX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNDMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQzLCBzKSBORE5CT09TVF9QUF9JRihwKDE0MywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNDMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE0MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQzX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNDQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQ0LCBzKSBORE5CT09TVF9QUF9JRihwKDE0NCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNDQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE0NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ0X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNDUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQ1LCBzKSBORE5CT09TVF9QUF9JRihwKDE0NSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNDUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE0NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ1X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNDYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQ2LCBzKSBORE5CT09TVF9QUF9JRihwKDE0NiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNDYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE0NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ2X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNDcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQ3LCBzKSBORE5CT09TVF9QUF9JRihwKDE0NywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNDcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE0NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ3X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNDgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQ4LCBzKSBORE5CT09TVF9QUF9JRihwKDE0OCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNDgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE0OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ4X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNDksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQ5LCBzKSBORE5CT09TVF9QUF9JRihwKDE0OSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNDksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE0OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ5X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNTAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTUwLCBzKSBORE5CT09TVF9QUF9JRihwKDE1MCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE1MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTUwX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNTEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTUxLCBzKSBORE5CT09TVF9QUF9JRihwKDE1MSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE1MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTUxX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNTIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTUyLCBzKSBORE5CT09TVF9QUF9JRihwKDE1MiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNTIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE1MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTUyX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNTMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTUzLCBzKSBORE5CT09TVF9QUF9JRihwKDE1MywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE1MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTUzX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNTQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTU0LCBzKSBORE5CT09TVF9QUF9JRihwKDE1NCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE1NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU0X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNTUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTU1LCBzKSBORE5CT09TVF9QUF9JRihwKDE1NSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNTUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE1NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU1X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNTYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTU2LCBzKSBORE5CT09TVF9QUF9JRihwKDE1NiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE1NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU2X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNTcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTU3LCBzKSBORE5CT09TVF9QUF9JRihwKDE1NywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE1NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU3X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNTgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTU4LCBzKSBORE5CT09TVF9QUF9JRihwKDE1OCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNTgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE1OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU4X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNTksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTU5LCBzKSBORE5CT09TVF9QUF9JRihwKDE1OSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNTksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE1OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU5X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNjAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTYwLCBzKSBORE5CT09TVF9QUF9JRihwKDE2MCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNjAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE2MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTYwX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNjEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTYxLCBzKSBORE5CT09TVF9QUF9JRihwKDE2MSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNjEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE2MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTYxX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNjIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTYyLCBzKSBORE5CT09TVF9QUF9JRihwKDE2MiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNjIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE2MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTYyX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNjMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTYzLCBzKSBORE5CT09TVF9QUF9JRihwKDE2MywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNjMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE2MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTYzX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNjQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTY0LCBzKSBORE5CT09TVF9QUF9JRihwKDE2NCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNjQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE2NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY0X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNjUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTY1LCBzKSBORE5CT09TVF9QUF9JRihwKDE2NSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNjUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE2NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY1X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNjYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTY2LCBzKSBORE5CT09TVF9QUF9JRihwKDE2NiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNjYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE2NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY2X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNjcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTY3LCBzKSBORE5CT09TVF9QUF9JRihwKDE2NywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNjcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE2NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY3X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNjgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTY4LCBzKSBORE5CT09TVF9QUF9JRihwKDE2OCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNjgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE2OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY4X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNjksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTY5LCBzKSBORE5CT09TVF9QUF9JRihwKDE2OSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNjksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE2OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY5X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNzAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTcwLCBzKSBORE5CT09TVF9QUF9JRihwKDE3MCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNzAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE3MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTcwX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNzEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTcxLCBzKSBORE5CT09TVF9QUF9JRihwKDE3MSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNzEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE3MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTcxX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNzIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTcyLCBzKSBORE5CT09TVF9QUF9JRihwKDE3MiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNzIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE3MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTcyX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNzMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTczLCBzKSBORE5CT09TVF9QUF9JRihwKDE3MywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNzMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE3MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTczX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNzQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTc0LCBzKSBORE5CT09TVF9QUF9JRihwKDE3NCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNzQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE3NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc0X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNzUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTc1LCBzKSBORE5CT09TVF9QUF9JRihwKDE3NSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNzUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE3NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc1X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNzYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTc2LCBzKSBORE5CT09TVF9QUF9JRihwKDE3NiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNzYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE3NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc2X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNzcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTc3LCBzKSBORE5CT09TVF9QUF9JRihwKDE3NywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNzcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE3NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc3X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNzgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTc4LCBzKSBORE5CT09TVF9QUF9JRihwKDE3OCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNzgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE3OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc4X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNzksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTc5LCBzKSBORE5CT09TVF9QUF9JRihwKDE3OSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNzksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE3OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc5X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxODAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTgwLCBzKSBORE5CT09TVF9QUF9JRihwKDE4MCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xODAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE4MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTgwX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxODEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTgxLCBzKSBORE5CT09TVF9QUF9JRihwKDE4MSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xODEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE4MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTgxX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxODIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTgyLCBzKSBORE5CT09TVF9QUF9JRihwKDE4MiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xODIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE4MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTgyX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxODMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTgzLCBzKSBORE5CT09TVF9QUF9JRihwKDE4MywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xODMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE4MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTgzX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxODQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTg0LCBzKSBORE5CT09TVF9QUF9JRihwKDE4NCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xODQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE4NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg0X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxODUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTg1LCBzKSBORE5CT09TVF9QUF9JRihwKDE4NSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xODUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE4NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg1X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxODYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTg2LCBzKSBORE5CT09TVF9QUF9JRihwKDE4NiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xODYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE4NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg2X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxODcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTg3LCBzKSBORE5CT09TVF9QUF9JRihwKDE4NywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xODcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE4NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg3X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxODgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTg4LCBzKSBORE5CT09TVF9QUF9JRihwKDE4OCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xODgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE4OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg4X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxODksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTg5LCBzKSBORE5CT09TVF9QUF9JRihwKDE4OSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xODksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE4OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg5X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxOTAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTkwLCBzKSBORE5CT09TVF9QUF9JRihwKDE5MCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xOTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE5MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTkwX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxOTEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTkxLCBzKSBORE5CT09TVF9QUF9JRihwKDE5MSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xOTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE5MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTkxX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxOTIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTkyLCBzKSBORE5CT09TVF9QUF9JRihwKDE5MiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xOTIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE5MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTkyX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxOTMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTkzLCBzKSBORE5CT09TVF9QUF9JRihwKDE5MywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xOTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE5MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTkzX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxOTQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTk0LCBzKSBORE5CT09TVF9QUF9JRihwKDE5NCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xOTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE5NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk0X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxOTUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTk1LCBzKSBORE5CT09TVF9QUF9JRihwKDE5NSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xOTUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE5NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk1X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxOTYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTk2LCBzKSBORE5CT09TVF9QUF9JRihwKDE5NiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xOTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE5NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk2X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxOTcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTk3LCBzKSBORE5CT09TVF9QUF9JRihwKDE5NywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xOTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE5NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk3X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxOTgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTk4LCBzKSBORE5CT09TVF9QUF9JRihwKDE5OCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xOTgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE5OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk4X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxOTksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTk5LCBzKSBORE5CT09TVF9QUF9JRihwKDE5OSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xOTksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE5OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk5X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMDAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjAwLCBzKSBORE5CT09TVF9QUF9JRihwKDIwMCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMDAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIwMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAwX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMDEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjAxLCBzKSBORE5CT09TVF9QUF9JRihwKDIwMSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMDEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIwMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAxX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMDIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjAyLCBzKSBORE5CT09TVF9QUF9JRihwKDIwMiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMDIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIwMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAyX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMDMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjAzLCBzKSBORE5CT09TVF9QUF9JRihwKDIwMywgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMDMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIwMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAzX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMDQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjA0LCBzKSBORE5CT09TVF9QUF9JRihwKDIwNCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMDQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIwNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA0X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMDUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjA1LCBzKSBORE5CT09TVF9QUF9JRihwKDIwNSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMDUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIwNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA1X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMDYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjA2LCBzKSBORE5CT09TVF9QUF9JRihwKDIwNiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMDYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIwNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA2X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMDcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjA3LCBzKSBORE5CT09TVF9QUF9JRihwKDIwNywgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMDcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIwNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA3X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMDgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjA4LCBzKSBORE5CT09TVF9QUF9JRihwKDIwOCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMDgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIwOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA4X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMDksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjA5LCBzKSBORE5CT09TVF9QUF9JRihwKDIwOSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMDksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIwOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA5X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMTAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjEwLCBzKSBORE5CT09TVF9QUF9JRihwKDIxMCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIxMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjEwX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMTEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjExLCBzKSBORE5CT09TVF9QUF9JRihwKDIxMSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIxMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjExX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMTIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjEyLCBzKSBORE5CT09TVF9QUF9JRihwKDIxMiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMTIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIxMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjEyX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMTMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjEzLCBzKSBORE5CT09TVF9QUF9JRihwKDIxMywgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIxMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjEzX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMTQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjE0LCBzKSBORE5CT09TVF9QUF9JRihwKDIxNCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIxNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE0X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMTUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjE1LCBzKSBORE5CT09TVF9QUF9JRihwKDIxNSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMTUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIxNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE1X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMTYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjE2LCBzKSBORE5CT09TVF9QUF9JRihwKDIxNiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIxNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE2X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMTcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjE3LCBzKSBORE5CT09TVF9QUF9JRihwKDIxNywgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIxNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE3X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMTgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjE4LCBzKSBORE5CT09TVF9QUF9JRihwKDIxOCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMTgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIxOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE4X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMTksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjE5LCBzKSBORE5CT09TVF9QUF9JRihwKDIxOSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMTksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIxOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE5X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMjAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjIwLCBzKSBORE5CT09TVF9QUF9JRihwKDIyMCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMjAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIyMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjIwX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMjEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjIxLCBzKSBORE5CT09TVF9QUF9JRihwKDIyMSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMjEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIyMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjIxX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMjIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjIyLCBzKSBORE5CT09TVF9QUF9JRihwKDIyMiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMjIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIyMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjIyX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMjMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjIzLCBzKSBORE5CT09TVF9QUF9JRihwKDIyMywgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMjMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIyMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjIzX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMjQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjI0LCBzKSBORE5CT09TVF9QUF9JRihwKDIyNCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMjQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIyNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI0X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMjUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjI1LCBzKSBORE5CT09TVF9QUF9JRihwKDIyNSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMjUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIyNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI1X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMjYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjI2LCBzKSBORE5CT09TVF9QUF9JRihwKDIyNiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMjYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIyNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI2X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMjcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjI3LCBzKSBORE5CT09TVF9QUF9JRihwKDIyNywgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMjcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIyNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI3X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMjgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjI4LCBzKSBORE5CT09TVF9QUF9JRihwKDIyOCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMjgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIyOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI4X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMjksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjI5LCBzKSBORE5CT09TVF9QUF9JRihwKDIyOSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMjksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIyOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI5X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMzAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjMwLCBzKSBORE5CT09TVF9QUF9JRihwKDIzMCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMzAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIzMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMwX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMzEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjMxLCBzKSBORE5CT09TVF9QUF9JRihwKDIzMSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMzEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIzMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMxX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMzIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjMyLCBzKSBORE5CT09TVF9QUF9JRihwKDIzMiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMzIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIzMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMyX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMzMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjMzLCBzKSBORE5CT09TVF9QUF9JRihwKDIzMywgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMzMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIzMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMzX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMzQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjM0LCBzKSBORE5CT09TVF9QUF9JRihwKDIzNCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMzQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIzNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM0X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMzUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjM1LCBzKSBORE5CT09TVF9QUF9JRihwKDIzNSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMzUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIzNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM1X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMzYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjM2LCBzKSBORE5CT09TVF9QUF9JRihwKDIzNiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMzYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIzNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM2X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMzcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjM3LCBzKSBORE5CT09TVF9QUF9JRihwKDIzNywgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMzcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIzNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM3X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMzgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjM4LCBzKSBORE5CT09TVF9QUF9JRihwKDIzOCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMzgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIzOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM4X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMzksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjM5LCBzKSBORE5CT09TVF9QUF9JRihwKDIzOSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMzksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIzOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM5X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNDAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQwLCBzKSBORE5CT09TVF9QUF9JRihwKDI0MCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNDAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI0MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQwX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNDEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQxLCBzKSBORE5CT09TVF9QUF9JRihwKDI0MSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNDEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI0MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQxX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNDIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQyLCBzKSBORE5CT09TVF9QUF9JRihwKDI0MiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNDIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI0MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQyX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNDMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQzLCBzKSBORE5CT09TVF9QUF9JRihwKDI0MywgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNDMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI0MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQzX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNDQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQ0LCBzKSBORE5CT09TVF9QUF9JRihwKDI0NCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNDQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI0NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ0X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNDUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQ1LCBzKSBORE5CT09TVF9QUF9JRihwKDI0NSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNDUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI0NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ1X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNDYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQ2LCBzKSBORE5CT09TVF9QUF9JRihwKDI0NiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNDYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI0NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ2X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNDcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQ3LCBzKSBORE5CT09TVF9QUF9JRihwKDI0NywgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNDcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI0NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ3X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNDgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQ4LCBzKSBORE5CT09TVF9QUF9JRihwKDI0OCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNDgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI0OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ4X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNDksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQ5LCBzKSBORE5CT09TVF9QUF9JRihwKDI0OSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNDksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI0OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ5X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNTAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjUwLCBzKSBORE5CT09TVF9QUF9JRihwKDI1MCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI1MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjUwX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNTEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjUxLCBzKSBORE5CT09TVF9QUF9JRihwKDI1MSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI1MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjUxX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNTIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjUyLCBzKSBORE5CT09TVF9QUF9JRihwKDI1MiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNTIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI1MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjUyX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNTMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjUzLCBzKSBORE5CT09TVF9QUF9JRihwKDI1MywgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI1MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjUzX0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNTQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjU0LCBzKSBORE5CT09TVF9QUF9JRihwKDI1NCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI1NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjU0X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNTUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjU1LCBzKSBORE5CT09TVF9QUF9JRihwKDI1NSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNTUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI1NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjU1X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNTYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjU2LCBzKSBORE5CT09TVF9QUF9JRihwKDI1NiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI1NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjU2X0kocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNTcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjU3LCBzKSBORE5CT09TVF9QUF9JRihwKDI1NywgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI1NywgcyksIHAsIG8sIG0pCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2RldGFpbC9mb3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9kZXRhaWwvZm9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWVmMzc1OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2RldGFpbC9mb3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTM2ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVUSVRJT05fREVUQUlMX0ZPUl9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9SRVBFVElUSU9OX0RFVEFJTF9GT1JfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2V4cHJfaWlmLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvaWlmLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvYm9vbC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lYXQuaHBwPgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzFfQyhORE5CT09TVF9QUF9CT09MKHAoMiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzJfQyhORE5CT09TVF9QUF9CT09MKHAoMywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzNfQyhORE5CT09TVF9QUF9CT09MKHAoNCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzRfQyhORE5CT09TVF9QUF9CT09MKHAoNSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzVfQyhORE5CT09TVF9QUF9CT09MKHAoNiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzZfQyhORE5CT09TVF9QUF9CT09MKHAoNywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzdfQyhORE5CT09TVF9QUF9CT09MKHAoOCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzhfQyhORE5CT09TVF9QUF9CT09MKHAoOSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzlfQyhORE5CT09TVF9QUF9CT09MKHAoMTAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTBfQyhORE5CT09TVF9QUF9CT09MKHAoMTEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTFfQyhORE5CT09TVF9QUF9CT09MKHAoMTIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTJfQyhORE5CT09TVF9QUF9CT09MKHAoMTMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTNfQyhORE5CT09TVF9QUF9CT09MKHAoMTQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTRfQyhORE5CT09TVF9QUF9CT09MKHAoMTUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTVfQyhORE5CT09TVF9QUF9CT09MKHAoMTYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTZfQyhORE5CT09TVF9QUF9CT09MKHAoMTcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTdfQyhORE5CT09TVF9QUF9CT09MKHAoMTgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMThfQyhORE5CT09TVF9QUF9CT09MKHAoMTksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTlfQyhORE5CT09TVF9QUF9CT09MKHAoMjAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjBfQyhORE5CT09TVF9QUF9CT09MKHAoMjEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjFfQyhORE5CT09TVF9QUF9CT09MKHAoMjIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjJfQyhORE5CT09TVF9QUF9CT09MKHAoMjMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjNfQyhORE5CT09TVF9QUF9CT09MKHAoMjQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjRfQyhORE5CT09TVF9QUF9CT09MKHAoMjUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjVfQyhORE5CT09TVF9QUF9CT09MKHAoMjYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjZfQyhORE5CT09TVF9QUF9CT09MKHAoMjcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjdfQyhORE5CT09TVF9QUF9CT09MKHAoMjgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjhfQyhORE5CT09TVF9QUF9CT09MKHAoMjksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjlfQyhORE5CT09TVF9QUF9CT09MKHAoMzAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMzBfQyhORE5CT09TVF9QUF9CT09MKHAoMzEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMzFfQyhORE5CT09TVF9QUF9CT09MKHAoMzIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMzJfQyhORE5CT09TVF9QUF9CT09MKHAoMzMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMzNfQyhORE5CT09TVF9QUF9CT09MKHAoMzQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMzRfQyhORE5CT09TVF9QUF9CT09MKHAoMzUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMzVfQyhORE5CT09TVF9QUF9CT09MKHAoMzYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMzZfQyhORE5CT09TVF9QUF9CT09MKHAoMzcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMzdfQyhORE5CT09TVF9QUF9CT09MKHAoMzgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMzhfQyhORE5CT09TVF9QUF9CT09MKHAoMzksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMzlfQyhORE5CT09TVF9QUF9CT09MKHAoNDAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNDBfQyhORE5CT09TVF9QUF9CT09MKHAoNDEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNDFfQyhORE5CT09TVF9QUF9CT09MKHAoNDIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNDJfQyhORE5CT09TVF9QUF9CT09MKHAoNDMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNDNfQyhORE5CT09TVF9QUF9CT09MKHAoNDQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNDRfQyhORE5CT09TVF9QUF9CT09MKHAoNDUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNDVfQyhORE5CT09TVF9QUF9CT09MKHAoNDYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNDZfQyhORE5CT09TVF9QUF9CT09MKHAoNDcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNDdfQyhORE5CT09TVF9QUF9CT09MKHAoNDgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNDhfQyhORE5CT09TVF9QUF9CT09MKHAoNDksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNDlfQyhORE5CT09TVF9QUF9CT09MKHAoNTAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNTBfQyhORE5CT09TVF9QUF9CT09MKHAoNTEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNTFfQyhORE5CT09TVF9QUF9CT09MKHAoNTIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNTJfQyhORE5CT09TVF9QUF9CT09MKHAoNTMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNTNfQyhORE5CT09TVF9QUF9CT09MKHAoNTQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNTRfQyhORE5CT09TVF9QUF9CT09MKHAoNTUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNTVfQyhORE5CT09TVF9QUF9CT09MKHAoNTYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNTZfQyhORE5CT09TVF9QUF9CT09MKHAoNTcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNTdfQyhORE5CT09TVF9QUF9CT09MKHAoNTgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNThfQyhORE5CT09TVF9QUF9CT09MKHAoNTksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNTlfQyhORE5CT09TVF9QUF9CT09MKHAoNjAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNjBfQyhORE5CT09TVF9QUF9CT09MKHAoNjEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNjFfQyhORE5CT09TVF9QUF9CT09MKHAoNjIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNjJfQyhORE5CT09TVF9QUF9CT09MKHAoNjMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNjNfQyhORE5CT09TVF9QUF9CT09MKHAoNjQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNjRfQyhORE5CT09TVF9QUF9CT09MKHAoNjUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNjVfQyhORE5CT09TVF9QUF9CT09MKHAoNjYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNjZfQyhORE5CT09TVF9QUF9CT09MKHAoNjcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNjdfQyhORE5CT09TVF9QUF9CT09MKHAoNjgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNjhfQyhORE5CT09TVF9QUF9CT09MKHAoNjksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNjlfQyhORE5CT09TVF9QUF9CT09MKHAoNzAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNzBfQyhORE5CT09TVF9QUF9CT09MKHAoNzEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNzFfQyhORE5CT09TVF9QUF9CT09MKHAoNzIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNzJfQyhORE5CT09TVF9QUF9CT09MKHAoNzMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNzNfQyhORE5CT09TVF9QUF9CT09MKHAoNzQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNzRfQyhORE5CT09TVF9QUF9CT09MKHAoNzUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNzVfQyhORE5CT09TVF9QUF9CT09MKHAoNzYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNzZfQyhORE5CT09TVF9QUF9CT09MKHAoNzcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNzdfQyhORE5CT09TVF9QUF9CT09MKHAoNzgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNzhfQyhORE5CT09TVF9QUF9CT09MKHAoNzksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNzlfQyhORE5CT09TVF9QUF9CT09MKHAoODAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfODBfQyhORE5CT09TVF9QUF9CT09MKHAoODEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfODFfQyhORE5CT09TVF9QUF9CT09MKHAoODIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfODJfQyhORE5CT09TVF9QUF9CT09MKHAoODMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfODNfQyhORE5CT09TVF9QUF9CT09MKHAoODQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfODRfQyhORE5CT09TVF9QUF9CT09MKHAoODUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfODVfQyhORE5CT09TVF9QUF9CT09MKHAoODYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfODZfQyhORE5CT09TVF9QUF9CT09MKHAoODcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfODdfQyhORE5CT09TVF9QUF9CT09MKHAoODgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfODhfQyhORE5CT09TVF9QUF9CT09MKHAoODksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfODlfQyhORE5CT09TVF9QUF9CT09MKHAoOTAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOTBfQyhORE5CT09TVF9QUF9CT09MKHAoOTEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOTFfQyhORE5CT09TVF9QUF9CT09MKHAoOTIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOTJfQyhORE5CT09TVF9QUF9CT09MKHAoOTMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOTNfQyhORE5CT09TVF9QUF9CT09MKHAoOTQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOTRfQyhORE5CT09TVF9QUF9CT09MKHAoOTUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOTVfQyhORE5CT09TVF9QUF9CT09MKHAoOTYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOTZfQyhORE5CT09TVF9QUF9CT09MKHAoOTcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOTdfQyhORE5CT09TVF9QUF9CT09MKHAoOTgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOThfQyhORE5CT09TVF9QUF9CT09MKHAoOTksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOTlfQyhORE5CT09TVF9QUF9CT09MKHAoMTAwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTAwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMDBfQyhORE5CT09TVF9QUF9CT09MKHAoMTAxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTAxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMDFfQyhORE5CT09TVF9QUF9CT09MKHAoMTAyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTAyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMDJfQyhORE5CT09TVF9QUF9CT09MKHAoMTAzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTAzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMDNfQyhORE5CT09TVF9QUF9CT09MKHAoMTA0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMDRfQyhORE5CT09TVF9QUF9CT09MKHAoMTA1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMDVfQyhORE5CT09TVF9QUF9CT09MKHAoMTA2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMDZfQyhORE5CT09TVF9QUF9CT09MKHAoMTA3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMDdfQyhORE5CT09TVF9QUF9CT09MKHAoMTA4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMDhfQyhORE5CT09TVF9QUF9CT09MKHAoMTA5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMDlfQyhORE5CT09TVF9QUF9CT09MKHAoMTEwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTEwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMTBfQyhORE5CT09TVF9QUF9CT09MKHAoMTExLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTExKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMTFfQyhORE5CT09TVF9QUF9CT09MKHAoMTEyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTEyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMTJfQyhORE5CT09TVF9QUF9CT09MKHAoMTEzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTEzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMTNfQyhORE5CT09TVF9QUF9CT09MKHAoMTE0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMTRfQyhORE5CT09TVF9QUF9CT09MKHAoMTE1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMTVfQyhORE5CT09TVF9QUF9CT09MKHAoMTE2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMTZfQyhORE5CT09TVF9QUF9CT09MKHAoMTE3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMTdfQyhORE5CT09TVF9QUF9CT09MKHAoMTE4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMThfQyhORE5CT09TVF9QUF9CT09MKHAoMTE5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMTlfQyhORE5CT09TVF9QUF9CT09MKHAoMTIwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTIwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMjBfQyhORE5CT09TVF9QUF9CT09MKHAoMTIxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTIxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMjFfQyhORE5CT09TVF9QUF9CT09MKHAoMTIyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTIyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMjJfQyhORE5CT09TVF9QUF9CT09MKHAoMTIzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTIzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMjNfQyhORE5CT09TVF9QUF9CT09MKHAoMTI0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMjRfQyhORE5CT09TVF9QUF9CT09MKHAoMTI1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMjVfQyhORE5CT09TVF9QUF9CT09MKHAoMTI2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMjZfQyhORE5CT09TVF9QUF9CT09MKHAoMTI3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMjdfQyhORE5CT09TVF9QUF9CT09MKHAoMTI4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMjhfQyhORE5CT09TVF9QUF9CT09MKHAoMTI5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMjlfQyhORE5CT09TVF9QUF9CT09MKHAoMTMwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTMwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMzBfQyhORE5CT09TVF9QUF9CT09MKHAoMTMxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTMxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMzFfQyhORE5CT09TVF9QUF9CT09MKHAoMTMyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTMyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMzJfQyhORE5CT09TVF9QUF9CT09MKHAoMTMzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTMzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMzNfQyhORE5CT09TVF9QUF9CT09MKHAoMTM0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMzRfQyhORE5CT09TVF9QUF9CT09MKHAoMTM1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMzVfQyhORE5CT09TVF9QUF9CT09MKHAoMTM2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMzZfQyhORE5CT09TVF9QUF9CT09MKHAoMTM3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMzdfQyhORE5CT09TVF9QUF9CT09MKHAoMTM4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMzhfQyhORE5CT09TVF9QUF9CT09MKHAoMTM5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMzlfQyhORE5CT09TVF9QUF9CT09MKHAoMTQwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNDBfQyhORE5CT09TVF9QUF9CT09MKHAoMTQxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNDFfQyhORE5CT09TVF9QUF9CT09MKHAoMTQyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNDJfQyhORE5CT09TVF9QUF9CT09MKHAoMTQzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNDNfQyhORE5CT09TVF9QUF9CT09MKHAoMTQ0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNDRfQyhORE5CT09TVF9QUF9CT09MKHAoMTQ1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNDVfQyhORE5CT09TVF9QUF9CT09MKHAoMTQ2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNDZfQyhORE5CT09TVF9QUF9CT09MKHAoMTQ3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNDdfQyhORE5CT09TVF9QUF9CT09MKHAoMTQ4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNDhfQyhORE5CT09TVF9QUF9CT09MKHAoMTQ5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNDlfQyhORE5CT09TVF9QUF9CT09MKHAoMTUwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTUwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNTBfQyhORE5CT09TVF9QUF9CT09MKHAoMTUxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTUxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNTFfQyhORE5CT09TVF9QUF9CT09MKHAoMTUyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTUyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNTJfQyhORE5CT09TVF9QUF9CT09MKHAoMTUzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTUzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNTNfQyhORE5CT09TVF9QUF9CT09MKHAoMTU0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNTRfQyhORE5CT09TVF9QUF9CT09MKHAoMTU1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNTVfQyhORE5CT09TVF9QUF9CT09MKHAoMTU2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNTZfQyhORE5CT09TVF9QUF9CT09MKHAoMTU3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNTdfQyhORE5CT09TVF9QUF9CT09MKHAoMTU4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNThfQyhORE5CT09TVF9QUF9CT09MKHAoMTU5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNTlfQyhORE5CT09TVF9QUF9CT09MKHAoMTYwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTYwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNjBfQyhORE5CT09TVF9QUF9CT09MKHAoMTYxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTYxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNjFfQyhORE5CT09TVF9QUF9CT09MKHAoMTYyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTYyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNjJfQyhORE5CT09TVF9QUF9CT09MKHAoMTYzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTYzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNjNfQyhORE5CT09TVF9QUF9CT09MKHAoMTY0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNjRfQyhORE5CT09TVF9QUF9CT09MKHAoMTY1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNjVfQyhORE5CT09TVF9QUF9CT09MKHAoMTY2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNjZfQyhORE5CT09TVF9QUF9CT09MKHAoMTY3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNjdfQyhORE5CT09TVF9QUF9CT09MKHAoMTY4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNjhfQyhORE5CT09TVF9QUF9CT09MKHAoMTY5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNjlfQyhORE5CT09TVF9QUF9CT09MKHAoMTcwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTcwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNzBfQyhORE5CT09TVF9QUF9CT09MKHAoMTcxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTcxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNzFfQyhORE5CT09TVF9QUF9CT09MKHAoMTcyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTcyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNzJfQyhORE5CT09TVF9QUF9CT09MKHAoMTczLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTczKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNzNfQyhORE5CT09TVF9QUF9CT09MKHAoMTc0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNzRfQyhORE5CT09TVF9QUF9CT09MKHAoMTc1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNzVfQyhORE5CT09TVF9QUF9CT09MKHAoMTc2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNzZfQyhORE5CT09TVF9QUF9CT09MKHAoMTc3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNzdfQyhORE5CT09TVF9QUF9CT09MKHAoMTc4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNzhfQyhORE5CT09TVF9QUF9CT09MKHAoMTc5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNzlfQyhORE5CT09TVF9QUF9CT09MKHAoMTgwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTgwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xODBfQyhORE5CT09TVF9QUF9CT09MKHAoMTgxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTgxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xODFfQyhORE5CT09TVF9QUF9CT09MKHAoMTgyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTgyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xODJfQyhORE5CT09TVF9QUF9CT09MKHAoMTgzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTgzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xODNfQyhORE5CT09TVF9QUF9CT09MKHAoMTg0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xODRfQyhORE5CT09TVF9QUF9CT09MKHAoMTg1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xODVfQyhORE5CT09TVF9QUF9CT09MKHAoMTg2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xODZfQyhORE5CT09TVF9QUF9CT09MKHAoMTg3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xODdfQyhORE5CT09TVF9QUF9CT09MKHAoMTg4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xODhfQyhORE5CT09TVF9QUF9CT09MKHAoMTg5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xODlfQyhORE5CT09TVF9QUF9CT09MKHAoMTkwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTkwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOTBfQyhORE5CT09TVF9QUF9CT09MKHAoMTkxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTkxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOTFfQyhORE5CT09TVF9QUF9CT09MKHAoMTkyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTkyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOTJfQyhORE5CT09TVF9QUF9CT09MKHAoMTkzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTkzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOTNfQyhORE5CT09TVF9QUF9CT09MKHAoMTk0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOTRfQyhORE5CT09TVF9QUF9CT09MKHAoMTk1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOTVfQyhORE5CT09TVF9QUF9CT09MKHAoMTk2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOTZfQyhORE5CT09TVF9QUF9CT09MKHAoMTk3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOTdfQyhORE5CT09TVF9QUF9CT09MKHAoMTk4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOThfQyhORE5CT09TVF9QUF9CT09MKHAoMTk5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOTlfQyhORE5CT09TVF9QUF9CT09MKHAoMjAwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMDBfQyhORE5CT09TVF9QUF9CT09MKHAoMjAxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMDFfQyhORE5CT09TVF9QUF9CT09MKHAoMjAyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMDJfQyhORE5CT09TVF9QUF9CT09MKHAoMjAzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMDNfQyhORE5CT09TVF9QUF9CT09MKHAoMjA0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMDRfQyhORE5CT09TVF9QUF9CT09MKHAoMjA1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMDVfQyhORE5CT09TVF9QUF9CT09MKHAoMjA2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMDZfQyhORE5CT09TVF9QUF9CT09MKHAoMjA3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMDdfQyhORE5CT09TVF9QUF9CT09MKHAoMjA4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMDhfQyhORE5CT09TVF9QUF9CT09MKHAoMjA5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMDlfQyhORE5CT09TVF9QUF9CT09MKHAoMjEwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjEwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMTBfQyhORE5CT09TVF9QUF9CT09MKHAoMjExLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjExKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMTFfQyhORE5CT09TVF9QUF9CT09MKHAoMjEyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjEyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMTJfQyhORE5CT09TVF9QUF9CT09MKHAoMjEzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjEzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMTNfQyhORE5CT09TVF9QUF9CT09MKHAoMjE0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMTRfQyhORE5CT09TVF9QUF9CT09MKHAoMjE1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMTVfQyhORE5CT09TVF9QUF9CT09MKHAoMjE2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMTZfQyhORE5CT09TVF9QUF9CT09MKHAoMjE3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMTdfQyhORE5CT09TVF9QUF9CT09MKHAoMjE4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMThfQyhORE5CT09TVF9QUF9CT09MKHAoMjE5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMTlfQyhORE5CT09TVF9QUF9CT09MKHAoMjIwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjIwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMjBfQyhORE5CT09TVF9QUF9CT09MKHAoMjIxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjIxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMjFfQyhORE5CT09TVF9QUF9CT09MKHAoMjIyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjIyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMjJfQyhORE5CT09TVF9QUF9CT09MKHAoMjIzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjIzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMjNfQyhORE5CT09TVF9QUF9CT09MKHAoMjI0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMjRfQyhORE5CT09TVF9QUF9CT09MKHAoMjI1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMjVfQyhORE5CT09TVF9QUF9CT09MKHAoMjI2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMjZfQyhORE5CT09TVF9QUF9CT09MKHAoMjI3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMjdfQyhORE5CT09TVF9QUF9CT09MKHAoMjI4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMjhfQyhORE5CT09TVF9QUF9CT09MKHAoMjI5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMjlfQyhORE5CT09TVF9QUF9CT09MKHAoMjMwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMzBfQyhORE5CT09TVF9QUF9CT09MKHAoMjMxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMzFfQyhORE5CT09TVF9QUF9CT09MKHAoMjMyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMzJfQyhORE5CT09TVF9QUF9CT09MKHAoMjMzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMzNfQyhORE5CT09TVF9QUF9CT09MKHAoMjM0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMzRfQyhORE5CT09TVF9QUF9CT09MKHAoMjM1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMzVfQyhORE5CT09TVF9QUF9CT09MKHAoMjM2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMzZfQyhORE5CT09TVF9QUF9CT09MKHAoMjM3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMzdfQyhORE5CT09TVF9QUF9CT09MKHAoMjM4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMzhfQyhORE5CT09TVF9QUF9CT09MKHAoMjM5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMzlfQyhORE5CT09TVF9QUF9CT09MKHAoMjQwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNDBfQyhORE5CT09TVF9QUF9CT09MKHAoMjQxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNDFfQyhORE5CT09TVF9QUF9CT09MKHAoMjQyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNDJfQyhORE5CT09TVF9QUF9CT09MKHAoMjQzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNDNfQyhORE5CT09TVF9QUF9CT09MKHAoMjQ0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNDRfQyhORE5CT09TVF9QUF9CT09MKHAoMjQ1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNDVfQyhORE5CT09TVF9QUF9CT09MKHAoMjQ2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNDZfQyhORE5CT09TVF9QUF9CT09MKHAoMjQ3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNDdfQyhORE5CT09TVF9QUF9CT09MKHAoMjQ4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNDhfQyhORE5CT09TVF9QUF9CT09MKHAoMjQ5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNDlfQyhORE5CT09TVF9QUF9CT09MKHAoMjUwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjUwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNTBfQyhORE5CT09TVF9QUF9CT09MKHAoMjUxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjUxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNTFfQyhORE5CT09TVF9QUF9CT09MKHAoMjUyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjUyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNTJfQyhORE5CT09TVF9QUF9CT09MKHAoMjUzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjUzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNTNfQyhORE5CT09TVF9QUF9CT09MKHAoMjU0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjU0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNTRfQyhORE5CT09TVF9QUF9CT09MKHAoMjU1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjU1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNTVfQyhORE5CT09TVF9QUF9CT09MKHAoMjU2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjU2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNTZfQyhORE5CT09TVF9QUF9CT09MKHAoMjU3LCBzKSksIHMsIHAsIG8sIG0pCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8zLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfM19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl80LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl81LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl82LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl83LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfN19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl84LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl85LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzExLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yN19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzMCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8zMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDMwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zMF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMzEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgzMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDMyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzMyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMzIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzMyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzMywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8zMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDMzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zM19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMzQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgzNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDM1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzM1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMzUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzNiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8zNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDM2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zNl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMzcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgzNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDM4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzM4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMzgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzOSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8zOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDM5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zOV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNDAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg0MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzQxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNDEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0MiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl80MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDQyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80Ml9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNDMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg0MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQ0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzQ0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNDQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0NSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl80NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDQ1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80NV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNDYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg0NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQ3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzQ3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNDcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0OCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl80OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDQ4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80OF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNDksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg0OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDUwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzUwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzUwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1MSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl81MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDUxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81MV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNTIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg1MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDUzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzUzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzUzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1NCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl81NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDU0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81NF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNTUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg1NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDU2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzU2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1NywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl81NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDU3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81N19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNTgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg1OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNThfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDU5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzU5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNTksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2MCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl82MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDYwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82MF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNjEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg2MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDYyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzYyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNjIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzYyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2MywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl82MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDYzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82M19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNjQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg2NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDY1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzY1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNjUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2NiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl82NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDY2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82Nl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNjcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg2NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDY4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzY4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNjgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2OSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl82OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDY5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82OV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNzAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg3MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDcxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzcxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNzEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzcxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3MiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl83MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDcyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83Ml9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNzMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg3MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDc0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzc0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNzQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3NSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl83NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDc1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83NV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNzYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg3NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDc3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzc3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNzcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3OCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl83OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDc4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83OF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNzksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg3OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDgwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzgwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoODAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzgwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4MSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl84MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDgxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84MV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfODIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg4MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDgzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzgzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoODMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzgzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4NCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl84NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDg0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84NF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfODUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg4NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDg2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzg2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoODYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4NywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl84NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDg3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84N19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfODgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg4OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDg5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzg5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoODksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5MCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl85MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDkwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85MF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfOTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg5MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDkyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzkyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoOTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzkyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5MywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl85MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDkzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85M19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfOTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg5NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDk1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzk1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoOTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5NiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl85NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDk2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85Nl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfOTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg5NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDk4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzk4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoOTgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5OSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl85OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDk5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85OV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTAwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEwMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEwMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTAwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTAxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTAxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwMiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMDIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMDIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwMl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTAzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEwMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEwMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTAzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTA0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTA0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwNSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMDUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMDUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwNV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTA2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEwNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEwNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTA3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTA3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwOCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMDgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMDgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwOF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTA5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEwOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEwOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTEwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTEwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExMSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExMV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTEyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzExMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDExMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTEyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTEzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTEzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExNCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExNF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTE1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzExNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDExNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTE2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTE2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExNywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMTcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExN19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTE4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzExOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDExOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTE5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTE5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyMCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMjAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMjAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyMF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTIxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEyMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEyMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTIxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTIyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTIyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyMywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMjMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMjMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyM19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTI0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEyNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEyNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTI1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTI1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyNiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMjYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMjYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyNl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTI3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEyNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEyNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTI4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTI4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyOSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMjksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMjksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyOV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTMwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEzMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEzMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTMwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTMxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTMxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzMiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMzIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMzIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzMl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTMzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEzMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEzMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTMzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTM0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTM0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzNSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMzUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMzUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzNV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTM2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEzNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEzNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTM3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTM3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzOCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMzgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMzgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzOF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTM5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEzOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEzOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTQwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTQwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0MSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNDEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNDEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0MV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE0MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE0MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTQzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTQzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0NCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNDQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNDQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0NF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQ1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE0NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE0NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTQ2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTQ2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0NywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNDcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNDcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0N19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQ4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE0OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE0OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTQ5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTQ5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1MCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1MF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTUxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE1MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE1MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTUxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTUyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTUyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1MywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1M19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTU0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE1NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE1NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTU1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTU1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1NiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1Nl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTU3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE1NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE1NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTU4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTU4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNThfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1OSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNTksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNTksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1OV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTYwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE2MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE2MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTYwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTYxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTYxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2MiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNjIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNjIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2Ml9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTYzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE2MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE2MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTYzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTY0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTY0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2NSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNjUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNjUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2NV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTY2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE2NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE2NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTY3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTY3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2OCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNjgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNjgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2OF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTY5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE2OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE2OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTcwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTcwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3MSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNzEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNzEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3MV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTcyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE3MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE3MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTcyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTczLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTczLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3NCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNzQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNzQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3NF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTc1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE3NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE3NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTc2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTc2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3NywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNzcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNzcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3N19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTc4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE3OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE3OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTc5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTc5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4MCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xODAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxODAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4MF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTgxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE4MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE4MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTgxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTgyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTgyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4MywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xODMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxODMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4M19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTg0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE4NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE4NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTg1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTg1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4NiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xODYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxODYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4Nl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTg3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE4NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE4NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTg4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTg4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4OSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xODksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxODksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4OV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTkwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE5MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE5MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTkwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTkxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTkxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5MiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xOTIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxOTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5Ml9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTkzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE5MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE5MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTkzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTk0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTk0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5NSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xOTUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxOTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5NV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTk2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE5NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE5NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTk3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTk3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5OCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xOTgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxOTgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5OF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTk5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE5OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE5OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjAwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjAwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwMSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMDEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMDEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwMV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjAyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIwMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIwMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjAzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjAzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwNCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMDQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMDQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwNF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjA1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIwNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIwNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjA2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjA2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwNywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMDcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMDcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwN19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjA4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIwOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIwOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjA5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjA5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxMCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxMF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjExLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIxMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIxMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjExX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjEyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjEyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxMywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxM19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjE0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIxNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIxNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjE1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjE1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxNiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxNl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjE3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIxNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIxNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjE4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjE4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMThfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxOSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMTksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMTksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxOV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjIwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIyMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIyMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjIwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjIxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjIxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyMiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMjIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMjIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyMl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjIzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIyMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIyMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjIzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjI0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjI0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyNSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMjUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMjUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyNV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjI2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIyNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIyNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjI3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjI3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyOCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMjgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMjgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyOF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjI5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIyOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIyOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjMwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjMwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzMSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMzEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMzEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzMV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjMyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIzMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIzMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjMzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjMzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzNCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMzQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMzQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzNF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjM1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIzNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIzNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjM2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjM2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzNywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMzcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMzcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzN19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjM4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIzOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIzOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjM5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjM5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0MCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNDAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNDAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0MF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI0MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI0MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjQyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjQyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0MywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNDMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNDMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0M19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQ0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI0NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI0NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjQ1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjQ1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0NiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNDYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNDYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0Nl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQ3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI0NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI0NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjQ4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjQ4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0OSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNDksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNDksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0OV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjUwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI1MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI1MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjUwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjUxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjUxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1MiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNTIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1Ml9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjUzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI1MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI1MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjUzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjU0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjU0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1NSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNTUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1NV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjU2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI1NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI1NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjU2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjU3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjU3LCBzKSwgcCwgbywgbSkKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZGV0YWlsL21zdmMvZm9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZGV0YWlsL21zdmMvZm9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2RlZmI2OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2RldGFpbC9tc3ZjL2Zvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNzcgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRVRJVElPTl9ERVRBSUxfTVNWQ19GT1JfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRVRJVElPTl9ERVRBSUxfTVNWQ19GT1JfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2lmLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VhdC5ocHA+Ci0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMiwgcykgTkROQk9PU1RfUFBfSUYocCgyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMywgcyksIE5ETkJPT1NUX1BQX0ZPUl8zLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0LCBzKSBORE5CT09TVF9QUF9JRihwKDQsIHMpLCBORE5CT09TVF9QUF9GT1JfNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNSwgcykgTkROQk9PU1RfUFBfSUYocCg1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNiwgcyksIE5ETkJPT1NUX1BQX0ZPUl82LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3LCBzKSBORE5CT09TVF9QUF9JRihwKDcsIHMpLCBORE5CT09TVF9QUF9GT1JfNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOCwgcykgTkROQk9PU1RfUFBfSUYocCg4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDksIHMpIE5ETkJPT1NUX1BQX0lGKHAoOSwgcyksIE5ETkJPT1NUX1BQX0ZPUl85LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTAsIHMpLCBORE5CT09TVF9QUF9GT1JfMTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDExLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExLCBzKSBORE5CT09TVF9QUF9JRihwKDExLCBzKSwgTkROQk9PU1RfUFBfRk9SXzExLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMiwgcykgTkROQk9PU1RfUFBfSUYocCgxMiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTMsIHMpLCBORE5CT09TVF9QUF9GT1JfMTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0LCBzKSBORE5CT09TVF9QUF9JRihwKDE0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNSwgcykgTkROQk9PU1RfUFBfSUYocCgxNSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTYsIHMpLCBORE5CT09TVF9QUF9GT1JfMTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3LCBzKSBORE5CT09TVF9QUF9JRihwKDE3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxOCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOCwgcykgTkROQk9PU1RfUFBfSUYocCgxOCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTksIHMpLCBORE5CT09TVF9QUF9GT1JfMTksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwLCBzKSBORE5CT09TVF9QUF9JRihwKDIwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMSwgcykgTkROQk9PU1RfUFBfSUYocCgyMSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjIsIHMpLCBORE5CT09TVF9QUF9GT1JfMjIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzLCBzKSBORE5CT09TVF9QUF9JRihwKDIzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNCwgcykgTkROQk9PU1RfUFBfSUYocCgyNCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjUsIHMpLCBORE5CT09TVF9QUF9GT1JfMjUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI2LCBzKSBORE5CT09TVF9QUF9JRihwKDI2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzI2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNywgcykgTkROQk9PU1RfUFBfSUYocCgyNywgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjgsIHMpLCBORE5CT09TVF9QUF9GT1JfMjgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI5LCBzKSBORE5CT09TVF9QUF9JRihwKDI5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzI5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgzMCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzMCwgcykgTkROQk9PU1RfUFBfSUYocCgzMCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8zMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMzAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzMwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMzEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzEsIHMpLCBORE5CT09TVF9QUF9GT1JfMzEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDMxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDMyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDMyLCBzKSBORE5CT09TVF9QUF9JRihwKDMyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzMyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygzMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgzMywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzMywgcykgTkROQk9PU1RfUFBfSUYocCgzMywgcyksIE5ETkJPT1NUX1BQX0ZPUl8zMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMzMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzMzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMzQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzQsIHMpLCBORE5CT09TVF9QUF9GT1JfMzQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDM0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDM1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDM1LCBzKSBORE5CT09TVF9QUF9JRihwKDM1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzM1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygzNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgzNiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzNiwgcykgTkROQk9PU1RfUFBfSUYocCgzNiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8zNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMzYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMzcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzcsIHMpLCBORE5CT09TVF9QUF9GT1JfMzcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDM3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDM4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDM4LCBzKSBORE5CT09TVF9QUF9JRihwKDM4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzM4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygzOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgzOSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzOSwgcykgTkROQk9PU1RfUFBfSUYocCgzOSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8zOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMzksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNDAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDAsIHMpLCBORE5CT09TVF9QUF9GT1JfNDAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDQwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDQxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQxLCBzKSBORE5CT09TVF9QUF9JRihwKDQxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzQxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg0MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg0MiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0MiwgcykgTkROQk9PU1RfUFBfSUYocCg0MiwgcyksIE5ETkJPT1NUX1BQX0ZPUl80MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNDIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNDMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDMsIHMpLCBORE5CT09TVF9QUF9GT1JfNDMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDQzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDQ0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQ0LCBzKSBORE5CT09TVF9QUF9JRihwKDQ0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzQ0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg0NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg0NSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0NSwgcykgTkROQk9PU1RfUFBfSUYocCg0NSwgcyksIE5ETkJPT1NUX1BQX0ZPUl80NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNDUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNDYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDYsIHMpLCBORE5CT09TVF9QUF9GT1JfNDYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDQ2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDQ3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQ3LCBzKSBORE5CT09TVF9QUF9JRihwKDQ3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzQ3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg0NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg0OCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0OCwgcykgTkROQk9PU1RfUFBfSUYocCg0OCwgcyksIE5ETkJPT1NUX1BQX0ZPUl80OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNDgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNDksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDksIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDksIHMpLCBORE5CT09TVF9QUF9GT1JfNDksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDQ5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDUwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDUwLCBzKSBORE5CT09TVF9QUF9JRihwKDUwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzUwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg1MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg1MSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1MSwgcykgTkROQk9PU1RfUFBfSUYocCg1MSwgcyksIE5ETkJPT1NUX1BQX0ZPUl81MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzUxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNTIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTIsIHMpLCBORE5CT09TVF9QUF9GT1JfNTIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDUyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDUzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDUzLCBzKSBORE5CT09TVF9QUF9JRihwKDUzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzUzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg1MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg1NCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1NCwgcykgTkROQk9PU1RfUFBfSUYocCg1NCwgcyksIE5ETkJPT1NUX1BQX0ZPUl81NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNTUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTUsIHMpLCBORE5CT09TVF9QUF9GT1JfNTUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDU1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDU2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDU2LCBzKSBORE5CT09TVF9QUF9JRihwKDU2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzU2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg1NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg1NywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1NywgcykgTkROQk9PU1RfUFBfSUYocCg1NywgcyksIE5ETkJPT1NUX1BQX0ZPUl81NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNTcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNTgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTgsIHMpLCBORE5CT09TVF9QUF9GT1JfNTgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDU4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDU5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDU5LCBzKSBORE5CT09TVF9QUF9JRihwKDU5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzU5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg1OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg2MCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2MCwgcykgTkROQk9PU1RfUFBfSUYocCg2MCwgcyksIE5ETkJPT1NUX1BQX0ZPUl82MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNjAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzYwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNjEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjEsIHMpLCBORE5CT09TVF9QUF9GT1JfNjEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDYxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDYyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDYyLCBzKSBORE5CT09TVF9QUF9JRihwKDYyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzYyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg2MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg2MywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2MywgcykgTkROQk9PU1RfUFBfSUYocCg2MywgcyksIE5ETkJPT1NUX1BQX0ZPUl82MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNjMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzYzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNjQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjQsIHMpLCBORE5CT09TVF9QUF9GT1JfNjQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDY0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDY1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDY1LCBzKSBORE5CT09TVF9QUF9JRihwKDY1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzY1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg2NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg2NiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2NiwgcykgTkROQk9PU1RfUFBfSUYocCg2NiwgcyksIE5ETkJPT1NUX1BQX0ZPUl82NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNjYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNjcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjcsIHMpLCBORE5CT09TVF9QUF9GT1JfNjcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDY3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDY4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDY4LCBzKSBORE5CT09TVF9QUF9JRihwKDY4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzY4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg2OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg2OSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2OSwgcykgTkROQk9PU1RfUFBfSUYocCg2OSwgcyksIE5ETkJPT1NUX1BQX0ZPUl82OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNjksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNzAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzAsIHMpLCBORE5CT09TVF9QUF9GT1JfNzAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDcwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDcxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDcxLCBzKSBORE5CT09TVF9QUF9JRihwKDcxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzcxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg3MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg3MiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3MiwgcykgTkROQk9PU1RfUFBfSUYocCg3MiwgcyksIE5ETkJPT1NUX1BQX0ZPUl83MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNzIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzcyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNzMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzMsIHMpLCBORE5CT09TVF9QUF9GT1JfNzMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDczLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDc0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDc0LCBzKSBORE5CT09TVF9QUF9JRihwKDc0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzc0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg3NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg3NSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3NSwgcykgTkROQk9PU1RfUFBfSUYocCg3NSwgcyksIE5ETkJPT1NUX1BQX0ZPUl83NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNzUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNzYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzYsIHMpLCBORE5CT09TVF9QUF9GT1JfNzYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDc2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDc3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDc3LCBzKSBORE5CT09TVF9QUF9JRihwKDc3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzc3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg3NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg3OCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3OCwgcykgTkROQk9PU1RfUFBfSUYocCg3OCwgcyksIE5ETkJPT1NUX1BQX0ZPUl83OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNzgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNzksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzksIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzksIHMpLCBORE5CT09TVF9QUF9GT1JfNzksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDc5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDgwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDgwLCBzKSBORE5CT09TVF9QUF9JRihwKDgwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzgwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg4MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg4MSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4MSwgcykgTkROQk9PU1RfUFBfSUYocCg4MSwgcyksIE5ETkJPT1NUX1BQX0ZPUl84MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oODEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzgxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoODIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoODIsIHMpLCBORE5CT09TVF9QUF9GT1JfODIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDgyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDgzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDgzLCBzKSBORE5CT09TVF9QUF9JRihwKDgzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzgzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg4MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg4NCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4NCwgcykgTkROQk9PU1RfUFBfSUYocCg4NCwgcyksIE5ETkJPT1NUX1BQX0ZPUl84NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oODQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoODUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoODUsIHMpLCBORE5CT09TVF9QUF9GT1JfODUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDg1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDg2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDg2LCBzKSBORE5CT09TVF9QUF9JRihwKDg2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzg2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg4NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg4NywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4NywgcykgTkROQk9PU1RfUFBfSUYocCg4NywgcyksIE5ETkJPT1NUX1BQX0ZPUl84NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oODcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoODgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoODgsIHMpLCBORE5CT09TVF9QUF9GT1JfODgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDg4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDg5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDg5LCBzKSBORE5CT09TVF9QUF9JRihwKDg5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzg5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg4OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg5MCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5MCwgcykgTkROQk9PU1RfUFBfSUYocCg5MCwgcyksIE5ETkJPT1NUX1BQX0ZPUl85MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oOTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzkwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoOTEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTEsIHMpLCBORE5CT09TVF9QUF9GT1JfOTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDkxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDkyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDkyLCBzKSBORE5CT09TVF9QUF9JRihwKDkyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzkyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg5MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg5MywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5MywgcykgTkROQk9PU1RfUFBfSUYocCg5MywgcyksIE5ETkJPT1NUX1BQX0ZPUl85MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oOTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzkzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoOTQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTQsIHMpLCBORE5CT09TVF9QUF9GT1JfOTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDk0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDk1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDk1LCBzKSBORE5CT09TVF9QUF9JRihwKDk1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzk1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg5NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg5NiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5NiwgcykgTkROQk9PU1RfUFBfSUYocCg5NiwgcyksIE5ETkJPT1NUX1BQX0ZPUl85NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oOTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoOTcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTcsIHMpLCBORE5CT09TVF9QUF9GT1JfOTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDk3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDk4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDk4LCBzKSBORE5CT09TVF9QUF9JRihwKDk4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzk4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg5OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg5OSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5OSwgcykgTkROQk9PU1RfUFBfSUYocCg5OSwgcyksIE5ETkJPT1NUX1BQX0ZPUl85OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oOTksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTAwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwMCwgcykgTkROQk9PU1RfUFBfSUYocCgxMDAsIHMpLCBORE5CT09TVF9QUF9GT1JfMTAwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMDAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEwMSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTAxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzEwMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTAxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMDIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTAyLCBzKSBORE5CT09TVF9QUF9JRihwKDEwMiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMDIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEwMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTAyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTAzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwMywgcykgTkROQk9PU1RfUFBfSUYocCgxMDMsIHMpLCBORE5CT09TVF9QUF9GT1JfMTAzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMDMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEwNCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTA0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzEwNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTA0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMDUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTA1LCBzKSBORE5CT09TVF9QUF9JRihwKDEwNSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMDUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEwNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTA2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwNiwgcykgTkROQk9PU1RfUFBfSUYocCgxMDYsIHMpLCBORE5CT09TVF9QUF9GT1JfMTA2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMDYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEwNywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTA3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzEwNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTA3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMDgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTA4LCBzKSBORE5CT09TVF9QUF9JRihwKDEwOCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMDgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEwOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTA5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwOSwgcykgTkROQk9PU1RfUFBfSUYocCgxMDksIHMpLCBORE5CT09TVF9QUF9GT1JfMTA5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMDksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDExMCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTEwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzExMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTEwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMTEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTExLCBzKSBORE5CT09TVF9QUF9JRihwKDExMSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDExMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTExKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTEyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExMiwgcykgTkROQk9PU1RfUFBfSUYocCgxMTIsIHMpLCBORE5CT09TVF9QUF9GT1JfMTEyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDExMywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTEzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzExMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTEzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMTQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTE0LCBzKSBORE5CT09TVF9QUF9JRihwKDExNCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDExNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTE1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExNSwgcykgTkROQk9PU1RfUFBfSUYocCgxMTUsIHMpLCBORE5CT09TVF9QUF9GT1JfMTE1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDExNiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTE2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzExNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTE2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMTcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTE3LCBzKSBORE5CT09TVF9QUF9JRihwKDExNywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDExNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTE4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExOCwgcykgTkROQk9PU1RfUFBfSUYocCgxMTgsIHMpLCBORE5CT09TVF9QUF9GT1JfMTE4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMTgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDExOSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTE5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzExOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTE5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMjAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTIwLCBzKSBORE5CT09TVF9QUF9JRihwKDEyMCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMjAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEyMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTIwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTIxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyMSwgcykgTkROQk9PU1RfUFBfSUYocCgxMjEsIHMpLCBORE5CT09TVF9QUF9GT1JfMTIxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMjEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEyMiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTIyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzEyMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTIyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMjMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTIzLCBzKSBORE5CT09TVF9QUF9JRihwKDEyMywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMjMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEyMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTIzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTI0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyNCwgcykgTkROQk9PU1RfUFBfSUYocCgxMjQsIHMpLCBORE5CT09TVF9QUF9GT1JfMTI0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMjQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEyNSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTI1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzEyNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTI1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMjYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTI2LCBzKSBORE5CT09TVF9QUF9JRihwKDEyNiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMjYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEyNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTI3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyNywgcykgTkROQk9PU1RfUFBfSUYocCgxMjcsIHMpLCBORE5CT09TVF9QUF9GT1JfMTI3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMjcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEyOCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTI4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzEyOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTI4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMjksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTI5LCBzKSBORE5CT09TVF9QUF9JRihwKDEyOSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMjksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEyOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTMwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzMCwgcykgTkROQk9PU1RfUFBfSUYocCgxMzAsIHMpLCBORE5CT09TVF9QUF9GT1JfMTMwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMzAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEzMSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTMxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzEzMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTMxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMzIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTMyLCBzKSBORE5CT09TVF9QUF9JRihwKDEzMiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMzIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEzMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTMyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTMzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzMywgcykgTkROQk9PU1RfUFBfSUYocCgxMzMsIHMpLCBORE5CT09TVF9QUF9GT1JfMTMzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMzMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEzNCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTM0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzEzNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTM0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMzUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTM1LCBzKSBORE5CT09TVF9QUF9JRihwKDEzNSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMzUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEzNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTM2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzNiwgcykgTkROQk9PU1RfUFBfSUYocCgxMzYsIHMpLCBORE5CT09TVF9QUF9GT1JfMTM2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMzYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEzNywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTM3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzEzNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTM3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMzgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTM4LCBzKSBORE5CT09TVF9QUF9JRihwKDEzOCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMzgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEzOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTM5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzOSwgcykgTkROQk9PU1RfUFBfSUYocCgxMzksIHMpLCBORE5CT09TVF9QUF9GT1JfMTM5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMzksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE0MCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE0MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTQwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNDEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQxLCBzKSBORE5CT09TVF9QUF9JRihwKDE0MSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNDEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE0MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTQyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0MiwgcykgTkROQk9PU1RfUFBfSUYocCgxNDIsIHMpLCBORE5CT09TVF9QUF9GT1JfMTQyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNDIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE0MywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE0MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTQzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNDQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQ0LCBzKSBORE5CT09TVF9QUF9JRihwKDE0NCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNDQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE0NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTQ1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0NSwgcykgTkROQk9PU1RfUFBfSUYocCgxNDUsIHMpLCBORE5CT09TVF9QUF9GT1JfMTQ1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNDUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE0NiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQ2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE0NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTQ2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNDcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQ3LCBzKSBORE5CT09TVF9QUF9JRihwKDE0NywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNDcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE0NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTQ4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0OCwgcykgTkROQk9PU1RfUFBfSUYocCgxNDgsIHMpLCBORE5CT09TVF9QUF9GT1JfMTQ4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNDgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE0OSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQ5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE0OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTQ5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNTAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTUwLCBzKSBORE5CT09TVF9QUF9JRihwKDE1MCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE1MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTUwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTUxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1MSwgcykgTkROQk9PU1RfUFBfSUYocCgxNTEsIHMpLCBORE5CT09TVF9QUF9GT1JfMTUxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE1MiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTUyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE1MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTUyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNTMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTUzLCBzKSBORE5CT09TVF9QUF9JRihwKDE1MywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE1MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTUzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTU0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1NCwgcykgTkROQk9PU1RfUFBfSUYocCgxNTQsIHMpLCBORE5CT09TVF9QUF9GT1JfMTU0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE1NSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTU1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE1NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTU1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNTYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTU2LCBzKSBORE5CT09TVF9QUF9JRihwKDE1NiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE1NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTU3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1NywgcykgTkROQk9PU1RfUFBfSUYocCgxNTcsIHMpLCBORE5CT09TVF9QUF9GT1JfMTU3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNTcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE1OCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTU4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE1OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTU4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNTksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTU5LCBzKSBORE5CT09TVF9QUF9JRihwKDE1OSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNTksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE1OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTYwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2MCwgcykgTkROQk9PU1RfUFBfSUYocCgxNjAsIHMpLCBORE5CT09TVF9QUF9GT1JfMTYwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNjAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE2MSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTYxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE2MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTYxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNjIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTYyLCBzKSBORE5CT09TVF9QUF9JRihwKDE2MiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNjIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE2MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTYyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTYzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2MywgcykgTkROQk9PU1RfUFBfSUYocCgxNjMsIHMpLCBORE5CT09TVF9QUF9GT1JfMTYzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNjMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE2NCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTY0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE2NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTY0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNjUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTY1LCBzKSBORE5CT09TVF9QUF9JRihwKDE2NSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNjUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE2NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTY2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2NiwgcykgTkROQk9PU1RfUFBfSUYocCgxNjYsIHMpLCBORE5CT09TVF9QUF9GT1JfMTY2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNjYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE2NywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTY3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE2NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTY3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNjgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTY4LCBzKSBORE5CT09TVF9QUF9JRihwKDE2OCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNjgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE2OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTY5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2OSwgcykgTkROQk9PU1RfUFBfSUYocCgxNjksIHMpLCBORE5CT09TVF9QUF9GT1JfMTY5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNjksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE3MCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTcwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE3MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTcwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNzEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTcxLCBzKSBORE5CT09TVF9QUF9JRihwKDE3MSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNzEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE3MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTcxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTcyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3MiwgcykgTkROQk9PU1RfUFBfSUYocCgxNzIsIHMpLCBORE5CT09TVF9QUF9GT1JfMTcyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNzIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE3MywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTczLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE3MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTczLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNzQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTc0LCBzKSBORE5CT09TVF9QUF9JRihwKDE3NCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNzQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE3NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTc1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3NSwgcykgTkROQk9PU1RfUFBfSUYocCgxNzUsIHMpLCBORE5CT09TVF9QUF9GT1JfMTc1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNzUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE3NiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTc2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE3NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTc2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNzcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTc3LCBzKSBORE5CT09TVF9QUF9JRihwKDE3NywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNzcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE3NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTc4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3OCwgcykgTkROQk9PU1RfUFBfSUYocCgxNzgsIHMpLCBORE5CT09TVF9QUF9GT1JfMTc4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNzgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE3OSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTc5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE3OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTc5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxODAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTgwLCBzKSBORE5CT09TVF9QUF9JRihwKDE4MCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xODAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE4MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTgwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTgxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4MSwgcykgTkROQk9PU1RfUFBfSUYocCgxODEsIHMpLCBORE5CT09TVF9QUF9GT1JfMTgxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxODEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE4MiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTgyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE4MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTgyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxODMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTgzLCBzKSBORE5CT09TVF9QUF9JRihwKDE4MywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xODMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE4MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTgzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTg0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4NCwgcykgTkROQk9PU1RfUFBfSUYocCgxODQsIHMpLCBORE5CT09TVF9QUF9GT1JfMTg0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxODQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE4NSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTg1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE4NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTg1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxODYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTg2LCBzKSBORE5CT09TVF9QUF9JRihwKDE4NiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xODYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE4NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTg3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4NywgcykgTkROQk9PU1RfUFBfSUYocCgxODcsIHMpLCBORE5CT09TVF9QUF9GT1JfMTg3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxODcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE4OCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTg4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE4OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTg4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxODksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTg5LCBzKSBORE5CT09TVF9QUF9JRihwKDE4OSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xODksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE4OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTkwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5MCwgcykgTkROQk9PU1RfUFBfSUYocCgxOTAsIHMpLCBORE5CT09TVF9QUF9GT1JfMTkwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxOTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE5MSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTkxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE5MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTkxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxOTIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTkyLCBzKSBORE5CT09TVF9QUF9JRihwKDE5MiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xOTIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE5MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTkyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTkzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5MywgcykgTkROQk9PU1RfUFBfSUYocCgxOTMsIHMpLCBORE5CT09TVF9QUF9GT1JfMTkzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxOTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE5NCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTk0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE5NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTk0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxOTUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTk1LCBzKSBORE5CT09TVF9QUF9JRihwKDE5NSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xOTUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE5NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTk2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5NiwgcykgTkROQk9PU1RfUFBfSUYocCgxOTYsIHMpLCBORE5CT09TVF9QUF9GT1JfMTk2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxOTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE5NywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTk3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE5NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTk3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxOTgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTk4LCBzKSBORE5CT09TVF9QUF9JRihwKDE5OCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xOTgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE5OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTk5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5OSwgcykgTkROQk9PU1RfUFBfSUYocCgxOTksIHMpLCBORE5CT09TVF9QUF9GT1JfMTk5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxOTksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIwMCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjAwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIwMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjAwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMDEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjAxLCBzKSBORE5CT09TVF9QUF9JRihwKDIwMSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMDEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIwMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjAyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwMiwgcykgTkROQk9PU1RfUFBfSUYocCgyMDIsIHMpLCBORE5CT09TVF9QUF9GT1JfMjAyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMDIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIwMywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjAzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIwMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjAzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMDQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjA0LCBzKSBORE5CT09TVF9QUF9JRihwKDIwNCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMDQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIwNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjA1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwNSwgcykgTkROQk9PU1RfUFBfSUYocCgyMDUsIHMpLCBORE5CT09TVF9QUF9GT1JfMjA1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMDUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIwNiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjA2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIwNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjA2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMDcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjA3LCBzKSBORE5CT09TVF9QUF9JRihwKDIwNywgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMDcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIwNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjA4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwOCwgcykgTkROQk9PU1RfUFBfSUYocCgyMDgsIHMpLCBORE5CT09TVF9QUF9GT1JfMjA4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMDgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIwOSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjA5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIwOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjA5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMTAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjEwLCBzKSBORE5CT09TVF9QUF9JRihwKDIxMCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIxMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjEwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjExLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxMSwgcykgTkROQk9PU1RfUFBfSUYocCgyMTEsIHMpLCBORE5CT09TVF9QUF9GT1JfMjExLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIxMiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjEyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIxMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjEyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMTMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjEzLCBzKSBORE5CT09TVF9QUF9JRihwKDIxMywgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIxMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjEzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjE0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxNCwgcykgTkROQk9PU1RfUFBfSUYocCgyMTQsIHMpLCBORE5CT09TVF9QUF9GT1JfMjE0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIxNSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjE1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIxNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjE1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMTYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjE2LCBzKSBORE5CT09TVF9QUF9JRihwKDIxNiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIxNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjE3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxNywgcykgTkROQk9PU1RfUFBfSUYocCgyMTcsIHMpLCBORE5CT09TVF9QUF9GT1JfMjE3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMTcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIxOCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjE4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIxOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjE4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMTksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjE5LCBzKSBORE5CT09TVF9QUF9JRihwKDIxOSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMTksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIxOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjIwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyMCwgcykgTkROQk9PU1RfUFBfSUYocCgyMjAsIHMpLCBORE5CT09TVF9QUF9GT1JfMjIwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMjAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIyMSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjIxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIyMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjIxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMjIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjIyLCBzKSBORE5CT09TVF9QUF9JRihwKDIyMiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMjIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIyMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjIyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjIzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyMywgcykgTkROQk9PU1RfUFBfSUYocCgyMjMsIHMpLCBORE5CT09TVF9QUF9GT1JfMjIzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMjMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIyNCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjI0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIyNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjI0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMjUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjI1LCBzKSBORE5CT09TVF9QUF9JRihwKDIyNSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMjUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIyNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjI2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyNiwgcykgTkROQk9PU1RfUFBfSUYocCgyMjYsIHMpLCBORE5CT09TVF9QUF9GT1JfMjI2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMjYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIyNywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjI3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIyNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjI3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMjgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjI4LCBzKSBORE5CT09TVF9QUF9JRihwKDIyOCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMjgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIyOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjI5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyOSwgcykgTkROQk9PU1RfUFBfSUYocCgyMjksIHMpLCBORE5CT09TVF9QUF9GT1JfMjI5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMjksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIzMCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjMwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIzMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjMwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMzEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjMxLCBzKSBORE5CT09TVF9QUF9JRihwKDIzMSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMzEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIzMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjMyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzMiwgcykgTkROQk9PU1RfUFBfSUYocCgyMzIsIHMpLCBORE5CT09TVF9QUF9GT1JfMjMyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMzIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIzMywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjMzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIzMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjMzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMzQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjM0LCBzKSBORE5CT09TVF9QUF9JRihwKDIzNCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMzQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIzNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjM1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzNSwgcykgTkROQk9PU1RfUFBfSUYocCgyMzUsIHMpLCBORE5CT09TVF9QUF9GT1JfMjM1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMzUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIzNiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjM2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIzNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjM2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMzcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjM3LCBzKSBORE5CT09TVF9QUF9JRihwKDIzNywgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMzcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIzNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjM4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzOCwgcykgTkROQk9PU1RfUFBfSUYocCgyMzgsIHMpLCBORE5CT09TVF9QUF9GT1JfMjM4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMzgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIzOSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjM5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIzOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjM5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNDAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQwLCBzKSBORE5CT09TVF9QUF9JRihwKDI0MCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNDAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI0MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjQxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0MSwgcykgTkROQk9PU1RfUFBfSUYocCgyNDEsIHMpLCBORE5CT09TVF9QUF9GT1JfMjQxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNDEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI0MiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzI0MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjQyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNDMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQzLCBzKSBORE5CT09TVF9QUF9JRihwKDI0MywgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNDMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI0MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjQ0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0NCwgcykgTkROQk9PU1RfUFBfSUYocCgyNDQsIHMpLCBORE5CT09TVF9QUF9GT1JfMjQ0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNDQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI0NSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQ1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzI0NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjQ1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNDYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQ2LCBzKSBORE5CT09TVF9QUF9JRihwKDI0NiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNDYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI0NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjQ3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0NywgcykgTkROQk9PU1RfUFBfSUYocCgyNDcsIHMpLCBORE5CT09TVF9QUF9GT1JfMjQ3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNDcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI0OCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQ4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzI0OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjQ4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNDksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQ5LCBzKSBORE5CT09TVF9QUF9JRihwKDI0OSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNDksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI0OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjUwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1MCwgcykgTkROQk9PU1RfUFBfSUYocCgyNTAsIHMpLCBORE5CT09TVF9QUF9GT1JfMjUwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI1MSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjUxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzI1MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjUxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNTIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjUyLCBzKSBORE5CT09TVF9QUF9JRihwKDI1MiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNTIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI1MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjUyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjUzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1MywgcykgTkROQk9PU1RfUFBfSUYocCgyNTMsIHMpLCBORE5CT09TVF9QUF9GT1JfMjUzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI1NCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjU0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzI1NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjU0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNTUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjU1LCBzKSBORE5CT09TVF9QUF9JRihwKDI1NSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNTUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI1NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjU1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjU2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1NiwgcykgTkROQk9PU1RfUFBfSUYocCgyNTYsIHMpLCBORE5CT09TVF9QUF9GT1JfMjU2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI1NywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjU3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzI1NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjU3LCBzKSwgcCwgbywgbSkKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMzVjYjFjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9SRVBFVElUSU9OX0VOVU1fSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRVRJVElPTl9FTlVNX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGVidWcvZXJyb3IuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2F1dG9fcmVjLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3B1bmN0dWF0aW9uL2NvbW1hX2lmLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vcmVwZWF0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VsZW0uaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvcmVtLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfRU5VTSAqLwotIwotIyBpZiAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNKGNvdW50LCBtYWNybywgZGF0YSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU0gTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0VOVU1fLCBORE5CT09TVF9QUF9BVVRPX1JFQyhORE5CT09TVF9QUF9SRVBFQVRfUCwgNCkpCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV8xKGMsIG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xKGMsIE5ETkJPT1NUX1BQX0VOVU1fTV8xLCAobSwgZCkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNXzIoYywgbSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzIoYywgTkROQk9PU1RfUFBfRU5VTV9NXzIsIChtLCBkKSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fMyhjLCBtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMyhjLCBORE5CT09TVF9QUF9FTlVNX01fMywgKG0sIGQpKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNXzEoYywgbSwgZCkgTkROQk9PU1RfUFBfRU5VTV8xX0koYywgbSwgZCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fMihjLCBtLCBkKSBORE5CT09TVF9QUF9FTlVNXzJfSShjLCBtLCBkKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV8zKGMsIG0sIGQpIE5ETkJPT1NUX1BQX0VOVU1fM19JKGMsIG0sIGQpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNXzFfSShjLCBtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMShjLCBORE5CT09TVF9QUF9FTlVNX01fMSwgKG0sIGQpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV8yX0koYywgbSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzIoYywgTkROQk9PU1RfUFBfRU5VTV9NXzIsIChtLCBkKSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fM19JKGMsIG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zKGMsIE5ETkJPT1NUX1BQX0VOVU1fTV8zLCAobSwgZCkpCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9FTlVNXzQoYywgbSwgZCkgTkROQk9PU1RfUFBfRVJST1IoMHgwMDAzKQotIwotIyBpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19TVFJJQ1QoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9NXzEoeiwgbiwgbWQpIE5ETkJPT1NUX1BQX0VOVU1fTV8xX0lNKHosIG4sIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8yIG1kKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9NXzIoeiwgbiwgbWQpIE5ETkJPT1NUX1BQX0VOVU1fTV8yX0lNKHosIG4sIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8yIG1kKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9NXzMoeiwgbiwgbWQpIE5ETkJPT1NUX1BQX0VOVU1fTV8zX0lNKHosIG4sIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8yIG1kKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9NXzFfSU0oeiwgbiwgaW0pIE5ETkJPT1NUX1BQX0VOVU1fTV8xX0koeiwgbiwgaW0pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX01fMl9JTSh6LCBuLCBpbSkgTkROQk9PU1RfUFBfRU5VTV9NXzJfSSh6LCBuLCBpbSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fTV8zX0lNKHosIG4sIGltKSBORE5CT09TVF9QUF9FTlVNX01fM19JKHosIG4sIGltKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX01fMSh6LCBuLCBtZCkgTkROQk9PU1RfUFBfRU5VTV9NXzFfSSh6LCBuLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDAsIG1kKSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAxLCBtZCkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX01fMih6LCBuLCBtZCkgTkROQk9PU1RfUFBfRU5VTV9NXzJfSSh6LCBuLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDAsIG1kKSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAxLCBtZCkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX01fMyh6LCBuLCBtZCkgTkROQk9PU1RfUFBfRU5VTV9NXzNfSSh6LCBuLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDAsIG1kKSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAxLCBtZCkpCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX01fMV9JKHosIG4sIG0sIGQpIE5ETkJPT1NUX1BQX0NPTU1BX0lGKG4pIG0oeiwgbiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fTV8yX0koeiwgbiwgbSwgZCkgTkROQk9PU1RfUFBfQ09NTUFfSUYobikgbSh6LCBuLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9NXzNfSSh6LCBuLCBtLCBkKSBORE5CT09TVF9QUF9DT01NQV9JRihuKSBtKHosIG4sIGQpCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fYmluYXJ5X3BhcmFtcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fYmluYXJ5X3BhcmFtcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwODQyNmYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX2JpbmFyeV9wYXJhbXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9SRVBFVElUSU9OX0VOVU1fQklOQVJZX1BBUkFNU19IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9SRVBFVElUSU9OX0VOVU1fQklOQVJZX1BBUkFNU19IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3B1bmN0dWF0aW9uL2NvbW1hX2lmLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vcmVwZWF0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VsZW0uaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvcmVtLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TKGNvdW50LCBwMSwgcDIpIE5ETkJPT1NUX1BQX1JFUEVBVChjb3VudCwgTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TX00sIChwMSwgcDIpKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVMoY291bnQsIHAxLCBwMikgTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TX0koY291bnQsIHAxLCBwMikKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNU19JKGNvdW50LCBwMSwgcDIpIE5ETkJPT1NUX1BQX1JFUEVBVChjb3VudCwgTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TX00sIChwMSwgcDIpKQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19TVFJJQ1QoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TX00oeiwgbiwgcHApIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNU19NX0lNKHosIG4sIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8yIHBwKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TX01fSU0oeiwgbiwgaW0pIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNU19NX0koeiwgbiwgaW0pCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNU19NKHosIG4sIHBwKSBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVNfTV9JKHosIG4sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMCwgcHApLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDEsIHBwKSkKLSMgZW5kaWYKLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01TVkMoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TX01fSSh6LCBuLCBwMSwgcDIpIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNU19NX0lJKHosIG4sIHAxLCBwMikKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNU19NX0lJKHosIG4sIHAxLCBwMikgTkROQk9PU1RfUFBfQ09NTUFfSUYobikgcDEgIyMgbiBwMiAjIyBuCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNU19NX0koeiwgbiwgcDEsIHAyKSBORE5CT09TVF9QUF9DT01NQV9JRihuKSBORE5CT09TVF9QUF9DQVQocDEsIG4pIE5ETkJPT1NUX1BQX0NBVChwMiwgbikKLSMgZW5kaWYKLSMKLSMgLyogTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TX1ogKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVNfWih6LCBjb3VudCwgcDEsIHAyKSBORE5CT09TVF9QUF9SRVBFQVRfICMjIHooY291bnQsIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNU19NLCAocDEsIHAyKSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TX1ooeiwgY291bnQsIHAxLCBwMikgTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TX1pfSSh6LCBjb3VudCwgcDEsIHAyKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TX1pfSSh6LCBjb3VudCwgcDEsIHAyKSBORE5CT09TVF9QUF9SRVBFQVRfICMjIHooY291bnQsIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNU19NLCAocDEsIHAyKSkKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9wYXJhbXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3BhcmFtcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkZDc2NzcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3BhcmFtcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9SRVBFVElUSU9OX0VOVU1fUEFSQU1TX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVUSVRJT05fRU5VTV9QQVJBTVNfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3B1bmN0dWF0aW9uL2NvbW1hX2lmLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vcmVwZWF0LmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhjb3VudCwgcGFyYW0pIE5ETkJPT1NUX1BQX1JFUEVBVChjb3VudCwgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfTSwgcGFyYW0pCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKGNvdW50LCBwYXJhbSkgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfSShjb3VudCwgcGFyYW0pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1BBUkFNU19JKGNvdW50LCBwYXJhbSkgTkROQk9PU1RfUFBfUkVQRUFUKGNvdW50LCBORE5CT09TVF9QUF9FTlVNX1BBUkFNU19NLCBwYXJhbSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX00oeiwgbiwgcGFyYW0pIE5ETkJPT1NUX1BQX0NPTU1BX0lGKG4pIHBhcmFtICMjIG4KLSMKLSMgLyogTkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfWiAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1ooeiwgY291bnQsIHBhcmFtKSBORE5CT09TVF9QUF9SRVBFQVRfICMjIHooY291bnQsIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX00sIHBhcmFtKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1BBUkFNU19aKHosIGNvdW50LCBwYXJhbSkgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfWl9JKHosIGNvdW50LCBwYXJhbSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1pfSSh6LCBjb3VudCwgcGFyYW0pIE5ETkJPT1NUX1BQX1JFUEVBVF8gIyMgeihjb3VudCwgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfTSwgcGFyYW0pCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fcGFyYW1zX3dpdGhfYV9kZWZhdWx0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9wYXJhbXNfd2l0aF9hX2RlZmF1bHQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZmZkMzc3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9wYXJhbXNfd2l0aF9hX2RlZmF1bHQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRVRJVElPTl9FTlVNX1BBUkFNU19XSVRIX0FfREVGQVVMVF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9SRVBFVElUSU9OX0VOVU1fUEFSQU1TX1dJVEhfQV9ERUZBVUxUX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL2ludGVyY2VwdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fYmluYXJ5X3BhcmFtcy5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1dJVEhfQV9ERUZBVUxUICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1BBUkFNU19XSVRIX0FfREVGQVVMVChjb3VudCwgcGFyYW0sIGRlZikgTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TKGNvdW50LCBwYXJhbSwgPSBkZWYgTkROQk9PU1RfUFBfSU5URVJDRVBUKQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3NoaWZ0ZWRfcGFyYW1zLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9zaGlmdGVkX3BhcmFtcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4MWFmMDIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3NoaWZ0ZWRfcGFyYW1zLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVUSVRJT05fRU5VTV9TSElGVEVEX1BBUkFNU19IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9SRVBFVElUSU9OX0VOVU1fU0hJRlRFRF9QQVJBTVNfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2RlYy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2luYy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9wdW5jdHVhdGlvbi9jb21tYV9pZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL3JlcGVhdC5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0VOVU1fU0hJRlRFRF9QQVJBTVMgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1NISUZURURfUEFSQU1TKGNvdW50LCBwYXJhbSkgTkROQk9PU1RfUFBfUkVQRUFUKE5ETkJPT1NUX1BQX0RFQyhjb3VudCksIE5ETkJPT1NUX1BQX0VOVU1fU0hJRlRFRF9QQVJBTVNfTSwgcGFyYW0pCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fU0hJRlRFRF9QQVJBTVMoY291bnQsIHBhcmFtKSBORE5CT09TVF9QUF9FTlVNX1NISUZURURfUEFSQU1TX0koY291bnQsIHBhcmFtKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9TSElGVEVEX1BBUkFNU19JKGNvdW50LCBwYXJhbSkgTkROQk9PU1RfUFBfUkVQRUFUKE5ETkJPT1NUX1BQX0RFQyhjb3VudCksIE5ETkJPT1NUX1BQX0VOVU1fU0hJRlRFRF9QQVJBTVNfTSwgcGFyYW0pCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1NISUZURURfUEFSQU1TX00oeiwgbiwgcGFyYW0pIE5ETkJPT1NUX1BQX0NPTU1BX0lGKG4pIE5ETkJPT1NUX1BQX0NBVChwYXJhbSwgTkROQk9PU1RfUFBfSU5DKG4pKQotIwotIyAvKiBORE5CT09TVF9QUF9FTlVNX1NISUZURURfUEFSQU1TX1ogKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1NISUZURURfUEFSQU1TX1ooeiwgY291bnQsIHBhcmFtKSBORE5CT09TVF9QUF9SRVBFQVRfICMjIHooTkROQk9PU1RfUFBfREVDKGNvdW50KSwgTkROQk9PU1RfUFBfRU5VTV9TSElGVEVEX1BBUkFNU19NLCBwYXJhbSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9TSElGVEVEX1BBUkFNU19aKHosIGNvdW50LCBwYXJhbSkgTkROQk9PU1RfUFBfRU5VTV9TSElGVEVEX1BBUkFNU19aX0koeiwgY291bnQsIHBhcmFtKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9TSElGVEVEX1BBUkFNU19aX0koeiwgY291bnQsIHBhcmFtKSBORE5CT09TVF9QUF9SRVBFQVRfICMjIHooTkROQk9PU1RfUFBfREVDKGNvdW50KSwgTkROQk9PU1RfUFBfRU5VTV9TSElGVEVEX1BBUkFNU19NLCBwYXJhbSkKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV90cmFpbGluZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fdHJhaWxpbmcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjZjNTIzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV90cmFpbGluZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVUSVRJT05fRU5VTV9UUkFJTElOR19IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9SRVBFVElUSU9OX0VOVU1fVFJBSUxJTkdfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZWJ1Zy9lcnJvci5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZXRhaWwvYXV0b19yZWMuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9yZXBlYXQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWxlbS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9yZW0uaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HICovCi0jCi0jIGlmIDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkcoY291bnQsIG1hY3JvLCBkYXRhKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElORyBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR18sIE5ETkJPT1NUX1BQX0FVVE9fUkVDKE5ETkJPT1NUX1BQX1JFUEVBVF9QLCA0KSkKLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HXzEoYywgbSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzEoYywgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19NXzEsIChtLCBkKSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfMihjLCBtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMihjLCBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX01fMiwgKG0sIGQpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR18zKGMsIG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zKGMsIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfTV8zLCAobSwgZCkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfMShjLCBtLCBkKSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HXzFfSShjLCBtLCBkKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR18yKGMsIG0sIGQpIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfMl9JKGMsIG0sIGQpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HXzMoYywgbSwgZCkgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR18zX0koYywgbSwgZCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfMV9JKGMsIG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xKGMsIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfTV8xLCAobSwgZCkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HXzJfSShjLCBtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMihjLCBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX01fMiwgKG0sIGQpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR18zX0koYywgbSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzMoYywgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19NXzMsIChtLCBkKSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfNChjLCBtLCBkKSBORE5CT09TVF9QUF9FUlJPUigweDAwMDMpCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX1NUUklDVCgpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX01fMSh6LCBuLCBtZCkgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19NXzFfSU0oeiwgbiwgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzIgbWQpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX01fMih6LCBuLCBtZCkgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19NXzJfSU0oeiwgbiwgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzIgbWQpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX01fMyh6LCBuLCBtZCkgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19NXzNfSU0oeiwgbiwgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzIgbWQpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX01fMV9JTSh6LCBuLCBpbSkgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19NXzFfSSh6LCBuLCBpbSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfTV8yX0lNKHosIG4sIGltKSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX01fMl9JKHosIG4sIGltKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19NXzNfSU0oeiwgbiwgaW0pIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfTV8zX0koeiwgbiwgaW0pCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfTV8xKHosIG4sIG1kKSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX01fMV9JKHosIG4sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMCwgbWQpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDEsIG1kKSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfTV8yKHosIG4sIG1kKSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX01fMl9JKHosIG4sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMCwgbWQpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDEsIG1kKSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfTV8zKHosIG4sIG1kKSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX01fM19JKHosIG4sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMCwgbWQpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDEsIG1kKSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfTV8xX0koeiwgbiwgbSwgZCkgLCBtKHosIG4sIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX01fMl9JKHosIG4sIG0sIGQpICwgbSh6LCBuLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19NXzNfSSh6LCBuLCBtLCBkKSAsIG0oeiwgbiwgZCkKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV90cmFpbGluZ19wYXJhbXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3RyYWlsaW5nX3BhcmFtcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhOWNkN2EuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3RyYWlsaW5nX3BhcmFtcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVUSVRJT05fRU5VTV9UUkFJTElOR19QQVJBTVNfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRVRJVElPTl9FTlVNX1RSQUlMSU5HX1BBUkFNU19IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9yZXBlYXQuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKGNvdW50LCBwYXJhbSkgTkROQk9PU1RfUFBfUkVQRUFUKGNvdW50LCBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNU19NLCBwYXJhbSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMoY291bnQsIHBhcmFtKSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNU19JKGNvdW50LCBwYXJhbSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TX0koY291bnQsIHBhcmFtKSBORE5CT09TVF9QUF9SRVBFQVQoY291bnQsIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TX00sIHBhcmFtKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVNfTSh6LCBuLCBwYXJhbSkgLCBwYXJhbSAjIyBuCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TX1ogKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNU19aKHosIGNvdW50LCBwYXJhbSkgTkROQk9PU1RfUFBfUkVQRUFUXyAjIyB6KGNvdW50LCBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNU19NLCBwYXJhbSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVNfWih6LCBjb3VudCwgcGFyYW0pIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TX1pfSSh6LCBjb3VudCwgcGFyYW0pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNU19aX0koeiwgY291bnQsIHBhcmFtKSBORE5CT09TVF9QUF9SRVBFQVRfICMjIHooY291bnQsIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TX00sIHBhcmFtKQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9mb3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9mb3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4N2FkZjNlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZm9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwNiArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9SRVBFVElUSU9OX0ZPUl9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9SRVBFVElUSU9OX0ZPUl9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZWJ1Zy9lcnJvci5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZXRhaWwvYXV0b19yZWMuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9GT1IgKi8KLSMKLSMgaWYgMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRk9SKHN0YXRlLCBwcmVkLCBvcCwgbWFjcm8pCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1IgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0ZPUl8sIE5ETkJPT1NUX1BQX0FVVE9fUkVDKE5ETkJPT1NUX1BQX0ZPUl9QLCAyNTYpKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX1AobikgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0ZPUl9DSEVDS18sIE5ETkJPT1NUX1BQX0ZPUl8gIyMgbigxLCBORE5CT09TVF9QUF9GT1JfU1JfUCwgTkROQk9PU1RfUFBfRk9SX1NSX08sIE5ETkJPT1NUX1BQX0ZPUl9TUl9NKSkKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9TUl9QKHIsIHMpIHMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9TUl9PKHIsIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9TUl9NKHIsIHMpIE5ETkJPT1NUX1BQX05JTAotIwotIyBpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9kZXRhaWwvZWRnL2Zvci5ocHA+Ci0jIGVsaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVNWQygpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2RldGFpbC9tc3ZjL2Zvci5ocHA+Ci0jIGVsaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRE1DKCkKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZGV0YWlsL2RtYy9mb3IuaHBwPgotIyBlbHNlCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2RldGFpbC9mb3IuaHBwPgotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9FUlJPUigweDAwMDIpCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfTklMIDEKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8zKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzUocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl82KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzgocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl85KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTAocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEyKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTMocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE1KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTYocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE4KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTkocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIxKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjIocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzI0KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjUocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yNihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzI3KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjgocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yOShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzMwKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMzEocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8zMihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzMzKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMzQocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8zNShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzM2KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMzcocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8zOChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzM5KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNDAocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl80MShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzQyKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNDMocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl80NChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzQ1KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNDYocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl80NyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzQ4KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNDkocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl81MChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzUxKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNTIocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl81MyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzU0KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNTUocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl81NihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzU3KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNTgocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl81OShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzYwKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNjEocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl82MihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzYzKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNjQocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl82NShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzY2KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNjcocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl82OChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzY5KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNzAocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl83MShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzcyKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNzMocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl83NChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzc1KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNzYocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl83NyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzc4KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNzkocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl84MChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzgxKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfODIocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl84MyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzg0KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfODUocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl84NihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzg3KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfODgocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl84OShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzkwKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfOTEocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl85MihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzkzKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfOTQocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl85NShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzk2KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfOTcocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl85OChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzk5KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTAwKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTAxKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTAyKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTAzKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTA0KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTA1KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTA2KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTA3KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTA4KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTA5KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTEwKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTExKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTEyKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTEzKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTE0KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTE1KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTE2KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTE3KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTE4KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTE5KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTIwKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTIxKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTIyKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTIzKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTI0KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTI1KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTI2KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTI3KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTI4KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTI5KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTMwKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTMxKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTMyKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTMzKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTM0KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTM1KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTM2KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTM3KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTM4KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTM5KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTQwKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTQxKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTQyKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTQzKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTQ0KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTQ1KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTQ2KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTQ3KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTQ4KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTQ5KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTUwKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTUxKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTUyKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTUzKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTU0KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTU1KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTU2KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTU3KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTU4KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTU5KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTYwKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTYxKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTYyKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTYzKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTY0KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTY1KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTY2KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTY3KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTY4KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTY5KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTcwKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTcxKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTcyKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTczKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTc0KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTc1KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTc2KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTc3KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTc4KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTc5KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTgwKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTgxKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTgyKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTgzKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTg0KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTg1KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTg2KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTg3KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTg4KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTg5KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTkwKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTkxKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTkyKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTkzKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTk0KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTk1KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTk2KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTk3KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTk4KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTk5KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjAwKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjAxKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjAyKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjAzKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjA0KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjA1KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjA2KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjA3KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjA4KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjA5KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjEwKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjExKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjEyKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjEzKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjE0KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjE1KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjE2KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjE3KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjE4KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjE5KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjIwKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjIxKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjIyKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjIzKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjI0KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjI1KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjI2KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjI3KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjI4KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjI5KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjMwKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjMxKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjMyKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjMzKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjM0KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjM1KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjM2KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjM3KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjM4KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjM5KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjQwKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjQxKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjQyKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjQzKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjQ0KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjQ1KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjQ2KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjQ3KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjQ4KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjQ5KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjUwKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjUxKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjUyKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjUzKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjU0KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjU1KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjU2KHMsIHAsIG8sIG0pIDAKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vcmVwZWF0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vcmVwZWF0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTVjNGFkYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL3JlcGVhdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MjUgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRVRJVElPTl9SRVBFQVRfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRVRJVElPTl9SRVBFQVRfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZWJ1Zy9lcnJvci5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZXRhaWwvYXV0b19yZWMuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWF0LmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfUkVQRUFUICovCi0jCi0jIGlmIDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVChjb3VudCwgbWFjcm8sIGRhdGEpCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVQgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX1JFUEVBVF8sIE5ETkJPT1NUX1BQX0FVVE9fUkVDKE5ETkJPT1NUX1BQX1JFUEVBVF9QLCA0KSkKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9QKG4pIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9SRVBFQVRfQ0hFQ0tfLCBORE5CT09TVF9QUF9SRVBFQVRfICMjIG4oMSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zLCBORE5CT09TVF9QUF9OSUwpKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0NIRUNLX05ETkJPT1NUX1BQX05JTCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfQ0hFQ0tfTkROQk9PU1RfUFBfUkVQRUFUXzEoYywgbSwgZCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0NIRUNLX05ETkJPT1NUX1BQX1JFUEVBVF8yKGMsIG0sIGQpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9DSEVDS19ORE5CT09TVF9QUF9SRVBFQVRfMyhjLCBtLCBkKSAwCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMShjLCBtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV9JKGMsIG0sIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMihjLCBtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl9JKGMsIG0sIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMyhjLCBtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM19JKGMsIG0sIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfNChjLCBtLCBkKSBORE5CT09TVF9QUF9FUlJPUigweDAwMDMpCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV9JKGMsIG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXyAjIyBjKG0sIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl9JKGMsIG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXyAjIyBjKG0sIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM19JKGMsIG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXyAjIyBjKG0sIGQpCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMVNUIE5ETkJPT1NUX1BQX1JFUEVBVF8xCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMk5EIE5ETkJPT1NUX1BQX1JFUEVBVF8yCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM1JEIE5ETkJPT1NUX1BQX1JFUEVBVF8zCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8wKG0sIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xKG0sIGQpIG0oMiwgMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMShtLCBkKSBtKDIsIDEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8zKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIobSwgZCkgbSgyLCAyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8zKG0sIGQpIG0oMiwgMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNChtLCBkKSBtKDIsIDQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV82KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzUobSwgZCkgbSgyLCA1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV82KG0sIGQpIG0oMiwgNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNyhtLCBkKSBtKDIsIDcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV85KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzgobSwgZCkgbSgyLCA4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfOShtLCBkKSBtKDIsIDksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMChtLCBkKSBtKDIsIDEwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTEobSwgZCkgbSgyLCAxMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEyKG0sIGQpIG0oMiwgMTIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMyhtLCBkKSBtKDIsIDEzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTQobSwgZCkgbSgyLCAxNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE1KG0sIGQpIG0oMiwgMTUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNihtLCBkKSBtKDIsIDE2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTcobSwgZCkgbSgyLCAxNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE4KG0sIGQpIG0oMiwgMTgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xOShtLCBkKSBtKDIsIDE5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjAobSwgZCkgbSgyLCAyMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIxKG0sIGQpIG0oMiwgMjEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMihtLCBkKSBtKDIsIDIyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjMobSwgZCkgbSgyLCAyMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI0KG0sIGQpIG0oMiwgMjQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNShtLCBkKSBtKDIsIDI1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjYobSwgZCkgbSgyLCAyNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI3KG0sIGQpIG0oMiwgMjcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yOChtLCBkKSBtKDIsIDI4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMzAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjkobSwgZCkgbSgyLCAyOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzMxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzMwKG0sIGQpIG0oMiwgMzAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8zMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8zMShtLCBkKSBtKDIsIDMxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMzMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMzIobSwgZCkgbSgyLCAzMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzM0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzMzKG0sIGQpIG0oMiwgMzMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8zNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8zNChtLCBkKSBtKDIsIDM0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMzYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMzUobSwgZCkgbSgyLCAzNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzM3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzM2KG0sIGQpIG0oMiwgMzYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8zOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8zNyhtLCBkKSBtKDIsIDM3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMzkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMzgobSwgZCkgbSgyLCAzOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzQwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzM5KG0sIGQpIG0oMiwgMzksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV80MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV80MChtLCBkKSBtKDIsIDQwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNDIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNDEobSwgZCkgbSgyLCA0MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzQzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzQyKG0sIGQpIG0oMiwgNDIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV80NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV80MyhtLCBkKSBtKDIsIDQzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNDUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNDQobSwgZCkgbSgyLCA0NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzQ2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzQ1KG0sIGQpIG0oMiwgNDUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV80NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV80NihtLCBkKSBtKDIsIDQ2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNDgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNDcobSwgZCkgbSgyLCA0NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzQ5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzQ4KG0sIGQpIG0oMiwgNDgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV81MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV80OShtLCBkKSBtKDIsIDQ5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNTEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNTAobSwgZCkgbSgyLCA1MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzUyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzUxKG0sIGQpIG0oMiwgNTEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV81MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV81MihtLCBkKSBtKDIsIDUyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNTQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNTMobSwgZCkgbSgyLCA1MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzU1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzU0KG0sIGQpIG0oMiwgNTQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV81NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV81NShtLCBkKSBtKDIsIDU1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNTcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNTYobSwgZCkgbSgyLCA1NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzU4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzU3KG0sIGQpIG0oMiwgNTcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV81OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV81OChtLCBkKSBtKDIsIDU4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNjAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNTkobSwgZCkgbSgyLCA1OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzYxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzYwKG0sIGQpIG0oMiwgNjAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV82MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV82MShtLCBkKSBtKDIsIDYxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNjMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNjIobSwgZCkgbSgyLCA2MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzY0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzYzKG0sIGQpIG0oMiwgNjMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV82NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV82NChtLCBkKSBtKDIsIDY0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNjYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNjUobSwgZCkgbSgyLCA2NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzY3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzY2KG0sIGQpIG0oMiwgNjYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV82OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV82NyhtLCBkKSBtKDIsIDY3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNjkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNjgobSwgZCkgbSgyLCA2OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzcwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzY5KG0sIGQpIG0oMiwgNjksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV83MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV83MChtLCBkKSBtKDIsIDcwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNzIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNzEobSwgZCkgbSgyLCA3MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzczKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzcyKG0sIGQpIG0oMiwgNzIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV83NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV83MyhtLCBkKSBtKDIsIDczLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNzUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNzQobSwgZCkgbSgyLCA3NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzc2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzc1KG0sIGQpIG0oMiwgNzUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV83NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV83NihtLCBkKSBtKDIsIDc2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNzgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNzcobSwgZCkgbSgyLCA3NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzc5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzc4KG0sIGQpIG0oMiwgNzgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV84MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV83OShtLCBkKSBtKDIsIDc5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfODEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfODAobSwgZCkgbSgyLCA4MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzgyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzgxKG0sIGQpIG0oMiwgODEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV84MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV84MihtLCBkKSBtKDIsIDgyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfODQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfODMobSwgZCkgbSgyLCA4MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzg1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzg0KG0sIGQpIG0oMiwgODQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV84NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV84NShtLCBkKSBtKDIsIDg1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfODcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfODYobSwgZCkgbSgyLCA4NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzg4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzg3KG0sIGQpIG0oMiwgODcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV84OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV84OChtLCBkKSBtKDIsIDg4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfOTAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfODkobSwgZCkgbSgyLCA4OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzkxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzkwKG0sIGQpIG0oMiwgOTAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV85MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV85MShtLCBkKSBtKDIsIDkxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfOTMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfOTIobSwgZCkgbSgyLCA5MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzk0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzkzKG0sIGQpIG0oMiwgOTMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV85NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV85NChtLCBkKSBtKDIsIDk0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfOTYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfOTUobSwgZCkgbSgyLCA5NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzk3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzk2KG0sIGQpIG0oMiwgOTYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV85OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV85NyhtLCBkKSBtKDIsIDk3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfOTkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfOTgobSwgZCkgbSgyLCA5OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEwMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV85OShtLCBkKSBtKDIsIDk5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTAxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEwMChtLCBkKSBtKDIsIDEwMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEwMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMDEobSwgZCkgbSgyLCAxMDEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMDMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTAyKG0sIGQpIG0oMiwgMTAyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTA0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEwMyhtLCBkKSBtKDIsIDEwMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEwNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMDQobSwgZCkgbSgyLCAxMDQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMDYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTA1KG0sIGQpIG0oMiwgMTA1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTA3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEwNihtLCBkKSBtKDIsIDEwNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEwOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMDcobSwgZCkgbSgyLCAxMDcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMDkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTA4KG0sIGQpIG0oMiwgMTA4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTEwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEwOShtLCBkKSBtKDIsIDEwOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzExMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMTAobSwgZCkgbSgyLCAxMTAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMTIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTExKG0sIGQpIG0oMiwgMTExLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTEzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzExMihtLCBkKSBtKDIsIDExMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzExNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMTMobSwgZCkgbSgyLCAxMTMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMTUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTE0KG0sIGQpIG0oMiwgMTE0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTE2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzExNShtLCBkKSBtKDIsIDExNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzExNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMTYobSwgZCkgbSgyLCAxMTYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMTgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTE3KG0sIGQpIG0oMiwgMTE3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTE5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzExOChtLCBkKSBtKDIsIDExOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEyMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMTkobSwgZCkgbSgyLCAxMTksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMjEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTIwKG0sIGQpIG0oMiwgMTIwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTIyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEyMShtLCBkKSBtKDIsIDEyMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEyMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMjIobSwgZCkgbSgyLCAxMjIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMjQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTIzKG0sIGQpIG0oMiwgMTIzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTI1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEyNChtLCBkKSBtKDIsIDEyNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEyNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMjUobSwgZCkgbSgyLCAxMjUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMjcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTI2KG0sIGQpIG0oMiwgMTI2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTI4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEyNyhtLCBkKSBtKDIsIDEyNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEyOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMjgobSwgZCkgbSgyLCAxMjgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMzAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTI5KG0sIGQpIG0oMiwgMTI5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTMxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEzMChtLCBkKSBtKDIsIDEzMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEzMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMzEobSwgZCkgbSgyLCAxMzEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMzMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTMyKG0sIGQpIG0oMiwgMTMyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTM0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEzMyhtLCBkKSBtKDIsIDEzMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEzNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMzQobSwgZCkgbSgyLCAxMzQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMzYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTM1KG0sIGQpIG0oMiwgMTM1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTM3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEzNihtLCBkKSBtKDIsIDEzNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEzOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMzcobSwgZCkgbSgyLCAxMzcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMzkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTM4KG0sIGQpIG0oMiwgMTM4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTQwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEzOShtLCBkKSBtKDIsIDEzOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE0MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNDAobSwgZCkgbSgyLCAxNDAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNDIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTQxKG0sIGQpIG0oMiwgMTQxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTQzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE0MihtLCBkKSBtKDIsIDE0MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE0NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNDMobSwgZCkgbSgyLCAxNDMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNDUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTQ0KG0sIGQpIG0oMiwgMTQ0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTQ2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE0NShtLCBkKSBtKDIsIDE0NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE0NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNDYobSwgZCkgbSgyLCAxNDYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNDgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTQ3KG0sIGQpIG0oMiwgMTQ3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTQ5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE0OChtLCBkKSBtKDIsIDE0OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE1MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNDkobSwgZCkgbSgyLCAxNDksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNTEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTUwKG0sIGQpIG0oMiwgMTUwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTUyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE1MShtLCBkKSBtKDIsIDE1MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE1MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNTIobSwgZCkgbSgyLCAxNTIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNTQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTUzKG0sIGQpIG0oMiwgMTUzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTU1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE1NChtLCBkKSBtKDIsIDE1NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE1NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNTUobSwgZCkgbSgyLCAxNTUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNTcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTU2KG0sIGQpIG0oMiwgMTU2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTU4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE1NyhtLCBkKSBtKDIsIDE1NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE1OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNTgobSwgZCkgbSgyLCAxNTgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNjAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTU5KG0sIGQpIG0oMiwgMTU5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTYxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE2MChtLCBkKSBtKDIsIDE2MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE2MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNjEobSwgZCkgbSgyLCAxNjEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNjMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTYyKG0sIGQpIG0oMiwgMTYyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTY0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE2MyhtLCBkKSBtKDIsIDE2MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE2NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNjQobSwgZCkgbSgyLCAxNjQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNjYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTY1KG0sIGQpIG0oMiwgMTY1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTY3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE2NihtLCBkKSBtKDIsIDE2NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE2OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNjcobSwgZCkgbSgyLCAxNjcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNjkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTY4KG0sIGQpIG0oMiwgMTY4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTcwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE2OShtLCBkKSBtKDIsIDE2OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE3MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNzAobSwgZCkgbSgyLCAxNzAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNzIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTcxKG0sIGQpIG0oMiwgMTcxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTczKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE3MihtLCBkKSBtKDIsIDE3MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE3NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNzMobSwgZCkgbSgyLCAxNzMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNzUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTc0KG0sIGQpIG0oMiwgMTc0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTc2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE3NShtLCBkKSBtKDIsIDE3NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE3NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNzYobSwgZCkgbSgyLCAxNzYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNzgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTc3KG0sIGQpIG0oMiwgMTc3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTc5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE3OChtLCBkKSBtKDIsIDE3OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE4MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNzkobSwgZCkgbSgyLCAxNzksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xODEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTgwKG0sIGQpIG0oMiwgMTgwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTgyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE4MShtLCBkKSBtKDIsIDE4MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE4MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xODIobSwgZCkgbSgyLCAxODIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xODQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTgzKG0sIGQpIG0oMiwgMTgzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTg1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE4NChtLCBkKSBtKDIsIDE4NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE4NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xODUobSwgZCkgbSgyLCAxODUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xODcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTg2KG0sIGQpIG0oMiwgMTg2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTg4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE4NyhtLCBkKSBtKDIsIDE4NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE4OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xODgobSwgZCkgbSgyLCAxODgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xOTAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTg5KG0sIGQpIG0oMiwgMTg5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTkxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE5MChtLCBkKSBtKDIsIDE5MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE5MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xOTEobSwgZCkgbSgyLCAxOTEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xOTMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTkyKG0sIGQpIG0oMiwgMTkyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTk0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE5MyhtLCBkKSBtKDIsIDE5MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE5NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xOTQobSwgZCkgbSgyLCAxOTQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xOTYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTk1KG0sIGQpIG0oMiwgMTk1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTk3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE5NihtLCBkKSBtKDIsIDE5NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE5OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xOTcobSwgZCkgbSgyLCAxOTcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xOTkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTk4KG0sIGQpIG0oMiwgMTk4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjAwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE5OShtLCBkKSBtKDIsIDE5OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIwMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMDAobSwgZCkgbSgyLCAyMDAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMDIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjAxKG0sIGQpIG0oMiwgMjAxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjAzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIwMihtLCBkKSBtKDIsIDIwMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIwNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMDMobSwgZCkgbSgyLCAyMDMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMDUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjA0KG0sIGQpIG0oMiwgMjA0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjA2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIwNShtLCBkKSBtKDIsIDIwNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIwNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMDYobSwgZCkgbSgyLCAyMDYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMDgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjA3KG0sIGQpIG0oMiwgMjA3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjA5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIwOChtLCBkKSBtKDIsIDIwOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIxMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMDkobSwgZCkgbSgyLCAyMDksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMTEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjEwKG0sIGQpIG0oMiwgMjEwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjEyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIxMShtLCBkKSBtKDIsIDIxMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIxMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMTIobSwgZCkgbSgyLCAyMTIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMTQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjEzKG0sIGQpIG0oMiwgMjEzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjE1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIxNChtLCBkKSBtKDIsIDIxNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIxNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMTUobSwgZCkgbSgyLCAyMTUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMTcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjE2KG0sIGQpIG0oMiwgMjE2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjE4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIxNyhtLCBkKSBtKDIsIDIxNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIxOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMTgobSwgZCkgbSgyLCAyMTgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMjAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjE5KG0sIGQpIG0oMiwgMjE5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjIxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIyMChtLCBkKSBtKDIsIDIyMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIyMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMjEobSwgZCkgbSgyLCAyMjEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMjMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjIyKG0sIGQpIG0oMiwgMjIyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjI0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIyMyhtLCBkKSBtKDIsIDIyMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIyNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMjQobSwgZCkgbSgyLCAyMjQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMjYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjI1KG0sIGQpIG0oMiwgMjI1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjI3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIyNihtLCBkKSBtKDIsIDIyNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIyOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMjcobSwgZCkgbSgyLCAyMjcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMjkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjI4KG0sIGQpIG0oMiwgMjI4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjMwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIyOShtLCBkKSBtKDIsIDIyOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIzMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMzAobSwgZCkgbSgyLCAyMzAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMzIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjMxKG0sIGQpIG0oMiwgMjMxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjMzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIzMihtLCBkKSBtKDIsIDIzMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIzNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMzMobSwgZCkgbSgyLCAyMzMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMzUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjM0KG0sIGQpIG0oMiwgMjM0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjM2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIzNShtLCBkKSBtKDIsIDIzNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIzNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMzYobSwgZCkgbSgyLCAyMzYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMzgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjM3KG0sIGQpIG0oMiwgMjM3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjM5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIzOChtLCBkKSBtKDIsIDIzOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI0MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMzkobSwgZCkgbSgyLCAyMzksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNDEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjQwKG0sIGQpIG0oMiwgMjQwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjQyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI0MShtLCBkKSBtKDIsIDI0MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI0MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNDIobSwgZCkgbSgyLCAyNDIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNDQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjQzKG0sIGQpIG0oMiwgMjQzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjQ1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI0NChtLCBkKSBtKDIsIDI0NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI0NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNDUobSwgZCkgbSgyLCAyNDUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNDcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjQ2KG0sIGQpIG0oMiwgMjQ2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjQ4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI0NyhtLCBkKSBtKDIsIDI0NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI0OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNDgobSwgZCkgbSgyLCAyNDgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNTAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjQ5KG0sIGQpIG0oMiwgMjQ5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjUxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI1MChtLCBkKSBtKDIsIDI1MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI1MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNTEobSwgZCkgbSgyLCAyNTEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNTMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjUyKG0sIGQpIG0oMiwgMjUyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjU0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI1MyhtLCBkKSBtKDIsIDI1MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI1NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNTQobSwgZCkgbSgyLCAyNTQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNTYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjU1KG0sIGQpIG0oMiwgMjU1LCBkKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMChtLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMShtLCBkKSBtKDMsIDAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEobSwgZCkgbSgzLCAxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yKG0sIGQpIG0oMywgMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMyhtLCBkKSBtKDMsIDMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl81KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzQobSwgZCkgbSgzLCA0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl81KG0sIGQpIG0oMywgNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNihtLCBkKSBtKDMsIDYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl84KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzcobSwgZCkgbSgzLCA3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl84KG0sIGQpIG0oMywgOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzkobSwgZCkgbSgzLCA5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTAobSwgZCkgbSgzLCAxMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzExKG0sIGQpIG0oMywgMTEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMihtLCBkKSBtKDMsIDEyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTMobSwgZCkgbSgzLCAxMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE0KG0sIGQpIG0oMywgMTQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNShtLCBkKSBtKDMsIDE1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTYobSwgZCkgbSgzLCAxNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE3KG0sIGQpIG0oMywgMTcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xOChtLCBkKSBtKDMsIDE4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTkobSwgZCkgbSgzLCAxOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIwKG0sIGQpIG0oMywgMjAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMShtLCBkKSBtKDMsIDIxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjIobSwgZCkgbSgzLCAyMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIzKG0sIGQpIG0oMywgMjMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNChtLCBkKSBtKDMsIDI0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjUobSwgZCkgbSgzLCAyNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI2KG0sIGQpIG0oMywgMjYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNyhtLCBkKSBtKDMsIDI3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjgobSwgZCkgbSgzLCAyOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzMwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI5KG0sIGQpIG0oMywgMjksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8zMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8zMChtLCBkKSBtKDMsIDMwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMzIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMzEobSwgZCkgbSgzLCAzMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzMzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzMyKG0sIGQpIG0oMywgMzIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8zNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8zMyhtLCBkKSBtKDMsIDMzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMzUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMzQobSwgZCkgbSgzLCAzNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzM2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzM1KG0sIGQpIG0oMywgMzUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8zNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8zNihtLCBkKSBtKDMsIDM2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMzgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMzcobSwgZCkgbSgzLCAzNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzM5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzM4KG0sIGQpIG0oMywgMzgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl80MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8zOShtLCBkKSBtKDMsIDM5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNDEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNDAobSwgZCkgbSgzLCA0MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzQyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzQxKG0sIGQpIG0oMywgNDEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl80MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl80MihtLCBkKSBtKDMsIDQyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNDQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNDMobSwgZCkgbSgzLCA0MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzQ1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzQ0KG0sIGQpIG0oMywgNDQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl80NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl80NShtLCBkKSBtKDMsIDQ1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNDcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNDYobSwgZCkgbSgzLCA0NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzQ4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzQ3KG0sIGQpIG0oMywgNDcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl80OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl80OChtLCBkKSBtKDMsIDQ4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNTAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNDkobSwgZCkgbSgzLCA0OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzUxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzUwKG0sIGQpIG0oMywgNTAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl81MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl81MShtLCBkKSBtKDMsIDUxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNTMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNTIobSwgZCkgbSgzLCA1MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzU0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzUzKG0sIGQpIG0oMywgNTMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl81NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl81NChtLCBkKSBtKDMsIDU0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNTYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNTUobSwgZCkgbSgzLCA1NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzU3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzU2KG0sIGQpIG0oMywgNTYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl81OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl81NyhtLCBkKSBtKDMsIDU3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNTkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNTgobSwgZCkgbSgzLCA1OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzYwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzU5KG0sIGQpIG0oMywgNTksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl82MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl82MChtLCBkKSBtKDMsIDYwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNjIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNjEobSwgZCkgbSgzLCA2MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzYzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzYyKG0sIGQpIG0oMywgNjIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl82NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl82MyhtLCBkKSBtKDMsIDYzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNjUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNjQobSwgZCkgbSgzLCA2NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzY2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzY1KG0sIGQpIG0oMywgNjUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl82NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl82NihtLCBkKSBtKDMsIDY2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNjgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNjcobSwgZCkgbSgzLCA2NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzY5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzY4KG0sIGQpIG0oMywgNjgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl83MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl82OShtLCBkKSBtKDMsIDY5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNzEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNzAobSwgZCkgbSgzLCA3MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzcyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzcxKG0sIGQpIG0oMywgNzEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl83MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl83MihtLCBkKSBtKDMsIDcyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNzQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNzMobSwgZCkgbSgzLCA3MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzc1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzc0KG0sIGQpIG0oMywgNzQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl83NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl83NShtLCBkKSBtKDMsIDc1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNzcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNzYobSwgZCkgbSgzLCA3NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzc4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzc3KG0sIGQpIG0oMywgNzcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl83OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl83OChtLCBkKSBtKDMsIDc4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfODAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNzkobSwgZCkgbSgzLCA3OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzgxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzgwKG0sIGQpIG0oMywgODAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl84MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl84MShtLCBkKSBtKDMsIDgxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfODMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfODIobSwgZCkgbSgzLCA4MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzg0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzgzKG0sIGQpIG0oMywgODMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl84NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl84NChtLCBkKSBtKDMsIDg0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfODYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfODUobSwgZCkgbSgzLCA4NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzg3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzg2KG0sIGQpIG0oMywgODYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl84OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl84NyhtLCBkKSBtKDMsIDg3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfODkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfODgobSwgZCkgbSgzLCA4OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzkwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzg5KG0sIGQpIG0oMywgODksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl85MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl85MChtLCBkKSBtKDMsIDkwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfOTIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfOTEobSwgZCkgbSgzLCA5MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzkzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzkyKG0sIGQpIG0oMywgOTIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl85NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl85MyhtLCBkKSBtKDMsIDkzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfOTUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfOTQobSwgZCkgbSgzLCA5NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzk2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzk1KG0sIGQpIG0oMywgOTUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl85NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl85NihtLCBkKSBtKDMsIDk2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfOTgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfOTcobSwgZCkgbSgzLCA5NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzk5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzk4KG0sIGQpIG0oMywgOTgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMDAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfOTkobSwgZCkgbSgzLCA5OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEwMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMDAobSwgZCkgbSgzLCAxMDAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMDIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTAxKG0sIGQpIG0oMywgMTAxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTAzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEwMihtLCBkKSBtKDMsIDEwMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEwNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMDMobSwgZCkgbSgzLCAxMDMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMDUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTA0KG0sIGQpIG0oMywgMTA0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTA2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEwNShtLCBkKSBtKDMsIDEwNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEwNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMDYobSwgZCkgbSgzLCAxMDYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMDgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTA3KG0sIGQpIG0oMywgMTA3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTA5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEwOChtLCBkKSBtKDMsIDEwOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzExMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMDkobSwgZCkgbSgzLCAxMDksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMTEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTEwKG0sIGQpIG0oMywgMTEwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTEyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzExMShtLCBkKSBtKDMsIDExMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzExMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMTIobSwgZCkgbSgzLCAxMTIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMTQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTEzKG0sIGQpIG0oMywgMTEzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTE1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzExNChtLCBkKSBtKDMsIDExNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzExNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMTUobSwgZCkgbSgzLCAxMTUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMTcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTE2KG0sIGQpIG0oMywgMTE2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTE4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzExNyhtLCBkKSBtKDMsIDExNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzExOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMTgobSwgZCkgbSgzLCAxMTgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMjAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTE5KG0sIGQpIG0oMywgMTE5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTIxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEyMChtLCBkKSBtKDMsIDEyMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEyMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMjEobSwgZCkgbSgzLCAxMjEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMjMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTIyKG0sIGQpIG0oMywgMTIyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTI0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEyMyhtLCBkKSBtKDMsIDEyMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEyNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMjQobSwgZCkgbSgzLCAxMjQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMjYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTI1KG0sIGQpIG0oMywgMTI1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTI3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEyNihtLCBkKSBtKDMsIDEyNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEyOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMjcobSwgZCkgbSgzLCAxMjcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMjkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTI4KG0sIGQpIG0oMywgMTI4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTMwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEyOShtLCBkKSBtKDMsIDEyOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEzMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMzAobSwgZCkgbSgzLCAxMzAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMzIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTMxKG0sIGQpIG0oMywgMTMxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTMzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEzMihtLCBkKSBtKDMsIDEzMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEzNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMzMobSwgZCkgbSgzLCAxMzMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMzUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTM0KG0sIGQpIG0oMywgMTM0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTM2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEzNShtLCBkKSBtKDMsIDEzNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEzNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMzYobSwgZCkgbSgzLCAxMzYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMzgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTM3KG0sIGQpIG0oMywgMTM3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTM5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEzOChtLCBkKSBtKDMsIDEzOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE0MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMzkobSwgZCkgbSgzLCAxMzksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNDEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTQwKG0sIGQpIG0oMywgMTQwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTQyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE0MShtLCBkKSBtKDMsIDE0MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE0MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNDIobSwgZCkgbSgzLCAxNDIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNDQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTQzKG0sIGQpIG0oMywgMTQzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTQ1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE0NChtLCBkKSBtKDMsIDE0NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE0NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNDUobSwgZCkgbSgzLCAxNDUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNDcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTQ2KG0sIGQpIG0oMywgMTQ2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTQ4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE0NyhtLCBkKSBtKDMsIDE0NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE0OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNDgobSwgZCkgbSgzLCAxNDgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNTAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTQ5KG0sIGQpIG0oMywgMTQ5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTUxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE1MChtLCBkKSBtKDMsIDE1MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE1MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNTEobSwgZCkgbSgzLCAxNTEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNTMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTUyKG0sIGQpIG0oMywgMTUyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTU0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE1MyhtLCBkKSBtKDMsIDE1MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE1NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNTQobSwgZCkgbSgzLCAxNTQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNTYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTU1KG0sIGQpIG0oMywgMTU1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTU3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE1NihtLCBkKSBtKDMsIDE1NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE1OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNTcobSwgZCkgbSgzLCAxNTcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNTkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTU4KG0sIGQpIG0oMywgMTU4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTYwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE1OShtLCBkKSBtKDMsIDE1OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE2MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNjAobSwgZCkgbSgzLCAxNjAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNjIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTYxKG0sIGQpIG0oMywgMTYxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTYzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE2MihtLCBkKSBtKDMsIDE2MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE2NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNjMobSwgZCkgbSgzLCAxNjMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNjUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTY0KG0sIGQpIG0oMywgMTY0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTY2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE2NShtLCBkKSBtKDMsIDE2NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE2NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNjYobSwgZCkgbSgzLCAxNjYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNjgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTY3KG0sIGQpIG0oMywgMTY3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTY5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE2OChtLCBkKSBtKDMsIDE2OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE3MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNjkobSwgZCkgbSgzLCAxNjksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNzEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTcwKG0sIGQpIG0oMywgMTcwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTcyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE3MShtLCBkKSBtKDMsIDE3MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE3MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNzIobSwgZCkgbSgzLCAxNzIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNzQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTczKG0sIGQpIG0oMywgMTczLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTc1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE3NChtLCBkKSBtKDMsIDE3NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE3NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNzUobSwgZCkgbSgzLCAxNzUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNzcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTc2KG0sIGQpIG0oMywgMTc2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTc4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE3NyhtLCBkKSBtKDMsIDE3NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE3OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNzgobSwgZCkgbSgzLCAxNzgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xODAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTc5KG0sIGQpIG0oMywgMTc5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTgxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE4MChtLCBkKSBtKDMsIDE4MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE4MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xODEobSwgZCkgbSgzLCAxODEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xODMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTgyKG0sIGQpIG0oMywgMTgyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTg0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE4MyhtLCBkKSBtKDMsIDE4MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE4NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xODQobSwgZCkgbSgzLCAxODQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xODYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTg1KG0sIGQpIG0oMywgMTg1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTg3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE4NihtLCBkKSBtKDMsIDE4NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE4OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xODcobSwgZCkgbSgzLCAxODcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xODkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTg4KG0sIGQpIG0oMywgMTg4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTkwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE4OShtLCBkKSBtKDMsIDE4OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE5MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xOTAobSwgZCkgbSgzLCAxOTAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xOTIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTkxKG0sIGQpIG0oMywgMTkxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTkzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE5MihtLCBkKSBtKDMsIDE5MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE5NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xOTMobSwgZCkgbSgzLCAxOTMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xOTUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTk0KG0sIGQpIG0oMywgMTk0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTk2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE5NShtLCBkKSBtKDMsIDE5NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE5NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xOTYobSwgZCkgbSgzLCAxOTYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xOTgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTk3KG0sIGQpIG0oMywgMTk3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTk5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE5OChtLCBkKSBtKDMsIDE5OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIwMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xOTkobSwgZCkgbSgzLCAxOTksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMDEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjAwKG0sIGQpIG0oMywgMjAwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjAyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIwMShtLCBkKSBtKDMsIDIwMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIwMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMDIobSwgZCkgbSgzLCAyMDIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMDQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjAzKG0sIGQpIG0oMywgMjAzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjA1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIwNChtLCBkKSBtKDMsIDIwNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIwNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMDUobSwgZCkgbSgzLCAyMDUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMDcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjA2KG0sIGQpIG0oMywgMjA2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjA4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIwNyhtLCBkKSBtKDMsIDIwNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIwOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMDgobSwgZCkgbSgzLCAyMDgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMTAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjA5KG0sIGQpIG0oMywgMjA5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjExKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIxMChtLCBkKSBtKDMsIDIxMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIxMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMTEobSwgZCkgbSgzLCAyMTEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMTMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjEyKG0sIGQpIG0oMywgMjEyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjE0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIxMyhtLCBkKSBtKDMsIDIxMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIxNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMTQobSwgZCkgbSgzLCAyMTQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMTYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjE1KG0sIGQpIG0oMywgMjE1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjE3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIxNihtLCBkKSBtKDMsIDIxNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIxOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMTcobSwgZCkgbSgzLCAyMTcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMTkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjE4KG0sIGQpIG0oMywgMjE4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjIwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIxOShtLCBkKSBtKDMsIDIxOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIyMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMjAobSwgZCkgbSgzLCAyMjAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMjIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjIxKG0sIGQpIG0oMywgMjIxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjIzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIyMihtLCBkKSBtKDMsIDIyMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIyNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMjMobSwgZCkgbSgzLCAyMjMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMjUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjI0KG0sIGQpIG0oMywgMjI0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjI2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIyNShtLCBkKSBtKDMsIDIyNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIyNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMjYobSwgZCkgbSgzLCAyMjYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMjgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjI3KG0sIGQpIG0oMywgMjI3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjI5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIyOChtLCBkKSBtKDMsIDIyOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIzMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMjkobSwgZCkgbSgzLCAyMjksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMzEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjMwKG0sIGQpIG0oMywgMjMwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjMyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIzMShtLCBkKSBtKDMsIDIzMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIzMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMzIobSwgZCkgbSgzLCAyMzIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMzQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjMzKG0sIGQpIG0oMywgMjMzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjM1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIzNChtLCBkKSBtKDMsIDIzNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIzNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMzUobSwgZCkgbSgzLCAyMzUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMzcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjM2KG0sIGQpIG0oMywgMjM2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjM4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIzNyhtLCBkKSBtKDMsIDIzNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIzOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMzgobSwgZCkgbSgzLCAyMzgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNDAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjM5KG0sIGQpIG0oMywgMjM5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjQxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI0MChtLCBkKSBtKDMsIDI0MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI0MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNDEobSwgZCkgbSgzLCAyNDEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNDMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjQyKG0sIGQpIG0oMywgMjQyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjQ0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI0MyhtLCBkKSBtKDMsIDI0MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI0NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNDQobSwgZCkgbSgzLCAyNDQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNDYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjQ1KG0sIGQpIG0oMywgMjQ1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjQ3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI0NihtLCBkKSBtKDMsIDI0NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI0OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNDcobSwgZCkgbSgzLCAyNDcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNDkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjQ4KG0sIGQpIG0oMywgMjQ4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjUwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI0OShtLCBkKSBtKDMsIDI0OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI1MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNTAobSwgZCkgbSgzLCAyNTAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNTIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjUxKG0sIGQpIG0oMywgMjUxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjUzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI1MihtLCBkKSBtKDMsIDI1MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI1NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNTMobSwgZCkgbSgzLCAyNTMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNTUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjU0KG0sIGQpIG0oMywgMjU0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjU2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI1NShtLCBkKSBtKDMsIDI1NSwgZCkKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzAobSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEobSwgZCkgbSg0LCAwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xKG0sIGQpIG0oNCwgMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMihtLCBkKSBtKDQsIDIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM180KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzMobSwgZCkgbSg0LCAzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM180KG0sIGQpIG0oNCwgNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNShtLCBkKSBtKDQsIDUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM183KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzYobSwgZCkgbSg0LCA2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM183KG0sIGQpIG0oNCwgNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfOChtLCBkKSBtKDQsIDgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM185KG0sIGQpIG0oNCwgOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzExKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEwKG0sIGQpIG0oNCwgMTAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMShtLCBkKSBtKDQsIDExLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTIobSwgZCkgbSg0LCAxMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEzKG0sIGQpIG0oNCwgMTMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNChtLCBkKSBtKDQsIDE0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTUobSwgZCkgbSg0LCAxNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE2KG0sIGQpIG0oNCwgMTYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNyhtLCBkKSBtKDQsIDE3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTgobSwgZCkgbSg0LCAxOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE5KG0sIGQpIG0oNCwgMTksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMChtLCBkKSBtKDQsIDIwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjEobSwgZCkgbSg0LCAyMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIyKG0sIGQpIG0oNCwgMjIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMyhtLCBkKSBtKDQsIDIzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjQobSwgZCkgbSg0LCAyNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI1KG0sIGQpIG0oNCwgMjUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yNihtLCBkKSBtKDQsIDI2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjcobSwgZCkgbSg0LCAyNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI4KG0sIGQpIG0oNCwgMjgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18zMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yOShtLCBkKSBtKDQsIDI5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMzEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMzAobSwgZCkgbSg0LCAzMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzMyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzMxKG0sIGQpIG0oNCwgMzEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18zMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18zMihtLCBkKSBtKDQsIDMyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMzQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMzMobSwgZCkgbSg0LCAzMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzM1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzM0KG0sIGQpIG0oNCwgMzQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18zNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18zNShtLCBkKSBtKDQsIDM1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMzcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMzYobSwgZCkgbSg0LCAzNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzM4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzM3KG0sIGQpIG0oNCwgMzcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18zOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18zOChtLCBkKSBtKDQsIDM4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNDAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMzkobSwgZCkgbSg0LCAzOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzQxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzQwKG0sIGQpIG0oNCwgNDAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM180MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM180MShtLCBkKSBtKDQsIDQxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNDMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNDIobSwgZCkgbSg0LCA0MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzQ0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzQzKG0sIGQpIG0oNCwgNDMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM180NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM180NChtLCBkKSBtKDQsIDQ0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNDYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNDUobSwgZCkgbSg0LCA0NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzQ3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzQ2KG0sIGQpIG0oNCwgNDYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM180OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM180NyhtLCBkKSBtKDQsIDQ3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNDkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNDgobSwgZCkgbSg0LCA0OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzUwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzQ5KG0sIGQpIG0oNCwgNDksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM181MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM181MChtLCBkKSBtKDQsIDUwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNTIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNTEobSwgZCkgbSg0LCA1MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzUzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzUyKG0sIGQpIG0oNCwgNTIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM181NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM181MyhtLCBkKSBtKDQsIDUzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNTUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNTQobSwgZCkgbSg0LCA1NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzU2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzU1KG0sIGQpIG0oNCwgNTUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM181NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM181NihtLCBkKSBtKDQsIDU2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNTgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNTcobSwgZCkgbSg0LCA1NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzU5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzU4KG0sIGQpIG0oNCwgNTgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM182MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM181OShtLCBkKSBtKDQsIDU5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNjEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNjAobSwgZCkgbSg0LCA2MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzYyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzYxKG0sIGQpIG0oNCwgNjEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM182MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM182MihtLCBkKSBtKDQsIDYyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNjQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNjMobSwgZCkgbSg0LCA2MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzY1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzY0KG0sIGQpIG0oNCwgNjQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM182NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM182NShtLCBkKSBtKDQsIDY1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNjcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNjYobSwgZCkgbSg0LCA2NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzY4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzY3KG0sIGQpIG0oNCwgNjcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM182OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM182OChtLCBkKSBtKDQsIDY4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNzAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNjkobSwgZCkgbSg0LCA2OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzcxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzcwKG0sIGQpIG0oNCwgNzAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM183MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM183MShtLCBkKSBtKDQsIDcxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNzMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNzIobSwgZCkgbSg0LCA3MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzc0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzczKG0sIGQpIG0oNCwgNzMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM183NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM183NChtLCBkKSBtKDQsIDc0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNzYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNzUobSwgZCkgbSg0LCA3NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzc3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzc2KG0sIGQpIG0oNCwgNzYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM183OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM183NyhtLCBkKSBtKDQsIDc3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNzkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNzgobSwgZCkgbSg0LCA3OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzgwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzc5KG0sIGQpIG0oNCwgNzksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM184MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM184MChtLCBkKSBtKDQsIDgwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfODIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfODEobSwgZCkgbSg0LCA4MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzgzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzgyKG0sIGQpIG0oNCwgODIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM184NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM184MyhtLCBkKSBtKDQsIDgzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfODUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfODQobSwgZCkgbSg0LCA4NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzg2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzg1KG0sIGQpIG0oNCwgODUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM184NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM184NihtLCBkKSBtKDQsIDg2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfODgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfODcobSwgZCkgbSg0LCA4NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzg5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzg4KG0sIGQpIG0oNCwgODgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM185MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM184OShtLCBkKSBtKDQsIDg5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfOTEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfOTAobSwgZCkgbSg0LCA5MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzkyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzkxKG0sIGQpIG0oNCwgOTEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM185MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM185MihtLCBkKSBtKDQsIDkyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfOTQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfOTMobSwgZCkgbSg0LCA5MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzk1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzk0KG0sIGQpIG0oNCwgOTQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM185NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM185NShtLCBkKSBtKDQsIDk1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfOTcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfOTYobSwgZCkgbSg0LCA5NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzk4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzk3KG0sIGQpIG0oNCwgOTcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM185OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM185OChtLCBkKSBtKDQsIDk4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTAwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzk5KG0sIGQpIG0oNCwgOTksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMDEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTAwKG0sIGQpIG0oNCwgMTAwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTAyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEwMShtLCBkKSBtKDQsIDEwMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEwMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMDIobSwgZCkgbSg0LCAxMDIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMDQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTAzKG0sIGQpIG0oNCwgMTAzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTA1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEwNChtLCBkKSBtKDQsIDEwNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEwNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMDUobSwgZCkgbSg0LCAxMDUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMDcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTA2KG0sIGQpIG0oNCwgMTA2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTA4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEwNyhtLCBkKSBtKDQsIDEwNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEwOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMDgobSwgZCkgbSg0LCAxMDgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMTAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTA5KG0sIGQpIG0oNCwgMTA5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTExKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzExMChtLCBkKSBtKDQsIDExMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzExMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMTEobSwgZCkgbSg0LCAxMTEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMTMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTEyKG0sIGQpIG0oNCwgMTEyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTE0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzExMyhtLCBkKSBtKDQsIDExMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzExNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMTQobSwgZCkgbSg0LCAxMTQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMTYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTE1KG0sIGQpIG0oNCwgMTE1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTE3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzExNihtLCBkKSBtKDQsIDExNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzExOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMTcobSwgZCkgbSg0LCAxMTcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMTkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTE4KG0sIGQpIG0oNCwgMTE4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTIwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzExOShtLCBkKSBtKDQsIDExOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEyMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMjAobSwgZCkgbSg0LCAxMjAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMjIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTIxKG0sIGQpIG0oNCwgMTIxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTIzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEyMihtLCBkKSBtKDQsIDEyMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEyNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMjMobSwgZCkgbSg0LCAxMjMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMjUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTI0KG0sIGQpIG0oNCwgMTI0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTI2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEyNShtLCBkKSBtKDQsIDEyNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEyNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMjYobSwgZCkgbSg0LCAxMjYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMjgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTI3KG0sIGQpIG0oNCwgMTI3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTI5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEyOChtLCBkKSBtKDQsIDEyOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEzMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMjkobSwgZCkgbSg0LCAxMjksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMzEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTMwKG0sIGQpIG0oNCwgMTMwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTMyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEzMShtLCBkKSBtKDQsIDEzMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEzMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMzIobSwgZCkgbSg0LCAxMzIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMzQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTMzKG0sIGQpIG0oNCwgMTMzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTM1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEzNChtLCBkKSBtKDQsIDEzNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEzNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMzUobSwgZCkgbSg0LCAxMzUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMzcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTM2KG0sIGQpIG0oNCwgMTM2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTM4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEzNyhtLCBkKSBtKDQsIDEzNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEzOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMzgobSwgZCkgbSg0LCAxMzgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNDAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTM5KG0sIGQpIG0oNCwgMTM5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTQxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE0MChtLCBkKSBtKDQsIDE0MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE0MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNDEobSwgZCkgbSg0LCAxNDEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNDMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTQyKG0sIGQpIG0oNCwgMTQyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTQ0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE0MyhtLCBkKSBtKDQsIDE0MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE0NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNDQobSwgZCkgbSg0LCAxNDQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNDYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTQ1KG0sIGQpIG0oNCwgMTQ1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTQ3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE0NihtLCBkKSBtKDQsIDE0NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE0OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNDcobSwgZCkgbSg0LCAxNDcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNDkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTQ4KG0sIGQpIG0oNCwgMTQ4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTUwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE0OShtLCBkKSBtKDQsIDE0OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE1MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNTAobSwgZCkgbSg0LCAxNTAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNTIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTUxKG0sIGQpIG0oNCwgMTUxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTUzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE1MihtLCBkKSBtKDQsIDE1MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE1NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNTMobSwgZCkgbSg0LCAxNTMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNTUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTU0KG0sIGQpIG0oNCwgMTU0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTU2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE1NShtLCBkKSBtKDQsIDE1NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE1NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNTYobSwgZCkgbSg0LCAxNTYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNTgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTU3KG0sIGQpIG0oNCwgMTU3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTU5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE1OChtLCBkKSBtKDQsIDE1OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE2MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNTkobSwgZCkgbSg0LCAxNTksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNjEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTYwKG0sIGQpIG0oNCwgMTYwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTYyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE2MShtLCBkKSBtKDQsIDE2MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE2MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNjIobSwgZCkgbSg0LCAxNjIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNjQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTYzKG0sIGQpIG0oNCwgMTYzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTY1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE2NChtLCBkKSBtKDQsIDE2NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE2NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNjUobSwgZCkgbSg0LCAxNjUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNjcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTY2KG0sIGQpIG0oNCwgMTY2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTY4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE2NyhtLCBkKSBtKDQsIDE2NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE2OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNjgobSwgZCkgbSg0LCAxNjgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNzAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTY5KG0sIGQpIG0oNCwgMTY5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTcxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE3MChtLCBkKSBtKDQsIDE3MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE3MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNzEobSwgZCkgbSg0LCAxNzEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNzMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTcyKG0sIGQpIG0oNCwgMTcyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTc0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE3MyhtLCBkKSBtKDQsIDE3MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE3NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNzQobSwgZCkgbSg0LCAxNzQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNzYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTc1KG0sIGQpIG0oNCwgMTc1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTc3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE3NihtLCBkKSBtKDQsIDE3NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE3OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNzcobSwgZCkgbSg0LCAxNzcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNzkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTc4KG0sIGQpIG0oNCwgMTc4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTgwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE3OShtLCBkKSBtKDQsIDE3OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE4MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xODAobSwgZCkgbSg0LCAxODAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xODIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTgxKG0sIGQpIG0oNCwgMTgxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTgzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE4MihtLCBkKSBtKDQsIDE4MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE4NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xODMobSwgZCkgbSg0LCAxODMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xODUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTg0KG0sIGQpIG0oNCwgMTg0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTg2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE4NShtLCBkKSBtKDQsIDE4NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE4NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xODYobSwgZCkgbSg0LCAxODYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xODgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTg3KG0sIGQpIG0oNCwgMTg3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTg5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE4OChtLCBkKSBtKDQsIDE4OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE5MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xODkobSwgZCkgbSg0LCAxODksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xOTEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTkwKG0sIGQpIG0oNCwgMTkwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTkyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE5MShtLCBkKSBtKDQsIDE5MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE5MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xOTIobSwgZCkgbSg0LCAxOTIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xOTQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTkzKG0sIGQpIG0oNCwgMTkzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTk1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE5NChtLCBkKSBtKDQsIDE5NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE5NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xOTUobSwgZCkgbSg0LCAxOTUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xOTcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTk2KG0sIGQpIG0oNCwgMTk2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTk4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE5NyhtLCBkKSBtKDQsIDE5NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE5OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xOTgobSwgZCkgbSg0LCAxOTgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMDAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTk5KG0sIGQpIG0oNCwgMTk5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjAxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIwMChtLCBkKSBtKDQsIDIwMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIwMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMDEobSwgZCkgbSg0LCAyMDEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMDMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjAyKG0sIGQpIG0oNCwgMjAyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjA0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIwMyhtLCBkKSBtKDQsIDIwMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIwNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMDQobSwgZCkgbSg0LCAyMDQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMDYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjA1KG0sIGQpIG0oNCwgMjA1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjA3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIwNihtLCBkKSBtKDQsIDIwNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIwOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMDcobSwgZCkgbSg0LCAyMDcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMDkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjA4KG0sIGQpIG0oNCwgMjA4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjEwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIwOShtLCBkKSBtKDQsIDIwOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIxMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMTAobSwgZCkgbSg0LCAyMTAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMTIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjExKG0sIGQpIG0oNCwgMjExLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjEzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIxMihtLCBkKSBtKDQsIDIxMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIxNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMTMobSwgZCkgbSg0LCAyMTMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMTUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjE0KG0sIGQpIG0oNCwgMjE0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjE2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIxNShtLCBkKSBtKDQsIDIxNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIxNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMTYobSwgZCkgbSg0LCAyMTYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMTgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjE3KG0sIGQpIG0oNCwgMjE3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjE5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIxOChtLCBkKSBtKDQsIDIxOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIyMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMTkobSwgZCkgbSg0LCAyMTksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMjEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjIwKG0sIGQpIG0oNCwgMjIwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjIyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIyMShtLCBkKSBtKDQsIDIyMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIyMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMjIobSwgZCkgbSg0LCAyMjIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMjQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjIzKG0sIGQpIG0oNCwgMjIzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjI1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIyNChtLCBkKSBtKDQsIDIyNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIyNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMjUobSwgZCkgbSg0LCAyMjUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMjcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjI2KG0sIGQpIG0oNCwgMjI2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjI4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIyNyhtLCBkKSBtKDQsIDIyNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIyOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMjgobSwgZCkgbSg0LCAyMjgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMzAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjI5KG0sIGQpIG0oNCwgMjI5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjMxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIzMChtLCBkKSBtKDQsIDIzMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIzMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMzEobSwgZCkgbSg0LCAyMzEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMzMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjMyKG0sIGQpIG0oNCwgMjMyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjM0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIzMyhtLCBkKSBtKDQsIDIzMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIzNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMzQobSwgZCkgbSg0LCAyMzQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMzYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjM1KG0sIGQpIG0oNCwgMjM1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjM3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIzNihtLCBkKSBtKDQsIDIzNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIzOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMzcobSwgZCkgbSg0LCAyMzcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMzkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjM4KG0sIGQpIG0oNCwgMjM4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjQwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIzOShtLCBkKSBtKDQsIDIzOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI0MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yNDAobSwgZCkgbSg0LCAyNDAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yNDIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjQxKG0sIGQpIG0oNCwgMjQxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjQzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI0MihtLCBkKSBtKDQsIDI0MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI0NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yNDMobSwgZCkgbSg0LCAyNDMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yNDUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjQ0KG0sIGQpIG0oNCwgMjQ0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjQ2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI0NShtLCBkKSBtKDQsIDI0NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI0NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yNDYobSwgZCkgbSg0LCAyNDYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yNDgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjQ3KG0sIGQpIG0oNCwgMjQ3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjQ5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI0OChtLCBkKSBtKDQsIDI0OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI1MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yNDkobSwgZCkgbSg0LCAyNDksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yNTEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjUwKG0sIGQpIG0oNCwgMjUwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjUyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI1MShtLCBkKSBtKDQsIDI1MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI1MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yNTIobSwgZCkgbSg0LCAyNTIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yNTQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjUzKG0sIGQpIG0oNCwgMjUzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjU1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI1NChtLCBkKSBtKDQsIDI1NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI1NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yNTUobSwgZCkgbSg0LCAyNTUsIGQpCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL3JlcGVhdF9mcm9tX3RvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vcmVwZWF0X2Zyb21fdG8uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTRjNWIwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vcmVwZWF0X2Zyb21fdG8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRVRJVElPTl9SRVBFQVRfRlJPTV9UT19IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9SRVBFVElUSU9OX1JFUEVBVF9GUk9NX1RPX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9hZGQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9zdWIuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC93aGlsZS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZWJ1Zy9lcnJvci5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZXRhaWwvYXV0b19yZWMuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9yZXBlYXQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWxlbS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9yZW0uaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UTyAqLwotIwotIyBpZiAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UTyhmaXJzdCwgbGFzdCwgbWFjcm8sIGRhdGEpCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UTyBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fLCBORE5CT09TVF9QUF9BVVRPX1JFQyhORE5CT09TVF9QUF9SRVBFQVRfUCwgNCkpCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT18xKGYsIGwsIG0sIGR0KSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19EXzEoTkROQk9PU1RfUFBfQVVUT19SRUMoTkROQk9PU1RfUFBfV0hJTEVfUCwgMjU2KSwgZiwgbCwgbSwgZHQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT18yKGYsIGwsIG0sIGR0KSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19EXzIoTkROQk9PU1RfUFBfQVVUT19SRUMoTkROQk9PU1RfUFBfV0hJTEVfUCwgMjU2KSwgZiwgbCwgbSwgZHQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT18zKGYsIGwsIG0sIGR0KSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19EXzMoTkROQk9PU1RfUFBfQVVUT19SRUMoTkROQk9PU1RfUFBfV0hJTEVfUCwgMjU2KSwgZiwgbCwgbSwgZHQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT180KGYsIGwsIG0sIGR0KSBORE5CT09TVF9QUF9FUlJPUigweDAwMDMpCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT18xU1QgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fMk5EIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPXzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPXzNSRCBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT18zCi0jCi0jIC8qIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX0QgKi8KLSMKLSMgaWYgMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fRChkLCBmaXJzdCwgbGFzdCwgbWFjcm8sIGRhdGEpCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19EIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19EXywgTkROQk9PU1RfUFBfQVVUT19SRUMoTkROQk9PU1RfUFBfUkVQRUFUX1AsIDQpKQotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX0RfMShkLCBmLCBsLCBtLCBkdCkgTkROQk9PU1RfUFBfUkVQRUFUXzEoTkROQk9PU1RfUFBfU1VCX0QoZCwgbCwgZiksIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fMSwgKGQsIGYsIG0sIGR0KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX0RfMihkLCBmLCBsLCBtLCBkdCkgTkROQk9PU1RfUFBfUkVQRUFUXzIoTkROQk9PU1RfUFBfU1VCX0QoZCwgbCwgZiksIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fMiwgKGQsIGYsIG0sIGR0KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX0RfMyhkLCBmLCBsLCBtLCBkdCkgTkROQk9PU1RfUFBfUkVQRUFUXzMoTkROQk9PU1RfUFBfU1VCX0QoZCwgbCwgZiksIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fMywgKGQsIGYsIG0sIGR0KSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fRF8xKGQsIGYsIGwsIG0sIGR0KSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19EXzFfSShkLCBmLCBsLCBtLCBkdCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX0RfMihkLCBmLCBsLCBtLCBkdCkgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fRF8yX0koZCwgZiwgbCwgbSwgZHQpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19EXzMoZCwgZiwgbCwgbSwgZHQpIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX0RfM19JKGQsIGYsIGwsIG0sIGR0KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fRF8xX0koZCwgZiwgbCwgbSwgZHQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xKE5ETkJPT1NUX1BQX1NVQl9EKGQsIGwsIGYpLCBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzEsIChkLCBmLCBtLCBkdCkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19EXzJfSShkLCBmLCBsLCBtLCBkdCkgTkROQk9PU1RfUFBfUkVQRUFUXzIoTkROQk9PU1RfUFBfU1VCX0QoZCwgbCwgZiksIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fMiwgKGQsIGYsIG0sIGR0KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX0RfM19JKGQsIGYsIGwsIG0sIGR0KSBORE5CT09TVF9QUF9SRVBFQVRfMyhORE5CT09TVF9QUF9TVUJfRChkLCBsLCBmKSwgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8zLCAoZCwgZiwgbSwgZHQpKQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19TVFJJQ1QoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8xKHosIG4sIGRmbWQpIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fMV9JTSh6LCBuLCBORE5CT09TVF9QUF9UVVBMRV9SRU1fNCBkZm1kKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8yKHosIG4sIGRmbWQpIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fMl9JTSh6LCBuLCBORE5CT09TVF9QUF9UVVBMRV9SRU1fNCBkZm1kKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8zKHosIG4sIGRmbWQpIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fM19JTSh6LCBuLCBORE5CT09TVF9QUF9UVVBMRV9SRU1fNCBkZm1kKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8xX0lNKHosIG4sIGltKSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzFfSSh6LCBuLCBpbSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fMl9JTSh6LCBuLCBpbSkgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8yX0koeiwgbiwgaW0pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzNfSU0oeiwgbiwgaW0pIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fM19JKHosIG4sIGltKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzEoeiwgbiwgZGZtZCkgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8xX0koeiwgbiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSg0LCAwLCBkZm1kKSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSg0LCAxLCBkZm1kKSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSg0LCAyLCBkZm1kKSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSg0LCAzLCBkZm1kKSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fMih6LCBuLCBkZm1kKSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzJfSSh6LCBuLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDQsIDAsIGRmbWQpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDQsIDEsIGRmbWQpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDQsIDIsIGRmbWQpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDQsIDMsIGRmbWQpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8zKHosIG4sIGRmbWQpIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fM19JKHosIG4sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMCwgZGZtZCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMSwgZGZtZCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMiwgZGZtZCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMywgZGZtZCkpCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzFfSSh6LCBuLCBkLCBmLCBtLCBkdCkgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8xX0lJKHosIE5ETkJPT1NUX1BQX0FERF9EKGQsIG4sIGYpLCBtLCBkdCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fMl9JKHosIG4sIGQsIGYsIG0sIGR0KSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzJfSUkoeiwgTkROQk9PU1RfUFBfQUREX0QoZCwgbiwgZiksIG0sIGR0KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8zX0koeiwgbiwgZCwgZiwgbSwgZHQpIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fM19JSSh6LCBORE5CT09TVF9QUF9BRERfRChkLCBuLCBmKSwgbSwgZHQpCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzFfSUkoeiwgbiwgbSwgZHQpIG0oeiwgbiwgZHQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzJfSUkoeiwgbiwgbSwgZHQpIG0oeiwgbiwgZHQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzNfSUkoeiwgbiwgbSwgZHQpIG0oeiwgbiwgZHQpCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvY2F0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9jYXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTY4OWIxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9jYXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TRVFfQ0FUX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NFUV9DQVRfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2RlYy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvaWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2ZvbGRfbGVmdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvc2VxLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9zaXplLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VhdC5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX1NFUV9DQVQgKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9DQVQoc2VxKSBcCi0gICAgTkROQk9PU1RfUFBfSUYoIFwKLSAgICAgICAgTkROQk9PU1RfUFBfREVDKE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNlcSkpLCBcCi0gICAgICAgIE5ETkJPT1NUX1BQX1NFUV9DQVRfSSwgXAotICAgICAgICBORE5CT09TVF9QUF9TRVFfSEVBRCBcCi0gICAgKShzZXEpIFwKLSAgICAvKiovCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfQ0FUX0koc2VxKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUKE5ETkJPT1NUX1BQX1NFUV9DQVRfTywgTkROQk9PU1RfUFBfU0VRX0hFQUQoc2VxKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc2VxKSkKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9DQVRfTyhzLCBzdCwgZWxlbSkgTkROQk9PU1RfUFBfU0VRX0NBVF9PX0koc3QsIGVsZW0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfQ0FUX09fSShhLCBiKSBhICMjIGIKLSMKLSMgLyogTkROQk9PU1RfUFBfU0VRX0NBVF9TICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfQ0FUX1Mocywgc2VxKSBcCi0gICAgTkROQk9PU1RfUFBfSUYoIFwKLSAgICAgICAgTkROQk9PU1RfUFBfREVDKE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNlcSkpLCBcCi0gICAgICAgIE5ETkJPT1NUX1BQX1NFUV9DQVRfU19JX0EsIFwKLSAgICAgICAgTkROQk9PU1RfUFBfU0VRX0NBVF9TX0lfQiBcCi0gICAgKShzLCBzZXEpIFwKLSAgICAvKiovCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfQ0FUX1NfSV9BKHMsIHNlcSkgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8gIyMgcyhORE5CT09TVF9QUF9TRVFfQ0FUX08sIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNlcSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNlcSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfQ0FUX1NfSV9CKHMsIHNlcSkgTkROQk9PU1RfUFBfU0VRX0hFQUQoc2VxKQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2RldGFpbC9zcGxpdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZGV0YWlsL3NwbGl0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGU4MzNhZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZGV0YWlsL3NwbGl0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4NCArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NFUV9ERVRBSUxfU1BMSVRfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfU0VRX0RFVEFJTF9TUExJVF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9TRVFfU1BMSVQgKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVChuLCBzZXEpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF9EKG4sIHNlcSkKLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01XQ0MoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUX0Qobiwgc2VxKSAoTkROQk9PU1RfUFBfU0VRX1NQTElUXyAjIyBuIHNlcSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUX0Qobiwgc2VxKSAoTkROQk9PU1RfUFBfU0VRX1NQTElUXyAjIyBuICMjIHNlcSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xKHgpICh4KSwKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF81KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF81Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNyh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF84KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF84Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTAoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF85Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEyKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMyh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE1KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE4KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjAoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIxKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI0KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI3KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yOCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzMwKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8zMSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzMwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMzIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8zMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzMzKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8zNCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzMzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMzUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8zNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzM2KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8zNyh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzM2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMzgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8zNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzM5KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF80MCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzM5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNDEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF80MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzQyKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF80Myh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzQyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNDQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF80MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzQ1KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF80Nih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzQ1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNDcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF80NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzQ4KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF80OSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzQ4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNTAoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF80OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzUxKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF81Mih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzUxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNTMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF81MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzU0KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF81NSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzU0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNTYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF81NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzU3KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF81OCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzU3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNTkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF81OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzYwKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF82MSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzYwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNjIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF82MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzYzKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF82NCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzYzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNjUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF82NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzY2KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF82Nyh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzY2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNjgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF82NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzY5KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF83MCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzY5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNzEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF83MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzcyKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF83Myh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzcyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNzQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF83MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzc1KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF83Nih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzc1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNzcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF83NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzc4KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF83OSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzc4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfODAoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF83OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzgxKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfODAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF84Mih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzgxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfODMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF84MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzg0KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfODMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF84NSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzg0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfODYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF84NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzg3KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfODYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF84OCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzg3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfODkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF84OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzkwKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfODkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF85MSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzkwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfOTIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF85MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzkzKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfOTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF85NCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzkzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfOTUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF85NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzk2KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfOTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF85Nyh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzk2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfOTgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF85NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzk5KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfOTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMDAoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF85OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEwMSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEwMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEwMih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEwMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEwMyh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEwMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEwNCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEwMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEwNSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEwNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEwNih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEwNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEwNyh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEwNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEwOCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEwNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEwOSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEwOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzExMCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEwOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzExMSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzExMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzExMih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzExMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzExMyh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzExMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzExNCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzExMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzExNSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzExNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzExNih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzExNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzExNyh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzExNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzExOCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzExNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzExOSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzExOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEyMCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzExOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEyMSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEyMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEyMih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEyMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEyMyh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEyMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEyNCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEyMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEyNSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEyNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEyNih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEyNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEyNyh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEyNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEyOCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEyNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEyOSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEyOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEzMCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEyOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEzMSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEzMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEzMih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEzMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEzMyh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEzMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEzNCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEzMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEzNSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEzNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEzNih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEzNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEzNyh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEzNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEzOCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEzNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEzOSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEzOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE0MCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEzOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE0MSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE0MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE0Mih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE0MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE0Myh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE0MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE0NCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE0MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE0NSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE0NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE0Nih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE0NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE0Nyh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE0NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE0OCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE0NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE0OSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE0OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE1MCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE0OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE1MSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE1MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE1Mih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE1MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE1Myh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE1MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE1NCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE1MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE1NSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE1NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE1Nih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE1NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE1Nyh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE1NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE1OCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE1NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE1OSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE1OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE2MCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE1OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE2MSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE2MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE2Mih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE2MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE2Myh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE2MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE2NCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE2MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE2NSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE2NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE2Nih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE2NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE2Nyh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE2NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE2OCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE2NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE2OSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE2OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE3MCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE2OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE3MSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE3MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE3Mih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE3MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE3Myh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE3MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE3NCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE3MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE3NSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE3NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE3Nih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE3NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE3Nyh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE3NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE3OCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE3NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE3OSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE3OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE4MCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE3OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE4MSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE4MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE4Mih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE4MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE4Myh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE4MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE4NCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE4MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE4NSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE4NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE4Nih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE4NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE4Nyh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE4NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE4OCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE4NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE4OSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE4OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE5MCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE4OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE5MSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE5MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE5Mih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE5MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE5Myh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE5MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE5NCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE5MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE5NSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE5NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE5Nih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE5NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE5Nyh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE5NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE5OCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE5NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE5OSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE5OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIwMCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE5OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIwMSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIwMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIwMih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIwMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIwMyh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIwMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIwNCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIwMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIwNSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIwNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIwNih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIwNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIwNyh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIwNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIwOCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIwNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIwOSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIwOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIxMCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIwOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIxMSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIxMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIxMih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIxMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIxMyh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIxMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIxNCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIxMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIxNSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIxNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIxNih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIxNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIxNyh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIxNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIxOCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIxNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIxOSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIxOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIyMCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIxOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIyMSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIyMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIyMih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIyMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIyMyh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIyMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIyNCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIyMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIyNSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIyNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIyNih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIyNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIyNyh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIyNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIyOCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIyNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIyOSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIyOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIzMCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIyOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIzMSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIzMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIzMih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIzMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIzMyh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIzMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIzNCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIzMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIzNSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIzNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIzNih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIzNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIzNyh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIzNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIzOCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIzNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIzOSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIzOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI0MCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIzOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI0MSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI0MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI0Mih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI0MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI0Myh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI0MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI0NCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI0MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI0NSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI0NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI0Nih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI0NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI0Nyh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI0NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI0OCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI0NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI0OSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI0OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI1MCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI0OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI1MSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI1MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI1Mih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI1MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI1Myh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI1MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI1NCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI1MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI1NSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI1NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI1Nih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI1NQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2VsZW0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2VsZW0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YmUxNmNjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9lbGVtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwNCArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NFUV9FTEVNX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NFUV9FTEVNX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9lbXB0eS5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX1NFUV9FTEVNICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NV0NDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNKGksIHNlcSkgTkROQk9PU1RfUFBfU0VRX0VMRU1fSShpLCBzZXEpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNKGksIHNlcSkgTkROQk9PU1RfUFBfU0VRX0VMRU1fSSgoaSwgc2VxKSkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVNWQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV9JKGksIHNlcSkgTkROQk9PU1RfUFBfU0VRX0VMRU1fSUkoKE5ETkJPT1NUX1BQX1NFUV9FTEVNXyAjIyBpIHNlcSkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV9JSShyZXMpIE5ETkJPT1NUX1BQX1NFUV9FTEVNX0lWKE5ETkJPT1NUX1BQX1NFUV9FTEVNX0lJSSByZXMpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV9JSUkoeCwgXykgeCBORE5CT09TVF9QUF9FTVBUWSgpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV9JVih4KSB4Ci0jIGVsaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVdDQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV9JKHBhcikgTkROQk9PU1RfUFBfU0VRX0VMRU1fSUkgIyMgcGFyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV9JSShpLCBzZXEpIE5ETkJPT1NUX1BQX1NFUV9FTEVNX0lJSShORE5CT09TVF9QUF9TRVFfRUxFTV8gIyMgaSAjIyBzZXEpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV9JSUkoaW0pIE5ETkJPT1NUX1BQX1NFUV9FTEVNX0lWKGltKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fSVYoeCwgXykgeAotIyBlbHNlCi0jICAgIGlmIGRlZmluZWQoX19JQk1DX18pIHx8IGRlZmluZWQoX19JQk1DUFBfXykKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV9JKGksIHNlcSkgTkROQk9PU1RfUFBfU0VRX0VMRU1fSUkoTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX1NFUV9FTEVNXyAjIyBpLCBzZXEpKQotIyAgICBlbHNlCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fSShpLCBzZXEpIE5ETkJPT1NUX1BQX1NFUV9FTEVNX0lJKE5ETkJPT1NUX1BQX1NFUV9FTEVNXyAjIyBpIHNlcSkKLSMgICAgZW5kaWYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNX0lJKGltKSBORE5CT09TVF9QUF9TRVFfRUxFTV9JSUkoaW0pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV9JSUkoeCwgXykgeAotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMCh4KSB4LCBORE5CT09TVF9QUF9OSUwKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8zKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzQoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV80Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV82KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzcoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fOChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV83Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV85KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEwKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzExKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTMoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTYoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE3KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xOChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTkoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIwKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjIoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIzKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yNChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjUoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI2KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yNyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjgoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI5KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8zMChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMzEoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzMyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzMxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8zMyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8zMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMzQoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzM1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzM0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8zNihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8zNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMzcoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzM4KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzM3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8zOShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8zOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNDAoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzQxKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzQwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV80MihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV80MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNDMoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzQ0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzQzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV80NShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV80NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNDYoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzQ3KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzQ2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV80OChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV80NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNDkoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzUwKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzQ5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV81MShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV81MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNTIoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzUzKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzUyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV81NChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV81MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNTUoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzU2KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzU1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV81NyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV81NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNTgoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzU5KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzU4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV82MChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV81OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNjEoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzYyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzYxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV82MyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV82MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNjQoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzY1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzY0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV82NihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV82NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNjcoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzY4KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzY3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV82OShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV82OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNzAoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzcxKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzcwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV83MihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV83MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNzMoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzc0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzczCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV83NShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV83NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNzYoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzc3KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzc2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV83OChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV83NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNzkoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzgwKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzc5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV84MShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV84MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fODIoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fODEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzgzKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzgyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV84NChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV84MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fODUoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fODQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzg2KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzg1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV84NyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV84NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fODgoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fODcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzg5KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzg4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV85MChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV84OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fOTEoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fOTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzkyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzkxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV85MyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV85MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fOTQoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fOTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzk1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzk0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV85NihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV85NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fOTcoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fOTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzk4KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzk3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV85OShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV85OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTAwKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzk5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMDEoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMDIoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMDMoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTAyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMDQoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTAzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMDUoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTA0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMDYoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTA1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMDcoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTA2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMDgoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTA3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMDkoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTA4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMTAoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTA5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMTEoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTEwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMTIoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTExCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMTMoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTEyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMTQoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTEzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMTUoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTE0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMTYoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTE1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMTcoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTE2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMTgoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTE3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMTkoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTE4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMjAoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTE5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMjEoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTIwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMjIoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTIxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMjMoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTIyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMjQoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTIzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMjUoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTI0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMjYoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTI1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMjcoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTI2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMjgoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTI3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMjkoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTI4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMzAoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTI5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMzEoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTMwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMzIoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTMxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMzMoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTMyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMzQoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTMzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMzUoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTM0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMzYoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTM1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMzcoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTM2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMzgoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTM3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMzkoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTM4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNDAoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTM5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNDEoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTQwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNDIoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTQxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNDMoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTQyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNDQoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTQzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNDUoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTQ0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNDYoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTQ1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNDcoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTQ2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNDgoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTQ3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNDkoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTQ4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNTAoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTQ5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNTEoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTUwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNTIoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTUxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNTMoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTUyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNTQoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTUzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNTUoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTU0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNTYoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTU1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNTcoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTU2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNTgoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTU3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNTkoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTU4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNjAoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTU5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNjEoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTYwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNjIoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTYxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNjMoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTYyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNjQoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTYzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNjUoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTY0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNjYoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTY1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNjcoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTY2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNjgoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTY3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNjkoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTY4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNzAoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTY5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNzEoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTcwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNzIoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTcxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNzMoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTcyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNzQoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTczCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNzUoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTc0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNzYoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTc1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNzcoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTc2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNzgoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTc3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNzkoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTc4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xODAoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTc5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xODEoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTgwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xODIoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTgxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xODMoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTgyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xODQoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTgzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xODUoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTg0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xODYoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTg1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xODcoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTg2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xODgoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTg3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xODkoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTg4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xOTAoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTg5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xOTEoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTkwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xOTIoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTkxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xOTMoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTkyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xOTQoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTkzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xOTUoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTk0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xOTYoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTk1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xOTcoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTk2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xOTgoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTk3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xOTkoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTk4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMDAoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTk5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMDEoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMDIoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMDMoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjAyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMDQoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjAzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMDUoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjA0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMDYoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjA1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMDcoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjA2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMDgoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjA3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMDkoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjA4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMTAoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjA5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMTEoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjEwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMTIoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjExCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMTMoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjEyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMTQoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjEzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMTUoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjE0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMTYoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjE1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMTcoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjE2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMTgoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjE3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMTkoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjE4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMjAoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjE5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMjEoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjIwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMjIoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjIxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMjMoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjIyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMjQoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjIzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMjUoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjI0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMjYoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjI1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMjcoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjI2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMjgoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjI3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMjkoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjI4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMzAoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjI5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMzEoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjMwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMzIoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjMxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMzMoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjMyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMzQoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjMzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMzUoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjM0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMzYoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjM1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMzcoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjM2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMzgoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjM3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMzkoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjM4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yNDAoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjM5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yNDEoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjQwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yNDIoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjQxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yNDMoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjQyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yNDQoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjQzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yNDUoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjQ0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yNDYoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjQ1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yNDcoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjQ2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yNDgoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjQ3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yNDkoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjQ4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yNTAoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjQ5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yNTEoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjUwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yNTIoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjUxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yNTMoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjUyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yNTQoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjUzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yNTUoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjU0Ci0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZW51bS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZW51bS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1MjZhZjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2VudW0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjg4ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfU0VRX0VOVU1fSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfU0VRX0VOVU1fSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvc2l6ZS5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX1NFUV9FTlVNICovCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTShzZXEpIE5ETkJPT1NUX1BQX1NFUV9FTlVNX0koc2VxKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fSShzZXEpIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9TRVFfRU5VTV8sIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNlcSkpIHNlcQotIyBlbGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01XQ0MoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU0oc2VxKSBORE5CT09TVF9QUF9TRVFfRU5VTV9JKE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNlcSksIHNlcSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNX0koc2l6ZSwgc2VxKSBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfU0VRX0VOVU1fLCBzaXplKSBzZXEKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU0oc2VxKSBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfU0VRX0VOVU1fLCBORE5CT09TVF9QUF9TRVFfU0laRShzZXEpKSBzZXEKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEoeCkgeAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8zKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzQoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV80Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV82KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzcoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fOCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV83Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV85KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEwKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzExKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTMoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTYoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE3KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xOCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTkoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIwKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjIoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIzKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yNCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjUoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yNyh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjgoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI5KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8zMCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMzEoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzMyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzMxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8zMyh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8zMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMzQoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzM1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzM0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8zNih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8zNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMzcoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzM4KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzM3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8zOSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8zOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNDAoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzQxKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzQwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV80Mih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV80MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNDMoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzQ0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzQzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV80NSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV80NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNDYoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzQ3KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzQ2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV80OCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV80NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNDkoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzUwKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzQ5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV81MSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV81MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNTIoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzUzKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzUyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV81NCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV81MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNTUoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzU2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzU1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV81Nyh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV81NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNTgoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzU5KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzU4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV82MCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV81OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNjEoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzYyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzYxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV82Myh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV82MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNjQoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzY1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzY0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV82Nih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV82NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNjcoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzY4KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzY3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV82OSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV82OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNzAoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzcxKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzcwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV83Mih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV83MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNzMoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzc0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzczCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV83NSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV83NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNzYoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzc3KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzc2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV83OCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV83NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNzkoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzgwKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzc5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV84MSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV84MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fODIoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fODEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzgzKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzgyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV84NCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV84MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fODUoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fODQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzg2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzg1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV84Nyh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV84NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fODgoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fODcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzg5KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzg4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV85MCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV84OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fOTEoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fOTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzkyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzkxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV85Myh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV85MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fOTQoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fOTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzk1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzk0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV85Nih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV85NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fOTcoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fOTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzk4KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzk3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV85OSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV85OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTAwKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzk5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMDEoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMDIoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMDMoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTAyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMDQoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTAzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMDUoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTA0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMDYoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTA1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMDcoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTA2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMDgoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTA3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMDkoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTA4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMTAoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTA5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMTEoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTEwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMTIoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTExCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMTMoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTEyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMTQoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTEzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMTUoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTE0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMTYoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTE1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMTcoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTE2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMTgoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTE3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMTkoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTE4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMjAoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTE5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMjEoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTIwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMjIoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTIxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMjMoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTIyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMjQoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTIzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMjUoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTI0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMjYoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTI1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMjcoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTI2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMjgoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTI3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMjkoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTI4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMzAoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTI5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMzEoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTMwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMzIoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTMxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMzMoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTMyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMzQoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTMzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMzUoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTM0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMzYoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTM1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMzcoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTM2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMzgoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTM3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMzkoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTM4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNDAoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTM5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNDEoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTQwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNDIoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTQxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNDMoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTQyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNDQoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTQzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNDUoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTQ0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNDYoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTQ1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNDcoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTQ2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNDgoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTQ3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNDkoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTQ4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNTAoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTQ5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNTEoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTUwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNTIoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTUxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNTMoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTUyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNTQoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTUzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNTUoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTU0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNTYoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTU1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNTcoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTU2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNTgoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTU3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNTkoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTU4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNjAoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTU5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNjEoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTYwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNjIoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTYxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNjMoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTYyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNjQoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTYzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNjUoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTY0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNjYoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTY1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNjcoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTY2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNjgoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTY3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNjkoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTY4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNzAoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTY5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNzEoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTcwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNzIoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTcxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNzMoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTcyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNzQoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTczCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNzUoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTc0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNzYoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTc1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNzcoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTc2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNzgoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTc3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNzkoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTc4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xODAoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTc5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xODEoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTgwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xODIoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTgxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xODMoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTgyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xODQoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTgzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xODUoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTg0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xODYoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTg1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xODcoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTg2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xODgoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTg3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xODkoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTg4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xOTAoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTg5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xOTEoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTkwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xOTIoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTkxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xOTMoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTkyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xOTQoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTkzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xOTUoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTk0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xOTYoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTk1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xOTcoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTk2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xOTgoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTk3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xOTkoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTk4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMDAoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTk5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMDEoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMDIoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMDMoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjAyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMDQoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjAzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMDUoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjA0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMDYoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjA1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMDcoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjA2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMDgoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjA3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMDkoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjA4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMTAoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjA5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMTEoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjEwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMTIoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjExCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMTMoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjEyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMTQoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjEzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMTUoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjE0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMTYoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjE1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMTcoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjE2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMTgoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjE3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMTkoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjE4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMjAoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjE5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMjEoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjIwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMjIoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjIxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMjMoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjIyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMjQoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjIzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMjUoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjI0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMjYoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjI1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMjcoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjI2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMjgoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjI3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMjkoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjI4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMzAoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjI5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMzEoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjMwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMzIoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjMxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMzMoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjMyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMzQoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjMzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMzUoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjM0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMzYoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjM1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMzcoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjM2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMzgoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjM3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMzkoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjM4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yNDAoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjM5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yNDEoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjQwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yNDIoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjQxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yNDMoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjQyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yNDQoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjQzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yNDUoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjQ0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yNDYoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjQ1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yNDcoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjQ2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yNDgoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjQ3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yNDkoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjQ4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yNTAoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjQ5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yNTEoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjUwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yNTIoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjUxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yNTMoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjUyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yNTQoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjUzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yNTUoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjU0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yNTYoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjU1Ci0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZmlyc3Rfbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZmlyc3Rfbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkYjRkZTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2ZpcnN0X24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TRVFfRklSU1RfTl9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TRVFfRklSU1RfTl9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9pZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZGV0YWlsL3NwbGl0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VhdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfU0VRX0ZJUlNUX04gKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRklSU1RfTihuLCBzZXEpIE5ETkJPT1NUX1BQX0lGKG4sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyLCAwLCBORE5CT09TVF9QUF9TRVFfU1BMSVQobiwgc2VxIChuaWwpKSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZJUlNUX04obiwgc2VxKSBORE5CT09TVF9QUF9TRVFfRklSU1RfTl9JKG4sIHNlcSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GSVJTVF9OX0kobiwgc2VxKSBORE5CT09TVF9QUF9JRihuLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMiwgMCwgTkROQk9PU1RfUFBfU0VRX1NQTElUKG4sIHNlcSAobmlsKSkpCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZm9sZF9sZWZ0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9mb2xkX2xlZnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjMyOTM2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9mb2xkX2xlZnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA3MCArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NFUV9GT0xEX0xFRlRfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfU0VRX0ZPTERfTEVGVF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvZGVjLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2lmLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RlYnVnL2Vycm9yLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC9hdXRvX3JlYy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvc2VxLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9zaXplLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVCAqLwotIwotIyBpZiAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUKG9wLCBzdGF0ZSwgc2VxKSAuLi4KLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlQgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfLCBORE5CT09TVF9QUF9BVVRPX1JFQyhORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX1AsIDI1NikpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX1AobikgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfICMjIG4oTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9PLCBORE5CT09TVF9QUF9OSUwsIChuaWwpLCAxKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfTyhzLCBzdCwgXykgc3QKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjU3KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX0VSUk9SKDB4MDAwNSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0VSUk9SKDB4MDAwNSkKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTklMIDEKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzMob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzYob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzcob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzkob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjEob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjcob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI4KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yOShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzAob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzMxKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zMihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzMob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM0KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zNShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzYob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM3KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zOChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzkob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQwKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80MShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDIob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQzKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80NChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDUob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ2KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80NyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDgob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ5KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81MChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTEob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUyKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81MyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTQob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU1KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81NihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTcob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU4KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81OShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjAob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzYxKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82MihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjMob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY0KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82NShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjYob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY3KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82OChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjkob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzcwKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83MShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzIob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzczKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83NChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzUob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc2KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83NyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzgob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc5KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84MChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODEob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgyKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84MyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODQob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg1KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84NihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODcob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg4KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84OShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTAob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzkxKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85MihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTMob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk0KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85NShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTYob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk3KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85OChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTkob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwMChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAxKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDIob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwMyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA0KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDUob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwNihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA3KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDgob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwOShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTEwKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTEob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExMihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTEzKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTQob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExNShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE2KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTcob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExOChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE5KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjAob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyMShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIyKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjMob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyNChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI1KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjYob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyNyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI4KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjkob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzMChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMxKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzIob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzMyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM0KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzUob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzNihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM3KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzgob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzOShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQwKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDEob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0MihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQzKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDQob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0NShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ2KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDcob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0OChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ5KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTAob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1MShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUyKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTMob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1NChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU1KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTYob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1NyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU4KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTkob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2MChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYxKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjIob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2MyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY0KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjUob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2NihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY3KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjgob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2OShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTcwKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzEob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3MihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTczKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzQob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3NShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc2KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzcob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3OChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc5KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODAob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4MShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgyKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODMob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4NChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg1KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODYob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4NyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg4KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODkob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5MChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTkxKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTIob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5MyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk0KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTUob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5NihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk3KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTgob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5OShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAwKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDEob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwMihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAzKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDQob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwNShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA2KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDcob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwOChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA5KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTAob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxMShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjEyKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTMob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxNChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE1KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTYob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxNyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE4KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTkob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyMChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIxKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjIob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyMyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI0KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjUob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyNihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI3KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjgob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyOShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMwKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzEob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzMihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMzKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzQob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzNShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM2KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzcob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzOChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM5KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDAob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0MShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQyKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDMob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0NChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ1KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDYob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0NyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ4KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDkob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1MChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUxKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTIob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1MyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjU0KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTUob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1NihvcCwgc3QsIHNzLCBzeikgMAotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKG9wLCBzdCwgc3MsIHN6KSBzdAotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzMob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzMob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF80KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzYob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzYob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF83KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfOChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzkob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzkob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTEob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTcob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xOChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xOShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTkob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjEob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yNChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yNShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yNihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjYob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yNyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjcob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yOChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjgob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yOShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjkob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8zMChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzAob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8zMShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzEob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8zMihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzIob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8zMyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzMob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8zNChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzQob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8zNShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzUob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8zNihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzYob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8zNyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzcob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8zOChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzgob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8zOShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzkob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF80MChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDAob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF80MShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDEob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF80MihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDIob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF80MyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDMob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF80NChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDQob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF80NShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDUob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF80NihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDYob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF80NyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDcob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF80OChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDgob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF80OShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDkob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF81MChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTAob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF81MShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTEob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF81MihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTIob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF81MyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTMob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF81NChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTQob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF81NShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTUob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF81NihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTYob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF81NyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTcob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF81OChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTgob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF81OShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTkob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF82MChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjAob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF82MShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjEob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF82MihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjIob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF82MyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjMob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF82NChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjQob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF82NShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjUob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF82NihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjYob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF82NyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjcob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF82OChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjgob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF82OShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjkob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF83MChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzAob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF83MShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzEob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF83MihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzIob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF83MyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzMob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF83NChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzQob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF83NShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzUob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF83NihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzYob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF83NyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzcob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF83OChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzgob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF83OShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzkob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF84MChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODAob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF84MShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODEob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF84MihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODIob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF84MyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODMob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF84NChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODQob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF84NShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODUob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF84NihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODYob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF84NyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODcob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF84OChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODgob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF84OShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODkob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF85MChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTAob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF85MShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTEob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF85MihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTIob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF85MyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTMob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF85NChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTQob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF85NShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTUob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF85NihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTYob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF85NyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTcob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF85OChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTgob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF85OShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTkob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMDAob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwMChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEwMShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAxKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTAyKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDIob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMDMob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwMyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEwNChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA0KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTA1KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDUob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMDYob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwNihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEwNyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA3KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTA4KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDgob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMDkob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwOShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzExMChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTEwKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTExKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTEob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMTIob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExMihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzExMyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTEzKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTE0KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTQob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMTUob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExNShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzExNihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE2KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTE3KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTcob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMTgob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExOChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzExOShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE5KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTIwKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjAob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMjEob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyMShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEyMihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIyKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTIzKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjMob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMjQob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyNChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEyNShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI1KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTI2KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjYob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMjcob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyNyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEyOChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI4KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTI5KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjkob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMzAob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzMChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEzMShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMxKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTMyKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzIob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMzMob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzMyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEzNChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM0KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTM1KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzUob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMzYob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzNihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEzNyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM3KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTM4KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzgob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMzkob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzOShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE0MChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQwKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTQxKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDEob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNDIob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0MihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE0MyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQzKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTQ0KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDQob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNDUob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0NShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE0NihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ2KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTQ3KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDcob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNDgob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0OChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE0OShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ5KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTUwKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTAob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNTEob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1MShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE1MihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUyKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTUzKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTMob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNTQob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1NChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE1NShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU1KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTU2KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTYob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNTcob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1NyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE1OChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU4KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTU5KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTkob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNjAob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2MChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE2MShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYxKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTYyKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjIob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNjMob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2MyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE2NChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY0KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTY1KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjUob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNjYob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2NihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE2NyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY3KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTY4KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjgob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNjkob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2OShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE3MChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTcwKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTcxKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzEob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNzIob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3MihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE3MyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTczKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTc0KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzQob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNzUob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3NShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE3NihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc2KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTc3KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzcob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNzgob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3OChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE3OShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc5KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTgwKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODAob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xODEob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4MShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE4MihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgyKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTgzKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODMob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xODQob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4NChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE4NShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg1KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTg2KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODYob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xODcob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4NyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE4OChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg4KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTg5KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODkob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xOTAob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5MChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE5MShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTkxKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTkyKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTIob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xOTMob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5MyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE5NChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk0KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTk1KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTUob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xOTYob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5NihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE5NyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk3KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTk4KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTgob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xOTkob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5OShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIwMChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAwKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjAxKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDEob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMDIob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwMihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIwMyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAzKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjA0KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDQob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMDUob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwNShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIwNihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA2KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjA3KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDcob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMDgob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwOChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIwOShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA5KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjEwKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTAob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMTEob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxMShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIxMihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjEyKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjEzKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTMob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMTQob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxNChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIxNShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE1KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjE2KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTYob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMTcob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxNyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIxOChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE4KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjE5KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTkob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMjAob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyMChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIyMShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIxKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjIyKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjIob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMjMob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyMyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIyNChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI0KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjI1KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjUob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMjYob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyNihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIyNyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI3KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjI4KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjgob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMjkob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyOShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIzMChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMwKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjMxKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzEob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMzIob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzMihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIzMyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMzKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjM0KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzQob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMzUob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzNShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIzNihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM2KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjM3KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzcob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMzgob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzOChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIzOShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM5KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjQwKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDAob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yNDEob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0MShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzI0MihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQyKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjQzKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDMob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yNDQob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0NChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzI0NShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ1KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjQ2KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDYob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yNDcob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0NyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzI0OChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ4KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjQ5KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDkob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yNTAob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1MChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzI1MShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUxKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjUyKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTIob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yNTMob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1MyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzI1NChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjU0KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjU1KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTUob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yNTYob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1NihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19ETUMoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yOCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yOSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zMCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMzAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zMSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMzEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zMiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMzIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zMywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMzMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zNCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMzQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zNSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMzUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zNiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMzYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zNywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMzcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zOCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMzgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zOSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMzksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80MCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNDAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80MSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNDEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80MiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNDIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80MywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNDMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80NCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNDQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80NSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNDUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80NiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNDYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80NywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNDcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80OCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNDgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80OSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNDksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81MCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNTAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81MSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNTEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81MiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNTIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81MywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNTMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81NCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNTQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81NSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNTUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81NiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNTYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81NywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNTcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81OCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNTgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81OSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNTksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82MCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNjAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82MSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNjEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82MiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNjIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82MywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNjMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82NCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNjQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82NSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNjUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82NiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNjYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82NywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNjcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82OCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNjgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82OSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNjksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83MCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNzAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83MSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNzEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83MiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNzIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83MywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNzMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83NCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNzQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83NSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNzUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83NiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNzYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83NywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNzcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83OCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNzgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83OSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNzksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84MCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoODAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84MSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoODEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84MiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoODIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84MywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoODMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84NCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoODQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84NSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoODUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84NiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoODYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84NywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoODcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84OCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoODgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84OSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoODksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85MCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoOTAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85MSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoOTEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85MiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoOTIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85MywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoOTMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85NCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoOTQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85NSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoOTUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85NiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoOTYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85NywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoOTcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85OCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoOTgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85OSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoOTksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDEwMCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDEwMSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDEwMiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDEwMywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDEwNCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDEwNSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDEwNiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDEwNywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDEwOCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDEwOSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDExMCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDExMSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDExMiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDExMywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDExNCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDExNSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDExNiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDExNywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDExOCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDExOSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDEyMCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDEyMSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDEyMiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDEyMywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDEyNCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDEyNSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDEyNiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDEyNywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDEyOCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDEyOSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDEzMCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDEzMSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDEzMiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDEzMywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDEzNCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDEzNSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDEzNiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDEzNywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDEzOCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDEzOSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE0MCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE0MSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE0Miwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE0Mywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE0NCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE0NSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE0Niwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE0Nywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE0OCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE0OSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE1MCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE1MSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE1Miwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE1Mywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE1NCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE1NSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE1Niwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE1Nywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE1OCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE1OSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE2MCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE2MSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE2Miwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE2Mywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE2NCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE2NSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE2Niwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE2Nywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE2OCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE2OSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE3MCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE3MSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE3Miwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE3Mywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE3NCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE3NSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE3Niwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE3Nywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE3OCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE3OSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE4MCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE4MSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE4Miwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE4Mywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE4NCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE4NSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE4Niwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE4Nywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE4OCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE4OSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE5MCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE5MSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE5Miwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE5Mywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE5NCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE5NSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE5Niwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE5Nywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE5OCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE5OSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIwMCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIwMSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIwMiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIwMywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIwNCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIwNSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIwNiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIwNywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIwOCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIwOSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIxMCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIxMSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIxMiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIxMywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIxNCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIxNSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIxNiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIxNywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIxOCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIxOSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIyMCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIyMSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIyMiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIyMywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIyNCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIyNSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIyNiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIyNywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIyOCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIyOSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIzMCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIzMSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIzMiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIzMywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIzNCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIzNSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIzNiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIzNywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIzOCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIzOSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDI0MCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDI0MSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDI0Miwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDI0Mywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDI0NCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDI0NSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDI0Niwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDI0Nywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDI0OCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDI0OSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDI1MCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDI1MSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDI1Miwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDI1Mywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDI1NCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDI1NSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDI1Niwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDI1Nywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoOSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDI0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyNiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDI3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yOSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyOSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yOShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzMwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDMwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzMwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMzEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zMiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygzMiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zMihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzMzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDMzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzMzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMzQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zNSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygzNSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zNShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDM2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMzcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zOCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygzOCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zOChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDM5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNDAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80MSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg0MSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80MShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDQyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNDMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80NCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg0NCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80NChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDQ1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNDYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80NywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg0Nywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80NyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDQ4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNDksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81MCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg1MCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81MChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDUxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNTIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81MywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg1Mywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81MyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDU0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNTUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81NiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg1Niwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81NihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDU3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNTgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81OSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg1OSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81OShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzYwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDYwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzYwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNjEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82MiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg2Miwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82MihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzYzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDYzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzYzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNjQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82NSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg2NSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82NShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDY2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNjcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82OCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg2OCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82OChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDY5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNzAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83MSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg3MSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83MShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzcyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDcyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzcyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNzMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83NCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg3NCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83NChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDc1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNzYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83NywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg3Nywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83NyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDc4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNzksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84MCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg4MCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84MChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDgxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoODIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84MywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg4Mywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84MyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDg0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoODUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84NiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg4Niwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84NihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDg3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoODgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84OSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg4OSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84OShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzkwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDkwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzkwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoOTEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85MiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg5Miwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85MihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzkzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDkzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzkzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoOTQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85NSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg5NSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85NShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDk2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoOTcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85OCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg5OCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85OChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDk5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEwMCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTAxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwMShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwMiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMDIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEwMywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTA0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwNChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwNSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMDUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEwNiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTA3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwNyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwOCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMDgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEwOSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTEwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExMChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExMSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMTEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTExKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTEyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDExMiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTEzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExMyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExNCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMTQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDExNSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTE2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExNihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExNywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMTcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDExOCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTE5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExOShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyMCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMjAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEyMSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTIyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyMihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyMywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMjMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEyNCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTI1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyNShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyNiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMjYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEyNywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTI4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyOChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyOSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMjksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEzMCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTMxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzMShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzMiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMzIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEzMywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTM0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzNChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzNSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMzUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEzNiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTM3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzNyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzOCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMzgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEzOSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTQwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0MChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0MSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNDEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE0Miwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTQzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0MyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0NCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNDQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE0NSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTQ2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0NihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0NywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNDcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE0OCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTQ5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0OShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1MCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNTAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE1MSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTUyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1MihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1MywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNTMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE1NCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTU1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1NShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1NiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNTYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE1Nywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTU4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1OChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1OSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNTksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE2MCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTYxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2MShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2MiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNjIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE2Mywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTY0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2NChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2NSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNjUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE2Niwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTY3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2NyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2OCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNjgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE2OSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTcwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3MChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3MSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNzEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTcxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTcyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE3Miwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTczLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3MyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3NCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNzQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE3NSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTc2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3NihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3NywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNzcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE3OCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTc5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3OShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4MCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxODAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE4MSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTgyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4MihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4MywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxODMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE4NCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTg1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4NShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4NiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxODYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE4Nywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTg4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4OChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4OSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxODksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTkwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE5MCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTkxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5MShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5MiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxOTIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTkyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTkzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE5Mywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTk0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5NChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5NSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxOTUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE5Niwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTk3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5NyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5OCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxOTgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE5OSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjAwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwMChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwMSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMDEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIwMiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjAzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwMyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwNCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMDQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIwNSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjA2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwNihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwNywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMDcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIwOCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjA5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwOShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxMCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMTAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjEwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjExLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIxMSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjEyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxMihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxMywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMTMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjEzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIxNCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjE1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxNShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxNiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMTYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIxNywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjE4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxOChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxOSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMTksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIyMCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjIxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyMShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyMiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMjIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIyMywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjI0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyNChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyNSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMjUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIyNiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjI3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyNyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyOCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMjgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIyOSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjMwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzMChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzMSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMzEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIzMiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjMzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzMyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzNCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMzQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIzNSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjM2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzNihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzNywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMzcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIzOCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjM5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzOShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0MCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyNDAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDI0MSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjQyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0MihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0MywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyNDMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDI0NCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjQ1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0NShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0NiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyNDYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDI0Nywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjQ4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0OChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0OSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyNDksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDI1MCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjUxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1MShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1MiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyNTIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDI1Mywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjU0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1NChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1NSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyNTUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjU1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjU2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDI1Niwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjU3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2Zvcl9lYWNoLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9mb3JfZWFjaC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0ZGYwNjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2Zvcl9lYWNoLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfU0VRX0ZPUl9FQUNIX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NFUV9GT1JfRUFDSF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvZGVjLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9mb3IuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3NlcS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvc2l6ZS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL3JlbS5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSCAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSChtYWNybywgZGF0YSwgc2VxKSBORE5CT09TVF9QUF9GT1IoKG1hY3JvLCBkYXRhLCBzZXEgKG5pbCkpLCBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfUCwgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX08sIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9NKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0gobWFjcm8sIGRhdGEsIHNlcSkgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0QobWFjcm8sIGRhdGEsIHNlcSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9EKG1hY3JvLCBkYXRhLCBzZXEpIE5ETkJPT1NUX1BQX0ZPUigobWFjcm8sIGRhdGEsIHNlcSAobmlsKSksIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9QLCBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfTywgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX00pCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfUChyLCB4KSBORE5CT09TVF9QUF9ERUMoTkROQk9PU1RfUFBfU0VRX1NJWkUoTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAyLCB4KSkpCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX1NUUklDVCgpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfTyhyLCB4KSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfT19JIHgKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX08ociwgeCkgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX09fSShORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDAsIHgpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDEsIHgpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDIsIHgpKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX09fSShtYWNybywgZGF0YSwgc2VxKSAobWFjcm8sIGRhdGEsIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNlcSkpCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX1NUUklDVCgpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfTShyLCB4KSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfTV9JTShyLCBORE5CT09TVF9QUF9UVVBMRV9SRU1fMyB4KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX01fSU0ociwgaW0pIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9NX0kociwgaW0pCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9NKHIsIHgpIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9NX0kociwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAwLCB4KSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAxLCB4KSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAyLCB4KSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9NX0kociwgbWFjcm8sIGRhdGEsIHNlcSkgbWFjcm8ociwgZGF0YSwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc2VxKSkKLSMKLSMgLyogTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX1IgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfUihyLCBtYWNybywgZGF0YSwgc2VxKSBORE5CT09TVF9QUF9GT1JfICMjIHIoKG1hY3JvLCBkYXRhLCBzZXEgKG5pbCkpLCBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfUCwgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX08sIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9NKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfUihyLCBtYWNybywgZGF0YSwgc2VxKSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfUl9JKHIsIG1hY3JvLCBkYXRhLCBzZXEpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfUl9JKHIsIG1hY3JvLCBkYXRhLCBzZXEpIE5ETkJPT1NUX1BQX0ZPUl8gIyMgcigobWFjcm8sIGRhdGEsIHNlcSAobmlsKSksIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9QLCBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfTywgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX00pCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZm9yX2VhY2hfaS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZm9yX2VhY2hfaS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjMWI4MTIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2Zvcl9lYWNoX2kuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TRVFfRk9SX0VBQ0hfSV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TRVFfRk9SX0VBQ0hfSV9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvZGVjLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvaW5jLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9mb3IuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3NlcS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvc2l6ZS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL3JlbS5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0kobWFjcm8sIGRhdGEsIHNlcSkgTkROQk9PU1RfUFBfRk9SKChtYWNybywgZGF0YSwgc2VxIChuaWwpLCAwKSwgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfUCwgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfTywgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfTSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0kobWFjcm8sIGRhdGEsIHNlcSkgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfSShtYWNybywgZGF0YSwgc2VxKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfSShtYWNybywgZGF0YSwgc2VxKSBORE5CT09TVF9QUF9GT1IoKG1hY3JvLCBkYXRhLCBzZXEgKG5pbCksIDApLCBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSV9QLCBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSV9PLCBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSV9NKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfUChyLCB4KSBORE5CT09TVF9QUF9ERUMoTkROQk9PU1RfUFBfU0VRX1NJWkUoTkROQk9PU1RfUFBfVFVQTEVfRUxFTSg0LCAyLCB4KSkpCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX1NUUklDVCgpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSV9PKHIsIHgpIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JX09fSSB4Ci0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JX08ociwgeCkgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfT19JKE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMCwgeCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMSwgeCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMiwgeCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMywgeCkpCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSV9PX0kobWFjcm8sIGRhdGEsIHNlcSwgaSkgKG1hY3JvLCBkYXRhLCBORE5CT09TVF9QUF9TRVFfVEFJTChzZXEpLCBORE5CT09TVF9QUF9JTkMoaSkpCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX1NUUklDVCgpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSV9NKHIsIHgpIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JX01fSU0ociwgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzQgeCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JX01fSU0ociwgaW0pIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JX01fSShyLCBpbSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfTShyLCB4KSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSV9NX0kociwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSg0LCAwLCB4KSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSg0LCAxLCB4KSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSg0LCAyLCB4KSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSg0LCAzLCB4KSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JX01fSShyLCBtYWNybywgZGF0YSwgc2VxLCBpKSBtYWNybyhyLCBkYXRhLCBpLCBORE5CT09TVF9QUF9TRVFfSEVBRChzZXEpKQotIwotIyAvKiBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSV9SICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfUihyLCBtYWNybywgZGF0YSwgc2VxKSBORE5CT09TVF9QUF9GT1JfICMjIHIoKG1hY3JvLCBkYXRhLCBzZXEgKG5pbCksIDApLCBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSV9QLCBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSV9PLCBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSV9NKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSV9SKHIsIG1hY3JvLCBkYXRhLCBzZXEpIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JX1JfSShyLCBtYWNybywgZGF0YSwgc2VxKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfUl9JKHIsIG1hY3JvLCBkYXRhLCBzZXEpIE5ETkJPT1NUX1BQX0ZPUl8gIyMgcigobWFjcm8sIGRhdGEsIHNlcSAobmlsKSwgMCksIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JX1AsIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JX08sIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JX00pCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvcmVzdF9uLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9yZXN0X24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MzUwZWQzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9yZXN0X24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TRVFfUkVTVF9OX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NFUV9SRVNUX05fSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2luYy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvZW1wdHkuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2RldGFpbC9zcGxpdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfU0VRX1JFU1RfTiAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9SRVNUX04obiwgc2VxKSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDEsIE5ETkJPT1NUX1BQX1NFUV9TUExJVChORE5CT09TVF9QUF9JTkMobiksIChuaWwpIHNlcSBORE5CT09TVF9QUF9FTVBUWSkpKCkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1JFU1RfTihuLCBzZXEpIE5ETkJPT1NUX1BQX1NFUV9SRVNUX05fSShuLCBzZXEpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfUkVTVF9OX0kobiwgc2VxKSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDEsIE5ETkJPT1NUX1BQX1NFUV9TUExJVChORE5CT09TVF9QUF9JTkMobiksIChuaWwpIHNlcSBORE5CT09TVF9QUF9FTVBUWSkpKCkKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9zZXEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3NlcS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjMDZmZTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3NlcS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NFUV9TRVFfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfU0VRX1NFUV9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2VsZW0uaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9TRVFfSEVBRCAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0hFQUQoc2VxKSBORE5CT09TVF9QUF9TRVFfRUxFTSgwLCBzZXEpCi0jCi0jIC8qIE5ETkJPT1NUX1BQX1NFUV9UQUlMICovCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01XQ0MoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1RBSUwoc2VxKSBORE5CT09TVF9QUF9TRVFfVEFJTF8xKChzZXEpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1RBSUxfMShwYXIpIE5ETkJPT1NUX1BQX1NFUV9UQUlMXzIgIyMgcGFyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfVEFJTF8yKHNlcSkgTkROQk9PU1RfUFBfU0VRX1RBSUxfSSAjIyBzZXEKLSMgZWxpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NU1ZDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNlcSkgTkROQk9PU1RfUFBfU0VRX1RBSUxfSUQoTkROQk9PU1RfUFBfU0VRX1RBSUxfSSBzZXEpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfVEFJTF9JRChpZCkgaWQKLSMgZWxpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1RBSUwoc2VxKSBORE5CT09TVF9QUF9TRVFfVEFJTF9EKHNlcSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9UQUlMX0Qoc2VxKSBORE5CT09TVF9QUF9TRVFfVEFJTF9JIHNlcQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfVEFJTChzZXEpIE5ETkJPT1NUX1BQX1NFUV9UQUlMX0kgc2VxCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfVEFJTF9JKHgpCi0jCi0jIC8qIE5ETkJPT1NUX1BQX1NFUV9OSUwgKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9OSUwoeCkgKHgpCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvc2l6ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvc2l6ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4MzRjMGQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3NpemUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTQ3ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfU0VRX1NJWkVfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfU0VRX1NJWkVfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jCi0jIGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01XQ0MoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkUoc2VxKSBORE5CT09TVF9QUF9TRVFfU0laRV9JKChzZXEpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfSShwYXIpIE5ETkJPT1NUX1BQX1NFUV9TSVpFX0lJICMjIHBhcgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfSUkoc2VxKSBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfU0VRX1NJWkVfLCBORE5CT09TVF9QUF9TRVFfU0laRV8wICMjIHNlcSkKLSMgZWxpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKSB8fCBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NU1ZDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNlcSkgTkROQk9PU1RfUFBfU0VRX1NJWkVfSShzZXEpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9JKHNlcSkgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX1NFUV9TSVpFXywgTkROQk9PU1RfUFBfU0VRX1NJWkVfMCBzZXEpCi0jIGVsaWYgZGVmaW5lZChfX0lCTUNfXykgfHwgZGVmaW5lZChfX0lCTUNQUF9fKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkUoc2VxKSBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfU0VRX1NJWkVfLCBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfU0VRX1NJWkVfMCwgc2VxKSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkUoc2VxKSBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfU0VRX1NJWkVfLCBORE5CT09TVF9QUF9TRVFfU0laRV8wIHNlcSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzAoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzMoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNChfKSBORE5CT09TVF9QUF9TRVFfU0laRV81Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV81KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzYoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV84Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV84KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzkoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzExCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTIoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEzKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTUoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTgoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE5KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjEoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yNihfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjcoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI4KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yOShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8zMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMzAoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzMxKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzMyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8zMihfKSBORE5CT09TVF9QUF9TRVFfU0laRV8zMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMzMoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzM0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzM1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8zNShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8zNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMzYoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzM3KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzM4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8zOChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8zOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMzkoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzQwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzQxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV80MShfKSBORE5CT09TVF9QUF9TRVFfU0laRV80MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNDIoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzQzKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzQ0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV80NChfKSBORE5CT09TVF9QUF9TRVFfU0laRV80NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNDUoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzQ2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzQ3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV80NyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV80OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNDgoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzQ5KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzUwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV81MChfKSBORE5CT09TVF9QUF9TRVFfU0laRV81MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNTEoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzUyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzUzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV81MyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV81NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNTQoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzU1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzU2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV81NihfKSBORE5CT09TVF9QUF9TRVFfU0laRV81NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNTcoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzU4KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzU5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV81OShfKSBORE5CT09TVF9QUF9TRVFfU0laRV82MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNjAoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzYxKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzYyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV82MihfKSBORE5CT09TVF9QUF9TRVFfU0laRV82MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNjMoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzY0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzY1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV82NShfKSBORE5CT09TVF9QUF9TRVFfU0laRV82NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNjYoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzY3KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzY4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV82OChfKSBORE5CT09TVF9QUF9TRVFfU0laRV82OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNjkoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzcwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzcxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV83MShfKSBORE5CT09TVF9QUF9TRVFfU0laRV83MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNzIoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzczKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzc0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV83NChfKSBORE5CT09TVF9QUF9TRVFfU0laRV83NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNzUoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzc2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzc3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV83NyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV83OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNzgoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzc5KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzgwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV84MChfKSBORE5CT09TVF9QUF9TRVFfU0laRV84MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfODEoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfODIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzgyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzgzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV84MyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV84NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfODQoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfODUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzg1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzg2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV84NihfKSBORE5CT09TVF9QUF9TRVFfU0laRV84NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfODcoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfODgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzg4KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzg5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV84OShfKSBORE5CT09TVF9QUF9TRVFfU0laRV85MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfOTAoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfOTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzkxKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzkyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV85MihfKSBORE5CT09TVF9QUF9TRVFfU0laRV85MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfOTMoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfOTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzk0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzk1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV85NShfKSBORE5CT09TVF9QUF9TRVFfU0laRV85NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfOTYoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfOTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzk3KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzk4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV85OChfKSBORE5CT09TVF9QUF9TRVFfU0laRV85OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfOTkoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMDAoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMDEoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTAyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMDIoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTAzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMDMoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTA0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMDQoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTA1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMDUoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTA2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMDYoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTA3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMDcoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTA4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMDgoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTA5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMDkoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTEwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMTAoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTExCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMTEoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTEyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMTIoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTEzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMTMoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTE0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMTQoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTE1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMTUoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTE2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMTYoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTE3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMTcoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTE4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMTgoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTE5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMTkoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTIwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMjAoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTIxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMjEoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTIyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMjIoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTIzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMjMoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTI0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMjQoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTI1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMjUoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTI2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMjYoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTI3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMjcoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTI4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMjgoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTI5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMjkoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTMwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMzAoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTMxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMzEoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTMyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMzIoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTMzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMzMoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTM0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMzQoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTM1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMzUoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTM2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMzYoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTM3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMzcoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTM4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMzgoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTM5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMzkoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNDAoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNDEoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNDIoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNDMoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQ0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNDQoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQ1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNDUoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQ2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNDYoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQ3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNDcoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQ4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNDgoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQ5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNDkoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTUwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNTAoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTUxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNTEoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTUyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNTIoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTUzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNTMoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTU0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNTQoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTU1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNTUoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTU2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNTYoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTU3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNTcoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTU4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNTgoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTU5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNTkoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTYwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNjAoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTYxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNjEoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTYyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNjIoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTYzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNjMoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTY0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNjQoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTY1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNjUoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTY2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNjYoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTY3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNjcoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTY4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNjgoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTY5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNjkoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTcwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNzAoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTcxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNzEoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTcyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNzIoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTczCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNzMoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTc0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNzQoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTc1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNzUoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTc2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNzYoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTc3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNzcoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTc4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNzgoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTc5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNzkoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTgwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xODAoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTgxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xODEoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTgyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xODIoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTgzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xODMoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTg0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xODQoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTg1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xODUoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTg2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xODYoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTg3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xODcoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTg4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xODgoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTg5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xODkoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTkwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xOTAoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTkxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xOTEoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTkyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xOTIoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTkzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xOTMoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTk0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xOTQoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTk1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xOTUoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTk2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xOTYoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTk3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xOTcoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTk4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xOTgoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTk5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xOTkoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMDAoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMDEoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjAyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMDIoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjAzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMDMoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjA0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMDQoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjA1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMDUoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjA2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMDYoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjA3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMDcoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjA4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMDgoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjA5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMDkoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjEwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMTAoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjExCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMTEoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjEyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMTIoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjEzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMTMoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjE0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMTQoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjE1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMTUoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjE2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMTYoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjE3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMTcoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjE4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMTgoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjE5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMTkoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjIwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMjAoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjIxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMjEoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjIyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMjIoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjIzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMjMoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjI0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMjQoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjI1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMjUoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjI2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMjYoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjI3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMjcoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjI4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMjgoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjI5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMjkoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjMwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMzAoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjMxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMzEoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjMyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMzIoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjMzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMzMoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjM0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMzQoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjM1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMzUoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjM2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMzYoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjM3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMzcoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjM4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMzgoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjM5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMzkoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yNDAoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yNDEoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yNDIoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yNDMoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQ0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yNDQoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQ1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yNDUoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQ2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yNDYoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQ3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yNDcoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQ4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yNDgoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQ5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yNDkoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjUwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yNTAoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjUxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yNTEoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjUyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yNTIoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjUzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yNTMoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjU0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yNTQoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjU1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yNTUoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjU2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yNTYoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjU3Ci0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8wIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMiAyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8zIDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzQgNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNSA1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV82IDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzcgNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfOCA4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV85IDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzEwIDEwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMSAxMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTIgMTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzEzIDEzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNCAxNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTUgMTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE2IDE2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNyAxNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTggMTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE5IDE5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMCAyMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjEgMjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIyIDIyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMyAyMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQgMjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzI1IDI1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yNiAyNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjcgMjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzI4IDI4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yOSAyOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMzAgMzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzMxIDMxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8zMiAzMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMzMgMzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzM0IDM0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8zNSAzNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMzYgMzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzM3IDM3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8zOCAzOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMzkgMzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzQwIDQwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV80MSA0MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNDIgNDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzQzIDQzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV80NCA0NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNDUgNDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzQ2IDQ2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV80NyA0NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNDggNDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzQ5IDQ5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV81MCA1MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNTEgNTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzUyIDUyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV81MyA1MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNTQgNTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzU1IDU1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV81NiA1NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNTcgNTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzU4IDU4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV81OSA1OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNjAgNjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzYxIDYxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV82MiA2MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNjMgNjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzY0IDY0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV82NSA2NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNjYgNjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzY3IDY3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV82OCA2OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNjkgNjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzcwIDcwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV83MSA3MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNzIgNzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzczIDczCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV83NCA3NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNzUgNzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzc2IDc2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV83NyA3NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNzggNzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzc5IDc5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV84MCA4MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfODEgODEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzgyIDgyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV84MyA4MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfODQgODQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzg1IDg1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV84NiA4NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfODcgODcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzg4IDg4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV84OSA4OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfOTAgOTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzkxIDkxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV85MiA5MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfOTMgOTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzk0IDk0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV85NSA5NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfOTYgOTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzk3IDk3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV85OCA5OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfOTkgOTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzEwMCAxMDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzEwMSAxMDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzEwMiAxMDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzEwMyAxMDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzEwNCAxMDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzEwNSAxMDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzEwNiAxMDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzEwNyAxMDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzEwOCAxMDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzEwOSAxMDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzExMCAxMTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzExMSAxMTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzExMiAxMTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzExMyAxMTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzExNCAxMTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzExNSAxMTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzExNiAxMTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzExNyAxMTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzExOCAxMTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzExOSAxMTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzEyMCAxMjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzEyMSAxMjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzEyMiAxMjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzEyMyAxMjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzEyNCAxMjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzEyNSAxMjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzEyNiAxMjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzEyNyAxMjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzEyOCAxMjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzEyOSAxMjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzEzMCAxMzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzEzMSAxMzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzEzMiAxMzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzEzMyAxMzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzEzNCAxMzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzEzNSAxMzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzEzNiAxMzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzEzNyAxMzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzEzOCAxMzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzEzOSAxMzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE0MCAxNDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE0MSAxNDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE0MiAxNDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE0MyAxNDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE0NCAxNDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE0NSAxNDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE0NiAxNDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE0NyAxNDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE0OCAxNDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE0OSAxNDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE1MCAxNTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE1MSAxNTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE1MiAxNTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE1MyAxNTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE1NCAxNTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE1NSAxNTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE1NiAxNTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE1NyAxNTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE1OCAxNTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE1OSAxNTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE2MCAxNjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE2MSAxNjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE2MiAxNjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE2MyAxNjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE2NCAxNjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE2NSAxNjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE2NiAxNjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE2NyAxNjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE2OCAxNjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE2OSAxNjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE3MCAxNzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE3MSAxNzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE3MiAxNzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE3MyAxNzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE3NCAxNzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE3NSAxNzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE3NiAxNzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE3NyAxNzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE3OCAxNzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE3OSAxNzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE4MCAxODAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE4MSAxODEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE4MiAxODIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE4MyAxODMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE4NCAxODQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE4NSAxODUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE4NiAxODYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE4NyAxODcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE4OCAxODgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE4OSAxODkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE5MCAxOTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE5MSAxOTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE5MiAxOTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE5MyAxOTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE5NCAxOTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE5NSAxOTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE5NiAxOTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE5NyAxOTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE5OCAxOTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE5OSAxOTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIwMCAyMDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIwMSAyMDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIwMiAyMDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIwMyAyMDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIwNCAyMDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIwNSAyMDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIwNiAyMDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIwNyAyMDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIwOCAyMDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIwOSAyMDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIxMCAyMTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIxMSAyMTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIxMiAyMTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIxMyAyMTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIxNCAyMTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIxNSAyMTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIxNiAyMTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIxNyAyMTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIxOCAyMTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIxOSAyMTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIyMCAyMjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIyMSAyMjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIyMiAyMjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIyMyAyMjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIyNCAyMjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIyNSAyMjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIyNiAyMjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIyNyAyMjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIyOCAyMjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIyOSAyMjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIzMCAyMzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIzMSAyMzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIzMiAyMzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIzMyAyMzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIzNCAyMzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIzNSAyMzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIzNiAyMzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIzNyAyMzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIzOCAyMzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIzOSAyMzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzI0MCAyNDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzI0MSAyNDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzI0MiAyNDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzI0MyAyNDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzI0NCAyNDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzI0NSAyNDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzI0NiAyNDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzI0NyAyNDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzI0OCAyNDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzI0OSAyNDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzI1MCAyNTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzI1MSAyNTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzI1MiAyNTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzI1MyAyNTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzI1NCAyNTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzI1NSAyNTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzI1NiAyNTYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9zdWJzZXEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3N1YnNlcS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExNGVlNjYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3N1YnNlcS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NFUV9TVUJTRVFfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfU0VRX1NVQlNFUV9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2ZpcnN0X24uaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3Jlc3Rfbi5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX1NFUV9TVUJTRVEgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1VCU0VRKHNlcSwgaSwgbGVuKSBORE5CT09TVF9QUF9TRVFfRklSU1RfTihsZW4sIE5ETkJPT1NUX1BQX1NFUV9SRVNUX04oaSwgc2VxKSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NVQlNFUShzZXEsIGksIGxlbikgTkROQk9PU1RfUFBfU0VRX1NVQlNFUV9JKHNlcSwgaSwgbGVuKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NVQlNFUV9JKHNlcSwgaSwgbGVuKSBORE5CT09TVF9QUF9TRVFfRklSU1RfTihsZW4sIE5ETkJPT1NUX1BQX1NFUV9SRVNUX04oaSwgc2VxKSkKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS90cmFuc2Zvcm0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3RyYW5zZm9ybS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwNGViNTIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3RyYW5zZm9ybS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NFUV9UUkFOU0ZPUk1fSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfU0VRX1RSQU5TRk9STV9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2ZvbGRfbGVmdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvc2VxLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VsZW0uaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvcmVtLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfU0VRX1RSQU5TRk9STSAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9UUkFOU0ZPUk0ob3AsIGRhdGEsIHNlcSkgTkROQk9PU1RfUFBfU0VRX1RBSUwoTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUKE5ETkJPT1NUX1BQX1NFUV9UUkFOU0ZPUk1fTywgKG9wLCBkYXRhLCAobmlsKSksIHNlcSkpKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfVFJBTlNGT1JNKG9wLCBkYXRhLCBzZXEpIE5ETkJPT1NUX1BQX1NFUV9UUkFOU0ZPUk1fSShvcCwgZGF0YSwgc2VxKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1RSQU5TRk9STV9JKG9wLCBkYXRhLCBzZXEpIE5ETkJPT1NUX1BQX1NFUV9UQUlMKE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVChORE5CT09TVF9QUF9TRVFfVFJBTlNGT1JNX08sIChvcCwgZGF0YSwgKG5pbCkpLCBzZXEpKSkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfU1RSSUNUKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9UUkFOU0ZPUk1fTyhzLCBzdGF0ZSwgZWxlbSkgTkROQk9PU1RfUFBfU0VRX1RSQU5TRk9STV9PX0lNKHMsIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8zIHN0YXRlLCBlbGVtKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1RSQU5TRk9STV9PX0lNKHMsIGltLCBlbGVtKSBORE5CT09TVF9QUF9TRVFfVFJBTlNGT1JNX09fSShzLCBpbSwgZWxlbSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1RSQU5TRk9STV9PKHMsIHN0YXRlLCBlbGVtKSBORE5CT09TVF9QUF9TRVFfVFJBTlNGT1JNX09fSShzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDAsIHN0YXRlKSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAxLCBzdGF0ZSksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMiwgc3RhdGUpLCBlbGVtKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1RSQU5TRk9STV9PX0kocywgb3AsIGRhdGEsIHJlcywgZWxlbSkgKG9wLCBkYXRhLCByZXMgKG9wKHMsIGRhdGEsIGVsZW0pKSkKLSMKLSMgLyogTkROQk9PU1RfUFBfU0VRX1RSQU5TRk9STV9TICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1RSQU5TRk9STV9TKHMsIG9wLCBkYXRhLCBzZXEpIE5ETkJPT1NUX1BQX1NFUV9UQUlMKE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8gIyMgcyhORE5CT09TVF9QUF9TRVFfVFJBTlNGT1JNX08sIChvcCwgZGF0YSwgKG5pbCkpLCBzZXEpKSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1RSQU5TRk9STV9TKHMsIG9wLCBkYXRhLCBzZXEpIE5ETkJPT1NUX1BQX1NFUV9UUkFOU0ZPUk1fU19JKHMsIG9wLCBkYXRhLCBzZXEpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfVFJBTlNGT1JNX1NfSShzLCBvcCwgZGF0YSwgc2VxKSBORE5CT09TVF9QUF9TRVFfVEFJTChORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfICMjIHMoTkROQk9PU1RfUFBfU0VRX1RSQU5TRk9STV9PLCAob3AsIGRhdGEsIChuaWwpKSwgc2VxKSkpCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9jb3VudGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL2NvdW50ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MjhlNDc4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL2NvdW50ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjY5ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSAgICAgICoKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0ICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBTFVFIE5ETkJPT1NUX1BQX0NPVU5URVIgKyAxCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zaGFyZWQuaHBwPgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9DT1VOVEVSCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMQotIyB1bmRlZiBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzIKLSMgdW5kZWYgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8zCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNAotIyB1bmRlZiBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzUKLSMgdW5kZWYgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF82Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNwotIyB1bmRlZiBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzgKLSMgdW5kZWYgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF85Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMTAKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMTAgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEwIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xMCAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMTAgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEwIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xMCA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMTAgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEwIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xMCA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMTAgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzkgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfOSAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF85IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzkgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfOSA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF85IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzkgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfOSA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF85IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzkgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzggMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfOCAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF84IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzggMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfOCA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF84IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzggNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfOCA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF84IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzggOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzcgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNyAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF83IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzcgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNyA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF83IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzcgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNyA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF83IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzcgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzYgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNiAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF82IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzYgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNiA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF82IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzYgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNiA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF82IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzYgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzUgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNSAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF81IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzUgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNSA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF81IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzUgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNSA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF81IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzUgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzQgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNCAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF80IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzQgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNCA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF80IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzQgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNCA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF80IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzQgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzMgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMyAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8zIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzMgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMyA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8zIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzMgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMyA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8zIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzMgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzIgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMiAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8yIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzIgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMiA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8yIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzIgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMiA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8yIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzIgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMSAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMSA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMSA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMTAoTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xMCwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF85LCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzgsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNywgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF82LCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzUsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNCwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8zLCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzIsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVIgTkROQk9PU1RfUFBfU0xPVF9DQ185KE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfOSwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF84LCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzcsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNiwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF81LCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzQsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMywgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8yLCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF84Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSIE5ETkJPT1NUX1BQX1NMT1RfQ0NfOChORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzgsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNywgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF82LCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzUsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNCwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8zLCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzIsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVIgTkROQk9PU1RfUFBfU0xPVF9DQ183KE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNywgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF82LCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzUsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNCwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8zLCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzIsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVIgTkROQk9PU1RfUFBfU0xPVF9DQ182KE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNiwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF81LCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzQsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMywgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8yLCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF81Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNShORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzUsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNCwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8zLCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzIsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVIgTkROQk9PU1RfUFBfU0xPVF9DQ180KE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNCwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8zLCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzIsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVIgTkROQk9PU1RfUFBfU0xPVF9DQ18zKE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMywgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8yLCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8yCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMihORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzIsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUiBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL2RlZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9kZWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNTg0OTcxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL2RlZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NMT1RfREVUQUlMX0RFRl9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TTE9UX0RFVEFJTF9ERUZfSFBQCi0jCi0jIC8qIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUX3ggKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzEwKHgpICh4KSAlIDEwMDAwMDAwMDBVTAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfOSh4KSBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8xMCh4KSAlIDEwMDAwMDAwMFVMCi0jIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX09GRlNFVF84KHgpIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzkoeCkgJSAxMDAwMDAwMFVMCi0jIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX09GRlNFVF83KHgpIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzgoeCkgJSAxMDAwMDAwVUwKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzYoeCkgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNyh4KSAlIDEwMDAwMFVMCi0jIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX09GRlNFVF81KHgpIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzYoeCkgJSAxMDAwMFVMCi0jIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX09GRlNFVF80KHgpIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzUoeCkgJSAxMDAwVUwKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzMoeCkgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNCh4KSAlIDEwMFVMCi0jIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8yKHgpIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzMoeCkgJSAxMFVMCi0jCi0jIC8qIE5ETkJPT1NUX1BQX1NMT1RfQ0NfeCAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9DQ18yKGEsIGIpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMl9EKGEsIGIpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX0NDXzMoYSwgYiwgYykgTkROQk9PU1RfUFBfU0xPVF9DQ18zX0QoYSwgYiwgYykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNChhLCBiLCBjLCBkKSBORE5CT09TVF9QUF9TTE9UX0NDXzRfRChhLCBiLCBjLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9DQ181KGEsIGIsIGMsIGQsIGUpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNV9EKGEsIGIsIGMsIGQsIGUpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX0NDXzYoYSwgYiwgYywgZCwgZSwgZikgTkROQk9PU1RfUFBfU0xPVF9DQ182X0QoYSwgYiwgYywgZCwgZSwgZikKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNyhhLCBiLCBjLCBkLCBlLCBmLCBnKSBORE5CT09TVF9QUF9TTE9UX0NDXzdfRChhLCBiLCBjLCBkLCBlLCBmLCBnKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9DQ184KGEsIGIsIGMsIGQsIGUsIGYsIGcsIGgpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfOF9EKGEsIGIsIGMsIGQsIGUsIGYsIGcsIGgpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX0NDXzkoYSwgYiwgYywgZCwgZSwgZiwgZywgaCwgaSkgTkROQk9PU1RfUFBfU0xPVF9DQ185X0QoYSwgYiwgYywgZCwgZSwgZiwgZywgaCwgaSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMTAoYSwgYiwgYywgZCwgZSwgZiwgZywgaCwgaSwgaikgTkROQk9PU1RfUFBfU0xPVF9DQ18xMF9EKGEsIGIsIGMsIGQsIGUsIGYsIGcsIGgsIGksIGopCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX0NDXzJfRChhLCBiKSBhICMjIGIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfQ0NfM19EKGEsIGIsIGMpIGEgIyMgYiAjIyBjCi0jIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX0NDXzRfRChhLCBiLCBjLCBkKSBhICMjIGIgIyMgYyAjIyBkCi0jIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX0NDXzVfRChhLCBiLCBjLCBkLCBlKSBhICMjIGIgIyMgYyAjIyBkICMjIGUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNl9EKGEsIGIsIGMsIGQsIGUsIGYpIGEgIyMgYiAjIyBjICMjIGQgIyMgZSAjIyBmCi0jIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX0NDXzdfRChhLCBiLCBjLCBkLCBlLCBmLCBnKSBhICMjIGIgIyMgYyAjIyBkICMjIGUgIyMgZiAjIyBnCi0jIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX0NDXzhfRChhLCBiLCBjLCBkLCBlLCBmLCBnLCBoKSBhICMjIGIgIyMgYyAjIyBkICMjIGUgIyMgZiAjIyBnICMjIGgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfQ0NfOV9EKGEsIGIsIGMsIGQsIGUsIGYsIGcsIGgsIGkpIGEgIyMgYiAjIyBjICMjIGQgIyMgZSAjIyBmICMjIGcgIyMgaCAjIyBpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX0NDXzEwX0QoYSwgYiwgYywgZCwgZSwgZiwgZywgaCwgaSwgaikgYSAjIyBiICMjIGMgIyMgZCAjIyBlICMjIGYgIyMgZyAjIyBoICMjIGkgIyMgagotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2hhcmVkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3NoYXJlZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3OGQzYjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2hhcmVkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0NyArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFBfVkFMVUUKLSMgICAgZXJyb3IgTkROQk9PU1RfUFBfRVJST1I6ICBORE5CT09TVF9QUF9WQUxVRSBpcyBub3QgZGVmaW5lZAotIyBlbmRpZgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMQotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMgotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMwotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNAotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNQotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNgotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNwotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOAotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOQotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAKLSMKLSMgaWYgKE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDAwMDBVTCA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgMAotIyBlbGlmIChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwMDAwVUwgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwIDEKLSMgZWxpZiAoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMDAwMFVMID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCAyCi0jIGVsaWYgKE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDAwMDBVTCA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgMwotIyBlbGlmIChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwMDAwVUwgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwIDQKLSMgZWxpZiAoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMDAwMFVMID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA1Ci0jIGVsaWYgKE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDAwMDBVTCA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgNgotIyBlbGlmIChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwMDAwVUwgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwIDcKLSMgZWxpZiAoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMDAwMFVMID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA4Ci0jIGVsaWYgKE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDAwMDBVTCA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8xMChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwMDBVTCA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMTAoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMDAwVUwgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzEwKE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDAwMFVMID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8xMChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwMDBVTCA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMTAoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMDAwVUwgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzEwKE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDAwMFVMID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8xMChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwMDBVTCA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMTAoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMDAwVUwgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzEwKE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDAwMFVMID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8xMChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwMDBVTCA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzkoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMDBVTCA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfOShORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwMFVMID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF85KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDAwVUwgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzkoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMDBVTCA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfOShORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwMFVMID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF85KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDAwVUwgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzkoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMDBVTCA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfOShORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwMFVMID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF85KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDAwVUwgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzkoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMDBVTCA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzgoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMFVMID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF84KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDBVTCA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfOChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwVUwgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzgoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMFVMID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF84KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDBVTCA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfOChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwVUwgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzgoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMFVMID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF84KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDBVTCA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfOChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwVUwgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzgoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMFVMID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNyhORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDBVTCA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNyhORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDBVTCA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNyhORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDBVTCA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNyhORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDBVTCA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNyhORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDBVTCA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNyhORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDBVTCA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNyhORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDBVTCA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNyhORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDBVTCA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNyhORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDBVTCA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNyhORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDBVTCA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzYoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDBVTCA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNihORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMFVMID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF82KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwVUwgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzYoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDBVTCA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNihORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMFVMID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF82KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwVUwgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzYoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDBVTCA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNihORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMFVMID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF82KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwVUwgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzYoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDBVTCA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzUoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMFVMID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF81KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDBVTCA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNShORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwVUwgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzUoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMFVMID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF81KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDBVTCA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNShORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwVUwgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzUoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMFVMID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF81KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDBVTCA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNShORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwVUwgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzUoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMFVMID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDBVTCA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDBVTCA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDBVTCA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDBVTCA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDBVTCA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDBVTCA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDBVTCA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDBVTCA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDBVTCA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDBVTCA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzMoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTBVTCA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMyhORE5CT09TVF9QUF9WQUxVRSkgLyAxMFVMID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8zKE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwVUwgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzMoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTBVTCA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMyhORE5CT09TVF9QUF9WQUxVRSkgLyAxMFVMID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8zKE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwVUwgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzMoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTBVTCA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMyhORE5CT09TVF9QUF9WQUxVRSkgLyAxMFVMID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8zKE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwVUwgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzMoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTBVTCA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzIoTkROQk9PU1RfUFBfVkFMVUUpID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8yKE5ETkJPT1NUX1BQX1ZBTFVFKSA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMihORE5CT09TVF9QUF9WQUxVRSkgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzIoTkROQk9PU1RfUFBfVkFMVUUpID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8yKE5ETkJPT1NUX1BQX1ZBTFVFKSA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMihORE5CT09TVF9QUF9WQUxVRSkgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzIoTkROQk9PU1RfUFBfVkFMVUUpID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8yKE5ETkJPT1NUX1BQX1ZBTFVFKSA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMihORE5CT09TVF9QUF9WQUxVRSkgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzIoTkROQk9PU1RfUFBfVkFMVUUpID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xIDkKLSMgZW5kaWYKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfVkFMVUUKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3Nsb3QxLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3Nsb3QxLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGU3MjcyNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zbG90MS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNjcgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3NoYXJlZC5ocHA+Ci0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfMQotIwotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMQotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMgotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMwotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNAotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNQotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNgotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNwotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfOAotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfOQotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMTAKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8xMCAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8xMCAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8xMCAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8xMCAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8xMCA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8xMCA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8xMCA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8xMCA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8xMCA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8xMCA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF85IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfOSAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzkgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF85IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfOSA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzkgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF85IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfOSA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzkgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF85IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzggMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF84IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfOCAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzggMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF84IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfOCA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzggNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF84IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfOCA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzggOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNyAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzcgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF83IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNyAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzcgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF83IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNyA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzcgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF83IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNyA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF82IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNiAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzYgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF82IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNiA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzYgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF82IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNiA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzYgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF82IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzUgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF81IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzUgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF81IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzUgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF81IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzUgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNCAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzQgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF80IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNCAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzQgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF80IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNCA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzQgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF80IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNCA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8zIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMyAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzMgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8zIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMyA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzMgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8zIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMyA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzMgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8zIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzIgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8yIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMiAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzIgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8yIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMiA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzIgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8yIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMiA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzIgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMSAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzEgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8xIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMSAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzEgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8xIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMSA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzEgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8xIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMSA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8xMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xKCkgTkROQk9PU1RfUFBfU0xPVF9DQ18xMChORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMTAsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF85LCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfOCwgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzcsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF82LCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNSwgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMSgpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfOShORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfOSwgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzgsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF83LCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNiwgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzUsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF84Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzEoKSBORE5CT09TVF9QUF9TTE9UX0NDXzgoTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzgsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF83LCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNiwgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzUsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF83Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzEoKSBORE5CT09TVF9QUF9TTE9UX0NDXzcoTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzcsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF82LCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNSwgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMSgpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNihORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNiwgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzUsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF81Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzEoKSBORE5CT09TVF9QUF9TTE9UX0NDXzUoTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzUsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF80Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzEoKSBORE5CT09TVF9QUF9TTE9UX0NDXzQoTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMSgpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMyhORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8yCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzEoKSBORE5CT09TVF9QUF9TTE9UX0NDXzIoTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8xKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzEoKSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMQotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2xvdDIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2xvdDIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NDk5OTdkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3Nsb3QyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI2NyArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2hhcmVkLmhwcD4KLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8yCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xCi0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8yCi0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8zCi0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF80Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF81Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF82Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF83Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF84Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF85Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xMAotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzEwIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzEwIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzEwIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzEwIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzEwIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzEwIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzEwIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzEwIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzEwIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzEwIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzkgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF85IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfOSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzkgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF85IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfOSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzkgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF85IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfOSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzkgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfOCAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzggMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF84IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfOCAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzggNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF84IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfOCA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzggNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF84IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfOCA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF83IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNyAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzcgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF83IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNyA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzcgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF83IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNyA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzcgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF83IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzYgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF82IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNiAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzYgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF82IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNiA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzYgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF82IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNiA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzYgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNSAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzUgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF81IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNSAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzUgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF81IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNSA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzUgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF81IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNSA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF80IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNCAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzQgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF80IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNCA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzQgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF80IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNCA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzQgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF80IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzMgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8zIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMyAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzMgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8zIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMyA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzMgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8zIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMyA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzMgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMiAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzIgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8yIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMiAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzIgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8yIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMiA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzIgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8yIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMiA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMSAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzEgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMSA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzEgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMSA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzEgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzEwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzIoKSBORE5CT09TVF9QUF9TTE9UX0NDXzEwKE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xMCwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzksIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF84LCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNywgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzYsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF81LCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yKCkgTkROQk9PU1RfUFBfU0xPVF9DQ185KE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF85LCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfOCwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzcsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF82LCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNSwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMigpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfOChORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfOCwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzcsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF82LCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNSwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMigpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNyhORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNywgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzYsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF81LCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yKCkgTkROQk9PU1RfUFBfU0xPVF9DQ182KE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF82LCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNSwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMigpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNShORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNSwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMigpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNChORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yKCkgTkROQk9PU1RfUFBfU0xPVF9DQ18zKE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMigpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMihORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzEpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMigpIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zbG90My5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zbG90My5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwMzUwM2YuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2xvdDMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjY3ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zaGFyZWQuaHBwPgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzMKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzIKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzMKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzQKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzUKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzYKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzcKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzgKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzkKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEwCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMTAgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMTAgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMTAgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMTAgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMTAgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMTAgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMTAgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMTAgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMTAgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMTAgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfOSAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzkgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF85IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfOSAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzkgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF85IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfOSA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzkgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF85IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfOSA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF84IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfOCAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzggMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF84IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfOCA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzggNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF84IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfOCA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzggOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF84IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzcgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF83IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNyAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzcgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF83IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNyA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzcgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF83IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNyA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzcgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNiAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzYgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF82IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNiAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzYgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF82IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNiA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzYgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF82IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNiA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF81IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNSAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzUgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF81IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNSA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzUgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF81IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNSA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzUgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF81IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzQgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF80IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNCAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzQgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF80IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNCA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzQgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF80IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNCA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzQgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMyAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzMgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8zIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMyAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzMgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8zIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMyA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzMgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8zIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMyA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8yIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMiAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzIgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8yIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMiA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzIgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8yIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMiA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzIgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8yIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8xIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8xIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8xIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMygpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMTAoTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEwLCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfOSwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzgsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF83LCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNiwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzUsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF85Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzMoKSBORE5CT09TVF9QUF9TTE9UX0NDXzkoTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzksIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF84LCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNywgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzYsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF81LCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zKCkgTkROQk9PU1RfUFBfU0xPVF9DQ184KE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF84LCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNywgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzYsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF81LCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zKCkgTkROQk9PU1RfUFBfU0xPVF9DQ183KE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF83LCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNiwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzUsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF82Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzMoKSBORE5CT09TVF9QUF9TTE9UX0NDXzYoTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzYsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF81LCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zKCkgTkROQk9PU1RfUFBfU0xPVF9DQ181KE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF81LCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zKCkgTkROQk9PU1RfUFBfU0xPVF9DQ180KE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8zCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzMoKSBORE5CT09TVF9QUF9TTE9UX0NDXzMoTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zKCkgTkROQk9PU1RfUFBfU0xPVF9DQ18yKE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zKCkgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3Nsb3Q0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3Nsb3Q0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzgwMTdhMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zbG90NC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNjcgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3NoYXJlZC5ocHA+Ci0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfNAotIwotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMQotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMgotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMwotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNAotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNQotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNgotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNwotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfOAotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfOQotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMTAKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8xMCAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8xMCAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8xMCAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8xMCAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8xMCA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8xMCA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8xMCA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8xMCA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8xMCA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8xMCA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF85IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfOSAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzkgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF85IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfOSA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzkgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF85IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfOSA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzkgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF85IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzggMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF84IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfOCAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzggMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF84IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfOCA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzggNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF84IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfOCA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzggOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNyAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzcgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF83IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNyAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzcgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF83IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNyA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzcgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF83IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNyA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF82IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNiAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzYgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF82IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNiA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzYgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF82IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNiA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzYgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF82IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzUgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF81IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzUgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF81IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzUgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF81IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzUgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNCAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzQgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF80IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNCAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzQgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF80IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNCA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzQgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF80IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNCA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8zIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMyAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzMgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8zIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMyA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzMgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8zIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMyA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzMgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8zIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzIgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8yIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMiAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzIgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8yIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMiA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzIgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8yIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMiA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzIgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMSAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzEgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8xIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMSAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzEgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8xIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMSA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzEgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8xIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMSA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8xMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80KCkgTkROQk9PU1RfUFBfU0xPVF9DQ18xMChORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMTAsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF85LCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfOCwgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzcsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF82LCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNSwgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNCgpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfOShORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfOSwgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzgsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF83LCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNiwgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzUsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF84Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzQoKSBORE5CT09TVF9QUF9TTE9UX0NDXzgoTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzgsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF83LCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNiwgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzUsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF83Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzQoKSBORE5CT09TVF9QUF9TTE9UX0NDXzcoTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzcsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF82LCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNSwgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNCgpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNihORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNiwgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzUsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF81Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzQoKSBORE5CT09TVF9QUF9TTE9UX0NDXzUoTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzUsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF80Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzQoKSBORE5CT09TVF9QUF9TTE9UX0NDXzQoTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNCgpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMyhORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8yCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzQoKSBORE5CT09TVF9QUF9TTE9UX0NDXzIoTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8xKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzQoKSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMQotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2xvdDUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2xvdDUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMDk4NDU5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3Nsb3Q1LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI2NyArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2hhcmVkLmhwcD4KLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF81Ci0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xCi0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8yCi0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8zCi0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF80Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF81Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF82Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF83Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF84Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF85Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xMAotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzEwIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzEwIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzEwIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzEwIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzEwIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzEwIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzEwIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzEwIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzEwIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzEwIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzkgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF85IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfOSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzkgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF85IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfOSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzkgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF85IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfOSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzkgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfOCAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzggMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF84IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfOCAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzggNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF84IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfOCA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzggNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF84IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfOCA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF83IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNyAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzcgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF83IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNyA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzcgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF83IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNyA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzcgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF83IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzYgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF82IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNiAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzYgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF82IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNiA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzYgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF82IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNiA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzYgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNSAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzUgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF81IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNSAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzUgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF81IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNSA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzUgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF81IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNSA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF80IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNCAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzQgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF80IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNCA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzQgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF80IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNCA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzQgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF80IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzMgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8zIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMyAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzMgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8zIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMyA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzMgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8zIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMyA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzMgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMiAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzIgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8yIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMiAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzIgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8yIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMiA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzIgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8yIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMiA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMSAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzEgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMSA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzEgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMSA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzEgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzEwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzUoKSBORE5CT09TVF9QUF9TTE9UX0NDXzEwKE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xMCwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzksIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF84LCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNywgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzYsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF81LCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81KCkgTkROQk9PU1RfUFBfU0xPVF9DQ185KE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF85LCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfOCwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzcsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF82LCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNSwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNSgpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfOChORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfOCwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzcsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF82LCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNSwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNSgpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNyhORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNywgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzYsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF81LCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81KCkgTkROQk9PU1RfUFBfU0xPVF9DQ182KE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF82LCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNSwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNSgpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNShORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNSwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNSgpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNChORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81KCkgTkROQk9PU1RfUFBfU0xPVF9DQ18zKE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNSgpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMihORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzEpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNSgpIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L3Nsb3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9zbG90LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzY2MjJiYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L3Nsb3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TTE9UX1NMT1RfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfU0xPVF9TTE9UX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL2RlZi5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0FTU0lHTl9TTE9UICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9BU1NJR05fU0xPVChpKSBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfQVNTSUdOX1NMT1RfLCBpKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfQVNTSUdOX1NMT1RfMSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3Nsb3QxLmhwcD4KLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0FTU0lHTl9TTE9UXzIgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zbG90Mi5ocHA+Ci0jIGRlZmluZSBORE5CT09TVF9QUF9BU1NJR05fU0xPVF8zIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2xvdDMuaHBwPgotIyBkZWZpbmUgTkROQk9PU1RfUFBfQVNTSUdOX1NMT1RfNCA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3Nsb3Q0LmhwcD4KLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0FTU0lHTl9TTE9UXzUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zbG90NS5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX1NMT1QgKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1QoaSkgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX1NMT1RfLCBpKSgpCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zdHJpbmdpemUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc3RyaW5naXplLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjliNGE2YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zdHJpbmdpemUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfU1RSSU5HSVpFX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NUUklOR0laRV9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9TVFJJTkdJWkUgKi8KLSMKLSMgaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVNWQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TVFJJTkdJWkUodGV4dCkgTkROQk9PU1RfUFBfU1RSSU5HSVpFX0EoKHRleHQpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU1RSSU5HSVpFX0EoYXJnKSBORE5CT09TVF9QUF9TVFJJTkdJWkVfSSBhcmcKLSMgZWxpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NV0NDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NUUklOR0laRSh0ZXh0KSBORE5CT09TVF9QUF9TVFJJTkdJWkVfT08oKHRleHQpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU1RSSU5HSVpFX09PKHBhcikgTkROQk9PU1RfUFBfU1RSSU5HSVpFX0kgIyMgcGFyCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NUUklOR0laRSh0ZXh0KSBORE5CT09TVF9QUF9TVFJJTkdJWkVfSSh0ZXh0KQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU1RSSU5HSVpFX0kodGV4dCkgI3RleHQKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VhdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lYXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTA0NjQ5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VhdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyLTIwMTEpICovCi0jIC8qIFJldmlzZWQgYnkgRWR3YXJkIERpZW5lciAoMjAxMSkgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1RVUExFX0VBVF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9UVVBMRV9FQVRfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfRUFUICovCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1ZBUklBRElDUwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRUFUKC4uLikKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRUFUKHgpCi0jIGVuZGlmCi0jCi0jIC8qIE5ETkJPT1NUX1BQX1RVUExFX0VBVCAqLwotIwotIyBpZiBORE5CT09TVF9QUF9WQVJJQURJQ1MKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVChzaXplKSBORE5CT09TVF9QUF9FQVQKLSMgZWxzZQotIyAgICBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVdDQygpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUKHNpemUpIE5ETkJPT1NUX1BQX1RVUExFX0VBVF9JKHNpemUpCi0jICAgIGVsc2UKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVQoc2l6ZSkgTkROQk9PU1RfUFBfVFVQTEVfRUFUX09PKChzaXplKSkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfT08ocGFyKSBORE5CT09TVF9QUF9UVVBMRV9FQVRfSSAjIyBwYXIKLSMgICAgZW5kaWYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF9JKHNpemUpIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8gIyMgc2l6ZQotIyBlbmRpZgotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzEoZTApCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfMihlMCwgZTEpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfMyhlMCwgZTEsIGUyKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQoZTAsIGUxLCBlMiwgZTMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfNShlMCwgZTEsIGUyLCBlMywgZTQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfNihlMCwgZTEsIGUyLCBlMywgZTQsIGU1KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfOChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfOShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzEwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzExKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTApCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfMTIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzEzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzE0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfMTUoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzE2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzE3KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfMTgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzE5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfMjEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfMjQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzI1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzI2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfMjcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzI4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzI5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfMzAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfMzMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzM0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzM1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfMzYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzM3KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzM4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfMzkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDApCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfNDIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQ0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfNDUoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQ2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQ3KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfNDgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQ5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzUwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfNTEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzUyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzUzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfNTQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzU1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzU2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfNTcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzU4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzU5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfNjAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzYxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzYyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfNjMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzY0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWxlbS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTA1NTVmNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5MSArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDItMjAxMSkgKi8KLSMgLyogUmV2aXNlZCBieSBFZHdhcmQgRGllbmVyICgyMDExKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfVFVQTEVfRUxFTV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9UVVBMRV9FTEVNX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9vdmVybG9hZC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9yZW0uaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdmFyaWFkaWMvZWxlbS5ocHA+Ci0jCi0jIGlmIE5ETkJPT1NUX1BQX1ZBUklBRElDUwotIyAgICBpZiBORE5CT09TVF9QUF9WQVJJQURJQ1NfTVNWQwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oLi4uKSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0koTkROQk9PU1RfUFBfT1ZFUkxPQUQoTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9PXywgX19WQV9BUkdTX18pLCAoX19WQV9BUkdTX18pKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fSShtLCBhcmdzKSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0lJKG0sIGFyZ3MpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9JSShtLCBhcmdzKSBORE5CT09TVF9QUF9DQVQobSAjIyBhcmdzLCkKLSMgICAgZWxzZQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oLi4uKSBORE5CT09TVF9QUF9PVkVSTE9BRChORE5CT09TVF9QUF9UVVBMRV9FTEVNX09fLCBfX1ZBX0FSR1NfXykoX19WQV9BUkdTX18pCi0jICAgIGVuZGlmCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX09fMihuLCB0dXBsZSkgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTShuLCBORE5CT09TVF9QUF9SRU0gdHVwbGUpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX09fMyhzaXplLCBuLCB0dXBsZSkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9PXzIobiwgdHVwbGUpCi0jIGVsc2UKLSMgICAgaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVNWQygpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTShzaXplLCBuLCB0dXBsZSkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9JKE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9UVVBMRV9FTEVNXywgbiksIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXywgc2l6ZSksIHR1cGxlKSkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0kobSwgYXJncykgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9JSShtLCBhcmdzKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fSUkobSwgYXJncykgTkROQk9PU1RfUFBfQ0FUKG0gIyMgYXJncywpCi0jICAgIGVsaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVdDQygpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTShzaXplLCBuLCB0dXBsZSkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9JX09PKChzaXplLCBuLCB0dXBsZSkpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9JX09PKHBhcikgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9JICMjIHBhcgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fSShzaXplLCBuLCB0dXBsZSkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9JSSgobiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXyAjIyBzaXplICMjIHR1cGxlKSkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0lJKHBhcikgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9JSUlfT08ocGFyKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fSUlJX09PKHBhcikgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9JSUkgIyMgcGFyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9JSUkobiwgZXR1cGxlKSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXyAjIyBuICMjIGV0dXBsZQotIyAgICBlbHNlCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTShzaXplLCBuLCB0dXBsZSkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9JKE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9UVVBMRV9FTEVNXywgbikgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV8sIHNpemUpIHR1cGxlKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fSSh4KSB4Ci0jICAgIGVuZGlmCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMShlMCkgKGUwLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzIoZTAsIGUxKSAoZTAsIGUxLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzMoZTAsIGUxLCBlMikgKGUwLCBlMSwgZTIsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNChlMCwgZTEsIGUyLCBlMykgKGUwLCBlMSwgZTIsIGUzLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzUoZTAsIGUxLCBlMiwgZTMsIGU0KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNikgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMTAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTkpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV8xMShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwKSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV8xMihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMTMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV8xNChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzKSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV8xNShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMTYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV8xNyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV8xOChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMTkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV8yMChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV8yMShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjApIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMjIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV8yMyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyKSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV8yNChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMjUoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV8yNihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV8yNyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMjgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV8yOShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV8zMChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjkpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMzEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzApIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV8zMihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxKSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV8zMyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMzQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV8zNShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV8zNihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMzcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV8zOChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV8zOShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNDAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzkpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV80MShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwKSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV80MihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNDMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV80NChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzKSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV80NShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNDYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV80NyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV80OChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNDkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV81MChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV81MShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTApIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNTIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV81MyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyKSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV81NChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNTUoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV81NihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV81NyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNTgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV81OShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV82MChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTkpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNjEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjApIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV82MihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxKSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV82MyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNjQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fNChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fNShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fNihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fNyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fOChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fOShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMTAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUxMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8xMShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTExCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzEyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMTMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUxMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8xNChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTE0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzE1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMTYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUxNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8xNyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTE3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzE4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMTkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUxOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yMChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTIwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzIxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMjEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMjIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUyMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yMyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTIzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzI0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMjQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMjUoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUyNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yNihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTI2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzI3KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMjcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMjgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUyOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yOShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTI5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzMwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMzAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMzEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUzMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zMihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTMyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzMzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMzQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUzNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zNShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTM1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzM2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMzcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUzNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zOChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTM4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzM5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fNDAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU0MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV80MShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTQxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzQyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlNDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fNDMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU0MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV80NChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTQ0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzQ1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlNDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fNDYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU0NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV80NyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTQ3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzQ4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlNDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fNDkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU0OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV81MChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTUwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzUxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlNTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fNTIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU1MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV81MyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTUzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzU0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlNTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fNTUoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU1NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV81NihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTU2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzU3KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlNTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fNTgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU1OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV81OShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTU5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzYwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlNjAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fNjEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU2MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV82MihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTYyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzYzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlNjMKLSMgZW5kaWYKLSMKLSMgLyogZGlyZWN0bHkgdXNlZCBlbHNld2hlcmUgaW4gQm9vc3QuLi4gKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMV8wKGEpIGEKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8wKGEsIGIpIGEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKGEsIGIpIGIKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18wKGEsIGIsIGMpIGEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKGEsIGIsIGMpIGIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKGEsIGIsIGMpIGMKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL3JlbS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9yZW0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ODZlMDVkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL3JlbS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzQgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi0yMDExLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBFZHdhcmQgRGllbmVyIDIwMTEuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlICAgICAgKgotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1RVUExFX1JFTV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9UVVBMRV9SRU1fSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL292ZXJsb2FkLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfUkVNICovCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1ZBUklBRElDUwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfUkVNKC4uLikgX19WQV9BUkdTX18KLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfUkVNKHgpIHgKLSMgZW5kaWYKLSMKLSMgLyogTkROQk9PU1RfUFBfVFVQTEVfUkVNICovCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1ZBUklBRElDUwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNKHNpemUpIE5ETkJPT1NUX1BQX1JFTQotIyBlbHNlCi0jICAgIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NV0NDKCkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU0oc2l6ZSkgTkROQk9PU1RfUFBfVFVQTEVfUkVNX0koc2l6ZSkKLSMgICAgZWxzZQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTShzaXplKSBORE5CT09TVF9QUF9UVVBMRV9SRU1fT08oKHNpemUpKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV9PTyhwYXIpIE5ETkJPT1NUX1BQX1RVUExFX1JFTV9JICMjIHBhcgotIyAgICBlbmRpZgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNX0koc2l6ZSkgTkROQk9PU1RfUFBfVFVQTEVfUkVNXyAjIyBzaXplCi0jIGVuZGlmCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fMShlMCkgZTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8yKGUwLCBlMSkgZTAsIGUxCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fMyhlMCwgZTEsIGUyKSBlMCwgZTEsIGUyCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fNChlMCwgZTEsIGUyLCBlMykgZTAsIGUxLCBlMiwgZTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV81KGUwLCBlMSwgZTIsIGUzLCBlNCkgZTAsIGUxLCBlMiwgZTMsIGU0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fNihlMCwgZTEsIGUyLCBlMywgZTQsIGU1KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fNyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNikgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV84KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNykgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fOShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fMTAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTkpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fMTEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCkgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzEyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSkgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fMTMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fMTQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMykgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzE1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCkgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fMTYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fMTcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNikgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzE4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNykgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fMTkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fMjAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSkgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzIxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCkgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fMjIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fMjMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMikgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzI0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMykgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fMjUoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fMjYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSkgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzI3KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNikgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fMjgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fMjkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCkgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzMwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSkgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fMzEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzApIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fMzIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSkgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzMzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMikgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fMzQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fMzUoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCkgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzM2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSkgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fMzcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fMzgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNykgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzM5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCkgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fNDAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzkpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fNDEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCkgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzQyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSkgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fNDMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fNDQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MykgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzQ1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCkgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fNDYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fNDcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NikgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzQ4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NykgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fNDkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fNTAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSkgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzUxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCkgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fNTIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fNTMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MikgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzU0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MykgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fNTUoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fNTYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSkgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzU3KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NikgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fNTgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fNTkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCkgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzYwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSkgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fNjEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjApIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fNjIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSkgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzYzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MikgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fNjQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzCi0jCi0jIC8qIE5ETkJPT1NUX1BQX1RVUExFX1JFTV9DVE9SICovCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1ZBUklBRElDUwotIyAgICBpZiBORE5CT09TVF9QUF9WQVJJQURJQ1NfTVNWQwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV9DVE9SKC4uLikgTkROQk9PU1RfUFBfVFVQTEVfUkVNX0NUT1JfSShORE5CT09TVF9QUF9PVkVSTE9BRChORE5CT09TVF9QUF9UVVBMRV9SRU1fQ1RPUl9PXywgX19WQV9BUkdTX18pLCAoX19WQV9BUkdTX18pKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV9DVE9SX0kobSwgYXJncykgTkROQk9PU1RfUFBfVFVQTEVfUkVNX0NUT1JfSUkobSwgYXJncykKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fQ1RPUl9JSShtLCBhcmdzKSBORE5CT09TVF9QUF9DQVQobSAjIyBhcmdzLCkKLSMgICAgZWxzZQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV9DVE9SKC4uLikgTkROQk9PU1RfUFBfT1ZFUkxPQUQoTkROQk9PU1RfUFBfVFVQTEVfUkVNX0NUT1JfT18sIF9fVkFfQVJHU19fKShfX1ZBX0FSR1NfXykKLSMgICAgZW5kaWYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV9DVE9SX09fMSh0dXBsZSkgTkROQk9PU1RfUFBfUkVNIHR1cGxlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fQ1RPUl9PXzIoc2l6ZSwgdHVwbGUpIE5ETkJPT1NUX1BQX1RVUExFX1JFTV9DVE9SX09fMSh0dXBsZSkKLSMgZWxzZQotIyAgICBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fQ1RPUihzaXplLCB0dXBsZSkgTkROQk9PU1RfUFBfVFVQTEVfUkVNX0NUT1JfSShORE5CT09TVF9QUF9UVVBMRV9SRU0oc2l6ZSksIHR1cGxlKQotIyAgICBlbHNlCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNX0NUT1Ioc2l6ZSwgdHVwbGUpIE5ETkJPT1NUX1BQX1RVUExFX1JFTV9DVE9SX0Qoc2l6ZSwgdHVwbGUpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNX0NUT1JfRChzaXplLCB0dXBsZSkgTkROQk9PU1RfUFBfVFVQTEVfUkVNX0NUT1JfSShORE5CT09TVF9QUF9UVVBMRV9SRU0oc2l6ZSksIHR1cGxlKQotIyAgICBlbmRpZgotIyAgICBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVdDQygpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNX0NUT1JfSShleHQsIHR1cGxlKSBleHQgdHVwbGUKLSMgICAgZWxzZQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV9DVE9SX0koZXh0LCB0dXBsZSkgTkROQk9PU1RfUFBfVFVQTEVfUkVNX0NUT1JfT08oKGV4dCwgdHVwbGUpKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV9DVE9SX09PKHBhcikgTkROQk9PU1RfUFBfVFVQTEVfUkVNX0NUT1JfSUkgIyMgcGFyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNX0NUT1JfSUkoZXh0LCB0dXBsZSkgZXh0ICMjIHR1cGxlCi0jICAgIGVuZGlmCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS90b19saXN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL3RvX2xpc3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MzIyZGM0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL3RvX2xpc3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE2ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMi0yMDExKSAqLwotIyAvKiBSZXZpc2VkIGJ5IEVkd2FyZCBEaWVuZXIgKDIwMTEpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9UVVBMRV9UT19MSVNUX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1RVUExFX1RPX0xJU1RfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL292ZXJsb2FkLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3ZhcmlhZGljL3NpemUuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUICovCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1ZBUklBRElDUwotIyAgICBpZiBORE5CT09TVF9QUF9WQVJJQURJQ1NfTVNWQwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1QoLi4uKSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUX0koTkROQk9PU1RfUFBfT1ZFUkxPQUQoTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF9PXywgX19WQV9BUkdTX18pLCAoX19WQV9BUkdTX18pKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfSShtLCBhcmdzKSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUX0lJKG0sIGFyZ3MpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF9JSShtLCBhcmdzKSBORE5CT09TVF9QUF9DQVQobSAjIyBhcmdzLCkKLSMgICAgZWxzZQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1QoLi4uKSBORE5CT09TVF9QUF9PVkVSTE9BRChORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUX09fLCBfX1ZBX0FSR1NfXykoX19WQV9BUkdTX18pCi0jICAgIGVuZGlmCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUX09fMSh0dXBsZSkgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfLCBORE5CT09TVF9QUF9WQVJJQURJQ19TSVpFIHR1cGxlKSB0dXBsZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF9PXzIoc2l6ZSwgdHVwbGUpIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfT18xKHR1cGxlKQotIyBlbHNlCi0jICAgIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NV0NDKCkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUKHNpemUsIHR1cGxlKSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUX0koc2l6ZSwgdHVwbGUpCi0jICAgICAgICBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVNWQygpCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfSShzLCB0KSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXyAjIyBzIHQKLSMgICAgICAgIGVsc2UKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF9JKHMsIHQpIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfSUkoTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8gIyMgcyB0KQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUX0lJKHJlcykgcmVzCi0jICAgICAgICBlbmRpZgotIyAgICBlbHNlCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVChzaXplLCB0dXBsZSkgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF9PTygoc2l6ZSwgdHVwbGUpKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfT08ocGFyKSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUX0kgIyMgcGFyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF9JKHMsIHQpIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfICMjIHMgIyMgdAotIyAgICBlbmRpZgotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8xKGUwKSAoZTAsIE5ETkJPT1NUX1BQX05JTCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMihlMCwgZTEpIChlMCwgKGUxLCBORE5CT09TVF9QUF9OSUwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8zKGUwLCBlMSwgZTIpIChlMCwgKGUxLCAoZTIsIE5ETkJPT1NUX1BQX05JTCkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF80KGUwLCBlMSwgZTIsIGUzKSAoZTAsIChlMSwgKGUyLCAoZTMsIE5ETkJPT1NUX1BQX05JTCkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfNShlMCwgZTEsIGUyLCBlMywgZTQpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCBORE5CT09TVF9QUF9OSUwpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF82KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIE5ETkJPT1NUX1BQX05JTCkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF83KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfOChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF85KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8xMChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzExKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTApIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMTIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExKSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8xMyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMikgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzE0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMTUoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8xNihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzE3KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMTgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8xOShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzIwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTkpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMjEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwKSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8yMihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzIzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMjQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzKSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8yNShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzI2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMjcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8yOChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNykgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzI5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMzAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8zMShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzMyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMzMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyKSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIChlMzIsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8zNChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMykgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCAoZTMzLCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzM1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgKGUzMywgKGUzNCwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMzYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIChlMzIsIChlMzMsIChlMzQsIChlMzUsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8zNyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNikgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCAoZTMzLCAoZTM0LCAoZTM1LCAoZTM2LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzM4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgKGUzMywgKGUzNCwgKGUzNSwgKGUzNiwgKGUzNywgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMzkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIChlMzIsIChlMzMsIChlMzQsIChlMzUsIChlMzYsIChlMzcsIChlMzgsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF80MChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCAoZTMzLCAoZTM0LCAoZTM1LCAoZTM2LCAoZTM3LCAoZTM4LCAoZTM5LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzQxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDApIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgKGUzMywgKGUzNCwgKGUzNSwgKGUzNiwgKGUzNywgKGUzOCwgKGUzOSwgKGU0MCwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfNDIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxKSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIChlMzIsIChlMzMsIChlMzQsIChlMzUsIChlMzYsIChlMzcsIChlMzgsIChlMzksIChlNDAsIChlNDEsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF80MyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MikgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCAoZTMzLCAoZTM0LCAoZTM1LCAoZTM2LCAoZTM3LCAoZTM4LCAoZTM5LCAoZTQwLCAoZTQxLCAoZTQyLCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzQ0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgKGUzMywgKGUzNCwgKGUzNSwgKGUzNiwgKGUzNywgKGUzOCwgKGUzOSwgKGU0MCwgKGU0MSwgKGU0MiwgKGU0MywgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfNDUoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIChlMzIsIChlMzMsIChlMzQsIChlMzUsIChlMzYsIChlMzcsIChlMzgsIChlMzksIChlNDAsIChlNDEsIChlNDIsIChlNDMsIChlNDQsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF80NihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCAoZTMzLCAoZTM0LCAoZTM1LCAoZTM2LCAoZTM3LCAoZTM4LCAoZTM5LCAoZTQwLCAoZTQxLCAoZTQyLCAoZTQzLCAoZTQ0LCAoZTQ1LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzQ3KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgKGUzMywgKGUzNCwgKGUzNSwgKGUzNiwgKGUzNywgKGUzOCwgKGUzOSwgKGU0MCwgKGU0MSwgKGU0MiwgKGU0MywgKGU0NCwgKGU0NSwgKGU0NiwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfNDgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIChlMzIsIChlMzMsIChlMzQsIChlMzUsIChlMzYsIChlMzcsIChlMzgsIChlMzksIChlNDAsIChlNDEsIChlNDIsIChlNDMsIChlNDQsIChlNDUsIChlNDYsIChlNDcsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF80OShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCAoZTMzLCAoZTM0LCAoZTM1LCAoZTM2LCAoZTM3LCAoZTM4LCAoZTM5LCAoZTQwLCAoZTQxLCAoZTQyLCAoZTQzLCAoZTQ0LCAoZTQ1LCAoZTQ2LCAoZTQ3LCAoZTQ4LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzUwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDkpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgKGUzMywgKGUzNCwgKGUzNSwgKGUzNiwgKGUzNywgKGUzOCwgKGUzOSwgKGU0MCwgKGU0MSwgKGU0MiwgKGU0MywgKGU0NCwgKGU0NSwgKGU0NiwgKGU0NywgKGU0OCwgKGU0OSwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfNTEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwKSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIChlMzIsIChlMzMsIChlMzQsIChlMzUsIChlMzYsIChlMzcsIChlMzgsIChlMzksIChlNDAsIChlNDEsIChlNDIsIChlNDMsIChlNDQsIChlNDUsIChlNDYsIChlNDcsIChlNDgsIChlNDksIChlNTAsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF81MihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCAoZTMzLCAoZTM0LCAoZTM1LCAoZTM2LCAoZTM3LCAoZTM4LCAoZTM5LCAoZTQwLCAoZTQxLCAoZTQyLCAoZTQzLCAoZTQ0LCAoZTQ1LCAoZTQ2LCAoZTQ3LCAoZTQ4LCAoZTQ5LCAoZTUwLCAoZTUxLCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzUzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgKGUzMywgKGUzNCwgKGUzNSwgKGUzNiwgKGUzNywgKGUzOCwgKGUzOSwgKGU0MCwgKGU0MSwgKGU0MiwgKGU0MywgKGU0NCwgKGU0NSwgKGU0NiwgKGU0NywgKGU0OCwgKGU0OSwgKGU1MCwgKGU1MSwgKGU1MiwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfNTQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzKSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIChlMzIsIChlMzMsIChlMzQsIChlMzUsIChlMzYsIChlMzcsIChlMzgsIChlMzksIChlNDAsIChlNDEsIChlNDIsIChlNDMsIChlNDQsIChlNDUsIChlNDYsIChlNDcsIChlNDgsIChlNDksIChlNTAsIChlNTEsIChlNTIsIChlNTMsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF81NShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCAoZTMzLCAoZTM0LCAoZTM1LCAoZTM2LCAoZTM3LCAoZTM4LCAoZTM5LCAoZTQwLCAoZTQxLCAoZTQyLCAoZTQzLCAoZTQ0LCAoZTQ1LCAoZTQ2LCAoZTQ3LCAoZTQ4LCAoZTQ5LCAoZTUwLCAoZTUxLCAoZTUyLCAoZTUzLCAoZTU0LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzU2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgKGUzMywgKGUzNCwgKGUzNSwgKGUzNiwgKGUzNywgKGUzOCwgKGUzOSwgKGU0MCwgKGU0MSwgKGU0MiwgKGU0MywgKGU0NCwgKGU0NSwgKGU0NiwgKGU0NywgKGU0OCwgKGU0OSwgKGU1MCwgKGU1MSwgKGU1MiwgKGU1MywgKGU1NCwgKGU1NSwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfNTcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIChlMzIsIChlMzMsIChlMzQsIChlMzUsIChlMzYsIChlMzcsIChlMzgsIChlMzksIChlNDAsIChlNDEsIChlNDIsIChlNDMsIChlNDQsIChlNDUsIChlNDYsIChlNDcsIChlNDgsIChlNDksIChlNTAsIChlNTEsIChlNTIsIChlNTMsIChlNTQsIChlNTUsIChlNTYsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF81OChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NykgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCAoZTMzLCAoZTM0LCAoZTM1LCAoZTM2LCAoZTM3LCAoZTM4LCAoZTM5LCAoZTQwLCAoZTQxLCAoZTQyLCAoZTQzLCAoZTQ0LCAoZTQ1LCAoZTQ2LCAoZTQ3LCAoZTQ4LCAoZTQ5LCAoZTUwLCAoZTUxLCAoZTUyLCAoZTUzLCAoZTU0LCAoZTU1LCAoZTU2LCAoZTU3LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzU5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgKGUzMywgKGUzNCwgKGUzNSwgKGUzNiwgKGUzNywgKGUzOCwgKGUzOSwgKGU0MCwgKGU0MSwgKGU0MiwgKGU0MywgKGU0NCwgKGU0NSwgKGU0NiwgKGU0NywgKGU0OCwgKGU0OSwgKGU1MCwgKGU1MSwgKGU1MiwgKGU1MywgKGU1NCwgKGU1NSwgKGU1NiwgKGU1NywgKGU1OCwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfNjAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIChlMzIsIChlMzMsIChlMzQsIChlMzUsIChlMzYsIChlMzcsIChlMzgsIChlMzksIChlNDAsIChlNDEsIChlNDIsIChlNDMsIChlNDQsIChlNDUsIChlNDYsIChlNDcsIChlNDgsIChlNDksIChlNTAsIChlNTEsIChlNTIsIChlNTMsIChlNTQsIChlNTUsIChlNTYsIChlNTcsIChlNTgsIChlNTksIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF82MShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCAoZTMzLCAoZTM0LCAoZTM1LCAoZTM2LCAoZTM3LCAoZTM4LCAoZTM5LCAoZTQwLCAoZTQxLCAoZTQyLCAoZTQzLCAoZTQ0LCAoZTQ1LCAoZTQ2LCAoZTQ3LCAoZTQ4LCAoZTQ5LCAoZTUwLCAoZTUxLCAoZTUyLCAoZTUzLCAoZTU0LCAoZTU1LCAoZTU2LCAoZTU3LCAoZTU4LCAoZTU5LCAoZTYwLCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzYyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgKGUzMywgKGUzNCwgKGUzNSwgKGUzNiwgKGUzNywgKGUzOCwgKGUzOSwgKGU0MCwgKGU0MSwgKGU0MiwgKGU0MywgKGU0NCwgKGU0NSwgKGU0NiwgKGU0NywgKGU0OCwgKGU0OSwgKGU1MCwgKGU1MSwgKGU1MiwgKGU1MywgKGU1NCwgKGU1NSwgKGU1NiwgKGU1NywgKGU1OCwgKGU1OSwgKGU2MCwgKGU2MSwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfNjMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyKSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIChlMzIsIChlMzMsIChlMzQsIChlMzUsIChlMzYsIChlMzcsIChlMzgsIChlMzksIChlNDAsIChlNDEsIChlNDIsIChlNDMsIChlNDQsIChlNDUsIChlNDYsIChlNDcsIChlNDgsIChlNDksIChlNTAsIChlNTEsIChlNTIsIChlNTMsIChlNTQsIChlNTUsIChlNTYsIChlNTcsIChlNTgsIChlNTksIChlNjAsIChlNjEsIChlNjIsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF82NChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCAoZTMzLCAoZTM0LCAoZTM1LCAoZTM2LCAoZTM3LCAoZTM4LCAoZTM5LCAoZTQwLCAoZTQxLCAoZTQyLCAoZTQzLCAoZTQ0LCAoZTQ1LCAoZTQ2LCAoZTQ3LCAoZTQ4LCAoZTQ5LCAoZTUwLCAoZTUxLCAoZTUyLCAoZTUzLCAoZTU0LCAoZTU1LCAoZTU2LCAoZTU3LCAoZTU4LCAoZTU5LCAoZTYwLCAoZTYxLCAoZTYyLCAoZTYzLCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci92YXJpYWRpYy9lbGVtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3ZhcmlhZGljL2VsZW0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzcyZWNiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3ZhcmlhZGljL2VsZW0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBFZHdhcmQgRGllbmVyIDIwMTEuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAxMS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlICAgICAgKgotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1ZBUklBRElDX0VMRU1fSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfVkFSSUFESUNfRUxFTV9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTSAqLwotIwotIyBpZiBORE5CT09TVF9QUF9WQVJJQURJQ1MKLSMgICAgaWYgTkROQk9PU1RfUFBfVkFSSUFESUNTX01TVkMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNKG4sIC4uLikgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV9JKG4sX19WQV9BUkdTX18pCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV9JKG4sIC4uLikgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXywgbikoX19WQV9BUkdTX18sKSwpCi0jICAgIGVsc2UKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNKG4sIC4uLikgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fLCBuKShfX1ZBX0FSR1NfXywpCi0jICAgIGVuZGlmCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzAoZTAsIC4uLikgZTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMShlMCwgZTEsIC4uLikgZTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMihlMCwgZTEsIGUyLCAuLi4pIGUyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzMoZTAsIGUxLCBlMiwgZTMsIC4uLikgZTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fNChlMCwgZTEsIGUyLCBlMywgZTQsIC4uLikgZTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fNShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCAuLi4pIGU1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIC4uLikgZTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fNyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIC4uLikgZTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fOChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCAuLi4pIGU4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIC4uLikgZTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMTAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgLi4uKSBlMTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMTEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCAuLi4pIGUxMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV8xMihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgLi4uKSBlMTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMTMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgLi4uKSBlMTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMTQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCAuLi4pIGUxNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV8xNShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgLi4uKSBlMTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMTYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgLi4uKSBlMTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMTcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCAuLi4pIGUxNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV8xOChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgLi4uKSBlMTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMTkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgLi4uKSBlMTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMjAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCAuLi4pIGUyMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV8yMShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgLi4uKSBlMjEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMjIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgLi4uKSBlMjIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMjMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCAuLi4pIGUyMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV8yNChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgLi4uKSBlMjQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMjUoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgLi4uKSBlMjUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMjYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCAuLi4pIGUyNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV8yNyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgLi4uKSBlMjcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMjgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgLi4uKSBlMjgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMjkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCAuLi4pIGUyOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV8zMChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgLi4uKSBlMzAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMzEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgLi4uKSBlMzEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMzIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCAuLi4pIGUzMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV8zMyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgLi4uKSBlMzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMzQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgLi4uKSBlMzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMzUoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCAuLi4pIGUzNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV8zNihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgLi4uKSBlMzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMzcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgLi4uKSBlMzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMzgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCAuLi4pIGUzOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV8zOShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgLi4uKSBlMzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fNDAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgLi4uKSBlNDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fNDEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCAuLi4pIGU0MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV80MihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgLi4uKSBlNDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fNDMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgLi4uKSBlNDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fNDQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCAuLi4pIGU0NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV80NShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgLi4uKSBlNDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fNDYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgLi4uKSBlNDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fNDcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCAuLi4pIGU0NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV80OChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgLi4uKSBlNDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fNDkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgLi4uKSBlNDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fNTAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCAuLi4pIGU1MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV81MShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgLi4uKSBlNTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fNTIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgLi4uKSBlNTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fNTMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCAuLi4pIGU1MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV81NChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgLi4uKSBlNTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fNTUoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgLi4uKSBlNTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fNTYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCAuLi4pIGU1NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV81NyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgLi4uKSBlNTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fNTgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgLi4uKSBlNTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fNTkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCAuLi4pIGU1OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV82MChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgLi4uKSBlNjAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fNjEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgLi4uKSBlNjEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fNjIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCAuLi4pIGU2MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV82MyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MywgLi4uKSBlNjMKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3ZhcmlhZGljL3NpemUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvdmFyaWFkaWMvc2l6ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwMzRhMWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvdmFyaWFkaWMvc2l6ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IEVkd2FyZCBEaWVuZXIgMjAxMS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDExLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgICAgICAqCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfVkFSSUFESUNfU0laRV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9WQVJJQURJQ19TSVpFX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9WQVJJQURJQ19TSVpFICovCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1ZBUklBRElDUwotIyAgICBpZiBORE5CT09TVF9QUF9WQVJJQURJQ1NfTVNWQwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX1NJWkUoLi4uKSBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfVkFSSUFESUNfU0laRV9JKF9fVkFfQVJHU19fLCA2NCwgNjMsIDYyLCA2MSwgNjAsIDU5LCA1OCwgNTcsIDU2LCA1NSwgNTQsIDUzLCA1MiwgNTEsIDUwLCA0OSwgNDgsIDQ3LCA0NiwgNDUsIDQ0LCA0MywgNDIsIDQxLCA0MCwgMzksIDM4LCAzNywgMzYsIDM1LCAzNCwgMzMsIDMyLCAzMSwgMzAsIDI5LCAyOCwgMjcsIDI2LCAyNSwgMjQsIDIzLCAyMiwgMjEsIDIwLCAxOSwgMTgsIDE3LCAxNiwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwpLCkKLSMgICAgZWxzZQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX1NJWkUoLi4uKSBORE5CT09TVF9QUF9WQVJJQURJQ19TSVpFX0koX19WQV9BUkdTX18sIDY0LCA2MywgNjIsIDYxLCA2MCwgNTksIDU4LCA1NywgNTYsIDU1LCA1NCwgNTMsIDUyLCA1MSwgNTAsIDQ5LCA0OCwgNDcsIDQ2LCA0NSwgNDQsIDQzLCA0MiwgNDEsIDQwLCAzOSwgMzgsIDM3LCAzNiwgMzUsIDM0LCAzMywgMzIsIDMxLCAzMCwgMjksIDI4LCAyNywgMjYsIDI1LCAyNCwgMjMsIDIyLCAyMSwgMjAsIDE5LCAxOCwgMTcsIDE2LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCkKLSMgICAgZW5kaWYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX1NJWkVfSShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2Mywgc2l6ZSwgLi4uKSBzaXplCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Byb2dyZXNzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJvZ3Jlc3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZjVlOWVkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJvZ3Jlc3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAgQEAKLS8vICBib29zdCBwcm9ncmVzcy5ocHAgaGVhZGVyIGZpbGUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBDb3B5cmlnaHQgQmVtYW4gRGF3ZXMgMTk5NC05OS4gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdAotLy8gIFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGltZXIgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICBSZXZpc2lvbiBIaXN0b3J5Ci0vLyAgIDEgRGVjIDAxICBBZGQgbGVhZGluZyBwcm9ncmVzcyBkaXNwbGF5IHN0cmluZ3MgKHN1Z2dlc3RlZCBieSBUb29uIEtuYXBlbikKLS8vICAyMCBNYXkgMDEgIEludHJvZHVjZSBzZXZlcmFsIHN0YXRpY19jYXN0czw+IHRvIGVsaW1pbmF0ZSB3YXJuaW5nIG1lc3NhZ2VzCi0vLyAgICAgICAgICAgICAoRml4ZWQgYnkgQmVtYW4sIHJlcG9ydGVkIGJ5IEhlcnZlIEJyb25uaW1hbm4pCi0vLyAgMTIgSmFuIDAxICBDaGFuZ2UgdG8gaW5saW5lIGltcGxlbWVudGF0aW9uIHRvIGFsbG93IHVzZSB3aXRob3V0IGxpYnJhcnkKLS8vICAgICAgICAgICAgIGJ1aWxkcy4gU2VlIGRvY3MgZm9yIG1vcmUgcmF0aW9uYWxlLiAoQmVtYW4gRGF3ZXMpIAotLy8gIDIyIEp1bCA5OSAgTmFtZSBjaGFuZ2VkIHRvIC5ocHAKLS8vICAxNiBKdWwgOTkgIFNlY29uZCBiZXRhCi0vLyAgIDYgSnVsIDk5ICBJbml0aWFsIGJvb3N0IHZlcnNpb24KLQotI2lmbmRlZiBORE5CT09TVF9QUk9HUkVTU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfUFJPR1JFU1NfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90aW1lci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS5ocHA+ICAvLyBmb3Igbm9uY29weWFibGUKLSNpbmNsdWRlIDxuZG5ib29zdC9jc3RkaW50LmhwcD4gIC8vIGZvciB1aW50bWF4X3QKLSNpbmNsdWRlIDxpb3N0cmVhbT4gICAgICAgICAgIC8vIGZvciBvc3RyZWFtLCBjb3V0LCBldGMKLSNpbmNsdWRlIDxzdHJpbmc+ICAgICAgICAgICAgIC8vIGZvciBzdHJpbmcKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotLy8gIHByb2dyZXNzX3RpbWVyICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIEEgcHJvZ3Jlc3NfdGltZXIgYmVoYXZlcyBsaWtlIGEgdGltZXIgZXhjZXB0IHRoYXQgdGhlIGRlc3RydWN0b3IgZGlzcGxheXMKLS8vICBhbiBlbGFwc2VkIHRpbWUgbWVzc2FnZSBhdCBhbiBhcHByb3ByaWF0ZSBwbGFjZSBpbiBhbiBhcHByb3ByaWF0ZSBmb3JtLgotCi1jbGFzcyBwcm9ncmVzc190aW1lciA6IHB1YmxpYyB0aW1lciwgcHJpdmF0ZSBub25jb3B5YWJsZQotewotICAKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IHByb2dyZXNzX3RpbWVyKCBzdGQ6Om9zdHJlYW0gJiBvcyA9IHN0ZDo6Y291dCApCi0gICAgIC8vIG9zIGlzIGhpbnQ7IGltcGxlbWVudGF0aW9uIG1heSBpZ25vcmUsIHBhcnRpY3VsYXJseSBpbiBlbWJlZGRlZCBzeXN0ZW1zCi0gICAgIDogbV9vcyhvcykge30KLSAgfnByb2dyZXNzX3RpbWVyKCkKLSAgewotICAvLyAgQSkgVGhyb3dpbmcgYW4gZXhjZXB0aW9uIGZyb20gYSBkZXN0cnVjdG9yIGlzIGEgQmFkIFRoaW5nLgotICAvLyAgQikgVGhlIHByb2dyZXNzX3RpbWVyIGRlc3RydWN0b3IgZG9lcyBvdXRwdXQgd2hpY2ggbWF5IHRocm93LgotICAvLyAgQykgQSBwcm9ncmVzc190aW1lciBpcyB1c3VhbGx5IG5vdCBjcml0aWNhbCB0byB0aGUgYXBwbGljYXRpb24uCi0gIC8vICBUaGVyZWZvcmUsIHdyYXAgdGhlIEkvTyBpbiBhIHRyeSBibG9jaywgY2F0Y2ggYW5kIGlnbm9yZSBhbGwgZXhjZXB0aW9ucy4KLSAgICB0cnkKLSAgICB7Ci0gICAgICAvLyB1c2UgaXN0cmVhbSBpbnN0ZWFkIG9mIGlvc19iYXNlIHRvIHdvcmthcm91bmQgR05VIHByb2JsZW0gKEdyZWcgQ2hpY2FyZXMpCi0gICAgICBzdGQ6OmlzdHJlYW06OmZtdGZsYWdzIG9sZF9mbGFncyA9IG1fb3Muc2V0Ziggc3RkOjppc3RyZWFtOjpmaXhlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6aXN0cmVhbTo6ZmxvYXRmaWVsZCApOwotICAgICAgc3RkOjpzdHJlYW1zaXplIG9sZF9wcmVjID0gbV9vcy5wcmVjaXNpb24oIDIgKTsKLSAgICAgIG1fb3MgPDwgZWxhcHNlZCgpIDw8ICIgc1xuIiAvLyAicyIgaXMgU3lzdGVtIEludGVybmF0aW9uYWwgZCdVbml0ZXMgc3RkCi0gICAgICAgICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7Ci0gICAgICBtX29zLmZsYWdzKCBvbGRfZmxhZ3MgKTsKLSAgICAgIG1fb3MucHJlY2lzaW9uKCBvbGRfcHJlYyApOwotICAgIH0KLQotICAgIGNhdGNoICguLi4pIHt9IC8vIGVhdCBhbnkgZXhjZXB0aW9ucwotICB9IC8vIH5wcm9ncmVzc190aW1lcgotCi0gcHJpdmF0ZToKLSAgc3RkOjpvc3RyZWFtICYgbV9vczsKLX07Ci0KLQotLy8gIHByb2dyZXNzX2Rpc3BsYXkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIHByb2dyZXNzX2Rpc3BsYXkgZGlzcGxheXMgYW4gYXBwcm9wcmlhdGUgaW5kaWNhdGlvbiBvZiAKLS8vICBwcm9ncmVzcyBhdCBhbiBhcHByb3ByaWF0ZSBwbGFjZSBpbiBhbiBhcHByb3ByaWF0ZSBmb3JtLgotCi0vLyBOT1RFOiAoSmFuIDEyLCAyMDAxKSBUcmllZCB0byBjaGFuZ2UgdW5zaWduZWQgbG9uZyB0byBuZG5ib29zdDo6dWludG1heF90LCBidXQKLS8vIGZvdW5kIHNvbWUgY29tcGlsZXJzIGNvdWxkbid0IGhhbmRsZSB0aGUgcmVxdWlyZWQgY29udmVyc2lvbiB0byBkb3VibGUuCi0vLyBSZXZlcnRlZCB0byB1bnNpZ25lZCBsb25nIHVudGlsIHRoZSBjb21waWxlcnMgY2F0Y2ggdXAuIAotCi1jbGFzcyBwcm9ncmVzc19kaXNwbGF5IDogcHJpdmF0ZSBub25jb3B5YWJsZQotewotIHB1YmxpYzoKLSAgZXhwbGljaXQgcHJvZ3Jlc3NfZGlzcGxheSggdW5zaWduZWQgbG9uZyBleHBlY3RlZF9jb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpvc3RyZWFtICYgb3MgPSBzdGQ6OmNvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICYgczEgPSAiXG4iLCAvL2xlYWRpbmcgc3RyaW5ncwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmIHMyID0gIiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICYgczMgPSAiIiApCi0gICAvLyBvcyBpcyBoaW50OyBpbXBsZW1lbnRhdGlvbiBtYXkgaWdub3JlLCBwYXJ0aWN1bGFybHkgaW4gZW1iZWRkZWQgc3lzdGVtcwotICAgOiBtX29zKG9zKSwgbV9zMShzMSksIG1fczIoczIpLCBtX3MzKHMzKSB7IHJlc3RhcnQoZXhwZWN0ZWRfY291bnQpOyB9Ci0KLSAgdm9pZCAgICAgICAgICAgcmVzdGFydCggdW5zaWduZWQgbG9uZyBleHBlY3RlZF9jb3VudCApCi0gIC8vICBFZmZlY3RzOiBkaXNwbGF5IGFwcHJvcHJpYXRlIHNjYWxlCi0gIC8vICBQb3N0Y29uZGl0aW9uczogY291bnQoKT09MCwgZXhwZWN0ZWRfY291bnQoKT09ZXhwZWN0ZWRfY291bnQKLSAgewotICAgIF9jb3VudCA9IF9uZXh0X3RpY19jb3VudCA9IF90aWMgPSAwOwotICAgIF9leHBlY3RlZF9jb3VudCA9IGV4cGVjdGVkX2NvdW50OwotCi0gICAgbV9vcyA8PCBtX3MxIDw8ICIwJSAgIDEwICAgMjAgICAzMCAgIDQwICAgNTAgICA2MCAgIDcwICAgODAgICA5MCAgIDEwMCVcbiIKLSAgICAgICAgIDw8IG1fczIgPDwgInwtLS0tfC0tLS18LS0tLXwtLS0tfC0tLS18LS0tLXwtLS0tfC0tLS18LS0tLXwtLS0tfCIKLSAgICAgICAgIDw8IHN0ZDo6ZW5kbCAgLy8gZW5kbCBpbXBsaWVzIGZsdXNoLCB3aGljaCBlbnN1cmVzIGRpc3BsYXkKLSAgICAgICAgIDw8IG1fczM7Ci0gICAgaWYgKCAhX2V4cGVjdGVkX2NvdW50ICkgX2V4cGVjdGVkX2NvdW50ID0gMTsgIC8vIHByZXZlbnQgZGl2aWRlIGJ5IHplcm8KLSAgfSAvLyByZXN0YXJ0Ci0KLSAgdW5zaWduZWQgbG9uZyAgb3BlcmF0b3IrPSggdW5zaWduZWQgbG9uZyBpbmNyZW1lbnQgKQotICAvLyAgRWZmZWN0czogRGlzcGxheSBhcHByb3ByaWF0ZSBwcm9ncmVzcyB0aWMgaWYgbmVlZGVkLgotICAvLyAgUG9zdGNvbmRpdGlvbnM6IGNvdW50KCk9PSBvcmlnaW5hbCBjb3VudCgpICsgaW5jcmVtZW50Ci0gIC8vICBSZXR1cm5zOiBjb3VudCgpLgotICB7Ci0gICAgaWYgKCAoX2NvdW50ICs9IGluY3JlbWVudCkgPj0gX25leHRfdGljX2NvdW50ICkgeyBkaXNwbGF5X3RpYygpOyB9Ci0gICAgcmV0dXJuIF9jb3VudDsKLSAgfQotCi0gIHVuc2lnbmVkIGxvbmcgIG9wZXJhdG9yKysoKSAgICAgICAgICAgeyByZXR1cm4gb3BlcmF0b3IrPSggMSApOyB9Ci0gIHVuc2lnbmVkIGxvbmcgIGNvdW50KCkgY29uc3QgICAgICAgICAgeyByZXR1cm4gX2NvdW50OyB9Ci0gIHVuc2lnbmVkIGxvbmcgIGV4cGVjdGVkX2NvdW50KCkgY29uc3QgeyByZXR1cm4gX2V4cGVjdGVkX2NvdW50OyB9Ci0KLSAgcHJpdmF0ZToKLSAgc3RkOjpvc3RyZWFtICYgICAgIG1fb3M7ICAvLyBtYXkgbm90IGJlIHByZXNlbnQgaW4gYWxsIGltcHMKLSAgY29uc3Qgc3RkOjpzdHJpbmcgIG1fczE7ICAvLyBzdHJpbmcgaXMgbW9yZSBnZW5lcmFsLCBzYWZlciB0aGFuIAotICBjb25zdCBzdGQ6OnN0cmluZyAgbV9zMjsgIC8vICBjb25zdCBjaGFyICosIGFuZCBlZmZpY2llbmN5IG9yIHNpemUgYXJlCi0gIGNvbnN0IHN0ZDo6c3RyaW5nICBtX3MzOyAgLy8gIG5vdCBpc3N1ZXMKLQotICB1bnNpZ25lZCBsb25nIF9jb3VudCwgX2V4cGVjdGVkX2NvdW50LCBfbmV4dF90aWNfY291bnQ7Ci0gIHVuc2lnbmVkIGludCAgX3RpYzsKLSAgdm9pZCBkaXNwbGF5X3RpYygpCi0gIHsKLSAgICAvLyB1c2Ugb2YgZmxvYXRpbmcgcG9pbnQgZW5zdXJlcyB0aGF0IGJvdGggbGFyZ2UgYW5kIHNtYWxsIGNvdW50cwotICAgIC8vIHdvcmsgY29ycmVjdGx5LiAgc3RhdGljX2Nhc3Q8PigpIGlzIGFsc28gdXNlZCBzZXZlcmFsIHBsYWNlcwotICAgIC8vIHRvIHN1cHByZXNzIHNwdXJpb3VzIGNvbXBpbGVyIHdhcm5pbmdzLiAKLSAgICB1bnNpZ25lZCBpbnQgdGljc19uZWVkZWQgPQotICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PigKLSAgICAgICAgKHN0YXRpY19jYXN0PGRvdWJsZT4oX2NvdW50KS9fZXhwZWN0ZWRfY291bnQpKjUwLjAgKTsKLSAgICBkbyB7IG1fb3MgPDwgJyonIDw8IHN0ZDo6Zmx1c2g7IH0gd2hpbGUgKCArK190aWMgPCB0aWNzX25lZWRlZCApOwotICAgIF9uZXh0X3RpY19jb3VudCA9IAotICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oKF90aWMvNTAuMCkqX2V4cGVjdGVkX2NvdW50KTsKLSAgICBpZiAoIF9jb3VudCA9PSBfZXhwZWN0ZWRfY291bnQgKSB7Ci0gICAgICBpZiAoIF90aWMgPCA1MSApIG1fb3MgPDwgJyonOwotICAgICAgbV9vcyA8PCBzdGQ6OmVuZGw7Ci0gICAgICB9Ci0gIH0gLy8gZGlzcGxheV90aWMKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gTkROQk9PU1RfUFJPR1JFU1NfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvY29uZmlnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9jb25maWcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZDdmN2JiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9jb25maWcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotLyogYm9vc3QgcmFuZG9tL2RldGFpbC9jb25maWcuaHBwIGhlYWRlciBmaWxlCi0gKgotICogQ29weXJpZ2h0IFN0ZXZlbiBXYXRhbmFiZSAyMDA5Ci0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0gKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotICoKLSAqICRJZDogY29uZmlnLmhwcCA1MjQ5MiAyMDA5LTA0LTE5IDE0OjU1OjU3WiBzdGV2ZW5fd2F0YW5hYmUgJAotICovCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0jaWYgKGRlZmluZWQoTkROQk9PU1RfTk9fT1BFUkFUT1JTX0lOX05BTUVTUEFDRSkgfHwgZGVmaW5lZChORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVfRlJJRU5EUykpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NU1ZDKQotICAgICNkZWZpbmUgTkROQk9PU1RfUkFORE9NX05PX1NUUkVBTV9PUEVSQVRPUlMKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL2NvbnN0X21vZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvY29uc3RfbW9kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjAyNzdmMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvY29uc3RfbW9kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxNiArMCwwIEBACi0vKiBib29zdCByYW5kb20vZGV0YWlsL2NvbnN0X21vZC5ocHAgaGVhZGVyIGZpbGUKLSAqCi0gKiBDb3B5cmlnaHQgSmVucyBNYXVyZXIgMjAwMC0yMDAxCi0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0gKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotICoKLSAqICRJZDogY29uc3RfbW9kLmhwcCA3MTAxOCAyMDExLTA0LTA1IDIxOjI3OjUyWiBzdGV2ZW5fd2F0YW5hYmUgJAotICoKLSAqIFJldmlzaW9uIGhpc3RvcnkKLSAqICAyMDAxLTAyLTE4ICBtb3ZlZCB0byBpbmRpdmlkdWFsIGhlYWRlciBmaWxlcwotICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFORE9NX0NPTlNUX01PRF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0NPTlNUX01PRF9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW50ZWdlcl90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL21ha2VfdW5zaWduZWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmRvbS9kZXRhaWwvbGFyZ2VfYXJpdGhtZXRpYy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5kb20vZGV0YWlsL2Rpc2FibGVfd2FybmluZ3MuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIHJhbmRvbSB7Ci0KLXRlbXBsYXRlPGNsYXNzIEludFR5cGUsIEludFR5cGUgbT4KLWNsYXNzIGNvbnN0X21vZAotewotcHVibGljOgotICBzdGF0aWMgSW50VHlwZSBhcHBseShJbnRUeXBlIHgpCi0gIHsKLSAgICBpZigoKHVuc2lnbmVkX20oKSAtIDEpICYgdW5zaWduZWRfbSgpKSA9PSAwKQotICAgICAgcmV0dXJuICh1bnNpZ25lZF90eXBlKHgpKSAmICh1bnNpZ25lZF9tKCkgLSAxKTsKLSAgICBlbHNlIHsKLSAgICAgIEludFR5cGUgc3VwcmVzc193YXJuaW5ncyA9IChtID09IDApOwotICAgICAgTkROQk9PU1RfQVNTRVJUKHN1cHJlc3Nfd2FybmluZ3MgPT0gMCk7Ci0gICAgICByZXR1cm4geCAlIChtICsgc3VwcmVzc193YXJuaW5ncyk7Ci0gICAgfQotICB9Ci0KLSAgc3RhdGljIEludFR5cGUgYWRkKEludFR5cGUgeCwgSW50VHlwZSBjKQotICB7Ci0gICAgaWYoKCh1bnNpZ25lZF9tKCkgLSAxKSAmIHVuc2lnbmVkX20oKSkgPT0gMCkKLSAgICAgIHJldHVybiAodW5zaWduZWRfdHlwZSh4KSArIHVuc2lnbmVkX3R5cGUoYykpICYgKHVuc2lnbmVkX20oKSAtIDEpOwotICAgIGVsc2UgaWYoYyA9PSAwKQotICAgICAgcmV0dXJuIHg7Ci0gICAgZWxzZSBpZih4IDwgbSAtIGMpCi0gICAgICByZXR1cm4geCArIGM7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIHggLSAobSAtIGMpOwotICB9Ci0KLSAgc3RhdGljIEludFR5cGUgbXVsdChJbnRUeXBlIGEsIEludFR5cGUgeCkKLSAgewotICAgIGlmKCgodW5zaWduZWRfbSgpIC0gMSkgJiB1bnNpZ25lZF9tKCkpID09IDApCi0gICAgICByZXR1cm4gdW5zaWduZWRfdHlwZShhKSAqIHVuc2lnbmVkX3R5cGUoeCkgJiAodW5zaWduZWRfbSgpIC0gMSk7Ci0gICAgZWxzZSBpZihhID09IDApCi0gICAgICByZXR1cm4gMDsKLSAgICBlbHNlIGlmKGEgPT0gMSkKLSAgICAgIHJldHVybiB4OwotICAgIGVsc2UgaWYobSA8PSB0cmFpdHM6OmNvbnN0X21heC9hKSAgICAgIC8vIGkuZS4gYSptIDw9IG1heAotICAgICAgcmV0dXJuIG11bHRfc21hbGwoYSwgeCk7Ci0gICAgZWxzZSBpZih0cmFpdHM6OmlzX3NpZ25lZCAmJiAobSVhIDwgbS9hKSkKLSAgICAgIHJldHVybiBtdWx0X3NjaHJhZ2UoYSwgeCk7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIG11bHRfZ2VuZXJhbChhLCB4KTsKLSAgfQotCi0gIHN0YXRpYyBJbnRUeXBlIG11bHRfYWRkKEludFR5cGUgYSwgSW50VHlwZSB4LCBJbnRUeXBlIGMpCi0gIHsKLSAgICBpZigoKHVuc2lnbmVkX20oKSAtIDEpICYgdW5zaWduZWRfbSgpKSA9PSAwKQotICAgICAgcmV0dXJuICh1bnNpZ25lZF90eXBlKGEpICogdW5zaWduZWRfdHlwZSh4KSArIHVuc2lnbmVkX3R5cGUoYykpICYgKHVuc2lnbmVkX20oKSAtIDEpOwotICAgIGVsc2UgaWYoYSA9PSAwKQotICAgICAgcmV0dXJuIGM7Ci0gICAgZWxzZSBpZihtIDw9ICh0cmFpdHM6OmNvbnN0X21heC1jKS9hKSB7ICAvLyBpLmUuIGEqbStjIDw9IG1heAotICAgICAgSW50VHlwZSBzdXByZXNzX3dhcm5pbmdzID0gKG0gPT0gMCk7Ci0gICAgICBORE5CT09TVF9BU1NFUlQoc3VwcmVzc193YXJuaW5ncyA9PSAwKTsKLSAgICAgIHJldHVybiAoYSp4K2MpICUgKG0gKyBzdXByZXNzX3dhcm5pbmdzKTsKLSAgICB9IGVsc2UKLSAgICAgIHJldHVybiBhZGQobXVsdChhLCB4KSwgYyk7Ci0gIH0KLQotICBzdGF0aWMgSW50VHlwZSBwb3coSW50VHlwZSBhLCBuZG5ib29zdDo6dWludG1heF90IGV4cG9uZW50KQotICB7Ci0gICAgICBJbnRUeXBlIHJlc3VsdCA9IDE7Ci0gICAgICB3aGlsZShleHBvbmVudCAhPSAwKSB7Ci0gICAgICAgICAgaWYoZXhwb25lbnQgJSAyID09IDEpIHsKLSAgICAgICAgICAgICAgcmVzdWx0ID0gbXVsdChyZXN1bHQsIGEpOwotICAgICAgICAgIH0KLSAgICAgICAgICBhID0gbXVsdChhLCBhKTsKLSAgICAgICAgICBleHBvbmVudCAvPSAyOwotICAgICAgfQotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotCi0gIHN0YXRpYyBJbnRUeXBlIGludmVydChJbnRUeXBlIHgpCi0gIHsgcmV0dXJuIHggPT0gMCA/IDAgOiAobSA9PSAwPyBpbnZlcnRfZXVjbGlkaWFuMCh4KSA6IGludmVydF9ldWNsaWRpYW4oeCkpOyB9Ci0KLXByaXZhdGU6Ci0gIHR5cGVkZWYgaW50ZWdlcl90cmFpdHM8SW50VHlwZT4gdHJhaXRzOwotICB0eXBlZGVmIHR5cGVuYW1lIG1ha2VfdW5zaWduZWQ8SW50VHlwZT46OnR5cGUgdW5zaWduZWRfdHlwZTsKLQotICBjb25zdF9tb2QoKTsgICAgICAvLyBkb24ndCBpbnN0YW50aWF0ZQotCi0gIHN0YXRpYyBJbnRUeXBlIG11bHRfc21hbGwoSW50VHlwZSBhLCBJbnRUeXBlIHgpCi0gIHsKLSAgICBJbnRUeXBlIHN1cHJlc3Nfd2FybmluZ3MgPSAobSA9PSAwKTsKLSAgICBORE5CT09TVF9BU1NFUlQoc3VwcmVzc193YXJuaW5ncyA9PSAwKTsKLSAgICByZXR1cm4gYSp4ICUgKG0gKyBzdXByZXNzX3dhcm5pbmdzKTsKLSAgfQotCi0gIHN0YXRpYyBJbnRUeXBlIG11bHRfc2NocmFnZShJbnRUeXBlIGEsIEludFR5cGUgdmFsdWUpCi0gIHsKLSAgICBjb25zdCBJbnRUeXBlIHEgPSBtIC8gYTsKLSAgICBjb25zdCBJbnRUeXBlIHIgPSBtICUgYTsKLQotICAgIE5ETkJPT1NUX0FTU0VSVChyIDwgcSk7ICAgICAgICAvLyBjaGVjayB0aGF0IG92ZXJmbG93IGNhbm5vdCBoYXBwZW4KLQotICAgIHJldHVybiBzdWIoYSoodmFsdWUlcSksIHIqKHZhbHVlL3EpKTsKLSAgfQotCi0gIHN0YXRpYyBJbnRUeXBlIG11bHRfZ2VuZXJhbChJbnRUeXBlIGEsIEludFR5cGUgYikKLSAgewotICAgIEludFR5cGUgc3VwcHJlc3Nfd2FybmluZ3MgPSAobSA9PSAwKTsKLSAgICBORE5CT09TVF9BU1NFUlQoc3VwcHJlc3Nfd2FybmluZ3MgPT0gMCk7Ci0gICAgSW50VHlwZSBtb2R1bHVzID0gbSArIHN1cHByZXNzX3dhcm5pbmdzOwotICAgIE5ETkJPT1NUX0FTU0VSVChtb2R1bHVzID09IG0pOwotICAgIGlmKDo6bmRuYm9vc3Q6OnVpbnRtYXhfdChtb2R1bHVzKSA8PQotICAgICAgICAoOjpzdGQ6Om51bWVyaWNfbGltaXRzPCA6Om5kbmJvb3N0Ojp1aW50bWF4X3Q+OjptYXgpKCkgLyBtb2R1bHVzKQotICAgIHsKLSAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbnRUeXBlPihuZG5ib29zdDo6dWludG1heF90KGEpICogYiAlIG1vZHVsdXMpOwotICAgIH0gZWxzZSB7Ci0gICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW50VHlwZT4oZGV0YWlsOjptdWxtb2QoYSwgYiwgbW9kdWx1cykpOwotICAgIH0KLSAgfQotCi0gIHN0YXRpYyBJbnRUeXBlIHN1YihJbnRUeXBlIGEsIEludFR5cGUgYikKLSAgewotICAgIGlmKGEgPCBiKQotICAgICAgcmV0dXJuIG0gLSAoYiAtIGEpOwotICAgIGVsc2UKLSAgICAgIHJldHVybiBhIC0gYjsKLSAgfQotCi0gIHN0YXRpYyB1bnNpZ25lZF90eXBlIHVuc2lnbmVkX20oKQotICB7Ci0gICAgICBpZihtID09IDApIHsKLSAgICAgICAgICByZXR1cm4gdW5zaWduZWRfdHlwZSgoc3RkOjpudW1lcmljX2xpbWl0czxJbnRUeXBlPjo6bWF4KSgpKSArIDE7Ci0gICAgICB9IGVsc2UgewotICAgICAgICAgIHJldHVybiB1bnNpZ25lZF90eXBlKG0pOwotICAgICAgfQotICB9Ci0KLSAgLy8gaW52ZXJ0IGMgaW4gdGhlIGZpbml0ZSBmaWVsZCAobW9kIG0pIChtIG11c3QgYmUgcHJpbWUpCi0gIHN0YXRpYyBJbnRUeXBlIGludmVydF9ldWNsaWRpYW4oSW50VHlwZSBjKQotICB7Ci0gICAgLy8gd2UgYXJlIGludGVyZXN0ZWQgaW4gdGhlIGdjZCBmYWN0b3IgZm9yIGMsIGJlY2F1c2UgdGhpcyBpcyBvdXIgaW52ZXJzZQotICAgIE5ETkJPT1NUX0FTU0VSVChjID4gMCk7Ci0gICAgSW50VHlwZSBsMSA9IDA7Ci0gICAgSW50VHlwZSBsMiA9IDE7Ci0gICAgSW50VHlwZSBuID0gYzsKLSAgICBJbnRUeXBlIHAgPSBtOwotICAgIGZvcig7OykgewotICAgICAgSW50VHlwZSBxID0gcCAvIG47Ci0gICAgICBsMSArPSBxICogbDI7Ci0gICAgICBwIC09IHEgKiBuOwotICAgICAgaWYocCA9PSAwKQotICAgICAgICByZXR1cm4gbDI7Ci0gICAgICBJbnRUeXBlIHEyID0gbiAvIHA7Ci0gICAgICBsMiArPSBxMiAqIGwxOwotICAgICAgbiAtPSBxMiAqIHA7Ci0gICAgICBpZihuID09IDApCi0gICAgICAgIHJldHVybiBtIC0gbDE7Ci0gICAgfQotICB9Ci0KLSAgLy8gaW52ZXJ0IGMgaW4gdGhlIGZpbml0ZSBmaWVsZCAobW9kIG0pIChjIG11c3QgYmUgcmVsYXRpdmVseSBwcmltZSB0byBtKQotICBzdGF0aWMgSW50VHlwZSBpbnZlcnRfZXVjbGlkaWFuMChJbnRUeXBlIGMpCi0gIHsKLSAgICAvLyB3ZSBhcmUgaW50ZXJlc3RlZCBpbiB0aGUgZ2NkIGZhY3RvciBmb3IgYywgYmVjYXVzZSB0aGlzIGlzIG91ciBpbnZlcnNlCi0gICAgTkROQk9PU1RfQVNTRVJUKGMgPiAwKTsKLSAgICBpZihjID09IDEpIHJldHVybiAxOwotICAgIEludFR5cGUgbDEgPSAwOwotICAgIEludFR5cGUgbDIgPSAxOwotICAgIEludFR5cGUgbiA9IGM7Ci0gICAgSW50VHlwZSBwID0gbTsKLSAgICBJbnRUeXBlIG1heCA9IChzdGQ6Om51bWVyaWNfbGltaXRzPEludFR5cGU+OjptYXgpKCk7Ci0gICAgSW50VHlwZSBxID0gbWF4IC8gbjsKLSAgICBORE5CT09TVF9BU1NFUlQobWF4ICUgbiAhPSBuIC0gMSAmJiAiYyBtdXN0IGJlIHJlbGF0aXZlbHkgcHJpbWUgdG8gbS4iKTsKLSAgICBsMSArPSBxICogbDI7Ci0gICAgcCA9IG1heCAtIHEgKiBuICsgMTsKLSAgICBmb3IoOzspIHsKLSAgICAgIGlmKHAgPT0gMCkKLSAgICAgICAgcmV0dXJuIGwyOwotICAgICAgSW50VHlwZSBxMiA9IG4gLyBwOwotICAgICAgbDIgKz0gcTIgKiBsMTsKLSAgICAgIG4gLT0gcTIgKiBwOwotICAgICAgaWYobiA9PSAwKQotICAgICAgICByZXR1cm4gbSAtIGwxOwotICAgICAgcSA9IHAgLyBuOwotICAgICAgbDEgKz0gcSAqIGwyOwotICAgICAgcCAtPSBxICogbjsKLSAgICB9Ci0gIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIHJhbmRvbQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmRvbS9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JBTkRPTV9DT05TVF9NT0RfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvZGlzYWJsZV93YXJuaW5ncy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvZGlzYWJsZV93YXJuaW5ncy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmNzA3ZDAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL2Rpc2FibGVfd2FybmluZ3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotLyogYm9vc3QgcmFuZG9tL2RldGFpbC9kaXNhYmxlX3dhcm5pbmdzLmhwcCBoZWFkZXIgZmlsZQotICoKLSAqIENvcHlyaWdodCBTdGV2ZW4gV2F0YW5hYmUgMjAwOQotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0gKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLSAqCi0gKiAkSWQ6IGRpc2FibGVfd2FybmluZ3MuaHBwIDYwNzU1IDIwMTAtMDMtMjIgMDA6NDU6MDZaIHN0ZXZlbl93YXRhbmFiZSAkCi0gKgotICovCi0KLS8vIE5vICNpbmNsdWRlIGd1YXJkLiAgVGhpcyBoZWFkZXIgaXMgaW50ZW5kZWQgdG8gYmUgaW5jbHVkZWQgbXVsdGlwbGUgdGltZXMuCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0NTEyKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEyNykKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ3MjQpCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4NTM1ZTIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0vKiBib29zdCByYW5kb20vZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHAgaGVhZGVyIGZpbGUKLSAqCi0gKiBDb3B5cmlnaHQgU3RldmVuIFdhdGFuYWJlIDIwMDkKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0gKgotICogJElkOiBlbmFibGVfd2FybmluZ3MuaHBwIDU4NjQ5IDIwMTAtMDEtMDIgMjE6MjM6MTdaIHN0ZXZlbl93YXRhbmFiZSAkCi0gKgotICovCi0KLS8vIE5vICNpbmNsdWRlIGd1YXJkLiAgVGhpcyBoZWFkZXIgaXMgaW50ZW5kZWQgdG8gYmUgaW5jbHVkZWQgbXVsdGlwbGUgdGltZXMuCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvZ2VuZXJhdG9yX2JpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL2dlbmVyYXRvcl9iaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTRkNDlkNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvZ2VuZXJhdG9yX2JpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyogYm9vc3QgcmFuZG9tL2RldGFpbC9nZW5lcmF0b3JfYml0cy5ocHAgaGVhZGVyIGZpbGUKLSAqCi0gKiBDb3B5cmlnaHQgU3RldmVuIFdhdGFuYWJlIDIwMTEKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0gKgotICogJElkOiBnZW5lcmF0b3JfYml0cy5ocHAgNzI5NTEgMjAxMS0wNy0wNyAwNDo1NzozN1ogc3RldmVuX3dhdGFuYWJlICQKLSAqCi0gKi8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5ET01fREVUQUlMX0dFTkVSQVRPUl9CSVRTX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5ET01fREVUQUlMX0dFTkVSQVRPUl9CSVRTX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbGltaXRzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSByYW5kb20gewotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vIFRoaXMgaXMgYSB0ZW1wb3JhcnkgbWVhc3VyZSB0aGF0IHJldGFpbnMgYmFja3dhcmRzCi0vLyBjb21wYXRpYmlsaXR5LgotdGVtcGxhdGU8Y2xhc3MgVVJORz4KLXN0cnVjdCBnZW5lcmF0b3JfYml0cyB7Ci0gICAgc3RhdGljIHN0ZDo6c2l6ZV90IHZhbHVlKCkgewotICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czx0eXBlbmFtZSBVUk5HOjpyZXN1bHRfdHlwZT46OmRpZ2l0czsKLSAgICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLX0gLy8gbmFtZXNwYWNlIHJhbmRvbQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfR0VORVJBVE9SX0JJVFNfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvaW50ZWdlcl9sb2cyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9pbnRlZ2VyX2xvZzIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzQyOWFmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9pbnRlZ2VyX2xvZzIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotLyogYm9vc3QgcmFuZG9tL2RldGFpbC9pbnRlZ2VyX2xvZzIuaHBwIGhlYWRlciBmaWxlCi0gKgotICogQ29weXJpZ2h0IFN0ZXZlbiBXYXRhbmFiZSAyMDExCi0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0gKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotICoKLSAqICRJZDogaW50ZWdlcl9sb2cyLmhwcCA4MzM4MSAyMDEzLTAzLTA5IDIyOjU1OjA1WiBlcmljX25pZWJsZXIgJAotICoKLSAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfSU5URUdFUl9MT0cyX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5ET01fREVUQUlMX0lOVEVHRVJfTE9HMl9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbGltaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wZW5kaW5nL2ludGVnZXJfbG9nMi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgcmFuZG9tIHsKLW5hbWVzcGFjZSBkZXRhaWwgewotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfQ09OU1RFWFBSKQotI2RlZmluZSBORE5CT09TVF9SQU5ET01fREVUQUlMX0NPTlNURVhQUiBjb25zdGV4cHIKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9DT05TVEVYUFIgX19mb3JjZWlubGluZQotI2VsaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPj0gNAotI2RlZmluZSBORE5CT09TVF9SQU5ET01fREVUQUlMX0NPTlNURVhQUiBpbmxpbmUgX19hdHRyaWJ1dGVfXygoY29uc3QpKSBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkKLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfQ09OU1RFWFBSIGlubGluZQotI2VuZGlmCi0KLXRlbXBsYXRlPGludCBTaGlmdD4KLXN0cnVjdCBpbnRlZ2VyX2xvZzJfaW1wbAotewotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfQ09OU1RFWFBSKQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9DT05TVEVYUFIgc3RhdGljIGludCBhcHBseShUIHQsIGludCBhY2N1bSkKLSAgICB7Ci0gICAgICAgIGludCB1cGRhdGUgPSAoKHQgPj4gU2hpZnQpICE9IDApICogU2hpZnQ7Ci0gICAgICAgIHJldHVybiBpbnRlZ2VyX2xvZzJfaW1wbDxTaGlmdCAvIDI+OjphcHBseSh0ID4+IHVwZGF0ZSwgYWNjdW0gKyB1cGRhdGUpOwotICAgIH0KLSNlbHNlCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBORE5CT09TVF9SQU5ET01fREVUQUlMX0NPTlNURVhQUiBzdGF0aWMgaW50IGFwcGx5MihUIHQsIGludCBhY2N1bSwgaW50IHVwZGF0ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBpbnRlZ2VyX2xvZzJfaW1wbDxTaGlmdCAvIDI+OjphcHBseSh0ID4+IHVwZGF0ZSwgYWNjdW0gKyB1cGRhdGUpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9DT05TVEVYUFIgc3RhdGljIGludCBhcHBseShUIHQsIGludCBhY2N1bSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhcHBseTIodCwgYWNjdW0sICgodCA+PiBTaGlmdCkgIT0gMCkgKiBTaGlmdCk7Ci0gICAgfQotI2VuZGlmCi19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW50ZWdlcl9sb2cyX2ltcGw8MT4KLXsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfQ09OU1RFWFBSIHN0YXRpYyBpbnQgYXBwbHkoVCB0LCBpbnQgYWNjdW0pCi0gICAgewotICAgICAgICByZXR1cm4gaW50KHQgPj4gMSkgKyBhY2N1bTsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBUPgotTkROQk9PU1RfUkFORE9NX0RFVEFJTF9DT05TVEVYUFIgaW50IGludGVnZXJfbG9nMihUIHQpCi17Ci0gICAgcmV0dXJuIGludGVnZXJfbG9nMl9pbXBsPAotICAgICAgICA6Om5kbmJvb3N0OjpkZXRhaWw6Om1heF9wb3cyX2xlc3M8Ci0gICAgICAgICAgICA6OnN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmRpZ2l0cywgNAotICAgICAgICA+Ojp2YWx1ZQotICAgID46OmFwcGx5KHQsIDApOwotfQotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLX0gLy8gbmFtZXNwYWNlIHJhbmRvbQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfSU5URUdFUl9MT0cyX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL2xhcmdlX2FyaXRobWV0aWMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL2xhcmdlX2FyaXRobWV0aWMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOWM2NDM0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9sYXJnZV9hcml0aG1ldGljLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMiArMCwwIEBACi0vKiBib29zdCByYW5kb20vZGV0YWlsL2xhcmdlX2FyaXRobWV0aWMuaHBwIGhlYWRlciBmaWxlCi0gKgotICogQ29weXJpZ2h0IFN0ZXZlbiBXYXRhbmFiZSAyMDExCi0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0gKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotICoKLSAqICRJZDogbGFyZ2VfYXJpdGhtZXRpYy5ocHAgNzEwMTggMjAxMS0wNC0wNSAyMToyNzo1Mlogc3RldmVuX3dhdGFuYWJlICQKLSAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfTEFSR0VfQVJJVEhNRVRJQ19IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9MQVJHRV9BUklUSE1FVElDX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY3N0ZGludC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW50ZWdlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbGltaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5kb20vZGV0YWlsL2ludGVnZXJfbG9nMi5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5kb20vZGV0YWlsL2Rpc2FibGVfd2FybmluZ3MuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIHJhbmRvbSB7Ci1uYW1lc3BhY2UgZGV0YWlsIHsKLQotc3RydWN0IGRpdl90IHsKLSAgICBuZG5ib29zdDo6dWludG1heF90IHF1b3RpZW50OwotICAgIG5kbmJvb3N0Ojp1aW50bWF4X3QgcmVtYWluZGVyOwotfTsKLQotaW5saW5lIGRpdl90IG11bGRpdm1vZChuZG5ib29zdDo6dWludG1heF90IGEsIG5kbmJvb3N0Ojp1aW50bWF4X3QgYiwgbmRuYm9vc3Q6OnVpbnRtYXhfdCBtKQotewotICAgIHN0YXRpYyBjb25zdCBpbnQgYml0cyA9Ci0gICAgICAgIDo6c3RkOjpudW1lcmljX2xpbWl0czwgOjpuZG5ib29zdDo6dWludG1heF90Pjo6ZGlnaXRzIC8gMjsKLSAgICBzdGF0aWMgY29uc3QgOjpuZG5ib29zdDo6dWludG1heF90IG1hc2sgPSAoOjpuZG5ib29zdDo6dWludG1heF90KDEpIDw8IGJpdHMpIC0gMTsKLSAgICB0eXBlZGVmIDo6bmRuYm9vc3Q6OnVpbnRfdDxiaXRzPjo6ZmFzdCBkaWdpdF90OwotCi0gICAgaW50IHNoaWZ0ID0gc3RkOjpudW1lcmljX2xpbWl0czwgOjpuZG5ib29zdDo6dWludG1heF90Pjo6ZGlnaXRzIC0gMQotICAgICAgICAtIGRldGFpbDo6aW50ZWdlcl9sb2cyKG0pOwotCi0gICAgYSA8PD0gc2hpZnQ7Ci0gICAgbSA8PD0gc2hpZnQ7Ci0KLSAgICBkaWdpdF90IHByb2R1Y3RbNF0gPSB7IDAsIDAsIDAsIDAgfTsKLSAgICBkaWdpdF90IGFfWzJdID0geyBkaWdpdF90KGEgJiBtYXNrKSwgZGlnaXRfdCgoYSA+PiBiaXRzKSAmIG1hc2spIH07Ci0gICAgZGlnaXRfdCBiX1syXSA9IHsgZGlnaXRfdChiICYgbWFzayksIGRpZ2l0X3QoKGIgPj4gYml0cykgJiBtYXNrKSB9OwotICAgIGRpZ2l0X3QgbV9bMl0gPSB7IGRpZ2l0X3QobSAmIG1hc2spLCBkaWdpdF90KChtID4+IGJpdHMpICYgbWFzaykgfTsKLQotICAgIC8vIG11bHRpcGx5IGEgKiBiCi0gICAgZm9yKGludCBpID0gMDsgaSA8IDI7ICsraSkgewotICAgICAgICBkaWdpdF90IGNhcnJ5ID0gMDsKLSAgICAgICAgZm9yKGludCBqID0gMDsgaiA8IDI7ICsraikgewotICAgICAgICAgICAgOjpuZG5ib29zdDo6dWludDY0X3QgdGVtcCA9IDo6bmRuYm9vc3Q6OnVpbnRtYXhfdChhX1tpXSkgKiBiX1tqXSArCi0gICAgICAgICAgICAgICAgY2FycnkgKyBwcm9kdWN0W2kgKyBqXTsKLSAgICAgICAgICAgIHByb2R1Y3RbaSArIGpdID0gZGlnaXRfdCh0ZW1wICYgbWFzayk7Ci0gICAgICAgICAgICBjYXJyeSA9IGRpZ2l0X3QodGVtcCA+PiBiaXRzKTsKLSAgICAgICAgfQotICAgICAgICBpZihjYXJyeSAhPSAwKSB7Ci0gICAgICAgICAgICBwcm9kdWN0W2kgKyAyXSArPSBjYXJyeTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGRpZ2l0X3QgcXVvdGllbnRbMl07Ci0KLSAgICBpZihtID09IDApIHsKLSAgICAgICAgZGl2X3QgcmVzdWx0ID0gewotICAgICAgICAgICAgKCg6Om5kbmJvb3N0Ojp1aW50bWF4X3QocHJvZHVjdFszXSkgPDwgYml0cykgfCBwcm9kdWN0WzJdKSwKLSAgICAgICAgICAgICgoOjpuZG5ib29zdDo6dWludG1heF90KHByb2R1Y3RbMV0pIDw8IGJpdHMpIHwgcHJvZHVjdFswXSkgPj4gc2hpZnQsCi0gICAgICAgIH07Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgLy8gZGl2aWRlIHByb2R1Y3QgLyBtCi0gICAgZm9yKGludCBpID0gMzsgaSA+PSAyOyAtLWkpIHsKLSAgICAgICAgOjpuZG5ib29zdDo6dWludG1heF90IHRlbXAgPQotICAgICAgICAgICAgOjpuZG5ib29zdDo6dWludG1heF90KHByb2R1Y3RbaV0pIDw8IGJpdHMgfCBwcm9kdWN0W2kgLSAxXTsKLQotICAgICAgICBkaWdpdF90IHEgPSBkaWdpdF90KChwcm9kdWN0W2ldID09IG1fWzFdKSA/IG1hc2sgOiB0ZW1wIC8gbV9bMV0pOwotCi0gICAgICAgIDo6bmRuYm9vc3Q6OnVpbnRtYXhfdCByZW0gPQotICAgICAgICAgICAgKCh0ZW1wIC0gOjpuZG5ib29zdDo6dWludG1heF90KHEpICogbV9bMV0pIDw8IGJpdHMpICsgcHJvZHVjdFtpIC0gMl07Ci0KLSAgICAgICAgOjpuZG5ib29zdDo6dWludG1heF90IGRpZmYgPSBtX1swXSAqIDo6bmRuYm9vc3Q6OnVpbnRtYXhfdChxKTsKLQotICAgICAgICBpbnQgZXJyb3IgPSAwOwotICAgICAgICBpZihkaWZmID4gcmVtKSB7Ci0gICAgICAgICAgICBpZihkaWZmIC0gcmVtID4gbSkgewotICAgICAgICAgICAgICAgIGVycm9yID0gMjsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZXJyb3IgPSAxOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHEgLT0gZXJyb3I7Ci0gICAgICAgIHJlbSA9IHJlbSArIGVycm9yICogbSAtIGRpZmY7Ci0KLSAgICAgICAgcXVvdGllbnRbaSAtIDJdID0gcTsKLSAgICAgICAgcHJvZHVjdFtpXSA9IDA7Ci0gICAgICAgIHByb2R1Y3RbaS0xXSA9IChyZW0gPj4gYml0cykgJiBtYXNrOwotICAgICAgICBwcm9kdWN0W2ktMl0gPSByZW0gJiBtYXNrOwotICAgIH0KLQotICAgIGRpdl90IHJlc3VsdCA9IHsKLSAgICAgICAgKCg6Om5kbmJvb3N0Ojp1aW50bWF4X3QocXVvdGllbnRbMV0pIDw8IGJpdHMpIHwgcXVvdGllbnRbMF0pLAotICAgICAgICAoKDo6bmRuYm9vc3Q6OnVpbnRtYXhfdChwcm9kdWN0WzFdKSA8PCBiaXRzKSB8IHByb2R1Y3RbMF0pID4+IHNoaWZ0LAotICAgIH07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotaW5saW5lIG5kbmJvb3N0Ojp1aW50bWF4X3QgbXVsZGl2KG5kbmJvb3N0Ojp1aW50bWF4X3QgYSwgbmRuYm9vc3Q6OnVpbnRtYXhfdCBiLCBuZG5ib29zdDo6dWludG1heF90IG0pCi17IHJldHVybiBkZXRhaWw6Om11bGRpdm1vZChhLCBiLCBtKS5xdW90aWVudDsgfQotCi1pbmxpbmUgbmRuYm9vc3Q6OnVpbnRtYXhfdCBtdWxtb2QobmRuYm9vc3Q6OnVpbnRtYXhfdCBhLCBuZG5ib29zdDo6dWludG1heF90IGIsIG5kbmJvb3N0Ojp1aW50bWF4X3QgbSkKLXsgcmV0dXJuIGRldGFpbDo6bXVsZGl2bW9kKGEsIGIsIG0pLnJlbWFpbmRlcjsgfQotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLX0gLy8gbmFtZXNwYWNlIHJhbmRvbQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmRvbS9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfTEFSR0VfQVJJVEhNRVRJQ19IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9vcGVyYXRvcnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL29wZXJhdG9ycy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkZjQ4ODEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL29wZXJhdG9ycy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi0vKiBib29zdCByYW5kb20vZGV0YWlsL29wZXJhdG9ycy5ocHAgaGVhZGVyIGZpbGUKLSAqCi0gKiBDb3B5cmlnaHQgU3RldmVuIFdhdGFuYWJlIDIwMTAtMjAxMQotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0gKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLSAqCi0gKiAkSWQ6IG9wZXJhdG9ycy5ocHAgNzEwMTggMjAxMS0wNC0wNSAyMToyNzo1Mlogc3RldmVuX3dhdGFuYWJlICQKLSAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfT1BFUkFUT1JTX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5ET01fREVUQUlMX09QRVJBVE9SU19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmRvbS9kZXRhaWwvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMTApICAgXAotICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19TVU5QUk9fQ0MsIE5ETkJPT1NUX1RFU1RFRF9BVCgweDUxMDApKQotCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfT1NUUkVBTV9PUEVSQVRPUihvcywgVCwgdCkgICAgICAgICAgICAgICAgICBcCi0gICAgdGVtcGxhdGU8Y2xhc3MgQ2hhclQsIGNsYXNzIFRyYWl0cz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZnJpZW5kIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVCxUcmFpdHM+JiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgb3BlcmF0b3I8PChzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsVHJhaXRzPiYgb3MsIGNvbnN0IFQmIHQpIHsgICAgICBcCi0gICAgICAgIHQucHJpbnQob3MsIHQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJldHVybiBvczsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdGVtcGxhdGU8Y2xhc3MgQ2hhclQsIGNsYXNzIFRyYWl0cz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgc3RhdGljIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVCxUcmFpdHM+JiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgcHJpbnQoc3RkOjpiYXNpY19vc3RyZWFtPENoYXJULFRyYWl0cz4mIG9zLCBjb25zdCBUJiB0KQotCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfSVNUUkVBTV9PUEVSQVRPUihpcywgVCwgdCkgICAgICAgICAgICAgICAgICBcCi0gICAgdGVtcGxhdGU8Y2xhc3MgQ2hhclQsIGNsYXNzIFRyYWl0cz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZnJpZW5kIHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCxUcmFpdHM+JiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgb3BlcmF0b3I+PihzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQsVHJhaXRzPiYgaXMsIFQmIHQpIHsgICAgICAgICAgICBcCi0gICAgICAgIHQucmVhZChpcywgdCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJldHVybiBpczsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdGVtcGxhdGU8Y2xhc3MgQ2hhclQsIGNsYXNzIFRyYWl0cz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgc3RhdGljIHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCxUcmFpdHM+JiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgcmVhZChzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQsVHJhaXRzPiYgaXMsIFQmIHQpCi0KLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pCi0KLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9FUVVBTElUWV9PUEVSQVRPUihULCBsaHMsIHJocykgICAgICAgICAgICAgIFwKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVCYgcmhzKSBjb25zdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7IHJldHVybiBUOjppc19lcXVhbCgqdGhpcywgcmhzKTsgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBzdGF0aWMgYm9vbCBpc19lcXVhbChjb25zdCBUJiBsaHMsIGNvbnN0IFQmIHJocykKLQotI2RlZmluZSBORE5CT09TVF9SQU5ET01fREVUQUlMX0lORVFVQUxJVFlfT1BFUkFUT1IoVCkgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUJiByaHMpIGNvbnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHsgcmV0dXJuICFUOjppc19lcXVhbCgqdGhpcywgcmhzKTsgfQotCi0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9SQU5ET01fREVUQUlMX09TVFJFQU1fT1BFUkFUT1IKLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9PU1RSRUFNX09QRVJBVE9SKG9zLCBULCB0KSAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZTxjbGFzcyBDaGFyVCwgY2xhc3MgVHJhaXRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBmcmllbmQgc3RkOjpiYXNpY19vc3RyZWFtPENoYXJULFRyYWl0cz4mICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBvcGVyYXRvcjw8KHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVCxUcmFpdHM+JiBvcywgY29uc3QgVCYgdCkKLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfSVNUUkVBTV9PUEVSQVRPUgotI2RlZmluZSBORE5CT09TVF9SQU5ET01fREVUQUlMX0lTVFJFQU1fT1BFUkFUT1IoaXMsIFQsIHQpICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlPGNsYXNzIENoYXJULCBjbGFzcyBUcmFpdHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGZyaWVuZCBzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQsVHJhaXRzPiYgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIG9wZXJhdG9yPj4oc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULFRyYWl0cz4mIGlzLCBUJiB0KQotI2VuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9FUVVBTElUWV9PUEVSQVRPUgotI2RlZmluZSBORE5CT09TVF9SQU5ET01fREVUQUlMX0VRVUFMSVRZX09QRVJBVE9SKFQsIGxocywgcmhzKSAgICAgICAgICAgICAgXAotICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgVCYgbGhzLCBjb25zdCBUJiByaHMpCi0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9SQU5ET01fREVUQUlMX0lORVFVQUxJVFlfT1BFUkFUT1IKLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9JTkVRVUFMSVRZX09QRVJBVE9SKFQpICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFQmIGxocywgY29uc3QgVCYgcmhzKSAgICAgICAgICAgICAgICAgIFwKLSAgICB7IHJldHVybiAhKGxocyA9PSByaHMpOyB9Ci0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvcHRyX2hlbHBlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvcHRyX2hlbHBlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwN2E4OGEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL3B0cl9oZWxwZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotLyogYm9vc3QgcmFuZG9tL2RldGFpbC9wdHJfaGVscGVyLmhwcCBoZWFkZXIgZmlsZQotICoKLSAqIENvcHlyaWdodCBKZW5zIE1hdXJlciAyMDAyCi0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0gKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotICoKLSAqICRJZDogcHRyX2hlbHBlci5ocHAgMjQwOTYgMjAwNC0wNy0yNyAwMzo0MzozNFogZGdyZWdvciAkCi0gKgotICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9QVFJfSEVMUEVSX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5ET01fREVUQUlMX1BUUl9IRUxQRVJfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgcmFuZG9tIHsKLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyB0eXBlX3RyYWl0cyBjb3VsZCBoZWxwIGhlcmUsIGJ1dCBJIGRvbid0IHdhbnQgdG8gZGVwZW5kIG9uIHR5cGVfdHJhaXRzLgotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBwdHJfaGVscGVyCi17Ci0gIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotICB0eXBlZGVmIFQmIHJlZmVyZW5jZV90eXBlOwotICB0eXBlZGVmIGNvbnN0IFQmIHJ2YWx1ZV90eXBlOwotICBzdGF0aWMgcmVmZXJlbmNlX3R5cGUgcmVmKFQmIHIpIHsgcmV0dXJuIHI7IH0KLSAgc3RhdGljIGNvbnN0IFQmIHJlZihjb25zdCBUJiByKSB7IHJldHVybiByOyB9Ci19OwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgcHRyX2hlbHBlcjxUJj4KLXsKLSAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci0gIHR5cGVkZWYgVCYgcmVmZXJlbmNlX3R5cGU7Ci0gIHR5cGVkZWYgVCYgcnZhbHVlX3R5cGU7Ci0gIHN0YXRpYyByZWZlcmVuY2VfdHlwZSByZWYoVCYgcikgeyByZXR1cm4gcjsgfQotICBzdGF0aWMgY29uc3QgVCYgcmVmKGNvbnN0IFQmIHIpIHsgcmV0dXJuIHI7IH0KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgcHRyX2hlbHBlcjxUKj4KLXsKLSAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci0gIHR5cGVkZWYgVCYgcmVmZXJlbmNlX3R5cGU7Ci0gIHR5cGVkZWYgVCogcnZhbHVlX3R5cGU7Ci0gIHN0YXRpYyByZWZlcmVuY2VfdHlwZSByZWYoVCAqIHApIHsgcmV0dXJuICpwOyB9Ci0gIHN0YXRpYyBjb25zdCBUJiByZWYoY29uc3QgVCAqIHApIHsgcmV0dXJuICpwOyB9Ci19OwotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotfSAvLyBuYW1lc3BhY2UgcmFuZG9tCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vLwotLy8gTkROQk9PU1RfUkFORE9NX1BUUl9IRUxQRVJfU1BFQyAtLQotLy8KLS8vICBIZWxwZXIgbWFjcm8gZm9yIGJyb2tlbiBjb21waWxlcnMgZGVmaW5lcyBzcGVjaWFsaXphdGlvbnMgb2YKLS8vICBwdHJfaGVscGVyLgotLy8KLSNpZmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0jIGRlZmluZSBORE5CT09TVF9SQU5ET01fUFRSX0hFTFBFUl9TUEVDKFQpICAgICAgICAgICAgICAgIFwKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSByYW5kb20geyBuYW1lc3BhY2UgZGV0YWlsIHsgXAotdGVtcGxhdGU8PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1zdHJ1Y3QgcHRyX2hlbHBlcjxUJj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIHR5cGVkZWYgVCYgcmVmZXJlbmNlX3R5cGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgdHlwZWRlZiBUJiBydmFsdWVfdHlwZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBzdGF0aWMgcmVmZXJlbmNlX3R5cGUgcmVmKFQmIHIpIHsgcmV0dXJuIHI7IH0gICAgICAgICBcCi0gIHN0YXRpYyBjb25zdCBUJiByZWYoY29uc3QgVCYgcikgeyByZXR1cm4gcjsgfSAgICAgICAgIFwKLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZTw+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXN0cnVjdCBwdHJfaGVscGVyPFQqPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIHR5cGVkZWYgVCB2YWx1ZV90eXBlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgdHlwZWRlZiBUJiByZWZlcmVuY2VfdHlwZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB0eXBlZGVmIFQqIHJ2YWx1ZV90eXBlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIHN0YXRpYyByZWZlcmVuY2VfdHlwZSByZWYoVCAqIHApIHsgcmV0dXJuICpwOyB9ICAgICAgIFwKLSAgc3RhdGljIGNvbnN0IFQmIHJlZihjb25zdCBUICogcCkgeyByZXR1cm4gKnA7IH0gICAgICAgXAotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi19fX0KLSNlbHNlCi0jIGRlZmluZSBORE5CT09TVF9SQU5ET01fUFRSX0hFTFBFUl9TUEVDKFQpCi0jZW5kaWYgCi0KLSNlbmRpZiAvLyBORE5CT09TVF9SQU5ET01fREVUQUlMX1BUUl9IRUxQRVJfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvc2VlZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvc2VlZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmNWFjMmIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL3NlZWQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLS8qIGJvb3N0IHJhbmRvbS9kZXRhaWwvc2VlZC5ocHAgaGVhZGVyIGZpbGUKLSAqCi0gKiBDb3B5cmlnaHQgU3RldmVuIFdhdGFuYWJlIDIwMDkKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0gKgotICogJElkOiBzZWVkLmhwcCA3MTAxOCAyMDExLTA0LTA1IDIxOjI3OjUyWiBzdGV2ZW5fd2F0YW5hYmUgJAotICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9TRUVEX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5ET01fREVUQUlMX1NFRURfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0vLyBTdW4gc2VlbXMgdG8gaGF2ZSB0cm91YmxlIHdpdGggdGhlIHVzZSBvZiBTRklOQUUgZm9yIHRoZQotLy8gdGVtcGxhdGVkIGNvbnN0cnVjdG9yLiAgU28gZG9lcyBCb3JsYW5kLgotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NGSU5BRSkgJiYgIWRlZmluZWQoX19TVU5QUk9fQ0MpICYmICFkZWZpbmVkKF9fQk9STEFORENfXykKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZW5hYmxlX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcml0aG1ldGljLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSByYW5kb20gewotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgZGlzYWJsZV9zZWVkIDogbmRuYm9vc3Q6OmRpc2FibGVfaWY8bmRuYm9vc3Q6OmlzX2FyaXRobWV0aWM8VD4gPiB7fTsKLQotdGVtcGxhdGU8Y2xhc3MgRW5naW5lLCBjbGFzcyBUPgotc3RydWN0IGRpc2FibGVfY29uc3RydWN0b3IgOiBkaXNhYmxlX3NlZWQ8VD4ge307Ci0KLXRlbXBsYXRlPGNsYXNzIEVuZ2luZT4KLXN0cnVjdCBkaXNhYmxlX2NvbnN0cnVjdG9yPEVuZ2luZSwgRW5naW5lPiB7fTsKLQotI2RlZmluZSBORE5CT09TVF9SQU5ET01fREVUQUlMX0dFTkVSQVRPUl9DT05TVFJVQ1RPUihTZWxmLCBHZW5lcmF0b3IsIGdlbikgXAotICAgIHRlbXBsYXRlPGNsYXNzIEdlbmVyYXRvcj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGV4cGxpY2l0IFNlbGYoR2VuZXJhdG9yJiBnZW4sIHR5cGVuYW1lIDo6bmRuYm9vc3Q6OnJhbmRvbTo6ZGV0YWlsOjpkaXNhYmxlX2NvbnN0cnVjdG9yPFNlbGYsIEdlbmVyYXRvcj46OnR5cGUqID0gMCkKLQotI2RlZmluZSBORE5CT09TVF9SQU5ET01fREVUQUlMX0dFTkVSQVRPUl9TRUVEKFNlbGYsIEdlbmVyYXRvciwgZ2VuKSAgICBcCi0gICAgdGVtcGxhdGU8Y2xhc3MgR2VuZXJhdG9yPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIHNlZWQoR2VuZXJhdG9yJiBnZW4sIHR5cGVuYW1lIDo6bmRuYm9vc3Q6OnJhbmRvbTo6ZGV0YWlsOjpkaXNhYmxlX3NlZWQ8R2VuZXJhdG9yPjo6dHlwZSogPSAwKQotCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfU0VFRF9TRVFfQ09OU1RSVUNUT1IoU2VsZiwgU2VlZFNlcSwgc2VxKSAgICBcCi0gICAgdGVtcGxhdGU8Y2xhc3MgU2VlZFNlcT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZXhwbGljaXQgU2VsZihTZWVkU2VxJiBzZXEsIHR5cGVuYW1lIDo6bmRuYm9vc3Q6OnJhbmRvbTo6ZGV0YWlsOjpkaXNhYmxlX2NvbnN0cnVjdG9yPFNlbGYsIFNlZWRTZXE+Ojp0eXBlKiA9IDApCi0KLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9TRUVEX1NFUV9TRUVEKFNlbGYsIFNlZWRTZXEsIHNlcSkgICBcCi0gICAgdGVtcGxhdGU8Y2xhc3MgU2VlZFNlcT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgc2VlZChTZWVkU2VxJiBzZXEsIHR5cGVuYW1lIDo6bmRuYm9vc3Q6OnJhbmRvbTo6ZGV0YWlsOjpkaXNhYmxlX3NlZWQ8U2VlZFNlcT46OnR5cGUqID0gMCkKLQotI2RlZmluZSBORE5CT09TVF9SQU5ET01fREVUQUlMX0FSSVRITUVUSUNfQ09OU1RSVUNUT1IoU2VsZiwgVCwgeCkgIFwKLSAgICBleHBsaWNpdCBTZWxmKGNvbnN0IFQmIHgpCi0KLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9BUklUSE1FVElDX1NFRUQoU2VsZiwgVCwgeCkgXAotICAgIHZvaWQgc2VlZChjb25zdCBUJiB4KQotfQotfQotfQotCi0jZWxzZQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJpdGhtZXRpYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfR0VORVJBVE9SX0NPTlNUUlVDVE9SKFNlbGYsIEdlbmVyYXRvciwgZ2VuKSBcCi0gICAgU2VsZihTZWxmJiBvdGhlcikgeyAqdGhpcyA9IG90aGVyOyB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgU2VsZihjb25zdCBTZWxmJiBvdGhlcikgeyAqdGhpcyA9IG90aGVyOyB9ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdGVtcGxhdGU8Y2xhc3MgR2VuZXJhdG9yPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZXhwbGljaXQgU2VsZihHZW5lcmF0b3ImIGdlbikgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGJvb3N0X3JhbmRvbV9jb25zdHJ1Y3Rvcl9pbXBsKGdlbiwgOjpuZG5ib29zdDo6aXNfYXJpdGhtZXRpYzxHZW5lcmF0b3I+KCkpO1wKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZTxjbGFzcyBHZW5lcmF0b3I+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIGJvb3N0X3JhbmRvbV9jb25zdHJ1Y3Rvcl9pbXBsKEdlbmVyYXRvciYgZ2VuLCA6Om5kbmJvb3N0OjptcGw6OmZhbHNlXykKLQotI2RlZmluZSBORE5CT09TVF9SQU5ET01fREVUQUlMX0dFTkVSQVRPUl9TRUVEKFNlbGYsIEdlbmVyYXRvciwgZ2VuKSAgICBcCi0gICAgdGVtcGxhdGU8Y2xhc3MgR2VuZXJhdG9yPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIHNlZWQoR2VuZXJhdG9yJiBnZW4pIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBib29zdF9yYW5kb21fc2VlZF9pbXBsKGdlbiwgOjpuZG5ib29zdDo6aXNfYXJpdGhtZXRpYzxHZW5lcmF0b3I+KCkpO1wKLSAgICB9XAotICAgIHRlbXBsYXRlPGNsYXNzIEdlbmVyYXRvcj5cCi0gICAgdm9pZCBib29zdF9yYW5kb21fc2VlZF9pbXBsKEdlbmVyYXRvciYgZ2VuLCA6Om5kbmJvb3N0OjptcGw6OmZhbHNlXykKLQotI2RlZmluZSBORE5CT09TVF9SQU5ET01fREVUQUlMX1NFRURfU0VRX0NPTlNUUlVDVE9SKFNlbGYsIFNlZWRTZXEsIHNlcSkgICAgXAotICAgIFNlbGYoU2VsZiYgb3RoZXIpIHsgKnRoaXMgPSBvdGhlcjsgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIFNlbGYoY29uc3QgU2VsZiYgb3RoZXIpIHsgKnRoaXMgPSBvdGhlcjsgfSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlPGNsYXNzIFNlZWRTZXE+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGV4cGxpY2l0IFNlbGYoU2VlZFNlcSYgc2VxKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBib29zdF9yYW5kb21fY29uc3RydWN0b3JfaW1wbChzZXEsIDo6bmRuYm9vc3Q6OmlzX2FyaXRobWV0aWM8U2VlZFNlcT4oKSk7XAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlPGNsYXNzIFNlZWRTZXE+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgYm9vc3RfcmFuZG9tX2NvbnN0cnVjdG9yX2ltcGwoU2VlZFNlcSYgc2VxLCA6Om5kbmJvb3N0OjptcGw6OmZhbHNlXykKLQotI2RlZmluZSBORE5CT09TVF9SQU5ET01fREVUQUlMX1NFRURfU0VRX1NFRUQoU2VsZiwgU2VlZFNlcSwgc2VxKSAgICAgICAgICAgXAotICAgIHRlbXBsYXRlPGNsYXNzIFNlZWRTZXE+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgc2VlZChTZWVkU2VxJiBzZXEpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBib29zdF9yYW5kb21fc2VlZF9pbXBsKHNlcSwgOjpuZG5ib29zdDo6aXNfYXJpdGhtZXRpYzxTZWVkU2VxPigpKTsgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlPGNsYXNzIFNlZWRTZXE+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgYm9vc3RfcmFuZG9tX3NlZWRfaW1wbChTZWVkU2VxJiBzZXEsIDo6bmRuYm9vc3Q6Om1wbDo6ZmFsc2VfKQotCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfQVJJVEhNRVRJQ19DT05TVFJVQ1RPUihTZWxmLCBULCB4KSAgXAotICAgIGV4cGxpY2l0IFNlbGYoY29uc3QgVCYgeCkgeyBib29zdF9yYW5kb21fY29uc3RydWN0b3JfaW1wbCh4LCA6Om5kbmJvb3N0OjptcGw6OnRydWVfKCkpOyB9XAotICAgIHZvaWQgYm9vc3RfcmFuZG9tX2NvbnN0cnVjdG9yX2ltcGwoY29uc3QgVCYgeCwgOjpuZG5ib29zdDo6bXBsOjp0cnVlXykKLQotI2RlZmluZSBORE5CT09TVF9SQU5ET01fREVUQUlMX0FSSVRITUVUSUNfU0VFRChTZWxmLCBULCB4KSBcCi0gICAgdm9pZCBzZWVkKGNvbnN0IFQmIHgpIHsgYm9vc3RfcmFuZG9tX3NlZWRfaW1wbCh4LCA6Om5kbmJvb3N0OjptcGw6OnRydWVfKCkpOyB9XAotICAgIHZvaWQgYm9vc3RfcmFuZG9tX3NlZWRfaW1wbChjb25zdCBUJiB4LCA6Om5kbmJvb3N0OjptcGw6OnRydWVfKQotCi0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvc2VlZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9zZWVkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MTg0ZWRjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9zZWVkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzk3ICswLDAgQEAKLS8qIGJvb3N0IHJhbmRvbS9kZXRhaWwvc2VlZC5ocHAgaGVhZGVyIGZpbGUKLSAqCi0gKiBDb3B5cmlnaHQgU3RldmVuIFdhdGFuYWJlIDIwMDkKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0gKgotICogJElkOiBzZWVkX2ltcGwuaHBwIDcyOTUxIDIwMTEtMDctMDcgMDQ6NTc6MzdaIHN0ZXZlbl93YXRhbmFiZSAkCi0gKi8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5ET01fREVUQUlMX1NFRURfSU1QTF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9TRUVEX0lNUExfSFBQCi0KLSNpbmNsdWRlIDxzdGRleGNlcHQ+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY3N0ZGludC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL25vX3RyMS9jbWF0aC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW50ZWdlci9pbnRlZ2VyX21hc2suaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2ludGVnZXIvc3RhdGljX2xvZzIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NpZ25lZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfaW50ZWdyYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL21ha2VfdW5zaWduZWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmRvbS9kZXRhaWwvY29uc3RfbW9kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5kb20vZGV0YWlsL2ludGVnZXJfbG9nMi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZG9tL2RldGFpbC9zaWduZWRfdW5zaWduZWRfdG9vbHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmRvbS9kZXRhaWwvZ2VuZXJhdG9yX2JpdHMuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZG9tL2RldGFpbC9kaXNhYmxlX3dhcm5pbmdzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSByYW5kb20gewotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vIGZpbmRzIHRoZSBzZWVkIHR5cGUgb2YgYW4gZW5naW5lLCBnaXZlbiBpdHMKLS8vIHJlc3VsdF90eXBlLiAgSWYgdGhlIHJlc3VsdF90eXBlIGlzIGludGVncmFsCi0vLyB0aGUgc2VlZCB0eXBlIGlzIHRoZSBzYW1lLiAgSWYgdGhlIHJlc3VsdF90eXBlCi0vLyBpcyBmbG9hdGluZyBwb2ludCwgdGhlIHNlZWQgdHlwZSBpcyB1aW50MzJfdAotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBzZWVkX3R5cGUKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjptcGw6OmlmXzxuZG5ib29zdDo6aXNfaW50ZWdyYWw8VD4sCi0gICAgICAgIFQsCi0gICAgICAgIG5kbmJvb3N0Ojp1aW50MzJfdAotICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGludCBOPgotc3RydWN0IGNvbnN0X3Bvd19pbXBsCi17Ci0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBzdGF0aWMgVCBjYWxsKFQgYXJnLCBpbnQgbiwgVCByZXN1bHQpCi0gICAgewotICAgICAgICByZXR1cm4gY29uc3RfcG93X2ltcGw8TiAvIDI+OjpjYWxsKGFyZyAqIGFyZywgbiAvIDIsCi0gICAgICAgICAgICBuJTIgPT0gMD8gcmVzdWx0IDogcmVzdWx0ICogYXJnKTsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY29uc3RfcG93X2ltcGw8MD4KLXsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIHN0YXRpYyBUIGNhbGwoVCwgaW50LCBUIHJlc3VsdCkKLSAgICB7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotfTsKLQotLy8gcmVxdWlyZXMgTiBpcyBhbiB1cHBlciBib3VuZCBvbiBuCi10ZW1wbGF0ZTxpbnQgTiwgY2xhc3MgVD4KLWlubGluZSBUIGNvbnN0X3BvdyhUIGFyZywgaW50IG4pIHsgcmV0dXJuIGNvbnN0X3Bvd19pbXBsPE4+OjpjYWxsKGFyZywgbiwgVCgxKSk7IH0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZSBUIHBvdzIoaW50IG4pCi17Ci0gICAgdHlwZWRlZiB1bnNpZ25lZCBpbnRfdHlwZTsKLSAgICBjb25zdCBpbnQgbWF4X2JpdHMgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludF90eXBlPjo6ZGlnaXRzOwotICAgIFQgbXVsdGlwbGllciA9IFQoaW50X3R5cGUoMSkgPDwgKG1heF9iaXRzIC0gMSkpICogMjsKLSAgICByZXR1cm4gKGludF90eXBlKDEpIDw8IChuICUgbWF4X2JpdHMpKSAqCi0gICAgICAgIGNvbnN0X3BvdzxzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjpkaWdpdHMgLyBtYXhfYml0cz4obXVsdGlwbGllciwgbiAvIG1heF9iaXRzKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRW5naW5lLCBjbGFzcyBJdGVyPgotdm9pZCBnZW5lcmF0ZV9mcm9tX3JlYWwoRW5naW5lJiBlbmcsIEl0ZXIgYmVnaW4sIEl0ZXIgZW5kKQotewotICAgIHVzaW5nIHN0ZDo6Zm1vZDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEVuZ2luZTo6cmVzdWx0X3R5cGUgUmVhbFR5cGU7Ci0gICAgY29uc3QgaW50IEJpdHMgPSBkZXRhaWw6OmdlbmVyYXRvcl9iaXRzPEVuZ2luZT46OnZhbHVlKCk7Ci0gICAgaW50IHJlbWFpbmluZ19iaXRzID0gMDsKLSAgICBuZG5ib29zdDo6dWludF9sZWFzdDMyX3Qgc2F2ZWRfYml0cyA9IDA7Ci0gICAgUmVhbFR5cGUgbXVsdGlwbGllciA9IHBvdzI8UmVhbFR5cGU+KCBCaXRzKTsKLSAgICBSZWFsVHlwZSBtdWx0MzIgPSBSZWFsVHlwZSg0Mjk0OTY3Mjk2LjApOyAvLyAyXjMyCi0gICAgd2hpbGUodHJ1ZSkgewotICAgICAgICBSZWFsVHlwZSB2YWwgPSBlbmcoKSAqIG11bHRpcGxpZXI7Ci0gICAgICAgIGludCBhdmFpbGFibGVfYml0cyA9IEJpdHM7Ci0gICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgY29tcGlsZXIgY2FuIG9wdGltaXplIHRoaXMgb3V0Ci0gICAgICAgIC8vIGlmIGl0IGlzbid0IHBvc3NpYmxlLgotICAgICAgICBpZihCaXRzIDwgMzIgJiYgYXZhaWxhYmxlX2JpdHMgPCAzMiAtIHJlbWFpbmluZ19iaXRzKSB7Ci0gICAgICAgICAgICBzYXZlZF9iaXRzIHw9IG5kbmJvb3N0Ojp1aW50X2xlYXN0MzJfdCh2YWwpIDw8IHJlbWFpbmluZ19iaXRzOwotICAgICAgICAgICAgcmVtYWluaW5nX2JpdHMgKz0gQml0czsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIElmIEJpdHMgPCAzMiwgdGhlbiByZW1haW5pbmdfYml0cyAhPSAwLCBzaW5jZQotICAgICAgICAgICAgLy8gaWYgcmVtYWluaW5nX2JpdHMgPT0gMCwgYXZhaWxhYmxlX2JpdHMgPCAzMiAtIDAsCi0gICAgICAgICAgICAvLyBhbmQgd2Ugd29uJ3QgZ2V0IGhlcmUgdG8gYmVnaW4gd2l0aC4KLSAgICAgICAgICAgIGlmKEJpdHMgPCAzMiB8fCByZW1haW5pbmdfYml0cyAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVpbnRfbGVhc3QzMl90IGRpdmlzb3IgPQotICAgICAgICAgICAgICAgICAgICAobmRuYm9vc3Q6OnVpbnRfbGVhc3QzMl90KDEpIDw8ICgzMiAtIHJlbWFpbmluZ19iaXRzKSk7Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVpbnRfbGVhc3QzMl90IGV4dHJhX2JpdHMgPSBuZG5ib29zdDo6dWludF9sZWFzdDMyX3QoZm1vZCh2YWwsIG11bHQzMikpICYgKGRpdmlzb3IgLSAxKTsKLSAgICAgICAgICAgICAgICB2YWwgPSB2YWwgLyBkaXZpc29yOwotICAgICAgICAgICAgICAgICpiZWdpbisrID0gc2F2ZWRfYml0cyB8IChleHRyYV9iaXRzIDw8IHJlbWFpbmluZ19iaXRzKTsKLSAgICAgICAgICAgICAgICBpZihiZWdpbiA9PSBlbmQpIHJldHVybjsKLSAgICAgICAgICAgICAgICBhdmFpbGFibGVfYml0cyAtPSAzMiAtIHJlbWFpbmluZ19iaXRzOwotICAgICAgICAgICAgICAgIHJlbWFpbmluZ19iaXRzID0gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIElmIEJpdHMgPCAzMiB3ZSBzaG91bGQgbmV2ZXIgZW50ZXIgdGhpcyBsb29wCi0gICAgICAgICAgICBpZihCaXRzID49IDMyKSB7Ci0gICAgICAgICAgICAgICAgZm9yKDsgYXZhaWxhYmxlX2JpdHMgPj0gMzI7IGF2YWlsYWJsZV9iaXRzIC09IDMyKSB7Ci0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1aW50X2xlYXN0MzJfdCB3b3JkID0gbmRuYm9vc3Q6OnVpbnRfbGVhc3QzMl90KGZtb2QodmFsLCBtdWx0MzIpKTsKLSAgICAgICAgICAgICAgICAgICAgdmFsIC89IG11bHQzMjsKLSAgICAgICAgICAgICAgICAgICAgKmJlZ2luKysgPSB3b3JkOwotICAgICAgICAgICAgICAgICAgICBpZihiZWdpbiA9PSBlbmQpIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZW1haW5pbmdfYml0cyA9IGF2YWlsYWJsZV9iaXRzOwotICAgICAgICAgICAgc2F2ZWRfYml0cyA9IHN0YXRpY19jYXN0PG5kbmJvb3N0Ojp1aW50X2xlYXN0MzJfdD4odmFsKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdGVtcGxhdGU8Y2xhc3MgRW5naW5lLCBjbGFzcyBJdGVyPgotdm9pZCBnZW5lcmF0ZV9mcm9tX2ludChFbmdpbmUmIGVuZywgSXRlciBiZWdpbiwgSXRlciBlbmQpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBFbmdpbmU6OnJlc3VsdF90eXBlIEludFR5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6bWFrZV91bnNpZ25lZDxJbnRUeXBlPjo6dHlwZSB1bnNpZ25lZF90eXBlOwotICAgIGludCByZW1haW5pbmdfYml0cyA9IDA7Ci0gICAgbmRuYm9vc3Q6OnVpbnRfbGVhc3QzMl90IHNhdmVkX2JpdHMgPSAwOwotICAgIHVuc2lnbmVkX3R5cGUgcmFuZ2UgPSBuZG5ib29zdDo6cmFuZG9tOjpkZXRhaWw6OnN1YnRyYWN0PEludFR5cGU+KCkoKGVuZy5tYXgpKCksIChlbmcubWluKSgpKTsKLQotICAgIGludCBiaXRzID0KLSAgICAgICAgKHJhbmdlID09IChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkX3R5cGU+OjptYXgpKCkpID8KLSAgICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWRfdHlwZT46OmRpZ2l0cyA6Ci0gICAgICAgICAgICBkZXRhaWw6OmludGVnZXJfbG9nMihyYW5nZSArIDEpOwotCi0gICAgewotICAgICAgICBpbnQgZGlzY2FyZGVkX2JpdHMgPSBkZXRhaWw6OmludGVnZXJfbG9nMihiaXRzKTsKLSAgICAgICAgdW5zaWduZWRfdHlwZSBleGNlc3MgPSAocmFuZ2UgKyAxKSA+PiAoYml0cyAtIGRpc2NhcmRlZF9iaXRzKTsKLSAgICAgICAgaWYoZXhjZXNzICE9IDApIHsKLSAgICAgICAgICAgIGludCBleHRyYV9iaXRzID0gZGV0YWlsOjppbnRlZ2VyX2xvZzIoKGV4Y2VzcyAtIDEpIF4gZXhjZXNzKTsKLSAgICAgICAgICAgIGJpdHMgPSBiaXRzIC0gZGlzY2FyZGVkX2JpdHMgKyBleHRyYV9iaXRzOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdW5zaWduZWRfdHlwZSBtYXNrID0gKHN0YXRpY19jYXN0PHVuc2lnbmVkX3R5cGU+KDIpIDw8IChiaXRzIC0gMSkpIC0gMTsKLSAgICB1bnNpZ25lZF90eXBlIGxpbWl0ID0gKChyYW5nZSArIDEpICYgfm1hc2spIC0gMTsKLQotICAgIHdoaWxlKHRydWUpIHsKLSAgICAgICAgdW5zaWduZWRfdHlwZSB2YWw7Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIHZhbCA9IG5kbmJvb3N0OjpyYW5kb206OmRldGFpbDo6c3VidHJhY3Q8SW50VHlwZT4oKShlbmcoKSwgKGVuZy5taW4pKCkpOwotICAgICAgICB9IHdoaWxlKGxpbWl0ICE9IHJhbmdlICYmIHZhbCA+IGxpbWl0KTsKLSAgICAgICAgdmFsICY9IG1hc2s7Ci0gICAgICAgIGludCBhdmFpbGFibGVfYml0cyA9IGJpdHM7Ci0gICAgICAgIGlmKGF2YWlsYWJsZV9iaXRzID09IDMyKSB7Ci0gICAgICAgICAgICAqYmVnaW4rKyA9IHN0YXRpY19jYXN0PG5kbmJvb3N0Ojp1aW50X2xlYXN0MzJfdD4odmFsKSAmIDB4RkZGRkZGRkZ1OwotICAgICAgICAgICAgaWYoYmVnaW4gPT0gZW5kKSByZXR1cm47Ci0gICAgICAgIH0gZWxzZSBpZihhdmFpbGFibGVfYml0cyAlIDMyID09IDApIHsKLSAgICAgICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBhdmFpbGFibGVfYml0cyAvIDMyOyArK2kpIHsKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dWludF9sZWFzdDMyX3Qgd29yZCA9IG5kbmJvb3N0Ojp1aW50X2xlYXN0MzJfdCh2YWwpICYgMHhGRkZGRkZGRnU7Ci0gICAgICAgICAgICAgICAgaW50IHN1cHJlc3Nfd2FybmluZyA9IChiaXRzID49IDMyKTsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9BU1NFUlQoc3VwcmVzc193YXJuaW5nID09IDEpOwotICAgICAgICAgICAgICAgIHZhbCA+Pj0gKDMyICogc3VwcmVzc193YXJuaW5nKTsKLSAgICAgICAgICAgICAgICAqYmVnaW4rKyA9IHdvcmQ7Ci0gICAgICAgICAgICAgICAgaWYoYmVnaW4gPT0gZW5kKSByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZihiaXRzIDwgMzIgJiYgYXZhaWxhYmxlX2JpdHMgPCAzMiAtIHJlbWFpbmluZ19iaXRzKSB7Ci0gICAgICAgICAgICBzYXZlZF9iaXRzIHw9IG5kbmJvb3N0Ojp1aW50X2xlYXN0MzJfdCh2YWwpIDw8IHJlbWFpbmluZ19iaXRzOwotICAgICAgICAgICAgcmVtYWluaW5nX2JpdHMgKz0gYml0czsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmKGJpdHMgPCAzMiB8fCByZW1haW5pbmdfYml0cyAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVpbnRfbGVhc3QzMl90IGV4dHJhX2JpdHMgPSBuZG5ib29zdDo6dWludF9sZWFzdDMyX3QodmFsKSAmICgobmRuYm9vc3Q6OnVpbnRfbGVhc3QzMl90KDEpIDw8ICgzMiAtIHJlbWFpbmluZ19iaXRzKSkgLSAxKTsKLSAgICAgICAgICAgICAgICB2YWwgPj49IDMyIC0gcmVtYWluaW5nX2JpdHM7Ci0gICAgICAgICAgICAgICAgKmJlZ2luKysgPSBzYXZlZF9iaXRzIHwgKGV4dHJhX2JpdHMgPDwgcmVtYWluaW5nX2JpdHMpOwotICAgICAgICAgICAgICAgIGlmKGJlZ2luID09IGVuZCkgcmV0dXJuOwotICAgICAgICAgICAgICAgIGF2YWlsYWJsZV9iaXRzIC09IDMyIC0gcmVtYWluaW5nX2JpdHM7Ci0gICAgICAgICAgICAgICAgcmVtYWluaW5nX2JpdHMgPSAwOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYoYml0cyA+PSAzMikgewotICAgICAgICAgICAgICAgIGZvcig7IGF2YWlsYWJsZV9iaXRzID49IDMyOyBhdmFpbGFibGVfYml0cyAtPSAzMikgewotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dWludF9sZWFzdDMyX3Qgd29yZCA9IG5kbmJvb3N0Ojp1aW50X2xlYXN0MzJfdCh2YWwpICYgMHhGRkZGRkZGRnU7Ci0gICAgICAgICAgICAgICAgICAgIGludCBzdXByZXNzX3dhcm5pbmcgPSAoYml0cyA+PSAzMik7Ci0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVChzdXByZXNzX3dhcm5pbmcgPT0gMSk7Ci0gICAgICAgICAgICAgICAgICAgIHZhbCA+Pj0gKDMyICogc3VwcmVzc193YXJuaW5nKTsKLSAgICAgICAgICAgICAgICAgICAgKmJlZ2luKysgPSB3b3JkOwotICAgICAgICAgICAgICAgICAgICBpZihiZWdpbiA9PSBlbmQpIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZW1haW5pbmdfYml0cyA9IGF2YWlsYWJsZV9iaXRzOwotICAgICAgICAgICAgc2F2ZWRfYml0cyA9IHN0YXRpY19jYXN0PG5kbmJvb3N0Ojp1aW50X2xlYXN0MzJfdD4odmFsKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdGVtcGxhdGU8Y2xhc3MgRW5naW5lLCBjbGFzcyBJdGVyPgotdm9pZCBnZW5lcmF0ZV9pbXBsKEVuZ2luZSYgZW5nLCBJdGVyIGZpcnN0LCBJdGVyIGxhc3QsIG5kbmJvb3N0OjptcGw6OnRydWVfKQotewotICAgIHJldHVybiBkZXRhaWw6OmdlbmVyYXRlX2Zyb21faW50KGVuZywgZmlyc3QsIGxhc3QpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBFbmdpbmUsIGNsYXNzIEl0ZXI+Ci12b2lkIGdlbmVyYXRlX2ltcGwoRW5naW5lJiBlbmcsIEl0ZXIgZmlyc3QsIEl0ZXIgbGFzdCwgbmRuYm9vc3Q6Om1wbDo6ZmFsc2VfKQotewotICAgIHJldHVybiBkZXRhaWw6OmdlbmVyYXRlX2Zyb21fcmVhbChlbmcsIGZpcnN0LCBsYXN0KTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRW5naW5lLCBjbGFzcyBJdGVyPgotdm9pZCBnZW5lcmF0ZShFbmdpbmUmIGVuZywgSXRlciBmaXJzdCwgSXRlciBsYXN0KQotewotICAgIHJldHVybiBkZXRhaWw6OmdlbmVyYXRlX2ltcGwoZW5nLCBmaXJzdCwgbGFzdCwgbmRuYm9vc3Q6OmlzX2ludGVncmFsPHR5cGVuYW1lIEVuZ2luZTo6cmVzdWx0X3R5cGU+KCkpOwotfQotCi0KLQotdGVtcGxhdGU8Y2xhc3MgSW50VHlwZSwgSW50VHlwZSBtLCBjbGFzcyBTZWVkU2VxPgotSW50VHlwZSBzZWVkX29uZV9pbnQoU2VlZFNlcSYgc2VxKQotewotICAgIHN0YXRpYyBjb25zdCBpbnQgbG9nID0gOjpuZG5ib29zdDo6bXBsOjppZl9jPChtID09IDApLAotICAgICAgICA6Om5kbmJvb3N0OjptcGw6OmludF88KDo6c3RkOjpudW1lcmljX2xpbWl0czxJbnRUeXBlPjo6ZGlnaXRzKT4sCi0gICAgICAgIDo6bmRuYm9vc3Q6OnN0YXRpY19sb2cyPG0+ID46OnR5cGU6OnZhbHVlOwotICAgIHN0YXRpYyBjb25zdCBpbnQgayA9Ci0gICAgICAgIChsb2cgKyAoKH4oc3RhdGljX2Nhc3Q8SW50VHlwZT4oMikgPDwgKGxvZyAtIDEpKSAmIG0pPyAzMiA6IDMxKSkgLyAzMjsKLSAgICA6Om5kbmJvb3N0Ojp1aW50X2xlYXN0MzJfdCBhcnJheVtsb2cgLyAzMiArIDRdOwotICAgIHNlcS5nZW5lcmF0ZSgmYXJyYXlbMF0sICZhcnJheVswXSArIGsgKyAzKTsKLSAgICBJbnRUeXBlIHMgPSAwOwotICAgIGZvcihpbnQgaiA9IDA7IGogPCBrOyArK2opIHsKLSAgICAgICAgSW50VHlwZSBkaWdpdCA9IGNvbnN0X21vZDxJbnRUeXBlLCBtPjo6YXBwbHkoSW50VHlwZShhcnJheVtqKzNdKSk7Ci0gICAgICAgIEludFR5cGUgbXVsdCA9IEludFR5cGUoMSkgPDwgMzIqajsKLSAgICAgICAgcyA9IGNvbnN0X21vZDxJbnRUeXBlLCBtPjo6bXVsdF9hZGQobXVsdCwgZGlnaXQsIHMpOwotICAgIH0KLSAgICByZXR1cm4gczsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgSW50VHlwZSwgSW50VHlwZSBtLCBjbGFzcyBJdGVyPgotSW50VHlwZSBnZXRfb25lX2ludChJdGVyJiBmaXJzdCwgSXRlciBsYXN0KQotewotICAgIHN0YXRpYyBjb25zdCBpbnQgbG9nID0gOjpuZG5ib29zdDo6bXBsOjppZl9jPChtID09IDApLAotICAgICAgICA6Om5kbmJvb3N0OjptcGw6OmludF88KDo6c3RkOjpudW1lcmljX2xpbWl0czxJbnRUeXBlPjo6ZGlnaXRzKT4sCi0gICAgICAgIDo6bmRuYm9vc3Q6OnN0YXRpY19sb2cyPG0+ID46OnR5cGU6OnZhbHVlOwotICAgIHN0YXRpYyBjb25zdCBpbnQgayA9Ci0gICAgICAgIChsb2cgKyAoKH4oc3RhdGljX2Nhc3Q8SW50VHlwZT4oMikgPDwgKGxvZyAtIDEpKSAmIG0pPyAzMiA6IDMxKSkgLyAzMjsKLSAgICBJbnRUeXBlIHMgPSAwOwotICAgIGZvcihpbnQgaiA9IDA7IGogPCBrOyArK2opIHsKLSAgICAgICAgaWYoZmlyc3QgPT0gbGFzdCkgewotICAgICAgICAgICAgdGhyb3cgOjpzdGQ6OmludmFsaWRfYXJndW1lbnQoIk5vdCBlbm91Z2ggZWxlbWVudHMgaW4gY2FsbCB0byBzZWVkLiIpOwotICAgICAgICB9Ci0gICAgICAgIEludFR5cGUgZGlnaXQgPSBjb25zdF9tb2Q8SW50VHlwZSwgbT46OmFwcGx5KEludFR5cGUoKmZpcnN0KyspKTsKLSAgICAgICAgSW50VHlwZSBtdWx0ID0gSW50VHlwZSgxKSA8PCAzMipqOwotICAgICAgICBzID0gY29uc3RfbW9kPEludFR5cGUsIG0+OjptdWx0X2FkZChtdWx0LCBkaWdpdCwgcyk7Ci0gICAgfQotICAgIHJldHVybiBzOwotfQotCi0vLyBUT0RPOiB3b3JrIGluLXBsYWNlIHdoZW5ldmVyIHBvc3NpYmxlCi10ZW1wbGF0ZTxpbnQgdywgc3RkOjpzaXplX3QgbiwgY2xhc3MgU2VlZFNlcSwgY2xhc3MgVUludFR5cGU+Ci12b2lkIHNlZWRfYXJyYXlfaW50X2ltcGwoU2VlZFNlcSYgc2VxLCBVSW50VHlwZSAoJngpW25dKQotewotICAgIG5kbmJvb3N0Ojp1aW50X2xlYXN0MzJfdCBzdG9yYWdlWygodyszMSkvMzIpICogbl07Ci0gICAgc2VxLmdlbmVyYXRlKCZzdG9yYWdlWzBdLCAmc3RvcmFnZVswXSArICgodyszMSkvMzIpICogbik7Ci0gICAgZm9yKHN0ZDo6c2l6ZV90IGogPSAwOyBqIDwgbjsgaisrKSB7Ci0gICAgICAgIFVJbnRUeXBlIHZhbCA9IDA7Ci0gICAgICAgIGZvcihzdGQ6OnNpemVfdCBrID0gMDsgayA8ICh3KzMxKS8zMjsgKytrKSB7Ci0gICAgICAgICAgICB2YWwgKz0gc3RhdGljX2Nhc3Q8VUludFR5cGU+KHN0b3JhZ2VbKHcrMzEpLzMyKmogKyBrXSkgPDwgMzIqazsKLSAgICAgICAgfQotICAgICAgICB4W2pdID0gdmFsICYgOjpuZG5ib29zdDo6bG93X2JpdHNfbWFza190PHc+OjpzaWdfYml0czsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPGludCB3LCBzdGQ6OnNpemVfdCBuLCBjbGFzcyBTZWVkU2VxLCBjbGFzcyBJbnRUeXBlPgotaW5saW5lIHZvaWQgc2VlZF9hcnJheV9pbnRfaW1wbChTZWVkU2VxJiBzZXEsIEludFR5cGUgKCZ4KVtuXSwgbmRuYm9vc3Q6Om1wbDo6dHJ1ZV8pCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6bWFrZV91bnNpZ25lZDxJbnRUeXBlPjo6dHlwZSB1bnNpZ25lZF9hcnJheVtuXTsKLSAgICBzZWVkX2FycmF5X2ludF9pbXBsPHc+KHNlcSwgcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZF9hcnJheSY+KHgpKTsKLX0KLQotdGVtcGxhdGU8aW50IHcsIHN0ZDo6c2l6ZV90IG4sIGNsYXNzIFNlZWRTZXEsIGNsYXNzIEludFR5cGU+Ci1pbmxpbmUgdm9pZCBzZWVkX2FycmF5X2ludF9pbXBsKFNlZWRTZXEmIHNlcSwgSW50VHlwZSAoJngpW25dLCBuZG5ib29zdDo6bXBsOjpmYWxzZV8pCi17Ci0gICAgc2VlZF9hcnJheV9pbnRfaW1wbDx3PihzZXEsIHgpOwotfQotCi10ZW1wbGF0ZTxpbnQgdywgc3RkOjpzaXplX3QgbiwgY2xhc3MgU2VlZFNlcSwgY2xhc3MgSW50VHlwZT4KLWlubGluZSB2b2lkIHNlZWRfYXJyYXlfaW50KFNlZWRTZXEmIHNlcSwgSW50VHlwZSAoJngpW25dKQotewotICAgIHNlZWRfYXJyYXlfaW50X2ltcGw8dz4oc2VxLCB4LCBuZG5ib29zdDo6aXNfc2lnbmVkPEludFR5cGU+KCkpOwotfQotCi10ZW1wbGF0ZTxpbnQgdywgc3RkOjpzaXplX3QgbiwgY2xhc3MgSXRlciwgY2xhc3MgVUludFR5cGU+Ci12b2lkIGZpbGxfYXJyYXlfaW50X2ltcGwoSXRlciYgZmlyc3QsIEl0ZXIgbGFzdCwgVUludFR5cGUgKCZ4KVtuXSkKLXsKLSAgICBmb3Ioc3RkOjpzaXplX3QgaiA9IDA7IGogPCBuOyBqKyspIHsKLSAgICAgICAgVUludFR5cGUgdmFsID0gMDsKLSAgICAgICAgZm9yKHN0ZDo6c2l6ZV90IGsgPSAwOyBrIDwgKHcrMzEpLzMyOyArK2spIHsKLSAgICAgICAgICAgIGlmKGZpcnN0ID09IGxhc3QpIHsKLSAgICAgICAgICAgICAgICB0aHJvdyBzdGQ6OmludmFsaWRfYXJndW1lbnQoIk5vdCBlbm91Z2ggZWxlbWVudHMgaW4gY2FsbCB0byBzZWVkLiIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdmFsICs9IHN0YXRpY19jYXN0PFVJbnRUeXBlPigqZmlyc3QrKykgPDwgMzIqazsKLSAgICAgICAgfQotICAgICAgICB4W2pdID0gdmFsICYgOjpuZG5ib29zdDo6bG93X2JpdHNfbWFza190PHc+OjpzaWdfYml0czsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPGludCB3LCBzdGQ6OnNpemVfdCBuLCBjbGFzcyBJdGVyLCBjbGFzcyBJbnRUeXBlPgotaW5saW5lIHZvaWQgZmlsbF9hcnJheV9pbnRfaW1wbChJdGVyJiBmaXJzdCwgSXRlciBsYXN0LCBJbnRUeXBlICgmeClbbl0sIG5kbmJvb3N0OjptcGw6OnRydWVfKQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6Om1ha2VfdW5zaWduZWQ8SW50VHlwZT46OnR5cGUgdW5zaWduZWRfYXJyYXlbbl07Ci0gICAgZmlsbF9hcnJheV9pbnRfaW1wbDx3PihmaXJzdCwgbGFzdCwgcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZF9hcnJheSY+KHgpKTsKLX0KLQotdGVtcGxhdGU8aW50IHcsIHN0ZDo6c2l6ZV90IG4sIGNsYXNzIEl0ZXIsIGNsYXNzIEludFR5cGU+Ci1pbmxpbmUgdm9pZCBmaWxsX2FycmF5X2ludF9pbXBsKEl0ZXImIGZpcnN0LCBJdGVyIGxhc3QsIEludFR5cGUgKCZ4KVtuXSwgbmRuYm9vc3Q6Om1wbDo6ZmFsc2VfKQotewotICAgIGZpbGxfYXJyYXlfaW50X2ltcGw8dz4oZmlyc3QsIGxhc3QsIHgpOwotfQotCi10ZW1wbGF0ZTxpbnQgdywgc3RkOjpzaXplX3QgbiwgY2xhc3MgSXRlciwgY2xhc3MgSW50VHlwZT4KLWlubGluZSB2b2lkIGZpbGxfYXJyYXlfaW50KEl0ZXImIGZpcnN0LCBJdGVyIGxhc3QsIEludFR5cGUgKCZ4KVtuXSkKLXsKLSAgICBmaWxsX2FycmF5X2ludF9pbXBsPHc+KGZpcnN0LCBsYXN0LCB4LCBuZG5ib29zdDo6aXNfc2lnbmVkPEludFR5cGU+KCkpOwotfQotCi10ZW1wbGF0ZTxpbnQgdywgc3RkOjpzaXplX3QgbiwgY2xhc3MgUmVhbFR5cGU+Ci12b2lkIHNlZWRfYXJyYXlfcmVhbF9pbXBsKGNvbnN0IG5kbmJvb3N0Ojp1aW50X2xlYXN0MzJfdCogc3RvcmFnZSwgUmVhbFR5cGUgKCZ4KVtuXSkKLXsKLSAgICBuZG5ib29zdDo6dWludF9sZWFzdDMyX3QgbWFzayA9IH4oKH5uZG5ib29zdDo6dWludF9sZWFzdDMyX3QoMCkpIDw8ICh3JTMyKSk7Ci0gICAgUmVhbFR5cGUgdHdvMzIgPSA0Mjk0OTY3Mjk2LjA7Ci0gICAgY29uc3QgUmVhbFR5cGUgZGl2aXNvciA9IFJlYWxUeXBlKDEpL2RldGFpbDo6cG93MjxSZWFsVHlwZT4odyk7Ci0gICAgdW5zaWduZWQgaW50IGo7Ci0gICAgZm9yKGogPSAwOyBqIDwgbjsgKytqKSB7Ci0gICAgICAgIFJlYWxUeXBlIHZhbCA9IFJlYWxUeXBlKDApOwotICAgICAgICBSZWFsVHlwZSBtdWx0ID0gZGl2aXNvcjsKLSAgICAgICAgZm9yKGludCBrID0gMDsgayA8IHcvMzI7ICsraykgewotICAgICAgICAgICAgdmFsICs9ICpzdG9yYWdlKysgKiBtdWx0OwotICAgICAgICAgICAgbXVsdCAqPSB0d28zMjsKLSAgICAgICAgfQotICAgICAgICBpZihtYXNrICE9IDApIHsKLSAgICAgICAgICAgIHZhbCArPSAoKnN0b3JhZ2UrKyAmIG1hc2spICogbXVsdDsKLSAgICAgICAgfQotICAgICAgICBORE5CT09TVF9BU1NFUlQodmFsID49IDApOwotICAgICAgICBORE5CT09TVF9BU1NFUlQodmFsIDwgMSk7Ci0gICAgICAgIHhbal0gPSB2YWw7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTxpbnQgdywgc3RkOjpzaXplX3QgbiwgY2xhc3MgU2VlZFNlcSwgY2xhc3MgUmVhbFR5cGU+Ci12b2lkIHNlZWRfYXJyYXlfcmVhbChTZWVkU2VxJiBzZXEsIFJlYWxUeXBlICgmeClbbl0pCi17Ci0gICAgdXNpbmcgc3RkOjpwb3c7Ci0gICAgbmRuYm9vc3Q6OnVpbnRfbGVhc3QzMl90IHN0b3JhZ2VbKCh3KzMxKS8zMikgKiBuXTsKLSAgICBzZXEuZ2VuZXJhdGUoJnN0b3JhZ2VbMF0sICZzdG9yYWdlWzBdICsgKCh3KzMxKS8zMikgKiBuKTsKLSAgICBzZWVkX2FycmF5X3JlYWxfaW1wbDx3PihzdG9yYWdlLCB4KTsKLX0KLQotdGVtcGxhdGU8aW50IHcsIHN0ZDo6c2l6ZV90IG4sIGNsYXNzIEl0ZXIsIGNsYXNzIFJlYWxUeXBlPgotdm9pZCBmaWxsX2FycmF5X3JlYWwoSXRlciYgZmlyc3QsIEl0ZXIgbGFzdCwgUmVhbFR5cGUgKCZ4KVtuXSkKLXsKLSAgICBuZG5ib29zdDo6dWludF9sZWFzdDMyX3QgbWFzayA9IH4oKH5uZG5ib29zdDo6dWludF9sZWFzdDMyX3QoMCkpIDw8ICh3JTMyKSk7Ci0gICAgUmVhbFR5cGUgdHdvMzIgPSA0Mjk0OTY3Mjk2LjA7Ci0gICAgY29uc3QgUmVhbFR5cGUgZGl2aXNvciA9IFJlYWxUeXBlKDEpL2RldGFpbDo6cG93MjxSZWFsVHlwZT4odyk7Ci0gICAgdW5zaWduZWQgaW50IGo7Ci0gICAgZm9yKGogPSAwOyBqIDwgbjsgKytqKSB7Ci0gICAgICAgIFJlYWxUeXBlIHZhbCA9IFJlYWxUeXBlKDApOwotICAgICAgICBSZWFsVHlwZSBtdWx0ID0gZGl2aXNvcjsKLSAgICAgICAgZm9yKGludCBrID0gMDsgayA8IHcvMzI7ICsraywgKytmaXJzdCkgewotICAgICAgICAgICAgaWYoZmlyc3QgPT0gbGFzdCkgdGhyb3cgc3RkOjppbnZhbGlkX2FyZ3VtZW50KCJOb3QgZW5vdWdoIGVsZW1lbnRzIGluIGNhbGwgdG8gc2VlZC4iKTsKLSAgICAgICAgICAgIHZhbCArPSAqZmlyc3QgKiBtdWx0OwotICAgICAgICAgICAgbXVsdCAqPSB0d28zMjsKLSAgICAgICAgfQotICAgICAgICBpZihtYXNrICE9IDApIHsKLSAgICAgICAgICAgIGlmKGZpcnN0ID09IGxhc3QpIHRocm93IHN0ZDo6aW52YWxpZF9hcmd1bWVudCgiTm90IGVub3VnaCBlbGVtZW50cyBpbiBjYWxsIHRvIHNlZWQuIik7Ci0gICAgICAgICAgICB2YWwgKz0gKCpmaXJzdCAmIG1hc2spICogbXVsdDsKLSAgICAgICAgICAgICsrZmlyc3Q7Ci0gICAgICAgIH0KLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKHZhbCA+PSAwKTsKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKHZhbCA8IDEpOwotICAgICAgICB4W2pdID0gdmFsOwotICAgIH0KLX0KLQotfQotfQotfQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZG9tL2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9zaWduZWRfdW5zaWduZWRfdG9vbHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL3NpZ25lZF91bnNpZ25lZF90b29scy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmY2IxYjYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL3NpZ25lZF91bnNpZ25lZF90b29scy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi0vKiBib29zdCByYW5kb20vZGV0YWlsL3NpZ25lZF91bnNpZ25lZF90b29scy5ocHAgaGVhZGVyIGZpbGUKLSAqCi0gKiBDb3B5cmlnaHQgSmVucyBNYXVyZXIgMjAwNgotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0gKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLSAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfU0lHTkVEX1VOU0lHTkVEX1RPT0xTCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfU0lHTkVEX1VOU0lHTkVEX1RPT0xTCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9saW1pdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvbWFrZV91bnNpZ25lZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgcmFuZG9tIHsKLW5hbWVzcGFjZSBkZXRhaWwgewotCi0KLS8qCi0gKiBDb21wdXRlIHggLSB5LCB3ZSBrbm93IHRoYXQgeCA+PSB5LCByZXR1cm4gYW4gdW5zaWduZWQgdmFsdWUuCi0gKi8KLQotdGVtcGxhdGU8Y2xhc3MgVCwgYm9vbCBzZ24gPSBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojppc19zaWduZWQ+Ci1zdHJ1Y3Qgc3VidHJhY3QgeyB9OwotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IHN1YnRyYWN0PFQsIC8qIHNpZ25lZCAqLyBmYWxzZT4KLXsKLSAgdHlwZWRlZiBUIHJlc3VsdF90eXBlOwotICByZXN1bHRfdHlwZSBvcGVyYXRvcigpKFQgeCwgVCB5KSB7IHJldHVybiB4IC0geTsgfQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBzdWJ0cmFjdDxULCAvKiBzaWduZWQgKi8gdHJ1ZT4KLXsKLSAgdHlwZWRlZiB0eXBlbmFtZSBtYWtlX3Vuc2lnbmVkPFQ+Ojp0eXBlIHJlc3VsdF90eXBlOwotICByZXN1bHRfdHlwZSBvcGVyYXRvcigpKFQgeCwgVCB5KQotICB7Ci0gICAgaWYgKHkgPj0gMCkgICAvLyBiZWNhdXNlIHggPj0geSwgaXQgZm9sbG93cyB0aGF0IHggPj0gMCwgdG9vCi0gICAgICByZXR1cm4gcmVzdWx0X3R5cGUoeCkgLSByZXN1bHRfdHlwZSh5KTsKLSAgICBpZiAoeCA+PSAwKSAgIC8vIHkgPCAwCi0gICAgICAvLyBhdm9pZCB0aGUgbmFzdHkgdHdvJ3MgY29tcGxlbWVudCBjYXNlIGZvciB5ID09IG1pbigpCi0gICAgICByZXR1cm4gcmVzdWx0X3R5cGUoeCkgKyByZXN1bHRfdHlwZSgtKHkrMSkpICsgMTsKLSAgICAvLyBib3RoIHggYW5kIHkgYXJlIG5lZ2F0aXZlOiBubyBzaWduZWQgb3ZlcmZsb3cKLSAgICByZXR1cm4gcmVzdWx0X3R5cGUoeCAtIHkpOwotICB9Ci19OwotCi0vKgotICogQ29tcHV0ZSB4ICsgeSwgeCBpcyB1bnNpZ25lZCwgcmVzdWx0IGZpdHMgaW4gdHlwZSBvZiAieSIuCi0gKi8KLQotdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFQyLCBib29sIHNnbiA9IHN0ZDo6bnVtZXJpY19saW1pdHM8VDI+Ojppc19zaWduZWQ+Ci1zdHJ1Y3QgYWRkIHsgfTsKLQotdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFQyPgotc3RydWN0IGFkZDxUMSwgVDIsIC8qIHNpZ25lZCAqLyBmYWxzZT4KLXsKLSAgdHlwZWRlZiBUMiByZXN1bHRfdHlwZTsKLSAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShUMSB4LCBUMiB5KSB7IHJldHVybiBUMih4KSArIHk7IH0KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBUMj4KLXN0cnVjdCBhZGQ8VDEsIFQyLCAvKiBzaWduZWQgKi8gdHJ1ZT4KLXsKLSAgdHlwZWRlZiBUMiByZXN1bHRfdHlwZTsKLSAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShUMSB4LCBUMiB5KQotICB7Ci0gICAgaWYgKHkgPj0gMCkKLSAgICAgIHJldHVybiBUMih4KSArIHk7Ci0gICAgLy8geSA8IDAKLSAgICBpZiAoeCA+IFQxKC0oeSsxKSkpICAvLyByZXN1bHQgPj0gMCBhZnRlciBzdWJ0cmFjdGlvbgotICAgICAgLy8gYXZvaWQgdGhlIG5hc3R5IHR3bydzIGNvbXBsZW1lbnQgZWRnZSBjYXNlIGZvciB5ID09IG1pbigpCi0gICAgICByZXR1cm4gVDIoeCAtIFQxKC0oeSsxKSkgLSAxKTsKLSAgICAvLyBhYnMoeCkgPCBhYnMoeSksIHRodXMgVDIgYWJsZSB0byByZXByZXNlbnQgeAotICAgIHJldHVybiBUMih4KSArIHk7Ci0gIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotfSAvLyBuYW1lc3BhY2UgcmFuZG9tCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUkFORE9NX0RFVEFJTF9TSUdORURfVU5TSUdORURfVE9PTFMKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vbGluZWFyX2NvbmdydWVudGlhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9saW5lYXJfY29uZ3J1ZW50aWFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjRjNjlkOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9saW5lYXJfY29uZ3J1ZW50aWFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ2NiArMCwwIEBACi0vKiBib29zdCByYW5kb20vbGluZWFyX2NvbmdydWVudGlhbC5ocHAgaGVhZGVyIGZpbGUKLSAqCi0gKiBDb3B5cmlnaHQgSmVucyBNYXVyZXIgMjAwMC0yMDAxCi0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0gKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotICoKLSAqICRJZDogbGluZWFyX2NvbmdydWVudGlhbC5ocHAgNzEwMTggMjAxMS0wNC0wNSAyMToyNzo1Mlogc3RldmVuX3dhdGFuYWJlICQKLSAqCi0gKiBSZXZpc2lvbiBoaXN0b3J5Ci0gKiAgMjAwMS0wMi0xOCAgbW92ZWQgdG8gaW5kaXZpZHVhbCBoZWFkZXIgZmlsZXMKLSAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkRPTV9MSU5FQVJfQ09OR1JVRU5USUFMX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5ET01fTElORUFSX0NPTkdSVUVOVElBTF9IUFAKLQotI2luY2x1ZGUgPGlvc3RyZWFtPgotI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY3N0ZGludC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbGltaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pbnRlZ2VyL3N0YXRpY19sb2cyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FyaXRobWV0aWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmRvbS9kZXRhaWwvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5kb20vZGV0YWlsL2NvbnN0X21vZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZG9tL2RldGFpbC9zZWVkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5kb20vZGV0YWlsL3NlZWRfaW1wbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZG9tL2RldGFpbC9kaXNhYmxlX3dhcm5pbmdzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSByYW5kb20gewotCi0vKioKLSAqIEluc3RhbnRpYXRpb25zIG9mIGNsYXNzIHRlbXBsYXRlIGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lIG1vZGVsIGEKLSAqIFxwc2V1ZG9fcmFuZG9tX251bWJlcl9nZW5lcmF0b3IuIExpbmVhciBjb25ncnVlbnRpYWwgcHNldWRvLXJhbmRvbQotICogbnVtYmVyIGdlbmVyYXRvcnMgYXJlIGRlc2NyaWJlZCBpbjoKLSAqCi0gKiAgQGJsb2NrcXVvdGUKLSAqICAiTWF0aGVtYXRpY2FsIG1ldGhvZHMgaW4gbGFyZ2Utc2NhbGUgY29tcHV0aW5nIHVuaXRzIiwgRC4gSC4gTGVobWVyLAotICogIFByb2MuIDJuZCBTeW1wb3NpdW0gb24gTGFyZ2UtU2NhbGUgRGlnaXRhbCBDYWxjdWxhdGluZyBNYWNoaW5lcywKLSAqICBIYXJ2YXJkIFVuaXZlcnNpdHkgUHJlc3MsIDE5NTEsIHBwLiAxNDEtMTQ2Ci0gKiAgQGVuZGJsb2NrcXVvdGUKLSAqCi0gKiBMZXQgeChuKSBkZW5vdGUgdGhlIHNlcXVlbmNlIG9mIG51bWJlcnMgcmV0dXJuZWQgYnkgc29tZSBwc2V1ZG8tcmFuZG9tCi0gKiBudW1iZXIgZ2VuZXJhdG9yLiBUaGVuIGZvciB0aGUgbGluZWFyIGNvbmdydWVudGlhbCBnZW5lcmF0b3IsCi0gKiB4KG4rMSkgOj0gKGEgKiB4KG4pICsgYykgbW9kIG0uIFBhcmFtZXRlcnMgZm9yIHRoZSBnZW5lcmF0b3IgYXJlCi0gKiB4KDApLCBhLCBjLCBtLiBUaGUgdGVtcGxhdGUgcGFyYW1ldGVyIEludFR5cGUgc2hhbGwgZGVub3RlIGFuIGludGVncmFsCi0gKiB0eXBlLiBJdCBtdXN0IGJlIGxhcmdlIGVub3VnaCB0byBob2xkIHZhbHVlcyBhLCBjLCBhbmQgbS4gVGhlIHRlbXBsYXRlCi0gKiBwYXJhbWV0ZXJzIGEgYW5kIGMgbXVzdCBiZSBzbWFsbGVyIHRoYW4gbS4KLSAqCi0gKiBOb3RlOiBUaGUgcXVhbGl0eSBvZiB0aGUgZ2VuZXJhdG9yIGNydWNpYWxseSBkZXBlbmRzIG9uIHRoZSBjaG9pY2Ugb2YKLSAqIHRoZSBwYXJhbWV0ZXJzLiBVc2VyIGNvZGUgc2hvdWxkIHVzZSBvbmUgb2YgdGhlIHNlbnNpYmx5IHBhcmFtZXRlcml6ZWQKLSAqIGdlbmVyYXRvcnMgc3VjaCBhcyBtaW5zdGRfcmFuZCBpbnN0ZWFkLgotICovCi10ZW1wbGF0ZTxjbGFzcyBJbnRUeXBlLCBJbnRUeXBlIGEsIEludFR5cGUgYywgSW50VHlwZSBtPgotY2xhc3MgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmUKLXsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIEludFR5cGUgcmVzdWx0X3R5cGU7Ci0KLSAgICAvLyBSZXF1aXJlZCBmb3Igb2xkIEJvb3N0LlJhbmRvbSBjb25jZXB0Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGhhc19maXhlZF9yYW5nZSA9IGZhbHNlKTsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChJbnRUeXBlLCBtdWx0aXBsaWVyID0gYSk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKEludFR5cGUsIGluY3JlbWVudCA9IGMpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChJbnRUeXBlLCBtb2R1bHVzID0gbSk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKEludFR5cGUsIGRlZmF1bHRfc2VlZCA9IDEpOwotICAgIAotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoc3RkOjpudW1lcmljX2xpbWl0czxJbnRUeXBlPjo6aXNfaW50ZWdlcik7Ci0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChtID09IDAgfHwgYSA8IG0pOwotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQobSA9PSAwIHx8IGMgPCBtKTsKLSAgICAKLSAgICAvKioKLSAgICAgKiBDb25zdHJ1Y3RzIGEgQGMgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmUsIHVzaW5nIHRoZSBkZWZhdWx0IHNlZWQKLSAgICAgKi8KLSAgICBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZSgpIHsgc2VlZCgpOyB9Ci0KLSAgICAvKioKLSAgICAgKiBDb25zdHJ1Y3RzIGEgQGMgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmUsIHNlZWRpbmcgaXQgd2l0aCBAYyB4MC4KLSAgICAgKi8KLSAgICBORE5CT09TVF9SQU5ET01fREVUQUlMX0FSSVRITUVUSUNfQ09OU1RSVUNUT1IobGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludFR5cGUsIHgwKQotICAgIHsgc2VlZCh4MCk7IH0KLSAgICAKLSAgICAvKioKLSAgICAgKiBDb25zdHJ1Y3RzIGEgQGMgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmUsIHNlZWRpbmcgaXQgd2l0aCB2YWx1ZXMKLSAgICAgKiBwcm9kdWNlZCBieSBhIGNhbGwgdG8gQGMgc2VxLmdlbmVyYXRlKCkuCi0gICAgICovCi0gICAgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9TRUVEX1NFUV9DT05TVFJVQ1RPUihsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlZWRTZXEsIHNlcSkKLSAgICB7IHNlZWQoc2VxKTsgfQotCi0gICAgLyoqCi0gICAgICogQ29uc3RydWN0cyBhIEBjIGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lICBhbmQgc2VlZHMgaXQKLSAgICAgKiB3aXRoIHZhbHVlcyB0YWtlbiBmcm9tIHRoZSBpdHJhdG9yIHJhbmdlIFtmaXJzdCwgbGFzdCkKLSAgICAgKiBhbmQgYWRqdXN0cyBmaXJzdCB0byBwb2ludCB0byB0aGUgZWxlbWVudCBhZnRlciB0aGUgbGFzdCBvbmUKLSAgICAgKiB1c2VkLiAgSWYgdGhlcmUgYXJlIG5vdCBlbm91Z2ggZWxlbWVudHMsIHRocm93cyBAYyBzdGQ6OmludmFsaWRfYXJndW1lbnQuCi0gICAgICoKLSAgICAgKiBmaXJzdCBhbmQgbGFzdCBtdXN0IGJlIGlucHV0IGl0ZXJhdG9ycy4KLSAgICAgKi8KLSAgICB0ZW1wbGF0ZTxjbGFzcyBJdD4KLSAgICBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZShJdCYgZmlyc3QsIEl0IGxhc3QpCi0gICAgewotICAgICAgICBzZWVkKGZpcnN0LCBsYXN0KTsKLSAgICB9Ci0KLSAgICAvLyBjb21waWxlci1nZW5lcmF0ZWQgY29weSBjb25zdHJ1Y3RvciBhbmQgYXNzaWdubWVudCBvcGVyYXRvciBhcmUgZmluZQotCi0gICAgLyoqCi0gICAgICogQ2FsbHMgc2VlZChkZWZhdWx0X3NlZWQpCi0gICAgICovCi0gICAgdm9pZCBzZWVkKCkgeyBzZWVkKGRlZmF1bHRfc2VlZCk7IH0KLQotICAgIC8qKgotICAgICAqIElmIGMgbW9kIG0gaXMgemVybyBhbmQgeDAgbW9kIG0gaXMgemVybywgY2hhbmdlcyB0aGUgY3VycmVudCB2YWx1ZSBvZgotICAgICAqIHRoZSBnZW5lcmF0b3IgdG8gMS4gT3RoZXJ3aXNlLCBjaGFuZ2VzIGl0IHRvIHgwIG1vZCBtLiBJZiBjIGlzIHplcm8sCi0gICAgICogZGlzdGluY3Qgc2VlZHMgaW4gdGhlIHJhbmdlIFsxLG0pIHdpbGwgbGVhdmUgdGhlIGdlbmVyYXRvciBpbiBkaXN0aW5jdAotICAgICAqIHN0YXRlcy4gSWYgYyBpcyBub3QgemVybywgdGhlIHJhbmdlIGlzIFswLG0pLgotICAgICAqLwotICAgIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfQVJJVEhNRVRJQ19TRUVEKGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lLCBJbnRUeXBlLCB4MCkKLSAgICB7Ci0gICAgICAgIC8vIHdyYXAgX3ggaWYgaXQgZG9lc24ndCBmaXQgaW4gdGhlIGRlc3RpbmF0aW9uCi0gICAgICAgIGlmKG1vZHVsdXMgPT0gMCkgewotICAgICAgICAgICAgX3ggPSB4MDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIF94ID0geDAgJSBtb2R1bHVzOwotICAgICAgICB9Ci0gICAgICAgIC8vIGhhbmRsZSBuZWdhdGl2ZSBzZWVkcwotICAgICAgICBpZihfeCA8PSAwICYmIF94ICE9IDApIHsKLSAgICAgICAgICAgIF94ICs9IG1vZHVsdXM7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gYWRqdXN0IHRvIHRoZSBjb3JyZWN0IHJhbmdlCi0gICAgICAgIGlmKGluY3JlbWVudCA9PSAwICYmIF94ID09IDApIHsKLSAgICAgICAgICAgIF94ID0gMTsKLSAgICAgICAgfQotICAgICAgICBORE5CT09TVF9BU1NFUlQoX3ggPj0gKG1pbikoKSk7Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVChfeCA8PSAobWF4KSgpKTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBTZWVkcyBhIEBjIGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lIHVzaW5nIHZhbHVlcyBmcm9tIGEgU2VlZFNlcS4KLSAgICAgKi8KLSAgICBORE5CT09TVF9SQU5ET01fREVUQUlMX1NFRURfU0VRX1NFRUQobGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmUsIFNlZWRTZXEsIHNlcSkKLSAgICB7IHNlZWQoZGV0YWlsOjpzZWVkX29uZV9pbnQ8SW50VHlwZSwgbT4oc2VxKSk7IH0KLQotICAgIC8qKgotICAgICAqIHNlZWRzIGEgQGMgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmUgd2l0aCB2YWx1ZXMgdGFrZW4KLSAgICAgKiBmcm9tIHRoZSBpdHJhdG9yIHJhbmdlIFtmaXJzdCwgbGFzdCkgYW5kIGFkanVzdHMgQGMgZmlyc3QgdG8KLSAgICAgKiBwb2ludCB0byB0aGUgZWxlbWVudCBhZnRlciB0aGUgbGFzdCBvbmUgdXNlZC4gIElmIHRoZXJlIGFyZQotICAgICAqIG5vdCBlbm91Z2ggZWxlbWVudHMsIHRocm93cyBAYyBzdGQ6OmludmFsaWRfYXJndW1lbnQuCi0gICAgICoKLSAgICAgKiBAYyBmaXJzdCBhbmQgQGMgbGFzdCBtdXN0IGJlIGlucHV0IGl0ZXJhdG9ycy4KLSAgICAgKi8KLSAgICB0ZW1wbGF0ZTxjbGFzcyBJdD4KLSAgICB2b2lkIHNlZWQoSXQmIGZpcnN0LCBJdCBsYXN0KQotICAgIHsgc2VlZChkZXRhaWw6OmdldF9vbmVfaW50PEludFR5cGUsIG0+KGZpcnN0LCBsYXN0KSk7IH0KLQotICAgIC8qKgotICAgICAqIFJldHVybnMgdGhlIHNtYWxsZXN0IHZhbHVlIHRoYXQgdGhlIEBjIGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lCi0gICAgICogY2FuIHByb2R1Y2UuCi0gICAgICovCi0gICAgc3RhdGljIHJlc3VsdF90eXBlIG1pbiBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTiAoKQotICAgIHsgcmV0dXJuIGMgPT0gMCA/IDEgOiAwOyB9Ci0gICAgLyoqCi0gICAgICogUmV0dXJucyB0aGUgbGFyZ2VzdCB2YWx1ZSB0aGF0IHRoZSBAYyBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZQotICAgICAqIGNhbiBwcm9kdWNlLgotICAgICAqLwotICAgIHN0YXRpYyByZXN1bHRfdHlwZSBtYXggTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCkKLSAgICB7IHJldHVybiBtb2R1bHVzLTE7IH0KLQotICAgIC8qKiBSZXR1cm5zIHRoZSBuZXh0IHZhbHVlIG9mIHRoZSBAYyBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZS4gKi8KLSAgICBJbnRUeXBlIG9wZXJhdG9yKCkoKQotICAgIHsKLSAgICAgICAgX3ggPSBjb25zdF9tb2Q8SW50VHlwZSwgbT46Om11bHRfYWRkKGEsIF94LCBjKTsKLSAgICAgICAgcmV0dXJuIF94OwotICAgIH0KLSAgCi0gICAgLyoqIEZpbGxzIGEgcmFuZ2Ugd2l0aCByYW5kb20gdmFsdWVzICovCi0gICAgdGVtcGxhdGU8Y2xhc3MgSXRlcj4KLSAgICB2b2lkIGdlbmVyYXRlKEl0ZXIgZmlyc3QsIEl0ZXIgbGFzdCkKLSAgICB7IGRldGFpbDo6Z2VuZXJhdGVfZnJvbV9pbnQoKnRoaXMsIGZpcnN0LCBsYXN0KTsgfQotCi0gICAgLyoqIEFkdmFuY2VzIHRoZSBzdGF0ZSBvZiB0aGUgZ2VuZXJhdG9yIGJ5IEBjIHouICovCi0gICAgdm9pZCBkaXNjYXJkKG5kbmJvb3N0Ojp1aW50bWF4X3QgeikKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgY29uc3RfbW9kPEludFR5cGUsIG0+IG1vZF90eXBlOwotICAgICAgICBJbnRUeXBlIGJfaW52ID0gbW9kX3R5cGU6OmludmVydChhLTEpOwotICAgICAgICBJbnRUeXBlIGJfZ2NkID0gbW9kX3R5cGU6Om11bHQoYS0xLCBiX2ludik7Ci0gICAgICAgIGlmKGJfZ2NkID09IDEpIHsKLSAgICAgICAgICAgIEludFR5cGUgYV96ID0gbW9kX3R5cGU6OnBvdyhhLCB6KTsKLSAgICAgICAgICAgIF94ID0gbW9kX3R5cGU6Om11bHRfYWRkKGFfeiwgX3gsIAotICAgICAgICAgICAgICAgIG1vZF90eXBlOjptdWx0KG1vZF90eXBlOjptdWx0KGMsIGJfaW52KSwgYV96IC0gMSkpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gY29tcHV0ZSAoYV56IC0gMSkqYyAlIChiX2djZCAqIG0pIC8gKGIgLyBiX2djZCkgKiBpbnYoYiAvIGJfZ2NkKQotICAgICAgICAgICAgLy8gd2UncmUgc3RvcmluZyB0aGUgaW50ZXJtZWRpYXRlIHJlc3VsdCAvIGJfZ2NkCi0gICAgICAgICAgICBJbnRUeXBlIGFfem0xX292ZXJfZ2NkID0gMDsKLSAgICAgICAgICAgIEludFR5cGUgYV9rbTFfb3Zlcl9nY2QgPSAoYSAtIDEpIC8gYl9nY2Q7Ci0gICAgICAgICAgICBuZG5ib29zdDo6dWludG1heF90IGV4cG9uZW50ID0gejsKLSAgICAgICAgICAgIHdoaWxlKGV4cG9uZW50ICE9IDApIHsKLSAgICAgICAgICAgICAgICBpZihleHBvbmVudCAlIDIgPT0gMSkgewotICAgICAgICAgICAgICAgICAgICBhX3ptMV9vdmVyX2djZCA9Ci0gICAgICAgICAgICAgICAgICAgICAgICBtb2RfdHlwZTo6bXVsdF9hZGQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYl9nY2QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kX3R5cGU6Om11bHQoYV96bTFfb3Zlcl9nY2QsIGFfa20xX292ZXJfZ2NkKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RfdHlwZTo6YWRkKGFfem0xX292ZXJfZ2NkLCBhX2ttMV9vdmVyX2djZCkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBhX2ttMV9vdmVyX2djZCA9IG1vZF90eXBlOjptdWx0X2FkZCgKLSAgICAgICAgICAgICAgICAgICAgYl9nY2QsCi0gICAgICAgICAgICAgICAgICAgIG1vZF90eXBlOjptdWx0KGFfa20xX292ZXJfZ2NkLCBhX2ttMV9vdmVyX2djZCksCi0gICAgICAgICAgICAgICAgICAgIG1vZF90eXBlOjphZGQoYV9rbTFfb3Zlcl9nY2QsIGFfa20xX292ZXJfZ2NkKSk7Ci0gICAgICAgICAgICAgICAgZXhwb25lbnQgLz0gMjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgSW50VHlwZSBhX3ogPSBtb2RfdHlwZTo6bXVsdF9hZGQoYl9nY2QsIGFfem0xX292ZXJfZ2NkLCAxKTsKLSAgICAgICAgICAgIEludFR5cGUgbnVtID0gbW9kX3R5cGU6Om11bHQoYywgYV96bTFfb3Zlcl9nY2QpOwotICAgICAgICAgICAgYl9pbnYgPSBtb2RfdHlwZTo6aW52ZXJ0KChhLTEpL2JfZ2NkKTsKLSAgICAgICAgICAgIF94ID0gbW9kX3R5cGU6Om11bHRfYWRkKGFfeiwgX3gsIG1vZF90eXBlOjptdWx0KGJfaW52LCBudW0pKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmUmIHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZSYgeSkKLSAgICB7IHJldHVybiB4Ll94ID09IHkuX3g7IH0KLSAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lJiB4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmUmIHkpCi0gICAgeyByZXR1cm4gISh4ID09IHkpOyB9Ci0gICAgCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfUkFORE9NX05PX1NUUkVBTV9PUEVSQVRPUlMpCi0gICAgLyoqIFdyaXRlcyBhIEBjIGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lIHRvIGEgQGMgc3RkOjpvc3RyZWFtLiAqLwotICAgIHRlbXBsYXRlPGNsYXNzIENoYXJULCBjbGFzcyBUcmFpdHM+Ci0gICAgZnJpZW5kIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVCxUcmFpdHM+JgotICAgIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19vc3RyZWFtPENoYXJULFRyYWl0cz4mIG9zLAotICAgICAgICAgICAgICAgY29uc3QgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmUmIGxjZykKLSAgICB7Ci0gICAgICAgIHJldHVybiBvcyA8PCBsY2cuX3g7Ci0gICAgfQotCi0gICAgLyoqIFJlYWRzIGEgQGMgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmUgZnJvbSBhIEBjIHN0ZDo6aXN0cmVhbS4gKi8KLSAgICB0ZW1wbGF0ZTxjbGFzcyBDaGFyVCwgY2xhc3MgVHJhaXRzPgotICAgIGZyaWVuZCBzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQsVHJhaXRzPiYKLSAgICBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCxUcmFpdHM+JiBpcywKLSAgICAgICAgICAgICAgIGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lJiBsY2cpCi0gICAgewotICAgICAgICBsY2cucmVhZChpcyk7Ci0gICAgICAgIHJldHVybiBpczsKLSAgICB9Ci0jZW5kaWYKLQotcHJpdmF0ZToKLQotICAgIC8vLyBcY29uZCBzaG93X3ByaXZhdGUKLQotICAgIHRlbXBsYXRlPGNsYXNzIENoYXJULCBjbGFzcyBUcmFpdHM+Ci0gICAgdm9pZCByZWFkKHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCwgVHJhaXRzPiYgaXMpIHsKLSAgICAgICAgSW50VHlwZSB4OwotICAgICAgICBpZihpcyA+PiB4KSB7Ci0gICAgICAgICAgICBpZih4ID49IChtaW4pKCkgJiYgeCA8PSAobWF4KSgpKSB7Ci0gICAgICAgICAgICAgICAgX3ggPSB4OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpcy5zZXRzdGF0ZShzdGQ6Omlvc19iYXNlOjpmYWlsYml0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vLyBcZW5kY29uZAotCi0gICAgSW50VHlwZSBfeDsKLX07Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fSU5DTEFTU19NRU1CRVJfSU5JVElBTElaQVRJT04KLS8vICBBIGRlZmluaXRpb24gaXMgcmVxdWlyZWQgZXZlbiBmb3IgaW50ZWdyYWwgc3RhdGljIGNvbnN0YW50cwotdGVtcGxhdGU8Y2xhc3MgSW50VHlwZSwgSW50VHlwZSBhLCBJbnRUeXBlIGMsIEludFR5cGUgbT4KLWNvbnN0IGJvb2wgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmU8SW50VHlwZSwgYSwgYywgbT46Omhhc19maXhlZF9yYW5nZTsKLXRlbXBsYXRlPGNsYXNzIEludFR5cGUsIEludFR5cGUgYSwgSW50VHlwZSBjLCBJbnRUeXBlIG0+Ci1jb25zdCBJbnRUeXBlIGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lPEludFR5cGUsYSxjLG0+OjptdWx0aXBsaWVyOwotdGVtcGxhdGU8Y2xhc3MgSW50VHlwZSwgSW50VHlwZSBhLCBJbnRUeXBlIGMsIEludFR5cGUgbT4KLWNvbnN0IEludFR5cGUgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmU8SW50VHlwZSxhLGMsbT46OmluY3JlbWVudDsKLXRlbXBsYXRlPGNsYXNzIEludFR5cGUsIEludFR5cGUgYSwgSW50VHlwZSBjLCBJbnRUeXBlIG0+Ci1jb25zdCBJbnRUeXBlIGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lPEludFR5cGUsYSxjLG0+Ojptb2R1bHVzOwotdGVtcGxhdGU8Y2xhc3MgSW50VHlwZSwgSW50VHlwZSBhLCBJbnRUeXBlIGMsIEludFR5cGUgbT4KLWNvbnN0IEludFR5cGUgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmU8SW50VHlwZSxhLGMsbT46OmRlZmF1bHRfc2VlZDsKLSNlbmRpZgotCi0vLy8gXGNvbmQgc2hvd19kZXByZWNhdGVkCi0KLS8vIHByb3ZpZGVkIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQotdGVtcGxhdGU8Y2xhc3MgSW50VHlwZSwgSW50VHlwZSBhLCBJbnRUeXBlIGMsIEludFR5cGUgbSwgSW50VHlwZSB2YWwgPSAwPgotY2xhc3MgbGluZWFyX2NvbmdydWVudGlhbCA6IHB1YmxpYyBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZTxJbnRUeXBlLCBhLCBjLCBtPgotewotICAgIHR5cGVkZWYgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmU8SW50VHlwZSwgYSwgYywgbT4gYmFzZV90eXBlOwotcHVibGljOgotICAgIGxpbmVhcl9jb25ncnVlbnRpYWwoSW50VHlwZSB4MCA9IDEpIDogYmFzZV90eXBlKHgwKSB7fQotICAgIHRlbXBsYXRlPGNsYXNzIEl0PgotICAgIGxpbmVhcl9jb25ncnVlbnRpYWwoSXQmIGZpcnN0LCBJdCBsYXN0KSA6IGJhc2VfdHlwZShmaXJzdCwgbGFzdCkge30KLX07Ci0KLS8vLyBcZW5kY29uZAotCi0vKioKLSAqIFRoZSBzcGVjaWFsaXphdGlvbiBcbWluc3RkX3JhbmQwIHdhcyBvcmlnaW5hbGx5IHN1Z2dlc3RlZCBpbgotICoKLSAqICBAYmxvY2txdW90ZQotICogIEEgcHNldWRvLXJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIGZvciB0aGUgU3lzdGVtLzM2MCwgUC5BLiBMZXdpcywKLSAqICBBLlMuIEdvb2RtYW4sIEouTS4gTWlsbGVyLCBJQk0gU3lzdGVtcyBKb3VybmFsLCBWb2wuIDgsIE5vLiAyLAotICogIDE5NjksIHBwLiAxMzYtMTQ2Ci0gKiAgQGVuZGJsb2NrcXVvdGUKLSAqCi0gKiBJdCBpcyBleGFtaW5lZCBtb3JlIGNsb3NlbHkgdG9nZXRoZXIgd2l0aCBcbWluc3RkX3JhbmQgaW4KLSAqCi0gKiAgQGJsb2NrcXVvdGUKLSAqICAiUmFuZG9tIE51bWJlciBHZW5lcmF0b3JzOiBHb29kIG9uZXMgYXJlIGhhcmQgdG8gZmluZCIsCi0gKiAgU3RlcGhlbiBLLiBQYXJrIGFuZCBLZWl0aCBXLiBNaWxsZXIsIENvbW11bmljYXRpb25zIG9mCi0gKiAgdGhlIEFDTSwgVm9sLiAzMSwgTm8uIDEwLCBPY3RvYmVyIDE5ODgsIHBwLiAxMTkyLTEyMDEgCi0gKiAgQGVuZGJsb2NrcXVvdGUKLSAqLwotdHlwZWRlZiBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZTx1aW50MzJfdCwgMTY4MDcsIDAsIDIxNDc0ODM2NDc+IG1pbnN0ZF9yYW5kMDsKLQotLyoqIFRoZSBzcGVjaWFsaXphdGlvbiBcbWluc3RkX3JhbmQgd2FzIHN1Z2dlc3RlZCBpbgotICoKLSAqICBAYmxvY2txdW90ZQotICogICJSYW5kb20gTnVtYmVyIEdlbmVyYXRvcnM6IEdvb2Qgb25lcyBhcmUgaGFyZCB0byBmaW5kIiwKLSAqICBTdGVwaGVuIEsuIFBhcmsgYW5kIEtlaXRoIFcuIE1pbGxlciwgQ29tbXVuaWNhdGlvbnMgb2YKLSAqICB0aGUgQUNNLCBWb2wuIDMxLCBOby4gMTAsIE9jdG9iZXIgMTk4OCwgcHAuIDExOTItMTIwMQotICogIEBlbmRibG9ja3F1b3RlCi0gKi8KLXR5cGVkZWYgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmU8dWludDMyX3QsIDQ4MjcxLCAwLCAyMTQ3NDgzNjQ3PiBtaW5zdGRfcmFuZDsKLQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU5UNjRfVCkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU5URUdSQUxfSU5UNjRfVCkKLS8qKgotICogQ2xhc3MgQGMgcmFuZDQ4IG1vZGVscyBhIFxwc2V1ZG9fcmFuZG9tX251bWJlcl9nZW5lcmF0b3IuIEl0IHVzZXMKLSAqIHRoZSBsaW5lYXIgY29uZ3J1ZW50aWFsIGFsZ29yaXRobSB3aXRoIHRoZSBwYXJhbWV0ZXJzIGEgPSAweDVERUVDRTY2RCwKLSAqIGMgPSAweEIsIG0gPSAyKio0OC4gSXQgZGVsaXZlcnMgaWRlbnRpY2FsIHJlc3VsdHMgdG8gdGhlIEBjIGxyYW5kNDgoKQotICogZnVuY3Rpb24gYXZhaWxhYmxlIG9uIHNvbWUgc3lzdGVtcyAoYXNzdW1pbmcgbGNvbmc0OCBoYXMgbm90IGJlZW4gY2FsbGVkKS4KLSAqCi0gKiBJdCBpcyBvbmx5IGF2YWlsYWJsZSBvbiBzeXN0ZW1zIHdoZXJlIEBjIHVpbnQ2NF90IGlzIHByb3ZpZGVkIGFzIGFuCi0gKiBpbnRlZ3JhbCB0eXBlLCBzbyB0aGF0IGZvciBleGFtcGxlIHN0YXRpYyBpbi1jbGFzcyBjb25zdGFudHMgYW5kL29yCi0gKiBlbnVtIGRlZmluaXRpb25zIHdpdGggbGFyZ2UgQGMgdWludDY0X3QgbnVtYmVycyB3b3JrLgotICovCi1jbGFzcyByYW5kNDggCi17Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBuZG5ib29zdDo6dWludDMyX3QgcmVzdWx0X3R5cGU7Ci0KLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaGFzX2ZpeGVkX3JhbmdlID0gZmFsc2UpOwotICAgIC8qKgotICAgICAqIFJldHVybnMgdGhlIHNtYWxsZXN0IHZhbHVlIHRoYXQgdGhlIGdlbmVyYXRvciBjYW4gcHJvZHVjZQotICAgICAqLwotICAgIHN0YXRpYyB1aW50MzJfdCBtaW4gTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCkgeyByZXR1cm4gMDsgfQotICAgIC8qKgotICAgICAqIFJldHVybnMgdGhlIGxhcmdlc3QgdmFsdWUgdGhhdCB0aGUgZ2VuZXJhdG9yIGNhbiBwcm9kdWNlCi0gICAgICovCi0gICAgc3RhdGljIHVpbnQzMl90IG1heCBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTiAoKQotICAgIHsgcmV0dXJuIDB4N0ZGRkZGRkY7IH0KLSAgCi0gICAgLyoqIFNlZWRzIHRoZSBnZW5lcmF0b3Igd2l0aCB0aGUgZGVmYXVsdCBzZWVkLiAqLwotICAgIHJhbmQ0OCgpIDogbGNmKGNudihzdGF0aWNfY2FzdDx1aW50MzJfdD4oMSkpKSB7fQotICAgIC8qKgotICAgICAqIENvbnN0cnVjdHMgYSBccmFuZDQ4IGdlbmVyYXRvciB3aXRoIHgoMCkgOj0gKHgwIDw8IDE2KSB8IDB4MzMwZS4KLSAgICAgKi8KLSAgICBORE5CT09TVF9SQU5ET01fREVUQUlMX0FSSVRITUVUSUNfQ09OU1RSVUNUT1IocmFuZDQ4LCByZXN1bHRfdHlwZSwgeDApCi0gICAgeyBzZWVkKHgwKTsgfQotICAgIC8qKgotICAgICAqIFNlZWRzIHRoZSBnZW5lcmF0b3Igd2l0aCB2YWx1ZXMgcHJvZHVjZWQgYnkgQGMgc2VxLmdlbmVyYXRlKCkuCi0gICAgICovCi0gICAgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9TRUVEX1NFUV9DT05TVFJVQ1RPUihyYW5kNDgsIFNlZWRTZXEsIHNlcSkKLSAgICB7IHNlZWQoc2VxKTsgfQotICAgIC8qKgotICAgICAqIFNlZWRzIHRoZSBnZW5lcmF0b3IgdXNpbmcgdmFsdWVzIGZyb20gYW4gaXRlcmF0b3IgcmFuZ2UsCi0gICAgICogYW5kIHVwZGF0ZXMgZmlyc3QgdG8gcG9pbnQgb25lIHBhc3QgdGhlIGxhc3QgdmFsdWUgY29uc3VtZWQuCi0gICAgICovCi0gICAgdGVtcGxhdGU8Y2xhc3MgSXQ+IHJhbmQ0OChJdCYgZmlyc3QsIEl0IGxhc3QpIDogbGNmKGZpcnN0LCBsYXN0KSB7IH0KLQotICAgIC8vIGNvbXBpbGVyLWdlbmVyYXRlZCBjb3B5IGN0b3IgYW5kIGFzc2lnbm1lbnQgb3BlcmF0b3IgYXJlIGZpbmUKLQotICAgIC8qKiBTZWVkcyB0aGUgZ2VuZXJhdG9yIHdpdGggdGhlIGRlZmF1bHQgc2VlZC4gKi8KLSAgICB2b2lkIHNlZWQoKSB7IHNlZWQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KDEpKTsgfQotICAgIC8qKgotICAgICAqIENoYW5nZXMgdGhlIGN1cnJlbnQgdmFsdWUgeChuKSBvZiB0aGUgZ2VuZXJhdG9yIHRvICh4MCA8PCAxNikgfCAweDMzMGUuCi0gICAgICovCi0gICAgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9BUklUSE1FVElDX1NFRUQocmFuZDQ4LCByZXN1bHRfdHlwZSwgeDApCi0gICAgeyBsY2Yuc2VlZChjbnYoeDApKTsgfQotICAgIC8qKgotICAgICAqIFNlZWRzIHRoZSBnZW5lcmF0b3IgdXNpbmcgdmFsdWVzIGZyb20gYW4gaXRlcmF0b3IgcmFuZ2UsCi0gICAgICogYW5kIHVwZGF0ZXMgZmlyc3QgdG8gcG9pbnQgb25lIHBhc3QgdGhlIGxhc3QgdmFsdWUgY29uc3VtZWQuCi0gICAgICovCi0gICAgdGVtcGxhdGU8Y2xhc3MgSXQ+IHZvaWQgc2VlZChJdCYgZmlyc3QsIEl0IGxhc3QpIHsgbGNmLnNlZWQoZmlyc3QsbGFzdCk7IH0KLSAgICAvKioKLSAgICAgKiBTZWVkcyB0aGUgZ2VuZXJhdG9yIHdpdGggdmFsdWVzIHByb2R1Y2VkIGJ5IEBjIHNlcS5nZW5lcmF0ZSgpLgotICAgICAqLwotICAgIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfU0VFRF9TRVFfU0VFRChyYW5kNDgsIFNlZWRTZXEsIHNlcSkKLSAgICB7IGxjZi5zZWVkKHNlcSk7IH0KLQotICAgIC8qKiAgUmV0dXJucyB0aGUgbmV4dCB2YWx1ZSBvZiB0aGUgZ2VuZXJhdG9yLiAqLwotICAgIHVpbnQzMl90IG9wZXJhdG9yKCkoKSB7IHJldHVybiBzdGF0aWNfY2FzdDx1aW50MzJfdD4obGNmKCkgPj4gMTcpOyB9Ci0gICAgCi0gICAgLyoqIEFkdmFuY2VzIHRoZSBzdGF0ZSBvZiB0aGUgZ2VuZXJhdG9yIGJ5IEBjIHouICovCi0gICAgdm9pZCBkaXNjYXJkKG5kbmJvb3N0Ojp1aW50bWF4X3QgeikgeyBsY2YuZGlzY2FyZCh6KTsgfQotICAKLSAgICAvKiogRmlsbHMgYSByYW5nZSB3aXRoIHJhbmRvbSB2YWx1ZXMgKi8KLSAgICB0ZW1wbGF0ZTxjbGFzcyBJdGVyPgotICAgIHZvaWQgZ2VuZXJhdGUoSXRlciBmaXJzdCwgSXRlciBsYXN0KQotICAgIHsKLSAgICAgICAgZm9yKDsgZmlyc3QgIT0gbGFzdDsgKytmaXJzdCkgewotICAgICAgICAgICAgKmZpcnN0ID0gKCp0aGlzKSgpOwotICAgICAgICB9Ci0gICAgfQotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkRPTV9OT19TVFJFQU1fT1BFUkFUT1JTCi0gICAgLyoqICBXcml0ZXMgYSBAYyByYW5kNDggdG8gYSBAYyBzdGQ6Om9zdHJlYW0uICovCi0gICAgdGVtcGxhdGU8Y2xhc3MgQ2hhclQsY2xhc3MgVHJhaXRzPgotICAgIGZyaWVuZCBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsVHJhaXRzPiYKLSAgICBvcGVyYXRvcjw8KHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVCxUcmFpdHM+JiBvcywgY29uc3QgcmFuZDQ4JiByKQotICAgIHsgb3MgPDwgci5sY2Y7IHJldHVybiBvczsgfQotCi0gICAgLyoqIFJlYWRzIGEgQGMgcmFuZDQ4IGZyb20gYSBAYyBzdGQ6OmlzdHJlYW0uICovCi0gICAgdGVtcGxhdGU8Y2xhc3MgQ2hhclQsY2xhc3MgVHJhaXRzPgotICAgIGZyaWVuZCBzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQsVHJhaXRzPiYKLSAgICBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCxUcmFpdHM+JiBpcywgcmFuZDQ4JiByKQotICAgIHsgaXMgPj4gci5sY2Y7IHJldHVybiBpczsgfQotI2VuZGlmCi0KLSAgICAvKioKLSAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHR3byBnZW5lcmF0b3JzIHdpbGwgcHJvZHVjZSBpZGVudGljYWwKLSAgICAgKiBzZXF1ZW5jZXMgb2YgdmFsdWVzLgotICAgICAqLwotICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgcmFuZDQ4JiB4LCBjb25zdCByYW5kNDgmIHkpCi0gICAgeyByZXR1cm4geC5sY2YgPT0geS5sY2Y7IH0KLSAgICAvKioKLSAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHR3byBnZW5lcmF0b3JzIHdpbGwgcHJvZHVjZSBkaWZmZXJlbnQKLSAgICAgKiBzZXF1ZW5jZXMgb2YgdmFsdWVzLgotICAgICAqLwotICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgcmFuZDQ4JiB4LCBjb25zdCByYW5kNDgmIHkpCi0gICAgeyByZXR1cm4gISh4ID09IHkpOyB9Ci1wcml2YXRlOgotICAgIC8vLyBcY29uZCBzaG93X3ByaXZhdGUKLSAgICB0eXBlZGVmIHJhbmRvbTo6bGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmU8dWludDY0X3QsCi0gICAgICAgIC8vIHh4eHhVTEwgaXMgbm90IHBvcnRhYmxlCi0gICAgICAgIHVpbnQ2NF90KDB4REVFQ0U2NkRVTCkgfCAodWludDY0X3QoMHg1KSA8PCAzMiksCi0gICAgICAgIDB4QiwgdWludDY0X3QoMSk8PDQ4PiBsY2ZfdDsKLSAgICBsY2ZfdCBsY2Y7Ci0KLSAgICBzdGF0aWMgbmRuYm9vc3Q6OnVpbnQ2NF90IGNudihuZG5ib29zdDo6dWludDMyX3QgeCkKLSAgICB7IHJldHVybiAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHgpIDw8IDE2KSB8IDB4MzMwZTsgfQotICAgIC8vLyBcZW5kY29uZAotfTsKLSNlbmRpZiAvKiAhTkROQk9PU1RfTk9fSU5UNjRfVCAmJiAhTkROQk9PU1RfTk9fSU5URUdSQUxfSU5UNjRfVCAqLwotCi19IC8vIG5hbWVzcGFjZSByYW5kb20KLQotdXNpbmcgcmFuZG9tOjptaW5zdGRfcmFuZDA7Ci11c2luZyByYW5kb206Om1pbnN0ZF9yYW5kOwotdXNpbmcgcmFuZG9tOjpyYW5kNDg7Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5kb20vZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SQU5ET01fTElORUFSX0NPTkdSVUVOVElBTF9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL3VuaWZvcm1fMDEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vdW5pZm9ybV8wMS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhMTQxMTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vdW5pZm9ybV8wMS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNzcgKzAsMCBAQAotLyogYm9vc3QgcmFuZG9tL3VuaWZvcm1fMDEuaHBwIGhlYWRlciBmaWxlCi0gKgotICogQ29weXJpZ2h0IEplbnMgTWF1cmVyIDIwMDAtMjAwMQotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0gKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLSAqCi0gKiAkSWQ6IHVuaWZvcm1fMDEuaHBwIDcxMDE4IDIwMTEtMDQtMDUgMjE6Mjc6NTJaIHN0ZXZlbl93YXRhbmFiZSAkCi0gKgotICogUmV2aXNpb24gaGlzdG9yeQotICogIDIwMDEtMDItMTggIG1vdmVkIHRvIGluZGl2aWR1YWwgaGVhZGVyIGZpbGVzCi0gKi8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5ET01fVU5JRk9STV8wMV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX1VOSUZPUk1fMDFfSFBQCi0KLSNpbmNsdWRlIDxpb3N0cmVhbT4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2xpbWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZG9tL2RldGFpbC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmRvbS9kZXRhaWwvcHRyX2hlbHBlci5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5kb20vZGV0YWlsL2Rpc2FibGVfd2FybmluZ3MuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIHJhbmRvbSB7Ci0KLSNpZmRlZiBORE5CT09TVF9SQU5ET01fRE9YWUdFTgotCi0vKioKLSAqIFRoZSBkaXN0cmlidXRpb24gZnVuY3Rpb24gdW5pZm9ybV8wMSBtb2RlbHMgYSBccmFuZG9tX2Rpc3RyaWJ1dGlvbi4KLSAqIE9uIGVhY2ggaW52b2NhdGlvbiwgaXQgcmV0dXJucyBhIHJhbmRvbSBmbG9hdGluZy1wb2ludCB2YWx1ZQotICogdW5pZm9ybWx5IGRpc3RyaWJ1dGVkIGluIHRoZSByYW5nZSBbMC4uMSkuCi0gKgotICogVGhlIHRlbXBsYXRlIHBhcmFtZXRlciBSZWFsVHlwZSBzaGFsbCBkZW5vdGUgYSBmbG9hdC1saWtlIHZhbHVlIHR5cGUKLSAqIHdpdGggc3VwcG9ydCBmb3IgYmluYXJ5IG9wZXJhdG9ycyArLCAtLCBhbmQgLy4KLSAqCi0gKiBOb3RlOiBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBpcyBidWdneSwgYmVjYXVzZSBpdCBtYXkgbm90IGZpbGwKLSAqIGFsbCBvZiB0aGUgbWFudGlzc2Egd2l0aCByYW5kb20gYml0cy4gSSdtIHVuc3VyZSBob3cgdG8gZmlsbCBhCi0gKiAodG8tYmUtaW52ZW50ZWQpIEBjIG5kbmJvb3N0OjpiaWdmbG9hdCBjbGFzcyB3aXRoIHJhbmRvbSBiaXRzIGVmZmljaWVudGx5LgotICogSXQncyBwcm9iYWJseSB0aW1lIGZvciBhIHRyYWl0cyBjbGFzcy4KLSAqLwotdGVtcGxhdGU8Y2xhc3MgUmVhbFR5cGUgPSBkb3VibGU+Ci1jbGFzcyB1bmlmb3JtXzAxCi17Ci1wdWJsaWM6Ci0gIHR5cGVkZWYgUmVhbFR5cGUgaW5wdXRfdHlwZTsKLSAgdHlwZWRlZiBSZWFsVHlwZSByZXN1bHRfdHlwZTsKLSAgcmVzdWx0X3R5cGUgbWluIE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpIGNvbnN0OwotICByZXN1bHRfdHlwZSBtYXggTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCkgY29uc3Q7Ci0gIHZvaWQgcmVzZXQoKTsKLQotICB0ZW1wbGF0ZTxjbGFzcyBFbmdpbmU+Ci0gIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoRW5naW5lJiBlbmcpOwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkRPTV9OT19TVFJFQU1fT1BFUkFUT1JTCi0gIHRlbXBsYXRlPGNsYXNzIENoYXJULCBjbGFzcyBUcmFpdHM+Ci0gIGZyaWVuZCBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsVHJhaXRzPiYKLSAgb3BlcmF0b3I8PChzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsVHJhaXRzPiYgb3MsIGNvbnN0IG5ld191bmlmb3JtXzAxJikKLSAgewotICAgIHJldHVybiBvczsKLSAgfQotCi0gIHRlbXBsYXRlPGNsYXNzIENoYXJULCBjbGFzcyBUcmFpdHM+Ci0gIGZyaWVuZCBzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQsVHJhaXRzPiYKLSAgb3BlcmF0b3I+PihzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQsVHJhaXRzPiYgaXMsIG5ld191bmlmb3JtXzAxJikKLSAgewotICAgIHJldHVybiBpczsKLSAgfQotI2VuZGlmCi19OwotCi0jZWxzZQotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8Y2xhc3MgUmVhbFR5cGU+Ci1jbGFzcyBuZXdfdW5pZm9ybV8wMQotewotcHVibGljOgotICB0eXBlZGVmIFJlYWxUeXBlIGlucHV0X3R5cGU7Ci0gIHR5cGVkZWYgUmVhbFR5cGUgcmVzdWx0X3R5cGU7Ci0gIC8vIGNvbXBpbGVyLWdlbmVyYXRlZCBjb3B5IGN0b3IgYW5kIGNvcHkgYXNzaWdubWVudCBhcmUgZmluZQotICByZXN1bHRfdHlwZSBtaW4gTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCkgY29uc3QgeyByZXR1cm4gcmVzdWx0X3R5cGUoMCk7IH0KLSAgcmVzdWx0X3R5cGUgbWF4IE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpIGNvbnN0IHsgcmV0dXJuIHJlc3VsdF90eXBlKDEpOyB9Ci0gIHZvaWQgcmVzZXQoKSB7IH0KLQotICB0ZW1wbGF0ZTxjbGFzcyBFbmdpbmU+Ci0gIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoRW5naW5lJiBlbmcpIHsKLSAgICBmb3IgKDs7KSB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIEVuZ2luZTo6cmVzdWx0X3R5cGUgYmFzZV9yZXN1bHQ7Ci0gICAgICByZXN1bHRfdHlwZSBmYWN0b3IgPSByZXN1bHRfdHlwZSgxKSAvCi0gICAgICAgICAgICAgIChyZXN1bHRfdHlwZSgoZW5nLm1heCkoKS0oZW5nLm1pbikoKSkgKwotICAgICAgICAgICAgICAgcmVzdWx0X3R5cGUoc3RkOjpudW1lcmljX2xpbWl0czxiYXNlX3Jlc3VsdD46OmlzX2ludGVnZXIgPyAxIDogMCkpOwotICAgICAgcmVzdWx0X3R5cGUgcmVzdWx0ID0gcmVzdWx0X3R5cGUoZW5nKCkgLSAoZW5nLm1pbikoKSkgKiBmYWN0b3I7Ci0gICAgICBpZiAocmVzdWx0IDwgcmVzdWx0X3R5cGUoMSkpCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotICB9Ci0KLSNpZm5kZWYgTkROQk9PU1RfUkFORE9NX05PX1NUUkVBTV9PUEVSQVRPUlMKLSAgdGVtcGxhdGU8Y2xhc3MgQ2hhclQsIGNsYXNzIFRyYWl0cz4KLSAgZnJpZW5kIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVCxUcmFpdHM+JgotICBvcGVyYXRvcjw8KHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVCxUcmFpdHM+JiBvcywgY29uc3QgbmV3X3VuaWZvcm1fMDEmKQotICB7Ci0gICAgcmV0dXJuIG9zOwotICB9Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgQ2hhclQsIGNsYXNzIFRyYWl0cz4KLSAgZnJpZW5kIHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCxUcmFpdHM+JgotICBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCxUcmFpdHM+JiBpcywgbmV3X3VuaWZvcm1fMDEmKQotICB7Ci0gICAgcmV0dXJuIGlzOwotICB9Ci0jZW5kaWYKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFVuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3IsIGNsYXNzIFJlYWxUeXBlPgotY2xhc3MgYmFja3dhcmRfY29tcGF0aWJsZV91bmlmb3JtXzAxCi17Ci0gIHR5cGVkZWYgbmRuYm9vc3Q6OnJhbmRvbTo6ZGV0YWlsOjpwdHJfaGVscGVyPFVuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+IHRyYWl0czsKLXB1YmxpYzoKLSAgdHlwZWRlZiBVbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yIGJhc2VfdHlwZTsKLSAgdHlwZWRlZiBSZWFsVHlwZSByZXN1bHRfdHlwZTsKLQotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaGFzX2ZpeGVkX3JhbmdlID0gZmFsc2UpOwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fTElNSVRTX0NPTVBJTEVfVElNRV9DT05TVEFOVFMpICYmICEoZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiBORE5CT09TVF9NU1ZDIDw9IDEzMDApCi0gIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoIXN0ZDo6bnVtZXJpY19saW1pdHM8UmVhbFR5cGU+Ojppc19pbnRlZ2VyKTsKLSNlbmRpZgotCi0gIGV4cGxpY2l0IGJhY2t3YXJkX2NvbXBhdGlibGVfdW5pZm9ybV8wMSh0eXBlbmFtZSB0cmFpdHM6OnJ2YWx1ZV90eXBlIHJuZykKLSAgICA6IF9ybmcocm5nKSwKLSAgICAgIF9mYWN0b3IocmVzdWx0X3R5cGUoMSkgLwotICAgICAgICAgICAgICAocmVzdWx0X3R5cGUoKGJhc2UoKS5tYXgpKCktKGJhc2UoKS5taW4pKCkpICsKLSAgICAgICAgICAgICAgIHJlc3VsdF90eXBlKHN0ZDo6bnVtZXJpY19saW1pdHM8YmFzZV9yZXN1bHQ+Ojppc19pbnRlZ2VyID8gMSA6IDApKSkKLSAgewotICB9Ci0gIC8vIGNvbXBpbGVyLWdlbmVyYXRlZCBjb3B5IGN0b3IgYW5kIGNvcHkgYXNzaWdubWVudCBhcmUgZmluZQotCi0gIHJlc3VsdF90eXBlIG1pbiBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTiAoKSBjb25zdCB7IHJldHVybiByZXN1bHRfdHlwZSgwKTsgfQotICByZXN1bHRfdHlwZSBtYXggTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCkgY29uc3QgeyByZXR1cm4gcmVzdWx0X3R5cGUoMSk7IH0KLSAgdHlwZW5hbWUgdHJhaXRzOjp2YWx1ZV90eXBlJiBiYXNlKCkgeyByZXR1cm4gdHJhaXRzOjpyZWYoX3JuZyk7IH0KLSAgY29uc3QgdHlwZW5hbWUgdHJhaXRzOjp2YWx1ZV90eXBlJiBiYXNlKCkgY29uc3QgeyByZXR1cm4gdHJhaXRzOjpyZWYoX3JuZyk7IH0KLSAgdm9pZCByZXNldCgpIHsgfQotCi0gIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoKSB7Ci0gICAgZm9yICg7OykgewotICAgICAgcmVzdWx0X3R5cGUgcmVzdWx0ID0gcmVzdWx0X3R5cGUoYmFzZSgpKCkgLSAoYmFzZSgpLm1pbikoKSkgKiBfZmFjdG9yOwotICAgICAgaWYgKHJlc3VsdCA8IHJlc3VsdF90eXBlKDEpKQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgfQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fT1BFUkFUT1JTX0lOX05BTUVTUEFDRSkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFX0ZSSUVORFMpCi0gIHRlbXBsYXRlPGNsYXNzIENoYXJULCBjbGFzcyBUcmFpdHM+Ci0gIGZyaWVuZCBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsVHJhaXRzPiYKLSAgb3BlcmF0b3I8PChzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsVHJhaXRzPiYgb3MsIGNvbnN0IGJhY2t3YXJkX2NvbXBhdGlibGVfdW5pZm9ybV8wMSYgdSkKLSAgewotICAgIG9zIDw8IHUuX3JuZzsKLSAgICByZXR1cm4gb3M7Ci0gIH0KLQotICB0ZW1wbGF0ZTxjbGFzcyBDaGFyVCwgY2xhc3MgVHJhaXRzPgotICBmcmllbmQgc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULFRyYWl0cz4mCi0gIG9wZXJhdG9yPj4oc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULFRyYWl0cz4mIGlzLCBiYWNrd2FyZF9jb21wYXRpYmxlX3VuaWZvcm1fMDEmIHUpCi0gIHsKLSAgICBpcyA+PiB1Ll9ybmc7Ci0gICAgcmV0dXJuIGlzOwotICB9Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6OnZhbHVlX3R5cGU6OnJlc3VsdF90eXBlIGJhc2VfcmVzdWx0OwotICBVbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yIF9ybmc7Ci0gIHJlc3VsdF90eXBlIF9mYWN0b3I7Ci19OwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0lOQ0xBU1NfTUVNQkVSX0lOSVRJQUxJWkFUSU9OCi0vLyAgQSBkZWZpbml0aW9uIGlzIHJlcXVpcmVkIGV2ZW4gZm9yIGludGVncmFsIHN0YXRpYyBjb25zdGFudHMKLXRlbXBsYXRlPGNsYXNzIFVuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3IsIGNsYXNzIFJlYWxUeXBlPgotY29uc3QgYm9vbCBiYWNrd2FyZF9jb21wYXRpYmxlX3VuaWZvcm1fMDE8VW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciwgUmVhbFR5cGU+OjpoYXNfZml4ZWRfcmFuZ2U7Ci0jZW5kaWYKLQotdGVtcGxhdGU8Y2xhc3MgVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KLXN0cnVjdCBzZWxlY3RfdW5pZm9ybV8wMQotewotICB0ZW1wbGF0ZTxjbGFzcyBSZWFsVHlwZT4KLSAgc3RydWN0IGFwcGx5Ci0gIHsKLSAgICB0eXBlZGVmIGJhY2t3YXJkX2NvbXBhdGlibGVfdW5pZm9ybV8wMTxVbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yLCBSZWFsVHlwZT4gdHlwZTsKLSAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZWxlY3RfdW5pZm9ybV8wMTxmbG9hdD4KLXsKLSAgdGVtcGxhdGU8Y2xhc3MgUmVhbFR5cGU+Ci0gIHN0cnVjdCBhcHBseQotICB7Ci0gICAgdHlwZWRlZiBuZXdfdW5pZm9ybV8wMTxmbG9hdD4gdHlwZTsKLSAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZWxlY3RfdW5pZm9ybV8wMTxkb3VibGU+Ci17Ci0gIHRlbXBsYXRlPGNsYXNzIFJlYWxUeXBlPgotICBzdHJ1Y3QgYXBwbHkKLSAgewotICAgIHR5cGVkZWYgbmV3X3VuaWZvcm1fMDE8ZG91YmxlPiB0eXBlOwotICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNlbGVjdF91bmlmb3JtXzAxPGxvbmcgZG91YmxlPgotewotICB0ZW1wbGF0ZTxjbGFzcyBSZWFsVHlwZT4KLSAgc3RydWN0IGFwcGx5Ci0gIHsKLSAgICB0eXBlZGVmIG5ld191bmlmb3JtXzAxPGxvbmcgZG91YmxlPiB0eXBlOwotICB9OwotfTsKLQotfQotCi0vLyBCZWNhdXNlIGl0IGlzIHNvIGNvbW1vbmx5IHVzZWQ6IHVuaWZvcm0gZGlzdHJpYnV0aW9uIG9uIHRoZSByZWFsIFswLi4xKQotLy8gcmFuZ2UuICBUaGlzIGFsbG93cyBmb3Igc3BlY2lhbGl6YXRpb25zIHRvIGF2b2lkIGEgY29zdGx5IGludCAtPiBmbG9hdAotLy8gY29udmVyc2lvbiBwbHVzIGZsb2F0IG11bHRpcGxpY2F0aW9uCi10ZW1wbGF0ZTxjbGFzcyBVbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yID0gZG91YmxlLCBjbGFzcyBSZWFsVHlwZSA9IGRvdWJsZT4KLWNsYXNzIHVuaWZvcm1fMDEKLSAgOiBwdWJsaWMgZGV0YWlsOjpzZWxlY3RfdW5pZm9ybV8wMTxVbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIGFwcGx5PFJlYWxUeXBlPjo6dHlwZQotewotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6c2VsZWN0X3VuaWZvcm1fMDE8VW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBhcHBseTxSZWFsVHlwZT46OnR5cGUgaW1wbF90eXBlOwotICB0eXBlZGVmIG5kbmJvb3N0OjpyYW5kb206OmRldGFpbDo6cHRyX2hlbHBlcjxVbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPiB0cmFpdHM7Ci1wdWJsaWM6Ci0KLSAgdW5pZm9ybV8wMSgpIHt9Ci0KLSAgZXhwbGljaXQgdW5pZm9ybV8wMSh0eXBlbmFtZSB0cmFpdHM6OnJ2YWx1ZV90eXBlIHJuZykKLSAgICA6IGltcGxfdHlwZShybmcpCi0gIHsKLSAgfQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fT1BFUkFUT1JTX0lOX05BTUVTUEFDRSkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFX0ZSSUVORFMpCi0gIHRlbXBsYXRlPGNsYXNzIENoYXJULCBjbGFzcyBUcmFpdHM+Ci0gIGZyaWVuZCBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsVHJhaXRzPiYKLSAgb3BlcmF0b3I8PChzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsVHJhaXRzPiYgb3MsIGNvbnN0IHVuaWZvcm1fMDEmIHUpCi0gIHsKLSAgICBvcyA8PCBzdGF0aWNfY2FzdDxjb25zdCBpbXBsX3R5cGUmPih1KTsKLSAgICByZXR1cm4gb3M7Ci0gIH0KLQotICB0ZW1wbGF0ZTxjbGFzcyBDaGFyVCwgY2xhc3MgVHJhaXRzPgotICBmcmllbmQgc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULFRyYWl0cz4mCi0gIG9wZXJhdG9yPj4oc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULFRyYWl0cz4mIGlzLCB1bmlmb3JtXzAxJiB1KQotICB7Ci0gICAgaXMgPj4gc3RhdGljX2Nhc3Q8aW1wbF90eXBlJj4odSk7Ci0gICAgcmV0dXJuIGlzOwotICB9Ci0jZW5kaWYKLX07Ci0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSByYW5kb20KLQotdXNpbmcgcmFuZG9tOjp1bmlmb3JtXzAxOwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZG9tL2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfUkFORE9NX1VOSUZPUk1fMDFfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS91bmlmb3JtX3NtYWxsaW50LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL3VuaWZvcm1fc21hbGxpbnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTBlMTAwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL3VuaWZvcm1fc21hbGxpbnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjg4ICswLDAgQEAKLS8qIGJvb3N0IHJhbmRvbS91bmlmb3JtX3NtYWxsaW50LmhwcCBoZWFkZXIgZmlsZQotICoKLSAqIENvcHlyaWdodCBKZW5zIE1hdXJlciAyMDAwLTIwMDEKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0gKgotICogJElkOiB1bmlmb3JtX3NtYWxsaW50LmhwcCA3MTAxOCAyMDExLTA0LTA1IDIxOjI3OjUyWiBzdGV2ZW5fd2F0YW5hYmUgJAotICoKLSAqIFJldmlzaW9uIGhpc3RvcnkKLSAqICAyMDAxLTA0LTA4ICBhZGRlZCBtaW48bWF4IGFzc2VydGlvbiAoTi4gQmVja2VyKQotICogIDIwMDEtMDItMTggIG1vdmVkIHRvIGluZGl2aWR1YWwgaGVhZGVyIGZpbGVzCi0gKi8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5ET01fVU5JRk9STV9TTUFMTElOVF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX1VOSUZPUk1fU01BTExJTlRfSFBQCi0KLSNpbmNsdWRlIDxpc3RyZWFtPgotI2luY2x1ZGUgPGlvc2Z3ZD4KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbGltaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19pbnRlZ3JhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZG9tL2RldGFpbC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmRvbS9kZXRhaWwvb3BlcmF0b3JzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5kb20vZGV0YWlsL3NpZ25lZF91bnNpZ25lZF90b29scy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZG9tL3VuaWZvcm1fMDEuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSByYW5kb20gewotCi0vLyB1bmlmb3JtIGludGVnZXIgZGlzdHJpYnV0aW9uIG9uIGEgc21hbGwgcmFuZ2UgW21pbiwgbWF4XQotCi0vKioKLSAqIFRoZSBkaXN0cmlidXRpb24gZnVuY3Rpb24gdW5pZm9ybV9zbWFsbGludCBtb2RlbHMgYSBccmFuZG9tX2Rpc3RyaWJ1dGlvbi4KLSAqIE9uIGVhY2ggaW52b2NhdGlvbiwgaXQgcmV0dXJucyBhIHJhbmRvbSBpbnRlZ2VyIHZhbHVlIHVuaWZvcm1seSBkaXN0cmlidXRlZAotICogaW4gdGhlIHNldCBvZiBpbnRlZ2VyIG51bWJlcnMge21pbiwgbWluKzEsIG1pbisyLCAuLi4sIG1heH0uIEl0IGFzc3VtZXMKLSAqIHRoYXQgdGhlIGRlc2lyZWQgcmFuZ2UgKG1heC1taW4rMSkgaXMgc21hbGwgY29tcGFyZWQgdG8gdGhlIHJhbmdlIG9mIHRoZQotICogdW5kZXJseWluZyBzb3VyY2Ugb2YgcmFuZG9tIG51bWJlcnMgYW5kIHRodXMgbWFrZXMgbm8gYXR0ZW1wdCB0byBsaW1pdAotICogcXVhbnRpemF0aW9uIGVycm9ycy4KLSAqCi0gKiBMZXQgXGYkcl97XG1hdGh0dHtvdXR9fSA9IChcbWJveHttYXh9LVxtYm94e21pbn0rMSlcZiQgdGhlIGRlc2lyZWQgcmFuZ2Ugb2YKLSAqIGludGVnZXIgbnVtYmVycywgYW5kCi0gKiBsZXQgXGYkcl97XG1hdGh0dHtiYXNlfX1cZiQgYmUgdGhlIHJhbmdlIG9mIHRoZSB1bmRlcmx5aW5nIHNvdXJjZSBvZiByYW5kb20KLSAqIG51bWJlcnMuIFRoZW4sIGZvciB0aGUgdW5pZm9ybSBkaXN0cmlidXRpb24sIHRoZSB0aGVvcmV0aWNhbCBwcm9iYWJpbGl0eQotICogZm9yIGFueSBudW1iZXIgaSBpbiB0aGUgcmFuZ2UgXGYkcl97XG1hdGh0dHtvdXR9fVxmJCB3aWxsIGJlCi0gKiBcZiRcZGlzcGxheXN0eWxlIHBfe1xtYXRodHR7b3V0fX0oaSkgPSBcZnJhY3sxfXtyX3tcbWF0aHR0e291dH19fVxmJC4KLSAqIExpa2V3aXNlLCBhc3N1bWUgYSB1bmlmb3JtIGRpc3RyaWJ1dGlvbiBvbiBcZiRyX3tcbWF0aHR0e2Jhc2V9fVxmJCBmb3IKLSAqIHRoZSB1bmRlcmx5aW5nIHNvdXJjZSBvZiByYW5kb20gbnVtYmVycywgaS5lLgotICogXGYkXGRpc3BsYXlzdHlsZSBwX3tcbWF0aHR0e2Jhc2V9fShpKSA9IFxmcmFjezF9e3Jfe1xtYXRodHR7YmFzZX19fVxmJC4KLSAqIExldCBcZiRwX3tcbWF0aHR0e291dFxfc319KGkpXGYkIGRlbm90ZSB0aGUgcmFuZG9tCi0gKiBkaXN0cmlidXRpb24gZ2VuZXJhdGVkIGJ5IEBjIHVuaWZvcm1fc21hbGxpbnQuIFRoZW4gdGhlIHN1bSBvdmVyIGFsbAotICogaSBpbiBcZiRyX3tcbWF0aHR0e291dH19XGYkIG9mCi0gKiBcZiRcZGlzcGxheXN0eWxlCi0gKiBcbGVmdChcZnJhY3twX3tcbWF0aHR0e291dFxfc319KGkpfXtwX3tcbWF0aHR0e291dH19KGkpfSAtIDFccmlnaHQpXjJcZiQKLSAqIHNoYWxsIG5vdCBleGNlZWQKLSAqIFxmJFxkaXNwbGF5c3R5bGUgXGZyYWN7cl97XG1hdGh0dHtvdXR9fX17cl97XG1hdGh0dHtiYXNlfX1eMn0KLSAqIChyX3tcbWF0aHR0e2Jhc2V9fSBcbWJveHsgbW9kIH0gcl97XG1hdGh0dHtvdXR9fSkKLSAqIChyX3tcbWF0aHR0e291dH19IC0gcl97XG1hdGh0dHtiYXNlfX0gXG1ib3h7IG1vZCB9IHJfe1xtYXRodHR7b3V0fX0pXGYkLgotICoKLSAqIFRoZSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgSW50VHlwZSBzaGFsbCBkZW5vdGUgYW4gaW50ZWdlci1saWtlIHZhbHVlIHR5cGUuCi0gKgotICogQHhtbG5vdGUKLSAqIFRoZSBwcm9wZXJ0eSBhYm92ZSBpcyB0aGUgc3F1YXJlIHN1bSBvZiB0aGUgcmVsYXRpdmUgZGlmZmVyZW5jZXMKLSAqIGluIHByb2JhYmlsaXRpZXMgYmV0d2VlbiB0aGUgZGVzaXJlZCB1bmlmb3JtIGRpc3RyaWJ1dGlvbgotICogXGYkcF97XG1hdGh0dHtvdXR9fShpKVxmJCBhbmQgdGhlIGdlbmVyYXRlZCBkaXN0cmlidXRpb24KLSAqIFxmJHBfe1xtYXRodHR7b3V0XF9zfX0oaSlcZiQuCi0gKiBUaGUgcHJvcGVydHkgY2FuIGJlIGZ1bGZpbGxlZCB3aXRoIHRoZSBjYWxjdWxhdGlvbgotICogXGYkKFxtYm94e2Jhc2VcX3JuZ30gXG1ib3h7IG1vZCB9IHJfe1xtYXRodHR7b3V0fX0pXGYkLCBhcyBmb2xsb3dzOgotICogTGV0IFxmJHIgPSByX3tcbWF0aHR0e2Jhc2V9fSBcbWJveHsgbW9kIH0gcl97XG1hdGh0dHtvdXR9fVxmJC4KLSAqIFRoZSBiYXNlIGRpc3RyaWJ1dGlvbiBvbiBcZiRyX3tcbWF0aHR0e2Jhc2V9fVxmJCBpcyBmb2xkZWQgb250byB0aGUKLSAqIHJhbmdlIFxmJHJfe1xtYXRodHR7b3V0fX1cZiQuIFRoZSBudW1iZXJzIGkgPCByIGhhdmUgYXNzaWduZWQKLSAqIFxmJFxkaXNwbGF5c3R5bGUKLSAqIFxsZWZ0XGxmbG9vclxmcmFje3Jfe1xtYXRodHR7YmFzZX19fXtyX3tcbWF0aHR0e291dH19fVxyaWdodFxyZmxvb3IrMVxmJAotICogbnVtYmVycyBvZiB0aGUgYmFzZSBkaXN0cmlidXRpb24sIHRoZSByZXN0IGhhcyBvbmx5IFxmJFxkaXNwbGF5c3R5bGUKLSAqIFxsZWZ0XGxmbG9vclxmcmFje3Jfe1xtYXRodHR7YmFzZX19fXtyX3tcbWF0aHR0e291dH19fVxyaWdodFxyZmxvb3JcZiQuCi0gKiBUaGVyZWZvcmUsCi0gKiBcZiRcZGlzcGxheXN0eWxlIHBfe1xtYXRodHR7b3V0XF9zfX0oaSkgPQotICogXGxlZnQoXGxlZnRcbGZsb29yXGZyYWN7cl97XG1hdGh0dHtiYXNlfX19Ci0gKiB7cl97XG1hdGh0dHtvdXR9fX1ccmlnaHRccmZsb29yKzFccmlnaHQpIC8KLSAqIHJfe1xtYXRodHR7YmFzZX19XGYkIGZvciBpIDwgciBhbmQgXGYkXGRpc3BsYXlzdHlsZSBwX3tcbWF0aHR0e291dFxfc319KGkpID0KLSAqIFxsZWZ0XGxmbG9vclxmcmFje3Jfe1xtYXRodHR7YmFzZX19fQotICoge3Jfe1xtYXRodHR7b3V0fX19XHJpZ2h0XHJmbG9vci9yX3tcbWF0aHR0e2Jhc2V9fVxmJCBvdGhlcndpc2UuCi0gKiBTdWJzdGl0dXRpbmcgdGhpcyBpbiB0aGUKLSAqIGFib3ZlIHN1bSBmb3JtdWxhIGxlYWRzIHRvIHRoZSBkZXNpcmVkIHJlc3VsdC4KLSAqIEBlbmR4bWxub3RlCi0gKgotICogTm90ZTogVGhlIHVwcGVyIGJvdW5kIGZvcgotICogXGYkKHJfe1xtYXRodHR7YmFzZX19IFxtYm94eyBtb2QgfSByX3tcbWF0aHR0e291dH19KQotICogKHJfe1xtYXRodHR7b3V0fX0gLSByX3tcbWF0aHR0e2Jhc2V9fSBcbWJveHsgbW9kIH0gcl97XG1hdGh0dHtvdXR9fSlcZiQgaXMKLSAqIFxmJFxkaXNwbGF5c3R5bGUgXGZyYWN7cl97XG1hdGh0dHtvdXR9fV4yfXs0fVxmJC4gIFJlZ2FyZGluZyB0aGUgdXBwZXIgYm91bmQKLSAqIGZvciB0aGUgc3F1YXJlIHN1bSBvZiB0aGUgcmVsYXRpdmUgcXVhbnRpemF0aW9uIGVycm9yIG9mCi0gKiBcZiRcZGlzcGxheXN0eWxlIFxmcmFje3JfXG1hdGh0dHtvdXR9XjN9ezRyX3tcbWF0aHR0e2Jhc2V9fV4yfVxmJCwgaXQKLSAqIHNlZW1zIHdpc2UgdG8gZWl0aGVyIGNob29zZSBcZiRyX3tcbWF0aHR0e2Jhc2V9fVxmJCBzbyB0aGF0Ci0gKiBcZiRyX3tcbWF0aHR0e2Jhc2V9fSA+IDEwcl97XG1hdGh0dHtvdXR9fV4yXGYkIG9yIGVuc3VyZSB0aGF0Ci0gKiBcZiRyX3tcbWF0aHR0e2Jhc2V9fVxmJCBpcwotICogZGl2aXNpYmxlIGJ5IFxmJHJfe1xtYXRodHR7b3V0fX1cZiQuCi0gKi8KLXRlbXBsYXRlPGNsYXNzIEludFR5cGUgPSBpbnQ+Ci1jbGFzcyB1bmlmb3JtX3NtYWxsaW50Ci17Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBJbnRUeXBlIGlucHV0X3R5cGU7Ci0gICAgdHlwZWRlZiBJbnRUeXBlIHJlc3VsdF90eXBlOwotCi0gICAgY2xhc3MgcGFyYW1fdHlwZQotICAgIHsKLSAgICBwdWJsaWM6Ci0KLSAgICAgICAgdHlwZWRlZiB1bmlmb3JtX3NtYWxsaW50IGRpc3RyaWJ1dGlvbl90eXBlOwotCi0gICAgICAgIC8qKiBjb25zdHJ1Y3RzIHRoZSBwYXJhbWV0ZXJzIG9mIGEgQGMgdW5pZm9ybV9zbWFsbGludCBkaXN0cmlidXRpb24uICovCi0gICAgICAgIHBhcmFtX3R5cGUoSW50VHlwZSBtaW5fYXJnID0gMCwgSW50VHlwZSBtYXhfYXJnID0gOSkKLSAgICAgICAgICA6IF9taW4obWluX2FyZyksIF9tYXgobWF4X2FyZykKLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKF9taW4gPD0gX21heCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvKiogUmV0dXJucyB0aGUgbWluaW11bSB2YWx1ZS4gKi8KLSAgICAgICAgSW50VHlwZSBhKCkgY29uc3QgeyByZXR1cm4gX21pbjsgfQotICAgICAgICAvKiogUmV0dXJucyB0aGUgbWF4aW11bSB2YWx1ZS4gKi8KLSAgICAgICAgSW50VHlwZSBiKCkgY29uc3QgeyByZXR1cm4gX21heDsgfQotICAgICAgICAKLQotICAgICAgICAvKiogV3JpdGVzIHRoZSBwYXJhbWV0ZXJzIHRvIGEgQGMgc3RkOjpvc3RyZWFtLiAqLwotICAgICAgICBORE5CT09TVF9SQU5ET01fREVUQUlMX09TVFJFQU1fT1BFUkFUT1Iob3MsIHBhcmFtX3R5cGUsIHBhcm0pCi0gICAgICAgIHsKLSAgICAgICAgICAgIG9zIDw8IHBhcm0uX21pbiA8PCAiICIgPDwgcGFybS5fbWF4OwotICAgICAgICAgICAgcmV0dXJuIG9zOwotICAgICAgICB9Ci0gICAgCi0gICAgICAgIC8qKiBSZWFkcyB0aGUgcGFyYW1ldGVycyBmcm9tIGEgQGMgc3RkOjppc3RyZWFtLiAqLwotICAgICAgICBORE5CT09TVF9SQU5ET01fREVUQUlMX0lTVFJFQU1fT1BFUkFUT1IoaXMsIHBhcmFtX3R5cGUsIHBhcm0pCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlzID4+IHBhcm0uX21pbiA+PiBzdGQ6OndzID4+IHBhcm0uX21heDsKLSAgICAgICAgICAgIHJldHVybiBpczsKLSAgICAgICAgfQotCi0gICAgICAgIC8qKiBSZXR1cm5zIHRydWUgaWYgdGhlIHR3byBzZXRzIG9mIHBhcmFtZXRlcnMgYXJlIGVxdWFsLiAqLwotICAgICAgICBORE5CT09TVF9SQU5ET01fREVUQUlMX0VRVUFMSVRZX09QRVJBVE9SKHBhcmFtX3R5cGUsIGxocywgcmhzKQotICAgICAgICB7IHJldHVybiBsaHMuX21pbiA9PSByaHMuX21pbiAmJiBsaHMuX21heCA9PSByaHMuX21heDsgfQotCi0gICAgICAgIC8qKiBSZXR1cm5zIHRydWUgaWYgdGhlIHR3byBzZXRzIG9mIHBhcmFtZXRlcnMgYXJlIGRpZmZlcmVudC4gKi8KLSAgICAgICAgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9JTkVRVUFMSVRZX09QRVJBVE9SKHBhcmFtX3R5cGUpCi0KLSAgICBwcml2YXRlOgotICAgICAgICBJbnRUeXBlIF9taW47Ci0gICAgICAgIEludFR5cGUgX21heDsKLSAgICB9OwotCi0gICAgLyoqCi0gICAgICogQ29uc3RydWN0cyBhIEBjIHVuaWZvcm1fc21hbGxpbnQuIEBjIG1pbiBhbmQgQGMgbWF4IGFyZSB0aGUKLSAgICAgKiBsb3dlciBhbmQgdXBwZXIgYm91bmRzIG9mIHRoZSBvdXRwdXQgcmFuZ2UsIHJlc3BlY3RpdmVseS4KLSAgICAgKi8KLSAgICBleHBsaWNpdCB1bmlmb3JtX3NtYWxsaW50KEludFR5cGUgbWluX2FyZyA9IDAsIEludFR5cGUgbWF4X2FyZyA9IDkpCi0gICAgICA6IF9taW4obWluX2FyZyksIF9tYXgobWF4X2FyZykge30KLQotICAgIC8qKgotICAgICAqIENvbnN0cnVjdHMgYSBAYyB1bmlmb3JtX3NtYWxsaW50IGZyb20gaXRzIHBhcmFtZXRlcnMuCi0gICAgICovCi0gICAgZXhwbGljaXQgdW5pZm9ybV9zbWFsbGludChjb25zdCBwYXJhbV90eXBlJiBwYXJtKQotICAgICAgOiBfbWluKHBhcm0uYSgpKSwgX21heChwYXJtLmIoKSkge30KLQotICAgIC8qKiBSZXR1cm5zIHRoZSBtaW5pbXVtIHZhbHVlIG9mIHRoZSBkaXN0cmlidXRpb24uICovCi0gICAgcmVzdWx0X3R5cGUgYSgpIGNvbnN0IHsgcmV0dXJuIF9taW47IH0KLSAgICAvKiogUmV0dXJucyB0aGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgZGlzdHJpYnV0aW9uLiAqLwotICAgIHJlc3VsdF90eXBlIGIoKSBjb25zdCB7IHJldHVybiBfbWF4OyB9Ci0gICAgLyoqIFJldHVybnMgdGhlIG1pbmltdW0gdmFsdWUgb2YgdGhlIGRpc3RyaWJ1dGlvbi4gKi8KLSAgICByZXN1bHRfdHlwZSBtaW4gTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCkgY29uc3QgeyByZXR1cm4gX21pbjsgfQotICAgIC8qKiBSZXR1cm5zIHRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBkaXN0cmlidXRpb24uICovCi0gICAgcmVzdWx0X3R5cGUgbWF4IE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpIGNvbnN0IHsgcmV0dXJuIF9tYXg7IH0KLQotICAgIC8qKiBSZXR1cm5zIHRoZSBwYXJhbWV0ZXJzIG9mIHRoZSBkaXN0cmlidXRpb24uICovCi0gICAgcGFyYW1fdHlwZSBwYXJhbSgpIGNvbnN0IHsgcmV0dXJuIHBhcmFtX3R5cGUoX21pbiwgX21heCk7IH0KLSAgICAvKiogU2V0cyB0aGUgcGFyYW1ldGVycyBvZiB0aGUgZGlzdHJpYnV0aW9uLiAqLwotICAgIHZvaWQgcGFyYW0oY29uc3QgcGFyYW1fdHlwZSYgcGFybSkKLSAgICB7Ci0gICAgICAgIF9taW4gPSBwYXJtLmEoKTsKLSAgICAgICAgX21heCA9IHBhcm0uYigpOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIEVmZmVjdHM6IFN1YnNlcXVlbnQgdXNlcyBvZiB0aGUgZGlzdHJpYnV0aW9uIGRvIG5vdCBkZXBlbmQKLSAgICAgKiBvbiB2YWx1ZXMgcHJvZHVjZWQgYnkgYW55IGVuZ2luZSBwcmlvciB0byBpbnZva2luZyByZXNldC4KLSAgICAgKi8KLSAgICB2b2lkIHJlc2V0KCkgeyB9Ci0KLSAgICAvKiogUmV0dXJucyBhIHZhbHVlIHVuaWZvcm1seSBkaXN0cmlidXRlZCBpbiB0aGUgcmFuZ2UgW21pbigpLCBtYXgoKV0uICovCi0gICAgdGVtcGxhdGU8Y2xhc3MgRW5naW5lPgotICAgIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoRW5naW5lJiBlbmcpIGNvbnN0Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEVuZ2luZTo6cmVzdWx0X3R5cGUgYmFzZV9yZXN1bHQ7Ci0gICAgICAgIHJldHVybiBnZW5lcmF0ZShlbmcsIG5kbmJvb3N0Ojppc19pbnRlZ3JhbDxiYXNlX3Jlc3VsdD4oKSk7Ci0gICAgfQotCi0gICAgLyoqIFJldHVybnMgYSB2YWx1ZSB1bmlmb3JtbHkgZGlzdHJpYnV0ZWQgaW4gdGhlIHJhbmdlIFtwYXJhbS5hKCksIHBhcmFtLmIoKV0uICovCi0gICAgdGVtcGxhdGU8Y2xhc3MgRW5naW5lPgotICAgIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoRW5naW5lJiBlbmcsIGNvbnN0IHBhcmFtX3R5cGUmIHBhcm0pIGNvbnN0Ci0gICAgeyByZXR1cm4gdW5pZm9ybV9zbWFsbGludChwYXJtKShlbmcpOyB9Ci0KLSAgICAvKiogV3JpdGVzIHRoZSBkaXN0cmlidXRpb24gdG8gYSBAYyBzdGQ6Om9zdHJlYW0uICovCi0gICAgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9PU1RSRUFNX09QRVJBVE9SKG9zLCB1bmlmb3JtX3NtYWxsaW50LCB1ZCkKLSAgICB7Ci0gICAgICAgIG9zIDw8IHVkLl9taW4gPDwgIiAiIDw8IHVkLl9tYXg7Ci0gICAgICAgIHJldHVybiBvczsKLSAgICB9Ci0gICAgCi0gICAgLyoqIFJlYWRzIHRoZSBkaXN0cmlidXRpb24gZnJvbSBhIEBjIHN0ZDo6aXN0cmVhbS4gKi8KLSAgICBORE5CT09TVF9SQU5ET01fREVUQUlMX0lTVFJFQU1fT1BFUkFUT1IoaXMsIHVuaWZvcm1fc21hbGxpbnQsIHVkKQotICAgIHsKLSAgICAgICAgaXMgPj4gdWQuX21pbiA+PiBzdGQ6OndzID4+IHVkLl9tYXg7Ci0gICAgICAgIHJldHVybiBpczsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHR3byBkaXN0cmlidXRpb25zIHdpbGwgcHJvZHVjZSBpZGVudGljYWwKLSAgICAgKiBzZXF1ZW5jZXMgb2YgdmFsdWVzIGdpdmVuIGVxdWFsIGdlbmVyYXRvcnMuCi0gICAgICovCi0gICAgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9FUVVBTElUWV9PUEVSQVRPUih1bmlmb3JtX3NtYWxsaW50LCBsaHMsIHJocykKLSAgICB7IHJldHVybiBsaHMuX21pbiA9PSByaHMuX21pbiAmJiBsaHMuX21heCA9PSByaHMuX21heDsgfQotICAgIAotICAgIC8qKgotICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgdHdvIGRpc3RyaWJ1dGlvbnMgbWF5IHByb2R1Y2UgZGlmZmVyZW50Ci0gICAgICogc2VxdWVuY2VzIG9mIHZhbHVlcyBnaXZlbiBlcXVhbCBnZW5lcmF0b3JzLgotICAgICAqLwotICAgIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfSU5FUVVBTElUWV9PUEVSQVRPUih1bmlmb3JtX3NtYWxsaW50KQotCi1wcml2YXRlOgotICAgIAotICAgIC8vIFxjb25kIHNob3dfcHJpdmF0ZQotICAgIHRlbXBsYXRlPGNsYXNzIEVuZ2luZT4KLSAgICByZXN1bHRfdHlwZSBnZW5lcmF0ZShFbmdpbmUmIGVuZywgbmRuYm9vc3Q6Om1wbDo6dHJ1ZV8pIGNvbnN0Ci0gICAgewotICAgICAgICAvLyBlcXVpdmFsZW50IHRvIChlbmcoKSAtIGVuZy5taW4oKSkgJSAoX21heCAtIF9taW4gKyAxKSArIF9taW4sCi0gICAgICAgIC8vIGJ1dCBndWFyYW50ZWVzIG5vIG92ZXJmbG93LgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEVuZ2luZTo6cmVzdWx0X3R5cGUgYmFzZV9yZXN1bHQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6Om1ha2VfdW5zaWduZWQ8YmFzZV9yZXN1bHQ+Ojp0eXBlIGJhc2VfdW5zaWduZWQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6Om1ha2VfdW5zaWduZWQ8cmVzdWx0X3R5cGU+Ojp0eXBlIHJhbmdlX3R5cGU7Ci0gICAgICAgIHJhbmdlX3R5cGUgcmFuZ2UgPSByYW5kb206OmRldGFpbDo6c3VidHJhY3Q8cmVzdWx0X3R5cGU+KCkoX21heCwgX21pbik7Ci0gICAgICAgIGJhc2VfdW5zaWduZWQgYmFzZV9yYW5nZSA9Ci0gICAgICAgICAgICByYW5kb206OmRldGFpbDo6c3VidHJhY3Q8cmVzdWx0X3R5cGU+KCkoKGVuZy5tYXgpKCksIChlbmcubWluKSgpKTsKLSAgICAgICAgYmFzZV91bnNpZ25lZCB2YWwgPQotICAgICAgICAgICAgcmFuZG9tOjpkZXRhaWw6OnN1YnRyYWN0PGJhc2VfcmVzdWx0PigpKGVuZygpLCAoZW5nLm1pbikoKSk7Ci0gICAgICAgIGlmKHJhbmdlID49IGJhc2VfcmFuZ2UpIHsKLSAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6cmFuZG9tOjpkZXRhaWw6OmFkZDxyYW5nZV90eXBlLCByZXN1bHRfdHlwZT4oKSgKLSAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxyYW5nZV90eXBlPih2YWwpLCBfbWluKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGJhc2VfdW5zaWduZWQgbW9kdWx1cyA9IHN0YXRpY19jYXN0PGJhc2VfdW5zaWduZWQ+KHJhbmdlKSArIDE7Ci0gICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnJhbmRvbTo6ZGV0YWlsOjphZGQ8cmFuZ2VfdHlwZSwgcmVzdWx0X3R5cGU+KCkoCi0gICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8cmFuZ2VfdHlwZT4odmFsICUgbW9kdWx1cyksIF9taW4pOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIHRlbXBsYXRlPGNsYXNzIEVuZ2luZT4KLSAgICByZXN1bHRfdHlwZSBnZW5lcmF0ZShFbmdpbmUmIGVuZywgbmRuYm9vc3Q6Om1wbDo6ZmFsc2VfKSBjb25zdAotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBFbmdpbmU6OnJlc3VsdF90eXBlIGJhc2VfcmVzdWx0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjptYWtlX3Vuc2lnbmVkPHJlc3VsdF90eXBlPjo6dHlwZSByYW5nZV90eXBlOwotICAgICAgICByYW5nZV90eXBlIHJhbmdlID0gcmFuZG9tOjpkZXRhaWw6OnN1YnRyYWN0PHJlc3VsdF90eXBlPigpKF9tYXgsIF9taW4pOwotICAgICAgICBiYXNlX3Jlc3VsdCB2YWwgPSBuZG5ib29zdDo6dW5pZm9ybV8wMTxiYXNlX3Jlc3VsdD4oKShlbmcpOwotICAgICAgICAvLyB3aGF0IGlzIHRoZSB3b3JzdCB0aGF0IGNhbiBwb3NzaWJseSBoYXBwZW4gaGVyZT8KLSAgICAgICAgLy8gYmFzZV9yZXN1bHQgbWF5IG5vdCBiZSBhYmxlIHRvIHJlcHJlc2VudCBhbGwgdGhlIHZhbHVlcyBpbiBbMCwgcmFuZ2VdCi0gICAgICAgIC8vIGV4YWN0bHkuICBJZiB0aGlzIGhhcHBlbnMsIGl0IHdpbGwgY2F1c2Ugcm91bmQgb2ZmIGVycm9yIGFuZCB3ZQotICAgICAgICAvLyB3b24ndCBiZSBhYmxlIHRvIHByb2R1Y2UgYWxsIHRoZSB2YWx1ZXMgaW4gdGhlIHJhbmdlLiAgV2UgZG9uJ3QKLSAgICAgICAgLy8gY2FyZSBhYm91dCB0aGlzIGJlY2F1c2UgdGhlIHVzZXIgaGFzIGFscmVhZHkgdG9sZCB1cyBub3QgdG8gYnkKLSAgICAgICAgLy8gdXNpbmcgdW5pZm9ybV9zbWFsbGludC4gIEhvd2V2ZXIsIHdlIGRvIG5lZWQgdG8gYmUgY2FyZWZ1bAotICAgICAgICAvLyB0byBjbGFtcCB0aGUgcmVzdWx0LCBvciBmbG9hdGluZyBwb2ludCByb3VuZGluZyBjYW4gcHJvZHVjZQotICAgICAgICAvLyBhbiBvdXQgb2YgcmFuZ2UgcmVzdWx0LgotICAgICAgICByYW5nZV90eXBlIG9mZnNldCA9IHN0YXRpY19jYXN0PHJhbmdlX3R5cGU+KHZhbCAqIChzdGF0aWNfY2FzdDxiYXNlX3Jlc3VsdD4ocmFuZ2UpICsgMSkpOwotICAgICAgICBpZihvZmZzZXQgPiByYW5nZSkgcmV0dXJuIF9tYXg7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6cmFuZG9tOjpkZXRhaWw6OmFkZDxyYW5nZV90eXBlLCByZXN1bHRfdHlwZT4oKShvZmZzZXQgLCBfbWluKTsKLSAgICB9Ci0gICAgLy8gXGVuZGNvbmQKLQotICAgIHJlc3VsdF90eXBlIF9taW47Ci0gICAgcmVzdWx0X3R5cGUgX21heDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIHJhbmRvbQotCi11c2luZyByYW5kb206OnVuaWZvcm1fc21hbGxpbnQ7Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SQU5ET01fVU5JRk9STV9TTUFMTElOVF9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvYWxnb3JpdGhtL2VxdWFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvYWxnb3JpdGhtL2VxdWFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzA5MTAzNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2FsZ29yaXRobS9lcXVhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOTggKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgTmVpbCBHcm92ZXMgMjAwOS4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyAgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfQUxHT1JJVEhNX0VRVUFMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9BTEdPUklUSE1fRVFVQUxfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2NvbmNlcHRzLmhwcD4KLSNpbmNsdWRlIDxpdGVyYXRvcj4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gICAgbmFtZXNwYWNlIHJhbmdlX2RldGFpbAotICAgIHsKLSAgICAgICAgLy8gQW4gaW1wbGVtZW50YXRpb24gb2YgZXF1YWxpdHkgY29tcGFyaXNvbiB0aGF0IGlzIG9wdGltaXplZCBmb3IgaXRlcmF0b3IKLSAgICAgICAgLy8gdHJhdmVyc2FsIGNhdGVnb3JpZXMgbGVzcyB0aGFuIFJhbmRvbUFjY2Vzc1RyYXZlcnNhbC4KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFNpbmdsZVBhc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMSwKLSAgICAgICAgICAgICAgICAgIGNsYXNzIFNpbmdsZVBhc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMiwKLSAgICAgICAgICAgICAgICAgIGNsYXNzIEl0ZXJhdG9yQ2F0ZWdvcnlUYWcxLAotICAgICAgICAgICAgICAgICAgY2xhc3MgSXRlcmF0b3JDYXRlZ29yeVRhZzIgPgotICAgICAgICBpbmxpbmUgYm9vbCBlcXVhbF9pbXBsKCBTaW5nbGVQYXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjEgZmlyc3QxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaW5nbGVQYXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjEgbGFzdDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpbmdsZVBhc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMiBmaXJzdDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpbmdsZVBhc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMiBsYXN0MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0b3JDYXRlZ29yeVRhZzEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdG9yQ2F0ZWdvcnlUYWcyICkKLSAgICAgICAgewotICAgICAgICAgICAgd2hpbGUgKHRydWUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGxlZnQgcmFuZ2UgdGhlbiB0aGlzIGlzCi0gICAgICAgICAgICAgICAgLy8gdGhlIGVuZCBvZiB0aGUgbG9vcC4gVGhleSBhcmUgZXF1YWwgaWYgYW5kIG9ubHkgaWYgd2UgaGF2ZQotICAgICAgICAgICAgICAgIC8vIHNpbXVsdGFuZW91c2x5IHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgcmlnaHQgcmFuZ2UuCi0gICAgICAgICAgICAgICAgaWYgKGZpcnN0MSA9PSBsYXN0MSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpcnN0MiA9PSBsYXN0MjsKLQotICAgICAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSByaWdodCByYW5nZSBhdCB0aGlzIGxpbmUKLSAgICAgICAgICAgICAgICAvLyBpdCBpbmRpY2F0ZXMgdGhhdCB0aGUgcmlnaHQgcmFuZ2UgaXMgc2hvcnRlciB0aGFuIHRoZSBsZWZ0Ci0gICAgICAgICAgICAgICAgLy8gYW5kIGhlbmNlIHRoZSByZXN1bHQgaXMgZmFsc2UuCi0gICAgICAgICAgICAgICAgaWYgKGZpcnN0MiA9PSBsYXN0MikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICAgICAgLy8gY29udGludWUgbG9vcGluZyBpZiBhbmQgb25seSBpZiB0aGUgdmFsdWVzIGFyZSBlcXVhbAotICAgICAgICAgICAgICAgIGlmICgqZmlyc3QxICE9ICpmaXJzdDIpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgICAgKytmaXJzdDE7Ci0gICAgICAgICAgICAgICAgKytmaXJzdDI7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIFJlYWNoaW5nIHRoaXMgbGluZSBpbiB0aGUgYWxnb3JpdGhtIGluZGljYXRlcyB0aGF0IGEgdmFsdWUKLSAgICAgICAgICAgIC8vIGluZXF1YWxpdHkgaGFzIGJlZW4gZGV0ZWN0ZWQuCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgU2luZ2xlUGFzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IxLAotICAgICAgICAgICAgICAgICAgY2xhc3MgU2luZ2xlUGFzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IyLAotICAgICAgICAgICAgICAgICAgY2xhc3MgSXRlcmF0b3JDYXRlZ29yeVRhZzEsCi0gICAgICAgICAgICAgICAgICBjbGFzcyBJdGVyYXRvckNhdGVnb3J5VGFnMiwKLSAgICAgICAgICAgICAgICAgIGNsYXNzIEJpbmFyeVByZWRpY2F0ZSA+Ci0gICAgICAgIGlubGluZSBib29sIGVxdWFsX2ltcGwoIFNpbmdsZVBhc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMSBmaXJzdDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpbmdsZVBhc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMSBsYXN0MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2luZ2xlUGFzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IyIGZpcnN0MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2luZ2xlUGFzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IyIGxhc3QyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaW5hcnlQcmVkaWNhdGUgICAgICAgICAgICAgICAgICAgICAgcHJlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0b3JDYXRlZ29yeVRhZzEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdG9yQ2F0ZWdvcnlUYWcyICkKLSAgICAgICAgewotICAgICAgICAgICAgd2hpbGUgKHRydWUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGxlZnQgcmFuZ2UgdGhlbiB0aGlzIGlzCi0gICAgICAgICAgICAgICAgLy8gdGhlIGVuZCBvZiB0aGUgbG9vcC4gVGhleSBhcmUgZXF1YWwgaWYgYW5kIG9ubHkgaWYgd2UgaGF2ZQotICAgICAgICAgICAgICAgIC8vIHNpbXVsdGFuZW91c2x5IHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgcmlnaHQgcmFuZ2UuCi0gICAgICAgICAgICAgICAgaWYgKGZpcnN0MSA9PSBsYXN0MSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpcnN0MiA9PSBsYXN0MjsKLQotICAgICAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSByaWdodCByYW5nZSBhdCB0aGlzIGxpbmUKLSAgICAgICAgICAgICAgICAvLyBpdCBpbmRpY2F0ZXMgdGhhdCB0aGUgcmlnaHQgcmFuZ2UgaXMgc2hvcnRlciB0aGFuIHRoZSBsZWZ0Ci0gICAgICAgICAgICAgICAgLy8gYW5kIGhlbmNlIHRoZSByZXN1bHQgaXMgZmFsc2UuCi0gICAgICAgICAgICAgICAgaWYgKGZpcnN0MiA9PSBsYXN0MikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICAgICAgLy8gY29udGludWUgbG9vcGluZyBpZiBhbmQgb25seSBpZiB0aGUgdmFsdWVzIGFyZSBlcXVhbAotICAgICAgICAgICAgICAgIGlmICghcHJlZCgqZmlyc3QxLCAqZmlyc3QyKSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICArK2ZpcnN0MTsKLSAgICAgICAgICAgICAgICArK2ZpcnN0MjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gUmVhY2hpbmcgdGhpcyBsaW5lIGluIHRoZSBhbGdvcml0aG0gaW5kaWNhdGVzIHRoYXQgYSB2YWx1ZQotICAgICAgICAgICAgLy8gaW5lcXVhbGl0eSBoYXMgYmVlbiBkZXRlY3RlZC4KLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEFuIGltcGxlbWVudGF0aW9uIG9mIGVxdWFsaXR5IGNvbXBhcmlzb24gdGhhdCBpcyBvcHRpbWl6ZWQgZm9yCi0gICAgICAgIC8vIHJhbmRvbSBhY2Nlc3MgaXRlcmF0b3JzLgotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUmFuZG9tQWNjZXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjEsCi0gICAgICAgICAgICAgICAgICBjbGFzcyBSYW5kb21BY2Nlc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMiA+Ci0gICAgICAgIGlubGluZSBib29sIGVxdWFsX2ltcGwoIFJhbmRvbUFjY2Vzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IxIGZpcnN0MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmFuZG9tQWNjZXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjEgbGFzdDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJhbmRvbUFjY2Vzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IyIGZpcnN0MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmFuZG9tQWNjZXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjIgbGFzdDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKChsYXN0MSAtIGZpcnN0MSkgPT0gKGxhc3QyIC0gZmlyc3QyKSkKLSAgICAgICAgICAgICAgICAmJiBzdGQ6OmVxdWFsKGZpcnN0MSwgbGFzdDEsIGZpcnN0Mik7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUmFuZG9tQWNjZXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjEsCi0gICAgICAgICAgICAgICAgICBjbGFzcyBSYW5kb21BY2Nlc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMiwKLSAgICAgICAgICAgICAgICAgIGNsYXNzIEJpbmFyeVByZWRpY2F0ZSA+Ci0gICAgICAgIGlubGluZSBib29sIGVxdWFsX2ltcGwoIFJhbmRvbUFjY2Vzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IxIGZpcnN0MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmFuZG9tQWNjZXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjEgbGFzdDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJhbmRvbUFjY2Vzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IyIGZpcnN0MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmFuZG9tQWNjZXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjIgbGFzdDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpbmFyeVByZWRpY2F0ZSAgICAgICAgICAgICAgICAgICAgICAgIHByZWQgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKChsYXN0MSAtIGZpcnN0MSkgPT0gKGxhc3QyIC0gZmlyc3QyKSkKLSAgICAgICAgICAgICAgICAmJiBzdGQ6OmVxdWFsKGZpcnN0MSwgbGFzdDEsIGZpcnN0MiwgcHJlZCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgU2luZ2xlUGFzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IxLAotICAgICAgICAgICAgICAgICAgY2xhc3MgU2luZ2xlUGFzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IyID4KLSAgICAgICAgaW5saW5lIGJvb2wgZXF1YWwoIFNpbmdsZVBhc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMSBmaXJzdDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBTaW5nbGVQYXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjEgbGFzdDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBTaW5nbGVQYXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjIgZmlyc3QyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgU2luZ2xlUGFzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IyIGxhc3QyICkKLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czwgU2luZ2xlUGFzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IxID46Oml0ZXJhdG9yX2NhdGVnb3J5IHRhZzE7Ci0gICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPCBTaW5nbGVQYXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjIgPjo6aXRlcmF0b3JfY2F0ZWdvcnkgdGFnMjsKLQotICAgICAgICAgICAgcmV0dXJuIGVxdWFsX2ltcGwoZmlyc3QxLCBsYXN0MSwgZmlyc3QyLCBsYXN0MiwgdGFnMSwgdGFnMik7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgU2luZ2xlUGFzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IxLAotICAgICAgICAgICAgICAgICAgY2xhc3MgU2luZ2xlUGFzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IyLAotICAgICAgICAgICAgICAgICAgY2xhc3MgQmluYXJ5UHJlZGljYXRlID4KLSAgICAgICAgaW5saW5lIGJvb2wgZXF1YWwoIFNpbmdsZVBhc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMSBmaXJzdDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBTaW5nbGVQYXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjEgbGFzdDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBTaW5nbGVQYXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjIgZmlyc3QyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgU2luZ2xlUGFzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IyIGxhc3QyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgQmluYXJ5UHJlZGljYXRlICAgICAgICAgICAgICAgICAgICAgIHByZWQgKQotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPCBTaW5nbGVQYXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjEgPjo6aXRlcmF0b3JfY2F0ZWdvcnkgdGFnMTsKLSAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgc3RkOjppdGVyYXRvcl90cmFpdHM8IFNpbmdsZVBhc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMiA+OjppdGVyYXRvcl9jYXRlZ29yeSB0YWcyOwotCi0gICAgICAgICAgICByZXR1cm4gZXF1YWxfaW1wbChmaXJzdDEsIGxhc3QxLCBmaXJzdDIsIGxhc3QyLCBwcmVkLCB0YWcxLCB0YWcyKTsKLSAgICAgICAgfQotCi0gICAgfSAvLyBuYW1lc3BhY2UgcmFuZ2VfZGV0YWlsCi0KLSAgICBuYW1lc3BhY2UgcmFuZ2UKLSAgICB7Ci0KLSAgICAgICAgLy8vIFxicmllZiB0ZW1wbGF0ZSBmdW5jdGlvbiBlcXVhbAotICAgICAgICAvLy8KLSAgICAgICAgLy8vIHJhbmdlLWJhc2VkIHZlcnNpb24gb2YgdGhlIGVxdWFsIHN0ZCBhbGdvcml0aG0KLSAgICAgICAgLy8vCi0gICAgICAgIC8vLyBccHJlIFNpbmdsZVBhc3NSYW5nZTEgaXMgYSBtb2RlbCBvZiB0aGUgU2luZ2xlUGFzc1JhbmdlQ29uY2VwdAotICAgICAgICAvLy8gXHByZSBTaW5nbGVQYXNzUmFuZ2UyIGlzIGEgbW9kZWwgb2YgdGhlIFNpbmdsZVBhc3NSYW5nZUNvbmNlcHQKLSAgICAgICAgLy8vIFxwcmUgQmluYXJ5UHJlZGljYXRlIGlzIGEgbW9kZWwgb2YgdGhlIEJpbmFyeVByZWRpY2F0ZUNvbmNlcHQKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFNpbmdsZVBhc3NSYW5nZTEsIGNsYXNzIFNpbmdsZVBhc3NSYW5nZTIgPgotICAgICAgICBpbmxpbmUgYm9vbCBlcXVhbCggY29uc3QgU2luZ2xlUGFzc1JhbmdlMSYgcm5nMSwgY29uc3QgU2luZ2xlUGFzc1JhbmdlMiYgcm5nMiApCi0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX1JBTkdFX0NPTkNFUFRfQVNTRVJUKCggU2luZ2xlUGFzc1JhbmdlQ29uY2VwdDxjb25zdCBTaW5nbGVQYXNzUmFuZ2UxPiApKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1JBTkdFX0NPTkNFUFRfQVNTRVJUKCggU2luZ2xlUGFzc1JhbmdlQ29uY2VwdDxjb25zdCBTaW5nbGVQYXNzUmFuZ2UyPiApKTsKLQotICAgICAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6ZXF1YWwoCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YmVnaW4ocm5nMSksIDo6bmRuYm9vc3Q6OmVuZChybmcxKSwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjpiZWdpbihybmcyKSwgOjpuZG5ib29zdDo6ZW5kKHJuZzIpICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLy8gXG92ZXJsb2FkCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBTaW5nbGVQYXNzUmFuZ2UxLCBjbGFzcyBTaW5nbGVQYXNzUmFuZ2UyLCBjbGFzcyBCaW5hcnlQcmVkaWNhdGUgPgotICAgICAgICBpbmxpbmUgYm9vbCBlcXVhbCggY29uc3QgU2luZ2xlUGFzc1JhbmdlMSYgcm5nMSwgY29uc3QgU2luZ2xlUGFzc1JhbmdlMiYgcm5nMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpbmFyeVByZWRpY2F0ZSBwcmVkICkKLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfUkFOR0VfQ09OQ0VQVF9BU1NFUlQoKCBTaW5nbGVQYXNzUmFuZ2VDb25jZXB0PGNvbnN0IFNpbmdsZVBhc3NSYW5nZTE+ICkpOwotICAgICAgICAgICAgTkROQk9PU1RfUkFOR0VfQ09OQ0VQVF9BU1NFUlQoKCBTaW5nbGVQYXNzUmFuZ2VDb25jZXB0PGNvbnN0IFNpbmdsZVBhc3NSYW5nZTI+ICkpOwotCi0gICAgICAgICAgICByZXR1cm4gOjpuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjplcXVhbCgKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjpiZWdpbihybmcxKSwgOjpuZG5ib29zdDo6ZW5kKHJuZzEpLAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmJlZ2luKHJuZzIpLCA6Om5kbmJvb3N0OjplbmQocm5nMiksCi0gICAgICAgICAgICAgICAgcHJlZCk7Ci0gICAgICAgIH0KLQotICAgIH0gLy8gbmFtZXNwYWNlIHJhbmdlCi0gICAgdXNpbmcgOjpuZG5ib29zdDo6cmFuZ2U6OmVxdWFsOwotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIGluY2x1ZGUgZ3VhcmQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvYXNfbGl0ZXJhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2FzX2xpdGVyYWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OTdlZDJlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvYXNfbGl0ZXJhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjcgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgVGhvcnN0ZW4gT3R0b3NlbiAyMDA2LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0FTX0xJVEVSQUxfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0FTX0xJVEVSQUxfSFBQCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTIwMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcKLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvYXNfbGl0ZXJhbC5ocHA+Ci0jZWxzZQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3JfcmFuZ2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9zdHJfdHlwZXMuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaW5jbHVkZSA8Y3N0cmluZz4KLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1dDSEFSCi0jaW5jbHVkZSA8Y3djaGFyPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIG5hbWVzcGFjZSByYW5nZV9kZXRhaWwKLSAgICB7Ci0gICAgICAgIGlubGluZSBzdGQ6OnNpemVfdCBsZW5ndGgoIGNvbnN0IGNoYXIqIHMgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RybGVuKCBzICk7Ci0gICAgICAgIH0KLQotI2lmbmRlZiBORE5CT09TVF9OT19DV0NIQVIKLSAgICAgICAgaW5saW5lIHN0ZDo6c2l6ZV90IGxlbmd0aCggY29uc3Qgd2NoYXJfdCogcyApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB3Y3NsZW4oIHMgKTsKLSAgICAgICAgfQotI2VuZGlmCi0KLSAgICAgICAgLy8KLSAgICAgICAgLy8gUmVtYXJrOiB0aGUgY29tcGlsZXIgY2Fubm90IGNob29zZSBiZXR3ZWVuIFQqIGFuZCBUW3N6XQotICAgICAgICAvLyBvdmVybG9hZHMsIHNvIHdlIG11c3QgcHV0IHRoZSBUKiBpbnRlcm5hbCB0byB0aGUKLSAgICAgICAgLy8gdW5jb25zdHJhaW5lZCB2ZXJzaW9uLgotICAgICAgICAvLwotCi0gICAgICAgIGlubGluZSBib29sIGlzX2NoYXJfcHRyKCBjaGFyKiApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaW5saW5lIGJvb2wgaXNfY2hhcl9wdHIoIGNvbnN0IGNoYXIqICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotI2lmbmRlZiBORE5CT09TVF9OT19DV0NIQVIKLSAgICAgICAgaW5saW5lIGJvb2wgaXNfY2hhcl9wdHIoIHdjaGFyX3QqICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpbmxpbmUgYm9vbCBpc19jaGFyX3B0ciggY29uc3Qgd2NoYXJfdCogKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotI2VuZGlmCi0KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFQgPgotICAgICAgICBpbmxpbmUgbG9uZyBpc19jaGFyX3B0ciggY29uc3QgVCYgLyogciAqLyApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAwTDsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBUID4KLSAgICAgICAgaW5saW5lIGl0ZXJhdG9yX3JhbmdlPFQqPgotICAgICAgICBtYWtlX3JhbmdlKCBUKiBjb25zdCByLCBib29sICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yX3JhbmdlPFQqPiggciwgciArIGxlbmd0aChyKSApOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFQgPgotICAgICAgICBpbmxpbmUgaXRlcmF0b3JfcmFuZ2U8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxUPjo6dHlwZT4KLSAgICAgICAgbWFrZV9yYW5nZSggVCYgciwgbG9uZyApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6bWFrZV9pdGVyYXRvcl9yYW5nZSggciApOwotICAgICAgICB9Ci0KLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTwgY2xhc3MgUmFuZ2UgPgotICAgIGlubGluZSBpdGVyYXRvcl9yYW5nZTxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPFJhbmdlPjo6dHlwZT4KLSAgICBhc19saXRlcmFsKCBSYW5nZSYgciApCi0gICAgewotICAgICAgICByZXR1cm4gcmFuZ2VfZGV0YWlsOjptYWtlX3JhbmdlKCByLCByYW5nZV9kZXRhaWw6OmlzX2NoYXJfcHRyKHIpICk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8IGNsYXNzIFJhbmdlID4KLSAgICBpbmxpbmUgaXRlcmF0b3JfcmFuZ2U8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxjb25zdCBSYW5nZT46OnR5cGU+Ci0gICAgYXNfbGl0ZXJhbCggY29uc3QgUmFuZ2UmIHIgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHJhbmdlX2RldGFpbDo6bWFrZV9yYW5nZSggciwgcmFuZ2VfZGV0YWlsOjppc19jaGFyX3B0cihyKSApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPCBjbGFzcyBDaGFyLCBzdGQ6OnNpemVfdCBzeiA+Ci0gICAgaW5saW5lIGl0ZXJhdG9yX3JhbmdlPENoYXIqPiBhc19saXRlcmFsKCBDaGFyICgmYXJyKVtzel0gKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHJhbmdlX2RldGFpbDo6bWFrZV9yYW5nZSggYXJyLCByYW5nZV9kZXRhaWw6OmlzX2NoYXJfcHRyKGFycikgKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTwgY2xhc3MgQ2hhciwgc3RkOjpzaXplX3Qgc3ogPgotICAgIGlubGluZSBpdGVyYXRvcl9yYW5nZTxjb25zdCBDaGFyKj4gYXNfbGl0ZXJhbCggY29uc3QgQ2hhciAoJmFycilbc3pdICkKLSAgICB7Ci0gICAgICAgIHJldHVybiByYW5nZV9kZXRhaWw6Om1ha2VfcmFuZ2UoIGFyciwgcmFuZ2VfZGV0YWlsOjppc19jaGFyX3B0cihhcnIpICk7Ci0gICAgfQotfQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2JlZ2luLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvYmVnaW4uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDAxZjM1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvYmVnaW4uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IFRob3JzdGVuIE90dG9zZW4gMjAwMy0yMDA0LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0JFR0lOX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9CRUdJTl9IUFAKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMjAwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9jb25maWcuaHBwPgotCi0jaWZkZWYgTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcKLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvYmVnaW4uaHBwPgotI2Vsc2UKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU2NCkpICYmIFwKLSAgICAhTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPCAzKSBcCi0gICAgLyoqLwotbmFtZXNwYWNlIHJhbmdlX2RldGFpbAotewotI2VuZGlmCi0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8gcHJpbWFyeSB0ZW1wbGF0ZQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDID4KLSAgICBpbmxpbmUgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxDPjo6dHlwZQotICAgIHJhbmdlX2JlZ2luKCBDJiBjICkKLSAgICB7Ci0gICAgICAgIC8vCi0gICAgICAgIC8vIElmIHlvdSBnZXQgYSBjb21waWxlLWVycm9yIGhlcmUsIGl0IGlzIG1vc3QgbGlrZWx5IGJlY2F1c2UKLSAgICAgICAgLy8geW91IGhhdmUgbm90IGltcGxlbWVudGVkIHJhbmdlX2JlZ2luKCkgcHJvcGVybHkgaW4KLSAgICAgICAgLy8gdGhlIG5hbWVzcGFjZSBvZiBDCi0gICAgICAgIC8vCi0gICAgICAgIHJldHVybiBjLmJlZ2luKCk7Ci0gICAgfQotCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vIHBhaXIKLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPgotICAgIGlubGluZSBJdGVyYXRvciByYW5nZV9iZWdpbiggY29uc3Qgc3RkOjpwYWlyPEl0ZXJhdG9yLEl0ZXJhdG9yPiYgcCApCi0gICAgewotICAgICAgICByZXR1cm4gcC5maXJzdDsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPgotICAgIGlubGluZSBJdGVyYXRvciByYW5nZV9iZWdpbiggc3RkOjpwYWlyPEl0ZXJhdG9yLEl0ZXJhdG9yPiYgcCApCi0gICAgewotICAgICAgICByZXR1cm4gcC5maXJzdDsKLSAgICB9Ci0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8gYXJyYXkKLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgICAvLwotICAgIC8vIE1heSB0aGlzIGJlIGRpc2NhcmRlZD8gT3IgaXMgaXQgbmVlZGVkIGZvciBiYWQgY29tcGlsZXJzPwotICAgIC8vCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IHN6ID4KLSAgICBpbmxpbmUgY29uc3QgVCogcmFuZ2VfYmVnaW4oIGNvbnN0IFQgKCZhKVtzel0gKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGE7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IHN6ID4KLSAgICBpbmxpbmUgVCogcmFuZ2VfYmVnaW4oIFQgKCZhKVtzel0gKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGE7Ci0gICAgfQotCi0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU2NCkpICYmIFwKLSAgICAhTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPCAzKSBcCi0gICAgLyoqLwotfSAvLyBuYW1lc3BhY2UgJ3JhbmdlX2RldGFpbCcKLSNlbmRpZgotCi0vLyBVc2UgYSBBREwgbmFtZXNwYWNlIGJhcnJpZXIgdG8gYXZvaWQgYW1iaWd1aXR5IHdpdGggb3RoZXIgdW5xdWFsaWZpZWQKLS8vIGNhbGxzLiBUaGlzIGlzIHBhcnRpY3VsYXJseSBpbXBvcnRhbnQgd2l0aCBDKysweCBlbmNvdXJhZ2luZwotLy8gdW5xdWFsaWZpZWQgY2FsbHMgdG8gYmVnaW4vZW5kLgotbmFtZXNwYWNlIHJhbmdlX2FkbF9iYXJyaWVyCi17Ci0KLXRlbXBsYXRlPCBjbGFzcyBUID4KLWlubGluZSBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPFQ+Ojp0eXBlIGJlZ2luKCBUJiByICkKLXsKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU2NCkpICYmIFwKLSAgICAhTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPCAzKSBcCi0gICAgLyoqLwotICAgIHVzaW5nIG5hbWVzcGFjZSByYW5nZV9kZXRhaWw7Ci0jZW5kaWYKLSAgICByZXR1cm4gcmFuZ2VfYmVnaW4oIHIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQgPgotaW5saW5lIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8Y29uc3QgVD46OnR5cGUgYmVnaW4oIGNvbnN0IFQmIHIgKQotewotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTY0KSkgJiYgXAotICAgICFORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA8IDMpIFwKLSAgICAvKiovCi0gICAgdXNpbmcgbmFtZXNwYWNlIHJhbmdlX2RldGFpbDsKLSNlbmRpZgotICAgIHJldHVybiByYW5nZV9iZWdpbiggciApOwotfQotCi0gICAgfSAvLyBuYW1lc3BhY2UgcmFuZ2VfYWRsX2JhcnJpZXIKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORwotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICBuYW1lc3BhY2UgcmFuZ2VfYWRsX2JhcnJpZXIKLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBUID4KLSAgICAgICAgaW5saW5lIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8Y29uc3QgVD46OnR5cGUKLSAgICAgICAgY29uc3RfYmVnaW4oIGNvbnN0IFQmIHIgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnJhbmdlX2FkbF9iYXJyaWVyOjpiZWdpbiggciApOwotICAgICAgICB9Ci0gICAgfSAvLyBuYW1lc3BhY2UgcmFuZ2VfYWRsX2JhcnJpZXIKLQotICAgIHVzaW5nIG5hbWVzcGFjZSByYW5nZV9hZGxfYmFycmllcjsKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2NvbmNlcHRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvY29uY2VwdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOTkwYzE2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvY29uY2VwdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzY2ICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkgY29uY2VwdCBjaGVja3MKLS8vCi0vLyAgQ29weXJpZ2h0IE5laWwgR3JvdmVzIDIwMDkuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24KLS8vICBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyAgQ29weXJpZ2h0IERhbmllbCBXYWxrZXIgMjAwNi4gVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbgotLy8gIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfQ09OQ0VQVFNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0NPTkNFUFRTX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uY2VwdF9jaGVjay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IvaXRlcmF0b3JfY29uY2VwdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2JlZ2luLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9lbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS92YWx1ZV90eXBlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvbWlzY19jb25jZXB0LmhwcD4KLQotLyohCi0gKiBcZmlsZQotICogXGJyaWVmIENvbmNlcHQgY2hlY2tzIGZvciB0aGUgQm9vc3QgUmFuZ2UgbGlicmFyeS4KLSAqCi0gKiBUaGUgc3RydWN0dXJlcyBpbiB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUKLSAqIEJvb3N0IENvbmNlcHQgQ2hlY2sgbGlicmFyeSB0byBpbnN1cmUgdGhhdCB0aGUgdHlwZSBvZiBhIGZ1bmN0aW9uCi0gKiBwYXJhbWV0ZXIgaXMgY29tcGF0aWJsZSB3aXRoIGEgcmFuZ2UgY29uY2VwdC4gSWYgbm90LCBhIG1lYW5pbmdmdWwKLSAqIGNvbXBpbGUgdGltZSBlcnJvciBpcyBnZW5lcmF0ZWQuIENoZWNrcyBhcmUgcHJvdmlkZWQgZm9yIHRoZSByYW5nZQotICogY29uY2VwdHMgcmVsYXRlZCB0byBpdGVyYXRvciB0cmF2ZXJzYWwgY2F0ZWdvcmllcy4gRm9yIGV4YW1wbGUsIHRoZQotICogZm9sbG93aW5nIGxpbmUgY2hlY2tzIHRoYXQgdGhlIHR5cGUgVCBtb2RlbHMgdGhlIEZvcndhcmRSYW5nZQotICogY29uY2VwdC4KLSAqCi0gKiBcY29kZQotICogTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKEZvcndhcmRSYW5nZUNvbmNlcHQ8VD4pKTsKLSAqIFxlbmRjb2RlCi0gKgotICogQSBkaWZmZXJlbnQgY29uY2VwdCBjaGVjayBpcyByZXF1aXJlZCB0byBlbnN1cmUgd3JpdGVhYmxlIHZhbHVlCi0gKiBhY2Nlc3MuIEZvciBleGFtcGxlIHRvIGNoZWNrIGZvciBhIEZvcndhcmRSYW5nZSB0aGF0IGNhbiBiZSB3cml0dGVuCi0gKiB0bywgdGhlIGZvbGxvd2luZyBjb2RlIGlzIHJlcXVpcmVkLgotICoKLSAqIFxjb2RlCi0gKiBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoV3JpdGVhYmxlRm9yd2FyZFJhbmdlQ29uY2VwdDxUPikpOwotICogXGVuZGNvZGUKLSAqCi0gKiBcc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvZG9jL3JhbmdlLmh0bWwgZm9yIGRldGFpbHMKLSAqIGFib3V0IHJhbmdlIGNvbmNlcHRzLgotICogXHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2l0ZXJhdG9yL2RvYy9pdGVyYXRvcl9jb25jZXB0cy5odG1sCi0gKiBmb3IgZGV0YWlscyBhYm91dCBpdGVyYXRvciBjb25jZXB0cy4KLSAqIFxzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9jb25jZXB0X2NoZWNrL2NvbmNlcHRfY2hlY2suaHRtIGZvcgotICogZGV0YWlscyBhYm91dCBjb25jZXB0IGNoZWNrcy4KLSAqLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0gICAgbmFtZXNwYWNlIHJhbmdlX2RldGFpbCB7Ci0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfRU5BQkxFX0NPTkNFUFRfQVNTRVJUCi0KLS8vIExpc3QgYnJva2VuIGNvbXBpbGVyIHZlcnNpb25zIGhlcmU6Ci0gICAgI2lmZGVmIF9fR05VQ19fCi0gICAgICAgIC8vIEdOVUMgNC4yIGhhcyBzdHJhbmdlIGlzc3VlcyBjb3JyZWN0bHkgZGV0ZWN0aW5nIGNvbXBsaWFuY2Ugd2l0aCB0aGUgQ29uY2VwdHMKLSAgICAgICAgLy8gaGVuY2UgdGhlIGxlYXN0IGRpc3J1cHRpdmUgYXBwcm9hY2ggaXMgdG8gdHVybi1vZmYgdGhlIGNvbmNlcHQgY2hlY2tpbmcgZm9yCi0gICAgICAgIC8vIHRoaXMgdmVyc2lvbiBvZiB0aGUgY29tcGlsZXIuCi0gICAgICAgICNpZiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fID09IDIKLSAgICAgICAgICAgICNkZWZpbmUgTkROQk9PU1RfUkFOR0VfRU5BQkxFX0NPTkNFUFRfQVNTRVJUIDAKLSAgICAgICAgI2VuZGlmCi0gICAgI2VuZGlmCi0KLSAgICAjaWZkZWYgX19CT1JMQU5EQ19fCi0gICAgICAgICNkZWZpbmUgTkROQk9PU1RfUkFOR0VfRU5BQkxFX0NPTkNFUFRfQVNTRVJUIDAKLSAgICAjZW5kaWYKLQotICAgICNpZmRlZiBfX1BBVEhDQ19fCi0gICAgICAgICNkZWZpbmUgTkROQk9PU1RfUkFOR0VfRU5BQkxFX0NPTkNFUFRfQVNTRVJUIDAKLSAgICAjZW5kaWYKLQotLy8gRGVmYXVsdCB0byB1c2luZyB0aGUgY29uY2VwdCBhc3NlcnRzIHVubGVzcyB3ZSBoYXZlIGRlZmluZWQgaXQgb2ZmCi0vLyBkdXJpbmcgdGhlIHNlYXJjaCBmb3IgYmxhY2sgbGlzdGVkIGNvbXBpbGVycy4KLSAgICAjaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0VOQUJMRV9DT05DRVBUX0FTU0VSVAotICAgICAgICAjZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0VOQUJMRV9DT05DRVBUX0FTU0VSVCAxCi0gICAgI2VuZGlmCi0KLSNlbmRpZgotCi0jaWYgTkROQk9PU1RfUkFOR0VfRU5BQkxFX0NPTkNFUFRfQVNTRVJUCi0gICAgI2RlZmluZSBORE5CT09TVF9SQU5HRV9DT05DRVBUX0FTU0VSVCggeCApIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKCB4ICkKLSNlbHNlCi0gICAgI2RlZmluZSBORE5CT09TVF9SQU5HRV9DT05DRVBUX0FTU0VSVCggeCApCi0jZW5kaWYKLQotICAgICAgICAvLyBSYXRpb25hbGUgZm9yIHRoZSBpbmNsdXNpb24gb2YgcmVkZWZpbmVkIGl0ZXJhdG9yIGNvbmNlcHQKLSAgICAgICAgLy8gY2xhc3NlczoKLSAgICAgICAgLy8KLSAgICAgICAgLy8gVGhlIFJhbmdlIGFsZ29yaXRobXMgb2Z0ZW4gZG8gbm90IHJlcXVpcmUgdGhhdCB0aGUgaXRlcmF0b3JzIGFyZQotICAgICAgICAvLyBBc3NpZ25hYmxlIG9yIGRlZmF1bHQgY29uc3RydWN0YWJsZSwgYnV0IHRoZSBjb3JyZWN0IHN0YW5kYXJkCi0gICAgICAgIC8vIGNvbmZvcm1hbnQgaXRlcmF0b3JzIGRvIHJlcXVpcmUgdGhlIGl0ZXJhdG9ycyB0byBiZSBhIG1vZGVsIG9mIHRoZQotICAgICAgICAvLyBBc3NpZ25hYmxlIGNvbmNlcHQuCi0gICAgICAgIC8vIEl0ZXJhdG9ycyB0aGF0IGNvbnRhaW5zIGEgZnVuY3RvciB0aGF0IGlzIG5vdCBhc3NpZ25hYmxlIHRoZXJlZm9yZQotICAgICAgICAvLyBhcmUgbm90IGNvcnJlY3QgbW9kZWxzIG9mIHRoZSBzdGFuZGFyZCBpdGVyYXRvciBjb25jZXB0cywKLSAgICAgICAgLy8gZGVzcGl0ZSBiZWluZyBhZGVxdWF0ZSBmb3IgbW9zdCBhbGdvcml0aG1zLiBBbiBleGFtcGxlIG9mIHRoaXMKLSAgICAgICAgLy8gdXNlIGNhc2UgaXMgdGhlIGNvbWJpbmF0aW9uIG9mIHRoZSBuZG5ib29zdDo6YWRhcHRvcnM6OmZpbHRlcmVkCi0gICAgICAgIC8vIGNsYXNzIHdpdGggYSBuZG5ib29zdDo6bGFtYmRhOjpiaW5kIGdlbmVyYXRlZCBmdW5jdG9yLgotICAgICAgICAvLyBVbHRpbWF0ZWx5IG1vZGVsaW5nIHRoZSByYW5nZSBjb25jZXB0cyB1c2luZyBjb21wb3NpdGlvbgotICAgICAgICAvLyB3aXRoIHRoZSBCb29zdC5JdGVyYXRvciBjb25jZXB0cyB3b3VsZCByZW5kZXIgdGhlIGxpYnJhcnkKLSAgICAgICAgLy8gaW5jb21wYXRpYmxlIHdpdGggbWFueSBjb21tb24gQm9vc3QuTGFtYmRhIGV4cHJlc3Npb25zLgotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBJdGVyYXRvcj4KLSAgICAgICAgc3RydWN0IEluY3JlbWVudGFibGVJdGVyYXRvckNvbmNlcHQgOiBDb3B5Q29uc3RydWN0aWJsZTxJdGVyYXRvcj4KLSAgICAgICAgewotI2lmIE5ETkJPT1NUX1JBTkdFX0VOQUJMRV9DT05DRVBUX0FTU0VSVAotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGl0ZXJhdG9yX3RyYXZlcnNhbDxJdGVyYXRvcj46OnR5cGUgdHJhdmVyc2FsX2NhdGVnb3J5OwotCi0gICAgICAgICAgICBORE5CT09TVF9SQU5HRV9DT05DRVBUX0FTU0VSVCgoCi0gICAgICAgICAgICAgICAgQ29udmVydGlibGU8Ci0gICAgICAgICAgICAgICAgICAgIHRyYXZlcnNhbF9jYXRlZ29yeSwKLSAgICAgICAgICAgICAgICAgICAgaW5jcmVtZW50YWJsZV90cmF2ZXJzYWxfdGFnCi0gICAgICAgICAgICAgICAgPikpOwotCi0gICAgICAgICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKEluY3JlbWVudGFibGVJdGVyYXRvckNvbmNlcHQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgKytpOwotICAgICAgICAgICAgICAgICh2b2lkKWkrKzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIEl0ZXJhdG9yIGk7Ci0jZW5kaWYKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBJdGVyYXRvcj4KLSAgICAgICAgc3RydWN0IFNpbmdsZVBhc3NJdGVyYXRvckNvbmNlcHQKLSAgICAgICAgICAgIDogSW5jcmVtZW50YWJsZUl0ZXJhdG9yQ29uY2VwdDxJdGVyYXRvcj4KLSAgICAgICAgICAgICwgRXF1YWxpdHlDb21wYXJhYmxlPEl0ZXJhdG9yPgotICAgICAgICB7Ci0jaWYgTkROQk9PU1RfUkFOR0VfRU5BQkxFX0NPTkNFUFRfQVNTRVJUCi0gICAgICAgICAgICBORE5CT09TVF9SQU5HRV9DT05DRVBUX0FTU0VSVCgoCi0gICAgICAgICAgICAgICAgQ29udmVydGlibGU8Ci0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgU2luZ2xlUGFzc0l0ZXJhdG9yQ29uY2VwdDo6dHJhdmVyc2FsX2NhdGVnb3J5LAotICAgICAgICAgICAgICAgICAgICBzaW5nbGVfcGFzc190cmF2ZXJzYWxfdGFnCi0gICAgICAgICAgICAgICAgPikpOwotCi0gICAgICAgICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKFNpbmdsZVBhc3NJdGVyYXRvckNvbmNlcHQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgSXRlcmF0b3IgaTIoKytpKTsKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6aWdub3JlX3VudXNlZF92YXJpYWJsZV93YXJuaW5nKGkyKTsKLQotICAgICAgICAgICAgICAgIC8vIGRlbGliZXJhdGVseSB3ZSBhcmUgbG9vc2Ugd2l0aCB0aGUgcG9zdGZpeCB2ZXJzaW9uIGZvciB0aGUgc2luZ2xlIHBhc3MKLSAgICAgICAgICAgICAgICAvLyBpdGVyYXRvciBkdWUgdG8gdGhlIGNvbW1vbmx5IHBvb3IgYWRoZXJlbmNlIHRvIHRoZSBzcGVjaWZpY2F0aW9uIG1lYW5zIHRoYXQKLSAgICAgICAgICAgICAgICAvLyBtYW55IGFsZ29yaXRobXMgd291bGQgYmUgdW51c2FibGUsIHdoZXJlYXMgYWN0dWFsbHkgd2l0aG91dCB0aGUgY2hlY2sgdGhleQotICAgICAgICAgICAgICAgIC8vIHdvcmsKLSAgICAgICAgICAgICAgICAodm9pZCkoaSsrKTsKLQotICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbmRuYm9vc3Q6OmRldGFpbDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPjo6cmVmZXJlbmNlIHIxKCppKTsKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6aWdub3JlX3VudXNlZF92YXJpYWJsZV93YXJuaW5nKHIxKTsKLQotICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbmRuYm9vc3Q6OmRldGFpbDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPjo6cmVmZXJlbmNlIHIyKCooKytpKSk7Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6Omlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhyMik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICBJdGVyYXRvciBpOwotI2VuZGlmCi0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgSXRlcmF0b3I+Ci0gICAgICAgIHN0cnVjdCBGb3J3YXJkSXRlcmF0b3JDb25jZXB0Ci0gICAgICAgICAgICA6IFNpbmdsZVBhc3NJdGVyYXRvckNvbmNlcHQ8SXRlcmF0b3I+Ci0gICAgICAgICAgICAsIERlZmF1bHRDb25zdHJ1Y3RpYmxlPEl0ZXJhdG9yPgotICAgICAgICB7Ci0jaWYgTkROQk9PU1RfUkFOR0VfRU5BQkxFX0NPTkNFUFRfQVNTRVJUCi0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbmRuYm9vc3Q6OmRldGFpbDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlIGRpZmZlcmVuY2VfdHlwZTsKLQotICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FTU0VSVCgoaXNfaW50ZWdyYWw8ZGlmZmVyZW5jZV90eXBlPikpOwotICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FTU0VSVF9SRUxBVElPTihzdGQ6Om51bWVyaWNfbGltaXRzPGRpZmZlcmVuY2VfdHlwZT46OmlzX3NpZ25lZCwgPT0sIHRydWUpOwotCi0gICAgICAgICAgICBORE5CT09TVF9SQU5HRV9DT05DRVBUX0FTU0VSVCgoCi0gICAgICAgICAgICAgICAgQ29udmVydGlibGU8Ci0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgRm9yd2FyZEl0ZXJhdG9yQ29uY2VwdDo6dHJhdmVyc2FsX2NhdGVnb3J5LAotICAgICAgICAgICAgICAgICAgICBmb3J3YXJkX3RyYXZlcnNhbF90YWcKLSAgICAgICAgICAgICAgICA+KSk7Ci0KLSAgICAgICAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoRm9yd2FyZEl0ZXJhdG9yQ29uY2VwdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBTZWUgdGhlIGFib3ZlIG5vdGUgaW4gdGhlIFNpbmdsZVBhc3NJdGVyYXRvckNvbmNlcHQgYWJvdXQgdGhlIGhhbmRsaW5nIG9mIHRoZQotICAgICAgICAgICAgICAgIC8vIHBvc3RmaXggaW5jcmVtZW50LiBTaW5jZSB3aXRoIGZvcndhcmQgYW5kIGJldHRlciBpdGVyYXRvcnMgdGhlcmUgaXMgbm8gbmVlZAotICAgICAgICAgICAgICAgIC8vIGZvciBhIHByb3h5LCB3ZSBjYW4gc2Vuc2libHkgcmVxdWlyZSB0aGF0IHRoZSBkZXJlZmVyZW5jZSByZXN1bHQKLSAgICAgICAgICAgICAgICAvLyBpcyBjb252ZXJ0aWJsZSB0byByZWZlcmVuY2UuCi0gICAgICAgICAgICAgICAgSXRlcmF0b3IgaTIoaSsrKTsKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6aWdub3JlX3VudXNlZF92YXJpYWJsZV93YXJuaW5nKGkyKTsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG5kbmJvb3N0OjpkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46OnJlZmVyZW5jZSByKCooaSsrKSk7Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6Omlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIEl0ZXJhdG9yIGk7Ci0jZW5kaWYKLSAgICAgICAgIH07Ci0KLSAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEl0ZXJhdG9yPgotICAgICAgICAgc3RydWN0IEJpZGlyZWN0aW9uYWxJdGVyYXRvckNvbmNlcHQKLSAgICAgICAgICAgICA6IEZvcndhcmRJdGVyYXRvckNvbmNlcHQ8SXRlcmF0b3I+Ci0gICAgICAgICB7Ci0gI2lmIE5ETkJPT1NUX1JBTkdFX0VOQUJMRV9DT05DRVBUX0FTU0VSVAotICAgICAgICAgICAgIE5ETkJPT1NUX1JBTkdFX0NPTkNFUFRfQVNTRVJUKCgKLSAgICAgICAgICAgICAgICAgQ29udmVydGlibGU8Ci0gICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIEJpZGlyZWN0aW9uYWxJdGVyYXRvckNvbmNlcHQ6OnRyYXZlcnNhbF9jYXRlZ29yeSwKLSAgICAgICAgICAgICAgICAgICAgIGJpZGlyZWN0aW9uYWxfdHJhdmVyc2FsX3RhZwotICAgICAgICAgICAgICAgICA+KSk7Ci0KLSAgICAgICAgICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKEJpZGlyZWN0aW9uYWxJdGVyYXRvckNvbmNlcHQpCi0gICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAtLWk7Ci0gICAgICAgICAgICAgICAgICh2b2lkKWktLTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgIEl0ZXJhdG9yIGk7Ci0gI2VuZGlmCi0gICAgICAgICB9OwotCi0gICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBJdGVyYXRvcj4KLSAgICAgICAgIHN0cnVjdCBSYW5kb21BY2Nlc3NJdGVyYXRvckNvbmNlcHQKLSAgICAgICAgICAgICA6IEJpZGlyZWN0aW9uYWxJdGVyYXRvckNvbmNlcHQ8SXRlcmF0b3I+Ci0gICAgICAgICB7Ci0gI2lmIE5ETkJPT1NUX1JBTkdFX0VOQUJMRV9DT05DRVBUX0FTU0VSVAotICAgICAgICAgICAgIE5ETkJPT1NUX1JBTkdFX0NPTkNFUFRfQVNTRVJUKCgKLSAgICAgICAgICAgICAgICAgQ29udmVydGlibGU8Ci0gICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yQ29uY2VwdDo6dHJhdmVyc2FsX2NhdGVnb3J5LAotICAgICAgICAgICAgICAgICAgICAgcmFuZG9tX2FjY2Vzc190cmF2ZXJzYWxfdGFnCi0gICAgICAgICAgICAgICAgID4pKTsKLQotICAgICAgICAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoUmFuZG9tQWNjZXNzSXRlcmF0b3JDb25jZXB0KQotICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgaSArPSBuOwotICAgICAgICAgICAgICAgICBpID0gaSArIG47Ci0gICAgICAgICAgICAgICAgIGkgPSBuICsgaTsKLSAgICAgICAgICAgICAgICAgaSAtPSBuOwotICAgICAgICAgICAgICAgICBpID0gaSAtIG47Ci0gICAgICAgICAgICAgICAgIG4gPSBpIC0gajsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgUmFuZG9tQWNjZXNzSXRlcmF0b3JDb25jZXB0OjpkaWZmZXJlbmNlX3R5cGUgbjsKLSAgICAgICAgICAgICBJdGVyYXRvciBpOwotICAgICAgICAgICAgIEl0ZXJhdG9yIGo7Ci0gI2VuZGlmCi0gICAgICAgICB9OwotCi0gICAgfSAvLyBuYW1lc3BhY2UgcmFuZ2VfZGV0YWlsCi0KLSAgICAvLyEgQ2hlY2sgaWYgYSB0eXBlIFQgbW9kZWxzIHRoZSBTaW5nbGVQYXNzUmFuZ2UgcmFuZ2UgY29uY2VwdC4KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIHN0cnVjdCBTaW5nbGVQYXNzUmFuZ2VDb25jZXB0Ci0gICAgewotI2lmIE5ETkJPT1NUX1JBTkdFX0VOQUJMRV9DT05DRVBUX0FTU0VSVAotICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPFQgY29uc3Q+Ojp0eXBlICBjb25zdF9pdGVyYXRvcjsKLSAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxUPjo6dHlwZSAgICAgICAgaXRlcmF0b3I7Ci0KLSAgICAgICAgIE5ETkJPT1NUX1JBTkdFX0NPTkNFUFRfQVNTRVJUKChyYW5nZV9kZXRhaWw6OlNpbmdsZVBhc3NJdGVyYXRvckNvbmNlcHQ8aXRlcmF0b3I+KSk7Ci0gICAgICAgICBORE5CT09TVF9SQU5HRV9DT05DRVBUX0FTU0VSVCgocmFuZ2VfZGV0YWlsOjpTaW5nbGVQYXNzSXRlcmF0b3JDb25jZXB0PGNvbnN0X2l0ZXJhdG9yPikpOwotCi0gICAgICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKFNpbmdsZVBhc3NSYW5nZUNvbmNlcHQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBUaGlzIGhhcyBiZWVuIG1vZGlmaWVkIGZyb20gYXNzaWduaW5nIHRvIHRoaXMtPmkKLSAgICAgICAgICAgIC8vICh3aGVyZSBpIHdhcyBhIG1lbWJlciB2YXJpYWJsZSkgdG8gaW1wcm92ZQotICAgICAgICAgICAgLy8gY29tcGF0aWJpbGl0eSB3aXRoIEJvb3N0LkxhbWJkYQotICAgICAgICAgICAgaXRlcmF0b3IgaTEgPSBuZG5ib29zdDo6YmVnaW4oKm1fcmFuZ2UpOwotICAgICAgICAgICAgaXRlcmF0b3IgaTIgPSBuZG5ib29zdDo6ZW5kKCptX3JhbmdlKTsKLQotICAgICAgICAgICAgaWdub3JlX3VudXNlZF92YXJpYWJsZV93YXJuaW5nKGkxKTsKLSAgICAgICAgICAgIGlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhpMik7Ci0KLSAgICAgICAgICAgIGNvbnN0X2NvbnN0cmFpbnRzKCptX3JhbmdlKTsKLSAgICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBjb25zdF9jb25zdHJhaW50cyhjb25zdCBUJiBjb25zdF9yYW5nZSkKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3RfaXRlcmF0b3IgY2kxID0gbmRuYm9vc3Q6OmJlZ2luKGNvbnN0X3JhbmdlKTsKLSAgICAgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGNpMiA9IG5kbmJvb3N0OjplbmQoY29uc3RfcmFuZ2UpOwotCi0gICAgICAgICAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcoY2kxKTsKLSAgICAgICAgICAgIGlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhjaTIpOwotICAgICAgICB9Ci0KLSAgICAgICAvLyBSYXRpb25hbGU6Ci0gICAgICAgLy8gVGhlIHR5cGUgb2YgbV9yYW5nZSBpcyBUKiByYXRoZXIgdGhhbiBUIGJlY2F1c2UgaXQgYWxsb3dzCi0gICAgICAgLy8gVCB0byBiZSBhbiBhYnN0cmFjdCBjbGFzcy4gVGhlIG90aGVyIG9idmlvdXMgYWx0ZXJuYXRpdmUgb2YKLSAgICAgICAvLyBUJiBwcm9kdWNlcyBhIHdhcm5pbmcgb24gc29tZSBjb21waWxlcnMuCi0gICAgICAgVCogbV9yYW5nZTsKLSNlbmRpZgotICAgIH07Ci0KLSAgICAvLyEgQ2hlY2sgaWYgYSB0eXBlIFQgbW9kZWxzIHRoZSBGb3J3YXJkUmFuZ2UgcmFuZ2UgY29uY2VwdC4KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIHN0cnVjdCBGb3J3YXJkUmFuZ2VDb25jZXB0IDogU2luZ2xlUGFzc1JhbmdlQ29uY2VwdDxUPgotICAgIHsKLSNpZiBORE5CT09TVF9SQU5HRV9FTkFCTEVfQ09OQ0VQVF9BU1NFUlQKLSAgICAgICAgTkROQk9PU1RfUkFOR0VfQ09OQ0VQVF9BU1NFUlQoKHJhbmdlX2RldGFpbDo6Rm9yd2FyZEl0ZXJhdG9yQ29uY2VwdDxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIEZvcndhcmRSYW5nZUNvbmNlcHQ6Oml0ZXJhdG9yPikpOwotICAgICAgICBORE5CT09TVF9SQU5HRV9DT05DRVBUX0FTU0VSVCgocmFuZ2VfZGV0YWlsOjpGb3J3YXJkSXRlcmF0b3JDb25jZXB0PE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgRm9yd2FyZFJhbmdlQ29uY2VwdDo6Y29uc3RfaXRlcmF0b3I+KSk7Ci0jZW5kaWYKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUmFuZ2U+Ci0gICAgc3RydWN0IFdyaXRlYWJsZVJhbmdlQ29uY2VwdAotICAgIHsKLSNpZiBORE5CT09TVF9SQU5HRV9FTkFCTEVfQ09OQ0VQVF9BU1NFUlQKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPFJhbmdlPjo6dHlwZSBpdGVyYXRvcjsKLQotICAgICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKFdyaXRlYWJsZVJhbmdlQ29uY2VwdCkKLSAgICAgICAgewotICAgICAgICAgICAgKmkgPSB2OwotICAgICAgICB9Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgaXRlcmF0b3IgaTsKLSAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV92YWx1ZTxSYW5nZT46OnR5cGUgdjsKLSNlbmRpZgotICAgIH07Ci0KLSAgICAvLyEgQ2hlY2sgaWYgYSB0eXBlIFQgbW9kZWxzIHRoZSBXcml0ZWFibGVGb3J3YXJkUmFuZ2UgcmFuZ2UgY29uY2VwdC4KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIHN0cnVjdCBXcml0ZWFibGVGb3J3YXJkUmFuZ2VDb25jZXB0Ci0gICAgICAgIDogRm9yd2FyZFJhbmdlQ29uY2VwdDxUPgotICAgICAgICAsIFdyaXRlYWJsZVJhbmdlQ29uY2VwdDxUPgotICAgIHsKLSAgICB9OwotCi0gICAgLy8hIENoZWNrIGlmIGEgdHlwZSBUIG1vZGVscyB0aGUgQmlkaXJlY3Rpb25hbFJhbmdlIHJhbmdlIGNvbmNlcHQuCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBzdHJ1Y3QgQmlkaXJlY3Rpb25hbFJhbmdlQ29uY2VwdCA6IEZvcndhcmRSYW5nZUNvbmNlcHQ8VD4KLSAgICB7Ci0jaWYgTkROQk9PU1RfUkFOR0VfRU5BQkxFX0NPTkNFUFRfQVNTRVJUCi0gICAgICAgIE5ETkJPT1NUX1JBTkdFX0NPTkNFUFRfQVNTRVJUKChyYW5nZV9kZXRhaWw6OkJpZGlyZWN0aW9uYWxJdGVyYXRvckNvbmNlcHQ8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBCaWRpcmVjdGlvbmFsUmFuZ2VDb25jZXB0OjppdGVyYXRvcj4pKTsKLSAgICAgICAgTkROQk9PU1RfUkFOR0VfQ09OQ0VQVF9BU1NFUlQoKHJhbmdlX2RldGFpbDo6QmlkaXJlY3Rpb25hbEl0ZXJhdG9yQ29uY2VwdDxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIEJpZGlyZWN0aW9uYWxSYW5nZUNvbmNlcHQ6OmNvbnN0X2l0ZXJhdG9yPikpOwotI2VuZGlmCi0gICAgfTsKLQotICAgIC8vISBDaGVjayBpZiBhIHR5cGUgVCBtb2RlbHMgdGhlIFdyaXRlYWJsZUJpZGlyZWN0aW9uYWxSYW5nZSByYW5nZSBjb25jZXB0LgotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgc3RydWN0IFdyaXRlYWJsZUJpZGlyZWN0aW9uYWxSYW5nZUNvbmNlcHQKLSAgICAgICAgOiBCaWRpcmVjdGlvbmFsUmFuZ2VDb25jZXB0PFQ+Ci0gICAgICAgICwgV3JpdGVhYmxlUmFuZ2VDb25jZXB0PFQ+Ci0gICAgewotICAgIH07Ci0KLSAgICAvLyEgQ2hlY2sgaWYgYSB0eXBlIFQgbW9kZWxzIHRoZSBSYW5kb21BY2Nlc3NSYW5nZSByYW5nZSBjb25jZXB0LgotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgc3RydWN0IFJhbmRvbUFjY2Vzc1JhbmdlQ29uY2VwdCA6IEJpZGlyZWN0aW9uYWxSYW5nZUNvbmNlcHQ8VD4KLSAgICB7Ci0jaWYgTkROQk9PU1RfUkFOR0VfRU5BQkxFX0NPTkNFUFRfQVNTRVJUCi0gICAgICAgIE5ETkJPT1NUX1JBTkdFX0NPTkNFUFRfQVNTRVJUKChyYW5nZV9kZXRhaWw6OlJhbmRvbUFjY2Vzc0l0ZXJhdG9yQ29uY2VwdDxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIFJhbmRvbUFjY2Vzc1JhbmdlQ29uY2VwdDo6aXRlcmF0b3I+KSk7Ci0gICAgICAgIE5ETkJPT1NUX1JBTkdFX0NPTkNFUFRfQVNTRVJUKChyYW5nZV9kZXRhaWw6OlJhbmRvbUFjY2Vzc0l0ZXJhdG9yQ29uY2VwdDxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIFJhbmRvbUFjY2Vzc1JhbmdlQ29uY2VwdDo6Y29uc3RfaXRlcmF0b3I+KSk7Ci0jZW5kaWYKLSAgICB9OwotCi0gICAgLy8hIENoZWNrIGlmIGEgdHlwZSBUIG1vZGVscyB0aGUgV3JpdGVhYmxlUmFuZG9tQWNjZXNzUmFuZ2UgcmFuZ2UgY29uY2VwdC4KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIHN0cnVjdCBXcml0ZWFibGVSYW5kb21BY2Nlc3NSYW5nZUNvbmNlcHQKLSAgICAgICAgOiBSYW5kb21BY2Nlc3NSYW5nZUNvbmNlcHQ8VD4KLSAgICAgICAgLCBXcml0ZWFibGVSYW5nZUNvbmNlcHQ8VD4KLSAgICB7Ci0gICAgfTsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JBTkdFX0NPTkNFUFRTX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9jb25maWcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9jb25maWcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzcyZDZhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvY29uZmlnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IFRob3JzdGVuIE90dG9zZW4gMjAwMy0yMDA0LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0NPTkZJR19IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfQ09ORklHX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEyMDApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLSNpZmRlZiBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FCi0jZXJyb3IgIm1hY3JvIGFscmVhZHkgZGVmaW5lZCEiCi0jZW5kaWYKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NjQpKQotIyBkZWZpbmUgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSB0eXBlbmFtZQotI2Vsc2UKLSMgaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA9PSAxMzAwKSAmJiAhZGVmaW5lZChfTVNDX0VYVEVOU0lPTlMpCi0jICBkZWZpbmUgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSB0eXBlbmFtZQotIyBlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FCi0jIGVuZGlmCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX1JBTkdFX05PX0FSUkFZX1NVUFBPUlQKLSNlcnJvciAibWFjcm8gYWxyZWFkeSBkZWZpbmVkISIKLSNlbmRpZgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORCggTkROQk9PU1RfTVNWQywgPCAxMzAwICkgfHwgTkROQk9PU1RfV09SS0FST1VORCggX19NV0VSS1NfXywgPD0gMHgzMDAzICkKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfTk9fQVJSQVlfU1VQUE9SVCAxCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX1JBTkdFX05PX0FSUkFZX1NVUFBPUlQKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfQVJSQVlfUkVGKCkgKGJvb3N0X3JhbmdlX2FycmF5KQotI2RlZmluZSBORE5CT09TVF9SQU5HRV9OT19TVEFUSUNfQVNTRVJUCi0jZWxzZQotI2RlZmluZSBORE5CT09TVF9SQU5HRV9BUlJBWV9SRUYoKSAoJmJvb3N0X3JhbmdlX2FycmF5KQotI2VuZGlmCi0KLQotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9jb25zdF9pdGVyYXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2NvbnN0X2l0ZXJhdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjFlZDNlOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2NvbnN0X2l0ZXJhdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IFRob3JzdGVuIE90dG9zZW4gMjAwMy0yMDA0LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0NPTlNUX0lURVJBVE9SX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9DT05TVF9JVEVSQVRPUl9IUFAKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMjAwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9jb25maWcuaHBwPgotCi0jaWZkZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9jb25zdF9pdGVyYXRvci5ocHA+Ci0jZWxzZQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2V4dHJhY3Rfb3B0aW9uYWxfdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2NvbnN0LmhwcD4KLSNpbmNsdWRlIDxjc3RkZGVmPgotI2luY2x1ZGUgPHV0aWxpdHk+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8gZGVmYXVsdAotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgCi0gICAgbmFtZXNwYWNlIHJhbmdlX2RldGFpbCB7Ci0gICAgICAgIE5ETkJPT1NUX1JBTkdFX0VYVFJBQ1RfT1BUSU9OQUxfVFlQRSggY29uc3RfaXRlcmF0b3IgKQotICAgIH0KLQotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDID4KLSAgICBzdHJ1Y3QgcmFuZ2VfY29uc3RfaXRlcmF0b3IgOiByYW5nZV9kZXRhaWw6OmV4dHJhY3RfY29uc3RfaXRlcmF0b3I8Qz4KLSAgICB7fTsKLSAgICAKLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vIHBhaXIKLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4KLSAgICBzdHJ1Y3QgcmFuZ2VfY29uc3RfaXRlcmF0b3I8IHN0ZDo6cGFpcjxJdGVyYXRvcixJdGVyYXRvcj4gPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciB0eXBlOwotICAgIH07Ci0gICAgCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAvLyBhcnJheQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgc3RkOjpzaXplX3Qgc3ogPgotICAgIHN0cnVjdCByYW5nZV9jb25zdF9pdGVyYXRvcjwgVFtzel0gPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBjb25zdCBUKiB0eXBlOwotICAgIH07Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvYXNfbGl0ZXJhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9hc19saXRlcmFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjIzYWUxOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9hc19saXRlcmFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IFRob3JzdGVuIE90dG9zZW4gMjAwNi4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9ERVRBSUxfQVNfTElURVJBTF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfREVUQUlMX0FTX0xJVEVSQUxfSFBQCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTIwMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2RldGFpbF9zdHIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yX3JhbmdlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gICAgdGVtcGxhdGU8IGNsYXNzIFJhbmdlID4KLSAgICBpbmxpbmUgaXRlcmF0b3JfcmFuZ2U8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxSYW5nZT46OnR5cGU+IAotICAgIGFzX2xpdGVyYWwoIFJhbmdlJiByICkKLSAgICB7Ci0gICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjptYWtlX2l0ZXJhdG9yX3JhbmdlKCA6Om5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OnN0cl9iZWdpbihyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6c3RyX2VuZChyKSApOwotICAgIH0KLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2JlZ2luLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2JlZ2luLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjJiNWU1OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9iZWdpbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9ERVRBSUxfQkVHSU5fSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0RFVEFJTF9CRUdJTl9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+IC8vIE5ETkJPT1NUX01TVkMKLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9jb21tb24uaHBwPgotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzEwKQotIyBpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS92YWx1ZV90eXBlLmhwcD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotICAgIG5hbWVzcGFjZSByYW5nZV9kZXRhaWwKLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLSAgICAgICAgc3RydWN0IHJhbmdlX2JlZ2luOwotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gZGVmYXVsdAotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfYmVnaW48c3RkX2NvbnRhaW5lcl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDID4KLSAgICAgICAgICAgIHN0YXRpYyBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPEM+Ojp0eXBlIGZ1biggQyYgYyApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGMuYmVnaW4oKTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBwYWlyCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9iZWdpbjxzdGRfcGFpcl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQID4KLSAgICAgICAgICAgIHN0YXRpYyBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPFA+Ojp0eXBlIGZ1biggY29uc3QgUCYgcCApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHAuZmlyc3Q7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBhcnJheQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfYmVnaW48YXJyYXlfPgotICAgICAgICB7Ci0gICAgICAgICNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMTApCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgc3RkOjpzaXplX3Qgc3ogPgotICAgICAgICAgICAgc3RhdGljIFQqIGZ1biggVCBORE5CT09TVF9SQU5HRV9BUlJBWV9SRUYoKVtzel0gKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBib29zdF9yYW5nZV9hcnJheTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgI2Vsc2UKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgICAgICBzdGF0aWMgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSByYW5nZV92YWx1ZTxUPjo6dHlwZSogZnVuKFQmIHQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICNlbmRpZgotICAgICAgICB9OwotCi0gICAgfSAvLyBuYW1lc3BhY2UgJ3JhbmdlX2RldGFpbCcKLQotICAgIG5hbWVzcGFjZSByYW5nZV9hZGxfYmFycmllcgotICAgIHsKLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEMgPgotICAgICAgICBpbmxpbmUgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxDPjo6dHlwZQotICAgICAgICBiZWdpbiggQyYgYyApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiByYW5nZV9kZXRhaWw6OnJhbmdlX2JlZ2luPCBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2RldGFpbDo6cmFuZ2U8Qz46OnR5cGUgPjo6ZnVuKCBjICk7Ci0gICAgICAgIH0KLSAgICB9Ci19IC8vIG5hbWVzcGFjZSAnYm9vc3QnCi0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9jb21tb24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvY29tbW9uLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmVmZjlkYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9jb21tb24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE3ICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IFRob3JzdGVuIE90dG9zZW4gMjAwMy0yMDA0LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0RFVEFJTF9DT01NT05fSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0RFVEFJTF9DT01NT05fSFBQCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTIwMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvc2ZpbmFlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2lkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX29yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pbnQuaHBwPgotI2luY2x1ZGUgPGNzdGRkZWY+Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gbWlzc2luZyBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uICB3b3JrYXJvdW5kLgotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCAKLXsKLSAgICBuYW1lc3BhY2UgcmFuZ2VfZGV0YWlsIAotICAgIHsgICAgICAgIAotICAgICAgICAvLyAxID0gc3RkIGNvbnRhaW5lcnMKLSAgICAgICAgLy8gMiA9IHN0ZDo6cGFpcgotICAgICAgICAvLyAzID0gY29uc3Qgc3RkOjpwYWlyCi0gICAgICAgIC8vIDQgPSBhcnJheQotICAgICAgICAvLyA1ID0gY29uc3QgYXJyYXkKLSAgICAgICAgLy8gNiA9IGNoYXIgYXJyYXkKLSAgICAgICAgLy8gNyA9IHdjaGFyX3QgYXJyYXkKLSAgICAgICAgLy8gOCA9IGNoYXIqCi0gICAgICAgIC8vIDkgPSBjb25zdCBjaGFyKgotICAgICAgICAvLyAxMCA9IHdoYXJfdCoKLSAgICAgICAgLy8gMTEgPSBjb25zdCB3Y2hhcl90KgotICAgICAgICAvLyAxMiA9IHN0cmluZwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiBtcGw6OmludF88MT46OnR5cGUgICAgc3RkX2NvbnRhaW5lcl87Ci0gICAgICAgIHR5cGVkZWYgbXBsOjppbnRfPDI+Ojp0eXBlICAgIHN0ZF9wYWlyXzsKLSAgICAgICAgdHlwZWRlZiBtcGw6OmludF88Mz46OnR5cGUgICAgY29uc3Rfc3RkX3BhaXJfOwotICAgICAgICB0eXBlZGVmIG1wbDo6aW50Xzw0Pjo6dHlwZSAgICBhcnJheV87Ci0gICAgICAgIHR5cGVkZWYgbXBsOjppbnRfPDU+Ojp0eXBlICAgIGNvbnN0X2FycmF5XzsKLSAgICAgICAgdHlwZWRlZiBtcGw6OmludF88Nj46OnR5cGUgICAgY2hhcl9hcnJheV87Ci0gICAgICAgIHR5cGVkZWYgbXBsOjppbnRfPDc+Ojp0eXBlICAgIHdjaGFyX3RfYXJyYXlfOwotICAgICAgICB0eXBlZGVmIG1wbDo6aW50Xzw4Pjo6dHlwZSAgICBjaGFyX3B0cl87Ci0gICAgICAgIHR5cGVkZWYgbXBsOjppbnRfPDk+Ojp0eXBlICAgIGNvbnN0X2NoYXJfcHRyXzsKLSAgICAgICAgdHlwZWRlZiBtcGw6OmludF88MTA+Ojp0eXBlICAgd2NoYXJfdF9wdHJfOwotICAgICAgICB0eXBlZGVmIG1wbDo6aW50XzwxMT46OnR5cGUgICBjb25zdF93Y2hhcl90X3B0cl87Ci0gICAgICAgIHR5cGVkZWYgbXBsOjppbnRfPDEyPjo6dHlwZSAgIHN0cmluZ187Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQyA+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9oZWxwZXIKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIEMqIGM7Ci0gICAgICAgICAgICBzdGF0aWMgQyAgcHRyOwotCi0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoIGJvb2wsIGlzX3BhaXJfICAgICAgICAgICAgICAgID0gc2l6ZW9mKCBuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjppc19wYWlyX2ltcGwoIGMgKSApID09IHNpemVvZiggeWVzX3R5cGUgKSApOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKCBib29sLCBpc19jaGFyX3B0cl8gICAgICAgICAgICA9IHNpemVvZiggbmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6aXNfY2hhcl9wdHJfaW1wbCggcHRyICkgKSA9PSBzaXplb2YoIHllc190eXBlICkgKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCggYm9vbCwgaXNfY29uc3RfY2hhcl9wdHJfICAgICAgPSBzaXplb2YoIG5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OmlzX2NvbnN0X2NoYXJfcHRyX2ltcGwoIHB0ciApICkgPT0gc2l6ZW9mKCB5ZXNfdHlwZSApICk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoIGJvb2wsIGlzX3djaGFyX3RfcHRyXyAgICAgICAgID0gc2l6ZW9mKCBuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjppc193Y2hhcl90X3B0cl9pbXBsKCBwdHIgKSApID09IHNpemVvZiggeWVzX3R5cGUgKSApOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKCBib29sLCBpc19jb25zdF93Y2hhcl90X3B0cl8gICA9IHNpemVvZiggbmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6aXNfY29uc3Rfd2NoYXJfdF9wdHJfaW1wbCggcHRyICkgKSA9PSBzaXplb2YoIHllc190eXBlICkgKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCggYm9vbCwgaXNfY2hhcl9hcnJheV8gICAgICAgICAgPSBzaXplb2YoIG5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OmlzX2NoYXJfYXJyYXlfaW1wbCggcHRyICkgKSA9PSBzaXplb2YoIHllc190eXBlICkgKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCggYm9vbCwgaXNfd2NoYXJfdF9hcnJheV8gICAgICAgPSBzaXplb2YoIG5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OmlzX3djaGFyX3RfYXJyYXlfaW1wbCggcHRyICkgKSA9PSBzaXplb2YoIHllc190eXBlICkgKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCggYm9vbCwgaXNfc3RyaW5nXyAgICAgICAgICAgICAgPSAobmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8aXNfY29uc3RfY2hhcl9wdHJfLCBpc19jb25zdF93Y2hhcl90X3B0cl8+Ojp2YWx1ZSApKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCggYm9vbCwgaXNfYXJyYXlfICAgICAgICAgICAgICAgPSBuZG5ib29zdDo6aXNfYXJyYXk8Qz46OnZhbHVlICk7Ci0gICAgICAgICAgICAKLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDID4KLSAgICAgICAgY2xhc3MgcmFuZ2UKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FICAgbmRuYm9vc3Q6Om1wbDo6aWZfYzwgOjpuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjpyYW5nZV9oZWxwZXI8Qz46OmlzX3BhaXJfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6c3RkX3BhaXJfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCA+Ojp0eXBlIHBhaXJfdDsKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSAgIG5kbmJvb3N0OjptcGw6OmlmX2M8IDo6bmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6cmFuZ2VfaGVscGVyPEM+Ojppc19hcnJheV8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OmFycmF5XywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFpcl90ID46OnR5cGUgYXJyYXlfdDsKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSAgIG5kbmJvb3N0OjptcGw6OmlmX2M8IDo6bmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6cmFuZ2VfaGVscGVyPEM+Ojppc19zdHJpbmdfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjpzdHJpbmdfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheV90ID46OnR5cGUgc3RyaW5nX3Q7Ci0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgICBuZG5ib29zdDo6bXBsOjppZl9jPCA6Om5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OnJhbmdlX2hlbHBlcjxDPjo6aXNfY29uc3RfY2hhcl9wdHJfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjpjb25zdF9jaGFyX3B0cl8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ190ID46OnR5cGUgY29uc3RfY2hhcl9wdHJfdDsKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSAgIG5kbmJvb3N0OjptcGw6OmlmX2M8IDo6bmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6cmFuZ2VfaGVscGVyPEM+Ojppc19jaGFyX3B0cl8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OmNoYXJfcHRyXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RfY2hhcl9wdHJfdCA+Ojp0eXBlIGNoYXJfcHRyX3Q7Ci0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgICBuZG5ib29zdDo6bXBsOjppZl9jPCA6Om5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OnJhbmdlX2hlbHBlcjxDPjo6aXNfY29uc3Rfd2NoYXJfdF9wdHJfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjpjb25zdF93Y2hhcl90X3B0cl8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJfcHRyX3QgPjo6dHlwZSBjb25zdF93Y2hhcl9wdHJfdDsKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSAgIG5kbmJvb3N0OjptcGw6OmlmX2M8IDo6bmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6cmFuZ2VfaGVscGVyPEM+Ojppc193Y2hhcl90X3B0cl8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OndjaGFyX3RfcHRyXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Rfd2NoYXJfcHRyX3QgPjo6dHlwZSB3Y2hhcl9wdHJfdDsKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSAgIG5kbmJvb3N0OjptcGw6OmlmX2M8IDo6bmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6cmFuZ2VfaGVscGVyPEM+Ojppc193Y2hhcl90X2FycmF5XywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6d2NoYXJfdF9hcnJheV8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdjaGFyX3B0cl90ID46OnR5cGUgd2NoYXJfYXJyYXlfdDsKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSAgIG5kbmJvb3N0OjptcGw6OmlmX2M8IDo6bmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6cmFuZ2VfaGVscGVyPEM+Ojppc19jaGFyX2FycmF5XywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6Y2hhcl9hcnJheV8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdjaGFyX2FycmF5X3QgPjo6dHlwZSBjaGFyX2FycmF5X3Q7Ci0gICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSAgIG5kbmJvb3N0OjptcGw6OmlmX2M8IDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8Y2hhcl9hcnJheV90Pjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OnN0ZF9jb250YWluZXJfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyX2FycmF5X3QgPjo6dHlwZSB0eXBlOyAgCi0gICAgICAgIH07IC8vIGNsYXNzICdyYW5nZScgCi0gICAgfQotfQotICAgICAgICAKLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9jb25zdF9pdGVyYXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9jb25zdF9pdGVyYXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViNzUyOTIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvY29uc3RfaXRlcmF0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgVGhvcnN0ZW4gT3R0b3NlbiAyMDAzLTIwMDQuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfREVUQUlMX0NPTlNUX0lURVJBVE9SX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9ERVRBSUxfQ09OU1RfSVRFUkFUT1JfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvY29tbW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvcmVtb3ZlX2V4dGVudC5ocHA+Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gbWlzc2luZyBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uICB3b3JrYXJvdW5kLgotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCAKLXsKLSAgICBuYW1lc3BhY2UgcmFuZ2VfZGV0YWlsIAotICAgIHsgICAgICAKLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfY29uc3RfaXRlcmF0b3JfOwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2NvbnN0X2l0ZXJhdG9yXzxzdGRfY29udGFpbmVyXz4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEMgPgotICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSBDOjpjb25zdF9pdGVyYXRvciB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9jb25zdF9pdGVyYXRvcl88c3RkX3BhaXJfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUCA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FIFA6OmZpcnN0X3R5cGUgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0KLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9jb25zdF9pdGVyYXRvcl88YXJyYXlfPgotICAgICAgICB7IAotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgY29uc3QgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSAKLSAgICAgICAgICAgICAgICAgICAgcmVtb3ZlX2V4dGVudDxUPjo6dHlwZSogdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgfSAKLSAgICAKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQyA+Ci0gICAgY2xhc3MgcmFuZ2VfY29uc3RfaXRlcmF0b3IKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9kZXRhaWw6OnJhbmdlPEM+Ojp0eXBlIGNfdHlwZTsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9kZXRhaWw6OnJhbmdlX2NvbnN0X2l0ZXJhdG9yXzxjX3R5cGU+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgcHRzPEM+Ojp0eXBlIHR5cGU7IAotICAgIH07Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9kZXRhaWxfc3RyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2RldGFpbF9zdHIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYWQwNzU0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2RldGFpbF9zdHIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzc2ICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IFRob3JzdGVuIE90dG9zZW4gMjAwMy0yMDA0LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0RFVEFJTF9ERVRBSUxfU1RSX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9ERVRBSUxfREVUQUlMX1NUUl9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+IC8vIE5ETkJPT1NUX01TVkMKLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9pdGVyYXRvci5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCAKLXsKLSAgICAKLSAgICBuYW1lc3BhY2UgcmFuZ2VfZGV0YWlsCi0gICAgewotICAgICAgICAvLwotICAgICAgICAvLyBpdGVyYXRvcgotICAgICAgICAvLwotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfaXRlcmF0b3JfPGNoYXJfYXJyYXlfPgotICAgICAgICB7IAotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgCi0gICAgICAgICAgICAgICAgICAgIHJlbW92ZV9leHRlbnQ8VD46OnR5cGUqIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2l0ZXJhdG9yXzxjaGFyX3B0cl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTID4KLSAgICAgICAgICAgIHN0cnVjdCBwdHMKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIGNoYXIqIHR5cGU7IAotICAgICAgICAgICAgfTsgICAgICAgICAKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9pdGVyYXRvcl88Y29uc3RfY2hhcl9wdHJfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUyA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBjb25zdCBjaGFyKiB0eXBlOwotICAgICAgICAgICAgfTsgICAgICAgICAKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9pdGVyYXRvcl88d2NoYXJfdF9wdHJfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUyA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiB3Y2hhcl90KiB0eXBlOyAKLSAgICAgICAgICAgIH07ICAgICAgICAgCi0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfaXRlcmF0b3JfPGNvbnN0X3djaGFyX3RfcHRyXz4KLSAgICAgICAgewotICAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTID4KLSAgICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICB0eXBlZGVmIGNvbnN0IHdjaGFyX3QqIHR5cGU7IAotICAgICAgICAgICAgIH07ICAgICAgICAgCi0gICAgICAgIH07Ci0KLQotICAgICAgICAvLwotICAgICAgICAvLyBjb25zdCBpdGVyYXRvcgotICAgICAgICAvLwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2NvbnN0X2l0ZXJhdG9yXzxjaGFyX2FycmF5Xz4KLSAgICAgICAgeyAKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLSAgICAgICAgICAgIHN0cnVjdCBwdHMKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIGNvbnN0IE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgCi0gICAgICAgICAgICAgICAgICAgIHJlbW92ZV9leHRlbnQ8VD46OnR5cGUqIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2NvbnN0X2l0ZXJhdG9yXzxjaGFyX3B0cl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTID4KLSAgICAgICAgICAgIHN0cnVjdCBwdHMKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIGNvbnN0IGNoYXIqIHR5cGU7IAotICAgICAgICAgICAgfTsgICAgICAgICAKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9jb25zdF9pdGVyYXRvcl88Y29uc3RfY2hhcl9wdHJfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUyA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBjb25zdCBjaGFyKiB0eXBlOyAKLSAgICAgICAgICAgIH07ICAgICAgICAgCi0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfY29uc3RfaXRlcmF0b3JfPHdjaGFyX3RfcHRyXz4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFMgPgotICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgY29uc3Qgd2NoYXJfdCogdHlwZTsgCi0gICAgICAgICAgICB9OyAgICAgICAgIAotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2NvbnN0X2l0ZXJhdG9yXzxjb25zdF93Y2hhcl90X3B0cl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUyA+Ci0gICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgdHlwZWRlZiBjb25zdCB3Y2hhcl90KiB0eXBlOyAKLSAgICAgICAgICAgICB9OyAgICAgICAgIAotICAgICAgICB9OwotICAgIH0KLX0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9iZWdpbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3NpemVfdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3ZhbHVlX3R5cGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9jb21tb24uaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgCi17Ci0gICAgCi0gICAgbmFtZXNwYWNlIHJhbmdlX2RldGFpbAotICAgIHsKLSAgICAgICAgLy8KLSAgICAgICAgLy8gc3RyX2JlZ2luKCkKLSAgICAgICAgLy8KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfYmVnaW48Y2hhcl9wdHJfPgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY2hhciogZnVuKCBjaGFyKiBzICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gczsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9iZWdpbjxjb25zdF9jaGFyX3B0cl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBmdW4oIGNvbnN0IGNoYXIqIHMgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBzOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfYmVnaW48d2NoYXJfdF9wdHJfPgotICAgICAgICB7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHN0YXRpYyB3Y2hhcl90KiBmdW4oIHdjaGFyX3QqIHMgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBzOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2JlZ2luPGNvbnN0X3djaGFyX3RfcHRyXz4KLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IHdjaGFyX3QqIGZ1biggY29uc3Qgd2NoYXJfdCogcyApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQyA+Ci0gICAgICAgIGlubGluZSBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPEM+Ojp0eXBlIAotICAgICAgICBzdHJfYmVnaW4oIEMmIGMgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcmFuZ2VfZGV0YWlsOjpyYW5nZV9iZWdpbjwgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSAKLSAgICAgICAgICAgICAgICByYW5nZV9kZXRhaWw6OnJhbmdlPEM+Ojp0eXBlID46OmZ1biggYyApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8KLSAgICAgICAgLy8gc3RyX2VuZCgpCi0gICAgICAgIC8vCi0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfZW5kPGNoYXJfYXJyYXlfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgc3RkOjpzaXplX3Qgc3ogPgotICAgICAgICAgICAgc3RhdGljIFQqIGZ1biggVCBORE5CT09TVF9SQU5HRV9BUlJBWV9SRUYoKVtzel0gKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjphcnJheV9lbmQoIGJvb3N0X3JhbmdlX2FycmF5ICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9lbmQ8d2NoYXJfdF9hcnJheV8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBzeiA+Ci0gICAgICAgICAgICBzdGF0aWMgVCogZnVuKCBUIE5ETkJPT1NUX1JBTkdFX0FSUkFZX1JFRigpW3N6XSApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OmFycmF5X2VuZCggYm9vc3RfcmFuZ2VfYXJyYXkgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2VuZDxjaGFyX3B0cl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjaGFyKiBmdW4oIGNoYXIqIHMgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjpzdHJfZW5kKCBzICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfZW5kPGNvbnN0X2NoYXJfcHRyXz4KLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGZ1biggY29uc3QgY2hhciogcyApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OnN0cl9lbmQoIHMgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9lbmQ8d2NoYXJfdF9wdHJfPgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgd2NoYXJfdCogZnVuKCB3Y2hhcl90KiBzICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6c3RyX2VuZCggcyApOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotCi0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfZW5kPGNvbnN0X3djaGFyX3RfcHRyXz4KLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IHdjaGFyX3QqIGZ1biggY29uc3Qgd2NoYXJfdCogcyApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OnN0cl9lbmQoIHMgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQyA+Ci0gICAgICAgIGlubGluZSBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPEM+Ojp0eXBlIAotICAgICAgICBzdHJfZW5kKCBDJiBjICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHJhbmdlX2RldGFpbDo6cmFuZ2VfZW5kPCBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FIAotICAgICAgICAgICAgICAgIHJhbmdlX2RldGFpbDo6cmFuZ2U8Qz46OnR5cGUgPjo6ZnVuKCBjICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLwotICAgICAgICAvLyBzaXplX3R5cGUKLSAgICAgICAgLy8KLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9zaXplX3R5cGVfPGNoYXJfYXJyYXlfPgotICAgICAgICB7IAotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEEgPgotICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgc3RkOjpzaXplX3QgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2Vfc2l6ZV90eXBlXzxjaGFyX3B0cl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTID4KLSAgICAgICAgICAgIHN0cnVjdCBwdHMKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHN0ZDo6c2l6ZV90IHR5cGU7Ci0gICAgICAgICAgICB9OyAgICAgICAgIAotICAgICAgICB9OwotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2Vfc2l6ZV90eXBlXzxjb25zdF9jaGFyX3B0cl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTID4KLSAgICAgICAgICAgIHN0cnVjdCBwdHMKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHN0ZDo6c2l6ZV90IHR5cGU7Ci0gICAgICAgICAgICB9OyAgICAgICAgIAotICAgICAgICB9OwotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2Vfc2l6ZV90eXBlXzx3Y2hhcl90X3B0cl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTID4KLSAgICAgICAgICAgIHN0cnVjdCBwdHMKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHN0ZDo6c2l6ZV90IHR5cGU7Ci0gICAgICAgICAgICB9OyAgICAgICAgIAotICAgICAgICB9OwotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2Vfc2l6ZV90eXBlXzxjb25zdF93Y2hhcl90X3B0cl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTID4KLSAgICAgICAgICAgIHN0cnVjdCBwdHMKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHN0ZDo6c2l6ZV90IHR5cGU7Ci0gICAgICAgICAgICB9OyAgICAgICAgIAotICAgICAgICB9OyAgCi0KLSAgICAgICAgLy8KLSAgICAgICAgLy8gdmFsdWVfdHlwZQotICAgICAgICAvLwotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfdmFsdWVfdHlwZV88Y2hhcl9hcnJheV8+Ci0gICAgICAgIHsgCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBjaGFyIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX3ZhbHVlX3R5cGVfPGNoYXJfcHRyXz4KLSAgICAgICAgewotICAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTID4KLSAgICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICB0eXBlZGVmIGNoYXIgdHlwZTsgCi0gICAgICAgICAgICAgfTsgICAgICAgICAKLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX3ZhbHVlX3R5cGVfPGNvbnN0X2NoYXJfcHRyXz4KLSAgICAgICAgewotICAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTID4KLSAgICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICB0eXBlZGVmIGNvbnN0IGNoYXIgdHlwZTsKLSAgICAgICAgICAgICB9OyAgICAgICAgIAotICAgICAgICB9OwotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfdmFsdWVfdHlwZV88d2NoYXJfdF9wdHJfPgotICAgICAgICB7Ci0gICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFMgPgotICAgICAgICAgICAgIHN0cnVjdCBwdHMKLSAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIHR5cGVkZWYgd2NoYXJfdCB0eXBlOwotICAgICAgICAgICAgIH07ICAgICAgICAgCi0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV92YWx1ZV90eXBlXzxjb25zdF93Y2hhcl90X3B0cl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTID4KLSAgICAgICAgICAgIHN0cnVjdCBwdHMKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIGNvbnN0IHdjaGFyX3QgdHlwZTsKLSAgICAgICAgICAgIH07ICAgICAgICAgCi0gICAgICAgIH07Ci0KLSAgICB9IC8vIG5hbWVzcGFjZSAncmFuZ2VfZGV0YWlsJwotCi19IC8vIG5hbWVzcGFjZSAnYm9vc3QnCi0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9lbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvZW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODdmODQ4Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9lbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IFRob3JzdGVuIE90dG9zZW4gMjAwMy0yMDA0LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0RFVEFJTF9FTkRfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0RFVEFJTF9FTkRfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAvLyBORE5CT09TVF9NU1ZDCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC92YzYvZW5kLmhwcD4KLSNlbHNlCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9pbXBsZW1lbnRhdGlvbl9oZWxwLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3IuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvY29tbW9uLmhwcD4KLSMgaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMTApCi0jICBpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvcmVtb3ZlX2V4dGVudC5ocHA+Ci0jIGVuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIG5hbWVzcGFjZSByYW5nZV9kZXRhaWwKLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLSAgICAgICAgc3RydWN0IHJhbmdlX2VuZDsKLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIGRlZmF1bHQKLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2VuZDxzdGRfY29udGFpbmVyXz4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEMgPgotICAgICAgICAgICAgc3RhdGljIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8Qz46OnR5cGUKLSAgICAgICAgICAgIGZ1biggQyYgYyApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGMuZW5kKCk7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gcGFpcgotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfZW5kPHN0ZF9wYWlyXz4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAgPgotICAgICAgICAgICAgc3RhdGljIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8UD46OnR5cGUKLSAgICAgICAgICAgIGZ1biggY29uc3QgUCYgcCApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHAuc2Vjb25kOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gYXJyYXkKLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2VuZDxhcnJheV8+Ci0gICAgICAgIHsKLSAgICAgICAgI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMxMCkKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBzeiA+Ci0gICAgICAgICAgICBzdGF0aWMgVCogZnVuKCBUIE5ETkJPT1NUX1JBTkdFX0FSUkFZX1JFRigpW3N6XSApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OmFycmF5X2VuZCggYm9vc3RfcmFuZ2VfYXJyYXkgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgI2Vsc2UKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgICAgICBzdGF0aWMgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSByZW1vdmVfZXh0ZW50PFQ+Ojp0eXBlKiBmdW4oVCYgdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdCArIHJlbW92ZV9leHRlbnQ8VD46OnNpemU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICNlbmRpZgotICAgICAgICB9OwotCi0gICAgfSAvLyBuYW1lc3BhY2UgJ3JhbmdlX2RldGFpbCcKLQotICAgIG5hbWVzcGFjZSByYW5nZV9hZGxfYmFycmllcgotICAgIHsKLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEMgPgotICAgICAgICBpbmxpbmUgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxDPjo6dHlwZQotICAgICAgICBlbmQoIEMmIGMgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcmFuZ2VfZGV0YWlsOjpyYW5nZV9lbmQ8IE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfZGV0YWlsOjpyYW5nZTxDPjo6dHlwZSA+OjpmdW4oIGMgKTsKLSAgICAgICAgfQotICAgIH0gLy8gbmFtZXNwYWNlIHJhbmdlX2FkbF9iYXJyaWVyCi0KLX0gLy8gbmFtZXNwYWNlICdib29zdCcKLQotIyBlbmRpZiAvLyBWQzYKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvZXh0cmFjdF9vcHRpb25hbF90eXBlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2V4dHJhY3Rfb3B0aW9uYWxfdHlwZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2YTQ3YjUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvZXh0cmFjdF9vcHRpb25hbF90eXBlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IEFybm8gU2Nob2VkbCAmIE5laWwgR3JvdmVzIDIwMDkuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0RFVEFJTF9FWFRSQUNUX09QVElPTkFMX1RZUEVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0RFVEFJTF9FWFRSQUNUX09QVElPTkFMX1RZUEVfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTIwMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotI2lmZGVmIE5ETkJPT1NUX05PX1BBUlRJQUxfU1BFQ0lBTElaQVRJT05fSU1QTElDSVRfREVGQVVMVF9BUkdTCi0KLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfRVhUUkFDVF9PUFRJT05BTF9UWVBFKCBhX3R5cGVkZWYgKSAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEMgPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHN0cnVjdCBleHRyYWN0XyAjIyBhX3R5cGVkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBDOjphX3R5cGVkZWYgdHlwZTsgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH07Ci0KLSNlbHNlCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgbmFtZXNwYWNlIHJhbmdlX2RldGFpbCB7Ci0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGV4aXN0cyB7IHR5cGVkZWYgdm9pZCB0eXBlOyB9OwotICAgIH0KLX0KLQotLy8gRGVmaW5lcyBleHRyYWN0X3NvbWVfdHlwZWRlZjxUPiB3aGljaCBleHBvc2VzIFQ6OnNvbWVfdHlwZWRlZiBhcwotLy8gZXh0cmFjdF9zb21lX3R5cGVkZWY8VD46OnR5cGUgaWYgVDo6c29tZV90eXBlZGVmIGV4aXN0cy4gT3RoZXJ3aXNlCi0vLyBleHRyYWN0X3NvbWVfdHlwZWRlZjxUPiBpcyBlbXB0eS4KLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfRVhUUkFDVF9PUFRJT05BTF9UWVBFKCBhX3R5cGVkZWYgKSAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEMsIHR5cGVuYW1lIEVuYWJsZT12b2lkID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHN0cnVjdCBleHRyYWN0XyAjIyBhX3R5cGVkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7fTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEMgPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHN0cnVjdCBleHRyYWN0XyAjIyBhX3R5cGVkZWY8IEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAsIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6ZXhpc3RzPCBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIEM6OmFfdHlwZWRlZiA+Ojp0eXBlIFwKLSAgICA+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBDOjphX3R5cGVkZWYgdHlwZTsgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH07Ci0KLSNlbmRpZgotCi0jZW5kaWYgLy8gaW5jbHVkZSBndWFyZApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvaW1wbGVtZW50YXRpb25faGVscC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9pbXBsZW1lbnRhdGlvbl9oZWxwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjMxMGI0NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9pbXBsZW1lbnRhdGlvbl9oZWxwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9ERVRBSUxfSU1QTEVNRU5UQVRJT05fSEVMUF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfREVUQUlMX0lNUExFTUVOVEFUSU9OX0hFTFBfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9jb21tb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotI2luY2x1ZGUgPGNzdGRkZWY+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1dDSEFSCi0jaW5jbHVkZSA8d2NoYXIuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICBuYW1lc3BhY2UgcmFuZ2VfZGV0YWlsCi0gICAgewotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICAgICAgaW5saW5lIHZvaWQgYm9vc3RfcmFuZ2Vfc2lsZW5jZV93YXJuaW5nKCBjb25zdCBUJiApIHsgfQotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBlbmQoKSBoZWxwCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAgICAgIGlubGluZSBjb25zdCBjaGFyKiBzdHJfZW5kKCBjb25zdCBjaGFyKiBzLCBjb25zdCBjaGFyKiApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzICsgc3RybGVuKCBzICk7Ci0gICAgICAgIH0KLQotI2lmbmRlZiBORE5CT09TVF9OT19DV0NIQVIKLSAgICAgICAgaW5saW5lIGNvbnN0IHdjaGFyX3QqIHN0cl9lbmQoIGNvbnN0IHdjaGFyX3QqIHMsIGNvbnN0IHdjaGFyX3QqICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHMgKyB3Y3NsZW4oIHMgKTsKLSAgICAgICAgfQotI2Vsc2UKLSAgICAgICAgaW5saW5lIGNvbnN0IHdjaGFyX3QqIHN0cl9lbmQoIGNvbnN0IHdjaGFyX3QqIHMsIGNvbnN0IHdjaGFyX3QqICkKLSAgICAgICAgewotICAgICAgICAgICAgaWYoIHMgPT0gMCB8fCBzWzBdID09IDAgKQotICAgICAgICAgICAgICAgIHJldHVybiBzOwotICAgICAgICAgICAgd2hpbGUoICorK3MgIT0gMCApCi0gICAgICAgICAgICAgICAgOwotICAgICAgICAgICAgcmV0dXJuIHM7Ci0gICAgICAgIH0KLSNlbmRpZgotCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBDaGFyID4KLSAgICAgICAgaW5saW5lIENoYXIqIHN0cl9lbmQoIENoYXIqIHMgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxDaGFyKj4oIHN0cl9lbmQoIHMsIHMgKSApOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFQsIHN0ZDo6c2l6ZV90IHN6ID4KLSAgICAgICAgaW5saW5lIFQqIGFycmF5X2VuZCggVCBORE5CT09TVF9SQU5HRV9BUlJBWV9SRUYoKVtzel0gKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYm9vc3RfcmFuZ2VfYXJyYXkgKyBzejsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBULCBzdGQ6OnNpemVfdCBzeiA+Ci0gICAgICAgIGlubGluZSBjb25zdCBUKiBhcnJheV9lbmQoIGNvbnN0IFQgTkROQk9PU1RfUkFOR0VfQVJSQVlfUkVGKClbc3pdICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGJvb3N0X3JhbmdlX2FycmF5ICsgc3o7Ci0gICAgICAgIH0KLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gc2l6ZSgpIGhlbHAKLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIENoYXIgPgotICAgICAgICBpbmxpbmUgc3RkOjpzaXplX3Qgc3RyX3NpemUoIGNvbnN0IENoYXIqIGNvbnN0JiBzICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0cl9lbmQoIHMgKSAtIHM7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgVCwgc3RkOjpzaXplX3Qgc3ogPgotICAgICAgICBpbmxpbmUgc3RkOjpzaXplX3QgYXJyYXlfc2l6ZSggVCBORE5CT09TVF9SQU5HRV9BUlJBWV9SRUYoKVtzel0gKQotICAgICAgICB7Ci0gICAgICAgICAgICBib29zdF9yYW5nZV9zaWxlbmNlX3dhcm5pbmcoIGJvb3N0X3JhbmdlX2FycmF5ICk7Ci0gICAgICAgICAgICByZXR1cm4gc3o7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgVCwgc3RkOjpzaXplX3Qgc3ogPgotICAgICAgICBpbmxpbmUgc3RkOjpzaXplX3QgYXJyYXlfc2l6ZSggY29uc3QgVCBORE5CT09TVF9SQU5HRV9BUlJBWV9SRUYoKVtzel0gKQotICAgICAgICB7Ci0gICAgICAgICAgICBib29zdF9yYW5nZV9zaWxlbmNlX3dhcm5pbmcoIGJvb3N0X3JhbmdlX2FycmF5ICk7Ci0gICAgICAgICAgICByZXR1cm4gc3o7Ci0gICAgICAgIH0KLQotICAgIH0gLy8gbmFtZXNwYWNlICdyYW5nZV9kZXRhaWwnCi0KLX0gLy8gbmFtZXNwYWNlICdib29zdCcKLQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2l0ZXJhdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2l0ZXJhdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTQ3YjgzZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9pdGVyYXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9ERVRBSUxfSVRFUkFUT1JfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0RFVEFJTF9JVEVSQVRPUl9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9jb21tb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9yZW1vdmVfZXh0ZW50LmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIG1pc3NpbmcgcGFydGlhbCBzcGVjaWFsaXphdGlvbiAgd29ya2Fyb3VuZC4KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgCi17Ci0gICAgbmFtZXNwYWNlIHJhbmdlX2RldGFpbCAKLSAgICB7ICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfaXRlcmF0b3JfIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDID4KLSAgICAgICAgICAgIHN0cnVjdCBwdHMKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIGludCB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9pdGVyYXRvcl88c3RkX2NvbnRhaW5lcl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDID4KLSAgICAgICAgICAgIHN0cnVjdCBwdHMKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgQzo6aXRlcmF0b3IgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfaXRlcmF0b3JfPHN0ZF9wYWlyXz4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAgPgotICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSBQOjpmaXJzdF90eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2l0ZXJhdG9yXzxhcnJheV8+Ci0gICAgICAgIHsgCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FIAotICAgICAgICAgICAgICAgICAgICByZW1vdmVfZXh0ZW50PFQ+Ojp0eXBlKiB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgfSAKLQotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDID4KLSAgICBjbGFzcyByYW5nZV9tdXRhYmxlX2l0ZXJhdG9yCi0gICAgewotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfZGV0YWlsOjpyYW5nZTxDPjo6dHlwZSBjX3R5cGU7Ci0gICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJhbmdlX2RldGFpbDo6cmFuZ2VfaXRlcmF0b3JfPGNfdHlwZT46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBwdHM8Qz46OnR5cGUgdHlwZTsgCi0gICAgfTsKLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9taXNjX2NvbmNlcHQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvbWlzY19jb25jZXB0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjUwZGUzOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9taXNjX2NvbmNlcHQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeSBjb25jZXB0IGNoZWNrcwotLy8KLS8vICBDb3B5cmlnaHQgTmVpbCBHcm92ZXMgMjAwOS4gVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbgotLy8gIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfREVUQUlMX01JU0NfQ09OQ0VQVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfREVUQUlMX01JU0NfQ09OQ0VQVF9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmNlcHRfY2hlY2suaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICBuYW1lc3BhY2UgcmFuZ2VfZGV0YWlsCi0gICAgewotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci0gICAgICAgIGNsYXNzIFNhbWVUeXBlQ29uY2VwdAotICAgICAgICB7Ci0gICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoU2FtZVR5cGVDb25jZXB0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHNhbWVfdHlwZShhLGIpOwotICAgICAgICAgICAgfQotICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBzYW1lX3R5cGUoVCxUKSB7fQotICAgICAgICAgICAgVDEgYTsKLSAgICAgICAgICAgIFQyIGI7Ci0gICAgICAgIH07Ci0gICAgfQotfQotCi0jZW5kaWYgLy8gaW5jbHVkZSBndWFyZApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvcmVtb3ZlX2V4dGVudC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9yZW1vdmVfZXh0ZW50LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGVlMGUzNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9yZW1vdmVfZXh0ZW50LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1NyArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBKb25hdGhhbiBUdXJrYW5pcyAyMDA1LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfREVUQUlMX1JFTU9WRV9CT1VORFNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0RFVEFJTF9SRU1PVkVfQk9VTkRTX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gIC8vIE1TVkMsIE5PX0lOVFJJTlNJQ19XQ0hBUl9ULCBwdXQgc2l6ZV90IGluIHN0ZC4KLSNpbmNsdWRlIDxjc3RkZGVmPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ldmFsX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWRlbnRpdHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgCi17Ci0gICAgbmFtZXNwYWNlIHJhbmdlX2RldGFpbAotICAgIHsKLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDYXNlMSA9IG1wbDo6dHJ1ZV8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBUeXBlMSA9IG1wbDo6dm9pZF8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBDYXNlMiA9IG1wbDo6dHJ1ZV8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBUeXBlMiA9IG1wbDo6dm9pZF8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBDYXNlMyA9IG1wbDo6dHJ1ZV8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBUeXBlMyA9IG1wbDo6dm9pZF8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBDYXNlNCA9IG1wbDo6dHJ1ZV8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBUeXBlNCA9IG1wbDo6dm9pZF8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBDYXNlNSA9IG1wbDo6dHJ1ZV8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBUeXBlNSA9IG1wbDo6dm9pZF8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBDYXNlNiA9IG1wbDo6dHJ1ZV8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBUeXBlNiA9IG1wbDo6dm9pZF8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBDYXNlNyA9IG1wbDo6dHJ1ZV8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBUeXBlNyA9IG1wbDo6dm9pZF8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBDYXNlOCA9IG1wbDo6dHJ1ZV8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBUeXBlOCA9IG1wbDo6dm9pZF8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBDYXNlOSA9IG1wbDo6dHJ1ZV8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBUeXBlOSA9IG1wbDo6dm9pZF8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBDYXNlMTAgPSBtcGw6OnRydWVfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZTEwID0gbXBsOjp2b2lkXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIENhc2UxMSA9IG1wbDo6dHJ1ZV8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBUeXBlMTEgPSBtcGw6OnZvaWRfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQ2FzZTEyID0gbXBsOjp0cnVlXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFR5cGUxMiA9IG1wbDo6dm9pZF8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBDYXNlMTMgPSBtcGw6OnRydWVfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZTEzID0gbXBsOjp2b2lkXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIENhc2UxNCA9IG1wbDo6dHJ1ZV8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBUeXBlMTQgPSBtcGw6OnZvaWRfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQ2FzZTE1ID0gbXBsOjp0cnVlXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFR5cGUxNSA9IG1wbDo6dm9pZF8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBDYXNlMTYgPSBtcGw6OnRydWVfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZTE2ID0gbXBsOjp2b2lkXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIENhc2UxNyA9IG1wbDo6dHJ1ZV8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBUeXBlMTcgPSBtcGw6OnZvaWRfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQ2FzZTE4ID0gbXBsOjp0cnVlXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFR5cGUxOCA9IG1wbDo6dm9pZF8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBDYXNlMTkgPSBtcGw6OnRydWVfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZTE5ID0gbXBsOjp2b2lkXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIENhc2UyMCA9IG1wbDo6dHJ1ZV8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBUeXBlMjAgPSBtcGw6OnZvaWRfPgotICAgICAgICBzdHJ1Y3Qgc2VsZWN0IHsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgICAgICAgICAgICAgICAgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgICAgICAgICAgQ2FzZTEsIG1wbDo6aWRlbnRpdHk8VHlwZTE+LCBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICAgICAgICAgICAgICBDYXNlMiwgbXBsOjppZGVudGl0eTxUeXBlMj4sIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICAgICAgICAgIENhc2UzLCBtcGw6OmlkZW50aXR5PFR5cGUzPiwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgICAgICAgICAgQ2FzZTQsIG1wbDo6aWRlbnRpdHk8VHlwZTQ+LCBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICAgICAgICAgICAgICBDYXNlNSwgbXBsOjppZGVudGl0eTxUeXBlNT4sIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICAgICAgICAgIENhc2U2LCBtcGw6OmlkZW50aXR5PFR5cGU2PiwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgICAgICAgICAgQ2FzZTcsIG1wbDo6aWRlbnRpdHk8VHlwZTc+LCBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICAgICAgICAgICAgICBDYXNlOCwgbXBsOjppZGVudGl0eTxUeXBlOD4sIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICAgICAgICAgIENhc2U5LCBtcGw6OmlkZW50aXR5PFR5cGU5PiwgbXBsOjppZl88Ci0gICAgICAgICAgICAgICAgICAgICAgICBDYXNlMTAsIFR5cGUxMCwgbXBsOjp2b2lkXyA+ID4gPiA+ID4gPiA+ID4gPgotICAgICAgICAgICAgICAgICAgICA+Ojp0eXBlIHJlc3VsdDE7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICAgICAgICAgICAgICAgIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICAgICAgICAgIENhc2UxMSwgbXBsOjppZGVudGl0eTxUeXBlMTE+LCBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICAgICAgICAgICAgICBDYXNlMTIsIG1wbDo6aWRlbnRpdHk8VHlwZTEyPiwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgICAgICAgICAgQ2FzZTEzLCBtcGw6OmlkZW50aXR5PFR5cGUxMz4sIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICAgICAgICAgIENhc2UxNCwgbXBsOjppZGVudGl0eTxUeXBlMTQ+LCBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICAgICAgICAgICAgICBDYXNlMTUsIG1wbDo6aWRlbnRpdHk8VHlwZTE1PiwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgICAgICAgICAgQ2FzZTE2LCBtcGw6OmlkZW50aXR5PFR5cGUxNj4sIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICAgICAgICAgIENhc2UxNywgbXBsOjppZGVudGl0eTxUeXBlMTc+LCBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICAgICAgICAgICAgICBDYXNlMTgsIG1wbDo6aWRlbnRpdHk8VHlwZTE4PiwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgICAgICAgICAgQ2FzZTE5LCBtcGw6OmlkZW50aXR5PFR5cGUxOT4sIG1wbDo6aWZfPAotICAgICAgICAgICAgICAgICAgICAgICAgQ2FzZTIwLCBUeXBlMjAsIG1wbDo6dm9pZF8gPiA+ID4gPiA+ID4gPiA+ID4KLSAgICAgICAgICAgICAgICAgICAgPiByZXN1bHQyOwotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSAgICAKLSAgICAgICAgICAgICAgICAgICAgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTxyZXN1bHQxLCBtcGw6OnZvaWRfPiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdDIsCi0gICAgICAgICAgICAgICAgICAgICAgICBtcGw6OmlkZW50aXR5PHJlc3VsdDE+Ci0gICAgICAgICAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX2V4dGVudCB7Ci0gICAgICAgICAgICBzdGF0aWMgVCogYXI7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHNpemUgPSBzaXplb2YoKmFyKSAvIHNpemVvZigoKmFyKVswXSkpOwotCi0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICAgICAgICAgICAgICAgIHNlbGVjdDwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8VCwgYm9vbFtzaXplXT4sICAgICAgICAgICAgICAgICAgYm9vbCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8VCwgY2hhcltzaXplXT4sICAgICAgICAgICAgICAgICAgY2hhciwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8VCwgc2lnbmVkIGNoYXJbc2l6ZV0+LCAgICAgICAgICAgc2lnbmVkIGNoYXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFQsIHVuc2lnbmVkIGNoYXJbc2l6ZV0+LCAgICAgICAgIHVuc2lnbmVkIGNoYXIsCi0gICAgICAgICAgICAgICAgICAgICNpZm5kZWYgTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8VCwgd2NoYXJfdFtzaXplXT4sICAgICAgICAgICAgICAgd2NoYXJfdCwKLSAgICAgICAgICAgICAgICAgICAgI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFQsIHNob3J0W3NpemVdPiwgICAgICAgICAgICAgICAgIHNob3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTxULCB1bnNpZ25lZCBzaG9ydFtzaXplXT4sICAgICAgICB1bnNpZ25lZCBzaG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8VCwgaW50W3NpemVdPiwgICAgICAgICAgICAgICAgICAgaW50LAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTxULCB1bnNpZ25lZCBpbnRbc2l6ZV0+LCAgICAgICAgICB1bnNpZ25lZCBpbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFQsIGxvbmdbc2l6ZV0+LCAgICAgICAgICAgICAgICAgIGxvbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFQsIHVuc2lnbmVkIGxvbmdbc2l6ZV0+LCAgICAgICAgIHVuc2lnbmVkIGxvbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFQsIGZsb2F0W3NpemVdPiwgICAgICAgICAgICAgICAgIGZsb2F0LAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTxULCBkb3VibGVbc2l6ZV0+LCAgICAgICAgICAgICAgICBkb3VibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFQsIGxvbmcgZG91YmxlW3NpemVdPiwgICAgICAgICAgIGxvbmcgZG91YmxlCi0gICAgICAgICAgICAgICAgICAgID46OnR5cGUgcmVzdWx0MTsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgICAgICAgICAgICAgICAgc2VsZWN0PAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTxULCBjb25zdCBib29sW3NpemVdPiwgICAgICAgICAgICBjb25zdCBib29sLAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTxULCBjb25zdCBjaGFyW3NpemVdPiwgICAgICAgICAgICBjb25zdCBjaGFyLAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTxULCBjb25zdCBzaWduZWQgY2hhcltzaXplXT4sICAgICBjb25zdCBzaWduZWQgY2hhciwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8VCwgY29uc3QgdW5zaWduZWQgY2hhcltzaXplXT4sICAgY29uc3QgdW5zaWduZWQgY2hhciwKLSAgICAgICAgICAgICAgICAgICAgI2lmbmRlZiBORE5CT09TVF9OT19JTlRSSU5TSUNfV0NIQVJfVAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTxULCBjb25zdCB3Y2hhcl90W3NpemVdPiwgICAgICAgICBjb25zdCB3Y2hhcl90LAotICAgICAgICAgICAgICAgICAgICAjZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8VCwgY29uc3Qgc2hvcnRbc2l6ZV0+LCAgICAgICAgICAgY29uc3Qgc2hvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFQsIGNvbnN0IHVuc2lnbmVkIHNob3J0W3NpemVdPiwgIGNvbnN0IHVuc2lnbmVkIHNob3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTxULCBjb25zdCBpbnRbc2l6ZV0+LCAgICAgICAgICAgICBjb25zdCBpbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFQsIGNvbnN0IHVuc2lnbmVkIGludFtzaXplXT4sICAgIGNvbnN0IHVuc2lnbmVkIGludCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8VCwgY29uc3QgbG9uZ1tzaXplXT4sICAgICAgICAgICAgY29uc3QgbG9uZywKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8VCwgY29uc3QgdW5zaWduZWQgbG9uZ1tzaXplXT4sICAgY29uc3QgdW5zaWduZWQgbG9uZywKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8VCwgY29uc3QgZmxvYXRbc2l6ZV0+LCAgICAgICAgICAgY29uc3QgZmxvYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFQsIGNvbnN0IGRvdWJsZVtzaXplXT4sICAgICAgICAgIGNvbnN0IGRvdWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8VCwgY29uc3QgbG9uZyBkb3VibGVbc2l6ZV0+LCAgICAgY29uc3QgbG9uZyBkb3VibGUKLSAgICAgICAgICAgICAgICAgICAgPiByZXN1bHQyOwotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgICAgICAgICAgICAgICBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPHJlc3VsdDEsIG1wbDo6dm9pZF8+LAotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0MiwKLSAgICAgICAgICAgICAgICAgICAgICAgIG1wbDo6aWRlbnRpdHk8cmVzdWx0MT4KLSAgICAgICAgICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgICAgICB9OwotCi0gICAgfSAvLyBuYW1lc3BhY2UgJ3JhbmdlX2RldGFpbCcKLQotfSAvLyBuYW1lc3BhY2UgJ2Jvb3N0JwotCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvc2FmZV9ib29sLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3NhZmVfYm9vbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1YTA3MzEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvc2FmZV9ib29sLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8vICBUaGlzIGhlYWRlciBpbnRlbnRpb25hbGx5IGhhcyBubyBpbmNsdWRlIGd1YXJkcy4KLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDEwIE5laWwgR3JvdmVzCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dAotLy8KLS8vIFRoaXMgY29kZSB1dGlsaXNlcyB0aGUgZXhwZXJpZW5jZSBnYWluZWQgZHVyaW5nIHRoZSBldm9sdXRpb24gb2YKLS8vIDxuZG5ib29zdC9zbWFydF9wdHIvb3BlcmF0b3JfYm9vbC5ocHA+Ci0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX1NBRkVfQk9PTF9JTkNMVURFRF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfU0FGRV9CT09MX0lOQ0xVREVEX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9jb25maWcuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICBuYW1lc3BhY2UgcmFuZ2VfZGV0YWlsCi0gICAgewotCi10ZW1wbGF0ZTxjbGFzcyBEYXRhTWVtYmVyUHRyPgotY2xhc3Mgc2FmZV9ib29sCi17Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzYWZlX2Jvb2wgdGhpc190eXBlOwotCi0jaWYgKGRlZmluZWQoX19TVU5QUk9fQ0MpICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19TVU5QUk9fQ0MsIDwgMHg1NzApKSB8fCBkZWZpbmVkKF9fQ0lOVF8pCi0gICAgdHlwZWRlZiBib29sIHVuc3BlY2lmaWVkX2Jvb2xfdHlwZTsKLSAgICBzdGF0aWMgdW5zcGVjaWZpZWRfYm9vbF90eXBlIHRvX3Vuc3BlY2lmaWVkX2Jvb2woY29uc3QgYm9vbCB4LCBEYXRhTWVtYmVyUHRyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHg7Ci0gICAgfQotI2VsaWYgZGVmaW5lZChfTUFOQUdFRCkKLSAgICBzdGF0aWMgdm9pZCB1bnNwZWNpZmllZF9ib29sKHRoaXNfdHlwZSoqKikKLSAgICB7Ci0gICAgfQotICAgIHR5cGVkZWYgdm9pZCgqdW5zcGVjaWZpZWRfYm9vbF90eXBlKSh0aGlzX3R5cGUqKiopOwotICAgIHN0YXRpYyB1bnNwZWNpZmllZF9ib29sX3R5cGUgdG9fdW5zcGVjaWZpZWRfYm9vbChjb25zdCBib29sIHgsIERhdGFNZW1iZXJQdHIpCi0gICAgewotICAgICAgICByZXR1cm4geCA/IHVuc3BlY2lmaWVkX2Jvb2wgOiAwOwotICAgIH0KLSNlbGlmIFwKLSAgICAoIGRlZmluZWQoX19NV0VSS1NfXykgJiYgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCA8IDB4MzIwMCkgKSB8fCBcCi0gICAgKCBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gKiAxMDAgKyBfX0dOVUNfTUlOT1JfXyA8IDMwNCkgKSB8fCBcCi0gICAgKCBkZWZpbmVkKF9fU1VOUFJPX0NDKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fU1VOUFJPX0NDLCA8PSAweDU5MCkgKQotCi0gICAgdHlwZWRlZiBib29sICh0aGlzX3R5cGU6Oip1bnNwZWNpZmllZF9ib29sX3R5cGUpKCkgY29uc3Q7Ci0KLSAgICBzdGF0aWMgdW5zcGVjaWZpZWRfYm9vbF90eXBlIHRvX3Vuc3BlY2lmaWVkX2Jvb2woY29uc3QgYm9vbCB4LCBEYXRhTWVtYmVyUHRyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHggPyAmdGhpc190eXBlOjpkZXRhaWxfc2FmZV9ib29sX21lbWJlcl9mbiA6IDA7Ci0gICAgfQotcHJpdmF0ZToKLSAgICBib29sIGRldGFpbF9zYWZlX2Jvb2xfbWVtYmVyX2ZuKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSNlbHNlCi0gICAgdHlwZWRlZiBEYXRhTWVtYmVyUHRyIHVuc3BlY2lmaWVkX2Jvb2xfdHlwZTsKLSAgICBzdGF0aWMgdW5zcGVjaWZpZWRfYm9vbF90eXBlIHRvX3Vuc3BlY2lmaWVkX2Jvb2woY29uc3QgYm9vbCB4LCBEYXRhTWVtYmVyUHRyIHApCi0gICAgewotICAgICAgICByZXR1cm4geCA/IHAgOiAwOwotICAgIH0KLSNlbmRpZgotcHJpdmF0ZToKLSAgICBzYWZlX2Jvb2woKTsKLSAgICBzYWZlX2Jvb2woY29uc3Qgc2FmZV9ib29sJik7Ci0gICAgdm9pZCBvcGVyYXRvcj0oY29uc3Qgc2FmZV9ib29sJik7Ci0gICAgfnNhZmVfYm9vbCgpOwotfTsKLQotICAgIH0gLy8gbmFtZXNwYWNlIHJhbmdlX2RldGFpbAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIGluY2x1ZGUgZ3VhcmQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3NmaW5hZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9zZmluYWUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYWQxYzIzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3NmaW5hZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9ERVRBSUxfU0ZJTkFFX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9ERVRBSUxfU0ZJTkFFX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3llc19ub190eXBlLmhwcD4KLSNpbmNsdWRlIDx1dGlsaXR5PgotCi0KLW5hbWVzcGFjZSBuZG5ib29zdCAKLXsKLSAgICBuYW1lc3BhY2UgcmFuZ2VfZGV0YWlsCi0gICAgeyAgICAgICAgICAKLSAgICAgICAgdXNpbmcgdHlwZV90cmFpdHM6Onllc190eXBlOwotICAgICAgICB1c2luZyB0eXBlX3RyYWl0czo6bm9fdHlwZTsKLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIHN0cmluZwotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIAotICAgICAgICB5ZXNfdHlwZSBpc19zdHJpbmdfaW1wbCggY29uc3QgY2hhciogY29uc3QgKTsKLSAgICAgICAgeWVzX3R5cGUgaXNfc3RyaW5nX2ltcGwoIGNvbnN0IHdjaGFyX3QqIGNvbnN0ICk7Ci0gICAgICAgIG5vX3R5cGUgIGlzX3N0cmluZ19pbXBsKCAuLi4gKTsKLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPCBzdGQ6OnNpemVfdCBzeiA+Ci0gICAgICAgIHllc190eXBlIGlzX2NoYXJfYXJyYXlfaW1wbCggY2hhciBORE5CT09TVF9SQU5HRV9BUlJBWV9SRUYoKVtzel0gKTsKLSAgICAgICAgdGVtcGxhdGU8IHN0ZDo6c2l6ZV90IHN6ID4KLSAgICAgICAgeWVzX3R5cGUgaXNfY2hhcl9hcnJheV9pbXBsKCBjb25zdCBjaGFyIE5ETkJPT1NUX1JBTkdFX0FSUkFZX1JFRigpW3N6XSApOwotICAgICAgICBub190eXBlICBpc19jaGFyX2FycmF5X2ltcGwoIC4uLiApOwotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8IHN0ZDo6c2l6ZV90IHN6ID4KLSAgICAgICAgeWVzX3R5cGUgaXNfd2NoYXJfdF9hcnJheV9pbXBsKCB3Y2hhcl90IE5ETkJPT1NUX1JBTkdFX0FSUkFZX1JFRigpW3N6XSApOwotICAgICAgICB0ZW1wbGF0ZTwgc3RkOjpzaXplX3Qgc3ogPgotICAgICAgICB5ZXNfdHlwZSBpc193Y2hhcl90X2FycmF5X2ltcGwoIGNvbnN0IHdjaGFyX3QgTkROQk9PU1RfUkFOR0VfQVJSQVlfUkVGKClbc3pdICk7Ci0gICAgICAgIG5vX3R5cGUgIGlzX3djaGFyX3RfYXJyYXlfaW1wbCggLi4uICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgIHllc190eXBlIGlzX2NoYXJfcHRyX2ltcGwoIGNoYXIqIGNvbnN0ICk7Ci0gICAgICAgIG5vX3R5cGUgIGlzX2NoYXJfcHRyX2ltcGwoIC4uLiApOwotICAgICAgICAKLSAgICAgICAgeWVzX3R5cGUgaXNfY29uc3RfY2hhcl9wdHJfaW1wbCggY29uc3QgY2hhciogY29uc3QgKTsKLSAgICAgICAgbm9fdHlwZSAgaXNfY29uc3RfY2hhcl9wdHJfaW1wbCggLi4uICk7Ci0KLSAgICAgICAgeWVzX3R5cGUgaXNfd2NoYXJfdF9wdHJfaW1wbCggd2NoYXJfdCogY29uc3QgKTsKLSAgICAgICAgbm9fdHlwZSAgaXNfd2NoYXJfdF9wdHJfaW1wbCggLi4uICk7Ci0gICAgICAgIAotICAgICAgICB5ZXNfdHlwZSBpc19jb25zdF93Y2hhcl90X3B0cl9pbXBsKCBjb25zdCB3Y2hhcl90KiBjb25zdCApOwotICAgICAgICBub190eXBlICBpc19jb25zdF93Y2hhcl90X3B0cl9pbXBsKCAuLi4gKTsKLSAgICAgICAgCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gcGFpcgotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4KLSAgICAgICAgeWVzX3R5cGUgaXNfcGFpcl9pbXBsKCBjb25zdCBzdGQ6OnBhaXI8SXRlcmF0b3IsSXRlcmF0b3I+KiApOwotICAgICAgICBub190eXBlICBpc19wYWlyX2ltcGwoIC4uLiApOwotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gdGFncwotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgICAgICAgc3RydWN0IGNoYXJfb3Jfd2NoYXJfdF9hcnJheV90YWcge307Ci0gICAgICAgIAotICAgIH0gLy8gbmFtZXNwYWNlICdyYW5nZV9kZXRhaWwnCi0gICAgCi19IC8vIG5hbWVzcGFjZSAnYm9vc3QnCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvc2l6ZV90eXBlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3NpemVfdHlwZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0NDRkMDYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvc2l6ZV90eXBlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IFRob3JzdGVuIE90dG9zZW4gMjAwMy0yMDA0LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0RFVEFJTF9TSVpFX1RZUEVfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0RFVEFJTF9TSVpFX1RZUEVfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvY29tbW9uLmhwcD4KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBtaXNzaW5nIHBhcnRpYWwgc3BlY2lhbGl6YXRpb24gIHdvcmthcm91bmQuCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gICAgbmFtZXNwYWNlIHJhbmdlX2RldGFpbAotICAgIHsKLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotICAgICAgICBzdHJ1Y3QgcmFuZ2Vfc2l6ZV90eXBlXwotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQyA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBzdGQ6OnNpemVfdCB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9zaXplX3R5cGVfPHN0ZF9jb250YWluZXJfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQyA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FIEM6OnNpemVfdHlwZSB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQyA+Ci0gICAgY2xhc3MgcmFuZ2Vfc2l6ZQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByYW5nZV9kZXRhaWw6OnJhbmdlPEM+Ojp0eXBlIGNfdHlwZTsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmFuZ2VfZGV0YWlsOjpyYW5nZV9zaXplX3R5cGVfPGNfdHlwZT46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBwdHM8Qz46OnR5cGUgdHlwZTsKLSAgICB9OwotfQotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvc3RyX3R5cGVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3N0cl90eXBlcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3ZWQzMTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvc3RyX3R5cGVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IFRob3JzdGVuIE90dG9zZW4gMjAwNi4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9ERVRBSUxfU1RSX1RZUEVTX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9ERVRBSUxfU1RSX1RZUEVTX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2Uvc2l6ZV90eXBlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9pdGVyYXRvci5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIHRlbXBsYXRlPCBjbGFzcyBUID4KLSAgICBzdHJ1Y3QgcmFuZ2VfbXV0YWJsZV9pdGVyYXRvcjxUKj4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCogdHlwZTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8IGNsYXNzIFQgPgotICAgIHN0cnVjdCByYW5nZV9jb25zdF9pdGVyYXRvcjxUKj4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgY29uc3QgVCogdHlwZTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8IGNsYXNzIFQgPgotICAgIHN0cnVjdCByYW5nZV9zaXplPFQqPgotICAgIHsKLSAgICAgICB0eXBlZGVmIHN0ZDo6c2l6ZV90IHR5cGU7Ci0gICAgfTsgICAgCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvdmFsdWVfdHlwZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC92YWx1ZV90eXBlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGZlYmU0Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC92YWx1ZV90eXBlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IFRob3JzdGVuIE90dG9zZW4gMjAwMy0yMDA0LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0RFVEFJTF9WQUxVRV9UWVBFX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9ERVRBSUxfVkFMVUVfVFlQRV9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9jb21tb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9yZW1vdmVfZXh0ZW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl90cmFpdHMuaHBwPgotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIG1pc3NpbmcgcGFydGlhbCBzcGVjaWFsaXphdGlvbiAgd29ya2Fyb3VuZC4KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgCi17Ci0gICAgbmFtZXNwYWNlIHJhbmdlX2RldGFpbCAKLSAgICB7ICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfdmFsdWVfdHlwZV87Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfdmFsdWVfdHlwZV88c3RkX2NvbnRhaW5lcl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDID4KLSAgICAgICAgICAgIHN0cnVjdCBwdHMKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgQzo6dmFsdWVfdHlwZSB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV92YWx1ZV90eXBlXzxzdGRfcGFpcl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQID4KLSAgICAgICAgICAgIHN0cnVjdCBwdHMKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgbmRuYm9vc3Q6Oml0ZXJhdG9yX3ZhbHVlPCBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FIFA6OmZpcnN0X3R5cGUgPjo6dHlwZSB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV92YWx1ZV90eXBlXzxhcnJheV8+Ci0gICAgICAgIHsgCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJlbW92ZV9leHRlbnQ8VD46OnR5cGUgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgICAgIAotICAgIH0gCi0gICAgCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEMgPgotICAgIGNsYXNzIHJhbmdlX3ZhbHVlCi0gICAgewotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfZGV0YWlsOjpyYW5nZTxDPjo6dHlwZSBjX3R5cGU7Ci0gICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfZGV0YWlsOjpyYW5nZV92YWx1ZV90eXBlXzxjX3R5cGU+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgcHRzPEM+Ojp0eXBlIHR5cGU7IAotICAgIH07Ci0KLX0KLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3ZjNi9lbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvdmM2L2VuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkOWExYjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvdmM2L2VuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNzAgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgVGhvcnN0ZW4gT3R0b3NlbiAyMDAzLTIwMDQuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfREVUQUlMX1ZDNl9FTkRfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0RFVEFJTF9WQzZfRU5EX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2ltcGxlbWVudGF0aW9uX2hlbHAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9pbXBsZW1lbnRhdGlvbl9oZWxwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9yZXN1bHRfaXRlcmF0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9jb21tb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9yZW1vdmVfZXh0ZW50LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IAotewotICAgIG5hbWVzcGFjZSByYW5nZV9kZXRhaWwKLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLSAgICAgICAgc3RydWN0IHJhbmdlX2VuZDsKLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIGRlZmF1bHQKLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfZW5kPHN0ZF9jb250YWluZXJfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQyA+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHN0YXRpYyBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX3Jlc3VsdF9pdGVyYXRvcjxDPjo6dHlwZSAKLSAgICAgICAgICAgICAgICBmdW4oIEMmIGMgKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGMuZW5kKCk7Ci0gICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIHBhaXIKLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfZW5kPHN0ZF9wYWlyXz4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAgPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICBzdGF0aWMgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9yZXN1bHRfaXRlcmF0b3I8UD46OnR5cGUgCi0gICAgICAgICAgICAgICAgZnVuKCBjb25zdCBQJiBwICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBwLnNlY29uZDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotIAotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIGFycmF5Ci0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2VuZDxhcnJheV8+ICAKLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICBzdGF0aWMgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByZW1vdmVfZXh0ZW50PFQ+Ojp0eXBlKgotICAgICAgICAgICAgICAgIGZ1bihUJiB0KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgKyByZW1vdmVfZXh0ZW50PFQ+OjpzaXplOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfZW5kPGNoYXJfYXJyYXlfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHN0YXRpYyBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJlbW92ZV9leHRlbnQ8VD46OnR5cGUqCi0gICAgICAgICAgICAgICAgZnVuKFQmIHQpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCArIHJlbW92ZV9leHRlbnQ8VD46OnNpemU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2VuZDx3Y2hhcl90X2FycmF5Xz4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICBzdGF0aWMgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByZW1vdmVfZXh0ZW50PFQ+Ojp0eXBlKgotICAgICAgICAgICAgICAgIGZ1bihUJiB0KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgKyByZW1vdmVfZXh0ZW50PFQ+OjpzaXplOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBzdHJpbmcKLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfZW5kPGNoYXJfcHRyXz4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICBzdGF0aWMgY2hhciogZnVuKCBjaGFyKiBzICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjpzdHJfZW5kKCBzICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9lbmQ8Y29uc3RfY2hhcl9wdHJfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBmdW4oIGNvbnN0IGNoYXIqIHMgKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OnN0cl9lbmQoIHMgKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2VuZDx3Y2hhcl90X3B0cl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgc3RhdGljIHdjaGFyX3QqIGZ1biggd2NoYXJfdCogcyApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6c3RyX2VuZCggcyApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0KLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9lbmQ8Y29uc3Rfd2NoYXJfdF9wdHJfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCB3Y2hhcl90KiBmdW4oIGNvbnN0IHdjaGFyX3QqIHMgKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OnN0cl9lbmQoIHMgKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgICAgICAKLSAgICB9IC8vIG5hbWVzcGFjZSAncmFuZ2VfZGV0YWlsJwotICAgIAotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDID4KLSAgICBpbmxpbmUgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9yZXN1bHRfaXRlcmF0b3I8Qz46OnR5cGUgCi0gICAgZW5kKCBDJiBjICkKLSAgICB7Ci0gICAgICAgIHJldHVybiByYW5nZV9kZXRhaWw6OnJhbmdlX2VuZDxyYW5nZV9kZXRhaWw6OnJhbmdlPEM+Ojp0eXBlPjo6aW5uZXI8Qz46OmZ1biggYyApOwotICAgIH0KLSAgICAKLX0gLy8gbmFtZXNwYWNlICdib29zdCcKLQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGlmZmVyZW5jZV90eXBlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGlmZmVyZW5jZV90eXBlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjRlMWMxNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RpZmZlcmVuY2VfdHlwZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9ESUZGRVJFTkNFX1RZUEVfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0RJRkZFUkVOQ0VfVFlQRV9IUFAKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMjAwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl90cmFpdHMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICB0ZW1wbGF0ZTwgY2xhc3MgVCA+Ci0gICAgc3RydWN0IHJhbmdlX2RpZmZlcmVuY2UgOiBpdGVyYXRvcl9kaWZmZXJlbmNlPCB0eXBlbmFtZSByYW5nZV9pdGVyYXRvcjxUPjo6dHlwZSA+Ci0gICAgeyB9OwotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGlzdGFuY2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kaXN0YW5jZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0M2FhZGEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kaXN0YW5jZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNi4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9ESVNUQU5DRV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfRElTVEFOQ0VfSFBQCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTIwMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvYmVnaW4uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGlmZmVyZW5jZV90eXBlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IAotewotCi0gICAgdGVtcGxhdGU8IGNsYXNzIFQgPgotICAgIGlubGluZSBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2RpZmZlcmVuY2U8VD46OnR5cGUgCi0gICAgZGlzdGFuY2UoIGNvbnN0IFQmIHIgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6ZGlzdGFuY2UoIG5kbmJvb3N0OjpiZWdpbiggciApLCBuZG5ib29zdDo6ZW5kKCByICkgKTsKLSAgICB9Ci0KLX0gLy8gbmFtZXNwYWNlICdib29zdCcKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2VtcHR5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZW1wdHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzNkZmYxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZW1wdHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgVGhvcnN0ZW4gT3R0b3NlbiAyMDAzLTIwMDQuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfRU1QVFlfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0VNUFRZX0hQUAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEyMDApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvYmVnaW4uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2VuZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCAKLXsgCi0KLSAgICB0ZW1wbGF0ZTwgY2xhc3MgVCA+Ci0gICAgaW5saW5lIGJvb2wgZW1wdHkoIGNvbnN0IFQmIHIgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpiZWdpbiggciApID09IG5kbmJvb3N0OjplbmQoIHIgKTsKLSAgICB9Ci0KLX0gLy8gbmFtZXNwYWNlICdib29zdCcKLQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWM3ZDU0ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2VuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzYgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgVGhvcnN0ZW4gT3R0b3NlbiAyMDAzLTIwMDQuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfRU5EX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9FTkRfSFBQCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTIwMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvY29uZmlnLmhwcD4KLQotI2lmZGVmIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2VuZC5ocHA+Ci0jZWxzZQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2ltcGxlbWVudGF0aW9uX2hlbHAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9jb25zdF9pdGVyYXRvci5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NjQpKSAmJiBcCi0gICAgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sIDwgMykgXAotICAgIC8qKi8KLW5hbWVzcGFjZSByYW5nZV9kZXRhaWwKLXsKLSNlbmRpZgotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gcHJpbWFyeSB0ZW1wbGF0ZQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDID4KLSAgICAgICAgaW5saW5lIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8Qz46OnR5cGUKLSAgICAgICAgcmFuZ2VfZW5kKCBDJiBjICkKLSAgICAgICAgewotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIElmIHlvdSBnZXQgYSBjb21waWxlLWVycm9yIGhlcmUsIGl0IGlzIG1vc3QgbGlrZWx5IGJlY2F1c2UKLSAgICAgICAgICAgIC8vIHlvdSBoYXZlIG5vdCBpbXBsZW1lbnRlZCByYW5nZV9iZWdpbigpIHByb3Blcmx5IGluCi0gICAgICAgICAgICAvLyB0aGUgbmFtZXNwYWNlIG9mIEMKLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICByZXR1cm4gYy5lbmQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gcGFpcgotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4KLSAgICAgICAgaW5saW5lIEl0ZXJhdG9yIHJhbmdlX2VuZCggY29uc3Qgc3RkOjpwYWlyPEl0ZXJhdG9yLEl0ZXJhdG9yPiYgcCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBwLnNlY29uZDsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+Ci0gICAgICAgIGlubGluZSBJdGVyYXRvciByYW5nZV9lbmQoIHN0ZDo6cGFpcjxJdGVyYXRvcixJdGVyYXRvcj4mIHAgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcC5zZWNvbmQ7Ci0gICAgICAgIH0KLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIGFycmF5Ci0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgc3RkOjpzaXplX3Qgc3ogPgotICAgICAgICBpbmxpbmUgY29uc3QgVCogcmFuZ2VfZW5kKCBjb25zdCBUICgmYSlbc3pdICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHJhbmdlX2RldGFpbDo6YXJyYXlfZW5kPFQsc3o+KCBhICk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgc3RkOjpzaXplX3Qgc3ogPgotICAgICAgICBpbmxpbmUgVCogcmFuZ2VfZW5kKCBUICgmYSlbc3pdICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHJhbmdlX2RldGFpbDo6YXJyYXlfZW5kPFQsc3o+KCBhICk7Ci0gICAgICAgIH0KLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTY0KSkgJiYgXAotICAgICFORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA8IDMpIFwKLSAgICAvKiovCi19IC8vIG5hbWVzcGFjZSAncmFuZ2VfZGV0YWlsJwotI2VuZGlmCi0KLW5hbWVzcGFjZSByYW5nZV9hZGxfYmFycmllcgotewotCi10ZW1wbGF0ZTwgY2xhc3MgVCA+Ci1pbmxpbmUgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxUPjo6dHlwZSBlbmQoIFQmIHIgKQotewotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTY0KSkgJiYgXAotICAgICFORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA8IDMpIFwKLSAgICAvKiovCi0gICAgdXNpbmcgbmFtZXNwYWNlIHJhbmdlX2RldGFpbDsKLSNlbmRpZgotICAgIHJldHVybiByYW5nZV9lbmQoIHIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQgPgotaW5saW5lIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8Y29uc3QgVD46OnR5cGUgZW5kKCBjb25zdCBUJiByICkKLXsKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU2NCkpICYmIFwKLSAgICAhTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPCAzKSBcCi0gICAgLyoqLwotICAgIHVzaW5nIG5hbWVzcGFjZSByYW5nZV9kZXRhaWw7Ci0jZW5kaWYKLSAgICByZXR1cm4gcmFuZ2VfZW5kKCByICk7Ci19Ci0KLSAgICB9IC8vIG5hbWVzcGFjZSByYW5nZV9hZGxfYmFycmllcgotfSAvLyBuYW1lc3BhY2UgJ2Jvb3N0JwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gICAgbmFtZXNwYWNlIHJhbmdlX2FkbF9iYXJyaWVyCi0gICAgewotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgVCA+Ci0gICAgICAgIGlubGluZSBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPGNvbnN0IFQ+Ojp0eXBlCi0gICAgICAgIGNvbnN0X2VuZCggY29uc3QgVCYgciApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6cmFuZ2VfYWRsX2JhcnJpZXI6OmVuZCggciApOwotICAgICAgICB9Ci0gICAgfSAvLyBuYW1lc3BhY2UgcmFuZ2VfYWRsX2JhcnJpZXIKLSAgICB1c2luZyBuYW1lc3BhY2UgcmFuZ2VfYWRsX2JhcnJpZXI7Ci19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9mdW5jdGlvbnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9mdW5jdGlvbnMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YWEyMTI0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZnVuY3Rpb25zLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IFRob3JzdGVuIE90dG9zZW4gMjAwMy0yMDA2LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0ZVTkNUSU9OU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfRlVOQ1RJT05TX0hQUAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEyMDApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2JlZ2luLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9lbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL3NpemUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2Rpc3RhbmNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9lbXB0eS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvcmJlZ2luLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9yZW5kLmhwcD4KLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9pdGVyYXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyYTExMGMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9pdGVyYXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9JVEVSQVRPUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfSVRFUkFUT1JfSFBQCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9tdXRhYmxlX2l0ZXJhdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9jb25zdF9pdGVyYXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29uc3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jb25zdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2V2YWxfaWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPT0gMTMxMCkKLQotICAgIG5hbWVzcGFjZSByYW5nZV9kZXRhaWxfdmM3XzEKLSAgICB7Ci0gICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEMsIHR5cGVuYW1lIFNpZyA9IHZvaWQoQykgPgotICAgICAgIHN0cnVjdCByYW5nZV9pdGVyYXRvcgotICAgICAgIHsKLSAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FCi0gICAgICAgICAgICAgICBtcGw6OmV2YWxfaWZfYzwgaXNfY29uc3Q8Qz46OnZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlX2NvbnN0X2l0ZXJhdG9yPCB0eXBlbmFtZSByZW1vdmVfY29uc3Q8Qz46OnR5cGUgPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZV9tdXRhYmxlX2l0ZXJhdG9yPEM+ID46OnR5cGUgdHlwZTsKLSAgICAgICB9OwotCi0gICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEMsIHR5cGVuYW1lIFQgPgotICAgICAgIHN0cnVjdCByYW5nZV9pdGVyYXRvcjwgQywgdm9pZChUW10pID4KLSAgICAgICB7Ci0gICAgICAgICAgIHR5cGVkZWYgVCogdHlwZTsKLSAgICAgICB9OwotICAgIH0KLQotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQyA+Ci0gICAgc3RydWN0IHJhbmdlX2l0ZXJhdG9yCi0gICAgewotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPT0gMTMxMCkKLQotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUKLSAgICAgICAgICAgICAgIHJhbmdlX2RldGFpbF92YzdfMTo6cmFuZ2VfaXRlcmF0b3I8Qz46OnR5cGUgdHlwZTsKLQotI2Vsc2UKLQotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUKLSAgICAgICAgICAgIG1wbDo6ZXZhbF9pZl9jPCBpc19jb25zdDxDPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VfY29uc3RfaXRlcmF0b3I8IHR5cGVuYW1lIHJlbW92ZV9jb25zdDxDPjo6dHlwZSA+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlX211dGFibGVfaXRlcmF0b3I8Qz4gPjo6dHlwZSB0eXBlOwotCi0jZW5kaWYKLSAgICB9OwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vLyNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9pdGVyYXRvcl9yYW5nZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yX3JhbmdlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTEwOGFhYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yX3JhbmdlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IE5laWwgR3JvdmVzIDIwMDkuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0lURVJBVE9SX1JBTkdFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9JVEVSQVRPUl9SQU5HRV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgIm5kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yX3JhbmdlX2NvcmUuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yX3JhbmdlX2lvLmhwcCIKLQotI2VuZGlmIC8vIGluY2x1ZGUgZ3VhcmQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3JfcmFuZ2VfY29yZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yX3JhbmdlX2NvcmUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZTk3ZTJiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3JfcmFuZ2VfY29yZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NTMgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgTmVpbCBHcm92ZXMgJiBUaG9yc3RlbiBPdHRvc2VuICYgUGF2b2wgRHJvYmEgMjAwMy0yMDA0LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vICBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9JVEVSQVRPUl9SQU5HRV9DT1JFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9JVEVSQVRPUl9SQU5HRV9DT1JFX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gLy8gRGVmaW5lIF9fU1RMX0NPTkZJR19ILCBpZiBhcHByb3ByaWF0ZS4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIE5ETkJPT1NUX1RFU1RFRF9BVCgxNTAwKSkKLSAgICAjcHJhZ21hIHdhcm5pbmcoIHB1c2ggKQotICAgICNwcmFnbWEgd2FybmluZyggZGlzYWJsZSA6IDQ5OTYgKQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2l0ZXJhdG9yX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IvaXRlcmF0b3JfZmFjYWRlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Fic3RyYWN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9pbnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZnVuY3Rpb25zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9pdGVyYXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGlmZmVyZW5jZV90eXBlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9hbGdvcml0aG0vZXF1YWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9zYWZlX2Jvb2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZW5hYmxlX2lmLmhwcD4KLSNpbmNsdWRlIDxpdGVyYXRvcj4KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4KLQotLyohIFxmaWxlCi0gICAgRGVmaW5lcyB0aGUgXGMgaXRlcmF0b3JfY2xhc3MgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zLgotICAgIFxjIGl0ZXJhdG9yX3JhbmdlIGlzIGEgc2ltcGxlIHdyYXBwZXIgb2YgaXRlcmF0b3IgcGFpciBpZGlvbS4gSXQgcHJvdmlkZXMKLSAgICBhIHJpY2ggc3Vic2V0IG9mIENvbnRhaW5lciBpbnRlcmZhY2UuCi0qLwotCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIG5hbWVzcGFjZSBpdGVyYXRvcl9yYW5nZV9kZXRhaWwKLSAgICB7Ci0gICAgICAgIC8vCi0gICAgICAgIC8vIFRoZSBmdW5jdGlvbnMgYWRsX2JlZ2luIGFuZCBhZGxfZW5kIGFyZSBpbXBsZW1lbnRlZCBpbiBhIHNlcGFyYXRlCi0gICAgICAgIC8vIGNsYXNzIGZvciBnY2MtMi45eAotICAgICAgICAvLwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBJdGVyYXRvclQ+Ci0gICAgICAgIHN0cnVjdCBpdGVyYXRvcl9yYW5nZV9pbXBsIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCBjbGFzcyBGb3J3YXJkUmFuZ2UgPgotICAgICAgICAgICAgc3RhdGljIEl0ZXJhdG9yVCBhZGxfYmVnaW4oIEZvcndhcmRSYW5nZSYgciApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEl0ZXJhdG9yVD4oIG5kbmJvb3N0OjpiZWdpbiggciApICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlPCBjbGFzcyBGb3J3YXJkUmFuZ2UgPgotICAgICAgICAgICAgc3RhdGljIEl0ZXJhdG9yVCBhZGxfZW5kKCBGb3J3YXJkUmFuZ2UmIHIgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxJdGVyYXRvclQ+KCBuZG5ib29zdDo6ZW5kKCByICkgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgTGVmdCwgY2xhc3MgUmlnaHQgPgotICAgICAgICBpbmxpbmUgYm9vbCBsZXNzX3RoYW4oIGNvbnN0IExlZnQmIGwsIGNvbnN0IFJpZ2h0JiByICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmUoIG5kbmJvb3N0OjpiZWdpbihsKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6ZW5kKGwpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpiZWdpbihyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6ZW5kKHIpICk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBMZWZ0LCBjbGFzcyBSaWdodCA+Ci0gICAgICAgIGlubGluZSBib29sIGdyZWF0ZXJfdGhhbiggY29uc3QgTGVmdCYgbCwgY29uc3QgUmlnaHQmIHIgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbGVzc190aGFuKHIsbCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBMZWZ0LCBjbGFzcyBSaWdodCA+Ci0gICAgICAgIGlubGluZSBib29sIGxlc3Nfb3JfZXF1YWxfdGhhbiggY29uc3QgTGVmdCYgbCwgY29uc3QgUmlnaHQmIHIgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gIWl0ZXJhdG9yX3JhbmdlX2RldGFpbDo6bGVzc190aGFuKHIsbCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBMZWZ0LCBjbGFzcyBSaWdodCA+Ci0gICAgICAgIGlubGluZSBib29sIGdyZWF0ZXJfb3JfZXF1YWxfdGhhbiggY29uc3QgTGVmdCYgbCwgY29uc3QgUmlnaHQmIHIgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gIWl0ZXJhdG9yX3JhbmdlX2RldGFpbDo6bGVzc190aGFuKGwscik7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBUaGlzIHZlcnNpb24gaXMgbWFpbnRhaW5lZCBzaW5jZSBpdCBpcyB1c2VkIGluIG90aGVyIGJvb3N0IGxpYnJhcmllcwotICAgICAgICAvLyBzdWNoIGFzIEJvb3N0LkFzc2lnbgotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgTGVmdCwgY2xhc3MgUmlnaHQgPgotICAgICAgICBpbmxpbmUgYm9vbCBlcXVhbChjb25zdCBMZWZ0JiBsLCBjb25zdCBSaWdodCYgcikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjplcXVhbChsLCByKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0cnVjdCByYW5nZV90YWcgeyB9OwotICAgICAgICBzdHJ1Y3QgY29uc3RfcmFuZ2VfdGFnIHsgfTsKLSAgICB9Ci0KLS8vICBpdGVyYXRvciByYW5nZSB0ZW1wbGF0ZSBjbGFzcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICAgICAgLy8hIGl0ZXJhdG9yX3JhbmdlIGNsYXNzCi0gICAgICAgIC8qIQotICAgICAgICAgICAgQW4gXGMgaXRlcmF0b3JfcmFuZ2UgZGVsaW1pdHMgYSByYW5nZSBpbiBhIHNlcXVlbmNlIGJ5IGJlZ2lubmluZyBhbmQgZW5kaW5nIGl0ZXJhdG9ycy4KLSAgICAgICAgICAgIEFuIGl0ZXJhdG9yX3JhbmdlIGNhbiBiZSBwYXNzZWQgdG8gYW4gYWxnb3JpdGhtIHdoaWNoIHJlcXVpcmVzIGEgc2VxdWVuY2UgYXMgYW4gaW5wdXQuCi0gICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIFxjIHRvdXBwZXIoKSBmdW5jdGlvbiBtYXkgYmUgdXNlZCBtb3N0IGZyZXF1ZW50bHkgb24gc3RyaW5ncywKLSAgICAgICAgICAgIGJ1dCBjYW4gYWxzbyBiZSB1c2VkIG9uIGl0ZXJhdG9yX3JhbmdlczoKLQotICAgICAgICAgICAgXGNvZGUKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dG9sb3dlciggZmluZCggcywgIlVQUEVSQ0FTRSBTVFJJTkciICkgKTsKLSAgICAgICAgICAgIFxlbmRjb2RlCi0KLSAgICAgICAgICAgIE1hbnkgYWxnb3JpdGhtcyB3b3JraW5nIHdpdGggc2VxdWVuY2VzIHRha2UgYSBwYWlyIG9mIGl0ZXJhdG9ycywKLSAgICAgICAgICAgIGRlbGltaXRpbmcgYSB3b3JraW5nIHJhbmdlLCBhcyBhbiBhcmd1bWVudHMuIFRoZSBcYyBpdGVyYXRvcl9yYW5nZSBjbGFzcyBpcyBhbgotICAgICAgICAgICAgZW5jYXBzdWxhdGlvbiBvZiBhIHJhbmdlIGlkZW50aWZpZWQgYnkgYSBwYWlyIG9mIGl0ZXJhdG9ycy4KLSAgICAgICAgICAgIEl0IHByb3ZpZGVzIGEgY29sbGVjdGlvbiBpbnRlcmZhY2UsCi0gICAgICAgICAgICBzbyBpdCBpcyBwb3NzaWJsZSB0byBwYXNzIGFuIGluc3RhbmNlIHRvIGFuIGFsZ29yaXRobSByZXF1aXJpbmcgYSBjb2xsZWN0aW9uIGFzIGFuIGlucHV0LgotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBJdGVyYXRvclQ+Ci0gICAgICAgIGNsYXNzIGl0ZXJhdG9yX3JhbmdlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgcmFuZ2VfZGV0YWlsOjpzYWZlX2Jvb2w8IEl0ZXJhdG9yVCBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvclQ+OjoqID4gc2FmZV9ib29sX3Q7Ci0gICAgICAgIHByb3RlY3RlZDogLy8gVXNlZCBieSBzdWJfcmFuZ2UKLSAgICAgICAgICAgIC8vISBpbXBsZW1lbnRhdGlvbiBjbGFzcwotICAgICAgICAgICAgdHlwZWRlZiBpdGVyYXRvcl9yYW5nZV9kZXRhaWw6Oml0ZXJhdG9yX3JhbmdlX2ltcGw8SXRlcmF0b3JUPiBpbXBsOwotICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICAvLyEgdGhpcyB0eXBlCi0gICAgICAgICAgICB0eXBlZGVmIGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yVD4gdHlwZTsKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBzYWZlX2Jvb2xfdDo6dW5zcGVjaWZpZWRfYm9vbF90eXBlIHVuc3BlY2lmaWVkX2Jvb2xfdHlwZTsKLSAgICAgICAgICAgIC8vTkROQk9PU1RfQlJPS0VOX0NPTVBJTEVSX1RZUEVfVFJBSVRTX1NQRUNJQUxJWkFUSU9OKHZhbHVlX3R5cGUpOwotCi0gICAgICAgICAgICAvLyEgRW5jYXBzdWxhdGVkIHZhbHVlIHR5cGUKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRQotICAgICAgICAgICAgICAgIGl0ZXJhdG9yX3ZhbHVlPEl0ZXJhdG9yVD46OnR5cGUgdmFsdWVfdHlwZTsKLQotICAgICAgICAgICAgLy8hIERpZmZlcmVuY2UgdHlwZQotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FCi0gICAgICAgICAgICAgICAgaXRlcmF0b3JfZGlmZmVyZW5jZTxJdGVyYXRvclQ+Ojp0eXBlIGRpZmZlcmVuY2VfdHlwZTsKLQotICAgICAgICAgICAgLy8hIFNpemUgdHlwZQotICAgICAgICAgICAgdHlwZWRlZiBzdGQ6OnNpemVfdCBzaXplX3R5cGU7IC8vIG5vdGU6IG11c3QgYmUgdW5zaWduZWQKLQotICAgICAgICAgICAgLy8hIFRoaXMgdHlwZQotICAgICAgICAgICAgdHlwZWRlZiBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvclQ+IHRoaXNfdHlwZTsKLQotICAgICAgICAgICAgLy8hIFJlZmVyZW5jZSB0eXBlCi0gICAgICAgICAgICAvLwotICAgICAgICAgICAgLy8gTmVlZGVkIGJlY2F1c2UgdmFsdWUtdHlwZSBpcyB0aGUgc2FtZSBmb3IKLSAgICAgICAgICAgIC8vIGNvbnN0IGFuZCBub24tY29uc3QgaXRlcmF0b3JzCi0gICAgICAgICAgICAvLwotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FCi0gICAgICAgICAgICAgICAgaXRlcmF0b3JfcmVmZXJlbmNlPEl0ZXJhdG9yVD46OnR5cGUgcmVmZXJlbmNlOwotCi0gICAgICAgICAgICAvLyEgY29uc3RfaXRlcmF0b3IgdHlwZQotICAgICAgICAgICAgLyohCi0gICAgICAgICAgICAgICAgVGhlcmUgaXMgbm8gZGlzdGluY3Rpb24gYmV0d2VlbiBjb25zdF9pdGVyYXRvciBhbmQgaXRlcmF0b3IuCi0gICAgICAgICAgICAgICAgVGhlc2UgdHlwZWRlZnMgYXJlIHByb3ZpZGVzIHRvIGZ1bGZpbGwgY29udGFpbmVyIGludGVyZmFjZQotICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHR5cGVkZWYgSXRlcmF0b3JUIGNvbnN0X2l0ZXJhdG9yOwotICAgICAgICAgICAgLy8hIGl0ZXJhdG9yIHR5cGUKLSAgICAgICAgICAgIHR5cGVkZWYgSXRlcmF0b3JUIGl0ZXJhdG9yOwotCi0gICAgICAgIHByaXZhdGU6IC8vIGZvciByZXR1cm4gdmFsdWUgb2Ygb3BlcmF0b3IoKSgpCi0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6bXBsOjppZl88IG5kbmJvb3N0OjptcGw6Om9yXzwgbmRuYm9vc3Q6OmlzX2Fic3RyYWN0PCB2YWx1ZV90eXBlID4sIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6aXNfYXJyYXk8IHZhbHVlX3R5cGUgPiA+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlLCB2YWx1ZV90eXBlID46OnR5cGUgYWJzdHJhY3RfdmFsdWVfdHlwZTsKLQotICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICBpdGVyYXRvcl9yYW5nZSgpIDogbV9CZWdpbiggaXRlcmF0b3IoKSApLCBtX0VuZCggaXRlcmF0b3IoKSApCi0gICAgICAgICAgICB7IH0KLQotICAgICAgICAgICAgLy8hIENvbnN0cnVjdG9yIGZyb20gYSBwYWlyIG9mIGl0ZXJhdG9ycwotICAgICAgICAgICAgdGVtcGxhdGU8IGNsYXNzIEl0ZXJhdG9yID4KLSAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlKCBJdGVyYXRvciBCZWdpbiwgSXRlcmF0b3IgRW5kICkgOgotICAgICAgICAgICAgICAgIG1fQmVnaW4oQmVnaW4pLCBtX0VuZChFbmQpCi0gICAgICAgICAgICB7fQotCi0gICAgICAgICAgICAvLyEgQ29uc3RydWN0b3IgZnJvbSBhIFJhbmdlCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUmFuZ2UgPgotICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2UoIGNvbnN0IFJhbmdlJiByICkgOgotICAgICAgICAgICAgICAgIG1fQmVnaW4oIGltcGw6OmFkbF9iZWdpbiggciApICksIG1fRW5kKCBpbXBsOjphZGxfZW5kKCByICkgKQotICAgICAgICAgICAge30KLQotICAgICAgICAgICAgLy8hIENvbnN0cnVjdG9yIGZyb20gYSBSYW5nZQotICAgICAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFJhbmdlID4KLSAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlKCBSYW5nZSYgciApIDoKLSAgICAgICAgICAgICAgICBtX0JlZ2luKCBpbXBsOjphZGxfYmVnaW4oIHIgKSApLCBtX0VuZCggaW1wbDo6YWRsX2VuZCggciApICkKLSAgICAgICAgICAgIHt9Ci0KLSAgICAgICAgICAgIC8vISBDb25zdHJ1Y3RvciBmcm9tIGEgUmFuZ2UKLSAgICAgICAgICAgIHRlbXBsYXRlPCBjbGFzcyBSYW5nZSA+Ci0gICAgICAgICAgICBpdGVyYXRvcl9yYW5nZSggY29uc3QgUmFuZ2UmIHIsIGl0ZXJhdG9yX3JhbmdlX2RldGFpbDo6Y29uc3RfcmFuZ2VfdGFnICkgOgotICAgICAgICAgICAgICAgIG1fQmVnaW4oIGltcGw6OmFkbF9iZWdpbiggciApICksIG1fRW5kKCBpbXBsOjphZGxfZW5kKCByICkgKQotICAgICAgICAgICAge30KLQotICAgICAgICAgICAgLy8hIENvbnN0cnVjdG9yIGZyb20gYSBSYW5nZQotICAgICAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFJhbmdlID4KLSAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlKCBSYW5nZSYgciwgaXRlcmF0b3JfcmFuZ2VfZGV0YWlsOjpyYW5nZV90YWcgKSA6Ci0gICAgICAgICAgICAgICAgbV9CZWdpbiggaW1wbDo6YWRsX2JlZ2luKCByICkgKSwgbV9FbmQoIGltcGw6OmFkbF9lbmQoIHIgKSApCi0gICAgICAgICAgICB7fQotCi0gICAgICAgICAgICAjaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotICAgICAgICAgICAgdGhpc190eXBlJiBvcGVyYXRvcj0oIGNvbnN0IHRoaXNfdHlwZSYgciApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbV9CZWdpbiAgPSByLmJlZ2luKCk7Ci0gICAgICAgICAgICAgICAgbV9FbmQgICAgPSByLmVuZCgpOwotICAgICAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICNlbmRpZgotCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgSXRlcmF0b3IgPgotICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2UmIG9wZXJhdG9yPSggY29uc3QgaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3I+JiByICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBtX0JlZ2luICA9IHIuYmVnaW4oKTsKLSAgICAgICAgICAgICAgICBtX0VuZCAgICA9IHIuZW5kKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgRm9yd2FyZFJhbmdlID4KLSAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlJiBvcGVyYXRvcj0oIEZvcndhcmRSYW5nZSYgciApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbV9CZWdpbiAgPSBpbXBsOjphZGxfYmVnaW4oIHIgKTsKLSAgICAgICAgICAgICAgICBtX0VuZCAgICA9IGltcGw6OmFkbF9lbmQoIHIgKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlPCBjbGFzcyBGb3J3YXJkUmFuZ2UgPgotICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2UmIG9wZXJhdG9yPSggY29uc3QgRm9yd2FyZFJhbmdlJiByICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBtX0JlZ2luICA9IGltcGw6OmFkbF9iZWdpbiggciApOwotICAgICAgICAgICAgICAgIG1fRW5kICAgID0gaW1wbDo6YWRsX2VuZCggciApOwotICAgICAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgSXRlcmF0b3JUIGJlZ2luKCkgY29uc3QKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbV9CZWdpbjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgSXRlcmF0b3JUIGVuZCgpIGNvbnN0Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1fRW5kOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGUgc2l6ZSgpIGNvbnN0Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1fRW5kIC0gbV9CZWdpbjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYm9vbCBlbXB0eSgpIGNvbnN0Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1fQmVnaW4gPT0gbV9FbmQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIG9wZXJhdG9yIHVuc3BlY2lmaWVkX2Jvb2xfdHlwZSgpIGNvbnN0Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNhZmVfYm9vbF90Ojp0b191bnNwZWNpZmllZF9ib29sKG1fQmVnaW4gIT0gbV9FbmQsICZpdGVyYXRvcl9yYW5nZTo6bV9CZWdpbik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZW1wdHkoKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYm9vbCBlcXVhbCggY29uc3QgaXRlcmF0b3JfcmFuZ2UmIHIgKSBjb25zdAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBtX0JlZ2luID09IHIubV9CZWdpbiAmJiBtX0VuZCA9PSByLm1fRW5kOwotICAgICAgICAgICAgfQotCi0KLSNpZmRlZiBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORwotCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yPT0oIGNvbnN0IGl0ZXJhdG9yX3JhbmdlJiByICkgY29uc3QKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OmVxdWFsKCAqdGhpcywgciApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yIT0oIGNvbnN0IGl0ZXJhdG9yX3JhbmdlJiByICkgY29uc3QKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gIW9wZXJhdG9yPT0ocik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgYm9vbCBvcGVyYXRvcjwoIGNvbnN0IGl0ZXJhdG9yX3JhbmdlJiByICkgY29uc3QKLSAgICAgICAgICAgewotICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yX3JhbmdlX2RldGFpbDo6bGVzc190aGFuKCAqdGhpcywgciApOwotICAgICAgICAgICB9Ci0gICAgICAgICAgIAotICAgICAgICAgICBib29sIG9wZXJhdG9yPiggY29uc3QgaXRlcmF0b3JfcmFuZ2UmIHIgKSBjb25zdAotICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICByZXR1cm4gaXRlcmF0b3JfcmFuZ2VfZGV0YWlsOjpncmVhdGVyX3RoYW4oICp0aGlzLCByICk7Ci0gICAgICAgICAgIH0KLSAgICAgICAgICAgCi0gICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PSggY29uc3QgaXRlcmF0b3JfcmFuZ2UmIHIgKSBjb25zdAotICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICByZXR1cm4gaXRlcmF0b3JfcmFuZ2VfZGV0YWlsOjpsZXNzX29yX2VxdWFsX3RoYW4oICp0aGlzLCByICk7Ci0gICAgICAgICAgIH0KLSAgICAgICAgICAgCi0gICAgICAgICAgIGJvb2wgb3BlcmF0b3I+PSggY29uc3QgaXRlcmF0b3JfcmFuZ2UmIHIgKSBjb25zdAotICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICByZXR1cm4gaXRlcmF0b3JfcmFuZ2VfZGV0YWlsOjpncmVhdGVyX29yX2VxdWFsX3RoYW4oICp0aGlzLCByICk7Ci0gICAgICAgICAgIH0KLQotI2VuZGlmCi0KLSAgICAgICAgcHVibGljOiAvLyBjb252ZW5pZW5jZQotICAgICAgICAgICByZWZlcmVuY2UgZnJvbnQoKSBjb25zdAotICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBORE5CT09TVF9BU1NFUlQoICFlbXB0eSgpICk7Ci0gICAgICAgICAgICAgICByZXR1cm4gKm1fQmVnaW47Ci0gICAgICAgICAgIH0KLQotICAgICAgICAgICByZWZlcmVuY2UgYmFjaygpIGNvbnN0Ci0gICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVCggIWVtcHR5KCkgKTsKLSAgICAgICAgICAgICAgIEl0ZXJhdG9yVCBsYXN0KCBtX0VuZCApOwotICAgICAgICAgICAgICAgcmV0dXJuICotLWxhc3Q7Ci0gICAgICAgICAgIH0KLQotICAgICAgICAgICAvLyBwb3BfZnJvbnQoKSAtIGFkZGVkIHRvIG1vZGVsIHRoZSBTaW5nbGVQYXNzUmFuZ2VQcmltaXRpdmVDb25jZXB0Ci0gICAgICAgICAgIHZvaWQgcG9wX2Zyb250KCkKLSAgICAgICAgICAgewotICAgICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKCAhZW1wdHkoKSApOwotICAgICAgICAgICAgICAgKyttX0JlZ2luOwotICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgLy8gcG9wX2JhY2soKSAtIGFkZGVkIHRvIG1vZGVsIHRoZSBCaWRpcmVjdGlvbmFsUmFuZ2VQcmltaXRpdmVDb25jZXB0Ci0gICAgICAgICAgIHZvaWQgcG9wX2JhY2soKQotICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBORE5CT09TVF9BU1NFUlQoICFlbXB0eSgpICk7Ci0gICAgICAgICAgICAgICAtLW1fRW5kOwotICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgcmVmZXJlbmNlIG9wZXJhdG9yW10oIGRpZmZlcmVuY2VfdHlwZSBhdCApIGNvbnN0Ci0gICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVCggYXQgPj0gMCAmJiBhdCA8IHNpemUoKSApOwotICAgICAgICAgICAgICAgcmV0dXJuIG1fQmVnaW5bYXRdOwotICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgLy8KLSAgICAgICAgICAgLy8gV2hlbiBzdG9yaW5nIHRyYW5zZm9ybSBpdGVyYXRvcnMsIG9wZXJhdG9yW10oKQotICAgICAgICAgICAvLyBmYWlscyBiZWNhdXNlIGl0IHJldHVybnMgYnkgcmVmZXJlbmNlLiBUaGVyZWZvcmUKLSAgICAgICAgICAgLy8gb3BlcmF0b3IoKSgpIGlzIHByb3ZpZGVkIGZvciB0aGVzZSBjYXNlcy4KLSAgICAgICAgICAgLy8KLSAgICAgICAgICAgYWJzdHJhY3RfdmFsdWVfdHlwZSBvcGVyYXRvcigpKCBkaWZmZXJlbmNlX3R5cGUgYXQgKSBjb25zdAotICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBORE5CT09TVF9BU1NFUlQoIGF0ID49IDAgJiYgYXQgPCBzaXplKCkgKTsKLSAgICAgICAgICAgICAgIHJldHVybiBtX0JlZ2luW2F0XTsKLSAgICAgICAgICAgfQotCi0gICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlJiBhZHZhbmNlX2JlZ2luKCBkaWZmZXJlbmNlX3R5cGUgbiApCi0gICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIHN0ZDo6YWR2YW5jZSggbV9CZWdpbiwgbiApOwotICAgICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2UmIGFkdmFuY2VfZW5kKCBkaWZmZXJlbmNlX3R5cGUgbiApCi0gICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIHN0ZDo6YWR2YW5jZSggbV9FbmQsIG4gKTsKLSAgICAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgICAgfQotCi0gICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICAvLyBiZWdpbiBhbmQgZW5kIGl0ZXJhdG9ycwotICAgICAgICAgICAgSXRlcmF0b3JUIG1fQmVnaW47Ci0gICAgICAgICAgICBJdGVyYXRvclQgbV9FbmQ7Ci0KLSAgICAgICAgcHJvdGVjdGVkOgotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIEFsbG93IHN1YmNsYXNzZXMgYW4gZWFzeSB3YXkgdG8gYWNjZXNzIHRoZQotICAgICAgICAgICAgLy8gYmFzZSB0eXBlCi0gICAgICAgICAgICAvLwotICAgICAgICAgICAgdHlwZWRlZiBpdGVyYXRvcl9yYW5nZSBpdGVyYXRvcl9yYW5nZV87Ci0gICAgICAgIH07Ci0KLS8vICBpdGVyYXRvciByYW5nZSBmcmVlLXN0YW5kaW5nIG9wZXJhdG9ycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBjb21wYXJpc29uIG9wZXJhdG9ycwotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgSXRlcmF0b3JULCBjbGFzcyBGb3J3YXJkUmFuZ2UgPgotICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KCBjb25zdCBGb3J3YXJkUmFuZ2UmIGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yVD4mIHIgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OmVxdWFsKCBsLCByICk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgSXRlcmF0b3JULCBjbGFzcyBGb3J3YXJkUmFuZ2UgPgotICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KCBjb25zdCBGb3J3YXJkUmFuZ2UmIGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yVD4mIHIgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gIW5kbmJvb3N0OjplcXVhbCggbCwgciApOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIEl0ZXJhdG9yVCwgY2xhc3MgRm9yd2FyZFJhbmdlID4KLSAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I8KCBjb25zdCBGb3J3YXJkUmFuZ2UmIGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3JUPiYgciApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcl9yYW5nZV9kZXRhaWw6Omxlc3NfdGhhbiggbCwgciApOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgSXRlcmF0b3JULCBjbGFzcyBGb3J3YXJkUmFuZ2UgPgotICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcjw9KCBjb25zdCBGb3J3YXJkUmFuZ2UmIGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yVD4mIHIgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3JfcmFuZ2VfZGV0YWlsOjpsZXNzX29yX2VxdWFsX3RoYW4oIGwsIHIgKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIEl0ZXJhdG9yVCwgY2xhc3MgRm9yd2FyZFJhbmdlID4KLSAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I+KCBjb25zdCBGb3J3YXJkUmFuZ2UmIGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3JUPiYgciApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcl9yYW5nZV9kZXRhaWw6OmdyZWF0ZXJfdGhhbiggbCwgciApOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgSXRlcmF0b3JULCBjbGFzcyBGb3J3YXJkUmFuZ2UgPgotICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj49KCBjb25zdCBGb3J3YXJkUmFuZ2UmIGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yVD4mIHIgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3JfcmFuZ2VfZGV0YWlsOjpncmVhdGVyX29yX2VxdWFsX3RoYW4oIGwsIHIgKTsKLSAgICAgICAgfQotCi0jaWZkZWYgTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcKLSNlbHNlCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBJdGVyYXRvcjFULCBjbGFzcyBJdGVyYXRvcjJUID4KLSAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PSggY29uc3QgaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3IxVD4mIGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yMlQ+JiByICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjplcXVhbCggbCwgciApOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIEl0ZXJhdG9yVCwgY2xhc3MgRm9yd2FyZFJhbmdlID4KLSAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PSggY29uc3QgaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3JUPiYgbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRm9yd2FyZFJhbmdlJiByICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjplcXVhbCggbCwgciApOwotICAgICAgICB9Ci0KLQotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgSXRlcmF0b3IxVCwgY2xhc3MgSXRlcmF0b3IyVCA+Ci0gICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yMVQ+JiBsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvcjJUPiYgciApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAhbmRuYm9vc3Q6OmVxdWFsKCBsLCByICk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgSXRlcmF0b3JULCBjbGFzcyBGb3J3YXJkUmFuZ2UgPgotICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KCBjb25zdCBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvclQ+JiBsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGb3J3YXJkUmFuZ2UmIHIgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gIW5kbmJvb3N0OjplcXVhbCggbCwgciApOwotICAgICAgICB9Ci0KLQotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgSXRlcmF0b3IxVCwgY2xhc3MgSXRlcmF0b3IyVCA+Ci0gICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yPCggY29uc3QgaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3IxVD4mIGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3IyVD4mIHIgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3JfcmFuZ2VfZGV0YWlsOjpsZXNzX3RoYW4oIGwsIHIgKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBJdGVyYXRvclQsIGNsYXNzIEZvcndhcmRSYW5nZSA+Ci0gICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yPCggY29uc3QgaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3JUPiYgbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGb3J3YXJkUmFuZ2UmIHIgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3JfcmFuZ2VfZGV0YWlsOjpsZXNzX3RoYW4oIGwsIHIgKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIEl0ZXJhdG9yMVQsIGNsYXNzIEl0ZXJhdG9yMlQgPgotICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcjw9KCBjb25zdCBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvcjFUPiYgbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3IyVD4mIHIgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3JfcmFuZ2VfZGV0YWlsOjpsZXNzX29yX2VxdWFsX3RoYW4oIGwsIHIgKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIEl0ZXJhdG9yVCwgY2xhc3MgRm9yd2FyZFJhbmdlID4KLSAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I8PSggY29uc3QgaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3JUPiYgbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRm9yd2FyZFJhbmdlJiByICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yX3JhbmdlX2RldGFpbDo6bGVzc19vcl9lcXVhbF90aGFuKCBsLCByICk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBJdGVyYXRvcjFULCBjbGFzcyBJdGVyYXRvcjJUID4KLSAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I+KCBjb25zdCBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvcjFUPiYgbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvcjJUPiYgciApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcl9yYW5nZV9kZXRhaWw6OmdyZWF0ZXJfdGhhbiggbCwgciApOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgSXRlcmF0b3JULCBjbGFzcyBGb3J3YXJkUmFuZ2UgPgotICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj4oIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yVD4mIGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRm9yd2FyZFJhbmdlJiByICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yX3JhbmdlX2RldGFpbDo6Z3JlYXRlcl90aGFuKCBsLCByICk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBJdGVyYXRvcjFULCBjbGFzcyBJdGVyYXRvcjJUID4KLSAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I+PSggY29uc3QgaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3IxVD4mIGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yMlQ+JiByICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yX3JhbmdlX2RldGFpbDo6Z3JlYXRlcl9vcl9lcXVhbF90aGFuKCBsLCByICk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBJdGVyYXRvclQsIGNsYXNzIEZvcndhcmRSYW5nZSA+Ci0gICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yPj0oIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yVD4mIGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZvcndhcmRSYW5nZSYgciApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcl9yYW5nZV9kZXRhaWw6OmdyZWF0ZXJfb3JfZXF1YWxfdGhhbiggbCwgciApOwotICAgICAgICB9Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORwotCi0vLyAgaXRlcmF0b3IgcmFuZ2UgdXRpbGl0aWVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAvLyEgaXRlcmF0b3JfcmFuZ2UgY29uc3RydWN0IGhlbHBlcgotICAgICAgICAvKiEKLSAgICAgICAgICAgIENvbnN0cnVjdCBhbiBcYyBpdGVyYXRvcl9yYW5nZSBmcm9tIGEgcGFpciBvZiBpdGVyYXRvcnMKLQotICAgICAgICAgICAgXHBhcmFtIEJlZ2luIEEgYmVnaW4gaXRlcmF0b3IKLSAgICAgICAgICAgIFxwYXJhbSBFbmQgQW4gZW5kIGl0ZXJhdG9yCi0gICAgICAgICAgICBccmV0dXJuIGl0ZXJhdG9yX3JhbmdlIG9iamVjdAotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3JUID4KLSAgICAgICAgaW5saW5lIGl0ZXJhdG9yX3JhbmdlPCBJdGVyYXRvclQgPgotICAgICAgICBtYWtlX2l0ZXJhdG9yX3JhbmdlKCBJdGVyYXRvclQgQmVnaW4sIEl0ZXJhdG9yVCBFbmQgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3JUPiggQmVnaW4sIEVuZCApOwotICAgICAgICB9Ci0KLSNpZmRlZiBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORwotCi0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBSYW5nZSA+Ci0gICAgICAgIGlubGluZSBpdGVyYXRvcl9yYW5nZTwgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxSYW5nZT46OnR5cGUgPgotICAgICAgICBtYWtlX2l0ZXJhdG9yX3JhbmdlKCBSYW5nZSYgciApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcl9yYW5nZTwgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxSYW5nZT46OnR5cGUgPgotICAgICAgICAgICAgICAgICggbmRuYm9vc3Q6OmJlZ2luKCByICksIG5kbmJvb3N0OjplbmQoIHIgKSApOwotICAgICAgICB9Ci0KLSNlbHNlCi0gICAgICAgIC8vISBpdGVyYXRvcl9yYW5nZSBjb25zdHJ1Y3QgaGVscGVyCi0gICAgICAgIC8qIQotICAgICAgICAgICAgQ29uc3RydWN0IGFuIFxjIGl0ZXJhdG9yX3JhbmdlIGZyb20gYSBcYyBSYW5nZSBjb250YWluaW5nIHRoZSBiZWdpbgotICAgICAgICAgICAgYW5kIGVuZCBpdGVyYXRvcnMuCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBGb3J3YXJkUmFuZ2UgPgotICAgICAgICBpbmxpbmUgaXRlcmF0b3JfcmFuZ2U8IE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8Rm9yd2FyZFJhbmdlPjo6dHlwZSA+Ci0gICAgICAgIG1ha2VfaXRlcmF0b3JfcmFuZ2UoIEZvcndhcmRSYW5nZSYgciApCi0gICAgICAgIHsKLSAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yX3JhbmdlPCBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPEZvcndhcmRSYW5nZT46OnR5cGUgPgotICAgICAgICAgICAgICAgICggciwgaXRlcmF0b3JfcmFuZ2VfZGV0YWlsOjpyYW5nZV90YWcoKSApOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIEZvcndhcmRSYW5nZSA+Ci0gICAgICAgIGlubGluZSBpdGVyYXRvcl9yYW5nZTwgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxjb25zdCBGb3J3YXJkUmFuZ2U+Ojp0eXBlID4KLSAgICAgICAgbWFrZV9pdGVyYXRvcl9yYW5nZSggY29uc3QgRm9yd2FyZFJhbmdlJiByICkKLSAgICAgICAgewotICAgICAgICAgICByZXR1cm4gaXRlcmF0b3JfcmFuZ2U8IE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8Y29uc3QgRm9yd2FyZFJhbmdlPjo6dHlwZSA+Ci0gICAgICAgICAgICAgICAgKCByLCBpdGVyYXRvcl9yYW5nZV9kZXRhaWw6OmNvbnN0X3JhbmdlX3RhZygpICk7Ci0gICAgICAgIH0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HCi0KLSAgICAgICAgbmFtZXNwYWNlIGl0ZXJhdG9yX3JhbmdlX2RldGFpbAotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUmFuZ2UgPgotICAgICAgICAgICAgaW5saW5lIGl0ZXJhdG9yX3JhbmdlPCBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPFJhbmdlPjo6dHlwZSA+Ci0gICAgICAgICAgICBtYWtlX3JhbmdlX2ltcGwoIFJhbmdlJiByLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2RpZmZlcmVuY2U8UmFuZ2U+Ojp0eXBlIGFkdmFuY2VfYmVnaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfZGlmZmVyZW5jZTxSYW5nZT46OnR5cGUgYWR2YW5jZV9lbmQgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICAgLy8gTm90IHdvcnRoIHRoZSBlZmZvcnQKLSAgICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgIC8vaWYoIGFkdmFuY2VfYmVnaW4gPT0gMCAmJiBhZHZhbmNlX2VuZCA9PSAwICkKLSAgICAgICAgICAgICAgICAvLyAgICByZXR1cm4gbWFrZV9pdGVyYXRvcl9yYW5nZSggciApOwotICAgICAgICAgICAgICAgIC8vCi0KLSAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPFJhbmdlPjo6dHlwZQotICAgICAgICAgICAgICAgICAgICBuZXdfYmVnaW4gPSBuZG5ib29zdDo6YmVnaW4oIHIgKSwKLSAgICAgICAgICAgICAgICAgICAgbmV3X2VuZCAgID0gbmRuYm9vc3Q6OmVuZCggciApOwotICAgICAgICAgICAgICAgIHN0ZDo6YWR2YW5jZSggbmV3X2JlZ2luLCBhZHZhbmNlX2JlZ2luICk7Ci0gICAgICAgICAgICAgICAgc3RkOjphZHZhbmNlKCBuZXdfZW5kLCBhZHZhbmNlX2VuZCApOwotICAgICAgICAgICAgICAgIHJldHVybiBtYWtlX2l0ZXJhdG9yX3JhbmdlKCBuZXdfYmVnaW4sIG5ld19lbmQgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0jaWZkZWYgTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcKLQotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUmFuZ2UgPgotICAgICAgICBpbmxpbmUgaXRlcmF0b3JfcmFuZ2U8IE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8UmFuZ2U+Ojp0eXBlID4KLSAgICAgICAgbWFrZV9pdGVyYXRvcl9yYW5nZSggUmFuZ2UmIHIsCi0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfZGlmZmVyZW5jZTxSYW5nZT46OnR5cGUgYWR2YW5jZV9iZWdpbiwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9kaWZmZXJlbmNlPFJhbmdlPjo6dHlwZSBhZHZhbmNlX2VuZCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vTkROQk9PU1RfQVNTRVJUKCBhZHZhbmNlX2JlZ2luIC0gYWR2YW5jZV9lbmQgPD0gc2l6ZShyKSAmJiAiY3JlYXRpbmcgaW52YWxpZCByYW5nZSIgKTsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcl9yYW5nZV9kZXRhaWw6Om1ha2VfcmFuZ2VfaW1wbCggciwgYWR2YW5jZV9iZWdpbiwgYWR2YW5jZV9lbmQgKTsKLSAgICAgICAgfQotCi0jZWxzZQotCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBSYW5nZSA+Ci0gICAgICAgIGlubGluZSBpdGVyYXRvcl9yYW5nZTwgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxSYW5nZT46OnR5cGUgPgotICAgICAgICBtYWtlX2l0ZXJhdG9yX3JhbmdlKCBSYW5nZSYgciwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9kaWZmZXJlbmNlPFJhbmdlPjo6dHlwZSBhZHZhbmNlX2JlZ2luLAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2RpZmZlcmVuY2U8UmFuZ2U+Ojp0eXBlIGFkdmFuY2VfZW5kICkKLSAgICAgICAgewotICAgICAgICAgICAgLy9ORE5CT09TVF9BU1NFUlQoIGFkdmFuY2VfYmVnaW4gLSBhZHZhbmNlX2VuZCA8PSBzaXplKHIpICYmICJjcmVhdGluZyBpbnZhbGlkIHJhbmdlIiApOwotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yX3JhbmdlX2RldGFpbDo6bWFrZV9yYW5nZV9pbXBsKCByLCBhZHZhbmNlX2JlZ2luLCBhZHZhbmNlX2VuZCApOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFJhbmdlID4KLSAgICAgICAgaW5saW5lIGl0ZXJhdG9yX3JhbmdlPCBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPGNvbnN0IFJhbmdlPjo6dHlwZSA+Ci0gICAgICAgIG1ha2VfaXRlcmF0b3JfcmFuZ2UoIGNvbnN0IFJhbmdlJiByLAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2RpZmZlcmVuY2U8UmFuZ2U+Ojp0eXBlIGFkdmFuY2VfYmVnaW4sCi0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfZGlmZmVyZW5jZTxSYW5nZT46OnR5cGUgYWR2YW5jZV9lbmQgKQotICAgICAgICB7Ci0gICAgICAgICAgICAvL05ETkJPT1NUX0FTU0VSVCggYWR2YW5jZV9iZWdpbiAtIGFkdmFuY2VfZW5kIDw9IHNpemUocikgJiYgImNyZWF0aW5nIGludmFsaWQgcmFuZ2UiICk7Ci0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3JfcmFuZ2VfZGV0YWlsOjptYWtlX3JhbmdlX2ltcGwoIHIsIGFkdmFuY2VfYmVnaW4sIGFkdmFuY2VfZW5kICk7Ci0gICAgICAgIH0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HCi0KLSAgICAgICAgLy8hIGNvcHkgYSByYW5nZSBpbnRvIGEgc2VxdWVuY2UKLSAgICAgICAgLyohCi0gICAgICAgICAgICBDb25zdHJ1Y3QgYSBuZXcgc2VxdWVuY2Ugb2YgdGhlIHNwZWNpZmllZCB0eXBlIGZyb20gdGhlIGVsZW1lbnRzCi0gICAgICAgICAgICBpbiB0aGUgZ2l2ZW4gcmFuZ2UKLQotICAgICAgICAgICAgXHBhcmFtIFJhbmdlIEFuIGlucHV0IHJhbmdlCi0gICAgICAgICAgICBccmV0dXJuIE5ldyBzZXF1ZW5jZQotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxVCwgdHlwZW5hbWUgUmFuZ2UgPgotICAgICAgICBpbmxpbmUgU2VxVCBjb3B5X3JhbmdlKCBjb25zdCBSYW5nZSYgciApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBTZXFUKCBuZG5ib29zdDo6YmVnaW4oIHIgKSwgbmRuYm9vc3Q6OmVuZCggciApICk7Ci0gICAgICAgIH0KLQotfSAvLyBuYW1lc3BhY2UgJ2Jvb3N0JwotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCBORE5CT09TVF9URVNURURfQVQoMTUwMCkpCi0gICAgI3ByYWdtYSB3YXJuaW5nKCBwb3AgKQotI2VuZGlmCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yX3JhbmdlX2lvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3JfcmFuZ2VfaW8uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNzg2NjIzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3JfcmFuZ2VfaW8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgTmVpbCBHcm92ZXMgMjAwOS4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyAgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfSVRFUkFUT1JfUkFOR0VfSU9fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0lURVJBVE9SX1JBTkdFX0lPX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIE5ETkJPT1NUX1RFU1RFRF9BVCgxNTAwKSkKLSAgICAjcHJhZ21hIHdhcm5pbmcoIHB1c2ggKQotICAgICNwcmFnbWEgd2FybmluZyggZGlzYWJsZSA6IDQ5OTYgKQotI2VuZGlmCi0KLS8vIEZyb20gbmRuYm9vc3QvZHluYW1pY19iaXRzZXQuaHBwOyB0aGFua3MgdG8gTWF0dGhpYXMgVHJveWVyIGZvciBDcmF5IFgxIHBhdGNoLgotI2lmbmRlZiBORE5CT09TVF9PTERfSU9TVFJFQU1TIAotIyBpZiBkZWZpbmVkKF9fU1RMX0NPTkZJR19IKSAmJiBcCi0gICAgIWRlZmluZWQgKF9fU1RMX1VTRV9ORVdfSU9TVFJFQU1TKSAmJiAhZGVmaW5lZChfX2NyYXl4MSkgXAotICAgIC8qKi8KLSMgIGRlZmluZSBORE5CT09TVF9PTERfSU9TVFJFQU1TCi0jIGVuZGlmCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9PTERfSU9TVFJFQU1TCi0KLSNpZm5kZWYgX1NUTFBfTk9fSU9TVFJFQU1TCi0jIGlmbmRlZiBORE5CT09TVF9PTERfSU9TVFJFQU1TCi0jICBpbmNsdWRlIDxvc3RyZWFtPgotIyBlbHNlCi0jICBpbmNsdWRlIDxvc3RyZWFtLmg+Ci0jIGVuZGlmCi0jZW5kaWYgLy8gX1NUTFBfTk9fSU9TVFJFQU1TCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9pdGVyYXRvcl9yYW5nZV9jb3JlLmhwcD4KLSNpbmNsdWRlIDxpdGVyYXRvcj4KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLSNpZm5kZWYgX1NUTFBfTk9fSU9TVFJFQU1TCi0jIGlmbmRlZiBORE5CT09TVF9PTERfSU9TVFJFQU1TICAgCi0KLSAgICAgICAgLy8hIGl0ZXJhdG9yX3JhbmdlIG91dHB1dCBvcGVyYXRvcgotICAgICAgICAvKiEKLSAgICAgICAgICAgIE91dHB1dCB0aGUgcmFuZ2UgdG8gYW4gb3N0cmVhbS4gRWxlbWVudHMgYXJlIG91dHB1dHRlZAotICAgICAgICAgICAgaW4gYSBzZXF1ZW5jZSB3aXRob3V0IHNlcGFyYXRvcnMuCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvclQsIHR5cGVuYW1lIEVsZW0sIHR5cGVuYW1lIFRyYWl0cyA+Ci0gICAgICAgIGlubGluZSBzdGQ6OmJhc2ljX29zdHJlYW08RWxlbSxUcmFpdHM+JiBvcGVyYXRvcjw8KCAKLSAgICAgICAgICAgICAgICAgICAgc3RkOjpiYXNpY19vc3RyZWFtPEVsZW0sIFRyYWl0cz4mIE9zLAotICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvclQ+JiByICkKLSAgICAgICAgewotICAgICAgICAgICAgc3RkOjpjb3B5KCByLmJlZ2luKCksIHIuZW5kKCksIAotICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om9zdHJlYW1faXRlcmF0b3I8IE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3JfdmFsdWU8SXRlcmF0b3JUPjo6dHlwZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWxlbSwgVHJhaXRzPihPcykgKTsKLSAgICAgICAgICAgIHJldHVybiBPczsKLSAgICAgICAgfQotCi0jIGVsc2UKLQotICAgICAgICAvLyEgaXRlcmF0b3JfcmFuZ2Ugb3V0cHV0IG9wZXJhdG9yCi0gICAgICAgIC8qIQotICAgICAgICAgICAgT3V0cHV0IHRoZSByYW5nZSB0byBhbiBvc3RyZWFtLiBFbGVtZW50cyBhcmUgb3V0cHV0dGVkCi0gICAgICAgICAgICBpbiBhIHNlcXVlbmNlIHdpdGhvdXQgc2VwYXJhdG9ycy4KLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yVCA+Ci0gICAgICAgIGlubGluZSBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoIAotICAgICAgICAgICAgICAgICAgICBzdGQ6Om9zdHJlYW0mIE9zLAotICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvclQ+JiByICkKLSAgICAgICAgewotICAgICAgICAgICAgc3RkOjpjb3B5KCByLmJlZ2luKCksIHIuZW5kKCksIHN0ZDo6b3N0cmVhbV9pdGVyYXRvcjxjaGFyPihPcykpOwotICAgICAgICAgICAgcmV0dXJuIE9zOwotICAgICAgICB9Ci0KLSMgZW5kaWYKLSNlbmRpZiAvLyBfU1RMUF9OT19JT1NUUkVBTVMKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI3VuZGVmIE5ETkJPT1NUX09MRF9JT1NUUkVBTVMKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgTkROQk9PU1RfVEVTVEVEX0FUKDE1MDApKQotICAgICNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmIC8vIGluY2x1ZGUgZ3VhcmQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvbXV0YWJsZV9pdGVyYXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL211dGFibGVfaXRlcmF0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNTE4M2IwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvbXV0YWJsZV9pdGVyYXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9NVVRBQkxFX0lURVJBVE9SX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9NVVRBQkxFX0lURVJBVE9SX0hQUAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEyMDApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2NvbmZpZy5ocHA+Ci0KLSNpZmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2l0ZXJhdG9yLmhwcD4KLSNlbHNlCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvZXh0cmFjdF9vcHRpb25hbF90eXBlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl90cmFpdHMuaHBwPgotI2luY2x1ZGUgPGNzdGRkZWY+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAvLyBkZWZhdWx0Ci0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAKLSAgICBuYW1lc3BhY2UgcmFuZ2VfZGV0YWlsIHsKLSAgICAgICAgTkROQk9PU1RfUkFOR0VfRVhUUkFDVF9PUFRJT05BTF9UWVBFKCBpdGVyYXRvciApCi0gICAgfQotCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEMgPgotICAgIHN0cnVjdCByYW5nZV9tdXRhYmxlX2l0ZXJhdG9yIDogcmFuZ2VfZGV0YWlsOjpleHRyYWN0X2l0ZXJhdG9yPEM+Ci0gICAge307Ci0gICAgCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAvLyBwYWlyCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+Ci0gICAgc3RydWN0IHJhbmdlX211dGFibGVfaXRlcmF0b3I8IHN0ZDo6cGFpcjxJdGVyYXRvcixJdGVyYXRvcj4gPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciB0eXBlOwotICAgIH07Ci0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vIGFycmF5Ci0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBzeiA+Ci0gICAgc3RydWN0IHJhbmdlX211dGFibGVfaXRlcmF0b3I8IFRbc3pdID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCogdHlwZTsKLSAgICB9OwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvcmJlZ2luLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvcmJlZ2luLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjg4NThmMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL3JiZWdpbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9SQkVHSU5fSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX1JCRUdJTl9IUFAKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMjAwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9lbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL3JldmVyc2VfaXRlcmF0b3IuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotI2lmZGVmIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HCi0KLXRlbXBsYXRlPCBjbGFzcyBDID4KLWlubGluZSBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX3JldmVyc2VfaXRlcmF0b3I8Qz46OnR5cGUKLXJiZWdpbiggQyYgYyApCi17Ci0gICAgcmV0dXJuIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfcmV2ZXJzZV9pdGVyYXRvcjxDPjo6dHlwZSggbmRuYm9vc3Q6OmVuZCggYyApICk7Ci19Ci0KLSNlbHNlCi0KLXRlbXBsYXRlPCBjbGFzcyBDID4KLWlubGluZSBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX3JldmVyc2VfaXRlcmF0b3I8Qz46OnR5cGUKLXJiZWdpbiggQyYgYyApCi17Ci0gICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX3JldmVyc2VfaXRlcmF0b3I8Qz46OnR5cGUKLSAgICAgICAgaXRlcl90eXBlOwotICAgIHJldHVybiBpdGVyX3R5cGUoIG5kbmJvb3N0OjplbmQoIGMgKSApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgQyA+Ci1pbmxpbmUgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9yZXZlcnNlX2l0ZXJhdG9yPGNvbnN0IEM+Ojp0eXBlCi1yYmVnaW4oIGNvbnN0IEMmIGMgKQotewotICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9yZXZlcnNlX2l0ZXJhdG9yPGNvbnN0IEM+Ojp0eXBlCi0gICAgICAgIGl0ZXJfdHlwZTsKLSAgICByZXR1cm4gaXRlcl90eXBlKCBuZG5ib29zdDo6ZW5kKCBjICkgKTsKLX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HCi0KLXRlbXBsYXRlPCBjbGFzcyBUID4KLWlubGluZSBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX3JldmVyc2VfaXRlcmF0b3I8Y29uc3QgVD46OnR5cGUKLWNvbnN0X3JiZWdpbiggY29uc3QgVCYgciApCi17Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpyYmVnaW4oIHIgKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgJ2Jvb3N0JwotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9yZW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvcmVuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2ODBjYTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9yZW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IFRob3JzdGVuIE90dG9zZW4gMjAwMy0yMDA0LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX1JFTkRfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX1JFTkRfSFBQCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTIwMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvYmVnaW4uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL3JldmVyc2VfaXRlcmF0b3IuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotI2lmZGVmIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HCi0KLXRlbXBsYXRlPCBjbGFzcyBDID4KLWlubGluZSBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX3JldmVyc2VfaXRlcmF0b3I8Qz46OnR5cGUKLXJlbmQoIEMmIGMgKQotewotICAgIHJldHVybiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX3JldmVyc2VfaXRlcmF0b3I8Qz46OnR5cGUoIG5kbmJvb3N0OjpiZWdpbiggYyApICk7Ci19Ci0KLSNlbHNlCi0KLXRlbXBsYXRlPCBjbGFzcyBDID4KLWlubGluZSBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX3JldmVyc2VfaXRlcmF0b3I8Qz46OnR5cGUKLXJlbmQoIEMmIGMgKQotewotICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9yZXZlcnNlX2l0ZXJhdG9yPEM+Ojp0eXBlCi0gICAgICAgICAgICAgICBpdGVyX3R5cGU7Ci0gICAgcmV0dXJuIGl0ZXJfdHlwZSggbmRuYm9vc3Q6OmJlZ2luKCBjICkgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIEMgPgotaW5saW5lIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfcmV2ZXJzZV9pdGVyYXRvcjxjb25zdCBDPjo6dHlwZQotcmVuZCggY29uc3QgQyYgYyApCi17Ci0gICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX3JldmVyc2VfaXRlcmF0b3I8Y29uc3QgQz46OnR5cGUKLSAgICAgICAgaXRlcl90eXBlOwotICAgIHJldHVybiBpdGVyX3R5cGUoIG5kbmJvb3N0OjpiZWdpbiggYyApICk7Ci19Ci0KLSNlbmRpZgotCi10ZW1wbGF0ZTwgY2xhc3MgVCA+Ci1pbmxpbmUgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9yZXZlcnNlX2l0ZXJhdG9yPGNvbnN0IFQ+Ojp0eXBlCi1jb25zdF9yZW5kKCBjb25zdCBUJiByICkKLXsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnJlbmQoIHIgKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgJ2Jvb3N0JwotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9yZXN1bHRfaXRlcmF0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9yZXN1bHRfaXRlcmF0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDZlNzdkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvcmVzdWx0X2l0ZXJhdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IFRob3JzdGVuIE90dG9zZW4gMjAwMy0yMDA0LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX1JFU1VMVF9JVEVSQVRPUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfUkVTVUxUX0lURVJBVE9SX0hQUAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gICAgLy8KLSAgICAvLyBUaGlzIGludGVyZmFjZSBpcyBkZXByZWNhdGVkLCB1c2UgcmFuZ2VfaXRlcmF0b3I8VD4KLSAgICAvLwotICAgIAotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDID4KLSAgICBzdHJ1Y3QgcmFuZ2VfcmVzdWx0X2l0ZXJhdG9yIDogcmFuZ2VfaXRlcmF0b3I8Qz4KLSAgICB7IH07Ci0gICAgCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9yZXZlcnNlX2l0ZXJhdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvcmV2ZXJzZV9pdGVyYXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1MGY3OGIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9yZXZlcnNlX2l0ZXJhdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IFRob3JzdGVuIE90dG9zZW4gMjAwMy0yMDA0LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX1JFVkVSU0VfSVRFUkFUT1JfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX1JFVkVSU0VfSVRFUkFUT1JfSFBQCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTIwMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9pdGVyYXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IvcmV2ZXJzZV9pdGVyYXRvci5ocHA+Ci0KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAvLyBkZWZhdWx0Ci0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQyA+Ci0gICAgc3RydWN0IHJhbmdlX3JldmVyc2VfaXRlcmF0b3IKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgcmV2ZXJzZV9pdGVyYXRvcjwgCi0gICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPEM+Ojp0eXBlID4gdHlwZTsKLSAgICB9OwotICAgIAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9zaXplLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2Uvc2l6ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5NTI1NTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9zaXplLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IFRob3JzdGVuIE90dG9zZW4gMjAwMy0yMDA0LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX1NJWkVfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX1NJWkVfSFBQCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTIwMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9iZWdpbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9zaXplX3R5cGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIG5hbWVzcGFjZSByYW5nZV9kZXRhaWwKLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFNpbmdsZVBhc3NSYW5nZT4KLSAgICAgICAgaW5saW5lIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2Vfc2l6ZTxjb25zdCBTaW5nbGVQYXNzUmFuZ2U+Ojp0eXBlCi0gICAgICAgIHJhbmdlX2NhbGN1bGF0ZV9zaXplKGNvbnN0IFNpbmdsZVBhc3NSYW5nZSYgcm5nKQotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlQoIChuZG5ib29zdDo6ZW5kKHJuZykgLSBuZG5ib29zdDo6YmVnaW4ocm5nKSkgPj0gMCAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAicmVhY2hhYmlsaXR5IGludmFyaWFudCBicm9rZW4hIiApOwotICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjplbmQocm5nKSAtIG5kbmJvb3N0OjpiZWdpbihybmcpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgU2luZ2xlUGFzc1JhbmdlPgotICAgIGlubGluZSBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX3NpemU8Y29uc3QgU2luZ2xlUGFzc1JhbmdlPjo6dHlwZQotICAgIHNpemUoY29uc3QgU2luZ2xlUGFzc1JhbmdlJiBybmcpCi0gICAgewotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTY0KSkgJiYgXAotICAgICFORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA8IDMpIFwKLSAgICAvKiovCi0gICAgICAgIHVzaW5nIG5hbWVzcGFjZSByYW5nZV9kZXRhaWw7Ci0jZW5kaWYKLSAgICAgICAgcmV0dXJuIHJhbmdlX2NhbGN1bGF0ZV9zaXplKHJuZyk7Ci0gICAgfQotCi19IC8vIG5hbWVzcGFjZSAnYm9vc3QnCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9zaXplX3R5cGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9zaXplX3R5cGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZTQ4NjM5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2Uvc2l6ZV90eXBlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IFRob3JzdGVuIE90dG9zZW4gMjAwMy0yMDA0LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX1NJWkVfVFlQRV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfU0laRV9UWVBFX0hQUAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGlmZmVyZW5jZV90eXBlLmhwcD4KLSNpZmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3NpemVfdHlwZS5ocHA+Ci0jZWxzZQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9lbmFibGVfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL21ha2VfdW5zaWduZWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jb25zdC5ocHA+Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4KLSNpbmNsdWRlIDx1dGlsaXR5PgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICBuYW1lc3BhY2UgZGV0YWlsCi0gICAgewotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIGRlZmF1bHQKLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBjbGFzcyBoYXNfc2l6ZV90eXBlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgY2hhciBub190eXBlOwotICAgICAgICAgICAgc3RydWN0IHllc190eXBlIHsgY2hhciBkdW1teVsyXTsgfTsKLQotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQz4KLSAgICAgICAgICAgIHN0YXRpYyB5ZXNfdHlwZSB0ZXN0KE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgQzo6c2l6ZV90eXBlIHgpOwotCi0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDLCB0eXBlbmFtZSBBcmc+Ci0gICAgICAgICAgICBzdGF0aWMgbm9fdHlwZSB0ZXN0KEFyZyB4KTsKLQotICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHNpemVvZih0ZXN0PFQ+KDApKSA9PSBzaXplb2YoeWVzX3R5cGUpOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEMsIHR5cGVuYW1lIEVuYWJsZXI9dm9pZD4KLSAgICAgICAgc3RydWN0IHJhbmdlX3NpemUKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG1ha2VfdW5zaWduZWQ8Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9kaWZmZXJlbmNlPEM+Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQz4KLSAgICAgICAgc3RydWN0IHJhbmdlX3NpemU8Ci0gICAgICAgICAgICBDLAotICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBlbmFibGVfaWY8aGFzX3NpemVfdHlwZTxDPiwgdm9pZD46OnR5cGUKLSAgICAgICAgPgotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgQzo6c2l6ZV90eXBlIHR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTwgY2xhc3MgVCA+Ci0gICAgc3RydWN0IHJhbmdlX3NpemUgOgotICAgICAgICBkZXRhaWw6OnJhbmdlX3NpemU8VD4KLSAgICB7IH07Ci0KLSAgICB0ZW1wbGF0ZTwgY2xhc3MgVCA+Ci0gICAgc3RydWN0IHJhbmdlX3NpemU8Y29uc3QgVCA+Ci0gICAgICAgIDogZGV0YWlsOjpyYW5nZV9zaXplPFQ+Ci0gICAgeyB9OwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS92YWx1ZV90eXBlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvdmFsdWVfdHlwZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1NWVhNjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS92YWx1ZV90eXBlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IFRob3JzdGVuIE90dG9zZW4gMjAwMy0yMDA0LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX1ZBTFVFX1RZUEVfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX1ZBTFVFX1RZUEVfSFBQCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTIwMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9pdGVyYXRvci5ocHA+Ci0KLS8vI2lmZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLS8vI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC92YWx1ZV90eXBlLmhwcD4KLS8vI2Vsc2UKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2l0ZXJhdG9yX3RyYWl0cy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIHRlbXBsYXRlPCBjbGFzcyBUID4KLSAgICBzdHJ1Y3QgcmFuZ2VfdmFsdWUgOiBpdGVyYXRvcl92YWx1ZTwgdHlwZW5hbWUgcmFuZ2VfaXRlcmF0b3I8VD46OnR5cGUgPgotICAgIHsgfTsKLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1NmVjZDYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTg5ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfUkVGX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9SRUZfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2FkZHJlc3NvZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotLy8KLS8vICByZWYuaHBwIC0gcmVmL2NyZWYsIHVzZWZ1bCBoZWxwZXIgZnVuY3Rpb25zCi0vLwotLy8gIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMCBKYWFra28gSmFydmkgKGphYWtrby5qYXJ2aUBjcy51dHUuZmkpCi0vLyAgQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAyIFBldGVyIERpbW92Ci0vLyAgQ29weXJpZ2h0IChDKSAyMDAyIERhdmlkIEFicmFoYW1zCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9iaW5kL3JlZi5odG1sIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIHJlZmVyZW5jZV93cmFwcGVyCi17IAotcHVibGljOgotICAgIHR5cGVkZWYgVCB0eXBlOwotCi0jaWYgZGVmaW5lZCggTkROQk9PU1RfTVNWQyApICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoIE5ETkJPT1NUX01TVkMsIDwgMTMwMCApCi0KLSAgICBleHBsaWNpdCByZWZlcmVuY2Vfd3JhcHBlcihUJiB0KTogdF8oJnQpIHt9Ci0KLSNlbHNlCi0KLSAgICBleHBsaWNpdCByZWZlcmVuY2Vfd3JhcHBlcihUJiB0KTogdF8obmRuYm9vc3Q6OmFkZHJlc3NvZih0KSkge30KLQotI2VuZGlmCi0KLSAgICBvcGVyYXRvciBUJiAoKSBjb25zdCB7IHJldHVybiAqdF87IH0KLQotICAgIFQmIGdldCgpIGNvbnN0IHsgcmV0dXJuICp0XzsgfQotCi0gICAgVCogZ2V0X3BvaW50ZXIoKSBjb25zdCB7IHJldHVybiB0XzsgfQotCi1wcml2YXRlOgotCi0gICAgVCogdF87Ci19OwotCi0jIGlmIGRlZmluZWQoIF9fQk9STEFORENfXyApICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoIF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTgxKSApCi0jICBkZWZpbmUgTkROQk9PU1RfUkVGX0NPTlNUCi0jIGVsc2UKLSMgIGRlZmluZSBORE5CT09TVF9SRUZfQ09OU1QgY29uc3QKLSMgZW5kaWYKLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHJlZmVyZW5jZV93cmFwcGVyPFQ+IE5ETkJPT1NUX1JFRl9DT05TVCByZWYoVCAmIHQpCi17IAotICAgIHJldHVybiByZWZlcmVuY2Vfd3JhcHBlcjxUPih0KTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHJlZmVyZW5jZV93cmFwcGVyPFQgY29uc3Q+IE5ETkJPT1NUX1JFRl9DT05TVCBjcmVmKFQgY29uc3QgJiB0KQotewotICAgIHJldHVybiByZWZlcmVuY2Vfd3JhcHBlcjxUIGNvbnN0Pih0KTsKLX0KLQotIyB1bmRlZiBORE5CT09TVF9SRUZfQ09OU1QKLQotIyBpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY2xhc3MgaXNfcmVmZXJlbmNlX3dyYXBwZXIKLSAgICA6IHB1YmxpYyBtcGw6OmZhbHNlXwotewotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIHVud3JhcF9yZWZlcmVuY2UKLXsKLSBwdWJsaWM6Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi0jICBkZWZpbmUgQVVYX1JFRkVSRU5DRV9XUkFQUEVSX01FVEFGVU5DVElPTlNfREVGKFgpIFwKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IFwKLWNsYXNzIGlzX3JlZmVyZW5jZV93cmFwcGVyPCBYID4gXAotICAgIDogcHVibGljIG1wbDo6dHJ1ZV8gXAoteyBcCi19OyBcCi1cCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBcCi1jbGFzcyB1bndyYXBfcmVmZXJlbmNlPCBYID4gXAoteyBcCi0gcHVibGljOiBcCi0gICAgdHlwZWRlZiBUIHR5cGU7IFwKLX07IFwKLS8qKi8KLQotQVVYX1JFRkVSRU5DRV9XUkFQUEVSX01FVEFGVU5DVElPTlNfREVGKHJlZmVyZW5jZV93cmFwcGVyPFQ+KQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NWX1NQRUNJQUxJWkFUSU9OUykKLUFVWF9SRUZFUkVOQ0VfV1JBUFBFUl9NRVRBRlVOQ1RJT05TX0RFRihyZWZlcmVuY2Vfd3JhcHBlcjxUPiBjb25zdCkKLUFVWF9SRUZFUkVOQ0VfV1JBUFBFUl9NRVRBRlVOQ1RJT05TX0RFRihyZWZlcmVuY2Vfd3JhcHBlcjxUPiB2b2xhdGlsZSkKLUFVWF9SRUZFUkVOQ0VfV1JBUFBFUl9NRVRBRlVOQ1RJT05TX0RFRihyZWZlcmVuY2Vfd3JhcHBlcjxUPiBjb25zdCB2b2xhdGlsZSkKLSNlbmRpZgotCi0jICB1bmRlZiBBVVhfUkVGRVJFTkNFX1dSQVBQRVJfTUVUQUZVTkNUSU9OU19ERUYKLQotIyBlbHNlIC8vIG5vIHBhcnRpYWwgc3BlY2lhbGl6YXRpb24KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotICB0eXBlZGVmIGNoYXIgKCZ5ZXNfcmVmZXJlbmNlX3dyYXBwZXJfdClbMV07Ci0gIHR5cGVkZWYgY2hhciAoJm5vX3JlZmVyZW5jZV93cmFwcGVyX3QpWzJdOwotICAgICAgCi0gIG5vX3JlZmVyZW5jZV93cmFwcGVyX3QgaXNfcmVmZXJlbmNlX3dyYXBwZXJfdGVzdCguLi4pOwotCi0gIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gIHllc19yZWZlcmVuY2Vfd3JhcHBlcl90IGlzX3JlZmVyZW5jZV93cmFwcGVyX3Rlc3QodHlwZTwgcmVmZXJlbmNlX3dyYXBwZXI8VD4gPik7Ci0KLSAgdGVtcGxhdGU8Ym9vbCB3cmFwcGVkPgotICBzdHJ1Y3QgcmVmZXJlbmNlX3Vud3JhcHBlcgotICB7Ci0gICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgIHN0cnVjdCBhcHBseQotICAgICAgewotICAgICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgfTsKLSAgfTsKLQotICB0ZW1wbGF0ZTw+Ci0gIHN0cnVjdCByZWZlcmVuY2VfdW53cmFwcGVyPHRydWU+Ci0gIHsKLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgc3RydWN0IGFwcGx5Ci0gICAgICB7Ci0gICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0eXBlIHR5cGU7Ci0gICAgICB9OwotICB9OwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY2xhc3MgaXNfcmVmZXJlbmNlX3dyYXBwZXIKLXsKLSBwdWJsaWM6Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKAotICAgICAgICBib29sLCB2YWx1ZSA9ICgKLSAgICAgICAgICAgICBzaXplb2YoZGV0YWlsOjppc19yZWZlcmVuY2Vfd3JhcHBlcl90ZXN0KHR5cGU8VD4oKSkpCi0gICAgICAgICAgICA9PSBzaXplb2YoZGV0YWlsOjp5ZXNfcmVmZXJlbmNlX3dyYXBwZXJfdCkpKTsKLSAgICAKLSAgICB0eXBlZGVmIDo6bmRuYm9vc3Q6Om1wbDo6Ym9vbF88dmFsdWU+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIHVud3JhcF9yZWZlcmVuY2UKLSAgICA6IHB1YmxpYyBkZXRhaWw6OnJlZmVyZW5jZV91bndyYXBwZXI8Ci0gICAgICAgIGlzX3JlZmVyZW5jZV93cmFwcGVyPFQ+Ojp2YWx1ZQotICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8VD4KLXt9OwotCi0jIGVuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotdGVtcGxhdGUgPGNsYXNzIFQ+IGlubGluZSB0eXBlbmFtZSB1bndyYXBfcmVmZXJlbmNlPFQ+Ojp0eXBlJgotdW53cmFwX3JlZihUJiB0KQotewotICAgIHJldHVybiB0OwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgVCogZ2V0X3BvaW50ZXIoIHJlZmVyZW5jZV93cmFwcGVyPFQ+IGNvbnN0ICYgciApCi17Ci0gICAgcmV0dXJuIHIuZ2V0X3BvaW50ZXIoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfUkVGX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWIxYzdhNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JlZ2V4IGZvciBkb2N1bWVudGF0aW9uLgotICAqICAgRklMRSAgICAgICAgIHJlZ2V4LmNwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogRGVjbGFyZXMgbmRuYm9vc3Q6OmJhc2ljX3JlZ2V4PD4gYW5kIGFzc29jaWF0ZWQKLSAgKiAgICAgICAgICAgICAgICBmdW5jdGlvbnMgYW5kIGNsYXNzZXMuIFRoaXMgaGVhZGVyIGlzIHRoZSBtYWluCi0gICogICAgICAgICAgICAgICAgZW50cnkgcG9pbnQgZm9yIHRoZSB0ZW1wbGF0ZSByZWdleCBjb2RlLgotICAqLwotCi0KLS8qIHN0YXJ0IHdpdGggQyBjb21wYXRpYmlsaXR5IEFQSSAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFX1JFR0VYX0hQUAotI2RlZmluZSBORE5CT09TVF9SRV9SRUdFWF9IUFAKLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9DT05GSUdfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvY29uZmlnLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvcmVnZXguaHBwPgotCi0jZW5kaWYgIC8vIGluY2x1ZGUKLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC9jb25maWcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC9jb25maWcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhODE2OGI2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvY29uZmlnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzNSArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIGNvbmZpZy5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IHJlZ2V4IGV4dGVuZGVkIGNvbmZpZyBzZXR1cC4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9DT05GSUdfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0NPTkZJR19IUFAKLS8qCi0gKiBCb3JsYW5kIEMrKyBGaXgvZXJyb3IgY2hlY2sKLSAqIHRoaXMgaGFzIHRvIGdvICpiZWZvcmUqIHdlIGluY2x1ZGUgYW55IHN0ZCBsaWIgaGVhZGVyczoKLSAqLwotI2lmIGRlZmluZWQoX19CT1JMQU5EQ19fKQotIyAgaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvY29uZmlnL2JvcmxhbmQuaHBwPgotI2VuZGlmCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICoKLSAqICBJbmNsdWRlIGFsbCB0aGUgaGVhZGVycyB3ZSBuZWVkIGhlcmU6Ci0gKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotCi0jICBpZm5kZWYgTkROQk9PU1RfUkVHRVhfVVNFUl9DT05GSUcKLSMgICAgIGRlZmluZSBORE5CT09TVF9SRUdFWF9VU0VSX0NPTkZJRyA8bmRuYm9vc3QvcmVnZXgvdXNlci5ocHA+Ci0jICBlbmRpZgotCi0jICBpbmNsdWRlIE5ETkJPT1NUX1JFR0VYX1VTRVJfQ09ORklHCi0KLSMgIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLSNlbHNlCi0gICAvKgotICAgICogQyBidWlsZCwKLSAgICAqIGRvbid0IGluY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+IGJlY2F1c2UgdGhhdCBtYXkKLSAgICAqIGRvIEMrKyBzcGVjaWZpYyB0aGluZ3MgaW4gZnV0dXJlLi4uCi0gICAgKi8KLSMgIGluY2x1ZGUgPHN0ZGxpYi5oPgotIyAgaW5jbHVkZSA8c3RkZGVmLmg+Ci0jICBpZmRlZiBfTVNDX1ZFUgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX01TVkMgX01TQ19WRVIKLSMgIGVuZGlmCi0jZW5kaWYKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKgotICogIEJvaWxlcnBsYXRlIHJlZ2V4IGNvbmZpZyBvcHRpb25zOgotICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKiBPYnNvbGV0ZSBtYWNybywgdXNlIE5ETkJPT1NUX1ZFUlNJT04gaW5zdGVhZDogKi8KLSNkZWZpbmUgTkROQk9PU1RfUkVfVkVSU0lPTiAzMjAKLQotLyogZml4OiAqLwotI2lmIGRlZmluZWQoX1VOSUNPREUpICYmICFkZWZpbmVkKFVOSUNPREUpCi0jZGVmaW5lIFVOSUNPREUKLSNlbmRpZgotCi0vKgotICogRml4IGZvciBnY2MgcHJpb3IgdG8gMy40OiBzdGQ6OmN0eXBlPHdjaGFyX3Q+IGRvZXNuJ3QgYWxsb3cKLSAqIG1hc2tzIHRvIGJlIGNvbWJpbmVkLCBmb3IgZXhhbXBsZToKLSAqIHN0ZDo6dXNlX2ZhY2V0PHN0ZDo6Y3R5cGU8d2NoYXJfdD4gPi5pcyhzdGQ6OmN0eXBlX2Jhc2U6Omxvd2VyfHN0ZDo6Y3R5cGVfYmFzZTo6dXBwZXIsIEwnYScpOwotICogcmV0dXJucyAqZmFsc2UqLgotICovCi0jaWZkZWYgX19HTElCQ1BQX18KLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9CVUdHWV9DVFlQRV9GQUNFVAotI2VuZGlmCi0KLS8qCi0gKiBJbnRlbCBDKysgYmVmb3JlIDguMCBlbmRzIHVwIHdpdGggdW5yZXNvbHZlZCBleHRlcm5hbHMgdW5sZXNzIHdlIHR1cm4gb2ZmCi0gKiBleHRlcm4gdGVtcGxhdGUgc3VwcG9ydDoKLSAqLwotI2lmIGRlZmluZWQoTkROQk9PU1RfSU5URUwpICYmIGRlZmluZWQoX19jcGx1c3BsdXMpICYmIChORE5CT09TVF9JTlRFTCA8PSA4MDApCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfTk9fRVhURVJOQUxfVEVNUExBVEVTCi0jZW5kaWYKLS8qCi0gKiBWaXN1YWwgQysrIGRvZXNuJ3Qgc3VwcG9ydCBleHRlcm5hbCB0ZW1wbGF0ZXMgd2l0aCBDKysgZXh0ZW5zaW9ucyB0dXJuZWQgb2ZmOgotICovCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRlZmluZWQoX01TQ19FWFRFTlNJT05TKQotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX05PX0VYVEVSTkFMX1RFTVBMQVRFUwotI2VuZGlmCi0vKgotICogU2hhcmVkIHJlZ2V4IGxpYiB3aWxsIGNyYXNoIHdpdGhvdXQgdGhpcywgZnJhbmtseSBpdCBsb29rcyBhIGxvdCBsaWtlIGEgZ2NjIGJ1ZzoKLSAqLwotI2lmIGRlZmluZWQoX19NSU5HVzMyX18pCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfTk9fRVhURVJOQUxfVEVNUExBVEVTCi0jZW5kaWYKLQotLyoKLSAqIElmIHRoZXJlIGlzbid0IGdvb2QgZW5vdWdoIHdpZGUgY2hhcmFjdGVyIHN1cHBvcnQgdGhlbiB0aGVyZSB3aWxsCi0gKiBiZSBubyB3aWRlIGNoYXJhY3RlciByZWd1bGFyIGV4cHJlc3Npb25zOgotICovCi0jaWYgKGRlZmluZWQoTkROQk9PU1RfTk9fQ1dDSEFSKSB8fCBkZWZpbmVkKE5ETkJPT1NUX05PX0NXQ1RZUEUpIHx8IGRlZmluZWQoTkROQk9PU1RfTk9fU1REX1dTVFJJTkcpKQotIyAgaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fV1JFR0VYKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1dSRUdFWAotIyAgZW5kaWYKLSNlbHNlCi0jICBpZiBkZWZpbmVkKF9fc2dpKSAmJiAoZGVmaW5lZChfX1NHSV9TVExfUE9SVCkgfHwgZGVmaW5lZChfU1RMUE9SVF9WRVJTSU9OKSkKLSAgICAgIC8qIFNUTFBvcnQgb24gSVJJWCBpcyBtaXNjb25maWd1cmVkOiA8Y3djdHlwZT4gZG9lcyBub3QgY29tcGlsZQotICAgICAgICogYXMgYSB0ZW1wb3JhcnkgZml4IGluY2x1ZGUgPHdjdHlwZS5oPiBpbnN0ZWFkIGFuZCBwcmV2ZW50IGluY2x1c2lvbgotICAgICAgICogb2YgU1RMUG9ydCB2ZXJzaW9uIG9mIDxjd2N0eXBlPiAqLwotIyAgICAgaW5jbHVkZSA8d2N0eXBlLmg+Ci0jICAgICBkZWZpbmUgX19TVExQT1JUX0NXQ1RZUEUKLSMgICAgIGRlZmluZSBfU1RMUF9DV0NUWVBFCi0jICBlbmRpZgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L2NvbmZpZy9jd2NoYXIuaHBwPgotI2VuZGlmCi0KLSNlbmRpZgotCi0vKgotICogSWYgV2luMzIgc3VwcG9ydCBoYXMgYmVlbiBkaXNhYmxlZCBmb3IgYm9vc3QgaW4gZ2VuZXJhbCwgdGhlbgotICogaXQgaXMgZm9yIHJlZ2V4IGluIHBhcnRpY3VsYXI6Ci0gKi8KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0RJU0FCTEVfV0lOMzIpICYmICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX05PX1czMikKLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9OT19XMzIKLSNlbmRpZgotCi0vKiBkaXNhYmxlIG91ciBvd24gZmlsZS1pdGVyYXRvcnMgYW5kIG1hcGZpbGVzIGlmIHdlIGNhbid0Ci0gKiBzdXBwb3J0IHRoZW06ICovCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfSEFTX0RJUkVOVF9IKSAmJiAhKGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9OT19XMzIpKQotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX05PX0ZJTEVJVEVSCi0jZW5kaWYKLQotLyogYmFja3dhcmRzIGNvbXBhdGliaXRpdHk6ICovCi0jaWYgZGVmaW5lZChORE5CT09TVF9SRV9OT19MSUIpCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfTk9fTElCCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19HTlVDX18pICYmIChkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSkKLS8qIGdjYyBvbiB3aW4zMiBoYXMgcHJvYmxlbXMgaWYgeW91IGluY2x1ZGUgPHdpbmRvd3MuaD4KLSAgIChzcG9yYWRpY2FsbHkgZ2VuZXJhdGVzIGJhZCBjb2RlKS4gKi8KLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9OT19XMzIKLSNlbmRpZgotI2lmIGRlZmluZWQoX19DT01PX18pICYmICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX05PX1czMikgJiYgIWRlZmluZWQoX01TQ19FWFRFTlNJT05TKQotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX05PX1czMgotI2VuZGlmCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICoKLSAqICBXaWRlIGNoYXJhY3RlciB3b3JrYXJvdW5kczoKLSAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotLyoKLSAqIGRlZmluZSBORE5CT09TVF9SRUdFWF9IQVNfT1RIRVJfV0NIQVJfVCB3aGVuIHdjaGFyX3QgaXMgYSBuYXRpdmUgdHlwZSwgYnV0IHRoZSB1c2VycwotICogY29kZSBtYXkgYmUgYnVpbHQgd2l0aCB3Y2hhcl90IGFzIHVuc2lnbmVkIHNob3J0OiBiYXNpY2FsbHkgd2hlbiB3ZSdyZSBidWlsZGluZwotICogd2l0aCBNU1ZDIGFuZCB0aGUgL1pjOndjaGFyX3Qgb3B0aW9uIHdlIHBsYWNlIHNvbWUgZXh0cmEgdW5zaWduZWQgc2hvcnQgdmVyc2lvbnMKLSAqIG9mIHRoZSBub24taW5saW5lIGZ1bmN0aW9ucyBpbiB0aGUgbGlicmFyeSwgc28gdGhhdCB1c2VycyBjYW4gc3RpbGwgbGluayB0byB0aGUgbGliLAotICogaXJyZXNwZWN0aXZlIG9mIHdoZXRoZXIgdGhlaXIgb3duIGNvZGUgaXMgYnVpbHQgd2l0aCAvWmM6d2NoYXJfdC4KLSAqIE5vdGUgdGhhdCB0aGlzIGRvZXMgTk9UIFdPUksgd2l0aCBWQzEwIHdoZW4gdGhlIEMrKyBsb2NhbGUgaXMgaW4gZWZmZWN0IGFzCi0gKiB0aGUgbG9jYWxlJ3MgPHVuc2lnbmVkIHNob3J0PiBmYWNldHMgc2ltcGx5IGRvIG5vdCBjb21waWxlIGluIHRoYXQgY2FzZS4KLSAqLwotI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpICYmIChkZWZpbmVkKE5ETkJPT1NUX01TVkMpIHx8IGRlZmluZWQoX19JQ0wpKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19JTlRSSU5TSUNfV0NIQVJfVCkgJiYgZGVmaW5lZChORE5CT09TVF9XSU5ET1dTKSAmJiAhZGVmaW5lZChfX1NHSV9TVExfUE9SVCkgJiYgIWRlZmluZWQoX1NUTFBPUlRfVkVSU0lPTikgJiYgIWRlZmluZWQoTkROQk9PU1RfUldTVERfVkVSKSAmJiAoKF9NU0NfVkVSIDwgMTYwMCkgfHwgIWRlZmluZWQoTkROQk9PU1RfUkVHRVhfVVNFX0NQUF9MT0NBTEUpKQotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0hBU19PVEhFUl9XQ0hBUl9UCi0jICBpZmRlZiBORE5CT09TVF9NU1ZDCi0jICAgICBwcmFnbWEgd2FybmluZyhwdXNoKQotIyAgICAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQyNTEgNDIzMSkKLSMgICAgIGlmIE5ETkJPT1NUX01TVkMgPCAxNjAwCi0jICAgICAgICBwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDY2MCkKLSMgICAgIGVuZGlmCi0jICBlbmRpZgotIyAgaWYgZGVmaW5lZChfRExMKSAmJiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIChORE5CT09TVF9NU1ZDIDwgMTYwMCkKLSMgICAgIGluY2x1ZGUgPHN0cmluZz4KLSAgICAgIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBfX2RlY2xzcGVjKGRsbGltcG9ydCkgc3RkOjpiYXNpY19zdHJpbmc8dW5zaWduZWQgc2hvcnQ+OwotIyAgZW5kaWYKLSMgIGlmZGVmIE5ETkJPT1NUX01TVkMKLSMgICAgIHByYWdtYSB3YXJuaW5nKHBvcCkKLSMgIGVuZGlmCi0jZW5kaWYKLQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqCi0gKiAgU2V0IHVwIGRsbCBpbXBvcnQvZXhwb3J0IG9wdGlvbnM6Ci0gKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLSNpZm5kZWYgTkROQk9PU1RfU1lNQk9MX0VYUE9SVAotIyAgZGVmaW5lIE5ETkJPT1NUX1NZTUJPTF9FWFBPUlQKLSMgIGRlZmluZSBORE5CT09TVF9TWU1CT0xfSU1QT1JUCi0jZW5kaWYKLQotI2lmIChkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX0RZTl9MSU5LKSB8fCBkZWZpbmVkKE5ETkJPT1NUX0FMTF9EWU5fTElOSykpICYmICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX1NUQVRJQ19MSU5LKQotIyAgaWYgZGVmaW5lZChORE5CT09TVF9SRUdFWF9TT1VSQ0UpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfREVDTCBORE5CT09TVF9TWU1CT0xfRVhQT1JUCi0jICAgICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfQlVJTERfRExMCi0jICBlbHNlCi0jICAgICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfREVDTCBORE5CT09TVF9TWU1CT0xfSU1QT1JUCi0jICBlbmRpZgotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9ERUNMCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX05PX0xJQikgJiYgIWRlZmluZWQoTkROQk9PU1RfUkVHRVhfU09VUkNFKSAmJiAhZGVmaW5lZChORE5CT09TVF9BTExfTk9fTElCKSAmJiBkZWZpbmVkKF9fY3BsdXNwbHVzKQotIyAgZGVmaW5lIE5ETkJPT1NUX0xJQl9OQU1FIG5kbmJvb3N0X3JlZ2V4Ci0jICBpZiBkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX0RZTl9MSU5LKSB8fCBkZWZpbmVkKE5ETkJPT1NUX0FMTF9EWU5fTElOSykKLSMgICAgIGRlZmluZSBORE5CT09TVF9EWU5fTElOSwotIyAgZW5kaWYKLSMgIGlmZGVmIE5ETkJPT1NUX1JFR0VYX0RJQUcKLSMgICAgIGRlZmluZSBORE5CT09TVF9MSUJfRElBR05PU1RJQwotIyAgZW5kaWYKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9hdXRvX2xpbmsuaHBwPgotI2VuZGlmCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICoKLSAqICBTZXQgdXAgZnVuY3Rpb24gY2FsbCB0eXBlOgotICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiAoTkROQk9PU1RfTVNWQyA+PSAxMjAwKSAmJiBkZWZpbmVkKF9NU0NfRVhURU5TSU9OUykKLSNpZiBkZWZpbmVkKF9ERUJVRykgfHwgZGVmaW5lZChfX01TVkNfUlVOVElNRV9DSEVDS1MpIHx8IGRlZmluZWQoX01BTkFHRUQpIHx8IGRlZmluZWQoTkROQk9PU1RfUkVHRVhfTk9fRkFTVENBTEwpCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfQ0FMTCBfX2NkZWNsCi0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0NBTEwgX19mYXN0Y2FsbAotI2VuZGlmCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfQ0NBTEwgX19jZGVjbAotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fQk9STEFORENfXykgJiYgIWRlZmluZWQoTkROQk9PU1RfRElTQUJMRV9XSU4zMikKLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9DQUxMIF9fZmFzdGNhbGwKLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9DQ0FMTCBfX3N0ZGNhbGwKLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0NBTEwKLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9DQUxMCi0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfQ0NBTEwKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfQ0NBTEwKLSNlbmRpZgotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqCi0gKiAgU2V0IHVwIGxvY2FsaXNhdGlvbiBtb2RlbDoKLSAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotLyogYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6ICovCi0jaWZkZWYgTkROQk9PU1RfUkVfTE9DQUxFX0MKLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9VU0VfQ19MT0NBTEUKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfUkVfTE9DQUxFX0NQUAotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1VTRV9DUFBfTE9DQUxFCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19DWUdXSU5fXykKLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9VU0VfQ19MT0NBTEUKLSNlbmRpZgotCi0vKiBXaW4zMiBkZWZhdWx0cyB0byBuYXRpdmUgV2luMzIgbG9jYWxlOiAqLwotI2lmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9VU0VfV0lOMzJfTE9DQUxFKSAmJiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9VU0VfQ19MT0NBTEUpICYmICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX1VTRV9DUFBfTE9DQUxFKSAmJiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9OT19XMzIpCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfVVNFX1dJTjMyX0xPQ0FMRQotI2VuZGlmCi0vKiBvdGhlcndpc2UgdXNlIEMrKyBsb2NhbGUgaWYgc3VwcG9ydGVkOiAqLwotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX1VTRV9XSU4zMl9MT0NBTEUpICYmICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX1VTRV9DX0xPQ0FMRSkgJiYgIWRlZmluZWQoTkROQk9PU1RfUkVHRVhfVVNFX0NQUF9MT0NBTEUpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9MT0NBTEUpCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfVVNFX0NQUF9MT0NBTEUKLSNlbmRpZgotLyogb3RoZXJ3aXNlIHVzZSBDKyBsb2NhbGU6ICovCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfUkVHRVhfVVNFX1dJTjMyX0xPQ0FMRSkgJiYgIWRlZmluZWQoTkROQk9PU1RfUkVHRVhfVVNFX0NfTE9DQUxFKSAmJiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9VU0VfQ1BQX0xPQ0FMRSkKLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9VU0VfQ19MT0NBTEUKLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX01BWF9TVEFURV9DT1VOVAotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX01BWF9TVEFURV9DT1VOVCAxMDAwMDAwMDAKLSNlbmRpZgotCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICoKLSAqICBFcnJvciBIYW5kbGluZyBmb3IgZXhjZXB0aW9uIGZyZWUgY29tcGlsZXJzOgotICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0jaWZkZWYgTkROQk9PU1RfTk9fRVhDRVBUSU9OUwotLyoKLSAqIElmIHRoZXJlIGFyZSBubyBleGNlcHRpb25zIHRoZW4gd2UgbXVzdCByZXBvcnQgY3JpdGljYWwtZXJyb3JzCi0gKiB0aGUgb25seSB3YXkgd2Uga25vdyBob3c7IGJ5IHRlcm1pbmF0aW5nLgotICovCi0jaW5jbHVkZSA8c3RkZXhjZXB0PgotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDxuZG5ib29zdC90aHJvd19leGNlcHRpb24uaHBwPgotCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfTk9FSF9BU1NFUlQoeClcCi1pZigwID09ICh4KSlcCi17XAotICAgc3RkOjpzdHJpbmcgcygiRXJyb3I6IGNyaXRpY2FsIHJlZ2V4KysgZmFpbHVyZSBpbjogIik7XAotICAgcy5hcHBlbmQoI3gpO1wKLSAgIHN0ZDo6cnVudGltZV9lcnJvciBlKHMpO1wKLSAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oZSk7XAotfQotI2Vsc2UKLS8qCi0gKiBXaXRoIGV4Y2VwdGlvbnMgdGhlbiBlcnJvciBoYW5kbGluZyBpcyB0YWtlbiBjYXJlIG9mIGFuZAotICogdGhlcmUgaXMgbm8gbmVlZCBmb3IgdGhlc2UgY2hlY2tzOgotICovCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfTk9FSF9BU1NFUlQoeCkKLSNlbmRpZgotCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICoKLSAqICBTdGFjayBwcm90ZWN0aW9uIHVuZGVyIE1TIFdpbmRvd3M6Ci0gKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9OT19XMzIpICYmICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX1YzKQotIyAgaWYoZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX1dJTjY0KSB8fCBkZWZpbmVkKF9XSU5DRSkpIFwKLSAgICAgICAgJiYgIWRlZmluZWQoX19HTlVDX18pIFwKLSAgICAgICAgJiYgIShkZWZpbmVkKF9fQk9STEFORENfXykgJiYgKF9fQk9STEFORENfXyA+PSAweDYwMCkpIFwKLSAgICAgICAgJiYgIShkZWZpbmVkKF9fTVdFUktTX18pICYmIChfX01XRVJLU19fIDw9IDB4MzAwMykpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfSEFTX01TX1NUQUNLX0dVQVJECi0jICBlbmRpZgotI2VsaWYgZGVmaW5lZChORE5CT09TVF9SRUdFWF9IQVNfTVNfU1RBQ0tfR1VBUkQpCi0jICB1bmRlZiBORE5CT09TVF9SRUdFWF9IQVNfTVNfU1RBQ0tfR1VBUkQKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX2NwbHVzcGx1cykgJiYgZGVmaW5lZChORE5CT09TVF9SRUdFWF9IQVNfTVNfU1RBQ0tfR1VBUkQpCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLW5hbWVzcGFjZSByZV9kZXRhaWx7Ci0KLU5ETkJPT1NUX1JFR0VYX0RFQ0wgdm9pZCBORE5CT09TVF9SRUdFWF9DQUxMIHJlc2V0X3N0YWNrX2d1YXJkX3BhZ2UoKTsKLQotfQotfQotCi0jZW5kaWYKLQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqCi0gKiAgQWxnb3JpdGhtIHNlbGVjdGlvbiBhbmQgY29uZmlndXJhdGlvbjoKLSAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX1JFQ1VSU0lWRSkgJiYgIWRlZmluZWQoTkROQk9PU1RfUkVHRVhfTk9OX1JFQ1VSU0lWRSkKLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfUkVHRVhfSEFTX01TX1NUQUNLX0dVQVJEKSAmJiAhZGVmaW5lZChfU1RMUF9ERUJVRykgJiYgIWRlZmluZWQoX19TVExfREVCVUcpICYmICEoZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiAoTkROQk9PU1RfTVNWQyA+PSAxNDAwKSkKLSMgICAgIGRlZmluZSBORE5CT09TVF9SRUdFWF9SRUNVUlNJVkUKLSMgIGVsc2UKLSMgICAgIGRlZmluZSBORE5CT09TVF9SRUdFWF9OT05fUkVDVVJTSVZFCi0jICBlbmRpZgotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9SRUdFWF9OT05fUkVDVVJTSVZFCi0jICBpZmRlZiBORE5CT09TVF9SRUdFWF9SRUNVUlNJVkUKLSMgICAgIGVycm9yICJDYW4ndCBzZXQgYm90aCBORE5CT09TVF9SRUdFWF9SRUNVUlNJVkUgYW5kIE5ETkJPT1NUX1JFR0VYX05PTl9SRUNVUlNJVkUiCi0jICBlbmRpZgotIyAgaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0JMT0NLU0laRQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0JMT0NLU0laRSA0MDk2Ci0jICBlbmRpZgotIyAgaWYgTkROQk9PU1RfUkVHRVhfQkxPQ0tTSVpFIDwgNTEyCi0jICAgICBlcnJvciAiTkROQk9PU1RfUkVHRVhfQkxPQ0tTSVpFIG11c3QgYmUgYXQgbGVhc3QgNTEyIgotIyAgZW5kaWYKLSMgIGlmbmRlZiBORE5CT09TVF9SRUdFWF9NQVhfQkxPQ0tTCi0jICAgICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfTUFYX0JMT0NLUyAxMDI0Ci0jICBlbmRpZgotIyAgaWZkZWYgTkROQk9PU1RfUkVHRVhfSEFTX01TX1NUQUNLX0dVQVJECi0jICAgICB1bmRlZiBORE5CT09TVF9SRUdFWF9IQVNfTVNfU1RBQ0tfR1VBUkQKLSMgIGVuZGlmCi0jICBpZm5kZWYgTkROQk9PU1RfUkVHRVhfTUFYX0NBQ0hFX0JMT0NLUwotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX01BWF9DQUNIRV9CTE9DS1MgMTYKLSMgIGVuZGlmCi0jZW5kaWYKLQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqCi0gKiAgaGVscGVyIG1lbW9yeSBhbGxvY2F0aW9uIGZ1bmN0aW9uczoKLSAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpICYmIGRlZmluZWQoTkROQk9PU1RfUkVHRVhfTk9OX1JFQ1VSU0lWRSkKLW5hbWVzcGFjZSBuZG5ib29zdHsgbmFtZXNwYWNlIHJlX2RldGFpbHsKLQotTkROQk9PU1RfUkVHRVhfREVDTCB2b2lkKiBORE5CT09TVF9SRUdFWF9DQUxMIGdldF9tZW1fYmxvY2soKTsKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgdm9pZCBORE5CT09TVF9SRUdFWF9DQUxMIHB1dF9tZW1fYmxvY2sodm9pZCopOwotCi19fSAvKiBuYW1lc3BhY2VzICovCi0jZW5kaWYKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKgotICogIERpYWdub3N0aWNzOgotICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0jaWZkZWYgTkROQk9PU1RfUkVHRVhfQ09ORklHX0lORk8KLU5ETkJPT1NUX1JFR0VYX0RFQ0wgdm9pZCBORE5CT09TVF9SRUdFWF9DQUxMIHByaW50X3JlZ2V4X2xpYnJhcnlfaW5mbygpOwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX0RJQUcpCi0jICBwcmFnbWEgbWVzc2FnZSAoIk5ETkJPT1NUX1JFR0VYX0RFQ0wiIE5ETkJPT1NUX1NUUklOR0laRSg9TkROQk9PU1RfUkVHRVhfREVDTCkpCi0jICBwcmFnbWEgbWVzc2FnZSAoIk5ETkJPT1NUX1JFR0VYX0NBTEwiIE5ETkJPT1NUX1NUUklOR0laRSg9TkROQk9PU1RfUkVHRVhfQ0FMTCkpCi0jICBwcmFnbWEgbWVzc2FnZSAoIk5ETkJPT1NUX1JFR0VYX0NDQUxMIiBORE5CT09TVF9TVFJJTkdJWkUoPU5ETkJPT1NUX1JFR0VYX0NDQUxMKSkKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9VU0VfQ19MT0NBTEUKLSMgIHByYWdtYSBtZXNzYWdlICgiVXNpbmcgQyBsb2NhbGUgaW4gcmVnZXggdHJhaXRzIGNsYXNzIikKLSNlbGlmIE5ETkJPT1NUX1JFR0VYX1VTRV9DUFBfTE9DQUxFCi0jICBwcmFnbWEgbWVzc2FnZSAoIlVzaW5nIEMrKyBsb2NhbGUgaW4gcmVnZXggdHJhaXRzIGNsYXNzIikKLSNlbHNlCi0jICBwcmFnbWEgbWVzc2FnZSAoIlVzaW5nIFdpbjMyIGxvY2FsZSBpbiByZWdleCB0cmFpdHMgY2xhc3MiKQotI2VuZGlmCi0jaWYgZGVmaW5lZChORE5CT09TVF9SRUdFWF9EWU5fTElOSykgfHwgZGVmaW5lZChORE5CT09TVF9BTExfRFlOX0xJTkspCi0jICBwcmFnbWEgbWVzc2FnZSAoIkR5bmFtaWMgbGlua2luZyBlbmFibGVkIikKLSNlbmRpZgotI2lmIGRlZmluZWQoTkROQk9PU1RfUkVHRVhfTk9fTElCKSB8fCBkZWZpbmVkKE5ETkJPT1NUX0FMTF9OT19MSUIpCi0jICBwcmFnbWEgbWVzc2FnZSAoIkF1dG8tbGlua2luZyBkaXNhYmxlZCIpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9OT19FWFRFUk5BTF9URU1QTEFURVMKLSMgIHByYWdtYSBtZXNzYWdlICgiRXh0ZXJuIHRlbXBsYXRlcyBkaXNhYmxlZCIpCi0jZW5kaWYKLQotI2VuZGlmCi0KLSNlbmRpZgotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L2NvbmZpZy9ib3JsYW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvY29uZmlnL2JvcmxhbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZTIwMmUxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvY29uZmlnL2JvcmxhbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLSAKLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICBuZG5ib29zdC9yZWdleC9jb25maWcvYm9ybGFuZC5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IHJlZ2V4IGJvcmxhbmQtc3BlY2lmaWMgY29uZmlnIHNldHVwLgotICAqLwotCi0KLSNpZiBkZWZpbmVkKF9fQk9STEFORENfXykKLSMgIGlmIChfX0JPUkxBTkRDX18gPT0gMHg1NTApIHx8IChfX0JPUkxBTkRDX18gPT0gMHg1NTEpCi0gICAgICAvLyBwcm9ibGVtcyB3aXRoIHN0ZDo6YmFzaWNfc3RyaW5nIGFuZCBkbGwgUlRMOgotIyAgICAgaWYgZGVmaW5lZChfUlRMRExMKSAmJiBkZWZpbmVkKF9SV1NURF9DT01QSUxFX0lOU1RBTlRJQVRFKQotIyAgICAgICAgaWZkZWYgTkROQk9PU1RfUkVHRVhfQlVJTERfRExMCi0jICAgICAgICAgICBlcnJvciBfUldTVERfQ09NUElMRV9JTlNUQU5USUFURSBtdXN0IG5vdCBiZSBkZWZpbmVkIHdoZW4gYnVpbGRpbmcgcmVnZXgrKyBhcyBhIERMTAotIyAgICAgICAgZWxzZQotIyAgICAgICAgICAgcHJhZ21hIG1lc3NhZ2UoIkRlZmluaW5nIF9SV1NURF9DT01QSUxFX0lOU1RBTlRJQVRFIHdoZW4gbGlua2luZyB0byB0aGUgRExMIHZlcnNpb24gb2YgdGhlIFJUTCBtYXkgcHJvZHVjZSBtZW1vcnkgY29ycnVwdGlvbiBwcm9ibGVtcyBpbiBzdGQ6OmJhc2ljX3N0cmluZywgYXMgYSByZXN1bHQgb2Ygc2VwYXJhdGUgdmVyc2lvbnMgb2YgYmFzaWNfc3RyaW5nJ3Mgc3RhdGljIGRhdGEgaW4gdGhlIFJUTCBhbmQgeW91J3JlIGV4ZS9kbGw6IGJlIHdhcm5lZCEhIikKLSMgICAgICAgIGVuZGlmCi0jICAgICBlbmRpZgotIyAgICAgaWZuZGVmIF9SVExETEwKLSAgICAgICAgIC8vIHRoaXMgaXMgaGFybWxlc3MgZm9yIGEgc3RhaWMgbGluazoKLSMgICAgICAgIGRlZmluZSBfUldTVERfQ09NUElMRV9JTlNUQU5USUFURQotIyAgICAgZW5kaWYKLSAgICAgIC8vIGV4dGVybmFsIHRlbXBsYXRlcyBjYXVzZSBwcm9ibGVtcyBmb3Igc29tZSByZWFzb246Ci0jICAgICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfTk9fRVhURVJOQUxfVEVNUExBVEVTCi0jICBlbmRpZgotIyAgaWYgKF9fQk9STEFORENfXyA8PSAweDU0MCkgJiYgIWRlZmluZWQoTkROQk9PU1RfUkVHRVhfTk9fTElCKSAmJiAhZGVmaW5lZChfTk9fVkNMKQotICAgICAgLy8gQysrIEJ1aWxkZXIgNCBhbmQgZWFybGllciwgd2UgY2FuJ3QgdGVsbCB3aGV0aGVyIHdlIHNob3VsZCBiZSB1c2luZwotICAgICAgLy8gdGhlIFZDTCBydW50aW1lIG9yIG5vdCwgZG8gYSBzdGF0aWMgbGluayBpbnN0ZWFkOgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1NUQVRJQ19MSU5LCi0jICBlbmRpZgotICAgLy8KLSAgIC8vIFZDTCBzdXBwb3J0OgotICAgLy8gaWYgd2UncmUgYnVpbGRpbmcgYSBjb25zb2xlIGFwcCB0aGVuIHRoZXJlIGNhbid0IGJlIGFueSBWQ0wgKGNhbiB0aGVyZT8pCi0jICBpZiAhZGVmaW5lZChfX0NPTlNPTEVfXykgJiYgIWRlZmluZWQoX05PX1ZDTCkKLSMgICAgIGRlZmluZSBORE5CT09TVF9SRUdFWF9VU0VfVkNMCi0jICBlbmRpZgotICAgLy8KLSAgIC8vIGlmIHRoaXMgaXNuJ3QgV2luMzIgdGhlbiBkb24ndCBhdXRvbWF0aWNhbGx5IHNlbGVjdCBsaW5rCi0gICAvLyBsaWJyYXJpZXM6Ci0gICAvLwotIyAgaWZuZGVmIF9XaW5kb3dzCi0jICAgICBpZm5kZWYgTkROQk9PU1RfUkVHRVhfTk9fTElCCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfTk9fTElCCi0jICAgICBlbmRpZgotIyAgICAgaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1NUQVRJQ19MSU5LCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfU1RBVElDX0xJTksKLSMgICAgIGVuZGlmCi0jICBlbmRpZgotCi0jaWYgX19CT1JMQU5EQ19fIDwgMHg2MDAKLS8vCi0vLyBzdHJpbmcgd29ya2Fyb3VuZHM6Ci0vLwotI2luY2x1ZGUgPGNzdHJpbmc+Ci0jdW5kZWYgc3RyY21wCi0jdW5kZWYgc3RyY3B5Ci0jZW5kaWYKLQotI2VuZGlmCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC9jb25maWcvY3djaGFyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvY29uZmlnL2N3Y2hhci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxNjVjMWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC9jb25maWcvY3djaGFyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwNyArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotIAotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIG5kbmJvb3N0L3JlZ2V4L2NvbmZpZy9jd2NoYXIuaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiByZWdleCB3aWRlIGNoYXJhY3RlciBzdHJpbmcgZml4ZXMuCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfQ09ORklHX0NXQ0hBUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfQ09ORklHX0NXQ0hBUl9IUFAKLQotI2luY2x1ZGUgPGN3Y2hhcj4KLSNpbmNsdWRlIDxjd2N0eXBlPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLSNpZiBkZWZpbmVkKF9fU1REX1JXQ09NUElMRVJfSF9fKSB8fCBkZWZpbmVkKF9SV1NURF9WRVIpCi0vLyBhcHBhcmVudGx5IHRoaXMgaXMgcmVxdWlyZWQgZm9yIHRoZSBSVyBTVEwgb24gTGludXg6Ci0jdW5kZWYgaXN3YWxudW0KLSN1bmRlZiBpc3dhbHBoYQotI3VuZGVmIGlzd2JsYW5rCi0jdW5kZWYgaXN3Y250cmwKLSN1bmRlZiBpc3dkaWdpdAotI3VuZGVmIGlzd2dyYXBoCi0jdW5kZWYgaXN3bG93ZXIKLSN1bmRlZiBpc3dwcmludAotI3VuZGVmIGlzd3ByaW50Ci0jdW5kZWYgaXN3cHVuY3QKLSN1bmRlZiBpc3dzcGFjZQotI3VuZGVmIGlzd3VwcGVyCi0jdW5kZWYgaXN3eGRpZ2l0Ci0jdW5kZWYgaXN3Y3R5cGUKLSN1bmRlZiB0b3dsb3dlcgotI3VuZGVmIHRvd3VwcGVyCi0jdW5kZWYgdG93Y3RyYW5zCi0jdW5kZWYgd2N0cmFucwotI3VuZGVmIHdjdHlwZQotI2VuZGlmCi0KLW5hbWVzcGFjZSBzdGR7Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UKLWV4dGVybiAiQyJ7Ci0jZW5kaWYKLQotI2lmZGVmIGlzd2FsbnVtCi1pbmxpbmUgaW50IChpc3dhbG51bSkod2ludF90IGkpCi17IHJldHVybiBpc3dhbG51bShpKTsgfQotI3VuZGVmIGlzd2FsbnVtCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFKQotdXNpbmcgOjppc3dhbG51bTsKLSNlbmRpZgotCi0jaWZkZWYgaXN3YWxwaGEKLWlubGluZSBpbnQgKGlzd2FscGhhKSh3aW50X3QgaSkKLXsgcmV0dXJuIGlzd2FscGhhKGkpOyB9Ci0jdW5kZWYgaXN3YWxwaGEKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpCi11c2luZyA6Omlzd2FscGhhOwotI2VuZGlmCi0KLSNpZmRlZiBpc3djbnRybAotaW5saW5lIGludCAoaXN3Y250cmwpKHdpbnRfdCBpKQoteyByZXR1cm4gaXN3Y250cmwoaSk7IH0KLSN1bmRlZiBpc3djbnRybAotI2VsaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSkKLXVzaW5nIDo6aXN3Y250cmw7Ci0jZW5kaWYKLQotI2lmZGVmIGlzd2RpZ2l0Ci1pbmxpbmUgaW50IChpc3dkaWdpdCkod2ludF90IGkpCi17IHJldHVybiBpc3dkaWdpdChpKTsgfQotI3VuZGVmIGlzd2RpZ2l0Ci0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFKQotdXNpbmcgOjppc3dkaWdpdDsKLSNlbmRpZgotCi0jaWZkZWYgaXN3Z3JhcGgKLWlubGluZSBpbnQgKGlzd2dyYXBoKSh3aW50X3QgaSkKLXsgcmV0dXJuIGlzd2dyYXBoKGkpOyB9Ci0jdW5kZWYgaXN3Z3JhcGgKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpCi11c2luZyA6Omlzd2dyYXBoOwotI2VuZGlmCi0KLSNpZmRlZiBpc3dsb3dlcgotaW5saW5lIGludCAoaXN3bG93ZXIpKHdpbnRfdCBpKQoteyByZXR1cm4gaXN3bG93ZXIoaSk7IH0KLSN1bmRlZiBpc3dsb3dlcgotI2VsaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSkKLXVzaW5nIDo6aXN3bG93ZXI7Ci0jZW5kaWYKLQotI2lmZGVmIGlzd3ByaW50Ci1pbmxpbmUgaW50IChpc3dwcmludCkod2ludF90IGkpCi17IHJldHVybiBpc3dwcmludChpKTsgfQotI3VuZGVmIGlzd3ByaW50Ci0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFKQotdXNpbmcgOjppc3dwcmludDsKLSNlbmRpZgotCi0jaWZkZWYgaXN3cHVuY3QKLWlubGluZSBpbnQgKGlzd3B1bmN0KSh3aW50X3QgaSkKLXsgcmV0dXJuIGlzd3B1bmN0KGkpOyB9Ci0jdW5kZWYgaXN3cHVuY3QKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpCi11c2luZyA6Omlzd3B1bmN0OwotI2VuZGlmCi0KLSNpZmRlZiBpc3dzcGFjZQotaW5saW5lIGludCAoaXN3c3BhY2UpKHdpbnRfdCBpKQoteyByZXR1cm4gaXN3c3BhY2UoaSk7IH0KLSN1bmRlZiBpc3dzcGFjZQotI2VsaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSkKLXVzaW5nIDo6aXN3c3BhY2U7Ci0jZW5kaWYKLQotI2lmZGVmIGlzd3VwcGVyCi1pbmxpbmUgaW50IChpc3d1cHBlcikod2ludF90IGkpCi17IHJldHVybiBpc3d1cHBlcihpKTsgfQotI3VuZGVmIGlzd3VwcGVyCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFKQotdXNpbmcgOjppc3d1cHBlcjsKLSNlbmRpZgotCi0jaWZkZWYgaXN3eGRpZ2l0Ci1pbmxpbmUgaW50IChpc3d4ZGlnaXQpKHdpbnRfdCBpKQoteyByZXR1cm4gaXN3eGRpZ2l0KGkpOyB9Ci0jdW5kZWYgaXN3eGRpZ2l0Ci0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFKQotdXNpbmcgOjppc3d4ZGlnaXQ7Ci0jZW5kaWYKLQotI2lmZGVmIHRvd2xvd2VyCi1pbmxpbmUgd2ludF90ICh0b3dsb3dlcikod2ludF90IGkpCi17IHJldHVybiB0b3dsb3dlcihpKTsgfQotI3VuZGVmIHRvd2xvd2VyCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFKQotdXNpbmcgOjp0b3dsb3dlcjsKLSNlbmRpZgotCi0jaWZkZWYgdG93dXBwZXIKLWlubGluZSB3aW50X3QgKHRvd3VwcGVyKSh3aW50X3QgaSkKLXsgcmV0dXJuIHRvd3VwcGVyKGkpOyB9Ci0jdW5kZWYgdG93dXBwZXIKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpCi11c2luZyA6OiB0b3d1cHBlcjsKLSNlbmRpZgotCi0jaWZkZWYgd2NzY21wCi1pbmxpbmUgaW50ICh3Y3NjbXApKGNvbnN0IHdjaGFyX3QgKnAxLCBjb25zdCB3Y2hhcl90ICpwMikKLXsgcmV0dXJuIHdjc2NtcChwMSxwMik7IH0KLSN1bmRlZiB3Y3NjbXAKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpCi11c2luZyA6Ondjc2NtcDsKLSNlbmRpZgotCi0jaWZkZWYgd2NzY29sbAotaW5saW5lIGludCAod2NzY29sbCkoY29uc3Qgd2NoYXJfdCAqcDEsIGNvbnN0IHdjaGFyX3QgKnAyKQoteyByZXR1cm4gd2NzY29sbChwMSxwMik7IH0KLSN1bmRlZiB3Y3Njb2xsCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFKSAmJiAhZGVmaW5lZChVTkRFUl9DRSkKLXVzaW5nIDo6d2NzY29sbDsKLSNlbmRpZgotCi0jaWZkZWYgd2NzY3B5Ci1pbmxpbmUgd2NoYXJfdCAqKHdjc2NweSkod2NoYXJfdCAqcDEsIGNvbnN0IHdjaGFyX3QgKnAyKQoteyByZXR1cm4gd2NzY3B5KHAxLHAyKTsgfQotI3VuZGVmIHdjc2NweQotI2VsaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSkKLXVzaW5nIDo6d2NzY3B5OwotI2VuZGlmCi0KLSNpZmRlZiB3Y3NsZW4KLWlubGluZSBzaXplX3QgKHdjc2xlbikoY29uc3Qgd2NoYXJfdCAqcCkKLXsgcmV0dXJuIHdjc2xlbihwKTsgfQotI3VuZGVmIHdjc2xlbgotI2VsaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSkKLXVzaW5nIDo6d2NzbGVuOwotI2VuZGlmCi0KLSNpZmRlZiB3Y3N4ZnJtCi1zaXplX3Qgd2NzeGZybSh3Y2hhcl90ICpwMSwgY29uc3Qgd2NoYXJfdCAqcDIsIHNpemVfdCBzKQoteyByZXR1cm4gd2NzeGZybShwMSxwMixzKTsgfQotI3VuZGVmIHdjc3hmcm0KLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpCi11c2luZyA6Ondjc3hmcm07Ci0jZW5kaWYKLQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFCi19IC8vIGV4dGVybiAiQyIKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBzdGQKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvaWN1LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvaWN1LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjMyODUyMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L2ljdS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMxICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDA0Ci0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgaWN1LmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogVW5pY29kZSByZWd1bGFyIGV4cHJlc3Npb25zIG9uIHRvcCBvZiB0aGUgSUNVIExpYnJhcnkuCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfSUNVX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9JQ1VfSFBQCi0KLSNpbmNsdWRlIDx1bmljb2RlL3V0eXBlcy5oPgotI2luY2x1ZGUgPHVuaWNvZGUvdWNoYXIuaD4KLSNpbmNsdWRlIDx1bmljb2RlL2NvbGwuaD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvcGVuZGluZy91bmljb2RlX2l0ZXJhdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaW50X2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8Yml0c2V0PgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nIChwdXNoKQotI3ByYWdtYSB3YXJuaW5nIChkaXNhYmxlOiA0MjUxKQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotbmFtZXNwYWNlIHJlX2RldGFpbHsKLQotLy8gCi0vLyBJbXBsZW1lbnRhdGlvbiBkZXRhaWxzOgotLy8KLWNsYXNzIE5ETkJPT1NUX1JFR0VYX0RFQ0wgaWN1X3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbgotewotICAgdHlwZWRlZiBVQ2hhcjMyICAgICAgICAgICAgICAgICAgICAgIGNoYXJfdHlwZTsKLSAgIHR5cGVkZWYgc3RkOjpzaXplX3QgICAgICAgICAgICAgICAgICBzaXplX3R5cGU7Ci0gICB0eXBlZGVmIHN0ZDo6dmVjdG9yPGNoYXJfdHlwZT4gICAgICAgc3RyaW5nX3R5cGU7Ci0gICB0eXBlZGVmIFVfTkFNRVNQQUNFX1FVQUxJRklFUiBMb2NhbGUgbG9jYWxlX3R5cGU7Ci0gICB0eXBlZGVmIG5kbmJvb3N0Ojp1aW50X2xlYXN0MzJfdCAgICAgICAgY2hhcl9jbGFzc190eXBlOwotcHVibGljOgotICAgaWN1X3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbihjb25zdCBVX05BTUVTUEFDRV9RVUFMSUZJRVIgTG9jYWxlJiBsKQotICAgICAgOiBtX2xvY2FsZShsKQotICAgewotICAgICAgVUVycm9yQ29kZSBzdWNjZXNzID0gVV9aRVJPX0VSUk9SOwotICAgICAgbV9jb2xsYXRvci5yZXNldChVX05BTUVTUEFDRV9RVUFMSUZJRVIgQ29sbGF0b3I6OmNyZWF0ZUluc3RhbmNlKGwsIHN1Y2Nlc3MpKTsKLSAgICAgIGlmKFVfU1VDQ0VTUyhzdWNjZXNzKSA9PSAwKQotICAgICAgICAgaW5pdF9lcnJvcigpOwotICAgICAgbV9jb2xsYXRvci0+c2V0U3RyZW5ndGgoVV9OQU1FU1BBQ0VfUVVBTElGSUVSIENvbGxhdG9yOjpJREVOVElDQUwpOwotICAgICAgc3VjY2VzcyA9IFVfWkVST19FUlJPUjsKLSAgICAgIG1fcHJpbWFyeV9jb2xsYXRvci5yZXNldChVX05BTUVTUEFDRV9RVUFMSUZJRVIgQ29sbGF0b3I6OmNyZWF0ZUluc3RhbmNlKGwsIHN1Y2Nlc3MpKTsKLSAgICAgIGlmKFVfU1VDQ0VTUyhzdWNjZXNzKSA9PSAwKQotICAgICAgICAgaW5pdF9lcnJvcigpOwotICAgICAgbV9wcmltYXJ5X2NvbGxhdG9yLT5zZXRTdHJlbmd0aChVX05BTUVTUEFDRV9RVUFMSUZJRVIgQ29sbGF0b3I6OlBSSU1BUlkpOwotICAgfQotICAgVV9OQU1FU1BBQ0VfUVVBTElGSUVSIExvY2FsZSBnZXRsb2MoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9sb2NhbGU7Ci0gICB9Ci0gICBzdHJpbmdfdHlwZSBkb190cmFuc2Zvcm0oY29uc3QgY2hhcl90eXBlKiBwMSwgY29uc3QgY2hhcl90eXBlKiBwMiwgY29uc3QgVV9OQU1FU1BBQ0VfUVVBTElGSUVSIENvbGxhdG9yKiBwY29sbCkgY29uc3Q7Ci0gICBzdHJpbmdfdHlwZSB0cmFuc2Zvcm0oY29uc3QgY2hhcl90eXBlKiBwMSwgY29uc3QgY2hhcl90eXBlKiBwMikgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBkb190cmFuc2Zvcm0ocDEsIHAyLCBtX2NvbGxhdG9yLmdldCgpKTsKLSAgIH0KLSAgIHN0cmluZ190eXBlIHRyYW5zZm9ybV9wcmltYXJ5KGNvbnN0IGNoYXJfdHlwZSogcDEsIGNvbnN0IGNoYXJfdHlwZSogcDIpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gZG9fdHJhbnNmb3JtKHAxLCBwMiwgbV9wcmltYXJ5X2NvbGxhdG9yLmdldCgpKTsKLSAgIH0KLXByaXZhdGU6Ci0gICB2b2lkIGluaXRfZXJyb3IoKQotICAgewotICAgICAgc3RkOjpydW50aW1lX2Vycm9yIGUoIkNvdWxkIG5vdCBpbml0aWFsaXplIElDVSByZXNvdXJjZXMiKTsKLSAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oZSk7Ci0gICB9Ci0gICBVX05BTUVTUEFDRV9RVUFMSUZJRVIgTG9jYWxlIG1fbG9jYWxlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgSUNVIGxvY2FsZSB0aGF0IHdlJ3JlIHVzaW5nCi0gICBuZG5ib29zdDo6c2NvcGVkX3B0cjwgVV9OQU1FU1BBQ0VfUVVBTElGSUVSIENvbGxhdG9yPiBtX2NvbGxhdG9yOyAgICAgICAgICAvLyBUaGUgZnVsbCBjb2xsYXRpb24gb2JqZWN0Ci0gICBuZG5ib29zdDo6c2NvcGVkX3B0cjwgVV9OQU1FU1BBQ0VfUVVBTElGSUVSIENvbGxhdG9yPiBtX3ByaW1hcnlfY29sbGF0b3I7ICAvLyBUaGUgcHJpbWFyeSBjb2xsYXRpb24gb2JqZWN0Ci19OwotCi1pbmxpbmUgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8aWN1X3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbj4gZ2V0X2ljdV9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb24oY29uc3QgVV9OQU1FU1BBQ0VfUVVBTElGSUVSIExvY2FsZSYgbG9jKQotewotICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPGljdV9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb24+KG5ldyBpY3VfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uKGxvYykpOwotfQotCi19Ci0KLWNsYXNzIE5ETkJPT1NUX1JFR0VYX0RFQ0wgaWN1X3JlZ2V4X3RyYWl0cwotewotcHVibGljOgotICAgdHlwZWRlZiBVQ2hhcjMyICAgICAgICAgICAgICAgICAgICAgIGNoYXJfdHlwZTsKLSAgIHR5cGVkZWYgc3RkOjpzaXplX3QgICAgICAgICAgICAgICAgICBzaXplX3R5cGU7Ci0gICB0eXBlZGVmIHN0ZDo6dmVjdG9yPGNoYXJfdHlwZT4gICAgICAgc3RyaW5nX3R5cGU7Ci0gICB0eXBlZGVmIFVfTkFNRVNQQUNFX1FVQUxJRklFUiBMb2NhbGUgbG9jYWxlX3R5cGU7Ci0jaWZkZWYgTkROQk9PU1RfTk9fSU5UNjRfVAotICAgdHlwZWRlZiBzdGQ6OmJpdHNldDw2ND4gICAgICAgICAgICAgIGNoYXJfY2xhc3NfdHlwZTsKLSNlbHNlCi0gICB0eXBlZGVmIG5kbmJvb3N0Ojp1aW50NjRfdCAgICAgICAgICAgICAgY2hhcl9jbGFzc190eXBlOwotI2VuZGlmCi0KLSAgIHN0cnVjdCBib29zdF9leHRlbnNpb25zX3RhZ3t9OwotCi0gICBpY3VfcmVnZXhfdHJhaXRzKCkKLSAgICAgIDogbV9waW1wbChyZV9kZXRhaWw6OmdldF9pY3VfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uKFVfTkFNRVNQQUNFX1FVQUxJRklFUiBMb2NhbGUoKSkpCi0gICB7Ci0gICB9Ci0gICBzdGF0aWMgc2l6ZV90eXBlIGxlbmd0aChjb25zdCBjaGFyX3R5cGUqIHApOwotCi0gICA6Om5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OnN5bnRheF90eXBlIHN5bnRheF90eXBlKGNoYXJfdHlwZSBjKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gKChjIDwgMHg3ZikgJiYgKGMgPiAwKSkgPyByZV9kZXRhaWw6OmdldF9kZWZhdWx0X3N5bnRheF90eXBlKHN0YXRpY19jYXN0PGNoYXI+KGMpKSA6IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2NoYXI7Ci0gICB9Ci0gICA6Om5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OmVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfc3ludGF4X3R5cGUoY2hhcl90eXBlIGMpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gKChjIDwgMHg3ZikgJiYgKGMgPiAwKSkgPyByZV9kZXRhaWw6OmdldF9kZWZhdWx0X2VzY2FwZV9zeW50YXhfdHlwZShzdGF0aWNfY2FzdDxjaGFyPihjKSkgOiByZWdleF9jb25zdGFudHM6OnN5bnRheF9jaGFyOwotICAgfQotICAgY2hhcl90eXBlIHRyYW5zbGF0ZShjaGFyX3R5cGUgYykgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBjOwotICAgfQotICAgY2hhcl90eXBlIHRyYW5zbGF0ZV9ub2Nhc2UoY2hhcl90eXBlIGMpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gOjp1X3RvbG93ZXIoYyk7Ci0gICB9Ci0gICBjaGFyX3R5cGUgdHJhbnNsYXRlKGNoYXJfdHlwZSBjLCBib29sIGljYXNlKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIGljYXNlID8gdHJhbnNsYXRlX25vY2FzZShjKSA6IHRyYW5zbGF0ZShjKTsKLSAgIH0KLSAgIGNoYXJfdHlwZSB0b2xvd2VyKGNoYXJfdHlwZSBjKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIDo6dV90b2xvd2VyKGMpOwotICAgfQotICAgY2hhcl90eXBlIHRvdXBwZXIoY2hhcl90eXBlIGMpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gOjp1X3RvdXBwZXIoYyk7Ci0gICB9Ci0gICBzdHJpbmdfdHlwZSB0cmFuc2Zvcm0oY29uc3QgY2hhcl90eXBlKiBwMSwgY29uc3QgY2hhcl90eXBlKiBwMikgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3BpbXBsLT50cmFuc2Zvcm0ocDEsIHAyKTsKLSAgIH0KLSAgIHN0cmluZ190eXBlIHRyYW5zZm9ybV9wcmltYXJ5KGNvbnN0IGNoYXJfdHlwZSogcDEsIGNvbnN0IGNoYXJfdHlwZSogcDIpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9waW1wbC0+dHJhbnNmb3JtX3ByaW1hcnkocDEsIHAyKTsKLSAgIH0KLSAgIGNoYXJfY2xhc3NfdHlwZSBsb29rdXBfY2xhc3NuYW1lKGNvbnN0IGNoYXJfdHlwZSogcDEsIGNvbnN0IGNoYXJfdHlwZSogcDIpIGNvbnN0OwotICAgc3RyaW5nX3R5cGUgbG9va3VwX2NvbGxhdGVuYW1lKGNvbnN0IGNoYXJfdHlwZSogcDEsIGNvbnN0IGNoYXJfdHlwZSogcDIpIGNvbnN0OwotICAgYm9vbCBpc2N0eXBlKGNoYXJfdHlwZSBjLCBjaGFyX2NsYXNzX3R5cGUgZikgY29uc3Q7Ci0gICBpbnQgdG9pKGNvbnN0IGNoYXJfdHlwZSomIHAxLCBjb25zdCBjaGFyX3R5cGUqIHAyLCBpbnQgcmFkaXgpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiByZV9kZXRhaWw6Omdsb2JhbF90b2kocDEsIHAyLCByYWRpeCwgKnRoaXMpOwotICAgfQotICAgaW50IHZhbHVlKGNoYXJfdHlwZSBjLCBpbnQgcmFkaXgpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiB1X2RpZ2l0KGMsIHN0YXRpY19jYXN0PCA6OmludDhfdD4ocmFkaXgpKTsKLSAgIH0KLSAgIGxvY2FsZV90eXBlIGltYnVlKGxvY2FsZV90eXBlIGwpCi0gICB7Ci0gICAgICBsb2NhbGVfdHlwZSByZXN1bHQobV9waW1wbC0+Z2V0bG9jKCkpOwotICAgICAgbV9waW1wbCA9IHJlX2RldGFpbDo6Z2V0X2ljdV9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb24obCk7Ci0gICAgICByZXR1cm4gcmVzdWx0OwotICAgfQotICAgbG9jYWxlX3R5cGUgZ2V0bG9jKCljb25zdAotICAgewotICAgICAgcmV0dXJuIGxvY2FsZV90eXBlKCk7Ci0gICB9Ci0gICBzdGQ6OnN0cmluZyBlcnJvcl9zdHJpbmcoOjpuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjplcnJvcl90eXBlIG4pIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gcmVfZGV0YWlsOjpnZXRfZGVmYXVsdF9lcnJvcl9zdHJpbmcobik7Ci0gICB9Ci1wcml2YXRlOgotICAgaWN1X3JlZ2V4X3RyYWl0cyhjb25zdCBpY3VfcmVnZXhfdHJhaXRzJik7Ci0gICBpY3VfcmVnZXhfdHJhaXRzJiBvcGVyYXRvcj0oY29uc3QgaWN1X3JlZ2V4X3RyYWl0cyYpOwotCi0gICAvLwotICAgLy8gZGVmaW5lIHRoZSBiaXRtYXNrcyBvZmZzZXRzIHdlIG5lZWQgZm9yIGFkZGl0aW9uYWwgY2hhcmFjdGVyIHByb3BlcnRpZXM6Ci0gICAvLwotICAgZW51bXsKLSAgICAgIG9mZnNldF9ibGFuayA9IFVfQ0hBUl9DQVRFR09SWV9DT1VOVCwKLSAgICAgIG9mZnNldF9zcGFjZSA9IFVfQ0hBUl9DQVRFR09SWV9DT1VOVCsxLAotICAgICAgb2Zmc2V0X3hkaWdpdCA9IFVfQ0hBUl9DQVRFR09SWV9DT1VOVCsyLAotICAgICAgb2Zmc2V0X3VuZGVyc2NvcmUgPSBVX0NIQVJfQ0FURUdPUllfQ09VTlQrMywKLSAgICAgIG9mZnNldF91bmljb2RlID0gVV9DSEFSX0NBVEVHT1JZX0NPVU5UKzQsCi0gICAgICBvZmZzZXRfYW55ID0gVV9DSEFSX0NBVEVHT1JZX0NPVU5UKzUsCi0gICAgICBvZmZzZXRfYXNjaWkgPSBVX0NIQVJfQ0FURUdPUllfQ09VTlQrNiwKLSAgICAgIG9mZnNldF9ob3Jpem9udGFsID0gVV9DSEFSX0NBVEVHT1JZX0NPVU5UKzcsCi0gICAgICBvZmZzZXRfdmVydGljYWwgPSBVX0NIQVJfQ0FURUdPUllfQ09VTlQrOAotICAgfTsKLQotICAgLy8KLSAgIC8vIGFuZCBub3cgdGhlIG1hc2tzOgotICAgLy8KLSAgIHN0YXRpYyBjb25zdCBjaGFyX2NsYXNzX3R5cGUgbWFza19ibGFuazsKLSAgIHN0YXRpYyBjb25zdCBjaGFyX2NsYXNzX3R5cGUgbWFza19zcGFjZTsKLSAgIHN0YXRpYyBjb25zdCBjaGFyX2NsYXNzX3R5cGUgbWFza194ZGlnaXQ7Ci0gICBzdGF0aWMgY29uc3QgY2hhcl9jbGFzc190eXBlIG1hc2tfdW5kZXJzY29yZTsKLSAgIHN0YXRpYyBjb25zdCBjaGFyX2NsYXNzX3R5cGUgbWFza191bmljb2RlOwotICAgc3RhdGljIGNvbnN0IGNoYXJfY2xhc3NfdHlwZSBtYXNrX2FueTsKLSAgIHN0YXRpYyBjb25zdCBjaGFyX2NsYXNzX3R5cGUgbWFza19hc2NpaTsKLSAgIHN0YXRpYyBjb25zdCBjaGFyX2NsYXNzX3R5cGUgbWFza19ob3Jpem9udGFsOwotICAgc3RhdGljIGNvbnN0IGNoYXJfY2xhc3NfdHlwZSBtYXNrX3ZlcnRpY2FsOwotCi0gICBzdGF0aWMgY2hhcl9jbGFzc190eXBlIGxvb2t1cF9pY3VfbWFzayhjb25zdCA6OlVDaGFyMzIqIHAxLCBjb25zdCA6OlVDaGFyMzIqIHAyKTsKLQotICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6aWN1X3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbj4gbV9waW1wbDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vCi0vLyB0ZW1wbGF0ZSBpbnN0YW5jZXM6Ci0vLwotI2RlZmluZSBORE5CT09TVF9SRUdFWF9DSEFSX1QgVUNoYXIzMgotI3VuZGVmIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19UCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19UICwgaWN1X3JlZ2V4X3RyYWl0cwotI2RlZmluZSBORE5CT09TVF9SRUdFWF9JQ1VfSU5TVEFOQ0VTCi0jaWZkZWYgTkROQk9PU1RfUkVHRVhfSUNVX0lOU1RBTlRJQVRFCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfSU5TVEFOVElBVEUKLSNlbmRpZgotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L2luc3RhbmNlcy5ocHA+Ci0jdW5kZWYgTkROQk9PU1RfUkVHRVhfQ0hBUl9UCi0jdW5kZWYgTkROQk9PU1RfUkVHRVhfVFJBSVRTX1QKLSN1bmRlZiBORE5CT09TVF9SRUdFWF9JQ1VfSU5TVEFOQ0VTCi0jaWZkZWYgTkROQk9PU1RfUkVHRVhfSU5TVEFOVElBVEUKLSMgIHVuZGVmIE5ETkJPT1NUX1JFR0VYX0lOU1RBTlRJQVRFCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotCi0vLyB0eXBlczoKLXR5cGVkZWYgYmFzaWNfcmVnZXg8IDo6VUNoYXIzMiwgaWN1X3JlZ2V4X3RyYWl0cz4gdTMycmVnZXg7Ci10eXBlZGVmIG1hdGNoX3Jlc3VsdHM8Y29uc3QgOjpVQ2hhcjMyKj4gdTMybWF0Y2g7Ci10eXBlZGVmIG1hdGNoX3Jlc3VsdHM8Y29uc3QgOjpVQ2hhcio+IHUxNm1hdGNoOwotCi0vLwotLy8gQ29uc3RydWN0aW9uIG9mIDMyLWJpdCByZWdleCB0eXBlcyBmcm9tIFVURi04IGFuZCBVVEYtMTYgcHJpbWl0aXZlczoKLS8vCi1uYW1lc3BhY2UgcmVfZGV0YWlsewotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFUykgJiYgIWRlZmluZWQoX19JQk1DUFBfXykKLXRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0ZXJhdG9yPgotaW5saW5lIHUzMnJlZ2V4IGRvX21ha2VfdTMycmVnZXgoSW5wdXRJdGVyYXRvciBpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElucHV0SXRlcmF0b3IgaiwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3B0aW9uX3R5cGUgb3B0LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5kbmJvb3N0OjptcGw6OmludF88MT4qKQotewotICAgdHlwZWRlZiBuZG5ib29zdDo6dThfdG9fdTMyX2l0ZXJhdG9yPElucHV0SXRlcmF0b3IsIFVDaGFyMzI+IGNvbnZfdHlwZTsKLSAgIHJldHVybiB1MzJyZWdleChjb252X3R5cGUoaSwgaSwgaiksIGNvbnZfdHlwZShqLCBpLCBqKSwgb3B0KTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIElucHV0SXRlcmF0b3I+Ci1pbmxpbmUgdTMycmVnZXggZG9fbWFrZV91MzJyZWdleChJbnB1dEl0ZXJhdG9yIGksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXRJdGVyYXRvciBqLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OnN5bnRheF9vcHRpb25fdHlwZSBvcHQsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmRuYm9vc3Q6Om1wbDo6aW50XzwyPiopCi17Ci0gICB0eXBlZGVmIG5kbmJvb3N0Ojp1MTZfdG9fdTMyX2l0ZXJhdG9yPElucHV0SXRlcmF0b3IsIFVDaGFyMzI+IGNvbnZfdHlwZTsKLSAgIHJldHVybiB1MzJyZWdleChjb252X3R5cGUoaSwgaSwgaiksIGNvbnZfdHlwZShqLCBpLCBqKSwgb3B0KTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIElucHV0SXRlcmF0b3I+Ci1pbmxpbmUgdTMycmVnZXggZG9fbWFrZV91MzJyZWdleChJbnB1dEl0ZXJhdG9yIGksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXRJdGVyYXRvciBqLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OnN5bnRheF9vcHRpb25fdHlwZSBvcHQsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmRuYm9vc3Q6Om1wbDo6aW50Xzw0PiopCi17Ci0gICByZXR1cm4gdTMycmVnZXgoaSwgaiwgb3B0KTsKLX0KLSNlbHNlCi10ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvcj4KLWlubGluZSB1MzJyZWdleCBkb19tYWtlX3UzMnJlZ2V4KElucHV0SXRlcmF0b3IgaSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnB1dEl0ZXJhdG9yIGosIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wdGlvbl90eXBlIG9wdCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZG5ib29zdDo6bXBsOjppbnRfPDE+KikKLXsKLSAgIHR5cGVkZWYgbmRuYm9vc3Q6OnU4X3RvX3UzMl9pdGVyYXRvcjxJbnB1dEl0ZXJhdG9yLCBVQ2hhcjMyPiBjb252X3R5cGU7Ci0gICB0eXBlZGVmIHN0ZDo6dmVjdG9yPFVDaGFyMzI+IHZlY3Rvcl90eXBlOwotICAgdmVjdG9yX3R5cGUgdjsKLSAgIGNvbnZfdHlwZSBhKGksIGksIGopLCBiKGosIGksIGopOwotICAgd2hpbGUoYSAhPSBiKQotICAgewotICAgICAgdi5wdXNoX2JhY2soKmEpOwotICAgICAgKythOwotICAgfQotICAgaWYodi5zaXplKCkpCi0gICAgICByZXR1cm4gdTMycmVnZXgoJip2LmJlZ2luKCksIHYuc2l6ZSgpLCBvcHQpOwotICAgcmV0dXJuIHUzMnJlZ2V4KHN0YXRpY19jYXN0PFVDaGFyMzIgY29uc3QqPigwKSwgc3RhdGljX2Nhc3Q8dTMycmVnZXg6OnNpemVfdHlwZT4oMCksIG9wdCk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0ZXJhdG9yPgotaW5saW5lIHUzMnJlZ2V4IGRvX21ha2VfdTMycmVnZXgoSW5wdXRJdGVyYXRvciBpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElucHV0SXRlcmF0b3IgaiwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3B0aW9uX3R5cGUgb3B0LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5kbmJvb3N0OjptcGw6OmludF88Mj4qKQotewotICAgdHlwZWRlZiBuZG5ib29zdDo6dTE2X3RvX3UzMl9pdGVyYXRvcjxJbnB1dEl0ZXJhdG9yLCBVQ2hhcjMyPiBjb252X3R5cGU7Ci0gICB0eXBlZGVmIHN0ZDo6dmVjdG9yPFVDaGFyMzI+IHZlY3Rvcl90eXBlOwotICAgdmVjdG9yX3R5cGUgdjsKLSAgIGNvbnZfdHlwZSBhKGksIGksIGopLCBiKGosIGksIGopOwotICAgd2hpbGUoYSAhPSBiKQotICAgewotICAgICAgdi5wdXNoX2JhY2soKmEpOwotICAgICAgKythOwotICAgfQotICAgaWYodi5zaXplKCkpCi0gICAgICByZXR1cm4gdTMycmVnZXgoJip2LmJlZ2luKCksIHYuc2l6ZSgpLCBvcHQpOwotICAgcmV0dXJuIHUzMnJlZ2V4KHN0YXRpY19jYXN0PFVDaGFyMzIgY29uc3QqPigwKSwgc3RhdGljX2Nhc3Q8dTMycmVnZXg6OnNpemVfdHlwZT4oMCksIG9wdCk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0ZXJhdG9yPgotaW5saW5lIHUzMnJlZ2V4IGRvX21ha2VfdTMycmVnZXgoSW5wdXRJdGVyYXRvciBpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElucHV0SXRlcmF0b3IgaiwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3B0aW9uX3R5cGUgb3B0LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5kbmJvb3N0OjptcGw6OmludF88ND4qKQotewotICAgdHlwZWRlZiBzdGQ6OnZlY3RvcjxVQ2hhcjMyPiB2ZWN0b3JfdHlwZTsKLSAgIHZlY3Rvcl90eXBlIHY7Ci0gICB3aGlsZShpICE9IGopCi0gICB7Ci0gICAgICB2LnB1c2hfYmFjaygoVUNoYXIzMikoKmkpKTsKLSAgICAgICsraTsKLSAgIH0KLSAgIGlmKHYuc2l6ZSgpKQotICAgICAgcmV0dXJuIHUzMnJlZ2V4KCYqdi5iZWdpbigpLCB2LnNpemUoKSwgb3B0KTsKLSAgIHJldHVybiB1MzJyZWdleChzdGF0aWNfY2FzdDxVQ2hhcjMyIGNvbnN0Kj4oMCksIHN0YXRpY19jYXN0PHUzMnJlZ2V4OjpzaXplX3R5cGU+KDApLCBvcHQpOwotfQotI2VuZGlmCi19Ci0KLS8vCi0vLyBDb25zdHJ1Y3Rpb24gZnJvbSBhbiBpdGVyYXRvciBwYWlyOgotLy8KLXRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0ZXJhdG9yPgotaW5saW5lIHUzMnJlZ2V4IG1ha2VfdTMycmVnZXgoSW5wdXRJdGVyYXRvciBpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElucHV0SXRlcmF0b3IgaiwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3B0aW9uX3R5cGUgb3B0KQotewotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fbWFrZV91MzJyZWdleChpLCBqLCBvcHQsIHN0YXRpY19jYXN0PG5kbmJvb3N0OjptcGw6OmludF88c2l6ZW9mKCppKT4gY29uc3QqPigwKSk7Ci19Ci0vLwotLy8gY29uc3RydWN0aW9uIGZyb20gVVRGLTggbnVsLXRlcm1pbmF0ZWQgc3RyaW5nczoKLS8vCi1pbmxpbmUgdTMycmVnZXggbWFrZV91MzJyZWdleChjb25zdCBjaGFyKiBwLCBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3B0aW9uX3R5cGUgb3B0ID0gbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6cGVybCkKLXsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX21ha2VfdTMycmVnZXgocCwgcCArIHN0ZDo6c3RybGVuKHApLCBvcHQsIHN0YXRpY19jYXN0PG5kbmJvb3N0OjptcGw6OmludF88MT4gY29uc3QqPigwKSk7Ci19Ci1pbmxpbmUgdTMycmVnZXggbWFrZV91MzJyZWdleChjb25zdCB1bnNpZ25lZCBjaGFyKiBwLCBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3B0aW9uX3R5cGUgb3B0ID0gbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6cGVybCkKLXsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX21ha2VfdTMycmVnZXgocCwgcCArIHN0ZDo6c3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHApKSwgb3B0LCBzdGF0aWNfY2FzdDxuZG5ib29zdDo6bXBsOjppbnRfPDE+IGNvbnN0Kj4oMCkpOwotfQotLy8KLS8vIGNvbnN0cnVjdGlvbiBmcm9tIFVURi0xNiBudWwtdGVybWluYXRlZCBzdHJpbmdzOgotLy8KLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi1pbmxpbmUgdTMycmVnZXggbWFrZV91MzJyZWdleChjb25zdCB3Y2hhcl90KiBwLCBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3B0aW9uX3R5cGUgb3B0ID0gbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6cGVybCkKLXsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX21ha2VfdTMycmVnZXgocCwgcCArIHN0ZDo6d2NzbGVuKHApLCBvcHQsIHN0YXRpY19jYXN0PG5kbmJvb3N0OjptcGw6OmludF88c2l6ZW9mKHdjaGFyX3QpPiBjb25zdCo+KDApKTsKLX0KLSNlbmRpZgotI2lmICFkZWZpbmVkKFVfV0NIQVJfSVNfVVRGMTYpICYmIChVX1NJWkVPRl9XQ0hBUl9UICE9IDIpCi1pbmxpbmUgdTMycmVnZXggbWFrZV91MzJyZWdleChjb25zdCBVQ2hhciogcCwgbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wdGlvbl90eXBlIG9wdCA9IG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OnBlcmwpCi17Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19tYWtlX3UzMnJlZ2V4KHAsIHAgKyB1X3N0cmxlbihwKSwgb3B0LCBzdGF0aWNfY2FzdDxuZG5ib29zdDo6bXBsOjppbnRfPDI+IGNvbnN0Kj4oMCkpOwotfQotI2VuZGlmCi0vLwotLy8gY29uc3RydWN0aW9uIGZyb20gYmFzaWNfc3RyaW5nIGNsYXNzLXRlbXBsYXRlOgotLy8KLXRlbXBsYXRlPGNsYXNzIEMsIGNsYXNzIFQsIGNsYXNzIEE+Ci1pbmxpbmUgdTMycmVnZXggbWFrZV91MzJyZWdleChjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxDLCBULCBBPiYgcywgbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wdGlvbl90eXBlIG9wdCA9IG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OnBlcmwpCi17Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19tYWtlX3UzMnJlZ2V4KHMuYmVnaW4oKSwgcy5lbmQoKSwgb3B0LCBzdGF0aWNfY2FzdDxuZG5ib29zdDo6bXBsOjppbnRfPHNpemVvZihDKT4gY29uc3QqPigwKSk7Ci19Ci0vLwotLy8gQ29uc3RydWN0aW9uIGZyb20gSUNVIHN0cmluZyB0eXBlOgotLy8KLWlubGluZSB1MzJyZWdleCBtYWtlX3UzMnJlZ2V4KGNvbnN0IFVfTkFNRVNQQUNFX1FVQUxJRklFUiBVbmljb2RlU3RyaW5nJiBzLCBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3B0aW9uX3R5cGUgb3B0ID0gbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6cGVybCkKLXsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX21ha2VfdTMycmVnZXgocy5nZXRCdWZmZXIoKSwgcy5nZXRCdWZmZXIoKSArIHMubGVuZ3RoKCksIG9wdCwgc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6Om1wbDo6aW50XzwyPiBjb25zdCo+KDApKTsKLX0KLQotLy8KLS8vIHJlZ2V4X21hdGNoIG92ZXJsb2FkcyB0aGF0IHdpZGVuIHRoZSBjaGFyYWN0ZXIgdHlwZSBhcyBhcHByb3ByaWF0ZToKLS8vCi1uYW1lc3BhY2UgcmVfZGV0YWlsewotdGVtcGxhdGU8Y2xhc3MgTVIxLCBjbGFzcyBNUjI+Ci12b2lkIGNvcHlfcmVzdWx0cyhNUjEmIG91dCwgTVIyIGNvbnN0JiBpbikKLXsKLSAgIC8vIGNvcHkgcmVzdWx0cyBmcm9tIGFuIGFkYXB0ZWQgTVIyIG1hdGNoX3Jlc3VsdHM6Ci0gICBvdXQuc2V0X3NpemUoaW4uc2l6ZSgpLCBpbi5wcmVmaXgoKS5maXJzdC5iYXNlKCksIGluLnN1ZmZpeCgpLnNlY29uZC5iYXNlKCkpOwotICAgb3V0LnNldF9iYXNlKGluLmJhc2UoKS5iYXNlKCkpOwotICAgZm9yKGludCBpID0gMDsgaSA8IChpbnQpaW4uc2l6ZSgpOyArK2kpCi0gICB7Ci0gICAgICBpZihpbltpXS5tYXRjaGVkKQotICAgICAgewotICAgICAgICAgb3V0LnNldF9maXJzdChpbltpXS5maXJzdC5iYXNlKCksIGkpOwotICAgICAgICAgb3V0LnNldF9zZWNvbmQoaW5baV0uc2Vjb25kLmJhc2UoKSwgaSk7Ci0gICAgICB9Ci0gICB9Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvcj4KLWlubGluZSBib29sIGRvX3JlZ2V4X21hdGNoKEJpZGlJdGVyYXRvciBmaXJzdCwgQmlkaUl0ZXJhdG9yIGxhc3QsIAotICAgICAgICAgICAgICAgICBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yPiYgbSwgCi0gICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzLAotICAgICAgICAgICAgICAgICBuZG5ib29zdDo6bXBsOjppbnRfPDQ+IGNvbnN0KikKLXsKLSAgIHJldHVybiA6Om5kbmJvb3N0OjpyZWdleF9tYXRjaChmaXJzdCwgbGFzdCwgbSwgZSwgZmxhZ3MpOwotfQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yPgotYm9vbCBkb19yZWdleF9tYXRjaChCaWRpSXRlcmF0b3IgZmlyc3QsIEJpZGlJdGVyYXRvciBsYXN0LCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvcj4mIG0sIAotICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncywKLSAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6Om1wbDo6aW50XzwyPiBjb25zdCopCi17Ci0gICB0eXBlZGVmIHUxNl90b191MzJfaXRlcmF0b3I8QmlkaUl0ZXJhdG9yLCBVQ2hhcjMyPiBjb252X3R5cGU7Ci0gICB0eXBlZGVmIG1hdGNoX3Jlc3VsdHM8Y29udl90eXBlPiAgICAgICAgICAgICAgICAgICBtYXRjaF90eXBlOwotICAgLy90eXBlZGVmIHR5cGVuYW1lIG1hdGNoX3R5cGU6OmFsbG9jYXRvcl90eXBlICAgICAgICBhbGxvY190eXBlOwotICAgbWF0Y2hfdHlwZSB3aGF0OwotICAgYm9vbCByZXN1bHQgPSA6Om5kbmJvb3N0OjpyZWdleF9tYXRjaChjb252X3R5cGUoZmlyc3QsIGZpcnN0LCBsYXN0KSwgY29udl90eXBlKGxhc3QsIGZpcnN0LCBsYXN0KSwgd2hhdCwgZSwgZmxhZ3MpOwotICAgLy8gY29weSByZXN1bHRzIGFjcm9zcyB0byBtOgotICAgaWYocmVzdWx0KSBjb3B5X3Jlc3VsdHMobSwgd2hhdCk7Ci0gICByZXR1cm4gcmVzdWx0OwotfQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yPgotYm9vbCBkb19yZWdleF9tYXRjaChCaWRpSXRlcmF0b3IgZmlyc3QsIEJpZGlJdGVyYXRvciBsYXN0LCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvcj4mIG0sIAotICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncywKLSAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6Om1wbDo6aW50XzwxPiBjb25zdCopCi17Ci0gICB0eXBlZGVmIHU4X3RvX3UzMl9pdGVyYXRvcjxCaWRpSXRlcmF0b3IsIFVDaGFyMzI+ICBjb252X3R5cGU7Ci0gICB0eXBlZGVmIG1hdGNoX3Jlc3VsdHM8Y29udl90eXBlPiAgICAgICAgICAgICAgICAgICBtYXRjaF90eXBlOwotICAgLy90eXBlZGVmIHR5cGVuYW1lIG1hdGNoX3R5cGU6OmFsbG9jYXRvcl90eXBlICAgICAgICBhbGxvY190eXBlOwotICAgbWF0Y2hfdHlwZSB3aGF0OwotICAgYm9vbCByZXN1bHQgPSA6Om5kbmJvb3N0OjpyZWdleF9tYXRjaChjb252X3R5cGUoZmlyc3QsIGZpcnN0LCBsYXN0KSwgY29udl90eXBlKGxhc3QsIGZpcnN0LCBsYXN0KSwgd2hhdCwgZSwgZmxhZ3MpOwotICAgLy8gY29weSByZXN1bHRzIGFjcm9zcyB0byBtOgotICAgaWYocmVzdWx0KSBjb3B5X3Jlc3VsdHMobSwgd2hhdCk7Ci0gICByZXR1cm4gcmVzdWx0OwotfQotfSAvLyBuYW1lc3BhY2UgcmVfZGV0YWlsCi0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvcj4KLWlubGluZSBib29sIHUzMnJlZ2V4X21hdGNoKEJpZGlJdGVyYXRvciBmaXJzdCwgQmlkaUl0ZXJhdG9yIGxhc3QsIAotICAgICAgICAgICAgICAgICBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yPiYgbSwgCi0gICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X21hdGNoKGZpcnN0LCBsYXN0LCBtLCBlLCBmbGFncywgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPHNpemVvZigqZmlyc3QpPiBjb25zdCo+KDApKTsKLX0KLWlubGluZSBib29sIHUzMnJlZ2V4X21hdGNoKGNvbnN0IFVDaGFyKiBwLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxjb25zdCBVQ2hhcio+JiBtLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fcmVnZXhfbWF0Y2gocCwgcCt1X3N0cmxlbihwKSwgbSwgZSwgZmxhZ3MsIHN0YXRpY19jYXN0PG1wbDo6aW50XzwyPiBjb25zdCo+KDApKTsKLX0KLSNpZiAhZGVmaW5lZChVX1dDSEFSX0lTX1VURjE2KSAmJiAoVV9TSVpFT0ZfV0NIQVJfVCAhPSAyKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19XUkVHRVgpCi1pbmxpbmUgYm9vbCB1MzJyZWdleF9tYXRjaChjb25zdCB3Y2hhcl90KiBwLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxjb25zdCB3Y2hhcl90Kj4mIG0sIAotICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9tYXRjaChwLCBwK3N0ZDo6d2NzbGVuKHApLCBtLCBlLCBmbGFncywgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPHNpemVvZih3Y2hhcl90KT4gY29uc3QqPigwKSk7Ci19Ci0jZW5kaWYKLWlubGluZSBib29sIHUzMnJlZ2V4X21hdGNoKGNvbnN0IGNoYXIqIHAsIAotICAgICAgICAgICAgICAgICBtYXRjaF9yZXN1bHRzPGNvbnN0IGNoYXIqPiYgbSwgCi0gICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X21hdGNoKHAsIHArc3RkOjpzdHJsZW4ocCksIG0sIGUsIGZsYWdzLCBzdGF0aWNfY2FzdDxtcGw6OmludF88MT4gY29uc3QqPigwKSk7Ci19Ci1pbmxpbmUgYm9vbCB1MzJyZWdleF9tYXRjaChjb25zdCB1bnNpZ25lZCBjaGFyKiBwLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxjb25zdCB1bnNpZ25lZCBjaGFyKj4mIG0sIAotICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9tYXRjaChwLCBwK3N0ZDo6c3RybGVuKChjb25zdCBjaGFyKilwKSwgbSwgZSwgZmxhZ3MsIHN0YXRpY19jYXN0PG1wbDo6aW50XzwxPiBjb25zdCo+KDApKTsKLX0KLWlubGluZSBib29sIHUzMnJlZ2V4X21hdGNoKGNvbnN0IHN0ZDo6c3RyaW5nJiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8c3RkOjpzdHJpbmc6OmNvbnN0X2l0ZXJhdG9yPiYgbSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fcmVnZXhfbWF0Y2gocy5iZWdpbigpLCBzLmVuZCgpLCBtLCBlLCBmbGFncywgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPDE+IGNvbnN0Kj4oMCkpOwotfQotI2lmbmRlZiBORE5CT09TVF9OT19TVERfV1NUUklORwotaW5saW5lIGJvb2wgdTMycmVnZXhfbWF0Y2goY29uc3Qgc3RkOjp3c3RyaW5nJiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8c3RkOjp3c3RyaW5nOjpjb25zdF9pdGVyYXRvcj4mIG0sIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X21hdGNoKHMuYmVnaW4oKSwgcy5lbmQoKSwgbSwgZSwgZmxhZ3MsIHN0YXRpY19jYXN0PG1wbDo6aW50XzxzaXplb2Yod2NoYXJfdCk+IGNvbnN0Kj4oMCkpOwotfQotI2VuZGlmCi1pbmxpbmUgYm9vbCB1MzJyZWdleF9tYXRjaChjb25zdCBVX05BTUVTUEFDRV9RVUFMSUZJRVIgVW5pY29kZVN0cmluZyYgcywgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9yZXN1bHRzPGNvbnN0IFVDaGFyKj4mIG0sIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X21hdGNoKHMuZ2V0QnVmZmVyKCksIHMuZ2V0QnVmZmVyKCkgKyBzLmxlbmd0aCgpLCBtLCBlLCBmbGFncywgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPHNpemVvZih3Y2hhcl90KT4gY29uc3QqPigwKSk7Ci19Ci0vLwotLy8gcmVnZXhfbWF0Y2ggb3ZlcmxvYWRzIHRoYXQgZG8gbm90IHJldHVybiB3aGF0IG1hdGNoZWQ6Ci0vLwotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvcj4KLWlubGluZSBib29sIHUzMnJlZ2V4X21hdGNoKEJpZGlJdGVyYXRvciBmaXJzdCwgQmlkaUl0ZXJhdG9yIGxhc3QsIAotICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvcj4gbTsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X21hdGNoKGZpcnN0LCBsYXN0LCBtLCBlLCBmbGFncywgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPHNpemVvZigqZmlyc3QpPiBjb25zdCo+KDApKTsKLX0KLWlubGluZSBib29sIHUzMnJlZ2V4X21hdGNoKGNvbnN0IFVDaGFyKiBwLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxjb25zdCBVQ2hhcio+IG07Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9tYXRjaChwLCBwK3Vfc3RybGVuKHApLCBtLCBlLCBmbGFncywgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPDI+IGNvbnN0Kj4oMCkpOwotfQotI2lmICFkZWZpbmVkKFVfV0NIQVJfSVNfVVRGMTYpICYmIChVX1NJWkVPRl9XQ0hBUl9UICE9IDIpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1dSRUdFWCkKLWlubGluZSBib29sIHUzMnJlZ2V4X21hdGNoKGNvbnN0IHdjaGFyX3QqIHAsIAotICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPGNvbnN0IHdjaGFyX3QqPiBtOwotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fcmVnZXhfbWF0Y2gocCwgcCtzdGQ6Ondjc2xlbihwKSwgbSwgZSwgZmxhZ3MsIHN0YXRpY19jYXN0PG1wbDo6aW50XzxzaXplb2Yod2NoYXJfdCk+IGNvbnN0Kj4oMCkpOwotfQotI2VuZGlmCi1pbmxpbmUgYm9vbCB1MzJyZWdleF9tYXRjaChjb25zdCBjaGFyKiBwLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxjb25zdCBjaGFyKj4gbTsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X21hdGNoKHAsIHArc3RkOjpzdHJsZW4ocCksIG0sIGUsIGZsYWdzLCBzdGF0aWNfY2FzdDxtcGw6OmludF88MT4gY29uc3QqPigwKSk7Ci19Ci1pbmxpbmUgYm9vbCB1MzJyZWdleF9tYXRjaChjb25zdCB1bnNpZ25lZCBjaGFyKiBwLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxjb25zdCB1bnNpZ25lZCBjaGFyKj4gbTsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X21hdGNoKHAsIHArc3RkOjpzdHJsZW4oKGNvbnN0IGNoYXIqKXApLCBtLCBlLCBmbGFncywgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPDE+IGNvbnN0Kj4oMCkpOwotfQotaW5saW5lIGJvb2wgdTMycmVnZXhfbWF0Y2goY29uc3Qgc3RkOjpzdHJpbmcmIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8c3RkOjpzdHJpbmc6OmNvbnN0X2l0ZXJhdG9yPiBtOwotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fcmVnZXhfbWF0Y2gocy5iZWdpbigpLCBzLmVuZCgpLCBtLCBlLCBmbGFncywgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPDE+IGNvbnN0Kj4oMCkpOwotfQotI2lmbmRlZiBORE5CT09TVF9OT19TVERfV1NUUklORwotaW5saW5lIGJvb2wgdTMycmVnZXhfbWF0Y2goY29uc3Qgc3RkOjp3c3RyaW5nJiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPHN0ZDo6d3N0cmluZzo6Y29uc3RfaXRlcmF0b3I+IG07Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9tYXRjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzLCBzdGF0aWNfY2FzdDxtcGw6OmludF88c2l6ZW9mKHdjaGFyX3QpPiBjb25zdCo+KDApKTsKLX0KLSNlbmRpZgotaW5saW5lIGJvb2wgdTMycmVnZXhfbWF0Y2goY29uc3QgVV9OQU1FU1BBQ0VfUVVBTElGSUVSIFVuaWNvZGVTdHJpbmcmIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8Y29uc3QgVUNoYXIqPiBtOwotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fcmVnZXhfbWF0Y2gocy5nZXRCdWZmZXIoKSwgcy5nZXRCdWZmZXIoKSArIHMubGVuZ3RoKCksIG0sIGUsIGZsYWdzLCBzdGF0aWNfY2FzdDxtcGw6OmludF88c2l6ZW9mKHdjaGFyX3QpPiBjb25zdCo+KDApKTsKLX0KLQotLy8KLS8vIHJlZ2V4X3NlYXJjaCBvdmVybG9hZHMgdGhhdCB3aWRlbiB0aGUgY2hhcmFjdGVyIHR5cGUgYXMgYXBwcm9wcmlhdGU6Ci0vLwotbmFtZXNwYWNlIHJlX2RldGFpbHsKLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvcj4KLWlubGluZSBib29sIGRvX3JlZ2V4X3NlYXJjaChCaWRpSXRlcmF0b3IgZmlyc3QsIEJpZGlJdGVyYXRvciBsYXN0LCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvcj4mIG0sIAotICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncywKLSAgICAgICAgICAgICAgICAgQmlkaUl0ZXJhdG9yIGJhc2UsCi0gICAgICAgICAgICAgICAgIG5kbmJvb3N0OjptcGw6OmludF88ND4gY29uc3QqKQotewotICAgcmV0dXJuIDo6bmRuYm9vc3Q6OnJlZ2V4X3NlYXJjaChmaXJzdCwgbGFzdCwgbSwgZSwgZmxhZ3MsIGJhc2UpOwotfQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yPgotYm9vbCBkb19yZWdleF9zZWFyY2goQmlkaUl0ZXJhdG9yIGZpcnN0LCBCaWRpSXRlcmF0b3IgbGFzdCwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+JiBtLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MsCi0gICAgICAgICAgICAgICAgIEJpZGlJdGVyYXRvciBiYXNlLAotICAgICAgICAgICAgICAgICBuZG5ib29zdDo6bXBsOjppbnRfPDI+IGNvbnN0KikKLXsKLSAgIHR5cGVkZWYgdTE2X3RvX3UzMl9pdGVyYXRvcjxCaWRpSXRlcmF0b3IsIFVDaGFyMzI+IGNvbnZfdHlwZTsKLSAgIHR5cGVkZWYgbWF0Y2hfcmVzdWx0czxjb252X3R5cGU+ICAgICAgICAgICAgICAgICAgIG1hdGNoX3R5cGU7Ci0gICAvL3R5cGVkZWYgdHlwZW5hbWUgbWF0Y2hfdHlwZTo6YWxsb2NhdG9yX3R5cGUgICAgICAgIGFsbG9jX3R5cGU7Ci0gICBtYXRjaF90eXBlIHdoYXQ7Ci0gICBib29sIHJlc3VsdCA9IDo6bmRuYm9vc3Q6OnJlZ2V4X3NlYXJjaChjb252X3R5cGUoZmlyc3QsIGZpcnN0LCBsYXN0KSwgY29udl90eXBlKGxhc3QsIGZpcnN0LCBsYXN0KSwgd2hhdCwgZSwgZmxhZ3MsIGNvbnZfdHlwZShiYXNlKSk7Ci0gICAvLyBjb3B5IHJlc3VsdHMgYWNyb3NzIHRvIG06Ci0gICBpZihyZXN1bHQpIGNvcHlfcmVzdWx0cyhtLCB3aGF0KTsKLSAgIHJldHVybiByZXN1bHQ7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3I+Ci1ib29sIGRvX3JlZ2V4X3NlYXJjaChCaWRpSXRlcmF0b3IgZmlyc3QsIEJpZGlJdGVyYXRvciBsYXN0LCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvcj4mIG0sIAotICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncywKLSAgICAgICAgICAgICAgICAgQmlkaUl0ZXJhdG9yIGJhc2UsCi0gICAgICAgICAgICAgICAgIG5kbmJvb3N0OjptcGw6OmludF88MT4gY29uc3QqKQotewotICAgdHlwZWRlZiB1OF90b191MzJfaXRlcmF0b3I8QmlkaUl0ZXJhdG9yLCBVQ2hhcjMyPiAgY29udl90eXBlOwotICAgdHlwZWRlZiBtYXRjaF9yZXN1bHRzPGNvbnZfdHlwZT4gICAgICAgICAgICAgICAgICAgbWF0Y2hfdHlwZTsKLSAgIC8vdHlwZWRlZiB0eXBlbmFtZSBtYXRjaF90eXBlOjphbGxvY2F0b3JfdHlwZSAgICAgICAgYWxsb2NfdHlwZTsKLSAgIG1hdGNoX3R5cGUgd2hhdDsKLSAgIGJvb2wgcmVzdWx0ID0gOjpuZG5ib29zdDo6cmVnZXhfc2VhcmNoKGNvbnZfdHlwZShmaXJzdCwgZmlyc3QsIGxhc3QpLCBjb252X3R5cGUobGFzdCwgZmlyc3QsIGxhc3QpLCB3aGF0LCBlLCBmbGFncywgY29udl90eXBlKGJhc2UpKTsKLSAgIC8vIGNvcHkgcmVzdWx0cyBhY3Jvc3MgdG8gbToKLSAgIGlmKHJlc3VsdCkgY29weV9yZXN1bHRzKG0sIHdoYXQpOwotICAgcmV0dXJuIHJlc3VsdDsKLX0KLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yPgotaW5saW5lIGJvb2wgdTMycmVnZXhfc2VhcmNoKEJpZGlJdGVyYXRvciBmaXJzdCwgQmlkaUl0ZXJhdG9yIGxhc3QsIAotICAgICAgICAgICAgICAgICBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yPiYgbSwgCi0gICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X3NlYXJjaChmaXJzdCwgbGFzdCwgbSwgZSwgZmxhZ3MsIGZpcnN0LCBzdGF0aWNfY2FzdDxtcGw6OmludF88c2l6ZW9mKCpmaXJzdCk+IGNvbnN0Kj4oMCkpOwotfQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yPgotaW5saW5lIGJvb2wgdTMycmVnZXhfc2VhcmNoKEJpZGlJdGVyYXRvciBmaXJzdCwgQmlkaUl0ZXJhdG9yIGxhc3QsIAotICAgICAgICAgICAgICAgICBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yPiYgbSwgCi0gICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzLAotICAgICAgICAgICAgICAgICBCaWRpSXRlcmF0b3IgYmFzZSkKLXsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X3NlYXJjaChmaXJzdCwgbGFzdCwgbSwgZSwgZmxhZ3MsIGJhc2UsIHN0YXRpY19jYXN0PG1wbDo6aW50XzxzaXplb2YoKmZpcnN0KT4gY29uc3QqPigwKSk7Ci19Ci1pbmxpbmUgYm9vbCB1MzJyZWdleF9zZWFyY2goY29uc3QgVUNoYXIqIHAsIAotICAgICAgICAgICAgICAgICBtYXRjaF9yZXN1bHRzPGNvbnN0IFVDaGFyKj4mIG0sIAotICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9zZWFyY2gocCwgcCt1X3N0cmxlbihwKSwgbSwgZSwgZmxhZ3MsIHAsIHN0YXRpY19jYXN0PG1wbDo6aW50XzwyPiBjb25zdCo+KDApKTsKLX0KLSNpZiAhZGVmaW5lZChVX1dDSEFSX0lTX1VURjE2KSAmJiAoVV9TSVpFT0ZfV0NIQVJfVCAhPSAyKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19XUkVHRVgpCi1pbmxpbmUgYm9vbCB1MzJyZWdleF9zZWFyY2goY29uc3Qgd2NoYXJfdCogcCwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8Y29uc3Qgd2NoYXJfdCo+JiBtLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fcmVnZXhfc2VhcmNoKHAsIHArc3RkOjp3Y3NsZW4ocCksIG0sIGUsIGZsYWdzLCBwLCBzdGF0aWNfY2FzdDxtcGw6OmludF88c2l6ZW9mKHdjaGFyX3QpPiBjb25zdCo+KDApKTsKLX0KLSNlbmRpZgotaW5saW5lIGJvb2wgdTMycmVnZXhfc2VhcmNoKGNvbnN0IGNoYXIqIHAsIAotICAgICAgICAgICAgICAgICBtYXRjaF9yZXN1bHRzPGNvbnN0IGNoYXIqPiYgbSwgCi0gICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X3NlYXJjaChwLCBwK3N0ZDo6c3RybGVuKHApLCBtLCBlLCBmbGFncywgcCwgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPDE+IGNvbnN0Kj4oMCkpOwotfQotaW5saW5lIGJvb2wgdTMycmVnZXhfc2VhcmNoKGNvbnN0IHVuc2lnbmVkIGNoYXIqIHAsIAotICAgICAgICAgICAgICAgICBtYXRjaF9yZXN1bHRzPGNvbnN0IHVuc2lnbmVkIGNoYXIqPiYgbSwgCi0gICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X3NlYXJjaChwLCBwK3N0ZDo6c3RybGVuKChjb25zdCBjaGFyKilwKSwgbSwgZSwgZmxhZ3MsIHAsIHN0YXRpY19jYXN0PG1wbDo6aW50XzwxPiBjb25zdCo+KDApKTsKLX0KLWlubGluZSBib29sIHUzMnJlZ2V4X3NlYXJjaChjb25zdCBzdGQ6OnN0cmluZyYgcywgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9yZXN1bHRzPHN0ZDo6c3RyaW5nOjpjb25zdF9pdGVyYXRvcj4mIG0sIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X3NlYXJjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzLCBzLmJlZ2luKCksIHN0YXRpY19jYXN0PG1wbDo6aW50XzwxPiBjb25zdCo+KDApKTsKLX0KLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX1dTVFJJTkcKLWlubGluZSBib29sIHUzMnJlZ2V4X3NlYXJjaChjb25zdCBzdGQ6OndzdHJpbmcmIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxzdGQ6OndzdHJpbmc6OmNvbnN0X2l0ZXJhdG9yPiYgbSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fcmVnZXhfc2VhcmNoKHMuYmVnaW4oKSwgcy5lbmQoKSwgbSwgZSwgZmxhZ3MsIHMuYmVnaW4oKSwgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPHNpemVvZih3Y2hhcl90KT4gY29uc3QqPigwKSk7Ci19Ci0jZW5kaWYKLWlubGluZSBib29sIHUzMnJlZ2V4X3NlYXJjaChjb25zdCBVX05BTUVTUEFDRV9RVUFMSUZJRVIgVW5pY29kZVN0cmluZyYgcywgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9yZXN1bHRzPGNvbnN0IFVDaGFyKj4mIG0sIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X3NlYXJjaChzLmdldEJ1ZmZlcigpLCBzLmdldEJ1ZmZlcigpICsgcy5sZW5ndGgoKSwgbSwgZSwgZmxhZ3MsIHMuZ2V0QnVmZmVyKCksIHN0YXRpY19jYXN0PG1wbDo6aW50XzxzaXplb2Yod2NoYXJfdCk+IGNvbnN0Kj4oMCkpOwotfQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvcj4KLWlubGluZSBib29sIHUzMnJlZ2V4X3NlYXJjaChCaWRpSXRlcmF0b3IgZmlyc3QsIEJpZGlJdGVyYXRvciBsYXN0LCAKLSAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3I+IG07Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9zZWFyY2goZmlyc3QsIGxhc3QsIG0sIGUsIGZsYWdzLCBmaXJzdCwgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPHNpemVvZigqZmlyc3QpPiBjb25zdCo+KDApKTsKLX0KLWlubGluZSBib29sIHUzMnJlZ2V4X3NlYXJjaChjb25zdCBVQ2hhciogcCwgCi0gICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8Y29uc3QgVUNoYXIqPiBtOwotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fcmVnZXhfc2VhcmNoKHAsIHArdV9zdHJsZW4ocCksIG0sIGUsIGZsYWdzLCBwLCBzdGF0aWNfY2FzdDxtcGw6OmludF88Mj4gY29uc3QqPigwKSk7Ci19Ci0jaWYgIWRlZmluZWQoVV9XQ0hBUl9JU19VVEYxNikgJiYgKFVfU0laRU9GX1dDSEFSX1QgIT0gMikgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fV1JFR0VYKQotaW5saW5lIGJvb2wgdTMycmVnZXhfc2VhcmNoKGNvbnN0IHdjaGFyX3QqIHAsIAotICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPGNvbnN0IHdjaGFyX3QqPiBtOwotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fcmVnZXhfc2VhcmNoKHAsIHArc3RkOjp3Y3NsZW4ocCksIG0sIGUsIGZsYWdzLCBwLCBzdGF0aWNfY2FzdDxtcGw6OmludF88c2l6ZW9mKHdjaGFyX3QpPiBjb25zdCo+KDApKTsKLX0KLSNlbmRpZgotaW5saW5lIGJvb2wgdTMycmVnZXhfc2VhcmNoKGNvbnN0IGNoYXIqIHAsIAotICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPGNvbnN0IGNoYXIqPiBtOwotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fcmVnZXhfc2VhcmNoKHAsIHArc3RkOjpzdHJsZW4ocCksIG0sIGUsIGZsYWdzLCBwLCBzdGF0aWNfY2FzdDxtcGw6OmludF88MT4gY29uc3QqPigwKSk7Ci19Ci1pbmxpbmUgYm9vbCB1MzJyZWdleF9zZWFyY2goY29uc3QgdW5zaWduZWQgY2hhciogcCwgCi0gICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8Y29uc3QgdW5zaWduZWQgY2hhcio+IG07Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9zZWFyY2gocCwgcCtzdGQ6OnN0cmxlbigoY29uc3QgY2hhciopcCksIG0sIGUsIGZsYWdzLCBwLCBzdGF0aWNfY2FzdDxtcGw6OmludF88MT4gY29uc3QqPigwKSk7Ci19Ci1pbmxpbmUgYm9vbCB1MzJyZWdleF9zZWFyY2goY29uc3Qgc3RkOjpzdHJpbmcmIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8c3RkOjpzdHJpbmc6OmNvbnN0X2l0ZXJhdG9yPiBtOwotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fcmVnZXhfc2VhcmNoKHMuYmVnaW4oKSwgcy5lbmQoKSwgbSwgZSwgZmxhZ3MsIHMuYmVnaW4oKSwgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPDE+IGNvbnN0Kj4oMCkpOwotfQotI2lmbmRlZiBORE5CT09TVF9OT19TVERfV1NUUklORwotaW5saW5lIGJvb2wgdTMycmVnZXhfc2VhcmNoKGNvbnN0IHN0ZDo6d3N0cmluZyYgcywgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxzdGQ6OndzdHJpbmc6OmNvbnN0X2l0ZXJhdG9yPiBtOwotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fcmVnZXhfc2VhcmNoKHMuYmVnaW4oKSwgcy5lbmQoKSwgbSwgZSwgZmxhZ3MsIHMuYmVnaW4oKSwgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPHNpemVvZih3Y2hhcl90KT4gY29uc3QqPigwKSk7Ci19Ci0jZW5kaWYKLWlubGluZSBib29sIHUzMnJlZ2V4X3NlYXJjaChjb25zdCBVX05BTUVTUEFDRV9RVUFMSUZJRVIgVW5pY29kZVN0cmluZyYgcywgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxjb25zdCBVQ2hhcio+IG07Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9zZWFyY2gocy5nZXRCdWZmZXIoKSwgcy5nZXRCdWZmZXIoKSArIHMubGVuZ3RoKCksIG0sIGUsIGZsYWdzLCBzLmdldEJ1ZmZlcigpLCBzdGF0aWNfY2FzdDxtcGw6OmludF88c2l6ZW9mKHdjaGFyX3QpPiBjb25zdCo+KDApKTsKLX0KLQotLy8KLS8vIG92ZXJsb2FkcyBmb3IgcmVnZXhfcmVwbGFjZSB3aXRoIHV0Zi04IGFuZCB1dGYtMTYgZGF0YSB0eXBlczoKLS8vCi1uYW1lc3BhY2UgcmVfZGV0YWlsewotdGVtcGxhdGUgPGNsYXNzIEk+Ci1pbmxpbmUgc3RkOjpwYWlyPCBuZG5ib29zdDo6dThfdG9fdTMyX2l0ZXJhdG9yPEk+LCBuZG5ib29zdDo6dThfdG9fdTMyX2l0ZXJhdG9yPEk+ID4KLSAgIG1ha2VfdXRmMzJfc2VxKEkgaSwgSSBqLCBtcGw6OmludF88MT4gY29uc3QqKQotewotICAgcmV0dXJuIHN0ZDo6cGFpcjwgbmRuYm9vc3Q6OnU4X3RvX3UzMl9pdGVyYXRvcjxJPiwgbmRuYm9vc3Q6OnU4X3RvX3UzMl9pdGVyYXRvcjxJPiA+KG5kbmJvb3N0Ojp1OF90b191MzJfaXRlcmF0b3I8ST4oaSwgaSwgaiksIG5kbmJvb3N0Ojp1OF90b191MzJfaXRlcmF0b3I8ST4oaiwgaSwgaikpOwotfQotdGVtcGxhdGUgPGNsYXNzIEk+Ci1pbmxpbmUgc3RkOjpwYWlyPCBuZG5ib29zdDo6dTE2X3RvX3UzMl9pdGVyYXRvcjxJPiwgbmRuYm9vc3Q6OnUxNl90b191MzJfaXRlcmF0b3I8ST4gPgotICAgbWFrZV91dGYzMl9zZXEoSSBpLCBJIGosIG1wbDo6aW50XzwyPiBjb25zdCopCi17Ci0gICByZXR1cm4gc3RkOjpwYWlyPCBuZG5ib29zdDo6dTE2X3RvX3UzMl9pdGVyYXRvcjxJPiwgbmRuYm9vc3Q6OnUxNl90b191MzJfaXRlcmF0b3I8ST4gPihuZG5ib29zdDo6dTE2X3RvX3UzMl9pdGVyYXRvcjxJPihpLCBpLCBqKSwgbmRuYm9vc3Q6OnUxNl90b191MzJfaXRlcmF0b3I8ST4oaiwgaSwgaikpOwotfQotdGVtcGxhdGUgPGNsYXNzIEk+Ci1pbmxpbmUgc3RkOjpwYWlyPCBJLCBJID4KLSAgIG1ha2VfdXRmMzJfc2VxKEkgaSwgSSBqLCBtcGw6OmludF88ND4gY29uc3QqKQotewotICAgcmV0dXJuIHN0ZDo6cGFpcjwgSSwgSSA+KGksIGopOwotfQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotaW5saW5lIHN0ZDo6cGFpcjwgbmRuYm9vc3Q6OnU4X3RvX3UzMl9pdGVyYXRvcjxjb25zdCBjaGFyVCo+LCBuZG5ib29zdDo6dThfdG9fdTMyX2l0ZXJhdG9yPGNvbnN0IGNoYXJUKj4gPgotICAgbWFrZV91dGYzMl9zZXEoY29uc3QgY2hhclQqIHAsIG1wbDo6aW50XzwxPiBjb25zdCopCi17Ci0gICBzdGQ6OnNpemVfdCBsZW4gPSBzdGQ6OnN0cmxlbigoY29uc3QgY2hhciopcCk7Ci0gICByZXR1cm4gc3RkOjpwYWlyPCBuZG5ib29zdDo6dThfdG9fdTMyX2l0ZXJhdG9yPGNvbnN0IGNoYXJUKj4sIG5kbmJvb3N0Ojp1OF90b191MzJfaXRlcmF0b3I8Y29uc3QgY2hhclQqPiA+KG5kbmJvb3N0Ojp1OF90b191MzJfaXRlcmF0b3I8Y29uc3QgY2hhclQqPihwLCBwLCBwK2xlbiksIG5kbmJvb3N0Ojp1OF90b191MzJfaXRlcmF0b3I8Y29uc3QgY2hhclQqPihwK2xlbiwgcCwgcCtsZW4pKTsKLX0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLWlubGluZSBzdGQ6OnBhaXI8IG5kbmJvb3N0Ojp1MTZfdG9fdTMyX2l0ZXJhdG9yPGNvbnN0IGNoYXJUKj4sIG5kbmJvb3N0Ojp1MTZfdG9fdTMyX2l0ZXJhdG9yPGNvbnN0IGNoYXJUKj4gPgotICAgbWFrZV91dGYzMl9zZXEoY29uc3QgY2hhclQqIHAsIG1wbDo6aW50XzwyPiBjb25zdCopCi17Ci0gICBzdGQ6OnNpemVfdCBsZW4gPSB1X3N0cmxlbigoY29uc3QgVUNoYXIqKXApOwotICAgcmV0dXJuIHN0ZDo6cGFpcjwgbmRuYm9vc3Q6OnUxNl90b191MzJfaXRlcmF0b3I8Y29uc3QgY2hhclQqPiwgbmRuYm9vc3Q6OnUxNl90b191MzJfaXRlcmF0b3I8Y29uc3QgY2hhclQqPiA+KG5kbmJvb3N0Ojp1MTZfdG9fdTMyX2l0ZXJhdG9yPGNvbnN0IGNoYXJUKj4ocCwgcCwgcCArIGxlbiksIG5kbmJvb3N0Ojp1MTZfdG9fdTMyX2l0ZXJhdG9yPGNvbnN0IGNoYXJUKj4ocCtsZW4sIHAsIHAgKyBsZW4pKTsKLX0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLWlubGluZSBzdGQ6OnBhaXI8IGNvbnN0IGNoYXJUKiwgY29uc3QgY2hhclQqID4KLSAgIG1ha2VfdXRmMzJfc2VxKGNvbnN0IGNoYXJUKiBwLCBtcGw6OmludF88ND4gY29uc3QqKQotewotICAgcmV0dXJuIHN0ZDo6cGFpcjwgY29uc3QgY2hhclQqLCBjb25zdCBjaGFyVCogPihwLCBwK2ljdV9yZWdleF90cmFpdHM6Omxlbmd0aCgoVUNoYXIzMiBjb25zdCopcCkpOwotfQotdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yPgotaW5saW5lIE91dHB1dEl0ZXJhdG9yIG1ha2VfdXRmMzJfb3V0KE91dHB1dEl0ZXJhdG9yIG8sIG1wbDo6aW50Xzw0PiBjb25zdCopCi17Ci0gICByZXR1cm4gbzsKLX0KLXRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvcj4KLWlubGluZSB1dGYxNl9vdXRwdXRfaXRlcmF0b3I8T3V0cHV0SXRlcmF0b3I+IG1ha2VfdXRmMzJfb3V0KE91dHB1dEl0ZXJhdG9yIG8sIG1wbDo6aW50XzwyPiBjb25zdCopCi17Ci0gICByZXR1cm4gbzsKLX0KLXRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvcj4KLWlubGluZSB1dGY4X291dHB1dF9pdGVyYXRvcjxPdXRwdXRJdGVyYXRvcj4gbWFrZV91dGYzMl9vdXQoT3V0cHV0SXRlcmF0b3IgbywgbXBsOjppbnRfPDE+IGNvbnN0KikKLXsKLSAgIHJldHVybiBvOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcmF0b3IsIGNsYXNzIEkxLCBjbGFzcyBJMj4KLU91dHB1dEl0ZXJhdG9yIGRvX3JlZ2V4X3JlcGxhY2UoT3V0cHV0SXRlcmF0b3Igb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpwYWlyPEkxLCBJMT4gY29uc3QmIGluLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpwYWlyPEkyLCBJMj4mIGZtdCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLXsKLSAgIC8vIHVuZm9ydHVuYXRlbHkgd2UgaGF2ZSB0byBjb3B5IHRoZSBmb3JtYXQgc3RyaW5nIGluIG9yZGVyIHRvIHBhc3MgaW4gb253YXJkOgotICAgc3RkOjp2ZWN0b3I8VUNoYXIzMj4gZjsKLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVEX0lURVJBVE9SX0NPTlNUUlVDVE9SUwotICAgZi5hc3NpZ24oZm10LmZpcnN0LCBmbXQuc2Vjb25kKTsKLSNlbHNlCi0gICBmLmNsZWFyKCk7Ci0gICBJMiBwb3MgPSBmbXQuZmlyc3Q7Ci0gICB3aGlsZShwb3MgIT0gZm10LnNlY29uZCkKLSAgICAgIGYucHVzaF9iYWNrKCpwb3MrKyk7Ci0jZW5kaWYKLSAgIAotICAgcmVnZXhfaXRlcmF0b3I8STEsIFVDaGFyMzIsIGljdV9yZWdleF90cmFpdHM+IGkoaW4uZmlyc3QsIGluLnNlY29uZCwgZSwgZmxhZ3MpOwotICAgcmVnZXhfaXRlcmF0b3I8STEsIFVDaGFyMzIsIGljdV9yZWdleF90cmFpdHM+IGo7Ci0gICBpZihpID09IGopCi0gICB7Ci0gICAgICBpZighKGZsYWdzICYgcmVnZXhfY29uc3RhbnRzOjpmb3JtYXRfbm9fY29weSkpCi0gICAgICAgICBvdXQgPSByZV9kZXRhaWw6OmNvcHkoaW4uZmlyc3QsIGluLnNlY29uZCwgb3V0KTsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIEkxIGxhc3RfbSA9IGluLmZpcnN0OwotICAgICAgd2hpbGUoaSAhPSBqKQotICAgICAgewotICAgICAgICAgaWYoIShmbGFncyAmIHJlZ2V4X2NvbnN0YW50czo6Zm9ybWF0X25vX2NvcHkpKQotICAgICAgICAgICAgb3V0ID0gcmVfZGV0YWlsOjpjb3B5KGktPnByZWZpeCgpLmZpcnN0LCBpLT5wcmVmaXgoKS5zZWNvbmQsIG91dCk7IAotICAgICAgICAgaWYoZi5zaXplKCkpCi0gICAgICAgICAgICBvdXQgPSA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OnJlZ2V4X2Zvcm1hdF9pbXAob3V0LCAqaSwgJipmLmJlZ2luKCksICYqZi5iZWdpbigpICsgZi5zaXplKCksIGZsYWdzLCBlLmdldF90cmFpdHMoKSk7Ci0gICAgICAgICBlbHNlCi0gICAgICAgICAgICBvdXQgPSA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OnJlZ2V4X2Zvcm1hdF9pbXAob3V0LCAqaSwgc3RhdGljX2Nhc3Q8VUNoYXIzMiBjb25zdCo+KDApLCBzdGF0aWNfY2FzdDxVQ2hhcjMyIGNvbnN0Kj4oMCksIGZsYWdzLCBlLmdldF90cmFpdHMoKSk7Ci0gICAgICAgICBsYXN0X20gPSAoKmkpWzBdLnNlY29uZDsKLSAgICAgICAgIGlmKGZsYWdzICYgcmVnZXhfY29uc3RhbnRzOjpmb3JtYXRfZmlyc3Rfb25seSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgKytpOwotICAgICAgfQotICAgICAgaWYoIShmbGFncyAmIHJlZ2V4X2NvbnN0YW50czo6Zm9ybWF0X25vX2NvcHkpKQotICAgICAgICAgb3V0ID0gcmVfZGV0YWlsOjpjb3B5KGxhc3RfbSwgaW4uc2Vjb25kLCBvdXQpOwotICAgfQotICAgcmV0dXJuIG91dDsKLX0KLXRlbXBsYXRlIDxjbGFzcyBCYXNlSXRlcmF0b3I+Ci1pbmxpbmUgY29uc3QgQmFzZUl0ZXJhdG9yJiBleHRyYWN0X291dHB1dF9iYXNlKGNvbnN0IEJhc2VJdGVyYXRvciYgYikKLXsKLSAgIHJldHVybiBiOwotfQotdGVtcGxhdGUgPGNsYXNzIEJhc2VJdGVyYXRvcj4KLWlubGluZSBCYXNlSXRlcmF0b3IgZXh0cmFjdF9vdXRwdXRfYmFzZShjb25zdCB1dGY4X291dHB1dF9pdGVyYXRvcjxCYXNlSXRlcmF0b3I+JiBiKQotewotICAgcmV0dXJuIGIuYmFzZSgpOwotfQotdGVtcGxhdGUgPGNsYXNzIEJhc2VJdGVyYXRvcj4KLWlubGluZSBCYXNlSXRlcmF0b3IgZXh0cmFjdF9vdXRwdXRfYmFzZShjb25zdCB1dGYxNl9vdXRwdXRfaXRlcmF0b3I8QmFzZUl0ZXJhdG9yPiYgYikKLXsKLSAgIHJldHVybiBiLmJhc2UoKTsKLX0KLX0gIC8vIHJlX2RldGFpbAotCi10ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcmF0b3IsIGNsYXNzIEJpZGlyZWN0aW9uYWxJdGVyYXRvciwgY2xhc3MgY2hhclQ+Ci1pbmxpbmUgT3V0cHV0SXRlcmF0b3IgdTMycmVnZXhfcmVwbGFjZShPdXRwdXRJdGVyYXRvciBvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGZpcnN0LAotICAgICAgICAgICAgICAgICAgICAgICAgIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBsYXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyVCogZm10LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlX2RldGFpbDo6ZXh0cmFjdF9vdXRwdXRfYmFzZQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkKLSAgIDxPdXRwdXRJdGVyYXRvcj4KLSNlbmRpZgotICAgICgKLSAgICAgIHJlX2RldGFpbDo6ZG9fcmVnZXhfcmVwbGFjZSgKLSAgICAgICAgIHJlX2RldGFpbDo6bWFrZV91dGYzMl9vdXQob3V0LCBzdGF0aWNfY2FzdDxtcGw6OmludF88c2l6ZW9mKCpmaXJzdCk+IGNvbnN0Kj4oMCkpLAotICAgICAgICAgcmVfZGV0YWlsOjptYWtlX3V0ZjMyX3NlcShmaXJzdCwgbGFzdCwgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPHNpemVvZigqZmlyc3QpPiBjb25zdCo+KDApKSwKLSAgICAgICAgIGUsCi0gICAgICAgICByZV9kZXRhaWw6Om1ha2VfdXRmMzJfc2VxKGZtdCwgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPHNpemVvZigqZm10KT4gY29uc3QqPigwKSksCi0gICAgICAgICBmbGFncykKLSAgICAgICk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvciwgY2xhc3MgSXRlcmF0b3IsIGNsYXNzIGNoYXJUPgotaW5saW5lIE91dHB1dEl0ZXJhdG9yIHUzMnJlZ2V4X3JlcGxhY2UoT3V0cHV0SXRlcmF0b3Igb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdG9yIGZpcnN0LAotICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdG9yIGxhc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiYgZm10LAotICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpleHRyYWN0X291dHB1dF9iYXNlCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKQotICAgPE91dHB1dEl0ZXJhdG9yPgotI2VuZGlmCi0gICAgKAotICAgICAgcmVfZGV0YWlsOjpkb19yZWdleF9yZXBsYWNlKAotICAgICAgICAgcmVfZGV0YWlsOjptYWtlX3V0ZjMyX291dChvdXQsIHN0YXRpY19jYXN0PG1wbDo6aW50XzxzaXplb2YoKmZpcnN0KT4gY29uc3QqPigwKSksCi0gICAgICAgICByZV9kZXRhaWw6Om1ha2VfdXRmMzJfc2VxKGZpcnN0LCBsYXN0LCBzdGF0aWNfY2FzdDxtcGw6OmludF88c2l6ZW9mKCpmaXJzdCk+IGNvbnN0Kj4oMCkpLAotICAgICAgICAgZSwKLSAgICAgICAgIHJlX2RldGFpbDo6bWFrZV91dGYzMl9zZXEoZm10LmJlZ2luKCksIGZtdC5lbmQoKSwgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPHNpemVvZihjaGFyVCk+IGNvbnN0Kj4oMCkpLAotICAgICAgICAgZmxhZ3MpCi0gICAgICApOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcmF0b3IsIGNsYXNzIEl0ZXJhdG9yPgotaW5saW5lIE91dHB1dEl0ZXJhdG9yIHUzMnJlZ2V4X3JlcGxhY2UoT3V0cHV0SXRlcmF0b3Igb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdG9yIGZpcnN0LAotICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdG9yIGxhc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVfTkFNRVNQQUNFX1FVQUxJRklFUiBVbmljb2RlU3RyaW5nJiBmbXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZV9kZXRhaWw6OmV4dHJhY3Rfb3V0cHV0X2Jhc2UKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApCi0gICA8T3V0cHV0SXRlcmF0b3I+Ci0jZW5kaWYKLSAgICgKLSAgICAgIHJlX2RldGFpbDo6ZG9fcmVnZXhfcmVwbGFjZSgKLSAgICAgICAgIHJlX2RldGFpbDo6bWFrZV91dGYzMl9vdXQob3V0LCBzdGF0aWNfY2FzdDxtcGw6OmludF88c2l6ZW9mKCpmaXJzdCk+IGNvbnN0Kj4oMCkpLAotICAgICAgICAgcmVfZGV0YWlsOjptYWtlX3V0ZjMyX3NlcShmaXJzdCwgbGFzdCwgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPHNpemVvZigqZmlyc3QpPiBjb25zdCo+KDApKSwKLSAgICAgICAgIGUsCi0gICAgICAgICByZV9kZXRhaWw6Om1ha2VfdXRmMzJfc2VxKGZtdC5nZXRCdWZmZXIoKSwgZm10LmdldEJ1ZmZlcigpICsgZm10Lmxlbmd0aCgpLCBzdGF0aWNfY2FzdDxtcGw6OmludF88Mj4gY29uc3QqPigwKSksCi0gICAgICAgICBmbGFncykKLSAgICAgICk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiB1MzJyZWdleF9yZXBsYWNlKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiYgcywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhclQqIGZtdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+IHJlc3VsdDsKLSAgIHJlX2RldGFpbDo6c3RyaW5nX291dF9pdGVyYXRvcjxzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4gPiBpKHJlc3VsdCk7Ci0gICB1MzJyZWdleF9yZXBsYWNlKGksIHMuYmVnaW4oKSwgcy5lbmQoKSwgZSwgZm10LCBmbGFncyk7Ci0gICByZXR1cm4gcmVzdWx0OwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1zdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4gdTMycmVnZXhfcmVwbGFjZShjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4mIHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiYgZm10LAotICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4gcmVzdWx0OwotICAgcmVfZGV0YWlsOjpzdHJpbmdfb3V0X2l0ZXJhdG9yPHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiA+IGkocmVzdWx0KTsKLSAgIHUzMnJlZ2V4X3JlcGxhY2UoaSwgcy5iZWdpbigpLCBzLmVuZCgpLCBlLCBmbXQuY19zdHIoKSwgZmxhZ3MpOwotICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotbmFtZXNwYWNlIHJlX2RldGFpbHsKLQotY2xhc3MgdW5pY29kZV9zdHJpbmdfb3V0X2l0ZXJhdG9yCi17Ci0gICBVX05BTUVTUEFDRV9RVUFMSUZJRVIgVW5pY29kZVN0cmluZyogb3V0OwotcHVibGljOgotICAgdW5pY29kZV9zdHJpbmdfb3V0X2l0ZXJhdG9yKFVfTkFNRVNQQUNFX1FVQUxJRklFUiBVbmljb2RlU3RyaW5nJiBzKSA6IG91dCgmcykge30KLSAgIHVuaWNvZGVfc3RyaW5nX291dF9pdGVyYXRvciYgb3BlcmF0b3IrKygpIHsgcmV0dXJuICp0aGlzOyB9Ci0gICB1bmljb2RlX3N0cmluZ19vdXRfaXRlcmF0b3ImIG9wZXJhdG9yKysoaW50KSB7IHJldHVybiAqdGhpczsgfQotICAgdW5pY29kZV9zdHJpbmdfb3V0X2l0ZXJhdG9yJiBvcGVyYXRvciooKSB7IHJldHVybiAqdGhpczsgfQotICAgdW5pY29kZV9zdHJpbmdfb3V0X2l0ZXJhdG9yJiBvcGVyYXRvcj0oVUNoYXIgdikgCi0gICB7IAotICAgICAgKm91dCArPSB2OyAKLSAgICAgIHJldHVybiAqdGhpczsgCi0gICB9Ci0gICB0eXBlZGVmIHN0ZDo6cHRyZGlmZl90IGRpZmZlcmVuY2VfdHlwZTsKLSAgIHR5cGVkZWYgVUNoYXIgdmFsdWVfdHlwZTsKLSAgIHR5cGVkZWYgdmFsdWVfdHlwZSogcG9pbnRlcjsKLSAgIHR5cGVkZWYgdmFsdWVfdHlwZSYgcmVmZXJlbmNlOwotICAgdHlwZWRlZiBzdGQ6Om91dHB1dF9pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7Ci19OwotCi19Ci0KLWlubGluZSBVX05BTUVTUEFDRV9RVUFMSUZJRVIgVW5pY29kZVN0cmluZyB1MzJyZWdleF9yZXBsYWNlKGNvbnN0IFVfTkFNRVNQQUNFX1FVQUxJRklFUiBVbmljb2RlU3RyaW5nJiBzLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciogZm10LAotICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBVX05BTUVTUEFDRV9RVUFMSUZJRVIgVW5pY29kZVN0cmluZyByZXN1bHQ7Ci0gICByZV9kZXRhaWw6OnVuaWNvZGVfc3RyaW5nX291dF9pdGVyYXRvciBpKHJlc3VsdCk7Ci0gICB1MzJyZWdleF9yZXBsYWNlKGksIHMuZ2V0QnVmZmVyKCksIHMuZ2V0QnVmZmVyKCkrcy5sZW5ndGgoKSwgZSwgZm10LCBmbGFncyk7Ci0gICByZXR1cm4gcmVzdWx0OwotfQotCi1pbmxpbmUgVV9OQU1FU1BBQ0VfUVVBTElGSUVSIFVuaWNvZGVTdHJpbmcgdTMycmVnZXhfcmVwbGFjZShjb25zdCBVX05BTUVTUEFDRV9RVUFMSUZJRVIgVW5pY29kZVN0cmluZyYgcywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVV9OQU1FU1BBQ0VfUVVBTElGSUVSIFVuaWNvZGVTdHJpbmcmIGZtdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgVV9OQU1FU1BBQ0VfUVVBTElGSUVSIFVuaWNvZGVTdHJpbmcgcmVzdWx0OwotICAgcmVfZGV0YWlsOjp1bmljb2RlX3N0cmluZ19vdXRfaXRlcmF0b3IgaShyZXN1bHQpOwotICAgcmVfZGV0YWlsOjpkb19yZWdleF9yZXBsYWNlKAotICAgICAgICAgcmVfZGV0YWlsOjptYWtlX3V0ZjMyX291dChpLCBzdGF0aWNfY2FzdDxtcGw6OmludF88Mj4gY29uc3QqPigwKSksCi0gICAgICAgICByZV9kZXRhaWw6Om1ha2VfdXRmMzJfc2VxKHMuZ2V0QnVmZmVyKCksIHMuZ2V0QnVmZmVyKCkrcy5sZW5ndGgoKSwgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPDI+IGNvbnN0Kj4oMCkpLAotICAgICAgICAgZSwKLSAgICAgICAgIHJlX2RldGFpbDo6bWFrZV91dGYzMl9zZXEoZm10LmdldEJ1ZmZlcigpLCBmbXQuZ2V0QnVmZmVyKCkgKyBmbXQubGVuZ3RoKCksIHN0YXRpY19jYXN0PG1wbDo6aW50XzwyPiBjb25zdCo+KDApKSwKLSAgICAgICAgIGZsYWdzKTsKLSAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0LgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nIChwb3ApCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3UzMnJlZ2V4X2l0ZXJhdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC91MzJyZWdleF90b2tlbl9pdGVyYXRvci5ocHA+Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC9wYXR0ZXJuX2V4Y2VwdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3BhdHRlcm5fZXhjZXB0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2VjMGQ0NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3BhdHRlcm5fZXhjZXB0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotIAotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIHBhdHRlcm5fZXhjZXB0LmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogRGVjbGFyZXMgcGF0dGVybi1tYXRjaGluZyBleGNlcHRpb24gY2xhc3Nlcy4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRV9QQVRfRVhDRVBUX0hQUAotI2RlZmluZSBORE5CT09TVF9SRV9QQVRfRVhDRVBUX0hQUAotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0NPTkZJR19IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC9jb25maWcuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxzdGRleGNlcHQ+Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4KLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9lcnJvcl90eXBlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDI3NSkKLSNlbmRpZgotY2xhc3MgTkROQk9PU1RfUkVHRVhfREVDTCByZWdleF9lcnJvciA6IHB1YmxpYyBzdGQ6OnJ1bnRpbWVfZXJyb3IKLXsKLXB1YmxpYzoKLSAgIGV4cGxpY2l0IHJlZ2V4X2Vycm9yKGNvbnN0IHN0ZDo6c3RyaW5nJiBzLCByZWdleF9jb25zdGFudHM6OmVycm9yX3R5cGUgZXJyID0gcmVnZXhfY29uc3RhbnRzOjplcnJvcl91bmtub3duLCBzdGQ6OnB0cmRpZmZfdCBwb3MgPSAwKTsKLSAgIGV4cGxpY2l0IHJlZ2V4X2Vycm9yKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfdHlwZSBlcnIpOwotICAgfnJlZ2V4X2Vycm9yKCkgdGhyb3coKTsKLSAgIHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfdHlwZSBjb2RlKCljb25zdAotICAgeyByZXR1cm4gbV9lcnJvcl9jb2RlOyB9Ci0gICBzdGQ6OnB0cmRpZmZfdCBwb3NpdGlvbigpY29uc3QKLSAgIHsgcmV0dXJuIG1fcG9zaXRpb247IH0KLSAgIHZvaWQgcmFpc2UoKWNvbnN0OwotcHJpdmF0ZToKLSAgIHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfdHlwZSBtX2Vycm9yX2NvZGU7Ci0gICBzdGQ6OnB0cmRpZmZfdCBtX3Bvc2l0aW9uOwotfTsKLQotdHlwZWRlZiByZWdleF9lcnJvciBiYWRfcGF0dGVybjsKLXR5cGVkZWYgcmVnZXhfZXJyb3IgYmFkX2V4cHJlc3Npb247Ci0KLW5hbWVzcGFjZSByZV9kZXRhaWx7Ci0KLU5ETkJPT1NUX1JFR0VYX0RFQ0wgdm9pZCBORE5CT09TVF9SRUdFWF9DQUxMIHJhaXNlX3J1bnRpbWVfZXJyb3IoY29uc3Qgc3RkOjpydW50aW1lX2Vycm9yJiBleCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyB0cmFpdHM+Ci12b2lkIHJhaXNlX2Vycm9yKGNvbnN0IHRyYWl0cyYgdCwgcmVnZXhfY29uc3RhbnRzOjplcnJvcl90eXBlIGNvZGUpCi17Ci0gICAodm9pZCl0OyAgLy8gd2FybmluZyBzdXBwcmVzc2lvbgotICAgc3RkOjpydW50aW1lX2Vycm9yIGUodC5lcnJvcl9zdHJpbmcoY29kZSkpOwotICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpyYWlzZV9ydW50aW1lX2Vycm9yKGUpOwotfQotCi19Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3BlbmRpbmcvb2JqZWN0X2NhY2hlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvcGVuZGluZy9vYmplY3RfY2FjaGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMGEwODhjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvcGVuZGluZy9vYmplY3RfY2FjaGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTY1ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDA0Ci0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgb2JqZWN0X2NhY2hlLmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogSW1wbGVtZW50cyBhIGdlbmVyaWMgb2JqZWN0IGNhY2hlLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX09CSkVDVF9DQUNIRV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfT0JKRUNUX0NBQ0hFX0hQUAotCi0jaW5jbHVkZSA8bWFwPgotI2luY2x1ZGUgPGxpc3Q+Ci0jaW5jbHVkZSA8c3RkZXhjZXB0PgotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NoYXJlZF9wdHIuaHBwPgotI2lmZGVmIE5ETkJPT1NUX0hBU19USFJFQURTCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvcGVuZGluZy9zdGF0aWNfbXV0ZXguaHBwPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotdGVtcGxhdGUgPGNsYXNzIEtleSwgY2xhc3MgT2JqZWN0PgotY2xhc3Mgb2JqZWN0X2NhY2hlCi17Ci1wdWJsaWM6Ci0gICB0eXBlZGVmIHN0ZDo6cGFpcjwgOjpuZG5ib29zdDo6c2hhcmVkX3B0cjxPYmplY3QgY29uc3Q+LCBLZXkgY29uc3QqPiB2YWx1ZV90eXBlOwotICAgdHlwZWRlZiBzdGQ6Omxpc3Q8dmFsdWVfdHlwZT4gbGlzdF90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0X3R5cGU6Oml0ZXJhdG9yIGxpc3RfaXRlcmF0b3I7Ci0gICB0eXBlZGVmIHN0ZDo6bWFwPEtleSwgbGlzdF9pdGVyYXRvcj4gbWFwX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIG1hcF90eXBlOjppdGVyYXRvciBtYXBfaXRlcmF0b3I7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGxpc3RfdHlwZTo6c2l6ZV90eXBlIHNpemVfdHlwZTsKLSAgIHN0YXRpYyBuZG5ib29zdDo6c2hhcmVkX3B0cjxPYmplY3QgY29uc3Q+IGdldChjb25zdCBLZXkmIGssIHNpemVfdHlwZSBsX21heF9jYWNoZV9zaXplKTsKLQotcHJpdmF0ZToKLSAgIHN0YXRpYyBuZG5ib29zdDo6c2hhcmVkX3B0cjxPYmplY3QgY29uc3Q+IGRvX2dldChjb25zdCBLZXkmIGssIHNpemVfdHlwZSBsX21heF9jYWNoZV9zaXplKTsKLQotICAgc3RydWN0IGRhdGEKLSAgIHsKLSAgICAgIGxpc3RfdHlwZSAgIGNvbnQ7Ci0gICAgICBtYXBfdHlwZSAgICBpbmRleDsKLSAgIH07Ci0KLSAgIC8vIE5lZWRlZCBieSBjb21waWxlcnMgbm90IGltcGxlbWVudGluZyB0aGUgcmVzb2x1dGlvbiB0byBEUjQ1LiBGb3IgcmVmZXJlbmNlLAotICAgLy8gc2VlIGh0dHA6Ly93d3cub3Blbi1zdGQub3JnL0pUQzEvU0MyMi9XRzIxL2RvY3MvY3dnX2RlZmVjdHMuaHRtbCM0NS4KLSAgIGZyaWVuZCBzdHJ1Y3QgZGF0YTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBLZXksIGNsYXNzIE9iamVjdD4KLW5kbmJvb3N0OjpzaGFyZWRfcHRyPE9iamVjdCBjb25zdD4gb2JqZWN0X2NhY2hlPEtleSwgT2JqZWN0Pjo6Z2V0KGNvbnN0IEtleSYgaywgc2l6ZV90eXBlIGxfbWF4X2NhY2hlX3NpemUpCi17Ci0jaWZkZWYgTkROQk9PU1RfSEFTX1RIUkVBRFMKLSAgIHN0YXRpYyBuZG5ib29zdDo6c3RhdGljX211dGV4IG11dCA9IE5ETkJPT1NUX1NUQVRJQ19NVVRFWF9JTklUOwotCi0gICBuZG5ib29zdDo6c3RhdGljX211dGV4OjpzY29wZWRfbG9jayBsKG11dCk7Ci0gICBpZihsKQotICAgewotICAgICAgcmV0dXJuIGRvX2dldChrLCBsX21heF9jYWNoZV9zaXplKTsKLSAgIH0KLSAgIC8vCi0gICAvLyB3aGF0IGRvIHdlIGRvIGlmIHRoZSBsb2NrIGZhaWxzPwotICAgLy8gZm9yIG5vdyBqdXN0IHRocm93LCBidXQgd2Ugc2hvdWxkIG5ldmVyIHJlYWxseSBnZXQgaGVyZS4uLgotICAgLy8KLSAgIDo6bmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihzdGQ6OnJ1bnRpbWVfZXJyb3IoIkVycm9yIGluIHRocmVhZCBzYWZldHkgY29kZTogY291bGQgbm90IGFjcXVpcmUgYSBsb2NrIikpOwotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fVU5SRUFDSEFCTEVfUkVUVVJOX0RFVEVDVElPTikgfHwgZGVmaW5lZChORE5CT09TVF9OT19FWENFUFRJT05TKQotICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPE9iamVjdD4oKTsKLSNlbmRpZgotI2Vsc2UKLSAgIHJldHVybiBkb19nZXQoaywgbF9tYXhfY2FjaGVfc2l6ZSk7Ci0jZW5kaWYKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEtleSwgY2xhc3MgT2JqZWN0PgotbmRuYm9vc3Q6OnNoYXJlZF9wdHI8T2JqZWN0IGNvbnN0PiBvYmplY3RfY2FjaGU8S2V5LCBPYmplY3Q+Ojpkb19nZXQoY29uc3QgS2V5JiBrLCBzaXplX3R5cGUgbF9tYXhfY2FjaGVfc2l6ZSkKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgb2JqZWN0X2NhY2hlPEtleSwgT2JqZWN0Pjo6ZGF0YSBvYmplY3RfZGF0YTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwX3R5cGU6OnNpemVfdHlwZSBtYXBfc2l6ZV90eXBlOwotICAgc3RhdGljIG9iamVjdF9kYXRhIHNfZGF0YTsKLQotICAgLy8KLSAgIC8vIHNlZSBpZiB0aGUgb2JqZWN0IGlzIGFscmVhZHkgaW4gdGhlIGNhY2hlOgotICAgLy8KLSAgIG1hcF9pdGVyYXRvciBtcG9zID0gc19kYXRhLmluZGV4LmZpbmQoayk7Ci0gICBpZihtcG9zICE9IHNfZGF0YS5pbmRleC5lbmQoKSkKLSAgIHsKLSAgICAgIC8vCi0gICAgICAvLyBFdXJla2EhIAotICAgICAgLy8gV2UgaGF2ZSBhIGNhY2hlZCBpdGVtLCBidW1wIGl0IHVwIHRoZSBsaXN0IGFuZCByZXR1cm4gaXQ6Ci0gICAgICAvLwotICAgICAgaWYoLS0oc19kYXRhLmNvbnQuZW5kKCkpICE9IG1wb3MtPnNlY29uZCkKLSAgICAgIHsKLSAgICAgICAgIC8vIHNwbGljZSBvdXQgdGhlIGl0ZW0gd2Ugd2FudCB0byBtb3ZlOgotICAgICAgICAgbGlzdF90eXBlIHRlbXA7Ci0gICAgICAgICB0ZW1wLnNwbGljZSh0ZW1wLmVuZCgpLCBzX2RhdGEuY29udCwgbXBvcy0+c2Vjb25kKTsKLSAgICAgICAgIC8vIGFuZCBub3cgcGxhY2UgaXQgYXQgdGhlIGVuZCBvZiB0aGUgbGlzdDoKLSAgICAgICAgIHNfZGF0YS5jb250LnNwbGljZShzX2RhdGEuY29udC5lbmQoKSwgdGVtcCwgdGVtcC5iZWdpbigpKTsKLSAgICAgICAgIE5ETkJPT1NUX0FTU0VSVCgqKHNfZGF0YS5jb250LmJhY2soKS5zZWNvbmQpID09IGspOwotICAgICAgICAgLy8gdXBkYXRlIGluZGV4IHdpdGggbmV3IHBvc2l0aW9uOgotICAgICAgICAgbXBvcy0+c2Vjb25kID0gLS0oc19kYXRhLmNvbnQuZW5kKCkpOwotICAgICAgICAgTkROQk9PU1RfQVNTRVJUKCYobXBvcy0+Zmlyc3QpID09IG1wb3MtPnNlY29uZC0+c2Vjb25kKTsKLSAgICAgICAgIE5ETkJPT1NUX0FTU0VSVCgmKG1wb3MtPmZpcnN0KSA9PSBzX2RhdGEuY29udC5iYWNrKCkuc2Vjb25kKTsKLSAgICAgIH0KLSAgICAgIHJldHVybiBzX2RhdGEuY29udC5iYWNrKCkuZmlyc3Q7Ci0gICB9Ci0gICAvLwotICAgLy8gaWYgd2UgZ2V0IGhlcmUgdGhlbiB0aGUgaXRlbSBpcyBub3QgaW4gdGhlIGNhY2hlLAotICAgLy8gc28gY3JlYXRlIGl0OgotICAgLy8KLSAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPE9iamVjdCBjb25zdD4gcmVzdWx0KG5ldyBPYmplY3QoaykpOwotICAgLy8KLSAgIC8vIEFkZCBpdCB0byB0aGUgbGlzdCwgYW5kIGluZGV4IGl0OgotICAgLy8KLSAgIHNfZGF0YS5jb250LnB1c2hfYmFjayh2YWx1ZV90eXBlKHJlc3VsdCwgc3RhdGljX2Nhc3Q8S2V5IGNvbnN0Kj4oMCkpKTsKLSAgIHNfZGF0YS5pbmRleC5pbnNlcnQoc3RkOjptYWtlX3BhaXIoaywgLS0oc19kYXRhLmNvbnQuZW5kKCkpKSk7Ci0gICBzX2RhdGEuY29udC5iYWNrKCkuc2Vjb25kID0gJihzX2RhdGEuaW5kZXguZmluZChrKS0+Zmlyc3QpOwotICAgbWFwX3NpemVfdHlwZSBzID0gc19kYXRhLmluZGV4LnNpemUoKTsKLSAgIE5ETkJPT1NUX0FTU0VSVChzX2RhdGEuaW5kZXhba10tPmZpcnN0LmdldCgpID09IHJlc3VsdC5nZXQoKSk7Ci0gICBORE5CT09TVF9BU1NFUlQoJihzX2RhdGEuaW5kZXguZmluZChrKS0+Zmlyc3QpID09IHNfZGF0YS5jb250LmJhY2soKS5zZWNvbmQpOwotICAgTkROQk9PU1RfQVNTRVJUKHNfZGF0YS5pbmRleC5maW5kKGspLT5maXJzdCA9PSBrKTsKLSAgIGlmKHMgPiBsX21heF9jYWNoZV9zaXplKQotICAgewotICAgICAgLy8KLSAgICAgIC8vIFdlIGhhdmUgdG9vIG1hbnkgaXRlbXMgaW4gdGhlIGxpc3QsIHNvIHdlIG5lZWQgdG8gc3RhcnQKLSAgICAgIC8vIHBvcHBpbmcgdGhlbSBvZmYgdGhlIGJhY2sgb2YgdGhlIGxpc3QsIGJ1dCBvbmx5IGlmIHRoZXkncmUKLSAgICAgIC8vIGJlaW5nIGhlbGQgdW5pcXVlbHkgYnkgdXM6Ci0gICAgICAvLwotICAgICAgbGlzdF9pdGVyYXRvciBwb3MgPSBzX2RhdGEuY29udC5iZWdpbigpOwotICAgICAgbGlzdF9pdGVyYXRvciBsYXN0ID0gc19kYXRhLmNvbnQuZW5kKCk7Ci0gICAgICB3aGlsZSgocG9zICE9IGxhc3QpICYmIChzID4gbF9tYXhfY2FjaGVfc2l6ZSkpCi0gICAgICB7Ci0gICAgICAgICBpZihwb3MtPmZpcnN0LnVuaXF1ZSgpKQotICAgICAgICAgewotICAgICAgICAgICAgbGlzdF9pdGVyYXRvciBjb25kZW1tZWQocG9zKTsKLSAgICAgICAgICAgICsrcG9zOwotICAgICAgICAgICAgLy8gbm93IHJlbW92ZSB0aGUgaXRlbXMgZnJvbSBvdXIgY29udGFpbmVycywgCi0gICAgICAgICAgICAvLyB0aGVuIG9yZGVyIGhhcyB0byBiZSBhcyBmb2xsb3dzOgotICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKHNfZGF0YS5pbmRleC5maW5kKCooY29uZGVtbWVkLT5zZWNvbmQpKSAhPSBzX2RhdGEuaW5kZXguZW5kKCkpOwotICAgICAgICAgICAgc19kYXRhLmluZGV4LmVyYXNlKCooY29uZGVtbWVkLT5zZWNvbmQpKTsKLSAgICAgICAgICAgIHNfZGF0YS5jb250LmVyYXNlKGNvbmRlbW1lZCk7IAotICAgICAgICAgICAgLS1zOwotICAgICAgICAgfQotICAgICAgICAgZWxzZQotICAgICAgICAgICAgKytwb3M7Ci0gICAgICB9Ci0gICAgICBORE5CT09TVF9BU1NFUlQoc19kYXRhLmluZGV4W2tdLT5maXJzdC5nZXQoKSA9PSByZXN1bHQuZ2V0KCkpOwotICAgICAgTkROQk9PU1RfQVNTRVJUKCYoc19kYXRhLmluZGV4LmZpbmQoayktPmZpcnN0KSA9PSBzX2RhdGEuY29udC5iYWNrKCkuc2Vjb25kKTsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVChzX2RhdGEuaW5kZXguZmluZChrKS0+Zmlyc3QgPT0gayk7Ci0gICB9Ci0gICByZXR1cm4gcmVzdWx0OwotfQotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC9wZW5kaW5nL3N0YXRpY19tdXRleC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3BlbmRpbmcvc3RhdGljX211dGV4LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzdkMjY1OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3BlbmRpbmcvc3RhdGljX211dGV4LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3OSArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMjAwNAotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLSAKLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICBzdGF0aWNfbXV0ZXguaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBEZWNsYXJlcyBzdGF0aWNfbXV0ZXggbG9jayB0eXBlLCB0aGVyZSBhcmUgdGhyZWUgZGlmZmVyZW50Ci0gICogICAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb25zOiBQT1NJWCBwdGhyZWFkcywgV0lOMzIgdGhyZWFkcywgYW5kIHBvcnRhYmxlLAotICAqICAgICAgICAgICAgICAgIHRoZXNlIGFyZSBkZXNjcmliZWQgaW4gbW9yZSBkZXRhaWwgYmVsb3cuCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfU1RBVElDX01VVEVYX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9TVEFUSUNfTVVURVhfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L2NvbmZpZy5ocHA+IC8vIGRsbCBpbXBvcnQvZXhwb3J0IG9wdGlvbnMuCi0KLSNpZmRlZiBORE5CT09TVF9IQVNfUFRIUkVBRFMKLSNpbmNsdWRlIDxwdGhyZWFkLmg+Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfSEFTX1BUSFJFQURTKSAmJiBkZWZpbmVkKFBUSFJFQURfTVVURVhfSU5JVElBTElaRVIpCi0vLwotLy8gcHRocmVhZHMgdmVyc2lvbjoKLS8vIHNpbXBsZSB3cmFwIGFyb3VuZCBhIHB0aHJlYWRfbXV0ZXhfdCBpbml0aWFsaXplZCB3aXRoCi0vLyBQVEhSRUFEX01VVEVYX0lOSVRJQUxJWkVSLgotLy8KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotY2xhc3Mgc3RhdGljX211dGV4OwotCi0jZGVmaW5lIE5ETkJPT1NUX1NUQVRJQ19NVVRFWF9JTklUIHsgUFRIUkVBRF9NVVRFWF9JTklUSUFMSVpFUiwgfQotCi1jbGFzcyBORE5CT09TVF9SRUdFWF9ERUNMIHNjb3BlZF9zdGF0aWNfbXV0ZXhfbG9jawotewotcHVibGljOgotICAgc2NvcGVkX3N0YXRpY19tdXRleF9sb2NrKHN0YXRpY19tdXRleCYgbXV0LCBib29sIGxrID0gdHJ1ZSk7Ci0gICB+c2NvcGVkX3N0YXRpY19tdXRleF9sb2NrKCk7Ci0gICBpbmxpbmUgYm9vbCBsb2NrZWQoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9oYXZlX2xvY2s7Ci0gICB9Ci0gICBpbmxpbmUgb3BlcmF0b3Igdm9pZCBjb25zdCooKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbG9ja2VkKCkgPyB0aGlzIDogMDsKLSAgIH0KLSAgIHZvaWQgbG9jaygpOwotICAgdm9pZCB1bmxvY2soKTsKLXByaXZhdGU6Ci0gICBzdGF0aWNfbXV0ZXgmIG1fbXV0ZXg7Ci0gICBib29sIG1faGF2ZV9sb2NrOwotfTsKLQotY2xhc3Mgc3RhdGljX211dGV4Ci17Ci1wdWJsaWM6Ci0gICB0eXBlZGVmIHNjb3BlZF9zdGF0aWNfbXV0ZXhfbG9jayBzY29wZWRfbG9jazsKLSAgIHB0aHJlYWRfbXV0ZXhfdCBtX211dGV4OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX1dJTlRIUkVBRFMpCi0vLwotLy8gV2luMzIgdmVyc2lvbjoKLS8vIFVzZSBhIDMyLWJpdCBpbnQgYXMgYSBsb2NrLCBhbG9uZyB3aXRoIGEgdGVzdC1hbmQtc2V0Ci0vLyBpbXBsZW1lbnRhdGlvbiB1c2luZyBJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZS4KLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jc3RkaW50LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotCi1jbGFzcyBORE5CT09TVF9SRUdFWF9ERUNMIHNjb3BlZF9zdGF0aWNfbXV0ZXhfbG9jazsKLQotY2xhc3Mgc3RhdGljX211dGV4Ci17Ci1wdWJsaWM6Ci0gICB0eXBlZGVmIHNjb3BlZF9zdGF0aWNfbXV0ZXhfbG9jayBzY29wZWRfbG9jazsKLSAgIG5kbmJvb3N0OjppbnQzMl90IG1fbXV0ZXg7Ci19OwotCi0jZGVmaW5lIE5ETkJPT1NUX1NUQVRJQ19NVVRFWF9JTklUIHsgMCwgfQotCi1jbGFzcyBORE5CT09TVF9SRUdFWF9ERUNMIHNjb3BlZF9zdGF0aWNfbXV0ZXhfbG9jawotewotcHVibGljOgotICAgc2NvcGVkX3N0YXRpY19tdXRleF9sb2NrKHN0YXRpY19tdXRleCYgbXV0LCBib29sIGxrID0gdHJ1ZSk7Ci0gICB+c2NvcGVkX3N0YXRpY19tdXRleF9sb2NrKCk7Ci0gICBvcGVyYXRvciB2b2lkIGNvbnN0KigpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBsb2NrZWQoKSA/IHRoaXMgOiAwOwotICAgfQotICAgYm9vbCBsb2NrZWQoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9oYXZlX2xvY2s7Ci0gICB9Ci0gICB2b2lkIGxvY2soKTsKLSAgIHZvaWQgdW5sb2NrKCk7Ci1wcml2YXRlOgotICAgc3RhdGljX211dGV4JiBtX211dGV4OwotICAgYm9vbCBtX2hhdmVfbG9jazsKLSAgIHNjb3BlZF9zdGF0aWNfbXV0ZXhfbG9jayhjb25zdCBzY29wZWRfc3RhdGljX211dGV4X2xvY2smKTsKLSAgIHNjb3BlZF9zdGF0aWNfbXV0ZXhfbG9jayYgb3BlcmF0b3I9KGNvbnN0IHNjb3BlZF9zdGF0aWNfbXV0ZXhfbG9jayYpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UKLQotI2Vsc2UKLS8vCi0vLyBQb3J0YWJsZSB2ZXJzaW9uIG9mIGEgc3RhdGljIG11dGV4IGJhc2VkIG9uIEJvb3N0LlRocmVhZCBsaWJyYXJ5OgotLy8gVGhpcyBoYXMgdG8gdXNlIGEgc2luZ2xlIG11dGV4IHNoYXJlZCBieSBhbGwgaW5zdGFuY2VzIG9mIHN0YXRpY19tdXRleAotLy8gYmVjYXVzZSBuZG5ib29zdDo6Y2FsbF9vbmNlIGRvZXNuJ3QgYWxvdyB1cyB0byBwYXNzIGluc3RhbmNlIGluZm9ybWF0aW9uCi0vLyBkb3duIHRvIHRoZSBpbml0aWFsaXNhdGlvbiBwcm9jZWVkdXJlLiAgSW4gZmFjdCB0aGUgaW5pdGlhbGlzYXRpb24gcm91dGluZQotLy8gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmNlIC0gYnV0IG9ubHkgb25jZSBwZXIgaW5zdGFuY2UuCi0vLwotLy8gU2luY2UgdGhpcyBwcmVwcm9jZXNzb3IgcGF0aCBpcyBhbG1vc3QgbmV2ZXIgdGFrZW4sIHdlIGhpZGUgdGhlc2UgaGVhZGVyCi0vLyBkZXBlbmRlbmNpZXMgc28gdGhhdCBidWlsZCB0b29scyBkb24ndCBmaW5kIHRoZW0uCi0vLwotI2RlZmluZSBCMSA8bmRuYm9vc3QvdGhyZWFkL29uY2UuaHBwPgotI2RlZmluZSBCMiA8bmRuYm9vc3QvdGhyZWFkL3JlY3Vyc2l2ZV9tdXRleC5ocHA+Ci0jaW5jbHVkZSBCMQotI2luY2x1ZGUgQjIKLSN1bmRlZiBCMQotI3VuZGVmIEIyCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotY2xhc3MgTkROQk9PU1RfUkVHRVhfREVDTCBzY29wZWRfc3RhdGljX211dGV4X2xvY2s7Ci1leHRlcm4gIkMiIE5ETkJPT1NUX1JFR0VYX0RFQ0wgdm9pZCBuZG5ib29zdF9yZWdleF9mcmVlX3N0YXRpY19tdXRleCgpOwotCi1jbGFzcyBORE5CT09TVF9SRUdFWF9ERUNMIHN0YXRpY19tdXRleAotewotcHVibGljOgotICAgdHlwZWRlZiBzY29wZWRfc3RhdGljX211dGV4X2xvY2sgc2NvcGVkX2xvY2s7Ci0gICBzdGF0aWMgdm9pZCBpbml0KCk7Ci0gICBzdGF0aWMgbmRuYm9vc3Q6OnJlY3Vyc2l2ZV9tdXRleCogbV9wbXV0ZXg7Ci0gICBzdGF0aWMgbmRuYm9vc3Q6Om9uY2VfZmxhZyBtX29uY2U7Ci19OwotCi0jZGVmaW5lIE5ETkJPT1NUX1NUQVRJQ19NVVRFWF9JTklUIHsgIH0KLQotY2xhc3MgTkROQk9PU1RfUkVHRVhfREVDTCBzY29wZWRfc3RhdGljX211dGV4X2xvY2sKLXsKLXB1YmxpYzoKLSAgIHNjb3BlZF9zdGF0aWNfbXV0ZXhfbG9jayhzdGF0aWNfbXV0ZXgmIG11dCwgYm9vbCBsayA9IHRydWUpOwotICAgfnNjb3BlZF9zdGF0aWNfbXV0ZXhfbG9jaygpOwotICAgb3BlcmF0b3Igdm9pZCBjb25zdCooKWNvbnN0OwotICAgYm9vbCBsb2NrZWQoKWNvbnN0OwotICAgdm9pZCBsb2NrKCk7Ci0gICB2b2lkIHVubG9jaygpOwotcHJpdmF0ZToKLSAgIG5kbmJvb3N0OjpyZWN1cnNpdmVfbXV0ZXg6OnNjb3BlZF9sb2NrKiBtX3Bsb2NrOwotICAgYm9vbCBtX2hhdmVfbG9jazsKLX07Ci0KLWlubGluZSBzY29wZWRfc3RhdGljX211dGV4X2xvY2s6Om9wZXJhdG9yIHZvaWQgY29uc3QqKCljb25zdAotewotICAgcmV0dXJuIGxvY2tlZCgpID8gdGhpcyA6IDA7Ci19Ci0KLWlubGluZSBib29sIHNjb3BlZF9zdGF0aWNfbXV0ZXhfbG9jazo6bG9ja2VkKCljb25zdAotewotICAgcmV0dXJuIG1faGF2ZV9sb2NrOwotfQotCi19IC8vIG5hbWVzcGFjZQotCi0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3BlbmRpbmcvdW5pY29kZV9pdGVyYXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3BlbmRpbmcvdW5pY29kZV9pdGVyYXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2NmQzYjkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC9wZW5kaW5nL3VuaWNvZGVfaXRlcmF0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzc2ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDA0Ci0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotIAotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIHVuaWNvZGVfaXRlcmF0b3IuaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBJdGVyYXRvciBhZGFwdGVycyBmb3IgY29udmVydGluZyBiZXR3ZWVuIGRpZmZlcmVudCBVbmljb2RlIGVuY29kaW5ncy4KLSAgKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotQ29udGVudHM6Ci1+fn5+fn5+fn4KLQotMSkgUmVhZCBPbmx5LCBJbnB1dCBBZGFwdGVyczoKLX5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+Ci0KLXRlbXBsYXRlIDxjbGFzcyBCYXNlSXRlcmF0b3IsIGNsYXNzIFU4VHlwZSA9IDo6bmRuYm9vc3Q6OnVpbnQ4X3Q+Ci1jbGFzcyB1MzJfdG9fdThfaXRlcmF0b3I7Ci0KLUFkYXB0cyBzZXF1ZW5jZSBvZiBVVEYtMzIgY29kZSBwb2ludHMgdG8gImxvb2sgbGlrZSIgYSBzZXF1ZW5jZSBvZiBVVEYtOC4KLQotdGVtcGxhdGUgPGNsYXNzIEJhc2VJdGVyYXRvciwgY2xhc3MgVTMyVHlwZSA9IDo6bmRuYm9vc3Q6OnVpbnQzMl90PgotY2xhc3MgdThfdG9fdTMyX2l0ZXJhdG9yOwotCi1BZGFwdHMgc2VxdWVuY2Ugb2YgVVRGLTggY29kZSBwb2ludHMgdG8gImxvb2sgbGlrZSIgYSBzZXF1ZW5jZSBvZiBVVEYtMzIuCi0KLXRlbXBsYXRlIDxjbGFzcyBCYXNlSXRlcmF0b3IsIGNsYXNzIFUxNlR5cGUgPSA6Om5kbmJvb3N0Ojp1aW50MTZfdD4KLWNsYXNzIHUzMl90b191MTZfaXRlcmF0b3I7Ci0KLUFkYXB0cyBzZXF1ZW5jZSBvZiBVVEYtMzIgY29kZSBwb2ludHMgdG8gImxvb2sgbGlrZSIgYSBzZXF1ZW5jZSBvZiBVVEYtMTYuCi0KLXRlbXBsYXRlIDxjbGFzcyBCYXNlSXRlcmF0b3IsIGNsYXNzIFUzMlR5cGUgPSA6Om5kbmJvb3N0Ojp1aW50MzJfdD4KLWNsYXNzIHUxNl90b191MzJfaXRlcmF0b3I7Ci0KLUFkYXB0cyBzZXF1ZW5jZSBvZiBVVEYtMTYgY29kZSBwb2ludHMgdG8gImxvb2sgbGlrZSIgYSBzZXF1ZW5jZSBvZiBVVEYtMzIuCi0KLTIpIFNpbmdsZSBwYXNzIG91dHB1dCBpdGVyYXRvciBhZGFwdGVyczoKLQotdGVtcGxhdGUgPGNsYXNzIEJhc2VJdGVyYXRvcj4KLWNsYXNzIHV0Zjhfb3V0cHV0X2l0ZXJhdG9yOwotCi1BY2NlcHRzIFVURi0zMiBjb2RlIHBvaW50cyBhbmQgZm9yd2FyZHMgdGhlbSBvbiBhcyBVVEYtOCBjb2RlIHBvaW50cy4KLQotdGVtcGxhdGUgPGNsYXNzIEJhc2VJdGVyYXRvcj4KLWNsYXNzIHV0ZjE2X291dHB1dF9pdGVyYXRvcjsKLQotQWNjZXB0cyBVVEYtMzIgY29kZSBwb2ludHMgYW5kIGZvcndhcmRzIHRoZW0gb24gYXMgVVRGLTE2IGNvZGUgcG9pbnRzLgotCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1VOSUNPREVfSVRFUkFUT1JfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1VOSUNPREVfSVRFUkFUT1JfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvY3N0ZGludC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl9mYWNhZGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHA+Ci0jaW5jbHVkZSA8c3RkZXhjZXB0PgotI2lmbmRlZiBORE5CT09TVF9OT19TVERfTE9DQUxFCi0jaW5jbHVkZSA8c3N0cmVhbT4KLSNpbmNsdWRlIDxpb3M+Ci0jZW5kaWYKLSNpbmNsdWRlIDxsaW1pdHMuaD4gLy8gQ0hBUl9CSVQKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotCi1uYW1lc3BhY2UgZGV0YWlsewotCi1zdGF0aWMgY29uc3QgOjpuZG5ib29zdDo6dWludDE2X3QgaGlnaF9zdXJyb2dhdGVfYmFzZSA9IDB4RDdDMHU7Ci1zdGF0aWMgY29uc3QgOjpuZG5ib29zdDo6dWludDE2X3QgbG93X3N1cnJvZ2F0ZV9iYXNlID0gMHhEQzAwdTsKLXN0YXRpYyBjb25zdCA6Om5kbmJvb3N0Ojp1aW50MzJfdCB0ZW5fYml0X21hc2sgPSAweDNGRnU7Ci0KLWlubGluZSBib29sIGlzX2hpZ2hfc3Vycm9nYXRlKDo6bmRuYm9vc3Q6OnVpbnQxNl90IHYpCi17Ci0gICByZXR1cm4gKHYgJiAweEZGRkZGQzAwdSkgPT0gMHhkODAwdTsKLX0KLWlubGluZSBib29sIGlzX2xvd19zdXJyb2dhdGUoOjpuZG5ib29zdDo6dWludDE2X3QgdikKLXsKLSAgIHJldHVybiAodiAmIDB4RkZGRkZDMDB1KSA9PSAweGRjMDB1OwotfQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1pbmxpbmUgYm9vbCBpc19zdXJyb2dhdGUoVCB2KQotewotICAgcmV0dXJuICh2ICYgMHhGRkZGRjgwMHUpID09IDB4ZDgwMDsKLX0KLQotaW5saW5lIHVuc2lnbmVkIHV0ZjhfYnl0ZV9jb3VudChuZG5ib29zdDo6dWludDhfdCBjKQotewotICAgLy8gaWYgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0IHdpdGggYSB6ZXJvIGluIGl0IGlzIGluIHBvc2l0aW9uCi0gICAvLyA4LU4gdGhlbiB0aGVyZSBhcmUgTiBieXRlcyBpbiB0aGlzIFVURi04IHNlcXVlbmNlOgotICAgbmRuYm9vc3Q6OnVpbnQ4X3QgbWFzayA9IDB4ODB1OwotICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKLSAgIHdoaWxlKGMgJiBtYXNrKQotICAgewotICAgICAgKytyZXN1bHQ7Ci0gICAgICBtYXNrID4+PSAxOwotICAgfQotICAgcmV0dXJuIChyZXN1bHQgPT0gMCkgPyAxIDogKChyZXN1bHQgPiA0KSA/IDQgOiByZXN1bHQpOwotfQotCi1pbmxpbmUgdW5zaWduZWQgdXRmOF90cmFpbGluZ19ieXRlX2NvdW50KG5kbmJvb3N0Ojp1aW50OF90IGMpCi17Ci0gICByZXR1cm4gdXRmOF9ieXRlX2NvdW50KGMpIC0gMTsKLX0KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEwMCkKLSNlbmRpZgotaW5saW5lIHZvaWQgaW52YWxpZF91dGYzMl9jb2RlX3BvaW50KDo6bmRuYm9vc3Q6OnVpbnQzMl90IHZhbCkKLXsKLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0xPQ0FMRQotICAgc3RkOjpzdHJpbmdzdHJlYW0gc3M7Ci0gICBzcyA8PCAiSW52YWxpZCBVVEYtMzIgY29kZSBwb2ludCBVKyIgPDwgc3RkOjpzaG93YmFzZSA8PCBzdGQ6OmhleCA8PCB2YWwgPDwgIiBlbmNvdW50ZXJlZCB3aGlsZSB0cnlpbmcgdG8gZW5jb2RlIFVURi0xNiBzZXF1ZW5jZSI7Ci0gICBzdGQ6Om91dF9vZl9yYW5nZSBlKHNzLnN0cigpKTsKLSNlbHNlCi0gICBzdGQ6Om91dF9vZl9yYW5nZSBlKCJJbnZhbGlkIFVURi0zMiBjb2RlIHBvaW50IGVuY291bnRlcmVkIHdoaWxlIHRyeWluZyB0byBlbmNvZGUgVVRGLTE2IHNlcXVlbmNlIik7Ci0jZW5kaWYKLSAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oZSk7Ci19Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi10ZW1wbGF0ZSA8Y2xhc3MgQmFzZUl0ZXJhdG9yLCBjbGFzcyBVMTZUeXBlID0gOjpuZG5ib29zdDo6dWludDE2X3Q+Ci1jbGFzcyB1MzJfdG9fdTE2X2l0ZXJhdG9yCi0gICA6IHB1YmxpYyBuZG5ib29zdDo6aXRlcmF0b3JfZmFjYWRlPHUzMl90b191MTZfaXRlcmF0b3I8QmFzZUl0ZXJhdG9yLCBVMTZUeXBlPiwgVTE2VHlwZSwgc3RkOjpiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZywgY29uc3QgVTE2VHlwZT4KLXsKLSAgIHR5cGVkZWYgbmRuYm9vc3Q6Oml0ZXJhdG9yX2ZhY2FkZTx1MzJfdG9fdTE2X2l0ZXJhdG9yPEJhc2VJdGVyYXRvciwgVTE2VHlwZT4sIFUxNlR5cGUsIHN0ZDo6YmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcsIGNvbnN0IFUxNlR5cGU+IGJhc2VfdHlwZTsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9JVEVSQVRPUl9UUkFJVFMpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0gICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPEJhc2VJdGVyYXRvcj46OnZhbHVlX3R5cGUgYmFzZV92YWx1ZV90eXBlOwotCi0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKHNpemVvZihiYXNlX3ZhbHVlX3R5cGUpKkNIQVJfQklUID09IDMyKTsKLSAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKFUxNlR5cGUpKkNIQVJfQklUID09IDE2KTsKLSNlbmRpZgotCi1wdWJsaWM6Ci0gICB0eXBlbmFtZSBiYXNlX3R5cGU6OnJlZmVyZW5jZQotICAgICAgZGVyZWZlcmVuY2UoKWNvbnN0Ci0gICB7Ci0gICAgICBpZihtX2N1cnJlbnQgPT0gMikKLSAgICAgICAgIGV4dHJhY3RfY3VycmVudCgpOwotICAgICAgcmV0dXJuIG1fdmFsdWVzW21fY3VycmVudF07Ci0gICB9Ci0gICBib29sIGVxdWFsKGNvbnN0IHUzMl90b191MTZfaXRlcmF0b3ImIHRoYXQpY29uc3QKLSAgIHsKLSAgICAgIGlmKG1fcG9zaXRpb24gPT0gdGhhdC5tX3Bvc2l0aW9uKQotICAgICAgewotICAgICAgICAgLy8gQm90aCBtX2N1cnJlbnRzIG11c3QgYmUgZXF1YWwsIG9yIGJvdGggZXZlbgotICAgICAgICAgLy8gdGhpcyBpcyB0aGUgc2FtZSBhcyBzYXlpbmcgdGhlaXIgc3VtIG11c3QgYmUgZXZlbjoKLSAgICAgICAgIHJldHVybiAobV9jdXJyZW50ICsgdGhhdC5tX2N1cnJlbnQpICYgMXUgPyBmYWxzZSA6IHRydWU7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0gICB2b2lkIGluY3JlbWVudCgpCi0gICB7Ci0gICAgICAvLyBpZiB3ZSBoYXZlIGEgcGVuZGluZyByZWFkIHRoZW4gcmVhZCBub3csIHNvIHRoYXQgd2Uga25vdyB3aGV0aGVyCi0gICAgICAvLyB0byBza2lwIGEgcG9zaXRpb24sIG9yIG1vdmUgdG8gYSBsb3ctc3Vycm9nYXRlOgotICAgICAgaWYobV9jdXJyZW50ID09IDIpCi0gICAgICB7Ci0gICAgICAgICAvLyBwZW5kaW5nIHJlYWQ6Ci0gICAgICAgICBleHRyYWN0X2N1cnJlbnQoKTsKLSAgICAgIH0KLSAgICAgIC8vIG1vdmUgdG8gdGhlIG5leHQgc3Vycm9nYXRlIHBvc2l0aW9uOgotICAgICAgKyttX2N1cnJlbnQ7Ci0gICAgICAvLyBpZiB3ZSd2ZSByZWFjaGVkIHRoZSBlbmQgc2tpcCBhIHBvc2l0aW9uOgotICAgICAgaWYobV92YWx1ZXNbbV9jdXJyZW50XSA9PSAwKQotICAgICAgewotICAgICAgICAgbV9jdXJyZW50ID0gMjsKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIH0KLSAgIH0KLSAgIHZvaWQgZGVjcmVtZW50KCkKLSAgIHsKLSAgICAgIGlmKG1fY3VycmVudCAhPSAxKQotICAgICAgewotICAgICAgICAgLy8gZGVjcmVtZW50aW5nIGFuIGl0ZXJhdG9yIGFsd2F5cyBsZWFkcyB0byBhIHZhbGlkIHBvc2l0aW9uOgotICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgZXh0cmFjdF9jdXJyZW50KCk7Ci0gICAgICAgICBtX2N1cnJlbnQgPSBtX3ZhbHVlc1sxXSA/IDEgOiAwOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgbV9jdXJyZW50ID0gMDsKLSAgICAgIH0KLSAgIH0KLSAgIEJhc2VJdGVyYXRvciBiYXNlKCljb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcG9zaXRpb247Ci0gICB9Ci0gICAvLyBjb25zdHJ1Y3Q6Ci0gICB1MzJfdG9fdTE2X2l0ZXJhdG9yKCkgOiBtX3Bvc2l0aW9uKCksIG1fY3VycmVudCgwKQotICAgewotICAgICAgbV92YWx1ZXNbMF0gPSAwOwotICAgICAgbV92YWx1ZXNbMV0gPSAwOwotICAgICAgbV92YWx1ZXNbMl0gPSAwOwotICAgfQotICAgdTMyX3RvX3UxNl9pdGVyYXRvcihCYXNlSXRlcmF0b3IgYikgOiBtX3Bvc2l0aW9uKGIpLCBtX2N1cnJlbnQoMikKLSAgIHsKLSAgICAgIG1fdmFsdWVzWzBdID0gMDsKLSAgICAgIG1fdmFsdWVzWzFdID0gMDsKLSAgICAgIG1fdmFsdWVzWzJdID0gMDsKLSAgIH0KLXByaXZhdGU6Ci0KLSAgIHZvaWQgZXh0cmFjdF9jdXJyZW50KCljb25zdAotICAgewotICAgICAgLy8gYmVnaW4gYnkgY2hlY2tpbmcgZm9yIGEgY29kZSBwb2ludCBvdXQgb2YgcmFuZ2U6Ci0gICAgICA6Om5kbmJvb3N0Ojp1aW50MzJfdCB2ID0gKm1fcG9zaXRpb247Ci0gICAgICBpZih2ID49IDB4MTAwMDB1KQotICAgICAgewotICAgICAgICAgaWYodiA+IDB4MTBGRkZGdSkKLSAgICAgICAgICAgIGRldGFpbDo6aW52YWxpZF91dGYzMl9jb2RlX3BvaW50KCptX3Bvc2l0aW9uKTsKLSAgICAgICAgIC8vIHNwbGl0IGludG8gdHdvIHN1cnJvZ2F0ZXM6Ci0gICAgICAgICBtX3ZhbHVlc1swXSA9IHN0YXRpY19jYXN0PFUxNlR5cGU+KHYgPj4gMTApICsgZGV0YWlsOjpoaWdoX3N1cnJvZ2F0ZV9iYXNlOwotICAgICAgICAgbV92YWx1ZXNbMV0gPSBzdGF0aWNfY2FzdDxVMTZUeXBlPih2ICYgZGV0YWlsOjp0ZW5fYml0X21hc2spICsgZGV0YWlsOjpsb3dfc3Vycm9nYXRlX2Jhc2U7Ci0gICAgICAgICBtX2N1cnJlbnQgPSAwOwotICAgICAgICAgTkROQk9PU1RfQVNTRVJUKGRldGFpbDo6aXNfaGlnaF9zdXJyb2dhdGUobV92YWx1ZXNbMF0pKTsKLSAgICAgICAgIE5ETkJPT1NUX0FTU0VSVChkZXRhaWw6OmlzX2xvd19zdXJyb2dhdGUobV92YWx1ZXNbMV0pKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgIC8vIDE2LWJpdCBjb2RlIHBvaW50OgotICAgICAgICAgbV92YWx1ZXNbMF0gPSBzdGF0aWNfY2FzdDxVMTZUeXBlPigqbV9wb3NpdGlvbik7Ci0gICAgICAgICBtX3ZhbHVlc1sxXSA9IDA7Ci0gICAgICAgICBtX2N1cnJlbnQgPSAwOwotICAgICAgICAgLy8gdmFsdWUgbXVzdCBub3QgYmUgYSBzdXJyb2dhdGU6Ci0gICAgICAgICBpZihkZXRhaWw6OmlzX3N1cnJvZ2F0ZShtX3ZhbHVlc1swXSkpCi0gICAgICAgICAgICBkZXRhaWw6OmludmFsaWRfdXRmMzJfY29kZV9wb2ludCgqbV9wb3NpdGlvbik7Ci0gICAgICB9Ci0gICB9Ci0gICBCYXNlSXRlcmF0b3IgbV9wb3NpdGlvbjsKLSAgIG11dGFibGUgVTE2VHlwZSBtX3ZhbHVlc1szXTsKLSAgIG11dGFibGUgdW5zaWduZWQgbV9jdXJyZW50OwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEJhc2VJdGVyYXRvciwgY2xhc3MgVTMyVHlwZSA9IDo6bmRuYm9vc3Q6OnVpbnQzMl90PgotY2xhc3MgdTE2X3RvX3UzMl9pdGVyYXRvcgotICAgOiBwdWJsaWMgbmRuYm9vc3Q6Oml0ZXJhdG9yX2ZhY2FkZTx1MTZfdG9fdTMyX2l0ZXJhdG9yPEJhc2VJdGVyYXRvciwgVTMyVHlwZT4sIFUzMlR5cGUsIHN0ZDo6YmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcsIGNvbnN0IFUzMlR5cGU+Ci17Ci0gICB0eXBlZGVmIG5kbmJvb3N0OjppdGVyYXRvcl9mYWNhZGU8dTE2X3RvX3UzMl9pdGVyYXRvcjxCYXNlSXRlcmF0b3IsIFUzMlR5cGU+LCBVMzJUeXBlLCBzdGQ6OmJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnLCBjb25zdCBVMzJUeXBlPiBiYXNlX3R5cGU7Ci0gICAvLyBzcGVjaWFsIHZhbHVlcyBmb3IgcGVuZGluZyBpdGVyYXRvciByZWFkczoKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChVMzJUeXBlLCBwZW5kaW5nX3JlYWQgPSAweGZmZmZmZmZmdSk7Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19TVERfSVRFUkFUT1JfVFJBSVRTKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxCYXNlSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGJhc2VfdmFsdWVfdHlwZTsKLQotICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChzaXplb2YoYmFzZV92YWx1ZV90eXBlKSpDSEFSX0JJVCA9PSAxNik7Ci0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKHNpemVvZihVMzJUeXBlKSpDSEFSX0JJVCA9PSAzMik7Ci0jZW5kaWYKLQotcHVibGljOgotICAgdHlwZW5hbWUgYmFzZV90eXBlOjpyZWZlcmVuY2UKLSAgICAgIGRlcmVmZXJlbmNlKCljb25zdAotICAgewotICAgICAgaWYobV92YWx1ZSA9PSBwZW5kaW5nX3JlYWQpCi0gICAgICAgICBleHRyYWN0X2N1cnJlbnQoKTsKLSAgICAgIHJldHVybiBtX3ZhbHVlOwotICAgfQotICAgYm9vbCBlcXVhbChjb25zdCB1MTZfdG9fdTMyX2l0ZXJhdG9yJiB0aGF0KWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9wb3NpdGlvbiA9PSB0aGF0Lm1fcG9zaXRpb247Ci0gICB9Ci0gICB2b2lkIGluY3JlbWVudCgpCi0gICB7Ci0gICAgICAvLyBza2lwIGhpZ2ggc3Vycm9nYXRlIGZpcnN0IGlmIHRoZXJlIGlzIG9uZToKLSAgICAgIGlmKGRldGFpbDo6aXNfaGlnaF9zdXJyb2dhdGUoKm1fcG9zaXRpb24pKSArK21fcG9zaXRpb247Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICBtX3ZhbHVlID0gcGVuZGluZ19yZWFkOwotICAgfQotICAgdm9pZCBkZWNyZW1lbnQoKQotICAgewotICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgLy8gaWYgd2UgaGF2ZSBhIGxvdyBzdXJyb2dhdGUgdGhlbiBnbyBiYWNrIG9uZSBtb3JlOgotICAgICAgaWYoZGV0YWlsOjppc19sb3dfc3Vycm9nYXRlKCptX3Bvc2l0aW9uKSkgCi0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICBtX3ZhbHVlID0gcGVuZGluZ19yZWFkOwotICAgfQotICAgQmFzZUl0ZXJhdG9yIGJhc2UoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9wb3NpdGlvbjsKLSAgIH0KLSAgIC8vIGNvbnN0cnVjdDoKLSAgIHUxNl90b191MzJfaXRlcmF0b3IoKSA6IG1fcG9zaXRpb24oKQotICAgewotICAgICAgbV92YWx1ZSA9IHBlbmRpbmdfcmVhZDsKLSAgIH0KLSAgIHUxNl90b191MzJfaXRlcmF0b3IoQmFzZUl0ZXJhdG9yIGIpIDogbV9wb3NpdGlvbihiKQotICAgewotICAgICAgbV92YWx1ZSA9IHBlbmRpbmdfcmVhZDsKLSAgIH0KLSAgIC8vCi0gICAvLyBSYW5nZSBjaGVja2VkIHZlcnNpb246Ci0gICAvLwotICAgdTE2X3RvX3UzMl9pdGVyYXRvcihCYXNlSXRlcmF0b3IgYiwgQmFzZUl0ZXJhdG9yIHN0YXJ0LCBCYXNlSXRlcmF0b3IgZW5kKSA6IG1fcG9zaXRpb24oYikKLSAgIHsKLSAgICAgIG1fdmFsdWUgPSBwZW5kaW5nX3JlYWQ7Ci0gICAgICAvLwotICAgICAgLy8gVGhlIHJhbmdlIG11c3Qgbm90IHN0YXJ0IHdpdGggYSBsb3cgc3Vycm9nYXRlLCBvciBlbmQgaW4gYSBoaWdoIHN1cnJvZ2F0ZSwKLSAgICAgIC8vIG90aGVyd2lzZSB3ZSBydW4gdGhlIHJpc2sgb2YgcnVubmluZyBvdXRzaWRlIHRoZSB1bmRlcmx5aW5nIGlucHV0IHJhbmdlLgotICAgICAgLy8gTGlrZXdpc2UgYiBtdXN0IG5vdCBiZSBsb2NhdGVkIGF0IGEgbG93IHN1cnJvZ2F0ZS4KLSAgICAgIC8vCi0gICAgICBuZG5ib29zdDo6dWludDE2X3QgdmFsOwotICAgICAgaWYoc3RhcnQgIT0gZW5kKQotICAgICAgewotICAgICAgICAgaWYoKGIgIT0gc3RhcnQpICYmIChiICE9IGVuZCkpCi0gICAgICAgICB7Ci0gICAgICAgICAgICB2YWwgPSAqYjsKLSAgICAgICAgICAgIGlmKGRldGFpbDo6aXNfc3Vycm9nYXRlKHZhbCkgJiYgKCh2YWwgJiAweEZDMDB1KSA9PSAweERDMDB1KSkKLSAgICAgICAgICAgICAgIGludmFsaWRfY29kZV9wb2ludCh2YWwpOwotICAgICAgICAgfQotICAgICAgICAgdmFsID0gKnN0YXJ0OwotICAgICAgICAgaWYoZGV0YWlsOjppc19zdXJyb2dhdGUodmFsKSAmJiAoKHZhbCAmIDB4RkMwMHUpID09IDB4REMwMHUpKQotICAgICAgICAgICAgaW52YWxpZF9jb2RlX3BvaW50KHZhbCk7Ci0gICAgICAgICB2YWwgPSAqLS1lbmQ7Ci0gICAgICAgICBpZihkZXRhaWw6OmlzX2hpZ2hfc3Vycm9nYXRlKHZhbCkpCi0gICAgICAgICAgICBpbnZhbGlkX2NvZGVfcG9pbnQodmFsKTsKLSAgICAgIH0KLSAgIH0KLXByaXZhdGU6Ci0gICBzdGF0aWMgdm9pZCBpbnZhbGlkX2NvZGVfcG9pbnQoOjpuZG5ib29zdDo6dWludDE2X3QgdmFsKQotICAgewotI2lmbmRlZiBORE5CT09TVF9OT19TVERfTE9DQUxFCi0gICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBzczsKLSAgICAgIHNzIDw8ICJNaXNwbGFjZWQgVVRGLTE2IHN1cnJvZ2F0ZSBVKyIgPDwgc3RkOjpzaG93YmFzZSA8PCBzdGQ6OmhleCA8PCB2YWwgPDwgIiBlbmNvdW50ZXJlZCB3aGlsZSB0cnlpbmcgdG8gZW5jb2RlIFVURi0zMiBzZXF1ZW5jZSI7Ci0gICAgICBzdGQ6Om91dF9vZl9yYW5nZSBlKHNzLnN0cigpKTsKLSNlbHNlCi0gICAgICBzdGQ6Om91dF9vZl9yYW5nZSBlKCJNaXNwbGFjZWQgVVRGLTE2IHN1cnJvZ2F0ZSBlbmNvdW50ZXJlZCB3aGlsZSB0cnlpbmcgdG8gZW5jb2RlIFVURi0zMiBzZXF1ZW5jZSIpOwotI2VuZGlmCi0gICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGUpOwotICAgfQotICAgdm9pZCBleHRyYWN0X2N1cnJlbnQoKWNvbnN0Ci0gICB7Ci0gICAgICBtX3ZhbHVlID0gc3RhdGljX2Nhc3Q8VTMyVHlwZT4oc3RhdGljX2Nhc3Q8IDo6bmRuYm9vc3Q6OnVpbnQxNl90PigqbV9wb3NpdGlvbikpOwotICAgICAgLy8gaWYgdGhlIGxhc3QgdmFsdWUgaXMgYSBoaWdoIHN1cnJvZ2F0ZSB0aGVuIGFkanVzdCBtX3Bvc2l0aW9uIGFuZCBtX3ZhbHVlIGFzIG5lZWRlZDoKLSAgICAgIGlmKGRldGFpbDo6aXNfaGlnaF9zdXJyb2dhdGUoKm1fcG9zaXRpb24pKQotICAgICAgewotICAgICAgICAgLy8gcHJlY29uZGl0aW9uOyBuZXh0IHZhbHVlIG11c3QgaGF2ZSBiZSBhIGxvdy1zdXJyb2dhdGU6Ci0gICAgICAgICBCYXNlSXRlcmF0b3IgbmV4dChtX3Bvc2l0aW9uKTsKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnVpbnQxNl90IHQgPSAqKytuZXh0OwotICAgICAgICAgaWYoKHQgJiAweEZDMDB1KSAhPSAweERDMDB1KQotICAgICAgICAgICAgaW52YWxpZF9jb2RlX3BvaW50KHQpOwotICAgICAgICAgbV92YWx1ZSA9IChtX3ZhbHVlIC0gZGV0YWlsOjpoaWdoX3N1cnJvZ2F0ZV9iYXNlKSA8PCAxMDsKLSAgICAgICAgIG1fdmFsdWUgfD0gKHN0YXRpY19jYXN0PFUzMlR5cGU+KHN0YXRpY19jYXN0PCA6Om5kbmJvb3N0Ojp1aW50MTZfdD4odCkpICYgZGV0YWlsOjp0ZW5fYml0X21hc2spOwotICAgICAgfQotICAgICAgLy8gcG9zdGNvbmRpdGlvbjsgcmVzdWx0IG11c3Qgbm90IGJlIGEgc3Vycm9nYXRlOgotICAgICAgaWYoZGV0YWlsOjppc19zdXJyb2dhdGUobV92YWx1ZSkpCi0gICAgICAgICBpbnZhbGlkX2NvZGVfcG9pbnQoc3RhdGljX2Nhc3Q8IDo6bmRuYm9vc3Q6OnVpbnQxNl90PihtX3ZhbHVlKSk7Ci0gICB9Ci0gICBCYXNlSXRlcmF0b3IgbV9wb3NpdGlvbjsKLSAgIG11dGFibGUgVTMyVHlwZSBtX3ZhbHVlOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEJhc2VJdGVyYXRvciwgY2xhc3MgVThUeXBlID0gOjpuZG5ib29zdDo6dWludDhfdD4KLWNsYXNzIHUzMl90b191OF9pdGVyYXRvcgotICAgOiBwdWJsaWMgbmRuYm9vc3Q6Oml0ZXJhdG9yX2ZhY2FkZTx1MzJfdG9fdThfaXRlcmF0b3I8QmFzZUl0ZXJhdG9yLCBVOFR5cGU+LCBVOFR5cGUsIHN0ZDo6YmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcsIGNvbnN0IFU4VHlwZT4KLXsKLSAgIHR5cGVkZWYgbmRuYm9vc3Q6Oml0ZXJhdG9yX2ZhY2FkZTx1MzJfdG9fdThfaXRlcmF0b3I8QmFzZUl0ZXJhdG9yLCBVOFR5cGU+LCBVOFR5cGUsIHN0ZDo6YmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcsIGNvbnN0IFU4VHlwZT4gYmFzZV90eXBlOwotICAgCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fU1REX0lURVJBVE9SX1RSQUlUUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLSAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8QmFzZUl0ZXJhdG9yPjo6dmFsdWVfdHlwZSBiYXNlX3ZhbHVlX3R5cGU7Ci0KLSAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKGJhc2VfdmFsdWVfdHlwZSkqQ0hBUl9CSVQgPT0gMzIpOwotICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChzaXplb2YoVThUeXBlKSpDSEFSX0JJVCA9PSA4KTsKLSNlbmRpZgotCi1wdWJsaWM6Ci0gICB0eXBlbmFtZSBiYXNlX3R5cGU6OnJlZmVyZW5jZQotICAgICAgZGVyZWZlcmVuY2UoKWNvbnN0Ci0gICB7Ci0gICAgICBpZihtX2N1cnJlbnQgPT0gNCkKLSAgICAgICAgIGV4dHJhY3RfY3VycmVudCgpOwotICAgICAgcmV0dXJuIG1fdmFsdWVzW21fY3VycmVudF07Ci0gICB9Ci0gICBib29sIGVxdWFsKGNvbnN0IHUzMl90b191OF9pdGVyYXRvciYgdGhhdCljb25zdAotICAgewotICAgICAgaWYobV9wb3NpdGlvbiA9PSB0aGF0Lm1fcG9zaXRpb24pCi0gICAgICB7Ci0gICAgICAgICAvLyBlaXRoZXIgdGhlIG1fY3VycmVudCdzIG11c3QgYmUgZXF1YWwsIG9yIG9uZSBtdXN0IGJlIDAgYW5kIAotICAgICAgICAgLy8gdGhlIG90aGVyIDQ6IHdoaWNoIG1lYW5zIG5laXRoZXIgbXVzdCBoYXZlIGJpdHMgMSBvciAyIHNldDoKLSAgICAgICAgIHJldHVybiAobV9jdXJyZW50ID09IHRoYXQubV9jdXJyZW50KQotICAgICAgICAgICAgfHwgKCgobV9jdXJyZW50IHwgdGhhdC5tX2N1cnJlbnQpICYgMykgPT0gMCk7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0gICB2b2lkIGluY3JlbWVudCgpCi0gICB7Ci0gICAgICAvLyBpZiB3ZSBoYXZlIGEgcGVuZGluZyByZWFkIHRoZW4gcmVhZCBub3csIHNvIHRoYXQgd2Uga25vdyB3aGV0aGVyCi0gICAgICAvLyB0byBza2lwIGEgcG9zaXRpb24sIG9yIG1vdmUgdG8gYSBsb3ctc3Vycm9nYXRlOgotICAgICAgaWYobV9jdXJyZW50ID09IDQpCi0gICAgICB7Ci0gICAgICAgICAvLyBwZW5kaW5nIHJlYWQ6Ci0gICAgICAgICBleHRyYWN0X2N1cnJlbnQoKTsKLSAgICAgIH0KLSAgICAgIC8vIG1vdmUgdG8gdGhlIG5leHQgc3Vycm9nYXRlIHBvc2l0aW9uOgotICAgICAgKyttX2N1cnJlbnQ7Ci0gICAgICAvLyBpZiB3ZSd2ZSByZWFjaGVkIHRoZSBlbmQgc2tpcCBhIHBvc2l0aW9uOgotICAgICAgaWYobV92YWx1ZXNbbV9jdXJyZW50XSA9PSAwKQotICAgICAgewotICAgICAgICAgbV9jdXJyZW50ID0gNDsKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIH0KLSAgIH0KLSAgIHZvaWQgZGVjcmVtZW50KCkKLSAgIHsKLSAgICAgIGlmKChtX2N1cnJlbnQgJiAzKSA9PSAwKQotICAgICAgewotICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgZXh0cmFjdF9jdXJyZW50KCk7Ci0gICAgICAgICBtX2N1cnJlbnQgPSAzOwotICAgICAgICAgd2hpbGUobV9jdXJyZW50ICYmIChtX3ZhbHVlc1ttX2N1cnJlbnRdID09IDApKQotICAgICAgICAgICAgLS1tX2N1cnJlbnQ7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICAgICAtLW1fY3VycmVudDsKLSAgIH0KLSAgIEJhc2VJdGVyYXRvciBiYXNlKCljb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcG9zaXRpb247Ci0gICB9Ci0gICAvLyBjb25zdHJ1Y3Q6Ci0gICB1MzJfdG9fdThfaXRlcmF0b3IoKSA6IG1fcG9zaXRpb24oKSwgbV9jdXJyZW50KDApCi0gICB7Ci0gICAgICBtX3ZhbHVlc1swXSA9IDA7Ci0gICAgICBtX3ZhbHVlc1sxXSA9IDA7Ci0gICAgICBtX3ZhbHVlc1syXSA9IDA7Ci0gICAgICBtX3ZhbHVlc1szXSA9IDA7Ci0gICAgICBtX3ZhbHVlc1s0XSA9IDA7Ci0gICB9Ci0gICB1MzJfdG9fdThfaXRlcmF0b3IoQmFzZUl0ZXJhdG9yIGIpIDogbV9wb3NpdGlvbihiKSwgbV9jdXJyZW50KDQpCi0gICB7Ci0gICAgICBtX3ZhbHVlc1swXSA9IDA7Ci0gICAgICBtX3ZhbHVlc1sxXSA9IDA7Ci0gICAgICBtX3ZhbHVlc1syXSA9IDA7Ci0gICAgICBtX3ZhbHVlc1szXSA9IDA7Ci0gICAgICBtX3ZhbHVlc1s0XSA9IDA7Ci0gICB9Ci1wcml2YXRlOgotCi0gICB2b2lkIGV4dHJhY3RfY3VycmVudCgpY29uc3QKLSAgIHsKLSAgICAgIG5kbmJvb3N0Ojp1aW50MzJfdCBjID0gKm1fcG9zaXRpb247Ci0gICAgICBpZihjID4gMHgxMEZGRkZ1KQotICAgICAgICAgZGV0YWlsOjppbnZhbGlkX3V0ZjMyX2NvZGVfcG9pbnQoYyk7Ci0gICAgICBpZihjIDwgMHg4MHUpCi0gICAgICB7Ci0gICAgICAgICBtX3ZhbHVlc1swXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGMpOwotICAgICAgICAgbV92YWx1ZXNbMV0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigwdSk7Ci0gICAgICAgICBtX3ZhbHVlc1syXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDB1KTsKLSAgICAgICAgIG1fdmFsdWVzWzNdID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMHUpOwotICAgICAgfQotICAgICAgZWxzZSBpZihjIDwgMHg4MDB1KQotICAgICAgewotICAgICAgICAgbV92YWx1ZXNbMF0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigweEMwdSArIChjID4+IDYpKTsKLSAgICAgICAgIG1fdmFsdWVzWzFdID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMHg4MHUgKyAoYyAmIDB4M0Z1KSk7Ci0gICAgICAgICBtX3ZhbHVlc1syXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDB1KTsKLSAgICAgICAgIG1fdmFsdWVzWzNdID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMHUpOwotICAgICAgfQotICAgICAgZWxzZSBpZihjIDwgMHgxMDAwMHUpCi0gICAgICB7Ci0gICAgICAgICBtX3ZhbHVlc1swXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDB4RTB1ICsgKGMgPj4gMTIpKTsKLSAgICAgICAgIG1fdmFsdWVzWzFdID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMHg4MHUgKyAoKGMgPj4gNikgJiAweDNGdSkpOwotICAgICAgICAgbV92YWx1ZXNbMl0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigweDgwdSArIChjICYgMHgzRnUpKTsKLSAgICAgICAgIG1fdmFsdWVzWzNdID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMHUpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgbV92YWx1ZXNbMF0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigweEYwdSArIChjID4+IDE4KSk7Ci0gICAgICAgICBtX3ZhbHVlc1sxXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDB4ODB1ICsgKChjID4+IDEyKSAmIDB4M0Z1KSk7Ci0gICAgICAgICBtX3ZhbHVlc1syXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDB4ODB1ICsgKChjID4+IDYpICYgMHgzRnUpKTsKLSAgICAgICAgIG1fdmFsdWVzWzNdID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMHg4MHUgKyAoYyAmIDB4M0Z1KSk7Ci0gICAgICB9Ci0gICAgICBtX2N1cnJlbnQ9IDA7Ci0gICB9Ci0gICBCYXNlSXRlcmF0b3IgbV9wb3NpdGlvbjsKLSAgIG11dGFibGUgVThUeXBlIG1fdmFsdWVzWzVdOwotICAgbXV0YWJsZSB1bnNpZ25lZCBtX2N1cnJlbnQ7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQmFzZUl0ZXJhdG9yLCBjbGFzcyBVMzJUeXBlID0gOjpuZG5ib29zdDo6dWludDMyX3Q+Ci1jbGFzcyB1OF90b191MzJfaXRlcmF0b3IKLSAgIDogcHVibGljIG5kbmJvb3N0OjppdGVyYXRvcl9mYWNhZGU8dThfdG9fdTMyX2l0ZXJhdG9yPEJhc2VJdGVyYXRvciwgVTMyVHlwZT4sIFUzMlR5cGUsIHN0ZDo6YmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcsIGNvbnN0IFUzMlR5cGU+Ci17Ci0gICB0eXBlZGVmIG5kbmJvb3N0OjppdGVyYXRvcl9mYWNhZGU8dThfdG9fdTMyX2l0ZXJhdG9yPEJhc2VJdGVyYXRvciwgVTMyVHlwZT4sIFUzMlR5cGUsIHN0ZDo6YmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcsIGNvbnN0IFUzMlR5cGU+IGJhc2VfdHlwZTsKLSAgIC8vIHNwZWNpYWwgdmFsdWVzIGZvciBwZW5kaW5nIGl0ZXJhdG9yIHJlYWRzOgotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFUzMlR5cGUsIHBlbmRpbmdfcmVhZCA9IDB4ZmZmZmZmZmZ1KTsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9JVEVSQVRPUl9UUkFJVFMpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0gICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPEJhc2VJdGVyYXRvcj46OnZhbHVlX3R5cGUgYmFzZV92YWx1ZV90eXBlOwotCi0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKHNpemVvZihiYXNlX3ZhbHVlX3R5cGUpKkNIQVJfQklUID09IDgpOwotICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChzaXplb2YoVTMyVHlwZSkqQ0hBUl9CSVQgPT0gMzIpOwotI2VuZGlmCi0KLXB1YmxpYzoKLSAgIHR5cGVuYW1lIGJhc2VfdHlwZTo6cmVmZXJlbmNlCi0gICAgICBkZXJlZmVyZW5jZSgpY29uc3QKLSAgIHsKLSAgICAgIGlmKG1fdmFsdWUgPT0gcGVuZGluZ19yZWFkKQotICAgICAgICAgZXh0cmFjdF9jdXJyZW50KCk7Ci0gICAgICByZXR1cm4gbV92YWx1ZTsKLSAgIH0KLSAgIGJvb2wgZXF1YWwoY29uc3QgdThfdG9fdTMyX2l0ZXJhdG9yJiB0aGF0KWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9wb3NpdGlvbiA9PSB0aGF0Lm1fcG9zaXRpb247Ci0gICB9Ci0gICB2b2lkIGluY3JlbWVudCgpCi0gICB7Ci0gICAgICAvLyBXZSBtdXN0IG5vdCBzdGFydCB3aXRoIGEgY29udGludWF0aW9uIGNoYXJhY3RlcjoKLSAgICAgIGlmKChzdGF0aWNfY2FzdDxuZG5ib29zdDo6dWludDhfdD4oKm1fcG9zaXRpb24pICYgMHhDMCkgPT0gMHg4MCkKLSAgICAgICAgIGludmFsaWRfc2VxdWVuY2UoKTsKLSAgICAgIC8vIHNraXAgaGlnaCBzdXJyb2dhdGUgZmlyc3QgaWYgdGhlcmUgaXMgb25lOgotICAgICAgdW5zaWduZWQgYyA9IGRldGFpbDo6dXRmOF9ieXRlX2NvdW50KCptX3Bvc2l0aW9uKTsKLSAgICAgIGlmKG1fdmFsdWUgPT0gcGVuZGluZ19yZWFkKQotICAgICAgewotICAgICAgICAgLy8gU2luY2Ugd2UgaGF2ZW4ndCByZWFkIGluIGEgdmFsdWUsIHdlIG5lZWQgdG8gdmFsaWRhdGUgdGhlIGNvZGUgcG9pbnRzOgotICAgICAgICAgZm9yKHVuc2lnbmVkIGkgPSAwOyBpIDwgYzsgKytpKQotICAgICAgICAgewotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgICAgLy8gV2UgbXVzdCBoYXZlIGEgY29udGludWF0aW9uIGJ5dGU6Ci0gICAgICAgICAgICBpZigoaSAhPSBjIC0gMSkgJiYgKChzdGF0aWNfY2FzdDxuZG5ib29zdDo6dWludDhfdD4oKm1fcG9zaXRpb24pICYgMHhDMCkgIT0gMHg4MCkpCi0gICAgICAgICAgICAgICBpbnZhbGlkX3NlcXVlbmNlKCk7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICBzdGQ6OmFkdmFuY2UobV9wb3NpdGlvbiwgYyk7Ci0gICAgICB9Ci0gICAgICBtX3ZhbHVlID0gcGVuZGluZ19yZWFkOwotICAgfQotICAgdm9pZCBkZWNyZW1lbnQoKQotICAgewotICAgICAgLy8gS2VlcCBiYWNrdHJhY2tpbmcgdW50aWwgd2UgZG9uJ3QgaGF2ZSBhIHRyYWlsaW5nIGNoYXJhY3RlcjoKLSAgICAgIHVuc2lnbmVkIGNvdW50ID0gMDsKLSAgICAgIHdoaWxlKCgqLS1tX3Bvc2l0aW9uICYgMHhDMHUpID09IDB4ODB1KSArK2NvdW50OwotICAgICAgLy8gbm93IGNoZWNrIHRoYXQgdGhlIHNlcXVlbmNlIHdhcyB2YWxpZDoKLSAgICAgIGlmKGNvdW50ICE9IGRldGFpbDo6dXRmOF90cmFpbGluZ19ieXRlX2NvdW50KCptX3Bvc2l0aW9uKSkKLSAgICAgICAgIGludmFsaWRfc2VxdWVuY2UoKTsKLSAgICAgIG1fdmFsdWUgPSBwZW5kaW5nX3JlYWQ7Ci0gICB9Ci0gICBCYXNlSXRlcmF0b3IgYmFzZSgpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3Bvc2l0aW9uOwotICAgfQotICAgLy8gY29uc3RydWN0OgotICAgdThfdG9fdTMyX2l0ZXJhdG9yKCkgOiBtX3Bvc2l0aW9uKCkKLSAgIHsKLSAgICAgIG1fdmFsdWUgPSBwZW5kaW5nX3JlYWQ7Ci0gICB9Ci0gICB1OF90b191MzJfaXRlcmF0b3IoQmFzZUl0ZXJhdG9yIGIpIDogbV9wb3NpdGlvbihiKQotICAgewotICAgICAgbV92YWx1ZSA9IHBlbmRpbmdfcmVhZDsKLSAgIH0KLSAgIC8vCi0gICAvLyBDaGVja2VkIGNvbnN0cnVjdG9yOgotICAgLy8KLSAgIHU4X3RvX3UzMl9pdGVyYXRvcihCYXNlSXRlcmF0b3IgYiwgQmFzZUl0ZXJhdG9yIHN0YXJ0LCBCYXNlSXRlcmF0b3IgZW5kKSA6IG1fcG9zaXRpb24oYikKLSAgIHsKLSAgICAgIG1fdmFsdWUgPSBwZW5kaW5nX3JlYWQ7Ci0gICAgICAvLwotICAgICAgLy8gV2UgbXVzdCBub3Qgc3RhcnQgd2l0aCBhIGNvbnRpbnVhdGlvbiBjaGFyYWN0ZXIsIG9yIGVuZCB3aXRoIGEgCi0gICAgICAvLyB0cnVuY2F0ZWQgVVRGLTggc2VxdWVuY2Ugb3RoZXJ3aXNlIHdlIHJ1biB0aGUgcmlzayBvZiBnb2luZyBwYXN0Ci0gICAgICAvLyB0aGUgc3RhcnQvZW5kIG9mIHRoZSB1bmRlcmx5aW5nIHNlcXVlbmNlOgotICAgICAgLy8KLSAgICAgIGlmKHN0YXJ0ICE9IGVuZCkKLSAgICAgIHsKLSAgICAgICAgIHVuc2lnbmVkIGNoYXIgdiA9ICpzdGFydDsKLSAgICAgICAgIGlmKCh2ICYgMHhDMHUpID09IDB4ODB1KQotICAgICAgICAgICAgaW52YWxpZF9zZXF1ZW5jZSgpOwotICAgICAgICAgaWYoKGIgIT0gc3RhcnQpICYmIChiICE9IGVuZCkgJiYgKCgqYiAmIDB4QzB1KSA9PSAweDgwdSkpCi0gICAgICAgICAgICBpbnZhbGlkX3NlcXVlbmNlKCk7Ci0gICAgICAgICBCYXNlSXRlcmF0b3IgcG9zID0gZW5kOwotICAgICAgICAgZG8KLSAgICAgICAgIHsKLSAgICAgICAgICAgIHYgPSAqLS1wb3M7Ci0gICAgICAgICB9Ci0gICAgICAgICB3aGlsZSgoc3RhcnQgIT0gcG9zKSAmJiAoKHYgJiAweEMwdSkgPT0gMHg4MHUpKTsKLSAgICAgICAgIHN0ZDo6cHRyZGlmZl90IGV4dHJhID0gZGV0YWlsOjp1dGY4X2J5dGVfY291bnQodik7Ci0gICAgICAgICBpZihzdGQ6OmRpc3RhbmNlKHBvcywgZW5kKSA8IGV4dHJhKQotICAgICAgICAgICAgaW52YWxpZF9zZXF1ZW5jZSgpOwotICAgICAgfQotICAgfQotcHJpdmF0ZToKLSAgIHN0YXRpYyB2b2lkIGludmFsaWRfc2VxdWVuY2UoKQotICAgewotICAgICAgc3RkOjpvdXRfb2ZfcmFuZ2UgZSgiSW52YWxpZCBVVEYtOCBzZXF1ZW5jZSBlbmNvdW50ZXJlZCB3aGlsZSB0cnlpbmcgdG8gZW5jb2RlIFVURi0zMiBjaGFyYWN0ZXIiKTsKLSAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oZSk7Ci0gICB9Ci0gICB2b2lkIGV4dHJhY3RfY3VycmVudCgpY29uc3QKLSAgIHsKLSAgICAgIG1fdmFsdWUgPSBzdGF0aWNfY2FzdDxVMzJUeXBlPihzdGF0aWNfY2FzdDwgOjpuZG5ib29zdDo6dWludDhfdD4oKm1fcG9zaXRpb24pKTsKLSAgICAgIC8vIHdlIG11c3Qgbm90IGhhdmUgYSBjb250aW51YXRpb24gY2hhcmFjdGVyOgotICAgICAgaWYoKG1fdmFsdWUgJiAweEMwdSkgPT0gMHg4MHUpCi0gICAgICAgICBpbnZhbGlkX3NlcXVlbmNlKCk7Ci0gICAgICAvLyBzZWUgaG93IG1hbnkgZXh0cmEgYnl0ZXMgd2UgaGF2ZToKLSAgICAgIHVuc2lnbmVkIGV4dHJhID0gZGV0YWlsOjp1dGY4X3RyYWlsaW5nX2J5dGVfY291bnQoKm1fcG9zaXRpb24pOwotICAgICAgLy8gZXh0cmFjdCB0aGUgZXh0cmEgYml0cywgNiBmcm9tIGVhY2ggZXh0cmEgYnl0ZToKLSAgICAgIEJhc2VJdGVyYXRvciBuZXh0KG1fcG9zaXRpb24pOwotICAgICAgZm9yKHVuc2lnbmVkIGMgPSAwOyBjIDwgZXh0cmE7ICsrYykKLSAgICAgIHsKLSAgICAgICAgICsrbmV4dDsKLSAgICAgICAgIG1fdmFsdWUgPDw9IDY7Ci0gICAgICAgICAvLyBXZSBtdXN0IGhhdmUgYSBjb250aW51YXRpb24gYnl0ZToKLSAgICAgICAgIGlmKChzdGF0aWNfY2FzdDxuZG5ib29zdDo6dWludDhfdD4oKm5leHQpICYgMHhDMCkgIT0gMHg4MCkKLSAgICAgICAgICAgIGludmFsaWRfc2VxdWVuY2UoKTsKLSAgICAgICAgIG1fdmFsdWUgKz0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OnVpbnQ4X3Q+KCpuZXh0KSAmIDB4M0Z1OwotICAgICAgfQotICAgICAgLy8gd2Ugbm93IG5lZWQgdG8gcmVtb3ZlIGEgZmV3IG9mIHRoZSBsZWZ0bW9zdCBiaXRzLCBidXQgaG93IG1hbnkgZGVwZW5kcwotICAgICAgLy8gdXBvbiBob3cgbWFueSBleHRyYSBieXRlcyB3ZSd2ZSBleHRyYWN0ZWQ6Ci0gICAgICBzdGF0aWMgY29uc3QgbmRuYm9vc3Q6OnVpbnQzMl90IG1hc2tzWzRdID0gCi0gICAgICB7Ci0gICAgICAgICAweDdGdSwKLSAgICAgICAgIDB4N0ZGdSwKLSAgICAgICAgIDB4RkZGRnUsCi0gICAgICAgICAweDFGRkZGRnUsCi0gICAgICB9OwotICAgICAgbV92YWx1ZSAmPSBtYXNrc1tleHRyYV07Ci0gICAgICAvLyBjaGVjayB0aGUgcmVzdWx0OgotICAgICAgaWYobV92YWx1ZSA+IHN0YXRpY19jYXN0PFUzMlR5cGU+KDB4MTBGRkZGdSkpCi0gICAgICAgICBpbnZhbGlkX3NlcXVlbmNlKCk7Ci0gICB9Ci0gICBCYXNlSXRlcmF0b3IgbV9wb3NpdGlvbjsKLSAgIG11dGFibGUgVTMyVHlwZSBtX3ZhbHVlOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEJhc2VJdGVyYXRvcj4KLWNsYXNzIHV0ZjE2X291dHB1dF9pdGVyYXRvcgotewotcHVibGljOgotICAgdHlwZWRlZiB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7Ci0gICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIG5kbmJvb3N0Ojp1aW50MzJfdCogICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXI7Ci0gICB0eXBlZGVmIG5kbmJvb3N0Ojp1aW50MzJfdCYgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsKLSAgIHR5cGVkZWYgc3RkOjpvdXRwdXRfaXRlcmF0b3JfdGFnICAgICAgICAgICAgICAgaXRlcmF0b3JfY2F0ZWdvcnk7Ci0KLSAgIHV0ZjE2X291dHB1dF9pdGVyYXRvcihjb25zdCBCYXNlSXRlcmF0b3ImIGIpCi0gICAgICA6IG1fcG9zaXRpb24oYil7fQotICAgdXRmMTZfb3V0cHV0X2l0ZXJhdG9yKGNvbnN0IHV0ZjE2X291dHB1dF9pdGVyYXRvciYgdGhhdCkKLSAgICAgIDogbV9wb3NpdGlvbih0aGF0Lm1fcG9zaXRpb24pe30KLSAgIHV0ZjE2X291dHB1dF9pdGVyYXRvciYgb3BlcmF0b3I9KGNvbnN0IHV0ZjE2X291dHB1dF9pdGVyYXRvciYgdGhhdCkKLSAgIHsKLSAgICAgIG1fcG9zaXRpb24gPSB0aGF0Lm1fcG9zaXRpb247Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICB9Ci0gICBjb25zdCB1dGYxNl9vdXRwdXRfaXRlcmF0b3ImIG9wZXJhdG9yKigpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiAqdGhpczsKLSAgIH0KLSAgIHZvaWQgb3BlcmF0b3I9KG5kbmJvb3N0Ojp1aW50MzJfdCB2YWwpY29uc3QKLSAgIHsKLSAgICAgIHB1c2godmFsKTsKLSAgIH0KLSAgIHV0ZjE2X291dHB1dF9pdGVyYXRvciYgb3BlcmF0b3IrKygpCi0gICB7Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICB9Ci0gICB1dGYxNl9vdXRwdXRfaXRlcmF0b3ImIG9wZXJhdG9yKysoaW50KQotICAgewotICAgICAgcmV0dXJuICp0aGlzOwotICAgfQotICAgQmFzZUl0ZXJhdG9yIGJhc2UoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9wb3NpdGlvbjsKLSAgIH0KLXByaXZhdGU6Ci0gICB2b2lkIHB1c2gobmRuYm9vc3Q6OnVpbnQzMl90IHYpY29uc3QKLSAgIHsKLSAgICAgIGlmKHYgPj0gMHgxMDAwMHUpCi0gICAgICB7Ci0gICAgICAgICAvLyBiZWdpbiBieSBjaGVja2luZyBmb3IgYSBjb2RlIHBvaW50IG91dCBvZiByYW5nZToKLSAgICAgICAgIGlmKHYgPiAweDEwRkZGRnUpCi0gICAgICAgICAgICBkZXRhaWw6OmludmFsaWRfdXRmMzJfY29kZV9wb2ludCh2KTsKLSAgICAgICAgIC8vIHNwbGl0IGludG8gdHdvIHN1cnJvZ2F0ZXM6Ci0gICAgICAgICAqbV9wb3NpdGlvbisrID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OnVpbnQxNl90Pih2ID4+IDEwKSArIGRldGFpbDo6aGlnaF9zdXJyb2dhdGVfYmFzZTsKLSAgICAgICAgICptX3Bvc2l0aW9uKysgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6dWludDE2X3Q+KHYgJiBkZXRhaWw6OnRlbl9iaXRfbWFzaykgKyBkZXRhaWw6Omxvd19zdXJyb2dhdGVfYmFzZTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgIC8vIDE2LWJpdCBjb2RlIHBvaW50OgotICAgICAgICAgLy8gdmFsdWUgbXVzdCBub3QgYmUgYSBzdXJyb2dhdGU6Ci0gICAgICAgICBpZihkZXRhaWw6OmlzX3N1cnJvZ2F0ZSh2KSkKLSAgICAgICAgICAgIGRldGFpbDo6aW52YWxpZF91dGYzMl9jb2RlX3BvaW50KHYpOwotICAgICAgICAgKm1fcG9zaXRpb24rKyA9IHN0YXRpY19jYXN0PG5kbmJvb3N0Ojp1aW50MTZfdD4odik7Ci0gICAgICB9Ci0gICB9Ci0gICBtdXRhYmxlIEJhc2VJdGVyYXRvciBtX3Bvc2l0aW9uOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEJhc2VJdGVyYXRvcj4KLWNsYXNzIHV0Zjhfb3V0cHV0X2l0ZXJhdG9yCi17Ci1wdWJsaWM6Ci0gICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsKLSAgIHR5cGVkZWYgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfdHlwZTsKLSAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVpbnQzMl90KiAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlcjsKLSAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVpbnQzMl90JiAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlOwotICAgdHlwZWRlZiBzdGQ6Om91dHB1dF9pdGVyYXRvcl90YWcgICAgICAgICAgICAgICBpdGVyYXRvcl9jYXRlZ29yeTsKLQotICAgdXRmOF9vdXRwdXRfaXRlcmF0b3IoY29uc3QgQmFzZUl0ZXJhdG9yJiBiKQotICAgICAgOiBtX3Bvc2l0aW9uKGIpe30KLSAgIHV0Zjhfb3V0cHV0X2l0ZXJhdG9yKGNvbnN0IHV0Zjhfb3V0cHV0X2l0ZXJhdG9yJiB0aGF0KQotICAgICAgOiBtX3Bvc2l0aW9uKHRoYXQubV9wb3NpdGlvbil7fQotICAgdXRmOF9vdXRwdXRfaXRlcmF0b3ImIG9wZXJhdG9yPShjb25zdCB1dGY4X291dHB1dF9pdGVyYXRvciYgdGhhdCkKLSAgIHsKLSAgICAgIG1fcG9zaXRpb24gPSB0aGF0Lm1fcG9zaXRpb247Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICB9Ci0gICBjb25zdCB1dGY4X291dHB1dF9pdGVyYXRvciYgb3BlcmF0b3IqKCljb25zdAotICAgewotICAgICAgcmV0dXJuICp0aGlzOwotICAgfQotICAgdm9pZCBvcGVyYXRvcj0obmRuYm9vc3Q6OnVpbnQzMl90IHZhbCljb25zdAotICAgewotICAgICAgcHVzaCh2YWwpOwotICAgfQotICAgdXRmOF9vdXRwdXRfaXRlcmF0b3ImIG9wZXJhdG9yKysoKQotICAgewotICAgICAgcmV0dXJuICp0aGlzOwotICAgfQotICAgdXRmOF9vdXRwdXRfaXRlcmF0b3ImIG9wZXJhdG9yKysoaW50KQotICAgewotICAgICAgcmV0dXJuICp0aGlzOwotICAgfQotICAgQmFzZUl0ZXJhdG9yIGJhc2UoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9wb3NpdGlvbjsKLSAgIH0KLXByaXZhdGU6Ci0gICB2b2lkIHB1c2gobmRuYm9vc3Q6OnVpbnQzMl90IGMpY29uc3QKLSAgIHsKLSAgICAgIGlmKGMgPiAweDEwRkZGRnUpCi0gICAgICAgICBkZXRhaWw6OmludmFsaWRfdXRmMzJfY29kZV9wb2ludChjKTsKLSAgICAgIGlmKGMgPCAweDgwdSkKLSAgICAgIHsKLSAgICAgICAgICptX3Bvc2l0aW9uKysgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYoYyA8IDB4ODAwdSkKLSAgICAgIHsKLSAgICAgICAgICptX3Bvc2l0aW9uKysgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigweEMwdSArIChjID4+IDYpKTsKLSAgICAgICAgICptX3Bvc2l0aW9uKysgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigweDgwdSArIChjICYgMHgzRnUpKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYoYyA8IDB4MTAwMDB1KQotICAgICAgewotICAgICAgICAgKm1fcG9zaXRpb24rKyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDB4RTB1ICsgKGMgPj4gMTIpKTsKLSAgICAgICAgICptX3Bvc2l0aW9uKysgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigweDgwdSArICgoYyA+PiA2KSAmIDB4M0Z1KSk7Ci0gICAgICAgICAqbV9wb3NpdGlvbisrID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMHg4MHUgKyAoYyAmIDB4M0Z1KSk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICAqbV9wb3NpdGlvbisrID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMHhGMHUgKyAoYyA+PiAxOCkpOwotICAgICAgICAgKm1fcG9zaXRpb24rKyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDB4ODB1ICsgKChjID4+IDEyKSAmIDB4M0Z1KSk7Ci0gICAgICAgICAqbV9wb3NpdGlvbisrID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMHg4MHUgKyAoKGMgPj4gNikgJiAweDNGdSkpOwotICAgICAgICAgKm1fcG9zaXRpb24rKyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDB4ODB1ICsgKGMgJiAweDNGdSkpOwotICAgICAgfQotICAgfQotICAgbXV0YWJsZSBCYXNlSXRlcmF0b3IgbV9wb3NpdGlvbjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SRUdFWF9VTklDT0RFX0lURVJBVE9SX0hQUAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3JlZ2V4X3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3JlZ2V4X3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmZGI4NzQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC9yZWdleF90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLSAKLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICByZWdleF90cmFpdHMuaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBEZWNsYXJlcyByZWd1bGFyIGV4cHJlc3Npb24gdHJhaXRzIGNsYXNzZXMuCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVFJBSVRTX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9UUkFJVFNfSFBQCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfQ09ORklHX0hQUAotIyAgaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvY29uZmlnLmhwcD4KLSNlbmRpZgotCi0jICBpZm5kZWYgTkROQk9PU1RfUkVHRVhfVFJBSVRTX0hQUF9JTkNMVURFRAotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfdHJhaXRzLmhwcD4KLSMgIGVuZGlmCi0KLSNlbmRpZiAvLyBpbmNsdWRlCi0KLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC91c2VyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdXNlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxNTFmYzEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC91c2VyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0gCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgdXNlci5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IFVzZXIgc2V0dGFibGUgb3B0aW9ucy4KLSAgKi8KLQotLy8gZGVmaW5lIGlmIHlvdSB3YW50IHRoZSByZWdleCBsaWJyYXJ5IHRvIHVzZSB0aGUgQyBsb2NhbGUKLS8vIGV2ZW4gb24gV2luMzI6Ci0vLyAjZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1VTRV9DX0xPQ0FMRQotCi0vLyBkZWZpbmUgdGhpcyBpcyB5b3Ugd2FudCB0aGUgcmVnZXggbGlicmFyeSB0byB1c2UgdGhlIEMrKwotLy8gbG9jYWxlOgotLy8gI2RlZmluZSBORE5CT09TVF9SRUdFWF9VU0VfQ1BQX0xPQ0FMRQotCi0vLyBkZWZpbmUgdGhpcyBpZiB0aGUgcnVudGltZSBsaWJyYXJ5IGlzIGEgZGxsLCBhbmQgeW91Ci0vLyB3YW50IE5ETkJPT1NUX1JFR0VYX0RZTl9MSU5LIHRvIHNldCB1cCBkbGwgZXhwb3J0cy9pbXBvcnRzCi0vLyB3aXRoIF9fZGVjbHNwZWMoZGxsZXhwb3J0KS9fX2RlY2xzcGVjKGRsbGltcG9ydC4pCi0vLyAjZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0hBU19ETExfUlVOVElNRQotCi0vLyBkZWZpbmUgdGhpcyBpZiB5b3Ugd2FudCB0byBkeW5hbWljYWxseSBsaW5rIHRvIHJlZ2V4LAotLy8gaWYgdGhlIHJ1bnRpbWUgbGlicmFyeSBpcyBhbHNvIGEgZGxsIChQcm9iYWJseSBXaW4zMiBzcGVjaWZpYywKLS8vIGFuZCBoYXMgbm8gZWZmZWN0IHVubGVzcyBORE5CT09TVF9SRUdFWF9IQVNfRExMX1JVTlRJTUUgaXMgc2V0KToKLS8vICNkZWZpbmUgTkROQk9PU1RfUkVHRVhfRFlOX0xJTksKLQotLy8gZGVmaW5lIHRoaXMgaWYgeW91IGRvbid0IHdhbnQgdGhlIGxpYiB0byBhdXRvbWF0aWNhbGx5Ci0vLyBzZWxlY3QgaXRzIGxpbmsgbGlicmFyaWVzOgotLy8gI2RlZmluZSBORE5CT09TVF9SRUdFWF9OT19MSUIKLQotLy8gZGVmaW5lIHRoaXMgaWYgdGVtcGxhdGVzIHdpdGggc3dpdGNoIHN0YXRlbWVudHMgY2F1c2UgcHJvYmxlbXM6Ci0vLyAjZGVmaW5lIE5ETkJPT1NUX1JFR0VYX05PX1RFTVBMQVRFX1NXSVRDSF9NRVJHRQotIAotLy8gZGVmaW5lIHRoaXMgdG8gZGlzYWJsZSBXaW4zMiBzdXBwb3J0IHdoZW4gYXZhaWxhYmxlOgotLy8gI2RlZmluZSBORE5CT09TVF9SRUdFWF9OT19XMzIKLQotLy8gZGVmaW5lIHRoaXMgaWYgYm9vbCBpcyBub3QgYSByZWFsIHR5cGU6Ci0vLyAjZGVmaW5lIE5ETkJPT1NUX1JFR0VYX05PX0JPT0wKLQotLy8gZGVmaW5lIHRoaXMgaWYgbm8gdGVtcGxhdGUgaW5zdGFuY2VzIGFyZSB0byBiZSBwbGFjZWQgaW4KLS8vIHRoZSBsaWJyYXJ5IHJhdGhlciB0aGFuIHVzZXJzIG9iamVjdCBmaWxlczoKLS8vICNkZWZpbmUgTkROQk9PU1RfUkVHRVhfTk9fRVhURVJOQUxfVEVNUExBVEVTCi0KLS8vIGRlZmluZSB0aGlzIGlmIHRoZSBmb3J3YXJkIGRlY2xhcmF0aW9ucyBpbiByZWdleF9md2QuaHBwCi0vLyBjYXVzZSBtb3JlIHByb2JsZW1zIHRoYW4gdGhleSBhcmUgd29ydGg6Ci0vLyAjZGVmaW5lIE5ETkJPT1NUX1JFR0VYX05PX0ZXRAotCi0vLyBkZWZpbmUgdGhpcyBpZiB5b3VyIGNvbXBpbGVyIHN1cHBvcnRzIE1TIFdpbmRvd3Mgc3RydWN0dXJlZAotLy8gZXhjZXB0aW9uIGhhbmRsaW5nLgotLy8gI2RlZmluZSBORE5CT09TVF9SRUdFWF9IQVNfTVNfU1RBQ0tfR1VBUkQKLQotLy8gZGVmaW5lIHRoaXMgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSByZWN1cnNpdmUgYWxnb3JpdGhtCi0vLyBldmVuIGlmIE5ETkJPT1NUX1JFR0VYX0hBU19NU19TVEFDS19HVUFSRCBpcyBub3QgZGVmaW5lZC4KLS8vICNkZWZpbmUgTkROQk9PU1RfUkVHRVhfUkVDVVJTSVZFCi0KLS8vIGRlZmluZSB0aGlzIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgbm9uLXJlY3Vyc2l2ZQotLy8gYWxnb3JpdGhtLCBldmVuIGlmIHRoZSByZWN1cnNpdmUgdmVyc2lvbiB3b3VsZCBiZSB0aGUgZGVmYXVsdC4KLS8vICNkZWZpbmUgTkROQk9PU1RfUkVHRVhfTk9OX1JFQ1VSU0lWRQotCi0vLyBkZWZpbmUgdGhpcyBpZiB5b3Ugd2FudCB0byBzZXQgdGhlIHNpemUgb2YgdGhlIG1lbW9yeSBibG9ja3MKLS8vIHVzZWQgYnkgdGhlIG5vbi1yZWN1cnNpdmUgYWxnb3JpdGhtLgotLy8gI2RlZmluZSBORE5CT09TVF9SRUdFWF9CTE9DS1NJWkUgNDA5NgotCi0vLyBkZWZpbmUgdGhpcyBpZiB5b3Ugd2FudCB0byBzZXQgdGhlIG1heGltdW0gbnVtYmVyIG9mIG1lbW9yeSBibG9ja3MKLS8vIHVzZWQgYnkgdGhlIG5vbi1yZWN1cnNpdmUgYWxnb3JpdGhtLgotLy8gI2RlZmluZSBORE5CT09TVF9SRUdFWF9NQVhfQkxPQ0tTIDEwMjQKLQotLy8gZGVmaW5lIHRoaXMgaWYgeW91IHdhbnQgdG8gc2V0IHRoZSBtYXhpbXVtIG51bWJlciBvZiBtZW1vcnkgYmxvY2tzCi0vLyBjYWNoZWQgYnkgdGhlIG5vbi1yZWN1cnNpdmUgYWxnb3JpdGhtOiBOb3JtYWxseSB0aGlzIGlzIDE2LCBidXQgY2FuIGJlIAotLy8gaGlnaGVyIGlmIHlvdSBoYXZlIG11bHRpcGxlIHRocmVhZHMgYWxsIHVzaW5nIGJvb3N0LnJlZ2V4LCBvciBsb3dlciAKLS8vIGlmIHlvdSBkb24ndCB3YW50IGJvb3N0LnJlZ2V4IHRvIGNhY2hlIG1lbW9yeS4KLS8vICNkZWZpbmUgTkROQk9PU1RfUkVHRVhfTUFYX0NBQ0hFX0JMT0NLUyAxNgotCi0vLyBkZWZpbmUgdGhpcyBpZiB5b3Ugd2FudCB0byBiZSBhYmxlIHRvIGFjY2VzcyBleHRlbmRlZCBjYXB0dXJlCi0vLyBpbmZvcm1hdGlvbiBpbiB5b3VyIHN1Yl9tYXRjaCdzIChjYXV0aW9uIHRoaXMgd2lsbCBzbG93IHRoaW5ncwotLy8gZG93biBxdWl0ZSBhIGJpdCkuCi0vLyAjZGVmaW5lIE5ETkJPT1NUX1JFR0VYX01BVENIX0VYVFJBCi0KLS8vIGRlZmluZSB0aGlzIGlmIHlvdSB3YW50IHRvIGVuYWJsZSBzdXBwb3J0IGZvciBVbmljb2RlIHZpYSBJQ1UuCi0vLyAjZGVmaW5lIE5ETkJPT1NUX0hBU19JQ1UKLQotLy8gZGVmaW5lIHRoaXMgaWYgeW91IHdhbnQgcmVnZXggdG8gdXNlIF9fY2RlY2wgY2FsbGluZyBjb252ZW5zaW9ucywgZXZlbiB3aGVuIF9fZmFzdGNhbGwgaXMgYXZhaWxhYmxlOgotLy8gI2RlZmluZSBORE5CT09TVF9SRUdFWF9OT19GQVNUQ0FMTApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9iYXNpY19yZWdleC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2Jhc2ljX3JlZ2V4LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWZlNGVhNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2Jhc2ljX3JlZ2V4LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc4MiArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA0IEpvaG4gTWFkZG9jawotICogQ29weXJpZ2h0IDIwMTEgR2FybWluIEx0ZC4gb3IgaXRzIHN1YnNpZGlhcmllcwotICoKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLSAqIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnLyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICBiYXNpY19yZWdleC5jcHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIHRlbXBsYXRlIGNsYXNzIGJhc2ljX3JlZ2V4LgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X0JBU0lDX1JFR0VYX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9WNF9CQVNJQ19SRUdFWF9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uYWwvaGFzaC5ocHA+Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0MjUxIDQyMzEgNDgwMCkKLSNpZiBORE5CT09TVF9NU1ZDIDwgMTYwMAotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0NjYwKQotI2VuZGlmCi0jZW5kaWYKLQotbmFtZXNwYWNlIHJlX2RldGFpbHsKLQotLy8KLS8vIGZvcndhcmQgZGVjbGFyYXRpb24sIHdlIHdpbGwgbmVlZCB0aGlzIG9uZSBsYXRlcjoKLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWNsYXNzIGJhc2ljX3JlZ2V4X3BhcnNlcjsKLQotdGVtcGxhdGUgPGNsYXNzIEk+Ci12b2lkIGJ1YmJsZV9kb3duX29uZShJIGZpcnN0LCBJIGxhc3QpCi17Ci0gICBpZihmaXJzdCAhPSBsYXN0KQotICAgewotICAgICAgSSBuZXh0ID0gbGFzdCAtIDE7Ci0gICAgICB3aGlsZSgobmV4dCAhPSBmaXJzdCkgJiYgKCpuZXh0IDwgKihuZXh0LTEpKSkKLSAgICAgIHsKLSAgICAgICAgIChuZXh0LTEpLT5zd2FwKCpuZXh0KTsKLSAgICAgICAgIC0tbmV4dDsKLSAgICAgIH0KLSAgIH0KLX0KLQotdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yPgotaW5saW5lIGludCBoYXNoX3ZhbHVlX2Zyb21fY2FwdHVyZV9uYW1lKEl0ZXJhdG9yIGksIEl0ZXJhdG9yIGopCi17Ci0gICBzdGQ6OnNpemVfdCByID0gbmRuYm9vc3Q6Omhhc2hfcmFuZ2UoaSwgaik7Ci0gICByICU9ICgoc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgpKCkgLSAxMDAwMSk7Ci0gICByICs9IDEwMDAwOwotICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocik7Ci19Ci0KLWNsYXNzIG5hbWVkX3N1YmV4cHJlc3Npb25zCi17Ci1wdWJsaWM6Ci0gICBzdHJ1Y3QgbmFtZQotICAgewotICAgICAgdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotICAgICAgbmFtZShjb25zdCBjaGFyVCogaSwgY29uc3QgY2hhclQqIGosIGludCBpZHgpCi0gICAgICAgICA6IGluZGV4KGlkeCkgCi0gICAgICB7IAotICAgICAgICAgaGFzaCA9IGhhc2hfdmFsdWVfZnJvbV9jYXB0dXJlX25hbWUoaSwgaik7IAotICAgICAgfQotICAgICAgbmFtZShpbnQgaCwgaW50IGlkeCkKLSAgICAgICAgIDogaW5kZXgoaWR4KSwgaGFzaChoKQotICAgICAgeyAKLSAgICAgIH0KLSAgICAgIGludCBpbmRleDsKLSAgICAgIGludCBoYXNoOwotICAgICAgYm9vbCBvcGVyYXRvciA8IChjb25zdCBuYW1lJiBvdGhlciljb25zdAotICAgICAgewotICAgICAgICAgcmV0dXJuIGhhc2ggPCBvdGhlci5oYXNoOwotICAgICAgfQotICAgICAgYm9vbCBvcGVyYXRvciA9PSAoY29uc3QgbmFtZSYgb3RoZXIpY29uc3QKLSAgICAgIHsKLSAgICAgICAgIHJldHVybiBoYXNoID09IG90aGVyLmhhc2g7IAotICAgICAgfQotICAgICAgdm9pZCBzd2FwKG5hbWUmIG90aGVyKQotICAgICAgewotICAgICAgICAgc3RkOjpzd2FwKGluZGV4LCBvdGhlci5pbmRleCk7Ci0gICAgICAgICBzdGQ6OnN3YXAoaGFzaCwgb3RoZXIuaGFzaCk7Ci0gICAgICB9Ci0gICB9OwotCi0gICB0eXBlZGVmIHN0ZDo6dmVjdG9yPG5hbWU+Ojpjb25zdF9pdGVyYXRvciBjb25zdF9pdGVyYXRvcjsKLSAgIHR5cGVkZWYgc3RkOjpwYWlyPGNvbnN0X2l0ZXJhdG9yLCBjb25zdF9pdGVyYXRvcj4gcmFuZ2VfdHlwZTsKLQotICAgbmFtZWRfc3ViZXhwcmVzc2lvbnMoKXt9Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLSAgIHZvaWQgc2V0X25hbWUoY29uc3QgY2hhclQqIGksIGNvbnN0IGNoYXJUKiBqLCBpbnQgaW5kZXgpCi0gICB7Ci0gICAgICBtX3N1Yl9uYW1lcy5wdXNoX2JhY2sobmFtZShpLCBqLCBpbmRleCkpOwotICAgICAgYnViYmxlX2Rvd25fb25lKG1fc3ViX25hbWVzLmJlZ2luKCksIG1fc3ViX25hbWVzLmVuZCgpKTsKLSAgIH0KLSAgIHRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLSAgIGludCBnZXRfaWQoY29uc3QgY2hhclQqIGksIGNvbnN0IGNoYXJUKiBqKWNvbnN0Ci0gICB7Ci0gICAgICBuYW1lIHQoaSwgaiwgMCk7Ci0gICAgICB0eXBlbmFtZSBzdGQ6OnZlY3RvcjxuYW1lPjo6Y29uc3RfaXRlcmF0b3IgcG9zID0gc3RkOjpsb3dlcl9ib3VuZChtX3N1Yl9uYW1lcy5iZWdpbigpLCBtX3N1Yl9uYW1lcy5lbmQoKSwgdCk7Ci0gICAgICBpZigocG9zICE9IG1fc3ViX25hbWVzLmVuZCgpKSAmJiAoKnBvcyA9PSB0KSkKLSAgICAgIHsKLSAgICAgICAgIHJldHVybiBwb3MtPmluZGV4OwotICAgICAgfQotICAgICAgcmV0dXJuIC0xOwotICAgfQotICAgdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotICAgcmFuZ2VfdHlwZSBlcXVhbF9yYW5nZShjb25zdCBjaGFyVCogaSwgY29uc3QgY2hhclQqIGopY29uc3QKLSAgIHsKLSAgICAgIG5hbWUgdChpLCBqLCAwKTsKLSAgICAgIHJldHVybiBzdGQ6OmVxdWFsX3JhbmdlKG1fc3ViX25hbWVzLmJlZ2luKCksIG1fc3ViX25hbWVzLmVuZCgpLCB0KTsKLSAgIH0KLSAgIGludCBnZXRfaWQoaW50IGgpY29uc3QKLSAgIHsKLSAgICAgIG5hbWUgdChoLCAwKTsKLSAgICAgIHN0ZDo6dmVjdG9yPG5hbWU+Ojpjb25zdF9pdGVyYXRvciBwb3MgPSBzdGQ6Omxvd2VyX2JvdW5kKG1fc3ViX25hbWVzLmJlZ2luKCksIG1fc3ViX25hbWVzLmVuZCgpLCB0KTsKLSAgICAgIGlmKChwb3MgIT0gbV9zdWJfbmFtZXMuZW5kKCkpICYmICgqcG9zID09IHQpKQotICAgICAgewotICAgICAgICAgcmV0dXJuIHBvcy0+aW5kZXg7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gLTE7Ci0gICB9Ci0gICByYW5nZV90eXBlIGVxdWFsX3JhbmdlKGludCBoKWNvbnN0Ci0gICB7Ci0gICAgICBuYW1lIHQoaCwgMCk7Ci0gICAgICByZXR1cm4gc3RkOjplcXVhbF9yYW5nZShtX3N1Yl9uYW1lcy5iZWdpbigpLCBtX3N1Yl9uYW1lcy5lbmQoKSwgdCk7Ci0gICB9Ci1wcml2YXRlOgotICAgc3RkOjp2ZWN0b3I8bmFtZT4gbV9zdWJfbmFtZXM7Ci19OwotCi0vLwotLy8gY2xhc3MgcmVnZXhfZGF0YToKLS8vIHJlcHJlc2VudHMgdGhlIGRhdGEgd2Ugd2lzaCB0byBleHBvc2UgdG8gdGhlIG1hdGNoaW5nIGFsZ29yaXRobXMuCi0vLwotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1zdHJ1Y3QgcmVnZXhfZGF0YSA6IHB1YmxpYyBuYW1lZF9zdWJleHByZXNzaW9ucwotewotICAgdHlwZWRlZiByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcHRpb25fdHlwZSAgIGZsYWdfdHlwZTsKLSAgIHR5cGVkZWYgc3RkOjpzaXplX3QgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3R5cGU7ICAKLQotICAgcmVnZXhfZGF0YShjb25zdCA6Om5kbmJvb3N0OjpzaGFyZWRfcHRyPAotICAgICAgOjpuZG5ib29zdDo6cmVnZXhfdHJhaXRzX3dyYXBwZXI8dHJhaXRzPiA+JiB0KSAKLSAgICAgIDogbV9wdHJhaXRzKHQpLCBtX2V4cHJlc3Npb24oMCksIG1fZXhwcmVzc2lvbl9sZW4oMCkge30KLSAgIHJlZ2V4X2RhdGEoKSAKLSAgICAgIDogbV9wdHJhaXRzKG5ldyA6Om5kbmJvb3N0OjpyZWdleF90cmFpdHNfd3JhcHBlcjx0cmFpdHM+KCkpLCBtX2V4cHJlc3Npb24oMCksIG1fZXhwcmVzc2lvbl9sZW4oMCkge30KLQotICAgOjpuZG5ib29zdDo6c2hhcmVkX3B0cjwKLSAgICAgIDo6bmRuYm9vc3Q6OnJlZ2V4X3RyYWl0c193cmFwcGVyPHRyYWl0cz4KLSAgICAgID4gICAgICAgICAgICAgICAgICAgICAgICBtX3B0cmFpdHM7ICAgICAgICAgICAgICAgICAvLyB0cmFpdHMgY2xhc3MgaW5zdGFuY2UKLSAgIGZsYWdfdHlwZSAgICAgICAgICAgICAgICAgICBtX2ZsYWdzOyAgICAgICAgICAgICAgICAgICAvLyBmbGFncyB3aXRoIHdoaWNoIHdlIHdlcmUgY29tcGlsZWQKLSAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICBtX3N0YXR1czsgICAgICAgICAgICAgICAgICAvLyBlcnJvciBjb2RlICgwIGltcGxpZXMgT0spLgotICAgY29uc3QgY2hhclQqICAgICAgICAgICAgICAgIG1fZXhwcmVzc2lvbjsgICAgICAgICAgICAgIC8vIHRoZSBvcmlnaW5hbCBleHByZXNzaW9uCi0gICBzdGQ6OnB0cmRpZmZfdCAgICAgICAgICAgICAgbV9leHByZXNzaW9uX2xlbjsgICAgICAgICAgLy8gdGhlIGxlbmd0aCBvZiB0aGUgb3JpZ2luYWwgZXhwcmVzc2lvbgotICAgc2l6ZV90eXBlICAgICAgICAgICAgICAgICAgIG1fbWFya19jb3VudDsgICAgICAgICAgICAgIC8vIHRoZSBudW1iZXIgb2YgbWFya2VkIHN1Yi1leHByZXNzaW9ucwotICAgcmVfZGV0YWlsOjpyZV9zeW50YXhfYmFzZSogIG1fZmlyc3Rfc3RhdGU7ICAgICAgICAgICAgIC8vIHRoZSBmaXJzdCBzdGF0ZSBvZiB0aGUgbWFjaGluZQotICAgdW5zaWduZWQgICAgICAgICAgICAgICAgICAgIG1fcmVzdGFydF90eXBlOyAgICAgICAgICAgIC8vIHNlYXJjaCBvcHRpbWlzYXRpb24gdHlwZQotICAgdW5zaWduZWQgY2hhciAgICAgICAgICAgICAgIG1fc3RhcnRtYXBbMSA8PCBDSEFSX0JJVF07IC8vIHdoaWNoIGNoYXJhY3RlcnMgY2FuIHN0YXJ0IGEgbWF0Y2gKLSAgIHVuc2lnbmVkIGludCAgICAgICAgICAgICAgICBtX2Nhbl9iZV9udWxsOyAgICAgICAgICAgICAvLyB3aGV0aGVyIHdlIGNhbiBtYXRjaCBhIG51bGwgc3RyaW5nCi0gICByZV9kZXRhaWw6OnJhd19zdG9yYWdlICAgICAgbV9kYXRhOyAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGJ1ZmZlciBpbiB3aGljaCBvdXIgc3RhdGVzIGFyZSBjb25zdHJ1Y3RlZAotICAgdHlwZW5hbWUgdHJhaXRzOjpjaGFyX2NsYXNzX3R5cGUgICAgbV93b3JkX21hc2s7ICAgICAgIC8vIG1hc2sgdXNlZCB0byBkZXRlcm1pbmUgaWYgYSBjaGFyYWN0ZXIgaXMgYSB3b3JkIGNoYXJhY3RlcgotICAgc3RkOjp2ZWN0b3I8Ci0gICAgICBzdGQ6OnBhaXI8Ci0gICAgICBzdGQ6OnNpemVfdCwgc3RkOjpzaXplX3Q+ID4gbV9zdWJzOyAgICAgICAgICAgICAgICAgLy8gUG9zaXRpb24gb2Ygc3ViLWV4cHJlc3Npb25zIHdpdGhpbiB0aGUgKnN0cmluZyouCi0gICBib29sICAgICAgICAgICAgICAgICAgICAgICAgbV9oYXNfcmVjdXJzaW9uczsgICAgICAgICAgLy8gd2hldGhlciB3ZSBoYXZlIHJlY3Vyc2l2ZSBleHByZXNzaW9uczsKLX07Ci0vLwotLy8gY2xhc3MgYmFzaWNfcmVnZXhfaW1wbGVtZW50YXRpb24KLS8vIHBpbXBsIGltcGxlbWVudGF0aW9uIGNsYXNzIGZvciBiYXNpY19yZWdleC4KLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWNsYXNzIGJhc2ljX3JlZ2V4X2ltcGxlbWVudGF0aW9uCi0gICA6IHB1YmxpYyByZWdleF9kYXRhPGNoYXJULCB0cmFpdHM+Ci17Ci1wdWJsaWM6Ci0gICB0eXBlZGVmIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wdGlvbl90eXBlICAgZmxhZ190eXBlOwotICAgdHlwZWRlZiBzdGQ6OnB0cmRpZmZfdCAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsKLSAgIHR5cGVkZWYgc3RkOjpzaXplX3QgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3R5cGU7IAotICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6OmxvY2FsZV90eXBlICAgICAgICAgIGxvY2FsZV90eXBlOwotICAgdHlwZWRlZiBjb25zdCBjaGFyVCogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X2l0ZXJhdG9yOwotCi0gICBiYXNpY19yZWdleF9pbXBsZW1lbnRhdGlvbigpe30KLSAgIGJhc2ljX3JlZ2V4X2ltcGxlbWVudGF0aW9uKGNvbnN0IDo6bmRuYm9vc3Q6OnNoYXJlZF9wdHI8Ci0gICAgICA6Om5kbmJvb3N0OjpyZWdleF90cmFpdHNfd3JhcHBlcjx0cmFpdHM+ID4mIHQpCi0gICAgICA6IHJlZ2V4X2RhdGE8Y2hhclQsIHRyYWl0cz4odCkge30KLSAgIHZvaWQgYXNzaWduKGNvbnN0IGNoYXJUKiBhcmdfZmlyc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXJUKiBhcmdfbGFzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ190eXBlIGYpCi0gICB7Ci0gICAgICByZWdleF9kYXRhPGNoYXJULCB0cmFpdHM+KiBwZGF0ID0gdGhpczsKLSAgICAgIGJhc2ljX3JlZ2V4X3BhcnNlcjxjaGFyVCwgdHJhaXRzPiBwYXJzZXIocGRhdCk7Ci0gICAgICBwYXJzZXIucGFyc2UoYXJnX2ZpcnN0LCBhcmdfbGFzdCwgZik7Ci0gICB9Ci0KLSAgIGxvY2FsZV90eXBlIE5ETkJPT1NUX1JFR0VYX0NBTEwgaW1idWUobG9jYWxlX3R5cGUgbCkKLSAgIHsgCi0gICAgICByZXR1cm4gdGhpcy0+bV9wdHJhaXRzLT5pbWJ1ZShsKTsgCi0gICB9Ci0gICBsb2NhbGVfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIGdldGxvYygpY29uc3QKLSAgIHsgCi0gICAgICByZXR1cm4gdGhpcy0+bV9wdHJhaXRzLT5nZXRsb2MoKTsgCi0gICB9Ci0gICBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4gTkROQk9PU1RfUkVHRVhfQ0FMTCBzdHIoKWNvbnN0Ci0gICB7Ci0gICAgICBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4gcmVzdWx0OwotICAgICAgaWYodGhpcy0+bV9zdGF0dXMgPT0gMCkKLSAgICAgICAgIHJlc3VsdCA9IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPih0aGlzLT5tX2V4cHJlc3Npb24sIHRoaXMtPm1fZXhwcmVzc2lvbl9sZW4pOwotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgIH0KLSAgIGNvbnN0X2l0ZXJhdG9yIE5ETkJPT1NUX1JFR0VYX0NBTEwgZXhwcmVzc2lvbigpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiB0aGlzLT5tX2V4cHJlc3Npb247Ci0gICB9Ci0gICBzdGQ6OnBhaXI8Y29uc3RfaXRlcmF0b3IsIGNvbnN0X2l0ZXJhdG9yPiBORE5CT09TVF9SRUdFWF9DQUxMIHN1YmV4cHJlc3Npb24oc3RkOjpzaXplX3Qgbiljb25zdAotICAgewotICAgICAgaWYobiA9PSAwKQotICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihzdGQ6Om91dF9vZl9yYW5nZSgiMCBpcyBub3QgYSB2YWxpZCBzdWJleHByZXNzaW9uIGluZGV4LiIpKTsKLSAgICAgIGNvbnN0IHN0ZDo6cGFpcjxzdGQ6OnNpemVfdCwgc3RkOjpzaXplX3Q+JiBwaSA9IHRoaXMtPm1fc3Vicy5hdChuIC0gMSk7Ci0gICAgICBzdGQ6OnBhaXI8Y29uc3RfaXRlcmF0b3IsIGNvbnN0X2l0ZXJhdG9yPiBwKGV4cHJlc3Npb24oKSArIHBpLmZpcnN0LCBleHByZXNzaW9uKCkgKyBwaS5zZWNvbmQpOwotICAgICAgcmV0dXJuIHA7Ci0gICB9Ci0gICAvLwotICAgLy8gYmVnaW4sIGVuZDoKLSAgIGNvbnN0X2l0ZXJhdG9yIE5ETkJPT1NUX1JFR0VYX0NBTEwgYmVnaW4oKWNvbnN0Ci0gICB7IAotICAgICAgcmV0dXJuICh0aGlzLT5tX3N0YXR1cyA/IDAgOiB0aGlzLT5tX2V4cHJlc3Npb24pOyAKLSAgIH0KLSAgIGNvbnN0X2l0ZXJhdG9yIE5ETkJPT1NUX1JFR0VYX0NBTEwgZW5kKCljb25zdAotICAgeyAKLSAgICAgIHJldHVybiAodGhpcy0+bV9zdGF0dXMgPyAwIDogdGhpcy0+bV9leHByZXNzaW9uICsgdGhpcy0+bV9leHByZXNzaW9uX2xlbik7IAotICAgfQotICAgZmxhZ190eXBlIE5ETkJPT1NUX1JFR0VYX0NBTEwgZmxhZ3MoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gdGhpcy0+bV9mbGFnczsKLSAgIH0KLSAgIHNpemVfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIHNpemUoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gdGhpcy0+bV9leHByZXNzaW9uX2xlbjsKLSAgIH0KLSAgIGludCBORE5CT09TVF9SRUdFWF9DQUxMIHN0YXR1cygpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiB0aGlzLT5tX3N0YXR1czsKLSAgIH0KLSAgIHNpemVfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIG1hcmtfY291bnQoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gdGhpcy0+bV9tYXJrX2NvdW50OwotICAgfQotICAgY29uc3QgcmVfZGV0YWlsOjpyZV9zeW50YXhfYmFzZSogZ2V0X2ZpcnN0X3N0YXRlKCljb25zdAotICAgewotICAgICAgcmV0dXJuIHRoaXMtPm1fZmlyc3Rfc3RhdGU7Ci0gICB9Ci0gICB1bnNpZ25lZCBnZXRfcmVzdGFydF90eXBlKCljb25zdAotICAgewotICAgICAgcmV0dXJuIHRoaXMtPm1fcmVzdGFydF90eXBlOwotICAgfQotICAgY29uc3QgdW5zaWduZWQgY2hhciogZ2V0X21hcCgpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiB0aGlzLT5tX3N0YXJ0bWFwOwotICAgfQotICAgY29uc3QgOjpuZG5ib29zdDo6cmVnZXhfdHJhaXRzX3dyYXBwZXI8dHJhaXRzPiYgZ2V0X3RyYWl0cygpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiAqKHRoaXMtPm1fcHRyYWl0cyk7Ci0gICB9Ci0gICBib29sIGNhbl9iZV9udWxsKCljb25zdAotICAgewotICAgICAgcmV0dXJuIHRoaXMtPm1fY2FuX2JlX251bGw7Ci0gICB9Ci0gICBjb25zdCByZWdleF9kYXRhPGNoYXJULCB0cmFpdHM+JiBnZXRfZGF0YSgpY29uc3QKLSAgIHsKLSAgICAgIGJhc2ljX3JlZ2V4X2ltcGxlbWVudGF0aW9uPGNoYXJULCB0cmFpdHM+IGNvbnN0KiBwID0gdGhpczsKLSAgICAgIHJldHVybiAqc3RhdGljX2Nhc3Q8Y29uc3QgcmVnZXhfZGF0YTxjaGFyVCwgdHJhaXRzPio+KHApOwotICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgcmVfZGV0YWlsCi0vLwotLy8gY2xhc3MgYmFzaWNfcmVnZXg6Ci0vLyByZXByZXNlbnRzIHRoZSBjb21waWxlZAotLy8gcmVndWxhciBleHByZXNzaW9uOgotLy8KLQotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX05PX0ZXRAotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMgPSByZWdleF90cmFpdHM8Y2hhclQ+ID4KLSNlbHNlCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cyA+Ci0jZW5kaWYKLWNsYXNzIGJhc2ljX3JlZ2V4IDogcHVibGljIHJlZ2Jhc2UKLXsKLXB1YmxpYzoKLSAgIC8vIHR5cGVkZWZzOgotICAgdHlwZWRlZiBzdGQ6OnNpemVfdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWl0c19zaXplX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0czo6c3RyaW5nX3R5cGUgICAgICAgICAgdHJhaXRzX3N0cmluZ190eXBlOwotICAgdHlwZWRlZiBjaGFyVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJfdHlwZTsKLSAgIHR5cGVkZWYgdHJhaXRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFpdHNfdHlwZTsKLQotICAgdHlwZWRlZiBjaGFyVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIGNoYXJUJiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlOwotICAgdHlwZWRlZiBjb25zdCBjaGFyVCYgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X3JlZmVyZW5jZTsKLSAgIHR5cGVkZWYgY29uc3QgY2hhclQqICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF9pdGVyYXRvcjsKLSAgIHR5cGVkZWYgY29uc3RfaXRlcmF0b3IgICAgICAgICAgICAgICAgICAgICAgICBpdGVyYXRvcjsKLSAgIHR5cGVkZWYgc3RkOjpwdHJkaWZmX3QgICAgICAgICAgICAgICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7Ci0gICB0eXBlZGVmIHN0ZDo6c2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90eXBlOyAgIAotICAgdHlwZWRlZiByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcHRpb25fdHlwZSAgIGZsYWdfdHlwZTsKLSAgIC8vIGxvY2FsZV90eXBlCi0gICAvLyBwbGFjZWhvbGRlciBmb3IgYWN0dWFsIGxvY2FsZSB0eXBlIHVzZWQgYnkgdGhlCi0gICAvLyB0cmFpdHMgY2xhc3MgdG8gbG9jYWxpc2UgKnRoaXMuCi0gICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0czo6bG9jYWxlX3R5cGUgICAgICAgICAgbG9jYWxlX3R5cGU7Ci0gICAKLXB1YmxpYzoKLSAgIGV4cGxpY2l0IGJhc2ljX3JlZ2V4KCl7fQotICAgZXhwbGljaXQgYmFzaWNfcmVnZXgoY29uc3QgY2hhclQqIHAsIGZsYWdfdHlwZSBmID0gcmVnZXhfY29uc3RhbnRzOjpub3JtYWwpCi0gICB7Ci0gICAgICBhc3NpZ24ocCwgZik7Ci0gICB9Ci0gICBiYXNpY19yZWdleChjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMiwgZmxhZ190eXBlIGYgPSByZWdleF9jb25zdGFudHM6Om5vcm1hbCkKLSAgIHsKLSAgICAgIGFzc2lnbihwMSwgcDIsIGYpOwotICAgfQotICAgYmFzaWNfcmVnZXgoY29uc3QgY2hhclQqIHAsIHNpemVfdHlwZSBsZW4sIGZsYWdfdHlwZSBmKQotICAgewotICAgICAgYXNzaWduKHAsIGxlbiwgZik7Ci0gICB9Ci0gICBiYXNpY19yZWdleChjb25zdCBiYXNpY19yZWdleCYgdGhhdCkKLSAgICAgIDogbV9waW1wbCh0aGF0Lm1fcGltcGwpIHt9Ci0gICB+YmFzaWNfcmVnZXgoKXt9Ci0gICBiYXNpY19yZWdleCYgTkROQk9PU1RfUkVHRVhfQ0FMTCBvcGVyYXRvcj0oY29uc3QgYmFzaWNfcmVnZXgmIHRoYXQpCi0gICB7Ci0gICAgICByZXR1cm4gYXNzaWduKHRoYXQpOwotICAgfQotICAgYmFzaWNfcmVnZXgmIE5ETkJPT1NUX1JFR0VYX0NBTEwgb3BlcmF0b3I9KGNvbnN0IGNoYXJUKiBwdHIpCi0gICB7Ci0gICAgICByZXR1cm4gYXNzaWduKHB0cik7Ci0gICB9Ci0KLSAgIC8vCi0gICAvLyBhc3NpZ246Ci0gICBiYXNpY19yZWdleCYgYXNzaWduKGNvbnN0IGJhc2ljX3JlZ2V4JiB0aGF0KQotICAgeyAKLSAgICAgIG1fcGltcGwgPSB0aGF0Lm1fcGltcGw7Ci0gICAgICByZXR1cm4gKnRoaXM7IAotICAgfQotICAgYmFzaWNfcmVnZXgmIGFzc2lnbihjb25zdCBjaGFyVCogcCwgZmxhZ190eXBlIGYgPSByZWdleF9jb25zdGFudHM6Om5vcm1hbCkKLSAgIHsKLSAgICAgIHJldHVybiBhc3NpZ24ocCwgcCArIHRyYWl0czo6bGVuZ3RoKHApLCBmKTsKLSAgIH0KLSAgIGJhc2ljX3JlZ2V4JiBhc3NpZ24oY29uc3QgY2hhclQqIHAsIHNpemVfdHlwZSBsZW4sIGZsYWdfdHlwZSBmKQotICAgewotICAgICAgcmV0dXJuIGFzc2lnbihwLCBwICsgbGVuLCBmKTsKLSAgIH0KLXByaXZhdGU6Ci0gICBiYXNpY19yZWdleCYgZG9fYXNzaWduKGNvbnN0IGNoYXJUKiBwMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhclQqIHAyLAotICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFnX3R5cGUgZik7Ci1wdWJsaWM6Ci0gICBiYXNpY19yZWdleCYgYXNzaWduKGNvbnN0IGNoYXJUKiBwMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhclQqIHAyLAotICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFnX3R5cGUgZiA9IHJlZ2V4X2NvbnN0YW50czo6bm9ybWFsKQotICAgewotICAgICAgcmV0dXJuIGRvX2Fzc2lnbihwMSwgcDIsIGYpOwotICAgfQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX01FTUJFUl9URU1QTEFURVMpCi0KLSAgIHRlbXBsYXRlIDxjbGFzcyBTVCwgY2xhc3MgU0E+Ci0gICB1bnNpZ25lZCBpbnQgTkROQk9PU1RfUkVHRVhfQ0FMTCBzZXRfZXhwcmVzc2lvbihjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgU1QsIFNBPiYgcCwgZmxhZ190eXBlIGYgPSByZWdleF9jb25zdGFudHM6Om5vcm1hbCkKLSAgIHsgCi0gICAgICByZXR1cm4gc2V0X2V4cHJlc3Npb24ocC5kYXRhKCksIHAuZGF0YSgpICsgcC5zaXplKCksIGYpOyAKLSAgIH0KLQotICAgdGVtcGxhdGUgPGNsYXNzIFNULCBjbGFzcyBTQT4KLSAgIGV4cGxpY2l0IGJhc2ljX3JlZ2V4KGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBTVCwgU0E+JiBwLCBmbGFnX3R5cGUgZiA9IHJlZ2V4X2NvbnN0YW50czo6bm9ybWFsKQotICAgeyAKLSAgICAgIGFzc2lnbihwLCBmKTsgCi0gICB9Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0ZXJhdG9yPgotICAgYmFzaWNfcmVnZXgoSW5wdXRJdGVyYXRvciBhcmdfZmlyc3QsIElucHV0SXRlcmF0b3IgYXJnX2xhc3QsIGZsYWdfdHlwZSBmID0gcmVnZXhfY29uc3RhbnRzOjpub3JtYWwpCi0gICB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0czo6c3RyaW5nX3R5cGUgc2VxX3R5cGU7Ci0gICAgICBzZXFfdHlwZSBhKGFyZ19maXJzdCwgYXJnX2xhc3QpOwotICAgICAgaWYoYS5zaXplKCkpCi0gICAgICAgICBhc3NpZ24oc3RhdGljX2Nhc3Q8Y29uc3QgY2hhclQqPigmKmEuYmVnaW4oKSksIHN0YXRpY19jYXN0PGNvbnN0IGNoYXJUKj4oJiphLmJlZ2luKCkgKyBhLnNpemUoKSksIGYpOwotICAgICAgZWxzZQotICAgICAgICAgYXNzaWduKHN0YXRpY19jYXN0PGNvbnN0IGNoYXJUKj4oMCksIHN0YXRpY19jYXN0PGNvbnN0IGNoYXJUKj4oMCksIGYpOwotICAgfQotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgU1QsIGNsYXNzIFNBPgotICAgYmFzaWNfcmVnZXgmIE5ETkJPT1NUX1JFR0VYX0NBTEwgb3BlcmF0b3I9KGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBTVCwgU0E+JiBwKQotICAgewotICAgICAgcmV0dXJuIGFzc2lnbihwLmRhdGEoKSwgcC5kYXRhKCkgKyBwLnNpemUoKSwgcmVnZXhfY29uc3RhbnRzOjpub3JtYWwpOwotICAgfQotCi0gICB0ZW1wbGF0ZSA8Y2xhc3Mgc3RyaW5nX3RyYWl0cywgY2xhc3MgQT4KLSAgIGJhc2ljX3JlZ2V4JiBORE5CT09TVF9SRUdFWF9DQUxMIGFzc2lnbigKLSAgICAgICBjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgc3RyaW5nX3RyYWl0cywgQT4mIHMsCi0gICAgICAgZmxhZ190eXBlIGYgPSByZWdleF9jb25zdGFudHM6Om5vcm1hbCkKLSAgIHsKLSAgICAgIHJldHVybiBhc3NpZ24ocy5kYXRhKCksIHMuZGF0YSgpICsgcy5zaXplKCksIGYpOwotICAgfQotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvcj4KLSAgIGJhc2ljX3JlZ2V4JiBORE5CT09TVF9SRUdFWF9DQUxMIGFzc2lnbihJbnB1dEl0ZXJhdG9yIGFyZ19maXJzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXRJdGVyYXRvciBhcmdfbGFzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ190eXBlIGYgPSByZWdleF9jb25zdGFudHM6Om5vcm1hbCkKLSAgIHsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpzdHJpbmdfdHlwZSBzZXFfdHlwZTsKLSAgICAgIHNlcV90eXBlIGEoYXJnX2ZpcnN0LCBhcmdfbGFzdCk7Ci0gICAgICBpZihhLnNpemUoKSkKLSAgICAgIHsKLSAgICAgICAgIGNvbnN0IGNoYXJUKiBwMSA9ICYqYS5iZWdpbigpOwotICAgICAgICAgY29uc3QgY2hhclQqIHAyID0gJiphLmJlZ2luKCkgKyBhLnNpemUoKTsKLSAgICAgICAgIHJldHVybiBhc3NpZ24ocDEsIHAyLCBmKTsKLSAgICAgIH0KLSAgICAgIHJldHVybiBhc3NpZ24oc3RhdGljX2Nhc3Q8Y29uc3QgY2hhclQqPigwKSwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhclQqPigwKSwgZik7Ci0gICB9Ci0jZWxzZQotICAgdW5zaWduZWQgaW50IE5ETkJPT1NUX1JFR0VYX0NBTEwgc2V0X2V4cHJlc3Npb24oY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+JiBwLCBmbGFnX3R5cGUgZiA9IHJlZ2V4X2NvbnN0YW50czo6bm9ybWFsKQotICAgeyAKLSAgICAgIHJldHVybiBzZXRfZXhwcmVzc2lvbihwLmRhdGEoKSwgcC5kYXRhKCkgKyBwLnNpemUoKSwgZik7IAotICAgfQotCi0gICBiYXNpY19yZWdleChjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4mIHAsIGZsYWdfdHlwZSBmID0gcmVnZXhfY29uc3RhbnRzOjpub3JtYWwpCi0gICB7IAotICAgICAgYXNzaWduKHAsIGYpOyAKLSAgIH0KLQotICAgYmFzaWNfcmVnZXgmIE5ETkJPT1NUX1JFR0VYX0NBTEwgb3BlcmF0b3I9KGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiYgcCkKLSAgIHsKLSAgICAgIHJldHVybiBhc3NpZ24ocC5kYXRhKCksIHAuZGF0YSgpICsgcC5zaXplKCksIHJlZ2V4X2NvbnN0YW50czo6bm9ybWFsKTsKLSAgIH0KLQotICAgYmFzaWNfcmVnZXgmIE5ETkJPT1NUX1JFR0VYX0NBTEwgYXNzaWduKAotICAgICAgIGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiYgcywKLSAgICAgICBmbGFnX3R5cGUgZiA9IHJlZ2V4X2NvbnN0YW50czo6bm9ybWFsKQotICAgewotICAgICAgcmV0dXJuIGFzc2lnbihzLmRhdGEoKSwgcy5kYXRhKCkgKyBzLnNpemUoKSwgZik7Ci0gICB9Ci0KLSNlbmRpZgotCi0gICAvLwotICAgLy8gbG9jYWxlOgotICAgbG9jYWxlX3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCBpbWJ1ZShsb2NhbGVfdHlwZSBsKTsKLSAgIGxvY2FsZV90eXBlIE5ETkJPT1NUX1JFR0VYX0NBTEwgZ2V0bG9jKCljb25zdAotICAgeyAKLSAgICAgIHJldHVybiBtX3BpbXBsLmdldCgpID8gbV9waW1wbC0+Z2V0bG9jKCkgOiBsb2NhbGVfdHlwZSgpOyAKLSAgIH0KLSAgIC8vCi0gICAvLyBnZXRmbGFnczoKLSAgIC8vIHJldGFpbmVkIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBvbmx5LCAiZmxhZ3MiCi0gICAvLyBpcyBub3cgdGhlIHByZWZlcnJlZCBuYW1lOgotICAgZmxhZ190eXBlIE5ETkJPT1NUX1JFR0VYX0NBTEwgZ2V0ZmxhZ3MoKWNvbnN0Ci0gICB7IAotICAgICAgcmV0dXJuIGZsYWdzKCk7Ci0gICB9Ci0gICBmbGFnX3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCBmbGFncygpY29uc3QKLSAgIHsgCi0gICAgICByZXR1cm4gbV9waW1wbC5nZXQoKSA/IG1fcGltcGwtPmZsYWdzKCkgOiAwOwotICAgfQotICAgLy8KLSAgIC8vIHN0cjoKLSAgIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiBORE5CT09TVF9SRUdFWF9DQUxMIHN0cigpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3BpbXBsLmdldCgpID8gbV9waW1wbC0+c3RyKCkgOiBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4oKTsKLSAgIH0KLSAgIC8vCi0gICAvLyBiZWdpbiwgZW5kLCBzdWJleHByZXNzaW9uOgotICAgc3RkOjpwYWlyPGNvbnN0X2l0ZXJhdG9yLCBjb25zdF9pdGVyYXRvcj4gTkROQk9PU1RfUkVHRVhfQ0FMTCBzdWJleHByZXNzaW9uKHN0ZDo6c2l6ZV90IG4pY29uc3QKLSAgIHsKLSAgICAgIGlmKCFtX3BpbXBsLmdldCgpKQotICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihzdGQ6OmxvZ2ljX2Vycm9yKCJDYW4ndCBhY2Nlc3Mgc3ViZXhwcmVzc2lvbnMgaW4gYW4gaW52YWxpZCByZWdleC4iKSk7Ci0gICAgICByZXR1cm4gbV9waW1wbC0+c3ViZXhwcmVzc2lvbihuKTsKLSAgIH0KLSAgIGNvbnN0X2l0ZXJhdG9yIE5ETkJPT1NUX1JFR0VYX0NBTEwgYmVnaW4oKWNvbnN0Ci0gICB7IAotICAgICAgcmV0dXJuIChtX3BpbXBsLmdldCgpID8gbV9waW1wbC0+YmVnaW4oKSA6IDApOyAKLSAgIH0KLSAgIGNvbnN0X2l0ZXJhdG9yIE5ETkJPT1NUX1JFR0VYX0NBTEwgZW5kKCljb25zdAotICAgeyAKLSAgICAgIHJldHVybiAobV9waW1wbC5nZXQoKSA/IG1fcGltcGwtPmVuZCgpIDogMCk7IAotICAgfQotICAgLy8KLSAgIC8vIHN3YXA6Ci0gICB2b2lkIE5ETkJPT1NUX1JFR0VYX0NBTEwgc3dhcChiYXNpY19yZWdleCYgdGhhdCl0aHJvdygpCi0gICB7Ci0gICAgICBtX3BpbXBsLnN3YXAodGhhdC5tX3BpbXBsKTsKLSAgIH0KLSAgIC8vCi0gICAvLyBzaXplOgotICAgc2l6ZV90eXBlIE5ETkJPT1NUX1JFR0VYX0NBTEwgc2l6ZSgpY29uc3QKLSAgIHsgCi0gICAgICByZXR1cm4gKG1fcGltcGwuZ2V0KCkgPyBtX3BpbXBsLT5zaXplKCkgOiAwKTsgCi0gICB9Ci0gICAvLwotICAgLy8gbWF4X3NpemU6Ci0gICBzaXplX3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCBtYXhfc2l6ZSgpY29uc3QKLSAgIHsgCi0gICAgICByZXR1cm4gVUlOVF9NQVg7IAotICAgfQotICAgLy8KLSAgIC8vIGVtcHR5OgotICAgYm9vbCBORE5CT09TVF9SRUdFWF9DQUxMIGVtcHR5KCljb25zdAotICAgeyAKLSAgICAgIHJldHVybiAobV9waW1wbC5nZXQoKSA/IDAgIT0gbV9waW1wbC0+c3RhdHVzKCkgOiB0cnVlKTsgCi0gICB9Ci0KLSAgIHNpemVfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIG1hcmtfY291bnQoKWNvbnN0IAotICAgeyAKLSAgICAgIHJldHVybiAobV9waW1wbC5nZXQoKSA/IG1fcGltcGwtPm1hcmtfY291bnQoKSA6IDApOyAKLSAgIH0KLQotICAgaW50IHN0YXR1cygpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiAobV9waW1wbC5nZXQoKSA/IG1fcGltcGwtPnN0YXR1cygpIDogcmVnZXhfY29uc3RhbnRzOjplcnJvcl9lbXB0eSk7Ci0gICB9Ci0KLSAgIGludCBORE5CT09TVF9SRUdFWF9DQUxMIGNvbXBhcmUoY29uc3QgYmFzaWNfcmVnZXgmIHRoYXQpIGNvbnN0Ci0gICB7Ci0gICAgICBpZihtX3BpbXBsLmdldCgpID09IHRoYXQubV9waW1wbC5nZXQoKSkKLSAgICAgICAgIHJldHVybiAwOwotICAgICAgaWYoIW1fcGltcGwuZ2V0KCkpCi0gICAgICAgICByZXR1cm4gLTE7Ci0gICAgICBpZighdGhhdC5tX3BpbXBsLmdldCgpKQotICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICBpZihzdGF0dXMoKSAhPSB0aGF0LnN0YXR1cygpKQotICAgICAgICAgcmV0dXJuIHN0YXR1cygpIC0gdGhhdC5zdGF0dXMoKTsKLSAgICAgIGlmKGZsYWdzKCkgIT0gdGhhdC5mbGFncygpKQotICAgICAgICAgcmV0dXJuIGZsYWdzKCkgLSB0aGF0LmZsYWdzKCk7Ci0gICAgICByZXR1cm4gc3RyKCkuY29tcGFyZSh0aGF0LnN0cigpKTsKLSAgIH0KLSAgIGJvb2wgTkROQk9PU1RfUkVHRVhfQ0FMTCBvcGVyYXRvcj09KGNvbnN0IGJhc2ljX3JlZ2V4JiBlKWNvbnN0Ci0gICB7IAotICAgICAgcmV0dXJuIGNvbXBhcmUoZSkgPT0gMDsgCi0gICB9Ci0gICBib29sIE5ETkJPT1NUX1JFR0VYX0NBTEwgb3BlcmF0b3IgIT0gKGNvbnN0IGJhc2ljX3JlZ2V4JiBlKWNvbnN0Ci0gICB7IAotICAgICAgcmV0dXJuIGNvbXBhcmUoZSkgIT0gMDsgCi0gICB9Ci0gICBib29sIE5ETkJPT1NUX1JFR0VYX0NBTEwgb3BlcmF0b3I8KGNvbnN0IGJhc2ljX3JlZ2V4JiBlKWNvbnN0Ci0gICB7IAotICAgICAgcmV0dXJuIGNvbXBhcmUoZSkgPCAwOyAKLSAgIH0KLSAgIGJvb2wgTkROQk9PU1RfUkVHRVhfQ0FMTCBvcGVyYXRvcj4oY29uc3QgYmFzaWNfcmVnZXgmIGUpY29uc3QKLSAgIHsgCi0gICAgICByZXR1cm4gY29tcGFyZShlKSA+IDA7IAotICAgfQotICAgYm9vbCBORE5CT09TVF9SRUdFWF9DQUxMIG9wZXJhdG9yPD0oY29uc3QgYmFzaWNfcmVnZXgmIGUpY29uc3QKLSAgIHsgCi0gICAgICByZXR1cm4gY29tcGFyZShlKSA8PSAwOyAKLSAgIH0KLSAgIGJvb2wgTkROQk9PU1RfUkVHRVhfQ0FMTCBvcGVyYXRvcj49KGNvbnN0IGJhc2ljX3JlZ2V4JiBlKWNvbnN0Ci0gICB7IAotICAgICAgcmV0dXJuIGNvbXBhcmUoZSkgPj0gMDsgCi0gICB9Ci0KLSAgIC8vCi0gICAvLyBUaGUgZm9sbG93aW5nIGFyZSBkZXByZWNhdGVkIGFzIHB1YmxpYyBpbnRlcmZhY2VzCi0gICAvLyBidXQgYXJlIGF2YWlsYWJsZSBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIGVhcmxpZXIgdmVyc2lvbnMuCi0gICBjb25zdCBjaGFyVCogTkROQk9PU1RfUkVHRVhfQ0FMTCBleHByZXNzaW9uKCljb25zdCAKLSAgIHsgCi0gICAgICByZXR1cm4gKG1fcGltcGwuZ2V0KCkgJiYgIW1fcGltcGwtPnN0YXR1cygpID8gbV9waW1wbC0+ZXhwcmVzc2lvbigpIDogMCk7IAotICAgfQotICAgdW5zaWduZWQgaW50IE5ETkJPT1NUX1JFR0VYX0NBTEwgc2V0X2V4cHJlc3Npb24oY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIsIGZsYWdfdHlwZSBmID0gcmVnZXhfY29uc3RhbnRzOjpub3JtYWwpCi0gICB7Ci0gICAgICBhc3NpZ24ocDEsIHAyLCBmIHwgcmVnZXhfY29uc3RhbnRzOjpub19leGNlcHQpOwotICAgICAgcmV0dXJuIHN0YXR1cygpOwotICAgfQotICAgdW5zaWduZWQgaW50IE5ETkJPT1NUX1JFR0VYX0NBTEwgc2V0X2V4cHJlc3Npb24oY29uc3QgY2hhclQqIHAsIGZsYWdfdHlwZSBmID0gcmVnZXhfY29uc3RhbnRzOjpub3JtYWwpIAotICAgeyAKLSAgICAgIGFzc2lnbihwLCBmIHwgcmVnZXhfY29uc3RhbnRzOjpub19leGNlcHQpOyAKLSAgICAgIHJldHVybiBzdGF0dXMoKTsKLSAgIH0KLSAgIHVuc2lnbmVkIGludCBORE5CT09TVF9SRUdFWF9DQUxMIGVycm9yX2NvZGUoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gc3RhdHVzKCk7Ci0gICB9Ci0gICAvLwotICAgLy8gcHJpdmF0ZSBhY2Nlc3MgbWV0aG9kczoKLSAgIC8vCi0gICBjb25zdCByZV9kZXRhaWw6OnJlX3N5bnRheF9iYXNlKiBnZXRfZmlyc3Rfc3RhdGUoKWNvbnN0Ci0gICB7Ci0gICAgICBORE5CT09TVF9BU1NFUlQoMCAhPSBtX3BpbXBsLmdldCgpKTsKLSAgICAgIHJldHVybiBtX3BpbXBsLT5nZXRfZmlyc3Rfc3RhdGUoKTsKLSAgIH0KLSAgIHVuc2lnbmVkIGdldF9yZXN0YXJ0X3R5cGUoKWNvbnN0Ci0gICB7Ci0gICAgICBORE5CT09TVF9BU1NFUlQoMCAhPSBtX3BpbXBsLmdldCgpKTsKLSAgICAgIHJldHVybiBtX3BpbXBsLT5nZXRfcmVzdGFydF90eXBlKCk7Ci0gICB9Ci0gICBjb25zdCB1bnNpZ25lZCBjaGFyKiBnZXRfbWFwKCljb25zdAotICAgewotICAgICAgTkROQk9PU1RfQVNTRVJUKDAgIT0gbV9waW1wbC5nZXQoKSk7Ci0gICAgICByZXR1cm4gbV9waW1wbC0+Z2V0X21hcCgpOwotICAgfQotICAgY29uc3QgOjpuZG5ib29zdDo6cmVnZXhfdHJhaXRzX3dyYXBwZXI8dHJhaXRzPiYgZ2V0X3RyYWl0cygpY29uc3QKLSAgIHsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVCgwICE9IG1fcGltcGwuZ2V0KCkpOwotICAgICAgcmV0dXJuIG1fcGltcGwtPmdldF90cmFpdHMoKTsKLSAgIH0KLSAgIGJvb2wgY2FuX2JlX251bGwoKWNvbnN0Ci0gICB7Ci0gICAgICBORE5CT09TVF9BU1NFUlQoMCAhPSBtX3BpbXBsLmdldCgpKTsKLSAgICAgIHJldHVybiBtX3BpbXBsLT5jYW5fYmVfbnVsbCgpOwotICAgfQotICAgY29uc3QgcmVfZGV0YWlsOjpyZWdleF9kYXRhPGNoYXJULCB0cmFpdHM+JiBnZXRfZGF0YSgpY29uc3QKLSAgIHsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVCgwICE9IG1fcGltcGwuZ2V0KCkpOwotICAgICAgcmV0dXJuIG1fcGltcGwtPmdldF9kYXRhKCk7Ci0gICB9Ci0gICBuZG5ib29zdDo6c2hhcmVkX3B0cjxyZV9kZXRhaWw6Om5hbWVkX3N1YmV4cHJlc3Npb25zID4gZ2V0X25hbWVkX3N1YnMoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9waW1wbDsKLSAgIH0KLQotcHJpdmF0ZToKLSAgIHNoYXJlZF9wdHI8cmVfZGV0YWlsOjpiYXNpY19yZWdleF9pbXBsZW1lbnRhdGlvbjxjaGFyVCwgdHJhaXRzPiA+IG1fcGltcGw7Ci19OwotCi0vLwotLy8gb3V0IG9mIGxpbmUgbWVtYmVyczsKLS8vIHRoZXNlIGFyZSB0aGUgb25seSBtZW1iZXJzIHRoYXQgbXV0YXRlIHRoZSBiYXNpY19yZWdleCBvYmplY3QsCi0vLyBhbmQgYXJlIGRlc2lnbmVkIHRvIHByb3ZpZGUgdGhlIHN0cm9uZyBleGNlcHRpb24gZ3VhcmVudGVlCi0vLyAoaW4gdGhlIGV2ZW50IG9mIGEgdGhyb3csIHRoZSBzdGF0ZSBvZiB0aGUgb2JqZWN0IHJlbWFpbnMgdW5jaGFuZ2VkKS4KLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPjo6ZG9fYXNzaWduKGNvbnN0IGNoYXJUKiBwMSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXJUKiBwMiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdHlwZSBmKQotewotICAgc2hhcmVkX3B0cjxyZV9kZXRhaWw6OmJhc2ljX3JlZ2V4X2ltcGxlbWVudGF0aW9uPGNoYXJULCB0cmFpdHM+ID4gdGVtcDsKLSAgIGlmKCFtX3BpbXBsLmdldCgpKQotICAgewotICAgICAgdGVtcCA9IHNoYXJlZF9wdHI8cmVfZGV0YWlsOjpiYXNpY19yZWdleF9pbXBsZW1lbnRhdGlvbjxjaGFyVCwgdHJhaXRzPiA+KG5ldyByZV9kZXRhaWw6OmJhc2ljX3JlZ2V4X2ltcGxlbWVudGF0aW9uPGNoYXJULCB0cmFpdHM+KCkpOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgdGVtcCA9IHNoYXJlZF9wdHI8cmVfZGV0YWlsOjpiYXNpY19yZWdleF9pbXBsZW1lbnRhdGlvbjxjaGFyVCwgdHJhaXRzPiA+KG5ldyByZV9kZXRhaWw6OmJhc2ljX3JlZ2V4X2ltcGxlbWVudGF0aW9uPGNoYXJULCB0cmFpdHM+KG1fcGltcGwtPm1fcHRyYWl0cykpOwotICAgfQotICAgdGVtcC0+YXNzaWduKHAxLCBwMiwgZik7Ci0gICB0ZW1wLnN3YXAobV9waW1wbCk7Ci0gICByZXR1cm4gKnRoaXM7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotdHlwZW5hbWUgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz46OmxvY2FsZV90eXBlIE5ETkJPT1NUX1JFR0VYX0NBTEwgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz46OmltYnVlKGxvY2FsZV90eXBlIGwpCi17IAotICAgc2hhcmVkX3B0cjxyZV9kZXRhaWw6OmJhc2ljX3JlZ2V4X2ltcGxlbWVudGF0aW9uPGNoYXJULCB0cmFpdHM+ID4gdGVtcChuZXcgcmVfZGV0YWlsOjpiYXNpY19yZWdleF9pbXBsZW1lbnRhdGlvbjxjaGFyVCwgdHJhaXRzPigpKTsKLSAgIGxvY2FsZV90eXBlIHJlc3VsdCA9IHRlbXAtPmltYnVlKGwpOwotICAgdGVtcC5zd2FwKG1fcGltcGwpOwotICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLy8KLS8vIG5vbi1tZW1iZXJzOgotLy8KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotdm9pZCBzd2FwKGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBlMSwgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUyKQotewotICAgZTEuc3dhcChlMik7Ci19Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0xPQ0FMRQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIHRyYWl0czI+Ci1zdGQ6OmJhc2ljX29zdHJlYW08Y2hhclQsIHRyYWl0cz4mIAotICAgb3BlcmF0b3IgPDwgKHN0ZDo6YmFzaWNfb3N0cmVhbTxjaGFyVCwgdHJhaXRzPiYgb3MsIAotICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHMyPiYgZSkKLXsKLSAgIHJldHVybiAob3MgPDwgZS5zdHIoKSk7Ci19Ci0jZWxzZQotdGVtcGxhdGUgPGNsYXNzIHRyYWl0cz4KLXN0ZDo6b3N0cmVhbSYgb3BlcmF0b3IgPDwgKHN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXIsIHRyYWl0cz4mIGUpCi17Ci0gICByZXR1cm4gKG9zIDw8IGUuc3RyKCkpOwotfQotI2VuZGlmCi0KLS8vCi0vLyBjbGFzcyByZWdfZXhwcmVzc2lvbjoKLS8vIHRoaXMgaXMgcHJvdmlkZWQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IG9ubHksCi0vLyBpdCBpcyBkZXByZWNhdGVkLCBubyBub3QgdXNlIQotLy8KLSNpZmRlZiBORE5CT09TVF9SRUdFWF9OT19GV0QKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzID0gcmVnZXhfdHJhaXRzPGNoYXJUPiA+Ci0jZWxzZQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMgPgotI2VuZGlmCi1jbGFzcyByZWdfZXhwcmVzc2lvbiA6IHB1YmxpYyBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPgotewotcHVibGljOgotICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPjo6ZmxhZ190eXBlIGZsYWdfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz46OnNpemVfdHlwZSBzaXplX3R5cGU7Ci0gICBleHBsaWNpdCByZWdfZXhwcmVzc2lvbigpe30KLSAgIGV4cGxpY2l0IHJlZ19leHByZXNzaW9uKGNvbnN0IGNoYXJUKiBwLCBmbGFnX3R5cGUgZiA9IHJlZ2V4X2NvbnN0YW50czo6bm9ybWFsKQotICAgICAgOiBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPihwLCBmKXt9Ci0gICByZWdfZXhwcmVzc2lvbihjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMiwgZmxhZ190eXBlIGYgPSByZWdleF9jb25zdGFudHM6Om5vcm1hbCkKLSAgICAgIDogYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4ocDEsIHAyLCBmKXt9Ci0gICByZWdfZXhwcmVzc2lvbihjb25zdCBjaGFyVCogcCwgc2l6ZV90eXBlIGxlbiwgZmxhZ190eXBlIGYpCi0gICAgICA6IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+KHAsIGxlbiwgZil7fQotICAgcmVnX2V4cHJlc3Npb24oY29uc3QgcmVnX2V4cHJlc3Npb24mIHRoYXQpCi0gICAgICA6IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+KHRoYXQpIHt9Ci0gICB+cmVnX2V4cHJlc3Npb24oKXt9Ci0gICByZWdfZXhwcmVzc2lvbiYgTkROQk9PU1RfUkVHRVhfQ0FMTCBvcGVyYXRvcj0oY29uc3QgcmVnX2V4cHJlc3Npb24mIHRoYXQpCi0gICB7Ci0gICAgICByZXR1cm4gdGhpcy0+YXNzaWduKHRoYXQpOwotICAgfQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFUykKLSAgIHRlbXBsYXRlIDxjbGFzcyBTVCwgY2xhc3MgU0E+Ci0gICBleHBsaWNpdCByZWdfZXhwcmVzc2lvbihjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgU1QsIFNBPiYgcCwgZmxhZ190eXBlIGYgPSByZWdleF9jb25zdGFudHM6Om5vcm1hbCkKLSAgIDogYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4ocCwgZikKLSAgIHsgCi0gICB9Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0ZXJhdG9yPgotICAgcmVnX2V4cHJlc3Npb24oSW5wdXRJdGVyYXRvciBhcmdfZmlyc3QsIElucHV0SXRlcmF0b3IgYXJnX2xhc3QsIGZsYWdfdHlwZSBmID0gcmVnZXhfY29uc3RhbnRzOjpub3JtYWwpCi0gICA6IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+KGFyZ19maXJzdCwgYXJnX2xhc3QsIGYpCi0gICB7Ci0gICB9Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBTVCwgY2xhc3MgU0E+Ci0gICByZWdfZXhwcmVzc2lvbiYgTkROQk9PU1RfUkVHRVhfQ0FMTCBvcGVyYXRvcj0oY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFNULCBTQT4mIHApCi0gICB7Ci0gICAgICB0aGlzLT5hc3NpZ24ocCk7Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICB9Ci0jZWxzZQotICAgZXhwbGljaXQgcmVnX2V4cHJlc3Npb24oY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+JiBwLCBmbGFnX3R5cGUgZiA9IHJlZ2V4X2NvbnN0YW50czo6bm9ybWFsKQotICAgOiBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPihwLCBmKQotICAgeyAKLSAgIH0KLQotICAgcmVnX2V4cHJlc3Npb24mIE5ETkJPT1NUX1JFR0VYX0NBTEwgb3BlcmF0b3I9KGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiYgcCkKLSAgIHsKLSAgICAgIHRoaXMtPmFzc2lnbihwKTsKLSAgICAgIHJldHVybiAqdGhpczsKLSAgIH0KLSNlbmRpZgotCi19OwotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nIChwb3ApCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9iYXNpY19yZWdleF9jcmVhdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvYmFzaWNfcmVnZXhfY3JlYXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkYjA0ZTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9iYXNpY19yZWdleF9jcmVhdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1NzEgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICBiYXNpY19yZWdleF9jcmVhdG9yLmNwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogRGVjbGFyZXMgdGVtcGxhdGUgY2xhc3MgYmFzaWNfcmVnZXhfY3JlYXRvciB3aGljaCBmaWxscyBpbgotICAqICAgICAgICAgICAgICAgIHRoZSBkYXRhIG1lbWJlcnMgb2YgYSByZWdleF9kYXRhIG9iamVjdC4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9CQVNJQ19SRUdFWF9DUkVBVE9SX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9WNF9CQVNJQ19SRUdFWF9DUkVBVE9SX0hQUAotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jICBwcmFnbWEgd2FybmluZyhwdXNoKQotIyAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDgwMCkKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLW5hbWVzcGFjZSByZV9kZXRhaWx7Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXN0cnVjdCBkaWdyYXBoIDogcHVibGljIHN0ZDo6cGFpcjxjaGFyVCwgY2hhclQ+Ci17Ci0gICBkaWdyYXBoKCkgOiBzdGQ6OnBhaXI8Y2hhclQsIGNoYXJUPigwLCAwKXt9Ci0gICBkaWdyYXBoKGNoYXJUIGMxKSA6IHN0ZDo6cGFpcjxjaGFyVCwgY2hhclQ+KGMxLCAwKXt9Ci0gICBkaWdyYXBoKGNoYXJUIGMxLCBjaGFyVCBjMikgOiBzdGQ6OnBhaXI8Y2hhclQsIGNoYXJUPihjMSwgYzIpCi0gICB7fQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSAgIGRpZ3JhcGgoY29uc3QgZGlncmFwaDxjaGFyVD4mIGQpIDogc3RkOjpwYWlyPGNoYXJULCBjaGFyVD4oZC5maXJzdCwgZC5zZWNvbmQpe30KLSNlbmRpZgotICAgdGVtcGxhdGUgPGNsYXNzIFNlcT4KLSAgIGRpZ3JhcGgoY29uc3QgU2VxJiBzKSA6IHN0ZDo6cGFpcjxjaGFyVCwgY2hhclQ+KCkKLSAgIHsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVChzLnNpemUoKSA8PSAyKTsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVChzLnNpemUoKSk7Ci0gICAgICB0aGlzLT5maXJzdCA9IHNbMF07Ci0gICAgICB0aGlzLT5zZWNvbmQgPSAocy5zaXplKCkgPiAxKSA/IHNbMV0gOiAwOwotICAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1jbGFzcyBiYXNpY19jaGFyX3NldAotewotcHVibGljOgotICAgdHlwZWRlZiBkaWdyYXBoPGNoYXJUPiAgICAgICAgICAgICAgICAgICBkaWdyYXBoX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0czo6c3RyaW5nX3R5cGUgICAgIHN0cmluZ190eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6OmNoYXJfY2xhc3NfdHlwZSBtX3R5cGU7Ci0KLSAgIGJhc2ljX2NoYXJfc2V0KCkKLSAgIHsKLSAgICAgIG1fbmVnYXRlID0gZmFsc2U7Ci0gICAgICBtX2hhc19kaWdyYXBocyA9IGZhbHNlOwotICAgICAgbV9jbGFzc2VzID0gMDsKLSAgICAgIG1fbmVnYXRlZF9jbGFzc2VzID0gMDsKLSAgICAgIG1fZW1wdHkgPSB0cnVlOwotICAgfQotCi0gICB2b2lkIGFkZF9zaW5nbGUoY29uc3QgZGlncmFwaF90eXBlJiBzKQotICAgewotICAgICAgbV9zaW5nbGVzLmluc2VydChtX3NpbmdsZXMuZW5kKCksIHMpOwotICAgICAgaWYocy5zZWNvbmQpCi0gICAgICAgICBtX2hhc19kaWdyYXBocyA9IHRydWU7Ci0gICAgICBtX2VtcHR5ID0gZmFsc2U7Ci0gICB9Ci0gICB2b2lkIGFkZF9yYW5nZShjb25zdCBkaWdyYXBoX3R5cGUmIGZpcnN0LCBjb25zdCBkaWdyYXBoX3R5cGUmIGVuZCkKLSAgIHsKLSAgICAgIG1fcmFuZ2VzLmluc2VydChtX3Jhbmdlcy5lbmQoKSwgZmlyc3QpOwotICAgICAgbV9yYW5nZXMuaW5zZXJ0KG1fcmFuZ2VzLmVuZCgpLCBlbmQpOwotICAgICAgaWYoZmlyc3Quc2Vjb25kKQotICAgICAgewotICAgICAgICAgbV9oYXNfZGlncmFwaHMgPSB0cnVlOwotICAgICAgICAgYWRkX3NpbmdsZShmaXJzdCk7Ci0gICAgICB9Ci0gICAgICBpZihlbmQuc2Vjb25kKQotICAgICAgewotICAgICAgICAgbV9oYXNfZGlncmFwaHMgPSB0cnVlOwotICAgICAgICAgYWRkX3NpbmdsZShlbmQpOwotICAgICAgfQotICAgICAgbV9lbXB0eSA9IGZhbHNlOwotICAgfQotICAgdm9pZCBhZGRfY2xhc3MobV90eXBlIG0pCi0gICB7Ci0gICAgICBtX2NsYXNzZXMgfD0gbTsKLSAgICAgIG1fZW1wdHkgPSBmYWxzZTsKLSAgIH0KLSAgIHZvaWQgYWRkX25lZ2F0ZWRfY2xhc3MobV90eXBlIG0pCi0gICB7Ci0gICAgICBtX25lZ2F0ZWRfY2xhc3NlcyB8PSBtOwotICAgICAgbV9lbXB0eSA9IGZhbHNlOwotICAgfQotICAgdm9pZCBhZGRfZXF1aXZhbGVudChjb25zdCBkaWdyYXBoX3R5cGUmIHMpCi0gICB7Ci0gICAgICBtX2VxdWl2YWxlbnRzLmluc2VydChtX2VxdWl2YWxlbnRzLmVuZCgpLCBzKTsKLSAgICAgIGlmKHMuc2Vjb25kKQotICAgICAgewotICAgICAgICAgbV9oYXNfZGlncmFwaHMgPSB0cnVlOwotICAgICAgICAgYWRkX3NpbmdsZShzKTsKLSAgICAgIH0KLSAgICAgIG1fZW1wdHkgPSBmYWxzZTsKLSAgIH0KLSAgIHZvaWQgbmVnYXRlKCkKLSAgIHsgCi0gICAgICBtX25lZ2F0ZSA9IHRydWU7Ci0gICAgICAvL21fZW1wdHkgPSBmYWxzZTsKLSAgIH0KLQotICAgLy8KLSAgIC8vIGFjY2Vzc29yIGZ1bmN0aW9uczoKLSAgIC8vCi0gICBib29sIGhhc19kaWdyYXBocygpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX2hhc19kaWdyYXBoczsKLSAgIH0KLSAgIGJvb2wgaXNfbmVnYXRlZCgpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX25lZ2F0ZTsKLSAgIH0KLSAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjp2ZWN0b3I8ZGlncmFwaF90eXBlPjo6Y29uc3RfaXRlcmF0b3IgIGxpc3RfaXRlcmF0b3I7Ci0gICBsaXN0X2l0ZXJhdG9yIHNpbmdsZXNfYmVnaW4oKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9zaW5nbGVzLmJlZ2luKCk7Ci0gICB9Ci0gICBsaXN0X2l0ZXJhdG9yIHNpbmdsZXNfZW5kKCljb25zdAotICAgewotICAgICAgcmV0dXJuIG1fc2luZ2xlcy5lbmQoKTsKLSAgIH0KLSAgIGxpc3RfaXRlcmF0b3IgcmFuZ2VzX2JlZ2luKCljb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcmFuZ2VzLmJlZ2luKCk7Ci0gICB9Ci0gICBsaXN0X2l0ZXJhdG9yIHJhbmdlc19lbmQoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9yYW5nZXMuZW5kKCk7Ci0gICB9Ci0gICBsaXN0X2l0ZXJhdG9yIGVxdWl2YWxlbnRzX2JlZ2luKCljb25zdAotICAgewotICAgICAgcmV0dXJuIG1fZXF1aXZhbGVudHMuYmVnaW4oKTsKLSAgIH0KLSAgIGxpc3RfaXRlcmF0b3IgZXF1aXZhbGVudHNfZW5kKCljb25zdAotICAgewotICAgICAgcmV0dXJuIG1fZXF1aXZhbGVudHMuZW5kKCk7Ci0gICB9Ci0gICBtX3R5cGUgY2xhc3NlcygpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX2NsYXNzZXM7Ci0gICB9Ci0gICBtX3R5cGUgbmVnYXRlZF9jbGFzc2VzKCljb25zdAotICAgewotICAgICAgcmV0dXJuIG1fbmVnYXRlZF9jbGFzc2VzOwotICAgfQotICAgYm9vbCBlbXB0eSgpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX2VtcHR5OwotICAgfQotcHJpdmF0ZToKLSAgIHN0ZDo6dmVjdG9yPGRpZ3JhcGhfdHlwZT4gbV9zaW5nbGVzOyAgICAgICAgIC8vIGEgbGlzdCBvZiBzaW5nbGUgY2hhcmFjdGVycyB0byBtYXRjaAotICAgc3RkOjp2ZWN0b3I8ZGlncmFwaF90eXBlPiBtX3JhbmdlczsgICAgICAgICAgLy8gYSBsaXN0IG9mIGVuZCBwb2ludHMgb2Ygb3VyIHJhbmdlcwotICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICBtX25lZ2F0ZTsgICAgICAgICAgLy8gdHJ1ZSBpZiB0aGUgc2V0IGlzIHRvIGJlIG5lZ2F0ZWQKLSAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgbV9oYXNfZGlncmFwaHM7ICAgIC8vIHRydWUgaWYgd2UgaGF2ZSBkaWdyYXBocyBwcmVzZW50Ci0gICBtX3R5cGUgICAgICAgICAgICAgICAgICAgIG1fY2xhc3NlczsgICAgICAgICAvLyBjaGFyYWN0ZXIgY2xhc3NlcyB0byBtYXRjaAotICAgbV90eXBlICAgICAgICAgICAgICAgICAgICBtX25lZ2F0ZWRfY2xhc3NlczsgLy8gbmVnYXRlZCBjaGFyYWN0ZXIgY2xhc3NlcyB0byBtYXRjaAotICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICBtX2VtcHR5OyAgICAgICAgICAgLy8gd2hldGhlciB3ZSd2ZSBhZGRlZCBhbnl0aGluZyB5ZXQKLSAgIHN0ZDo6dmVjdG9yPGRpZ3JhcGhfdHlwZT4gbV9lcXVpdmFsZW50czsgICAgIC8vIGEgbGlzdCBvZiBlcXVpdmFsZW5jZSBjbGFzc2VzCi19OwotICAgCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWNsYXNzIGJhc2ljX3JlZ2V4X2NyZWF0b3IKLXsKLXB1YmxpYzoKLSAgIGJhc2ljX3JlZ2V4X2NyZWF0b3IocmVnZXhfZGF0YTxjaGFyVCwgdHJhaXRzPiogZGF0YSk7Ci0gICBzdGQ6OnB0cmRpZmZfdCBnZXRvZmZzZXQodm9pZCogYWRkcikKLSAgIHsKLSAgICAgIHJldHVybiBnZXRvZmZzZXQoYWRkciwgbV9wZGF0YS0+bV9kYXRhLmRhdGEoKSk7Ci0gICB9Ci0gICBzdGQ6OnB0cmRpZmZfdCBnZXRvZmZzZXQoY29uc3Qgdm9pZCogYWRkciwgY29uc3Qgdm9pZCogYmFzZSkKLSAgIHsKLSAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYWRkcikgLSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYmFzZSk7Ci0gICB9Ci0gICByZV9zeW50YXhfYmFzZSogZ2V0YWRkcmVzcyhzdGQ6OnB0cmRpZmZfdCBvZmYpCi0gICB7Ci0gICAgICByZXR1cm4gZ2V0YWRkcmVzcyhvZmYsIG1fcGRhdGEtPm1fZGF0YS5kYXRhKCkpOwotICAgfQotICAgcmVfc3ludGF4X2Jhc2UqIGdldGFkZHJlc3Moc3RkOjpwdHJkaWZmX3Qgb2ZmLCB2b2lkKiBiYXNlKQotICAgewotICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHJlX3N5bnRheF9iYXNlKj4oc3RhdGljX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGNoYXIqPihiYXNlKSArIG9mZikpOwotICAgfQotICAgdm9pZCBpbml0KHVuc2lnbmVkIGxfZmxhZ3MpCi0gICB7Ci0gICAgICBtX3BkYXRhLT5tX2ZsYWdzID0gbF9mbGFnczsKLSAgICAgIG1faWNhc2UgPSBsX2ZsYWdzICYgcmVnZXhfY29uc3RhbnRzOjppY2FzZTsKLSAgIH0KLSAgIHJlZ2Jhc2U6OmZsYWdfdHlwZSBmbGFncygpCi0gICB7Ci0gICAgICByZXR1cm4gbV9wZGF0YS0+bV9mbGFnczsKLSAgIH0KLSAgIHZvaWQgZmxhZ3MocmVnYmFzZTo6ZmxhZ190eXBlIGYpCi0gICB7Ci0gICAgICBtX3BkYXRhLT5tX2ZsYWdzID0gZjsKLSAgICAgIGlmKG1faWNhc2UgIT0gc3RhdGljX2Nhc3Q8Ym9vbD4oZiAmIHJlZ2Jhc2U6OmljYXNlKSkKLSAgICAgIHsKLSAgICAgICAgIG1faWNhc2UgPSBzdGF0aWNfY2FzdDxib29sPihmICYgcmVnYmFzZTo6aWNhc2UpOwotICAgICAgfQotICAgfQotICAgcmVfc3ludGF4X2Jhc2UqIGFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF90eXBlIHQsIHN0ZDo6c2l6ZV90IHMgPSBzaXplb2YocmVfc3ludGF4X2Jhc2UpKTsKLSAgIHJlX3N5bnRheF9iYXNlKiBpbnNlcnRfc3RhdGUoc3RkOjpwdHJkaWZmX3QgcG9zLCBzeW50YXhfZWxlbWVudF90eXBlIHQsIHN0ZDo6c2l6ZV90IHMgPSBzaXplb2YocmVfc3ludGF4X2Jhc2UpKTsKLSAgIHJlX2xpdGVyYWwqIGFwcGVuZF9saXRlcmFsKGNoYXJUIGMpOwotICAgcmVfc3ludGF4X2Jhc2UqIGFwcGVuZF9zZXQoY29uc3QgYmFzaWNfY2hhcl9zZXQ8Y2hhclQsIHRyYWl0cz4mIGNoYXJfc2V0KTsKLSAgIHJlX3N5bnRheF9iYXNlKiBhcHBlbmRfc2V0KGNvbnN0IGJhc2ljX2NoYXJfc2V0PGNoYXJULCB0cmFpdHM+JiBjaGFyX3NldCwgbXBsOjpmYWxzZV8qKTsKLSAgIHJlX3N5bnRheF9iYXNlKiBhcHBlbmRfc2V0KGNvbnN0IGJhc2ljX2NoYXJfc2V0PGNoYXJULCB0cmFpdHM+JiBjaGFyX3NldCwgbXBsOjp0cnVlXyopOwotICAgdm9pZCBmaW5hbGl6ZShjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMik7Ci1wcm90ZWN0ZWQ6Ci0gICByZWdleF9kYXRhPGNoYXJULCB0cmFpdHM+KiAgICBtX3BkYXRhOyAgICAgICAgICAgICAgLy8gcG9pbnRlciB0byB0aGUgYmFzaWNfcmVnZXhfZGF0YSBzdHJ1Y3Qgd2UgYXJlIGZpbGxpbmcgaW4KLSAgIGNvbnN0IDo6bmRuYm9vc3Q6OnJlZ2V4X3RyYWl0c193cmFwcGVyPHRyYWl0cz4mICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdHJhaXRzOyAgICAgICAgICAgICAvLyBjb252ZW5pZW5jZSByZWZlcmVuY2UgdG8gdHJhaXRzIGNsYXNzCi0gICByZV9zeW50YXhfYmFzZSogICAgICAgICAgICAgICBtX2xhc3Rfc3RhdGU7ICAgICAgICAgLy8gdGhlIGxhc3Qgc3RhdGUgd2UgYWRkZWQKLSAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgIG1faWNhc2U7ICAgICAgICAgICAgICAvLyB0cnVlIGZvciBjYXNlIGluc2Vuc2l0aXZlIG1hdGNoZXMKLSAgIHVuc2lnbmVkICAgICAgICAgICAgICAgICAgICAgIG1fcmVwZWF0ZXJfaWQ7ICAgICAgICAvLyB0aGUgc3RhdGVfaWQgb2YgdGhlIG5leHQgcmVwZWF0ZXIKLSAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgIG1faGFzX2JhY2tyZWZzOyAgICAgICAvLyB0cnVlIGlmIHRoZXJlIGFyZSBhY3R1YWxseSBhbnkgYmFja3JlZnMKLSAgIHVuc2lnbmVkICAgICAgICAgICAgICAgICAgICAgIG1fYmFja3JlZnM7ICAgICAgICAgICAvLyBiaXRtYXNrIG9mIHBlcm1pdHRlZCBiYWNrcmVmcwotICAgbmRuYm9vc3Q6OnVpbnRtYXhfdCAgICAgICAgICAgICAgbV9iYWRfcmVwZWF0czsgICAgICAgIC8vIGJpdG1hc2sgb2YgcmVwZWF0cyB3ZSBjYW4ndCBkZWR1Y2UgYSBzdGFydG1hcCBmb3I7Ci0gICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICBtX2hhc19yZWN1cnNpb25zOyAgICAgLy8gc2V0IHdoZW4gd2UgaGF2ZSByZWN1cnNpdmUgZXhwcmVzaXNvbnMgdG8gZml4dXAKLSAgIHN0ZDo6dmVjdG9yPGJvb2w+ICAgICAgICAgICAgIG1fcmVjdXJzaW9uX2NoZWNrczsgICAvLyBub3RlcyB3aGljaCByZWN1cnNpb25zIHdlJ3ZlIGZvbGxvd2VkIHdoaWxlIGFuYWx5c2luZyB0aGlzIGV4cHJlc3Npb24KLSAgIHR5cGVuYW1lIHRyYWl0czo6Y2hhcl9jbGFzc190eXBlIG1fd29yZF9tYXNrOyAgICAgICAvLyBtYXNrIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIGEgY2hhcmFjdGVyIGlzIGEgd29yZCBjaGFyYWN0ZXIKLSAgIHR5cGVuYW1lIHRyYWl0czo6Y2hhcl9jbGFzc190eXBlIG1fbWFza19zcGFjZTsgICAgICAvLyBtYXNrIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIGEgY2hhcmFjdGVyIGlzIGEgd29yZCBjaGFyYWN0ZXIKLSAgIHR5cGVuYW1lIHRyYWl0czo6Y2hhcl9jbGFzc190eXBlIG1fbG93ZXJfbWFzazsgICAgICAgLy8gbWFzayB1c2VkIHRvIGRldGVybWluZSBpZiBhIGNoYXJhY3RlciBpcyBhIGxvd2VyY2FzZSBjaGFyYWN0ZXIKLSAgIHR5cGVuYW1lIHRyYWl0czo6Y2hhcl9jbGFzc190eXBlIG1fdXBwZXJfbWFzazsgICAgICAvLyBtYXNrIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIGEgY2hhcmFjdGVyIGlzIGFuIHVwcGVyY2FzZSBjaGFyYWN0ZXIKLSAgIHR5cGVuYW1lIHRyYWl0czo6Y2hhcl9jbGFzc190eXBlIG1fYWxwaGFfbWFzazsgICAgICAvLyBtYXNrIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIGEgY2hhcmFjdGVyIGlzIGFuIGFscGhhYmV0aWMgY2hhcmFjdGVyCi1wcml2YXRlOgotICAgYmFzaWNfcmVnZXhfY3JlYXRvciYgb3BlcmF0b3I9KGNvbnN0IGJhc2ljX3JlZ2V4X2NyZWF0b3ImKTsKLSAgIGJhc2ljX3JlZ2V4X2NyZWF0b3IoY29uc3QgYmFzaWNfcmVnZXhfY3JlYXRvciYpOwotCi0gICB2b2lkIGZpeHVwX3BvaW50ZXJzKHJlX3N5bnRheF9iYXNlKiBzdGF0ZSk7Ci0gICB2b2lkIGZpeHVwX3JlY3Vyc2lvbnMocmVfc3ludGF4X2Jhc2UqIHN0YXRlKTsKLSAgIHZvaWQgY3JlYXRlX3N0YXJ0bWFwcyhyZV9zeW50YXhfYmFzZSogc3RhdGUpOwotICAgaW50IGNhbGN1bGF0ZV9iYWNrc3RlcChyZV9zeW50YXhfYmFzZSogc3RhdGUpOwotICAgdm9pZCBjcmVhdGVfc3RhcnRtYXAocmVfc3ludGF4X2Jhc2UqIHN0YXRlLCB1bnNpZ25lZCBjaGFyKiBsX21hcCwgdW5zaWduZWQgaW50KiBwbnVsbCwgdW5zaWduZWQgY2hhciBtYXNrKTsKLSAgIHVuc2lnbmVkIGdldF9yZXN0YXJ0X3R5cGUocmVfc3ludGF4X2Jhc2UqIHN0YXRlKTsKLSAgIHZvaWQgc2V0X2FsbF9tYXNrcyh1bnNpZ25lZCBjaGFyKiBiaXRzLCB1bnNpZ25lZCBjaGFyKTsKLSAgIGJvb2wgaXNfYmFkX3JlcGVhdChyZV9zeW50YXhfYmFzZSogcHQpOwotICAgdm9pZCBzZXRfYmFkX3JlcGVhdChyZV9zeW50YXhfYmFzZSogcHQpOwotICAgc3ludGF4X2VsZW1lbnRfdHlwZSBnZXRfcmVwZWF0X3R5cGUocmVfc3ludGF4X2Jhc2UqIHN0YXRlKTsKLSAgIHZvaWQgcHJvYmVfbGVhZGluZ19yZXBlYXQocmVfc3ludGF4X2Jhc2UqIHN0YXRlKTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotYmFzaWNfcmVnZXhfY3JlYXRvcjxjaGFyVCwgdHJhaXRzPjo6YmFzaWNfcmVnZXhfY3JlYXRvcihyZWdleF9kYXRhPGNoYXJULCB0cmFpdHM+KiBkYXRhKQotICAgOiBtX3BkYXRhKGRhdGEpLCBtX3RyYWl0cygqKGRhdGEtPm1fcHRyYWl0cykpLCBtX2xhc3Rfc3RhdGUoMCksIG1fcmVwZWF0ZXJfaWQoMCksIG1faGFzX2JhY2tyZWZzKGZhbHNlKSwgbV9iYWNrcmVmcygwKSwgbV9oYXNfcmVjdXJzaW9ucyhmYWxzZSkKLXsKLSAgIG1fcGRhdGEtPm1fZGF0YS5jbGVhcigpOwotICAgbV9wZGF0YS0+bV9zdGF0dXMgPSA6Om5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OmVycm9yX29rOwotICAgc3RhdGljIGNvbnN0IGNoYXJUIHcgPSAndyc7Ci0gICBzdGF0aWMgY29uc3QgY2hhclQgcyA9ICdzJzsKLSAgIHN0YXRpYyBjb25zdCBjaGFyVCBsWzVdID0geyAnbCcsICdvJywgJ3cnLCAnZScsICdyJywgfTsKLSAgIHN0YXRpYyBjb25zdCBjaGFyVCB1WzVdID0geyAndScsICdwJywgJ3AnLCAnZScsICdyJywgfTsKLSAgIHN0YXRpYyBjb25zdCBjaGFyVCBhWzVdID0geyAnYScsICdsJywgJ3AnLCAnaCcsICdhJywgfTsKLSAgIG1fd29yZF9tYXNrID0gbV90cmFpdHMubG9va3VwX2NsYXNzbmFtZSgmdywgJncgKzEpOwotICAgbV9tYXNrX3NwYWNlID0gbV90cmFpdHMubG9va3VwX2NsYXNzbmFtZSgmcywgJnMgKzEpOwotICAgbV9sb3dlcl9tYXNrID0gbV90cmFpdHMubG9va3VwX2NsYXNzbmFtZShsLCBsICsgNSk7Ci0gICBtX3VwcGVyX21hc2sgPSBtX3RyYWl0cy5sb29rdXBfY2xhc3NuYW1lKHUsIHUgKyA1KTsKLSAgIG1fYWxwaGFfbWFzayA9IG1fdHJhaXRzLmxvb2t1cF9jbGFzc25hbWUoYSwgYSArIDUpOwotICAgbV9wZGF0YS0+bV93b3JkX21hc2sgPSBtX3dvcmRfbWFzazsKLSAgIE5ETkJPT1NUX0FTU0VSVChtX3dvcmRfbWFzayAhPSAwKTsgCi0gICBORE5CT09TVF9BU1NFUlQobV9tYXNrX3NwYWNlICE9IDApOyAKLSAgIE5ETkJPT1NUX0FTU0VSVChtX2xvd2VyX21hc2sgIT0gMCk7IAotICAgTkROQk9PU1RfQVNTRVJUKG1fdXBwZXJfbWFzayAhPSAwKTsgCi0gICBORE5CT09TVF9BU1NFUlQobV9hbHBoYV9tYXNrICE9IDApOyAKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1yZV9zeW50YXhfYmFzZSogYmFzaWNfcmVnZXhfY3JlYXRvcjxjaGFyVCwgdHJhaXRzPjo6YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X3R5cGUgdCwgc3RkOjpzaXplX3QgcykKLXsKLSAgIC8vIGlmIHRoZSBzdGF0ZSBpcyBhIGJhY2tyZWYgdGhlbiBtYWtlIGEgbm90ZSBvZiBpdDoKLSAgIGlmKHQgPT0gc3ludGF4X2VsZW1lbnRfYmFja3JlZikKLSAgICAgIHRoaXMtPm1faGFzX2JhY2tyZWZzID0gdHJ1ZTsKLSAgIC8vIGFwcGVuZCBhIG5ldyBzdGF0ZSwgc3RhcnQgYnkgYWxpZ25pbmcgb3VyIGxhc3Qgb25lOgotICAgbV9wZGF0YS0+bV9kYXRhLmFsaWduKCk7Ci0gICAvLyBzZXQgdGhlIG9mZnNldCB0byB0aGUgbmV4dCBzdGF0ZSBpbiBvdXIgbGFzdCBvbmU6Ci0gICBpZihtX2xhc3Rfc3RhdGUpCi0gICAgICBtX2xhc3Rfc3RhdGUtPm5leHQuaSA9IG1fcGRhdGEtPm1fZGF0YS5zaXplKCkgLSBnZXRvZmZzZXQobV9sYXN0X3N0YXRlKTsKLSAgIC8vIG5vdyBhY3R1YWxseSBleHRlbnQgb3VyIGRhdGE6Ci0gICBtX2xhc3Rfc3RhdGUgPSBzdGF0aWNfY2FzdDxyZV9zeW50YXhfYmFzZSo+KG1fcGRhdGEtPm1fZGF0YS5leHRlbmQocykpOwotICAgLy8gZmlsbCBpbiBib2lsZXJwbGF0ZSBvcHRpb25zIGluIHRoZSBuZXcgc3RhdGU6Ci0gICBtX2xhc3Rfc3RhdGUtPm5leHQuaSA9IDA7Ci0gICBtX2xhc3Rfc3RhdGUtPnR5cGUgPSB0OwotICAgcmV0dXJuIG1fbGFzdF9zdGF0ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1yZV9zeW50YXhfYmFzZSogYmFzaWNfcmVnZXhfY3JlYXRvcjxjaGFyVCwgdHJhaXRzPjo6aW5zZXJ0X3N0YXRlKHN0ZDo6cHRyZGlmZl90IHBvcywgc3ludGF4X2VsZW1lbnRfdHlwZSB0LCBzdGQ6OnNpemVfdCBzKQotewotICAgLy8gYXBwZW5kIGEgbmV3IHN0YXRlLCBzdGFydCBieSBhbGlnbmluZyBvdXIgbGFzdCBvbmU6Ci0gICBtX3BkYXRhLT5tX2RhdGEuYWxpZ24oKTsKLSAgIC8vIHNldCB0aGUgb2Zmc2V0IHRvIHRoZSBuZXh0IHN0YXRlIGluIG91ciBsYXN0IG9uZToKLSAgIGlmKG1fbGFzdF9zdGF0ZSkKLSAgICAgIG1fbGFzdF9zdGF0ZS0+bmV4dC5pID0gbV9wZGF0YS0+bV9kYXRhLnNpemUoKSAtIGdldG9mZnNldChtX2xhc3Rfc3RhdGUpOwotICAgLy8gcmVtZW1iZXIgdGhlIGxhc3Qgc3RhdGUgcG9zaXRpb246Ci0gICBzdGQ6OnB0cmRpZmZfdCBvZmYgPSBnZXRvZmZzZXQobV9sYXN0X3N0YXRlKSArIHM7Ci0gICAvLyBub3cgYWN0dWFsbHkgaW5zZXJ0IG91ciBkYXRhOgotICAgcmVfc3ludGF4X2Jhc2UqIG5ld19zdGF0ZSA9IHN0YXRpY19jYXN0PHJlX3N5bnRheF9iYXNlKj4obV9wZGF0YS0+bV9kYXRhLmluc2VydChwb3MsIHMpKTsKLSAgIC8vIGZpbGwgaW4gYm9pbGVycGxhdGUgb3B0aW9ucyBpbiB0aGUgbmV3IHN0YXRlOgotICAgbmV3X3N0YXRlLT5uZXh0LmkgPSBzOwotICAgbmV3X3N0YXRlLT50eXBlID0gdDsKLSAgIG1fbGFzdF9zdGF0ZSA9IGdldGFkZHJlc3Mob2ZmKTsKLSAgIHJldHVybiBuZXdfc3RhdGU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotcmVfbGl0ZXJhbCogYmFzaWNfcmVnZXhfY3JlYXRvcjxjaGFyVCwgdHJhaXRzPjo6YXBwZW5kX2xpdGVyYWwoY2hhclQgYykKLXsKLSAgIHJlX2xpdGVyYWwqIHJlc3VsdDsKLSAgIC8vIHN0YXJ0IGJ5IHNlZWluZyBpZiB3ZSBoYXZlIGFuIGV4aXN0aW5nIHJlX2xpdGVyYWwgd2UgY2FuIGV4dGVuZDoKLSAgIGlmKCgwID09IG1fbGFzdF9zdGF0ZSkgfHwgKG1fbGFzdF9zdGF0ZS0+dHlwZSAhPSBzeW50YXhfZWxlbWVudF9saXRlcmFsKSkKLSAgIHsKLSAgICAgIC8vIG5vIGV4aXN0aW5nIHJlX2xpdGVyYWwsIGNyZWF0ZSBhIG5ldyBvbmU6Ci0gICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxyZV9saXRlcmFsKj4oYXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X2xpdGVyYWwsIHNpemVvZihyZV9saXRlcmFsKSArIHNpemVvZihjaGFyVCkpKTsKLSAgICAgIHJlc3VsdC0+bGVuZ3RoID0gMTsKLSAgICAgICpzdGF0aWNfY2FzdDxjaGFyVCo+KHN0YXRpY19jYXN0PHZvaWQqPihyZXN1bHQrMSkpID0gbV90cmFpdHMudHJhbnNsYXRlKGMsIG1faWNhc2UpOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgLy8gd2UgaGF2ZSBhbiBleGlzdGluZyByZV9saXRlcmFsLCBleHRlbmQgaXQ6Ci0gICAgICBzdGQ6OnB0cmRpZmZfdCBvZmYgPSBnZXRvZmZzZXQobV9sYXN0X3N0YXRlKTsKLSAgICAgIG1fcGRhdGEtPm1fZGF0YS5leHRlbmQoc2l6ZW9mKGNoYXJUKSk7Ci0gICAgICBtX2xhc3Rfc3RhdGUgPSByZXN1bHQgPSBzdGF0aWNfY2FzdDxyZV9saXRlcmFsKj4oZ2V0YWRkcmVzcyhvZmYpKTsKLSAgICAgIGNoYXJUKiBjaGFyYWN0ZXJzID0gc3RhdGljX2Nhc3Q8Y2hhclQqPihzdGF0aWNfY2FzdDx2b2lkKj4ocmVzdWx0KzEpKTsKLSAgICAgIGNoYXJhY3RlcnNbcmVzdWx0LT5sZW5ndGhdID0gbV90cmFpdHMudHJhbnNsYXRlKGMsIG1faWNhc2UpOwotICAgICAgKysocmVzdWx0LT5sZW5ndGgpOwotICAgfQotICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1pbmxpbmUgcmVfc3ludGF4X2Jhc2UqIGJhc2ljX3JlZ2V4X2NyZWF0b3I8Y2hhclQsIHRyYWl0cz46OmFwcGVuZF9zZXQoCi0gICBjb25zdCBiYXNpY19jaGFyX3NldDxjaGFyVCwgdHJhaXRzPiYgY2hhcl9zZXQpCi17Ci0gICB0eXBlZGVmIG1wbDo6Ym9vbF88IChzaXplb2YoY2hhclQpID09IDEpID4gdHJ1dGhfdHlwZTsKLSAgIHJldHVybiBjaGFyX3NldC5oYXNfZGlncmFwaHMoKSAKLSAgICAgID8gYXBwZW5kX3NldChjaGFyX3NldCwgc3RhdGljX2Nhc3Q8bXBsOjpmYWxzZV8qPigwKSkKLSAgICAgIDogYXBwZW5kX3NldChjaGFyX3NldCwgc3RhdGljX2Nhc3Q8dHJ1dGhfdHlwZSo+KDApKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1yZV9zeW50YXhfYmFzZSogYmFzaWNfcmVnZXhfY3JlYXRvcjxjaGFyVCwgdHJhaXRzPjo6YXBwZW5kX3NldCgKLSAgIGNvbnN0IGJhc2ljX2NoYXJfc2V0PGNoYXJULCB0cmFpdHM+JiBjaGFyX3NldCwgbXBsOjpmYWxzZV8qKQotewotICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6OnN0cmluZ190eXBlIHN0cmluZ190eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNpY19jaGFyX3NldDxjaGFyVCwgdHJhaXRzPjo6bGlzdF9pdGVyYXRvciBpdGVtX2l0ZXJhdG9yOwotICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6OmNoYXJfY2xhc3NfdHlwZSBtX3R5cGU7Ci0gICAKLSAgIHJlX3NldF9sb25nPG1fdHlwZT4qIHJlc3VsdCA9IHN0YXRpY19jYXN0PHJlX3NldF9sb25nPG1fdHlwZT4qPihhcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfbG9uZ19zZXQsIHNpemVvZihyZV9zZXRfbG9uZzxtX3R5cGU+KSkpOwotICAgLy8KLSAgIC8vIGZpbGwgaW4gdGhlIGJhc2ljczoKLSAgIC8vCi0gICByZXN1bHQtPmNzaW5nbGVzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pig6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKGNoYXJfc2V0LnNpbmdsZXNfYmVnaW4oKSwgY2hhcl9zZXQuc2luZ2xlc19lbmQoKSkpOwotICAgcmVzdWx0LT5jcmFuZ2VzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pig6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKGNoYXJfc2V0LnJhbmdlc19iZWdpbigpLCBjaGFyX3NldC5yYW5nZXNfZW5kKCkpKSAvIDI7Ci0gICByZXN1bHQtPmNlcXVpdmFsZW50cyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZShjaGFyX3NldC5lcXVpdmFsZW50c19iZWdpbigpLCBjaGFyX3NldC5lcXVpdmFsZW50c19lbmQoKSkpOwotICAgcmVzdWx0LT5jY2xhc3NlcyA9IGNoYXJfc2V0LmNsYXNzZXMoKTsKLSAgIHJlc3VsdC0+Y25jbGFzc2VzID0gY2hhcl9zZXQubmVnYXRlZF9jbGFzc2VzKCk7Ci0gICBpZihmbGFncygpICYgcmVnYmFzZTo6aWNhc2UpCi0gICB7Ci0gICAgICAvLyBhZGp1c3QgY2xhc3NlcyBhcyBuZWVkZWQ6Ci0gICAgICBpZigoKHJlc3VsdC0+Y2NsYXNzZXMgJiBtX2xvd2VyX21hc2spID09IG1fbG93ZXJfbWFzaykgfHwgKChyZXN1bHQtPmNjbGFzc2VzICYgbV91cHBlcl9tYXNrKSA9PSBtX3VwcGVyX21hc2spKQotICAgICAgICAgcmVzdWx0LT5jY2xhc3NlcyB8PSBtX2FscGhhX21hc2s7Ci0gICAgICBpZigoKHJlc3VsdC0+Y25jbGFzc2VzICYgbV9sb3dlcl9tYXNrKSA9PSBtX2xvd2VyX21hc2spIHx8ICgocmVzdWx0LT5jbmNsYXNzZXMgJiBtX3VwcGVyX21hc2spID09IG1fdXBwZXJfbWFzaykpCi0gICAgICAgICByZXN1bHQtPmNuY2xhc3NlcyB8PSBtX2FscGhhX21hc2s7Ci0gICB9Ci0KLSAgIHJlc3VsdC0+aXNub3QgPSBjaGFyX3NldC5pc19uZWdhdGVkKCk7Ci0gICByZXN1bHQtPnNpbmdsZXRvbiA9ICFjaGFyX3NldC5oYXNfZGlncmFwaHMoKTsKLSAgIC8vCi0gICAvLyByZW1lbWJlciB3aGVyZSB0aGUgc3RhdGUgaXMgZm9yIGxhdGVyOgotICAgLy8KLSAgIHN0ZDo6cHRyZGlmZl90IG9mZnNldCA9IGdldG9mZnNldChyZXN1bHQpOwotICAgLy8KLSAgIC8vIG5vdyBleHRlbmQgd2l0aCBhbGwgdGhlIHNpbmdsZXM6Ci0gICAvLwotICAgaXRlbV9pdGVyYXRvciBmaXJzdCwgbGFzdDsKLSAgIGZpcnN0ID0gY2hhcl9zZXQuc2luZ2xlc19iZWdpbigpOwotICAgbGFzdCA9IGNoYXJfc2V0LnNpbmdsZXNfZW5kKCk7Ci0gICB3aGlsZShmaXJzdCAhPSBsYXN0KQotICAgewotICAgICAgY2hhclQqIHAgPSBzdGF0aWNfY2FzdDxjaGFyVCo+KHRoaXMtPm1fcGRhdGEtPm1fZGF0YS5leHRlbmQoc2l6ZW9mKGNoYXJUKSAqIChmaXJzdC0+c2Vjb25kID8gMyA6IDIpKSk7Ci0gICAgICBwWzBdID0gbV90cmFpdHMudHJhbnNsYXRlKGZpcnN0LT5maXJzdCwgbV9pY2FzZSk7Ci0gICAgICBpZihmaXJzdC0+c2Vjb25kKQotICAgICAgewotICAgICAgICAgcFsxXSA9IG1fdHJhaXRzLnRyYW5zbGF0ZShmaXJzdC0+c2Vjb25kLCBtX2ljYXNlKTsKLSAgICAgICAgIHBbMl0gPSAwOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICAgcFsxXSA9IDA7Ci0gICAgICArK2ZpcnN0OwotICAgfQotICAgLy8KLSAgIC8vIG5vdyBleHRlbmQgd2l0aCBhbGwgdGhlIHJhbmdlczoKLSAgIC8vCi0gICBmaXJzdCA9IGNoYXJfc2V0LnJhbmdlc19iZWdpbigpOwotICAgbGFzdCA9IGNoYXJfc2V0LnJhbmdlc19lbmQoKTsKLSAgIHdoaWxlKGZpcnN0ICE9IGxhc3QpCi0gICB7Ci0gICAgICAvLyBmaXJzdCBncmFiIHRoZSBlbmRwb2ludHMgb2YgdGhlIHJhbmdlOgotICAgICAgZGlncmFwaDxjaGFyVD4gYzEgPSAqZmlyc3Q7Ci0gICAgICBjMS5maXJzdCA9IHRoaXMtPm1fdHJhaXRzLnRyYW5zbGF0ZShjMS5maXJzdCwgdGhpcy0+bV9pY2FzZSk7Ci0gICAgICBjMS5zZWNvbmQgPSB0aGlzLT5tX3RyYWl0cy50cmFuc2xhdGUoYzEuc2Vjb25kLCB0aGlzLT5tX2ljYXNlKTsKLSAgICAgICsrZmlyc3Q7Ci0gICAgICBkaWdyYXBoPGNoYXJUPiBjMiA9ICpmaXJzdDsKLSAgICAgIGMyLmZpcnN0ID0gdGhpcy0+bV90cmFpdHMudHJhbnNsYXRlKGMyLmZpcnN0LCB0aGlzLT5tX2ljYXNlKTsKLSAgICAgIGMyLnNlY29uZCA9IHRoaXMtPm1fdHJhaXRzLnRyYW5zbGF0ZShjMi5zZWNvbmQsIHRoaXMtPm1faWNhc2UpOwotICAgICAgKytmaXJzdDsKLSAgICAgIHN0cmluZ190eXBlIHMxLCBzMjsKLSAgICAgIC8vIGRpZmZlcmVudCBhY3Rpb25zIG5vdyBkZXBlbmRpbmcgdXBvbiB3aGV0aGVyIGNvbGxhdGlvbiBpcyB0dXJuZWQgb246Ci0gICAgICBpZihmbGFncygpICYgcmVnZXhfY29uc3RhbnRzOjpjb2xsYXRlKQotICAgICAgewotICAgICAgICAgLy8gd2UgbmVlZCB0byB0cmFuc2Zvcm0gb3VyIHJhbmdlIGludG8gc29ydCBrZXlzOgotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sIDwgMykKLSAgICAgICAgIHN0cmluZ190eXBlIGluKDMsIGNoYXJUKDApKTsKLSAgICAgICAgIGluWzBdID0gYzEuZmlyc3Q7Ci0gICAgICAgICBpblsxXSA9IGMxLnNlY29uZDsKLSAgICAgICAgIHMxID0gdGhpcy0+bV90cmFpdHMudHJhbnNmb3JtKGluLmNfc3RyKCksIChpblsxXSA/IGluLmNfc3RyKCkrMiA6IGluLmNfc3RyKCkrMSkpOwotICAgICAgICAgaW5bMF0gPSBjMi5maXJzdDsKLSAgICAgICAgIGluWzFdID0gYzIuc2Vjb25kOwotICAgICAgICAgczIgPSB0aGlzLT5tX3RyYWl0cy50cmFuc2Zvcm0oaW4uY19zdHIoKSwgKGluWzFdID8gaW4uY19zdHIoKSsyIDogaW4uY19zdHIoKSsxKSk7Ci0jZWxzZQotICAgICAgICAgY2hhclQgYTFbM10gPSB7IGMxLmZpcnN0LCBjMS5zZWNvbmQsIGNoYXJUKDApLCB9OwotICAgICAgICAgY2hhclQgYTJbM10gPSB7IGMyLmZpcnN0LCBjMi5zZWNvbmQsIGNoYXJUKDApLCB9OwotICAgICAgICAgczEgPSB0aGlzLT5tX3RyYWl0cy50cmFuc2Zvcm0oYTEsIChhMVsxXSA/IGExKzIgOiBhMSsxKSk7Ci0gICAgICAgICBzMiA9IHRoaXMtPm1fdHJhaXRzLnRyYW5zZm9ybShhMiwgKGEyWzFdID8gYTIrMiA6IGEyKzEpKTsKLSNlbmRpZgotICAgICAgICAgaWYoczEuc2l6ZSgpID09IDApCi0gICAgICAgICAgICBzMSA9IHN0cmluZ190eXBlKDEsIGNoYXJUKDApKTsKLSAgICAgICAgIGlmKHMyLnNpemUoKSA9PSAwKQotICAgICAgICAgICAgczIgPSBzdHJpbmdfdHlwZSgxLCBjaGFyVCgwKSk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICBpZihjMS5zZWNvbmQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBzMS5pbnNlcnQoczEuZW5kKCksIGMxLmZpcnN0KTsKLSAgICAgICAgICAgIHMxLmluc2VydChzMS5lbmQoKSwgYzEuc2Vjb25kKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHMxID0gc3RyaW5nX3R5cGUoMSwgYzEuZmlyc3QpOwotICAgICAgICAgaWYoYzIuc2Vjb25kKQotICAgICAgICAgewotICAgICAgICAgICAgczIuaW5zZXJ0KHMyLmVuZCgpLCBjMi5maXJzdCk7Ci0gICAgICAgICAgICBzMi5pbnNlcnQoczIuZW5kKCksIGMyLnNlY29uZCk7Ci0gICAgICAgICB9Ci0gICAgICAgICBlbHNlCi0gICAgICAgICAgICBzMi5pbnNlcnQoczIuZW5kKCksIGMyLmZpcnN0KTsKLSAgICAgIH0KLSAgICAgIGlmKHMxID4gczIpCi0gICAgICB7Ci0gICAgICAgICAvLyBPb3BzIGVycm9yOgotICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICB9Ci0gICAgICBjaGFyVCogcCA9IHN0YXRpY19jYXN0PGNoYXJUKj4odGhpcy0+bV9wZGF0YS0+bV9kYXRhLmV4dGVuZChzaXplb2YoY2hhclQpICogKHMxLnNpemUoKSArIHMyLnNpemUoKSArIDIpICkgKTsKLSAgICAgIHJlX2RldGFpbDo6Y29weShzMS5iZWdpbigpLCBzMS5lbmQoKSwgcCk7Ci0gICAgICBwW3MxLnNpemUoKV0gPSBjaGFyVCgwKTsKLSAgICAgIHAgKz0gczEuc2l6ZSgpICsgMTsKLSAgICAgIHJlX2RldGFpbDo6Y29weShzMi5iZWdpbigpLCBzMi5lbmQoKSwgcCk7Ci0gICAgICBwW3MyLnNpemUoKV0gPSBjaGFyVCgwKTsKLSAgIH0KLSAgIC8vCi0gICAvLyBub3cgcHJvY2VzcyB0aGUgZXF1aXZhbGVuY2UgY2xhc3NlczoKLSAgIC8vCi0gICBmaXJzdCA9IGNoYXJfc2V0LmVxdWl2YWxlbnRzX2JlZ2luKCk7Ci0gICBsYXN0ID0gY2hhcl9zZXQuZXF1aXZhbGVudHNfZW5kKCk7Ci0gICB3aGlsZShmaXJzdCAhPSBsYXN0KQotICAgewotICAgICAgc3RyaW5nX3R5cGUgczsKLSAgICAgIGlmKGZpcnN0LT5zZWNvbmQpCi0gICAgICB7Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPCAzKQotICAgICAgICAgc3RyaW5nX3R5cGUgaW4oMywgY2hhclQoMCkpOwotICAgICAgICAgaW5bMF0gPSBmaXJzdC0+Zmlyc3Q7Ci0gICAgICAgICBpblsxXSA9IGZpcnN0LT5zZWNvbmQ7Ci0gICAgICAgICBzID0gbV90cmFpdHMudHJhbnNmb3JtX3ByaW1hcnkoaW4uY19zdHIoKSwgaW4uY19zdHIoKSsyKTsKLSNlbHNlCi0gICAgICAgICBjaGFyVCBjc1szXSA9IHsgZmlyc3QtPmZpcnN0LCBmaXJzdC0+c2Vjb25kLCBjaGFyVCgwKSwgfTsKLSAgICAgICAgIHMgPSBtX3RyYWl0cy50cmFuc2Zvcm1fcHJpbWFyeShjcywgY3MrMik7Ci0jZW5kaWYKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgICAgIHMgPSBtX3RyYWl0cy50cmFuc2Zvcm1fcHJpbWFyeSgmZmlyc3QtPmZpcnN0LCAmZmlyc3QtPmZpcnN0KzEpOwotICAgICAgaWYocy5lbXB0eSgpKQotICAgICAgICAgcmV0dXJuIDA7ICAvLyBpbnZhbGlkIG9yIHVuc3VwcG9ydGVkIGVxdWl2YWxlbmNlIGNsYXNzCi0gICAgICBjaGFyVCogcCA9IHN0YXRpY19jYXN0PGNoYXJUKj4odGhpcy0+bV9wZGF0YS0+bV9kYXRhLmV4dGVuZChzaXplb2YoY2hhclQpICogKHMuc2l6ZSgpKzEpICkgKTsKLSAgICAgIHJlX2RldGFpbDo6Y29weShzLmJlZ2luKCksIHMuZW5kKCksIHApOwotICAgICAgcFtzLnNpemUoKV0gPSBjaGFyVCgwKTsKLSAgICAgICsrZmlyc3Q7Ci0gICB9Ci0gICAvLwotICAgLy8gZmluYWxseSByZXNldCB0aGUgYWRkcmVzcyBvZiBvdXIgbGFzdCBzdGF0ZToKLSAgIC8vCi0gICBtX2xhc3Rfc3RhdGUgPSByZXN1bHQgPSBzdGF0aWNfY2FzdDxyZV9zZXRfbG9uZzxtX3R5cGU+Kj4oZ2V0YWRkcmVzcyhvZmZzZXQpKTsKLSAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUgYm9vbCBjaGFyX2xlc3MoVCB0MSwgVCB0MikKLXsKLSAgIHJldHVybiB0MSA8IHQyOwotfQotaW5saW5lIGJvb2wgY2hhcl9sZXNzKGNoYXIgdDEsIGNoYXIgdDIpCi17Ci0gICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odDEpIDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odDIpOwotfQotaW5saW5lIGJvb2wgY2hhcl9sZXNzKHNpZ25lZCBjaGFyIHQxLCBzaWduZWQgY2hhciB0MikKLXsKLSAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih0MSkgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih0Mik7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotcmVfc3ludGF4X2Jhc2UqIGJhc2ljX3JlZ2V4X2NyZWF0b3I8Y2hhclQsIHRyYWl0cz46OmFwcGVuZF9zZXQoCi0gICBjb25zdCBiYXNpY19jaGFyX3NldDxjaGFyVCwgdHJhaXRzPiYgY2hhcl9zZXQsIG1wbDo6dHJ1ZV8qKQotewotICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6OnN0cmluZ190eXBlIHN0cmluZ190eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNpY19jaGFyX3NldDxjaGFyVCwgdHJhaXRzPjo6bGlzdF9pdGVyYXRvciBpdGVtX2l0ZXJhdG9yOwotICAgCi0gICByZV9zZXQqIHJlc3VsdCA9IHN0YXRpY19jYXN0PHJlX3NldCo+KGFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9zZXQsIHNpemVvZihyZV9zZXQpKSk7Ci0gICBib29sIG5lZ2F0ZSA9IGNoYXJfc2V0LmlzX25lZ2F0ZWQoKTsKLSAgIHN0ZDo6bWVtc2V0KHJlc3VsdC0+X21hcCwgMCwgc2l6ZW9mKHJlc3VsdC0+X21hcCkpOwotICAgLy8KLSAgIC8vIGhhbmRsZSBzaW5nbGVzIGZpcnN0OgotICAgLy8KLSAgIGl0ZW1faXRlcmF0b3IgZmlyc3QsIGxhc3Q7Ci0gICBmaXJzdCA9IGNoYXJfc2V0LnNpbmdsZXNfYmVnaW4oKTsKLSAgIGxhc3QgPSBjaGFyX3NldC5zaW5nbGVzX2VuZCgpOwotICAgd2hpbGUoZmlyc3QgIT0gbGFzdCkKLSAgIHsKLSAgICAgIGZvcih1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCAoMSA8PCBDSEFSX0JJVCk7ICsraSkKLSAgICAgIHsKLSAgICAgICAgIGlmKHRoaXMtPm1fdHJhaXRzLnRyYW5zbGF0ZShzdGF0aWNfY2FzdDxjaGFyVD4oaSksIHRoaXMtPm1faWNhc2UpCi0gICAgICAgICAgICA9PSB0aGlzLT5tX3RyYWl0cy50cmFuc2xhdGUoZmlyc3QtPmZpcnN0LCB0aGlzLT5tX2ljYXNlKSkKLSAgICAgICAgICAgIHJlc3VsdC0+X21hcFtpXSA9IHRydWU7Ci0gICAgICB9Ci0gICAgICArK2ZpcnN0OwotICAgfQotICAgLy8KLSAgIC8vIE9LIG5vdyBoYW5kbGUgcmFuZ2VzOgotICAgLy8KLSAgIGZpcnN0ID0gY2hhcl9zZXQucmFuZ2VzX2JlZ2luKCk7Ci0gICBsYXN0ID0gY2hhcl9zZXQucmFuZ2VzX2VuZCgpOwotICAgd2hpbGUoZmlyc3QgIT0gbGFzdCkKLSAgIHsKLSAgICAgIC8vIGZpcnN0IGdyYWIgdGhlIGVuZHBvaW50cyBvZiB0aGUgcmFuZ2U6Ci0gICAgICBjaGFyVCBjMSA9IHRoaXMtPm1fdHJhaXRzLnRyYW5zbGF0ZShmaXJzdC0+Zmlyc3QsIHRoaXMtPm1faWNhc2UpOwotICAgICAgKytmaXJzdDsKLSAgICAgIGNoYXJUIGMyID0gdGhpcy0+bV90cmFpdHMudHJhbnNsYXRlKGZpcnN0LT5maXJzdCwgdGhpcy0+bV9pY2FzZSk7Ci0gICAgICArK2ZpcnN0OwotICAgICAgLy8gZGlmZmVyZW50IGFjdGlvbnMgbm93IGRlcGVuZGluZyB1cG9uIHdoZXRoZXIgY29sbGF0aW9uIGlzIHR1cm5lZCBvbjoKLSAgICAgIGlmKGZsYWdzKCkgJiByZWdleF9jb25zdGFudHM6OmNvbGxhdGUpCi0gICAgICB7Ci0gICAgICAgICAvLyB3ZSBuZWVkIHRvIHRyYW5zZm9ybSBvdXIgcmFuZ2UgaW50byBzb3J0IGtleXM6Ci0gICAgICAgICBjaGFyVCBjM1syXSA9IHsgYzEsIGNoYXJUKDApLCB9OwotICAgICAgICAgc3RyaW5nX3R5cGUgczEgPSB0aGlzLT5tX3RyYWl0cy50cmFuc2Zvcm0oYzMsIGMzKzEpOwotICAgICAgICAgYzNbMF0gPSBjMjsKLSAgICAgICAgIHN0cmluZ190eXBlIHMyID0gdGhpcy0+bV90cmFpdHMudHJhbnNmb3JtKGMzLCBjMysxKTsKLSAgICAgICAgIGlmKHMxID4gczIpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBPb3BzIGVycm9yOgotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICB9Ci0gICAgICAgICBORE5CT09TVF9BU1NFUlQoYzNbMV0gPT0gY2hhclQoMCkpOwotICAgICAgICAgZm9yKHVuc2lnbmVkIGkgPSAwOyBpIDwgKDF1IDw8IENIQVJfQklUKTsgKytpKQotICAgICAgICAgewotICAgICAgICAgICAgYzNbMF0gPSBzdGF0aWNfY2FzdDxjaGFyVD4oaSk7Ci0gICAgICAgICAgICBzdHJpbmdfdHlwZSBzMyA9IHRoaXMtPm1fdHJhaXRzLnRyYW5zZm9ybShjMywgYzMgKzEpOwotICAgICAgICAgICAgaWYoKHMxIDw9IHMzKSAmJiAoczMgPD0gczIpKQotICAgICAgICAgICAgICAgcmVzdWx0LT5fbWFwW2ldID0gdHJ1ZTsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgIGlmKGNoYXJfbGVzcyhjMiwgYzEpKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gT29wcyBlcnJvcjoKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgfQotICAgICAgICAgLy8gZXZlcnl0aGluZyBpbiByYW5nZSBtYXRjaGVzOgotICAgICAgICAgc3RkOjptZW1zZXQocmVzdWx0LT5fbWFwICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oYzEpLCB0cnVlLCAxICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oYzIpIC0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oYzEpKTsKLSAgICAgIH0KLSAgIH0KLSAgIC8vCi0gICAvLyBhbmQgbm93IHRoZSBjbGFzc2VzOgotICAgLy8KLSAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpjaGFyX2NsYXNzX3R5cGUgbV90eXBlOwotICAgbV90eXBlIG0gPSBjaGFyX3NldC5jbGFzc2VzKCk7Ci0gICBpZihmbGFncygpICYgcmVnYmFzZTo6aWNhc2UpCi0gICB7Ci0gICAgICAvLyBhZGp1c3QgbSBhcyBuZWVkZWQ6Ci0gICAgICBpZigoKG0gJiBtX2xvd2VyX21hc2spID09IG1fbG93ZXJfbWFzaykgfHwgKChtICYgbV91cHBlcl9tYXNrKSA9PSBtX3VwcGVyX21hc2spKQotICAgICAgICAgbSB8PSBtX2FscGhhX21hc2s7Ci0gICB9Ci0gICBpZihtICE9IDApCi0gICB7Ci0gICAgICBmb3IodW5zaWduZWQgaSA9IDA7IGkgPCAoMXUgPDwgQ0hBUl9CSVQpOyArK2kpCi0gICAgICB7Ci0gICAgICAgICBpZih0aGlzLT5tX3RyYWl0cy5pc2N0eXBlKHN0YXRpY19jYXN0PGNoYXJUPihpKSwgbSkpCi0gICAgICAgICAgICByZXN1bHQtPl9tYXBbaV0gPSB0cnVlOwotICAgICAgfQotICAgfQotICAgLy8KLSAgIC8vIGFuZCBub3cgdGhlIG5lZ2F0ZWQgY2xhc3NlczoKLSAgIC8vCi0gICBtID0gY2hhcl9zZXQubmVnYXRlZF9jbGFzc2VzKCk7Ci0gICBpZihmbGFncygpICYgcmVnYmFzZTo6aWNhc2UpCi0gICB7Ci0gICAgICAvLyBhZGp1c3QgbSBhcyBuZWVkZWQ6Ci0gICAgICBpZigoKG0gJiBtX2xvd2VyX21hc2spID09IG1fbG93ZXJfbWFzaykgfHwgKChtICYgbV91cHBlcl9tYXNrKSA9PSBtX3VwcGVyX21hc2spKQotICAgICAgICAgbSB8PSBtX2FscGhhX21hc2s7Ci0gICB9Ci0gICBpZihtICE9IDApCi0gICB7Ci0gICAgICBmb3IodW5zaWduZWQgaSA9IDA7IGkgPCAoMXUgPDwgQ0hBUl9CSVQpOyArK2kpCi0gICAgICB7Ci0gICAgICAgICBpZigwID09IHRoaXMtPm1fdHJhaXRzLmlzY3R5cGUoc3RhdGljX2Nhc3Q8Y2hhclQ+KGkpLCBtKSkKLSAgICAgICAgICAgIHJlc3VsdC0+X21hcFtpXSA9IHRydWU7Ci0gICAgICB9Ci0gICB9Ci0gICAvLwotICAgLy8gbm93IHByb2Nlc3MgdGhlIGVxdWl2YWxlbmNlIGNsYXNzZXM6Ci0gICAvLwotICAgZmlyc3QgPSBjaGFyX3NldC5lcXVpdmFsZW50c19iZWdpbigpOwotICAgbGFzdCA9IGNoYXJfc2V0LmVxdWl2YWxlbnRzX2VuZCgpOwotICAgd2hpbGUoZmlyc3QgIT0gbGFzdCkKLSAgIHsKLSAgICAgIHN0cmluZ190eXBlIHM7Ci0gICAgICBORE5CT09TVF9BU1NFUlQoc3RhdGljX2Nhc3Q8Y2hhclQ+KDApID09IGZpcnN0LT5zZWNvbmQpOwotICAgICAgcyA9IG1fdHJhaXRzLnRyYW5zZm9ybV9wcmltYXJ5KCZmaXJzdC0+Zmlyc3QsICZmaXJzdC0+Zmlyc3QrMSk7Ci0gICAgICBpZihzLmVtcHR5KCkpCi0gICAgICAgICByZXR1cm4gMDsgIC8vIGludmFsaWQgb3IgdW5zdXBwb3J0ZWQgZXF1aXZhbGVuY2UgY2xhc3MKLSAgICAgIGZvcih1bnNpZ25lZCBpID0gMDsgaSA8ICgxdSA8PCBDSEFSX0JJVCk7ICsraSkKLSAgICAgIHsKLSAgICAgICAgIGNoYXJUIGNbMl0gPSB7IChzdGF0aWNfY2FzdDxjaGFyVD4oaSkpLCBjaGFyVCgwKSwgfTsKLSAgICAgICAgIHN0cmluZ190eXBlIHMyID0gdGhpcy0+bV90cmFpdHMudHJhbnNmb3JtX3ByaW1hcnkoYywgYysxKTsKLSAgICAgICAgIGlmKHMgPT0gczIpCi0gICAgICAgICAgICByZXN1bHQtPl9tYXBbaV0gPSB0cnVlOwotICAgICAgfQotICAgICAgKytmaXJzdDsKLSAgIH0KLSAgIGlmKG5lZ2F0ZSkKLSAgIHsKLSAgICAgIGZvcih1bnNpZ25lZCBpID0gMDsgaSA8ICgxdSA8PCBDSEFSX0JJVCk7ICsraSkKLSAgICAgIHsKLSAgICAgICAgIHJlc3VsdC0+X21hcFtpXSA9ICEocmVzdWx0LT5fbWFwW2ldKTsKLSAgICAgIH0KLSAgIH0KLSAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotdm9pZCBiYXNpY19yZWdleF9jcmVhdG9yPGNoYXJULCB0cmFpdHM+OjpmaW5hbGl6ZShjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMikKLXsKLSAgIGlmKHRoaXMtPm1fcGRhdGEtPm1fc3RhdHVzKQotICAgICAgcmV0dXJuOwotICAgLy8gd2UndmUgYWRkZWQgYWxsIHRoZSBzdGF0ZXMgd2UgbmVlZCwgbm93IGZpbmlzaCB0aGluZ3Mgb2ZmLgotICAgLy8gc3RhcnQgYnkgYWRkaW5nIGEgdGVybWluYXRpbmcgc3RhdGU6Ci0gICBhcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfbWF0Y2gpOwotICAgLy8gZXh0ZW5kIHN0b3JhZ2UgdG8gc3RvcmUgb3JpZ2luYWwgZXhwcmVzc2lvbjoKLSAgIHN0ZDo6cHRyZGlmZl90IGxlbiA9IHAyIC0gcDE7Ci0gICBtX3BkYXRhLT5tX2V4cHJlc3Npb25fbGVuID0gbGVuOwotICAgY2hhclQqIHBzID0gc3RhdGljX2Nhc3Q8Y2hhclQqPihtX3BkYXRhLT5tX2RhdGEuZXh0ZW5kKHNpemVvZihjaGFyVCkgKiAoMSArIChwMiAtIHAxKSkpKTsKLSAgIG1fcGRhdGEtPm1fZXhwcmVzc2lvbiA9IHBzOwotICAgcmVfZGV0YWlsOjpjb3B5KHAxLCBwMiwgcHMpOwotICAgcHNbcDIgLSBwMV0gPSAwOwotICAgLy8gZmlsbCBpbiBvdXIgb3RoZXIgZGF0YS4uLgotICAgLy8gc3VjY2Vzc2Z1bCBwYXJzaW5nIGltcGxpZXMgYSB6ZXJvIHN0YXR1czoKLSAgIG1fcGRhdGEtPm1fc3RhdHVzID0gMDsKLSAgIC8vIGdldCB0aGUgZmlyc3Qgc3RhdGUgb2YgdGhlIG1hY2hpbmU6Ci0gICBtX3BkYXRhLT5tX2ZpcnN0X3N0YXRlID0gc3RhdGljX2Nhc3Q8cmVfc3ludGF4X2Jhc2UqPihtX3BkYXRhLT5tX2RhdGEuZGF0YSgpKTsKLSAgIC8vIGZpeHVwIHBvaW50ZXJzIGluIHRoZSBtYWNoaW5lOgotICAgZml4dXBfcG9pbnRlcnMobV9wZGF0YS0+bV9maXJzdF9zdGF0ZSk7Ci0gICBpZihtX2hhc19yZWN1cnNpb25zKQotICAgewotICAgICAgbV9wZGF0YS0+bV9oYXNfcmVjdXJzaW9ucyA9IHRydWU7Ci0gICAgICBmaXh1cF9yZWN1cnNpb25zKG1fcGRhdGEtPm1fZmlyc3Rfc3RhdGUpOwotICAgICAgaWYodGhpcy0+bV9wZGF0YS0+bV9zdGF0dXMpCi0gICAgICAgICByZXR1cm47Ci0gICB9Ci0gICBlbHNlCi0gICAgICBtX3BkYXRhLT5tX2hhc19yZWN1cnNpb25zID0gZmFsc2U7Ci0gICAvLyBjcmVhdGUgbmVzdGVkIHN0YXJ0bWFwczoKLSAgIGNyZWF0ZV9zdGFydG1hcHMobV9wZGF0YS0+bV9maXJzdF9zdGF0ZSk7Ci0gICAvLyBjcmVhdGUgbWFpbiBzdGFydG1hcDoKLSAgIHN0ZDo6bWVtc2V0KG1fcGRhdGEtPm1fc3RhcnRtYXAsIDAsIHNpemVvZihtX3BkYXRhLT5tX3N0YXJ0bWFwKSk7Ci0gICBtX3BkYXRhLT5tX2Nhbl9iZV9udWxsID0gMDsKLQotICAgbV9iYWRfcmVwZWF0cyA9IDA7Ci0gICBpZihtX2hhc19yZWN1cnNpb25zKQotICAgICAgbV9yZWN1cnNpb25fY2hlY2tzLmFzc2lnbigxICsgbV9wZGF0YS0+bV9tYXJrX2NvdW50LCBmYWxzZSk7Ci0gICBjcmVhdGVfc3RhcnRtYXAobV9wZGF0YS0+bV9maXJzdF9zdGF0ZSwgbV9wZGF0YS0+bV9zdGFydG1hcCwgJihtX3BkYXRhLT5tX2Nhbl9iZV9udWxsKSwgbWFza19hbGwpOwotICAgLy8gZ2V0IHRoZSByZXN0YXJ0IHR5cGU6Ci0gICBtX3BkYXRhLT5tX3Jlc3RhcnRfdHlwZSA9IGdldF9yZXN0YXJ0X3R5cGUobV9wZGF0YS0+bV9maXJzdF9zdGF0ZSk7Ci0gICAvLyBvcHRpbWlzZSBhIGxlYWRpbmcgcmVwZWF0IGlmIHRoZXJlIGlzIG9uZToKLSAgIHByb2JlX2xlYWRpbmdfcmVwZWF0KG1fcGRhdGEtPm1fZmlyc3Rfc3RhdGUpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLXZvaWQgYmFzaWNfcmVnZXhfY3JlYXRvcjxjaGFyVCwgdHJhaXRzPjo6Zml4dXBfcG9pbnRlcnMocmVfc3ludGF4X2Jhc2UqIHN0YXRlKQotewotICAgd2hpbGUoc3RhdGUpCi0gICB7Ci0gICAgICBzd2l0Y2goc3RhdGUtPnR5cGUpCi0gICAgICB7Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3JlY3Vyc2U6Ci0gICAgICAgICBtX2hhc19yZWN1cnNpb25zID0gdHJ1ZTsKLSAgICAgICAgIGlmKHN0YXRlLT5uZXh0LmkpCi0gICAgICAgICAgICBzdGF0ZS0+bmV4dC5wID0gZ2V0YWRkcmVzcyhzdGF0ZS0+bmV4dC5pLCBzdGF0ZSk7Ci0gICAgICAgICBlbHNlCi0gICAgICAgICAgICBzdGF0ZS0+bmV4dC5wID0gMDsKLSAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9yZXA6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2RvdF9yZXA6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2NoYXJfcmVwOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9zaG9ydF9zZXRfcmVwOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9sb25nX3NldF9yZXA6Ci0gICAgICAgICAvLyBzZXQgdGhlIHN0YXRlX2lkIG9mIHRoaXMgcmVwZWF0OgotICAgICAgICAgc3RhdGljX2Nhc3Q8cmVfcmVwZWF0Kj4oc3RhdGUpLT5zdGF0ZV9pZCA9IG1fcmVwZWF0ZXJfaWQrKzsKLSAgICAgICAgIE5ETkJPT1NUX0ZBTExUSFJPVUdIOwotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9hbHQ6Ci0gICAgICAgICBzdGQ6Om1lbXNldChzdGF0aWNfY2FzdDxyZV9hbHQqPihzdGF0ZSktPl9tYXAsIDAsIHNpemVvZihzdGF0aWNfY2FzdDxyZV9hbHQqPihzdGF0ZSktPl9tYXApKTsKLSAgICAgICAgIHN0YXRpY19jYXN0PHJlX2FsdCo+KHN0YXRlKS0+Y2FuX2JlX251bGwgPSAwOwotICAgICAgICAgTkROQk9PU1RfRkFMTFRIUk9VR0g7Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2p1bXA6Ci0gICAgICAgICBzdGF0aWNfY2FzdDxyZV9qdW1wKj4oc3RhdGUpLT5hbHQucCA9IGdldGFkZHJlc3Moc3RhdGljX2Nhc3Q8cmVfanVtcCo+KHN0YXRlKS0+YWx0LmksIHN0YXRlKTsKLSAgICAgICAgIE5ETkJPT1NUX0ZBTExUSFJPVUdIOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgIGlmKHN0YXRlLT5uZXh0LmkpCi0gICAgICAgICAgICBzdGF0ZS0+bmV4dC5wID0gZ2V0YWRkcmVzcyhzdGF0ZS0+bmV4dC5pLCBzdGF0ZSk7Ci0gICAgICAgICBlbHNlCi0gICAgICAgICAgICBzdGF0ZS0+bmV4dC5wID0gMDsKLSAgICAgIH0KLSAgICAgIHN0YXRlID0gc3RhdGUtPm5leHQucDsKLSAgIH0KLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci12b2lkIGJhc2ljX3JlZ2V4X2NyZWF0b3I8Y2hhclQsIHRyYWl0cz46OmZpeHVwX3JlY3Vyc2lvbnMocmVfc3ludGF4X2Jhc2UqIHN0YXRlKQotewotICAgcmVfc3ludGF4X2Jhc2UqIGJhc2UgPSBzdGF0ZTsKLSAgIHdoaWxlKHN0YXRlKQotICAgewotICAgICAgc3dpdGNoKHN0YXRlLT50eXBlKQotICAgICAgewotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9hc3NlcnRfYmFja3JlZjoKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIGp1c3QgY2hlY2sgdGhhdCB0aGUgaW5kZXggaXMgdmFsaWQ6Ci0gICAgICAgICAgICBpbnQgaWR4ID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfYnJhY2UqPihzdGF0ZSktPmluZGV4OwotICAgICAgICAgICAgaWYoaWR4IDwgMCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGlkeCA9IC1pZHgtMTsKLSAgICAgICAgICAgICAgIGlmKGlkeCA+PSAxMDAwMCkKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIGlkeCA9IG1fcGRhdGEtPmdldF9pZChpZHgpOwotICAgICAgICAgICAgICAgICAgaWYoaWR4IDw9IDApCi0gICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAvLyBjaGVjayBvZiBzdWItZXhwcmVzc2lvbiB0aGF0IGRvZXNuJ3QgZXhpc3Q6Ci0gICAgICAgICAgICAgICAgICAgICBpZigwID09IHRoaXMtPm1fcGRhdGEtPm1fc3RhdHVzKSAvLyB1cGRhdGUgdGhlIGVycm9yIGNvZGUgaWYgbm90IGFscmVhZHkgc2V0Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLT5tX3BkYXRhLT5tX3N0YXR1cyA9IG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OmVycm9yX2JhZF9wYXR0ZXJuOwotICAgICAgICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgICAgICAgIC8vIGNsZWFyIHRoZSBleHByZXNzaW9uLCB3ZSBzaG91bGQgYmUgZW1wdHk6Ci0gICAgICAgICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgICAgICAgdGhpcy0+bV9wZGF0YS0+bV9leHByZXNzaW9uID0gMDsKLSAgICAgICAgICAgICAgICAgICAgIHRoaXMtPm1fcGRhdGEtPm1fZXhwcmVzc2lvbl9sZW4gPSAwOwotICAgICAgICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCB0aHJvdyBpZiByZXF1aXJlZDoKLSAgICAgICAgICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICAgICAgICBpZigwID09ICh0aGlzLT5mbGFncygpICYgcmVnZXhfY29uc3RhbnRzOjpub19leGNlcHQpKQotICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgbWVzc2FnZSA9ICJFbmNvdW50ZXJlZCBhIGZvcndhcmQgcmVmZXJlbmNlIHRvIGEgbWFya2VkIHN1Yi1leHByZXNzaW9uIHRoYXQgZG9lcyBub3QgZXhpc3QuIjsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpyZWdleF9lcnJvciBlKG1lc3NhZ2UsIG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OmVycm9yX2JhZF9wYXR0ZXJuLCAwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGUucmFpc2UoKTsKLSAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9yZWN1cnNlOgotICAgICAgICAgewotICAgICAgICAgICAgYm9vbCBvayA9IGZhbHNlOwotICAgICAgICAgICAgcmVfc3ludGF4X2Jhc2UqIHAgPSBiYXNlOwotICAgICAgICAgICAgc3RkOjpwdHJkaWZmX3QgaWR4ID0gc3RhdGljX2Nhc3Q8cmVfanVtcCo+KHN0YXRlKS0+YWx0Lmk7Ci0gICAgICAgICAgICBpZihpZHggPiAxMDAwMCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICAvLyBUaGVyZSBtYXkgYmUgbW9yZSB0aGFuIG9uZSBjYXB0dXJlIGdyb3VwIHdpdGggdGhpcyBoYXNoLCBqdXN0IGRvIHdoYXQgUGVybAotICAgICAgICAgICAgICAgLy8gZG9lcyBhbmQgcmVjdXJzZSB0byB0aGUgbGVmdG1vc3Q6Ci0gICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgaWR4ID0gbV9wZGF0YS0+Z2V0X2lkKHN0YXRpY19jYXN0PGludD4oaWR4KSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB3aGlsZShwKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgaWYoKHAtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfc3RhcnRtYXJrKSAmJiAoc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPihwKS0+aW5kZXggPT0gaWR4KSkKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICAgICAvLyBXZSd2ZSBmb3VuZCB0aGUgdGFyZ2V0IG9mIHRoZSByZWN1cnNpb24sIHNldCB0aGUganVtcCB0YXJnZXQ6Ci0gICAgICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8cmVfanVtcCo+KHN0YXRlKS0+YWx0LnAgPSBwOwotICAgICAgICAgICAgICAgICAgb2sgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgLy8gCi0gICAgICAgICAgICAgICAgICAvLyBOb3cgc2NhbiB0aGUgdGFyZ2V0IGZvciBuZXN0ZWQgcmVwZWF0czoKLSAgICAgICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICAgICBwID0gcC0+bmV4dC5wOwotICAgICAgICAgICAgICAgICAgaW50IG5leHRfcmVwX2lkID0gMDsKLSAgICAgICAgICAgICAgICAgIHdoaWxlKHApCi0gICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICBzd2l0Y2gocC0+dHlwZSkKLSAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfcmVwOgotICAgICAgICAgICAgICAgICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9kb3RfcmVwOgotICAgICAgICAgICAgICAgICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9jaGFyX3JlcDoKLSAgICAgICAgICAgICAgICAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfc2hvcnRfc2V0X3JlcDoKLSAgICAgICAgICAgICAgICAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfbG9uZ19zZXRfcmVwOgotICAgICAgICAgICAgICAgICAgICAgICAgbmV4dF9yZXBfaWQgPSBzdGF0aWNfY2FzdDxyZV9yZXBlYXQqPihwKS0+c3RhdGVfaWQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfZW5kbWFyazoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmKHN0YXRpY19jYXN0PGNvbnN0IHJlX2JyYWNlKj4ocCktPmluZGV4ID09IGlkeCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRfcmVwX2lkID0gLTE7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IAotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICBpZihuZXh0X3JlcF9pZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgcCA9IHAtPm5leHQucDsKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIGlmKG5leHRfcmVwX2lkID4gMCkKLSAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHJlX3JlY3Vyc2UqPihzdGF0ZSktPnN0YXRlX2lkID0gbmV4dF9yZXBfaWQgLSAxOwotICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgIHAgPSBwLT5uZXh0LnA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZighb2spCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAvLyByZWN1cnNpb24gdG8gc3ViLWV4cHJlc3Npb24gdGhhdCBkb2Vzbid0IGV4aXN0OgotICAgICAgICAgICAgICAgaWYoMCA9PSB0aGlzLT5tX3BkYXRhLT5tX3N0YXR1cykgLy8gdXBkYXRlIHRoZSBlcnJvciBjb2RlIGlmIG5vdCBhbHJlYWR5IHNldAotICAgICAgICAgICAgICAgICAgdGhpcy0+bV9wZGF0YS0+bV9zdGF0dXMgPSBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjplcnJvcl9iYWRfcGF0dGVybjsKLSAgICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICAvLyBjbGVhciB0aGUgZXhwcmVzc2lvbiwgd2Ugc2hvdWxkIGJlIGVtcHR5OgotICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgIHRoaXMtPm1fcGRhdGEtPm1fZXhwcmVzc2lvbiA9IDA7Ci0gICAgICAgICAgICAgICB0aGlzLT5tX3BkYXRhLT5tX2V4cHJlc3Npb25fbGVuID0gMDsKLSAgICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICAvLyBhbmQgdGhyb3cgaWYgcmVxdWlyZWQ6Ci0gICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgaWYoMCA9PSAodGhpcy0+ZmxhZ3MoKSAmIHJlZ2V4X2NvbnN0YW50czo6bm9fZXhjZXB0KSkKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIG1lc3NhZ2UgPSAiRW5jb3VudGVyZWQgYSBmb3J3YXJkIHJlZmVyZW5jZSB0byBhIHJlY3Vyc2l2ZSBzdWItZXhwcmVzc2lvbiB0aGF0IGRvZXMgbm90IGV4aXN0LiI7Ci0gICAgICAgICAgICAgICAgICBuZG5ib29zdDo6cmVnZXhfZXJyb3IgZShtZXNzYWdlLCBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjplcnJvcl9iYWRfcGF0dGVybiwgMCk7Ci0gICAgICAgICAgICAgICAgICBlLnJhaXNlKCk7Ci0gICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIHN0YXRlID0gc3RhdGUtPm5leHQucDsKLSAgIH0KLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci12b2lkIGJhc2ljX3JlZ2V4X2NyZWF0b3I8Y2hhclQsIHRyYWl0cz46OmNyZWF0ZV9zdGFydG1hcHMocmVfc3ludGF4X2Jhc2UqIHN0YXRlKQotewotICAgLy8gbm9uLXJlY3Vyc2l2ZSBpbXBsZW1lbnRhdGlvbjoKLSAgIC8vIGNyZWF0ZSB0aGUgbGFzdCBtYXAgaW4gdGhlIG1hY2hpbmUgZmlyc3QsIHNvIHRoYXQgZWFybGllciBtYXBzCi0gICAvLyBjYW4gbWFrZSB1c2Ugb2YgdGhlIHJlc3VsdC4uLgotICAgLy8KLSAgIC8vIFRoaXMgd2FzIG9yaWdpbmFsbHkgYSByZWN1cnNpdmUgaW1wbGVtZW50YXRpb24sIGJ1dCB0aGF0IGNhdXNlZCBzdGFjawotICAgLy8gb3ZlcmZsb3dzIHdpdGggY29tcGxleCBleHByZXNzaW9ucyBvbiBzbWFsbCBzdGFja3MgKHRoaW5rIENPTSspLgotCi0gICAvLyBzdGFydCBieSBzYXZpbmcgdGhlIGNhc2Ugc2V0dGluZzoKLSAgIGJvb2wgbF9pY2FzZSA9IG1faWNhc2U7Ci0gICBzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8Ym9vbCwgcmVfc3ludGF4X2Jhc2UqPiA+IHY7Ci0KLSAgIHdoaWxlKHN0YXRlKQotICAgewotICAgICAgc3dpdGNoKHN0YXRlLT50eXBlKQotICAgICAgewotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF90b2dnbGVfY2FzZToKLSAgICAgICAgIC8vIHdlIG5lZWQgdG8gdHJhY2sgY2FzZSBjaGFuZ2VzIGhlcmU6Ci0gICAgICAgICBtX2ljYXNlID0gc3RhdGljX2Nhc3Q8cmVfY2FzZSo+KHN0YXRlKS0+aWNhc2U7Ci0gICAgICAgICBzdGF0ZSA9IHN0YXRlLT5uZXh0LnA7Ci0gICAgICAgICBjb250aW51ZTsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfYWx0OgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9yZXA6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2RvdF9yZXA6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2NoYXJfcmVwOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9zaG9ydF9zZXRfcmVwOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9sb25nX3NldF9yZXA6Ci0gICAgICAgICAvLyBqdXN0IHB1c2ggdGhlIHN0YXRlIG9udG8gb3VyIHN0YWNrIGZvciBub3c6Ci0gICAgICAgICB2LnB1c2hfYmFjayhzdGQ6OnBhaXI8Ym9vbCwgcmVfc3ludGF4X2Jhc2UqPihtX2ljYXNlLCBzdGF0ZSkpOwotICAgICAgICAgc3RhdGUgPSBzdGF0ZS0+bmV4dC5wOwotICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2JhY2tzdGVwOgotICAgICAgICAgLy8gd2UgbmVlZCB0byBjYWxjdWxhdGUgaG93IGJpZyB0aGUgYmFja3N0ZXAgaXM6Ci0gICAgICAgICBzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHN0YXRlKS0+aW5kZXgKLSAgICAgICAgICAgID0gdGhpcy0+Y2FsY3VsYXRlX2JhY2tzdGVwKHN0YXRlLT5uZXh0LnApOwotICAgICAgICAgaWYoc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPihzdGF0ZSktPmluZGV4IDwgMCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIE9vcHMgZXJyb3I6Ci0gICAgICAgICAgICBpZigwID09IHRoaXMtPm1fcGRhdGEtPm1fc3RhdHVzKSAvLyB1cGRhdGUgdGhlIGVycm9yIGNvZGUgaWYgbm90IGFscmVhZHkgc2V0Ci0gICAgICAgICAgICAgICB0aGlzLT5tX3BkYXRhLT5tX3N0YXR1cyA9IG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OmVycm9yX2JhZF9wYXR0ZXJuOwotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIGNsZWFyIHRoZSBleHByZXNzaW9uLCB3ZSBzaG91bGQgYmUgZW1wdHk6Ci0gICAgICAgICAgICAvLwotICAgICAgICAgICAgdGhpcy0+bV9wZGF0YS0+bV9leHByZXNzaW9uID0gMDsKLSAgICAgICAgICAgIHRoaXMtPm1fcGRhdGEtPm1fZXhwcmVzc2lvbl9sZW4gPSAwOwotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIGFuZCB0aHJvdyBpZiByZXF1aXJlZDoKLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICBpZigwID09ICh0aGlzLT5mbGFncygpICYgcmVnZXhfY29uc3RhbnRzOjpub19leGNlcHQpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgbWVzc2FnZSA9ICJJbnZhbGlkIGxvb2tiZWhpbmQgYXNzZXJ0aW9uIGVuY291bnRlcmVkIGluIHRoZSByZWd1bGFyIGV4cHJlc3Npb24uIjsKLSAgICAgICAgICAgICAgIG5kbmJvb3N0OjpyZWdleF9lcnJvciBlKG1lc3NhZ2UsIG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OmVycm9yX2JhZF9wYXR0ZXJuLCAwKTsKLSAgICAgICAgICAgICAgIGUucmFpc2UoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAgICAgICAgIE5ETkJPT1NUX0ZBTExUSFJPVUdIOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgIHN0YXRlID0gc3RhdGUtPm5leHQucDsKLSAgICAgIH0KLSAgIH0KLQotICAgLy8gbm93IHdvcmsgdGhyb3VnaCBvdXIgbGlzdCwgYnVpbGRpbmcgYWxsIHRoZSBtYXBzIGFzIHdlIGdvOgotICAgd2hpbGUodi5zaXplKCkpCi0gICB7Ci0gICAgICAvLyBJbml0aWFsaXplIG1fcmVjdXJzaW9uX2NoZWNrcyBpZiB3ZSBuZWVkIGl0OgotICAgICAgaWYobV9oYXNfcmVjdXJzaW9ucykKLSAgICAgICAgIG1fcmVjdXJzaW9uX2NoZWNrcy5hc3NpZ24oMSArIG1fcGRhdGEtPm1fbWFya19jb3VudCwgZmFsc2UpOwotCi0gICAgICBjb25zdCBzdGQ6OnBhaXI8Ym9vbCwgcmVfc3ludGF4X2Jhc2UqPiYgcCA9IHYuYmFjaygpOwotICAgICAgbV9pY2FzZSA9IHAuZmlyc3Q7Ci0gICAgICBzdGF0ZSA9IHAuc2Vjb25kOwotICAgICAgdi5wb3BfYmFjaygpOwotCi0gICAgICAvLyBCdWlsZCBtYXBzOgotICAgICAgbV9iYWRfcmVwZWF0cyA9IDA7Ci0gICAgICBjcmVhdGVfc3RhcnRtYXAoc3RhdGUtPm5leHQucCwgc3RhdGljX2Nhc3Q8cmVfYWx0Kj4oc3RhdGUpLT5fbWFwLCAmc3RhdGljX2Nhc3Q8cmVfYWx0Kj4oc3RhdGUpLT5jYW5fYmVfbnVsbCwgbWFza190YWtlKTsKLSAgICAgIG1fYmFkX3JlcGVhdHMgPSAwOwotCi0gICAgICBpZihtX2hhc19yZWN1cnNpb25zKQotICAgICAgICAgbV9yZWN1cnNpb25fY2hlY2tzLmFzc2lnbigxICsgbV9wZGF0YS0+bV9tYXJrX2NvdW50LCBmYWxzZSk7Ci0gICAgICBjcmVhdGVfc3RhcnRtYXAoc3RhdGljX2Nhc3Q8cmVfYWx0Kj4oc3RhdGUpLT5hbHQucCwgc3RhdGljX2Nhc3Q8cmVfYWx0Kj4oc3RhdGUpLT5fbWFwLCAmc3RhdGljX2Nhc3Q8cmVfYWx0Kj4oc3RhdGUpLT5jYW5fYmVfbnVsbCwgbWFza19za2lwKTsKLSAgICAgIC8vIGFkanVzdCB0aGUgdHlwZSBvZiB0aGUgc3RhdGUgdG8gYWxsb3cgZm9yIGZhc3RlciBtYXRjaGluZzoKLSAgICAgIHN0YXRlLT50eXBlID0gdGhpcy0+Z2V0X3JlcGVhdF90eXBlKHN0YXRlKTsKLSAgIH0KLSAgIC8vIHJlc3RvcmUgY2FzZSBzZW5zaXRpdml0eToKLSAgIG1faWNhc2UgPSBsX2ljYXNlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWludCBiYXNpY19yZWdleF9jcmVhdG9yPGNoYXJULCB0cmFpdHM+OjpjYWxjdWxhdGVfYmFja3N0ZXAocmVfc3ludGF4X2Jhc2UqIHN0YXRlKQotewotICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6OmNoYXJfY2xhc3NfdHlwZSBtX3R5cGU7Ci0gICBpbnQgcmVzdWx0ID0gMDsKLSAgIHdoaWxlKHN0YXRlKQotICAgewotICAgICAgc3dpdGNoKHN0YXRlLT50eXBlKQotICAgICAgewotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9zdGFydG1hcms6Ci0gICAgICAgICBpZigoc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPihzdGF0ZSktPmluZGV4ID09IC0xKQotICAgICAgICAgICAgfHwgKHN0YXRpY19jYXN0PHJlX2JyYWNlKj4oc3RhdGUpLT5pbmRleCA9PSAtMikpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0ZSA9IHN0YXRpY19jYXN0PHJlX2p1bXAqPihzdGF0ZS0+bmV4dC5wKS0+YWx0LnAtPm5leHQucDsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgfQotICAgICAgICAgZWxzZSBpZihzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHN0YXRlKS0+aW5kZXggPT0gLTMpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0ZSA9IHN0YXRlLT5uZXh0LnAtPm5leHQucDsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2VuZG1hcms6Ci0gICAgICAgICBpZigoc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPihzdGF0ZSktPmluZGV4ID09IC0xKQotICAgICAgICAgICAgfHwgKHN0YXRpY19jYXN0PHJlX2JyYWNlKj4oc3RhdGUpLT5pbmRleCA9PSAtMikpCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2xpdGVyYWw6Ci0gICAgICAgICByZXN1bHQgKz0gc3RhdGljX2Nhc3Q8cmVfbGl0ZXJhbCo+KHN0YXRlKS0+bGVuZ3RoOwotICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3dpbGQ6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3NldDoKLSAgICAgICAgIHJlc3VsdCArPSAxOwotICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2RvdF9yZXA6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2NoYXJfcmVwOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9zaG9ydF9zZXRfcmVwOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9iYWNrcmVmOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9yZXA6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2NvbWJpbmluZzoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfbG9uZ19zZXRfcmVwOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9iYWNrc3RlcDoKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHJlX3JlcGVhdCogcmVwID0gc3RhdGljX2Nhc3Q8cmVfcmVwZWF0ICo+KHN0YXRlKTsKLSAgICAgICAgICAgIC8vIGFkanVzdCB0aGUgdHlwZSBvZiB0aGUgc3RhdGUgdG8gYWxsb3cgZm9yIGZhc3RlciBtYXRjaGluZzoKLSAgICAgICAgICAgIHN0YXRlLT50eXBlID0gdGhpcy0+Z2V0X3JlcGVhdF90eXBlKHN0YXRlKTsKLSAgICAgICAgICAgIGlmKChzdGF0ZS0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9kb3RfcmVwKSAKLSAgICAgICAgICAgICAgIHx8IChzdGF0ZS0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9jaGFyX3JlcCkKLSAgICAgICAgICAgICAgIHx8IChzdGF0ZS0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9zaG9ydF9zZXRfcmVwKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGlmKHJlcC0+bWF4ICE9IHJlcC0+bWluKQotICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgICAgcmVzdWx0ICs9IHN0YXRpY19jYXN0PGludD4ocmVwLT5taW4pOwotICAgICAgICAgICAgICAgc3RhdGUgPSByZXAtPmFsdC5wOwotICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmKHN0YXRlLT50eXBlID09IHN5bnRheF9lbGVtZW50X2xvbmdfc2V0X3JlcCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVChyZXAtPm5leHQucC0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9sb25nX3NldCk7Ci0gICAgICAgICAgICAgICBpZihzdGF0aWNfY2FzdDxyZV9zZXRfbG9uZzxtX3R5cGU+Kj4ocmVwLT5uZXh0LnApLT5zaW5nbGV0b24gPT0gMCkKLSAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgICAgIGlmKHJlcC0+bWF4ICE9IHJlcC0+bWluKQotICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgICAgcmVzdWx0ICs9IHN0YXRpY19jYXN0PGludD4ocmVwLT5taW4pOwotICAgICAgICAgICAgICAgc3RhdGUgPSByZXAtPmFsdC5wOwotICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgICAgICByZXR1cm4gLTE7Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2xvbmdfc2V0OgotICAgICAgICAgaWYoc3RhdGljX2Nhc3Q8cmVfc2V0X2xvbmc8bV90eXBlPio+KHN0YXRlKS0+c2luZ2xldG9uID09IDApCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICByZXN1bHQgKz0gMTsKLSAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9qdW1wOgotICAgICAgICAgc3RhdGUgPSBzdGF0aWNfY2FzdDxyZV9qdW1wKj4oc3RhdGUpLT5hbHQucDsKLSAgICAgICAgIGNvbnRpbnVlOwotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9hbHQ6Ci0gICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgcjEgPSBjYWxjdWxhdGVfYmFja3N0ZXAoc3RhdGUtPm5leHQucCk7Ci0gICAgICAgICAgICBpbnQgcjIgPSBjYWxjdWxhdGVfYmFja3N0ZXAoc3RhdGljX2Nhc3Q8cmVfYWx0Kj4oc3RhdGUpLT5hbHQucCk7Ci0gICAgICAgICAgICBpZigocjEgPCAwKSB8fCAocjEgIT0gcjIpKQotICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIHIxOwotICAgICAgICAgfQotICAgICAgZGVmYXVsdDoKLSAgICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgc3RhdGUgPSBzdGF0ZS0+bmV4dC5wOwotICAgfQotICAgcmV0dXJuIC0xOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLXZvaWQgYmFzaWNfcmVnZXhfY3JlYXRvcjxjaGFyVCwgdHJhaXRzPjo6Y3JlYXRlX3N0YXJ0bWFwKHJlX3N5bnRheF9iYXNlKiBzdGF0ZSwgdW5zaWduZWQgY2hhciogbF9tYXAsIHVuc2lnbmVkIGludCogcG51bGwsIHVuc2lnbmVkIGNoYXIgbWFzaykKLXsKLSAgIGludCBub3RfbGFzdF9qdW1wID0gMTsKLSAgIHJlX3N5bnRheF9iYXNlKiByZWN1cnNpb25fc3RhcnQgPSAwOwotICAgaW50IHJlY3Vyc2lvbl9zdWIgPSAwOwotICAgcmVfc3ludGF4X2Jhc2UqIHJlY3Vyc2lvbl9yZXN0YXJ0ID0gMDsKLQotICAgLy8gdHJhY2sgY2FzZSBzZW5zaXRpdml0eToKLSAgIGJvb2wgbF9pY2FzZSA9IG1faWNhc2U7Ci0KLSAgIHdoaWxlKHN0YXRlKQotICAgewotICAgICAgc3dpdGNoKHN0YXRlLT50eXBlKQotICAgICAgewotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF90b2dnbGVfY2FzZToKLSAgICAgICAgIGxfaWNhc2UgPSBzdGF0aWNfY2FzdDxyZV9jYXNlKj4oc3RhdGUpLT5pY2FzZTsKLSAgICAgICAgIHN0YXRlID0gc3RhdGUtPm5leHQucDsKLSAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9saXRlcmFsOgotICAgICAgewotICAgICAgICAgLy8gZG9uJ3Qgc2V0IGFueXRoaW5nIGluICpwbnVsbCwgc2V0IGVhY2ggZWxlbWVudCBpbiBsX21hcAotICAgICAgICAgLy8gdGhhdCBjb3VsZCBtYXRjaCB0aGUgZmlyc3QgY2hhcmFjdGVyIGluIHRoZSBsaXRlcmFsOgotICAgICAgICAgaWYobF9tYXApCi0gICAgICAgICB7Ci0gICAgICAgICAgICBsX21hcFswXSB8PSBtYXNrX2luaXQ7Ci0gICAgICAgICAgICBjaGFyVCBmaXJzdF9jaGFyID0gKnN0YXRpY19jYXN0PGNoYXJUKj4oc3RhdGljX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHJlX2xpdGVyYWwqPihzdGF0ZSkgKyAxKSk7Ci0gICAgICAgICAgICBmb3IodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgKDF1IDw8IENIQVJfQklUKTsgKytpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgaWYobV90cmFpdHMudHJhbnNsYXRlKHN0YXRpY19jYXN0PGNoYXJUPihpKSwgbF9pY2FzZSkgPT0gZmlyc3RfY2hhcikKLSAgICAgICAgICAgICAgICAgIGxfbWFwW2ldIHw9IG1hc2s7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgICAgICByZXR1cm47Ci0gICAgICB9Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2VuZF9saW5lOgotICAgICAgewotICAgICAgICAgLy8gbmV4dCBjaGFyYWN0ZXIgbXVzdCBiZSBhIGxpbmUgc2VwYXJhdG9yIChpZiB0aGVyZSBpcyBvbmUpOgotICAgICAgICAgaWYobF9tYXApCi0gICAgICAgICB7Ci0gICAgICAgICAgICBsX21hcFswXSB8PSBtYXNrX2luaXQ7Ci0gICAgICAgICAgICBsX21hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oJ1xuJyldIHw9IG1hc2s7Ci0gICAgICAgICAgICBsX21hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oJ1xyJyldIHw9IG1hc2s7Ci0gICAgICAgICAgICBsX21hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oJ1xmJyldIHw9IG1hc2s7Ci0gICAgICAgICAgICBsX21hcFsweDg1XSB8PSBtYXNrOwotICAgICAgICAgfQotICAgICAgICAgLy8gbm93IGZpZ3VyZSBvdXQgaWYgd2UgY2FuIG1hdGNoIGEgTlVMTCBzdHJpbmcgYXQgdGhpcyBwb2ludDoKLSAgICAgICAgIGlmKHBudWxsKQotICAgICAgICAgICAgY3JlYXRlX3N0YXJ0bWFwKHN0YXRlLT5uZXh0LnAsIDAsIHBudWxsLCBtYXNrKTsKLSAgICAgICAgIHJldHVybjsKLSAgICAgIH0KLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfcmVjdXJzZToKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGlmKHN0YXRlLT50eXBlID09IHN5bnRheF9lbGVtZW50X3N0YXJ0bWFyaykKLSAgICAgICAgICAgICAgIHJlY3Vyc2lvbl9zdWIgPSBzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHN0YXRlKS0+aW5kZXg7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICByZWN1cnNpb25fc3ViID0gMDsKLSAgICAgICAgICAgIGlmKG1fcmVjdXJzaW9uX2NoZWNrc1tyZWN1cnNpb25fc3ViXSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIC8vIEluZmluaXRlIHJlY3Vyc2lvbiEhCi0gICAgICAgICAgICAgICBpZigwID09IHRoaXMtPm1fcGRhdGEtPm1fc3RhdHVzKSAvLyB1cGRhdGUgdGhlIGVycm9yIGNvZGUgaWYgbm90IGFscmVhZHkgc2V0Ci0gICAgICAgICAgICAgICAgICB0aGlzLT5tX3BkYXRhLT5tX3N0YXR1cyA9IG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OmVycm9yX2JhZF9wYXR0ZXJuOwotICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgIC8vIGNsZWFyIHRoZSBleHByZXNzaW9uLCB3ZSBzaG91bGQgYmUgZW1wdHk6Ci0gICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgdGhpcy0+bV9wZGF0YS0+bV9leHByZXNzaW9uID0gMDsKLSAgICAgICAgICAgICAgIHRoaXMtPm1fcGRhdGEtPm1fZXhwcmVzc2lvbl9sZW4gPSAwOwotICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgIC8vIGFuZCB0aHJvdyBpZiByZXF1aXJlZDoKLSAgICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICBpZigwID09ICh0aGlzLT5mbGFncygpICYgcmVnZXhfY29uc3RhbnRzOjpub19leGNlcHQpKQotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgbWVzc2FnZSA9ICJFbmNvdW50ZXJlZCBhbiBpbmZpbml0ZSByZWN1cnNpb24uIjsKLSAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpyZWdleF9lcnJvciBlKG1lc3NhZ2UsIG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OmVycm9yX2JhZF9wYXR0ZXJuLCAwKTsKLSAgICAgICAgICAgICAgICAgIGUucmFpc2UoKTsKLSAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYocmVjdXJzaW9uX3N0YXJ0ID09IDApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICByZWN1cnNpb25fc3RhcnQgPSBzdGF0ZTsKLSAgICAgICAgICAgICAgIHJlY3Vyc2lvbl9yZXN0YXJ0ID0gc3RhdGUtPm5leHQucDsKLSAgICAgICAgICAgICAgIHN0YXRlID0gc3RhdGljX2Nhc3Q8cmVfanVtcCo+KHN0YXRlKS0+YWx0LnA7Ci0gICAgICAgICAgICAgICBtX3JlY3Vyc2lvbl9jaGVja3NbcmVjdXJzaW9uX3N1Yl0gPSB0cnVlOwotICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBtX3JlY3Vyc2lvbl9jaGVja3NbcmVjdXJzaW9uX3N1Yl0gPSB0cnVlOwotICAgICAgICAgICAgLy8gY2FuJ3QgaGFuZGxlIG5lc3RlZCByZWN1cnNpb24gaGVyZS4uLgotICAgICAgICAgICAgTkROQk9PU1RfRkFMTFRIUk9VR0g7Ci0gICAgICAgICB9Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2JhY2tyZWY6Ci0gICAgICAgICAvLyBjYW4gYmUgbnVsbCwgYW5kIGFueSBjaGFyYWN0ZXIgY2FuIG1hdGNoOgotICAgICAgICAgaWYocG51bGwpCi0gICAgICAgICAgICAqcG51bGwgfD0gbWFzazsKLSAgICAgICAgIE5ETkJPT1NUX0ZBTExUSFJPVUdIOwotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF93aWxkOgotICAgICAgewotICAgICAgICAgLy8gY2FuJ3QgYmUgbnVsbCwgYW55IGNoYXJhY3RlciBjYW4gbWF0Y2g6Ci0gICAgICAgICBzZXRfYWxsX21hc2tzKGxfbWFwLCBtYXNrKTsKLSAgICAgICAgIHJldHVybjsKLSAgICAgIH0KLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfbWF0Y2g6Ci0gICAgICB7Ci0gICAgICAgICAvLyBtdXN0IGJlIG51bGwsIGFueSBjaGFyYWN0ZXIgY2FuIG1hdGNoOgotICAgICAgICAgc2V0X2FsbF9tYXNrcyhsX21hcCwgbWFzayk7Ci0gICAgICAgICBpZihwbnVsbCkKLSAgICAgICAgICAgICpwbnVsbCB8PSBtYXNrOwotICAgICAgICAgcmV0dXJuOwotICAgICAgfQotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF93b3JkX3N0YXJ0OgotICAgICAgewotICAgICAgICAgLy8gcmVjdXJzZSwgdGhlbiBBTkQgd2l0aCBhbGwgdGhlIHdvcmQgY2hhcmFjdGVyczoKLSAgICAgICAgIGNyZWF0ZV9zdGFydG1hcChzdGF0ZS0+bmV4dC5wLCBsX21hcCwgcG51bGwsIG1hc2spOwotICAgICAgICAgaWYobF9tYXApCi0gICAgICAgICB7Ci0gICAgICAgICAgICBsX21hcFswXSB8PSBtYXNrX2luaXQ7Ci0gICAgICAgICAgICBmb3IodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgKDF1IDw8IENIQVJfQklUKTsgKytpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgaWYoIW1fdHJhaXRzLmlzY3R5cGUoc3RhdGljX2Nhc3Q8Y2hhclQ+KGkpLCBtX3dvcmRfbWFzaykpCi0gICAgICAgICAgICAgICAgICBsX21hcFtpXSAmPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih+bWFzayk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgICAgICByZXR1cm47Ci0gICAgICB9Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3dvcmRfZW5kOgotICAgICAgewotICAgICAgICAgLy8gcmVjdXJzZSwgdGhlbiBBTkQgd2l0aCBhbGwgdGhlIHdvcmQgY2hhcmFjdGVyczoKLSAgICAgICAgIGNyZWF0ZV9zdGFydG1hcChzdGF0ZS0+bmV4dC5wLCBsX21hcCwgcG51bGwsIG1hc2spOwotICAgICAgICAgaWYobF9tYXApCi0gICAgICAgICB7Ci0gICAgICAgICAgICBsX21hcFswXSB8PSBtYXNrX2luaXQ7Ci0gICAgICAgICAgICBmb3IodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgKDF1IDw8IENIQVJfQklUKTsgKytpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgaWYobV90cmFpdHMuaXNjdHlwZShzdGF0aWNfY2FzdDxjaGFyVD4oaSksIG1fd29yZF9tYXNrKSkKLSAgICAgICAgICAgICAgICAgIGxfbWFwW2ldICY9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KH5tYXNrKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAgICAgICAgIHJldHVybjsKLSAgICAgIH0KLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfYnVmZmVyX2VuZDoKLSAgICAgIHsKLSAgICAgICAgIC8vIHdlICptdXN0IGJlIG51bGwqIDoKLSAgICAgICAgIGlmKHBudWxsKQotICAgICAgICAgICAgKnBudWxsIHw9IG1hc2s7Ci0gICAgICAgICByZXR1cm47Ci0gICAgICB9Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2xvbmdfc2V0OgotICAgICAgICAgaWYobF9tYXApCi0gICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0czo6Y2hhcl9jbGFzc190eXBlIG1fdHlwZTsKLSAgICAgICAgICAgIGlmKHN0YXRpY19jYXN0PHJlX3NldF9sb25nPG1fdHlwZT4qPihzdGF0ZSktPnNpbmdsZXRvbikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGxfbWFwWzBdIHw9IG1hc2tfaW5pdDsKLSAgICAgICAgICAgICAgIGZvcih1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCAoMXUgPDwgQ0hBUl9CSVQpOyArK2kpCi0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBjaGFyVCBjID0gc3RhdGljX2Nhc3Q8Y2hhclQ+KGkpOwotICAgICAgICAgICAgICAgICAgaWYoJmMgIT0gcmVfaXNfc2V0X21lbWJlcigmYywgJmMgKyAxLCBzdGF0aWNfY2FzdDxyZV9zZXRfbG9uZzxtX3R5cGU+Kj4oc3RhdGUpLCAqbV9wZGF0YSwgbF9pY2FzZSkpCi0gICAgICAgICAgICAgICAgICAgICBsX21hcFtpXSB8PSBtYXNrOwotICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgc2V0X2FsbF9tYXNrcyhsX21hcCwgbWFzayk7Ci0gICAgICAgICB9Ci0gICAgICAgICByZXR1cm47Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3NldDoKLSAgICAgICAgIGlmKGxfbWFwKQotICAgICAgICAgewotICAgICAgICAgICAgbF9tYXBbMF0gfD0gbWFza19pbml0OwotICAgICAgICAgICAgZm9yKHVuc2lnbmVkIGludCBpID0gMDsgaSA8ICgxdSA8PCBDSEFSX0JJVCk7ICsraSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGlmKHN0YXRpY19jYXN0PHJlX3NldCo+KHN0YXRlKS0+X21hcFsKLSAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KG1fdHJhaXRzLnRyYW5zbGF0ZShzdGF0aWNfY2FzdDxjaGFyVD4oaSksIGxfaWNhc2UpKV0pCi0gICAgICAgICAgICAgICAgICBsX21hcFtpXSB8PSBtYXNrOwotICAgICAgICAgICAgfQotICAgICAgICAgfQotICAgICAgICAgcmV0dXJuOwotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9qdW1wOgotICAgICAgICAgLy8gdGFrZSB0aGUganVtcDoKLSAgICAgICAgIHN0YXRlID0gc3RhdGljX2Nhc3Q8cmVfYWx0Kj4oc3RhdGUpLT5hbHQucDsKLSAgICAgICAgIG5vdF9sYXN0X2p1bXAgPSAtMTsKLSAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9hbHQ6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3JlcDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfZG90X3JlcDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfY2hhcl9yZXA6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3Nob3J0X3NldF9yZXA6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2xvbmdfc2V0X3JlcDoKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHJlX2FsdCogcmVwID0gc3RhdGljX2Nhc3Q8cmVfYWx0Kj4oc3RhdGUpOwotICAgICAgICAgICAgaWYocmVwLT5fbWFwWzBdICYgbWFza19pbml0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgaWYobF9tYXApCi0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAvLyBjb3B5IHByZXZpb3VzIHJlc3VsdHM6Ci0gICAgICAgICAgICAgICAgICBsX21hcFswXSB8PSBtYXNrX2luaXQ7Ci0gICAgICAgICAgICAgICAgICBmb3IodW5zaWduZWQgaW50IGkgPSAwOyBpIDw9IFVDSEFSX01BWDsgKytpKQotICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgaWYocmVwLT5fbWFwW2ldICYgbWFza19hbnkpCi0gICAgICAgICAgICAgICAgICAgICAgICBsX21hcFtpXSB8PSBtYXNrOwotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgaWYocG51bGwpCi0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBpZihyZXAtPmNhbl9iZV9udWxsICYgbWFza19hbnkpCi0gICAgICAgICAgICAgICAgICAgICAqcG51bGwgfD0gbWFzazsKLSAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIC8vIHdlIGhhdmVuJ3QgY3JlYXRlZCBhIHN0YXJ0bWFwIGZvciB0aGlzIGFsdGVybmF0aXZlIHlldAotICAgICAgICAgICAgICAgLy8gc28gdGFrZSB0aGUgdW5pb24gb2YgdGhlIHR3byBvcHRpb25zOgotICAgICAgICAgICAgICAgaWYoaXNfYmFkX3JlcGVhdChzdGF0ZSkpCi0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBzZXRfYWxsX21hc2tzKGxfbWFwLCBtYXNrKTsKLSAgICAgICAgICAgICAgICAgIGlmKHBudWxsKQotICAgICAgICAgICAgICAgICAgICAgKnBudWxsIHw9IG1hc2s7Ci0gICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICBzZXRfYmFkX3JlcGVhdChzdGF0ZSk7Ci0gICAgICAgICAgICAgICBjcmVhdGVfc3RhcnRtYXAoc3RhdGUtPm5leHQucCwgbF9tYXAsIHBudWxsLCBtYXNrKTsKLSAgICAgICAgICAgICAgIGlmKChzdGF0ZS0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9hbHQpCi0gICAgICAgICAgICAgICAgICB8fCAoc3RhdGljX2Nhc3Q8cmVfcmVwZWF0Kj4oc3RhdGUpLT5taW4gPT0gMCkKLSAgICAgICAgICAgICAgICAgIHx8IChub3RfbGFzdF9qdW1wID09IDApKQotICAgICAgICAgICAgICAgICAgY3JlYXRlX3N0YXJ0bWFwKHJlcC0+YWx0LnAsIGxfbWFwLCBwbnVsbCwgbWFzayk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgICAgICByZXR1cm47Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3NvZnRfYnVmZmVyX2VuZDoKLSAgICAgICAgIC8vIG1hdGNoIG5ld2xpbmUgb3IgbnVsbDoKLSAgICAgICAgIGlmKGxfbWFwKQotICAgICAgICAgewotICAgICAgICAgICAgbF9tYXBbMF0gfD0gbWFza19pbml0OwotICAgICAgICAgICAgbF9tYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCdcbicpXSB8PSBtYXNrOwotICAgICAgICAgICAgbF9tYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCdccicpXSB8PSBtYXNrOwotICAgICAgICAgfQotICAgICAgICAgaWYocG51bGwpCi0gICAgICAgICAgICAqcG51bGwgfD0gbWFzazsKLSAgICAgICAgIHJldHVybjsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfZW5kbWFyazoKLSAgICAgICAgIC8vIG5lZWQgdG8gaGFuZGxlIGluZGVwZW5kZW50IHN1YnMgYXMgYSBzcGVjaWFsIGNhc2U6Ci0gICAgICAgICBpZihzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHN0YXRlKS0+aW5kZXggPCAwKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gY2FuIGJlIG51bGwsIGFueSBjaGFyYWN0ZXIgY2FuIG1hdGNoOgotICAgICAgICAgICAgc2V0X2FsbF9tYXNrcyhsX21hcCwgbWFzayk7Ci0gICAgICAgICAgICBpZihwbnVsbCkKLSAgICAgICAgICAgICAgICpwbnVsbCB8PSBtYXNrOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgfQotICAgICAgICAgZWxzZSBpZihyZWN1cnNpb25fc3RhcnQgJiYgKHJlY3Vyc2lvbl9zdWIgIT0gMCkgJiYgKHJlY3Vyc2lvbl9zdWIgPT0gc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPihzdGF0ZSktPmluZGV4KSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIHJlY3Vyc2lvbiB0ZXJtaW5hdGlvbjoKLSAgICAgICAgICAgIHJlY3Vyc2lvbl9zdGFydCA9IDA7Ci0gICAgICAgICAgICBzdGF0ZSA9IHJlY3Vyc2lvbl9yZXN0YXJ0OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICB9Ci0KLSAgICAgICAgIC8vCi0gICAgICAgICAvLyBOb3JtYWxseSB3ZSBqdXN0IGdvIHRvIHRoZSBuZXh0IHN0YXRlLi4uIGJ1dCBpZiB0aGlzIHN1Yi1leHByZXNzaW9uIGlzCi0gICAgICAgICAvLyB0aGUgdGFyZ2V0IG9mIGEgcmVjdXJzaW9uLCB0aGVuIHdlIG1pZ2h0IGJlIGVuZGluZyBhIHJlY3Vyc2lvbiwgaW4gd2hpY2gKLSAgICAgICAgIC8vIGNhc2Ugd2Ugc2hvdWxkIGNoZWNrIHdoYXRldmVyIGZvbGxvd3MgdGhhdCByZWN1cnNpb24sIGFzIHdlbGwgYXMgd2hhdGV2ZXIKLSAgICAgICAgIC8vIGZvbGxvd3MgdGhpcyBzdGF0ZToKLSAgICAgICAgIC8vCi0gICAgICAgICBpZihtX3BkYXRhLT5tX2hhc19yZWN1cnNpb25zICYmIHN0YXRpY19jYXN0PHJlX2JyYWNlKj4oc3RhdGUpLT5pbmRleCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGJvb2wgb2sgPSBmYWxzZTsKLSAgICAgICAgICAgIHJlX3N5bnRheF9iYXNlKiBwID0gbV9wZGF0YS0+bV9maXJzdF9zdGF0ZTsKLSAgICAgICAgICAgIHdoaWxlKHApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBpZihwLT50eXBlID09IHN5bnRheF9lbGVtZW50X3JlY3Vyc2UpCi0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICByZV9icmFjZSogcDIgPSBzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHN0YXRpY19jYXN0PHJlX2p1bXAqPihwKS0+YWx0LnApOwotICAgICAgICAgICAgICAgICAgaWYoKHAyLT50eXBlID09IHN5bnRheF9lbGVtZW50X3N0YXJ0bWFyaykgJiYgKHAyLT5pbmRleCA9PSBzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHN0YXRlKS0+aW5kZXgpKQotICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgb2sgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICBwID0gcC0+bmV4dC5wOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYob2spCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBjcmVhdGVfc3RhcnRtYXAocC0+bmV4dC5wLCBsX21hcCwgcG51bGwsIG1hc2spOwotICAgICAgICAgICAgfQotICAgICAgICAgfQotICAgICAgICAgc3RhdGUgPSBzdGF0ZS0+bmV4dC5wOwotICAgICAgICAgYnJlYWs7Ci0KLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfc3RhcnRtYXJrOgotICAgICAgICAgLy8gbmVlZCB0byBoYW5kbGUgaW5kZXBlbmRlbnQgc3VicyBhcyBhIHNwZWNpYWwgY2FzZToKLSAgICAgICAgIGlmKHN0YXRpY19jYXN0PHJlX2JyYWNlKj4oc3RhdGUpLT5pbmRleCA9PSAtMykKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRlID0gc3RhdGUtPm5leHQucC0+bmV4dC5wOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICB9Ci0gICAgICAgICBORE5CT09TVF9GQUxMVEhST1VHSDsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICBzdGF0ZSA9IHN0YXRlLT5uZXh0LnA7Ci0gICAgICB9Ci0gICAgICArK25vdF9sYXN0X2p1bXA7Ci0gICB9Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotdW5zaWduZWQgYmFzaWNfcmVnZXhfY3JlYXRvcjxjaGFyVCwgdHJhaXRzPjo6Z2V0X3Jlc3RhcnRfdHlwZShyZV9zeW50YXhfYmFzZSogc3RhdGUpCi17Ci0gICAvLwotICAgLy8gZmluZCBvdXQgaG93IHRoZSBtYWNoaW5lIHN0YXJ0cywgc28gd2UgY2FuIG9wdGltaXNlIHRoZSBzZWFyY2g6Ci0gICAvLwotICAgd2hpbGUoc3RhdGUpCi0gICB7Ci0gICAgICBzd2l0Y2goc3RhdGUtPnR5cGUpCi0gICAgICB7Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3N0YXJ0bWFyazoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfZW5kbWFyazoKLSAgICAgICAgIHN0YXRlID0gc3RhdGUtPm5leHQucDsKLSAgICAgICAgIGNvbnRpbnVlOwotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9zdGFydF9saW5lOgotICAgICAgICAgcmV0dXJuIHJlZ2Jhc2U6OnJlc3RhcnRfbGluZTsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfd29yZF9zdGFydDoKLSAgICAgICAgIHJldHVybiByZWdiYXNlOjpyZXN0YXJ0X3dvcmQ7Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2J1ZmZlcl9zdGFydDoKLSAgICAgICAgIHJldHVybiByZWdiYXNlOjpyZXN0YXJ0X2J1ZjsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfcmVzdGFydF9jb250aW51ZToKLSAgICAgICAgIHJldHVybiByZWdiYXNlOjpyZXN0YXJ0X2NvbnRpbnVlOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgIHN0YXRlID0gMDsKLSAgICAgICAgIGNvbnRpbnVlOwotICAgICAgfQotICAgfQotICAgcmV0dXJuIHJlZ2Jhc2U6OnJlc3RhcnRfYW55OwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLXZvaWQgYmFzaWNfcmVnZXhfY3JlYXRvcjxjaGFyVCwgdHJhaXRzPjo6c2V0X2FsbF9tYXNrcyh1bnNpZ25lZCBjaGFyKiBiaXRzLCB1bnNpZ25lZCBjaGFyIG1hc2spCi17Ci0gICAvLwotICAgLy8gc2V0IG1hc2sgaW4gYWxsIG9mIGJpdHMgZWxlbWVudHMsIAotICAgLy8gaWYgYml0c1swXSBoYXMgbWFza19pbml0IG5vdCBzZXQgdGhlbiB3ZSBjYW4gCi0gICAvLyBvcHRpbWlzZSB0aGlzIHRvIGEgY2FsbCB0byBtZW1zZXQ6Ci0gICAvLwotICAgaWYoYml0cykKLSAgIHsKLSAgICAgIGlmKGJpdHNbMF0gPT0gMCkKLSAgICAgICAgIChzdGQ6Om1lbXNldCkoYml0cywgbWFzaywgMXUgPDwgQ0hBUl9CSVQpOwotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgZm9yKHVuc2lnbmVkIGkgPSAwOyBpIDwgKDF1IDw8IENIQVJfQklUKTsgKytpKQotICAgICAgICAgICAgYml0c1tpXSB8PSBtYXNrOwotICAgICAgfQotICAgICAgYml0c1swXSB8PSBtYXNrX2luaXQ7Ci0gICB9Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotYm9vbCBiYXNpY19yZWdleF9jcmVhdG9yPGNoYXJULCB0cmFpdHM+Ojppc19iYWRfcmVwZWF0KHJlX3N5bnRheF9iYXNlKiBwdCkKLXsKLSAgIHN3aXRjaChwdC0+dHlwZSkKLSAgIHsKLSAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfcmVwOgotICAgY2FzZSBzeW50YXhfZWxlbWVudF9kb3RfcmVwOgotICAgY2FzZSBzeW50YXhfZWxlbWVudF9jaGFyX3JlcDoKLSAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfc2hvcnRfc2V0X3JlcDoKLSAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfbG9uZ19zZXRfcmVwOgotICAgICAgewotICAgICAgICAgdW5zaWduZWQgc3RhdGVfaWQgPSBzdGF0aWNfY2FzdDxyZV9yZXBlYXQqPihwdCktPnN0YXRlX2lkOwotICAgICAgICAgaWYoc3RhdGVfaWQgPiBzaXplb2YobV9iYWRfcmVwZWF0cykgKiBDSEFSX0JJVCkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOyAgLy8gcnVuIG91dCBvZiBiaXRzLCBhc3N1bWUgd2UgY2FuJ3QgdHJhdmVyc2UgdGhpcyBvbmUuCi0gICAgICAgICBzdGF0aWMgY29uc3QgbmRuYm9vc3Q6OnVpbnRtYXhfdCBvbmUgPSAxdUw7Ci0gICAgICAgICByZXR1cm4gbV9iYWRfcmVwZWF0cyAmIChvbmUgPDwgc3RhdGVfaWQpOwotICAgICAgfQotICAgZGVmYXVsdDoKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci12b2lkIGJhc2ljX3JlZ2V4X2NyZWF0b3I8Y2hhclQsIHRyYWl0cz46OnNldF9iYWRfcmVwZWF0KHJlX3N5bnRheF9iYXNlKiBwdCkKLXsKLSAgIHN3aXRjaChwdC0+dHlwZSkKLSAgIHsKLSAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfcmVwOgotICAgY2FzZSBzeW50YXhfZWxlbWVudF9kb3RfcmVwOgotICAgY2FzZSBzeW50YXhfZWxlbWVudF9jaGFyX3JlcDoKLSAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfc2hvcnRfc2V0X3JlcDoKLSAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfbG9uZ19zZXRfcmVwOgotICAgICAgewotICAgICAgICAgdW5zaWduZWQgc3RhdGVfaWQgPSBzdGF0aWNfY2FzdDxyZV9yZXBlYXQqPihwdCktPnN0YXRlX2lkOwotICAgICAgICAgc3RhdGljIGNvbnN0IG5kbmJvb3N0Ojp1aW50bWF4X3Qgb25lID0gMXVMOwotICAgICAgICAgaWYoc3RhdGVfaWQgPD0gc2l6ZW9mKG1fYmFkX3JlcGVhdHMpICogQ0hBUl9CSVQpCi0gICAgICAgICAgICBtX2JhZF9yZXBlYXRzIHw9IChvbmUgPDwgc3RhdGVfaWQpOwotICAgICAgfQotICAgICAgYnJlYWs7Ci0gICBkZWZhdWx0OgotICAgICAgYnJlYWs7Ci0gICB9Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotc3ludGF4X2VsZW1lbnRfdHlwZSBiYXNpY19yZWdleF9jcmVhdG9yPGNoYXJULCB0cmFpdHM+OjpnZXRfcmVwZWF0X3R5cGUocmVfc3ludGF4X2Jhc2UqIHN0YXRlKQotewotICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6OmNoYXJfY2xhc3NfdHlwZSBtX3R5cGU7Ci0gICBpZihzdGF0ZS0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9yZXApCi0gICB7Ci0gICAgICAvLyBjaGVjayB0byBzZWUgaWYgd2UgYXJlIHJlcGVhdGluZyBhIHNpbmdsZSBzdGF0ZToKLSAgICAgIGlmKHN0YXRlLT5uZXh0LnAtPm5leHQucC0+bmV4dC5wID09IHN0YXRpY19jYXN0PHJlX2FsdCo+KHN0YXRlKS0+YWx0LnApCi0gICAgICB7Ci0gICAgICAgICBzd2l0Y2goc3RhdGUtPm5leHQucC0+dHlwZSkKLSAgICAgICAgIHsKLSAgICAgICAgIGNhc2UgcmVfZGV0YWlsOjpzeW50YXhfZWxlbWVudF93aWxkOgotICAgICAgICAgICAgcmV0dXJuIHJlX2RldGFpbDo6c3ludGF4X2VsZW1lbnRfZG90X3JlcDsKLSAgICAgICAgIGNhc2UgcmVfZGV0YWlsOjpzeW50YXhfZWxlbWVudF9saXRlcmFsOgotICAgICAgICAgICAgcmV0dXJuIHJlX2RldGFpbDo6c3ludGF4X2VsZW1lbnRfY2hhcl9yZXA7Ci0gICAgICAgICBjYXNlIHJlX2RldGFpbDo6c3ludGF4X2VsZW1lbnRfc2V0OgotICAgICAgICAgICAgcmV0dXJuIHJlX2RldGFpbDo6c3ludGF4X2VsZW1lbnRfc2hvcnRfc2V0X3JlcDsKLSAgICAgICAgIGNhc2UgcmVfZGV0YWlsOjpzeW50YXhfZWxlbWVudF9sb25nX3NldDoKLSAgICAgICAgICAgIGlmKHN0YXRpY19jYXN0PHJlX2RldGFpbDo6cmVfc2V0X2xvbmc8bV90eXBlPio+KHN0YXRlLT5uZXh0LnApLT5zaW5nbGV0b24pCi0gICAgICAgICAgICAgICByZXR1cm4gcmVfZGV0YWlsOjpzeW50YXhfZWxlbWVudF9sb25nX3NldF9yZXA7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgIH0KLSAgIHJldHVybiBzdGF0ZS0+dHlwZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci12b2lkIGJhc2ljX3JlZ2V4X2NyZWF0b3I8Y2hhclQsIHRyYWl0cz46OnByb2JlX2xlYWRpbmdfcmVwZWF0KHJlX3N5bnRheF9iYXNlKiBzdGF0ZSkKLXsKLSAgIC8vIGVudW1lcmF0ZSBvdXIgc3RhdGVzLCBhbmQgc2VlIGlmIHdlIGhhdmUgYSBsZWFkaW5nIHJlcGVhdCAKLSAgIC8vIGZvciB3aGljaCBmYWlsZWQgc2VhcmNoIHJlc3RhcnRzIGNhbiBiZSBvcHRpbWlzZWQ7Ci0gICBkbwotICAgewotICAgICAgc3dpdGNoKHN0YXRlLT50eXBlKQotICAgICAgewotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9zdGFydG1hcms6Ci0gICAgICAgICBpZihzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHN0YXRlKS0+aW5kZXggPj0gMCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRlID0gc3RhdGUtPm5leHQucDsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgfQotICAgICAgICAgaWYoKHN0YXRpY19jYXN0PHJlX2JyYWNlKj4oc3RhdGUpLT5pbmRleCA9PSAtMSkKLSAgICAgICAgICAgIHx8IChzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHN0YXRlKS0+aW5kZXggPT0gLTIpKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gc2tpcCBwYXN0IHRoZSB6ZXJvIHdpZHRoIGFzc2VydGlvbjoKLSAgICAgICAgICAgIHN0YXRlID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfanVtcCo+KHN0YXRlLT5uZXh0LnApLT5hbHQucC0+bmV4dC5wOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICB9Ci0gICAgICAgICBpZihzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHN0YXRlKS0+aW5kZXggPT0gLTMpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBIYXZlIHRvIHNraXAgdGhlIGxlYWRpbmcganVtcCBzdGF0ZToKLSAgICAgICAgICAgIHN0YXRlID0gc3RhdGUtPm5leHQucC0+bmV4dC5wOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICB9Ci0gICAgICAgICByZXR1cm47Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2VuZG1hcms6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3N0YXJ0X2xpbmU6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2VuZF9saW5lOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF93b3JkX2JvdW5kYXJ5OgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF93aXRoaW5fd29yZDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfd29yZF9zdGFydDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfd29yZF9lbmQ6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2J1ZmZlcl9zdGFydDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfYnVmZmVyX2VuZDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfcmVzdGFydF9jb250aW51ZToKLSAgICAgICAgIHN0YXRlID0gc3RhdGUtPm5leHQucDsKLSAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9kb3RfcmVwOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9jaGFyX3JlcDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfc2hvcnRfc2V0X3JlcDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfbG9uZ19zZXRfcmVwOgotICAgICAgICAgaWYodGhpcy0+bV9oYXNfYmFja3JlZnMgPT0gMCkKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PHJlX3JlcGVhdCo+KHN0YXRlKS0+bGVhZGluZyA9IHRydWU7Ci0gICAgICAgICBORE5CT09TVF9GQUxMVEhST1VHSDsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICByZXR1cm47Ci0gICAgICB9Ci0gICB9d2hpbGUoc3RhdGUpOwotfQotCi0KLX0gLy8gbmFtZXNwYWNlIHJlX2RldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvYmFzaWNfcmVnZXhfcGFyc2VyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvYmFzaWNfcmVnZXhfcGFyc2VyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmY3MmU0NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2Jhc2ljX3JlZ2V4X3BhcnNlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyODc0ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDA0Ci0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgYmFzaWNfcmVnZXhfcGFyc2VyLmNwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogRGVjbGFyZXMgdGVtcGxhdGUgY2xhc3MgYmFzaWNfcmVnZXhfcGFyc2VyLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X0JBU0lDX1JFR0VYX1BBUlNFUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfVjRfQkFTSUNfUkVHRVhfUEFSU0VSX0hQUAotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLW5hbWVzcGFjZSByZV9kZXRhaWx7Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQyNDQgNDgwMCkKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWNsYXNzIGJhc2ljX3JlZ2V4X3BhcnNlciA6IHB1YmxpYyBiYXNpY19yZWdleF9jcmVhdG9yPGNoYXJULCB0cmFpdHM+Ci17Ci1wdWJsaWM6Ci0gICBiYXNpY19yZWdleF9wYXJzZXIocmVnZXhfZGF0YTxjaGFyVCwgdHJhaXRzPiogZGF0YSk7Ci0gICB2b2lkIHBhcnNlKGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyLCB1bnNpZ25lZCBmbGFncyk7Ci0gICB2b2lkIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl90eXBlIGVycm9yX2NvZGUsIHN0ZDo6cHRyZGlmZl90IHBvc2l0aW9uKTsKLSAgIHZvaWQgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3R5cGUgZXJyb3JfY29kZSwgc3RkOjpwdHJkaWZmX3QgcG9zaXRpb24sIHN0ZDo6c3RyaW5nIG1lc3NhZ2UsIHN0ZDo6cHRyZGlmZl90IHN0YXJ0X3Bvcyk7Ci0gICB2b2lkIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl90eXBlIGVycm9yX2NvZGUsIHN0ZDo6cHRyZGlmZl90IHBvc2l0aW9uLCBjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSkKLSAgIHsKLSAgICAgIGZhaWwoZXJyb3JfY29kZSwgcG9zaXRpb24sIG1lc3NhZ2UsIHBvc2l0aW9uKTsKLSAgIH0KLQotICAgYm9vbCBwYXJzZV9hbGwoKTsKLSAgIGJvb2wgcGFyc2VfYmFzaWMoKTsKLSAgIGJvb2wgcGFyc2VfZXh0ZW5kZWQoKTsKLSAgIGJvb2wgcGFyc2VfbGl0ZXJhbCgpOwotICAgYm9vbCBwYXJzZV9vcGVuX3BhcmVuKCk7Ci0gICBib29sIHBhcnNlX2Jhc2ljX2VzY2FwZSgpOwotICAgYm9vbCBwYXJzZV9leHRlbmRlZF9lc2NhcGUoKTsKLSAgIGJvb2wgcGFyc2VfbWF0Y2hfYW55KCk7Ci0gICBib29sIHBhcnNlX3JlcGVhdChzdGQ6OnNpemVfdCBsb3cgPSAwLCBzdGQ6OnNpemVfdCBoaWdoID0gKHN0ZDo6bnVtZXJpY19saW1pdHM8c3RkOjpzaXplX3Q+OjptYXgpKCkpOwotICAgYm9vbCBwYXJzZV9yZXBlYXRfcmFuZ2UoYm9vbCBpc2Jhc2ljKTsKLSAgIGJvb2wgcGFyc2VfYWx0KCk7Ci0gICBib29sIHBhcnNlX3NldCgpOwotICAgYm9vbCBwYXJzZV9iYWNrcmVmKCk7Ci0gICB2b2lkIHBhcnNlX3NldF9saXRlcmFsKGJhc2ljX2NoYXJfc2V0PGNoYXJULCB0cmFpdHM+JiBjaGFyX3NldCk7Ci0gICBib29sIHBhcnNlX2lubmVyX3NldChiYXNpY19jaGFyX3NldDxjaGFyVCwgdHJhaXRzPiYgY2hhcl9zZXQpOwotICAgYm9vbCBwYXJzZV9RRSgpOwotICAgYm9vbCBwYXJzZV9wZXJsX2V4dGVuc2lvbigpOwotICAgYm9vbCBhZGRfZW1hY3NfY29kZShib29sIG5lZ2F0ZSk7Ci0gICBib29sIHVud2luZF9hbHRzKHN0ZDo6cHRyZGlmZl90IGxhc3RfcGFyZW5fc3RhcnQpOwotICAgZGlncmFwaDxjaGFyVD4gZ2V0X25leHRfc2V0X2xpdGVyYWwoYmFzaWNfY2hhcl9zZXQ8Y2hhclQsIHRyYWl0cz4mIGNoYXJfc2V0KTsKLSAgIGNoYXJUIHVuZXNjYXBlX2NoYXJhY3RlcigpOwotICAgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3B0aW9uX3R5cGUgcGFyc2Vfb3B0aW9ucygpOwotCi1wcml2YXRlOgotICAgdHlwZWRlZiBib29sIChiYXNpY19yZWdleF9wYXJzZXI6OipwYXJzZXJfcHJvY190eXBlKSgpOwotICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6OnN0cmluZ190eXBlIHN0cmluZ190eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6OmNoYXJfY2xhc3NfdHlwZSBjaGFyX2NsYXNzX3R5cGU7Ci0gICBwYXJzZXJfcHJvY190eXBlICAgICAgICAgICBtX3BhcnNlcl9wcm9jOyAgICAvLyB0aGUgbWFpbiBwYXJzZXIgdG8gdXNlCi0gICBjb25zdCBjaGFyVCogICAgICAgICAgICAgICBtX2Jhc2U7ICAgICAgICAgICAvLyB0aGUgc3RhcnQgb2YgdGhlIHN0cmluZyBiZWluZyBwYXJzZWQKLSAgIGNvbnN0IGNoYXJUKiAgICAgICAgICAgICAgIG1fZW5kOyAgICAgICAgICAgIC8vIHRoZSBlbmQgb2YgdGhlIHN0cmluZyBiZWluZyBwYXJzZWQKLSAgIGNvbnN0IGNoYXJUKiAgICAgICAgICAgICAgIG1fcG9zaXRpb247ICAgICAgIC8vIG91ciBjdXJyZW50IHBhcnNlciBwb3NpdGlvbgotICAgdW5zaWduZWQgICAgICAgICAgICAgICAgICAgbV9tYXJrX2NvdW50OyAgICAgLy8gaG93IG1hbnkgc3ViLWV4cHJlc3Npb25zIHdlIGhhdmUKLSAgIGludCAgICAgICAgICAgICAgICAgICAgICAgIG1fbWFya19yZXNldDsgICAgIC8vIHVzZWQgdG8gaW5kaWNhdGUgdGhhdCB3ZSdyZSBpbnNpZGUgYSAoP3wuLi4pIGJsb2NrLgotICAgdW5zaWduZWQgICAgICAgICAgICAgICAgICAgbV9tYXhfbWFyazsgICAgICAgLy8gbGFyZ2VzdCBtYXJrIGNvdW50IHNlZW4gaW5zaWRlIGEgKD98Li4uKSBibG9jay4KLSAgIHN0ZDo6cHRyZGlmZl90ICAgICAgICAgICAgIG1fcGFyZW5fc3RhcnQ7ICAgIC8vIHdoZXJlIHRoZSBsYXN0IHNlZW4gJyknIGJlZ2FuICh3aGVyZSByZXBlYXRzIGFyZSBpbnNlcnRlZCkuCi0gICBzdGQ6OnB0cmRpZmZfdCAgICAgICAgICAgICBtX2FsdF9pbnNlcnRfcG9pbnQ7IC8vIHdoZXJlIHRvIGluc2VydCB0aGUgbmV4dCBhbHRlcm5hdGl2ZQotICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgbV9oYXNfY2FzZV9jaGFuZ2U7IC8vIHRydWUgaWYgc29tZXdoZXJlIGluIHRoZSBjdXJyZW50IGJsb2NrIHRoZSBjYXNlIGhhcyBjaGFuZ2VkCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiBkZWZpbmVkKF9NX0lYODYpCi0gICAvLyBUaGlzIGlzIGFuIHVnbHkgd2FybmluZyBzdXBwcmVzc2lvbiB3b3JrYXJvdW5kIChmb3Igd2FybmluZ3MgKmluc2lkZSogc3RkOjp2ZWN0b3IKLSAgIC8vIHRoYXQgY2FuIG5vdCBvdGhlcndpc2UgYmUgc3VwcHJlc3NlZCkuLi4KLSAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKGxvbmcpID49IHNpemVvZih2b2lkKikpOwotICAgc3RkOjp2ZWN0b3I8bG9uZz4gICAgICAgICAgIG1fYWx0X2p1bXBzOyAgICAgIC8vIGxpc3Qgb2YgYWx0ZXJuYXRpdmUgaW4gdGhlIGN1cnJlbnQgc2NvcGUuCi0jZWxzZQotICAgc3RkOjp2ZWN0b3I8c3RkOjpwdHJkaWZmX3Q+IG1fYWx0X2p1bXBzOyAgICAgIC8vIGxpc3Qgb2YgYWx0ZXJuYXRpdmUgaW4gdGhlIGN1cnJlbnQgc2NvcGUuCi0jZW5kaWYKLQotICAgYmFzaWNfcmVnZXhfcGFyc2VyJiBvcGVyYXRvcj0oY29uc3QgYmFzaWNfcmVnZXhfcGFyc2VyJik7Ci0gICBiYXNpY19yZWdleF9wYXJzZXIoY29uc3QgYmFzaWNfcmVnZXhfcGFyc2VyJik7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWJhc2ljX3JlZ2V4X3BhcnNlcjxjaGFyVCwgdHJhaXRzPjo6YmFzaWNfcmVnZXhfcGFyc2VyKHJlZ2V4X2RhdGE8Y2hhclQsIHRyYWl0cz4qIGRhdGEpCi0gICA6IGJhc2ljX3JlZ2V4X2NyZWF0b3I8Y2hhclQsIHRyYWl0cz4oZGF0YSksIG1fbWFya19jb3VudCgwKSwgbV9tYXJrX3Jlc2V0KC0xKSwgbV9tYXhfbWFyaygwKSwgbV9wYXJlbl9zdGFydCgwKSwgbV9hbHRfaW5zZXJ0X3BvaW50KDApLCBtX2hhc19jYXNlX2NoYW5nZShmYWxzZSkKLXsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci12b2lkIGJhc2ljX3JlZ2V4X3BhcnNlcjxjaGFyVCwgdHJhaXRzPjo6cGFyc2UoY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIsIHVuc2lnbmVkIGxfZmxhZ3MpCi17Ci0gICAvLyBwYXNzIGxfZmxhZ3Mgb24gdG8gYmFzZSBjbGFzczoKLSAgIHRoaXMtPmluaXQobF9mbGFncyk7Ci0gICAvLyBzZXQgdXAgcG9pbnRlcnM6Ci0gICBtX3Bvc2l0aW9uID0gbV9iYXNlID0gcDE7Ci0gICBtX2VuZCA9IHAyOwotICAgLy8gZW1wdHkgc3RyaW5ncyBhcmUgZXJyb3JzOgotICAgaWYoKHAxID09IHAyKSAmJiAKLSAgICAgICgKLSAgICAgICAgICgobF9mbGFncyAmIHJlZ2Jhc2U6Om1haW5fb3B0aW9uX3R5cGUpICE9IHJlZ2Jhc2U6OnBlcmxfc3ludGF4X2dyb3VwKQotICAgICAgICAgfHwgKGxfZmxhZ3MgJiByZWdiYXNlOjpub19lbXB0eV9leHByZXNzaW9ucykKLSAgICAgICkKLSAgICAgKQotICAgewotICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2VtcHR5LCAwKTsKLSAgICAgIHJldHVybjsKLSAgIH0KLSAgIC8vIHNlbGVjdCB3aGljaCBwYXJzZXIgdG8gdXNlOgotICAgc3dpdGNoKGxfZmxhZ3MgJiByZWdiYXNlOjptYWluX29wdGlvbl90eXBlKQotICAgewotICAgY2FzZSByZWdiYXNlOjpwZXJsX3N5bnRheF9ncm91cDoKLSAgICAgIHsKLSAgICAgICAgIG1fcGFyc2VyX3Byb2MgPSAmYmFzaWNfcmVnZXhfcGFyc2VyPGNoYXJULCB0cmFpdHM+OjpwYXJzZV9leHRlbmRlZDsKLSAgICAgICAgIC8vCi0gICAgICAgICAvLyBBZGQgYSBsZWFkaW5nIHBhcmVuIHdpdGggaW5kZXggemVybyB0byBnaXZlIHJlY3Vyc2lvbnMgYSB0YXJnZXQ6Ci0gICAgICAgICAvLwotICAgICAgICAgcmVfYnJhY2UqIGJyID0gc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPih0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfc3RhcnRtYXJrLCBzaXplb2YocmVfYnJhY2UpKSk7Ci0gICAgICAgICBici0+aW5kZXggPSAwOwotICAgICAgICAgYnItPmljYXNlID0gdGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6OmljYXNlOwotICAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICBjYXNlIHJlZ2Jhc2U6OmJhc2ljX3N5bnRheF9ncm91cDoKLSAgICAgIG1fcGFyc2VyX3Byb2MgPSAmYmFzaWNfcmVnZXhfcGFyc2VyPGNoYXJULCB0cmFpdHM+OjpwYXJzZV9iYXNpYzsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdiYXNlOjpsaXRlcmFsOgotICAgICAgbV9wYXJzZXJfcHJvYyA9ICZiYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz46OnBhcnNlX2xpdGVyYWw7Ci0gICAgICBicmVhazsKLSAgIGRlZmF1bHQ6Ci0gICAgICAvLyBPb29wcywgc29tZW9uZSBoYXMgbWFuYWdlZCB0byBzZXQgbW9yZSB0aGFuIG9uZSBvZiB0aGUgbWFpbiBvcHRpb24gZmxhZ3MsIAotICAgICAgLy8gc28gdGhpcyBtdXN0IGJlIGFuIGVycm9yOgotICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3Vua25vd24sIDAsICJBbiBpbnZhbGlkIGNvbWJpbmF0aW9uIG9mIHJlZ3VsYXIgZXhwcmVzc2lvbiBzeW50YXggZmxhZ3Mgd2FzIHVzZWQuIik7Ci0gICAgICByZXR1cm47Ci0gICB9Ci0KLSAgIC8vIHBhcnNlIGFsbCBvdXIgY2hhcmFjdGVyczoKLSAgIGJvb2wgcmVzdWx0ID0gcGFyc2VfYWxsKCk7Ci0gICAvLwotICAgLy8gVW53aW5kIG91ciBhbHRlcm5hdGl2ZXM6Ci0gICAvLwotICAgdW53aW5kX2FsdHMoLTEpOwotICAgLy8gcmVzZXQgbF9mbGFncyBhcyBhIGdsb2JhbCBzY29wZSAoP2ltc3gpIG1heSBoYXZlIGFsdGVyZWQgdGhlbToKLSAgIHRoaXMtPmZsYWdzKGxfZmxhZ3MpOwotICAgLy8gaWYgd2UgaGF2ZW4ndCBnb2JibGVkIHVwIGFsbCB0aGUgY2hhcmFjdGVycyB0aGVuIHdlIG11c3QKLSAgIC8vIGhhdmUgaGFkIGFuIHVuZXhwZWN0ZWQgJyknIDoKLSAgIGlmKCFyZXN1bHQpCi0gICB7Ci0gICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGFyZW4sIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2UobV9iYXNlLCBtX3Bvc2l0aW9uKSwgIkZvdW5kIGEgY2xvc2luZyApIHdpdGggbm8gY29ycmVzcG9uZGluZyBvcGVuZW5pbmcgcGFyZW50aGVzaXMuIik7Ci0gICAgICByZXR1cm47Ci0gICB9Ci0gICAvLyBpZiBhbiBlcnJvciBoYXMgYmVlbiBzZXQgdGhlbiBnaXZlIHVwIG5vdzoKLSAgIGlmKHRoaXMtPm1fcGRhdGEtPm1fc3RhdHVzKQotICAgICAgcmV0dXJuOwotICAgLy8gZmlsbCBpbiBvdXIgc3ViLWV4cHJlc3Npb24gY291bnQ6Ci0gICB0aGlzLT5tX3BkYXRhLT5tX21hcmtfY291bnQgPSAxICsgbV9tYXJrX2NvdW50OwotICAgdGhpcy0+ZmluYWxpemUocDEsIHAyKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci12b2lkIGJhc2ljX3JlZ2V4X3BhcnNlcjxjaGFyVCwgdHJhaXRzPjo6ZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3R5cGUgZXJyb3JfY29kZSwgc3RkOjpwdHJkaWZmX3QgcG9zaXRpb24pCi17Ci0gICAvLyBnZXQgdGhlIGVycm9yIG1lc3NhZ2U6Ci0gICBzdGQ6OnN0cmluZyBtZXNzYWdlID0gdGhpcy0+bV9wZGF0YS0+bV9wdHJhaXRzLT5lcnJvcl9zdHJpbmcoZXJyb3JfY29kZSk7Ci0gICBmYWlsKGVycm9yX2NvZGUsIHBvc2l0aW9uLCBtZXNzYWdlKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci12b2lkIGJhc2ljX3JlZ2V4X3BhcnNlcjxjaGFyVCwgdHJhaXRzPjo6ZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3R5cGUgZXJyb3JfY29kZSwgc3RkOjpwdHJkaWZmX3QgcG9zaXRpb24sIHN0ZDo6c3RyaW5nIG1lc3NhZ2UsIHN0ZDo6cHRyZGlmZl90IHN0YXJ0X3BvcykKLXsKLSAgIGlmKDAgPT0gdGhpcy0+bV9wZGF0YS0+bV9zdGF0dXMpIC8vIHVwZGF0ZSB0aGUgZXJyb3IgY29kZSBpZiBub3QgYWxyZWFkeSBzZXQKLSAgICAgIHRoaXMtPm1fcGRhdGEtPm1fc3RhdHVzID0gZXJyb3JfY29kZTsKLSAgIG1fcG9zaXRpb24gPSBtX2VuZDsgLy8gZG9uJ3QgYm90aGVyIHBhcnNpbmcgYW55dGhpbmcgZWxzZQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFRF9JVEVSQVRPUl9DT05TVFJVQ1RPUlMKLSAgIC8vCi0gICAvLyBBdWdtZW50IGVycm9yIG1lc3NhZ2Ugd2l0aCB0aGUgcmVndWxhciBleHByZXNzaW9uIHRleHQ6Ci0gICAvLwotICAgaWYoc3RhcnRfcG9zID09IHBvc2l0aW9uKQotICAgICAgc3RhcnRfcG9zID0gKHN0ZDo6bWF4KShzdGF0aWNfY2FzdDxzdGQ6OnB0cmRpZmZfdD4oMCksIHBvc2l0aW9uIC0gc3RhdGljX2Nhc3Q8c3RkOjpwdHJkaWZmX3Q+KDEwKSk7Ci0gICBzdGQ6OnB0cmRpZmZfdCBlbmRfcG9zID0gKHN0ZDo6bWluKShwb3NpdGlvbiArIHN0YXRpY19jYXN0PHN0ZDo6cHRyZGlmZl90PigxMCksIHN0YXRpY19jYXN0PHN0ZDo6cHRyZGlmZl90PihtX2VuZCAtIG1fYmFzZSkpOwotICAgaWYoZXJyb3JfY29kZSAhPSByZWdleF9jb25zdGFudHM6OmVycm9yX2VtcHR5KQotICAgewotICAgICAgaWYoKHN0YXJ0X3BvcyAhPSAwKSB8fCAoZW5kX3BvcyAhPSAobV9lbmQgLSBtX2Jhc2UpKSkKLSAgICAgICAgIG1lc3NhZ2UgKz0gIiAgVGhlIGVycm9yIG9jY3VycmVkIHdoaWxlIHBhcnNpbmcgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBmcmFnbWVudDogJyI7Ci0gICAgICBlbHNlCi0gICAgICAgICBtZXNzYWdlICs9ICIgIFRoZSBlcnJvciBvY2N1cnJlZCB3aGlsZSBwYXJzaW5nIHRoZSByZWd1bGFyIGV4cHJlc3Npb246ICciOwotICAgICAgaWYoc3RhcnRfcG9zICE9IGVuZF9wb3MpCi0gICAgICB7Ci0gICAgICAgICBtZXNzYWdlICs9IHN0ZDo6c3RyaW5nKG1fYmFzZSArIHN0YXJ0X3BvcywgbV9iYXNlICsgcG9zaXRpb24pOwotICAgICAgICAgbWVzc2FnZSArPSAiPj4+SEVSRT4+PiI7Ci0gICAgICAgICBtZXNzYWdlICs9IHN0ZDo6c3RyaW5nKG1fYmFzZSArIHBvc2l0aW9uLCBtX2Jhc2UgKyBlbmRfcG9zKTsKLSAgICAgIH0KLSAgICAgIG1lc3NhZ2UgKz0gIicuIjsKLSAgIH0KLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLSAgIGlmKDAgPT0gKHRoaXMtPmZsYWdzKCkgJiByZWdleF9jb25zdGFudHM6Om5vX2V4Y2VwdCkpCi0gICB7Ci0gICAgICBuZG5ib29zdDo6cmVnZXhfZXJyb3IgZShtZXNzYWdlLCBlcnJvcl9jb2RlLCBwb3NpdGlvbik7Ci0gICAgICBlLnJhaXNlKCk7Ci0gICB9Ci0jZWxzZQotICAgKHZvaWQpcG9zaXRpb247IC8vIHN1cHByZXNzIHdhcm5pbmdzLgotI2VuZGlmCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotYm9vbCBiYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz46OnBhcnNlX2FsbCgpCi17Ci0gICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICB3aGlsZShyZXN1bHQgJiYgKG1fcG9zaXRpb24gIT0gbV9lbmQpKQotICAgewotICAgICAgcmVzdWx0ID0gKHRoaXMtPiptX3BhcnNlcl9wcm9jKSgpOwotICAgfQotICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDcwMikKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1ib29sIGJhc2ljX3JlZ2V4X3BhcnNlcjxjaGFyVCwgdHJhaXRzPjo6cGFyc2VfYmFzaWMoKQotewotICAgc3dpdGNoKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSkKLSAgIHsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZXNjYXBlOgotICAgICAgcmV0dXJuIHBhcnNlX2Jhc2ljX2VzY2FwZSgpOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9kb3Q6Ci0gICAgICByZXR1cm4gcGFyc2VfbWF0Y2hfYW55KCk7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2NhcmV0OgotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgdGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X3N0YXJ0X2xpbmUpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2RvbGxhcjoKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9lbmRfbGluZSk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfc3RhcjoKLSAgICAgIGlmKCEodGhpcy0+bV9sYXN0X3N0YXRlKSB8fCAodGhpcy0+bV9sYXN0X3N0YXRlLT50eXBlID09IHN5bnRheF9lbGVtZW50X3N0YXJ0X2xpbmUpKQotICAgICAgICAgcmV0dXJuIHBhcnNlX2xpdGVyYWwoKTsKLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIHJldHVybiBwYXJzZV9yZXBlYXQoKTsKLSAgICAgIH0KLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfcGx1czoKLSAgICAgIGlmKCEodGhpcy0+bV9sYXN0X3N0YXRlKSB8fCAodGhpcy0+bV9sYXN0X3N0YXRlLT50eXBlID09IHN5bnRheF9lbGVtZW50X3N0YXJ0X2xpbmUpIHx8ICEodGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6OmVtYWNzX2V4KSkKLSAgICAgICAgIHJldHVybiBwYXJzZV9saXRlcmFsKCk7Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICByZXR1cm4gcGFyc2VfcmVwZWF0KDEpOwotICAgICAgfQotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9xdWVzdGlvbjoKLSAgICAgIGlmKCEodGhpcy0+bV9sYXN0X3N0YXRlKSB8fCAodGhpcy0+bV9sYXN0X3N0YXRlLT50eXBlID09IHN5bnRheF9lbGVtZW50X3N0YXJ0X2xpbmUpIHx8ICEodGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6OmVtYWNzX2V4KSkKLSAgICAgICAgIHJldHVybiBwYXJzZV9saXRlcmFsKCk7Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICByZXR1cm4gcGFyc2VfcmVwZWF0KDAsIDEpOwotICAgICAgfQotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX3NldDoKLSAgICAgIHJldHVybiBwYXJzZV9zZXQoKTsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfbmV3bGluZToKLSAgICAgIGlmKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjpuZXdsaW5lX2FsdCkKLSAgICAgICAgIHJldHVybiBwYXJzZV9hbHQoKTsKLSAgICAgIGVsc2UKLSAgICAgICAgIHJldHVybiBwYXJzZV9saXRlcmFsKCk7Ci0gICBkZWZhdWx0OgotICAgICAgcmV0dXJuIHBhcnNlX2xpdGVyYWwoKTsKLSAgIH0KLSAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWJvb2wgYmFzaWNfcmVnZXhfcGFyc2VyPGNoYXJULCB0cmFpdHM+OjpwYXJzZV9leHRlbmRlZCgpCi17Ci0gICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICBzd2l0Y2godGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pKQotICAgewotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcms6Ci0gICAgICByZXR1cm4gcGFyc2Vfb3Blbl9wYXJlbigpOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9tYXJrOgotICAgICAgcmV0dXJuIGZhbHNlOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9lc2NhcGU6Ci0gICAgICByZXR1cm4gcGFyc2VfZXh0ZW5kZWRfZXNjYXBlKCk7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2RvdDoKLSAgICAgIHJldHVybiBwYXJzZV9tYXRjaF9hbnkoKTsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2FyZXQ6Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICB0aGlzLT5hcHBlbmRfc3RhdGUoCi0gICAgICAgICAodGhpcy0+ZmxhZ3MoKSAmIHJlZ2V4X2NvbnN0YW50czo6bm9fbW9kX20gPyBzeW50YXhfZWxlbWVudF9idWZmZXJfc3RhcnQgOiBzeW50YXhfZWxlbWVudF9zdGFydF9saW5lKSk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZG9sbGFyOgotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgdGhpcy0+YXBwZW5kX3N0YXRlKAotICAgICAgICAgKHRoaXMtPmZsYWdzKCkgJiByZWdleF9jb25zdGFudHM6Om5vX21vZF9tID8gc3ludGF4X2VsZW1lbnRfYnVmZmVyX2VuZCA6IHN5bnRheF9lbGVtZW50X2VuZF9saW5lKSk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfc3RhcjoKLSAgICAgIGlmKG1fcG9zaXRpb24gPT0gdGhpcy0+bV9iYXNlKQotICAgICAgewotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JhZHJlcGVhdCwgMCwgIlRoZSByZXBlYXQgb3BlcmF0b3IgXCIqXCIgY2Fubm90IHN0YXJ0IGEgcmVndWxhciBleHByZXNzaW9uLiIpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgcmV0dXJuIHBhcnNlX3JlcGVhdCgpOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9xdWVzdGlvbjoKLSAgICAgIGlmKG1fcG9zaXRpb24gPT0gdGhpcy0+bV9iYXNlKQotICAgICAgewotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JhZHJlcGVhdCwgMCwgIlRoZSByZXBlYXQgb3BlcmF0b3IgXCI/XCIgY2Fubm90IHN0YXJ0IGEgcmVndWxhciBleHByZXNzaW9uLiIpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgcmV0dXJuIHBhcnNlX3JlcGVhdCgwLDEpOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9wbHVzOgotICAgICAgaWYobV9wb3NpdGlvbiA9PSB0aGlzLT5tX2Jhc2UpCi0gICAgICB7Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYmFkcmVwZWF0LCAwLCAiVGhlIHJlcGVhdCBvcGVyYXRvciBcIitcIiBjYW5ub3Qgc3RhcnQgYSByZWd1bGFyIGV4cHJlc3Npb24uIik7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICByZXR1cm4gcGFyc2VfcmVwZWF0KDEpOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX2JyYWNlOgotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgcmV0dXJuIHBhcnNlX3JlcGVhdF9yYW5nZShmYWxzZSk7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Nsb3NlX2JyYWNlOgotICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JyYWNlLCB0aGlzLT5tX3Bvc2l0aW9uIC0gdGhpcy0+bV9iYXNlLCAiRm91bmQgYSBjbG9zaW5nIHJlcGV0aXRpb24gb3BlcmF0b3IgfSB3aXRoIG5vIGNvcnJlc3BvbmRpbmcgey4iKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3I6Ci0gICAgICByZXR1cm4gcGFyc2VfYWx0KCk7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fc2V0OgotICAgICAgcmV0dXJuIHBhcnNlX3NldCgpOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9uZXdsaW5lOgotICAgICAgaWYodGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6Om5ld2xpbmVfYWx0KQotICAgICAgICAgcmV0dXJuIHBhcnNlX2FsdCgpOwotICAgICAgZWxzZQotICAgICAgICAgcmV0dXJuIHBhcnNlX2xpdGVyYWwoKTsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfaGFzaDoKLSAgICAgIC8vCi0gICAgICAvLyBJZiB3ZSBoYXZlIGEgbW9kX3ggZmxhZyBzZXQsIHRoZW4gc2tpcCB1bnRpbAotICAgICAgLy8gd2UgZ2V0IHRvIGEgbmV3bGluZSBjaGFyYWN0ZXI6Ci0gICAgICAvLwotICAgICAgaWYoKHRoaXMtPmZsYWdzKCkgCi0gICAgICAgICAmIChyZWdiYXNlOjpub19wZXJsX2V4fHJlZ2Jhc2U6Om1vZF94KSkKLSAgICAgICAgID09IHJlZ2Jhc2U6Om1vZF94KQotICAgICAgewotICAgICAgICAgd2hpbGUoKG1fcG9zaXRpb24gIT0gbV9lbmQpICYmICFpc19zZXBhcmF0b3IoKm1fcG9zaXRpb24rKykpe30KLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgTkROQk9PU1RfRkFMTFRIUk9VR0g7Ci0gICBkZWZhdWx0OgotICAgICAgcmVzdWx0ID0gcGFyc2VfbGl0ZXJhbCgpOwotICAgICAgYnJlYWs7Ci0gICB9Ci0gICByZXR1cm4gcmVzdWx0OwotfQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1ib29sIGJhc2ljX3JlZ2V4X3BhcnNlcjxjaGFyVCwgdHJhaXRzPjo6cGFyc2VfbGl0ZXJhbCgpCi17Ci0gICAvLyBhcHBlbmQgdGhpcyBhcyBhIGxpdGVyYWwgcHJvdmlkZWQgaXQncyBub3QgYSBzcGFjZSBjaGFyYWN0ZXIKLSAgIC8vIG9yIHRoZSBwZXJsIG9wdGlvbiByZWdiYXNlOjptb2RfeCBpcyBub3Qgc2V0OgotICAgaWYoCi0gICAgICAoKHRoaXMtPmZsYWdzKCkgCi0gICAgICAgICAmIChyZWdiYXNlOjptYWluX29wdGlvbl90eXBlfHJlZ2Jhc2U6Om1vZF94fHJlZ2Jhc2U6Om5vX3BlcmxfZXgpKSAKLSAgICAgICAgICAgICE9IHJlZ2Jhc2U6Om1vZF94KQotICAgICAgfHwgIXRoaXMtPm1fdHJhaXRzLmlzY3R5cGUoKm1fcG9zaXRpb24sIHRoaXMtPm1fbWFza19zcGFjZSkpCi0gICAgICAgICB0aGlzLT5hcHBlbmRfbGl0ZXJhbCgqbV9wb3NpdGlvbik7Ci0gICArK21fcG9zaXRpb247Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1ib29sIGJhc2ljX3JlZ2V4X3BhcnNlcjxjaGFyVCwgdHJhaXRzPjo6cGFyc2Vfb3Blbl9wYXJlbigpCi17Ci0gICAvLwotICAgLy8gc2tpcCB0aGUgJygnIGFuZCBlcnJvciBjaGVjazoKLSAgIC8vCi0gICBpZigrK21fcG9zaXRpb24gPT0gbV9lbmQpCi0gICB7Ci0gICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGFyZW4sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotICAgLy8KLSAgIC8vIGJlZ2luIGJ5IGNoZWNraW5nIGZvciBhIHBlcmwtc3R5bGUgKD8uLi4pIGV4dGVuc2lvbjoKLSAgIC8vCi0gICBpZigKLSAgICAgICAgICgodGhpcy0+ZmxhZ3MoKSAmIChyZWdiYXNlOjptYWluX29wdGlvbl90eXBlIHwgcmVnYmFzZTo6bm9fcGVybF9leCkpID09IDApCi0gICAgICAgICB8fCAoKHRoaXMtPmZsYWdzKCkgJiAocmVnYmFzZTo6bWFpbl9vcHRpb25fdHlwZSB8IHJlZ2Jhc2U6OmVtYWNzX2V4KSkgPT0gKHJlZ2Jhc2U6OmJhc2ljX3N5bnRheF9ncm91cHxyZWdiYXNlOjplbWFjc19leCkpCi0gICAgICkKLSAgIHsKLSAgICAgIGlmKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSA9PSByZWdleF9jb25zdGFudHM6OnN5bnRheF9xdWVzdGlvbikKLSAgICAgICAgIHJldHVybiBwYXJzZV9wZXJsX2V4dGVuc2lvbigpOwotICAgfQotICAgLy8KLSAgIC8vIHVwZGF0ZSBvdXIgbWFyayBjb3VudCwgYW5kIGFwcGVuZCB0aGUgcmVxdWlyZWQgc3RhdGU6Ci0gICAvLwotICAgdW5zaWduZWQgbWFya2lkID0gMDsKLSAgIGlmKDAgPT0gKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjpub3N1YnMpKQotICAgewotICAgICAgbWFya2lkID0gKyttX21hcmtfY291bnQ7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9ESVNUQU5DRQotICAgICAgaWYodGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6OnNhdmVfc3ViZXhwcmVzc2lvbl9sb2NhdGlvbikKLSAgICAgICAgIHRoaXMtPm1fcGRhdGEtPm1fc3Vicy5wdXNoX2JhY2soc3RkOjpwYWlyPHN0ZDo6c2l6ZV90LCBzdGQ6OnNpemVfdD4oc3RkOjpkaXN0YW5jZShtX2Jhc2UsIG1fcG9zaXRpb24pIC0gMSwgMCkpOwotI2Vsc2UKLSAgICAgIGlmKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjpzYXZlX3N1YmV4cHJlc3Npb25fbG9jYXRpb24pCi0gICAgICAgICB0aGlzLT5tX3BkYXRhLT5tX3N1YnMucHVzaF9iYWNrKHN0ZDo6cGFpcjxzdGQ6OnNpemVfdCwgc3RkOjpzaXplX3Q+KChtX3Bvc2l0aW9uIC0gbV9iYXNlKSAtIDEsIDApKTsKLSNlbmRpZgotICAgfQotICAgcmVfYnJhY2UqIHBiID0gc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPih0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfc3RhcnRtYXJrLCBzaXplb2YocmVfYnJhY2UpKSk7Ci0gICBwYi0+aW5kZXggPSBtYXJraWQ7Ci0gICBwYi0+aWNhc2UgPSB0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6aWNhc2U7Ci0gICBzdGQ6OnB0cmRpZmZfdCBsYXN0X3BhcmVuX3N0YXJ0ID0gdGhpcy0+Z2V0b2Zmc2V0KHBiKTsKLSAgIC8vIGJhY2sgdXAgaW5zZXJ0aW9uIHBvaW50IGZvciBhbHRlcm5hdGlvbnMsIGFuZCBzZXQgbmV3IHBvaW50OgotICAgc3RkOjpwdHJkaWZmX3QgbGFzdF9hbHRfcG9pbnQgPSBtX2FsdF9pbnNlcnRfcG9pbnQ7Ci0gICB0aGlzLT5tX3BkYXRhLT5tX2RhdGEuYWxpZ24oKTsKLSAgIG1fYWx0X2luc2VydF9wb2ludCA9IHRoaXMtPm1fcGRhdGEtPm1fZGF0YS5zaXplKCk7Ci0gICAvLwotICAgLy8gYmFjayB1cCB0aGUgY3VycmVudCBmbGFncyBpbiBjYXNlIHdlIGhhdmUgYSBuZXN0ZWQgKD9pbXN4KSBncm91cDoKLSAgIC8vCi0gICByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcHRpb25fdHlwZSBvcHRzID0gdGhpcy0+ZmxhZ3MoKTsKLSAgIGJvb2wgb2xkX2Nhc2VfY2hhbmdlID0gbV9oYXNfY2FzZV9jaGFuZ2U7Ci0gICBtX2hhc19jYXNlX2NoYW5nZSA9IGZhbHNlOyAvLyBubyBjaGFuZ2VzIHRvIHRoaXMgc2NvcGUgYXMgeWV0Li4uCi0gICAvLwotICAgLy8gQmFjayB1cCBicmFuY2ggcmVzZXQgZGF0YSBpbiBjYXNlIHdlIGhhdmUgYSBuZXN0ZWQgKD98Li4uKQotICAgLy8KLSAgIGludCBtYXJrX3Jlc2V0ID0gbV9tYXJrX3Jlc2V0OwotICAgbV9tYXJrX3Jlc2V0ID0gLTE7Ci0gICAvLwotICAgLy8gbm93IHJlY3Vyc2l2ZWx5IGFkZCBtb3JlIHN0YXRlcywgdGhpcyB3aWxsIHRlcm1pbmF0ZSB3aGVuIHdlIGdldCB0byBhCi0gICAvLyBtYXRjaGluZyAnKScgOgotICAgLy8KLSAgIHBhcnNlX2FsbCgpOwotICAgLy8KLSAgIC8vIFVud2luZCBwdXNoZWQgYWx0ZXJuYXRpdmVzOgotICAgLy8KLSAgIGlmKDAgPT0gdW53aW5kX2FsdHMobGFzdF9wYXJlbl9zdGFydCkpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAvLwotICAgLy8gcmVzdG9yZSBmbGFnczoKLSAgIC8vCi0gICBpZihtX2hhc19jYXNlX2NoYW5nZSkKLSAgIHsKLSAgICAgIC8vIHRoZSBjYXNlIGhhcyBjaGFuZ2VkIGluIG9uZSBvciBtb3JlIG9mIHRoZSBhbHRlcm5hdGl2ZXMKLSAgICAgIC8vIHdpdGhpbiB0aGUgc2NvcGVkICguLi4pIGJsb2NrOiB3ZSBoYXZlIHRvIGFkZCBhIHN0YXRlCi0gICAgICAvLyB0byByZXNldCB0aGUgY2FzZSBzZW5zaXRpdml0eToKLSAgICAgIHN0YXRpY19jYXN0PHJlX2Nhc2UqPigKLSAgICAgICAgIHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF90b2dnbGVfY2FzZSwgc2l6ZW9mKHJlX2Nhc2UpKQotICAgICAgICAgKS0+aWNhc2UgPSBvcHRzICYgcmVnYmFzZTo6aWNhc2U7Ci0gICB9Ci0gICB0aGlzLT5mbGFncyhvcHRzKTsKLSAgIG1faGFzX2Nhc2VfY2hhbmdlID0gb2xkX2Nhc2VfY2hhbmdlOwotICAgLy8KLSAgIC8vIHJlc3RvcmUgYnJhbmNoIHJlc2V0OgotICAgLy8KLSAgIG1fbWFya19yZXNldCA9IG1hcmtfcmVzZXQ7Ci0gICAvLwotICAgLy8gd2UgZWl0aGVyIGhhdmUgYSAnKScgb3Igd2UgaGF2ZSBydW4gb3V0IG9mIGNoYXJhY3RlcnMgcHJlbWF0dXJlbHk6Ci0gICAvLwotICAgaWYobV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgIHsKLSAgICAgIHRoaXMtPmZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wYXJlbiwgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZShtX2Jhc2UsIG1fZW5kKSk7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0gICBORE5CT09TVF9BU1NFUlQodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pID09IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Nsb3NlX21hcmspOwotI2lmbmRlZiBORE5CT09TVF9OT19TVERfRElTVEFOQ0UKLSAgIGlmKG1hcmtpZCAmJiAodGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6OnNhdmVfc3ViZXhwcmVzc2lvbl9sb2NhdGlvbikpCi0gICAgICB0aGlzLT5tX3BkYXRhLT5tX3N1YnMuYXQobWFya2lkIC0gMSkuc2Vjb25kID0gc3RkOjpkaXN0YW5jZShtX2Jhc2UsIG1fcG9zaXRpb24pOwotI2Vsc2UKLSAgIGlmKG1hcmtpZCAmJiAodGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6OnNhdmVfc3ViZXhwcmVzc2lvbl9sb2NhdGlvbikpCi0gICAgICB0aGlzLT5tX3BkYXRhLT5tX3N1YnMuYXQobWFya2lkIC0gMSkuc2Vjb25kID0gKG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotI2VuZGlmCi0gICArK21fcG9zaXRpb247Ci0gICAvLwotICAgLy8gYXBwZW5kIGNsb3NpbmcgcGFyZW50aGVzaXMgc3RhdGU6Ci0gICAvLwotICAgcGIgPSBzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9lbmRtYXJrLCBzaXplb2YocmVfYnJhY2UpKSk7Ci0gICBwYi0+aW5kZXggPSBtYXJraWQ7Ci0gICBwYi0+aWNhc2UgPSB0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6aWNhc2U7Ci0gICB0aGlzLT5tX3BhcmVuX3N0YXJ0ID0gbGFzdF9wYXJlbl9zdGFydDsKLSAgIC8vCi0gICAvLyByZXN0b3JlIHRoZSBhbHRlcm5hdGUgaW5zZXJ0aW9uIHBvaW50OgotICAgLy8KLSAgIHRoaXMtPm1fYWx0X2luc2VydF9wb2ludCA9IGxhc3RfYWx0X3BvaW50OwotICAgLy8KLSAgIC8vIGFsbG93IGJhY2tyZWZzIHRvIHRoaXMgbWFyazoKLSAgIC8vCi0gICBpZigobWFya2lkID4gMCkgJiYgKG1hcmtpZCA8IHNpemVvZih1bnNpZ25lZCkgKiBDSEFSX0JJVCkpCi0gICAgICB0aGlzLT5tX2JhY2tyZWZzIHw9IDF1IDw8IChtYXJraWQgLSAxKTsKLQotICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotYm9vbCBiYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz46OnBhcnNlX2Jhc2ljX2VzY2FwZSgpCi17Ci0gICArK21fcG9zaXRpb247Ci0gICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICBzd2l0Y2godGhpcy0+bV90cmFpdHMuZXNjYXBlX3N5bnRheF90eXBlKCptX3Bvc2l0aW9uKSkKLSAgIHsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrOgotICAgICAgcmV0dXJuIHBhcnNlX29wZW5fcGFyZW4oKTsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2xvc2VfbWFyazoKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfcGx1czoKLSAgICAgIGlmKHRoaXMtPmZsYWdzKCkgJiByZWdleF9jb25zdGFudHM6OmJrX3BsdXNfcW0pCi0gICAgICB7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICByZXR1cm4gcGFyc2VfcmVwZWF0KDEpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICAgcmV0dXJuIHBhcnNlX2xpdGVyYWwoKTsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfcXVlc3Rpb246Ci0gICAgICBpZih0aGlzLT5mbGFncygpICYgcmVnZXhfY29uc3RhbnRzOjpia19wbHVzX3FtKQotICAgICAgewotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgcmV0dXJuIHBhcnNlX3JlcGVhdCgwLCAxKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgICAgIHJldHVybiBwYXJzZV9saXRlcmFsKCk7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fYnJhY2U6Ci0gICAgICBpZih0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6bm9faW50ZXJ2YWxzKQotICAgICAgICAgcmV0dXJuIHBhcnNlX2xpdGVyYWwoKTsKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIHJldHVybiBwYXJzZV9yZXBlYXRfcmFuZ2UodHJ1ZSk7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Nsb3NlX2JyYWNlOgotICAgICAgaWYodGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6Om5vX2ludGVydmFscykKLSAgICAgICAgIHJldHVybiBwYXJzZV9saXRlcmFsKCk7Ci0gICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYnJhY2UsIHRoaXMtPm1fcG9zaXRpb24gLSB0aGlzLT5tX2Jhc2UsICJGb3VuZCBhIGNsb3NpbmcgcmVwZXRpdGlvbiBvcGVyYXRvciB9IHdpdGggbm8gY29ycmVzcG9uZGluZyB7LiIpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcjoKLSAgICAgIGlmKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjpia192YmFyKQotICAgICAgICAgcmV0dXJuIHBhcnNlX2FsdCgpOwotICAgICAgZWxzZQotICAgICAgICAgcmVzdWx0ID0gcGFyc2VfbGl0ZXJhbCgpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2RpZ2l0OgotICAgICAgcmV0dXJuIHBhcnNlX2JhY2tyZWYoKTsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9zdGFydF9idWZmZXI6Ci0gICAgICBpZih0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6ZW1hY3NfZXgpCi0gICAgICB7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICB0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfYnVmZmVyX3N0YXJ0KTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgICAgIHJlc3VsdCA9IHBhcnNlX2xpdGVyYWwoKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX2VuZF9idWZmZXI6Ci0gICAgICBpZih0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6ZW1hY3NfZXgpCi0gICAgICB7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICB0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfYnVmZmVyX2VuZCk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICAgICByZXN1bHQgPSBwYXJzZV9saXRlcmFsKCk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV93b3JkX2Fzc2VydDoKLSAgICAgIGlmKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjplbWFjc19leCkKLSAgICAgIHsKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF93b3JkX2JvdW5kYXJ5KTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgICAgIHJlc3VsdCA9IHBhcnNlX2xpdGVyYWwoKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX25vdF93b3JkX2Fzc2VydDoKLSAgICAgIGlmKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjplbWFjc19leCkKLSAgICAgIHsKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF93aXRoaW5fd29yZCk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICAgICByZXN1bHQgPSBwYXJzZV9saXRlcmFsKCk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9sZWZ0X3dvcmQ6Ci0gICAgICBpZih0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6ZW1hY3NfZXgpCi0gICAgICB7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICB0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfd29yZF9zdGFydCk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICAgICByZXN1bHQgPSBwYXJzZV9saXRlcmFsKCk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9yaWdodF93b3JkOgotICAgICAgaWYodGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6OmVtYWNzX2V4KQotICAgICAgewotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgdGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X3dvcmRfZW5kKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgICAgIHJlc3VsdCA9IHBhcnNlX2xpdGVyYWwoKTsKLSAgICAgIGJyZWFrOwotICAgZGVmYXVsdDoKLSAgICAgIGlmKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjplbWFjc19leCkKLSAgICAgIHsKLSAgICAgICAgIGJvb2wgbmVnYXRlID0gdHJ1ZTsKLSAgICAgICAgIHN3aXRjaCgqbV9wb3NpdGlvbikKLSAgICAgICAgIHsKLSAgICAgICAgIGNhc2UgJ3cnOgotICAgICAgICAgICAgbmVnYXRlID0gZmFsc2U7Ci0gICAgICAgICAgICBORE5CT09TVF9GQUxMVEhST1VHSDsKLSAgICAgICAgIGNhc2UgJ1cnOgotICAgICAgICAgICAgewotICAgICAgICAgICAgYmFzaWNfY2hhcl9zZXQ8Y2hhclQsIHRyYWl0cz4gY2hhcl9zZXQ7Ci0gICAgICAgICAgICBpZihuZWdhdGUpCi0gICAgICAgICAgICAgICBjaGFyX3NldC5uZWdhdGUoKTsKLSAgICAgICAgICAgIGNoYXJfc2V0LmFkZF9jbGFzcyh0aGlzLT5tX3dvcmRfbWFzayk7Ci0gICAgICAgICAgICBpZigwID09IHRoaXMtPmFwcGVuZF9zZXQoY2hhcl9zZXQpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2N0eXBlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgY2FzZSAncyc6Ci0gICAgICAgICAgICBuZWdhdGUgPSBmYWxzZTsKLSAgICAgICAgICAgIE5ETkJPT1NUX0ZBTExUSFJPVUdIOwotICAgICAgICAgY2FzZSAnUyc6Ci0gICAgICAgICAgICByZXR1cm4gYWRkX2VtYWNzX2NvZGUobmVnYXRlKTsKLSAgICAgICAgIGNhc2UgJ2MnOgotICAgICAgICAgY2FzZSAnQyc6Ci0gICAgICAgICAgICAvLyBub3Qgc3VwcG9ydGVkIHlldDoKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9lc2NhcGUsIG1fcG9zaXRpb24gLSBtX2Jhc2UsICJUaGUgXFxjIGFuZCBcXEMgZXNjYXBlIHNlcXVlbmNlcyBhcmUgbm90IHN1cHBvcnRlZCBieSBQT1NJWCBiYXNpYyByZWd1bGFyIGV4cHJlc3Npb25zOiB0cnkgdGhlIFBlcmwgc3ludGF4IGluc3RlYWQuIik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICByZXN1bHQgPSBwYXJzZV9saXRlcmFsKCk7Ci0gICAgICBicmVhazsKLSAgIH0KLSAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotYm9vbCBiYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz46OnBhcnNlX2V4dGVuZGVkX2VzY2FwZSgpCi17Ci0gICArK21fcG9zaXRpb247Ci0gICBpZihtX3Bvc2l0aW9uID09IG1fZW5kKQotICAgewotICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2VzY2FwZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSwgIkluY29tcGxldGUgZXNjYXBlIHNlcXVlbmNlIGZvdW5kLiIpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotICAgYm9vbCBuZWdhdGUgPSBmYWxzZTsgLy8gaW4gY2FzZSB0aGlzIGlzIGEgY2hhcmFjdGVyIGNsYXNzIGVzY2FwZTogXHcgXGQgZXRjCi0gICBzd2l0Y2godGhpcy0+bV90cmFpdHMuZXNjYXBlX3N5bnRheF90eXBlKCptX3Bvc2l0aW9uKSkKLSAgIHsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9ub3RfY2xhc3M6Ci0gICAgICBuZWdhdGUgPSB0cnVlOwotICAgICAgTkROQk9PU1RfRkFMTFRIUk9VR0g7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfY2xhc3M6Ci0gICAgICB7Ci1lc2NhcGVfdHlwZV9jbGFzc19qdW1wOgotICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6OmNoYXJfY2xhc3NfdHlwZSBtX3R5cGU7Ci0gICAgICAgICBtX3R5cGUgbSA9IHRoaXMtPm1fdHJhaXRzLmxvb2t1cF9jbGFzc25hbWUobV9wb3NpdGlvbiwgbV9wb3NpdGlvbisxKTsKLSAgICAgICAgIGlmKG0gIT0gMCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGJhc2ljX2NoYXJfc2V0PGNoYXJULCB0cmFpdHM+IGNoYXJfc2V0OwotICAgICAgICAgICAgaWYobmVnYXRlKQotICAgICAgICAgICAgICAgY2hhcl9zZXQubmVnYXRlKCk7Ci0gICAgICAgICAgICBjaGFyX3NldC5hZGRfY2xhc3MobSk7Ci0gICAgICAgICAgICBpZigwID09IHRoaXMtPmFwcGVuZF9zZXQoY2hhcl9zZXQpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2N0eXBlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgfQotICAgICAgICAgLy8KLSAgICAgICAgIC8vIG5vdCBhIGNsYXNzLCBqdXN0IGEgcmVndWxhciB1bmtub3duIGVzY2FwZToKLSAgICAgICAgIC8vCi0gICAgICAgICB0aGlzLT5hcHBlbmRfbGl0ZXJhbCh1bmVzY2FwZV9jaGFyYWN0ZXIoKSk7Ci0gICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZGlnaXQ6Ci0gICAgICByZXR1cm4gcGFyc2VfYmFja3JlZigpOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX2xlZnRfd29yZDoKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF93b3JkX3N0YXJ0KTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX3JpZ2h0X3dvcmQ6Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICB0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfd29yZF9lbmQpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfc3RhcnRfYnVmZmVyOgotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgdGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X2J1ZmZlcl9zdGFydCk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9lbmRfYnVmZmVyOgotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgdGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X2J1ZmZlcl9lbmQpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfd29yZF9hc3NlcnQ6Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICB0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfd29yZF9ib3VuZGFyeSk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9ub3Rfd29yZF9hc3NlcnQ6Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICB0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfd2l0aGluX3dvcmQpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfWjoKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9zb2Z0X2J1ZmZlcl9lbmQpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfUToKLSAgICAgIHJldHVybiBwYXJzZV9RRSgpOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX0M6Ci0gICAgICByZXR1cm4gcGFyc2VfbWF0Y2hfYW55KCk7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfWDoKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9jb21iaW5pbmcpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfRzoKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9yZXN0YXJ0X2NvbnRpbnVlKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX25vdF9wcm9wZXJ0eToKLSAgICAgIG5lZ2F0ZSA9IHRydWU7Ci0gICAgICBORE5CT09TVF9GQUxMVEhST1VHSDsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9wcm9wZXJ0eToKLSAgICAgIHsKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIGNoYXJfY2xhc3NfdHlwZSBtOwotICAgICAgICAgaWYobV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9lc2NhcGUsIG1fcG9zaXRpb24gLSBtX2Jhc2UsICJJbmNvbXBsZXRlIHByb3BlcnR5IGVzY2FwZSBmb3VuZC4iKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgICAgIC8vIG1heWJlIGhhdmUgXHB7ZGRkfQotICAgICAgICAgaWYodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pID09IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fYnJhY2UpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBjaGFyVCogYmFzZSA9IG1fcG9zaXRpb247Ci0gICAgICAgICAgICAvLyBza2lwIGZvcndhcmQgdW50aWwgd2UgZmluZCBlbmNsb3NpbmcgYnJhY2U6Ci0gICAgICAgICAgICB3aGlsZSgobV9wb3NpdGlvbiAhPSBtX2VuZCkgJiYgKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9icmFjZSkpCi0gICAgICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICAgICBpZihtX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2VzY2FwZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSwgIkNsb3NpbmcgfSBtaXNzaW5nIGZyb20gcHJvcGVydHkgZXNjYXBlIHNlcXVlbmNlLiIpOwotICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbSA9IHRoaXMtPm1fdHJhaXRzLmxvb2t1cF9jbGFzc25hbWUoKytiYXNlLCBtX3Bvc2l0aW9uKyspOwotICAgICAgICAgfQotICAgICAgICAgZWxzZQotICAgICAgICAgewotICAgICAgICAgICAgbSA9IHRoaXMtPm1fdHJhaXRzLmxvb2t1cF9jbGFzc25hbWUobV9wb3NpdGlvbiwgbV9wb3NpdGlvbisxKTsKLSAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIH0KLSAgICAgICAgIGlmKG0gIT0gMCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGJhc2ljX2NoYXJfc2V0PGNoYXJULCB0cmFpdHM+IGNoYXJfc2V0OwotICAgICAgICAgICAgaWYobmVnYXRlKQotICAgICAgICAgICAgICAgY2hhcl9zZXQubmVnYXRlKCk7Ci0gICAgICAgICAgICBjaGFyX3NldC5hZGRfY2xhc3MobSk7Ci0gICAgICAgICAgICBpZigwID09IHRoaXMtPmFwcGVuZF9zZXQoY2hhcl9zZXQpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2N0eXBlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgfQotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2N0eXBlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCAiRXNjYXBlIHNlcXVlbmNlIHdhcyBuZWl0aGVyIGEgdmFsaWQgcHJvcGVydHkgbm9yIGEgdmFsaWQgY2hhcmFjdGVyIGNsYXNzIG5hbWUuIik7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfcmVzZXRfc3RhcnRfbWFyazoKLSAgICAgIGlmKDAgPT0gKHRoaXMtPmZsYWdzKCkgJiAocmVnYmFzZTo6bWFpbl9vcHRpb25fdHlwZSB8IHJlZ2Jhc2U6Om5vX3BlcmxfZXgpKSkKLSAgICAgIHsKLSAgICAgICAgIHJlX2JyYWNlKiBwYiA9IHN0YXRpY19jYXN0PHJlX2JyYWNlKj4odGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X3N0YXJ0bWFyaywgc2l6ZW9mKHJlX2JyYWNlKSkpOwotICAgICAgICAgcGItPmluZGV4ID0gLTU7Ci0gICAgICAgICBwYi0+aWNhc2UgPSB0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6aWNhc2U7Ci0gICAgICAgICB0aGlzLT5tX3BkYXRhLT5tX2RhdGEuYWxpZ24oKTsKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgZ290byBlc2NhcGVfdHlwZV9jbGFzc19qdW1wOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX2xpbmVfZW5kaW5nOgotICAgICAgaWYoMCA9PSAodGhpcy0+ZmxhZ3MoKSAmIChyZWdiYXNlOjptYWluX29wdGlvbl90eXBlIHwgcmVnYmFzZTo6bm9fcGVybF9leCkpKQotICAgICAgewotICAgICAgICAgY29uc3QgY2hhclQqIGUgPSBnZXRfZXNjYXBlX1Jfc3RyaW5nPGNoYXJUPigpOwotICAgICAgICAgY29uc3QgY2hhclQqIG9sZF9wb3NpdGlvbiA9IG1fcG9zaXRpb247Ci0gICAgICAgICBjb25zdCBjaGFyVCogb2xkX2VuZCA9IG1fZW5kOwotICAgICAgICAgY29uc3QgY2hhclQqIG9sZF9iYXNlID0gbV9iYXNlOwotICAgICAgICAgbV9wb3NpdGlvbiA9IGU7Ci0gICAgICAgICBtX2Jhc2UgPSBlOwotICAgICAgICAgbV9lbmQgPSBlICsgdHJhaXRzOjpsZW5ndGgoZSk7Ci0gICAgICAgICBib29sIHIgPSBwYXJzZV9hbGwoKTsKLSAgICAgICAgIG1fcG9zaXRpb24gPSArK29sZF9wb3NpdGlvbjsKLSAgICAgICAgIG1fZW5kID0gb2xkX2VuZDsKLSAgICAgICAgIG1fYmFzZSA9IG9sZF9iYXNlOwotICAgICAgICAgcmV0dXJuIHI7Ci0gICAgICB9Ci0gICAgICBnb3RvIGVzY2FwZV90eXBlX2NsYXNzX2p1bXA7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfZXh0ZW5kZWRfYmFja3JlZjoKLSAgICAgIGlmKDAgPT0gKHRoaXMtPmZsYWdzKCkgJiAocmVnYmFzZTo6bWFpbl9vcHRpb25fdHlwZSB8IHJlZ2Jhc2U6Om5vX3BlcmxfZXgpKSkKLSAgICAgIHsKLSAgICAgICAgIGJvb2wgaGF2ZV9icmFjZSA9IGZhbHNlOwotICAgICAgICAgYm9vbCBuZWdhdGl2ZSA9IGZhbHNlOwotICAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGluY29tcGxldGVfbWVzc2FnZSA9ICJJbmNvbXBsZXRlIFxcZyBlc2NhcGUgZm91bmQuIjsKLSAgICAgICAgIGlmKCsrbV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9lc2NhcGUsIG1fcG9zaXRpb24gLSBtX2Jhc2UsIGluY29tcGxldGVfbWVzc2FnZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICAgICAvLyBtYXliZSBoYXZlIFxne2RkZH0KLSAgICAgICAgIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3R5cGUgc3luID0gdGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pOwotICAgICAgICAgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfdHlwZSBzeW5fZW5kID0gMDsKLSAgICAgICAgIGlmKChzeW4gPT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9icmFjZSkgCi0gICAgICAgICAgICB8fCAoc3luID09IHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfbGVmdF93b3JkKQotICAgICAgICAgICAgfHwgKHN5biA9PSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX2VuZF9idWZmZXIpKQotICAgICAgICAgewotICAgICAgICAgICAgaWYoKyttX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2VzY2FwZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSwgaW5jb21wbGV0ZV9tZXNzYWdlKTsKLSAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGhhdmVfYnJhY2UgPSB0cnVlOwotICAgICAgICAgICAgc3dpdGNoKHN5bikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9icmFjZToKLSAgICAgICAgICAgICAgIHN5bl9lbmQgPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9icmFjZTsKLSAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX2xlZnRfd29yZDoKLSAgICAgICAgICAgICAgIHN5bl9lbmQgPSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX3JpZ2h0X3dvcmQ7Ci0gICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICBzeW5fZW5kID0gcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9lbmRfYnVmZmVyOwotICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgICAgICBuZWdhdGl2ZSA9ICgqbV9wb3NpdGlvbiA9PSBzdGF0aWNfY2FzdDxjaGFyVD4oJy0nKSk7Ci0gICAgICAgICBpZigobmVnYXRpdmUpICYmICgrK21fcG9zaXRpb24gPT0gbV9lbmQpKQotICAgICAgICAgewotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2VzY2FwZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSwgaW5jb21wbGV0ZV9tZXNzYWdlKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgICAgIGNvbnN0IGNoYXJUKiBwYyA9IG1fcG9zaXRpb247Ci0gICAgICAgICBpbnQgaSA9IHRoaXMtPm1fdHJhaXRzLnRvaShwYywgbV9lbmQsIDEwKTsKLSAgICAgICAgIGlmKChpIDwgMCkgJiYgc3luX2VuZCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIENoZWNrIGZvciBhIG5hbWVkIGNhcHR1cmUsIGdldCB0aGUgbGVmdG1vc3Qgb25lIGlmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmU6Ci0gICAgICAgICAgICBjb25zdCBjaGFyVCogYmFzZSA9IG1fcG9zaXRpb247Ci0gICAgICAgICAgICB3aGlsZSgobV9wb3NpdGlvbiAhPSBtX2VuZCkgJiYgKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSBzeW5fZW5kKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGkgPSBoYXNoX3ZhbHVlX2Zyb21fY2FwdHVyZV9uYW1lKGJhc2UsIG1fcG9zaXRpb24pOwotICAgICAgICAgICAgcGMgPSBtX3Bvc2l0aW9uOwotICAgICAgICAgfQotICAgICAgICAgaWYobmVnYXRpdmUpCi0gICAgICAgICAgICBpID0gMSArIG1fbWFya19jb3VudCAtIGk7Ci0gICAgICAgICBpZigoKGkgPiAwKSAmJiAodGhpcy0+bV9iYWNrcmVmcyAmICgxdSA8PCAoaS0xKSkpKSB8fCAoKGkgPiAxMDAwMCkgJiYgKHRoaXMtPm1fcGRhdGEtPmdldF9pZChpKSA+IDApICYmICh0aGlzLT5tX2JhY2tyZWZzICYgKDF1IDw8ICh0aGlzLT5tX3BkYXRhLT5nZXRfaWQoaSktMSkpKSkpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBtX3Bvc2l0aW9uID0gcGM7Ci0gICAgICAgICAgICByZV9icmFjZSogcGIgPSBzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9iYWNrcmVmLCBzaXplb2YocmVfYnJhY2UpKSk7Ci0gICAgICAgICAgICBwYi0+aW5kZXggPSBpOwotICAgICAgICAgICAgcGItPmljYXNlID0gdGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6OmljYXNlOwotICAgICAgICAgfQotICAgICAgICAgZWxzZQotICAgICAgICAgewotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JhY2tyZWYsIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgICAgbV9wb3NpdGlvbiA9IHBjOwotICAgICAgICAgaWYoaGF2ZV9icmFjZSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGlmKChtX3Bvc2l0aW9uID09IG1fZW5kKSB8fCAodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHN5bl9lbmQpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2VzY2FwZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSwgaW5jb21wbGV0ZV9tZXNzYWdlKTsKLSAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIH0KLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgZ290byBlc2NhcGVfdHlwZV9jbGFzc19qdW1wOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX2NvbnRyb2xfdjoKLSAgICAgIGlmKDAgPT0gKHRoaXMtPmZsYWdzKCkgJiAocmVnYmFzZTo6bWFpbl9vcHRpb25fdHlwZSB8IHJlZ2Jhc2U6Om5vX3BlcmxfZXgpKSkKLSAgICAgICAgIGdvdG8gZXNjYXBlX3R5cGVfY2xhc3NfanVtcDsKLSAgICAgIE5ETkJPT1NUX0ZBTExUSFJPVUdIOwotICAgZGVmYXVsdDoKLSAgICAgIHRoaXMtPmFwcGVuZF9saXRlcmFsKHVuZXNjYXBlX2NoYXJhY3RlcigpKTsKLSAgICAgIGJyZWFrOwotICAgfQotICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotYm9vbCBiYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz46OnBhcnNlX21hdGNoX2FueSgpCi17Ci0gICAvLwotICAgLy8gd2UgaGF2ZSBhICcuJyB0aGF0IGNhbiBtYXRjaCBhbnkgY2hhcmFjdGVyOgotICAgLy8KLSAgICsrbV9wb3NpdGlvbjsKLSAgIHN0YXRpY19jYXN0PHJlX2RvdCo+KAotICAgICAgdGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X3dpbGQsIHNpemVvZihyZV9kb3QpKQotICAgICAgKS0+bWFzayA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjpub19tb2RfcyAKLSAgICAgID8gcmVfZGV0YWlsOjpmb3JjZV9ub3RfbmV3bGluZSAKLSAgICAgICAgIDogdGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6Om1vZF9zID8KLSAgICAgICAgICAgIHJlX2RldGFpbDo6Zm9yY2VfbmV3bGluZSA6IHJlX2RldGFpbDo6ZG9udF9jYXJlKTsKLSAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWJvb2wgYmFzaWNfcmVnZXhfcGFyc2VyPGNoYXJULCB0cmFpdHM+OjpwYXJzZV9yZXBlYXQoc3RkOjpzaXplX3QgbG93LCBzdGQ6OnNpemVfdCBoaWdoKQotewotICAgYm9vbCBncmVlZHkgPSB0cnVlOwotICAgYm9vbCBwb2Nlc3NpdmUgPSBmYWxzZTsKLSAgIHN0ZDo6c2l6ZV90IGluc2VydF9wb2ludDsKLSAgIC8vIAotICAgLy8gd2hlbiB3ZSBnZXQgdG8gaGVyZSB3ZSBtYXkgaGF2ZSBhIG5vbi1ncmVlZHkgPyBtYXJrIHN0aWxsIHRvIGNvbWU6Ci0gICAvLwotICAgaWYoKG1fcG9zaXRpb24gIT0gbV9lbmQpIAotICAgICAgJiYgKAotICAgICAgICAgICAgKDAgPT0gKHRoaXMtPmZsYWdzKCkgJiAocmVnYmFzZTo6bWFpbl9vcHRpb25fdHlwZSB8IHJlZ2Jhc2U6Om5vX3BlcmxfZXgpKSkKLSAgICAgICAgICAgIHx8ICgocmVnYmFzZTo6YmFzaWNfc3ludGF4X2dyb3VwfHJlZ2Jhc2U6OmVtYWNzX2V4KSA9PSAodGhpcy0+ZmxhZ3MoKSAmIChyZWdiYXNlOjptYWluX29wdGlvbl90eXBlIHwgcmVnYmFzZTo6ZW1hY3NfZXgpKSkKLSAgICAgICAgICkKLSAgICAgICkKLSAgIHsKLSAgICAgIC8vIE9LIHdlIGhhdmUgYSBwZXJsIG9yIGVtYWNzIHJlZ2V4LCBjaGVjayBmb3IgYSAnPyc6Ci0gICAgICBpZih0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgPT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfcXVlc3Rpb24pCi0gICAgICB7Ci0gICAgICAgICBncmVlZHkgPSBmYWxzZTsKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIH0KLSAgICAgIC8vIGZvciBwZXJsIHJlZ2V4ZXMgb25seSBjaGVjayBmb3IgcG9jZXNzaXZlICsrIHJlcGVhdHMuCi0gICAgICBpZigobV9wb3NpdGlvbiAhPSBtX2VuZCkKLSAgICAgICAgICYmICgwID09ICh0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6bWFpbl9vcHRpb25fdHlwZSkpIAotICAgICAgICAgJiYgKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSA9PSByZWdleF9jb25zdGFudHM6OnN5bnRheF9wbHVzKSkKLSAgICAgIHsKLSAgICAgICAgIHBvY2Vzc2l2ZSA9IHRydWU7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICB9Ci0gICB9Ci0gICBpZigwID09IHRoaXMtPm1fbGFzdF9zdGF0ZSkKLSAgIHsKLSAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9iYWRyZXBlYXQsIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2UobV9iYXNlLCBtX3Bvc2l0aW9uKSwgIk5vdGhpbmcgdG8gcmVwZWF0LiIpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotICAgaWYodGhpcy0+bV9sYXN0X3N0YXRlLT50eXBlID09IHN5bnRheF9lbGVtZW50X2VuZG1hcmspCi0gICB7Ci0gICAgICAvLyBpbnNlcnQgYSByZXBlYXQgYmVmb3JlIHRoZSAnKCcgbWF0Y2hpbmcgdGhlIGxhc3QgJyknOgotICAgICAgaW5zZXJ0X3BvaW50ID0gdGhpcy0+bV9wYXJlbl9zdGFydDsKLSAgIH0KLSAgIGVsc2UgaWYoKHRoaXMtPm1fbGFzdF9zdGF0ZS0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9saXRlcmFsKSAmJiAoc3RhdGljX2Nhc3Q8cmVfbGl0ZXJhbCo+KHRoaXMtPm1fbGFzdF9zdGF0ZSktPmxlbmd0aCA+IDEpKQotICAgewotICAgICAgLy8gdGhlIGxhc3Qgc3RhdGUgd2FzIGEgbGl0ZXJhbCB3aXRoIG1vcmUgdGhhbiBvbmUgY2hhcmFjdGVyLCBzcGxpdCBpdCBpbiB0d286Ci0gICAgICByZV9saXRlcmFsKiBsaXQgPSBzdGF0aWNfY2FzdDxyZV9saXRlcmFsKj4odGhpcy0+bV9sYXN0X3N0YXRlKTsKLSAgICAgIGNoYXJUIGMgPSAoc3RhdGljX2Nhc3Q8Y2hhclQqPihzdGF0aWNfY2FzdDx2b2lkKj4obGl0KzEpKSlbbGl0LT5sZW5ndGggLSAxXTsKLSAgICAgIC0tKGxpdC0+bGVuZ3RoKTsKLSAgICAgIC8vIG5vdyBhcHBlbmQgbmV3IHN0YXRlOgotICAgICAgbGl0ID0gc3RhdGljX2Nhc3Q8cmVfbGl0ZXJhbCo+KHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9saXRlcmFsLCBzaXplb2YocmVfbGl0ZXJhbCkgKyBzaXplb2YoY2hhclQpKSk7Ci0gICAgICBsaXQtPmxlbmd0aCA9IDE7Ci0gICAgICAoc3RhdGljX2Nhc3Q8Y2hhclQqPihzdGF0aWNfY2FzdDx2b2lkKj4obGl0KzEpKSlbMF0gPSBjOwotICAgICAgaW5zZXJ0X3BvaW50ID0gdGhpcy0+Z2V0b2Zmc2V0KHRoaXMtPm1fbGFzdF9zdGF0ZSk7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICAvLyByZXBlYXQgdGhlIGxhc3Qgc3RhdGUgd2hhdGV2ZXIgaXQgd2FzLCBuZWVkIHRvIGFkZCBzb21lIGVycm9yIGNoZWNraW5nIGhlcmU6Ci0gICAgICBzd2l0Y2godGhpcy0+bV9sYXN0X3N0YXRlLT50eXBlKQotICAgICAgewotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9zdGFydF9saW5lOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9lbmRfbGluZToKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfd29yZF9ib3VuZGFyeToKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfd2l0aGluX3dvcmQ6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3dvcmRfc3RhcnQ6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3dvcmRfZW5kOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9idWZmZXJfc3RhcnQ6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2J1ZmZlcl9lbmQ6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2FsdDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfc29mdF9idWZmZXJfZW5kOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9yZXN0YXJ0X2NvbnRpbnVlOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9qdW1wOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9zdGFydG1hcms6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2JhY2tzdGVwOgotICAgICAgICAgLy8gY2FuJ3QgbGVnYWxseSByZXBlYXQgYW55IG9mIHRoZSBhYm92ZToKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9iYWRyZXBlYXQsIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgIC8vIGRvIG5vdGhpbmcuLi4KLSAgICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgaW5zZXJ0X3BvaW50ID0gdGhpcy0+Z2V0b2Zmc2V0KHRoaXMtPm1fbGFzdF9zdGF0ZSk7Ci0gICB9Ci0gICAvLwotICAgLy8gT0sgd2Ugbm93IGtub3cgd2hhdCB0byByZXBlYXQsIHNvIGluc2VydCB0aGUgcmVwZWF0IGFyb3VuZCBpdDoKLSAgIC8vCi0gICByZV9yZXBlYXQqIHJlcCA9IHN0YXRpY19jYXN0PHJlX3JlcGVhdCo+KHRoaXMtPmluc2VydF9zdGF0ZShpbnNlcnRfcG9pbnQsIHN5bnRheF9lbGVtZW50X3JlcCwgcmVfcmVwZWF0ZXJfc2l6ZSkpOwotICAgcmVwLT5taW4gPSBsb3c7Ci0gICByZXAtPm1heCA9IGhpZ2g7Ci0gICByZXAtPmdyZWVkeSA9IGdyZWVkeTsKLSAgIHJlcC0+bGVhZGluZyA9IGZhbHNlOwotICAgLy8gc3RvcmUgb3VyIHJlcGVhdGVyIHBvc2l0aW9uIGZvciBsYXRlcjoKLSAgIHN0ZDo6cHRyZGlmZl90IHJlcF9vZmYgPSB0aGlzLT5nZXRvZmZzZXQocmVwKTsKLSAgIC8vIGFuZCBhcHBlbmQgYSBiYWNrIGp1bXAgdG8gdGhlIHJlcGVhdDoKLSAgIHJlX2p1bXAqIGptcCA9IHN0YXRpY19jYXN0PHJlX2p1bXAqPih0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfanVtcCwgc2l6ZW9mKHJlX2p1bXApKSk7Ci0gICBqbXAtPmFsdC5pID0gcmVwX29mZiAtIHRoaXMtPmdldG9mZnNldChqbXApOwotICAgdGhpcy0+bV9wZGF0YS0+bV9kYXRhLmFsaWduKCk7Ci0gICAvLyBub3cgZmlsbCBpbiB0aGUgYWx0IGp1bXAgZm9yIHRoZSByZXBlYXQ6Ci0gICByZXAgPSBzdGF0aWNfY2FzdDxyZV9yZXBlYXQqPih0aGlzLT5nZXRhZGRyZXNzKHJlcF9vZmYpKTsKLSAgIHJlcC0+YWx0LmkgPSB0aGlzLT5tX3BkYXRhLT5tX2RhdGEuc2l6ZSgpIC0gcmVwX29mZjsKLSAgIC8vCi0gICAvLyBJZiB0aGUgcmVwZWF0IGlzIHBvY2Vzc2l2ZSB0aGVuIGJyYWNrZXQgdGhlIHJlcGVhdCB3aXRoIGEgKD8+Li4uKQotICAgLy8gaW5kZXBlbmRlbnQgc3ViLWV4cHJlc3Npb24gY29uc3RydWN0OgotICAgLy8KLSAgIGlmKHBvY2Vzc2l2ZSkKLSAgIHsKLSAgICAgIGlmKG1fcG9zaXRpb24gIT0gbV9lbmQpCi0gICAgICB7Ci0gICAgICAgICAvLwotICAgICAgICAgLy8gQ2hlY2sgZm9yIGlsbGVnYWwgZm9sbG93aW5nIHF1YW50aWZpZXIsIHdlIGhhdmUgdG8gZG8gdGhpcyBoZXJlLCBiZWNhdXNlCi0gICAgICAgICAvLyB0aGUgZXh0cmEgc3RhdGVzIHdlIGluc2VydCBiZWxvdyBjaXJjdW12ZW50cyBvdXIgdXN1YWwgZXJyb3IgY2hlY2tpbmcgOi0oCi0gICAgICAgICAvLwotICAgICAgICAgc3dpdGNoKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSkKLSAgICAgICAgIHsKLSAgICAgICAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfc3RhcjoKLSAgICAgICAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfcGx1czoKLSAgICAgICAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfcXVlc3Rpb246Ci0gICAgICAgICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fYnJhY2U6Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYmFkcmVwZWF0LCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgICAgIHJlX2JyYWNlKiBwYiA9IHN0YXRpY19jYXN0PHJlX2JyYWNlKj4odGhpcy0+aW5zZXJ0X3N0YXRlKGluc2VydF9wb2ludCwgc3ludGF4X2VsZW1lbnRfc3RhcnRtYXJrLCBzaXplb2YocmVfYnJhY2UpKSk7Ci0gICAgICBwYi0+aW5kZXggPSAtMzsKLSAgICAgIHBiLT5pY2FzZSA9IHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjppY2FzZTsKLSAgICAgIGptcCA9IHN0YXRpY19jYXN0PHJlX2p1bXAqPih0aGlzLT5pbnNlcnRfc3RhdGUoaW5zZXJ0X3BvaW50ICsgc2l6ZW9mKHJlX2JyYWNlKSwgc3ludGF4X2VsZW1lbnRfanVtcCwgc2l6ZW9mKHJlX2p1bXApKSk7Ci0gICAgICB0aGlzLT5tX3BkYXRhLT5tX2RhdGEuYWxpZ24oKTsKLSAgICAgIGptcC0+YWx0LmkgPSB0aGlzLT5tX3BkYXRhLT5tX2RhdGEuc2l6ZSgpIC0gdGhpcy0+Z2V0b2Zmc2V0KGptcCk7Ci0gICAgICBwYiA9IHN0YXRpY19jYXN0PHJlX2JyYWNlKj4odGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X2VuZG1hcmssIHNpemVvZihyZV9icmFjZSkpKTsKLSAgICAgIHBiLT5pbmRleCA9IC0zOwotICAgICAgcGItPmljYXNlID0gdGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6OmljYXNlOwotICAgfQotICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotYm9vbCBiYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz46OnBhcnNlX3JlcGVhdF9yYW5nZShib29sIGlzYmFzaWMpCi17Ci0gICBzdGF0aWMgY29uc3QgY2hhciogaW5jb21wbGV0ZV9tZXNzYWdlID0gIk1pc3NpbmcgfSBpbiBxdWFudGlmaWVkIHJlcGV0aXRpb24uIjsKLSAgIC8vCi0gICAvLyBwYXJzZSBhIHJlcGVhdC1yYW5nZToKLSAgIC8vCi0gICBzdGQ6OnNpemVfdCBtaW4sIG1heDsKLSAgIGludCB2OwotICAgLy8gc2tpcCB3aGl0ZXNwYWNlOgotICAgd2hpbGUoKG1fcG9zaXRpb24gIT0gbV9lbmQpICYmIHRoaXMtPm1fdHJhaXRzLmlzY3R5cGUoKm1fcG9zaXRpb24sIHRoaXMtPm1fbWFza19zcGFjZSkpCi0gICAgICArK21fcG9zaXRpb247Ci0gICBpZih0aGlzLT5tX3Bvc2l0aW9uID09IHRoaXMtPm1fZW5kKQotICAgewotICAgICAgaWYodGhpcy0+ZmxhZ3MoKSAmIChyZWdiYXNlOjptYWluX29wdGlvbl90eXBlIHwgcmVnYmFzZTo6bm9fcGVybF9leCkpCi0gICAgICB7Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYnJhY2UsIHRoaXMtPm1fcG9zaXRpb24gLSB0aGlzLT5tX2Jhc2UsIGluY29tcGxldGVfbWVzc2FnZSk7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICAvLyBUcmVhdCB0aGUgb3BlbmluZyAneycgYXMgYSBsaXRlcmFsIGNoYXJhY3RlciwgcmV3aW5kIHRvIHN0YXJ0IG9mIGVycm9yOgotICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fYnJhY2UpIC0tbV9wb3NpdGlvbjsKLSAgICAgIHJldHVybiBwYXJzZV9saXRlcmFsKCk7Ci0gICB9Ci0gICAvLyBnZXQgbWluOgotICAgdiA9IHRoaXMtPm1fdHJhaXRzLnRvaShtX3Bvc2l0aW9uLCBtX2VuZCwgMTApOwotICAgLy8gc2tpcCB3aGl0ZXNwYWNlOgotICAgaWYodiA8IDApCi0gICB7Ci0gICAgICBpZih0aGlzLT5mbGFncygpICYgKHJlZ2Jhc2U6Om1haW5fb3B0aW9uX3R5cGUgfCByZWdiYXNlOjpub19wZXJsX2V4KSkKLSAgICAgIHsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9icmFjZSwgdGhpcy0+bV9wb3NpdGlvbiAtIHRoaXMtPm1fYmFzZSwgaW5jb21wbGV0ZV9tZXNzYWdlKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIC8vIFRyZWF0IHRoZSBvcGVuaW5nICd7JyBhcyBhIGxpdGVyYWwgY2hhcmFjdGVyLCByZXdpbmQgdG8gc3RhcnQgb2YgZXJyb3I6Ci0gICAgICAtLW1fcG9zaXRpb247Ci0gICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9icmFjZSkgLS1tX3Bvc2l0aW9uOwotICAgICAgcmV0dXJuIHBhcnNlX2xpdGVyYWwoKTsKLSAgIH0KLSAgIHdoaWxlKChtX3Bvc2l0aW9uICE9IG1fZW5kKSAmJiB0aGlzLT5tX3RyYWl0cy5pc2N0eXBlKCptX3Bvc2l0aW9uLCB0aGlzLT5tX21hc2tfc3BhY2UpKQotICAgICAgKyttX3Bvc2l0aW9uOwotICAgaWYodGhpcy0+bV9wb3NpdGlvbiA9PSB0aGlzLT5tX2VuZCkKLSAgIHsKLSAgICAgIGlmKHRoaXMtPmZsYWdzKCkgJiAocmVnYmFzZTo6bWFpbl9vcHRpb25fdHlwZSB8IHJlZ2Jhc2U6Om5vX3BlcmxfZXgpKQotICAgICAgewotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JyYWNlLCB0aGlzLT5tX3Bvc2l0aW9uIC0gdGhpcy0+bV9iYXNlLCBpbmNvbXBsZXRlX21lc3NhZ2UpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgLy8gVHJlYXQgdGhlIG9wZW5pbmcgJ3snIGFzIGEgbGl0ZXJhbCBjaGFyYWN0ZXIsIHJld2luZCB0byBzdGFydCBvZiBlcnJvcjoKLSAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX2JyYWNlKSAtLW1fcG9zaXRpb247Ci0gICAgICByZXR1cm4gcGFyc2VfbGl0ZXJhbCgpOwotICAgfQotICAgbWluID0gdjsKLSAgIC8vIHNlZSBpZiB3ZSBoYXZlIGEgY29tbWE6Ci0gICBpZih0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgPT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY29tbWEpCi0gICB7Ci0gICAgICAvLyBtb3ZlIG9uIGFuZCBlcnJvciBjaGVjazoKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIC8vIHNraXAgd2hpdGVzcGFjZToKLSAgICAgIHdoaWxlKChtX3Bvc2l0aW9uICE9IG1fZW5kKSAmJiB0aGlzLT5tX3RyYWl0cy5pc2N0eXBlKCptX3Bvc2l0aW9uLCB0aGlzLT5tX21hc2tfc3BhY2UpKQotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgaWYodGhpcy0+bV9wb3NpdGlvbiA9PSB0aGlzLT5tX2VuZCkKLSAgICAgIHsKLSAgICAgICAgIGlmKHRoaXMtPmZsYWdzKCkgJiAocmVnYmFzZTo6bWFpbl9vcHRpb25fdHlwZSB8IHJlZ2Jhc2U6Om5vX3BlcmxfZXgpKQotICAgICAgICAgewotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JyYWNlLCB0aGlzLT5tX3Bvc2l0aW9uIC0gdGhpcy0+bV9iYXNlLCBpbmNvbXBsZXRlX21lc3NhZ2UpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgICAgLy8gVHJlYXQgdGhlIG9wZW5pbmcgJ3snIGFzIGEgbGl0ZXJhbCBjaGFyYWN0ZXIsIHJld2luZCB0byBzdGFydCBvZiBlcnJvcjoKLSAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX2JyYWNlKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICByZXR1cm4gcGFyc2VfbGl0ZXJhbCgpOwotICAgICAgfQotICAgICAgLy8gZ2V0IHRoZSB2YWx1ZSBpZiBhbnk6Ci0gICAgICB2ID0gdGhpcy0+bV90cmFpdHMudG9pKG1fcG9zaXRpb24sIG1fZW5kLCAxMCk7Ci0gICAgICBtYXggPSAodiA+PSAwKSA/IChzdGQ6OnNpemVfdCl2IDogKHN0ZDo6bnVtZXJpY19saW1pdHM8c3RkOjpzaXplX3Q+OjptYXgpKCk7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICAvLyBubyBjb21tYSwgbWF4ID0gbWluOgotICAgICAgbWF4ID0gbWluOwotICAgfQotICAgLy8gc2tpcCB3aGl0ZXNwYWNlOgotICAgd2hpbGUoKG1fcG9zaXRpb24gIT0gbV9lbmQpICYmIHRoaXMtPm1fdHJhaXRzLmlzY3R5cGUoKm1fcG9zaXRpb24sIHRoaXMtPm1fbWFza19zcGFjZSkpCi0gICAgICArK21fcG9zaXRpb247Ci0gICAvLyBPSyBub3cgY2hlY2sgdHJhaWxpbmcgfToKLSAgIGlmKHRoaXMtPm1fcG9zaXRpb24gPT0gdGhpcy0+bV9lbmQpCi0gICB7Ci0gICAgICBpZih0aGlzLT5mbGFncygpICYgKHJlZ2Jhc2U6Om1haW5fb3B0aW9uX3R5cGUgfCByZWdiYXNlOjpub19wZXJsX2V4KSkKLSAgICAgIHsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9icmFjZSwgdGhpcy0+bV9wb3NpdGlvbiAtIHRoaXMtPm1fYmFzZSwgaW5jb21wbGV0ZV9tZXNzYWdlKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIC8vIFRyZWF0IHRoZSBvcGVuaW5nICd7JyBhcyBhIGxpdGVyYWwgY2hhcmFjdGVyLCByZXdpbmQgdG8gc3RhcnQgb2YgZXJyb3I6Ci0gICAgICAtLW1fcG9zaXRpb247Ci0gICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9icmFjZSkgLS1tX3Bvc2l0aW9uOwotICAgICAgcmV0dXJuIHBhcnNlX2xpdGVyYWwoKTsKLSAgIH0KLSAgIGlmKGlzYmFzaWMpCi0gICB7Ci0gICAgICBpZih0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgPT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZXNjYXBlKQotICAgICAgewotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgaWYodGhpcy0+bV9wb3NpdGlvbiA9PSB0aGlzLT5tX2VuZCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9icmFjZSwgdGhpcy0+bV9wb3NpdGlvbiAtIHRoaXMtPm1fYmFzZSwgaW5jb21wbGV0ZV9tZXNzYWdlKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9icmFjZSwgdGhpcy0+bV9wb3NpdGlvbiAtIHRoaXMtPm1fYmFzZSwgaW5jb21wbGV0ZV9tZXNzYWdlKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgIH0KLSAgIGlmKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSA9PSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9icmFjZSkKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgIGVsc2UKLSAgIHsKLSAgICAgIC8vIFRyZWF0IHRoZSBvcGVuaW5nICd7JyBhcyBhIGxpdGVyYWwgY2hhcmFjdGVyLCByZXdpbmQgdG8gc3RhcnQgb2YgZXJyb3I6Ci0gICAgICAtLW1fcG9zaXRpb247Ci0gICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9icmFjZSkgLS1tX3Bvc2l0aW9uOwotICAgICAgcmV0dXJuIHBhcnNlX2xpdGVyYWwoKTsKLSAgIH0KLSAgIC8vCi0gICAvLyBmaW5hbGx5IGdvIGFuZCBhZGQgdGhlIHJlcGVhdCwgdW5sZXNzIGVycm9yOgotICAgLy8KLSAgIGlmKG1pbiA+IG1heCkKLSAgIHsKLSAgICAgIC8vIEJhY2t0cmFjayB0byBlcnJvciBsb2NhdGlvbjoKLSAgICAgIG1fcG9zaXRpb24gLT0gMjsKLSAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLmlzY3R5cGUoKm1fcG9zaXRpb24sIHRoaXMtPm1fd29yZF9tYXNrKSkgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JhZGJyYWNlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSAgIHJldHVybiBwYXJzZV9yZXBlYXQobWluLCBtYXgpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWJvb2wgYmFzaWNfcmVnZXhfcGFyc2VyPGNoYXJULCB0cmFpdHM+OjpwYXJzZV9hbHQoKQotewotICAgLy8KLSAgIC8vIGVycm9yIGNoZWNrOiBpZiB0aGVyZSBoYXZlIGJlZW4gbm8gcHJldmlvdXMgc3RhdGVzLAotICAgLy8gb3IgaWYgdGhlIGxhc3Qgc3RhdGUgd2FzIGEgJygnIHRoZW4gZXJyb3I6Ci0gICAvLwotICAgaWYoCi0gICAgICAoKHRoaXMtPm1fbGFzdF9zdGF0ZSA9PSAwKSB8fCAodGhpcy0+bV9sYXN0X3N0YXRlLT50eXBlID09IHN5bnRheF9lbGVtZW50X3N0YXJ0bWFyaykpCi0gICAgICAmJgotICAgICAgISgKLSAgICAgICAgICgodGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6Om1haW5fb3B0aW9uX3R5cGUpID09IHJlZ2Jhc2U6OnBlcmxfc3ludGF4X2dyb3VwKQotICAgICAgICAgICAmJgotICAgICAgICAgKCh0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6bm9fZW1wdHlfZXhwcmVzc2lvbnMpID09IDApCi0gICAgICAgICkKLSAgICAgICkKLSAgIHsKLSAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9lbXB0eSwgdGhpcy0+bV9wb3NpdGlvbiAtIHRoaXMtPm1fYmFzZSwgIkEgcmVndWxhciBleHByZXNzaW9uIGNhbiBzdGFydCB3aXRoIHRoZSBhbHRlcm5hdGlvbiBvcGVyYXRvciB8LiIpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotICAgLy8KLSAgIC8vIFJlc2V0IG1hcmsgY291bnQgaWYgcmVxdWlyZWQ6Ci0gICAvLwotICAgaWYobV9tYXhfbWFyayA8IG1fbWFya19jb3VudCkKLSAgICAgIG1fbWF4X21hcmsgPSBtX21hcmtfY291bnQ7Ci0gICBpZihtX21hcmtfcmVzZXQgPj0gMCkKLSAgICAgIG1fbWFya19jb3VudCA9IG1fbWFya19yZXNldDsKLQotICAgKyttX3Bvc2l0aW9uOwotICAgLy8KLSAgIC8vIHdlIG5lZWQgdG8gYXBwZW5kIGEgdHJhaWxpbmcganVtcDogCi0gICAvLwotICAgcmVfc3ludGF4X2Jhc2UqIHBqID0gdGhpcy0+YXBwZW5kX3N0YXRlKHJlX2RldGFpbDo6c3ludGF4X2VsZW1lbnRfanVtcCwgc2l6ZW9mKHJlX2p1bXApKTsKLSAgIHN0ZDo6cHRyZGlmZl90IGp1bXBfb2Zmc2V0ID0gdGhpcy0+Z2V0b2Zmc2V0KHBqKTsKLSAgIC8vCi0gICAvLyBub3cgaW5zZXJ0IHRoZSBhbHRlcm5hdGl2ZToKLSAgIC8vCi0gICByZV9hbHQqIHBhbHQgPSBzdGF0aWNfY2FzdDxyZV9hbHQqPih0aGlzLT5pbnNlcnRfc3RhdGUodGhpcy0+bV9hbHRfaW5zZXJ0X3BvaW50LCBzeW50YXhfZWxlbWVudF9hbHQsIHJlX2FsdF9zaXplKSk7Ci0gICBqdW1wX29mZnNldCArPSByZV9hbHRfc2l6ZTsKLSAgIHRoaXMtPm1fcGRhdGEtPm1fZGF0YS5hbGlnbigpOwotICAgcGFsdC0+YWx0LmkgPSB0aGlzLT5tX3BkYXRhLT5tX2RhdGEuc2l6ZSgpIC0gdGhpcy0+Z2V0b2Zmc2V0KHBhbHQpOwotICAgLy8KLSAgIC8vIHVwZGF0ZSBtX2FsdF9pbnNlcnRfcG9pbnQgc28gdGhhdCB0aGUgbmV4dCBhbHRlcm5hdGUgZ2V0cwotICAgLy8gaW5zZXJ0ZWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBzZWNvbmQgb2YgdGhlIHR3byB3ZSd2ZSBqdXN0IGNyZWF0ZWQ6Ci0gICAvLwotICAgdGhpcy0+bV9hbHRfaW5zZXJ0X3BvaW50ID0gdGhpcy0+bV9wZGF0YS0+bV9kYXRhLnNpemUoKTsKLSAgIC8vCi0gICAvLyB0aGUgc3RhcnQgb2YgdGhpcyBhbHRlcm5hdGl2ZSBtdXN0IGhhdmUgYSBjYXNlIGNoYW5nZXMgc3RhdGUKLSAgIC8vIGlmIHRoZSBjdXJyZW50IGJsb2NrIGhhcyBtZXNzZWQgYXJvdW5kIHdpdGggY2FzZSBjaGFuZ2VzOgotICAgLy8KLSAgIGlmKG1faGFzX2Nhc2VfY2hhbmdlKQotICAgewotICAgICAgc3RhdGljX2Nhc3Q8cmVfY2FzZSo+KAotICAgICAgICAgdGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X3RvZ2dsZV9jYXNlLCBzaXplb2YocmVfY2FzZSkpCi0gICAgICAgICApLT5pY2FzZSA9IHRoaXMtPm1faWNhc2U7Ci0gICB9Ci0gICAvLwotICAgLy8gcHVzaCB0aGUgYWx0ZXJuYXRpdmUgb250byBvdXIgc3RhY2ssIGEgcmVjdXJzaXZlCi0gICAvLyBpbXBsZW1lbnRhdGlvbiBoZXJlIGlzIGVhc2llciB0byB1bmRlcnN0YW5kIChhbmQgZmFzdGVyCi0gICAvLyBhcyBpdCBoYXBwZW5zKSwgYnV0IGNhdXNlcyBhbGwga2luZHMgb2Ygc3RhY2sgb3ZlcmZsb3cgcHJvYmxlbXMKLSAgIC8vIG9uIHByb2dyYW1zIHdpdGggc21hbGwgc3RhY2tzIChDT00rKS4KLSAgIC8vCi0gICBtX2FsdF9qdW1wcy5wdXNoX2JhY2soanVtcF9vZmZzZXQpOwotICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotYm9vbCBiYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz46OnBhcnNlX3NldCgpCi17Ci0gICBzdGF0aWMgY29uc3QgY2hhciogaW5jb21wbGV0ZV9tZXNzYWdlID0gIkNoYXJhY3RlciBzZXQgZGVjbGFyYXRpb24gc3RhcnRpbmcgd2l0aCBbIHRlcm1pbmF0ZWQgcHJlbWF0dXJlbHkgLSBlaXRoZXIgbm8gXSB3YXMgZm91bmQgb3IgdGhlIHNldCBoYWQgbm8gY29udGVudC4iOwotICAgKyttX3Bvc2l0aW9uOwotICAgaWYobV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgIHsKLSAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9icmFjaywgbV9wb3NpdGlvbiAtIG1fYmFzZSwgaW5jb21wbGV0ZV9tZXNzYWdlKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSAgIGJhc2ljX2NoYXJfc2V0PGNoYXJULCB0cmFpdHM+IGNoYXJfc2V0OwotCi0gICBjb25zdCBjaGFyVCogYmFzZSA9IG1fcG9zaXRpb247ICAvLyB3aGVyZSB0aGUgJ1snIHdhcwotICAgY29uc3QgY2hhclQqIGl0ZW1fYmFzZSA9IG1fcG9zaXRpb247ICAvLyB3aGVyZSB0aGUgJ1snIG9yICdeJyB3YXMKLQotICAgd2hpbGUobV9wb3NpdGlvbiAhPSBtX2VuZCkKLSAgIHsKLSAgICAgIHN3aXRjaCh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikpCi0gICAgICB7Ci0gICAgICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2NhcmV0OgotICAgICAgICAgaWYobV9wb3NpdGlvbiA9PSBiYXNlKQotICAgICAgICAgewotICAgICAgICAgICAgY2hhcl9zZXQubmVnYXRlKCk7Ci0gICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICAgICBpdGVtX2Jhc2UgPSBtX3Bvc2l0aW9uOwotICAgICAgICAgfQotICAgICAgICAgZWxzZQotICAgICAgICAgICAgcGFyc2Vfc2V0X2xpdGVyYWwoY2hhcl9zZXQpOwotICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Nsb3NlX3NldDoKLSAgICAgICAgIGlmKG1fcG9zaXRpb24gPT0gaXRlbV9iYXNlKQotICAgICAgICAgewotICAgICAgICAgICAgcGFyc2Vfc2V0X2xpdGVyYWwoY2hhcl9zZXQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICB9Ci0gICAgICAgICBlbHNlCi0gICAgICAgICB7Ci0gICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICAgICBpZigwID09IHRoaXMtPmFwcGVuZF9zZXQoY2hhcl9zZXQpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2N0eXBlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX3NldDoKLSAgICAgICAgIGlmKHBhcnNlX2lubmVyX3NldChjaGFyX3NldCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9lc2NhcGU6Ci0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyAKLSAgICAgICAgICAgIC8vIGxvb2sgYWhlYWQgYW5kIHNlZSBpZiB0aGlzIGlzIGEgY2hhcmFjdGVyIGNsYXNzIHNob3J0Y3V0Ci0gICAgICAgICAgICAvLyBcZCBcdyBccyBldGMuLi4KLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICAgICBpZih0aGlzLT5tX3RyYWl0cy5lc2NhcGVfc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pCi0gICAgICAgICAgICAgICA9PSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX2NsYXNzKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgY2hhcl9jbGFzc190eXBlIG0gPSB0aGlzLT5tX3RyYWl0cy5sb29rdXBfY2xhc3NuYW1lKG1fcG9zaXRpb24sIG1fcG9zaXRpb24rMSk7Ci0gICAgICAgICAgICAgICBpZihtICE9IDApCi0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBjaGFyX3NldC5hZGRfY2xhc3MobSk7Ci0gICAgICAgICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYodGhpcy0+bV90cmFpdHMuZXNjYXBlX3N5bnRheF90eXBlKCptX3Bvc2l0aW9uKQotICAgICAgICAgICAgICAgPT0gcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9ub3RfY2xhc3MpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAvLyBuZWdhdGVkIGNoYXJhY3RlciBjbGFzczoKLSAgICAgICAgICAgICAgIGNoYXJfY2xhc3NfdHlwZSBtID0gdGhpcy0+bV90cmFpdHMubG9va3VwX2NsYXNzbmFtZShtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uKzEpOwotICAgICAgICAgICAgICAgaWYobSAhPSAwKQotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgY2hhcl9zZXQuYWRkX25lZ2F0ZWRfY2xhc3MobSk7Ci0gICAgICAgICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIG5vdCBhIGNoYXJhY3RlciBjbGFzcywganVzdCBhIHJlZ3VsYXIgZXNjYXBlOgotICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgcGFyc2Vfc2V0X2xpdGVyYWwoY2hhcl9zZXQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICB9Ci0gICAgICBkZWZhdWx0OgotICAgICAgICAgcGFyc2Vfc2V0X2xpdGVyYWwoY2hhcl9zZXQpOwotICAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICB9Ci0gICByZXR1cm4gbV9wb3NpdGlvbiAhPSBtX2VuZDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1ib29sIGJhc2ljX3JlZ2V4X3BhcnNlcjxjaGFyVCwgdHJhaXRzPjo6cGFyc2VfaW5uZXJfc2V0KGJhc2ljX2NoYXJfc2V0PGNoYXJULCB0cmFpdHM+JiBjaGFyX3NldCkKLXsKLSAgIHN0YXRpYyBjb25zdCBjaGFyKiBpbmNvbXBsZXRlX21lc3NhZ2UgPSAiQ2hhcmFjdGVyIGNsYXNzIGRlY2xhcmF0aW9uIHN0YXJ0aW5nIHdpdGggWyB0ZXJtaW5hdGVkIHByZW1hdHVyZWx5IC0gZWl0aGVyIG5vIF0gd2FzIGZvdW5kIG9yIHRoZSBzZXQgaGFkIG5vIGNvbnRlbnQuIjsKLSAgIC8vCi0gICAvLyB3ZSBoYXZlIGVpdGhlciBhIGNoYXJhY3RlciBjbGFzcyBbOm5hbWU6XQotICAgLy8gYSBjb2xsYXRpbmcgZWxlbWVudCBbLm5hbWUuXQotICAgLy8gb3IgYW4gZXF1aXZhbGVuY2UgY2xhc3MgWz1uYW1lPV0KLSAgIC8vCi0gICBpZihtX2VuZCA9PSArK21fcG9zaXRpb24pCi0gICB7Ci0gICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYnJhY2ssIG1fcG9zaXRpb24gLSBtX2Jhc2UsIGluY29tcGxldGVfbWVzc2FnZSk7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0gICBzd2l0Y2godGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pKQotICAgewotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9kb3Q6Ci0gICAgICAvLwotICAgICAgLy8gYSBjb2xsYXRpbmcgZWxlbWVudCBpcyB0cmVhdGVkIGFzIGEgbGl0ZXJhbDoKLSAgICAgIC8vCi0gICAgICAtLW1fcG9zaXRpb247Ci0gICAgICBwYXJzZV9zZXRfbGl0ZXJhbChjaGFyX3NldCk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY29sb246Ci0gICAgICB7Ci0gICAgICAvLyBjaGVjayB0aGF0IGNoYXJhY3RlciBjbGFzc2VzIGFyZSBhY3R1YWxseSBlbmFibGVkOgotICAgICAgaWYoKHRoaXMtPmZsYWdzKCkgJiAocmVnYmFzZTo6bWFpbl9vcHRpb25fdHlwZSB8IHJlZ2Jhc2U6Om5vX2NoYXJfY2xhc3NlcykpIAotICAgICAgICAgPT0gKHJlZ2Jhc2U6OmJhc2ljX3N5bnRheF9ncm91cCAgfCByZWdiYXNlOjpub19jaGFyX2NsYXNzZXMpKQotICAgICAgewotICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgcGFyc2Vfc2V0X2xpdGVyYWwoY2hhcl9zZXQpOwotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICAgICAvLyBza2lwIHRoZSAnOicKLSAgICAgIGlmKG1fZW5kID09ICsrbV9wb3NpdGlvbikKLSAgICAgIHsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9icmFjaywgbV9wb3NpdGlvbiAtIG1fYmFzZSwgaW5jb21wbGV0ZV9tZXNzYWdlKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIGNvbnN0IGNoYXJUKiBuYW1lX2ZpcnN0ID0gbV9wb3NpdGlvbjsKLSAgICAgIC8vIHNraXAgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgdGhlbiBmaW5kIHRoZSBtYXRjaGluZyAnOl0nCi0gICAgICBpZihtX2VuZCA9PSArK21fcG9zaXRpb24pCi0gICAgICB7Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYnJhY2ssIG1fcG9zaXRpb24gLSBtX2Jhc2UsIGluY29tcGxldGVfbWVzc2FnZSk7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICB3aGlsZSgobV9wb3NpdGlvbiAhPSBtX2VuZCkgCi0gICAgICAgICAmJiAodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2NvbG9uKSkgCi0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICBjb25zdCBjaGFyVCogbmFtZV9sYXN0ID0gbV9wb3NpdGlvbjsKLSAgICAgIGlmKG1fZW5kID09IG1fcG9zaXRpb24pCi0gICAgICB7Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYnJhY2ssIG1fcG9zaXRpb24gLSBtX2Jhc2UsIGluY29tcGxldGVfbWVzc2FnZSk7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICBpZigobV9lbmQgPT0gKyttX3Bvc2l0aW9uKSAKLSAgICAgICAgIHx8ICh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2xvc2Vfc2V0KSkKLSAgICAgIHsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9icmFjaywgbV9wb3NpdGlvbiAtIG1fYmFzZSwgaW5jb21wbGV0ZV9tZXNzYWdlKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIC8vCi0gICAgICAvLyBjaGVjayBmb3IgbmVnYXRlZCBjbGFzczoKLSAgICAgIC8vCi0gICAgICBib29sIG5lZ2F0ZWQgPSBmYWxzZTsKLSAgICAgIGlmKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCpuYW1lX2ZpcnN0KSA9PSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jYXJldCkKLSAgICAgIHsKLSAgICAgICAgICsrbmFtZV9maXJzdDsKLSAgICAgICAgIG5lZ2F0ZWQgPSB0cnVlOwotICAgICAgfQotICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6OmNoYXJfY2xhc3NfdHlwZSBtX3R5cGU7Ci0gICAgICBtX3R5cGUgbSA9IHRoaXMtPm1fdHJhaXRzLmxvb2t1cF9jbGFzc25hbWUobmFtZV9maXJzdCwgbmFtZV9sYXN0KTsKLSAgICAgIGlmKG0gPT0gMCkKLSAgICAgIHsKLSAgICAgICAgIGlmKGNoYXJfc2V0LmVtcHR5KCkgJiYgKG5hbWVfbGFzdCAtIG5hbWVfZmlyc3QgPT0gMSkpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBtYXliZSBhIHNwZWNpYWwgY2FzZToKLSAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGlmKCAobV9wb3NpdGlvbiAhPSBtX2VuZCkgCi0gICAgICAgICAgICAgICAmJiAodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pIAotICAgICAgICAgICAgICAgICAgPT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2xvc2Vfc2V0KSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGlmKHRoaXMtPm1fdHJhaXRzLmVzY2FwZV9zeW50YXhfdHlwZSgqbmFtZV9maXJzdCkgCi0gICAgICAgICAgICAgICAgICA9PSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX2xlZnRfd29yZCkKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgICAgICAgICAgIHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF93b3JkX3N0YXJ0KTsKLSAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgIGlmKHRoaXMtPm1fdHJhaXRzLmVzY2FwZV9zeW50YXhfdHlwZSgqbmFtZV9maXJzdCkgCi0gICAgICAgICAgICAgICAgICA9PSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX3JpZ2h0X3dvcmQpCi0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICAgICAgICAgICB0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfd29yZF9lbmQpOwotICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgfQotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2N0eXBlLCBuYW1lX2ZpcnN0IC0gbV9iYXNlKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIGlmKG5lZ2F0ZWQgPT0gZmFsc2UpCi0gICAgICAgICBjaGFyX3NldC5hZGRfY2xhc3MobSk7Ci0gICAgICBlbHNlCi0gICAgICAgICBjaGFyX3NldC5hZGRfbmVnYXRlZF9jbGFzcyhtKTsKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIGJyZWFrOwotICAgfQotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9lcXVhbDoKLSAgICAgIHsKLSAgICAgIC8vIHNraXAgdGhlICc9JwotICAgICAgaWYobV9lbmQgPT0gKyttX3Bvc2l0aW9uKQotICAgICAgewotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JyYWNrLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCBpbmNvbXBsZXRlX21lc3NhZ2UpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgY29uc3QgY2hhclQqIG5hbWVfZmlyc3QgPSBtX3Bvc2l0aW9uOwotICAgICAgLy8gc2tpcCBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCB0aGVuIGZpbmQgdGhlIG1hdGNoaW5nICc9XScKLSAgICAgIGlmKG1fZW5kID09ICsrbV9wb3NpdGlvbikKLSAgICAgIHsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9icmFjaywgbV9wb3NpdGlvbiAtIG1fYmFzZSwgaW5jb21wbGV0ZV9tZXNzYWdlKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIHdoaWxlKChtX3Bvc2l0aW9uICE9IG1fZW5kKSAKLSAgICAgICAgICYmICh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZXF1YWwpKSAKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIGNvbnN0IGNoYXJUKiBuYW1lX2xhc3QgPSBtX3Bvc2l0aW9uOwotICAgICAgaWYobV9lbmQgPT0gbV9wb3NpdGlvbikKLSAgICAgIHsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9icmFjaywgbV9wb3NpdGlvbiAtIG1fYmFzZSwgaW5jb21wbGV0ZV9tZXNzYWdlKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIGlmKChtX2VuZCA9PSArK21fcG9zaXRpb24pIAotICAgICAgICAgfHwgKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9zZXQpKQotICAgICAgewotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JyYWNrLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCBpbmNvbXBsZXRlX21lc3NhZ2UpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgc3RyaW5nX3R5cGUgbSA9IHRoaXMtPm1fdHJhaXRzLmxvb2t1cF9jb2xsYXRlbmFtZShuYW1lX2ZpcnN0LCBuYW1lX2xhc3QpOwotICAgICAgaWYoKDAgPT0gbS5zaXplKCkpIHx8IChtLnNpemUoKSA+IDIpKQotICAgICAgewotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2NvbGxhdGUsIG5hbWVfZmlyc3QgLSBtX2Jhc2UpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgZGlncmFwaDxjaGFyVD4gZDsKLSAgICAgIGQuZmlyc3QgPSBtWzBdOwotICAgICAgaWYobS5zaXplKCkgPiAxKQotICAgICAgICAgZC5zZWNvbmQgPSBtWzFdOwotICAgICAgZWxzZQotICAgICAgICAgZC5zZWNvbmQgPSAwOwotICAgICAgY2hhcl9zZXQuYWRkX2VxdWl2YWxlbnQoZCk7Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICBicmVhazsKLSAgIH0KLSAgIGRlZmF1bHQ6Ci0gICAgICAtLW1fcG9zaXRpb247Ci0gICAgICBwYXJzZV9zZXRfbGl0ZXJhbChjaGFyX3NldCk7Ci0gICAgICBicmVhazsKLSAgIH0KLSAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLXZvaWQgYmFzaWNfcmVnZXhfcGFyc2VyPGNoYXJULCB0cmFpdHM+OjpwYXJzZV9zZXRfbGl0ZXJhbChiYXNpY19jaGFyX3NldDxjaGFyVCwgdHJhaXRzPiYgY2hhcl9zZXQpCi17Ci0gICBkaWdyYXBoPGNoYXJUPiBzdGFydF9yYW5nZShnZXRfbmV4dF9zZXRfbGl0ZXJhbChjaGFyX3NldCkpOwotICAgaWYobV9lbmQgPT0gbV9wb3NpdGlvbikKLSAgIHsKLSAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9icmFjaywgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICByZXR1cm47Ci0gICB9Ci0gICBpZih0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgPT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZGFzaCkKLSAgIHsKLSAgICAgIC8vIHdlIGhhdmUgYSByYW5nZToKLSAgICAgIGlmKG1fZW5kID09ICsrbV9wb3NpdGlvbikKLSAgICAgIHsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9icmFjaywgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICByZXR1cm47Ci0gICAgICB9Ci0gICAgICBpZih0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2xvc2Vfc2V0KQotICAgICAgewotICAgICAgICAgZGlncmFwaDxjaGFyVD4gZW5kX3JhbmdlID0gZ2V0X25leHRfc2V0X2xpdGVyYWwoY2hhcl9zZXQpOwotICAgICAgICAgY2hhcl9zZXQuYWRkX3JhbmdlKHN0YXJ0X3JhbmdlLCBlbmRfcmFuZ2UpOwotICAgICAgICAgaWYodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pID09IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Rhc2gpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBpZihtX2VuZCA9PSArK21fcG9zaXRpb24pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYnJhY2ssIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pID09IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Nsb3NlX3NldCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIC8vIHRyYWlsaW5nIC0gOgotICAgICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3JhbmdlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgIH0KLSAgICAgICAgIHJldHVybjsKLSAgICAgIH0KLSAgICAgIC0tbV9wb3NpdGlvbjsKLSAgIH0KLSAgIGNoYXJfc2V0LmFkZF9zaW5nbGUoc3RhcnRfcmFuZ2UpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWRpZ3JhcGg8Y2hhclQ+IGJhc2ljX3JlZ2V4X3BhcnNlcjxjaGFyVCwgdHJhaXRzPjo6Z2V0X25leHRfc2V0X2xpdGVyYWwoYmFzaWNfY2hhcl9zZXQ8Y2hhclQsIHRyYWl0cz4mIGNoYXJfc2V0KQotewotICAgZGlncmFwaDxjaGFyVD4gcmVzdWx0OwotICAgc3dpdGNoKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSkKLSAgIHsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZGFzaDoKLSAgICAgIGlmKCFjaGFyX3NldC5lbXB0eSgpKQotICAgICAgewotICAgICAgICAgLy8gc2VlIGlmIHdlIGFyZSBhdCB0aGUgZW5kIG9mIHRoZSBzZXQ6Ci0gICAgICAgICBpZigoKyttX3Bvc2l0aW9uID09IG1fZW5kKSB8fCAodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Nsb3NlX3NldCkpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcmFuZ2UsIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgIH0KLSAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgIH0KLSAgICAgIHJlc3VsdC5maXJzdCA9ICptX3Bvc2l0aW9uKys7Ci0gICAgICByZXR1cm4gcmVzdWx0OwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9lc2NhcGU6Ci0gICAgICAvLyBjaGVjayB0byBzZWUgaWYgZXNjYXBlcyBhcmUgc3VwcG9ydGVkIGZpcnN0OgotICAgICAgaWYodGhpcy0+ZmxhZ3MoKSAmIHJlZ2V4X2NvbnN0YW50czo6bm9fZXNjYXBlX2luX2xpc3RzKQotICAgICAgewotICAgICAgICAgcmVzdWx0ID0gKm1fcG9zaXRpb24rKzsKLSAgICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgcmVzdWx0ID0gdW5lc2NhcGVfY2hhcmFjdGVyKCk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9zZXQ6Ci0gICB7Ci0gICAgICBpZihtX2VuZCA9PSArK21fcG9zaXRpb24pCi0gICAgICB7Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfY29sbGF0ZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgfQotICAgICAgaWYodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2RvdCkKLSAgICAgIHsKLSAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIHJlc3VsdC5maXJzdCA9ICptX3Bvc2l0aW9uOwotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgIH0KLSAgICAgIGlmKG1fZW5kID09ICsrbV9wb3NpdGlvbikKLSAgICAgIHsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9jb2xsYXRlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICB9Ci0gICAgICBjb25zdCBjaGFyVCogbmFtZV9maXJzdCA9IG1fcG9zaXRpb247Ci0gICAgICAvLyBza2lwIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIHRoZW4gZmluZCB0aGUgbWF0Y2hpbmcgJzpdJwotICAgICAgaWYobV9lbmQgPT0gKyttX3Bvc2l0aW9uKQotICAgICAgewotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2NvbGxhdGUsIG5hbWVfZmlyc3QgLSBtX2Jhc2UpOwotICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgIH0KLSAgICAgIHdoaWxlKChtX3Bvc2l0aW9uICE9IG1fZW5kKSAKLSAgICAgICAgICYmICh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZG90KSkgCi0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICBjb25zdCBjaGFyVCogbmFtZV9sYXN0ID0gbV9wb3NpdGlvbjsKLSAgICAgIGlmKG1fZW5kID09IG1fcG9zaXRpb24pCi0gICAgICB7Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfY29sbGF0ZSwgbmFtZV9maXJzdCAtIG1fYmFzZSk7Ci0gICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgfQotICAgICAgaWYoKG1fZW5kID09ICsrbV9wb3NpdGlvbikgCi0gICAgICAgICB8fCAodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Nsb3NlX3NldCkpCi0gICAgICB7Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfY29sbGF0ZSwgbmFtZV9maXJzdCAtIG1fYmFzZSk7Ci0gICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgfQotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgc3RyaW5nX3R5cGUgcyA9IHRoaXMtPm1fdHJhaXRzLmxvb2t1cF9jb2xsYXRlbmFtZShuYW1lX2ZpcnN0LCBuYW1lX2xhc3QpOwotICAgICAgaWYocy5lbXB0eSgpIHx8IChzLnNpemUoKSA+IDIpKQotICAgICAgewotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2NvbGxhdGUsIG5hbWVfZmlyc3QgLSBtX2Jhc2UpOwotICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgIH0KLSAgICAgIHJlc3VsdC5maXJzdCA9IHNbMF07Ci0gICAgICBpZihzLnNpemUoKSA+IDEpCi0gICAgICAgICByZXN1bHQuc2Vjb25kID0gc1sxXTsKLSAgICAgIGVsc2UKLSAgICAgICAgIHJlc3VsdC5zZWNvbmQgPSAwOwotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgIH0KLSAgIGRlZmF1bHQ6Ci0gICAgICByZXN1bHQgPSAqbV9wb3NpdGlvbisrOwotICAgfQotICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLy8KLS8vIGRvZXMgYSB2YWx1ZSBmaXQgaW4gdGhlIHNwZWNpZmllZCBjaGFyVCB0eXBlPwotLy8KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLWJvb2wgdmFsaWRfdmFsdWUoY2hhclQsIGludCB2LCBjb25zdCBtcGw6OnRydWVfJikKLXsKLSAgIHJldHVybiAodiA+PiAoc2l6ZW9mKGNoYXJUKSAqIENIQVJfQklUKSkgPT0gMDsKLX0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLWJvb2wgdmFsaWRfdmFsdWUoY2hhclQsIGludCwgY29uc3QgbXBsOjpmYWxzZV8mKQotewotICAgcmV0dXJuIHRydWU7IC8vIHYgd2lsbCBhbHN3YXlzIGZpdCBpbiBhIGNoYXJUCi19Ci10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1ib29sIHZhbGlkX3ZhbHVlKGNoYXJUIGMsIGludCB2KQotewotICAgcmV0dXJuIHZhbGlkX3ZhbHVlKGMsIHYsIG1wbDo6Ym9vbF88KHNpemVvZihjaGFyVCkgPCBzaXplb2YoaW50KSk+KCkpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWNoYXJUIGJhc2ljX3JlZ2V4X3BhcnNlcjxjaGFyVCwgdHJhaXRzPjo6dW5lc2NhcGVfY2hhcmFjdGVyKCkKLXsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMjcpCi0jZW5kaWYKLSAgIGNoYXJUIHJlc3VsdCgwKTsKLSAgIGlmKG1fcG9zaXRpb24gPT0gbV9lbmQpCi0gICB7Ci0gICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfZXNjYXBlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCAiRXNjYXBlIHNlcXVlbmNlIHRlcm1pbmF0ZWQgcHJlbWF0dXJlbHkuIik7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0gICBzd2l0Y2godGhpcy0+bV90cmFpdHMuZXNjYXBlX3N5bnRheF90eXBlKCptX3Bvc2l0aW9uKSkKLSAgIHsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9jb250cm9sX2E6Ci0gICAgICByZXN1bHQgPSBjaGFyVCgnXGEnKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX2U6Ci0gICAgICByZXN1bHQgPSBjaGFyVCgyNyk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9jb250cm9sX2Y6Ci0gICAgICByZXN1bHQgPSBjaGFyVCgnXGYnKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX2NvbnRyb2xfbjoKLSAgICAgIHJlc3VsdCA9IGNoYXJUKCdcbicpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfY29udHJvbF9yOgotICAgICAgcmVzdWx0ID0gY2hhclQoJ1xyJyk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9jb250cm9sX3Q6Ci0gICAgICByZXN1bHQgPSBjaGFyVCgnXHQnKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX2NvbnRyb2xfdjoKLSAgICAgIHJlc3VsdCA9IGNoYXJUKCdcdicpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfd29yZF9hc3NlcnQ6Ci0gICAgICByZXN1bHQgPSBjaGFyVCgnXGInKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX2FzY2lpX2NvbnRyb2w6Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICBpZihtX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgewotICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mIGVzY2FwZToKLSAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9lc2NhcGUpIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9lc2NhcGUsIG1fcG9zaXRpb24gLSBtX2Jhc2UsICJBU0NJSSBlc2NhcGUgc2VxdWVuY2UgdGVybWluYXRlZCBwcmVtYXR1cmVseS4iKTsKLSAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICB9Ci0gICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxjaGFyVD4oKm1fcG9zaXRpb24gJSAzMik7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9oZXg6Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICBpZihtX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgewotICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mIGVzY2FwZToKLSAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9lc2NhcGUpIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9lc2NhcGUsIG1fcG9zaXRpb24gLSBtX2Jhc2UsICJIZXhhZGVjaW1hbCBlc2NhcGUgc2VxdWVuY2UgdGVybWluYXRlZCBwcmVtYXR1cmVseS4iKTsKLSAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICB9Ci0gICAgICAvLyBtYXliZSBoYXZlIFx4e2RkZH0KLSAgICAgIGlmKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSA9PSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX2JyYWNlKQotICAgICAgewotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgaWYobV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiBlc2NhcGU6Ci0gICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZXNjYXBlKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfZXNjYXBlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCAiTWlzc2luZyB9IGluIGhleGFkZWNpbWFsIGVzY2FwZSBzZXF1ZW5jZS4iKTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgICB9Ci0gICAgICAgICBpbnQgaSA9IHRoaXMtPm1fdHJhaXRzLnRvaShtX3Bvc2l0aW9uLCBtX2VuZCwgMTYpOwotICAgICAgICAgaWYoKG1fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICAgICAgICB8fCAoaSA8IDApCi0gICAgICAgICAgICB8fCAoKHN0ZDo6bnVtZXJpY19saW1pdHM8Y2hhclQ+Ojppc19zcGVjaWFsaXplZCkgJiYgKGkgPiAoaW50KShzdGQ6Om51bWVyaWNfbGltaXRzPGNoYXJUPjo6bWF4KSgpKSkKLSAgICAgICAgICAgIHx8ICh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2xvc2VfYnJhY2UpKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mIGVzY2FwZToKLSAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9lc2NhcGUpIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9iYWRicmFjZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSwgIkhleGFkZWNpbWFsIGVzY2FwZSBzZXF1ZW5jZSB3YXMgaW52YWxpZC4iKTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgICB9Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICByZXN1bHQgPSBjaGFyVChpKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgIHN0ZDo6cHRyZGlmZl90IGxlbiA9IChzdGQ6Om1pbikoc3RhdGljX2Nhc3Q8c3RkOjpwdHJkaWZmX3Q+KDIpLCBzdGF0aWNfY2FzdDxzdGQ6OnB0cmRpZmZfdD4obV9lbmQgLSBtX3Bvc2l0aW9uKSk7Ci0gICAgICAgICBpbnQgaSA9IHRoaXMtPm1fdHJhaXRzLnRvaShtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uICsgbGVuLCAxNik7Ci0gICAgICAgICBpZigoaSA8IDApCi0gICAgICAgICAgICB8fCAhdmFsaWRfdmFsdWUoY2hhclQoMCksIGkpKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mIGVzY2FwZToKLSAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9lc2NhcGUpIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9lc2NhcGUsIG1fcG9zaXRpb24gLSBtX2Jhc2UsICJFc2NhcGUgc2VxdWVuY2UgZGlkIG5vdCBlbmNvZGUgYSB2YWxpZCBjaGFyYWN0ZXIuIik7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICAgfQotICAgICAgICAgcmVzdWx0ID0gY2hhclQoaSk7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gcmVzdWx0OwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9kaWdpdDoKLSAgICAgIHsKLSAgICAgIC8vIGFuIG9jdGFsIGVzY2FwZSBzZXF1ZW5jZSwgdGhlIGZpcnN0IGNoYXJhY3RlciBtdXN0IGJlIGEgemVybwotICAgICAgLy8gZm9sbG93ZWQgYnkgdXAgdG8gMyBvY3RhbCBkaWdpdHM6Ci0gICAgICBzdGQ6OnB0cmRpZmZfdCBsZW4gPSAoc3RkOjptaW4pKDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2UobV9wb3NpdGlvbiwgbV9lbmQpLCBzdGF0aWNfY2FzdDxzdGQ6OnB0cmRpZmZfdD4oNCkpOwotICAgICAgY29uc3QgY2hhclQqIGJwID0gbV9wb3NpdGlvbjsKLSAgICAgIGludCB2YWwgPSB0aGlzLT5tX3RyYWl0cy50b2koYnAsIGJwICsgMSwgOCk7Ci0gICAgICBpZih2YWwgIT0gMCkKLSAgICAgIHsKLSAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiBlc2NhcGU6Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZXNjYXBlKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAvLyBPb3BzIG5vdCBhbiBvY3RhbCBlc2NhcGUgYWZ0ZXIgYWxsOgotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2VzY2FwZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSwgIkludmFsaWQgb2N0YWwgZXNjYXBlIHNlcXVlbmNlLiIpOwotICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgIH0KLSAgICAgIHZhbCA9IHRoaXMtPm1fdHJhaXRzLnRvaShtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uICsgbGVuLCA4KTsKLSAgICAgIGlmKHZhbCA8IDApIAotICAgICAgewotICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mIGVzY2FwZToKLSAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9lc2NhcGUpIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9lc2NhcGUsIG1fcG9zaXRpb24gLSBtX2Jhc2UsICJPY3RhbCBlc2NhcGUgc2VxdWVuY2UgaXMgaW52YWxpZC4iKTsKLSAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhclQ+KHZhbCk7Ci0gICAgICB9Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfbmFtZWRfY2hhcjoKLSAgICAgIHsKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIGlmKG1fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgZXNjYXBlOgotICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2VzY2FwZSkgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2VzY2FwZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICAgICAvLyBtYXliZSBoYXZlIFxOe25hbWV9Ci0gICAgICAgICBpZih0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgPT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9icmFjZSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IGNoYXJUKiBiYXNlID0gbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIC8vIHNraXAgZm9yd2FyZCB1bnRpbCB3ZSBmaW5kIGVuY2xvc2luZyBicmFjZToKLSAgICAgICAgICAgIHdoaWxlKChtX3Bvc2l0aW9uICE9IG1fZW5kKSAmJiAodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Nsb3NlX2JyYWNlKSkKLSAgICAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGlmKG1fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgZXNjYXBlOgotICAgICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2VzY2FwZSkgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2VzY2FwZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdHJpbmdfdHlwZSBzID0gdGhpcy0+bV90cmFpdHMubG9va3VwX2NvbGxhdGVuYW1lKCsrYmFzZSwgbV9wb3NpdGlvbisrKTsKLSAgICAgICAgICAgIGlmKHMuZW1wdHkoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiBlc2NhcGU6Ci0gICAgICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZXNjYXBlKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfY29sbGF0ZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZihzLnNpemUoKSA9PSAxKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgcmV0dXJuIHNbMF07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgICAgICAvLyBmYWxsIHRocm91Z2ggaXMgYSBmYWlsdXJlOgotICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mIGVzY2FwZToKLSAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9lc2NhcGUpIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9lc2NhcGUsIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgZGVmYXVsdDoKLSAgICAgIHJlc3VsdCA9ICptX3Bvc2l0aW9uOwotICAgICAgYnJlYWs7Ci0gICB9Ci0gICArK21fcG9zaXRpb247Ci0gICByZXR1cm4gcmVzdWx0OwotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1ib29sIGJhc2ljX3JlZ2V4X3BhcnNlcjxjaGFyVCwgdHJhaXRzPjo6cGFyc2VfYmFja3JlZigpCi17Ci0gICBORE5CT09TVF9BU1NFUlQobV9wb3NpdGlvbiAhPSBtX2VuZCk7Ci0gICBjb25zdCBjaGFyVCogcGMgPSBtX3Bvc2l0aW9uOwotICAgaW50IGkgPSB0aGlzLT5tX3RyYWl0cy50b2kocGMsIHBjICsgMSwgMTApOwotICAgaWYoKGkgPT0gMCkgfHwgKCgodGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6Om1haW5fb3B0aW9uX3R5cGUpID09IHJlZ2Jhc2U6OnBlcmxfc3ludGF4X2dyb3VwKSAmJiAodGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6Om5vX2JrX3JlZnMpKSkKLSAgIHsKLSAgICAgIC8vIG5vdCBhIGJhY2tyZWYgYXQgYWxsIGJ1dCBhbiBvY3RhbCBlc2NhcGUgc2VxdWVuY2U6Ci0gICAgICBjaGFyVCBjID0gdW5lc2NhcGVfY2hhcmFjdGVyKCk7Ci0gICAgICB0aGlzLT5hcHBlbmRfbGl0ZXJhbChjKTsKLSAgIH0KLSAgIGVsc2UgaWYoKGkgPiAwKSAmJiAodGhpcy0+bV9iYWNrcmVmcyAmICgxdSA8PCAoaS0xKSkpKQotICAgewotICAgICAgbV9wb3NpdGlvbiA9IHBjOwotICAgICAgcmVfYnJhY2UqIHBiID0gc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPih0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfYmFja3JlZiwgc2l6ZW9mKHJlX2JyYWNlKSkpOwotICAgICAgcGItPmluZGV4ID0gaTsKLSAgICAgIHBiLT5pY2FzZSA9IHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjppY2FzZTsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiBlc2NhcGU6Ci0gICAgICAtLW1fcG9zaXRpb247Ci0gICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZXNjYXBlKSAtLW1fcG9zaXRpb247Ci0gICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYmFja3JlZiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1ib29sIGJhc2ljX3JlZ2V4X3BhcnNlcjxjaGFyVCwgdHJhaXRzPjo6cGFyc2VfUUUoKQotewotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEyNykKLSNlbmRpZgotICAgLy8KLSAgIC8vIHBhcnNlIGEgXFEuLi5cRSBzZXF1ZW5jZToKLSAgIC8vCi0gICArK21fcG9zaXRpb247IC8vIHNraXAgdGhlIFEKLSAgIGNvbnN0IGNoYXJUKiBzdGFydCA9IG1fcG9zaXRpb247Ci0gICBjb25zdCBjaGFyVCogZW5kOwotICAgZG8KLSAgIHsKLSAgICAgIHdoaWxlKChtX3Bvc2l0aW9uICE9IG1fZW5kKSAKLSAgICAgICAgICYmICh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZXNjYXBlKSkKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIGlmKG1fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICB7Ci0gICAgICAgICAvLyAgYSBcUS4uLlxFIHNlcXVlbmNlIG1heSB0ZXJtaW5hdGUgd2l0aCB0aGUgZW5kIG9mIHRoZSBleHByZXNzaW9uOgotICAgICAgICAgZW5kID0gbV9wb3NpdGlvbjsKLSAgICAgICAgIGJyZWFrOyAgCi0gICAgICB9Ci0gICAgICBpZigrK21fcG9zaXRpb24gPT0gbV9lbmQpIC8vIHNraXAgdGhlIGVzY2FwZQotICAgICAgewotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2VzY2FwZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSwgIlVudGVybWluYXRlZCBcXFEuLi5cXEUgc2VxdWVuY2UuIik7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICAvLyBjaGVjayB0byBzZWUgaWYgaXQncyBhIFxFOgotICAgICAgaWYodGhpcy0+bV90cmFpdHMuZXNjYXBlX3N5bnRheF90eXBlKCptX3Bvc2l0aW9uKSA9PSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX0UpCi0gICAgICB7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICBlbmQgPSBtX3Bvc2l0aW9uIC0gMjsKLSAgICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgLy8gb3RoZXJ3aXNlIGdvIHJvdW5kIGFnYWluOgotICAgfXdoaWxlKHRydWUpOwotICAgLy8KLSAgIC8vIG5vdyBhZGQgYWxsIHRoZSBjaGFyYWN0ZXIgYmV0d2VlbiB0aGUgdHdvIGVzY2FwZXMgYXMgbGl0ZXJhbHM6Ci0gICAvLwotICAgd2hpbGUoc3RhcnQgIT0gZW5kKQotICAgewotICAgICAgdGhpcy0+YXBwZW5kX2xpdGVyYWwoKnN0YXJ0KTsKLSAgICAgICsrc3RhcnQ7Ci0gICB9Ci0gICByZXR1cm4gdHJ1ZTsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotYm9vbCBiYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz46OnBhcnNlX3BlcmxfZXh0ZW5zaW9uKCkKLXsKLSAgIGlmKCsrbV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgIHsKLSAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0gICAvLwotICAgLy8gdHJlYXQgY29tbWVudHMgYXMgYSBzcGVjaWFsIGNhc2UsIGFzIHRoZXNlCi0gICAvLyBhcmUgdGhlIG9ubHkgb25lcyB0aGF0IGRvbid0IHN0YXJ0IHdpdGggYSBsZWFkaW5nCi0gICAvLyBzdGFydG1hcmsgc3RhdGU6Ci0gICAvLwotICAgaWYodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pID09IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2hhc2gpCi0gICB7Ci0gICAgICB3aGlsZSgobV9wb3NpdGlvbiAhPSBtX2VuZCkgCi0gICAgICAgICAmJiAodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24rKykgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2xvc2VfbWFyaykpCi0gICAgICB7fSAgICAgIAotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICAvLwotICAgLy8gYmFja3VwIHNvbWUgc3RhdGUsIGFuZCBwcmVwYXJlIHRoZSB3YXk6Ci0gICAvLwotICAgaW50IG1hcmtpZCA9IDA7Ci0gICBzdGQ6OnB0cmRpZmZfdCBqdW1wX29mZnNldCA9IDA7Ci0gICByZV9icmFjZSogcGIgPSBzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9zdGFydG1hcmssIHNpemVvZihyZV9icmFjZSkpKTsKLSAgIHBiLT5pY2FzZSA9IHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjppY2FzZTsKLSAgIHN0ZDo6cHRyZGlmZl90IGxhc3RfcGFyZW5fc3RhcnQgPSB0aGlzLT5nZXRvZmZzZXQocGIpOwotICAgLy8gYmFjayB1cCBpbnNlcnRpb24gcG9pbnQgZm9yIGFsdGVybmF0aW9ucywgYW5kIHNldCBuZXcgcG9pbnQ6Ci0gICBzdGQ6OnB0cmRpZmZfdCBsYXN0X2FsdF9wb2ludCA9IG1fYWx0X2luc2VydF9wb2ludDsKLSAgIHRoaXMtPm1fcGRhdGEtPm1fZGF0YS5hbGlnbigpOwotICAgbV9hbHRfaW5zZXJ0X3BvaW50ID0gdGhpcy0+bV9wZGF0YS0+bV9kYXRhLnNpemUoKTsKLSAgIHN0ZDo6cHRyZGlmZl90IGV4cGVjdGVkX2FsdF9wb2ludCA9IG1fYWx0X2luc2VydF9wb2ludDsKLSAgIGJvb2wgcmVzdG9yZV9mbGFncyA9IHRydWU7Ci0gICByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcHRpb25fdHlwZSBvbGRfZmxhZ3MgPSB0aGlzLT5mbGFncygpOwotICAgYm9vbCBvbGRfY2FzZV9jaGFuZ2UgPSBtX2hhc19jYXNlX2NoYW5nZTsKLSAgIG1faGFzX2Nhc2VfY2hhbmdlID0gZmFsc2U7Ci0gICBjaGFyVCBuYW1lX2RlbGltOwotICAgaW50IG1hcmtfcmVzZXQgPSBtX21hcmtfcmVzZXQ7Ci0gICBpbnQgbWF4X21hcmsgPSBtX21heF9tYXJrOwotICAgbV9tYXJrX3Jlc2V0ID0gLTE7Ci0gICBtX21heF9tYXJrID0gbV9tYXJrX2NvdW50OwotICAgaW50IHY7Ci0gICAvLwotICAgLy8gc2VsZWN0IHRoZSBhY3R1YWwgZXh0ZW5zaW9uIHVzZWQ6Ci0gICAvLwotICAgc3dpdGNoKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSkKLSAgIHsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3I6Ci0gICAgICBtX21hcmtfcmVzZXQgPSBtX21hcmtfY291bnQ7Ci0gICAgICBORE5CT09TVF9GQUxMVEhST1VHSDsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY29sb246Ci0gICAgICAvLwotICAgICAgLy8gYSBub24tY2FwdHVyaW5nIG1hcms6Ci0gICAgICAvLwotICAgICAgcGItPmluZGV4ID0gbWFya2lkID0gMDsKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9kaWdpdDoKLSAgICAgIHsKLSAgICAgIC8vCi0gICAgICAvLyBhIHJlY3Vyc2l2ZSBzdWJleHByZXNzaW9uOgotICAgICAgLy8KLSAgICAgIHYgPSB0aGlzLT5tX3RyYWl0cy50b2kobV9wb3NpdGlvbiwgbV9lbmQsIDEwKTsKLSAgICAgIGlmKCh2IDwgMCkgfHwgKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9tYXJrKSkKLSAgICAgIHsKLSAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSwgIlRoZSByZWN1cnNpdmUgc3ViLWV4cHJlc3Npb24gcmVmZXJzIHRvIGFuIGludmFsaWQgbWFya2luZyBncm91cCwgb3IgaXMgdW50ZXJtaW5hdGVkLiIpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotaW5zZXJ0X3JlY3Vyc2lvbjoKLSAgICAgIHBiLT5pbmRleCA9IG1hcmtpZCA9IDA7Ci0gICAgICByZV9yZWN1cnNlKiBwciA9IHN0YXRpY19jYXN0PHJlX3JlY3Vyc2UqPih0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfcmVjdXJzZSwgc2l6ZW9mKHJlX3JlY3Vyc2UpKSk7Ci0gICAgICBwci0+YWx0LmkgPSB2OwotICAgICAgcHItPnN0YXRlX2lkID0gMDsKLSAgICAgIHN0YXRpY19jYXN0PHJlX2Nhc2UqPigKLSAgICAgICAgICAgIHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF90b2dnbGVfY2FzZSwgc2l6ZW9mKHJlX2Nhc2UpKQotICAgICAgICAgICAgKS0+aWNhc2UgPSB0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6aWNhc2U7Ci0gICAgICBicmVhazsKLSAgICAgIH0KLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfcGx1czoKLSAgICAgIC8vCi0gICAgICAvLyBBIGZvcndhcmQtcmVsYXRpdmUgcmVjdXJzaXZlIHN1YmV4cHJlc3Npb246Ci0gICAgICAvLwotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgdiA9IHRoaXMtPm1fdHJhaXRzLnRvaShtX3Bvc2l0aW9uLCBtX2VuZCwgMTApOwotICAgICAgaWYoKHYgPD0gMCkgfHwgKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9tYXJrKSkKLSAgICAgIHsKLSAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSwgIkFuIGludmFsaWQgb3IgdW50ZXJtaW5hdGVkIHJlY3Vyc2l2ZSBzdWItZXhwcmVzc2lvbi4iKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIHYgKz0gbV9tYXJrX2NvdW50OwotICAgICAgZ290byBpbnNlcnRfcmVjdXJzaW9uOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9kYXNoOgotICAgICAgLy8KLSAgICAgIC8vIFBvc3NpYmx5IGEgYmFja3dhcmQtcmVsYXRpdmUgcmVjdXJzaXZlIHN1YmV4cHJlc3Npb246Ci0gICAgICAvLwotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgdiA9IHRoaXMtPm1fdHJhaXRzLnRvaShtX3Bvc2l0aW9uLCBtX2VuZCwgMTApOwotICAgICAgaWYodiA8PSAwKQotICAgICAgewotICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgLy8gT29wcyBub3QgYSByZWxhdGl2ZSByZWN1cnNpb24gYXQgYWxsLCBidXQgYSAoPy1pbXN4KSBncm91cDoKLSAgICAgICAgIGdvdG8gb3B0aW9uX2dyb3VwX2p1bXA7Ci0gICAgICB9Ci0gICAgICB2ID0gbV9tYXJrX2NvdW50ICsgMSAtIHY7Ci0gICAgICBpZih2IDw9IDApCi0gICAgICB7Ci0gICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UsICJBbiBpbnZhbGlkIG9yIHVudGVybWluYXRlZCByZWN1cnNpdmUgc3ViLWV4cHJlc3Npb24uIik7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICBnb3RvIGluc2VydF9yZWN1cnNpb247Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2VxdWFsOgotICAgICAgcGItPmluZGV4ID0gbWFya2lkID0gLTE7Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICBqdW1wX29mZnNldCA9IHRoaXMtPmdldG9mZnNldCh0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfanVtcCwgc2l6ZW9mKHJlX2p1bXApKSk7Ci0gICAgICB0aGlzLT5tX3BkYXRhLT5tX2RhdGEuYWxpZ24oKTsKLSAgICAgIG1fYWx0X2luc2VydF9wb2ludCA9IHRoaXMtPm1fcGRhdGEtPm1fZGF0YS5zaXplKCk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfbm90OgotICAgICAgcGItPmluZGV4ID0gbWFya2lkID0gLTI7Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICBqdW1wX29mZnNldCA9IHRoaXMtPmdldG9mZnNldCh0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfanVtcCwgc2l6ZW9mKHJlX2p1bXApKSk7Ci0gICAgICB0aGlzLT5tX3BkYXRhLT5tX2RhdGEuYWxpZ24oKTsKLSAgICAgIG1fYWx0X2luc2VydF9wb2ludCA9IHRoaXMtPm1fcGRhdGEtPm1fZGF0YS5zaXplKCk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9sZWZ0X3dvcmQ6Ci0gICAgICB7Ci0gICAgICAgICAvLyBhIGxvb2tiZWhpbmQgYXNzZXJ0aW9uOgotICAgICAgICAgaWYoKyttX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgICAgIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3R5cGUgdCA9IHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKTsKLSAgICAgICAgIGlmKHQgPT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfbm90KQotICAgICAgICAgICAgcGItPmluZGV4ID0gbWFya2lkID0gLTI7Ci0gICAgICAgICBlbHNlIGlmKHQgPT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZXF1YWwpCi0gICAgICAgICAgICBwYi0+aW5kZXggPSBtYXJraWQgPSAtMTsKLSAgICAgICAgIGVsc2UKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFByb2JhYmx5IGEgbmFtZWQgY2FwdHVyZSB3aGljaCBhbHNvIHN0YXJ0cyAoPzwgOgotICAgICAgICAgICAgbmFtZV9kZWxpbSA9ICc+JzsKLSAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGdvdG8gbmFtZWRfY2FwdHVyZV9qdW1wOwotICAgICAgICAgfQotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAganVtcF9vZmZzZXQgPSB0aGlzLT5nZXRvZmZzZXQodGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X2p1bXAsIHNpemVvZihyZV9qdW1wKSkpOwotICAgICAgICAgdGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X2JhY2tzdGVwLCBzaXplb2YocmVfYnJhY2UpKTsKLSAgICAgICAgIHRoaXMtPm1fcGRhdGEtPm1fZGF0YS5hbGlnbigpOwotICAgICAgICAgbV9hbHRfaW5zZXJ0X3BvaW50ID0gdGhpcy0+bV9wZGF0YS0+bV9kYXRhLnNpemUoKTsKLSAgICAgICAgIGJyZWFrOwotICAgICAgfQotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX3JpZ2h0X3dvcmQ6Ci0gICAgICAvLwotICAgICAgLy8gYW4gaW5kZXBlbmRlbnQgc3ViLWV4cHJlc3Npb246Ci0gICAgICAvLwotICAgICAgcGItPmluZGV4ID0gbWFya2lkID0gLTM7Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICBqdW1wX29mZnNldCA9IHRoaXMtPmdldG9mZnNldCh0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfanVtcCwgc2l6ZW9mKHJlX2p1bXApKSk7Ci0gICAgICB0aGlzLT5tX3BkYXRhLT5tX2RhdGEuYWxpZ24oKTsKLSAgICAgIG1fYWx0X2luc2VydF9wb2ludCA9IHRoaXMtPm1fcGRhdGEtPm1fZGF0YS5zaXplKCk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrOgotICAgICAgewotICAgICAgLy8gYSBjb25kaXRpb25hbCBleHByZXNzaW9uOgotICAgICAgcGItPmluZGV4ID0gbWFya2lkID0gLTQ7Ci0gICAgICBpZigrK21fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICB7Ci0gICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgdiA9IHRoaXMtPm1fdHJhaXRzLnRvaShtX3Bvc2l0aW9uLCBtX2VuZCwgMTApOwotICAgICAgaWYobV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgIHsKLSAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICBpZigqbV9wb3NpdGlvbiA9PSBjaGFyVCgnUicpKQotICAgICAgewotICAgICAgICAgaWYoKyttX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgICAgIGlmKCptX3Bvc2l0aW9uID09IGNoYXJUKCcmJykpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBjaGFyVCogYmFzZSA9ICsrbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHdoaWxlKChtX3Bvc2l0aW9uICE9IG1fZW5kKSAmJiAodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Nsb3NlX21hcmspKQotICAgICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgICAgaWYobV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2ID0gLXN0YXRpY19jYXN0PGludD4oaGFzaF92YWx1ZV9mcm9tX2NhcHR1cmVfbmFtZShiYXNlLCBtX3Bvc2l0aW9uKSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBlbHNlCi0gICAgICAgICB7Ci0gICAgICAgICAgICB2ID0gLXRoaXMtPm1fdHJhaXRzLnRvaShtX3Bvc2l0aW9uLCBtX2VuZCwgMTApOwotICAgICAgICAgfQotICAgICAgICAgcmVfYnJhY2UqIGJyID0gc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPih0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfYXNzZXJ0X2JhY2tyZWYsIHNpemVvZihyZV9icmFjZSkpKTsKLSAgICAgICAgIGJyLT5pbmRleCA9IHYgPCAwID8gKHYgLSAxKSA6IDA7Ci0gICAgICAgICBpZih0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2xvc2VfbWFyaykKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICAgICBpZigrK21fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZSBpZigoKm1fcG9zaXRpb24gPT0gY2hhclQoJ1wnJykpIHx8ICgqbV9wb3NpdGlvbiA9PSBjaGFyVCgnPCcpKSkKLSAgICAgIHsKLSAgICAgICAgIGNvbnN0IGNoYXJUKiBiYXNlID0gKyttX3Bvc2l0aW9uOwotICAgICAgICAgd2hpbGUoKG1fcG9zaXRpb24gIT0gbV9lbmQpICYmICgqbV9wb3NpdGlvbiAhPSBjaGFyVCgnPicpKSAmJiAoKm1fcG9zaXRpb24gIT0gY2hhclQoJ1wnJykpKQotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgaWYobV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICAgICB2ID0gc3RhdGljX2Nhc3Q8aW50PihoYXNoX3ZhbHVlX2Zyb21fY2FwdHVyZV9uYW1lKGJhc2UsIG1fcG9zaXRpb24pKTsKLSAgICAgICAgIHJlX2JyYWNlKiBiciA9IHN0YXRpY19jYXN0PHJlX2JyYWNlKj4odGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X2Fzc2VydF9iYWNrcmVmLCBzaXplb2YocmVfYnJhY2UpKSk7Ci0gICAgICAgICBici0+aW5kZXggPSB2OwotICAgICAgICAgaWYoKCgqbV9wb3NpdGlvbiAhPSBjaGFyVCgnPicpKSAmJiAoKm1fcG9zaXRpb24gIT0gY2hhclQoJ1wnJykpKSB8fCAoKyttX3Bvc2l0aW9uID09IG1fZW5kKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSwgIlVudGVybWluYXRlZCBuYW1lZCBjYXB0dXJlLiIpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgICAgaWYodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Nsb3NlX21hcmspCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgICAgaWYoKyttX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UgaWYoKm1fcG9zaXRpb24gPT0gY2hhclQoJ0QnKSkKLSAgICAgIHsKLSAgICAgICAgIGNvbnN0IGNoYXIqIGRlZiA9ICJERUZJTkUiOwotICAgICAgICAgd2hpbGUoKmRlZiAmJiAobV9wb3NpdGlvbiAhPSBtX2VuZCkgJiYgKCptX3Bvc2l0aW9uID09IGNoYXJUKCpkZWYpKSkKLSAgICAgICAgICAgICsrbV9wb3NpdGlvbiwgKytkZWY7Ci0gICAgICAgICBpZigobV9wb3NpdGlvbiA9PSBtX2VuZCkgfHwgKmRlZikKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICAgICByZV9icmFjZSogYnIgPSBzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9hc3NlcnRfYmFja3JlZiwgc2l6ZW9mKHJlX2JyYWNlKSkpOwotICAgICAgICAgYnItPmluZGV4ID0gOTk5OTsgLy8gc3BlY2lhbCBtYWdpYyB2YWx1ZSEKLSAgICAgICAgIGlmKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9tYXJrKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgICAgIGlmKCsrbV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKHYgPiAwKQotICAgICAgewotICAgICAgICAgcmVfYnJhY2UqIGJyID0gc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPih0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfYXNzZXJ0X2JhY2tyZWYsIHNpemVvZihyZV9icmFjZSkpKTsKLSAgICAgICAgIGJyLT5pbmRleCA9IHY7Ci0gICAgICAgICBpZih0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2xvc2VfbWFyaykKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICAgICBpZigrK21fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgLy8gdmVyaWZ5IHRoYXQgd2UgaGF2ZSBhIGxvb2thaGVhZCBvciBsb29rYmVoaW5kIGFzc2VydDoKLSAgICAgICAgIGlmKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9xdWVzdGlvbikKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICAgICBpZigrK21fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgICAgaWYodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pID09IHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfbGVmdF93b3JkKQotICAgICAgICAgewotICAgICAgICAgICAgaWYoKyttX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmKCh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZXF1YWwpCi0gICAgICAgICAgICAgICAmJiAodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X25vdCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbV9wb3NpdGlvbiAtPSAzOwotICAgICAgICAgfQotICAgICAgICAgZWxzZQotICAgICAgICAgewotICAgICAgICAgICAgaWYoKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9lcXVhbCkKLSAgICAgICAgICAgICAgICYmICh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfbm90KSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBtX3Bvc2l0aW9uIC09IDI7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBicmVhazsKLSAgICAgIH0KLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2xvc2VfbWFyazoKLSAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfZW5kX2J1ZmZlcjoKLSAgICAgIHsKLSAgICAgIG5hbWVfZGVsaW0gPSAqbV9wb3NpdGlvbjsKLW5hbWVkX2NhcHR1cmVfanVtcDoKLSAgICAgIG1hcmtpZCA9IDA7Ci0gICAgICBpZigwID09ICh0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6bm9zdWJzKSkKLSAgICAgIHsKLSAgICAgICAgIG1hcmtpZCA9ICsrbV9tYXJrX2NvdW50OwotICAgI2lmbmRlZiBORE5CT09TVF9OT19TVERfRElTVEFOQ0UKLSAgICAgICAgIGlmKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjpzYXZlX3N1YmV4cHJlc3Npb25fbG9jYXRpb24pCi0gICAgICAgICAgICB0aGlzLT5tX3BkYXRhLT5tX3N1YnMucHVzaF9iYWNrKHN0ZDo6cGFpcjxzdGQ6OnNpemVfdCwgc3RkOjpzaXplX3Q+KHN0ZDo6ZGlzdGFuY2UobV9iYXNlLCBtX3Bvc2l0aW9uKSAtIDIsIDApKTsKLSAgICNlbHNlCi0gICAgICAgICBpZih0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6c2F2ZV9zdWJleHByZXNzaW9uX2xvY2F0aW9uKQotICAgICAgICAgICAgdGhpcy0+bV9wZGF0YS0+bV9zdWJzLnB1c2hfYmFjayhzdGQ6OnBhaXI8c3RkOjpzaXplX3QsIHN0ZDo6c2l6ZV90PigobV9wb3NpdGlvbiAtIG1fYmFzZSkgLSAyLCAwKSk7Ci0gICAjZW5kaWYKLSAgICAgIH0KLSAgICAgIHBiLT5pbmRleCA9IG1hcmtpZDsKLSAgICAgIGNvbnN0IGNoYXJUKiBiYXNlID0gKyttX3Bvc2l0aW9uOwotICAgICAgaWYobV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgIHsKLSAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICB3aGlsZSgobV9wb3NpdGlvbiAhPSBtX2VuZCkgJiYgKCptX3Bvc2l0aW9uICE9IG5hbWVfZGVsaW0pKQotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgaWYobV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgIHsKLSAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICB0aGlzLT5tX3BkYXRhLT5zZXRfbmFtZShiYXNlLCBtX3Bvc2l0aW9uLCBtYXJraWQpOwotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICBkZWZhdWx0OgotICAgICAgaWYoKm1fcG9zaXRpb24gPT0gY2hhclQoJ1InKSkKLSAgICAgIHsKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIHYgPSAwOwotICAgICAgICAgaWYodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Nsb3NlX21hcmspCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgICAgZ290byBpbnNlcnRfcmVjdXJzaW9uOwotICAgICAgfQotICAgICAgaWYoKm1fcG9zaXRpb24gPT0gY2hhclQoJyYnKSkKLSAgICAgIHsKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIGNvbnN0IGNoYXJUKiBiYXNlID0gbV9wb3NpdGlvbjsKLSAgICAgICAgIHdoaWxlKChtX3Bvc2l0aW9uICE9IG1fZW5kKSAmJiAodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Nsb3NlX21hcmspKQotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgaWYobV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICAgICB2ID0gc3RhdGljX2Nhc3Q8aW50PihoYXNoX3ZhbHVlX2Zyb21fY2FwdHVyZV9uYW1lKGJhc2UsIG1fcG9zaXRpb24pKTsKLSAgICAgICAgIGdvdG8gaW5zZXJ0X3JlY3Vyc2lvbjsKLSAgICAgIH0KLSAgICAgIGlmKCptX3Bvc2l0aW9uID09IGNoYXJUKCdQJykpCi0gICAgICB7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICBpZihtX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgICAgIGlmKCptX3Bvc2l0aW9uID09IGNoYXJUKCc+JykpCi0gICAgICAgICB7Ci0gICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICAgICBjb25zdCBjaGFyVCogYmFzZSA9IG1fcG9zaXRpb247Ci0gICAgICAgICAgICB3aGlsZSgobV9wb3NpdGlvbiAhPSBtX2VuZCkgJiYgKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9tYXJrKSkKLSAgICAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGlmKG1fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdiA9IHN0YXRpY19jYXN0PGludD4oaGFzaF92YWx1ZV9mcm9tX2NhcHR1cmVfbmFtZShiYXNlLCBtX3Bvc2l0aW9uKSk7Ci0gICAgICAgICAgICBnb3RvIGluc2VydF9yZWN1cnNpb247Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICAvLwotICAgICAgLy8gbGV0cyBhc3N1bWUgdGhhdCB3ZSBoYXZlIGEgKD9pbXN4KSBncm91cCBhbmQgdHJ5IGFuZCBwYXJzZSBpdDoKLSAgICAgIC8vCi1vcHRpb25fZ3JvdXBfanVtcDoKLSAgICAgIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wdGlvbl90eXBlIG9wdHMgPSBwYXJzZV9vcHRpb25zKCk7Ci0gICAgICBpZihtX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgewotICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIC8vIG1ha2UgYSBub3RlIG9mIHdoZXRoZXIgd2UgaGF2ZSBhIGNhc2UgY2hhbmdlOgotICAgICAgbV9oYXNfY2FzZV9jaGFuZ2UgPSAoKG9wdHMgJiByZWdiYXNlOjppY2FzZSkgIT0gKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjppY2FzZSkpOwotICAgICAgcGItPmluZGV4ID0gbWFya2lkID0gMDsKLSAgICAgIGlmKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSA9PSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9tYXJrKQotICAgICAgewotICAgICAgICAgLy8gdXBkYXRlIGZsYWdzIGFuZCBjYXJyeSBvbiBhcyBub3JtYWw6Ci0gICAgICAgICB0aGlzLT5mbGFncyhvcHRzKTsKLSAgICAgICAgIHJlc3RvcmVfZmxhZ3MgPSBmYWxzZTsKLSAgICAgICAgIG9sZF9jYXNlX2NoYW5nZSB8PSBtX2hhc19jYXNlX2NoYW5nZTsgLy8gZGVmZXIgZW5kIG9mIHNjb3BlIGJ5IG9uZSAnKScKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pID09IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2NvbG9uKQotICAgICAgewotICAgICAgICAgLy8gdXBkYXRlIGZsYWdzIGFuZCBjYXJyeSBvbiB1bnRpbCB0aGUgbWF0Y2hpbmcgJyknIGlzIGZvdW5kOgotICAgICAgICAgdGhpcy0+ZmxhZ3Mob3B0cyk7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotCi0gICAgICAvLyBmaW5hbGx5IGFwcGVuZCBhIGNhc2UgY2hhbmdlIHN0YXRlIGlmIHdlIG5lZWQgaXQ6Ci0gICAgICBpZihtX2hhc19jYXNlX2NoYW5nZSkKLSAgICAgIHsKLSAgICAgICAgIHN0YXRpY19jYXN0PHJlX2Nhc2UqPigKLSAgICAgICAgICAgIHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF90b2dnbGVfY2FzZSwgc2l6ZW9mKHJlX2Nhc2UpKQotICAgICAgICAgICAgKS0+aWNhc2UgPSBvcHRzICYgcmVnYmFzZTo6aWNhc2U7Ci0gICAgICB9Ci0KLSAgIH0KLSAgIC8vCi0gICAvLyBub3cgcmVjdXJzaXZlbHkgYWRkIG1vcmUgc3RhdGVzLCB0aGlzIHdpbGwgdGVybWluYXRlIHdoZW4gd2UgZ2V0IHRvIGEKLSAgIC8vIG1hdGNoaW5nICcpJyA6Ci0gICAvLwotICAgcGFyc2VfYWxsKCk7Ci0gICAvLwotICAgLy8gVW53aW5kIGFsdGVybmF0aXZlczoKLSAgIC8vCi0gICBpZigwID09IHVud2luZF9hbHRzKGxhc3RfcGFyZW5fc3RhcnQpKQotICAgewotICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCAiSW52YWxpZCBhbHRlcm5hdGlvbiBvcGVyYXRvcnMgd2l0aGluICg/Li4uKSBibG9jay4iKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSAgIC8vCi0gICAvLyB3ZSBlaXRoZXIgaGF2ZSBhICcpJyBvciB3ZSBoYXZlIHJ1biBvdXQgb2YgY2hhcmFjdGVycyBwcmVtYXR1cmVseToKLSAgIC8vCi0gICBpZihtX3Bvc2l0aW9uID09IG1fZW5kKQotICAgewotICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgdGhpcy0+ZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BhcmVuLCA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKG1fYmFzZSwgbV9lbmQpKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSAgIE5ETkJPT1NUX0FTU0VSVCh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgPT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2xvc2VfbWFyayk7Ci0gICArK21fcG9zaXRpb247Ci0gICAvLwotICAgLy8gcmVzdG9yZSB0aGUgZmxhZ3M6Ci0gICAvLwotICAgaWYocmVzdG9yZV9mbGFncykKLSAgIHsKLSAgICAgIC8vIGFwcGVuZCBhIGNhc2UgY2hhbmdlIHN0YXRlIGlmIHdlIG5lZWQgaXQ6Ci0gICAgICBpZihtX2hhc19jYXNlX2NoYW5nZSkKLSAgICAgIHsKLSAgICAgICAgIHN0YXRpY19jYXN0PHJlX2Nhc2UqPigKLSAgICAgICAgICAgIHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF90b2dnbGVfY2FzZSwgc2l6ZW9mKHJlX2Nhc2UpKQotICAgICAgICAgICAgKS0+aWNhc2UgPSBvbGRfZmxhZ3MgJiByZWdiYXNlOjppY2FzZTsKLSAgICAgIH0KLSAgICAgIHRoaXMtPmZsYWdzKG9sZF9mbGFncyk7Ci0gICB9Ci0gICAvLwotICAgLy8gc2V0IHVwIHRoZSBqdW1wIHBvaW50ZXIgaWYgd2UgaGF2ZSBvbmU6Ci0gICAvLwotICAgaWYoanVtcF9vZmZzZXQpCi0gICB7Ci0gICAgICB0aGlzLT5tX3BkYXRhLT5tX2RhdGEuYWxpZ24oKTsKLSAgICAgIHJlX2p1bXAqIGptcCA9IHN0YXRpY19jYXN0PHJlX2p1bXAqPih0aGlzLT5nZXRhZGRyZXNzKGp1bXBfb2Zmc2V0KSk7Ci0gICAgICBqbXAtPmFsdC5pID0gdGhpcy0+bV9wZGF0YS0+bV9kYXRhLnNpemUoKSAtIHRoaXMtPmdldG9mZnNldChqbXApOwotICAgICAgaWYoKHRoaXMtPm1fbGFzdF9zdGF0ZSA9PSBqbXApICYmIChtYXJraWQgIT0gLTIpKQotICAgICAgewotICAgICAgICAgLy8gT29wcy4uLiB3ZSBkaWRuJ3QgaGF2ZSBhbnl0aGluZyBpbnNpZGUgdGhlIGFzc2VydGlvbi4KLSAgICAgICAgIC8vIE5vdGUgd2UgZG9uJ3QgZ2V0IGhlcmUgZm9yIG5lZ2F0ZWQgZm9yd2FyZCBsb29rYWhlYWQgYXMgKD8hKQotICAgICAgICAgLy8gZG9lcyBoYXZlIHNvbWUgdXNlcy4KLSAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSwgIkludmFsaWQgb3IgZW1wdHkgemVybyB3aWR0aCBhc3NlcnRpb24uIik7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICB9Ci0gICAvLwotICAgLy8gdmVyaWZ5IHRoYXQgaWYgdGhpcyBpcyBjb25kaXRpb25hbCBleHByZXNzaW9uLCB0aGF0IHdlIGRvIGhhdmUKLSAgIC8vIGFuIGFsdGVybmF0aXZlLCBpZiBub3QgYWRkIG9uZToKLSAgIC8vCi0gICBpZihtYXJraWQgPT0gLTQpCi0gICB7Ci0gICAgICByZV9zeW50YXhfYmFzZSogYiA9IHRoaXMtPmdldGFkZHJlc3MoZXhwZWN0ZWRfYWx0X3BvaW50KTsKLSAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBoYXZlIGV4YWN0bHkgb25lIGFsdGVybmF0aXZlIGZvbGxvd2luZyB0aGlzIHN0YXRlOgotICAgICAgaWYoYi0+dHlwZSAhPSBzeW50YXhfZWxlbWVudF9hbHQpCi0gICAgICB7Ci0gICAgICAgICByZV9hbHQqIGFsdCA9IHN0YXRpY19jYXN0PHJlX2FsdCo+KHRoaXMtPmluc2VydF9zdGF0ZShleHBlY3RlZF9hbHRfcG9pbnQsIHN5bnRheF9lbGVtZW50X2FsdCwgc2l6ZW9mKHJlX2FsdCkpKTsKLSAgICAgICAgIGFsdC0+YWx0LmkgPSB0aGlzLT5tX3BkYXRhLT5tX2RhdGEuc2l6ZSgpIC0gdGhpcy0+Z2V0b2Zmc2V0KGFsdCk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKHRoaXMtPmdldGFkZHJlc3Moc3RhdGljX2Nhc3Q8cmVfYWx0Kj4oYiktPmFsdC5pLCBiKS0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9hbHQpCi0gICAgICB7Ci0gICAgICAgICAvLyBDYW4ndCBoYXZlIHNlZW4gbW9yZSB0aGFuIG9uZSBhbHRlcm5hdGl2ZToKLSAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9iYWRfcGF0dGVybiwgbV9wb3NpdGlvbiAtIG1fYmFzZSwgIk1vcmUgdGhhbiBvbmUgYWx0ZXJuYXRpb24gb3BlcmF0b3IgfCB3YXMgZW5jb3VudGVyZWQgaW5zaWRlIGEgY29uZGl0aW9uYWwgZXhwcmVzc2lvbi4iKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgIC8vIFdlIG11c3QgKm5vdCogaGF2ZSBzZWVuIGFuIGFsdGVybmF0aXZlIGluc2lkZSBhIChERUZJTkUpIGJsb2NrOgotICAgICAgICAgYiA9IHRoaXMtPmdldGFkZHJlc3MoYi0+bmV4dC5pLCBiKTsKLSAgICAgICAgIGlmKChiLT50eXBlID09IHN5bnRheF9lbGVtZW50X2Fzc2VydF9iYWNrcmVmKSAmJiAoc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPihiKS0+aW5kZXggPT0gOTk5OSkpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYmFkX3BhdHRlcm4sIG1fcG9zaXRpb24gLSBtX2Jhc2UsICJBbHRlcm5hdGlvbiBvcGVyYXRvcnMgYXJlIG5vdCBhbGxvd2VkIGluc2lkZSBhIERFRklORSBibG9jay4iKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgICAgIC8vIGNoZWNrIGZvciBpbnZhbGlkIHJlcGV0aXRpb24gb2YgbmV4dCBzdGF0ZToKLSAgICAgIGIgPSB0aGlzLT5nZXRhZGRyZXNzKGV4cGVjdGVkX2FsdF9wb2ludCk7Ci0gICAgICBiID0gdGhpcy0+Z2V0YWRkcmVzcyhzdGF0aWNfY2FzdDxyZV9hbHQqPihiKS0+bmV4dC5pLCBiKTsKLSAgICAgIGlmKChiLT50eXBlICE9IHN5bnRheF9lbGVtZW50X2Fzc2VydF9iYWNrcmVmKQotICAgICAgICAgJiYgKGItPnR5cGUgIT0gc3ludGF4X2VsZW1lbnRfc3RhcnRtYXJrKSkKLSAgICAgIHsKLSAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9iYWRyZXBlYXQsIG1fcG9zaXRpb24gLSBtX2Jhc2UsICJBIHJlcGV0aXRpb24gb3BlcmF0b3IgY2Fubm90IGJlIGFwcGxpZWQgdG8gYSB6ZXJvLXdpZHRoIGFzc2VydGlvbi4iKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgIH0KLSAgIC8vCi0gICAvLyBhcHBlbmQgY2xvc2luZyBwYXJlbnRoZXNpcyBzdGF0ZToKLSAgIC8vCi0gICBwYiA9IHN0YXRpY19jYXN0PHJlX2JyYWNlKj4odGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X2VuZG1hcmssIHNpemVvZihyZV9icmFjZSkpKTsKLSAgIHBiLT5pbmRleCA9IG1hcmtpZDsKLSAgIHBiLT5pY2FzZSA9IHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjppY2FzZTsKLSAgIHRoaXMtPm1fcGFyZW5fc3RhcnQgPSBsYXN0X3BhcmVuX3N0YXJ0OwotICAgLy8KLSAgIC8vIHJlc3RvcmUgdGhlIGFsdGVybmF0ZSBpbnNlcnRpb24gcG9pbnQ6Ci0gICAvLwotICAgdGhpcy0+bV9hbHRfaW5zZXJ0X3BvaW50ID0gbGFzdF9hbHRfcG9pbnQ7Ci0gICAvLwotICAgLy8gYW5kIHRoZSBjYXNlIGNoYW5nZSBkYXRhOgotICAgLy8KLSAgIG1faGFzX2Nhc2VfY2hhbmdlID0gb2xkX2Nhc2VfY2hhbmdlOwotICAgLy8KLSAgIC8vIEFuZCB0aGUgbWFya19yZXNldCBkYXRhOgotICAgLy8KLSAgIGlmKG1fbWF4X21hcmsgPiBtX21hcmtfY291bnQpCi0gICB7Ci0gICAgICBtX21hcmtfY291bnQgPSBtX21heF9tYXJrOwotICAgfQotICAgbV9tYXJrX3Jlc2V0ID0gbWFya19yZXNldDsKLSAgIG1fbWF4X21hcmsgPSBtYXhfbWFyazsKLQotCi0gICBpZihtYXJraWQgPiAwKQotICAgewotI2lmbmRlZiBORE5CT09TVF9OT19TVERfRElTVEFOQ0UKLSAgICAgIGlmKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjpzYXZlX3N1YmV4cHJlc3Npb25fbG9jYXRpb24pCi0gICAgICAgICB0aGlzLT5tX3BkYXRhLT5tX3N1YnMuYXQobWFya2lkIC0gMSkuc2Vjb25kID0gc3RkOjpkaXN0YW5jZShtX2Jhc2UsIG1fcG9zaXRpb24pIC0gMTsKLSNlbHNlCi0gICAgICBpZih0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6c2F2ZV9zdWJleHByZXNzaW9uX2xvY2F0aW9uKQotICAgICAgICAgdGhpcy0+bV9wZGF0YS0+bV9zdWJzLmF0KG1hcmtpZCAtIDEpLnNlY29uZCA9IChtX3Bvc2l0aW9uIC0gbV9iYXNlKSAtIDE7Ci0jZW5kaWYKLSAgICAgIC8vCi0gICAgICAvLyBhbGxvdyBiYWNrcmVmcyB0byB0aGlzIG1hcms6Ci0gICAgICAvLwotICAgICAgaWYoKG1hcmtpZCA+IDApICYmIChtYXJraWQgPCAoaW50KShzaXplb2YodW5zaWduZWQpICogQ0hBUl9CSVQpKSkKLSAgICAgICAgIHRoaXMtPm1fYmFja3JlZnMgfD0gMXUgPDwgKG1hcmtpZCAtIDEpOwotICAgfQotICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotYm9vbCBiYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz46OmFkZF9lbWFjc19jb2RlKGJvb2wgbmVnYXRlKQotewotICAgLy8KLSAgIC8vIHBhcnNlcyBhbiBlbWFjcyBzdHlsZSBcc3ggb3IgXFN4IGNvbnN0cnVjdC4KLSAgIC8vCi0gICBpZigrK21fcG9zaXRpb24gPT0gbV9lbmQpCi0gICB7Ci0gICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2Ygc2VxdWVuY2U6Ci0gICAgICAtLW1fcG9zaXRpb247Ci0gICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZXNjYXBlKSAtLW1fcG9zaXRpb247Ci0gICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfZXNjYXBlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSAgIGJhc2ljX2NoYXJfc2V0PGNoYXJULCB0cmFpdHM+IGNoYXJfc2V0OwotICAgaWYobmVnYXRlKQotICAgICAgY2hhcl9zZXQubmVnYXRlKCk7Ci0KLSAgIHN0YXRpYyBjb25zdCBjaGFyVCBzX3B1bmN0WzVdID0geyAncCcsICd1JywgJ24nLCAnYycsICd0JywgfTsKLQotICAgc3dpdGNoKCptX3Bvc2l0aW9uKQotICAgewotICAgY2FzZSAncyc6Ci0gICBjYXNlICcgJzoKLSAgICAgIGNoYXJfc2V0LmFkZF9jbGFzcyh0aGlzLT5tX21hc2tfc3BhY2UpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlICd3JzoKLSAgICAgIGNoYXJfc2V0LmFkZF9jbGFzcyh0aGlzLT5tX3dvcmRfbWFzayk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgJ18nOgotICAgICAgY2hhcl9zZXQuYWRkX3NpbmdsZShkaWdyYXBoPGNoYXJUPihjaGFyVCgnJCcpKSk7IAotICAgICAgY2hhcl9zZXQuYWRkX3NpbmdsZShkaWdyYXBoPGNoYXJUPihjaGFyVCgnJicpKSk7IAotICAgICAgY2hhcl9zZXQuYWRkX3NpbmdsZShkaWdyYXBoPGNoYXJUPihjaGFyVCgnKicpKSk7IAotICAgICAgY2hhcl9zZXQuYWRkX3NpbmdsZShkaWdyYXBoPGNoYXJUPihjaGFyVCgnKycpKSk7IAotICAgICAgY2hhcl9zZXQuYWRkX3NpbmdsZShkaWdyYXBoPGNoYXJUPihjaGFyVCgnLScpKSk7IAotICAgICAgY2hhcl9zZXQuYWRkX3NpbmdsZShkaWdyYXBoPGNoYXJUPihjaGFyVCgnXycpKSk7IAotICAgICAgY2hhcl9zZXQuYWRkX3NpbmdsZShkaWdyYXBoPGNoYXJUPihjaGFyVCgnPCcpKSk7IAotICAgICAgY2hhcl9zZXQuYWRkX3NpbmdsZShkaWdyYXBoPGNoYXJUPihjaGFyVCgnPicpKSk7IAotICAgICAgYnJlYWs7Ci0gICBjYXNlICcuJzoKLSAgICAgIGNoYXJfc2V0LmFkZF9jbGFzcyh0aGlzLT5tX3RyYWl0cy5sb29rdXBfY2xhc3NuYW1lKHNfcHVuY3QsIHNfcHVuY3QrNSkpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlICcoJzoKLSAgICAgIGNoYXJfc2V0LmFkZF9zaW5nbGUoZGlncmFwaDxjaGFyVD4oY2hhclQoJygnKSkpOyAKLSAgICAgIGNoYXJfc2V0LmFkZF9zaW5nbGUoZGlncmFwaDxjaGFyVD4oY2hhclQoJ1snKSkpOyAKLSAgICAgIGNoYXJfc2V0LmFkZF9zaW5nbGUoZGlncmFwaDxjaGFyVD4oY2hhclQoJ3snKSkpOyAKLSAgICAgIGJyZWFrOwotICAgY2FzZSAnKSc6Ci0gICAgICBjaGFyX3NldC5hZGRfc2luZ2xlKGRpZ3JhcGg8Y2hhclQ+KGNoYXJUKCcpJykpKTsgCi0gICAgICBjaGFyX3NldC5hZGRfc2luZ2xlKGRpZ3JhcGg8Y2hhclQ+KGNoYXJUKCddJykpKTsgCi0gICAgICBjaGFyX3NldC5hZGRfc2luZ2xlKGRpZ3JhcGg8Y2hhclQ+KGNoYXJUKCd9JykpKTsgCi0gICAgICBicmVhazsKLSAgIGNhc2UgJyInOgotICAgICAgY2hhcl9zZXQuYWRkX3NpbmdsZShkaWdyYXBoPGNoYXJUPihjaGFyVCgnIicpKSk7IAotICAgICAgY2hhcl9zZXQuYWRkX3NpbmdsZShkaWdyYXBoPGNoYXJUPihjaGFyVCgnXCcnKSkpOyAKLSAgICAgIGNoYXJfc2V0LmFkZF9zaW5nbGUoZGlncmFwaDxjaGFyVD4oY2hhclQoJ2AnKSkpOyAKLSAgICAgIGJyZWFrOwotICAgY2FzZSAnXCcnOgotICAgICAgY2hhcl9zZXQuYWRkX3NpbmdsZShkaWdyYXBoPGNoYXJUPihjaGFyVCgnXCcnKSkpOyAKLSAgICAgIGNoYXJfc2V0LmFkZF9zaW5nbGUoZGlncmFwaDxjaGFyVD4oY2hhclQoJywnKSkpOyAKLSAgICAgIGNoYXJfc2V0LmFkZF9zaW5nbGUoZGlncmFwaDxjaGFyVD4oY2hhclQoJyMnKSkpOyAKLSAgICAgIGJyZWFrOwotICAgY2FzZSAnPCc6Ci0gICAgICBjaGFyX3NldC5hZGRfc2luZ2xlKGRpZ3JhcGg8Y2hhclQ+KGNoYXJUKCc7JykpKTsgCi0gICAgICBicmVhazsKLSAgIGNhc2UgJz4nOgotICAgICAgY2hhcl9zZXQuYWRkX3NpbmdsZShkaWdyYXBoPGNoYXJUPihjaGFyVCgnXG4nKSkpOyAKLSAgICAgIGNoYXJfc2V0LmFkZF9zaW5nbGUoZGlncmFwaDxjaGFyVD4oY2hhclQoJ1xmJykpKTsgCi0gICAgICBicmVhazsKLSAgIGRlZmF1bHQ6Ci0gICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfY3R5cGUsIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotICAgaWYoMCA9PSB0aGlzLT5hcHBlbmRfc2V0KGNoYXJfc2V0KSkKLSAgIHsKLSAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9jdHlwZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0gICArK21fcG9zaXRpb247Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1yZWdleF9jb25zdGFudHM6OnN5bnRheF9vcHRpb25fdHlwZSBiYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz46OnBhcnNlX29wdGlvbnMoKQotewotICAgLy8gd2UgaGF2ZSBhICg/aW1zeC1pbXN4KSBncm91cCwgY29udmVydCBpdCBpbnRvIGEgc2V0IG9mIGZsYWdzOgotICAgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3B0aW9uX3R5cGUgZiA9IHRoaXMtPmZsYWdzKCk7Ci0gICBib29sIGJyZWFrb3V0ID0gZmFsc2U7Ci0gICBkbwotICAgewotICAgICAgc3dpdGNoKCptX3Bvc2l0aW9uKQotICAgICAgewotICAgICAgY2FzZSAncyc6Ci0gICAgICAgICBmIHw9IHJlZ2V4X2NvbnN0YW50czo6bW9kX3M7Ci0gICAgICAgICBmICY9IH5yZWdleF9jb25zdGFudHM6Om5vX21vZF9zOwotICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlICdtJzoKLSAgICAgICAgIGYgJj0gfnJlZ2V4X2NvbnN0YW50czo6bm9fbW9kX207Ci0gICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgJ2knOgotICAgICAgICAgZiB8PSByZWdleF9jb25zdGFudHM6OmljYXNlOwotICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlICd4JzoKLSAgICAgICAgIGYgfD0gcmVnZXhfY29uc3RhbnRzOjptb2RfeDsKLSAgICAgICAgIGJyZWFrOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgIGJyZWFrb3V0ID0gdHJ1ZTsKLSAgICAgICAgIGNvbnRpbnVlOwotICAgICAgfQotICAgICAgaWYoKyttX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgewotICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BhcmVuLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgIH0KLSAgIHdoaWxlKCFicmVha291dCk7Ci0gICAKLSAgIGJyZWFrb3V0ID0gZmFsc2U7Ci0KLSAgIGlmKCptX3Bvc2l0aW9uID09IHN0YXRpY19jYXN0PGNoYXJUPignLScpKQotICAgewotICAgICAgaWYoKyttX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgewotICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BhcmVuLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIGRvCi0gICAgICB7Ci0gICAgICAgICBzd2l0Y2goKm1fcG9zaXRpb24pCi0gICAgICAgICB7Ci0gICAgICAgICBjYXNlICdzJzoKLSAgICAgICAgICAgIGYgJj0gfnJlZ2V4X2NvbnN0YW50czo6bW9kX3M7Ci0gICAgICAgICAgICBmIHw9IHJlZ2V4X2NvbnN0YW50czo6bm9fbW9kX3M7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgIGNhc2UgJ20nOgotICAgICAgICAgICAgZiB8PSByZWdleF9jb25zdGFudHM6Om5vX21vZF9tOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICBjYXNlICdpJzoKLSAgICAgICAgICAgIGYgJj0gfnJlZ2V4X2NvbnN0YW50czo6aWNhc2U7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgIGNhc2UgJ3gnOgotICAgICAgICAgICAgZiAmPSB+cmVnZXhfY29uc3RhbnRzOjptb2RfeDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJyZWFrb3V0ID0gdHJ1ZTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgfQotICAgICAgICAgaWYoKyttX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BhcmVuLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgICAgIHdoaWxlKCFicmVha291dCk7Ci0gICB9Ci0gICByZXR1cm4gZjsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1ib29sIGJhc2ljX3JlZ2V4X3BhcnNlcjxjaGFyVCwgdHJhaXRzPjo6dW53aW5kX2FsdHMoc3RkOjpwdHJkaWZmX3QgbGFzdF9wYXJlbl9zdGFydCkKLXsKLSAgIC8vCi0gICAvLyBJZiB3ZSBkaWRuJ3QgYWN0dWFsbHkgYWRkIGFueSBzdGF0ZXMgYWZ0ZXIgdGhlIGxhc3QgCi0gICAvLyBhbHRlcm5hdGl2ZSB0aGVuIHRoYXQncyBhbiBlcnJvcjoKLSAgIC8vCi0gICBpZigodGhpcy0+bV9hbHRfaW5zZXJ0X3BvaW50ID09IHN0YXRpY19jYXN0PHN0ZDo6cHRyZGlmZl90Pih0aGlzLT5tX3BkYXRhLT5tX2RhdGEuc2l6ZSgpKSkKLSAgICAgICYmIG1fYWx0X2p1bXBzLnNpemUoKSAmJiAobV9hbHRfanVtcHMuYmFjaygpID4gbGFzdF9wYXJlbl9zdGFydCkKLSAgICAgICYmCi0gICAgICAhKAotICAgICAgICAgKCh0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6bWFpbl9vcHRpb25fdHlwZSkgPT0gcmVnYmFzZTo6cGVybF9zeW50YXhfZ3JvdXApCi0gICAgICAgICAgICYmCi0gICAgICAgICAoKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjpub19lbXB0eV9leHByZXNzaW9ucykgPT0gMCkKLSAgICAgICAgKQotICAgICAgKQotICAgewotICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2VtcHR5LCB0aGlzLT5tX3Bvc2l0aW9uIC0gdGhpcy0+bV9iYXNlLCAiQ2FuJ3QgdGVybWluYXRlIGEgc3ViLWV4cHJlc3Npb24gd2l0aCBhbiBhbHRlcm5hdGlvbiBvcGVyYXRvciB8LiIpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotICAgLy8gCi0gICAvLyBGaXggdXAgb3VyIGFsdGVybmF0aXZlczoKLSAgIC8vCi0gICB3aGlsZShtX2FsdF9qdW1wcy5zaXplKCkgJiYgKG1fYWx0X2p1bXBzLmJhY2soKSA+IGxhc3RfcGFyZW5fc3RhcnQpKQotICAgewotICAgICAgLy8KLSAgICAgIC8vIGZpeCB1cCB0aGUganVtcCB0byBwb2ludCB0byB0aGUgZW5kIG9mIHRoZSBzdGF0ZXMKLSAgICAgIC8vIHRoYXQgd2UndmUganVzdCBhZGRlZDoKLSAgICAgIC8vCi0gICAgICBzdGQ6OnB0cmRpZmZfdCBqdW1wX29mZnNldCA9IG1fYWx0X2p1bXBzLmJhY2soKTsKLSAgICAgIG1fYWx0X2p1bXBzLnBvcF9iYWNrKCk7Ci0gICAgICB0aGlzLT5tX3BkYXRhLT5tX2RhdGEuYWxpZ24oKTsKLSAgICAgIHJlX2p1bXAqIGptcCA9IHN0YXRpY19jYXN0PHJlX2p1bXAqPih0aGlzLT5nZXRhZGRyZXNzKGp1bXBfb2Zmc2V0KSk7Ci0gICAgICBORE5CT09TVF9BU1NFUlQoam1wLT50eXBlID09IHN5bnRheF9lbGVtZW50X2p1bXApOwotICAgICAgam1wLT5hbHQuaSA9IHRoaXMtPm1fcGRhdGEtPm1fZGF0YS5zaXplKCkgLSBqdW1wX29mZnNldDsKLSAgIH0KLSAgIHJldHVybiB0cnVlOwotfQotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSByZV9kZXRhaWwKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2NfcmVnZXhfdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvY19yZWdleF90cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MmFkZDkxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvY19yZWdleF90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjExICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDA0Ci0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotIAotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIGNfcmVnZXhfdHJhaXRzLmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogRGVjbGFyZXMgcmVndWxhciBleHByZXNzaW9uIHRyYWl0cyBjbGFzcyB0aGF0IHdyYXBzIHRoZSBnbG9iYWwgQyBsb2NhbGUuCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfQ19SRUdFWF9UUkFJVFNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0NfUkVHRVhfVFJBSVRTX0hQUF9JTkNMVURFRAotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0NPTkZJR19IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC9jb25maWcuaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1dPUktBUk9VTkRfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfd29ya2Fyb3VuZC5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPGNjdHlwZT4KLQotI2lmZGVmIE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFCi1uYW1lc3BhY2Ugc3RkewotICAgdXNpbmcgOjpzdHJsZW47IHVzaW5nIDo6dG9sb3dlcjsKLX0KLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotc3RydWN0IGNfcmVnZXhfdHJhaXRzOwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTkROQk9PU1RfUkVHRVhfREVDTCBjX3JlZ2V4X3RyYWl0czxjaGFyPgotewotICAgY19yZWdleF90cmFpdHMoKXt9Ci0gICB0eXBlZGVmIGNoYXIgY2hhcl90eXBlOwotICAgdHlwZWRlZiBzdGQ6OnNpemVfdCBzaXplX3R5cGU7Ci0gICB0eXBlZGVmIHN0ZDo6c3RyaW5nIHN0cmluZ190eXBlOwotICAgc3RydWN0IGxvY2FsZV90eXBle307Ci0gICB0eXBlZGVmIG5kbmJvb3N0Ojp1aW50MzJfdCBjaGFyX2NsYXNzX3R5cGU7Ci0KLSAgIHN0YXRpYyBzaXplX3R5cGUgbGVuZ3RoKGNvbnN0IGNoYXJfdHlwZSogcCkgCi0gICB7IAotICAgICAgcmV0dXJuIChzdGQ6OnN0cmxlbikocCk7IAotICAgfQotCi0gICBjaGFyIHRyYW5zbGF0ZShjaGFyIGMpIGNvbnN0IAotICAgeyAKLSAgICAgIHJldHVybiBjOyAKLSAgIH0KLSAgIGNoYXIgdHJhbnNsYXRlX25vY2FzZShjaGFyIGMpIGNvbnN0IAotICAgeyAKLSAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjaGFyPigoc3RkOjp0b2xvd2VyKShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjKSkpOyAKLSAgIH0KLQotICAgc3RhdGljIHN0cmluZ190eXBlIE5ETkJPT1NUX1JFR0VYX0NBTEwgdHJhbnNmb3JtKGNvbnN0IGNoYXIqIHAxLCBjb25zdCBjaGFyKiBwMik7Ci0gICBzdGF0aWMgc3RyaW5nX3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCB0cmFuc2Zvcm1fcHJpbWFyeShjb25zdCBjaGFyKiBwMSwgY29uc3QgY2hhciogcDIpOwotCi0gICBzdGF0aWMgY2hhcl9jbGFzc190eXBlIE5ETkJPT1NUX1JFR0VYX0NBTEwgbG9va3VwX2NsYXNzbmFtZShjb25zdCBjaGFyKiBwMSwgY29uc3QgY2hhciogcDIpOwotICAgc3RhdGljIHN0cmluZ190eXBlIE5ETkJPT1NUX1JFR0VYX0NBTEwgbG9va3VwX2NvbGxhdGVuYW1lKGNvbnN0IGNoYXIqIHAxLCBjb25zdCBjaGFyKiBwMik7Ci0KLSAgIHN0YXRpYyBib29sIE5ETkJPT1NUX1JFR0VYX0NBTEwgaXNjdHlwZShjaGFyLCBjaGFyX2NsYXNzX3R5cGUpOwotICAgc3RhdGljIGludCBORE5CT09TVF9SRUdFWF9DQUxMIHZhbHVlKGNoYXIsIGludCk7Ci0KLSAgIGxvY2FsZV90eXBlIGltYnVlKGxvY2FsZV90eXBlIGwpCi0gICB7IHJldHVybiBsOyB9Ci0gICBsb2NhbGVfdHlwZSBnZXRsb2MoKWNvbnN0Ci0gICB7IHJldHVybiBsb2NhbGVfdHlwZSgpOyB9Ci0KLXByaXZhdGU6Ci0gICAvLyB0aGlzIHR5cGUgaXMgbm90IGNvcHlhYmxlOgotICAgY19yZWdleF90cmFpdHMoY29uc3QgY19yZWdleF90cmFpdHMmKTsKLSAgIGNfcmVnZXhfdHJhaXRzJiBvcGVyYXRvcj0oY29uc3QgY19yZWdleF90cmFpdHMmKTsKLX07Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTkROQk9PU1RfUkVHRVhfREVDTCBjX3JlZ2V4X3RyYWl0czx3Y2hhcl90PgotewotICAgY19yZWdleF90cmFpdHMoKXt9Ci0gICB0eXBlZGVmIHdjaGFyX3QgY2hhcl90eXBlOwotICAgdHlwZWRlZiBzdGQ6OnNpemVfdCBzaXplX3R5cGU7Ci0gICB0eXBlZGVmIHN0ZDo6d3N0cmluZyBzdHJpbmdfdHlwZTsKLSAgIHN0cnVjdCBsb2NhbGVfdHlwZXt9OwotICAgdHlwZWRlZiBuZG5ib29zdDo6dWludDMyX3QgY2hhcl9jbGFzc190eXBlOwotCi0gICBzdGF0aWMgc2l6ZV90eXBlIGxlbmd0aChjb25zdCBjaGFyX3R5cGUqIHApIAotICAgeyAKLSAgICAgIHJldHVybiAoc3RkOjp3Y3NsZW4pKHApOyAKLSAgIH0KLQotICAgd2NoYXJfdCB0cmFuc2xhdGUod2NoYXJfdCBjKSBjb25zdCAKLSAgIHsgCi0gICAgICByZXR1cm4gYzsgCi0gICB9Ci0gICB3Y2hhcl90IHRyYW5zbGF0ZV9ub2Nhc2Uod2NoYXJfdCBjKSBjb25zdCAKLSAgIHsgCi0gICAgICByZXR1cm4gKHN0ZDo6dG93bG93ZXIpKGMpOyAKLSAgIH0KLQotICAgc3RhdGljIHN0cmluZ190eXBlIE5ETkJPT1NUX1JFR0VYX0NBTEwgdHJhbnNmb3JtKGNvbnN0IHdjaGFyX3QqIHAxLCBjb25zdCB3Y2hhcl90KiBwMik7Ci0gICBzdGF0aWMgc3RyaW5nX3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCB0cmFuc2Zvcm1fcHJpbWFyeShjb25zdCB3Y2hhcl90KiBwMSwgY29uc3Qgd2NoYXJfdCogcDIpOwotCi0gICBzdGF0aWMgY2hhcl9jbGFzc190eXBlIE5ETkJPT1NUX1JFR0VYX0NBTEwgbG9va3VwX2NsYXNzbmFtZShjb25zdCB3Y2hhcl90KiBwMSwgY29uc3Qgd2NoYXJfdCogcDIpOwotICAgc3RhdGljIHN0cmluZ190eXBlIE5ETkJPT1NUX1JFR0VYX0NBTEwgbG9va3VwX2NvbGxhdGVuYW1lKGNvbnN0IHdjaGFyX3QqIHAxLCBjb25zdCB3Y2hhcl90KiBwMik7Ci0KLSAgIHN0YXRpYyBib29sIE5ETkJPT1NUX1JFR0VYX0NBTEwgaXNjdHlwZSh3Y2hhcl90LCBjaGFyX2NsYXNzX3R5cGUpOwotICAgc3RhdGljIGludCBORE5CT09TVF9SRUdFWF9DQUxMIHZhbHVlKHdjaGFyX3QsIGludCk7Ci0KLSAgIGxvY2FsZV90eXBlIGltYnVlKGxvY2FsZV90eXBlIGwpCi0gICB7IHJldHVybiBsOyB9Ci0gICBsb2NhbGVfdHlwZSBnZXRsb2MoKWNvbnN0Ci0gICB7IHJldHVybiBsb2NhbGVfdHlwZSgpOyB9Ci0KLXByaXZhdGU6Ci0gICAvLyB0aGlzIHR5cGUgaXMgbm90IGNvcHlhYmxlOgotICAgY19yZWdleF90cmFpdHMoY29uc3QgY19yZWdleF90cmFpdHMmKTsKLSAgIGNfcmVnZXhfdHJhaXRzJiBvcGVyYXRvcj0oY29uc3QgY19yZWdleF90cmFpdHMmKTsKLX07Ci0KLSNpZmRlZiBORE5CT09TVF9SRUdFWF9IQVNfT1RIRVJfV0NIQVJfVAotLy8KLS8vIFByb3ZpZGUgYW4gdW5zaWduZWQgc2hvcnQgdmVyc2lvbiBhcyB3ZWxsLCBzbyB0aGUgdXNlciBjYW4gbGluayB0byB0aGlzCi0vLyBubyBtYXR0ZXIgd2hldGhlciB0aGV5IGJ1aWxkIHdpdGggL1pjOndjaGFyX3Qgb3Igbm90IChNU1ZDIHNwZWNpZmljKS4KLS8vCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTkROQk9PU1RfUkVHRVhfREVDTCBjX3JlZ2V4X3RyYWl0czx1bnNpZ25lZCBzaG9ydD4KLXsKLSAgIGNfcmVnZXhfdHJhaXRzKCl7fQotICAgdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBjaGFyX3R5cGU7Ci0gICB0eXBlZGVmIHN0ZDo6c2l6ZV90IHNpemVfdHlwZTsKLSAgIHR5cGVkZWYgc3RkOjpiYXNpY19zdHJpbmc8dW5zaWduZWQgc2hvcnQ+IHN0cmluZ190eXBlOwotICAgc3RydWN0IGxvY2FsZV90eXBle307Ci0gICB0eXBlZGVmIG5kbmJvb3N0Ojp1aW50MzJfdCBjaGFyX2NsYXNzX3R5cGU7Ci0KLSAgIHN0YXRpYyBzaXplX3R5cGUgbGVuZ3RoKGNvbnN0IGNoYXJfdHlwZSogcCkgCi0gICB7IAotICAgICAgcmV0dXJuIChzdGQ6Ondjc2xlbikoKGNvbnN0IHdjaGFyX3QqKXApOyAKLSAgIH0KLQotICAgdW5zaWduZWQgc2hvcnQgdHJhbnNsYXRlKHVuc2lnbmVkIHNob3J0IGMpIGNvbnN0IAotICAgeyAKLSAgICAgIHJldHVybiBjOyAKLSAgIH0KLSAgIHVuc2lnbmVkIHNob3J0IHRyYW5zbGF0ZV9ub2Nhc2UodW5zaWduZWQgc2hvcnQgYykgY29uc3QgCi0gICB7IAotICAgICAgcmV0dXJuIChzdGQ6OnRvd2xvd2VyKSgod2NoYXJfdCljKTsgCi0gICB9Ci0KLSAgIHN0YXRpYyBzdHJpbmdfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIHRyYW5zZm9ybShjb25zdCB1bnNpZ25lZCBzaG9ydCogcDEsIGNvbnN0IHVuc2lnbmVkIHNob3J0KiBwMik7Ci0gICBzdGF0aWMgc3RyaW5nX3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCB0cmFuc2Zvcm1fcHJpbWFyeShjb25zdCB1bnNpZ25lZCBzaG9ydCogcDEsIGNvbnN0IHVuc2lnbmVkIHNob3J0KiBwMik7Ci0KLSAgIHN0YXRpYyBjaGFyX2NsYXNzX3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCBsb29rdXBfY2xhc3NuYW1lKGNvbnN0IHVuc2lnbmVkIHNob3J0KiBwMSwgY29uc3QgdW5zaWduZWQgc2hvcnQqIHAyKTsKLSAgIHN0YXRpYyBzdHJpbmdfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIGxvb2t1cF9jb2xsYXRlbmFtZShjb25zdCB1bnNpZ25lZCBzaG9ydCogcDEsIGNvbnN0IHVuc2lnbmVkIHNob3J0KiBwMik7Ci0KLSAgIHN0YXRpYyBib29sIE5ETkJPT1NUX1JFR0VYX0NBTEwgaXNjdHlwZSh1bnNpZ25lZCBzaG9ydCwgY2hhcl9jbGFzc190eXBlKTsKLSAgIHN0YXRpYyBpbnQgTkROQk9PU1RfUkVHRVhfQ0FMTCB2YWx1ZSh1bnNpZ25lZCBzaG9ydCwgaW50KTsKLQotICAgbG9jYWxlX3R5cGUgaW1idWUobG9jYWxlX3R5cGUgbCkKLSAgIHsgcmV0dXJuIGw7IH0KLSAgIGxvY2FsZV90eXBlIGdldGxvYygpY29uc3QKLSAgIHsgcmV0dXJuIGxvY2FsZV90eXBlKCk7IH0KLQotcHJpdmF0ZToKLSAgIC8vIHRoaXMgdHlwZSBpcyBub3QgY29weWFibGU6Ci0gICBjX3JlZ2V4X3RyYWl0cyhjb25zdCBjX3JlZ2V4X3RyYWl0cyYpOwotICAgY19yZWdleF90cmFpdHMmIG9wZXJhdG9yPShjb25zdCBjX3JlZ2V4X3RyYWl0cyYpOwotfTsKLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19XUkVHRVgKLQotfQotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNlbmRpZgotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9jaGFyX3JlZ2V4X3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2NoYXJfcmVnZXhfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTVlNTIyOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2NoYXJfcmVnZXhfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIGNoYXJfcmVnZXhfdHJhaXRzLmNwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogRGVjbGFyZXMgZGVwcmVjYXRlZCB0cmFpdHMgY2xhc3NlcyBjaGFyX3JlZ2V4X3RyYWl0czw+LgotICAqLwotCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfQ0hBUl9SRUdFWF9UUkFJVFNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1Y0X0NIQVJfUkVHRVhfVFJBSVRTX0hQUAotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotbmFtZXNwYWNlIGRlcHJlY2F0ZWR7Ci0vLwotLy8gY2xhc3MgY2hhcl9yZWdleF90cmFpdHNfaQotLy8gcHJvdmlkZXMgY2FzZSBpbnNlbnNpdGl2ZSB0cmFpdHMgY2xhc3NlcyAoZGVwcmVjYXRlZCk6Ci10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1jbGFzcyBjaGFyX3JlZ2V4X3RyYWl0c19pIDogcHVibGljIHJlZ2V4X3RyYWl0czxjaGFyVD4ge307Ci0KLXRlbXBsYXRlPD4KLWNsYXNzIGNoYXJfcmVnZXhfdHJhaXRzX2k8Y2hhcj4gOiBwdWJsaWMgcmVnZXhfdHJhaXRzPGNoYXI+Ci17Ci1wdWJsaWM6Ci0gICB0eXBlZGVmIGNoYXIgY2hhcl90eXBlOwotICAgdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVjaGFyX3R5cGU7Ci0gICB0eXBlZGVmIHVuc2lnbmVkIGludCBzaXplX3R5cGU7Ci0gICB0eXBlZGVmIHJlZ2V4X3RyYWl0czxjaGFyPiBiYXNlX3R5cGU7Ci0KLX07Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi10ZW1wbGF0ZTw+Ci1jbGFzcyBjaGFyX3JlZ2V4X3RyYWl0c19pPHdjaGFyX3Q+IDogcHVibGljIHJlZ2V4X3RyYWl0czx3Y2hhcl90PgotewotcHVibGljOgotICAgdHlwZWRlZiB3Y2hhcl90IGNoYXJfdHlwZTsKLSAgIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdWNoYXJfdHlwZTsKLSAgIHR5cGVkZWYgdW5zaWduZWQgaW50IHNpemVfdHlwZTsKLSAgIHR5cGVkZWYgcmVnZXhfdHJhaXRzPHdjaGFyX3Q+IGJhc2VfdHlwZTsKLQotfTsKLSNlbmRpZgotfSAvLyBuYW1lc3BhY2UgZGVwcmVjYXRlZAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jZW5kaWYgLy8gaW5jbHVkZQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2NwcF9yZWdleF90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9jcHBfcmVnZXhfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWVjODY1Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2NwcF9yZWdleF90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA5OSArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMjAwNCBKb2huIE1hZGRvY2sKLSAqIENvcHlyaWdodCAyMDExIEdhcm1pbiBMdGQuIG9yIGl0cyBzdWJzaWRpYXJpZXMKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotIAotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIGNwcF9yZWdleF90cmFpdHMuaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBEZWNsYXJlcyByZWd1bGFyIGV4cHJlc3Npb24gdHJhaXRzIGNsYXNzIGNwcF9yZWdleF90cmFpdHMuCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfQ1BQX1JFR0VYX1RSQUlUU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfQ1BQX1JFR0VYX1RSQUlUU19IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW50ZWdlci5ocHA+Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0xPQ0FMRQotCi0jaWZuZGVmIE5ETkJPT1NUX1JFX1BBVF9FWENFUFRfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvcGF0dGVybl9leGNlcHQuaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19ERUZBVUxUU19IUFBfSU5DTFVERUQKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9yZWdleF90cmFpdHNfZGVmYXVsdHMuaHBwPgotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX1RIUkVBRFMKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC9wZW5kaW5nL3N0YXRpY19tdXRleC5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfUFJJTUFSWV9UUkFOU0ZPUk0KLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9wcmltYXJ5X3RyYW5zZm9ybS5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfT0JKRUNUX0NBQ0hFX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3BlbmRpbmcvb2JqZWN0X2NhY2hlLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8aXN0cmVhbT4KLSNpbmNsdWRlIDxpb3M+Ci0jaW5jbHVkZSA8Y2xpbWl0cz4KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0Nzg2IDQyNTEpCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0eyAKLQotLy8KLS8vIGZvcndhcmQgZGVjbGFyYXRpb24gaXMgbmVlZGVkIGJ5IHNvbWUgY29tcGlsZXJzOgotLy8KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLWNsYXNzIGNwcF9yZWdleF90cmFpdHM7Ci0gICAKLW5hbWVzcGFjZSByZV9kZXRhaWx7Ci0KLS8vCi0vLyBjbGFzcyBwYXJzZXJfYnVmOgotLy8gYWN0cyBhcyBhIHN0cmVhbSBidWZmZXIgd2hpY2ggd3JhcHMgYXJvdW5kIGEgcGFpciBvZiBwb2ludGVyczoKLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsCi0gICAgICAgICAgY2xhc3MgdHJhaXRzID0gOjpzdGQ6OmNoYXJfdHJhaXRzPGNoYXJUPiA+Ci1jbGFzcyBwYXJzZXJfYnVmIDogcHVibGljIDo6c3RkOjpiYXNpY19zdHJlYW1idWY8Y2hhclQsIHRyYWl0cz4KLXsKLSAgIHR5cGVkZWYgOjpzdGQ6OmJhc2ljX3N0cmVhbWJ1ZjxjaGFyVCwgdHJhaXRzPiBiYXNlX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfdHlwZTo6aW50X3R5cGUgaW50X3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfdHlwZTo6Y2hhcl90eXBlIGNoYXJfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV90eXBlOjpwb3NfdHlwZSBwb3NfdHlwZTsKLSAgIHR5cGVkZWYgOjpzdGQ6OnN0cmVhbXNpemUgc3RyZWFtc2l6ZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV90eXBlOjpvZmZfdHlwZSBvZmZfdHlwZTsKLXB1YmxpYzoKLSAgIHBhcnNlcl9idWYoKSA6IGJhc2VfdHlwZSgpIHsgc2V0YnVmKDAsIDApOyB9Ci0gICBjb25zdCBjaGFyVCogZ2V0bmV4dCgpIHsgcmV0dXJuIHRoaXMtPmdwdHIoKTsgfQotcHJvdGVjdGVkOgotICAgc3RkOjpiYXNpY19zdHJlYW1idWY8Y2hhclQsIHRyYWl0cz4qIHNldGJ1ZihjaGFyX3R5cGUqIHMsIHN0cmVhbXNpemUgbik7Ci0gICB0eXBlbmFtZSBwYXJzZXJfYnVmPGNoYXJULCB0cmFpdHM+Ojpwb3NfdHlwZSBzZWVrcG9zKHBvc190eXBlIHNwLCA6OnN0ZDo6aW9zX2Jhc2U6Om9wZW5tb2RlIHdoaWNoKTsKLSAgIHR5cGVuYW1lIHBhcnNlcl9idWY8Y2hhclQsIHRyYWl0cz46OnBvc190eXBlIHNlZWtvZmYob2ZmX3R5cGUgb2ZmLCA6OnN0ZDo6aW9zX2Jhc2U6OnNlZWtkaXIgd2F5LCA6OnN0ZDo6aW9zX2Jhc2U6Om9wZW5tb2RlIHdoaWNoKTsKLXByaXZhdGU6Ci0gICBwYXJzZXJfYnVmJiBvcGVyYXRvcj0oY29uc3QgcGFyc2VyX2J1ZiYpOwotICAgcGFyc2VyX2J1Zihjb25zdCBwYXJzZXJfYnVmJik7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotc3RkOjpiYXNpY19zdHJlYW1idWY8Y2hhclQsIHRyYWl0cz4qCi1wYXJzZXJfYnVmPGNoYXJULCB0cmFpdHM+OjpzZXRidWYoY2hhcl90eXBlKiBzLCBzdHJlYW1zaXplIG4pCi17Ci0gICB0aGlzLT5zZXRnKHMsIHMsIHMgKyBuKTsKLSAgIHJldHVybiB0aGlzOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotdHlwZW5hbWUgcGFyc2VyX2J1ZjxjaGFyVCwgdHJhaXRzPjo6cG9zX3R5cGUKLXBhcnNlcl9idWY8Y2hhclQsIHRyYWl0cz46OnNlZWtvZmYob2ZmX3R5cGUgb2ZmLCA6OnN0ZDo6aW9zX2Jhc2U6OnNlZWtkaXIgd2F5LCA6OnN0ZDo6aW9zX2Jhc2U6Om9wZW5tb2RlIHdoaWNoKQotewotICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6aW50X3Q8c2l6ZW9mKHdheSkgKiBDSEFSX0JJVD46OmxlYXN0IGNhc3RfdHlwZTsKLQotICAgaWYod2hpY2ggJiA6OnN0ZDo6aW9zX2Jhc2U6Om91dCkKLSAgICAgIHJldHVybiBwb3NfdHlwZShvZmZfdHlwZSgtMSkpOwotICAgc3RkOjpwdHJkaWZmX3Qgc2l6ZSA9IHRoaXMtPmVncHRyKCkgLSB0aGlzLT5lYmFjaygpOwotICAgc3RkOjpwdHJkaWZmX3QgcG9zID0gdGhpcy0+Z3B0cigpIC0gdGhpcy0+ZWJhY2soKTsKLSAgIGNoYXJUKiBnID0gdGhpcy0+ZWJhY2soKTsKLSAgIHN3aXRjaChzdGF0aWNfY2FzdDxjYXN0X3R5cGU+KHdheSkpCi0gICB7Ci0gICBjYXNlIDo6c3RkOjppb3NfYmFzZTo6YmVnOgotICAgICAgaWYoKG9mZiA8IDApIHx8IChvZmYgPiBzaXplKSkKLSAgICAgICAgIHJldHVybiBwb3NfdHlwZShvZmZfdHlwZSgtMSkpOwotICAgICAgZWxzZQotICAgICAgICAgdGhpcy0+c2V0ZyhnLCBnICsgb2ZmLCBnICsgc2l6ZSk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgOjpzdGQ6Omlvc19iYXNlOjplbmQ6Ci0gICAgICBpZigob2ZmIDwgMCkgfHwgKG9mZiA+IHNpemUpKQotICAgICAgICAgcmV0dXJuIHBvc190eXBlKG9mZl90eXBlKC0xKSk7Ci0gICAgICBlbHNlCi0gICAgICAgICB0aGlzLT5zZXRnKGcsIGcgKyBzaXplIC0gb2ZmLCBnICsgc2l6ZSk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgOjpzdGQ6Omlvc19iYXNlOjpjdXI6Ci0gICB7Ci0gICAgICBzdGQ6OnB0cmRpZmZfdCBuZXdwb3MgPSBzdGF0aWNfY2FzdDxzdGQ6OnB0cmRpZmZfdD4ocG9zICsgb2ZmKTsKLSAgICAgIGlmKChuZXdwb3MgPCAwKSB8fCAobmV3cG9zID4gc2l6ZSkpCi0gICAgICAgICByZXR1cm4gcG9zX3R5cGUob2ZmX3R5cGUoLTEpKTsKLSAgICAgIGVsc2UKLSAgICAgICAgIHRoaXMtPnNldGcoZywgZyArIG5ld3BvcywgZyArIHNpemUpOwotICAgICAgYnJlYWs7Ci0gICB9Ci0gICBkZWZhdWx0OiA7Ci0gICB9Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MjQ0KQotI2VuZGlmCi0gICByZXR1cm4gc3RhdGljX2Nhc3Q8cG9zX3R5cGU+KHRoaXMtPmdwdHIoKSAtIHRoaXMtPmViYWNrKCkpOwotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLX0KLQotdGVtcGxhdGU8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLXR5cGVuYW1lIHBhcnNlcl9idWY8Y2hhclQsIHRyYWl0cz46OnBvc190eXBlCi1wYXJzZXJfYnVmPGNoYXJULCB0cmFpdHM+OjpzZWVrcG9zKHBvc190eXBlIHNwLCA6OnN0ZDo6aW9zX2Jhc2U6Om9wZW5tb2RlIHdoaWNoKQotewotICAgaWYod2hpY2ggJiA6OnN0ZDo6aW9zX2Jhc2U6Om91dCkKLSAgICAgIHJldHVybiBwb3NfdHlwZShvZmZfdHlwZSgtMSkpOwotICAgb2ZmX3R5cGUgc2l6ZSA9IHN0YXRpY19jYXN0PG9mZl90eXBlPih0aGlzLT5lZ3B0cigpIC0gdGhpcy0+ZWJhY2soKSk7Ci0gICBjaGFyVCogZyA9IHRoaXMtPmViYWNrKCk7Ci0gICBpZihvZmZfdHlwZShzcCkgPD0gc2l6ZSkKLSAgIHsKLSAgICAgIHRoaXMtPnNldGcoZywgZyArIG9mZl90eXBlKHNwKSwgZyArIHNpemUpOwotICAgfQotICAgcmV0dXJuIHBvc190eXBlKG9mZl90eXBlKC0xKSk7Ci19Ci0KLS8vCi0vLyBjbGFzcyBjcHBfcmVnZXhfdHJhaXRzX2Jhc2U6Ci0vLyBhY3RzIGFzIGEgY29udGFpbmVyIGZvciBsb2NhbGUgYW5kIHRoZSBmYWNldHMgd2UgYXJlIHVzaW5nLgotLy8KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXN0cnVjdCBjcHBfcmVnZXhfdHJhaXRzX2Jhc2UKLXsKLSAgIGNwcF9yZWdleF90cmFpdHNfYmFzZShjb25zdCBzdGQ6OmxvY2FsZSYgbCkKLSAgIHsgaW1idWUobCk7IH0KLSAgIHN0ZDo6bG9jYWxlIGltYnVlKGNvbnN0IHN0ZDo6bG9jYWxlJiBsKTsKLQotICAgc3RkOjpsb2NhbGUgbV9sb2NhbGU7Ci0gICBzdGQ6OmN0eXBlPGNoYXJUPiBjb25zdCogbV9wY3R5cGU7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9NRVNTQUdFUwotICAgc3RkOjptZXNzYWdlczxjaGFyVD4gY29uc3QqIG1fcG1lc3NhZ2VzOwotI2VuZGlmCi0gICBzdGQ6OmNvbGxhdGU8Y2hhclQ+IGNvbnN0KiBtX3Bjb2xsYXRlOwotCi0gICBib29sIG9wZXJhdG9yPChjb25zdCBjcHBfcmVnZXhfdHJhaXRzX2Jhc2UmIGIpY29uc3QKLSAgIHsKLSAgICAgIGlmKG1fcGN0eXBlID09IGIubV9wY3R5cGUpCi0gICAgICB7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9NRVNTQUdFUwotICAgICAgICAgaWYobV9wbWVzc2FnZXMgPT0gYi5tX3BtZXNzYWdlcykKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX3Bjb2xsYXRlIDwgYi5tX3Bjb2xsYXRlOwotICAgICAgICAgfQotICAgICAgICAgcmV0dXJuIG1fcG1lc3NhZ2VzIDwgYi5tX3BtZXNzYWdlczsKLSNlbHNlCi0gICAgICAgICByZXR1cm4gbV9wY29sbGF0ZSA8IGIubV9wY29sbGF0ZTsKLSNlbmRpZgotICAgICAgfQotICAgICAgcmV0dXJuIG1fcGN0eXBlIDwgYi5tX3BjdHlwZTsKLSAgIH0KLSAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBjcHBfcmVnZXhfdHJhaXRzX2Jhc2UmIGIpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiAobV9wY3R5cGUgPT0gYi5tX3BjdHlwZSkgCi0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9NRVNTQUdFUwotICAgICAgICAgJiYgKG1fcG1lc3NhZ2VzID09IGIubV9wbWVzc2FnZXMpIAotI2VuZGlmCi0gICAgICAgICAmJiAobV9wY29sbGF0ZSA9PSBiLm1fcGNvbGxhdGUpOwotICAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotc3RkOjpsb2NhbGUgY3BwX3JlZ2V4X3RyYWl0c19iYXNlPGNoYXJUPjo6aW1idWUoY29uc3Qgc3RkOjpsb2NhbGUmIGwpCi17Ci0gICBzdGQ6OmxvY2FsZSByZXN1bHQobV9sb2NhbGUpOwotICAgbV9sb2NhbGUgPSBsOwotICAgbV9wY3R5cGUgPSAmTkROQk9PU1RfVVNFX0ZBQ0VUKHN0ZDo6Y3R5cGU8Y2hhclQ+LCBsKTsKLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX01FU1NBR0VTCi0gICBtX3BtZXNzYWdlcyA9IE5ETkJPT1NUX0hBU19GQUNFVChzdGQ6Om1lc3NhZ2VzPGNoYXJUPiwgbCkgPyAmTkROQk9PU1RfVVNFX0ZBQ0VUKHN0ZDo6bWVzc2FnZXM8Y2hhclQ+LCBsKSA6IDA7Ci0jZW5kaWYKLSAgIG1fcGNvbGxhdGUgPSAmTkROQk9PU1RfVVNFX0ZBQ0VUKHN0ZDo6Y29sbGF0ZTxjaGFyVD4sIGwpOwotICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLy8KLS8vIGNsYXNzIGNwcF9yZWdleF90cmFpdHNfY2hhcl9sYXllcjoKLS8vIGltcGxlbWVudHMgbWV0aG9kcyB0aGF0IHJlcXVpcmUgc3BlY2lhbGlzYXRpb24gZm9yIG5hcnJvdyBjaGFyYWN0ZXJzOgotLy8KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLWNsYXNzIGNwcF9yZWdleF90cmFpdHNfY2hhcl9sYXllciA6IHB1YmxpYyBjcHBfcmVnZXhfdHJhaXRzX2Jhc2U8Y2hhclQ+Ci17Ci0gICB0eXBlZGVmIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiBzdHJpbmdfdHlwZTsKLSAgIHR5cGVkZWYgc3RkOjptYXA8Y2hhclQsIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3R5cGU+IG1hcF90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBtYXBfdHlwZTo6Y29uc3RfaXRlcmF0b3IgbWFwX2l0ZXJhdG9yX3R5cGU7Ci1wdWJsaWM6Ci0gICBjcHBfcmVnZXhfdHJhaXRzX2NoYXJfbGF5ZXIoY29uc3Qgc3RkOjpsb2NhbGUmIGwpCi0gICAgICA6IGNwcF9yZWdleF90cmFpdHNfYmFzZTxjaGFyVD4obCkKLSAgIHsKLSAgICAgIGluaXQoKTsKLSAgIH0KLSAgIGNwcF9yZWdleF90cmFpdHNfY2hhcl9sYXllcihjb25zdCBjcHBfcmVnZXhfdHJhaXRzX2Jhc2U8Y2hhclQ+JiBiKQotICAgICAgOiBjcHBfcmVnZXhfdHJhaXRzX2Jhc2U8Y2hhclQ+KGIpCi0gICB7Ci0gICAgICBpbml0KCk7Ci0gICB9Ci0gICB2b2lkIGluaXQoKTsKLQotICAgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfdHlwZSBzeW50YXhfdHlwZShjaGFyVCBjKWNvbnN0Ci0gICB7Ci0gICAgICBtYXBfaXRlcmF0b3JfdHlwZSBpID0gbV9jaGFyX21hcC5maW5kKGMpOwotICAgICAgcmV0dXJuICgoaSA9PSBtX2NoYXJfbWFwLmVuZCgpKSA/IDAgOiBpLT5zZWNvbmQpOwotICAgfQotICAgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3N5bnRheF90eXBlKGNoYXJUIGMpIGNvbnN0Ci0gICB7Ci0gICAgICBtYXBfaXRlcmF0b3JfdHlwZSBpID0gbV9jaGFyX21hcC5maW5kKGMpOwotICAgICAgaWYoaSA9PSBtX2NoYXJfbWFwLmVuZCgpKQotICAgICAgewotICAgICAgICAgaWYodGhpcy0+bV9wY3R5cGUtPmlzKHN0ZDo6Y3R5cGVfYmFzZTo6bG93ZXIsIGMpKSByZXR1cm4gcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9jbGFzczsKLSAgICAgICAgIGlmKHRoaXMtPm1fcGN0eXBlLT5pcyhzdGQ6OmN0eXBlX2Jhc2U6OnVwcGVyLCBjKSkgcmV0dXJuIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfbm90X2NsYXNzOwotICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gaS0+c2Vjb25kOwotICAgfQotCi1wcml2YXRlOgotICAgc3RyaW5nX3R5cGUgZ2V0X2RlZmF1bHRfbWVzc2FnZShyZWdleF9jb25zdGFudHM6OnN5bnRheF90eXBlKTsKLSAgIC8vIFRPRE86IHVzZSBhIGhhc2ggdGFibGUgd2hlbiBhdmFpbGFibGUhCi0gICBtYXBfdHlwZSBtX2NoYXJfbWFwOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotdm9pZCBjcHBfcmVnZXhfdHJhaXRzX2NoYXJfbGF5ZXI8Y2hhclQ+Ojppbml0KCkKLXsKLSAgIC8vIHdlIG5lZWQgdG8gc3RhcnQgYnkgaW5pdGlhbGlzaW5nIG91ciBzeW50YXggbWFwIHNvIHdlIGtub3cgd2hpY2gKLSAgIC8vIGNoYXJhY3RlciBpcyB1c2VkIGZvciB3aGljaCBwdXJwb3NlOgotI2lmbmRlZiBORE5CT09TVF9OT19TVERfTUVTU0FHRVMKLSNpZm5kZWYgX19JQk1DUFBfXwotICAgdHlwZW5hbWUgc3RkOjptZXNzYWdlczxjaGFyVD46OmNhdGFsb2cgY2F0ID0gc3RhdGljX2Nhc3Q8c3RkOjptZXNzYWdlczxjaGFyPjo6Y2F0YWxvZz4oLTEpOwotI2Vsc2UKLSAgIHR5cGVuYW1lIHN0ZDo6bWVzc2FnZXM8Y2hhclQ+OjpjYXRhbG9nIGNhdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8c3RkOjptZXNzYWdlczxjaGFyPjo6Y2F0YWxvZz4oLTEpOwotI2VuZGlmCi0gICBzdGQ6OnN0cmluZyBjYXRfbmFtZShjcHBfcmVnZXhfdHJhaXRzPGNoYXJUPjo6Z2V0X2NhdGFsb2dfbmFtZSgpKTsKLSAgIGlmKGNhdF9uYW1lLnNpemUoKSAmJiAodGhpcy0+bV9wbWVzc2FnZXMgIT0gMCkpCi0gICB7Ci0gICAgICBjYXQgPSB0aGlzLT5tX3BtZXNzYWdlcy0+b3BlbigKLSAgICAgICAgIGNhdF9uYW1lLCAKLSAgICAgICAgIHRoaXMtPm1fbG9jYWxlKTsKLSAgICAgIGlmKChpbnQpY2F0IDwgMCkKLSAgICAgIHsKLSAgICAgICAgIHN0ZDo6c3RyaW5nIG0oIlVuYWJsZSB0byBvcGVuIG1lc3NhZ2UgY2F0YWxvZzogIik7Ci0gICAgICAgICBzdGQ6OnJ1bnRpbWVfZXJyb3IgZXJyKG0gKyBjYXRfbmFtZSk7Ci0gICAgICAgICBuZG5ib29zdDo6cmVfZGV0YWlsOjpyYWlzZV9ydW50aW1lX2Vycm9yKGVycik7Ci0gICAgICB9Ci0gICB9Ci0gICAvLwotICAgLy8gaWYgd2UgaGF2ZSBhIHZhbGlkIGNhdGFsb2cgdGhlbiBsb2FkIG91ciBtZXNzYWdlczoKLSAgIC8vCi0gICBpZigoaW50KWNhdCA+PSAwKQotICAgewotI2lmbmRlZiBORE5CT09TVF9OT19FWENFUFRJT05TCi0gICAgICB0cnl7Ci0jZW5kaWYKLSAgICAgICAgIGZvcihyZWdleF9jb25zdGFudHM6OnN5bnRheF90eXBlIGkgPSAxOyBpIDwgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfbWF4OyArK2kpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBzdHJpbmdfdHlwZSBtc3MgPSB0aGlzLT5tX3BtZXNzYWdlcy0+Z2V0KGNhdCwgMCwgaSwgZ2V0X2RlZmF1bHRfbWVzc2FnZShpKSk7Ci0gICAgICAgICAgICBmb3IodHlwZW5hbWUgc3RyaW5nX3R5cGU6OnNpemVfdHlwZSBqID0gMDsgaiA8IG1zcy5zaXplKCk7ICsraikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIG1fY2hhcl9tYXBbbXNzW2pdXSA9IGk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgICAgICB0aGlzLT5tX3BtZXNzYWdlcy0+Y2xvc2UoY2F0KTsKLSNpZm5kZWYgTkROQk9PU1RfTk9fRVhDRVBUSU9OUwotICAgICAgfQotICAgICAgY2F0Y2goLi4uKQotICAgICAgewotICAgICAgICAgaWYodGhpcy0+bV9wbWVzc2FnZXMpCi0gICAgICAgICAgICB0aGlzLT5tX3BtZXNzYWdlcy0+Y2xvc2UoY2F0KTsKLSAgICAgICAgIHRocm93OwotICAgICAgfQotI2VuZGlmCi0gICB9Ci0gICBlbHNlCi0gICB7Ci0jZW5kaWYKLSAgICAgIGZvcihyZWdleF9jb25zdGFudHM6OnN5bnRheF90eXBlIGkgPSAxOyBpIDwgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfbWF4OyArK2kpCi0gICAgICB7Ci0gICAgICAgICBjb25zdCBjaGFyKiBwdHIgPSBnZXRfZGVmYXVsdF9zeW50YXgoaSk7Ci0gICAgICAgICB3aGlsZShwdHIgJiYgKnB0cikKLSAgICAgICAgIHsKLSAgICAgICAgICAgIG1fY2hhcl9tYXBbdGhpcy0+bV9wY3R5cGUtPndpZGVuKCpwdHIpXSA9IGk7Ci0gICAgICAgICAgICArK3B0cjsKLSAgICAgICAgIH0KLSAgICAgIH0KLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX01FU1NBR0VTCi0gICB9Ci0jZW5kaWYKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotdHlwZW5hbWUgY3BwX3JlZ2V4X3RyYWl0c19jaGFyX2xheWVyPGNoYXJUPjo6c3RyaW5nX3R5cGUgCi0gICBjcHBfcmVnZXhfdHJhaXRzX2NoYXJfbGF5ZXI8Y2hhclQ+OjpnZXRfZGVmYXVsdF9tZXNzYWdlKHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3R5cGUgaSkKLXsKLSAgIGNvbnN0IGNoYXIqIHB0ciA9IGdldF9kZWZhdWx0X3N5bnRheChpKTsKLSAgIHN0cmluZ190eXBlIHJlc3VsdDsKLSAgIHdoaWxlKHB0ciAmJiAqcHRyKQotICAgewotICAgICAgcmVzdWx0LmFwcGVuZCgxLCB0aGlzLT5tX3BjdHlwZS0+d2lkZW4oKnB0cikpOwotICAgICAgKytwdHI7Ci0gICB9Ci0gICByZXR1cm4gcmVzdWx0OwotfQotCi0vLwotLy8gc3BlY2lhbGlzZWQgdmVyc2lvbiBmb3IgbmFycm93IGNoYXJhY3RlcnM6Ci0vLwotdGVtcGxhdGUgPD4KLWNsYXNzIE5ETkJPT1NUX1JFR0VYX0RFQ0wgY3BwX3JlZ2V4X3RyYWl0c19jaGFyX2xheWVyPGNoYXI+IDogcHVibGljIGNwcF9yZWdleF90cmFpdHNfYmFzZTxjaGFyPgotewotICAgdHlwZWRlZiBzdGQ6OnN0cmluZyBzdHJpbmdfdHlwZTsKLXB1YmxpYzoKLSAgIGNwcF9yZWdleF90cmFpdHNfY2hhcl9sYXllcihjb25zdCBzdGQ6OmxvY2FsZSYgbCkKLSAgIDogY3BwX3JlZ2V4X3RyYWl0c19iYXNlPGNoYXI+KGwpCi0gICB7Ci0gICAgICBpbml0KCk7Ci0gICB9Ci0gICBjcHBfcmVnZXhfdHJhaXRzX2NoYXJfbGF5ZXIoY29uc3QgY3BwX3JlZ2V4X3RyYWl0c19iYXNlPGNoYXI+JiBsKQotICAgOiBjcHBfcmVnZXhfdHJhaXRzX2Jhc2U8Y2hhcj4obCkKLSAgIHsKLSAgICAgIGluaXQoKTsKLSAgIH0KLQotICAgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfdHlwZSBzeW50YXhfdHlwZShjaGFyIGMpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX2NoYXJfbWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGMpXTsKLSAgIH0KLSAgIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV9zeW50YXhfdHlwZShjaGFyIGMpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9jaGFyX21hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjKV07Ci0gICB9Ci0KLXByaXZhdGU6Ci0gICByZWdleF9jb25zdGFudHM6OnN5bnRheF90eXBlIG1fY2hhcl9tYXBbMXUgPDwgQ0hBUl9CSVRdOwotICAgdm9pZCBpbml0KCk7Ci19OwotCi0jaWZkZWYgTkROQk9PU1RfUkVHRVhfQlVHR1lfQ1RZUEVfRkFDRVQKLWVudW0KLXsKLSAgIGNoYXJfY2xhc3Nfc3BhY2U9MTw8MCwgCi0gICBjaGFyX2NsYXNzX3ByaW50PTE8PDEsIAotICAgY2hhcl9jbGFzc19jbnRybD0xPDwyLCAKLSAgIGNoYXJfY2xhc3NfdXBwZXI9MTw8MywgCi0gICBjaGFyX2NsYXNzX2xvd2VyPTE8PDQsCi0gICBjaGFyX2NsYXNzX2FscGhhPTE8PDUsIAotICAgY2hhcl9jbGFzc19kaWdpdD0xPDw2LCAKLSAgIGNoYXJfY2xhc3NfcHVuY3Q9MTw8NywgCi0gICBjaGFyX2NsYXNzX3hkaWdpdD0xPDw4LAotICAgY2hhcl9jbGFzc19hbG51bT1jaGFyX2NsYXNzX2FscGhhfGNoYXJfY2xhc3NfZGlnaXQsIAotICAgY2hhcl9jbGFzc19ncmFwaD1jaGFyX2NsYXNzX2FsbnVtfGNoYXJfY2xhc3NfcHVuY3QsCi0gICBjaGFyX2NsYXNzX2JsYW5rPTE8PDksCi0gICBjaGFyX2NsYXNzX3dvcmQ9MTw8MTAsCi0gICBjaGFyX2NsYXNzX3VuaWNvZGU9MTw8MTEsCi0gICBjaGFyX2NsYXNzX2hvcml6b250YWxfc3BhY2U9MTw8MTIsCi0gICBjaGFyX2NsYXNzX3ZlcnRpY2FsX3NwYWNlPTE8PDEzCi19OwotCi0jZW5kaWYKLQotLy8KLS8vIGNsYXNzIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb246Ci0vLyBwcm92aWRlcyBwaW1wbCBpbXBsZW1lbnRhdGlvbiBmb3IgY3BwX3JlZ2V4X3RyYWl0cy4KLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1jbGFzcyBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uIDogcHVibGljIGNwcF9yZWdleF90cmFpdHNfY2hhcl9sYXllcjxjaGFyVD4KLXsKLXB1YmxpYzoKLSAgIHR5cGVkZWYgdHlwZW5hbWUgY3BwX3JlZ2V4X3RyYWl0czxjaGFyVD46OmNoYXJfY2xhc3NfdHlwZSBjaGFyX2NsYXNzX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6Y3R5cGU8Y2hhclQ+OjptYXNrICAgICAgICAgICAgICAgICAgbmF0aXZlX21hc2tfdHlwZTsKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfQlVHR1lfQ1RZUEVfRkFDRVQKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChjaGFyX2NsYXNzX3R5cGUsIG1hc2tfYmxhbmsgPSAxdSA8PCAyNCk7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoY2hhcl9jbGFzc190eXBlLCBtYXNrX3dvcmQgPSAxdSA8PCAyNSk7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoY2hhcl9jbGFzc190eXBlLCBtYXNrX3VuaWNvZGUgPSAxdSA8PCAyNik7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoY2hhcl9jbGFzc190eXBlLCBtYXNrX2hvcml6b250YWwgPSAxdSA8PCAyNyk7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoY2hhcl9jbGFzc190eXBlLCBtYXNrX3ZlcnRpY2FsID0gMXUgPDwgMjgpOwotI2VuZGlmCi0KLSAgIHR5cGVkZWYgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+IHN0cmluZ190eXBlOwotICAgdHlwZWRlZiBjaGFyVCBjaGFyX3R5cGU7Ci0gICAvL2NwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb24oKTsKLSAgIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb24oY29uc3Qgc3RkOjpsb2NhbGUmIGwpCi0gICAgICA6IGNwcF9yZWdleF90cmFpdHNfY2hhcl9sYXllcjxjaGFyVD4obCkKLSAgIHsKLSAgICAgIGluaXQoKTsKLSAgIH0KLSAgIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb24oY29uc3QgY3BwX3JlZ2V4X3RyYWl0c19iYXNlPGNoYXJUPiYgbCkKLSAgICAgIDogY3BwX3JlZ2V4X3RyYWl0c19jaGFyX2xheWVyPGNoYXJUPihsKQotICAgewotICAgICAgaW5pdCgpOwotICAgfQotICAgc3RkOjpzdHJpbmcgZXJyb3Jfc3RyaW5nKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfdHlwZSBuKSBjb25zdAotICAgewotICAgICAgaWYoIW1fZXJyb3Jfc3RyaW5ncy5lbXB0eSgpKQotICAgICAgewotICAgICAgICAgc3RkOjptYXA8aW50LCBzdGQ6OnN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIHAgPSBtX2Vycm9yX3N0cmluZ3MuZmluZChuKTsKLSAgICAgICAgIHJldHVybiAocCA9PSBtX2Vycm9yX3N0cmluZ3MuZW5kKCkpID8gc3RkOjpzdHJpbmcoZ2V0X2RlZmF1bHRfZXJyb3Jfc3RyaW5nKG4pKSA6IHAtPnNlY29uZDsKLSAgICAgIH0KLSAgICAgIHJldHVybiBnZXRfZGVmYXVsdF9lcnJvcl9zdHJpbmcobik7Ci0gICB9Ci0gICBjaGFyX2NsYXNzX3R5cGUgbG9va3VwX2NsYXNzbmFtZShjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMikgY29uc3QKLSAgIHsKLSAgICAgIGNoYXJfY2xhc3NfdHlwZSByZXN1bHQgPSBsb29rdXBfY2xhc3NuYW1lX2ltcChwMSwgcDIpOwotICAgICAgaWYocmVzdWx0ID09IDApCi0gICAgICB7Ci0gICAgICAgICBzdHJpbmdfdHlwZSB0ZW1wKHAxLCBwMik7Ci0gICAgICAgICB0aGlzLT5tX3BjdHlwZS0+dG9sb3dlcigmKnRlbXAuYmVnaW4oKSwgJip0ZW1wLmJlZ2luKCkgKyB0ZW1wLnNpemUoKSk7Ci0gICAgICAgICByZXN1bHQgPSBsb29rdXBfY2xhc3NuYW1lX2ltcCgmKnRlbXAuYmVnaW4oKSwgJip0ZW1wLmJlZ2luKCkgKyB0ZW1wLnNpemUoKSk7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gcmVzdWx0OwotICAgfQotICAgc3RyaW5nX3R5cGUgbG9va3VwX2NvbGxhdGVuYW1lKGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyKSBjb25zdDsKLSAgIHN0cmluZ190eXBlIHRyYW5zZm9ybV9wcmltYXJ5KGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyKSBjb25zdDsKLSAgIHN0cmluZ190eXBlIHRyYW5zZm9ybShjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMikgY29uc3Q7Ci1wcml2YXRlOgotICAgc3RkOjptYXA8aW50LCBzdGQ6OnN0cmluZz4gICAgIG1fZXJyb3Jfc3RyaW5nczsgICAvLyBlcnJvciBtZXNzYWdlcyBpbmRleGVkIGJ5IG51bWJlcmljIElECi0gICBzdGQ6Om1hcDxzdHJpbmdfdHlwZSwgY2hhcl9jbGFzc190eXBlPiAgbV9jdXN0b21fY2xhc3NfbmFtZXM7IC8vIGNoYXJhY3RlciBjbGFzcyBuYW1lcwotICAgc3RkOjptYXA8c3RyaW5nX3R5cGUsIHN0cmluZ190eXBlPiAgICAgIG1fY3VzdG9tX2NvbGxhdGVfbmFtZXM7IC8vIGNvbGxhdGluZyBlbGVtZW50IG5hbWVzCi0gICB1bnNpZ25lZCAgICAgICAgICAgICAgICAgICAgICAgbV9jb2xsYXRlX3R5cGU7ICAgIC8vIHRoZSBmb3JtIG9mIHRoZSBjb2xsYXRpb24gc3RyaW5nCi0gICBjaGFyVCAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jb2xsYXRlX2RlbGltOyAgIC8vIHRoZSBjb2xsYXRpb24gZ3JvdXAgZGVsaW1pdGVyCi0gICAvLwotICAgLy8gaGVscGVyczoKLSAgIC8vCi0gICBjaGFyX2NsYXNzX3R5cGUgbG9va3VwX2NsYXNzbmFtZV9pbXAoY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIpIGNvbnN0OwotICAgdm9pZCBpbml0KCk7Ci0jaWZkZWYgTkROQk9PU1RfUkVHRVhfQlVHR1lfQ1RZUEVfRkFDRVQKLXB1YmxpYzoKLSAgIGJvb2wgaXNjdHlwZShjaGFyVCBjLCBjaGFyX2NsYXNzX3R5cGUgbSljb25zdDsKLSNlbmRpZgotfTsKLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9CVUdHWV9DVFlQRV9GQUNFVAotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lOQ0xBU1NfTUVNQkVSX0lOSVRJQUxJWkFUSU9OKQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci10eXBlbmFtZSBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6Y2hhcl9jbGFzc190eXBlIGNvbnN0IGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX2JsYW5rOwotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotdHlwZW5hbWUgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46OmNoYXJfY2xhc3NfdHlwZSBjb25zdCBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza193b3JkOwotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotdHlwZW5hbWUgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46OmNoYXJfY2xhc3NfdHlwZSBjb25zdCBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza191bmljb2RlOwotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotdHlwZW5hbWUgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46OmNoYXJfY2xhc3NfdHlwZSBjb25zdCBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza192ZXJ0aWNhbDsKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXR5cGVuYW1lIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjpjaGFyX2NsYXNzX3R5cGUgY29uc3QgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfaG9yaXpvbnRhbDsKLQotI2VuZGlmCi0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotdHlwZW5hbWUgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46OnN0cmluZ190eXBlIAotICAgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46OnRyYW5zZm9ybV9wcmltYXJ5KGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyKSBjb25zdAotewotICAgLy8KLSAgIC8vIFBSRUNPTkRJVElPTlM6Ci0gICAvLwotICAgLy8gQSBidWcgaW4gZ2NjIDMuMiAoYW5kIG1heWJlIG90aGVyIHZlcnNpb25zIGFzIHdlbGwpIHRyZWF0cwotICAgLy8gcDEgYXMgYSBudWxsIHRlcm1pbmF0ZWQgc3RyaW5nLCBmb3IgZWZmaWNpZW5jeSByZWFzb25zIAotICAgLy8gd2Ugd29yayBhcm91bmQgdGhpcyBlbHNld2hlcmUsIGJ1dCBqdXN0IGFzc2VydCBoZXJlIHRoYXQKLSAgIC8vIHdlIGFkaGVyZSB0byBnY2MncyAoYnVnZ3kpIHByZWNvbmRpdGlvbnMuLi4KLSAgIC8vCi0gICBORE5CT09TVF9BU1NFUlQoKnAyID09IDApOwotCi0gICBzdHJpbmdfdHlwZSByZXN1bHQ7Ci0gICAvLwotICAgLy8gc3dhbGxvd2luZyBhbGwgZXhjZXB0aW9ucyBoZXJlIGlzIGEgYmFkIGlkZWEKLSAgIC8vIGhvd2V2ZXIgYXQgbGVhc3Qgb25lIHN0ZCBsaWIgd2lsbCBhbHdheXMgdGhyb3cKLSAgIC8vIHN0ZDo6YmFkX2FsbG9jIGZvciBjZXJ0YWluIGFyZ3VtZW50cy4uLgotICAgLy8KLSNpZm5kZWYgTkROQk9PU1RfTk9fRVhDRVBUSU9OUwotICAgdHJ5ewotI2VuZGlmCi0gICAgICAvLwotICAgICAgLy8gV2hhdCB3ZSBkbyBoZXJlIGRlcGVuZHMgdXBvbiB0aGUgZm9ybWF0IG9mIHRoZSBzb3J0IGtleSByZXR1cm5lZCBieQotICAgICAgLy8gc29ydCBrZXkgcmV0dXJuZWQgYnkgdGhpcy0+dHJhbnNmb3JtOgotICAgICAgLy8KLSAgICAgIHN3aXRjaChtX2NvbGxhdGVfdHlwZSkKLSAgICAgIHsKLSAgICAgIGNhc2Ugc29ydF9DOgotICAgICAgY2FzZSBzb3J0X3Vua25vd246Ci0gICAgICAgICAvLyB0aGUgYmVzdCB3ZSBjYW4gZG8gaXMgdHJhbnNsYXRlIHRvIGxvd2VyIGNhc2UsIHRoZW4gZ2V0IGEgcmVndWxhciBzb3J0IGtleToKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHJlc3VsdC5hc3NpZ24ocDEsIHAyKTsKLSAgICAgICAgICAgIHRoaXMtPm1fcGN0eXBlLT50b2xvd2VyKCYqcmVzdWx0LmJlZ2luKCksICYqcmVzdWx0LmJlZ2luKCkgKyByZXN1bHQuc2l6ZSgpKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMtPm1fcGNvbGxhdGUtPnRyYW5zZm9ybSgmKnJlc3VsdC5iZWdpbigpLCAmKnJlc3VsdC5iZWdpbigpICsgcmVzdWx0LnNpemUoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgIH0KLSAgICAgIGNhc2Ugc29ydF9maXhlZDoKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIGdldCBhIHJlZ3VsYXIgc29ydCBrZXksIGFuZCB0aGVuIHRydW5jYXRlIGl0OgotICAgICAgICAgICAgcmVzdWx0LmFzc2lnbih0aGlzLT5tX3Bjb2xsYXRlLT50cmFuc2Zvcm0ocDEsIHAyKSk7Ci0gICAgICAgICAgICByZXN1bHQuZXJhc2UodGhpcy0+bV9jb2xsYXRlX2RlbGltKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotICAgICAgY2FzZSBzb3J0X2RlbGltOgotICAgICAgICAgICAgLy8gZ2V0IGEgcmVndWxhciBzb3J0IGtleSwgYW5kIHRoZW4gdHJ1bmNhdGUgZXZlcnl0aGluZyBhZnRlciB0aGUgZGVsaW06Ci0gICAgICAgICAgICByZXN1bHQuYXNzaWduKHRoaXMtPm1fcGNvbGxhdGUtPnRyYW5zZm9ybShwMSwgcDIpKTsKLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGk7Ci0gICAgICAgICAgICBmb3IoaSA9IDA7IGkgPCByZXN1bHQuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBpZihyZXN1bHRbaV0gPT0gbV9jb2xsYXRlX2RlbGltKQotICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXN1bHQuZXJhc2UoaSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgIH0KLSNpZm5kZWYgTkROQk9PU1RfTk9fRVhDRVBUSU9OUwotICAgfWNhdGNoKC4uLil7fQotI2VuZGlmCi0gICB3aGlsZShyZXN1bHQuc2l6ZSgpICYmIChjaGFyVCgwKSA9PSAqcmVzdWx0LnJiZWdpbigpKSkKLSAgICAgIHJlc3VsdC5lcmFzZShyZXN1bHQuc2l6ZSgpIC0gMSk7Ci0gICBpZihyZXN1bHQuZW1wdHkoKSkKLSAgIHsKLSAgICAgIC8vIGNoYXJhY3RlciBpcyBpZ25vcmFibGUgYXQgdGhlIHByaW1hcnkgbGV2ZWw6Ci0gICAgICByZXN1bHQgPSBzdHJpbmdfdHlwZSgxLCBjaGFyVCgwKSk7Ci0gICB9Ci0gICByZXR1cm4gcmVzdWx0OwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci10eXBlbmFtZSBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6c3RyaW5nX3R5cGUgCi0gICBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6dHJhbnNmb3JtKGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyKSBjb25zdAotewotICAgLy8KLSAgIC8vIFBSRUNPTkRJVElPTlM6Ci0gICAvLwotICAgLy8gQSBidWcgaW4gZ2NjIDMuMiAoYW5kIG1heWJlIG90aGVyIHZlcnNpb25zIGFzIHdlbGwpIHRyZWF0cwotICAgLy8gcDEgYXMgYSBudWxsIHRlcm1pbmF0ZWQgc3RyaW5nLCBmb3IgZWZmaWNpZW5jeSByZWFzb25zIAotICAgLy8gd2Ugd29yayBhcm91bmQgdGhpcyBlbHNld2hlcmUsIGJ1dCBqdXN0IGFzc2VydCBoZXJlIHRoYXQKLSAgIC8vIHdlIGFkaGVyZSB0byBnY2MncyAoYnVnZ3kpIHByZWNvbmRpdGlvbnMuLi4KLSAgIC8vCi0gICBORE5CT09TVF9BU1NFUlQoKnAyID09IDApOwotICAgLy8KLSAgIC8vIHN3YWxsb3dpbmcgYWxsIGV4Y2VwdGlvbnMgaGVyZSBpcyBhIGJhZCBpZGVhCi0gICAvLyBob3dldmVyIGF0IGxlYXN0IG9uZSBzdGQgbGliIHdpbGwgYWx3YXlzIHRocm93Ci0gICAvLyBzdGQ6OmJhZF9hbGxvYyBmb3IgY2VydGFpbiBhcmd1bWVudHMuLi4KLSAgIC8vCi0gICBzdHJpbmdfdHlwZSByZXN1bHQ7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLSAgIHRyeXsKLSNlbmRpZgotICAgICAgcmVzdWx0ID0gdGhpcy0+bV9wY29sbGF0ZS0+dHJhbnNmb3JtKHAxLCBwMik7Ci0gICAgICAvLwotICAgICAgLy8gQm9ybGFuZCdzIFNUTFBvcnQgdmVyc2lvbiByZXR1cm5zIGEgTlVMTC10ZXJtaW5hdGVkCi0gICAgICAvLyBzdHJpbmcgdGhhdCBoYXMgZ2FyYmFnZSBhdCB0aGUgZW5kIC0gZWFjaCBjYWxsIHRvCi0gICAgICAvLyBzdGQ6OmNvbGxhdGU8d2NoYXJfdD46OnRyYW5zZm9ybSByZXR1cm5zIGEgZGlmZmVyZW50IHN0cmluZyEKLSAgICAgIC8vIFNvIGFzIGEgd29ya2Fyb3VuZCwgd2UnbGwgdHJ1bmNhdGUgdGhlIHN0cmluZyBhdCB0aGUgZmlyc3QgTlVMTAotICAgICAgLy8gd2hpY2ggX3NlZW1zXyB0byB3b3JrLi4uLgotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4NTgwKQotICAgICAgcmVzdWx0LmVyYXNlKHJlc3VsdC5maW5kKGNoYXJUKDApKSk7Ci0jZWxzZQotICAgICAgLy8KLSAgICAgIC8vIHNvbWUgaW1wbGVtZW50YXRpb25zIChEaW5rdW13YXJlKSBhcHBlbmQgdW5uZWNlc3NhcnkgdHJhaWxpbmcgXDAnczoKLSAgICAgIHdoaWxlKHJlc3VsdC5zaXplKCkgJiYgKGNoYXJUKDApID09ICpyZXN1bHQucmJlZ2luKCkpKQotICAgICAgICAgcmVzdWx0LmVyYXNlKHJlc3VsdC5zaXplKCkgLSAxKTsKLSNlbmRpZgotICAgICAgTkROQk9PU1RfQVNTRVJUKHN0ZDo6ZmluZChyZXN1bHQuYmVnaW4oKSwgcmVzdWx0LmVuZCgpLCBjaGFyVCgwKSkgPT0gcmVzdWx0LmVuZCgpKTsKLSNpZm5kZWYgTkROQk9PU1RfTk9fRVhDRVBUSU9OUwotICAgfQotICAgY2F0Y2goLi4uKQotICAgewotICAgfQotI2VuZGlmCi0gICByZXR1cm4gcmVzdWx0OwotfQotCi0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXR5cGVuYW1lIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjpzdHJpbmdfdHlwZSAKLSAgIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+Ojpsb29rdXBfY29sbGF0ZW5hbWUoY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIpIGNvbnN0Ci17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6bWFwPHN0cmluZ190eXBlLCBzdHJpbmdfdHlwZT46OmNvbnN0X2l0ZXJhdG9yIGl0ZXJfdHlwZTsKLSAgIGlmKG1fY3VzdG9tX2NvbGxhdGVfbmFtZXMuc2l6ZSgpKQotICAgewotICAgICAgaXRlcl90eXBlIHBvcyA9IG1fY3VzdG9tX2NvbGxhdGVfbmFtZXMuZmluZChzdHJpbmdfdHlwZShwMSwgcDIpKTsKLSAgICAgIGlmKHBvcyAhPSBtX2N1c3RvbV9jb2xsYXRlX25hbWVzLmVuZCgpKQotICAgICAgICAgcmV0dXJuIHBvcy0+c2Vjb25kOwotICAgfQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFRF9JVEVSQVRPUl9DT05TVFJVQ1RPUlMpXAotICAgICAgICAgICAgICAgJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKVwKLSAgICAgICAgICAgICAgICYmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPD0gMHgwNTUxKQotICAgc3RkOjpzdHJpbmcgbmFtZShwMSwgcDIpOwotI2Vsc2UKLSAgIHN0ZDo6c3RyaW5nIG5hbWU7Ci0gICBjb25zdCBjaGFyVCogcDAgPSBwMTsKLSAgIHdoaWxlKHAwICE9IHAyKQotICAgICAgbmFtZS5hcHBlbmQoMSwgY2hhcigqcDArKykpOwotI2VuZGlmCi0gICBuYW1lID0gbG9va3VwX2RlZmF1bHRfY29sbGF0ZV9uYW1lKG5hbWUpOwotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFRF9JVEVSQVRPUl9DT05TVFJVQ1RPUlMpXAotICAgICAgICAgICAgICAgJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKVwKLSAgICAgICAgICAgICAgICYmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPD0gMHgwNTUxKQotICAgaWYobmFtZS5zaXplKCkpCi0gICAgICByZXR1cm4gc3RyaW5nX3R5cGUobmFtZS5iZWdpbigpLCBuYW1lLmVuZCgpKTsKLSNlbHNlCi0gICBpZihuYW1lLnNpemUoKSkKLSAgIHsKLSAgICAgIHN0cmluZ190eXBlIHJlc3VsdDsKLSAgICAgIHR5cGVkZWYgc3RkOjpzdHJpbmc6OmNvbnN0X2l0ZXJhdG9yIGl0ZXI7Ci0gICAgICBpdGVyIGIgPSBuYW1lLmJlZ2luKCk7Ci0gICAgICBpdGVyIGUgPSBuYW1lLmVuZCgpOwotICAgICAgd2hpbGUoYiAhPSBlKQotICAgICAgICAgcmVzdWx0LmFwcGVuZCgxLCBjaGFyVCgqYisrKSk7Ci0gICAgICByZXR1cm4gcmVzdWx0OwotICAgfQotI2VuZGlmCi0gICBpZihwMiAtIHAxID09IDEpCi0gICAgICByZXR1cm4gc3RyaW5nX3R5cGUoMSwgKnAxKTsKLSAgIHJldHVybiBzdHJpbmdfdHlwZSgpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci12b2lkIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+Ojppbml0KCkKLXsKLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX01FU1NBR0VTCi0jaWZuZGVmIF9fSUJNQ1BQX18KLSAgIHR5cGVuYW1lIHN0ZDo6bWVzc2FnZXM8Y2hhclQ+OjpjYXRhbG9nIGNhdCA9IHN0YXRpY19jYXN0PHN0ZDo6bWVzc2FnZXM8Y2hhcj46OmNhdGFsb2c+KC0xKTsKLSNlbHNlCi0gICB0eXBlbmFtZSBzdGQ6Om1lc3NhZ2VzPGNoYXJUPjo6Y2F0YWxvZyBjYXQgPSByZWludGVycHJldF9jYXN0PHN0ZDo6bWVzc2FnZXM8Y2hhcj46OmNhdGFsb2c+KC0xKTsKLSNlbmRpZgotICAgc3RkOjpzdHJpbmcgY2F0X25hbWUoY3BwX3JlZ2V4X3RyYWl0czxjaGFyVD46OmdldF9jYXRhbG9nX25hbWUoKSk7Ci0gICBpZihjYXRfbmFtZS5zaXplKCkgJiYgKHRoaXMtPm1fcG1lc3NhZ2VzICE9IDApKQotICAgewotICAgICAgY2F0ID0gdGhpcy0+bV9wbWVzc2FnZXMtPm9wZW4oCi0gICAgICAgICBjYXRfbmFtZSwgCi0gICAgICAgICB0aGlzLT5tX2xvY2FsZSk7Ci0gICAgICBpZigoaW50KWNhdCA8IDApCi0gICAgICB7Ci0gICAgICAgICBzdGQ6OnN0cmluZyBtKCJVbmFibGUgdG8gb3BlbiBtZXNzYWdlIGNhdGFsb2c6ICIpOwotICAgICAgICAgc3RkOjpydW50aW1lX2Vycm9yIGVycihtICsgY2F0X25hbWUpOwotICAgICAgICAgbmRuYm9vc3Q6OnJlX2RldGFpbDo6cmFpc2VfcnVudGltZV9lcnJvcihlcnIpOwotICAgICAgfQotICAgfQotICAgLy8KLSAgIC8vIGlmIHdlIGhhdmUgYSB2YWxpZCBjYXRhbG9nIHRoZW4gbG9hZCBvdXIgbWVzc2FnZXM6Ci0gICAvLwotICAgaWYoKGludCljYXQgPj0gMCkKLSAgIHsKLSAgICAgIC8vCi0gICAgICAvLyBFcnJvciBtZXNzYWdlczoKLSAgICAgIC8vCi0gICAgICBmb3IobmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfdHlwZSBpID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfdHlwZT4oMCk7IAotICAgICAgICAgaSA8PSBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjplcnJvcl91bmtub3duOyAKLSAgICAgICAgIGkgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjplcnJvcl90eXBlPihpICsgMSkpCi0gICAgICB7Ci0gICAgICAgICBjb25zdCBjaGFyKiBwID0gZ2V0X2RlZmF1bHRfZXJyb3Jfc3RyaW5nKGkpOwotICAgICAgICAgc3RyaW5nX3R5cGUgZGVmYXVsdF9tZXNzYWdlOwotICAgICAgICAgd2hpbGUoKnApCi0gICAgICAgICB7Ci0gICAgICAgICAgICBkZWZhdWx0X21lc3NhZ2UuYXBwZW5kKDEsIHRoaXMtPm1fcGN0eXBlLT53aWRlbigqcCkpOwotICAgICAgICAgICAgKytwOwotICAgICAgICAgfQotICAgICAgICAgc3RyaW5nX3R5cGUgcyA9IHRoaXMtPm1fcG1lc3NhZ2VzLT5nZXQoY2F0LCAwLCBpKzIwMCwgZGVmYXVsdF9tZXNzYWdlKTsKLSAgICAgICAgIHN0ZDo6c3RyaW5nIHJlc3VsdDsKLSAgICAgICAgIGZvcihzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIGogPSAwOyBqIDwgcy5zaXplKCk7ICsraikKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoMSwgdGhpcy0+bV9wY3R5cGUtPm5hcnJvdyhzW2pdLCAwKSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBtX2Vycm9yX3N0cmluZ3NbaV0gPSByZXN1bHQ7Ci0gICAgICB9Ci0gICAgICAvLwotICAgICAgLy8gQ3VzdG9tIGNsYXNzIG5hbWVzOgotICAgICAgLy8KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfQlVHR1lfQ1RZUEVfRkFDRVQKLSAgICAgIHN0YXRpYyBjb25zdCBjaGFyX2NsYXNzX3R5cGUgbWFza3NbMTZdID0gCi0gICAgICB7Ci0gICAgICAgICBzdGQ6OmN0eXBlPGNoYXJUPjo6YWxudW0sCi0gICAgICAgICBzdGQ6OmN0eXBlPGNoYXJUPjo6YWxwaGEsCi0gICAgICAgICBzdGQ6OmN0eXBlPGNoYXJUPjo6Y250cmwsCi0gICAgICAgICBzdGQ6OmN0eXBlPGNoYXJUPjo6ZGlnaXQsCi0gICAgICAgICBzdGQ6OmN0eXBlPGNoYXJUPjo6Z3JhcGgsCi0gICAgICAgICBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza19ob3Jpem9udGFsLAotICAgICAgICAgc3RkOjpjdHlwZTxjaGFyVD46Omxvd2VyLAotICAgICAgICAgc3RkOjpjdHlwZTxjaGFyVD46OnByaW50LAotICAgICAgICAgc3RkOjpjdHlwZTxjaGFyVD46OnB1bmN0LAotICAgICAgICAgc3RkOjpjdHlwZTxjaGFyVD46OnNwYWNlLAotICAgICAgICAgc3RkOjpjdHlwZTxjaGFyVD46OnVwcGVyLAotICAgICAgICAgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfdmVydGljYWwsCi0gICAgICAgICBzdGQ6OmN0eXBlPGNoYXJUPjo6eGRpZ2l0LAotICAgICAgICAgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfYmxhbmssCi0gICAgICAgICBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza193b3JkLAotICAgICAgICAgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfdW5pY29kZSwKLSAgICAgIH07Ci0jZWxzZQotICAgICAgc3RhdGljIGNvbnN0IGNoYXJfY2xhc3NfdHlwZSBtYXNrc1sxNl0gPSAKLSAgICAgIHsKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19hbG51bSwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19hbHBoYSwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19jbnRybCwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19kaWdpdCwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19ncmFwaCwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19ob3Jpem9udGFsX3NwYWNlLAotICAgICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX2xvd2VyLAotICAgICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX3ByaW50LAotICAgICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX3B1bmN0LAotICAgICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX3NwYWNlLAotICAgICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX3VwcGVyLAotICAgICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX3ZlcnRpY2FsX3NwYWNlLAotICAgICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX3hkaWdpdCwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19ibGFuaywKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc193b3JkLAotICAgICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX3VuaWNvZGUsCi0gICAgICB9OwotI2VuZGlmCi0gICAgICBzdGF0aWMgY29uc3Qgc3RyaW5nX3R5cGUgbnVsbF9zdHJpbmc7Ci0gICAgICBmb3IodW5zaWduZWQgaW50IGogPSAwOyBqIDw9IDEzOyArK2opCi0gICAgICB7Ci0gICAgICAgICBzdHJpbmdfdHlwZSBzKHRoaXMtPm1fcG1lc3NhZ2VzLT5nZXQoY2F0LCAwLCBqKzMwMCwgbnVsbF9zdHJpbmcpKTsKLSAgICAgICAgIGlmKHMuc2l6ZSgpKQotICAgICAgICAgICAgdGhpcy0+bV9jdXN0b21fY2xhc3NfbmFtZXNbc10gPSBtYXNrc1tqXTsKLSAgICAgIH0KLSAgIH0KLSNlbmRpZgotICAgLy8KLSAgIC8vIGdldCB0aGUgY29sbGF0aW9uIGZvcm1hdCB1c2VkIGJ5IG1fcGNvbGxhdGU6Ci0gICAvLwotICAgbV9jb2xsYXRlX3R5cGUgPSByZV9kZXRhaWw6OmZpbmRfc29ydF9zeW50YXgodGhpcywgJm1fY29sbGF0ZV9kZWxpbSk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXR5cGVuYW1lIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjpjaGFyX2NsYXNzX3R5cGUgCi0gICBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bG9va3VwX2NsYXNzbmFtZV9pbXAoY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIpIGNvbnN0Ci17Ci0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0JVR0dZX0NUWVBFX0ZBQ0VUCi0gICBzdGF0aWMgY29uc3QgY2hhcl9jbGFzc190eXBlIG1hc2tzWzIyXSA9IAotICAgewotICAgICAgMCwKLSAgICAgIHN0ZDo6Y3R5cGU8Y2hhcj46OmFsbnVtLCAKLSAgICAgIHN0ZDo6Y3R5cGU8Y2hhcj46OmFscGhhLAotICAgICAgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfYmxhbmssCi0gICAgICBzdGQ6OmN0eXBlPGNoYXI+OjpjbnRybCwKLSAgICAgIHN0ZDo6Y3R5cGU8Y2hhcj46OmRpZ2l0LAotICAgICAgc3RkOjpjdHlwZTxjaGFyPjo6ZGlnaXQsCi0gICAgICBzdGQ6OmN0eXBlPGNoYXI+OjpncmFwaCwKLSAgICAgIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX2hvcml6b250YWwsCi0gICAgICBzdGQ6OmN0eXBlPGNoYXI+Ojpsb3dlciwKLSAgICAgIHN0ZDo6Y3R5cGU8Y2hhcj46Omxvd2VyLAotICAgICAgc3RkOjpjdHlwZTxjaGFyPjo6cHJpbnQsCi0gICAgICBzdGQ6OmN0eXBlPGNoYXI+OjpwdW5jdCwKLSAgICAgIHN0ZDo6Y3R5cGU8Y2hhcj46OnNwYWNlLAotICAgICAgc3RkOjpjdHlwZTxjaGFyPjo6c3BhY2UsCi0gICAgICBzdGQ6OmN0eXBlPGNoYXI+Ojp1cHBlciwKLSAgICAgIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX3VuaWNvZGUsCi0gICAgICBzdGQ6OmN0eXBlPGNoYXI+Ojp1cHBlciwKLSAgICAgIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX3ZlcnRpY2FsLAotICAgICAgc3RkOjpjdHlwZTxjaGFyPjo6YWxudW0gfCBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza193b3JkLCAKLSAgICAgIHN0ZDo6Y3R5cGU8Y2hhcj46OmFsbnVtIHwgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfd29yZCwgCi0gICAgICBzdGQ6OmN0eXBlPGNoYXI+Ojp4ZGlnaXQsCi0gICB9OwotI2Vsc2UKLSAgIHN0YXRpYyBjb25zdCBjaGFyX2NsYXNzX3R5cGUgbWFza3NbMjJdID0gCi0gICB7Ci0gICAgICAwLAotICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX2FsbnVtLCAKLSAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19hbHBoYSwKLSAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19ibGFuaywKLSAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19jbnRybCwKLSAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19kaWdpdCwKLSAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19kaWdpdCwKLSAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19ncmFwaCwKLSAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19ob3Jpem9udGFsX3NwYWNlLAotICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX2xvd2VyLAotICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX2xvd2VyLAotICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX3ByaW50LAotICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX3B1bmN0LAotICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX3NwYWNlLAotICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX3NwYWNlLAotICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX3VwcGVyLAotICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX3VuaWNvZGUsCi0gICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfdXBwZXIsCi0gICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfdmVydGljYWxfc3BhY2UsCi0gICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfYWxudW0gfCA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3Nfd29yZCwgCi0gICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfYWxudW0gfCA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3Nfd29yZCwgCi0gICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfeGRpZ2l0LAotICAgfTsKLSNlbmRpZgotICAgaWYobV9jdXN0b21fY2xhc3NfbmFtZXMuc2l6ZSgpKQotICAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6Om1hcDxzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4sIGNoYXJfY2xhc3NfdHlwZT46OmNvbnN0X2l0ZXJhdG9yIG1hcF9pdGVyOwotICAgICAgbWFwX2l0ZXIgcG9zID0gbV9jdXN0b21fY2xhc3NfbmFtZXMuZmluZChzdHJpbmdfdHlwZShwMSwgcDIpKTsKLSAgICAgIGlmKHBvcyAhPSBtX2N1c3RvbV9jbGFzc19uYW1lcy5lbmQoKSkKLSAgICAgICAgIHJldHVybiBwb3MtPnNlY29uZDsKLSAgIH0KLSAgIHN0ZDo6c2l6ZV90IHN0YXRlX2lkID0gMSArIHJlX2RldGFpbDo6Z2V0X2RlZmF1bHRfY2xhc3NfaWQocDEsIHAyKTsKLSAgIE5ETkJPT1NUX0FTU0VSVChzdGF0ZV9pZCA8IHNpemVvZihtYXNrcykgLyBzaXplb2YobWFza3NbMF0pKTsKLSAgIHJldHVybiBtYXNrc1tzdGF0ZV9pZF07Ci19Ci0KLSNpZmRlZiBORE5CT09TVF9SRUdFWF9CVUdHWV9DVFlQRV9GQUNFVAotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotYm9vbCBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6aXNjdHlwZShjb25zdCBjaGFyVCBjLCBjaGFyX2NsYXNzX3R5cGUgbWFzaykgY29uc3QKLXsKLSAgIHJldHVybgotICAgICAgKChtYXNrICYgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX3NwYWNlKSAmJiAodGhpcy0+bV9wY3R5cGUtPmlzKHN0ZDo6Y3R5cGU8Y2hhclQ+OjpzcGFjZSwgYykpKQotICAgICAgfHwgKChtYXNrICYgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX3ByaW50KSAmJiAodGhpcy0+bV9wY3R5cGUtPmlzKHN0ZDo6Y3R5cGU8Y2hhclQ+OjpwcmludCwgYykpKQotICAgICAgfHwgKChtYXNrICYgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX2NudHJsKSAmJiAodGhpcy0+bV9wY3R5cGUtPmlzKHN0ZDo6Y3R5cGU8Y2hhclQ+OjpjbnRybCwgYykpKQotICAgICAgfHwgKChtYXNrICYgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX3VwcGVyKSAmJiAodGhpcy0+bV9wY3R5cGUtPmlzKHN0ZDo6Y3R5cGU8Y2hhclQ+Ojp1cHBlciwgYykpKQotICAgICAgfHwgKChtYXNrICYgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX2xvd2VyKSAmJiAodGhpcy0+bV9wY3R5cGUtPmlzKHN0ZDo6Y3R5cGU8Y2hhclQ+Ojpsb3dlciwgYykpKQotICAgICAgfHwgKChtYXNrICYgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX2FscGhhKSAmJiAodGhpcy0+bV9wY3R5cGUtPmlzKHN0ZDo6Y3R5cGU8Y2hhclQ+OjphbHBoYSwgYykpKQotICAgICAgfHwgKChtYXNrICYgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX2RpZ2l0KSAmJiAodGhpcy0+bV9wY3R5cGUtPmlzKHN0ZDo6Y3R5cGU8Y2hhclQ+OjpkaWdpdCwgYykpKQotICAgICAgfHwgKChtYXNrICYgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX3B1bmN0KSAmJiAodGhpcy0+bV9wY3R5cGUtPmlzKHN0ZDo6Y3R5cGU8Y2hhclQ+OjpwdW5jdCwgYykpKQotICAgICAgfHwgKChtYXNrICYgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX3hkaWdpdCkgJiYgKHRoaXMtPm1fcGN0eXBlLT5pcyhzdGQ6OmN0eXBlPGNoYXJUPjo6eGRpZ2l0LCBjKSkpCi0gICAgICB8fCAoKG1hc2sgJiA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfYmxhbmspICYmICh0aGlzLT5tX3BjdHlwZS0+aXMoc3RkOjpjdHlwZTxjaGFyVD46OnNwYWNlLCBjKSkgJiYgITo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6aXNfc2VwYXJhdG9yKGMpKQotICAgICAgfHwgKChtYXNrICYgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX3dvcmQpICYmIChjID09ICdfJykpCi0gICAgICB8fCAoKG1hc2sgJiA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfdW5pY29kZSkgJiYgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjppc19leHRlbmRlZChjKSkKLSAgICAgIHx8ICgobWFzayAmIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc192ZXJ0aWNhbF9zcGFjZSkgJiYgKGlzX3NlcGFyYXRvcihjKSB8fCAoYyA9PSAnXHYnKSkpCi0gICAgICB8fCAoKG1hc2sgJiA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfaG9yaXpvbnRhbF9zcGFjZSkgJiYgdGhpcy0+bV9wY3R5cGUtPmlzKHN0ZDo6Y3R5cGU8Y2hhclQ+OjpzcGFjZSwgYykgJiYgIShpc19zZXBhcmF0b3IoYykgfHwgKGMgPT0gJ1x2JykpKTsKLX0KLSNlbmRpZgotCi0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLWlubGluZSBuZG5ib29zdDo6c2hhcmVkX3B0cjxjb25zdCBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPiA+IGNyZWF0ZV9jcHBfcmVnZXhfdHJhaXRzKGNvbnN0IHN0ZDo6bG9jYWxlJiBsIE5ETkJPT1NUX0FQUEVORF9FWFBMSUNJVF9URU1QTEFURV9UWVBFKGNoYXJUKSkKLXsKLSAgIGNwcF9yZWdleF90cmFpdHNfYmFzZTxjaGFyVD4ga2V5KGwpOwotICAgcmV0dXJuIDo6bmRuYm9vc3Q6Om9iamVjdF9jYWNoZTxjcHBfcmVnZXhfdHJhaXRzX2Jhc2U8Y2hhclQ+LCBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPiA+OjpnZXQoa2V5LCA1KTsKLX0KLQotfSAvLyByZV9kZXRhaWwKLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotY2xhc3MgY3BwX3JlZ2V4X3RyYWl0cwotewotcHJpdmF0ZToKLSAgIHR5cGVkZWYgc3RkOjpjdHlwZTxjaGFyVD4gICAgICAgICAgICBjdHlwZV90eXBlOwotcHVibGljOgotICAgdHlwZWRlZiBjaGFyVCAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJfdHlwZTsKLSAgIHR5cGVkZWYgc3RkOjpzaXplX3QgICAgICAgICAgICAgICAgICBzaXplX3R5cGU7Ci0gICB0eXBlZGVmIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJfdHlwZT4gc3RyaW5nX3R5cGU7Ci0gICB0eXBlZGVmIHN0ZDo6bG9jYWxlICAgICAgICAgICAgICAgICAgbG9jYWxlX3R5cGU7Ci0gICB0eXBlZGVmIG5kbmJvb3N0Ojp1aW50X2xlYXN0MzJfdCAgICAgICAgY2hhcl9jbGFzc190eXBlOwotCi0gICBzdHJ1Y3QgYm9vc3RfZXh0ZW5zaW9uc190YWd7fTsKLQotICAgY3BwX3JlZ2V4X3RyYWl0cygpCi0gICAgICA6IG1fcGltcGwocmVfZGV0YWlsOjpjcmVhdGVfY3BwX3JlZ2V4X3RyYWl0czxjaGFyVD4oc3RkOjpsb2NhbGUoKSkpCi0gICB7IH0KLSAgIHN0YXRpYyBzaXplX3R5cGUgbGVuZ3RoKGNvbnN0IGNoYXJfdHlwZSogcCkKLSAgIHsKLSAgICAgIHJldHVybiBzdGQ6OmNoYXJfdHJhaXRzPGNoYXJUPjo6bGVuZ3RoKHApOwotICAgfQotICAgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfdHlwZSBzeW50YXhfdHlwZShjaGFyVCBjKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9waW1wbC0+c3ludGF4X3R5cGUoYyk7Ci0gICB9Ci0gICByZWdleF9jb25zdGFudHM6OmVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfc3ludGF4X3R5cGUoY2hhclQgYykgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3BpbXBsLT5lc2NhcGVfc3ludGF4X3R5cGUoYyk7Ci0gICB9Ci0gICBjaGFyVCB0cmFuc2xhdGUoY2hhclQgYykgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBjOwotICAgfQotICAgY2hhclQgdHJhbnNsYXRlX25vY2FzZShjaGFyVCBjKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcGltcGwtPm1fcGN0eXBlLT50b2xvd2VyKGMpOwotICAgfQotICAgY2hhclQgdHJhbnNsYXRlKGNoYXJUIGMsIGJvb2wgaWNhc2UpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gaWNhc2UgPyBtX3BpbXBsLT5tX3BjdHlwZS0+dG9sb3dlcihjKSA6IGM7Ci0gICB9Ci0gICBjaGFyVCB0b2xvd2VyKGNoYXJUIGMpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9waW1wbC0+bV9wY3R5cGUtPnRvbG93ZXIoYyk7Ci0gICB9Ci0gICBjaGFyVCB0b3VwcGVyKGNoYXJUIGMpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9waW1wbC0+bV9wY3R5cGUtPnRvdXBwZXIoYyk7Ci0gICB9Ci0gICBzdHJpbmdfdHlwZSB0cmFuc2Zvcm0oY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9waW1wbC0+dHJhbnNmb3JtKHAxLCBwMik7Ci0gICB9Ci0gICBzdHJpbmdfdHlwZSB0cmFuc2Zvcm1fcHJpbWFyeShjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMikgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3BpbXBsLT50cmFuc2Zvcm1fcHJpbWFyeShwMSwgcDIpOwotICAgfQotICAgY2hhcl9jbGFzc190eXBlIGxvb2t1cF9jbGFzc25hbWUoY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9waW1wbC0+bG9va3VwX2NsYXNzbmFtZShwMSwgcDIpOwotICAgfQotICAgc3RyaW5nX3R5cGUgbG9va3VwX2NvbGxhdGVuYW1lKGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcGltcGwtPmxvb2t1cF9jb2xsYXRlbmFtZShwMSwgcDIpOwotICAgfQotICAgYm9vbCBpc2N0eXBlKGNoYXJUIGMsIGNoYXJfY2xhc3NfdHlwZSBmKSBjb25zdAotICAgewotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9CVUdHWV9DVFlQRV9GQUNFVAotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6OmN0eXBlPGNoYXJUPjo6bWFzayBjdHlwZV9tYXNrOwotCi0gICAgICBzdGF0aWMgY29uc3QgY3R5cGVfbWFzayBtYXNrX2Jhc2UgPSAKLSAgICAgICAgIHN0YXRpY19jYXN0PGN0eXBlX21hc2s+KAotICAgICAgICAgICAgc3RkOjpjdHlwZTxjaGFyVD46OmFsbnVtIAotICAgICAgICAgICAgfCBzdGQ6OmN0eXBlPGNoYXJUPjo6YWxwaGEKLSAgICAgICAgICAgIHwgc3RkOjpjdHlwZTxjaGFyVD46OmNudHJsCi0gICAgICAgICAgICB8IHN0ZDo6Y3R5cGU8Y2hhclQ+OjpkaWdpdAotICAgICAgICAgICAgfCBzdGQ6OmN0eXBlPGNoYXJUPjo6Z3JhcGgKLSAgICAgICAgICAgIHwgc3RkOjpjdHlwZTxjaGFyVD46Omxvd2VyCi0gICAgICAgICAgICB8IHN0ZDo6Y3R5cGU8Y2hhclQ+OjpwcmludAotICAgICAgICAgICAgfCBzdGQ6OmN0eXBlPGNoYXJUPjo6cHVuY3QKLSAgICAgICAgICAgIHwgc3RkOjpjdHlwZTxjaGFyVD46OnNwYWNlCi0gICAgICAgICAgICB8IHN0ZDo6Y3R5cGU8Y2hhclQ+Ojp1cHBlcgotICAgICAgICAgICAgfCBzdGQ6OmN0eXBlPGNoYXJUPjo6eGRpZ2l0KTsKLQotICAgICAgaWYoKGYgJiBtYXNrX2Jhc2UpIAotICAgICAgICAgJiYgKG1fcGltcGwtPm1fcGN0eXBlLT5pcygKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PGN0eXBlX21hc2s+KGYgJiBtYXNrX2Jhc2UpLCBjKSkpCi0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIGVsc2UgaWYoKGYgJiByZV9kZXRhaWw6OmNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX3VuaWNvZGUpICYmIHJlX2RldGFpbDo6aXNfZXh0ZW5kZWQoYykpCi0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIGVsc2UgaWYoKGYgJiByZV9kZXRhaWw6OmNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX3dvcmQpICYmIChjID09ICdfJykpCi0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIGVsc2UgaWYoKGYgJiByZV9kZXRhaWw6OmNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX2JsYW5rKSAKLSAgICAgICAgICYmIG1fcGltcGwtPm1fcGN0eXBlLT5pcyhzdGQ6OmN0eXBlPGNoYXJUPjo6c3BhY2UsIGMpCi0gICAgICAgICAmJiAhcmVfZGV0YWlsOjppc19zZXBhcmF0b3IoYykpCi0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIGVsc2UgaWYoKGYgJiByZV9kZXRhaWw6OmNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX3ZlcnRpY2FsKSAKLSAgICAgICAgICYmICg6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmlzX3NlcGFyYXRvcihjKSB8fCAoYyA9PSAnXHYnKSkpCi0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIGVsc2UgaWYoKGYgJiByZV9kZXRhaWw6OmNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX2hvcml6b250YWwpIAotICAgICAgICAgJiYgdGhpcy0+aXNjdHlwZShjLCBzdGQ6OmN0eXBlPGNoYXJUPjo6c3BhY2UpICYmICF0aGlzLT5pc2N0eXBlKGMsIHJlX2RldGFpbDo6Y3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfdmVydGljYWwpKQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0jZWxzZQotICAgICAgcmV0dXJuIG1fcGltcGwtPmlzY3R5cGUoYywgZik7Ci0jZW5kaWYKLSAgIH0KLSAgIGludCB0b2koY29uc3QgY2hhclQqJiBwMSwgY29uc3QgY2hhclQqIHAyLCBpbnQgcmFkaXgpY29uc3Q7Ci0gICBpbnQgdmFsdWUoY2hhclQgYywgaW50IHJhZGl4KWNvbnN0Ci0gICB7Ci0gICAgICBjb25zdCBjaGFyVCogcGMgPSAmYzsKLSAgICAgIHJldHVybiB0b2kocGMsIHBjICsgMSwgcmFkaXgpOwotICAgfQotICAgbG9jYWxlX3R5cGUgaW1idWUobG9jYWxlX3R5cGUgbCkKLSAgIHsKLSAgICAgIHN0ZDo6bG9jYWxlIHJlc3VsdChnZXRsb2MoKSk7Ci0gICAgICBtX3BpbXBsID0gcmVfZGV0YWlsOjpjcmVhdGVfY3BwX3JlZ2V4X3RyYWl0czxjaGFyVD4obCk7Ci0gICAgICByZXR1cm4gcmVzdWx0OwotICAgfQotICAgbG9jYWxlX3R5cGUgZ2V0bG9jKCljb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcGltcGwtPm1fbG9jYWxlOwotICAgfQotICAgc3RkOjpzdHJpbmcgZXJyb3Jfc3RyaW5nKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfdHlwZSBuKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcGltcGwtPmVycm9yX3N0cmluZyhuKTsKLSAgIH0KLQotICAgLy8KLSAgIC8vIGV4dGVuc2lvbjoKLSAgIC8vIHNldCB0aGUgbmFtZSBvZiB0aGUgbWVzc2FnZSBjYXRhbG9nIGluIHVzZSAoZGVmYXVsdHMgdG8gImJvb3N0X3JlZ2V4IikuCi0gICAvLwotICAgc3RhdGljIHN0ZDo6c3RyaW5nIGNhdGFsb2dfbmFtZShjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSk7Ci0gICBzdGF0aWMgc3RkOjpzdHJpbmcgZ2V0X2NhdGFsb2dfbmFtZSgpOwotCi1wcml2YXRlOgotICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8Y29uc3QgcmVfZGV0YWlsOjpjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPiA+IG1fcGltcGw7Ci0gICAvLwotICAgLy8gY2F0YWxvZyBuYW1lIGhhbmRsZXI6Ci0gICAvLwotICAgc3RhdGljIHN0ZDo6c3RyaW5nJiBnZXRfY2F0YWxvZ19uYW1lX2luc3QoKTsKLQotI2lmZGVmIE5ETkJPT1NUX0hBU19USFJFQURTCi0gICBzdGF0aWMgc3RhdGljX211dGV4JiBnZXRfbXV0ZXhfaW5zdCgpOwotI2VuZGlmCi19OwotCi0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLWludCBjcHBfcmVnZXhfdHJhaXRzPGNoYXJUPjo6dG9pKGNvbnN0IGNoYXJUKiYgZmlyc3QsIGNvbnN0IGNoYXJUKiBsYXN0LCBpbnQgcmFkaXgpY29uc3QKLXsKLSAgIHJlX2RldGFpbDo6cGFyc2VyX2J1ZjxjaGFyVD4gICBzYnVmOyAgICAgICAgICAgIC8vIGJ1ZmZlciBmb3IgcGFyc2luZyBudW1iZXJzLgotICAgc3RkOjpiYXNpY19pc3RyZWFtPGNoYXJUPiAgICAgIGlzKCZzYnVmKTsgICAgICAgLy8gc3RyZWFtIGZvciBwYXJzaW5nIG51bWJlcnMuCi0KLSAgIC8vIHdlIGRvIE5PVCB3YW50IHRvIHBhcnNlIGFueSB0aG91c2FuZHMgc2VwYXJhdG9ycyBpbnNpZGUgdGhlIHN0cmVhbToKLSAgIGxhc3QgPSBzdGQ6OmZpbmQoZmlyc3QsIGxhc3QsIE5ETkJPT1NUX1VTRV9GQUNFVChzdGQ6Om51bXB1bmN0PGNoYXJUPiwgaXMuZ2V0bG9jKCkpLnRob3VzYW5kc19zZXAoKSk7Ci0KLSAgIHNidWYucHVic2V0YnVmKGNvbnN0X2Nhc3Q8Y2hhclQqPihzdGF0aWNfY2FzdDxjb25zdCBjaGFyVCo+KGZpcnN0KSksIHN0YXRpY19jYXN0PHN0ZDo6c3RyZWFtc2l6ZT4obGFzdC1maXJzdCkpOwotICAgaXMuY2xlYXIoKTsKLSAgIGlmKHN0ZDo6YWJzKHJhZGl4KSA9PSAxNikgaXMgPj4gc3RkOjpoZXg7Ci0gICBlbHNlIGlmKHN0ZDo6YWJzKHJhZGl4KSA9PSA4KSBpcyA+PiBzdGQ6Om9jdDsKLSAgIGVsc2UgaXMgPj4gc3RkOjpkZWM7Ci0gICBpbnQgdmFsOwotICAgaWYoaXMgPj4gdmFsKQotICAgewotICAgICAgZmlyc3QgPSBmaXJzdCArICgobGFzdCAtIGZpcnN0KSAtIHNidWYuaW5fYXZhaWwoKSk7Ci0gICAgICByZXR1cm4gdmFsOwotICAgfQotICAgZWxzZQotICAgICAgcmV0dXJuIC0xOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1zdGQ6OnN0cmluZyBjcHBfcmVnZXhfdHJhaXRzPGNoYXJUPjo6Y2F0YWxvZ19uYW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lKQotewotI2lmZGVmIE5ETkJPT1NUX0hBU19USFJFQURTCi0gICBzdGF0aWNfbXV0ZXg6OnNjb3BlZF9sb2NrIGxrKGdldF9tdXRleF9pbnN0KCkpOwotI2VuZGlmCi0gICBzdGQ6OnN0cmluZyByZXN1bHQoZ2V0X2NhdGFsb2dfbmFtZV9pbnN0KCkpOwotICAgZ2V0X2NhdGFsb2dfbmFtZV9pbnN0KCkgPSBuYW1lOwotICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotc3RkOjpzdHJpbmcmIGNwcF9yZWdleF90cmFpdHM8Y2hhclQ+OjpnZXRfY2F0YWxvZ19uYW1lX2luc3QoKQotewotICAgc3RhdGljIHN0ZDo6c3RyaW5nIHNfbmFtZTsKLSAgIHJldHVybiBzX25hbWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXN0ZDo6c3RyaW5nIGNwcF9yZWdleF90cmFpdHM8Y2hhclQ+OjpnZXRfY2F0YWxvZ19uYW1lKCkKLXsKLSNpZmRlZiBORE5CT09TVF9IQVNfVEhSRUFEUwotICAgc3RhdGljX211dGV4OjpzY29wZWRfbG9jayBsayhnZXRfbXV0ZXhfaW5zdCgpKTsKLSNlbmRpZgotICAgc3RkOjpzdHJpbmcgcmVzdWx0KGdldF9jYXRhbG9nX25hbWVfaW5zdCgpKTsKLSAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLSNpZmRlZiBORE5CT09TVF9IQVNfVEhSRUFEUwotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotc3RhdGljX211dGV4JiBjcHBfcmVnZXhfdHJhaXRzPGNoYXJUPjo6Z2V0X211dGV4X2luc3QoKQotewotICAgc3RhdGljIHN0YXRpY19tdXRleCBzX211dGV4ID0gTkROQk9PU1RfU1RBVElDX01VVEVYX0lOSVQ7Ci0gICByZXR1cm4gc19tdXRleDsKLX0KLSNlbmRpZgotCi0KLX0gLy8gYm9vc3QKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jZW5kaWYKLQotI2VuZGlmCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9jcmVnZXguaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9jcmVnZXguaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZmU2MWYwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvY3JlZ2V4LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzMCArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIGNyZWdleC5jcHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIFBPU0lYIEFQSSBmdW5jdGlvbnMKLSAgKiAgICAgICAgICAgICAgICArIG5kbmJvb3N0OjpSZWdFeCBoaWdoIGxldmVsIHdyYXBwZXIuCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVfQ1JFR0VYX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9SRV9DUkVHRVhfSFBQX0lOQ0xVREVECi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfQ09ORklHX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L2NvbmZpZy5ocHA+Ci0jZW5kaWYKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9tYXRjaF9mbGFncy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvZXJyb3JfdHlwZS5ocHA+Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotI2luY2x1ZGUgPGNzdGRkZWY+Ci0jZWxzZQotI2luY2x1ZGUgPHN0ZGRlZi5oPgotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotLyogaW5jbHVkZSB0aGVzZSBkZWZzIG9ubHkgZm9yIFBPU0lYIGNvbXBhdGFibGl0eSAqLwotI2lmZGVmIF9fY3BsdXNwbHVzCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX2NwbHVzcGx1cykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpCi10eXBlZGVmIHN0ZDo6cHRyZGlmZl90IHJlZ29mZl90OwotdHlwZWRlZiBzdGQ6OnNpemVfdCByZWdzaXplX3Q7Ci0jZWxzZQotdHlwZWRlZiBwdHJkaWZmX3QgcmVnb2ZmX3Q7Ci10eXBlZGVmIHNpemVfdCByZWdzaXplX3Q7Ci0jZW5kaWYKLQotdHlwZWRlZiBzdHJ1Y3QKLXsKLSAgIHVuc2lnbmVkIGludCByZV9tYWdpYzsKLSNpZmRlZiBfX2NwbHVzcGx1cwotICAgc3RkOjpzaXplX3QgIHJlX25zdWI7ICAgICAgLyogbnVtYmVyIG9mIHBhcmVudGhlc2l6ZWQgc3ViZXhwcmVzc2lvbnMgKi8KLSNlbHNlCi0gICBzaXplX3QgcmVfbnN1YjsgCi0jZW5kaWYKLSAgIGNvbnN0IGNoYXIqICByZV9lbmRwOyAgICAgICAvKiBlbmQgcG9pbnRlciBmb3IgUkVHX1BFTkQgKi8KLSAgIHZvaWQqIGd1dHM7ICAgICAgICAgICAgICAgIC8qIG5vbmUgb2YgeW91ciBidXNpbmVzcyA6LSkgKi8KLSAgIG1hdGNoX2ZsYWdfdHlwZSBlZmxhZ3M7ICAgICAgICAvKiBub25lIG9mIHlvdXIgYnVzaW5lc3MgOi0pICovCi19IHJlZ2V4X3RBOwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotdHlwZWRlZiBzdHJ1Y3QKLXsKLSAgIHVuc2lnbmVkIGludCByZV9tYWdpYzsKLSNpZmRlZiBfX2NwbHVzcGx1cwotICAgc3RkOjpzaXplX3QgIHJlX25zdWI7ICAgICAgICAgLyogbnVtYmVyIG9mIHBhcmVudGhlc2l6ZWQgc3ViZXhwcmVzc2lvbnMgKi8KLSNlbHNlCi0gICBzaXplX3QgcmVfbnN1YjsKLSNlbmRpZgotICAgY29uc3Qgd2NoYXJfdCogcmVfZW5kcDsgICAgICAgLyogZW5kIHBvaW50ZXIgZm9yIFJFR19QRU5EICovCi0gICB2b2lkKiBndXRzOyAgICAgICAgICAgICAgICAgICAvKiBub25lIG9mIHlvdXIgYnVzaW5lc3MgOi0pICovCi0gICBtYXRjaF9mbGFnX3R5cGUgZWZsYWdzOyAgICAgICAgICAgLyogbm9uZSBvZiB5b3VyIGJ1c2luZXNzIDotKSAqLwotfSByZWdleF90VzsKLSNlbmRpZgotCi10eXBlZGVmIHN0cnVjdAotewotICAgcmVnb2ZmX3Qgcm1fc287ICAgICAgLyogc3RhcnQgb2YgbWF0Y2ggKi8KLSAgIHJlZ29mZl90IHJtX2VvOyAgICAgIC8qIGVuZCBvZiBtYXRjaCAqLwotfSByZWdtYXRjaF90OwotCi0vKiByZWdjb21wKCkgZmxhZ3MgKi8KLXR5cGVkZWYgZW51bXsKLSAgIFJFR19CQVNJQyA9IDAwMDAsCi0gICBSRUdfRVhURU5ERUQgPSAwMDAxLAotICAgUkVHX0lDQVNFID0gMDAwMiwKLSAgIFJFR19OT1NVQiA9IDAwMDQsCi0gICBSRUdfTkVXTElORSA9IDAwMTAsCi0gICBSRUdfTk9TUEVDID0gMDAyMCwKLSAgIFJFR19QRU5EID0gMDA0MCwKLSAgIFJFR19EVU1QID0gMDIwMCwKLSAgIFJFR19OT0NPTExBVEUgPSAwNDAwLAotICAgUkVHX0VTQ0FQRV9JTl9MSVNUUyA9IDAxMDAwLAotICAgUkVHX05FV0xJTkVfQUxUID0gMDIwMDAsCi0gICBSRUdfUEVSTEVYID0gMDQwMDAsCi0KLSAgIFJFR19QRVJMID0gUkVHX0VYVEVOREVEIHwgUkVHX05PQ09MTEFURSB8IFJFR19FU0NBUEVfSU5fTElTVFMgfCBSRUdfUEVSTEVYLAotICAgUkVHX0FXSyA9IFJFR19FWFRFTkRFRCB8IFJFR19FU0NBUEVfSU5fTElTVFMsCi0gICBSRUdfR1JFUCA9IFJFR19CQVNJQyB8IFJFR19ORVdMSU5FX0FMVCwKLSAgIFJFR19FR1JFUCA9IFJFR19FWFRFTkRFRCB8IFJFR19ORVdMSU5FX0FMVCwKLQotICAgUkVHX0FTU0VSVCA9IDE1LAotICAgUkVHX0lOVkFSRyA9IDE2LAotICAgUkVHX0FUT0kgPSAyNTUsICAgLyogY29udmVydCBuYW1lIHRvIG51bWJlciAoISkgKi8KLSAgIFJFR19JVE9BID0gMDQwMCAgIC8qIGNvbnZlcnQgbnVtYmVyIHRvIG5hbWUgKCEpICovCi19IHJlZ19jb21wX2ZsYWdzOwotCi0vKiByZWdleGVjKCkgZmxhZ3MgKi8KLXR5cGVkZWYgZW51bXsKLSAgIFJFR19OT1RCT0wgPSAgICAwMDAwMSwKLSAgIFJFR19OT1RFT0wgPSAgICAwMDAwMiwKLSAgIFJFR19TVEFSVEVORCA9ICAwMDAwNAotfSByZWdfZXhlY19mbGFnczsKLQotLyoKLSAqIFBPU0lYIGVycm9yIGNvZGVzOgotICovCi10eXBlZGVmIHVuc2lnbmVkIHJlZ19lcnJvcl90OwotdHlwZWRlZiByZWdfZXJyb3JfdCByZWdfZXJyY29kZV90OyAgLyogYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgKi8KLQotc3RhdGljIGNvbnN0IHJlZ19lcnJvcl90IFJFR19OT0VSUk9SID0gMDsgICAvKiBTdWNjZXNzLiAgKi8KLXN0YXRpYyBjb25zdCByZWdfZXJyb3JfdCBSRUdfTk9NQVRDSCA9IDE7ICAgLyogRGlkbid0IGZpbmQgYSBtYXRjaCAoZm9yIHJlZ2V4ZWMpLiAgKi8KLQotICAvKiBQT1NJWCByZWdjb21wIHJldHVybiBlcnJvciBjb2Rlcy4gIChJbiB0aGUgb3JkZXIgbGlzdGVkIGluIHRoZQotICAgICBzdGFuZGFyZC4pICAqLwotc3RhdGljIGNvbnN0IHJlZ19lcnJvcl90IFJFR19CQURQQVQgPSAyOyAgICAvKiBJbnZhbGlkIHBhdHRlcm4uICAqLwotc3RhdGljIGNvbnN0IHJlZ19lcnJvcl90IFJFR19FQ09MTEFURSA9IDM7ICAvKiBVbmRlZmluZWQgY29sbGF0aW5nIGVsZW1lbnQuICAqLwotc3RhdGljIGNvbnN0IHJlZ19lcnJvcl90IFJFR19FQ1RZUEUgPSA0OyAgICAvKiBJbnZhbGlkIGNoYXJhY3RlciBjbGFzcyBuYW1lLiAgKi8KLXN0YXRpYyBjb25zdCByZWdfZXJyb3JfdCBSRUdfRUVTQ0FQRSA9IDU7ICAgLyogVHJhaWxpbmcgYmFja3NsYXNoLiAgKi8KLXN0YXRpYyBjb25zdCByZWdfZXJyb3JfdCBSRUdfRVNVQlJFRyA9IDY7ICAgLyogSW52YWxpZCBiYWNrIHJlZmVyZW5jZS4gICovCi1zdGF0aWMgY29uc3QgcmVnX2Vycm9yX3QgUkVHX0VCUkFDSyA9IDc7ICAgIC8qIFVubWF0Y2hlZCBsZWZ0IGJyYWNrZXQuICAqLwotc3RhdGljIGNvbnN0IHJlZ19lcnJvcl90IFJFR19FUEFSRU4gPSA4OyAgICAvKiBQYXJlbnRoZXNpcyBpbWJhbGFuY2UuICAqLwotc3RhdGljIGNvbnN0IHJlZ19lcnJvcl90IFJFR19FQlJBQ0UgPSA5OyAgICAvKiBVbm1hdGNoZWQgXHsuICAqLwotc3RhdGljIGNvbnN0IHJlZ19lcnJvcl90IFJFR19CQURCUiA9IDEwOyAgICAvKiBJbnZhbGlkIGNvbnRlbnRzIG9mIFx7XH0uICAqLwotc3RhdGljIGNvbnN0IHJlZ19lcnJvcl90IFJFR19FUkFOR0UgPSAxMTsgICAvKiBJbnZhbGlkIHJhbmdlIGVuZC4gICovCi1zdGF0aWMgY29uc3QgcmVnX2Vycm9yX3QgUkVHX0VTUEFDRSA9IDEyOyAgIC8qIFJhbiBvdXQgb2YgbWVtb3J5LiAgKi8KLXN0YXRpYyBjb25zdCByZWdfZXJyb3JfdCBSRUdfQkFEUlBUID0gMTM7ICAgLyogTm8gcHJlY2VkaW5nIHJlIGZvciByZXBldGl0aW9uIG9wLiAgKi8KLXN0YXRpYyBjb25zdCByZWdfZXJyb3JfdCBSRUdfRUVORCA9IDE0OyAgICAgLyogdW5leHBlY3RlZCBlbmQgb2YgZXhwcmVzc2lvbiAqLwotc3RhdGljIGNvbnN0IHJlZ19lcnJvcl90IFJFR19FU0laRSA9IDE1OyAgICAvKiBleHByZXNzaW9uIHRvbyBiaWcgKi8KLXN0YXRpYyBjb25zdCByZWdfZXJyb3JfdCBSRUdfRVJQQVJFTiA9IDg7ICAgLyogPSBSRUdfRVBBUkVOIDogdW5tYXRjaGVkIHJpZ2h0IHBhcmVudGhlc2lzICovCi1zdGF0aWMgY29uc3QgcmVnX2Vycm9yX3QgUkVHX0VNUFRZID0gMTc7ICAgIC8qIGVtcHR5IGV4cHJlc3Npb24gKi8KLXN0YXRpYyBjb25zdCByZWdfZXJyb3JfdCBSRUdfRV9NRU1PUlkgPSAxNTsgLyogPSBSRUdfRVNJWkUgOiBvdXQgb2YgbWVtb3J5ICovCi1zdGF0aWMgY29uc3QgcmVnX2Vycm9yX3QgUkVHX0VDT01QTEVYSVRZID0gMTg7IC8qIGNvbXBsZXhpdHkgdG9vIGhpZ2ggKi8KLXN0YXRpYyBjb25zdCByZWdfZXJyb3JfdCBSRUdfRVNUQUNLID0gMTk7ICAgLyogb3V0IG9mIHN0YWNrIHNwYWNlICovCi1zdGF0aWMgY29uc3QgcmVnX2Vycm9yX3QgUkVHX0VfUEVSTCA9IDIwOyAgIC8qIFBlcmwgKD8uLi4pIGVycm9yICovCi1zdGF0aWMgY29uc3QgcmVnX2Vycm9yX3QgUkVHX0VfVU5LTk9XTiA9IDIxOyAvKiB1bmtub3duIGVycm9yICovCi1zdGF0aWMgY29uc3QgcmVnX2Vycm9yX3QgUkVHX0VOT1NZUyA9IDIxOyAgIC8qID0gUkVHX0VfVU5LTk9XTiA6IFJlc2VydmVkLiAqLwotCi1ORE5CT09TVF9SRUdFWF9ERUNMIGludCBORE5CT09TVF9SRUdFWF9DQ0FMTCByZWdjb21wQShyZWdleF90QSosIGNvbnN0IGNoYXIqLCBpbnQpOwotTkROQk9PU1RfUkVHRVhfREVDTCByZWdzaXplX3QgTkROQk9PU1RfUkVHRVhfQ0NBTEwgcmVnZXJyb3JBKGludCwgY29uc3QgcmVnZXhfdEEqLCBjaGFyKiwgcmVnc2l6ZV90KTsKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgaW50IE5ETkJPT1NUX1JFR0VYX0NDQUxMIHJlZ2V4ZWNBKGNvbnN0IHJlZ2V4X3RBKiwgY29uc3QgY2hhciosIHJlZ3NpemVfdCwgcmVnbWF0Y2hfdCosIGludCk7Ci1ORE5CT09TVF9SRUdFWF9ERUNMIHZvaWQgTkROQk9PU1RfUkVHRVhfQ0NBTEwgcmVnZnJlZUEocmVnZXhfdEEqKTsKLQotI2lmbmRlZiBORE5CT09TVF9OT19XUkVHRVgKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgaW50IE5ETkJPT1NUX1JFR0VYX0NDQUxMIHJlZ2NvbXBXKHJlZ2V4X3RXKiwgY29uc3Qgd2NoYXJfdCosIGludCk7Ci1ORE5CT09TVF9SRUdFWF9ERUNMIHJlZ3NpemVfdCBORE5CT09TVF9SRUdFWF9DQ0FMTCByZWdlcnJvclcoaW50LCBjb25zdCByZWdleF90VyosIHdjaGFyX3QqLCByZWdzaXplX3QpOwotTkROQk9PU1RfUkVHRVhfREVDTCBpbnQgTkROQk9PU1RfUkVHRVhfQ0NBTEwgcmVnZXhlY1coY29uc3QgcmVnZXhfdFcqLCBjb25zdCB3Y2hhcl90KiwgcmVnc2l6ZV90LCByZWdtYXRjaF90KiwgaW50KTsKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgdm9pZCBORE5CT09TVF9SRUdFWF9DQ0FMTCByZWdmcmVlVyhyZWdleF90VyopOwotI2VuZGlmCi0KLSNpZmRlZiBVTklDT0RFCi0jZGVmaW5lIHJlZ2NvbXAgcmVnY29tcFcKLSNkZWZpbmUgcmVnZXJyb3IgcmVnZXJyb3JXCi0jZGVmaW5lIHJlZ2V4ZWMgcmVnZXhlY1cKLSNkZWZpbmUgcmVnZnJlZSByZWdmcmVlVwotI2RlZmluZSByZWdleF90IHJlZ2V4X3RXCi0jZWxzZQotI2RlZmluZSByZWdjb21wIHJlZ2NvbXBBCi0jZGVmaW5lIHJlZ2Vycm9yIHJlZ2Vycm9yQQotI2RlZmluZSByZWdleGVjIHJlZ2V4ZWNBCi0jZGVmaW5lIHJlZ2ZyZWUgcmVnZnJlZUEKLSNkZWZpbmUgcmVnZXhfdCByZWdleF90QQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19IC8qIGV4dGVybiAiQyIgKi8KLX0gLyogbmFtZXNwYWNlICovCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpCi0vKgotICogQysrIGhpZ2ggbGV2ZWwgd3JhcHBlciBnb2VzIGhlcmU6Ci0gKi8KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8dmVjdG9yPgotbmFtZXNwYWNlIG5kbmJvb3N0ewotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLWNsYXNzIFJlZ0V4OwotCi1uYW1lc3BhY2UgcmVfZGV0YWlsewotCi1jbGFzcyBSZWdFeERhdGE7Ci1zdHJ1Y3QgcHJlZDE7Ci1zdHJ1Y3QgcHJlZDI7Ci1zdHJ1Y3QgcHJlZDM7Ci1zdHJ1Y3QgcHJlZDQ7Ci0KLX0gIC8qIG5hbWVzcGFjZSByZV9kZXRhaWwgKi8KLQotI2lmIChkZWZpbmVkKE5ETkJPT1NUX01TVkMpIHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKSkgJiYgIWRlZmluZWQoTkROQk9PU1RfRElTQUJMRV9XSU4zMikKLXR5cGVkZWYgYm9vbCAoX19jZGVjbCAqR3JlcENhbGxiYWNrKShjb25zdCBSZWdFeCYgZXhwcmVzc2lvbik7Ci10eXBlZGVmIGJvb2wgKF9fY2RlY2wgKkdyZXBGaWxlQ2FsbGJhY2spKGNvbnN0IGNoYXIqIGZpbGUsIGNvbnN0IFJlZ0V4JiBleHByZXNzaW9uKTsKLXR5cGVkZWYgYm9vbCAoX19jZGVjbCAqRmluZEZpbGVzQ2FsbGJhY2spKGNvbnN0IGNoYXIqIGZpbGUpOwotI2Vsc2UKLXR5cGVkZWYgYm9vbCAoKkdyZXBDYWxsYmFjaykoY29uc3QgUmVnRXgmIGV4cHJlc3Npb24pOwotdHlwZWRlZiBib29sICgqR3JlcEZpbGVDYWxsYmFjaykoY29uc3QgY2hhciogZmlsZSwgY29uc3QgUmVnRXgmIGV4cHJlc3Npb24pOwotdHlwZWRlZiBib29sICgqRmluZEZpbGVzQ2FsbGJhY2spKGNvbnN0IGNoYXIqIGZpbGUpOwotI2VuZGlmCi0KLWNsYXNzIE5ETkJPT1NUX1JFR0VYX0RFQ0wgUmVnRXgKLXsKLXByaXZhdGU6Ci0gICByZV9kZXRhaWw6OlJlZ0V4RGF0YSogcGRhdGE7Ci1wdWJsaWM6Ci0gICBSZWdFeCgpOwotICAgUmVnRXgoY29uc3QgUmVnRXgmIG8pOwotICAgflJlZ0V4KCk7Ci0gICBleHBsaWNpdCBSZWdFeChjb25zdCBjaGFyKiBjLCBib29sIGljYXNlID0gZmFsc2UpOwotICAgZXhwbGljaXQgUmVnRXgoY29uc3Qgc3RkOjpzdHJpbmcmIHMsIGJvb2wgaWNhc2UgPSBmYWxzZSk7Ci0gICBSZWdFeCYgb3BlcmF0b3I9KGNvbnN0IFJlZ0V4JiBvKTsKLSAgIFJlZ0V4JiBvcGVyYXRvcj0oY29uc3QgY2hhciogcCk7Ci0gICBSZWdFeCYgb3BlcmF0b3I9KGNvbnN0IHN0ZDo6c3RyaW5nJiBzKXsgcmV0dXJuIHRoaXMtPm9wZXJhdG9yPShzLmNfc3RyKCkpOyB9Ci0gICB1bnNpZ25lZCBpbnQgU2V0RXhwcmVzc2lvbihjb25zdCBjaGFyKiBwLCBib29sIGljYXNlID0gZmFsc2UpOwotICAgdW5zaWduZWQgaW50IFNldEV4cHJlc3Npb24oY29uc3Qgc3RkOjpzdHJpbmcmIHMsIGJvb2wgaWNhc2UgPSBmYWxzZSl7IHJldHVybiBTZXRFeHByZXNzaW9uKHMuY19zdHIoKSwgaWNhc2UpOyB9Ci0gICBzdGQ6OnN0cmluZyBFeHByZXNzaW9uKCljb25zdDsKLSAgIHVuc2lnbmVkIGludCBlcnJvcl9jb2RlKCljb25zdDsKLSAgIC8qCi0gICAgKiBub3cgbWF0Y2hpbmcgb3BlcmF0b3JzOgotICAgICovCi0gICBib29sIE1hdGNoKGNvbnN0IGNoYXIqIHAsIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpOwotICAgYm9vbCBNYXRjaChjb25zdCBzdGQ6OnN0cmluZyYgcywgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkgeyByZXR1cm4gTWF0Y2gocy5jX3N0cigpLCBmbGFncyk7IH0KLSAgIGJvb2wgU2VhcmNoKGNvbnN0IGNoYXIqIHAsIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpOwotICAgYm9vbCBTZWFyY2goY29uc3Qgc3RkOjpzdHJpbmcmIHMsIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpIHsgcmV0dXJuIFNlYXJjaChzLmNfc3RyKCksIGZsYWdzKTsgfQotICAgdW5zaWduZWQgaW50IEdyZXAoR3JlcENhbGxiYWNrIGNiLCBjb25zdCBjaGFyKiBwLCBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KTsKLSAgIHVuc2lnbmVkIGludCBHcmVwKEdyZXBDYWxsYmFjayBjYiwgY29uc3Qgc3RkOjpzdHJpbmcmIHMsIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpIHsgcmV0dXJuIEdyZXAoY2IsIHMuY19zdHIoKSwgZmxhZ3MpOyB9Ci0gICB1bnNpZ25lZCBpbnQgR3JlcChzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIHYsIGNvbnN0IGNoYXIqIHAsIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpOwotICAgdW5zaWduZWQgaW50IEdyZXAoc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiB2LCBjb25zdCBzdGQ6OnN0cmluZyYgcywgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkgeyByZXR1cm4gR3JlcCh2LCBzLmNfc3RyKCksIGZsYWdzKTsgfQotICAgdW5zaWduZWQgaW50IEdyZXAoc3RkOjp2ZWN0b3I8c3RkOjpzaXplX3Q+JiB2LCBjb25zdCBjaGFyKiBwLCBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KTsKLSAgIHVuc2lnbmVkIGludCBHcmVwKHN0ZDo6dmVjdG9yPHN0ZDo6c2l6ZV90PiYgdiwgY29uc3Qgc3RkOjpzdHJpbmcmIHMsIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpIHsgcmV0dXJuIEdyZXAodiwgcy5jX3N0cigpLCBmbGFncyk7IH0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfTk9fRklMRUlURVIKLSAgIHVuc2lnbmVkIGludCBHcmVwRmlsZXMoR3JlcEZpbGVDYWxsYmFjayBjYiwgY29uc3QgY2hhciogZmlsZXMsIGJvb2wgcmVjdXJzZSA9IGZhbHNlLCBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KTsKLSAgIHVuc2lnbmVkIGludCBHcmVwRmlsZXMoR3JlcEZpbGVDYWxsYmFjayBjYiwgY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVzLCBib29sIHJlY3Vyc2UgPSBmYWxzZSwgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkgeyByZXR1cm4gR3JlcEZpbGVzKGNiLCBmaWxlcy5jX3N0cigpLCByZWN1cnNlLCBmbGFncyk7IH0KLSAgIHVuc2lnbmVkIGludCBGaW5kRmlsZXMoRmluZEZpbGVzQ2FsbGJhY2sgY2IsIGNvbnN0IGNoYXIqIGZpbGVzLCBib29sIHJlY3Vyc2UgPSBmYWxzZSwgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCk7Ci0gICB1bnNpZ25lZCBpbnQgRmluZEZpbGVzKEZpbmRGaWxlc0NhbGxiYWNrIGNiLCBjb25zdCBzdGQ6OnN0cmluZyYgZmlsZXMsIGJvb2wgcmVjdXJzZSA9IGZhbHNlLCBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KSB7IHJldHVybiBGaW5kRmlsZXMoY2IsIGZpbGVzLmNfc3RyKCksIHJlY3Vyc2UsIGZsYWdzKTsgfQotI2VuZGlmCi0KLSAgIHN0ZDo6c3RyaW5nIE1lcmdlKGNvbnN0IHN0ZDo6c3RyaW5nJiBpbiwgY29uc3Qgc3RkOjpzdHJpbmcmIGZtdCwKLSAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjb3B5ID0gdHJ1ZSwgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCk7Ci0gICBzdGQ6OnN0cmluZyBNZXJnZShjb25zdCBjaGFyKiBpbiwgY29uc3QgY2hhciogZm10LAotICAgICAgICAgICAgICAgICAgICAgICBib29sIGNvcHkgPSB0cnVlLCBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KTsKLQotICAgc3RkOjpzaXplX3QgU3BsaXQoc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiB2LCBzdGQ6OnN0cmluZyYgcywgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCwgdW5zaWduZWQgbWF4X2NvdW50ID0gfjApOwotICAgLyoKLSAgICAqIG5vdyBvcGVyYXRvcnMgZm9yIHJldHVybmluZyB3aGF0IG1hdGNoZWQgaW4gbW9yZSBkZXRhaWw6Ci0gICAgKi8KLSAgIHN0ZDo6c2l6ZV90IFBvc2l0aW9uKGludCBpID0gMCljb25zdDsKLSAgIHN0ZDo6c2l6ZV90IExlbmd0aChpbnQgaSA9IDApY29uc3Q7Ci0gICBib29sIE1hdGNoZWQoaW50IGkgPSAwKWNvbnN0OwotICAgc3RkOjpzaXplX3QgTWFya3MoKWNvbnN0OwotICAgc3RkOjpzdHJpbmcgV2hhdChpbnQgaSA9IDApY29uc3Q7Ci0gICBzdGQ6OnN0cmluZyBvcGVyYXRvcltdKGludCBpKWNvbnN0IHsgcmV0dXJuIFdoYXQoaSk7IH0KLQotICAgc3RhdGljIGNvbnN0IHN0ZDo6c2l6ZV90IG5wb3M7Ci0KLSAgIGZyaWVuZCBzdHJ1Y3QgcmVfZGV0YWlsOjpwcmVkMTsKLSAgIGZyaWVuZCBzdHJ1Y3QgcmVfZGV0YWlsOjpwcmVkMjsKLSAgIGZyaWVuZCBzdHJ1Y3QgcmVfZGV0YWlsOjpwcmVkMzsKLSAgIGZyaWVuZCBzdHJ1Y3QgcmVfZGV0YWlsOjpwcmVkNDsKLX07Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotfSAvKiBuYW1lc3BhY2UgbmRuYm9vc3QgKi8KLQotI2VuZGlmIC8qIF9fY3BsdXNwbHVzICovCi0KLSNlbmRpZiAvKiBpbmNsdWRlIGd1YXJkICovCi0KLQotCi0KLQotCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvZXJyb3JfdHlwZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2Vycm9yX3R5cGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTRlOWMwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvZXJyb3JfdHlwZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMjAwMy0yMDA1Ci0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLSAKLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICBlcnJvcl90eXBlLmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogRGVjbGFyZXMgcmVndWxhciBleHByZXNzaW9uIGVycm9yIHR5cGUgZW51bWVyYXRvci4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9FUlJPUl9UWVBFX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9FUlJPUl9UWVBFX0hQUAotCi0jaWZkZWYgX19jcGx1c3BsdXMKLW5hbWVzcGFjZSBuZG5ib29zdHsKLSNlbmRpZgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLW5hbWVzcGFjZSByZWdleF9jb25zdGFudHN7Ci0KLWVudW0gZXJyb3JfdHlwZXsKLQotICAgZXJyb3Jfb2sgPSAwLCAgICAgICAgIC8qIG5vdCB1c2VkICovCi0gICBlcnJvcl9ub19tYXRjaCA9IDEsICAgLyogbm90IHVzZWQgKi8KLSAgIGVycm9yX2JhZF9wYXR0ZXJuID0gMiwKLSAgIGVycm9yX2NvbGxhdGUgPSAzLAotICAgZXJyb3JfY3R5cGUgPSA0LAotICAgZXJyb3JfZXNjYXBlID0gNSwKLSAgIGVycm9yX2JhY2tyZWYgPSA2LAotICAgZXJyb3JfYnJhY2sgPSA3LAotICAgZXJyb3JfcGFyZW4gPSA4LAotICAgZXJyb3JfYnJhY2UgPSA5LAotICAgZXJyb3JfYmFkYnJhY2UgPSAxMCwKLSAgIGVycm9yX3JhbmdlID0gMTEsCi0gICBlcnJvcl9zcGFjZSA9IDEyLAotICAgZXJyb3JfYmFkcmVwZWF0ID0gMTMsCi0gICBlcnJvcl9lbmQgPSAxNCwgICAgLyogbm90IHVzZWQgKi8KLSAgIGVycm9yX3NpemUgPSAxNSwKLSAgIGVycm9yX3JpZ2h0X3BhcmVuID0gMTYsICAvKiBub3QgdXNlZCAqLwotICAgZXJyb3JfZW1wdHkgPSAxNywKLSAgIGVycm9yX2NvbXBsZXhpdHkgPSAxOCwKLSAgIGVycm9yX3N0YWNrID0gMTksCi0gICBlcnJvcl9wZXJsX2V4dGVuc2lvbiA9IDIwLAotICAgZXJyb3JfdW5rbm93biA9IDIxCi19OwotCi19Ci19Ci0jZW5kaWYgLyogX19jcGx1c3BsdXMgKi8KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2ZpbGVpdGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvZmlsZWl0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NWI5OWY4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvZmlsZWl0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDU1ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0gCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgZmlsZWl0ZXIuaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBEZWNsYXJlcyB2YXJpb3VzIHBsYXRmb3JtIGluZGVwZW5kZW50IGZpbGUgYW5kCi0gICogICAgICAgICAgICAgICAgZGlyZWN0b3J5IGl0ZXJhdG9ycywgcGx1cyBiaW5hcnkgZmlsZSBpbnB1dCBpbgotICAqICAgICAgICAgICAgICAgIHRoZSBmb3JtIG9mIGNsYXNzIG1hcF9maWxlLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFX0ZJTEVJVEVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9SRV9GSUxFSVRFUl9IUFBfSU5DTFVERUQKLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9DT05GSUdfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvY29uZmlnLmhwcD4KLSNlbmRpZgotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfTk9fRklMRUlURVIKLQotI2lmIChkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX19DWUdXSU4zMl9fKSkgJiYgIWRlZmluZWQoTkROQk9PU1RfUkVHRVhfTk9fVzMyKQotI2Vycm9yICJTb3JyeSwgY2FuJ3QgbWl4IDx3aW5kb3dzLmg+IHdpdGggU1RMIGNvZGUgYW5kIGdjYyBjb21waWxlcjogaWYgeW91IHJhbiBjb25maWd1cmUsIHRyeSBhZ2FpbiB3aXRoIGNvbmZpZ3VyZSAtLWRpc2FibGUtbXMtd2luZG93cyIKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfRklfV0lOMzJfTUFQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0ZJX1BPU0lYX0RJUgotI2VsaWYgKGRlZmluZWQoX19XSU4zMl9fKSB8fCBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChXSU4zMikpICYmICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX05PX1czMikKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfRklfV0lOMzJfTUFQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0ZJX1dJTjMyX0RJUgotI2Vsc2UKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfRklfUE9TSVhfTUFQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0ZJX1BPU0lYX0RJUgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX0ZJX1dJTjMyX01BUCl8fGRlZmluZWQoTkROQk9PU1RfUkVHRVhfRklfV0lOMzJfRElSKQotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9SRUdFWF9GSV9XSU4zMl9ESVIpCi0KLSNpbmNsdWRlIDxjc3RkZGVmPgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0gICBuYW1lc3BhY2UgcmVfZGV0YWlsewotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0FOU0lfQVBJUwotdHlwZWRlZiBXSU4zMl9GSU5EX0RBVEFBIF9maV9maW5kX2RhdGE7Ci0jZWxzZQotdHlwZWRlZiBXSU4zMl9GSU5EX0RBVEFXIF9maV9maW5kX2RhdGE7Ci0jZW5kaWYKLXR5cGVkZWYgSEFORExFIF9maV9maW5kX2hhbmRsZTsKLQotICAgfSAvLyBuYW1lc3BhY2UgcmVfZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNkZWZpbmUgX2ZpX2ludmFsaWRfaGFuZGxlIElOVkFMSURfSEFORExFX1ZBTFVFCi0jZGVmaW5lIF9maV9kaXIgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZCi0KLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfUkVHRVhfRklfUE9TSVhfRElSKQotCi0jaW5jbHVkZSA8Y3N0ZGRlZj4KLSNpbmNsdWRlIDxjc3RkaW8+Ci0jaW5jbHVkZSA8Y2N0eXBlPgotI2luY2x1ZGUgPGl0ZXJhdG9yPgotI2luY2x1ZGUgPGxpc3Q+Ci0jaW5jbHVkZSA8Y2Fzc2VydD4KLSNpbmNsdWRlIDxkaXJlbnQuaD4KLQotI2lmIGRlZmluZWQoX19TVU5QUk9fQ0MpCi11c2luZyBzdGQ6Omxpc3Q7Ci0jZW5kaWYKLQotI2lmbmRlZiBNQVhfUEFUSAotI2RlZmluZSBNQVhfUEFUSCAyNTYKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0gICBuYW1lc3BhY2UgcmVfZGV0YWlsewotCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotCi1zdHJ1Y3QgX2ZpX2ZpbmRfZGF0YQotewotICAgdW5zaWduZWQgZHdGaWxlQXR0cmlidXRlczsKLSAgIGNoYXIgY0ZpbGVOYW1lW01BWF9QQVRIXTsKLX07Ci0KLXN0cnVjdCBfZmlfcHJpdl9kYXRhOwotCi10eXBlZGVmIF9maV9wcml2X2RhdGEqIF9maV9maW5kX2hhbmRsZTsKLSNkZWZpbmUgX2ZpX2ludmFsaWRfaGFuZGxlIDAKLSNkZWZpbmUgX2ZpX2RpciAxCi0KLV9maV9maW5kX2hhbmRsZSBfZmlfRmluZEZpcnN0RmlsZShjb25zdCBjaGFyKiBscEZpbGVOYW1lLCBfZmlfZmluZF9kYXRhKiBscEZpbmRGaWxlRGF0YSk7Ci1ib29sIF9maV9GaW5kTmV4dEZpbGUoX2ZpX2ZpbmRfaGFuZGxlIGhGaW5kRmlsZSwgICBfZmlfZmluZF9kYXRhKiBscEZpbmRGaWxlRGF0YSk7Ci1ib29sIF9maV9GaW5kQ2xvc2UoX2ZpX2ZpbmRfaGFuZGxlIGhGaW5kRmlsZSk7Ci0KLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0KLSAgIH0gLy8gbmFtZXNwYWNlIHJlX2RldGFpbAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmZGVmIEZpbmRGaXJzdEZpbGUKLSAjdW5kZWYgRmluZEZpcnN0RmlsZQotI2VuZGlmCi0jaWZkZWYgRmluZE5leHRGaWxlCi0gI3VuZGVmIEZpbmROZXh0RmlsZQotI2VuZGlmCi0jaWZkZWYgRmluZENsb3NlCi0gI3VuZGVmIEZpbmRDbG9zZQotI2VuZGlmCi0KLSNkZWZpbmUgRmluZEZpcnN0RmlsZUEgX2ZpX0ZpbmRGaXJzdEZpbGUKLSNkZWZpbmUgRmluZE5leHRGaWxlQSBfZmlfRmluZE5leHRGaWxlCi0jZGVmaW5lIEZpbmRDbG9zZSBfZmlfRmluZENsb3NlCi0KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0gICBuYW1lc3BhY2UgcmVfZGV0YWlsewotCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfUkVHRVhfRklfV0lOMzJfTUFQIC8vIHdpbjMyIG1hcGZpbGUKLQotY2xhc3MgTkROQk9PU1RfUkVHRVhfREVDTCBtYXBmaWxlCi17Ci0gICBIQU5ETEUgaGZpbGU7Ci0gICBIQU5ETEUgaG1hcDsKLSAgIGNvbnN0IGNoYXIqIF9maXJzdDsKLSAgIGNvbnN0IGNoYXIqIF9sYXN0OwotcHVibGljOgotCi0gICB0eXBlZGVmIGNvbnN0IGNoYXIqIGl0ZXJhdG9yOwotCi0gICBtYXBmaWxlKCl7IGhmaWxlID0gaG1hcCA9IDA7IF9maXJzdCA9IF9sYXN0ID0gMDsgfQotICAgbWFwZmlsZShjb25zdCBjaGFyKiBmaWxlKXsgaGZpbGUgPSBobWFwID0gMDsgX2ZpcnN0ID0gX2xhc3QgPSAwOyBvcGVuKGZpbGUpOyB9Ci0gICB+bWFwZmlsZSgpeyBjbG9zZSgpOyB9Ci0gICB2b2lkIG9wZW4oY29uc3QgY2hhciogZmlsZSk7Ci0gICB2b2lkIGNsb3NlKCk7Ci0gICBjb25zdCBjaGFyKiBiZWdpbigpeyByZXR1cm4gX2ZpcnN0OyB9Ci0gICBjb25zdCBjaGFyKiBlbmQoKXsgcmV0dXJuIF9sYXN0OyB9Ci0gICBzaXplX3Qgc2l6ZSgpeyByZXR1cm4gX2xhc3QgLSBfZmlyc3Q7IH0KLSAgIGJvb2wgdmFsaWQoKXsgcmV0dXJuIChoZmlsZSAhPSAwKSAmJiAoaGZpbGUgIT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpOyB9Ci19OwotCi0KLSNlbHNlCi0KLWNsYXNzIE5ETkJPT1NUX1JFR0VYX0RFQ0wgbWFwZmlsZV9pdGVyYXRvcjsKLQotY2xhc3MgTkROQk9PU1RfUkVHRVhfREVDTCBtYXBmaWxlCi17Ci0gICB0eXBlZGVmIGNoYXIqIHBvaW50ZXI7Ci0gICBzdGQ6OkZJTEUqIGhmaWxlOwotICAgbG9uZyBpbnQgX3NpemU7Ci0gICBwb2ludGVyKiBfZmlyc3Q7Ci0gICBwb2ludGVyKiBfbGFzdDsKLSAgIG11dGFibGUgc3RkOjpsaXN0PHBvaW50ZXIqPiBjb25kZW1lZDsKLSAgIGVudW0gc2l6ZXMKLSAgIHsKLSAgICAgIGJ1Zl9zaXplID0gNDA5NgotICAgfTsKLSAgIHZvaWQgbG9jayhwb2ludGVyKiBub2RlKWNvbnN0OwotICAgdm9pZCB1bmxvY2socG9pbnRlciogbm9kZSljb25zdDsKLXB1YmxpYzoKLQotICAgdHlwZWRlZiBtYXBmaWxlX2l0ZXJhdG9yIGl0ZXJhdG9yOwotCi0gICBtYXBmaWxlKCl7IGhmaWxlID0gMDsgX3NpemUgPSAwOyBfZmlyc3QgPSBfbGFzdCA9IDA7IH0KLSAgIG1hcGZpbGUoY29uc3QgY2hhciogZmlsZSl7IGhmaWxlID0gMDsgX3NpemUgPSAwOyBfZmlyc3QgPSBfbGFzdCA9IDA7IG9wZW4oZmlsZSk7IH0KLSAgIH5tYXBmaWxlKCl7IGNsb3NlKCk7IH0KLSAgIHZvaWQgb3Blbihjb25zdCBjaGFyKiBmaWxlKTsKLSAgIHZvaWQgY2xvc2UoKTsKLSAgIGl0ZXJhdG9yIGJlZ2luKCljb25zdDsKLSAgIGl0ZXJhdG9yIGVuZCgpY29uc3Q7Ci0gICB1bnNpZ25lZCBsb25nIHNpemUoKWNvbnN0eyByZXR1cm4gX3NpemU7IH0KLSAgIGJvb2wgdmFsaWQoKWNvbnN0eyByZXR1cm4gaGZpbGUgIT0gMDsgfQotICAgZnJpZW5kIGNsYXNzIG1hcGZpbGVfaXRlcmF0b3I7Ci19OwotCi1jbGFzcyBORE5CT09TVF9SRUdFWF9ERUNMIG1hcGZpbGVfaXRlcmF0b3IKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19TVERfSVRFUkFUT1IpIHx8IGRlZmluZWQoTkROQk9PU1RfTVNWQ19TVERfSVRFUkFUT1IpCi06IHB1YmxpYyBzdGQ6Oml0ZXJhdG9yPHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcsIGNoYXI+Ci0jZW5kaWYKLXsKLSAgIHR5cGVkZWYgbWFwZmlsZTo6cG9pbnRlciBpbnRlcm5hbF9wb2ludGVyOwotICAgaW50ZXJuYWxfcG9pbnRlciogbm9kZTsKLSAgIGNvbnN0IG1hcGZpbGUqIGZpbGU7Ci0gICB1bnNpZ25lZCBsb25nIG9mZnNldDsKLSAgIGxvbmcgcG9zaXRpb24oKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gZmlsZSA/ICgobm9kZSAtIGZpbGUtPl9maXJzdCkgKiBtYXBmaWxlOjpidWZfc2l6ZSArIG9mZnNldCkgOiAwOwotICAgfQotICAgdm9pZCBwb3NpdGlvbihsb25nIHBvcykKLSAgIHsKLSAgICAgIGlmKGZpbGUpCi0gICAgICB7Ci0gICAgICAgICBub2RlID0gZmlsZS0+X2ZpcnN0ICsgKHBvcyAvIG1hcGZpbGU6OmJ1Zl9zaXplKTsKLSAgICAgICAgIG9mZnNldCA9IHBvcyAlIG1hcGZpbGU6OmJ1Zl9zaXplOwotICAgICAgfQotICAgfQotcHVibGljOgotICAgdHlwZWRlZiBzdGQ6OnB0cmRpZmZfdCAgICAgICAgICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsKLSAgIHR5cGVkZWYgY2hhciAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV90eXBlOwotICAgdHlwZWRlZiBjb25zdCBjaGFyKiAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXI7Ci0gICB0eXBlZGVmIGNvbnN0IGNoYXImICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlOwotICAgdHlwZWRlZiBzdGQ6OnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OwotCi0gICBtYXBmaWxlX2l0ZXJhdG9yKCkgeyBub2RlID0gMDsgZmlsZSA9IDA7IG9mZnNldCA9IDA7IH0KLSAgIG1hcGZpbGVfaXRlcmF0b3IoY29uc3QgbWFwZmlsZSogZiwgbG9uZyBhcmdfcG9zaXRpb24pCi0gICB7Ci0gICAgICBmaWxlID0gZjsKLSAgICAgIG5vZGUgPSBmLT5fZmlyc3QgKyBhcmdfcG9zaXRpb24gLyBtYXBmaWxlOjpidWZfc2l6ZTsKLSAgICAgIG9mZnNldCA9IGFyZ19wb3NpdGlvbiAlIG1hcGZpbGU6OmJ1Zl9zaXplOwotICAgICAgaWYoZmlsZSkKLSAgICAgICAgIGZpbGUtPmxvY2sobm9kZSk7Ci0gICB9Ci0gICBtYXBmaWxlX2l0ZXJhdG9yKGNvbnN0IG1hcGZpbGVfaXRlcmF0b3ImIGkpCi0gICB7Ci0gICAgICBmaWxlID0gaS5maWxlOwotICAgICAgbm9kZSA9IGkubm9kZTsKLSAgICAgIG9mZnNldCA9IGkub2Zmc2V0OwotICAgICAgaWYoZmlsZSkKLSAgICAgICAgIGZpbGUtPmxvY2sobm9kZSk7Ci0gICB9Ci0gICB+bWFwZmlsZV9pdGVyYXRvcigpCi0gICB7Ci0gICAgICBpZihmaWxlICYmIG5vZGUpCi0gICAgICAgICBmaWxlLT51bmxvY2sobm9kZSk7Ci0gICB9Ci0gICBtYXBmaWxlX2l0ZXJhdG9yJiBvcGVyYXRvciA9IChjb25zdCBtYXBmaWxlX2l0ZXJhdG9yJiBpKTsKLSAgIGNoYXIgb3BlcmF0b3IqICgpY29uc3QKLSAgIHsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVChub2RlID49IGZpbGUtPl9maXJzdCk7Ci0gICAgICBORE5CT09TVF9BU1NFUlQobm9kZSA8IGZpbGUtPl9sYXN0KTsKLSAgICAgIHJldHVybiBmaWxlID8gKigqbm9kZSArIHNpemVvZihpbnQpICsgb2Zmc2V0KSA6IGNoYXIoMCk7Ci0gICB9Ci0gICBjaGFyIG9wZXJhdG9yW10gKGxvbmcgb2ZmKWNvbnN0Ci0gICB7Ci0gICAgICBtYXBmaWxlX2l0ZXJhdG9yIHRtcCgqdGhpcyk7Ci0gICAgICB0bXAgKz0gb2ZmOwotICAgICAgcmV0dXJuICp0bXA7Ci0gICB9Ci0gICBtYXBmaWxlX2l0ZXJhdG9yJiBvcGVyYXRvcisrICgpOwotICAgbWFwZmlsZV9pdGVyYXRvciBvcGVyYXRvcisrIChpbnQpOwotICAgbWFwZmlsZV9pdGVyYXRvciYgb3BlcmF0b3ItLSAoKTsKLSAgIG1hcGZpbGVfaXRlcmF0b3Igb3BlcmF0b3ItLSAoaW50KTsKLQotICAgbWFwZmlsZV9pdGVyYXRvciYgb3BlcmF0b3IgKz0gKGxvbmcgb2ZmKQotICAgewotICAgICAgcG9zaXRpb24ocG9zaXRpb24oKSArIG9mZik7Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICB9Ci0gICBtYXBmaWxlX2l0ZXJhdG9yJiBvcGVyYXRvciAtPSAobG9uZyBvZmYpCi0gICB7Ci0gICAgICBwb3NpdGlvbihwb3NpdGlvbigpIC0gb2ZmKTsKLSAgICAgIHJldHVybiAqdGhpczsKLSAgIH0KLQotICAgZnJpZW5kIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgbWFwZmlsZV9pdGVyYXRvciYgaSwgY29uc3QgbWFwZmlsZV9pdGVyYXRvciYgaikKLSAgIHsKLSAgICAgIHJldHVybiAoaS5maWxlID09IGouZmlsZSkgJiYgKGkubm9kZSA9PSBqLm5vZGUpICYmIChpLm9mZnNldCA9PSBqLm9mZnNldCk7Ci0gICB9Ci0KLSAgIGZyaWVuZCBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IG1hcGZpbGVfaXRlcmF0b3ImIGksIGNvbnN0IG1hcGZpbGVfaXRlcmF0b3ImIGopCi0gICB7Ci0gICAgICByZXR1cm4gIShpID09IGopOwotICAgfQotCi0gICBmcmllbmQgaW5saW5lIGJvb2wgb3BlcmF0b3I8KGNvbnN0IG1hcGZpbGVfaXRlcmF0b3ImIGksIGNvbnN0IG1hcGZpbGVfaXRlcmF0b3ImIGopCi0gICB7Ci0gICAgICByZXR1cm4gaS5wb3NpdGlvbigpIDwgai5wb3NpdGlvbigpOwotICAgfQotICAgZnJpZW5kIGlubGluZSBib29sIG9wZXJhdG9yPihjb25zdCBtYXBmaWxlX2l0ZXJhdG9yJiBpLCBjb25zdCBtYXBmaWxlX2l0ZXJhdG9yJiBqKQotICAgewotICAgICAgcmV0dXJuIGkucG9zaXRpb24oKSA+IGoucG9zaXRpb24oKTsKLSAgIH0KLSAgIGZyaWVuZCBpbmxpbmUgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IG1hcGZpbGVfaXRlcmF0b3ImIGksIGNvbnN0IG1hcGZpbGVfaXRlcmF0b3ImIGopCi0gICB7Ci0gICAgICByZXR1cm4gaS5wb3NpdGlvbigpIDw9IGoucG9zaXRpb24oKTsKLSAgIH0KLSAgIGZyaWVuZCBpbmxpbmUgYm9vbCBvcGVyYXRvcj49KGNvbnN0IG1hcGZpbGVfaXRlcmF0b3ImIGksIGNvbnN0IG1hcGZpbGVfaXRlcmF0b3ImIGopCi0gICB7Ci0gICAgICByZXR1cm4gaS5wb3NpdGlvbigpID49IGoucG9zaXRpb24oKTsKLSAgIH0KLQotICAgZnJpZW5kIG1hcGZpbGVfaXRlcmF0b3Igb3BlcmF0b3IgKyAoY29uc3QgbWFwZmlsZV9pdGVyYXRvciYgaSwgbG9uZyBvZmYpOwotICAgZnJpZW5kIG1hcGZpbGVfaXRlcmF0b3Igb3BlcmF0b3IgKyAobG9uZyBvZmYsIGNvbnN0IG1hcGZpbGVfaXRlcmF0b3ImIGkpCi0gICB7Ci0gICAgICBtYXBmaWxlX2l0ZXJhdG9yIHRtcChpKTsKLSAgICAgIHJldHVybiB0bXAgKz0gb2ZmOwotICAgfQotICAgZnJpZW5kIG1hcGZpbGVfaXRlcmF0b3Igb3BlcmF0b3IgLSAoY29uc3QgbWFwZmlsZV9pdGVyYXRvciYgaSwgbG9uZyBvZmYpOwotICAgZnJpZW5kIGlubGluZSBsb25nIG9wZXJhdG9yIC0gKGNvbnN0IG1hcGZpbGVfaXRlcmF0b3ImIGksIGNvbnN0IG1hcGZpbGVfaXRlcmF0b3ImIGopCi0gICB7Ci0gICAgICByZXR1cm4gaS5wb3NpdGlvbigpIC0gai5wb3NpdGlvbigpOwotICAgfQotfTsKLQotI2VuZGlmCi0KLS8vIF9maV9zZXAgZGV0ZXJtaW5lcyB0aGUgZGlyZWN0b3J5IHNlcGFyYXRvciwgZWl0aGVyICdcXCcgb3IgJy8nCi1ORE5CT09TVF9SRUdFWF9ERUNMIGV4dGVybiBjb25zdCBjaGFyKiBfZmlfc2VwOwotCi1zdHJ1Y3QgZmlsZV9pdGVyYXRvcl9yZWYKLXsKLSAgIF9maV9maW5kX2hhbmRsZSBoZjsKLSAgIF9maV9maW5kX2RhdGEgX2RhdGE7Ci0gICBsb25nIGNvdW50OwotfTsKLQotCi1jbGFzcyBORE5CT09TVF9SRUdFWF9ERUNMIGZpbGVfaXRlcmF0b3IgCi17Ci0gICBjaGFyKiBfcm9vdDsKLSAgIGNoYXIqIF9wYXRoOwotICAgY2hhciogcHRyOwotICAgZmlsZV9pdGVyYXRvcl9yZWYqIHJlZjsKLQotcHVibGljOgotICAgdHlwZWRlZiBzdGQ6OnB0cmRpZmZfdCAgICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsKLSAgIHR5cGVkZWYgY29uc3QgY2hhciogICAgICAgICAgICAgICB2YWx1ZV90eXBlOwotICAgdHlwZWRlZiBjb25zdCBjaGFyKiogICAgICAgICAgICAgIHBvaW50ZXI7Ci0gICB0eXBlZGVmIGNvbnN0IGNoYXIqJiAgICAgICAgICAgICAgcmVmZXJlbmNlOwotICAgdHlwZWRlZiBzdGQ6OmlucHV0X2l0ZXJhdG9yX3RhZyAgIGl0ZXJhdG9yX2NhdGVnb3J5OwotCi0gICBmaWxlX2l0ZXJhdG9yKCk7Ci0gICBmaWxlX2l0ZXJhdG9yKGNvbnN0IGNoYXIqIHdpbGQpOwotICAgfmZpbGVfaXRlcmF0b3IoKTsKLSAgIGZpbGVfaXRlcmF0b3IoY29uc3QgZmlsZV9pdGVyYXRvciYpOwotICAgZmlsZV9pdGVyYXRvciYgb3BlcmF0b3I9KGNvbnN0IGZpbGVfaXRlcmF0b3ImKTsKLSAgIGNvbnN0IGNoYXIqIHJvb3QoKWNvbnN0IHsgcmV0dXJuIF9yb290OyB9Ci0gICBjb25zdCBjaGFyKiBwYXRoKCljb25zdCB7IHJldHVybiBfcGF0aDsgfQotICAgY29uc3QgY2hhciogbmFtZSgpY29uc3QgeyByZXR1cm4gcHRyOyB9Ci0gICBfZmlfZmluZF9kYXRhKiBkYXRhKCkgeyByZXR1cm4gJihyZWYtPl9kYXRhKTsgfQotICAgdm9pZCBuZXh0KCk7Ci0gICBmaWxlX2l0ZXJhdG9yJiBvcGVyYXRvcisrKCkgeyBuZXh0KCk7IHJldHVybiAqdGhpczsgfQotICAgZmlsZV9pdGVyYXRvciBvcGVyYXRvcisrKGludCk7Ci0gICBjb25zdCBjaGFyKiBvcGVyYXRvciooKSB7IHJldHVybiBwYXRoKCk7IH0KLQotICAgZnJpZW5kIGlubGluZSBib29sIG9wZXJhdG9yID09IChjb25zdCBmaWxlX2l0ZXJhdG9yJiBmMSwgY29uc3QgZmlsZV9pdGVyYXRvciYgZjIpCi0gICB7Ci0gICAgICByZXR1cm4gKChmMS5yZWYtPmhmID09IF9maV9pbnZhbGlkX2hhbmRsZSkgJiYgKGYyLnJlZi0+aGYgPT0gX2ZpX2ludmFsaWRfaGFuZGxlKSk7Ci0gICB9Ci0KLSAgIGZyaWVuZCBpbmxpbmUgYm9vbCBvcGVyYXRvciAhPSAoY29uc3QgZmlsZV9pdGVyYXRvciYgZjEsIGNvbnN0IGZpbGVfaXRlcmF0b3ImIGYyKQotICAgewotICAgICAgcmV0dXJuICEoZjEgPT0gZjIpOwotICAgfQotCi19OwotCi0vLyBkd2EgOS8xMy8wMCAtIHN1cHByZXNzIHVudXNlZCBwYXJhbWV0ZXIgd2FybmluZwotaW5saW5lIGJvb2wgb3BlcmF0b3IgPCAoY29uc3QgZmlsZV9pdGVyYXRvciYsIGNvbnN0IGZpbGVfaXRlcmF0b3ImKQotewotICAgcmV0dXJuIGZhbHNlOwotfQotCi0KLWNsYXNzIE5ETkJPT1NUX1JFR0VYX0RFQ0wgZGlyZWN0b3J5X2l0ZXJhdG9yCi17Ci0gICBjaGFyKiBfcm9vdDsKLSAgIGNoYXIqIF9wYXRoOwotICAgY2hhciogcHRyOwotICAgZmlsZV9pdGVyYXRvcl9yZWYqIHJlZjsKLQotcHVibGljOgotICAgdHlwZWRlZiBzdGQ6OnB0cmRpZmZfdCAgICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsKLSAgIHR5cGVkZWYgY29uc3QgY2hhciogICAgICAgICAgICAgICB2YWx1ZV90eXBlOwotICAgdHlwZWRlZiBjb25zdCBjaGFyKiogICAgICAgICAgICAgIHBvaW50ZXI7Ci0gICB0eXBlZGVmIGNvbnN0IGNoYXIqJiAgICAgICAgICAgICAgcmVmZXJlbmNlOwotICAgdHlwZWRlZiBzdGQ6OmlucHV0X2l0ZXJhdG9yX3RhZyAgIGl0ZXJhdG9yX2NhdGVnb3J5OwotCi0gICBkaXJlY3RvcnlfaXRlcmF0b3IoKTsKLSAgIGRpcmVjdG9yeV9pdGVyYXRvcihjb25zdCBjaGFyKiB3aWxkKTsKLSAgIH5kaXJlY3RvcnlfaXRlcmF0b3IoKTsKLSAgIGRpcmVjdG9yeV9pdGVyYXRvcihjb25zdCBkaXJlY3RvcnlfaXRlcmF0b3ImIG90aGVyKTsKLSAgIGRpcmVjdG9yeV9pdGVyYXRvciYgb3BlcmF0b3I9KGNvbnN0IGRpcmVjdG9yeV9pdGVyYXRvciYgb3RoZXIpOwotCi0gICBjb25zdCBjaGFyKiByb290KCljb25zdCB7IHJldHVybiBfcm9vdDsgfQotICAgY29uc3QgY2hhciogcGF0aCgpY29uc3QgeyByZXR1cm4gX3BhdGg7IH0KLSAgIGNvbnN0IGNoYXIqIG5hbWUoKWNvbnN0IHsgcmV0dXJuIHB0cjsgfQotICAgX2ZpX2ZpbmRfZGF0YSogZGF0YSgpIHsgcmV0dXJuICYocmVmLT5fZGF0YSk7IH0KLSAgIHZvaWQgbmV4dCgpOwotICAgZGlyZWN0b3J5X2l0ZXJhdG9yJiBvcGVyYXRvcisrKCkgeyBuZXh0KCk7IHJldHVybiAqdGhpczsgfQotICAgZGlyZWN0b3J5X2l0ZXJhdG9yIG9wZXJhdG9yKysoaW50KTsKLSAgIGNvbnN0IGNoYXIqIG9wZXJhdG9yKigpIHsgcmV0dXJuIHBhdGgoKTsgfQotCi0gICBzdGF0aWMgY29uc3QgY2hhciogc2VwYXJhdG9yKCkgeyByZXR1cm4gX2ZpX3NlcDsgfQotCi0gICBmcmllbmQgaW5saW5lIGJvb2wgb3BlcmF0b3IgPT0gKGNvbnN0IGRpcmVjdG9yeV9pdGVyYXRvciYgZjEsIGNvbnN0IGRpcmVjdG9yeV9pdGVyYXRvciYgZjIpCi0gICB7Ci0gICAgICByZXR1cm4gKChmMS5yZWYtPmhmID09IF9maV9pbnZhbGlkX2hhbmRsZSkgJiYgKGYyLnJlZi0+aGYgPT0gX2ZpX2ludmFsaWRfaGFuZGxlKSk7Ci0gICB9Ci0KLQotICAgZnJpZW5kIGlubGluZSBib29sIG9wZXJhdG9yICE9IChjb25zdCBkaXJlY3RvcnlfaXRlcmF0b3ImIGYxLCBjb25zdCBkaXJlY3RvcnlfaXRlcmF0b3ImIGYyKQotICAgewotICAgICAgcmV0dXJuICEoZjEgPT0gZjIpOwotICAgfQotCi0gICB9OwotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciA8IChjb25zdCBkaXJlY3RvcnlfaXRlcmF0b3ImLCBjb25zdCBkaXJlY3RvcnlfaXRlcmF0b3ImKQotewotICAgcmV0dXJuIGZhbHNlOwotfQotCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotCi0KLX0gLy8gbmFtZXNwYWNlIHJlX2RldGFpbAotdXNpbmcgbmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlyZWN0b3J5X2l0ZXJhdG9yOwotdXNpbmcgbmRuYm9vc3Q6OnJlX2RldGFpbDo6ZmlsZV9pdGVyYXRvcjsKLXVzaW5nIG5kbmJvb3N0OjpyZV9kZXRhaWw6Om1hcGZpbGU7Ci19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgICAgIC8vIE5ETkJPT1NUX1JFR0VYX05PX0ZJTEVJVEVSCi0jZW5kaWYgICAgIC8vIE5ETkJPT1NUX1JFX0ZJTEVJVEVSX0hQUAotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9pbnN0YW5jZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9pbnN0YW5jZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNjRlMDFlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvaW5zdGFuY2VzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyMiArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIGluc3RhbmNlcy5jcHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlZmluZXMgdGhvc2UgdGVtcGxhdGUgaW5zdGFuY2VzIHRoYXQgYXJlIHBsYWNlZCBpbiB0aGUKLSAgKiAgICAgICAgICAgICAgICBsaWJyYXJ5IHJhdGhlciB0aGFuIGluIHRoZSB1c2VycyBvYmplY3QgZmlsZXMuCi0gICovCi0KLS8vCi0vLyBub3RlIG5vIGluY2x1ZGUgZ3VhcmQsIHdlIG1heSBpbmNsdWRlIHRoaXMgbXVsdGlwbGUgdGltZXM6Ci0vLwotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9OT19FWFRFUk5BTF9URU1QTEFURVMKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotCi0vLwotLy8gdGhpcyBoZWFkZXIgY2FuIGJlIGluY2x1ZGVkIG11bHRpcGxlIHRpbWVzLCBlYWNoIHRpbWUgd2l0aAotLy8gYSBkaWZmZXJlbnQgY2hhcmFjdGVyIHR5cGUsIE5ETkJPT1NUX1JFR0VYX0NIQVJfVCBtdXN0IGJlIGRlZmluZWQKLS8vIGZpcnN0OgotLy8KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfQ0hBUl9UCi0jICBlcnJvciAiTkROQk9PU1RfUkVHRVhfQ0hBUl9UIG5vdCBkZWZpbmVkIgotI2VuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVFJBSVRTX1QKLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9UUkFJVFNfVCAsIG5kbmJvb3N0OjpyZWdleF90cmFpdHM8TkROQk9PU1RfUkVHRVhfQ0hBUl9UID4KLSNlbmRpZgotCi0vLwotLy8gd2hhdCBmb2xsb3dzIGlzIGNvbXBpbGVyIHNwZWNpZmljOgotLy8KLQotI2lmICBkZWZpbmVkKF9fQk9STEFORENfXykgJiYgKF9fQk9STEFORENfXyA8IDB4NjAwKQotCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotCi0jICBpZm5kZWYgTkROQk9PU1RfUkVHRVhfSU5TVEFOVElBVEUKLSMgICAgIHByYWdtYSBvcHRpb24gcHVzaCAtSmd4Ci0jICBlbmRpZgotCi10ZW1wbGF0ZSBjbGFzcyBORE5CT09TVF9SRUdFWF9ERUNMIGJhc2ljX3JlZ2V4PCBORE5CT09TVF9SRUdFWF9DSEFSX1QgTkROQk9PU1RfUkVHRVhfVFJBSVRTX1QgPjsKLXRlbXBsYXRlIGNsYXNzIE5ETkJPT1NUX1JFR0VYX0RFQ0wgbWF0Y2hfcmVzdWx0czwgY29uc3QgTkROQk9PU1RfUkVHRVhfQ0hBUl9UKiA+OwotI2lmbmRlZiBORE5CT09TVF9OT19TVERfQUxMT0NBVE9SCi10ZW1wbGF0ZSBjbGFzcyBORE5CT09TVF9SRUdFWF9ERUNMIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6cGVybF9tYXRjaGVyPE5ETkJPT1NUX1JFR0VYX0NIQVJfVCBjb25zdCAqLCBtYXRjaF9yZXN1bHRzPCBjb25zdCBORE5CT09TVF9SRUdFWF9DSEFSX1QqID46OmFsbG9jYXRvcl90eXBlIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19UID47Ci0jZW5kaWYKLQotIyAgaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0lOU1RBTlRJQVRFCi0jICAgICBwcmFnbWEgb3B0aW9uIHBvcAotIyAgZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLQotI2VsaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKSB8fCBkZWZpbmVkKF9fSUNMKQotCi0jICBpZm5kZWYgTkROQk9PU1RfUkVHRVhfSU5TVEFOVElBVEUKLSMgICAgIGlmZGVmIF9fR05VQ19fCi0jICAgICAgICBkZWZpbmUgdGVtcGxhdGUgX19leHRlbnNpb25fXyBleHRlcm4gdGVtcGxhdGUKLSMgICAgIGVsc2UKLSMgICAgICAgIGlmIE5ETkJPT1NUX01TVkMgPiAxMzEwCi0jICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfVEVNUExBVEVfREVDTAotIyAgICAgICAgZW5kaWYKLSMgICAgICAgIGRlZmluZSB0ZW1wbGF0ZSBleHRlcm4gdGVtcGxhdGUKLSMgICAgIGVuZGlmCi0jICBlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1RFTVBMQVRFX0RFQ0wKLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9URU1QTEFURV9ERUNMIE5ETkJPT1NUX1JFR0VYX0RFQ0wKLSNlbmRpZgotCi0jICBpZmRlZiBORE5CT09TVF9NU1ZDCi0jICAgICBwcmFnbWEgd2FybmluZyhwdXNoKQotIyAgICAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQyNTEgNDIzMSkKLSMgICAgIGlmIE5ETkJPT1NUX01TVkMgPCAxNjAwCi0jICAgICBwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDY2MCkKLSMgICAgIGVuZGlmCi0jICBlbmRpZgotCi10ZW1wbGF0ZSBjbGFzcyBORE5CT09TVF9SRUdFWF9URU1QTEFURV9ERUNMIGJhc2ljX3JlZ2V4PCBORE5CT09TVF9SRUdFWF9DSEFSX1QgTkROQk9PU1RfUkVHRVhfVFJBSVRTX1QgPjsKLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLXRlbXBsYXRlIGNsYXNzIE5ETkJPT1NUX1JFR0VYX1RFTVBMQVRFX0RFQ0wgbWF0Y2hfcmVzdWx0czwgY29uc3QgTkROQk9PU1RfUkVHRVhfQ0hBUl9UKiA+OwotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9BTExPQ0FUT1IKLXRlbXBsYXRlIGNsYXNzIE5ETkJPT1NUX1JFR0VYX1RFTVBMQVRFX0RFQ0wgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpwZXJsX21hdGNoZXI8TkROQk9PU1RfUkVHRVhfQ0hBUl9UIGNvbnN0ICosIG1hdGNoX3Jlc3VsdHM8IGNvbnN0IE5ETkJPT1NUX1JFR0VYX0NIQVJfVCogPjo6YWxsb2NhdG9yX3R5cGUgTkROQk9PU1RfUkVHRVhfVFJBSVRTX1QgPjsKLSNlbmRpZgotI2lmICEoZGVmaW5lZChORE5CT09TVF9ESU5LVU1XQVJFX1NURExJQikgJiYgKE5ETkJPT1NUX0RJTktVTVdBUkVfU1RETElCIDw9IDEpKVwKLSAgICYmICEoZGVmaW5lZChORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTikgJiYgKE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OIDw9IDgwMCkpXAotICAgJiYgIShkZWZpbmVkKF9fU0dJX1NUTF9QT1JUKSB8fCBkZWZpbmVkKF9TVExQT1JUX1ZFUlNJT04pKVwKLSAgICYmICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX0lDVV9JTlNUQU5DRVMpCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotdGVtcGxhdGUgY2xhc3MgTkROQk9PU1RfUkVHRVhfVEVNUExBVEVfREVDTCBtYXRjaF9yZXN1bHRzPCBzdGQ6OmJhc2ljX3N0cmluZzxORE5CT09TVF9SRUdFWF9DSEFSX1Q+Ojpjb25zdF9pdGVyYXRvciA+OwotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9BTExPQ0FUT1IKLXRlbXBsYXRlIGNsYXNzIE5ETkJPT1NUX1JFR0VYX1RFTVBMQVRFX0RFQ0wgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpwZXJsX21hdGNoZXI8IHN0ZDo6YmFzaWNfc3RyaW5nPE5ETkJPT1NUX1JFR0VYX0NIQVJfVD46OmNvbnN0X2l0ZXJhdG9yLCBtYXRjaF9yZXN1bHRzPCBzdGQ6OmJhc2ljX3N0cmluZzxORE5CT09TVF9SRUdFWF9DSEFSX1Q+Ojpjb25zdF9pdGVyYXRvciA+OjphbGxvY2F0b3JfdHlwZSwgbmRuYm9vc3Q6OnJlZ2V4X3RyYWl0czxORE5CT09TVF9SRUdFWF9DSEFSX1QgPiA+OwotI2VuZGlmCi0jZW5kaWYKLQotCi0jICBpZmRlZiBORE5CT09TVF9NU1ZDCi0jICAgICBwcmFnbWEgd2FybmluZyhwb3ApCi0jICBlbmRpZgotCi0jICBpZmRlZiB0ZW1wbGF0ZQotIyAgICAgdW5kZWYgdGVtcGxhdGUKLSMgIGVuZGlmCi0KLSN1bmRlZiBORE5CT09TVF9SRUdFWF9URU1QTEFURV9ERUNMCi0KLSNlbGlmIChkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPj0gMykpIHx8ICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0VYVEVSTl9URU1QTEFURSkKLQotIyAgaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0lOU1RBTlRJQVRFCi0jICAgICBpZmRlZiBfX0dOVUNfXwotIyAgICAgICAgZGVmaW5lIHRlbXBsYXRlIF9fZXh0ZW5zaW9uX18gZXh0ZXJuIHRlbXBsYXRlCi0jICAgICBlbHNlCi0jICAgICAgICBkZWZpbmUgdGVtcGxhdGUgZXh0ZXJuIHRlbXBsYXRlCi0jICAgICBlbmRpZgotIyAgZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9MT0NBTEUpICYmICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX0lDVV9JTlNUQU5DRVMpCi1uYW1lc3BhY2UgcmVfZGV0YWlsewotdGVtcGxhdGUgTkROQk9PU1RfUkVHRVhfREVDTAotc3RkOjpsb2NhbGUgY3BwX3JlZ2V4X3RyYWl0c19iYXNlPE5ETkJPT1NUX1JFR0VYX0NIQVJfVD46OmltYnVlKGNvbnN0IHN0ZDo6bG9jYWxlJiBsKTsKLQotdGVtcGxhdGUgTkROQk9PU1RfUkVHRVhfREVDTAotY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxORE5CT09TVF9SRUdFWF9DSEFSX1Q+OjpzdHJpbmdfdHlwZSAKLSAgIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248TkROQk9PU1RfUkVHRVhfQ0hBUl9UPjo6dHJhbnNmb3JtX3ByaW1hcnkoY29uc3QgTkROQk9PU1RfUkVHRVhfQ0hBUl9UKiBwMSwgY29uc3QgTkROQk9PU1RfUkVHRVhfQ0hBUl9UKiBwMikgY29uc3Q7Ci10ZW1wbGF0ZSBORE5CT09TVF9SRUdFWF9ERUNMCi1jcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPE5ETkJPT1NUX1JFR0VYX0NIQVJfVD46OnN0cmluZ190eXBlIAotICAgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxORE5CT09TVF9SRUdFWF9DSEFSX1Q+Ojp0cmFuc2Zvcm0oY29uc3QgTkROQk9PU1RfUkVHRVhfQ0hBUl9UKiBwMSwgY29uc3QgTkROQk9PU1RfUkVHRVhfQ0hBUl9UKiBwMikgY29uc3Q7Ci10ZW1wbGF0ZSBORE5CT09TVF9SRUdFWF9ERUNMCi1jcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPE5ETkJPT1NUX1JFR0VYX0NIQVJfVD46OnN0cmluZ190eXBlIAotICAgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxORE5CT09TVF9SRUdFWF9DSEFSX1Q+Ojpsb29rdXBfY29sbGF0ZW5hbWUoY29uc3QgTkROQk9PU1RfUkVHRVhfQ0hBUl9UKiBwMSwgY29uc3QgTkROQk9PU1RfUkVHRVhfQ0hBUl9UKiBwMikgY29uc3Q7Ci10ZW1wbGF0ZSBORE5CT09TVF9SRUdFWF9ERUNMCi12b2lkIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248TkROQk9PU1RfUkVHRVhfQ0hBUl9UPjo6aW5pdCgpOwotdGVtcGxhdGUgTkROQk9PU1RfUkVHRVhfREVDTAotY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxORE5CT09TVF9SRUdFWF9DSEFSX1Q+OjpjaGFyX2NsYXNzX3R5cGUgCi0gICBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPE5ETkJPT1NUX1JFR0VYX0NIQVJfVD46Omxvb2t1cF9jbGFzc25hbWVfaW1wKGNvbnN0IE5ETkJPT1NUX1JFR0VYX0NIQVJfVCogcDEsIGNvbnN0IE5ETkJPT1NUX1JFR0VYX0NIQVJfVCogcDIpIGNvbnN0OwotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX0JVR0dZX0NUWVBFX0ZBQ0VUCi10ZW1wbGF0ZSBORE5CT09TVF9SRUdFWF9ERUNMCi1ib29sIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248TkROQk9PU1RfUkVHRVhfQ0hBUl9UPjo6aXNjdHlwZShjb25zdCBORE5CT09TVF9SRUdFWF9DSEFSX1QgYywgY2hhcl9jbGFzc190eXBlIG1hc2spIGNvbnN0OwotI2VuZGlmCi19IC8vIG5hbWVzcGFjZQotdGVtcGxhdGUgTkROQk9PU1RfUkVHRVhfREVDTAotaW50IGNwcF9yZWdleF90cmFpdHM8TkROQk9PU1RfUkVHRVhfQ0hBUl9UPjo6dG9pKGNvbnN0IE5ETkJPT1NUX1JFR0VYX0NIQVJfVComIGZpcnN0LCBjb25zdCBORE5CT09TVF9SRUdFWF9DSEFSX1QqIGxhc3QsIGludCByYWRpeCljb25zdDsKLXRlbXBsYXRlIE5ETkJPT1NUX1JFR0VYX0RFQ0wKLXN0ZDo6c3RyaW5nIGNwcF9yZWdleF90cmFpdHM8TkROQk9PU1RfUkVHRVhfQ0hBUl9UPjo6Y2F0YWxvZ19uYW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lKTsKLXRlbXBsYXRlIE5ETkJPT1NUX1JFR0VYX0RFQ0wKLXN0ZDo6c3RyaW5nJiBjcHBfcmVnZXhfdHJhaXRzPE5ETkJPT1NUX1JFR0VYX0NIQVJfVD46OmdldF9jYXRhbG9nX25hbWVfaW5zdCgpOwotdGVtcGxhdGUgTkROQk9PU1RfUkVHRVhfREVDTAotc3RkOjpzdHJpbmcgY3BwX3JlZ2V4X3RyYWl0czxORE5CT09TVF9SRUdFWF9DSEFSX1Q+OjpnZXRfY2F0YWxvZ19uYW1lKCk7Ci0jaWZkZWYgTkROQk9PU1RfSEFTX1RIUkVBRFMKLXRlbXBsYXRlIE5ETkJPT1NUX1JFR0VYX0RFQ0wKLXN0YXRpY19tdXRleCYgY3BwX3JlZ2V4X3RyYWl0czxORE5CT09TVF9SRUdFWF9DSEFSX1Q+OjpnZXRfbXV0ZXhfaW5zdCgpOwotI2VuZGlmCi0jZW5kaWYKLQotdGVtcGxhdGUgTkROQk9PU1RfUkVHRVhfREVDTCBiYXNpY19yZWdleDxORE5CT09TVF9SRUdFWF9DSEFSX1QgTkROQk9PU1RfUkVHRVhfVFJBSVRTX1QgPiYgCi0gICBiYXNpY19yZWdleDxORE5CT09TVF9SRUdFWF9DSEFSX1QgTkROQk9PU1RfUkVHRVhfVFJBSVRTX1QgPjo6ZG9fYXNzaWduKAotICAgICAgY29uc3QgTkROQk9PU1RfUkVHRVhfQ0hBUl9UKiBwMSwgCi0gICAgICBjb25zdCBORE5CT09TVF9SRUdFWF9DSEFSX1QqIHAyLCAKLSAgICAgIGZsYWdfdHlwZSBmKTsKLXRlbXBsYXRlIE5ETkJPT1NUX1JFR0VYX0RFQ0wgYmFzaWNfcmVnZXg8TkROQk9PU1RfUkVHRVhfQ0hBUl9UIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19UID46OmxvY2FsZV90eXBlIE5ETkJPT1NUX1JFR0VYX0NBTEwgCi0gICBiYXNpY19yZWdleDxORE5CT09TVF9SRUdFWF9DSEFSX1QgTkROQk9PU1RfUkVHRVhfVFJBSVRTX1QgPjo6aW1idWUobG9jYWxlX3R5cGUgbCk7Ci0KLXRlbXBsYXRlIE5ETkJPT1NUX1JFR0VYX0RFQ0wgdm9pZCBORE5CT09TVF9SRUdFWF9DQUxMIAotICAgbWF0Y2hfcmVzdWx0czxjb25zdCBORE5CT09TVF9SRUdFWF9DSEFSX1QqPjo6bWF5YmVfYXNzaWduKAotICAgICAgY29uc3QgbWF0Y2hfcmVzdWx0czxjb25zdCBORE5CT09TVF9SRUdFWF9DSEFSX1QqPiYgbSk7Ci0KLW5hbWVzcGFjZSByZV9kZXRhaWx7Ci10ZW1wbGF0ZSBORE5CT09TVF9SRUdFWF9ERUNMIHZvaWQgcGVybF9tYXRjaGVyPE5ETkJPT1NUX1JFR0VYX0NIQVJfVCBjb25zdCAqLCBtYXRjaF9yZXN1bHRzPCBjb25zdCBORE5CT09TVF9SRUdFWF9DSEFSX1QqID46OmFsbG9jYXRvcl90eXBlIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19UID46OmNvbnN0cnVjdF9pbml0KAotICAgICAgY29uc3QgYmFzaWNfcmVnZXg8TkROQk9PU1RfUkVHRVhfQ0hBUl9UIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19UID4mIGUsIG1hdGNoX2ZsYWdfdHlwZSBmKTsKLXRlbXBsYXRlIE5ETkJPT1NUX1JFR0VYX0RFQ0wgYm9vbCBwZXJsX21hdGNoZXI8TkROQk9PU1RfUkVHRVhfQ0hBUl9UIGNvbnN0ICosIG1hdGNoX3Jlc3VsdHM8IGNvbnN0IE5ETkJPT1NUX1JFR0VYX0NIQVJfVCogPjo6YWxsb2NhdG9yX3R5cGUgTkROQk9PU1RfUkVHRVhfVFJBSVRTX1QgPjo6bWF0Y2goKTsKLXRlbXBsYXRlIE5ETkJPT1NUX1JFR0VYX0RFQ0wgYm9vbCBwZXJsX21hdGNoZXI8TkROQk9PU1RfUkVHRVhfQ0hBUl9UIGNvbnN0ICosIG1hdGNoX3Jlc3VsdHM8IGNvbnN0IE5ETkJPT1NUX1JFR0VYX0NIQVJfVCogPjo6YWxsb2NhdG9yX3R5cGUgTkROQk9PU1RfUkVHRVhfVFJBSVRTX1QgPjo6ZmluZCgpOwotfSAvLyBuYW1lc3BhY2UKLQotI2lmIChkZWZpbmVkKF9fR0xJQkNQUF9fKSB8fCBkZWZpbmVkKF9fR0xJQkNYWF9fKSkgXAotICAgJiYgIWRlZmluZWQoTkROQk9PU1RfUkVHRVhfSUNVX0lOU1RBTkNFUylcCi0gICAmJiAhZGVmaW5lZChfX1NHSV9TVExfUE9SVClcCi0gICAmJiAhZGVmaW5lZChfU1RMUE9SVF9WRVJTSU9OKQotLy8gc3RkOmJhc2ljX3N0cmluZzw+Ojpjb25zdF9pdGVyYXRvciBpbnN0YW5jZXMgYXMgd2VsbDoKLXRlbXBsYXRlIE5ETkJPT1NUX1JFR0VYX0RFQ0wgdm9pZCBORE5CT09TVF9SRUdFWF9DQUxMIAotICAgbWF0Y2hfcmVzdWx0czxzdGQ6OmJhc2ljX3N0cmluZzxORE5CT09TVF9SRUdFWF9DSEFSX1Q+Ojpjb25zdF9pdGVyYXRvcj46Om1heWJlX2Fzc2lnbigKLSAgICAgIGNvbnN0IG1hdGNoX3Jlc3VsdHM8c3RkOjpiYXNpY19zdHJpbmc8TkROQk9PU1RfUkVHRVhfQ0hBUl9UPjo6Y29uc3RfaXRlcmF0b3I+JiBtKTsKLQotbmFtZXNwYWNlIHJlX2RldGFpbHsKLXRlbXBsYXRlIE5ETkJPT1NUX1JFR0VYX0RFQ0wgdm9pZCBwZXJsX21hdGNoZXI8c3RkOjpiYXNpY19zdHJpbmc8TkROQk9PU1RfUkVHRVhfQ0hBUl9UPjo6Y29uc3RfaXRlcmF0b3IsIG1hdGNoX3Jlc3VsdHM8IHN0ZDo6YmFzaWNfc3RyaW5nPE5ETkJPT1NUX1JFR0VYX0NIQVJfVD46OmNvbnN0X2l0ZXJhdG9yID46OmFsbG9jYXRvcl90eXBlLCBuZG5ib29zdDo6cmVnZXhfdHJhaXRzPE5ETkJPT1NUX1JFR0VYX0NIQVJfVCA+ID46OmNvbnN0cnVjdF9pbml0KAotICAgICAgY29uc3QgYmFzaWNfcmVnZXg8TkROQk9PU1RfUkVHRVhfQ0hBUl9UPiYgZSwgbWF0Y2hfZmxhZ190eXBlIGYpOwotdGVtcGxhdGUgTkROQk9PU1RfUkVHRVhfREVDTCBib29sIHBlcmxfbWF0Y2hlcjxzdGQ6OmJhc2ljX3N0cmluZzxORE5CT09TVF9SRUdFWF9DSEFSX1Q+Ojpjb25zdF9pdGVyYXRvciwgbWF0Y2hfcmVzdWx0czwgc3RkOjpiYXNpY19zdHJpbmc8TkROQk9PU1RfUkVHRVhfQ0hBUl9UPjo6Y29uc3RfaXRlcmF0b3IgPjo6YWxsb2NhdG9yX3R5cGUsIG5kbmJvb3N0OjpyZWdleF90cmFpdHM8TkROQk9PU1RfUkVHRVhfQ0hBUl9UID4gPjo6bWF0Y2goKTsKLXRlbXBsYXRlIE5ETkJPT1NUX1JFR0VYX0RFQ0wgYm9vbCBwZXJsX21hdGNoZXI8c3RkOjpiYXNpY19zdHJpbmc8TkROQk9PU1RfUkVHRVhfQ0hBUl9UPjo6Y29uc3RfaXRlcmF0b3IsIG1hdGNoX3Jlc3VsdHM8IHN0ZDo6YmFzaWNfc3RyaW5nPE5ETkJPT1NUX1JFR0VYX0NIQVJfVD46OmNvbnN0X2l0ZXJhdG9yID46OmFsbG9jYXRvcl90eXBlLCBuZG5ib29zdDo6cmVnZXhfdHJhaXRzPE5ETkJPT1NUX1JFR0VYX0NIQVJfVCA+ID46OmZpbmQoKTsKLX0gLy8gbmFtZXNwYWNlCi0jZW5kaWYKLQotIyAgaWZkZWYgdGVtcGxhdGUKLSMgICAgIHVuZGVmIHRlbXBsYXRlCi0jICBlbmRpZgotCi0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUkVHRVhfTk9fRVhURVJOQUxfVEVNUExBVEVTCi0KLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9pdGVyYXRvcl9jYXRlZ29yeS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2l0ZXJhdG9yX2NhdGVnb3J5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzkwNDE3Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2l0ZXJhdG9yX2NhdGVnb3J5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgcmVnZXhfbWF0Y2guaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBJdGVyYXRvciB0cmFpdHMgZm9yIHNlbGVjdGluZyBhbiBpdGVyYXRvciB0eXBlIGFzCi0gICogICAgICAgICAgICAgICAgYW4gaW50ZWdyYWwgY29uc3RhbnQgZXhwcmVzc2lvbi4KLSAgKi8KLQotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0lURVJBVE9SX0NBVEVHT1JZX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9JVEVSQVRPUl9DQVRFR09SWV9IUFAKLQotI2luY2x1ZGUgPGl0ZXJhdG9yPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2ludGVyLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotbmFtZXNwYWNlIGRldGFpbHsKLQotdGVtcGxhdGUgPGNsYXNzIEk+Ci1zdHJ1Y3QgaXNfcmFuZG9tX2ltcAotewotI2lmbmRlZiBORE5CT09TVF9OT19TVERfSVRFUkFUT1JfVFJBSVRTCi1wcml2YXRlOgotICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxJPjo6aXRlcmF0b3JfY2F0ZWdvcnkgY2F0OwotcHVibGljOgotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKDo6bmRuYm9vc3Q6OmlzX2NvbnZlcnRpYmxlPGNhdCosIHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcqPjo6dmFsdWUpKTsKLSNlbHNlCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci0jZW5kaWYKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBJPgotc3RydWN0IGlzX3JhbmRvbV9wb2ludGVyX2ltcAotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZSA8Ym9vbCBpc19wb2ludGVyX3R5cGU+Ci1zdHJ1Y3QgaXNfcmFuZG9tX2ltcF9zZWxlY3RvcgotewotICAgdGVtcGxhdGUgPGNsYXNzIEk+Ci0gICBzdHJ1Y3QgcmViaW5kCi0gICB7Ci0gICAgICB0eXBlZGVmIGlzX3JhbmRvbV9pbXA8ST4gdHlwZTsKLSAgIH07Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGlzX3JhbmRvbV9pbXBfc2VsZWN0b3I8dHJ1ZT4KLXsKLSAgIHRlbXBsYXRlIDxjbGFzcyBJPgotICAgc3RydWN0IHJlYmluZAotICAgewotICAgICAgdHlwZWRlZiBpc19yYW5kb21fcG9pbnRlcl9pbXA8ST4gdHlwZTsKLSAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBJPgotc3RydWN0IGlzX3JhbmRvbV9hY2Nlc3NfaXRlcmF0b3IKLXsKLXByaXZhdGU6Ci0gICB0eXBlZGVmIGRldGFpbDo6aXNfcmFuZG9tX2ltcF9zZWxlY3RvcjwgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjxJPjo6dmFsdWU+IHNlbGVjdG9yOwotICAgdHlwZWRlZiB0eXBlbmFtZSBzZWxlY3Rvcjo6dGVtcGxhdGUgcmViaW5kPEk+IGJvdW5kX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGJvdW5kX3R5cGU6OnR5cGUgYW5zd2VyOwotcHVibGljOgotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gYW5zd2VyOjp2YWx1ZSk7Ci19OwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0lOQ0xBU1NfTUVNQkVSX0lOSVRJQUxJWkFUSU9OCi10ZW1wbGF0ZSA8Y2xhc3MgST4KLWNvbnN0IGJvb2wgaXNfcmFuZG9tX2FjY2Vzc19pdGVyYXRvcjxJPjo6dmFsdWU7Ci0jZW5kaWYKLQotfQotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9pdGVyYXRvcl90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9pdGVyYXRvcl90cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Nzk1YjM1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvaXRlcmF0b3JfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzNSArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgaXRlcmF0b3JfdHJhaXRzLmNwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogRGVjbGFyZXMgaXRlcmF0b3IgdHJhaXRzIHdvcmthcm91bmRzLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X0lURVJBVE9SX1RSQUlUU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfVjRfSVRFUkFUT1JfVFJBSVRTX0hQUAotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLW5hbWVzcGFjZSByZV9kZXRhaWx7Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9JVEVSQVRPUl9UUkFJVFMpIHx8IGRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgcmVnZXhfaXRlcmF0b3JfdHJhaXRzIAotewotICB0eXBlZGVmIHR5cGVuYW1lIFQ6Oml0ZXJhdG9yX2NhdGVnb3J5IGl0ZXJhdG9yX2NhdGVnb3J5OwotICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnZhbHVlX3R5cGUgICAgICAgIHZhbHVlX3R5cGU7Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fU1REX0lURVJBVE9SKQotICB0eXBlZGVmIHR5cGVuYW1lIFQ6OmRpZmZlcmVuY2VfdHlwZSAgIGRpZmZlcmVuY2VfdHlwZTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBUOjpwb2ludGVyICAgICAgICAgICBwb2ludGVyOwotICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnJlZmVyZW5jZSAgICAgICAgIHJlZmVyZW5jZTsKLSNlbHNlCi0gIHR5cGVkZWYgc3RkOjpwdHJkaWZmX3QgICAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwotICB0eXBlZGVmIHZhbHVlX3R5cGUqICAgICAgICAgICAgICAgICAgIHBvaW50ZXI7Ci0gIHR5cGVkZWYgdmFsdWVfdHlwZSYgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlOwotI2VuZGlmCi19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBwb2ludGVyX2l0ZXJhdG9yX3RyYWl0cwotewotICAgdHlwZWRlZiBzdGQ6OnB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7Ci0gICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLSAgIHR5cGVkZWYgVCogcG9pbnRlcjsKLSAgIHR5cGVkZWYgVCYgcmVmZXJlbmNlOwotICAgdHlwZWRlZiBzdGQ6OnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OwotfTsKLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGNvbnN0X3BvaW50ZXJfaXRlcmF0b3JfdHJhaXRzCi17Ci0gICB0eXBlZGVmIHN0ZDo6cHRyZGlmZl90IGRpZmZlcmVuY2VfdHlwZTsKLSAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotICAgdHlwZWRlZiBjb25zdCBUKiBwb2ludGVyOwotICAgdHlwZWRlZiBjb25zdCBUJiByZWZlcmVuY2U7Ci0gICB0eXBlZGVmIHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmVnZXhfaXRlcmF0b3JfdHJhaXRzPGNoYXIqPiA6IHBvaW50ZXJfaXRlcmF0b3JfdHJhaXRzPGNoYXI+e307Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmVnZXhfaXRlcmF0b3JfdHJhaXRzPGNvbnN0IGNoYXIqPiA6IGNvbnN0X3BvaW50ZXJfaXRlcmF0b3JfdHJhaXRzPGNoYXI+e307Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmVnZXhfaXRlcmF0b3JfdHJhaXRzPHdjaGFyX3QqPiA6IHBvaW50ZXJfaXRlcmF0b3JfdHJhaXRzPHdjaGFyX3Q+e307Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmVnZXhfaXRlcmF0b3JfdHJhaXRzPGNvbnN0IHdjaGFyX3QqPiA6IGNvbnN0X3BvaW50ZXJfaXRlcmF0b3JfdHJhaXRzPHdjaGFyX3Q+e307Ci0vLwotLy8gdGhlIGZvbGx3b2luZyBhcmUgbmVlZGVkIGZvciBJQ1Ugc3VwcG9ydDoKLS8vCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmVnZXhfaXRlcmF0b3JfdHJhaXRzPHVuc2lnbmVkIGNoYXIqPiA6IHBvaW50ZXJfaXRlcmF0b3JfdHJhaXRzPGNoYXI+e307Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmVnZXhfaXRlcmF0b3JfdHJhaXRzPGNvbnN0IHVuc2lnbmVkIGNoYXIqPiA6IGNvbnN0X3BvaW50ZXJfaXRlcmF0b3JfdHJhaXRzPGNoYXI+e307Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmVnZXhfaXRlcmF0b3JfdHJhaXRzPGludCo+IDogcG9pbnRlcl9pdGVyYXRvcl90cmFpdHM8aW50Pnt9OwotdGVtcGxhdGU8Pgotc3RydWN0IHJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxjb25zdCBpbnQqPiA6IGNvbnN0X3BvaW50ZXJfaXRlcmF0b3JfdHJhaXRzPGludD57fTsKLQotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX0hBU19PVEhFUl9XQ0hBUl9UCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmVnZXhfaXRlcmF0b3JfdHJhaXRzPHVuc2lnbmVkIHNob3J0Kj4gOiBwb2ludGVyX2l0ZXJhdG9yX3RyYWl0czx1bnNpZ25lZCBzaG9ydD57fTsKLXRlbXBsYXRlPD4KLXN0cnVjdCByZWdleF9pdGVyYXRvcl90cmFpdHM8Y29uc3QgdW5zaWduZWQgc2hvcnQqPiA6IGNvbnN0X3BvaW50ZXJfaXRlcmF0b3JfdHJhaXRzPHVuc2lnbmVkIHNob3J0Pnt9OwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fU0dJX1NUTF9QT1JUKSAmJiBkZWZpbmVkKF9fU1RMX0RFQlVHKQotdGVtcGxhdGU8Pgotc3RydWN0IHJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxzdGQ6OnN0cmluZzo6aXRlcmF0b3I+IDogcG9pbnRlcl9pdGVyYXRvcl90cmFpdHM8Y2hhcj57fTsKLXRlbXBsYXRlPD4KLXN0cnVjdCByZWdleF9pdGVyYXRvcl90cmFpdHM8c3RkOjpzdHJpbmc6OmNvbnN0X2l0ZXJhdG9yPiA6IGNvbnN0X3BvaW50ZXJfaXRlcmF0b3JfdHJhaXRzPGNoYXI+e307Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9XU1RSSU5HCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmVnZXhfaXRlcmF0b3JfdHJhaXRzPHN0ZDo6d3N0cmluZzo6aXRlcmF0b3I+IDogcG9pbnRlcl9pdGVyYXRvcl90cmFpdHM8d2NoYXJfdD57fTsKLXRlbXBsYXRlPD4KLXN0cnVjdCByZWdleF9pdGVyYXRvcl90cmFpdHM8c3RkOjp3c3RyaW5nOjpjb25zdF9pdGVyYXRvcj4gOiBjb25zdF9wb2ludGVyX2l0ZXJhdG9yX3RyYWl0czx3Y2hhcl90Pnt9OwotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1dTVFJJTkcKLSNlbmRpZiAvLyBzdHBvcnQKLQotI2Vsc2UKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgcmVnZXhfaXRlcmF0b3JfdHJhaXRzIDogcHVibGljIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPFQ+IHt9OwotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgcmVfZGV0YWlsCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L21hdGNoX2ZsYWdzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvbWF0Y2hfZmxhZ3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMzUyZDBmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvbWF0Y2hfZmxhZ3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTM4ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0gCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgbWF0Y2hfZmxhZ3MuaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBEZWNsYXJlcyBtYXRjaF9mbGFncyB0eXBlLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X01BVENIX0ZMQUdTCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1Y0X01BVENIX0ZMQUdTCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotIyAgaW5jbHVkZSA8bmRuYm9vc3QvY3N0ZGludC5ocHA+Ci0jZW5kaWYKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0gICBuYW1lc3BhY2UgcmVnZXhfY29uc3RhbnRzewotI2VuZGlmCi0KLXR5cGVkZWYgZW51bSBfbWF0Y2hfZmxhZ3MKLXsKLSAgIG1hdGNoX2RlZmF1bHQgPSAwLAotICAgbWF0Y2hfbm90X2JvbCA9IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmaXJzdCBpcyBub3Qgc3RhcnQgb2YgbGluZSAqLwotICAgbWF0Y2hfbm90X2VvbCA9IG1hdGNoX25vdF9ib2wgPDwgMSwgICAgICAgICAgICAgICAvKiBsYXN0IGlzIG5vdCBlbmQgb2YgbGluZSAqLwotICAgbWF0Y2hfbm90X2JvYiA9IG1hdGNoX25vdF9lb2wgPDwgMSwgICAgICAgICAgICAgICAvKiBmaXJzdCBpcyBub3Qgc3RhcnQgb2YgYnVmZmVyICovCi0gICBtYXRjaF9ub3RfZW9iID0gbWF0Y2hfbm90X2JvYiA8PCAxLCAgICAgICAgICAgICAgIC8qIGxhc3QgaXMgbm90IGVuZCBvZiBidWZmZXIgKi8KLSAgIG1hdGNoX25vdF9ib3cgPSBtYXRjaF9ub3RfZW9iIDw8IDEsICAgICAgICAgICAgICAgLyogZmlyc3QgaXMgbm90IHN0YXJ0IG9mIHdvcmQgKi8KLSAgIG1hdGNoX25vdF9lb3cgPSBtYXRjaF9ub3RfYm93IDw8IDEsICAgICAgICAgICAgICAgLyogbGFzdCBpcyBub3QgZW5kIG9mIHdvcmQgKi8KLSAgIG1hdGNoX25vdF9kb3RfbmV3bGluZSA9IG1hdGNoX25vdF9lb3cgPDwgMSwgICAgICAgLyogXG4gaXMgbm90IG1hdGNoZWQgYnkgJy4nICovCi0gICBtYXRjaF9ub3RfZG90X251bGwgPSBtYXRjaF9ub3RfZG90X25ld2xpbmUgPDwgMSwgIC8qICdcMCcgaXMgbm90IG1hdGNoZWQgYnkgJy4nICovCi0gICBtYXRjaF9wcmV2X2F2YWlsID0gbWF0Y2hfbm90X2RvdF9udWxsIDw8IDEsICAgICAgIC8qICotLWZpcnN0IGlzIGEgdmFsaWQgZXhwcmVzc2lvbiAqLwotICAgbWF0Y2hfaW5pdCA9IG1hdGNoX3ByZXZfYXZhaWwgPDwgMSwgICAgICAgICAgICAgICAvKiBpbnRlcm5hbCB1c2UgKi8KLSAgIG1hdGNoX2FueSA9IG1hdGNoX2luaXQgPDwgMSwgICAgICAgICAgICAgICAgICAgICAgLyogZG9uJ3QgY2FyZSB3aGF0IHdlIG1hdGNoICovCi0gICBtYXRjaF9ub3RfbnVsbCA9IG1hdGNoX2FueSA8PCAxLCAgICAgICAgICAgICAgICAgIC8qIHN0cmluZyBjYW4ndCBiZSBudWxsICovCi0gICBtYXRjaF9jb250aW51b3VzID0gbWF0Y2hfbm90X251bGwgPDwgMSwgICAgICAgICAgIC8qIGVhY2ggZ3JlcCBtYXRjaCBtdXN0IGNvbnRpbnVlIGZyb20gKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdW5pbnRlcnVwdGVkIGZyb20gdGhlIHByZXZpb3VzIG9uZSAqLwotICAgbWF0Y2hfcGFydGlhbCA9IG1hdGNoX2NvbnRpbnVvdXMgPDwgMSwgICAgICAgICAgICAvKiBmaW5kIHBhcnRpYWwgbWF0Y2hlcyAqLwotICAgCi0gICBtYXRjaF9zdG9wID0gbWF0Y2hfcGFydGlhbCA8PCAxLCAgICAgICAgICAgICAgICAgIC8qIHN0b3AgYWZ0ZXIgZmlyc3QgbWF0Y2ggKGdyZXApIFYzIG9ubHkgKi8KLSAgIG1hdGNoX25vdF9pbml0aWFsX251bGwgPSBtYXRjaF9zdG9wLCAgICAgICAgICAgICAgLyogZG9uJ3QgbWF0Y2ggaW5pdGlhbCBudWxsLCBWNCBvbmx5ICovCi0gICBtYXRjaF9hbGwgPSBtYXRjaF9zdG9wIDw8IDEsICAgICAgICAgICAgICAgICAgICAgIC8qIG11c3QgZmluZCB0aGUgd2hvbGUgb2YgaW5wdXQgZXZlbiBpZiBtYXRjaF9hbnkgaXMgc2V0ICovCi0gICBtYXRjaF9wZXJsID0gbWF0Y2hfYWxsIDw8IDEsICAgICAgICAgICAgICAgICAgICAgIC8qIFVzZSBwZXJsIG1hdGNoaW5nIHJ1bGVzICovCi0gICBtYXRjaF9wb3NpeCA9IG1hdGNoX3BlcmwgPDwgMSwgICAgICAgICAgICAgICAgICAgIC8qIFVzZSBQT1NJWCBtYXRjaGluZyBydWxlcyAqLwotICAgbWF0Y2hfbm9zdWJzID0gbWF0Y2hfcG9zaXggPDwgMSwgICAgICAgICAgICAgICAgICAvKiBkb24ndCB0cmFwIG1hcmtlZCBzdWJzICovCi0gICBtYXRjaF9leHRyYSA9IG1hdGNoX25vc3VicyA8PCAxLCAgICAgICAgICAgICAgICAgIC8qIGluY2x1ZGUgZnVsbCBjYXB0dXJlIGluZm9ybWF0aW9uIGZvciByZXBlYXRlZCBjYXB0dXJlcyAqLwotICAgbWF0Y2hfc2luZ2xlX2xpbmUgPSBtYXRjaF9leHRyYSA8PCAxLCAgICAgICAgICAgICAvKiB0cmVhdCB0ZXh0IGFzIHNpbmdsZSBsaW5lIGFuZCBpZ25vciBhbnkgXG4ncyB3aGVuIG1hdGNoaW5nIF4gYW5kICQuICovCi0gICBtYXRjaF91bnVzZWQxID0gbWF0Y2hfc2luZ2xlX2xpbmUgPDwgMSwgICAgICAgICAgIC8qIHVudXNlZCAqLwotICAgbWF0Y2hfdW51c2VkMiA9IG1hdGNoX3VudXNlZDEgPDwgMSwgICAgICAgICAgICAgICAvKiB1bnVzZWQgKi8KLSAgIG1hdGNoX3VudXNlZDMgPSBtYXRjaF91bnVzZWQyIDw8IDEsICAgICAgICAgICAgICAgLyogdW51c2VkICovCi0gICBtYXRjaF9tYXggPSBtYXRjaF91bnVzZWQzLAotCi0gICBmb3JtYXRfcGVybCA9IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHBlcmwgc3R5bGUgcmVwbGFjZW1lbnQgKi8KLSAgIGZvcm1hdF9kZWZhdWx0ID0gMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZGl0dG8uICovCi0gICBmb3JtYXRfc2VkID0gbWF0Y2hfbWF4IDw8IDEsICAgICAgICAgICAgICAgICAgICAgIC8qIHNlZCBzdHlsZSByZXBsYWNlbWVudC4gKi8KLSAgIGZvcm1hdF9hbGwgPSBmb3JtYXRfc2VkIDw8IDEsICAgICAgICAgICAgICAgICAgICAgLyogZW5hYmxlIGFsbCBleHRlbnRpb25zIHRvIHN5dGF4LiAqLwotICAgZm9ybWF0X25vX2NvcHkgPSBmb3JtYXRfYWxsIDw8IDEsICAgICAgICAgICAgICAgICAvKiBkb24ndCBjb3B5IG5vbi1tYXRjaGluZyBzZWdtZW50cy4gKi8KLSAgIGZvcm1hdF9maXJzdF9vbmx5ID0gZm9ybWF0X25vX2NvcHkgPDwgMSwgICAgICAgICAgLyogT25seSByZXBsYWNlIGZpcnN0IG9jY3VyYW5jZS4gKi8KLSAgIGZvcm1hdF9pc19pZiA9IGZvcm1hdF9maXJzdF9vbmx5IDw8IDEsICAgICAgICAgICAgLyogaW50ZXJuYWwgdXNlIG9ubHkuICovCi0gICBmb3JtYXRfbGl0ZXJhbCA9IGZvcm1hdF9pc19pZiA8PCAxICAgICAgICAgICAgICAgIC8qIHRyZWF0IHN0cmluZyBhcyBhIGxpdGVyYWwgKi8KLQotfSBtYXRjaF9mbGFnczsKLQotI2lmIChkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPCAxMzAwKSkgfHwgZGVmaW5lZChfX0JPUkxBTkRDX18pCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgbWF0Y2hfZmxhZ190eXBlOwotI2Vsc2UKLXR5cGVkZWYgbWF0Y2hfZmxhZ3MgbWF0Y2hfZmxhZ190eXBlOwotCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotaW5saW5lIG1hdGNoX2ZsYWdzIG9wZXJhdG9yJihtYXRjaF9mbGFncyBtMSwgbWF0Y2hfZmxhZ3MgbTIpCi17IHJldHVybiBzdGF0aWNfY2FzdDxtYXRjaF9mbGFncz4oc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmludDMyX3Q+KG0xKSAmIHN0YXRpY19jYXN0PG5kbmJvb3N0OjppbnQzMl90PihtMikpOyB9Ci1pbmxpbmUgbWF0Y2hfZmxhZ3Mgb3BlcmF0b3J8KG1hdGNoX2ZsYWdzIG0xLCBtYXRjaF9mbGFncyBtMikKLXsgcmV0dXJuIHN0YXRpY19jYXN0PG1hdGNoX2ZsYWdzPihzdGF0aWNfY2FzdDxuZG5ib29zdDo6aW50MzJfdD4obTEpIHwgc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmludDMyX3Q+KG0yKSk7IH0KLWlubGluZSBtYXRjaF9mbGFncyBvcGVyYXRvcl4obWF0Y2hfZmxhZ3MgbTEsIG1hdGNoX2ZsYWdzIG0yKQoteyByZXR1cm4gc3RhdGljX2Nhc3Q8bWF0Y2hfZmxhZ3M+KHN0YXRpY19jYXN0PG5kbmJvb3N0OjppbnQzMl90PihtMSkgXiBzdGF0aWNfY2FzdDxuZG5ib29zdDo6aW50MzJfdD4obTIpKTsgfQotaW5saW5lIG1hdGNoX2ZsYWdzIG9wZXJhdG9yfihtYXRjaF9mbGFncyBtMSkKLXsgcmV0dXJuIHN0YXRpY19jYXN0PG1hdGNoX2ZsYWdzPih+c3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmludDMyX3Q+KG0xKSk7IH0KLWlubGluZSBtYXRjaF9mbGFncyYgb3BlcmF0b3ImPShtYXRjaF9mbGFncyYgbTEsIG1hdGNoX2ZsYWdzIG0yKQoteyBtMSA9IG0xJm0yOyByZXR1cm4gbTE7IH0KLWlubGluZSBtYXRjaF9mbGFncyYgb3BlcmF0b3J8PShtYXRjaF9mbGFncyYgbTEsIG1hdGNoX2ZsYWdzIG0yKQoteyBtMSA9IG0xfG0yOyByZXR1cm4gbTE7IH0KLWlubGluZSBtYXRjaF9mbGFncyYgb3BlcmF0b3JePShtYXRjaF9mbGFncyYgbTEsIG1hdGNoX2ZsYWdzIG0yKQoteyBtMSA9IG0xXm0yOyByZXR1cm4gbTE7IH0KLSNlbmRpZgotI2VuZGlmCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfSAvKiBuYW1lc3BhY2UgcmVnZXhfY29uc3RhbnRzICovCi0vKgotICogaW1wb3J0IG5hbWVzIGludG8gYm9vc3QgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmxpdHk6Ci0gKi8KLXVzaW5nIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlOwotdXNpbmcgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0OwotdXNpbmcgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9ub3RfYm9sOwotdXNpbmcgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9ub3RfZW9sOwotdXNpbmcgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9ub3RfYm9iOwotdXNpbmcgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9ub3RfZW9iOwotdXNpbmcgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9ub3RfYm93OwotdXNpbmcgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9ub3RfZW93OwotdXNpbmcgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9ub3RfZG90X25ld2xpbmU7Ci11c2luZyByZWdleF9jb25zdGFudHM6Om1hdGNoX25vdF9kb3RfbnVsbDsKLXVzaW5nIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfcHJldl9hdmFpbDsKLS8qIHVzaW5nIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfaW5pdDsgKi8KLXVzaW5nIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55OwotdXNpbmcgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9ub3RfbnVsbDsKLXVzaW5nIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfY29udGludW91czsKLXVzaW5nIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfcGFydGlhbDsKLS8qdXNpbmcgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9zdG9wOyAqLwotdXNpbmcgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbGw7Ci11c2luZyByZWdleF9jb25zdGFudHM6Om1hdGNoX3Blcmw7Ci11c2luZyByZWdleF9jb25zdGFudHM6Om1hdGNoX3Bvc2l4OwotdXNpbmcgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9ub3N1YnM7Ci11c2luZyByZWdleF9jb25zdGFudHM6Om1hdGNoX2V4dHJhOwotdXNpbmcgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9zaW5nbGVfbGluZTsKLS8qdXNpbmcgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9tYXg7ICovCi11c2luZyByZWdleF9jb25zdGFudHM6OmZvcm1hdF9hbGw7Ci11c2luZyByZWdleF9jb25zdGFudHM6OmZvcm1hdF9zZWQ7Ci11c2luZyByZWdleF9jb25zdGFudHM6OmZvcm1hdF9wZXJsOwotdXNpbmcgcmVnZXhfY29uc3RhbnRzOjpmb3JtYXRfZGVmYXVsdDsKLXVzaW5nIHJlZ2V4X2NvbnN0YW50czo6Zm9ybWF0X25vX2NvcHk7Ci11c2luZyByZWdleF9jb25zdGFudHM6OmZvcm1hdF9maXJzdF9vbmx5OwotLyp1c2luZyByZWdleF9jb25zdGFudHM6OmZvcm1hdF9pc19pZjsqLwotCi19IC8qIG5hbWVzcGFjZSBuZG5ib29zdCAqLwotI2VuZGlmIC8qIF9fY3BsdXNwbHVzICovCi0jZW5kaWYgLyogaW5jbHVkZSBndWFyZCAqLwotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L21hdGNoX3Jlc3VsdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9tYXRjaF9yZXN1bHRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGJiOTgxZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L21hdGNoX3Jlc3VsdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzAyICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDkKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICBtYXRjaF9yZXN1bHRzLmNwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogRGVjbGFyZXMgdGVtcGxhdGUgY2xhc3MgbWF0Y2hfcmVzdWx0cy4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9NQVRDSF9SRVNVTFRTX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9WNF9NQVRDSF9SRVNVTFRTX0hQUAotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDI1MSA0MjMxKQotIyAgaWYgTkROQk9PU1RfTVNWQyA8IDE2MDAKLSMgICAgIHByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0NjYwKQotIyAgZW5kaWYKLSNlbmRpZgotCi1uYW1lc3BhY2UgcmVfZGV0YWlsewotCi1jbGFzcyBuYW1lZF9zdWJleHByZXNzaW9uczsKLQotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3I+Ci1jbGFzcyBtYXRjaF9yZXN1bHRzCi17IAotcHJpdmF0ZToKLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0FMTE9DQVRPUgotICAgdHlwZWRlZiAgICAgICAgICBzdGQ6OnZlY3RvcjxzdWJfbWF0Y2g8QmlkaUl0ZXJhdG9yPiwgQWxsb2NhdG9yPiB2ZWN0b3JfdHlwZTsKLSNlbHNlCi0gICB0eXBlZGVmICAgICAgICAgIHN0ZDo6dmVjdG9yPHN1Yl9tYXRjaDxCaWRpSXRlcmF0b3I+ID4gICAgICAgICAgIHZlY3Rvcl90eXBlOwotI2VuZGlmCi1wdWJsaWM6IAotICAgdHlwZWRlZiAgICAgICAgICBzdWJfbWF0Y2g8QmlkaUl0ZXJhdG9yPiAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV90eXBlOwotI2lmICAhZGVmaW5lZChORE5CT09TVF9OT19TVERfQUxMT0NBVE9SKSAmJiAhKGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgZGVmaW5lZChfU1RMUE9SVF9WRVJTSU9OKSkKLSAgIHR5cGVkZWYgdHlwZW5hbWUgQWxsb2NhdG9yOjpjb25zdF9yZWZlcmVuY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF9yZWZlcmVuY2U7Ci0jZWxzZQotICAgdHlwZWRlZiAgICAgICAgICBjb25zdCB2YWx1ZV90eXBlJiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X3JlZmVyZW5jZTsKLSNlbmRpZgotICAgdHlwZWRlZiAgICAgICAgICBjb25zdF9yZWZlcmVuY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yX3R5cGU6OmNvbnN0X2l0ZXJhdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF9pdGVyYXRvcjsKLSAgIHR5cGVkZWYgICAgICAgICAgY29uc3RfaXRlcmF0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVyYXRvcjsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaWRpSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBBbGxvY2F0b3I6OnNpemVfdHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdHlwZTsKLSAgIHR5cGVkZWYgICAgICAgICAgQWxsb2NhdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvY2F0b3JfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaWRpSXRlcmF0b3I+Ojp2YWx1ZV90eXBlICAgICAgICAgICAgICAgY2hhcl90eXBlOwotICAgdHlwZWRlZiAgICAgICAgICBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyX3R5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ190eXBlOwotICAgdHlwZWRlZiAgICAgICAgICByZV9kZXRhaWw6Om5hbWVkX3N1YmV4cHJlc3Npb25zICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVkX3N1Yl90eXBlOwotCi0gICAvLyBjb25zdHJ1Y3QvY29weS9kZXN0cm95OgotICAgZXhwbGljaXQgbWF0Y2hfcmVzdWx0cyhjb25zdCBBbGxvY2F0b3ImIGEgPSBBbGxvY2F0b3IoKSkKLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0FMTE9DQVRPUgotICAgICAgOiBtX3N1YnMoYSksIG1fYmFzZSgpLCBtX2xhc3RfY2xvc2VkX3BhcmVuKDApLCBtX2lzX3Npbmd1bGFyKHRydWUpIHt9Ci0jZWxzZQotICAgICAgOiBtX3N1YnMoKSwgbV9iYXNlKCksIG1fbGFzdF9jbG9zZWRfcGFyZW4oMCksIG1faXNfc2luZ3VsYXIodHJ1ZSkgeyAodm9pZClhOyB9Ci0jZW5kaWYKLSAgIG1hdGNoX3Jlc3VsdHMoY29uc3QgbWF0Y2hfcmVzdWx0cyYgbSkKLSAgICAgIDogbV9zdWJzKG0ubV9zdWJzKSwgbV9uYW1lZF9zdWJzKG0ubV9uYW1lZF9zdWJzKSwgbV9sYXN0X2Nsb3NlZF9wYXJlbihtLm1fbGFzdF9jbG9zZWRfcGFyZW4pLCBtX2lzX3Npbmd1bGFyKG0ubV9pc19zaW5ndWxhcikgCi0gICB7Ci0gICAgICBpZighbV9pc19zaW5ndWxhcikKLSAgICAgIHsKLSAgICAgICAgIG1fYmFzZSA9IG0ubV9iYXNlOwotICAgICAgICAgbV9udWxsID0gbS5tX251bGw7Ci0gICAgICB9Ci0gICB9Ci0gICBtYXRjaF9yZXN1bHRzJiBvcGVyYXRvcj0oY29uc3QgbWF0Y2hfcmVzdWx0cyYgbSkKLSAgIHsKLSAgICAgIG1fc3VicyA9IG0ubV9zdWJzOwotICAgICAgbV9uYW1lZF9zdWJzID0gbS5tX25hbWVkX3N1YnM7Ci0gICAgICBtX2xhc3RfY2xvc2VkX3BhcmVuID0gbS5tX2xhc3RfY2xvc2VkX3BhcmVuOwotICAgICAgbV9pc19zaW5ndWxhciA9IG0ubV9pc19zaW5ndWxhcjsKLSAgICAgIGlmKCFtX2lzX3Npbmd1bGFyKQotICAgICAgewotICAgICAgICAgbV9iYXNlID0gbS5tX2Jhc2U7Ci0gICAgICAgICBtX251bGwgPSBtLm1fbnVsbDsKLSAgICAgIH0KLSAgICAgIHJldHVybiAqdGhpczsKLSAgIH0KLSAgIH5tYXRjaF9yZXN1bHRzKCl7fQotCi0gICAvLyBzaXplOgotICAgc2l6ZV90eXBlIHNpemUoKSBjb25zdAotICAgeyByZXR1cm4gZW1wdHkoKSA/IDAgOiBtX3N1YnMuc2l6ZSgpIC0gMjsgfQotICAgc2l6ZV90eXBlIG1heF9zaXplKCkgY29uc3QKLSAgIHsgcmV0dXJuIG1fc3Vicy5tYXhfc2l6ZSgpOyB9Ci0gICBib29sIGVtcHR5KCkgY29uc3QKLSAgIHsgcmV0dXJuIG1fc3Vicy5zaXplKCkgPCAyOyB9Ci0gICAvLyBlbGVtZW50IGFjY2VzczoKLSAgIGRpZmZlcmVuY2VfdHlwZSBsZW5ndGgoaW50IHN1YiA9IDApIGNvbnN0Ci0gICB7Ci0gICAgICBpZihtX2lzX3Npbmd1bGFyKQotICAgICAgICAgcmFpc2VfbG9naWNfZXJyb3IoKTsKLSAgICAgIHN1YiArPSAyOwotICAgICAgaWYoKHN1YiA8IChpbnQpbV9zdWJzLnNpemUoKSkgJiYgKHN1YiA+IDApKQotICAgICAgICAgcmV0dXJuIG1fc3Vic1tzdWJdLmxlbmd0aCgpOwotICAgICAgcmV0dXJuIDA7Ci0gICB9Ci0gICBkaWZmZXJlbmNlX3R5cGUgbGVuZ3RoKGNvbnN0IGNoYXJfdHlwZSogc3ViKSBjb25zdAotICAgewotICAgICAgaWYobV9pc19zaW5ndWxhcikKLSAgICAgICAgIHJhaXNlX2xvZ2ljX2Vycm9yKCk7Ci0gICAgICBjb25zdCBjaGFyX3R5cGUqIHN1Yl9lbmQgPSBzdWI7Ci0gICAgICB3aGlsZSgqc3ViX2VuZCkgKytzdWJfZW5kOwotICAgICAgcmV0dXJuIGxlbmd0aChuYW1lZF9zdWJleHByZXNzaW9uX2luZGV4KHN1Yiwgc3ViX2VuZCkpOwotICAgfQotICAgdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotICAgZGlmZmVyZW5jZV90eXBlIGxlbmd0aChjb25zdCBjaGFyVCogc3ViKSBjb25zdAotICAgewotICAgICAgaWYobV9pc19zaW5ndWxhcikKLSAgICAgICAgIHJhaXNlX2xvZ2ljX2Vycm9yKCk7Ci0gICAgICBjb25zdCBjaGFyVCogc3ViX2VuZCA9IHN1YjsKLSAgICAgIHdoaWxlKCpzdWJfZW5kKSArK3N1Yl9lbmQ7Ci0gICAgICByZXR1cm4gbGVuZ3RoKG5hbWVkX3N1YmV4cHJlc3Npb25faW5kZXgoc3ViLCBzdWJfZW5kKSk7Ci0gICB9Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIFRyYWl0cywgY2xhc3MgQT4KLSAgIGRpZmZlcmVuY2VfdHlwZSBsZW5ndGgoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFRyYWl0cywgQT4mIHN1YikgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBsZW5ndGgoc3ViLmNfc3RyKCkpOwotICAgfQotICAgZGlmZmVyZW5jZV90eXBlIHBvc2l0aW9uKHNpemVfdHlwZSBzdWIgPSAwKSBjb25zdAotICAgewotICAgICAgaWYobV9pc19zaW5ndWxhcikKLSAgICAgICAgIHJhaXNlX2xvZ2ljX2Vycm9yKCk7Ci0gICAgICBzdWIgKz0gMjsKLSAgICAgIGlmKHN1YiA8IG1fc3Vicy5zaXplKCkpCi0gICAgICB7Ci0gICAgICAgICBjb25zdCBzdWJfbWF0Y2g8QmlkaUl0ZXJhdG9yPiYgcyA9IG1fc3Vic1tzdWJdOwotICAgICAgICAgaWYocy5tYXRjaGVkIHx8IChzdWIgPT0gMikpCi0gICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZSgoQmlkaUl0ZXJhdG9yKShtX2Jhc2UpLCAoQmlkaUl0ZXJhdG9yKShzLmZpcnN0KSk7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICByZXR1cm4gfnN0YXRpY19jYXN0PGRpZmZlcmVuY2VfdHlwZT4oMCk7Ci0gICB9Ci0gICBkaWZmZXJlbmNlX3R5cGUgcG9zaXRpb24oY29uc3QgY2hhcl90eXBlKiBzdWIpIGNvbnN0Ci0gICB7Ci0gICAgICBjb25zdCBjaGFyX3R5cGUqIHN1Yl9lbmQgPSBzdWI7Ci0gICAgICB3aGlsZSgqc3ViX2VuZCkgKytzdWJfZW5kOwotICAgICAgcmV0dXJuIHBvc2l0aW9uKG5hbWVkX3N1YmV4cHJlc3Npb25faW5kZXgoc3ViLCBzdWJfZW5kKSk7Ci0gICB9Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci0gICBkaWZmZXJlbmNlX3R5cGUgcG9zaXRpb24oY29uc3QgY2hhclQqIHN1YikgY29uc3QKLSAgIHsKLSAgICAgIGNvbnN0IGNoYXJUKiBzdWJfZW5kID0gc3ViOwotICAgICAgd2hpbGUoKnN1Yl9lbmQpICsrc3ViX2VuZDsKLSAgICAgIHJldHVybiBwb3NpdGlvbihuYW1lZF9zdWJleHByZXNzaW9uX2luZGV4KHN1Yiwgc3ViX2VuZCkpOwotICAgfQotICAgdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyBUcmFpdHMsIGNsYXNzIEE+Ci0gICBkaWZmZXJlbmNlX3R5cGUgcG9zaXRpb24oY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFRyYWl0cywgQT4mIHN1YikgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBwb3NpdGlvbihzdWIuY19zdHIoKSk7Ci0gICB9Ci0gICBzdHJpbmdfdHlwZSBzdHIoaW50IHN1YiA9IDApIGNvbnN0Ci0gICB7Ci0gICAgICBpZihtX2lzX3Npbmd1bGFyKQotICAgICAgICAgcmFpc2VfbG9naWNfZXJyb3IoKTsKLSAgICAgIHN1YiArPSAyOwotICAgICAgc3RyaW5nX3R5cGUgcmVzdWx0OwotICAgICAgaWYoc3ViIDwgKGludCltX3N1YnMuc2l6ZSgpICYmIChzdWIgPiAwKSkKLSAgICAgIHsKLSAgICAgICAgIGNvbnN0IHN1Yl9tYXRjaDxCaWRpSXRlcmF0b3I+JiBzID0gbV9zdWJzW3N1Yl07Ci0gICAgICAgICBpZihzLm1hdGNoZWQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICByZXN1bHQgPSBzLnN0cigpOwotICAgICAgICAgfQotICAgICAgfQotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgIH0KLSAgIHN0cmluZ190eXBlIHN0cihjb25zdCBjaGFyX3R5cGUqIHN1YikgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiAoKnRoaXMpW3N1Yl0uc3RyKCk7Ci0gICB9Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVHJhaXRzLCBjbGFzcyBBPgotICAgc3RyaW5nX3R5cGUgc3RyKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJfdHlwZSwgVHJhaXRzLCBBPiYgc3ViKSBjb25zdAotICAgewotICAgICAgcmV0dXJuICgqdGhpcylbc3ViXS5zdHIoKTsKLSAgIH0KLSAgIHRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLSAgIHN0cmluZ190eXBlIHN0cihjb25zdCBjaGFyVCogc3ViKSBjb25zdAotICAgewotICAgICAgcmV0dXJuICgqdGhpcylbc3ViXS5zdHIoKTsKLSAgIH0KLSAgIHRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgVHJhaXRzLCBjbGFzcyBBPgotICAgc3RyaW5nX3R5cGUgc3RyKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBUcmFpdHMsIEE+JiBzdWIpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gKCp0aGlzKVtzdWJdLnN0cigpOwotICAgfQotICAgY29uc3RfcmVmZXJlbmNlIG9wZXJhdG9yW10oaW50IHN1YikgY29uc3QKLSAgIHsKLSAgICAgIGlmKG1faXNfc2luZ3VsYXIgJiYgbV9zdWJzLmVtcHR5KCkpCi0gICAgICAgICByYWlzZV9sb2dpY19lcnJvcigpOwotICAgICAgc3ViICs9IDI7Ci0gICAgICBpZihzdWIgPCAoaW50KW1fc3Vicy5zaXplKCkgJiYgKHN1YiA+PSAwKSkKLSAgICAgIHsKLSAgICAgICAgIHJldHVybiBtX3N1YnNbc3ViXTsKLSAgICAgIH0KLSAgICAgIHJldHVybiBtX251bGw7Ci0gICB9Ci0gICAvLwotICAgLy8gTmFtZWQgc3ViLWV4cHJlc3Npb25zOgotICAgLy8KLSAgIGNvbnN0X3JlZmVyZW5jZSBuYW1lZF9zdWJleHByZXNzaW9uKGNvbnN0IGNoYXJfdHlwZSogaSwgY29uc3QgY2hhcl90eXBlKiBqKSBjb25zdAotICAgewotICAgICAgLy8KLSAgICAgIC8vIFNjYW4gZm9yIHRoZSBsZWZ0bW9zdCAqbWF0Y2hlZCogc3ViZXhwcmVzc2lvbiB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZWQ6Ci0gICAgICAvLwotICAgICAgaWYobV9pc19zaW5ndWxhcikKLSAgICAgICAgIHJhaXNlX2xvZ2ljX2Vycm9yKCk7Ci0gICAgICByZV9kZXRhaWw6Om5hbWVkX3N1YmV4cHJlc3Npb25zOjpyYW5nZV90eXBlIHIgPSBtX25hbWVkX3N1YnMtPmVxdWFsX3JhbmdlKGksIGopOwotICAgICAgd2hpbGUoKHIuZmlyc3QgIT0gci5zZWNvbmQpICYmICgoKnRoaXMpW3IuZmlyc3QtPmluZGV4XS5tYXRjaGVkID09IGZhbHNlKSkKLSAgICAgICAgICsrci5maXJzdDsKLSAgICAgIHJldHVybiByLmZpcnN0ICE9IHIuc2Vjb25kID8gKCp0aGlzKVtyLmZpcnN0LT5pbmRleF0gOiBtX251bGw7Ci0gICB9Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci0gICBjb25zdF9yZWZlcmVuY2UgbmFtZWRfc3ViZXhwcmVzc2lvbihjb25zdCBjaGFyVCogaSwgY29uc3QgY2hhclQqIGopIGNvbnN0Ci0gICB7Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKHNpemVvZihjaGFyVCkgPD0gc2l6ZW9mKGNoYXJfdHlwZSkpOwotICAgICAgaWYoaSA9PSBqKQotICAgICAgICAgcmV0dXJuIG1fbnVsbDsKLSAgICAgIHN0ZDo6dmVjdG9yPGNoYXJfdHlwZT4gczsKLSAgICAgIHdoaWxlKGkgIT0gaikKLSAgICAgICAgIHMuaW5zZXJ0KHMuZW5kKCksICppKyspOwotICAgICAgcmV0dXJuIG5hbWVkX3N1YmV4cHJlc3Npb24oJipzLmJlZ2luKCksICYqcy5iZWdpbigpICsgcy5zaXplKCkpOwotICAgfQotICAgaW50IG5hbWVkX3N1YmV4cHJlc3Npb25faW5kZXgoY29uc3QgY2hhcl90eXBlKiBpLCBjb25zdCBjaGFyX3R5cGUqIGopIGNvbnN0Ci0gICB7Ci0gICAgICAvLwotICAgICAgLy8gU2NhbiBmb3IgdGhlIGxlZnRtb3N0ICptYXRjaGVkKiBzdWJleHByZXNzaW9uIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lZC4KLSAgICAgIC8vIElmIG5vbmUgZm91bmQgdGhlbiByZXR1cm4gdGhlIGxlZnRtb3N0IGV4cHJlc3Npb24gd2l0aCB0aGF0IG5hbWUsCi0gICAgICAvLyBvdGhlcndpc2UgYW4gaW52YWxpZCBpbmRleDoKLSAgICAgIC8vCi0gICAgICBpZihtX2lzX3Npbmd1bGFyKQotICAgICAgICAgcmFpc2VfbG9naWNfZXJyb3IoKTsKLSAgICAgIHJlX2RldGFpbDo6bmFtZWRfc3ViZXhwcmVzc2lvbnM6OnJhbmdlX3R5cGUgcywgcjsKLSAgICAgIHMgPSByID0gbV9uYW1lZF9zdWJzLT5lcXVhbF9yYW5nZShpLCBqKTsKLSAgICAgIHdoaWxlKChyLmZpcnN0ICE9IHIuc2Vjb25kKSAmJiAoKCp0aGlzKVtyLmZpcnN0LT5pbmRleF0ubWF0Y2hlZCA9PSBmYWxzZSkpCi0gICAgICAgICArK3IuZmlyc3Q7Ci0gICAgICBpZihyLmZpcnN0ID09IHIuc2Vjb25kKQotICAgICAgICAgciA9IHM7Ci0gICAgICByZXR1cm4gci5maXJzdCAhPSByLnNlY29uZCA/IHIuZmlyc3QtPmluZGV4IDogLTIwOwotICAgfQotICAgdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotICAgaW50IG5hbWVkX3N1YmV4cHJlc3Npb25faW5kZXgoY29uc3QgY2hhclQqIGksIGNvbnN0IGNoYXJUKiBqKSBjb25zdAotICAgewotICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChzaXplb2YoY2hhclQpIDw9IHNpemVvZihjaGFyX3R5cGUpKTsKLSAgICAgIGlmKGkgPT0gaikKLSAgICAgICAgIHJldHVybiAtMjA7Ci0gICAgICBzdGQ6OnZlY3RvcjxjaGFyX3R5cGU+IHM7Ci0gICAgICB3aGlsZShpICE9IGopCi0gICAgICAgICBzLmluc2VydChzLmVuZCgpLCAqaSsrKTsKLSAgICAgIHJldHVybiBuYW1lZF9zdWJleHByZXNzaW9uX2luZGV4KCYqcy5iZWdpbigpLCAmKnMuYmVnaW4oKSArIHMuc2l6ZSgpKTsKLSAgIH0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUcmFpdHMsIGNsYXNzIEE+Ci0gICBjb25zdF9yZWZlcmVuY2Ugb3BlcmF0b3JbXShjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyX3R5cGUsIFRyYWl0cywgQT4mIHMpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbmFtZWRfc3ViZXhwcmVzc2lvbihzLmNfc3RyKCksIHMuY19zdHIoKSArIHMuc2l6ZSgpKTsKLSAgIH0KLSAgIGNvbnN0X3JlZmVyZW5jZSBvcGVyYXRvcltdKGNvbnN0IGNoYXJfdHlwZSogcCkgY29uc3QKLSAgIHsKLSAgICAgIGNvbnN0IGNoYXJfdHlwZSogZSA9IHA7Ci0gICAgICB3aGlsZSgqZSkgKytlOwotICAgICAgcmV0dXJuIG5hbWVkX3N1YmV4cHJlc3Npb24ocCwgZSk7Ci0gICB9Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLSAgIGNvbnN0X3JlZmVyZW5jZSBvcGVyYXRvcltdKGNvbnN0IGNoYXJUKiBwKSBjb25zdAotICAgewotICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChzaXplb2YoY2hhclQpIDw9IHNpemVvZihjaGFyX3R5cGUpKTsKLSAgICAgIGlmKCpwID09IDApCi0gICAgICAgICByZXR1cm4gbV9udWxsOwotICAgICAgc3RkOjp2ZWN0b3I8Y2hhcl90eXBlPiBzOwotICAgICAgd2hpbGUoKnApCi0gICAgICAgICBzLmluc2VydChzLmVuZCgpLCAqcCsrKTsKLSAgICAgIHJldHVybiBuYW1lZF9zdWJleHByZXNzaW9uKCYqcy5iZWdpbigpLCAmKnMuYmVnaW4oKSArIHMuc2l6ZSgpKTsKLSAgIH0KLSAgIHRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgVHJhaXRzLCBjbGFzcyBBPgotICAgY29uc3RfcmVmZXJlbmNlIG9wZXJhdG9yW10oY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFRyYWl0cywgQT4mIG5zKSBjb25zdAotICAgewotICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChzaXplb2YoY2hhclQpIDw9IHNpemVvZihjaGFyX3R5cGUpKTsKLSAgICAgIGlmKG5zLmVtcHR5KCkpCi0gICAgICAgICByZXR1cm4gbV9udWxsOwotICAgICAgc3RkOjp2ZWN0b3I8Y2hhcl90eXBlPiBzOwotICAgICAgZm9yKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnMuc2l6ZSgpOyArK2kpCi0gICAgICAgICBzLmluc2VydChzLmVuZCgpLCBuc1tpXSk7Ci0gICAgICByZXR1cm4gbmFtZWRfc3ViZXhwcmVzc2lvbigmKnMuYmVnaW4oKSwgJipzLmJlZ2luKCkgKyBzLnNpemUoKSk7Ci0gICB9Ci0KLSAgIGNvbnN0X3JlZmVyZW5jZSBwcmVmaXgoKSBjb25zdAotICAgewotICAgICAgaWYobV9pc19zaW5ndWxhcikKLSAgICAgICAgIHJhaXNlX2xvZ2ljX2Vycm9yKCk7Ci0gICAgICByZXR1cm4gKCp0aGlzKVstMV07Ci0gICB9Ci0KLSAgIGNvbnN0X3JlZmVyZW5jZSBzdWZmaXgoKSBjb25zdAotICAgewotICAgICAgaWYobV9pc19zaW5ndWxhcikKLSAgICAgICAgIHJhaXNlX2xvZ2ljX2Vycm9yKCk7Ci0gICAgICByZXR1cm4gKCp0aGlzKVstMl07Ci0gICB9Ci0gICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gKG1fc3Vicy5zaXplKCkgPiAyKSA/IChtX3N1YnMuYmVnaW4oKSArIDIpIDogbV9zdWJzLmVuZCgpOwotICAgfQotICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3N1YnMuZW5kKCk7Ci0gICB9Ci0gICAvLyBmb3JtYXQ6Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcmF0b3IsIGNsYXNzIEZ1bmN0b3I+Ci0gICBPdXRwdXRJdGVyYXRvciBmb3JtYXQoT3V0cHV0SXRlcmF0b3Igb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0b3IgZm10LAotICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IGZvcm1hdF9kZWZhdWx0KSBjb25zdAotICAgewotICAgICAgaWYobV9pc19zaW5ndWxhcikKLSAgICAgICAgIHJhaXNlX2xvZ2ljX2Vycm9yKCk7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlX2RldGFpbDo6Y29tcHV0ZV9mdW5jdG9yX3R5cGU8RnVuY3RvciwgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvcj4sIE91dHB1dEl0ZXJhdG9yPjo6dHlwZSBGOwotICAgICAgRiBmdW5jKGZtdCk7Ci0gICAgICByZXR1cm4gZnVuYygqdGhpcywgb3V0LCBmbGFncyk7Ci0gICB9Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgRnVuY3Rvcj4KLSAgIHN0cmluZ190eXBlIGZvcm1hdChGdW5jdG9yIGZtdCwgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gZm9ybWF0X2RlZmF1bHQpIGNvbnN0Ci0gICB7Ci0gICAgICBpZihtX2lzX3Npbmd1bGFyKQotICAgICAgICAgcmFpc2VfbG9naWNfZXJyb3IoKTsKLSAgICAgIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJfdHlwZT4gcmVzdWx0OwotICAgICAgcmVfZGV0YWlsOjpzdHJpbmdfb3V0X2l0ZXJhdG9yPHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJfdHlwZT4gPiBpKHJlc3VsdCk7Ci0KLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVfZGV0YWlsOjpjb21wdXRlX2Z1bmN0b3JfdHlwZTxGdW5jdG9yLCBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yPiwgcmVfZGV0YWlsOjpzdHJpbmdfb3V0X2l0ZXJhdG9yPHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJfdHlwZT4gPiA+Ojp0eXBlIEY7Ci0gICAgICBGIGZ1bmMoZm10KTsKLQotICAgICAgZnVuYygqdGhpcywgaSwgZmxhZ3MpOwotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgIH0KLSAgIC8vIGZvcm1hdCB3aXRoIGxvY2FsZToKLSAgIHRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvciwgY2xhc3MgRnVuY3RvciwgY2xhc3MgUmVnZXhUPgotICAgT3V0cHV0SXRlcmF0b3IgZm9ybWF0KE91dHB1dEl0ZXJhdG9yIG91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdG9yIGZtdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVnZXhUJiByZSkgY29uc3QKLSAgIHsKLSAgICAgIGlmKG1faXNfc2luZ3VsYXIpCi0gICAgICAgICByYWlzZV9sb2dpY19lcnJvcigpOwotICAgICAgdHlwZWRlZiA6Om5kbmJvb3N0OjpyZWdleF90cmFpdHNfd3JhcHBlcjx0eXBlbmFtZSBSZWdleFQ6OnRyYWl0c190eXBlPiB0cmFpdHNfdHlwZTsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVfZGV0YWlsOjpjb21wdXRlX2Z1bmN0b3JfdHlwZTxGdW5jdG9yLCBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yPiwgT3V0cHV0SXRlcmF0b3IsIHRyYWl0c190eXBlPjo6dHlwZSBGOwotICAgICAgRiBmdW5jKGZtdCk7Ci0gICAgICByZXR1cm4gZnVuYygqdGhpcywgb3V0LCBmbGFncywgcmUuZ2V0X3RyYWl0cygpKTsKLSAgIH0KLSAgIHRlbXBsYXRlIDxjbGFzcyBSZWdleFQsIGNsYXNzIEZ1bmN0b3I+Ci0gICBzdHJpbmdfdHlwZSBmb3JtYXQoRnVuY3RvciBmbXQsCi0gICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlZ2V4VCYgcmUpIGNvbnN0Ci0gICB7Ci0gICAgICBpZihtX2lzX3Npbmd1bGFyKQotICAgICAgICAgcmFpc2VfbG9naWNfZXJyb3IoKTsKLSAgICAgIHR5cGVkZWYgOjpuZG5ib29zdDo6cmVnZXhfdHJhaXRzX3dyYXBwZXI8dHlwZW5hbWUgUmVnZXhUOjp0cmFpdHNfdHlwZT4gdHJhaXRzX3R5cGU7Ci0gICAgICBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyX3R5cGU+IHJlc3VsdDsKLSAgICAgIHJlX2RldGFpbDo6c3RyaW5nX291dF9pdGVyYXRvcjxzdGQ6OmJhc2ljX3N0cmluZzxjaGFyX3R5cGU+ID4gaShyZXN1bHQpOwotCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlX2RldGFpbDo6Y29tcHV0ZV9mdW5jdG9yX3R5cGU8RnVuY3RvciwgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvcj4sIHJlX2RldGFpbDo6c3RyaW5nX291dF9pdGVyYXRvcjxzdGQ6OmJhc2ljX3N0cmluZzxjaGFyX3R5cGU+ID4sIHRyYWl0c190eXBlID46OnR5cGUgRjsKLSAgICAgIEYgZnVuYyhmbXQpOwotCi0gICAgICBmdW5jKCp0aGlzLCBpLCBmbGFncywgcmUuZ2V0X3RyYWl0cygpKTsKLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gICB9Ci0KLSAgIGNvbnN0X3JlZmVyZW5jZSBnZXRfbGFzdF9jbG9zZWRfcGFyZW4oKWNvbnN0Ci0gICB7Ci0gICAgICBpZihtX2lzX3Npbmd1bGFyKQotICAgICAgICAgcmFpc2VfbG9naWNfZXJyb3IoKTsKLSAgICAgIHJldHVybiBtX2xhc3RfY2xvc2VkX3BhcmVuID09IDAgPyBtX251bGwgOiAoKnRoaXMpW21fbGFzdF9jbG9zZWRfcGFyZW5dOwotICAgfQotCi0gICBhbGxvY2F0b3JfdHlwZSBnZXRfYWxsb2NhdG9yKCkgY29uc3QKLSAgIHsKLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0FMTE9DQVRPUgotICAgICAgcmV0dXJuIG1fc3Vicy5nZXRfYWxsb2NhdG9yKCk7Ci0jZWxzZQotICAgICByZXR1cm4gYWxsb2NhdG9yX3R5cGUoKTsKLSNlbmRpZgotICAgfQotICAgdm9pZCBzd2FwKG1hdGNoX3Jlc3VsdHMmIHRoYXQpCi0gICB7Ci0gICAgICBzdGQ6OnN3YXAobV9zdWJzLCB0aGF0Lm1fc3Vicyk7Ci0gICAgICBzdGQ6OnN3YXAobV9uYW1lZF9zdWJzLCB0aGF0Lm1fbmFtZWRfc3Vicyk7Ci0gICAgICBzdGQ6OnN3YXAobV9sYXN0X2Nsb3NlZF9wYXJlbiwgdGhhdC5tX2xhc3RfY2xvc2VkX3BhcmVuKTsKLSAgICAgIGlmKG1faXNfc2luZ3VsYXIpCi0gICAgICB7Ci0gICAgICAgICBpZighdGhhdC5tX2lzX3Npbmd1bGFyKQotICAgICAgICAgewotICAgICAgICAgICAgbV9iYXNlID0gdGhhdC5tX2Jhc2U7Ci0gICAgICAgICAgICBtX251bGwgPSB0aGF0Lm1fbnVsbDsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UgaWYodGhhdC5tX2lzX3Npbmd1bGFyKQotICAgICAgewotICAgICAgICAgdGhhdC5tX2Jhc2UgPSBtX2Jhc2U7Ci0gICAgICAgICB0aGF0Lm1fbnVsbCA9IG1fbnVsbDsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgIHN0ZDo6c3dhcChtX2Jhc2UsIHRoYXQubV9iYXNlKTsKLSAgICAgICAgIHN0ZDo6c3dhcChtX251bGwsIHRoYXQubV9udWxsKTsKLSAgICAgIH0KLSAgICAgIHN0ZDo6c3dhcChtX2lzX3Npbmd1bGFyLCB0aGF0Lm1faXNfc2luZ3VsYXIpOwotICAgfQotICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IG1hdGNoX3Jlc3VsdHMmIHRoYXQpY29uc3QKLSAgIHsKLSAgICAgIGlmKG1faXNfc2luZ3VsYXIpCi0gICAgICB7Ci0gICAgICAgICByZXR1cm4gdGhhdC5tX2lzX3Npbmd1bGFyOwotICAgICAgfQotICAgICAgZWxzZSBpZih0aGF0Lm1faXNfc2luZ3VsYXIpCi0gICAgICB7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gKG1fc3VicyA9PSB0aGF0Lm1fc3VicykgJiYgKG1fYmFzZSA9PSB0aGF0Lm1fYmFzZSkgJiYgKG1fbGFzdF9jbG9zZWRfcGFyZW4gPT0gdGhhdC5tX2xhc3RfY2xvc2VkX3BhcmVuKTsKLSAgIH0KLSAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBtYXRjaF9yZXN1bHRzJiB0aGF0KWNvbnN0Ci0gICB7IHJldHVybiAhKCp0aGlzID09IHRoYXQpOyB9Ci0KLSNpZmRlZiBORE5CT09TVF9SRUdFWF9NQVRDSF9FWFRSQQotICAgdHlwZWRlZiB0eXBlbmFtZSBzdWJfbWF0Y2g8QmlkaUl0ZXJhdG9yPjo6Y2FwdHVyZV9zZXF1ZW5jZV90eXBlIGNhcHR1cmVfc2VxdWVuY2VfdHlwZTsKLQotICAgY29uc3QgY2FwdHVyZV9zZXF1ZW5jZV90eXBlJiBjYXB0dXJlcyhpbnQgaSljb25zdAotICAgewotICAgICAgaWYobV9pc19zaW5ndWxhcikKLSAgICAgICAgIHJhaXNlX2xvZ2ljX2Vycm9yKCk7Ci0gICAgICByZXR1cm4gKCp0aGlzKVtpXS5jYXB0dXJlcygpOwotICAgfQotI2VuZGlmCi0KLSAgIC8vCi0gICAvLyBwcml2YXRlIGFjY2VzcyBmdW5jdGlvbnM6Ci0gICB2b2lkIE5ETkJPT1NUX1JFR0VYX0NBTEwgc2V0X3NlY29uZChCaWRpSXRlcmF0b3IgaSkKLSAgIHsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVChtX3N1YnMuc2l6ZSgpID4gMik7Ci0gICAgICBtX3N1YnNbMl0uc2Vjb25kID0gaTsKLSAgICAgIG1fc3Vic1syXS5tYXRjaGVkID0gdHJ1ZTsKLSAgICAgIG1fc3Vic1swXS5maXJzdCA9IGk7Ci0gICAgICBtX3N1YnNbMF0ubWF0Y2hlZCA9IChtX3N1YnNbMF0uZmlyc3QgIT0gbV9zdWJzWzBdLnNlY29uZCk7Ci0gICAgICBtX251bGwuZmlyc3QgPSBpOwotICAgICAgbV9udWxsLnNlY29uZCA9IGk7Ci0gICAgICBtX251bGwubWF0Y2hlZCA9IGZhbHNlOwotICAgICAgbV9pc19zaW5ndWxhciA9IGZhbHNlOwotICAgfQotCi0gICB2b2lkIE5ETkJPT1NUX1JFR0VYX0NBTEwgc2V0X3NlY29uZChCaWRpSXRlcmF0b3IgaSwgc2l6ZV90eXBlIHBvcywgYm9vbCBtID0gdHJ1ZSwgYm9vbCBlc2NhcGVfayA9IGZhbHNlKQotICAgewotICAgICAgaWYocG9zKQotICAgICAgICAgbV9sYXN0X2Nsb3NlZF9wYXJlbiA9IHN0YXRpY19jYXN0PGludD4ocG9zKTsKLSAgICAgIHBvcyArPSAyOwotICAgICAgTkROQk9PU1RfQVNTRVJUKG1fc3Vicy5zaXplKCkgPiBwb3MpOwotICAgICAgbV9zdWJzW3Bvc10uc2Vjb25kID0gaTsKLSAgICAgIG1fc3Vic1twb3NdLm1hdGNoZWQgPSBtOwotICAgICAgaWYoKHBvcyA9PSAyKSAmJiAhZXNjYXBlX2spCi0gICAgICB7Ci0gICAgICAgICBtX3N1YnNbMF0uZmlyc3QgPSBpOwotICAgICAgICAgbV9zdWJzWzBdLm1hdGNoZWQgPSAobV9zdWJzWzBdLmZpcnN0ICE9IG1fc3Vic1swXS5zZWNvbmQpOwotICAgICAgICAgbV9udWxsLmZpcnN0ID0gaTsKLSAgICAgICAgIG1fbnVsbC5zZWNvbmQgPSBpOwotICAgICAgICAgbV9udWxsLm1hdGNoZWQgPSBmYWxzZTsKLSAgICAgICAgIG1faXNfc2luZ3VsYXIgPSBmYWxzZTsKLSAgICAgIH0KLSAgIH0KLSAgIHZvaWQgTkROQk9PU1RfUkVHRVhfQ0FMTCBzZXRfc2l6ZShzaXplX3R5cGUgbiwgQmlkaUl0ZXJhdG9yIGksIEJpZGlJdGVyYXRvciBqKQotICAgewotICAgICAgdmFsdWVfdHlwZSB2KGopOwotICAgICAgc2l6ZV90eXBlIGxlbiA9IG1fc3Vicy5zaXplKCk7Ci0gICAgICBpZihsZW4gPiBuICsgMikKLSAgICAgIHsKLSAgICAgICAgIG1fc3Vicy5lcmFzZShtX3N1YnMuYmVnaW4oKStuKzIsIG1fc3Vicy5lbmQoKSk7Ci0gICAgICAgICBzdGQ6OmZpbGwobV9zdWJzLmJlZ2luKCksIG1fc3Vicy5lbmQoKSwgdik7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICBzdGQ6OmZpbGwobV9zdWJzLmJlZ2luKCksIG1fc3Vicy5lbmQoKSwgdik7Ci0gICAgICAgICBpZihuKzIgIT0gbGVuKQotICAgICAgICAgICAgbV9zdWJzLmluc2VydChtX3N1YnMuZW5kKCksIG4rMi1sZW4sIHYpOwotICAgICAgfQotICAgICAgbV9zdWJzWzFdLmZpcnN0ID0gaTsKLSAgICAgIG1fbGFzdF9jbG9zZWRfcGFyZW4gPSAwOwotICAgfQotICAgdm9pZCBORE5CT09TVF9SRUdFWF9DQUxMIHNldF9iYXNlKEJpZGlJdGVyYXRvciBwb3MpCi0gICB7Ci0gICAgICBtX2Jhc2UgPSBwb3M7Ci0gICB9Ci0gICBCaWRpSXRlcmF0b3IgYmFzZSgpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX2Jhc2U7Ci0gICB9Ci0gICB2b2lkIE5ETkJPT1NUX1JFR0VYX0NBTEwgc2V0X2ZpcnN0KEJpZGlJdGVyYXRvciBpKQotICAgewotICAgICAgTkROQk9PU1RfQVNTRVJUKG1fc3Vicy5zaXplKCkgPiAyKTsKLSAgICAgIC8vIHNldCB1cCBwcmVmaXg6Ci0gICAgICBtX3N1YnNbMV0uc2Vjb25kID0gaTsKLSAgICAgIG1fc3Vic1sxXS5tYXRjaGVkID0gKG1fc3Vic1sxXS5maXJzdCAhPSBpKTsKLSAgICAgIC8vIHNldCB1cCAkMDoKLSAgICAgIG1fc3Vic1syXS5maXJzdCA9IGk7Ci0gICAgICAvLyB6ZXJvIG91dCBldmVyeXRoaW5nIGVsc2U6Ci0gICAgICBmb3Ioc2l6ZV90eXBlIG4gPSAzOyBuIDwgbV9zdWJzLnNpemUoKTsgKytuKQotICAgICAgewotICAgICAgICAgbV9zdWJzW25dLmZpcnN0ID0gbV9zdWJzW25dLnNlY29uZCA9IG1fc3Vic1swXS5zZWNvbmQ7Ci0gICAgICAgICBtX3N1YnNbbl0ubWF0Y2hlZCA9IGZhbHNlOwotICAgICAgfQotICAgfQotICAgdm9pZCBORE5CT09TVF9SRUdFWF9DQUxMIHNldF9maXJzdChCaWRpSXRlcmF0b3IgaSwgc2l6ZV90eXBlIHBvcywgYm9vbCBlc2NhcGVfayA9IGZhbHNlKQotICAgewotICAgICAgTkROQk9PU1RfQVNTRVJUKHBvcysyIDwgbV9zdWJzLnNpemUoKSk7Ci0gICAgICBpZihwb3MgfHwgZXNjYXBlX2spCi0gICAgICB7Ci0gICAgICAgICBtX3N1YnNbcG9zKzJdLmZpcnN0ID0gaTsKLSAgICAgICAgIGlmKGVzY2FwZV9rKQotICAgICAgICAgewotICAgICAgICAgICAgbV9zdWJzWzFdLnNlY29uZCA9IGk7Ci0gICAgICAgICAgICBtX3N1YnNbMV0ubWF0Y2hlZCA9IChtX3N1YnNbMV0uZmlyc3QgIT0gbV9zdWJzWzFdLnNlY29uZCk7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICAgICBzZXRfZmlyc3QoaSk7Ci0gICB9Ci0gICB2b2lkIE5ETkJPT1NUX1JFR0VYX0NBTEwgbWF5YmVfYXNzaWduKGNvbnN0IG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+JiBtKTsKLQotICAgdm9pZCBORE5CT09TVF9SRUdFWF9DQUxMIHNldF9uYW1lZF9zdWJzKG5kbmJvb3N0OjpzaGFyZWRfcHRyPG5hbWVkX3N1Yl90eXBlPiBzdWJzKQotICAgewotICAgICAgbV9uYW1lZF9zdWJzID0gc3ViczsKLSAgIH0KLQotcHJpdmF0ZToKLSAgIC8vCi0gICAvLyBFcnJvciBoYW5kbGVyIGNhbGxlZCB3aGVuIGFuIHVuaW5pdGlhbGl6ZWQgbWF0Y2hfcmVzdWx0cyBpcyBhY2Nlc3NlZDoKLSAgIC8vCi0gICBzdGF0aWMgdm9pZCByYWlzZV9sb2dpY19lcnJvcigpCi0gICB7Ci0gICAgICBzdGQ6OmxvZ2ljX2Vycm9yIGUoIkF0dGVtcHQgdG8gYWNjZXNzIGFuIHVuaW5pdGlhbHplZCBuZG5ib29zdDo6bWF0Y2hfcmVzdWx0czw+IGNsYXNzLiIpOwotICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihlKTsKLSAgIH0KLQotCi0gICB2ZWN0b3JfdHlwZSAgICAgICAgICAgIG1fc3ViczsgICAgICAgICAgICAgICAgICAgICAgLy8gc3ViZXhwcmVzc2lvbnMKLSAgIEJpZGlJdGVyYXRvciAgIG1fYmFzZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVyZSB0aGUgc2VhcmNoIHN0YXJ0ZWQgZnJvbQotICAgc3ViX21hdGNoPEJpZGlJdGVyYXRvcj4gbV9udWxsOyAgICAgICAgICAgICAgICAgICAgIC8vIGEgbnVsbCBtYXRjaAotICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8bmFtZWRfc3ViX3R5cGU+IG1fbmFtZWRfc3ViczsgICAgIC8vIFNoYXJlZCBjb3B5IG9mIG5hbWVkIHN1YnMgaW4gdGhlIHJlZ2V4IG9iamVjdAotICAgaW50IG1fbGFzdF9jbG9zZWRfcGFyZW47ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIExhc3QgKSB0byBiZSBzZWVuIC0gdXNlZCBmb3IgZm9ybWF0dGluZwotICAgYm9vbCBtX2lzX3Npbmd1bGFyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRydWUgaWYgb3VyIHN0b3JlZCBpdGVyYXRvcnMgYXJlIHNpbmd1bGFyCi19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3I+Ci12b2lkIE5ETkJPT1NUX1JFR0VYX0NBTEwgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvcj46Om1heWJlX2Fzc2lnbihjb25zdCBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yPiYgbSkKLXsKLSAgIGlmKG1faXNfc2luZ3VsYXIpCi0gICB7Ci0gICAgICAqdGhpcyA9IG07Ci0gICAgICByZXR1cm47Ci0gICB9Ci0gICBjb25zdF9pdGVyYXRvciBwMSwgcDI7Ci0gICBwMSA9IGJlZ2luKCk7Ci0gICBwMiA9IG0uYmVnaW4oKTsKLSAgIC8vCi0gICAvLyBEaXN0YW5jZXMgYXJlIG1lYXN1cmVkIGZyb20gdGhlIHN0YXJ0IG9mICp0aGlzKiBtYXRjaCwgdW5sZXNzIHRoaXMgaXNuJ3QKLSAgIC8vIGEgdmFsaWQgbWF0Y2ggaW4gd2hpY2ggY2FzZSB3ZSB1c2UgdGhlIHN0YXJ0IG9mIHRoZSB3aG9sZSBzZXF1ZW5jZS4gIE5vdGUgdGhhdAotICAgLy8gbm8gc3Vic2VxdWVudCBtYXRjaC1jYW5kaWRhdGUgY2FuIGV2ZXIgYmUgdG8gdGhlIGxlZnQgb2YgdGhlIGZpcnN0IG1hdGNoIGZvdW5kLgotICAgLy8gVGhpcyBlbnN1cmVzIHRoYXQgd2hlbiB3ZSBhcmUgdXNpbmcgYmlkaXJlY3Rpb25hbCBpdGVyYXRvcnMsIHRoYXQgZGlzdGFuY2VzIAotICAgLy8gbWVhc3VyZWQgYXJlIGFzIHNob3J0IGFzIHBvc3NpYmxlLCBhbmQgdGhlcmVmb3JlIGFzIGVmZmljaWVudCBhcyBwb3NzaWJsZQotICAgLy8gdG8gY29tcHV0ZS4gIEZpbmFsbHkgbm90ZSB0aGF0IHdlIGRvbid0IHVzZSB0aGUgIm1hdGNoZWQiIGRhdGEgbWVtYmVyIHRvIHRlc3QKLSAgIC8vIHdoZXRoZXIgYSBzdWItZXhwcmVzc2lvbiBpcyBhIHZhbGlkIG1hdGNoLCBiZWNhdXNlIHBhcnRpYWwgbWF0Y2hlcyBzZXQgdGhpcwotICAgLy8gdG8gZmFsc2UgZm9yIHN1Yi1leHByZXNzaW9uIDAuCi0gICAvLwotICAgQmlkaUl0ZXJhdG9yIGxfZW5kID0gdGhpcy0+c3VmZml4KCkuc2Vjb25kOwotICAgQmlkaUl0ZXJhdG9yIGxfYmFzZSA9IChwMS0+Zmlyc3QgPT0gbF9lbmQpID8gdGhpcy0+cHJlZml4KCkuZmlyc3QgOiAoKnRoaXMpWzBdLmZpcnN0OwotICAgZGlmZmVyZW5jZV90eXBlIGxlbjEgPSAwOwotICAgZGlmZmVyZW5jZV90eXBlIGxlbjIgPSAwOwotICAgZGlmZmVyZW5jZV90eXBlIGJhc2UxID0gMDsKLSAgIGRpZmZlcmVuY2VfdHlwZSBiYXNlMiA9IDA7Ci0gICBzdGQ6OnNpemVfdCBpOwotICAgZm9yKGkgPSAwOyBpIDwgc2l6ZSgpOyArK2ksICsrcDEsICsrcDIpCi0gICB7Ci0gICAgICAvLwotICAgICAgLy8gTGVmdG1vc3QgdGFrZXMgcHJpb3JpdHkgb3ZlciBsb25nZXN0OyBoYW5kbGUgc3BlY2lhbCBjYXNlcwotICAgICAgLy8gd2hlcmUgZGlzdGFuY2VzIG5lZWQgbm90IGJlIGNvbXB1dGVkIGZpcnN0IChhbiBvcHRpbWlzYXRpb24KLSAgICAgIC8vIGZvciBiaWRpcmVjdGlvbmFsIGl0ZXJhdG9yczogZW5zdXJlIHRoYXQgd2UgZG9uJ3QgYWNjaWRlbnRseQotICAgICAgLy8gY29tcHV0ZSB0aGUgbGVuZ3RoIG9mIHRoZSB3aG9sZSBzZXF1ZW5jZSwgYXMgdGhpcyBjYW4gYmUgcmVhbGx5Ci0gICAgICAvLyBleHBlbnNpdmUpLgotICAgICAgLy8KLSAgICAgIGlmKHAxLT5maXJzdCA9PSBsX2VuZCkKLSAgICAgIHsKLSAgICAgICAgIGlmKHAyLT5maXJzdCAhPSBsX2VuZCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIHAyIG11c3QgYmUgYmV0dGVyIHRoYW4gcDEsIGFuZCBubyBuZWVkIHRvIGNhbGN1bGF0ZQotICAgICAgICAgICAgLy8gYWN0dWFsIGRpc3RhbmNlczoKLSAgICAgICAgICAgIGJhc2UxID0gMTsKLSAgICAgICAgICAgIGJhc2UyID0gMDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotICAgICAgICAgZWxzZQotICAgICAgICAgewotICAgICAgICAgICAgLy8gKnAxIGFuZCAqcDIgYXJlIGVpdGhlciB1bm1hdGNoZWQgb3IgbWF0Y2ggZW5kLW9mIHNlcXVlbmNlLAotICAgICAgICAgICAgLy8gZWl0aGVyIHdheSBubyBuZWVkIHRvIGNhbGN1bGF0ZSBkaXN0YW5jZXM6Ci0gICAgICAgICAgICBpZigocDEtPm1hdGNoZWQgPT0gZmFsc2UpICYmIChwMi0+bWF0Y2hlZCA9PSB0cnVlKSkKLSAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgaWYoKHAxLT5tYXRjaGVkID09IHRydWUpICYmIChwMi0+bWF0Y2hlZCA9PSBmYWxzZSkpCi0gICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UgaWYocDItPmZpcnN0ID09IGxfZW5kKQotICAgICAgewotICAgICAgICAgLy8gcDEgYmV0dGVyIHRoYW4gcDIsIGFuZCBubyBuZWVkIHRvIGNhbGN1bGF0ZSBkaXN0YW5jZXM6Ci0gICAgICAgICByZXR1cm47Ci0gICAgICB9Ci0gICAgICBiYXNlMSA9IDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2UobF9iYXNlLCBwMS0+Zmlyc3QpOwotICAgICAgYmFzZTIgPSA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKGxfYmFzZSwgcDItPmZpcnN0KTsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVChiYXNlMSA+PSAwKTsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVChiYXNlMiA+PSAwKTsKLSAgICAgIGlmKGJhc2UxIDwgYmFzZTIpIHJldHVybjsKLSAgICAgIGlmKGJhc2UyIDwgYmFzZTEpIGJyZWFrOwotCi0gICAgICBsZW4xID0gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZSgoQmlkaUl0ZXJhdG9yKXAxLT5maXJzdCwgKEJpZGlJdGVyYXRvcilwMS0+c2Vjb25kKTsKLSAgICAgIGxlbjIgPSA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKChCaWRpSXRlcmF0b3IpcDItPmZpcnN0LCAoQmlkaUl0ZXJhdG9yKXAyLT5zZWNvbmQpOwotICAgICAgTkROQk9PU1RfQVNTRVJUKGxlbjEgPj0gMCk7Ci0gICAgICBORE5CT09TVF9BU1NFUlQobGVuMiA+PSAwKTsKLSAgICAgIGlmKChsZW4xICE9IGxlbjIpIHx8ICgocDEtPm1hdGNoZWQgPT0gZmFsc2UpICYmIChwMi0+bWF0Y2hlZCA9PSB0cnVlKSkpCi0gICAgICAgICBicmVhazsKLSAgICAgIGlmKChwMS0+bWF0Y2hlZCA9PSB0cnVlKSAmJiAocDItPm1hdGNoZWQgPT0gZmFsc2UpKQotICAgICAgICAgcmV0dXJuOwotICAgfQotICAgaWYoaSA9PSBzaXplKCkpCi0gICAgICByZXR1cm47Ci0gICBpZihiYXNlMiA8IGJhc2UxKQotICAgICAgKnRoaXMgPSBtOwotICAgZWxzZSBpZigobGVuMiA+IGxlbjEpIHx8ICgocDEtPm1hdGNoZWQgPT0gZmFsc2UpICYmIChwMi0+bWF0Y2hlZCA9PSB0cnVlKSkgKQotICAgICAgKnRoaXMgPSBtOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3I+Ci12b2lkIHN3YXAobWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvcj4mIGEsIG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+JiBiKQotewotICAgYS5zd2FwKGIpOwotfQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9MT0NBTEUKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvcj4KLXN0ZDo6YmFzaWNfb3N0cmVhbTxjaGFyVCwgdHJhaXRzPiYKLSAgIG9wZXJhdG9yIDw8IChzdGQ6OmJhc2ljX29zdHJlYW08Y2hhclQsIHRyYWl0cz4mIG9zLAotICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+JiBzKQotewotICAgcmV0dXJuIChvcyA8PCBzLnN0cigpKTsKLX0KLSNlbHNlCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3I+Ci1zdGQ6Om9zdHJlYW0mIG9wZXJhdG9yIDw8IChzdGQ6Om9zdHJlYW0mIG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvcj4mIHMpCi17Ci0gICByZXR1cm4gKG9zIDw8IHMuc3RyKCkpOwotfQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNlbmRpZgotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvbWVtX2Jsb2NrX2NhY2hlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvbWVtX2Jsb2NrX2NhY2hlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmU3MWEzYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L21lbV9ibG9ja19jYWNoZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0gLyoKLSAqIENvcHlyaWdodCAoYykgMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIG1lbV9ibG9ja19jYWNoZS5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IG1lbW9yeSBibG9jayBjYWNoZSB1c2VkIGJ5IHRoZSBub24tcmVjdXJzaXZlIG1hdGNoZXIuCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfTUVNX0JMT0NLX0NBQ0hFX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9WNF9NRU1fQkxPQ0tfQ0FDSEVfSFBQCi0KLSNpbmNsdWRlIDxuZXc+Ci0jaWZkZWYgTkROQk9PU1RfSEFTX1RIUkVBRFMKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC9wZW5kaW5nL3N0YXRpY19tdXRleC5ocHA+Ci0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotbmFtZXNwYWNlIHJlX2RldGFpbHsKLQotc3RydWN0IG1lbV9ibG9ja19ub2RlCi17Ci0gICBtZW1fYmxvY2tfbm9kZSogbmV4dDsKLX07Ci0KLXN0cnVjdCBtZW1fYmxvY2tfY2FjaGUKLXsKLSAgIC8vIHRoaXMgbWVtYmVyIGhhcyB0byBiZSBzdGF0aWNhbGx5IGluaXRpYWxzZWQ6Ci0gICBtZW1fYmxvY2tfbm9kZSogbmV4dDsKLSAgIHVuc2lnbmVkIGNhY2hlZF9ibG9ja3M7Ci0jaWZkZWYgTkROQk9PU1RfSEFTX1RIUkVBRFMKLSAgIG5kbmJvb3N0OjpzdGF0aWNfbXV0ZXggbXV0OwotI2VuZGlmCi0KLSAgIH5tZW1fYmxvY2tfY2FjaGUoKQotICAgewotICAgICAgd2hpbGUobmV4dCkKLSAgICAgIHsKLSAgICAgICAgIG1lbV9ibG9ja19ub2RlKiBvbGQgPSBuZXh0OwotICAgICAgICAgbmV4dCA9IG5leHQtPm5leHQ7Ci0gICAgICAgICA6Om9wZXJhdG9yIGRlbGV0ZShvbGQpOwotICAgICAgfQotICAgfQotICAgdm9pZCogZ2V0KCkKLSAgIHsKLSNpZmRlZiBORE5CT09TVF9IQVNfVEhSRUFEUwotICAgICAgbmRuYm9vc3Q6OnN0YXRpY19tdXRleDo6c2NvcGVkX2xvY2sgZyhtdXQpOwotI2VuZGlmCi0gICAgIGlmKG5leHQpCi0gICAgICB7Ci0gICAgICAgICBtZW1fYmxvY2tfbm9kZSogcmVzdWx0ID0gbmV4dDsKLSAgICAgICAgIG5leHQgPSBuZXh0LT5uZXh0OwotICAgICAgICAgLS1jYWNoZWRfYmxvY2tzOwotICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgIH0KLSAgICAgIHJldHVybiA6Om9wZXJhdG9yIG5ldyhORE5CT09TVF9SRUdFWF9CTE9DS1NJWkUpOwotICAgfQotICAgdm9pZCBwdXQodm9pZCogcCkKLSAgIHsKLSNpZmRlZiBORE5CT09TVF9IQVNfVEhSRUFEUwotICAgICAgbmRuYm9vc3Q6OnN0YXRpY19tdXRleDo6c2NvcGVkX2xvY2sgZyhtdXQpOwotI2VuZGlmCi0gICAgICBpZihjYWNoZWRfYmxvY2tzID49IE5ETkJPT1NUX1JFR0VYX01BWF9DQUNIRV9CTE9DS1MpCi0gICAgICB7Ci0gICAgICAgICA6Om9wZXJhdG9yIGRlbGV0ZShwKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgIG1lbV9ibG9ja19ub2RlKiBvbGQgPSBzdGF0aWNfY2FzdDxtZW1fYmxvY2tfbm9kZSo+KHApOwotICAgICAgICAgb2xkLT5uZXh0ID0gbmV4dDsKLSAgICAgICAgIG5leHQgPSBvbGQ7Ci0gICAgICAgICArK2NhY2hlZF9ibG9ja3M7Ci0gICAgICB9Ci0gICB9Ci19OwotCi1leHRlcm4gbWVtX2Jsb2NrX2NhY2hlIGJsb2NrX2NhY2hlOwotCi19Ci19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9wZXJsX21hdGNoZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9wZXJsX21hdGNoZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNGNmMGFmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcGVybF9tYXRjaGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU4NyArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9NQVRDSEVSX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9NQVRDSEVSX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvaXRlcmF0b3JfY2F0ZWdvcnkuaHBwPgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jICBwcmFnbWEgd2FybmluZyhwdXNoKQotIyAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDgwMCkKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci1uYW1lc3BhY2UgcmVfZGV0YWlsewotCi0vLwotLy8gZXJyb3IgY2hlY2tpbmcgQVBJOgotLy8KLU5ETkJPT1NUX1JFR0VYX0RFQ0wgdm9pZCBORE5CT09TVF9SRUdFWF9DQUxMIHZlcmlmeV9vcHRpb25zKG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OnN5bnRheF9vcHRpb25fdHlwZSBlZiwgbWF0Y2hfZmxhZ190eXBlIG1mKTsKLS8vCi0vLyBmdW5jdGlvbiBjYW5fc3RhcnQ6Ci0vLwotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotaW5saW5lIGJvb2wgY2FuX3N0YXJ0KGNoYXJUIGMsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIG1hcCwgdW5zaWduZWQgY2hhciBtYXNrKQotewotICAgcmV0dXJuICgoYyA8IHN0YXRpY19jYXN0PGNoYXJUPigwKSkgPyB0cnVlIDogKChjID49IHN0YXRpY19jYXN0PGNoYXJUPigxIDw8IENIQVJfQklUKSkgPyB0cnVlIDogbWFwW2NdICYgbWFzaykpOwotfQotaW5saW5lIGJvb2wgY2FuX3N0YXJ0KGNoYXIgYywgY29uc3QgdW5zaWduZWQgY2hhciogbWFwLCB1bnNpZ25lZCBjaGFyIG1hc2spCi17Ci0gICByZXR1cm4gbWFwWyh1bnNpZ25lZCBjaGFyKWNdICYgbWFzazsKLX0KLWlubGluZSBib29sIGNhbl9zdGFydChzaWduZWQgY2hhciBjLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBtYXAsIHVuc2lnbmVkIGNoYXIgbWFzaykKLXsKLSAgIHJldHVybiBtYXBbKHVuc2lnbmVkIGNoYXIpY10gJiBtYXNrOwotfQotaW5saW5lIGJvb2wgY2FuX3N0YXJ0KHVuc2lnbmVkIGNoYXIgYywgY29uc3QgdW5zaWduZWQgY2hhciogbWFwLCB1bnNpZ25lZCBjaGFyIG1hc2spCi17Ci0gICByZXR1cm4gbWFwW2NdICYgbWFzazsKLX0KLWlubGluZSBib29sIGNhbl9zdGFydCh1bnNpZ25lZCBzaG9ydCBjLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBtYXAsIHVuc2lnbmVkIGNoYXIgbWFzaykKLXsKLSAgIHJldHVybiAoKGMgPj0gKDEgPDwgQ0hBUl9CSVQpKSA/IHRydWUgOiBtYXBbY10gJiBtYXNrKTsKLX0KLSNpZiAhZGVmaW5lZChfX2hwdXgpICYmICFkZWZpbmVkKF9fV0lOU0NXX18pLy8gV0NIQVJfTUlOIG5vdCB1c2FibGUgaW4gcHAtZGlyZWN0aXZlcy4KLSNpZiBkZWZpbmVkKFdDSEFSX01JTikgJiYgKFdDSEFSX01JTiA9PSAwKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19JTlRSSU5TSUNfV0NIQVJfVCkKLWlubGluZSBib29sIGNhbl9zdGFydCh3Y2hhcl90IGMsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIG1hcCwgdW5zaWduZWQgY2hhciBtYXNrKQotewotICAgcmV0dXJuICgoYyA+PSBzdGF0aWNfY2FzdDx3Y2hhcl90PigxdSA8PCBDSEFSX0JJVCkpID8gdHJ1ZSA6IG1hcFtjXSAmIG1hc2spOwotfQotI2VuZGlmCi0jZW5kaWYKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19JTlRSSU5TSUNfV0NIQVJfVCkKLWlubGluZSBib29sIGNhbl9zdGFydCh1bnNpZ25lZCBpbnQgYywgY29uc3QgdW5zaWduZWQgY2hhciogbWFwLCB1bnNpZ25lZCBjaGFyIG1hc2spCi17Ci0gICByZXR1cm4gKCgoYyA+PSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KDF1IDw8IENIQVJfQklUKSkgPyB0cnVlIDogbWFwW2NdICYgbWFzaykpOwotfQotI2VuZGlmCi0KLQotLy8KLS8vIFVuZm9ydHVuYXRlbHkgUm9ndWUgV2F2ZXMgc3RhbmRhcmQgbGlicmFyeSBhcHBlYXJzIHRvIGhhdmUgYSBidWcKLS8vIGluIHN0ZDo6YmFzaWNfc3RyaW5nOjpjb21wYXJlIHRoYXQgcmVzdWx0cyBpbiBlcm9uZW91cyBhbnN3ZXJzCi0vLyBpbiBzb21lIGNhc2VzICh0ZXN0ZWQgd2l0aCBCb3JsYW5kIEMrKyA1LjEsIFJvZ3VlIFdhdmUgbGliIHZlcnNpb24KLS8vIDB4MDIwMTAxKSB0aGUgdGVzdCBjYXNlIHdhczoKLS8vIHszOTEzNSwwfSA8IHsweGZmLDB9Ci0vLyB3aGljaCBzdWNjZWVkcyB3aGVuIGl0IHNob3VsZCBub3QuCi0vLwotI2lmbmRlZiBfUldTVERfVkVSCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzEwKQotdGVtcGxhdGUgPGNsYXNzIEMsIGNsYXNzIFQsIGNsYXNzIEE+Ci1pbmxpbmUgaW50IHN0cmluZ19jb21wYXJlKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPEMsVCxBPiYgcywgY29uc3QgQyogcCkKLXsgCi0gICBpZigwID09ICpwKQotICAgewotICAgICAgaWYocy5lbXB0eSgpIHx8ICgocy5zaXplKCkgPT0gMSkgJiYgKHNbMF0gPT0gMCkpKQotICAgICAgICAgcmV0dXJuIDA7Ci0gICB9Ci0gICByZXR1cm4gcy5jb21wYXJlKHApOyAKLX0KLSNlbmRpZgotI2Vsc2UKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMTApCi10ZW1wbGF0ZSA8Y2xhc3MgQywgY2xhc3MgVCwgY2xhc3MgQT4KLWlubGluZSBpbnQgc3RyaW5nX2NvbXBhcmUoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8QyxULEE+JiBzLCBjb25zdCBDKiBwKQoteyAKLSAgIGlmKDAgPT0gKnApCi0gICB7Ci0gICAgICBpZihzLmVtcHR5KCkgfHwgKChzLnNpemUoKSA9PSAxKSAmJiAoc1swXSA9PSAwKSkpCi0gICAgICAgICByZXR1cm4gMDsKLSAgIH0KLSAgIHJldHVybiBzLmNvbXBhcmUocCk7IAotfQotI2VuZGlmCi1pbmxpbmUgaW50IHN0cmluZ19jb21wYXJlKGNvbnN0IHN0ZDo6c3RyaW5nJiBzLCBjb25zdCBjaGFyKiBwKQoteyByZXR1cm4gc3RkOjpzdHJjbXAocy5jX3N0cigpLCBwKTsgfQotIyBpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi1pbmxpbmUgaW50IHN0cmluZ19jb21wYXJlKGNvbnN0IHN0ZDo6d3N0cmluZyYgcywgY29uc3Qgd2NoYXJfdCogcCkKLXsgcmV0dXJuIHN0ZDo6d2NzY21wKHMuY19zdHIoKSwgcCk7IH0KLSNlbmRpZgotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgU2VxLCBjbGFzcyBDPgotaW5saW5lIGludCBzdHJpbmdfY29tcGFyZShjb25zdCBTZXEmIHMsIGNvbnN0IEMqIHApCi17Ci0gICBzdGQ6OnNpemVfdCBpID0gMDsKLSAgIHdoaWxlKChpIDwgcy5zaXplKCkpICYmIChwW2ldID09IHNbaV0pKQotICAgewotICAgICAgKytpOwotICAgfQotICAgcmV0dXJuIChpID09IHMuc2l6ZSgpKSA/IC1wW2ldIDogc1tpXSAtIHBbaV07Ci19Ci0jIGRlZmluZSBTVFJfQ09NUChzLHApIHN0cmluZ19jb21wYXJlKHMscCkKLQotdGVtcGxhdGU8Y2xhc3MgY2hhclQ+Ci1pbmxpbmUgY29uc3QgY2hhclQqIHJlX3NraXBfcGFzdF9udWxsKGNvbnN0IGNoYXJUKiBwKQotewotICB3aGlsZSAoKnAgIT0gc3RhdGljX2Nhc3Q8Y2hhclQ+KDApKSArK3A7Ci0gIHJldHVybiArK3A7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBpdGVyYXRvciwgY2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0c190eXBlLCBjbGFzcyBjaGFyX2NsYXNzVD4KLWl0ZXJhdG9yIE5ETkJPT1NUX1JFR0VYX0NBTEwgcmVfaXNfc2V0X21lbWJlcihpdGVyYXRvciBuZXh0LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3IgbGFzdCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlX3NldF9sb25nPGNoYXJfY2xhc3NUPiogc2V0XywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4X2RhdGE8Y2hhclQsIHRyYWl0c190eXBlPiYgZSwgYm9vbCBpY2FzZSkKLXsgICAKLSAgIGNvbnN0IGNoYXJUKiBwID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyVCo+KHNldF8rMSk7Ci0gICBpdGVyYXRvciBwdHI7Ci0gICB1bnNpZ25lZCBpbnQgaTsKLSAgIC8vYm9vbCBpY2FzZSA9IGUubV9mbGFncyAmIHJlZ2V4X2NvbnN0YW50czo6aWNhc2U7Ci0KLSAgIGlmKG5leHQgPT0gbGFzdCkgcmV0dXJuIG5leHQ7Ci0KLSAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzX3R5cGU6OnN0cmluZ190eXBlIHRyYWl0c19zdHJpbmdfdHlwZTsKLSAgIGNvbnN0IDo6bmRuYm9vc3Q6OnJlZ2V4X3RyYWl0c193cmFwcGVyPHRyYWl0c190eXBlPiYgdHJhaXRzX2luc3QgPSAqKGUubV9wdHJhaXRzKTsKLSAgIAotICAgLy8gZHdhIDkvMTMvMDAgc3VwcHJlc3MgaW5jb3JyZWN0IE1TVkMgd2FybmluZyAtIGl0IGNsYWltcyB0aGlzIGlzIG5ldmVyCi0gICAvLyByZWZlcmVuY2VkCi0gICAodm9pZCl0cmFpdHNfaW5zdDsKLQotICAgLy8gdHJ5IGFuZCBtYXRjaCBhIHNpbmdsZSBjaGFyYWN0ZXIsIGNvdWxkIGJlIGEgbXVsdGktY2hhcmFjdGVyCi0gICAvLyBjb2xsYXRpbmcgZWxlbWVudC4uLgotICAgZm9yKGkgPSAwOyBpIDwgc2V0Xy0+Y3NpbmdsZXM7ICsraSkKLSAgIHsKLSAgICAgIHB0ciA9IG5leHQ7Ci0gICAgICBpZigqcCA9PSBzdGF0aWNfY2FzdDxjaGFyVD4oMCkpCi0gICAgICB7Ci0gICAgICAgICAvLyB0cmVhdCBudWxsIHN0cmluZyBhcyBzcGVjaWFsIGNhc2U6Ci0gICAgICAgICBpZih0cmFpdHNfaW5zdC50cmFuc2xhdGUoKnB0ciwgaWNhc2UpICE9ICpwKQotICAgICAgICAgewotICAgICAgICAgICAgd2hpbGUoKnAgPT0gc3RhdGljX2Nhc3Q8Y2hhclQ+KDApKSsrcDsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgfQotICAgICAgICAgcmV0dXJuIHNldF8tPmlzbm90ID8gbmV4dCA6IChwdHIgPT0gbmV4dCkgPyArK25leHQgOiBwdHI7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICB3aGlsZSgqcCAmJiAocHRyICE9IGxhc3QpKQotICAgICAgICAgewotICAgICAgICAgICAgaWYodHJhaXRzX2luc3QudHJhbnNsYXRlKCpwdHIsIGljYXNlKSAhPSAqcCkKLSAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgKytwOwotICAgICAgICAgICAgKytwdHI7Ci0gICAgICAgICB9Ci0KLSAgICAgICAgIGlmKCpwID09IHN0YXRpY19jYXN0PGNoYXJUPigwKSkgLy8gaWYgbnVsbCB3ZSd2ZSBtYXRjaGVkCi0gICAgICAgICAgICByZXR1cm4gc2V0Xy0+aXNub3QgPyBuZXh0IDogKHB0ciA9PSBuZXh0KSA/ICsrbmV4dCA6IHB0cjsKLQotICAgICAgICAgcCA9IHJlX3NraXBfcGFzdF9udWxsKHApOyAgICAgLy8gc2tpcCBudWxsCi0gICAgICB9Ci0gICB9Ci0KLSAgIGNoYXJUIGNvbCA9IHRyYWl0c19pbnN0LnRyYW5zbGF0ZSgqbmV4dCwgaWNhc2UpOwotCi0KLSAgIGlmKHNldF8tPmNyYW5nZXMgfHwgc2V0Xy0+Y2VxdWl2YWxlbnRzKQotICAgewotICAgICAgdHJhaXRzX3N0cmluZ190eXBlIHMxOwotICAgICAgLy8KLSAgICAgIC8vIHRyeSBhbmQgbWF0Y2ggYSByYW5nZSwgTkIgb25seSBhIHNpbmdsZSBjaGFyYWN0ZXIgY2FuIG1hdGNoCi0gICAgICBpZihzZXRfLT5jcmFuZ2VzKQotICAgICAgewotICAgICAgICAgaWYoKGUubV9mbGFncyAmIHJlZ2V4X2NvbnN0YW50czo6Y29sbGF0ZSkgPT0gMCkKLSAgICAgICAgICAgIHMxLmFzc2lnbigxLCBjb2wpOwotICAgICAgICAgZWxzZQotICAgICAgICAgewotICAgICAgICAgICAgY2hhclQgYVsyXSA9IHsgY29sLCBjaGFyVCgwKSwgfTsKLSAgICAgICAgICAgIHMxID0gdHJhaXRzX2luc3QudHJhbnNmb3JtKGEsIGEgKyAxKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGZvcihpID0gMDsgaSA8IHNldF8tPmNyYW5nZXM7ICsraSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGlmKFNUUl9DT01QKHMxLCBwKSA+PSAwKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgZG97ICsrcDsgfXdoaWxlKCpwKTsKLSAgICAgICAgICAgICAgICsrcDsKLSAgICAgICAgICAgICAgIGlmKFNUUl9DT01QKHMxLCBwKSA8PSAwKQotICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldF8tPmlzbm90ID8gbmV4dCA6ICsrbmV4dDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIC8vIHNraXAgZmlyc3Qgc3RyaW5nCi0gICAgICAgICAgICAgICBkb3sgKytwOyB9d2hpbGUoKnApOwotICAgICAgICAgICAgICAgKytwOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gc2tpcCBzZWNvbmQgc3RyaW5nCi0gICAgICAgICAgICBkb3sgKytwOyB9d2hpbGUoKnApOwotICAgICAgICAgICAgKytwOwotICAgICAgICAgfQotICAgICAgfQotICAgICAgLy8KLSAgICAgIC8vIHRyeSBhbmQgbWF0Y2ggYW4gZXF1aXZhbGVuY2UgY2xhc3MsIE5CIG9ubHkgYSBzaW5nbGUgY2hhcmFjdGVyIGNhbiBtYXRjaAotICAgICAgaWYoc2V0Xy0+Y2VxdWl2YWxlbnRzKQotICAgICAgewotICAgICAgICAgY2hhclQgYVsyXSA9IHsgY29sLCBjaGFyVCgwKSwgfTsKLSAgICAgICAgIHMxID0gdHJhaXRzX2luc3QudHJhbnNmb3JtX3ByaW1hcnkoYSwgYSArMSk7Ci0gICAgICAgICBmb3IoaSA9IDA7IGkgPCBzZXRfLT5jZXF1aXZhbGVudHM7ICsraSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGlmKFNUUl9DT01QKHMxLCBwKSA9PSAwKQotICAgICAgICAgICAgICAgcmV0dXJuIHNldF8tPmlzbm90ID8gbmV4dCA6ICsrbmV4dDsKLSAgICAgICAgICAgIC8vIHNraXAgc3RyaW5nCi0gICAgICAgICAgICBkb3sgKytwOyB9d2hpbGUoKnApOwotICAgICAgICAgICAgKytwOwotICAgICAgICAgfQotICAgICAgfQotICAgfQotICAgaWYodHJhaXRzX2luc3QuaXNjdHlwZShjb2wsIHNldF8tPmNjbGFzc2VzKSA9PSB0cnVlKQotICAgICAgcmV0dXJuIHNldF8tPmlzbm90ID8gbmV4dCA6ICsrbmV4dDsKLSAgIGlmKChzZXRfLT5jbmNsYXNzZXMgIT0gMCkgJiYgKHRyYWl0c19pbnN0LmlzY3R5cGUoY29sLCBzZXRfLT5jbmNsYXNzZXMpID09IGZhbHNlKSkKLSAgICAgIHJldHVybiBzZXRfLT5pc25vdCA/IG5leHQgOiArK25leHQ7Ci0gICByZXR1cm4gc2V0Xy0+aXNub3QgPyArK25leHQgOiBuZXh0OwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yPgotY2xhc3MgcmVwZWF0ZXJfY291bnQKLXsKLSAgIHJlcGVhdGVyX2NvdW50Kiogc3RhY2s7Ci0gICByZXBlYXRlcl9jb3VudCogbmV4dDsKLSAgIGludCBzdGF0ZV9pZDsKLSAgIHN0ZDo6c2l6ZV90IGNvdW50OyAgICAgICAgLy8gdGhlIG51bWJlciBvZiBpdGVyYXRpb25zIHNvIGZhcgotICAgQmlkaUl0ZXJhdG9yIHN0YXJ0X3BvczsgICAvLyB3aGVyZSB0aGUgbGFzdCByZXBlYXQgc3RhcnRlZAotcHVibGljOgotICAgcmVwZWF0ZXJfY291bnQocmVwZWF0ZXJfY291bnQqKiBzKQotICAgewotICAgICAgc3RhY2sgPSBzOwotICAgICAgbmV4dCA9IDA7Ci0gICAgICBzdGF0ZV9pZCA9IC0xOwotICAgICAgY291bnQgPSAwOwotICAgfQotICAgcmVwZWF0ZXJfY291bnQoaW50IGksIHJlcGVhdGVyX2NvdW50KiogcywgQmlkaUl0ZXJhdG9yIHN0YXJ0KQotICAgICAgOiBzdGFydF9wb3Moc3RhcnQpCi0gICB7Ci0gICAgICBzdGF0ZV9pZCA9IGk7Ci0gICAgICBzdGFjayA9IHM7Ci0gICAgICBuZXh0ID0gKnN0YWNrOwotICAgICAgKnN0YWNrID0gdGhpczsKLSAgICAgIGlmKHN0YXRlX2lkID4gbmV4dC0+c3RhdGVfaWQpCi0gICAgICAgICBjb3VudCA9IDA7Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICByZXBlYXRlcl9jb3VudCogcCA9IG5leHQ7Ci0gICAgICAgICB3aGlsZShwICYmIChwLT5zdGF0ZV9pZCAhPSBzdGF0ZV9pZCkpCi0gICAgICAgICAgICBwID0gcC0+bmV4dDsKLSAgICAgICAgIGlmKHApCi0gICAgICAgICB7Ci0gICAgICAgICAgICBjb3VudCA9IHAtPmNvdW50OwotICAgICAgICAgICAgc3RhcnRfcG9zID0gcC0+c3RhcnRfcG9zOwotICAgICAgICAgfQotICAgICAgICAgZWxzZQotICAgICAgICAgICAgY291bnQgPSAwOwotICAgICAgfQotICAgfQotICAgfnJlcGVhdGVyX2NvdW50KCkKLSAgIHsKLSAgICAgIGlmKG5leHQpCi0gICAgICAgICAqc3RhY2sgPSBuZXh0OwotICAgfQotICAgc3RkOjpzaXplX3QgZ2V0X2NvdW50KCkgeyByZXR1cm4gY291bnQ7IH0KLSAgIGludCBnZXRfaWQoKSB7IHJldHVybiBzdGF0ZV9pZDsgfQotICAgc3RkOjpzaXplX3Qgb3BlcmF0b3IrKygpIHsgcmV0dXJuICsrY291bnQ7IH0KLSAgIGJvb2wgY2hlY2tfbnVsbF9yZXBlYXQoY29uc3QgQmlkaUl0ZXJhdG9yJiBwb3MsIHN0ZDo6c2l6ZV90IG1heCkKLSAgIHsKLSAgICAgIC8vIHRoaXMgaXMgY2FsbGVkIHdoZW4gd2UgYXJlIGFib3V0IHRvIHN0YXJ0IGEgbmV3IHJlcGVhdCwKLSAgICAgIC8vIGlmIHRoZSBsYXN0IG9uZSB3YXMgTlVMTCBtb3ZlIG91ciBjb3VudCB0byBtYXgsCi0gICAgICAvLyBvdGhlcndpc2Ugc2F2ZSB0aGUgY3VycmVudCBwb3NpdGlvbi4KLSAgICAgIGJvb2wgcmVzdWx0ID0gKGNvdW50ID09IDApID8gZmFsc2UgOiAocG9zID09IHN0YXJ0X3Bvcyk7Ci0gICAgICBpZihyZXN1bHQpCi0gICAgICAgICBjb3VudCA9IG1heDsKLSAgICAgIGVsc2UKLSAgICAgICAgIHN0YXJ0X3BvcyA9IHBvczsKLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gICB9Ci19OwotCi1zdHJ1Y3Qgc2F2ZWRfc3RhdGU7Ci0KLWVudW0gc2F2ZWRfc3RhdGVfdHlwZQotewotICAgc2F2ZWRfdHlwZV9lbmQgPSAwLAotICAgc2F2ZWRfdHlwZV9wYXJlbiA9IDEsCi0gICBzYXZlZF90eXBlX3JlY3Vyc2UgPSAyLAotICAgc2F2ZWRfdHlwZV9hc3NlcnRpb24gPSAzLAotICAgc2F2ZWRfc3RhdGVfYWx0ID0gNCwKLSAgIHNhdmVkX3N0YXRlX3JlcGVhdGVyX2NvdW50ID0gNSwKLSAgIHNhdmVkX3N0YXRlX2V4dHJhX2Jsb2NrID0gNiwKLSAgIHNhdmVkX3N0YXRlX2dyZWVkeV9zaW5nbGVfcmVwZWF0ID0gNywKLSAgIHNhdmVkX3N0YXRlX3JlcF9zbG93X2RvdCA9IDgsCi0gICBzYXZlZF9zdGF0ZV9yZXBfZmFzdF9kb3QgPSA5LAotICAgc2F2ZWRfc3RhdGVfcmVwX2NoYXIgPSAxMCwKLSAgIHNhdmVkX3N0YXRlX3JlcF9zaG9ydF9zZXQgPSAxMSwKLSAgIHNhdmVkX3N0YXRlX3JlcF9sb25nX3NldCA9IDEyLAotICAgc2F2ZWRfc3RhdGVfbm9uX2dyZWVkeV9sb25nX3JlcGVhdCA9IDEzLCAKLSAgIHNhdmVkX3N0YXRlX2NvdW50ID0gMTQKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSZXN1bHRzPgotc3RydWN0IHJlY3Vyc2lvbl9pbmZvCi17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIFJlc3VsdHM6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdmFsdWVfdHlwZTo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICBpbnQgaWR4OwotICAgY29uc3QgcmVfc3ludGF4X2Jhc2UqIHByZXR1cm5fYWRkcmVzczsKLSAgIFJlc3VsdHMgcmVzdWx0czsKLSAgIHJlcGVhdGVyX2NvdW50PGl0ZXJhdG9yPiogcmVwZWF0ZXJfc3RhY2s7Ci19OwotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQyNTEgNDIzMSkKLSMgIGlmIE5ETkJPT1NUX01TVkMgPCAxNjAwCi0jICAgICBwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDY2MCkKLSMgIGVuZGlmCi0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1jbGFzcyBwZXJsX21hdGNoZXIKLXsKLXB1YmxpYzoKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpjaGFyX3R5cGUgY2hhcl90eXBlOwotICAgdHlwZWRlZiBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz4gc2VsZl90eXBlOwotICAgdHlwZWRlZiBib29sIChzZWxmX3R5cGU6OiptYXRjaGVyX3Byb2NfdHlwZSkodm9pZCk7Ci0gICB0eXBlZGVmIHN0ZDo6c2l6ZV90IHRyYWl0c19zaXplX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGlzX2J5dGU8Y2hhcl90eXBlPjo6d2lkdGhfdHlwZSB3aWR0aF90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSByZWdleF9pdGVyYXRvcl90cmFpdHM8QmlkaUl0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlIGRpZmZlcmVuY2VfdHlwZTsKLSAgIHR5cGVkZWYgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvcj4gcmVzdWx0c190eXBlOwotCi0gICBwZXJsX21hdGNoZXIoQmlkaUl0ZXJhdG9yIGZpcnN0LCBCaWRpSXRlcmF0b3IgZW5kLCAKLSAgICAgIG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+JiB3aGF0LCAKLSAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJfdHlwZSwgdHJhaXRzPiYgZSwKLSAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmLAotICAgICAgQmlkaUl0ZXJhdG9yIGxfYmFzZSkKLSAgICAgIDogIG1fcmVzdWx0KHdoYXQpLCBiYXNlKGZpcnN0KSwgbGFzdChlbmQpLCAKLSAgICAgICAgIHBvc2l0aW9uKGZpcnN0KSwgYmFja3N0b3AobF9iYXNlKSwgcmUoZSksIHRyYWl0c19pbnN0KGUuZ2V0X3RyYWl0cygpKSwgCi0gICAgICAgICBtX2luZGVwZW5kZW50KGZhbHNlKSwgbmV4dF9jb3VudCgmcmVwX29iaiksIHJlcF9vYmooJm5leHRfY291bnQpCi0gICB7Ci0gICAgICBjb25zdHJ1Y3RfaW5pdChlLCBmKTsKLSAgIH0KLQotICAgYm9vbCBtYXRjaCgpOwotICAgYm9vbCBmaW5kKCk7Ci0KLSAgIHZvaWQgc2V0ZihtYXRjaF9mbGFnX3R5cGUgZikKLSAgIHsgbV9tYXRjaF9mbGFncyB8PSBmOyB9Ci0gICB2b2lkIHVuc2V0ZihtYXRjaF9mbGFnX3R5cGUgZikKLSAgIHsgbV9tYXRjaF9mbGFncyAmPSB+ZjsgfQotCi1wcml2YXRlOgotICAgdm9pZCBjb25zdHJ1Y3RfaW5pdChjb25zdCBiYXNpY19yZWdleDxjaGFyX3R5cGUsIHRyYWl0cz4mIGUsIG1hdGNoX2ZsYWdfdHlwZSBmKTsKLQotICAgYm9vbCBmaW5kX2ltcCgpOwotICAgYm9vbCBtYXRjaF9pbXAoKTsKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9IQVNfTVNfU1RBQ0tfR1VBUkQKLSAgIHR5cGVkZWYgYm9vbCAocGVybF9tYXRjaGVyOjoqcHJvdGVjdGVkX3Byb2NfdHlwZSkoKTsKLSAgIGJvb2wgcHJvdGVjdGVkX2NhbGwocHJvdGVjdGVkX3Byb2NfdHlwZSk7Ci0jZW5kaWYKLSAgIHZvaWQgZXN0aW1hdGVfbWF4X3N0YXRlX2NvdW50KHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcqKTsKLSAgIHZvaWQgZXN0aW1hdGVfbWF4X3N0YXRlX2NvdW50KHZvaWQqKTsKLSAgIGJvb2wgbWF0Y2hfcHJlZml4KCk7Ci0gICBib29sIG1hdGNoX2FsbF9zdGF0ZXMoKTsKLQotICAgLy8gbWF0Y2ggcHJvY3MsIHN0b3JlZCBpbiBzX21hdGNoX3Z0YWJsZToKLSAgIGJvb2wgbWF0Y2hfc3RhcnRtYXJrKCk7Ci0gICBib29sIG1hdGNoX2VuZG1hcmsoKTsKLSAgIGJvb2wgbWF0Y2hfbGl0ZXJhbCgpOwotICAgYm9vbCBtYXRjaF9zdGFydF9saW5lKCk7Ci0gICBib29sIG1hdGNoX2VuZF9saW5lKCk7Ci0gICBib29sIG1hdGNoX3dpbGQoKTsKLSAgIGJvb2wgbWF0Y2hfbWF0Y2goKTsKLSAgIGJvb2wgbWF0Y2hfd29yZF9ib3VuZGFyeSgpOwotICAgYm9vbCBtYXRjaF93aXRoaW5fd29yZCgpOwotICAgYm9vbCBtYXRjaF93b3JkX3N0YXJ0KCk7Ci0gICBib29sIG1hdGNoX3dvcmRfZW5kKCk7Ci0gICBib29sIG1hdGNoX2J1ZmZlcl9zdGFydCgpOwotICAgYm9vbCBtYXRjaF9idWZmZXJfZW5kKCk7Ci0gICBib29sIG1hdGNoX2JhY2tyZWYoKTsKLSAgIGJvb2wgbWF0Y2hfbG9uZ19zZXQoKTsKLSAgIGJvb2wgbWF0Y2hfc2V0KCk7Ci0gICBib29sIG1hdGNoX2p1bXAoKTsKLSAgIGJvb2wgbWF0Y2hfYWx0KCk7Ci0gICBib29sIG1hdGNoX3JlcCgpOwotICAgYm9vbCBtYXRjaF9jb21iaW5pbmcoKTsKLSAgIGJvb2wgbWF0Y2hfc29mdF9idWZmZXJfZW5kKCk7Ci0gICBib29sIG1hdGNoX3Jlc3RhcnRfY29udGludWUoKTsKLSAgIGJvb2wgbWF0Y2hfbG9uZ19zZXRfcmVwZWF0KCk7Ci0gICBib29sIG1hdGNoX3NldF9yZXBlYXQoKTsKLSAgIGJvb2wgbWF0Y2hfY2hhcl9yZXBlYXQoKTsKLSAgIGJvb2wgbWF0Y2hfZG90X3JlcGVhdF9mYXN0KCk7Ci0gICBib29sIG1hdGNoX2RvdF9yZXBlYXRfc2xvdygpOwotICAgYm9vbCBtYXRjaF9kb3RfcmVwZWF0X2Rpc3BhdGNoKCkKLSAgIHsKLSAgICAgIHJldHVybiA6Om5kbmJvb3N0Ojppc19yYW5kb21fYWNjZXNzX2l0ZXJhdG9yPEJpZGlJdGVyYXRvcj46OnZhbHVlID8gbWF0Y2hfZG90X3JlcGVhdF9mYXN0KCkgOiBtYXRjaF9kb3RfcmVwZWF0X3Nsb3coKTsKLSAgIH0KLSAgIGJvb2wgbWF0Y2hfYmFja3N0ZXAoKTsKLSAgIGJvb2wgbWF0Y2hfYXNzZXJ0X2JhY2tyZWYoKTsKLSAgIGJvb2wgbWF0Y2hfdG9nZ2xlX2Nhc2UoKTsKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9SRUNVUlNJVkUKLSAgIGJvb2wgYmFja3RyYWNrX3RpbGxfbWF0Y2goc3RkOjpzaXplX3QgY291bnQpOwotI2VuZGlmCi0gICBib29sIG1hdGNoX3JlY3Vyc2lvbigpOwotCi0gICAvLyBmaW5kIHByb2NzIHN0b3JlZCBpbiBzX2ZpbmRfdnRhYmxlOgotICAgYm9vbCBmaW5kX3Jlc3RhcnRfYW55KCk7Ci0gICBib29sIGZpbmRfcmVzdGFydF93b3JkKCk7Ci0gICBib29sIGZpbmRfcmVzdGFydF9saW5lKCk7Ci0gICBib29sIGZpbmRfcmVzdGFydF9idWYoKTsKLSAgIGJvb2wgZmluZF9yZXN0YXJ0X2xpdCgpOwotCi1wcml2YXRlOgotICAgLy8gZmluYWwgcmVzdWx0IHN0cnVjdHVyZSB0byBiZSBmaWxsZWQgaW46Ci0gICBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yPiYgbV9yZXN1bHQ7Ci0gICAvLyB0ZW1wb3JhcnkgcmVzdWx0IGZvciBQT1NJWCBtYXRjaGVzOgotICAgc2NvcGVkX3B0cjxtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yPiA+IG1fdGVtcF9tYXRjaDsKLSAgIC8vIHBvaW50ZXIgdG8gYWN0dWFsIHJlc3VsdCBzdHJ1Y3R1cmUgdG8gZmlsbCBpbjoKLSAgIG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+KiBtX3ByZXN1bHQ7Ci0gICAvLyBzdGFydCBvZiBzZXF1ZW5jZSBiZWluZyBzZWFyY2hlZDoKLSAgIEJpZGlJdGVyYXRvciBiYXNlOwotICAgLy8gZW5kIG9mIHNlcXVlbmNlIGJlaW5nIHNlYXJjaGVkOgotICAgQmlkaUl0ZXJhdG9yIGxhc3Q7IAotICAgLy8gY3VycmVudCBjaGFyYWN0ZXIgYmVpbmcgZXhhbWluZWQ6Ci0gICBCaWRpSXRlcmF0b3IgcG9zaXRpb247Ci0gICAvLyB3aGVyZSB0byByZXN0YXJ0IG5leHQgc2VhcmNoIGFmdGVyIGZhaWxlZCBtYXRjaCBhdHRlbXB0OgotICAgQmlkaUl0ZXJhdG9yIHJlc3RhcnQ7Ci0gICAvLyB3aGVyZSB0aGUgY3VycmVudCBzZWFyY2ggc3RhcnRlZCBmcm9tLCBhY3RzIGFzIGJhc2UgZm9yICRgIGR1cmluZyBncmVwOgotICAgQmlkaUl0ZXJhdG9yIHNlYXJjaF9iYXNlOwotICAgLy8gaG93IGZhciB3ZSBjYW4gZ28gYmFjayB3aGVuIG1hdGNoaW5nIGxvb2tiZWhpbmQ6Ci0gICBCaWRpSXRlcmF0b3IgYmFja3N0b3A7Ci0gICAvLyB0aGUgZXhwcmVzc2lvbiBiZWluZyBleGFtaW5lZDoKLSAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJfdHlwZSwgdHJhaXRzPiYgcmU7Ci0gICAvLyB0aGUgZXhwcmVzc2lvbidzIHRyYWl0cyBjbGFzczoKLSAgIGNvbnN0IDo6bmRuYm9vc3Q6OnJlZ2V4X3RyYWl0c193cmFwcGVyPHRyYWl0cz4mIHRyYWl0c19pbnN0OwotICAgLy8gdGhlIG5leHQgc3RhdGUgaW4gdGhlIG1hY2hpbmUgYmVpbmcgbWF0Y2hlZDoKLSAgIGNvbnN0IHJlX3N5bnRheF9iYXNlKiBwc3RhdGU7Ci0gICAvLyBtYXRjaGluZyBmbGFncyBpbiB1c2U6Ci0gICBtYXRjaF9mbGFnX3R5cGUgbV9tYXRjaF9mbGFnczsKLSAgIC8vIGhvdyBtYW55IHN0YXRlcyB3ZSBoYXZlIGV4YW1pbmVkIHNvIGZhcjoKLSAgIHN0ZDo6cHRyZGlmZl90IHN0YXRlX2NvdW50OwotICAgLy8gbWF4IG51bWJlciBvZiBzdGF0ZXMgdG8gZXhhbWluZSBiZWZvcmUgZ2l2aW5nIHVwOgotICAgc3RkOjpwdHJkaWZmX3QgbWF4X3N0YXRlX2NvdW50OwotICAgLy8gd2hldGhlciB3ZSBzaG91bGQgaWdub3JlIGNhc2Ugb3Igbm90OgotICAgYm9vbCBpY2FzZTsKLSAgIC8vIHNldCB0byB0cnVlIHdoZW4gKHBvc2l0aW9uID09IGxhc3QpLCBpbmRpY2F0ZXMgdGhhdCB3ZSBtYXkgaGF2ZSBhIHBhcnRpYWwgbWF0Y2g6Ci0gICBib29sIG1faGFzX3BhcnRpYWxfbWF0Y2g7Ci0gICAvLyBzZXQgdG8gdHJ1ZSB3aGVuZXZlciB3ZSBnZXQgYSBtYXRjaDoKLSAgIGJvb2wgbV9oYXNfZm91bmRfbWF0Y2g7Ci0gICAvLyBzZXQgdG8gdHJ1ZSB3aGVuZXZlciB3ZSdyZSBpbnNpZGUgYW4gaW5kZXBlbmRlbnQgc3ViLWV4cHJlc3Npb246Ci0gICBib29sIG1faW5kZXBlbmRlbnQ7Ci0gICAvLyB0aGUgY3VycmVudCByZXBlYXQgYmVpbmcgZXhhbWluZWQ6Ci0gICByZXBlYXRlcl9jb3VudDxCaWRpSXRlcmF0b3I+KiBuZXh0X2NvdW50OwotICAgLy8gdGhlIGZpcnN0IHJlcGVhdCBiZWluZyBleGFtaW5lZCAodG9wIG9mIGxpbmtlZCBsaXN0KToKLSAgIHJlcGVhdGVyX2NvdW50PEJpZGlJdGVyYXRvcj4gcmVwX29iajsKLSAgIC8vIHRoZSBtYXNrIHRvIHBhc3Mgd2hlbiBtYXRjaGluZyB3b3JkIGJvdW5kYXJpZXM6Ci0gICB0eXBlbmFtZSB0cmFpdHM6OmNoYXJfY2xhc3NfdHlwZSBtX3dvcmRfbWFzazsKLSAgIC8vIHRoZSBiaXRtYXNrIHRvIHVzZSB3aGVuIGRldGVybWluaW5nIHdoZXRoZXIgYSBtYXRjaF9hbnkgbWF0Y2hlcyBhIG5ld2xpbmUgb3Igbm90OgotICAgdW5zaWduZWQgY2hhciBtYXRjaF9hbnlfbWFzazsKLSAgIC8vIHJlY3Vyc2lvbiBpbmZvcm1hdGlvbjoKLSAgIHN0ZDo6dmVjdG9yPHJlY3Vyc2lvbl9pbmZvPHJlc3VsdHNfdHlwZT4gPiByZWN1cnNpb25fc3RhY2s7Ci0KLSNpZmRlZiBORE5CT09TVF9SRUdFWF9OT05fUkVDVVJTSVZFCi0gICAvLwotICAgLy8gYWRkaXRpb25hbCBtZW1iZXJzIGZvciBub24tcmVjdXJzaXZlIHZlcnNpb246Ci0gICAvLwotICAgdHlwZWRlZiBib29sIChzZWxmX3R5cGU6Oip1bndpbmRfcHJvY190eXBlKShib29sKTsKLQotICAgdm9pZCBleHRlbmRfc3RhY2soKTsKLSAgIGJvb2wgdW53aW5kKGJvb2wpOwotICAgYm9vbCB1bndpbmRfZW5kKGJvb2wpOwotICAgYm9vbCB1bndpbmRfcGFyZW4oYm9vbCk7Ci0gICBib29sIHVud2luZF9yZWN1cnNpb25fc3RvcHBlcihib29sKTsKLSAgIGJvb2wgdW53aW5kX2Fzc2VydGlvbihib29sKTsKLSAgIGJvb2wgdW53aW5kX2FsdChib29sKTsKLSAgIGJvb2wgdW53aW5kX3JlcGVhdGVyX2NvdW50ZXIoYm9vbCk7Ci0gICBib29sIHVud2luZF9leHRyYV9ibG9jayhib29sKTsKLSAgIGJvb2wgdW53aW5kX2dyZWVkeV9zaW5nbGVfcmVwZWF0KGJvb2wpOwotICAgYm9vbCB1bndpbmRfc2xvd19kb3RfcmVwZWF0KGJvb2wpOwotICAgYm9vbCB1bndpbmRfZmFzdF9kb3RfcmVwZWF0KGJvb2wpOwotICAgYm9vbCB1bndpbmRfY2hhcl9yZXBlYXQoYm9vbCk7Ci0gICBib29sIHVud2luZF9zaG9ydF9zZXRfcmVwZWF0KGJvb2wpOwotICAgYm9vbCB1bndpbmRfbG9uZ19zZXRfcmVwZWF0KGJvb2wpOwotICAgYm9vbCB1bndpbmRfbm9uX2dyZWVkeV9yZXBlYXQoYm9vbCk7Ci0gICBib29sIHVud2luZF9yZWN1cnNpb24oYm9vbCk7Ci0gICBib29sIHVud2luZF9yZWN1cnNpb25fcG9wKGJvb2wpOwotICAgdm9pZCBkZXN0cm95X3NpbmdsZV9yZXBlYXQoKTsKLSAgIHZvaWQgcHVzaF9tYXRjaGVkX3BhcmVuKGludCBpbmRleCwgY29uc3Qgc3ViX21hdGNoPEJpZGlJdGVyYXRvcj4mIHN1Yik7Ci0gICB2b2lkIHB1c2hfcmVjdXJzaW9uX3N0b3BwZXIoKTsKLSAgIHZvaWQgcHVzaF9hc3NlcnRpb24oY29uc3QgcmVfc3ludGF4X2Jhc2UqIHBzLCBib29sIHBvc2l0aXZlKTsKLSAgIHZvaWQgcHVzaF9hbHQoY29uc3QgcmVfc3ludGF4X2Jhc2UqIHBzKTsKLSAgIHZvaWQgcHVzaF9yZXBlYXRlcl9jb3VudChpbnQgaSwgcmVwZWF0ZXJfY291bnQ8QmlkaUl0ZXJhdG9yPioqIHMpOwotICAgdm9pZCBwdXNoX3NpbmdsZV9yZXBlYXQoc3RkOjpzaXplX3QgYywgY29uc3QgcmVfcmVwZWF0KiByLCBCaWRpSXRlcmF0b3IgbGFzdF9wb3NpdGlvbiwgaW50IHN0YXRlX2lkKTsKLSAgIHZvaWQgcHVzaF9ub25fZ3JlZWR5X3JlcGVhdChjb25zdCByZV9zeW50YXhfYmFzZSogcHMpOwotICAgdm9pZCBwdXNoX3JlY3Vyc2lvbihpbnQgaWR4LCBjb25zdCByZV9zeW50YXhfYmFzZSogcCwgcmVzdWx0c190eXBlKiBwcmVzdWx0cyk7Ci0gICB2b2lkIHB1c2hfcmVjdXJzaW9uX3BvcCgpOwotCi0gICAvLyBwb2ludGVyIHRvIGJhc2Ugb2Ygc3RhY2s6Ci0gICBzYXZlZF9zdGF0ZSogbV9zdGFja19iYXNlOwotICAgLy8gcG9pbnRlciB0byBjdXJyZW50IHN0YWNrIHBvc2l0aW9uOgotICAgc2F2ZWRfc3RhdGUqIG1fYmFja3VwX3N0YXRlOwotICAgLy8gZGV0ZXJtaW5lcyB3aGF0IHZhbHVlIHRvIHJldHVybiB3aGVuIHVud2luZGluZyBmcm9tIHJlY3Vyc2lvbiwKLSAgIC8vIGFsbG93cyBmb3IgbWl4ZWQgcmVjdXJzaXZlL25vbi1yZWN1cnNpdmUgYWxnb3JpdGhtOgotICAgYm9vbCBtX3JlY3Vyc2l2ZV9yZXN1bHQ7Ci0gICAvLyBob3cgbWFueSBtZW1vcnkgYmxvY2tzIGhhdmUgd2UgdXNlZCB1cD86Ci0gICB1bnNpZ25lZCB1c2VkX2Jsb2NrX2NvdW50OwotI2VuZGlmCi0KLSAgIC8vIHRoZXNlIG9wZXJhdGlvbnMgYXJlbid0IGFsbG93ZWQsIHNvIGFyZSBkZWNsYXJlZCBwcml2YXRlLAotICAgLy8gYm9kaWVzIGFyZSBwcm92aWRlZCB0byBrZWVwIGV4cGxpY2l0LWluc3RhbnRpYXRpb24gcmVxdWVzdHMgaGFwcHk6Ci0gICBwZXJsX21hdGNoZXImIG9wZXJhdG9yPShjb25zdCBwZXJsX21hdGNoZXImKQotICAgewotICAgICAgcmV0dXJuICp0aGlzOwotICAgfQotICAgcGVybF9tYXRjaGVyKGNvbnN0IHBlcmxfbWF0Y2hlciYgdGhhdCkKLSAgICAgIDogbV9yZXN1bHQodGhhdC5tX3Jlc3VsdCksIHJlKHRoYXQucmUpLCB0cmFpdHNfaW5zdCh0aGF0LnRyYWl0c19pbnN0KSwgcmVwX29iaigwKSB7fQotfTsKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgcmVfZGV0YWlsCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0vLwotLy8gaW5jbHVkZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgcGVybF9tYXRjaGVyOgotLy8KLSNpZmRlZiBORE5CT09TVF9SRUdFWF9SRUNVUlNJVkUKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9wZXJsX21hdGNoZXJfcmVjdXJzaXZlLmhwcD4KLSNlbHNlCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvcGVybF9tYXRjaGVyX25vbl9yZWN1cnNpdmUuaHBwPgotI2VuZGlmCi0vLyB0aGlzIG9uZSBoYXMgdG8gYmUgbGFzdDoKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9wZXJsX21hdGNoZXJfY29tbW9uLmhwcD4KLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcGVybF9tYXRjaGVyX2NvbW1vbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3BlcmxfbWF0Y2hlcl9jb21tb24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDVmZWQwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcGVybF9tYXRjaGVyX2NvbW1vbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OTYgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICBwZXJsX21hdGNoZXJfY29tbW9uLmNwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogRGVmaW5pdGlvbnMgb2YgcGVybF9tYXRjaGVyIG1lbWJlciBmdW5jdGlvbnMgdGhhdCBhcmUgCi0gICogICAgICAgICAgICAgICAgY29tbW9uIHRvIGJvdGggdGhlIHJlY3Vyc2l2ZSBhbmQgbm9uLXJlY3Vyc2l2ZSB2ZXJzaW9ucy4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9QRVJMX01BVENIRVJfQ09NTU9OX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9WNF9QRVJMX01BVENIRVJfQ09NTU9OX0hQUAotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNpZmRlZiBfX0JPUkxBTkRDX18KLSMgIHByYWdtYSBvcHRpb24gcHVzaCAtdy04MDA4IC13LTgwNjYKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jICBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0ODAwKQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLW5hbWVzcGFjZSByZV9kZXRhaWx7Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotdm9pZCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OmNvbnN0cnVjdF9pbml0KGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJfdHlwZSwgdHJhaXRzPiYgZSwgbWF0Y2hfZmxhZ190eXBlIGYpCi17IAotICAgdHlwZWRlZiB0eXBlbmFtZSByZWdleF9pdGVyYXRvcl90cmFpdHM8QmlkaUl0ZXJhdG9yPjo6aXRlcmF0b3JfY2F0ZWdvcnkgY2F0ZWdvcnk7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGJhc2ljX3JlZ2V4PGNoYXJfdHlwZSwgdHJhaXRzPjo6ZmxhZ190eXBlIGV4cHJlc3Npb25fZmxhZ190eXBlOwotICAgCi0gICBpZihlLmVtcHR5KCkpCi0gICB7Ci0gICAgICAvLyBwcmVjb25kaXRpb24gZmFpbHVyZTogZSBpcyBub3QgYSB2YWxpZCByZWdleC4KLSAgICAgIHN0ZDo6aW52YWxpZF9hcmd1bWVudCBleCgiSW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb24gb2JqZWN0Iik7Ci0gICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGV4KTsKLSAgIH0KLSAgIHBzdGF0ZSA9IDA7Ci0gICBtX21hdGNoX2ZsYWdzID0gZjsKLSAgIGVzdGltYXRlX21heF9zdGF0ZV9jb3VudChzdGF0aWNfY2FzdDxjYXRlZ29yeSo+KDApKTsKLSAgIGV4cHJlc3Npb25fZmxhZ190eXBlIHJlX2YgPSByZS5mbGFncygpOwotICAgaWNhc2UgPSByZV9mICYgcmVnZXhfY29uc3RhbnRzOjppY2FzZTsKLSAgIGlmKCEobV9tYXRjaF9mbGFncyAmIChtYXRjaF9wZXJsfG1hdGNoX3Bvc2l4KSkpCi0gICB7Ci0gICAgICBpZigocmVfZiAmIChyZWdiYXNlOjptYWluX29wdGlvbl90eXBlfHJlZ2Jhc2U6Om5vX3BlcmxfZXgpKSA9PSAwKQotICAgICAgICAgbV9tYXRjaF9mbGFncyB8PSBtYXRjaF9wZXJsOwotICAgICAgZWxzZSBpZigocmVfZiAmIChyZWdiYXNlOjptYWluX29wdGlvbl90eXBlfHJlZ2Jhc2U6OmVtYWNzX2V4KSkgPT0gKHJlZ2Jhc2U6OmJhc2ljX3N5bnRheF9ncm91cHxyZWdiYXNlOjplbWFjc19leCkpCi0gICAgICAgICBtX21hdGNoX2ZsYWdzIHw9IG1hdGNoX3Blcmw7Ci0gICAgICBlbHNlIGlmKChyZV9mICYgKHJlZ2Jhc2U6Om1haW5fb3B0aW9uX3R5cGV8cmVnYmFzZTo6bGl0ZXJhbCkpID09IChyZWdiYXNlOjpsaXRlcmFsKSkKLSAgICAgICAgIG1fbWF0Y2hfZmxhZ3MgfD0gbWF0Y2hfcGVybDsKLSAgICAgIGVsc2UKLSAgICAgICAgIG1fbWF0Y2hfZmxhZ3MgfD0gbWF0Y2hfcG9zaXg7Ci0gICB9Ci0gICBpZihtX21hdGNoX2ZsYWdzICYgbWF0Y2hfcG9zaXgpCi0gICB7Ci0gICAgICBtX3RlbXBfbWF0Y2gucmVzZXQobmV3IG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+KCkpOwotICAgICAgbV9wcmVzdWx0ID0gbV90ZW1wX21hdGNoLmdldCgpOwotICAgfQotICAgZWxzZQotICAgICAgbV9wcmVzdWx0ID0gJm1fcmVzdWx0OwotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX05PTl9SRUNVUlNJVkUKLSAgIG1fc3RhY2tfYmFzZSA9IDA7Ci0gICBtX2JhY2t1cF9zdGF0ZSA9IDA7Ci0jZW5kaWYKLSAgIC8vIGZpbmQgdGhlIHZhbHVlIHRvIHVzZSBmb3IgbWF0Y2hpbmcgd29yZCBib3VuZGFyaWVzOgotICAgbV93b3JkX21hc2sgPSByZS5nZXRfZGF0YSgpLm1fd29yZF9tYXNrOyAKLSAgIC8vIGZpbmQgYml0bWFzayB0byB1c2UgZm9yIG1hdGNoaW5nICcuJzoKLSAgIG1hdGNoX2FueV9tYXNrID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oKGYgJiBtYXRjaF9ub3RfZG90X25ld2xpbmUpID8gcmVfZGV0YWlsOjp0ZXN0X25vdF9uZXdsaW5lIDogcmVfZGV0YWlsOjp0ZXN0X25ld2xpbmUpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLXZvaWQgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojplc3RpbWF0ZV9tYXhfc3RhdGVfY291bnQoc3RkOjpyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZyopCi17Ci0gICAvLwotICAgLy8gSG93IG1hbnkgc3RhdGVzIHNob3VsZCB3ZSBhbGxvdyBvdXIgbWFjaGluZSB0byB2aXNpdCBiZWZvcmUgZ2l2aW5nIHVwPwotICAgLy8gVGhpcyBpcyBhIGhldXJpc3RpYzogaXQgdGFrZXMgdGhlIGdyZWF0ZXIgb2YgTyhOXjIpIGFuZCBPKE5TXjIpCi0gICAvLyB3aGVyZSBOIGlzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZywgYW5kIFMgaXMgdGhlIG51bWJlciBvZiBzdGF0ZXMKLSAgIC8vIGluIHRoZSBtYWNoaW5lLiAgSXQncyB0ZW1wdGluZyB0byB1cCB0aGlzIHRvIE8oTl4yUykgb3IgZXZlbiBPKE5eMlNeMikKLSAgIC8vIGJ1dCB0aGVzZSB0YWtlIHVucmVhc29uYWJseSBhbW91bnRzIG9mIHRpbWUgdG8gYmFsZSBvdXQgaW4gcGF0aG9sb2dpY2FsCi0gICAvLyBjYXNlcy4KLSAgIC8vCi0gICAvLyBDYWxjdWxhdGUgTlNeMiBmaXJzdDoKLSAgIC8vCi0gICBzdGF0aWMgY29uc3Qgc3RkOjpwdHJkaWZmX3QgayA9IDEwMDAwMDsKLSAgIHN0ZDo6cHRyZGlmZl90IGRpc3QgPSBuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZShiYXNlLCBsYXN0KTsKLSAgIGlmKGRpc3QgPT0gMCkKLSAgICAgIGRpc3QgPSAxOwotICAgc3RkOjpwdHJkaWZmX3Qgc3RhdGVzID0gcmUuc2l6ZSgpOwotICAgaWYoc3RhdGVzID09IDApCi0gICAgICBzdGF0ZXMgPSAxOwotICAgc3RhdGVzICo9IHN0YXRlczsKLSAgIGlmKChzdGQ6Om51bWVyaWNfbGltaXRzPHN0ZDo6cHRyZGlmZl90Pjo6bWF4KSgpIC8gZGlzdCA8IHN0YXRlcykKLSAgIHsKLSAgICAgIG1heF9zdGF0ZV9jb3VudCA9IChzdGQ6Om1pbikoKHN0ZDo6cHRyZGlmZl90KU5ETkJPT1NUX1JFR0VYX01BWF9TVEFURV9DT1VOVCwgKHN0ZDo6bnVtZXJpY19saW1pdHM8c3RkOjpwdHJkaWZmX3Q+OjptYXgpKCkgLSAyKTsKLSAgICAgIHJldHVybjsKLSAgIH0KLSAgIHN0YXRlcyAqPSBkaXN0OwotICAgaWYoKHN0ZDo6bnVtZXJpY19saW1pdHM8c3RkOjpwdHJkaWZmX3Q+OjptYXgpKCkgLSBrIDwgc3RhdGVzKQotICAgewotICAgICAgbWF4X3N0YXRlX2NvdW50ID0gKHN0ZDo6bWluKSgoc3RkOjpwdHJkaWZmX3QpTkROQk9PU1RfUkVHRVhfTUFYX1NUQVRFX0NPVU5ULCAoc3RkOjpudW1lcmljX2xpbWl0czxzdGQ6OnB0cmRpZmZfdD46Om1heCkoKSAtIDIpOwotICAgICAgcmV0dXJuOwotICAgfQotICAgc3RhdGVzICs9IGs7Ci0KLSAgIG1heF9zdGF0ZV9jb3VudCA9IHN0YXRlczsKLQotICAgLy8KLSAgIC8vIE5vdyBjYWxjdWxhdGUgTl4yOgotICAgLy8KLSAgIHN0YXRlcyA9IGRpc3Q7Ci0gICBpZigoc3RkOjpudW1lcmljX2xpbWl0czxzdGQ6OnB0cmRpZmZfdD46Om1heCkoKSAvIGRpc3QgPCBzdGF0ZXMpCi0gICB7Ci0gICAgICBtYXhfc3RhdGVfY291bnQgPSAoc3RkOjptaW4pKChzdGQ6OnB0cmRpZmZfdClORE5CT09TVF9SRUdFWF9NQVhfU1RBVEVfQ09VTlQsIChzdGQ6Om51bWVyaWNfbGltaXRzPHN0ZDo6cHRyZGlmZl90Pjo6bWF4KSgpIC0gMik7Ci0gICAgICByZXR1cm47Ci0gICB9Ci0gICBzdGF0ZXMgKj0gZGlzdDsKLSAgIGlmKChzdGQ6Om51bWVyaWNfbGltaXRzPHN0ZDo6cHRyZGlmZl90Pjo6bWF4KSgpIC0gayA8IHN0YXRlcykKLSAgIHsKLSAgICAgIG1heF9zdGF0ZV9jb3VudCA9IChzdGQ6Om1pbikoKHN0ZDo6cHRyZGlmZl90KU5ETkJPT1NUX1JFR0VYX01BWF9TVEFURV9DT1VOVCwgKHN0ZDo6bnVtZXJpY19saW1pdHM8c3RkOjpwdHJkaWZmX3Q+OjptYXgpKCkgLSAyKTsKLSAgICAgIHJldHVybjsKLSAgIH0KLSAgIHN0YXRlcyArPSBrOwotICAgLy8KLSAgIC8vIE5eMiBjYW4gYmUgYSB2ZXJ5IGxhcmdlIG51bWJlciBpbmRlZWQsIHRvIHByZXZlbnQgdGhpbmdzIGdldHRpbmcgb3V0Ci0gICAvLyBvZiBjb250cm9sLCBjYXAgdGhlIG1heCBzdGF0ZXM6Ci0gICAvLwotICAgaWYoc3RhdGVzID4gTkROQk9PU1RfUkVHRVhfTUFYX1NUQVRFX0NPVU5UKQotICAgICAgc3RhdGVzID0gTkROQk9PU1RfUkVHRVhfTUFYX1NUQVRFX0NPVU5UOwotICAgLy8KLSAgIC8vIElmICh0aGUgcG9zc2libHkgY2FwcGVkKSBOXjIgaXMgbGFyZ2VyIHRoYW4gb3VyIGZpcnN0IGVzdGltYXRlLAotICAgLy8gdXNlIHRoaXMgaW5zdGVhZDoKLSAgIC8vCi0gICBpZihzdGF0ZXMgPiBtYXhfc3RhdGVfY291bnQpCi0gICAgICBtYXhfc3RhdGVfY291bnQgPSBzdGF0ZXM7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotaW5saW5lIHZvaWQgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojplc3RpbWF0ZV9tYXhfc3RhdGVfY291bnQodm9pZCopCi17Ci0gICAvLyB3ZSBkb24ndCBrbm93IGhvdyBsb25nIHRoZSBzZXF1ZW5jZSBpczoKLSAgIG1heF9zdGF0ZV9jb3VudCA9IE5ETkJPT1NUX1JFR0VYX01BWF9TVEFURV9DT1VOVDsKLX0KLQotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX0hBU19NU19TVEFDS19HVUFSRAotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1pbmxpbmUgYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnByb3RlY3RlZF9jYWxsKAotICAgcHJvdGVjdGVkX3Byb2NfdHlwZSBwcm9jKQotewotICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjb25jcmV0ZV9wcm90ZWN0ZWRfY2FsbAotICAgICAgPHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPiA+Ci0gICAgICBvYmoodGhpcywgcHJvYyk7Ci0gICByZXR1cm4gb2JqLmV4ZWN1dGUoKTsKLQotfQotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotaW5saW5lIGJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaCgpCi17Ci0jaWZkZWYgTkROQk9PU1RfUkVHRVhfSEFTX01TX1NUQUNLX0dVQVJECi0gICByZXR1cm4gcHJvdGVjdGVkX2NhbGwoJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfaW1wKTsKLSNlbHNlCi0gICByZXR1cm4gbWF0Y2hfaW1wKCk7Ci0jZW5kaWYKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfaW1wKCkKLXsKLSAgIC8vIGluaXRpYWxpc2Ugb3VyIHN0YWNrIGlmIHdlIGFyZSBub24tcmVjdXJzaXZlOgotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX05PTl9SRUNVUlNJVkUKLSAgIHNhdmVfc3RhdGVfaW5pdCBpbml0KCZtX3N0YWNrX2Jhc2UsICZtX2JhY2t1cF9zdGF0ZSk7Ci0gICB1c2VkX2Jsb2NrX2NvdW50ID0gTkROQk9PU1RfUkVHRVhfTUFYX0JMT0NLUzsKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19FWENFUFRJT05TKQotICAgdHJ5ewotI2VuZGlmCi0jZW5kaWYKLQotICAgLy8gcmVzZXQgb3VyIHN0YXRlIG1hY2hpbmU6Ci0gICBwb3NpdGlvbiA9IGJhc2U7Ci0gICBzZWFyY2hfYmFzZSA9IGJhc2U7Ci0gICBzdGF0ZV9jb3VudCA9IDA7Ci0gICBtX21hdGNoX2ZsYWdzIHw9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYWxsOwotICAgbV9wcmVzdWx0LT5zZXRfc2l6ZSgobV9tYXRjaF9mbGFncyAmIG1hdGNoX25vc3VicykgPyAxIDogcmUubWFya19jb3VudCgpLCBzZWFyY2hfYmFzZSwgbGFzdCk7Ci0gICBtX3ByZXN1bHQtPnNldF9iYXNlKGJhc2UpOwotICAgbV9wcmVzdWx0LT5zZXRfbmFtZWRfc3Vicyh0aGlzLT5yZS5nZXRfbmFtZWRfc3VicygpKTsKLSAgIGlmKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9wb3NpeCkKLSAgICAgIG1fcmVzdWx0ID0gKm1fcHJlc3VsdDsKLSAgIHZlcmlmeV9vcHRpb25zKHJlLmZsYWdzKCksIG1fbWF0Y2hfZmxhZ3MpOwotICAgaWYoMCA9PSBtYXRjaF9wcmVmaXgoKSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIHJldHVybiAobV9yZXN1bHRbMF0uc2Vjb25kID09IGxhc3QpICYmIChtX3Jlc3VsdFswXS5maXJzdCA9PSBiYXNlKTsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfUkVHRVhfTk9OX1JFQ1VSU0lWRSkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fRVhDRVBUSU9OUykKLSAgIH0KLSAgIGNhdGNoKC4uLikKLSAgIHsKLSAgICAgIC8vIHVud2luZCBhbGwgcHVzaGVkIHN0YXRlcywgYXBhcnQgZnJvbSBhbnl0aGluZyBlbHNlIHRoaXMKLSAgICAgIC8vIGVuc3VyZXMgdGhhdCBhbGwgdGhlIHN0YXRlcyBhcmUgY29ycmVjdGx5IGRlc3RydWN0ZWQKLSAgICAgIC8vIG5vdCBqdXN0IHRoZSBtZW1vcnkgZnJlZWQuCi0gICAgICB3aGlsZSh1bndpbmQodHJ1ZSkpe30KLSAgICAgIHRocm93OwotICAgfQotI2VuZGlmCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotaW5saW5lIGJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjpmaW5kKCkKLXsKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9IQVNfTVNfU1RBQ0tfR1VBUkQKLSAgIHJldHVybiBwcm90ZWN0ZWRfY2FsbCgmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjpmaW5kX2ltcCk7Ci0jZWxzZQotICAgcmV0dXJuIGZpbmRfaW1wKCk7Ci0jZW5kaWYKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6ZmluZF9pbXAoKQotewotICAgc3RhdGljIG1hdGNoZXJfcHJvY190eXBlIGNvbnN0IHNfZmluZF92dGFibGVbN10gPSAKLSAgIHsKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OmZpbmRfcmVzdGFydF9hbnksCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjpmaW5kX3Jlc3RhcnRfd29yZCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OmZpbmRfcmVzdGFydF9saW5lLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6ZmluZF9yZXN0YXJ0X2J1ZiwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3ByZWZpeCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OmZpbmRfcmVzdGFydF9saXQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjpmaW5kX3Jlc3RhcnRfbGl0LAotICAgfTsKLQotICAgLy8gaW5pdGlhbGlzZSBvdXIgc3RhY2sgaWYgd2UgYXJlIG5vbi1yZWN1cnNpdmU6Ci0jaWZkZWYgTkROQk9PU1RfUkVHRVhfTk9OX1JFQ1VSU0lWRQotICAgc2F2ZV9zdGF0ZV9pbml0IGluaXQoJm1fc3RhY2tfYmFzZSwgJm1fYmFja3VwX3N0YXRlKTsKLSAgIHVzZWRfYmxvY2tfY291bnQgPSBORE5CT09TVF9SRUdFWF9NQVhfQkxPQ0tTOwotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0VYQ0VQVElPTlMpCi0gICB0cnl7Ci0jZW5kaWYKLSNlbmRpZgotCi0gICBzdGF0ZV9jb3VudCA9IDA7Ci0gICBpZigobV9tYXRjaF9mbGFncyAmIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfaW5pdCkgPT0gMCkKLSAgIHsKLSAgICAgIC8vIHJlc2V0IG91ciBzdGF0ZSBtYWNoaW5lOgotICAgICAgc2VhcmNoX2Jhc2UgPSBwb3NpdGlvbiA9IGJhc2U7Ci0gICAgICBwc3RhdGUgPSByZS5nZXRfZmlyc3Rfc3RhdGUoKTsKLSAgICAgIG1fcHJlc3VsdC0+c2V0X3NpemUoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9ub3N1YnMpID8gMSA6IHJlLm1hcmtfY291bnQoKSwgYmFzZSwgbGFzdCk7Ci0gICAgICBtX3ByZXN1bHQtPnNldF9iYXNlKGJhc2UpOwotICAgICAgbV9wcmVzdWx0LT5zZXRfbmFtZWRfc3Vicyh0aGlzLT5yZS5nZXRfbmFtZWRfc3VicygpKTsKLSAgICAgIG1fbWF0Y2hfZmxhZ3MgfD0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9pbml0OwotICAgfQotICAgZWxzZQotICAgewotICAgICAgLy8gc3RhcnQgYWdhaW46Ci0gICAgICBzZWFyY2hfYmFzZSA9IHBvc2l0aW9uID0gbV9yZXN1bHRbMF0uc2Vjb25kOwotICAgICAgLy8gSWYgbGFzdCBtYXRjaCB3YXMgbnVsbCBhbmQgbWF0Y2hfbm90X251bGwgd2FzIG5vdCBzZXQgdGhlbiBpbmNyZW1lbnQKLSAgICAgIC8vIG91ciBzdGFydCBwb3NpdGlvbiwgb3RoZXJ3aXNlIHdlIGdvIGludG8gYW4gaW5maW5pdGUgbG9vcDoKLSAgICAgIGlmKCgobV9tYXRjaF9mbGFncyAmIG1hdGNoX25vdF9udWxsKSA9PSAwKSAmJiAobV9yZXN1bHQubGVuZ3RoKCkgPT0gMCkpCi0gICAgICB7Ci0gICAgICAgICBpZihwb3NpdGlvbiA9PSBsYXN0KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgICsrcG9zaXRpb247Ci0gICAgICB9Ci0gICAgICAvLyByZXNldCAkYCBzdGFydDoKLSAgICAgIG1fcHJlc3VsdC0+c2V0X3NpemUoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9ub3N1YnMpID8gMSA6IHJlLm1hcmtfY291bnQoKSwgc2VhcmNoX2Jhc2UsIGxhc3QpOwotICAgICAgLy9pZigoYmFzZSAhPSBzZWFyY2hfYmFzZSkgJiYgKGJhc2UgPT0gYmFja3N0b3ApKQotICAgICAgLy8gICBtX21hdGNoX2ZsYWdzIHw9IG1hdGNoX3ByZXZfYXZhaWw7Ci0gICB9Ci0gICBpZihtX21hdGNoX2ZsYWdzICYgbWF0Y2hfcG9zaXgpCi0gICB7Ci0gICAgICBtX3Jlc3VsdC5zZXRfc2l6ZShyZS5tYXJrX2NvdW50KCksIGJhc2UsIGxhc3QpOwotICAgICAgbV9yZXN1bHQuc2V0X2Jhc2UoYmFzZSk7Ci0gICB9Ci0KLSAgIHZlcmlmeV9vcHRpb25zKHJlLmZsYWdzKCksIG1fbWF0Y2hfZmxhZ3MpOwotICAgLy8gZmluZCBvdXQgd2hhdCBraW5kIG9mIGV4cHJlc3Npb24gd2UgaGF2ZToKLSAgIHVuc2lnbmVkIHR5cGUgPSAobV9tYXRjaF9mbGFncyAmIG1hdGNoX2NvbnRpbnVvdXMpID8gCi0gICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHJlZ2Jhc2U6OnJlc3RhcnRfY29udGludWUpIAotICAgICAgICAgOiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHJlLmdldF9yZXN0YXJ0X3R5cGUoKSk7Ci0KLSAgIC8vIGNhbGwgdGhlIGFwcHJvcHJpYXRlIHNlYXJjaCByb3V0aW5lOgotICAgbWF0Y2hlcl9wcm9jX3R5cGUgcHJvYyA9IHNfZmluZF92dGFibGVbdHlwZV07Ci0gICByZXR1cm4gKHRoaXMtPipwcm9jKSgpOwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9SRUdFWF9OT05fUkVDVVJTSVZFKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19FWENFUFRJT05TKQotICAgfQotICAgY2F0Y2goLi4uKQotICAgewotICAgICAgLy8gdW53aW5kIGFsbCBwdXNoZWQgc3RhdGVzLCBhcGFydCBmcm9tIGFueXRoaW5nIGVsc2UgdGhpcwotICAgICAgLy8gZW5zdXJlcyB0aGF0IGFsbCB0aGUgc3RhdGVzIGFyZSBjb3JyZWN0bHkgZGVzdHJ1Y3RlZAotICAgICAgLy8gbm90IGp1c3QgdGhlIG1lbW9yeSBmcmVlZC4KLSAgICAgIHdoaWxlKHVud2luZCh0cnVlKSl7fQotICAgICAgdGhyb3c7Ci0gICB9Ci0jZW5kaWYKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfcHJlZml4KCkKLXsKLSAgIG1faGFzX3BhcnRpYWxfbWF0Y2ggPSBmYWxzZTsKLSAgIG1faGFzX2ZvdW5kX21hdGNoID0gZmFsc2U7Ci0gICBwc3RhdGUgPSByZS5nZXRfZmlyc3Rfc3RhdGUoKTsKLSAgIG1fcHJlc3VsdC0+c2V0X2ZpcnN0KHBvc2l0aW9uKTsKLSAgIHJlc3RhcnQgPSBwb3NpdGlvbjsKLSAgIG1hdGNoX2FsbF9zdGF0ZXMoKTsKLSAgIGlmKCFtX2hhc19mb3VuZF9tYXRjaCAmJiBtX2hhc19wYXJ0aWFsX21hdGNoICYmIChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfcGFydGlhbCkpCi0gICB7Ci0gICAgICBtX2hhc19mb3VuZF9tYXRjaCA9IHRydWU7Ci0gICAgICBtX3ByZXN1bHQtPnNldF9zZWNvbmQobGFzdCwgMCwgZmFsc2UpOwotICAgICAgcG9zaXRpb24gPSBsYXN0OwotICAgICAgaWYoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9wb3NpeCkgPT0gbWF0Y2hfcG9zaXgpCi0gICAgICB7Ci0gICAgICAgICBtX3Jlc3VsdC5tYXliZV9hc3NpZ24oKm1fcHJlc3VsdCk7Ci0gICAgICB9Ci0gICB9Ci0jaWZkZWYgTkROQk9PU1RfUkVHRVhfTUFUQ0hfRVhUUkEKLSAgIGlmKG1faGFzX2ZvdW5kX21hdGNoICYmIChtYXRjaF9leHRyYSAmIG1fbWF0Y2hfZmxhZ3MpKQotICAgewotICAgICAgLy8KLSAgICAgIC8vIHdlIGhhdmUgYSBtYXRjaCwgcmV2ZXJzZSB0aGUgY2FwdHVyZSBpbmZvcm1hdGlvbjoKLSAgICAgIC8vCi0gICAgICBmb3IodW5zaWduZWQgaSA9IDA7IGkgPCBtX3ByZXN1bHQtPnNpemUoKTsgKytpKQotICAgICAgewotICAgICAgICAgdHlwZW5hbWUgc3ViX21hdGNoPEJpZGlJdGVyYXRvcj46OmNhcHR1cmVfc2VxdWVuY2VfdHlwZSAmIHNlcSA9ICgoKm1fcHJlc3VsdClbaV0pLmdldF9jYXB0dXJlcygpOwotICAgICAgICAgc3RkOjpyZXZlcnNlKHNlcS5iZWdpbigpLCBzZXEuZW5kKCkpOwotICAgICAgfQotICAgfQotI2VuZGlmCi0gICBpZighbV9oYXNfZm91bmRfbWF0Y2gpCi0gICAgICBwb3NpdGlvbiA9IHJlc3RhcnQ7IC8vIHJlc2V0IHNlYXJjaCBwb3N0aW9uCi0gICByZXR1cm4gbV9oYXNfZm91bmRfbWF0Y2g7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2xpdGVyYWwoKQotewotICAgdW5zaWduZWQgaW50IGxlbiA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2xpdGVyYWwqPihwc3RhdGUpLT5sZW5ndGg7Ci0gICBjb25zdCBjaGFyX3R5cGUqIHdoYXQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXJfdHlwZSo+KHN0YXRpY19jYXN0PGNvbnN0IHJlX2xpdGVyYWwqPihwc3RhdGUpICsgMSk7Ci0gICAvLwotICAgLy8gY29tcGFyZSBzdHJpbmcgd2l0aCB3aGF0IHdlIHN0b3JlZCBpbgotICAgLy8gb3VyIHJlY29yZHM6Ci0gICBmb3IodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbGVuOyArK2ksICsrcG9zaXRpb24pCi0gICB7Ci0gICAgICBpZigocG9zaXRpb24gPT0gbGFzdCkgfHwgKHRyYWl0c19pbnN0LnRyYW5zbGF0ZSgqcG9zaXRpb24sIGljYXNlKSAhPSB3aGF0W2ldKSkKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3N0YXJ0X2xpbmUoKQotewotICAgaWYocG9zaXRpb24gPT0gYmFja3N0b3ApCi0gICB7Ci0gICAgICBpZigobV9tYXRjaF9mbGFncyAmIG1hdGNoX3ByZXZfYXZhaWwpID09IDApCi0gICAgICB7Ci0gICAgICAgICBpZigobV9tYXRjaF9mbGFncyAmIG1hdGNoX25vdF9ib2wpID09IDApCi0gICAgICAgICB7Ci0gICAgICAgICAgICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucDsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgfQotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgfQotICAgZWxzZSBpZihtX21hdGNoX2ZsYWdzICYgbWF0Y2hfc2luZ2xlX2xpbmUpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgIC8vIGNoZWNrIHRoZSBwcmV2aW91cyB2YWx1ZSBjaGFyYWN0ZXI6Ci0gICBCaWRpSXRlcmF0b3IgdChwb3NpdGlvbik7Ci0gICAtLXQ7Ci0gICBpZihwb3NpdGlvbiAhPSBsYXN0KQotICAgewotICAgICAgaWYoaXNfc2VwYXJhdG9yKCp0KSAmJiAhKCgqdCA9PSBzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KCdccicpKSAmJiAoKnBvc2l0aW9uID09IHN0YXRpY19jYXN0PGNoYXJfdHlwZT4oJ1xuJykpKSApCi0gICAgICB7Ci0gICAgICAgICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucDsKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgfQotICAgZWxzZSBpZihpc19zZXBhcmF0b3IoKnQpKQotICAgewotICAgICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIHJldHVybiBmYWxzZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfZW5kX2xpbmUoKQotewotICAgaWYocG9zaXRpb24gIT0gbGFzdCkKLSAgIHsKLSAgICAgIGlmKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9zaW5nbGVfbGluZSkKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIC8vIHdlJ3JlIG5vdCB5ZXQgYXQgdGhlIGVuZCBzbyAqZmlyc3QgaXMgYWx3YXlzIHZhbGlkOgotICAgICAgaWYoaXNfc2VwYXJhdG9yKCpwb3NpdGlvbikpCi0gICAgICB7Ci0gICAgICAgICBpZigocG9zaXRpb24gIT0gYmFja3N0b3ApIHx8IChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfcHJldl9hdmFpbCkpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBjaGVjayB0aGF0IHdlJ3JlIG5vdCBpbiB0aGUgbWlkZGxlIG9mIFxyXG4gc2VxdWVuY2UKLSAgICAgICAgICAgIEJpZGlJdGVyYXRvciB0KHBvc2l0aW9uKTsKLSAgICAgICAgICAgIC0tdDsKLSAgICAgICAgICAgIGlmKCgqdCA9PSBzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KCdccicpKSAmJiAoKnBvc2l0aW9uID09IHN0YXRpY19jYXN0PGNoYXJfdHlwZT4oJ1xuJykpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgfQotICAgICAgICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgIH0KLSAgIGVsc2UgaWYoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9ub3RfZW9sKSA9PSAwKQotICAgewotICAgICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIHJldHVybiBmYWxzZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfd2lsZCgpCi17Ci0gICBpZihwb3NpdGlvbiA9PSBsYXN0KSAKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIGlmKGlzX3NlcGFyYXRvcigqcG9zaXRpb24pICYmICgobWF0Y2hfYW55X21hc2sgJiBzdGF0aWNfY2FzdDxjb25zdCByZV9kb3QqPihwc3RhdGUpLT5tYXNrKSA9PSAwKSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIGlmKCgqcG9zaXRpb24gPT0gY2hhcl90eXBlKDApKSAmJiAobV9tYXRjaF9mbGFncyAmIG1hdGNoX25vdF9kb3RfbnVsbCkpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucDsKLSAgICsrcG9zaXRpb247Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfd29yZF9ib3VuZGFyeSgpCi17Ci0gICBib29sIGI7IC8vIGluZGNhdGVzIHdoZXRoZXIgbmV4dCBjaGFyYWN0ZXIgaXMgYSB3b3JkIGNoYXJhY3RlcgotICAgaWYocG9zaXRpb24gIT0gbGFzdCkKLSAgIHsKLSAgICAgIC8vIHByZXYgYW5kIHRoaXMgY2hhcmFjdGVyIG11c3QgYmUgb3Bwb3NpdGVzOgotICAgI2lmIGRlZmluZWQoTkROQk9PU1RfUkVHRVhfVVNFX0NfTE9DQUxFKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPT0gMikgJiYgKF9fR05VQ19NSU5PUl9fIDwgOTUpCi0gICAgICBiID0gdHJhaXRzOjppc2N0eXBlKCpwb3NpdGlvbiwgbV93b3JkX21hc2spOwotICAgI2Vsc2UKLSAgICAgIGIgPSB0cmFpdHNfaW5zdC5pc2N0eXBlKCpwb3NpdGlvbiwgbV93b3JkX21hc2spOwotICAgI2VuZGlmCi0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICBiID0gKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9ub3RfZW93KSA/IHRydWUgOiBmYWxzZTsKLSAgIH0KLSAgIGlmKChwb3NpdGlvbiA9PSBiYWNrc3RvcCkgJiYgKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfcHJldl9hdmFpbCkgPT0gMCkpCi0gICB7Ci0gICAgICBpZihtX21hdGNoX2ZsYWdzICYgbWF0Y2hfbm90X2JvdykKLSAgICAgICAgIGIgXj0gdHJ1ZTsKLSAgICAgIGVsc2UKLSAgICAgICAgIGIgXj0gZmFsc2U7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICAtLXBvc2l0aW9uOwotICAgICAgYiBePSB0cmFpdHNfaW5zdC5pc2N0eXBlKCpwb3NpdGlvbiwgbV93b3JkX21hc2spOwotICAgICAgKytwb3NpdGlvbjsKLSAgIH0KLSAgIGlmKGIpCi0gICB7Ci0gICAgICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucDsKLSAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgcmV0dXJuIGZhbHNlOyAvLyBubyBtYXRjaCBpZiB3ZSBnZXQgdG8gaGVyZS4uLgotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF93aXRoaW5fd29yZCgpCi17Ci0gICBpZihwb3NpdGlvbiA9PSBsYXN0KQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgLy8gYm90aCBwcmV2IGFuZCB0aGlzIGNoYXJhY3RlciBtdXN0IGJlIG1fd29yZF9tYXNrOgotICAgYm9vbCBwcmV2ID0gdHJhaXRzX2luc3QuaXNjdHlwZSgqcG9zaXRpb24sIG1fd29yZF9tYXNrKTsKLSAgIHsKLSAgICAgIGJvb2wgYjsKLSAgICAgIGlmKChwb3NpdGlvbiA9PSBiYWNrc3RvcCkgJiYgKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfcHJldl9hdmFpbCkgPT0gMCkpIAotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgLS1wb3NpdGlvbjsKLSAgICAgICAgIGIgPSB0cmFpdHNfaW5zdC5pc2N0eXBlKCpwb3NpdGlvbiwgbV93b3JkX21hc2spOwotICAgICAgICAgKytwb3NpdGlvbjsKLSAgICAgIH0KLSAgICAgIGlmKGIgPT0gcHJldikKLSAgICAgIHsKLSAgICAgICAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICB9Ci0gICByZXR1cm4gZmFsc2U7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3dvcmRfc3RhcnQoKQotewotICAgaWYocG9zaXRpb24gPT0gbGFzdCkKLSAgICAgIHJldHVybiBmYWxzZTsgLy8gY2FuJ3QgYmUgc3RhcnRpbmcgYSB3b3JkIGlmIHdlJ3JlIGFscmVhZHkgYXQgdGhlIGVuZCBvZiBpbnB1dAotICAgaWYoIXRyYWl0c19pbnN0LmlzY3R5cGUoKnBvc2l0aW9uLCBtX3dvcmRfbWFzaykpCi0gICAgICByZXR1cm4gZmFsc2U7IC8vIG5leHQgY2hhcmFjdGVyIGlzbid0IGEgd29yZCBjaGFyYWN0ZXIKLSAgIGlmKChwb3NpdGlvbiA9PSBiYWNrc3RvcCkgJiYgKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfcHJldl9hdmFpbCkgPT0gMCkpCi0gICB7Ci0gICAgICBpZihtX21hdGNoX2ZsYWdzICYgbWF0Y2hfbm90X2JvdykKLSAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gbm8gcHJldmlvdXMgaW5wdXQKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIC8vIG90aGVyd2lzZSBpbnNpZGUgYnVmZmVyOgotICAgICAgQmlkaUl0ZXJhdG9yIHQocG9zaXRpb24pOwotICAgICAgLS10OwotICAgICAgaWYodHJhaXRzX2luc3QuaXNjdHlwZSgqdCwgbV93b3JkX21hc2spKQotICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBwcmV2aW91cyBjaGFyYWN0ZXIgbm90IG5vbi13b3JkCi0gICB9Ci0gICAvLyBPSyB3ZSBoYXZlIGEgbWF0Y2g6Ci0gICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucDsKLSAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF93b3JkX2VuZCgpCi17Ci0gICBpZigocG9zaXRpb24gPT0gYmFja3N0b3ApICYmICgobV9tYXRjaF9mbGFncyAmIG1hdGNoX3ByZXZfYXZhaWwpID09IDApKQotICAgICAgcmV0dXJuIGZhbHNlOyAgLy8gc3RhcnQgb2YgYnVmZmVyIGNhbid0IGJlIGVuZCBvZiB3b3JkCi0gICBCaWRpSXRlcmF0b3IgdChwb3NpdGlvbik7Ci0gICAtLXQ7Ci0gICBpZih0cmFpdHNfaW5zdC5pc2N0eXBlKCp0LCBtX3dvcmRfbWFzaykgPT0gZmFsc2UpCi0gICAgICByZXR1cm4gZmFsc2U7ICAvLyBwcmV2aW91cyBjaGFyYWN0ZXIgd2Fzbid0IGEgd29yZCBjaGFyYWN0ZXIKLQotICAgaWYocG9zaXRpb24gPT0gbGFzdCkKLSAgIHsKLSAgICAgIGlmKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9ub3RfZW93KQotICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBlbmQgb2YgYnVmZmVyIGJ1dCBub3QgZW5kIG9mIHdvcmQKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIC8vIG90aGVyd2lzZSBpbnNpZGUgYnVmZmVyOgotICAgICAgaWYodHJhaXRzX2luc3QuaXNjdHlwZSgqcG9zaXRpb24sIG1fd29yZF9tYXNrKSkKLSAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gbmV4dCBjaGFyYWN0ZXIgaXMgYSB3b3JkIGNoYXJhY3RlcgotICAgfQotICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICByZXR1cm4gdHJ1ZTsgICAgICAvLyBpZiB3ZSBmYWxsIHRocm91Z2ggdG8gaGVyZSB0aGVuIHdlJ3ZlIHN1Y2NlZWRlZAotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9idWZmZXJfc3RhcnQoKQotewotICAgaWYoKHBvc2l0aW9uICE9IGJhY2tzdG9wKSB8fCAobV9tYXRjaF9mbGFncyAmIG1hdGNoX25vdF9ib2IpKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgLy8gT0sgbWF0Y2g6Ci0gICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucDsKLSAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9idWZmZXJfZW5kKCkKLXsKLSAgIGlmKChwb3NpdGlvbiAhPSBsYXN0KSB8fCAobV9tYXRjaF9mbGFncyAmIG1hdGNoX25vdF9lb2IpKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgLy8gT0sgbWF0Y2g6Ci0gICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucDsKLSAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9iYWNrcmVmKCkKLXsKLSAgIC8vCi0gICAvLyBDb21wYXJlIHdpdGggd2hhdCB3ZSBwcmV2aW91c2x5IG1hdGNoZWQuCi0gICAvLyBOb3RlIHRoYXQgdGhpcyBzdWNjZWVkcyBpZiB0aGUgYmFja3JlZiBkaWQgbm90IHBhcnRpc2lwYXRlCi0gICAvLyBpbiB0aGUgbWF0Y2gsIHRoaXMgaXMgaW4gbGluZSB3aXRoIEVDTUFTY3JpcHQsIGJ1dCBub3QgUGVybAotICAgLy8gb3IgUENSRS4KLSAgIC8vCi0gICBpbnQgaW5kZXggPSBzdGF0aWNfY2FzdDxjb25zdCByZV9icmFjZSo+KHBzdGF0ZSktPmluZGV4OwotICAgaWYoaW5kZXggPj0gMTAwMDApCi0gICB7Ci0gICAgICBuYW1lZF9zdWJleHByZXNzaW9uczo6cmFuZ2VfdHlwZSByID0gcmUuZ2V0X2RhdGEoKS5lcXVhbF9yYW5nZShpbmRleCk7Ci0gICAgICBORE5CT09TVF9BU1NFUlQoci5maXJzdCAhPSByLnNlY29uZCk7Ci0gICAgICBkbwotICAgICAgewotICAgICAgICAgaW5kZXggPSByLmZpcnN0LT5pbmRleDsKLSAgICAgICAgICsrci5maXJzdDsKLSAgICAgIH13aGlsZSgoci5maXJzdCAhPSByLnNlY29uZCkgJiYgKCgqbV9wcmVzdWx0KVtpbmRleF0ubWF0Y2hlZCAhPSB0cnVlKSk7Ci0gICB9Ci0KLSAgIGlmKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfcGVybCkgJiYgISgqbV9wcmVzdWx0KVtpbmRleF0ubWF0Y2hlZCkKLSAgICAgIHJldHVybiBmYWxzZTsKLQotICAgQmlkaUl0ZXJhdG9yIGkgPSAoKm1fcHJlc3VsdClbaW5kZXhdLmZpcnN0OwotICAgQmlkaUl0ZXJhdG9yIGogPSAoKm1fcHJlc3VsdClbaW5kZXhdLnNlY29uZDsKLSAgIHdoaWxlKGkgIT0gaikKLSAgIHsKLSAgICAgIGlmKChwb3NpdGlvbiA9PSBsYXN0KSB8fCAodHJhaXRzX2luc3QudHJhbnNsYXRlKCpwb3NpdGlvbiwgaWNhc2UpICE9IHRyYWl0c19pbnN0LnRyYW5zbGF0ZSgqaSwgaWNhc2UpKSkKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICsraTsKLSAgICAgICsrcG9zaXRpb247Ci0gICB9Ci0gICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucDsKLSAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9sb25nX3NldCgpCi17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0czo6Y2hhcl9jbGFzc190eXBlIGNoYXJfY2xhc3NfdHlwZTsKLSAgIC8vIGxldCB0aGUgdHJhaXRzIGNsYXNzIGRvIHRoZSB3b3JrOgotICAgaWYocG9zaXRpb24gPT0gbGFzdCkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIEJpZGlJdGVyYXRvciB0ID0gcmVfaXNfc2V0X21lbWJlcihwb3NpdGlvbiwgbGFzdCwgc3RhdGljX2Nhc3Q8Y29uc3QgcmVfc2V0X2xvbmc8Y2hhcl9jbGFzc190eXBlPio+KHBzdGF0ZSksIHJlLmdldF9kYXRhKCksIGljYXNlKTsKLSAgIGlmKHQgIT0gcG9zaXRpb24pCi0gICB7Ci0gICAgICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucDsKLSAgICAgIHBvc2l0aW9uID0gdDsKLSAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgcmV0dXJuIGZhbHNlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9zZXQoKQotewotICAgaWYocG9zaXRpb24gPT0gbGFzdCkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIGlmKHN0YXRpY19jYXN0PGNvbnN0IHJlX3NldCo+KHBzdGF0ZSktPl9tYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odHJhaXRzX2luc3QudHJhbnNsYXRlKCpwb3NpdGlvbiwgaWNhc2UpKV0pCi0gICB7Ci0gICAgICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucDsKLSAgICAgICsrcG9zaXRpb247Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIHJldHVybiBmYWxzZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfanVtcCgpCi17Ci0gICBwc3RhdGUgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9qdW1wKj4ocHN0YXRlKS0+YWx0LnA7Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfY29tYmluaW5nKCkKLXsKLSAgIGlmKHBvc2l0aW9uID09IGxhc3QpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICBpZihpc19jb21iaW5pbmcodHJhaXRzX2luc3QudHJhbnNsYXRlKCpwb3NpdGlvbiwgaWNhc2UpKSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICsrcG9zaXRpb247Ci0gICB3aGlsZSgocG9zaXRpb24gIT0gbGFzdCkgJiYgaXNfY29tYmluaW5nKHRyYWl0c19pbnN0LnRyYW5zbGF0ZSgqcG9zaXRpb24sIGljYXNlKSkpCi0gICAgICArK3Bvc2l0aW9uOwotICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfc29mdF9idWZmZXJfZW5kKCkKLXsKLSAgIGlmKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9ub3RfZW9iKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgQmlkaUl0ZXJhdG9yIHAocG9zaXRpb24pOwotICAgd2hpbGUoKHAgIT0gbGFzdCkgJiYgaXNfc2VwYXJhdG9yKHRyYWl0c19pbnN0LnRyYW5zbGF0ZSgqcCwgaWNhc2UpKSkrK3A7Ci0gICBpZihwICE9IGxhc3QpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucDsKLSAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9yZXN0YXJ0X2NvbnRpbnVlKCkKLXsKLSAgIGlmKHBvc2l0aW9uID09IHNlYXJjaF9iYXNlKQotICAgewotICAgICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIHJldHVybiBmYWxzZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfYmFja3N0ZXAoKQotewotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEyNykKLSNlbmRpZgotICAgaWYoIDo6bmRuYm9vc3Q6OmlzX3JhbmRvbV9hY2Nlc3NfaXRlcmF0b3I8QmlkaUl0ZXJhdG9yPjo6dmFsdWUpCi0gICB7Ci0gICAgICBzdGQ6OnB0cmRpZmZfdCBtYXhsZW4gPSA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKGJhY2tzdG9wLCBwb3NpdGlvbik7Ci0gICAgICBpZihtYXhsZW4gPCBzdGF0aWNfY2FzdDxjb25zdCByZV9icmFjZSo+KHBzdGF0ZSktPmluZGV4KQotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgc3RkOjphZHZhbmNlKHBvc2l0aW9uLCAtc3RhdGljX2Nhc3Q8Y29uc3QgcmVfYnJhY2UqPihwc3RhdGUpLT5pbmRleCk7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICBpbnQgYyA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2JyYWNlKj4ocHN0YXRlKS0+aW5kZXg7Ci0gICAgICB3aGlsZShjLS0pCi0gICAgICB7Ci0gICAgICAgICBpZihwb3NpdGlvbiA9PSBiYWNrc3RvcCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIC0tcG9zaXRpb247Ci0gICAgICB9Ci0gICB9Ci0gICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucDsKLSAgIHJldHVybiB0cnVlOwotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1pbmxpbmUgYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2Fzc2VydF9iYWNrcmVmKCkKLXsKLSAgIC8vIHJldHVybiB0cnVlIGlmIG1hcmtlZCBzdWItZXhwcmVzc2lvbiBOIGhhcyBiZWVuIG1hdGNoZWQ6Ci0gICBpbnQgaW5kZXggPSBzdGF0aWNfY2FzdDxjb25zdCByZV9icmFjZSo+KHBzdGF0ZSktPmluZGV4OwotICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgIGlmKGluZGV4ID09IDk5OTkpCi0gICB7Ci0gICAgICAvLyBNYWdpYyB2YWx1ZSBmb3IgYSAoREVGSU5FKSBibG9jazoKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSAgIGVsc2UgaWYoaW5kZXggPiAwKQotICAgewotICAgICAgLy8gSGF2ZSB3ZSBtYXRjaGVkIHN1YmV4cHJlc3Npb24gImluZGV4Ij8KLSAgICAgIC8vIENoZWNrIGlmIGluZGV4IGlzIGEgaGFzaCB2YWx1ZToKLSAgICAgIGlmKGluZGV4ID49IDEwMDAwKQotICAgICAgewotICAgICAgICAgbmFtZWRfc3ViZXhwcmVzc2lvbnM6OnJhbmdlX3R5cGUgciA9IHJlLmdldF9kYXRhKCkuZXF1YWxfcmFuZ2UoaW5kZXgpOwotICAgICAgICAgd2hpbGUoci5maXJzdCAhPSByLnNlY29uZCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGlmKCgqbV9wcmVzdWx0KVtyLmZpcnN0LT5pbmRleF0ubWF0Y2hlZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7Ci0gICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICsrci5maXJzdDsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgIHJlc3VsdCA9ICgqbV9wcmVzdWx0KVtpbmRleF0ubWF0Y2hlZDsKLSAgICAgIH0KLSAgICAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgLy8gSGF2ZSB3ZSByZWN1cnNlZCBpbnRvIHN1YmV4cHJlc3Npb24gImluZGV4Ij8KLSAgICAgIC8vIElmIGluZGV4ID09IDAgdGhlbiBjaGVjayBmb3IgYW55IHJlY3Vyc2lvbiBhdCBhbGwsIG90aGVyd2lzZSBmb3IgcmVjdXJzaW9uIHRvIC1pbmRleC0xLgotICAgICAgaW50IGlkeCA9IC1pbmRleC0xOwotICAgICAgaWYoaWR4ID49IDEwMDAwKQotICAgICAgewotICAgICAgICAgbmFtZWRfc3ViZXhwcmVzc2lvbnM6OnJhbmdlX3R5cGUgciA9IHJlLmdldF9kYXRhKCkuZXF1YWxfcmFuZ2UoaWR4KTsKLSAgICAgICAgIGludCBzdGFja19pbmRleCA9IHJlY3Vyc2lvbl9zdGFjay5lbXB0eSgpID8gLTEgOiByZWN1cnNpb25fc3RhY2suYmFjaygpLmlkeDsKLSAgICAgICAgIHdoaWxlKHIuZmlyc3QgIT0gci5zZWNvbmQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICByZXN1bHQgfD0gKHN0YWNrX2luZGV4ID09IHIuZmlyc3QtPmluZGV4KTsKLSAgICAgICAgICAgIGlmKHJlc3VsdClicmVhazsKLSAgICAgICAgICAgICsrci5maXJzdDsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgIHJlc3VsdCA9ICFyZWN1cnNpb25fc3RhY2suZW1wdHkoKSAmJiAoKHJlY3Vyc2lvbl9zdGFjay5iYWNrKCkuaWR4ID09IGlkeCkgfHwgKGluZGV4ID09IDApKTsKLSAgICAgIH0KLSAgICAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgfQotICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfdG9nZ2xlX2Nhc2UoKQotewotICAgLy8gY2hhbmdlIG91ciBjYXNlIHNlbnNpdGl2aXR5OgotICAgdGhpcy0+aWNhc2UgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9jYXNlKj4ocHN0YXRlKS0+aWNhc2U7Ci0gICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucDsKLSAgIHJldHVybiB0cnVlOwotfQotCi0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OmZpbmRfcmVzdGFydF9hbnkoKQotewotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEyNykKLSNlbmRpZgotICAgY29uc3QgdW5zaWduZWQgY2hhciogX21hcCA9IHJlLmdldF9tYXAoKTsKLSAgIHdoaWxlKHRydWUpCi0gICB7Ci0gICAgICAvLyBza2lwIGV2ZXJ5dGhpbmcgd2UgY2FuJ3QgbWF0Y2g6Ci0gICAgICB3aGlsZSgocG9zaXRpb24gIT0gbGFzdCkgJiYgIWNhbl9zdGFydCgqcG9zaXRpb24sIF9tYXAsICh1bnNpZ25lZCBjaGFyKW1hc2tfYW55KSApCi0gICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgaWYocG9zaXRpb24gPT0gbGFzdCkKLSAgICAgIHsKLSAgICAgICAgIC8vIHJ1biBvdXQgb2YgY2hhcmFjdGVycywgdHJ5IGEgbnVsbCBtYXRjaCBpZiBwb3NzaWJsZToKLSAgICAgICAgIGlmKHJlLmNhbl9iZV9udWxsKCkpCi0gICAgICAgICAgICByZXR1cm4gbWF0Y2hfcHJlZml4KCk7Ci0gICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIC8vIG5vdyB0cnkgYW5kIG9idGFpbiBhIG1hdGNoOgotICAgICAgaWYobWF0Y2hfcHJlZml4KCkpCi0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIGlmKHBvc2l0aW9uID09IGxhc3QpCi0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICArK3Bvc2l0aW9uOwotICAgfQotICAgcmV0dXJuIGZhbHNlOwotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6ZmluZF9yZXN0YXJ0X3dvcmQoKQotewotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEyNykKLSNlbmRpZgotICAgLy8gZG8gc2VhcmNoIG9wdGltaXNlZCBmb3Igd29yZCBzdGFydHM6Ci0gICBjb25zdCB1bnNpZ25lZCBjaGFyKiBfbWFwID0gcmUuZ2V0X21hcCgpOwotICAgaWYoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9wcmV2X2F2YWlsKSB8fCAocG9zaXRpb24gIT0gYmFzZSkpCi0gICAgICAtLXBvc2l0aW9uOwotICAgZWxzZSBpZihtYXRjaF9wcmVmaXgoKSkKLSAgICAgIHJldHVybiB0cnVlOwotICAgZG8KLSAgIHsKLSAgICAgIHdoaWxlKChwb3NpdGlvbiAhPSBsYXN0KSAmJiB0cmFpdHNfaW5zdC5pc2N0eXBlKCpwb3NpdGlvbiwgbV93b3JkX21hc2spKQotICAgICAgICAgKytwb3NpdGlvbjsKLSAgICAgIHdoaWxlKChwb3NpdGlvbiAhPSBsYXN0KSAmJiAhdHJhaXRzX2luc3QuaXNjdHlwZSgqcG9zaXRpb24sIG1fd29yZF9tYXNrKSkKLSAgICAgICAgICsrcG9zaXRpb247Ci0gICAgICBpZihwb3NpdGlvbiA9PSBsYXN0KQotICAgICAgICAgYnJlYWs7Ci0KLSAgICAgIGlmKGNhbl9zdGFydCgqcG9zaXRpb24sIF9tYXAsICh1bnNpZ25lZCBjaGFyKW1hc2tfYW55KSApCi0gICAgICB7Ci0gICAgICAgICBpZihtYXRjaF9wcmVmaXgoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgaWYocG9zaXRpb24gPT0gbGFzdCkKLSAgICAgICAgIGJyZWFrOwotICAgfSB3aGlsZSh0cnVlKTsKLSAgIHJldHVybiBmYWxzZTsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OmZpbmRfcmVzdGFydF9saW5lKCkKLXsKLSAgIC8vIGRvIHNlYXJjaCBvcHRpbWlzZWQgZm9yIGxpbmUgc3RhcnRzOgotICAgY29uc3QgdW5zaWduZWQgY2hhciogX21hcCA9IHJlLmdldF9tYXAoKTsKLSAgIGlmKG1hdGNoX3ByZWZpeCgpKQotICAgICAgcmV0dXJuIHRydWU7Ci0gICB3aGlsZShwb3NpdGlvbiAhPSBsYXN0KQotICAgewotICAgICAgd2hpbGUoKHBvc2l0aW9uICE9IGxhc3QpICYmICFpc19zZXBhcmF0b3IoKnBvc2l0aW9uKSkKLSAgICAgICAgICsrcG9zaXRpb247Ci0gICAgICBpZihwb3NpdGlvbiA9PSBsYXN0KQotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgKytwb3NpdGlvbjsKLSAgICAgIGlmKHBvc2l0aW9uID09IGxhc3QpCi0gICAgICB7Ci0gICAgICAgICBpZihyZS5jYW5fYmVfbnVsbCgpICYmIG1hdGNoX3ByZWZpeCgpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0KLSAgICAgIGlmKCBjYW5fc3RhcnQoKnBvc2l0aW9uLCBfbWFwLCAodW5zaWduZWQgY2hhciltYXNrX2FueSkgKQotICAgICAgewotICAgICAgICAgaWYobWF0Y2hfcHJlZml4KCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIGlmKHBvc2l0aW9uID09IGxhc3QpCi0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAvLysrcG9zaXRpb247Ci0gICB9Ci0gICByZXR1cm4gZmFsc2U7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OmZpbmRfcmVzdGFydF9idWYoKQotewotICAgaWYoKHBvc2l0aW9uID09IGJhc2UpICYmICgobV9tYXRjaF9mbGFncyAmIG1hdGNoX25vdF9ib2IpID09IDApKQotICAgICAgcmV0dXJuIG1hdGNoX3ByZWZpeCgpOwotICAgcmV0dXJuIGZhbHNlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjpmaW5kX3Jlc3RhcnRfbGl0KCkKLXsKLSNpZiAwCi0gICBpZihwb3NpdGlvbiA9PSBsYXN0KQotICAgICAgcmV0dXJuIGZhbHNlOyAvLyBjYW4ndCBwb3NzaWJseSBtYXRjaCBpZiB3ZSdyZSBhdCB0aGUgZW5kIGFscmVhZHkKLQotICAgdW5zaWduZWQgdHlwZSA9IChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfY29udGludW91cykgPyAKLSAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4ocmVnYmFzZTo6cmVzdGFydF9jb250aW51ZSkgCi0gICAgICAgICA6IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4ocmUuZ2V0X3Jlc3RhcnRfdHlwZSgpKTsKLQotICAgY29uc3Qga21wX2luZm88Y2hhcl90eXBlPiogaW5mbyA9IGFjY2Vzczo6Z2V0X2ttcChyZSk7Ci0gICBpbnQgbGVuID0gaW5mby0+bGVuOwotICAgY29uc3QgY2hhcl90eXBlKiB4ID0gaW5mby0+cHN0cjsKLSAgIGludCBqID0gMDsgCi0gICB3aGlsZSAocG9zaXRpb24gIT0gbGFzdCkgCi0gICB7Ci0gICAgICB3aGlsZSgoaiA+IC0xKSAmJiAoeFtqXSAhPSB0cmFpdHNfaW5zdC50cmFuc2xhdGUoKnBvc2l0aW9uLCBpY2FzZSkpKSAKLSAgICAgICAgIGogPSBpbmZvLT5rbXBfbmV4dFtqXTsKLSAgICAgICsrcG9zaXRpb247Ci0gICAgICArK2o7Ci0gICAgICBpZihqID49IGxlbikgCi0gICAgICB7Ci0gICAgICAgICBpZih0eXBlID09IHJlZ2Jhc2U6OnJlc3RhcnRfZml4ZWRfbGl0KQotICAgICAgICAgewotICAgICAgICAgICAgc3RkOjphZHZhbmNlKHBvc2l0aW9uLCAtaik7Ci0gICAgICAgICAgICByZXN0YXJ0ID0gcG9zaXRpb247Ci0gICAgICAgICAgICBzdGQ6OmFkdmFuY2UocmVzdGFydCwgbGVuKTsKLSAgICAgICAgICAgIG1fcmVzdWx0LnNldF9maXJzdChwb3NpdGlvbik7Ci0gICAgICAgICAgICBtX3Jlc3VsdC5zZXRfc2Vjb25kKHJlc3RhcnQpOwotICAgICAgICAgICAgcG9zaXRpb24gPSByZXN0YXJ0OwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICB9Ci0gICAgICAgICBlbHNlCi0gICAgICAgICB7Ci0gICAgICAgICAgICByZXN0YXJ0ID0gcG9zaXRpb247Ci0gICAgICAgICAgICBzdGQ6OmFkdmFuY2UocG9zaXRpb24sIC1qKTsKLSAgICAgICAgICAgIGlmKG1hdGNoX3ByZWZpeCgpKQotICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBmb3IoaW50IGsgPSAwOyAocmVzdGFydCAhPSBwb3NpdGlvbikgJiYgKGsgPCBqKTsgKytrLCAtLXJlc3RhcnQpCi0gICAgICAgICAgICAgICAgICAgICB7fSAvLyBkd2EgMTAvMjAvMjAwMCAtIHdhcm5pbmcgc3VwcHJlc3Npb24gZm9yIE1XQ1cKLSAgICAgICAgICAgICAgIGlmKHJlc3RhcnQgIT0gbGFzdCkKLSAgICAgICAgICAgICAgICAgICsrcmVzdGFydDsKLSAgICAgICAgICAgICAgIHBvc2l0aW9uID0gcmVzdGFydDsKLSAgICAgICAgICAgICAgIGogPSAwOyAgLy93ZSBjb3VsZCBkbyBiZXR0ZXIgdGhhbiB0aGlzLi4uCi0gICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICB9Ci0gICBpZigobV9tYXRjaF9mbGFncyAmIG1hdGNoX3BhcnRpYWwpICYmIChwb3NpdGlvbiA9PSBsYXN0KSAmJiBqKQotICAgewotICAgICAgLy8gd2UgbmVlZCB0byBjaGVjayBmb3IgYSBwYXJ0aWFsIG1hdGNoOgotICAgICAgcmVzdGFydCA9IHBvc2l0aW9uOwotICAgICAgc3RkOjphZHZhbmNlKHBvc2l0aW9uLCAtaik7Ci0gICAgICByZXR1cm4gbWF0Y2hfcHJlZml4KCk7Ci0gICB9Ci0jZW5kaWYKLSAgIHJldHVybiBmYWxzZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgcmVfZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jICBwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2lmZGVmIF9fQk9STEFORENfXwotIyAgcHJhZ21hIG9wdGlvbiBwb3AKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9wZXJsX21hdGNoZXJfbm9uX3JlY3Vyc2l2ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3BlcmxfbWF0Y2hlcl9ub25fcmVjdXJzaXZlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzI4ODU2Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3BlcmxfbWF0Y2hlcl9ub25fcmVjdXJzaXZlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2NDIgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICBwZXJsX21hdGNoZXJfY29tbW9uLmNwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogRGVmaW5pdGlvbnMgb2YgcGVybF9tYXRjaGVyIG1lbWJlciBmdW5jdGlvbnMgdGhhdCBhcmUgCi0gICogICAgICAgICAgICAgICAgc3BlY2lmaWMgdG8gdGhlIG5vbi1yZWN1cnNpdmUgaW1wbGVtZW50YXRpb24uCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfUEVSTF9NQVRDSEVSX05PTl9SRUNVUlNJVkVfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1Y0X1BFUkxfTUFUQ0hFUl9OT05fUkVDVVJTSVZFX0hQUAotCi0jaW5jbHVkZSA8bmV3PgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ4MDApCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotbmFtZXNwYWNlIHJlX2RldGFpbHsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1pbmxpbmUgdm9pZCBpbnBsYWNlX2Rlc3Ryb3koVCogcCkKLXsKLSAgICh2b2lkKXA7ICAvLyB3YXJuaW5nIHN1cHByZXNzaW9uCi0gICBwLT5+VCgpOwotfQotCi1zdHJ1Y3Qgc2F2ZWRfc3RhdGUKLXsKLSAgIHVuaW9uewotICAgICAgdW5zaWduZWQgaW50IHN0YXRlX2lkOwotICAgICAgLy8gdGhpcyBwYWRkaW5nIGVuc3VyZXMgY29ycmVjdCBhbGlnbm1lbnQgb24gNjQtYml0IHBsYXRmb3JtczoKLSAgICAgIHN0ZDo6c2l6ZV90IHBhZGRpbmcxOwotICAgICAgc3RkOjpwdHJkaWZmX3QgcGFkZGluZzI7Ci0gICAgICB2b2lkKiBwYWRkaW5nMzsKLSAgIH07Ci0gICBzYXZlZF9zdGF0ZSh1bnNpZ25lZCBpKSA6IHN0YXRlX2lkKGkpIHt9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yPgotc3RydWN0IHNhdmVkX21hdGNoZWRfcGFyZW4gOiBwdWJsaWMgc2F2ZWRfc3RhdGUKLXsKLSAgIGludCBpbmRleDsKLSAgIHN1Yl9tYXRjaDxCaWRpSXRlcmF0b3I+IHN1YjsKLSAgIHNhdmVkX21hdGNoZWRfcGFyZW4oaW50IGksIGNvbnN0IHN1Yl9tYXRjaDxCaWRpSXRlcmF0b3I+JiBzKSA6IHNhdmVkX3N0YXRlKDEpLCBpbmRleChpKSwgc3ViKHMpe307Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yPgotc3RydWN0IHNhdmVkX3Bvc2l0aW9uIDogcHVibGljIHNhdmVkX3N0YXRlCi17Ci0gICBjb25zdCByZV9zeW50YXhfYmFzZSogcHN0YXRlOwotICAgQmlkaUl0ZXJhdG9yIHBvc2l0aW9uOwotICAgc2F2ZWRfcG9zaXRpb24oY29uc3QgcmVfc3ludGF4X2Jhc2UqIHBzLCBCaWRpSXRlcmF0b3IgcG9zLCBpbnQgaSkgOiBzYXZlZF9zdGF0ZShpKSwgcHN0YXRlKHBzKSwgcG9zaXRpb24ocG9zKXt9OwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvcj4KLXN0cnVjdCBzYXZlZF9hc3NlcnRpb24gOiBwdWJsaWMgc2F2ZWRfcG9zaXRpb248QmlkaUl0ZXJhdG9yPgotewotICAgYm9vbCBwb3NpdGl2ZTsKLSAgIHNhdmVkX2Fzc2VydGlvbihib29sIHAsIGNvbnN0IHJlX3N5bnRheF9iYXNlKiBwcywgQmlkaUl0ZXJhdG9yIHBvcykgCi0gICAgICA6IHNhdmVkX3Bvc2l0aW9uPEJpZGlJdGVyYXRvcj4ocHMsIHBvcywgc2F2ZWRfdHlwZV9hc3NlcnRpb24pLCBwb3NpdGl2ZShwKXt9OwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvcj4KLXN0cnVjdCBzYXZlZF9yZXBlYXRlciA6IHB1YmxpYyBzYXZlZF9zdGF0ZQotewotICAgcmVwZWF0ZXJfY291bnQ8QmlkaUl0ZXJhdG9yPiBjb3VudDsKLSAgIHNhdmVkX3JlcGVhdGVyKGludCBpLCByZXBlYXRlcl9jb3VudDxCaWRpSXRlcmF0b3I+KiogcywgQmlkaUl0ZXJhdG9yIHN0YXJ0KSAKLSAgICAgIDogc2F2ZWRfc3RhdGUoc2F2ZWRfc3RhdGVfcmVwZWF0ZXJfY291bnQpLCBjb3VudChpLHMsc3RhcnQpe30KLX07Ci0KLXN0cnVjdCBzYXZlZF9leHRyYV9ibG9jayA6IHB1YmxpYyBzYXZlZF9zdGF0ZQotewotICAgc2F2ZWRfc3RhdGUgKmJhc2UsICplbmQ7Ci0gICBzYXZlZF9leHRyYV9ibG9jayhzYXZlZF9zdGF0ZSogYiwgc2F2ZWRfc3RhdGUqIGUpIAotICAgICAgOiBzYXZlZF9zdGF0ZShzYXZlZF9zdGF0ZV9leHRyYV9ibG9jayksIGJhc2UoYiksIGVuZChlKSB7fQotfTsKLQotc3RydWN0IHNhdmVfc3RhdGVfaW5pdAotewotICAgc2F2ZWRfc3RhdGUqKiBzdGFjazsKLSAgIHNhdmVfc3RhdGVfaW5pdChzYXZlZF9zdGF0ZSoqIGJhc2UsIHNhdmVkX3N0YXRlKiogZW5kKQotICAgICAgOiBzdGFjayhiYXNlKQotICAgewotICAgICAgKmJhc2UgPSBzdGF0aWNfY2FzdDxzYXZlZF9zdGF0ZSo+KGdldF9tZW1fYmxvY2soKSk7Ci0gICAgICAqZW5kID0gcmVpbnRlcnByZXRfY2FzdDxzYXZlZF9zdGF0ZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KCpiYXNlKStORE5CT09TVF9SRUdFWF9CTE9DS1NJWkUpOwotICAgICAgLS0oKmVuZCk7Ci0gICAgICAodm9pZCkgbmV3ICgqZW5kKXNhdmVkX3N0YXRlKDApOwotICAgICAgTkROQk9PU1RfQVNTRVJUKCplbmQgPiAqYmFzZSk7Ci0gICB9Ci0gICB+c2F2ZV9zdGF0ZV9pbml0KCkKLSAgIHsKLSAgICAgIHB1dF9tZW1fYmxvY2soKnN0YWNrKTsKLSAgICAgICpzdGFjayA9IDA7Ci0gICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yPgotc3RydWN0IHNhdmVkX3NpbmdsZV9yZXBlYXQgOiBwdWJsaWMgc2F2ZWRfc3RhdGUKLXsKLSAgIHN0ZDo6c2l6ZV90IGNvdW50OwotICAgY29uc3QgcmVfcmVwZWF0KiByZXA7Ci0gICBCaWRpSXRlcmF0b3IgbGFzdF9wb3NpdGlvbjsKLSAgIHNhdmVkX3NpbmdsZV9yZXBlYXQoc3RkOjpzaXplX3QgYywgY29uc3QgcmVfcmVwZWF0KiByLCBCaWRpSXRlcmF0b3IgbHAsIGludCBhcmdfaWQpIAotICAgICAgOiBzYXZlZF9zdGF0ZShhcmdfaWQpLCBjb3VudChjKSwgcmVwKHIpLCBsYXN0X3Bvc2l0aW9uKGxwKXt9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUmVzdWx0cz4KLXN0cnVjdCBzYXZlZF9yZWN1cnNpb24gOiBwdWJsaWMgc2F2ZWRfc3RhdGUKLXsKLSAgIHNhdmVkX3JlY3Vyc2lvbihpbnQgaWR4LCBjb25zdCByZV9zeW50YXhfYmFzZSogcCwgUmVzdWx0cyogcHIpIAotICAgICAgOiBzYXZlZF9zdGF0ZSgxNCksIHJlY3Vyc2lvbl9pZChpZHgpLCBwcmV0dXJuX2FkZHJlc3MocCksIHJlc3VsdHMoKnByKQotICAge30KLSAgIGludCByZWN1cnNpb25faWQ7Ci0gICBjb25zdCByZV9zeW50YXhfYmFzZSogcHJldHVybl9hZGRyZXNzOwotICAgUmVzdWx0cyByZXN1bHRzOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfYWxsX3N0YXRlcygpCi17Ci0gICBzdGF0aWMgbWF0Y2hlcl9wcm9jX3R5cGUgY29uc3Qgc19tYXRjaF92dGFibGVbMzBdID0gCi0gICB7Ci0gICAgICAoJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfc3RhcnRtYXJrKSwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2VuZG1hcmssCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9saXRlcmFsLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfc3RhcnRfbGluZSwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2VuZF9saW5lLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfd2lsZCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX21hdGNoLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfd29yZF9ib3VuZGFyeSwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3dpdGhpbl93b3JkLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfd29yZF9zdGFydCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3dvcmRfZW5kLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfYnVmZmVyX3N0YXJ0LAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfYnVmZmVyX2VuZCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2JhY2tyZWYsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9sb25nX3NldCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3NldCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2p1bXAsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9hbHQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9yZXAsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9jb21iaW5pbmcsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9zb2Z0X2J1ZmZlcl9lbmQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9yZXN0YXJ0X2NvbnRpbnVlLAotICAgICAgLy8gQWx0aG91Z2ggdGhpcyBuZXh0IGxpbmUgKnNob3VsZCogYmUgZXZhbHVhdGVkIGF0IGNvbXBpbGUgdGltZSwgaW4gcHJhY3RpY2UKLSAgICAgIC8vIHNvbWUgY29tcGlsZXJzIChWQysrKSBlbWl0IHJ1bi10aW1lIGluaXRpYWxpc2F0aW9uIHdoaWNoIGJyZWFrcyB0aHJlYWQKLSAgICAgIC8vIHNhZmV0eSwgc28gdXNlIGEgZGlzcGF0Y2ggZnVuY3Rpb24gaW5zdGVhZDoKLSAgICAgIC8vKDo6bmRuYm9vc3Q6OmlzX3JhbmRvbV9hY2Nlc3NfaXRlcmF0b3I8QmlkaUl0ZXJhdG9yPjo6dmFsdWUgPyAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9kb3RfcmVwZWF0X2Zhc3QgOiAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9kb3RfcmVwZWF0X3Nsb3cpLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfZG90X3JlcGVhdF9kaXNwYXRjaCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2NoYXJfcmVwZWF0LAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfc2V0X3JlcGVhdCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2xvbmdfc2V0X3JlcGVhdCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2JhY2tzdGVwLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfYXNzZXJ0X2JhY2tyZWYsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF90b2dnbGVfY2FzZSwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3JlY3Vyc2lvbiwKLSAgIH07Ci0KLSAgIHB1c2hfcmVjdXJzaW9uX3N0b3BwZXIoKTsKLSAgIGRvewotICAgICAgd2hpbGUocHN0YXRlKQotICAgICAgewotICAgICAgICAgbWF0Y2hlcl9wcm9jX3R5cGUgcHJvYyA9IHNfbWF0Y2hfdnRhYmxlW3BzdGF0ZS0+dHlwZV07Ci0gICAgICAgICArK3N0YXRlX2NvdW50OwotICAgICAgICAgaWYoISh0aGlzLT4qcHJvYykoKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGlmKHN0YXRlX2NvdW50ID4gbWF4X3N0YXRlX2NvdW50KQotICAgICAgICAgICAgICAgcmFpc2VfZXJyb3IodHJhaXRzX2luc3QsIHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfY29tcGxleGl0eSk7Ci0gICAgICAgICAgICBpZigobV9tYXRjaF9mbGFncyAmIG1hdGNoX3BhcnRpYWwpICYmIChwb3NpdGlvbiA9PSBsYXN0KSAmJiAocG9zaXRpb24gIT0gc2VhcmNoX2Jhc2UpKQotICAgICAgICAgICAgICAgbV9oYXNfcGFydGlhbF9tYXRjaCA9IHRydWU7Ci0gICAgICAgICAgICBib29sIHN1Y2Nlc3NmdWxfdW53aW5kID0gdW53aW5kKGZhbHNlKTsKLSAgICAgICAgICAgIGlmKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfcGFydGlhbCkgJiYgKHBvc2l0aW9uID09IGxhc3QpICYmIChwb3NpdGlvbiAhPSBzZWFyY2hfYmFzZSkpCi0gICAgICAgICAgICAgICBtX2hhc19wYXJ0aWFsX21hdGNoID0gdHJ1ZTsKLSAgICAgICAgICAgIGlmKGZhbHNlID09IHN1Y2Nlc3NmdWxfdW53aW5kKQotICAgICAgICAgICAgICAgcmV0dXJuIG1fcmVjdXJzaXZlX3Jlc3VsdDsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgIH13aGlsZSh1bndpbmQodHJ1ZSkpOwotICAgcmV0dXJuIG1fcmVjdXJzaXZlX3Jlc3VsdDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci12b2lkIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6ZXh0ZW5kX3N0YWNrKCkKLXsKLSAgIGlmKHVzZWRfYmxvY2tfY291bnQpCi0gICB7Ci0gICAgICAtLXVzZWRfYmxvY2tfY291bnQ7Ci0gICAgICBzYXZlZF9zdGF0ZSogc3RhY2tfYmFzZTsKLSAgICAgIHNhdmVkX3N0YXRlKiBiYWNrdXBfc3RhdGU7Ci0gICAgICBzdGFja19iYXNlID0gc3RhdGljX2Nhc3Q8c2F2ZWRfc3RhdGUqPihnZXRfbWVtX2Jsb2NrKCkpOwotICAgICAgYmFja3VwX3N0YXRlID0gcmVpbnRlcnByZXRfY2FzdDxzYXZlZF9zdGF0ZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHN0YWNrX2Jhc2UpK05ETkJPT1NUX1JFR0VYX0JMT0NLU0laRSk7Ci0gICAgICBzYXZlZF9leHRyYV9ibG9jayogYmxvY2sgPSBzdGF0aWNfY2FzdDxzYXZlZF9leHRyYV9ibG9jayo+KGJhY2t1cF9zdGF0ZSk7Ci0gICAgICAtLWJsb2NrOwotICAgICAgKHZvaWQpIG5ldyAoYmxvY2spIHNhdmVkX2V4dHJhX2Jsb2NrKG1fc3RhY2tfYmFzZSwgbV9iYWNrdXBfc3RhdGUpOwotICAgICAgbV9zdGFja19iYXNlID0gc3RhY2tfYmFzZTsKLSAgICAgIG1fYmFja3VwX3N0YXRlID0gYmxvY2s7Ci0gICB9Ci0gICBlbHNlCi0gICAgICByYWlzZV9lcnJvcih0cmFpdHNfaW5zdCwgcmVnZXhfY29uc3RhbnRzOjplcnJvcl9zdGFjayk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotaW5saW5lIHZvaWQgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjpwdXNoX21hdGNoZWRfcGFyZW4oaW50IGluZGV4LCBjb25zdCBzdWJfbWF0Y2g8QmlkaUl0ZXJhdG9yPiYgc3ViKQotewotICAgLy9ORE5CT09TVF9BU1NFUlQoaW5kZXgpOwotICAgc2F2ZWRfbWF0Y2hlZF9wYXJlbjxCaWRpSXRlcmF0b3I+KiBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9tYXRjaGVkX3BhcmVuPEJpZGlJdGVyYXRvcj4qPihtX2JhY2t1cF9zdGF0ZSk7Ci0gICAtLXBtcDsKLSAgIGlmKHBtcCA8IG1fc3RhY2tfYmFzZSkKLSAgIHsKLSAgICAgIGV4dGVuZF9zdGFjaygpOwotICAgICAgcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfbWF0Y2hlZF9wYXJlbjxCaWRpSXRlcmF0b3I+Kj4obV9iYWNrdXBfc3RhdGUpOwotICAgICAgLS1wbXA7Ci0gICB9Ci0gICAodm9pZCkgbmV3IChwbXApc2F2ZWRfbWF0Y2hlZF9wYXJlbjxCaWRpSXRlcmF0b3I+KGluZGV4LCBzdWIpOwotICAgbV9iYWNrdXBfc3RhdGUgPSBwbXA7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotaW5saW5lIHZvaWQgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjpwdXNoX3JlY3Vyc2lvbl9zdG9wcGVyKCkKLXsKLSAgIHNhdmVkX3N0YXRlKiBwbXAgPSBtX2JhY2t1cF9zdGF0ZTsKLSAgIC0tcG1wOwotICAgaWYocG1wIDwgbV9zdGFja19iYXNlKQotICAgewotICAgICAgZXh0ZW5kX3N0YWNrKCk7Ci0gICAgICBwbXAgPSBtX2JhY2t1cF9zdGF0ZTsKLSAgICAgIC0tcG1wOwotICAgfQotICAgKHZvaWQpIG5ldyAocG1wKXNhdmVkX3N0YXRlKHNhdmVkX3R5cGVfcmVjdXJzZSk7Ci0gICBtX2JhY2t1cF9zdGF0ZSA9IHBtcDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1pbmxpbmUgdm9pZCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnB1c2hfYXNzZXJ0aW9uKGNvbnN0IHJlX3N5bnRheF9iYXNlKiBwcywgYm9vbCBwb3NpdGl2ZSkKLXsKLSAgIHNhdmVkX2Fzc2VydGlvbjxCaWRpSXRlcmF0b3I+KiBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9hc3NlcnRpb248QmlkaUl0ZXJhdG9yPio+KG1fYmFja3VwX3N0YXRlKTsKLSAgIC0tcG1wOwotICAgaWYocG1wIDwgbV9zdGFja19iYXNlKQotICAgewotICAgICAgZXh0ZW5kX3N0YWNrKCk7Ci0gICAgICBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9hc3NlcnRpb248QmlkaUl0ZXJhdG9yPio+KG1fYmFja3VwX3N0YXRlKTsKLSAgICAgIC0tcG1wOwotICAgfQotICAgKHZvaWQpIG5ldyAocG1wKXNhdmVkX2Fzc2VydGlvbjxCaWRpSXRlcmF0b3I+KHBvc2l0aXZlLCBwcywgcG9zaXRpb24pOwotICAgbV9iYWNrdXBfc3RhdGUgPSBwbXA7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotaW5saW5lIHZvaWQgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjpwdXNoX2FsdChjb25zdCByZV9zeW50YXhfYmFzZSogcHMpCi17Ci0gICBzYXZlZF9wb3NpdGlvbjxCaWRpSXRlcmF0b3I+KiBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9wb3NpdGlvbjxCaWRpSXRlcmF0b3I+Kj4obV9iYWNrdXBfc3RhdGUpOwotICAgLS1wbXA7Ci0gICBpZihwbXAgPCBtX3N0YWNrX2Jhc2UpCi0gICB7Ci0gICAgICBleHRlbmRfc3RhY2soKTsKLSAgICAgIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX3Bvc2l0aW9uPEJpZGlJdGVyYXRvcj4qPihtX2JhY2t1cF9zdGF0ZSk7Ci0gICAgICAtLXBtcDsKLSAgIH0KLSAgICh2b2lkKSBuZXcgKHBtcClzYXZlZF9wb3NpdGlvbjxCaWRpSXRlcmF0b3I+KHBzLCBwb3NpdGlvbiwgc2F2ZWRfc3RhdGVfYWx0KTsKLSAgIG1fYmFja3VwX3N0YXRlID0gcG1wOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWlubGluZSB2b2lkIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6cHVzaF9ub25fZ3JlZWR5X3JlcGVhdChjb25zdCByZV9zeW50YXhfYmFzZSogcHMpCi17Ci0gICBzYXZlZF9wb3NpdGlvbjxCaWRpSXRlcmF0b3I+KiBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9wb3NpdGlvbjxCaWRpSXRlcmF0b3I+Kj4obV9iYWNrdXBfc3RhdGUpOwotICAgLS1wbXA7Ci0gICBpZihwbXAgPCBtX3N0YWNrX2Jhc2UpCi0gICB7Ci0gICAgICBleHRlbmRfc3RhY2soKTsKLSAgICAgIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX3Bvc2l0aW9uPEJpZGlJdGVyYXRvcj4qPihtX2JhY2t1cF9zdGF0ZSk7Ci0gICAgICAtLXBtcDsKLSAgIH0KLSAgICh2b2lkKSBuZXcgKHBtcClzYXZlZF9wb3NpdGlvbjxCaWRpSXRlcmF0b3I+KHBzLCBwb3NpdGlvbiwgc2F2ZWRfc3RhdGVfbm9uX2dyZWVkeV9sb25nX3JlcGVhdCk7Ci0gICBtX2JhY2t1cF9zdGF0ZSA9IHBtcDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1pbmxpbmUgdm9pZCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnB1c2hfcmVwZWF0ZXJfY291bnQoaW50IGksIHJlcGVhdGVyX2NvdW50PEJpZGlJdGVyYXRvcj4qKiBzKQotewotICAgc2F2ZWRfcmVwZWF0ZXI8QmlkaUl0ZXJhdG9yPiogcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfcmVwZWF0ZXI8QmlkaUl0ZXJhdG9yPio+KG1fYmFja3VwX3N0YXRlKTsKLSAgIC0tcG1wOwotICAgaWYocG1wIDwgbV9zdGFja19iYXNlKQotICAgewotICAgICAgZXh0ZW5kX3N0YWNrKCk7Ci0gICAgICBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9yZXBlYXRlcjxCaWRpSXRlcmF0b3I+Kj4obV9iYWNrdXBfc3RhdGUpOwotICAgICAgLS1wbXA7Ci0gICB9Ci0gICAodm9pZCkgbmV3IChwbXApc2F2ZWRfcmVwZWF0ZXI8QmlkaUl0ZXJhdG9yPihpLCBzLCBwb3NpdGlvbik7Ci0gICBtX2JhY2t1cF9zdGF0ZSA9IHBtcDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1pbmxpbmUgdm9pZCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnB1c2hfc2luZ2xlX3JlcGVhdChzdGQ6OnNpemVfdCBjLCBjb25zdCByZV9yZXBlYXQqIHIsIEJpZGlJdGVyYXRvciBsYXN0X3Bvc2l0aW9uLCBpbnQgc3RhdGVfaWQpCi17Ci0gICBzYXZlZF9zaW5nbGVfcmVwZWF0PEJpZGlJdGVyYXRvcj4qIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX3NpbmdsZV9yZXBlYXQ8QmlkaUl0ZXJhdG9yPio+KG1fYmFja3VwX3N0YXRlKTsKLSAgIC0tcG1wOwotICAgaWYocG1wIDwgbV9zdGFja19iYXNlKQotICAgewotICAgICAgZXh0ZW5kX3N0YWNrKCk7Ci0gICAgICBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9zaW5nbGVfcmVwZWF0PEJpZGlJdGVyYXRvcj4qPihtX2JhY2t1cF9zdGF0ZSk7Ci0gICAgICAtLXBtcDsKLSAgIH0KLSAgICh2b2lkKSBuZXcgKHBtcClzYXZlZF9zaW5nbGVfcmVwZWF0PEJpZGlJdGVyYXRvcj4oYywgciwgbGFzdF9wb3NpdGlvbiwgc3RhdGVfaWQpOwotICAgbV9iYWNrdXBfc3RhdGUgPSBwbXA7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotaW5saW5lIHZvaWQgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjpwdXNoX3JlY3Vyc2lvbihpbnQgaWR4LCBjb25zdCByZV9zeW50YXhfYmFzZSogcCwgcmVzdWx0c190eXBlKiBwcmVzdWx0cykKLXsKLSAgIHNhdmVkX3JlY3Vyc2lvbjxyZXN1bHRzX3R5cGU+KiBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9yZWN1cnNpb248cmVzdWx0c190eXBlPio+KG1fYmFja3VwX3N0YXRlKTsKLSAgIC0tcG1wOwotICAgaWYocG1wIDwgbV9zdGFja19iYXNlKQotICAgewotICAgICAgZXh0ZW5kX3N0YWNrKCk7Ci0gICAgICBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9yZWN1cnNpb248cmVzdWx0c190eXBlPio+KG1fYmFja3VwX3N0YXRlKTsKLSAgICAgIC0tcG1wOwotICAgfQotICAgKHZvaWQpIG5ldyAocG1wKXNhdmVkX3JlY3Vyc2lvbjxyZXN1bHRzX3R5cGU+KGlkeCwgcCwgcHJlc3VsdHMpOwotICAgbV9iYWNrdXBfc3RhdGUgPSBwbXA7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3N0YXJ0bWFyaygpCi17Ci0gICBpbnQgaW5kZXggPSBzdGF0aWNfY2FzdDxjb25zdCByZV9icmFjZSo+KHBzdGF0ZSktPmluZGV4OwotICAgaWNhc2UgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9icmFjZSo+KHBzdGF0ZSktPmljYXNlOwotICAgc3dpdGNoKGluZGV4KQotICAgewotICAgY2FzZSAwOgotICAgICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgLTE6Ci0gICBjYXNlIC0yOgotICAgICAgewotICAgICAgICAgLy8gZm9yd2FyZCBsb29rYWhlYWQgYXNzZXJ0OgotICAgICAgICAgY29uc3QgcmVfc3ludGF4X2Jhc2UqIG5leHRfcHN0YXRlID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfanVtcCo+KHBzdGF0ZS0+bmV4dC5wKS0+YWx0LnAtPm5leHQucDsKLSAgICAgICAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wLT5uZXh0LnA7Ci0gICAgICAgICBwdXNoX2Fzc2VydGlvbihuZXh0X3BzdGF0ZSwgaW5kZXggPT0gLTEpOwotICAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICBjYXNlIC0zOgotICAgICAgewotICAgICAgICAgLy8gaW5kZXBlbmRlbnQgc3ViLWV4cHJlc3Npb24sIGN1cnJlbnRseSB0aGlzIGlzIGFsd2F5cyByZWN1cnNpdmU6Ci0gICAgICAgICBib29sIG9sZF9pbmRlcGVuZGVudCA9IG1faW5kZXBlbmRlbnQ7Ci0gICAgICAgICBtX2luZGVwZW5kZW50ID0gdHJ1ZTsKLSAgICAgICAgIGNvbnN0IHJlX3N5bnRheF9iYXNlKiBuZXh0X3BzdGF0ZSA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2p1bXAqPihwc3RhdGUtPm5leHQucCktPmFsdC5wLT5uZXh0LnA7Ci0gICAgICAgICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucC0+bmV4dC5wOwotICAgICAgICAgYm9vbCByID0gbWF0Y2hfYWxsX3N0YXRlcygpOwotICAgICAgICAgcHN0YXRlID0gbmV4dF9wc3RhdGU7Ci0gICAgICAgICBtX2luZGVwZW5kZW50ID0gb2xkX2luZGVwZW5kZW50OwotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX01BVENIX0VYVFJBCi0gICAgICAgICBpZihyICYmIChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfZXh0cmEpKQotICAgICAgICAgewotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIG91ciBjYXB0dXJlcyBoYXZlIGJlZW4gc3RvcmVkIGluICptX3ByZXN1bHQKLSAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gdW5wYWNrIHRoZW0sIGFuZCBpbnNlcnQgdGhlbQotICAgICAgICAgICAgLy8gYmFjayBpbiB0aGUgcmlnaHQgb3JkZXIgd2hlbiB3ZSB1bndpbmQgdGhlIHN0YWNrOgotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+IHRlbXBfbWF0Y2goKm1fcHJlc3VsdCk7Ci0gICAgICAgICAgICB1bnNpZ25lZCBpOwotICAgICAgICAgICAgZm9yKGkgPSAwOyBpIDwgdGVtcF9tYXRjaC5zaXplKCk7ICsraSkKLSAgICAgICAgICAgICAgICgqbV9wcmVzdWx0KVtpXS5nZXRfY2FwdHVyZXMoKS5jbGVhcigpOwotICAgICAgICAgICAgLy8gbWF0Y2ggZXZlcnl0aGluZyBlbHNlOgotICAgICAgICAgICAgciA9IG1hdGNoX2FsbF9zdGF0ZXMoKTsKLSAgICAgICAgICAgIC8vIG5vdyBwbGFjZSB0aGUgc3RvcmVkIGNhcHR1cmVzIGJhY2s6Ci0gICAgICAgICAgICBmb3IoaSA9IDA7IGkgPCB0ZW1wX21hdGNoLnNpemUoKTsgKytpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzdWJfbWF0Y2g8QmlkaUl0ZXJhdG9yPjo6Y2FwdHVyZV9zZXF1ZW5jZV90eXBlIHNlcTsKLSAgICAgICAgICAgICAgIHNlcSYgczEgPSAoKm1fcHJlc3VsdClbaV0uZ2V0X2NhcHR1cmVzKCk7Ci0gICAgICAgICAgICAgICBjb25zdCBzZXEmIHMyID0gdGVtcF9tYXRjaFtpXS5jYXB0dXJlcygpOwotICAgICAgICAgICAgICAgczEuaW5zZXJ0KAotICAgICAgICAgICAgICAgICAgczEuZW5kKCksIAotICAgICAgICAgICAgICAgICAgczIuYmVnaW4oKSwgCi0gICAgICAgICAgICAgICAgICBzMi5lbmQoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgIHJldHVybiByOwotICAgICAgfQotICAgY2FzZSAtNDoKLSAgICAgIHsKLSAgICAgIC8vIGNvbmRpdGlvbmFsIGV4cHJlc3Npb246Ci0gICAgICBjb25zdCByZV9hbHQqIGFsdCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2FsdCo+KHBzdGF0ZS0+bmV4dC5wKTsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVChhbHQtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfYWx0KTsKLSAgICAgIHBzdGF0ZSA9IGFsdC0+bmV4dC5wOwotICAgICAgaWYocHN0YXRlLT50eXBlID09IHN5bnRheF9lbGVtZW50X2Fzc2VydF9iYWNrcmVmKQotICAgICAgewotICAgICAgICAgaWYoIW1hdGNoX2Fzc2VydF9iYWNrcmVmKCkpCi0gICAgICAgICAgICBwc3RhdGUgPSBhbHQtPmFsdC5wOwotICAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICAvLyB6ZXJvIHdpZHRoIGFzc2VydGlvbiwgaGF2ZSB0byBtYXRjaCB0aGlzIHJlY3Vyc2l2ZWx5OgotICAgICAgICAgTkROQk9PU1RfQVNTRVJUKHBzdGF0ZS0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9zdGFydG1hcmspOwotICAgICAgICAgYm9vbCBuZWdhdGVkID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfYnJhY2UqPihwc3RhdGUpLT5pbmRleCA9PSAtMjsKLSAgICAgICAgIEJpZGlJdGVyYXRvciBzYXZlZF9wb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgICAgICAgY29uc3QgcmVfc3ludGF4X2Jhc2UqIG5leHRfcHN0YXRlID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfanVtcCo+KHBzdGF0ZS0+bmV4dC5wKS0+YWx0LnAtPm5leHQucDsKLSAgICAgICAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wLT5uZXh0LnA7Ci0gICAgICAgICBib29sIHIgPSBtYXRjaF9hbGxfc3RhdGVzKCk7Ci0gICAgICAgICBwb3NpdGlvbiA9IHNhdmVkX3Bvc2l0aW9uOwotICAgICAgICAgaWYobmVnYXRlZCkKLSAgICAgICAgICAgIHIgPSAhcjsKLSAgICAgICAgIGlmKHIpCi0gICAgICAgICAgICBwc3RhdGUgPSBuZXh0X3BzdGF0ZTsKLSAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHBzdGF0ZSA9IGFsdC0+YWx0LnA7Ci0gICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIH0KLSAgIGNhc2UgLTU6Ci0gICAgICB7Ci0gICAgICAgICBwdXNoX21hdGNoZWRfcGFyZW4oMCwgKCptX3ByZXN1bHQpWzBdKTsKLSAgICAgICAgIG1fcHJlc3VsdC0+c2V0X2ZpcnN0KHBvc2l0aW9uLCAwLCB0cnVlKTsKLSAgICAgICAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICBkZWZhdWx0OgotICAgewotICAgICAgTkROQk9PU1RfQVNTRVJUKGluZGV4ID4gMCk7Ci0gICAgICBpZigobV9tYXRjaF9mbGFncyAmIG1hdGNoX25vc3VicykgPT0gMCkKLSAgICAgIHsKLSAgICAgICAgIHB1c2hfbWF0Y2hlZF9wYXJlbihpbmRleCwgKCptX3ByZXN1bHQpW2luZGV4XSk7Ci0gICAgICAgICBtX3ByZXN1bHQtPnNldF9maXJzdChwb3NpdGlvbiwgaW5kZXgpOwotICAgICAgfQotICAgICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICAgICBicmVhazsKLSAgIH0KLSAgIH0KLSAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9hbHQoKQotewotICAgYm9vbCB0YWtlX2ZpcnN0LCB0YWtlX3NlY29uZDsKLSAgIGNvbnN0IHJlX2FsdCogam1wID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfYWx0Kj4ocHN0YXRlKTsKLQotICAgLy8gZmluZCBvdXQgd2hpY2ggb2YgdGhlc2UgdHdvIGFsdGVybmF0aXZlcyB3ZSBuZWVkIHRvIHRha2U6Ci0gICBpZihwb3NpdGlvbiA9PSBsYXN0KQotICAgewotICAgICAgdGFrZV9maXJzdCA9IGptcC0+Y2FuX2JlX251bGwgJiBtYXNrX3Rha2U7Ci0gICAgICB0YWtlX3NlY29uZCA9IGptcC0+Y2FuX2JlX251bGwgJiBtYXNrX3NraXA7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICB0YWtlX2ZpcnN0ID0gY2FuX3N0YXJ0KCpwb3NpdGlvbiwgam1wLT5fbWFwLCAodW5zaWduZWQgY2hhciltYXNrX3Rha2UpOwotICAgICAgdGFrZV9zZWNvbmQgPSBjYW5fc3RhcnQoKnBvc2l0aW9uLCBqbXAtPl9tYXAsICh1bnNpZ25lZCBjaGFyKW1hc2tfc2tpcCk7Ci0gIH0KLQotICAgaWYodGFrZV9maXJzdCkKLSAgIHsKLSAgICAgIC8vIHdlIGNhbiB0YWtlIHRoZSBmaXJzdCBhbHRlcm5hdGl2ZSwKLSAgICAgIC8vIHNlZSBpZiB3ZSBuZWVkIHRvIHB1c2ggbmV4dCBhbHRlcm5hdGl2ZToKLSAgICAgIGlmKHRha2Vfc2Vjb25kKQotICAgICAgewotICAgICAgICAgcHVzaF9hbHQoam1wLT5hbHQucCk7Ci0gICAgICB9Ci0gICAgICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucDsKLSAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgaWYodGFrZV9zZWNvbmQpCi0gICB7Ci0gICAgICBwc3RhdGUgPSBqbXAtPmFsdC5wOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICByZXR1cm4gZmFsc2U7ICAvLyBuZWl0aGVyIG9wdGlvbiBpcyBwb3NzaWJsZQotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9yZXAoKQotewotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEyNyA0MjQ0KQotI2VuZGlmCi0jaWZkZWYgX19CT1JMQU5EQ19fCi0jcHJhZ21hIG9wdGlvbiBwdXNoIC13LTgwMDggLXctODA2NiAtdy04MDA0Ci0jZW5kaWYKLSAgIGNvbnN0IHJlX3JlcGVhdCogcmVwID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfcmVwZWF0Kj4ocHN0YXRlKTsKLQotICAgLy8gZmluZCBvdXQgd2hpY2ggb2YgdGhlc2UgdHdvIGFsdGVybmF0aXZlcyB3ZSBuZWVkIHRvIHRha2U6Ci0gICBib29sIHRha2VfZmlyc3QsIHRha2Vfc2Vjb25kOwotICAgaWYocG9zaXRpb24gPT0gbGFzdCkKLSAgIHsKLSAgICAgIHRha2VfZmlyc3QgPSByZXAtPmNhbl9iZV9udWxsICYgbWFza190YWtlOwotICAgICAgdGFrZV9zZWNvbmQgPSByZXAtPmNhbl9iZV9udWxsICYgbWFza19za2lwOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgdGFrZV9maXJzdCA9IGNhbl9zdGFydCgqcG9zaXRpb24sIHJlcC0+X21hcCwgKHVuc2lnbmVkIGNoYXIpbWFza190YWtlKTsKLSAgICAgIHRha2Vfc2Vjb25kID0gY2FuX3N0YXJ0KCpwb3NpdGlvbiwgcmVwLT5fbWFwLCAodW5zaWduZWQgY2hhciltYXNrX3NraXApOwotICAgfQotCi0gICBpZigobV9iYWNrdXBfc3RhdGUtPnN0YXRlX2lkICE9IHNhdmVkX3N0YXRlX3JlcGVhdGVyX2NvdW50KSAKLSAgICAgIHx8IChzdGF0aWNfY2FzdDxzYXZlZF9yZXBlYXRlcjxCaWRpSXRlcmF0b3I+Kj4obV9iYWNrdXBfc3RhdGUpLT5jb3VudC5nZXRfaWQoKSAhPSByZXAtPnN0YXRlX2lkKQotICAgICAgfHwgKG5leHRfY291bnQtPmdldF9pZCgpICE9IHJlcC0+c3RhdGVfaWQpKQotICAgewotICAgICAgLy8gd2UncmUgbW92aW5nIHRvIGEgZGlmZmVyZW50IHJlcGVhdCBmcm9tIHRoZSBsYXN0Ci0gICAgICAvLyBvbmUsIHNvIHNldCB1cCBhIGNvdW50ZXIgb2JqZWN0OgotICAgICAgcHVzaF9yZXBlYXRlcl9jb3VudChyZXAtPnN0YXRlX2lkLCAmbmV4dF9jb3VudCk7Ci0gICB9Ci0gICAvLwotICAgLy8gSWYgd2UndmUgaGFkIGF0IGxlYXN0IG9uZSByZXBlYXQgYWxyZWFkeSwgYW5kIHRoZSBsYXN0IG9uZSAKLSAgIC8vIG1hdGNoZWQgdGhlIE5VTEwgc3RyaW5nIHRoZW4gc2V0IHRoZSByZXBlYXQgY291bnQgdG8KLSAgIC8vIG1heGltdW06Ci0gICAvLwotICAgbmV4dF9jb3VudC0+Y2hlY2tfbnVsbF9yZXBlYXQocG9zaXRpb24sIHJlcC0+bWF4KTsKLQotICAgaWYobmV4dF9jb3VudC0+Z2V0X2NvdW50KCkgPCByZXAtPm1pbikKLSAgIHsKLSAgICAgIC8vIHdlIG11c3QgdGFrZSB0aGUgcmVwZWF0OgotICAgICAgaWYodGFrZV9maXJzdCkKLSAgICAgIHsKLSAgICAgICAgIC8vIGluY3JlYXNlIHRoZSBjb3VudGVyOgotICAgICAgICAgKysoKm5leHRfY291bnQpOwotICAgICAgICAgcHN0YXRlID0gcmVwLT5uZXh0LnA7Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLQotICAgYm9vbCBncmVlZHkgPSAocmVwLT5ncmVlZHkpICYmICghKG1fbWF0Y2hfZmxhZ3MgJiByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSkgfHwgbV9pbmRlcGVuZGVudCk7ICAgCi0gICBpZihncmVlZHkpCi0gICB7Ci0gICAgICAvLyB0cnkgYW5kIHRha2UgdGhlIHJlcGVhdCBpZiB3ZSBjYW46Ci0gICAgICBpZigobmV4dF9jb3VudC0+Z2V0X2NvdW50KCkgPCByZXAtPm1heCkgJiYgdGFrZV9maXJzdCkKLSAgICAgIHsKLSAgICAgICAgIGlmKHRha2Vfc2Vjb25kKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gc3RvcmUgcG9zaXRpb24gaW4gY2FzZSB3ZSBmYWlsOgotICAgICAgICAgICAgcHVzaF9hbHQocmVwLT5hbHQucCk7Ci0gICAgICAgICB9Ci0gICAgICAgICAvLyBpbmNyZWFzZSB0aGUgY291bnRlcjoKLSAgICAgICAgICsrKCpuZXh0X2NvdW50KTsKLSAgICAgICAgIHBzdGF0ZSA9IHJlcC0+bmV4dC5wOwotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKHRha2Vfc2Vjb25kKQotICAgICAgewotICAgICAgICAgcHN0YXRlID0gcmVwLT5hbHQucDsKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgcmV0dXJuIGZhbHNlOyAvLyBjYW4ndCB0YWtlIGFueXRoaW5nLCBmYWlsLi4uCi0gICB9Ci0gICBlbHNlIC8vIG5vbi1ncmVlZHkKLSAgIHsKLSAgICAgIC8vIHRyeSBhbmQgc2tpcCB0aGUgcmVwZWF0IGlmIHdlIGNhbjoKLSAgICAgIGlmKHRha2Vfc2Vjb25kKQotICAgICAgewotICAgICAgICAgaWYoKG5leHRfY291bnQtPmdldF9jb3VudCgpIDwgcmVwLT5tYXgpICYmIHRha2VfZmlyc3QpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBzdG9yZSBwb3NpdGlvbiBpbiBjYXNlIHdlIGZhaWw6Ci0gICAgICAgICAgICBwdXNoX25vbl9ncmVlZHlfcmVwZWF0KHJlcC0+bmV4dC5wKTsKLSAgICAgICAgIH0KLSAgICAgICAgIHBzdGF0ZSA9IHJlcC0+YWx0LnA7Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIGlmKChuZXh0X2NvdW50LT5nZXRfY291bnQoKSA8IHJlcC0+bWF4KSAmJiB0YWtlX2ZpcnN0KQotICAgICAgewotICAgICAgICAgLy8gaW5jcmVhc2UgdGhlIGNvdW50ZXI6Ci0gICAgICAgICArKygqbmV4dF9jb3VudCk7Ci0gICAgICAgICBwc3RhdGUgPSByZXAtPm5leHQucDsKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgfQotICAgcmV0dXJuIGZhbHNlOwotI2lmZGVmIF9fQk9STEFORENfXwotI3ByYWdtYSBvcHRpb24gcG9wCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2RvdF9yZXBlYXRfc2xvdygpCi17Ci0gICB1bnNpZ25lZCBjb3VudCA9IDA7Ci0gICBjb25zdCByZV9yZXBlYXQqIHJlcCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX3JlcGVhdCo+KHBzdGF0ZSk7Ci0gICByZV9zeW50YXhfYmFzZSogcHNpbmdsZSA9IHJlcC0+bmV4dC5wOwotICAgLy8gbWF0Y2ggY29tcHVsc2FyeSByZXBlYXRzIGZpcnN0OgotICAgd2hpbGUoY291bnQgPCByZXAtPm1pbikKLSAgIHsKLSAgICAgIHBzdGF0ZSA9IHBzaW5nbGU7Ci0gICAgICBpZighbWF0Y2hfd2lsZCgpKQotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgKytjb3VudDsKLSAgIH0KLSAgIGJvb2wgZ3JlZWR5ID0gKHJlcC0+Z3JlZWR5KSAmJiAoIShtX21hdGNoX2ZsYWdzICYgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpIHx8IG1faW5kZXBlbmRlbnQpOyAgIAotICAgaWYoZ3JlZWR5KQotICAgewotICAgICAgLy8gcmVwZWF0IGZvciBhcyBsb25nIGFzIHdlIGNhbjoKLSAgICAgIHdoaWxlKGNvdW50IDwgcmVwLT5tYXgpCi0gICAgICB7Ci0gICAgICAgICBwc3RhdGUgPSBwc2luZ2xlOwotICAgICAgICAgaWYoIW1hdGNoX3dpbGQoKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgKytjb3VudDsKLSAgICAgIH0KLSAgICAgIC8vIHJlbWVtYmVyIHdoZXJlIHdlIGdvdCB0byBpZiB0aGlzIGlzIGEgbGVhZGluZyByZXBlYXQ6Ci0gICAgICBpZigocmVwLT5sZWFkaW5nKSAmJiAoY291bnQgPCByZXAtPm1heCkpCi0gICAgICAgICByZXN0YXJ0ID0gcG9zaXRpb247Ci0gICAgICAvLyBwdXNoIGJhY2t0cmFjayBpbmZvIGlmIGF2YWlsYWJsZToKLSAgICAgIGlmKGNvdW50IC0gcmVwLT5taW4pCi0gICAgICAgICBwdXNoX3NpbmdsZV9yZXBlYXQoY291bnQsIHJlcCwgcG9zaXRpb24sIHNhdmVkX3N0YXRlX2dyZWVkeV9zaW5nbGVfcmVwZWF0KTsKLSAgICAgIC8vIGp1bXAgdG8gbmV4dCBzdGF0ZToKLSAgICAgIHBzdGF0ZSA9IHJlcC0+YWx0LnA7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIC8vIG5vbi1ncmVlZHksIHB1c2ggc3RhdGUgYW5kIHJldHVybiB0cnVlIGlmIHdlIGNhbiBza2lwOgotICAgICAgaWYoY291bnQgPCByZXAtPm1heCkKLSAgICAgICAgIHB1c2hfc2luZ2xlX3JlcGVhdChjb3VudCwgcmVwLCBwb3NpdGlvbiwgc2F2ZWRfc3RhdGVfcmVwX3Nsb3dfZG90KTsKLSAgICAgIHBzdGF0ZSA9IHJlcC0+YWx0LnA7Ci0gICAgICByZXR1cm4gKHBvc2l0aW9uID09IGxhc3QpID8gKHJlcC0+Y2FuX2JlX251bGwgJiBtYXNrX3NraXApIDogY2FuX3N0YXJ0KCpwb3NpdGlvbiwgcmVwLT5fbWFwLCBtYXNrX3NraXApOwotICAgfQotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9kb3RfcmVwZWF0X2Zhc3QoKQotewotICAgaWYobV9tYXRjaF9mbGFncyAmIG1hdGNoX25vdF9kb3RfbnVsbCkKLSAgICAgIHJldHVybiBtYXRjaF9kb3RfcmVwZWF0X3Nsb3coKTsKLSAgIGlmKChzdGF0aWNfY2FzdDxjb25zdCByZV9kb3QqPihwc3RhdGUtPm5leHQucCktPm1hc2sgJiBtYXRjaF9hbnlfbWFzaykgPT0gMCkKLSAgICAgIHJldHVybiBtYXRjaF9kb3RfcmVwZWF0X3Nsb3coKTsKLQotICAgY29uc3QgcmVfcmVwZWF0KiByZXAgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9yZXBlYXQqPihwc3RhdGUpOwotICAgYm9vbCBncmVlZHkgPSAocmVwLT5ncmVlZHkpICYmICghKG1fbWF0Y2hfZmxhZ3MgJiByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSkgfHwgbV9pbmRlcGVuZGVudCk7ICAgCi0gICB1bnNpZ25lZCBjb3VudCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPigoc3RkOjptaW4pKHN0YXRpY19jYXN0PHVuc2lnbmVkPig6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKHBvc2l0aW9uLCBsYXN0KSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihncmVlZHkgPyByZXAtPm1heCA6IHJlcC0+bWluKSkpOwotICAgaWYocmVwLT5taW4gPiBjb3VudCkKLSAgIHsKLSAgICAgIHBvc2l0aW9uID0gbGFzdDsKLSAgICAgIHJldHVybiBmYWxzZTsgIC8vIG5vdCBlbm91Z2ggdGV4dCBsZWZ0IHRvIG1hdGNoCi0gICB9Ci0gICBzdGQ6OmFkdmFuY2UocG9zaXRpb24sIGNvdW50KTsKLQotICAgaWYoZ3JlZWR5KQotICAgewotICAgICAgaWYoKHJlcC0+bGVhZGluZykgJiYgKGNvdW50IDwgcmVwLT5tYXgpKQotICAgICAgICAgcmVzdGFydCA9IHBvc2l0aW9uOwotICAgICAgLy8gcHVzaCBiYWNrdHJhY2sgaW5mbyBpZiBhdmFpbGFibGU6Ci0gICAgICBpZihjb3VudCAtIHJlcC0+bWluKQotICAgICAgICAgcHVzaF9zaW5nbGVfcmVwZWF0KGNvdW50LCByZXAsIHBvc2l0aW9uLCBzYXZlZF9zdGF0ZV9ncmVlZHlfc2luZ2xlX3JlcGVhdCk7Ci0gICAgICAvLyBqdW1wIHRvIG5leHQgc3RhdGU6Ci0gICAgICBwc3RhdGUgPSByZXAtPmFsdC5wOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICAvLyBub24tZ3JlZWR5LCBwdXNoIHN0YXRlIGFuZCByZXR1cm4gdHJ1ZSBpZiB3ZSBjYW4gc2tpcDoKLSAgICAgIGlmKGNvdW50IDwgcmVwLT5tYXgpCi0gICAgICAgICBwdXNoX3NpbmdsZV9yZXBlYXQoY291bnQsIHJlcCwgcG9zaXRpb24sIHNhdmVkX3N0YXRlX3JlcF9mYXN0X2RvdCk7Ci0gICAgICBwc3RhdGUgPSByZXAtPmFsdC5wOwotICAgICAgcmV0dXJuIChwb3NpdGlvbiA9PSBsYXN0KSA/IChyZXAtPmNhbl9iZV9udWxsICYgbWFza19za2lwKSA6IGNhbl9zdGFydCgqcG9zaXRpb24sIHJlcC0+X21hcCwgbWFza19za2lwKTsKLSAgIH0KLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfY2hhcl9yZXBlYXQoKQotewotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEyNykKLSNlbmRpZgotI2lmZGVmIF9fQk9STEFORENfXwotI3ByYWdtYSBvcHRpb24gcHVzaCAtdy04MDA4IC13LTgwNjYgLXctODAwNAotI2VuZGlmCi0gICBjb25zdCByZV9yZXBlYXQqIHJlcCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX3JlcGVhdCo+KHBzdGF0ZSk7Ci0gICBORE5CT09TVF9BU1NFUlQoMSA9PSBzdGF0aWNfY2FzdDxjb25zdCByZV9saXRlcmFsKj4ocmVwLT5uZXh0LnApLT5sZW5ndGgpOwotICAgY29uc3QgY2hhcl90eXBlIHdoYXQgPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyX3R5cGUqPihzdGF0aWNfY2FzdDxjb25zdCByZV9saXRlcmFsKj4ocmVwLT5uZXh0LnApICsgMSk7Ci0gICBzdGQ6OnNpemVfdCBjb3VudCA9IDA7Ci0gICAvLwotICAgLy8gc3RhcnQgYnkgd29ya2luZyBvdXQgaG93IG11Y2ggd2UgY2FuIHNraXA6Ci0gICAvLwotICAgYm9vbCBncmVlZHkgPSAocmVwLT5ncmVlZHkpICYmICghKG1fbWF0Y2hfZmxhZ3MgJiByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSkgfHwgbV9pbmRlcGVuZGVudCk7ICAgCi0gICBzdGQ6OnNpemVfdCBkZXNpcmVkID0gZ3JlZWR5ID8gcmVwLT5tYXggOiByZXAtPm1pbjsKLSAgIGlmKDo6bmRuYm9vc3Q6OmlzX3JhbmRvbV9hY2Nlc3NfaXRlcmF0b3I8QmlkaUl0ZXJhdG9yPjo6dmFsdWUpCi0gICB7Ci0gICAgICBCaWRpSXRlcmF0b3IgZW5kID0gcG9zaXRpb247Ci0gICAgICBzdGQ6OmFkdmFuY2UoZW5kLCAoc3RkOjptaW4pKChzdGQ6OnNpemVfdCk6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKHBvc2l0aW9uLCBsYXN0KSwgZGVzaXJlZCkpOwotICAgICAgQmlkaUl0ZXJhdG9yIG9yaWdpbihwb3NpdGlvbik7Ci0gICAgICB3aGlsZSgocG9zaXRpb24gIT0gZW5kKSAmJiAodHJhaXRzX2luc3QudHJhbnNsYXRlKCpwb3NpdGlvbiwgaWNhc2UpID09IHdoYXQpKQotICAgICAgewotICAgICAgICAgKytwb3NpdGlvbjsKLSAgICAgIH0KLSAgICAgIGNvdW50ID0gKHVuc2lnbmVkKTo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2Uob3JpZ2luLCBwb3NpdGlvbik7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICB3aGlsZSgoY291bnQgPCBkZXNpcmVkKSAmJiAocG9zaXRpb24gIT0gbGFzdCkgJiYgKHRyYWl0c19pbnN0LnRyYW5zbGF0ZSgqcG9zaXRpb24sIGljYXNlKSA9PSB3aGF0KSkKLSAgICAgIHsKLSAgICAgICAgICsrcG9zaXRpb247Ci0gICAgICAgICArK2NvdW50OwotICAgICAgfQotICAgfQotCi0gICBpZihjb3VudCA8IHJlcC0+bWluKQotICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICBpZihncmVlZHkpCi0gICB7Ci0gICAgICBpZigocmVwLT5sZWFkaW5nKSAmJiAoY291bnQgPCByZXAtPm1heCkpCi0gICAgICAgICByZXN0YXJ0ID0gcG9zaXRpb247Ci0gICAgICAvLyBwdXNoIGJhY2t0cmFjayBpbmZvIGlmIGF2YWlsYWJsZToKLSAgICAgIGlmKGNvdW50IC0gcmVwLT5taW4pCi0gICAgICAgICBwdXNoX3NpbmdsZV9yZXBlYXQoY291bnQsIHJlcCwgcG9zaXRpb24sIHNhdmVkX3N0YXRlX2dyZWVkeV9zaW5nbGVfcmVwZWF0KTsKLSAgICAgIC8vIGp1bXAgdG8gbmV4dCBzdGF0ZToKLSAgICAgIHBzdGF0ZSA9IHJlcC0+YWx0LnA7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIC8vIG5vbi1ncmVlZHksIHB1c2ggc3RhdGUgYW5kIHJldHVybiB0cnVlIGlmIHdlIGNhbiBza2lwOgotICAgICAgaWYoY291bnQgPCByZXAtPm1heCkKLSAgICAgICAgIHB1c2hfc2luZ2xlX3JlcGVhdChjb3VudCwgcmVwLCBwb3NpdGlvbiwgc2F2ZWRfc3RhdGVfcmVwX2NoYXIpOwotICAgICAgcHN0YXRlID0gcmVwLT5hbHQucDsKLSAgICAgIHJldHVybiAocG9zaXRpb24gPT0gbGFzdCkgPyAocmVwLT5jYW5fYmVfbnVsbCAmIG1hc2tfc2tpcCkgOiBjYW5fc3RhcnQoKnBvc2l0aW9uLCByZXAtPl9tYXAsIG1hc2tfc2tpcCk7Ci0gICB9Ci0jaWZkZWYgX19CT1JMQU5EQ19fCi0jcHJhZ21hIG9wdGlvbiBwb3AKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfc2V0X3JlcGVhdCgpCi17Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTI3KQotI2VuZGlmCi0jaWZkZWYgX19CT1JMQU5EQ19fCi0jcHJhZ21hIG9wdGlvbiBwdXNoIC13LTgwMDggLXctODA2NiAtdy04MDA0Ci0jZW5kaWYKLSAgIGNvbnN0IHJlX3JlcGVhdCogcmVwID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfcmVwZWF0Kj4ocHN0YXRlKTsKLSAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIG1hcCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX3NldCo+KHJlcC0+bmV4dC5wKS0+X21hcDsKLSAgIHN0ZDo6c2l6ZV90IGNvdW50ID0gMDsKLSAgIC8vCi0gICAvLyBzdGFydCBieSB3b3JraW5nIG91dCBob3cgbXVjaCB3ZSBjYW4gc2tpcDoKLSAgIC8vCi0gICBib29sIGdyZWVkeSA9IChyZXAtPmdyZWVkeSkgJiYgKCEobV9tYXRjaF9mbGFncyAmIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KSB8fCBtX2luZGVwZW5kZW50KTsgICAKLSAgIHN0ZDo6c2l6ZV90IGRlc2lyZWQgPSBncmVlZHkgPyByZXAtPm1heCA6IHJlcC0+bWluOwotICAgaWYoOjpuZG5ib29zdDo6aXNfcmFuZG9tX2FjY2Vzc19pdGVyYXRvcjxCaWRpSXRlcmF0b3I+Ojp2YWx1ZSkKLSAgIHsKLSAgICAgIEJpZGlJdGVyYXRvciBlbmQgPSBwb3NpdGlvbjsKLSAgICAgIHN0ZDo6YWR2YW5jZShlbmQsIChzdGQ6Om1pbikoKHN0ZDo6c2l6ZV90KTo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2UocG9zaXRpb24sIGxhc3QpLCBkZXNpcmVkKSk7Ci0gICAgICBCaWRpSXRlcmF0b3Igb3JpZ2luKHBvc2l0aW9uKTsKLSAgICAgIHdoaWxlKChwb3NpdGlvbiAhPSBlbmQpICYmIG1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih0cmFpdHNfaW5zdC50cmFuc2xhdGUoKnBvc2l0aW9uLCBpY2FzZSkpXSkKLSAgICAgIHsKLSAgICAgICAgICsrcG9zaXRpb247Ci0gICAgICB9Ci0gICAgICBjb3VudCA9ICh1bnNpZ25lZCk6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKG9yaWdpbiwgcG9zaXRpb24pOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgd2hpbGUoKGNvdW50IDwgZGVzaXJlZCkgJiYgKHBvc2l0aW9uICE9IGxhc3QpICYmIG1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih0cmFpdHNfaW5zdC50cmFuc2xhdGUoKnBvc2l0aW9uLCBpY2FzZSkpXSkKLSAgICAgIHsKLSAgICAgICAgICsrcG9zaXRpb247Ci0gICAgICAgICArK2NvdW50OwotICAgICAgfQotICAgfQotCi0gICBpZihjb3VudCA8IHJlcC0+bWluKQotICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICBpZihncmVlZHkpCi0gICB7Ci0gICAgICBpZigocmVwLT5sZWFkaW5nKSAmJiAoY291bnQgPCByZXAtPm1heCkpCi0gICAgICAgICByZXN0YXJ0ID0gcG9zaXRpb247Ci0gICAgICAvLyBwdXNoIGJhY2t0cmFjayBpbmZvIGlmIGF2YWlsYWJsZToKLSAgICAgIGlmKGNvdW50IC0gcmVwLT5taW4pCi0gICAgICAgICBwdXNoX3NpbmdsZV9yZXBlYXQoY291bnQsIHJlcCwgcG9zaXRpb24sIHNhdmVkX3N0YXRlX2dyZWVkeV9zaW5nbGVfcmVwZWF0KTsKLSAgICAgIC8vIGp1bXAgdG8gbmV4dCBzdGF0ZToKLSAgICAgIHBzdGF0ZSA9IHJlcC0+YWx0LnA7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIC8vIG5vbi1ncmVlZHksIHB1c2ggc3RhdGUgYW5kIHJldHVybiB0cnVlIGlmIHdlIGNhbiBza2lwOgotICAgICAgaWYoY291bnQgPCByZXAtPm1heCkKLSAgICAgICAgIHB1c2hfc2luZ2xlX3JlcGVhdChjb3VudCwgcmVwLCBwb3NpdGlvbiwgc2F2ZWRfc3RhdGVfcmVwX3Nob3J0X3NldCk7Ci0gICAgICBwc3RhdGUgPSByZXAtPmFsdC5wOwotICAgICAgcmV0dXJuIChwb3NpdGlvbiA9PSBsYXN0KSA/IChyZXAtPmNhbl9iZV9udWxsICYgbWFza19za2lwKSA6IGNhbl9zdGFydCgqcG9zaXRpb24sIHJlcC0+X21hcCwgbWFza19za2lwKTsKLSAgIH0KLSNpZmRlZiBfX0JPUkxBTkRDX18KLSNwcmFnbWEgb3B0aW9uIHBvcAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9sb25nX3NldF9yZXBlYXQoKQotewotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEyNykKLSNlbmRpZgotI2lmZGVmIF9fQk9STEFORENfXwotI3ByYWdtYSBvcHRpb24gcHVzaCAtdy04MDA4IC13LTgwNjYgLXctODAwNAotI2VuZGlmCi0gICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0czo6Y2hhcl9jbGFzc190eXBlIG1fdHlwZTsKLSAgIGNvbnN0IHJlX3JlcGVhdCogcmVwID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfcmVwZWF0Kj4ocHN0YXRlKTsKLSAgIGNvbnN0IHJlX3NldF9sb25nPG1fdHlwZT4qIHNldCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX3NldF9sb25nPG1fdHlwZT4qPihwc3RhdGUtPm5leHQucCk7Ci0gICBzdGQ6OnNpemVfdCBjb3VudCA9IDA7Ci0gICAvLwotICAgLy8gc3RhcnQgYnkgd29ya2luZyBvdXQgaG93IG11Y2ggd2UgY2FuIHNraXA6Ci0gICAvLwotICAgYm9vbCBncmVlZHkgPSAocmVwLT5ncmVlZHkpICYmICghKG1fbWF0Y2hfZmxhZ3MgJiByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSkgfHwgbV9pbmRlcGVuZGVudCk7ICAgCi0gICBzdGQ6OnNpemVfdCBkZXNpcmVkID0gZ3JlZWR5ID8gcmVwLT5tYXggOiByZXAtPm1pbjsKLSAgIGlmKDo6bmRuYm9vc3Q6OmlzX3JhbmRvbV9hY2Nlc3NfaXRlcmF0b3I8QmlkaUl0ZXJhdG9yPjo6dmFsdWUpCi0gICB7Ci0gICAgICBCaWRpSXRlcmF0b3IgZW5kID0gcG9zaXRpb247Ci0gICAgICBzdGQ6OmFkdmFuY2UoZW5kLCAoc3RkOjptaW4pKChzdGQ6OnNpemVfdCk6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKHBvc2l0aW9uLCBsYXN0KSwgZGVzaXJlZCkpOwotICAgICAgQmlkaUl0ZXJhdG9yIG9yaWdpbihwb3NpdGlvbik7Ci0gICAgICB3aGlsZSgocG9zaXRpb24gIT0gZW5kKSAmJiAocG9zaXRpb24gIT0gcmVfaXNfc2V0X21lbWJlcihwb3NpdGlvbiwgbGFzdCwgc2V0LCByZS5nZXRfZGF0YSgpLCBpY2FzZSkpKQotICAgICAgewotICAgICAgICAgKytwb3NpdGlvbjsKLSAgICAgIH0KLSAgICAgIGNvdW50ID0gKHVuc2lnbmVkKTo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2Uob3JpZ2luLCBwb3NpdGlvbik7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICB3aGlsZSgoY291bnQgPCBkZXNpcmVkKSAmJiAocG9zaXRpb24gIT0gbGFzdCkgJiYgKHBvc2l0aW9uICE9IHJlX2lzX3NldF9tZW1iZXIocG9zaXRpb24sIGxhc3QsIHNldCwgcmUuZ2V0X2RhdGEoKSwgaWNhc2UpKSkKLSAgICAgIHsKLSAgICAgICAgICsrcG9zaXRpb247Ci0gICAgICAgICArK2NvdW50OwotICAgICAgfQotICAgfQotCi0gICBpZihjb3VudCA8IHJlcC0+bWluKQotICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICBpZihncmVlZHkpCi0gICB7Ci0gICAgICBpZigocmVwLT5sZWFkaW5nKSAmJiAoY291bnQgPCByZXAtPm1heCkpCi0gICAgICAgICByZXN0YXJ0ID0gcG9zaXRpb247Ci0gICAgICAvLyBwdXNoIGJhY2t0cmFjayBpbmZvIGlmIGF2YWlsYWJsZToKLSAgICAgIGlmKGNvdW50IC0gcmVwLT5taW4pCi0gICAgICAgICBwdXNoX3NpbmdsZV9yZXBlYXQoY291bnQsIHJlcCwgcG9zaXRpb24sIHNhdmVkX3N0YXRlX2dyZWVkeV9zaW5nbGVfcmVwZWF0KTsKLSAgICAgIC8vIGp1bXAgdG8gbmV4dCBzdGF0ZToKLSAgICAgIHBzdGF0ZSA9IHJlcC0+YWx0LnA7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIC8vIG5vbi1ncmVlZHksIHB1c2ggc3RhdGUgYW5kIHJldHVybiB0cnVlIGlmIHdlIGNhbiBza2lwOgotICAgICAgaWYoY291bnQgPCByZXAtPm1heCkKLSAgICAgICAgIHB1c2hfc2luZ2xlX3JlcGVhdChjb3VudCwgcmVwLCBwb3NpdGlvbiwgc2F2ZWRfc3RhdGVfcmVwX2xvbmdfc2V0KTsKLSAgICAgIHBzdGF0ZSA9IHJlcC0+YWx0LnA7Ci0gICAgICByZXR1cm4gKHBvc2l0aW9uID09IGxhc3QpID8gKHJlcC0+Y2FuX2JlX251bGwgJiBtYXNrX3NraXApIDogY2FuX3N0YXJ0KCpwb3NpdGlvbiwgcmVwLT5fbWFwLCBtYXNrX3NraXApOwotICAgfQotI2lmZGVmIF9fQk9STEFORENfXwotI3ByYWdtYSBvcHRpb24gcG9wCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3JlY3Vyc2lvbigpCi17Ci0gICBORE5CT09TVF9BU1NFUlQocHN0YXRlLT50eXBlID09IHN5bnRheF9lbGVtZW50X3JlY3Vyc2UpOwotICAgLy8KLSAgIC8vIEJhY2t1cCBjYWxsIHN0YWNrOgotICAgLy8KLSAgIHB1c2hfcmVjdXJzaW9uX3BvcCgpOwotICAgLy8KLSAgIC8vIFNldCBuZXcgY2FsbCBzdGFjazoKLSAgIC8vCi0gICBpZihyZWN1cnNpb25fc3RhY2suY2FwYWNpdHkoKSA9PSAwKQotICAgewotICAgICAgcmVjdXJzaW9uX3N0YWNrLnJlc2VydmUoNTApOwotICAgfQotICAgcmVjdXJzaW9uX3N0YWNrLnB1c2hfYmFjayhyZWN1cnNpb25faW5mbzxyZXN1bHRzX3R5cGU+KCkpOwotICAgcmVjdXJzaW9uX3N0YWNrLmJhY2soKS5wcmV0dXJuX2FkZHJlc3MgPSBwc3RhdGUtPm5leHQucDsKLSAgIHJlY3Vyc2lvbl9zdGFjay5iYWNrKCkucmVzdWx0cyA9ICptX3ByZXN1bHQ7Ci0gICBpZihzdGF0aWNfY2FzdDxjb25zdCByZV9yZWN1cnNlKj4ocHN0YXRlKS0+c3RhdGVfaWQgPiAwKQotICAgewotICAgICAgcHVzaF9yZXBlYXRlcl9jb3VudChzdGF0aWNfY2FzdDxjb25zdCByZV9yZWN1cnNlKj4ocHN0YXRlKS0+c3RhdGVfaWQsICZuZXh0X2NvdW50KTsKLSAgIH0KLSAgIHBzdGF0ZSA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2p1bXAqPihwc3RhdGUpLT5hbHQucDsKLSAgIHJlY3Vyc2lvbl9zdGFjay5iYWNrKCkuaWR4ID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfYnJhY2UqPihwc3RhdGUpLT5pbmRleDsKLQotICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2VuZG1hcmsoKQotewotICAgaW50IGluZGV4ID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfYnJhY2UqPihwc3RhdGUpLT5pbmRleDsKLSAgIGljYXNlID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfYnJhY2UqPihwc3RhdGUpLT5pY2FzZTsKLSAgIGlmKGluZGV4ID4gMCkKLSAgIHsKLSAgICAgIGlmKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfbm9zdWJzKSA9PSAwKQotICAgICAgewotICAgICAgICAgbV9wcmVzdWx0LT5zZXRfc2Vjb25kKHBvc2l0aW9uLCBpbmRleCk7Ci0gICAgICB9Ci0gICAgICBpZighcmVjdXJzaW9uX3N0YWNrLmVtcHR5KCkpCi0gICAgICB7Ci0gICAgICAgICBpZihpbmRleCA9PSByZWN1cnNpb25fc3RhY2suYmFjaygpLmlkeCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHBzdGF0ZSA9IHJlY3Vyc2lvbl9zdGFjay5iYWNrKCkucHJldHVybl9hZGRyZXNzOwotICAgICAgICAgICAgKm1fcHJlc3VsdCA9IHJlY3Vyc2lvbl9zdGFjay5iYWNrKCkucmVzdWx0czsKLSAgICAgICAgICAgIHB1c2hfcmVjdXJzaW9uKHJlY3Vyc2lvbl9zdGFjay5iYWNrKCkuaWR4LCByZWN1cnNpb25fc3RhY2suYmFjaygpLnByZXR1cm5fYWRkcmVzcywgJnJlY3Vyc2lvbl9zdGFjay5iYWNrKCkucmVzdWx0cyk7Ci0gICAgICAgICAgICByZWN1cnNpb25fc3RhY2sucG9wX2JhY2soKTsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgIH0KLSAgIGVsc2UgaWYoKGluZGV4IDwgMCkgJiYgKGluZGV4ICE9IC00KSkKLSAgIHsKLSAgICAgIC8vIG1hdGNoZWQgZm9yd2FyZCBsb29rYWhlYWQ6Ci0gICAgICBwc3RhdGUgPSAwOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucDsKLSAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9tYXRjaCgpCi17Ci0gICBpZighcmVjdXJzaW9uX3N0YWNrLmVtcHR5KCkpCi0gICB7Ci0gICAgICBORE5CT09TVF9BU1NFUlQoMCA9PSByZWN1cnNpb25fc3RhY2suYmFjaygpLmlkeCk7Ci0gICAgICBwc3RhdGUgPSByZWN1cnNpb25fc3RhY2suYmFjaygpLnByZXR1cm5fYWRkcmVzczsKLSAgICAgICptX3ByZXN1bHQgPSByZWN1cnNpb25fc3RhY2suYmFjaygpLnJlc3VsdHM7Ci0gICAgICBwdXNoX3JlY3Vyc2lvbihyZWN1cnNpb25fc3RhY2suYmFjaygpLmlkeCwgcmVjdXJzaW9uX3N0YWNrLmJhY2soKS5wcmV0dXJuX2FkZHJlc3MsICZyZWN1cnNpb25fc3RhY2suYmFjaygpLnJlc3VsdHMpOwotICAgICAgcmVjdXJzaW9uX3N0YWNrLnBvcF9iYWNrKCk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIGlmKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfbm90X251bGwpICYmIChwb3NpdGlvbiA9PSAoKm1fcHJlc3VsdClbMF0uZmlyc3QpKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgaWYoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9hbGwpICYmIChwb3NpdGlvbiAhPSBsYXN0KSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIGlmKChtX21hdGNoX2ZsYWdzICYgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9ub3RfaW5pdGlhbF9udWxsKSAmJiAocG9zaXRpb24gPT0gc2VhcmNoX2Jhc2UpKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgbV9wcmVzdWx0LT5zZXRfc2Vjb25kKHBvc2l0aW9uKTsKLSAgIHBzdGF0ZSA9IDA7Ci0gICBtX2hhc19mb3VuZF9tYXRjaCA9IHRydWU7Ci0gICBpZigobV9tYXRjaF9mbGFncyAmIG1hdGNoX3Bvc2l4KSA9PSBtYXRjaF9wb3NpeCkKLSAgIHsKLSAgICAgIG1fcmVzdWx0Lm1heWJlX2Fzc2lnbigqbV9wcmVzdWx0KTsKLSAgICAgIGlmKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfYW55KSA9PSAwKQotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX01BVENIX0VYVFJBCi0gICBpZihtYXRjaF9leHRyYSAmIG1fbWF0Y2hfZmxhZ3MpCi0gICB7Ci0gICAgICBmb3IodW5zaWduZWQgaSA9IDA7IGkgPCBtX3ByZXN1bHQtPnNpemUoKTsgKytpKQotICAgICAgICAgaWYoKCptX3ByZXN1bHQpW2ldLm1hdGNoZWQpCi0gICAgICAgICAgICAoKCptX3ByZXN1bHQpW2ldKS5nZXRfY2FwdHVyZXMoKS5wdXNoX2JhY2soKCptX3ByZXN1bHQpW2ldKTsKLSAgIH0KLSNlbmRpZgotICAgcmV0dXJuIHRydWU7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLVVud2luZCBhbmQgYXNzb2NpYXRlZCBwcm9jZWVkdXJlcyBmb2xsb3csIHRoZXNlIHBlcmZvcm0gd2hhdCBub3JtYWwgc3RhY2sKLXVud2luZGluZyBkb2VzIGluIHRoZSByZWN1cnNpdmUgaW1wbGVtZW50YXRpb24uCi0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZChib29sIGhhdmVfbWF0Y2gpCi17Ci0gICBzdGF0aWMgdW53aW5kX3Byb2NfdHlwZSBjb25zdCBzX3Vud2luZF90YWJsZVsxOF0gPSAKLSAgIHsKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9lbmQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmRfcGFyZW4sCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmRfcmVjdXJzaW9uX3N0b3BwZXIsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmRfYXNzZXJ0aW9uLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX2FsdCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9yZXBlYXRlcl9jb3VudGVyLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX2V4dHJhX2Jsb2NrLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX2dyZWVkeV9zaW5nbGVfcmVwZWF0LAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX3Nsb3dfZG90X3JlcGVhdCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9mYXN0X2RvdF9yZXBlYXQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmRfY2hhcl9yZXBlYXQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmRfc2hvcnRfc2V0X3JlcGVhdCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9sb25nX3NldF9yZXBlYXQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmRfbm9uX2dyZWVkeV9yZXBlYXQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmRfcmVjdXJzaW9uLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX3JlY3Vyc2lvbl9wb3AsCi0gICB9OwotCi0gICBtX3JlY3Vyc2l2ZV9yZXN1bHQgPSBoYXZlX21hdGNoOwotICAgdW53aW5kX3Byb2NfdHlwZSB1bndpbmRlcjsKLSAgIGJvb2wgY29udDsKLSAgIC8vCi0gICAvLyBrZWVwIHVud2luZGluZyBvdXIgc3RhY2sgdW50aWwgd2UgaGF2ZSBzb21ldGhpbmcgdG8gZG86Ci0gICAvLwotICAgZG8KLSAgIHsKLSAgICAgIHVud2luZGVyID0gc191bndpbmRfdGFibGVbbV9iYWNrdXBfc3RhdGUtPnN0YXRlX2lkXTsKLSAgICAgIGNvbnQgPSAodGhpcy0+KnVud2luZGVyKShtX3JlY3Vyc2l2ZV9yZXN1bHQpOwotICAgfXdoaWxlKGNvbnQpOwotICAgLy8KLSAgIC8vIHJldHVybiB0cnVlIGlmIHdlIGhhdmUgbW9yZSBzdGF0ZXMgdG8gdHJ5OgotICAgLy8KLSAgIHJldHVybiBwc3RhdGUgPyB0cnVlIDogZmFsc2U7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9lbmQoYm9vbCkKLXsKLSAgIHBzdGF0ZSA9IDA7ICAgLy8gbm90aGluZyBsZWZ0IHRvIHNlYXJjaAotICAgcmV0dXJuIGZhbHNlOyAvLyBlbmQgb2Ygc3RhY2sgbm90aGluZyBtb3JlIHRvIHNlYXJjaAotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmRfcGFyZW4oYm9vbCBoYXZlX21hdGNoKQotewotICAgc2F2ZWRfbWF0Y2hlZF9wYXJlbjxCaWRpSXRlcmF0b3I+KiBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9tYXRjaGVkX3BhcmVuPEJpZGlJdGVyYXRvcj4qPihtX2JhY2t1cF9zdGF0ZSk7Ci0gICAvLyByZXN0b3JlIHByZXZpb3VzIHZhbHVlcyBpZiBubyBtYXRjaCB3YXMgZm91bmQ6Ci0gICBpZihoYXZlX21hdGNoID09IGZhbHNlKQotICAgewotICAgICAgbV9wcmVzdWx0LT5zZXRfZmlyc3QocG1wLT5zdWIuZmlyc3QsIHBtcC0+aW5kZXgsIHBtcC0+aW5kZXggPT0gMCk7Ci0gICAgICBtX3ByZXN1bHQtPnNldF9zZWNvbmQocG1wLT5zdWIuc2Vjb25kLCBwbXAtPmluZGV4LCBwbXAtPnN1Yi5tYXRjaGVkLCBwbXAtPmluZGV4ID09IDApOwotICAgfQotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX01BVENIX0VYVFJBCi0gICAvLwotICAgLy8gd2UgaGF2ZSBhIG1hdGNoLCBwdXNoIHRoZSBjYXB0dXJlIGluZm9ybWF0aW9uIG9udG8gdGhlIHN0YWNrOgotICAgLy8KLSAgIGVsc2UgaWYocG1wLT5zdWIubWF0Y2hlZCAmJiAobWF0Y2hfZXh0cmEgJiBtX21hdGNoX2ZsYWdzKSkKLSAgICAgICgoKm1fcHJlc3VsdClbcG1wLT5pbmRleF0pLmdldF9jYXB0dXJlcygpLnB1c2hfYmFjayhwbXAtPnN1Yik7Ci0jZW5kaWYKLSAgIC8vIHVud2luZCBzdGFjazoKLSAgIG1fYmFja3VwX3N0YXRlID0gcG1wKzE7Ci0gICBuZG5ib29zdDo6cmVfZGV0YWlsOjppbnBsYWNlX2Rlc3Ryb3kocG1wKTsKLSAgIHJldHVybiB0cnVlOyAvLyBrZWVwIGxvb2tpbmcKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX3JlY3Vyc2lvbl9zdG9wcGVyKGJvb2wpCi17Ci0gICBuZG5ib29zdDo6cmVfZGV0YWlsOjppbnBsYWNlX2Rlc3Ryb3kobV9iYWNrdXBfc3RhdGUrKyk7Ci0gICBwc3RhdGUgPSAwOyAgIC8vIG5vdGhpbmcgbGVmdCB0byBzZWFyY2gKLSAgIHJldHVybiBmYWxzZTsgLy8gZW5kIG9mIHN0YWNrIG5vdGhpbmcgbW9yZSB0byBzZWFyY2gKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX2Fzc2VydGlvbihib29sIHIpCi17Ci0gICBzYXZlZF9hc3NlcnRpb248QmlkaUl0ZXJhdG9yPiogcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfYXNzZXJ0aW9uPEJpZGlJdGVyYXRvcj4qPihtX2JhY2t1cF9zdGF0ZSk7Ci0gICBwc3RhdGUgPSBwbXAtPnBzdGF0ZTsKLSAgIHBvc2l0aW9uID0gcG1wLT5wb3NpdGlvbjsKLSAgIGJvb2wgcmVzdWx0ID0gKHIgPT0gcG1wLT5wb3NpdGl2ZSk7Ci0gICBtX3JlY3Vyc2l2ZV9yZXN1bHQgPSBwbXAtPnBvc2l0aXZlID8gciA6ICFyOwotICAgbmRuYm9vc3Q6OnJlX2RldGFpbDo6aW5wbGFjZV9kZXN0cm95KHBtcCsrKTsKLSAgIG1fYmFja3VwX3N0YXRlID0gcG1wOwotICAgcmV0dXJuICFyZXN1bHQ7IC8vIHJldHVybiBmYWxzZSBpZiB0aGUgYXNzZXJ0aW9uIHdhcyBtYXRjaGVkIHRvIHN0b3Agc2VhcmNoLgotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmRfYWx0KGJvb2wgcikKLXsKLSAgIHNhdmVkX3Bvc2l0aW9uPEJpZGlJdGVyYXRvcj4qIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX3Bvc2l0aW9uPEJpZGlJdGVyYXRvcj4qPihtX2JhY2t1cF9zdGF0ZSk7Ci0gICBpZighcikKLSAgIHsKLSAgICAgIHBzdGF0ZSA9IHBtcC0+cHN0YXRlOwotICAgICAgcG9zaXRpb24gPSBwbXAtPnBvc2l0aW9uOwotICAgfQotICAgbmRuYm9vc3Q6OnJlX2RldGFpbDo6aW5wbGFjZV9kZXN0cm95KHBtcCsrKTsKLSAgIG1fYmFja3VwX3N0YXRlID0gcG1wOwotICAgcmV0dXJuIHI7IAotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmRfcmVwZWF0ZXJfY291bnRlcihib29sKQotewotICAgc2F2ZWRfcmVwZWF0ZXI8QmlkaUl0ZXJhdG9yPiogcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfcmVwZWF0ZXI8QmlkaUl0ZXJhdG9yPio+KG1fYmFja3VwX3N0YXRlKTsKLSAgIG5kbmJvb3N0OjpyZV9kZXRhaWw6OmlucGxhY2VfZGVzdHJveShwbXArKyk7Ci0gICBtX2JhY2t1cF9zdGF0ZSA9IHBtcDsKLSAgIHJldHVybiB0cnVlOyAvLyBrZWVwIGxvb2tpbmcKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX2V4dHJhX2Jsb2NrKGJvb2wpCi17Ci0gICBzYXZlZF9leHRyYV9ibG9jayogcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfZXh0cmFfYmxvY2sqPihtX2JhY2t1cF9zdGF0ZSk7Ci0gICB2b2lkKiBjb25kZW1tZWQgPSBtX3N0YWNrX2Jhc2U7Ci0gICBtX3N0YWNrX2Jhc2UgPSBwbXAtPmJhc2U7Ci0gICBtX2JhY2t1cF9zdGF0ZSA9IHBtcC0+ZW5kOwotICAgbmRuYm9vc3Q6OnJlX2RldGFpbDo6aW5wbGFjZV9kZXN0cm95KHBtcCk7Ci0gICBwdXRfbWVtX2Jsb2NrKGNvbmRlbW1lZCk7Ci0gICByZXR1cm4gdHJ1ZTsgLy8ga2VlcCBsb29raW5nCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotaW5saW5lIHZvaWQgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjpkZXN0cm95X3NpbmdsZV9yZXBlYXQoKQotewotICAgc2F2ZWRfc2luZ2xlX3JlcGVhdDxCaWRpSXRlcmF0b3I+KiBwID0gc3RhdGljX2Nhc3Q8c2F2ZWRfc2luZ2xlX3JlcGVhdDxCaWRpSXRlcmF0b3I+Kj4obV9iYWNrdXBfc3RhdGUpOwotICAgbmRuYm9vc3Q6OnJlX2RldGFpbDo6aW5wbGFjZV9kZXN0cm95KHArKyk7Ci0gICBtX2JhY2t1cF9zdGF0ZSA9IHA7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9ncmVlZHlfc2luZ2xlX3JlcGVhdChib29sIHIpCi17Ci0gICBzYXZlZF9zaW5nbGVfcmVwZWF0PEJpZGlJdGVyYXRvcj4qIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX3NpbmdsZV9yZXBlYXQ8QmlkaUl0ZXJhdG9yPio+KG1fYmFja3VwX3N0YXRlKTsKLQotICAgLy8gaWYgd2UgaGF2ZSBhIG1hdGNoLCBqdXN0IGRpc2NhcmQgdGhpcyBzdGF0ZToKLSAgIGlmKHIpIAotICAgewotICAgICAgZGVzdHJveV9zaW5nbGVfcmVwZWF0KCk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLQotICAgY29uc3QgcmVfcmVwZWF0KiByZXAgPSBwbXAtPnJlcDsKLSAgIHN0ZDo6c2l6ZV90IGNvdW50ID0gcG1wLT5jb3VudDsKLSAgIE5ETkJPT1NUX0FTU0VSVChyZXAtPm5leHQucCAhPSAwKTsKLSAgIE5ETkJPT1NUX0FTU0VSVChyZXAtPmFsdC5wICE9IDApOwotCi0gICBjb3VudCAtPSByZXAtPm1pbjsKLSAgIAotICAgaWYoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9wYXJ0aWFsKSAmJiAocG9zaXRpb24gPT0gbGFzdCkpCi0gICAgICBtX2hhc19wYXJ0aWFsX21hdGNoID0gdHJ1ZTsKLQotICAgTkROQk9PU1RfQVNTRVJUKGNvdW50KTsKLSAgIHBvc2l0aW9uID0gcG1wLT5sYXN0X3Bvc2l0aW9uOwotCi0gICAvLyBiYWNrdHJhY2sgdGlsbCB3ZSBjYW4gc2tpcCBvdXQ6Ci0gICBkbwotICAgewotICAgICAgLS1wb3NpdGlvbjsKLSAgICAgIC0tY291bnQ7Ci0gICAgICArK3N0YXRlX2NvdW50OwotICAgfXdoaWxlKGNvdW50ICYmICFjYW5fc3RhcnQoKnBvc2l0aW9uLCByZXAtPl9tYXAsIG1hc2tfc2tpcCkpOwotCi0gICAvLyBpZiB3ZSd2ZSBoaXQgYmFzZSwgZGVzdHJveSB0aGlzIHN0YXRlOgotICAgaWYoY291bnQgPT0gMCkKLSAgIHsKLSAgICAgICAgIGRlc3Ryb3lfc2luZ2xlX3JlcGVhdCgpOwotICAgICAgICAgaWYoIWNhbl9zdGFydCgqcG9zaXRpb24sIHJlcC0+X21hcCwgbWFza19za2lwKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgcG1wLT5jb3VudCA9IGNvdW50ICsgcmVwLT5taW47Ci0gICAgICBwbXAtPmxhc3RfcG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgIH0KLSAgIHBzdGF0ZSA9IHJlcC0+YWx0LnA7Ci0gICByZXR1cm4gZmFsc2U7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9zbG93X2RvdF9yZXBlYXQoYm9vbCByKQotewotICAgc2F2ZWRfc2luZ2xlX3JlcGVhdDxCaWRpSXRlcmF0b3I+KiBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9zaW5nbGVfcmVwZWF0PEJpZGlJdGVyYXRvcj4qPihtX2JhY2t1cF9zdGF0ZSk7Ci0KLSAgIC8vIGlmIHdlIGhhdmUgYSBtYXRjaCwganVzdCBkaXNjYXJkIHRoaXMgc3RhdGU6Ci0gICBpZihyKSAKLSAgIHsKLSAgICAgIGRlc3Ryb3lfc2luZ2xlX3JlcGVhdCgpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0KLSAgIGNvbnN0IHJlX3JlcGVhdCogcmVwID0gcG1wLT5yZXA7Ci0gICBzdGQ6OnNpemVfdCBjb3VudCA9IHBtcC0+Y291bnQ7Ci0gICBORE5CT09TVF9BU1NFUlQocmVwLT50eXBlID09IHN5bnRheF9lbGVtZW50X2RvdF9yZXApOwotICAgTkROQk9PU1RfQVNTRVJUKHJlcC0+bmV4dC5wICE9IDApOwotICAgTkROQk9PU1RfQVNTRVJUKHJlcC0+YWx0LnAgIT0gMCk7Ci0gICBORE5CT09TVF9BU1NFUlQocmVwLT5uZXh0LnAtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfd2lsZCk7Ci0KLSAgIE5ETkJPT1NUX0FTU0VSVChjb3VudCA8IHJlcC0+bWF4KTsKLSAgIHBzdGF0ZSA9IHJlcC0+bmV4dC5wOwotICAgcG9zaXRpb24gPSBwbXAtPmxhc3RfcG9zaXRpb247Ci0KLSAgIGlmKHBvc2l0aW9uICE9IGxhc3QpCi0gICB7Ci0gICAgICAvLyB3aW5kIGZvcndhcmQgdW50aWwgd2UgY2FuIHNraXAgb3V0IG9mIHRoZSByZXBlYXQ6Ci0gICAgICBkbwotICAgICAgewotICAgICAgICAgaWYoIW1hdGNoX3dpbGQoKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIGZhaWxlZCByZXBlYXQgbWF0Y2gsIGRpc2NhcmQgdGhpcyBzdGF0ZSBhbmQgbG9vayBmb3IgYW5vdGhlcjoKLSAgICAgICAgICAgIGRlc3Ryb3lfc2luZ2xlX3JlcGVhdCgpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICB9Ci0gICAgICAgICArK2NvdW50OwotICAgICAgICAgKytzdGF0ZV9jb3VudDsKLSAgICAgICAgIHBzdGF0ZSA9IHJlcC0+bmV4dC5wOwotICAgICAgfXdoaWxlKChjb3VudCA8IHJlcC0+bWF4KSAmJiAocG9zaXRpb24gIT0gbGFzdCkgJiYgIWNhbl9zdGFydCgqcG9zaXRpb24sIHJlcC0+X21hcCwgbWFza19za2lwKSk7Ci0gICB9ICAgCi0gICBpZihwb3NpdGlvbiA9PSBsYXN0KQotICAgewotICAgICAgLy8gY2FuJ3QgcmVwZWF0IGFueSBtb3JlLCByZW1vdmUgdGhlIHB1c2hlZCBzdGF0ZTogCi0gICAgICBkZXN0cm95X3NpbmdsZV9yZXBlYXQoKTsKLSAgICAgIGlmKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfcGFydGlhbCkgJiYgKHBvc2l0aW9uID09IGxhc3QpICYmIChwb3NpdGlvbiAhPSBzZWFyY2hfYmFzZSkpCi0gICAgICAgICBtX2hhc19wYXJ0aWFsX21hdGNoID0gdHJ1ZTsKLSAgICAgIGlmKDAgPT0gKHJlcC0+Y2FuX2JlX251bGwgJiBtYXNrX3NraXApKQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICBlbHNlIGlmKGNvdW50ID09IHJlcC0+bWF4KQotICAgewotICAgICAgLy8gY2FuJ3QgcmVwZWF0IGFueSBtb3JlLCByZW1vdmUgdGhlIHB1c2hlZCBzdGF0ZTogCi0gICAgICBkZXN0cm95X3NpbmdsZV9yZXBlYXQoKTsKLSAgICAgIGlmKCFjYW5fc3RhcnQoKnBvc2l0aW9uLCByZXAtPl9tYXAsIG1hc2tfc2tpcCkpCi0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIHBtcC0+Y291bnQgPSBjb3VudDsKLSAgICAgIHBtcC0+bGFzdF9wb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgfQotICAgcHN0YXRlID0gcmVwLT5hbHQucDsKLSAgIHJldHVybiBmYWxzZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX2Zhc3RfZG90X3JlcGVhdChib29sIHIpCi17Ci0gICBzYXZlZF9zaW5nbGVfcmVwZWF0PEJpZGlJdGVyYXRvcj4qIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX3NpbmdsZV9yZXBlYXQ8QmlkaUl0ZXJhdG9yPio+KG1fYmFja3VwX3N0YXRlKTsKLQotICAgLy8gaWYgd2UgaGF2ZSBhIG1hdGNoLCBqdXN0IGRpc2NhcmQgdGhpcyBzdGF0ZToKLSAgIGlmKHIpIAotICAgewotICAgICAgZGVzdHJveV9zaW5nbGVfcmVwZWF0KCk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLQotICAgY29uc3QgcmVfcmVwZWF0KiByZXAgPSBwbXAtPnJlcDsKLSAgIHN0ZDo6c2l6ZV90IGNvdW50ID0gcG1wLT5jb3VudDsKLQotICAgTkROQk9PU1RfQVNTRVJUKGNvdW50IDwgcmVwLT5tYXgpOwotICAgcG9zaXRpb24gPSBwbXAtPmxhc3RfcG9zaXRpb247Ci0gICBpZihwb3NpdGlvbiAhPSBsYXN0KQotICAgewotCi0gICAgICAvLyB3aW5kIGZvcndhcmQgdW50aWwgd2UgY2FuIHNraXAgb3V0IG9mIHRoZSByZXBlYXQ6Ci0gICAgICBkbwotICAgICAgewotICAgICAgICAgKytwb3NpdGlvbjsKLSAgICAgICAgICsrY291bnQ7Ci0gICAgICAgICArK3N0YXRlX2NvdW50OwotICAgICAgfXdoaWxlKChjb3VudCA8IHJlcC0+bWF4KSAmJiAocG9zaXRpb24gIT0gbGFzdCkgJiYgIWNhbl9zdGFydCgqcG9zaXRpb24sIHJlcC0+X21hcCwgbWFza19za2lwKSk7Ci0gICB9Ci0KLSAgIC8vIHJlbWVtYmVyIHdoZXJlIHdlIGdvdCB0byBpZiB0aGlzIGlzIGEgbGVhZGluZyByZXBlYXQ6Ci0gICBpZigocmVwLT5sZWFkaW5nKSAmJiAoY291bnQgPCByZXAtPm1heCkpCi0gICAgICByZXN0YXJ0ID0gcG9zaXRpb247Ci0gICBpZihwb3NpdGlvbiA9PSBsYXN0KQotICAgewotICAgICAgLy8gY2FuJ3QgcmVwZWF0IGFueSBtb3JlLCByZW1vdmUgdGhlIHB1c2hlZCBzdGF0ZTogCi0gICAgICBkZXN0cm95X3NpbmdsZV9yZXBlYXQoKTsKLSAgICAgIGlmKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfcGFydGlhbCkgJiYgKHBvc2l0aW9uID09IGxhc3QpICYmIChwb3NpdGlvbiAhPSBzZWFyY2hfYmFzZSkpCi0gICAgICAgICBtX2hhc19wYXJ0aWFsX21hdGNoID0gdHJ1ZTsKLSAgICAgIGlmKDAgPT0gKHJlcC0+Y2FuX2JlX251bGwgJiBtYXNrX3NraXApKQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICBlbHNlIGlmKGNvdW50ID09IHJlcC0+bWF4KQotICAgewotICAgICAgLy8gY2FuJ3QgcmVwZWF0IGFueSBtb3JlLCByZW1vdmUgdGhlIHB1c2hlZCBzdGF0ZTogCi0gICAgICBkZXN0cm95X3NpbmdsZV9yZXBlYXQoKTsKLSAgICAgIGlmKCFjYW5fc3RhcnQoKnBvc2l0aW9uLCByZXAtPl9tYXAsIG1hc2tfc2tpcCkpCi0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIHBtcC0+Y291bnQgPSBjb3VudDsKLSAgICAgIHBtcC0+bGFzdF9wb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgfQotICAgcHN0YXRlID0gcmVwLT5hbHQucDsKLSAgIHJldHVybiBmYWxzZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX2NoYXJfcmVwZWF0KGJvb2wgcikKLXsKLSAgIHNhdmVkX3NpbmdsZV9yZXBlYXQ8QmlkaUl0ZXJhdG9yPiogcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfc2luZ2xlX3JlcGVhdDxCaWRpSXRlcmF0b3I+Kj4obV9iYWNrdXBfc3RhdGUpOwotCi0gICAvLyBpZiB3ZSBoYXZlIGEgbWF0Y2gsIGp1c3QgZGlzY2FyZCB0aGlzIHN0YXRlOgotICAgaWYocikgCi0gICB7Ci0gICAgICBkZXN0cm95X3NpbmdsZV9yZXBlYXQoKTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgfQotCi0gICBjb25zdCByZV9yZXBlYXQqIHJlcCA9IHBtcC0+cmVwOwotICAgc3RkOjpzaXplX3QgY291bnQgPSBwbXAtPmNvdW50OwotICAgcHN0YXRlID0gcmVwLT5uZXh0LnA7Ci0gICBjb25zdCBjaGFyX3R5cGUgd2hhdCA9ICpyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXJfdHlwZSo+KHN0YXRpY19jYXN0PGNvbnN0IHJlX2xpdGVyYWwqPihwc3RhdGUpICsgMSk7Ci0gICBwb3NpdGlvbiA9IHBtcC0+bGFzdF9wb3NpdGlvbjsKLQotICAgTkROQk9PU1RfQVNTRVJUKHJlcC0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9jaGFyX3JlcCk7Ci0gICBORE5CT09TVF9BU1NFUlQocmVwLT5uZXh0LnAgIT0gMCk7Ci0gICBORE5CT09TVF9BU1NFUlQocmVwLT5hbHQucCAhPSAwKTsKLSAgIE5ETkJPT1NUX0FTU0VSVChyZXAtPm5leHQucC0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9saXRlcmFsKTsKLSAgIE5ETkJPT1NUX0FTU0VSVChjb3VudCA8IHJlcC0+bWF4KTsKLQotICAgaWYocG9zaXRpb24gIT0gbGFzdCkKLSAgIHsKLSAgICAgIC8vIHdpbmQgZm9yd2FyZCB1bnRpbCB3ZSBjYW4gc2tpcCBvdXQgb2YgdGhlIHJlcGVhdDoKLSAgICAgIGRvCi0gICAgICB7Ci0gICAgICAgICBpZih0cmFpdHNfaW5zdC50cmFuc2xhdGUoKnBvc2l0aW9uLCBpY2FzZSkgIT0gd2hhdCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIGZhaWxlZCByZXBlYXQgbWF0Y2gsIGRpc2NhcmQgdGhpcyBzdGF0ZSBhbmQgbG9vayBmb3IgYW5vdGhlcjoKLSAgICAgICAgICAgIGRlc3Ryb3lfc2luZ2xlX3JlcGVhdCgpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICB9Ci0gICAgICAgICArK2NvdW50OwotICAgICAgICAgKysgcG9zaXRpb247Ci0gICAgICAgICArK3N0YXRlX2NvdW50OwotICAgICAgICAgcHN0YXRlID0gcmVwLT5uZXh0LnA7Ci0gICAgICB9d2hpbGUoKGNvdW50IDwgcmVwLT5tYXgpICYmIChwb3NpdGlvbiAhPSBsYXN0KSAmJiAhY2FuX3N0YXJ0KCpwb3NpdGlvbiwgcmVwLT5fbWFwLCBtYXNrX3NraXApKTsKLSAgIH0gICAKLSAgIC8vIHJlbWVtYmVyIHdoZXJlIHdlIGdvdCB0byBpZiB0aGlzIGlzIGEgbGVhZGluZyByZXBlYXQ6Ci0gICBpZigocmVwLT5sZWFkaW5nKSAmJiAoY291bnQgPCByZXAtPm1heCkpCi0gICAgICByZXN0YXJ0ID0gcG9zaXRpb247Ci0gICBpZihwb3NpdGlvbiA9PSBsYXN0KQotICAgewotICAgICAgLy8gY2FuJ3QgcmVwZWF0IGFueSBtb3JlLCByZW1vdmUgdGhlIHB1c2hlZCBzdGF0ZTogCi0gICAgICBkZXN0cm95X3NpbmdsZV9yZXBlYXQoKTsKLSAgICAgIGlmKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfcGFydGlhbCkgJiYgKHBvc2l0aW9uID09IGxhc3QpICYmIChwb3NpdGlvbiAhPSBzZWFyY2hfYmFzZSkpCi0gICAgICAgICBtX2hhc19wYXJ0aWFsX21hdGNoID0gdHJ1ZTsKLSAgICAgIGlmKDAgPT0gKHJlcC0+Y2FuX2JlX251bGwgJiBtYXNrX3NraXApKQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICBlbHNlIGlmKGNvdW50ID09IHJlcC0+bWF4KQotICAgewotICAgICAgLy8gY2FuJ3QgcmVwZWF0IGFueSBtb3JlLCByZW1vdmUgdGhlIHB1c2hlZCBzdGF0ZTogCi0gICAgICBkZXN0cm95X3NpbmdsZV9yZXBlYXQoKTsKLSAgICAgIGlmKCFjYW5fc3RhcnQoKnBvc2l0aW9uLCByZXAtPl9tYXAsIG1hc2tfc2tpcCkpCi0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIHBtcC0+Y291bnQgPSBjb3VudDsKLSAgICAgIHBtcC0+bGFzdF9wb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgfQotICAgcHN0YXRlID0gcmVwLT5hbHQucDsKLSAgIHJldHVybiBmYWxzZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX3Nob3J0X3NldF9yZXBlYXQoYm9vbCByKQotewotICAgc2F2ZWRfc2luZ2xlX3JlcGVhdDxCaWRpSXRlcmF0b3I+KiBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9zaW5nbGVfcmVwZWF0PEJpZGlJdGVyYXRvcj4qPihtX2JhY2t1cF9zdGF0ZSk7Ci0KLSAgIC8vIGlmIHdlIGhhdmUgYSBtYXRjaCwganVzdCBkaXNjYXJkIHRoaXMgc3RhdGU6Ci0gICBpZihyKSAKLSAgIHsKLSAgICAgIGRlc3Ryb3lfc2luZ2xlX3JlcGVhdCgpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0KLSAgIGNvbnN0IHJlX3JlcGVhdCogcmVwID0gcG1wLT5yZXA7Ci0gICBzdGQ6OnNpemVfdCBjb3VudCA9IHBtcC0+Y291bnQ7Ci0gICBwc3RhdGUgPSByZXAtPm5leHQucDsKLSAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIG1hcCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX3NldCo+KHJlcC0+bmV4dC5wKS0+X21hcDsKLSAgIHBvc2l0aW9uID0gcG1wLT5sYXN0X3Bvc2l0aW9uOwotCi0gICBORE5CT09TVF9BU1NFUlQocmVwLT50eXBlID09IHN5bnRheF9lbGVtZW50X3Nob3J0X3NldF9yZXApOwotICAgTkROQk9PU1RfQVNTRVJUKHJlcC0+bmV4dC5wICE9IDApOwotICAgTkROQk9PU1RfQVNTRVJUKHJlcC0+YWx0LnAgIT0gMCk7Ci0gICBORE5CT09TVF9BU1NFUlQocmVwLT5uZXh0LnAtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfc2V0KTsKLSAgIE5ETkJPT1NUX0FTU0VSVChjb3VudCA8IHJlcC0+bWF4KTsKLSAgIAotICAgaWYocG9zaXRpb24gIT0gbGFzdCkKLSAgIHsKLSAgICAgIC8vIHdpbmQgZm9yd2FyZCB1bnRpbCB3ZSBjYW4gc2tpcCBvdXQgb2YgdGhlIHJlcGVhdDoKLSAgICAgIGRvCi0gICAgICB7Ci0gICAgICAgICBpZighbWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHRyYWl0c19pbnN0LnRyYW5zbGF0ZSgqcG9zaXRpb24sIGljYXNlKSldKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gZmFpbGVkIHJlcGVhdCBtYXRjaCwgZGlzY2FyZCB0aGlzIHN0YXRlIGFuZCBsb29rIGZvciBhbm90aGVyOgotICAgICAgICAgICAgZGVzdHJveV9zaW5nbGVfcmVwZWF0KCk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgIH0KLSAgICAgICAgICsrY291bnQ7Ci0gICAgICAgICArKyBwb3NpdGlvbjsKLSAgICAgICAgICsrc3RhdGVfY291bnQ7Ci0gICAgICAgICBwc3RhdGUgPSByZXAtPm5leHQucDsKLSAgICAgIH13aGlsZSgoY291bnQgPCByZXAtPm1heCkgJiYgKHBvc2l0aW9uICE9IGxhc3QpICYmICFjYW5fc3RhcnQoKnBvc2l0aW9uLCByZXAtPl9tYXAsIG1hc2tfc2tpcCkpOwotICAgfSAgIAotICAgLy8gcmVtZW1iZXIgd2hlcmUgd2UgZ290IHRvIGlmIHRoaXMgaXMgYSBsZWFkaW5nIHJlcGVhdDoKLSAgIGlmKChyZXAtPmxlYWRpbmcpICYmIChjb3VudCA8IHJlcC0+bWF4KSkKLSAgICAgIHJlc3RhcnQgPSBwb3NpdGlvbjsKLSAgIGlmKHBvc2l0aW9uID09IGxhc3QpCi0gICB7Ci0gICAgICAvLyBjYW4ndCByZXBlYXQgYW55IG1vcmUsIHJlbW92ZSB0aGUgcHVzaGVkIHN0YXRlOiAKLSAgICAgIGRlc3Ryb3lfc2luZ2xlX3JlcGVhdCgpOwotICAgICAgaWYoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9wYXJ0aWFsKSAmJiAocG9zaXRpb24gPT0gbGFzdCkgJiYgKHBvc2l0aW9uICE9IHNlYXJjaF9iYXNlKSkKLSAgICAgICAgIG1faGFzX3BhcnRpYWxfbWF0Y2ggPSB0cnVlOwotICAgICAgaWYoMCA9PSAocmVwLT5jYW5fYmVfbnVsbCAmIG1hc2tfc2tpcCkpCi0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIGVsc2UgaWYoY291bnQgPT0gcmVwLT5tYXgpCi0gICB7Ci0gICAgICAvLyBjYW4ndCByZXBlYXQgYW55IG1vcmUsIHJlbW92ZSB0aGUgcHVzaGVkIHN0YXRlOiAKLSAgICAgIGRlc3Ryb3lfc2luZ2xlX3JlcGVhdCgpOwotICAgICAgaWYoIWNhbl9zdGFydCgqcG9zaXRpb24sIHJlcC0+X21hcCwgbWFza19za2lwKSkKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgcG1wLT5jb3VudCA9IGNvdW50OwotICAgICAgcG1wLT5sYXN0X3Bvc2l0aW9uID0gcG9zaXRpb247Ci0gICB9Ci0gICBwc3RhdGUgPSByZXAtPmFsdC5wOwotICAgcmV0dXJuIGZhbHNlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmRfbG9uZ19zZXRfcmVwZWF0KGJvb2wgcikKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpjaGFyX2NsYXNzX3R5cGUgbV90eXBlOwotICAgc2F2ZWRfc2luZ2xlX3JlcGVhdDxCaWRpSXRlcmF0b3I+KiBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9zaW5nbGVfcmVwZWF0PEJpZGlJdGVyYXRvcj4qPihtX2JhY2t1cF9zdGF0ZSk7Ci0KLSAgIC8vIGlmIHdlIGhhdmUgYSBtYXRjaCwganVzdCBkaXNjYXJkIHRoaXMgc3RhdGU6Ci0gICBpZihyKQotICAgewotICAgICAgZGVzdHJveV9zaW5nbGVfcmVwZWF0KCk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLQotICAgY29uc3QgcmVfcmVwZWF0KiByZXAgPSBwbXAtPnJlcDsKLSAgIHN0ZDo6c2l6ZV90IGNvdW50ID0gcG1wLT5jb3VudDsKLSAgIHBzdGF0ZSA9IHJlcC0+bmV4dC5wOwotICAgY29uc3QgcmVfc2V0X2xvbmc8bV90eXBlPiogc2V0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfc2V0X2xvbmc8bV90eXBlPio+KHBzdGF0ZSk7Ci0gICBwb3NpdGlvbiA9IHBtcC0+bGFzdF9wb3NpdGlvbjsKLQotICAgTkROQk9PU1RfQVNTRVJUKHJlcC0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9sb25nX3NldF9yZXApOwotICAgTkROQk9PU1RfQVNTRVJUKHJlcC0+bmV4dC5wICE9IDApOwotICAgTkROQk9PU1RfQVNTRVJUKHJlcC0+YWx0LnAgIT0gMCk7Ci0gICBORE5CT09TVF9BU1NFUlQocmVwLT5uZXh0LnAtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfbG9uZ19zZXQpOwotICAgTkROQk9PU1RfQVNTRVJUKGNvdW50IDwgcmVwLT5tYXgpOwotCi0gICBpZihwb3NpdGlvbiAhPSBsYXN0KQotICAgewotICAgICAgLy8gd2luZCBmb3J3YXJkIHVudGlsIHdlIGNhbiBza2lwIG91dCBvZiB0aGUgcmVwZWF0OgotICAgICAgZG8KLSAgICAgIHsKLSAgICAgICAgIGlmKHBvc2l0aW9uID09IHJlX2lzX3NldF9tZW1iZXIocG9zaXRpb24sIGxhc3QsIHNldCwgcmUuZ2V0X2RhdGEoKSwgaWNhc2UpKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gZmFpbGVkIHJlcGVhdCBtYXRjaCwgZGlzY2FyZCB0aGlzIHN0YXRlIGFuZCBsb29rIGZvciBhbm90aGVyOgotICAgICAgICAgICAgZGVzdHJveV9zaW5nbGVfcmVwZWF0KCk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgIH0KLSAgICAgICAgICsrcG9zaXRpb247Ci0gICAgICAgICArK2NvdW50OwotICAgICAgICAgKytzdGF0ZV9jb3VudDsKLSAgICAgICAgIHBzdGF0ZSA9IHJlcC0+bmV4dC5wOwotICAgICAgfXdoaWxlKChjb3VudCA8IHJlcC0+bWF4KSAmJiAocG9zaXRpb24gIT0gbGFzdCkgJiYgIWNhbl9zdGFydCgqcG9zaXRpb24sIHJlcC0+X21hcCwgbWFza19za2lwKSk7Ci0gICB9ICAgCi0gICAvLyByZW1lbWJlciB3aGVyZSB3ZSBnb3QgdG8gaWYgdGhpcyBpcyBhIGxlYWRpbmcgcmVwZWF0OgotICAgaWYoKHJlcC0+bGVhZGluZykgJiYgKGNvdW50IDwgcmVwLT5tYXgpKQotICAgICAgcmVzdGFydCA9IHBvc2l0aW9uOwotICAgaWYocG9zaXRpb24gPT0gbGFzdCkKLSAgIHsKLSAgICAgIC8vIGNhbid0IHJlcGVhdCBhbnkgbW9yZSwgcmVtb3ZlIHRoZSBwdXNoZWQgc3RhdGU6Ci0gICAgICBkZXN0cm95X3NpbmdsZV9yZXBlYXQoKTsKLSAgICAgIGlmKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfcGFydGlhbCkgJiYgKHBvc2l0aW9uID09IGxhc3QpICYmIChwb3NpdGlvbiAhPSBzZWFyY2hfYmFzZSkpCi0gICAgICAgICBtX2hhc19wYXJ0aWFsX21hdGNoID0gdHJ1ZTsKLSAgICAgIGlmKDAgPT0gKHJlcC0+Y2FuX2JlX251bGwgJiBtYXNrX3NraXApKQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICBlbHNlIGlmKGNvdW50ID09IHJlcC0+bWF4KQotICAgewotICAgICAgLy8gY2FuJ3QgcmVwZWF0IGFueSBtb3JlLCByZW1vdmUgdGhlIHB1c2hlZCBzdGF0ZTogCi0gICAgICBkZXN0cm95X3NpbmdsZV9yZXBlYXQoKTsKLSAgICAgIGlmKCFjYW5fc3RhcnQoKnBvc2l0aW9uLCByZXAtPl9tYXAsIG1hc2tfc2tpcCkpCi0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIHBtcC0+Y291bnQgPSBjb3VudDsKLSAgICAgIHBtcC0+bGFzdF9wb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgfQotICAgcHN0YXRlID0gcmVwLT5hbHQucDsKLSAgIHJldHVybiBmYWxzZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX25vbl9ncmVlZHlfcmVwZWF0KGJvb2wgcikKLXsKLSAgIHNhdmVkX3Bvc2l0aW9uPEJpZGlJdGVyYXRvcj4qIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX3Bvc2l0aW9uPEJpZGlJdGVyYXRvcj4qPihtX2JhY2t1cF9zdGF0ZSk7Ci0gICBpZighcikKLSAgIHsKLSAgICAgIHBvc2l0aW9uID0gcG1wLT5wb3NpdGlvbjsKLSAgICAgIHBzdGF0ZSA9IHBtcC0+cHN0YXRlOwotICAgICAgKysoKm5leHRfY291bnQpOwotICAgfQotICAgbmRuYm9vc3Q6OnJlX2RldGFpbDo6aW5wbGFjZV9kZXN0cm95KHBtcCsrKTsKLSAgIG1fYmFja3VwX3N0YXRlID0gcG1wOwotICAgcmV0dXJuIHI7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9yZWN1cnNpb24oYm9vbCByKQotewotICAgc2F2ZWRfcmVjdXJzaW9uPHJlc3VsdHNfdHlwZT4qIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX3JlY3Vyc2lvbjxyZXN1bHRzX3R5cGU+Kj4obV9iYWNrdXBfc3RhdGUpOwotICAgaWYoIXIpCi0gICB7Ci0gICAgICByZWN1cnNpb25fc3RhY2sucHVzaF9iYWNrKHJlY3Vyc2lvbl9pbmZvPHJlc3VsdHNfdHlwZT4oKSk7Ci0gICAgICByZWN1cnNpb25fc3RhY2suYmFjaygpLmlkeCA9IHBtcC0+cmVjdXJzaW9uX2lkOwotICAgICAgcmVjdXJzaW9uX3N0YWNrLmJhY2soKS5wcmV0dXJuX2FkZHJlc3MgPSBwbXAtPnByZXR1cm5fYWRkcmVzczsKLSAgICAgIHJlY3Vyc2lvbl9zdGFjay5iYWNrKCkucmVzdWx0cyA9IHBtcC0+cmVzdWx0czsKLSAgIH0KLSAgIG5kbmJvb3N0OjpyZV9kZXRhaWw6OmlucGxhY2VfZGVzdHJveShwbXArKyk7Ci0gICBtX2JhY2t1cF9zdGF0ZSA9IHBtcDsKLSAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmRfcmVjdXJzaW9uX3BvcChib29sIHIpCi17Ci0gICBzYXZlZF9zdGF0ZSogcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfc3RhdGUqPihtX2JhY2t1cF9zdGF0ZSk7Ci0gICBpZighcikKLSAgIHsKLSAgICAgIHJlY3Vyc2lvbl9zdGFjay5wb3BfYmFjaygpOwotICAgfQotICAgbmRuYm9vc3Q6OnJlX2RldGFpbDo6aW5wbGFjZV9kZXN0cm95KHBtcCsrKTsKLSAgIG1fYmFja3VwX3N0YXRlID0gcG1wOwotICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotdm9pZCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnB1c2hfcmVjdXJzaW9uX3BvcCgpCi17Ci0gICBzYXZlZF9zdGF0ZSogcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfc3RhdGUqPihtX2JhY2t1cF9zdGF0ZSk7Ci0gICAtLXBtcDsKLSAgIGlmKHBtcCA8IG1fc3RhY2tfYmFzZSkKLSAgIHsKLSAgICAgIGV4dGVuZF9zdGFjaygpOwotICAgICAgcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfc3RhdGUqPihtX2JhY2t1cF9zdGF0ZSk7Ci0gICAgICAtLXBtcDsKLSAgIH0KLSAgICh2b2lkKSBuZXcgKHBtcClzYXZlZF9zdGF0ZSgxNSk7Ci0gICBtX2JhY2t1cF9zdGF0ZSA9IHBtcDsKLX0KLS8qCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmRfcGFyZW50aGVzaXNfcG9wKGJvb2wgcikKLXsKLSAgIHNhdmVkX3N0YXRlKiBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9zdGF0ZSo+KG1fYmFja3VwX3N0YXRlKTsKLSAgIGlmKCFyKQotICAgewotICAgICAgLS1wYXJlbnRoZXNpc19zdGFja19wb3NpdGlvbjsKLSAgIH0KLSAgIG5kbmJvb3N0OjpyZV9kZXRhaWw6OmlucGxhY2VfZGVzdHJveShwbXArKyk7Ci0gICBtX2JhY2t1cF9zdGF0ZSA9IHBtcDsKLSAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLXZvaWQgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjpwdXNoX3BhcmVudGhlc2lzX3BvcCgpCi17Ci0gICBzYXZlZF9zdGF0ZSogcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfc3RhdGUqPihtX2JhY2t1cF9zdGF0ZSk7Ci0gICAtLXBtcDsKLSAgIGlmKHBtcCA8IG1fc3RhY2tfYmFzZSkKLSAgIHsKLSAgICAgIGV4dGVuZF9zdGFjaygpOwotICAgICAgcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfc3RhdGUqPihtX2JhY2t1cF9zdGF0ZSk7Ci0gICAgICAtLXBtcDsKLSAgIH0KLSAgICh2b2lkKSBuZXcgKHBtcClzYXZlZF9zdGF0ZSgxNik7Ci0gICBtX2JhY2t1cF9zdGF0ZSA9IHBtcDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX3BhcmVudGhlc2lzX3B1c2goYm9vbCByKQotewotICAgc2F2ZWRfcG9zaXRpb248QmlkaUl0ZXJhdG9yPiogcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfcG9zaXRpb248QmlkaUl0ZXJhdG9yPio+KG1fYmFja3VwX3N0YXRlKTsKLSAgIGlmKCFyKQotICAgewotICAgICAgcGFyZW50aGVzaXNfc3RhY2tbcGFyZW50aGVzaXNfc3RhY2tfcG9zaXRpb24rK10gPSBwbXAtPnBvc2l0aW9uOwotICAgfQotICAgbmRuYm9vc3Q6OnJlX2RldGFpbDo6aW5wbGFjZV9kZXN0cm95KHBtcCsrKTsKLSAgIG1fYmFja3VwX3N0YXRlID0gcG1wOwotICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotaW5saW5lIHZvaWQgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjpwdXNoX3BhcmVudGhlc2lzX3B1c2goQmlkaUl0ZXJhdG9yIHApCi17Ci0gICBzYXZlZF9wb3NpdGlvbjxCaWRpSXRlcmF0b3I+KiBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9wb3NpdGlvbjxCaWRpSXRlcmF0b3I+Kj4obV9iYWNrdXBfc3RhdGUpOwotICAgLS1wbXA7Ci0gICBpZihwbXAgPCBtX3N0YWNrX2Jhc2UpCi0gICB7Ci0gICAgICBleHRlbmRfc3RhY2soKTsKLSAgICAgIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX3Bvc2l0aW9uPEJpZGlJdGVyYXRvcj4qPihtX2JhY2t1cF9zdGF0ZSk7Ci0gICAgICAtLXBtcDsKLSAgIH0KLSAgICh2b2lkKSBuZXcgKHBtcClzYXZlZF9wb3NpdGlvbjxCaWRpSXRlcmF0b3I+KDAsIHAsIDE3KTsKLSAgIG1fYmFja3VwX3N0YXRlID0gcG1wOwotfQotKi8KLX0gLy8gbmFtZXNwYWNlIHJlX2RldGFpbAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNlbmRpZgotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcGVybF9tYXRjaGVyX3JlY3Vyc2l2ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3BlcmxfbWF0Y2hlcl9yZWN1cnNpdmUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNWVlNmJiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcGVybF9tYXRjaGVyX3JlY3Vyc2l2ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OTEgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICBwZXJsX21hdGNoZXJfY29tbW9uLmNwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogRGVmaW5pdGlvbnMgb2YgcGVybF9tYXRjaGVyIG1lbWJlciBmdW5jdGlvbnMgdGhhdCBhcmUgCi0gICogICAgICAgICAgICAgICAgc3BlY2lmaWMgdG8gdGhlIHJlY3Vyc2l2ZSBpbXBsZW1lbnRhdGlvbi4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9QRVJMX01BVENIRVJfUkVDVVJTSVZFX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9WNF9QRVJMX01BVENIRVJfUkVDVVJTSVZFX0hQUAotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0ODAwKQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLW5hbWVzcGFjZSByZV9kZXRhaWx7Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3I+Ci1jbGFzcyBiYWNrdXBfc3ViZXgKLXsKLSAgIGludCBpbmRleDsKLSAgIHN1Yl9tYXRjaDxCaWRpSXRlcmF0b3I+IHN1YjsKLXB1YmxpYzoKLSAgIHRlbXBsYXRlIDxjbGFzcyBBPgotICAgYmFja3VwX3N1YmV4KGNvbnN0IG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBPiYgdywgaW50IGkpCi0gICAgICA6IGluZGV4KGkpLCBzdWIod1tpXSwgZmFsc2UpIHt9Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgQT4KLSAgIHZvaWQgcmVzdG9yZShtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgQT4mIHcpCi0gICB7Ci0gICAgICB3LnNldF9maXJzdChzdWIuZmlyc3QsIGluZGV4LCBpbmRleCA9PSAwKTsKLSAgICAgIHcuc2V0X3NlY29uZChzdWIuc2Vjb25kLCBpbmRleCwgc3ViLm1hdGNoZWQsIGluZGV4ID09IDApOwotICAgfQotICAgY29uc3Qgc3ViX21hdGNoPEJpZGlJdGVyYXRvcj4mIGdldCgpIHsgcmV0dXJuIHN1YjsgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfYWxsX3N0YXRlcygpCi17Ci0gICBzdGF0aWMgbWF0Y2hlcl9wcm9jX3R5cGUgY29uc3Qgc19tYXRjaF92dGFibGVbMzBdID0gCi0gICB7Ci0gICAgICAoJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfc3RhcnRtYXJrKSwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2VuZG1hcmssCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9saXRlcmFsLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfc3RhcnRfbGluZSwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2VuZF9saW5lLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfd2lsZCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX21hdGNoLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfd29yZF9ib3VuZGFyeSwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3dpdGhpbl93b3JkLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfd29yZF9zdGFydCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3dvcmRfZW5kLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfYnVmZmVyX3N0YXJ0LAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfYnVmZmVyX2VuZCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2JhY2tyZWYsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9sb25nX3NldCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3NldCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2p1bXAsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9hbHQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9yZXAsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9jb21iaW5pbmcsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9zb2Z0X2J1ZmZlcl9lbmQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9yZXN0YXJ0X2NvbnRpbnVlLAotICAgICAgLy8gQWx0aG91Z2ggdGhpcyBuZXh0IGxpbmUgKnNob3VsZCogYmUgZXZhbHVhdGVkIGF0IGNvbXBpbGUgdGltZSwgaW4gcHJhY3RpY2UKLSAgICAgIC8vIHNvbWUgY29tcGlsZXJzIChWQysrKSBlbWl0IHJ1bi10aW1lIGluaXRpYWxpc2F0aW9uIHdoaWNoIGJyZWFrcyB0aHJlYWQKLSAgICAgIC8vIHNhZmV0eSwgc28gdXNlIGEgZGlzcGF0Y2ggZnVuY3Rpb24gaW5zdGVhZDoKLSAgICAgIC8vKDo6bmRuYm9vc3Q6OmlzX3JhbmRvbV9hY2Nlc3NfaXRlcmF0b3I8QmlkaUl0ZXJhdG9yPjo6dmFsdWUgPyAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9kb3RfcmVwZWF0X2Zhc3QgOiAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9kb3RfcmVwZWF0X3Nsb3cpLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfZG90X3JlcGVhdF9kaXNwYXRjaCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2NoYXJfcmVwZWF0LAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfc2V0X3JlcGVhdCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2xvbmdfc2V0X3JlcGVhdCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2JhY2tzdGVwLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfYXNzZXJ0X2JhY2tyZWYsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF90b2dnbGVfY2FzZSwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3JlY3Vyc2lvbiwKLSAgIH07Ci0KLSAgIGlmKHN0YXRlX2NvdW50ID4gbWF4X3N0YXRlX2NvdW50KQotICAgICAgcmFpc2VfZXJyb3IodHJhaXRzX2luc3QsIHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfY29tcGxleGl0eSk7Ci0gICB3aGlsZShwc3RhdGUpCi0gICB7Ci0gICAgICBtYXRjaGVyX3Byb2NfdHlwZSBwcm9jID0gc19tYXRjaF92dGFibGVbcHN0YXRlLT50eXBlXTsKLSAgICAgICsrc3RhdGVfY291bnQ7Ci0gICAgICBpZighKHRoaXMtPipwcm9jKSgpKQotICAgICAgewotICAgICAgICAgaWYoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9wYXJ0aWFsKSAmJiAocG9zaXRpb24gPT0gbGFzdCkgJiYgKHBvc2l0aW9uICE9IHNlYXJjaF9iYXNlKSkKLSAgICAgICAgICAgIG1faGFzX3BhcnRpYWxfbWF0Y2ggPSB0cnVlOwotICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICB9Ci0gICB9Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfc3RhcnRtYXJrKCkKLXsKLSAgIGludCBpbmRleCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2JyYWNlKj4ocHN0YXRlKS0+aW5kZXg7Ci0gICBpY2FzZSA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2JyYWNlKj4ocHN0YXRlKS0+aWNhc2U7Ci0gICBib29sIHIgPSB0cnVlOwotICAgc3dpdGNoKGluZGV4KQotICAgewotICAgY2FzZSAwOgotICAgICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgLTE6Ci0gICBjYXNlIC0yOgotICAgICAgewotICAgICAgICAgLy8gZm9yd2FyZCBsb29rYWhlYWQgYXNzZXJ0OgotICAgICAgICAgQmlkaUl0ZXJhdG9yIG9sZF9wb3NpdGlvbihwb3NpdGlvbik7Ci0gICAgICAgICBjb25zdCByZV9zeW50YXhfYmFzZSogbmV4dF9wc3RhdGUgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9qdW1wKj4ocHN0YXRlLT5uZXh0LnApLT5hbHQucC0+bmV4dC5wOwotICAgICAgICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnAtPm5leHQucDsKLSAgICAgICAgIHIgPSBtYXRjaF9hbGxfc3RhdGVzKCk7Ci0gICAgICAgICBwc3RhdGUgPSBuZXh0X3BzdGF0ZTsKLSAgICAgICAgIHBvc2l0aW9uID0gb2xkX3Bvc2l0aW9uOwotICAgICAgICAgaWYoKHIgJiYgKGluZGV4ICE9IC0xKSkgfHwgKCFyICYmIChpbmRleCAhPSAtMikpKQotICAgICAgICAgICAgciA9IGZhbHNlOwotICAgICAgICAgZWxzZQotICAgICAgICAgICAgciA9IHRydWU7Ci0gICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgIGNhc2UgLTM6Ci0gICAgICB7Ci0gICAgICAgICAvLyBpbmRlcGVuZGVudCBzdWItZXhwcmVzc2lvbjoKLSAgICAgICAgIGJvb2wgb2xkX2luZGVwZW5kZW50ID0gbV9pbmRlcGVuZGVudDsKLSAgICAgICAgIG1faW5kZXBlbmRlbnQgPSB0cnVlOwotICAgICAgICAgY29uc3QgcmVfc3ludGF4X2Jhc2UqIG5leHRfcHN0YXRlID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfanVtcCo+KHBzdGF0ZS0+bmV4dC5wKS0+YWx0LnAtPm5leHQucDsKLSAgICAgICAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wLT5uZXh0LnA7Ci0gICAgICAgICByID0gbWF0Y2hfYWxsX3N0YXRlcygpOwotICAgICAgICAgcHN0YXRlID0gbmV4dF9wc3RhdGU7Ci0gICAgICAgICBtX2luZGVwZW5kZW50ID0gb2xkX2luZGVwZW5kZW50OwotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX01BVENIX0VYVFJBCi0gICAgICAgICBpZihyICYmIChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfZXh0cmEpKQotICAgICAgICAgewotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIG91ciBjYXB0dXJlcyBoYXZlIGJlZW4gc3RvcmVkIGluICptX3ByZXN1bHQKLSAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gdW5wYWNrIHRoZW0sIGFuZCBpbnNlcnQgdGhlbQotICAgICAgICAgICAgLy8gYmFjayBpbiB0aGUgcmlnaHQgb3JkZXIgd2hlbiB3ZSB1bndpbmQgdGhlIHN0YWNrOgotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIHVuc2lnbmVkIGk7Ci0gICAgICAgICAgICBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yPiB0bSgqbV9wcmVzdWx0KTsKLSAgICAgICAgICAgIGZvcihpID0gMDsgaSA8IHRtLnNpemUoKTsgKytpKQotICAgICAgICAgICAgICAgKCptX3ByZXN1bHQpW2ldLmdldF9jYXB0dXJlcygpLmNsZWFyKCk7Ci0gICAgICAgICAgICAvLyBtYXRjaCBldmVyeXRoaW5nIGVsc2U6Ci0gICAgICAgICAgICByID0gbWF0Y2hfYWxsX3N0YXRlcygpOwotICAgICAgICAgICAgLy8gbm93IHBsYWNlIHRoZSBzdG9yZWQgY2FwdHVyZXMgYmFjazoKLSAgICAgICAgICAgIGZvcihpID0gMDsgaSA8IHRtLnNpemUoKTsgKytpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzdWJfbWF0Y2g8QmlkaUl0ZXJhdG9yPjo6Y2FwdHVyZV9zZXF1ZW5jZV90eXBlIHNlcTsKLSAgICAgICAgICAgICAgIHNlcSYgczEgPSAoKm1fcHJlc3VsdClbaV0uZ2V0X2NhcHR1cmVzKCk7Ci0gICAgICAgICAgICAgICBjb25zdCBzZXEmIHMyID0gdG1baV0uY2FwdHVyZXMoKTsKLSAgICAgICAgICAgICAgIHMxLmluc2VydCgKLSAgICAgICAgICAgICAgICAgIHMxLmVuZCgpLCAKLSAgICAgICAgICAgICAgICAgIHMyLmJlZ2luKCksIAotICAgICAgICAgICAgICAgICAgczIuZW5kKCkpOwotICAgICAgICAgICAgfQotICAgICAgICAgfQotI2VuZGlmCi0gICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgIGNhc2UgLTQ6Ci0gICAgICB7Ci0gICAgICAvLyBjb25kaXRpb25hbCBleHByZXNzaW9uOgotICAgICAgY29uc3QgcmVfYWx0KiBhbHQgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9hbHQqPihwc3RhdGUtPm5leHQucCk7Ci0gICAgICBORE5CT09TVF9BU1NFUlQoYWx0LT50eXBlID09IHN5bnRheF9lbGVtZW50X2FsdCk7Ci0gICAgICBwc3RhdGUgPSBhbHQtPm5leHQucDsKLSAgICAgIGlmKHBzdGF0ZS0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9hc3NlcnRfYmFja3JlZikKLSAgICAgIHsKLSAgICAgICAgIGlmKCFtYXRjaF9hc3NlcnRfYmFja3JlZigpKQotICAgICAgICAgICAgcHN0YXRlID0gYWx0LT5hbHQucDsKLSAgICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgLy8gemVybyB3aWR0aCBhc3NlcnRpb24sIGhhdmUgdG8gbWF0Y2ggdGhpcyByZWN1cnNpdmVseToKLSAgICAgICAgIE5ETkJPT1NUX0FTU0VSVChwc3RhdGUtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfc3RhcnRtYXJrKTsKLSAgICAgICAgIGJvb2wgbmVnYXRlZCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2JyYWNlKj4ocHN0YXRlKS0+aW5kZXggPT0gLTI7Ci0gICAgICAgICBCaWRpSXRlcmF0b3Igc2F2ZWRfcG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICAgICAgIGNvbnN0IHJlX3N5bnRheF9iYXNlKiBuZXh0X3BzdGF0ZSA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2p1bXAqPihwc3RhdGUtPm5leHQucCktPmFsdC5wLT5uZXh0LnA7Ci0gICAgICAgICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucC0+bmV4dC5wOwotICAgICAgICAgYm9vbCByZXMgPSBtYXRjaF9hbGxfc3RhdGVzKCk7Ci0gICAgICAgICBwb3NpdGlvbiA9IHNhdmVkX3Bvc2l0aW9uOwotICAgICAgICAgaWYobmVnYXRlZCkKLSAgICAgICAgICAgIHJlcyA9ICFyZXM7Ci0gICAgICAgICBpZihyZXMpCi0gICAgICAgICAgICBwc3RhdGUgPSBuZXh0X3BzdGF0ZTsKLSAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHBzdGF0ZSA9IGFsdC0+YWx0LnA7Ci0gICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIH0KLSAgIGNhc2UgLTU6Ci0gICAgICB7Ci0gICAgICAgICAvLyBSZXNldCBzdGFydCBvZiAkMCwgc2luY2Ugd2UgaGF2ZSBhIFxLIGVzY2FwZQotICAgICAgICAgYmFja3VwX3N1YmV4PEJpZGlJdGVyYXRvcj4gc3ViKCptX3ByZXN1bHQsIDApOwotICAgICAgICAgbV9wcmVzdWx0LT5zZXRfZmlyc3QocG9zaXRpb24sIDAsIHRydWUpOwotICAgICAgICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICAgICAgICByID0gbWF0Y2hfYWxsX3N0YXRlcygpOwotICAgICAgICAgaWYociA9PSBmYWxzZSkKLSAgICAgICAgICAgIHN1Yi5yZXN0b3JlKCptX3ByZXN1bHQpOwotICAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICBkZWZhdWx0OgotICAgewotICAgICAgTkROQk9PU1RfQVNTRVJUKGluZGV4ID4gMCk7Ci0gICAgICBpZigobV9tYXRjaF9mbGFncyAmIG1hdGNoX25vc3VicykgPT0gMCkKLSAgICAgIHsKLSAgICAgICAgIGJhY2t1cF9zdWJleDxCaWRpSXRlcmF0b3I+IHN1YigqbV9wcmVzdWx0LCBpbmRleCk7Ci0gICAgICAgICBtX3ByZXN1bHQtPnNldF9maXJzdChwb3NpdGlvbiwgaW5kZXgpOwotICAgICAgICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICAgICAgICByID0gbWF0Y2hfYWxsX3N0YXRlcygpOwotICAgICAgICAgaWYociA9PSBmYWxzZSkKLSAgICAgICAgICAgIHN1Yi5yZXN0b3JlKCptX3ByZXN1bHQpOwotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX01BVENIX0VYVFJBCi0gICAgICAgICAvLwotICAgICAgICAgLy8gd2UgaGF2ZSBhIG1hdGNoLCBwdXNoIHRoZSBjYXB0dXJlIGluZm9ybWF0aW9uIG9udG8gdGhlIHN0YWNrOgotICAgICAgICAgLy8KLSAgICAgICAgIGVsc2UgaWYoc3ViLmdldCgpLm1hdGNoZWQgJiYgKG1hdGNoX2V4dHJhICYgbV9tYXRjaF9mbGFncykpCi0gICAgICAgICAgICAoKCptX3ByZXN1bHQpW2luZGV4XSkuZ2V0X2NhcHR1cmVzKCkucHVzaF9iYWNrKHN1Yi5nZXQoKSk7Ci0jZW5kaWYKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgICAgfQotICAgICAgYnJlYWs7Ci0gICB9Ci0gICB9Ci0gICByZXR1cm4gcjsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfYWx0KCkKLXsKLSAgIGJvb2wgdGFrZV9maXJzdCwgdGFrZV9zZWNvbmQ7Ci0gICBjb25zdCByZV9hbHQqIGptcCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2FsdCo+KHBzdGF0ZSk7Ci0KLSAgIC8vIGZpbmQgb3V0IHdoaWNoIG9mIHRoZXNlIHR3byBhbHRlcm5hdGl2ZXMgd2UgbmVlZCB0byB0YWtlOgotICAgaWYocG9zaXRpb24gPT0gbGFzdCkKLSAgIHsKLSAgICAgIHRha2VfZmlyc3QgPSBqbXAtPmNhbl9iZV9udWxsICYgbWFza190YWtlOwotICAgICAgdGFrZV9zZWNvbmQgPSBqbXAtPmNhbl9iZV9udWxsICYgbWFza19za2lwOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgdGFrZV9maXJzdCA9IGNhbl9zdGFydCgqcG9zaXRpb24sIGptcC0+X21hcCwgKHVuc2lnbmVkIGNoYXIpbWFza190YWtlKTsKLSAgICAgIHRha2Vfc2Vjb25kID0gY2FuX3N0YXJ0KCpwb3NpdGlvbiwgam1wLT5fbWFwLCAodW5zaWduZWQgY2hhciltYXNrX3NraXApOwotICB9Ci0KLSAgIGlmKHRha2VfZmlyc3QpCi0gICB7Ci0gICAgICAvLyB3ZSBjYW4gdGFrZSB0aGUgZmlyc3QgYWx0ZXJuYXRpdmUsCi0gICAgICAvLyBzZWUgaWYgd2UgbmVlZCB0byBwdXNoIG5leHQgYWx0ZXJuYXRpdmU6Ci0gICAgICBpZih0YWtlX3NlY29uZCkKLSAgICAgIHsKLSAgICAgICAgIEJpZGlJdGVyYXRvciBvbGRwb3NpdGlvbihwb3NpdGlvbik7Ci0gICAgICAgICBjb25zdCByZV9zeW50YXhfYmFzZSogb2xkX3BzdGF0ZSA9IGptcC0+YWx0LnA7Ci0gICAgICAgICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucDsKLSAgICAgICAgIGlmKCFtYXRjaF9hbGxfc3RhdGVzKCkpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBwc3RhdGUgPSBvbGRfcHN0YXRlOwotICAgICAgICAgICAgcG9zaXRpb24gPSBvbGRwb3NpdGlvbjsKLSAgICAgICAgIH0KLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIGlmKHRha2Vfc2Vjb25kKQotICAgewotICAgICAgcHN0YXRlID0gam1wLT5hbHQucDsKLSAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgcmV0dXJuIGZhbHNlOyAgLy8gbmVpdGhlciBvcHRpb24gaXMgcG9zc2libGUKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfcmVwKCkKLXsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMjcgNDI0NCkKLSNlbmRpZgotICAgY29uc3QgcmVfcmVwZWF0KiByZXAgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9yZXBlYXQqPihwc3RhdGUpOwotICAgLy8KLSAgIC8vIEFsd2F5cyBjb3B5IHRoZSByZXBlYXQgY291bnQsIHNvIHRoYXQgdGhlIHN0YXRlIGlzIHJlc3RvcmVkCi0gICAvLyB3aGVuIHdlIGV4aXQgdGhpcyBzY29wZToKLSAgIC8vCi0gICByZXBlYXRlcl9jb3VudDxCaWRpSXRlcmF0b3I+IHIocmVwLT5zdGF0ZV9pZCwgJm5leHRfY291bnQsIHBvc2l0aW9uKTsKLSAgIC8vCi0gICAvLyBJZiB3ZSd2ZSBoYWQgYXQgbGVhc3Qgb25lIHJlcGVhdCBhbHJlYWR5LCBhbmQgdGhlIGxhc3Qgb25lIAotICAgLy8gbWF0Y2hlZCB0aGUgTlVMTCBzdHJpbmcgdGhlbiBzZXQgdGhlIHJlcGVhdCBjb3VudCB0bwotICAgLy8gbWF4aW11bToKLSAgIC8vCi0gICBuZXh0X2NvdW50LT5jaGVja19udWxsX3JlcGVhdChwb3NpdGlvbiwgcmVwLT5tYXgpOwotCi0gICAvLyBmaW5kIG91dCB3aGljaCBvZiB0aGVzZSB0d28gYWx0ZXJuYXRpdmVzIHdlIG5lZWQgdG8gdGFrZToKLSAgIGJvb2wgdGFrZV9maXJzdCwgdGFrZV9zZWNvbmQ7Ci0gICBpZihwb3NpdGlvbiA9PSBsYXN0KQotICAgewotICAgICAgdGFrZV9maXJzdCA9IHJlcC0+Y2FuX2JlX251bGwgJiBtYXNrX3Rha2U7Ci0gICAgICB0YWtlX3NlY29uZCA9IHJlcC0+Y2FuX2JlX251bGwgJiBtYXNrX3NraXA7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICB0YWtlX2ZpcnN0ID0gY2FuX3N0YXJ0KCpwb3NpdGlvbiwgcmVwLT5fbWFwLCAodW5zaWduZWQgY2hhciltYXNrX3Rha2UpOwotICAgICAgdGFrZV9zZWNvbmQgPSBjYW5fc3RhcnQoKnBvc2l0aW9uLCByZXAtPl9tYXAsICh1bnNpZ25lZCBjaGFyKW1hc2tfc2tpcCk7Ci0gICB9Ci0KLSAgIGlmKG5leHRfY291bnQtPmdldF9jb3VudCgpIDwgcmVwLT5taW4pCi0gICB7Ci0gICAgICAvLyB3ZSBtdXN0IHRha2UgdGhlIHJlcGVhdDoKLSAgICAgIGlmKHRha2VfZmlyc3QpCi0gICAgICB7Ci0gICAgICAgICAvLyBpbmNyZWFzZSB0aGUgY291bnRlcjoKLSAgICAgICAgICsrKCpuZXh0X2NvdW50KTsKLSAgICAgICAgIHBzdGF0ZSA9IHJlcC0+bmV4dC5wOwotICAgICAgICAgcmV0dXJuIG1hdGNoX2FsbF9zdGF0ZXMoKTsKLSAgICAgIH0KLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSAgIGJvb2wgZ3JlZWR5ID0gKHJlcC0+Z3JlZWR5KSAmJiAoIShtX21hdGNoX2ZsYWdzICYgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpIHx8IG1faW5kZXBlbmRlbnQpOyAgIAotICAgaWYoZ3JlZWR5KQotICAgewotICAgICAgLy8gdHJ5IGFuZCB0YWtlIHRoZSByZXBlYXQgaWYgd2UgY2FuOgotICAgICAgaWYoKG5leHRfY291bnQtPmdldF9jb3VudCgpIDwgcmVwLT5tYXgpICYmIHRha2VfZmlyc3QpCi0gICAgICB7Ci0gICAgICAgICAvLyBzdG9yZSBwb3NpdGlvbiBpbiBjYXNlIHdlIGZhaWw6Ci0gICAgICAgICBCaWRpSXRlcmF0b3IgcG9zID0gcG9zaXRpb247Ci0gICAgICAgICAvLyBpbmNyZWFzZSB0aGUgY291bnRlcjoKLSAgICAgICAgICsrKCpuZXh0X2NvdW50KTsKLSAgICAgICAgIHBzdGF0ZSA9IHJlcC0+bmV4dC5wOwotICAgICAgICAgaWYobWF0Y2hfYWxsX3N0YXRlcygpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAvLyBmYWlsZWQgcmVwZWF0LCByZXNldCBwb3Npc3Rpb24gYW5kIGZhbGwgdGhyb3VnaCBmb3IgYWx0ZXJuYXRpdmU6Ci0gICAgICAgICBwb3NpdGlvbiA9IHBvczsKLSAgICAgIH0KLSAgICAgIGlmKHRha2Vfc2Vjb25kKQotICAgICAgewotICAgICAgICAgcHN0YXRlID0gcmVwLT5hbHQucDsKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgcmV0dXJuIGZhbHNlOyAvLyBjYW4ndCB0YWtlIGFueXRoaW5nLCBmYWlsLi4uCi0gICB9Ci0gICBlbHNlIC8vIG5vbi1ncmVlZHkKLSAgIHsKLSAgICAgIC8vIHRyeSBhbmQgc2tpcCB0aGUgcmVwZWF0IGlmIHdlIGNhbjoKLSAgICAgIGlmKHRha2Vfc2Vjb25kKQotICAgICAgewotICAgICAgICAgLy8gc3RvcmUgcG9zaXRpb24gaW4gY2FzZSB3ZSBmYWlsOgotICAgICAgICAgQmlkaUl0ZXJhdG9yIHBvcyA9IHBvc2l0aW9uOwotICAgICAgICAgcHN0YXRlID0gcmVwLT5hbHQucDsKLSAgICAgICAgIGlmKG1hdGNoX2FsbF9zdGF0ZXMoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgLy8gZmFpbGVkIGFsdGVybmF0aXZlLCByZXNldCBwb3Npc3Rpb24gYW5kIGZhbGwgdGhyb3VnaCBmb3IgcmVwZWF0OgotICAgICAgICAgcG9zaXRpb24gPSBwb3M7Ci0gICAgICB9Ci0gICAgICBpZigobmV4dF9jb3VudC0+Z2V0X2NvdW50KCkgPCByZXAtPm1heCkgJiYgdGFrZV9maXJzdCkKLSAgICAgIHsKLSAgICAgICAgIC8vIGluY3JlYXNlIHRoZSBjb3VudGVyOgotICAgICAgICAgKysoKm5leHRfY291bnQpOwotICAgICAgICAgcHN0YXRlID0gcmVwLT5uZXh0LnA7Ci0gICAgICAgICByZXR1cm4gbWF0Y2hfYWxsX3N0YXRlcygpOwotICAgICAgfQotICAgfQotICAgcmV0dXJuIGZhbHNlOwotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfZG90X3JlcGVhdF9zbG93KCkKLXsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMjcpCi0jZW5kaWYKLSAgIHVuc2lnbmVkIGNvdW50ID0gMDsKLSAgIGNvbnN0IHJlX3JlcGVhdCogcmVwID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfcmVwZWF0Kj4ocHN0YXRlKTsKLSAgIHJlX3N5bnRheF9iYXNlKiBwc2luZ2xlID0gcmVwLT5uZXh0LnA7Ci0gICAvLyBtYXRjaCBjb21wdWxzYXJ5IHJlcGVhdHMgZmlyc3Q6Ci0gICB3aGlsZShjb3VudCA8IHJlcC0+bWluKQotICAgewotICAgICAgcHN0YXRlID0gcHNpbmdsZTsKLSAgICAgIGlmKCFtYXRjaF93aWxkKCkpCi0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICArK2NvdW50OwotICAgfQotICAgYm9vbCBncmVlZHkgPSAocmVwLT5ncmVlZHkpICYmICghKG1fbWF0Y2hfZmxhZ3MgJiByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSkgfHwgbV9pbmRlcGVuZGVudCk7ICAgCi0gICBpZihncmVlZHkpCi0gICB7Ci0gICAgICAvLyBub3JtYWwgcmVwZWF0OgotICAgICAgd2hpbGUoY291bnQgPCByZXAtPm1heCkKLSAgICAgIHsKLSAgICAgICAgIHBzdGF0ZSA9IHBzaW5nbGU7Ci0gICAgICAgICBpZighbWF0Y2hfd2lsZCgpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICArK2NvdW50OwotICAgICAgfQotICAgICAgaWYoKHJlcC0+bGVhZGluZykgJiYgKGNvdW50IDwgcmVwLT5tYXgpKQotICAgICAgICAgcmVzdGFydCA9IHBvc2l0aW9uOwotICAgICAgcHN0YXRlID0gcmVwOwotICAgICAgcmV0dXJuIGJhY2t0cmFja190aWxsX21hdGNoKGNvdW50IC0gcmVwLT5taW4pOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgLy8gbm9uLWdyZWVkeSwga2VlcCB0cnlpbmcgdGlsbCB3ZSBnZXQgYSBtYXRjaDoKLSAgICAgIEJpZGlJdGVyYXRvciBzYXZlX3BvczsKLSAgICAgIGRvCi0gICAgICB7Ci0gICAgICAgICBpZigocmVwLT5sZWFkaW5nKSAmJiAocmVwLT5tYXggPT0gVUlOVF9NQVgpKQotICAgICAgICAgICAgcmVzdGFydCA9IHBvc2l0aW9uOwotICAgICAgICAgcHN0YXRlID0gcmVwLT5hbHQucDsKLSAgICAgICAgIHNhdmVfcG9zID0gcG9zaXRpb247Ci0gICAgICAgICArK3N0YXRlX2NvdW50OwotICAgICAgICAgaWYobWF0Y2hfYWxsX3N0YXRlcygpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICBpZihjb3VudCA+PSByZXAtPm1heCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICsrY291bnQ7Ci0gICAgICAgICBwc3RhdGUgPSBwc2luZ2xlOwotICAgICAgICAgcG9zaXRpb24gPSBzYXZlX3BvczsKLSAgICAgICAgIGlmKCFtYXRjaF93aWxkKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9d2hpbGUodHJ1ZSk7Ci0gICB9Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9kb3RfcmVwZWF0X2Zhc3QoKQotewotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEyNykKLSNlbmRpZgotICAgaWYobV9tYXRjaF9mbGFncyAmIG1hdGNoX25vdF9kb3RfbnVsbCkKLSAgICAgIHJldHVybiBtYXRjaF9kb3RfcmVwZWF0X3Nsb3coKTsKLSAgIGlmKChzdGF0aWNfY2FzdDxjb25zdCByZV9kb3QqPihwc3RhdGUtPm5leHQucCktPm1hc2sgJiBtYXRjaF9hbnlfbWFzaykgPT0gMCkKLSAgICAgIHJldHVybiBtYXRjaF9kb3RfcmVwZWF0X3Nsb3coKTsKLSAgIC8vCi0gICAvLyBzdGFydCBieSB3b3JraW5nIG91dCBob3cgbXVjaCB3ZSBjYW4gc2tpcDoKLSAgIC8vCi0gICBjb25zdCByZV9yZXBlYXQqIHJlcCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX3JlcGVhdCo+KHBzdGF0ZSk7Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MjY3KQotI2VuZGlmCi0gICBib29sIGdyZWVkeSA9IChyZXAtPmdyZWVkeSkgJiYgKCEobV9tYXRjaF9mbGFncyAmIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KSB8fCBtX2luZGVwZW5kZW50KTsgICAKLSAgIHN0ZDo6c2l6ZV90IGNvdW50ID0gKHN0ZDo6bWluKShzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZShwb3NpdGlvbiwgbGFzdCkpLCBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oZ3JlZWR5ID8gcmVwLT5tYXggOiByZXAtPm1pbikpOwotICAgaWYocmVwLT5taW4gPiBjb3VudCkKLSAgIHsKLSAgICAgIHBvc2l0aW9uID0gbGFzdDsKLSAgICAgIHJldHVybiBmYWxzZTsgIC8vIG5vdCBlbm91Z2ggdGV4dCBsZWZ0IHRvIG1hdGNoCi0gICB9Ci0gICBzdGQ6OmFkdmFuY2UocG9zaXRpb24sIGNvdW50KTsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0gICBpZigocmVwLT5sZWFkaW5nKSAmJiAoY291bnQgPCByZXAtPm1heCkgJiYgZ3JlZWR5KQotICAgICAgcmVzdGFydCA9IHBvc2l0aW9uOwotICAgaWYoZ3JlZWR5KQotICAgICAgcmV0dXJuIGJhY2t0cmFja190aWxsX21hdGNoKGNvdW50IC0gcmVwLT5taW4pOwotCi0gICAvLyBub24tZ3JlZWR5LCBrZWVwIHRyeWluZyB0aWxsIHdlIGdldCBhIG1hdGNoOgotICAgQmlkaUl0ZXJhdG9yIHNhdmVfcG9zOwotICAgZG8KLSAgIHsKLSAgICAgIHdoaWxlKChwb3NpdGlvbiAhPSBsYXN0KSAmJiAoY291bnQgPCByZXAtPm1heCkgJiYgIWNhbl9zdGFydCgqcG9zaXRpb24sIHJlcC0+X21hcCwgbWFza19za2lwKSkKLSAgICAgIHsKLSAgICAgICAgICsrcG9zaXRpb247Ci0gICAgICAgICArK2NvdW50OwotICAgICAgfQotICAgICAgaWYoKHJlcC0+bGVhZGluZykgJiYgKHJlcC0+bWF4ID09IFVJTlRfTUFYKSkKLSAgICAgICAgIHJlc3RhcnQgPSBwb3NpdGlvbjsKLSAgICAgIHBzdGF0ZSA9IHJlcC0+YWx0LnA7Ci0gICAgICBzYXZlX3BvcyA9IHBvc2l0aW9uOwotICAgICAgKytzdGF0ZV9jb3VudDsKLSAgICAgIGlmKG1hdGNoX2FsbF9zdGF0ZXMoKSkKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgaWYoY291bnQgPj0gcmVwLT5tYXgpCi0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICBpZihzYXZlX3BvcyA9PSBsYXN0KQotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgcG9zaXRpb24gPSArK3NhdmVfcG9zOwotICAgICAgKytjb3VudDsKLSAgIH13aGlsZSh0cnVlKTsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2NoYXJfcmVwZWF0KCkKLXsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMjcpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MjY3KQotI2VuZGlmCi0jaWZkZWYgX19CT1JMQU5EQ19fCi0jcHJhZ21hIG9wdGlvbiBwdXNoIC13LTgwMDggLXctODA2NiAtdy04MDA0Ci0jZW5kaWYKLSAgIGNvbnN0IHJlX3JlcGVhdCogcmVwID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfcmVwZWF0Kj4ocHN0YXRlKTsKLSAgIE5ETkJPT1NUX0FTU0VSVCgxID09IHN0YXRpY19jYXN0PGNvbnN0IHJlX2xpdGVyYWwqPihyZXAtPm5leHQucCktPmxlbmd0aCk7Ci0gICBjb25zdCBjaGFyX3R5cGUgd2hhdCA9ICpyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXJfdHlwZSo+KHN0YXRpY19jYXN0PGNvbnN0IHJlX2xpdGVyYWwqPihyZXAtPm5leHQucCkgKyAxKTsKLSAgIC8vCi0gICAvLyBzdGFydCBieSB3b3JraW5nIG91dCBob3cgbXVjaCB3ZSBjYW4gc2tpcDoKLSAgIC8vCi0gICBib29sIGdyZWVkeSA9IChyZXAtPmdyZWVkeSkgJiYgKCEobV9tYXRjaF9mbGFncyAmIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KSB8fCBtX2luZGVwZW5kZW50KTsgICAKLSAgIHN0ZDo6c2l6ZV90IGNvdW50LCBkZXNpcmVkOwotICAgaWYoOjpuZG5ib29zdDo6aXNfcmFuZG9tX2FjY2Vzc19pdGVyYXRvcjxCaWRpSXRlcmF0b3I+Ojp2YWx1ZSkKLSAgIHsKLSAgICAgIGRlc2lyZWQgPSAKLSAgICAgICAgIChzdGQ6Om1pbikoCi0gICAgICAgICAgICAoc3RkOjpzaXplX3QpKGdyZWVkeSA/IHJlcC0+bWF4IDogcmVwLT5taW4pLAotICAgICAgICAgICAgKHN0ZDo6c2l6ZV90KTo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2UocG9zaXRpb24sIGxhc3QpKTsKLSAgICAgIGNvdW50ID0gZGVzaXJlZDsKLSAgICAgICsrZGVzaXJlZDsKLSAgICAgIGlmKGljYXNlKQotICAgICAgewotICAgICAgICAgd2hpbGUoLS1kZXNpcmVkICYmICh0cmFpdHNfaW5zdC50cmFuc2xhdGVfbm9jYXNlKCpwb3NpdGlvbikgPT0gd2hhdCkpCi0gICAgICAgICB7Ci0gICAgICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgd2hpbGUoLS1kZXNpcmVkICYmICh0cmFpdHNfaW5zdC50cmFuc2xhdGUoKnBvc2l0aW9uKSA9PSB3aGF0KSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgICsrcG9zaXRpb247Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBjb3VudCA9IGNvdW50IC0gZGVzaXJlZDsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIGNvdW50ID0gMDsKLSAgICAgIGRlc2lyZWQgPSBncmVlZHkgPyByZXAtPm1heCA6IHJlcC0+bWluOwotICAgICAgd2hpbGUoKGNvdW50IDwgZGVzaXJlZCkgJiYgKHBvc2l0aW9uICE9IGxhc3QpICYmICh0cmFpdHNfaW5zdC50cmFuc2xhdGUoKnBvc2l0aW9uLCBpY2FzZSkgPT0gd2hhdCkpCi0gICAgICB7Ci0gICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgICAgKytjb3VudDsKLSAgICAgIH0KLSAgIH0KLSAgIGlmKChyZXAtPmxlYWRpbmcpICYmIChjb3VudCA8IHJlcC0+bWF4KSAmJiBncmVlZHkpCi0gICAgICByZXN0YXJ0ID0gcG9zaXRpb247Ci0gICBpZihjb3VudCA8IHJlcC0+bWluKQotICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICBpZihncmVlZHkpCi0gICAgICByZXR1cm4gYmFja3RyYWNrX3RpbGxfbWF0Y2goY291bnQgLSByZXAtPm1pbik7Ci0KLSAgIC8vIG5vbi1ncmVlZHksIGtlZXAgdHJ5aW5nIHRpbGwgd2UgZ2V0IGEgbWF0Y2g6Ci0gICBCaWRpSXRlcmF0b3Igc2F2ZV9wb3M7Ci0gICBkbwotICAgewotICAgICAgd2hpbGUoKHBvc2l0aW9uICE9IGxhc3QpICYmIChjb3VudCA8IHJlcC0+bWF4KSAmJiAhY2FuX3N0YXJ0KCpwb3NpdGlvbiwgcmVwLT5fbWFwLCBtYXNrX3NraXApKQotICAgICAgewotICAgICAgICAgaWYoKHRyYWl0c19pbnN0LnRyYW5zbGF0ZSgqcG9zaXRpb24sIGljYXNlKSA9PSB3aGF0KSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgICsrcG9zaXRpb247Ci0gICAgICAgICAgICArK2NvdW50OwotICAgICAgICAgfQotICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAgLy8gY291bmxkbid0IHJlcGVhdCBldmVuIHRob3VnaCBpdCB3YXMgdGhlIG9ubHkgb3B0aW9uCi0gICAgICB9Ci0gICAgICBpZigocmVwLT5sZWFkaW5nKSAmJiAocmVwLT5tYXggPT0gVUlOVF9NQVgpKQotICAgICAgICAgcmVzdGFydCA9IHBvc2l0aW9uOwotICAgICAgcHN0YXRlID0gcmVwLT5hbHQucDsKLSAgICAgIHNhdmVfcG9zID0gcG9zaXRpb247Ci0gICAgICArK3N0YXRlX2NvdW50OwotICAgICAgaWYobWF0Y2hfYWxsX3N0YXRlcygpKQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBpZihjb3VudCA+PSByZXAtPm1heCkKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIHBvc2l0aW9uID0gc2F2ZV9wb3M7Ci0gICAgICBpZihwb3NpdGlvbiA9PSBsYXN0KQotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgaWYodHJhaXRzX2luc3QudHJhbnNsYXRlKCpwb3NpdGlvbiwgaWNhc2UpID09IHdoYXQpCi0gICAgICB7Ci0gICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgICAgKytjb3VudDsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgIH13aGlsZSh0cnVlKTsKLSNpZmRlZiBfX0JPUkxBTkRDX18KLSNwcmFnbWEgb3B0aW9uIHBvcAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9zZXRfcmVwZWF0KCkKLXsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMjcpCi0jZW5kaWYKLSNpZmRlZiBfX0JPUkxBTkRDX18KLSNwcmFnbWEgb3B0aW9uIHB1c2ggLXctODAwOCAtdy04MDY2IC13LTgwMDQKLSNlbmRpZgotICAgY29uc3QgcmVfcmVwZWF0KiByZXAgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9yZXBlYXQqPihwc3RhdGUpOwotICAgY29uc3QgdW5zaWduZWQgY2hhciogbWFwID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfc2V0Kj4ocmVwLT5uZXh0LnApLT5fbWFwOwotICAgdW5zaWduZWQgY291bnQgPSAwOwotICAgLy8KLSAgIC8vIHN0YXJ0IGJ5IHdvcmtpbmcgb3V0IGhvdyBtdWNoIHdlIGNhbiBza2lwOgotICAgLy8KLSAgIGJvb2wgZ3JlZWR5ID0gKHJlcC0+Z3JlZWR5KSAmJiAoIShtX21hdGNoX2ZsYWdzICYgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpIHx8IG1faW5kZXBlbmRlbnQpOyAgIAotICAgc3RkOjpzaXplX3QgZGVzaXJlZCA9IGdyZWVkeSA/IHJlcC0+bWF4IDogcmVwLT5taW47Ci0gICBpZig6Om5kbmJvb3N0Ojppc19yYW5kb21fYWNjZXNzX2l0ZXJhdG9yPEJpZGlJdGVyYXRvcj46OnZhbHVlKQotICAgewotICAgICAgQmlkaUl0ZXJhdG9yIGVuZCA9IHBvc2l0aW9uOwotICAgICAgc3RkOjphZHZhbmNlKGVuZCwgKHN0ZDo6bWluKSgoc3RkOjpzaXplX3QpOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZShwb3NpdGlvbiwgbGFzdCksIGRlc2lyZWQpKTsKLSAgICAgIEJpZGlJdGVyYXRvciBvcmlnaW4ocG9zaXRpb24pOwotICAgICAgd2hpbGUoKHBvc2l0aW9uICE9IGVuZCkgJiYgbWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHRyYWl0c19pbnN0LnRyYW5zbGF0ZSgqcG9zaXRpb24sIGljYXNlKSldKQotICAgICAgewotICAgICAgICAgKytwb3NpdGlvbjsKLSAgICAgIH0KLSAgICAgIGNvdW50ID0gKHVuc2lnbmVkKTo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2Uob3JpZ2luLCBwb3NpdGlvbik7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICB3aGlsZSgoY291bnQgPCBkZXNpcmVkKSAmJiAocG9zaXRpb24gIT0gbGFzdCkgJiYgbWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHRyYWl0c19pbnN0LnRyYW5zbGF0ZSgqcG9zaXRpb24sIGljYXNlKSldKQotICAgICAgewotICAgICAgICAgKytwb3NpdGlvbjsKLSAgICAgICAgICsrY291bnQ7Ci0gICAgICB9Ci0gICB9Ci0gICBpZigocmVwLT5sZWFkaW5nKSAmJiAoY291bnQgPCByZXAtPm1heCkgJiYgZ3JlZWR5KQotICAgICAgcmVzdGFydCA9IHBvc2l0aW9uOwotICAgaWYoY291bnQgPCByZXAtPm1pbikKLSAgICAgIHJldHVybiBmYWxzZTsKLQotICAgaWYoZ3JlZWR5KQotICAgICAgcmV0dXJuIGJhY2t0cmFja190aWxsX21hdGNoKGNvdW50IC0gcmVwLT5taW4pOwotCi0gICAvLyBub24tZ3JlZWR5LCBrZWVwIHRyeWluZyB0aWxsIHdlIGdldCBhIG1hdGNoOgotICAgQmlkaUl0ZXJhdG9yIHNhdmVfcG9zOwotICAgZG8KLSAgIHsKLSAgICAgIHdoaWxlKChwb3NpdGlvbiAhPSBsYXN0KSAmJiAoY291bnQgPCByZXAtPm1heCkgJiYgIWNhbl9zdGFydCgqcG9zaXRpb24sIHJlcC0+X21hcCwgbWFza19za2lwKSkKLSAgICAgIHsKLSAgICAgICAgIGlmKG1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih0cmFpdHNfaW5zdC50cmFuc2xhdGUoKnBvc2l0aW9uLCBpY2FzZSkpXSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgICsrcG9zaXRpb247Ci0gICAgICAgICAgICArK2NvdW50OwotICAgICAgICAgfQotICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAgLy8gY291bmxkbid0IHJlcGVhdCBldmVuIHRob3VnaCBpdCB3YXMgdGhlIG9ubHkgb3B0aW9uCi0gICAgICB9Ci0gICAgICBpZigocmVwLT5sZWFkaW5nKSAmJiAocmVwLT5tYXggPT0gVUlOVF9NQVgpKQotICAgICAgICAgcmVzdGFydCA9IHBvc2l0aW9uOwotICAgICAgcHN0YXRlID0gcmVwLT5hbHQucDsKLSAgICAgIHNhdmVfcG9zID0gcG9zaXRpb247Ci0gICAgICArK3N0YXRlX2NvdW50OwotICAgICAgaWYobWF0Y2hfYWxsX3N0YXRlcygpKQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBpZihjb3VudCA+PSByZXAtPm1heCkKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIHBvc2l0aW9uID0gc2F2ZV9wb3M7Ci0gICAgICBpZihwb3NpdGlvbiA9PSBsYXN0KQotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgaWYobWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHRyYWl0c19pbnN0LnRyYW5zbGF0ZSgqcG9zaXRpb24sIGljYXNlKSldKQotICAgICAgewotICAgICAgICAgKytwb3NpdGlvbjsKLSAgICAgICAgICsrY291bnQ7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICB9d2hpbGUodHJ1ZSk7Ci0jaWZkZWYgX19CT1JMQU5EQ19fCi0jcHJhZ21hIG9wdGlvbiBwb3AKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfbG9uZ19zZXRfcmVwZWF0KCkKLXsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMjcpCi0jZW5kaWYKLSNpZmRlZiBfX0JPUkxBTkRDX18KLSNwcmFnbWEgb3B0aW9uIHB1c2ggLXctODAwOCAtdy04MDY2IC13LTgwMDQKLSNlbmRpZgotICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6OmNoYXJfY2xhc3NfdHlwZSBjaGFyX2NsYXNzX3R5cGU7Ci0gICBjb25zdCByZV9yZXBlYXQqIHJlcCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX3JlcGVhdCo+KHBzdGF0ZSk7Ci0gICBjb25zdCByZV9zZXRfbG9uZzxjaGFyX2NsYXNzX3R5cGU+KiBzZXQgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9zZXRfbG9uZzxjaGFyX2NsYXNzX3R5cGU+Kj4ocHN0YXRlLT5uZXh0LnApOwotICAgdW5zaWduZWQgY291bnQgPSAwOwotICAgLy8KLSAgIC8vIHN0YXJ0IGJ5IHdvcmtpbmcgb3V0IGhvdyBtdWNoIHdlIGNhbiBza2lwOgotICAgLy8KLSAgIGJvb2wgZ3JlZWR5ID0gKHJlcC0+Z3JlZWR5KSAmJiAoIShtX21hdGNoX2ZsYWdzICYgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpIHx8IG1faW5kZXBlbmRlbnQpOyAgIAotICAgc3RkOjpzaXplX3QgZGVzaXJlZCA9IGdyZWVkeSA/IHJlcC0+bWF4IDogcmVwLT5taW47Ci0gICBpZig6Om5kbmJvb3N0Ojppc19yYW5kb21fYWNjZXNzX2l0ZXJhdG9yPEJpZGlJdGVyYXRvcj46OnZhbHVlKQotICAgewotICAgICAgQmlkaUl0ZXJhdG9yIGVuZCA9IHBvc2l0aW9uOwotICAgICAgc3RkOjphZHZhbmNlKGVuZCwgKHN0ZDo6bWluKSgoc3RkOjpzaXplX3QpOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZShwb3NpdGlvbiwgbGFzdCksIGRlc2lyZWQpKTsKLSAgICAgIEJpZGlJdGVyYXRvciBvcmlnaW4ocG9zaXRpb24pOwotICAgICAgd2hpbGUoKHBvc2l0aW9uICE9IGVuZCkgJiYgKHBvc2l0aW9uICE9IHJlX2lzX3NldF9tZW1iZXIocG9zaXRpb24sIGxhc3QsIHNldCwgcmUuZ2V0X2RhdGEoKSwgaWNhc2UpKSkKLSAgICAgIHsKLSAgICAgICAgICsrcG9zaXRpb247Ci0gICAgICB9Ci0gICAgICBjb3VudCA9ICh1bnNpZ25lZCk6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKG9yaWdpbiwgcG9zaXRpb24pOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgd2hpbGUoKGNvdW50IDwgZGVzaXJlZCkgJiYgKHBvc2l0aW9uICE9IGxhc3QpICYmIChwb3NpdGlvbiAhPSByZV9pc19zZXRfbWVtYmVyKHBvc2l0aW9uLCBsYXN0LCBzZXQsIHJlLmdldF9kYXRhKCksIGljYXNlKSkpCi0gICAgICB7Ci0gICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgICAgKytjb3VudDsKLSAgICAgIH0KLSAgIH0KLSAgIGlmKChyZXAtPmxlYWRpbmcpICYmIChjb3VudCA8IHJlcC0+bWF4KSAmJiBncmVlZHkpCi0gICAgICByZXN0YXJ0ID0gcG9zaXRpb247Ci0gICBpZihjb3VudCA8IHJlcC0+bWluKQotICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICBpZihncmVlZHkpCi0gICAgICByZXR1cm4gYmFja3RyYWNrX3RpbGxfbWF0Y2goY291bnQgLSByZXAtPm1pbik7Ci0KLSAgIC8vIG5vbi1ncmVlZHksIGtlZXAgdHJ5aW5nIHRpbGwgd2UgZ2V0IGEgbWF0Y2g6Ci0gICBCaWRpSXRlcmF0b3Igc2F2ZV9wb3M7Ci0gICBkbwotICAgewotICAgICAgd2hpbGUoKHBvc2l0aW9uICE9IGxhc3QpICYmIChjb3VudCA8IHJlcC0+bWF4KSAmJiAhY2FuX3N0YXJ0KCpwb3NpdGlvbiwgcmVwLT5fbWFwLCBtYXNrX3NraXApKQotICAgICAgewotICAgICAgICAgaWYocG9zaXRpb24gIT0gcmVfaXNfc2V0X21lbWJlcihwb3NpdGlvbiwgbGFzdCwgc2V0LCByZS5nZXRfZGF0YSgpLCBpY2FzZSkpCi0gICAgICAgICB7Ci0gICAgICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgICAgICAgKytjb3VudDsKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsgIC8vIGNvdW5sZG4ndCByZXBlYXQgZXZlbiB0aG91Z2ggaXQgd2FzIHRoZSBvbmx5IG9wdGlvbgotICAgICAgfQotICAgICAgaWYoKHJlcC0+bGVhZGluZykgJiYgKHJlcC0+bWF4ID09IFVJTlRfTUFYKSkKLSAgICAgICAgIHJlc3RhcnQgPSBwb3NpdGlvbjsKLSAgICAgIHBzdGF0ZSA9IHJlcC0+YWx0LnA7Ci0gICAgICBzYXZlX3BvcyA9IHBvc2l0aW9uOwotICAgICAgKytzdGF0ZV9jb3VudDsKLSAgICAgIGlmKG1hdGNoX2FsbF9zdGF0ZXMoKSkKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgaWYoY291bnQgPj0gcmVwLT5tYXgpCi0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICBwb3NpdGlvbiA9IHNhdmVfcG9zOwotICAgICAgaWYocG9zaXRpb24gPT0gbGFzdCkKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIGlmKHBvc2l0aW9uICE9IHJlX2lzX3NldF9tZW1iZXIocG9zaXRpb24sIGxhc3QsIHNldCwgcmUuZ2V0X2RhdGEoKSwgaWNhc2UpKQotICAgICAgewotICAgICAgICAgKytwb3NpdGlvbjsKLSAgICAgICAgICsrY291bnQ7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICB9d2hpbGUodHJ1ZSk7Ci0jaWZkZWYgX19CT1JMQU5EQ19fCi0jcHJhZ21hIG9wdGlvbiBwb3AKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6YmFja3RyYWNrX3RpbGxfbWF0Y2goc3RkOjpzaXplX3QgY291bnQpCi17Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTI3KQotI2VuZGlmCi0gICBpZigobV9tYXRjaF9mbGFncyAmIG1hdGNoX3BhcnRpYWwpICYmIChwb3NpdGlvbiA9PSBsYXN0KSkKLSAgICAgIG1faGFzX3BhcnRpYWxfbWF0Y2ggPSB0cnVlOwotCi0gICBjb25zdCByZV9yZXBlYXQqIHJlcCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX3JlcGVhdCo+KHBzdGF0ZSk7Ci0gICBCaWRpSXRlcmF0b3IgYmFja3RyYWNrID0gcG9zaXRpb247Ci0gICBpZihwb3NpdGlvbiA9PSBsYXN0KQotICAgewotICAgICAgaWYocmVwLT5jYW5fYmVfbnVsbCAmIG1hc2tfc2tpcCkgCi0gICAgICB7Ci0gICAgICAgICBwc3RhdGUgPSByZXAtPmFsdC5wOwotICAgICAgICAgaWYobWF0Y2hfYWxsX3N0YXRlcygpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICAgICBpZihjb3VudCkKLSAgICAgIHsKLSAgICAgICAgIHBvc2l0aW9uID0gLS1iYWNrdHJhY2s7Ci0gICAgICAgICAtLWNvdW50OwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotICAgZG8KLSAgIHsKLSAgICAgIHdoaWxlKGNvdW50ICYmICFjYW5fc3RhcnQoKnBvc2l0aW9uLCByZXAtPl9tYXAsIG1hc2tfc2tpcCkpCi0gICAgICB7Ci0gICAgICAgICAtLXBvc2l0aW9uOwotICAgICAgICAgLS1jb3VudDsKLSAgICAgICAgICsrc3RhdGVfY291bnQ7Ci0gICAgICB9Ci0gICAgICBwc3RhdGUgPSByZXAtPmFsdC5wOwotICAgICAgYmFja3RyYWNrID0gcG9zaXRpb247Ci0gICAgICBpZihtYXRjaF9hbGxfc3RhdGVzKCkpCi0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIGlmKGNvdW50ID09IDApCi0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICBwb3NpdGlvbiA9IC0tYmFja3RyYWNrOwotICAgICAgKytzdGF0ZV9jb3VudDsKLSAgICAgIC0tY291bnQ7Ci0gICB9d2hpbGUodHJ1ZSk7Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9yZWN1cnNpb24oKQotewotICAgTkROQk9PU1RfQVNTRVJUKHBzdGF0ZS0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9yZWN1cnNlKTsKLSAgIC8vCi0gICAvLyBTZXQgbmV3IGNhbGwgc3RhY2s6Ci0gICAvLwotICAgaWYocmVjdXJzaW9uX3N0YWNrLmNhcGFjaXR5KCkgPT0gMCkKLSAgIHsKLSAgICAgIHJlY3Vyc2lvbl9zdGFjay5yZXNlcnZlKDUwKTsKLSAgIH0KLSAgIHJlY3Vyc2lvbl9zdGFjay5wdXNoX2JhY2socmVjdXJzaW9uX2luZm88cmVzdWx0c190eXBlPigpKTsKLSAgIHJlY3Vyc2lvbl9zdGFjay5iYWNrKCkucHJldHVybl9hZGRyZXNzID0gcHN0YXRlLT5uZXh0LnA7Ci0gICByZWN1cnNpb25fc3RhY2suYmFjaygpLnJlc3VsdHMgPSAqbV9wcmVzdWx0OwotICAgcmVjdXJzaW9uX3N0YWNrLmJhY2soKS5yZXBlYXRlcl9zdGFjayA9IG5leHRfY291bnQ7Ci0gICBwc3RhdGUgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9qdW1wKj4ocHN0YXRlKS0+YWx0LnA7Ci0gICByZWN1cnNpb25fc3RhY2suYmFjaygpLmlkeCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2JyYWNlKj4ocHN0YXRlKS0+aW5kZXg7Ci0KLSAgIHJlcGVhdGVyX2NvdW50PEJpZGlJdGVyYXRvcj4qIHNhdmVkID0gbmV4dF9jb3VudDsKLSAgIHJlcGVhdGVyX2NvdW50PEJpZGlJdGVyYXRvcj4gcigmbmV4dF9jb3VudCk7IC8vIHJlc2V0cyBhbGwgcmVwZWF0IGNvdW50cyBzaW5jZSB3ZSdyZSByZWN1cnNpbmcgYW5kIHN0YXJ0aW5nIGZyZXNoIG9uIHRob3NlCi0gICBuZXh0X2NvdW50ID0gJnI7Ci0gICBib29sIHJlc3VsdCA9IG1hdGNoX2FsbF9zdGF0ZXMoKTsKLSAgIG5leHRfY291bnQgPSBzYXZlZDsKLQotICAgaWYoIXJlc3VsdCkKLSAgIHsKLSAgICAgIG5leHRfY291bnQgPSByZWN1cnNpb25fc3RhY2suYmFjaygpLnJlcGVhdGVyX3N0YWNrOwotICAgICAgKm1fcHJlc3VsdCA9IHJlY3Vyc2lvbl9zdGFjay5iYWNrKCkucmVzdWx0czsKLSAgICAgIHJlY3Vyc2lvbl9zdGFjay5wb3BfYmFjaygpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2VuZG1hcmsoKQotewotICAgaW50IGluZGV4ID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfYnJhY2UqPihwc3RhdGUpLT5pbmRleDsKLSAgIGljYXNlID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfYnJhY2UqPihwc3RhdGUpLT5pY2FzZTsKLSAgIGlmKGluZGV4ID4gMCkKLSAgIHsKLSAgICAgIGlmKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfbm9zdWJzKSA9PSAwKQotICAgICAgewotICAgICAgICAgbV9wcmVzdWx0LT5zZXRfc2Vjb25kKHBvc2l0aW9uLCBpbmRleCk7Ci0gICAgICB9Ci0gICAgICBpZighcmVjdXJzaW9uX3N0YWNrLmVtcHR5KCkpCi0gICAgICB7Ci0gICAgICAgICBpZihpbmRleCA9PSByZWN1cnNpb25fc3RhY2suYmFjaygpLmlkeCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHJlY3Vyc2lvbl9pbmZvPHJlc3VsdHNfdHlwZT4gc2F2ZWQgPSByZWN1cnNpb25fc3RhY2suYmFjaygpOwotICAgICAgICAgICAgcmVjdXJzaW9uX3N0YWNrLnBvcF9iYWNrKCk7Ci0gICAgICAgICAgICBwc3RhdGUgPSBzYXZlZC5wcmV0dXJuX2FkZHJlc3M7Ci0gICAgICAgICAgICByZXBlYXRlcl9jb3VudDxCaWRpSXRlcmF0b3I+KiBzYXZlZF9jb3VudCA9IG5leHRfY291bnQ7Ci0gICAgICAgICAgICBuZXh0X2NvdW50ID0gc2F2ZWQucmVwZWF0ZXJfc3RhY2s7Ci0gICAgICAgICAgICAqbV9wcmVzdWx0ID0gc2F2ZWQucmVzdWx0czsKLSAgICAgICAgICAgIGlmKCFtYXRjaF9hbGxfc3RhdGVzKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICByZWN1cnNpb25fc3RhY2sucHVzaF9iYWNrKHNhdmVkKTsKLSAgICAgICAgICAgICAgIG5leHRfY291bnQgPSBzYXZlZF9jb3VudDsKLSAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAgICAgIH0KLSAgIH0KLSAgIGVsc2UgaWYoKGluZGV4IDwgMCkgJiYgKGluZGV4ICE9IC00KSkKLSAgIHsKLSAgICAgIC8vIG1hdGNoZWQgZm9yd2FyZCBsb29rYWhlYWQ6Ci0gICAgICBwc3RhdGUgPSAwOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICBwc3RhdGUgPSBwc3RhdGUgPyBwc3RhdGUtPm5leHQucCA6IDA7Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfbWF0Y2goKQotewotICAgaWYoIXJlY3Vyc2lvbl9zdGFjay5lbXB0eSgpKQotICAgewotICAgICAgTkROQk9PU1RfQVNTRVJUKDAgPT0gcmVjdXJzaW9uX3N0YWNrLmJhY2soKS5pZHgpOwotICAgICAgY29uc3QgcmVfc3ludGF4X2Jhc2UqIHNhdmVkX3N0YXRlID0gcHN0YXRlID0gcmVjdXJzaW9uX3N0YWNrLmJhY2soKS5wcmV0dXJuX2FkZHJlc3M7Ci0gICAgICAqbV9wcmVzdWx0ID0gcmVjdXJzaW9uX3N0YWNrLmJhY2soKS5yZXN1bHRzOwotICAgICAgcmVjdXJzaW9uX3N0YWNrLnBvcF9iYWNrKCk7Ci0gICAgICBpZighbWF0Y2hfYWxsX3N0YXRlcygpKQotICAgICAgewotICAgICAgICAgcmVjdXJzaW9uX3N0YWNrLnB1c2hfYmFjayhyZWN1cnNpb25faW5mbzxyZXN1bHRzX3R5cGU+KCkpOwotICAgICAgICAgcmVjdXJzaW9uX3N0YWNrLmJhY2soKS5wcmV0dXJuX2FkZHJlc3MgPSBzYXZlZF9zdGF0ZTsKLSAgICAgICAgIHJlY3Vyc2lvbl9zdGFjay5iYWNrKCkucmVzdWx0cyA9ICptX3ByZXN1bHQ7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIGlmKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfbm90X251bGwpICYmIChwb3NpdGlvbiA9PSAoKm1fcHJlc3VsdClbMF0uZmlyc3QpKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgaWYoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9hbGwpICYmIChwb3NpdGlvbiAhPSBsYXN0KSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIGlmKChtX21hdGNoX2ZsYWdzICYgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9ub3RfaW5pdGlhbF9udWxsKSAmJiAocG9zaXRpb24gPT0gc2VhcmNoX2Jhc2UpKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgbV9wcmVzdWx0LT5zZXRfc2Vjb25kKHBvc2l0aW9uKTsKLSAgIHBzdGF0ZSA9IDA7Ci0gICBtX2hhc19mb3VuZF9tYXRjaCA9IHRydWU7Ci0gICBpZigobV9tYXRjaF9mbGFncyAmIG1hdGNoX3Bvc2l4KSA9PSBtYXRjaF9wb3NpeCkKLSAgIHsKLSAgICAgIG1fcmVzdWx0Lm1heWJlX2Fzc2lnbigqbV9wcmVzdWx0KTsKLSAgICAgIGlmKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfYW55KSA9PSAwKQotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX01BVENIX0VYVFJBCi0gICBpZihtYXRjaF9leHRyYSAmIG1fbWF0Y2hfZmxhZ3MpCi0gICB7Ci0gICAgICBmb3IodW5zaWduZWQgaSA9IDA7IGkgPCBtX3ByZXN1bHQtPnNpemUoKTsgKytpKQotICAgICAgICAgaWYoKCptX3ByZXN1bHQpW2ldLm1hdGNoZWQpCi0gICAgICAgICAgICAoKCptX3ByZXN1bHQpW2ldKS5nZXRfY2FwdHVyZXMoKS5wdXNoX2JhY2soKCptX3ByZXN1bHQpW2ldKTsKLSAgIH0KLSNlbmRpZgotICAgcmV0dXJuIHRydWU7Ci19Ci0KLQotCi19IC8vIG5hbWVzcGFjZSByZV9kZXRhaWwKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3ByaW1hcnlfdHJhbnNmb3JtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcHJpbWFyeV90cmFuc2Zvcm0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzliYzY4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcHJpbWFyeV90cmFuc2Zvcm0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ2ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0gCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFOiAgICAgICAgcHJpbWFyeV90cmFuc2Zvcm0uaHBwCi0gICogICBWRVJTSU9OOiAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBIZXVyaXN0aWNhbGx5IGRldGVybWluZXMgdGhlIHNvcnQgc3RyaW5nIGZvcm1hdCBpbiB1c2UKLSAgKiAgICAgICAgICAgICAgICBieSB0aGUgY3VycmVudCBsb2NhbGUuCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfUFJJTUFSWV9UUkFOU0ZPUk0KLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfUFJJTUFSWV9UUkFOU0ZPUk0KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0gICBuYW1lc3BhY2UgcmVfZGV0YWlsewotCi0KLWVudW17Ci0gICBzb3J0X0MsCi0gICBzb3J0X2ZpeGVkLAotICAgc29ydF9kZWxpbSwKLSAgIHNvcnRfdW5rbm93bgotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFMsIGNsYXNzIGNoYXJUPgotdW5zaWduZWQgY291bnRfY2hhcnMoY29uc3QgUyYgcywgY2hhclQgYykKLXsKLSAgIC8vCi0gICAvLyBDb3VudCBob3cgbWFueSBvY2N1cmFuY2VzIG9mIGNoYXJhY3RlciBjIG9jY3VyCi0gICAvLyBpbiBzdHJpbmcgczogaWYgYyBpcyBhIGRlbGltZXRlciBiZXR3ZWVuIGNvbGxhdGlvbgotICAgLy8gZmllbGRzLCB0aGVuIHRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIHZhbHVlIGZvciBhbGwKLSAgIC8vIHNvcnQga2V5czoKLSAgIC8vCi0gICB1bnNpZ25lZCBpbnQgY291bnQgPSAwOwotICAgZm9yKHVuc2lnbmVkIHBvcyA9IDA7IHBvcyA8IHMuc2l6ZSgpOyArK3BvcykKLSAgIHsKLSAgICAgIGlmKHNbcG9zXSA9PSBjKSArK2NvdW50OwotICAgfQotICAgcmV0dXJuIGNvdW50OwotfQotCi0KLXRlbXBsYXRlIDxjbGFzcyB0cmFpdHMsIGNsYXNzIGNoYXJUPgotdW5zaWduZWQgZmluZF9zb3J0X3N5bnRheChjb25zdCB0cmFpdHMqIHB0LCBjaGFyVCogZGVsaW0pCi17Ci0gICAvLwotICAgLy8gY29tcGFyZSAnYScgd2l0aCAnQScgdG8gc2VlIGhvdyBzaW1pbGFyIHRoZXkgYXJlLAotICAgLy8gc2hvdWxkIHJlYWxseSB1c2UgYS1hY2N1dGUgYnV0IHdlIGNhbid0IHBvcnRhYmx5IGRvIHRoYXQsCi0gICAvLwotICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6OnN0cmluZ190eXBlIHN0cmluZ190eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6OmNoYXJfdHlwZSBjaGFyX3R5cGU7Ci0KLSAgIC8vIFN1cHByZXNzIGluY29ycmVjdCB3YXJuaW5nIGZvciBNU1ZDCi0gICAodm9pZClwdDsKLQotICAgY2hhcl90eXBlIGFbMl0gPSB7J2EnLCAnXDAnLCB9OwotICAgc3RyaW5nX3R5cGUgc2EocHQtPnRyYW5zZm9ybShhLCBhKzEpKTsKLSAgIGlmKHNhID09IGEpCi0gICB7Ci0gICAgICAqZGVsaW0gPSAwOwotICAgICAgcmV0dXJuIHNvcnRfQzsKLSAgIH0KLSAgIGNoYXJfdHlwZSBBWzJdID0geyAnQScsICdcMCcsIH07Ci0gICBzdHJpbmdfdHlwZSBzQShwdC0+dHJhbnNmb3JtKEEsIEErMSkpOwotICAgY2hhcl90eXBlIGNbMl0gPSB7ICc7JywgJ1wwJywgfTsKLSAgIHN0cmluZ190eXBlIHNjKHB0LT50cmFuc2Zvcm0oYywgYysxKSk7Ci0KLSAgIGludCBwb3MgPSAwOwotICAgd2hpbGUoKHBvcyA8PSBzdGF0aWNfY2FzdDxpbnQ+KHNhLnNpemUoKSkpICYmIChwb3MgPD0gc3RhdGljX2Nhc3Q8aW50PihzQS5zaXplKCkpKSAmJiAoc2FbcG9zXSA9PSBzQVtwb3NdKSkgKytwb3M7Ci0gICAtLXBvczsKLSAgIGlmKHBvcyA8IDApCi0gICB7Ci0gICAgICAqZGVsaW0gPSAwOwotICAgICAgcmV0dXJuIHNvcnRfdW5rbm93bjsKLSAgIH0KLSAgIC8vCi0gICAvLyBhdCB0aGlzIHBvaW50IHNhW3Bvc10gaXMgZWl0aGVyIHRoZSBlbmQgb2YgYSBmaXhlZCB3aWR0aCBmaWVsZAotICAgLy8gb3IgdGhlIGNoYXJhY3RlciB0aGF0IGFjdHMgYXMgYSBkZWxpbWl0ZXI6Ci0gICAvLwotICAgY2hhclQgbWF5YmVfZGVsaW0gPSBzYVtwb3NdOwotICAgaWYoKHBvcyAhPSAwKSAmJiAoY291bnRfY2hhcnMoc2EsIG1heWJlX2RlbGltKSA9PSBjb3VudF9jaGFycyhzQSwgbWF5YmVfZGVsaW0pKSAmJiAoY291bnRfY2hhcnMoc2EsIG1heWJlX2RlbGltKSA9PSBjb3VudF9jaGFycyhzYywgbWF5YmVfZGVsaW0pKSkKLSAgIHsKLSAgICAgICpkZWxpbSA9IG1heWJlX2RlbGltOwotICAgICAgcmV0dXJuIHNvcnRfZGVsaW07Ci0gICB9Ci0gICAvLwotICAgLy8gT0sgZG9lbid0IGxvb2sgbGlrZSBhIGRlbGltaXRlciwgdHJ5IGZvciBmaXhlZCB3aWR0aCBmaWVsZDoKLSAgIC8vCi0gICBpZigoc2Euc2l6ZSgpID09IHNBLnNpemUoKSkgJiYgKHNhLnNpemUoKSA9PSBzYy5zaXplKCkpKQotICAgewotICAgICAgLy8gbm90ZSBhc3N1bWVzIHRoYXQgdGhlIGZpeGVkIHdpZHRoIGZpZWxkIGlzIGxlc3MgdGhhbgotICAgICAgLy8gKG51bWVyaWNfbGltaXRzPGNoYXJUPjo6bWF4KSgpLCBzaG91bGQgYmUgdHJ1ZSBmb3IgYWxsIHR5cGVzCi0gICAgICAvLyBJIGNhbid0IGltYWdpbmUgMTI3IGNoYXJhY3RlciBmaWVsZHMuLi4KLSAgICAgICpkZWxpbSA9IHN0YXRpY19jYXN0PGNoYXJUPigrK3Bvcyk7Ci0gICAgICByZXR1cm4gc29ydF9maXhlZDsKLSAgIH0KLSAgIC8vCi0gICAvLyBkb24ndCBrbm93IHdoYXQgaXQgaXM6Ci0gICAvLwotICAgKmRlbGltID0gMDsKLSAgIHJldHVybiBzb3J0X3Vua25vd247Ci19Ci0KLQotICAgfSAvLyBuYW1lc3BhY2UgcmVfZGV0YWlsCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNlbmRpZgotCi0KLQotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3Byb3RlY3RlZF9jYWxsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcHJvdGVjdGVkX2NhbGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODYxNWRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcHJvdGVjdGVkX2NhbGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICBiYXNpY19yZWdleF9jcmVhdG9yLmNwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogRGVjbGFyZXMgdGVtcGxhdGUgY2xhc3MgYmFzaWNfcmVnZXhfY3JlYXRvciB3aGljaCBmaWxscyBpbgotICAqICAgICAgICAgICAgICAgIHRoZSBkYXRhIG1lbWJlcnMgb2YgYSByZWdleF9kYXRhIG9iamVjdC4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9QUk9URUNURURfQ0FMTF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfVjRfUFJPVEVDVEVEX0NBTExfSFBQCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotbmFtZXNwYWNlIHJlX2RldGFpbHsKLQotY2xhc3MgTkROQk9PU1RfUkVHRVhfREVDTCBhYnN0cmFjdF9wcm90ZWN0ZWRfY2FsbAotewotcHVibGljOgotICAgYm9vbCBORE5CT09TVF9SRUdFWF9DQUxMIGV4ZWN1dGUoKWNvbnN0OwotICAgLy8gdGhpcyBzdG9wcyBnY2MtNCBmcm9tIGNvbXBsYWluaW5nOgotICAgdmlydHVhbCB+YWJzdHJhY3RfcHJvdGVjdGVkX2NhbGwoKXt9Ci1wcml2YXRlOgotICAgdmlydHVhbCBib29sIGNhbGwoKWNvbnN0ID0gMDsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotY2xhc3MgY29uY3JldGVfcHJvdGVjdGVkX2NhbGwKLSAgIDogcHVibGljIGFic3RyYWN0X3Byb3RlY3RlZF9jYWxsCi17Ci1wdWJsaWM6Ci0gICB0eXBlZGVmIGJvb2wgKFQ6Oipwcm9jX3R5cGUpKCk7Ci0gICBjb25jcmV0ZV9wcm90ZWN0ZWRfY2FsbChUKiBvLCBwcm9jX3R5cGUgcCkKLSAgICAgIDogb2JqKG8pLCBwcm9jKHApIHt9Ci1wcml2YXRlOgotICAgdmlydHVhbCBib29sIGNhbGwoKWNvbnN0OwotICAgVCogb2JqOwotICAgcHJvY190eXBlIHByb2M7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLWJvb2wgY29uY3JldGVfcHJvdGVjdGVkX2NhbGw8VD46OmNhbGwoKWNvbnN0Ci17Ci0gICByZXR1cm4gKG9iai0+KnByb2MpKCk7Ci19Ci0KLX0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2Jhc2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdiYXNlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2M1MjQ2OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2Jhc2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTgwICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICByZWdiYXNlLmNwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogRGVjbGFyZXMgY2xhc3MgcmVnYmFzZS4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9SRUdCQVNFX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9WNF9SRUdCQVNFX0hQUAotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLS8vCi0vLyBjbGFzcyByZWdiYXNlCi0vLyBoYW5kbGVzIGVycm9yIGNvZGVzIGFuZCBmbGFncwotLy8KLWNsYXNzIE5ETkJPT1NUX1JFR0VYX0RFQ0wgcmVnYmFzZQotewotcHVibGljOgotICAgZW51bSBmbGFnX3R5cGVfCi0gICB7Ci0gICAgICAvLwotICAgICAgLy8gRGl2aWRlIHRoZSBmbGFncyB1cCBpbnRvIGxvZ2ljYWwgZ3JvdXBzOgotICAgICAgLy8gYml0cyAwLTcgaW5kaWNhdGUgbWFpbiBzeW5hdHggdHlwZS4KLSAgICAgIC8vIGJpdHMgOC0xNSBpbmRpY2F0ZSBzeW50YXggc3VidHlwZS4KLSAgICAgIC8vIGJpdHMgMTYtMzEgaW5kaWNhdGUgb3B0aW9ucyB0aGF0IGFyZSBjb21tb24gdG8gYWxsCi0gICAgICAvLyByZWdleCBzeW50YXhlcy4KLSAgICAgIC8vIEluIGFsbCBjYXNlcyB0aGUgZGVmYXVsdCBpcyAwLgotICAgICAgLy8KLSAgICAgIC8vIE1haW4gc3luYXR4IGdyb3VwOgotICAgICAgLy8KLSAgICAgIHBlcmxfc3ludGF4X2dyb3VwID0gMCwgICAgICAgICAgICAgICAgICAgICAgLy8gZGVmYXVsdAotICAgICAgYmFzaWNfc3ludGF4X2dyb3VwID0gMSwgICAgICAgICAgICAgICAgICAgICAvLyBQT1NJWCBiYXNpYwotICAgICAgbGl0ZXJhbCA9IDIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbGwgY2hhcmFjdGVycyBhcmUgbGl0ZXJhbHMKLSAgICAgIG1haW5fb3B0aW9uX3R5cGUgPSBsaXRlcmFsIHwgYmFzaWNfc3ludGF4X2dyb3VwIHwgcGVybF9zeW50YXhfZ3JvdXAsIC8vIGV2ZXJ5dGhpbmchCi0gICAgICAvLwotICAgICAgLy8gb3B0aW9ucyBzcGVjaWZpYyB0byBwZXJsIGdyb3VwOgotICAgICAgLy8KLSAgICAgIG5vX2JrX3JlZnMgPSAxIDw8IDgsICAgICAgICAgICAgICAgICAgICAgICAgLy8gXGQgbm90IGFsbG93ZWQKLSAgICAgIG5vX3BlcmxfZXggPSAxIDw8IDksICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGlzYWJsZSBwZXJsIGV4dGVuc2lvbnMKLSAgICAgIG5vX21vZF9tID0gMSA8PCAxMCwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGlzYWJsZSBQZXJsIG0gbW9kaWZpZXIKLSAgICAgIG1vZF94ID0gMSA8PCAxMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUGVybCB4IG1vZGlmaWVyCi0gICAgICBtb2RfcyA9IDEgPDwgMTIsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvcmNlIHMgbW9kaWZpZXIgb24gKG92ZXJyaWRlcyBtYXRjaF9ub3RfZG90X25ld2xpbmUpCi0gICAgICBub19tb2RfcyA9IDEgPDwgMTMsICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvcmNlIHMgbW9kaWZpZXIgb2ZmIChvdmVycmlkZXMgbWF0Y2hfbm90X2RvdF9uZXdsaW5lKQotCi0gICAgICAvLwotICAgICAgLy8gb3B0aW9ucyBzcGVjaWZpYyB0byBiYXNpYyBncm91cDoKLSAgICAgIC8vCi0gICAgICBub19jaGFyX2NsYXNzZXMgPSAxIDw8IDgsICAgICAgICAgICAgICAgICAgIC8vIFtbOkNMQVNTOl1dIG5vdCBhbGxvd2VkCi0gICAgICBub19pbnRlcnZhbHMgPSAxIDw8IDksICAgICAgICAgICAgICAgICAgICAgIC8vIHt4LHl9IG5vdCBhbGxvd2VkCi0gICAgICBia19wbHVzX3FtID0gMSA8PCAxMCwgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZXMgXCsgYW5kIFw/Ci0gICAgICBia192YmFyID0gMSA8PCAxMSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZSBcfCBmb3IgYWx0ZXJuYXRpdmVzCi0gICAgICBlbWFjc19leCA9IDEgPDwgMTIsICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZXMgZW1hY3MgZXh0ZW5zaW9ucwotCi0gICAgICAvLwotICAgICAgLy8gb3B0aW9ucyBjb21tb24gdG8gYWxsIGdyb3VwczoKLSAgICAgIC8vCi0gICAgICBub19lc2NhcGVfaW5fbGlzdHMgPSAxIDw8IDE2LCAgICAgICAgICAgICAgICAgICAgIC8vICdcJyBub3Qgc3BlY2lhbCBpbnNpZGUgWy4uLl0KLSAgICAgIG5ld2xpbmVfYWx0ID0gMSA8PCAxNywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gXG4gaXMgdGhlIHNhbWUgYXMgfAotICAgICAgbm9fZXhjZXB0ID0gMSA8PCAxOCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBubyBleGNlcHRpb24gb24gZXJyb3IKLSAgICAgIGZhaWxiaXQgPSAxIDw8IDE5LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXJyb3IgZmxhZwotICAgICAgaWNhc2UgPSAxIDw8IDIwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGFyYWN0ZXJzIGFyZSBtYXRjaGVkIHJlZ2FyZGxlc3Mgb2YgY2FzZQotICAgICAgbm9jb2xsYXRlID0gMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb24ndCB1c2UgbG9jYWxlIHNwZWNpZmljIGNvbGxhdGlvbiAoZGVwcmVjYXRlZCkKLSAgICAgIGNvbGxhdGUgPSAxIDw8IDIxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlIGxvY2FsZSBzcGVjaWZpYyBjb2xsYXRpb24KLSAgICAgIG5vc3VicyA9IDEgPDwgMjIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG9uJ3QgbWFyayBzdWItZXhwcmVzc2lvbnMKLSAgICAgIHNhdmVfc3ViZXhwcmVzc2lvbl9sb2NhdGlvbiA9IDEgPDwgMjMsICAgICAgICAgICAgLy8gc2F2ZSBzdWJleHByZXNzaW9uIGxvY2F0aW9ucwotICAgICAgbm9fZW1wdHlfZXhwcmVzc2lvbnMgPSAxIDw8IDI0LCAgICAgICAgICAgICAgICAgICAvLyBubyBlbXB0eSBleHByZXNzaW9ucyBhbGxvd2VkCi0gICAgICBvcHRpbWl6ZSA9IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vdCByZWFsbHkgc3VwcG9ydGVkCi0gICAgICAKLQotCi0gICAgICBiYXNpYyA9IGJhc2ljX3N5bnRheF9ncm91cCB8IGNvbGxhdGUgfCBub19lc2NhcGVfaW5fbGlzdHMsCi0gICAgICBleHRlbmRlZCA9IG5vX2JrX3JlZnMgfCBjb2xsYXRlIHwgbm9fcGVybF9leCB8IG5vX2VzY2FwZV9pbl9saXN0cywKLSAgICAgIG5vcm1hbCA9IDAsCi0gICAgICBlbWFjcyA9IGJhc2ljX3N5bnRheF9ncm91cCB8IGNvbGxhdGUgfCBlbWFjc19leCB8IGJrX3ZiYXIsCi0gICAgICBhd2sgPSBub19ia19yZWZzIHwgY29sbGF0ZSB8IG5vX3BlcmxfZXgsCi0gICAgICBncmVwID0gYmFzaWMgfCBuZXdsaW5lX2FsdCwKLSAgICAgIGVncmVwID0gZXh0ZW5kZWQgfCBuZXdsaW5lX2FsdCwKLSAgICAgIHNlZCA9IGJhc2ljLAotICAgICAgcGVybCA9IG5vcm1hbCwKLSAgICAgIEVDTUFTY3JpcHQgPSBub3JtYWwsCi0gICAgICBKYXZhU2NyaXB0ID0gbm9ybWFsLAotICAgICAgSlNjcmlwdCA9IG5vcm1hbAotICAgfTsKLSAgIHR5cGVkZWYgdW5zaWduZWQgaW50IGZsYWdfdHlwZTsKLQotICAgZW51bSByZXN0YXJ0X2luZm8KLSAgIHsKLSAgICAgIHJlc3RhcnRfYW55ID0gMCwKLSAgICAgIHJlc3RhcnRfd29yZCA9IDEsCi0gICAgICByZXN0YXJ0X2xpbmUgPSAyLAotICAgICAgcmVzdGFydF9idWYgPSAzLAotICAgICAgcmVzdGFydF9jb250aW51ZSA9IDQsCi0gICAgICByZXN0YXJ0X2xpdCA9IDUsCi0gICAgICByZXN0YXJ0X2ZpeGVkX2xpdCA9IDYsIAotICAgICAgcmVzdGFydF9jb3VudCA9IDcKLSAgIH07Ci19OwotCi0vLwotLy8gcHJvdmlkZSBzdGQgbGliIHByb3Bvc2FsIGNvbXBhdGlibGUgY29uc3RhbnRzOgotLy8KLW5hbWVzcGFjZSByZWdleF9jb25zdGFudHN7Ci0KLSAgIGVudW0gZmxhZ190eXBlXwotICAgewotCi0gICAgICBub19leGNlcHQgPSA6Om5kbmJvb3N0OjpyZWdiYXNlOjpub19leGNlcHQsCi0gICAgICBmYWlsYml0ID0gOjpuZG5ib29zdDo6cmVnYmFzZTo6ZmFpbGJpdCwKLSAgICAgIGxpdGVyYWwgPSA6Om5kbmJvb3N0OjpyZWdiYXNlOjpsaXRlcmFsLAotICAgICAgaWNhc2UgPSA6Om5kbmJvb3N0OjpyZWdiYXNlOjppY2FzZSwKLSAgICAgIG5vY29sbGF0ZSA9IDo6bmRuYm9vc3Q6OnJlZ2Jhc2U6Om5vY29sbGF0ZSwKLSAgICAgIGNvbGxhdGUgPSA6Om5kbmJvb3N0OjpyZWdiYXNlOjpjb2xsYXRlLAotICAgICAgbm9zdWJzID0gOjpuZG5ib29zdDo6cmVnYmFzZTo6bm9zdWJzLAotICAgICAgb3B0aW1pemUgPSA6Om5kbmJvb3N0OjpyZWdiYXNlOjpvcHRpbWl6ZSwKLSAgICAgIGJrX3BsdXNfcW0gPSA6Om5kbmJvb3N0OjpyZWdiYXNlOjpia19wbHVzX3FtLAotICAgICAgYmtfdmJhciA9IDo6bmRuYm9vc3Q6OnJlZ2Jhc2U6OmJrX3ZiYXIsCi0gICAgICBub19pbnRlcnZhbHMgPSA6Om5kbmJvb3N0OjpyZWdiYXNlOjpub19pbnRlcnZhbHMsCi0gICAgICBub19jaGFyX2NsYXNzZXMgPSA6Om5kbmJvb3N0OjpyZWdiYXNlOjpub19jaGFyX2NsYXNzZXMsCi0gICAgICBub19lc2NhcGVfaW5fbGlzdHMgPSA6Om5kbmJvb3N0OjpyZWdiYXNlOjpub19lc2NhcGVfaW5fbGlzdHMsCi0gICAgICBub19tb2RfbSA9IDo6bmRuYm9vc3Q6OnJlZ2Jhc2U6Om5vX21vZF9tLAotICAgICAgbW9kX3ggPSA6Om5kbmJvb3N0OjpyZWdiYXNlOjptb2RfeCwKLSAgICAgIG1vZF9zID0gOjpuZG5ib29zdDo6cmVnYmFzZTo6bW9kX3MsCi0gICAgICBub19tb2RfcyA9IDo6bmRuYm9vc3Q6OnJlZ2Jhc2U6Om5vX21vZF9zLAotICAgICAgc2F2ZV9zdWJleHByZXNzaW9uX2xvY2F0aW9uID0gOjpuZG5ib29zdDo6cmVnYmFzZTo6c2F2ZV9zdWJleHByZXNzaW9uX2xvY2F0aW9uLAotICAgICAgbm9fZW1wdHlfZXhwcmVzc2lvbnMgPSA6Om5kbmJvb3N0OjpyZWdiYXNlOjpub19lbXB0eV9leHByZXNzaW9ucywKLQotICAgICAgYmFzaWMgPSA6Om5kbmJvb3N0OjpyZWdiYXNlOjpiYXNpYywKLSAgICAgIGV4dGVuZGVkID0gOjpuZG5ib29zdDo6cmVnYmFzZTo6ZXh0ZW5kZWQsCi0gICAgICBub3JtYWwgPSA6Om5kbmJvb3N0OjpyZWdiYXNlOjpub3JtYWwsCi0gICAgICBlbWFjcyA9IDo6bmRuYm9vc3Q6OnJlZ2Jhc2U6OmVtYWNzLAotICAgICAgYXdrID0gOjpuZG5ib29zdDo6cmVnYmFzZTo6YXdrLAotICAgICAgZ3JlcCA9IDo6bmRuYm9vc3Q6OnJlZ2Jhc2U6OmdyZXAsCi0gICAgICBlZ3JlcCA9IDo6bmRuYm9vc3Q6OnJlZ2Jhc2U6OmVncmVwLAotICAgICAgc2VkID0gYmFzaWMsCi0gICAgICBwZXJsID0gbm9ybWFsLAotICAgICAgRUNNQVNjcmlwdCA9IG5vcm1hbCwKLSAgICAgIEphdmFTY3JpcHQgPSBub3JtYWwsCi0gICAgICBKU2NyaXB0ID0gbm9ybWFsCi0gICB9OwotICAgdHlwZWRlZiA6Om5kbmJvb3N0OjpyZWdiYXNlOjpmbGFnX3R5cGUgc3ludGF4X29wdGlvbl90eXBlOwotCi19IC8vIG5hbWVzcGFjZSByZWdleF9jb25zdGFudHMKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTZkMzExMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwMiArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgcmVnZXguY3BwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBEZWNsYXJlcyBuZG5ib29zdDo6YmFzaWNfcmVnZXg8PiBhbmQgYXNzb2NpYXRlZAotICAqICAgICAgICAgICAgICAgIGZ1bmN0aW9ucyBhbmQgY2xhc3Nlcy4gVGhpcyBoZWFkZXIgaXMgdGhlIG1haW4KLSAgKiAgICAgICAgICAgICAgICBlbnRyeSBwb2ludCBmb3IgdGhlIHRlbXBsYXRlIHJlZ2V4IGNvZGUuCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVfUkVHRVhfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1JFX1JFR0VYX0hQUF9JTkNMVURFRAotCi0jaWZkZWYgX19jcGx1c3BsdXMKLQotLy8gd2hhdCBmb2xsb3dzIGlzIGFsbCBDKysgZG9uJ3QgaW5jbHVkZSBpbiBDIGJ1aWxkcyEhCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfQ09ORklHX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L2NvbmZpZy5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfV09SS0FST1VORF9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9yZWdleF93b3JrYXJvdW5kLmhwcD4KLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0ZXRF9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleF9md2QuaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC9yZWdleF90cmFpdHMuaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1JBV19CVUZGRVJfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvZXJyb3JfdHlwZS5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfTUFUQ0hfRkxBR1MKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9tYXRjaF9mbGFncy5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfUkFXX0JVRkZFUl9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9yZWdleF9yYXdfYnVmZmVyLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRV9QQVRfRVhDRVBUX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3BhdHRlcm5fZXhjZXB0LmhwcD4KLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X0NIQVJfUkVHRVhfVFJBSVRTX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L2NoYXJfcmVnZXhfdHJhaXRzLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9TVEFURVNfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvc3RhdGVzLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9SRUdCQVNFX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2Jhc2UuaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X0lURVJBVE9SX1RSQUlUU19IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9pdGVyYXRvcl90cmFpdHMuaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X0JBU0lDX1JFR0VYX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L2Jhc2ljX3JlZ2V4LmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9CQVNJQ19SRUdFWF9DUkVBVE9SX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L2Jhc2ljX3JlZ2V4X2NyZWF0b3IuaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X0JBU0lDX1JFR0VYX1BBUlNFUl9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9iYXNpY19yZWdleF9wYXJzZXIuaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X1NVQl9NQVRDSF9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9zdWJfbWF0Y2guaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0ZPUk1BVF9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9yZWdleF9mb3JtYXQuaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X01BVENIX1JFU1VMVFNfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvbWF0Y2hfcmVzdWx0cy5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfUFJPVEVDVEVEX0NBTExfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvcHJvdGVjdGVkX2NhbGwuaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX01BVENIRVJfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvcGVybF9tYXRjaGVyLmhwcD4KLSNlbmRpZgotLy8KLS8vIHRlbXBsYXRlIGluc3RhbmNlczoKLS8vCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0NIQVJfVCBjaGFyCi0jaWZkZWYgTkROQk9PU1RfUkVHRVhfTkFSUk9XX0lOU1RBTlRJQVRFCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfSU5TVEFOVElBVEUKLSNlbmRpZgotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L2luc3RhbmNlcy5ocHA+Ci0jdW5kZWYgTkROQk9PU1RfUkVHRVhfQ0hBUl9UCi0jaWZkZWYgTkROQk9PU1RfUkVHRVhfSU5TVEFOVElBVEUKLSMgIHVuZGVmIE5ETkJPT1NUX1JFR0VYX0lOU1RBTlRJQVRFCi0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9OT19XUkVHRVgKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfQ0hBUl9UIHdjaGFyX3QKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9XSURFX0lOU1RBTlRJQVRFCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfSU5TVEFOVElBVEUKLSNlbmRpZgotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L2luc3RhbmNlcy5ocHA+Ci0jdW5kZWYgTkROQk9PU1RfUkVHRVhfQ0hBUl9UCi0jaWZkZWYgTkROQk9PU1RfUkVHRVhfSU5TVEFOVElBVEUKLSMgIHVuZGVmIE5ETkJPT1NUX1JFR0VYX0lOU1RBTlRJQVRFCi0jZW5kaWYKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fV1JFR0VYKSAmJiBkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX0hBU19PVEhFUl9XQ0hBUl9UKQotI2RlZmluZSBORE5CT09TVF9SRUdFWF9DSEFSX1QgdW5zaWduZWQgc2hvcnQKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9VU19JTlNUQU5USUFURQotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0lOU1RBTlRJQVRFCi0jZW5kaWYKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9pbnN0YW5jZXMuaHBwPgotI3VuZGVmIE5ETkJPT1NUX1JFR0VYX0NIQVJfVAotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX0lOU1RBTlRJQVRFCi0jICB1bmRlZiBORE5CT09TVF9SRUdFWF9JTlNUQU5USUFURQotI2VuZGlmCi0jZW5kaWYKLQotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0jaWZkZWYgTkROQk9PU1RfUkVHRVhfTk9fRldECi10eXBlZGVmIGJhc2ljX3JlZ2V4PGNoYXIsIHJlZ2V4X3RyYWl0czxjaGFyPiA+IHJlZ2V4OwotI2lmbmRlZiBORE5CT09TVF9OT19XUkVHRVgKLXR5cGVkZWYgYmFzaWNfcmVnZXg8d2NoYXJfdCwgcmVnZXhfdHJhaXRzPHdjaGFyX3Q+ID4gd3JlZ2V4OwotI2VuZGlmCi0jZW5kaWYKLQotdHlwZWRlZiBtYXRjaF9yZXN1bHRzPGNvbnN0IGNoYXIqPiBjbWF0Y2g7Ci10eXBlZGVmIG1hdGNoX3Jlc3VsdHM8c3RkOjpzdHJpbmc6OmNvbnN0X2l0ZXJhdG9yPiBzbWF0Y2g7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotdHlwZWRlZiBtYXRjaF9yZXN1bHRzPGNvbnN0IHdjaGFyX3QqPiB3Y21hdGNoOwotdHlwZWRlZiBtYXRjaF9yZXN1bHRzPHN0ZDo6d3N0cmluZzo6Y29uc3RfaXRlcmF0b3I+IHdzbWF0Y2g7Ci0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfTUFUQ0hfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfbWF0Y2guaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X1JFR0VYX1NFQVJDSF9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9yZWdleF9zZWFyY2guaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0lURVJBVE9SX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X2l0ZXJhdG9yLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9UT0tFTl9JVEVSQVRPUl9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9yZWdleF90b2tlbl9pdGVyYXRvci5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfUkVHRVhfR1JFUF9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9yZWdleF9ncmVwLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9SRUdFWF9SRVBMQUNFX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3JlcGxhY2UuaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X1JFR0VYX01FUkdFX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X21lcmdlLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9TUExJVF9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9yZWdleF9zcGxpdC5ocHA+Ci0jZW5kaWYKLQotI2VuZGlmICAvLyBfX2NwbHVzcGx1cwotCi0jZW5kaWYgIC8vIGluY2x1ZGUKLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF9mb3JtYXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF9mb3JtYXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTM5N2EyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfZm9ybWF0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNTYgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwOSBKb2huIE1hZGRvY2sKLSAqIENvcHlyaWdodCAyMDA4IEVyaWMgTmllYmxlci4gCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIHJlZ2V4X2Zvcm1hdC5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IFByb3ZpZGVzIGZvcm1hdHRpbmcgb3V0cHV0IHJvdXRpbmVzIGZvciBzZWFyY2ggYW5kIHJlcGxhY2UKLSAgKiAgICAgICAgICAgICAgICBvcGVyYXRpb25zLiAgTm90ZSB0aGlzIGlzIGFuIGludGVybmFsIGhlYWRlciBmaWxlIGluY2x1ZGVkCi0gICogICAgICAgICAgICAgICAgYnkgcmVnZXguaHBwLCBkbyBub3QgaW5jbHVkZSBvbiBpdHMgb3duLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0ZPUk1BVF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfRk9STUFUX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9pbnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZnVuY3Rpb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NsYXNzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbm90LmhwcD4KLSNpZm5kZWYgTkROQk9PU1RfTk9fU0ZJTkFFCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2hhc194eHguaHBwPgotI2VuZGlmCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLS8vCi0vLyBGb3J3YXJkIGRlY2xhcmF0aW9uOgotLy8KLSAgIHRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciA9IE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgc3RkOjp2ZWN0b3I8c3ViX21hdGNoPEJpZGlJdGVyYXRvcj4gPjo6YWxsb2NhdG9yX3R5cGUgPgotY2xhc3MgbWF0Y2hfcmVzdWx0czsKLQotbmFtZXNwYWNlIHJlX2RldGFpbHsKLQotLy8KLS8vIHN0cnVjdCB0cml2aWFsX2Zvcm1hdF90cmFpdHM6Ci0vLyBkZWZpbmVzIG1pbmltdW0gbG9jYWxpc2F0aW9uIHN1cHBvcnQgZm9yIGZvcm1hdHRpbmcKLS8vIGluIHRoZSBjYXNlIHRoYXQgdGhlIGFjdHVhbCByZWdleCB0cmFpdHMgaXMgdW5hdmFpbGFibGUuCi0vLwotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotc3RydWN0IHRyaXZpYWxfZm9ybWF0X3RyYWl0cwotewotICAgdHlwZWRlZiBjaGFyVCBjaGFyX3R5cGU7Ci0KLSAgIHN0YXRpYyBzdGQ6OnB0cmRpZmZfdCBsZW5ndGgoY29uc3QgY2hhclQqIHApCi0gICB7Ci0gICAgICByZXR1cm4gZ2xvYmFsX2xlbmd0aChwKTsKLSAgIH0KLSAgIHN0YXRpYyBjaGFyVCB0b2xvd2VyKGNoYXJUIGMpCi0gICB7Ci0gICAgICByZXR1cm4gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpnbG9iYWxfbG93ZXIoYyk7Ci0gICB9Ci0gICBzdGF0aWMgY2hhclQgdG91cHBlcihjaGFyVCBjKQotICAgewotICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Z2xvYmFsX3VwcGVyKGMpOwotICAgfQotICAgc3RhdGljIGludCB2YWx1ZShjb25zdCBjaGFyVCBjLCBpbnQgcmFkaXgpCi0gICB7Ci0gICAgICBpbnQgcmVzdWx0ID0gZ2xvYmFsX3ZhbHVlKGMpOwotICAgICAgcmV0dXJuIHJlc3VsdCA+PSByYWRpeCA/IC0xIDogcmVzdWx0OwotICAgfQotICAgaW50IHRvaShjb25zdCBjaGFyVComIHAxLCBjb25zdCBjaGFyVCogcDIsIGludCByYWRpeCljb25zdAotICAgewotICAgICAgcmV0dXJuIGdsb2JhbF90b2kocDEsIHAyLCByYWRpeCwgKnRoaXMpOwotICAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBSZXN1bHRzLCBjbGFzcyB0cmFpdHMsIGNsYXNzIEZvcndhcmRJdGVyPgotY2xhc3MgYmFzaWNfcmVnZXhfZm9ybWF0dGVyCi17Ci1wdWJsaWM6Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0czo6Y2hhcl90eXBlIGNoYXJfdHlwZTsKLSAgIGJhc2ljX3JlZ2V4X2Zvcm1hdHRlcihPdXRwdXRJdGVyYXRvciBvLCBjb25zdCBSZXN1bHRzJiByLCBjb25zdCB0cmFpdHMmIHQpCi0gICAgICA6IG1fdHJhaXRzKHQpLCBtX3Jlc3VsdHMociksIG1fb3V0KG8pLCBtX3N0YXRlKG91dHB1dF9jb3B5KSwgbV9yZXN0b3JlX3N0YXRlKG91dHB1dF9jb3B5KSwgbV9oYXZlX2NvbmRpdGlvbmFsKGZhbHNlKSB7fQotICAgT3V0cHV0SXRlcmF0b3IgZm9ybWF0KEZvcndhcmRJdGVyIHAxLCBGb3J3YXJkSXRlciBwMiwgbWF0Y2hfZmxhZ190eXBlIGYpOwotICAgT3V0cHV0SXRlcmF0b3IgZm9ybWF0KEZvcndhcmRJdGVyIHAxLCBtYXRjaF9mbGFnX3R5cGUgZikKLSAgIHsKLSAgICAgIHJldHVybiBmb3JtYXQocDEsIHAxICsgbV90cmFpdHMubGVuZ3RoKHAxKSwgZik7Ci0gICB9Ci1wcml2YXRlOgotICAgdHlwZWRlZiB0eXBlbmFtZSBSZXN1bHRzOjp2YWx1ZV90eXBlIHN1Yl9tYXRjaF90eXBlOwotICAgZW51bSBvdXRwdXRfc3RhdGUKLSAgIHsKLSAgICAgIG91dHB1dF9jb3B5LAotICAgICAgb3V0cHV0X25leHRfbG93ZXIsCi0gICAgICBvdXRwdXRfbmV4dF91cHBlciwKLSAgICAgIG91dHB1dF9sb3dlciwKLSAgICAgIG91dHB1dF91cHBlciwKLSAgICAgIG91dHB1dF9ub25lCi0gICB9OwotCi0gICB2b2lkIHB1dChjaGFyX3R5cGUgYyk7Ci0gICB2b2lkIHB1dChjb25zdCBzdWJfbWF0Y2hfdHlwZSYgc3ViKTsKLSAgIHZvaWQgZm9ybWF0X2FsbCgpOwotICAgdm9pZCBmb3JtYXRfcGVybCgpOwotICAgdm9pZCBmb3JtYXRfZXNjYXBlKCk7Ci0gICB2b2lkIGZvcm1hdF9jb25kaXRpb25hbCgpOwotICAgdm9pZCBmb3JtYXRfdW50aWxfc2NvcGVfZW5kKCk7Ci0gICBib29sIGhhbmRsZV9wZXJsX3ZlcmIoYm9vbCBoYXZlX2JyYWNlKTsKLQotICAgaW5saW5lIHR5cGVuYW1lIFJlc3VsdHM6OnZhbHVlX3R5cGUgY29uc3QmIGdldF9uYW1lZF9zdWIoRm9yd2FyZEl0ZXIgaSwgRm9yd2FyZEl0ZXIgaiwgY29uc3QgbXBsOjpmYWxzZV8mKQotICAgewotICAgICAgc3RkOjp2ZWN0b3I8Y2hhcl90eXBlPiB2KGksIGopOwotICAgICAgcmV0dXJuIChpICE9IGopID8gdGhpcy0+bV9yZXN1bHRzLm5hbWVkX3N1YmV4cHJlc3Npb24oJnZbMF0sICZ2WzBdICsgdi5zaXplKCkpCi0gICAgICAgICA6IHRoaXMtPm1fcmVzdWx0cy5uYW1lZF9zdWJleHByZXNzaW9uKHN0YXRpY19jYXN0PGNvbnN0IGNoYXJfdHlwZSo+KDApLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyX3R5cGUqPigwKSk7Ci0gICB9Ci0gICBpbmxpbmUgdHlwZW5hbWUgUmVzdWx0czo6dmFsdWVfdHlwZSBjb25zdCYgZ2V0X25hbWVkX3N1YihGb3J3YXJkSXRlciBpLCBGb3J3YXJkSXRlciBqLCBjb25zdCBtcGw6OnRydWVfJikKLSAgIHsKLSAgICAgIHJldHVybiB0aGlzLT5tX3Jlc3VsdHMubmFtZWRfc3ViZXhwcmVzc2lvbihpLCBqKTsKLSAgIH0KLSAgIGlubGluZSB0eXBlbmFtZSBSZXN1bHRzOjp2YWx1ZV90eXBlIGNvbnN0JiBnZXRfbmFtZWRfc3ViKEZvcndhcmRJdGVyIGksIEZvcndhcmRJdGVyIGopCi0gICB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojppc19jb252ZXJ0aWJsZTxGb3J3YXJkSXRlciwgY29uc3QgY2hhcl90eXBlKj46OnR5cGUgdGFnX3R5cGU7Ci0gICAgICByZXR1cm4gZ2V0X25hbWVkX3N1YihpLCBqLCB0YWdfdHlwZSgpKTsKLSAgIH0KLSAgIGlubGluZSBpbnQgZ2V0X25hbWVkX3N1Yl9pbmRleChGb3J3YXJkSXRlciBpLCBGb3J3YXJkSXRlciBqLCBjb25zdCBtcGw6OmZhbHNlXyYpCi0gICB7Ci0gICAgICBzdGQ6OnZlY3RvcjxjaGFyX3R5cGU+IHYoaSwgaik7Ci0gICAgICByZXR1cm4gKGkgIT0gaikgPyB0aGlzLT5tX3Jlc3VsdHMubmFtZWRfc3ViZXhwcmVzc2lvbl9pbmRleCgmdlswXSwgJnZbMF0gKyB2LnNpemUoKSkKLSAgICAgICAgIDogdGhpcy0+bV9yZXN1bHRzLm5hbWVkX3N1YmV4cHJlc3Npb25faW5kZXgoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcl90eXBlKj4oMCksIHN0YXRpY19jYXN0PGNvbnN0IGNoYXJfdHlwZSo+KDApKTsKLSAgIH0KLSAgIGlubGluZSBpbnQgZ2V0X25hbWVkX3N1Yl9pbmRleChGb3J3YXJkSXRlciBpLCBGb3J3YXJkSXRlciBqLCBjb25zdCBtcGw6OnRydWVfJikKLSAgIHsKLSAgICAgIHJldHVybiB0aGlzLT5tX3Jlc3VsdHMubmFtZWRfc3ViZXhwcmVzc2lvbl9pbmRleChpLCBqKTsKLSAgIH0KLSAgIGlubGluZSBpbnQgZ2V0X25hbWVkX3N1Yl9pbmRleChGb3J3YXJkSXRlciBpLCBGb3J3YXJkSXRlciBqKQotICAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6aXNfY29udmVydGlibGU8Rm9yd2FyZEl0ZXIsIGNvbnN0IGNoYXJfdHlwZSo+Ojp0eXBlIHRhZ190eXBlOwotICAgICAgcmV0dXJuIGdldF9uYW1lZF9zdWJfaW5kZXgoaSwgaiwgdGFnX3R5cGUoKSk7Ci0gICB9Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotICAgLy8gbXN2Yy04LjAgaXNzdWVzIGEgc3B1cmlvdXMgd2FybmluZyBvbiB0aGUgY2FsbCB0byBzdGQ6OmFkdmFuY2UgaGVyZToKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDI0NCkKLSNlbmRpZgotICAgaW5saW5lIGludCB0b2koRm9yd2FyZEl0ZXImIGksIEZvcndhcmRJdGVyIGosIGludCBiYXNlLCBjb25zdCBuZG5ib29zdDo6bXBsOjpmYWxzZV8mKQotICAgewotICAgICAgaWYoaSAhPSBqKQotICAgICAgewotICAgICAgICAgc3RkOjp2ZWN0b3I8Y2hhcl90eXBlPiB2KGksIGopOwotICAgICAgICAgY29uc3QgY2hhcl90eXBlKiBzdGFydCA9ICZ2WzBdOwotICAgICAgICAgY29uc3QgY2hhcl90eXBlKiBwb3MgPSBzdGFydDsKLSAgICAgICAgIGludCByID0gbV90cmFpdHMudG9pKHBvcywgJnZbMF0gKyB2LnNpemUoKSwgYmFzZSk7Ci0gICAgICAgICBzdGQ6OmFkdmFuY2UoaSwgcG9zIC0gc3RhcnQpOwotICAgICAgICAgcmV0dXJuIHI7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gLTE7Ci0gICB9Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotICAgaW5saW5lIGludCB0b2koRm9yd2FyZEl0ZXImIGksIEZvcndhcmRJdGVyIGosIGludCBiYXNlLCBjb25zdCBuZG5ib29zdDo6bXBsOjp0cnVlXyYpCi0gICB7Ci0gICAgICByZXR1cm4gbV90cmFpdHMudG9pKGksIGosIGJhc2UpOwotICAgfQotICAgaW5saW5lIGludCB0b2koRm9yd2FyZEl0ZXImIGksIEZvcndhcmRJdGVyIGosIGludCBiYXNlKQotICAgewotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIGRlZmluZWQoX19JTlRFTF9DT01QSUxFUikgJiYgKChfX0lOVEVMX0NPTVBJTEVSID09IDk5OTkpIHx8IChfX0lOVEVMX0NPTVBJTEVSID09IDEyMTApKQotICAgICAgLy8gV29ya2Fyb3VuZCBmb3IgSW50ZWwgc3VwcG9ydCBpc3N1ZSAjNjU2NjU0LgotICAgICAgLy8gU2VlIGFsc28gaHR0cHM6Ly9zdm4uYm9vc3Qub3JnL3RyYWMvYm9vc3QvdGlja2V0LzYzNTkKLSAgICAgIHJldHVybiB0b2koaSwgaiwgYmFzZSwgbXBsOjpmYWxzZV8oKSk7Ci0jZWxzZQotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6aXNfY29udmVydGlibGU8Rm9yd2FyZEl0ZXIsIGNvbnN0IGNoYXJfdHlwZSomPjo6dHlwZSB0YWdfdHlwZTsKLSAgICAgIHJldHVybiB0b2koaSwgaiwgYmFzZSwgdGFnX3R5cGUoKSk7Ci0jZW5kaWYKLSAgIH0KLQotICAgY29uc3QgdHJhaXRzJiAgICBtX3RyYWl0czsgICAgICAgLy8gdGhlIHRyYWl0cyBjbGFzcyBmb3IgbG9jYWxpc2VkIGZvcm1hdHRpbmcgb3BlcmF0aW9ucwotICAgY29uc3QgUmVzdWx0cyYgICBtX3Jlc3VsdHM7ICAgICAvLyB0aGUgbWF0Y2hfcmVzdWx0cyBiZWluZyB1c2VkLgotICAgT3V0cHV0SXRlcmF0b3IgICBtX291dDsgICAgICAgICAvLyB3aGVyZSB0byBzZW5kIG91dHB1dC4KLSAgIEZvcndhcmRJdGVyICAgICAgbV9wb3NpdGlvbjsgIC8vIGZvcm1hdCBzdHJpbmcsIGN1cnJlbnQgcG9zaXRpb24KLSAgIEZvcndhcmRJdGVyICAgICAgbV9lbmQ7ICAgICAgIC8vIGZvcm1hdCBzdHJpbmcgZW5kCi0gICBtYXRjaF9mbGFnX3R5cGUgIG1fZmxhZ3M7ICAgICAgLy8gZm9ybWF0IGZsYWdzIHRvIHVzZQotICAgb3V0cHV0X3N0YXRlICAgICBtX3N0YXRlOyAgICAgIC8vIHdoYXQgdG8gZG8gd2l0aCB0aGUgbmV4dCBjaGFyYWN0ZXIKLSAgIG91dHB1dF9zdGF0ZSAgICAgbV9yZXN0b3JlX3N0YXRlOyAgLy8gd2hhdCBzdGF0ZSB0byByZXN0b3JlIHRvLgotICAgYm9vbCAgICAgICAgICAgICBtX2hhdmVfY29uZGl0aW9uYWw7IC8vIHdlIGFyZSBwYXJzaW5nIGEgY29uZGl0aW9uYWwKLXByaXZhdGU6Ci0gICBiYXNpY19yZWdleF9mb3JtYXR0ZXIoY29uc3QgYmFzaWNfcmVnZXhfZm9ybWF0dGVyJik7Ci0gICBiYXNpY19yZWdleF9mb3JtYXR0ZXImIG9wZXJhdG9yPShjb25zdCBiYXNpY19yZWdleF9mb3JtYXR0ZXImKTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvciwgY2xhc3MgUmVzdWx0cywgY2xhc3MgdHJhaXRzLCBjbGFzcyBGb3J3YXJkSXRlcj4KLU91dHB1dEl0ZXJhdG9yIGJhc2ljX3JlZ2V4X2Zvcm1hdHRlcjxPdXRwdXRJdGVyYXRvciwgUmVzdWx0cywgdHJhaXRzLCBGb3J3YXJkSXRlcj46OmZvcm1hdChGb3J3YXJkSXRlciBwMSwgRm9yd2FyZEl0ZXIgcDIsIG1hdGNoX2ZsYWdfdHlwZSBmKQotewotICAgbV9wb3NpdGlvbiA9IHAxOwotICAgbV9lbmQgPSBwMjsKLSAgIG1fZmxhZ3MgPSBmOwotICAgZm9ybWF0X2FsbCgpOwotICAgcmV0dXJuIG1fb3V0OwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcmF0b3IsIGNsYXNzIFJlc3VsdHMsIGNsYXNzIHRyYWl0cywgY2xhc3MgRm9yd2FyZEl0ZXI+Ci12b2lkIGJhc2ljX3JlZ2V4X2Zvcm1hdHRlcjxPdXRwdXRJdGVyYXRvciwgUmVzdWx0cywgdHJhaXRzLCBGb3J3YXJkSXRlcj46OmZvcm1hdF9hbGwoKQotewotICAgLy8gb3ZlciBhbmQgb3ZlcjoKLSAgIHdoaWxlKG1fcG9zaXRpb24gIT0gbV9lbmQpCi0gICB7Ci0gICAgICBzd2l0Y2goKm1fcG9zaXRpb24pCi0gICAgICB7Ci0gICAgICBjYXNlICcmJzoKLSAgICAgICAgIGlmKG1fZmxhZ3MgJiA6Om5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OmZvcm1hdF9zZWQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICAgICBwdXQobV9yZXN1bHRzWzBdKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotICAgICAgICAgcHV0KCptX3Bvc2l0aW9uKyspOwotICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlICdcXCc6Ci0gICAgICAgICBmb3JtYXRfZXNjYXBlKCk7Ci0gICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgJygnOgotICAgICAgICAgaWYobV9mbGFncyAmIG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OmZvcm1hdF9hbGwpCi0gICAgICAgICB7Ci0gICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICAgICBib29sIGhhdmVfY29uZGl0aW9uYWwgPSBtX2hhdmVfY29uZGl0aW9uYWw7Ci0gICAgICAgICAgICBtX2hhdmVfY29uZGl0aW9uYWwgPSBmYWxzZTsKLSAgICAgICAgICAgIGZvcm1hdF91bnRpbF9zY29wZV9lbmQoKTsKLSAgICAgICAgICAgIG1faGF2ZV9jb25kaXRpb25hbCA9IGhhdmVfY29uZGl0aW9uYWw7Ci0gICAgICAgICAgICBpZihtX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKCptX3Bvc2l0aW9uID09IHN0YXRpY19jYXN0PGNoYXJfdHlwZT4oJyknKSk7Ci0gICAgICAgICAgICArK21fcG9zaXRpb247ICAvLyBza2lwIHRoZSBjbG9zaW5nICcpJwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICB9Ci0gICAgICAgICBwdXQoKm1fcG9zaXRpb24pOwotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlICcpJzoKLSAgICAgICAgIGlmKG1fZmxhZ3MgJiBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjpmb3JtYXRfYWxsKQotICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgfQotICAgICAgICAgcHV0KCptX3Bvc2l0aW9uKTsKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAnOic6Ci0gICAgICAgICBpZigobV9mbGFncyAmIG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OmZvcm1hdF9hbGwpICYmIG1faGF2ZV9jb25kaXRpb25hbCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgIH0KLSAgICAgICAgIHB1dCgqbV9wb3NpdGlvbik7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgJz8nOgotICAgICAgICAgaWYobV9mbGFncyAmIG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OmZvcm1hdF9hbGwpCi0gICAgICAgICB7Ci0gICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICAgICBmb3JtYXRfY29uZGl0aW9uYWwoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotICAgICAgICAgcHV0KCptX3Bvc2l0aW9uKTsKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAnJCc6Ci0gICAgICAgICBpZigobV9mbGFncyAmIGZvcm1hdF9zZWQpID09IDApCi0gICAgICAgICB7Ci0gICAgICAgICAgICBmb3JtYXRfcGVybCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICB9Ci0gICAgICAgICAvLyBub3QgYSBzcGVjaWFsIGNoYXJhY3RlcjoKLSAgICAgICAgIE5ETkJPT1NUX0ZBTExUSFJPVUdIOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgIHB1dCgqbV9wb3NpdGlvbik7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgIH0KLX0KLQotdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBSZXN1bHRzLCBjbGFzcyB0cmFpdHMsIGNsYXNzIEZvcndhcmRJdGVyPgotdm9pZCBiYXNpY19yZWdleF9mb3JtYXR0ZXI8T3V0cHV0SXRlcmF0b3IsIFJlc3VsdHMsIHRyYWl0cywgRm9yd2FyZEl0ZXI+Ojpmb3JtYXRfcGVybCgpCi17Ci0gICAvLwotICAgLy8gT24gZW50cnkgKm1fcG9zaXRpb24gcG9pbnRzIHRvIGEgJyQnIGNoYXJhY3RlcgotICAgLy8gb3V0cHV0IHRoZSBpbmZvcm1hdGlvbiB0aGF0IGdvZXMgd2l0aCBpdDoKLSAgIC8vCi0gICBORE5CT09TVF9BU1NFUlQoKm1fcG9zaXRpb24gPT0gJyQnKTsKLSAgIC8vCi0gICAvLyBzZWUgaWYgdGhpcyBpcyBhIHRyYWlsaW5nICckJzoKLSAgIC8vCi0gICBpZigrK21fcG9zaXRpb24gPT0gbV9lbmQpCi0gICB7Ci0gICAgICAtLW1fcG9zaXRpb247Ci0gICAgICBwdXQoKm1fcG9zaXRpb24pOwotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgcmV0dXJuOwotICAgfQotICAgLy8KLSAgIC8vIE9LIGZpbmQgb3V0IHdoYXQga2luZCBpdCBpczoKLSAgIC8vCi0gICBib29sIGhhdmVfYnJhY2UgPSBmYWxzZTsKLSAgIEZvcndhcmRJdGVyIHNhdmVfcG9zaXRpb24gPSBtX3Bvc2l0aW9uOwotICAgc3dpdGNoKCptX3Bvc2l0aW9uKQotICAgewotICAgY2FzZSAnJic6Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICBwdXQodGhpcy0+bV9yZXN1bHRzWzBdKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSAnYCc6Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICBwdXQodGhpcy0+bV9yZXN1bHRzLnByZWZpeCgpKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSAnXCcnOgotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgcHV0KHRoaXMtPm1fcmVzdWx0cy5zdWZmaXgoKSk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgJyQnOgotICAgICAgcHV0KCptX3Bvc2l0aW9uKyspOwotICAgICAgYnJlYWs7Ci0gICBjYXNlICcrJzoKLSAgICAgIGlmKCgrK21fcG9zaXRpb24gIT0gbV9lbmQpICYmICgqbV9wb3NpdGlvbiA9PSAneycpKQotICAgICAgewotICAgICAgICAgRm9yd2FyZEl0ZXIgYmFzZSA9ICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIHdoaWxlKChtX3Bvc2l0aW9uICE9IG1fZW5kKSAmJiAoKm1fcG9zaXRpb24gIT0gJ30nKSkgKyttX3Bvc2l0aW9uOwotICAgICAgICAgaWYobV9wb3NpdGlvbiAhPSBtX2VuZCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIE5hbWVkIHN1Yi1leHByZXNzaW9uOgotICAgICAgICAgICAgcHV0KGdldF9uYW1lZF9zdWIoYmFzZSwgbV9wb3NpdGlvbikpOwotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICB9Ci0gICAgICAgICBlbHNlCi0gICAgICAgICB7Ci0gICAgICAgICAgICBtX3Bvc2l0aW9uID0gLS1iYXNlOwotICAgICAgICAgfQotICAgICAgfQotICAgICAgcHV0KCh0aGlzLT5tX3Jlc3VsdHMpW3RoaXMtPm1fcmVzdWx0cy5zaXplKCkgPiAxID8gc3RhdGljX2Nhc3Q8aW50Pih0aGlzLT5tX3Jlc3VsdHMuc2l6ZSgpIC0gMSkgOiAxXSk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgJ3snOgotICAgICAgaGF2ZV9icmFjZSA9IHRydWU7Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICBORE5CT09TVF9GQUxMVEhST1VHSDsKLSAgIGRlZmF1bHQ6Ci0gICAgICAvLyBzZWUgaWYgd2UgaGF2ZSBhIG51bWJlcjoKLSAgICAgIHsKLSAgICAgICAgIHN0ZDo6cHRyZGlmZl90IGxlbiA9IDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2UobV9wb3NpdGlvbiwgbV9lbmQpOwotICAgICAgICAgLy9sZW4gPSAoc3RkOjptaW4pKHN0YXRpY19jYXN0PHN0ZDo6cHRyZGlmZl90PigyKSwgbGVuKTsKLSAgICAgICAgIGludCB2ID0gdGhpcy0+dG9pKG1fcG9zaXRpb24sIG1fcG9zaXRpb24gKyBsZW4sIDEwKTsKLSAgICAgICAgIGlmKCh2IDwgMCkgfHwgKGhhdmVfYnJhY2UgJiYgKChtX3Bvc2l0aW9uID09IG1fZW5kKSB8fCAoKm1fcG9zaXRpb24gIT0gJ30nKSkpKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gTG9vayBmb3IgYSBQZXJsLTUuMTAgdmVyYjoKLSAgICAgICAgICAgIGlmKCFoYW5kbGVfcGVybF92ZXJiKGhhdmVfYnJhY2UpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgLy8gbGVhdmUgdGhlICQgYXMgaXMsIGFuZCBjYXJyeSBvbjoKLSAgICAgICAgICAgICAgIG1fcG9zaXRpb24gPSAtLXNhdmVfcG9zaXRpb247Ci0gICAgICAgICAgICAgICBwdXQoKm1fcG9zaXRpb24pOwotICAgICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICB9Ci0gICAgICAgICAvLyBvdGhlcndpc2Ugb3V0cHV0IHN1YiB2OgotICAgICAgICAgcHV0KHRoaXMtPm1fcmVzdWx0c1t2XSk7Ci0gICAgICAgICBpZihoYXZlX2JyYWNlKQotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgfQotICAgfQotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcmF0b3IsIGNsYXNzIFJlc3VsdHMsIGNsYXNzIHRyYWl0cywgY2xhc3MgRm9yd2FyZEl0ZXI+Ci1ib29sIGJhc2ljX3JlZ2V4X2Zvcm1hdHRlcjxPdXRwdXRJdGVyYXRvciwgUmVzdWx0cywgdHJhaXRzLCBGb3J3YXJkSXRlcj46OmhhbmRsZV9wZXJsX3ZlcmIoYm9vbCBoYXZlX2JyYWNlKQotewotICAgLy8gCi0gICAvLyBXZSBtYXkgaGF2ZSBhIGNhcGl0YWxpc2VkIHN0cmluZyBjb250YWluaW5nIGEgUGVybCBhY3Rpb246Ci0gICAvLwotICAgc3RhdGljIGNvbnN0IGNoYXJfdHlwZSBNQVRDSFtdID0geyAnTScsICdBJywgJ1QnLCAnQycsICdIJyB9OwotICAgc3RhdGljIGNvbnN0IGNoYXJfdHlwZSBQUkVNQVRDSFtdID0geyAnUCcsICdSJywgJ0UnLCAnTScsICdBJywgJ1QnLCAnQycsICdIJyB9OwotICAgc3RhdGljIGNvbnN0IGNoYXJfdHlwZSBQT1NUTUFUQ0hbXSA9IHsgJ1AnLCAnTycsICdTJywgJ1QnLCAnTScsICdBJywgJ1QnLCAnQycsICdIJyB9OwotICAgc3RhdGljIGNvbnN0IGNoYXJfdHlwZSBMQVNUX1BBUkVOX01BVENIW10gPSB7ICdMJywgJ0EnLCAnUycsICdUJywgJ18nLCAnUCcsICdBJywgJ1InLCAnRScsICdOJywgJ18nLCAnTScsICdBJywgJ1QnLCAnQycsICdIJyB9OwotICAgc3RhdGljIGNvbnN0IGNoYXJfdHlwZSBMQVNUX1NVQk1BVENIX1JFU1VMVFtdID0geyAnTCcsICdBJywgJ1MnLCAnVCcsICdfJywgJ1MnLCAnVScsICdCJywgJ00nLCAnQScsICdUJywgJ0MnLCAnSCcsICdfJywgJ1InLCAnRScsICdTJywgJ1UnLCAnTCcsICdUJyB9OwotICAgc3RhdGljIGNvbnN0IGNoYXJfdHlwZSBMQVNUX1NVQk1BVENIX1JFU1VMVF9BTFRbXSA9IHsgJ14nLCAnTicgfTsKLQotICAgaWYobV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIGlmKGhhdmVfYnJhY2UgJiYgKCptX3Bvc2l0aW9uID09ICdeJykpCi0gICAgICArK21fcG9zaXRpb247Ci0KLSAgIHN0ZDo6cHRyZGlmZl90IG1heF9sZW4gPSBtX2VuZCAtIG1fcG9zaXRpb247Ci0KLSAgIGlmKChtYXhfbGVuID49IDUpICYmIHN0ZDo6ZXF1YWwobV9wb3NpdGlvbiwgbV9wb3NpdGlvbiArIDUsIE1BVENIKSkKLSAgIHsKLSAgICAgIG1fcG9zaXRpb24gKz0gNTsKLSAgICAgIGlmKGhhdmVfYnJhY2UpCi0gICAgICB7Ci0gICAgICAgICBpZigobV9wb3NpdGlvbiAhPSBtX2VuZCkgJiYgKCptX3Bvc2l0aW9uID09ICd9JykpCi0gICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICBlbHNlCi0gICAgICAgICB7Ci0gICAgICAgICAgICBtX3Bvc2l0aW9uIC09IDU7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBwdXQodGhpcy0+bV9yZXN1bHRzWzBdKTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgaWYoKG1heF9sZW4gPj0gOCkgJiYgc3RkOjplcXVhbChtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uICsgOCwgUFJFTUFUQ0gpKQotICAgewotICAgICAgbV9wb3NpdGlvbiArPSA4OwotICAgICAgaWYoaGF2ZV9icmFjZSkKLSAgICAgIHsKLSAgICAgICAgIGlmKChtX3Bvc2l0aW9uICE9IG1fZW5kKSAmJiAoKm1fcG9zaXRpb24gPT0gJ30nKSkKLSAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIGVsc2UKLSAgICAgICAgIHsKLSAgICAgICAgICAgIG1fcG9zaXRpb24gLT0gODsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgICAgIHB1dCh0aGlzLT5tX3Jlc3VsdHMucHJlZml4KCkpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICBpZigobWF4X2xlbiA+PSA5KSAmJiBzdGQ6OmVxdWFsKG1fcG9zaXRpb24sIG1fcG9zaXRpb24gKyA5LCBQT1NUTUFUQ0gpKQotICAgewotICAgICAgbV9wb3NpdGlvbiArPSA5OwotICAgICAgaWYoaGF2ZV9icmFjZSkKLSAgICAgIHsKLSAgICAgICAgIGlmKChtX3Bvc2l0aW9uICE9IG1fZW5kKSAmJiAoKm1fcG9zaXRpb24gPT0gJ30nKSkKLSAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIGVsc2UKLSAgICAgICAgIHsKLSAgICAgICAgICAgIG1fcG9zaXRpb24gLT0gOTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgICAgIHB1dCh0aGlzLT5tX3Jlc3VsdHMuc3VmZml4KCkpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICBpZigobWF4X2xlbiA+PSAxNikgJiYgc3RkOjplcXVhbChtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uICsgMTYsIExBU1RfUEFSRU5fTUFUQ0gpKQotICAgewotICAgICAgbV9wb3NpdGlvbiArPSAxNjsKLSAgICAgIGlmKGhhdmVfYnJhY2UpCi0gICAgICB7Ci0gICAgICAgICBpZigobV9wb3NpdGlvbiAhPSBtX2VuZCkgJiYgKCptX3Bvc2l0aW9uID09ICd9JykpCi0gICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICBlbHNlCi0gICAgICAgICB7Ci0gICAgICAgICAgICBtX3Bvc2l0aW9uIC09IDE2OwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgfQotICAgICAgcHV0KCh0aGlzLT5tX3Jlc3VsdHMpW3RoaXMtPm1fcmVzdWx0cy5zaXplKCkgPiAxID8gc3RhdGljX2Nhc3Q8aW50Pih0aGlzLT5tX3Jlc3VsdHMuc2l6ZSgpIC0gMSkgOiAxXSk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIGlmKChtYXhfbGVuID49IDIwKSAmJiBzdGQ6OmVxdWFsKG1fcG9zaXRpb24sIG1fcG9zaXRpb24gKyAyMCwgTEFTVF9TVUJNQVRDSF9SRVNVTFQpKQotICAgewotICAgICAgbV9wb3NpdGlvbiArPSAyMDsKLSAgICAgIGlmKGhhdmVfYnJhY2UpCi0gICAgICB7Ci0gICAgICAgICBpZigobV9wb3NpdGlvbiAhPSBtX2VuZCkgJiYgKCptX3Bvc2l0aW9uID09ICd9JykpCi0gICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICBlbHNlCi0gICAgICAgICB7Ci0gICAgICAgICAgICBtX3Bvc2l0aW9uIC09IDIwOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgfQotICAgICAgcHV0KHRoaXMtPm1fcmVzdWx0cy5nZXRfbGFzdF9jbG9zZWRfcGFyZW4oKSk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIGlmKChtYXhfbGVuID49IDIpICYmIHN0ZDo6ZXF1YWwobV9wb3NpdGlvbiwgbV9wb3NpdGlvbiArIDIsIExBU1RfU1VCTUFUQ0hfUkVTVUxUX0FMVCkpCi0gICB7Ci0gICAgICBtX3Bvc2l0aW9uICs9IDI7Ci0gICAgICBpZihoYXZlX2JyYWNlKQotICAgICAgewotICAgICAgICAgaWYoKG1fcG9zaXRpb24gIT0gbV9lbmQpICYmICgqbV9wb3NpdGlvbiA9PSAnfScpKQotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgZWxzZQotICAgICAgICAgewotICAgICAgICAgICAgbV9wb3NpdGlvbiAtPSAyOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgfQotICAgICAgcHV0KHRoaXMtPm1fcmVzdWx0cy5nZXRfbGFzdF9jbG9zZWRfcGFyZW4oKSk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIHJldHVybiBmYWxzZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBSZXN1bHRzLCBjbGFzcyB0cmFpdHMsIGNsYXNzIEZvcndhcmRJdGVyPgotdm9pZCBiYXNpY19yZWdleF9mb3JtYXR0ZXI8T3V0cHV0SXRlcmF0b3IsIFJlc3VsdHMsIHRyYWl0cywgRm9yd2FyZEl0ZXI+Ojpmb3JtYXRfZXNjYXBlKCkKLXsKLSAgIC8vIHNraXAgdGhlIGVzY2FwZSBhbmQgY2hlY2sgZm9yIHRyYWlsaW5nIGVzY2FwZToKLSAgIGlmKCsrbV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgIHsKLSAgICAgIHB1dChzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KCdcXCcpKTsKLSAgICAgIHJldHVybjsKLSAgIH0KLSAgIC8vIG5vdyBzd2l0Y2ggb24gdGhlIGVzY2FwZSB0eXBlOgotICAgc3dpdGNoKCptX3Bvc2l0aW9uKQotICAgewotICAgY2FzZSAnYSc6Ci0gICAgICBwdXQoc3RhdGljX2Nhc3Q8Y2hhcl90eXBlPignXGEnKSk7Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICBicmVhazsKLSAgIGNhc2UgJ2YnOgotICAgICAgcHV0KHN0YXRpY19jYXN0PGNoYXJfdHlwZT4oJ1xmJykpOwotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgYnJlYWs7Ci0gICBjYXNlICduJzoKLSAgICAgIHB1dChzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KCdcbicpKTsKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIGJyZWFrOwotICAgY2FzZSAncic6Ci0gICAgICBwdXQoc3RhdGljX2Nhc3Q8Y2hhcl90eXBlPignXHInKSk7Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICBicmVhazsKLSAgIGNhc2UgJ3QnOgotICAgICAgcHV0KHN0YXRpY19jYXN0PGNoYXJfdHlwZT4oJ1x0JykpOwotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgYnJlYWs7Ci0gICBjYXNlICd2JzoKLSAgICAgIHB1dChzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KCdcdicpKTsKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIGJyZWFrOwotICAgY2FzZSAneCc6Ci0gICAgICBpZigrK21fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICB7Ci0gICAgICAgICBwdXQoc3RhdGljX2Nhc3Q8Y2hhcl90eXBlPigneCcpKTsKLSAgICAgICAgIHJldHVybjsKLSAgICAgIH0KLSAgICAgIC8vIG1heWJlIGhhdmUgXHh7ZGRkfQotICAgICAgaWYoKm1fcG9zaXRpb24gPT0gc3RhdGljX2Nhc3Q8Y2hhcl90eXBlPigneycpKQotICAgICAgewotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgaW50IHZhbCA9IHRoaXMtPnRvaShtX3Bvc2l0aW9uLCBtX2VuZCwgMTYpOwotICAgICAgICAgaWYodmFsIDwgMCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIGludmFsaWQgdmFsdWUgdHJlYXQgZXZlcnl0aGluZyBhcyBsaXRlcmFsczoKLSAgICAgICAgICAgIHB1dChzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KCd4JykpOwotICAgICAgICAgICAgcHV0KHN0YXRpY19jYXN0PGNoYXJfdHlwZT4oJ3snKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICB9Ci0gICAgICAgICBpZigobV9wb3NpdGlvbiA9PSBtX2VuZCkgfHwgKCptX3Bvc2l0aW9uICE9IHN0YXRpY19jYXN0PGNoYXJfdHlwZT4oJ30nKSkpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICB3aGlsZSgqbV9wb3NpdGlvbiAhPSBzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KCdcXCcpKQotICAgICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgICAgcHV0KCptX3Bvc2l0aW9uKyspOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgfQotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgcHV0KHN0YXRpY19jYXN0PGNoYXJfdHlwZT4odmFsKSk7Ci0gICAgICAgICByZXR1cm47Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICBzdGQ6OnB0cmRpZmZfdCBsZW4gPSA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKG1fcG9zaXRpb24sIG1fZW5kKTsKLSAgICAgICAgIGxlbiA9IChzdGQ6Om1pbikoc3RhdGljX2Nhc3Q8c3RkOjpwdHJkaWZmX3Q+KDIpLCBsZW4pOwotICAgICAgICAgaW50IHZhbCA9IHRoaXMtPnRvaShtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uICsgbGVuLCAxNik7Ci0gICAgICAgICBpZih2YWwgPCAwKQotICAgICAgICAgewotICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgcHV0KCptX3Bvc2l0aW9uKyspOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgfQotICAgICAgICAgcHV0KHN0YXRpY19jYXN0PGNoYXJfdHlwZT4odmFsKSk7Ci0gICAgICB9Ci0gICAgICBicmVhazsKLSAgIGNhc2UgJ2MnOgotICAgICAgaWYoKyttX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgewotICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgcHV0KCptX3Bvc2l0aW9uKyspOwotICAgICAgICAgcmV0dXJuOwotICAgICAgfQotICAgICAgcHV0KHN0YXRpY19jYXN0PGNoYXJfdHlwZT4oKm1fcG9zaXRpb24rKyAlIDMyKSk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgJ2UnOgotICAgICAgcHV0KHN0YXRpY19jYXN0PGNoYXJfdHlwZT4oMjcpKTsKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIGJyZWFrOwotICAgZGVmYXVsdDoKLSAgICAgIC8vIHNlZSBpZiB3ZSBoYXZlIGEgcGVybCBzcGVjaWZpYyBlc2NhcGU6Ci0gICAgICBpZigobV9mbGFncyAmIG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OmZvcm1hdF9zZWQpID09IDApCi0gICAgICB7Ci0gICAgICAgICBib29sIGJyZWFrb3V0ID0gZmFsc2U7Ci0gICAgICAgICBzd2l0Y2goKm1fcG9zaXRpb24pCi0gICAgICAgICB7Ci0gICAgICAgICBjYXNlICdsJzoKLSAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIG1fcmVzdG9yZV9zdGF0ZSA9IG1fc3RhdGU7Ci0gICAgICAgICAgICBtX3N0YXRlID0gb3V0cHV0X25leHRfbG93ZXI7Ci0gICAgICAgICAgICBicmVha291dCA9IHRydWU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgIGNhc2UgJ0wnOgotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgICAgbV9zdGF0ZSA9IG91dHB1dF9sb3dlcjsKLSAgICAgICAgICAgIGJyZWFrb3V0ID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgY2FzZSAndSc6Ci0gICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICAgICBtX3Jlc3RvcmVfc3RhdGUgPSBtX3N0YXRlOwotICAgICAgICAgICAgbV9zdGF0ZSA9IG91dHB1dF9uZXh0X3VwcGVyOwotICAgICAgICAgICAgYnJlYWtvdXQgPSB0cnVlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICBjYXNlICdVJzoKLSAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIG1fc3RhdGUgPSBvdXRwdXRfdXBwZXI7Ci0gICAgICAgICAgICBicmVha291dCA9IHRydWU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgIGNhc2UgJ0UnOgotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgICAgbV9zdGF0ZSA9IG91dHB1dF9jb3B5OwotICAgICAgICAgICAgYnJlYWtvdXQgPSB0cnVlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICB9Ci0gICAgICAgICBpZihicmVha291dCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgLy8gc2VlIGlmIHdlIGhhdmUgYSBcbiBzZWQgc3R5bGUgYmFja3JlZmVyZW5jZToKLSAgICAgIHN0ZDo6cHRyZGlmZl90IGxlbiA9IDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2UobV9wb3NpdGlvbiwgbV9lbmQpOwotICAgICAgbGVuID0gKHN0ZDo6bWluKShzdGF0aWNfY2FzdDxzdGQ6OnB0cmRpZmZfdD4oMSksIGxlbik7Ci0gICAgICBpbnQgdiA9IHRoaXMtPnRvaShtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uK2xlbiwgMTApOwotICAgICAgaWYoKHYgPiAwKSB8fCAoKHYgPT0gMCkgJiYgKG1fZmxhZ3MgJiA6Om5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OmZvcm1hdF9zZWQpKSkKLSAgICAgIHsKLSAgICAgICAgIHB1dChtX3Jlc3VsdHNbdl0pOwotICAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKHYgPT0gMCkKLSAgICAgIHsKLSAgICAgICAgIC8vIG9jdGFsIGVjYXBlIHNlcXVlbmNlOgotICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgbGVuID0gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZShtX3Bvc2l0aW9uLCBtX2VuZCk7Ci0gICAgICAgICBsZW4gPSAoc3RkOjptaW4pKHN0YXRpY19jYXN0PHN0ZDo6cHRyZGlmZl90Pig0KSwgbGVuKTsKLSAgICAgICAgIHYgPSB0aGlzLT50b2kobV9wb3NpdGlvbiwgbV9wb3NpdGlvbiArIGxlbiwgOCk7Ci0gICAgICAgICBORE5CT09TVF9BU1NFUlQodiA+PSAwKTsKLSAgICAgICAgIHB1dChzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KHYpKTsKLSAgICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgLy8gT3RoZXJ3aXNlIG91dHB1dCB0aGUgY2hhcmFjdGVyICJhcyBpcyI6Ci0gICAgICBwdXQoKm1fcG9zaXRpb24rKyk7Ci0gICAgICBicmVhazsKLSAgIH0KLX0KLQotdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBSZXN1bHRzLCBjbGFzcyB0cmFpdHMsIGNsYXNzIEZvcndhcmRJdGVyPgotdm9pZCBiYXNpY19yZWdleF9mb3JtYXR0ZXI8T3V0cHV0SXRlcmF0b3IsIFJlc3VsdHMsIHRyYWl0cywgRm9yd2FyZEl0ZXI+Ojpmb3JtYXRfY29uZGl0aW9uYWwoKQotewotICAgaWYobV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgIHsKLSAgICAgIC8vIG9vcHMgdHJhaWxpbmcgJz8nOgotICAgICAgcHV0KHN0YXRpY19jYXN0PGNoYXJfdHlwZT4oJz8nKSk7Ci0gICAgICByZXR1cm47Ci0gICB9Ci0gICBpbnQgdjsKLSAgIGlmKCptX3Bvc2l0aW9uID09ICd7JykKLSAgIHsKLSAgICAgIEZvcndhcmRJdGVyIGJhc2UgPSBtX3Bvc2l0aW9uOwotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgdiA9IHRoaXMtPnRvaShtX3Bvc2l0aW9uLCBtX2VuZCwgMTApOwotICAgICAgaWYodiA8IDApCi0gICAgICB7Ci0gICAgICAgICAvLyBUcnkgYSBuYW1lZCBzdWJleHByZXNzaW9uOgotICAgICAgICAgd2hpbGUoKG1fcG9zaXRpb24gIT0gbV9lbmQpICYmICgqbV9wb3NpdGlvbiAhPSAnfScpKQotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgdiA9IHRoaXMtPmdldF9uYW1lZF9zdWJfaW5kZXgoYmFzZSArIDEsIG1fcG9zaXRpb24pOwotICAgICAgfQotICAgICAgaWYoKHYgPCAwKSB8fCAoKm1fcG9zaXRpb24gIT0gJ30nKSkKLSAgICAgIHsKLSAgICAgICAgIG1fcG9zaXRpb24gPSBiYXNlOwotICAgICAgICAgLy8gb29wcyB0cmFpbGluZyAnPyc6Ci0gICAgICAgICBwdXQoc3RhdGljX2Nhc3Q8Y2hhcl90eXBlPignPycpKTsKLSAgICAgICAgIHJldHVybjsKLSAgICAgIH0KLSAgICAgIC8vIFNraXAgdHJhaWxpbmcgJ30nOgotICAgICAgKyttX3Bvc2l0aW9uOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgc3RkOjpwdHJkaWZmX3QgbGVuID0gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZShtX3Bvc2l0aW9uLCBtX2VuZCk7Ci0gICAgICBsZW4gPSAoc3RkOjptaW4pKHN0YXRpY19jYXN0PHN0ZDo6cHRyZGlmZl90PigyKSwgbGVuKTsKLSAgICAgIHYgPSB0aGlzLT50b2kobV9wb3NpdGlvbiwgbV9wb3NpdGlvbiArIGxlbiwgMTApOwotICAgfQotICAgaWYodiA8IDApCi0gICB7Ci0gICAgICAvLyBvb3BzIG5vdCBhIG51bWJlcjoKLSAgICAgIHB1dChzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KCc/JykpOwotICAgICAgcmV0dXJuOwotICAgfQotCi0gICAvLyBvdXRwdXQgdmFyaWVzIGRlcGVuZGluZyB1cG9uIHdoZXRoZXIgc3ViLWV4cHJlc3Npb24gdiBtYXRjaGVkIG9yIG5vdDoKLSAgIGlmKG1fcmVzdWx0c1t2XS5tYXRjaGVkKQotICAgewotICAgICAgbV9oYXZlX2NvbmRpdGlvbmFsID0gdHJ1ZTsKLSAgICAgIGZvcm1hdF9hbGwoKTsKLSAgICAgIG1faGF2ZV9jb25kaXRpb25hbCA9IGZhbHNlOwotICAgICAgaWYoKG1fcG9zaXRpb24gIT0gbV9lbmQpICYmICgqbV9wb3NpdGlvbiA9PSBzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KCc6JykpKQotICAgICAgewotICAgICAgICAgLy8gc2tpcCB0aGUgJzonOgotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgLy8gc2F2ZSBvdXRwdXQgc3RhdGUsIHRoZW4gdHVybiBpdCBvZmY6Ci0gICAgICAgICBvdXRwdXRfc3RhdGUgc2F2ZWRfc3RhdGUgPSBtX3N0YXRlOwotICAgICAgICAgbV9zdGF0ZSA9IG91dHB1dF9ub25lOwotICAgICAgICAgLy8gZm9ybWF0IHRoZSByZXN0IG9mIHRoaXMgc2NvcGU6Ci0gICAgICAgICBmb3JtYXRfdW50aWxfc2NvcGVfZW5kKCk7Ci0gICAgICAgICAvLyByZXN0b3JlIG91dHB1dCBzdGF0ZToKLSAgICAgICAgIG1fc3RhdGUgPSBzYXZlZF9zdGF0ZTsKLSAgICAgIH0KLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIC8vIHNhdmUgb3V0cHV0IHN0YXRlLCB0aGVuIHR1cm4gaXQgb2ZmOgotICAgICAgb3V0cHV0X3N0YXRlIHNhdmVkX3N0YXRlID0gbV9zdGF0ZTsKLSAgICAgIG1fc3RhdGUgPSBvdXRwdXRfbm9uZTsKLSAgICAgIC8vIGZvcm1hdCB1bnRpbCAnOicgb3IgJyknOgotICAgICAgbV9oYXZlX2NvbmRpdGlvbmFsID0gdHJ1ZTsKLSAgICAgIGZvcm1hdF9hbGwoKTsKLSAgICAgIG1faGF2ZV9jb25kaXRpb25hbCA9IGZhbHNlOwotICAgICAgLy8gcmVzdG9yZSBzdGF0ZToKLSAgICAgIG1fc3RhdGUgPSBzYXZlZF9zdGF0ZTsKLSAgICAgIGlmKChtX3Bvc2l0aW9uICE9IG1fZW5kKSAmJiAoKm1fcG9zaXRpb24gPT0gc3RhdGljX2Nhc3Q8Y2hhcl90eXBlPignOicpKSkKLSAgICAgIHsKLSAgICAgICAgIC8vIHNraXAgdGhlICc6JzoKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIC8vIGZvcm1hdCB0aGUgcmVzdCBvZiB0aGlzIHNjb3BlOgotICAgICAgICAgZm9ybWF0X3VudGlsX3Njb3BlX2VuZCgpOwotICAgICAgfQotICAgfQotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcmF0b3IsIGNsYXNzIFJlc3VsdHMsIGNsYXNzIHRyYWl0cywgY2xhc3MgRm9yd2FyZEl0ZXI+Ci12b2lkIGJhc2ljX3JlZ2V4X2Zvcm1hdHRlcjxPdXRwdXRJdGVyYXRvciwgUmVzdWx0cywgdHJhaXRzLCBGb3J3YXJkSXRlcj46OmZvcm1hdF91bnRpbF9zY29wZV9lbmQoKQotewotICAgZG8KLSAgIHsKLSAgICAgIGZvcm1hdF9hbGwoKTsKLSAgICAgIGlmKChtX3Bvc2l0aW9uID09IG1fZW5kKSB8fCAoKm1fcG9zaXRpb24gPT0gc3RhdGljX2Nhc3Q8Y2hhcl90eXBlPignKScpKSkKLSAgICAgICAgIHJldHVybjsKLSAgICAgIHB1dCgqbV9wb3NpdGlvbisrKTsKLSAgIH13aGlsZShtX3Bvc2l0aW9uICE9IG1fZW5kKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBSZXN1bHRzLCBjbGFzcyB0cmFpdHMsIGNsYXNzIEZvcndhcmRJdGVyPgotdm9pZCBiYXNpY19yZWdleF9mb3JtYXR0ZXI8T3V0cHV0SXRlcmF0b3IsIFJlc3VsdHMsIHRyYWl0cywgRm9yd2FyZEl0ZXI+OjpwdXQoY2hhcl90eXBlIGMpCi17Ci0gICAvLyB3cml0ZSBhIHNpbmdsZSBjaGFyYWN0ZXIgdG8gb3V0cHV0Ci0gICAvLyBhY2NvcmRpbmcgdG8gd2hpY2ggY2FzZSB0cmFuc2xhdGlvbiBtb2RlIHdlIGFyZSBpbjoKLSAgIHN3aXRjaCh0aGlzLT5tX3N0YXRlKQotICAgewotICAgY2FzZSBvdXRwdXRfbm9uZToKLSAgICAgIHJldHVybjsKLSAgIGNhc2Ugb3V0cHV0X25leHRfbG93ZXI6Ci0gICAgICBjID0gbV90cmFpdHMudG9sb3dlcihjKTsKLSAgICAgIHRoaXMtPm1fc3RhdGUgPSBtX3Jlc3RvcmVfc3RhdGU7Ci0gICAgICBicmVhazsKLSAgIGNhc2Ugb3V0cHV0X25leHRfdXBwZXI6Ci0gICAgICBjID0gbV90cmFpdHMudG91cHBlcihjKTsKLSAgICAgIHRoaXMtPm1fc3RhdGUgPSBtX3Jlc3RvcmVfc3RhdGU7Ci0gICAgICBicmVhazsKLSAgIGNhc2Ugb3V0cHV0X2xvd2VyOgotICAgICAgYyA9IG1fdHJhaXRzLnRvbG93ZXIoYyk7Ci0gICAgICBicmVhazsKLSAgIGNhc2Ugb3V0cHV0X3VwcGVyOgotICAgICAgYyA9IG1fdHJhaXRzLnRvdXBwZXIoYyk7Ci0gICAgICBicmVhazsKLSAgIGRlZmF1bHQ6Ci0gICAgICBicmVhazsKLSAgIH0KLSAgICptX291dCA9IGM7Ci0gICArK21fb3V0OwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcmF0b3IsIGNsYXNzIFJlc3VsdHMsIGNsYXNzIHRyYWl0cywgY2xhc3MgRm9yd2FyZEl0ZXI+Ci12b2lkIGJhc2ljX3JlZ2V4X2Zvcm1hdHRlcjxPdXRwdXRJdGVyYXRvciwgUmVzdWx0cywgdHJhaXRzLCBGb3J3YXJkSXRlcj46OnB1dChjb25zdCBzdWJfbWF0Y2hfdHlwZSYgc3ViKQotewotICAgdHlwZWRlZiB0eXBlbmFtZSBzdWJfbWF0Y2hfdHlwZTo6aXRlcmF0b3IgaXRlcmF0b3JfdHlwZTsKLSAgIGl0ZXJhdG9yX3R5cGUgaSA9IHN1Yi5maXJzdDsKLSAgIHdoaWxlKGkgIT0gc3ViLnNlY29uZCkKLSAgIHsKLSAgICAgIHB1dCgqaSk7Ci0gICAgICArK2k7Ci0gICB9Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBTPgotY2xhc3Mgc3RyaW5nX291dF9pdGVyYXRvcgotI2lmbmRlZiBORE5CT09TVF9OT19TVERfSVRFUkFUT1IKLSAgIDogcHVibGljIHN0ZDo6aXRlcmF0b3I8c3RkOjpvdXRwdXRfaXRlcmF0b3JfdGFnLCB0eXBlbmFtZSBTOjp2YWx1ZV90eXBlPgotI2VuZGlmCi17Ci0gICBTKiBvdXQ7Ci1wdWJsaWM6Ci0gICBzdHJpbmdfb3V0X2l0ZXJhdG9yKFMmIHMpIDogb3V0KCZzKSB7fQotICAgc3RyaW5nX291dF9pdGVyYXRvciYgb3BlcmF0b3IrKygpIHsgcmV0dXJuICp0aGlzOyB9Ci0gICBzdHJpbmdfb3V0X2l0ZXJhdG9yJiBvcGVyYXRvcisrKGludCkgeyByZXR1cm4gKnRoaXM7IH0KLSAgIHN0cmluZ19vdXRfaXRlcmF0b3ImIG9wZXJhdG9yKigpIHsgcmV0dXJuICp0aGlzOyB9Ci0gICBzdHJpbmdfb3V0X2l0ZXJhdG9yJiBvcGVyYXRvcj0odHlwZW5hbWUgUzo6dmFsdWVfdHlwZSB2KSAKLSAgIHsgCi0gICAgICBvdXQtPmFwcGVuZCgxLCB2KTsgCi0gICAgICByZXR1cm4gKnRoaXM7IAotICAgfQotCi0jaWZkZWYgTkROQk9PU1RfTk9fU1REX0lURVJBVE9SCi0gICB0eXBlZGVmIHN0ZDo6cHRyZGlmZl90IGRpZmZlcmVuY2VfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgUzo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotICAgdHlwZWRlZiB2YWx1ZV90eXBlKiBwb2ludGVyOwotICAgdHlwZWRlZiB2YWx1ZV90eXBlJiByZWZlcmVuY2U7Ci0gICB0eXBlZGVmIHN0ZDo6b3V0cHV0X2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKLSNlbmRpZgotfTsKLQotdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBJdGVyYXRvciwgY2xhc3MgQWxsb2MsIGNsYXNzIEZvcndhcmRJdGVyLCBjbGFzcyB0cmFpdHM+Ci1PdXRwdXRJdGVyYXRvciByZWdleF9mb3JtYXRfaW1wKE91dHB1dEl0ZXJhdG9yIG91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2hfcmVzdWx0czxJdGVyYXRvciwgQWxsb2M+JiBtLAotICAgICAgICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlciBwMSwgRm9yd2FyZEl0ZXIgcDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHJhaXRzJiB0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgKQotewotICAgaWYoZmxhZ3MgJiByZWdleF9jb25zdGFudHM6OmZvcm1hdF9saXRlcmFsKQotICAgewotICAgICAgcmV0dXJuIHJlX2RldGFpbDo6Y29weShwMSwgcDIsIG91dCk7Ci0gICB9Ci0KLSAgIHJlX2RldGFpbDo6YmFzaWNfcmVnZXhfZm9ybWF0dGVyPAotICAgICAgT3V0cHV0SXRlcmF0b3IsIAotICAgICAgbWF0Y2hfcmVzdWx0czxJdGVyYXRvciwgQWxsb2M+LCAKLSAgICAgIHRyYWl0cywgRm9yd2FyZEl0ZXI+IGYob3V0LCBtLCB0KTsKLSAgIHJldHVybiBmLmZvcm1hdChwMSwgcDIsIGZsYWdzKTsKLX0KLQotI2lmbmRlZiBORE5CT09TVF9OT19TRklOQUUKLQotTkROQk9PU1RfTVBMX0hBU19YWFhfVFJBSVRfREVGKGNvbnN0X2l0ZXJhdG9yKQotCi1zdHJ1Y3QgYW55X3R5cGUgCi17Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIGFueV90eXBlKGNvbnN0IFQmKTsgCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT4KLSAgIGFueV90eXBlKGNvbnN0IFQmLCBjb25zdCBVJik7IAotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIFY+Ci0gICBhbnlfdHlwZShjb25zdCBUJiwgY29uc3QgVSYsIGNvbnN0IFYmKTsgCi19OwotdHlwZWRlZiBjaGFyIG5vX3R5cGU7Ci10eXBlZGVmIGNoYXIgKCZ1bmFyeV90eXBlKVsyXTsKLXR5cGVkZWYgY2hhciAoJmJpbmFyeV90eXBlKVszXTsKLXR5cGVkZWYgY2hhciAoJnRlcm5hcnlfdHlwZSlbNF07Ci0KLW5vX3R5cGUgY2hlY2tfaXNfZm9ybWF0dGVyKHVuYXJ5X3R5cGUsIGJpbmFyeV90eXBlLCB0ZXJuYXJ5X3R5cGUpOwotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXVuYXJ5X3R5cGUgY2hlY2tfaXNfZm9ybWF0dGVyKFQgY29uc3QgJiwgYmluYXJ5X3R5cGUsIHRlcm5hcnlfdHlwZSk7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotYmluYXJ5X3R5cGUgY2hlY2tfaXNfZm9ybWF0dGVyKHVuYXJ5X3R5cGUsIFQgY29uc3QgJiwgdGVybmFyeV90eXBlKTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1iaW5hcnlfdHlwZSBjaGVja19pc19mb3JtYXR0ZXIoVCBjb25zdCAmLCBVIGNvbnN0ICYsIHRlcm5hcnlfdHlwZSk7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdGVybmFyeV90eXBlIGNoZWNrX2lzX2Zvcm1hdHRlcih1bmFyeV90eXBlLCBiaW5hcnlfdHlwZSwgVCBjb25zdCAmKTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci10ZXJuYXJ5X3R5cGUgY2hlY2tfaXNfZm9ybWF0dGVyKFQgY29uc3QgJiwgYmluYXJ5X3R5cGUsIFUgY29uc3QgJik7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotdGVybmFyeV90eXBlIGNoZWNrX2lzX2Zvcm1hdHRlcih1bmFyeV90eXBlLCBUIGNvbnN0ICYsIFUgY29uc3QgJik7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgotdGVybmFyeV90eXBlIGNoZWNrX2lzX2Zvcm1hdHRlcihUIGNvbnN0ICYsIFUgY29uc3QgJiwgViBjb25zdCAmKTsKLQotc3RydWN0IHVuYXJ5X2JpbmFyeV90ZXJuYXJ5Ci17Ci0gICAgdHlwZWRlZiB1bmFyeV90eXBlICgqdW5hcnlfZnVuKShhbnlfdHlwZSk7Ci0gICAgdHlwZWRlZiBiaW5hcnlfdHlwZSAoKmJpbmFyeV9mdW4pKGFueV90eXBlLCBhbnlfdHlwZSk7Ci0gICAgdHlwZWRlZiB0ZXJuYXJ5X3R5cGUgKCp0ZXJuYXJ5X2Z1bikoYW55X3R5cGUsIGFueV90eXBlLCBhbnlfdHlwZSk7Ci0gICAgb3BlcmF0b3IgdW5hcnlfZnVuKCk7Ci0gICAgb3BlcmF0b3IgYmluYXJ5X2Z1bigpOwotICAgIG9wZXJhdG9yIHRlcm5hcnlfZnVuKCk7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGb3JtYXR0ZXIsIGJvb2wgSXNGdW5jdGlvbiA9IG5kbmJvb3N0Ojppc19mdW5jdGlvbjxGb3JtYXR0ZXI+Ojp2YWx1ZT4KLXN0cnVjdCBmb3JtYXR0ZXJfd3JhcHBlcgotICA6IEZvcm1hdHRlcgotICAsIHVuYXJ5X2JpbmFyeV90ZXJuYXJ5Ci17Ci0gICBmb3JtYXR0ZXJfd3JhcHBlcigpe30KLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZvcm1hdHRlcj4KLXN0cnVjdCBmb3JtYXR0ZXJfd3JhcHBlcjxGb3JtYXR0ZXIsIHRydWU+Ci0gIDogdW5hcnlfYmluYXJ5X3Rlcm5hcnkKLXsKLSAgICBvcGVyYXRvciBGb3JtYXR0ZXIgKigpOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRm9ybWF0dGVyPgotc3RydWN0IGZvcm1hdHRlcl93cmFwcGVyPEZvcm1hdHRlciAqLCBmYWxzZT4KLSAgOiB1bmFyeV9iaW5hcnlfdGVybmFyeQotewotICAgIG9wZXJhdG9yIEZvcm1hdHRlciAqKCk7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgRiwgY2xhc3MgTSwgY2xhc3MgTz4KLXN0cnVjdCBmb3JtYXRfdHJhaXRzX2ltcAotewotcHJpdmF0ZToKLSAgIC8vCi0gICAvLyBGIG11c3QgYmUgYSBwb2ludGVyLCBhIGZ1bmN0aW9uLCBvciBhIGNsYXNzIHdpdGggYSBmdW5jdGlvbiBjYWxsIG9wZXJhdG9yOgotICAgLy8KLSAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8Rj46OnZhbHVlIHx8IDo6bmRuYm9vc3Q6OmlzX2Z1bmN0aW9uPEY+Ojp2YWx1ZSB8fCA6Om5kbmJvb3N0Ojppc19jbGFzczxGPjo6dmFsdWUpKTsKLSAgIHN0YXRpYyBmb3JtYXR0ZXJfd3JhcHBlcjx0eXBlbmFtZSB1bndyYXBfcmVmZXJlbmNlPEY+Ojp0eXBlPiBmOwotICAgc3RhdGljIE0gbTsKLSAgIHN0YXRpYyBPIG91dDsKLSAgIHN0YXRpYyBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgZmxhZ3M7Ci1wdWJsaWM6Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9IHNpemVvZihjaGVja19pc19mb3JtYXR0ZXIoZihtKSwgZihtLCBvdXQpLCBmKG0sIG91dCwgZmxhZ3MpKSkpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEYsIGNsYXNzIE0sIGNsYXNzIE8+Ci1zdHJ1Y3QgZm9ybWF0X3RyYWl0cwotewotcHVibGljOgotICAgLy8gCi0gICAvLyBUeXBlIGlzIG1wbDo6aW50XzxOPiB3aGVyZSBOIGlzIG9uZSBvZjoKLSAgIC8vCi0gICAvLyAwIDogRiBpcyBhIHBvaW50ZXIgdG8gYSBwcmVzdW1hYmx5IG51bGwtdGVybWluYXRlZCBzdHJpbmcuCi0gICAvLyAxIDogRiBpcyBhIGNoYXJhY3Rlci1jb250YWluZXIgc3VjaCBhcyBhIHN0ZDo6c3RyaW5nLgotICAgLy8gMiA6IEYgaXMgYSBVbmFyeSBGdW5jdG9yLgotICAgLy8gMyA6IEYgaXMgYSBCaW5hcnkgRnVuY3Rvci4KLSAgIC8vIDQgOiBGIGlzIGEgVGVybmFyeSBGdW5jdG9yLgotICAgLy8KLSAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6Om1wbDo6aWZfPAotICAgICAgbmRuYm9vc3Q6Om1wbDo6YW5kXzxuZG5ib29zdDo6aXNfcG9pbnRlcjxGPiwgbmRuYm9vc3Q6Om1wbDo6bm90XzxuZG5ib29zdDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9wb2ludGVyPEY+Ojp0eXBlPiA+ID4sCi0gICAgICBuZG5ib29zdDo6bXBsOjppbnRfPDA+LAotICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6Om1wbDo6aWZfPAotICAgICAgICAgaGFzX2NvbnN0X2l0ZXJhdG9yPEY+LAotICAgICAgICAgbmRuYm9vc3Q6Om1wbDo6aW50XzwxPiwKLSAgICAgICAgIG5kbmJvb3N0OjptcGw6OmludF88Zm9ybWF0X3RyYWl0c19pbXA8RiwgTSwgTz46OnZhbHVlPgotICAgICAgPjo6dHlwZQotICAgPjo6dHlwZSB0eXBlOwotICAgLy8KLSAgIC8vIFRoaXMgc3RhdGljIGFzc2VydGlvbiB3aWxsIGZhaWwgaWYgdGhlIGZ1bmN0b3IgcGFzc2VkIGRvZXMgbm90IGFjY2VwdAotICAgLy8gdGhlIHNhbWUgdHlwZSBvZiBhcmd1bWVudHMgcGFzc2VkLgotICAgLy8KLSAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoIG5kbmJvb3N0Ojppc19jbGFzczxGPjo6dmFsdWUgJiYgIWhhc19jb25zdF9pdGVyYXRvcjxGPjo6dmFsdWUgPyAodHlwZTo6dmFsdWUgPiAxKSA6IHRydWUpOwotfTsKLQotI2Vsc2UgLy8gTkROQk9PU1RfTk9fU0ZJTkFFCi0KLXRlbXBsYXRlIDxjbGFzcyBGLCBjbGFzcyBNLCBjbGFzcyBPPgotc3RydWN0IGZvcm1hdF90cmFpdHMKLXsKLXB1YmxpYzoKLSAgIC8vIAotICAgLy8gVHlwZSBpcyBtcGw6OmludF88Tj4gd2hlcmUgTiBpcyBvbmUgb2Y6Ci0gICAvLwotICAgLy8gMCA6IEYgaXMgYSBwb2ludGVyIHRvIGEgcHJlc3VtYWJseSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nLgotICAgLy8gMSA6IEYgaXMgYSBjaGFyYWN0ZXItY29udGFpbmVyIHN1Y2ggYXMgYSBzdGQ6OnN0cmluZy4KLSAgIC8vCi0gICAvLyBPdGhlciBvcHRpb25zIHN1Y2ggYXMgRiBiZWluZyBhIEZ1bmN0b3IgYXJlIG5vdCBzdXBwb3J0ZWQgd2l0aG91dAotICAgLy8gU0ZJTkFFIHN1cHBvcnQuCi0gICAvLwotICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6bXBsOjppZl88Ci0gICAgICBuZG5ib29zdDo6aXNfcG9pbnRlcjxGPiwKLSAgICAgIG5kbmJvb3N0OjptcGw6OmludF88MD4sCi0gICAgICBuZG5ib29zdDo6bXBsOjppbnRfPDE+Ci0gICA+Ojp0eXBlIHR5cGU7Ci19OwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fU0ZJTkFFCi0KLXRlbXBsYXRlIDxjbGFzcyBCYXNlLCBjbGFzcyBNYXRjaD4KLXN0cnVjdCBmb3JtYXRfZnVuY3RvcjMKLXsKLSAgIGZvcm1hdF9mdW5jdG9yMyhCYXNlIGIpIDogZnVuYyhiKSB7fQotICAgdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXI+Ci0gICBPdXRwdXRJdGVyIG9wZXJhdG9yKCkoY29uc3QgTWF0Y2gmIG0sIE91dHB1dEl0ZXIgaSwgbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIGYpCi0gICB7Ci0gICAgICByZXR1cm4gbmRuYm9vc3Q6OnVud3JhcF9yZWYoZnVuYykobSwgaSwgZik7Ci0gICB9Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlciwgY2xhc3MgVHJhaXRzPgotICAgT3V0cHV0SXRlciBvcGVyYXRvcigpKGNvbnN0IE1hdGNoJiBtLCBPdXRwdXRJdGVyIGksIG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBmLCBjb25zdCBUcmFpdHMmKQotICAgewotICAgICAgcmV0dXJuICgqdGhpcykobSwgaSwgZik7Ci0gICB9Ci1wcml2YXRlOgotICAgQmFzZSBmdW5jOwotICAgZm9ybWF0X2Z1bmN0b3IzKGNvbnN0IGZvcm1hdF9mdW5jdG9yMyYpOwotICAgZm9ybWF0X2Z1bmN0b3IzJiBvcGVyYXRvcj0oY29uc3QgZm9ybWF0X2Z1bmN0b3IzJik7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQmFzZSwgY2xhc3MgTWF0Y2g+Ci1zdHJ1Y3QgZm9ybWF0X2Z1bmN0b3IyCi17Ci0gICBmb3JtYXRfZnVuY3RvcjIoQmFzZSBiKSA6IGZ1bmMoYikge30KLSAgIHRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyPgotICAgT3V0cHV0SXRlciBvcGVyYXRvcigpKGNvbnN0IE1hdGNoJiBtLCBPdXRwdXRJdGVyIGksIG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSAvKmYqLykKLSAgIHsKLSAgICAgIHJldHVybiBuZG5ib29zdDo6dW53cmFwX3JlZihmdW5jKShtLCBpKTsKLSAgIH0KLSAgIHRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyLCBjbGFzcyBUcmFpdHM+Ci0gICBPdXRwdXRJdGVyIG9wZXJhdG9yKCkoY29uc3QgTWF0Y2gmIG0sIE91dHB1dEl0ZXIgaSwgbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIGYsIGNvbnN0IFRyYWl0cyYpCi0gICB7Ci0gICAgICByZXR1cm4gKCp0aGlzKShtLCBpLCBmKTsKLSAgIH0KLXByaXZhdGU6Ci0gICBCYXNlIGZ1bmM7Ci0gICBmb3JtYXRfZnVuY3RvcjIoY29uc3QgZm9ybWF0X2Z1bmN0b3IyJik7Ci0gICBmb3JtYXRfZnVuY3RvcjImIG9wZXJhdG9yPShjb25zdCBmb3JtYXRfZnVuY3RvcjImKTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBCYXNlLCBjbGFzcyBNYXRjaD4KLXN0cnVjdCBmb3JtYXRfZnVuY3RvcjEKLXsKLSAgIGZvcm1hdF9mdW5jdG9yMShCYXNlIGIpIDogZnVuYyhiKSB7fQotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUywgY2xhc3MgT3V0cHV0SXRlcj4KLSAgIE91dHB1dEl0ZXIgZG9fZm9ybWF0X3N0cmluZyhjb25zdCBTJiBzLCBPdXRwdXRJdGVyIGkpCi0gICB7Ci0gICAgICByZXR1cm4gcmVfZGV0YWlsOjpjb3B5KHMuYmVnaW4oKSwgcy5lbmQoKSwgaSk7Ci0gICB9Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgUywgY2xhc3MgT3V0cHV0SXRlcj4KLSAgIGlubGluZSBPdXRwdXRJdGVyIGRvX2Zvcm1hdF9zdHJpbmcoY29uc3QgUyogcywgT3V0cHV0SXRlciBpKQotICAgewotICAgICAgd2hpbGUocyAmJiAqcykKLSAgICAgIHsKLSAgICAgICAgICppID0gKnM7Ci0gICAgICAgICArK2k7Ci0gICAgICAgICArK3M7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gaTsKLSAgIH0KLSAgIHRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyPgotICAgT3V0cHV0SXRlciBvcGVyYXRvcigpKGNvbnN0IE1hdGNoJiBtLCBPdXRwdXRJdGVyIGksIG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSAvKmYqLykKLSAgIHsKLSAgICAgIHJldHVybiBkb19mb3JtYXRfc3RyaW5nKG5kbmJvb3N0Ojp1bndyYXBfcmVmKGZ1bmMpKG0pLCBpKTsKLSAgIH0KLSAgIHRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyLCBjbGFzcyBUcmFpdHM+Ci0gICBPdXRwdXRJdGVyIG9wZXJhdG9yKCkoY29uc3QgTWF0Y2gmIG0sIE91dHB1dEl0ZXIgaSwgbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIGYsIGNvbnN0IFRyYWl0cyYpCi0gICB7Ci0gICAgICByZXR1cm4gKCp0aGlzKShtLCBpLCBmKTsKLSAgIH0KLXByaXZhdGU6Ci0gICBCYXNlIGZ1bmM7Ci0gICBmb3JtYXRfZnVuY3RvcjEoY29uc3QgZm9ybWF0X2Z1bmN0b3IxJik7Ci0gICBmb3JtYXRfZnVuY3RvcjEmIG9wZXJhdG9yPShjb25zdCBmb3JtYXRfZnVuY3RvcjEmKTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgTWF0Y2gsIGNsYXNzIFRyYWl0cz4KLXN0cnVjdCBmb3JtYXRfZnVuY3Rvcl9jX3N0cmluZwotewotICAgZm9ybWF0X2Z1bmN0b3JfY19zdHJpbmcoY29uc3QgY2hhclQqIHBzKSA6IGZ1bmMocHMpIHt9Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyPgotICAgT3V0cHV0SXRlciBvcGVyYXRvcigpKGNvbnN0IE1hdGNoJiBtLCBPdXRwdXRJdGVyIGksIG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBmLCBjb25zdCBUcmFpdHMmIHQgPSBUcmFpdHMoKSkKLSAgIHsKLSAgICAgIC8vdHlwZWRlZiB0eXBlbmFtZSBNYXRjaDo6Y2hhcl90eXBlIGNoYXJfdHlwZTsKLSAgICAgIGNvbnN0IGNoYXJUKiBlbmQgPSBmdW5jOwotICAgICAgd2hpbGUoKmVuZCkgKytlbmQ7Ci0gICAgICByZXR1cm4gcmVnZXhfZm9ybWF0X2ltcChpLCBtLCBmdW5jLCBlbmQsIGYsIHQpOwotICAgfQotcHJpdmF0ZToKLSAgIGNvbnN0IGNoYXJUKiBmdW5jOwotICAgZm9ybWF0X2Z1bmN0b3JfY19zdHJpbmcoY29uc3QgZm9ybWF0X2Z1bmN0b3JfY19zdHJpbmcmKTsKLSAgIGZvcm1hdF9mdW5jdG9yX2Nfc3RyaW5nJiBvcGVyYXRvcj0oY29uc3QgZm9ybWF0X2Z1bmN0b3JfY19zdHJpbmcmKTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBDb250YWluZXIsIGNsYXNzIE1hdGNoLCBjbGFzcyBUcmFpdHM+Ci1zdHJ1Y3QgZm9ybWF0X2Z1bmN0b3JfY29udGFpbmVyCi17Ci0gICBmb3JtYXRfZnVuY3Rvcl9jb250YWluZXIoY29uc3QgQ29udGFpbmVyJiBjKSA6IGZ1bmMoYykge30KLQotICAgdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXI+Ci0gICBPdXRwdXRJdGVyIG9wZXJhdG9yKCkoY29uc3QgTWF0Y2gmIG0sIE91dHB1dEl0ZXIgaSwgbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIGYsIGNvbnN0IFRyYWl0cyYgdCA9IFRyYWl0cygpKQotICAgewotICAgICAgLy90eXBlZGVmIHR5cGVuYW1lIE1hdGNoOjpjaGFyX3R5cGUgY2hhcl90eXBlOwotICAgICAgcmV0dXJuIHJlX2RldGFpbDo6cmVnZXhfZm9ybWF0X2ltcChpLCBtLCBmdW5jLmJlZ2luKCksIGZ1bmMuZW5kKCksIGYsIHQpOwotICAgfQotcHJpdmF0ZToKLSAgIGNvbnN0IENvbnRhaW5lciYgZnVuYzsKLSAgIGZvcm1hdF9mdW5jdG9yX2NvbnRhaW5lcihjb25zdCBmb3JtYXRfZnVuY3Rvcl9jb250YWluZXImKTsKLSAgIGZvcm1hdF9mdW5jdG9yX2NvbnRhaW5lciYgb3BlcmF0b3I9KGNvbnN0IGZvcm1hdF9mdW5jdG9yX2NvbnRhaW5lciYpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEZ1bmMsIGNsYXNzIE1hdGNoLCBjbGFzcyBPdXRwdXRJdGVyYXRvciwgY2xhc3MgVHJhaXRzID0gcmVfZGV0YWlsOjp0cml2aWFsX2Zvcm1hdF90cmFpdHM8dHlwZW5hbWUgTWF0Y2g6OmNoYXJfdHlwZT4gPgotc3RydWN0IGNvbXB1dGVfZnVuY3Rvcl90eXBlCi17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGZvcm1hdF90cmFpdHM8RnVuYywgTWF0Y2gsIE91dHB1dEl0ZXJhdG9yPjo6dHlwZSB0YWc7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfY3Y8IHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfcG9pbnRlcjxGdW5jPjo6dHlwZT46OnR5cGUgbWF5YmVfY2hhcl90eXBlOwotCi0gICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgOjpuZG5ib29zdDo6aXNfc2FtZTx0YWcsIG1wbDo6aW50XzwwPiA+LCBmb3JtYXRfZnVuY3Rvcl9jX3N0cmluZzxtYXliZV9jaGFyX3R5cGUsIE1hdGNoLCBUcmFpdHM+LAotICAgICAgdHlwZW5hbWUgbXBsOjppZl88Ci0gICAgICAgICA6Om5kbmJvb3N0Ojppc19zYW1lPHRhZywgbXBsOjppbnRfPDE+ID4sIGZvcm1hdF9mdW5jdG9yX2NvbnRhaW5lcjxGdW5jLCBNYXRjaCwgVHJhaXRzPiwKLSAgICAgICAgIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfc2FtZTx0YWcsIG1wbDo6aW50XzwyPiA+LCBmb3JtYXRfZnVuY3RvcjE8RnVuYywgTWF0Y2g+LAotICAgICAgICAgICAgdHlwZW5hbWUgbXBsOjppZl88Ci0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19zYW1lPHRhZywgbXBsOjppbnRfPDM+ID4sIGZvcm1hdF9mdW5jdG9yMjxGdW5jLCBNYXRjaD4sIAotICAgICAgICAgICAgICAgZm9ybWF0X2Z1bmN0b3IzPEZ1bmMsIE1hdGNoPgotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgPjo6dHlwZQotICAgICAgPjo6dHlwZQotICAgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgcmVfZGV0YWlsCi0KLXRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvciwgY2xhc3MgSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgRnVuY3Rvcj4KLWlubGluZSBPdXRwdXRJdGVyYXRvciByZWdleF9mb3JtYXQoT3V0cHV0SXRlcmF0b3Igb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRjaF9yZXN1bHRzPEl0ZXJhdG9yLCBBbGxvY2F0b3I+JiBtLAotICAgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdG9yIGZtdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gZm9ybWF0X2FsbAotICAgICAgICAgICAgICAgICAgICAgICAgICkKLXsKLSAgIHJldHVybiBtLmZvcm1hdChvdXQsIGZtdCwgZmxhZ3MpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgRnVuY3Rvcj4KLWlubGluZSBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSBtYXRjaF9yZXN1bHRzPEl0ZXJhdG9yLCBBbGxvY2F0b3I+OjpjaGFyX3R5cGU+IHJlZ2V4X2Zvcm1hdChjb25zdCBtYXRjaF9yZXN1bHRzPEl0ZXJhdG9yLCBBbGxvY2F0b3I+JiBtLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3RvciBmbXQsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBmb3JtYXRfYWxsKQotewotICAgcmV0dXJuIG0uZm9ybWF0KGZtdCwgZmxhZ3MpOwotfQotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gTkROQk9PU1RfUkVHRVhfRk9STUFUX0hQUAotCi0KLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTgwNTBmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICByZWdleF9md2QuY3BwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBGb3J3YXJkIGRlY2xhcmVzIG5kbmJvb3N0OjpiYXNpY19yZWdleDw+IGFuZAotICAqICAgICAgICAgICAgICAgIGFzc29jaWF0ZWQgdHlwZWRlZnMuCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9GV0RfSFBQX0lOQ0xVREVECi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfQ09ORklHX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L2NvbmZpZy5ocHA+Ci0jZW5kaWYKLQotLy8KLS8vIGRlZmluZSBORE5CT09TVF9SRUdFWF9OT19GV0QgaWYgdGhpcwotLy8gaGVhZGVyIGRvZXNuJ3Qgd29yayEKLS8vCi0jaWZkZWYgTkROQk9PU1RfUkVHRVhfTk9fRldECi0jICBpZm5kZWYgTkROQk9PU1RfUkVfUkVHRVhfSFBQCi0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9yZWdleC5ocHA+Ci0jICBlbmRpZgotI2Vsc2UKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1jbGFzcyBjcHBfcmVnZXhfdHJhaXRzOwotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotc3RydWN0IGNfcmVnZXhfdHJhaXRzOwotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotY2xhc3MgdzMyX3JlZ2V4X3RyYWl0czsKLQotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX1VTRV9XSU4zMl9MT0NBTEUKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgaW1wbGVtZW50YXRpb25UID0gdzMyX3JlZ2V4X3RyYWl0czxjaGFyVD4gPgotc3RydWN0IHJlZ2V4X3RyYWl0czsKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfUkVHRVhfVVNFX0NQUF9MT0NBTEUpCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIGltcGxlbWVudGF0aW9uVCA9IGNwcF9yZWdleF90cmFpdHM8Y2hhclQ+ID4KLXN0cnVjdCByZWdleF90cmFpdHM7Ci0jZWxzZQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyBpbXBsZW1lbnRhdGlvblQgPSBjX3JlZ2V4X3RyYWl0czxjaGFyVD4gPgotc3RydWN0IHJlZ2V4X3RyYWl0czsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cyA9IHJlZ2V4X3RyYWl0czxjaGFyVD4gPgotY2xhc3MgYmFzaWNfcmVnZXg7Ci0KLXR5cGVkZWYgYmFzaWNfcmVnZXg8Y2hhciwgcmVnZXhfdHJhaXRzPGNoYXI+ID4gcmVnZXg7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotdHlwZWRlZiBiYXNpY19yZWdleDx3Y2hhcl90LCByZWdleF90cmFpdHM8d2NoYXJfdD4gPiB3cmVnZXg7Ci0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyBORE5CT09TVF9SRUdFWF9OT19GV0QKLQotI2VuZGlmCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfZ3JlcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X2dyZXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZTc4OWQyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfZ3JlcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTUgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIHJlZ2V4X2dyZXAuaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBQcm92aWRlcyByZWdleF9ncmVwIGltcGxlbWVudGF0aW9uLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X1JFR0VYX0dSRVBfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1Y0X1JFR0VYX0dSRVBfSFBQCi0KLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLS8vCi0vLyByZWdleF9ncmVwOgotLy8gZmluZCBhbGwgbm9uLW92ZXJsYXBwaW5nIG1hdGNoZXMgd2l0aGluIHRoZSBzZXF1ZW5jZSBmaXJzdCBsYXN0OgotLy8KLXRlbXBsYXRlIDxjbGFzcyBQcmVkaWNhdGUsIGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWlubGluZSB1bnNpZ25lZCBpbnQgcmVnZXhfZ3JlcChQcmVkaWNhdGUgZm9vLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaWRpSXRlcmF0b3IgZmlyc3QsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpZGlJdGVyYXRvciBsYXN0LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIGlmKGUuZmxhZ3MoKSAmIHJlZ2V4X2NvbnN0YW50czo6ZmFpbGJpdCkKLSAgICAgIHJldHVybiBmYWxzZTsKLQotICAgdHlwZWRlZiB0eXBlbmFtZSBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvcj46OmFsbG9jYXRvcl90eXBlIG1hdGNoX2FsbG9jYXRvcl90eXBlOwotCi0gICBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvcj4gbTsKLSAgIHJlX2RldGFpbDo6cGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgbWF0Y2hfYWxsb2NhdG9yX3R5cGUsIHRyYWl0cz4gbWF0Y2hlcihmaXJzdCwgbGFzdCwgbSwgZSwgZmxhZ3MsIGZpcnN0KTsKLSAgIHVuc2lnbmVkIGludCBjb3VudCA9IDA7Ci0gICB3aGlsZShtYXRjaGVyLmZpbmQoKSkKLSAgIHsKLSAgICAgICsrY291bnQ7Ci0gICAgICBpZigwID09IGZvbyhtKSkKLSAgICAgICAgIHJldHVybiBjb3VudDsgLy8gY2FsbGVyIGRvZXNuJ3Qgd2FudCB0byBnbyBvbgotICAgICAgaWYobVswXS5zZWNvbmQgPT0gbGFzdCkKLSAgICAgICAgIHJldHVybiBjb3VudDsgLy8gd2UndmUgcmVhY2hlZCB0aGUgZW5kLCBkb24ndCB0cnkgYW5kIGZpbmQgYW4gZXh0cmEgbnVsbCBtYXRjaC4KLSAgICAgIGlmKG0ubGVuZ3RoKCkgPT0gMCkKLSAgICAgIHsKLSAgICAgICAgIGlmKG1bMF0uc2Vjb25kID09IGxhc3QpCi0gICAgICAgICAgICByZXR1cm4gY291bnQ7Ci0gICAgICAgICAvLyB3ZSBmb3VuZCBhIE5VTEwtbWF0Y2gsIG5vdyB0cnkgdG8gZmluZAotICAgICAgICAgLy8gYSBub24tTlVMTCBvbmUgYXQgdGhlIHNhbWUgcG9zaXRpb246Ci0gICAgICAgICBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgbWF0Y2hfYWxsb2NhdG9yX3R5cGU+IG0yKG0pOwotICAgICAgICAgbWF0Y2hlci5zZXRmKG1hdGNoX25vdF9udWxsIHwgbWF0Y2hfY29udGludW91cyk7Ci0gICAgICAgICBpZihtYXRjaGVyLmZpbmQoKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgICsrY291bnQ7Ci0gICAgICAgICAgICBpZigwID09IGZvbyhtKSkKLSAgICAgICAgICAgICAgIHJldHVybiBjb3VudDsKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIHJlc2V0IG1hdGNoIGJhY2sgdG8gd2hlcmUgaXQgd2FzOgotICAgICAgICAgICAgbSA9IG0yOwotICAgICAgICAgfQotICAgICAgICAgbWF0Y2hlci51bnNldGYoKG1hdGNoX25vdF9udWxsIHwgbWF0Y2hfY29udGludW91cykgJiB+ZmxhZ3MpOwotICAgICAgfQotICAgfQotICAgcmV0dXJuIGNvdW50OwotfQotCi0vLwotLy8gcmVnZXhfZ3JlcCBjb252ZW5pZW5jZSBpbnRlcmZhY2VzOgotI2lmbmRlZiBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORwotLy8KLS8vIHRoaXMgaXNuJ3QgcmVhbGx5IGEgcGFydGlhbCBzcGVjaWFsaXNhdGlvbiwgYnV0IHRlbXBsYXRlIGZ1bmN0aW9uCi0vLyBvdmVybG9hZGluZyAtIGlmIHRoZSBjb21waWxlciBkb2Vzbid0IHN1cHBvcnQgcGFydGlhbCBzcGVjaWFsaXNhdGlvbgotLy8gdGhlbiBpdCByZWFsbHkgd29uJ3Qgc3VwcG9ydCB0aGlzIGVpdGhlcjoKLXRlbXBsYXRlIDxjbGFzcyBQcmVkaWNhdGUsIGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1pbmxpbmUgdW5zaWduZWQgaW50IHJlZ2V4X2dyZXAoUHJlZGljYXRlIGZvbywgY29uc3QgY2hhclQqIHN0ciwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X2dyZXAoZm9vLCBzdHIsIHN0ciArIHRyYWl0czo6bGVuZ3RoKHN0ciksIGUsIGZsYWdzKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFByZWRpY2F0ZSwgY2xhc3MgU1QsIGNsYXNzIFNBLCBjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotaW5saW5lIHVuc2lnbmVkIGludCByZWdleF9ncmVwKFByZWRpY2F0ZSBmb28sIGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBTVCwgU0E+JiBzLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X2dyZXAoZm9vLCBzLmJlZ2luKCksIHMuZW5kKCksIGUsIGZsYWdzKTsKLX0KLSNlbHNlICAvLyBwYXJ0aWFsIHNwZWNpYWxpc2F0aW9uCi1pbmxpbmUgdW5zaWduZWQgaW50IHJlZ2V4X2dyZXAoYm9vbCAoKmZvbykoY29uc3QgY21hdGNoJiksIGNvbnN0IGNoYXIqIHN0ciwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X2dyZXAoZm9vLCBzdHIsIHN0ciArIHJlZ2V4Ojp0cmFpdHNfdHlwZTo6bGVuZ3RoKHN0ciksIGUsIGZsYWdzKTsKLX0KLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi1pbmxpbmUgdW5zaWduZWQgaW50IHJlZ2V4X2dyZXAoYm9vbCAoKmZvbykoY29uc3Qgd2NtYXRjaCYpLCBjb25zdCB3Y2hhcl90KiBzdHIsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd3JlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfZ3JlcChmb28sIHN0ciwgc3RyICsgd3JlZ2V4Ojp0cmFpdHNfdHlwZTo6bGVuZ3RoKHN0ciksIGUsIGZsYWdzKTsKLX0KLSNlbmRpZgotaW5saW5lIHVuc2lnbmVkIGludCByZWdleF9ncmVwKGJvb2wgKCpmb28pKGNvbnN0IG1hdGNoX3Jlc3VsdHM8c3RkOjpzdHJpbmc6OmNvbnN0X2l0ZXJhdG9yPiYpLCBjb25zdCBzdGQ6OnN0cmluZyYgcywKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfZ3JlcChmb28sIHMuYmVnaW4oKSwgcy5lbmQoKSwgZSwgZmxhZ3MpOwotfQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1dSRUdFWCkKLWlubGluZSB1bnNpZ25lZCBpbnQgcmVnZXhfZ3JlcChib29sICgqZm9vKShjb25zdCBtYXRjaF9yZXN1bHRzPHN0ZDo6YmFzaWNfc3RyaW5nPHdjaGFyX3Q+Ojpjb25zdF9pdGVyYXRvcj4mKSwgCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzx3Y2hhcl90PiYgcywgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3cmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9ncmVwKGZvbywgcy5iZWdpbigpLCBzLmVuZCgpLCBlLCBmbGFncyk7Ci19Ci0jZW5kaWYKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gTkROQk9PU1RfUkVHRVhfVjRfUkVHRVhfR1JFUF9IUFAKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF9pdGVyYXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X2l0ZXJhdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGMwMTM2ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X2l0ZXJhdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwMSArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMjAwMwotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIHJlZ2V4X2l0ZXJhdG9yLmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogUHJvdmlkZXMgcmVnZXhfaXRlcmF0b3IgaW1wbGVtZW50YXRpb24uCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfUkVHRVhfSVRFUkFUT1JfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1Y0X1JFR0VYX0lURVJBVE9SX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc2hhcmVkX3B0ci5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yLCAKLSAgICAgICAgICBjbGFzcyBjaGFyVCwKLSAgICAgICAgICBjbGFzcyB0cmFpdHM+Ci1jbGFzcyByZWdleF9pdGVyYXRvcl9pbXBsZW1lbnRhdGlvbiAKLXsKLSAgIHR5cGVkZWYgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4gcmVnZXhfdHlwZTsKLQotICAgbWF0Y2hfcmVzdWx0czxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+IHdoYXQ7ICAvLyBjdXJyZW50IG1hdGNoCi0gICBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgICAgICAgICAgICAgICAgYmFzZTsgIC8vIHN0YXJ0IG9mIHNlcXVlbmNlCi0gICBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgICAgICAgICAgICAgICAgZW5kOyAgIC8vIGVuZCBvZiBzZXF1ZW5jZQotICAgY29uc3QgcmVnZXhfdHlwZSAgICAgICAgICAgICAgICAgICAgIHJlOyAgIC8vIHRoZSBleHByZXNzaW9uCi0gICBtYXRjaF9mbGFnX3R5cGUgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M7IC8vIGZsYWdzIGZvciBtYXRjaGluZwotCi1wdWJsaWM6Ci0gICByZWdleF9pdGVyYXRvcl9pbXBsZW1lbnRhdGlvbihjb25zdCByZWdleF90eXBlKiBwLCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgbGFzdCwgbWF0Y2hfZmxhZ190eXBlIGYpCi0gICAgICA6IGJhc2UoKSwgZW5kKGxhc3QpLCByZSgqcCksIGZsYWdzKGYpe30KLSAgIGJvb2wgaW5pdChCaWRpcmVjdGlvbmFsSXRlcmF0b3IgZmlyc3QpCi0gICB7Ci0gICAgICBiYXNlID0gZmlyc3Q7Ci0gICAgICByZXR1cm4gcmVnZXhfc2VhcmNoKGZpcnN0LCBlbmQsIHdoYXQsIHJlLCBmbGFncyk7Ci0gICB9Ci0gICBib29sIGNvbXBhcmUoY29uc3QgcmVnZXhfaXRlcmF0b3JfaW1wbGVtZW50YXRpb24mIHRoYXQpCi0gICB7Ci0gICAgICBpZih0aGlzID09ICZ0aGF0KSByZXR1cm4gdHJ1ZTsKLSAgICAgIHJldHVybiAoJnJlLmdldF9kYXRhKCkgPT0gJnRoYXQucmUuZ2V0X2RhdGEoKSkgJiYgKGVuZCA9PSB0aGF0LmVuZCkgJiYgKGZsYWdzID09IHRoYXQuZmxhZ3MpICYmICh3aGF0WzBdLmZpcnN0ID09IHRoYXQud2hhdFswXS5maXJzdCkgJiYgKHdoYXRbMF0uc2Vjb25kID09IHRoYXQud2hhdFswXS5zZWNvbmQpOwotICAgfQotICAgY29uc3QgbWF0Y2hfcmVzdWx0czxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+JiBnZXQoKQotICAgeyByZXR1cm4gd2hhdDsgfQotICAgYm9vbCBuZXh0KCkKLSAgIHsKLSAgICAgIC8vaWYod2hhdC5wcmVmaXgoKS5maXJzdCAhPSB3aGF0WzBdLnNlY29uZCkKLSAgICAgIC8vICAgZmxhZ3MgfD0gbWF0Y2hfcHJldl9hdmFpbDsKLSAgICAgIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBuZXh0X3N0YXJ0ID0gd2hhdFswXS5zZWNvbmQ7Ci0gICAgICBtYXRjaF9mbGFnX3R5cGUgZihmbGFncyk7Ci0gICAgICBpZighd2hhdC5sZW5ndGgoKSB8fCAoZiAmIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfcG9zaXgpKQotICAgICAgICAgZiB8PSByZWdleF9jb25zdGFudHM6Om1hdGNoX25vdF9pbml0aWFsX251bGw7Ci0gICAgICAvL2lmKGJhc2UgIT0gbmV4dF9zdGFydCkKLSAgICAgIC8vICAgZiB8PSByZWdleF9jb25zdGFudHM6Om1hdGNoX25vdF9ib2I7Ci0gICAgICBib29sIHJlc3VsdCA9IHJlZ2V4X3NlYXJjaChuZXh0X3N0YXJ0LCBlbmQsIHdoYXQsIHJlLCBmLCBiYXNlKTsKLSAgICAgIGlmKHJlc3VsdCkKLSAgICAgICAgIHdoYXQuc2V0X2Jhc2UoYmFzZSk7Ci0gICAgICByZXR1cm4gcmVzdWx0OwotICAgfQotcHJpdmF0ZToKLSAgIHJlZ2V4X2l0ZXJhdG9yX2ltcGxlbWVudGF0aW9uJiBvcGVyYXRvcj0oY29uc3QgcmVnZXhfaXRlcmF0b3JfaW1wbGVtZW50YXRpb24mKTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpcmVjdGlvbmFsSXRlcmF0b3IsIAotICAgICAgICAgIGNsYXNzIGNoYXJUID0gTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+Ojp2YWx1ZV90eXBlLAotICAgICAgICAgIGNsYXNzIHRyYWl0cyA9IHJlZ2V4X3RyYWl0czxjaGFyVD4gPgotY2xhc3MgcmVnZXhfaXRlcmF0b3IgCi0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9JVEVSQVRPUgotICAgOiBwdWJsaWMgc3RkOjppdGVyYXRvcjwKLSAgICAgICAgIHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcsIAotICAgICAgICAgbWF0Y2hfcmVzdWx0czxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+LAotICAgICAgICAgdHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlLAotICAgICAgICAgY29uc3QgbWF0Y2hfcmVzdWx0czxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+KiwKLSAgICAgICAgIGNvbnN0IG1hdGNoX3Jlc3VsdHM8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPiYgPiAgICAgICAgIAotI2VuZGlmCi17Ci1wcml2YXRlOgotICAgdHlwZWRlZiByZWdleF9pdGVyYXRvcl9pbXBsZW1lbnRhdGlvbjxCaWRpcmVjdGlvbmFsSXRlcmF0b3IsIGNoYXJULCB0cmFpdHM+IGltcGw7Ci0gICB0eXBlZGVmIHNoYXJlZF9wdHI8aW1wbD4gcGltcGw7Ci1wdWJsaWM6Ci0gICB0eXBlZGVmICAgICAgICAgIGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+ICAgICAgICAgICAgICAgICAgIHJlZ2V4X3R5cGU7Ci0gICB0eXBlZGVmICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPiAgICAgICAgICAgICAgICAgICAgdmFsdWVfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsKLSAgIHR5cGVkZWYgICAgICAgICAgY29uc3QgdmFsdWVfdHlwZSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyOwotICAgdHlwZWRlZiAgICAgICAgICBjb25zdCB2YWx1ZV90eXBlJiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsgCi0gICB0eXBlZGVmICAgICAgICAgIHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3JfY2F0ZWdvcnk7Ci0gICAKLSAgIHJlZ2V4X2l0ZXJhdG9yKCl7fQotICAgcmVnZXhfaXRlcmF0b3IoQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGEsIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBiLCAKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4X3R5cGUmIHJlLCAKLSAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBtID0gbWF0Y2hfZGVmYXVsdCkKLSAgICAgICAgICAgICAgICAgIDogcGRhdGEobmV3IGltcGwoJnJlLCBiLCBtKSkKLSAgIHsKLSAgICAgIGlmKCFwZGF0YS0+aW5pdChhKSkKLSAgICAgIHsKLSAgICAgICAgIHBkYXRhLnJlc2V0KCk7Ci0gICAgICB9Ci0gICB9Ci0gICByZWdleF9pdGVyYXRvcihjb25zdCByZWdleF9pdGVyYXRvciYgdGhhdCkKLSAgICAgIDogcGRhdGEodGhhdC5wZGF0YSkge30KLSAgIHJlZ2V4X2l0ZXJhdG9yJiBvcGVyYXRvcj0oY29uc3QgcmVnZXhfaXRlcmF0b3ImIHRoYXQpCi0gICB7Ci0gICAgICBwZGF0YSA9IHRoYXQucGRhdGE7Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICB9Ci0gICBib29sIG9wZXJhdG9yPT0oY29uc3QgcmVnZXhfaXRlcmF0b3ImIHRoYXQpY29uc3QKLSAgIHsgCi0gICAgICBpZigocGRhdGEuZ2V0KCkgPT0gMCkgfHwgKHRoYXQucGRhdGEuZ2V0KCkgPT0gMCkpCi0gICAgICAgICByZXR1cm4gcGRhdGEuZ2V0KCkgPT0gdGhhdC5wZGF0YS5nZXQoKTsKLSAgICAgIHJldHVybiBwZGF0YS0+Y29tcGFyZSgqKHRoYXQucGRhdGEuZ2V0KCkpKTsgCi0gICB9Ci0gICBib29sIG9wZXJhdG9yIT0oY29uc3QgcmVnZXhfaXRlcmF0b3ImIHRoYXQpY29uc3QKLSAgIHsgcmV0dXJuICEoKnRoaXMgPT0gdGhhdCk7IH0KLSAgIGNvbnN0IHZhbHVlX3R5cGUmIG9wZXJhdG9yKigpY29uc3QKLSAgIHsgcmV0dXJuIHBkYXRhLT5nZXQoKTsgfQotICAgY29uc3QgdmFsdWVfdHlwZSogb3BlcmF0b3ItPigpY29uc3QKLSAgIHsgcmV0dXJuICYocGRhdGEtPmdldCgpKTsgfQotICAgcmVnZXhfaXRlcmF0b3ImIG9wZXJhdG9yKysoKQotICAgewotICAgICAgY293KCk7Ci0gICAgICBpZigwID09IHBkYXRhLT5uZXh0KCkpCi0gICAgICB7Ci0gICAgICAgICBwZGF0YS5yZXNldCgpOwotICAgICAgfQotICAgICAgcmV0dXJuICp0aGlzOwotICAgfQotICAgcmVnZXhfaXRlcmF0b3Igb3BlcmF0b3IrKyhpbnQpCi0gICB7Ci0gICAgICByZWdleF9pdGVyYXRvciByZXN1bHQoKnRoaXMpOwotICAgICAgKysoKnRoaXMpOwotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgIH0KLXByaXZhdGU6Ci0KLSAgIHBpbXBsIHBkYXRhOwotCi0gICB2b2lkIGNvdygpCi0gICB7Ci0gICAgICAvLyBjb3B5LW9uLXdyaXRlCi0gICAgICBpZihwZGF0YS5nZXQoKSAmJiAhcGRhdGEudW5pcXVlKCkpCi0gICAgICB7Ci0gICAgICAgICBwZGF0YS5yZXNldChuZXcgaW1wbCgqKHBkYXRhLmdldCgpKSkpOwotICAgICAgfQotICAgfQotfTsKLQotdHlwZWRlZiByZWdleF9pdGVyYXRvcjxjb25zdCBjaGFyKj4gY3JlZ2V4X2l0ZXJhdG9yOwotdHlwZWRlZiByZWdleF9pdGVyYXRvcjxzdGQ6OnN0cmluZzo6Y29uc3RfaXRlcmF0b3I+IHNyZWdleF9pdGVyYXRvcjsKLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi10eXBlZGVmIHJlZ2V4X2l0ZXJhdG9yPGNvbnN0IHdjaGFyX3QqPiB3Y3JlZ2V4X2l0ZXJhdG9yOwotdHlwZWRlZiByZWdleF9pdGVyYXRvcjxzdGQ6OndzdHJpbmc6OmNvbnN0X2l0ZXJhdG9yPiB3c3JlZ2V4X2l0ZXJhdG9yOwotI2VuZGlmCi0KLS8vIG1ha2VfcmVnZXhfaXRlcmF0b3I6Ci10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWlubGluZSByZWdleF9pdGVyYXRvcjxjb25zdCBjaGFyVCosIGNoYXJULCB0cmFpdHM+IG1ha2VfcmVnZXhfaXRlcmF0b3IoY29uc3QgY2hhclQqIHAsIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBlLCByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBtID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X2l0ZXJhdG9yPGNvbnN0IGNoYXJUKiwgY2hhclQsIHRyYWl0cz4ocCwgcCt0cmFpdHM6Omxlbmd0aChwKSwgZSwgbSk7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgU1QsIGNsYXNzIFNBPgotaW5saW5lIHJlZ2V4X2l0ZXJhdG9yPHR5cGVuYW1lIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBTVCwgU0E+Ojpjb25zdF9pdGVyYXRvciwgY2hhclQsIHRyYWl0cz4gbWFrZV9yZWdleF9pdGVyYXRvcihjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgU1QsIFNBPiYgcCwgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUsIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIG0gPSByZWdleF9jb25zdGFudHM6Om1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfaXRlcmF0b3I8dHlwZW5hbWUgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFNULCBTQT46OmNvbnN0X2l0ZXJhdG9yLCBjaGFyVCwgdHJhaXRzPihwLmJlZ2luKCksIHAuZW5kKCksIGUsIG0pOwotfQotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SRUdFWF9WNF9SRUdFWF9JVEVSQVRPUl9IUFAKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF9tYXRjaC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X21hdGNoLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODFmOWI5Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X21hdGNoLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM4MiArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgcmVnZXhfbWF0Y2guaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBSZWd1bGFyIGV4cHJlc3Npb24gbWF0Y2hpbmcgYWxnb3JpdGhtcy4KLSAgKiAgICAgICAgICAgICAgICBOb3RlIHRoaXMgaXMgYW4gaW50ZXJuYWwgaGVhZGVyIGZpbGUgaW5jbHVkZWQKLSAgKiAgICAgICAgICAgICAgICBieSByZWdleC5ocHAsIGRvIG5vdCBpbmNsdWRlIG9uIGl0cyBvd24uCi0gICovCi0KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9NQVRDSF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfTUFUQ0hfSFBQCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0vLwotLy8gcHJvYyByZWdleF9tYXRjaAotLy8gcmV0dXJucyB0cnVlIGlmIHRoZSBzcGVjaWZpZWQgcmVndWxhciBleHByZXNzaW9uIG1hdGNoZXMKLS8vIHRoZSB3aG9sZSBvZiB0aGUgaW5wdXQuICBGaWxscyBpbiB3aGF0IG1hdGNoZWQgaW4gbS4KLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1ib29sIHJlZ2V4X21hdGNoKEJpZGlJdGVyYXRvciBmaXJzdCwgQmlkaUl0ZXJhdG9yIGxhc3QsIAotICAgICAgICAgICAgICAgICBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yPiYgbSwgCi0gICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJlX2RldGFpbDo6cGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+IG1hdGNoZXIoZmlyc3QsIGxhc3QsIG0sIGUsIGZsYWdzLCBmaXJzdCk7Ci0gICByZXR1cm4gbWF0Y2hlci5tYXRjaCgpOwotfQotdGVtcGxhdGUgPGNsYXNzIGl0ZXJhdG9yLCBjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotYm9vbCByZWdleF9tYXRjaChpdGVyYXRvciBmaXJzdCwgaXRlcmF0b3IgbGFzdCwgCi0gICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8aXRlcmF0b3I+IG07Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2goZmlyc3QsIGxhc3QsIG0sIGUsIGZsYWdzIHwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpOwotfQotLy8KLS8vIHF1ZXJ5X21hdGNoIGNvbnZlbmllbmNlIGludGVyZmFjZXM6Ci0jaWZuZGVmIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HCi0vLwotLy8gdGhpcyBpc24ndCByZWFsbHkgYSBwYXJ0aWFsIHNwZWNpYWxpc2F0aW9uLCBidXQgdGVtcGxhdGUgZnVuY3Rpb24KLS8vIG92ZXJsb2FkaW5nIC0gaWYgdGhlIGNvbXBpbGVyIGRvZXNuJ3Qgc3VwcG9ydCBwYXJ0aWFsIHNwZWNpYWxpc2F0aW9uCi0vLyB0aGVuIGl0IHJlYWxseSB3b24ndCBzdXBwb3J0IHRoaXMgZWl0aGVyOgotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IGNoYXJUKiBzdHIsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxjb25zdCBjaGFyVCosIEFsbG9jYXRvcj4mIG0sIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9tYXRjaChzdHIsIHN0ciArIHRyYWl0czo6bGVuZ3RoKHN0ciksIG0sIGUsIGZsYWdzKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFNULCBjbGFzcyBTQSwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFNULCBTQT4mIHMsIAotICAgICAgICAgICAgICAgICBtYXRjaF9yZXN1bHRzPHR5cGVuYW1lIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBTVCwgU0E+Ojpjb25zdF9pdGVyYXRvciwgQWxsb2NhdG9yPiYgbSwgCi0gICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9tYXRjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzKTsKLX0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3QgY2hhclQqIHN0ciwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxjb25zdCBjaGFyVCo+IG07Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2goc3RyLCBzdHIgKyB0cmFpdHM6Omxlbmd0aChzdHIpLCBtLCBlLCBmbGFncyB8IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFNULCBjbGFzcyBTQSwgY2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBTVCwgU0E+JiBzLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgU1QsIFNBPjo6Y29uc3RfaXRlcmF0b3IgaXRlcmF0b3I7Ci0gICBtYXRjaF9yZXN1bHRzPGl0ZXJhdG9yPiBtOwotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHMuYmVnaW4oKSwgcy5lbmQoKSwgbSwgZSwgZmxhZ3MgfCByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSk7Ci19Ci0jZWxzZSAgLy8gcGFydGlhbCBvcmRlcmluZwotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3QgY2hhciogc3RyLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNtYXRjaCYgbSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHN0ciwgc3RyICsgcmVnZXg6OnRyYWl0c190eXBlOjpsZW5ndGgoc3RyKSwgbSwgZSwgZmxhZ3MpOwotfQotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3QgY2hhciogc3RyLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPGNvbnN0IGNoYXIqPiBtOwotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHN0ciwgc3RyICsgcmVnZXg6OnRyYWl0c190eXBlOjpsZW5ndGgoc3RyKSwgbSwgZSwgZmxhZ3MgfCByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSk7Ci19Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9MT0NBTEUKLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IGNoYXIqIHN0ciwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjbWF0Y2gmIG0sIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhciwgY3BwX3JlZ2V4X3RyYWl0czxjaGFyPiA+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2goc3RyLCBzdHIgKyByZWdleDo6dHJhaXRzX3R5cGU6Omxlbmd0aChzdHIpLCBtLCBlLCBmbGFncyk7Ci19Ci1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCBjaGFyKiBzdHIsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhciwgY3BwX3JlZ2V4X3RyYWl0czxjaGFyPiA+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPGNvbnN0IGNoYXIqPiBtOwotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHN0ciwgc3RyICsgcmVnZXg6OnRyYWl0c190eXBlOjpsZW5ndGgoc3RyKSwgbSwgZSwgZmxhZ3MgfCByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSk7Ci19Ci0jZW5kaWYKLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IGNoYXIqIHN0ciwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjbWF0Y2gmIG0sIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhciwgY19yZWdleF90cmFpdHM8Y2hhcj4gPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHN0ciwgc3RyICsgcmVnZXg6OnRyYWl0c190eXBlOjpsZW5ndGgoc3RyKSwgbSwgZSwgZmxhZ3MpOwotfQotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3QgY2hhciogc3RyLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXIsIGNfcmVnZXhfdHJhaXRzPGNoYXI+ID4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8Y29uc3QgY2hhcio+IG07Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2goc3RyLCBzdHIgKyByZWdleDo6dHJhaXRzX3R5cGU6Omxlbmd0aChzdHIpLCBtLCBlLCBmbGFncyB8IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KTsKLX0KLSNpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoTkROQk9PU1RfUkVHRVhfTk9fVzMyKQotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3QgY2hhciogc3RyLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNtYXRjaCYgbSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyLCB3MzJfcmVnZXhfdHJhaXRzPGNoYXI+ID4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9tYXRjaChzdHIsIHN0ciArIHJlZ2V4Ojp0cmFpdHNfdHlwZTo6bGVuZ3RoKHN0ciksIG0sIGUsIGZsYWdzKTsKLX0KLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IGNoYXIqIHN0ciwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyLCB3MzJfcmVnZXhfdHJhaXRzPGNoYXI+ID4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8Y29uc3QgY2hhcio+IG07Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2goc3RyLCBzdHIgKyByZWdleDo6dHJhaXRzX3R5cGU6Omxlbmd0aChzdHIpLCBtLCBlLCBmbGFncyB8IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KTsKLX0KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9OT19XUkVHRVgKLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IHdjaGFyX3QqIHN0ciwgCi0gICAgICAgICAgICAgICAgICAgICAgICB3Y21hdGNoJiBtLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHN0ciwgc3RyICsgd3JlZ2V4Ojp0cmFpdHNfdHlwZTo6bGVuZ3RoKHN0ciksIG0sIGUsIGZsYWdzKTsKLX0KLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IHdjaGFyX3QqIHN0ciwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3cmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8Y29uc3Qgd2NoYXJfdCo+IG07Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2goc3RyLCBzdHIgKyB3cmVnZXg6OnRyYWl0c190eXBlOjpsZW5ndGgoc3RyKSwgbSwgZSwgZmxhZ3MgfCByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSk7Ci19Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9MT0NBTEUKLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IHdjaGFyX3QqIHN0ciwgCi0gICAgICAgICAgICAgICAgICAgICAgICB3Y21hdGNoJiBtLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PHdjaGFyX3QsIGNwcF9yZWdleF90cmFpdHM8d2NoYXJfdD4gPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHN0ciwgc3RyICsgd3JlZ2V4Ojp0cmFpdHNfdHlwZTo6bGVuZ3RoKHN0ciksIG0sIGUsIGZsYWdzKTsKLX0KLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IHdjaGFyX3QqIHN0ciwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDx3Y2hhcl90LCBjcHBfcmVnZXhfdHJhaXRzPHdjaGFyX3Q+ID4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8Y29uc3Qgd2NoYXJfdCo+IG07Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2goc3RyLCBzdHIgKyB3cmVnZXg6OnRyYWl0c190eXBlOjpsZW5ndGgoc3RyKSwgbSwgZSwgZmxhZ3MgfCByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSk7Ci19Ci0jZW5kaWYKLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IHdjaGFyX3QqIHN0ciwgCi0gICAgICAgICAgICAgICAgICAgICAgICB3Y21hdGNoJiBtLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PHdjaGFyX3QsIGNfcmVnZXhfdHJhaXRzPHdjaGFyX3Q+ID4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9tYXRjaChzdHIsIHN0ciArIHdyZWdleDo6dHJhaXRzX3R5cGU6Omxlbmd0aChzdHIpLCBtLCBlLCBmbGFncyk7Ci19Ci1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCB3Y2hhcl90KiBzdHIsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8d2NoYXJfdCwgY19yZWdleF90cmFpdHM8d2NoYXJfdD4gPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxjb25zdCB3Y2hhcl90Kj4gbTsKLSAgIHJldHVybiByZWdleF9tYXRjaChzdHIsIHN0ciArIHdyZWdleDo6dHJhaXRzX3R5cGU6Omxlbmd0aChzdHIpLCBtLCBlLCBmbGFncyB8IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KTsKLX0KLSNpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoTkROQk9PU1RfUkVHRVhfTk9fVzMyKQotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3Qgd2NoYXJfdCogc3RyLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIHdjbWF0Y2gmIG0sIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8d2NoYXJfdCwgdzMyX3JlZ2V4X3RyYWl0czx3Y2hhcl90PiA+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2goc3RyLCBzdHIgKyB3cmVnZXg6OnRyYWl0c190eXBlOjpsZW5ndGgoc3RyKSwgbSwgZSwgZmxhZ3MpOwotfQotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3Qgd2NoYXJfdCogc3RyLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PHdjaGFyX3QsIHczMl9yZWdleF90cmFpdHM8d2NoYXJfdD4gPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxjb25zdCB3Y2hhcl90Kj4gbTsKLSAgIHJldHVybiByZWdleF9tYXRjaChzdHIsIHN0ciArIHdyZWdleDo6dHJhaXRzX3R5cGU6Omxlbmd0aChzdHIpLCBtLCBlLCBmbGFncyB8IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KTsKLX0KLSNlbmRpZgotI2VuZGlmCi1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCBzdGQ6OnN0cmluZyYgcywgCi0gICAgICAgICAgICAgICAgICAgICAgICBzbWF0Y2gmIG0sCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHMuYmVnaW4oKSwgcy5lbmQoKSwgbSwgZSwgZmxhZ3MpOwotfQotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3Qgc3RkOjpzdHJpbmcmIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8c3RkOjpzdHJpbmc6OmNvbnN0X2l0ZXJhdG9yPiBtOwotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHMuYmVnaW4oKSwgcy5lbmQoKSwgbSwgZSwgZmxhZ3MgfCByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSk7Ci19Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9MT0NBTEUKLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IHN0ZDo6c3RyaW5nJiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIHNtYXRjaCYgbSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXIsIGNwcF9yZWdleF90cmFpdHM8Y2hhcj4gPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHMuYmVnaW4oKSwgcy5lbmQoKSwgbSwgZSwgZmxhZ3MpOwotfQotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3Qgc3RkOjpzdHJpbmcmIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhciwgY3BwX3JlZ2V4X3RyYWl0czxjaGFyPiA+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPHN0ZDo6c3RyaW5nOjpjb25zdF9pdGVyYXRvcj4gbTsKLSAgIHJldHVybiByZWdleF9tYXRjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzIHwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpOwotfQotI2VuZGlmCi1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCBzdGQ6OnN0cmluZyYgcywgCi0gICAgICAgICAgICAgICAgICAgICAgICBzbWF0Y2gmIG0sCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyLCBjX3JlZ2V4X3RyYWl0czxjaGFyPiA+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2gocy5iZWdpbigpLCBzLmVuZCgpLCBtLCBlLCBmbGFncyk7Ci19Ci1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCBzdGQ6OnN0cmluZyYgcywgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyLCBjX3JlZ2V4X3RyYWl0czxjaGFyPiA+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPHN0ZDo6c3RyaW5nOjpjb25zdF9pdGVyYXRvcj4gbTsKLSAgIHJldHVybiByZWdleF9tYXRjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzIHwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpOwotfQotI2lmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9OT19XMzIpCi1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCBzdGQ6OnN0cmluZyYgcywgCi0gICAgICAgICAgICAgICAgICAgICAgICBzbWF0Y2gmIG0sCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyLCB3MzJfcmVnZXhfdHJhaXRzPGNoYXI+ID4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9tYXRjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzKTsKLX0KLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IHN0ZDo6c3RyaW5nJiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXIsIHczMl9yZWdleF90cmFpdHM8Y2hhcj4gPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxzdGQ6OnN0cmluZzo6Y29uc3RfaXRlcmF0b3I+IG07Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2gocy5iZWdpbigpLCBzLmVuZCgpLCBtLCBlLCBmbGFncyB8IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KTsKLX0KLSNlbmRpZgotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1dSRUdFWCkKLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPHdjaGFyX3Q+JiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8c3RkOjpiYXNpY19zdHJpbmc8d2NoYXJfdD46OmNvbnN0X2l0ZXJhdG9yPiYgbSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHMuYmVnaW4oKSwgcy5lbmQoKSwgbSwgZSwgZmxhZ3MpOwotfQotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8d2NoYXJfdD4mIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd3JlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPHN0ZDo6YmFzaWNfc3RyaW5nPHdjaGFyX3Q+Ojpjb25zdF9pdGVyYXRvcj4gbTsKLSAgIHJldHVybiByZWdleF9tYXRjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzIHwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpOwotfQotI2lmbmRlZiBORE5CT09TVF9OT19TVERfTE9DQUxFCi1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzx3Y2hhcl90PiYgcywgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9yZXN1bHRzPHN0ZDo6YmFzaWNfc3RyaW5nPHdjaGFyX3Q+Ojpjb25zdF9pdGVyYXRvcj4mIG0sCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDx3Y2hhcl90LCBjcHBfcmVnZXhfdHJhaXRzPHdjaGFyX3Q+ID4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9tYXRjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzKTsKLX0KLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPHdjaGFyX3Q+JiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PHdjaGFyX3QsIGNwcF9yZWdleF90cmFpdHM8d2NoYXJfdD4gPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxzdGQ6OmJhc2ljX3N0cmluZzx3Y2hhcl90Pjo6Y29uc3RfaXRlcmF0b3I+IG07Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2gocy5iZWdpbigpLCBzLmVuZCgpLCBtLCBlLCBmbGFncyB8IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KTsKLX0KLSNlbmRpZgotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8d2NoYXJfdD4mIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxzdGQ6OmJhc2ljX3N0cmluZzx3Y2hhcl90Pjo6Y29uc3RfaXRlcmF0b3I+JiBtLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8d2NoYXJfdCwgY19yZWdleF90cmFpdHM8d2NoYXJfdD4gPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHMuYmVnaW4oKSwgcy5lbmQoKSwgbSwgZSwgZmxhZ3MpOwotfQotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8d2NoYXJfdD4mIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8d2NoYXJfdCwgY19yZWdleF90cmFpdHM8d2NoYXJfdD4gPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxzdGQ6OmJhc2ljX3N0cmluZzx3Y2hhcl90Pjo6Y29uc3RfaXRlcmF0b3I+IG07Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2gocy5iZWdpbigpLCBzLmVuZCgpLCBtLCBlLCBmbGFncyB8IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KTsKLX0KLSNpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoTkROQk9PU1RfUkVHRVhfTk9fVzMyKQotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8d2NoYXJfdD4mIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxzdGQ6OmJhc2ljX3N0cmluZzx3Y2hhcl90Pjo6Y29uc3RfaXRlcmF0b3I+JiBtLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8d2NoYXJfdCwgdzMyX3JlZ2V4X3RyYWl0czx3Y2hhcl90PiA+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2gocy5iZWdpbigpLCBzLmVuZCgpLCBtLCBlLCBmbGFncyk7Ci19Ci1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzx3Y2hhcl90PiYgcywgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDx3Y2hhcl90LCB3MzJfcmVnZXhfdHJhaXRzPHdjaGFyX3Q+ID4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8c3RkOjpiYXNpY19zdHJpbmc8d2NoYXJfdD46OmNvbnN0X2l0ZXJhdG9yPiBtOwotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHMuYmVnaW4oKSwgcy5lbmQoKSwgbSwgZSwgZmxhZ3MgfCByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSk7Ci19Ci0jZW5kaWYKLSNlbmRpZgotCi0jZW5kaWYKLQotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgIC8vIE5ETkJPT1NUX1JFR0VYX01BVENIX0hQUAotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF9tZXJnZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X21lcmdlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjFiOTE0Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X21lcmdlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICByZWdleF9mb3JtYXQuaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBQcm92aWRlcyBmb3JtYXR0aW5nIG91dHB1dCByb3V0aW5lcyBmb3Igc2VhcmNoIGFuZCByZXBsYWNlCi0gICogICAgICAgICAgICAgICAgb3BlcmF0aW9ucy4gIE5vdGUgdGhpcyBpcyBhbiBpbnRlcm5hbCBoZWFkZXIgZmlsZSBpbmNsdWRlZAotICAqICAgICAgICAgICAgICAgIGJ5IHJlZ2V4LmhwcCwgZG8gbm90IGluY2x1ZGUgb24gaXRzIG93bi4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9SRUdFWF9NRVJHRV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfVjRfUkVHRVhfTUVSR0VfSFBQCi0KLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvciwgY2xhc3MgSXRlcmF0b3IsIGNsYXNzIHRyYWl0cywgY2xhc3MgY2hhclQ+Ci1pbmxpbmUgT3V0cHV0SXRlcmF0b3IgcmVnZXhfbWVyZ2UoT3V0cHV0SXRlcmF0b3Igb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdG9yIGZpcnN0LAotICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdG9yIGxhc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXJUKiBmbXQsIAotICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfcmVwbGFjZShvdXQsIGZpcnN0LCBsYXN0LCBlLCBmbXQsIGZsYWdzKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBJdGVyYXRvciwgY2xhc3MgdHJhaXRzLCBjbGFzcyBjaGFyVD4KLWlubGluZSBPdXRwdXRJdGVyYXRvciByZWdleF9tZXJnZShPdXRwdXRJdGVyYXRvciBvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0b3IgZmlyc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0b3IgbGFzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+JiBmbXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9tZXJnZShvdXQsIGZpcnN0LCBsYXN0LCBlLCBmbXQuY19zdHIoKSwgZmxhZ3MpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgdHJhaXRzLCBjbGFzcyBjaGFyVD4KLWlubGluZSBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4gcmVnZXhfbWVyZ2UoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+JiBzLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyVCogZm10LAotICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfcmVwbGFjZShzLCBlLCBmbXQsIGZsYWdzKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIHRyYWl0cywgY2xhc3MgY2hhclQ+Ci1pbmxpbmUgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+IHJlZ2V4X21lcmdlKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiYgcywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+JiBmbXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9yZXBsYWNlKHMsIGUsIGZtdCwgZmxhZ3MpOwotfQotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gTkROQk9PU1RfUkVHRVhfVjRfUkVHRVhfTUVSR0VfSFBQCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF9yYXdfYnVmZmVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfcmF3X2J1ZmZlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5OTAzNTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF9yYXdfYnVmZmVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxMCArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgcmVnZXhfcmF3X2J1ZmZlci5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IFJhdyBjaGFyYWN0ZXIgYnVmZmVyIGZvciByZWdleCBjb2RlLgotICAqICAgICAgICAgICAgICAgIE5vdGUgdGhpcyBpcyBhbiBpbnRlcm5hbCBoZWFkZXIgZmlsZSBpbmNsdWRlZAotICAqICAgICAgICAgICAgICAgIGJ5IHJlZ2V4LmhwcCwgZG8gbm90IGluY2x1ZGUgb24gaXRzIG93bi4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9SQVdfQlVGRkVSX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9SQVdfQlVGRkVSX0hQUAotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0NPTkZJR19IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC9jb25maWcuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4KLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotICAgbmFtZXNwYWNlIHJlX2RldGFpbHsKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi1zdHJ1Y3QgZW1wdHlfcGFkZGluZ3t9OwotCi11bmlvbiBwYWRkaW5nCi17Ci0gICB2b2lkKiBwOwotICAgdW5zaWduZWQgaW50IGk7Ci19OwotCi10ZW1wbGF0ZSA8aW50IE4+Ci1zdHJ1Y3QgcGFkZGluZzMKLXsKLSAgIGVudW17Ci0gICAgICBwYWRkaW5nX3NpemUgPSA4LAotICAgICAgcGFkZGluZ19tYXNrID0gNwotICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwYWRkaW5nMzwyPgotewotICAgZW51bXsKLSAgICAgIHBhZGRpbmdfc2l6ZSA9IDIsCi0gICAgICBwYWRkaW5nX21hc2sgPSAxCi0gICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBhZGRpbmczPDQ+Ci17Ci0gICBlbnVtewotICAgICAgcGFkZGluZ19zaXplID0gNCwKLSAgICAgIHBhZGRpbmdfbWFzayA9IDMKLSAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcGFkZGluZzM8OD4KLXsKLSAgIGVudW17Ci0gICAgICBwYWRkaW5nX3NpemUgPSA4LAotICAgICAgcGFkZGluZ19tYXNrID0gNwotICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwYWRkaW5nMzwxNj4KLXsKLSAgIGVudW17Ci0gICAgICBwYWRkaW5nX3NpemUgPSAxNiwKLSAgICAgIHBhZGRpbmdfbWFzayA9IDE1Ci0gICB9OwotfTsKLQotZW51bXsKLSAgIHBhZGRpbmdfc2l6ZSA9IHBhZGRpbmczPHNpemVvZihwYWRkaW5nKT46OnBhZGRpbmdfc2l6ZSwKLSAgIHBhZGRpbmdfbWFzayA9IHBhZGRpbmczPHNpemVvZihwYWRkaW5nKT46OnBhZGRpbmdfbWFzawotfTsKLQotLy8KLS8vIGNsYXNzIHJhd19zdG9yYWdlCi0vLyBiYXNpY2FsbHkgdGhpcyBpcyBhIHNpbXBsaWZpZWQgdmVjdG9yPHVuc2lnbmVkIGNoYXI+Ci0vLyB0aGlzIGlzIHVzZWQgYnkgYmFzaWNfcmVnZXggZm9yIGV4cHJlc3Npb24gc3RvcmFnZQotLy8KLQotY2xhc3MgTkROQk9PU1RfUkVHRVhfREVDTCByYXdfc3RvcmFnZQotewotcHVibGljOgotICAgdHlwZWRlZiBzdGQ6OnNpemVfdCAgICAgICAgICAgc2l6ZV90eXBlOwotICAgdHlwZWRlZiB1bnNpZ25lZCBjaGFyKiAgICAgICAgcG9pbnRlcjsKLXByaXZhdGU6Ci0gICBwb2ludGVyIGxhc3QsIHN0YXJ0LCBlbmQ7Ci1wdWJsaWM6Ci0KLSAgIHJhd19zdG9yYWdlKCk7Ci0gICByYXdfc3RvcmFnZShzaXplX3R5cGUgbik7Ci0KLSAgIH5yYXdfc3RvcmFnZSgpCi0gICB7Ci0gICAgICA6Om9wZXJhdG9yIGRlbGV0ZShzdGFydCk7Ci0gICB9Ci0KLSAgIHZvaWQgTkROQk9PU1RfUkVHRVhfQ0FMTCByZXNpemUoc2l6ZV90eXBlIG4pOwotICAgCi0gICB2b2lkKiBORE5CT09TVF9SRUdFWF9DQUxMIGV4dGVuZChzaXplX3R5cGUgbikKLSAgIHsKLSAgICAgIGlmKHNpemVfdHlwZShsYXN0IC0gZW5kKSA8IG4pCi0gICAgICAgICByZXNpemUobiArIChlbmQgLSBzdGFydCkpOwotICAgICAgcmVnaXN0ZXIgcG9pbnRlciByZXN1bHQgPSBlbmQ7Ci0gICAgICBlbmQgKz0gbjsKLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gICB9Ci0KLSAgIHZvaWQqIE5ETkJPT1NUX1JFR0VYX0NBTEwgaW5zZXJ0KHNpemVfdHlwZSBwb3MsIHNpemVfdHlwZSBuKTsKLQotICAgc2l6ZV90eXBlIE5ETkJPT1NUX1JFR0VYX0NBTEwgc2l6ZSgpCi0gICB7Ci0gICAgICByZXR1cm4gZW5kIC0gc3RhcnQ7Ci0gICB9Ci0KLSAgIHNpemVfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIGNhcGFjaXR5KCkKLSAgIHsKLSAgICAgIHJldHVybiBsYXN0IC0gc3RhcnQ7Ci0gICB9Ci0KLSAgIHZvaWQqIE5ETkJPT1NUX1JFR0VYX0NBTEwgZGF0YSgpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBzdGFydDsKLSAgIH0KLQotICAgc2l6ZV90eXBlIE5ETkJPT1NUX1JFR0VYX0NBTEwgaW5kZXgodm9pZCogcHRyKQotICAgewotICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHBvaW50ZXI+KHB0cikgLSBzdGF0aWNfY2FzdDxwb2ludGVyPihkYXRhKCkpOwotICAgfQotCi0gICB2b2lkIE5ETkJPT1NUX1JFR0VYX0NBTEwgY2xlYXIoKQotICAgewotICAgICAgZW5kID0gc3RhcnQ7Ci0gICB9Ci0KLSAgIHZvaWQgTkROQk9PU1RfUkVHRVhfQ0FMTCBhbGlnbigpCi0gICB7Ci0gICAgICAvLyBtb3ZlIGVuZCB1cCB0byBhIGJvdW5kYXJ5OgotICAgICAgZW5kID0gc3RhcnQgKyAoKChlbmQgLSBzdGFydCkgKyBwYWRkaW5nX21hc2spICYgfnBhZGRpbmdfbWFzayk7Ci0gICB9Ci0gICB2b2lkIHN3YXAocmF3X3N0b3JhZ2UmIHRoYXQpCi0gICB7Ci0gICAgICBzdGQ6OnN3YXAoc3RhcnQsIHRoYXQuc3RhcnQpOwotICAgICAgc3RkOjpzd2FwKGVuZCwgdGhhdC5lbmQpOwotICAgICAgc3RkOjpzd2FwKGxhc3QsIHRoYXQubGFzdCk7Ci0gIH0KLX07Ci0KLWlubGluZSByYXdfc3RvcmFnZTo6cmF3X3N0b3JhZ2UoKQotewotICAgbGFzdCA9IHN0YXJ0ID0gZW5kID0gMDsKLX0KLQotaW5saW5lIHJhd19zdG9yYWdlOjpyYXdfc3RvcmFnZShzaXplX3R5cGUgbikKLXsKLSAgIHN0YXJ0ID0gZW5kID0gc3RhdGljX2Nhc3Q8cG9pbnRlcj4oOjpvcGVyYXRvciBuZXcobikpOwotICAgTkROQk9PU1RfUkVHRVhfTk9FSF9BU1NFUlQoc3RhcnQpCi0gICBsYXN0ID0gc3RhcnQgKyBuOwotfQotCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgcmVfZGV0YWlsCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYKLQotCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfcmVwbGFjZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3JlcGxhY2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYjI0ZmE4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfcmVwbGFjZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA5Ci0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgcmVnZXhfZm9ybWF0LmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogUHJvdmlkZXMgZm9ybWF0dGluZyBvdXRwdXQgcm91dGluZXMgZm9yIHNlYXJjaCBhbmQgcmVwbGFjZQotICAqICAgICAgICAgICAgICAgIG9wZXJhdGlvbnMuICBOb3RlIHRoaXMgaXMgYW4gaW50ZXJuYWwgaGVhZGVyIGZpbGUgaW5jbHVkZWQKLSAgKiAgICAgICAgICAgICAgICBieSByZWdleC5ocHAsIGRvIG5vdCBpbmNsdWRlIG9uIGl0cyBvd24uCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfUkVHRVhfUkVQTEFDRV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfVjRfUkVHRVhfUkVQTEFDRV9IUFAKLQotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBCaWRpcmVjdGlvbmFsSXRlcmF0b3IsIGNsYXNzIHRyYWl0cywgY2xhc3MgY2hhclQsIGNsYXNzIEZvcm1hdHRlcj4KLU91dHB1dEl0ZXJhdG9yIHJlZ2V4X3JlcGxhY2UoT3V0cHV0SXRlcmF0b3Igb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBmaXJzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgbGFzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0dGVyIGZtdCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJlZ2V4X2l0ZXJhdG9yPEJpZGlyZWN0aW9uYWxJdGVyYXRvciwgY2hhclQsIHRyYWl0cz4gaShmaXJzdCwgbGFzdCwgZSwgZmxhZ3MpOwotICAgcmVnZXhfaXRlcmF0b3I8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yLCBjaGFyVCwgdHJhaXRzPiBqOwotICAgaWYoaSA9PSBqKQotICAgewotICAgICAgaWYoIShmbGFncyAmIHJlZ2V4X2NvbnN0YW50czo6Zm9ybWF0X25vX2NvcHkpKQotICAgICAgICAgb3V0ID0gcmVfZGV0YWlsOjpjb3B5KGZpcnN0LCBsYXN0LCBvdXQpOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGxhc3RfbShmaXJzdCk7Ci0gICAgICB3aGlsZShpICE9IGopCi0gICAgICB7Ci0gICAgICAgICBpZighKGZsYWdzICYgcmVnZXhfY29uc3RhbnRzOjpmb3JtYXRfbm9fY29weSkpCi0gICAgICAgICAgICBvdXQgPSByZV9kZXRhaWw6OmNvcHkoaS0+cHJlZml4KCkuZmlyc3QsIGktPnByZWZpeCgpLnNlY29uZCwgb3V0KTsgCi0gICAgICAgICBvdXQgPSBpLT5mb3JtYXQob3V0LCBmbXQsIGZsYWdzLCBlKTsKLSAgICAgICAgIGxhc3RfbSA9ICgqaSlbMF0uc2Vjb25kOwotICAgICAgICAgaWYoZmxhZ3MgJiByZWdleF9jb25zdGFudHM6OmZvcm1hdF9maXJzdF9vbmx5KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICArK2k7Ci0gICAgICB9Ci0gICAgICBpZighKGZsYWdzICYgcmVnZXhfY29uc3RhbnRzOjpmb3JtYXRfbm9fY29weSkpCi0gICAgICAgICBvdXQgPSByZV9kZXRhaWw6OmNvcHkobGFzdF9tLCBsYXN0LCBvdXQpOwotICAgfQotICAgcmV0dXJuIG91dDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIHRyYWl0cywgY2xhc3MgY2hhclQsIGNsYXNzIEZvcm1hdHRlcj4KLXN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiByZWdleF9yZXBsYWNlKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiYgcywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0dGVyIGZtdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+IHJlc3VsdDsKLSAgIHJlX2RldGFpbDo6c3RyaW5nX291dF9pdGVyYXRvcjxzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4gPiBpKHJlc3VsdCk7Ci0gICByZWdleF9yZXBsYWNlKGksIHMuYmVnaW4oKSwgcy5lbmQoKSwgZSwgZm10LCBmbGFncyk7Ci0gICByZXR1cm4gcmVzdWx0OwotfQotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gTkROQk9PU1RfUkVHRVhfVjRfUkVHRVhfUkVQTEFDRV9IUFAKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3NlYXJjaC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3NlYXJjaC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhNDgwZmQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF9zZWFyY2guaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjE3ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICByZWdleF9zZWFyY2guaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBQcm92aWRlcyByZWdleF9zZWFyY2ggaW1wbGVtZW50YXRpb24uCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfUkVHRVhfU0VBUkNIX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9WNF9SRUdFWF9TRUFSQ0hfSFBQCi0KLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcmVnZXhfc2VhcmNoKEJpZGlJdGVyYXRvciBmaXJzdCwgQmlkaUl0ZXJhdG9yIGxhc3QsIAotICAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvcj4mIG0sIAotICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUsIAotICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9zZWFyY2goZmlyc3QsIGxhc3QsIG0sIGUsIGZsYWdzLCBmaXJzdCk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcmVnZXhfc2VhcmNoKEJpZGlJdGVyYXRvciBmaXJzdCwgQmlkaUl0ZXJhdG9yIGxhc3QsIAotICAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvcj4mIG0sIAotICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUsIAotICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzLAotICAgICAgICAgICAgICAgICAgQmlkaUl0ZXJhdG9yIGJhc2UpCi17Ci0gICBpZihlLmZsYWdzKCkgJiByZWdleF9jb25zdGFudHM6OmZhaWxiaXQpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgIHJlX2RldGFpbDo6cGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+IG1hdGNoZXIoZmlyc3QsIGxhc3QsIG0sIGUsIGZsYWdzLCBiYXNlKTsKLSAgIHJldHVybiBtYXRjaGVyLmZpbmQoKTsKLX0KLQotLy8KLS8vIHJlZ2V4X3NlYXJjaCBjb252ZW5pZW5jZSBpbnRlcmZhY2VzOgotI2lmbmRlZiBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORwotLy8KLS8vIHRoaXMgaXNuJ3QgcmVhbGx5IGEgcGFydGlhbCBzcGVjaWFsaXNhdGlvbiwgYnV0IHRlbXBsYXRlIGZ1bmN0aW9uCi0vLyBvdmVybG9hZGluZyAtIGlmIHRoZSBjb21waWxlciBkb2Vzbid0IHN1cHBvcnQgcGFydGlhbCBzcGVjaWFsaXNhdGlvbgotLy8gdGhlbiBpdCByZWFsbHkgd29uJ3Qgc3VwcG9ydCB0aGlzIGVpdGhlcjoKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1pbmxpbmUgYm9vbCByZWdleF9zZWFyY2goY29uc3QgY2hhclQqIHN0ciwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9yZXN1bHRzPGNvbnN0IGNoYXJUKiwgQWxsb2NhdG9yPiYgbSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X3NlYXJjaChzdHIsIHN0ciArIHRyYWl0czo6bGVuZ3RoKHN0ciksIG0sIGUsIGZsYWdzKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFNULCBjbGFzcyBTQSwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotaW5saW5lIGJvb2wgcmVnZXhfc2VhcmNoKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBTVCwgU0E+JiBzLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czx0eXBlbmFtZSBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgU1QsIFNBPjo6Y29uc3RfaXRlcmF0b3IsIEFsbG9jYXRvcj4mIG0sIAotICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfc2VhcmNoKHMuYmVnaW4oKSwgcy5lbmQoKSwgbSwgZSwgZmxhZ3MpOwotfQotI2Vsc2UgIC8vIHBhcnRpYWwgb3ZlcmxvYWRzOgotaW5saW5lIGJvb2wgcmVnZXhfc2VhcmNoKGNvbnN0IGNoYXIqIHN0ciwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjbWF0Y2gmIG0sIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9zZWFyY2goc3RyLCBzdHIgKyByZWdleDo6dHJhaXRzX3R5cGU6Omxlbmd0aChzdHIpLCBtLCBlLCBmbGFncyk7Ci19Ci1pbmxpbmUgYm9vbCByZWdleF9zZWFyY2goY29uc3QgY2hhciogZmlyc3QsIGNvbnN0IGNoYXIqIGxhc3QsIAotICAgICAgICAgICAgICAgICAgY29uc3QgcmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIGNtYXRjaCBtOwotICAgcmV0dXJuIHJlZ2V4X3NlYXJjaChmaXJzdCwgbGFzdCwgbSwgZSwgZmxhZ3MgfCByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSk7Ci19Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi1pbmxpbmUgYm9vbCByZWdleF9zZWFyY2goY29uc3Qgd2NoYXJfdCogc3RyLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIHdjbWF0Y2gmIG0sIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd3JlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfc2VhcmNoKHN0ciwgc3RyICsgd3JlZ2V4Ojp0cmFpdHNfdHlwZTo6bGVuZ3RoKHN0ciksIG0sIGUsIGZsYWdzKTsKLX0KLWlubGluZSBib29sIHJlZ2V4X3NlYXJjaChjb25zdCB3Y2hhcl90KiBmaXJzdCwgY29uc3Qgd2NoYXJfdCogbGFzdCwgCi0gICAgICAgICAgICAgICAgICBjb25zdCB3cmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHdjbWF0Y2ggbTsKLSAgIHJldHVybiByZWdleF9zZWFyY2goZmlyc3QsIGxhc3QsIG0sIGUsIGZsYWdzIHwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpOwotfQotI2VuZGlmCi1pbmxpbmUgYm9vbCByZWdleF9zZWFyY2goY29uc3Qgc3RkOjpzdHJpbmcmIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgc21hdGNoJiBtLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9zZWFyY2gocy5iZWdpbigpLCBzLmVuZCgpLCBtLCBlLCBmbGFncyk7Ci19Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fV1JFR0VYKQotaW5saW5lIGJvb2wgcmVnZXhfc2VhcmNoKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPHdjaGFyX3Q+JiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIHdzbWF0Y2gmIG0sCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3cmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9zZWFyY2gocy5iZWdpbigpLCBzLmVuZCgpLCBtLCBlLCBmbGFncyk7Ci19Ci0jZW5kaWYKLQotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1ib29sIHJlZ2V4X3NlYXJjaChCaWRpSXRlcmF0b3IgZmlyc3QsIEJpZGlJdGVyYXRvciBsYXN0LCAKLSAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBlLCAKLSAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBpZihlLmZsYWdzKCkgJiByZWdleF9jb25zdGFudHM6OmZhaWxiaXQpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgIG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yPiBtOwotICAgdHlwZWRlZiB0eXBlbmFtZSBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvcj46OmFsbG9jYXRvcl90eXBlIG1hdGNoX2FsbG9jX3R5cGU7Ci0gICByZV9kZXRhaWw6OnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIG1hdGNoX2FsbG9jX3R5cGUsIHRyYWl0cz4gbWF0Y2hlcihmaXJzdCwgbGFzdCwgbSwgZSwgZmxhZ3MgfCByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSwgZmlyc3QpOwotICAgcmV0dXJuIG1hdGNoZXIuZmluZCgpOwotfQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HCi0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotaW5saW5lIGJvb2wgcmVnZXhfc2VhcmNoKGNvbnN0IGNoYXJUKiBzdHIsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9zZWFyY2goc3RyLCBzdHIgKyB0cmFpdHM6Omxlbmd0aChzdHIpLCBlLCBmbGFncyk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBTVCwgY2xhc3MgU0EsIGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1pbmxpbmUgYm9vbCByZWdleF9zZWFyY2goY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFNULCBTQT4mIHMsIAotICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfc2VhcmNoKHMuYmVnaW4oKSwgcy5lbmQoKSwgZSwgZmxhZ3MpOwotfQotI2Vsc2UgIC8vIG5vbi10ZW1wbGF0ZSBmdW5jdGlvbiBvdmVybG9hZHMKLWlubGluZSBib29sIHJlZ2V4X3NlYXJjaChjb25zdCBjaGFyKiBzdHIsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIGNtYXRjaCBtOwotICAgcmV0dXJuIHJlZ2V4X3NlYXJjaChzdHIsIHN0ciArIHJlZ2V4Ojp0cmFpdHNfdHlwZTo6bGVuZ3RoKHN0ciksIG0sIGUsIGZsYWdzIHwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpOwotfQotI2lmbmRlZiBORE5CT09TVF9OT19XUkVHRVgKLWlubGluZSBib29sIHJlZ2V4X3NlYXJjaChjb25zdCB3Y2hhcl90KiBzdHIsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd3JlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICB3Y21hdGNoIG07Ci0gICByZXR1cm4gcmVnZXhfc2VhcmNoKHN0ciwgc3RyICsgd3JlZ2V4Ojp0cmFpdHNfdHlwZTo6bGVuZ3RoKHN0ciksIG0sIGUsIGZsYWdzIHwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpOwotfQotI2VuZGlmCi1pbmxpbmUgYm9vbCByZWdleF9zZWFyY2goY29uc3Qgc3RkOjpzdHJpbmcmIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHNtYXRjaCBtOwotICAgcmV0dXJuIHJlZ2V4X3NlYXJjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzIHwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpOwotfQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1dSRUdFWCkKLWlubGluZSBib29sIHJlZ2V4X3NlYXJjaChjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzx3Y2hhcl90PiYgcywgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3cmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHdzbWF0Y2ggbTsKLSAgIHJldHVybiByZWdleF9zZWFyY2gocy5iZWdpbigpLCBzLmVuZCgpLCBtLCBlLCBmbGFncyB8IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KTsKLX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1dSRUdFWAotCi0jZW5kaWYgLy8gcGFydGlhbCBvdmVybG9hZAotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gTkROQk9PU1RfUkVHRVhfVjRfUkVHRVhfU0VBUkNIX0hQUAotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfc3BsaXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF9zcGxpdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkYzY3YjMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF9zcGxpdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNzIgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLSAKLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICByZWdleF9zcGxpdC5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IEltcGxlbWVudHMgcmVnZXhfc3BsaXQgYW5kIGFzc29jaWF0ZWQgZnVuY3Rpb25zLgotICAqICAgICAgICAgICAgICAgIE5vdGUgdGhpcyBpcyBhbiBpbnRlcm5hbCBoZWFkZXIgZmlsZSBpbmNsdWRlZAotICAqICAgICAgICAgICAgICAgIGJ5IHJlZ2V4LmhwcCwgZG8gbm90IGluY2x1ZGUgb24gaXRzIG93bi4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9TUExJVF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfU1BMSVRfSFBQCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ4MDApCi0jZW5kaWYKLQotbmFtZXNwYWNlIHJlX2RldGFpbHsKLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQ+JiBnZXRfZGVmYXVsdF9leHByZXNzaW9uKGNoYXJUKQotewotICAgc3RhdGljIGNvbnN0IGNoYXJUIGV4cHJlc3Npb25fdGV4dFs0XSA9IHsgJ1xcJywgJ3MnLCAnKycsICdcMDAnLCB9OwotICAgc3RhdGljIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJUPiBlKGV4cHJlc3Npb25fdGV4dCk7Ci0gICByZXR1cm4gZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBjaGFyVCwgY2xhc3MgVHJhaXRzMSwgY2xhc3MgQWxsb2MxPgotY2xhc3Mgc3BsaXRfcHJlZAotewotICAgdHlwZWRlZiBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgVHJhaXRzMSwgQWxsb2MxPiBzdHJpbmdfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgc3RyaW5nX3R5cGU6OmNvbnN0X2l0ZXJhdG9yIGl0ZXJhdG9yX3R5cGU7Ci0gICBpdGVyYXRvcl90eXBlKiBwX2xhc3Q7Ci0gICBPdXRwdXRJdGVyYXRvciogcF9vdXQ7Ci0gICBzdGQ6OnNpemVfdCogcF9tYXg7Ci0gICBzdGQ6OnNpemVfdCBpbml0aWFsX21heDsKLXB1YmxpYzoKLSAgIHNwbGl0X3ByZWQoaXRlcmF0b3JfdHlwZSogYSwgT3V0cHV0SXRlcmF0b3IqIGIsIHN0ZDo6c2l6ZV90KiBjKQotICAgICAgOiBwX2xhc3QoYSksIHBfb3V0KGIpLCBwX21heChjKSwgaW5pdGlhbF9tYXgoKmMpIHt9Ci0KLSAgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBtYXRjaF9yZXN1bHRzPGl0ZXJhdG9yX3R5cGU+JiB3aGF0KTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvciwgY2xhc3MgY2hhclQsIGNsYXNzIFRyYWl0czEsIGNsYXNzIEFsbG9jMT4KLWJvb2wgc3BsaXRfcHJlZDxPdXRwdXRJdGVyYXRvciwgY2hhclQsIFRyYWl0czEsIEFsbG9jMT46Om9wZXJhdG9yKCkKLSAgIChjb25zdCBtYXRjaF9yZXN1bHRzPGl0ZXJhdG9yX3R5cGU+JiB3aGF0KQotewotICAgKnBfbGFzdCA9IHdoYXRbMF0uc2Vjb25kOwotICAgaWYod2hhdC5zaXplKCkgPiAxKQotICAgewotICAgICAgLy8gb3V0cHV0IHN1Yi1leHByZXNzaW9ucyBvbmx5OgotICAgICAgZm9yKHVuc2lnbmVkIGkgPSAxOyBpIDwgd2hhdC5zaXplKCk7ICsraSkKLSAgICAgIHsKLSAgICAgICAgICooKnBfb3V0KSA9IHdoYXQuc3RyKGkpOwotICAgICAgICAgKysoKnBfb3V0KTsKLSAgICAgICAgIGlmKDAgPT0gLS0qcF9tYXgpIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIHJldHVybiAqcF9tYXggIT0gMDsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIC8vIG91dHB1dCAkYCBvbmx5IGlmIGl0J3Mgbm90LW51bGwgb3Igbm90IGF0IHRoZSBzdGFydCBvZiB0aGUgaW5wdXQ6Ci0gICAgICBjb25zdCBzdWJfbWF0Y2g8aXRlcmF0b3JfdHlwZT4mIHN1YiA9IHdoYXRbLTFdOwotICAgICAgaWYoKHN1Yi5maXJzdCAhPSBzdWIuc2Vjb25kKSB8fCAoKnBfbWF4ICE9IGluaXRpYWxfbWF4KSkKLSAgICAgIHsKLSAgICAgICAgICooKnBfb3V0KSA9IHN1Yi5zdHIoKTsKLSAgICAgICAgICsrKCpwX291dCk7Ci0gICAgICAgICByZXR1cm4gLS0qcF9tYXg7Ci0gICAgICB9Ci0gICB9Ci0gICAvLwotICAgLy8gaW5pdGlhbCBudWxsLCBkbyBub3RoaW5nOgotICAgcmV0dXJuIHRydWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIHJlX2RldGFpbAotCi10ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcmF0b3IsIGNsYXNzIGNoYXJULCBjbGFzcyBUcmFpdHMxLCBjbGFzcyBBbGxvYzEsIGNsYXNzIFRyYWl0czI+Ci1zdGQ6OnNpemVfdCByZWdleF9zcGxpdChPdXRwdXRJdGVyYXRvciBvdXQsCi0gICAgICAgICAgICAgICAgICAgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFRyYWl0czEsIEFsbG9jMT4mIHMsIAotICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJULCBUcmFpdHMyPiYgZSwKLSAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgc3RkOjpzaXplX3QgbWF4X3NwbGl0KQotewotICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgVHJhaXRzMSwgQWxsb2MxPjo6Y29uc3RfaXRlcmF0b3IgIGNpX3Q7Ci0gICAvL3R5cGVkZWYgdHlwZW5hbWUgbWF0Y2hfcmVzdWx0czxjaV90Pjo6YWxsb2NhdG9yX3R5cGUgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9hbGxvY2F0b3I7Ci0gICBjaV90IGxhc3QgPSBzLmJlZ2luKCk7Ci0gICBzdGQ6OnNpemVfdCBpbml0X3NpemUgPSBtYXhfc3BsaXQ7Ci0gICByZV9kZXRhaWw6OnNwbGl0X3ByZWQ8T3V0cHV0SXRlcmF0b3IsIGNoYXJULCBUcmFpdHMxLCBBbGxvYzE+IHByZWQoJmxhc3QsICZvdXQsICZtYXhfc3BsaXQpOwotICAgY2lfdCBpLCBqOwotICAgaSA9IHMuYmVnaW4oKTsKLSAgIGogPSBzLmVuZCgpOwotICAgcmVnZXhfZ3JlcChwcmVkLCBpLCBqLCBlLCBmbGFncyk7Ci0gICAvLwotICAgLy8gaWYgdGhlcmUgaXMgc3RpbGwgaW5wdXQgbGVmdCwgZG8gYSBmaW5hbCBwdXNoIGFzIGxvbmcgYXMgbWF4X3NwbGl0Ci0gICAvLyBpcyBub3QgZXhoYXVzdGVkLCBhbmQgd2UncmUgbm90IHNwbGl0dGluZyBzdWItZXhwcmVzc2lvbnMgcmF0aGVyIAotICAgLy8gdGhhbiB3aGl0ZXNwYWNlOgotICAgaWYobWF4X3NwbGl0ICYmIChsYXN0ICE9IHMuZW5kKCkpICYmIChlLm1hcmtfY291bnQoKSA9PSAxKSkKLSAgIHsKLSAgICAgICpvdXQgPSBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgVHJhaXRzMSwgQWxsb2MxPigoY2lfdClsYXN0LCAoY2lfdClzLmVuZCgpKTsKLSAgICAgICsrb3V0OwotICAgICAgbGFzdCA9IHMuZW5kKCk7Ci0gICAgICAtLW1heF9zcGxpdDsKLSAgIH0KLSAgIC8vCi0gICAvLyBkZWxldGUgZnJvbSB0aGUgc3RyaW5nIGV2ZXJ5dGhpbmcgdGhhdCBoYXMgYmVlbiBwcm9jZXNzZWQgc28gZmFyOgotICAgcy5lcmFzZSgwLCBsYXN0IC0gcy5iZWdpbigpKTsKLSAgIC8vCi0gICAvLyByZXR1cm4gdGhlIG51bWJlciBvZiBuZXcgcmVjb3JkcyBwdXNoZWQ6Ci0gICByZXR1cm4gaW5pdF9zaXplIC0gbWF4X3NwbGl0OwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcmF0b3IsIGNsYXNzIGNoYXJULCBjbGFzcyBUcmFpdHMxLCBjbGFzcyBBbGxvYzEsIGNsYXNzIFRyYWl0czI+Ci1pbmxpbmUgc3RkOjpzaXplX3QgcmVnZXhfc3BsaXQoT3V0cHV0SXRlcmF0b3Igb3V0LAotICAgICAgICAgICAgICAgICAgIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBUcmFpdHMxLCBBbGxvYzE+JiBzLCAKLSAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgVHJhaXRzMj4mIGUsCi0gICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9zcGxpdChvdXQsIHMsIGUsIGZsYWdzLCBVSU5UX01BWCk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvciwgY2xhc3MgY2hhclQsIGNsYXNzIFRyYWl0czEsIGNsYXNzIEFsbG9jMT4KLWlubGluZSBzdGQ6OnNpemVfdCByZWdleF9zcGxpdChPdXRwdXRJdGVyYXRvciBvdXQsCi0gICAgICAgICAgICAgICAgICAgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFRyYWl0czEsIEFsbG9jMT4mIHMpCi17Ci0gICByZXR1cm4gcmVnZXhfc3BsaXQob3V0LCBzLCByZV9kZXRhaWw6OmdldF9kZWZhdWx0X2V4cHJlc3Npb24oY2hhclQoMCkpLCBtYXRjaF9kZWZhdWx0LCBVSU5UX01BWCk7Ci19Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jICBwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3Rva2VuX2l0ZXJhdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfdG9rZW5faXRlcmF0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjYxYzljLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfdG9rZW5faXRlcmF0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzQyICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDAzCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgcmVnZXhfdG9rZW5faXRlcmF0b3IuaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBQcm92aWRlcyByZWdleF90b2tlbl9pdGVyYXRvciBpbXBsZW1lbnRhdGlvbi4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9SRUdFWF9UT0tFTl9JVEVSQVRPUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfVjRfUkVHRVhfVE9LRU5fSVRFUkFUT1JfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9zaGFyZWRfcHRyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaWYgKE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA+PSAweDU2MCkgJiYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU3MCkpKVwKLSAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKSBcCi0gICAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDMwMDMpKQotLy8KLS8vIEJvcmxhbmQgQysrIEJ1aWxkZXIgNiwgYW5kIFZpc3VhbCBDKysgNiwKLS8vIGNhbid0IGNvcGUgd2l0aCB0aGUgYXJyYXkgdGVtcGxhdGUgY29uc3RydWN0b3IKLS8vIHNvIHdlIGhhdmUgYSB0ZW1wbGF0ZSBtZW1iZXIgdGhhdCB3aWxsIGFjY2VwdCBhbnkgdHlwZSBhcyAKLS8vIGFyZ3VtZW50LCBhbmQgdGhlbiBhc3NlcnQgdGhhdCBpcyByZWFsbHkgaXMgYW4gYXJyYXk6Ci0vLwotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FycmF5LmhwcD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID4gMTMwMCkKLSMgIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jICBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ3MDApCi0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlyZWN0aW9uYWxJdGVyYXRvciwKLSAgICAgICAgICBjbGFzcyBjaGFyVCwKLSAgICAgICAgICBjbGFzcyB0cmFpdHM+Ci1jbGFzcyByZWdleF90b2tlbl9pdGVyYXRvcl9pbXBsZW1lbnRhdGlvbiAKLXsKLSAgIHR5cGVkZWYgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4gcmVnZXhfdHlwZTsKLSAgIHR5cGVkZWYgc3ViX21hdGNoPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4gICAgICB2YWx1ZV90eXBlOwotCi0gICBtYXRjaF9yZXN1bHRzPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4gd2hhdDsgICAvLyBjdXJyZW50IG1hdGNoCi0gICBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgICAgICAgICAgICAgICAgYmFzZTsgICAgLy8gc3RhcnQgb2Ygc2VhcmNoIGFyZWEKLSAgIEJpZGlyZWN0aW9uYWxJdGVyYXRvciAgICAgICAgICAgICAgICBlbmQ7ICAgIC8vIGVuZCBvZiBzZWFyY2ggYXJlYQotICAgY29uc3QgcmVnZXhfdHlwZSAgICAgICAgICAgICAgICAgICAgIHJlOyAgICAvLyB0aGUgZXhwcmVzc2lvbgotICAgbWF0Y2hfZmxhZ190eXBlICAgICAgICAgICAgICAgICAgICAgIGZsYWdzOyAgLy8gbWF0Y2ggZmxhZ3MKLSAgIHZhbHVlX3R5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ7IC8vIHRoZSBjdXJyZW50IHN0cmluZyByZXN1bHQKLSAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOOyAgICAgIC8vIHRoZSBjdXJyZW50IHN1Yi1leHByZXNzaW9uIGJlaW5nIGVudW1lcmF0ZWQKLSAgIHN0ZDo6dmVjdG9yPGludD4gICAgICAgICAgICAgICAgICAgICBzdWJzOyAgIC8vIHRoZSBzdWItZXhwcmVzc2lvbnMgdG8gZW51bWVyYXRlCi0KLXB1YmxpYzoKLSAgIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yX2ltcGxlbWVudGF0aW9uKGNvbnN0IHJlZ2V4X3R5cGUqIHAsIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBsYXN0LCBpbnQgc3ViLCBtYXRjaF9mbGFnX3R5cGUgZikKLSAgICAgIDogZW5kKGxhc3QpLCByZSgqcCksIGZsYWdzKGYpeyBzdWJzLnB1c2hfYmFjayhzdWIpOyB9Ci0gICByZWdleF90b2tlbl9pdGVyYXRvcl9pbXBsZW1lbnRhdGlvbihjb25zdCByZWdleF90eXBlKiBwLCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgbGFzdCwgY29uc3Qgc3RkOjp2ZWN0b3I8aW50PiYgdiwgbWF0Y2hfZmxhZ190eXBlIGYpCi0gICAgICA6IGVuZChsYXN0KSwgcmUoKnApLCBmbGFncyhmKSwgc3Vicyh2KXt9Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19IUF9hQ0MsIDwgNjA3MDApCi0jaWYgKE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA+PSAweDU2MCkgJiYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU3MCkpKVwKLSAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKSBcCi0gICAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDMwMDMpKSBcCi0gICAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fSFBfYUNDLCA8IDYwNzAwKQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICByZWdleF90b2tlbl9pdGVyYXRvcl9pbXBsZW1lbnRhdGlvbihjb25zdCByZWdleF90eXBlKiBwLCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgbGFzdCwgY29uc3QgVCYgc3VibWF0Y2hlcywgbWF0Y2hfZmxhZ190eXBlIGYpCi0gICAgICA6IGVuZChsYXN0KSwgcmUoKnApLCBmbGFncyhmKQotICAgewotICAgICAgLy8gYXNzZXJ0IHRoYXQgVCByZWFsbHkgaXMgYW4gYXJyYXk6Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKDo6bmRuYm9vc3Q6OmlzX2FycmF5PFQ+Ojp2YWx1ZSk7Ci0gICAgICBjb25zdCBzdGQ6OnNpemVfdCBhcnJheV9zaXplID0gc2l6ZW9mKFQpIC8gc2l6ZW9mKHN1Ym1hdGNoZXNbMF0pOwotICAgICAgZm9yKHN0ZDo6c2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlfc2l6ZTsgKytpKQotICAgICAgewotICAgICAgICAgc3Vicy5wdXNoX2JhY2soc3VibWF0Y2hlc1tpXSk7Ci0gICAgICB9Ci0gICB9Ci0jZWxzZQotICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IENOPgotICAgcmVnZXhfdG9rZW5faXRlcmF0b3JfaW1wbGVtZW50YXRpb24oY29uc3QgcmVnZXhfdHlwZSogcCwgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGxhc3QsIGNvbnN0IGludCAoJnN1Ym1hdGNoZXMpW0NOXSwgbWF0Y2hfZmxhZ190eXBlIGYpCi0gICAgICA6IGVuZChsYXN0KSwgcmUoKnApLCBmbGFncyhmKQotICAgewotICAgICAgZm9yKHN0ZDo6c2l6ZV90IGkgPSAwOyBpIDwgQ047ICsraSkKLSAgICAgIHsKLSAgICAgICAgIHN1YnMucHVzaF9iYWNrKHN1Ym1hdGNoZXNbaV0pOwotICAgICAgfQotICAgfQotI2VuZGlmCi0jZW5kaWYKLSAgIGJvb2wgaW5pdChCaWRpcmVjdGlvbmFsSXRlcmF0b3IgZmlyc3QpCi0gICB7Ci0gICAgICBOID0gMDsKLSAgICAgIGJhc2UgPSBmaXJzdDsKLSAgICAgIGlmKHJlZ2V4X3NlYXJjaChmaXJzdCwgZW5kLCB3aGF0LCByZSwgZmxhZ3MsIGJhc2UpID09IHRydWUpCi0gICAgICB7Ci0gICAgICAgICBOID0gMDsKLSAgICAgICAgIHJlc3VsdCA9ICgoc3Vic1tOXSA9PSAtMSkgPyB3aGF0LnByZWZpeCgpIDogd2hhdFsoaW50KXN1YnNbTl1dKTsKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgZWxzZSBpZigoc3Vic1tOXSA9PSAtMSkgJiYgKGZpcnN0ICE9IGVuZCkpCi0gICAgICB7Ci0gICAgICAgICByZXN1bHQuZmlyc3QgPSBmaXJzdDsKLSAgICAgICAgIHJlc3VsdC5zZWNvbmQgPSBlbmQ7Ci0gICAgICAgICByZXN1bHQubWF0Y2hlZCA9IChmaXJzdCAhPSBlbmQpOwotICAgICAgICAgTiA9IC0xOwotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0gICBib29sIGNvbXBhcmUoY29uc3QgcmVnZXhfdG9rZW5faXRlcmF0b3JfaW1wbGVtZW50YXRpb24mIHRoYXQpCi0gICB7Ci0gICAgICBpZih0aGlzID09ICZ0aGF0KSByZXR1cm4gdHJ1ZTsKLSAgICAgIHJldHVybiAoJnJlLmdldF9kYXRhKCkgPT0gJnRoYXQucmUuZ2V0X2RhdGEoKSkgCi0gICAgICAgICAmJiAoZW5kID09IHRoYXQuZW5kKSAKLSAgICAgICAgICYmIChmbGFncyA9PSB0aGF0LmZsYWdzKSAKLSAgICAgICAgICYmIChOID09IHRoYXQuTikgCi0gICAgICAgICAmJiAod2hhdFswXS5maXJzdCA9PSB0aGF0LndoYXRbMF0uZmlyc3QpIAotICAgICAgICAgJiYgKHdoYXRbMF0uc2Vjb25kID09IHRoYXQud2hhdFswXS5zZWNvbmQpOwotICAgfQotICAgY29uc3QgdmFsdWVfdHlwZSYgZ2V0KCkKLSAgIHsgcmV0dXJuIHJlc3VsdDsgfQotICAgYm9vbCBuZXh0KCkKLSAgIHsKLSAgICAgIGlmKE4gPT0gLTEpCi0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICBpZihOKzEgPCAoaW50KXN1YnMuc2l6ZSgpKQotICAgICAgewotICAgICAgICAgKytOOwotICAgICAgICAgcmVzdWx0ID0oKHN1YnNbTl0gPT0gLTEpID8gd2hhdC5wcmVmaXgoKSA6IHdoYXRbc3Vic1tOXV0pOwotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICAgICAvL2lmKHdoYXQucHJlZml4KCkuZmlyc3QgIT0gd2hhdFswXS5zZWNvbmQpCi0gICAgICAvLyAgIGZsYWdzIHw9IC8qbWF0Y2hfcHJldl9hdmFpbCB8Ki8gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9ub3RfYm9iOwotICAgICAgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGxhc3RfZW5kKHdoYXRbMF0uc2Vjb25kKTsKLSAgICAgIGlmKHJlZ2V4X3NlYXJjaChsYXN0X2VuZCwgZW5kLCB3aGF0LCByZSwgKCh3aGF0WzBdLmZpcnN0ID09IHdoYXRbMF0uc2Vjb25kKSA/IGZsYWdzIHwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9ub3RfaW5pdGlhbF9udWxsIDogZmxhZ3MpLCBiYXNlKSkKLSAgICAgIHsKLSAgICAgICAgIE4gPTA7Ci0gICAgICAgICByZXN1bHQgPSgoc3Vic1tOXSA9PSAtMSkgPyB3aGF0LnByZWZpeCgpIDogd2hhdFtzdWJzW05dXSk7Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYoKGxhc3RfZW5kICE9IGVuZCkgJiYgKHN1YnNbMF0gPT0gLTEpKQotICAgICAgewotICAgICAgICAgTiA9LTE7Ci0gICAgICAgICByZXN1bHQuZmlyc3QgPSBsYXN0X2VuZDsKLSAgICAgICAgIHJlc3VsdC5zZWNvbmQgPSBlbmQ7Ci0gICAgICAgICByZXN1bHQubWF0Y2hlZCA9IChsYXN0X2VuZCAhPSBlbmQpOwotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci1wcml2YXRlOgotICAgcmVnZXhfdG9rZW5faXRlcmF0b3JfaW1wbGVtZW50YXRpb24mIG9wZXJhdG9yPShjb25zdCByZWdleF90b2tlbl9pdGVyYXRvcl9pbXBsZW1lbnRhdGlvbiYpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlyZWN0aW9uYWxJdGVyYXRvciwgCi0gICAgICAgICAgY2xhc3MgY2hhclQgPSBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj46OnZhbHVlX3R5cGUsCi0gICAgICAgICAgY2xhc3MgdHJhaXRzID0gcmVnZXhfdHJhaXRzPGNoYXJUPiA+Ci1jbGFzcyByZWdleF90b2tlbl9pdGVyYXRvciAKLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0lURVJBVE9SCi0gICA6IHB1YmxpYyBzdGQ6Oml0ZXJhdG9yPAotICAgICAgICAgc3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZywgCi0gICAgICAgICBzdWJfbWF0Y2g8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPiwKLSAgICAgICAgIHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZSwKLSAgICAgICAgIGNvbnN0IHN1Yl9tYXRjaDxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+KiwKLSAgICAgICAgIGNvbnN0IHN1Yl9tYXRjaDxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+JiA+ICAgICAgICAgCi0jZW5kaWYKLXsKLXByaXZhdGU6Ci0gICB0eXBlZGVmIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yX2ltcGxlbWVudGF0aW9uPEJpZGlyZWN0aW9uYWxJdGVyYXRvciwgY2hhclQsIHRyYWl0cz4gaW1wbDsKLSAgIHR5cGVkZWYgc2hhcmVkX3B0cjxpbXBsPiBwaW1wbDsKLXB1YmxpYzoKLSAgIHR5cGVkZWYgICAgICAgICAgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4gICAgICAgICAgICAgICAgICAgcmVnZXhfdHlwZTsKLSAgIHR5cGVkZWYgICAgICAgICAgc3ViX21hdGNoPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwotICAgdHlwZWRlZiAgICAgICAgICBjb25zdCB2YWx1ZV90eXBlKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXI7Ci0gICB0eXBlZGVmICAgICAgICAgIGNvbnN0IHZhbHVlX3R5cGUmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlOyAKLSAgIHR5cGVkZWYgICAgICAgICAgc3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVyYXRvcl9jYXRlZ29yeTsKLSAgIAotICAgcmVnZXhfdG9rZW5faXRlcmF0b3IoKXt9Ci0gICByZWdleF90b2tlbl9pdGVyYXRvcihCaWRpcmVjdGlvbmFsSXRlcmF0b3IgYSwgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGIsIGNvbnN0IHJlZ2V4X3R5cGUmIHJlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdWJtYXRjaCA9IDAsIG1hdGNoX2ZsYWdfdHlwZSBtID0gbWF0Y2hfZGVmYXVsdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIDogcGRhdGEobmV3IGltcGwoJnJlLCBiLCBzdWJtYXRjaCwgbSkpCi0gICB7Ci0gICAgICBpZighcGRhdGEtPmluaXQoYSkpCi0gICAgICAgICBwZGF0YS5yZXNldCgpOwotICAgfQotICAgcmVnZXhfdG9rZW5faXRlcmF0b3IoQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGEsIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBiLCBjb25zdCByZWdleF90eXBlJiByZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+JiBzdWJtYXRjaGVzLCBtYXRjaF9mbGFnX3R5cGUgbSA9IG1hdGNoX2RlZmF1bHQpCi0gICAgICAgICAgICAgICAgICAgICAgICA6IHBkYXRhKG5ldyBpbXBsKCZyZSwgYiwgc3VibWF0Y2hlcywgbSkpCi0gICB7Ci0gICAgICBpZighcGRhdGEtPmluaXQoYSkpCi0gICAgICAgICBwZGF0YS5yZXNldCgpOwotICAgfQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fSFBfYUNDLCA8IDYwNzAwKQotI2lmIChORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPj0gMHg1NjApICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NzApKSlcCi0gICAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkgXAotICAgICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCBORE5CT09TVF9URVNURURfQVQoMHgzMDAzKSkgXAotICAgICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0hQX2FDQywgPCA2MDcwMCkKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgcmVnZXhfdG9rZW5faXRlcmF0b3IoQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGEsIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBiLCBjb25zdCByZWdleF90eXBlJiByZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQmIHN1Ym1hdGNoZXMsIG1hdGNoX2ZsYWdfdHlwZSBtID0gbWF0Y2hfZGVmYXVsdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIDogcGRhdGEobmV3IGltcGwoJnJlLCBiLCBzdWJtYXRjaGVzLCBtKSkKLSAgIHsKLSAgICAgIGlmKCFwZGF0YS0+aW5pdChhKSkKLSAgICAgICAgIHBkYXRhLnJlc2V0KCk7Ci0gICB9Ci0jZWxzZQotICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IE4+Ci0gICByZWdleF90b2tlbl9pdGVyYXRvcihCaWRpcmVjdGlvbmFsSXRlcmF0b3IgYSwgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGIsIGNvbnN0IHJlZ2V4X3R5cGUmIHJlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ICgmc3VibWF0Y2hlcylbTl0sIG1hdGNoX2ZsYWdfdHlwZSBtID0gbWF0Y2hfZGVmYXVsdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIDogcGRhdGEobmV3IGltcGwoJnJlLCBiLCBzdWJtYXRjaGVzLCBtKSkKLSAgIHsKLSAgICAgIGlmKCFwZGF0YS0+aW5pdChhKSkKLSAgICAgICAgIHBkYXRhLnJlc2V0KCk7Ci0gICB9Ci0jZW5kaWYKLSNlbmRpZgotICAgcmVnZXhfdG9rZW5faXRlcmF0b3IoY29uc3QgcmVnZXhfdG9rZW5faXRlcmF0b3ImIHRoYXQpCi0gICAgICA6IHBkYXRhKHRoYXQucGRhdGEpIHt9Ci0gICByZWdleF90b2tlbl9pdGVyYXRvciYgb3BlcmF0b3I9KGNvbnN0IHJlZ2V4X3Rva2VuX2l0ZXJhdG9yJiB0aGF0KQotICAgewotICAgICAgcGRhdGEgPSB0aGF0LnBkYXRhOwotICAgICAgcmV0dXJuICp0aGlzOwotICAgfQotICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHJlZ2V4X3Rva2VuX2l0ZXJhdG9yJiB0aGF0KWNvbnN0Ci0gICB7IAotICAgICAgaWYoKHBkYXRhLmdldCgpID09IDApIHx8ICh0aGF0LnBkYXRhLmdldCgpID09IDApKQotICAgICAgICAgcmV0dXJuIHBkYXRhLmdldCgpID09IHRoYXQucGRhdGEuZ2V0KCk7Ci0gICAgICByZXR1cm4gcGRhdGEtPmNvbXBhcmUoKih0aGF0LnBkYXRhLmdldCgpKSk7IAotICAgfQotICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IHJlZ2V4X3Rva2VuX2l0ZXJhdG9yJiB0aGF0KWNvbnN0Ci0gICB7IHJldHVybiAhKCp0aGlzID09IHRoYXQpOyB9Ci0gICBjb25zdCB2YWx1ZV90eXBlJiBvcGVyYXRvciooKWNvbnN0Ci0gICB7IHJldHVybiBwZGF0YS0+Z2V0KCk7IH0KLSAgIGNvbnN0IHZhbHVlX3R5cGUqIG9wZXJhdG9yLT4oKWNvbnN0Ci0gICB7IHJldHVybiAmKHBkYXRhLT5nZXQoKSk7IH0KLSAgIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yJiBvcGVyYXRvcisrKCkKLSAgIHsKLSAgICAgIGNvdygpOwotICAgICAgaWYoMCA9PSBwZGF0YS0+bmV4dCgpKQotICAgICAgewotICAgICAgICAgcGRhdGEucmVzZXQoKTsKLSAgICAgIH0KLSAgICAgIHJldHVybiAqdGhpczsKLSAgIH0KLSAgIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yIG9wZXJhdG9yKysoaW50KQotICAgewotICAgICAgcmVnZXhfdG9rZW5faXRlcmF0b3IgcmVzdWx0KCp0aGlzKTsKLSAgICAgICsrKCp0aGlzKTsKLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gICB9Ci1wcml2YXRlOgotCi0gICBwaW1wbCBwZGF0YTsKLQotICAgdm9pZCBjb3coKQotICAgewotICAgICAgLy8gY29weS1vbi13cml0ZQotICAgICAgaWYocGRhdGEuZ2V0KCkgJiYgIXBkYXRhLnVuaXF1ZSgpKQotICAgICAgewotICAgICAgICAgcGRhdGEucmVzZXQobmV3IGltcGwoKihwZGF0YS5nZXQoKSkpKTsKLSAgICAgIH0KLSAgIH0KLX07Ci0KLXR5cGVkZWYgcmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3QgY2hhcio+IGNyZWdleF90b2tlbl9pdGVyYXRvcjsKLXR5cGVkZWYgcmVnZXhfdG9rZW5faXRlcmF0b3I8c3RkOjpzdHJpbmc6OmNvbnN0X2l0ZXJhdG9yPiBzcmVnZXhfdG9rZW5faXRlcmF0b3I7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotdHlwZWRlZiByZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCB3Y2hhcl90Kj4gd2NyZWdleF90b2tlbl9pdGVyYXRvcjsKLXR5cGVkZWYgcmVnZXhfdG9rZW5faXRlcmF0b3I8c3RkOjp3c3RyaW5nOjpjb25zdF9pdGVyYXRvcj4gd3NyZWdleF90b2tlbl9pdGVyYXRvcjsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWlubGluZSByZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCBjaGFyVCosIGNoYXJULCB0cmFpdHM+IG1ha2VfcmVnZXhfdG9rZW5faXRlcmF0b3IoY29uc3QgY2hhclQqIHAsIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBlLCBpbnQgc3VibWF0Y2ggPSAwLCByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBtID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IGNoYXJUKiwgY2hhclQsIHRyYWl0cz4ocCwgcCt0cmFpdHM6Omxlbmd0aChwKSwgZSwgc3VibWF0Y2gsIG0pOwotfQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIFNULCBjbGFzcyBTQT4KLWlubGluZSByZWdleF90b2tlbl9pdGVyYXRvcjx0eXBlbmFtZSBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgU1QsIFNBPjo6Y29uc3RfaXRlcmF0b3IsIGNoYXJULCB0cmFpdHM+IG1ha2VfcmVnZXhfdG9rZW5faXRlcmF0b3IoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFNULCBTQT4mIHAsIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBlLCBpbnQgc3VibWF0Y2ggPSAwLCByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBtID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yPHR5cGVuYW1lIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBTVCwgU0E+Ojpjb25zdF9pdGVyYXRvciwgY2hhclQsIHRyYWl0cz4ocC5iZWdpbigpLCBwLmVuZCgpLCBlLCBzdWJtYXRjaCwgbSk7Ci19Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIHN0ZDo6c2l6ZV90IE4+Ci1pbmxpbmUgcmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3QgY2hhclQqLCBjaGFyVCwgdHJhaXRzPiBtYWtlX3JlZ2V4X3Rva2VuX2l0ZXJhdG9yKGNvbnN0IGNoYXJUKiBwLCBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgZSwgY29uc3QgaW50ICgmc3VibWF0Y2gpW05dLCByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBtID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IGNoYXJUKiwgY2hhclQsIHRyYWl0cz4ocCwgcCt0cmFpdHM6Omxlbmd0aChwKSwgZSwgc3VibWF0Y2gsIG0pOwotfQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIFNULCBjbGFzcyBTQSwgc3RkOjpzaXplX3QgTj4KLWlubGluZSByZWdleF90b2tlbl9pdGVyYXRvcjx0eXBlbmFtZSBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgU1QsIFNBPjo6Y29uc3RfaXRlcmF0b3IsIGNoYXJULCB0cmFpdHM+IG1ha2VfcmVnZXhfdG9rZW5faXRlcmF0b3IoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFNULCBTQT4mIHAsIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBlLCBjb25zdCBpbnQgKCZzdWJtYXRjaClbTl0sIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIG0gPSByZWdleF9jb25zdGFudHM6Om1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfdG9rZW5faXRlcmF0b3I8dHlwZW5hbWUgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFNULCBTQT46OmNvbnN0X2l0ZXJhdG9yLCBjaGFyVCwgdHJhaXRzPihwLmJlZ2luKCksIHAuZW5kKCksIGUsIHN1Ym1hdGNoLCBtKTsKLX0KLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1pbmxpbmUgcmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3QgY2hhclQqLCBjaGFyVCwgdHJhaXRzPiBtYWtlX3JlZ2V4X3Rva2VuX2l0ZXJhdG9yKGNvbnN0IGNoYXJUKiBwLCBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgZSwgY29uc3Qgc3RkOjp2ZWN0b3I8aW50PiYgc3VibWF0Y2gsIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIG0gPSByZWdleF9jb25zdGFudHM6Om1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3QgY2hhclQqLCBjaGFyVCwgdHJhaXRzPihwLCBwK3RyYWl0czo6bGVuZ3RoKHApLCBlLCBzdWJtYXRjaCwgbSk7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgU1QsIGNsYXNzIFNBPgotaW5saW5lIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yPHR5cGVuYW1lIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBTVCwgU0E+Ojpjb25zdF9pdGVyYXRvciwgY2hhclQsIHRyYWl0cz4gbWFrZV9yZWdleF90b2tlbl9pdGVyYXRvcihjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgU1QsIFNBPiYgcCwgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUsIGNvbnN0IHN0ZDo6dmVjdG9yPGludD4mIHN1Ym1hdGNoLCByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBtID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yPHR5cGVuYW1lIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBTVCwgU0E+Ojpjb25zdF9pdGVyYXRvciwgY2hhclQsIHRyYWl0cz4ocC5iZWdpbigpLCBwLmVuZCgpLCBlLCBzdWJtYXRjaCwgbSk7Ci19Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID4gMTMwMCkKLSMgIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUkVHRVhfVjRfUkVHRVhfVE9LRU5fSVRFUkFUT1JfSFBQCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTk5MWJiNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODkgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDMKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0gCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgcmVnZXhfdHJhaXRzLmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogRGVjbGFyZXMgcmVndWxhciBleHByZXNzaW9uIHRyYWl0cyBjbGFzc2VzLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfVFJBSVRTX0hQUF9JTkNMVURFRAotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0NPTkZJR19IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC9jb25maWcuaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1dPUktBUk9VTkRfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfd29ya2Fyb3VuZC5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfU1lOVEFYX1RZUEVfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvc3ludGF4X3R5cGUuaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0VSUk9SX1RZUEVfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvZXJyb3JfdHlwZS5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVFJBSVRTX0RFRkFVTFRTX0hQUF9JTkNMVURFRAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3RyYWl0c19kZWZhdWx0cy5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0xPQ0FMRQotIyAgaWZuZGVmIE5ETkJPT1NUX0NQUF9SRUdFWF9UUkFJVFNfSFBQX0lOQ0xVREVECi0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9jcHBfcmVnZXhfdHJhaXRzLmhwcD4KLSMgIGVuZGlmCi0jZW5kaWYKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg1NjApCi0jICBpZm5kZWYgTkROQk9PU1RfQ19SRUdFWF9UUkFJVFNfSFBQX0lOQ0xVREVECi0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9jX3JlZ2V4X3RyYWl0cy5ocHA+Ci0jICBlbmRpZgotI2VuZGlmCi0jaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX05PX1czMikKLSMgIGlmbmRlZiBORE5CT09TVF9XMzJfUkVHRVhfVFJBSVRTX0hQUF9JTkNMVURFRAotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvdzMyX3JlZ2V4X3RyYWl0cy5ocHA+Ci0jICBlbmRpZgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0ZXRF9IUFBfSU5DTFVERUQKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleF9md2QuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlICJuZG5ib29zdC9tcGwvaGFzX3h4eC5ocHAiCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIGltcGxlbWVudGF0aW9uVCA+Ci1zdHJ1Y3QgcmVnZXhfdHJhaXRzIDogcHVibGljIGltcGxlbWVudGF0aW9uVAotewotICAgcmVnZXhfdHJhaXRzKCkgOiBpbXBsZW1lbnRhdGlvblQoKSB7fQotfTsKLQotLy8KLS8vIGNsYXNzIHJlZ2V4X3RyYWl0c193cmFwcGVyLgotLy8gdGhpcyBpcyB3aGF0IG91ciBpbXBsZW1lbnRhdGlvbiB3aWxsIGFjdHVhbGx5IHN0b3JlOwotLy8gaXQgcHJvdmlkZXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlICJvcHRpb25hbCIKLS8vIGludGVyZmFjZXMgdGhhdCB3ZSBzdXBwb3J0LCBpbiBhZGRpdGlvbiB0byB0aGUKLS8vIHJlcXVpcmVkICJzdGFuZGFyZCIgb25lczoKLS8vCi1uYW1lc3BhY2UgcmVfZGV0YWlsewotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pICYmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fSFBfYUNDLCA8IDYwMDAwKQotTkROQk9PU1RfTVBMX0hBU19YWFhfVFJBSVRfREVGKGJvb3N0X2V4dGVuc2lvbnNfdGFnKQotI2Vsc2UKLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgaGFzX2Jvb3N0X2V4dGVuc2lvbnNfdGFnCi17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBCYXNlVD4KLXN0cnVjdCBkZWZhdWx0X3dyYXBwZXIgOiBwdWJsaWMgQmFzZVQKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgQmFzZVQ6OmNoYXJfdHlwZSBjaGFyX3R5cGU7Ci0gICBzdGQ6OnN0cmluZyBlcnJvcl9zdHJpbmcoOjpuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjplcnJvcl90eXBlIGUpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmdldF9kZWZhdWx0X2Vycm9yX3N0cmluZyhlKTsKLSAgIH0KLSAgIDo6bmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3R5cGUgc3ludGF4X3R5cGUoY2hhcl90eXBlIGMpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiAoKGMgJiAweDdmKSA9PSBjKSA/IGdldF9kZWZhdWx0X3N5bnRheF90eXBlKHN0YXRpY19jYXN0PGNoYXI+KGMpKSA6IDo6bmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2NoYXI7Ci0gICB9Ci0gICA6Om5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OmVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfc3ludGF4X3R5cGUoY2hhcl90eXBlIGMpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiAoKGMgJiAweDdmKSA9PSBjKSA/IGdldF9kZWZhdWx0X2VzY2FwZV9zeW50YXhfdHlwZShzdGF0aWNfY2FzdDxjaGFyPihjKSkgOiA6Om5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX2lkZW50aXR5OwotICAgfQotICAgaW50IHRvaShjb25zdCBjaGFyX3R5cGUqJiBwMSwgY29uc3QgY2hhcl90eXBlKiBwMiwgaW50IHJhZGl4KWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpnbG9iYWxfdG9pKHAxLCBwMiwgcmFkaXgsICp0aGlzKTsKLSAgIH0KLSAgIGNoYXJfdHlwZSB0cmFuc2xhdGUoY2hhcl90eXBlIGMsIGJvb2wgaWNhc2UpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiAoaWNhc2UgPyB0aGlzLT50cmFuc2xhdGVfbm9jYXNlKGMpIDogdGhpcy0+dHJhbnNsYXRlKGMpKTsKLSAgIH0KLSAgIGNoYXJfdHlwZSB0cmFuc2xhdGUoY2hhcl90eXBlIGMpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBCYXNlVDo6dHJhbnNsYXRlKGMpOwotICAgfQotICAgY2hhcl90eXBlIHRvbG93ZXIoY2hhcl90eXBlIGMpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6Omdsb2JhbF9sb3dlcihjKTsKLSAgIH0KLSAgIGNoYXJfdHlwZSB0b3VwcGVyKGNoYXJfdHlwZSBjKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpnbG9iYWxfdXBwZXIoYyk7Ci0gICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQmFzZVQsIGJvb2wgaGFzX2V4dGVuc2lvbnM+Ci1zdHJ1Y3QgY29tcHV0ZV93cmFwcGVyX2Jhc2UKLXsKLSAgIHR5cGVkZWYgQmFzZVQgdHlwZTsKLX07Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19IUF9hQ0MsIDwgNjAwMDApCi10ZW1wbGF0ZSA8Y2xhc3MgQmFzZVQ+Ci1zdHJ1Y3QgY29tcHV0ZV93cmFwcGVyX2Jhc2U8QmFzZVQsIGZhbHNlPgotewotICAgdHlwZWRlZiBkZWZhdWx0X3dyYXBwZXI8QmFzZVQ+IHR5cGU7Ci19OwotI2Vsc2UKLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgY29tcHV0ZV93cmFwcGVyX2Jhc2U8Y19yZWdleF90cmFpdHM8Y2hhcj4sIGZhbHNlPgotewotICAgdHlwZWRlZiBkZWZhdWx0X3dyYXBwZXI8Y19yZWdleF90cmFpdHM8Y2hhcj4gPiB0eXBlOwotfTsKLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGNvbXB1dGVfd3JhcHBlcl9iYXNlPGNfcmVnZXhfdHJhaXRzPHdjaGFyX3Q+LCBmYWxzZT4KLXsKLSAgIHR5cGVkZWYgZGVmYXVsdF93cmFwcGVyPGNfcmVnZXhfdHJhaXRzPHdjaGFyX3Q+ID4gdHlwZTsKLX07Ci0jZW5kaWYKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSByZV9kZXRhaWwKLQotdGVtcGxhdGUgPGNsYXNzIEJhc2VUPgotc3RydWN0IHJlZ2V4X3RyYWl0c193cmFwcGVyIAotICAgOiBwdWJsaWMgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjb21wdXRlX3dyYXBwZXJfYmFzZTwKLSAgICAgICAgICAgICAgIEJhc2VULCAKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6aGFzX2Jvb3N0X2V4dGVuc2lvbnNfdGFnPEJhc2VUPjo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUKLXsKLSAgIHJlZ2V4X3RyYWl0c193cmFwcGVyKCl7fQotcHJpdmF0ZToKLSAgIHJlZ2V4X3RyYWl0c193cmFwcGVyKGNvbnN0IHJlZ2V4X3RyYWl0c193cmFwcGVyJik7Ci0gICByZWdleF90cmFpdHNfd3JhcHBlciYgb3BlcmF0b3I9KGNvbnN0IHJlZ2V4X3RyYWl0c193cmFwcGVyJik7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNlbmRpZiAvLyBpbmNsdWRlCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfdHJhaXRzX2RlZmF1bHRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfdHJhaXRzX2RlZmF1bHRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmI0ZmMyOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3RyYWl0c19kZWZhdWx0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNzEgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgcmVnZXhfdHJhaXRzX2RlZmF1bHRzLmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogRGVjbGFyZXMgQVBJJ3MgZm9yIGFjY2VzcyB0byByZWdleF90cmFpdHMgZGVmYXVsdCBwcm9wZXJ0aWVzLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19ERUZBVUxUU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfVFJBSVRTX0RFRkFVTFRTX0hQUF9JTkNMVURFRAotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfU1lOVEFYX1RZUEVfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvc3ludGF4X3R5cGUuaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0VSUk9SX1RZUEVfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvZXJyb3JfdHlwZS5ocHA+Ci0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFCi1uYW1lc3BhY2Ugc3RkewotICAgdXNpbmcgOjpzdHJsZW47Ci19Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0eyBuYW1lc3BhY2UgcmVfZGV0YWlsewotCi0KLS8vCi0vLyBoZWxwZXJzIHRvIHN1cHByZXNzIHdhcm5pbmdzOgotLy8KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLWlubGluZSBib29sIGlzX2V4dGVuZGVkKGNoYXJUIGMpCi17IHJldHVybiBjID4gMjU2OyB9Ci1pbmxpbmUgYm9vbCBpc19leHRlbmRlZChjaGFyKQoteyByZXR1cm4gZmFsc2U7IH0KLQotCi1ORE5CT09TVF9SRUdFWF9ERUNMIGNvbnN0IGNoYXIqIE5ETkJPT1NUX1JFR0VYX0NBTEwgZ2V0X2RlZmF1bHRfc3ludGF4KHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3R5cGUgbik7Ci1ORE5CT09TVF9SRUdFWF9ERUNMIGNvbnN0IGNoYXIqIE5ETkJPT1NUX1JFR0VYX0NBTEwgZ2V0X2RlZmF1bHRfZXJyb3Jfc3RyaW5nKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfdHlwZSBuKTsKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIGdldF9kZWZhdWx0X3N5bnRheF90eXBlKGNoYXIgYyk7Ci1ORE5CT09TVF9SRUdFWF9ERUNMIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3N5bnRheF90eXBlIE5ETkJPT1NUX1JFR0VYX0NBTEwgZ2V0X2RlZmF1bHRfZXNjYXBlX3N5bnRheF90eXBlKGNoYXIgYyk7Ci0KLS8vIGlzIGNoYXJUIGMgYSBjb21iaW5pbmcgY2hhcmFjdGVyPwotTkROQk9PU1RfUkVHRVhfREVDTCBib29sIE5ETkJPT1NUX1JFR0VYX0NBTEwgaXNfY29tYmluaW5nX2ltcGxlbWVudGF0aW9uKHVpbnRfbGVhc3QxNl90IHMpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1pbmxpbmUgYm9vbCBpc19jb21iaW5pbmcoY2hhclQgYykKLXsKLSAgIHJldHVybiAoYyA8PSBzdGF0aWNfY2FzdDxjaGFyVD4oMCkpID8gZmFsc2UgOiAoKGMgPj0gc3RhdGljX2Nhc3Q8Y2hhclQ+KChzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnRfbGVhc3QxNl90Pjo6bWF4KSgpKSkgPyBmYWxzZSA6IGlzX2NvbWJpbmluZ19pbXBsZW1lbnRhdGlvbihzdGF0aWNfY2FzdDx1bnNpZ25lZCBzaG9ydD4oYykpKTsKLX0KLXRlbXBsYXRlIDw+Ci1pbmxpbmUgYm9vbCBpc19jb21iaW5pbmc8Y2hhcj4oY2hhcikKLXsKLSAgIHJldHVybiBmYWxzZTsKLX0KLXRlbXBsYXRlIDw+Ci1pbmxpbmUgYm9vbCBpc19jb21iaW5pbmc8c2lnbmVkIGNoYXI+KHNpZ25lZCBjaGFyKQotewotICAgcmV0dXJuIGZhbHNlOwotfQotdGVtcGxhdGUgPD4KLWlubGluZSBib29sIGlzX2NvbWJpbmluZzx1bnNpZ25lZCBjaGFyPih1bnNpZ25lZCBjaGFyKQotewotICAgcmV0dXJuIGZhbHNlOwotfQotI2lmICFkZWZpbmVkKF9faHB1eCkgJiYgIWRlZmluZWQoX19XSU5TQ1dfXykgLy8gY2FuJ3QgdXNlIFdDSEFSX01BWC9NSU4gaW4gcHAtZGlyZWN0aXZlcwotI2lmZGVmIF9NU0NfVkVSCi10ZW1wbGF0ZTw+Ci1pbmxpbmUgYm9vbCBpc19jb21iaW5pbmc8d2NoYXJfdD4od2NoYXJfdCBjKQotewotICAgcmV0dXJuIGlzX2NvbWJpbmluZ19pbXBsZW1lbnRhdGlvbihzdGF0aWNfY2FzdDx1bnNpZ25lZCBzaG9ydD4oYykpOwotfQotI2VsaWYgIWRlZmluZWQoX19ERUNDWFgpICYmICFkZWZpbmVkKF9fb3NmX18pICYmICFkZWZpbmVkKF9fT1NGX18pICYmIGRlZmluZWQoV0NIQVJfTUlOKSAmJiAoV0NIQVJfTUlOID09IDApICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lOVFJJTlNJQ19XQ0hBUl9UKQotI2lmIGRlZmluZWQoV0NIQVJfTUFYKSAmJiAoV0NIQVJfTUFYIDw9IFVTSFJUX01BWCkKLXRlbXBsYXRlPD4KLWlubGluZSBib29sIGlzX2NvbWJpbmluZzx3Y2hhcl90Pih3Y2hhcl90IGMpCi17Ci0gICByZXR1cm4gaXNfY29tYmluaW5nX2ltcGxlbWVudGF0aW9uKHN0YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0PihjKSk7Ci19Ci0jZWxzZQotdGVtcGxhdGU8PgotaW5saW5lIGJvb2wgaXNfY29tYmluaW5nPHdjaGFyX3Q+KHdjaGFyX3QgYykKLXsKLSAgIHJldHVybiAoYyA+PSAoc3RkOjpudW1lcmljX2xpbWl0czx1aW50X2xlYXN0MTZfdD46Om1heCkoKSkgPyBmYWxzZSA6IGlzX2NvbWJpbmluZ19pbXBsZW1lbnRhdGlvbihzdGF0aWNfY2FzdDx1bnNpZ25lZCBzaG9ydD4oYykpOwotfQotI2VuZGlmCi0jZW5kaWYKLSNlbmRpZgotCi0vLwotLy8gaXMgYSBjaGFyVCBjIGEgbGluZSBzZXBhcmF0b3I/Ci0vLwotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotaW5saW5lIGJvb2wgaXNfc2VwYXJhdG9yKGNoYXJUIGMpCi17Ci0gICByZXR1cm4gTkROQk9PU1RfUkVHRVhfTUFLRV9CT09MKAotICAgICAgKGMgPT0gc3RhdGljX2Nhc3Q8Y2hhclQ+KCdcbicpKQotICAgICAgfHwgKGMgPT0gc3RhdGljX2Nhc3Q8Y2hhclQ+KCdccicpKQotICAgICAgfHwgKGMgPT0gc3RhdGljX2Nhc3Q8Y2hhclQ+KCdcZicpKQotICAgICAgfHwgKHN0YXRpY19jYXN0PG5kbmJvb3N0Ojp1aW50MTZfdD4oYykgPT0gMHgyMDI4dSkKLSAgICAgIHx8IChzdGF0aWNfY2FzdDxuZG5ib29zdDo6dWludDE2X3Q+KGMpID09IDB4MjAyOXUpCi0gICAgICB8fCAoc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OnVpbnQxNl90PihjKSA9PSAweDg1dSkpOwotfQotdGVtcGxhdGUgPD4KLWlubGluZSBib29sIGlzX3NlcGFyYXRvcjxjaGFyPihjaGFyIGMpCi17Ci0gICByZXR1cm4gTkROQk9PU1RfUkVHRVhfTUFLRV9CT09MKChjID09ICdcbicpIHx8IChjID09ICdccicpIHx8IChjID09ICdcZicpKTsKLX0KLQotLy8KLS8vIGdldCBhIGRlZmF1bHQgY29sbGF0aW5nIGVsZW1lbnQ6Ci0vLwotTkROQk9PU1RfUkVHRVhfREVDTCBzdGQ6OnN0cmluZyBORE5CT09TVF9SRUdFWF9DQUxMIGxvb2t1cF9kZWZhdWx0X2NvbGxhdGVfbmFtZShjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSk7Ci0KLS8vCi0vLyBnZXQgdGhlIHN0YXRlX2lkIG9mIGEgY2hhcmFjdGVyIGNsYXNpZmljYXRpb24sIHRoZSBpbmRpdmlkdWFsCi0vLyB0cmFpdHMgY2xhc3NlcyB0aGVuIHRyYW5zZm9ybSB0aGF0IHN0YXRlX2lkIGludG8gYSBiaXRtYXNrOgotLy8KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXN0cnVjdCBjaGFyYWN0ZXJfcG9pbnRlcl9yYW5nZQotewotICAgY29uc3QgY2hhclQqIHAxOwotICAgY29uc3QgY2hhclQqIHAyOwotCi0gICBib29sIG9wZXJhdG9yIDwgKGNvbnN0IGNoYXJhY3Rlcl9wb2ludGVyX3JhbmdlJiByKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gc3RkOjpsZXhpY29ncmFwaGljYWxfY29tcGFyZShwMSwgcDIsIHIucDEsIHIucDIpOwotICAgfQotICAgYm9vbCBvcGVyYXRvciA9PSAoY29uc3QgY2hhcmFjdGVyX3BvaW50ZXJfcmFuZ2UmIHIpY29uc3QKLSAgIHsKLSAgICAgIC8vIE5vdCBvbmx5IGRvIHdlIGNoZWNrIHRoYXQgdGhlIHJhbmdlcyBhcmUgb2YgZXF1YWwgc2l6ZSBiZWZvcmUKLSAgICAgIC8vIGNhbGxpbmcgc3RkOjplcXVhbCwgYnV0IHRoZXJlIGlzIG5vIG90aGVyIGFsZ29yaXRobSBhdmFpbGFibGU6Ci0gICAgICAvLyBub3QgZXZlbiBhIG5vbi1zdGFuZGFyZCBNUyBvbmUuICBTbyBmb3J3YXJkIHRvIHVuY2hlY2tlZF9lcXVhbAotICAgICAgLy8gaW4gdGhlIE1TIGNhc2UuCi0gICAgICByZXR1cm4gKChwMiAtIHAxKSA9PSAoci5wMiAtIHIucDEpKSAmJiByZV9kZXRhaWw6OmVxdWFsKHAxLCBwMiwgci5wMSk7Ci0gICB9Ci19OwotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotaW50IGdldF9kZWZhdWx0X2NsYXNzX2lkKGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyKQotewotICAgc3RhdGljIGNvbnN0IGNoYXJUIGRhdGFbNzNdID0gewotICAgICAgJ2EnLCAnbCcsICduJywgJ3UnLCAnbScsCi0gICAgICAnYScsICdsJywgJ3AnLCAnaCcsICdhJywKLSAgICAgICdiJywgJ2wnLCAnYScsICduJywgJ2snLAotICAgICAgJ2MnLCAnbicsICd0JywgJ3InLCAnbCcsCi0gICAgICAnZCcsICdpJywgJ2cnLCAnaScsICd0JywKLSAgICAgICdnJywgJ3InLCAnYScsICdwJywgJ2gnLAotICAgICAgJ2wnLCAnbycsICd3JywgJ2UnLCAncicsCi0gICAgICAncCcsICdyJywgJ2knLCAnbicsICd0JywKLSAgICAgICdwJywgJ3UnLCAnbicsICdjJywgJ3QnLAotICAgICAgJ3MnLCAncCcsICdhJywgJ2MnLCAnZScsCi0gICAgICAndScsICduJywgJ2knLCAnYycsICdvJywgJ2QnLCAnZScsCi0gICAgICAndScsICdwJywgJ3AnLCAnZScsICdyJywKLSAgICAgICd2JywKLSAgICAgICd3JywgJ28nLCAncicsICdkJywKLSAgICAgICd4JywgJ2QnLCAnaScsICdnJywgJ2knLCAndCcsCi0gICB9OwotCi0gICBzdGF0aWMgY29uc3QgY2hhcmFjdGVyX3BvaW50ZXJfcmFuZ2U8Y2hhclQ+IHJhbmdlc1syMV0gPQotICAgewotICAgICAge2RhdGErMCwgZGF0YSs1LH0sIC8vIGFsbnVtCi0gICAgICB7ZGF0YSs1LCBkYXRhKzEwLH0sIC8vIGFscGhhCi0gICAgICB7ZGF0YSsxMCwgZGF0YSsxNSx9LCAvLyBibGFuawotICAgICAge2RhdGErMTUsIGRhdGErMjAsfSwgLy8gY250cmwKLSAgICAgIHtkYXRhKzIwLCBkYXRhKzIxLH0sIC8vIGQKLSAgICAgIHtkYXRhKzIwLCBkYXRhKzI1LH0sIC8vIGRpZ2l0Ci0gICAgICB7ZGF0YSsyNSwgZGF0YSszMCx9LCAvLyBncmFwaAotICAgICAge2RhdGErMjksIGRhdGErMzAsfSwgLy8gaAotICAgICAge2RhdGErMzAsIGRhdGErMzEsfSwgLy8gbAotICAgICAge2RhdGErMzAsIGRhdGErMzUsfSwgLy8gbG93ZXIKLSAgICAgIHtkYXRhKzM1LCBkYXRhKzQwLH0sIC8vIHByaW50Ci0gICAgICB7ZGF0YSs0MCwgZGF0YSs0NSx9LCAvLyBwdW5jdAotICAgICAge2RhdGErNDUsIGRhdGErNDYsfSwgLy8gcwotICAgICAge2RhdGErNDUsIGRhdGErNTAsfSwgLy8gc3BhY2UKLSAgICAgIHtkYXRhKzU3LCBkYXRhKzU4LH0sIC8vIHUKLSAgICAgIHtkYXRhKzUwLCBkYXRhKzU3LH0sIC8vIHVuaWNvZGUKLSAgICAgIHtkYXRhKzU3LCBkYXRhKzYyLH0sIC8vIHVwcGVyCi0gICAgICB7ZGF0YSs2MiwgZGF0YSs2Myx9LCAvLyB2Ci0gICAgICB7ZGF0YSs2MywgZGF0YSs2NCx9LCAvLyB3Ci0gICAgICB7ZGF0YSs2MywgZGF0YSs2Nyx9LCAvLyB3b3JkCi0gICAgICB7ZGF0YSs2NywgZGF0YSs3Myx9LCAvLyB4ZGlnaXQKLSAgIH07Ci0gICBzdGF0aWMgY29uc3QgY2hhcmFjdGVyX3BvaW50ZXJfcmFuZ2U8Y2hhclQ+KiByYW5nZXNfYmVnaW4gPSByYW5nZXM7Ci0gICBzdGF0aWMgY29uc3QgY2hhcmFjdGVyX3BvaW50ZXJfcmFuZ2U8Y2hhclQ+KiByYW5nZXNfZW5kID0gcmFuZ2VzICsgKHNpemVvZihyYW5nZXMpL3NpemVvZihyYW5nZXNbMF0pKTsKLQotICAgY2hhcmFjdGVyX3BvaW50ZXJfcmFuZ2U8Y2hhclQ+IHQgPSB7IHAxLCBwMiwgfTsKLSAgIGNvbnN0IGNoYXJhY3Rlcl9wb2ludGVyX3JhbmdlPGNoYXJUPiogcCA9IHN0ZDo6bG93ZXJfYm91bmQocmFuZ2VzX2JlZ2luLCByYW5nZXNfZW5kLCB0KTsKLSAgIGlmKChwICE9IHJhbmdlc19lbmQpICYmICh0ID09ICpwKSkKLSAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHAgLSByYW5nZXMpOwotICAgcmV0dXJuIC0xOwotfQotCi0vLwotLy8gaGVscGVyIGZ1bmN0aW9uczoKLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1zdGQ6OnB0cmRpZmZfdCBnbG9iYWxfbGVuZ3RoKGNvbnN0IGNoYXJUKiBwKQotewotICAgc3RkOjpwdHJkaWZmX3QgbiA9IDA7Ci0gICB3aGlsZSgqcCkKLSAgIHsKLSAgICAgICsrcDsKLSAgICAgICsrbjsKLSAgIH0KLSAgIHJldHVybiBuOwotfQotdGVtcGxhdGU8PgotaW5saW5lIHN0ZDo6cHRyZGlmZl90IGdsb2JhbF9sZW5ndGg8Y2hhcj4oY29uc3QgY2hhciogcCkKLXsKLSAgIHJldHVybiAoc3RkOjpzdHJsZW4pKHApOwotfQotI2lmbmRlZiBORE5CT09TVF9OT19XUkVHRVgKLXRlbXBsYXRlPD4KLWlubGluZSBzdGQ6OnB0cmRpZmZfdCBnbG9iYWxfbGVuZ3RoPHdjaGFyX3Q+KGNvbnN0IHdjaGFyX3QqIHApCi17Ci0gICByZXR1cm4gKHN0ZDo6d2NzbGVuKShwKTsKLX0KLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotaW5saW5lIGNoYXJUIE5ETkJPT1NUX1JFR0VYX0NBTEwgZ2xvYmFsX2xvd2VyKGNoYXJUIGMpCi17Ci0gICByZXR1cm4gYzsKLX0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLWlubGluZSBjaGFyVCBORE5CT09TVF9SRUdFWF9DQUxMIGdsb2JhbF91cHBlcihjaGFyVCBjKQotewotICAgcmV0dXJuIGM7Ci19Ci0KLU5ETkJPT1NUX1JFR0VYX0RFQ0wgY2hhciBORE5CT09TVF9SRUdFWF9DQUxMIGRvX2dsb2JhbF9sb3dlcihjaGFyIGMpOwotTkROQk9PU1RfUkVHRVhfREVDTCBjaGFyIE5ETkJPT1NUX1JFR0VYX0NBTEwgZG9fZ2xvYmFsX3VwcGVyKGNoYXIgYyk7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotTkROQk9PU1RfUkVHRVhfREVDTCB3Y2hhcl90IE5ETkJPT1NUX1JFR0VYX0NBTEwgZG9fZ2xvYmFsX2xvd2VyKHdjaGFyX3QgYyk7Ci1ORE5CT09TVF9SRUdFWF9ERUNMIHdjaGFyX3QgTkROQk9PU1RfUkVHRVhfQ0FMTCBkb19nbG9iYWxfdXBwZXIod2NoYXJfdCBjKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX0hBU19PVEhFUl9XQ0hBUl9UCi1ORE5CT09TVF9SRUdFWF9ERUNMIHVuc2lnbmVkIHNob3J0IE5ETkJPT1NUX1JFR0VYX0NBTEwgZG9fZ2xvYmFsX2xvd2VyKHVuc2lnbmVkIHNob3J0IGMpOwotTkROQk9PU1RfUkVHRVhfREVDTCB1bnNpZ25lZCBzaG9ydCBORE5CT09TVF9SRUdFWF9DQUxMIGRvX2dsb2JhbF91cHBlcih1bnNpZ25lZCBzaG9ydCBjKTsKLSNlbmRpZgotLy8KLS8vIFRoaXMgc3Vja3M6IGRlY2xhcmUgdGVtcGxhdGUgc3BlY2lhbGlzYXRpb25zIG9mIGdsb2JhbF9sb3dlci9nbG9iYWxfdXBwZXIKLS8vIHRoYXQganVzdCBmb3J3YXJkIHRvIHRoZSBub24tdGVtcGxhdGUgaW1wbGVtZW50YXRpb24gZnVuY3Rpb25zLiAgV2UgZG8KLS8vIHRoaXMgYmVjYXVzZSB0aGVyZSBpcyBvbmUgY29tcGlsZXIgKENvbXBhcSBUcnU2NCBDKyspIHRoYXQgZG9lc24ndCBzZWVtCi0vLyB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gdGVtcGxhdGVzIGFuZCBub24tdGVtcGxhdGUgb3ZlcmxvYWRzLi4uLgotLy8gd2hhdCdzIG1vcmUsIHRoZSBwcmltYXJ5IHRlbXBsYXRlLCBwbHVzIGFsbCBvdmVybG9hZHMgaGF2ZSB0byBiZQotLy8gZGVmaW5lZCBpbiB0aGUgc2FtZSB0cmFuc2xhdGlvbiB1bml0IChpZiBvbmUgaXMgaW5saW5lIHRoZXkgYWxsIG11c3QgYmUpCi0vLyBvdGhlcndpc2UgdGhlICJsb2NhbCB0ZW1wbGF0ZSBpbnN0YW50aWF0aW9uIiBjb21waWxlciBvcHRpb24gY2FuIHBpY2sKLS8vIHRoZSB3cm9uZyBpbnN0YW50aWF0aW9uIHdoZW4gbGlua2luZzoKLS8vCi10ZW1wbGF0ZTw+IGlubGluZSBjaGFyIE5ETkJPT1NUX1JFR0VYX0NBTEwgZ2xvYmFsX2xvd2VyPGNoYXI+KGNoYXIgYyl7IHJldHVybiBkb19nbG9iYWxfbG93ZXIoYyk7IH0KLXRlbXBsYXRlPD4gaW5saW5lIGNoYXIgTkROQk9PU1RfUkVHRVhfQ0FMTCBnbG9iYWxfdXBwZXI8Y2hhcj4oY2hhciBjKXsgcmV0dXJuIGRvX2dsb2JhbF91cHBlcihjKTsgfQotI2lmbmRlZiBORE5CT09TVF9OT19XUkVHRVgKLXRlbXBsYXRlPD4gaW5saW5lIHdjaGFyX3QgTkROQk9PU1RfUkVHRVhfQ0FMTCBnbG9iYWxfbG93ZXI8d2NoYXJfdD4od2NoYXJfdCBjKXsgcmV0dXJuIGRvX2dsb2JhbF9sb3dlcihjKTsgfQotdGVtcGxhdGU8PiBpbmxpbmUgd2NoYXJfdCBORE5CT09TVF9SRUdFWF9DQUxMIGdsb2JhbF91cHBlcjx3Y2hhcl90Pih3Y2hhcl90IGMpeyByZXR1cm4gZG9fZ2xvYmFsX3VwcGVyKGMpOyB9Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9IQVNfT1RIRVJfV0NIQVJfVAotdGVtcGxhdGU8PiBpbmxpbmUgdW5zaWduZWQgc2hvcnQgTkROQk9PU1RfUkVHRVhfQ0FMTCBnbG9iYWxfbG93ZXI8dW5zaWduZWQgc2hvcnQ+KHVuc2lnbmVkIHNob3J0IGMpeyByZXR1cm4gZG9fZ2xvYmFsX2xvd2VyKGMpOyB9Ci10ZW1wbGF0ZTw+IGlubGluZSB1bnNpZ25lZCBzaG9ydCBORE5CT09TVF9SRUdFWF9DQUxMIGdsb2JhbF91cHBlcjx1bnNpZ25lZCBzaG9ydD4odW5zaWduZWQgc2hvcnQgYyl7IHJldHVybiBkb19nbG9iYWxfdXBwZXIoYyk7IH0KLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1pbnQgZ2xvYmFsX3ZhbHVlKGNoYXJUIGMpCi17Ci0gICBzdGF0aWMgY29uc3QgY2hhclQgemVybyA9ICcwJzsKLSAgIHN0YXRpYyBjb25zdCBjaGFyVCBuaW5lID0gJzknOwotICAgc3RhdGljIGNvbnN0IGNoYXJUIGEgPSAnYSc7Ci0gICBzdGF0aWMgY29uc3QgY2hhclQgZiA9ICdmJzsKLSAgIHN0YXRpYyBjb25zdCBjaGFyVCBBID0gJ0EnOwotICAgc3RhdGljIGNvbnN0IGNoYXJUIEYgPSAnRic7Ci0KLSAgIGlmKGMgPiBmKSByZXR1cm4gLTE7Ci0gICBpZihjID49IGEpIHJldHVybiAxMCArIChjIC0gYSk7Ci0gICBpZihjID4gRikgcmV0dXJuIC0xOwotICAgaWYoYyA+PSBBKSByZXR1cm4gMTAgKyAoYyAtIEEpOwotICAgaWYoYyA+IG5pbmUpIHJldHVybiAtMTsKLSAgIGlmKGMgPj0gemVybykgcmV0dXJuIGMgLSB6ZXJvOwotICAgcmV0dXJuIC0xOwotfQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1pbnQgZ2xvYmFsX3RvaShjb25zdCBjaGFyVComIHAxLCBjb25zdCBjaGFyVCogcDIsIGludCByYWRpeCwgY29uc3QgdHJhaXRzJiB0KQotewotICAgKHZvaWQpdDsgLy8gd2FybmluZyBzdXBwcmVzc2lvbgotICAgaW50IG5leHRfdmFsdWUgPSB0LnZhbHVlKCpwMSwgcmFkaXgpOwotICAgaWYoKHAxID09IHAyKSB8fCAobmV4dF92YWx1ZSA8IDApIHx8IChuZXh0X3ZhbHVlID49IHJhZGl4KSkKLSAgICAgIHJldHVybiAtMTsKLSAgIGludCByZXN1bHQgPSAwOwotICAgd2hpbGUocDEgIT0gcDIpCi0gICB7Ci0gICAgICBuZXh0X3ZhbHVlID0gdC52YWx1ZSgqcDEsIHJhZGl4KTsKLSAgICAgIGlmKChuZXh0X3ZhbHVlIDwgMCkgfHwgKG5leHRfdmFsdWUgPj0gcmFkaXgpKQotICAgICAgICAgYnJlYWs7Ci0gICAgICByZXN1bHQgKj0gcmFkaXg7Ci0gICAgICByZXN1bHQgKz0gbmV4dF92YWx1ZTsKLSAgICAgICsrcDE7Ci0gICB9Ci0gICByZXR1cm4gcmVzdWx0OwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1pbmxpbmUgY29uc3QgY2hhclQqIGdldF9lc2NhcGVfUl9zdHJpbmcoKQotewotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jICBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQzMDkgNDI0NSkKLSNlbmRpZgotICAgc3RhdGljIGNvbnN0IGNoYXJUIGUxW10gPSB7ICcoJywgJz8nLCAnPicsICdceDBEJywgJ1x4MEEnLCAnPycsCi0gICAgICAnfCcsICdbJywgJ1x4MEEnLCAnXHgwQicsICdceDBDJywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oJ1x4ODUnKSwgJ1xcJywgJ3gnLCAneycsICcyJywgJzAnLCAnMicsICc4JywgJ30nLAotICAgICAgICAgICAgICAgICdcXCcsICd4JywgJ3snLCAnMicsICcwJywgJzInLCAnOScsICd9JywgJ10nLCAnKScsICdcMCcgfTsKLSAgIHN0YXRpYyBjb25zdCBjaGFyVCBlMltdID0geyAnKCcsICc/JywgJz4nLCAnXHgwRCcsICdceDBBJywgJz8nLAotICAgICAgJ3wnLCAnWycsICdceDBBJywgJ1x4MEInLCAnXHgwQycsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KCdceDg1JyksICddJywgJyknLCAnXDAnIH07Ci0KLSAgIGNoYXJUIGMgPSBzdGF0aWNfY2FzdDxjaGFyVD4oMHgyMDI5dSk7Ci0gICBib29sIGIgPSAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGMpID09IDB4MjAyOXUpOwotCi0gICByZXR1cm4gKGIgPyBlMSA6IGUyKTsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jICBwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLX0KLQotdGVtcGxhdGUgPD4KLWlubGluZSBjb25zdCBjaGFyKiBnZXRfZXNjYXBlX1Jfc3RyaW5nPGNoYXI+KCkKLXsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jICBwcmFnbWEgd2FybmluZyhwdXNoKQotIyAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MzA5KQotI2VuZGlmCi0gICBzdGF0aWMgY29uc3QgY2hhciBlMltdID0geyAnKCcsICc/JywgJz4nLCAnXHgwRCcsICdceDBBJywgJz8nLAotICAgICAgJ3wnLCAnWycsICdceDBBJywgJ1x4MEInLCAnXHgwQycsICdceDg1JywgJ10nLCAnKScsICdcMCcgfTsKLSAgIHJldHVybiBlMjsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jICBwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLX0KLQotfSAvLyByZV9kZXRhaWwKLX0gLy8gYm9vc3QKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfd29ya2Fyb3VuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3dvcmthcm91bmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOWQ0Mzg1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfd29ya2Fyb3VuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMzIgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNQotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIHJlZ2V4X3dvcmthcm91bmRzLmNwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogRGVjbGFyZXMgTWlzYyB3b3JrYXJvdW5kcy4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9XT1JLQVJPVU5EX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9XT1JLQVJPVU5EX0hQUAotCi0KLSNpbmNsdWRlIDxuZXc+Ci0jaW5jbHVkZSA8Y3N0cmluZz4KLSNpbmNsdWRlIDxjc3RkbGliPgotI2luY2x1ZGUgPGNzdGRkZWY+Ci0jaW5jbHVkZSA8Y2Fzc2VydD4KLSNpbmNsdWRlIDxjc3RkaW8+Ci0jaW5jbHVkZSA8Y2xpbWl0cz4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8c3RkZXhjZXB0PgotI2luY2x1ZGUgPGl0ZXJhdG9yPgotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxpb3Nmd2Q+Ci0jaW5jbHVkZSA8dmVjdG9yPgotI2luY2x1ZGUgPG1hcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9saW1pdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY3N0ZGludC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGhyb3dfZXhjZXB0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zY29wZWRfcHRyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zY29wZWRfYXJyYXkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NoYXJlZF9wdHIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sX2Z3ZC5ocHA+Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9MT0NBTEUKLSMgICBpbmNsdWRlIDxsb2NhbGU+Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpCi1uYW1lc3BhY2Ugc3RkewotICAgdXNpbmcgOjpzcHJpbnRmOyB1c2luZyA6OnN0cmNweTsgdXNpbmcgOjpzdHJjYXQ7IHVzaW5nIDo6c3RybGVuOwotfQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsgbmFtZXNwYWNlIHJlX2RldGFpbHsKLSNpZmRlZiBORE5CT09TVF9OT19TVERfRElTVEFOQ0UKLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RkOjpwdHJkaWZmX3QgZGlzdGFuY2UoY29uc3QgVCYgeCwgY29uc3QgVCYgeSkKLXsgcmV0dXJuIHkgLSB4OyB9Ci0jZWxzZQotdXNpbmcgc3RkOjpkaXN0YW5jZTsKLSNlbmRpZgotfX0KLQotCi0jaWZkZWYgTkROQk9PU1RfUkVHRVhfTk9fQk9PTAotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX01BS0VfQk9PTCh4KSBzdGF0aWNfY2FzdDxib29sPigoeCkgPyB0cnVlIDogZmFsc2UpCi0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX01BS0VfQk9PTCh4KSBzdGF0aWNfY2FzdDxib29sPih4KQotI2VuZGlmCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICoKLSAqICBGaXggYnJva2VuIGJyb2tlbiBuYW1lc3BhY2Ugc3VwcG9ydDoKLSAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpICYmIGRlZmluZWQoX19jcGx1c3BsdXMpCi0KLW5hbWVzcGFjZSBzdGR7Ci0gICB1c2luZyA6OnB0cmRpZmZfdDsKLSAgIHVzaW5nIDo6c2l6ZV90OwotICAgdXNpbmcgOjphYnM7Ci0gICB1c2luZyA6Om1lbXNldDsKLSAgIHVzaW5nIDo6bWVtY3B5OwotfQotCi0jZW5kaWYKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKgotICogIGhlbHBlciBmdW5jdGlvbnMgcG9pbnRlcl9jb25zdHJ1Y3QvcG9pbnRlcl9kZXN0cm95OgotICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLW5hbWVzcGFjZSBuZG5ib29zdHsgbmFtZXNwYWNlIHJlX2RldGFpbHsKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyAocHVzaCkKLSNwcmFnbWEgd2FybmluZyAoZGlzYWJsZSA6IDQxMDApCi0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1pbmxpbmUgdm9pZCBwb2ludGVyX2Rlc3Ryb3koVCogcCkKLXsgcC0+flQoKTsgKHZvaWQpcDsgfQotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nIChwb3ApCi0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1pbmxpbmUgdm9pZCBwb2ludGVyX2NvbnN0cnVjdChUKiBwLCBjb25zdCBUJiB0KQoteyBuZXcgKHApIFQodCk7IH0KLQotfX0gLy8gbmFtZXNwYWNlcwotI2VuZGlmCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICoKLSAqICBoZWxwZXIgZnVuY3Rpb24gY29weToKLSAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1uYW1lc3BhY2UgbmRuYm9vc3R7IG5hbWVzcGFjZSByZV9kZXRhaWx7Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLD49MTQwMCkgJiYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8MTYwMCkgJiYgZGVmaW5lZChfQ1BQTElCX1ZFUikgJiYgZGVmaW5lZChORE5CT09TVF9ESU5LVU1XQVJFX1NURExJQikgJiYgIShkZWZpbmVkKF9fU0dJX1NUTF9QT1JUKSB8fCBkZWZpbmVkKF9TVExQT1JUX1ZFUlNJT04pKQotICAgLy8KLSAgIC8vIE1TVkMgOCB3aWxsIGVpdGhlciBlbWl0IHdhcm5pbmdzIG9yIGVsc2UgcmVmdXNlIHRvIGNvbXBpbGUKLSAgIC8vIGNvZGUgdGhhdCBtYWtlcyBwZXJmZWN0bHkgbGVnaXRpbWF0ZSB1c2Ugb2Ygc3RkOjpjb3B5LCB3aGVuCi0gICAvLyB0aGUgT3V0cHV0SXRlcmF0b3IgdHlwZSBpcyBhIHVzZXItZGVmaW5lZCBjbGFzcyAoYXBwYXJlbnRseSBhbGwgdXNlciAKLSAgIC8vIGRlZmluZWQgaXRlcmF0b3JzIGFyZSAidW5zYWZlIikuICBUaGlzIGNvZGUgd29ya3MgYXJvdW5kIHRoYXQ6Ci0gICAvLwotICAgdGVtcGxhdGU8Y2xhc3MgSW5wdXRJdGVyYXRvciwgY2xhc3MgT3V0cHV0SXRlcmF0b3I+Ci0gICBpbmxpbmUgT3V0cHV0SXRlcmF0b3IgY29weSgKLSAgICAgIElucHV0SXRlcmF0b3IgZmlyc3QsIAotICAgICAgSW5wdXRJdGVyYXRvciBsYXN0LCAKLSAgICAgIE91dHB1dEl0ZXJhdG9yIGRlc3QKLSAgICkKLSAgIHsKLSAgICAgIHJldHVybiBzdGRleHQ6OnVuY2hlY2tlZF9jb3B5KGZpcnN0LCBsYXN0LCBkZXN0KTsKLSAgIH0KLSAgIHRlbXBsYXRlPGNsYXNzIElucHV0SXRlcmF0b3IxLCBjbGFzcyBJbnB1dEl0ZXJhdG9yMj4KLSAgIGlubGluZSBib29sIGVxdWFsKAotICAgICAgSW5wdXRJdGVyYXRvcjEgZmlyc3QsIAotICAgICAgSW5wdXRJdGVyYXRvcjEgbGFzdCwgCi0gICAgICBJbnB1dEl0ZXJhdG9yMiB3aXRoCi0gICApCi0gICB7Ci0gICAgICByZXR1cm4gc3RkZXh0Ojp1bmNoZWNrZWRfZXF1YWwoZmlyc3QsIGxhc3QsIHdpdGgpOwotICAgfQotI2VsaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA+IDE1MDApCi0gICAvLwotICAgLy8gTVNWQyAxMCB3aWxsIGVpdGhlciBlbWl0IHdhcm5pbmdzIG9yIGVsc2UgcmVmdXNlIHRvIGNvbXBpbGUKLSAgIC8vIGNvZGUgdGhhdCBtYWtlcyBwZXJmZWN0bHkgbGVnaXRpbWF0ZSB1c2Ugb2Ygc3RkOjpjb3B5LCB3aGVuCi0gICAvLyB0aGUgT3V0cHV0SXRlcmF0b3IgdHlwZSBpcyBhIHVzZXItZGVmaW5lZCBjbGFzcyAoYXBwYXJlbnRseSBhbGwgdXNlciAKLSAgIC8vIGRlZmluZWQgaXRlcmF0b3JzIGFyZSAidW5zYWZlIikuICBXaGF0J3MgbW9yZSBNaWNyb3NvZnQgaGF2ZSByZW1vdmVkIHRoZWlyCi0gICAvLyBub24tc3RhbmRhcmQgInVuY2hlY2tlZCIgdmVyc2lvbnMsIGV2ZW4gdGhvdWdoIHRoZWlyIHN0aWxsIGluIHRoZSBNUwotICAgLy8gZG9jdW1lbnRhdGlvbiEhIFdvcmsgYXJvdW5kIHRoaXMgYXMgYmVzdCB3ZSBjYW46IAotICAgLy8KLSAgIHRlbXBsYXRlPGNsYXNzIElucHV0SXRlcmF0b3IsIGNsYXNzIE91dHB1dEl0ZXJhdG9yPgotICAgaW5saW5lIE91dHB1dEl0ZXJhdG9yIGNvcHkoCi0gICAgICBJbnB1dEl0ZXJhdG9yIGZpcnN0LCAKLSAgICAgIElucHV0SXRlcmF0b3IgbGFzdCwgCi0gICAgICBPdXRwdXRJdGVyYXRvciBkZXN0Ci0gICApCi0gICB7Ci0gICAgICB3aGlsZShmaXJzdCAhPSBsYXN0KQotICAgICAgICAgKmRlc3QrKyA9ICpmaXJzdCsrOwotICAgICAgcmV0dXJuIGRlc3Q7Ci0gICB9Ci0gICB0ZW1wbGF0ZTxjbGFzcyBJbnB1dEl0ZXJhdG9yMSwgY2xhc3MgSW5wdXRJdGVyYXRvcjI+Ci0gICBpbmxpbmUgYm9vbCBlcXVhbCgKLSAgICAgIElucHV0SXRlcmF0b3IxIGZpcnN0LCAKLSAgICAgIElucHV0SXRlcmF0b3IxIGxhc3QsIAotICAgICAgSW5wdXRJdGVyYXRvcjIgd2l0aAotICAgKQotICAgewotICAgICAgd2hpbGUoZmlyc3QgIT0gbGFzdCkKLSAgICAgICAgIGlmKCpmaXJzdCsrICE9ICp3aXRoKyspIHJldHVybiBmYWxzZTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgfQotI2Vsc2UgCi0gICB1c2luZyBzdGQ6OmNvcHk7IAotICAgdXNpbmcgc3RkOjplcXVhbDsgCi0jZW5kaWYgCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLD49MTQwMCkgJiYgZGVmaW5lZChfX1NURENfV0FOVF9TRUNVUkVfTElCX18pICYmIF9fU1REQ19XQU5UX1NFQ1VSRV9MSUJfXyAKLQotICAgLy8gdXNlIHNhZmUgdmVyc2lvbnMgb2Ygc3RyY3B5IGV0YzoKLSAgIHVzaW5nIDo6c3RyY3B5X3M7Ci0gICB1c2luZyA6OnN0cmNhdF9zOwotI2Vsc2UKLSAgIGlubGluZSBzdGQ6OnNpemVfdCBzdHJjcHlfcygKLSAgICAgIGNoYXIgKnN0ckRlc3RpbmF0aW9uLAotICAgICAgc3RkOjpzaXplX3Qgc2l6ZUluQnl0ZXMsCi0gICAgICBjb25zdCBjaGFyICpzdHJTb3VyY2UgCi0gICApCi0gICB7Ci0gICAgICBpZihzdGQ6OnN0cmxlbihzdHJTb3VyY2UpKzEgPiBzaXplSW5CeXRlcykKLSAgICAgICAgIHJldHVybiAxOwotICAgICAgc3RkOjpzdHJjcHkoc3RyRGVzdGluYXRpb24sIHN0clNvdXJjZSk7Ci0gICAgICByZXR1cm4gMDsKLSAgIH0KLSAgIGlubGluZSBzdGQ6OnNpemVfdCBzdHJjYXRfcygKLSAgICAgIGNoYXIgKnN0ckRlc3RpbmF0aW9uLAotICAgICAgc3RkOjpzaXplX3Qgc2l6ZUluQnl0ZXMsCi0gICAgICBjb25zdCBjaGFyICpzdHJTb3VyY2UgCi0gICApCi0gICB7Ci0gICAgICBpZihzdGQ6OnN0cmxlbihzdHJTb3VyY2UpICsgc3RkOjpzdHJsZW4oc3RyRGVzdGluYXRpb24pICsgMSA+IHNpemVJbkJ5dGVzKQotICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICBzdGQ6OnN0cmNhdChzdHJEZXN0aW5hdGlvbiwgc3RyU291cmNlKTsKLSAgICAgIHJldHVybiAwOwotICAgfQotCi0jZW5kaWYKLQotICAgaW5saW5lIHZvaWQgb3ZlcmZsb3dfZXJyb3JfaWZfbm90X3plcm8oc3RkOjpzaXplX3QgaSkKLSAgIHsKLSAgICAgIGlmKGkpCi0gICAgICB7Ci0gICAgICAgICBzdGQ6Om92ZXJmbG93X2Vycm9yIGUoIlN0cmluZyBidWZmZXIgdG9vIHNtYWxsIik7Ci0gICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGUpOwotICAgICAgfQotICAgfQotCi19fSAvLyBuYW1lc3BhY2VzCi0KLSNlbmRpZiAvLyBfX2NwbHVzcGx1cwotCi0jZW5kaWYgLy8gaW5jbHVkZSBndWFyZAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3N0YXRlcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3N0YXRlcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2OThmYTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9zdGF0ZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzAxICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICBzdGF0ZXMuY3BwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBEZWNsYXJlcyBpbnRlcm5hbCBzdGF0ZSBtYWNoaW5lIHN0cnVjdHVyZXMuCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfU1RBVEVTX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9WNF9TVEFURVNfSFBQCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotbmFtZXNwYWNlIHJlX2RldGFpbHsKLQotLyoqKiBtYXNrX3R5cGUgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotV2hlbmV2ZXIgd2UgaGF2ZSBhIGNob2ljZSBvZiB0d28gYWx0ZXJuYXRpdmVzLCB3ZSB1c2UgYW4gYXJyYXkgb2YgYnl0ZXMKLXRvIGluZGljYXRlIHdoaWNoIG9mIHRoZSB0d28gYWx0ZXJuYXRpdmVzIGl0IGlzIHBvc3NpYmxlIHRvIHRha2UgZm9yIGFueQotZ2l2ZW4gaW5wdXQgY2hhcmFjdGVyLiAgSWYgbWFza190YWtlIGlzIHNldCwgdGhlbiB3ZSBjYW4gdGFrZSB0aGUgbmV4dCAKLXN0YXRlLCBhbmQgaWYgbWFza19za2lwIGlzIHNldCB0aGVuIHdlIGNhbiB0YWtlIHRoZSBhbHRlcm5hdGl2ZS4KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotZW51bSBtYXNrX3R5cGUKLXsKLSAgIG1hc2tfdGFrZSA9IDEsCi0gICBtYXNrX3NraXAgPSAyLAotICAgbWFza19pbml0ID0gNCwKLSAgIG1hc2tfYW55ID0gbWFza19za2lwIHwgbWFza190YWtlLAotICAgbWFza19hbGwgPSBtYXNrX2FueQotfTsKLQotLyoqKiBoZWxwZXJzICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLVRoZXNlIGhlbHBlcnMgbGV0IHVzIHVzZSBmdW5jdGlvbiBvdmVybG9hZCByZXNvbHV0aW9uIHRvIGRldGVjdCB3aGV0aGVyCi13ZSBoYXZlIG5hcnJvdyBvciB3aWRlIGNoYXJhY3RlciBzdHJpbmdzOgotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1zdHJ1Y3QgX25hcnJvd190eXBle307Ci1zdHJ1Y3QgX3dpZGVfdHlwZXt9OwotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPiBzdHJ1Y3QgaXNfYnl0ZTsKLXRlbXBsYXRlPD4gICAgICAgICAgICAgc3RydWN0IGlzX2J5dGU8Y2hhcj4gICAgICAgICB7IHR5cGVkZWYgX25hcnJvd190eXBlIHdpZHRoX3R5cGU7IH07Ci10ZW1wbGF0ZTw+ICAgICAgICAgICAgIHN0cnVjdCBpc19ieXRlPHVuc2lnbmVkIGNoYXI+eyB0eXBlZGVmIF9uYXJyb3dfdHlwZSB3aWR0aF90eXBlOyB9OwotdGVtcGxhdGU8PiAgICAgICAgICAgICBzdHJ1Y3QgaXNfYnl0ZTxzaWduZWQgY2hhcj4gIHsgdHlwZWRlZiBfbmFycm93X3R5cGUgd2lkdGhfdHlwZTsgfTsKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4gc3RydWN0IGlzX2J5dGUgICAgICAgICAgICAgICB7IHR5cGVkZWYgX3dpZGVfdHlwZSB3aWR0aF90eXBlOyB9OwotCi0vKioqIGVudW0gc3ludGF4X2VsZW1lbnRfdHlwZSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLUV2ZXJ5IHJlY29yZCBpbiB0aGUgc3RhdGUgbWFjaGluZSBmYWxscyBpbnRvIG9uZSBvZiB0aGUgZm9sbG93aW5nIHR5cGVzOgotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1lbnVtIHN5bnRheF9lbGVtZW50X3R5cGUKLXsKLSAgIC8vIHN0YXJ0IG9mIGEgbWFya2VkIHN1Yi1leHByZXNzaW9uLCBvciBwZXJsLXN0eWxlICg/Li4uKSBleHRlbnNpb24KLSAgIHN5bnRheF9lbGVtZW50X3N0YXJ0bWFyayA9IDAsCi0gICAvLyBlbmQgb2YgYSBtYXJrZWQgc3ViLWV4cHJlc3Npb24sIG9yIHBlcmwtc3R5bGUgKD8uLi4pIGV4dGVuc2lvbgotICAgc3ludGF4X2VsZW1lbnRfZW5kbWFyayA9IHN5bnRheF9lbGVtZW50X3N0YXJ0bWFyayArIDEsCi0gICAvLyBhbnkgc2VxdWVuY2Ugb2YgbGl0ZXJhbCBjaGFyYWN0ZXJzCi0gICBzeW50YXhfZWxlbWVudF9saXRlcmFsID0gc3ludGF4X2VsZW1lbnRfZW5kbWFyayArIDEsCi0gICAvLyBzdGFydCBvZiBsaW5lIGFzc2VydGlvbjogXgotICAgc3ludGF4X2VsZW1lbnRfc3RhcnRfbGluZSA9IHN5bnRheF9lbGVtZW50X2xpdGVyYWwgKyAxLAotICAgLy8gZW5kIG9mIGxpbmUgYXNzZXJ0aW9uICQKLSAgIHN5bnRheF9lbGVtZW50X2VuZF9saW5lID0gc3ludGF4X2VsZW1lbnRfc3RhcnRfbGluZSArIDEsCi0gICAvLyBtYXRjaCBhbnkgY2hhcmFjdGVyOiAuCi0gICBzeW50YXhfZWxlbWVudF93aWxkID0gc3ludGF4X2VsZW1lbnRfZW5kX2xpbmUgKyAxLAotICAgLy8gZW5kIG9mIGV4cHJlc3Npb246IHdlIGhhdmUgYSBtYXRjaCB3aGVuIHdlIGdldCBoZXJlCi0gICBzeW50YXhfZWxlbWVudF9tYXRjaCA9IHN5bnRheF9lbGVtZW50X3dpbGQgKyAxLAotICAgLy8gcGVybCBzdHlsZSB3b3JkIGJvdW5kYXJ5OiBcYgotICAgc3ludGF4X2VsZW1lbnRfd29yZF9ib3VuZGFyeSA9IHN5bnRheF9lbGVtZW50X21hdGNoICsgMSwKLSAgIC8vIHBlcmwgc3R5bGUgd2l0aGluIHdvcmQgYm91bmRhcnk6IFxCCi0gICBzeW50YXhfZWxlbWVudF93aXRoaW5fd29yZCA9IHN5bnRheF9lbGVtZW50X3dvcmRfYm91bmRhcnkgKyAxLAotICAgLy8gc3RhcnQgb2Ygd29yZCBhc3NlcnRpb246IFw8Ci0gICBzeW50YXhfZWxlbWVudF93b3JkX3N0YXJ0ID0gc3ludGF4X2VsZW1lbnRfd2l0aGluX3dvcmQgKyAxLAotICAgLy8gZW5kIG9mIHdvcmQgYXNzZXJ0aW9uOiBcPgotICAgc3ludGF4X2VsZW1lbnRfd29yZF9lbmQgPSBzeW50YXhfZWxlbWVudF93b3JkX3N0YXJ0ICsgMSwKLSAgIC8vIHN0YXJ0IG9mIGJ1ZmZlciBhc3NlcnRpb246IFxgCi0gICBzeW50YXhfZWxlbWVudF9idWZmZXJfc3RhcnQgPSBzeW50YXhfZWxlbWVudF93b3JkX2VuZCArIDEsCi0gICAvLyBlbmQgb2YgYnVmZmVyIGFzc2VydGlvbjogXCcKLSAgIHN5bnRheF9lbGVtZW50X2J1ZmZlcl9lbmQgPSBzeW50YXhfZWxlbWVudF9idWZmZXJfc3RhcnQgKyAxLAotICAgLy8gYmFja3JlZmVyZW5jZSB0byBwcmV2aW91c2x5IG1hdGNoZWQgc3ViLWV4cHJlc3Npb24KLSAgIHN5bnRheF9lbGVtZW50X2JhY2tyZWYgPSBzeW50YXhfZWxlbWVudF9idWZmZXJfZW5kICsgMSwKLSAgIC8vIGVpdGhlciBhIHdpZGUgY2hhcmFjdGVyIHNldCBbLi5dIG9yIG9uZSB3aXRoIG11bHRpY2hhcmFjdGVyIGNvbGxhdGluZyBlbGVtZW50czoKLSAgIHN5bnRheF9lbGVtZW50X2xvbmdfc2V0ID0gc3ludGF4X2VsZW1lbnRfYmFja3JlZiArIDEsCi0gICAvLyBuYXJyb3cgY2hhcmFjdGVyIHNldDogWy4uLl0KLSAgIHN5bnRheF9lbGVtZW50X3NldCA9IHN5bnRheF9lbGVtZW50X2xvbmdfc2V0ICsgMSwKLSAgIC8vIGp1bXAgdG8gYSBuZXcgc3RhdGUgaW4gdGhlIG1hY2hpbmU6Ci0gICBzeW50YXhfZWxlbWVudF9qdW1wID0gc3ludGF4X2VsZW1lbnRfc2V0ICsgMSwKLSAgIC8vIGNob29zZSBiZXR3ZWVuIHR3byBwcm9kdWN0aW9uIHN0YXRlczoKLSAgIHN5bnRheF9lbGVtZW50X2FsdCA9IHN5bnRheF9lbGVtZW50X2p1bXAgKyAxLAotICAgLy8gYSByZXBlYXQKLSAgIHN5bnRheF9lbGVtZW50X3JlcCA9IHN5bnRheF9lbGVtZW50X2FsdCArIDEsCi0gICAvLyBtYXRjaCBhIGNvbWJpbmluZyBjaGFyYWN0ZXIgc2VxdWVuY2UKLSAgIHN5bnRheF9lbGVtZW50X2NvbWJpbmluZyA9IHN5bnRheF9lbGVtZW50X3JlcCArIDEsCi0gICAvLyBwZXJsIHN0eWxlIHNvZnQgYnVmZmVyIGVuZDogXHoKLSAgIHN5bnRheF9lbGVtZW50X3NvZnRfYnVmZmVyX2VuZCA9IHN5bnRheF9lbGVtZW50X2NvbWJpbmluZyArIDEsCi0gICAvLyBwZXJsIHN0eWxlIGNvbnRpbnVhdGlvbjogXEcKLSAgIHN5bnRheF9lbGVtZW50X3Jlc3RhcnRfY29udGludWUgPSBzeW50YXhfZWxlbWVudF9zb2Z0X2J1ZmZlcl9lbmQgKyAxLAotICAgLy8gc2luZ2xlIGNoYXJhY3RlciByZXBlYXRzOgotICAgc3ludGF4X2VsZW1lbnRfZG90X3JlcCA9IHN5bnRheF9lbGVtZW50X3Jlc3RhcnRfY29udGludWUgKyAxLAotICAgc3ludGF4X2VsZW1lbnRfY2hhcl9yZXAgPSBzeW50YXhfZWxlbWVudF9kb3RfcmVwICsgMSwKLSAgIHN5bnRheF9lbGVtZW50X3Nob3J0X3NldF9yZXAgPSBzeW50YXhfZWxlbWVudF9jaGFyX3JlcCArIDEsCi0gICBzeW50YXhfZWxlbWVudF9sb25nX3NldF9yZXAgPSBzeW50YXhfZWxlbWVudF9zaG9ydF9zZXRfcmVwICsgMSwKLSAgIC8vIGEgYmFja3N0ZXAgZm9yIGxvb2tiZWhpbmQgcmVwZWF0czoKLSAgIHN5bnRheF9lbGVtZW50X2JhY2tzdGVwID0gc3ludGF4X2VsZW1lbnRfbG9uZ19zZXRfcmVwICsgMSwKLSAgIC8vIGFuIGFzc2VydGlvbiB0aGF0IGEgbWFyayB3YXMgbWF0Y2hlZDoKLSAgIHN5bnRheF9lbGVtZW50X2Fzc2VydF9iYWNrcmVmID0gc3ludGF4X2VsZW1lbnRfYmFja3N0ZXAgKyAxLAotICAgc3ludGF4X2VsZW1lbnRfdG9nZ2xlX2Nhc2UgPSBzeW50YXhfZWxlbWVudF9hc3NlcnRfYmFja3JlZiArIDEsCi0gICAvLyBhIHJlY3Vyc2l2ZSBleHByZXNzaW9uOgotICAgc3ludGF4X2VsZW1lbnRfcmVjdXJzZSA9IHN5bnRheF9lbGVtZW50X3RvZ2dsZV9jYXNlICsgMQotfTsKLQotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX0RFQlVHCi0vLyBkd2EgMDkvMjYvMDAgLSBUaGlzIGlzIG5lZWRlZCB0byBzdXBwcmVzcyB3YXJuaW5ncyBhYm91dCBhbiBhbWJpZ3VvdXMgY29udmVyc2lvbgotc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYsIHN5bnRheF9lbGVtZW50X3R5cGUpOwotI2VuZGlmCi0KLXN0cnVjdCByZV9zeW50YXhfYmFzZTsKLQotLyoqKiB1bmlvbiBvZmZzZXRfdHlwZSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLVBvaW50cyB0byBhbm90aGVyIHN0YXRlIGluIHRoZSBtYWNoaW5lLiAgRHVyaW5nIG1hY2hpbmUgY29uc3RydWN0aW9uCi13ZSB1c2UgaW50ZWdyYWwgb2Zmc2V0cywgYnV0IHRoZXNlIGFyZSBjb252ZXJ0ZWQgdG8gcG9pbnRlcnMgYmVmb3JlCi1leGVjdXRpb24gb2YgdGhlIG1hY2hpbmUuCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXVuaW9uIG9mZnNldF90eXBlCi17Ci0gICByZV9zeW50YXhfYmFzZSogICBwOwotICAgc3RkOjpwdHJkaWZmX3QgICAgaTsKLX07Ci0KLS8qKiogc3RydWN0IHJlX3N5bnRheF9iYXNlICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi1CYXNlIGNsYXNzIGZvciBhbGwgc3RhdGVzIGluIHRoZSBtYWNoaW5lLgotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1zdHJ1Y3QgcmVfc3ludGF4X2Jhc2UKLXsKLSAgIHN5bnRheF9lbGVtZW50X3R5cGUgICB0eXBlOyAgICAgICAgIC8vIHdoYXQga2luZCBvZiBzdGF0ZSB0aGlzIGlzCi0gICBvZmZzZXRfdHlwZSAgICAgICAgICAgbmV4dDsgICAgICAgICAvLyBuZXh0IHN0YXRlIGluIHRoZSBtYWNoaW5lCi19OwotCi0vKioqIHN0cnVjdCByZV9icmFjZSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotQSBtYXJrZWQgcGFyZW50aGVzaXMuCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXN0cnVjdCByZV9icmFjZSA6IHB1YmxpYyByZV9zeW50YXhfYmFzZQotewotICAgLy8gVGhlIGluZGV4IHRvIG1hdGNoLCBjYW4gYmUgemVybyAoZG9uJ3QgbWFyayB0aGUgc3ViLWV4cHJlc3Npb24pCi0gICAvLyBvciBuZWdhdGl2ZSAoZm9yIHBlcmwgc3R5bGUgKD8uLi4pIGV4dGVudGlvbnMpOgotICAgaW50IGluZGV4OwotICAgYm9vbCBpY2FzZTsKLX07Ci0KLS8qKiogc3RydWN0IHJlX2RvdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotTWF0Y2ggYW55dGhpbmcuCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLWVudW0KLXsKLSAgIGRvbnRfY2FyZSA9IDEsCi0gICBmb3JjZV9ub3RfbmV3bGluZSA9IDAsCi0gICBmb3JjZV9uZXdsaW5lID0gMiwKLQotICAgdGVzdF9ub3RfbmV3bGluZSA9IDIsCi0gICB0ZXN0X25ld2xpbmUgPSAzCi19Owotc3RydWN0IHJlX2RvdCA6IHB1YmxpYyByZV9zeW50YXhfYmFzZQotewotICAgdW5zaWduZWQgY2hhciBtYXNrOwotfTsKLQotLyoqKiBzdHJ1Y3QgcmVfbGl0ZXJhbCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLUEgc3RyaW5nIG9mIGxpdGVyYWxzLCBmb2xsb3dpbmcgdGhpcyBzdHJ1Y3R1cmUgd2lsbCBiZSBhbiAKLWFycmF5IG9mIGNoYXJhY3RlcnM6IGNoYXJUW2xlbmd0aF0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotc3RydWN0IHJlX2xpdGVyYWwgOiBwdWJsaWMgcmVfc3ludGF4X2Jhc2UKLXsKLSAgIHVuc2lnbmVkIGludCBsZW5ndGg7Ci19OwotCi0vKioqIHN0cnVjdCByZV9jYXNlICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotSW5kaWNhdGVzIHdoZXRoZXIgd2UgYXJlIG1vdmluZyB0byBhIGNhc2UgaW5zZW5zaXZlIGJsb2NrIG9yIG5vdAotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1zdHJ1Y3QgcmVfY2FzZSA6IHB1YmxpYyByZV9zeW50YXhfYmFzZQotewotICAgYm9vbCBpY2FzZTsKLX07Ci0KLS8qKiogc3RydWN0IHJlX3NldF9sb25nICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi1BIHdpZGUgY2hhcmFjdGVyIHNldCBvZiBjaGFyYWN0ZXJzLCBmb2xsb3dpbmcgdGhpcyBzdHJ1Y3R1cmUgd2lsbCBiZQotYW4gYXJyYXkgb2YgdHlwZSBjaGFyVDoKLUZpcnN0IGNzaW5nbGVzIG51bGwtdGVybWluYXRlZCBzdHJpbmdzCi1UaGVuIDIgKiBjcmFuZ2VzIE5VTEwgdGVybWluYXRlZCBzdHJpbmdzCi1UaGVuIGNlcXVpdmFsZW50cyBOVUxMIHRlcm1pbmF0ZWQgc3RyaW5ncwotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi10ZW1wbGF0ZSA8Y2xhc3MgbWFza190eXBlPgotc3RydWN0IHJlX3NldF9sb25nIDogcHVibGljIHJlX3N5bnRheF9iYXNlCi17Ci0gICB1bnNpZ25lZCBpbnQgICAgICAgICAgICBjc2luZ2xlcywgY3JhbmdlcywgY2VxdWl2YWxlbnRzOwotICAgbWFza190eXBlICAgICAgICAgICAgICAgY2NsYXNzZXM7Ci0gICBtYXNrX3R5cGUgICAgICAgICAgICAgICBjbmNsYXNzZXM7Ci0gICBib29sICAgICAgICAgICAgICAgICAgICBpc25vdDsKLSAgIGJvb2wgICAgICAgICAgICAgICAgICAgIHNpbmdsZXRvbjsKLX07Ci0KLS8qKiogc3RydWN0IHJlX3NldCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi1BIHNldCBvZiBuYXJyb3ctY2hhcmFjdGVycywgbWF0Y2hlcyBhbnkgb2YgX21hcCB3aGljaCBpcyBub25lLXplcm8KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotc3RydWN0IHJlX3NldCA6IHB1YmxpYyByZV9zeW50YXhfYmFzZQotewotICAgdW5zaWduZWQgY2hhciBfbWFwWzEgPDwgQ0hBUl9CSVRdOwotfTsKLQotLyoqKiBzdHJ1Y3QgcmVfanVtcCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLUp1bXAgdG8gYSBuZXcgbG9jYXRpb24gaW4gdGhlIG1hY2hpbmUgKG5vdCBuZXh0KS4KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotc3RydWN0IHJlX2p1bXAgOiBwdWJsaWMgcmVfc3ludGF4X2Jhc2UKLXsKLSAgIG9mZnNldF90eXBlICAgICBhbHQ7ICAgICAgICAgICAgICAgICAvLyBsb2NhdGlvbiB0byBqdW1wIHRvCi19OwotCi0vKioqIHN0cnVjdCByZV9hbHQgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi1KdW1wIHRvIGEgbmV3IGxvY2F0aW9uIGluIHRoZSBtYWNoaW5lIChwb3NzaWJseSBuZXh0KS4KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotc3RydWN0IHJlX2FsdCA6IHB1YmxpYyByZV9qdW1wCi17Ci0gICB1bnNpZ25lZCBjaGFyICAgX21hcFsxIDw8IENIQVJfQklUXTsgLy8gd2hpY2ggY2hhcmFjdGVycyBjYW4gdGFrZSB0aGUganVtcAotICAgdW5zaWduZWQgaW50ICAgIGNhbl9iZV9udWxsOyAgICAgICAgIC8vIHRydWUgaWYgd2UgbWF0Y2ggYSBOVUxMIHN0cmluZwotfTsKLQotLyoqKiBzdHJ1Y3QgcmVfcmVwZWF0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLVJlcGVhdCBhIHNlY3Rpb24gb2YgdGhlIG1hY2hpbmUKLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotc3RydWN0IHJlX3JlcGVhdCA6IHB1YmxpYyByZV9hbHQKLXsKLSAgIHN0ZDo6c2l6ZV90ICAgbWluLCBtYXg7ICAvLyBtaW4gYW5kIG1heCBhbGxvd2FibGUgcmVwZWF0cwotICAgaW50ICAgICAgICAgICBzdGF0ZV9pZDsgICAgICAgIC8vIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIHJlcGVhdAotICAgYm9vbCAgICAgICAgICBsZWFkaW5nOyAgIC8vIFRydWUgaWYgdGhpcyByZXBlYXQgaXMgYXQgdGhlIHN0YXJ0IG9mIHRoZSBtYWNoaW5lIChsZXRzIHVzIG9wdGltaXplIHNvbWUgc2VhcmNoZXMpCi0gICBib29sICAgICAgICAgIGdyZWVkeTsgICAgLy8gVHJ1ZSBpZiB0aGlzIGlzIGEgZ3JlZWR5IHJlcGVhdAotfTsKLQotLyoqKiBzdHJ1Y3QgcmVfcmVjdXJzZSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLVJlY3Vyc2UgdG8gYSBwYXJ0aWN1bGFyIHN1YmV4cHJlc3Npb24uCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotc3RydWN0IHJlX3JlY3Vyc2UgOiBwdWJsaWMgcmVfanVtcAotewotICAgaW50IHN0YXRlX2lkOyAgICAgICAgICAgICAvLyBpZGVudGlmaWVyIG9mIGZpcnN0IG5lc3RlZCByZXBlYXQgd2l0aGluIHRoZSByZWN1cnNpb24uCi19OwotCi0vKioqIGVudW0gcmVfanVtcF9zaXplX3R5cGUgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotUHJvdmlkZXMgY29tcGlsZWQgc2l6ZSBvZiByZV9qdW1wIHN0cnVjdHVyZSAoYWxsb3dpbmcgZm9yIHRyYWlsaW5nIGFsaWdubWVudCkuCi1XZSBwcm92aWRlIHRoaXMgc28gd2Uga25vdyBob3cgbWFueWJ5dGVzIHRvIGluc2VydCB3aGVuIGNvbnN0cnVjdGluZyB0aGUgbWFjaGluZQotKFRoZSB2YWx1ZSBvZiBwYWRkaW5nX21hc2sgaXMgZGVmaW5lZCBpbiByZWdleF9yYXdfYnVmZmVyLmhwcCkuCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLWVudW0gcmVfanVtcF9zaXplX3R5cGUKLXsKLSAgIHJlX2p1bXBfc2l6ZSA9IChzaXplb2YocmVfanVtcCkgKyBwYWRkaW5nX21hc2spICYgfihwYWRkaW5nX21hc2spLAotICAgcmVfcmVwZWF0ZXJfc2l6ZSA9IChzaXplb2YocmVfcmVwZWF0KSArIHBhZGRpbmdfbWFzaykgJiB+KHBhZGRpbmdfbWFzayksCi0gICByZV9hbHRfc2l6ZSA9IChzaXplb2YocmVfYWx0KSArIHBhZGRpbmdfbWFzaykgJiB+KHBhZGRpbmdfbWFzaykKLX07Ci0KLS8qKiogcHJvYyByZV9pc19zZXRfbWVtYmVyICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotRm9yd2FyZCBkZWNsYXJhdGlvbjogd2UnbGwgbmVlZCB0aGlzIG9uZSBsYXRlci4uLgotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXRlbXBsYXRlPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1zdHJ1Y3QgcmVnZXhfZGF0YTsKLQotdGVtcGxhdGUgPGNsYXNzIGl0ZXJhdG9yLCBjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzX3R5cGUsIGNsYXNzIGNoYXJfY2xhc3NUPgotaXRlcmF0b3IgTkROQk9PU1RfUkVHRVhfQ0FMTCByZV9pc19zZXRfbWVtYmVyKGl0ZXJhdG9yIG5leHQsIAotICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVyYXRvciBsYXN0LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVfc2V0X2xvbmc8Y2hhcl9jbGFzc1Q+KiBzZXRfLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVnZXhfZGF0YTxjaGFyVCwgdHJhaXRzX3R5cGU+JiBlLCBib29sIGljYXNlKTsKLQotfSAvLyBuYW1lc3BhY2UgcmVfZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9zdWJfbWF0Y2guaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9zdWJfbWF0Y2guaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MjFjYzgzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvc3ViX21hdGNoLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUxMiArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgc3ViX21hdGNoLmNwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogRGVjbGFyZXMgdGVtcGxhdGUgY2xhc3Mgc3ViX21hdGNoLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X1NVQl9NQVRDSF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfVjRfU1VCX01BVENIX0hQUAotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvcj4KLXN0cnVjdCBzdWJfbWF0Y2ggOiBwdWJsaWMgc3RkOjpwYWlyPEJpZGlJdGVyYXRvciwgQmlkaUl0ZXJhdG9yPgotewotICAgdHlwZWRlZiB0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxCaWRpSXRlcmF0b3I+Ojp2YWx1ZV90eXBlICAgICAgIHZhbHVlX3R5cGU7Ci0jaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERfSVRFUkFUT1JfVFJBSVRTKSB8fCBkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0gICB0eXBlZGVmICAgICAgICAgIHN0ZDo6cHRyZGlmZl90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwotI2Vsc2UKLSAgIHR5cGVkZWYgdHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8QmlkaUl0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlICBkaWZmZXJlbmNlX3R5cGU7Ci0jZW5kaWYKLSAgIHR5cGVkZWYgICAgICAgICAgQmlkaUl0ZXJhdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVyYXRvcl90eXBlOwotICAgdHlwZWRlZiAgICAgICAgICBCaWRpSXRlcmF0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yOwotICAgdHlwZWRlZiAgICAgICAgICBCaWRpSXRlcmF0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X2l0ZXJhdG9yOwotCi0gICBib29sIG1hdGNoZWQ7Ci0KLSAgIHN1Yl9tYXRjaCgpIDogc3RkOjpwYWlyPEJpZGlJdGVyYXRvciwgQmlkaUl0ZXJhdG9yPigpLCBtYXRjaGVkKGZhbHNlKSB7fQotICAgc3ViX21hdGNoKEJpZGlJdGVyYXRvciBpKSA6IHN0ZDo6cGFpcjxCaWRpSXRlcmF0b3IsIEJpZGlJdGVyYXRvcj4oaSwgaSksIG1hdGNoZWQoZmFsc2UpIHt9Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVEX0lURVJBVE9SX0NPTlNUUlVDVE9SUylcCi0gICAgICAgICAgICAgICAmJiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMTApXAotICAgICAgICAgICAgICAgJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8PSAweDA1NTEpXAotICAgICAgICAgICAgICAgJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19ERUNDWFhfVkVSLCBORE5CT09TVF9URVNURURfQVQoNjA1OTAwNDIpKQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEE+Ci0gICBvcGVyYXRvciBzdGQ6OmJhc2ljX3N0cmluZzx2YWx1ZV90eXBlLCBULCBBPiAoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbWF0Y2hlZCA/IHN0ZDo6YmFzaWNfc3RyaW5nPHZhbHVlX3R5cGUsIFQsIEE+KHRoaXMtPmZpcnN0LCB0aGlzLT5zZWNvbmQpIDogc3RkOjpiYXNpY19zdHJpbmc8dmFsdWVfdHlwZSwgVCwgQT4oKTsKLSAgIH0KLSNlbHNlCi0gICBvcGVyYXRvciBzdGQ6OmJhc2ljX3N0cmluZzx2YWx1ZV90eXBlPiAoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gc3RyKCk7Ci0gICB9Ci0jZW5kaWYKLSAgIGRpZmZlcmVuY2VfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIGxlbmd0aCgpY29uc3QKLSAgIHsKLSAgICAgIGRpZmZlcmVuY2VfdHlwZSBuID0gbWF0Y2hlZCA/IDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2UoKEJpZGlJdGVyYXRvcil0aGlzLT5maXJzdCwgKEJpZGlJdGVyYXRvcil0aGlzLT5zZWNvbmQpIDogMDsKLSAgICAgIHJldHVybiBuOwotICAgfQotICAgc3RkOjpiYXNpY19zdHJpbmc8dmFsdWVfdHlwZT4gc3RyKCljb25zdAotICAgewotICAgICAgc3RkOjpiYXNpY19zdHJpbmc8dmFsdWVfdHlwZT4gcmVzdWx0OwotICAgICAgaWYobWF0Y2hlZCkKLSAgICAgIHsKLSAgICAgICAgIHN0ZDo6c2l6ZV90IGxlbiA9IDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2UoKEJpZGlJdGVyYXRvcil0aGlzLT5maXJzdCwgKEJpZGlJdGVyYXRvcil0aGlzLT5zZWNvbmQpOwotICAgICAgICAgcmVzdWx0LnJlc2VydmUobGVuKTsKLSAgICAgICAgIEJpZGlJdGVyYXRvciBpID0gdGhpcy0+Zmlyc3Q7Ci0gICAgICAgICB3aGlsZShpICE9IHRoaXMtPnNlY29uZCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoMSwgKmkpOwotICAgICAgICAgICAgKytpOwotICAgICAgICAgfQotICAgICAgfQotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgIH0KLSAgIGludCBjb21wYXJlKGNvbnN0IHN1Yl9tYXRjaCYgcyljb25zdAotICAgewotICAgICAgaWYobWF0Y2hlZCAhPSBzLm1hdGNoZWQpCi0gICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihtYXRjaGVkKSAtIHN0YXRpY19jYXN0PGludD4ocy5tYXRjaGVkKTsKLSAgICAgIHJldHVybiBzdHIoKS5jb21wYXJlKHMuc3RyKCkpOwotICAgfQotICAgaW50IGNvbXBhcmUoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8dmFsdWVfdHlwZT4mIHMpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBzdHIoKS5jb21wYXJlKHMpOwotICAgfQotICAgaW50IGNvbXBhcmUoY29uc3QgdmFsdWVfdHlwZSogcCljb25zdAotICAgewotICAgICAgcmV0dXJuIHN0cigpLmNvbXBhcmUocCk7Ci0gICB9Ci0KLSAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBzdWJfbWF0Y2gmIHRoYXQpY29uc3QKLSAgIHsgcmV0dXJuIGNvbXBhcmUodGhhdCkgPT0gMDsgfQotICAgYm9vbCBORE5CT09TVF9SRUdFWF9DQUxMIG9wZXJhdG9yICE9KGNvbnN0IHN1Yl9tYXRjaCYgdGhhdCljb25zdAotICAgeyByZXR1cm4gY29tcGFyZSh0aGF0KSAhPSAwOyB9Ci0gICBib29sIG9wZXJhdG9yPChjb25zdCBzdWJfbWF0Y2gmIHRoYXQpY29uc3QKLSAgIHsgcmV0dXJuIGNvbXBhcmUodGhhdCkgPCAwOyB9Ci0gICBib29sIG9wZXJhdG9yPihjb25zdCBzdWJfbWF0Y2gmIHRoYXQpY29uc3QKLSAgIHsgcmV0dXJuIGNvbXBhcmUodGhhdCkgPiAwOyB9Ci0gICBib29sIG9wZXJhdG9yPD0oY29uc3Qgc3ViX21hdGNoJiB0aGF0KWNvbnN0Ci0gICB7IHJldHVybiBjb21wYXJlKHRoYXQpIDw9IDA7IH0KLSAgIGJvb2wgb3BlcmF0b3I+PShjb25zdCBzdWJfbWF0Y2gmIHRoYXQpY29uc3QKLSAgIHsgcmV0dXJuIGNvbXBhcmUodGhhdCkgPj0gMDsgfQotCi0jaWZkZWYgTkROQk9PU1RfUkVHRVhfTUFUQ0hfRVhUUkEKLSAgIHR5cGVkZWYgc3RkOjp2ZWN0b3I8c3ViX21hdGNoPEJpZGlJdGVyYXRvcj4gPiBjYXB0dXJlX3NlcXVlbmNlX3R5cGU7Ci0KLSAgIGNvbnN0IGNhcHR1cmVfc2VxdWVuY2VfdHlwZSYgY2FwdHVyZXMoKWNvbnN0Ci0gICB7Ci0gICAgICBpZighbV9jYXB0dXJlcykgCi0gICAgICAgICBtX2NhcHR1cmVzLnJlc2V0KG5ldyBjYXB0dXJlX3NlcXVlbmNlX3R5cGUoKSk7Ci0gICAgICByZXR1cm4gKm1fY2FwdHVyZXM7Ci0gICB9Ci0gICAvLwotICAgLy8gUHJpdmF0ZSBpbXBsZW1lbnRhdGlvbiBBUEk6IERPIE5PVCBVU0UhCi0gICAvLwotICAgY2FwdHVyZV9zZXF1ZW5jZV90eXBlJiBnZXRfY2FwdHVyZXMoKWNvbnN0Ci0gICB7Ci0gICAgICBpZighbV9jYXB0dXJlcykgCi0gICAgICAgICBtX2NhcHR1cmVzLnJlc2V0KG5ldyBjYXB0dXJlX3NlcXVlbmNlX3R5cGUoKSk7Ci0gICAgICByZXR1cm4gKm1fY2FwdHVyZXM7Ci0gICB9Ci0KLXByaXZhdGU6Ci0gICBtdXRhYmxlIG5kbmJvb3N0OjpzY29wZWRfcHRyPGNhcHR1cmVfc2VxdWVuY2VfdHlwZT4gbV9jYXB0dXJlczsKLXB1YmxpYzoKLQotI2VuZGlmCi0gICBzdWJfbWF0Y2goY29uc3Qgc3ViX21hdGNoJiB0aGF0LCBib29sIAotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX01BVENIX0VYVFJBCi0gICAgICBkZWVwX2NvcHkKLSNlbmRpZgotICAgICAgPSB0cnVlCi0gICAgICApIAotICAgICAgOiBzdGQ6OnBhaXI8QmlkaUl0ZXJhdG9yLCBCaWRpSXRlcmF0b3I+KHRoYXQpLCAKLSAgICAgICAgbWF0Y2hlZCh0aGF0Lm1hdGNoZWQpIAotICAgewotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX01BVENIX0VYVFJBCi0gICAgICBpZih0aGF0Lm1fY2FwdHVyZXMpCi0gICAgICAgICBpZihkZWVwX2NvcHkpCi0gICAgICAgICAgICBtX2NhcHR1cmVzLnJlc2V0KG5ldyBjYXB0dXJlX3NlcXVlbmNlX3R5cGUoKih0aGF0Lm1fY2FwdHVyZXMpKSk7Ci0jZW5kaWYKLSAgIH0KLSAgIHN1Yl9tYXRjaCYgb3BlcmF0b3I9KGNvbnN0IHN1Yl9tYXRjaCYgdGhhdCkKLSAgIHsKLSAgICAgIHRoaXMtPmZpcnN0ID0gdGhhdC5maXJzdDsKLSAgICAgIHRoaXMtPnNlY29uZCA9IHRoYXQuc2Vjb25kOwotICAgICAgbWF0Y2hlZCA9IHRoYXQubWF0Y2hlZDsKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9NQVRDSF9FWFRSQQotICAgICAgaWYodGhhdC5tX2NhcHR1cmVzKQotICAgICAgICAgZ2V0X2NhcHR1cmVzKCkgPSAqKHRoYXQubV9jYXB0dXJlcyk7Ci0jZW5kaWYKLSAgICAgIHJldHVybiAqdGhpczsKLSAgIH0KLQotCi0jaWZkZWYgTkROQk9PU1RfT0xEX1JFR0VYX0gKLSAgIC8vCi0gICAvLyB0aGUgZm9sbG93aW5nIGFyZSBkZXByZWNhdGVkLCBkbyBub3QgdXNlISEKLSAgIC8vCi0gICBvcGVyYXRvciBpbnQoKWNvbnN0OwotICAgb3BlcmF0b3IgdW5zaWduZWQgaW50KCljb25zdDsKLSAgIG9wZXJhdG9yIHNob3J0KCljb25zdAotICAgewotICAgICAgcmV0dXJuIChzaG9ydCkoaW50KSgqdGhpcyk7Ci0gICB9Ci0gICBvcGVyYXRvciB1bnNpZ25lZCBzaG9ydCgpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiAodW5zaWduZWQgc2hvcnQpKHVuc2lnbmVkIGludCkoKnRoaXMpOwotICAgfQotI2VuZGlmCi19OwotCi10eXBlZGVmIHN1Yl9tYXRjaDxjb25zdCBjaGFyKj4gY3N1Yl9tYXRjaDsKLXR5cGVkZWYgc3ViX21hdGNoPHN0ZDo6c3RyaW5nOjpjb25zdF9pdGVyYXRvcj4gc3N1Yl9tYXRjaDsKLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi10eXBlZGVmIHN1Yl9tYXRjaDxjb25zdCB3Y2hhcl90Kj4gd2NzdWJfbWF0Y2g7Ci10eXBlZGVmIHN1Yl9tYXRjaDxzdGQ6OndzdHJpbmc6OmNvbnN0X2l0ZXJhdG9yPiB3c3N1Yl9tYXRjaDsKLSNlbmRpZgotCi0vLyBjb21wYXJpc29uIHRvIHN0ZDo6YmFzaWNfc3RyaW5nPD4gcGFydCAxOgotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yID09IChjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUsIHRyYWl0cywgQWxsb2NhdG9yPiYgcywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0pCi17IHJldHVybiBzLmNvbXBhcmUobS5zdHIoKSkgPT0gMDsgfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yICE9IChjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUsIHRyYWl0cywgQWxsb2NhdG9yPiYgcywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0pCi17IHJldHVybiBzLmNvbXBhcmUobS5zdHIoKSkgIT0gMDsgfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yIDwgKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSwgdHJhaXRzLCBBbGxvY2F0b3I+JiBzLAotICAgICAgICAgICAgICAgICBjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtKQoteyByZXR1cm4gcy5jb21wYXJlKG0uc3RyKCkpIDwgMDsgfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yIDw9IChjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUsIHRyYWl0cywgQWxsb2NhdG9yPiYgcywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0pCi17IHJldHVybiBzLmNvbXBhcmUobS5zdHIoKSkgPD0gMDsgfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yID49IChjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUsIHRyYWl0cywgQWxsb2NhdG9yPiYgcywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0pCi17IHJldHVybiBzLmNvbXBhcmUobS5zdHIoKSkgPj0gMDsgfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yID4gKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSwgdHJhaXRzLCBBbGxvY2F0b3I+JiBzLAotICAgICAgICAgICAgICAgICBjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtKQoteyByZXR1cm4gcy5jb21wYXJlKG0uc3RyKCkpID4gMDsgfQotLy8gY29tcGFyaXNvbiB0byBzdGQ6OmJhc2ljX3N0cmluZzw+IHBhcnQgMjoKLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA9PSAoY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSwgdHJhaXRzLCBBbGxvY2F0b3I+JiBzKQoteyByZXR1cm4gbS5zdHIoKS5jb21wYXJlKHMpID09IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciAhPSAoY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSwgdHJhaXRzLCBBbGxvY2F0b3I+JiBzKQoteyByZXR1cm4gbS5zdHIoKS5jb21wYXJlKHMpICE9IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA8IChjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlLCB0cmFpdHMsIEFsbG9jYXRvcj4mIHMpCi17IHJldHVybiBtLnN0cigpLmNvbXBhcmUocykgPCAwOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3IsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgPiAoY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSwgdHJhaXRzLCBBbGxvY2F0b3I+JiBzKQoteyByZXR1cm4gbS5zdHIoKS5jb21wYXJlKHMpID4gMDsgfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yIDw9IChjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlLCB0cmFpdHMsIEFsbG9jYXRvcj4mIHMpCi17IHJldHVybiBtLnN0cigpLmNvbXBhcmUocykgPD0gMDsgfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yID49IChjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlLCB0cmFpdHMsIEFsbG9jYXRvcj4mIHMpCi17IHJldHVybiBtLnN0cigpLmNvbXBhcmUocykgPj0gMDsgfQotLy8gY29tcGFyaXNvbiB0byBjb25zdCBjaGFyVCogcGFydCAxOgotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgPT0gKGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgY29uc3QqIHMpCi17IHJldHVybiBtLnN0cigpLmNvbXBhcmUocykgPT0gMDsgfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgIT0gKGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgY29uc3QqIHMpCi17IHJldHVybiBtLnN0cigpLmNvbXBhcmUocykgIT0gMDsgfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgPiAoY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBjb25zdCogcykKLXsgcmV0dXJuIG0uc3RyKCkuY29tcGFyZShzKSA+IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yIDwgKGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgY29uc3QqIHMpCi17IHJldHVybiBtLnN0cigpLmNvbXBhcmUocykgPCAwOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA+PSAoY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBjb25zdCogcykKLXsgcmV0dXJuIG0uc3RyKCkuY29tcGFyZShzKSA+PSAwOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA8PSAoY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBjb25zdCogcykKLXsgcmV0dXJuIG0uc3RyKCkuY29tcGFyZShzKSA8PSAwOyB9Ci0vLyBjb21wYXJpc29uIHRvIGNvbnN0IGNoYXJUKiBwYXJ0IDI6Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA9PSAodHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGNvbnN0KiBzLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSkKLXsgcmV0dXJuIG0uc3RyKCkuY29tcGFyZShzKSA9PSAwOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciAhPSAodHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGNvbnN0KiBzLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSkKLXsgcmV0dXJuIG0uc3RyKCkuY29tcGFyZShzKSAhPSAwOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA8ICh0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgY29uc3QqIHMsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtKQoteyByZXR1cm4gbS5zdHIoKS5jb21wYXJlKHMpID4gMDsgfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgPiAodHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGNvbnN0KiBzLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSkKLXsgcmV0dXJuIG0uc3RyKCkuY29tcGFyZShzKSA8IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yIDw9ICh0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgY29uc3QqIHMsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtKQoteyByZXR1cm4gbS5zdHIoKS5jb21wYXJlKHMpID49IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yID49ICh0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgY29uc3QqIHMsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtKQoteyByZXR1cm4gbS5zdHIoKS5jb21wYXJlKHMpIDw9IDA7IH0KLQotLy8gY29tcGFyaXNvbiB0byBjb25zdCBjaGFyVCYgcGFydCAxOgotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgPT0gKGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgY29uc3QmIHMpCi17IHJldHVybiBtLnN0cigpLmNvbXBhcmUoMCwgbS5sZW5ndGgoKSwgJnMsIDEpID09IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yICE9IChjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGNvbnN0JiBzKQoteyByZXR1cm4gbS5zdHIoKS5jb21wYXJlKDAsIG0ubGVuZ3RoKCksICZzLCAxKSAhPSAwOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA+IChjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGNvbnN0JiBzKQoteyByZXR1cm4gbS5zdHIoKS5jb21wYXJlKDAsIG0ubGVuZ3RoKCksICZzLCAxKSA+IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yIDwgKGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgY29uc3QmIHMpCi17IHJldHVybiBtLnN0cigpLmNvbXBhcmUoMCwgbS5sZW5ndGgoKSwgJnMsIDEpIDwgMDsgfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgPj0gKGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgY29uc3QmIHMpCi17IHJldHVybiBtLnN0cigpLmNvbXBhcmUoMCwgbS5sZW5ndGgoKSwgJnMsIDEpID49IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yIDw9IChjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGNvbnN0JiBzKQoteyByZXR1cm4gbS5zdHIoKS5jb21wYXJlKDAsIG0ubGVuZ3RoKCksICZzLCAxKSA8PSAwOyB9Ci0vLyBjb21wYXJpc29uIHRvIGNvbnN0IGNoYXJUKiBwYXJ0IDI6Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA9PSAodHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGNvbnN0JiBzLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSkKLXsgcmV0dXJuIG0uc3RyKCkuY29tcGFyZSgwLCBtLmxlbmd0aCgpLCAmcywgMSkgPT0gMDsgfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgIT0gKHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBjb25zdCYgcywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0pCi17IHJldHVybiBtLnN0cigpLmNvbXBhcmUoMCwgbS5sZW5ndGgoKSwgJnMsIDEpICE9IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yIDwgKHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBjb25zdCYgcywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0pCi17IHJldHVybiBtLnN0cigpLmNvbXBhcmUoMCwgbS5sZW5ndGgoKSwgJnMsIDEpID4gMDsgfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgPiAodHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGNvbnN0JiBzLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSkKLXsgcmV0dXJuIG0uc3RyKCkuY29tcGFyZSgwLCBtLmxlbmd0aCgpLCAmcywgMSkgPCAwOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA8PSAodHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGNvbnN0JiBzLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSkKLXsgcmV0dXJuIG0uc3RyKCkuY29tcGFyZSgwLCBtLmxlbmd0aCgpLCAmcywgMSkgPj0gMDsgfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgPj0gKHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBjb25zdCYgcywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0pCi17IHJldHVybiBtLnN0cigpLmNvbXBhcmUoMCwgbS5sZW5ndGgoKSwgJnMsIDEpIDw9IDA7IH0KLQotLy8gYWRkaXRpb24gb3BlcmF0b3JzOgotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KLWlubGluZSBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUsIHRyYWl0cywgQWxsb2NhdG9yPiAKLW9wZXJhdG9yICsgKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSwgdHJhaXRzLCBBbGxvY2F0b3I+JiBzLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSkKLXsKLSAgIHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSwgdHJhaXRzLCBBbGxvY2F0b3I+IHJlc3VsdDsKLSAgIHJlc3VsdC5yZXNlcnZlKHMuc2l6ZSgpICsgbS5sZW5ndGgoKSArIDEpOwotICAgcmV0dXJuIHJlc3VsdC5hcHBlbmQocykuYXBwZW5kKG0uZmlyc3QsIG0uc2Vjb25kKTsKLX0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+Ci1pbmxpbmUgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlLCB0cmFpdHMsIEFsbG9jYXRvcj4gCi1vcGVyYXRvciArIChjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtLAotICAgICAgICAgICAgY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlLCB0cmFpdHMsIEFsbG9jYXRvcj4mIHMpCi17Ci0gICBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUsIHRyYWl0cywgQWxsb2NhdG9yPiByZXN1bHQ7Ci0gICByZXN1bHQucmVzZXJ2ZShzLnNpemUoKSArIG0ubGVuZ3RoKCkgKyAxKTsKLSAgIHJldHVybiByZXN1bHQuYXBwZW5kKG0uZmlyc3QsIG0uc2Vjb25kKS5hcHBlbmQocyk7Ci19Ci0jaWYgIShkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9MT0NBTEUpKQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotaW5saW5lIHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZT4gCi1vcGVyYXRvciArICh0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgY29uc3QqIHMsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtKQotewotICAgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPiByZXN1bHQ7Ci0gICByZXN1bHQucmVzZXJ2ZShzdGQ6OmNoYXJfdHJhaXRzPHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZT46Omxlbmd0aChzKSArIG0ubGVuZ3RoKCkgKyAxKTsKLSAgIHJldHVybiByZXN1bHQuYXBwZW5kKHMpLmFwcGVuZChtLmZpcnN0LCBtLnNlY29uZCk7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPiAKLW9wZXJhdG9yICsgKGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0sCi0gICAgICAgICAgICB0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgY29uc3QgKiBzKQotewotICAgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPiByZXN1bHQ7Ci0gICByZXN1bHQucmVzZXJ2ZShzdGQ6OmNoYXJfdHJhaXRzPHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZT46Omxlbmd0aChzKSArIG0ubGVuZ3RoKCkgKyAxKTsKLSAgIHJldHVybiByZXN1bHQuYXBwZW5kKG0uZmlyc3QsIG0uc2Vjb25kKS5hcHBlbmQocyk7Ci19Ci0jZWxzZQotLy8gd29yd2Fyb3VuZCB2ZXJzaW9uczoKLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGU+IAotb3BlcmF0b3IgKyAodHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGNvbnN0KiBzLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSkKLXsKLSAgIHJldHVybiBzICsgbS5zdHIoKTsKLX0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGU+IAotb3BlcmF0b3IgKyAoY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSwKLSAgICAgICAgICAgIHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBjb25zdCAqIHMpCi17Ci0gICByZXR1cm4gbS5zdHIoKSArIHM7Ci19Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGU+IAotb3BlcmF0b3IgKyAodHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGNvbnN0JiBzLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSkKLXsKLSAgIHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZT4gcmVzdWx0OwotICAgcmVzdWx0LnJlc2VydmUobS5sZW5ndGgoKSArIDIpOwotICAgcmV0dXJuIHJlc3VsdC5hcHBlbmQoMSwgcykuYXBwZW5kKG0uZmlyc3QsIG0uc2Vjb25kKTsKLX0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGU+IAotb3BlcmF0b3IgKyAoY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSwKLSAgICAgICAgICAgIHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBjb25zdCYgcykKLXsKLSAgIHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZT4gcmVzdWx0OwotICAgcmVzdWx0LnJlc2VydmUobS5sZW5ndGgoKSArIDIpOwotICAgcmV0dXJuIHJlc3VsdC5hcHBlbmQobS5maXJzdCwgbS5zZWNvbmQpLmFwcGVuZCgxLCBzKTsKLX0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGU+IAotb3BlcmF0b3IgKyAoY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbTEsCi0gICAgICAgICAgICBjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtMikKLXsKLSAgIHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZT4gcmVzdWx0OwotICAgcmVzdWx0LnJlc2VydmUobTEubGVuZ3RoKCkgKyBtMi5sZW5ndGgoKSArIDEpOwotICAgcmV0dXJuIHJlc3VsdC5hcHBlbmQobTEuZmlyc3QsIG0xLnNlY29uZCkuYXBwZW5kKG0yLmZpcnN0LCBtMi5zZWNvbmQpOwotfQotI2lmbmRlZiBORE5CT09TVF9OT19TVERfTE9DQUxFCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1zdGQ6OmJhc2ljX29zdHJlYW08Y2hhclQsIHRyYWl0cz4mCi0gICBvcGVyYXRvciA8PCAoc3RkOjpiYXNpY19vc3RyZWFtPGNoYXJULCB0cmFpdHM+JiBvcywKLSAgICAgICAgICAgICAgICBjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBzKQotewotICAgcmV0dXJuIChvcyA8PCBzLnN0cigpKTsKLX0KLSNlbHNlCi10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1zdGQ6Om9zdHJlYW0mIG9wZXJhdG9yIDw8IChzdGQ6Om9zdHJlYW0mIG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgcykKLXsKLSAgIHJldHVybiAob3MgPDwgcy5zdHIoKSk7Ci19Ci0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX09MRF9SRUdFWF9ICi1uYW1lc3BhY2UgcmVfZGV0YWlsewotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgY2hhclQ+Ci1pbnQgZG9fdG9pKEJpZGlJdGVyYXRvciBpLCBCaWRpSXRlcmF0b3IgaiwgY2hhciBjLCBpbnQgcmFkaXgpCi17Ci0gICBzdGQ6OnN0cmluZyBzKGksIGopOwotICAgY2hhciogcDsKLSAgIGludCByZXN1bHQgPSBzdGQ6OnN0cnRvbChzLmNfc3RyKCksICZwLCByYWRpeCk7Ci0gICBpZigqcClyYWlzZV9yZWdleF9leGNlcHRpb24oIkJhZCBzdWItZXhwcmVzc2lvbiIpOwotICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLy8KLS8vIGhlbHBlcjoKLXRlbXBsYXRlIDxjbGFzcyBJLCBjbGFzcyBjaGFyVD4KLWludCBkb190b2koSSYgaSwgSSBqLCBjaGFyVCBjKQotewotICAgaW50IHJlc3VsdCA9IDA7Ci0gICB3aGlsZSgoaSAhPSBqKSAmJiAoaXNkaWdpdCgqaSkpKQotICAgewotICAgICAgcmVzdWx0ID0gcmVzdWx0KjEwICsgKCppIC0gJzAnKTsKLSAgICAgICsraTsKLSAgIH0KLSAgIHJldHVybiByZXN1bHQ7Ci19Ci19Ci0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvcj4KLXN1Yl9tYXRjaDxCaWRpSXRlcmF0b3I+OjpvcGVyYXRvciBpbnQoKWNvbnN0Ci17Ci0gICBCaWRpSXRlcmF0b3IgaSA9IGZpcnN0OwotICAgQmlkaUl0ZXJhdG9yIGogPSBzZWNvbmQ7Ci0gICBpZihpID09IGopcmFpc2VfcmVnZXhfZXhjZXB0aW9uKCJCYWQgc3ViLWV4cHJlc3Npb24iKTsKLSAgIGludCBuZWcgPSAxOwotICAgaWYoKGkgIT0gaikgJiYgKCppID09ICctJykpCi0gICB7Ci0gICAgICBuZWcgPSAtMTsKLSAgICAgICsraTsKLSAgIH0KLSAgIG5lZyAqPSByZV9kZXRhaWw6OmRvX3RvaShpLCBqLCAqaSk7Ci0gICBpZihpICE9IGopcmFpc2VfcmVnZXhfZXhjZXB0aW9uKCJCYWQgc3ViLWV4cHJlc3Npb24iKTsKLSAgIHJldHVybiBuZWc7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yPgotc3ViX21hdGNoPEJpZGlJdGVyYXRvcj46Om9wZXJhdG9yIHVuc2lnbmVkIGludCgpY29uc3QKLXsKLSAgIEJpZGlJdGVyYXRvciBpID0gZmlyc3Q7Ci0gICBCaWRpSXRlcmF0b3IgaiA9IHNlY29uZDsKLSAgIGlmKGkgPT0gaikKLSAgICAgIHJhaXNlX3JlZ2V4X2V4Y2VwdGlvbigiQmFkIHN1Yi1leHByZXNzaW9uIik7Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb190b2koaSwgaiwgKmZpcnN0KTsKLX0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3N5bnRheF90eXBlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvc3ludGF4X3R5cGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOGM1MTcwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvc3ludGF4X3R5cGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDAzCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotIAotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIHN5bnRheF90eXBlLmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogRGVjbGFyZXMgcmVndWxhciBleHByZXNzaW9uIHN5bmF0eCB0eXBlIGVudW1lcmF0b3IuCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfU1lOVEFYX1RZUEVfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1NZTlRBWF9UWVBFX0hQUAotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci1uYW1lc3BhY2UgcmVnZXhfY29uc3RhbnRzewotCi10eXBlZGVmIHVuc2lnbmVkIGNoYXIgc3ludGF4X3R5cGU7Ci0KLS8vCi0vLyB2YWx1ZXMgY2hvc2VuIGFyZSBiaW5hcnkgY29tcGF0aWJsZSB3aXRoIHByZXZpb3VzIHZlcnNpb246Ci0vLwotc3RhdGljIGNvbnN0IHN5bnRheF90eXBlIHN5bnRheF9jaGFyID0gMDsKLXN0YXRpYyBjb25zdCBzeW50YXhfdHlwZSBzeW50YXhfb3Blbl9tYXJrID0gMTsKLXN0YXRpYyBjb25zdCBzeW50YXhfdHlwZSBzeW50YXhfY2xvc2VfbWFyayA9IDI7Ci1zdGF0aWMgY29uc3Qgc3ludGF4X3R5cGUgc3ludGF4X2RvbGxhciA9IDM7Ci1zdGF0aWMgY29uc3Qgc3ludGF4X3R5cGUgc3ludGF4X2NhcmV0ID0gNDsKLXN0YXRpYyBjb25zdCBzeW50YXhfdHlwZSBzeW50YXhfZG90ID0gNTsKLXN0YXRpYyBjb25zdCBzeW50YXhfdHlwZSBzeW50YXhfc3RhciA9IDY7Ci1zdGF0aWMgY29uc3Qgc3ludGF4X3R5cGUgc3ludGF4X3BsdXMgPSA3Owotc3RhdGljIGNvbnN0IHN5bnRheF90eXBlIHN5bnRheF9xdWVzdGlvbiA9IDg7Ci1zdGF0aWMgY29uc3Qgc3ludGF4X3R5cGUgc3ludGF4X29wZW5fc2V0ID0gOTsKLXN0YXRpYyBjb25zdCBzeW50YXhfdHlwZSBzeW50YXhfY2xvc2Vfc2V0ID0gMTA7Ci1zdGF0aWMgY29uc3Qgc3ludGF4X3R5cGUgc3ludGF4X29yID0gMTE7Ci1zdGF0aWMgY29uc3Qgc3ludGF4X3R5cGUgc3ludGF4X2VzY2FwZSA9IDEyOwotc3RhdGljIGNvbnN0IHN5bnRheF90eXBlIHN5bnRheF9kYXNoID0gMTQ7Ci1zdGF0aWMgY29uc3Qgc3ludGF4X3R5cGUgc3ludGF4X29wZW5fYnJhY2UgPSAxNTsKLXN0YXRpYyBjb25zdCBzeW50YXhfdHlwZSBzeW50YXhfY2xvc2VfYnJhY2UgPSAxNjsKLXN0YXRpYyBjb25zdCBzeW50YXhfdHlwZSBzeW50YXhfZGlnaXQgPSAxNzsKLXN0YXRpYyBjb25zdCBzeW50YXhfdHlwZSBzeW50YXhfY29tbWEgPSAyNzsKLXN0YXRpYyBjb25zdCBzeW50YXhfdHlwZSBzeW50YXhfZXF1YWwgPSAzNzsKLXN0YXRpYyBjb25zdCBzeW50YXhfdHlwZSBzeW50YXhfY29sb24gPSAzNjsKLXN0YXRpYyBjb25zdCBzeW50YXhfdHlwZSBzeW50YXhfbm90ID0gNTM7Ci0KLS8vIGV4dGVuc2lvbnM6Ci0KLXN0YXRpYyBjb25zdCBzeW50YXhfdHlwZSBzeW50YXhfaGFzaCA9IDEzOwotc3RhdGljIGNvbnN0IHN5bnRheF90eXBlIHN5bnRheF9uZXdsaW5lID0gMjY7Ci0KLS8vIGVzY2FwZXM6Ci0KLXR5cGVkZWYgc3ludGF4X3R5cGUgZXNjYXBlX3N5bnRheF90eXBlOwotCi1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX3dvcmRfYXNzZXJ0ID0gMTg7Ci1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX25vdF93b3JkX2Fzc2VydCA9IDE5Owotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV9jb250cm9sX2YgPSAyOTsKLXN0YXRpYyBjb25zdCBlc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3R5cGVfY29udHJvbF9uID0gMzA7Ci1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX2NvbnRyb2xfciA9IDMxOwotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV9jb250cm9sX3QgPSAzMjsKLXN0YXRpYyBjb25zdCBlc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3R5cGVfY29udHJvbF92ID0gMzM7Ci1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX2FzY2lpX2NvbnRyb2wgPSAzNTsKLXN0YXRpYyBjb25zdCBlc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3R5cGVfaGV4ID0gMzQ7Ci1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX3VuaWNvZGUgPSAwOyAvLyBub3QgdXNlZAotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV9pZGVudGl0eSA9IDA7IC8vIG5vdCB1c2VkCi1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX2JhY2tyZWYgPSBzeW50YXhfZGlnaXQ7Ci1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX2RlY2ltYWwgPSBzeW50YXhfZGlnaXQ7IC8vIG5vdCB1c2VkCi1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX2NsYXNzID0gMjI7IAotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV9ub3RfY2xhc3MgPSAyMzsgCi0KLS8vIGV4dGVuc2lvbnM6Ci0KLXN0YXRpYyBjb25zdCBlc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3R5cGVfbGVmdF93b3JkID0gMjA7Ci1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX3JpZ2h0X3dvcmQgPSAyMTsKLXN0YXRpYyBjb25zdCBlc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3R5cGVfc3RhcnRfYnVmZmVyID0gMjQ7ICAgICAgICAgICAgICAgICAvLyBmb3IgXGAKLXN0YXRpYyBjb25zdCBlc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3R5cGVfZW5kX2J1ZmZlciA9IDI1OyAgICAgICAgICAgICAgICAgICAvLyBmb3IgXCcKLXN0YXRpYyBjb25zdCBlc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3R5cGVfY29udHJvbF9hID0gMjg7ICAgICAgICAgICAgICAgICAgICAvLyBmb3IgXGEKLXN0YXRpYyBjb25zdCBlc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3R5cGVfZSA9IDM4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgXGUKLXN0YXRpYyBjb25zdCBlc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3R5cGVfRSA9IDQ3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgXFFcRQotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV9RID0gNDg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBcUVxFCi1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX1ggPSA0OTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIFxYCi1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX0MgPSA1MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIFxDCi1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX1ogPSA1MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIFxaCi1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX0cgPSA1MjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIFxHCi0KLXN0YXRpYyBjb25zdCBlc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3R5cGVfcHJvcGVydHkgPSA1NDsgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgXHAKLXN0YXRpYyBjb25zdCBlc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3R5cGVfbm90X3Byb3BlcnR5ID0gNTU7ICAgICAgICAgICAgICAgICAvLyBmb3IgXFAKLXN0YXRpYyBjb25zdCBlc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3R5cGVfbmFtZWRfY2hhciA9IDU2OyAgICAgICAgICAgICAgICAgICAvLyBmb3IgXE4KLXN0YXRpYyBjb25zdCBlc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3R5cGVfZXh0ZW5kZWRfYmFja3JlZiA9IDU3OyAgICAgICAgICAgICAvLyBmb3IgXGcKLXN0YXRpYyBjb25zdCBlc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3R5cGVfcmVzZXRfc3RhcnRfbWFyayA9IDU4OyAgICAgICAgICAgICAvLyBmb3IgXEsKLXN0YXRpYyBjb25zdCBlc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3R5cGVfbGluZV9lbmRpbmcgPSA1OTsgICAgICAgICAgICAgICAgICAvLyBmb3IgXFIKLQotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBzeW50YXhfbWF4ID0gNjA7Ci0KLX0KLX0KLQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvdTMycmVnZXhfaXRlcmF0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC91MzJyZWdleF9pdGVyYXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3MTQ5ZjYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC91MzJyZWdleF9pdGVyYXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOTMgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDMKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICB1MzJyZWdleF9pdGVyYXRvci5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IFByb3ZpZGVzIHUzMnJlZ2V4X2l0ZXJhdG9yIGltcGxlbWVudGF0aW9uLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X1UzMlJFR0VYX0lURVJBVE9SX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9WNF9VMzJSRUdFWF9JVEVSQVRPUl9IUFAKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yPgotY2xhc3MgdTMycmVnZXhfaXRlcmF0b3JfaW1wbGVtZW50YXRpb24gCi17Ci0gICB0eXBlZGVmIHUzMnJlZ2V4IHJlZ2V4X3R5cGU7Ci0KLSAgIG1hdGNoX3Jlc3VsdHM8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPiB3aGF0OyAgLy8gY3VycmVudCBtYXRjaAotICAgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yICAgICAgICAgICAgICAgIGJhc2U7ICAvLyBzdGFydCBvZiBzZXF1ZW5jZQotICAgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yICAgICAgICAgICAgICAgIGVuZDsgICAvLyBlbmQgb2Ygc2VxdWVuY2UKLSAgIGNvbnN0IHJlZ2V4X3R5cGUgICAgICAgICAgICAgICAgICAgICByZTsgICAvLyB0aGUgZXhwcmVzc2lvbgotICAgbWF0Y2hfZmxhZ190eXBlICAgICAgICAgICAgICAgICAgICAgIGZsYWdzOyAvLyBmbGFncyBmb3IgbWF0Y2hpbmcKLQotcHVibGljOgotICAgdTMycmVnZXhfaXRlcmF0b3JfaW1wbGVtZW50YXRpb24oY29uc3QgcmVnZXhfdHlwZSogcCwgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGxhc3QsIG1hdGNoX2ZsYWdfdHlwZSBmKQotICAgICAgOiBiYXNlKCksIGVuZChsYXN0KSwgcmUoKnApLCBmbGFncyhmKXt9Ci0gICBib29sIGluaXQoQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGZpcnN0KQotICAgewotICAgICAgYmFzZSA9IGZpcnN0OwotICAgICAgcmV0dXJuIHUzMnJlZ2V4X3NlYXJjaChmaXJzdCwgZW5kLCB3aGF0LCByZSwgZmxhZ3MsIGJhc2UpOwotICAgfQotICAgYm9vbCBjb21wYXJlKGNvbnN0IHUzMnJlZ2V4X2l0ZXJhdG9yX2ltcGxlbWVudGF0aW9uJiB0aGF0KQotICAgewotICAgICAgaWYodGhpcyA9PSAmdGhhdCkgcmV0dXJuIHRydWU7Ci0gICAgICByZXR1cm4gKCZyZS5nZXRfZGF0YSgpID09ICZ0aGF0LnJlLmdldF9kYXRhKCkpICYmIChlbmQgPT0gdGhhdC5lbmQpICYmIChmbGFncyA9PSB0aGF0LmZsYWdzKSAmJiAod2hhdFswXS5maXJzdCA9PSB0aGF0LndoYXRbMF0uZmlyc3QpICYmICh3aGF0WzBdLnNlY29uZCA9PSB0aGF0LndoYXRbMF0uc2Vjb25kKTsKLSAgIH0KLSAgIGNvbnN0IG1hdGNoX3Jlc3VsdHM8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPiYgZ2V0KCkKLSAgIHsgcmV0dXJuIHdoYXQ7IH0KLSAgIGJvb2wgbmV4dCgpCi0gICB7Ci0gICAgICAvL2lmKHdoYXQucHJlZml4KCkuZmlyc3QgIT0gd2hhdFswXS5zZWNvbmQpCi0gICAgICAvLyAgIGZsYWdzIHw9IG1hdGNoX3ByZXZfYXZhaWw7Ci0gICAgICBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgbmV4dF9zdGFydCA9IHdoYXRbMF0uc2Vjb25kOwotICAgICAgbWF0Y2hfZmxhZ190eXBlIGYoZmxhZ3MpOwotICAgICAgaWYoIXdoYXQubGVuZ3RoKCkpCi0gICAgICAgICBmIHw9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfbm90X2luaXRpYWxfbnVsbDsKLSAgICAgIC8vaWYoYmFzZSAhPSBuZXh0X3N0YXJ0KQotICAgICAgLy8gICBmIHw9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfbm90X2JvYjsKLSAgICAgIGJvb2wgcmVzdWx0ID0gdTMycmVnZXhfc2VhcmNoKG5leHRfc3RhcnQsIGVuZCwgd2hhdCwgcmUsIGYsIGJhc2UpOwotICAgICAgaWYocmVzdWx0KQotICAgICAgICAgd2hhdC5zZXRfYmFzZShiYXNlKTsKLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gICB9Ci1wcml2YXRlOgotICAgdTMycmVnZXhfaXRlcmF0b3JfaW1wbGVtZW50YXRpb24mIG9wZXJhdG9yPShjb25zdCB1MzJyZWdleF9pdGVyYXRvcl9pbXBsZW1lbnRhdGlvbiYpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4KLWNsYXNzIHUzMnJlZ2V4X2l0ZXJhdG9yIAotI2lmbmRlZiBORE5CT09TVF9OT19TVERfSVRFUkFUT1IKLSAgIDogcHVibGljIHN0ZDo6aXRlcmF0b3I8Ci0gICAgICAgICBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnLCAKLSAgICAgICAgIG1hdGNoX3Jlc3VsdHM8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPiwKLSAgICAgICAgIHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZSwKLSAgICAgICAgIGNvbnN0IG1hdGNoX3Jlc3VsdHM8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPiosCi0gICAgICAgICBjb25zdCBtYXRjaF9yZXN1bHRzPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4mID4gICAgICAgICAKLSNlbmRpZgotewotcHJpdmF0ZToKLSAgIHR5cGVkZWYgdTMycmVnZXhfaXRlcmF0b3JfaW1wbGVtZW50YXRpb248QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPiBpbXBsOwotICAgdHlwZWRlZiBzaGFyZWRfcHRyPGltcGw+IHBpbXBsOwotcHVibGljOgotICAgdHlwZWRlZiAgICAgICAgICB1MzJyZWdleCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2V4X3R5cGU7Ci0gICB0eXBlZGVmICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPiAgICAgICAgICAgICAgICAgICAgdmFsdWVfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsKLSAgIHR5cGVkZWYgICAgICAgICAgY29uc3QgdmFsdWVfdHlwZSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyOwotICAgdHlwZWRlZiAgICAgICAgICBjb25zdCB2YWx1ZV90eXBlJiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsgCi0gICB0eXBlZGVmICAgICAgICAgIHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3JfY2F0ZWdvcnk7Ci0gICAKLSAgIHUzMnJlZ2V4X2l0ZXJhdG9yKCl7fQotICAgdTMycmVnZXhfaXRlcmF0b3IoQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGEsIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBiLCAKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4X3R5cGUmIHJlLCAKLSAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBtID0gbWF0Y2hfZGVmYXVsdCkKLSAgICAgICAgICAgICAgICAgIDogcGRhdGEobmV3IGltcGwoJnJlLCBiLCBtKSkKLSAgIHsKLSAgICAgIGlmKCFwZGF0YS0+aW5pdChhKSkKLSAgICAgIHsKLSAgICAgICAgIHBkYXRhLnJlc2V0KCk7Ci0gICAgICB9Ci0gICB9Ci0gICB1MzJyZWdleF9pdGVyYXRvcihjb25zdCB1MzJyZWdleF9pdGVyYXRvciYgdGhhdCkKLSAgICAgIDogcGRhdGEodGhhdC5wZGF0YSkge30KLSAgIHUzMnJlZ2V4X2l0ZXJhdG9yJiBvcGVyYXRvcj0oY29uc3QgdTMycmVnZXhfaXRlcmF0b3ImIHRoYXQpCi0gICB7Ci0gICAgICBwZGF0YSA9IHRoYXQucGRhdGE7Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICB9Ci0gICBib29sIG9wZXJhdG9yPT0oY29uc3QgdTMycmVnZXhfaXRlcmF0b3ImIHRoYXQpY29uc3QKLSAgIHsgCi0gICAgICBpZigocGRhdGEuZ2V0KCkgPT0gMCkgfHwgKHRoYXQucGRhdGEuZ2V0KCkgPT0gMCkpCi0gICAgICAgICByZXR1cm4gcGRhdGEuZ2V0KCkgPT0gdGhhdC5wZGF0YS5nZXQoKTsKLSAgICAgIHJldHVybiBwZGF0YS0+Y29tcGFyZSgqKHRoYXQucGRhdGEuZ2V0KCkpKTsgCi0gICB9Ci0gICBib29sIG9wZXJhdG9yIT0oY29uc3QgdTMycmVnZXhfaXRlcmF0b3ImIHRoYXQpY29uc3QKLSAgIHsgcmV0dXJuICEoKnRoaXMgPT0gdGhhdCk7IH0KLSAgIGNvbnN0IHZhbHVlX3R5cGUmIG9wZXJhdG9yKigpY29uc3QKLSAgIHsgcmV0dXJuIHBkYXRhLT5nZXQoKTsgfQotICAgY29uc3QgdmFsdWVfdHlwZSogb3BlcmF0b3ItPigpY29uc3QKLSAgIHsgcmV0dXJuICYocGRhdGEtPmdldCgpKTsgfQotICAgdTMycmVnZXhfaXRlcmF0b3ImIG9wZXJhdG9yKysoKQotICAgewotICAgICAgY293KCk7Ci0gICAgICBpZigwID09IHBkYXRhLT5uZXh0KCkpCi0gICAgICB7Ci0gICAgICAgICBwZGF0YS5yZXNldCgpOwotICAgICAgfQotICAgICAgcmV0dXJuICp0aGlzOwotICAgfQotICAgdTMycmVnZXhfaXRlcmF0b3Igb3BlcmF0b3IrKyhpbnQpCi0gICB7Ci0gICAgICB1MzJyZWdleF9pdGVyYXRvciByZXN1bHQoKnRoaXMpOwotICAgICAgKysoKnRoaXMpOwotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgIH0KLXByaXZhdGU6Ci0KLSAgIHBpbXBsIHBkYXRhOwotCi0gICB2b2lkIGNvdygpCi0gICB7Ci0gICAgICAvLyBjb3B5LW9uLXdyaXRlCi0gICAgICBpZihwZGF0YS5nZXQoKSAmJiAhcGRhdGEudW5pcXVlKCkpCi0gICAgICB7Ci0gICAgICAgICBwZGF0YS5yZXNldChuZXcgaW1wbCgqKHBkYXRhLmdldCgpKSkpOwotICAgICAgfQotICAgfQotfTsKLQotdHlwZWRlZiB1MzJyZWdleF9pdGVyYXRvcjxjb25zdCBjaGFyKj4gdXRmOHJlZ2V4X2l0ZXJhdG9yOwotdHlwZWRlZiB1MzJyZWdleF9pdGVyYXRvcjxjb25zdCBVQ2hhcio+IHV0ZjE2cmVnZXhfaXRlcmF0b3I7Ci10eXBlZGVmIHUzMnJlZ2V4X2l0ZXJhdG9yPGNvbnN0IFVDaGFyMzIqPiB1dGYzMnJlZ2V4X2l0ZXJhdG9yOwotCi1pbmxpbmUgdTMycmVnZXhfaXRlcmF0b3I8Y29uc3QgY2hhcio+IG1ha2VfdTMycmVnZXhfaXRlcmF0b3IoY29uc3QgY2hhciogcCwgY29uc3QgdTMycmVnZXgmIGUsIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIG0gPSByZWdleF9jb25zdGFudHM6Om1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gdTMycmVnZXhfaXRlcmF0b3I8Y29uc3QgY2hhcio+KHAsIHArc3RkOjpzdHJsZW4ocCksIGUsIG0pOwotfQotI2lmbmRlZiBORE5CT09TVF9OT19XUkVHRVgKLWlubGluZSB1MzJyZWdleF9pdGVyYXRvcjxjb25zdCB3Y2hhcl90Kj4gbWFrZV91MzJyZWdleF9pdGVyYXRvcihjb25zdCB3Y2hhcl90KiBwLCBjb25zdCB1MzJyZWdleCYgZSwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgbSA9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiB1MzJyZWdleF9pdGVyYXRvcjxjb25zdCB3Y2hhcl90Kj4ocCwgcCtzdGQ6Ondjc2xlbihwKSwgZSwgbSk7Ci19Ci0jZW5kaWYKLSNpZiAhZGVmaW5lZChVX1dDSEFSX0lTX1VURjE2KSAmJiAoVV9TSVpFT0ZfV0NIQVJfVCAhPSAyKQotaW5saW5lIHUzMnJlZ2V4X2l0ZXJhdG9yPGNvbnN0IFVDaGFyKj4gbWFrZV91MzJyZWdleF9pdGVyYXRvcihjb25zdCBVQ2hhciogcCwgY29uc3QgdTMycmVnZXgmIGUsIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIG0gPSByZWdleF9jb25zdGFudHM6Om1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gdTMycmVnZXhfaXRlcmF0b3I8Y29uc3QgVUNoYXIqPihwLCBwK3Vfc3RybGVuKHApLCBlLCBtKTsKLX0KLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyBUcmFpdHMsIGNsYXNzIEFsbG9jPgotaW5saW5lIHUzMnJlZ2V4X2l0ZXJhdG9yPHR5cGVuYW1lIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBUcmFpdHMsIEFsbG9jPjo6Y29uc3RfaXRlcmF0b3I+IG1ha2VfdTMycmVnZXhfaXRlcmF0b3IoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFRyYWl0cywgQWxsb2M+JiBwLCBjb25zdCB1MzJyZWdleCYgZSwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgbSA9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFRyYWl0cywgQWxsb2M+Ojpjb25zdF9pdGVyYXRvciBpdGVyX3R5cGU7Ci0gICByZXR1cm4gdTMycmVnZXhfaXRlcmF0b3I8aXRlcl90eXBlPihwLmJlZ2luKCksIHAuZW5kKCksIGUsIG0pOwotfQotaW5saW5lIHUzMnJlZ2V4X2l0ZXJhdG9yPGNvbnN0IFVDaGFyKj4gbWFrZV91MzJyZWdleF9pdGVyYXRvcihjb25zdCBVX05BTUVTUEFDRV9RVUFMSUZJRVIgVW5pY29kZVN0cmluZyYgcywgY29uc3QgdTMycmVnZXgmIGUsIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIG0gPSByZWdleF9jb25zdGFudHM6Om1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gdTMycmVnZXhfaXRlcmF0b3I8Y29uc3QgVUNoYXIqPihzLmdldEJ1ZmZlcigpLCBzLmdldEJ1ZmZlcigpICsgcy5sZW5ndGgoKSwgZSwgbSk7Ci19Ci0KLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SRUdFWF9WNF9SRUdFWF9JVEVSQVRPUl9IUFAKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC91MzJyZWdleF90b2tlbl9pdGVyYXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3UzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDhkNDBjZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3UzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM3NyArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMjAwMwotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yLmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogUHJvdmlkZXMgdTMycmVnZXhfdG9rZW5faXRlcmF0b3IgaW1wbGVtZW50YXRpb24uCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfVTMyUkVHRVhfVE9LRU5fSVRFUkFUT1JfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1Y0X1UzMlJFR0VYX1RPS0VOX0lURVJBVE9SX0hQUAotCi0jaWYgKE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA+PSAweDU2MCkgJiYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU3MCkpKVwKLSAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKSBcCi0gICAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDMwMDMpKQotLy8KLS8vIEJvcmxhbmQgQysrIEJ1aWxkZXIgNiwgYW5kIFZpc3VhbCBDKysgNiwKLS8vIGNhbid0IGNvcGUgd2l0aCB0aGUgYXJyYXkgdGVtcGxhdGUgY29uc3RydWN0b3IKLS8vIHNvIHdlIGhhdmUgYSB0ZW1wbGF0ZSBtZW1iZXIgdGhhdCB3aWxsIGFjY2VwdCBhbnkgdHlwZSBhcyAKLS8vIGFyZ3VtZW50LCBhbmQgdGhlbiBhc3NlcnQgdGhhdCBpcyByZWFsbHkgaXMgYW4gYXJyYXk6Ci0vLwotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FycmF5LmhwcD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA+IDEzMDApCi0jICBwcmFnbWEgd2FybmluZyhwdXNoKQotIyAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0NzAwKQotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpcmVjdGlvbmFsSXRlcmF0b3I+Ci1jbGFzcyB1MzJyZWdleF90b2tlbl9pdGVyYXRvcl9pbXBsZW1lbnRhdGlvbiAKLXsKLSAgIHR5cGVkZWYgdTMycmVnZXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdleF90eXBlOwotICAgdHlwZWRlZiBzdWJfbWF0Y2g8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPiAgICAgIHZhbHVlX3R5cGU7Ci0KLSAgIG1hdGNoX3Jlc3VsdHM8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPiB3aGF0OyAgIC8vIGN1cnJlbnQgbWF0Y2gKLSAgIEJpZGlyZWN0aW9uYWxJdGVyYXRvciAgICAgICAgICAgICAgICBlbmQ7ICAgIC8vIGVuZCBvZiBzZWFyY2ggYXJlYQotICAgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yICAgICAgICAgICAgICAgIGJhc2U7ICAgLy8gc3RhcnQgb2Ygc2VhcmNoIGFyZWEKLSAgIGNvbnN0IHJlZ2V4X3R5cGUgICAgICAgICAgICAgICAgICAgICByZTsgICAgIC8vIHRoZSBleHByZXNzaW9uCi0gICBtYXRjaF9mbGFnX3R5cGUgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M7ICAvLyBtYXRjaCBmbGFncwotICAgdmFsdWVfdHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdDsgLy8gdGhlIGN1cnJlbnQgc3RyaW5nIHJlc3VsdAotICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE47ICAgICAgLy8gdGhlIGN1cnJlbnQgc3ViLWV4cHJlc3Npb24gYmVpbmcgZW51bWVyYXRlZAotICAgc3RkOjp2ZWN0b3I8aW50PiAgICAgICAgICAgICAgICAgICAgIHN1YnM7ICAgLy8gdGhlIHN1Yi1leHByZXNzaW9ucyB0byBlbnVtZXJhdGUKLQotcHVibGljOgotICAgdTMycmVnZXhfdG9rZW5faXRlcmF0b3JfaW1wbGVtZW50YXRpb24oY29uc3QgcmVnZXhfdHlwZSogcCwgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGxhc3QsIGludCBzdWIsIG1hdGNoX2ZsYWdfdHlwZSBmKQotICAgICAgOiBlbmQobGFzdCksIHJlKCpwKSwgZmxhZ3MoZil7IHN1YnMucHVzaF9iYWNrKHN1Yik7IH0KLSAgIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yX2ltcGxlbWVudGF0aW9uKGNvbnN0IHJlZ2V4X3R5cGUqIHAsIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBsYXN0LCBjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+JiB2LCBtYXRjaF9mbGFnX3R5cGUgZikKLSAgICAgIDogZW5kKGxhc3QpLCByZSgqcCksIGZsYWdzKGYpLCBzdWJzKHYpe30KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSAgICAgIC8vIGNhbid0IHJlbGlhYmx5IGdldCB0aGlzIHRvIHdvcmsuLi4uCi0jZWxpZiAoTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sID49IDB4NTYwKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTcwKSkpXAotICAgICAgfHwgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApIFwKLSAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4MzAwMykpIFwKLSAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19IUF9hQ0MsIDwgNjA3MDApCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yX2ltcGxlbWVudGF0aW9uKGNvbnN0IHJlZ2V4X3R5cGUqIHAsIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBsYXN0LCBjb25zdCBUJiBzdWJtYXRjaGVzLCBtYXRjaF9mbGFnX3R5cGUgZikKLSAgICAgIDogZW5kKGxhc3QpLCByZSgqcCksIGZsYWdzKGYpCi0gICB7Ci0gICAgICAvLyBhc3NlcnQgdGhhdCBUIHJlYWxseSBpcyBhbiBhcnJheToKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoOjpuZG5ib29zdDo6aXNfYXJyYXk8VD46OnZhbHVlKTsKLSAgICAgIGNvbnN0IHN0ZDo6c2l6ZV90IGFycmF5X3NpemUgPSBzaXplb2YoVCkgLyBzaXplb2Yoc3VibWF0Y2hlc1swXSk7Ci0gICAgICBmb3Ioc3RkOjpzaXplX3QgaSA9IDA7IGkgPCBhcnJheV9zaXplOyArK2kpCi0gICAgICB7Ci0gICAgICAgICBzdWJzLnB1c2hfYmFjayhzdWJtYXRjaGVzW2ldKTsKLSAgICAgIH0KLSAgIH0KLSNlbHNlCi0gICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgQ04+Ci0gICB1MzJyZWdleF90b2tlbl9pdGVyYXRvcl9pbXBsZW1lbnRhdGlvbihjb25zdCByZWdleF90eXBlKiBwLCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgbGFzdCwgY29uc3QgaW50ICgmc3VibWF0Y2hlcylbQ05dLCBtYXRjaF9mbGFnX3R5cGUgZikKLSAgICAgIDogZW5kKGxhc3QpLCByZSgqcCksIGZsYWdzKGYpCi0gICB7Ci0gICAgICBmb3Ioc3RkOjpzaXplX3QgaSA9IDA7IGkgPCBDTjsgKytpKQotICAgICAgewotICAgICAgICAgc3Vicy5wdXNoX2JhY2soc3VibWF0Y2hlc1tpXSk7Ci0gICAgICB9Ci0gICB9Ci0jZW5kaWYKLQotICAgYm9vbCBpbml0KEJpZGlyZWN0aW9uYWxJdGVyYXRvciBmaXJzdCkKLSAgIHsKLSAgICAgIGJhc2UgPSBmaXJzdDsKLSAgICAgIE4gPSAwOwotICAgICAgaWYodTMycmVnZXhfc2VhcmNoKGZpcnN0LCBlbmQsIHdoYXQsIHJlLCBmbGFncywgYmFzZSkgPT0gdHJ1ZSkKLSAgICAgIHsKLSAgICAgICAgIE4gPSAwOwotICAgICAgICAgcmVzdWx0ID0gKChzdWJzW05dID09IC0xKSA/IHdoYXQucHJlZml4KCkgOiB3aGF0WyhpbnQpc3Vic1tOXV0pOwotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKChzdWJzW05dID09IC0xKSAmJiAoZmlyc3QgIT0gZW5kKSkKLSAgICAgIHsKLSAgICAgICAgIHJlc3VsdC5maXJzdCA9IGZpcnN0OwotICAgICAgICAgcmVzdWx0LnNlY29uZCA9IGVuZDsKLSAgICAgICAgIHJlc3VsdC5tYXRjaGVkID0gKGZpcnN0ICE9IGVuZCk7Ci0gICAgICAgICBOID0gLTE7Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSAgIGJvb2wgY29tcGFyZShjb25zdCB1MzJyZWdleF90b2tlbl9pdGVyYXRvcl9pbXBsZW1lbnRhdGlvbiYgdGhhdCkKLSAgIHsKLSAgICAgIGlmKHRoaXMgPT0gJnRoYXQpIHJldHVybiB0cnVlOwotICAgICAgcmV0dXJuICgmcmUuZ2V0X2RhdGEoKSA9PSAmdGhhdC5yZS5nZXRfZGF0YSgpKSAKLSAgICAgICAgICYmIChlbmQgPT0gdGhhdC5lbmQpIAotICAgICAgICAgJiYgKGZsYWdzID09IHRoYXQuZmxhZ3MpIAotICAgICAgICAgJiYgKE4gPT0gdGhhdC5OKSAKLSAgICAgICAgICYmICh3aGF0WzBdLmZpcnN0ID09IHRoYXQud2hhdFswXS5maXJzdCkgCi0gICAgICAgICAmJiAod2hhdFswXS5zZWNvbmQgPT0gdGhhdC53aGF0WzBdLnNlY29uZCk7Ci0gICB9Ci0gICBjb25zdCB2YWx1ZV90eXBlJiBnZXQoKQotICAgeyByZXR1cm4gcmVzdWx0OyB9Ci0gICBib29sIG5leHQoKQotICAgewotICAgICAgaWYoTiA9PSAtMSkKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIGlmKE4rMSA8IChpbnQpc3Vicy5zaXplKCkpCi0gICAgICB7Ci0gICAgICAgICArK047Ci0gICAgICAgICByZXN1bHQgPSgoc3Vic1tOXSA9PSAtMSkgPyB3aGF0LnByZWZpeCgpIDogd2hhdFtzdWJzW05dXSk7Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIC8vaWYod2hhdC5wcmVmaXgoKS5maXJzdCAhPSB3aGF0WzBdLnNlY29uZCkKLSAgICAgIC8vICAgZmxhZ3MgfD0gbWF0Y2hfcHJldl9hdmFpbCB8IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfbm90X2JvYjsKLSAgICAgIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBsYXN0X2VuZCh3aGF0WzBdLnNlY29uZCk7Ci0gICAgICBpZih1MzJyZWdleF9zZWFyY2gobGFzdF9lbmQsIGVuZCwgd2hhdCwgcmUsICgod2hhdFswXS5maXJzdCA9PSB3aGF0WzBdLnNlY29uZCkgPyBmbGFncyB8IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfbm90X2luaXRpYWxfbnVsbCA6IGZsYWdzKSwgYmFzZSkpCi0gICAgICB7Ci0gICAgICAgICBOID0wOwotICAgICAgICAgcmVzdWx0ID0oKHN1YnNbTl0gPT0gLTEpID8gd2hhdC5wcmVmaXgoKSA6IHdoYXRbc3Vic1tOXV0pOwotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKChsYXN0X2VuZCAhPSBlbmQpICYmIChzdWJzWzBdID09IC0xKSkKLSAgICAgIHsKLSAgICAgICAgIE4gPS0xOwotICAgICAgICAgcmVzdWx0LmZpcnN0ID0gbGFzdF9lbmQ7Ci0gICAgICAgICByZXN1bHQuc2Vjb25kID0gZW5kOwotICAgICAgICAgcmVzdWx0Lm1hdGNoZWQgPSAobGFzdF9lbmQgIT0gZW5kKTsKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotcHJpdmF0ZToKLSAgIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yX2ltcGxlbWVudGF0aW9uJiBvcGVyYXRvcj0oY29uc3QgdTMycmVnZXhfdG9rZW5faXRlcmF0b3JfaW1wbGVtZW50YXRpb24mKTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpcmVjdGlvbmFsSXRlcmF0b3I+Ci1jbGFzcyB1MzJyZWdleF90b2tlbl9pdGVyYXRvciAKLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0lURVJBVE9SCi0gICA6IHB1YmxpYyBzdGQ6Oml0ZXJhdG9yPAotICAgICAgICAgc3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZywgCi0gICAgICAgICBzdWJfbWF0Y2g8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPiwKLSAgICAgICAgIHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZSwKLSAgICAgICAgIGNvbnN0IHN1Yl9tYXRjaDxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+KiwKLSAgICAgICAgIGNvbnN0IHN1Yl9tYXRjaDxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+JiA+ICAgICAgICAgCi0jZW5kaWYKLXsKLXByaXZhdGU6Ci0gICB0eXBlZGVmIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yX2ltcGxlbWVudGF0aW9uPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4gaW1wbDsKLSAgIHR5cGVkZWYgc2hhcmVkX3B0cjxpbXBsPiBwaW1wbDsKLXB1YmxpYzoKLSAgIHR5cGVkZWYgICAgICAgICAgdTMycmVnZXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdleF90eXBlOwotICAgdHlwZWRlZiAgICAgICAgICBzdWJfbWF0Y2g8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7Ci0gICB0eXBlZGVmICAgICAgICAgIGNvbnN0IHZhbHVlX3R5cGUqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlcjsKLSAgIHR5cGVkZWYgICAgICAgICAgY29uc3QgdmFsdWVfdHlwZSYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2U7IAotICAgdHlwZWRlZiAgICAgICAgICBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yX2NhdGVnb3J5OwotICAgCi0gICB1MzJyZWdleF90b2tlbl9pdGVyYXRvcigpe30KLSAgIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yKEJpZGlyZWN0aW9uYWxJdGVyYXRvciBhLCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgYiwgY29uc3QgcmVnZXhfdHlwZSYgcmUsIAotICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN1Ym1hdGNoID0gMCwgbWF0Y2hfZmxhZ190eXBlIG0gPSBtYXRjaF9kZWZhdWx0KQotICAgICAgICAgICAgICAgICAgICAgICAgOiBwZGF0YShuZXcgaW1wbCgmcmUsIGIsIHN1Ym1hdGNoLCBtKSkKLSAgIHsKLSAgICAgIGlmKCFwZGF0YS0+aW5pdChhKSkKLSAgICAgICAgIHBkYXRhLnJlc2V0KCk7Ci0gICB9Ci0gICB1MzJyZWdleF90b2tlbl9pdGVyYXRvcihCaWRpcmVjdGlvbmFsSXRlcmF0b3IgYSwgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGIsIGNvbnN0IHJlZ2V4X3R5cGUmIHJlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGludD4mIHN1Ym1hdGNoZXMsIG1hdGNoX2ZsYWdfdHlwZSBtID0gbWF0Y2hfZGVmYXVsdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIDogcGRhdGEobmV3IGltcGwoJnJlLCBiLCBzdWJtYXRjaGVzLCBtKSkKLSAgIHsKLSAgICAgIGlmKCFwZGF0YS0+aW5pdChhKSkKLSAgICAgICAgIHBkYXRhLnJlc2V0KCk7Ci0gICB9Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0gICAgICAvLyBjYW4ndCByZWxpYWJseSBnZXQgdGhpcyB0byB3b3JrLi4uLgotI2VsaWYgKE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA+PSAweDU2MCkgJiYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU3MCkpKVwKLSAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKSBcCi0gICAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDMwMDMpKSBcCi0gICAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fSFBfYUNDLCA8IDYwNzAwKQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICB1MzJyZWdleF90b2tlbl9pdGVyYXRvcihCaWRpcmVjdGlvbmFsSXRlcmF0b3IgYSwgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGIsIGNvbnN0IHJlZ2V4X3R5cGUmIHJlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVCYgc3VibWF0Y2hlcywgbWF0Y2hfZmxhZ190eXBlIG0gPSBtYXRjaF9kZWZhdWx0KQotICAgICAgICAgICAgICAgICAgICAgICAgOiBwZGF0YShuZXcgaW1wbCgmcmUsIGIsIHN1Ym1hdGNoZXMsIG0pKQotICAgewotICAgICAgaWYoIXBkYXRhLT5pbml0KGEpKQotICAgICAgICAgcGRhdGEucmVzZXQoKTsKLSAgIH0KLSNlbHNlCi0gICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTj4KLSAgIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yKEJpZGlyZWN0aW9uYWxJdGVyYXRvciBhLCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgYiwgY29uc3QgcmVnZXhfdHlwZSYgcmUsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgKCZzdWJtYXRjaGVzKVtOXSwgbWF0Y2hfZmxhZ190eXBlIG0gPSBtYXRjaF9kZWZhdWx0KQotICAgICAgICAgICAgICAgICAgICAgICAgOiBwZGF0YShuZXcgaW1wbCgmcmUsIGIsIHN1Ym1hdGNoZXMsIG0pKQotICAgewotICAgICAgaWYoIXBkYXRhLT5pbml0KGEpKQotICAgICAgICAgcGRhdGEucmVzZXQoKTsKLSAgIH0KLSNlbmRpZgotICAgdTMycmVnZXhfdG9rZW5faXRlcmF0b3IoY29uc3QgdTMycmVnZXhfdG9rZW5faXRlcmF0b3ImIHRoYXQpCi0gICAgICA6IHBkYXRhKHRoYXQucGRhdGEpIHt9Ci0gICB1MzJyZWdleF90b2tlbl9pdGVyYXRvciYgb3BlcmF0b3I9KGNvbnN0IHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yJiB0aGF0KQotICAgewotICAgICAgcGRhdGEgPSB0aGF0LnBkYXRhOwotICAgICAgcmV0dXJuICp0aGlzOwotICAgfQotICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yJiB0aGF0KWNvbnN0Ci0gICB7IAotICAgICAgaWYoKHBkYXRhLmdldCgpID09IDApIHx8ICh0aGF0LnBkYXRhLmdldCgpID09IDApKQotICAgICAgICAgcmV0dXJuIHBkYXRhLmdldCgpID09IHRoYXQucGRhdGEuZ2V0KCk7Ci0gICAgICByZXR1cm4gcGRhdGEtPmNvbXBhcmUoKih0aGF0LnBkYXRhLmdldCgpKSk7IAotICAgfQotICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yJiB0aGF0KWNvbnN0Ci0gICB7IHJldHVybiAhKCp0aGlzID09IHRoYXQpOyB9Ci0gICBjb25zdCB2YWx1ZV90eXBlJiBvcGVyYXRvciooKWNvbnN0Ci0gICB7IHJldHVybiBwZGF0YS0+Z2V0KCk7IH0KLSAgIGNvbnN0IHZhbHVlX3R5cGUqIG9wZXJhdG9yLT4oKWNvbnN0Ci0gICB7IHJldHVybiAmKHBkYXRhLT5nZXQoKSk7IH0KLSAgIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yJiBvcGVyYXRvcisrKCkKLSAgIHsKLSAgICAgIGNvdygpOwotICAgICAgaWYoMCA9PSBwZGF0YS0+bmV4dCgpKQotICAgICAgewotICAgICAgICAgcGRhdGEucmVzZXQoKTsKLSAgICAgIH0KLSAgICAgIHJldHVybiAqdGhpczsKLSAgIH0KLSAgIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yIG9wZXJhdG9yKysoaW50KQotICAgewotICAgICAgdTMycmVnZXhfdG9rZW5faXRlcmF0b3IgcmVzdWx0KCp0aGlzKTsKLSAgICAgICsrKCp0aGlzKTsKLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gICB9Ci1wcml2YXRlOgotCi0gICBwaW1wbCBwZGF0YTsKLQotICAgdm9pZCBjb3coKQotICAgewotICAgICAgLy8gY29weS1vbi13cml0ZQotICAgICAgaWYocGRhdGEuZ2V0KCkgJiYgIXBkYXRhLnVuaXF1ZSgpKQotICAgICAgewotICAgICAgICAgcGRhdGEucmVzZXQobmV3IGltcGwoKihwZGF0YS5nZXQoKSkpKTsKLSAgICAgIH0KLSAgIH0KLX07Ci0KLXR5cGVkZWYgdTMycmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3QgY2hhcio+IHV0ZjhyZWdleF90b2tlbl9pdGVyYXRvcjsKLXR5cGVkZWYgdTMycmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3QgVUNoYXIqPiB1dGYxNnJlZ2V4X3Rva2VuX2l0ZXJhdG9yOwotdHlwZWRlZiB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCBVQ2hhcjMyKj4gdXRmMzJyZWdleF90b2tlbl9pdGVyYXRvcjsKLQotLy8gY29uc3RydWN0aW9uIGZyb20gYW4gaW50ZWdyYWwgc3ViX21hdGNoIHN0YXRlX2lkOgotaW5saW5lIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IGNoYXIqPiBtYWtlX3UzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yKGNvbnN0IGNoYXIqIHAsIGNvbnN0IHUzMnJlZ2V4JiBlLCBpbnQgc3VibWF0Y2ggPSAwLCByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBtID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IGNoYXIqPihwLCBwK3N0ZDo6c3RybGVuKHApLCBlLCBzdWJtYXRjaCwgbSk7Ci19Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotaW5saW5lIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IHdjaGFyX3QqPiBtYWtlX3UzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yKGNvbnN0IHdjaGFyX3QqIHAsIGNvbnN0IHUzMnJlZ2V4JiBlLCBpbnQgc3VibWF0Y2ggPSAwLCByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBtID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IHdjaGFyX3QqPihwLCBwK3N0ZDo6d2NzbGVuKHApLCBlLCBzdWJtYXRjaCwgbSk7Ci19Ci0jZW5kaWYKLSNpZiAhZGVmaW5lZChVX1dDSEFSX0lTX1VURjE2KSAmJiAoVV9TSVpFT0ZfV0NIQVJfVCAhPSAyKQotaW5saW5lIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IFVDaGFyKj4gbWFrZV91MzJyZWdleF90b2tlbl9pdGVyYXRvcihjb25zdCBVQ2hhciogcCwgY29uc3QgdTMycmVnZXgmIGUsIGludCBzdWJtYXRjaCA9IDAsIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIG0gPSByZWdleF9jb25zdGFudHM6Om1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gdTMycmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3QgVUNoYXIqPihwLCBwK3Vfc3RybGVuKHApLCBlLCBzdWJtYXRjaCwgbSk7Ci19Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgVHJhaXRzLCBjbGFzcyBBbGxvYz4KLWlubGluZSB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjx0eXBlbmFtZSBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgVHJhaXRzLCBBbGxvYz46OmNvbnN0X2l0ZXJhdG9yPiBtYWtlX3UzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBUcmFpdHMsIEFsbG9jPiYgcCwgY29uc3QgdTMycmVnZXgmIGUsIGludCBzdWJtYXRjaCA9IDAsIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIG0gPSByZWdleF9jb25zdGFudHM6Om1hdGNoX2RlZmF1bHQpCi17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBUcmFpdHMsIEFsbG9jPjo6Y29uc3RfaXRlcmF0b3IgaXRlcl90eXBlOwotICAgcmV0dXJuIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGl0ZXJfdHlwZT4ocC5iZWdpbigpLCBwLmVuZCgpLCBlLCBzdWJtYXRjaCwgbSk7Ci19Ci1pbmxpbmUgdTMycmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3QgVUNoYXIqPiBtYWtlX3UzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yKGNvbnN0IFVfTkFNRVNQQUNFX1FVQUxJRklFUiBVbmljb2RlU3RyaW5nJiBzLCBjb25zdCB1MzJyZWdleCYgZSwgaW50IHN1Ym1hdGNoID0gMCwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgbSA9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCBVQ2hhcio+KHMuZ2V0QnVmZmVyKCksIHMuZ2V0QnVmZmVyKCkgKyBzLmxlbmd0aCgpLCBlLCBzdWJtYXRjaCwgbSk7Ci19Ci0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0vLyBjb25zdHJ1Y3Rpb24gZnJvbSBhIHJlZmVyZW5jZSB0byBhbiBhcnJheToKLXRlbXBsYXRlIDxzdGQ6OnNpemVfdCBOPgotaW5saW5lIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IGNoYXIqPiBtYWtlX3UzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yKGNvbnN0IGNoYXIqIHAsIGNvbnN0IHUzMnJlZ2V4JiBlLCBjb25zdCBpbnQgKCZzdWJtYXRjaClbTl0sIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIG0gPSByZWdleF9jb25zdGFudHM6Om1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gdTMycmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3QgY2hhcio+KHAsIHArc3RkOjpzdHJsZW4ocCksIGUsIHN1Ym1hdGNoLCBtKTsKLX0KLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi10ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTj4KLWlubGluZSB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCB3Y2hhcl90Kj4gbWFrZV91MzJyZWdleF90b2tlbl9pdGVyYXRvcihjb25zdCB3Y2hhcl90KiBwLCBjb25zdCB1MzJyZWdleCYgZSwgY29uc3QgaW50ICgmc3VibWF0Y2gpW05dLCByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBtID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IHdjaGFyX3QqPihwLCBwK3N0ZDo6d2NzbGVuKHApLCBlLCBzdWJtYXRjaCwgbSk7Ci19Ci0jZW5kaWYKLSNpZiAhZGVmaW5lZChVX1dDSEFSX0lTX1VURjE2KSAmJiAoVV9TSVpFT0ZfV0NIQVJfVCAhPSAyKQotdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IE4+Ci1pbmxpbmUgdTMycmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3QgVUNoYXIqPiBtYWtlX3UzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yKGNvbnN0IFVDaGFyKiBwLCBjb25zdCB1MzJyZWdleCYgZSwgY29uc3QgaW50ICgmc3VibWF0Y2gpW05dLCByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBtID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IFVDaGFyKj4ocCwgcCt1X3N0cmxlbihwKSwgZSwgc3VibWF0Y2gsIG0pOwotfQotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIFRyYWl0cywgY2xhc3MgQWxsb2MsIHN0ZDo6c2l6ZV90IE4+Ci1pbmxpbmUgdTMycmVnZXhfdG9rZW5faXRlcmF0b3I8dHlwZW5hbWUgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFRyYWl0cywgQWxsb2M+Ojpjb25zdF9pdGVyYXRvcj4gbWFrZV91MzJyZWdleF90b2tlbl9pdGVyYXRvcihjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgVHJhaXRzLCBBbGxvYz4mIHAsIGNvbnN0IHUzMnJlZ2V4JiBlLCBjb25zdCBpbnQgKCZzdWJtYXRjaClbTl0sIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIG0gPSByZWdleF9jb25zdGFudHM6Om1hdGNoX2RlZmF1bHQpCi17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBUcmFpdHMsIEFsbG9jPjo6Y29uc3RfaXRlcmF0b3IgaXRlcl90eXBlOwotICAgcmV0dXJuIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGl0ZXJfdHlwZT4ocC5iZWdpbigpLCBwLmVuZCgpLCBlLCBzdWJtYXRjaCwgbSk7Ci19Ci10ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTj4KLWlubGluZSB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCBVQ2hhcio+IG1ha2VfdTMycmVnZXhfdG9rZW5faXRlcmF0b3IoY29uc3QgVV9OQU1FU1BBQ0VfUVVBTElGSUVSIFVuaWNvZGVTdHJpbmcmIHMsIGNvbnN0IHUzMnJlZ2V4JiBlLCBjb25zdCBpbnQgKCZzdWJtYXRjaClbTl0sIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIG0gPSByZWdleF9jb25zdGFudHM6Om1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gdTMycmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3QgVUNoYXIqPihzLmdldEJ1ZmZlcigpLCBzLmdldEJ1ZmZlcigpICsgcy5sZW5ndGgoKSwgZSwgc3VibWF0Y2gsIG0pOwotfQotI2VuZGlmIC8vIE5ETkJPT1NUX01TVkMgPCAxMzAwCi0KLS8vIGNvbnN0cnVjdGlvbiBmcm9tIGEgdmVjdG9yIG9mIHN1Yl9tYXRjaCBzdGF0ZV9pZCdzOgotaW5saW5lIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IGNoYXIqPiBtYWtlX3UzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yKGNvbnN0IGNoYXIqIHAsIGNvbnN0IHUzMnJlZ2V4JiBlLCBjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+JiBzdWJtYXRjaCwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgbSA9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCBjaGFyKj4ocCwgcCtzdGQ6OnN0cmxlbihwKSwgZSwgc3VibWF0Y2gsIG0pOwotfQotI2lmbmRlZiBORE5CT09TVF9OT19XUkVHRVgKLWlubGluZSB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCB3Y2hhcl90Kj4gbWFrZV91MzJyZWdleF90b2tlbl9pdGVyYXRvcihjb25zdCB3Y2hhcl90KiBwLCBjb25zdCB1MzJyZWdleCYgZSwgY29uc3Qgc3RkOjp2ZWN0b3I8aW50PiYgc3VibWF0Y2gsIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIG0gPSByZWdleF9jb25zdGFudHM6Om1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gdTMycmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3Qgd2NoYXJfdCo+KHAsIHArc3RkOjp3Y3NsZW4ocCksIGUsIHN1Ym1hdGNoLCBtKTsKLX0KLSNlbmRpZgotI2lmICFkZWZpbmVkKFVfV0NIQVJfSVNfVVRGMTYpICYmIChVX1NJWkVPRl9XQ0hBUl9UICE9IDIpCi1pbmxpbmUgdTMycmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3QgVUNoYXIqPiBtYWtlX3UzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yKGNvbnN0IFVDaGFyKiBwLCBjb25zdCB1MzJyZWdleCYgZSwgY29uc3Qgc3RkOjp2ZWN0b3I8aW50PiYgc3VibWF0Y2gsIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIG0gPSByZWdleF9jb25zdGFudHM6Om1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gdTMycmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3QgVUNoYXIqPihwLCBwK3Vfc3RybGVuKHApLCBlLCBzdWJtYXRjaCwgbSk7Ci19Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgVHJhaXRzLCBjbGFzcyBBbGxvYz4KLWlubGluZSB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjx0eXBlbmFtZSBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgVHJhaXRzLCBBbGxvYz46OmNvbnN0X2l0ZXJhdG9yPiBtYWtlX3UzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBUcmFpdHMsIEFsbG9jPiYgcCwgY29uc3QgdTMycmVnZXgmIGUsIGNvbnN0IHN0ZDo6dmVjdG9yPGludD4mIHN1Ym1hdGNoLCByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBtID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0KQotewotICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgVHJhaXRzLCBBbGxvYz46OmNvbnN0X2l0ZXJhdG9yIGl0ZXJfdHlwZTsKLSAgIHJldHVybiB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxpdGVyX3R5cGU+KHAuYmVnaW4oKSwgcC5lbmQoKSwgZSwgc3VibWF0Y2gsIG0pOwotfQotaW5saW5lIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IFVDaGFyKj4gbWFrZV91MzJyZWdleF90b2tlbl9pdGVyYXRvcihjb25zdCBVX05BTUVTUEFDRV9RVUFMSUZJRVIgVW5pY29kZVN0cmluZyYgcywgY29uc3QgdTMycmVnZXgmIGUsIGNvbnN0IHN0ZDo6dmVjdG9yPGludD4mIHN1Ym1hdGNoLCByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBtID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IFVDaGFyKj4ocy5nZXRCdWZmZXIoKSwgcy5nZXRCdWZmZXIoKSArIHMubGVuZ3RoKCksIGUsIHN1Ym1hdGNoLCBtKTsKLX0KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPiAxMzAwKQotIyAgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUkVHRVhfVjRfUkVHRVhfVE9LRU5fSVRFUkFUT1JfSFBQCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvdzMyX3JlZ2V4X3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3czMl9yZWdleF90cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYWZiMTg5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvdzMyX3JlZ2V4X3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NDEgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0gCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgdzMyX3JlZ2V4X3RyYWl0cy5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIHJlZ3VsYXIgZXhwcmVzc2lvbiB0cmFpdHMgY2xhc3MgdzMyX3JlZ2V4X3RyYWl0cy4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9XMzJfUkVHRVhfVFJBSVRTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9XMzJfUkVHRVhfVFJBSVRTX0hQUF9JTkNMVURFRAotCi0jaWZuZGVmIE5ETkJPT1NUX1JFX1BBVF9FWENFUFRfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvcGF0dGVybl9leGNlcHQuaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19ERUZBVUxUU19IUFBfSU5DTFVERUQKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9yZWdleF90cmFpdHNfZGVmYXVsdHMuaHBwPgotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX1RIUkVBRFMKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC9wZW5kaW5nL3N0YXRpY19tdXRleC5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfUFJJTUFSWV9UUkFOU0ZPUk0KLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9wcmltYXJ5X3RyYW5zZm9ybS5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfT0JKRUNUX0NBQ0hFX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3BlbmRpbmcvb2JqZWN0X2NhY2hlLmhwcD4KLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ3ODYpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0ODAwKQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsgCi0KLS8vCi0vLyBmb3J3YXJkIGRlY2xhcmF0aW9uIGlzIG5lZWRlZCBieSBzb21lIGNvbXBpbGVyczoKLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1jbGFzcyB3MzJfcmVnZXhfdHJhaXRzOwotICAgCi1uYW1lc3BhY2UgcmVfZGV0YWlsewotCi0vLwotLy8gc3RhcnQgYnkgdHlwZWRlZmZpbmcgdGhlIHR5cGVzIHdlJ2xsIG5lZWQ6Ci0vLwotdHlwZWRlZiA6Om5kbmJvb3N0Ojp1aW50MzJfdCBsY2lkX3R5cGU7ICAgLy8gcGxhY2Vob2xkZXIgZm9yIExDSUQuCi10eXBlZGVmIDo6bmRuYm9vc3Q6OnNoYXJlZF9wdHI8dm9pZD4gY2F0X3R5cGU7IC8vIHBsYWNlaG9sZGVyIGZvciBkbGwgSEFORExFLgotCi0vLwotLy8gdGhlbiBhZGQgd3JhcHBlcnMgYXJvdW5kIHRoZSBhY3R1YWwgV2luMzIgQVBJJ3MgKGllIGltcGxlbWVudGF0aW9uIGhpZGluZyk6Ci0vLwotTkROQk9PU1RfUkVHRVhfREVDTCBsY2lkX3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCB3MzJfZ2V0X2RlZmF1bHRfbG9jYWxlKCk7Ci1ORE5CT09TVF9SRUdFWF9ERUNMIGJvb2wgTkROQk9PU1RfUkVHRVhfQ0FMTCB3MzJfaXNfbG93ZXIoY2hhciwgbGNpZF90eXBlKTsKLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi1ORE5CT09TVF9SRUdFWF9ERUNMIGJvb2wgTkROQk9PU1RfUkVHRVhfQ0FMTCB3MzJfaXNfbG93ZXIod2NoYXJfdCwgbGNpZF90eXBlKTsKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9IQVNfT1RIRVJfV0NIQVJfVAotTkROQk9PU1RfUkVHRVhfREVDTCBib29sIE5ETkJPT1NUX1JFR0VYX0NBTEwgdzMyX2lzX2xvd2VyKHVuc2lnbmVkIHNob3J0IGNhLCBsY2lkX3R5cGUgc3RhdGVfaWQpOwotI2VuZGlmCi0jZW5kaWYKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgYm9vbCBORE5CT09TVF9SRUdFWF9DQUxMIHczMl9pc191cHBlcihjaGFyLCBsY2lkX3R5cGUpOwotI2lmbmRlZiBORE5CT09TVF9OT19XUkVHRVgKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgYm9vbCBORE5CT09TVF9SRUdFWF9DQUxMIHczMl9pc191cHBlcih3Y2hhcl90LCBsY2lkX3R5cGUpOwotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX0hBU19PVEhFUl9XQ0hBUl9UCi1ORE5CT09TVF9SRUdFWF9ERUNMIGJvb2wgTkROQk9PU1RfUkVHRVhfQ0FMTCB3MzJfaXNfdXBwZXIodW5zaWduZWQgc2hvcnQgY2EsIGxjaWRfdHlwZSBzdGF0ZV9pZCk7Ci0jZW5kaWYKLSNlbmRpZgotTkROQk9PU1RfUkVHRVhfREVDTCBjYXRfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIHczMl9jYXRfb3Blbihjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSk7Ci1ORE5CT09TVF9SRUdFWF9ERUNMIHN0ZDo6c3RyaW5nIE5ETkJPT1NUX1JFR0VYX0NBTEwgdzMyX2NhdF9nZXQoY29uc3QgY2F0X3R5cGUmIGNhdCwgbGNpZF90eXBlIHN0YXRlX2lkLCBpbnQgaSwgY29uc3Qgc3RkOjpzdHJpbmcmIGRlZik7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotTkROQk9PU1RfUkVHRVhfREVDTCBzdGQ6OndzdHJpbmcgTkROQk9PU1RfUkVHRVhfQ0FMTCB3MzJfY2F0X2dldChjb25zdCBjYXRfdHlwZSYgY2F0LCBsY2lkX3R5cGUgc3RhdGVfaWQsIGludCBpLCBjb25zdCBzdGQ6OndzdHJpbmcmIGRlZik7Ci0jaWZkZWYgTkROQk9PU1RfUkVHRVhfSEFTX09USEVSX1dDSEFSX1QKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgc3RkOjpiYXNpY19zdHJpbmc8dW5zaWduZWQgc2hvcnQ+IE5ETkJPT1NUX1JFR0VYX0NBTEwgdzMyX2NhdF9nZXQoY29uc3QgY2F0X3R5cGUmIGNhdCwgbGNpZF90eXBlLCBpbnQgaSwgY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8dW5zaWduZWQgc2hvcnQ+JiBkZWYpOwotI2VuZGlmCi0jZW5kaWYKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgc3RkOjpzdHJpbmcgTkROQk9PU1RfUkVHRVhfQ0FMTCB3MzJfdHJhbnNmb3JtKGxjaWRfdHlwZSBzdGF0ZV9pZCwgY29uc3QgY2hhciogcDEsIGNvbnN0IGNoYXIqIHAyKTsKLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi1ORE5CT09TVF9SRUdFWF9ERUNMIHN0ZDo6d3N0cmluZyBORE5CT09TVF9SRUdFWF9DQUxMIHczMl90cmFuc2Zvcm0obGNpZF90eXBlIHN0YXRlX2lkLCBjb25zdCB3Y2hhcl90KiBwMSwgY29uc3Qgd2NoYXJfdCogcDIpOwotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX0hBU19PVEhFUl9XQ0hBUl9UCi1ORE5CT09TVF9SRUdFWF9ERUNMIHN0ZDo6YmFzaWNfc3RyaW5nPHVuc2lnbmVkIHNob3J0PiBORE5CT09TVF9SRUdFWF9DQUxMIHczMl90cmFuc2Zvcm0obGNpZF90eXBlIHN0YXRlX2lkLCBjb25zdCB1bnNpZ25lZCBzaG9ydCogcDEsIGNvbnN0IHVuc2lnbmVkIHNob3J0KiBwMik7Ci0jZW5kaWYKLSNlbmRpZgotTkROQk9PU1RfUkVHRVhfREVDTCBjaGFyIE5ETkJPT1NUX1JFR0VYX0NBTEwgdzMyX3RvbG93ZXIoY2hhciBjLCBsY2lkX3R5cGUpOwotI2lmbmRlZiBORE5CT09TVF9OT19XUkVHRVgKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgd2NoYXJfdCBORE5CT09TVF9SRUdFWF9DQUxMIHczMl90b2xvd2VyKHdjaGFyX3QgYywgbGNpZF90eXBlKTsKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9IQVNfT1RIRVJfV0NIQVJfVAotTkROQk9PU1RfUkVHRVhfREVDTCB1bnNpZ25lZCBzaG9ydCBORE5CT09TVF9SRUdFWF9DQUxMIHczMl90b2xvd2VyKHVuc2lnbmVkIHNob3J0IGMsIGxjaWRfdHlwZSBzdGF0ZV9pZCk7Ci0jZW5kaWYKLSNlbmRpZgotTkROQk9PU1RfUkVHRVhfREVDTCBjaGFyIE5ETkJPT1NUX1JFR0VYX0NBTEwgdzMyX3RvdXBwZXIoY2hhciBjLCBsY2lkX3R5cGUpOwotI2lmbmRlZiBORE5CT09TVF9OT19XUkVHRVgKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgd2NoYXJfdCBORE5CT09TVF9SRUdFWF9DQUxMIHczMl90b3VwcGVyKHdjaGFyX3QgYywgbGNpZF90eXBlKTsKLSNlbmRpZgotTkROQk9PU1RfUkVHRVhfREVDTCBib29sIE5ETkJPT1NUX1JFR0VYX0NBTEwgdzMyX2lzKGxjaWRfdHlwZSwgbmRuYm9vc3Q6OnVpbnQzMl90IG1hc2ssIGNoYXIgYyk7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotTkROQk9PU1RfUkVHRVhfREVDTCBib29sIE5ETkJPT1NUX1JFR0VYX0NBTEwgdzMyX2lzKGxjaWRfdHlwZSwgbmRuYm9vc3Q6OnVpbnQzMl90IG1hc2ssIHdjaGFyX3QgYyk7Ci0jaWZkZWYgTkROQk9PU1RfUkVHRVhfSEFTX09USEVSX1dDSEFSX1QKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgYm9vbCBORE5CT09TVF9SRUdFWF9DQUxMIHczMl9pcyhsY2lkX3R5cGUgc3RhdGVfaWQsIG5kbmJvb3N0Ojp1aW50MzJfdCBtLCB1bnNpZ25lZCBzaG9ydCBjKTsKLSNlbmRpZgotI2VuZGlmCi0vLwotLy8gY2xhc3MgdzMyX3JlZ2V4X3RyYWl0c19iYXNlOgotLy8gYWN0cyBhcyBhIGNvbnRhaW5lciBmb3IgbG9jYWxlIGFuZCB0aGUgZmFjZXRzIHdlIGFyZSB1c2luZy4KLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1zdHJ1Y3QgdzMyX3JlZ2V4X3RyYWl0c19iYXNlCi17Ci0gICB3MzJfcmVnZXhfdHJhaXRzX2Jhc2UobGNpZF90eXBlIGwpCi0gICB7IGltYnVlKGwpOyB9Ci0gICBsY2lkX3R5cGUgaW1idWUobGNpZF90eXBlIGwpOwotCi0gICBsY2lkX3R5cGUgbV9sb2NhbGU7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1pbmxpbmUgbGNpZF90eXBlIHczMl9yZWdleF90cmFpdHNfYmFzZTxjaGFyVD46OmltYnVlKGxjaWRfdHlwZSBsKQotewotICAgbGNpZF90eXBlIHJlc3VsdChtX2xvY2FsZSk7Ci0gICBtX2xvY2FsZSA9IGw7Ci0gICByZXR1cm4gcmVzdWx0OwotfQotCi0vLwotLy8gY2xhc3MgdzMyX3JlZ2V4X3RyYWl0c19jaGFyX2xheWVyOgotLy8gaW1wbGVtZW50cyBtZXRob2RzIHRoYXQgcmVxdWlyZSBzcGVjaWFsaXNhdGlvbiBmb3IgbmFycm93IGNoYXJhY3RlcnM6Ci0vLwotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotY2xhc3MgdzMyX3JlZ2V4X3RyYWl0c19jaGFyX2xheWVyIDogcHVibGljIHczMl9yZWdleF90cmFpdHNfYmFzZTxjaGFyVD4KLXsKLSAgIHR5cGVkZWYgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+IHN0cmluZ190eXBlOwotICAgdHlwZWRlZiBzdGQ6Om1hcDxjaGFyVCwgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfdHlwZT4gbWFwX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIG1hcF90eXBlOjpjb25zdF9pdGVyYXRvciBtYXBfaXRlcmF0b3JfdHlwZTsKLXB1YmxpYzoKLSAgIHczMl9yZWdleF90cmFpdHNfY2hhcl9sYXllcihjb25zdCBsY2lkX3R5cGUgbCk7Ci0KLSAgIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3R5cGUgc3ludGF4X3R5cGUoY2hhclQgYyljb25zdAotICAgewotICAgICAgbWFwX2l0ZXJhdG9yX3R5cGUgaSA9IG1fY2hhcl9tYXAuZmluZChjKTsKLSAgICAgIHJldHVybiAoKGkgPT0gbV9jaGFyX21hcC5lbmQoKSkgPyAwIDogaS0+c2Vjb25kKTsKLSAgIH0KLSAgIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV9zeW50YXhfdHlwZShjaGFyVCBjKSBjb25zdAotICAgewotICAgICAgbWFwX2l0ZXJhdG9yX3R5cGUgaSA9IG1fY2hhcl9tYXAuZmluZChjKTsKLSAgICAgIGlmKGkgPT0gbV9jaGFyX21hcC5lbmQoKSkKLSAgICAgIHsKLSAgICAgICAgIGlmKDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6dzMyX2lzX2xvd2VyKGMsIHRoaXMtPm1fbG9jYWxlKSkgcmV0dXJuIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfY2xhc3M7Ci0gICAgICAgICBpZig6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OnczMl9pc191cHBlcihjLCB0aGlzLT5tX2xvY2FsZSkpIHJldHVybiByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX25vdF9jbGFzczsKLSAgICAgICAgIHJldHVybiAwOwotICAgICAgfQotICAgICAgcmV0dXJuIGktPnNlY29uZDsKLSAgIH0KLSAgIGNoYXJUIHRvbG93ZXIoY2hhclQgYyljb25zdAotICAgewotICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6dzMyX3RvbG93ZXIoYywgdGhpcy0+bV9sb2NhbGUpOwotICAgfQotICAgYm9vbCBpc2N0eXBlKG5kbmJvb3N0Ojp1aW50MzJfdCBtYXNrLCBjaGFyVCBjKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjp3MzJfaXModGhpcy0+bV9sb2NhbGUsIG1hc2ssIGMpOwotICAgfQotCi1wcml2YXRlOgotICAgc3RyaW5nX3R5cGUgZ2V0X2RlZmF1bHRfbWVzc2FnZShyZWdleF9jb25zdGFudHM6OnN5bnRheF90eXBlKTsKLSAgIC8vIFRPRE86IHVzZSBhIGhhc2ggdGFibGUgd2hlbiBhdmFpbGFibGUhCi0gICBtYXBfdHlwZSBtX2NoYXJfbWFwOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotdzMyX3JlZ2V4X3RyYWl0c19jaGFyX2xheWVyPGNoYXJUPjo6dzMyX3JlZ2V4X3RyYWl0c19jaGFyX2xheWVyKDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6bGNpZF90eXBlIGwpIAotICAgOiB3MzJfcmVnZXhfdHJhaXRzX2Jhc2U8Y2hhclQ+KGwpCi17Ci0gICAvLyB3ZSBuZWVkIHRvIHN0YXJ0IGJ5IGluaXRpYWxpc2luZyBvdXIgc3ludGF4IG1hcCBzbyB3ZSBrbm93IHdoaWNoCi0gICAvLyBjaGFyYWN0ZXIgaXMgdXNlZCBmb3Igd2hpY2ggcHVycG9zZToKLSAgIGNhdF90eXBlIGNhdDsKLSAgIHN0ZDo6c3RyaW5nIGNhdF9uYW1lKHczMl9yZWdleF90cmFpdHM8Y2hhclQ+OjpnZXRfY2F0YWxvZ19uYW1lKCkpOwotICAgaWYoY2F0X25hbWUuc2l6ZSgpKQotICAgewotICAgICAgY2F0ID0gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjp3MzJfY2F0X29wZW4oY2F0X25hbWUpOwotICAgICAgaWYoIWNhdCkKLSAgICAgIHsKLSAgICAgICAgIHN0ZDo6c3RyaW5nIG0oIlVuYWJsZSB0byBvcGVuIG1lc3NhZ2UgY2F0YWxvZzogIik7Ci0gICAgICAgICBzdGQ6OnJ1bnRpbWVfZXJyb3IgZXJyKG0gKyBjYXRfbmFtZSk7Ci0gICAgICAgICBuZG5ib29zdDo6cmVfZGV0YWlsOjpyYWlzZV9ydW50aW1lX2Vycm9yKGVycik7Ci0gICAgICB9Ci0gICB9Ci0gICAvLwotICAgLy8gaWYgd2UgaGF2ZSBhIHZhbGlkIGNhdGFsb2cgdGhlbiBsb2FkIG91ciBtZXNzYWdlczoKLSAgIC8vCi0gICBpZihjYXQpCi0gICB7Ci0gICAgICBmb3IocmVnZXhfY29uc3RhbnRzOjpzeW50YXhfdHlwZSBpID0gMTsgaSA8IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X21heDsgKytpKQotICAgICAgewotICAgICAgICAgc3RyaW5nX3R5cGUgbXNzID0gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjp3MzJfY2F0X2dldChjYXQsIHRoaXMtPm1fbG9jYWxlLCBpLCBnZXRfZGVmYXVsdF9tZXNzYWdlKGkpKTsKLSAgICAgICAgIGZvcih0eXBlbmFtZSBzdHJpbmdfdHlwZTo6c2l6ZV90eXBlIGogPSAwOyBqIDwgbXNzLnNpemUoKTsgKytqKQotICAgICAgICAgewotICAgICAgICAgICAgdGhpcy0+bV9jaGFyX21hcFttc3Nbal1dID0gaTsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIGZvcihyZWdleF9jb25zdGFudHM6OnN5bnRheF90eXBlIGkgPSAxOyBpIDwgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfbWF4OyArK2kpCi0gICAgICB7Ci0gICAgICAgICBjb25zdCBjaGFyKiBwdHIgPSBnZXRfZGVmYXVsdF9zeW50YXgoaSk7Ci0gICAgICAgICB3aGlsZShwdHIgJiYgKnB0cikKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMtPm1fY2hhcl9tYXBbc3RhdGljX2Nhc3Q8Y2hhclQ+KCpwdHIpXSA9IGk7Ci0gICAgICAgICAgICArK3B0cjsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgIH0KLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotdHlwZW5hbWUgdzMyX3JlZ2V4X3RyYWl0c19jaGFyX2xheWVyPGNoYXJUPjo6c3RyaW5nX3R5cGUgCi0gICB3MzJfcmVnZXhfdHJhaXRzX2NoYXJfbGF5ZXI8Y2hhclQ+OjpnZXRfZGVmYXVsdF9tZXNzYWdlKHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3R5cGUgaSkKLXsKLSAgIGNvbnN0IGNoYXIqIHB0ciA9IGdldF9kZWZhdWx0X3N5bnRheChpKTsKLSAgIHN0cmluZ190eXBlIHJlc3VsdDsKLSAgIHdoaWxlKHB0ciAmJiAqcHRyKQotICAgewotICAgICAgcmVzdWx0LmFwcGVuZCgxLCBzdGF0aWNfY2FzdDxjaGFyVD4oKnB0cikpOwotICAgICAgKytwdHI7Ci0gICB9Ci0gICByZXR1cm4gcmVzdWx0OwotfQotCi0vLwotLy8gc3BlY2lhbGlzZWQgdmVyc2lvbiBmb3IgbmFycm93IGNoYXJhY3RlcnM6Ci0vLwotdGVtcGxhdGUgPD4KLWNsYXNzIE5ETkJPT1NUX1JFR0VYX0RFQ0wgdzMyX3JlZ2V4X3RyYWl0c19jaGFyX2xheWVyPGNoYXI+IDogcHVibGljIHczMl9yZWdleF90cmFpdHNfYmFzZTxjaGFyPgotewotICAgdHlwZWRlZiBzdGQ6OnN0cmluZyBzdHJpbmdfdHlwZTsKLXB1YmxpYzoKLSAgIHczMl9yZWdleF90cmFpdHNfY2hhcl9sYXllcig6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmxjaWRfdHlwZSBsKQotICAgOiB3MzJfcmVnZXhfdHJhaXRzX2Jhc2U8Y2hhcj4obCkKLSAgIHsKLSAgICAgIGluaXQoKTsKLSAgIH0KLQotICAgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfdHlwZSBzeW50YXhfdHlwZShjaGFyIGMpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX2NoYXJfbWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGMpXTsKLSAgIH0KLSAgIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV9zeW50YXhfdHlwZShjaGFyIGMpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9jaGFyX21hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjKV07Ci0gICB9Ci0gICBjaGFyIHRvbG93ZXIoY2hhciBjKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9sb3dlcl9tYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oYyldOwotICAgfQotICAgYm9vbCBpc2N0eXBlKG5kbmJvb3N0Ojp1aW50MzJfdCBtYXNrLCBjaGFyIGMpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3R5cGVfbWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGMpXSAmIG1hc2s7Ci0gICB9Ci0KLXByaXZhdGU6Ci0gICByZWdleF9jb25zdGFudHM6OnN5bnRheF90eXBlIG1fY2hhcl9tYXBbMXUgPDwgQ0hBUl9CSVRdOwotICAgY2hhciBtX2xvd2VyX21hcFsxdSA8PCBDSEFSX0JJVF07Ci0gICBuZG5ib29zdDo6dWludDE2X3QgbV90eXBlX21hcFsxdSA8PCBDSEFSX0JJVF07Ci0gICB2b2lkIGluaXQoKTsKLX07Ci0KLS8vCi0vLyBjbGFzcyB3MzJfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uOgotLy8gcHJvdmlkZXMgcGltcGwgaW1wbGVtZW50YXRpb24gZm9yIHczMl9yZWdleF90cmFpdHMuCi0vLwotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotY2xhc3MgdzMyX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbiA6IHB1YmxpYyB3MzJfcmVnZXhfdHJhaXRzX2NoYXJfbGF5ZXI8Y2hhclQ+Ci17Ci1wdWJsaWM6Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHczMl9yZWdleF90cmFpdHM8Y2hhclQ+OjpjaGFyX2NsYXNzX3R5cGUgY2hhcl9jbGFzc190eXBlOwotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGNoYXJfY2xhc3NfdHlwZSwgbWFza193b3JkID0gMHgwNDAwKTsgLy8gbXVzdCBiZSBDMV9ERUZJTkVEIDw8IDEKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChjaGFyX2NsYXNzX3R5cGUsIG1hc2tfdW5pY29kZSA9IDB4MDgwMCk7IC8vIG11c3QgYmUgQzFfREVGSU5FRCA8PCAyCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoY2hhcl9jbGFzc190eXBlLCBtYXNrX2hvcml6b250YWwgPSAweDEwMDApOyAvLyBtdXN0IGJlIEMxX0RFRklORUQgPDwgMwotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGNoYXJfY2xhc3NfdHlwZSwgbWFza192ZXJ0aWNhbCA9IDB4MjAwMCk7IC8vIG11c3QgYmUgQzFfREVGSU5FRCA8PCA0Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoY2hhcl9jbGFzc190eXBlLCBtYXNrX2Jhc2UgPSAweDNmZik7ICAvLyBhbGwgdGhlIG1hc2tzIHVzZWQgYnkgdGhlIENUX0NUWVBFMSBncm91cAotCi0gICB0eXBlZGVmIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiBzdHJpbmdfdHlwZTsKLSAgIHR5cGVkZWYgY2hhclQgY2hhcl90eXBlOwotICAgdzMyX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbig6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmxjaWRfdHlwZSBsKTsKLSAgIHN0ZDo6c3RyaW5nIGVycm9yX3N0cmluZyhyZWdleF9jb25zdGFudHM6OmVycm9yX3R5cGUgbikgY29uc3QKLSAgIHsKLSAgICAgIGlmKCFtX2Vycm9yX3N0cmluZ3MuZW1wdHkoKSkKLSAgICAgIHsKLSAgICAgICAgIHN0ZDo6bWFwPGludCwgc3RkOjpzdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBwID0gbV9lcnJvcl9zdHJpbmdzLmZpbmQobik7Ci0gICAgICAgICByZXR1cm4gKHAgPT0gbV9lcnJvcl9zdHJpbmdzLmVuZCgpKSA/IHN0ZDo6c3RyaW5nKGdldF9kZWZhdWx0X2Vycm9yX3N0cmluZyhuKSkgOiBwLT5zZWNvbmQ7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gZ2V0X2RlZmF1bHRfZXJyb3Jfc3RyaW5nKG4pOwotICAgfQotICAgY2hhcl9jbGFzc190eXBlIGxvb2t1cF9jbGFzc25hbWUoY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIpIGNvbnN0Ci0gICB7Ci0gICAgICBjaGFyX2NsYXNzX3R5cGUgcmVzdWx0ID0gbG9va3VwX2NsYXNzbmFtZV9pbXAocDEsIHAyKTsKLSAgICAgIGlmKHJlc3VsdCA9PSAwKQotICAgICAgewotICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzdHJpbmdfdHlwZTo6c2l6ZV90eXBlIHNpemVfdHlwZTsKLSAgICAgICAgIHN0cmluZ190eXBlIHRlbXAocDEsIHAyKTsKLSAgICAgICAgIGZvcihzaXplX3R5cGUgaSA9IDA7IGkgPCB0ZW1wLnNpemUoKTsgKytpKQotICAgICAgICAgICAgdGVtcFtpXSA9IHRoaXMtPnRvbG93ZXIodGVtcFtpXSk7Ci0gICAgICAgICByZXN1bHQgPSBsb29rdXBfY2xhc3NuYW1lX2ltcCgmKnRlbXAuYmVnaW4oKSwgJip0ZW1wLmJlZ2luKCkgKyB0ZW1wLnNpemUoKSk7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gcmVzdWx0OwotICAgfQotICAgc3RyaW5nX3R5cGUgbG9va3VwX2NvbGxhdGVuYW1lKGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyKSBjb25zdDsKLSAgIHN0cmluZ190eXBlIHRyYW5zZm9ybV9wcmltYXJ5KGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyKSBjb25zdDsKLSAgIHN0cmluZ190eXBlIHRyYW5zZm9ybShjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMikgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OnczMl90cmFuc2Zvcm0odGhpcy0+bV9sb2NhbGUsIHAxLCBwMik7Ci0gICB9Ci1wcml2YXRlOgotICAgc3RkOjptYXA8aW50LCBzdGQ6OnN0cmluZz4gICAgIG1fZXJyb3Jfc3RyaW5nczsgICAvLyBlcnJvciBtZXNzYWdlcyBpbmRleGVkIGJ5IG51bWJlcmljIElECi0gICBzdGQ6Om1hcDxzdHJpbmdfdHlwZSwgY2hhcl9jbGFzc190eXBlPiAgbV9jdXN0b21fY2xhc3NfbmFtZXM7IC8vIGNoYXJhY3RlciBjbGFzcyBuYW1lcwotICAgc3RkOjptYXA8c3RyaW5nX3R5cGUsIHN0cmluZ190eXBlPiAgICAgIG1fY3VzdG9tX2NvbGxhdGVfbmFtZXM7IC8vIGNvbGxhdGluZyBlbGVtZW50IG5hbWVzCi0gICB1bnNpZ25lZCAgICAgICAgICAgICAgICAgICAgICAgbV9jb2xsYXRlX3R5cGU7ICAgIC8vIHRoZSBmb3JtIG9mIHRoZSBjb2xsYXRpb24gc3RyaW5nCi0gICBjaGFyVCAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jb2xsYXRlX2RlbGltOyAgIC8vIHRoZSBjb2xsYXRpb24gZ3JvdXAgZGVsaW1pdGVyCi0gICAvLwotICAgLy8gaGVscGVyczoKLSAgIC8vCi0gICBjaGFyX2NsYXNzX3R5cGUgbG9va3VwX2NsYXNzbmFtZV9pbXAoY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIpIGNvbnN0OwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotdHlwZW5hbWUgdzMyX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46OnN0cmluZ190eXBlIAotICAgdzMyX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46OnRyYW5zZm9ybV9wcmltYXJ5KGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyKSBjb25zdAotewotICAgc3RyaW5nX3R5cGUgcmVzdWx0OwotICAgLy8KLSAgIC8vIFdoYXQgd2UgZG8gaGVyZSBkZXBlbmRzIHVwb24gdGhlIGZvcm1hdCBvZiB0aGUgc29ydCBrZXkgcmV0dXJuZWQgYnkKLSAgIC8vIHNvcnQga2V5IHJldHVybmVkIGJ5IHRoaXMtPnRyYW5zZm9ybToKLSAgIC8vCi0gICBzd2l0Y2gobV9jb2xsYXRlX3R5cGUpCi0gICB7Ci0gICBjYXNlIHNvcnRfQzoKLSAgIGNhc2Ugc29ydF91bmtub3duOgotICAgICAgLy8gdGhlIGJlc3Qgd2UgY2FuIGRvIGlzIHRyYW5zbGF0ZSB0byBsb3dlciBjYXNlLCB0aGVuIGdldCBhIHJlZ3VsYXIgc29ydCBrZXk6Ci0gICAgICB7Ci0gICAgICAgICByZXN1bHQuYXNzaWduKHAxLCBwMik7Ci0gICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHN0cmluZ190eXBlOjpzaXplX3R5cGUgc2l6ZV90eXBlOwotICAgICAgICAgZm9yKHNpemVfdHlwZSBpID0gMDsgaSA8IHJlc3VsdC5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIHJlc3VsdFtpXSA9IHRoaXMtPnRvbG93ZXIocmVzdWx0W2ldKTsKLSAgICAgICAgIHJlc3VsdCA9IHRoaXMtPnRyYW5zZm9ybSgmKnJlc3VsdC5iZWdpbigpLCAmKnJlc3VsdC5iZWdpbigpICsgcmVzdWx0LnNpemUoKSk7Ci0gICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgIGNhc2Ugc29ydF9maXhlZDoKLSAgICAgIHsKLSAgICAgICAgIC8vIGdldCBhIHJlZ3VsYXIgc29ydCBrZXksIGFuZCB0aGVuIHRydW5jYXRlIGl0OgotICAgICAgICAgcmVzdWx0LmFzc2lnbih0aGlzLT50cmFuc2Zvcm0ocDEsIHAyKSk7Ci0gICAgICAgICByZXN1bHQuZXJhc2UodGhpcy0+bV9jb2xsYXRlX2RlbGltKTsKLSAgICAgICAgIGJyZWFrOwotICAgICAgfQotICAgY2FzZSBzb3J0X2RlbGltOgotICAgICAgICAgLy8gZ2V0IGEgcmVndWxhciBzb3J0IGtleSwgYW5kIHRoZW4gdHJ1bmNhdGUgZXZlcnl0aGluZyBhZnRlciB0aGUgZGVsaW06Ci0gICAgICAgICByZXN1bHQuYXNzaWduKHRoaXMtPnRyYW5zZm9ybShwMSwgcDIpKTsKLSAgICAgICAgIHN0ZDo6c2l6ZV90IGk7Ci0gICAgICAgICBmb3IoaSA9IDA7IGkgPCByZXN1bHQuc2l6ZSgpOyArK2kpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBpZihyZXN1bHRbaV0gPT0gbV9jb2xsYXRlX2RlbGltKQotICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICB9Ci0gICAgICAgICByZXN1bHQuZXJhc2UoaSk7Ci0gICAgICAgICBicmVhazsKLSAgIH0KLSAgIGlmKHJlc3VsdC5lbXB0eSgpKQotICAgICAgcmVzdWx0ID0gc3RyaW5nX3R5cGUoMSwgY2hhclQoMCkpOwotICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotdHlwZW5hbWUgdzMyX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46OnN0cmluZ190eXBlIAotICAgdzMyX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Omxvb2t1cF9jb2xsYXRlbmFtZShjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMikgY29uc3QKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjptYXA8c3RyaW5nX3R5cGUsIHN0cmluZ190eXBlPjo6Y29uc3RfaXRlcmF0b3IgaXRlcl90eXBlOwotICAgaWYobV9jdXN0b21fY29sbGF0ZV9uYW1lcy5zaXplKCkpCi0gICB7Ci0gICAgICBpdGVyX3R5cGUgcG9zID0gbV9jdXN0b21fY29sbGF0ZV9uYW1lcy5maW5kKHN0cmluZ190eXBlKHAxLCBwMikpOwotICAgICAgaWYocG9zICE9IG1fY3VzdG9tX2NvbGxhdGVfbmFtZXMuZW5kKCkpCi0gICAgICAgICByZXR1cm4gcG9zLT5zZWNvbmQ7Ci0gICB9Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVEX0lURVJBVE9SX0NPTlNUUlVDVE9SUylcCi0gICAgICAgICAgICAgICAmJiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApXAotICAgICAgICAgICAgICAgJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8PSAweDA1NTEpCi0gICBzdGQ6OnN0cmluZyBuYW1lKHAxLCBwMik7Ci0jZWxzZQotICAgc3RkOjpzdHJpbmcgbmFtZTsKLSAgIGNvbnN0IGNoYXJUKiBwMCA9IHAxOwotICAgd2hpbGUocDAgIT0gcDIpCi0gICAgICBuYW1lLmFwcGVuZCgxLCBjaGFyKCpwMCsrKSk7Ci0jZW5kaWYKLSAgIG5hbWUgPSBsb29rdXBfZGVmYXVsdF9jb2xsYXRlX25hbWUobmFtZSk7Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVEX0lURVJBVE9SX0NPTlNUUlVDVE9SUylcCi0gICAgICAgICAgICAgICAmJiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApXAotICAgICAgICAgICAgICAgJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8PSAweDA1NTEpCi0gICBpZihuYW1lLnNpemUoKSkKLSAgICAgIHJldHVybiBzdHJpbmdfdHlwZShuYW1lLmJlZ2luKCksIG5hbWUuZW5kKCkpOwotI2Vsc2UKLSAgIGlmKG5hbWUuc2l6ZSgpKQotICAgewotICAgICAgc3RyaW5nX3R5cGUgcmVzdWx0OwotICAgICAgdHlwZWRlZiBzdGQ6OnN0cmluZzo6Y29uc3RfaXRlcmF0b3IgaXRlcjsKLSAgICAgIGl0ZXIgYiA9IG5hbWUuYmVnaW4oKTsKLSAgICAgIGl0ZXIgZSA9IG5hbWUuZW5kKCk7Ci0gICAgICB3aGlsZShiICE9IGUpCi0gICAgICAgICByZXN1bHQuYXBwZW5kKDEsIGNoYXJUKCpiKyspKTsKLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gICB9Ci0jZW5kaWYKLSAgIGlmKHAyIC0gcDEgPT0gMSkKLSAgICAgIHJldHVybiBzdHJpbmdfdHlwZSgxLCAqcDEpOwotICAgcmV0dXJuIHN0cmluZ190eXBlKCk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXczMl9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+Ojp3MzJfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uKDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6bGNpZF90eXBlIGwpCi06IHczMl9yZWdleF90cmFpdHNfY2hhcl9sYXllcjxjaGFyVD4obCkKLXsKLSAgIGNhdF90eXBlIGNhdDsKLSAgIHN0ZDo6c3RyaW5nIGNhdF9uYW1lKHczMl9yZWdleF90cmFpdHM8Y2hhclQ+OjpnZXRfY2F0YWxvZ19uYW1lKCkpOwotICAgaWYoY2F0X25hbWUuc2l6ZSgpKQotICAgewotICAgICAgY2F0ID0gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjp3MzJfY2F0X29wZW4oY2F0X25hbWUpOwotICAgICAgaWYoIWNhdCkKLSAgICAgIHsKLSAgICAgICAgIHN0ZDo6c3RyaW5nIG0oIlVuYWJsZSB0byBvcGVuIG1lc3NhZ2UgY2F0YWxvZzogIik7Ci0gICAgICAgICBzdGQ6OnJ1bnRpbWVfZXJyb3IgZXJyKG0gKyBjYXRfbmFtZSk7Ci0gICAgICAgICBuZG5ib29zdDo6cmVfZGV0YWlsOjpyYWlzZV9ydW50aW1lX2Vycm9yKGVycik7Ci0gICAgICB9Ci0gICB9Ci0gICAvLwotICAgLy8gaWYgd2UgaGF2ZSBhIHZhbGlkIGNhdGFsb2cgdGhlbiBsb2FkIG91ciBtZXNzYWdlczoKLSAgIC8vCi0gICBpZihjYXQpCi0gICB7Ci0gICAgICAvLwotICAgICAgLy8gRXJyb3IgbWVzc2FnZXM6Ci0gICAgICAvLwotICAgICAgZm9yKG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OmVycm9yX3R5cGUgaSA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OmVycm9yX3R5cGU+KDApOyAKLSAgICAgICAgIGkgPD0gbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfdW5rbm93bjsgCi0gICAgICAgICBpID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfdHlwZT4oaSArIDEpKQotICAgICAgewotICAgICAgICAgY29uc3QgY2hhciogcCA9IGdldF9kZWZhdWx0X2Vycm9yX3N0cmluZyhpKTsKLSAgICAgICAgIHN0cmluZ190eXBlIGRlZmF1bHRfbWVzc2FnZTsKLSAgICAgICAgIHdoaWxlKCpwKQotICAgICAgICAgewotICAgICAgICAgICAgZGVmYXVsdF9tZXNzYWdlLmFwcGVuZCgxLCBzdGF0aWNfY2FzdDxjaGFyVD4oKnApKTsKLSAgICAgICAgICAgICsrcDsKLSAgICAgICAgIH0KLSAgICAgICAgIHN0cmluZ190eXBlIHMgPSA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OnczMl9jYXRfZ2V0KGNhdCwgdGhpcy0+bV9sb2NhbGUsIGkrMjAwLCBkZWZhdWx0X21lc3NhZ2UpOwotICAgICAgICAgc3RkOjpzdHJpbmcgcmVzdWx0OwotICAgICAgICAgZm9yKHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgaiA9IDA7IGogPCBzLnNpemUoKTsgKytqKQotICAgICAgICAgewotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgxLCBzdGF0aWNfY2FzdDxjaGFyPihzW2pdKSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBtX2Vycm9yX3N0cmluZ3NbaV0gPSByZXN1bHQ7Ci0gICAgICB9Ci0gICAgICAvLwotICAgICAgLy8gQ3VzdG9tIGNsYXNzIG5hbWVzOgotICAgICAgLy8KLSAgICAgIHN0YXRpYyBjb25zdCBjaGFyX2NsYXNzX3R5cGUgbWFza3NbMTRdID0gCi0gICAgICB7Ci0gICAgICAgICAweDAxMDR1LCAvLyBDMV9BTFBIQSB8IEMxX0RJR0lUCi0gICAgICAgICAweDAxMDB1LCAvLyBDMV9BTFBIQQotICAgICAgICAgMHgwMDIwdSwgLy8gQzFfQ05UUkwKLSAgICAgICAgIDB4MDAwNHUsIC8vIEMxX0RJR0lUCi0gICAgICAgICAofigweDAwMjB1fDB4MDAwOHUpICYgMHgwMWZmdSkgfCAweDA0MDB1LCAvLyBub3QgQzFfQ05UUkwgb3IgQzFfU1BBQ0UKLSAgICAgICAgIDB4MDAwMnUsIC8vIEMxX0xPV0VSCi0gICAgICAgICAofjB4MDAyMHUgJiAweDAxZmZ1KSB8IDB4MDQwMCwgLy8gbm90IEMxX0NOVFJMCi0gICAgICAgICAweDAwMTB1LCAvLyBDMV9QVU5DVAotICAgICAgICAgMHgwMDA4dSwgLy8gQzFfU1BBQ0UKLSAgICAgICAgIDB4MDAwMXUsIC8vIEMxX1VQUEVSCi0gICAgICAgICAweDAwODB1LCAvLyBDMV9YRElHSVQKLSAgICAgICAgIDB4MDA0MHUsIC8vIEMxX0JMQU5LCi0gICAgICAgICB3MzJfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza193b3JkLAotICAgICAgICAgdzMyX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfdW5pY29kZSwKLSAgICAgIH07Ci0gICAgICBzdGF0aWMgY29uc3Qgc3RyaW5nX3R5cGUgbnVsbF9zdHJpbmc7Ci0gICAgICBmb3IodW5zaWduZWQgaW50IGogPSAwOyBqIDw9IDEzOyArK2opCi0gICAgICB7Ci0gICAgICAgICBzdHJpbmdfdHlwZSBzKDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6dzMyX2NhdF9nZXQoY2F0LCB0aGlzLT5tX2xvY2FsZSwgaiszMDAsIG51bGxfc3RyaW5nKSk7Ci0gICAgICAgICBpZihzLnNpemUoKSkKLSAgICAgICAgICAgIHRoaXMtPm1fY3VzdG9tX2NsYXNzX25hbWVzW3NdID0gbWFza3Nbal07Ci0gICAgICB9Ci0gICB9Ci0gICAvLwotICAgLy8gZ2V0IHRoZSBjb2xsYXRpb24gZm9ybWF0IHVzZWQgYnkgbV9wY29sbGF0ZToKLSAgIC8vCi0gICBtX2NvbGxhdGVfdHlwZSA9IHJlX2RldGFpbDo6ZmluZF9zb3J0X3N5bnRheCh0aGlzLCAmbV9jb2xsYXRlX2RlbGltKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotdHlwZW5hbWUgdzMyX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46OmNoYXJfY2xhc3NfdHlwZSAKLSAgIHczMl9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+Ojpsb29rdXBfY2xhc3NuYW1lX2ltcChjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMikgY29uc3QKLXsKLSAgIHN0YXRpYyBjb25zdCBjaGFyX2NsYXNzX3R5cGUgbWFza3NbMjJdID0gCi0gICB7Ci0gICAgICAwLAotICAgICAgMHgwMTA0dSwgLy8gQzFfQUxQSEEgfCBDMV9ESUdJVAotICAgICAgMHgwMTAwdSwgLy8gQzFfQUxQSEEKLSAgICAgIDB4MDA0MHUsIC8vIEMxX0JMQU5LCi0gICAgICAweDAwMjB1LCAvLyBDMV9DTlRSTAotICAgICAgMHgwMDA0dSwgLy8gQzFfRElHSVQKLSAgICAgIDB4MDAwNHUsIC8vIEMxX0RJR0lUCi0gICAgICAofigweDAwMjB1fDB4MDAwOHV8MHgwMDQwKSAmIDB4MDFmZnUpIHwgMHgwNDAwdSwgLy8gbm90IEMxX0NOVFJMIG9yIEMxX1NQQUNFIG9yIEMxX0JMQU5LCi0gICAgICB3MzJfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza19ob3Jpem9udGFsLCAKLSAgICAgIDB4MDAwMnUsIC8vIEMxX0xPV0VSCi0gICAgICAweDAwMDJ1LCAvLyBDMV9MT1dFUgotICAgICAgKH4weDAwMjB1ICYgMHgwMWZmdSkgfCAweDA0MDAsIC8vIG5vdCBDMV9DTlRSTAotICAgICAgMHgwMDEwdSwgLy8gQzFfUFVOQ1QKLSAgICAgIDB4MDAwOHUsIC8vIEMxX1NQQUNFCi0gICAgICAweDAwMDh1LCAvLyBDMV9TUEFDRQotICAgICAgMHgwMDAxdSwgLy8gQzFfVVBQRVIKLSAgICAgIHczMl9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX3VuaWNvZGUsCi0gICAgICAweDAwMDF1LCAvLyBDMV9VUFBFUgotICAgICAgdzMyX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfdmVydGljYWwsIAotICAgICAgMHgwMTA0dSB8IHczMl9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX3dvcmQsIAotICAgICAgMHgwMTA0dSB8IHczMl9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX3dvcmQsIAotICAgICAgMHgwMDgwdSwgLy8gQzFfWERJR0lUCi0gICB9OwotICAgaWYobV9jdXN0b21fY2xhc3NfbmFtZXMuc2l6ZSgpKQotICAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6Om1hcDxzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4sIGNoYXJfY2xhc3NfdHlwZT46OmNvbnN0X2l0ZXJhdG9yIG1hcF9pdGVyOwotICAgICAgbWFwX2l0ZXIgcG9zID0gbV9jdXN0b21fY2xhc3NfbmFtZXMuZmluZChzdHJpbmdfdHlwZShwMSwgcDIpKTsKLSAgICAgIGlmKHBvcyAhPSBtX2N1c3RvbV9jbGFzc19uYW1lcy5lbmQoKSkKLSAgICAgICAgIHJldHVybiBwb3MtPnNlY29uZDsKLSAgIH0KLSAgIHN0ZDo6c2l6ZV90IHN0YXRlX2lkID0gMSArIHJlX2RldGFpbDo6Z2V0X2RlZmF1bHRfY2xhc3NfaWQocDEsIHAyKTsKLSAgIGlmKHN0YXRlX2lkIDwgc2l6ZW9mKG1hc2tzKSAvIHNpemVvZihtYXNrc1swXSkpCi0gICAgICByZXR1cm4gbWFza3Nbc3RhdGVfaWRdOwotICAgcmV0dXJuIG1hc2tzWzBdOwotfQotCi0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLW5kbmJvb3N0OjpzaGFyZWRfcHRyPGNvbnN0IHczMl9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+ID4gY3JlYXRlX3czMl9yZWdleF90cmFpdHMoOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpsY2lkX3R5cGUgbCBORE5CT09TVF9BUFBFTkRfRVhQTElDSVRfVEVNUExBVEVfVFlQRShjaGFyVCkpCi17Ci0gICAvLyBUT0RPOiBjcmVhdGUgYSBjYWNoZSBmb3IgcHJldmlvdXNseSBjb25zdHJ1Y3RlZCBvYmplY3RzLgotICAgcmV0dXJuIG5kbmJvb3N0OjpvYmplY3RfY2FjaGU8IDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6bGNpZF90eXBlLCB3MzJfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPiA+OjpnZXQobCwgNSk7Ci19Ci0KLX0gLy8gcmVfZGV0YWlsCi0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLWNsYXNzIHczMl9yZWdleF90cmFpdHMKLXsKLXB1YmxpYzoKLSAgIHR5cGVkZWYgY2hhclQgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcl90eXBlOwotICAgdHlwZWRlZiBzdGQ6OnNpemVfdCAgICAgICAgICAgICAgICAgICBzaXplX3R5cGU7Ci0gICB0eXBlZGVmIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJfdHlwZT4gIHN0cmluZ190eXBlOwotICAgdHlwZWRlZiA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmxjaWRfdHlwZSBsb2NhbGVfdHlwZTsKLSAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVpbnRfbGVhc3QzMl90ICAgICAgICAgY2hhcl9jbGFzc190eXBlOwotCi0gICBzdHJ1Y3QgYm9vc3RfZXh0ZW5zaW9uc190YWd7fTsKLQotICAgdzMyX3JlZ2V4X3RyYWl0cygpCi0gICAgICA6IG1fcGltcGwocmVfZGV0YWlsOjpjcmVhdGVfdzMyX3JlZ2V4X3RyYWl0czxjaGFyVD4oOjpuZG5ib29zdDo6cmVfZGV0YWlsOjp3MzJfZ2V0X2RlZmF1bHRfbG9jYWxlKCkpKQotICAgeyB9Ci0gICBzdGF0aWMgc2l6ZV90eXBlIGxlbmd0aChjb25zdCBjaGFyX3R5cGUqIHApCi0gICB7Ci0gICAgICByZXR1cm4gc3RkOjpjaGFyX3RyYWl0czxjaGFyVD46Omxlbmd0aChwKTsKLSAgIH0KLSAgIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3R5cGUgc3ludGF4X3R5cGUoY2hhclQgYyljb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcGltcGwtPnN5bnRheF90eXBlKGMpOwotICAgfQotICAgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3N5bnRheF90eXBlKGNoYXJUIGMpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9waW1wbC0+ZXNjYXBlX3N5bnRheF90eXBlKGMpOwotICAgfQotICAgY2hhclQgdHJhbnNsYXRlKGNoYXJUIGMpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gYzsKLSAgIH0KLSAgIGNoYXJUIHRyYW5zbGF0ZV9ub2Nhc2UoY2hhclQgYykgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiB0aGlzLT5tX3BpbXBsLT50b2xvd2VyKGMpOwotICAgfQotICAgY2hhclQgdHJhbnNsYXRlKGNoYXJUIGMsIGJvb2wgaWNhc2UpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gaWNhc2UgPyB0aGlzLT5tX3BpbXBsLT50b2xvd2VyKGMpIDogYzsKLSAgIH0KLSAgIGNoYXJUIHRvbG93ZXIoY2hhclQgYykgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiB0aGlzLT5tX3BpbXBsLT50b2xvd2VyKGMpOwotICAgfQotICAgY2hhclQgdG91cHBlcihjaGFyVCBjKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6dzMyX3RvdXBwZXIoYywgdGhpcy0+bV9waW1wbC0+bV9sb2NhbGUpOwotICAgfQotICAgc3RyaW5nX3R5cGUgdHJhbnNmb3JtKGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6dzMyX3RyYW5zZm9ybSh0aGlzLT5tX3BpbXBsLT5tX2xvY2FsZSwgcDEsIHAyKTsKLSAgIH0KLSAgIHN0cmluZ190eXBlIHRyYW5zZm9ybV9wcmltYXJ5KGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcGltcGwtPnRyYW5zZm9ybV9wcmltYXJ5KHAxLCBwMik7Ci0gICB9Ci0gICBjaGFyX2NsYXNzX3R5cGUgbG9va3VwX2NsYXNzbmFtZShjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMikgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3BpbXBsLT5sb29rdXBfY2xhc3NuYW1lKHAxLCBwMik7Ci0gICB9Ci0gICBzdHJpbmdfdHlwZSBsb29rdXBfY29sbGF0ZW5hbWUoY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9waW1wbC0+bG9va3VwX2NvbGxhdGVuYW1lKHAxLCBwMik7Ci0gICB9Ci0gICBib29sIGlzY3R5cGUoY2hhclQgYywgY2hhcl9jbGFzc190eXBlIGYpIGNvbnN0Ci0gICB7Ci0gICAgICBpZigoZiAmIHJlX2RldGFpbDo6dzMyX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfYmFzZSkgCi0gICAgICAgICAmJiAodGhpcy0+bV9waW1wbC0+aXNjdHlwZShmICYgcmVfZGV0YWlsOjp3MzJfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza19iYXNlLCBjKSkpCi0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIGVsc2UgaWYoKGYgJiByZV9kZXRhaWw6OnczMl9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX3VuaWNvZGUpICYmIHJlX2RldGFpbDo6aXNfZXh0ZW5kZWQoYykpCi0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIGVsc2UgaWYoKGYgJiByZV9kZXRhaWw6OnczMl9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX3dvcmQpICYmIChjID09ICdfJykpCi0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIGVsc2UgaWYoKGYgJiByZV9kZXRhaWw6OnczMl9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX3ZlcnRpY2FsKQotICAgICAgICAgJiYgKDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6aXNfc2VwYXJhdG9yKGMpIHx8IChjID09ICdcdicpKSkKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgZWxzZSBpZigoZiAmIHJlX2RldGFpbDo6dzMyX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfaG9yaXpvbnRhbCkgCi0gICAgICAgICAmJiB0aGlzLT5pc2N0eXBlKGMsIDB4MDAwOHUpICYmICF0aGlzLT5pc2N0eXBlKGMsIHJlX2RldGFpbDo6dzMyX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfdmVydGljYWwpKQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0gICBpbnQgdG9pKGNvbnN0IGNoYXJUKiYgcDEsIGNvbnN0IGNoYXJUKiBwMiwgaW50IHJhZGl4KWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpnbG9iYWxfdG9pKHAxLCBwMiwgcmFkaXgsICp0aGlzKTsKLSAgIH0KLSAgIGludCB2YWx1ZShjaGFyVCBjLCBpbnQgcmFkaXgpY29uc3QKLSAgIHsKLSAgICAgIGludCByZXN1bHQgPSA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6Omdsb2JhbF92YWx1ZShjKTsKLSAgICAgIHJldHVybiByZXN1bHQgPCByYWRpeCA/IHJlc3VsdCA6IC0xOwotICAgfQotICAgbG9jYWxlX3R5cGUgaW1idWUobG9jYWxlX3R5cGUgbCkKLSAgIHsKLSAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6bGNpZF90eXBlIHJlc3VsdChnZXRsb2MoKSk7Ci0gICAgICBtX3BpbXBsID0gcmVfZGV0YWlsOjpjcmVhdGVfdzMyX3JlZ2V4X3RyYWl0czxjaGFyVD4obCk7Ci0gICAgICByZXR1cm4gcmVzdWx0OwotICAgfQotICAgbG9jYWxlX3R5cGUgZ2V0bG9jKCljb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcGltcGwtPm1fbG9jYWxlOwotICAgfQotICAgc3RkOjpzdHJpbmcgZXJyb3Jfc3RyaW5nKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfdHlwZSBuKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcGltcGwtPmVycm9yX3N0cmluZyhuKTsKLSAgIH0KLQotICAgLy8KLSAgIC8vIGV4dGVuc2lvbjoKLSAgIC8vIHNldCB0aGUgbmFtZSBvZiB0aGUgbWVzc2FnZSBjYXRhbG9nIGluIHVzZSAoZGVmYXVsdHMgdG8gImJvb3N0X3JlZ2V4IikuCi0gICAvLwotICAgc3RhdGljIHN0ZDo6c3RyaW5nIGNhdGFsb2dfbmFtZShjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSk7Ci0gICBzdGF0aWMgc3RkOjpzdHJpbmcgZ2V0X2NhdGFsb2dfbmFtZSgpOwotCi1wcml2YXRlOgotICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8Y29uc3QgcmVfZGV0YWlsOjp3MzJfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPiA+IG1fcGltcGw7Ci0gICAvLwotICAgLy8gY2F0YWxvZyBuYW1lIGhhbmRsZXI6Ci0gICAvLwotICAgc3RhdGljIHN0ZDo6c3RyaW5nJiBnZXRfY2F0YWxvZ19uYW1lX2luc3QoKTsKLQotI2lmZGVmIE5ETkJPT1NUX0hBU19USFJFQURTCi0gICBzdGF0aWMgc3RhdGljX211dGV4JiBnZXRfbXV0ZXhfaW5zdCgpOwotI2VuZGlmCi19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1zdGQ6OnN0cmluZyB3MzJfcmVnZXhfdHJhaXRzPGNoYXJUPjo6Y2F0YWxvZ19uYW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lKQotewotI2lmZGVmIE5ETkJPT1NUX0hBU19USFJFQURTCi0gICBzdGF0aWNfbXV0ZXg6OnNjb3BlZF9sb2NrIGxrKGdldF9tdXRleF9pbnN0KCkpOwotI2VuZGlmCi0gICBzdGQ6OnN0cmluZyByZXN1bHQoZ2V0X2NhdGFsb2dfbmFtZV9pbnN0KCkpOwotICAgZ2V0X2NhdGFsb2dfbmFtZV9pbnN0KCkgPSBuYW1lOwotICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotc3RkOjpzdHJpbmcmIHczMl9yZWdleF90cmFpdHM8Y2hhclQ+OjpnZXRfY2F0YWxvZ19uYW1lX2luc3QoKQotewotICAgc3RhdGljIHN0ZDo6c3RyaW5nIHNfbmFtZTsKLSAgIHJldHVybiBzX25hbWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXN0ZDo6c3RyaW5nIHczMl9yZWdleF90cmFpdHM8Y2hhclQ+OjpnZXRfY2F0YWxvZ19uYW1lKCkKLXsKLSNpZmRlZiBORE5CT09TVF9IQVNfVEhSRUFEUwotICAgc3RhdGljX211dGV4OjpzY29wZWRfbG9jayBsayhnZXRfbXV0ZXhfaW5zdCgpKTsKLSNlbmRpZgotICAgc3RkOjpzdHJpbmcgcmVzdWx0KGdldF9jYXRhbG9nX25hbWVfaW5zdCgpKTsKLSAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLSNpZmRlZiBORE5CT09TVF9IQVNfVEhSRUFEUwotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotc3RhdGljX211dGV4JiB3MzJfcmVnZXhfdHJhaXRzPGNoYXJUPjo6Z2V0X211dGV4X2luc3QoKQotewotICAgc3RhdGljIHN0YXRpY19tdXRleCBzX211dGV4ID0gTkROQk9PU1RfU1RBVElDX01VVEVYX0lOSVQ7Ci0gICByZXR1cm4gc19tdXRleDsKLX0KLSNlbmRpZgotCi0KLX0gLy8gYm9vc3QKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXhfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXhfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDNlNGVkNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4X2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yZWdleCBmb3IgZG9jdW1lbnRhdGlvbi4KLSAgKiAgIEZJTEUgICAgICAgICByZWdleF9md2QuY3BwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBGb3J3YXJkIGRlY2xhcmVzIG5kbmJvb3N0OjpiYXNpY19yZWdleDw+IGFuZAotICAqICAgICAgICAgICAgICAgIGFzc29jaWF0ZWQgdHlwZWRlZnMuCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfRldEX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9GV0RfSFBQCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfQ09ORklHX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L2NvbmZpZy5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X2Z3ZC5ocHA+Ci0KLSNlbmRpZgotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Njb3BlZF9hcnJheS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Njb3BlZF9hcnJheS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5YmY2ODYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zY29wZWRfYXJyYXkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TQ09QRURfQVJSQVlfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NDT1BFRF9BUlJBWV9IUFBfSU5DTFVERUQKLQotLy8gIChDKSBDb3B5cmlnaHQgR3JlZyBDb2x2aW4gYW5kIEJlbWFuIERhd2VzIDE5OTgsIDE5OTkuCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyIFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3NtYXJ0X3B0ci9zY29wZWRfYXJyYXkuaHRtCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL3Njb3BlZF9hcnJheS5ocHA+Ci0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9TQ09QRURfQVJSQVlfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Njb3BlZF9wdHIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zY29wZWRfcHRyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQzYmI0My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Njb3BlZF9wdHIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TQ09QRURfUFRSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TQ09QRURfUFRSX0hQUF9JTkNMVURFRAotCi0vLyAgKEMpIENvcHlyaWdodCBHcmVnIENvbHZpbiBhbmQgQmVtYW4gRGF3ZXMgMTk5OCwgMTk5OS4KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDIgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvc21hcnRfcHRyL3Njb3BlZF9wdHIuaHRtCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL3Njb3BlZF9wdHIuaHBwPgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9TQ09QRURfUFRSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zaGFyZWRfYXJyYXkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zaGFyZWRfYXJyYXkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNGNlYzIwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc2hhcmVkX2FycmF5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU0hBUkVEX0FSUkFZX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TSEFSRURfQVJSQVlfSFBQX0lOQ0xVREVECi0KLS8vCi0vLyAgc2hhcmVkX2FycmF5LmhwcAotLy8KLS8vICAoQykgQ29weXJpZ2h0IEdyZWcgQ29sdmluIGFuZCBCZW1hbiBEYXdlcyAxOTk4LCAxOTk5LgotLy8gIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvc21hcnRfcHRyL3NoYXJlZF9hcnJheS5odG0gZm9yIGRvY3VtZW50YXRpb24uCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL3NoYXJlZF9hcnJheS5ocHA+Ci0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9TSEFSRURfQVJSQVlfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NoYXJlZF9wdHIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zaGFyZWRfcHRyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzNmZjhkNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NoYXJlZF9wdHIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TSEFSRURfUFRSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TSEFSRURfUFRSX0hQUF9JTkNMVURFRAotCi0vLwotLy8gIHNoYXJlZF9wdHIuaHBwCi0vLwotLy8gIChDKSBDb3B5cmlnaHQgR3JlZyBDb2x2aW4gYW5kIEJlbWFuIERhd2VzIDE5OTgsIDE5OTkuCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLTIwMDggUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3NtYXJ0X3B0ci9zaGFyZWRfcHRyLmh0bSBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvc2hhcmVkX3B0ci5ocHA+Ci0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9TSEFSRURfUFRSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvYWxsb2NhdGVfc2hhcmVkX2FycmF5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2FsbG9jYXRlX3NoYXJlZF9hcnJheS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlOTFiZjkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvYWxsb2NhdGVfc2hhcmVkX2FycmF5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDEyIEdsZW4gSm9zZXBoIEZlcm5hbmRlcwotICogZ2xlbmZlIGF0IGxpdmUgZG90IGNvbQotICoKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotICogVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0Ci0gKiBvciBjb3B5IGF0IGh0dHA6Ly9ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICovCi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9BTExPQ0FURV9TSEFSRURfQVJSQVlfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9BTExPQ0FURV9TSEFSRURfQVJSQVlfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvc2hhcmVkX3B0ci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hbGxvY2F0ZV9hcnJheV9oZWxwZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXJyYXlfZGVsZXRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hcnJheV90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfaWZfYXJyYXkuaHBwPgotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9JTklUSUFMSVpFUl9MSVNUKQotI2luY2x1ZGUgPGluaXRpYWxpemVyX2xpc3Q+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBBPgotICAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9hcnJheTxUPjo6dHlwZQotICAgIGFsbG9jYXRlX3NoYXJlZChjb25zdCBBJiBhbGxvY2F0b3IsIHN0ZDo6c2l6ZV90IHNpemUpIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9pbm5lcjxUPjo6dHlwZSBUMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9iYXNlPFQxPjo6dHlwZSBUMjsKLSAgICAgICAgVDEqIHAxID0gMDsKLSAgICAgICAgVDIqIHAyID0gMDsKLSAgICAgICAgc3RkOjpzaXplX3QgbjEgPSBzaXplICogbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfdG90YWw8VDE+OjpzaXplOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjphbGxvY2F0ZV9hcnJheV9oZWxwZXI8QSwgVDJbXT4gYTEoYWxsb2NhdG9yLCBuMSwgJnAyKTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltdPiBkMShuMSk7Ci0gICAgICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+IHMxKHAxLCBkMSwgYTEpOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbXT4qIEQyOwotICAgICAgICBwMSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VDEqPihwMik7Ci0gICAgICAgIEQyIGQyID0gc3RhdGljX2Nhc3Q8RDI+KHMxLl9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkpOwotICAgICAgICBkMi0+aW5pdChwMik7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPihzMSwgcDEpOwotICAgIH0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTKQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEEsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX2FycmF5PFQ+Ojp0eXBlCi0gICAgYWxsb2NhdGVfc2hhcmVkKGNvbnN0IEEmIGFsbG9jYXRvciwgc3RkOjpzaXplX3Qgc2l6ZSwgQXJncyYmLi4uIGFyZ3MpIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9pbm5lcjxUPjo6dHlwZSBUMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9iYXNlPFQxPjo6dHlwZSBUMjsKLSAgICAgICAgVDEqIHAxID0gMDsKLSAgICAgICAgVDIqIHAyID0gMDsKLSAgICAgICAgc3RkOjpzaXplX3QgbjEgPSBzaXplICogbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfdG90YWw8VDE+OjpzaXplOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjphbGxvY2F0ZV9hcnJheV9oZWxwZXI8QSwgVDJbXT4gYTEoYWxsb2NhdG9yLCBuMSwgJnAyKTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltdPiBkMShuMSk7Ci0gICAgICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+IHMxKHAxLCBkMSwgYTEpOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbXT4qIEQyOwotICAgICAgICBwMSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VDEqPihwMik7Ci0gICAgICAgIEQyIGQyID0gc3RhdGljX2Nhc3Q8RDI+KHMxLl9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkpOwotICAgICAgICBkMi0+aW5pdChwMiwgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPihzMSwgcDEpOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBBLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9zaXplX2FycmF5PFQ+Ojp0eXBlCi0gICAgYWxsb2NhdGVfc2hhcmVkKGNvbnN0IEEmIGFsbG9jYXRvciwgQXJncyYmLi4uIGFyZ3MpIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9pbm5lcjxUPjo6dHlwZSBUMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9iYXNlPFQxPjo6dHlwZSBUMjsKLSAgICAgICAgZW51bSB7Ci0gICAgICAgICAgICBOID0gbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfdG90YWw8VD46OnNpemUKLSAgICAgICAgfTsKLSAgICAgICAgVDEqIHAxID0gMDsKLSAgICAgICAgVDIqIHAyID0gMDsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YWxsb2NhdGVfYXJyYXlfaGVscGVyPEEsIFQyW05dPiBhMShhbGxvY2F0b3IsICZwMik7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbTl0+IGQxOwotICAgICAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPiBzMShwMSwgZDEsIGExKTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW05dPiogRDI7Ci0gICAgICAgIHAxID0gcmVpbnRlcnByZXRfY2FzdDxUMSo+KHAyKTsKLSAgICAgICAgRDIgZDIgPSBzdGF0aWNfY2FzdDxEMj4oczEuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSk7Ci0gICAgICAgIGQyLT5pbml0KHAyLCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+KHMxLCBwMSk7Ci0gICAgfQotI2VuZGlmCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVU5JRklFRF9JTklUSUFMSVpBVElPTl9TWU5UQVgpCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQT4KLSAgICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfc2l6ZV9hcnJheTxUPjo6dHlwZQotICAgIGFsbG9jYXRlX3NoYXJlZChjb25zdCBBJiBhbGxvY2F0b3IsIGNvbnN0IFQmIGxpc3QpIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9pbm5lcjxUPjo6dHlwZSBUMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9iYXNlPFQxPjo6dHlwZSBUMjsKLSAgICAgICAgdHlwZWRlZiBjb25zdCBUMiBUMzsKLSAgICAgICAgZW51bSB7Ci0gICAgICAgICAgICBOID0gbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfdG90YWw8VD46OnNpemUKLSAgICAgICAgfTsKLSAgICAgICAgVDEqIHAxID0gMDsKLSAgICAgICAgVDIqIHAyID0gMDsKLSAgICAgICAgVDMqIHAzID0gMDsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YWxsb2NhdGVfYXJyYXlfaGVscGVyPEEsIFQyW05dPiBhMShhbGxvY2F0b3IsICZwMik7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbTl0+IGQxOwotICAgICAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPiBzMShwMSwgZDEsIGExKTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW05dPiogRDI7Ci0gICAgICAgIHAzID0gcmVpbnRlcnByZXRfY2FzdDxUMyo+KGxpc3QpOwotICAgICAgICBwMSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VDEqPihwMik7Ci0gICAgICAgIEQyIGQyID0gc3RhdGljX2Nhc3Q8RDI+KHMxLl9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkpOwotICAgICAgICBkMi0+aW5pdF9saXN0KHAyLCBwMyk7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPihzMSwgcDEpOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBBPgotICAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9hcnJheTxUPjo6dHlwZQotICAgIGFsbG9jYXRlX3NoYXJlZChjb25zdCBBJiBhbGxvY2F0b3IsIHN0ZDo6c2l6ZV90IHNpemUsCi0gICAgICAgIGNvbnN0IHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2lubmVyPFQ+Ojp0eXBlJiBsaXN0KSB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfaW5uZXI8VD46OnR5cGUgVDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUMT46OnR5cGUgVDI7Ci0gICAgICAgIHR5cGVkZWYgY29uc3QgVDIgVDM7Ci0gICAgICAgIGVudW0gewotICAgICAgICAgICAgTSA9IG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X3RvdGFsPFQxPjo6c2l6ZQotICAgICAgICB9OwotICAgICAgICBUMSogcDEgPSAwOwotICAgICAgICBUMiogcDIgPSAwOwotICAgICAgICBUMyogcDMgPSAwOwotICAgICAgICBzdGQ6OnNpemVfdCBuMSA9IE0gKiBzaXplOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjphbGxvY2F0ZV9hcnJheV9oZWxwZXI8QSwgVDJbXT4gYTEoYWxsb2NhdG9yLCBuMSwgJnAyKTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltdPiBkMShuMSk7Ci0gICAgICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+IHMxKHAxLCBkMSwgYTEpOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbXT4qIEQyOwotICAgICAgICBwMyA9IHJlaW50ZXJwcmV0X2Nhc3Q8VDMqPihsaXN0KTsKLSAgICAgICAgcDEgPSByZWludGVycHJldF9jYXN0PFQxKj4ocDIpOwotICAgICAgICBEMiBkMiA9IHN0YXRpY19jYXN0PEQyPihzMS5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpKTsKLSAgICAgICAgZDItPnRlbXBsYXRlIGluaXRfbGlzdDxNPihwMiwgcDMpOwotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4oczEsIHAxKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQT4KLSAgICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfc2l6ZV9hcnJheTxUPjo6dHlwZQotICAgIGFsbG9jYXRlX3NoYXJlZChjb25zdCBBJiBhbGxvY2F0b3IsCi0gICAgICAgIGNvbnN0IHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2lubmVyPFQ+Ojp0eXBlJiBsaXN0KSB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfaW5uZXI8VD46OnR5cGUgVDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUMT46OnR5cGUgVDI7Ci0gICAgICAgIHR5cGVkZWYgY29uc3QgVDIgVDM7Ci0gICAgICAgIGVudW0gewotICAgICAgICAgICAgTSA9IG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X3RvdGFsPFQxPjo6c2l6ZSwKLSAgICAgICAgICAgIE4gPSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV90b3RhbDxUPjo6c2l6ZQotICAgICAgICB9OwotICAgICAgICBUMSogcDEgPSAwOwotICAgICAgICBUMiogcDIgPSAwOwotICAgICAgICBUMyogcDMgPSAwOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjphbGxvY2F0ZV9hcnJheV9oZWxwZXI8QSwgVDJbTl0+IGExKGFsbG9jYXRvciwgJnAyKTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltOXT4gZDE7Ci0gICAgICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+IHMxKHAxLCBkMSwgYTEpOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbTl0+KiBEMjsKLSAgICAgICAgcDMgPSByZWludGVycHJldF9jYXN0PFQzKj4obGlzdCk7Ci0gICAgICAgIHAxID0gcmVpbnRlcnByZXRfY2FzdDxUMSo+KHAyKTsKLSAgICAgICAgRDIgZDIgPSBzdGF0aWNfY2FzdDxEMj4oczEuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSk7Ci0gICAgICAgIGQyLT50ZW1wbGF0ZSBpbml0X2xpc3Q8TT4ocDIsIHAzKTsKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+KHMxLCBwMSk7Ci0gICAgfQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9JTklUSUFMSVpFUl9MSVNUKQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEE+Ci0gICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX2FycmF5PFQ+Ojp0eXBlCi0gICAgYWxsb2NhdGVfc2hhcmVkKGNvbnN0IEEmIGFsbG9jYXRvciwKLSAgICAgICAgc3RkOjppbml0aWFsaXplcl9saXN0PHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2lubmVyPFQ+Ojp0eXBlPiBsaXN0KSB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfaW5uZXI8VD46OnR5cGUgVDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUMT46OnR5cGUgVDI7Ci0gICAgICAgIHR5cGVkZWYgY29uc3QgVDIgVDM7Ci0gICAgICAgIFQxKiBwMSA9IDA7Ci0gICAgICAgIFQyKiBwMiA9IDA7Ci0gICAgICAgIFQzKiBwMyA9IDA7Ci0gICAgICAgIHN0ZDo6c2l6ZV90IG4xID0gbGlzdC5zaXplKCkgKiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV90b3RhbDxUMT46OnNpemU7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFsbG9jYXRlX2FycmF5X2hlbHBlcjxBLCBUMltdPiBhMShhbGxvY2F0b3IsIG4xLCAmcDIpOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW10+IGQxKG4xKTsKLSAgICAgICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4gczEocDEsIGQxLCBhMSk7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltdPiogRDI7Ci0gICAgICAgIHAzID0gcmVpbnRlcnByZXRfY2FzdDxUMyo+KGxpc3QuYmVnaW4oKSk7Ci0gICAgICAgIHAxID0gcmVpbnRlcnByZXRfY2FzdDxUMSo+KHAyKTsKLSAgICAgICAgRDIgZDIgPSBzdGF0aWNfY2FzdDxEMj4oczEuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSk7Ci0gICAgICAgIGQyLT5pbml0X2xpc3QocDIsIHAzKTsKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+KHMxLCBwMSk7Ci0gICAgfQotI2VuZGlmCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMpCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQT4KLSAgICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfYXJyYXk8VD46OnR5cGUKLSAgICBhbGxvY2F0ZV9zaGFyZWQoY29uc3QgQSYgYWxsb2NhdG9yLCBzdGQ6OnNpemVfdCBzaXplLAotICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9iYXNlPFQ+Ojp0eXBlJiYgdmFsdWUpIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9pbm5lcjxUPjo6dHlwZSBUMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9iYXNlPFQxPjo6dHlwZSBUMjsKLSAgICAgICAgVDEqIHAxID0gMDsKLSAgICAgICAgVDIqIHAyID0gMDsKLSAgICAgICAgc3RkOjpzaXplX3QgbjEgPSBzaXplICogbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfdG90YWw8VDE+OjpzaXplOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjphbGxvY2F0ZV9hcnJheV9oZWxwZXI8QSwgVDJbXT4gYTEoYWxsb2NhdG9yLCBuMSwgJnAyKTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltdPiBkMShuMSk7Ci0gICAgICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+IHMxKHAxLCBkMSwgYTEpOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbXT4qIEQyOwotICAgICAgICBwMSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VDEqPihwMik7Ci0gICAgICAgIEQyIGQyID0gc3RhdGljX2Nhc3Q8RDI+KHMxLl9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkpOwotICAgICAgICBkMi0+aW5pdChwMiwgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxUMj4odmFsdWUpKTsKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+KHMxLCBwMSk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEE+Ci0gICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX3NpemVfYXJyYXk8VD46OnR5cGUKLSAgICBhbGxvY2F0ZV9zaGFyZWQoY29uc3QgQSYgYWxsb2NhdG9yLAotICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9iYXNlPFQ+Ojp0eXBlJiYgdmFsdWUpIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9pbm5lcjxUPjo6dHlwZSBUMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9iYXNlPFQxPjo6dHlwZSBUMjsKLSAgICAgICAgZW51bSB7Ci0gICAgICAgICAgICBOID0gbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfdG90YWw8VD46OnNpemUKLSAgICAgICAgfTsKLSAgICAgICAgVDEqIHAxID0gMDsKLSAgICAgICAgVDIqIHAyID0gMDsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YWxsb2NhdGVfYXJyYXlfaGVscGVyPEEsIFQyW05dPiBhMShhbGxvY2F0b3IsICZwMik7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbTl0+IGQxOwotICAgICAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPiBzMShwMSwgZDEsIGExKTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW05dPiogRDI7Ci0gICAgICAgIHAxID0gcmVpbnRlcnByZXRfY2FzdDxUMSo+KHAyKTsKLSAgICAgICAgRDIgZDIgPSBzdGF0aWNfY2FzdDxEMj4oczEuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSk7Ci0gICAgICAgIGQyLT5pbml0KHAyLCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPFQyPih2YWx1ZSkpOwotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4oczEsIHAxKTsKLSAgICB9Ci0jZW5kaWYKLSNlbmRpZgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEE+Ci0gICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX2FycmF5PFQ+Ojp0eXBlCi0gICAgYWxsb2NhdGVfc2hhcmVkX25vaW5pdChjb25zdCBBJiBhbGxvY2F0b3IsIHN0ZDo6c2l6ZV90IHNpemUpIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9pbm5lcjxUPjo6dHlwZSBUMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9iYXNlPFQxPjo6dHlwZSBUMjsKLSAgICAgICAgVDEqIHAxID0gMDsKLSAgICAgICAgVDIqIHAyID0gMDsKLSAgICAgICAgc3RkOjpzaXplX3QgbjEgPSBzaXplICogbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfdG90YWw8VDE+OjpzaXplOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjphbGxvY2F0ZV9hcnJheV9oZWxwZXI8QSwgVDJbXT4gYTEoYWxsb2NhdG9yLCBuMSwgJnAyKTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltdPiBkMShuMSk7Ci0gICAgICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+IHMxKHAxLCBkMSwgYTEpOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbXT4qIEQyOwotICAgICAgICBwMSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VDEqPihwMik7Ci0gICAgICAgIEQyIGQyID0gc3RhdGljX2Nhc3Q8RDI+KHMxLl9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkpOwotICAgICAgICBkMi0+bm9pbml0KHAyKTsKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+KHMxLCBwMSk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEE+Ci0gICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX3NpemVfYXJyYXk8VD46OnR5cGUKLSAgICBhbGxvY2F0ZV9zaGFyZWRfbm9pbml0KGNvbnN0IEEmIGFsbG9jYXRvcikgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2lubmVyPFQ+Ojp0eXBlIFQxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2Jhc2U8VDE+Ojp0eXBlIFQyOwotICAgICAgICBlbnVtIHsKLSAgICAgICAgICAgIE4gPSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV90b3RhbDxUPjo6c2l6ZQotICAgICAgICB9OwotICAgICAgICBUMSogcDEgPSAwOwotICAgICAgICBUMiogcDIgPSAwOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjphbGxvY2F0ZV9hcnJheV9oZWxwZXI8QSwgVDJbTl0+IGExKGFsbG9jYXRvciwgJnAyKTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltOXT4gZDE7Ci0gICAgICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+IHMxKHAxLCBkMSwgYTEpOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbTl0+KiBEMjsKLSAgICAgICAgcDEgPSByZWludGVycHJldF9jYXN0PFQxKj4ocDIpOwotICAgICAgICBEMiBkMiA9IHN0YXRpY19jYXN0PEQyPihzMS5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpKTsKLSAgICAgICAgZDItPm5vaW5pdChwMik7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPihzMSwgcDEpOwotICAgIH0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9iYWRfd2Vha19wdHIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvYmFkX3dlYWtfcHRyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzgwODNjNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9iYWRfd2Vha19wdHIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfQkFEX1dFQUtfUFRSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfQkFEX1dFQUtfUFRSX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICBuZG5ib29zdC9zbWFydF9wdHIvYmFkX3dlYWtfcHRyLmhwcAotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDIsIDIwMDMgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZC4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0jaW5jbHVkZSA8ZXhjZXB0aW9uPgotCi0jaWZkZWYgX19CT1JMQU5EQ19fCi0jIHByYWdtYSB3YXJuIC04MDI2ICAgICAvLyBGdW5jdGlvbnMgd2l0aCBleGNlcC4gc3BlYy4gYXJlIG5vdCBleHBhbmRlZCBpbmxpbmUKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotLy8gVGhlIHN0YW5kYXJkIGxpYnJhcnkgdGhhdCBjb21lcyB3aXRoIEJvcmxhbmQgQysrIDUuNS4xLCA1LjYuNAotLy8gZGVmaW5lcyBzdGQ6OmV4Y2VwdGlvbiBhbmQgaXRzIG1lbWJlcnMgYXMgaGF2aW5nIEMgY2FsbGluZwotLy8gY29udmVudGlvbiAoLXBjKS4gV2hlbiB0aGUgZGVmaW5pdGlvbiBvZiBiYWRfd2Vha19wdHIKLS8vIGlzIGNvbXBpbGVkIHdpdGggLXBzLCB0aGUgY29tcGlsZXIgaXNzdWVzIGFuIGVycm9yLgotLy8gSGVuY2UsIHRoZSB0ZW1wb3JhcnkgI3ByYWdtYSBvcHRpb24gLXBjIGJlbG93LgotCi0jaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pICYmIF9fQk9STEFORENfXyA8PSAweDU2NAotIyBwcmFnbWEgb3B0aW9uIHB1c2ggLXBjCi0jZW5kaWYKLQotY2xhc3MgYmFkX3dlYWtfcHRyOiBwdWJsaWMgc3RkOjpleGNlcHRpb24KLXsKLXB1YmxpYzoKLQotICAgIHZpcnR1YWwgY2hhciBjb25zdCAqIHdoYXQoKSBjb25zdCB0aHJvdygpCi0gICAgewotICAgICAgICByZXR1cm4gInRyMTo6YmFkX3dlYWtfcHRyIjsKLSAgICB9Ci19OwotCi0jaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pICYmIF9fQk9STEFORENfXyA8PSAweDU2NAotIyBwcmFnbWEgb3B0aW9uIHBvcAotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZmRlZiBfX0JPUkxBTkRDX18KLSMgcHJhZ21hIHdhcm4gLjgwMjYgICAgIC8vIEZ1bmN0aW9ucyB3aXRoIGV4Y2VwLiBzcGVjLiBhcmUgbm90IGV4cGFuZGVkIGlubGluZQotI2VuZGlmCi0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfQkFEX1dFQUtfUFRSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2FsbG9jYXRlX2FycmF5X2hlbHBlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYWxsb2NhdGVfYXJyYXlfaGVscGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTk4MDFkYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYWxsb2NhdGVfYXJyYXlfaGVscGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDEyIEdsZW4gSm9zZXBoIEZlcm5hbmRlcyAKLSAqIGdsZW5mZSBhdCBsaXZlIGRvdCBjb20KLSAqCi0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgCi0gKiBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgCi0gKiBvciBjb3B5IGF0IGh0dHA6Ly9ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICovCi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfQUxMT0NBVEVfQVJSQVlfSEVMUEVSX0hQUAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0FMTE9DQVRFX0FSUkFZX0hFTFBFUl9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FsaWdubWVudF9vZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgbmFtZXNwYWNlIGRldGFpbCB7Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEEsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFkgPSBjaGFyPgotICAgICAgICBjbGFzcyBhbGxvY2F0ZV9hcnJheV9oZWxwZXI7Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEEsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFk+Ci0gICAgICAgIGNsYXNzIGFsbG9jYXRlX2FycmF5X2hlbHBlcjxBLCBUW10sIFk+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEE5LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgWTk+Ci0gICAgICAgICAgICBmcmllbmQgY2xhc3MgYWxsb2NhdGVfYXJyYXlfaGVscGVyOwotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBOjp0ZW1wbGF0ZSByZWJpbmQ8WT4gICA6Om90aGVyIEEyOwotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBOjp0ZW1wbGF0ZSByZWJpbmQ8Y2hhcj46Om90aGVyIEEzOwotICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEEyOjp2YWx1ZV90eXBlICAgICAgdmFsdWVfdHlwZTsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQTI6OnBvaW50ZXIgICAgICAgICBwb2ludGVyOwotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBMjo6Y29uc3RfcG9pbnRlciAgIGNvbnN0X3BvaW50ZXI7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEEyOjpyZWZlcmVuY2UgICAgICAgcmVmZXJlbmNlOwotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBMjo6Y29uc3RfcmVmZXJlbmNlIGNvbnN0X3JlZmVyZW5jZTsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQTI6OnNpemVfdHlwZSAgICAgICBzaXplX3R5cGU7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEEyOjpkaWZmZXJlbmNlX3R5cGUgZGlmZmVyZW5jZV90eXBlOwotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgIHN0cnVjdCByZWJpbmQgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgYWxsb2NhdGVfYXJyYXlfaGVscGVyPEEsIFRbXSwgVT4gb3RoZXI7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgYWxsb2NhdGVfYXJyYXlfaGVscGVyKGNvbnN0IEEmIGFsbG9jYXRvcl8sIHN0ZDo6c2l6ZV90IHNpemVfLCBUKiogZGF0YV8pCi0gICAgICAgICAgICAgICAgOiBhbGxvY2F0b3IoYWxsb2NhdG9yXyksCi0gICAgICAgICAgICAgICAgICBzaXplKHNpemVvZihUKSAqIHNpemVfKSwKLSAgICAgICAgICAgICAgICAgIGRhdGEoZGF0YV8pIHsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIFU+Ci0gICAgICAgICAgICBhbGxvY2F0ZV9hcnJheV9oZWxwZXIoY29uc3QgYWxsb2NhdGVfYXJyYXlfaGVscGVyPEEsIFRbXSwgVT4mIG90aGVyKSAKLSAgICAgICAgICAgICAgICA6IGFsbG9jYXRvcihvdGhlci5hbGxvY2F0b3IpLAotICAgICAgICAgICAgICAgICAgc2l6ZShvdGhlci5zaXplKSwKLSAgICAgICAgICAgICAgICAgIGRhdGEob3RoZXIuZGF0YSkgewotICAgICAgICAgICAgfQotICAgICAgICAgICAgcG9pbnRlciBhZGRyZXNzKHJlZmVyZW5jZSB2YWx1ZSkgY29uc3QgewotICAgICAgICAgICAgICAgIHJldHVybiBhbGxvY2F0b3IuYWRkcmVzcyh2YWx1ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjb25zdF9wb2ludGVyIGFkZHJlc3MoY29uc3RfcmVmZXJlbmNlIHZhbHVlKSBjb25zdCB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRvci5hZGRyZXNzKHZhbHVlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHNpemVfdHlwZSBtYXhfc2l6ZSgpIGNvbnN0IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gYWxsb2NhdG9yLm1heF9zaXplKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwb2ludGVyIGFsbG9jYXRlKHNpemVfdHlwZSBjb3VudCwgY29uc3Qgdm9pZCogdmFsdWUgPSAwKSB7Ci0gICAgICAgICAgICAgICAgc3RkOjpzaXplX3QgYTEgPSBuZG5ib29zdDo6YWxpZ25tZW50X29mPFQ+Ojp2YWx1ZTsKLSAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBuMSA9IGNvdW50ICogc2l6ZW9mKFkpICsgYTEgLSAxOwotICAgICAgICAgICAgICAgIGNoYXIqICBwMSA9IEEzKGFsbG9jYXRvcikuYWxsb2NhdGUobjEgKyBzaXplLCB2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgY2hhciogIHAyID0gcDEgKyBuMTsKLSAgICAgICAgICAgICAgICB3aGlsZSAoc3RkOjpzaXplX3QocDIpICUgYTEgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICBwMi0tOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAqZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KHAyKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gIHJlaW50ZXJwcmV0X2Nhc3Q8WSo+KHAxKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZvaWQgZGVhbGxvY2F0ZShwb2ludGVyIG1lbW9yeSwgc2l6ZV90eXBlIGNvdW50KSB7Ci0gICAgICAgICAgICAgICAgc3RkOjpzaXplX3QgYTEgPSBuZG5ib29zdDo6YWxpZ25tZW50X29mPFQ+Ojp2YWx1ZTsKLSAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBuMSA9IGNvdW50ICogc2l6ZW9mKFkpICsgYTEgLSAxOwotICAgICAgICAgICAgICAgIGNoYXIqICBwMSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1lbW9yeSk7Ci0gICAgICAgICAgICAgICAgQTMoYWxsb2NhdG9yKS5kZWFsbG9jYXRlKHAxLCBuMSArIHNpemUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdm9pZCBjb25zdHJ1Y3QocG9pbnRlciBtZW1vcnksIGNvbnN0IFkmIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgYWxsb2NhdG9yLmNvbnN0cnVjdChtZW1vcnksIHZhbHVlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZvaWQgZGVzdHJveShwb2ludGVyIG1lbW9yeSkgewotICAgICAgICAgICAgICAgIGFsbG9jYXRvci5kZXN0cm95KG1lbW9yeSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGFsbG9jYXRlX2FycmF5X2hlbHBlcjxBLCBUW10sIFU+JiBvdGhlcikgY29uc3QgewotICAgICAgICAgICAgICAgIHJldHVybiBhbGxvY2F0b3IgPT0gb3RoZXIuYWxsb2NhdG9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBhbGxvY2F0ZV9hcnJheV9oZWxwZXI8QSwgVFtdLCBVPiYgb3RoZXIpIGNvbnN0IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IAotICAgICAgICAgICAgfQotICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgQTIgYWxsb2NhdG9yOwotICAgICAgICAgICAgc3RkOjpzaXplX3Qgc2l6ZTsKLSAgICAgICAgICAgIFQqKiBkYXRhOwotICAgICAgICB9OwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBLCB0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBOLCB0eXBlbmFtZSBZPgotICAgICAgICBjbGFzcyBhbGxvY2F0ZV9hcnJheV9oZWxwZXI8QSwgVFtOXSwgWT4gewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQTksIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBZOT4KLSAgICAgICAgICAgIGZyaWVuZCBjbGFzcyBhbGxvY2F0ZV9hcnJheV9oZWxwZXI7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEE6OnRlbXBsYXRlIHJlYmluZDxZPiAgIDo6b3RoZXIgQTI7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEE6OnRlbXBsYXRlIHJlYmluZDxjaGFyPjo6b3RoZXIgQTM7Ci0gICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQTI6OnZhbHVlX3R5cGUgICAgICB2YWx1ZV90eXBlOwotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBMjo6cG9pbnRlciAgICAgICAgIHBvaW50ZXI7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEEyOjpjb25zdF9wb2ludGVyICAgY29uc3RfcG9pbnRlcjsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQTI6OnJlZmVyZW5jZSAgICAgICByZWZlcmVuY2U7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEEyOjpjb25zdF9yZWZlcmVuY2UgY29uc3RfcmVmZXJlbmNlOwotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBMjo6c2l6ZV90eXBlICAgICAgIHNpemVfdHlwZTsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQTI6OmRpZmZlcmVuY2VfdHlwZSBkaWZmZXJlbmNlX3R5cGU7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgc3RydWN0IHJlYmluZCB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBhbGxvY2F0ZV9hcnJheV9oZWxwZXI8QSwgVFtOXSwgVT4gb3RoZXI7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgYWxsb2NhdGVfYXJyYXlfaGVscGVyKGNvbnN0IEEmIGFsbG9jYXRvcl8sIFQqKiBkYXRhXykKLSAgICAgICAgICAgICAgICA6IGFsbG9jYXRvcihhbGxvY2F0b3JfKSwKLSAgICAgICAgICAgICAgICAgIGRhdGEoZGF0YV8pIHsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIFU+Ci0gICAgICAgICAgICBhbGxvY2F0ZV9hcnJheV9oZWxwZXIoY29uc3QgYWxsb2NhdGVfYXJyYXlfaGVscGVyPEEsIFRbTl0sIFU+JiBvdGhlcikgCi0gICAgICAgICAgICAgICAgOiBhbGxvY2F0b3Iob3RoZXIuYWxsb2NhdG9yKSwKLSAgICAgICAgICAgICAgICAgIGRhdGEob3RoZXIuZGF0YSkgewotICAgICAgICAgICAgfQotICAgICAgICAgICAgcG9pbnRlciBhZGRyZXNzKHJlZmVyZW5jZSB2YWx1ZSkgY29uc3QgewotICAgICAgICAgICAgICAgIHJldHVybiBhbGxvY2F0b3IuYWRkcmVzcyh2YWx1ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjb25zdF9wb2ludGVyIGFkZHJlc3MoY29uc3RfcmVmZXJlbmNlIHZhbHVlKSBjb25zdCB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRvci5hZGRyZXNzKHZhbHVlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHNpemVfdHlwZSBtYXhfc2l6ZSgpIGNvbnN0IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gYWxsb2NhdG9yLm1heF9zaXplKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwb2ludGVyIGFsbG9jYXRlKHNpemVfdHlwZSBjb3VudCwgY29uc3Qgdm9pZCogdmFsdWUgPSAwKSB7Ci0gICAgICAgICAgICAgICAgc3RkOjpzaXplX3QgYTEgPSBuZG5ib29zdDo6YWxpZ25tZW50X29mPFQ+Ojp2YWx1ZTsKLSAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBuMSA9IGNvdW50ICogc2l6ZW9mKFkpICsgYTEgLSAxOwotICAgICAgICAgICAgICAgIGNoYXIqICBwMSA9IEEzKGFsbG9jYXRvcikuYWxsb2NhdGUobjEgKyBOMSwgdmFsdWUpOwotICAgICAgICAgICAgICAgIGNoYXIqICBwMiA9IHAxICsgbjE7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKHN0ZDo6c2l6ZV90KHAyKSAlIGExICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgcDItLTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgKmRhdGEgPSByZWludGVycHJldF9jYXN0PFQqPihwMik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICByZWludGVycHJldF9jYXN0PFkqPihwMSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2b2lkIGRlYWxsb2NhdGUocG9pbnRlciBtZW1vcnksIHNpemVfdHlwZSBjb3VudCkgewotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGExID0gbmRuYm9vc3Q6OmFsaWdubWVudF9vZjxUPjo6dmFsdWU7Ci0gICAgICAgICAgICAgICAgc3RkOjpzaXplX3QgbjEgPSBjb3VudCAqIHNpemVvZihZKSArIGExIC0gMTsKLSAgICAgICAgICAgICAgICBjaGFyKiAgcDEgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihtZW1vcnkpOwotICAgICAgICAgICAgICAgIEEzKGFsbG9jYXRvcikuZGVhbGxvY2F0ZShwMSwgbjEgKyBOMSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2b2lkIGNvbnN0cnVjdChwb2ludGVyIG1lbW9yeSwgY29uc3QgWSYgdmFsdWUpIHsKLSAgICAgICAgICAgICAgICBhbGxvY2F0b3IuY29uc3RydWN0KG1lbW9yeSwgdmFsdWUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdm9pZCBkZXN0cm95KHBvaW50ZXIgbWVtb3J5KSB7Ci0gICAgICAgICAgICAgICAgYWxsb2NhdG9yLmRlc3Ryb3kobWVtb3J5KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgYWxsb2NhdGVfYXJyYXlfaGVscGVyPEEsIFRbTl0sIFU+JiBvdGhlcikgY29uc3QgewotICAgICAgICAgICAgICAgIHJldHVybiBhbGxvY2F0b3IgPT0gb3RoZXIuYWxsb2NhdG9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBhbGxvY2F0ZV9hcnJheV9oZWxwZXI8QSwgVFtOXSwgVT4mIG90aGVyKSBjb25zdCB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyAKLSAgICAgICAgICAgIH0KLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIGVudW0gewotICAgICAgICAgICAgICAgIE4xID0gTiAqIHNpemVvZihUKQotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIEEyIGFsbG9jYXRvcjsKLSAgICAgICAgICAgIFQqKiBkYXRhOwotICAgICAgICB9OwotICAgIH0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXJyYXlfZGVsZXRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXJyYXlfZGVsZXRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3YWU5ZmQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2FycmF5X2RlbGV0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTI0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTIgR2xlbiBKb3NlcGggRmVybmFuZGVzCi0gKiBnbGVuZmUgYXQgbGl2ZSBkb3QgY29tCi0gKgotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0gKiBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQKLSAqIG9yIGNvcHkgYXQgaHR0cDovL2Jvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKi8KLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9BUlJBWV9ERUxFVEVSX0hQUAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0FSUkFZX0RFTEVURVJfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2FycmF5X3V0aWxpdHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfZm9yd2FyZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgbmFtZXNwYWNlIGRldGFpbCB7Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIGNsYXNzIGFycmF5X2RlbGV0ZXI7Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIGNsYXNzIGFycmF5X2RlbGV0ZXI8VFtdPiB7Ci0gICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIGFycmF5X2RlbGV0ZXIoc3RkOjpzaXplX3Qgc2l6ZV8pCi0gICAgICAgICAgICAgICAgOiBzaXplKHNpemVfKSwKLSAgICAgICAgICAgICAgICAgIG9iamVjdCgwKSB7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB+YXJyYXlfZGVsZXRlcigpIHsKLSAgICAgICAgICAgICAgICBpZiAob2JqZWN0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGFycmF5X2Rlc3Ryb3kob2JqZWN0LCBzaXplKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2b2lkIGluaXQoVCogbWVtb3J5KSB7Ci0gICAgICAgICAgICAgICAgYXJyYXlfaW5pdChtZW1vcnksIHNpemUpOwotICAgICAgICAgICAgICAgIG9iamVjdCA9IG1lbW9yeTsKLSAgICAgICAgICAgIH0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUykKLSAgICAgICAgICAgIHZvaWQgaW5pdChUKiBtZW1vcnksIFQmJiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIGFycmF5X2luaXRfdmFsdWUobWVtb3J5LCBzaXplLCBzcF9mb3J3YXJkPFQ+KHZhbHVlKSk7Ci0gICAgICAgICAgICAgICAgb2JqZWN0ID0gbWVtb3J5OyAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIH0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMpCi0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPgotICAgICAgICAgICAgdm9pZCBpbml0KFQqIG1lbW9yeSwgQXJncyYmLi4uIGFyZ3MpIHsKLSAgICAgICAgICAgICAgICBhcnJheV9pbml0X2FyZ3MobWVtb3J5LCBzaXplLCBzcF9mb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKLSAgICAgICAgICAgICAgICBvYmplY3QgPSBtZW1vcnk7Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKLSNlbmRpZgotICAgICAgICAgICAgdm9pZCBpbml0X2xpc3QoVCogbWVtb3J5LCBjb25zdCBUKiBsaXN0KSB7Ci0gICAgICAgICAgICAgICAgYXJyYXlfaW5pdF9saXN0KG1lbW9yeSwgc2l6ZSwgbGlzdCk7Ci0gICAgICAgICAgICAgICAgb2JqZWN0ID0gbWVtb3J5OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGVtcGxhdGU8c3RkOjpzaXplX3QgTT4KLSAgICAgICAgICAgIHZvaWQgaW5pdF9saXN0KFQqIG1lbW9yeSwgY29uc3QgVCogbGlzdCkgewotICAgICAgICAgICAgICAgIGFycmF5X2luaXRfbGlzdDxULCBNPihtZW1vcnksIHNpemUsIGxpc3QpOwotICAgICAgICAgICAgICAgIG9iamVjdCA9IG1lbW9yeTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZvaWQgbm9pbml0KFQqIG1lbW9yeSkgewotICAgICAgICAgICAgICAgIGFycmF5X25vaW5pdChtZW1vcnksIHNpemUpOwotICAgICAgICAgICAgICAgIG9iamVjdCA9IG1lbW9yeTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZvaWQgb3BlcmF0b3IoKShjb25zdCB2b2lkKikgewotICAgICAgICAgICAgICAgIGlmIChvYmplY3QpIHsKLSAgICAgICAgICAgICAgICAgICAgYXJyYXlfZGVzdHJveShvYmplY3QsIHNpemUpOwotICAgICAgICAgICAgICAgICAgICBvYmplY3QgPSAwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IHNpemU7Ci0gICAgICAgICAgICBUKiBvYmplY3Q7Ci0gICAgICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IE4+Ci0gICAgICAgIGNsYXNzIGFycmF5X2RlbGV0ZXI8VFtOXT4gewotICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICBhcnJheV9kZWxldGVyKCkKLSAgICAgICAgICAgICAgICA6IG9iamVjdCgwKSB7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB+YXJyYXlfZGVsZXRlcigpIHsKLSAgICAgICAgICAgICAgICBpZiAob2JqZWN0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGFycmF5X2Rlc3Ryb3kob2JqZWN0LCBOKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2b2lkIGluaXQoVCogbWVtb3J5KSB7Ci0gICAgICAgICAgICAgICAgYXJyYXlfaW5pdChtZW1vcnksIE4pOwotICAgICAgICAgICAgICAgIG9iamVjdCA9IG1lbW9yeTsKLSAgICAgICAgICAgIH0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUykKLSAgICAgICAgICAgIHZvaWQgaW5pdChUKiBtZW1vcnksIFQmJiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIGFycmF5X2luaXRfdmFsdWUobWVtb3J5LCBOLCBzcF9mb3J3YXJkPFQ+KHZhbHVlKSk7Ci0gICAgICAgICAgICAgICAgb2JqZWN0ID0gbWVtb3J5OyAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIH0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMpCi0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPgotICAgICAgICAgICAgdm9pZCBpbml0KFQqIG1lbW9yeSwgQXJncyYmLi4uIGFyZ3MpIHsKLSAgICAgICAgICAgICAgICBhcnJheV9pbml0X2FyZ3MobWVtb3J5LCBOLCBzcF9mb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKLSAgICAgICAgICAgICAgICBvYmplY3QgPSBtZW1vcnk7Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKLSNlbmRpZgotICAgICAgICAgICAgdm9pZCBpbml0X2xpc3QoVCogbWVtb3J5LCBjb25zdCBUKiBsaXN0KSB7Ci0gICAgICAgICAgICAgICAgYXJyYXlfaW5pdF9saXN0KG1lbW9yeSwgTiwgbGlzdCk7Ci0gICAgICAgICAgICAgICAgb2JqZWN0ID0gbWVtb3J5OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGVtcGxhdGU8c3RkOjpzaXplX3QgTT4KLSAgICAgICAgICAgIHZvaWQgaW5pdF9saXN0KFQqIG1lbW9yeSwgY29uc3QgVCogbGlzdCkgewotICAgICAgICAgICAgICAgIGFycmF5X2luaXRfbGlzdDxULCBNPihtZW1vcnksIE4sIGxpc3QpOwotICAgICAgICAgICAgICAgIG9iamVjdCA9IG1lbW9yeTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZvaWQgbm9pbml0KFQqIG1lbW9yeSkgewotICAgICAgICAgICAgICAgIGFycmF5X25vaW5pdChtZW1vcnksIE4pOwotICAgICAgICAgICAgICAgIG9iamVjdCA9IG1lbW9yeTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZvaWQgb3BlcmF0b3IoKShjb25zdCB2b2lkKikgewotICAgICAgICAgICAgICAgIGlmIChvYmplY3QpIHsKLSAgICAgICAgICAgICAgICAgICAgYXJyYXlfZGVzdHJveShvYmplY3QsIE4pOwotICAgICAgICAgICAgICAgICAgICBvYmplY3QgPSAwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIFQqIG9iamVjdDsKLSAgICAgICAgfTsKLSAgICB9Ci19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2FycmF5X3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXJyYXlfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTc5Yjc3Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXJyYXlfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTIgR2xlbiBKb3NlcGggRmVybmFuZGVzIAotICogZ2xlbmZlIGF0IGxpdmUgZG90IGNvbQotICoKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCAKLSAqIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCAKLSAqIG9yIGNvcHkgYXQgaHR0cDovL2Jvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKi8KLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9BUlJBWV9UUkFJVFNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfQVJSQVlfVFJBSVRTX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICBuYW1lc3BhY2UgZGV0YWlsIHsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RydWN0IGFycmF5X2Jhc2UgewotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlIHR5cGU7Ci0gICAgICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0cnVjdCBhcnJheV9iYXNlPFRbXT4gewotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcnJheV9iYXNlPFQ+Ojp0eXBlIHR5cGU7Ci0gICAgICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IE4+Ci0gICAgICAgIHN0cnVjdCBhcnJheV9iYXNlPFRbTl0+IHsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXJyYXlfYmFzZTxUPjo6dHlwZSB0eXBlOwotICAgICAgICB9OwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBzdHJ1Y3QgYXJyYXlfdG90YWwgewotICAgICAgICAgICAgZW51bSB7Ci0gICAgICAgICAgICAgICAgc2l6ZSA9IDEKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IE4+Ci0gICAgICAgIHN0cnVjdCBhcnJheV90b3RhbDxUW05dPiB7Ci0gICAgICAgICAgICBlbnVtIHsKLSAgICAgICAgICAgICAgICBzaXplID0gTiAqIGFycmF5X3RvdGFsPFQ+OjpzaXplCi0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiAKLSAgICAgICAgc3RydWN0IGFycmF5X2lubmVyOwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBzdHJ1Y3QgYXJyYXlfaW5uZXI8VFtdPiB7Ci0gICAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgfTsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjpzaXplX3QgTj4KLSAgICAgICAgc3RydWN0IGFycmF5X2lubmVyPFRbTl0+IHsKLSAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICB9OwotICAgIH0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXJyYXlfdXRpbGl0eS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXJyYXlfdXRpbGl0eS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2OTYzNjUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2FycmF5X3V0aWxpdHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTc4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTIgR2xlbiBKb3NlcGggRmVybmFuZGVzIAotICogZ2xlbmZlIGF0IGxpdmUgZG90IGNvbQotICoKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCAKLSAqIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCAKLSAqIG9yIGNvcHkgYXQgaHR0cDovL2Jvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKi8KLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9BUlJBWV9VVElMSVRZX0hQUAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0FSUkFZX1VUSUxJVFlfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX2NvbnN0cnVjdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9kZXN0cnVjdG9yLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICBuYW1lc3BhY2UgZGV0YWlsIHsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgaW5saW5lIHZvaWQgYXJyYXlfZGVzdHJveShUKiwgc3RkOjpzaXplX3QsIG5kbmJvb3N0Ojp0cnVlX3R5cGUpIHsKLSAgICAgICAgfQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBpbmxpbmUgdm9pZCBhcnJheV9kZXN0cm95KFQqIG1lbW9yeSwgc3RkOjpzaXplX3Qgc2l6ZSwgbmRuYm9vc3Q6OmZhbHNlX3R5cGUpIHsKLSAgICAgICAgICAgIGZvciAoc3RkOjpzaXplX3QgaSA9IHNpemU7IGkgPiAwOyApIHsKLSAgICAgICAgICAgICAgICBtZW1vcnlbLS1pXS5+VCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIGlubGluZSB2b2lkIGFycmF5X2Rlc3Ryb3koVCogbWVtb3J5LCBzdGQ6OnNpemVfdCBzaXplKSB7Ci0gICAgICAgICAgICBuZG5ib29zdDo6aGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjxUPiB0eXBlOwotICAgICAgICAgICAgYXJyYXlfZGVzdHJveShtZW1vcnksIHNpemUsIHR5cGUpOwotICAgICAgICB9Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIGlubGluZSB2b2lkIGFycmF5X2luaXQoVCogbWVtb3J5LCBzdGQ6OnNpemVfdCBzaXplLCBuZG5ib29zdDo6dHJ1ZV90eXBlKSB7Ci0gICAgICAgICAgICBmb3IgKHN0ZDo6c2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgbWVtb3J5W2ldID0gVCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIGlubGluZSB2b2lkIGFycmF5X2luaXQoVCogbWVtb3J5LCBzdGQ6OnNpemVfdCBzaXplLCBuZG5ib29zdDo6ZmFsc2VfdHlwZSkgewotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0VYQ0VQVElPTlMpCi0gICAgICAgICAgICBzdGQ6OnNpemVfdCBpID0gMDsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgZm9yICg7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgdm9pZCogcDEgPSBtZW1vcnkgKyBpOwotICAgICAgICAgICAgICAgICAgICA6Om5ldyhwMSkgVCgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gY2F0Y2ggKC4uLikgewotICAgICAgICAgICAgICAgIGFycmF5X2Rlc3Ryb3kobWVtb3J5LCBpKTsKLSAgICAgICAgICAgICAgICB0aHJvdzsKLSAgICAgICAgICAgIH0KLSNlbHNlCi0gICAgICAgICAgICBmb3IgKHN0ZDo6c2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgdm9pZCogcDEgPSBtZW1vcnkgKyBpOwotICAgICAgICAgICAgICAgIDo6bmV3KHAxKSBUKCk7Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgfQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBpbmxpbmUgdm9pZCBhcnJheV9pbml0KFQqIG1lbW9yeSwgc3RkOjpzaXplX3Qgc2l6ZSkgewotICAgICAgICAgICAgbmRuYm9vc3Q6Omhhc190cml2aWFsX2RlZmF1bHRfY29uc3RydWN0b3I8VD4gdHlwZTsgICAgICAgICAgICAKLSAgICAgICAgICAgIGFycmF5X2luaXQobWVtb3J5LCBzaXplLCB0eXBlKTsKLSAgICAgICAgfQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTKQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBpbmxpbmUgdm9pZCBhcnJheV9pbml0X3ZhbHVlKFQqIG1lbW9yeSwgc3RkOjpzaXplX3Qgc2l6ZSwgVCYmIHZhbHVlKSB7Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fRVhDRVBUSU9OUykKLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGkgPSAwOwotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBmb3IgKDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICAgICAgICAgICAgICB2b2lkKiBwMSA9IG1lbW9yeSArIGk7Ci0gICAgICAgICAgICAgICAgICAgIDo6bmV3KHAxKSBUKHZhbHVlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGNhdGNoICguLi4pIHsKLSAgICAgICAgICAgICAgICBhcnJheV9kZXN0cm95KG1lbW9yeSwgaSk7Ci0gICAgICAgICAgICAgICAgdGhyb3c7Ci0gICAgICAgICAgICB9Ci0jZWxzZQotICAgICAgICAgICAgZm9yIChzdGQ6OnNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICAgICAgICAgIHZvaWQqIHAxID0gbWVtb3J5ICsgaTsKLSAgICAgICAgICAgICAgICA6Om5ldyhwMSkgVCh2YWx1ZSk7Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgfQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUykKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICAgICAgaW5saW5lIHZvaWQgYXJyYXlfaW5pdF9hcmdzKFQqIG1lbW9yeSwgc3RkOjpzaXplX3Qgc2l6ZSwgQXJncyYmLi4uIGFyZ3MpIHsKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19FWENFUFRJT05TKQotICAgICAgICAgICAgc3RkOjpzaXplX3QgaSA9IDA7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGZvciAoOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZvaWQqIHAxID0gbWVtb3J5ICsgaTsKLSAgICAgICAgICAgICAgICAgICAgOjpuZXcocDEpIFQoYXJncy4uLik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBjYXRjaCAoLi4uKSB7Ci0gICAgICAgICAgICAgICAgYXJyYXlfZGVzdHJveShtZW1vcnksIGkpOwotICAgICAgICAgICAgICAgIHRocm93OwotICAgICAgICAgICAgfQotI2Vsc2UKLSAgICAgICAgICAgIGZvciAoc3RkOjpzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgICAgICB2b2lkKiBwMSA9IG1lbW9yeSArIGk7Ci0gICAgICAgICAgICAgICAgOjpuZXcocDEpIFQoYXJncy4uLik7Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgfQotI2VuZGlmCi0jZW5kaWYKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgaW5saW5lIHZvaWQgYXJyYXlfaW5pdF9saXN0KFQqIG1lbW9yeSwgc3RkOjpzaXplX3Qgc2l6ZSwgY29uc3QgVCogbGlzdCkgewotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0VYQ0VQVElPTlMpCi0gICAgICAgICAgICBzdGQ6OnNpemVfdCBpID0gMDsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgZm9yICg7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgdm9pZCogcDEgPSBtZW1vcnkgKyBpOwotICAgICAgICAgICAgICAgICAgICA6Om5ldyhwMSkgVChsaXN0W2ldKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGNhdGNoICguLi4pIHsKLSAgICAgICAgICAgICAgICBhcnJheV9kZXN0cm95KG1lbW9yeSwgaSk7Ci0gICAgICAgICAgICAgICAgdGhyb3c7Ci0gICAgICAgICAgICB9Ci0jZWxzZQotICAgICAgICAgICAgZm9yIChzdGQ6OnNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICAgICAgICAgIHZvaWQqIHAxID0gbWVtb3J5ICsgaTsKLSAgICAgICAgICAgICAgICA6Om5ldyhwMSkgVChsaXN0W2ldKTsKLSAgICAgICAgICAgIH0KLSNlbmRpZgotICAgICAgICB9Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IE4+Ci0gICAgICAgIGlubGluZSB2b2lkIGFycmF5X2luaXRfbGlzdChUKiBtZW1vcnksIHN0ZDo6c2l6ZV90IHNpemUsIGNvbnN0IFQqIGxpc3QpIHsKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19FWENFUFRJT05TKQotICAgICAgICAgICAgc3RkOjpzaXplX3QgaSA9IDA7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGZvciAoOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZvaWQqIHAxID0gbWVtb3J5ICsgaTsKLSAgICAgICAgICAgICAgICAgICAgOjpuZXcocDEpIFQobGlzdFtpICUgTl0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gY2F0Y2ggKC4uLikgewotICAgICAgICAgICAgICAgIGFycmF5X2Rlc3Ryb3kobWVtb3J5LCBpKTsKLSAgICAgICAgICAgICAgICB0aHJvdzsKLSAgICAgICAgICAgIH0KLSNlbHNlCi0gICAgICAgICAgICBmb3IgKHN0ZDo6c2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgdm9pZCogcDEgPSBtZW1vcnkgKyBpOwotICAgICAgICAgICAgICAgIDo6bmV3KHAxKSBUKGxpc3RbaSAlIE5dKTsKLSAgICAgICAgICAgIH0KLSNlbmRpZgotICAgICAgICB9Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIGlubGluZSB2b2lkIGFycmF5X25vaW5pdChUKiwgc3RkOjpzaXplX3QsIG5kbmJvb3N0Ojp0cnVlX3R5cGUpIHsKLSAgICAgICAgfQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBpbmxpbmUgdm9pZCBhcnJheV9ub2luaXQoVCogbWVtb3J5LCBzdGQ6OnNpemVfdCBzaXplLCBuZG5ib29zdDo6ZmFsc2VfdHlwZSkgewotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0VYQ0VQVElPTlMpCi0gICAgICAgICAgICBzdGQ6OnNpemVfdCBpID0gMDsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgZm9yICg7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgdm9pZCogcDEgPSBtZW1vcnkgKyBpOwotICAgICAgICAgICAgICAgICAgICA6Om5ldyhwMSkgVDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGNhdGNoICguLi4pIHsKLSAgICAgICAgICAgICAgICBhcnJheV9kZXN0cm95KG1lbW9yeSwgaSk7Ci0gICAgICAgICAgICAgICAgdGhyb3c7Ci0gICAgICAgICAgICB9Ci0jZWxzZQotICAgICAgICAgICAgZm9yIChzdGQ6OnNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICAgICAgICAgIHZvaWQqIHAxID0gbWVtb3J5ICsgaTsKLSAgICAgICAgICAgICAgICA6Om5ldyhwMSkgVDsKLSAgICAgICAgICAgIH0KLSNlbmRpZgotICAgICAgICB9Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIGlubGluZSB2b2lkIGFycmF5X25vaW5pdChUKiBtZW1vcnksIHN0ZDo6c2l6ZV90IHNpemUpIHsKLSAgICAgICAgICAgIG5kbmJvb3N0OjpoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yPFQ+IHR5cGU7Ci0gICAgICAgICAgICBhcnJheV9ub2luaXQobWVtb3J5LCBzaXplLCB0eXBlKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZDU1ZjI1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE5ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9BVE9NSUNfQ09VTlRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfQVRPTUlDX0NPVU5UX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICBuZG5ib29zdC9kZXRhaWwvYXRvbWljX2NvdW50LmhwcCAtIHRocmVhZC9TTVAgc2FmZSByZWZlcmVuY2UgY291bnRlcgotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDIgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZC4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gIHR5cGVkZWYgPGltcGxlbWVudGF0aW9uLWRlZmluZWQ+IG5kbmJvb3N0OjpkZXRhaWw6OmF0b21pY19jb3VudDsKLS8vCi0vLyAgYXRvbWljX2NvdW50IGEobik7Ci0vLwotLy8gICAgKG4gaXMgY29udmVydGlibGUgdG8gbG9uZykKLS8vCi0vLyAgICBFZmZlY3RzOiBDb25zdHJ1Y3RzIGFuIGF0b21pY19jb3VudCB3aXRoIGFuIGluaXRpYWwgdmFsdWUgb2YgbgotLy8KLS8vICBhOwotLy8KLS8vICAgIFJldHVybnM6IChsb25nKSB0aGUgY3VycmVudCB2YWx1ZSBvZiBhCi0vLwotLy8gICsrYTsKLS8vCi0vLyAgICBFZmZlY3RzOiBBdG9taWNhbGx5IGluY3JlbWVudHMgdGhlIHZhbHVlIG9mIGEKLS8vICAgIFJldHVybnM6IChsb25nKSB0aGUgbmV3IHZhbHVlIG9mIGEKLS8vCi0vLyAgLS1hOwotLy8KLS8vICAgIEVmZmVjdHM6IEF0b21pY2FsbHkgZGVjcmVtZW50cyB0aGUgdmFsdWUgb2YgYQotLy8gICAgUmV0dXJuczogKGxvbmcpIHRoZSBuZXcgdmFsdWUgb2YgYQotLy8KLS8vICAgIEltcG9ydGFudCBub3RlOiB3aGVuIC0tYSByZXR1cm5zIHplcm8sIGl0IG11c3QgYWN0IGFzIGEKLS8vICAgICAgcmVhZCBtZW1vcnkgYmFycmllciAoUk1CKTsgaS5lLiB0aGUgY2FsbGluZyB0aHJlYWQgbXVzdAotLy8gICAgICBoYXZlIGEgc3luY2hyb25pemVkIHZpZXcgb2YgdGhlIG1lbW9yeQotLy8KLS8vICAgIE9uIEludGVsIElBLTMyICh4ODYpIG1lbW9yeSBpcyBhbHdheXMgc3luY2hyb25pemVkLCBzbyB0aGlzCi0vLyAgICAgIGlzIG5vdCBhIHByb2JsZW0uCi0vLwotLy8gICAgT24gbWFueSBhcmNoaXRlY3R1cmVzIHRoZSBhdG9taWMgaW5zdHJ1Y3Rpb25zIGFscmVhZHkgYWN0IGFzCi0vLyAgICAgIGEgbWVtb3J5IGJhcnJpZXIuCi0vLwotLy8gICAgVGhpcyBwcm9wZXJ0eSBpcyBuZWNlc3NhcnkgZm9yIHByb3BlciByZWZlcmVuY2UgY291bnRpbmcsIHNpbmNlCi0vLyAgICAgIGEgdGhyZWFkIGNhbiB1cGRhdGUgdGhlIGNvbnRlbnRzIG9mIGEgc2hhcmVkIG9iamVjdCwgdGhlbgotLy8gICAgICByZWxlYXNlIGl0cyByZWZlcmVuY2UsIGFuZCBhbm90aGVyIHRocmVhZCBtYXkgaW1tZWRpYXRlbHkKLS8vICAgICAgcmVsZWFzZSB0aGUgbGFzdCByZWZlcmVuY2UgY2F1c2luZyBvYmplY3QgZGVzdHJ1Y3Rpb24uCi0vLwotLy8gICAgVGhlIGRlc3RydWN0b3IgbmVlZHMgdG8gaGF2ZSBhIHN5bmNocm9uaXplZCB2aWV3IG9mIHRoZQotLy8gICAgICBvYmplY3QgdG8gcGVyZm9ybSBwcm9wZXIgY2xlYW51cC4KLS8vCi0vLyAgICBPcmlnaW5hbCBleGFtcGxlIGJ5IEFsZXhhbmRlciBUZXJla2hvdjoKLS8vCi0vLyAgICBHaXZlbjoKLS8vCi0vLyAgICAtIGEgbXV0YWJsZSBzaGFyZWQgb2JqZWN0IE9CSjsKLS8vICAgIC0gdHdvIHRocmVhZHMgVEhSRUFEMSBhbmQgVEhSRUFEMiBlYWNoIGhvbGRpbmcgCi0vLyAgICAgIGEgcHJpdmF0ZSBzbWFydF9wdHIgb2JqZWN0IHBvaW50aW5nIHRvIHRoYXQgT0JKLgotLy8KLS8vICAgIHQxOiBUSFJFQUQxIHVwZGF0ZXMgT0JKICh0aHJlYWQtc2FmZSB2aWEgc29tZSBzeW5jaHJvbml6YXRpb24pCi0vLyAgICAgIGFuZCBhIGZldyBjeWNsZXMgbGF0ZXIgKGFmdGVyICJ1bmxvY2siKSBkZXN0cm95cyBzbWFydF9wdHI7Ci0vLwotLy8gICAgdDI6IFRIUkVBRDIgZGVzdHJveXMgc21hcnRfcHRyIFdJVEhPVVQgZG9pbmcgYW55IHN5bmNocm9uaXphdGlvbiAKLS8vICAgICAgd2l0aCByZXNwZWN0IHRvIHNoYXJlZCBtdXRhYmxlIG9iamVjdCBPQko7IE9CSiBkZXN0cnVjdG9ycwotLy8gICAgICBhcmUgY2FsbGVkIGRyaXZlbiBieSBzbWFydF9wdHIgaW50ZXJmYWNlLi4uCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2hhc19zeW5jLmhwcD4KLQotI2lmbmRlZiBORE5CT09TVF9IQVNfVEhSRUFEUwotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi10eXBlZGVmIGxvbmcgYXRvbWljX2NvdW50OwotCi19Ci0KLX0KLQotI2VsaWYgZGVmaW5lZChORE5CT09TVF9BQ19VU0VfUFRIUkVBRFMpCi0jICBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2F0b21pY19jb3VudF9wdGhyZWFkcy5ocHA+Ci0KLSNlbGlmIGRlZmluZWQoIF9fR05VQ19fICkgJiYgKCBkZWZpbmVkKCBfX2kzODZfXyApIHx8IGRlZmluZWQoIF9feDg2XzY0X18gKSApCi0jICBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2F0b21pY19jb3VudF9nY2NfeDg2LmhwcD4KLQotI2VsaWYgZGVmaW5lZChXSU4zMikgfHwgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19XSU4zMl9fKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pCi0jICBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2F0b21pY19jb3VudF93aW4zMi5ocHA+Ci0KLSNlbGlmIGRlZmluZWQoIE5ETkJPT1NUX1NQX0hBU19TWU5DICkKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50X3N5bmMuaHBwPgotCi0jZWxpZiBkZWZpbmVkKF9fR0xJQkNQUF9fKSB8fCBkZWZpbmVkKF9fR0xJQkNYWF9fKQotIyAgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnRfZ2NjLmhwcD4KLQotI2VsaWYgZGVmaW5lZChORE5CT09TVF9IQVNfUFRIUkVBRFMpCi0KLSMgIGRlZmluZSBORE5CT09TVF9BQ19VU0VfUFRIUkVBRFMKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50X3B0aHJlYWRzLmhwcD4KLQotI2Vsc2UKLQotLy8gVXNlICNkZWZpbmUgTkROQk9PU1RfRElTQUJMRV9USFJFQURTIHRvIGF2b2lkIHRoZSBlcnJvcgotI2Vycm9yIFVucmVjb2duaXplZCB0aHJlYWRpbmcgcGxhdGZvcm0KLQotI2VuZGlmCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfQVRPTUlDX0NPVU5UX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2F0b21pY19jb3VudF9nY2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2F0b21pY19jb3VudF9nY2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NzIwY2RmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnRfZ2NjLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9BVE9NSUNfQ09VTlRfR0NDX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0FUT01JQ19DT1VOVF9HQ0NfSFBQX0lOQ0xVREVECi0KLS8vCi0vLyAgbmRuYm9vc3QvZGV0YWlsL2F0b21pY19jb3VudF9nY2MuaHBwCi0vLwotLy8gIGF0b21pY19jb3VudCBmb3IgR05VIGxpYnN0ZGMrKyB2MwotLy8KLS8vICBodHRwOi8vZ2NjLmdudS5vcmcvb25saW5lZG9jcy9wb3J0aW5nL1RocmVhZC1zYWZldHkuaHRtbAotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDIgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZC4KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDIgTGFycyBHdWxsaWsgQmr4bm5lcyA8bGFyc2JqQGx5eC5vcmc+Ci0vLyAgQ29weXJpZ2h0IDIwMDMtMjAwNSBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLSNpZiBfX0dOVUNfXyAqIDEwMCArIF9fR05VQ19NSU5PUl9fID49IDQwMgotIyBpbmNsdWRlIDxleHQvYXRvbWljaXR5Lmg+IAotI2Vsc2UgCi0jIGluY2x1ZGUgPGJpdHMvYXRvbWljaXR5Lmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotI2lmIGRlZmluZWQoX19HTElCQ1hYX18pIC8vIGcrKyAzLjQrCi0KLXVzaW5nIF9fZ251X2N4eDo6X19hdG9taWNfYWRkOwotdXNpbmcgX19nbnVfY3h4OjpfX2V4Y2hhbmdlX2FuZF9hZGQ7Ci0KLSNlbmRpZgotCi1jbGFzcyBhdG9taWNfY291bnQKLXsKLXB1YmxpYzoKLQotICAgIGV4cGxpY2l0IGF0b21pY19jb3VudCggbG9uZyB2ICkgOiB2YWx1ZV8oIHYgKSB7fQotCi0gICAgbG9uZyBvcGVyYXRvcisrKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBfX2V4Y2hhbmdlX2FuZF9hZGQoICZ2YWx1ZV8sICsxICkgKyAxOwotICAgIH0KLQotICAgIGxvbmcgb3BlcmF0b3ItLSgpCi0gICAgewotICAgICAgICByZXR1cm4gX19leGNoYW5nZV9hbmRfYWRkKCAmdmFsdWVfLCAtMSApIC0gMTsKLSAgICB9Ci0KLSAgICBvcGVyYXRvciBsb25nKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBfX2V4Y2hhbmdlX2FuZF9hZGQoICZ2YWx1ZV8sIDAgKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0KLSAgICBhdG9taWNfY291bnQoYXRvbWljX2NvdW50IGNvbnN0ICYpOwotICAgIGF0b21pY19jb3VudCAmIG9wZXJhdG9yPShhdG9taWNfY291bnQgY29uc3QgJik7Ci0KLSAgICBtdXRhYmxlIF9BdG9taWNfd29yZCB2YWx1ZV87Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9BVE9NSUNfQ09VTlRfR0NDX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2F0b21pY19jb3VudF9nY2NfeDg2LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnRfZ2NjX3g4Ni5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0YjFlMWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2F0b21pY19jb3VudF9nY2NfeDg2LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9BVE9NSUNfQ09VTlRfR0NDX1g4Nl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9BVE9NSUNfQ09VTlRfR0NDX1g4Nl9IUFBfSU5DTFVERUQKLQotLy8KLS8vICBuZG5ib29zdC9kZXRhaWwvYXRvbWljX2NvdW50X2djY194ODYuaHBwCi0vLwotLy8gIGF0b21pY19jb3VudCBmb3IgZysrIG9uIDQ4NisvQU1ENjQKLS8vCi0vLyAgQ29weXJpZ2h0IDIwMDcgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi1jbGFzcyBhdG9taWNfY291bnQKLXsKLXB1YmxpYzoKLQotICAgIGV4cGxpY2l0IGF0b21pY19jb3VudCggbG9uZyB2ICkgOiB2YWx1ZV8oIHN0YXRpY19jYXN0PCBpbnQgPiggdiApICkge30KLQotICAgIGxvbmcgb3BlcmF0b3IrKygpCi0gICAgewotICAgICAgICByZXR1cm4gYXRvbWljX2V4Y2hhbmdlX2FuZF9hZGQoICZ2YWx1ZV8sICsxICkgKyAxOwotICAgIH0KLQotICAgIGxvbmcgb3BlcmF0b3ItLSgpCi0gICAgewotICAgICAgICByZXR1cm4gYXRvbWljX2V4Y2hhbmdlX2FuZF9hZGQoICZ2YWx1ZV8sIC0xICkgLSAxOwotICAgIH0KLQotICAgIG9wZXJhdG9yIGxvbmcoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGF0b21pY19leGNoYW5nZV9hbmRfYWRkKCAmdmFsdWVfLCAwICk7Ci0gICAgfQotCi1wcml2YXRlOgotCi0gICAgYXRvbWljX2NvdW50KGF0b21pY19jb3VudCBjb25zdCAmKTsKLSAgICBhdG9taWNfY291bnQgJiBvcGVyYXRvcj0oYXRvbWljX2NvdW50IGNvbnN0ICYpOwotCi0gICAgbXV0YWJsZSBpbnQgdmFsdWVfOwotCi1wcml2YXRlOgotCi0gICAgc3RhdGljIGludCBhdG9taWNfZXhjaGFuZ2VfYW5kX2FkZCggaW50ICogcHcsIGludCBkdiApCi0gICAgewotICAgICAgICAvLyBpbnQgciA9ICpwdzsKLSAgICAgICAgLy8gKnB3ICs9IGR2OwotICAgICAgICAvLyByZXR1cm4gcjsKLQotICAgICAgICBpbnQgcjsKLQotICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXwotICAgICAgICAoCi0gICAgICAgICAgICAibG9ja1xuXHQiCi0gICAgICAgICAgICAieGFkZCAlMSwgJTAiOgotICAgICAgICAgICAgIittIiggKnB3ICksICI9ciIoIHIgKTogLy8gb3V0cHV0cyAoJTAsICUxKQotICAgICAgICAgICAgIjEiKCBkdiApOiAvLyBpbnB1dHMgKCUyID09ICUxKQotICAgICAgICAgICAgIm1lbW9yeSIsICJjYyIgLy8gY2xvYmJlcnMKLSAgICAgICAgKTsKLQotICAgICAgICByZXR1cm4gcjsKLSAgICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9BVE9NSUNfQ09VTlRfR0NDX1g4Nl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnRfcHRocmVhZHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2F0b21pY19jb3VudF9wdGhyZWFkcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmMGNiZTguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2F0b21pY19jb3VudF9wdGhyZWFkcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NiArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfQVRPTUlDX0NPVU5UX1BUSFJFQURTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0FUT01JQ19DT1VOVF9QVEhSRUFEU19IUFBfSU5DTFVERUQKLQotLy8KLS8vICBuZG5ib29zdC9kZXRhaWwvYXRvbWljX2NvdW50X3B0aHJlYWRzLmhwcAotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDIgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZC4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0jaW5jbHVkZSA8cHRocmVhZC5oPgotCi0vLwotLy8gIFRoZSBnZW5lcmljIHB0aHJlYWRfbXV0ZXgtYmFzZWQgaW1wbGVtZW50YXRpb24gc29tZXRpbWVzIGxlYWRzIHRvCi0vLyAgICBpbmVmZmljaWVuY2llcy4gRXhhbXBsZTogYSBjbGFzcyB3aXRoIHR3byBhdG9taWNfY291bnQgbWVtYmVycwotLy8gICAgY2FuIGdldCBhd2F5IHdpdGggYSBzaW5nbGUgbXV0ZXguCi0vLwotLy8gIFVzZXJzIGNhbiBkZXRlY3QgdGhpcyBzaXR1YXRpb24gYnkgY2hlY2tpbmcgTkROQk9PU1RfQUNfVVNFX1BUSFJFQURTLgotLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotY2xhc3MgYXRvbWljX2NvdW50Ci17Ci1wcml2YXRlOgotCi0gICAgY2xhc3Mgc2NvcGVkX2xvY2sKLSAgICB7Ci0gICAgcHVibGljOgotCi0gICAgICAgIHNjb3BlZF9sb2NrKHB0aHJlYWRfbXV0ZXhfdCAmIG0pOiBtXyhtKQotICAgICAgICB7Ci0gICAgICAgICAgICBwdGhyZWFkX211dGV4X2xvY2soJm1fKTsKLSAgICAgICAgfQotCi0gICAgICAgIH5zY29wZWRfbG9jaygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZtXyk7Ci0gICAgICAgIH0KLQotICAgIHByaXZhdGU6Ci0KLSAgICAgICAgcHRocmVhZF9tdXRleF90ICYgbV87Ci0gICAgfTsKLQotcHVibGljOgotCi0gICAgZXhwbGljaXQgYXRvbWljX2NvdW50KGxvbmcgdik6IHZhbHVlXyh2KQotICAgIHsKLSAgICAgICAgcHRocmVhZF9tdXRleF9pbml0KCZtdXRleF8sIDApOwotICAgIH0KLQotICAgIH5hdG9taWNfY291bnQoKQotICAgIHsKLSAgICAgICAgcHRocmVhZF9tdXRleF9kZXN0cm95KCZtdXRleF8pOwotICAgIH0KLQotICAgIGxvbmcgb3BlcmF0b3IrKygpCi0gICAgewotICAgICAgICBzY29wZWRfbG9jayBsb2NrKG11dGV4Xyk7Ci0gICAgICAgIHJldHVybiArK3ZhbHVlXzsKLSAgICB9Ci0KLSAgICBsb25nIG9wZXJhdG9yLS0oKQotICAgIHsKLSAgICAgICAgc2NvcGVkX2xvY2sgbG9jayhtdXRleF8pOwotICAgICAgICByZXR1cm4gLS12YWx1ZV87Ci0gICAgfQotCi0gICAgb3BlcmF0b3IgbG9uZygpIGNvbnN0Ci0gICAgewotICAgICAgICBzY29wZWRfbG9jayBsb2NrKG11dGV4Xyk7Ci0gICAgICAgIHJldHVybiB2YWx1ZV87Ci0gICAgfQotCi1wcml2YXRlOgotCi0gICAgYXRvbWljX2NvdW50KGF0b21pY19jb3VudCBjb25zdCAmKTsKLSAgICBhdG9taWNfY291bnQgJiBvcGVyYXRvcj0oYXRvbWljX2NvdW50IGNvbnN0ICYpOwotCi0gICAgbXV0YWJsZSBwdGhyZWFkX211dGV4X3QgbXV0ZXhfOwotICAgIGxvbmcgdmFsdWVfOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfQVRPTUlDX0NPVU5UX1BUSFJFQURTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2F0b21pY19jb3VudF9zeW5jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnRfc3luYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlMWZhNDYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2F0b21pY19jb3VudF9zeW5jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9BVE9NSUNfQ09VTlRfU1lOQ19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9BVE9NSUNfQ09VTlRfU1lOQ19IUFBfSU5DTFVERUQKLQotLy8KLS8vICBuZG5ib29zdC9kZXRhaWwvYXRvbWljX2NvdW50X3N5bmMuaHBwCi0vLwotLy8gIGF0b21pY19jb3VudCBmb3IgZysrIDQuMSsKLS8vCi0vLyAgaHR0cDovL2djYy5nbnUub3JnL29ubGluZWRvY3MvZ2NjLTQuMS4xL2djYy9BdG9taWMtQnVpbHRpbnMuaHRtbAotLy8KLS8vICBDb3B5cmlnaHQgMjAwNyBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLSNpZiBkZWZpbmVkKCBfX2lhNjRfXyApICYmIGRlZmluZWQoIF9fSU5URUxfQ09NUElMRVIgKQotIyBpbmNsdWRlIDxpYTY0aW50cmluLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotY2xhc3MgYXRvbWljX2NvdW50Ci17Ci1wdWJsaWM6Ci0KLSAgICBleHBsaWNpdCBhdG9taWNfY291bnQoIGxvbmcgdiApIDogdmFsdWVfKCB2ICkge30KLQotICAgIGxvbmcgb3BlcmF0b3IrKygpCi0gICAgewotICAgICAgICByZXR1cm4gX19zeW5jX2FkZF9hbmRfZmV0Y2goICZ2YWx1ZV8sIDEgKTsKLSAgICB9Ci0KLSAgICBsb25nIG9wZXJhdG9yLS0oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIF9fc3luY19hZGRfYW5kX2ZldGNoKCAmdmFsdWVfLCAtMSApOwotICAgIH0KLQotICAgIG9wZXJhdG9yIGxvbmcoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIF9fc3luY19mZXRjaF9hbmRfYWRkKCAmdmFsdWVfLCAwICk7Ci0gICAgfQotCi1wcml2YXRlOgotCi0gICAgYXRvbWljX2NvdW50KGF0b21pY19jb3VudCBjb25zdCAmKTsKLSAgICBhdG9taWNfY291bnQgJiBvcGVyYXRvcj0oYXRvbWljX2NvdW50IGNvbnN0ICYpOwotCi0gICAgbXV0YWJsZSBsb25nIHZhbHVlXzsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0FUT01JQ19DT1VOVF9TWU5DX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2F0b21pY19jb3VudF93aW4zMi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50X3dpbjMyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzFjMmIxNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50X3dpbjMyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9BVE9NSUNfQ09VTlRfV0lOMzJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfQVRPTUlDX0NPVU5UX1dJTjMyX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICBuZG5ib29zdC9kZXRhaWwvYXRvbWljX2NvdW50X3dpbjMyLmhwcAotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEtMjAwNSBQZXRlciBEaW1vdgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvaW50ZXJsb2NrZWQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi1jbGFzcyBhdG9taWNfY291bnQKLXsKLXB1YmxpYzoKLQotICAgIGV4cGxpY2l0IGF0b21pY19jb3VudCggbG9uZyB2ICk6IHZhbHVlXyggdiApCi0gICAgewotICAgIH0KLQotICAgIGxvbmcgb3BlcmF0b3IrKygpCi0gICAgewotICAgICAgICByZXR1cm4gTkROQk9PU1RfSU5URVJMT0NLRURfSU5DUkVNRU5UKCAmdmFsdWVfICk7Ci0gICAgfQotCi0gICAgbG9uZyBvcGVyYXRvci0tKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBORE5CT09TVF9JTlRFUkxPQ0tFRF9ERUNSRU1FTlQoICZ2YWx1ZV8gKTsKLSAgICB9Ci0KLSAgICBvcGVyYXRvciBsb25nKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxsb25nIGNvbnN0IHZvbGF0aWxlICY+KCB2YWx1ZV8gKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0KLSAgICBhdG9taWNfY291bnQoIGF0b21pY19jb3VudCBjb25zdCAmICk7Ci0gICAgYXRvbWljX2NvdW50ICYgb3BlcmF0b3I9KCBhdG9taWNfY291bnQgY29uc3QgJiApOwotCi0gICAgbG9uZyB2YWx1ZV87Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9BVE9NSUNfQ09VTlRfV0lOMzJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvbGlnaHR3ZWlnaHRfbXV0ZXguaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2xpZ2h0d2VpZ2h0X211dGV4LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDdhYWNmNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvbGlnaHR3ZWlnaHRfbXV0ZXguaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0xJR0hUV0VJR0hUX01VVEVYX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0xJR0hUV0VJR0hUX01VVEVYX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICBuZG5ib29zdC9kZXRhaWwvbGlnaHR3ZWlnaHRfbXV0ZXguaHBwIC0gbGlnaHR3ZWlnaHQgbXV0ZXgKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAyLCAyMDAzIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICB0eXBlZGVmIDx1bnNwZWNpZmllZD4gbmRuYm9vc3Q6OmRldGFpbDo6bGlnaHR3ZWlnaHRfbXV0ZXg7Ci0vLwotLy8gIG5kbmJvb3N0OjpkZXRhaWw6OmxpZ2h0d2VpZ2h0X211dGV4IGlzIGEgaGVhZGVyLW9ubHkgaW1wbGVtZW50YXRpb24gb2YKLS8vICBhIHN1YnNldCBvZiB0aGUgTXV0ZXggY29uY2VwdCByZXF1aXJlbWVudHM6Ci0vLwotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2RvYy9odG1sL3RocmVhZHMvY29uY2VwdHMuaHRtbCN0aHJlYWRzLmNvbmNlcHRzLk11dGV4Ci0vLwotLy8gIEl0IG1hcHMgdG8gYSBDUklUSUNBTF9TRUNUSU9OIG9uIFdpbmRvd3Mgb3IgYSBwdGhyZWFkX211dGV4IG9uIFBPU0lYLgotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9IQVNfVEhSRUFEUykKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvbHdtX25vcC5ocHA+Ci0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19QVEhSRUFEUykKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvbHdtX3B0aHJlYWRzLmhwcD4KLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX1dJTlRIUkVBRFMpIHx8IGRlZmluZWQoV0lOMzIpIHx8IGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fV0lOMzJfXykgfHwgZGVmaW5lZChfX0NZR1dJTl9fKQotIyAgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9sd21fd2luMzJfY3MuaHBwPgotI2Vsc2UKLS8vIFVzZSAjZGVmaW5lIE5ETkJPT1NUX0RJU0FCTEVfVEhSRUFEUyB0byBhdm9pZCB0aGUgZXJyb3IKLSMgIGVycm9yIFVucmVjb2duaXplZCB0aHJlYWRpbmcgcGxhdGZvcm0KLSNlbmRpZgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0xJR0hUV0VJR0hUX01VVEVYX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2x3bV9ub3AuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2x3bV9ub3AuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYmY1NmNjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9sd21fbm9wLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9MV01fTk9QX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0xXTV9OT1BfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIG5kbmJvb3N0L2RldGFpbC9sd21fbm9wLmhwcAotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDIgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZC4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi1jbGFzcyBsaWdodHdlaWdodF9tdXRleAotewotcHVibGljOgotCi0gICAgdHlwZWRlZiBsaWdodHdlaWdodF9tdXRleCBzY29wZWRfbG9jazsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0xXTV9OT1BfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvbHdtX3B0aHJlYWRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9sd21fcHRocmVhZHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NmE2MGNlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9sd21fcHRocmVhZHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0xXTV9QVEhSRUFEU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9MV01fUFRIUkVBRFNfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIG5kbmJvb3N0L2RldGFpbC9sd21fcHRocmVhZHMuaHBwCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMiBQZXRlciBEaW1vdiBhbmQgTXVsdGkgTWVkaWEgTHRkLgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPHB0aHJlYWQuaD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotY2xhc3MgbGlnaHR3ZWlnaHRfbXV0ZXgKLXsKLXByaXZhdGU6Ci0KLSAgICBwdGhyZWFkX211dGV4X3QgbV87Ci0KLSAgICBsaWdodHdlaWdodF9tdXRleChsaWdodHdlaWdodF9tdXRleCBjb25zdCAmKTsKLSAgICBsaWdodHdlaWdodF9tdXRleCAmIG9wZXJhdG9yPShsaWdodHdlaWdodF9tdXRleCBjb25zdCAmKTsKLQotcHVibGljOgotCi0gICAgbGlnaHR3ZWlnaHRfbXV0ZXgoKQotICAgIHsKLQotLy8gSFBVWCAxMC4yMCAvIERDRSBoYXMgYSBub25zdGFuZGFyZCBwdGhyZWFkX211dGV4X2luaXQKLQotI2lmIGRlZmluZWQoX19ocHV4KSAmJiBkZWZpbmVkKF9ERUNUSFJFQURTXykKLSAgICAgICAgTkROQk9PU1RfVkVSSUZZKCBwdGhyZWFkX211dGV4X2luaXQoICZtXywgcHRocmVhZF9tdXRleGF0dHJfZGVmYXVsdCApID09IDAgKTsKLSNlbHNlCi0gICAgICAgIE5ETkJPT1NUX1ZFUklGWSggcHRocmVhZF9tdXRleF9pbml0KCAmbV8sIDAgKSA9PSAwICk7Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICB+bGlnaHR3ZWlnaHRfbXV0ZXgoKQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfVkVSSUZZKCBwdGhyZWFkX211dGV4X2Rlc3Ryb3koICZtXyApID09IDAgKTsKLSAgICB9Ci0KLSAgICBjbGFzcyBzY29wZWRfbG9jazsKLSAgICBmcmllbmQgY2xhc3Mgc2NvcGVkX2xvY2s7Ci0KLSAgICBjbGFzcyBzY29wZWRfbG9jawotICAgIHsKLSAgICBwcml2YXRlOgotCi0gICAgICAgIHB0aHJlYWRfbXV0ZXhfdCAmIG1fOwotCi0gICAgICAgIHNjb3BlZF9sb2NrKHNjb3BlZF9sb2NrIGNvbnN0ICYpOwotICAgICAgICBzY29wZWRfbG9jayAmIG9wZXJhdG9yPShzY29wZWRfbG9jayBjb25zdCAmKTsKLQotICAgIHB1YmxpYzoKLQotICAgICAgICBzY29wZWRfbG9jayhsaWdodHdlaWdodF9tdXRleCAmIG0pOiBtXyhtLm1fKQotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9WRVJJRlkoIHB0aHJlYWRfbXV0ZXhfbG9jayggJm1fICkgPT0gMCApOwotICAgICAgICB9Ci0KLSAgICAgICAgfnNjb3BlZF9sb2NrKCkKLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfVkVSSUZZKCBwdGhyZWFkX211dGV4X3VubG9jayggJm1fICkgPT0gMCApOwotICAgICAgICB9Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0xXTV9QVEhSRUFEU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9sd21fd2luMzJfY3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2x3bV93aW4zMl9jcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3ZGVmOTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2x3bV93aW4zMl9jcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDggKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0xXTV9XSU4zMl9DU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9MV01fV0lOMzJfQ1NfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIG5kbmJvb3N0L2RldGFpbC9sd21fd2luMzJfY3MuaHBwCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMiwgMjAwMyBQZXRlciBEaW1vdgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLSNpZmRlZiBORE5CT09TVF9VU0VfV0lORE9XU19ICi0jICBpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotI2lmbmRlZiBORE5CT09TVF9VU0VfV0lORE9XU19ICi0KLXN0cnVjdCBjcml0aWNhbF9zZWN0aW9uCi17Ci0gICAgc3RydWN0IGNyaXRpY2FsX3NlY3Rpb25fZGVidWcgKiBEZWJ1Z0luZm87Ci0gICAgbG9uZyBMb2NrQ291bnQ7Ci0gICAgbG9uZyBSZWN1cnNpb25Db3VudDsKLSAgICB2b2lkICogT3duaW5nVGhyZWFkOwotICAgIHZvaWQgKiBMb2NrU2VtYXBob3JlOwotI2lmIGRlZmluZWQoX1dJTjY0KQotICAgIHVuc2lnbmVkIF9faW50NjQgU3BpbkNvdW50OwotI2Vsc2UKLSAgICB1bnNpZ25lZCBsb25nIFNwaW5Db3VudDsKLSNlbmRpZgotfTsKLQotZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBfX3N0ZGNhbGwgSW5pdGlhbGl6ZUNyaXRpY2FsU2VjdGlvbihjcml0aWNhbF9zZWN0aW9uICopOwotZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBfX3N0ZGNhbGwgRW50ZXJDcml0aWNhbFNlY3Rpb24oY3JpdGljYWxfc2VjdGlvbiAqKTsKLWV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgX19zdGRjYWxsIExlYXZlQ3JpdGljYWxTZWN0aW9uKGNyaXRpY2FsX3NlY3Rpb24gKik7Ci1leHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIF9fc3RkY2FsbCBEZWxldGVDcml0aWNhbFNlY3Rpb24oY3JpdGljYWxfc2VjdGlvbiAqKTsKLQotI2Vsc2UKLQotdHlwZWRlZiA6OkNSSVRJQ0FMX1NFQ1RJT04gY3JpdGljYWxfc2VjdGlvbjsKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfVVNFX1dJTkRPV1NfSAotCi1jbGFzcyBsaWdodHdlaWdodF9tdXRleAotewotcHJpdmF0ZToKLQotICAgIGNyaXRpY2FsX3NlY3Rpb24gY3NfOwotCi0gICAgbGlnaHR3ZWlnaHRfbXV0ZXgobGlnaHR3ZWlnaHRfbXV0ZXggY29uc3QgJik7Ci0gICAgbGlnaHR3ZWlnaHRfbXV0ZXggJiBvcGVyYXRvcj0obGlnaHR3ZWlnaHRfbXV0ZXggY29uc3QgJik7Ci0KLXB1YmxpYzoKLQotICAgIGxpZ2h0d2VpZ2h0X211dGV4KCkKLSAgICB7Ci0gICAgICAgIEluaXRpYWxpemVDcml0aWNhbFNlY3Rpb24oJmNzXyk7Ci0gICAgfQotCi0gICAgfmxpZ2h0d2VpZ2h0X211dGV4KCkKLSAgICB7Ci0gICAgICAgIERlbGV0ZUNyaXRpY2FsU2VjdGlvbigmY3NfKTsKLSAgICB9Ci0KLSAgICBjbGFzcyBzY29wZWRfbG9jazsKLSAgICBmcmllbmQgY2xhc3Mgc2NvcGVkX2xvY2s7Ci0KLSAgICBjbGFzcyBzY29wZWRfbG9jawotICAgIHsKLSAgICBwcml2YXRlOgotCi0gICAgICAgIGxpZ2h0d2VpZ2h0X211dGV4ICYgbV87Ci0KLSAgICAgICAgc2NvcGVkX2xvY2soc2NvcGVkX2xvY2sgY29uc3QgJik7Ci0gICAgICAgIHNjb3BlZF9sb2NrICYgb3BlcmF0b3I9KHNjb3BlZF9sb2NrIGNvbnN0ICYpOwotCi0gICAgcHVibGljOgotCi0gICAgICAgIGV4cGxpY2l0IHNjb3BlZF9sb2NrKGxpZ2h0d2VpZ2h0X211dGV4ICYgbSk6IG1fKG0pCi0gICAgICAgIHsKLSAgICAgICAgICAgIEVudGVyQ3JpdGljYWxTZWN0aW9uKCZtXy5jc18pOwotICAgICAgICB9Ci0KLSAgICAgICAgfnNjb3BlZF9sb2NrKCkKLSAgICAgICAgewotICAgICAgICAgICAgTGVhdmVDcml0aWNhbFNlY3Rpb24oJm1fLmNzXyk7Ci0gICAgICAgIH0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfTFdNX1dJTjMyX0NTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL21ha2VfYXJyYXlfaGVscGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9tYWtlX2FycmF5X2hlbHBlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwNWI2MDAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL21ha2VfYXJyYXlfaGVscGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDEyIEdsZW4gSm9zZXBoIEZlcm5hbmRlcyAKLSAqIGdsZW5mZSBhdCBsaXZlIGRvdCBjb20KLSAqCi0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgCi0gKiBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgCi0gKiBvciBjb3B5IGF0IGh0dHA6Ly9ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICovCi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfTUFLRV9BUlJBWV9IRUxQRVJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfTUFLRV9BUlJBWV9IRUxQRVJfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hbGlnbm1lbnRfb2YuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIG5hbWVzcGFjZSBkZXRhaWwgewotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBZID0gY2hhcj4KLSAgICAgICAgY2xhc3MgbWFrZV9hcnJheV9oZWxwZXI7Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFk+Ci0gICAgICAgIGNsYXNzIG1ha2VfYXJyYXlfaGVscGVyPFRbXSwgWT4gewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVDIsIHR5cGVuYW1lIFkyPgotICAgICAgICAgICAgZnJpZW5kIGNsYXNzIG1ha2VfYXJyYXlfaGVscGVyOwotICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICB0eXBlZGVmIFkgICAgICAgICAgIHZhbHVlX3R5cGU7Ci0gICAgICAgICAgICB0eXBlZGVmIFkqICAgICAgICAgIHBvaW50ZXI7Ci0gICAgICAgICAgICB0eXBlZGVmIGNvbnN0IFkqICAgIGNvbnN0X3BvaW50ZXI7Ci0gICAgICAgICAgICB0eXBlZGVmIFkmICAgICAgICAgIHJlZmVyZW5jZTsKLSAgICAgICAgICAgIHR5cGVkZWYgY29uc3QgWSYgICAgY29uc3RfcmVmZXJlbmNlOwotICAgICAgICAgICAgdHlwZWRlZiBzdGQ6OnNpemVfdCBzaXplX3R5cGU7Ci0gICAgICAgICAgICB0eXBlZGVmIHB0cmRpZmZfdCAgIGRpZmZlcmVuY2VfdHlwZTsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICBzdHJ1Y3QgcmViaW5kIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIG1ha2VfYXJyYXlfaGVscGVyPFRbXSwgVT4gb3RoZXI7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgbWFrZV9hcnJheV9oZWxwZXIoc3RkOjpzaXplX3Qgc2l6ZV8sIFQqKiBkYXRhXykKLSAgICAgICAgICAgICAgICA6IHNpemUoc2l6ZW9mKFQpICogc2l6ZV8pLAotICAgICAgICAgICAgICAgICAgZGF0YShkYXRhXykgewotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVT4KLSAgICAgICAgICAgIG1ha2VfYXJyYXlfaGVscGVyKGNvbnN0IG1ha2VfYXJyYXlfaGVscGVyPFRbXSwgVT4mIG90aGVyKSAKLSAgICAgICAgICAgICAgICA6IHNpemUob3RoZXIuc2l6ZSksCi0gICAgICAgICAgICAgICAgICBkYXRhKG90aGVyLmRhdGEpIHsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHBvaW50ZXIgYWRkcmVzcyhyZWZlcmVuY2UgdmFsdWUpIGNvbnN0IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gJnZhbHVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY29uc3RfcG9pbnRlciBhZGRyZXNzKGNvbnN0X3JlZmVyZW5jZSB2YWx1ZSkgY29uc3QgewotICAgICAgICAgICAgICAgIHJldHVybiAmdmFsdWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzaXplX3R5cGUgbWF4X3NpemUoKSBjb25zdCB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c2l6ZV90PigtMSkgLyBzaXplb2YoWSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwb2ludGVyIGFsbG9jYXRlKHNpemVfdHlwZSBjb3VudCwgY29uc3Qgdm9pZCogPSAwKSB7Ci0gICAgICAgICAgICAgICAgc3RkOjpzaXplX3QgYTEgPSBuZG5ib29zdDo6YWxpZ25tZW50X29mPFQ+Ojp2YWx1ZTsKLSAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBuMSA9IGNvdW50ICogc2l6ZW9mKFkpICsgYTEgLSAxOwotICAgICAgICAgICAgICAgIHZvaWQqICBwMSA9IDo6b3BlcmF0b3IgbmV3KG4xICsgc2l6ZSk7Ci0gICAgICAgICAgICAgICAgY2hhciogIHAyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHAxKSArIG4xOwotICAgICAgICAgICAgICAgIHdoaWxlIChzdGQ6OnNpemVfdChwMikgJSBhMSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHAyLS07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICpkYXRhID0gcmVpbnRlcnByZXRfY2FzdDxUKj4ocDIpOwotICAgICAgICAgICAgICAgIHJldHVybiAgcmVpbnRlcnByZXRfY2FzdDxZKj4ocDEpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdm9pZCBkZWFsbG9jYXRlKHBvaW50ZXIgbWVtb3J5LCBzaXplX3R5cGUpIHsKLSAgICAgICAgICAgICAgICB2b2lkKiBwMSA9IG1lbW9yeTsKLSAgICAgICAgICAgICAgICA6Om9wZXJhdG9yIGRlbGV0ZShwMSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2b2lkIGNvbnN0cnVjdChwb2ludGVyIG1lbW9yeSwgY29uc3QgWSYgdmFsdWUpIHsKLSAgICAgICAgICAgICAgICB2b2lkKiBwMSA9IG1lbW9yeTsKLSAgICAgICAgICAgICAgICA6Om5ldyhwMSkgWSh2YWx1ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2b2lkIGRlc3Ryb3kocG9pbnRlciBtZW1vcnkpIHsKLSAgICAgICAgICAgICAgICBtZW1vcnktPn5ZKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IG1ha2VfYXJyYXlfaGVscGVyPFRbXSwgVT4mKSBjb25zdCB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IG1ha2VfYXJyYXlfaGVscGVyPFRbXSwgVT4mIG90aGVyKSBjb25zdCB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyAKLSAgICAgICAgICAgIH0KLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IHNpemU7Ci0gICAgICAgICAgICBUKiogZGF0YTsKLSAgICAgICAgfTsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjpzaXplX3QgTiwgdHlwZW5hbWUgWT4KLSAgICAgICAgY2xhc3MgbWFrZV9hcnJheV9oZWxwZXI8VFtOXSwgWT4gewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVDIsIHR5cGVuYW1lIFkyPgotICAgICAgICAgICAgZnJpZW5kIGNsYXNzIG1ha2VfYXJyYXlfaGVscGVyOwotICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICB0eXBlZGVmIFkgICAgICAgICAgIHZhbHVlX3R5cGU7Ci0gICAgICAgICAgICB0eXBlZGVmIFkqICAgICAgICAgIHBvaW50ZXI7Ci0gICAgICAgICAgICB0eXBlZGVmIGNvbnN0IFkqICAgIGNvbnN0X3BvaW50ZXI7Ci0gICAgICAgICAgICB0eXBlZGVmIFkmICAgICAgICAgIHJlZmVyZW5jZTsKLSAgICAgICAgICAgIHR5cGVkZWYgY29uc3QgWSYgICAgY29uc3RfcmVmZXJlbmNlOwotICAgICAgICAgICAgdHlwZWRlZiBzdGQ6OnNpemVfdCBzaXplX3R5cGU7Ci0gICAgICAgICAgICB0eXBlZGVmIHB0cmRpZmZfdCAgIGRpZmZlcmVuY2VfdHlwZTsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICBzdHJ1Y3QgcmViaW5kIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIG1ha2VfYXJyYXlfaGVscGVyPFRbTl0sIFU+IG90aGVyOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIG1ha2VfYXJyYXlfaGVscGVyKFQqKiBkYXRhXykKLSAgICAgICAgICAgICAgICA6IGRhdGEoZGF0YV8pIHsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIFU+Ci0gICAgICAgICAgICBtYWtlX2FycmF5X2hlbHBlcihjb25zdCBtYWtlX2FycmF5X2hlbHBlcjxUW05dLCBVPiYgb3RoZXIpIAotICAgICAgICAgICAgICAgIDogZGF0YShvdGhlci5kYXRhKSB7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwb2ludGVyIGFkZHJlc3MocmVmZXJlbmNlIHZhbHVlKSBjb25zdCB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICZ2YWx1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvbnN0X3BvaW50ZXIgYWRkcmVzcyhjb25zdF9yZWZlcmVuY2UgdmFsdWUpIGNvbnN0IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gJnZhbHVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc2l6ZV90eXBlIG1heF9zaXplKCkgY29uc3QgewotICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oLTEpIC8gc2l6ZW9mKFkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcG9pbnRlciBhbGxvY2F0ZShzaXplX3R5cGUgY291bnQsIGNvbnN0IHZvaWQqID0gMCkgewotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGExID0gbmRuYm9vc3Q6OmFsaWdubWVudF9vZjxUPjo6dmFsdWU7Ci0gICAgICAgICAgICAgICAgc3RkOjpzaXplX3QgbjEgPSBjb3VudCAqIHNpemVvZihZKSArIGExIC0gMTsKLSAgICAgICAgICAgICAgICB2b2lkKiAgcDEgPSA6Om9wZXJhdG9yIG5ldyhuMSArIE4xKTsKLSAgICAgICAgICAgICAgICBjaGFyKiAgcDIgPSBzdGF0aWNfY2FzdDxjaGFyKj4ocDEpICsgbjE7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKHN0ZDo6c2l6ZV90KHAyKSAlIGExICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgcDItLTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgKmRhdGEgPSByZWludGVycHJldF9jYXN0PFQqPihwMik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICByZWludGVycHJldF9jYXN0PFkqPihwMSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2b2lkIGRlYWxsb2NhdGUocG9pbnRlciBtZW1vcnksIHNpemVfdHlwZSkgewotICAgICAgICAgICAgICAgIHZvaWQqIHAxID0gbWVtb3J5OwotICAgICAgICAgICAgICAgIDo6b3BlcmF0b3IgZGVsZXRlKHAxKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZvaWQgY29uc3RydWN0KHBvaW50ZXIgbWVtb3J5LCBjb25zdCBZJiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIHZvaWQqIHAxID0gbWVtb3J5OwotICAgICAgICAgICAgICAgIDo6bmV3KHAxKSBZKHZhbHVlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZvaWQgZGVzdHJveShwb2ludGVyIG1lbW9yeSkgewotICAgICAgICAgICAgICAgIG1lbW9yeS0+flkoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgbWFrZV9hcnJheV9oZWxwZXI8VFtOXSwgVT4mKSBjb25zdCB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IG1ha2VfYXJyYXlfaGVscGVyPFRbTl0sIFU+JiBvdGhlcikgY29uc3QgewotICAgICAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgCi0gICAgICAgICAgICB9Ci0gICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICBlbnVtIHsKLSAgICAgICAgICAgICAgICBOMSA9IE4gKiBzaXplb2YoVCkKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBUKiogZGF0YTsKLSAgICAgICAgfTsKLSAgICB9Ci19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL29wZXJhdG9yX2Jvb2wuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL29wZXJhdG9yX2Jvb2wuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDllZmY1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9vcGVyYXRvcl9ib29sLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLS8vICBUaGlzIGhlYWRlciBpbnRlbnRpb25hbGx5IGhhcyBubyBpbmNsdWRlIGd1YXJkcy4KLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLTIwMDksIDIwMTIgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dAotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX0VYUExJQ0lUX0NPTlZFUlNJT05fT1BFUkFUT1JTICkgJiYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX05VTExQVFIgKQotCi0gICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCAoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIHB4ICE9IDA7Ci0gICAgfQotCi0jZWxpZiAoIGRlZmluZWQoX19TVU5QUk9fQ0MpICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19TVU5QUk9fQ0MsIDwgMHg1NzApICkgfHwgZGVmaW5lZChfX0NJTlRfXykKLQotICAgIG9wZXJhdG9yIGJvb2wgKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiBweCAhPSAwOwotICAgIH0KLQotI2VsaWYgZGVmaW5lZCggX01BTkFHRUQgKQotCi0gICAgc3RhdGljIHZvaWQgdW5zcGVjaWZpZWRfYm9vbCggdGhpc190eXBlKioqICkKLSAgICB7Ci0gICAgfQotCi0gICAgdHlwZWRlZiB2b2lkICgqdW5zcGVjaWZpZWRfYm9vbF90eXBlKSggdGhpc190eXBlKioqICk7Ci0KLSAgICBvcGVyYXRvciB1bnNwZWNpZmllZF9ib29sX3R5cGUoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIHB4ID09IDA/IDA6IHVuc3BlY2lmaWVkX2Jvb2w7Ci0gICAgfQotCi0jZWxpZiBcCi0gICAgKCBkZWZpbmVkKF9fTVdFUktTX18pICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgPCAweDMyMDApICkgfHwgXAotICAgICggZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fICogMTAwICsgX19HTlVDX01JTk9SX18gPCAzMDQpICkgfHwgXAotICAgICggZGVmaW5lZChfX1NVTlBST19DQykgJiYgTkROQk9PU1RfV09SS0FST1VORChfX1NVTlBST19DQywgPD0gMHg1OTApICkKLQotICAgIHR5cGVkZWYgZWxlbWVudF90eXBlICogKHRoaXNfdHlwZTo6KnVuc3BlY2lmaWVkX2Jvb2xfdHlwZSkoKSBjb25zdDsKLQotICAgIG9wZXJhdG9yIHVuc3BlY2lmaWVkX2Jvb2xfdHlwZSgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICByZXR1cm4gcHggPT0gMD8gMDogJnRoaXNfdHlwZTo6Z2V0OwotICAgIH0KLQotI2Vsc2UKLQotICAgIHR5cGVkZWYgZWxlbWVudF90eXBlICogdGhpc190eXBlOjoqdW5zcGVjaWZpZWRfYm9vbF90eXBlOwotCi0gICAgb3BlcmF0b3IgdW5zcGVjaWZpZWRfYm9vbF90eXBlKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiBweCA9PSAwPyAwOiAmdGhpc190eXBlOjpweDsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgLy8gb3BlcmF0b3IhIGlzIHJlZHVuZGFudCwgYnV0IHNvbWUgY29tcGlsZXJzIG5lZWQgaXQKLSAgICBib29sIG9wZXJhdG9yISAoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIHB4ID09IDA7Ci0gICAgfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3F1aWNrX2FsbG9jYXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvcXVpY2tfYWxsb2NhdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGZmMDY2OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvcXVpY2tfYWxsb2NhdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5OSArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfUVVJQ0tfQUxMT0NBVE9SX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1FVSUNLX0FMTE9DQVRPUl9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgZGV0YWlsL3F1aWNrX2FsbG9jYXRvci5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAzIERhdmlkIEFicmFoYW1zCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAzIFBldGVyIERpbW92Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2xpZ2h0d2VpZ2h0X211dGV4LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy90eXBlX3dpdGhfYWxpZ25tZW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hbGlnbm1lbnRfb2YuaHBwPgotCi0jaW5jbHVkZSA8bmV3PiAgICAgICAgICAgICAgLy8gOjpvcGVyYXRvciBuZXcsIDo6b3BlcmF0b3IgZGVsZXRlCi0jaW5jbHVkZSA8Y3N0ZGRlZj4gICAgICAgICAgLy8gc3RkOjpzaXplX3QKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotdGVtcGxhdGU8dW5zaWduZWQgc2l6ZSwgdW5zaWduZWQgYWxpZ25fPiB1bmlvbiBmcmVlYmxvY2sKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojp0eXBlX3dpdGhfYWxpZ25tZW50PGFsaWduXz46OnR5cGUgYWxpZ25lcl90eXBlOwotICAgIGFsaWduZXJfdHlwZSBhbGlnbmVyOwotICAgIGNoYXIgYnl0ZXNbc2l6ZV07Ci0gICAgZnJlZWJsb2NrICogbmV4dDsKLX07Ci0KLXRlbXBsYXRlPHVuc2lnbmVkIHNpemUsIHVuc2lnbmVkIGFsaWduXz4gc3RydWN0IGFsbG9jYXRvcl9pbXBsCi17Ci0gICAgdHlwZWRlZiBmcmVlYmxvY2s8c2l6ZSwgYWxpZ25fPiBibG9jazsKLQotICAgIC8vIEl0IG1heSBzZWVtIG9kZCB0byB1c2Ugc3VjaCBzbWFsbCBwYWdlcy4KLSAgICAvLwotICAgIC8vIEhvd2V2ZXIsIG9uIGEgdHlwaWNhbCBXaW5kb3dzIGltcGxlbWVudGF0aW9uIHRoYXQgdXNlcwotICAgIC8vIHRoZSBPUyBhbGxvY2F0b3IsICJub3JtYWwgc2l6ZSIgcGFnZXMgaW50ZXJhY3Qgd2l0aCB0aGUKLSAgICAvLyAib3JkaW5hcnkiIG9wZXJhdG9yIG5ldywgc2xvd2luZyBpdCBkb3duIGRyYW1hdGljYWxseS4KLSAgICAvLwotICAgIC8vIDUxMiBieXRlIHBhZ2VzIGFyZSBoYW5kbGVkIGJ5IHRoZSBzbWFsbCBvYmplY3QgYWxsb2NhdG9yLAotICAgIC8vIGFuZCBkb24ndCBpbnRlcmZlcmUgd2l0aCA6Om5ldy4KLSAgICAvLwotICAgIC8vIFRoZSBvdGhlciBhbHRlcm5hdGl2ZSBpcyB0byB1c2UgbXVjaCBiaWdnZXIgcGFnZXMgKDFNLikKLSAgICAvLwotICAgIC8vIEl0IGlzIHN1cnByaXNpbmdseSBlYXN5IHRvIGhpdCBwYXRob2xvZ2ljYWwgYmVoYXZpb3IgYnkKLSAgICAvLyB2YXJ5aW5nIHRoZSBwYWdlIHNpemUuIGcrKyAyLjk2IG9uIFJlZCBIYXQgTGludXggNy4yLAotICAgIC8vIGZvciBleGFtcGxlLCBwYXNzaW9uYXRlbHkgZGlzbGlrZXMgNDk2LiA1MTIgc2VlbXMgT0suCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1FBX1BBR0VfU0laRSkKLQotICAgIGVudW0geyBpdGVtc19wZXJfcGFnZSA9IE5ETkJPT1NUX1FBX1BBR0VfU0laRSAvIHNpemUgfTsKLQotI2Vsc2UKLQotICAgIGVudW0geyBpdGVtc19wZXJfcGFnZSA9IDUxMiAvIHNpemUgfTsgLy8gMTA0ODU2MCAvIHNpemUKLQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9IQVNfVEhSRUFEUwotCi0gICAgc3RhdGljIGxpZ2h0d2VpZ2h0X211dGV4ICYgbXV0ZXgoKQotICAgIHsKLSAgICAgICAgc3RhdGljIGZyZWVibG9jazwgc2l6ZW9mKCBsaWdodHdlaWdodF9tdXRleCApLCBuZG5ib29zdDo6YWxpZ25tZW50X29mPCBsaWdodHdlaWdodF9tdXRleCA+Ojp2YWx1ZSA+IGZibTsKLSAgICAgICAgc3RhdGljIGxpZ2h0d2VpZ2h0X211dGV4ICogcG0gPSBuZXcoICZmYm0gKSBsaWdodHdlaWdodF9tdXRleDsKLSAgICAgICAgcmV0dXJuICpwbTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgbGlnaHR3ZWlnaHRfbXV0ZXggKiBtdXRleF9pbml0OwotCi0jZW5kaWYKLQotICAgIHN0YXRpYyBibG9jayAqIGZyZWU7Ci0gICAgc3RhdGljIGJsb2NrICogcGFnZTsKLSAgICBzdGF0aWMgdW5zaWduZWQgbGFzdDsKLQotICAgIHN0YXRpYyBpbmxpbmUgdm9pZCAqIGFsbG9jKCkKLSAgICB7Ci0jaWZkZWYgTkROQk9PU1RfSEFTX1RIUkVBRFMKLSAgICAgICAgbGlnaHR3ZWlnaHRfbXV0ZXg6OnNjb3BlZF9sb2NrIGxvY2soIG11dGV4KCkgKTsKLSNlbmRpZgotICAgICAgICBpZihibG9jayAqIHggPSBmcmVlKQotICAgICAgICB7Ci0gICAgICAgICAgICBmcmVlID0geC0+bmV4dDsKLSAgICAgICAgICAgIHJldHVybiB4OwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgaWYobGFzdCA9PSBpdGVtc19wZXJfcGFnZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyAiTGlzdGVuIHRvIG1lIGNhcmVmdWxseTogdGhlcmUgaXMgbm8gbWVtb3J5IGxlYWsiCi0gICAgICAgICAgICAgICAgLy8gLS0gU2NvdHQgTWV5ZXJzLCBFZmYgQysrIDJuZCBFZCBJdGVtIDEwCi0gICAgICAgICAgICAgICAgcGFnZSA9IDo6bmV3IGJsb2NrW2l0ZW1zX3Blcl9wYWdlXTsKLSAgICAgICAgICAgICAgICBsYXN0ID0gMDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmV0dXJuICZwYWdlW2xhc3QrK107Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzdGF0aWMgaW5saW5lIHZvaWQgKiBhbGxvYyhzdGQ6OnNpemVfdCBuKQotICAgIHsKLSAgICAgICAgaWYobiAhPSBzaXplKSAvLyBjbGFzcy1zcGVjaWZpYyBuZXcgY2FsbGVkIGZvciBhIGRlcml2ZWQgb2JqZWN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiA6Om9wZXJhdG9yIG5ldyhuKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSNpZmRlZiBORE5CT09TVF9IQVNfVEhSRUFEUwotICAgICAgICAgICAgbGlnaHR3ZWlnaHRfbXV0ZXg6OnNjb3BlZF9sb2NrIGxvY2soIG11dGV4KCkgKTsKLSNlbmRpZgotICAgICAgICAgICAgaWYoYmxvY2sgKiB4ID0gZnJlZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBmcmVlID0geC0+bmV4dDsKLSAgICAgICAgICAgICAgICByZXR1cm4geDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZihsYXN0ID09IGl0ZW1zX3Blcl9wYWdlKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcGFnZSA9IDo6bmV3IGJsb2NrW2l0ZW1zX3Blcl9wYWdlXTsKLSAgICAgICAgICAgICAgICAgICAgbGFzdCA9IDA7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgcmV0dXJuICZwYWdlW2xhc3QrK107Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzdGF0aWMgaW5saW5lIHZvaWQgZGVhbGxvYyh2b2lkICogcHYpCi0gICAgewotICAgICAgICBpZihwdiAhPSAwKSAvLyAxOC40LjEuMS8xMwotICAgICAgICB7Ci0jaWZkZWYgTkROQk9PU1RfSEFTX1RIUkVBRFMKLSAgICAgICAgICAgIGxpZ2h0d2VpZ2h0X211dGV4OjpzY29wZWRfbG9jayBsb2NrKCBtdXRleCgpICk7Ci0jZW5kaWYKLSAgICAgICAgICAgIGJsb2NrICogcGIgPSBzdGF0aWNfY2FzdDxibG9jayAqPihwdik7Ci0gICAgICAgICAgICBwYi0+bmV4dCA9IGZyZWU7Ci0gICAgICAgICAgICBmcmVlID0gcGI7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzdGF0aWMgaW5saW5lIHZvaWQgZGVhbGxvYyh2b2lkICogcHYsIHN0ZDo6c2l6ZV90IG4pCi0gICAgewotICAgICAgICBpZihuICE9IHNpemUpIC8vIGNsYXNzLXNwZWNpZmljIGRlbGV0ZSBjYWxsZWQgZm9yIGEgZGVyaXZlZCBvYmplY3QKLSAgICAgICAgewotICAgICAgICAgICAgOjpvcGVyYXRvciBkZWxldGUocHYpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYocHYgIT0gMCkgLy8gMTguNC4xLjEvMTMKLSAgICAgICAgewotI2lmZGVmIE5ETkJPT1NUX0hBU19USFJFQURTCi0gICAgICAgICAgICBsaWdodHdlaWdodF9tdXRleDo6c2NvcGVkX2xvY2sgbG9jayggbXV0ZXgoKSApOwotI2VuZGlmCi0gICAgICAgICAgICBibG9jayAqIHBiID0gc3RhdGljX2Nhc3Q8YmxvY2sgKj4ocHYpOwotICAgICAgICAgICAgcGItPm5leHQgPSBmcmVlOwotICAgICAgICAgICAgZnJlZSA9IHBiOwotICAgICAgICB9Ci0gICAgfQotfTsKLQotI2lmZGVmIE5ETkJPT1NUX0hBU19USFJFQURTCi0KLXRlbXBsYXRlPHVuc2lnbmVkIHNpemUsIHVuc2lnbmVkIGFsaWduXz4KLSAgbGlnaHR3ZWlnaHRfbXV0ZXggKiBhbGxvY2F0b3JfaW1wbDxzaXplLCBhbGlnbl8+OjptdXRleF9pbml0ID0gJmFsbG9jYXRvcl9pbXBsPHNpemUsIGFsaWduXz46Om11dGV4KCk7Ci0KLSNlbmRpZgotCi10ZW1wbGF0ZTx1bnNpZ25lZCBzaXplLCB1bnNpZ25lZCBhbGlnbl8+Ci0gIGZyZWVibG9jazxzaXplLCBhbGlnbl8+ICogYWxsb2NhdG9yX2ltcGw8c2l6ZSwgYWxpZ25fPjo6ZnJlZSA9IDA7Ci0KLXRlbXBsYXRlPHVuc2lnbmVkIHNpemUsIHVuc2lnbmVkIGFsaWduXz4KLSAgZnJlZWJsb2NrPHNpemUsIGFsaWduXz4gKiBhbGxvY2F0b3JfaW1wbDxzaXplLCBhbGlnbl8+OjpwYWdlID0gMDsKLQotdGVtcGxhdGU8dW5zaWduZWQgc2l6ZSwgdW5zaWduZWQgYWxpZ25fPgotICB1bnNpZ25lZCBhbGxvY2F0b3JfaW1wbDxzaXplLCBhbGlnbl8+OjpsYXN0ID0gYWxsb2NhdG9yX2ltcGw8c2l6ZSwgYWxpZ25fPjo6aXRlbXNfcGVyX3BhZ2U7Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgcXVpY2tfYWxsb2NhdG9yOiBwdWJsaWMgYWxsb2NhdG9yX2ltcGw8IHNpemVvZihUKSwgbmRuYm9vc3Q6OmFsaWdubWVudF9vZjxUPjo6dmFsdWUgPgotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1FVSUNLX0FMTE9DQVRPUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zaGFyZWRfYXJyYXlfbm10LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zaGFyZWRfYXJyYXlfbm10LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODE5NzYzNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc2hhcmVkX2FycmF5X25tdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTEgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NIQVJFRF9BUlJBWV9OTVRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU0hBUkVEX0FSUkFZX05NVF9IUFBfSU5DTFVERUQKLQotLy8KLS8vICBkZXRhaWwvc2hhcmVkX2FycmF5X25tdC5ocHAgLSBzaGFyZWRfYXJyYXkuaHBwIHdpdGhvdXQgbWVtYmVyIHRlbXBsYXRlcwotLy8KLS8vICAoQykgQ29weXJpZ2h0IEdyZWcgQ29sdmluIGFuZCBCZW1hbiBEYXdlcyAxOTk4LCAxOTk5LgotLy8gIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvc21hcnRfcHRyL3NoYXJlZF9hcnJheS5odG0gZm9yIGRvY3VtZW50YXRpb24uCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jaGVja2VkX2RlbGV0ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGhyb3dfZXhjZXB0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2F0b21pY19jb3VudC5ocHA+Ci0KLSNpbmNsdWRlIDxjc3RkZGVmPiAgICAgICAgICAvLyBmb3Igc3RkOjpwdHJkaWZmX3QKLSNpbmNsdWRlIDxhbGdvcml0aG0+ICAgICAgICAvLyBmb3Igc3RkOjpzd2FwCi0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4gICAgICAgLy8gZm9yIHN0ZDo6bGVzcwotI2luY2x1ZGUgPG5ldz4gICAgICAgICAgICAgIC8vIGZvciBzdGQ6OmJhZF9hbGxvYwotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3Mgc2hhcmVkX2FycmF5Ci17Ci1wcml2YXRlOgotCi0gICAgdHlwZWRlZiBkZXRhaWw6OmF0b21pY19jb3VudCBjb3VudF90eXBlOwotCi1wdWJsaWM6Ci0KLSAgICB0eXBlZGVmIFQgZWxlbWVudF90eXBlOwotICAgICAgCi0gICAgZXhwbGljaXQgc2hhcmVkX2FycmF5KFQgKiBwID0gMCk6IHB4KHApCi0gICAgewotI2lmbmRlZiBORE5CT09TVF9OT19FWENFUFRJT05TCi0KLSAgICAgICAgdHJ5ICAvLyBwcmV2ZW50IGxlYWsgaWYgbmV3IHRocm93cwotICAgICAgICB7Ci0gICAgICAgICAgICBwbiA9IG5ldyBjb3VudF90eXBlKDEpOwotICAgICAgICB9Ci0gICAgICAgIGNhdGNoKC4uLikKLSAgICAgICAgewotICAgICAgICAgICAgbmRuYm9vc3Q6OmNoZWNrZWRfYXJyYXlfZGVsZXRlKHApOwotICAgICAgICAgICAgdGhyb3c7Ci0gICAgICAgIH0KLQotI2Vsc2UKLQotICAgICAgICBwbiA9IG5ldyBjb3VudF90eXBlKDEpOwotCi0gICAgICAgIGlmKHBuID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5kbmJvb3N0OjpjaGVja2VkX2FycmF5X2RlbGV0ZShwKTsKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oc3RkOjpiYWRfYWxsb2MoKSk7Ci0gICAgICAgIH0KLQotI2VuZGlmCi0gICAgfQotCi0gICAgfnNoYXJlZF9hcnJheSgpCi0gICAgewotICAgICAgICBpZigtLSpwbiA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBuZG5ib29zdDo6Y2hlY2tlZF9hcnJheV9kZWxldGUocHgpOwotICAgICAgICAgICAgZGVsZXRlIHBuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc2hhcmVkX2FycmF5KHNoYXJlZF9hcnJheSBjb25zdCAmIHIpIDogcHgoci5weCkgIC8vIG5ldmVyIHRocm93cwotICAgIHsKLSAgICAgICAgcG4gPSByLnBuOwotICAgICAgICArKypwbjsKLSAgICB9Ci0KLSAgICBzaGFyZWRfYXJyYXkgJiBvcGVyYXRvcj0oc2hhcmVkX2FycmF5IGNvbnN0ICYgcikKLSAgICB7Ci0gICAgICAgIHNoYXJlZF9hcnJheShyKS5zd2FwKCp0aGlzKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIHZvaWQgcmVzZXQoVCAqIHAgPSAwKQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKHAgPT0gMCB8fCBwICE9IHB4KTsKLSAgICAgICAgc2hhcmVkX2FycmF5KHApLnN3YXAoKnRoaXMpOwotICAgIH0KLQotICAgIFQgKiBnZXQoKSBjb25zdCAgLy8gbmV2ZXIgdGhyb3dzCi0gICAgewotICAgICAgICByZXR1cm4gcHg7Ci0gICAgfQotCi0gICAgVCAmIG9wZXJhdG9yW10oc3RkOjpwdHJkaWZmX3QgaSkgY29uc3QgIC8vIG5ldmVyIHRocm93cwotICAgIHsKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKHB4ICE9IDApOwotICAgICAgICBORE5CT09TVF9BU1NFUlQoaSA+PSAwKTsKLSAgICAgICAgcmV0dXJuIHB4W2ldOwotICAgIH0KLQotICAgIGxvbmcgdXNlX2NvdW50KCkgY29uc3QgIC8vIG5ldmVyIHRocm93cwotICAgIHsKLSAgICAgICAgcmV0dXJuICpwbjsKLSAgICB9Ci0KLSAgICBib29sIHVuaXF1ZSgpIGNvbnN0ICAvLyBuZXZlciB0aHJvd3MKLSAgICB7Ci0gICAgICAgIHJldHVybiAqcG4gPT0gMTsKLSAgICB9Ci0KLSAgICB2b2lkIHN3YXAoc2hhcmVkX2FycmF5PFQ+ICYgb3RoZXIpICAvLyBuZXZlciB0aHJvd3MKLSAgICB7Ci0gICAgICAgIHN0ZDo6c3dhcChweCwgb3RoZXIucHgpOwotICAgICAgICBzdGQ6OnN3YXAocG4sIG90aGVyLnBuKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0KLSAgICBUICogcHg7ICAgICAgICAgICAgLy8gY29udGFpbmVkIHBvaW50ZXIKLSAgICBjb3VudF90eXBlICogcG47ICAgLy8gcHRyIHRvIHJlZmVyZW5jZSBjb3VudGVyCi0gICAgICAKLX07ICAvLyBzaGFyZWRfYXJyYXkKLQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShzaGFyZWRfYXJyYXk8VD4gY29uc3QgJiBhLCBzaGFyZWRfYXJyYXk8VT4gY29uc3QgJiBiKQotewotICAgIHJldHVybiBhLmdldCgpID09IGIuZ2V0KCk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oc2hhcmVkX2FycmF5PFQ+IGNvbnN0ICYgYSwgc2hhcmVkX2FycmF5PFU+IGNvbnN0ICYgYikKLXsKLSAgICByZXR1cm4gYS5nZXQoKSAhPSBiLmdldCgpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvcjwoc2hhcmVkX2FycmF5PFQ+IGNvbnN0ICYgYSwgc2hhcmVkX2FycmF5PFQ+IGNvbnN0ICYgYikKLXsKLSAgICByZXR1cm4gc3RkOjpsZXNzPFQqPigpKGEuZ2V0KCksIGIuZ2V0KCkpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkIHN3YXAoc2hhcmVkX2FycmF5PFQ+ICYgYSwgc2hhcmVkX2FycmF5PFQ+ICYgYikKLXsKLSAgICBhLnN3YXAoYik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NIQVJFRF9BUlJBWV9OTVRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc2hhcmVkX2NvdW50LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zaGFyZWRfY291bnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YmE3MTkwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zaGFyZWRfY291bnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjAzICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TSEFSRURfQ09VTlRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU0hBUkVEX0NPVU5UX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICBkZXRhaWwvc2hhcmVkX2NvdW50LmhwcAotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDIsIDIwMDMgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZC4KLS8vICBDb3B5cmlnaHQgMjAwNC0yMDA1IFBldGVyIERpbW92Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotI2lmZGVmIF9fQk9STEFORENfXwotIyBwcmFnbWEgd2FybiAtODAyNyAgICAgLy8gRnVuY3Rpb25zIGNvbnRhaW5pbmcgdHJ5IGFyZSBub3QgZXhwYW5kZWQgaW5saW5lCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY2hlY2tlZF9kZWxldGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2JhZF93ZWFrX3B0ci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9pbXBsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0vLyBJbiBvcmRlciB0byBhdm9pZCBjaXJjdWxhciBkZXBlbmRlbmNpZXMgd2l0aCBCb29zdC5UUjEKLS8vIHdlIG1ha2Ugc3VyZSB0aGF0IG91ciBpbmNsdWRlIG9mIDxtZW1vcnk+IGRvZXNuJ3QgdHJ5IHRvCi0vLyBwdWxsIGluIHRoZSBUUjEgaGVhZGVyczogdGhhdCdzIHdoeSB3ZSB1c2UgdGhpcyBoZWFkZXIgCi0vLyByYXRoZXIgdGhhbiBpbmNsdWRpbmcgPG1lbW9yeT4gZGlyZWN0bHk6Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL25vX3RyMS9tZW1vcnkuaHBwPiAgLy8gc3RkOjphdXRvX3B0cgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+ICAgICAgIC8vIHN0ZDo6bGVzcwotCi0jaWZkZWYgTkROQk9PU1RfTk9fRVhDRVBUSU9OUwotIyBpbmNsdWRlIDxuZXc+ICAgICAgICAgICAgICAvLyBzdGQ6OmJhZF9hbGxvYwotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfU01BUlRfUFRSICkKLSMgaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9hZGRyZXNzb2YuaHBwPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX0VOQUJMRV9ERUJVR19IT09LUykKLQotaW50IGNvbnN0IHNoYXJlZF9jb3VudF9pZCA9IDB4MkMzNUYxMDE7Ci1pbnQgY29uc3QgICB3ZWFrX2NvdW50X2lkID0gMHgyOThDMzhBNDsKLQotI2VuZGlmCi0KLXN0cnVjdCBzcF9ub3Rocm93X3RhZyB7fTsKLQotdGVtcGxhdGU8IGNsYXNzIEQgPiBzdHJ1Y3Qgc3BfaW5wbGFjZV90YWcKLXsKLX07Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfU01BUlRfUFRSICkKLQotdGVtcGxhdGU8IGNsYXNzIFQgPiBjbGFzcyBzcF9yZWZlcmVuY2Vfd3JhcHBlcgoteyAKLXB1YmxpYzoKLQotICAgIGV4cGxpY2l0IHNwX3JlZmVyZW5jZV93cmFwcGVyKCBUICYgdCk6IHRfKCBuZG5ib29zdDo6YWRkcmVzc29mKCB0ICkgKQotICAgIHsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTwgY2xhc3MgWSA+IHZvaWQgb3BlcmF0b3IoKSggWSAqIHAgKSBjb25zdAotICAgIHsKLSAgICAgICAgKCp0XykoIHAgKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0KLSAgICBUICogdF87Ci19OwotCi10ZW1wbGF0ZTwgY2xhc3MgRCA+IHN0cnVjdCBzcF9jb252ZXJ0X3JlZmVyZW5jZQotewotICAgIHR5cGVkZWYgRCB0eXBlOwotfTsKLQotdGVtcGxhdGU8IGNsYXNzIEQgPiBzdHJ1Y3Qgc3BfY29udmVydF9yZWZlcmVuY2U8IEQmID4KLXsKLSAgICB0eXBlZGVmIHNwX3JlZmVyZW5jZV93cmFwcGVyPCBEID4gdHlwZTsKLX07Ci0KLSNlbmRpZgotCi1jbGFzcyB3ZWFrX2NvdW50OwotCi1jbGFzcyBzaGFyZWRfY291bnQKLXsKLXByaXZhdGU6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UgKiBwaV87Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX0VOQUJMRV9ERUJVR19IT09LUykKLSAgICBpbnQgaWRfOwotI2VuZGlmCi0KLSAgICBmcmllbmQgY2xhc3Mgd2Vha19jb3VudDsKLQotcHVibGljOgotCi0gICAgc2hhcmVkX2NvdW50KCk6IHBpXygwKSAvLyBub3Rocm93Ci0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9FTkFCTEVfREVCVUdfSE9PS1MpCi0gICAgICAgICwgaWRfKHNoYXJlZF9jb3VudF9pZCkKLSNlbmRpZgotICAgIHsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPiBleHBsaWNpdCBzaGFyZWRfY291bnQoIFkgKiBwICk6IHBpXyggMCApCi0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9FTkFCTEVfREVCVUdfSE9PS1MpCi0gICAgICAgICwgaWRfKHNoYXJlZF9jb3VudF9pZCkKLSNlbmRpZgotICAgIHsKLSNpZm5kZWYgTkROQk9PU1RfTk9fRVhDRVBUSU9OUwotCi0gICAgICAgIHRyeQotICAgICAgICB7Ci0gICAgICAgICAgICBwaV8gPSBuZXcgc3BfY291bnRlZF9pbXBsX3A8WT4oIHAgKTsKLSAgICAgICAgfQotICAgICAgICBjYXRjaCguLi4pCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5kbmJvb3N0OjpjaGVja2VkX2RlbGV0ZSggcCApOwotICAgICAgICAgICAgdGhyb3c7Ci0gICAgICAgIH0KLQotI2Vsc2UKLQotICAgICAgICBwaV8gPSBuZXcgc3BfY291bnRlZF9pbXBsX3A8WT4oIHAgKTsKLQotICAgICAgICBpZiggcGlfID09IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBuZG5ib29zdDo6Y2hlY2tlZF9kZWxldGUoIHAgKTsKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oIHN0ZDo6YmFkX2FsbG9jKCkgKTsKLSAgICAgICAgfQotCi0jZW5kaWYKLSAgICB9Ci0KLSNpZiBkZWZpbmVkKCBORE5CT09TVF9NU1ZDICkgJiYgTkROQk9PU1RfV09SS0FST1VORCggTkROQk9PU1RfTVNWQywgPD0gMTIwMCApCi0gICAgdGVtcGxhdGU8Y2xhc3MgWSwgY2xhc3MgRD4gc2hhcmVkX2NvdW50KCBZICogcCwgRCBkICk6IHBpXygwKQotI2Vsc2UKLSAgICB0ZW1wbGF0ZTxjbGFzcyBQLCBjbGFzcyBEPiBzaGFyZWRfY291bnQoIFAgcCwgRCBkICk6IHBpXygwKQotI2VuZGlmCi0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9FTkFCTEVfREVCVUdfSE9PS1MpCi0gICAgICAgICwgaWRfKHNoYXJlZF9jb3VudF9pZCkKLSNlbmRpZgotICAgIHsKLSNpZiBkZWZpbmVkKCBORE5CT09TVF9NU1ZDICkgJiYgTkROQk9PU1RfV09SS0FST1VORCggTkROQk9PU1RfTVNWQywgPD0gMTIwMCApCi0gICAgICAgIHR5cGVkZWYgWSogUDsKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9OT19FWENFUFRJT05TCi0KLSAgICAgICAgdHJ5Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHBpXyA9IG5ldyBzcF9jb3VudGVkX2ltcGxfcGQ8UCwgRD4ocCwgZCk7Ci0gICAgICAgIH0KLSAgICAgICAgY2F0Y2goLi4uKQotICAgICAgICB7Ci0gICAgICAgICAgICBkKHApOyAvLyBkZWxldGUgcAotICAgICAgICAgICAgdGhyb3c7Ci0gICAgICAgIH0KLQotI2Vsc2UKLQotICAgICAgICBwaV8gPSBuZXcgc3BfY291bnRlZF9pbXBsX3BkPFAsIEQ+KHAsIGQpOwotCi0gICAgICAgIGlmKHBpXyA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBkKHApOyAvLyBkZWxldGUgcAotICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihzdGQ6OmJhZF9hbGxvYygpKTsKLSAgICAgICAgfQotCi0jZW5kaWYKLSAgICB9Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcgKQotCi0gICAgdGVtcGxhdGU8IGNsYXNzIFAsIGNsYXNzIEQgPiBzaGFyZWRfY291bnQoIFAgcCwgc3BfaW5wbGFjZV90YWc8RD4gKTogcGlfKCAwICkKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX0VOQUJMRV9ERUJVR19IT09LUykKLSAgICAgICAgLCBpZF8oc2hhcmVkX2NvdW50X2lkKQotI2VuZGlmCi0gICAgewotI2lmbmRlZiBORE5CT09TVF9OT19FWENFUFRJT05TCi0KLSAgICAgICAgdHJ5Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHBpXyA9IG5ldyBzcF9jb3VudGVkX2ltcGxfcGQ8IFAsIEQgPiggcCApOwotICAgICAgICB9Ci0gICAgICAgIGNhdGNoKCAuLi4gKQotICAgICAgICB7Ci0gICAgICAgICAgICBEOjpvcGVyYXRvcl9mbiggcCApOyAvLyBkZWxldGUgcAotICAgICAgICAgICAgdGhyb3c7Ci0gICAgICAgIH0KLQotI2Vsc2UKLQotICAgICAgICBwaV8gPSBuZXcgc3BfY291bnRlZF9pbXBsX3BkPCBQLCBEID4oIHAgKTsKLQotICAgICAgICBpZiggcGlfID09IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBEOjpvcGVyYXRvcl9mbiggcCApOyAvLyBkZWxldGUgcAotICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbiggc3RkOjpiYWRfYWxsb2MoKSApOwotICAgICAgICB9Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLSAgICB9Ci0KLSNlbmRpZiAvLyAhZGVmaW5lZCggTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcgKQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUCwgY2xhc3MgRCwgY2xhc3MgQT4gc2hhcmVkX2NvdW50KCBQIHAsIEQgZCwgQSBhICk6IHBpXyggMCApCi0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9FTkFCTEVfREVCVUdfSE9PS1MpCi0gICAgICAgICwgaWRfKHNoYXJlZF9jb3VudF9pZCkKLSNlbmRpZgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBzcF9jb3VudGVkX2ltcGxfcGRhPFAsIEQsIEE+IGltcGxfdHlwZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBOjp0ZW1wbGF0ZSByZWJpbmQ8IGltcGxfdHlwZSA+OjpvdGhlciBBMjsKLQotICAgICAgICBBMiBhMiggYSApOwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLQotICAgICAgICB0cnkKLSAgICAgICAgewotICAgICAgICAgICAgcGlfID0gYTIuYWxsb2NhdGUoIDEsIHN0YXRpY19jYXN0PCBpbXBsX3R5cGUqID4oIDAgKSApOwotICAgICAgICAgICAgbmV3KCBzdGF0aWNfY2FzdDwgdm9pZCogPiggcGlfICkgKSBpbXBsX3R5cGUoIHAsIGQsIGEgKTsKLSAgICAgICAgfQotICAgICAgICBjYXRjaCguLi4pCi0gICAgICAgIHsKLSAgICAgICAgICAgIGQoIHAgKTsKLQotICAgICAgICAgICAgaWYoIHBpXyAhPSAwICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBhMi5kZWFsbG9jYXRlKCBzdGF0aWNfY2FzdDwgaW1wbF90eXBlKiA+KCBwaV8gKSwgMSApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0aHJvdzsKLSAgICAgICAgfQotCi0jZWxzZQotCi0gICAgICAgIHBpXyA9IGEyLmFsbG9jYXRlKCAxLCBzdGF0aWNfY2FzdDwgaW1wbF90eXBlKiA+KCAwICkgKTsKLQotICAgICAgICBpZiggcGlfICE9IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBuZXcoIHN0YXRpY19jYXN0PCB2b2lkKiA+KCBwaV8gKSApIGltcGxfdHlwZSggcCwgZCwgYSApOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgZCggcCApOwotICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbiggc3RkOjpiYWRfYWxsb2MoKSApOwotICAgICAgICB9Ci0KLSNlbmRpZgotICAgIH0KLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORyApCi0KLSAgICB0ZW1wbGF0ZTwgY2xhc3MgUCwgY2xhc3MgRCwgY2xhc3MgQSA+IHNoYXJlZF9jb3VudCggUCBwLCBzcF9pbnBsYWNlX3RhZzwgRCA+LCBBIGEgKTogcGlfKCAwICkKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX0VOQUJMRV9ERUJVR19IT09LUykKLSAgICAgICAgLCBpZF8oc2hhcmVkX2NvdW50X2lkKQotI2VuZGlmCi0gICAgewotICAgICAgICB0eXBlZGVmIHNwX2NvdW50ZWRfaW1wbF9wZGE8IFAsIEQsIEEgPiBpbXBsX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQTo6dGVtcGxhdGUgcmViaW5kPCBpbXBsX3R5cGUgPjo6b3RoZXIgQTI7Ci0KLSAgICAgICAgQTIgYTIoIGEgKTsKLQotI2lmbmRlZiBORE5CT09TVF9OT19FWENFUFRJT05TCi0KLSAgICAgICAgdHJ5Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHBpXyA9IGEyLmFsbG9jYXRlKCAxLCBzdGF0aWNfY2FzdDwgaW1wbF90eXBlKiA+KCAwICkgKTsKLSAgICAgICAgICAgIG5ldyggc3RhdGljX2Nhc3Q8IHZvaWQqID4oIHBpXyApICkgaW1wbF90eXBlKCBwLCBhICk7Ci0gICAgICAgIH0KLSAgICAgICAgY2F0Y2goLi4uKQotICAgICAgICB7Ci0gICAgICAgICAgICBEOjpvcGVyYXRvcl9mbiggcCApOwotCi0gICAgICAgICAgICBpZiggcGlfICE9IDAgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGEyLmRlYWxsb2NhdGUoIHN0YXRpY19jYXN0PCBpbXBsX3R5cGUqID4oIHBpXyApLCAxICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRocm93OwotICAgICAgICB9Ci0KLSNlbHNlCi0KLSAgICAgICAgcGlfID0gYTIuYWxsb2NhdGUoIDEsIHN0YXRpY19jYXN0PCBpbXBsX3R5cGUqID4oIDAgKSApOwotCi0gICAgICAgIGlmKCBwaV8gIT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5ldyggc3RhdGljX2Nhc3Q8IHZvaWQqID4oIHBpXyApICkgaW1wbF90eXBlKCBwLCBhICk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBEOjpvcGVyYXRvcl9mbiggcCApOwotICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbiggc3RkOjpiYWRfYWxsb2MoKSApOwotICAgICAgICB9Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLSAgICB9Ci0KLSNlbmRpZiAvLyAhZGVmaW5lZCggTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcgKQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0FVVE9fUFRSCi0KLSAgICAvLyBhdXRvX3B0cjxZPiBpcyBzcGVjaWFsIGNhc2VkIHRvIHByb3ZpZGUgdGhlIHN0cm9uZyBndWFyYW50ZWUKLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+Ci0gICAgZXhwbGljaXQgc2hhcmVkX2NvdW50KCBzdGQ6OmF1dG9fcHRyPFk+ICYgciApOiBwaV8oIG5ldyBzcF9jb3VudGVkX2ltcGxfcDxZPiggci5nZXQoKSApICkKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX0VOQUJMRV9ERUJVR19IT09LUykKLSAgICAgICAgLCBpZF8oc2hhcmVkX2NvdW50X2lkKQotI2VuZGlmCi0gICAgewotI2lmZGVmIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLQotICAgICAgICBpZiggcGlfID09IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKHN0ZDo6YmFkX2FsbG9jKCkpOwotICAgICAgICB9Ci0KLSNlbmRpZgotCi0gICAgICAgIHIucmVsZWFzZSgpOwotICAgIH0KLQotI2VuZGlmIAotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX1NNQVJUX1BUUiApCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZLCBjbGFzcyBEPgotICAgIGV4cGxpY2l0IHNoYXJlZF9jb3VudCggc3RkOjp1bmlxdWVfcHRyPFksIEQ+ICYgciApOiBwaV8oIDAgKQotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotICAgICAgICAsIGlkXyhzaGFyZWRfY291bnRfaWQpCi0jZW5kaWYKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc3BfY29udmVydF9yZWZlcmVuY2U8RD46OnR5cGUgRDI7Ci0KLSAgICAgICAgRDIgZDIoIHIuZ2V0X2RlbGV0ZXIoKSApOwotICAgICAgICBwaV8gPSBuZXcgc3BfY291bnRlZF9pbXBsX3BkPCB0eXBlbmFtZSBzdGQ6OnVuaXF1ZV9wdHI8WSwgRD46OnBvaW50ZXIsIEQyID4oIHIuZ2V0KCksIGQyICk7Ci0KLSNpZmRlZiBORE5CT09TVF9OT19FWENFUFRJT05TCi0KLSAgICAgICAgaWYoIHBpXyA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbiggc3RkOjpiYWRfYWxsb2MoKSApOwotICAgICAgICB9Ci0KLSNlbmRpZgotCi0gICAgICAgIHIucmVsZWFzZSgpOwotICAgIH0KLQotI2VuZGlmCi0KLSAgICB+c2hhcmVkX2NvdW50KCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgaWYoIHBpXyAhPSAwICkgcGlfLT5yZWxlYXNlKCk7Ci0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9FTkFCTEVfREVCVUdfSE9PS1MpCi0gICAgICAgIGlkXyA9IDA7Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICBzaGFyZWRfY291bnQoc2hhcmVkX2NvdW50IGNvbnN0ICYgcik6IHBpXyhyLnBpXykgLy8gbm90aHJvdwotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotICAgICAgICAsIGlkXyhzaGFyZWRfY291bnRfaWQpCi0jZW5kaWYKLSAgICB7Ci0gICAgICAgIGlmKCBwaV8gIT0gMCApIHBpXy0+YWRkX3JlZl9jb3B5KCk7Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTICkKLQotICAgIHNoYXJlZF9jb3VudChzaGFyZWRfY291bnQgJiYgcik6IHBpXyhyLnBpXykgLy8gbm90aHJvdwotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotICAgICAgICAsIGlkXyhzaGFyZWRfY291bnRfaWQpCi0jZW5kaWYKLSAgICB7Ci0gICAgICAgIHIucGlfID0gMDsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgZXhwbGljaXQgc2hhcmVkX2NvdW50KHdlYWtfY291bnQgY29uc3QgJiByKTsgLy8gdGhyb3dzIGJhZF93ZWFrX3B0ciB3aGVuIHIudXNlX2NvdW50KCkgPT0gMAotICAgIHNoYXJlZF9jb3VudCggd2Vha19jb3VudCBjb25zdCAmIHIsIHNwX25vdGhyb3dfdGFnICk7IC8vIGNvbnN0cnVjdHMgYW4gZW1wdHkgKnRoaXMgd2hlbiByLnVzZV9jb3VudCgpID09IDAKLQotICAgIHNoYXJlZF9jb3VudCAmIG9wZXJhdG9yPSAoc2hhcmVkX2NvdW50IGNvbnN0ICYgcikgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgc3BfY291bnRlZF9iYXNlICogdG1wID0gci5waV87Ci0KLSAgICAgICAgaWYoIHRtcCAhPSBwaV8gKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiggdG1wICE9IDAgKSB0bXAtPmFkZF9yZWZfY29weSgpOwotICAgICAgICAgICAgaWYoIHBpXyAhPSAwICkgcGlfLT5yZWxlYXNlKCk7Ci0gICAgICAgICAgICBwaV8gPSB0bXA7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgdm9pZCBzd2FwKHNoYXJlZF9jb3VudCAmIHIpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIHNwX2NvdW50ZWRfYmFzZSAqIHRtcCA9IHIucGlfOwotICAgICAgICByLnBpXyA9IHBpXzsKLSAgICAgICAgcGlfID0gdG1wOwotICAgIH0KLQotICAgIGxvbmcgdXNlX2NvdW50KCkgY29uc3QgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgcmV0dXJuIHBpXyAhPSAwPyBwaV8tPnVzZV9jb3VudCgpOiAwOwotICAgIH0KLQotICAgIGJvb2wgdW5pcXVlKCkgY29uc3QgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgcmV0dXJuIHVzZV9jb3VudCgpID09IDE7Ci0gICAgfQotCi0gICAgYm9vbCBlbXB0eSgpIGNvbnN0IC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIHJldHVybiBwaV8gPT0gMDsKLSAgICB9Ci0KLSAgICBmcmllbmQgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShzaGFyZWRfY291bnQgY29uc3QgJiBhLCBzaGFyZWRfY291bnQgY29uc3QgJiBiKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGEucGlfID09IGIucGlfOwotICAgIH0KLQotICAgIGZyaWVuZCBpbmxpbmUgYm9vbCBvcGVyYXRvcjwoc2hhcmVkX2NvdW50IGNvbnN0ICYgYSwgc2hhcmVkX2NvdW50IGNvbnN0ICYgYikKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Omxlc3M8c3BfY291bnRlZF9iYXNlICo+KCkoIGEucGlfLCBiLnBpXyApOwotICAgIH0KLQotICAgIHZvaWQgKiBnZXRfZGVsZXRlciggc3BfdHlwZWluZm8gY29uc3QgJiB0aSApIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gcGlfPyBwaV8tPmdldF9kZWxldGVyKCB0aSApOiAwOwotICAgIH0KLQotICAgIHZvaWQgKiBnZXRfdW50eXBlZF9kZWxldGVyKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBwaV8/IHBpXy0+Z2V0X3VudHlwZWRfZGVsZXRlcigpOiAwOwotICAgIH0KLX07Ci0KLQotY2xhc3Mgd2Vha19jb3VudAotewotcHJpdmF0ZToKLQotICAgIHNwX2NvdW50ZWRfYmFzZSAqIHBpXzsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotICAgIGludCBpZF87Ci0jZW5kaWYKLQotICAgIGZyaWVuZCBjbGFzcyBzaGFyZWRfY291bnQ7Ci0KLXB1YmxpYzoKLQotICAgIHdlYWtfY291bnQoKTogcGlfKDApIC8vIG5vdGhyb3cKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX0VOQUJMRV9ERUJVR19IT09LUykKLSAgICAgICAgLCBpZF8od2Vha19jb3VudF9pZCkKLSNlbmRpZgotICAgIHsKLSAgICB9Ci0KLSAgICB3ZWFrX2NvdW50KHNoYXJlZF9jb3VudCBjb25zdCAmIHIpOiBwaV8oci5waV8pIC8vIG5vdGhyb3cKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX0VOQUJMRV9ERUJVR19IT09LUykKLSAgICAgICAgLCBpZF8od2Vha19jb3VudF9pZCkKLSNlbmRpZgotICAgIHsKLSAgICAgICAgaWYocGlfICE9IDApIHBpXy0+d2Vha19hZGRfcmVmKCk7Ci0gICAgfQotCi0gICAgd2Vha19jb3VudCh3ZWFrX2NvdW50IGNvbnN0ICYgcik6IHBpXyhyLnBpXykgLy8gbm90aHJvdwotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotICAgICAgICAsIGlkXyh3ZWFrX2NvdW50X2lkKQotI2VuZGlmCi0gICAgewotICAgICAgICBpZihwaV8gIT0gMCkgcGlfLT53ZWFrX2FkZF9yZWYoKTsKLSAgICB9Ci0KLS8vIE1vdmUgc3VwcG9ydAotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTICkKLQotICAgIHdlYWtfY291bnQod2Vha19jb3VudCAmJiByKTogcGlfKHIucGlfKSAvLyBub3Rocm93Ci0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9FTkFCTEVfREVCVUdfSE9PS1MpCi0gICAgICAgICwgaWRfKHdlYWtfY291bnRfaWQpCi0jZW5kaWYKLSAgICB7Ci0gICAgICAgIHIucGlfID0gMDsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgfndlYWtfY291bnQoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBpZihwaV8gIT0gMCkgcGlfLT53ZWFrX3JlbGVhc2UoKTsKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX0VOQUJMRV9ERUJVR19IT09LUykKLSAgICAgICAgaWRfID0gMDsKLSNlbmRpZgotICAgIH0KLQotICAgIHdlYWtfY291bnQgJiBvcGVyYXRvcj0gKHNoYXJlZF9jb3VudCBjb25zdCAmIHIpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIHNwX2NvdW50ZWRfYmFzZSAqIHRtcCA9IHIucGlfOwotCi0gICAgICAgIGlmKCB0bXAgIT0gcGlfICkKLSAgICAgICAgewotICAgICAgICAgICAgaWYodG1wICE9IDApIHRtcC0+d2Vha19hZGRfcmVmKCk7Ci0gICAgICAgICAgICBpZihwaV8gIT0gMCkgcGlfLT53ZWFrX3JlbGVhc2UoKTsKLSAgICAgICAgICAgIHBpXyA9IHRtcDsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICB3ZWFrX2NvdW50ICYgb3BlcmF0b3I9ICh3ZWFrX2NvdW50IGNvbnN0ICYgcikgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgc3BfY291bnRlZF9iYXNlICogdG1wID0gci5waV87Ci0KLSAgICAgICAgaWYoIHRtcCAhPSBwaV8gKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZih0bXAgIT0gMCkgdG1wLT53ZWFrX2FkZF9yZWYoKTsKLSAgICAgICAgICAgIGlmKHBpXyAhPSAwKSBwaV8tPndlYWtfcmVsZWFzZSgpOwotICAgICAgICAgICAgcGlfID0gdG1wOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIHZvaWQgc3dhcCh3ZWFrX2NvdW50ICYgcikgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgc3BfY291bnRlZF9iYXNlICogdG1wID0gci5waV87Ci0gICAgICAgIHIucGlfID0gcGlfOwotICAgICAgICBwaV8gPSB0bXA7Ci0gICAgfQotCi0gICAgbG9uZyB1c2VfY291bnQoKSBjb25zdCAvLyBub3Rocm93Ci0gICAgewotICAgICAgICByZXR1cm4gcGlfICE9IDA/IHBpXy0+dXNlX2NvdW50KCk6IDA7Ci0gICAgfQotCi0gICAgYm9vbCBlbXB0eSgpIGNvbnN0IC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIHJldHVybiBwaV8gPT0gMDsKLSAgICB9Ci0KLSAgICBmcmllbmQgaW5saW5lIGJvb2wgb3BlcmF0b3I9PSh3ZWFrX2NvdW50IGNvbnN0ICYgYSwgd2Vha19jb3VudCBjb25zdCAmIGIpCi0gICAgewotICAgICAgICByZXR1cm4gYS5waV8gPT0gYi5waV87Ci0gICAgfQotCi0gICAgZnJpZW5kIGlubGluZSBib29sIG9wZXJhdG9yPCh3ZWFrX2NvdW50IGNvbnN0ICYgYSwgd2Vha19jb3VudCBjb25zdCAmIGIpCi0gICAgewotICAgICAgICByZXR1cm4gc3RkOjpsZXNzPHNwX2NvdW50ZWRfYmFzZSAqPigpKGEucGlfLCBiLnBpXyk7Ci0gICAgfQotfTsKLQotaW5saW5lIHNoYXJlZF9jb3VudDo6c2hhcmVkX2NvdW50KCB3ZWFrX2NvdW50IGNvbnN0ICYgciApOiBwaV8oIHIucGlfICkKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX0VOQUJMRV9ERUJVR19IT09LUykKLSAgICAgICAgLCBpZF8oc2hhcmVkX2NvdW50X2lkKQotI2VuZGlmCi17Ci0gICAgaWYoIHBpXyA9PSAwIHx8ICFwaV8tPmFkZF9yZWZfbG9jaygpICkKLSAgICB7Ci0gICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oIG5kbmJvb3N0OjpiYWRfd2Vha19wdHIoKSApOwotICAgIH0KLX0KLQotaW5saW5lIHNoYXJlZF9jb3VudDo6c2hhcmVkX2NvdW50KCB3ZWFrX2NvdW50IGNvbnN0ICYgciwgc3Bfbm90aHJvd190YWcgKTogcGlfKCByLnBpXyApCi0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9FTkFCTEVfREVCVUdfSE9PS1MpCi0gICAgICAgICwgaWRfKHNoYXJlZF9jb3VudF9pZCkKLSNlbmRpZgotewotICAgIGlmKCBwaV8gIT0gMCAmJiAhcGlfLT5hZGRfcmVmX2xvY2soKSApCi0gICAgewotICAgICAgICBwaV8gPSAwOwotICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZmRlZiBfX0JPUkxBTkRDX18KLSMgcHJhZ21hIHdhcm4gLjgwMjcgICAgIC8vIEZ1bmN0aW9ucyBjb250YWluaW5nIHRyeSBhcmUgbm90IGV4cGFuZGVkIGlubGluZQotI2VuZGlmCi0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NIQVJFRF9DT1VOVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zaGFyZWRfcHRyX25tdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc2hhcmVkX3B0cl9ubXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzM2OGI4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zaGFyZWRfcHRyX25tdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODIgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NIQVJFRF9QVFJfTk1UX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NIQVJFRF9QVFJfTk1UX0hQUF9JTkNMVURFRAotCi0vLwotLy8gIGRldGFpbC9zaGFyZWRfcHRyX25tdC5ocHAgLSBzaGFyZWRfcHRyLmhwcCB3aXRob3V0IG1lbWJlciB0ZW1wbGF0ZXMKLS8vCi0vLyAgKEMpIENvcHlyaWdodCBHcmVnIENvbHZpbiBhbmQgQmVtYW4gRGF3ZXMgMTk5OCwgMTk5OS4KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDIgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3NtYXJ0X3B0ci9zaGFyZWRfcHRyLmh0bSBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NoZWNrZWRfZGVsZXRlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90aHJvd19leGNlcHRpb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50LmhwcD4KLQotI2lmbmRlZiBORE5CT09TVF9OT19BVVRPX1BUUgotIyBpbmNsdWRlIDxtZW1vcnk+ICAgICAgICAgIC8vIGZvciBzdGQ6OmF1dG9fcHRyCi0jZW5kaWYKLQotI2luY2x1ZGUgPGFsZ29yaXRobT4gICAgICAgIC8vIGZvciBzdGQ6OnN3YXAKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPiAgICAgICAvLyBmb3Igc3RkOjpsZXNzCi0jaW5jbHVkZSA8bmV3PiAgICAgICAgICAgICAgLy8gZm9yIHN0ZDo6YmFkX2FsbG9jCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi10ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyBzaGFyZWRfcHRyCi17Ci1wcml2YXRlOgotCi0gICAgdHlwZWRlZiBkZXRhaWw6OmF0b21pY19jb3VudCBjb3VudF90eXBlOwotCi1wdWJsaWM6Ci0KLSAgICB0eXBlZGVmIFQgZWxlbWVudF90eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotCi0gICAgZXhwbGljaXQgc2hhcmVkX3B0cihUICogcCA9IDApOiBweChwKQotICAgIHsKLSNpZm5kZWYgTkROQk9PU1RfTk9fRVhDRVBUSU9OUwotCi0gICAgICAgIHRyeSAgLy8gcHJldmVudCBsZWFrIGlmIG5ldyB0aHJvd3MKLSAgICAgICAgewotICAgICAgICAgICAgcG4gPSBuZXcgY291bnRfdHlwZSgxKTsKLSAgICAgICAgfQotICAgICAgICBjYXRjaCguLi4pCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5kbmJvb3N0OjpjaGVja2VkX2RlbGV0ZShwKTsKLSAgICAgICAgICAgIHRocm93OwotICAgICAgICB9Ci0KLSNlbHNlCi0KLSAgICAgICAgcG4gPSBuZXcgY291bnRfdHlwZSgxKTsKLQotICAgICAgICBpZihwbiA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBuZG5ib29zdDo6Y2hlY2tlZF9kZWxldGUocCk7Ci0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKHN0ZDo6YmFkX2FsbG9jKCkpOwotICAgICAgICB9Ci0KLSNlbmRpZgotICAgIH0KLQotICAgIH5zaGFyZWRfcHRyKCkKLSAgICB7Ci0gICAgICAgIGlmKC0tKnBuID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5kbmJvb3N0OjpjaGVja2VkX2RlbGV0ZShweCk7Ci0gICAgICAgICAgICBkZWxldGUgcG47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzaGFyZWRfcHRyKHNoYXJlZF9wdHIgY29uc3QgJiByKTogcHgoci5weCkgIC8vIG5ldmVyIHRocm93cwotICAgIHsKLSAgICAgICAgcG4gPSByLnBuOwotICAgICAgICArKypwbjsKLSAgICB9Ci0KLSAgICBzaGFyZWRfcHRyICYgb3BlcmF0b3I9KHNoYXJlZF9wdHIgY29uc3QgJiByKQotICAgIHsKLSAgICAgICAgc2hhcmVkX3B0cihyKS5zd2FwKCp0aGlzKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotI2lmbmRlZiBORE5CT09TVF9OT19BVVRPX1BUUgotCi0gICAgZXhwbGljaXQgc2hhcmVkX3B0cihzdGQ6OmF1dG9fcHRyPFQ+ICYgcikKLSAgICB7IAotICAgICAgICBwbiA9IG5ldyBjb3VudF90eXBlKDEpOyAvLyBtYXkgdGhyb3cKLSAgICAgICAgcHggPSByLnJlbGVhc2UoKTsgLy8gZml4OiBtb3ZlZCBoZXJlIHRvIHN0b3AgbGVhayBpZiBuZXcgdGhyb3dzCi0gICAgfSAKLQotICAgIHNoYXJlZF9wdHIgJiBvcGVyYXRvcj0oc3RkOjphdXRvX3B0cjxUPiAmIHIpCi0gICAgewotICAgICAgICBzaGFyZWRfcHRyKHIpLnN3YXAoKnRoaXMpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIHZvaWQgcmVzZXQoVCAqIHAgPSAwKQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKHAgPT0gMCB8fCBwICE9IHB4KTsKLSAgICAgICAgc2hhcmVkX3B0cihwKS5zd2FwKCp0aGlzKTsKLSAgICB9Ci0KLSAgICBUICYgb3BlcmF0b3IqKCkgY29uc3QgIC8vIG5ldmVyIHRocm93cwotICAgIHsKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKHB4ICE9IDApOwotICAgICAgICByZXR1cm4gKnB4OwotICAgIH0KLQotICAgIFQgKiBvcGVyYXRvci0+KCkgY29uc3QgIC8vIG5ldmVyIHRocm93cwotICAgIHsKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKHB4ICE9IDApOwotICAgICAgICByZXR1cm4gcHg7Ci0gICAgfQotCi0gICAgVCAqIGdldCgpIGNvbnN0ICAvLyBuZXZlciB0aHJvd3MKLSAgICB7Ci0gICAgICAgIHJldHVybiBweDsKLSAgICB9Ci0KLSAgICBsb25nIHVzZV9jb3VudCgpIGNvbnN0ICAvLyBuZXZlciB0aHJvd3MKLSAgICB7Ci0gICAgICAgIHJldHVybiAqcG47Ci0gICAgfQotCi0gICAgYm9vbCB1bmlxdWUoKSBjb25zdCAgLy8gbmV2ZXIgdGhyb3dzCi0gICAgewotICAgICAgICByZXR1cm4gKnBuID09IDE7Ci0gICAgfQotICAgIAotICAgIHZvaWQgc3dhcChzaGFyZWRfcHRyPFQ+ICYgb3RoZXIpICAvLyBuZXZlciB0aHJvd3MKLSAgICB7Ci0gICAgICAgIHN0ZDo6c3dhcChweCwgb3RoZXIucHgpOwotICAgICAgICBzdGQ6OnN3YXAocG4sIG90aGVyLnBuKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0KLSAgICBUICogcHg7ICAgICAgICAgICAgLy8gY29udGFpbmVkIHBvaW50ZXIKLSAgICBjb3VudF90eXBlICogcG47ICAgLy8gcHRyIHRvIHJlZmVyZW5jZSBjb3VudGVyCi19OwotCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KHNoYXJlZF9wdHI8VD4gY29uc3QgJiBhLCBzaGFyZWRfcHRyPFU+IGNvbnN0ICYgYikKLXsKLSAgICByZXR1cm4gYS5nZXQoKSA9PSBiLmdldCgpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KHNoYXJlZF9wdHI8VD4gY29uc3QgJiBhLCBzaGFyZWRfcHRyPFU+IGNvbnN0ICYgYikKLXsKLSAgICByZXR1cm4gYS5nZXQoKSAhPSBiLmdldCgpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvcjwoc2hhcmVkX3B0cjxUPiBjb25zdCAmIGEsIHNoYXJlZF9wdHI8VD4gY29uc3QgJiBiKQotewotICAgIHJldHVybiBzdGQ6Omxlc3M8VCo+KCkoYS5nZXQoKSwgYi5nZXQoKSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgc3dhcChzaGFyZWRfcHRyPFQ+ICYgYSwgc2hhcmVkX3B0cjxUPiAmIGIpCi17Ci0gICAgYS5zd2FwKGIpOwotfQotCi0vLyBnZXRfcG9pbnRlcigpIGVuYWJsZXMgbmRuYm9vc3Q6Om1lbV9mbiB0byByZWNvZ25pemUgc2hhcmVkX3B0cgotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgVCAqIGdldF9wb2ludGVyKHNoYXJlZF9wdHI8VD4gY29uc3QgJiBwKQotewotICAgIHJldHVybiBwLmdldCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TSEFSRURfUFRSX05NVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb252ZXJ0aWJsZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY29udmVydGlibGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YzhiNmIxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb252ZXJ0aWJsZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09OVkVSVElCTEVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09OVkVSVElCTEVfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLyAgZGV0YWlsL3NwX2NvbnZlcnRpYmxlLmhwcAotLy8KLS8vICBDb3B5cmlnaHQgMjAwOCBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX1NQX05PX1NQX0NPTlZFUlRJQkxFICkgJiYgZGVmaW5lZCggTkROQk9PU1RfTk9fU0ZJTkFFICkKLSMgZGVmaW5lIE5ETkJPT1NUX1NQX05PX1NQX0NPTlZFUlRJQkxFCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9TUF9OT19TUF9DT05WRVJUSUJMRSApICYmIGRlZmluZWQoIF9fR05VQ19fICkgJiYgKCBfX0dOVUNfXyAqIDEwMCArIF9fR05VQ19NSU5PUl9fIDwgMzAzICkKLSMgZGVmaW5lIE5ETkJPT1NUX1NQX05PX1NQX0NPTlZFUlRJQkxFCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9TUF9OT19TUF9DT05WRVJUSUJMRSApICYmIGRlZmluZWQoIF9fQk9STEFORENfXyApICYmICggX19CT1JMQU5EQ19fIDwgMHg2MzAgKQotIyBkZWZpbmUgTkROQk9PU1RfU1BfTk9fU1BfQ09OVkVSVElCTEUKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX1NQX05PX1NQX0NPTlZFUlRJQkxFICkKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotdGVtcGxhdGU8IGNsYXNzIFksIGNsYXNzIFQgPiBzdHJ1Y3Qgc3BfY29udmVydGlibGUKLXsKLSAgICB0eXBlZGVmIGNoYXIgKCZ5ZXMpIFsxXTsKLSAgICB0eXBlZGVmIGNoYXIgKCZubykgIFsyXTsKLQotICAgIHN0YXRpYyB5ZXMgZiggVCogKTsKLSAgICBzdGF0aWMgbm8gIGYoIC4uLiApOwotCi0gICAgZW51bSBfdnQgeyB2YWx1ZSA9IHNpemVvZiggKGYpKCBzdGF0aWNfY2FzdDxZKj4oMCkgKSApID09IHNpemVvZih5ZXMpIH07Ci19OwotCi10ZW1wbGF0ZTwgY2xhc3MgWSwgY2xhc3MgVCA+IHN0cnVjdCBzcF9jb252ZXJ0aWJsZTwgWSwgVFtdID4KLXsKLSAgICBlbnVtIF92dCB7IHZhbHVlID0gZmFsc2UgfTsKLX07Ci0KLXRlbXBsYXRlPCBjbGFzcyBZLCBjbGFzcyBUID4gc3RydWN0IHNwX2NvbnZlcnRpYmxlPCBZW10sIFRbXSA+Ci17Ci0gICAgZW51bSBfdnQgeyB2YWx1ZSA9IHNwX2NvbnZlcnRpYmxlPCBZWzFdLCBUWzFdID46OnZhbHVlIH07Ci19OwotCi10ZW1wbGF0ZTwgY2xhc3MgWSwgc3RkOjpzaXplX3QgTiwgY2xhc3MgVCA+IHN0cnVjdCBzcF9jb252ZXJ0aWJsZTwgWVtOXSwgVFtdID4KLXsKLSAgICBlbnVtIF92dCB7IHZhbHVlID0gc3BfY29udmVydGlibGU8IFlbMV0sIFRbMV0gPjo6dmFsdWUgfTsKLX07Ci0KLXN0cnVjdCBzcF9lbXB0eQotewotfTsKLQotdGVtcGxhdGU8IGJvb2wgPiBzdHJ1Y3Qgc3BfZW5hYmxlX2lmX2NvbnZlcnRpYmxlX2ltcGw7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHNwX2VuYWJsZV9pZl9jb252ZXJ0aWJsZV9pbXBsPHRydWU+Ci17Ci0gICAgdHlwZWRlZiBzcF9lbXB0eSB0eXBlOwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qgc3BfZW5hYmxlX2lmX2NvbnZlcnRpYmxlX2ltcGw8ZmFsc2U+Ci17Ci19OwotCi10ZW1wbGF0ZTwgY2xhc3MgWSwgY2xhc3MgVCA+IHN0cnVjdCBzcF9lbmFibGVfaWZfY29udmVydGlibGU6IHB1YmxpYyBzcF9lbmFibGVfaWZfY29udmVydGlibGVfaW1wbDwgc3BfY29udmVydGlibGU8IFksIFQgPjo6dmFsdWUgPgotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyAhZGVmaW5lZCggTkROQk9PU1RfU1BfTk9fU1BfQ09OVkVSVElCTEUgKQotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT05WRVJUSUJMRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkN2Y4MmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgZGV0YWlsL3NwX2NvdW50ZWRfYmFzZS5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IDIwMDUsIDIwMDYgUGV0ZXIgRGltb3YKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2hhc19zeW5jLmhwcD4KLQotI2lmIGRlZmluZWQoIE5ETkJPT1NUX1NQX0RJU0FCTEVfVEhSRUFEUyApCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX250LmhwcD4KLQotI2VsaWYgZGVmaW5lZCggTkROQk9PU1RfU1BfVVNFX1NQSU5MT0NLICkKLSMgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2Vfc3Bpbi5ocHA+Ci0KLSNlbGlmIGRlZmluZWQoIE5ETkJPT1NUX1NQX1VTRV9QVEhSRUFEUyApCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX3B0LmhwcD4KLQotI2VsaWYgZGVmaW5lZCggTkROQk9PU1RfRElTQUJMRV9USFJFQURTICkgJiYgIWRlZmluZWQoIE5ETkJPT1NUX1NQX0VOQUJMRV9USFJFQURTICkgJiYgIWRlZmluZWQoIE5ETkJPT1NUX0RJU0FCTEVfV0lOMzIgKQotIyBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9udC5ocHA+Ci0KLSNlbGlmIGRlZmluZWQoIF9fU05DX18gKQotIyBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9zbmNfcHMzLmhwcD4KLQotI2VsaWYgZGVmaW5lZCggX19HTlVDX18gKSAmJiAoIGRlZmluZWQoIF9faTM4Nl9fICkgfHwgZGVmaW5lZCggX194ODZfNjRfXyApICkgJiYgIWRlZmluZWQoX19QQVRIU0NBTEVfXykKLSMgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfZ2NjX3g4Ni5ocHA+Ci0KLSNlbGlmIGRlZmluZWQoX19IUF9hQ0MpICYmIGRlZmluZWQoX19pYTY0KQotIyBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9hY2NfaWE2NC5ocHA+Ci0KLSNlbGlmIGRlZmluZWQoIF9fR05VQ19fICkgJiYgZGVmaW5lZCggX19pYTY0X18gKSAmJiAhZGVmaW5lZCggX19JTlRFTF9DT01QSUxFUiApICYmICFkZWZpbmVkKF9fUEFUSFNDQUxFX18pCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX2djY19pYTY0LmhwcD4KLQotI2VsaWYgZGVmaW5lZCggX19JQk1DUFBfXyApICYmIGRlZmluZWQoIF9fcG93ZXJwYyApCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX3ZhY3BwX3BwYy5ocHA+Ci0KLSNlbGlmIGRlZmluZWQoIF9fTVdFUktTX18gKSAmJiBkZWZpbmVkKCBfX1BPV0VSUENfXyApCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX2N3X3BwYy5ocHA+Ci0KLSNlbGlmIGRlZmluZWQoIF9fR05VQ19fICkgJiYgKCBkZWZpbmVkKCBfX3Bvd2VycGNfXyApIHx8IGRlZmluZWQoIF9fcHBjX18gKSB8fCBkZWZpbmVkKCBfX3BwYyApICkgJiYgIWRlZmluZWQoX19QQVRIU0NBTEVfXykgJiYgIWRlZmluZWQoIF9BSVggKQotIyBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9nY2NfcHBjLmhwcD4KLQotI2VsaWYgZGVmaW5lZCggX19HTlVDX18gKSAmJiAoIGRlZmluZWQoIF9fbWlwc19fICkgfHwgZGVmaW5lZCggX21pcHMgKSApICYmICFkZWZpbmVkKF9fUEFUSFNDQUxFX18pCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX2djY19taXBzLmhwcD4KLQotI2VsaWYgZGVmaW5lZCggTkROQk9PU1RfU1BfSEFTX1NZTkMgKQotIyBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9zeW5jLmhwcD4KLQotI2VsaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCBkZWZpbmVkKCBfX3NwYXJjdjkgKSB8fCAoIGRlZmluZWQoIF9fc3BhcmN2OCApICYmICggX19HTlVDX18gKiAxMDAgKyBfX0dOVUNfTUlOT1JfXyA+PSA0MDIgKSApICkKLSMgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfZ2NjX3NwYXJjLmhwcD4KLQotI2VsaWYgZGVmaW5lZCggV0lOMzIgKSB8fCBkZWZpbmVkKCBfV0lOMzIgKSB8fCBkZWZpbmVkKCBfX1dJTjMyX18gKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX3czMi5ocHA+Ci0KLSNlbGlmIGRlZmluZWQoIF9BSVggKQotIyBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9haXguaHBwPgotCi0jZWxpZiAhZGVmaW5lZCggTkROQk9PU1RfSEFTX1RIUkVBRFMgKQotIyBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9udC5ocHA+Ci0KLSNlbHNlCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX3NwaW4uaHBwPgotCi0jZW5kaWYKLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9hY2NfaWE2NC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX2FjY19pYTY0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGNmYWNlMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX2FjY19pYTY0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1MSArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX0FDQ19JQTY0X0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9BQ0NfSUE2NF9IUFBfSU5DTFVERUQKLQotLy8KLS8vICBkZXRhaWwvc3BfY291bnRlZF9iYXNlX2FjY19pYTY0LmhwcCAtIGFDKysgb24gSFAtVVggSUE2NAotLy8KLS8vICBDb3B5cmlnaHQgMjAwNyBCYXJ1Y2ggWmlsYmVyCi0vLyAgQ29weXJpZ2h0IDIwMDcgQm9yaXMgR3ViZW5rbwotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLwotLy8gIExvY2stZnJlZSBhbGdvcml0aG0gYnkgQWxleGFuZGVyIFRlcmVraG92Ci0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3NwX3R5cGVpbmZvLmhwcD4KLSNpbmNsdWRlIDxtYWNoaW5lL3N5cy9pbmxpbmUuaD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotaW5saW5lIHZvaWQgYXRvbWljX2luY3JlbWVudCggaW50ICogcHcgKQotewotICAgIC8vICsrKnB3OwotCi0gICAgX0FzbV9mZXRjaGFkZChfRkFTWl9XLCBfU0VNX1JFTCwgcHcsICsxLCBfTERISU5UX05PTkUpOwotfSAKLQotaW5saW5lIGludCBhdG9taWNfZGVjcmVtZW50KCBpbnQgKiBwdyApCi17Ci0gICAgLy8gcmV0dXJuIC0tKnB3OwotCi0gICAgaW50IHIgPSBzdGF0aWNfY2FzdDxpbnQ+KF9Bc21fZmV0Y2hhZGQoX0ZBU1pfVywgX1NFTV9SRUwsIHB3LCAtMSwgX0xESElOVF9OT05FKSk7Ci0gICAgaWYgKDEgPT0gcikKLSAgICB7Ci0gICAgICAgIF9Bc21fbWYoKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHIgLSAxOwotfQotCi1pbmxpbmUgaW50IGF0b21pY19jb25kaXRpb25hbF9pbmNyZW1lbnQoIGludCAqIHB3ICkKLXsKLSAgICAvLyBpZiggKnB3ICE9IDAgKSArKypwdzsKLSAgICAvLyByZXR1cm4gKnB3OwotCi0gICAgaW50IHYgPSAqcHc7Ci0gICAgCi0gICAgZm9yICg7OykKLSAgICB7Ci0gICAgICAgIGlmICgwID09IHYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBfQXNtX21vdl90b19hcihfQVJFR19DQ1YsCi0gICAgICAgICAgICAgICAgICAgICAgIHYsCi0gICAgICAgICAgICAgICAgICAgICAgIChfVVBfQ0FMTF9GRU5DRSB8IF9VUF9TWVNfRkVOQ0UgfCBfRE9XTl9DQUxMX0ZFTkNFIHwgX0RPV05fU1lTX0ZFTkNFKSk7Ci0gICAgICAgIGludCByID0gc3RhdGljX2Nhc3Q8aW50PihfQXNtX2NtcHhjaGcoX1NaX1csIF9TRU1fQUNRLCBwdywgdiArIDEsIF9MREhJTlRfTk9ORSkpOwotICAgICAgICBpZiAociA9PSB2KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gciArIDE7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHYgPSByOwotICAgIH0KLX0KLQotY2xhc3Mgc3BfY291bnRlZF9iYXNlCi17Ci1wcml2YXRlOgotCi0gICAgc3BfY291bnRlZF9iYXNlKCBzcF9jb3VudGVkX2Jhc2UgY29uc3QgJiApOwotICAgIHNwX2NvdW50ZWRfYmFzZSAmIG9wZXJhdG9yPSAoIHNwX2NvdW50ZWRfYmFzZSBjb25zdCAmICk7Ci0KLSAgICBpbnQgdXNlX2NvdW50XzsgICAgICAgIC8vICNzaGFyZWQKLSAgICBpbnQgd2Vha19jb3VudF87ICAgICAgIC8vICN3ZWFrICsgKCNzaGFyZWQgIT0gMCkKLQotcHVibGljOgotCi0gICAgc3BfY291bnRlZF9iYXNlKCk6IHVzZV9jb3VudF8oIDEgKSwgd2Vha19jb3VudF8oIDEgKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5zcF9jb3VudGVkX2Jhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgIH0KLQotICAgIC8vIGRpc3Bvc2UoKSBpcyBjYWxsZWQgd2hlbiB1c2VfY291bnRfIGRyb3BzIHRvIHplcm8sIHRvIHJlbGVhc2UKLSAgICAvLyB0aGUgcmVzb3VyY2VzIG1hbmFnZWQgYnkgKnRoaXMuCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcG9zZSgpID0gMDsgLy8gbm90aHJvdwotCi0gICAgLy8gZGVzdHJveSgpIGlzIGNhbGxlZCB3aGVuIHdlYWtfY291bnRfIGRyb3BzIHRvIHplcm8uCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGRlbGV0ZSB0aGlzOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCAqIGdldF9kZWxldGVyKCBzcF90eXBlaW5mbyBjb25zdCAmIHRpICkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCAqIGdldF91bnR5cGVkX2RlbGV0ZXIoKSA9IDA7Ci0KLSAgICB2b2lkIGFkZF9yZWZfY29weSgpCi0gICAgewotICAgICAgICBhdG9taWNfaW5jcmVtZW50KCAmdXNlX2NvdW50XyApOwotICAgIH0KLQotICAgIGJvb2wgYWRkX3JlZl9sb2NrKCkgLy8gdHJ1ZSBvbiBzdWNjZXNzCi0gICAgewotICAgICAgICByZXR1cm4gYXRvbWljX2NvbmRpdGlvbmFsX2luY3JlbWVudCggJnVzZV9jb3VudF8gKSAhPSAwOwotICAgIH0KLQotICAgIHZvaWQgcmVsZWFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGlmKCBhdG9taWNfZGVjcmVtZW50KCAmdXNlX2NvdW50XyApID09IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkaXNwb3NlKCk7Ci0gICAgICAgICAgICB3ZWFrX3JlbGVhc2UoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgd2Vha19hZGRfcmVmKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgYXRvbWljX2luY3JlbWVudCggJndlYWtfY291bnRfICk7Ci0gICAgfQotCi0gICAgdm9pZCB3ZWFrX3JlbGVhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBpZiggYXRvbWljX2RlY3JlbWVudCggJndlYWtfY291bnRfICkgPT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRlc3Ryb3koKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGxvbmcgdXNlX2NvdW50KCkgY29uc3QgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludCBjb25zdCB2b2xhdGlsZSAmPiggdXNlX2NvdW50XyApOyAvLyBUT0RPIHVzZSBsZC5hY3EgaGVyZQotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfQUNDX0lBNjRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX2FpeC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX2FpeC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjYjdjZmUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9haXguaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfQUlYX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9BSVhfSFBQX0lOQ0xVREVECi0KLS8vCi0vLyAgZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9haXguaHBwCi0vLyAgIGJhc2VkIG9uOiBkZXRhaWwvc3BfY291bnRlZF9iYXNlX3czMi5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyLCAyMDAzIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLyAgQ29weXJpZ2h0IDIwMDQtMjAwNSBQZXRlciBEaW1vdgotLy8gIENvcHlyaWdodCAyMDA2IE1pY2hhZWwgdmFuIGRlciBXZXN0aHVpemVuCi0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vCi0vLyAgTG9jay1mcmVlIGFsZ29yaXRobSBieSBBbGV4YW5kZXIgVGVyZWtob3YKLS8vCi0vLyAgVGhhbmtzIHRvIEJlbiBIaXRjaGluZ3MgZm9yIHRoZSAjd2VhayArICgjc2hhcmVkICE9IDApCi0vLyAgZm9ybXVsYXRpb24KLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvc3BfdHlwZWluZm8uaHBwPgotI2luY2x1ZGUgPGJ1aWx0aW5zLmg+Ci0jaW5jbHVkZSA8c3lzL2F0b21pY19vcC5oPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi1pbmxpbmUgdm9pZCBhdG9taWNfaW5jcmVtZW50KCBpbnQzMl90KiBwdyApCi17Ci0gICAgLy8gKysqcHc7Ci0KLSAgICBmZXRjaF9hbmRfYWRkKCBwdywgMSApOwotfQotCi1pbmxpbmUgaW50MzJfdCBhdG9taWNfZGVjcmVtZW50KCBpbnQzMl90ICogcHcgKQotewotICAgIC8vIHJldHVybiAtLSpwdzsKLQotICAgIGludDMyX3Qgb3JpZ2luYWxWYWx1ZTsKLQotICAgIF9fbHdzeW5jKCk7Ci0gICAgb3JpZ2luYWxWYWx1ZSA9IGZldGNoX2FuZF9hZGQoIHB3LCAtMSApOwotICAgIF9faXN5bmMoKTsKLQotICAgIHJldHVybiAob3JpZ2luYWxWYWx1ZSAtIDEpOwotfQotCi1pbmxpbmUgaW50MzJfdCBhdG9taWNfY29uZGl0aW9uYWxfaW5jcmVtZW50KCBpbnQzMl90ICogcHcgKQotewotICAgIC8vIGlmKCAqcHcgIT0gMCApICsrKnB3OwotICAgIC8vIHJldHVybiAqcHc7Ci0KLSAgICBpbnQzMl90IHRtcCA9IGZldGNoX2FuZF9hZGQoIHB3LCAwICk7Ci0gICAgZm9yKCA7OyApCi0gICAgewotICAgICAgICBpZiggdG1wID09IDAgKSByZXR1cm4gMDsKLSAgICAgICAgaWYoIGNvbXBhcmVfYW5kX3N3YXAoIHB3LCAmdG1wLCB0bXAgKyAxICkgKSByZXR1cm4gKHRtcCArIDEpOwotICAgIH0KLX0KLQotY2xhc3Mgc3BfY291bnRlZF9iYXNlCi17Ci1wcml2YXRlOgotCi0gICAgc3BfY291bnRlZF9iYXNlKCBzcF9jb3VudGVkX2Jhc2UgY29uc3QgJiApOwotICAgIHNwX2NvdW50ZWRfYmFzZSAmIG9wZXJhdG9yPSAoIHNwX2NvdW50ZWRfYmFzZSBjb25zdCAmICk7Ci0KLSAgICBpbnQzMl90IHVzZV9jb3VudF87ICAgICAgICAvLyAjc2hhcmVkCi0gICAgaW50MzJfdCB3ZWFrX2NvdW50XzsgICAgICAgLy8gI3dlYWsgKyAoI3NoYXJlZCAhPSAwKQotCi1wdWJsaWM6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UoKTogdXNlX2NvdW50XyggMSApLCB3ZWFrX2NvdW50XyggMSApCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfnNwX2NvdW50ZWRfYmFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgfQotCi0gICAgLy8gZGlzcG9zZSgpIGlzIGNhbGxlZCB3aGVuIHVzZV9jb3VudF8gZHJvcHMgdG8gemVybywgdG8gcmVsZWFzZQotICAgIC8vIHRoZSByZXNvdXJjZXMgbWFuYWdlZCBieSAqdGhpcy4KLQotICAgIHZpcnR1YWwgdm9pZCBkaXNwb3NlKCkgPSAwOyAvLyBub3Rocm93Ci0KLSAgICAvLyBkZXN0cm95KCkgaXMgY2FsbGVkIHdoZW4gd2Vha19jb3VudF8gZHJvcHMgdG8gemVyby4KLQotICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgZGVsZXRlIHRoaXM7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkICogZ2V0X2RlbGV0ZXIoIHNwX3R5cGVpbmZvIGNvbnN0ICYgdGkgKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkICogZ2V0X3VudHlwZWRfZGVsZXRlcigpID0gMDsKLQotICAgIHZvaWQgYWRkX3JlZl9jb3B5KCkKLSAgICB7Ci0gICAgICAgIGF0b21pY19pbmNyZW1lbnQoICZ1c2VfY291bnRfICk7Ci0gICAgfQotCi0gICAgYm9vbCBhZGRfcmVmX2xvY2soKSAvLyB0cnVlIG9uIHN1Y2Nlc3MKLSAgICB7Ci0gICAgICAgIHJldHVybiBhdG9taWNfY29uZGl0aW9uYWxfaW5jcmVtZW50KCAmdXNlX2NvdW50XyApICE9IDA7Ci0gICAgfQotCi0gICAgdm9pZCByZWxlYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgaWYoIGF0b21pY19kZWNyZW1lbnQoICZ1c2VfY291bnRfICkgPT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRpc3Bvc2UoKTsKLSAgICAgICAgICAgIHdlYWtfcmVsZWFzZSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCB3ZWFrX2FkZF9yZWYoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBhdG9taWNfaW5jcmVtZW50KCAmd2Vha19jb3VudF8gKTsKLSAgICB9Ci0KLSAgICB2b2lkIHdlYWtfcmVsZWFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGlmKCBhdG9taWNfZGVjcmVtZW50KCAmd2Vha19jb3VudF8gKSA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgZGVzdHJveSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbG9uZyB1c2VfY291bnQoKSBjb25zdCAvLyBub3Rocm93Ci0gICAgewotICAgICAgICByZXR1cm4gZmV0Y2hfYW5kX2FkZCggY29uc3RfY2FzdDxpbnQzMl90Kj4oJnVzZV9jb3VudF8pLCAwICk7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9BSVhfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX2N3X3BwYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX2N3X3BwYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkMTk2YmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9jd19wcGMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTcxICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfQ1dfUFBDX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9DV19QUENfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIGRldGFpbC9zcF9jb3VudGVkX2Jhc2VfY3dfcHBjLmhwcCAtIENvZGVXYXJyaW9yIG9uIFBvd2VyUEMKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyLCAyMDAzIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLyAgQ29weXJpZ2h0IDIwMDQtMjAwNSBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLwotLy8gIExvY2stZnJlZSBhbGdvcml0aG0gYnkgQWxleGFuZGVyIFRlcmVraG92Ci0vLwotLy8gIFRoYW5rcyB0byBCZW4gSGl0Y2hpbmdzIGZvciB0aGUgI3dlYWsgKyAoI3NoYXJlZCAhPSAwKQotLy8gIGZvcm11bGF0aW9uCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3NwX3R5cGVpbmZvLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotaW5saW5lIHZvaWQgYXRvbWljX2luY3JlbWVudCggcmVnaXN0ZXIgbG9uZyAqIHB3ICkKLXsKLSAgICByZWdpc3RlciBpbnQgYTsKLQotICAgIGFzbQotICAgIHsKLWxvb3A6Ci0KLSAgICBsd2FyeCAgIGEsIDAsIHB3Ci0gICAgYWRkaSAgICBhLCBhLCAxCi0gICAgc3R3Y3guICBhLCAwLCBwdwotICAgIGJuZS0gICAgbG9vcAotICAgIH0KLX0KLQotaW5saW5lIGxvbmcgYXRvbWljX2RlY3JlbWVudCggcmVnaXN0ZXIgbG9uZyAqIHB3ICkKLXsKLSAgICByZWdpc3RlciBpbnQgYTsKLQotICAgIGFzbQotICAgIHsKLSAgICBzeW5jCi0KLWxvb3A6Ci0KLSAgICBsd2FyeCAgIGEsIDAsIHB3Ci0gICAgYWRkaSAgICBhLCBhLCAtMQotICAgIHN0d2N4LiAgYSwgMCwgcHcKLSAgICBibmUtICAgIGxvb3AKLQotICAgIGlzeW5jCi0gICAgfQotCi0gICAgcmV0dXJuIGE7Ci19Ci0KLWlubGluZSBsb25nIGF0b21pY19jb25kaXRpb25hbF9pbmNyZW1lbnQoIHJlZ2lzdGVyIGxvbmcgKiBwdyApCi17Ci0gICAgcmVnaXN0ZXIgaW50IGE7Ci0KLSAgICBhc20KLSAgICB7Ci1sb29wOgotCi0gICAgbHdhcnggICBhLCAwLCBwdwotICAgIGNtcHdpICAgYSwgMAotICAgIGJlcSAgICAgc3RvcmUKLQotICAgIGFkZGkgICAgYSwgYSwgMQotCi1zdG9yZToKLQotICAgIHN0d2N4LiAgYSwgMCwgcHcKLSAgICBibmUtICAgIGxvb3AKLSAgICB9Ci0KLSAgICByZXR1cm4gYTsKLX0KLQotY2xhc3Mgc3BfY291bnRlZF9iYXNlCi17Ci1wcml2YXRlOgotCi0gICAgc3BfY291bnRlZF9iYXNlKCBzcF9jb3VudGVkX2Jhc2UgY29uc3QgJiApOwotICAgIHNwX2NvdW50ZWRfYmFzZSAmIG9wZXJhdG9yPSAoIHNwX2NvdW50ZWRfYmFzZSBjb25zdCAmICk7Ci0KLSAgICBsb25nIHVzZV9jb3VudF87ICAgICAgICAvLyAjc2hhcmVkCi0gICAgbG9uZyB3ZWFrX2NvdW50XzsgICAgICAgLy8gI3dlYWsgKyAoI3NoYXJlZCAhPSAwKQotCi1wdWJsaWM6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UoKTogdXNlX2NvdW50XyggMSApLCB3ZWFrX2NvdW50XyggMSApCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfnNwX2NvdW50ZWRfYmFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgfQotCi0gICAgLy8gZGlzcG9zZSgpIGlzIGNhbGxlZCB3aGVuIHVzZV9jb3VudF8gZHJvcHMgdG8gemVybywgdG8gcmVsZWFzZQotICAgIC8vIHRoZSByZXNvdXJjZXMgbWFuYWdlZCBieSAqdGhpcy4KLQotICAgIHZpcnR1YWwgdm9pZCBkaXNwb3NlKCkgPSAwOyAvLyBub3Rocm93Ci0KLSAgICAvLyBkZXN0cm95KCkgaXMgY2FsbGVkIHdoZW4gd2Vha19jb3VudF8gZHJvcHMgdG8gemVyby4KLQotICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgZGVsZXRlIHRoaXM7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkICogZ2V0X2RlbGV0ZXIoIHNwX3R5cGVpbmZvIGNvbnN0ICYgdGkgKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkICogZ2V0X3VudHlwZWRfZGVsZXRlcigpID0gMDsKLQotICAgIHZvaWQgYWRkX3JlZl9jb3B5KCkKLSAgICB7Ci0gICAgICAgIGF0b21pY19pbmNyZW1lbnQoICZ1c2VfY291bnRfICk7Ci0gICAgfQotCi0gICAgYm9vbCBhZGRfcmVmX2xvY2soKSAvLyB0cnVlIG9uIHN1Y2Nlc3MKLSAgICB7Ci0gICAgICAgIHJldHVybiBhdG9taWNfY29uZGl0aW9uYWxfaW5jcmVtZW50KCAmdXNlX2NvdW50XyApICE9IDA7Ci0gICAgfQotCi0gICAgdm9pZCByZWxlYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgaWYoIGF0b21pY19kZWNyZW1lbnQoICZ1c2VfY291bnRfICkgPT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRpc3Bvc2UoKTsKLSAgICAgICAgICAgIHdlYWtfcmVsZWFzZSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCB3ZWFrX2FkZF9yZWYoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBhdG9taWNfaW5jcmVtZW50KCAmd2Vha19jb3VudF8gKTsKLSAgICB9Ci0KLSAgICB2b2lkIHdlYWtfcmVsZWFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGlmKCBhdG9taWNfZGVjcmVtZW50KCAmd2Vha19jb3VudF8gKSA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgZGVzdHJveSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbG9uZyB1c2VfY291bnQoKSBjb25zdCAvLyBub3Rocm93Ci0gICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8bG9uZyBjb25zdCB2b2xhdGlsZSAmPiggdXNlX2NvdW50XyApOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfQ1dfUFBDX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9nY2NfaWE2NC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX2djY19pYTY0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGFmYzI4Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX2djY19pYTY0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1OCArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX0dDQ19JQTY0X0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9HQ0NfSUE2NF9IUFBfSU5DTFVERUQKLQotLy8KLS8vICBkZXRhaWwvc3BfY291bnRlZF9iYXNlX2djY19pYTY0LmhwcCAtIGcrKyBvbiBJQTY0Ci0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiwgMjAwMyBQZXRlciBEaW1vdiBhbmQgTXVsdGkgTWVkaWEgTHRkLgotLy8gIENvcHlyaWdodCAyMDA0LTIwMDYgUGV0ZXIgRGltb3YKLS8vICBDb3B5cmlnaHQgMjAwNSBCZW4gSHV0Y2hpbmdzCi0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vCi0vLyAgTG9jay1mcmVlIGFsZ29yaXRobSBieSBBbGV4YW5kZXIgVGVyZWtob3YKLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvc3BfdHlwZWluZm8uaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi1pbmxpbmUgdm9pZCBhdG9taWNfaW5jcmVtZW50KCBpbnQgKiBwdyApCi17Ci0gICAgLy8gKysqcHc7Ci0KLSAgICBpbnQgdG1wOwotCi0gICAgLy8gTm8gYmFycmllciBpcyByZXF1aXJlZCBoZXJlIGJ1dCBmZXRjaGFkZCBhbHdheXMgaGFzIGFuIGFjcXVpcmUgb3IKLSAgICAvLyByZWxlYXNlIGJhcnJpZXIgYXNzb2NpYXRlZCB3aXRoIGl0LiAgV2UgY2hvb3NlIHJlbGVhc2UgYXMgaXQgc2hvdWxkIGJlCi0gICAgLy8gY2hlYXBlci4KLSAgICBfX2FzbV9fICgiZmV0Y2hhZGQ0LnJlbCAlMD0lMSwxIiA6Ci0gICAgICAgICAiPXIiKHRtcCksICI9bSIoKnB3KSA6Ci0gICAgICAgICAibSIoICpwdyApKTsKLX0KLQotaW5saW5lIGludCBhdG9taWNfZGVjcmVtZW50KCBpbnQgKiBwdyApCi17Ci0gICAgLy8gcmV0dXJuIC0tKnB3OwotCi0gICAgaW50IHJ2OwotCi0gICAgX19hc21fXyAoIiAgICAgZmV0Y2hhZGQ0LnJlbCAlMD0lMSwtMSA7OyBcbiIKLSAgICAgICAgICAgICAiICAgICBjbXAuZXEgICAgICAgIHA3LHAwPTEsJTAgOzsgXG4iCi0gICAgICAgICAgICAgIihwNykgbGQ0LmFjcSAgICAgICAlMD0lMSAgICAiIDoKLSAgICAgICAgICAgICAiPSZyIihydiksICI9bSIoKnB3KSA6Ci0gICAgICAgICAgICAgIm0iKCAqcHcgKSA6Ci0gICAgICAgICAgICAgInA3Iik7Ci0KLSAgICByZXR1cm4gcnY7Ci19Ci0KLWlubGluZSBpbnQgYXRvbWljX2NvbmRpdGlvbmFsX2luY3JlbWVudCggaW50ICogcHcgKQotewotICAgIC8vIGlmKCAqcHcgIT0gMCApICsrKnB3OwotICAgIC8vIHJldHVybiAqcHc7Ci0KLSAgICBpbnQgcnYsIHRtcCwgdG1wMjsKLQotICAgIF9fYXNtX18gKCIwOiAgIGxkNCAgICAgICAgICAlMD0lMyAgICAgICAgICAgOzsgXG4iCi0gICAgICAgICAiICAgICBjbXAuZXEgICAgICAgcDcscDA9MCwlMCAgICAgICAgOzsgXG4iCi0gICAgICAgICAiKHA3KSBici5jb25kLnNwbnQgMWYgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICAiICAgICBtb3YgICAgICAgICAgYXIuY2N2PSUwICAgICAgICAgXG4iCi0gICAgICAgICAiICAgICBhZGQgICAgICAgICAgJTE9MSwlMCAgICAgICAgICAgOzsgXG4iCi0gICAgICAgICAiICAgICBjbXB4Y2hnNC5hY3EgJTI9JTMsJTEsYXIuY2N2IDs7IFxuIgotICAgICAgICAgIiAgICAgY21wLm5lICAgICAgIHA3LHAwPSUwLCUyICAgICAgIDs7IFxuIgotICAgICAgICAgIihwNykgYnIuY29uZC5zcG50IDBiICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAgIiAgICAgbW92ICAgICAgICAgICUwPSUxICAgICAgICAgICAgIDs7IFxuIgotICAgICAgICAgIjE6IiA6IAotICAgICAgICAgIj0mciIocnYpLCAiPSZyIih0bXApLCAiPSZyIih0bXAyKSwgIj1tIigqcHcpIDoKLSAgICAgICAgICJtIiggKnB3ICkgOgotICAgICAgICAgImFyLmNjdiIsICJwNyIpOwotCi0gICAgcmV0dXJuIHJ2OwotfQotCi1jbGFzcyBzcF9jb3VudGVkX2Jhc2UKLXsKLXByaXZhdGU6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UoIHNwX2NvdW50ZWRfYmFzZSBjb25zdCAmICk7Ci0gICAgc3BfY291bnRlZF9iYXNlICYgb3BlcmF0b3I9ICggc3BfY291bnRlZF9iYXNlIGNvbnN0ICYgKTsKLQotICAgIGludCB1c2VfY291bnRfOyAgICAgICAgLy8gI3NoYXJlZAotICAgIGludCB3ZWFrX2NvdW50XzsgICAgICAgLy8gI3dlYWsgKyAoI3NoYXJlZCAhPSAwKQotCi1wdWJsaWM6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UoKTogdXNlX2NvdW50XyggMSApLCB3ZWFrX2NvdW50XyggMSApCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfnNwX2NvdW50ZWRfYmFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgfQotCi0gICAgLy8gZGlzcG9zZSgpIGlzIGNhbGxlZCB3aGVuIHVzZV9jb3VudF8gZHJvcHMgdG8gemVybywgdG8gcmVsZWFzZQotICAgIC8vIHRoZSByZXNvdXJjZXMgbWFuYWdlZCBieSAqdGhpcy4KLQotICAgIHZpcnR1YWwgdm9pZCBkaXNwb3NlKCkgPSAwOyAvLyBub3Rocm93Ci0KLSAgICAvLyBkZXN0cm95KCkgaXMgY2FsbGVkIHdoZW4gd2Vha19jb3VudF8gZHJvcHMgdG8gemVyby4KLQotICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgZGVsZXRlIHRoaXM7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkICogZ2V0X2RlbGV0ZXIoIHNwX3R5cGVpbmZvIGNvbnN0ICYgdGkgKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkICogZ2V0X3VudHlwZWRfZGVsZXRlcigpID0gMDsKLQotICAgIHZvaWQgYWRkX3JlZl9jb3B5KCkKLSAgICB7Ci0gICAgICAgIGF0b21pY19pbmNyZW1lbnQoICZ1c2VfY291bnRfICk7Ci0gICAgfQotCi0gICAgYm9vbCBhZGRfcmVmX2xvY2soKSAvLyB0cnVlIG9uIHN1Y2Nlc3MKLSAgICB7Ci0gICAgICAgIHJldHVybiBhdG9taWNfY29uZGl0aW9uYWxfaW5jcmVtZW50KCAmdXNlX2NvdW50XyApICE9IDA7Ci0gICAgfQotCi0gICAgdm9pZCByZWxlYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgaWYoIGF0b21pY19kZWNyZW1lbnQoICZ1c2VfY291bnRfICkgPT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRpc3Bvc2UoKTsKLSAgICAgICAgICAgIHdlYWtfcmVsZWFzZSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCB3ZWFrX2FkZF9yZWYoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBhdG9taWNfaW5jcmVtZW50KCAmd2Vha19jb3VudF8gKTsKLSAgICB9Ci0KLSAgICB2b2lkIHdlYWtfcmVsZWFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGlmKCBhdG9taWNfZGVjcmVtZW50KCAmd2Vha19jb3VudF8gKSA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgZGVzdHJveSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbG9uZyB1c2VfY291bnQoKSBjb25zdCAvLyBub3Rocm93Ci0gICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50IGNvbnN0IHZvbGF0aWxlICY+KCB1c2VfY291bnRfICk7IC8vIFRPRE8gdXNlIGxkLmFjcSBoZXJlCi0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9HQ0NfSUE2NF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfZ2NjX21pcHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9nY2NfbWlwcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzYmUxZGIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9nY2NfbWlwcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODIgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX0dDQ19NSVBTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX0dDQ19NSVBTX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICBkZXRhaWwvc3BfY291bnRlZF9iYXNlX2djY19taXBzLmhwcCAtIGcrKyBvbiBNSVBTCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwOSwgU3BpcmVudCBDb21tdW5pY2F0aW9ucywgSW5jLgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLwotLy8gIExvY2stZnJlZSBhbGdvcml0aG0gYnkgQWxleGFuZGVyIFRlcmVraG92Ci0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3NwX3R5cGVpbmZvLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotaW5saW5lIHZvaWQgYXRvbWljX2luY3JlbWVudCggaW50ICogcHcgKQotewotICAgIC8vICsrKnB3OwotCi0gICAgaW50IHRtcDsKLQotICAgIF9fYXNtX18gX192b2xhdGlsZV9fCi0gICAgKAotICAgICAgICAiMDpcblx0IgotICAgICAgICAiLnNldCBwdXNoXG5cdCIKLSAgICAgICAgIi5zZXQgbWlwczJcblx0IgotICAgICAgICAibGwgJTAsICUxXG5cdCIKLSAgICAgICAgImFkZGl1ICUwLCAxXG5cdCIKLSAgICAgICAgInNjICUwLCAlMVxuXHQiCi0gICAgICAgICIuc2V0IHBvcFxuXHQiCi0gICAgICAgICJiZXF6ICUwLCAwYiI6Ci0gICAgICAgICI9JnIiKCB0bXAgKSwgIj1tIiggKnB3ICk6Ci0gICAgICAgICJtIiggKnB3ICkKLSAgICApOwotfQotCi1pbmxpbmUgaW50IGF0b21pY19kZWNyZW1lbnQoIGludCAqIHB3ICkKLXsKLSAgICAvLyByZXR1cm4gLS0qcHc7Ci0KLSAgICBpbnQgcnYsIHRtcDsKLQotICAgIF9fYXNtX18gX192b2xhdGlsZV9fCi0gICAgKAotICAgICAgICAiMDpcblx0IgotICAgICAgICAiLnNldCBwdXNoXG5cdCIKLSAgICAgICAgIi5zZXQgbWlwczJcblx0IgotICAgICAgICAibGwgJTEsICUyXG5cdCIKLSAgICAgICAgImFkZGl1ICUwLCAlMSwgLTFcblx0IgotICAgICAgICAic2MgJTAsICUyXG5cdCIKLSAgICAgICAgIi5zZXQgcG9wXG5cdCIKLSAgICAgICAgImJlcXogJTAsIDBiXG5cdCIKLSAgICAgICAgImFkZGl1ICUwLCAlMSwgLTEiOgotICAgICAgICAiPSZyIiggcnYgKSwgIj0mciIoIHRtcCApLCAiPW0iKCAqcHcgKToKLSAgICAgICAgIm0iKCAqcHcgKToKLSAgICAgICAgIm1lbW9yeSIKLSAgICApOwotCi0gICAgcmV0dXJuIHJ2OwotfQotCi1pbmxpbmUgaW50IGF0b21pY19jb25kaXRpb25hbF9pbmNyZW1lbnQoIGludCAqIHB3ICkKLXsKLSAgICAvLyBpZiggKnB3ICE9IDAgKSArKypwdzsKLSAgICAvLyByZXR1cm4gKnB3OwotCi0gICAgaW50IHJ2LCB0bXA7Ci0KLSAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXwotICAgICgKLSAgICAgICAgIjA6XG5cdCIKLSAgICAgICAgIi5zZXQgcHVzaFxuXHQiCi0gICAgICAgICIuc2V0IG1pcHMyXG5cdCIKLSAgICAgICAgImxsICUwLCAlMlxuXHQiCi0gICAgICAgICJiZXF6ICUwLCAxZlxuXHQiCi0gICAgICAgICJhZGRpdSAlMSwgJTAsIDFcblx0IgotICAgICAgICAic2MgJTEsICUyXG5cdCIKLSAgICAgICAgIi5zZXQgcG9wXG5cdCIKLSAgICAgICAgImJlcXogJTEsIDBiXG5cdCIKLSAgICAgICAgImFkZGl1ICUwLCAlMCwgMVxuXHQiCi0gICAgICAgICIxOiI6Ci0gICAgICAgICI9JnIiKCBydiApLCAiPSZyIiggdG1wICksICI9bSIoICpwdyApOgotICAgICAgICAibSIoICpwdyApOgotICAgICAgICAibWVtb3J5IgotICAgICk7Ci0KLSAgICByZXR1cm4gcnY7Ci19Ci0KLWNsYXNzIHNwX2NvdW50ZWRfYmFzZQotewotcHJpdmF0ZToKLQotICAgIHNwX2NvdW50ZWRfYmFzZSggc3BfY291bnRlZF9iYXNlIGNvbnN0ICYgKTsKLSAgICBzcF9jb3VudGVkX2Jhc2UgJiBvcGVyYXRvcj0gKCBzcF9jb3VudGVkX2Jhc2UgY29uc3QgJiApOwotCi0gICAgaW50IHVzZV9jb3VudF87ICAgICAgICAvLyAjc2hhcmVkCi0gICAgaW50IHdlYWtfY291bnRfOyAgICAgICAvLyAjd2VhayArICgjc2hhcmVkICE9IDApCi0KLXB1YmxpYzoKLQotICAgIHNwX2NvdW50ZWRfYmFzZSgpOiB1c2VfY291bnRfKCAxICksIHdlYWtfY291bnRfKCAxICkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+c3BfY291bnRlZF9iYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICB9Ci0KLSAgICAvLyBkaXNwb3NlKCkgaXMgY2FsbGVkIHdoZW4gdXNlX2NvdW50XyBkcm9wcyB0byB6ZXJvLCB0byByZWxlYXNlCi0gICAgLy8gdGhlIHJlc291cmNlcyBtYW5hZ2VkIGJ5ICp0aGlzLgotCi0gICAgdmlydHVhbCB2b2lkIGRpc3Bvc2UoKSA9IDA7IC8vIG5vdGhyb3cKLQotICAgIC8vIGRlc3Ryb3koKSBpcyBjYWxsZWQgd2hlbiB3ZWFrX2NvdW50XyBkcm9wcyB0byB6ZXJvLgotCi0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBkZWxldGUgdGhpczsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfZGVsZXRlciggc3BfdHlwZWluZm8gY29uc3QgJiB0aSApID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfdW50eXBlZF9kZWxldGVyKCkgPSAwOwotCi0gICAgdm9pZCBhZGRfcmVmX2NvcHkoKQotICAgIHsKLSAgICAgICAgYXRvbWljX2luY3JlbWVudCggJnVzZV9jb3VudF8gKTsKLSAgICB9Ci0KLSAgICBib29sIGFkZF9yZWZfbG9jaygpIC8vIHRydWUgb24gc3VjY2VzcwotICAgIHsKLSAgICAgICAgcmV0dXJuIGF0b21pY19jb25kaXRpb25hbF9pbmNyZW1lbnQoICZ1c2VfY291bnRfICkgIT0gMDsKLSAgICB9Ci0KLSAgICB2b2lkIHJlbGVhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBpZiggYXRvbWljX2RlY3JlbWVudCggJnVzZV9jb3VudF8gKSA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgZGlzcG9zZSgpOwotICAgICAgICAgICAgd2Vha19yZWxlYXNlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHdlYWtfYWRkX3JlZigpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGF0b21pY19pbmNyZW1lbnQoICZ3ZWFrX2NvdW50XyApOwotICAgIH0KLQotICAgIHZvaWQgd2Vha19yZWxlYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgaWYoIGF0b21pY19kZWNyZW1lbnQoICZ3ZWFrX2NvdW50XyApID09IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkZXN0cm95KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBsb25nIHVzZV9jb3VudCgpIGNvbnN0IC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQgY29uc3Qgdm9sYXRpbGUgJj4oIHVzZV9jb3VudF8gKTsKLSAgICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfR0NDX01JUFNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX2djY19wcGMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9nY2NfcHBjLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjFiNmVkZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX2djY19wcGMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTgyICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfR0NDX1BQQ19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfR0NDX1BQQ19IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9nY2NfcHBjLmhwcCAtIGcrKyBvbiBQb3dlclBDCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiwgMjAwMyBQZXRlciBEaW1vdiBhbmQgTXVsdGkgTWVkaWEgTHRkLgotLy8gIENvcHlyaWdodCAyMDA0LTIwMDUgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8KLS8vICBMb2NrLWZyZWUgYWxnb3JpdGhtIGJ5IEFsZXhhbmRlciBUZXJla2hvdgotLy8KLS8vICBUaGFua3MgdG8gQmVuIEhpdGNoaW5ncyBmb3IgdGhlICN3ZWFrICsgKCNzaGFyZWQgIT0gMCkKLS8vICBmb3JtdWxhdGlvbgotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9zcF90eXBlaW5mby5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLWlubGluZSB2b2lkIGF0b21pY19pbmNyZW1lbnQoIGludCAqIHB3ICkKLXsKLSAgICAvLyArKypwdzsKLQotICAgIGludCB0bXA7Ci0KLSAgICBfX2FzbV9fCi0gICAgKAotICAgICAgICAiMDpcblx0IgotICAgICAgICAibHdhcnggJTEsIDAsICUyXG5cdCIKLSAgICAgICAgImFkZGkgJTEsICUxLCAxXG5cdCIKLSAgICAgICAgInN0d2N4LiAlMSwgMCwgJTJcblx0IgotICAgICAgICAiYm5lLSAwYiI6Ci0KLSAgICAgICAgIj1tIiggKnB3ICksICI9JmIiKCB0bXAgKToKLSAgICAgICAgInIiKCBwdyApLCAibSIoICpwdyApOgotICAgICAgICAiY2MiCi0gICAgKTsKLX0KLQotaW5saW5lIGludCBhdG9taWNfZGVjcmVtZW50KCBpbnQgKiBwdyApCi17Ci0gICAgLy8gcmV0dXJuIC0tKnB3OwotCi0gICAgaW50IHJ2OwotCi0gICAgX19hc21fXyBfX3ZvbGF0aWxlX18KLSAgICAoCi0gICAgICAgICJzeW5jXG5cdCIKLSAgICAgICAgIjA6XG5cdCIKLSAgICAgICAgImx3YXJ4ICUxLCAwLCAlMlxuXHQiCi0gICAgICAgICJhZGRpICUxLCAlMSwgLTFcblx0IgotICAgICAgICAic3R3Y3guICUxLCAwLCAlMlxuXHQiCi0gICAgICAgICJibmUtIDBiXG5cdCIKLSAgICAgICAgImlzeW5jIjoKLQotICAgICAgICAiPW0iKCAqcHcgKSwgIj0mYiIoIHJ2ICk6Ci0gICAgICAgICJyIiggcHcgKSwgIm0iKCAqcHcgKToKLSAgICAgICAgIm1lbW9yeSIsICJjYyIKLSAgICApOwotCi0gICAgcmV0dXJuIHJ2OwotfQotCi1pbmxpbmUgaW50IGF0b21pY19jb25kaXRpb25hbF9pbmNyZW1lbnQoIGludCAqIHB3ICkKLXsKLSAgICAvLyBpZiggKnB3ICE9IDAgKSArKypwdzsKLSAgICAvLyByZXR1cm4gKnB3OwotCi0gICAgaW50IHJ2OwotCi0gICAgX19hc21fXwotICAgICgKLSAgICAgICAgIjA6XG5cdCIKLSAgICAgICAgImx3YXJ4ICUxLCAwLCAlMlxuXHQiCi0gICAgICAgICJjbXB3aSAlMSwgMFxuXHQiCi0gICAgICAgICJiZXEgMWZcblx0IgotICAgICAgICAiYWRkaSAlMSwgJTEsIDFcblx0IgotICAgICAgICAiMTpcblx0IgotICAgICAgICAic3R3Y3guICUxLCAwLCAlMlxuXHQiCi0gICAgICAgICJibmUtIDBiIjoKLQotICAgICAgICAiPW0iKCAqcHcgKSwgIj0mYiIoIHJ2ICk6Ci0gICAgICAgICJyIiggcHcgKSwgIm0iKCAqcHcgKToKLSAgICAgICAgImNjIgotICAgICk7Ci0KLSAgICByZXR1cm4gcnY7Ci19Ci0KLWNsYXNzIHNwX2NvdW50ZWRfYmFzZQotewotcHJpdmF0ZToKLQotICAgIHNwX2NvdW50ZWRfYmFzZSggc3BfY291bnRlZF9iYXNlIGNvbnN0ICYgKTsKLSAgICBzcF9jb3VudGVkX2Jhc2UgJiBvcGVyYXRvcj0gKCBzcF9jb3VudGVkX2Jhc2UgY29uc3QgJiApOwotCi0gICAgaW50IHVzZV9jb3VudF87ICAgICAgICAvLyAjc2hhcmVkCi0gICAgaW50IHdlYWtfY291bnRfOyAgICAgICAvLyAjd2VhayArICgjc2hhcmVkICE9IDApCi0KLXB1YmxpYzoKLQotICAgIHNwX2NvdW50ZWRfYmFzZSgpOiB1c2VfY291bnRfKCAxICksIHdlYWtfY291bnRfKCAxICkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+c3BfY291bnRlZF9iYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICB9Ci0KLSAgICAvLyBkaXNwb3NlKCkgaXMgY2FsbGVkIHdoZW4gdXNlX2NvdW50XyBkcm9wcyB0byB6ZXJvLCB0byByZWxlYXNlCi0gICAgLy8gdGhlIHJlc291cmNlcyBtYW5hZ2VkIGJ5ICp0aGlzLgotCi0gICAgdmlydHVhbCB2b2lkIGRpc3Bvc2UoKSA9IDA7IC8vIG5vdGhyb3cKLQotICAgIC8vIGRlc3Ryb3koKSBpcyBjYWxsZWQgd2hlbiB3ZWFrX2NvdW50XyBkcm9wcyB0byB6ZXJvLgotCi0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBkZWxldGUgdGhpczsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfZGVsZXRlciggc3BfdHlwZWluZm8gY29uc3QgJiB0aSApID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfdW50eXBlZF9kZWxldGVyKCkgPSAwOwotCi0gICAgdm9pZCBhZGRfcmVmX2NvcHkoKQotICAgIHsKLSAgICAgICAgYXRvbWljX2luY3JlbWVudCggJnVzZV9jb3VudF8gKTsKLSAgICB9Ci0KLSAgICBib29sIGFkZF9yZWZfbG9jaygpIC8vIHRydWUgb24gc3VjY2VzcwotICAgIHsKLSAgICAgICAgcmV0dXJuIGF0b21pY19jb25kaXRpb25hbF9pbmNyZW1lbnQoICZ1c2VfY291bnRfICkgIT0gMDsKLSAgICB9Ci0KLSAgICB2b2lkIHJlbGVhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBpZiggYXRvbWljX2RlY3JlbWVudCggJnVzZV9jb3VudF8gKSA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgZGlzcG9zZSgpOwotICAgICAgICAgICAgd2Vha19yZWxlYXNlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHdlYWtfYWRkX3JlZigpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGF0b21pY19pbmNyZW1lbnQoICZ3ZWFrX2NvdW50XyApOwotICAgIH0KLQotICAgIHZvaWQgd2Vha19yZWxlYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgaWYoIGF0b21pY19kZWNyZW1lbnQoICZ3ZWFrX2NvdW50XyApID09IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkZXN0cm95KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBsb25nIHVzZV9jb3VudCgpIGNvbnN0IC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQgY29uc3Qgdm9sYXRpbGUgJj4oIHVzZV9jb3VudF8gKTsKLSAgICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX0dDQ19QUENfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX2djY19zcGFyYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX2djY19zcGFyYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiYmFjYzcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9nY2Nfc3BhcmMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTY3ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfR0NDX1NQQVJDX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9HQ0NfU1BBUkNfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLyAgZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9nY2Nfc3BhcmMuaHBwIC0gZysrIG9uIFNwYXJjIFY4KwotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDYgUGlvdHIgV3lkZXJza2kKLS8vICBDb3B5cmlnaHQgKGMpIDIwMDYgVG9tYXMgUHV2ZXJsZQotLy8gIENvcHlyaWdodCAoYykgMjAwNiBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0vLwotLy8gIFRoYW5rcyB0byBNaWNoYWVsIHZhbiBkZXIgV2VzdGh1aXplbgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3NwX3R5cGVpbmZvLmhwcD4KLSNpbmNsdWRlIDxpbnR0eXBlcy5oPiAvLyBpbnQzMl90Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLWlubGluZSBpbnQzMl90IGNvbXBhcmVfYW5kX3N3YXAoIGludDMyX3QgKiBkZXN0XywgaW50MzJfdCBjb21wYXJlXywgaW50MzJfdCBzd2FwXyApCi17Ci0gICAgX19hc21fXyBfX3ZvbGF0aWxlX18oICJjYXMgWyUxXSwgJTIsICUwIgotICAgICAgICAgICAgICAgICAgICAgICAgOiAiK3IiIChzd2FwXykKLSAgICAgICAgICAgICAgICAgICAgICAgIDogInIiIChkZXN0XyksICJyIiAoY29tcGFyZV8pCi0gICAgICAgICAgICAgICAgICAgICAgICA6ICJtZW1vcnkiICk7Ci0KLSAgICByZXR1cm4gc3dhcF87Ci19Ci0KLWlubGluZSBpbnQzMl90IGF0b21pY19mZXRjaF9hbmRfYWRkKCBpbnQzMl90ICogcHcsIGludDMyX3QgZHYgKQotewotICAgIC8vIGxvbmcgciA9ICpwdzsKLSAgICAvLyAqcHcgKz0gZHY7Ci0gICAgLy8gcmV0dXJuIHI7Ci0KLSAgICBmb3IoIDs7ICkKLSAgICB7Ci0gICAgICAgIGludDMyX3QgciA9ICpwdzsKLQotICAgICAgICBpZiggX19idWlsdGluX2V4cGVjdCgoY29tcGFyZV9hbmRfc3dhcChwdywgciwgciArIGR2KSA9PSByKSwgMSkgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcjsKLSAgICAgICAgfQotICAgIH0KLX0KLQotaW5saW5lIHZvaWQgYXRvbWljX2luY3JlbWVudCggaW50MzJfdCAqIHB3ICkKLXsKLSAgICBhdG9taWNfZmV0Y2hfYW5kX2FkZCggcHcsIDEgKTsKLX0KLQotaW5saW5lIGludDMyX3QgYXRvbWljX2RlY3JlbWVudCggaW50MzJfdCAqIHB3ICkKLXsKLSAgICByZXR1cm4gYXRvbWljX2ZldGNoX2FuZF9hZGQoIHB3LCAtMSApOwotfQotCi1pbmxpbmUgaW50MzJfdCBhdG9taWNfY29uZGl0aW9uYWxfaW5jcmVtZW50KCBpbnQzMl90ICogcHcgKQotewotICAgIC8vIGxvbmcgciA9ICpwdzsKLSAgICAvLyBpZiggciAhPSAwICkgKysqcHc7Ci0gICAgLy8gcmV0dXJuIHI7Ci0KLSAgICBmb3IoIDs7ICkKLSAgICB7Ci0gICAgICAgIGludDMyX3QgciA9ICpwdzsKLQotICAgICAgICBpZiggciA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHI7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiggX19idWlsdGluX2V4cGVjdCggKCBjb21wYXJlX2FuZF9zd2FwKCBwdywgciwgciArIDEgKSA9PSByICksIDEgKSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiByOwotICAgICAgICB9Ci0gICAgfSAgICAKLX0KLQotY2xhc3Mgc3BfY291bnRlZF9iYXNlCi17Ci1wcml2YXRlOgotCi0gICAgc3BfY291bnRlZF9iYXNlKCBzcF9jb3VudGVkX2Jhc2UgY29uc3QgJiApOwotICAgIHNwX2NvdW50ZWRfYmFzZSAmIG9wZXJhdG9yPSAoIHNwX2NvdW50ZWRfYmFzZSBjb25zdCAmICk7Ci0KLSAgICBpbnQzMl90IHVzZV9jb3VudF87ICAgICAgICAvLyAjc2hhcmVkCi0gICAgaW50MzJfdCB3ZWFrX2NvdW50XzsgICAgICAgLy8gI3dlYWsgKyAoI3NoYXJlZCAhPSAwKQotCi1wdWJsaWM6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UoKTogdXNlX2NvdW50XyggMSApLCB3ZWFrX2NvdW50XyggMSApCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfnNwX2NvdW50ZWRfYmFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgfQotCi0gICAgLy8gZGlzcG9zZSgpIGlzIGNhbGxlZCB3aGVuIHVzZV9jb3VudF8gZHJvcHMgdG8gemVybywgdG8gcmVsZWFzZQotICAgIC8vIHRoZSByZXNvdXJjZXMgbWFuYWdlZCBieSAqdGhpcy4KLQotICAgIHZpcnR1YWwgdm9pZCBkaXNwb3NlKCkgPSAwOyAvLyBub3Rocm93Ci0KLSAgICAvLyBkZXN0cm95KCkgaXMgY2FsbGVkIHdoZW4gd2Vha19jb3VudF8gZHJvcHMgdG8gemVyby4KLQotICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgZGVsZXRlIHRoaXM7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkICogZ2V0X2RlbGV0ZXIoIHNwX3R5cGVpbmZvIGNvbnN0ICYgdGkgKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkICogZ2V0X3VudHlwZWRfZGVsZXRlcigpID0gMDsKLQotICAgIHZvaWQgYWRkX3JlZl9jb3B5KCkKLSAgICB7Ci0gICAgICAgIGF0b21pY19pbmNyZW1lbnQoICZ1c2VfY291bnRfICk7Ci0gICAgfQotCi0gICAgYm9vbCBhZGRfcmVmX2xvY2soKSAvLyB0cnVlIG9uIHN1Y2Nlc3MKLSAgICB7Ci0gICAgICAgIHJldHVybiBhdG9taWNfY29uZGl0aW9uYWxfaW5jcmVtZW50KCAmdXNlX2NvdW50XyApICE9IDA7Ci0gICAgfQotCi0gICAgdm9pZCByZWxlYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgaWYoIGF0b21pY19kZWNyZW1lbnQoICZ1c2VfY291bnRfICkgPT0gMSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRpc3Bvc2UoKTsKLSAgICAgICAgICAgIHdlYWtfcmVsZWFzZSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCB3ZWFrX2FkZF9yZWYoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBhdG9taWNfaW5jcmVtZW50KCAmd2Vha19jb3VudF8gKTsKLSAgICB9Ci0KLSAgICB2b2lkIHdlYWtfcmVsZWFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGlmKCBhdG9taWNfZGVjcmVtZW50KCAmd2Vha19jb3VudF8gKSA9PSAxICkKLSAgICAgICAgewotICAgICAgICAgICAgZGVzdHJveSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbG9uZyB1c2VfY291bnQoKSBjb25zdCAvLyBub3Rocm93Ci0gICAgewotICAgICAgICByZXR1cm4gY29uc3RfY2FzdDwgaW50MzJfdCBjb25zdCB2b2xhdGlsZSAmID4oIHVzZV9jb3VudF8gKTsKLSAgICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX0dDQ19TUEFSQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfZ2NjX3g4Ni5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX2djY194ODYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Zjc5YzU3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfZ2NjX3g4Ni5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNzQgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9HQ0NfWDg2X0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9HQ0NfWDg2X0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICBkZXRhaWwvc3BfY291bnRlZF9iYXNlX2djY194ODYuaHBwIC0gZysrIG9uIDQ4Nisgb3IgQU1ENjQKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyLCAyMDAzIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLyAgQ29weXJpZ2h0IDIwMDQtMjAwNSBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLwotLy8gIExvY2stZnJlZSBhbGdvcml0aG0gYnkgQWxleGFuZGVyIFRlcmVraG92Ci0vLwotLy8gIFRoYW5rcyB0byBCZW4gSGl0Y2hpbmdzIGZvciB0aGUgI3dlYWsgKyAoI3NoYXJlZCAhPSAwKQotLy8gIGZvcm11bGF0aW9uCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3NwX3R5cGVpbmZvLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotaW5saW5lIGludCBhdG9taWNfZXhjaGFuZ2VfYW5kX2FkZCggaW50ICogcHcsIGludCBkdiApCi17Ci0gICAgLy8gaW50IHIgPSAqcHc7Ci0gICAgLy8gKnB3ICs9IGR2OwotICAgIC8vIHJldHVybiByOwotCi0gICAgaW50IHI7Ci0KLSAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXwotICAgICgKLSAgICAgICAgImxvY2tcblx0IgotICAgICAgICAieGFkZCAlMSwgJTAiOgotICAgICAgICAiPW0iKCAqcHcgKSwgIj1yIiggciApOiAvLyBvdXRwdXRzICglMCwgJTEpCi0gICAgICAgICJtIiggKnB3ICksICIxIiggZHYgKTogLy8gaW5wdXRzICglMiwgJTMgPT0gJTEpCi0gICAgICAgICJtZW1vcnkiLCAiY2MiIC8vIGNsb2JiZXJzCi0gICAgKTsKLQotICAgIHJldHVybiByOwotfQotCi1pbmxpbmUgdm9pZCBhdG9taWNfaW5jcmVtZW50KCBpbnQgKiBwdyApCi17Ci0gICAgLy9hdG9taWNfZXhjaGFuZ2VfYW5kX2FkZCggcHcsIDEgKTsKLQotICAgIF9fYXNtX18KLSAgICAoCi0gICAgICAgICJsb2NrXG5cdCIKLSAgICAgICAgImluY2wgJTAiOgotICAgICAgICAiPW0iKCAqcHcgKTogLy8gb3V0cHV0ICglMCkKLSAgICAgICAgIm0iKCAqcHcgKTogLy8gaW5wdXQgKCUxKQotICAgICAgICAiY2MiIC8vIGNsb2JiZXJzCi0gICAgKTsKLX0KLQotaW5saW5lIGludCBhdG9taWNfY29uZGl0aW9uYWxfaW5jcmVtZW50KCBpbnQgKiBwdyApCi17Ci0gICAgLy8gaW50IHJ2ID0gKnB3OwotICAgIC8vIGlmKCBydiAhPSAwICkgKysqcHc7Ci0gICAgLy8gcmV0dXJuIHJ2OwotCi0gICAgaW50IHJ2LCB0bXA7Ci0KLSAgICBfX2FzbV9fCi0gICAgKAotICAgICAgICAibW92bCAlMCwgJSVlYXhcblx0IgotICAgICAgICAiMDpcblx0IgotICAgICAgICAidGVzdCAlJWVheCwgJSVlYXhcblx0IgotICAgICAgICAiamUgMWZcblx0IgotICAgICAgICAibW92bCAlJWVheCwgJTJcblx0IgotICAgICAgICAiaW5jbCAlMlxuXHQiCi0gICAgICAgICJsb2NrXG5cdCIKLSAgICAgICAgImNtcHhjaGdsICUyLCAlMFxuXHQiCi0gICAgICAgICJqbmUgMGJcblx0IgotICAgICAgICAiMToiOgotICAgICAgICAiPW0iKCAqcHcgKSwgIj0mYSIoIHJ2ICksICI9JnIiKCB0bXAgKTogLy8gb3V0cHV0cyAoJTAsICUxLCAlMikKLSAgICAgICAgIm0iKCAqcHcgKTogLy8gaW5wdXQgKCUzKQotICAgICAgICAiY2MiIC8vIGNsb2JiZXJzCi0gICAgKTsKLQotICAgIHJldHVybiBydjsKLX0KLQotY2xhc3Mgc3BfY291bnRlZF9iYXNlCi17Ci1wcml2YXRlOgotCi0gICAgc3BfY291bnRlZF9iYXNlKCBzcF9jb3VudGVkX2Jhc2UgY29uc3QgJiApOwotICAgIHNwX2NvdW50ZWRfYmFzZSAmIG9wZXJhdG9yPSAoIHNwX2NvdW50ZWRfYmFzZSBjb25zdCAmICk7Ci0KLSAgICBpbnQgdXNlX2NvdW50XzsgICAgICAgIC8vICNzaGFyZWQKLSAgICBpbnQgd2Vha19jb3VudF87ICAgICAgIC8vICN3ZWFrICsgKCNzaGFyZWQgIT0gMCkKLQotcHVibGljOgotCi0gICAgc3BfY291bnRlZF9iYXNlKCk6IHVzZV9jb3VudF8oIDEgKSwgd2Vha19jb3VudF8oIDEgKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5zcF9jb3VudGVkX2Jhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgIH0KLQotICAgIC8vIGRpc3Bvc2UoKSBpcyBjYWxsZWQgd2hlbiB1c2VfY291bnRfIGRyb3BzIHRvIHplcm8sIHRvIHJlbGVhc2UKLSAgICAvLyB0aGUgcmVzb3VyY2VzIG1hbmFnZWQgYnkgKnRoaXMuCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcG9zZSgpID0gMDsgLy8gbm90aHJvdwotCi0gICAgLy8gZGVzdHJveSgpIGlzIGNhbGxlZCB3aGVuIHdlYWtfY291bnRfIGRyb3BzIHRvIHplcm8uCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGRlbGV0ZSB0aGlzOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCAqIGdldF9kZWxldGVyKCBzcF90eXBlaW5mbyBjb25zdCAmIHRpICkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCAqIGdldF91bnR5cGVkX2RlbGV0ZXIoKSA9IDA7Ci0KLSAgICB2b2lkIGFkZF9yZWZfY29weSgpCi0gICAgewotICAgICAgICBhdG9taWNfaW5jcmVtZW50KCAmdXNlX2NvdW50XyApOwotICAgIH0KLQotICAgIGJvb2wgYWRkX3JlZl9sb2NrKCkgLy8gdHJ1ZSBvbiBzdWNjZXNzCi0gICAgewotICAgICAgICByZXR1cm4gYXRvbWljX2NvbmRpdGlvbmFsX2luY3JlbWVudCggJnVzZV9jb3VudF8gKSAhPSAwOwotICAgIH0KLQotICAgIHZvaWQgcmVsZWFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGlmKCBhdG9taWNfZXhjaGFuZ2VfYW5kX2FkZCggJnVzZV9jb3VudF8sIC0xICkgPT0gMSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRpc3Bvc2UoKTsKLSAgICAgICAgICAgIHdlYWtfcmVsZWFzZSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCB3ZWFrX2FkZF9yZWYoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBhdG9taWNfaW5jcmVtZW50KCAmd2Vha19jb3VudF8gKTsKLSAgICB9Ci0KLSAgICB2b2lkIHdlYWtfcmVsZWFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGlmKCBhdG9taWNfZXhjaGFuZ2VfYW5kX2FkZCggJndlYWtfY291bnRfLCAtMSApID09IDEgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkZXN0cm95KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBsb25nIHVzZV9jb3VudCgpIGNvbnN0IC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQgY29uc3Qgdm9sYXRpbGUgJj4oIHVzZV9jb3VudF8gKTsKLSAgICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX0dDQ19YODZfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX250LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfbnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDk2N2JjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfbnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfTlRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX05UX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICBkZXRhaWwvc3BfY291bnRlZF9iYXNlX250LmhwcAotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDIsIDIwMDMgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZC4KLS8vICBDb3B5cmlnaHQgMjAwNC0yMDA1IFBldGVyIERpbW92Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9zcF90eXBlaW5mby5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLWNsYXNzIHNwX2NvdW50ZWRfYmFzZQotewotcHJpdmF0ZToKLQotICAgIHNwX2NvdW50ZWRfYmFzZSggc3BfY291bnRlZF9iYXNlIGNvbnN0ICYgKTsKLSAgICBzcF9jb3VudGVkX2Jhc2UgJiBvcGVyYXRvcj0gKCBzcF9jb3VudGVkX2Jhc2UgY29uc3QgJiApOwotCi0gICAgbG9uZyB1c2VfY291bnRfOyAgICAgICAgLy8gI3NoYXJlZAotICAgIGxvbmcgd2Vha19jb3VudF87ICAgICAgIC8vICN3ZWFrICsgKCNzaGFyZWQgIT0gMCkKLQotcHVibGljOgotCi0gICAgc3BfY291bnRlZF9iYXNlKCk6IHVzZV9jb3VudF8oIDEgKSwgd2Vha19jb3VudF8oIDEgKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5zcF9jb3VudGVkX2Jhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgIH0KLQotICAgIC8vIGRpc3Bvc2UoKSBpcyBjYWxsZWQgd2hlbiB1c2VfY291bnRfIGRyb3BzIHRvIHplcm8sIHRvIHJlbGVhc2UKLSAgICAvLyB0aGUgcmVzb3VyY2VzIG1hbmFnZWQgYnkgKnRoaXMuCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcG9zZSgpID0gMDsgLy8gbm90aHJvdwotCi0gICAgLy8gZGVzdHJveSgpIGlzIGNhbGxlZCB3aGVuIHdlYWtfY291bnRfIGRyb3BzIHRvIHplcm8uCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGRlbGV0ZSB0aGlzOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCAqIGdldF9kZWxldGVyKCBzcF90eXBlaW5mbyBjb25zdCAmIHRpICkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCAqIGdldF91bnR5cGVkX2RlbGV0ZXIoKSA9IDA7Ci0KLSAgICB2b2lkIGFkZF9yZWZfY29weSgpCi0gICAgewotICAgICAgICArK3VzZV9jb3VudF87Ci0gICAgfQotCi0gICAgYm9vbCBhZGRfcmVmX2xvY2soKSAvLyB0cnVlIG9uIHN1Y2Nlc3MKLSAgICB7Ci0gICAgICAgIGlmKCB1c2VfY291bnRfID09IDAgKSByZXR1cm4gZmFsc2U7Ci0gICAgICAgICsrdXNlX2NvdW50XzsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgdm9pZCByZWxlYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgaWYoIC0tdXNlX2NvdW50XyA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgZGlzcG9zZSgpOwotICAgICAgICAgICAgd2Vha19yZWxlYXNlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHdlYWtfYWRkX3JlZigpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgICsrd2Vha19jb3VudF87Ci0gICAgfQotCi0gICAgdm9pZCB3ZWFrX3JlbGVhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBpZiggLS13ZWFrX2NvdW50XyA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgZGVzdHJveSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbG9uZyB1c2VfY291bnQoKSBjb25zdCAvLyBub3Rocm93Ci0gICAgewotICAgICAgICByZXR1cm4gdXNlX2NvdW50XzsKLSAgICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX05UX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9wdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX3B0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDEzMzRkMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX3B0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzNiArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX1BUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9QVF9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9wdC5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyLCAyMDAzIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLyAgQ29weXJpZ2h0IDIwMDQtMjAwNSBQZXRlciBEaW1vdgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvc3BfdHlwZWluZm8uaHBwPgotI2luY2x1ZGUgPHB0aHJlYWQuaD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotY2xhc3Mgc3BfY291bnRlZF9iYXNlCi17Ci1wcml2YXRlOgotCi0gICAgc3BfY291bnRlZF9iYXNlKCBzcF9jb3VudGVkX2Jhc2UgY29uc3QgJiApOwotICAgIHNwX2NvdW50ZWRfYmFzZSAmIG9wZXJhdG9yPSAoIHNwX2NvdW50ZWRfYmFzZSBjb25zdCAmICk7Ci0KLSAgICBsb25nIHVzZV9jb3VudF87ICAgICAgICAvLyAjc2hhcmVkCi0gICAgbG9uZyB3ZWFrX2NvdW50XzsgICAgICAgLy8gI3dlYWsgKyAoI3NoYXJlZCAhPSAwKQotCi0gICAgbXV0YWJsZSBwdGhyZWFkX211dGV4X3QgbV87Ci0KLXB1YmxpYzoKLQotICAgIHNwX2NvdW50ZWRfYmFzZSgpOiB1c2VfY291bnRfKCAxICksIHdlYWtfY291bnRfKCAxICkKLSAgICB7Ci0vLyBIUFVYIDEwLjIwIC8gRENFIGhhcyBhIG5vbnN0YW5kYXJkIHB0aHJlYWRfbXV0ZXhfaW5pdAotCi0jaWYgZGVmaW5lZChfX2hwdXgpICYmIGRlZmluZWQoX0RFQ1RIUkVBRFNfKQotICAgICAgICBwdGhyZWFkX211dGV4X2luaXQoICZtXywgcHRocmVhZF9tdXRleGF0dHJfZGVmYXVsdCApOwotI2Vsc2UKLSAgICAgICAgcHRocmVhZF9tdXRleF9pbml0KCAmbV8sIDAgKTsKLSNlbmRpZgotICAgIH0KLQotICAgIHZpcnR1YWwgfnNwX2NvdW50ZWRfYmFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIHB0aHJlYWRfbXV0ZXhfZGVzdHJveSggJm1fICk7Ci0gICAgfQotCi0gICAgLy8gZGlzcG9zZSgpIGlzIGNhbGxlZCB3aGVuIHVzZV9jb3VudF8gZHJvcHMgdG8gemVybywgdG8gcmVsZWFzZQotICAgIC8vIHRoZSByZXNvdXJjZXMgbWFuYWdlZCBieSAqdGhpcy4KLQotICAgIHZpcnR1YWwgdm9pZCBkaXNwb3NlKCkgPSAwOyAvLyBub3Rocm93Ci0KLSAgICAvLyBkZXN0cm95KCkgaXMgY2FsbGVkIHdoZW4gd2Vha19jb3VudF8gZHJvcHMgdG8gemVyby4KLQotICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgZGVsZXRlIHRoaXM7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkICogZ2V0X2RlbGV0ZXIoIHNwX3R5cGVpbmZvIGNvbnN0ICYgdGkgKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkICogZ2V0X3VudHlwZWRfZGVsZXRlcigpID0gMDsKLQotICAgIHZvaWQgYWRkX3JlZl9jb3B5KCkKLSAgICB7Ci0gICAgICAgIHB0aHJlYWRfbXV0ZXhfbG9jayggJm1fICk7Ci0gICAgICAgICsrdXNlX2NvdW50XzsKLSAgICAgICAgcHRocmVhZF9tdXRleF91bmxvY2soICZtXyApOwotICAgIH0KLQotICAgIGJvb2wgYWRkX3JlZl9sb2NrKCkgLy8gdHJ1ZSBvbiBzdWNjZXNzCi0gICAgewotICAgICAgICBwdGhyZWFkX211dGV4X2xvY2soICZtXyApOwotICAgICAgICBib29sIHIgPSB1c2VfY291bnRfID09IDA/IGZhbHNlOiAoICsrdXNlX2NvdW50XywgdHJ1ZSApOwotICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jayggJm1fICk7Ci0gICAgICAgIHJldHVybiByOwotICAgIH0KLQotICAgIHZvaWQgcmVsZWFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIHB0aHJlYWRfbXV0ZXhfbG9jayggJm1fICk7Ci0gICAgICAgIGxvbmcgbmV3X3VzZV9jb3VudCA9IC0tdXNlX2NvdW50XzsKLSAgICAgICAgcHRocmVhZF9tdXRleF91bmxvY2soICZtXyApOwotCi0gICAgICAgIGlmKCBuZXdfdXNlX2NvdW50ID09IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkaXNwb3NlKCk7Ci0gICAgICAgICAgICB3ZWFrX3JlbGVhc2UoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgd2Vha19hZGRfcmVmKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgcHRocmVhZF9tdXRleF9sb2NrKCAmbV8gKTsKLSAgICAgICAgKyt3ZWFrX2NvdW50XzsKLSAgICAgICAgcHRocmVhZF9tdXRleF91bmxvY2soICZtXyApOwotICAgIH0KLQotICAgIHZvaWQgd2Vha19yZWxlYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgcHRocmVhZF9tdXRleF9sb2NrKCAmbV8gKTsKLSAgICAgICAgbG9uZyBuZXdfd2Vha19jb3VudCA9IC0td2Vha19jb3VudF87Ci0gICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCAmbV8gKTsKLQotICAgICAgICBpZiggbmV3X3dlYWtfY291bnQgPT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRlc3Ryb3koKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGxvbmcgdXNlX2NvdW50KCkgY29uc3QgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgcHRocmVhZF9tdXRleF9sb2NrKCAmbV8gKTsKLSAgICAgICAgbG9uZyByID0gdXNlX2NvdW50XzsKLSAgICAgICAgcHRocmVhZF9tdXRleF91bmxvY2soICZtXyApOwotCi0gICAgICAgIHJldHVybiByOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfUFRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX3NuY19wczMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9zbmNfcHMzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWZlOGZlNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX3NuY19wczMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTYyICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfU05DX1BTM19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfU05DX1BTM19IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLyAgZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9nY2Nfc3BhcmMuaHBwIC0gZysrIG9uIFNwYXJjIFY4KwotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDYgUGlvdHIgV3lkZXJza2kKLS8vICBDb3B5cmlnaHQgKGMpIDIwMDYgVG9tYXMgUHV2ZXJsZQotLy8gIENvcHlyaWdodCAoYykgMjAwNiBQZXRlciBEaW1vdgotLy8gIENvcHlyaWdodCAoYykgMjAxMSBFbWlsIERvdGNoZXZza2kKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dAotLy8KLS8vICBUaGFua3MgdG8gTWljaGFlbCB2YW4gZGVyIFdlc3RodWl6ZW4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9zcF90eXBlaW5mby5ocHA+Ci0jaW5jbHVkZSA8aW50dHlwZXMuaD4gLy8gdWludDMyX3QKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotaW5saW5lIHVpbnQzMl90IGNvbXBhcmVfYW5kX3N3YXAoIHVpbnQzMl90ICogZGVzdF8sIHVpbnQzMl90IGNvbXBhcmVfLCB1aW50MzJfdCBzd2FwXyApCi17Ci0gICAgcmV0dXJuIF9fYnVpbHRpbl9jZWxsQXRvbWljQ29tcGFyZUFuZFN3YXAzMihkZXN0Xyxjb21wYXJlXyxzd2FwXyk7Ci19Ci0KLWlubGluZSB1aW50MzJfdCBhdG9taWNfZmV0Y2hfYW5kX2FkZCggdWludDMyX3QgKiBwdywgdWludDMyX3QgZHYgKQotewotICAgIC8vIGxvbmcgciA9ICpwdzsKLSAgICAvLyAqcHcgKz0gZHY7Ci0gICAgLy8gcmV0dXJuIHI7Ci0KLSAgICBmb3IoIDs7ICkKLSAgICB7Ci0gICAgICAgIHVpbnQzMl90IHIgPSAqcHc7Ci0KLSAgICAgICAgaWYoIF9fYnVpbHRpbl9leHBlY3QoKGNvbXBhcmVfYW5kX3N3YXAocHcsIHIsIHIgKyBkdikgPT0gciksIDEpICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHI7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWlubGluZSB2b2lkIGF0b21pY19pbmNyZW1lbnQoIHVpbnQzMl90ICogcHcgKQotewotICAgICh2b2lkKSBfX2J1aWx0aW5fY2VsbEF0b21pY0luY3IzMiggcHcgKTsKLX0KLQotaW5saW5lIHVpbnQzMl90IGF0b21pY19kZWNyZW1lbnQoIHVpbnQzMl90ICogcHcgKQotewotICAgIHJldHVybiBfX2J1aWx0aW5fY2VsbEF0b21pY0RlY3IzMiggcHcgKTsKLX0KLQotaW5saW5lIHVpbnQzMl90IGF0b21pY19jb25kaXRpb25hbF9pbmNyZW1lbnQoIHVpbnQzMl90ICogcHcgKQotewotICAgIC8vIGxvbmcgciA9ICpwdzsKLSAgICAvLyBpZiggciAhPSAwICkgKysqcHc7Ci0gICAgLy8gcmV0dXJuIHI7Ci0KLSAgICBmb3IoIDs7ICkKLSAgICB7Ci0gICAgICAgIHVpbnQzMl90IHIgPSAqcHc7Ci0KLSAgICAgICAgaWYoIHIgPT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiByOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYoIF9fYnVpbHRpbl9leHBlY3QoICggY29tcGFyZV9hbmRfc3dhcCggcHcsIHIsIHIgKyAxICkgPT0gciApLCAxICkgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcjsKLSAgICAgICAgfQotICAgIH0gICAgCi19Ci0KLWNsYXNzIHNwX2NvdW50ZWRfYmFzZQotewotcHJpdmF0ZToKLQotICAgIHNwX2NvdW50ZWRfYmFzZSggc3BfY291bnRlZF9iYXNlIGNvbnN0ICYgKTsKLSAgICBzcF9jb3VudGVkX2Jhc2UgJiBvcGVyYXRvcj0gKCBzcF9jb3VudGVkX2Jhc2UgY29uc3QgJiApOwotCi0gICAgdWludDMyX3QgdXNlX2NvdW50XzsgICAgICAgIC8vICNzaGFyZWQKLSAgICB1aW50MzJfdCB3ZWFrX2NvdW50XzsgICAgICAgLy8gI3dlYWsgKyAoI3NoYXJlZCAhPSAwKQotCi1wdWJsaWM6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UoKTogdXNlX2NvdW50XyggMSApLCB3ZWFrX2NvdW50XyggMSApCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfnNwX2NvdW50ZWRfYmFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgfQotCi0gICAgLy8gZGlzcG9zZSgpIGlzIGNhbGxlZCB3aGVuIHVzZV9jb3VudF8gZHJvcHMgdG8gemVybywgdG8gcmVsZWFzZQotICAgIC8vIHRoZSByZXNvdXJjZXMgbWFuYWdlZCBieSAqdGhpcy4KLQotICAgIHZpcnR1YWwgdm9pZCBkaXNwb3NlKCkgPSAwOyAvLyBub3Rocm93Ci0KLSAgICAvLyBkZXN0cm95KCkgaXMgY2FsbGVkIHdoZW4gd2Vha19jb3VudF8gZHJvcHMgdG8gemVyby4KLQotICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgZGVsZXRlIHRoaXM7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkICogZ2V0X2RlbGV0ZXIoIHNwX3R5cGVpbmZvIGNvbnN0ICYgdGkgKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkICogZ2V0X3VudHlwZWRfZGVsZXRlcigpID0gMDsKLQotICAgIHZvaWQgYWRkX3JlZl9jb3B5KCkKLSAgICB7Ci0gICAgICAgIGF0b21pY19pbmNyZW1lbnQoICZ1c2VfY291bnRfICk7Ci0gICAgfQotCi0gICAgYm9vbCBhZGRfcmVmX2xvY2soKSAvLyB0cnVlIG9uIHN1Y2Nlc3MKLSAgICB7Ci0gICAgICAgIHJldHVybiBhdG9taWNfY29uZGl0aW9uYWxfaW5jcmVtZW50KCAmdXNlX2NvdW50XyApICE9IDA7Ci0gICAgfQotCi0gICAgdm9pZCByZWxlYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgaWYoIGF0b21pY19kZWNyZW1lbnQoICZ1c2VfY291bnRfICkgPT0gMSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRpc3Bvc2UoKTsKLSAgICAgICAgICAgIHdlYWtfcmVsZWFzZSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCB3ZWFrX2FkZF9yZWYoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBhdG9taWNfaW5jcmVtZW50KCAmd2Vha19jb3VudF8gKTsKLSAgICB9Ci0KLSAgICB2b2lkIHdlYWtfcmVsZWFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGlmKCBhdG9taWNfZGVjcmVtZW50KCAmd2Vha19jb3VudF8gKSA9PSAxICkKLSAgICAgICAgewotICAgICAgICAgICAgZGVzdHJveSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbG9uZyB1c2VfY291bnQoKSBjb25zdCAvLyBub3Rocm93Ci0gICAgewotICAgICAgICByZXR1cm4gY29uc3RfY2FzdDwgdWludDMyX3QgY29uc3Qgdm9sYXRpbGUgJiA+KCB1c2VfY291bnRfICk7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9TTkNfUFMzX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9zcGluLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2Vfc3Bpbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3NjkxY2UuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9zcGluLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMiArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX1NQSU5fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX1NQSU5fSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIGRldGFpbC9zcF9jb3VudGVkX2Jhc2Vfc3Bpbi5ocHAgLSBzcGlubG9jayBwb29sIGF0b21pYyBlbXVsYXRpb24KLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyLCAyMDAzIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLyAgQ29weXJpZ2h0IDIwMDQtMjAwOCBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvc3BfdHlwZWluZm8uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2tfcG9vbC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLWlubGluZSBpbnQgYXRvbWljX2V4Y2hhbmdlX2FuZF9hZGQoIGludCAqIHB3LCBpbnQgZHYgKQotewotICAgIHNwaW5sb2NrX3Bvb2w8MT46OnNjb3BlZF9sb2NrIGxvY2soIHB3ICk7Ci0KLSAgICBpbnQgciA9ICpwdzsKLSAgICAqcHcgKz0gZHY7Ci0gICAgcmV0dXJuIHI7Ci19Ci0KLWlubGluZSB2b2lkIGF0b21pY19pbmNyZW1lbnQoIGludCAqIHB3ICkKLXsKLSAgICBzcGlubG9ja19wb29sPDE+OjpzY29wZWRfbG9jayBsb2NrKCBwdyApOwotICAgICsrKnB3OwotfQotCi1pbmxpbmUgaW50IGF0b21pY19jb25kaXRpb25hbF9pbmNyZW1lbnQoIGludCAqIHB3ICkKLXsKLSAgICBzcGlubG9ja19wb29sPDE+OjpzY29wZWRfbG9jayBsb2NrKCBwdyApOwotCi0gICAgaW50IHJ2ID0gKnB3OwotICAgIGlmKCBydiAhPSAwICkgKysqcHc7Ci0gICAgcmV0dXJuIHJ2OwotfQotCi1jbGFzcyBzcF9jb3VudGVkX2Jhc2UKLXsKLXByaXZhdGU6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UoIHNwX2NvdW50ZWRfYmFzZSBjb25zdCAmICk7Ci0gICAgc3BfY291bnRlZF9iYXNlICYgb3BlcmF0b3I9ICggc3BfY291bnRlZF9iYXNlIGNvbnN0ICYgKTsKLQotICAgIGludCB1c2VfY291bnRfOyAgICAgICAgLy8gI3NoYXJlZAotICAgIGludCB3ZWFrX2NvdW50XzsgICAgICAgLy8gI3dlYWsgKyAoI3NoYXJlZCAhPSAwKQotCi1wdWJsaWM6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UoKTogdXNlX2NvdW50XyggMSApLCB3ZWFrX2NvdW50XyggMSApCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfnNwX2NvdW50ZWRfYmFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgfQotCi0gICAgLy8gZGlzcG9zZSgpIGlzIGNhbGxlZCB3aGVuIHVzZV9jb3VudF8gZHJvcHMgdG8gemVybywgdG8gcmVsZWFzZQotICAgIC8vIHRoZSByZXNvdXJjZXMgbWFuYWdlZCBieSAqdGhpcy4KLQotICAgIHZpcnR1YWwgdm9pZCBkaXNwb3NlKCkgPSAwOyAvLyBub3Rocm93Ci0KLSAgICAvLyBkZXN0cm95KCkgaXMgY2FsbGVkIHdoZW4gd2Vha19jb3VudF8gZHJvcHMgdG8gemVyby4KLQotICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgZGVsZXRlIHRoaXM7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkICogZ2V0X2RlbGV0ZXIoIHNwX3R5cGVpbmZvIGNvbnN0ICYgdGkgKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkICogZ2V0X3VudHlwZWRfZGVsZXRlcigpID0gMDsKLQotICAgIHZvaWQgYWRkX3JlZl9jb3B5KCkKLSAgICB7Ci0gICAgICAgIGF0b21pY19pbmNyZW1lbnQoICZ1c2VfY291bnRfICk7Ci0gICAgfQotCi0gICAgYm9vbCBhZGRfcmVmX2xvY2soKSAvLyB0cnVlIG9uIHN1Y2Nlc3MKLSAgICB7Ci0gICAgICAgIHJldHVybiBhdG9taWNfY29uZGl0aW9uYWxfaW5jcmVtZW50KCAmdXNlX2NvdW50XyApICE9IDA7Ci0gICAgfQotCi0gICAgdm9pZCByZWxlYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgaWYoIGF0b21pY19leGNoYW5nZV9hbmRfYWRkKCAmdXNlX2NvdW50XywgLTEgKSA9PSAxICkKLSAgICAgICAgewotICAgICAgICAgICAgZGlzcG9zZSgpOwotICAgICAgICAgICAgd2Vha19yZWxlYXNlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHdlYWtfYWRkX3JlZigpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGF0b21pY19pbmNyZW1lbnQoICZ3ZWFrX2NvdW50XyApOwotICAgIH0KLQotICAgIHZvaWQgd2Vha19yZWxlYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgaWYoIGF0b21pY19leGNoYW5nZV9hbmRfYWRkKCAmd2Vha19jb3VudF8sIC0xICkgPT0gMSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRlc3Ryb3koKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGxvbmcgdXNlX2NvdW50KCkgY29uc3QgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgc3BpbmxvY2tfcG9vbDwxPjo6c2NvcGVkX2xvY2sgbG9jayggJnVzZV9jb3VudF8gKTsKLSAgICAgICAgcmV0dXJuIHVzZV9jb3VudF87Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9TUElOX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9zeW5jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2Vfc3luYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhYTM2ZTguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9zeW5jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1NiArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX1NZTkNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX1NZTkNfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLyAgZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9zeW5jLmhwcCAtIGcrKyA0LjErIF9fc3luYyBpbnRyaW5zaWNzCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwNyBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvc3BfdHlwZWluZm8uaHBwPgotI2luY2x1ZGUgPGxpbWl0cy5oPgotCi0jaWYgZGVmaW5lZCggX19pYTY0X18gKSAmJiBkZWZpbmVkKCBfX0lOVEVMX0NPTVBJTEVSICkKLSMgaW5jbHVkZSA8aWE2NGludHJpbi5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLSNpZiBJTlRfTUFYID49IDIxNDc0ODM2NDcKLQotdHlwZWRlZiBpbnQgc3BfaW50MzJfdDsKLQotI2Vsc2UKLQotdHlwZWRlZiBsb25nIHNwX2ludDMyX3Q7Ci0KLSNlbmRpZgotCi1pbmxpbmUgdm9pZCBhdG9taWNfaW5jcmVtZW50KCBzcF9pbnQzMl90ICogcHcgKQotewotICAgIF9fc3luY19mZXRjaF9hbmRfYWRkKCBwdywgMSApOwotfQotCi1pbmxpbmUgc3BfaW50MzJfdCBhdG9taWNfZGVjcmVtZW50KCBzcF9pbnQzMl90ICogcHcgKQotewotICAgIHJldHVybiBfX3N5bmNfZmV0Y2hfYW5kX2FkZCggcHcsIC0xICk7Ci19Ci0KLWlubGluZSBzcF9pbnQzMl90IGF0b21pY19jb25kaXRpb25hbF9pbmNyZW1lbnQoIHNwX2ludDMyX3QgKiBwdyApCi17Ci0gICAgLy8gbG9uZyByID0gKnB3OwotICAgIC8vIGlmKCByICE9IDAgKSArKypwdzsKLSAgICAvLyByZXR1cm4gcjsKLQotICAgIHNwX2ludDMyX3QgciA9ICpwdzsKLQotICAgIGZvciggOzsgKQotICAgIHsKLSAgICAgICAgaWYoIHIgPT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiByOwotICAgICAgICB9Ci0KLSAgICAgICAgc3BfaW50MzJfdCByMiA9IF9fc3luY192YWxfY29tcGFyZV9hbmRfc3dhcCggcHcsIHIsIHIgKyAxICk7Ci0KLSAgICAgICAgaWYoIHIyID09IHIgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcjsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHIgPSByMjsKLSAgICAgICAgfQotICAgIH0gICAgCi19Ci0KLWNsYXNzIHNwX2NvdW50ZWRfYmFzZQotewotcHJpdmF0ZToKLQotICAgIHNwX2NvdW50ZWRfYmFzZSggc3BfY291bnRlZF9iYXNlIGNvbnN0ICYgKTsKLSAgICBzcF9jb3VudGVkX2Jhc2UgJiBvcGVyYXRvcj0gKCBzcF9jb3VudGVkX2Jhc2UgY29uc3QgJiApOwotCi0gICAgc3BfaW50MzJfdCB1c2VfY291bnRfOyAgICAgICAgLy8gI3NoYXJlZAotICAgIHNwX2ludDMyX3Qgd2Vha19jb3VudF87ICAgICAgIC8vICN3ZWFrICsgKCNzaGFyZWQgIT0gMCkKLQotcHVibGljOgotCi0gICAgc3BfY291bnRlZF9iYXNlKCk6IHVzZV9jb3VudF8oIDEgKSwgd2Vha19jb3VudF8oIDEgKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5zcF9jb3VudGVkX2Jhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgIH0KLQotICAgIC8vIGRpc3Bvc2UoKSBpcyBjYWxsZWQgd2hlbiB1c2VfY291bnRfIGRyb3BzIHRvIHplcm8sIHRvIHJlbGVhc2UKLSAgICAvLyB0aGUgcmVzb3VyY2VzIG1hbmFnZWQgYnkgKnRoaXMuCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcG9zZSgpID0gMDsgLy8gbm90aHJvdwotCi0gICAgLy8gZGVzdHJveSgpIGlzIGNhbGxlZCB3aGVuIHdlYWtfY291bnRfIGRyb3BzIHRvIHplcm8uCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGRlbGV0ZSB0aGlzOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCAqIGdldF9kZWxldGVyKCBzcF90eXBlaW5mbyBjb25zdCAmIHRpICkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCAqIGdldF91bnR5cGVkX2RlbGV0ZXIoKSA9IDA7Ci0KLSAgICB2b2lkIGFkZF9yZWZfY29weSgpCi0gICAgewotICAgICAgICBhdG9taWNfaW5jcmVtZW50KCAmdXNlX2NvdW50XyApOwotICAgIH0KLQotICAgIGJvb2wgYWRkX3JlZl9sb2NrKCkgLy8gdHJ1ZSBvbiBzdWNjZXNzCi0gICAgewotICAgICAgICByZXR1cm4gYXRvbWljX2NvbmRpdGlvbmFsX2luY3JlbWVudCggJnVzZV9jb3VudF8gKSAhPSAwOwotICAgIH0KLQotICAgIHZvaWQgcmVsZWFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGlmKCBhdG9taWNfZGVjcmVtZW50KCAmdXNlX2NvdW50XyApID09IDEgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkaXNwb3NlKCk7Ci0gICAgICAgICAgICB3ZWFrX3JlbGVhc2UoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgd2Vha19hZGRfcmVmKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgYXRvbWljX2luY3JlbWVudCggJndlYWtfY291bnRfICk7Ci0gICAgfQotCi0gICAgdm9pZCB3ZWFrX3JlbGVhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBpZiggYXRvbWljX2RlY3JlbWVudCggJndlYWtfY291bnRfICkgPT0gMSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRlc3Ryb3koKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGxvbmcgdXNlX2NvdW50KCkgY29uc3QgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8IHNwX2ludDMyX3QgY29uc3Qgdm9sYXRpbGUgJiA+KCB1c2VfY291bnRfICk7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9TWU5DX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV92YWNwcF9wcGMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV92YWNwcF9wcGMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NzNmNDYyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfdmFjcHBfcHBjLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1MSArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX1ZBQ1BQX1BQQ19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfVkFDUFBfUFBDX0hQUF9JTkNMVURFRAotCi0vLwotLy8gIGRldGFpbC9zcF9jb3VudGVkX2Jhc2VfdmFjcHBfcHBjLmhwcCAtIHhsQyh2YWNwcCkgb24gUE9XRVIKLS8vICAgYmFzZWQgb246IGRldGFpbC9zcF9jb3VudGVkX2Jhc2VfdzMyLmhwcAotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDIsIDIwMDMgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZC4KLS8vICBDb3B5cmlnaHQgMjAwNC0yMDA1IFBldGVyIERpbW92Ci0vLyAgQ29weXJpZ2h0IDIwMDYgTWljaGFlbCB2YW4gZGVyIFdlc3RodWl6ZW4KLS8vICBDb3B5cmlnaHQgMjAxMiBJQk0gQ29ycC4KLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8KLS8vICBMb2NrLWZyZWUgYWxnb3JpdGhtIGJ5IEFsZXhhbmRlciBUZXJla2hvdgotLy8KLS8vICBUaGFua3MgdG8gQmVuIEhpdGNoaW5ncyBmb3IgdGhlICN3ZWFrICsgKCNzaGFyZWQgIT0gMCkKLS8vICBmb3JtdWxhdGlvbgotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9zcF90eXBlaW5mby5ocHA+Ci0KLWV4dGVybiAiYnVpbHRpbiIgdm9pZCBfX2x3c3luYyh2b2lkKTsKLWV4dGVybiAiYnVpbHRpbiIgdm9pZCBfX2lzeW5jKHZvaWQpOwotZXh0ZXJuICJidWlsdGluIiBpbnQgX19mZXRjaF9hbmRfYWRkKHZvbGF0aWxlIGludCogYWRkciwgaW50IHZhbCk7Ci1leHRlcm4gImJ1aWx0aW4iIGludCBfX2NvbXBhcmVfYW5kX3N3YXAodm9sYXRpbGUgaW50KiwgaW50KiwgaW50KTsKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotaW5saW5lIHZvaWQgYXRvbWljX2luY3JlbWVudCggaW50ICpwdyApCi17Ci0gICAvLyArKypwdzsKLSAgIF9fbHdzeW5jKCk7Ci0gICBfX2ZldGNoX2FuZF9hZGQocHcsIDEpOwotICAgX19pc3luYygpOwotfSAKLQotaW5saW5lIGludCBhdG9taWNfZGVjcmVtZW50KCBpbnQgKnB3ICkKLXsKLSAgIC8vIHJldHVybiAtLSpwdzsKLSAgIF9fbHdzeW5jKCk7Ci0gICBpbnQgb3JpZ2luYWxWYWx1ZSA9IF9fZmV0Y2hfYW5kX2FkZChwdywgLTEpOwotICAgX19pc3luYygpOwotCi0gICByZXR1cm4gKG9yaWdpbmFsVmFsdWUgLSAxKTsKLX0KLQotaW5saW5lIGludCBhdG9taWNfY29uZGl0aW9uYWxfaW5jcmVtZW50KCBpbnQgKnB3ICkKLXsKLSAgIC8vIGlmKCAqcHcgIT0gMCApICsrKnB3OwotICAgLy8gcmV0dXJuICpwdzsKLQotICAgX19sd3N5bmMoKTsKLSAgIGludCB2ID0gKmNvbnN0X2Nhc3Q8dm9sYXRpbGUgaW50Kj4ocHcpOwotICAgZm9yICg7OykKLSAgIC8vIGxvb3AgdW50aWwgc3RhdGUgaXMga25vd24KLSAgIHsKLSAgICAgIGlmICh2ID09IDApIHJldHVybiAwOwotICAgICAgaWYgKF9fY29tcGFyZV9hbmRfc3dhcChwdywgJnYsIHYgKyAxKSkKLSAgICAgIHsKLSAgICAgICAgIF9faXN5bmMoKTsgcmV0dXJuICh2ICsgMSk7Ci0gICAgICB9Ci0gICB9Ci19Ci0KLWNsYXNzIHNwX2NvdW50ZWRfYmFzZQotewotcHJpdmF0ZToKLQotICAgIHNwX2NvdW50ZWRfYmFzZSggc3BfY291bnRlZF9iYXNlIGNvbnN0ICYgKTsKLSAgICBzcF9jb3VudGVkX2Jhc2UgJiBvcGVyYXRvcj0gKCBzcF9jb3VudGVkX2Jhc2UgY29uc3QgJiApOwotCi0gICAgaW50IHVzZV9jb3VudF87ICAgICAgICAvLyAjc2hhcmVkCi0gICAgaW50IHdlYWtfY291bnRfOyAgICAgICAvLyAjd2VhayArICgjc2hhcmVkICE9IDApCi0gICAgY2hhciBwYWRbNjRdIF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKDY0KSkpOwotICAgICAgICAgICAgLy8gcGFkIHRvIHByZXZlbnQgZmFsc2Ugc2hhcmluZwotcHVibGljOgotCi0gICAgc3BfY291bnRlZF9iYXNlKCk6IHVzZV9jb3VudF8oIDEgKSwgd2Vha19jb3VudF8oIDEgKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5zcF9jb3VudGVkX2Jhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgIH0KLQotICAgIC8vIGRpc3Bvc2UoKSBpcyBjYWxsZWQgd2hlbiB1c2VfY291bnRfIGRyb3BzIHRvIHplcm8sIHRvIHJlbGVhc2UKLSAgICAvLyB0aGUgcmVzb3VyY2VzIG1hbmFnZWQgYnkgKnRoaXMuCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcG9zZSgpID0gMDsgLy8gbm90aHJvdwotCi0gICAgLy8gZGVzdHJveSgpIGlzIGNhbGxlZCB3aGVuIHdlYWtfY291bnRfIGRyb3BzIHRvIHplcm8uCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGRlbGV0ZSB0aGlzOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCAqIGdldF9kZWxldGVyKCBzcF90eXBlaW5mbyBjb25zdCAmIHRpICkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCAqIGdldF91bnR5cGVkX2RlbGV0ZXIoKSA9IDA7Ci0KLSAgICB2b2lkIGFkZF9yZWZfY29weSgpCi0gICAgewotICAgICAgICBhdG9taWNfaW5jcmVtZW50KCAmdXNlX2NvdW50XyApOwotICAgIH0KLQotICAgIGJvb2wgYWRkX3JlZl9sb2NrKCkgLy8gdHJ1ZSBvbiBzdWNjZXNzCi0gICAgewotICAgICAgICByZXR1cm4gYXRvbWljX2NvbmRpdGlvbmFsX2luY3JlbWVudCggJnVzZV9jb3VudF8gKSAhPSAwOwotICAgIH0KLQotICAgIHZvaWQgcmVsZWFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGlmKCBhdG9taWNfZGVjcmVtZW50KCAmdXNlX2NvdW50XyApID09IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkaXNwb3NlKCk7Ci0gICAgICAgICAgICB3ZWFrX3JlbGVhc2UoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgd2Vha19hZGRfcmVmKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgYXRvbWljX2luY3JlbWVudCggJndlYWtfY291bnRfICk7Ci0gICAgfQotCi0gICAgdm9pZCB3ZWFrX3JlbGVhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBpZiggYXRvbWljX2RlY3JlbWVudCggJndlYWtfY291bnRfICkgPT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRlc3Ryb3koKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGxvbmcgdXNlX2NvdW50KCkgY29uc3QgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgcmV0dXJuICpjb25zdF9jYXN0PHZvbGF0aWxlIGludCo+KCZ1c2VfY291bnRfKTsgCi0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9WQUNQUF9QUENfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX3czMi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX3czMi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwNmQzYTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV93MzIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTMxICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfVzMyX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9XMzJfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIGRldGFpbC9zcF9jb3VudGVkX2Jhc2VfdzMyLmhwcAotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDIsIDIwMDMgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZC4KLS8vICBDb3B5cmlnaHQgMjAwNC0yMDA1IFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vCi0vLyAgTG9jay1mcmVlIGFsZ29yaXRobSBieSBBbGV4YW5kZXIgVGVyZWtob3YKLS8vCi0vLyAgVGhhbmtzIHRvIEJlbiBIaXRjaGluZ3MgZm9yIHRoZSAjd2VhayArICgjc2hhcmVkICE9IDApCi0vLyAgZm9ybXVsYXRpb24KLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvaW50ZXJsb2NrZWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvc3BfdHlwZWluZm8uaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi1jbGFzcyBzcF9jb3VudGVkX2Jhc2UKLXsKLXByaXZhdGU6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UoIHNwX2NvdW50ZWRfYmFzZSBjb25zdCAmICk7Ci0gICAgc3BfY291bnRlZF9iYXNlICYgb3BlcmF0b3I9ICggc3BfY291bnRlZF9iYXNlIGNvbnN0ICYgKTsKLQotICAgIGxvbmcgdXNlX2NvdW50XzsgICAgICAgIC8vICNzaGFyZWQKLSAgICBsb25nIHdlYWtfY291bnRfOyAgICAgICAvLyAjd2VhayArICgjc2hhcmVkICE9IDApCi0KLXB1YmxpYzoKLQotICAgIHNwX2NvdW50ZWRfYmFzZSgpOiB1c2VfY291bnRfKCAxICksIHdlYWtfY291bnRfKCAxICkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+c3BfY291bnRlZF9iYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICB9Ci0KLSAgICAvLyBkaXNwb3NlKCkgaXMgY2FsbGVkIHdoZW4gdXNlX2NvdW50XyBkcm9wcyB0byB6ZXJvLCB0byByZWxlYXNlCi0gICAgLy8gdGhlIHJlc291cmNlcyBtYW5hZ2VkIGJ5ICp0aGlzLgotCi0gICAgdmlydHVhbCB2b2lkIGRpc3Bvc2UoKSA9IDA7IC8vIG5vdGhyb3cKLQotICAgIC8vIGRlc3Ryb3koKSBpcyBjYWxsZWQgd2hlbiB3ZWFrX2NvdW50XyBkcm9wcyB0byB6ZXJvLgotCi0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBkZWxldGUgdGhpczsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfZGVsZXRlciggc3BfdHlwZWluZm8gY29uc3QgJiB0aSApID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfdW50eXBlZF9kZWxldGVyKCkgPSAwOwotCi0gICAgdm9pZCBhZGRfcmVmX2NvcHkoKQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfSU5URVJMT0NLRURfSU5DUkVNRU5UKCAmdXNlX2NvdW50XyApOwotICAgIH0KLQotICAgIGJvb2wgYWRkX3JlZl9sb2NrKCkgLy8gdHJ1ZSBvbiBzdWNjZXNzCi0gICAgewotICAgICAgICBmb3IoIDs7ICkKLSAgICAgICAgewotICAgICAgICAgICAgbG9uZyB0bXAgPSBzdGF0aWNfY2FzdDwgbG9uZyBjb25zdCB2b2xhdGlsZSYgPiggdXNlX2NvdW50XyApOwotICAgICAgICAgICAgaWYoIHRtcCA9PSAwICkgcmV0dXJuIGZhbHNlOwotCi0jaWYgZGVmaW5lZCggTkROQk9PU1RfTVNWQyApICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoIE5ETkJPT1NUX01TVkMsID09IDEyMDAgKQotCi0gICAgICAgICAgICAvLyB3b3JrIGFyb3VuZCBhIGNvZGUgZ2VuZXJhdGlvbiBidWcKLQotICAgICAgICAgICAgbG9uZyB0bXAyID0gdG1wICsgMTsKLSAgICAgICAgICAgIGlmKCBORE5CT09TVF9JTlRFUkxPQ0tFRF9DT01QQVJFX0VYQ0hBTkdFKCAmdXNlX2NvdW50XywgdG1wMiwgdG1wICkgPT0gdG1wMiAtIDEgKSByZXR1cm4gdHJ1ZTsKLQotI2Vsc2UKLQotICAgICAgICAgICAgaWYoIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0NPTVBBUkVfRVhDSEFOR0UoICZ1c2VfY291bnRfLCB0bXAgKyAxLCB0bXAgKSA9PSB0bXAgKSByZXR1cm4gdHJ1ZTsKLQotI2VuZGlmCi0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHJlbGVhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBpZiggTkROQk9PU1RfSU5URVJMT0NLRURfREVDUkVNRU5UKCAmdXNlX2NvdW50XyApID09IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkaXNwb3NlKCk7Ci0gICAgICAgICAgICB3ZWFrX3JlbGVhc2UoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgd2Vha19hZGRfcmVmKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgTkROQk9PU1RfSU5URVJMT0NLRURfSU5DUkVNRU5UKCAmd2Vha19jb3VudF8gKTsKLSAgICB9Ci0KLSAgICB2b2lkIHdlYWtfcmVsZWFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGlmKCBORE5CT09TVF9JTlRFUkxPQ0tFRF9ERUNSRU1FTlQoICZ3ZWFrX2NvdW50XyApID09IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkZXN0cm95KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBsb25nIHVzZV9jb3VudCgpIGNvbnN0IC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxsb25nIGNvbnN0IHZvbGF0aWxlICY+KCB1c2VfY291bnRfICk7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9XMzJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOGFmNzNiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjU0ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0lNUExfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9JTVBMX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICBkZXRhaWwvc3BfY291bnRlZF9pbXBsLmhwcAotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDIsIDIwMDMgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZC4KLS8vICBDb3B5cmlnaHQgMjAwNC0yMDA1IFBldGVyIERpbW92Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX1VTRV9TVERfQUxMT0NBVE9SKSAmJiBkZWZpbmVkKE5ETkJPT1NUX1NQX1VTRV9RVUlDS19BTExPQ0FUT1IpCi0jIGVycm9yIE5ETkJPT1NUX1NQX1VTRV9TVERfQUxMT0NBVE9SIGFuZCBORE5CT09TVF9TUF9VU0VfUVVJQ0tfQUxMT0NBVE9SIGFyZSBpbmNvbXBhdGlibGUuCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NoZWNrZWRfZGVsZXRlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZS5ocHA+Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX1VTRV9RVUlDS19BTExPQ0FUT1IpCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9xdWlja19hbGxvY2F0b3IuaHBwPgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX1VTRV9TVERfQUxMT0NBVE9SKQotI2luY2x1ZGUgPG1lbW9yeT4gICAgICAgICAgIC8vIHN0ZDo6YWxsb2NhdG9yCi0jZW5kaWYKLQotI2luY2x1ZGUgPGNzdGRkZWY+ICAgICAgICAgIC8vIHN0ZDo6c2l6ZV90Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9FTkFCTEVfREVCVUdfSE9PS1MpCi0KLXZvaWQgc3Bfc2NhbGFyX2NvbnN0cnVjdG9yX2hvb2soIHZvaWQgKiBweCwgc3RkOjpzaXplX3Qgc2l6ZSwgdm9pZCAqIHBuICk7Ci12b2lkIHNwX3NjYWxhcl9kZXN0cnVjdG9yX2hvb2soIHZvaWQgKiBweCwgc3RkOjpzaXplX3Qgc2l6ZSwgdm9pZCAqIHBuICk7Ci0KLSNlbmRpZgotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLXRlbXBsYXRlPGNsYXNzIFg+IGNsYXNzIHNwX2NvdW50ZWRfaW1wbF9wOiBwdWJsaWMgc3BfY291bnRlZF9iYXNlCi17Ci1wcml2YXRlOgotCi0gICAgWCAqIHB4XzsKLQotICAgIHNwX2NvdW50ZWRfaW1wbF9wKCBzcF9jb3VudGVkX2ltcGxfcCBjb25zdCAmICk7Ci0gICAgc3BfY291bnRlZF9pbXBsX3AgJiBvcGVyYXRvcj0gKCBzcF9jb3VudGVkX2ltcGxfcCBjb25zdCAmICk7Ci0KLSAgICB0eXBlZGVmIHNwX2NvdW50ZWRfaW1wbF9wPFg+IHRoaXNfdHlwZTsKLQotcHVibGljOgotCi0gICAgZXhwbGljaXQgc3BfY291bnRlZF9pbXBsX3AoIFggKiBweCApOiBweF8oIHB4ICkKLSAgICB7Ci0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9FTkFCTEVfREVCVUdfSE9PS1MpCi0gICAgICAgIG5kbmJvb3N0OjpzcF9zY2FsYXJfY29uc3RydWN0b3JfaG9vayggcHgsIHNpemVvZihYKSwgdGhpcyApOwotI2VuZGlmCi0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIGRpc3Bvc2UoKSAvLyBub3Rocm93Ci0gICAgewotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotICAgICAgICBuZG5ib29zdDo6c3Bfc2NhbGFyX2Rlc3RydWN0b3JfaG9vayggcHhfLCBzaXplb2YoWCksIHRoaXMgKTsKLSNlbmRpZgotICAgICAgICBuZG5ib29zdDo6Y2hlY2tlZF9kZWxldGUoIHB4XyApOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCAqIGdldF9kZWxldGVyKCBkZXRhaWw6OnNwX3R5cGVpbmZvIGNvbnN0ICYgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkICogZ2V0X3VudHlwZWRfZGVsZXRlcigpCi0gICAgewotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX1VTRV9TVERfQUxMT0NBVE9SKQotCi0gICAgdm9pZCAqIG9wZXJhdG9yIG5ldyggc3RkOjpzaXplX3QgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6YWxsb2NhdG9yPHRoaXNfdHlwZT4oKS5hbGxvY2F0ZSggMSwgc3RhdGljX2Nhc3Q8dGhpc190eXBlICo+KDApICk7Ci0gICAgfQotCi0gICAgdm9pZCBvcGVyYXRvciBkZWxldGUoIHZvaWQgKiBwICkKLSAgICB7Ci0gICAgICAgIHN0ZDo6YWxsb2NhdG9yPHRoaXNfdHlwZT4oKS5kZWFsbG9jYXRlKCBzdGF0aWNfY2FzdDx0aGlzX3R5cGUgKj4ocCksIDEgKTsKLSAgICB9Ci0KLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9VU0VfUVVJQ0tfQUxMT0NBVE9SKQotCi0gICAgdm9pZCAqIG9wZXJhdG9yIG5ldyggc3RkOjpzaXplX3QgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHF1aWNrX2FsbG9jYXRvcjx0aGlzX3R5cGU+OjphbGxvYygpOwotICAgIH0KLQotICAgIHZvaWQgb3BlcmF0b3IgZGVsZXRlKCB2b2lkICogcCApCi0gICAgewotICAgICAgICBxdWlja19hbGxvY2F0b3I8dGhpc190eXBlPjo6ZGVhbGxvYyggcCApOwotICAgIH0KLQotI2VuZGlmCi19OwotCi0vLwotLy8gQm9ybGFuZCdzIENvZGVndWFyZCB0cmlwcyB1cCBvdmVyIHRoZSAtVngtIG9wdGlvbiBoZXJlOgotLy8KLSNpZmRlZiBfX0NPREVHVUFSRF9fCi0jIHByYWdtYSBvcHRpb24gcHVzaCAtVngtCi0jZW5kaWYKLQotdGVtcGxhdGU8Y2xhc3MgUCwgY2xhc3MgRD4gY2xhc3Mgc3BfY291bnRlZF9pbXBsX3BkOiBwdWJsaWMgc3BfY291bnRlZF9iYXNlCi17Ci1wcml2YXRlOgotCi0gICAgUCBwdHI7IC8vIGNvcHkgY29uc3RydWN0b3IgbXVzdCBub3QgdGhyb3cKLSAgICBEIGRlbDsgLy8gY29weSBjb25zdHJ1Y3RvciBtdXN0IG5vdCB0aHJvdwotCi0gICAgc3BfY291bnRlZF9pbXBsX3BkKCBzcF9jb3VudGVkX2ltcGxfcGQgY29uc3QgJiApOwotICAgIHNwX2NvdW50ZWRfaW1wbF9wZCAmIG9wZXJhdG9yPSAoIHNwX2NvdW50ZWRfaW1wbF9wZCBjb25zdCAmICk7Ci0KLSAgICB0eXBlZGVmIHNwX2NvdW50ZWRfaW1wbF9wZDxQLCBEPiB0aGlzX3R5cGU7Ci0KLXB1YmxpYzoKLQotICAgIC8vIHByZTogZChwKSBtdXN0IG5vdCB0aHJvdwotCi0gICAgc3BfY291bnRlZF9pbXBsX3BkKCBQIHAsIEQgJiBkICk6IHB0ciggcCApLCBkZWwoIGQgKQotICAgIHsKLSAgICB9Ci0KLSAgICBzcF9jb3VudGVkX2ltcGxfcGQoIFAgcCApOiBwdHIoIHAgKSwgZGVsKCkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIGRpc3Bvc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBkZWwoIHB0ciApOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCAqIGdldF9kZWxldGVyKCBkZXRhaWw6OnNwX3R5cGVpbmZvIGNvbnN0ICYgdGkgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRpID09IE5ETkJPT1NUX1NQX1RZUEVJRChEKT8gJnJlaW50ZXJwcmV0X2Nhc3Q8Y2hhciY+KCBkZWwgKTogMDsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfdW50eXBlZF9kZWxldGVyKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAmcmVpbnRlcnByZXRfY2FzdDxjaGFyJj4oIGRlbCApOwotICAgIH0KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfVVNFX1NURF9BTExPQ0FUT1IpCi0KLSAgICB2b2lkICogb3BlcmF0b3IgbmV3KCBzdGQ6OnNpemVfdCApCi0gICAgewotICAgICAgICByZXR1cm4gc3RkOjphbGxvY2F0b3I8dGhpc190eXBlPigpLmFsbG9jYXRlKCAxLCBzdGF0aWNfY2FzdDx0aGlzX3R5cGUgKj4oMCkgKTsKLSAgICB9Ci0KLSAgICB2b2lkIG9wZXJhdG9yIGRlbGV0ZSggdm9pZCAqIHAgKQotICAgIHsKLSAgICAgICAgc3RkOjphbGxvY2F0b3I8dGhpc190eXBlPigpLmRlYWxsb2NhdGUoIHN0YXRpY19jYXN0PHRoaXNfdHlwZSAqPihwKSwgMSApOwotICAgIH0KLQotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX1VTRV9RVUlDS19BTExPQ0FUT1IpCi0KLSAgICB2b2lkICogb3BlcmF0b3IgbmV3KCBzdGQ6OnNpemVfdCApCi0gICAgewotICAgICAgICByZXR1cm4gcXVpY2tfYWxsb2NhdG9yPHRoaXNfdHlwZT46OmFsbG9jKCk7Ci0gICAgfQotCi0gICAgdm9pZCBvcGVyYXRvciBkZWxldGUoIHZvaWQgKiBwICkKLSAgICB7Ci0gICAgICAgIHF1aWNrX2FsbG9jYXRvcjx0aGlzX3R5cGU+OjpkZWFsbG9jKCBwICk7Ci0gICAgfQotCi0jZW5kaWYKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFAsIGNsYXNzIEQsIGNsYXNzIEE+IGNsYXNzIHNwX2NvdW50ZWRfaW1wbF9wZGE6IHB1YmxpYyBzcF9jb3VudGVkX2Jhc2UKLXsKLXByaXZhdGU6Ci0KLSAgICBQIHBfOyAvLyBjb3B5IGNvbnN0cnVjdG9yIG11c3Qgbm90IHRocm93Ci0gICAgRCBkXzsgLy8gY29weSBjb25zdHJ1Y3RvciBtdXN0IG5vdCB0aHJvdwotICAgIEEgYV87IC8vIGNvcHkgY29uc3RydWN0b3IgbXVzdCBub3QgdGhyb3cKLQotICAgIHNwX2NvdW50ZWRfaW1wbF9wZGEoIHNwX2NvdW50ZWRfaW1wbF9wZGEgY29uc3QgJiApOwotICAgIHNwX2NvdW50ZWRfaW1wbF9wZGEgJiBvcGVyYXRvcj0gKCBzcF9jb3VudGVkX2ltcGxfcGRhIGNvbnN0ICYgKTsKLQotICAgIHR5cGVkZWYgc3BfY291bnRlZF9pbXBsX3BkYTxQLCBELCBBPiB0aGlzX3R5cGU7Ci0KLXB1YmxpYzoKLQotICAgIC8vIHByZTogZCggcCApIG11c3Qgbm90IHRocm93Ci0KLSAgICBzcF9jb3VudGVkX2ltcGxfcGRhKCBQIHAsIEQgJiBkLCBBIGEgKTogcF8oIHAgKSwgZF8oIGQgKSwgYV8oIGEgKQotICAgIHsKLSAgICB9Ci0KLSAgICBzcF9jb3VudGVkX2ltcGxfcGRhKCBQIHAsIEEgYSApOiBwXyggcCApLCBkXygpLCBhXyggYSApCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBkaXNwb3NlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgZF8oIHBfICk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEE6OnRlbXBsYXRlIHJlYmluZDwgdGhpc190eXBlID46Om90aGVyIEEyOwotCi0gICAgICAgIEEyIGEyKCBhXyApOwotCi0gICAgICAgIHRoaXMtPn50aGlzX3R5cGUoKTsKLSAgICAgICAgYTIuZGVhbGxvY2F0ZSggdGhpcywgMSApOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCAqIGdldF9kZWxldGVyKCBkZXRhaWw6OnNwX3R5cGVpbmZvIGNvbnN0ICYgdGkgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRpID09IE5ETkJPT1NUX1NQX1RZUEVJRCggRCApPyAmcmVpbnRlcnByZXRfY2FzdDxjaGFyJj4oIGRfICk6IDA7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkICogZ2V0X3VudHlwZWRfZGVsZXRlcigpCi0gICAgewotICAgICAgICByZXR1cm4gJnJlaW50ZXJwcmV0X2Nhc3Q8Y2hhciY+KCBkXyApOwotICAgIH0KLX07Ci0KLSNpZmRlZiBfX0NPREVHVUFSRF9fCi0jIHByYWdtYSBvcHRpb24gcG9wCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfSU1QTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9mb3J3YXJkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9mb3J3YXJkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTFiN2I3NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfZm9yd2FyZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfRk9SV0FSRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9GT1JXQVJEX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8gIGRldGFpbC9zcF9mb3J3YXJkLmhwcAotLy8KLS8vICBDb3B5cmlnaHQgMjAwOCwyMDEyIFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMgKQotCi10ZW1wbGF0ZTwgY2xhc3MgVCA+IFQmJiBzcF9mb3J3YXJkKCBUICYgdCApIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PCBUJiYgPiggdCApOwotfQotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0ZPUldBUkRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfaGFzX3N5bmMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2hhc19zeW5jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWI1YjRkZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfaGFzX3N5bmMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0hBU19TWU5DX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0hBU19TWU5DX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICBuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2hhc19zeW5jLmhwcAotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDgsIDIwMDkgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyAgRGVmaW5lcyB0aGUgTkROQk9PU1RfU1BfSEFTX1NZTkMgbWFjcm8gaWYgdGhlIF9fc3luY18qIGludHJpbnNpY3MKLS8vICBhcmUgYXZhaWxhYmxlLgotLy8KLQotI2lmbmRlZiBORE5CT09TVF9TUF9OT19TWU5DCi0KLSNpZiBkZWZpbmVkKCBfX0dDQ19IQVZFX1NZTkNfQ09NUEFSRV9BTkRfU1dBUF80ICkKLQotIyBkZWZpbmUgTkROQk9PU1RfU1BfSEFTX1NZTkMKLQotI2VsaWYgZGVmaW5lZCggX19JQk1DUFBfXyApICYmICggX19JQk1DUFBfXyA+PSAxMjEwICkKLQotIyBkZWZpbmUgTkROQk9PU1RfU1BfSEFTX1NZTkMKLQotI2VsaWYgZGVmaW5lZCggX19HTlVDX18gKSAmJiAoIF9fR05VQ19fICogMTAwICsgX19HTlVDX01JTk9SX18gPj0gNDAxICkKLQotI2RlZmluZSBORE5CT09TVF9TUF9IQVNfU1lOQwotCi0jaWYgZGVmaW5lZCggX19hcm1fXyApICB8fCBkZWZpbmVkKCBfX2FybWVsX18gKQotI3VuZGVmIE5ETkJPT1NUX1NQX0hBU19TWU5DCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoIF9faHBwYSApIHx8IGRlZmluZWQoIF9faHBwYV9fICkKLSN1bmRlZiBORE5CT09TVF9TUF9IQVNfU1lOQwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKCBfX202OGtfXyApCi0jdW5kZWYgTkROQk9PU1RfU1BfSEFTX1NZTkMKLSNlbmRpZgotCi0jaWYgZGVmaW5lZCggX19zaF9fICkKLSN1bmRlZiBORE5CT09TVF9TUF9IQVNfU1lOQwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKCBfX3NwYXJjX18gKQotI3VuZGVmIE5ETkJPT1NUX1NQX0hBU19TWU5DCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoIF9fSU5URUxfQ09NUElMRVIgKSAmJiAhZGVmaW5lZCggX19pYTY0X18gKSAmJiAoIF9fSU5URUxfQ09NUElMRVIgPCAxMTEwICkKLSN1bmRlZiBORE5CT09TVF9TUF9IQVNfU1lOQwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fUEFUSFNDQUxFX18pICYmICgoX19QQVRIQ0NfXyA9PSA0KSAmJiAoX19QQVRIQ0NfTUlOT1JfXyA8IDkpKSAKLSN1bmRlZiBORE5CT09TVF9TUF9IQVNfU1lOQwotI2VuZGlmCi0KLSNlbmRpZgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9TUF9OT19TWU5DCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfSEFTX1NZTkNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfaWZfYXJyYXkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2lmX2FycmF5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzNjODkyNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfaWZfYXJyYXkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMiBHbGVuIEpvc2VwaCBGZXJuYW5kZXMgCi0gKiBnbGVuZmUgYXQgbGl2ZSBkb3QgY29tCi0gKgotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIAotICogVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IAotICogb3IgY29weSBhdCBodHRwOi8vYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqLwotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0lGX0FSUkFZX0hQUAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0lGX0FSUkFZX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL3NoYXJlZF9wdHIuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIG5hbWVzcGFjZSBkZXRhaWwgewotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiAKLSAgICAgICAgc3RydWN0IHNwX2lmX2FycmF5OwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBzdHJ1Y3Qgc3BfaWZfYXJyYXk8VFtdPiB7Ci0gICAgICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFRbXT4gdHlwZTsKLSAgICAgICAgfTsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RydWN0IHNwX2lmX3NpemVfYXJyYXk7Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IE4+Ci0gICAgICAgIHN0cnVjdCBzcF9pZl9zaXplX2FycmF5PFRbTl0+IHsKLSAgICAgICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VFtOXT4gdHlwZTsKLSAgICAgICAgfTsKLSAgICB9Ci19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX251bGxwdHJfdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfbnVsbHB0cl90LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTM0ODA2MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfbnVsbHB0cl90LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9OVUxMUFRSX1RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfTlVMTFBUUl9UX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8gIGRldGFpbC9zcF9udWxscHRyX3QuaHBwCi0vLwotLy8gIENvcHlyaWdodCAyMDEzIFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4KLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9OVUxMUFRSICkKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotI2lmIGRlZmluZWQoIF9fY2xhbmdfXyApICYmICFkZWZpbmVkKCBfTElCQ1BQX1ZFUlNJT04gKSAmJiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEUgKQotCi0gICAgdHlwZWRlZiBkZWNsdHlwZShudWxscHRyKSBzcF9udWxscHRyX3Q7Ci0KLSNlbHNlCi0KLSAgICB0eXBlZGVmIHN0ZDo6bnVsbHB0cl90IHNwX251bGxwdHJfdDsKLQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX05VTExQVFIgKQotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9OVUxMUFRSX1RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2suaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzdkMGQ1Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2suaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQSU5MT0NLX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQSU5MT0NLX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICBuZG5ib29zdC9kZXRhaWwvc3BpbmxvY2suaHBwCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwOCBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICBzdHJ1Y3Qgc3BpbmxvY2sKLS8vICB7Ci0vLyAgICAgIHZvaWQgbG9jaygpOwotLy8gICAgICBib29sIHRyeV9sb2NrKCk7Ci0vLyAgICAgIHZvaWQgdW5sb2NrKCk7Ci0vLwotLy8gICAgICBjbGFzcyBzY29wZWRfbG9jazsKLS8vICB9OwotLy8KLS8vICAjZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklUIDx1bnNwZWNpZmllZD4KLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfaGFzX3N5bmMuaHBwPgotCi0jaWYgZGVmaW5lZCggTkROQk9PU1RfU1BfVVNFX1BUSFJFQURTICkKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2tfcHQuaHBwPgotCi0jZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKCBfX2FybV9fICkgJiYgIWRlZmluZWQoIF9fdGh1bWJfXyApCi0jICBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrX2djY19hcm0uaHBwPgotCi0jZWxpZiBkZWZpbmVkKCBORE5CT09TVF9TUF9IQVNfU1lOQyApCi0jICBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrX3N5bmMuaHBwPgotCi0jZWxpZiBkZWZpbmVkKFdJTjMyKSB8fCBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX1dJTjMyX18pIHx8IGRlZmluZWQoX19DWUdXSU5fXykKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2tfdzMyLmhwcD4KLQotI2VsaWYgZGVmaW5lZChORE5CT09TVF9IQVNfUFRIUkVBRFMpCi0jICBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrX3B0LmhwcD4KLQotI2VsaWYgIWRlZmluZWQoTkROQk9PU1RfSEFTX1RIUkVBRFMpCi0jICBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrX250LmhwcD4KLQotI2Vsc2UKLSMgIGVycm9yIFVucmVjb2duaXplZCB0aHJlYWRpbmcgcGxhdGZvcm0KLSNlbmRpZgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQSU5MT0NLX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrX2djY19hcm0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrX2djY19hcm0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjAxNWE0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9ja19nY2NfYXJtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMCArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BJTkxPQ0tfR0NDX0FSTV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUElOTE9DS19HQ0NfQVJNX0hQUF9JTkNMVURFRAotCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwOCwgMjAxMSBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwveWllbGRfay5ocHA+Ci0KLSNpZiBkZWZpbmVkKF9fQVJNX0FSQ0hfN19fKSB8fCBkZWZpbmVkKF9fQVJNX0FSQ0hfN0FfXykgfHwgZGVmaW5lZChfX0FSTV9BUkNIXzdSX18pIHx8IGRlZmluZWQoX19BUk1fQVJDSF83TV9fKSB8fCBkZWZpbmVkKF9fQVJNX0FSQ0hfN0VNX18pIHx8IGRlZmluZWQoX19BUk1fQVJDSF83U19fKQotCi0jIGRlZmluZSBORE5CT09TVF9TUF9BUk1fQkFSUklFUiAiZG1iIgotIyBkZWZpbmUgTkROQk9PU1RfU1BfQVJNX0hBU19MRFJFWAotCi0jZWxpZiBkZWZpbmVkKF9fQVJNX0FSQ0hfNl9fKSB8fCBkZWZpbmVkKF9fQVJNX0FSQ0hfNkpfXykgfHwgZGVmaW5lZChfX0FSTV9BUkNIXzZLX18pIHx8IGRlZmluZWQoX19BUk1fQVJDSF82Wl9fKSB8fCBkZWZpbmVkKF9fQVJNX0FSQ0hfNlpLX18pIHx8IGRlZmluZWQoX19BUk1fQVJDSF82VDJfXykKLQotIyBkZWZpbmUgTkROQk9PU1RfU1BfQVJNX0JBUlJJRVIgIm1jciBwMTUsIDAsIHIwLCBjNywgYzEwLCA1IgotIyBkZWZpbmUgTkROQk9PU1RfU1BfQVJNX0hBU19MRFJFWAotCi0jZWxzZQotCi0jIGRlZmluZSBORE5CT09TVF9TUF9BUk1fQkFSUklFUiAiIgotCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotY2xhc3Mgc3BpbmxvY2sKLXsKLXB1YmxpYzoKLQotICAgIGludCB2XzsKLQotcHVibGljOgotCi0gICAgYm9vbCB0cnlfbG9jaygpCi0gICAgewotICAgICAgICBpbnQgcjsKLQotI2lmZGVmIE5ETkJPT1NUX1NQX0FSTV9IQVNfTERSRVgKLQotICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKLSAgICAgICAgICAgICJsZHJleCAlMCwgWyUyXTsgXG4iCi0gICAgICAgICAgICAiY21wICUwLCAlMTsgXG4iCi0gICAgICAgICAgICAic3RyZXhuZSAlMCwgJTEsIFslMl07IFxuIgotICAgICAgICAgICAgTkROQk9PU1RfU1BfQVJNX0JBUlJJRVIgOgotICAgICAgICAgICAgIj0mciIoIHIgKTogLy8gb3V0cHV0cwotICAgICAgICAgICAgInIiKCAxICksICJyIiggJnZfICk6IC8vIGlucHV0cwotICAgICAgICAgICAgIm1lbW9yeSIsICJjYyIgKTsKLQotI2Vsc2UKLQotICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKLSAgICAgICAgICAgICJzd3AgJTAsICUxLCBbJTJdO1xuIgotICAgICAgICAgICAgTkROQk9PU1RfU1BfQVJNX0JBUlJJRVIgOgotICAgICAgICAgICAgIj0mciIoIHIgKTogLy8gb3V0cHV0cwotICAgICAgICAgICAgInIiKCAxICksICJyIiggJnZfICk6IC8vIGlucHV0cwotICAgICAgICAgICAgIm1lbW9yeSIsICJjYyIgKTsKLQotI2VuZGlmCi0KLSAgICAgICAgcmV0dXJuIHIgPT0gMDsKLSAgICB9Ci0KLSAgICB2b2lkIGxvY2soKQotICAgIHsKLSAgICAgICAgZm9yKCB1bnNpZ25lZCBrID0gMDsgIXRyeV9sb2NrKCk7ICsrayApCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnlpZWxkKCBrICk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHVubG9jaygpCi0gICAgewotICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyggTkROQk9PU1RfU1BfQVJNX0JBUlJJRVIgOjo6ICJtZW1vcnkiICk7Ci0gICAgICAgICpjb25zdF9jYXN0PCBpbnQgdm9sYXRpbGUqID4oICZ2XyApID0gMDsKLSAgICB9Ci0KLXB1YmxpYzoKLQotICAgIGNsYXNzIHNjb3BlZF9sb2NrCi0gICAgewotICAgIHByaXZhdGU6Ci0KLSAgICAgICAgc3BpbmxvY2sgJiBzcF87Ci0KLSAgICAgICAgc2NvcGVkX2xvY2soIHNjb3BlZF9sb2NrIGNvbnN0ICYgKTsKLSAgICAgICAgc2NvcGVkX2xvY2sgJiBvcGVyYXRvcj0oIHNjb3BlZF9sb2NrIGNvbnN0ICYgKTsKLQotICAgIHB1YmxpYzoKLQotICAgICAgICBleHBsaWNpdCBzY29wZWRfbG9jayggc3BpbmxvY2sgJiBzcCApOiBzcF8oIHNwICkKLSAgICAgICAgewotICAgICAgICAgICAgc3AubG9jaygpOwotICAgICAgICB9Ci0KLSAgICAgICAgfnNjb3BlZF9sb2NrKCkKLSAgICAgICAgewotICAgICAgICAgICAgc3BfLnVubG9jaygpOwotICAgICAgICB9Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCB7MH0KLQotI3VuZGVmIE5ETkJPT1NUX1NQX0FSTV9CQVJSSUVSCi0jdW5kZWYgTkROQk9PU1RfU1BfQVJNX0hBU19MRFJFWAotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQSU5MT0NLX0dDQ19BUk1fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2tfbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrX250LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWI1MTRjOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2tfbnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODkgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQSU5MT0NLX05UX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQSU5MT0NLX05UX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDggUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi1jbGFzcyBzcGlubG9jawotewotcHVibGljOgotCi0gICAgYm9vbCBsb2NrZWRfOwotCi1wdWJsaWM6Ci0KLSAgICBpbmxpbmUgYm9vbCB0cnlfbG9jaygpCi0gICAgewotICAgICAgICBpZiggbG9ja2VkXyApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGxvY2tlZF8gPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpbmxpbmUgdm9pZCBsb2NrKCkKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVCggIWxvY2tlZF8gKTsKLSAgICAgICAgbG9ja2VkXyA9IHRydWU7Ci0gICAgfQotCi0gICAgaW5saW5lIHZvaWQgdW5sb2NrKCkKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVCggbG9ja2VkXyApOwotICAgICAgICBsb2NrZWRfID0gZmFsc2U7Ci0gICAgfQotCi1wdWJsaWM6Ci0KLSAgICBjbGFzcyBzY29wZWRfbG9jawotICAgIHsKLSAgICBwcml2YXRlOgotCi0gICAgICAgIHNwaW5sb2NrICYgc3BfOwotCi0gICAgICAgIHNjb3BlZF9sb2NrKCBzY29wZWRfbG9jayBjb25zdCAmICk7Ci0gICAgICAgIHNjb3BlZF9sb2NrICYgb3BlcmF0b3I9KCBzY29wZWRfbG9jayBjb25zdCAmICk7Ci0KLSAgICBwdWJsaWM6Ci0KLSAgICAgICAgZXhwbGljaXQgc2NvcGVkX2xvY2soIHNwaW5sb2NrICYgc3AgKTogc3BfKCBzcCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNwLmxvY2soKTsKLSAgICAgICAgfQotCi0gICAgICAgIH5zY29wZWRfbG9jaygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNwXy51bmxvY2soKTsKLSAgICAgICAgfQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQgeyBmYWxzZSB9Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BJTkxPQ0tfTlRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2tfcG9vbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2tfcG9vbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwNTQ5YjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrX3Bvb2wuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTEgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQSU5MT0NLX1BPT0xfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BJTkxPQ0tfUE9PTF9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgbmRuYm9vc3QvZGV0YWlsL3NwaW5sb2NrX3Bvb2wuaHBwCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwOCBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICBzcGlubG9ja19wb29sPDA+IGlzIHJlc2VydmVkIGZvciBhdG9taWM8Piwgd2hlbi9pZiBpdCBhcnJpdmVzCi0vLyAgc3BpbmxvY2tfcG9vbDwxPiBpcyByZXNlcnZlZCBmb3Igc2hhcmVkX3B0ciByZWZlcmVuY2UgY291bnRzCi0vLyAgc3BpbmxvY2tfcG9vbDwyPiBpcyByZXNlcnZlZCBmb3Igc2hhcmVkX3B0ciBhdG9taWMgYWNjZXNzCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrLmhwcD4KLSNpbmNsdWRlIDxjc3RkZGVmPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi10ZW1wbGF0ZTwgaW50IEkgPiBjbGFzcyBzcGlubG9ja19wb29sCi17Ci1wcml2YXRlOgotCi0gICAgc3RhdGljIHNwaW5sb2NrIHBvb2xfWyA0MSBdOwotCi1wdWJsaWM6Ci0KLSAgICBzdGF0aWMgc3BpbmxvY2sgJiBzcGlubG9ja19mb3IoIHZvaWQgY29uc3QgKiBwdiApCi0gICAgewotI2lmIGRlZmluZWQoX19WTVMpICYmIF9fSU5JVElBTF9QT0lOVEVSX1NJWkUgPT0gNjQgIAotICAgICAgICBzdGQ6OnNpemVfdCBpID0gcmVpbnRlcnByZXRfY2FzdDwgdW5zaWduZWQgbG9uZyBsb25nID4oIHB2ICkgJSA0MTsKLSNlbHNlICAKLSAgICAgICAgc3RkOjpzaXplX3QgaSA9IHJlaW50ZXJwcmV0X2Nhc3Q8IHN0ZDo6c2l6ZV90ID4oIHB2ICkgJSA0MTsKLSNlbmRpZiAgCi0gICAgICAgIHJldHVybiBwb29sX1sgaSBdOwotICAgIH0KLQotICAgIGNsYXNzIHNjb3BlZF9sb2NrCi0gICAgewotICAgIHByaXZhdGU6Ci0KLSAgICAgICAgc3BpbmxvY2sgJiBzcF87Ci0KLSAgICAgICAgc2NvcGVkX2xvY2soIHNjb3BlZF9sb2NrIGNvbnN0ICYgKTsKLSAgICAgICAgc2NvcGVkX2xvY2sgJiBvcGVyYXRvcj0oIHNjb3BlZF9sb2NrIGNvbnN0ICYgKTsKLQotICAgIHB1YmxpYzoKLQotICAgICAgICBleHBsaWNpdCBzY29wZWRfbG9jayggdm9pZCBjb25zdCAqIHB2ICk6IHNwXyggc3BpbmxvY2tfZm9yKCBwdiApICkKLSAgICAgICAgewotICAgICAgICAgICAgc3BfLmxvY2soKTsKLSAgICAgICAgfQotCi0gICAgICAgIH5zY29wZWRfbG9jaygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNwXy51bmxvY2soKTsKLSAgICAgICAgfQotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgaW50IEkgPiBzcGlubG9jayBzcGlubG9ja19wb29sPCBJID46OnBvb2xfWyA0MSBdID0KLXsKLSAgICBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIAotICAgIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgCi0gICAgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCAKLSAgICBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIAotICAgIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgCi0gICAgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCAKLSAgICBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIAotICAgIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgCi0gICAgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUElOTE9DS19QT09MX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrX3B0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9ja19wdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyZjMwMDMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrX3B0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUElOTE9DS19QVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUElOTE9DS19QVF9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDA4IFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0jaW5jbHVkZSA8cHRocmVhZC5oPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi1jbGFzcyBzcGlubG9jawotewotcHVibGljOgotCi0gICAgcHRocmVhZF9tdXRleF90IHZfOwotCi1wdWJsaWM6Ci0KLSAgICBib29sIHRyeV9sb2NrKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBwdGhyZWFkX211dGV4X3RyeWxvY2soICZ2XyApID09IDA7Ci0gICAgfQotCi0gICAgdm9pZCBsb2NrKCkKLSAgICB7Ci0gICAgICAgIHB0aHJlYWRfbXV0ZXhfbG9jayggJnZfICk7Ci0gICAgfQotCi0gICAgdm9pZCB1bmxvY2soKQotICAgIHsKLSAgICAgICAgcHRocmVhZF9tdXRleF91bmxvY2soICZ2XyApOwotICAgIH0KLQotcHVibGljOgotCi0gICAgY2xhc3Mgc2NvcGVkX2xvY2sKLSAgICB7Ci0gICAgcHJpdmF0ZToKLQotICAgICAgICBzcGlubG9jayAmIHNwXzsKLQotICAgICAgICBzY29wZWRfbG9jayggc2NvcGVkX2xvY2sgY29uc3QgJiApOwotICAgICAgICBzY29wZWRfbG9jayAmIG9wZXJhdG9yPSggc2NvcGVkX2xvY2sgY29uc3QgJiApOwotCi0gICAgcHVibGljOgotCi0gICAgICAgIGV4cGxpY2l0IHNjb3BlZF9sb2NrKCBzcGlubG9jayAmIHNwICk6IHNwXyggc3AgKQotICAgICAgICB7Ci0gICAgICAgICAgICBzcC5sb2NrKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB+c2NvcGVkX2xvY2soKQotICAgICAgICB7Ci0gICAgICAgICAgICBzcF8udW5sb2NrKCk7Ci0gICAgICAgIH0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklUIHsgUFRIUkVBRF9NVVRFWF9JTklUSUFMSVpFUiB9Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BJTkxPQ0tfUFRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2tfc3luYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2tfc3luYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxZjMyMWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrX3N5bmMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQSU5MT0NLX1NZTkNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BJTkxPQ0tfU1lOQ19IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDA4IFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC95aWVsZF9rLmhwcD4KLQotI2lmIGRlZmluZWQoIF9faWE2NF9fICkgJiYgZGVmaW5lZCggX19JTlRFTF9DT01QSUxFUiApCi0jIGluY2x1ZGUgPGlhNjRpbnRyaW4uaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi1jbGFzcyBzcGlubG9jawotewotcHVibGljOgotCi0gICAgaW50IHZfOwotCi1wdWJsaWM6Ci0KLSAgICBib29sIHRyeV9sb2NrKCkKLSAgICB7Ci0gICAgICAgIGludCByID0gX19zeW5jX2xvY2tfdGVzdF9hbmRfc2V0KCAmdl8sIDEgKTsKLSAgICAgICAgcmV0dXJuIHIgPT0gMDsKLSAgICB9Ci0KLSAgICB2b2lkIGxvY2soKQotICAgIHsKLSAgICAgICAgZm9yKCB1bnNpZ25lZCBrID0gMDsgIXRyeV9sb2NrKCk7ICsrayApCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnlpZWxkKCBrICk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHVubG9jaygpCi0gICAgewotICAgICAgICBfX3N5bmNfbG9ja19yZWxlYXNlKCAmdl8gKTsKLSAgICB9Ci0KLXB1YmxpYzoKLQotICAgIGNsYXNzIHNjb3BlZF9sb2NrCi0gICAgewotICAgIHByaXZhdGU6Ci0KLSAgICAgICAgc3BpbmxvY2sgJiBzcF87Ci0KLSAgICAgICAgc2NvcGVkX2xvY2soIHNjb3BlZF9sb2NrIGNvbnN0ICYgKTsKLSAgICAgICAgc2NvcGVkX2xvY2sgJiBvcGVyYXRvcj0oIHNjb3BlZF9sb2NrIGNvbnN0ICYgKTsKLQotICAgIHB1YmxpYzoKLQotICAgICAgICBleHBsaWNpdCBzY29wZWRfbG9jayggc3BpbmxvY2sgJiBzcCApOiBzcF8oIHNwICkKLSAgICAgICAgewotICAgICAgICAgICAgc3AubG9jaygpOwotICAgICAgICB9Ci0KLSAgICAgICAgfnNjb3BlZF9sb2NrKCkKLSAgICAgICAgewotICAgICAgICAgICAgc3BfLnVubG9jaygpOwotICAgICAgICB9Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCB7MH0KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUElOTE9DS19TWU5DX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrX3czMi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2tfdzMyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDIxZTNiMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2tfdzMyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMyArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BJTkxPQ0tfVzMyX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQSU5MT0NLX1czMl9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDA4IFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL2ludGVybG9ja2VkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3lpZWxkX2suaHBwPgotCi0vLyBORE5CT09TVF9DT01QSUxFUl9GRU5DRQotCi0jaWYgZGVmaW5lZChfX0lOVEVMX0NPTVBJTEVSKQotCi0jZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX0ZFTkNFIF9fbWVtb3J5X2JhcnJpZXIoKTsKLQotI2VsaWYgZGVmaW5lZCggX01TQ19WRVIgKSAmJiBfTVNDX1ZFUiA+PSAxMzEwCi0KLWV4dGVybiAiQyIgdm9pZCBfUmVhZFdyaXRlQmFycmllcigpOwotI3ByYWdtYSBpbnRyaW5zaWMoIF9SZWFkV3JpdGVCYXJyaWVyICkKLQotI2RlZmluZSBORE5CT09TVF9DT01QSUxFUl9GRU5DRSBfUmVhZFdyaXRlQmFycmllcigpOwotCi0jZWxpZiBkZWZpbmVkKF9fR05VQ19fKQotCi0jZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX0ZFTkNFIF9fYXNtX18gX192b2xhdGlsZV9fKCAiIiA6IDogOiAibWVtb3J5IiApOwotCi0jZWxzZQotCi0jZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX0ZFTkNFCi0KLSNlbmRpZgotCi0vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi1jbGFzcyBzcGlubG9jawotewotcHVibGljOgotCi0gICAgbG9uZyB2XzsKLQotcHVibGljOgotCi0gICAgYm9vbCB0cnlfbG9jaygpCi0gICAgewotICAgICAgICBsb25nIHIgPSBORE5CT09TVF9JTlRFUkxPQ0tFRF9FWENIQU5HRSggJnZfLCAxICk7Ci0KLSAgICAgICAgTkROQk9PU1RfQ09NUElMRVJfRkVOQ0UKLQotICAgICAgICByZXR1cm4gciA9PSAwOwotICAgIH0KLQotICAgIHZvaWQgbG9jaygpCi0gICAgewotICAgICAgICBmb3IoIHVuc2lnbmVkIGsgPSAwOyAhdHJ5X2xvY2soKTsgKytrICkKLSAgICAgICAgewotICAgICAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6eWllbGQoIGsgKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgdW5sb2NrKCkKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0NPTVBJTEVSX0ZFTkNFCi0gICAgICAgICpjb25zdF9jYXN0PCBsb25nIHZvbGF0aWxlKiA+KCAmdl8gKSA9IDA7Ci0gICAgfQotCi1wdWJsaWM6Ci0KLSAgICBjbGFzcyBzY29wZWRfbG9jawotICAgIHsKLSAgICBwcml2YXRlOgotCi0gICAgICAgIHNwaW5sb2NrICYgc3BfOwotCi0gICAgICAgIHNjb3BlZF9sb2NrKCBzY29wZWRfbG9jayBjb25zdCAmICk7Ci0gICAgICAgIHNjb3BlZF9sb2NrICYgb3BlcmF0b3I9KCBzY29wZWRfbG9jayBjb25zdCAmICk7Ci0KLSAgICBwdWJsaWM6Ci0KLSAgICAgICAgZXhwbGljaXQgc2NvcGVkX2xvY2soIHNwaW5sb2NrICYgc3AgKTogc3BfKCBzcCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNwLmxvY2soKTsKLSAgICAgICAgfQotCi0gICAgICAgIH5zY29wZWRfbG9jaygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNwXy51bmxvY2soKTsKLSAgICAgICAgfQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQgezB9Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BJTkxPQ0tfVzMyX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3lpZWxkX2suaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3lpZWxkX2suaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZmNkNzkwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC95aWVsZF9rLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0OSArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfWUlFTERfS19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9ZSUVMRF9LX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICB5aWVsZF9rLmhwcAotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDggUGV0ZXIgRGltb3YKLS8vCi0vLyAgdm9pZCB5aWVsZCggdW5zaWduZWQgayApOwotLy8KLS8vICBUeXBpY2FsIHVzZToKLS8vCi0vLyAgZm9yKCB1bnNpZ25lZCBrID0gMDsgIXRyeV9sb2NrKCk7ICsrayApIHlpZWxkKCBrICk7Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQKLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0vLyBORE5CT09TVF9TTVRfUEFVU0UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSID49IDEzMTAgJiYgKCBkZWZpbmVkKF9NX0lYODYpIHx8IGRlZmluZWQoX01fWDY0KSApCi0KLWV4dGVybiAiQyIgdm9pZCBfbW1fcGF1c2UoKTsKLSNwcmFnbWEgaW50cmluc2ljKCBfbW1fcGF1c2UgKQotCi0jZGVmaW5lIE5ETkJPT1NUX1NNVF9QQVVTRSBfbW1fcGF1c2UoKTsKLQotI2VsaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pICkKLQotI2RlZmluZSBORE5CT09TVF9TTVRfUEFVU0UgX19hc21fXyBfX3ZvbGF0aWxlX18oICJyZXA7IG5vcCIgOiA6IDogIm1lbW9yeSIgKTsKLQotI2VuZGlmCi0KLS8vCi0KLSNpZiBkZWZpbmVkKCBXSU4zMiApIHx8IGRlZmluZWQoIF9XSU4zMiApIHx8IGRlZmluZWQoIF9fV0lOMzJfXyApIHx8IGRlZmluZWQoIF9fQ1lHV0lOX18gKQotCi0jaWYgZGVmaW5lZCggTkROQk9PU1RfVVNFX1dJTkRPV1NfSCApCi0jIGluY2x1ZGUgPHdpbmRvd3MuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX1VTRV9XSU5ET1dTX0ggKQotICBleHRlcm4gIkMiIHZvaWQgX19zdGRjYWxsIFNsZWVwKCB1bnNpZ25lZCBsb25nIG1zICk7Ci0jZW5kaWYKLQotaW5saW5lIHZvaWQgeWllbGQoIHVuc2lnbmVkIGsgKQotewotICAgIGlmKCBrIDwgNCApCi0gICAgewotICAgIH0KLSNpZiBkZWZpbmVkKCBORE5CT09TVF9TTVRfUEFVU0UgKQotICAgIGVsc2UgaWYoIGsgPCAxNiApCi0gICAgewotICAgICAgICBORE5CT09TVF9TTVRfUEFVU0UKLSAgICB9Ci0jZW5kaWYKLSAgICBlbHNlIGlmKCBrIDwgMzIgKQotICAgIHsKLSAgICAgICAgU2xlZXAoIDAgKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgU2xlZXAoIDEgKTsKLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZWxpZiBkZWZpbmVkKCBORE5CT09TVF9IQVNfUFRIUkVBRFMgKQotCi0jaW5jbHVkZSA8c2NoZWQuaD4KLSNpbmNsdWRlIDx0aW1lLmg+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLWlubGluZSB2b2lkIHlpZWxkKCB1bnNpZ25lZCBrICkKLXsKLSAgICBpZiggayA8IDQgKQotICAgIHsKLSAgICB9Ci0jaWYgZGVmaW5lZCggTkROQk9PU1RfU01UX1BBVVNFICkKLSAgICBlbHNlIGlmKCBrIDwgMTYgKQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU01UX1BBVVNFCi0gICAgfQotI2VuZGlmCi0gICAgZWxzZSBpZiggayA8IDMyIHx8IGsgJiAxICkKLSAgICB7Ci0gICAgICAgIHNjaGVkX3lpZWxkKCk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIC8vIGcrKyAtV2V4dHJhIHdhcm5zIG9uIHt9IG9yIHswfQotICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgcnF0cCA9IHsgMCwgMCB9OwotCi0gICAgICAgIC8vIFBPU0lYIHNheXMgdGhhdCB0aW1lc3BlYyBoYXMgdHZfc2VjIGFuZCB0dl9uc2VjCi0gICAgICAgIC8vIEJ1dCBpdCBkb2Vzbid0IGd1YXJhbnRlZSBvcmRlciBvciBwbGFjZW1lbnQKLQotICAgICAgICBycXRwLnR2X3NlYyA9IDA7Ci0gICAgICAgIHJxdHAudHZfbnNlYyA9IDEwMDA7Ci0KLSAgICAgICAgbmFub3NsZWVwKCAmcnF0cCwgMCApOwotICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbHNlCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLWlubGluZSB2b2lkIHlpZWxkKCB1bnNpZ25lZCApCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9ZSUVMRF9LX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvbWFrZV9zaGFyZWQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvbWFrZV9zaGFyZWQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMGE5MTk3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL21ha2Vfc2hhcmVkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX01BS0VfU0hBUkVEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfTUFLRV9TSEFSRURfSFBQX0lOQ0xVREVECi0KLS8vICBtYWtlX3NoYXJlZC5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDA3LCAyMDA4LCAyMDEyIFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQKLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvc21hcnRfcHRyL21ha2Vfc2hhcmVkLmh0bWwKLS8vICBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9tYWtlX3NoYXJlZF9vYmplY3QuaHBwPgotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gKSAmJiAhZGVmaW5lZCggTkROQk9PU1RfTk9fU0ZJTkFFICkKLSMgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL21ha2Vfc2hhcmVkX2FycmF5LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2FsbG9jYXRlX3NoYXJlZF9hcnJheS5ocHA+Ci0jZW5kaWYKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX01BS0VfU0hBUkVEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvbWFrZV9zaGFyZWRfYXJyYXkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvbWFrZV9zaGFyZWRfYXJyYXkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Mzk5OGVhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL21ha2Vfc2hhcmVkX2FycmF5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDEyIEdsZW4gSm9zZXBoIEZlcm5hbmRlcwotICogZ2xlbmZlIGF0IGxpdmUgZG90IGNvbQotICoKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotICogVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0Ci0gKiBvciBjb3B5IGF0IGh0dHA6Ly9ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICovCi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9NQUtFX1NIQVJFRF9BUlJBWV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX01BS0VfU0hBUkVEX0FSUkFZX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL3NoYXJlZF9wdHIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXJyYXlfZGVsZXRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hcnJheV90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvbWFrZV9hcnJheV9oZWxwZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfaWZfYXJyYXkuaHBwPgotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9JTklUSUFMSVpFUl9MSVNUKQotI2luY2x1ZGUgPGluaXRpYWxpemVyX2xpc3Q+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9hcnJheTxUPjo6dHlwZQotICAgIG1ha2Vfc2hhcmVkKHN0ZDo6c2l6ZV90IHNpemUpIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9pbm5lcjxUPjo6dHlwZSBUMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9iYXNlPFQxPjo6dHlwZSBUMjsKLSAgICAgICAgVDEqIHAxID0gMDsKLSAgICAgICAgVDIqIHAyID0gMDsKLSAgICAgICAgc3RkOjpzaXplX3QgbjEgPSBzaXplICogbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfdG90YWw8VDE+OjpzaXplOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjptYWtlX2FycmF5X2hlbHBlcjxUMltdPiBhMShuMSwgJnAyKTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltdPiBkMShuMSk7Ci0gICAgICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+IHMxKHAxLCBkMSwgYTEpOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbXT4qIEQyOwotICAgICAgICBwMSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VDEqPihwMik7Ci0gICAgICAgIEQyIGQyID0gc3RhdGljX2Nhc3Q8RDI+KHMxLl9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkpOwotICAgICAgICBkMi0+aW5pdChwMik7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPihzMSwgcDEpOwotICAgIH0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTKQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX2FycmF5PFQ+Ojp0eXBlCi0gICAgbWFrZV9zaGFyZWQoc3RkOjpzaXplX3Qgc2l6ZSwgQXJncyYmLi4uIGFyZ3MpIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9pbm5lcjxUPjo6dHlwZSBUMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9iYXNlPFQxPjo6dHlwZSBUMjsKLSAgICAgICAgVDEqIHAxID0gMDsKLSAgICAgICAgVDIqIHAyID0gMDsKLSAgICAgICAgc3RkOjpzaXplX3QgbjEgPSBzaXplICogbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfdG90YWw8VDE+OjpzaXplOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjptYWtlX2FycmF5X2hlbHBlcjxUMltdPiBhMShuMSwgJnAyKTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltdPiBkMShuMSk7Ci0gICAgICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+IHMxKHAxLCBkMSwgYTEpOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbXT4qIEQyOwotICAgICAgICBwMSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VDEqPihwMik7Ci0gICAgICAgIEQyIGQyID0gc3RhdGljX2Nhc3Q8RDI+KHMxLl9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkpOwotICAgICAgICBkMi0+aW5pdChwMiwgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPihzMSwgcDEpOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9zaXplX2FycmF5PFQ+Ojp0eXBlCi0gICAgbWFrZV9zaGFyZWQoQXJncyYmLi4uIGFyZ3MpIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9pbm5lcjxUPjo6dHlwZSBUMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9iYXNlPFQxPjo6dHlwZSBUMjsKLSAgICAgICAgZW51bSB7Ci0gICAgICAgICAgICBOID0gbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfdG90YWw8VD46OnNpemUKLSAgICAgICAgfTsKLSAgICAgICAgVDEqIHAxID0gMDsKLSAgICAgICAgVDIqIHAyID0gMDsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6bWFrZV9hcnJheV9oZWxwZXI8VDJbTl0+IGExKCZwMik7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbTl0+IGQxOwotICAgICAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPiBzMShwMSwgZDEsIGExKTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW05dPiogRDI7Ci0gICAgICAgIHAxID0gcmVpbnRlcnByZXRfY2FzdDxUMSo+KHAyKTsKLSAgICAgICAgRDIgZDIgPSBzdGF0aWNfY2FzdDxEMj4oczEuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSk7Ci0gICAgICAgIGQyLT5pbml0KHAyLCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+KHMxLCBwMSk7Ci0gICAgfQotI2VuZGlmCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVU5JRklFRF9JTklUSUFMSVpBVElPTl9TWU5UQVgpCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfc2l6ZV9hcnJheTxUPjo6dHlwZQotICAgIG1ha2Vfc2hhcmVkKGNvbnN0IFQmIGxpc3QpIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9pbm5lcjxUPjo6dHlwZSBUMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9iYXNlPFQxPjo6dHlwZSBUMjsKLSAgICAgICAgdHlwZWRlZiBjb25zdCBUMiBUMzsKLSAgICAgICAgZW51bSB7Ci0gICAgICAgICAgICBOID0gbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfdG90YWw8VD46OnNpemUKLSAgICAgICAgfTsKLSAgICAgICAgVDEqIHAxID0gMDsKLSAgICAgICAgVDIqIHAyID0gMDsKLSAgICAgICAgVDMqIHAzID0gMDsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6bWFrZV9hcnJheV9oZWxwZXI8VDJbTl0+IGExKCZwMik7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbTl0+IGQxOwotICAgICAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPiBzMShwMSwgZDEsIGExKTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW05dPiogRDI7Ci0gICAgICAgIHAzID0gcmVpbnRlcnByZXRfY2FzdDxUMyo+KGxpc3QpOwotICAgICAgICBwMSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VDEqPihwMik7Ci0gICAgICAgIEQyIGQyID0gc3RhdGljX2Nhc3Q8RDI+KHMxLl9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkpOwotICAgICAgICBkMi0+aW5pdF9saXN0KHAyLCBwMyk7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPihzMSwgcDEpOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9hcnJheTxUPjo6dHlwZQotICAgIG1ha2Vfc2hhcmVkKHN0ZDo6c2l6ZV90IHNpemUsCi0gICAgICAgIGNvbnN0IHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2lubmVyPFQ+Ojp0eXBlJiBsaXN0KSB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfaW5uZXI8VD46OnR5cGUgVDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUMT46OnR5cGUgVDI7Ci0gICAgICAgIHR5cGVkZWYgY29uc3QgVDIgVDM7Ci0gICAgICAgIGVudW0gewotICAgICAgICAgICAgTSA9IG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X3RvdGFsPFQxPjo6c2l6ZQotICAgICAgICB9OwotICAgICAgICBUMSogcDEgPSAwOwotICAgICAgICBUMiogcDIgPSAwOwotICAgICAgICBUMyogcDMgPSAwOwotICAgICAgICBzdGQ6OnNpemVfdCBuMSA9IE0gKiBzaXplOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjptYWtlX2FycmF5X2hlbHBlcjxUMltdPiBhMShuMSwgJnAyKTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltdPiBkMShuMSk7Ci0gICAgICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+IHMxKHAxLCBkMSwgYTEpOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbXT4qIEQyOwotICAgICAgICBwMyA9IHJlaW50ZXJwcmV0X2Nhc3Q8VDMqPihsaXN0KTsKLSAgICAgICAgcDEgPSByZWludGVycHJldF9jYXN0PFQxKj4ocDIpOwotICAgICAgICBEMiBkMiA9IHN0YXRpY19jYXN0PEQyPihzMS5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpKTsKLSAgICAgICAgZDItPnRlbXBsYXRlIGluaXRfbGlzdDxNPihwMiwgcDMpOwotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4oczEsIHAxKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfc2l6ZV9hcnJheTxUPjo6dHlwZQotICAgIG1ha2Vfc2hhcmVkKGNvbnN0IHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2lubmVyPFQ+Ojp0eXBlJiBsaXN0KSB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfaW5uZXI8VD46OnR5cGUgVDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUMT46OnR5cGUgVDI7Ci0gICAgICAgIHR5cGVkZWYgY29uc3QgVDIgVDM7Ci0gICAgICAgIGVudW0gewotICAgICAgICAgICAgTSA9IG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X3RvdGFsPFQxPjo6c2l6ZSwKLSAgICAgICAgICAgIE4gPSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV90b3RhbDxUPjo6c2l6ZQotICAgICAgICB9OwotICAgICAgICBUMSogcDEgPSAwOwotICAgICAgICBUMiogcDIgPSAwOwotICAgICAgICBUMyogcDMgPSAwOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjptYWtlX2FycmF5X2hlbHBlcjxUMltOXT4gYTEoJnAyKTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltOXT4gZDE7Ci0gICAgICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+IHMxKHAxLCBkMSwgYTEpOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbTl0+KiBEMjsKLSAgICAgICAgcDMgPSByZWludGVycHJldF9jYXN0PFQzKj4obGlzdCk7Ci0gICAgICAgIHAxID0gcmVpbnRlcnByZXRfY2FzdDxUMSo+KHAyKTsKLSAgICAgICAgRDIgZDIgPSBzdGF0aWNfY2FzdDxEMj4oczEuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSk7Ci0gICAgICAgIGQyLT50ZW1wbGF0ZSBpbml0X2xpc3Q8TT4ocDIsIHAzKTsKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+KHMxLCBwMSk7Ci0gICAgfQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9JTklUSUFMSVpFUl9MSVNUKQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX2FycmF5PFQ+Ojp0eXBlCi0gICAgbWFrZV9zaGFyZWQoc3RkOjppbml0aWFsaXplcl9saXN0PHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2lubmVyPFQ+Ojp0eXBlPiBsaXN0KSB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfaW5uZXI8VD46OnR5cGUgVDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUMT46OnR5cGUgVDI7Ci0gICAgICAgIHR5cGVkZWYgY29uc3QgVDIgVDM7Ci0gICAgICAgIFQxKiBwMSA9IDA7Ci0gICAgICAgIFQyKiBwMiA9IDA7Ci0gICAgICAgIFQzKiBwMyA9IDA7Ci0gICAgICAgIHN0ZDo6c2l6ZV90IG4xID0gbGlzdC5zaXplKCkgKiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV90b3RhbDxUMT46OnNpemU7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6Om1ha2VfYXJyYXlfaGVscGVyPFQyW10+IGExKG4xLCAmcDIpOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW10+IGQxKG4xKTsKLSAgICAgICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4gczEocDEsIGQxLCBhMSk7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltdPiogRDI7Ci0gICAgICAgIHAzID0gcmVpbnRlcnByZXRfY2FzdDxUMyo+KGxpc3QuYmVnaW4oKSk7Ci0gICAgICAgIHAxID0gcmVpbnRlcnByZXRfY2FzdDxUMSo+KHAyKTsKLSAgICAgICAgRDIgZDIgPSBzdGF0aWNfY2FzdDxEMj4oczEuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSk7Ci0gICAgICAgIGQyLT5pbml0X2xpc3QocDIsIHAzKTsKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+KHMxLCBwMSk7Ci0gICAgfQotI2VuZGlmCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMpCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfYXJyYXk8VD46OnR5cGUKLSAgICBtYWtlX3NoYXJlZChzdGQ6OnNpemVfdCBzaXplLAotICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9iYXNlPFQ+Ojp0eXBlJiYgdmFsdWUpIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9pbm5lcjxUPjo6dHlwZSBUMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9iYXNlPFQxPjo6dHlwZSBUMjsKLSAgICAgICAgVDEqIHAxID0gMDsKLSAgICAgICAgVDIqIHAyID0gMDsKLSAgICAgICAgc3RkOjpzaXplX3QgbjEgPSBzaXplICogbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfdG90YWw8VDE+OjpzaXplOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjptYWtlX2FycmF5X2hlbHBlcjxUMltdPiBhMShuMSwgJnAyKTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltdPiBkMShuMSk7Ci0gICAgICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+IHMxKHAxLCBkMSwgYTEpOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbXT4qIEQyOwotICAgICAgICBwMSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VDEqPihwMik7Ci0gICAgICAgIEQyIGQyID0gc3RhdGljX2Nhc3Q8RDI+KHMxLl9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkpOwotICAgICAgICBkMi0+aW5pdChwMiwgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxUMj4odmFsdWUpKTsKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+KHMxLCBwMSk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX3NpemVfYXJyYXk8VD46OnR5cGUKLSAgICBtYWtlX3NoYXJlZCh0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9iYXNlPFQ+Ojp0eXBlJiYgdmFsdWUpIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9pbm5lcjxUPjo6dHlwZSBUMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9iYXNlPFQxPjo6dHlwZSBUMjsKLSAgICAgICAgZW51bSB7Ci0gICAgICAgICAgICBOID0gbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfdG90YWw8VD46OnNpemUKLSAgICAgICAgfTsKLSAgICAgICAgVDEqIHAxID0gMDsKLSAgICAgICAgVDIqIHAyID0gMDsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6bWFrZV9hcnJheV9oZWxwZXI8VDJbTl0+IGExKCZwMik7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbTl0+IGQxOwotICAgICAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPiBzMShwMSwgZDEsIGExKTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW05dPiogRDI7Ci0gICAgICAgIHAxID0gcmVpbnRlcnByZXRfY2FzdDxUMSo+KHAyKTsKLSAgICAgICAgRDIgZDIgPSBzdGF0aWNfY2FzdDxEMj4oczEuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSk7Ci0gICAgICAgIGQyLT5pbml0KHAyLCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPFQyPih2YWx1ZSkpOwotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4oczEsIHAxKTsKLSAgICB9Ci0jZW5kaWYKLSNlbmRpZgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX2FycmF5PFQ+Ojp0eXBlCi0gICAgbWFrZV9zaGFyZWRfbm9pbml0KHN0ZDo6c2l6ZV90IHNpemUpIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9pbm5lcjxUPjo6dHlwZSBUMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9iYXNlPFQxPjo6dHlwZSBUMjsKLSAgICAgICAgVDEqIHAxID0gMDsKLSAgICAgICAgVDIqIHAyID0gMDsKLSAgICAgICAgc3RkOjpzaXplX3QgbjEgPSBzaXplICogbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfdG90YWw8VDE+OjpzaXplOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjptYWtlX2FycmF5X2hlbHBlcjxUMltdPiBhMShuMSwgJnAyKTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltdPiBkMShuMSk7Ci0gICAgICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+IHMxKHAxLCBkMSwgYTEpOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbXT4qIEQyOwotICAgICAgICBwMSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VDEqPihwMik7Ci0gICAgICAgIEQyIGQyID0gc3RhdGljX2Nhc3Q8RDI+KHMxLl9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkpOwotICAgICAgICBkMi0+bm9pbml0KHAyKTsKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+KHMxLCBwMSk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX3NpemVfYXJyYXk8VD46OnR5cGUKLSAgICBtYWtlX3NoYXJlZF9ub2luaXQoKSB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfaW5uZXI8VD46OnR5cGUgVDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUMT46OnR5cGUgVDI7Ci0gICAgICAgIGVudW0gewotICAgICAgICAgICAgTiA9IG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X3RvdGFsPFQ+OjpzaXplCi0gICAgICAgIH07Ci0gICAgICAgIFQxKiBwMSA9IDA7Ci0gICAgICAgIFQyKiBwMiA9IDA7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6Om1ha2VfYXJyYXlfaGVscGVyPFQyW05dPiBhMSgmcDIpOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW05dPiBkMTsKLSAgICAgICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4gczEocDEsIGQxLCBhMSk7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltOXT4qIEQyOwotICAgICAgICBwMSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VDEqPihwMik7Ci0gICAgICAgIEQyIGQyID0gc3RhdGljX2Nhc3Q8RDI+KHMxLl9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkpOwotICAgICAgICBkMi0+bm9pbml0KHAyKTsKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+KHMxLCBwMSk7Ci0gICAgfQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL21ha2Vfc2hhcmVkX29iamVjdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9tYWtlX3NoYXJlZF9vYmplY3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzA0ZDUyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL21ha2Vfc2hhcmVkX29iamVjdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMyICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX01BS0VfU0hBUkVEX09CSkVDVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX01BS0VfU0hBUkVEX09CSkVDVF9IUFBfSU5DTFVERUQKLQotLy8gIG1ha2Vfc2hhcmVkX29iamVjdC5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDA3LCAyMDA4LCAyMDEyIFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQKLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvc21hcnRfcHRyL21ha2Vfc2hhcmVkLmh0bWwKLS8vICBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL3NoYXJlZF9wdHIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfZm9yd2FyZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvdHlwZV93aXRoX2FsaWdubWVudC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWxpZ25tZW50X29mLmhwcD4KLSNpbmNsdWRlIDxjc3RkZGVmPgotI2luY2x1ZGUgPG5ldz4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotdGVtcGxhdGU8IHN0ZDo6c2l6ZV90IE4sIHN0ZDo6c2l6ZV90IEEgPiBzdHJ1Y3Qgc3BfYWxpZ25lZF9zdG9yYWdlCi17Ci0gICAgdW5pb24gdHlwZQotICAgIHsKLSAgICAgICAgY2hhciBkYXRhX1sgTiBdOwotICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6dHlwZV93aXRoX2FsaWdubWVudDwgQSA+Ojp0eXBlIGFsaWduXzsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGNsYXNzIFQgPiBjbGFzcyBzcF9tc19kZWxldGVyCi17Ci1wcml2YXRlOgotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBzcF9hbGlnbmVkX3N0b3JhZ2U8IHNpemVvZiggVCApLCA6Om5kbmJvb3N0OjphbGlnbm1lbnRfb2Y8IFQgPjo6dmFsdWUgPjo6dHlwZSBzdG9yYWdlX3R5cGU7Ci0KLSAgICBib29sIGluaXRpYWxpemVkXzsKLSAgICBzdG9yYWdlX3R5cGUgc3RvcmFnZV87Ci0KLXByaXZhdGU6Ci0KLSAgICB2b2lkIGRlc3Ryb3koKQotICAgIHsKLSAgICAgICAgaWYoIGluaXRpYWxpemVkXyApCi0gICAgICAgIHsKLSNpZiBkZWZpbmVkKCBfX0dOVUNfXyApCi0KLSAgICAgICAgICAgIC8vIGZpeGVzIGluY29ycmVjdCBhbGlhc2luZyB3YXJuaW5nCi0gICAgICAgICAgICBUICogcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8IFQqID4oIHN0b3JhZ2VfLmRhdGFfICk7Ci0gICAgICAgICAgICBwLT5+VCgpOwotCi0jZWxzZQotCi0gICAgICAgICAgICByZWludGVycHJldF9jYXN0PCBUKiA+KCBzdG9yYWdlXy5kYXRhXyApLT5+VCgpOwotCi0jZW5kaWYKLQotICAgICAgICAgICAgaW5pdGlhbGl6ZWRfID0gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLXB1YmxpYzoKLQotICAgIHNwX21zX2RlbGV0ZXIoKSBORE5CT09TVF9OT0VYQ0VQVCA6IGluaXRpYWxpemVkXyggZmFsc2UgKQotICAgIHsKLSAgICB9Ci0KLSAgICAvLyBvcHRpbWl6YXRpb246IGRvIG5vdCBjb3B5IHN0b3JhZ2VfCi0gICAgc3BfbXNfZGVsZXRlciggc3BfbXNfZGVsZXRlciBjb25zdCAmICkgTkROQk9PU1RfTk9FWENFUFQgOiBpbml0aWFsaXplZF8oIGZhbHNlICkKLSAgICB7Ci0gICAgfQotCi0gICAgfnNwX21zX2RlbGV0ZXIoKQotICAgIHsKLSAgICAgICAgZGVzdHJveSgpOwotICAgIH0KLQotICAgIHZvaWQgb3BlcmF0b3IoKSggVCAqICkKLSAgICB7Ci0gICAgICAgIGRlc3Ryb3koKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBvcGVyYXRvcl9mbiggVCogKSAvLyBvcGVyYXRvcigpIGNhbid0IGJlIHN0YXRpYwotICAgIHsKLSAgICB9Ci0KLSAgICB2b2lkICogYWRkcmVzcygpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICByZXR1cm4gc3RvcmFnZV8uZGF0YV87Ci0gICAgfQotCi0gICAgdm9pZCBzZXRfaW5pdGlhbGl6ZWQoKSBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgaW5pdGlhbGl6ZWRfID0gdHJ1ZTsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTwgY2xhc3MgVCA+IHN0cnVjdCBzcF9pZl9ub3RfYXJyYXkKLXsKLSAgICB0eXBlZGVmIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gdHlwZTsKLX07Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTiApCi0KLXRlbXBsYXRlPCBjbGFzcyBUID4gc3RydWN0IHNwX2lmX25vdF9hcnJheTwgVFtdID4KLXsKLX07Ci0KLSNpZiAhZGVmaW5lZCggX19CT1JMQU5EQ19fICkgfHwgIU5ETkJPT1NUX1dPUktBUk9VTkQoIF9fQk9STEFORENfXywgPCAweDYwMCApCi0KLXRlbXBsYXRlPCBjbGFzcyBULCBzdGQ6OnNpemVfdCBOID4gc3RydWN0IHNwX2lmX25vdF9hcnJheTwgVFtOXSA+Ci17Ci19OwotCi0jZW5kaWYKLQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HICkKLSMgZGVmaW5lIE5ETkJPT1NUX1NQX01TRCggVCApIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lucGxhY2VfdGFnPCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gPigpCi0jZWxzZQotIyBkZWZpbmUgTkROQk9PU1RfU1BfTVNEKCBUICkgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+KCkKLSNlbmRpZgotCi0vLyBaZXJvLWFyZ3VtZW50IHZlcnNpb25zCi0vLwotLy8gVXNlZCBldmVuIHdoZW4gdmFyaWFkaWMgdGVtcGxhdGVzIGFyZSBhdmFpbGFibGUgYmVjYXVzZSBvZiB0aGUgbmV3IFQoKSB2cyBuZXcgVCBpc3N1ZQotCi10ZW1wbGF0ZTwgY2xhc3MgVCA+IHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIG1ha2Vfc2hhcmVkKCkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKCk7Ci0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCA+IHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIG1ha2Vfc2hhcmVkX25vaW5pdCgpCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICkgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVDsKLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBID4gdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgYWxsb2NhdGVfc2hhcmVkKCBBIGNvbnN0ICYgYSApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICksIGEgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCgpOwotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEEgPiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBhbGxvY2F0ZV9zaGFyZWRfbm9pbml0KCBBIGNvbnN0ICYgYSApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICksIGEgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVDsKLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTICkgJiYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTICkKLQotLy8gVmFyaWFkaWMgdGVtcGxhdGVzLCBydmFsdWUgcmVmZXJlbmNlCi0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBcmcxLCBjbGFzcy4uLiBBcmdzID4gdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgbWFrZV9zaGFyZWQoIEFyZzEgJiYgYXJnMSwgQXJncyAmJiAuLi4gYXJncyApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICkgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCggbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBcmcxPiggYXJnMSApLCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEFyZ3M+KCBhcmdzICkuLi4gKTsKLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBLCBjbGFzcyBBcmcxLCBjbGFzcy4uLiBBcmdzID4gdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgYWxsb2NhdGVfc2hhcmVkKCBBIGNvbnN0ICYgYSwgQXJnMSAmJiBhcmcxLCBBcmdzICYmIC4uLiBhcmdzICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSwgYSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEFyZzE+KCBhcmcxICksIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QXJncz4oIGFyZ3MgKS4uLiApOwotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotI2VsaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTICkKLQotLy8gRm9yIGV4YW1wbGUgTVNWQyAxMC4wCi0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBMSA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBtYWtlX3NoYXJlZCggQTEgJiYgYTEgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTE+KCBhMSApCi0gICAgICAgICk7Ci0KLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBLCBjbGFzcyBBMSA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBhbGxvY2F0ZV9zaGFyZWQoIEEgY29uc3QgJiBhLCBBMSAmJiBhMSApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICksIGEgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCggCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTE+KCBhMSApCi0gICAgICAgICk7Ci0KLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgbWFrZV9zaGFyZWQoIEExICYmIGExLCBBMiAmJiBhMiApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICkgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCgKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMT4oIGExICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEEyPiggYTIgKQotICAgICAgICApOwotCi0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQSwgY2xhc3MgQTEsIGNsYXNzIEEyID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIGFsbG9jYXRlX3NoYXJlZCggQSBjb25zdCAmIGEsIEExICYmIGExLCBBMiAmJiBhMiApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICksIGEgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCggCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTE+KCBhMSApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMj4oIGEyICkKLSAgICAgICAgKTsKLQotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgbWFrZV9zaGFyZWQoIEExICYmIGExLCBBMiAmJiBhMiwgQTMgJiYgYTMgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTE+KCBhMSApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMj4oIGEyICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEEzPiggYTMgKQotICAgICAgICApOwotCi0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMyA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBhbGxvY2F0ZV9zaGFyZWQoIEEgY29uc3QgJiBhLCBBMSAmJiBhMSwgQTIgJiYgYTIsIEEzICYmIGEzICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSwgYSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMT4oIGExICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEEyPiggYTIgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTM+KCBhMyApCi0gICAgICAgICk7Ci0KLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBtYWtlX3NoYXJlZCggQTEgJiYgYTEsIEEyICYmIGEyLCBBMyAmJiBhMywgQTQgJiYgYTQgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTE+KCBhMSApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMj4oIGEyICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEEzPiggYTMgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTQ+KCBhNCApCi0gICAgICAgICk7Ci0KLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBhbGxvY2F0ZV9zaGFyZWQoIEEgY29uc3QgJiBhLCBBMSAmJiBhMSwgQTIgJiYgYTIsIEEzICYmIGEzLCBBNCAmJiBhNCApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICksIGEgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCggCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTE+KCBhMSApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMj4oIGEyICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEEzPiggYTMgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTQ+KCBhNCApCi0gICAgICAgICk7Ci0KLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgbWFrZV9zaGFyZWQoIEExICYmIGExLCBBMiAmJiBhMiwgQTMgJiYgYTMsIEE0ICYmIGE0LCBBNSAmJiBhNSApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICkgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCgKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMT4oIGExICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEEyPiggYTIgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTM+KCBhMyApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBND4oIGE0ICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE1PiggYTUgKQotICAgICAgICApOwotCi0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1ID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIGFsbG9jYXRlX3NoYXJlZCggQSBjb25zdCAmIGEsIEExICYmIGExLCBBMiAmJiBhMiwgQTMgJiYgYTMsIEE0ICYmIGE0LCBBNSAmJiBhNSApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICksIGEgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCggCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTE+KCBhMSApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMj4oIGEyICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEEzPiggYTMgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTQ+KCBhNCApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBNT4oIGE1ICkKLSAgICAgICAgKTsKLQotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgbWFrZV9zaGFyZWQoIEExICYmIGExLCBBMiAmJiBhMiwgQTMgJiYgYTMsIEE0ICYmIGE0LCBBNSAmJiBhNSwgQTYgJiYgYTYgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTE+KCBhMSApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMj4oIGEyICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEEzPiggYTMgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTQ+KCBhNCApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBNT4oIGE1ICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE2PiggYTYgKQotICAgICAgICApOwotCi0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBhbGxvY2F0ZV9zaGFyZWQoIEEgY29uc3QgJiBhLCBBMSAmJiBhMSwgQTIgJiYgYTIsIEEzICYmIGEzLCBBNCAmJiBhNCwgQTUgJiYgYTUsIEE2ICYmIGE2ICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSwgYSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMT4oIGExICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEEyPiggYTIgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTM+KCBhMyApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBND4oIGE0ICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE1PiggYTUgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTY+KCBhNiApCi0gICAgICAgICk7Ci0KLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNyA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBtYWtlX3NoYXJlZCggQTEgJiYgYTEsIEEyICYmIGEyLCBBMyAmJiBhMywgQTQgJiYgYTQsIEE1ICYmIGE1LCBBNiAmJiBhNiwgQTcgJiYgYTcgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTE+KCBhMSApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMj4oIGEyICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEEzPiggYTMgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTQ+KCBhNCApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBNT4oIGE1ICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE2PiggYTYgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTc+KCBhNyApCi0gICAgICAgICk7Ci0KLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNyA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBhbGxvY2F0ZV9zaGFyZWQoIEEgY29uc3QgJiBhLCBBMSAmJiBhMSwgQTIgJiYgYTIsIEEzICYmIGEzLCBBNCAmJiBhNCwgQTUgJiYgYTUsIEE2ICYmIGE2LCBBNyAmJiBhNyApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICksIGEgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCggCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTE+KCBhMSApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMj4oIGEyICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEEzPiggYTMgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTQ+KCBhNCApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBNT4oIGE1ICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE2PiggYTYgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTc+KCBhNyApCi0gICAgICAgICk7Ci0KLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTggPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgbWFrZV9zaGFyZWQoIEExICYmIGExLCBBMiAmJiBhMiwgQTMgJiYgYTMsIEE0ICYmIGE0LCBBNSAmJiBhNSwgQTYgJiYgYTYsIEE3ICYmIGE3LCBBOCAmJiBhOCApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICkgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCgKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMT4oIGExICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEEyPiggYTIgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTM+KCBhMyApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBND4oIGE0ICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE1PiggYTUgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTY+KCBhNiApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBNz4oIGE3ICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE4PiggYTggKQotICAgICAgICApOwotCi0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4ID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIGFsbG9jYXRlX3NoYXJlZCggQSBjb25zdCAmIGEsIEExICYmIGExLCBBMiAmJiBhMiwgQTMgJiYgYTMsIEE0ICYmIGE0LCBBNSAmJiBhNSwgQTYgJiYgYTYsIEE3ICYmIGE3LCBBOCAmJiBhOCApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICksIGEgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCggCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTE+KCBhMSApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMj4oIGEyICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEEzPiggYTMgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTQ+KCBhNCApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBNT4oIGE1ICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE2PiggYTYgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTc+KCBhNyApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBOD4oIGE4ICkKLSAgICAgICAgKTsKLQotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCwgY2xhc3MgQTkgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgbWFrZV9zaGFyZWQoIEExICYmIGExLCBBMiAmJiBhMiwgQTMgJiYgYTMsIEE0ICYmIGE0LCBBNSAmJiBhNSwgQTYgJiYgYTYsIEE3ICYmIGE3LCBBOCAmJiBhOCwgQTkgJiYgYTkgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTE+KCBhMSApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMj4oIGEyICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEEzPiggYTMgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTQ+KCBhNCApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBNT4oIGE1ICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE2PiggYTYgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTc+KCBhNyApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBOD4oIGE4ICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE5PiggYTkgKQotICAgICAgICApOwotCi0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOSA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBhbGxvY2F0ZV9zaGFyZWQoIEEgY29uc3QgJiBhLCBBMSAmJiBhMSwgQTIgJiYgYTIsIEEzICYmIGEzLCBBNCAmJiBhNCwgQTUgJiYgYTUsIEE2ICYmIGE2LCBBNyAmJiBhNywgQTggJiYgYTgsIEE5ICYmIGE5ICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSwgYSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMT4oIGExICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEEyPiggYTIgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTM+KCBhMyApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBND4oIGE0ICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE1PiggYTUgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTY+KCBhNiApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBNz4oIGE3ICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE4PiggYTggKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTk+KCBhOSApCi0gICAgICAgICk7Ci0KLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLSNlbHNlCi0KLS8vIEMrKzAzIHZlcnNpb24KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEExID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIG1ha2Vfc2hhcmVkKCBBMSBjb25zdCAmIGExICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKCBhMSApOwotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEEsIGNsYXNzIEExID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIGFsbG9jYXRlX3NoYXJlZCggQSBjb25zdCAmIGEsIEExIGNvbnN0ICYgYTEgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApLCBhICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIGExICk7Ci0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIG1ha2Vfc2hhcmVkKCBBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKCBhMSwgYTIgKTsKLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBLCBjbGFzcyBBMSwgY2xhc3MgQTIgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgYWxsb2NhdGVfc2hhcmVkKCBBIGNvbnN0ICYgYSwgQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICksIGEgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCggYTEsIGEyICk7Ci0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMyA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBtYWtlX3NoYXJlZCggQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMyApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICkgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCggYTEsIGEyLCBhMyApOwotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEEsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgYWxsb2NhdGVfc2hhcmVkKCBBIGNvbnN0ICYgYSwgQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMyApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICksIGEgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCggYTEsIGEyLCBhMyApOwotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0ID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIG1ha2Vfc2hhcmVkKCBBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzLCBBNCBjb25zdCAmIGE0ICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKCBhMSwgYTIsIGEzLCBhNCApOwotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEEsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0ID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIGFsbG9jYXRlX3NoYXJlZCggQSBjb25zdCAmIGEsIEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApLCBhICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIGExLCBhMiwgYTMsIGE0ICk7Ci0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1ID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIG1ha2Vfc2hhcmVkKCBBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzLCBBNCBjb25zdCAmIGE0LCBBNSBjb25zdCAmIGE1ICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKCBhMSwgYTIsIGEzLCBhNCwgYTUgKTsKLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgYWxsb2NhdGVfc2hhcmVkKCBBIGNvbnN0ICYgYSwgQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMywgQTQgY29uc3QgJiBhNCwgQTUgY29uc3QgJiBhNSApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICksIGEgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCggYTEsIGEyLCBhMywgYTQsIGE1ICk7Ci0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBtYWtlX3NoYXJlZCggQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMywgQTQgY29uc3QgJiBhNCwgQTUgY29uc3QgJiBhNSwgQTYgY29uc3QgJiBhNiApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICkgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCggYTEsIGEyLCBhMywgYTQsIGE1LCBhNiApOwotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEEsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgYWxsb2NhdGVfc2hhcmVkKCBBIGNvbnN0ICYgYSwgQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMywgQTQgY29uc3QgJiBhNCwgQTUgY29uc3QgJiBhNSwgQTYgY29uc3QgJiBhNiApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICksIGEgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCggYTEsIGEyLCBhMywgYTQsIGE1LCBhNiApOwotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3ID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIG1ha2Vfc2hhcmVkKCBBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzLCBBNCBjb25zdCAmIGE0LCBBNSBjb25zdCAmIGE1LCBBNiBjb25zdCAmIGE2LCBBNyBjb25zdCAmIGE3ICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNyApOwotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEEsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3ID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIGFsbG9jYXRlX3NoYXJlZCggQSBjb25zdCAmIGEsIEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQsIEE1IGNvbnN0ICYgYTUsIEE2IGNvbnN0ICYgYTYsIEE3IGNvbnN0ICYgYTcgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApLCBhICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3ICk7Ci0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4ID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIG1ha2Vfc2hhcmVkKCBBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzLCBBNCBjb25zdCAmIGE0LCBBNSBjb25zdCAmIGE1LCBBNiBjb25zdCAmIGE2LCBBNyBjb25zdCAmIGE3LCBBOCBjb25zdCAmIGE4ICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTggKTsKLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTggPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgYWxsb2NhdGVfc2hhcmVkKCBBIGNvbnN0ICYgYSwgQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMywgQTQgY29uc3QgJiBhNCwgQTUgY29uc3QgJiBhNSwgQTYgY29uc3QgJiBhNiwgQTcgY29uc3QgJiBhNywgQTggY29uc3QgJiBhOCApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICksIGEgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCggYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4ICk7Ci0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOSA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBtYWtlX3NoYXJlZCggQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMywgQTQgY29uc3QgJiBhNCwgQTUgY29uc3QgJiBhNSwgQTYgY29uc3QgJiBhNiwgQTcgY29uc3QgJiBhNywgQTggY29uc3QgJiBhOCwgQTkgY29uc3QgJiBhOSApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICkgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCggYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSApOwotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEEsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCwgY2xhc3MgQTkgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgYWxsb2NhdGVfc2hhcmVkKCBBIGNvbnN0ICYgYSwgQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMywgQTQgY29uc3QgJiBhNCwgQTUgY29uc3QgJiBhNSwgQTYgY29uc3QgJiBhNiwgQTcgY29uc3QgJiBhNywgQTggY29uc3QgJiBhOCwgQTkgY29uc3QgJiBhOSApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICksIGEgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCggYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSApOwotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotI2VuZGlmCi0KLSN1bmRlZiBORE5CT09TVF9TUF9NU0QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX01BS0VfU0hBUkVEX09CSkVDVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL3Njb3BlZF9hcnJheS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9zY29wZWRfYXJyYXkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MThkNGMwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL3Njb3BlZF9hcnJheS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzIgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfU0NPUEVEX0FSUkFZX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfU0NPUEVEX0FSUkFZX0hQUF9JTkNMVURFRAotCi0vLyAgKEMpIENvcHlyaWdodCBHcmVnIENvbHZpbiBhbmQgQmVtYW4gRGF3ZXMgMTk5OCwgMTk5OS4KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDIgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvc21hcnRfcHRyL3Njb3BlZF9hcnJheS5odG0KLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY2hlY2tlZF9kZWxldGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfbnVsbHB0cl90LmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2luY2x1ZGUgPGNzdGRkZWY+ICAgICAgICAgICAgLy8gZm9yIHN0ZDo6cHRyZGlmZl90Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi0vLyBEZWJ1ZyBob29rcwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9FTkFCTEVfREVCVUdfSE9PS1MpCi0KLXZvaWQgc3BfYXJyYXlfY29uc3RydWN0b3JfaG9vayh2b2lkICogcCk7Ci12b2lkIHNwX2FycmF5X2Rlc3RydWN0b3JfaG9vayh2b2lkICogcCk7Ci0KLSNlbmRpZgotCi0vLyAgc2NvcGVkX2FycmF5IGV4dGVuZHMgc2NvcGVkX3B0ciB0byBhcnJheXMuIERlbGV0aW9uIG9mIHRoZSBhcnJheSBwb2ludGVkIHRvCi0vLyAgaXMgZ3VhcmFudGVlZCwgZWl0aGVyIG9uIGRlc3RydWN0aW9uIG9mIHRoZSBzY29wZWRfYXJyYXkgb3IgdmlhIGFuIGV4cGxpY2l0Ci0vLyAgcmVzZXQoKS4gVXNlIHNoYXJlZF9hcnJheSBvciBzdGQ6OnZlY3RvciBpZiB5b3VyIG5lZWRzIGFyZSBtb3JlIGNvbXBsZXguCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIHNjb3BlZF9hcnJheSAvLyBub25jb3B5YWJsZQotewotcHJpdmF0ZToKLQotICAgIFQgKiBweDsKLQotICAgIHNjb3BlZF9hcnJheShzY29wZWRfYXJyYXkgY29uc3QgJik7Ci0gICAgc2NvcGVkX2FycmF5ICYgb3BlcmF0b3I9KHNjb3BlZF9hcnJheSBjb25zdCAmKTsKLQotICAgIHR5cGVkZWYgc2NvcGVkX2FycmF5PFQ+IHRoaXNfdHlwZTsKLQotICAgIHZvaWQgb3BlcmF0b3I9PSggc2NvcGVkX2FycmF5IGNvbnN0JiApIGNvbnN0OwotICAgIHZvaWQgb3BlcmF0b3IhPSggc2NvcGVkX2FycmF5IGNvbnN0JiApIGNvbnN0OwotCi1wdWJsaWM6Ci0KLSAgICB0eXBlZGVmIFQgZWxlbWVudF90eXBlOwotCi0gICAgZXhwbGljaXQgc2NvcGVkX2FycmF5KCBUICogcCA9IDAgKSBORE5CT09TVF9OT0VYQ0VQVCA6IHB4KCBwICkKLSAgICB7Ci0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9FTkFCTEVfREVCVUdfSE9PS1MpCi0gICAgICAgIG5kbmJvb3N0OjpzcF9hcnJheV9jb25zdHJ1Y3Rvcl9ob29rKCBweCApOwotI2VuZGlmCi0gICAgfQotCi0gICAgfnNjb3BlZF9hcnJheSgpIC8vIG5ldmVyIHRocm93cwotICAgIHsKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX0VOQUJMRV9ERUJVR19IT09LUykKLSAgICAgICAgbmRuYm9vc3Q6OnNwX2FycmF5X2Rlc3RydWN0b3JfaG9vayggcHggKTsKLSNlbmRpZgotICAgICAgICBuZG5ib29zdDo6Y2hlY2tlZF9hcnJheV9kZWxldGUoIHB4ICk7Ci0gICAgfQotCi0gICAgdm9pZCByZXNldChUICogcCA9IDApIC8vIG5ldmVyIHRocm93cyAoYnV0IGhhcyBhIE5ETkJPT1NUX0FTU0VSVCBpbiBpdCwgc28gbm90IG1hcmtlZCB3aXRoIE5ETkJPT1NUX05PRVhDRVBUKQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKCBwID09IDAgfHwgcCAhPSBweCApOyAvLyBjYXRjaCBzZWxmLXJlc2V0IGVycm9ycwotICAgICAgICB0aGlzX3R5cGUocCkuc3dhcCgqdGhpcyk7Ci0gICAgfQotCi0gICAgVCAmIG9wZXJhdG9yW10oc3RkOjpwdHJkaWZmX3QgaSkgY29uc3QgLy8gbmV2ZXIgdGhyb3dzIChidXQgaGFzIGEgTkROQk9PU1RfQVNTRVJUIGluIGl0LCBzbyBub3QgbWFya2VkIHdpdGggTkROQk9PU1RfTk9FWENFUFQpCi0gICAgewotICAgICAgICBORE5CT09TVF9BU1NFUlQoIHB4ICE9IDAgKTsKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKCBpID49IDAgKTsKLSAgICAgICAgcmV0dXJuIHB4W2ldOwotICAgIH0KLQotICAgIFQgKiBnZXQoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIHB4OwotICAgIH0KLQotLy8gaW1wbGljaXQgY29udmVyc2lvbiB0byAiYm9vbCIKLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL29wZXJhdG9yX2Jvb2wuaHBwPgotCi0gICAgdm9pZCBzd2FwKHNjb3BlZF9hcnJheSAmIGIpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICBUICogdG1wID0gYi5weDsKLSAgICAgICAgYi5weCA9IHB4OwotICAgICAgICBweCA9IHRtcDsKLSAgICB9Ci19OwotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX05VTExQVFIgKQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KCBzY29wZWRfYXJyYXk8VD4gY29uc3QgJiBwLCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9udWxscHRyX3QgKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIHJldHVybiBwLmdldCgpID09IDA7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yPT0oIG5kbmJvb3N0OjpkZXRhaWw6OnNwX251bGxwdHJfdCwgc2NvcGVkX2FycmF5PFQ+IGNvbnN0ICYgcCApIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgcmV0dXJuIHAuZ2V0KCkgPT0gMDsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPSggc2NvcGVkX2FycmF5PFQ+IGNvbnN0ICYgcCwgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbnVsbHB0cl90ICkgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gcC5nZXQoKSAhPSAwOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9udWxscHRyX3QsIHNjb3BlZF9hcnJheTxUPiBjb25zdCAmIHAgKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIHJldHVybiBwLmdldCgpICE9IDA7Ci19Ci0KLSNlbmRpZgotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdm9pZCBzd2FwKHNjb3BlZF9hcnJheTxUPiAmIGEsIHNjb3BlZF9hcnJheTxUPiAmIGIpIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgYS5zd2FwKGIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX1NDT1BFRF9BUlJBWV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL3Njb3BlZF9wdHIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvc2NvcGVkX3B0ci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3OWIzOTMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvc2NvcGVkX3B0ci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTcgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfU0NPUEVEX1BUUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX1NDT1BFRF9QVFJfSFBQX0lOQ0xVREVECi0KLS8vICAoQykgQ29weXJpZ2h0IEdyZWcgQ29sdmluIGFuZCBCZW1hbiBEYXdlcyAxOTk4LCAxOTk5LgotLy8gIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9zbWFydF9wdHIvc2NvcGVkX3B0ci5odG0KLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY2hlY2tlZF9kZWxldGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfbnVsbHB0cl90LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQVVUT19QVFIKLSMgaW5jbHVkZSA8bWVtb3J5PiAgICAgICAgICAvLyBmb3Igc3RkOjphdXRvX3B0cgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi0vLyBEZWJ1ZyBob29rcwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9FTkFCTEVfREVCVUdfSE9PS1MpCi0KLXZvaWQgc3Bfc2NhbGFyX2NvbnN0cnVjdG9yX2hvb2sodm9pZCAqIHApOwotdm9pZCBzcF9zY2FsYXJfZGVzdHJ1Y3Rvcl9ob29rKHZvaWQgKiBwKTsKLQotI2VuZGlmCi0KLS8vICBzY29wZWRfcHRyIG1pbWljcyBhIGJ1aWx0LWluIHBvaW50ZXIgZXhjZXB0IHRoYXQgaXQgZ3VhcmFudGVlcyBkZWxldGlvbgotLy8gIG9mIHRoZSBvYmplY3QgcG9pbnRlZCB0bywgZWl0aGVyIG9uIGRlc3RydWN0aW9uIG9mIHRoZSBzY29wZWRfcHRyIG9yIHZpYQotLy8gIGFuIGV4cGxpY2l0IHJlc2V0KCkuIHNjb3BlZF9wdHIgaXMgYSBzaW1wbGUgc29sdXRpb24gZm9yIHNpbXBsZSBuZWVkczsKLS8vICB1c2Ugc2hhcmVkX3B0ciBvciBzdGQ6OmF1dG9fcHRyIGlmIHlvdXIgbmVlZHMgYXJlIG1vcmUgY29tcGxleC4KLQotdGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3Mgc2NvcGVkX3B0ciAvLyBub25jb3B5YWJsZQotewotcHJpdmF0ZToKLQotICAgIFQgKiBweDsKLQotICAgIHNjb3BlZF9wdHIoc2NvcGVkX3B0ciBjb25zdCAmKTsKLSAgICBzY29wZWRfcHRyICYgb3BlcmF0b3I9KHNjb3BlZF9wdHIgY29uc3QgJik7Ci0KLSAgICB0eXBlZGVmIHNjb3BlZF9wdHI8VD4gdGhpc190eXBlOwotCi0gICAgdm9pZCBvcGVyYXRvcj09KCBzY29wZWRfcHRyIGNvbnN0JiApIGNvbnN0OwotICAgIHZvaWQgb3BlcmF0b3IhPSggc2NvcGVkX3B0ciBjb25zdCYgKSBjb25zdDsKLQotcHVibGljOgotCi0gICAgdHlwZWRlZiBUIGVsZW1lbnRfdHlwZTsKLQotICAgIGV4cGxpY2l0IHNjb3BlZF9wdHIoIFQgKiBwID0gMCApOiBweCggcCApIC8vIG5ldmVyIHRocm93cwotICAgIHsKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX0VOQUJMRV9ERUJVR19IT09LUykKLSAgICAgICAgbmRuYm9vc3Q6OnNwX3NjYWxhcl9jb25zdHJ1Y3Rvcl9ob29rKCBweCApOwotI2VuZGlmCi0gICAgfQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0FVVE9fUFRSCi0KLSAgICBleHBsaWNpdCBzY29wZWRfcHRyKCBzdGQ6OmF1dG9fcHRyPFQ+IHAgKSBORE5CT09TVF9OT0VYQ0VQVCA6IHB4KCBwLnJlbGVhc2UoKSApCi0gICAgewotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotICAgICAgICBuZG5ib29zdDo6c3Bfc2NhbGFyX2NvbnN0cnVjdG9yX2hvb2soIHB4ICk7Ci0jZW5kaWYKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgfnNjb3BlZF9wdHIoKSAvLyBuZXZlciB0aHJvd3MKLSAgICB7Ci0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9FTkFCTEVfREVCVUdfSE9PS1MpCi0gICAgICAgIG5kbmJvb3N0OjpzcF9zY2FsYXJfZGVzdHJ1Y3Rvcl9ob29rKCBweCApOwotI2VuZGlmCi0gICAgICAgIG5kbmJvb3N0OjpjaGVja2VkX2RlbGV0ZSggcHggKTsKLSAgICB9Ci0KLSAgICB2b2lkIHJlc2V0KFQgKiBwID0gMCkgLy8gbmV2ZXIgdGhyb3dzCi0gICAgewotICAgICAgICBORE5CT09TVF9BU1NFUlQoIHAgPT0gMCB8fCBwICE9IHB4ICk7IC8vIGNhdGNoIHNlbGYtcmVzZXQgZXJyb3JzCi0gICAgICAgIHRoaXNfdHlwZShwKS5zd2FwKCp0aGlzKTsKLSAgICB9Ci0KLSAgICBUICYgb3BlcmF0b3IqKCkgY29uc3QgLy8gbmV2ZXIgdGhyb3dzCi0gICAgewotICAgICAgICBORE5CT09TVF9BU1NFUlQoIHB4ICE9IDAgKTsKLSAgICAgICAgcmV0dXJuICpweDsKLSAgICB9Ci0KLSAgICBUICogb3BlcmF0b3ItPigpIGNvbnN0IC8vIG5ldmVyIHRocm93cwotICAgIHsKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKCBweCAhPSAwICk7Ci0gICAgICAgIHJldHVybiBweDsKLSAgICB9Ci0KLSAgICBUICogZ2V0KCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiBweDsKLSAgICB9Ci0KLS8vIGltcGxpY2l0IGNvbnZlcnNpb24gdG8gImJvb2wiCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9vcGVyYXRvcl9ib29sLmhwcD4KLQotICAgIHZvaWQgc3dhcChzY29wZWRfcHRyICYgYikgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIFQgKiB0bXAgPSBiLnB4OwotICAgICAgICBiLnB4ID0gcHg7Ci0gICAgICAgIHB4ID0gdG1wOwotICAgIH0KLX07Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfTlVMTFBUUiApCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yPT0oIHNjb3BlZF9wdHI8VD4gY29uc3QgJiBwLCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9udWxscHRyX3QgKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIHJldHVybiBwLmdldCgpID09IDA7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yPT0oIG5kbmJvb3N0OjpkZXRhaWw6OnNwX251bGxwdHJfdCwgc2NvcGVkX3B0cjxUPiBjb25zdCAmIHAgKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIHJldHVybiBwLmdldCgpID09IDA7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yIT0oIHNjb3BlZF9wdHI8VD4gY29uc3QgJiBwLCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9udWxscHRyX3QgKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIHJldHVybiBwLmdldCgpICE9IDA7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yIT0oIG5kbmJvb3N0OjpkZXRhaWw6OnNwX251bGxwdHJfdCwgc2NvcGVkX3B0cjxUPiBjb25zdCAmIHAgKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIHJldHVybiBwLmdldCgpICE9IDA7Ci19Ci0KLSNlbmRpZgotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdm9pZCBzd2FwKHNjb3BlZF9wdHI8VD4gJiBhLCBzY29wZWRfcHRyPFQ+ICYgYikgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICBhLnN3YXAoYik7Ci19Ci0KLS8vIGdldF9wb2ludGVyKHApIGlzIGEgZ2VuZXJpYyB3YXkgdG8gc2F5IHAuZ2V0KCkKLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIFQgKiBnZXRfcG9pbnRlcihzY29wZWRfcHRyPFQ+IGNvbnN0ICYgcCkgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gcC5nZXQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX1NDT1BFRF9QVFJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9zaGFyZWRfYXJyYXkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvc2hhcmVkX2FycmF5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGVkZWYxMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9zaGFyZWRfYXJyYXkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjkwICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX1NIQVJFRF9BUlJBWV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX1NIQVJFRF9BUlJBWV9IUFBfSU5DTFVERUQKLQotLy8KLS8vICBzaGFyZWRfYXJyYXkuaHBwCi0vLwotLy8gIChDKSBDb3B5cmlnaHQgR3JlZyBDb2x2aW4gYW5kIEJlbWFuIERhd2VzIDE5OTgsIDE5OTkuCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyLCAyMDEyIFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9zbWFydF9wdHIvc2hhcmVkX2FycmF5Lmh0bSBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgIC8vIGZvciBicm9rZW4gY29tcGlsZXIgd29ya2Fyb3VuZHMKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTVNWQzZfTUVNQkVSX1RFTVBMQVRFUykKLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NoYXJlZF9hcnJheV9ubXQuaHBwPgotI2Vsc2UKLQotI2luY2x1ZGUgPG1lbW9yeT4gICAgICAgICAgICAgLy8gVFIxIGN5Y2xpYyBpbmNsdXNpb24gZml4Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NoZWNrZWRfZGVsZXRlLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9zaGFyZWRfcHRyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NoYXJlZF9jb3VudC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9udWxscHRyX3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2luY2x1ZGUgPGNzdGRkZWY+ICAgICAgICAgICAgLy8gZm9yIHN0ZDo6cHRyZGlmZl90Ci0jaW5jbHVkZSA8YWxnb3JpdGhtPiAgICAgICAgICAvLyBmb3Igc3RkOjpzd2FwCi0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4gICAgICAgICAvLyBmb3Igc3RkOjpsZXNzCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi0vLwotLy8gIHNoYXJlZF9hcnJheQotLy8KLS8vICBzaGFyZWRfYXJyYXkgZXh0ZW5kcyBzaGFyZWRfcHRyIHRvIGFycmF5cy4KLS8vICBUaGUgYXJyYXkgcG9pbnRlZCB0byBpcyBkZWxldGVkIHdoZW4gdGhlIGxhc3Qgc2hhcmVkX2FycmF5IHBvaW50aW5nIHRvIGl0Ci0vLyAgaXMgZGVzdHJveWVkIG9yIHJlc2V0LgotLy8KLQotdGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3Mgc2hhcmVkX2FycmF5Ci17Ci1wcml2YXRlOgotCi0gICAgLy8gQm9ybGFuZCA1LjUuMSBzcGVjaWZpYyB3b3JrYXJvdW5kcwotICAgIHR5cGVkZWYgY2hlY2tlZF9hcnJheV9kZWxldGVyPFQ+IGRlbGV0ZXI7Ci0gICAgdHlwZWRlZiBzaGFyZWRfYXJyYXk8VD4gdGhpc190eXBlOwotCi1wdWJsaWM6Ci0KLSAgICB0eXBlZGVmIFQgZWxlbWVudF90eXBlOwotCi0gICAgc2hhcmVkX2FycmF5KCkgTkROQk9PU1RfTk9FWENFUFQgOiBweCggMCApLCBwbigpCi0gICAgewotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+Ci0gICAgZXhwbGljaXQgc2hhcmVkX2FycmF5KCBZICogcCApOiBweCggcCApLCBwbiggcCwgY2hlY2tlZF9hcnJheV9kZWxldGVyPFk+KCkgKQotICAgIHsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfYXNzZXJ0X2NvbnZlcnRpYmxlPCBZW10sIFRbXSA+KCk7Ci0gICAgfQotCi0gICAgLy8KLSAgICAvLyBSZXF1aXJlbWVudHM6IEQncyBjb3B5IGNvbnN0cnVjdG9yIG11c3Qgbm90IHRocm93Ci0gICAgLy8KLSAgICAvLyBzaGFyZWRfYXJyYXkgd2lsbCByZWxlYXNlIHAgYnkgY2FsbGluZyBkKHApCi0gICAgLy8KLQotICAgIHRlbXBsYXRlPGNsYXNzIFksIGNsYXNzIEQ+IHNoYXJlZF9hcnJheSggWSAqIHAsIEQgZCApOiBweCggcCApLCBwbiggcCwgZCApCi0gICAgewotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9hc3NlcnRfY29udmVydGlibGU8IFlbXSwgVFtdID4oKTsKLSAgICB9Ci0KLSAgICAvLyBBcyBhYm92ZSwgYnV0IHdpdGggYWxsb2NhdG9yLiBBJ3MgY29weSBjb25zdHJ1Y3RvciBzaGFsbCBub3QgdGhyb3cuCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZLCBjbGFzcyBELCBjbGFzcyBBPiBzaGFyZWRfYXJyYXkoIFkgKiBwLCBEIGQsIEEgYSApOiBweCggcCApLCBwbiggcCwgZCwgYSApCi0gICAgewotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9hc3NlcnRfY29udmVydGlibGU8IFlbXSwgVFtdID4oKTsKLSAgICB9Ci0KLS8vICBnZW5lcmF0ZWQgY29weSBjb25zdHJ1Y3RvciwgZGVzdHJ1Y3RvciBhcmUgZmluZS4uLgotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTICkKLQotLy8gLi4uIGV4Y2VwdCBpbiBDKysweCwgbW92ZSBkaXNhYmxlcyB0aGUgaW1wbGljaXQgY29weQotCi0gICAgc2hhcmVkX2FycmF5KCBzaGFyZWRfYXJyYXkgY29uc3QgJiByICkgTkROQk9PU1RfTk9FWENFUFQgOiBweCggci5weCApLCBwbiggci5wbiApCi0gICAgewotICAgIH0KLQotICAgIHNoYXJlZF9hcnJheSggc2hhcmVkX2FycmF5ICYmIHIgKSBORE5CT09TVF9OT0VYQ0VQVCA6IHB4KCByLnB4ICksIHBuKCkKLSAgICB7Ci0gICAgICAgIHBuLnN3YXAoIHIucG4gKTsKLSAgICAgICAgci5weCA9IDA7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIC8vIGNvbnZlcnNpb24KLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+Ci0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX1NQX05PX1NQX0NPTlZFUlRJQkxFICkKLQotICAgIHNoYXJlZF9hcnJheSggc2hhcmVkX2FycmF5PFk+IGNvbnN0ICYgciwgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX2lmX2NvbnZlcnRpYmxlPCBZW10sIFRbXSA+Ojp0eXBlID0gbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW1wdHkoKSApCi0KLSNlbHNlCi0KLSAgICBzaGFyZWRfYXJyYXkoIHNoYXJlZF9hcnJheTxZPiBjb25zdCAmIHIgKQotCi0jZW5kaWYKLSAgICBORE5CT09TVF9OT0VYQ0VQVCA6IHB4KCByLnB4ICksIHBuKCByLnBuICkgLy8gbmV2ZXIgdGhyb3dzCi0gICAgewotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9hc3NlcnRfY29udmVydGlibGU8IFlbXSwgVFtdID4oKTsKLSAgICB9Ci0KLSAgICAvLyBhbGlhc2luZwotCi0gICAgdGVtcGxhdGU8IGNsYXNzIFkgPgotICAgIHNoYXJlZF9hcnJheSggc2hhcmVkX2FycmF5PFk+IGNvbnN0ICYgciwgZWxlbWVudF90eXBlICogcCApIE5ETkJPT1NUX05PRVhDRVBUIDogcHgoIHAgKSwgcG4oIHIucG4gKQotICAgIHsKLSAgICB9Ci0KLSAgICAvLyBhc3NpZ25tZW50Ci0KLSAgICBzaGFyZWRfYXJyYXkgJiBvcGVyYXRvcj0oIHNoYXJlZF9hcnJheSBjb25zdCAmIHIgKSBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgdGhpc190eXBlKCByICkuc3dhcCggKnRoaXMgKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01TVkMpIHx8IChORE5CT09TVF9NU1ZDID49IDE0MDApCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPgotICAgIHNoYXJlZF9hcnJheSAmIG9wZXJhdG9yPSggc2hhcmVkX2FycmF5PFk+IGNvbnN0ICYgciApIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICB0aGlzX3R5cGUoIHIgKS5zd2FwKCAqdGhpcyApOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUyApCi0KLSAgICBzaGFyZWRfYXJyYXkgJiBvcGVyYXRvcj0oIHNoYXJlZF9hcnJheSAmJiByICkgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHRoaXNfdHlwZSggc3RhdGljX2Nhc3Q8IHNoYXJlZF9hcnJheSAmJiA+KCByICkgKS5zd2FwKCAqdGhpcyApOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4KLSAgICBzaGFyZWRfYXJyYXkgJiBvcGVyYXRvcj0oIHNoYXJlZF9hcnJheTxZPiAmJiByICkgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHRoaXNfdHlwZSggc3RhdGljX2Nhc3Q8IHNoYXJlZF9hcnJheTxZPiAmJiA+KCByICkgKS5zd2FwKCAqdGhpcyApOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIHZvaWQgcmVzZXQoKSBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgdGhpc190eXBlKCkuc3dhcCggKnRoaXMgKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPiB2b2lkIHJlc2V0KCBZICogcCApIC8vIFkgbXVzdCBiZSBjb21wbGV0ZQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKCBwID09IDAgfHwgcCAhPSBweCApOyAvLyBjYXRjaCBzZWxmLXJlc2V0IGVycm9ycwotICAgICAgICB0aGlzX3R5cGUoIHAgKS5zd2FwKCAqdGhpcyApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFksIGNsYXNzIEQ+IHZvaWQgcmVzZXQoIFkgKiBwLCBEIGQgKQotICAgIHsKLSAgICAgICAgdGhpc190eXBlKCBwLCBkICkuc3dhcCggKnRoaXMgKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZLCBjbGFzcyBELCBjbGFzcyBBPiB2b2lkIHJlc2V0KCBZICogcCwgRCBkLCBBIGEgKQotICAgIHsKLSAgICAgICAgdGhpc190eXBlKCBwLCBkLCBhICkuc3dhcCggKnRoaXMgKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPiB2b2lkIHJlc2V0KCBzaGFyZWRfYXJyYXk8WT4gY29uc3QgJiByLCBlbGVtZW50X3R5cGUgKiBwICkKLSAgICB7Ci0gICAgICAgIHRoaXNfdHlwZSggciwgcCApLnN3YXAoICp0aGlzICk7Ci0gICAgfQotCi0gICAgVCAmIG9wZXJhdG9yW10gKHN0ZDo6cHRyZGlmZl90IGkpIGNvbnN0IC8vIG5ldmVyIHRocm93cyAoYnV0IGhhcyBhIE5ETkJPT1NUX0FTU0VSVCBpbiBpdCwgc28gbm90IG1hcmtlZCB3aXRoIE5ETkJPT1NUX05PRVhDRVBUKQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKHB4ICE9IDApOwotICAgICAgICBORE5CT09TVF9BU1NFUlQoaSA+PSAwKTsKLSAgICAgICAgcmV0dXJuIHB4W2ldOwotICAgIH0KLSAgICAKLSAgICBUICogZ2V0KCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiBweDsKLSAgICB9Ci0KLS8vIGltcGxpY2l0IGNvbnZlcnNpb24gdG8gImJvb2wiCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9vcGVyYXRvcl9ib29sLmhwcD4KLQotICAgIGJvb2wgdW5pcXVlKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiBwbi51bmlxdWUoKTsKLSAgICB9Ci0KLSAgICBsb25nIHVzZV9jb3VudCgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICByZXR1cm4gcG4udXNlX2NvdW50KCk7Ci0gICAgfQotCi0gICAgdm9pZCBzd2FwKHNoYXJlZF9hcnJheTxUPiAmIG90aGVyKSBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgc3RkOjpzd2FwKHB4LCBvdGhlci5weCk7Ci0gICAgICAgIHBuLnN3YXAob3RoZXIucG4pOwotICAgIH0KLQotICAgIHZvaWQgKiBfaW50ZXJuYWxfZ2V0X2RlbGV0ZXIoIG5kbmJvb3N0OjpkZXRhaWw6OnNwX3R5cGVpbmZvIGNvbnN0ICYgdGkgKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHBuLmdldF9kZWxldGVyKCB0aSApOwotICAgIH0KLQotcHJpdmF0ZToKLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+IGZyaWVuZCBjbGFzcyBzaGFyZWRfYXJyYXk7Ci0KLSAgICBUICogcHg7ICAgICAgICAgICAgICAgICAgICAgLy8gY29udGFpbmVkIHBvaW50ZXIKLSAgICBkZXRhaWw6OnNoYXJlZF9jb3VudCBwbjsgICAgLy8gcmVmZXJlbmNlIGNvdW50ZXIKLQotfTsgIC8vIHNoYXJlZF9hcnJheQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KHNoYXJlZF9hcnJheTxUPiBjb25zdCAmIGEsIHNoYXJlZF9hcnJheTxUPiBjb25zdCAmIGIpIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgcmV0dXJuIGEuZ2V0KCkgPT0gYi5nZXQoKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShzaGFyZWRfYXJyYXk8VD4gY29uc3QgJiBhLCBzaGFyZWRfYXJyYXk8VD4gY29uc3QgJiBiKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIHJldHVybiBhLmdldCgpICE9IGIuZ2V0KCk7Ci19Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfTlVMTFBUUiApCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yPT0oIHNoYXJlZF9hcnJheTxUPiBjb25zdCAmIHAsIG5kbmJvb3N0OjpkZXRhaWw6OnNwX251bGxwdHJfdCApIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgcmV0dXJuIHAuZ2V0KCkgPT0gMDsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PSggbmRuYm9vc3Q6OmRldGFpbDo6c3BfbnVsbHB0cl90LCBzaGFyZWRfYXJyYXk8VD4gY29uc3QgJiBwICkgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gcC5nZXQoKSA9PSAwOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KCBzaGFyZWRfYXJyYXk8VD4gY29uc3QgJiBwLCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9udWxscHRyX3QgKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIHJldHVybiBwLmdldCgpICE9IDA7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yIT0oIG5kbmJvb3N0OjpkZXRhaWw6OnNwX251bGxwdHJfdCwgc2hhcmVkX2FycmF5PFQ+IGNvbnN0ICYgcCApIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgcmV0dXJuIHAuZ2V0KCkgIT0gMDsKLX0KLQotI2VuZGlmCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yPChzaGFyZWRfYXJyYXk8VD4gY29uc3QgJiBhLCBzaGFyZWRfYXJyYXk8VD4gY29uc3QgJiBiKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIHJldHVybiBzdGQ6Omxlc3M8VCo+KCkoYS5nZXQoKSwgYi5nZXQoKSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgc3dhcChzaGFyZWRfYXJyYXk8VD4gJiBhLCBzaGFyZWRfYXJyYXk8VD4gJiBiKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIGEuc3dhcChiKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIEQsIGNsYXNzIFQgPiBEICogZ2V0X2RlbGV0ZXIoIHNoYXJlZF9hcnJheTxUPiBjb25zdCAmIHAgKQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDwgRCAqID4oIHAuX2ludGVybmFsX2dldF9kZWxldGVyKCBORE5CT09TVF9TUF9UWVBFSUQoRCkgKSApOwotfQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vICNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX01FTUJFUl9URU1QTEFURVMpICYmICFkZWZpbmVkKE5ETkJPT1NUX01TVkM2X01FTUJFUl9URU1QTEFURVMpCi0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfU0hBUkVEX0FSUkFZX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvc2hhcmVkX3B0ci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9zaGFyZWRfcHRyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTBmYTQ3ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9zaGFyZWRfcHRyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMzUgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfU0hBUkVEX1BUUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX1NIQVJFRF9QVFJfSFBQX0lOQ0xVREVECi0KLS8vCi0vLyAgc2hhcmVkX3B0ci5ocHAKLS8vCi0vLyAgKEMpIENvcHlyaWdodCBHcmVnIENvbHZpbiBhbmQgQmVtYW4gRGF3ZXMgMTk5OCwgMTk5OS4KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEtMjAwOCBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvc21hcnRfcHRyL3NoYXJlZF9wdHIuaHRtIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAgLy8gZm9yIGJyb2tlbiBjb21waWxlciB3b3JrYXJvdW5kcwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVTKSAmJiAhZGVmaW5lZChORE5CT09TVF9NU1ZDNl9NRU1CRVJfVEVNUExBVEVTKQotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc2hhcmVkX3B0cl9ubXQuaHBwPgotI2Vsc2UKLQotLy8gSW4gb3JkZXIgdG8gYXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jaWVzIHdpdGggQm9vc3QuVFIxCi0vLyB3ZSBtYWtlIHN1cmUgdGhhdCBvdXIgaW5jbHVkZSBvZiA8bWVtb3J5PiBkb2Vzbid0IHRyeSB0bwotLy8gcHVsbCBpbiB0aGUgVFIxIGhlYWRlcnM6IHRoYXQncyB3aHkgd2UgdXNlIHRoaXMgaGVhZGVyIAotLy8gcmF0aGVyIHRoYW4gaW5jbHVkaW5nIDxtZW1vcnk+IGRpcmVjdGx5OgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9ub190cjEvbWVtb3J5LmhwcD4gIC8vIHN0ZDo6YXV0b19wdHIKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY2hlY2tlZF9kZWxldGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zaGFyZWRfY291bnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvbnZlcnRpYmxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX251bGxwdHJfdC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9TUF9OT19BVE9NSUNfQUNDRVNTKQotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2tfcG9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbWVtb3J5X29yZGVyLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPiAgICAgICAgICAgIC8vIGZvciBzdGQ6OnN3YXAKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPiAgICAgICAgICAgLy8gZm9yIHN0ZDo6bGVzcwotI2luY2x1ZGUgPHR5cGVpbmZvPiAgICAgICAgICAgICAvLyBmb3Igc3RkOjpiYWRfY2FzdAotI2luY2x1ZGUgPGNzdGRkZWY+ICAgICAgICAgICAgICAvLyBmb3Igc3RkOjpzaXplX3QKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lPU1RSRUFNKQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lPU0ZXRCkKLSNpbmNsdWRlIDxpb3Nmd2Q+ICAgICAgICAgICAgICAgLy8gZm9yIHN0ZDo6YmFzaWNfb3N0cmVhbQotI2Vsc2UKLSNpbmNsdWRlIDxvc3RyZWFtPgotI2VuZGlmCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIHNoYXJlZF9wdHI7Ci10ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyB3ZWFrX3B0cjsKLXRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIGVuYWJsZV9zaGFyZWRfZnJvbV90aGlzOwotY2xhc3MgZW5hYmxlX3NoYXJlZF9mcm9tX3JhdzsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi0vLyBzcF9lbGVtZW50LCBlbGVtZW50X3R5cGUKLQotdGVtcGxhdGU8IGNsYXNzIFQgPiBzdHJ1Y3Qgc3BfZWxlbWVudAotewotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICkKLQotdGVtcGxhdGU8IGNsYXNzIFQgPiBzdHJ1Y3Qgc3BfZWxlbWVudDwgVFtdID4KLXsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLSNpZiAhZGVmaW5lZCggX19CT1JMQU5EQ19fICkgfHwgIU5ETkJPT1NUX1dPUktBUk9VTkQoIF9fQk9STEFORENfXywgPCAweDYwMCApCi0KLXRlbXBsYXRlPCBjbGFzcyBULCBzdGQ6OnNpemVfdCBOID4gc3RydWN0IHNwX2VsZW1lbnQ8IFRbTl0gPgotewotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotI2VuZGlmCi0KLSNlbmRpZiAvLyAhZGVmaW5lZCggTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTiApCi0KLS8vIHNwX2RlcmVmZXJlbmNlLCByZXR1cm4gdHlwZSBvZiBvcGVyYXRvcioKLQotdGVtcGxhdGU8IGNsYXNzIFQgPiBzdHJ1Y3Qgc3BfZGVyZWZlcmVuY2UKLXsKLSAgICB0eXBlZGVmIFQgJiB0eXBlOwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qgc3BfZGVyZWZlcmVuY2U8IHZvaWQgPgotewotICAgIHR5cGVkZWYgdm9pZCB0eXBlOwotfTsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TKQotCi10ZW1wbGF0ZTw+IHN0cnVjdCBzcF9kZXJlZmVyZW5jZTwgdm9pZCBjb25zdCA+Ci17Ci0gICAgdHlwZWRlZiB2b2lkIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBzcF9kZXJlZmVyZW5jZTwgdm9pZCB2b2xhdGlsZSA+Ci17Ci0gICAgdHlwZWRlZiB2b2lkIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBzcF9kZXJlZmVyZW5jZTwgdm9pZCBjb25zdCB2b2xhdGlsZSA+Ci17Ci0gICAgdHlwZWRlZiB2b2lkIHR5cGU7Ci19OwotCi0jZW5kaWYgLy8gIWRlZmluZWQoTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMpCi0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTiApCi0KLXRlbXBsYXRlPCBjbGFzcyBUID4gc3RydWN0IHNwX2RlcmVmZXJlbmNlPCBUW10gPgotewotICAgIHR5cGVkZWYgdm9pZCB0eXBlOwotfTsKLQotI2lmICFkZWZpbmVkKCBfX0JPUkxBTkRDX18gKSB8fCAhTkROQk9PU1RfV09SS0FST1VORCggX19CT1JMQU5EQ19fLCA8IDB4NjAwICkKLQotdGVtcGxhdGU8IGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4gPiBzdHJ1Y3Qgc3BfZGVyZWZlcmVuY2U8IFRbTl0gPgotewotICAgIHR5cGVkZWYgdm9pZCB0eXBlOwotfTsKLQotI2VuZGlmCi0KLSNlbmRpZiAvLyAhZGVmaW5lZCggTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTiApCi0KLS8vIHNwX21lbWJlcl9hY2Nlc3MsIHJldHVybiB0eXBlIG9mIG9wZXJhdG9yLT4KLQotdGVtcGxhdGU8IGNsYXNzIFQgPiBzdHJ1Y3Qgc3BfbWVtYmVyX2FjY2VzcwotewotICAgIHR5cGVkZWYgVCAqIHR5cGU7Ci19OwotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gKQotCi10ZW1wbGF0ZTwgY2xhc3MgVCA+IHN0cnVjdCBzcF9tZW1iZXJfYWNjZXNzPCBUW10gPgotewotICAgIHR5cGVkZWYgdm9pZCB0eXBlOwotfTsKLQotI2lmICFkZWZpbmVkKCBfX0JPUkxBTkRDX18gKSB8fCAhTkROQk9PU1RfV09SS0FST1VORCggX19CT1JMQU5EQ19fLCA8IDB4NjAwICkKLQotdGVtcGxhdGU8IGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4gPiBzdHJ1Y3Qgc3BfbWVtYmVyX2FjY2VzczwgVFtOXSA+Ci17Ci0gICAgdHlwZWRlZiB2b2lkIHR5cGU7Ci19OwotCi0jZW5kaWYKLQotI2VuZGlmIC8vICFkZWZpbmVkKCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICkKLQotLy8gc3BfYXJyYXlfYWNjZXNzLCByZXR1cm4gdHlwZSBvZiBvcGVyYXRvcltdCi0KLXRlbXBsYXRlPCBjbGFzcyBUID4gc3RydWN0IHNwX2FycmF5X2FjY2VzcwotewotICAgIHR5cGVkZWYgdm9pZCB0eXBlOwotfTsKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICkKLQotdGVtcGxhdGU8IGNsYXNzIFQgPiBzdHJ1Y3Qgc3BfYXJyYXlfYWNjZXNzPCBUW10gPgotewotICAgIHR5cGVkZWYgVCAmIHR5cGU7Ci19OwotCi0jaWYgIWRlZmluZWQoIF9fQk9STEFORENfXyApIHx8ICFORE5CT09TVF9XT1JLQVJPVU5EKCBfX0JPUkxBTkRDX18sIDwgMHg2MDAgKQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgc3RkOjpzaXplX3QgTiA+IHN0cnVjdCBzcF9hcnJheV9hY2Nlc3M8IFRbTl0gPgotewotICAgIHR5cGVkZWYgVCAmIHR5cGU7Ci19OwotCi0jZW5kaWYKLQotI2VuZGlmIC8vICFkZWZpbmVkKCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICkKLQotLy8gc3BfZXh0ZW50LCBmb3Igb3BlcmF0b3JbXSBpbmRleCBjaGVjawotCi10ZW1wbGF0ZTwgY2xhc3MgVCA+IHN0cnVjdCBzcF9leHRlbnQKLXsKLSAgICBlbnVtIF92dCB7IHZhbHVlID0gMCB9OwotfTsKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICkKLQotdGVtcGxhdGU8IGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4gPiBzdHJ1Y3Qgc3BfZXh0ZW50PCBUW05dID4KLXsKLSAgICBlbnVtIF92dCB7IHZhbHVlID0gTiB9OwotfTsKLQotI2VuZGlmIC8vICFkZWZpbmVkKCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICkKLQotLy8gZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMgc3VwcG9ydAotCi10ZW1wbGF0ZTwgY2xhc3MgWCwgY2xhc3MgWSwgY2xhc3MgVCA+IGlubGluZSB2b2lkIHNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCBuZG5ib29zdDo6c2hhcmVkX3B0cjxYPiBjb25zdCAqIHBweCwgWSBjb25zdCAqIHB5LCBuZG5ib29zdDo6ZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXM8IFQgPiBjb25zdCAqIHBlICkKLXsKLSAgICBpZiggcGUgIT0gMCApCi0gICAgewotICAgICAgICBwZS0+X2ludGVybmFsX2FjY2VwdF9vd25lciggcHB4LCBjb25zdF9jYXN0PCBZKiA+KCBweSApICk7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTwgY2xhc3MgWCwgY2xhc3MgWSA+IGlubGluZSB2b2lkIHNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCBuZG5ib29zdDo6c2hhcmVkX3B0cjxYPiAqIHBweCwgWSBjb25zdCAqIHB5LCBuZG5ib29zdDo6ZW5hYmxlX3NoYXJlZF9mcm9tX3JhdyBjb25zdCAqIHBlICk7Ci0KLSNpZmRlZiBfTUFOQUdFRAotCi0vLyBBdm9pZCBDNDc5MywgLi4uIGNhdXNlcyBuYXRpdmUgY29kZSBnZW5lcmF0aW9uCi0KLXN0cnVjdCBzcF9hbnlfcG9pbnRlcgotewotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IHNwX2FueV9wb2ludGVyKCBUKiApIHt9Ci19OwotCi1pbmxpbmUgdm9pZCBzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggc3BfYW55X3BvaW50ZXIsIHNwX2FueV9wb2ludGVyLCBzcF9hbnlfcG9pbnRlciApCi17Ci19Ci0KLSNlbHNlIC8vIF9NQU5BR0VECi0KLWlubGluZSB2b2lkIHNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAuLi4gKQotewotfQotCi0jZW5kaWYgLy8gX01BTkFHRUQKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19TRklOQUUgKSAmJiAhZGVmaW5lZCggTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTiApICYmICFkZWZpbmVkKCBORE5CT09TVF9OT19BVVRPX1BUUiApCi0KLS8vIHJ2YWx1ZSBhdXRvX3B0ciBzdXBwb3J0IGJhc2VkIG9uIGEgdGVjaG5pcXVlIGJ5IERhdmUgQWJyYWhhbXMKLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIFIgPiBzdHJ1Y3Qgc3BfZW5hYmxlX2lmX2F1dG9fcHRyCi17Ci19OwotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgUiA+IHN0cnVjdCBzcF9lbmFibGVfaWZfYXV0b19wdHI8IHN0ZDo6YXV0b19wdHI8IFQgPiwgUiA+Ci17Ci0gICAgdHlwZWRlZiBSIHR5cGU7Ci19OyAKLQotI2VuZGlmCi0KLS8vIHNwX2Fzc2VydF9jb252ZXJ0aWJsZQotCi10ZW1wbGF0ZTwgY2xhc3MgWSwgY2xhc3MgVCA+IGlubGluZSB2b2lkIHNwX2Fzc2VydF9jb252ZXJ0aWJsZSgpCi17Ci0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX1NQX05PX1NQX0NPTlZFUlRJQkxFICkKLQotICAgIC8vIHN0YXRpY19hc3NlcnQoIHNwX2NvbnZlcnRpYmxlPCBZLCBUID46OnZhbHVlICk7Ci0gICAgdHlwZWRlZiBjaGFyIHRtcFsgc3BfY29udmVydGlibGU8IFksIFQgPjo6dmFsdWU/IDE6IC0xIF07Ci0gICAgKHZvaWQpc2l6ZW9mKCB0bXAgKTsKLQotI2Vsc2UKLQotICAgIFQqIHAgPSBzdGF0aWNfY2FzdDwgWSogPiggMCApOwotICAgICh2b2lkKXA7Ci0KLSNlbmRpZgotfQotCi0vLyBwb2ludGVyIGNvbnN0cnVjdG9yIGhlbHBlcgotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgWSA+IGlubGluZSB2b2lkIHNwX3BvaW50ZXJfY29uc3RydWN0KCBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+ICogcHB4LCBZICogcCwgbmRuYm9vc3Q6OmRldGFpbDo6c2hhcmVkX2NvdW50ICYgcG4gKQotewotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNoYXJlZF9jb3VudCggcCApLnN3YXAoIHBuICk7Ci0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoIHBweCwgcCwgcCApOwotfQotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gKQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgWSA+IGlubGluZSB2b2lkIHNwX3BvaW50ZXJfY29uc3RydWN0KCBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVFtdID4gKiAvKnBweCovLCBZICogcCwgbmRuYm9vc3Q6OmRldGFpbDo6c2hhcmVkX2NvdW50ICYgcG4gKQotewotICAgIHNwX2Fzc2VydF9jb252ZXJ0aWJsZTwgWVtdLCBUW10gPigpOwotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNoYXJlZF9jb3VudCggcCwgbmRuYm9vc3Q6OmNoZWNrZWRfYXJyYXlfZGVsZXRlcjwgVCA+KCkgKS5zd2FwKCBwbiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgc3RkOjpzaXplX3QgTiwgY2xhc3MgWSA+IGlubGluZSB2b2lkIHNwX3BvaW50ZXJfY29uc3RydWN0KCBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVFtOXSA+ICogLypwcHgqLywgWSAqIHAsIG5kbmJvb3N0OjpkZXRhaWw6OnNoYXJlZF9jb3VudCAmIHBuICkKLXsKLSAgICBzcF9hc3NlcnRfY29udmVydGlibGU8IFlbTl0sIFRbTl0gPigpOwotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNoYXJlZF9jb3VudCggcCwgbmRuYm9vc3Q6OmNoZWNrZWRfYXJyYXlfZGVsZXRlcjwgVCA+KCkgKS5zd2FwKCBwbiApOwotfQotCi0jZW5kaWYgLy8gIWRlZmluZWQoIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gKQotCi0vLyBkZWxldGVyIGNvbnN0cnVjdG9yIGhlbHBlcgotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgWSA+IGlubGluZSB2b2lkIHNwX2RlbGV0ZXJfY29uc3RydWN0KCBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+ICogcHB4LCBZICogcCApCi17Ci0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoIHBweCwgcCwgcCApOwotfQotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gKQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgWSA+IGlubGluZSB2b2lkIHNwX2RlbGV0ZXJfY29uc3RydWN0KCBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVFtdID4gKiAvKnBweCovLCBZICogLypwKi8gKQotewotICAgIHNwX2Fzc2VydF9jb252ZXJ0aWJsZTwgWVtdLCBUW10gPigpOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgc3RkOjpzaXplX3QgTiwgY2xhc3MgWSA+IGlubGluZSB2b2lkIHNwX2RlbGV0ZXJfY29uc3RydWN0KCBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVFtOXSA+ICogLypwcHgqLywgWSAqIC8qcCovICkKLXsKLSAgICBzcF9hc3NlcnRfY29udmVydGlibGU8IFlbTl0sIFRbTl0gPigpOwotfQotCi0jZW5kaWYgLy8gIWRlZmluZWQoIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gKQotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotCi0vLwotLy8gIHNoYXJlZF9wdHIKLS8vCi0vLyAgQW4gZW5oYW5jZWQgcmVsYXRpdmUgb2Ygc2NvcGVkX3B0ciB3aXRoIHJlZmVyZW5jZSBjb3VudGVkIGNvcHkgc2VtYW50aWNzLgotLy8gIFRoZSBvYmplY3QgcG9pbnRlZCB0byBpcyBkZWxldGVkIHdoZW4gdGhlIGxhc3Qgc2hhcmVkX3B0ciBwb2ludGluZyB0byBpdAotLy8gIGlzIGRlc3Ryb3llZCBvciByZXNldC4KLS8vCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIHNoYXJlZF9wdHIKLXsKLXByaXZhdGU6Ci0KLSAgICAvLyBCb3JsYW5kIDUuNS4xIHNwZWNpZmljIHdvcmthcm91bmQKLSAgICB0eXBlZGVmIHNoYXJlZF9wdHI8VD4gdGhpc190eXBlOwotCi1wdWJsaWM6Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VsZW1lbnQ8IFQgPjo6dHlwZSBlbGVtZW50X3R5cGU7Ci0KLSAgICBzaGFyZWRfcHRyKCkgTkROQk9PU1RfTk9FWENFUFQgOiBweCggMCApLCBwbigpIC8vIG5ldmVyIHRocm93cyBpbiAxLjMwKwotICAgIHsKLSAgICB9Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfTlVMTFBUUiApCi0KLSAgICBzaGFyZWRfcHRyKCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9udWxscHRyX3QgKSBORE5CT09TVF9OT0VYQ0VQVCA6IHB4KCAwICksIHBuKCkgLy8gbmV2ZXIgdGhyb3dzCi0gICAgewotICAgIH0KLQotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPgotICAgIGV4cGxpY2l0IHNoYXJlZF9wdHIoIFkgKiBwICk6IHB4KCBwICksIHBuKCkgLy8gWSBtdXN0IGJlIGNvbXBsZXRlCi0gICAgewotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9wb2ludGVyX2NvbnN0cnVjdCggdGhpcywgcCwgcG4gKTsKLSAgICB9Ci0KLSAgICAvLwotICAgIC8vIFJlcXVpcmVtZW50czogRCdzIGNvcHkgY29uc3RydWN0b3IgbXVzdCBub3QgdGhyb3cKLSAgICAvLwotICAgIC8vIHNoYXJlZF9wdHIgd2lsbCByZWxlYXNlIHAgYnkgY2FsbGluZyBkKHApCi0gICAgLy8KLQotICAgIHRlbXBsYXRlPGNsYXNzIFksIGNsYXNzIEQ+IHNoYXJlZF9wdHIoIFkgKiBwLCBEIGQgKTogcHgoIHAgKSwgcG4oIHAsIGQgKQotICAgIHsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZGVsZXRlcl9jb25zdHJ1Y3QoIHRoaXMsIHAgKTsKLSAgICB9Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfTlVMTFBUUiApCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBEPiBzaGFyZWRfcHRyKCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9udWxscHRyX3QgcCwgRCBkICk6IHB4KCBwICksIHBuKCBwLCBkICkKLSAgICB7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIC8vIEFzIGFib3ZlLCBidXQgd2l0aCBhbGxvY2F0b3IuIEEncyBjb3B5IGNvbnN0cnVjdG9yIHNoYWxsIG5vdCB0aHJvdy4KLQotICAgIHRlbXBsYXRlPGNsYXNzIFksIGNsYXNzIEQsIGNsYXNzIEE+IHNoYXJlZF9wdHIoIFkgKiBwLCBEIGQsIEEgYSApOiBweCggcCApLCBwbiggcCwgZCwgYSApCi0gICAgewotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9kZWxldGVyX2NvbnN0cnVjdCggdGhpcywgcCApOwotICAgIH0KLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9OVUxMUFRSICkKLQotICAgIHRlbXBsYXRlPGNsYXNzIEQsIGNsYXNzIEE+IHNoYXJlZF9wdHIoIG5kbmJvb3N0OjpkZXRhaWw6OnNwX251bGxwdHJfdCBwLCBEIGQsIEEgYSApOiBweCggcCApLCBwbiggcCwgZCwgYSApCi0gICAgewotICAgIH0KLQotI2VuZGlmCi0KLS8vICBnZW5lcmF0ZWQgY29weSBjb25zdHJ1Y3RvciwgZGVzdHJ1Y3RvciBhcmUgZmluZS4uLgotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTICkKLQotLy8gLi4uIGV4Y2VwdCBpbiBDKysweCwgbW92ZSBkaXNhYmxlcyB0aGUgaW1wbGljaXQgY29weQotCi0gICAgc2hhcmVkX3B0ciggc2hhcmVkX3B0ciBjb25zdCAmIHIgKSBORE5CT09TVF9OT0VYQ0VQVCA6IHB4KCByLnB4ICksIHBuKCByLnBuICkKLSAgICB7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+Ci0gICAgZXhwbGljaXQgc2hhcmVkX3B0ciggd2Vha19wdHI8WT4gY29uc3QgJiByICk6IHBuKCByLnBuICkgLy8gbWF5IHRocm93Ci0gICAgewotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9hc3NlcnRfY29udmVydGlibGU8IFksIFQgPigpOwotCi0gICAgICAgIC8vIGl0IGlzIG5vdyBzYWZlIHRvIGNvcHkgci5weCwgYXMgcG4oci5wbikgZGlkIG5vdCB0aHJvdwotICAgICAgICBweCA9IHIucHg7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4KLSAgICBzaGFyZWRfcHRyKCB3ZWFrX3B0cjxZPiBjb25zdCAmIHIsIG5kbmJvb3N0OjpkZXRhaWw6OnNwX25vdGhyb3dfdGFnICkKLSAgICBORE5CT09TVF9OT0VYQ0VQVCA6IHB4KCAwICksIHBuKCByLnBuLCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9ub3Rocm93X3RhZygpICkKLSAgICB7Ci0gICAgICAgIGlmKCAhcG4uZW1wdHkoKSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHB4ID0gci5weDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+Ci0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX1NQX05PX1NQX0NPTlZFUlRJQkxFICkKLQotICAgIHNoYXJlZF9wdHIoIHNoYXJlZF9wdHI8WT4gY29uc3QgJiByLCB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfaWZfY29udmVydGlibGU8WSxUPjo6dHlwZSA9IG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VtcHR5KCkgKQotCi0jZWxzZQotCi0gICAgc2hhcmVkX3B0ciggc2hhcmVkX3B0cjxZPiBjb25zdCAmIHIgKQotCi0jZW5kaWYKLSAgICBORE5CT09TVF9OT0VYQ0VQVCA6IHB4KCByLnB4ICksIHBuKCByLnBuICkKLSAgICB7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2Fzc2VydF9jb252ZXJ0aWJsZTwgWSwgVCA+KCk7Ci0gICAgfQotCi0gICAgLy8gYWxpYXNpbmcKLSAgICB0ZW1wbGF0ZTwgY2xhc3MgWSA+Ci0gICAgc2hhcmVkX3B0ciggc2hhcmVkX3B0cjxZPiBjb25zdCAmIHIsIGVsZW1lbnRfdHlwZSAqIHAgKSBORE5CT09TVF9OT0VYQ0VQVCA6IHB4KCBwICksIHBuKCByLnBuICkKLSAgICB7Ci0gICAgfQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0FVVE9fUFRSCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPgotICAgIGV4cGxpY2l0IHNoYXJlZF9wdHIoIHN0ZDo6YXV0b19wdHI8WT4gJiByICk6IHB4KHIuZ2V0KCkpLCBwbigpCi0gICAgewotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9hc3NlcnRfY29udmVydGlibGU8IFksIFQgPigpOwotCi0gICAgICAgIFkgKiB0bXAgPSByLmdldCgpOwotICAgICAgICBwbiA9IG5kbmJvb3N0OjpkZXRhaWw6OnNoYXJlZF9jb3VudCggciApOwotCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2RlbGV0ZXJfY29uc3RydWN0KCB0aGlzLCB0bXAgKTsKLSAgICB9Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMgKQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4KLSAgICBzaGFyZWRfcHRyKCBzdGQ6OmF1dG9fcHRyPFk+ICYmIHIgKTogcHgoci5nZXQoKSksIHBuKCkKLSAgICB7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2Fzc2VydF9jb252ZXJ0aWJsZTwgWSwgVCA+KCk7Ci0KLSAgICAgICAgWSAqIHRtcCA9IHIuZ2V0KCk7Ci0gICAgICAgIHBuID0gbmRuYm9vc3Q6OmRldGFpbDo6c2hhcmVkX2NvdW50KCByICk7Ci0KLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZGVsZXRlcl9jb25zdHJ1Y3QoIHRoaXMsIHRtcCApOwotICAgIH0KLQotI2VsaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX1NGSU5BRSApICYmICFkZWZpbmVkKCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICkKLQotICAgIHRlbXBsYXRlPGNsYXNzIEFwPgotICAgIGV4cGxpY2l0IHNoYXJlZF9wdHIoIEFwIHIsIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9pZl9hdXRvX3B0cjxBcCwgaW50Pjo6dHlwZSA9IDAgKTogcHgoIHIuZ2V0KCkgKSwgcG4oKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBcDo6ZWxlbWVudF90eXBlIFk7Ci0KLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfYXNzZXJ0X2NvbnZlcnRpYmxlPCBZLCBUID4oKTsKLQotICAgICAgICBZICogdG1wID0gci5nZXQoKTsKLSAgICAgICAgcG4gPSBuZG5ib29zdDo6ZGV0YWlsOjpzaGFyZWRfY291bnQoIHIgKTsKLQotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9kZWxldGVyX2NvbnN0cnVjdCggdGhpcywgdG1wICk7Ci0gICAgfQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fU0ZJTkFFLCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19BVVRPX1BUUgotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX1NNQVJUX1BUUiApICYmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUyApCi0KLSAgICB0ZW1wbGF0ZTwgY2xhc3MgWSwgY2xhc3MgRCA+Ci0gICAgc2hhcmVkX3B0ciggc3RkOjp1bmlxdWVfcHRyPCBZLCBEID4gJiYgciApOiBweCggci5nZXQoKSApLCBwbigpCi0gICAgewotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9hc3NlcnRfY29udmVydGlibGU8IFksIFQgPigpOwotCi0gICAgICAgIHR5cGVuYW1lIHN0ZDo6dW5pcXVlX3B0cjwgWSwgRCA+Ojpwb2ludGVyIHRtcCA9IHIuZ2V0KCk7Ci0gICAgICAgIHBuID0gbmRuYm9vc3Q6OmRldGFpbDo6c2hhcmVkX2NvdW50KCByICk7Ci0KLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZGVsZXRlcl9jb25zdHJ1Y3QoIHRoaXMsIHRtcCApOwotICAgIH0KLQotI2VuZGlmCi0KLSAgICAvLyBhc3NpZ25tZW50Ci0KLSAgICBzaGFyZWRfcHRyICYgb3BlcmF0b3I9KCBzaGFyZWRfcHRyIGNvbnN0ICYgciApIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICB0aGlzX3R5cGUocikuc3dhcCgqdGhpcyk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NU1ZDKSB8fCAoTkROQk9PU1RfTVNWQyA+PSAxNDAwKQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4KLSAgICBzaGFyZWRfcHRyICYgb3BlcmF0b3I9KHNoYXJlZF9wdHI8WT4gY29uc3QgJiByKSBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgdGhpc190eXBlKHIpLnN3YXAoKnRoaXMpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9OT19BVVRPX1BUUgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4KLSAgICBzaGFyZWRfcHRyICYgb3BlcmF0b3I9KCBzdGQ6OmF1dG9fcHRyPFk+ICYgciApCi0gICAgewotICAgICAgICB0aGlzX3R5cGUoIHIgKS5zd2FwKCAqdGhpcyApOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTICkKLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+Ci0gICAgc2hhcmVkX3B0ciAmIG9wZXJhdG9yPSggc3RkOjphdXRvX3B0cjxZPiAmJiByICkKLSAgICB7Ci0gICAgICAgIHRoaXNfdHlwZSggc3RhdGljX2Nhc3Q8IHN0ZDo6YXV0b19wdHI8WT4gJiYgPiggciApICkuc3dhcCggKnRoaXMgKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotI2VsaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX1NGSU5BRSApICYmICFkZWZpbmVkKCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICkKLQotICAgIHRlbXBsYXRlPGNsYXNzIEFwPgotICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9pZl9hdXRvX3B0cjwgQXAsIHNoYXJlZF9wdHIgJiA+Ojp0eXBlIG9wZXJhdG9yPSggQXAgciApCi0gICAgewotICAgICAgICB0aGlzX3R5cGUoIHIgKS5zd2FwKCAqdGhpcyApOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fU0ZJTkFFLCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19BVVRPX1BUUgotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX1NNQVJUX1BUUiApICYmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUyApCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZLCBjbGFzcyBEPgotICAgIHNoYXJlZF9wdHIgJiBvcGVyYXRvcj0oIHN0ZDo6dW5pcXVlX3B0cjxZLCBEPiAmJiByICkKLSAgICB7Ci0gICAgICAgIHRoaXNfdHlwZSggc3RhdGljX2Nhc3Q8IHN0ZDo6dW5pcXVlX3B0cjxZLCBEPiAmJiA+KCByICkgKS5zd2FwKCp0aGlzKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotI2VuZGlmCi0KLS8vIE1vdmUgc3VwcG9ydAotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTICkKLQotICAgIHNoYXJlZF9wdHIoIHNoYXJlZF9wdHIgJiYgciApIE5ETkJPT1NUX05PRVhDRVBUIDogcHgoIHIucHggKSwgcG4oKQotICAgIHsKLSAgICAgICAgcG4uc3dhcCggci5wbiApOwotICAgICAgICByLnB4ID0gMDsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPgotI2lmICFkZWZpbmVkKCBORE5CT09TVF9TUF9OT19TUF9DT05WRVJUSUJMRSApCi0KLSAgICBzaGFyZWRfcHRyKCBzaGFyZWRfcHRyPFk+ICYmIHIsIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9pZl9jb252ZXJ0aWJsZTxZLFQ+Ojp0eXBlID0gbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW1wdHkoKSApCi0KLSNlbHNlCi0KLSAgICBzaGFyZWRfcHRyKCBzaGFyZWRfcHRyPFk+ICYmIHIgKQotCi0jZW5kaWYKLSAgICBORE5CT09TVF9OT0VYQ0VQVCA6IHB4KCByLnB4ICksIHBuKCkKLSAgICB7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2Fzc2VydF9jb252ZXJ0aWJsZTwgWSwgVCA+KCk7Ci0KLSAgICAgICAgcG4uc3dhcCggci5wbiApOwotICAgICAgICByLnB4ID0gMDsKLSAgICB9Ci0KLSAgICBzaGFyZWRfcHRyICYgb3BlcmF0b3I9KCBzaGFyZWRfcHRyICYmIHIgKSBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgdGhpc190eXBlKCBzdGF0aWNfY2FzdDwgc2hhcmVkX3B0ciAmJiA+KCByICkgKS5zd2FwKCAqdGhpcyApOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4KLSAgICBzaGFyZWRfcHRyICYgb3BlcmF0b3I9KCBzaGFyZWRfcHRyPFk+ICYmIHIgKSBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgdGhpc190eXBlKCBzdGF0aWNfY2FzdDwgc2hhcmVkX3B0cjxZPiAmJiA+KCByICkgKS5zd2FwKCAqdGhpcyApOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9OVUxMUFRSICkKLQotICAgIHNoYXJlZF9wdHIgJiBvcGVyYXRvcj0oIG5kbmJvb3N0OjpkZXRhaWw6OnNwX251bGxwdHJfdCApIE5ETkJPT1NUX05PRVhDRVBUIC8vIG5ldmVyIHRocm93cwotICAgIHsKLSAgICAgICAgdGhpc190eXBlKCkuc3dhcCgqdGhpcyk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgdm9pZCByZXNldCgpIE5ETkJPT1NUX05PRVhDRVBUIC8vIG5ldmVyIHRocm93cyBpbiAxLjMwKwotICAgIHsKLSAgICAgICAgdGhpc190eXBlKCkuc3dhcCgqdGhpcyk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4gdm9pZCByZXNldCggWSAqIHAgKSAvLyBZIG11c3QgYmUgY29tcGxldGUKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVCggcCA9PSAwIHx8IHAgIT0gcHggKTsgLy8gY2F0Y2ggc2VsZi1yZXNldCBlcnJvcnMKLSAgICAgICAgdGhpc190eXBlKCBwICkuc3dhcCggKnRoaXMgKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZLCBjbGFzcyBEPiB2b2lkIHJlc2V0KCBZICogcCwgRCBkICkKLSAgICB7Ci0gICAgICAgIHRoaXNfdHlwZSggcCwgZCApLnN3YXAoICp0aGlzICk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWSwgY2xhc3MgRCwgY2xhc3MgQT4gdm9pZCByZXNldCggWSAqIHAsIEQgZCwgQSBhICkKLSAgICB7Ci0gICAgICAgIHRoaXNfdHlwZSggcCwgZCwgYSApLnN3YXAoICp0aGlzICk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4gdm9pZCByZXNldCggc2hhcmVkX3B0cjxZPiBjb25zdCAmIHIsIGVsZW1lbnRfdHlwZSAqIHAgKQotICAgIHsKLSAgICAgICAgdGhpc190eXBlKCByLCBwICkuc3dhcCggKnRoaXMgKTsKLSAgICB9Ci0gICAgCi0gICAgLy8gbmV2ZXIgdGhyb3dzIChidXQgaGFzIGEgTkROQk9PU1RfQVNTRVJUIGluIGl0LCBzbyBub3QgbWFya2VkIHdpdGggTkROQk9PU1RfTk9FWENFUFQpCi0gICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZGVyZWZlcmVuY2U8IFQgPjo6dHlwZSBvcGVyYXRvciogKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVCggcHggIT0gMCApOwotICAgICAgICByZXR1cm4gKnB4OwotICAgIH0KLSAgICAKLSAgICAvLyBuZXZlciB0aHJvd3MgKGJ1dCBoYXMgYSBORE5CT09TVF9BU1NFUlQgaW4gaXQsIHNvIG5vdCBtYXJrZWQgd2l0aCBORE5CT09TVF9OT0VYQ0VQVCkKLSAgICB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tZW1iZXJfYWNjZXNzPCBUID46OnR5cGUgb3BlcmF0b3ItPiAoKSBjb25zdCAKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVCggcHggIT0gMCApOwotICAgICAgICByZXR1cm4gcHg7Ci0gICAgfQotICAgIAotICAgIC8vIG5ldmVyIHRocm93cyAoYnV0IGhhcyBhIE5ETkJPT1NUX0FTU0VSVCBpbiBpdCwgc28gbm90IG1hcmtlZCB3aXRoIE5ETkJPT1NUX05PRVhDRVBUKQotICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2FycmF5X2FjY2VzczwgVCA+Ojp0eXBlIG9wZXJhdG9yW10gKCBzdGQ6OnB0cmRpZmZfdCBpICkgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVCggcHggIT0gMCApOwotICAgICAgICBORE5CT09TVF9BU1NFUlQoIGkgPj0gMCAmJiAoIGkgPCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9leHRlbnQ8IFQgPjo6dmFsdWUgfHwgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZXh0ZW50PCBUID46OnZhbHVlID09IDAgKSApOwotCi0gICAgICAgIHJldHVybiBweFsgaSBdOwotICAgIH0KLQotICAgIGVsZW1lbnRfdHlwZSAqIGdldCgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICByZXR1cm4gcHg7Ci0gICAgfQotCi0vLyBpbXBsaWNpdCBjb252ZXJzaW9uIHRvICJib29sIgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvb3BlcmF0b3JfYm9vbC5ocHA+Ci0KLSAgICBib29sIHVuaXF1ZSgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICByZXR1cm4gcG4udW5pcXVlKCk7Ci0gICAgfQotCi0gICAgbG9uZyB1c2VfY291bnQoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIHBuLnVzZV9jb3VudCgpOwotICAgIH0KLQotICAgIHZvaWQgc3dhcCggc2hhcmVkX3B0ciAmIG90aGVyICkgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHN0ZDo6c3dhcChweCwgb3RoZXIucHgpOwotICAgICAgICBwbi5zd2FwKG90aGVyLnBuKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPiBib29sIG93bmVyX2JlZm9yZSggc2hhcmVkX3B0cjxZPiBjb25zdCAmIHJocyApIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICByZXR1cm4gcG4gPCByaHMucG47Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4gYm9vbCBvd25lcl9iZWZvcmUoIHdlYWtfcHRyPFk+IGNvbnN0ICYgcmhzICkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiBwbiA8IHJocy5wbjsKLSAgICB9Ci0KLSAgICB2b2lkICogX2ludGVybmFsX2dldF9kZWxldGVyKCBuZG5ib29zdDo6ZGV0YWlsOjpzcF90eXBlaW5mbyBjb25zdCAmIHRpICkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiBwbi5nZXRfZGVsZXRlciggdGkgKTsKLSAgICB9Ci0KLSAgICB2b2lkICogX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIHBuLmdldF91bnR5cGVkX2RlbGV0ZXIoKTsKLSAgICB9Ci0KLSAgICBib29sIF9pbnRlcm5hbF9lcXVpdiggc2hhcmVkX3B0ciBjb25zdCAmIHIgKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIHB4ID09IHIucHggJiYgcG4gPT0gci5wbjsKLSAgICB9Ci0KLS8vIFRhc3RlbGVzcyBhcyB0aGlzIG1heSBzZWVtLCBtYWtpbmcgYWxsIG1lbWJlcnMgcHVibGljIGFsbG93cyBtZW1iZXIgdGVtcGxhdGVzCi0vLyB0byB3b3JrIGluIHRoZSBhYnNlbmNlIG9mIG1lbWJlciB0ZW1wbGF0ZSBmcmllbmRzLiAoTWF0dGhldyBMYW5nc3RvbikKLQotI2lmbmRlZiBORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVfRlJJRU5EUwotCi1wcml2YXRlOgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4gZnJpZW5kIGNsYXNzIHNoYXJlZF9wdHI7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgWT4gZnJpZW5kIGNsYXNzIHdlYWtfcHRyOwotCi0KLSNlbmRpZgotCi0gICAgZWxlbWVudF90eXBlICogcHg7ICAgICAgICAgICAgICAgICAvLyBjb250YWluZWQgcG9pbnRlcgotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNoYXJlZF9jb3VudCBwbjsgICAgLy8gcmVmZXJlbmNlIGNvdW50ZXIKLQotfTsgIC8vIHNoYXJlZF9wdHIKLQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShzaGFyZWRfcHRyPFQ+IGNvbnN0ICYgYSwgc2hhcmVkX3B0cjxVPiBjb25zdCAmIGIpIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgcmV0dXJuIGEuZ2V0KCkgPT0gYi5nZXQoKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShzaGFyZWRfcHRyPFQ+IGNvbnN0ICYgYSwgc2hhcmVkX3B0cjxVPiBjb25zdCAmIGIpIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgcmV0dXJuIGEuZ2V0KCkgIT0gYi5nZXQoKTsKLX0KLQotI2lmIF9fR05VQ19fID09IDIgJiYgX19HTlVDX01JTk9SX18gPD0gOTYKLQotLy8gUmVzb2x2ZSB0aGUgYW1iaWd1aXR5IGJldHdlZW4gb3VyIG9wIT0gYW5kIHRoZSBvbmUgaW4gcmVsX29wcwotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KHNoYXJlZF9wdHI8VD4gY29uc3QgJiBhLCBzaGFyZWRfcHRyPFQ+IGNvbnN0ICYgYikgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gYS5nZXQoKSAhPSBiLmdldCgpOwotfQotCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9OVUxMUFRSICkKLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PSggc2hhcmVkX3B0cjxUPiBjb25zdCAmIHAsIG5kbmJvb3N0OjpkZXRhaWw6OnNwX251bGxwdHJfdCApIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgcmV0dXJuIHAuZ2V0KCkgPT0gMDsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PSggbmRuYm9vc3Q6OmRldGFpbDo6c3BfbnVsbHB0cl90LCBzaGFyZWRfcHRyPFQ+IGNvbnN0ICYgcCApIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgcmV0dXJuIHAuZ2V0KCkgPT0gMDsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPSggc2hhcmVkX3B0cjxUPiBjb25zdCAmIHAsIG5kbmJvb3N0OjpkZXRhaWw6OnNwX251bGxwdHJfdCApIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgcmV0dXJuIHAuZ2V0KCkgIT0gMDsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPSggbmRuYm9vc3Q6OmRldGFpbDo6c3BfbnVsbHB0cl90LCBzaGFyZWRfcHRyPFQ+IGNvbnN0ICYgcCApIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgcmV0dXJuIHAuZ2V0KCkgIT0gMDsKLX0KLQotI2VuZGlmCi0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFU+IGlubGluZSBib29sIG9wZXJhdG9yPChzaGFyZWRfcHRyPFQ+IGNvbnN0ICYgYSwgc2hhcmVkX3B0cjxVPiBjb25zdCAmIGIpIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgcmV0dXJuIGEub3duZXJfYmVmb3JlKCBiICk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB2b2lkIHN3YXAoc2hhcmVkX3B0cjxUPiAmIGEsIHNoYXJlZF9wdHI8VD4gJiBiKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIGEuc3dhcChiKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVT4gc2hhcmVkX3B0cjxUPiBzdGF0aWNfcG9pbnRlcl9jYXN0KCBzaGFyZWRfcHRyPFU+IGNvbnN0ICYgciApIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgKHZvaWQpIHN0YXRpY19jYXN0PCBUKiA+KCBzdGF0aWNfY2FzdDwgVSogPiggMCApICk7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNoYXJlZF9wdHI8VD46OmVsZW1lbnRfdHlwZSBFOwotCi0gICAgRSAqIHAgPSBzdGF0aWNfY2FzdDwgRSogPiggci5nZXQoKSApOwotICAgIHJldHVybiBzaGFyZWRfcHRyPFQ+KCByLCBwICk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFU+IHNoYXJlZF9wdHI8VD4gY29uc3RfcG9pbnRlcl9jYXN0KCBzaGFyZWRfcHRyPFU+IGNvbnN0ICYgciApIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgKHZvaWQpIGNvbnN0X2Nhc3Q8IFQqID4oIHN0YXRpY19jYXN0PCBVKiA+KCAwICkgKTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2hhcmVkX3B0cjxUPjo6ZWxlbWVudF90eXBlIEU7Ci0KLSAgICBFICogcCA9IGNvbnN0X2Nhc3Q8IEUqID4oIHIuZ2V0KCkgKTsKLSAgICByZXR1cm4gc2hhcmVkX3B0cjxUPiggciwgcCApOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVPiBzaGFyZWRfcHRyPFQ+IGR5bmFtaWNfcG9pbnRlcl9jYXN0KCBzaGFyZWRfcHRyPFU+IGNvbnN0ICYgciApIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgKHZvaWQpIGR5bmFtaWNfY2FzdDwgVCogPiggc3RhdGljX2Nhc3Q8IFUqID4oIDAgKSApOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBzaGFyZWRfcHRyPFQ+OjplbGVtZW50X3R5cGUgRTsKLQotICAgIEUgKiBwID0gZHluYW1pY19jYXN0PCBFKiA+KCByLmdldCgpICk7Ci0gICAgcmV0dXJuIHA/IHNoYXJlZF9wdHI8VD4oIHIsIHAgKTogc2hhcmVkX3B0cjxUPigpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVPiBzaGFyZWRfcHRyPFQ+IHJlaW50ZXJwcmV0X3BvaW50ZXJfY2FzdCggc2hhcmVkX3B0cjxVPiBjb25zdCAmIHIgKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgICh2b2lkKSByZWludGVycHJldF9jYXN0PCBUKiA+KCBzdGF0aWNfY2FzdDwgVSogPiggMCApICk7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNoYXJlZF9wdHI8VD46OmVsZW1lbnRfdHlwZSBFOwotCi0gICAgRSAqIHAgPSByZWludGVycHJldF9jYXN0PCBFKiA+KCByLmdldCgpICk7Ci0gICAgcmV0dXJuIHNoYXJlZF9wdHI8VD4oIHIsIHAgKTsKLX0KLQotLy8gZ2V0X3BvaW50ZXIoKSBlbmFibGVzIG5kbmJvb3N0OjptZW1fZm4gdG8gcmVjb2duaXplIHNoYXJlZF9wdHIKLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lIHNoYXJlZF9wdHI8VD46OmVsZW1lbnRfdHlwZSAqIGdldF9wb2ludGVyKHNoYXJlZF9wdHI8VD4gY29uc3QgJiBwKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIHJldHVybiBwLmdldCgpOwotfQotCi0vLyBvcGVyYXRvcjw8Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19JT1NUUkVBTSkKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVEX0lPU1RSRUFNUykgfHwgKCBkZWZpbmVkKF9fR05VQ19fKSAmJiAgKF9fR05VQ19fIDwgMykgKQotCi10ZW1wbGF0ZTxjbGFzcyBZPiBzdGQ6Om9zdHJlYW0gJiBvcGVyYXRvcjw8IChzdGQ6Om9zdHJlYW0gJiBvcywgc2hhcmVkX3B0cjxZPiBjb25zdCAmIHApCi17Ci0gICAgb3MgPDwgcC5nZXQoKTsKLSAgICByZXR1cm4gb3M7Ci19Ci0KLSNlbHNlCi0KLS8vIGluIFNUTHBvcnQncyBuby1pb3N0cmVhbXMgbW9kZSBubyBpb3N0cmVhbSBzeW1ib2xzIGNhbiBiZSB1c2VkCi0jaWZuZGVmIF9TVExQX05PX0lPU1RSRUFNUwotCi0jIGlmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDAgJiYgX19TR0lfU1RMX1BPUlQpCi0vLyBNU1ZDNiBoYXMgcHJvYmxlbXMgZmluZGluZyBzdGQ6OmJhc2ljX29zdHJlYW0gdGhyb3VnaCB0aGUgdXNpbmcgZGVjbGFyYXRpb24gaW4gbmFtZXNwYWNlIF9TVEwKLXVzaW5nIHN0ZDo6YmFzaWNfb3N0cmVhbTsKLXRlbXBsYXRlPGNsYXNzIEUsIGNsYXNzIFQsIGNsYXNzIFk+IGJhc2ljX29zdHJlYW08RSwgVD4gJiBvcGVyYXRvcjw8IChiYXNpY19vc3RyZWFtPEUsIFQ+ICYgb3MsIHNoYXJlZF9wdHI8WT4gY29uc3QgJiBwKQotIyBlbHNlCi10ZW1wbGF0ZTxjbGFzcyBFLCBjbGFzcyBULCBjbGFzcyBZPiBzdGQ6OmJhc2ljX29zdHJlYW08RSwgVD4gJiBvcGVyYXRvcjw8IChzdGQ6OmJhc2ljX29zdHJlYW08RSwgVD4gJiBvcywgc2hhcmVkX3B0cjxZPiBjb25zdCAmIHApCi0jIGVuZGlmCi17Ci0gICAgb3MgPDwgcC5nZXQoKTsKLSAgICByZXR1cm4gb3M7Ci19Ci0KLSNlbmRpZiAvLyBfU1RMUF9OT19JT1NUUkVBTVMKLQotI2VuZGlmIC8vIF9fR05VQ19fIDwgMwotCi0jZW5kaWYgLy8gIWRlZmluZWQoTkROQk9PU1RfTk9fSU9TVFJFQU0pCi0KLS8vIGdldF9kZWxldGVyCi0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotI2lmICggZGVmaW5lZChfX0dOVUNfXykgJiYgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPCAzKSApIHx8IFwKLSAgICAoIGRlZmluZWQoX19FREdfVkVSU0lPTl9fKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fRURHX1ZFUlNJT05fXywgPD0gMjM4KSApIHx8IFwKLSAgICAoIGRlZmluZWQoX19IUF9hQ0MpICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19IUF9hQ0MsIDw9IDMzNTAwKSApCi0KLS8vIGcrKyAyLjl4IGRvZXNuJ3QgYWxsb3cgc3RhdGljX2Nhc3Q8WCBjb25zdCAqPih2b2lkICopCi0vLyBhcHBhcmVudGx5IEVERyAyLjM4IGFuZCBIUCBhQ0MgQS4wMy4zNSBhbHNvIGRvbid0IGFjY2VwdCBpdAotCi10ZW1wbGF0ZTxjbGFzcyBELCBjbGFzcyBUPiBEICogYmFzaWNfZ2V0X2RlbGV0ZXIoc2hhcmVkX3B0cjxUPiBjb25zdCAmIHApCi17Ci0gICAgdm9pZCBjb25zdCAqIHEgPSBwLl9pbnRlcm5hbF9nZXRfZGVsZXRlcihORE5CT09TVF9TUF9UWVBFSUQoRCkpOwotICAgIHJldHVybiBjb25zdF9jYXN0PEQgKj4oc3RhdGljX2Nhc3Q8RCBjb25zdCAqPihxKSk7Ci19Ci0KLSNlbHNlCi0KLXRlbXBsYXRlPGNsYXNzIEQsIGNsYXNzIFQ+IEQgKiBiYXNpY19nZXRfZGVsZXRlciggc2hhcmVkX3B0cjxUPiBjb25zdCAmIHAgKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxEICo+KCBwLl9pbnRlcm5hbF9nZXRfZGVsZXRlcihORE5CT09TVF9TUF9UWVBFSUQoRCkpICk7Ci19Ci0KLSNlbmRpZgotCi1jbGFzcyBlc2Z0Ml9kZWxldGVyX3dyYXBwZXIKLXsKLXByaXZhdGU6Ci0KLSAgICBzaGFyZWRfcHRyPHZvaWQ+IGRlbGV0ZXJfOwotCi1wdWJsaWM6Ci0KLSAgICBlc2Z0Ml9kZWxldGVyX3dyYXBwZXIoKQotICAgIHsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTwgY2xhc3MgVCA+IHZvaWQgc2V0X2RlbGV0ZXIoIHNoYXJlZF9wdHI8VD4gY29uc3QgJiBkZWxldGVyICkKLSAgICB7Ci0gICAgICAgIGRlbGV0ZXJfID0gZGVsZXRlcjsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEPiBEKiBnZXRfZGVsZXRlcigpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OmRldGFpbDo6YmFzaWNfZ2V0X2RlbGV0ZXI8RD4oIGRlbGV0ZXJfICk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8IGNsYXNzIFQ+IHZvaWQgb3BlcmF0b3IoKSggVCogKQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKCBkZWxldGVyXy51c2VfY291bnQoKSA8PSAxICk7Ci0gICAgICAgIGRlbGV0ZXJfLnJlc2V0KCk7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLXRlbXBsYXRlPGNsYXNzIEQsIGNsYXNzIFQ+IEQgKiBnZXRfZGVsZXRlciggc2hhcmVkX3B0cjxUPiBjb25zdCAmIHAgKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIEQgKmRlbCA9IG5kbmJvb3N0OjpkZXRhaWw6OmJhc2ljX2dldF9kZWxldGVyPEQ+KHApOwotCi0gICAgaWYoZGVsID09IDApCi0gICAgewotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjplc2Z0Ml9kZWxldGVyX3dyYXBwZXIgKmRlbF93cmFwcGVyID0gbmRuYm9vc3Q6OmRldGFpbDo6YmFzaWNfZ2V0X2RlbGV0ZXI8bmRuYm9vc3Q6OmRldGFpbDo6ZXNmdDJfZGVsZXRlcl93cmFwcGVyPihwKTsKLS8vIFRoZSBmb2xsb3dpbmcgZ2V0X2RlbGV0ZXIgbWV0aG9kIGNhbGwgaXMgZnVsbHkgcXVhbGlmaWVkIGJlY2F1c2UKLS8vIG9sZGVyIHZlcnNpb25zIG9mIGdjYyAoMi45NSwgMy4yLjMpIGZhaWwgdG8gY29tcGlsZSBpdCB3aGVuIHdyaXR0ZW4gZGVsX3dyYXBwZXItPmdldF9kZWxldGVyPEQ+KCkKLSAgICAgICAgaWYoZGVsX3dyYXBwZXIpIGRlbCA9IGRlbF93cmFwcGVyLT46Om5kbmJvb3N0OjpkZXRhaWw6OmVzZnQyX2RlbGV0ZXJfd3JhcHBlcjo6Z2V0X2RlbGV0ZXI8RD4oKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZGVsOwotfQotCi0vLyBhdG9taWMgYWNjZXNzCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9TUF9OT19BVE9NSUNfQUNDRVNTKQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgYm9vbCBhdG9taWNfaXNfbG9ja19mcmVlKCBzaGFyZWRfcHRyPFQ+IGNvbnN0ICogLypwKi8gKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gc2hhcmVkX3B0cjxUPiBhdG9taWNfbG9hZCggc2hhcmVkX3B0cjxUPiBjb25zdCAqIHAgKQotewotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwaW5sb2NrX3Bvb2w8Mj46OnNjb3BlZF9sb2NrIGxvY2soIHAgKTsKLSAgICByZXR1cm4gKnA7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBzaGFyZWRfcHRyPFQ+IGF0b21pY19sb2FkX2V4cGxpY2l0KCBzaGFyZWRfcHRyPFQ+IGNvbnN0ICogcCwgbWVtb3J5X29yZGVyIC8qbW8qLyApCi17Ci0gICAgcmV0dXJuIGF0b21pY19sb2FkKCBwICk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgYXRvbWljX3N0b3JlKCBzaGFyZWRfcHRyPFQ+ICogcCwgc2hhcmVkX3B0cjxUPiByICkKLXsKLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcGlubG9ja19wb29sPDI+OjpzY29wZWRfbG9jayBsb2NrKCBwICk7Ci0gICAgcC0+c3dhcCggciApOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdm9pZCBhdG9taWNfc3RvcmVfZXhwbGljaXQoIHNoYXJlZF9wdHI8VD4gKiBwLCBzaGFyZWRfcHRyPFQ+IHIsIG1lbW9yeV9vcmRlciAvKm1vKi8gKQotewotICAgIGF0b21pY19zdG9yZSggcCwgciApOyAvLyBzdGQ6Om1vdmUoIHIgKQotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBzaGFyZWRfcHRyPFQ+IGF0b21pY19leGNoYW5nZSggc2hhcmVkX3B0cjxUPiAqIHAsIHNoYXJlZF9wdHI8VD4gciApCi17Ci0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BpbmxvY2sgJiBzcCA9IG5kbmJvb3N0OjpkZXRhaWw6OnNwaW5sb2NrX3Bvb2w8Mj46OnNwaW5sb2NrX2ZvciggcCApOwotCi0gICAgc3AubG9jaygpOwotICAgIHAtPnN3YXAoIHIgKTsKLSAgICBzcC51bmxvY2soKTsKLQotICAgIHJldHVybiByOyAvLyByZXR1cm4gc3RkOjptb3ZlKCByICkKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gc2hhcmVkX3B0cjxUPiBhdG9taWNfZXhjaGFuZ2VfZXhwbGljaXQoIHNoYXJlZF9wdHI8VD4gKiBwLCBzaGFyZWRfcHRyPFQ+IHIsIG1lbW9yeV9vcmRlciAvKm1vKi8gKQotewotICAgIHJldHVybiBhdG9taWNfZXhjaGFuZ2UoIHAsIHIgKTsgLy8gc3RkOjptb3ZlKCByICkKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gYm9vbCBhdG9taWNfY29tcGFyZV9leGNoYW5nZSggc2hhcmVkX3B0cjxUPiAqIHAsIHNoYXJlZF9wdHI8VD4gKiB2LCBzaGFyZWRfcHRyPFQ+IHcgKQotewotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwaW5sb2NrICYgc3AgPSBuZG5ib29zdDo6ZGV0YWlsOjpzcGlubG9ja19wb29sPDI+OjpzcGlubG9ja19mb3IoIHAgKTsKLQotICAgIHNwLmxvY2soKTsKLQotICAgIGlmKCBwLT5faW50ZXJuYWxfZXF1aXYoICp2ICkgKQotICAgIHsKLSAgICAgICAgcC0+c3dhcCggdyApOwotCi0gICAgICAgIHNwLnVubG9jaygpOwotCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBzaGFyZWRfcHRyPFQ+IHRtcCggKnAgKTsKLQotICAgICAgICBzcC51bmxvY2soKTsKLQotICAgICAgICB0bXAuc3dhcCggKnYgKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIGJvb2wgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2VfZXhwbGljaXQoIHNoYXJlZF9wdHI8VD4gKiBwLCBzaGFyZWRfcHRyPFQ+ICogdiwgc2hhcmVkX3B0cjxUPiB3LCBtZW1vcnlfb3JkZXIgLypzdWNjZXNzKi8sIG1lbW9yeV9vcmRlciAvKmZhaWx1cmUqLyApCi17Ci0gICAgcmV0dXJuIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlKCBwLCB2LCB3ICk7IC8vIHN0ZDo6bW92ZSggdyApCi19Ci0KLSNlbmRpZiAvLyAhZGVmaW5lZChORE5CT09TVF9TUF9OT19BVE9NSUNfQUNDRVNTKQotCi0vLyBoYXNoX3ZhbHVlCi0KLXRlbXBsYXRlPCBjbGFzcyBUID4gc3RydWN0IGhhc2g7Ci0KLXRlbXBsYXRlPCBjbGFzcyBUID4gc3RkOjpzaXplX3QgaGFzaF92YWx1ZSggbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4gY29uc3QgJiBwICkgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gbmRuYm9vc3Q6Omhhc2g8IFQqID4oKSggcC5nZXQoKSApOwotfQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vICNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX01FTUJFUl9URU1QTEFURVMpICYmICFkZWZpbmVkKE5ETkJPT1NUX01TVkM2X01FTUJFUl9URU1QTEFURVMpCi0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfU0hBUkVEX1BUUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL3dlYWtfcHRyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL3dlYWtfcHRyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDhmYzRiZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci93ZWFrX3B0ci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNTMgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfV0VBS19QVFJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9XRUFLX1BUUl9IUFBfSU5DTFVERUQKLQotLy8KLS8vICB3ZWFrX3B0ci5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyLCAyMDAzIFBldGVyIERpbW92Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9zbWFydF9wdHIvd2Vha19wdHIuaHRtIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLQotI2luY2x1ZGUgPG1lbW9yeT4gLy8gYm9vc3QuVFIxIGluY2x1ZGUgb3JkZXIgZml4Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zaGFyZWRfY291bnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9zaGFyZWRfcHRyLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIHdlYWtfcHRyCi17Ci1wcml2YXRlOgotCi0gICAgLy8gQm9ybGFuZCA1LjUuMSBzcGVjaWZpYyB3b3JrYXJvdW5kcwotICAgIHR5cGVkZWYgd2Vha19wdHI8VD4gdGhpc190eXBlOwotCi1wdWJsaWM6Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VsZW1lbnQ8IFQgPjo6dHlwZSBlbGVtZW50X3R5cGU7Ci0KLSAgICB3ZWFrX3B0cigpIE5ETkJPT1NUX05PRVhDRVBUIDogcHgoMCksIHBuKCkgLy8gbmV2ZXIgdGhyb3dzIGluIDEuMzArCi0gICAgewotICAgIH0KLQotLy8gIGdlbmVyYXRlZCBjb3B5IGNvbnN0cnVjdG9yLCBhc3NpZ25tZW50LCBkZXN0cnVjdG9yIGFyZSBmaW5lLi4uCi0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMgKQotCi0vLyAuLi4gZXhjZXB0IGluIEMrKzB4LCBtb3ZlIGRpc2FibGVzIHRoZSBpbXBsaWNpdCBjb3B5Ci0KLSAgICB3ZWFrX3B0ciggd2Vha19wdHIgY29uc3QgJiByICkgTkROQk9PU1RfTk9FWENFUFQgOiBweCggci5weCApLCBwbiggci5wbiApCi0gICAgewotICAgIH0KLQotICAgIHdlYWtfcHRyICYgb3BlcmF0b3I9KCB3ZWFrX3B0ciBjb25zdCAmIHIgKSBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcHggPSByLnB4OwotICAgICAgICBwbiA9IHIucG47Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSNlbmRpZgotCi0vLwotLy8gIFRoZSAib2J2aW91cyIgY29udmVydGluZyBjb25zdHJ1Y3RvciBpbXBsZW1lbnRhdGlvbjoKLS8vCi0vLyAgdGVtcGxhdGU8Y2xhc3MgWT4KLS8vICB3ZWFrX3B0cih3ZWFrX3B0cjxZPiBjb25zdCAmIHIpOiBweChyLnB4KSwgcG4oci5wbikgLy8gbmV2ZXIgdGhyb3dzCi0vLyAgewotLy8gIH0KLS8vCi0vLyAgaGFzIGEgc2VyaW91cyBwcm9ibGVtLgotLy8KLS8vICByLnB4IG1heSBhbHJlYWR5IGhhdmUgYmVlbiBpbnZhbGlkYXRlZC4gVGhlIHB4KHIucHgpCi0vLyAgY29udmVyc2lvbiBtYXkgcmVxdWlyZSBhY2Nlc3MgdG8gKnIucHggKHZpcnR1YWwgaW5oZXJpdGFuY2UpLgotLy8KLS8vICBJdCBpcyBub3QgcG9zc2libGUgdG8gYXZvaWQgc3B1cmlvdXMgYWNjZXNzIHZpb2xhdGlvbnMgc2luY2UKLS8vICBpbiBtdWx0aXRocmVhZGVkIHByb2dyYW1zIHIucHggbWF5IGJlIGludmFsaWRhdGVkIGF0IGFueSBwb2ludC4KLS8vCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPgotI2lmICFkZWZpbmVkKCBORE5CT09TVF9TUF9OT19TUF9DT05WRVJUSUJMRSApCi0KLSAgICB3ZWFrX3B0ciggd2Vha19wdHI8WT4gY29uc3QgJiByLCB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfaWZfY29udmVydGlibGU8WSxUPjo6dHlwZSA9IG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VtcHR5KCkgKQotCi0jZWxzZQotCi0gICAgd2Vha19wdHIoIHdlYWtfcHRyPFk+IGNvbnN0ICYgciApCi0KLSNlbmRpZgotICAgIE5ETkJPT1NUX05PRVhDRVBUIDogcHgoci5sb2NrKCkuZ2V0KCkpLCBwbihyLnBuKQotICAgIHsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfYXNzZXJ0X2NvbnZlcnRpYmxlPCBZLCBUID4oKTsKLSAgICB9Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMgKQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfU1BfTk9fU1BfQ09OVkVSVElCTEUgKQotCi0gICAgd2Vha19wdHIoIHdlYWtfcHRyPFk+ICYmIHIsIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9pZl9jb252ZXJ0aWJsZTxZLFQ+Ojp0eXBlID0gbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW1wdHkoKSApCi0KLSNlbHNlCi0KLSAgICB3ZWFrX3B0ciggd2Vha19wdHI8WT4gJiYgciApCi0KLSNlbmRpZgotICAgIE5ETkJPT1NUX05PRVhDRVBUIDogcHgoIHIubG9jaygpLmdldCgpICksIHBuKCBzdGF0aWNfY2FzdDwgbmRuYm9vc3Q6OmRldGFpbDo6d2Vha19jb3VudCAmJiA+KCByLnBuICkgKQotICAgIHsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfYXNzZXJ0X2NvbnZlcnRpYmxlPCBZLCBUID4oKTsKLSAgICAgICAgci5weCA9IDA7Ci0gICAgfQotCi0gICAgLy8gZm9yIGJldHRlciBlZmZpY2llbmN5IGluIHRoZSBUID09IFkgY2FzZQotICAgIHdlYWtfcHRyKCB3ZWFrX3B0ciAmJiByICkKLSAgICBORE5CT09TVF9OT0VYQ0VQVCA6IHB4KCByLnB4ICksIHBuKCBzdGF0aWNfY2FzdDwgbmRuYm9vc3Q6OmRldGFpbDo6d2Vha19jb3VudCAmJiA+KCByLnBuICkgKQotICAgIHsKLSAgICAgICAgci5weCA9IDA7Ci0gICAgfQotCi0gICAgLy8gZm9yIGJldHRlciBlZmZpY2llbmN5IGluIHRoZSBUID09IFkgY2FzZQotICAgIHdlYWtfcHRyICYgb3BlcmF0b3I9KCB3ZWFrX3B0ciAmJiByICkgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHRoaXNfdHlwZSggc3RhdGljX2Nhc3Q8IHdlYWtfcHRyICYmID4oIHIgKSApLnN3YXAoICp0aGlzICk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLQotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPgotI2lmICFkZWZpbmVkKCBORE5CT09TVF9TUF9OT19TUF9DT05WRVJUSUJMRSApCi0KLSAgICB3ZWFrX3B0ciggc2hhcmVkX3B0cjxZPiBjb25zdCAmIHIsIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9pZl9jb252ZXJ0aWJsZTxZLFQ+Ojp0eXBlID0gbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW1wdHkoKSApCi0KLSNlbHNlCi0KLSAgICB3ZWFrX3B0ciggc2hhcmVkX3B0cjxZPiBjb25zdCAmIHIgKQotCi0jZW5kaWYKLSAgICBORE5CT09TVF9OT0VYQ0VQVCA6IHB4KCByLnB4ICksIHBuKCByLnBuICkKLSAgICB7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2Fzc2VydF9jb252ZXJ0aWJsZTwgWSwgVCA+KCk7Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVNWQykgfHwgKE5ETkJPT1NUX01TVkMgPj0gMTMwMCkKLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+Ci0gICAgd2Vha19wdHIgJiBvcGVyYXRvcj0oIHdlYWtfcHRyPFk+IGNvbnN0ICYgciApIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9hc3NlcnRfY29udmVydGlibGU8IFksIFQgPigpOwotCi0gICAgICAgIHB4ID0gci5sb2NrKCkuZ2V0KCk7Ci0gICAgICAgIHBuID0gci5wbjsKLQotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTICkKLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+Ci0gICAgd2Vha19wdHIgJiBvcGVyYXRvcj0oIHdlYWtfcHRyPFk+ICYmIHIgKSBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgdGhpc190eXBlKCBzdGF0aWNfY2FzdDwgd2Vha19wdHI8WT4gJiYgPiggciApICkuc3dhcCggKnRoaXMgKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPgotICAgIHdlYWtfcHRyICYgb3BlcmF0b3I9KCBzaGFyZWRfcHRyPFk+IGNvbnN0ICYgciApIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9hc3NlcnRfY29udmVydGlibGU8IFksIFQgPigpOwotCi0gICAgICAgIHB4ID0gci5weDsKLSAgICAgICAgcG4gPSByLnBuOwotCi0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgc2hhcmVkX3B0cjxUPiBsb2NrKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiBzaGFyZWRfcHRyPFQ+KCAqdGhpcywgbmRuYm9vc3Q6OmRldGFpbDo6c3Bfbm90aHJvd190YWcoKSApOwotICAgIH0KLQotICAgIGxvbmcgdXNlX2NvdW50KCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiBwbi51c2VfY291bnQoKTsKLSAgICB9Ci0KLSAgICBib29sIGV4cGlyZWQoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIHBuLnVzZV9jb3VudCgpID09IDA7Ci0gICAgfQotCi0gICAgYm9vbCBfZW1wdHkoKSBjb25zdCAvLyBleHRlbnNpb24sIG5vdCBpbiBzdGQ6OndlYWtfcHRyCi0gICAgewotICAgICAgICByZXR1cm4gcG4uZW1wdHkoKTsKLSAgICB9Ci0KLSAgICB2b2lkIHJlc2V0KCkgTkROQk9PU1RfTk9FWENFUFQgLy8gbmV2ZXIgdGhyb3dzIGluIDEuMzArCi0gICAgewotICAgICAgICB0aGlzX3R5cGUoKS5zd2FwKCp0aGlzKTsKLSAgICB9Ci0KLSAgICB2b2lkIHN3YXAodGhpc190eXBlICYgb3RoZXIpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICBzdGQ6OnN3YXAocHgsIG90aGVyLnB4KTsKLSAgICAgICAgcG4uc3dhcChvdGhlci5wbik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgWT4KLSAgICB2b2lkIF9pbnRlcm5hbF9hbGlhc2luZ19hc3NpZ24od2Vha19wdHI8WT4gY29uc3QgJiByLCBlbGVtZW50X3R5cGUgKiBweDIpCi0gICAgewotICAgICAgICBweCA9IHB4MjsKLSAgICAgICAgcG4gPSByLnBuOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+IGJvb2wgb3duZXJfYmVmb3JlKCB3ZWFrX3B0cjxZPiBjb25zdCAmIHJocyApIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICByZXR1cm4gcG4gPCByaHMucG47Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4gYm9vbCBvd25lcl9iZWZvcmUoIHNoYXJlZF9wdHI8WT4gY29uc3QgJiByaHMgKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIHBuIDwgcmhzLnBuOwotICAgIH0KLQotLy8gVGFzdGVsZXNzIGFzIHRoaXMgbWF5IHNlZW0sIG1ha2luZyBhbGwgbWVtYmVycyBwdWJsaWMgYWxsb3dzIG1lbWJlciB0ZW1wbGF0ZXMKLS8vIHRvIHdvcmsgaW4gdGhlIGFic2VuY2Ugb2YgbWVtYmVyIHRlbXBsYXRlIGZyaWVuZHMuIChNYXR0aGV3IExhbmdzdG9uKQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX01FTUJFUl9URU1QTEFURV9GUklFTkRTCi0KLXByaXZhdGU6Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPiBmcmllbmQgY2xhc3Mgd2Vha19wdHI7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgWT4gZnJpZW5kIGNsYXNzIHNoYXJlZF9wdHI7Ci0KLSNlbmRpZgotCi0gICAgZWxlbWVudF90eXBlICogcHg7ICAgICAgICAgICAgLy8gY29udGFpbmVkIHBvaW50ZXIKLSAgICBuZG5ib29zdDo6ZGV0YWlsOjp3ZWFrX2NvdW50IHBuOyAvLyByZWZlcmVuY2UgY291bnRlcgotCi19OyAgLy8gd2Vha19wdHIKLQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I8KHdlYWtfcHRyPFQ+IGNvbnN0ICYgYSwgd2Vha19wdHI8VT4gY29uc3QgJiBiKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIHJldHVybiBhLm93bmVyX2JlZm9yZSggYiApOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkIHN3YXAod2Vha19wdHI8VD4gJiBhLCB3ZWFrX3B0cjxUPiAmIGIpIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgYS5zd2FwKGIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX1dFQUtfUFRSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4MTUwMjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5NSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9zdGF0aWNfYXNzZXJ0IGZvciBkb2N1bWVudGF0aW9uLgotCi0vKgotIFJldmlzaW9uIGhpc3Rvcnk6Ci0gICAwMiBBdWd1c3QgMjAwMAotICAgICAgSW5pdGlhbCB2ZXJzaW9uLgotKi8KLQotI2lmbmRlZiBORE5CT09TVF9TVEFUSUNfQVNTRVJUX0hQUAotI2RlZmluZSBORE5CT09TVF9TVEFUSUNfQVNTRVJUX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChfX0dYWF9FWFBFUklNRU5UQUxfQ1hYMFhfXykKLS8vCi0vLyBUaGlzIGlzIGhvcnJpYmxlLCBidXQgaXQgc2VlbXMgdG8gYmUgdGhlIG9ubHkgd2UgY2FuIHNodXQgdXAgdGhlCi0vLyAiYW5vbnltb3VzIHZhcmlhZGljIG1hY3JvcyB3ZXJlIGludHJvZHVjZWQgaW4gQzk5IFstV3ZhcmlhZGljLW1hY3Jvc10iCi0vLyB3YXJuaW5nIHRoYXQgZ2V0IHNwZXdlZCBvdXQgb3RoZXJ3aXNlIGluIG5vbi1DKysxMSBtb2RlLgotLy8KLSNwcmFnbWEgR0NDIHN5c3RlbV9oZWFkZXIKLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1NUQVRJQ19BU1NFUlQKLSMgIGlmbmRlZiBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19NQUNST1MKLSMgICAgIGRlZmluZSBORE5CT09TVF9TVEFUSUNfQVNTRVJUX01TRyggLi4uICkgc3RhdGljX2Fzc2VydChfX1ZBX0FSR1NfXykKLSMgIGVsc2UKLSMgICAgIGRlZmluZSBORE5CT09TVF9TVEFUSUNfQVNTRVJUX01TRyggQiwgTXNnICkgTkROQk9PU1RfU1RBVElDX0FTU0VSVCggQiApCi0jICBlbmRpZgotI2Vsc2UKLSMgICAgIGRlZmluZSBORE5CT09TVF9TVEFUSUNfQVNTRVJUX01TRyggQiwgTXNnICkgTkROQk9PU1RfU1RBVElDX0FTU0VSVCggQiApCi0jZW5kaWYKLQotI2lmZGVmIF9fQk9STEFORENfXwotLy8KLS8vIHdvcmthcm91bmQgZm9yIGJ1Z2d5IGludGVncmFsLWNvbnN0YW50IGV4cHJlc3Npb24gc3VwcG9ydDoKLSNkZWZpbmUgTkROQk9PU1RfQlVHR1lfSU5URUdSQUxfQ09OU1RBTlRfRVhQUkVTU0lPTlMKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fID09IDMpICYmICgoX19HTlVDX01JTk9SX18gPT0gMykgfHwgKF9fR05VQ19NSU5PUl9fID09IDQpKQotLy8gZ2NjIDMuMyBhbmQgMy40IGRvbid0IHByb2R1Y2UgZ29vZCBlcnJvciBtZXNzYWdlcyB3aXRoIHRoZSBkZWZhdWx0IHZlcnNpb246Ci0jICBkZWZpbmUgTkROQk9PU1RfU0FfR0NDX1dPUktBUk9VTkQKLSNlbmRpZgotCi0vLwotLy8gSWYgdGhlIGNvbXBpbGVyIGlzc3VlcyB3YXJuaW5ncyBhYm91dCBvbGQgQyBzdHlsZSBjYXN0cywKLS8vIHRoZW4gZW5hYmxlIHRoaXM6Ci0vLwotI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoX19HTlVDX18gPiAzKSB8fCAoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSA0KSkpCi0jICBpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfTUFDUk9TCi0jICAgICBkZWZpbmUgTkROQk9PU1RfU1RBVElDX0FTU0VSVF9CT09MX0NBU1QoIC4uLiApICgoX19WQV9BUkdTX18pID09IDAgPyBmYWxzZSA6IHRydWUpCi0jICBlbHNlCi0jICAgICBkZWZpbmUgTkROQk9PU1RfU1RBVElDX0FTU0VSVF9CT09MX0NBU1QoIHggKSAoKHgpID09IDAgPyBmYWxzZSA6IHRydWUpCi0jICBlbmRpZgotI2Vsc2UKLSMgIGlmbmRlZiBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19NQUNST1MKLSMgICAgIGRlZmluZSBORE5CT09TVF9TVEFUSUNfQVNTRVJUX0JPT0xfQ0FTVCggLi4uICkgKGJvb2wpKF9fVkFfQVJHU19fKQotIyAgZWxzZQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfQk9PTF9DQVNUKHgpIChib29sKSh4KQotIyAgZW5kaWYKLSNlbmRpZgotLy8KLS8vIElmIHRoZSBjb21waWxlciB3YXJucyBhYm91dCB1bnVzZWQgdHlwZWRlZnMgdGhlbiBlbmFibGUgdGhpczoKLS8vCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKChfX0dOVUNfXyA+IDQpIHx8ICgoX19HTlVDX18gPT0gNCkgJiYgKF9fR05VQ19NSU5PUl9fID49IDcpKSkKLSMgIGRlZmluZSBORE5CT09TVF9TVEFUSUNfQVNTRVJUX1VOVVNFRF9BVFRSSUJVVEUgX19hdHRyaWJ1dGVfXygodW51c2VkKSkKLSNlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfU1RBVElDX0FTU0VSVF9VTlVTRURfQVRUUklCVVRFCi0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9TVEFUSUNfQVNTRVJUCi0jICBpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfTUFDUk9TCi0jICAgICBkZWZpbmUgTkROQk9PU1RfU1RBVElDX0FTU0VSVCggLi4uICkgc3RhdGljX2Fzc2VydChfX1ZBX0FSR1NfXywgI19fVkFfQVJHU19fKQotIyAgZWxzZQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoIEIgKSBzdGF0aWNfYXNzZXJ0KEIsICNCKQotIyAgZW5kaWYKLSNlbHNlCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotLy8gSFAgYUNDIGNhbm5vdCBkZWFsIHdpdGggbWlzc2luZyBuYW1lcyBmb3IgdGVtcGxhdGUgdmFsdWUgcGFyYW1ldGVycwotdGVtcGxhdGUgPGJvb2wgeD4gc3RydWN0IFNUQVRJQ19BU1NFUlRJT05fRkFJTFVSRTsKLQotdGVtcGxhdGUgPD4gc3RydWN0IFNUQVRJQ19BU1NFUlRJT05fRkFJTFVSRTx0cnVlPiB7IGVudW0geyB2YWx1ZSA9IDEgfTsgfTsKLQotLy8gSFAgYUNDIGNhbm5vdCBkZWFsIHdpdGggbWlzc2luZyBuYW1lcyBmb3IgdGVtcGxhdGUgdmFsdWUgcGFyYW1ldGVycwotdGVtcGxhdGU8aW50IHg+IHN0cnVjdCBzdGF0aWNfYXNzZXJ0X3Rlc3R7fTsKLQotfQotCi0vLwotLy8gSW1wbGljaXQgaW5zdGFudGlhdGlvbiByZXF1aXJlcyB0aGF0IGFsbCBtZW1iZXIgZGVjbGFyYXRpb25zIGJlCi0vLyBpbnN0YW50aWF0ZWQsIGJ1dCB0aGF0IHRoZSBkZWZpbml0aW9ucyBhcmUgKm5vdCogaW5zdGFudGlhdGVkLgotLy8KLS8vIEl0J3Mgbm90IHBhcnRpY3VsYXJseSBjbGVhciBob3cgdGhpcyBhcHBsaWVzIHRvIGVudW0ncyBvciB0eXBlZGVmczsKLS8vIGJvdGggYXJlIGRlc2NyaWJlZCBhcyBkZWNsYXJhdGlvbnMgWzcuMS4zXSBhbmQgWzcuMl0gaW4gdGhlIHN0YW5kYXJkLAotLy8gaG93ZXZlciBzb21lIGNvbXBpbGVycyB1c2UgImRlbGF5ZWQgZXZhbHVhdGlvbiIgb2Ygb25lIG9yIG1vcmUgb2YKLS8vIHRoZXNlIHdoZW4gaW1wbGljaXRseSBpbnN0YW50aWF0aW5nIHRlbXBsYXRlcy4gIFdlIHVzZSB0eXBlZGVmIGRlY2xhcmF0aW9ucwotLy8gYnkgZGVmYXVsdCwgYnV0IHRyeSBkZWZpbmluZyBORE5CT09TVF9VU0VfRU5VTV9TVEFUSUNfQVNTRVJUIGlmIHRoZSBlbnVtCi0vLyB2ZXJzaW9uIGdldHMgYmV0dGVyIHJlc3VsdHMgZnJvbSB5b3VyIGNvbXBpbGVyLi4uCi0vLwotLy8gSW1wbGVtZW50YXRpb246Ci0vLyBCb3RoIG9mIHRoZXNlIHZlcnNpb25zIHJlbHkgb24gc2l6ZW9mKGluY29tcGxldGVfdHlwZSkgZ2VuZXJhdGluZyBhbiBlcnJvcgotLy8gbWVzc2FnZSBjb250YWluaW5nIHRoZSBuYW1lIG9mIHRoZSBpbmNvbXBsZXRlIHR5cGUuICBXZSB1c2UKLS8vICJTVEFUSUNfQVNTRVJUSU9OX0ZBSUxVUkUiIGFzIHRoZSB0eXBlIG5hbWUgaGVyZSB0byBnZW5lcmF0ZQotLy8gYW4gZXllIGNhdGNoaW5nIGVycm9yIG1lc3NhZ2UuICBUaGUgcmVzdWx0IG9mIHRoZSBzaXplb2YgZXhwcmVzc2lvbiBpcyBlaXRoZXIKLS8vIHVzZWQgYXMgYW4gZW51bSBpbml0aWFsaXNlciwgb3IgYXMgYSB0ZW1wbGF0ZSBhcmd1bWVudCBkZXBlbmRpbmcgd2hpY2ggdmVyc2lvbgotLy8gaXMgaW4gdXNlLi4uCi0vLyBOb3RlIHRoYXQgdGhlIGFyZ3VtZW50IHRvIHRoZSBhc3NlcnQgaXMgZXhwbGljaXRseSBjYXN0IHRvIGJvb2wgdXNpbmcgb2xkLQotLy8gc3R5bGUgY2FzdHM6IHRvbyBtYW55IGNvbXBpbGVycyBjdXJyZW50bHkgaGF2ZSBwcm9ibGVtcyB3aXRoIHN0YXRpY19jYXN0Ci0vLyB3aGVuIHVzZWQgaW5zaWRlIGludGVncmFsIGNvbnN0YW50IGV4cHJlc3Npb25zLgotLy8KLSNpZiAhZGVmaW5lZChORE5CT09TVF9CVUdHWV9JTlRFR1JBTF9DT05TVEFOVF9FWFBSRVNTSU9OUykKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgKE5ETkJPT1NUX01TVkMgPCAxMzAwKQotLy8gX19MSU5FX18gbWFjcm8gYnJva2VuIHdoZW4gLVpJIGlzIHVzZWQgc2VlIFExOTkwNTcKLS8vIGZvcnR1bmF0ZWx5IE1TVkMgaWdub3JlcyBkdXBsaWNhdGUgdHlwZWRlZidzLgotI2RlZmluZSBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCBCICkgXAotICAgdHlwZWRlZiA6Om5kbmJvb3N0OjpzdGF0aWNfYXNzZXJ0X3Rlc3Q8XAotICAgICAgc2l6ZW9mKDo6bmRuYm9vc3Q6OlNUQVRJQ19BU1NFUlRJT05fRkFJTFVSRTwgKGJvb2wpKCBCICkgPilcCi0gICAgICA+IGJvb3N0X3N0YXRpY19hc3NlcnRfdHlwZWRlZl8KLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19NQUNST1MpCi0jZGVmaW5lIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoIEIgKSBcCi0gICB0eXBlZGVmIDo6bmRuYm9vc3Q6OnN0YXRpY19hc3NlcnRfdGVzdDxcCi0gICAgICBzaXplb2YoOjpuZG5ib29zdDo6U1RBVElDX0FTU0VSVElPTl9GQUlMVVJFPCBORE5CT09TVF9TVEFUSUNfQVNTRVJUX0JPT0xfQ0FTVCAoIEIgKSA+KT5cCi0gICAgICAgICBORE5CT09TVF9KT0lOKGJvb3N0X3N0YXRpY19hc3NlcnRfdHlwZWRlZl8sIF9fQ09VTlRFUl9fKQotI2VsaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotI2RlZmluZSBORE5CT09TVF9TVEFUSUNfQVNTRVJUKC4uLikgXAotICAgdHlwZWRlZiA6Om5kbmJvb3N0OjpzdGF0aWNfYXNzZXJ0X3Rlc3Q8XAotICAgICAgc2l6ZW9mKDo6bmRuYm9vc3Q6OlNUQVRJQ19BU1NFUlRJT05fRkFJTFVSRTwgTkROQk9PU1RfU1RBVElDX0FTU0VSVF9CT09MX0NBU1QgKF9fVkFfQVJHU19fKSA+KT5cCi0gICAgICAgICBORE5CT09TVF9KT0lOKGJvb3N0X3N0YXRpY19hc3NlcnRfdHlwZWRlZl8sIF9fQ09VTlRFUl9fKQotI2VsaWYgKGRlZmluZWQoTkROQk9PU1RfSU5URUxfQ1hYX1ZFUlNJT04pIHx8IGRlZmluZWQoTkROQk9PU1RfU0FfR0NDX1dPUktBUk9VTkQpKSAgJiYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19NQUNST1MpCi0vLyBhZ3VydCAxNS9zZXAvMDI6IGEgc3BlY2lhbCBjYXJlIGlzIG5lZWRlZCB0byBmb3JjZSBJbnRlbCBDKysgaXNzdWUgYW4gZXJyb3IgCi0vLyBpbnN0ZWFkIG9mIHdhcm5pbmcgaW4gY2FzZSBvZiBmYWlsdXJlCi0jIGRlZmluZSBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCBCICkgXAotICAgIHR5cGVkZWYgY2hhciBORE5CT09TVF9KT0lOKGJvb3N0X3N0YXRpY19hc3NlcnRfdHlwZWRlZl8sIF9fTElORV9fKSBcCi0gICAgICAgIFsgOjpuZG5ib29zdDo6U1RBVElDX0FTU0VSVElPTl9GQUlMVVJFPCBORE5CT09TVF9TVEFUSUNfQVNTRVJUX0JPT0xfQ0FTVCggQiApID46OnZhbHVlIF0KLSNlbGlmIChkZWZpbmVkKE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OKSB8fCBkZWZpbmVkKE5ETkJPT1NUX1NBX0dDQ19XT1JLQVJPVU5EKSkgICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX01BQ1JPUykKLS8vIGFndXJ0IDE1L3NlcC8wMjogYSBzcGVjaWFsIGNhcmUgaXMgbmVlZGVkIHRvIGZvcmNlIEludGVsIEMrKyBpc3N1ZSBhbiBlcnJvciAKLS8vIGluc3RlYWQgb2Ygd2FybmluZyBpbiBjYXNlIG9mIGZhaWx1cmUKLSMgZGVmaW5lIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoLi4uKSBcCi0gICAgdHlwZWRlZiBjaGFyIE5ETkJPT1NUX0pPSU4oYm9vc3Rfc3RhdGljX2Fzc2VydF90eXBlZGVmXywgX19MSU5FX18pIFwKLSAgICAgICAgWyA6Om5kbmJvb3N0OjpTVEFUSUNfQVNTRVJUSU9OX0ZBSUxVUkU8IE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfQk9PTF9DQVNUKCBfX1ZBX0FSR1NfXyApID46OnZhbHVlIF0KLSNlbGlmIGRlZmluZWQoX19zZ2kpCi0vLyBzcGVjaWFsIHZlcnNpb24gZm9yIFNHSSBNSVBTcHJvIGNvbXBpbGVyCi0jZGVmaW5lIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoIEIgKSBcCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgXAotICAgICBORE5CT09TVF9KT0lOKGJvb3N0X3N0YXRpY19hc3NlcnRfdGVzdF8sIF9fTElORV9fKSA9ICggQiApKTsgXAotICAgdHlwZWRlZiA6Om5kbmJvb3N0OjpzdGF0aWNfYXNzZXJ0X3Rlc3Q8XAotICAgICBzaXplb2YoOjpuZG5ib29zdDo6U1RBVElDX0FTU0VSVElPTl9GQUlMVVJFPCBcCi0gICAgICAgTkROQk9PU1RfSk9JTihib29zdF9zdGF0aWNfYXNzZXJ0X3Rlc3RfLCBfX0xJTkVfXykgPik+XAotICAgICAgICAgTkROQk9PU1RfSk9JTihib29zdF9zdGF0aWNfYXNzZXJ0X3R5cGVkZWZfLCBfX0xJTkVfXykKLSNlbGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgPD0gMHgzMDAzKQotLy8gc3BlY2lhbCB2ZXJzaW9uIGZvciBDb2RlV2FycmlvciA8PSA4LngKLSNkZWZpbmUgTkROQk9PU1RfU1RBVElDX0FTU0VSVCggQiApIFwKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIFwKLSAgICAgTkROQk9PU1RfSk9JTihib29zdF9zdGF0aWNfYXNzZXJ0X3Rlc3RfLCBfX0xJTkVfXykgPSBcCi0gICAgICAgc2l6ZW9mKDo6bmRuYm9vc3Q6OlNUQVRJQ19BU1NFUlRJT05fRkFJTFVSRTwgTkROQk9PU1RfU1RBVElDX0FTU0VSVF9CT09MX0NBU1QoIEIgKSA+KSApCi0jZWxzZQotLy8gZ2VuZXJpYyB2ZXJzaW9uCi0jICBpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfTUFDUk9TCi0jICAgICBkZWZpbmUgTkROQk9PU1RfU1RBVElDX0FTU0VSVCggLi4uICkgXAotICAgICAgICAgdHlwZWRlZiA6Om5kbmJvb3N0OjpzdGF0aWNfYXNzZXJ0X3Rlc3Q8XAotICAgICAgICAgICAgc2l6ZW9mKDo6bmRuYm9vc3Q6OlNUQVRJQ19BU1NFUlRJT05fRkFJTFVSRTwgTkROQk9PU1RfU1RBVElDX0FTU0VSVF9CT09MX0NBU1QoIF9fVkFfQVJHU19fICkgPik+XAotICAgICAgICAgICAgICAgTkROQk9PU1RfSk9JTihib29zdF9zdGF0aWNfYXNzZXJ0X3R5cGVkZWZfLCBfX0xJTkVfXykgTkROQk9PU1RfU1RBVElDX0FTU0VSVF9VTlVTRURfQVRUUklCVVRFCi0jICBlbHNlCi0jICAgICBkZWZpbmUgTkROQk9PU1RfU1RBVElDX0FTU0VSVCggQiApIFwKLSAgICAgICAgIHR5cGVkZWYgOjpuZG5ib29zdDo6c3RhdGljX2Fzc2VydF90ZXN0PFwKLSAgICAgICAgICAgIHNpemVvZig6Om5kbmJvb3N0OjpTVEFUSUNfQVNTRVJUSU9OX0ZBSUxVUkU8IE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfQk9PTF9DQVNUKCBCICkgPik+XAotICAgICAgICAgICAgICAgTkROQk9PU1RfSk9JTihib29zdF9zdGF0aWNfYXNzZXJ0X3R5cGVkZWZfLCBfX0xJTkVfXykgTkROQk9PU1RfU1RBVElDX0FTU0VSVF9VTlVTRURfQVRUUklCVVRFCi0jICBlbmRpZgotI2VuZGlmCi0KLSNlbHNlCi0vLyBhbHRlcm5hdGl2ZSBlbnVtIGJhc2VkIGltcGxlbWVudGF0aW9uOgotIyAgaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX01BQ1JPUwotIyAgICBkZWZpbmUgTkROQk9PU1RfU1RBVElDX0FTU0VSVCggLi4uICkgXAotICAgICAgICAgZW51bSB7IE5ETkJPT1NUX0pPSU4oYm9vc3Rfc3RhdGljX2Fzc2VydF9lbnVtXywgX19MSU5FX18pIFwKLSAgICAgICAgICAgID0gc2l6ZW9mKDo6bmRuYm9vc3Q6OlNUQVRJQ19BU1NFUlRJT05fRkFJTFVSRTwgKGJvb2wpKCBfX1ZBX0FSR1NfXyApID4pIH0KLSMgIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoQikgXAotICAgICAgICAgZW51bSB7IE5ETkJPT1NUX0pPSU4oYm9vc3Rfc3RhdGljX2Fzc2VydF9lbnVtXywgX19MSU5FX18pIFwKLSAgICAgICAgICAgID0gc2l6ZW9mKDo6bmRuYm9vc3Q6OlNUQVRJQ19BU1NFUlRJT05fRkFJTFVSRTwgKGJvb2wpKCBCICkgPikgfQotIyAgZW5kaWYKLSNlbmRpZgotI2VuZGlmIC8vIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfU1RBVElDX0FTU0VSVCkKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfSFBQCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zd2FwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc3dhcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzZDM3OTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zd2FwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNyBKb3NlcGggR2F1dGVyaW4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfU1dBUF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfU1dBUF9IUFAKLQotI2luY2x1ZGUgIm5kbmJvb3N0L3V0aWxpdHkvc3dhcC5ocHAiCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zeXN0ZW0vYXBpX2NvbmZpZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3N5c3RlbS9hcGlfY29uZmlnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzcxZDEzMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3N5c3RlbS9hcGlfY29uZmlnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8vICBuZG5ib29zdC9zeXN0ZW0vYXBpX2NvbmZpZy5ocHAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IEJlbWFuIERhd2VzIDIwMDMsIDIwMDYsIDIwMTAKLQotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9zeXN0ZW0gZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQm9vc3QuU3lzdGVtIGNhbGxzIG9wZXJhdGluZyBzeXN0ZW0gQVBJIGZ1bmN0aW9ucyB0byBpbXBsZW1lbnQgc3lzdGVtIGVycm9yIGNhdGVnb3J5Ci0vLyAgZnVuY3Rpb25zLiBVc3VhbGx5IHRoZXJlIGlzIG5vIHF1ZXN0aW9uIGFzIHRvIHdoaWNoIEFQSSBpcyB0byBiZSB1c2VkLgotLy8KLS8vICBJbiB0aGUgY2FzZSBvZiBNaW5HVyBvciBDeWd3aW4vTWluR1csIGhvd2V2ZXIsIGJvdGggUE9TSVggYW5kIFdpbmRvd3MgQVBJJ3MgYXJlCi0vLyAgYXZhaWxhYmxlLiBDaGFvcyBlbnN1ZXMgaWYgb3RoZXIgY29kZSB0aGlua3Mgb25lIGlzIGluIHVzZSB3aGVuIEJvb3N0LlN5c3RlbSB3YXMKLS8vICBhY3R1YWxseSBidWlsdCB3aXRoIHRoZSBvdGhlci4gVGhpcyBoZWFkZXIgY2VudHJhbGl6ZXMgdGhlIEFQSSBjaG9pY2UgYW5kIHByZXZlbnRzCi0vLyAgdXNlciBkZWZpbml0aW9uIG9mIEFQSSBtYWNyb3MsIHRodXMgZWxtaW5hdGluZyB0aGUgcG9zc2liaWxpdHkgb2YgbWlzbWF0Y2hlcyBhbmQgdGhlCi0vLyAgbmVlZCB0byB0ZXN0IGNvbmZpZ3VyYXRpb25zIHdpdGggbGl0dGxlIG9yIG5vIHByYWN0aWNhbCB2YWx1ZS4KLS8vCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1NZU1RFTV9BUElfQ09ORklHX0hQUCAgICAgICAgICAgICAgICAgIAotI2RlZmluZSBORE5CT09TVF9TWVNURU1fQVBJX0NPTkZJR19IUFAKLQotIyBpZiBkZWZpbmVkKE5ETkJPT1NUX1BPU0lYX0FQSSkgfHwgZGVmaW5lZChORE5CT09TVF9XSU5ET1dTX0FQSSkKLSMgICBlcnJvciB1c2VyIGRlZmluZWQgTkROQk9PU1RfUE9TSVhfQVBJIG9yIE5ETkJPT1NUX1dJTkRPV1NfQVBJIG5vdCBzdXBwb3J0ZWQKLSMgZW5kaWYKLQotLy8gIE5ETkJPT1NUX1BPU0lYX0FQSSBvciBORE5CT09TVF9XSU5ET1dTX0FQSSBzcGVjaWZ5IHdoaWNoIEFQSSB0byB1c2UKLS8vICAgIEN5Z3dpbi9NaW5HVyBkb2VzIG5vdCBwcmVkZWZpbmUgX1dJTjMyLgotLy8gICAgU3RhbmRhbG9uZSBNaW5HVyBhbmQgYWxsIG90aGVyIGtub3duIFdpbmRvd3MgY29tcGlsZXJzIGRvIHByZWRlZmluZSBfV0lOMzIKLS8vICAgIENvbXBpbGVycyB0aGF0IHByZWRlZmluZSBfV0lOMzIgb3IgX19NSU5HVzMyX18gZG8gc28gZm9yIFdpbmRvd3MgNjQtYml0IGJ1aWxkcyB0b28uCi0KLSMgaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgLy8gV2luZG93cyBkZWZhdWx0LCBpbmNsdWRpbmcgTWluR1cgYW5kIEN5Z3dpbgotIyAgIGRlZmluZSBORE5CT09TVF9XSU5ET1dTX0FQSQotIyBlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX1BPU0lYX0FQSSAKLSMgZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSNlbmRpZiAgLy8gTkROQk9PU1RfU1lTVEVNX0FQSV9DT05GSUdfSFBQIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zeXN0ZW0vY29uZmlnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc3lzdGVtL2NvbmZpZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxODBkZTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zeXN0ZW0vY29uZmlnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLS8vICBuZG5ib29zdC9zeXN0ZW0vY29uZmlnLmhwcCAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IEJlbWFuIERhd2VzIDIwMDMsIDIwMDYKLQotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vICBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3N5c3RlbSBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9TWVNURU1fQ09ORklHX0hQUCAgICAgICAgICAgICAgICAgIAotI2RlZmluZSBORE5CT09TVF9TWVNURU1fQ09ORklHX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zeXN0ZW0vYXBpX2NvbmZpZy5ocHA+ICAvLyBmb3IgTkROQk9PU1RfUE9TSVhfQVBJIG9yIE5ETkJPT1NUX1dJTkRPV1NfQVBJCi0KLS8vIFRoaXMgaGVhZGVyIGltcGxlbWVudHMgc2VwYXJhdGUgY29tcGlsYXRpb24gZmVhdHVyZXMgYXMgZGVzY3JpYmVkIGluCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9tb3JlL3NlcGFyYXRlX2NvbXBpbGF0aW9uLmh0bWwKLQotLy8gIG5vcm1hbGl6ZSBtYWNyb3MgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9TWVNURU1fRFlOX0xJTkspICYmICFkZWZpbmVkKE5ETkJPT1NUX1NZU1RFTV9TVEFUSUNfTElOSykgXAotICAmJiAhZGVmaW5lZChORE5CT09TVF9BTExfRFlOX0xJTkspICYmICFkZWZpbmVkKE5ETkJPT1NUX0FMTF9TVEFUSUNfTElOSykKLSMgZGVmaW5lIE5ETkJPT1NUX1NZU1RFTV9TVEFUSUNfTElOSwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0FMTF9EWU5fTElOSykgJiYgIWRlZmluZWQoTkROQk9PU1RfU1lTVEVNX0RZTl9MSU5LKQotIyBkZWZpbmUgTkROQk9PU1RfU1lTVEVNX0RZTl9MSU5LIAotI2VsaWYgZGVmaW5lZChORE5CT09TVF9BTExfU1RBVElDX0xJTkspICYmICFkZWZpbmVkKE5ETkJPT1NUX1NZU1RFTV9TVEFUSUNfTElOSykKLSMgZGVmaW5lIE5ETkJPT1NUX1NZU1RFTV9TVEFUSUNfTElOSyAKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9TWVNURU1fRFlOX0xJTkspICYmIGRlZmluZWQoTkROQk9PU1RfU1lTVEVNX1NUQVRJQ19MSU5LKQotIyBlcnJvciBNdXN0IG5vdCBkZWZpbmUgYm90aCBORE5CT09TVF9TWVNURU1fRFlOX0xJTksgYW5kIE5ETkJPT1NUX1NZU1RFTV9TVEFUSUNfTElOSwotI2VuZGlmCi0KLS8vICBlbmFibGUgZHluYW1pYyBvciBzdGF0aWMgbGlua2luZyBhcyByZXF1ZXN0ZWQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9BTExfRFlOX0xJTkspIHx8IGRlZmluZWQoTkROQk9PU1RfU1lTVEVNX0RZTl9MSU5LKQotIyBpZiBkZWZpbmVkKE5ETkJPT1NUX1NZU1RFTV9TT1VSQ0UpCi0jICAgZGVmaW5lIE5ETkJPT1NUX1NZU1RFTV9ERUNMIE5ETkJPT1NUX1NZTUJPTF9FWFBPUlQKLSMgZWxzZSAKLSMgICBkZWZpbmUgTkROQk9PU1RfU1lTVEVNX0RFQ0wgTkROQk9PU1RfU1lNQk9MX0lNUE9SVAotIyBlbmRpZgotI2Vsc2UKLSMgZGVmaW5lIE5ETkJPT1NUX1NZU1RFTV9ERUNMCi0jZW5kaWYKLQotLy8gIGVuYWJsZSBhdXRvbWF0aWMgbGlicmFyeSB2YXJpYW50IHNlbGVjdGlvbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vIAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfU1lTVEVNX1NPVVJDRSkgJiYgIWRlZmluZWQoTkROQk9PU1RfQUxMX05PX0xJQikgJiYgIWRlZmluZWQoTkROQk9PU1RfU1lTVEVNX05PX0xJQikKLS8vCi0vLyBTZXQgdGhlIG5hbWUgb2Ygb3VyIGxpYnJhcnksIHRoaXMgd2lsbCBnZXQgdW5kZWYnZWQgYnkgYXV0b19saW5rLmhwcAotLy8gb25jZSBpdCdzIGRvbmUgd2l0aCBpdDoKLS8vCi0jZGVmaW5lIE5ETkJPT1NUX0xJQl9OQU1FIG5kbmJvb3N0X3N5c3RlbQotLy8KLS8vIElmIHdlJ3JlIGltcG9ydGluZyBjb2RlIGZyb20gYSBkbGwsIHRoZW4gdGVsbCBhdXRvX2xpbmsuaHBwIGFib3V0IGl0OgotLy8KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0FMTF9EWU5fTElOSykgfHwgZGVmaW5lZChORE5CT09TVF9TWVNURU1fRFlOX0xJTkspCi0jICBkZWZpbmUgTkROQk9PU1RfRFlOX0xJTksKLSNlbmRpZgotLy8KLS8vIEFuZCBpbmNsdWRlIHRoZSBoZWFkZXIgdGhhdCBkb2VzIHRoZSB3b3JrOgotLy8KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvYXV0b19saW5rLmhwcD4KLSNlbmRpZiAgLy8gYXV0by1saW5raW5nIGRpc2FibGVkCi0KLSNlbmRpZiAvLyBORE5CT09TVF9TWVNURU1fQ09ORklHX0hQUAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3N5c3RlbS9lcnJvcl9jb2RlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc3lzdGVtL2Vycm9yX2NvZGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZDkyYzg1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc3lzdGVtL2Vycm9yX2NvZGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTIxICswLDAgQEAKLS8vICBuZG5ib29zdC9zeXN0ZW0vZXJyb3JfY29kZS5ocHAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBDb3B5cmlnaHQgQmVtYW4gRGF3ZXMgMjAwNiwgMjAwNwotLy8gIENvcHlyaWdodCBDaHJpc3RvcGVyIEtvaGxob2ZmIDIwMDcKLQotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vICBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBsaWJyYXJ5IGhvbWUgcGFnZSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3N5c3RlbQotCi0jaWZuZGVmIE5ETkJPT1NUX0VSUk9SX0NPREVfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0VSUk9SX0NPREVfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9zeXN0ZW0vY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jc3RkaW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L29wZXJhdG9ycy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvbm9uY29weWFibGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZW5hYmxlX2lmLmhwcD4KLSNpbmNsdWRlIDxvc3RyZWFtPgotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDxzdGRleGNlcHQ+Ci0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KLQotLy8gVE9ETzogdW5kZWYgdGhlc2UgbWFjcm9zIGlmIG5vdCBhbHJlYWR5IGRlZmluZWQKLSNpbmNsdWRlIDxuZG5ib29zdC9jZXJybm8uaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfUE9TSVhfQVBJKSAmJiAhZGVmaW5lZChORE5CT09TVF9XSU5ET1dTX0FQSSkKLSMgIGVycm9yIE5ETkJPT1NUX1BPU0lYX0FQSSBvciBORE5CT09TVF9XSU5ET1dTX0FQSSBtdXN0IGJlIGRlZmluZWQKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL2FiaV9wcmVmaXguaHBwPiAvLyBtdXN0IGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0KLSNpZm5kZWYgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUCi0jZGVmaW5lIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVCBORE5CT09TVF9OT0VYQ0VQVAotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICBuYW1lc3BhY2Ugc3lzdGVtCi0gIHsKLQotICAgIGNsYXNzIGVycm9yX2NvZGU7Ci0gICAgY2xhc3MgZXJyb3JfY29uZGl0aW9uOwotCi0gICAgLy8gICJDb25jZXB0IiBoZWxwZXJzICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgdGVtcGxhdGU8IGNsYXNzIFQgPgotICAgIHN0cnVjdCBpc19lcnJvcl9jb2RlX2VudW0geyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IGZhbHNlOyB9OwotCi0gICAgdGVtcGxhdGU8IGNsYXNzIFQgPgotICAgIHN0cnVjdCBpc19lcnJvcl9jb25kaXRpb25fZW51bSB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gZmFsc2U7IH07Ci0KLSAgICAvLyAgZ2VuZXJpYyBlcnJvcl9jb25kaXRpb25zICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICBuYW1lc3BhY2UgZXJyYwotICAgIHsKLSAgICAgIGVudW0gZXJyY190Ci0gICAgICB7Ci0gICAgICAgIHN1Y2Nlc3MgPSAwLAotICAgICAgICBhZGRyZXNzX2ZhbWlseV9ub3Rfc3VwcG9ydGVkID0gRUFGTk9TVVBQT1JULAotICAgICAgICBhZGRyZXNzX2luX3VzZSA9IEVBRERSSU5VU0UsCi0gICAgICAgIGFkZHJlc3Nfbm90X2F2YWlsYWJsZSA9IEVBRERSTk9UQVZBSUwsCi0gICAgICAgIGFscmVhZHlfY29ubmVjdGVkID0gRUlTQ09OTiwKLSAgICAgICAgYXJndW1lbnRfbGlzdF90b29fbG9uZyA9IEUyQklHLAotICAgICAgICBhcmd1bWVudF9vdXRfb2ZfZG9tYWluID0gRURPTSwKLSAgICAgICAgYmFkX2FkZHJlc3MgPSBFRkFVTFQsCi0gICAgICAgIGJhZF9maWxlX2Rlc2NyaXB0b3IgPSBFQkFERiwKLSAgICAgICAgYmFkX21lc3NhZ2UgPSBFQkFETVNHLAotICAgICAgICBicm9rZW5fcGlwZSA9IEVQSVBFLAotICAgICAgICBjb25uZWN0aW9uX2Fib3J0ZWQgPSBFQ09OTkFCT1JURUQsCi0gICAgICAgIGNvbm5lY3Rpb25fYWxyZWFkeV9pbl9wcm9ncmVzcyA9IEVBTFJFQURZLAotICAgICAgICBjb25uZWN0aW9uX3JlZnVzZWQgPSBFQ09OTlJFRlVTRUQsCi0gICAgICAgIGNvbm5lY3Rpb25fcmVzZXQgPSBFQ09OTlJFU0VULAotICAgICAgICBjcm9zc19kZXZpY2VfbGluayA9IEVYREVWLAotICAgICAgICBkZXN0aW5hdGlvbl9hZGRyZXNzX3JlcXVpcmVkID0gRURFU1RBRERSUkVRLAotICAgICAgICBkZXZpY2Vfb3JfcmVzb3VyY2VfYnVzeSA9IEVCVVNZLAotICAgICAgICBkaXJlY3Rvcnlfbm90X2VtcHR5ID0gRU5PVEVNUFRZLAotICAgICAgICBleGVjdXRhYmxlX2Zvcm1hdF9lcnJvciA9IEVOT0VYRUMsCi0gICAgICAgIGZpbGVfZXhpc3RzID0gRUVYSVNULAotICAgICAgICBmaWxlX3Rvb19sYXJnZSA9IEVGQklHLAotICAgICAgICBmaWxlbmFtZV90b29fbG9uZyA9IEVOQU1FVE9PTE9ORywKLSAgICAgICAgZnVuY3Rpb25fbm90X3N1cHBvcnRlZCA9IEVOT1NZUywKLSAgICAgICAgaG9zdF91bnJlYWNoYWJsZSA9IEVIT1NUVU5SRUFDSCwKLSAgICAgICAgaWRlbnRpZmllcl9yZW1vdmVkID0gRUlEUk0sCi0gICAgICAgIGlsbGVnYWxfYnl0ZV9zZXF1ZW5jZSA9IEVJTFNFUSwKLSAgICAgICAgaW5hcHByb3ByaWF0ZV9pb19jb250cm9sX29wZXJhdGlvbiA9IEVOT1RUWSwKLSAgICAgICAgaW50ZXJydXB0ZWQgPSBFSU5UUiwKLSAgICAgICAgaW52YWxpZF9hcmd1bWVudCA9IEVJTlZBTCwKLSAgICAgICAgaW52YWxpZF9zZWVrID0gRVNQSVBFLAotICAgICAgICBpb19lcnJvciA9IEVJTywKLSAgICAgICAgaXNfYV9kaXJlY3RvcnkgPSBFSVNESVIsCi0gICAgICAgIG1lc3NhZ2Vfc2l6ZSA9IEVNU0dTSVpFLAotICAgICAgICBuZXR3b3JrX2Rvd24gPSBFTkVURE9XTiwKLSAgICAgICAgbmV0d29ya19yZXNldCA9IEVORVRSRVNFVCwKLSAgICAgICAgbmV0d29ya191bnJlYWNoYWJsZSA9IEVORVRVTlJFQUNILAotICAgICAgICBub19idWZmZXJfc3BhY2UgPSBFTk9CVUZTLAotICAgICAgICBub19jaGlsZF9wcm9jZXNzID0gRUNISUxELAotICAgICAgICBub19saW5rID0gRU5PTElOSywKLSAgICAgICAgbm9fbG9ja19hdmFpbGFibGUgPSBFTk9MQ0ssCi0gICAgICAgIG5vX21lc3NhZ2VfYXZhaWxhYmxlID0gRU5PREFUQSwKLSAgICAgICAgbm9fbWVzc2FnZSA9IEVOT01TRywKLSAgICAgICAgbm9fcHJvdG9jb2xfb3B0aW9uID0gRU5PUFJPVE9PUFQsCi0gICAgICAgIG5vX3NwYWNlX29uX2RldmljZSA9IEVOT1NQQywKLSAgICAgICAgbm9fc3RyZWFtX3Jlc291cmNlcyA9IEVOT1NSLAotICAgICAgICBub19zdWNoX2RldmljZV9vcl9hZGRyZXNzID0gRU5YSU8sCi0gICAgICAgIG5vX3N1Y2hfZGV2aWNlID0gRU5PREVWLAotICAgICAgICBub19zdWNoX2ZpbGVfb3JfZGlyZWN0b3J5ID0gRU5PRU5ULAotICAgICAgICBub19zdWNoX3Byb2Nlc3MgPSBFU1JDSCwKLSAgICAgICAgbm90X2FfZGlyZWN0b3J5ID0gRU5PVERJUiwKLSAgICAgICAgbm90X2Ffc29ja2V0ID0gRU5PVFNPQ0ssCi0gICAgICAgIG5vdF9hX3N0cmVhbSA9IEVOT1NUUiwKLSAgICAgICAgbm90X2Nvbm5lY3RlZCA9IEVOT1RDT05OLAotICAgICAgICBub3RfZW5vdWdoX21lbW9yeSA9IEVOT01FTSwKLSAgICAgICAgbm90X3N1cHBvcnRlZCA9IEVOT1RTVVAsCi0gICAgICAgIG9wZXJhdGlvbl9jYW5jZWxlZCA9IEVDQU5DRUxFRCwKLSAgICAgICAgb3BlcmF0aW9uX2luX3Byb2dyZXNzID0gRUlOUFJPR1JFU1MsCi0gICAgICAgIG9wZXJhdGlvbl9ub3RfcGVybWl0dGVkID0gRVBFUk0sCi0gICAgICAgIG9wZXJhdGlvbl9ub3Rfc3VwcG9ydGVkID0gRU9QTk9UU1VQUCwKLSAgICAgICAgb3BlcmF0aW9uX3dvdWxkX2Jsb2NrID0gRVdPVUxEQkxPQ0ssCi0gICAgICAgIG93bmVyX2RlYWQgPSBFT1dORVJERUFELAotICAgICAgICBwZXJtaXNzaW9uX2RlbmllZCA9IEVBQ0NFUywKLSAgICAgICAgcHJvdG9jb2xfZXJyb3IgPSBFUFJPVE8sCi0gICAgICAgIHByb3RvY29sX25vdF9zdXBwb3J0ZWQgPSBFUFJPVE9OT1NVUFBPUlQsCi0gICAgICAgIHJlYWRfb25seV9maWxlX3N5c3RlbSA9IEVST0ZTLAotICAgICAgICByZXNvdXJjZV9kZWFkbG9ja193b3VsZF9vY2N1ciA9IEVERUFETEssCi0gICAgICAgIHJlc291cmNlX3VuYXZhaWxhYmxlX3RyeV9hZ2FpbiA9IEVBR0FJTiwKLSAgICAgICAgcmVzdWx0X291dF9vZl9yYW5nZSA9IEVSQU5HRSwKLSAgICAgICAgc3RhdGVfbm90X3JlY292ZXJhYmxlID0gRU5PVFJFQ09WRVJBQkxFLAotICAgICAgICBzdHJlYW1fdGltZW91dCA9IEVUSU1FLAotICAgICAgICB0ZXh0X2ZpbGVfYnVzeSA9IEVUWFRCU1ksCi0gICAgICAgIHRpbWVkX291dCA9IEVUSU1FRE9VVCwKLSAgICAgICAgdG9vX21hbnlfZmlsZXNfb3Blbl9pbl9zeXN0ZW0gPSBFTkZJTEUsCi0gICAgICAgIHRvb19tYW55X2ZpbGVzX29wZW4gPSBFTUZJTEUsCi0gICAgICAgIHRvb19tYW55X2xpbmtzID0gRU1MSU5LLAotICAgICAgICB0b29fbWFueV9zeW1ib2xpY19saW5rX2xldmVscyA9IEVMT09QLAotICAgICAgICB2YWx1ZV90b29fbGFyZ2UgPSBFT1ZFUkZMT1csCi0gICAgICAgIHdyb25nX3Byb3RvY29sX3R5cGUgPSBFUFJPVE9UWVBFCi0gICAgICB9OwotCi0gICAgfSAvLyBuYW1lc3BhY2UgZXJyYwotCi0jIGlmbmRlZiBORE5CT09TVF9TWVNURU1fTk9fREVQUkVDQVRFRAotICAgIG5hbWVzcGFjZSBwb3NpeCA9IGVycmM7Ci0gICAgbmFtZXNwYWNlIHBvc2l4X2Vycm9yID0gZXJyYzsKLSMgZW5kaWYKLQotICAgIHRlbXBsYXRlPD4gc3RydWN0IGlzX2Vycm9yX2NvbmRpdGlvbl9lbnVtPGVycmM6OmVycmNfdD4KLSAgICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OwotCi0KLSAgICAvLyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICAvLyAgT3BlcmF0aW5nIHN5c3RlbSBzcGVjaWZpYyBpbnRlcmZhY2VzICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLQotICAgIC8vICBUaGUgaW50ZXJmYWNlIGlzIGRpdmlkZWQgaW50byBnZW5lcmFsIGFuZCBzeXN0ZW0tc3BlY2lmaWMgcG9ydGlvbnMgdG8KLSAgICAvLyAgbWVldCB0aGVzZSByZXF1aXJlbWVudHM6Ci0gICAgLy8KLSAgICAvLyAgKiBDb2RlIGNhbGxpbmcgYW4gb3BlcmF0aW5nIHN5c3RlbSBBUEkgY2FuIGNyZWF0ZSBhbiBlcnJvcl9jb2RlIHdpdGgKLSAgICAvLyAgICBhIHNpbmdsZSBjYXRlZ29yeSAoc3lzdGVtX2NhdGVnb3J5KSwgZXZlbiBmb3IgUE9TSVgtbGlrZSBvcGVyYXRpbmcKLSAgICAvLyAgICBzeXN0ZW1zIHRoYXQgcmV0dXJuIHNvbWUgUE9TSVggZXJybm8gdmFsdWVzIGFuZCBzb21lIG5hdGl2ZSBlcnJubwotICAgIC8vICAgIHZhbHVlcy4gVGhpcyBjb2RlIHNob3VsZCBub3QgaGF2ZSB0byBwYXkgdGhlIGNvc3Qgb2YgZGlzdGluZ3Vpc2hpbmcKLSAgICAvLyAgICBiZXR3ZWVuIGNhdGVnb3JpZXMsIHNpbmNlIGl0IGlzIG5vdCB5ZXQga25vd24gaWYgdGhhdCBpcyBuZWVkZWQuCi0gICAgLy8KLSAgICAvLyAgKiBVc2VycyB3aXNoaW5nIHRvIHdyaXRlIHN5c3RlbS1zcGVjaWZpYyBjb2RlIHNob3VsZCBiZSBnaXZlbiBlbnVtcyBmb3IKLSAgICAvLyAgICBhdCBsZWFzdCB0aGUgY29tbW9uIGVycm9yIGNhc2VzLgotICAgIC8vCi0gICAgLy8gICogU3lzdGVtIHNwZWNpZmljIGNvZGUgc2hvdWxkIGZhaWwgYXQgY29tcGlsZSB0aW1lIGlmIG1vdmVkIHRvIGFub3RoZXIKLSAgICAvLyAgICBvcGVyYXRpbmcgc3lzdGVtLgotCi0gICAgLy8gIFRoZSBzeXN0ZW0gc3BlY2lmaWMgcG9ydGlvbnMgb2YgdGhlIGludGVyZmFjZSBhcmUgbG9jYXRlZCBpbiBoZWFkZXJzCi0gICAgLy8gIHdpdGggbmFtZXMgcmVmbGVjdGluZyB0aGUgb3BlcmF0aW5nIHN5c3RlbS4gRm9yIGV4YW1wbGUsCi0gICAgLy8KLSAgICAvLyAgICAgICA8bmRuYm9vc3Qvc3lzdGVtL2N5Z3dpbl9lcnJvci5ocHA+Ci0gICAgLy8gICAgICAgPG5kbmJvb3N0L3N5c3RlbS9saW51eF9lcnJvci5ocHA+Ci0gICAgLy8gICAgICAgPG5kbmJvb3N0L3N5c3RlbS93aW5kb3dzX2Vycm9yLmhwcD4KLSAgICAvLwotICAgIC8vICBUaGVzZSBoZWFkZXJzIGFyZSBlZmZlY3RpdmVseSBlbXB0eSBmb3IgY29tcGlsZXMgb24gb3BlcmF0aW5nIHN5c3RlbXMKLSAgICAvLyAgd2hlcmUgdGhleSBhcmUgbm90IGFwcGxpY2FibGUuCi0KLSAgICAvLyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICAvLyAgY2xhc3MgZXJyb3JfY2F0ZWdvcnkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICBjbGFzcyBlcnJvcl9jYXRlZ29yeSA6IHB1YmxpYyBub25jb3B5YWJsZQotICAgIHsKLSAgICBwdWJsaWM6Ci0gICAgICB2aXJ0dWFsIH5lcnJvcl9jYXRlZ29yeSgpe30KLQotICAgICAgdmlydHVhbCBjb25zdCBjaGFyICogICAgIG5hbWUoKSBjb25zdCBORE5CT09TVF9TWVNURU1fTk9FWENFUFQgPSAwOwotICAgICAgdmlydHVhbCBzdGQ6OnN0cmluZyAgICAgIG1lc3NhZ2UoIGludCBldiApIGNvbnN0ID0gMDsKLSAgICAgIGlubGluZSB2aXJ0dWFsIGVycm9yX2NvbmRpdGlvbiAgZGVmYXVsdF9lcnJvcl9jb25kaXRpb24oIGludCBldiApIGNvbnN0ICBORE5CT09TVF9TWVNURU1fTk9FWENFUFQ7Ci0gICAgICBpbmxpbmUgdmlydHVhbCBib29sICAgICAgICAgICAgIGVxdWl2YWxlbnQoIGludCBjb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yX2NvbmRpdGlvbiAmIGNvbmRpdGlvbiApIGNvbnN0ICBORE5CT09TVF9TWVNURU1fTk9FWENFUFQ7Ci0gICAgICBpbmxpbmUgdmlydHVhbCBib29sICAgICAgICAgICAgIGVxdWl2YWxlbnQoIGNvbnN0IGVycm9yX2NvZGUgJiBjb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb25kaXRpb24gKSBjb25zdCAgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUOwotCi0gICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgZXJyb3JfY2F0ZWdvcnkgJiByaHMpIGNvbnN0IE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVCB7IHJldHVybiB0aGlzID09ICZyaHM7IH0KLSAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBlcnJvcl9jYXRlZ29yeSAmIHJocykgY29uc3QgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUIHsgcmV0dXJuIHRoaXMgIT0gJnJoczsgfQotICAgICAgYm9vbCBvcGVyYXRvcjwoIGNvbnN0IGVycm9yX2NhdGVnb3J5ICYgcmhzICkgY29uc3QgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Omxlc3M8Y29uc3QgZXJyb3JfY2F0ZWdvcnkqPigpKCB0aGlzLCAmcmhzICk7Ci0gICAgICB9Ci0gICAgfTsKLQotICAgIC8vICBwcmVkZWZpbmVkIGVycm9yIGNhdGVnb3JpZXMgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotIyBpZmRlZiBORE5CT09TVF9FUlJPUl9DT0RFX0hFQURFUl9PTkxZCi0gICAgaW5saW5lIGNvbnN0IGVycm9yX2NhdGVnb3J5ICYgIHN5c3RlbV9jYXRlZ29yeSgpIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVDsKLSAgICBpbmxpbmUgY29uc3QgZXJyb3JfY2F0ZWdvcnkgJiAgZ2VuZXJpY19jYXRlZ29yeSgpIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVDsKLSNlbHNlCi0gICAgTkROQk9PU1RfU1lTVEVNX0RFQ0wgY29uc3QgZXJyb3JfY2F0ZWdvcnkgJiAgc3lzdGVtX2NhdGVnb3J5KCkgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUOwotICAgIE5ETkJPT1NUX1NZU1RFTV9ERUNMIGNvbnN0IGVycm9yX2NhdGVnb3J5ICYgIGdlbmVyaWNfY2F0ZWdvcnkoKSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQ7Ci0jZW5kaWYKLSAgICAvLyAgZGVwcmVjYXRlZCBzeW5vbnltcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSMgaWZuZGVmIE5ETkJPT1NUX1NZU1RFTV9OT19ERVBSRUNBVEVECi0gICAgaW5saW5lIGNvbnN0IGVycm9yX2NhdGVnb3J5ICYgIGdldF9zeXN0ZW1fY2F0ZWdvcnkoKSB7IHJldHVybiBzeXN0ZW1fY2F0ZWdvcnkoKTsgfQotICAgIGlubGluZSBjb25zdCBlcnJvcl9jYXRlZ29yeSAmICBnZXRfZ2VuZXJpY19jYXRlZ29yeSgpIHsgcmV0dXJuIGdlbmVyaWNfY2F0ZWdvcnkoKTsgfQotICAgIGlubGluZSBjb25zdCBlcnJvcl9jYXRlZ29yeSAmICBnZXRfcG9zaXhfY2F0ZWdvcnkoKSB7IHJldHVybiBnZW5lcmljX2NhdGVnb3J5KCk7IH0KLSAgICBzdGF0aWMgY29uc3QgZXJyb3JfY2F0ZWdvcnkgJiAgcG9zaXhfY2F0ZWdvcnkgPSBnZW5lcmljX2NhdGVnb3J5KCk7Ci0gICAgc3RhdGljIGNvbnN0IGVycm9yX2NhdGVnb3J5ICYgIGVycm5vX2VjYXQgICAgID0gZ2VuZXJpY19jYXRlZ29yeSgpOwotICAgIHN0YXRpYyBjb25zdCBlcnJvcl9jYXRlZ29yeSAmICBuYXRpdmVfZWNhdCAgICA9IHN5c3RlbV9jYXRlZ29yeSgpOwotIyBlbmRpZgotCi0gICAgLy8gIGNsYXNzIGVycm9yX2NvbmRpdGlvbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgLy8gIGVycm9yX2NvbmRpdGlvbnMgYXJlIHBvcnRhYmxlLCBlcnJvcl9jb2RlcyBhcmUgc3lzdGVtIG9yIGxpYnJhcnkgc3BlY2lmaWMKLQotICAgIGNsYXNzIGVycm9yX2NvbmRpdGlvbgotICAgIHsKLSAgICBwdWJsaWM6Ci0KLSAgICAgIC8vIGNvbnN0cnVjdG9yczoKLSAgICAgIGVycm9yX2NvbmRpdGlvbigpIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVCA6IG1fdmFsKDApLCBtX2NhdCgmZ2VuZXJpY19jYXRlZ29yeSgpKSB7fQotICAgICAgZXJyb3JfY29uZGl0aW9uKCBpbnQgdmFsLCBjb25zdCBlcnJvcl9jYXRlZ29yeSAmIGNhdCApIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVCA6IG1fdmFsKHZhbCksIG1fY2F0KCZjYXQpIHt9Ci0KLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBFcnJvckNvbmRpdGlvbkVudW0+Ci0gICAgICAgIGVycm9yX2NvbmRpdGlvbihFcnJvckNvbmRpdGlvbkVudW0gZSwKLSAgICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6ZW5hYmxlX2lmPGlzX2Vycm9yX2NvbmRpdGlvbl9lbnVtPEVycm9yQ29uZGl0aW9uRW51bT4gPjo6dHlwZSogPSAwKSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQKLSAgICAgIHsKLSAgICAgICAgKnRoaXMgPSBtYWtlX2Vycm9yX2NvbmRpdGlvbihlKTsKLSAgICAgIH0KLQotICAgICAgLy8gbW9kaWZpZXJzOgotCi0gICAgICB2b2lkIGFzc2lnbiggaW50IHZhbCwgY29uc3QgZXJyb3JfY2F0ZWdvcnkgJiBjYXQgKSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQKLSAgICAgIHsKLSAgICAgICAgbV92YWwgPSB2YWw7Ci0gICAgICAgIG1fY2F0ID0gJmNhdDsKLSAgICAgIH0KLQotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRXJyb3JDb25kaXRpb25FbnVtPgotICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6ZW5hYmxlX2lmPGlzX2Vycm9yX2NvbmRpdGlvbl9lbnVtPEVycm9yQ29uZGl0aW9uRW51bT4sIGVycm9yX2NvbmRpdGlvbj46OnR5cGUgJgotICAgICAgICAgIG9wZXJhdG9yPSggRXJyb3JDb25kaXRpb25FbnVtIHZhbCApIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVAotICAgICAgewotICAgICAgICAqdGhpcyA9IG1ha2VfZXJyb3JfY29uZGl0aW9uKHZhbCk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgIH0KLQotICAgICAgdm9pZCBjbGVhcigpIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVAotICAgICAgewotICAgICAgICBtX3ZhbCA9IDA7Ci0gICAgICAgIG1fY2F0ID0gJmdlbmVyaWNfY2F0ZWdvcnkoKTsKLSAgICAgIH0KLQotICAgICAgLy8gb2JzZXJ2ZXJzOgotICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgdmFsdWUoKSBjb25zdCBORE5CT09TVF9TWVNURU1fTk9FWENFUFQgICAgeyByZXR1cm4gbV92YWw7IH0KLSAgICAgIGNvbnN0IGVycm9yX2NhdGVnb3J5ICYgIGNhdGVnb3J5KCkgY29uc3QgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUIHsgcmV0dXJuICptX2NhdDsgfQotICAgICAgc3RkOjpzdHJpbmcgICAgICAgICAgICAgbWVzc2FnZSgpIGNvbnN0ICB7IHJldHVybiBtX2NhdC0+bWVzc2FnZSh2YWx1ZSgpKTsgfQotCi0gICAgICB0eXBlZGVmIHZvaWQgKCp1bnNwZWNpZmllZF9ib29sX3R5cGUpKCk7Ci0gICAgICBzdGF0aWMgdm9pZCB1bnNwZWNpZmllZF9ib29sX3RydWUoKSB7fQotCi0gICAgICBvcGVyYXRvciB1bnNwZWNpZmllZF9ib29sX3R5cGUoKSBjb25zdCBORE5CT09TVF9TWVNURU1fTk9FWENFUFQgIC8vIHRydWUgaWYgZXJyb3IKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdmFsID09IDAgPyAwIDogdW5zcGVjaWZpZWRfYm9vbF90cnVlOwotICAgICAgfQotCi0gICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVCAgLy8gdHJ1ZSBpZiBubyBlcnJvcgotICAgICAgewotICAgICAgICByZXR1cm4gbV92YWwgPT0gMDsKLSAgICAgIH0KLQotICAgICAgLy8gcmVsYXRpb25hbHM6Ci0gICAgICAvLyAgdGhlIG1vcmUgc3ltbWV0cmljYWwgbm9uLW1lbWJlciBzeW50YXggYWxsb3dzIGVudW0KLSAgICAgIC8vICBjb252ZXJzaW9ucyB3b3JrIGZvciBib3RoIHJocyBhbmQgbGhzLgotICAgICAgaW5saW5lIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oIGNvbnN0IGVycm9yX2NvbmRpdGlvbiAmIGxocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvcl9jb25kaXRpb24gJiByaHMgKSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGxocy5tX2NhdCA9PSByaHMubV9jYXQgJiYgbGhzLm1fdmFsID09IHJocy5tX3ZhbDsKLSAgICAgIH0KLQotICAgICAgaW5saW5lIGZyaWVuZCBib29sIG9wZXJhdG9yPCggY29uc3QgZXJyb3JfY29uZGl0aW9uICYgbGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JfY29uZGl0aW9uICYgcmhzICkgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUCi0gICAgICAgIC8vICB0aGUgbW9yZSBzeW1tZXRyaWNhbCBub24tbWVtYmVyIHN5bnRheCBhbGxvd3MgZW51bQotICAgICAgICAvLyAgY29udmVyc2lvbnMgd29yayBmb3IgYm90aCByaHMgYW5kIGxocy4KLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGxocy5tX2NhdCA8IHJocy5tX2NhdAotICAgICAgICAgIHx8IChsaHMubV9jYXQgPT0gcmhzLm1fY2F0ICYmIGxocy5tX3ZhbCA8IHJocy5tX3ZhbCk7Ci0gICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgbV92YWw7Ci0gICAgICBjb25zdCBlcnJvcl9jYXRlZ29yeSAqICBtX2NhdDsKLQotICAgIH07Ci0KLSAgICAvLyAgY2xhc3MgZXJyb3JfY29kZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICAvLyAgV2Ugd2FudCBlcnJvcl9jb2RlIHRvIGJlIGEgdmFsdWUgdHlwZSB0aGF0IGNhbiBiZSBjb3BpZWQgd2l0aG91dCBzbGljaW5nCi0gICAgLy8gIGFuZCB3aXRob3V0IHJlcXVpcmluZyBoZWFwIGFsbG9jYXRpb24sIGJ1dCB3ZSBhbHNvIHdhbnQgaXQgdG8gaGF2ZQotICAgIC8vICBwb2x5bW9ycGhpYyBiZWhhdmlvciBiYXNlZCBvbiB0aGUgZXJyb3IgY2F0ZWdvcnkuIFRoaXMgaXMgYWNoaWV2ZWQgYnkKLSAgICAvLyAgYWJzdHJhY3QgYmFzZSBjbGFzcyBlcnJvcl9jYXRlZ29yeSBzdXBwbHlpbmcgdGhlIHBvbHltb3JwaGljIGJlaGF2aW9yLAotICAgIC8vICBhbmQgZXJyb3JfY29kZSBjb250YWluaW5nIGEgcG9pbnRlciB0byBhbiBvYmplY3Qgb2YgYSB0eXBlIGRlcml2ZWQKLSAgICAvLyAgZnJvbSBlcnJvcl9jYXRlZ29yeS4KLSAgICBjbGFzcyBlcnJvcl9jb2RlCi0gICAgewotICAgIHB1YmxpYzoKLQotICAgICAgLy8gY29uc3RydWN0b3JzOgotICAgICAgZXJyb3JfY29kZSgpIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVCA6IG1fdmFsKDApLCBtX2NhdCgmc3lzdGVtX2NhdGVnb3J5KCkpIHt9Ci0gICAgICBlcnJvcl9jb2RlKCBpbnQgdmFsLCBjb25zdCBlcnJvcl9jYXRlZ29yeSAmIGNhdCApIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVCA6IG1fdmFsKHZhbCksIG1fY2F0KCZjYXQpIHt9Ci0KLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBFcnJvckNvZGVFbnVtPgotICAgICAgICBlcnJvcl9jb2RlKEVycm9yQ29kZUVudW0gZSwKLSAgICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6ZW5hYmxlX2lmPGlzX2Vycm9yX2NvZGVfZW51bTxFcnJvckNvZGVFbnVtPiA+Ojp0eXBlKiA9IDApIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVAotICAgICAgewotICAgICAgICAqdGhpcyA9IG1ha2VfZXJyb3JfY29kZShlKTsKLSAgICAgIH0KLQotICAgICAgLy8gbW9kaWZpZXJzOgotICAgICAgdm9pZCBhc3NpZ24oIGludCB2YWwsIGNvbnN0IGVycm9yX2NhdGVnb3J5ICYgY2F0ICkgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUCi0gICAgICB7Ci0gICAgICAgIG1fdmFsID0gdmFsOwotICAgICAgICBtX2NhdCA9ICZjYXQ7Ci0gICAgICB9Ci0KLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVycm9yQ29kZUVudW0+Ci0gICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjplbmFibGVfaWY8aXNfZXJyb3JfY29kZV9lbnVtPEVycm9yQ29kZUVudW0+LCBlcnJvcl9jb2RlPjo6dHlwZSAmCi0gICAgICAgICAgb3BlcmF0b3I9KCBFcnJvckNvZGVFbnVtIHZhbCApIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVAotICAgICAgewotICAgICAgICAqdGhpcyA9IG1ha2VfZXJyb3JfY29kZSh2YWwpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICB9Ci0KLSAgICAgIHZvaWQgY2xlYXIoKSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQKLSAgICAgIHsKLSAgICAgICAgbV92YWwgPSAwOwotICAgICAgICBtX2NhdCA9ICZzeXN0ZW1fY2F0ZWdvcnkoKTsKLSAgICAgIH0KLQotICAgICAgLy8gb2JzZXJ2ZXJzOgotICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgdmFsdWUoKSBjb25zdCAgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUICAgeyByZXR1cm4gbV92YWw7IH0KLSAgICAgIGNvbnN0IGVycm9yX2NhdGVnb3J5ICYgIGNhdGVnb3J5KCkgY29uc3QgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUIHsgcmV0dXJuICptX2NhdDsgfQotICAgICAgZXJyb3JfY29uZGl0aW9uICAgICAgICAgZGVmYXVsdF9lcnJvcl9jb25kaXRpb24oKSBjb25zdCBORE5CT09TVF9TWVNURU1fTk9FWENFUFQgIHsgcmV0dXJuIG1fY2F0LT5kZWZhdWx0X2Vycm9yX2NvbmRpdGlvbih2YWx1ZSgpKTsgfQotICAgICAgc3RkOjpzdHJpbmcgICAgICAgICAgICAgbWVzc2FnZSgpIGNvbnN0ICB7IHJldHVybiBtX2NhdC0+bWVzc2FnZSh2YWx1ZSgpKTsgfQotCi0gICAgICB0eXBlZGVmIHZvaWQgKCp1bnNwZWNpZmllZF9ib29sX3R5cGUpKCk7Ci0gICAgICBzdGF0aWMgdm9pZCB1bnNwZWNpZmllZF9ib29sX3RydWUoKSB7fQotCi0gICAgICBvcGVyYXRvciB1bnNwZWNpZmllZF9ib29sX3R5cGUoKSBjb25zdCAgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUIC8vIHRydWUgaWYgZXJyb3IKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdmFsID09IDAgPyAwIDogdW5zcGVjaWZpZWRfYm9vbF90cnVlOwotICAgICAgfQotCi0gICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0ICBORE5CT09TVF9TWVNURU1fTk9FWENFUFQgLy8gdHJ1ZSBpZiBubyBlcnJvcgotICAgICAgewotICAgICAgICByZXR1cm4gbV92YWwgPT0gMDsKLSAgICAgIH0KLQotICAgICAgLy8gcmVsYXRpb25hbHM6Ci0gICAgICBpbmxpbmUgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PSggY29uc3QgZXJyb3JfY29kZSAmIGxocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvcl9jb2RlICYgcmhzICkgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUCi0gICAgICAgIC8vICB0aGUgbW9yZSBzeW1tZXRyaWNhbCBub24tbWVtYmVyIHN5bnRheCBhbGxvd3MgZW51bQotICAgICAgICAvLyAgY29udmVyc2lvbnMgd29yayBmb3IgYm90aCByaHMgYW5kIGxocy4KLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGxocy5tX2NhdCA9PSByaHMubV9jYXQgJiYgbGhzLm1fdmFsID09IHJocy5tX3ZhbDsKLSAgICAgIH0KLQotICAgICAgaW5saW5lIGZyaWVuZCBib29sIG9wZXJhdG9yPCggY29uc3QgZXJyb3JfY29kZSAmIGxocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yX2NvZGUgJiByaHMgKSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQKLSAgICAgICAgLy8gIHRoZSBtb3JlIHN5bW1ldHJpY2FsIG5vbi1tZW1iZXIgc3ludGF4IGFsbG93cyBlbnVtCi0gICAgICAgIC8vICBjb252ZXJzaW9ucyB3b3JrIGZvciBib3RoIHJocyBhbmQgbGhzLgotICAgICAgewotICAgICAgICByZXR1cm4gbGhzLm1fY2F0IDwgcmhzLm1fY2F0Ci0gICAgICAgICAgfHwgKGxocy5tX2NhdCA9PSByaHMubV9jYXQgJiYgbGhzLm1fdmFsIDwgcmhzLm1fdmFsKTsKLSAgICAgIH0KLQotICAgIHByaXZhdGU6Ci0gICAgICBpbnQgICAgICAgICAgICAgICAgICAgICBtX3ZhbDsKLSAgICAgIGNvbnN0IGVycm9yX2NhdGVnb3J5ICogIG1fY2F0OwotCi0gICAgfTsKLQotICAgIC8vICBwcmVkZWZpbmVkIGVycm9yX2NvZGUgb2JqZWN0IHVzZWQgYXMgInRocm93IG9uIGVycm9yIiB0YWcKLSMgaWZuZGVmIE5ETkJPT1NUX1NZU1RFTV9OT19ERVBSRUNBVEVECi0gICAgTkROQk9PU1RfU1lTVEVNX0RFQ0wgZXh0ZXJuIGVycm9yX2NvZGUgdGhyb3dzOwotIyBlbmRpZgotCi0gICAgLy8gIE1vdmluZyBmcm9tIGEgInRocm93cyIgb2JqZWN0IHRvIGEgInRocm93cyIgZnVuY3Rpb24gd2l0aG91dCBicmVha2luZwotICAgIC8vICBleGlzdGluZyBjb2RlIGlzIGEgYml0IG9mIGEgcHJvYmxlbS4gVGhlIHdvcmthcm91bmQgaXMgdG8gcGxhY2UgdGhlCi0gICAgLy8gICJ0aHJvd3MiIGZ1bmN0aW9uIGluIG5hbWVzcGFjZSBuZG5ib29zdCByYXRoZXIgdGhhbiBuYW1lc3BhY2UgbmRuYm9vc3Q6OnN5c3RlbS4KLQotICB9ICAvLyBuYW1lc3BhY2Ugc3lzdGVtCi0KLSAgbmFtZXNwYWNlIGRldGFpbCB7IGlubGluZSBzeXN0ZW06OmVycm9yX2NvZGUgKiB0aHJvd3MoKSB7IHJldHVybiAwOyB9IH0KLSAgICAvLyAgTWlzdXNlIG9mIHRoZSBlcnJvcl9jb2RlIG9iamVjdCBpcyB0dXJuZWQgaW50byBhIG5vaXN5IGZhaWx1cmUgYnkKLSAgICAvLyAgcG9pc29uaW5nIHRoZSByZWZlcmVuY2UuIFRoaXMgcGFydGljdWxhciBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0Ci0gICAgLy8gIHByb2R1Y2Ugd2FybmluZ3Mgb3IgZXJyb3JzIGZyb20gcG9wdWxhciBjb21waWxlcnMsIGlzIHZlcnkgZWZmaWNpZW50Ci0gICAgLy8gIChhcyBkZXRlcm1pbmVkIGJ5IGluc3BlY3RpbmcgZ2VuZXJhdGVkIGNvZGUpLCBhbmQgZG9lcyBub3Qgc3VmZmVyCi0gICAgLy8gIGZyb20gb3JkZXIgb2YgaW5pdGlhbGl6YXRpb24gcHJvYmxlbXMuIEluIHByYWN0aWNlLCBpdCBhbHNvIHNlZW1zCi0gICAgLy8gIGNhdXNlIHVzZXIgZnVuY3Rpb24gZXJyb3IgaGFuZGxpbmcgaW1wbGVtZW50YXRpb24gZXJyb3JzIHRvIGJlIGRldGVjdGVkCi0gICAgLy8gIHZlcnkgZWFybHkgaW4gdGhlIGRldmVsb3BtZW50IGN5Y2xlLgotCi0gIGlubGluZSBzeXN0ZW06OmVycm9yX2NvZGUgJiB0aHJvd3MoKQotICAgIHsgcmV0dXJuICpkZXRhaWw6OnRocm93cygpOyB9Ci0KLSAgbmFtZXNwYWNlIHN5c3RlbQotICB7Ci0gICAgLy8gIG5vbi1tZW1iZXIgZnVuY3Rpb25zICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPSggY29uc3QgZXJyb3JfY29kZSAmIGxocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvcl9jb2RlICYgcmhzICkgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUCi0gICAgewotICAgICAgcmV0dXJuICEobGhzID09IHJocyk7Ci0gICAgfQotCi0gICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPSggY29uc3QgZXJyb3JfY29uZGl0aW9uICYgbGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yX2NvbmRpdGlvbiAmIHJocyApIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVAotICAgIHsKLSAgICAgIHJldHVybiAhKGxocyA9PSByaHMpOwotICAgIH0KLQotICAgIGlubGluZSBib29sIG9wZXJhdG9yPT0oIGNvbnN0IGVycm9yX2NvZGUgJiBjb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yX2NvbmRpdGlvbiAmIGNvbmRpdGlvbiApIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVAotICAgIHsKLSAgICAgIHJldHVybiBjb2RlLmNhdGVnb3J5KCkuZXF1aXZhbGVudCggY29kZS52YWx1ZSgpLCBjb25kaXRpb24gKQotICAgICAgICB8fCBjb25kaXRpb24uY2F0ZWdvcnkoKS5lcXVpdmFsZW50KCBjb2RlLCBjb25kaXRpb24udmFsdWUoKSApOwotICAgIH0KLQotICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oIGNvbnN0IGVycm9yX2NvZGUgJiBsaHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JfY29uZGl0aW9uICYgcmhzICkgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUCi0gICAgewotICAgICAgcmV0dXJuICEobGhzID09IHJocyk7Ci0gICAgfQotCi0gICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PSggY29uc3QgZXJyb3JfY29uZGl0aW9uICYgY29uZGl0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yX2NvZGUgJiBjb2RlICkgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUCi0gICAgewotICAgICAgcmV0dXJuIGNvbmRpdGlvbi5jYXRlZ29yeSgpLmVxdWl2YWxlbnQoIGNvZGUsIGNvbmRpdGlvbi52YWx1ZSgpICkKLSAgICAgICAgfHwgY29kZS5jYXRlZ29yeSgpLmVxdWl2YWxlbnQoIGNvZGUudmFsdWUoKSwgY29uZGl0aW9uICk7Ci0gICAgfQotCi0gICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPSggY29uc3QgZXJyb3JfY29uZGl0aW9uICYgbGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yX2NvZGUgJiByaHMgKSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQKLSAgICB7Ci0gICAgICByZXR1cm4gIShsaHMgPT0gcmhzKTsKLSAgICB9Ci0KLSAgICAvLyBUT0RPOiBib3RoIG9mIHRoZXNlIG1heSBtb3ZlIGVsc2V3aGVyZSwgYnV0IHRoZSBMV0cgaGFzbid0IHNwb2tlbiB5ZXQuCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLSAgICBpbmxpbmUgc3RkOjpiYXNpY19vc3RyZWFtPGNoYXJULHRyYWl0cz4mCi0gICAgICBvcGVyYXRvcjw8IChzdGQ6OmJhc2ljX29zdHJlYW08Y2hhclQsdHJhaXRzPiYgb3MsIGVycm9yX2NvZGUgZWMpCi0gICAgewotICAgICAgb3MgPDwgZWMuY2F0ZWdvcnkoKS5uYW1lKCkgPDwgJzonIDw8IGVjLnZhbHVlKCk7Ci0gICAgICByZXR1cm4gb3M7Ci0gICAgfQotCi0gICAgaW5saW5lIHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoIGNvbnN0IGVycm9yX2NvZGUgJiBlYyApCi0gICAgewotICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c2l6ZV90PihlYy52YWx1ZSgpKQotICAgICAgICArIHJlaW50ZXJwcmV0X2Nhc3Q8c3RkOjpzaXplX3Q+KCZlYy5jYXRlZ29yeSgpKTsKLSAgICB9Ci0KLSAgICAvLyAgbWFrZV8qIGZ1bmN0aW9ucyBmb3IgZXJyYzo6ZXJyY190ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICBuYW1lc3BhY2UgZXJyYwotICAgIHsKLSAgICAgIC8vICBleHBsaWNpdCBjb252ZXJzaW9uOgotICAgICAgaW5saW5lIGVycm9yX2NvZGUgbWFrZV9lcnJvcl9jb2RlKCBlcnJjX3QgZSApIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVAotICAgICAgICB7IHJldHVybiBlcnJvcl9jb2RlKCBlLCBnZW5lcmljX2NhdGVnb3J5KCkgKTsgfQotCi0gICAgICAvLyAgaW1wbGljaXQgY29udmVyc2lvbjoKLSAgICAgIGlubGluZSBlcnJvcl9jb25kaXRpb24gbWFrZV9lcnJvcl9jb25kaXRpb24oIGVycmNfdCBlICkgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUCi0gICAgICAgIHsgcmV0dXJuIGVycm9yX2NvbmRpdGlvbiggZSwgZ2VuZXJpY19jYXRlZ29yeSgpICk7IH0KLSAgICB9Ci0KLSAgICAvLyAgZXJyb3JfY2F0ZWdvcnkgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICBlcnJvcl9jb25kaXRpb24gZXJyb3JfY2F0ZWdvcnk6OmRlZmF1bHRfZXJyb3JfY29uZGl0aW9uKCBpbnQgZXYgKSBjb25zdCBORE5CT09TVF9TWVNURU1fTk9FWENFUFQKLSAgICB7Ci0gICAgICByZXR1cm4gZXJyb3JfY29uZGl0aW9uKCBldiwgKnRoaXMgKTsKLSAgICB9Ci0KLSAgICBib29sIGVycm9yX2NhdGVnb3J5OjplcXVpdmFsZW50KCBpbnQgY29kZSwKLSAgICAgIGNvbnN0IGVycm9yX2NvbmRpdGlvbiAmIGNvbmRpdGlvbiApIGNvbnN0IE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVAotICAgIHsKLSAgICAgIHJldHVybiBkZWZhdWx0X2Vycm9yX2NvbmRpdGlvbiggY29kZSApID09IGNvbmRpdGlvbjsKLSAgICB9Ci0KLSAgICBib29sIGVycm9yX2NhdGVnb3J5OjplcXVpdmFsZW50KCBjb25zdCBlcnJvcl9jb2RlICYgY29kZSwKLSAgICAgIGludCBjb25kaXRpb24gKSBjb25zdCBORE5CT09TVF9TWVNURU1fTk9FWENFUFQKLSAgICB7Ci0gICAgICByZXR1cm4gKnRoaXMgPT0gY29kZS5jYXRlZ29yeSgpICYmIGNvZGUudmFsdWUoKSA9PSBjb25kaXRpb247Ci0gICAgfQotCi0gIH0gLy8gbmFtZXNwYWNlIHN5c3RlbQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9hYmlfc3VmZml4LmhwcD4gLy8gcG9wcyBhYmlfcHJlZml4LmhwcCBwcmFnbWFzCi0KLSMgaWZkZWYgTkROQk9PU1RfRVJST1JfQ09ERV9IRUFERVJfT05MWQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0Ly4uL2xpYnMvc3lzdGVtL3NyYy9lcnJvcl9jb2RlLmNwcD4KLSMgZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX0VSUk9SX0NPREVfSFBQCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zeXN0ZW0vc3lzdGVtX2Vycm9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc3lzdGVtL3N5c3RlbV9lcnJvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmYTczMmQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zeXN0ZW0vc3lzdGVtX2Vycm9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLS8vICBCb29zdCBzeXN0ZW1fZXJyb3IuaHBwICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBDb3B5cmlnaHQgQmVtYW4gRGF3ZXMgMjAwNgotCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1NZU1RFTV9FUlJPUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfU1lTVEVNX0VSUk9SX0hQUAotCi0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KLSNpbmNsdWRlIDxjYXNzZXJ0PgotI2luY2x1ZGUgPG5kbmJvb3N0L3N5c3RlbS9lcnJvcl9jb2RlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gIG5hbWVzcGFjZSBzeXN0ZW0KLSAgewotICAgIC8vICBjbGFzcyBzeXN0ZW1fZXJyb3IgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICBjbGFzcyBORE5CT09TVF9TWU1CT0xfVklTSUJMRSBzeXN0ZW1fZXJyb3IgOiBwdWJsaWMgc3RkOjpydW50aW1lX2Vycm9yCi0gICAgLy8gTkROQk9PU1RfU1lNQk9MX1ZJU0lCTEUgaXMgbmVlZGVkIGJ5IEdDQyB0byBlbnN1cmUgc3lzdGVtX2Vycm9yIHRocm93biBmcm9tIGEgc2hhcmVkCi0gICAgLy8gbGlicmFyeSBjYW4gYmUgY2F1Z2h0LiBTZWUgc3ZuLmJvb3N0Lm9yZy90cmFjL2Jvb3N0L3RpY2tldC8zNjk3Ci0gICAgewotICAgIHB1YmxpYzoKLSAgICAgIHN5c3RlbV9lcnJvciggZXJyb3JfY29kZSBlYyApCi0gICAgICAgICAgOiBzdGQ6OnJ1bnRpbWVfZXJyb3IoIiIpLCBtX2Vycm9yX2NvZGUoZWMpIHt9Ci0KLSAgICAgIHN5c3RlbV9lcnJvciggZXJyb3JfY29kZSBlYywgY29uc3Qgc3RkOjpzdHJpbmcgJiB3aGF0X2FyZyApCi0gICAgICAgICAgOiBzdGQ6OnJ1bnRpbWVfZXJyb3Iod2hhdF9hcmcpLCBtX2Vycm9yX2NvZGUoZWMpIHt9Ci0KLSAgICAgIHN5c3RlbV9lcnJvciggZXJyb3JfY29kZSBlYywgY29uc3QgY2hhciogd2hhdF9hcmcgKQotICAgICAgICAgIDogc3RkOjpydW50aW1lX2Vycm9yKHdoYXRfYXJnKSwgbV9lcnJvcl9jb2RlKGVjKSB7fQotCi0gICAgICBzeXN0ZW1fZXJyb3IoIGludCBldiwgY29uc3QgZXJyb3JfY2F0ZWdvcnkgJiBlY2F0ICkKLSAgICAgICAgICA6IHN0ZDo6cnVudGltZV9lcnJvcigiIiksIG1fZXJyb3JfY29kZShldixlY2F0KSB7fQotCi0gICAgICBzeXN0ZW1fZXJyb3IoIGludCBldiwgY29uc3QgZXJyb3JfY2F0ZWdvcnkgJiBlY2F0LAotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmIHdoYXRfYXJnICkKLSAgICAgICAgICA6IHN0ZDo6cnVudGltZV9lcnJvcih3aGF0X2FyZyksIG1fZXJyb3JfY29kZShldixlY2F0KSB7fQotCi0gICAgICBzeXN0ZW1fZXJyb3IoIGludCBldiwgY29uc3QgZXJyb3JfY2F0ZWdvcnkgJiBlY2F0LAotICAgICAgICBjb25zdCBjaGFyICogd2hhdF9hcmcgKQotICAgICAgICAgIDogc3RkOjpydW50aW1lX2Vycm9yKHdoYXRfYXJnKSwgbV9lcnJvcl9jb2RlKGV2LGVjYXQpIHt9Ci0KLSAgICAgIHZpcnR1YWwgfnN5c3RlbV9lcnJvcigpIHRocm93KCkge30KLQotICAgICAgY29uc3QgZXJyb3JfY29kZSAmICBjb2RlKCkgY29uc3QgdGhyb3coKSB7IHJldHVybiBtX2Vycm9yX2NvZGU7IH0KLSAgICAgIGNvbnN0IGNoYXIgKiAgICAgICAgd2hhdCgpIGNvbnN0IHRocm93KCk7Ci0KLSAgICBwcml2YXRlOgotICAgICAgZXJyb3JfY29kZSAgICAgICAgICAgbV9lcnJvcl9jb2RlOwotICAgICAgbXV0YWJsZSBzdGQ6OnN0cmluZyAgbV93aGF0OwotICAgIH07Ci0KLSAgICAvLyAgaW1wbGVtZW50YXRpb24gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICBpbmxpbmUgY29uc3QgY2hhciAqIHN5c3RlbV9lcnJvcjo6d2hhdCgpIGNvbnN0IHRocm93KCkKLSAgICAvLyBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbW9yZS9lcnJvcl9oYW5kbGluZy5odG1sIGZvciBsYXp5IGJ1aWxkIHJhdGlvbmFsZQotICAgIHsKLSAgICAgIGlmICggbV93aGF0LmVtcHR5KCkgKQotICAgICAgewotI2lmbmRlZiBORE5CT09TVF9OT19FWENFUFRJT05TCi0gICAgICAgIHRyeQotI2VuZGlmCi0gICAgICAgIHsKLSAgICAgICAgICBtX3doYXQgPSB0aGlzLT5zdGQ6OnJ1bnRpbWVfZXJyb3I6OndoYXQoKTsKLSAgICAgICAgICBpZiAoICFtX3doYXQuZW1wdHkoKSApIG1fd2hhdCArPSAiOiAiOwotICAgICAgICAgIG1fd2hhdCArPSBtX2Vycm9yX2NvZGUubWVzc2FnZSgpOwotICAgICAgICB9Ci0jaWZuZGVmIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLSAgICAgICAgY2F0Y2ggKC4uLikgeyByZXR1cm4gc3RkOjpydW50aW1lX2Vycm9yOjp3aGF0KCk7IH0KLSNlbmRpZgotICAgICAgfQotICAgICAgcmV0dXJuIG1fd2hhdC5jX3N0cigpOwotICAgIH0KLQotICB9IC8vIG5hbWVzcGFjZSBzeXN0ZW0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9TWVNURU1fRVJST1JfSFBQCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2RlYnVnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9kZWJ1Zy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1MzY5NjEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2RlYnVnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA2LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGRlZmluZXMgcG9ydGFibGUgZGVidWcgaW50ZXJmYWNlcwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9ERUJVR19BUElfSFBQXzExMjAwNkdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX0RFQlVHX0FQSV9IUFBfMTEyMDA2R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvY2FsbGJhY2suaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9iYXNpY19jc3RyaW5nLmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8c3RyaW5nPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGVidWcgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogIGNoZWNrIGlmIHByb2dyYW0gaXMgcnVubmluZyB1bmRlciBkZWJ1Z2dlciAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWJvb2wgTkROQk9PU1RfVEVTVF9ERUNMIHVuZGVyX2RlYnVnZ2VyKCk7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICBjYXVzZSBwcm9ncmFtIHRvIGJyZWFrIGV4ZWN1dGlvbiAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgIGluIGRlYnVnZ2VyIGF0IGNhbGwgcG9pbnQgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXZvaWQgTkROQk9PU1RfVEVTVF9ERUNMIGRlYnVnZ2VyX2JyZWFrKCk7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgZ3VpIGRlYnVnZ2VyIHNldHVwICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotc3RydWN0IGRiZ19zdGFydHVwX2luZm8gewotICAgIGxvbmcgICAgICAgICAgICAgICAgICAgIHBpZDsKLSAgICBib29sICAgICAgICAgICAgICAgICAgICBicmVha19vcl9jb250aW51ZTsKLSAgICB1bml0X3Rlc3Q6OmNvbnN0X3N0cmluZyBiaW5hcnlfcGF0aDsKLSAgICB1bml0X3Rlc3Q6OmNvbnN0X3N0cmluZyBkaXNwbGF5OwotICAgIHVuaXRfdGVzdDo6Y29uc3Rfc3RyaW5nIGluaXRfZG9uZV9sb2NrOwotfTsKLQotdHlwZWRlZiB1bml0X3Rlc3Q6OmNhbGxiYWNrMTxkYmdfc3RhcnR1cF9pbmZvIGNvbnN0Jj4gZGJnX3N0YXJ0ZXI7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICBkZWJ1Z2dlciBzZXR1cCAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoIE5ETkJPT1NUX01TVkMsIDwxMzAwKQotCi1zdGQ6OnN0cmluZyBORE5CT09TVF9URVNUX0RFQ0wgc2V0X2RlYnVnZ2VyKCB1bml0X3Rlc3Q6OmNvbnN0X3N0cmluZyBkYmdfaWQgKTsKLQotI2Vsc2UgCi0KLXN0ZDo6c3RyaW5nIE5ETkJPT1NUX1RFU1RfREVDTCBzZXRfZGVidWdnZXIoIHVuaXRfdGVzdDo6Y29uc3Rfc3RyaW5nIGRiZ19pZCwgZGJnX3N0YXJ0ZXIgcyA9IGRiZ19zdGFydGVyKCkgKTsKLQotI2VuZGlmCi0KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgIGF0dGFjaCBkZWJ1Z2dlciB0byB0aGUgY3VycmVudCBwcm9jZXNzICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1ib29sIE5ETkJPT1NUX1RFU1RfREVDTCBhdHRhY2hfZGVidWdnZXIoIGJvb2wgYnJlYWtfb3JfY29udGludWUgPSB0cnVlICk7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgIHN3aXRjaCBvbi9vZmYgZGV0ZWN0IG1lbW9yeSBsZWFrcyBmZWF0dXJlICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdm9pZCBORE5CT09TVF9URVNUX0RFQ0wgZGV0ZWN0X21lbW9yeV9sZWFrcyggYm9vbCBvbl9vZmYgKTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgY2F1c2UgcHJvZ3JhbSB0byBicmVhayBleGVjdXRpb24gaW4gICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgZGVidWdnZXIgYXQgc3BlY2lmaWMgYWxsb2NhdGlvbiBwb2ludCAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdm9pZCBORE5CT09TVF9URVNUX0RFQ0wgYnJlYWtfbWVtb3J5X2FsbG9jKCBsb25nIG1lbV9hbGxvY19vcmRlcl9udW0gKTsKLQotfSAvLyBuYW1lc3BhY2UgZGVidWcKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2RlYnVnX2NvbmZpZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZGVidWdfY29uZmlnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjU0ZWZhOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZGVidWdfY29uZmlnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDYtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogdXNlcidzIGNvbmZpZyBmb3IgQm9vc3QuVGVzdCBkZWJ1Z2dpbmcgc3VwcG9ydAotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9ERUJVR19DT05GSUdfSFBQXzExMjAwNkdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX0RFQlVHX0NPTkZJR19IUFBfMTEyMDA2R0VSCi0KLS8vICc7JyBzZXBhcmF0ZWQgbGlzdCBvZiBzdXBwb3J0ZWQgZGVidWdnZXJzCi0vLyAjZGVmaW5lIE5ETkJPT1NUX1RFU1RfREJHX0xJU1QgZ2RiO2RieAotCi0vLyBtYXhpbXVtIHNpemUgb2YgL3Byb2MvcGlkL3N0YXQgZmlsZQotLy8gI2RlZmluZSBORE5CT09TVF9URVNUX1NUQVRfTElORV9NQVgKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZGV0YWlsL2NvbmZpZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZGV0YWlsL2NvbmZpZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4MTY4YjIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2RldGFpbC9jb25maWcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA0ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDEtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA2MzQ0MSAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogYXMgYSBjZW50cmFsIHBsYWNlIGZvciBnbG9iYWwgY29uZmlndXJhdGlvbiBzd2l0Y2hlcwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9DT05GSUdfSFBQXzA3MTg5NEdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX0NPTkZJR19IUFBfMDcxODk0R0VSCi0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gLy8gY29tcGlsZXJzIHdvcmthcm91bmRzCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU3MCkpIHx8IFwKLSAgICBORE5CT09TVF9XT1JLQVJPVU5EKF9fSUJNQ1BQX18sIE5ETkJPT1NUX1RFU1RFRF9BVCg2MDApKSAgICAgfHwgXAotICAgIChkZWZpbmVkIF9fc2dpICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX0NPTVBJTEVSX1ZFUlNJT04sIE5ETkJPT1NUX1RFU1RFRF9BVCg3MzApKSkKLSMgIGRlZmluZSBORE5CT09TVF9URVNUX1NISUZURURfTElORQotI2VuZGlmCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpIHx8IChkZWZpbmVkKF9fQk9STEFORENfXykgJiYgIWRlZmluZWQoTkROQk9PU1RfRElTQUJMRV9XSU4zMikpCi0jICBkZWZpbmUgTkROQk9PU1RfVEVTVF9DQUxMX0RFQ0wgX19jZGVjbAotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9URVNUX0NBTExfREVDTCAvKiovCi0jZW5kaWYKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9MT0NBTEUpICYmICAgICAgICAgICAgXAotICAgICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMxMCkgICYmICAgXAotICAgICFkZWZpbmVkKF9fTVdFUktTX18pIAotIyAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfVVNFX1NURF9MT0NBTEUgMQotI2VuZGlmCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPD0gMHg1NzApICAgICAgICAgICAgfHwgXAotICAgIE5ETkJPT1NUX1dPUktBUk9VTkQoIF9fQ09NT19fLCA8PSAweDQzMyApICAgICAgICAgICAgICB8fCBcCi0gICAgTkROQk9PU1RfV09SS0FST1VORCggX19JTlRFTF9DT01QSUxFUiwgPD0gODAwICkgICAgICAgIHx8IFwKLSAgICBkZWZpbmVkKF9fc2dpKSAmJiBfQ09NUElMRVJfVkVSU0lPTiA8PSA3MzAgICAgICAgICAgfHwgXAotICAgIE5ETkJPT1NUX1dPUktBUk9VTkQoX19JQk1DUFBfXywgTkROQk9PU1RfVEVTVEVEX0FUKDYwMCkpICB8fCBcCi0gICAgZGVmaW5lZChfX0RFQ0NYWCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IFwKLSAgICBkZWZpbmVkKF9fRE1DX18pCi0jICBkZWZpbmUgTkROQk9PU1RfVEVTVF9OT19QUk9URUNURURfVVNJTkcKLSNlbmRpZgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgfHwgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA9PSAxNDAwKQotI2RlZmluZSBORE5CT09TVF9URVNUX1BST1RFQ1RFRF9WSVJUVUFMIHZpcnR1YWwKLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfUFJPVEVDVEVEX1ZJUlRVQUwKLSNlbmRpZgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NjQpKSAmJiBcCi0gICAgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPDEzMTApICYmIFwKLSAgICAhTkROQk9PU1RfV09SS0FST1VORChfX1NVTlBST19DQywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTMwKSkKLSMgIGRlZmluZSBORE5CT09TVF9URVNUX1NVUFBPUlRfSU5URVJBQ1RJT05fVEVTVElORyAxCi0jZW5kaWYKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfQUxMX0RZTl9MSU5LKSAmJiAhZGVmaW5lZChORE5CT09TVF9URVNUX0RZTl9MSU5LKQotIyAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfRFlOX0xJTksKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9URVNUX0lOQ0xVREVEKQotIyAgdW5kZWYgTkROQk9PU1RfVEVTVF9EWU5fTElOSwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1RFU1RfRFlOX0xJTkspCi0jICBkZWZpbmUgTkROQk9PU1RfVEVTVF9BTFRFUk5BVElWRV9JTklUX0FQSQotCi0jICBpZmRlZiBORE5CT09TVF9URVNUX1NPVVJDRQotIyAgICBkZWZpbmUgTkROQk9PU1RfVEVTVF9ERUNMIE5ETkJPT1NUX1NZTUJPTF9FWFBPUlQKLSMgIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfREVDTCBORE5CT09TVF9TWU1CT0xfSU1QT1JUCi0jICBlbmRpZiAgLy8gTkROQk9PU1RfVEVTVF9TT1VSQ0UKLSNlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfVEVTVF9ERUNMCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RFU1RfTUFJTikgJiYgZGVmaW5lZChORE5CT09TVF9BVVRPX1RFU1RfTUFJTikKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9NQUlOIE5ETkJPT1NUX0FVVE9fVEVTVF9NQUlOCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RFU1RfTUFJTikgJiYgZGVmaW5lZChORE5CT09TVF9URVNUX01PRFVMRSkKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9NQUlOIE5ETkJPT1NUX1RFU1RfTU9EVUxFCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfQ09ORklHX0hQUF8wNzE4OTRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzYxOGU5MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA0LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGVuYWJsZSBwcmV2aW9zbHkgc3VwcHJlc3NlZCB3YXJuaW5ncwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jIHByYWdtYSB3YXJuaW5nKGRlZmF1bHQ6IDQ1MTEpIC8vIGNvcHkgY29uc3RydWN0b3IgY2FuJ3Qgbm90IGJlIGdlbmVyYXRlZAotIyBwcmFnbWEgd2FybmluZyhkZWZhdWx0OiA0NTEyKSAvLyBhc3NpZ25tZW50IG9wZXJhdG9yIGNhbid0IG5vdCBiZSBnZW5lcmF0ZWQKLSMgcHJhZ21hIHdhcm5pbmcoZGVmYXVsdDogNDEwMCkgLy8gdW5yZWZlcmVuY2VkIGZvcm1hbCBwYXJhbWV0ZXIgCi0jIHByYWdtYSB3YXJuaW5nKGRlZmF1bHQ6IDQ5OTYpIC8vIDxzeW1ib2w+IHdhcyBkZWNsYXJlZCBkZXByZWNhdGVkIAotIyBwcmFnbWEgd2FybmluZyhkZWZhdWx0OiA0MzU1KSAvLyAndGhpcycgOiB1c2VkIGluIGJhc2UgbWVtYmVyIGluaXRpYWxpemVyIGxpc3QKLSMgcHJhZ21hIHdhcm5pbmcoZGVmYXVsdDogNDcwNikgLy8gYXNzaWdubWVudCB3aXRoaW4gY29uZGl0aW9uYWwgZXhwcmVzc2lvbgotIyBwcmFnbWEgd2FybmluZyhkZWZhdWx0OiA0MjUxKSAvLyBjbGFzcyAnQTxUPicgbmVlZHMgdG8gaGF2ZSBkbGwtaW50ZXJmYWNlIHRvIGJlIHVzZWQgYnkgY2xpZW50cyBvZiBjbGFzcyAnQicKLSMgcHJhZ21hIHdhcm5pbmcoZGVmYXVsdDogNDEyNykgLy8gY29uZGl0aW9uYWwgZXhwcmVzc2lvbiBpcyBjb25zdGFudAotIyBwcmFnbWEgd2FybmluZyhkZWZhdWx0OiA0MjkwKSAvLyBDKysgZXhjZXB0aW9uIHNwZWNpZmljYXRpb24gaWdub3JlZCBleGNlcHQgdG8gLi4uCi0jIHByYWdtYSB3YXJuaW5nKGRlZmF1bHQ6IDQxODApIC8vIHF1YWxpZmllciBhcHBsaWVkIHRvIGZ1bmN0aW9uIHR5cGUgaGFzIG5vIG1lYW5pbmc7IGlnbm9yZWQKLSMgcHJhZ21hIHdhcm5pbmcoZGVmYXVsdDogNDI3NSkgLy8gbm9uIGRsbC1pbnRlcmZhY2UgY2xhc3MgLi4uIHVzZWQgYXMgYmFzZSBmb3IgZGxsLWludGVyZmFjZSBjbGFzcyAuLi4KLSMgcHJhZ21hIHdhcm5pbmcoZGVmYXVsdDogNDI2NykgLy8gJ3ZhcicgOiBjb252ZXJzaW9uIGZyb20gJ3NpemVfdCcgdG8gJ3R5cGUnLCBwb3NzaWJsZSBsb3NzIG9mIGRhdGEKLSMgcHJhZ21hIHdhcm5pbmcoZGVmYXVsdDogNDUxMSkgLy8gJ2NsYXNzJyA6IGNvcHkgY29uc3RydWN0b3IgY291bGQgbm90IGJlIGdlbmVyYXRlZAotIyBwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9kZXRhaWwvZndkX2RlY2wuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2RldGFpbC9md2RfZGVjbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiMDI5ZmUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2RldGFpbC9md2RfZGVjbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGNvbnRhaW5zIGZvcndhcmQgZWNsYXJhdGlvbnMgZm9yIEJvb3N0LlRlc3QgZGF0YSB0eXBlcwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9GV0RfREVDTF9IUFBfMDExNjA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfRldEX0RFQ0xfSFBQXzAxMTYwNUdFUgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1jbGFzcyAgZXhlY3V0aW9uX21vbml0b3I7Ci1jbGFzcyAgZXhlY3V0aW9uX2V4Y2VwdGlvbjsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLWNsYXNzICB0ZXN0X3VuaXQ7Ci1jbGFzcyAgdGVzdF9jYXNlOwotY2xhc3MgIHRlc3Rfc3VpdGU7Ci1jbGFzcyAgbWFzdGVyX3Rlc3Rfc3VpdGVfdDsKLQotY2xhc3MgIHRlc3RfdHJlZV92aXNpdG9yOwotY2xhc3MgIHRlc3Rfb2JzZXJ2ZXI7Ci0KLS8vIHNpbmdsZXRvbnMKLWNsYXNzICB1bml0X3Rlc3RfbW9uaXRvcl90OwotY2xhc3MgIHVuaXRfdGVzdF9sb2dfdDsKLQotY2xhc3MgIHVuaXRfdGVzdF9sb2dfZm9ybWF0dGVyOwotc3RydWN0IGxvZ19lbnRyeV9kYXRhOwotc3RydWN0IGxvZ19jaGVja3BvaW50X2RhdGE7Ci0KLWNsYXNzIGxhenlfb3N0cmVhbTsKLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX0ZXRF9ERUNMX0hQUF8wMTE2MDVHRVIKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2RldGFpbC9nbG9iYWxfdHlwZWRlZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZGV0YWlsL2dsb2JhbF90eXBlZGVmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjA3OTQwZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZGV0YWlsL2dsb2JhbF90eXBlZGVmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDEtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogc29tZSB0cml2aWFsIGdsb2JhbCB0eXBlZGVmcwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9HTE9CQUxfVFlQRURFRl9IUFBfMDIxMDA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfR0xPQkFMX1RZUEVERUZfSFBQXzAyMTAwNUdFUgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2Jhc2ljX2NzdHJpbmcuaHBwPgotI2RlZmluZSBORE5CT09TVF9URVNUX0woIHMgKSAgICAgICAgIG5kbmJvb3N0Ojp1bml0X3Rlc3Q6OmNvbnN0X3N0cmluZyggcywgc2l6ZW9mKCBzICkgLSAxICkKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9TVFJJTkdJWkUoIHMgKSBORE5CT09TVF9URVNUX0woIE5ETkJPT1NUX1NUUklOR0laRSggcyApICkKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9FTVBUWV9TVFJJTkcgICBORE5CT09TVF9URVNUX0woICIiICkKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyAgIGNvdW50ZXJfdDsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotZW51bSByZXBvcnRfbGV2ZWwgIHsgSU5WX1JFUE9SVF9MRVZFTCwgQ09ORklSTUFUSU9OX1JFUE9SVCwgU0hPUlRfUkVQT1JULCBERVRBSUxFRF9SRVBPUlQsIE5PX1JFUE9SVCB9OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1lbnVtIG91dHB1dF9mb3JtYXQgeyBJTlZfT0YsIENMRiAvKiBjb21waWxlciBsb2cgZm9ybWF0ICovLCBYTUwgLyogWE1MICovIH07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWVudW0gdGVzdF91bml0X3R5cGUgeyB0dXRfY2FzZSA9IDB4MDEsIHR1dF9zdWl0ZSA9IDB4MTAsIHR1dF9hbnkgPSAweDExIH07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyAgIHRlc3RfdW5pdF9pZDsKLQotY29uc3QgdGVzdF91bml0X2lkIElOVl9URVNUX1VOSVRfSUQgID0gMHhGRkZGRkZGRjsKLWNvbnN0IHRlc3RfdW5pdF9pZCBNQVhfVEVTVF9DQVNFX0lEICA9IDB4RkZGRkZGRkU7Ci1jb25zdCB0ZXN0X3VuaXRfaWQgTUlOX1RFU1RfQ0FTRV9JRCAgPSAweDAwMDEwMDAwOwotY29uc3QgdGVzdF91bml0X2lkIE1BWF9URVNUX1NVSVRFX0lEID0gMHgwMDAwRkYwMDsKLWNvbnN0IHRlc3RfdW5pdF9pZCBNSU5fVEVTVF9TVUlURV9JRCA9IDB4MDAwMDAwMDE7Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSB1dF9kZXRhaWwgewotCi1pbmxpbmUgdGVzdF91bml0X3R5cGUKLXRlc3RfaWRfMl91bml0X3R5cGUoIHRlc3RfdW5pdF9pZCBpZCApCi17Ci0gICAgcmV0dXJuIChpZCAmIDB4RkZGRjAwMDApICE9IDAgPyB0dXRfY2FzZSA6IHR1dF9zdWl0ZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gaGVscGVyIHRlbXBsYXRlcyB0byBwcmV2ZW50IE9EUiB2aW9sYXRpb25zIAotdGVtcGxhdGU8Y2xhc3MgVD4gCi1zdHJ1Y3Qgc3RhdGljX2NvbnN0YW50IHsgCi0gICAgc3RhdGljIFQgdmFsdWU7IAotfTsgCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IAotVCBzdGF0aWNfY29uc3RhbnQ8VD46OnZhbHVlOyAKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8gCi0KLX0gLy8gbmFtZXNwYWNlIHV0X2RldGFpbAotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX0dMT0JBTF9UWVBFREVGX0hQUF8wMjEwMDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9kZXRhaWwvbG9nX2xldmVsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9kZXRhaWwvbG9nX2xldmVsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTQ5ZGIwYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZGV0YWlsL2xvZ19sZXZlbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IHNoYXJlZCBkZWZpbml0aW9uIGZvciB1bml0IHRlc3QgbG9nIGxldmVscwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9MT0dfTEVWRUxfSFBQXzAxMTYwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX0xPR19MRVZFTF9IUFBfMDExNjA1R0VSCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgIGxvZyBsZXZlbHMgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0vLyAgZWFjaCBsb2cgbGV2ZWwgaW5jbHVkZXMgYWxsIHN1YnNlcXVlbnQgaGlnaGVyIGxvZ2luZyBsZXZlbHMKLWVudW0gICAgICAgICAgICBsb2dfbGV2ZWwgewotICAgIGludmFsaWRfbG9nX2xldmVsICAgICAgICA9IC0xLAotICAgIGxvZ19zdWNjZXNzZnVsX3Rlc3RzICAgICA9IDAsCi0gICAgbG9nX3Rlc3RfdW5pdHMgICAgICAgICAgID0gMSwKLSAgICBsb2dfbWVzc2FnZXMgICAgICAgICAgICAgPSAyLAotICAgIGxvZ193YXJuaW5ncyAgICAgICAgICAgICA9IDMsCi0gICAgbG9nX2FsbF9lcnJvcnMgICAgICAgICAgID0gNCwgLy8gcmVwb3J0ZWQgYnkgdW5pdCB0ZXN0IG1hY3JvcwotICAgIGxvZ19jcHBfZXhjZXB0aW9uX2Vycm9ycyA9IDUsIC8vIHVuY2F1Z2h0IEMrKyBleGNlcHRpb25zCi0gICAgbG9nX3N5c3RlbV9lcnJvcnMgICAgICAgID0gNiwgLy8gaW5jbHVkaW5nIHRpbWVvdXRzLCBzaWduYWxzLCB0cmFwcwotICAgIGxvZ19mYXRhbF9lcnJvcnMgICAgICAgICA9IDcsIC8vIGluY2x1ZGluZyB1bml0IHRlc3QgbWFjcm9zIG9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmF0YWwgc3lzdGVtIGVycm9ycwotICAgIGxvZ19ub3RoaW5nICAgICAgICAgICAgICA9IDgKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfTE9HX0xFVkVMX0hQUF8wMTE2MDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiOTNkYjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA0LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IHN1cHByZXNzIHNvbWUgd2FybmluZ3MgCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDUxMSkgLy8gY29weSBjb25zdHJ1Y3RvciBjYW4ndCBub3QgYmUgZ2VuZXJhdGVkCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ1MTIpIC8vIGFzc2lnbm1lbnQgb3BlcmF0b3IgY2FuJ3Qgbm90IGJlIGdlbmVyYXRlZAotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAwKSAvLyB1bnJlZmVyZW5jZWQgZm9ybWFsIHBhcmFtZXRlciAKLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDk5NikgLy8gPHN5bWJvbD4gd2FzIGRlY2xhcmVkIGRlcHJlY2F0ZWQgCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQzNTUpIC8vICd0aGlzJyA6IHVzZWQgaW4gYmFzZSBtZW1iZXIgaW5pdGlhbGl6ZXIgbGlzdAotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NzA2KSAvLyBhc3NpZ25tZW50IHdpdGhpbiBjb25kaXRpb25hbCBleHByZXNzaW9uCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQyNTEpIC8vIGNsYXNzICdBPFQ+JyBuZWVkcyB0byBoYXZlIGRsbC1pbnRlcmZhY2UgdG8gYmUgdXNlZCBieSBjbGllbnRzIG9mIGNsYXNzICdCJwotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTI3KSAvLyBjb25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNvbnN0YW50Ci0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQyOTApIC8vIEMrKyBleGNlcHRpb24gc3BlY2lmaWNhdGlvbiBpZ25vcmVkIGV4Y2VwdCB0byAuLi4KLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDE4MCkgLy8gcXVhbGlmaWVyIGFwcGxpZWQgdG8gZnVuY3Rpb24gdHlwZSBoYXMgbm8gbWVhbmluZzsgaWdub3JlZAotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0Mjc1KSAvLyBub24gZGxsLWludGVyZmFjZSBjbGFzcyAuLi4gdXNlZCBhcyBiYXNlIGZvciBkbGwtaW50ZXJmYWNlIGNsYXNzIC4uLgotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MjY3KSAvLyAndmFyJyA6IGNvbnZlcnNpb24gZnJvbSAnc2l6ZV90JyB0byAndHlwZScsIHBvc3NpYmxlIGxvc3Mgb2YgZGF0YQotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NTExKSAvLyAnY2xhc3MnIDogY29weSBjb25zdHJ1Y3RvciBjb3VsZCBub3QgYmUgZ2VuZXJhdGVkCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2RldGFpbC91bml0X3Rlc3RfcGFyYW1ldGVycy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZGV0YWlsL3VuaXRfdGVzdF9wYXJhbWV0ZXJzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2E3YTI0Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZGV0YWlsL3VuaXRfdGVzdF9wYXJhbWV0ZXJzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDEtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1Nzk5MiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogc3RvcmFnZSBmb3IgdW5pdCB0ZXN0IGZyYW1ld29yayBwYXJhbWV0ZXJzIGluZm9ybWF0aW9uCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9QQVJBTUVURVJTX0hQUF8wNzE4OTRHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfUEFSQU1FVEVSU19IUFBfMDcxODk0R0VSCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9nbG9iYWxfdHlwZWRlZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvbG9nX2xldmVsLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8aW9zZndkPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICBydW50aW1lX2NvbmZpZyAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgcnVudGltZV9jb25maWcgewotCi1ORE5CT09TVF9URVNUX0RFQ0wgdm9pZCAgICAgICAgICAgICAgICAgICAgIGluaXQoIGludCYgYXJnYywgY2hhcioqIGFyZ3YgKTsKLQotTkROQk9PU1RfVEVTVF9ERUNMIHVuaXRfdGVzdDo6bG9nX2xldmVsICAgICBsb2dfbGV2ZWwoKTsKLU5ETkJPT1NUX1RFU1RfREVDTCBib29sICAgICAgICAgICAgICAgICAgICAgbm9fcmVzdWx0X2NvZGUoKTsKLU5ETkJPT1NUX1RFU1RfREVDTCB1bml0X3Rlc3Q6OnJlcG9ydF9sZXZlbCAgcmVwb3J0X2xldmVsKCk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgY29uc3Rfc3RyaW5nICAgICAgICAgICAgIHRlc3RfdG9fcnVuKCk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgY29uc3Rfc3RyaW5nICAgICAgICAgICAgIGJyZWFrX2V4ZWNfcGF0aCgpOwotTkROQk9PU1RfVEVTVF9ERUNMIGJvb2wgICAgICAgICAgICAgICAgICAgICBzYXZlX3BhdHRlcm4oKTsKLU5ETkJPT1NUX1RFU1RfREVDTCBib29sICAgICAgICAgICAgICAgICAgICAgc2hvd19idWlsZF9pbmZvKCk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgYm9vbCAgICAgICAgICAgICAgICAgICAgIHNob3dfcHJvZ3Jlc3MoKTsKLU5ETkJPT1NUX1RFU1RfREVDTCBib29sICAgICAgICAgICAgICAgICAgICAgY2F0Y2hfc3lzX2Vycm9ycygpOwotTkROQk9PU1RfVEVTVF9ERUNMIGJvb2wgICAgICAgICAgICAgICAgICAgICBhdXRvX3N0YXJ0X2RiZygpOwotTkROQk9PU1RfVEVTVF9ERUNMIGJvb2wgICAgICAgICAgICAgICAgICAgICB1c2VfYWx0X3N0YWNrKCk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgYm9vbCAgICAgICAgICAgICAgICAgICAgIGRldGVjdF9mcF9leGNlcHRpb25zKCk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgb3V0cHV0X2Zvcm1hdCAgICAgICAgICAgIHJlcG9ydF9mb3JtYXQoKTsKLU5ETkJPT1NUX1RFU1RfREVDTCBvdXRwdXRfZm9ybWF0ICAgICAgICAgICAgbG9nX2Zvcm1hdCgpOwotTkROQk9PU1RfVEVTVF9ERUNMIHN0ZDo6b3N0cmVhbSogICAgICAgICAgICByZXBvcnRfc2luaygpOwotTkROQk9PU1RfVEVTVF9ERUNMIHN0ZDo6b3N0cmVhbSogICAgICAgICAgICBsb2dfc2luaygpOwotTkROQk9PU1RfVEVTVF9ERUNMIGxvbmcgICAgICAgICAgICAgICAgICAgICBkZXRlY3RfbWVtb3J5X2xlYWtzKCk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgaW50ICAgICAgICAgICAgICAgICAgICAgIHJhbmRvbV9zZWVkKCk7Ci0KLX0gLy8gbmFtZXNwYWNlIHJ1bnRpbWVfY29uZmlnCi0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX1BBUkFNRVRFUlNfSFBQXzA3MTg5NEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2RldGFpbC93b3JrYXJvdW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1OTVmZmIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2RldGFpbC93b3JrYXJvdW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogY29udGFpbnMgbWljcy4gd29ya2Fyb3VuZHMgCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX1dPUktBUk9VTkRfSFBQXzAyMTAwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1dPUktBUk9VTkRfSFBQXzAyMTAwNUdFUgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+IC8vIGNvbXBpbGVycyB3b3JrYXJvdW5kcyBhbmQgc3RkOjpwdHJkaWZmX3QKLQotLy8gU1RMCi0jaW5jbHVkZSA8aXRlcmF0b3I+ICAgICAvLyBmb3Igc3RkOjpkaXN0YW5jZQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotbmFtZXNwYWNlIHV0X2RldGFpbCB7Ci0KLSNpZmRlZiBORE5CT09TVF9OT19TVERfRElTVEFOQ0UKLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RkOjpwdHJkaWZmX3QgZGlzdGFuY2UoIFQgY29uc3QmIHhfLCBUIGNvbnN0JiB5XyApCi17IAotICAgIHN0ZDo6cHRyZGlmZl90IHJlcyA9IDA7Ci0KLSAgICBzdGQ6OmRpc3RhbmNlKCB4XywgeV8sIHJlcyApOwotCi0gICAgcmV0dXJuIHJlczsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2Vsc2UKLXVzaW5nIHN0ZDo6ZGlzdGFuY2U7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFQ+IGlubGluZSB2b2lkIGlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhjb25zdCBUJikge30KLQotfSAvLyBuYW1lc3BhY2UgdXRfZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi1uYW1lc3BhY2UgdW5pdF90ZXN0X2ZyYW1ld29yayA9IHVuaXRfdGVzdDsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1dPUktBUk9VTkRfSFBQXzAyMTAwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2V4ZWN1dGlvbl9tb25pdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9leGVjdXRpb25fbW9uaXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExYWJjOGIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2V4ZWN1dGlvbl9tb25pdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI2MyArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDAxLTIwMDguCi0vLyAgKEMpIENvcHlyaWdodCBCZW1hbiBEYXdlcyAyMDAxLgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU3OTkyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBkZWZpbmVzIGFic3RyYWN0IG1vbml0b3IgaW50ZXJmYWNlcyBhbmQgaW1wbGVtZW50cyBleGVjdXRpb24gZXhjZXB0aW9uCi0vLyAgVGhlIG9yaWdpbmFsIEJvb3N0IFRlc3QgTGlicmFyeSBpbmNsdWRlZCBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgZnVuY3Rpb24KLS8vICBuYW1lZCBjYXRjaF9leGNlcHRpb25zKCkgd2hpY2ggY2F1Z2h0IG90aGVyd2lzZSB1bmNhdWdodCBDKysgZXhjZXB0aW9ucy4KLS8vICBJdCB3YXMgZGVyaXZlZCBmcm9tIGFuIGV4aXN0aW5nIHRlc3QgZnJhbWV3b3JrIGJ5IEJlbWFuIERhd2VzLiAgVGhlCi0vLyAgaW50ZW50IHdhcyB0byBleHBhbmQgbGF0ZXIgdG8gY2F0Y2ggb3RoZXIgZGV0ZWN0YWJsZSBidXQgcGxhdGZvcm0gZGVwZW5kZW50Ci0vLyAgZXJyb3IgZXZlbnRzIGxpa2UgVW5peCBzaWduYWxzIG9yIFdpbmRvd3Mgc3RydWN0dXJlZCBDIGV4Y2VwdGlvbnMuCi0vLwotLy8gIFJlcXVlc3RzIGZyb20gZWFybHkgYWRvcHRlcnMgb2YgdGhlIEJvb3N0IFRlc3QgTGlicmFyeSBpbmNsdWRlZAotLy8gIGNvbmZpZ3VyYWJsZSBsZXZlbHMgb2YgZXJyb3IgbWVzc2FnZSBkZXRhaWwsIGVsaW1pbmF0aW9uIG9mIHRlbXBsYXRlcywKLS8vICBzZXBhcmF0aW9uIG9mIGVycm9yIHJlcG9ydGluZywgYW5kIG1ha2luZyB0aGUgY2F0Y2hfZXhjZXB0aW9ucygpIGZhY2lsaXRpZXMKLS8vICBhdmFpbGFibGUgYXMgYSBwdWJsaWMgaW50ZXJmYWNlLiAgU3VwcG9ydCBmb3IgdW5pdCB0ZXN0aW5nIGFsc28gc3RyZXRjaGVkCi0vLyAgdGhlIGZ1bmN0aW9uIGJhc2VkIGRlc2lnbi4gIEltcGxlbWVudGF0aW9uIHdpdGhpbiB0aGUgaGVhZGVyIGJlY2FtZSBsZXNzCi0vLyAgYXR0cmFjdGl2ZSBkdWUgdG8gdGhlIG5lZWQgdG8gaW5jbHVkZSBtYW55IGh1Z2Ugc3lzdGVtIGRlcGVuZGVudCBoZWFkZXJzLAotLy8gIGFsdGhvdWdoIHN0aWxsIHByZWZlcmFibGUgaW4gY2VydGFpbiBjYXNlcy4KLS8vCi0vLyAgQWxsIHRob3NlIGlzc3VlcyBoYXZlIGJlZW4gYWRkcmVzc2VkIGJ5IGludHJvZHVjaW5nIHRoZSBjbGFzcy1iYXNlZAotLy8gIGRlc2lnbiBwcmVzZW50ZWQgaGVyZS4KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfRVhFQ1VUSU9OX01PTklUT1JfSFBQXzA3MTg5NEdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX0VYRUNVVElPTl9NT05JVE9SX0hQUF8wNzE4OTRHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2dsb2JhbF90eXBlZGVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9md2RfZGVjbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9jYWxsYmFjay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9jbGFzc19wcm9wZXJ0aWVzLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9zY29wZWRfcHRyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zY29wZWRfYXJyYXkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NzdGRsaWIuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgIGRldGFpbDo6dHJhbnNsYXRlX2V4Y2VwdGlvbl9iYXNlICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBORE5CT09TVF9URVNUX0RFQ0wgdHJhbnNsYXRlX2V4Y2VwdGlvbl9iYXNlIHsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIGV4cGxpY2l0ICAgIHRyYW5zbGF0ZV9leGNlcHRpb25fYmFzZSggbmRuYm9vc3Q6OnNjb3BlZF9wdHI8dHJhbnNsYXRlX2V4Y2VwdGlvbl9iYXNlPiYgbmV4dCApCi0gICAgewotICAgICAgICBuZXh0LnN3YXAoIG1fbmV4dCApOwotICAgIH0KLQotICAgIC8vIERlc3RydWN0b3IKLSAgICB2aXJ0dWFsICAgICB+dHJhbnNsYXRlX2V4Y2VwdGlvbl9iYXNlKCkge30KLQotICAgIHZpcnR1YWwgaW50IG9wZXJhdG9yKCkoIHVuaXRfdGVzdDo6Y2FsbGJhY2swPGludD4gY29uc3QmIEYgKSA9IDA7Ci0KLXByb3RlY3RlZDoKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBuZG5ib29zdDo6c2NvcGVkX3B0cjx0cmFuc2xhdGVfZXhjZXB0aW9uX2Jhc2U+IG1fbmV4dDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgIGV4ZWN1dGlvbl9leGNlcHRpb24gICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0gICAgCi0vLyAgZGVzaWduIHJhdGlvbmFsZTogZmVhciBvZiBiZWluZyBvdXQgKG9yIG5lYXJseSBvdXQpIG9mIG1lbW9yeS4KLSAgICAKLWNsYXNzIE5ETkJPT1NUX1RFU1RfREVDTCBleGVjdXRpb25fZXhjZXB0aW9uIHsKLSAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bml0X3Rlc3Q6OmNvbnN0X3N0cmluZyBjb25zdF9zdHJpbmc7Ci1wdWJsaWM6Ci0gICAgZW51bSBlcnJvcl9jb2RlIHsKLSAgICAgICAgLy8gIFRoZXNlIHZhbHVlcyBhcmUgc29tZXRpbWVzIHVzZWQgYXMgcHJvZ3JhbSByZXR1cm4gY29kZXMuCi0gICAgICAgIC8vICBUaGUgcGFydGljdWxhciB2YWx1ZXMgaGF2ZSBiZWVuIGNob3NlbiB0byBhdm9pZCBjb25mbGljdHMgd2l0aAotICAgICAgICAvLyAgY29tbW9ubHkgdXNlZCBwcm9ncmFtIHJldHVybiBjb2RlczogdmFsdWVzIDwgMTAwIGFyZSBvZnRlbiB1c2VyCi0gICAgICAgIC8vICBhc3NpZ25lZCwgdmFsdWVzID4gMjU1IGFyZSBzb21ldGltZXMgdXNlZCB0byByZXBvcnQgc3lzdGVtIGVycm9ycy4KLSAgICAgICAgLy8gIEdhcHMgaW4gdmFsdWVzIGFsbG93IGZvciBvcmRlcmx5IGV4cGFuc2lvbi4KLSAgICAgICAgCi0gICAgICAgIG5vX2Vycm9yICAgICAgICAgICAgICAgPSAwLCAgIC8vIGZvciBjb21wbGV0ZW5lc3Mgb25seTsgbmV2ZXIgcmV0dXJuZWQKLSAgICAgICAgdXNlcl9lcnJvciAgICAgICAgICAgICA9IDIwMCwgLy8gdXNlciByZXBvcnRlZCBub24tZmF0YWwgZXJyb3IKLSAgICAgICAgY3BwX2V4Y2VwdGlvbl9lcnJvciAgICA9IDIwNSwgLy8gc2VlIG5vdGUgKDEpIGJlbG93Ci0gICAgICAgIHN5c3RlbV9lcnJvciAgICAgICAgICAgPSAyMTAsIC8vIHNlZSBub3RlICgyKSBiZWxvdwotICAgICAgICB0aW1lb3V0X2Vycm9yICAgICAgICAgID0gMjE1LCAvLyBvbmx5IGRldGVjdGFibGUgb24gY2VydGFpbiBwbGF0Zm9ybXMKLSAgICAgICAgdXNlcl9mYXRhbF9lcnJvciAgICAgICA9IDIyMCwgLy8gdXNlciByZXBvcnRlZCBmYXRhbCBlcnJvcgotICAgICAgICBzeXN0ZW1fZmF0YWxfZXJyb3IgICAgID0gMjI1ICAvLyBzZWUgbm90ZSAoMikgYmVsb3cKLSAgICAgICAgCi0gICAgICAgIC8vICBOb3RlIDE6IE9ubHkgdW5jYXVnaHQgQysrIGV4Y2VwdGlvbnMgYXJlIHRyZWF0ZWQgYXMgZXJyb3JzLgotICAgICAgICAvLyAgSWYgdGhlIGFwcGxpY2F0aW9uIGNhdGNoZXMgYSBDKysgZXhjZXB0aW9uLCBpdCB3aWxsIG5ldmVyIHJlYWNoCi0gICAgICAgIC8vICB0aGUgZXhlY3V0aW9uX21vbml0b3IuCi0gICAgICAgIAotICAgICAgICAvLyAgTm90ZSAyOiBUaGVzZSBlcnJvcnMgaW5jbHVkZSBVbml4IHNpZ25hbHMgYW5kIFdpbmRvd3Mgc3RydWN0dXJlZAotICAgICAgICAvLyAgZXhjZXB0aW9ucy4gIFRoZXkgYXJlIG9mdGVuIGluaXRpYXRlZCBieSBoYXJkd2FyZSB0cmFwcy4KLSAgICAgICAgLy8KLSAgICAgICAgLy8gIFRoZSBpbXBsZW1lbnRhdGlvbiBkZWNpZGVzIHdoYXQgaXMgYSBmYXRhbF9zeXN0ZW1fZXhjZXB0aW9uIGFuZCB3aGF0IGlzCi0gICAgICAgIC8vICBqdXN0IGEgc3lzdGVtX2V4Y2VwdGlvbi4gIEZhdGFsIGVycm9ycyBhcmUgc28gbGlrZWx5IHRvIGhhdmUgY29ycnVwdGVkCi0gICAgICAgIC8vICBtYWNoaW5lIHN0YXRlIChsaWtlIGEgc3RhY2sgb3ZlcmZsb3cgb3IgYWRkcmVzc2luZyBleGNlcHRpb24pIHRoYXQgaXQKLSAgICAgICAgLy8gIGlzIHVucmVhc29uYWJsZSB0byBjb250aW51ZSBleGVjdXRpb24uCi0gICAgfTsKLSAgICAKLSAgICBzdHJ1Y3QgTkROQk9PU1RfVEVTVF9ERUNMIGxvY2F0aW9uIHsKLSAgICAgICAgZXhwbGljaXQgICAgbG9jYXRpb24oIGNoYXIgY29uc3QqIGZpbGVfbmFtZSA9IDAsIHNpemVfdCBsaW5lX251bSA9IDAsIGNoYXIgY29uc3QqIGZ1bmMgPSAwICk7Ci0KLSAgICAgICAgY29uc3Rfc3RyaW5nICAgIG1fZmlsZV9uYW1lOwotICAgICAgICBzaXplX3QgICAgICAgICAgbV9saW5lX251bTsKLSAgICAgICAgY29uc3Rfc3RyaW5nICAgIG1fZnVuY3Rpb247Ci0gICAgfTsKLQotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgZXhlY3V0aW9uX2V4Y2VwdGlvbiggZXJyb3JfY29kZSBlY18sIGNvbnN0X3N0cmluZyB3aGF0X21zZ18sIGxvY2F0aW9uIGNvbnN0JiBsb2NhdGlvbl8gKTsgLy8gbWF4IGxlbmd0aCAyNTYgaW5jICdcMCcKLQotICAgIC8vIEFjY2VzcyBtZXRob2RzCi0gICAgZXJyb3JfY29kZSAgICAgIGNvZGUoKSBjb25zdCAgICB7IHJldHVybiBtX2Vycm9yX2NvZGU7IH0KLSAgICBjb25zdF9zdHJpbmcgICAgd2hhdCgpIGNvbnN0ICAgIHsgcmV0dXJuIG1fd2hhdDsgfQotICAgIGxvY2F0aW9uIGNvbnN0JiB3aGVyZSgpIGNvbnN0ICAgeyByZXR1cm4gbV9sb2NhdGlvbjsgfQotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIGVycm9yX2NvZGUgICAgICBtX2Vycm9yX2NvZGU7Ci0gICAgY29uc3Rfc3RyaW5nICAgIG1fd2hhdDsKLSAgICBsb2NhdGlvbiAgICAgICAgbV9sb2NhdGlvbjsKLX07IC8vIGV4ZWN1dGlvbl9leGNlcHRpb24KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgZXhlY3V0aW9uX21vbml0b3IgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBORE5CT09TVF9URVNUX0RFQ0wgZXhlY3V0aW9uX21vbml0b3IgewotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgZXhlY3V0aW9uX21vbml0b3IoKQotICAgIDogcF9jYXRjaF9zeXN0ZW1fZXJyb3JzKCB0cnVlICkKLSAgICAsIHBfYXV0b19zdGFydF9kYmcoIGZhbHNlICkKLSAgICAsIHBfdGltZW91dCggMCApCi0gICAgLCBwX3VzZV9hbHRfc3RhY2soIHRydWUgKQotICAgICwgcF9kZXRlY3RfZnBfZXhjZXB0aW9ucyggZmFsc2UgKQotICAgIHt9Ci0KLSAgICAvLyBQdWJsaWMgcHJvcGVydGllcwotICAgIAotICAgIC8vICBUaGUgcF9jYXRjaF9zeXN0ZW1fZXJyb3JzIHBhcmFtZXRlciBzcGVjaWZpZXMgd2hldGhlciB0aGUgbW9uaXRvciBzaG91bGQgCi0gICAgLy8gIHRyeSB0byBjYXRjaCBzeXN0ZW0gZXJyb3JzL2V4Y2VwdGlvbnMgdGhhdCB3b3VsZCBjYXVzZSBwcm9ncmFtIHRvIGNyYXNoIAotICAgIC8vICBpbiByZWd1bGFyIGNhc2UKLSAgICB1bml0X3Rlc3Q6OnJlYWR3cml0ZV9wcm9wZXJ0eTxib29sPiBwX2NhdGNoX3N5c3RlbV9lcnJvcnM7IAotICAgIC8vICBUaGUgcF9hdXRvX3N0YXJ0X2RiZyBwYXJhbWV0ZXIgc3BlY2lmaWVzIHdoZXRoZXIgdGhlIG1vbml0b3Igc2hvdWxkIAotICAgIC8vICB0cnkgdG8gYXR0YWNoIGRlYnVnZ2VyIGluIGNhc2Ugb2YgY2F1Z2h0IHN5c3RlbSBlcnJvcgotICAgIHVuaXRfdGVzdDo6cmVhZHdyaXRlX3Byb3BlcnR5PGJvb2w+IHBfYXV0b19zdGFydF9kYmc7Ci0gICAgLy8gIFRoZSBwX3RpbWVvdXQgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgc2Vjb25kcyB0aGF0IGVsYXBzZSBiZWZvcmUKLSAgICAvLyAgYSB0aW1lcl9lcnJvciBvY2N1cnMuICBNYXkgYmUgaWdub3JlZCBvbiBzb21lIHBsYXRmb3Jtcy4KLSAgICB1bml0X3Rlc3Q6OnJlYWR3cml0ZV9wcm9wZXJ0eTxpbnQ+ICBwX3RpbWVvdXQ7Ci0gICAgLy8gIFRoZSBwX3VzZV9hbHRfc3RhY2sgcGFyYW1ldGVyIHNwZWNpZmllcyB3aGV0aGVyIHRoZSBtb25pdG9yIHNob3VsZAotICAgIC8vICB1c2UgYWx0ZXJuYXRpdmUgc3RhY2sgZm9yIHRoZSBzaWduYWwgY2F0Y2hpbmcKLSAgICB1bml0X3Rlc3Q6OnJlYWR3cml0ZV9wcm9wZXJ0eTxib29sPiBwX3VzZV9hbHRfc3RhY2s7Ci0gICAgLy8gIFRoZSBwX2RldGVjdF9mcF9leGNlcHRpb25zIHBhcmFtZXRlciBzcGVjaWZpZXMgd2hldGhlciB0aGUgbW9uaXRvciBzaG91bGQKLSAgICAvLyAgdHJ5IHRvIGRldGVjdCBoYXJkd2FyZSBmbG9hdGluZyBwb2ludCBleGNlcHRpb25zCi0gICAgdW5pdF90ZXN0OjpyZWFkd3JpdGVfcHJvcGVydHk8Ym9vbD4gcF9kZXRlY3RfZnBfZXhjZXB0aW9uczsKLQotICAgIGludCAgICAgICAgIGV4ZWN1dGUoIHVuaXRfdGVzdDo6Y2FsbGJhY2swPGludD4gY29uc3QmIEYgKTsgCi0gICAgLy8gIFJldHVybnM6ICBWYWx1ZSByZXR1cm5lZCBieSBmdW5jdGlvbiBjYWxsIEYoKS4KLSAgICAvLwotICAgIC8vICBFZmZlY3RzOiAgQ2FsbHMgZXhlY3V0ZXMgc3VwcGxpZWQgZnVuY3Rpb24gRiBpbnNpZGUgYSB0cnkvY2F0Y2ggYmxvY2sgd2hpY2ggYWxzbyBtYXkKLSAgICAvLyAgaW5jbHVkZSBvdGhlciB1bnNwZWNpZmllZCBwbGF0Zm9ybSBkZXBlbmRlbnQgZXJyb3IgZGV0ZWN0aW9uIGNvZGUuCi0gICAgLy8KLSAgICAvLyAgVGhyb3dzOiBleGVjdXRpb25fZXhjZXB0aW9uIG9uIGFuIHVuY2F1Z2h0IEMrKyBleGNlcHRpb24sCi0gICAgLy8gIGEgaGFyZHdhcmUgb3Igc29mdHdhcmUgc2lnbmFsLCB0cmFwLCBvciBvdGhlciBleGNlcHRpb24uCi0gICAgLy8KLSAgICAvLyAgTm90ZTogZXhlY3V0ZSgpIGRvZXNuJ3QgY29uc2lkZXIgaXQgYW4gZXJyb3IgZm9yIEYgdG8gcmV0dXJuIGEgbm9uLXplcm8gdmFsdWUuCi0gICAgCi0gICAgLy8gcmVnaXN0ZXIgY3VzdG9tICh1c2VyIHN1cHBsaWVkKSBleGNlcHRpb24gdHJhbnNsYXRvcgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEV4Y2VwdGlvbiwgdHlwZW5hbWUgRXhjZXB0aW9uVHJhbnNsYXRvcj4KLSAgICB2b2lkICAgICAgICByZWdpc3Rlcl9leGNlcHRpb25fdHJhbnNsYXRvciggRXhjZXB0aW9uVHJhbnNsYXRvciBjb25zdCYgdHIsIG5kbmJvb3N0Ojp0eXBlPEV4Y2VwdGlvbj4qID0gMCApOwotCi1wcml2YXRlOgotICAgIC8vIGltcGxlbWVudGF0aW9uIGhlbHBlcnMKLSAgICBpbnQgICAgICAgICBjYXRjaF9zaWduYWxzKCB1bml0X3Rlc3Q6OmNhbGxiYWNrMDxpbnQ+IGNvbnN0JiBGICk7Ci0KLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBuZG5ib29zdDo6c2NvcGVkX3B0cjxkZXRhaWw6OnRyYW5zbGF0ZV9leGNlcHRpb25fYmFzZT4gbV9jdXN0b21fdHJhbnNsYXRvcnM7Ci0gICAgbmRuYm9vc3Q6OnNjb3BlZF9hcnJheTxjaGFyPiAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fYWx0X3N0YWNrOwotfTsgLy8gZXhlY3V0aW9uX21vbml0b3IKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgIGRldGFpbDo6dHJhbnNsYXRlX2V4Y2VwdGlvbiAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgRXhjZXB0aW9uLCB0eXBlbmFtZSBFeGNlcHRpb25UcmFuc2xhdG9yPgotY2xhc3MgdHJhbnNsYXRlX2V4Y2VwdGlvbiA6IHB1YmxpYyB0cmFuc2xhdGVfZXhjZXB0aW9uX2Jhc2UKLXsKLSAgICB0eXBlZGVmIG5kbmJvb3N0OjpzY29wZWRfcHRyPHRyYW5zbGF0ZV9leGNlcHRpb25fYmFzZT4gYmFzZV9wdHI7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgICAgdHJhbnNsYXRlX2V4Y2VwdGlvbiggRXhjZXB0aW9uVHJhbnNsYXRvciBjb25zdCYgdHIsIGJhc2VfcHRyJiBuZXh0ICkKLSAgICA6IHRyYW5zbGF0ZV9leGNlcHRpb25fYmFzZSggbmV4dCApLCBtX3RyYW5zbGF0b3IoIHRyICkge30KLQotICAgIGludCBvcGVyYXRvcigpKCB1bml0X3Rlc3Q6OmNhbGxiYWNrMDxpbnQ+IGNvbnN0JiBGICkKLSAgICB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICByZXR1cm4gbV9uZXh0ID8gKCptX25leHQpKCBGICkgOiBGKCk7Ci0gICAgICAgIH0gY2F0Y2goIEV4Y2VwdGlvbiBjb25zdCYgZSApIHsKLSAgICAgICAgICAgIG1fdHJhbnNsYXRvciggZSApOwotICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpleGl0X2V4Y2VwdGlvbl9mYWlsdXJlOwotICAgICAgICB9Ci0gICAgfQotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIEV4Y2VwdGlvblRyYW5zbGF0b3IgbV90cmFuc2xhdG9yOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEV4Y2VwdGlvbiwgdHlwZW5hbWUgRXhjZXB0aW9uVHJhbnNsYXRvcj4KLXZvaWQKLWV4ZWN1dGlvbl9tb25pdG9yOjpyZWdpc3Rlcl9leGNlcHRpb25fdHJhbnNsYXRvciggRXhjZXB0aW9uVHJhbnNsYXRvciBjb25zdCYgdHIsIG5kbmJvb3N0Ojp0eXBlPEV4Y2VwdGlvbj4qICkKLXsKLSAgICBtX2N1c3RvbV90cmFuc2xhdG9ycy5yZXNldCggCi0gICAgICAgIG5ldyBkZXRhaWw6OnRyYW5zbGF0ZV9leGNlcHRpb248RXhjZXB0aW9uLEV4Y2VwdGlvblRyYW5zbGF0b3I+KCB0cixtX2N1c3RvbV90cmFuc2xhdG9ycyApICk7Ci19Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIGV4ZWN1dGlvbl9hYm9ydGVkICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotc3RydWN0IGV4ZWN1dGlvbl9hYm9ydGVkIHt9OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICBzeXN0ZW1fZXJyb3IgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIHN5c3RlbV9lcnJvciB7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBleHBsaWNpdCAgICBzeXN0ZW1fZXJyb3IoIGNoYXIgY29uc3QqIGV4cCApOwotCi0gICAgdW5pdF90ZXN0OjpyZWFkb25seV9wcm9wZXJ0eTxsb25nPiAgICAgICAgICBwX2Vycm5vOyAKLSAgICB1bml0X3Rlc3Q6OnJlYWRvbmx5X3Byb3BlcnR5PGNoYXIgY29uc3QqPiAgIHBfZmFpbGVkX2V4cDsgCi19OwotCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfU1lTX0FTU0VSVCggZXhwICkgaWYoIChleHApICkgOyBlbHNlIHRocm93IDo6bmRuYm9vc3Q6OnN5c3RlbV9lcnJvciggTkROQk9PU1RfU1RSSU5HSVpFKCBleHAgKSApCi0KLX0gIC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZmxvYXRpbmdfcG9pbnRfY29tcGFyaXNvbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZmxvYXRpbmdfcG9pbnRfY29tcGFyaXNvbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhMGE2MGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2Zsb2F0aW5nX3BvaW50X2NvbXBhcmlzb24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjg2ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDEtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1Nzk5MiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZGVmaW5lcyBhbGdvaXJ0aG1zIGZvciBjb21wYXJpbmcgMiBmbG9hdGluZyBwb2ludCB2YWx1ZXMKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfRkxPQVRJTkdfUE9JTlRfQ09NUEFSSVNPTl9IUFBfMDcxODk0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfRkxPQVRJTkdfUE9JTlRfQ09NUEFSSVNPTl9IUFBfMDcxODk0R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9nbG9iYWxfdHlwZWRlZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9jbGFzc19wcm9wZXJ0aWVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3ByZWRpY2F0ZV9yZXN1bHQuaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L2xpbWl0cy5ocHA+ICAvLyBmb3Igc3RkOjpudW1lcmljX2xpbWl0cwotI2luY2x1ZGUgPG5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9jb252ZXJzaW9uX3RyYWl0cy5ocHA+IC8vIGZvciBudW1lcmljOjpjb252ZXJzaW9uX3RyYWl0cwotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdGVzdF90b29scyB7Ci0KLXVzaW5nIHVuaXRfdGVzdDo6cmVhZG9ubHlfcHJvcGVydHk7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgZmxvYXRpbmdfcG9pbnRfY29tcGFyaXNvbl90eXBlICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotZW51bSBmbG9hdGluZ19wb2ludF9jb21wYXJpc29uX3R5cGUgewotICAgIEZQQ19TVFJPTkcsIC8vICJWZXJ5IGNsb3NlIiAgIC0gZXF1YXRpb24gMScgaW4gZG9jcywgdGhlIGRlZmF1bHQKLSAgICBGUENfV0VBSyAgICAvLyAiQ2xvc2UgZW5vdWdoIiAtIGVxdWF0aW9uIDInIGluIGRvY3MuCi0KLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgICAgZGV0YWlscyAgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIHR0X2RldGFpbCB7Ci0KLS8vIEZQVCBpcyBGbG9hdGluZy1Qb2ludCBUeXBlOiBmbG9hdCwgZG91YmxlLCBsb25nIGRvdWJsZSBvciBVc2VyLURlZmluZWQuCi10ZW1wbGF0ZTx0eXBlbmFtZSBGUFQ+Ci1pbmxpbmUgRlBUCi1mcHRfYWJzKCBGUFQgZnB2ICkgCi17Ci0gICAgcmV0dXJuIGZwdiA8IHN0YXRpY19jYXN0PEZQVD4oMCkgPyAtZnB2IDogZnB2OwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGUFQ+Ci1zdHJ1Y3QgZnB0X2xpbWl0cyB7Ci0gICAgc3RhdGljIEZQVCAgICBtaW5fdmFsdWUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8RlBUPjo6aXNfc3BlY2lhbGl6ZWQKLSAgICAgICAgICAgICAgICAgICAgPyAoc3RkOjpudW1lcmljX2xpbWl0czxGUFQ+OjptaW4pKCkKLSAgICAgICAgICAgICAgICAgICAgOiAwOwotICAgIH0KLSAgICBzdGF0aWMgRlBUICAgIG1heF92YWx1ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxGUFQ+Ojppc19zcGVjaWFsaXplZAotICAgICAgICAgICAgICAgICAgICA/IChzdGQ6Om51bWVyaWNfbGltaXRzPEZQVD46Om1heCkoKQotICAgICAgICAgICAgICAgICAgICA6IHN0YXRpY19jYXN0PEZQVD4oMTAwMDAwMCk7IC8vIGZvciB0aGUgb3VyIHB1cnB1c2VzIGl0IGRvZXNuJ3QgcmVhbGx5IG1hdHRlciB3aGF0IHZhbHVlIGlzIHJldHVybmVkIGhlcmUKLSAgICB9Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyBib3RoIGYxIGFuZCBmMiBhcmUgdW5zaWduZWQgaGVyZQotdGVtcGxhdGU8dHlwZW5hbWUgRlBUPgotaW5saW5lIEZQVAotc2FmZV9mcHRfZGl2aXNpb24oIEZQVCBmMSwgRlBUIGYyICkKLXsKLSAgICAvLyBBdm9pZCBvdmVyZmxvdy4KLSAgICBpZiggKGYyIDwgc3RhdGljX2Nhc3Q8RlBUPigxKSkgICYmIChmMSA+IGYyKmZwdF9saW1pdHM8RlBUPjo6bWF4X3ZhbHVlKCkpICkKLSAgICAgICAgcmV0dXJuIGZwdF9saW1pdHM8RlBUPjo6bWF4X3ZhbHVlKCk7Ci0KLSAgICAvLyBBdm9pZCB1bmRlcmZsb3cuCi0gICAgaWYoIChmMSA9PSBzdGF0aWNfY2FzdDxGUFQ+KDApKSB8fAotICAgICAgICAoKGYyID4gc3RhdGljX2Nhc3Q8RlBUPigxKSkgJiYgKGYxIDwgZjIqZnB0X2xpbWl0czxGUFQ+OjptaW5fdmFsdWUoKSkpICkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEZQVD4oMCk7Ci0KLSAgICByZXR1cm4gZjEvZjI7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHR0X2RldGFpbAotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICB0b2xlcmFuY2UgcHJlc2VudGF0aW9uIHR5cGVzICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEZQVD4KLXN0cnVjdCBwZXJjZW50X3RvbGVyYW5jZV90IHsKLSAgICBleHBsaWNpdCAgICBwZXJjZW50X3RvbGVyYW5jZV90KCBGUFQgdiApIDogbV92YWx1ZSggdiApIHt9Ci0KLSAgICBGUFQgbV92YWx1ZTsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIE91dCx0eXBlbmFtZSBGUFQ+Ci1PdXQmIG9wZXJhdG9yPDwoIE91dCYgb3V0LCBwZXJjZW50X3RvbGVyYW5jZV90PEZQVD4gdCApCi17Ci0gICAgcmV0dXJuIG91dCA8PCB0Lm1fdmFsdWU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEZQVD4KLWlubGluZSBwZXJjZW50X3RvbGVyYW5jZV90PEZQVD4KLXBlcmNlbnRfdG9sZXJhbmNlKCBGUFQgdiApCi17Ci0gICAgcmV0dXJuIHBlcmNlbnRfdG9sZXJhbmNlX3Q8RlBUPiggdiApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGUFQ+Ci1zdHJ1Y3QgZnJhY3Rpb25fdG9sZXJhbmNlX3QgewotICAgIGV4cGxpY2l0IGZyYWN0aW9uX3RvbGVyYW5jZV90KCBGUFQgdiApIDogbV92YWx1ZSggdiApIHt9Ci0KLSAgICBGUFQgbV92YWx1ZTsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIE91dCx0eXBlbmFtZSBGUFQ+Ci1PdXQmIG9wZXJhdG9yPDwoIE91dCYgb3V0LCBmcmFjdGlvbl90b2xlcmFuY2VfdDxGUFQ+IHQgKQotewotICAgIHJldHVybiBvdXQgPDwgdC5tX3ZhbHVlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGUFQ+Ci1pbmxpbmUgZnJhY3Rpb25fdG9sZXJhbmNlX3Q8RlBUPgotZnJhY3Rpb25fdG9sZXJhbmNlKCBGUFQgdiApCi17Ci0gICAgcmV0dXJuIGZyYWN0aW9uX3RvbGVyYW5jZV90PEZQVD4oIHYgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgIGNsb3NlX2F0X3RvbGVyYW5jZSAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGUFQ+Ci1jbGFzcyBjbG9zZV9hdF90b2xlcmFuY2UgewotcHVibGljOgotICAgIC8vIFB1YmxpYyB0eXBlZGVmcwotICAgIHR5cGVkZWYgYm9vbCByZXN1bHRfdHlwZTsKLQotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVG9sZXJhbmNlQmFzZVR5cGU+Ci0gICAgZXhwbGljaXQgICAgY2xvc2VfYXRfdG9sZXJhbmNlKCBwZXJjZW50X3RvbGVyYW5jZV90PFRvbGVyYW5jZUJhc2VUeXBlPiAgdG9sZXJhbmNlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0aW5nX3BvaW50X2NvbXBhcmlzb25fdHlwZSAgICAgICAgICBmcGNfdHlwZSA9IEZQQ19TVFJPTkcgKSAKLSAgICA6IHBfZnJhY3Rpb25fdG9sZXJhbmNlKCB0dF9kZXRhaWw6OmZwdF9hYnMoIHN0YXRpY19jYXN0PEZQVD4oMC4wMSkqdG9sZXJhbmNlLm1fdmFsdWUgKSApCi0gICAgLCBwX3N0cm9uZ19vcl93ZWFrKCBmcGNfdHlwZSA9PSAgRlBDX1NUUk9ORyApCi0gICAgLCBtX3JlcG9ydF9tb2RpZmllciggMTAwLiApCi0gICAge30KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUb2xlcmFuY2VCYXNlVHlwZT4KLSAgICBleHBsaWNpdCAgICBjbG9zZV9hdF90b2xlcmFuY2UoIGZyYWN0aW9uX3RvbGVyYW5jZV90PFRvbGVyYW5jZUJhc2VUeXBlPiB0b2xlcmFuY2UsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXRpbmdfcG9pbnRfY29tcGFyaXNvbl90eXBlICAgICAgICAgIGZwY190eXBlID0gRlBDX1NUUk9ORyApIAotICAgIDogcF9mcmFjdGlvbl90b2xlcmFuY2UoIHR0X2RldGFpbDo6ZnB0X2FicyggdG9sZXJhbmNlLm1fdmFsdWUgKSApCi0gICAgLCBwX3N0cm9uZ19vcl93ZWFrKCBmcGNfdHlwZSA9PSAgRlBDX1NUUk9ORyApCi0gICAgLCBtX3JlcG9ydF9tb2RpZmllciggMS4gKQotICAgIHt9Ci0KLSAgICBwcmVkaWNhdGVfcmVzdWx0ICAgICAgICBvcGVyYXRvcigpKCBGUFQgbGVmdCwgRlBUIHJpZ2h0ICkgY29uc3QKLSAgICB7Ci0gICAgICAgIEZQVCBkaWZmID0gdHRfZGV0YWlsOjpmcHRfYWJzKCBsZWZ0IC0gcmlnaHQgKTsKLSAgICAgICAgRlBUIGQxICAgPSB0dF9kZXRhaWw6OnNhZmVfZnB0X2RpdmlzaW9uKCBkaWZmLCB0dF9kZXRhaWw6OmZwdF9hYnMoIHJpZ2h0ICkgKTsKLSAgICAgICAgRlBUIGQyICAgPSB0dF9kZXRhaWw6OnNhZmVfZnB0X2RpdmlzaW9uKCBkaWZmLCB0dF9kZXRhaWw6OmZwdF9hYnMoIGxlZnQgKSApOwotICAgICAgICAKLSAgICAgICAgcHJlZGljYXRlX3Jlc3VsdCByZXMoIHBfc3Ryb25nX29yX3dlYWsgCi0gICAgICAgICAgICA/IChkMSA8PSBwX2ZyYWN0aW9uX3RvbGVyYW5jZS5nZXQoKSAmJiBkMiA8PSBwX2ZyYWN0aW9uX3RvbGVyYW5jZS5nZXQoKSkgCi0gICAgICAgICAgICA6IChkMSA8PSBwX2ZyYWN0aW9uX3RvbGVyYW5jZS5nZXQoKSB8fCBkMiA8PSBwX2ZyYWN0aW9uX3RvbGVyYW5jZS5nZXQoKSkgKTsKLQotICAgICAgICBpZiggIXJlcyApCi0gICAgICAgICAgICByZXMubWVzc2FnZSgpIDw8ICgoIGQxIDw9IHBfZnJhY3Rpb25fdG9sZXJhbmNlLmdldCgpID8gZDIgOiBkMSApICogbV9yZXBvcnRfbW9kaWZpZXIpOwotCi0gICAgICAgIHJldHVybiByZXM7Ci0gICAgfQotCi0gICAgLy8gUHVibGljIHByb3BlcnRpZXMKLSAgICByZWFkb25seV9wcm9wZXJ0eTxGUFQ+ICBwX2ZyYWN0aW9uX3RvbGVyYW5jZTsKLSAgICByZWFkb25seV9wcm9wZXJ0eTxib29sPiBwX3N0cm9uZ19vcl93ZWFrOwotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBGUFQgICAgICAgICAgICAgICAgICAgICBtX3JlcG9ydF9tb2RpZmllcjsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIGNoZWNrX2lzX2Nsb3NlICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotc3RydWN0IE5ETkJPT1NUX1RFU1RfREVDTCBjaGVja19pc19jbG9zZV90IHsKLSAgICAvLyBQdWJsaWMgdHlwZWRlZnMKLSAgICB0eXBlZGVmIGJvb2wgcmVzdWx0X3R5cGU7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGUFQxLCB0eXBlbmFtZSBGUFQyLCB0eXBlbmFtZSBUb2xlcmFuY2VCYXNlVHlwZT4KLSAgICBwcmVkaWNhdGVfcmVzdWx0Ci0gICAgb3BlcmF0b3IoKSggRlBUMSBsZWZ0LCBGUFQyIHJpZ2h0LCBwZXJjZW50X3RvbGVyYW5jZV90PFRvbGVyYW5jZUJhc2VUeXBlPiB0b2xlcmFuY2UsIAotICAgICAgICAgICAgICAgIGZsb2F0aW5nX3BvaW50X2NvbXBhcmlzb25fdHlwZSBmcGNfdHlwZSA9IEZQQ19TVFJPTkcgKSBjb25zdAotICAgIHsKLSAgICAgICAgLy8gZGVkdWNlICJiZXR0ZXIiIHR5cGUgZnJvbSB0eXBlcyBvZiBhcmd1bWVudHMgYmVpbmcgY29tcGFyZWQKLSAgICAgICAgLy8gaWYgb25lIHR5cGUgaXMgZmxvYXRpbmcgYW5kIHRoZSBzZWNvbmQgaW50ZWdyYWwgd2UgdXNlIGZsb2F0aW5nIHR5cGUgYW5kIAotICAgICAgICAvLyB2YWx1ZSBvZiBpbnRlZ3JhbCB0eXBlIGlzIHByb21vdGVkIHRvIHRoZSBmbG9hdGluZy4gVGhlIHNhbWUgZm9yIGZsb2F0IGFuZCBkb3VibGUKLSAgICAgICAgLy8gQnV0IHdlIGRvbid0IHdhbnQgdG8gY29tcGFyZSB0d28gdmFsdWVzIG9mIGludGVncmFsIHR5cGVzIHVzaW5nIHRoaXMgdG9vbC4KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBudW1lcmljOjpjb252ZXJzaW9uX3RyYWl0czxGUFQxLEZQVDI+OjpzdXBlcnR5cGUgRlBUOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCAhaXNfaW50ZWdyYWw8RlBUPjo6dmFsdWUgKTsKLQotICAgICAgICBjbG9zZV9hdF90b2xlcmFuY2U8RlBUPiBwcmVkKCB0b2xlcmFuY2UsIGZwY190eXBlICk7Ci0KLSAgICAgICAgcmV0dXJuIHByZWQoIGxlZnQsIHJpZ2h0ICk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZQVDEsIHR5cGVuYW1lIEZQVDIsIHR5cGVuYW1lIFRvbGVyYW5jZUJhc2VUeXBlPgotICAgIHByZWRpY2F0ZV9yZXN1bHQKLSAgICBvcGVyYXRvcigpKCBGUFQxIGxlZnQsIEZQVDIgcmlnaHQsIGZyYWN0aW9uX3RvbGVyYW5jZV90PFRvbGVyYW5jZUJhc2VUeXBlPiB0b2xlcmFuY2UsIAotICAgICAgICAgICAgICAgIGZsb2F0aW5nX3BvaW50X2NvbXBhcmlzb25fdHlwZSBmcGNfdHlwZSA9IEZQQ19TVFJPTkcgKSBjb25zdAotICAgIHsKLSAgICAgICAgLy8gc2FtZSBhcyBpbiBhIGNvbW1lbnQgYWJvdmUKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBudW1lcmljOjpjb252ZXJzaW9uX3RyYWl0czxGUFQxLEZQVDI+OjpzdXBlcnR5cGUgRlBUOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCAhaXNfaW50ZWdyYWw8RlBUPjo6dmFsdWUgKTsKLQotICAgICAgICBjbG9zZV9hdF90b2xlcmFuY2U8RlBUPiBwcmVkKCB0b2xlcmFuY2UsIGZwY190eXBlICk7Ci0KLSAgICAgICAgcmV0dXJuIHByZWQoIGxlZnQsIHJpZ2h0ICk7Ci0gICAgfQotfTsKLQotbmFtZXNwYWNlIHsKLWNoZWNrX2lzX2Nsb3NlX3QgY29uc3QmIGNoZWNrX2lzX2Nsb3NlID0gdW5pdF90ZXN0Ojp1dF9kZXRhaWw6OnN0YXRpY19jb25zdGFudDxjaGVja19pc19jbG9zZV90Pjo6dmFsdWU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIGNoZWNrX2lzX3NtYWxsICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotc3RydWN0IE5ETkJPT1NUX1RFU1RfREVDTCBjaGVja19pc19zbWFsbF90IHsKLSAgICAvLyBQdWJsaWMgdHlwZWRlZnMKLSAgICB0eXBlZGVmIGJvb2wgcmVzdWx0X3R5cGU7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGUFQ+Ci0gICAgYm9vbAotICAgIG9wZXJhdG9yKCkoIEZQVCBmcHYsIEZQVCB0b2xlcmFuY2UgKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHR0X2RldGFpbDo6ZnB0X2FicyggZnB2ICkgPCB0dF9kZXRhaWw6OmZwdF9hYnMoIHRvbGVyYW5jZSApOwotICAgIH0KLX07Ci0KLW5hbWVzcGFjZSB7Ci1jaGVja19pc19zbWFsbF90IGNvbnN0JiBjaGVja19pc19zbWFsbCA9IHVuaXRfdGVzdDo6dXRfZGV0YWlsOjpzdGF0aWNfY29uc3RhbnQ8Y2hlY2tfaXNfc21hbGxfdD46OnZhbHVlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSB0ZXN0X3Rvb2xzCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfRkxPQVRJTkdfUE9JTlRfQ09NQVBBUklTT05fSFBQXzA3MTg5NEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ZyYW1ld29yay5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZnJhbWV3b3JrLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2YzMTZmOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZnJhbWV3b3JrLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMiArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGRlZmluZXMgZnJhbWV3b3JrIGludGVyZmFjZQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9GUkFNRVdPUktfSFBQXzAyMDgwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX0ZSQU1FV09SS19IUFBfMDIwODA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9nbG9iYWxfdHlwZWRlZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZndkX2RlY2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvdHJpdmlhbF9zaW5nbGV0b24uaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxzdGRleGNlcHQ+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgIGluaXRfdW5pdF90ZXN0X2Z1bmMgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNpZmRlZiBORE5CT09TVF9URVNUX0FMVEVSTkFUSVZFX0lOSVRfQVBJCi10eXBlZGVmIGJvb2wgICAgICAgICgqaW5pdF91bml0X3Rlc3RfZnVuYykoKTsKLSNlbHNlCi10eXBlZGVmIHRlc3Rfc3VpdGUqICgqaW5pdF91bml0X3Rlc3RfZnVuYykoIGludCwgY2hhciogW10gKTsKLSNlbmRpZgotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICAgZnJhbWV3b3JrICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSBmcmFtZXdvcmsgewotCi0vLyBpbml0aWFsaXphdGlvbgotTkROQk9PU1RfVEVTVF9ERUNMIHZvaWQgICAgaW5pdCggaW5pdF91bml0X3Rlc3RfZnVuYyBpbml0X2Z1bmMsIGludCBhcmdjLCBjaGFyKiBhcmd2W10gKTsKLU5ETkJPT1NUX1RFU1RfREVDTCBib29sICAgIGlzX2luaXRpYWxpemVkKCk7Ci0KLS8vIG11dGF0aW9uIGFjY2VzcyBtZXRob2RzCi1ORE5CT09TVF9URVNUX0RFQ0wgdm9pZCAgICByZWdpc3Rlcl90ZXN0X3VuaXQoIHRlc3RfY2FzZSogdGMgKTsKLU5ETkJPT1NUX1RFU1RfREVDTCB2b2lkICAgIHJlZ2lzdGVyX3Rlc3RfdW5pdCggdGVzdF9zdWl0ZSogdHMgKTsKLU5ETkJPT1NUX1RFU1RfREVDTCB2b2lkICAgIGRlcmVnaXN0ZXJfdGVzdF91bml0KCB0ZXN0X3VuaXQqIHR1ICk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgdm9pZCAgICBjbGVhcigpOwotCi1ORE5CT09TVF9URVNUX0RFQ0wgdm9pZCAgICByZWdpc3Rlcl9vYnNlcnZlciggdGVzdF9vYnNlcnZlciYgKTsKLU5ETkJPT1NUX1RFU1RfREVDTCB2b2lkICAgIGRlcmVnaXN0ZXJfb2JzZXJ2ZXIoIHRlc3Rfb2JzZXJ2ZXImICk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgdm9pZCAgICByZXNldF9vYnNlcnZlcnMoKTsKLQotTkROQk9PU1RfVEVTVF9ERUNMIG1hc3Rlcl90ZXN0X3N1aXRlX3QmIG1hc3Rlcl90ZXN0X3N1aXRlKCk7Ci0KLS8vIGNvbnN0YW50IGFjY2VzcyBtZXRob2RzCi1ORE5CT09TVF9URVNUX0RFQ0wgdGVzdF9jYXNlIGNvbnN0JiAgICBjdXJyZW50X3Rlc3RfY2FzZSgpOwotCi1ORE5CT09TVF9URVNUX0RFQ0wgdGVzdF91bml0JiAgZ2V0KCB0ZXN0X3VuaXRfaWQsIHRlc3RfdW5pdF90eXBlICk7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBVbml0VHlwZT4KLVVuaXRUeXBlJiAgICAgICAgICAgICAgIGdldCggdGVzdF91bml0X2lkIGlkICkKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VW5pdFR5cGUmPiggZ2V0KCBpZCwgc3RhdGljX2Nhc3Q8dGVzdF91bml0X3R5cGU+KFVuaXRUeXBlOjp0eXBlKSApICk7Ci19Ci0KLS8vIHRlc3QgaW5pdGlhdGlvbgotTkROQk9PU1RfVEVTVF9ERUNMIHZvaWQgICAgcnVuKCB0ZXN0X3VuaXRfaWQgPSBJTlZfVEVTVF9VTklUX0lELCBib29sIGNvbnRpbnVlX3Rlc3QgPSB0cnVlICk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgdm9pZCAgICBydW4oIHRlc3RfdW5pdCBjb25zdCosIGJvb2wgY29udGludWVfdGVzdCA9IHRydWUgKTsKLQotLy8gcHVibGljIHRlc3QgZXZlbnRzIGRpc3BhdGNoZXJzCi1ORE5CT09TVF9URVNUX0RFQ0wgdm9pZCAgICBhc3NlcnRpb25fcmVzdWx0KCBib29sIHBhc3NlZCApOwotTkROQk9PU1RfVEVTVF9ERUNMIHZvaWQgICAgZXhjZXB0aW9uX2NhdWdodCggZXhlY3V0aW9uX2V4Y2VwdGlvbiBjb25zdCYgKTsKLU5ETkJPT1NUX1RFU1RfREVDTCB2b2lkICAgIHRlc3RfdW5pdF9hYm9ydGVkKCB0ZXN0X3VuaXQgY29uc3QmICk7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICBmcmFtZXdvcmsgZXJyb3JzICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotc3RydWN0IGludGVybmFsX2Vycm9yIDogc3RkOjpydW50aW1lX2Vycm9yIHsKLSAgICBpbnRlcm5hbF9lcnJvciggY29uc3Rfc3RyaW5nIG0gKSA6IHN0ZDo6cnVudGltZV9lcnJvciggc3RkOjpzdHJpbmcoIG0uYmVnaW4oKSwgbS5zaXplKCkgKSApIHt9Ci19OwotCi1zdHJ1Y3Qgc2V0dXBfZXJyb3IgOiBzdGQ6OnJ1bnRpbWVfZXJyb3IgewotICAgIHNldHVwX2Vycm9yKCBjb25zdF9zdHJpbmcgbSApIDogc3RkOjpydW50aW1lX2Vycm9yKCBzdGQ6OnN0cmluZyggbS5iZWdpbigpLCBtLnNpemUoKSApICkge30KLX07Ci0KLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9TRVRVUF9BU1NFUlQoIGNvbmQsIG1zZyApIGlmKCBjb25kICkge30gZWxzZSB0aHJvdyB1bml0X3Rlc3Q6OmZyYW1ld29yazo6c2V0dXBfZXJyb3IoIG1zZyApCi0KLXN0cnVjdCBub3RoaW5nX3RvX3Rlc3Qge307IC8vIG5vdCByZWFsbHkgYW4gZXJyb3IKLQotfSAvLyBuYW1lc3BhY2UgZnJhbWV3b3JrCi0KLX0gLy8gdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9GUkFNRVdPUktfSFBQXzAyMDgwNUdFUgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9jb21waWxlcl9sb2dfZm9ybWF0dGVyLmlwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL2NvbXBpbGVyX2xvZ19mb3JtYXR0ZXIuaXBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZDgzZjYwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL2NvbXBpbGVyX2xvZ19mb3JtYXR0ZXIuaXBwCisrKyAvZGV2L251bGwKQEAgLTEsMjIyICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1Nzk5MiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogaW1wbGVtZW50cyBjb21waWxlciBsaWtlIExvZyBmb3JtYXR0ZXIKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfQ09NUElMRVJfTE9HX0ZPUk1BVFRFUl9JUFBfMDIwMTA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfQ09NUElMRVJfTE9HX0ZPUk1BVFRFUl9JUFBfMDIwMTA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L291dHB1dC9jb21waWxlcl9sb2dfZm9ybWF0dGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9zdWl0ZV9pbXBsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2ZyYW1ld29yay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2lvLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2xhenlfb3N0cmVhbS5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPGlvc3RyZWFtPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotbmFtZXNwYWNlIG91dHB1dCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgIGNvbXBpbGVyX2xvZ19mb3JtYXR0ZXIgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIHsKLQotY29uc3Rfc3RyaW5nCi10ZXN0X3BoYXNlX2lkZW50aWZpZXIoKQotewotICAgIHJldHVybiBmcmFtZXdvcms6OmlzX2luaXRpYWxpemVkKCkgCi0gICAgICAgICAgICA/IGNvbnN0X3N0cmluZyggZnJhbWV3b3JrOjpjdXJyZW50X3Rlc3RfY2FzZSgpLnBfbmFtZS5nZXQoKSApCi0gICAgICAgICAgICA6IE5ETkJPT1NUX1RFU1RfTCggIlRlc3Qgc2V0dXAiICk7Ci19Ci0KLX0gLy8gbG9jYWwgbmFtZXNwYWNlCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLWNvbXBpbGVyX2xvZ19mb3JtYXR0ZXI6OmxvZ19zdGFydCggc3RkOjpvc3RyZWFtJiBvdXRwdXQsIGNvdW50ZXJfdCB0ZXN0X2Nhc2VzX2Ftb3VudCApCi17Ci0gICAgaWYoIHRlc3RfY2FzZXNfYW1vdW50ID4gMCApCi0gICAgICAgIG91dHB1dCAgPDwgIlJ1bm5pbmcgIiA8PCB0ZXN0X2Nhc2VzX2Ftb3VudCA8PCAiIHRlc3QgIgotICAgICAgICAgICAgICAgIDw8ICh0ZXN0X2Nhc2VzX2Ftb3VudCA+IDEgPyAiY2FzZXMiIDogImNhc2UiKSA8PCAiLi4uXG4iOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1jb21waWxlcl9sb2dfZm9ybWF0dGVyOjpsb2dfZmluaXNoKCBzdGQ6Om9zdHJlYW0mIG9zdHIgKQotewotICAgIG9zdHIuZmx1c2goKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotY29tcGlsZXJfbG9nX2Zvcm1hdHRlcjo6bG9nX2J1aWxkX2luZm8oIHN0ZDo6b3N0cmVhbSYgb3V0cHV0ICkKLXsKLSAgICBvdXRwdXQgIDw8ICJQbGF0Zm9ybTogIiA8PCBORE5CT09TVF9QTEFURk9STSAgICAgICAgICAgIDw8ICdcbicKLSAgICAgICAgICAgIDw8ICJDb21waWxlcjogIiA8PCBORE5CT09TVF9DT01QSUxFUiAgICAgICAgICAgIDw8ICdcbicKLSAgICAgICAgICAgIDw8ICJTVEwgICAgIDogIiA8PCBORE5CT09TVF9TVERMSUIgICAgICAgICAgICAgIDw8ICdcbicKLSAgICAgICAgICAgIDw8ICJCb29zdCAgIDogIiA8PCBORE5CT09TVF9WRVJTSU9OLzEwMDAwMCAgICAgIDw8ICIuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IE5ETkJPT1NUX1ZFUlNJT04vMTAwICUgMTAwMCAgPDwgIi4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgTkROQk9PU1RfVkVSU0lPTiAlIDEwMCAgICAgICA8PCBzdGQ6OmVuZGw7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLWNvbXBpbGVyX2xvZ19mb3JtYXR0ZXI6OnRlc3RfdW5pdF9zdGFydCggc3RkOjpvc3RyZWFtJiBvdXRwdXQsIHRlc3RfdW5pdCBjb25zdCYgdHUgKQotewotICAgIG91dHB1dCA8PCAiRW50ZXJpbmcgdGVzdCAiIDw8IHR1LnBfdHlwZV9uYW1lIDw8ICIgXCIiIDw8IHR1LnBfbmFtZSA8PCAiXCIiIDw8IHN0ZDo6ZW5kbDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotY29tcGlsZXJfbG9nX2Zvcm1hdHRlcjo6dGVzdF91bml0X2ZpbmlzaCggc3RkOjpvc3RyZWFtJiBvdXRwdXQsIHRlc3RfdW5pdCBjb25zdCYgdHUsIHVuc2lnbmVkIGxvbmcgZWxhcHNlZCApCi17Ci0gICAgb3V0cHV0IDw8ICJMZWF2aW5nIHRlc3QgIiA8PCB0dS5wX3R5cGVfbmFtZSA8PCAiIFwiIiA8PCB0dS5wX25hbWUgPDwgIlwiIjsKLQotICAgIGlmKCBlbGFwc2VkID4gMCApIHsKLSAgICAgICAgb3V0cHV0IDw8ICI7IHRlc3RpbmcgdGltZTogIjsKLSAgICAgICAgaWYoIGVsYXBzZWQgJSAxMDAwID09IDAgKQotICAgICAgICAgICAgb3V0cHV0IDw8IGVsYXBzZWQvMTAwMCA8PCAibXMiOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBvdXRwdXQgPDwgZWxhcHNlZCA8PCAibWtzIjsKLSAgICB9Ci0KLSAgICBvdXRwdXQgPDwgc3RkOjplbmRsOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1jb21waWxlcl9sb2dfZm9ybWF0dGVyOjp0ZXN0X3VuaXRfc2tpcHBlZCggc3RkOjpvc3RyZWFtJiBvdXRwdXQsIHRlc3RfdW5pdCBjb25zdCYgdHUgKQotewotICAgIG91dHB1dCAgPDwgIlRlc3QgIiA8PCB0dS5wX3R5cGVfbmFtZSA8PCAiIFwiIiA8PCB0dS5wX25hbWUgPDwgIlwiIiA8PCAiaXMgc2tpcHBlZCIgPDwgc3RkOjplbmRsOwotfQotICAgIAotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotY29tcGlsZXJfbG9nX2Zvcm1hdHRlcjo6bG9nX2V4Y2VwdGlvbiggc3RkOjpvc3RyZWFtJiBvdXRwdXQsIGxvZ19jaGVja3BvaW50X2RhdGEgY29uc3QmIGNoZWNrcG9pbnRfZGF0YSwgZXhlY3V0aW9uX2V4Y2VwdGlvbiBjb25zdCYgZXggKQotewotICAgIGV4ZWN1dGlvbl9leGNlcHRpb246OmxvY2F0aW9uIGNvbnN0JiBsb2MgPSBleC53aGVyZSgpOwotICAgIHByaW50X3ByZWZpeCggb3V0cHV0LCBsb2MubV9maWxlX25hbWUsIGxvYy5tX2xpbmVfbnVtICk7Ci0KLSAgICBvdXRwdXQgPDwgImZhdGFsIGVycm9yIGluIFwiIiA8PCAobG9jLm1fZnVuY3Rpb24uaXNfZW1wdHkoKSA/IHRlc3RfcGhhc2VfaWRlbnRpZmllcigpIDogbG9jLm1fZnVuY3Rpb24gKSA8PCAiXCI6ICI7Ci0KLSAgICBvdXRwdXQgPDwgZXgud2hhdCgpOwotCi0gICAgaWYoICFjaGVja3BvaW50X2RhdGEubV9maWxlX25hbWUuaXNfZW1wdHkoKSApIHsKLSAgICAgICAgb3V0cHV0IDw8ICdcbic7Ci0gICAgICAgIHByaW50X3ByZWZpeCggb3V0cHV0LCBjaGVja3BvaW50X2RhdGEubV9maWxlX25hbWUsIGNoZWNrcG9pbnRfZGF0YS5tX2xpbmVfbnVtICk7Ci0gICAgICAgIG91dHB1dCA8PCAibGFzdCBjaGVja3BvaW50IjsKLSAgICAgICAgaWYoICFjaGVja3BvaW50X2RhdGEubV9tZXNzYWdlLmVtcHR5KCkgKQotICAgICAgICAgICAgb3V0cHV0IDw8ICI6ICIgPDwgY2hlY2twb2ludF9kYXRhLm1fbWVzc2FnZTsKLSAgICB9Ci0gICAgCi0gICAgb3V0cHV0IDw8IHN0ZDo6ZW5kbDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotY29tcGlsZXJfbG9nX2Zvcm1hdHRlcjo6bG9nX2VudHJ5X3N0YXJ0KCBzdGQ6Om9zdHJlYW0mIG91dHB1dCwgbG9nX2VudHJ5X2RhdGEgY29uc3QmIGVudHJ5X2RhdGEsIGxvZ19lbnRyeV90eXBlcyBsZXQgKQotewotICAgIHN3aXRjaCggbGV0ICkgewotICAgICAgICBjYXNlIE5ETkJPT1NUX1VUTF9FVF9JTkZPOgotICAgICAgICAgICAgcHJpbnRfcHJlZml4KCBvdXRwdXQsIGVudHJ5X2RhdGEubV9maWxlX25hbWUsIGVudHJ5X2RhdGEubV9saW5lX251bSApOwotICAgICAgICAgICAgb3V0cHV0IDw8ICJpbmZvOiAiOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTkROQk9PU1RfVVRMX0VUX01FU1NBR0U6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBORE5CT09TVF9VVExfRVRfV0FSTklORzoKLSAgICAgICAgICAgIHByaW50X3ByZWZpeCggb3V0cHV0LCBlbnRyeV9kYXRhLm1fZmlsZV9uYW1lLCBlbnRyeV9kYXRhLm1fbGluZV9udW0gKTsKLSAgICAgICAgICAgIG91dHB1dCA8PCAid2FybmluZyBpbiBcIiIgPDwgdGVzdF9waGFzZV9pZGVudGlmaWVyKCkgPDwgIlwiOiAiOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTkROQk9PU1RfVVRMX0VUX0VSUk9SOgotICAgICAgICAgICAgcHJpbnRfcHJlZml4KCBvdXRwdXQsIGVudHJ5X2RhdGEubV9maWxlX25hbWUsIGVudHJ5X2RhdGEubV9saW5lX251bSApOwotICAgICAgICAgICAgb3V0cHV0IDw8ICJlcnJvciBpbiBcIiIgPDwgdGVzdF9waGFzZV9pZGVudGlmaWVyKCkgPDwgIlwiOiAiOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTkROQk9PU1RfVVRMX0VUX0ZBVEFMX0VSUk9SOgotICAgICAgICAgICAgcHJpbnRfcHJlZml4KCBvdXRwdXQsIGVudHJ5X2RhdGEubV9maWxlX25hbWUsIGVudHJ5X2RhdGEubV9saW5lX251bSApOwotICAgICAgICAgICAgb3V0cHV0IDw8ICJmYXRhbCBlcnJvciBpbiBcIiIgPDwgdGVzdF9waGFzZV9pZGVudGlmaWVyKCkgPDwgIlwiOiAiOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1jb21waWxlcl9sb2dfZm9ybWF0dGVyOjpsb2dfZW50cnlfdmFsdWUoIHN0ZDo6b3N0cmVhbSYgb3V0cHV0LCBjb25zdF9zdHJpbmcgdmFsdWUgKQotewotICAgIG91dHB1dCA8PCB2YWx1ZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotY29tcGlsZXJfbG9nX2Zvcm1hdHRlcjo6bG9nX2VudHJ5X3ZhbHVlKCBzdGQ6Om9zdHJlYW0mIG91dHB1dCwgbGF6eV9vc3RyZWFtIGNvbnN0JiB2YWx1ZSApCi17Ci0gICAgb3V0cHV0IDw8IHZhbHVlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1jb21waWxlcl9sb2dfZm9ybWF0dGVyOjpsb2dfZW50cnlfZmluaXNoKCBzdGQ6Om9zdHJlYW0mIG91dHB1dCApCi17Ci0gICAgb3V0cHV0IDw8IHN0ZDo6ZW5kbDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotY29tcGlsZXJfbG9nX2Zvcm1hdHRlcjo6cHJpbnRfcHJlZml4KCBzdGQ6Om9zdHJlYW0mIG91dHB1dCwgY29uc3Rfc3RyaW5nIGZpbGUsIHN0ZDo6c2l6ZV90IGxpbmUgKQotewotI2lmZGVmIF9fQVBQTEVfQ0NfXwotICAgIC8vIFhjb2RlLWNvbXBhdGlibGUgbG9nZ2luZyBmb3JtYXQsIGlkZWEgYnkgUmljaGFyZCBEaW5nd2FsbCBhdCAKLSAgICAvLyA8aHR0cDovL3JpY2hhcmRkaW5nd2FsbC5uYW1lLzIwMDgvMDYvMDEvdXNpbmctdGhlLWJvb3N0LXVuaXQtdGVzdC1mcmFtZXdvcmstd2l0aC14Y29kZS0zLz4uIAotICAgIG91dHB1dCA8PCBmaWxlIDw8ICc6JyA8PCBsaW5lIDw8ICI6ICI7Ci0jZWxzZQotICAgIG91dHB1dCA8PCBmaWxlIDw8ICcoJyA8PCBsaW5lIDw8ICIpOiAiOwotI2VuZGlmCi19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIG91dHB1dAotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX0NPTVBJTEVSX0xPR19GT1JNQVRURVJfSVBQXzAyMDEwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvY3BwX21haW4uaXBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvY3BwX21haW4uaXBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMzdhNzgxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL2NwcF9tYWluLmlwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzOSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDAxLTIwMDguCi0vLyAgKEMpIENvcHlyaWdodCBCZW1hbiBEYXdlcyAxOTk1LTIwMDEuCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IG1haW4gZnVuY3Rpb24gaW1wbGVtZW50YXRpb24gZm9yIFByb2dyYW0gRXhlY3V0b24gTW9uaXRvcgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9DUFBfTUFJTl9JUFBfMDEyMjA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfQ1BQX01BSU5fSVBQXzAxMjIwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9leGVjdXRpb25fbW9uaXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvaW8uaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L2NzdGRsaWIuaHBwPiAgICAvLyBmb3IgZXhpdCBjb2RlcwotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAgICAvLyBmb3Igd29ya2Fyb3VuZHMKLQotLy8gU1RMCi0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0jaW5jbHVkZSA8Y3N0ZGxpYj4gICAgICAvLyBzdGQ6OmdldGVudgotI2luY2x1ZGUgPGNzdHJpbmc+ICAgICAgLy8gc3RkOjpzdHJlcnJvcgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaWZkZWYgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UKLW5hbWVzcGFjZSBzdGQgeyB1c2luZyA6OmdldGVudjsgdXNpbmcgOjpzdHJlcnJvcjsgfQotI2VuZGlmCi0KLW5hbWVzcGFjZSB7Ci0KLXN0cnVjdCBjcHBfbWFpbl9jYWxsZXIgewotICAgIGNwcF9tYWluX2NhbGxlciggaW50ICgqY3BwX21haW5fZnVuYykoIGludCBhcmdjLCBjaGFyKiBhcmd2W10gKSwgaW50IGFyZ2MsIGNoYXIqKiBhcmd2ICkgCi0gICAgOiBtX2NwcF9tYWluX2Z1bmMoIGNwcF9tYWluX2Z1bmMgKQotICAgICwgbV9hcmdjKCBhcmdjICkKLSAgICAsIG1fYXJndiggYXJndiApIHt9Ci0gICAgCi0gICAgaW50IG9wZXJhdG9yKCkoKSB7IHJldHVybiAoKm1fY3BwX21haW5fZnVuYykoIG1fYXJnYywgbV9hcmd2ICk7IH0KLSAgCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycyAgICAKLSAgICBpbnQgKCptX2NwcF9tYWluX2Z1bmMpKCBpbnQgYXJnYywgY2hhciogYXJndltdICk7Ci0gICAgaW50ICAgICAgbV9hcmdjOwotICAgIGNoYXIqKiAgIG1fYXJndjsKLX07Ci0KLX0gLy8gbG9jYWwgbmFtZXNwYWNlCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICBwcmdfZXhlY19tb25pdG9yX21haW4gICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotaW50IE5ETkJPT1NUX1RFU1RfREVDTAotcHJnX2V4ZWNfbW9uaXRvcl9tYWluKCBpbnQgKCpjcHBfbWFpbikoIGludCBhcmdjLCBjaGFyKiBhcmd2W10gKSwgaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSApCi17Ci0gICAgaW50IHJlc3VsdCA9IDA7Ci0KLSAgICB0cnkgewotICAgICAgICBuZG5ib29zdDo6dW5pdF90ZXN0Ojpjb25zdF9zdHJpbmcgcCggc3RkOjpnZXRlbnYoICJORE5CT09TVF9URVNUX0NBVENIX1NZU1RFTV9FUlJPUlMiICkgKTsKLSAgICAgICAgOjpuZG5ib29zdDo6ZXhlY3V0aW9uX21vbml0b3IgZXhfbW9uOwotCi0gICAgICAgIGV4X21vbi5wX2NhdGNoX3N5c3RlbV9lcnJvcnMudmFsdWUgPSBwICE9ICJubyI7Ci0gICAgICAgIAotICAgICAgICByZXN1bHQgPSBleF9tb24uZXhlY3V0ZSggCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp1bml0X3Rlc3Q6OmNhbGxiYWNrMDxpbnQ+KCBjcHBfbWFpbl9jYWxsZXIoIGNwcF9tYWluLCBhcmdjLCBhcmd2ICkgKSApOwotICAgICAgICAKLSAgICAgICAgaWYoIHJlc3VsdCA9PSAwICkKLSAgICAgICAgICAgIHJlc3VsdCA9IDo6bmRuYm9vc3Q6OmV4aXRfc3VjY2VzczsKLSAgICAgICAgZWxzZSBpZiggcmVzdWx0ICE9IDo6bmRuYm9vc3Q6OmV4aXRfc3VjY2VzcyApIHsKLSAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiXG4qKioqIGVycm9yIHJldHVybiBjb2RlOiAiIDw8IHJlc3VsdCA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgICAgICByZXN1bHQgPSA6Om5kbmJvb3N0OjpleGl0X2ZhaWx1cmU7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2goIDo6bmRuYm9vc3Q6OmV4ZWN1dGlvbl9leGNlcHRpb24gY29uc3QmIGV4ZXggKSB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiXG4qKioqIGV4Y2VwdGlvbigiIDw8IGV4ZXguY29kZSgpIDw8ICIpOiAiIDw8IGV4ZXgud2hhdCgpIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmVzdWx0ID0gOjpuZG5ib29zdDo6ZXhpdF9leGNlcHRpb25fZmFpbHVyZTsKLSAgICB9Ci0gICAgY2F0Y2goIDo6bmRuYm9vc3Q6OnN5c3RlbV9lcnJvciBjb25zdCYgZXggKSB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiXG4qKioqIGZhaWxlZCB0byBpbml0aWFsaXplIGV4ZWN1dGlvbiBtb25pdG9yLiIKLSAgICAgICAgICAgICAgICAgIDw8ICJcbioqKiogZXhwcmVzc2lvbiBhdCBmYXVsdDogIiA8PCBleC5wX2ZhaWxlZF9leHAgCi0gICAgICAgICAgICAgICAgICA8PCAiXG4qKioqIGVycm9yKCIgPDwgZXgucF9lcnJubyA8PCAiKTogIiA8PCBzdGQ6OnN0cmVycm9yKCBleC5wX2Vycm5vICkgPDwgc3RkOjplbmRsOwotICAgICAgICByZXN1bHQgPSA6Om5kbmJvb3N0OjpleGl0X2V4Y2VwdGlvbl9mYWlsdXJlOwotICAgIH0KLQotICAgIGlmKCByZXN1bHQgIT0gOjpuZG5ib29zdDo6ZXhpdF9zdWNjZXNzICkgewotICAgICAgICBzdGQ6OmNlcnIgPDwgIioqKioqKioqIGVycm9ycyBkZXRlY3RlZDsgc2VlIHN0YW5kYXJkIG91dHB1dCBmb3IgZGV0YWlscyAqKioqKioqKiIgPDwgc3RkOjplbmRsOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgLy8gIFNvbWUgcHJlZmVyIGEgY29uZmlybWluZyBtZXNzYWdlIHdoZW4gYWxsIGlzIHdlbGwsIHdoaWxlIG90aGVycyBkb24ndAotICAgICAgICAvLyAgbGlrZSB0aGUgY2x1dHRlci4gIFVzZSBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBhdm9pZCBjb21tYW5kCi0gICAgICAgIC8vICBsaW5lIGFyZ3VtZW50IG1vZGlmaWNhdGlvbnM7IGZvciB1c2UgaW4gcHJvZHVjdGlvbiBwcm9ncmFtcwotICAgICAgICAvLyAgdGhhdCdzIGEgbm8tbm8gaW4gc29tZSBvcmdhbml6YXRpb25zLgotICAgICAgICA6Om5kbmJvb3N0Ojp1bml0X3Rlc3Q6OmNvbnN0X3N0cmluZyBwKCBzdGQ6OmdldGVudiggIk5ETkJPT1NUX1BSR19NT05fQ09ORklSTSIgKSApOwotICAgICAgICBpZiggcCAhPSAibm8iICkgeyAKLSAgICAgICAgICAgIHN0ZDo6Y2VyciA8PCBzdGQ6OmZsdXNoIDw8ICJubyBlcnJvcnMgZGV0ZWN0ZWQiIDw8IHN0ZDo6ZW5kbDsgCi0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVEVTVF9EWU5fTElOSykgJiYgIWRlZmluZWQoTkROQk9PU1RfVEVTVF9OT19NQUlOKQotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgIG1haW4gZnVuY3Rpb24gZm9yIHRlc3RzIHVzaW5nIGxpYiAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWludCBjcHBfbWFpbiggaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSApOyAgLy8gcHJvdG90eXBlIGZvciB1c2VyJ3MgY3BwX21haW4oKQotCi1pbnQgTkROQk9PU1RfVEVTVF9DQUxMX0RFQ0wKLW1haW4oIGludCBhcmdjLCBjaGFyKiBhcmd2W10gKQotewotICAgIHJldHVybiA6Om5kbmJvb3N0OjpwcmdfZXhlY19tb25pdG9yX21haW4oICZjcHBfbWFpbiwgYXJnYywgYXJndiApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZW5kaWYgLy8gIU5ETkJPT1NUX1RFU1RfRFlOX0xJTksgJiYgIU5ETkJPT1NUX1RFU1RfTk9fTUFJTgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfQ1BQX01BSU5fSVBQXzAxMjIwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvZGVidWcuaXBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvZGVidWcuaXBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MjMzMTQ5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL2RlYnVnLmlwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3MCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA2LTIwMDguCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1Nzk5MiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZGVidWcgaW50ZXJmYWNlcyBpbXBsZW1lbnRhdGlvbgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9ERUJVR19BUElfSVBQXzExMjAwNkdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX0RFQlVHX0FQSV9JUFBfMTEyMDA2R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2dsb2JhbF90eXBlZGVmLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGVidWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGVidWdfY29uZmlnLmhwcD4KLQotLy8gSW1wbGVtZW50YXRpb24gb24gV2luZG93cwotI2lmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChVTkRFUl9DRSkgJiYgIWRlZmluZWQoTkROQk9PU1RfRElTQUJMRV9XSU4zMikgLy8gKioqKioqKiBXSU4zMgotCi0jICBkZWZpbmUgTkROQk9PU1RfV0lOMzJfQkFTRURfREVCVUcKLQotLy8gU1lTVEVNIEFQSQotIyAgaW5jbHVkZSA8d2luZG93cy5oPgotIyAgaW5jbHVkZSA8d2lucmVnLmg+Ci0jICBpbmNsdWRlIDxjc3RkaW8+Ci0jICBpbmNsdWRlIDxjc3RyaW5nPgotCi0jICBpZiAhZGVmaW5lZChOREVCVUcpICYmIGRlZmluZWQoX01TQ19WRVIpCi0jICAgIGRlZmluZSBORE5CT09TVF9NU19DUlRfQkFTRURfREVCVUcKLSMgICAgaW5jbHVkZSA8Y3J0ZGJnLmg+Ci0jICBlbmRpZgotCi0KLSMgIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoIE5ETkJPT1NUX01TVkMsIDwxMzAwKQotIyAgICBkZWZpbmUgc25wcmludGYgX3NucHJpbnRmCi0jICBlbmRpZgotCi0jICBpZmRlZiBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRQotbmFtZXNwYWNlIHN0ZCB7IHVzaW5nIDo6bWVtc2V0OyB1c2luZyA6OnNwcmludGY7IH0KLSMgIGVuZGlmCi0KLSNlbGlmIGRlZmluZWQodW5peCkgfHwgZGVmaW5lZChfX3VuaXgpIC8vICoqKioqKioqKioqKioqKioqKioqKiBVTklYCi0KLSMgIGRlZmluZSBORE5CT09TVF9VTklYX0JBU0VEX0RFQlVHCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2NsYXNzX3Byb3BlcnRpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYWxnb3JpdGhtLmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8Y3N0cmluZz4gIC8vIHN0ZDo6bWVtY3B5Ci0jaW5jbHVkZSA8bWFwPgotI2luY2x1ZGUgPGNzdGRpbz4KLSNpbmNsdWRlIDxzdGRhcmcuaD4gLy8gISEgPz8gY3N0ZGFyZwotCi0vLyBTWVNURU0gQVBJCi0jICBpbmNsdWRlIDx1bmlzdGQuaD4KLSMgIGluY2x1ZGUgPHNpZ25hbC5oPgotIyAgaW5jbHVkZSA8ZmNudGwuaD4KLQotIyAgaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jICBpbmNsdWRlIDxzeXMvc3RhdC5oPgotIyAgaW5jbHVkZSA8c3lzL3dhaXQuaD4KLSMgIGluY2x1ZGUgPHN5cy90aW1lLmg+Ci0jICBpbmNsdWRlIDxzdGRpby5oPgotIyAgaW5jbHVkZSA8c3RkbGliLmg+Ci0KLSMgIGlmIGRlZmluZWQoc3VuKSB8fCBkZWZpbmVkKF9fc3VuKQotCi0jICAgIGRlZmluZSBORE5CT09TVF9TVU5fQkFTRURfREVCVUcKLQotIyAgICBpZm5kZWYgTkROQk9PU1RfVEVTVF9EQkdfTElTVAotIyAgICAgIGRlZmluZSBORE5CT09TVF9URVNUX0RCR19MSVNUIGRieDtnZGIKLSMgICAgZW5kaWYKLQotIyAgICBkZWZpbmUgTkROQk9PU1RfVEVTVF9DTkxfREJHICBkYngKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfR1VJX0RCRyAgZGJ4LWRkZAotCi0jICAgIGluY2x1ZGUgPHByb2Nmcy5oPgotCi0jICBlbGlmIGRlZmluZWQobGludXgpIHx8IGRlZmluZWQoX19saW51eCkKLQotIyAgICBkZWZpbmUgTkROQk9PU1RfTElOVVhfQkFTRURfREVCVUcKLQotIyAgICBpbmNsdWRlIDxzeXMvcHRyYWNlLmg+Ci0KLSMgICAgaWZuZGVmIE5ETkJPT1NUX1RFU1RfU1RBVF9MSU5FX01BWAotIyAgICAgIGRlZmluZSBORE5CT09TVF9URVNUX1NUQVRfTElORV9NQVggNTAwCi0jICAgIGVuZGlmCi0KLSMgICAgaWZuZGVmIE5ETkJPT1NUX1RFU1RfREJHX0xJU1QKLSMgICAgICBkZWZpbmUgTkROQk9PU1RfVEVTVF9EQkdfTElTVCBnZGIKLSMgICAgZW5kaWYKLQotIyAgICBkZWZpbmUgTkROQk9PU1RfVEVTVF9DTkxfREJHICBnZGIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfR1VJX0RCRyAgZ2RiLXh0ZXJtCi0KLSMgIGVuZGlmCi0KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGVidWcgewotCi11c2luZyB1bml0X3Rlc3Q6OmNvbnN0X3N0cmluZzsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgIGRlYnVnOjppbmZvX3QgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgewotCi0jaWYgZGVmaW5lZChORE5CT09TVF9XSU4zMl9CQVNFRF9ERUJVRykgLy8gKioqKioqKioqKioqKioqKioqKioqKiogV0lOMzIKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSB2b2lkCi1keW5fc3ltYm9sKCBUJiByZXMsIGNoYXIgY29uc3QqIG1vZHVsZV9uYW1lLCBjaGFyIGNvbnN0KiBzeW1ib2xfbmFtZSApCi17Ci0gICAgSE1PRFVMRSBtID0gOjpHZXRNb2R1bGVIYW5kbGVBKCBtb2R1bGVfbmFtZSApOwotCi0gICAgaWYoICFtICkKLSAgICAgICAgbSA9IDo6TG9hZExpYnJhcnlBKCBtb2R1bGVfbmFtZSApOwotCi0gICAgcmVzID0gcmVpbnRlcnByZXRfY2FzdDxUPiggOjpHZXRQcm9jQWRkcmVzcyggbSwgc3ltYm9sX25hbWUgKSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zdGF0aWMgc3RydWN0IGluZm9fdCB7Ci0gICAgdHlwZWRlZiBCT09MIChXSU5BUEkqIElzRGVidWdnZXJQcmVzZW50VCkoKTsKLSAgICB0eXBlZGVmIExPTkcgKFdJTkFQSSogUmVnUXVlcnlWYWx1ZUV4VCkoIEhLRVksIGNoYXIgY29uc3QqIC8qTFBUU1RSKi8sIExQRFdPUkQsIExQRFdPUkQsIExQQllURSwgTFBEV09SRCApOwotICAgIHR5cGVkZWYgTE9ORyAoV0lOQVBJKiBSZWdPcGVuS2V5VCkoIEhLRVksIGNoYXIgY29uc3QqIC8qTFBDVFNUUiovLCBQSEtFWSApOwotICAgIHR5cGVkZWYgTE9ORyAoV0lOQVBJKiBSZWdDbG9zZUtleVQpKCBIS0VZICk7Ci0KLSAgICBpbmZvX3QoKTsKLQotICAgIElzRGVidWdnZXJQcmVzZW50VCAgbV9pc19kZWJ1Z2dlcl9wcmVzZW50OwotICAgIFJlZ09wZW5LZXlUICAgICAgICAgbV9yZWdfb3Blbl9rZXk7Ci0gICAgUmVnUXVlcnlWYWx1ZUV4VCAgICBtX3JlZ19xdWVyeV92YWx1ZTsKLSAgICBSZWdDbG9zZUtleVQgICAgICAgIG1fcmVnX2Nsb3NlX2tleTsKLQotfSBzX2luZm87Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWluZm9fdDo6aW5mb190KCkKLXsKLSAgICBkeW5fc3ltYm9sKCBtX2lzX2RlYnVnZ2VyX3ByZXNlbnQsICJrZXJuZWwzMiIsICJJc0RlYnVnZ2VyUHJlc2VudCIgKTsKLSAgICBkeW5fc3ltYm9sKCBtX3JlZ19vcGVuX2tleSwgImFkdmFwaTMyIiwgIlJlZ09wZW5LZXlBIiApOwotICAgIGR5bl9zeW1ib2woIG1fcmVnX3F1ZXJ5X3ZhbHVlLCAiYWR2YXBpMzIiLCAiUmVnUXVlcnlWYWx1ZUV4QSIgKTsKLSAgICBkeW5fc3ltYm9sKCBtX3JlZ19jbG9zZV9rZXksICJhZHZhcGkzMiIsICJSZWdDbG9zZUtleSIgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2VsaWYgZGVmaW5lZChORE5CT09TVF9VTklYX0JBU0VEX0RFQlVHKQotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICAgZmRfaG9sZGVyICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXN0cnVjdCBmZF9ob2xkZXIgewotICAgIGV4cGxpY2l0IGZkX2hvbGRlciggaW50IGZkICkgOiBtX2ZkKCBmZCApIHt9Ci0gICAgfmZkX2hvbGRlcigpCi0gICAgewotICAgICAgICBpZiggbV9mZCAhPSAtMSApCi0gICAgICAgICAgICA6OmNsb3NlKCBtX2ZkICk7Ci0gICAgfQotCi0gICAgb3BlcmF0b3IgaW50KCkgeyByZXR1cm4gbV9mZDsgfQotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIGludCBtX2ZkOwotfTsKLQotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgIHByb2Nlc3NfaW5mbyAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXN0cnVjdCBwcm9jZXNzX2luZm8gewotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgZXhwbGljaXQgICAgICAgIHByb2Nlc3NfaW5mbyggaW50IHBpZCApOwotCi0gICAgLy8gYWNjZXNzIG1ldGhvZHMKLSAgICBpbnQgICAgICAgICAgICAgcGFyZW50X3BpZCgpIGNvbnN0ICB7IHJldHVybiBtX3BhcmVudF9waWQ7IH0KLSAgICBjb25zdF9zdHJpbmcgICAgYmluYXJ5X25hbWUoKSBjb25zdCB7IHJldHVybiBtX2JpbmFyeV9uYW1lOyB9Ci0gICAgY29uc3Rfc3RyaW5nICAgIGJpbmFyeV9wYXRoKCkgY29uc3QgeyByZXR1cm4gbV9iaW5hcnlfcGF0aDsgfQotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIGludCAgICAgICAgICAgICBtX3BhcmVudF9waWQ7Ci0gICAgY29uc3Rfc3RyaW5nICAgIG1fYmluYXJ5X25hbWU7Ci0gICAgY29uc3Rfc3RyaW5nICAgIG1fYmluYXJ5X3BhdGg7Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NVTl9CQVNFRF9ERUJVRykKLSAgICBzdHJ1Y3QgcHNpbmZvICAgbV9wc2k7Ci0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0xJTlVYX0JBU0VEX0RFQlVHKQotICAgIGNoYXIgICAgICAgICAgICBtX3N0YXRfbGluZVtORE5CT09TVF9URVNUX1NUQVRfTElORV9NQVgrMV07Ci0jZW5kaWYKLSAgICBjaGFyICAgICAgICAgICAgbV9iaW5hcnlfcGF0aF9idWZmWzUwMCsxXTsgLy8gISEgPz8KLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXByb2Nlc3NfaW5mbzo6cHJvY2Vzc19pbmZvKCBpbnQgcGlkICkKLTogbV9wYXJlbnRfcGlkKCAwICkKLXsKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NVTl9CQVNFRF9ERUJVRykKLSAgICBjaGFyIGZuYW1lX2J1ZmZbMzBdOwotCi0gICAgOjpzbnByaW50ZiggZm5hbWVfYnVmZiwgc2l6ZW9mKGZuYW1lX2J1ZmYpLCAiL3Byb2MvJWQvcHNpbmZvIiwgcGlkICk7Ci0KLSAgICBmZF9ob2xkZXIgcHNpbmZvX2ZkKCA6Om9wZW4oIGZuYW1lX2J1ZmYsIE9fUkRPTkxZICkgKTsKLQotICAgIGlmKCBwc2luZm9fZmQgPT0gLTEgKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiggOjpyZWFkKCBwc2luZm9fZmQsICZtX3BzaSwgc2l6ZW9mKG1fcHNpKSApID09IC0xICkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9wYXJlbnRfcGlkID0gbV9wc2kucHJfcHBpZDsKLQotICAgIG1fYmluYXJ5X25hbWUuYXNzaWduKCBtX3BzaS5wcl9mbmFtZSApOwotCi0gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAvLwotICAgIAotICAgIDo6c25wcmludGYoIGZuYW1lX2J1ZmYsIHNpemVvZihmbmFtZV9idWZmKSwgIi9wcm9jLyVkL2FzIiwgcGlkICk7Ci0KLSAgICBmZF9ob2xkZXIgYXNfZmQoIDo6b3BlbiggZm5hbWVfYnVmZiwgT19SRE9OTFkgKSApOwotICAgIHVpbnRwdHJfdCAgIGJpbmFyeV9uYW1lX3BvczsKLSAgCi0gICAgLy8gISEgPz8gY291bGQgd2UgYXZvaWQgcmVhZGluZyB3aG9sZSBtX2JpbmFyeV9wYXRoX2J1ZmY/Ci0gICAgaWYoIGFzX2ZkID09IC0xIHx8Ci0gICAgICAgIDo6bHNlZWsoIGFzX2ZkLCBtX3BzaS5wcl9hcmd2LCBTRUVLX1NFVCApID09IC0xIHx8Ci0gICAgICAgIDo6cmVhZCAoIGFzX2ZkLCAmYmluYXJ5X25hbWVfcG9zLCBzaXplb2YoYmluYXJ5X25hbWVfcG9zKSApID09IC0xIHx8Ci0gICAgICAgIDo6bHNlZWsoIGFzX2ZkLCBiaW5hcnlfbmFtZV9wb3MsIFNFRUtfU0VUICkgPT0gLTEgfHwKLSAgICAgICAgOjpyZWFkICggYXNfZmQsIG1fYmluYXJ5X3BhdGhfYnVmZiwgc2l6ZW9mKG1fYmluYXJ5X3BhdGhfYnVmZikgKSA9PSAtMSApCi0gICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgbV9iaW5hcnlfcGF0aC5hc3NpZ24oIG1fYmluYXJ5X3BhdGhfYnVmZiApOwotICAgICAgICAKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTElOVVhfQkFTRURfREVCVUcpCi0gICAgY2hhciBmbmFtZV9idWZmWzMwXTsKLQotICAgIDo6c25wcmludGYoIGZuYW1lX2J1ZmYsIHNpemVvZihmbmFtZV9idWZmKSwgIi9wcm9jLyVkL3N0YXQiLCBwaWQgKTsKLQotICAgIGZkX2hvbGRlciBwc2luZm9fZmQoIDo6b3BlbiggZm5hbWVfYnVmZiwgT19SRE9OTFkgKSApOwotCi0gICAgaWYoIHBzaW5mb19mZCA9PSAtMSApCi0gICAgICAgIHJldHVybjsKLQotICAgIHNzaXplX3QgbnVtX3JlYWQgPSA6OnJlYWQoIHBzaW5mb19mZCwgbV9zdGF0X2xpbmUsIHNpemVvZihtX3N0YXRfbGluZSktMSApOwotICAgIGlmKCBudW1fcmVhZCA9PSAtMSApCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc3RhdF9saW5lW251bV9yZWFkXSA9IDA7Ci0KLSAgICBjaGFyIGNvbnN0KiBuYW1lX2JlZyA9IG1fc3RhdF9saW5lOwotICAgIHdoaWxlKCAqbmFtZV9iZWcgJiYgKm5hbWVfYmVnICE9ICcoJyApCi0gICAgICAgICsrbmFtZV9iZWc7Ci0KLSAgICBjaGFyIGNvbnN0KiBuYW1lX2VuZCA9IG5hbWVfYmVnKzE7Ci0gICAgd2hpbGUoICpuYW1lX2VuZCAmJiAqbmFtZV9lbmQgIT0gJyknICkKLSAgICAgICAgKytuYW1lX2VuZDsKLQotICAgIHN0ZDo6c3NjYW5mKCBuYW1lX2VuZCsxLCAiJSpzJWQiLCAmbV9wYXJlbnRfcGlkICk7Ci0KLSAgICBtX2JpbmFyeV9uYW1lLmFzc2lnbiggbmFtZV9iZWcrMSwgbmFtZV9lbmQgKTsKLQotICAgIDo6c25wcmludGYoIGZuYW1lX2J1ZmYsIHNpemVvZihmbmFtZV9idWZmKSwgIi9wcm9jLyVkL2V4ZSIsIHBpZCApOwotICAgIG51bV9yZWFkID0gOjpyZWFkbGluayggZm5hbWVfYnVmZiwgbV9iaW5hcnlfcGF0aF9idWZmLCBzaXplb2YobV9iaW5hcnlfcGF0aF9idWZmKS0xICk7Ci0KLSAgICBpZiggbnVtX3JlYWQgPT0gLTEgKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2JpbmFyeV9wYXRoX2J1ZmZbbnVtX3JlYWRdID0gMDsKLSAgICBtX2JpbmFyeV9wYXRoLmFzc2lnbiggbV9iaW5hcnlfcGF0aF9idWZmLCBudW1fcmVhZCApOwotI2VuZGlmCi19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICBwcmVwYXJlX3dpbmRvd190aXRsZSAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotc3RhdGljIGNoYXIqCi1wcmVwYXJlX3dpbmRvd190aXRsZSggZGJnX3N0YXJ0dXBfaW5mbyBjb25zdCYgZHNpICkKLXsKLSAgICB0eXBlZGVmIHVuaXRfdGVzdDo6Y29uc3Rfc3RyaW5nIHN0cl90OwotCi0gICAgc3RhdGljIGNoYXIgdGl0bGVfc3RyWzUwXTsKLQotICAgIHN0cl90IHBhdGhfc2VwKCAiXFwvIiApOwotCi0gICAgc3RyX3Q6Oml0ZXJhdG9yICBpdCA9IHVuaXRfdGVzdDo6ZmluZF9sYXN0X29mKCBkc2kuYmluYXJ5X3BhdGguYmVnaW4oKSwgZHNpLmJpbmFyeV9wYXRoLmVuZCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9zZXAuYmVnaW4oKSwgcGF0aF9zZXAuZW5kKCkgKTsKLQotICAgIGlmKCBpdCA9PSBkc2kuYmluYXJ5X3BhdGguZW5kKCkgKQotICAgICAgICBpdCA9IGRzaS5iaW5hcnlfcGF0aC5iZWdpbigpOwotICAgIGVsc2UKLSAgICAgICAgKytpdDsKLQotICAgIDo6c25wcmludGYoIHRpdGxlX3N0ciwgc2l6ZW9mKHRpdGxlX3N0ciksICIlKnMgJWxkIiwgKGludCkoZHNpLmJpbmFyeV9wYXRoLmVuZCgpLWl0KSwgaXQsIGRzaS5waWQgKTsKLQotICAgIHJldHVybiB0aXRsZV9zdHI7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgIHNhdmVfZXhlY2xwICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdHlwZWRlZiB1bml0X3Rlc3Q6OmJhc2ljX2NzdHJpbmc8Y2hhcj4gbWJ1ZmZlcjsKLQotaW5saW5lIGNoYXIqCi1jb3B5X2FyZyggbWJ1ZmZlciYgZGVzdCwgY29uc3Rfc3RyaW5nIGFyZyApCi17Ci0gICAgaWYoIGRlc3Quc2l6ZSgpIDwgYXJnLnNpemUoKSsxICkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBjaGFyKiByZXMgPSBkZXN0LmJlZ2luKCk7Ci0KLSAgICBzdGQ6Om1lbWNweSggcmVzLCBhcmcuYmVnaW4oKSwgYXJnLnNpemUoKSsxICk7Ci0KLSAgICBkZXN0LnRyaW1fbGVmdCggYXJnLnNpemUoKSsxICk7Ci0KLSAgICByZXR1cm4gcmVzOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ib29sCi1zYWZlX2V4ZWNscCggY2hhciBjb25zdCogZmlsZSwgLi4uICkKLXsKLSAgICBzdGF0aWMgY2hhciogYXJndl9idWZmWzIwMF07Ci0KLSAgICB2YV9saXN0ICAgICBhcmdzOwotICAgIGNoYXIgY29uc3QqIGFyZzsKLQotICAgIC8vIGZpcnN0IGNhbGN1bGF0ZSBhY3R1YWwgbnVtYmVyIG9mIGFyZ3VtZW50cwotICAgIGludCAgICAgICAgIG51bV9hcmdzID0gMjsgLy8gZmlsZSBuYW1lIGFuZCAwIGF0IGxlYXN0Ci0KLSAgICB2YV9zdGFydCggYXJncywgZmlsZSApOwotICAgIHdoaWxlKCAhIShhcmcgPSB2YV9hcmcoIGFyZ3MsIGNoYXIgY29uc3QqICkpICkKLSAgICAgICAgbnVtX2FyZ3MrKzsKLSAgICB2YV9lbmQoIGFyZ3MgKTsKLQotICAgIC8vIHJlc2VydmUgc3BhY2UgZm9yIHRoZSBhcmd1bWVudCBwb2ludGVycyBhcnJheQotICAgIGNoYXIqKiAgICAgIGFyZ3ZfaXQgID0gYXJndl9idWZmOwotICAgIG1idWZmZXIgICAgIHdvcmtfYnVmZiggcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYXJndl9idWZmKSwgc2l6ZW9mKGFyZ3ZfYnVmZikgKTsKLSAgICB3b3JrX2J1ZmYudHJpbV9sZWZ0KCBudW1fYXJncyAqIHNpemVvZihjaGFyKikgKTsKLQotICAgIC8vIGNvcHkgYWxsIHRoZSBhcmd1bWVudCB2YWx1ZXMgaW50byBsb2NhbCBzdG9yYWdlCi0gICAgaWYoICEoKmFyZ3ZfaXQrKyA9IGNvcHlfYXJnKCB3b3JrX2J1ZmYsIGZpbGUgKSkgKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBwcmludGYoICIhISAlc1xuIiwgZmlsZSApOwotCi0gICAgdmFfc3RhcnQoIGFyZ3MsIGZpbGUgKTsKLSAgICB3aGlsZSggISEoYXJnID0gdmFfYXJnKCBhcmdzLCBjaGFyIGNvbnN0KiApKSApIHsKLSAgICAgICAgcHJpbnRmKCAiISEgJXNcbiIsIGFyZyApOwotICAgICAgICBpZiggISgqYXJndl9pdCsrID0gY29weV9hcmcoIHdvcmtfYnVmZiwgYXJnICkpICkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgdmFfZW5kKCBhcmdzICk7Ci0KLSAgICAqYXJndl9pdCA9IDA7Ci0KLSAgICByZXR1cm4gOjpleGVjdnAoIGZpbGUsIGFyZ3ZfYnVmZiApICE9IC0xOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICBzdGFydF9kZWJ1Z2dlcl9pbl9lbWFjcyAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXN0YXRpYyB2b2lkCi1zdGFydF9kZWJ1Z2dlcl9pbl9lbWFjcyggZGJnX3N0YXJ0dXBfaW5mbyBjb25zdCYgZHNpLCBjaGFyIGNvbnN0KiBlbWFjc19uYW1lLCBjaGFyIGNvbnN0KiBkYmdfY29tbWFuZCApCi17Ci0gICAgY2hhciBjb25zdCogdGl0bGUgPSBwcmVwYXJlX3dpbmRvd190aXRsZSggZHNpICk7Ci0KLSAgICBpZiggIXRpdGxlICkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZHNpLmRpc3BsYXkuaXNfZW1wdHkoKQotICAgICAgICA/IHNhZmVfZXhlY2xwKCBlbWFjc19uYW1lLCAiLXRpdGxlIiwgdGl0bGUsICItLWV2YWwiLCBkYmdfY29tbWFuZCwgMCApCi0gICAgICAgIDogc2FmZV9leGVjbHAoIGVtYWNzX25hbWUsICItdGl0bGUiLCB0aXRsZSwgIi1kaXNwbGF5IiwgZHNpLmRpc3BsYXkuYmVnaW4oKSwgIi0tZXZhbCIsIGRiZ19jb21tYW5kLCAwICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgZ2RiIHN0YXJ0ZXJzICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotc3RhdGljIGNoYXIgY29uc3QqCi1wcmVwYXJlX2dkYl9jbW5kX2ZpbGUoIGRiZ19zdGFydHVwX2luZm8gY29uc3QmIGRzaSApCi17Ci0gICAgLy8gcHJlcGFyZSBwaWQgdmFsdWUKLSAgICBjaGFyIHBpZF9idWZmWzE2XTsKLSAgICA6OnNucHJpbnRmKCBwaWRfYnVmZiwgc2l6ZW9mKHBpZF9idWZmKSwgIiVsZCIsIGRzaS5waWQgKTsKLSAgICB1bml0X3Rlc3Q6OmNvbnN0X3N0cmluZyBwaWRfc3RyKCBwaWRfYnVmZiApOwotCi0gICAgc3RhdGljIGNoYXIgY21kX2ZpbGVfbmFtZVtdID0gIi90bXAvYnRsX2dkYl9jbWRfWFhYWFhYIjsgLy8gISEgPz8KLQotICAgIC8vIHByZXBhcmUgY29tbWFuZHMKLSAgICBmZF9ob2xkZXIgY21kX2ZkKCA6Om1rc3RlbXAoIGNtZF9maWxlX25hbWUgKSApOwotCi0gICAgaWYoIGNtZF9mZCA9PSAtMSApCi0gICAgICAgIHJldHVybiAwOwotCi0jZGVmaW5lIFdSSVRFX1NUUiggc3RyICkgIGlmKCA6OndyaXRlKCBjbWRfZmQsIHN0ci5iZWdpbigpLCBzdHIuc2l6ZSgpICkgPT0gLTEgKSByZXR1cm4gMDsKLSNkZWZpbmUgV1JJVEVfQ1NUUiggc3RyICkgaWYoIDo6d3JpdGUoIGNtZF9mZCwgc3RyLCBzaXplb2YoIHN0ciApLTEgKSA9PSAtMSApIHJldHVybiAwOwotCi0gICAgV1JJVEVfQ1NUUiggImZpbGUgIiApOwotICAgIFdSSVRFX1NUUiggZHNpLmJpbmFyeV9wYXRoICk7Ci0gICAgV1JJVEVfQ1NUUiggIlxuYXR0YWNoICIgKTsKLSAgICBXUklURV9TVFIoIHBpZF9zdHIgKTsKLSAgICBXUklURV9DU1RSKCAiXG5zaGVsbCB1bmxpbmsgIiApOwotICAgIFdSSVRFX1NUUiggZHNpLmluaXRfZG9uZV9sb2NrICk7Ci0gICAgV1JJVEVfQ1NUUiggIlxuY29udCIgKTsKLSAgICBpZiggZHNpLmJyZWFrX29yX2NvbnRpbnVlICkKLSAgICAgICAgV1JJVEVfQ1NUUiggIlxudXAgNCIgKTsKLSAgICAgICAgICAgIAotICAgIFdSSVRFX0NTVFIoICJcbmVjaG8gXFxuIiApOyAvLyAhISA/PwotICAgIFdSSVRFX0NTVFIoICJcbmxpc3QgLSIgKTsKLSAgICBXUklURV9DU1RSKCAiXG5saXN0IiApOwotICAgIFdSSVRFX0NTVFIoICJcbnNoZWxsIHVubGluayAiICk7Ci0gICAgV1JJVEVfQ1NUUiggY21kX2ZpbGVfbmFtZSApOwotCi0gICAgcmV0dXJuIGNtZF9maWxlX25hbWU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXN0YXRpYyB2b2lkCi1zdGFydF9nZGJfaW5fY29uc29sZSggZGJnX3N0YXJ0dXBfaW5mbyBjb25zdCYgZHNpICkKLXsKLSAgICBjaGFyIGNvbnN0KiBjbW5kX2ZpbGVfbmFtZSA9IHByZXBhcmVfZ2RiX2NtbmRfZmlsZSggZHNpICk7Ci0KLSAgICBpZiggIWNtbmRfZmlsZV9uYW1lICkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc2FmZV9leGVjbHAoICJnZGIiLCAiLXEiLCAiLXgiLCBjbW5kX2ZpbGVfbmFtZSwgMCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zdGF0aWMgdm9pZAotc3RhcnRfZ2RiX2luX3h0ZXJtKCBkYmdfc3RhcnR1cF9pbmZvIGNvbnN0JiBkc2kgKQotewotICAgIGNoYXIgY29uc3QqIHRpdGxlICAgICAgICAgICA9IHByZXBhcmVfd2luZG93X3RpdGxlKCBkc2kgKTsKLSAgICBjaGFyIGNvbnN0KiBjbW5kX2ZpbGVfbmFtZSAgPSBwcmVwYXJlX2dkYl9jbW5kX2ZpbGUoIGRzaSApOwotCi0gICAgaWYoICF0aXRsZSB8fCAhY21uZF9maWxlX25hbWUgKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzYWZlX2V4ZWNscCggInh0ZXJtIiwgIi1UIiwgdGl0bGUsICItZGlzcGxheSIsIGRzaS5kaXNwbGF5LmJlZ2luKCksCi0gICAgICAgICAgICAgICAgICAgICItYmciLCAiYmxhY2siLCAiLWZnIiwgIndoaXRlIiwgIi1nZW9tZXRyeSIsICI4OHgzMCsxMCsxMCIsICItZm4iLCAiOXgxNSIsICItZSIsCi0gICAgICAgICAgICAgICAgICJnZGIiLCAiLXEiLCAiLXgiLCBjbW5kX2ZpbGVfbmFtZSwgMCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zdGF0aWMgdm9pZAotc3RhcnRfZ2RiX2luX2VtYWNzKCBkYmdfc3RhcnR1cF9pbmZvIGNvbnN0JiBkc2kgKQotewotICAgIGNoYXIgY29uc3QqIGNtbmRfZmlsZV9uYW1lICA9IHByZXBhcmVfZ2RiX2NtbmRfZmlsZSggZHNpICk7Ci0gICAgaWYoICFjbW5kX2ZpbGVfbmFtZSApCi0gICAgICAgIHJldHVybjsKLQotICAgIGNoYXIgZGJnX2NtZF9idWZmWzUwMF07IC8vICEhID8/Ci0gICAgOjpzbnByaW50ZiggZGJnX2NtZF9idWZmLCBzaXplb2YoZGJnX2NtZF9idWZmKSwgIihwcm9nbiAoZ2RiIFwiZ2RiIC1xIC14ICVzXCIpKSIsIGNtbmRfZmlsZV9uYW1lICk7Ci0KLSAgICBzdGFydF9kZWJ1Z2dlcl9pbl9lbWFjcyggZHNpLCAiZW1hY3MiLCBkYmdfY21kX2J1ZmYgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc3RhdGljIHZvaWQKLXN0YXJ0X2dkYl9pbl94ZW1hY3MoIGRiZ19zdGFydHVwX2luZm8gY29uc3QmICkKLXsKLSAgICAvLyAhISA/PwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgIGRieCBzdGFydGVycyAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXN0YXRpYyBjaGFyIGNvbnN0KgotcHJlcGFyZV9kYnhfY21kX2xpbmUoIGRiZ19zdGFydHVwX2luZm8gY29uc3QmIGRzaSwgYm9vbCBsaXN0X3NvdXJjZSA9IHRydWUgKQotewotICAgIHN0YXRpYyBjaGFyIGNtZF9saW5lX2J1ZmZbNTAwXTsgLy8gISEgPz8KLQotICAgIDo6c25wcmludGYoIGNtZF9saW5lX2J1ZmYsIHNpemVvZihjbWRfbGluZV9idWZmKSwgInVubGluayAlcztjb250OyVzJXMiLCAKLSAgICAgICAgICAgICAgICAgICBkc2kuaW5pdF9kb25lX2xvY2suYmVnaW4oKSwgCi0gICAgICAgICAgICAgICAgICAgZHNpLmJyZWFrX29yX2NvbnRpbnVlID8gInVwIDI7IjogIiIsIAotICAgICAgICAgICAgICAgICAgIGxpc3Rfc291cmNlID8gImVjaG8gXCIgXCI7bGlzdCAtdzM7IiA6ICIiICk7Ci0KLSAgICByZXR1cm4gY21kX2xpbmVfYnVmZjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc3RhdGljIHZvaWQKLXN0YXJ0X2RieF9pbl9jb25zb2xlKCBkYmdfc3RhcnR1cF9pbmZvIGNvbnN0JiBkc2kgKQotewotICAgIGNoYXIgcGlkX2J1ZmZbMTZdOwotICAgIDo6c25wcmludGYoIHBpZF9idWZmLCBzaXplb2YocGlkX2J1ZmYpLCAiJWxkIiwgZHNpLnBpZCApOwotCi0gICAgc2FmZV9leGVjbHAoICJkYngiLCAiLXEiLCAiLWMiLCBwcmVwYXJlX2RieF9jbWRfbGluZSggZHNpICksIGRzaS5iaW5hcnlfcGF0aC5iZWdpbigpLCBwaWRfYnVmZiwgMCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zdGF0aWMgdm9pZAotc3RhcnRfZGJ4X2luX3h0ZXJtKCBkYmdfc3RhcnR1cF9pbmZvIGNvbnN0JiBkc2kgKQotewotICAgIGNoYXIgY29uc3QqIHRpdGxlID0gcHJlcGFyZV93aW5kb3dfdGl0bGUoIGRzaSApOwotICAgIGlmKCAhdGl0bGUgKQotICAgICAgICByZXR1cm47Ci0KLSAgICBjaGFyIHBpZF9idWZmWzE2XTsgLy8gISEgPz8KLSAgICA6OnNucHJpbnRmKCBwaWRfYnVmZiwgc2l6ZW9mKHBpZF9idWZmKSwgIiVsZCIsIGRzaS5waWQgKTsKLSAgICAKLSAgICBzYWZlX2V4ZWNscCggInh0ZXJtIiwgIi1UIiwgdGl0bGUsICItZGlzcGxheSIsIGRzaS5kaXNwbGF5LmJlZ2luKCksIAotICAgICAgICAgICAgICAgICAgICAiLWJnIiwgImJsYWNrIiwgIi1mZyIsICJ3aGl0ZSIsICItZ2VvbWV0cnkiLCAiODh4MzArMTArMTAiLCAiLWZuIiwgIjl4MTUiLCAiLWUiLAotICAgICAgICAgICAgICAgICAiZGJ4IiwgIi1xIiwgIi1jIiwgcHJlcGFyZV9kYnhfY21kX2xpbmUoIGRzaSApLCBkc2kuYmluYXJ5X3BhdGguYmVnaW4oKSwgcGlkX2J1ZmYsIDAgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc3RhdGljIHZvaWQKLXN0YXJ0X2RieF9pbl9lbWFjcyggZGJnX3N0YXJ0dXBfaW5mbyBjb25zdCYgLypkc2kqLyApCi17Ci0vLyAgICBjaGFyIGRiZ19jbWRfYnVmZls1MDBdOyAvLyAhISA/PwotLy8KLS8vICAgIDo6c25wcmludGYoIGRiZ19jbWRfYnVmZiwgc2l6ZW9mKGRiZ19jbWRfYnVmZiksICIocHJvZ24gKGRieCBcImRieCAtcSAtYyBjb250ICVzICVsZFwiKSkiLCBkc2kuYmluYXJ5X3BhdGguYmVnaW4oKSwgZHNpLnBpZCApOwotCi0vLyAgICBzdGFydF9kZWJ1Z2dlcl9pbl9lbWFjcyggZHNpLCAiZW1hY3MiLCBkYmdfY21kX2J1ZmYgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc3RhdGljIHZvaWQKLXN0YXJ0X2RieF9pbl94ZW1hY3MoIGRiZ19zdGFydHVwX2luZm8gY29uc3QmICkKLXsKLSAgICAvLyAhISA/PwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zdGF0aWMgdm9pZAotc3RhcnRfZGJ4X2luX2RkZCggZGJnX3N0YXJ0dXBfaW5mbyBjb25zdCYgZHNpICkKLXsKLSAgICBjaGFyIGNvbnN0KiB0aXRsZSA9IHByZXBhcmVfd2luZG93X3RpdGxlKCBkc2kgKTsKLSAgICBpZiggIXRpdGxlICkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY2hhciBwaWRfYnVmZlsxNl07IC8vICEhID8/Ci0gICAgOjpzbnByaW50ZiggcGlkX2J1ZmYsIHNpemVvZihwaWRfYnVmZiksICIlbGQiLCBkc2kucGlkICk7Ci0gICAgCi0gICAgc2FmZV9leGVjbHAoICJkZGQiLCAiLWRpc3BsYXkiLCBkc2kuZGlzcGxheS5iZWdpbigpLAotICAgICAgICAgICAgICAgICAiLS1kYngiLCAiLXEiLCAiLWMiLCBwcmVwYXJlX2RieF9jbWRfbGluZSggZHNpLCBmYWxzZSApLCBkc2kuYmluYXJ5X3BhdGguYmVnaW4oKSwgcGlkX2J1ZmYsIDAgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgIGRlYnVnOjppbmZvX3QgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1zdGF0aWMgc3RydWN0IGluZm9fdCB7Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBpbmZvX3QoKTsKLQotICAgIC8vIFB1YmxpYyBwcm9wZXJ0aWVzCi0gICAgdW5pdF90ZXN0OjpyZWFkd3JpdGVfcHJvcGVydHk8c3RkOjpzdHJpbmc+ICBwX2RiZzsKLSAgICAKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBzdGQ6Om1hcDxzdGQ6OnN0cmluZyxkYmdfc3RhcnRlcj4gICAgICAgICAgIG1fZGJnX3N0YXJ0ZXJfcmVnOwotfSBzX2luZm87Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWluZm9fdDo6aW5mb190KCkKLXsKLSAgICBwX2RiZy52YWx1ZSA9IDo6Z2V0ZW52KCAiRElTUExBWSIgKQotICAgICAgICA/IHN0ZDo6c3RyaW5nKCBORE5CT09TVF9TVFJJTkdJWkUoIE5ETkJPT1NUX1RFU1RfR1VJX0RCRyApICkKLSAgICAgICAgOiBzdGQ6OnN0cmluZyggTkROQk9PU1RfU1RSSU5HSVpFKCBORE5CT09TVF9URVNUX0NOTF9EQkcgKSApOwotICAgICAgICAKLSAgICBtX2RiZ19zdGFydGVyX3JlZ1tzdGQ6OnN0cmluZygiZ2RiIildICAgICAgICAgICA9ICZzdGFydF9nZGJfaW5fY29uc29sZTsKLSAgICBtX2RiZ19zdGFydGVyX3JlZ1tzdGQ6OnN0cmluZygiZ2RiLWVtYWNzIildICAgICA9ICZzdGFydF9nZGJfaW5fZW1hY3M7Ci0gICAgbV9kYmdfc3RhcnRlcl9yZWdbc3RkOjpzdHJpbmcoImdkYi14dGVybSIpXSAgICAgPSAmc3RhcnRfZ2RiX2luX3h0ZXJtOwotICAgIG1fZGJnX3N0YXJ0ZXJfcmVnW3N0ZDo6c3RyaW5nKCJnZGIteGVtYWNzIildICAgID0gJnN0YXJ0X2dkYl9pbl94ZW1hY3M7Ci0KLSAgICBtX2RiZ19zdGFydGVyX3JlZ1tzdGQ6OnN0cmluZygiZGJ4IildICAgICAgICAgICA9ICZzdGFydF9kYnhfaW5fY29uc29sZTsKLSAgICBtX2RiZ19zdGFydGVyX3JlZ1tzdGQ6OnN0cmluZygiZGJ4LWVtYWNzIildICAgICA9ICZzdGFydF9kYnhfaW5fZW1hY3M7Ci0gICAgbV9kYmdfc3RhcnRlcl9yZWdbc3RkOjpzdHJpbmcoImRieC14dGVybSIpXSAgICAgPSAmc3RhcnRfZGJ4X2luX3h0ZXJtOwotICAgIG1fZGJnX3N0YXJ0ZXJfcmVnW3N0ZDo6c3RyaW5nKCJkYngteGVtYWNzIildICAgID0gJnN0YXJ0X2RieF9pbl94ZW1hY3M7Ci0gICAgbV9kYmdfc3RhcnRlcl9yZWdbc3RkOjpzdHJpbmcoImRieC1kZGQiKV0gICAgICAgPSAmc3RhcnRfZGJ4X2luX2RkZDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2VuZGlmCi0KLX0gLy8gbG9jYWwgbmFtZXNwYWNlCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgY2hlY2sgaWYgcHJvZ3JhbSBpcyBydW5uaW5nIHVuZGVyIGRlYnVnZ2VyICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotYm9vbAotdW5kZXJfZGVidWdnZXIoKQotewotI2lmIGRlZmluZWQoTkROQk9PU1RfV0lOMzJfQkFTRURfREVCVUcpIC8vICoqKioqKioqKioqKioqKioqKioqKioqIFdJTjMyCi0KLSAgICByZXR1cm4gISFzX2luZm8ubV9pc19kZWJ1Z2dlcl9wcmVzZW50ICYmIHNfaW5mby5tX2lzX2RlYnVnZ2VyX3ByZXNlbnQoKTsKLQotI2VsaWYgZGVmaW5lZChORE5CT09TVF9VTklYX0JBU0VEX0RFQlVHKSAvLyAqKioqKioqKioqKioqKioqKioqKioqIFVOSVgKLQotICAgIC8vICEhID8/IGNvdWxkL3Nob3VsZCB3ZSBjYWNoZSB0aGUgcmVzdWx0IHNvbWVob3c/Ci0gICAgY29uc3Rfc3RyaW5nICAgIGRiZ19saXN0ID0gTkROQk9PU1RfVEVTVF9TVFJJTkdJWkUoIE5ETkJPT1NUX1RFU1RfREJHX0xJU1QgKTsKLQotICAgIHBpZF90IHBpZCA9IDo6Z2V0cGlkKCk7Ci0KLSAgICB3aGlsZSggcGlkICE9IDAgKSB7Ci0gICAgICAgIHByb2Nlc3NfaW5mbyBwaSggcGlkICk7Ci0KLSAgICAgICAgLy8gISEgPz8gc2hvdWxkIHdlIHVzZSB0b2tlbml6ZXIgaGVyZSBpbnN0ZWFkPwotICAgICAgICBpZiggZGJnX2xpc3QuZmluZCggcGkuYmluYXJ5X25hbWUoKSApICE9IGNvbnN0X3N0cmluZzo6bnBvcyApCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICBwaWQgPSAocGkucGFyZW50X3BpZCgpID09IHBpZCA/IDAgOiBwaS5wYXJlbnRfcGlkKCkpOwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLQotI2Vsc2UgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIGRlZmF1bHQKLQotICAgIHJldHVybiBmYWxzZTsKLQotI2VuZGlmCi19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICBjYXVzZSBwcm9ncmFtIHRvIGJyZWFrIGV4ZWN1dGlvbiAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgIGluIGRlYnVnZ2VyIGF0IGNhbGwgcG9pbnQgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXZvaWQKLWRlYnVnZ2VyX2JyZWFrKCkKLXsKLSAgICAvLyAhISA/PyBhdXRvLXN0YXJ0IGRlYnVnZ2VyPwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9XSU4zMl9CQVNFRF9ERUJVRykgLy8gKioqKioqKioqKioqKioqKioqKioqKiogV0lOMzIKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPj0gMTMwMCkgICAgICAgICAgICAgICAgICAgICAgIHx8ICBcCi0gICAgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPj0gMykgJiYgIWRlZmluZWQoX19NSU5HVzMyX18pICAgfHwgIFwKLSAgICBkZWZpbmVkKF9fSU5URUxfQ09NUElMRVIpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0RFQlVHX0JSRUFLICAgIF9fZGVidWdicmVhawotI2Vsc2UKLSMgICBkZWZpbmUgTkROQk9PU1RfREVCVUdfQlJFQUsgICAgRGVidWdCcmVhawotI2VuZGlmCi0KLSNpZm5kZWYgX19NSU5HVzMyX18KLSAgICBpZiggIXVuZGVyX2RlYnVnZ2VyKCkgKSB7Ci0gICAgICAgIF9fdHJ5IHsKLSAgICAgICAgICAgIF9fdHJ5IHsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9ERUJVR19CUkVBSygpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgX19leGNlcHQoIFVuaGFuZGxlZEV4Y2VwdGlvbkZpbHRlcihHZXRFeGNlcHRpb25JbmZvcm1hdGlvbigpKSApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gVXNlciBvcHRlZCB0byBpZ25vcmUgdGhlIGJyZWFrcG9pbnQKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgX19leGNlcHQgKEVYQ0VQVElPTl9FWEVDVVRFX0hBTkRMRVIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIElmIHdlIGdvdCBoZXJlLCB0aGUgdXNlciBoYXMgcHVzaGVkIERlYnVnLiBEZWJ1Z2dlciBpcyBhbHJlYWR5IGF0dGFjaGVkIHRvIG91ciBwcm9jZXNzIGFuZCB3ZQotICAgICAgICAgICAgLy8gY29udGludWUgdG8gbGV0IHRoZSBhbm90aGVyIE5ETkJPT1NUX0RFQlVHX0JSRUFLIHRvIGJlIGNhbGxlZC4KLSAgICAgICAgfQotICAgIH0KLSNlbmRpZgotCi0gICAgTkROQk9PU1RfREVCVUdfQlJFQUsoKTsKLQotI2VsaWYgZGVmaW5lZChORE5CT09TVF9VTklYX0JBU0VEX0RFQlVHKSAvLyAqKioqKioqKioqKioqKioqKioqKioqIFVOSVgKLQotICAgIDo6a2lsbCggOjpnZXRwaWQoKSwgU0lHVFJBUCApOwotCi0jZWxzZSAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogZGVmYXVsdAotCi0jZW5kaWYKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgY29uc29sZSBkZWJ1Z2dlciBzZXR1cCAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9VTklYX0JBU0VEX0RFQlVHKSAvLyAqKioqKioqKioqKioqKioqKioqKioqKiogVU5JWAotCi1zdGQ6OnN0cmluZwotc2V0X2RlYnVnZ2VyKCB1bml0X3Rlc3Q6OmNvbnN0X3N0cmluZyBkYmdfaWQsIGRiZ19zdGFydGVyIHMgKQotewotICAgIHN0ZDo6c3RyaW5nIG9sZCA9IHNfaW5mby5wX2RiZzsKLQotICAgIGFzc2lnbl9vcCggc19pbmZvLnBfZGJnLnZhbHVlLCBkYmdfaWQsIDAgKTsKLQotICAgIGlmKCAhIXMgKQotICAgICAgICBzX2luZm8ubV9kYmdfc3RhcnRlcl9yZWdbc19pbmZvLnBfZGJnXSA9IHM7Ci0KLSAgICByZXR1cm4gb2xkOwotfQotCi0jZWxzZSAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogZGVmYXVsdAotCi1zdGQ6OnN0cmluZwotc2V0X2RlYnVnZ2VyKCB1bml0X3Rlc3Q6OmNvbnN0X3N0cmluZywgZGJnX3N0YXJ0ZXIgKQotewotICAgIHJldHVybiBzdGQ6OnN0cmluZygpOwotfQotCi0jZW5kaWYKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgIGF0dGFjaCBkZWJ1Z2dlciB0byB0aGUgY3VycmVudCBwcm9jZXNzICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1ib29sCi1hdHRhY2hfZGVidWdnZXIoIGJvb2wgYnJlYWtfb3JfY29udGludWUgKQotewotICAgIGlmKCB1bmRlcl9kZWJ1Z2dlcigpICkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9XSU4zMl9CQVNFRF9ERUJVRykgLy8gKioqKioqKioqKioqKioqKioqKioqKiogV0lOMzIKLQotICAgIGNvbnN0IGludCBNQVhfQ01EX0xJTkUgPSAyMDA7Ci0KLSAgICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLSAgICAvLyBEZWJ1Z2dlciAicmVhZHkiIGV2ZW50Ci0KLSAgICBTRUNVUklUWV9BVFRSSUJVVEVTIGF0dHI7Ci0gICAgYXR0ci5uTGVuZ3RoICAgICAgICAgICAgICAgID0gc2l6ZW9mKGF0dHIpOwotICAgIGF0dHIubHBTZWN1cml0eURlc2NyaXB0b3IgICA9IE5VTEw7Ci0gICAgYXR0ci5iSW5oZXJpdEhhbmRsZSAgICAgICAgID0gdHJ1ZTsKLQotICAgIC8vIG1hbnVhbCByZXNldHRhYmxlLCBpbml0aWFsbHkgbm9uIHNpZ25hbGVkLCB1bm5hbWVkIGV2ZW50LAotICAgIC8vIHRoYXQgd2lsbCBzaWduYWwgbWUgdGhhdCBkZWJ1Z2dlciBpbml0aWFsaXphdGlvbiBpcyBkb25lCi0gICAgSEFORExFIGRiZ19pbml0X2RvbmVfZXYgPSA6OkNyZWF0ZUV2ZW50KAotICAgICAgICAmYXR0ciwgICAgICAgICAgLy8gcG9pbnRlciB0byBzZWN1cml0eSBhdHRyaWJ1dGVzCi0gICAgICAgIHRydWUsICAgICAgICAgICAvLyBmbGFnIGZvciBtYW51YWwtcmVzZXQgZXZlbnQKLSAgICAgICAgZmFsc2UsICAgICAgICAgIC8vIGZsYWcgZm9yIGluaXRpYWwgc3RhdGUKLSAgICAgICAgTlVMTCAgICAgICAgICAgIC8vIHBvaW50ZXIgdG8gZXZlbnQtb2JqZWN0IG5hbWUKLSAgICApOwotCi0gICAgaWYoICFkYmdfaW5pdF9kb25lX2V2ICkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0gICAgLy8gRGVidWdnZXIgY29tbWFuZCBsaW5lIGZvcm1hdAotCi0gICAgSEtFWSByZWdfa2V5OwotCi0gICAgaWYoICFzX2luZm8ubV9yZWdfb3Blbl9rZXkgfHwgKCpzX2luZm8ubV9yZWdfb3Blbl9rZXkpKAotICAgICAgICAgICAgSEtFWV9MT0NBTF9NQUNISU5FLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFuZGxlIG9mIG9wZW4ga2V5Ci0gICAgICAgICAgICAiU29mdHdhcmVcXE1pY3Jvc29mdFxcV2luZG93cyBOVFxcQ3VycmVudFZlcnNpb25cXEFlRGVidWciLCAvLyBuYW1lIG9mIHN1YmtleSB0byBvcGVuCi0gICAgICAgICAgICAmcmVnX2tleSApICE9IEVSUk9SX1NVQ0NFU1MgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhZGRyZXNzIG9mIGhhbmRsZSBvZiBvcGVuIGtleQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBjaGFyICBmb3JtYXRbTUFYX0NNRF9MSU5FXTsKLSAgICBEV09SRCBmb3JtYXRfc2l6ZSA9IE1BWF9DTURfTElORTsKLSAgICBEV09SRCB0eXBlID0gUkVHX1NaOwotCi0gICAgaWYoICFzX2luZm8ubV9yZWdfcXVlcnlfdmFsdWUgfHwgKCpzX2luZm8ubV9yZWdfcXVlcnlfdmFsdWUpKAotICAgICAgICAgICAgcmVnX2tleSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFuZGxlIG9mIG9wZW4ga2V5Ci0gICAgICAgICAgICAiRGVidWdnZXIiLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyBuYW1lIG9mIHN1YmtleSB0byBxdWVyeQotICAgICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzZXJ2ZWQKLSAgICAgICAgICAgICZ0eXBlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlIHR5cGUKLSAgICAgICAgICAgIChMUEJZVEUpZm9ybWF0LCAgICAgICAgICAgICAgICAgICAgIC8vIGJ1ZmZlciBmb3IgcmV0dXJuZWQgc3RyaW5nCi0gICAgICAgICAgICAmZm9ybWF0X3NpemUgKSAhPSBFUlJPUl9TVUNDRVNTICkgICAvLyBpbjogYnVmZmVyIHNpemU7IG91dDogYWN0dWFsIHNpemUgb2YgcmV0dXJuZWQgc3RyaW5nCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmKCAhc19pbmZvLm1fcmVnX2Nsb3NlX2tleSB8fCAoKnNfaW5mby5tX3JlZ19jbG9zZV9rZXkpKCByZWdfa2V5ICkgIT0gRVJST1JfU1VDQ0VTUyApCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotICAgIC8vIERlYnVnZ2VyIGNvbW1hbmQgbGluZQotCi0gICAgY2hhciBjbWRfbGluZVtNQVhfQ01EX0xJTkVdOwotICAgIHN0ZDo6c3ByaW50ZiggY21kX2xpbmUsIGZvcm1hdCwgOjpHZXRDdXJyZW50UHJvY2Vzc0lkKCksIGRiZ19pbml0X2RvbmVfZXYgKTsKLQotICAgIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotICAgIC8vIERlYnVnZ2VyIHdpbmRvdyBwYXJhbWV0ZXJzCi0KLSAgICBTVEFSVFVQSU5GT0EgICAgc3RhcnR1cF9pbmZvOwotICAgIHN0ZDo6bWVtc2V0KCAmc3RhcnR1cF9pbmZvLCAwLCBzaXplb2Yoc3RhcnR1cF9pbmZvKSApOwotCi0gICAgc3RhcnR1cF9pbmZvLmNiICAgICAgICAgICAgID0gc2l6ZW9mKHN0YXJ0dXBfaW5mbyk7Ci0gICAgc3RhcnR1cF9pbmZvLmR3RmxhZ3MgICAgICAgID0gU1RBUlRGX1VTRVNIT1dXSU5ET1c7Ci0gICAgc3RhcnR1cF9pbmZvLndTaG93V2luZG93ICAgID0gU1dfU0hPV05PUk1BTDsKLQotICAgIC8vIGRlYnVnZ2VyIHByb2Nlc3Mgc19pbmZvCi0gICAgUFJPQ0VTU19JTkZPUk1BVElPTiBkZWJ1Z2dlcl9pbmZvOwotCi0gICAgYm9vbCBjcmVhdGVkID0gISE6OkNyZWF0ZVByb2Nlc3NBKAotICAgICAgICBOVUxMLCAgICAgICAgICAgLy8gcG9pbnRlciB0byBuYW1lIG9mIGV4ZWN1dGFibGUgbW9kdWxlOyBOVUxMIC0gdXNlIHRoZSBvbmUgaW4gY29tbWFuZCBsaW5lCi0gICAgICAgIGNtZF9saW5lLCAgICAgICAvLyBwb2ludGVyIHRvIGNvbW1hbmQgbGluZSBzdHJpbmcKLSAgICAgICAgTlVMTCwgICAgICAgICAgIC8vIHBvaW50ZXIgdG8gcHJvY2VzcyBzZWN1cml0eSBhdHRyaWJ1dGVzOyBOVUxMIC0gZGVidWdnZXIncyBoYW5kbGUgY2FuJ3QgYmUgaW5oZXJpdGVkCi0gICAgICAgIE5VTEwsICAgICAgICAgICAvLyBwb2ludGVyIHRvIHRocmVhZCBzZWN1cml0eSBhdHRyaWJ1dGVzOyBOVUxMIC0gZGVidWdnZXIncyBoYW5kbGUgY2FuJ3QgYmUgaW5oZXJpdGVkCi0gICAgICAgIHRydWUsICAgICAgICAgICAvLyBkZWJ1Z2dlciBpbmhlcml0IG9wZW5lZCBoYW5kbGVzCi0gICAgICAgIDAsICAgICAgICAgICAgICAvLyBwcmlvcml0eSBmbGFnczsgMCAtIG5vcm1hbCBwcmlvcml0eQotICAgICAgICBOVUxMLCAgICAgICAgICAgLy8gcG9pbnRlciB0byBuZXcgZW52aXJvbm1lbnQgYmxvY2s7IE5VTEwgLSB1c2UgdGhpcyBwcm9jZXNzIGVudmlyb25tZW50Ci0gICAgICAgIE5VTEwsICAgICAgICAgICAvLyBwb2ludGVyIHRvIGN1cnJlbnQgZGlyZWN0b3J5IG5hbWU7IE5VTEwgLSB1c2UgdGhpcyBwcm9jZXNzIGNvcnJlY3QgZGlyZWN0b3J5Ci0gICAgICAgICZzdGFydHVwX2luZm8sICAvLyBwb2ludGVyIHRvIFNUQVJUVVBJTkZPIHRoYXQgc3BlY2lmaWVzIG1haW4gd2luZG93IGFwcGVhcmFuY2UKLSAgICAgICAgJmRlYnVnZ2VyX2luZm8gIC8vIHBvaW50ZXIgdG8gUFJPQ0VTU19JTkZPUk1BVElPTiB0aGF0IHdpbGwgY29udGFpbiB0aGUgbmV3IHByb2Nlc3MgaWRlbnRpZmljYXRpb24KLSAgICApOwotCi0gICAgaWYoIGNyZWF0ZWQgKQotICAgICAgICA6OldhaXRGb3JTaW5nbGVPYmplY3QoIGRiZ19pbml0X2RvbmVfZXYsIElORklOSVRFICk7Ci0KLSAgICA6OkNsb3NlSGFuZGxlKCBkYmdfaW5pdF9kb25lX2V2ICk7Ci0KLSAgICBpZiggIWNyZWF0ZWQgKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiggYnJlYWtfb3JfY29udGludWUgKQotICAgICAgICBkZWJ1Z2dlcl9icmVhaygpOwotCi0gICAgcmV0dXJuIHRydWU7Ci0KLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfVU5JWF9CQVNFRF9ERUJVRykgLy8gKioqKioqKioqKioqKioqKioqKioqKiBVTklYCi0KLSAgICBjaGFyIGluaXRfZG9uZV9sb2NrX2ZuW10gPSAiL3RtcC9idGxfZGJnX2luaXRfZG9uZV9YWFhYWFgiOwotICAgIGZkX2hvbGRlciBpbml0X2RvbmVfbG9ja19mZCggOjpta3N0ZW1wKCBpbml0X2RvbmVfbG9ja19mbiApICk7Ci0KLSAgICBpZiggaW5pdF9kb25lX2xvY2tfZmQgPT0gLTEgKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgcGlkX3QgY2hpbGRfcGlkID0gZm9yaygpOwotCi0gICAgaWYoIGNoaWxkX3BpZCA9PSAtMSApCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmKCBjaGlsZF9waWQgIT0gMCApIHsgLy8gcGFyZW50IHByb2Nlc3MgLSBoZXJlIHdlIHdpbGwgc3RhcnQgdGhlIGRlYnVnZ2VyCi0gICAgICAgIGRiZ19zdGFydHVwX2luZm8gZHNpOwotICAgIAotICAgICAgICBwcm9jZXNzX2luZm8gcGkoIGNoaWxkX3BpZCApOwotICAgICAgICBpZiggcGkuYmluYXJ5X3BhdGgoKS5pc19lbXB0eSgpICkKLSAgICAgICAgICAgIDo6ZXhpdCggLTEgKTsKLQotICAgICAgICBkc2kucGlkICAgICAgICAgICAgICAgICA9IGNoaWxkX3BpZDsKLSAgICAgICAgZHNpLmJyZWFrX29yX2NvbnRpbnVlICAgPSBicmVha19vcl9jb250aW51ZTsKLSAgICAgICAgZHNpLmJpbmFyeV9wYXRoICAgICAgICAgPSBwaS5iaW5hcnlfcGF0aCgpOwotICAgICAgICBkc2kuZGlzcGxheSAgICAgICAgICAgICA9IDo6Z2V0ZW52KCAiRElTUExBWSIgKTsKLSAgICAgICAgZHNpLmluaXRfZG9uZV9sb2NrICAgICAgPSBpbml0X2RvbmVfbG9ja19mbjsKLSAgICAgICAgCi0gICAgICAgIGRiZ19zdGFydGVyIHN0YXJ0ZXIgPSBzX2luZm8ubV9kYmdfc3RhcnRlcl9yZWdbc19pbmZvLnBfZGJnXTsKLSAgICAgICAgaWYoICEhc3RhcnRlciApCi0gICAgICAgICAgICBzdGFydGVyKCBkc2kgKTsKLQotICAgICAgICA6OnBlcnJvciggIkJvb3N0LlRlc3QgZXhlY3V0aW9uIG1vbml0b3IgZmFpbGVkIHRvIHN0YXJ0IGEgZGVidWdnZXI6IiApOwotCi0gICAgICAgIDo6ZXhpdCggLTEgKTsKLSAgICB9Ci0KLSAgICAvLyBjaGlsZCBwcm9jZXNzIC0gaGVyZSB3ZSB3aWxsIGNvbnRpbnVlIG91ciB0ZXN0IG1vZHVsZSBleGVjdXRpb24gOyAvLyAhISA/PyBzaG91bGQgaXQgYmUgdmljZSB2ZXJzYQotCi0gICAgd2hpbGUoIDo6YWNjZXNzKCBpbml0X2RvbmVfbG9ja19mbiwgRl9PSyApID09IDAgKSB7Ci0gICAgICAgIHN0cnVjdCB0aW1ldmFsIHRvID0geyAwLCAxMDAgfTsKLQotICAgICAgICA6OnNlbGVjdCggMCwgMCwgMCwgMCwgJnRvICk7Ci0gICAgfQotCi0vLyAgICBjaGFyIGR1bW15OwotLy8gICAgd2hpbGUoIDo6cmVhZCggaW5pdF9kb25lX2xvY2tfZmQsICZkdW1teSwgc2l6ZW9mKGNoYXIpICkgPT0gMCApOwotCi0gICAgaWYoIGJyZWFrX29yX2NvbnRpbnVlICkKLSAgICAgICAgZGVidWdnZXJfYnJlYWsoKTsKLQotICAgIHJldHVybiB0cnVlOwotCi0jZWxzZSAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogZGVmYXVsdAotCi0gICAgcmV0dXJuIGZhbHNlOwotCi0jZW5kaWYKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgc3dpdGNoIG9uL29mZiBkZXRlY3QgbWVtb3J5IGxlYWtzIGZlYXR1cmUgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi12b2lkCi1kZXRlY3RfbWVtb3J5X2xlYWtzKCBib29sIG9uX29mZiApCi17Ci0gICAgdW5pdF90ZXN0Ojp1dF9kZXRhaWw6Omlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyggb25fb2ZmICk7Ci0KLSNpZmRlZiBORE5CT09TVF9NU19DUlRfQkFTRURfREVCVUcKLSAgICBpbnQgZmxhZ3MgPSBfQ3J0U2V0RGJnRmxhZyggX0NSVERCR19SRVBPUlRfRkxBRyApOwotCi0gICAgaWYoICFvbl9vZmYgKQotICAgICAgICBmbGFncyAmPSB+X0NSVERCR19MRUFLX0NIRUNLX0RGOwotICAgIGVsc2UgIHsKLSAgICAgICAgZmxhZ3MgfD0gX0NSVERCR19MRUFLX0NIRUNLX0RGOwotICAgICAgICBfQ3J0U2V0UmVwb3J0TW9kZShfQ1JUX1dBUk4sIF9DUlREQkdfTU9ERV9GSUxFKTsKLSAgICAgICAgX0NydFNldFJlcG9ydEZpbGUoX0NSVF9XQVJOLCBfQ1JUREJHX0ZJTEVfU1RET1VUKTsKLSAgICB9Ci0KLSAgICBfQ3J0U2V0RGJnRmxhZyAoIGZsYWdzICk7Ci0jZW5kaWYgLy8gTkROQk9PU1RfTVNfQ1JUX0JBU0VEX0RFQlVHCi19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgIGNhdXNlIHByb2dyYW0gdG8gYnJlYWsgZXhlY3V0aW9uIGluICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgIGRlYnVnZ2VyIGF0IHNwZWNpZmljIGFsbG9jYXRpb24gcG9pbnQgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXZvaWQKLWJyZWFrX21lbW9yeV9hbGxvYyggbG9uZyBtZW1fYWxsb2Nfb3JkZXJfbnVtICkKLXsKLSAgICB1bml0X3Rlc3Q6OnV0X2RldGFpbDo6aWdub3JlX3VudXNlZF92YXJpYWJsZV93YXJuaW5nKCBtZW1fYWxsb2Nfb3JkZXJfbnVtICk7Ci0KLSNpZmRlZiBORE5CT09TVF9NU19DUlRfQkFTRURfREVCVUcKLSAgICBfQ3J0U2V0QnJlYWtBbGxvYyggbWVtX2FsbG9jX29yZGVyX251bSApOwotI2VuZGlmIC8vIE5ETkJPT1NUX01TX0NSVF9CQVNFRF9ERUJVRwotfQotCi19IC8vIG5hbWVzcGFjZSBkZWJ1ZwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfREVCVUdfQVBJX0lQUF8xMTIwMDZHRVIKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvZXhjZXB0aW9uX3NhZmV0eS5pcHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9leGNlcHRpb25fc2FmZXR5LmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWMzNjM4NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9leGNlcHRpb25fc2FmZXR5LmlwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzNyArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogRmFjaWxpdGllcyB0byBwZXJmb3JtIGV4Y2VwdGlvbiBzYWZldHkgdGVzdHMKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfRVhFQ1VUSU9OX1NBRkVUWV9JUFBfMTEyMDA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfRVhFQ1VUSU9OX1NBRkVUWV9JUFBfMTEyMDA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9jb25maWcuaHBwPgotCi0jaWYgTkROQk9PU1RfVEVTVF9TVVBQT1JUX0lOVEVSQUNUSU9OX1RFU1RJTkcKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2dsb2JhbF90eXBlZGVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC91bml0X3Rlc3RfcGFyYW1ldGVycy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2NhbGxiYWNrLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3dyYXBfc3RyaW5nc3RyZWFtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2l0ZXJhdG9yL3Rva2VuX2l0ZXJhdG9yLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvaW50ZXJhY3Rpb25fYmFzZWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdGVzdF90b29scy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91bml0X3Rlc3RfbG9nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2ZyYW1ld29yay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC90ZXN0X29ic2VydmVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RlYnVnLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9sZXhpY2FsX2Nhc3QuaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDx2ZWN0b3I+Ci0jaW5jbHVkZSA8Y3N0ZGxpYj4KLSNpbmNsdWRlIDxtYXA+Ci0jaW5jbHVkZSA8aW9tYW5pcD4KLSNpbmNsdWRlIDxjY3R5cGU+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbGltaXRzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotdXNpbmcgbmFtZXNwYWNlIDo6bmRuYm9vc3Q6OnVuaXRfdGVzdDsKLSAKLW5hbWVzcGFjZSBpdGVzdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICBleGVjdXRpb25fcGF0aF9wb2ludCAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotZW51bSBleGVjX3BhdGhfcG9pbnRfdHlwZSB7IEVQUF9TQ09QRSwgRVBQX0VYQ0VQVCwgRVBQX0RFQ0lTSU9OLCBFUFBfQUxMT0MgfTsKLQotc3RydWN0IGV4ZWN1dGlvbl9wYXRoX3BvaW50IHsKLSAgICBleGVjdXRpb25fcGF0aF9wb2ludCggZXhlY19wYXRoX3BvaW50X3R5cGUgdCwgY29uc3Rfc3RyaW5nIGZpbGUsIHN0ZDo6c2l6ZV90IGxpbmVfbnVtICkKLSAgICA6IG1fdHlwZSggdCApCi0gICAgLCBtX2ZpbGVfbmFtZSggZmlsZSApCi0gICAgLCBtX2xpbmVfbnVtKCBsaW5lX251bSApCi0gICAge30KLQotICAgIGV4ZWNfcGF0aF9wb2ludF90eXBlICAgIG1fdHlwZTsKLSAgICBjb25zdF9zdHJpbmcgICAgICAgICAgICAgbV9maWxlX25hbWU7Ci0gICAgc3RkOjpzaXplX3QgICAgICAgICAgICAgbV9saW5lX251bTsKLQotICAgIC8vIEV4ZWN1dGlvbiBwYXRoIHBvaW50IHNwZWNpZmljCi0gICAgc3RydWN0IGRlY2lzaW9uX2RhdGEgewotICAgICAgICBib29sICAgICAgICAgICAgdmFsdWU7Ci0gICAgICAgIHVuc2lnbmVkICAgICAgICBmb3JjZWRfZXhjZXB0aW9uX3BvaW50OwotICAgIH07Ci0gICAgc3RydWN0IHNjb3BlX2RhdGEgewotICAgICAgICB1bnNpZ25lZCAgICAgICAgc2l6ZTsKLSAgICAgICAgY2hhciBjb25zdCogICAgIG5hbWU7Ci0gICAgfTsKLSAgICBzdHJ1Y3QgZXhjZXB0X2RhdGEgewotICAgICAgICBjaGFyIGNvbnN0KiAgICAgZGVzY3JpcHRpb247Ci0gICAgfTsKLSAgICBzdHJ1Y3QgYWxsb2NfZGF0YSB7Ci0gICAgICAgIHZvaWQqICAgICAgICAgICBwdHI7Ci0gICAgICAgIHN0ZDo6c2l6ZV90ICAgICBzaXplOwotICAgIH07Ci0KLSAgICB1bmlvbiB7Ci0gICAgICAgIHN0cnVjdCBkZWNpc2lvbl9kYXRhICAgIG1fZGVjaXNpb247Ci0gICAgICAgIHN0cnVjdCBzY29wZV9kYXRhICAgICAgIG1fc2NvcGU7Ci0gICAgICAgIHN0cnVjdCBleGNlcHRfZGF0YSAgICAgIG1fZXhjZXB0OwotICAgICAgICBzdHJ1Y3QgYWxsb2NfZGF0YSAgICAgICBtX2FsbG9jOwotICAgIH07Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgIGV4Y2VwdGlvbiBzYWZldHkgdGVzdCBpbXBsZW1lbnRhdGlvbiAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXN0cnVjdCBleGNlcHRpb25fc2FmZXR5X3Rlc3RlciA6IGl0ZXN0OjptYW5hZ2VyLCB0ZXN0X29ic2VydmVyIHsKLSAgICAvLyBoZWxwZXJzIHR5cGVzCi0gICAgc3RydWN0IHVuaXF1ZV9leGNlcHRpb24ge307Ci0KLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIGV4cGxpY2l0ICAgICAgICAgICAgZXhjZXB0aW9uX3NhZmV0eV90ZXN0ZXIoIGNvbnN0X3N0cmluZyB0ZXN0X25hbWUgKTsKLSAgICB+ZXhjZXB0aW9uX3NhZmV0eV90ZXN0ZXIoKTsKLQotICAgIC8vIGNoZWNrIGxhc3QgcnVuIGFuZCBwcmVwYXJlIGZvciBuZXh0Ci0gICAgYm9vbCAgICAgICAgICAgICAgICBuZXh0X2V4ZWN1dGlvbl9wYXRoKCk7Ci0KLSAgICAvLyBtZW1vcnkgdHJhY2tpbmcKLQotICAgIC8vIG1hbmFnZXIgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uCi0gICAgdmlydHVhbCB2b2lkICAgICAgICBleGNlcHRpb25fcG9pbnQoIGNvbnN0X3N0cmluZyBmaWxlLCBzdGQ6OnNpemVfdCBsaW5lX251bSwgY29uc3Rfc3RyaW5nIGRlc2NyaXB0aW9uICk7Ci0gICAgdmlydHVhbCBib29sICAgICAgICBkZWNpc2lvbl9wb2ludCggY29uc3Rfc3RyaW5nIGZpbGUsIHN0ZDo6c2l6ZV90IGxpbmVfbnVtICk7Ci0gICAgdmlydHVhbCB1bnNpZ25lZCAgICBlbnRlcl9zY29wZSggY29uc3Rfc3RyaW5nIGZpbGUsIHN0ZDo6c2l6ZV90IGxpbmVfbnVtLCBjb25zdF9zdHJpbmcgc2NvcGVfbmFtZSApOwotICAgIHZpcnR1YWwgdm9pZCAgICAgICAgbGVhdmVfc2NvcGUoIHVuc2lnbmVkIGVudGVyX3Njb3BlX3BvaW50ICk7Ci0gICAgdmlydHVhbCB2b2lkICAgICAgICBhbGxvY2F0ZWQoIGNvbnN0X3N0cmluZyBmaWxlLCBzdGQ6OnNpemVfdCBsaW5lX251bSwgdm9pZCogcCwgc3RkOjpzaXplX3QgcyApOwotICAgIHZpcnR1YWwgdm9pZCAgICAgICAgZnJlZWQoIHZvaWQqIHAgKTsKLQotICAgIC8vIHRlc3Qgb2JzZXJ2ZXIgaW50ZXJmYWNlCi0gICAgdmlydHVhbCB2b2lkICAgICAgICBhc3NlcnRpb25fcmVzdWx0KCBib29sIHBhc3NlZCApOwotICAgIHZpcnR1YWwgaW50ICAgICAgICAgcHJpb3JpdHkoKSB7IHJldHVybiAoc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgpKCk7IH0gLy8gd2Ugd2FudCB0aGlzIG9ic2VydmVyIHRvIHJ1biB0aGUgbGFzdAotCi1wcml2YXRlOgotICAgIHZvaWQgICAgICAgICAgICAgICAgZmFpbHVyZV9wb2ludCgpOwotICAgIHZvaWQgICAgICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCk7Ci0KLSAgICB0eXBlZGVmIHN0ZDo6dmVjdG9yPGV4ZWN1dGlvbl9wYXRoX3BvaW50PiAgIGV4ZWNfcGF0aDsKLSAgICB0eXBlZGVmIHN0ZDo6bWFwPHZvaWQqLHVuc2lnbmVkPiAgICAgICAgICAgIHJlZ2lzdHJ5OwotCi0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgYm9vbCAgICAgICAgbV9pbnRlcm5hbF9hY3Rpdml0eTsKLSAgICAKLSAgICB1bnNpZ25lZCAgICBtX2V4Y2VwdGlvbl9wb2ludF9jb3VudGVyOwotICAgIHVuc2lnbmVkICAgIG1fZm9yY2VkX2V4Y2VwdGlvbl9wb2ludDsKLQotICAgIHVuc2lnbmVkICAgIG1fZXhlY19wYXRoX3BvaW50OwotICAgIGV4ZWNfcGF0aCAgIG1fZXhlY3V0aW9uX3BhdGg7Ci0KLSAgICB1bnNpZ25lZCAgICBtX2V4ZWNfcGF0aF9jb3VudGVyOwotICAgIHVuc2lnbmVkICAgIG1fYnJlYWtfZXhlY19wYXRoOwotICAgIAotICAgIGJvb2wgICAgICAgIG1faW52YWlyYW50X2ZhaWxlZDsKLSAgICByZWdpc3RyeSAgICBtX21lbW9yeV9pbl91c2U7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zdHJ1Y3QgYWN0aXZpdHlfZ3VhcmQgewotICAgIGJvb2wmIG1fdjsKLQotICAgIGFjdGl2aXR5X2d1YXJkKCBib29sJiB2ICkgOiBtX3YoIHYgKSAgICB7IG1fdiA9IHRydWU7IH0KLSAgICB+YWN0aXZpdHlfZ3VhcmQoKSAgICAgICAgICAgICAgICAgICAgICAgeyBtX3YgPSBmYWxzZTsgfQotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotZXhjZXB0aW9uX3NhZmV0eV90ZXN0ZXI6OmV4Y2VwdGlvbl9zYWZldHlfdGVzdGVyKCBjb25zdF9zdHJpbmcgdGVzdF9uYW1lICkKLTogbV9pbnRlcm5hbF9hY3Rpdml0eSggdHJ1ZSApCi0sIG1fZXhjZXB0aW9uX3BvaW50X2NvdW50ZXIoIDAgKQotLCBtX2ZvcmNlZF9leGNlcHRpb25fcG9pbnQoIDEgKQotLCBtX2V4ZWNfcGF0aF9wb2ludCggMCApCi0sIG1fZXhlY19wYXRoX2NvdW50ZXIoIDEgKQotLCBtX2JyZWFrX2V4ZWNfcGF0aCggc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KC0xKSApCi0sIG1faW52YWlyYW50X2ZhaWxlZCggZmFsc2UgKQotewotICAgIGZyYW1ld29yazo6cmVnaXN0ZXJfb2JzZXJ2ZXIoICp0aGlzICk7Ci0KLSAgICBpZiggIXJ1bnRpbWVfY29uZmlnOjpicmVha19leGVjX3BhdGgoKS5pc19lbXB0eSgpICkgewotICAgICAgICB1c2luZyBuYW1lc3BhY2UgdW5pdF90ZXN0OwotICAgICAgICAKLSAgICAgICAgc3RyaW5nX3Rva2VuX2l0ZXJhdG9yIHRpdCggcnVudGltZV9jb25maWc6OmJyZWFrX2V4ZWNfcGF0aCgpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRyb3BwZWRfZGVsaW1ldGVycyA9ICI6IixrZXB0X2RlbGltZXRlcnMgPSAiICIpICk7Ci0gICAgICAgIAotICAgICAgICBjb25zdF9zdHJpbmcgdGVzdF90b19icmVhayA9ICp0aXQ7Ci0gICAgICAgIAotICAgICAgICBpZiggdGVzdF90b19icmVhayA9PSB0ZXN0X25hbWUgKSB7Ci0gICAgICAgICAgICArK3RpdDsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgbV9icmVha19leGVjX3BhdGggPSBsZXhpY2FsX2Nhc3Q8dW5zaWduZWQ+KCAqdGl0ICk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgbV9pbnRlcm5hbF9hY3Rpdml0eSA9IGZhbHNlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1leGNlcHRpb25fc2FmZXR5X3Rlc3Rlcjo6fmV4Y2VwdGlvbl9zYWZldHlfdGVzdGVyKCkKLXsKLSAgICBtX2ludGVybmFsX2FjdGl2aXR5ID0gdHJ1ZTsKLSAgICAKLSAgICBmcmFtZXdvcms6OmRlcmVnaXN0ZXJfb2JzZXJ2ZXIoICp0aGlzICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWJvb2wKLWV4Y2VwdGlvbl9zYWZldHlfdGVzdGVyOjpuZXh0X2V4ZWN1dGlvbl9wYXRoKCkKLXsKLSAgICBhY3Rpdml0eV9ndWFyZCBhZyggbV9pbnRlcm5hbF9hY3Rpdml0eSApOwotCi0gICAgLy8gY2hlY2sgbWVtb3J5IHVzYWdlCi0gICAgaWYoIG1fZXhlY3V0aW9uX3BhdGguc2l6ZSgpID4gMCApIHsKLSAgICAgICAgYm9vbCBlcnJvcnNfZGV0ZWN0ZWQgPSBtX2ludmFpcmFudF9mYWlsZWQgfHwgKG1fbWVtb3J5X2luX3VzZS5zaXplKCkgIT0gMCk7Ci0gICAgICAgIGZyYW1ld29yazo6YXNzZXJ0aW9uX3Jlc3VsdCggIWVycm9yc19kZXRlY3RlZCApOwotCi0gICAgICAgIGlmKCBlcnJvcnNfZGV0ZWN0ZWQgKQotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCk7Ci0KLSAgICAgICAgbV9tZW1vcnlfaW5fdXNlLmNsZWFyKCk7Ci0gICAgfQotCi0gICAgbV9leGVjX3BhdGhfcG9pbnQgICAgICAgICAgID0gMDsKLSAgICBtX2V4Y2VwdGlvbl9wb2ludF9jb3VudGVyICAgPSAwOwotICAgIG1faW52YWlyYW50X2ZhaWxlZCAgICAgICAgICA9IGZhbHNlOwotICAgICsrbV9leGVjX3BhdGhfY291bnRlcjsKLQotICAgIHdoaWxlKCBtX2V4ZWN1dGlvbl9wYXRoLnNpemUoKSA+IDAgKSB7Ci0gICAgICAgIHN3aXRjaCggbV9leGVjdXRpb25fcGF0aC5iYWNrKCkubV90eXBlICkgewotICAgICAgICBjYXNlIEVQUF9TQ09QRToKLSAgICAgICAgY2FzZSBFUFBfQUxMT0M6Ci0gICAgICAgICAgICBtX2V4ZWN1dGlvbl9wYXRoLnBvcF9iYWNrKCk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIEVQUF9ERUNJU0lPTjoKLSAgICAgICAgICAgIGlmKCAhbV9leGVjdXRpb25fcGF0aC5iYWNrKCkubV9kZWNpc2lvbi52YWx1ZSApIHsKLSAgICAgICAgICAgICAgICBtX2V4ZWN1dGlvbl9wYXRoLnBvcF9iYWNrKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIG1fZXhlY3V0aW9uX3BhdGguYmFjaygpLm1fZGVjaXNpb24udmFsdWUgPSBmYWxzZTsKLSAgICAgICAgICAgIG1fZm9yY2VkX2V4Y2VwdGlvbl9wb2ludCA9IG1fZXhlY3V0aW9uX3BhdGguYmFjaygpLm1fZGVjaXNpb24uZm9yY2VkX2V4Y2VwdGlvbl9wb2ludDsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIGNhc2UgRVBQX0VYQ0VQVDoKLSAgICAgICAgICAgIG1fZXhlY3V0aW9uX3BhdGgucG9wX2JhY2soKTsKLSAgICAgICAgICAgICsrbV9mb3JjZWRfZXhjZXB0aW9uX3BvaW50OwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBORE5CT09TVF9URVNUX01FU1NBR0UoICJUb3RhbCB0ZXN0ZWQgIiA8PCAtLW1fZXhlY19wYXRoX2NvdW50ZXIgPDwgIiBleGVjdXRpb24gcGF0aCIgKTsKLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotZXhjZXB0aW9uX3NhZmV0eV90ZXN0ZXI6OmV4Y2VwdGlvbl9wb2ludCggY29uc3Rfc3RyaW5nIGZpbGUsIHN0ZDo6c2l6ZV90IGxpbmVfbnVtLCBjb25zdF9zdHJpbmcgZGVzY3JpcHRpb24gKQotewotICAgIGFjdGl2aXR5X2d1YXJkIGFnKCBtX2ludGVybmFsX2FjdGl2aXR5ICk7Ci0KLSAgICBpZiggKyttX2V4Y2VwdGlvbl9wb2ludF9jb3VudGVyID09IG1fZm9yY2VkX2V4Y2VwdGlvbl9wb2ludCApIHsKLSAgICAgICAgbV9leGVjdXRpb25fcGF0aC5wdXNoX2JhY2soCi0gICAgICAgICAgICBleGVjdXRpb25fcGF0aF9wb2ludCggRVBQX0VYQ0VQVCwgZmlsZSwgbGluZV9udW0gKSApOwotCi0gICAgICAgIG1fZXhlY3V0aW9uX3BhdGguYmFjaygpLm1fZXhjZXB0LmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24uYmVnaW4oKTsKLQotICAgICAgICArK21fZXhlY19wYXRoX3BvaW50OwotCi0gICAgICAgIGZhaWx1cmVfcG9pbnQoKTsKLSAgICB9Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWJvb2wKLWV4Y2VwdGlvbl9zYWZldHlfdGVzdGVyOjpkZWNpc2lvbl9wb2ludCggY29uc3Rfc3RyaW5nIGZpbGUsIHN0ZDo6c2l6ZV90IGxpbmVfbnVtICkKLXsKLSAgICBhY3Rpdml0eV9ndWFyZCBhZyggbV9pbnRlcm5hbF9hY3Rpdml0eSApOwotCi0gICAgaWYoIG1fZXhlY19wYXRoX3BvaW50IDwgbV9leGVjdXRpb25fcGF0aC5zaXplKCkgKSB7Ci0gICAgICAgIE5ETkJPT1NUX1JFUVVJUkVfTUVTU0FHRSggbV9leGVjdXRpb25fcGF0aFttX2V4ZWNfcGF0aF9wb2ludF0ubV90eXBlID09IEVQUF9ERUNJU0lPTiAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZXhlY3V0aW9uX3BhdGhbbV9leGVjX3BhdGhfcG9pbnRdLm1fZmlsZV9uYW1lID09IGZpbGUgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2V4ZWN1dGlvbl9wYXRoW21fZXhlY19wYXRoX3BvaW50XS5tX2xpbmVfbnVtID09IGxpbmVfbnVtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGdW5jdGlvbiB1bmRlciB0ZXN0IGV4aWJpdCBub24tZGV0ZXJtaW5pc3RpYyBiZWhhdmlvciIgKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIG1fZXhlY3V0aW9uX3BhdGgucHVzaF9iYWNrKAotICAgICAgICAgICAgZXhlY3V0aW9uX3BhdGhfcG9pbnQoIEVQUF9ERUNJU0lPTiwgZmlsZSwgbGluZV9udW0gKSApOwotCi0gICAgICAgIG1fZXhlY3V0aW9uX3BhdGguYmFjaygpLm1fZGVjaXNpb24udmFsdWUgPSB0cnVlOwotICAgICAgICBtX2V4ZWN1dGlvbl9wYXRoLmJhY2soKS5tX2RlY2lzaW9uLmZvcmNlZF9leGNlcHRpb25fcG9pbnQgPSBtX2ZvcmNlZF9leGNlcHRpb25fcG9pbnQ7Ci0gICAgfQotCi0gICAgcmV0dXJuIG1fZXhlY3V0aW9uX3BhdGhbbV9leGVjX3BhdGhfcG9pbnQrK10ubV9kZWNpc2lvbi52YWx1ZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdW5zaWduZWQKLWV4Y2VwdGlvbl9zYWZldHlfdGVzdGVyOjplbnRlcl9zY29wZSggY29uc3Rfc3RyaW5nIGZpbGUsIHN0ZDo6c2l6ZV90IGxpbmVfbnVtLCBjb25zdF9zdHJpbmcgc2NvcGVfbmFtZSApCi17Ci0gICAgYWN0aXZpdHlfZ3VhcmQgYWcoIG1faW50ZXJuYWxfYWN0aXZpdHkgKTsKLQotICAgIGlmKCBtX2V4ZWNfcGF0aF9wb2ludCA8IG1fZXhlY3V0aW9uX3BhdGguc2l6ZSgpICkgewotICAgICAgICBORE5CT09TVF9SRVFVSVJFX01FU1NBR0UoIG1fZXhlY3V0aW9uX3BhdGhbbV9leGVjX3BhdGhfcG9pbnRdLm1fdHlwZSA9PSBFUFBfU0NPUEUgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2V4ZWN1dGlvbl9wYXRoW21fZXhlY19wYXRoX3BvaW50XS5tX2ZpbGVfbmFtZSA9PSBmaWxlICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9leGVjdXRpb25fcGF0aFttX2V4ZWNfcGF0aF9wb2ludF0ubV9saW5lX251bSA9PSBsaW5lX251bSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRnVuY3Rpb24gdW5kZXIgdGVzdCBleGliaXQgbm9uLWRldGVybWluaXN0aWMgYmVoYXZpb3IiICk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBtX2V4ZWN1dGlvbl9wYXRoLnB1c2hfYmFjaygKLSAgICAgICAgICAgIGV4ZWN1dGlvbl9wYXRoX3BvaW50KCBFUFBfU0NPUEUsIGZpbGUsIGxpbmVfbnVtICkgKTsKLSAgICB9Ci0KLSAgICBtX2V4ZWN1dGlvbl9wYXRoW21fZXhlY19wYXRoX3BvaW50XS5tX3Njb3BlLnNpemUgPSAwOwotICAgIG1fZXhlY3V0aW9uX3BhdGhbbV9leGVjX3BhdGhfcG9pbnRdLm1fc2NvcGUubmFtZSA9IHNjb3BlX25hbWUuYmVnaW4oKTsKLQotICAgIHJldHVybiBtX2V4ZWNfcGF0aF9wb2ludCsrOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1leGNlcHRpb25fc2FmZXR5X3Rlc3Rlcjo6bGVhdmVfc2NvcGUoIHVuc2lnbmVkIGVudGVyX3Njb3BlX3BvaW50ICkKLXsKLSAgICBhY3Rpdml0eV9ndWFyZCBhZyggbV9pbnRlcm5hbF9hY3Rpdml0eSApOwotCi0gICAgTkROQk9PU1RfUkVRVUlSRV9NRVNTQUdFKCBtX2V4ZWN1dGlvbl9wYXRoW2VudGVyX3Njb3BlX3BvaW50XS5tX3R5cGUgPT0gRVBQX1NDT1BFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1bmN0aW9uIHVuZGVyIHRlc3QgZXhpYml0IG5vbi1kZXRlcm1pbmlzdGljIGJlaGF2aW9yIiApOwotCi0gICAgbV9leGVjdXRpb25fcGF0aFtlbnRlcl9zY29wZV9wb2ludF0ubV9zY29wZS5zaXplID0gbV9leGVjX3BhdGhfcG9pbnQgLSBlbnRlcl9zY29wZV9wb2ludDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotZXhjZXB0aW9uX3NhZmV0eV90ZXN0ZXI6OmFsbG9jYXRlZCggY29uc3Rfc3RyaW5nIGZpbGUsIHN0ZDo6c2l6ZV90IGxpbmVfbnVtLCB2b2lkKiBwLCBzdGQ6OnNpemVfdCBzICkKLXsKLSAgICBpZiggbV9pbnRlcm5hbF9hY3Rpdml0eSApCi0gICAgICAgIHJldHVybjsKLQotICAgIGFjdGl2aXR5X2d1YXJkIGFnKCBtX2ludGVybmFsX2FjdGl2aXR5ICk7Ci0KLSAgICBpZiggbV9leGVjX3BhdGhfcG9pbnQgPCBtX2V4ZWN1dGlvbl9wYXRoLnNpemUoKSApCi0gICAgICAgIE5ETkJPT1NUX1JFUVVJUkVfTUVTU0FHRSggbV9leGVjdXRpb25fcGF0aFttX2V4ZWNfcGF0aF9wb2ludF0ubV90eXBlID09IEVQUF9BTExPQywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRnVuY3Rpb24gdW5kZXIgdGVzdCBleGliaXQgbm9uLWRldGVybWluaXN0aWMgYmVoYXZpb3IiICk7Ci0gICAgZWxzZQotICAgICAgICBtX2V4ZWN1dGlvbl9wYXRoLnB1c2hfYmFjaygKLSAgICAgICAgICAgIGV4ZWN1dGlvbl9wYXRoX3BvaW50KCBFUFBfQUxMT0MsIGZpbGUsIGxpbmVfbnVtICkgKTsKLQotICAgIG1fZXhlY3V0aW9uX3BhdGhbbV9leGVjX3BhdGhfcG9pbnRdLm1fYWxsb2MucHRyICA9IHA7Ci0gICAgbV9leGVjdXRpb25fcGF0aFttX2V4ZWNfcGF0aF9wb2ludF0ubV9hbGxvYy5zaXplID0gczsKLQotICAgIG1fbWVtb3J5X2luX3VzZS5pbnNlcnQoIHN0ZDo6bWFrZV9wYWlyKCBwLCBtX2V4ZWNfcGF0aF9wb2ludCsrICkgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotZXhjZXB0aW9uX3NhZmV0eV90ZXN0ZXI6OmZyZWVkKCB2b2lkKiBwICkKLXsKLSAgICBpZiggbV9pbnRlcm5hbF9hY3Rpdml0eSApCi0gICAgICAgIHJldHVybjsKLQotICAgIGFjdGl2aXR5X2d1YXJkIGFnKCBtX2ludGVybmFsX2FjdGl2aXR5ICk7Ci0KLSAgICByZWdpc3RyeTo6aXRlcmF0b3IgaXQgPSBtX21lbW9yeV9pbl91c2UuZmluZCggcCApOwotICAgIGlmKCBpdCAhPSBtX21lbW9yeV9pbl91c2UuZW5kKCkgKSB7Ci0gICAgICAgIG1fZXhlY3V0aW9uX3BhdGhbaXQtPnNlY29uZF0ubV9hbGxvYy5wdHIgPSAwOwotICAgICAgICBtX21lbW9yeV9pbl91c2UuZXJhc2UoIGl0ICk7Ci0gICAgfQotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1leGNlcHRpb25fc2FmZXR5X3Rlc3Rlcjo6YXNzZXJ0aW9uX3Jlc3VsdCggYm9vbCBwYXNzZWQgKQotewotICAgIGlmKCAhbV9pbnRlcm5hbF9hY3Rpdml0eSAmJiAhcGFzc2VkICkgewotICAgICAgICBtX2ludmFpcmFudF9mYWlsZWQgPSB0cnVlOwotCi0gICAgICAgIGZhaWx1cmVfcG9pbnQoKTsKLSAgICB9Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLWV4Y2VwdGlvbl9zYWZldHlfdGVzdGVyOjpmYWlsdXJlX3BvaW50KCkKLXsKLSAgICBpZiggbV9leGVjX3BhdGhfY291bnRlciA9PSBtX2JyZWFrX2V4ZWNfcGF0aCApCi0gICAgICAgIGRlYnVnOjpkZWJ1Z2dlcl9icmVhaygpOwotICAgIAotICAgIHRocm93IHVuaXF1ZV9leGNlcHRpb24oKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLSAgICAKLW5hbWVzcGFjZSB7Ci0KLWlubGluZSB2b2lkCi1mb3JtYXRfbG9jYXRpb24oIHdyYXBfc3RyaW5nc3RyZWFtJiBmb3JtYXR0ZXIsIGV4ZWN1dGlvbl9wYXRoX3BvaW50IGNvbnN0JiAvKnAqLywgdW5zaWduZWQgaW5kZW50ICkKLXsKLSAgICBpZiggaW5kZW50ICkKLSAgICAgICAgZm9ybWF0dGVyIDw8IHN0ZDo6bGVmdCA8PCBzdGQ6OnNldHcoIGluZGVudCApIDw8ICIiOwotCi0vLyAhISA/PyBvcHRpb25hbCAgIGlmKCBwLm1fZmlsZV9uYW1lICkKLS8vICAgICAgICBmb3JtYXR0ZXIgPDwgcC5tX2ZpbGVfbmFtZSA8PCAnKCcgPDwgcC5tX2xpbmVfbnVtIDw8ICIpOiAiOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBFeGVjUGF0aEl0PgotaW5saW5lIHZvaWQKLWZvcm1hdF9leGVjdXRpb25fcGF0aCggd3JhcF9zdHJpbmdzdHJlYW0mIGZvcm1hdHRlciwgRXhlY1BhdGhJdCBpdCwgRXhlY1BhdGhJdCBlbmQsIHVuc2lnbmVkIGluZGVudCA9IDAgKQotewotICAgIHdoaWxlKCBpdCAhPSBlbmQgKSB7Ci0gICAgICAgIHN3aXRjaCggaXQtPm1fdHlwZSApIHsKLSAgICAgICAgY2FzZSBFUFBfU0NPUEU6Ci0gICAgICAgICAgICBmb3JtYXRfbG9jYXRpb24oIGZvcm1hdHRlciwgKml0LCBpbmRlbnQgKTsKLSAgICAgICAgICAgIGZvcm1hdHRlciA8PCAiPiBcIiIgPDwgaXQtPm1fc2NvcGUubmFtZSA8PCAiXCJcbiI7Ci0gICAgICAgICAgICBmb3JtYXRfZXhlY3V0aW9uX3BhdGgoIGZvcm1hdHRlciwgaXQrMSwgaXQgKyBpdC0+bV9zY29wZS5zaXplLCBpbmRlbnQgKyAyICk7Ci0gICAgICAgICAgICBmb3JtYXRfbG9jYXRpb24oIGZvcm1hdHRlciwgKml0LCBpbmRlbnQgKTsKLSAgICAgICAgICAgIGZvcm1hdHRlciA8PCAiPCBcIiIgPDwgaXQtPm1fc2NvcGUubmFtZSA8PCAiXCJcbiI7Ci0gICAgICAgICAgICBpdCArPSBpdC0+bV9zY29wZS5zaXplOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBFUFBfREVDSVNJT046Ci0gICAgICAgICAgICBmb3JtYXRfbG9jYXRpb24oIGZvcm1hdHRlciwgKml0LCBpbmRlbnQgKTsKLSAgICAgICAgICAgIGZvcm1hdHRlciA8PCAiRGVjaXNpb24gbWFkZSBhcyAiIDw8IHN0ZDo6Ym9vbGFscGhhIDw8IGl0LT5tX2RlY2lzaW9uLnZhbHVlIDw8ICdcbic7Ci0gICAgICAgICAgICArK2l0OwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBFUFBfRVhDRVBUOgotICAgICAgICAgICAgZm9ybWF0X2xvY2F0aW9uKCBmb3JtYXR0ZXIsICppdCwgaW5kZW50ICk7Ci0gICAgICAgICAgICBmb3JtYXR0ZXIgPDwgIkZvcmNlZCBmYWlsdXJlIjsKLSAgICAgICAgICAgIGlmKCBpdC0+bV9leGNlcHQuZGVzY3JpcHRpb24gKQotICAgICAgICAgICAgICAgIGZvcm1hdHRlciA8PCAiOiAiIDw8IGl0LT5tX2V4Y2VwdC5kZXNjcmlwdGlvbjsKLSAgICAgICAgICAgIGZvcm1hdHRlciA8PCAiXG4iOwotICAgICAgICAgICAgKytpdDsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgRVBQX0FMTE9DOgotICAgICAgICAgICAgaWYoIGl0LT5tX2FsbG9jLnB0ciApIHsKLSAgICAgICAgICAgICAgICBmb3JtYXRfbG9jYXRpb24oIGZvcm1hdHRlciwgKml0LCBpbmRlbnQgKTsKLSAgICAgICAgICAgICAgICBmb3JtYXR0ZXIgPDwgIkFsbG9jYXRlZCBtZW1vcnkgYmxvY2sgMHgiIDw8IHN0ZDo6dXBwZXJjYXNlIDw8IGl0LT5tX2FsbG9jLnB0ciAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiwgIiA8PCBpdC0+bV9hbGxvYy5zaXplIDw8ICIgYnl0ZXMgbG9uZzogPCI7Ci0KLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBpOwotICAgICAgICAgICAgICAgIGZvciggaSA9IDA7IGkgPCBzdGQ6Om1pbjxzdGQ6OnNpemVfdD4oIGl0LT5tX2FsbG9jLnNpemUsIDggKTsgaSsrICkgewotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oaXQtPm1fYWxsb2MucHRyKVtpXTsKLSAgICAgICAgICAgICAgICAgICAgaWYoIChzdGQ6OmlzcHJpbnQpKCBjICkgKQotICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyIDw8IGM7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlciA8PCAnLic7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgZm9ybWF0dGVyIDw8ICI+ICI7Ci0KLSAgICAgICAgICAgICAgICBmb3IoIGkgPSAwOyBpIDwgc3RkOjptaW48c3RkOjpzaXplX3Q+KCBpdC0+bV9hbGxvYy5zaXplLCA4ICk7IGkrKyApIHsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihpdC0+bV9hbGxvYy5wdHIpW2ldOwotICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZXIgPDwgc3RkOjpoZXggPDwgc3RkOjp1cHBlcmNhc2UgPDwgYyA8PCAnICc7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgZm9ybWF0dGVyIDw8ICJcbiI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICArK2l0OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbG9jYWwgbmFtZXNwYWNlCi0KLXZvaWQKLWV4Y2VwdGlvbl9zYWZldHlfdGVzdGVyOjpyZXBvcnRfZXJyb3IoKQotewotICAgIGFjdGl2aXR5X2d1YXJkIGFnKCBtX2ludGVybmFsX2FjdGl2aXR5ICk7Ci0KLSAgICB1bml0X3Rlc3RfbG9nIDw8IHVuaXRfdGVzdDo6bG9nOjpiZWdpbiggbV9leGVjdXRpb25fcGF0aC5iYWNrKCkubV9maWxlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZXhlY3V0aW9uX3BhdGguYmFjaygpLm1fbGluZV9udW0gKQotICAgICAgICAgICAgICAgICAgPDwgbG9nX2FsbF9lcnJvcnM7Ci0KLSAgICB3cmFwX3N0cmluZ3N0cmVhbSBmb3JtYXR0ZXI7Ci0KLSAgICBpZiggbV9pbnZhaXJhbnRfZmFpbGVkICkKLSAgICAgICAgZm9ybWF0dGVyIDw8ICJGYWlsZWQgaW52YXJpYW50IjsKLQotICAgIGlmKCBtX21lbW9yeV9pbl91c2Uuc2l6ZSgpICE9IDAgKSB7Ci0gICAgICAgIGlmKCBtX2ludmFpcmFudF9mYWlsZWQgKQotICAgICAgICAgICAgZm9ybWF0dGVyIDw8ICIgYW5kICI7Ci0KLSAgICAgICAgZm9ybWF0dGVyIDw8IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4obV9tZW1vcnlfaW5fdXNlLnNpemUoKSkgPDwgIiBtZW1vcnkgbGVhayI7Ci0gICAgICAgIGlmKCBtX21lbW9yeV9pbl91c2Uuc2l6ZSgpID4gMSApCi0gICAgICAgICAgICBmb3JtYXR0ZXIgPDwgJ3MnOwotICAgIH0KLSAgICBmb3JtYXR0ZXIgPDwgIiBkZXRlY3RlZCBpbiB0aGUgZXhlY3V0aW9uIHBhdGggIiA8PCBtX2V4ZWNfcGF0aF9jb3VudGVyIDw8ICI6XG4iOwotCi0gICAgZm9ybWF0X2V4ZWN1dGlvbl9wYXRoKCBmb3JtYXR0ZXIsIG1fZXhlY3V0aW9uX3BhdGguYmVnaW4oKSwgbV9leGVjdXRpb25fcGF0aC5lbmQoKSApOwotCi0gICAgdW5pdF90ZXN0X2xvZyA8PCBjb25zdF9zdHJpbmcoIGZvcm1hdHRlci5zdHIoKSApIDw8IHVuaXRfdGVzdDo6bG9nOjplbmQoKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgIGV4Y2VwdGlvbiBzYWZldHkgdGVzdCAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi12b2lkIE5ETkJPT1NUX1RFU1RfREVDTAotZXhjZXB0aW9uX3NhZmV0eSggY2FsbGJhY2swPD4gY29uc3QmIEYsIGNvbnN0X3N0cmluZyB0ZXN0X25hbWUgKQotewotICAgIGV4Y2VwdGlvbl9zYWZldHlfdGVzdGVyIGVzdCggdGVzdF9uYW1lICk7Ci0KLSAgICBkbyB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBGKCk7Ci0gICAgICAgIH0KLSAgICAgICAgY2F0Y2goIGV4Y2VwdGlvbl9zYWZldHlfdGVzdGVyOjp1bmlxdWVfZXhjZXB0aW9uIGNvbnN0JiApIHt9Ci0KLSAgICB9IHdoaWxlKCBlc3QubmV4dF9leGVjdXRpb25fcGF0aCgpICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gIC8vIG5hbWVzcGFjZSBpdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIG5vbi1hbmNpZW50IGNvbXBpbGVyCi0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX0VYRUNVVElPTl9TQUZFVFlfSVBQXzExMjAwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvZXhlY3V0aW9uX21vbml0b3IuaXBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvZXhlY3V0aW9uX21vbml0b3IuaXBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MTU5OTNmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL2V4ZWN1dGlvbl9tb25pdG9yLmlwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzNjcgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwMS0yMDA4LgotLy8gIChDKSBDb3B5cmlnaHQgQmVtYW4gRGF3ZXMgYW5kIFVsbHJpY2ggS29ldGhlIDE5OTUtMjAwMS4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU3OTkyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBwcm92aWRlcyBleGVjdXRpb24gbW9uaXRvciBpbXBsZW1lbnRhdGlvbiBmb3IgYWxsIHN1cHBvcnRlZAotLy8gIGNvbmZpZ3VyYXRpb25zLCBpbmNsdWRpbmcgTWljcm9zb2Z0IHN0cnVjdHVyZWQgZXhjZXB0aW9uIGJhc2VkLCB1bml4IHNpZ25hbHMKLS8vICBiYXNlZCBhbmQgc3BlY2lhbCB3b3JrYXJvdW5kcyBmb3IgYm9ybGFuZAotLy8KLS8vICBOb3RlIHRoYXQgd2hlbiB0ZXN0aW5nIHJlcXVpcmVtZW50cyBvciB1c2VyIHdpc2hlcyBwcmVjbHVkZSB1c2Ugb2YgdGhpcwotLy8gIGZpbGUgYXMgYSBzZXBhcmF0ZSBjb21waWxhdGlvbiB1bml0LCBpdCBtYXkgYmUgaW5jbHVkZWQgYXMgYSBoZWFkZXIgZmlsZS4KLS8vCi0vLyAgSGVhZGVyIGRlcGVuZGVuY2llcyBhcmUgZGVsaWJlcmF0ZWx5IHJlc3RyaWN0ZWQgdG8gcmVkdWNlIGNvdXBsaW5nIHRvIG90aGVyCi0vLyAgYm9vc3QgbGlicmFyaWVzLgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9FWEVDVVRJT05fTU9OSVRPUl9JUFBfMDEyMjA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfRVhFQ1VUSU9OX01PTklUT1JfSVBQXzAxMjIwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2V4ZWN1dGlvbl9tb25pdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RlYnVnLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9jc3RkbGliLmhwcD4gICAgLy8gZm9yIGV4aXQgY29kZXMKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgICAgLy8gZm9yIHdvcmthcm91bmRzCi0jaW5jbHVkZSA8bmRuYm9vc3QvZXhjZXB0aW9uL2dldF9lcnJvcl9pbmZvLmhwcD4gLy8gZm9yIGdldF9lcnJvcl9pbmZvCi0jaW5jbHVkZSA8bmRuYm9vc3QvZXhjZXB0aW9uL2N1cnJlbnRfZXhjZXB0aW9uX2Nhc3QuaHBwPiAvLyBmb3IgY3VycmVudF9leGNlcHRpb25fY2FzdAotCi0vLyBTVEwKLSNpbmNsdWRlIDxzdHJpbmc+ICAgICAgICAgICAgICAgLy8gZm9yIHN0ZDo6c3RyaW5nCi0jaW5jbHVkZSA8bmV3PiAgICAgICAgICAgICAgICAgIC8vIGZvciBzdGQ6OmJhZF9hbGxvYwotI2luY2x1ZGUgPHR5cGVpbmZvPiAgICAgICAgICAgICAvLyBmb3Igc3RkOjpiYWRfY2FzdCwgc3RkOjpiYWRfdHlwZWlkCi0jaW5jbHVkZSA8ZXhjZXB0aW9uPiAgICAgICAgICAgIC8vIGZvciBzdGQ6OmV4Y2VwdGlvbiwgc3RkOjpiYWRfZXhjZXB0aW9uCi0jaW5jbHVkZSA8c3RkZXhjZXB0PiAgICAgICAgICAgIC8vIGZvciBzdGQgZXhjZXB0aW9uIGhpZXJhcmNoeQotI2luY2x1ZGUgPGNzdHJpbmc+ICAgICAgICAgICAgICAvLyBmb3IgQyBzdHJpbmcgQVBJCi0jaW5jbHVkZSA8Y2Fzc2VydD4gICAgICAgICAgICAgIC8vIGZvciBhc3NlcnQKLSNpbmNsdWRlIDxjc3RkZGVmPiAgICAgICAgICAgICAgLy8gZm9yIE5VTEwKLSNpbmNsdWRlIDxjc3RkaW8+ICAgICAgICAgICAgICAgLy8gZm9yIHZzbnByaW50ZgotI2luY2x1ZGUgPGNzdGRhcmc+ICAgICAgICAgICAgICAvLyBmb3IgdmFyYXJncwotCi0jaWZkZWYgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UKLW5hbWVzcGFjZSBzdGQgeyB1c2luZyA6OnN0cmVycm9yOyB1c2luZyA6OnN0cmxlbjsgdXNpbmcgOjpzdHJuY2F0OyB9Ci0jZW5kaWYKLQotLy8gdG8gdXNlIHZzbnByaW50ZgotI2lmIGRlZmluZWQoX19TVU5QUk9fQ0MpIHx8IGRlZmluZWQoX19TdW5PUykKLSMgIGluY2x1ZGUgPHN0ZGlvLmg+Ci0jICBpbmNsdWRlIDxzdGRhcmcuaD4KLXVzaW5nIHN0ZDo6dmFfbGlzdDsKLSNlbmRpZgotCi0vLyB0byB1c2UgdnNucHJpbnRmIAotI2lmIGRlZmluZWQoX19RTlhOVE9fXykgCi0jICBpbmNsdWRlIDxzdGRpby5oPiAKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKE5ETkJPT1NUX0RJU0FCTEVfV0lOMzIpICYmICAgICAgICAgICAgICAgICAgXAotICAgICghZGVmaW5lZChfX0NPTU9fXykgJiYgIWRlZmluZWQoX19NV0VSS1NfXykgJiYgIWRlZmluZWQoX19HTlVDX18pIHx8IFwKLSAgICAgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCA+PSAweDMwMDApKQotCi0jICBkZWZpbmUgTkROQk9PU1RfU0VIX0JBU0VEX1NJR05BTF9IQU5ETElORwotCi0jICBpbmNsdWRlIDx3aW5kb3dzLmg+Ci0KLSMgIGlmIGRlZmluZWQoX19NV0VSS1NfXykgfHwgKGRlZmluZWQoX01TQ19WRVIpICYmICFkZWZpbmVkKFVOREVSX0NFKSkKLSMgICAgaW5jbHVkZSA8ZWguaD4KLSMgIGVuZGlmCi0KLSMgIGlmIGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiBfX0JPUkxBTkRDX18gPj0gMHg1NjAgfHwgZGVmaW5lZChfX01XRVJLU19fKQotIyAgICBpbmNsdWRlIDxzdGRpbnQuaD4KLSMgIGVuZGlmCi0KLSMgIGlmIGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiBfX0JPUkxBTkRDX18gPCAweDU2MAotICAgIHR5cGVkZWYgdW5zaWduZWQgdWludHB0cl90OwotIyAgZW5kaWYKLQotIyAgaWYgTkROQk9PU1RfV09SS0FST1VORChfTVNDX1ZFUiwgIDwgMTMwMCApIHx8IGRlZmluZWQoVU5ERVJfQ0UpCi10eXBlZGVmIHZvaWQqIHVpbnRwdHJfdDsKLSMgIGVuZGlmCi0KLS8vIGZvciB0aGUgRlAgY29udHJvbCByb3V0aW5lcwotI2luY2x1ZGUgPGZsb2F0Lmg+Ci0KLSNpZm5kZWYgRU1fSU5WQUxJRAotI2RlZmluZSBFTV9JTlZBTElEIF9FTV9JTlZBTElECi0jZW5kaWYKLQotI2lmbmRlZiBFTV9ERU5PUk1BTAotI2RlZmluZSBFTV9ERU5PUk1BTCBfRU1fREVOT1JNQUwKLSNlbmRpZgotCi0jaWZuZGVmIEVNX1pFUk9ESVZJREUKLSNkZWZpbmUgRU1fWkVST0RJVklERSBfRU1fWkVST0RJVklERQotI2VuZGlmCi0KLSNpZm5kZWYgRU1fT1ZFUkZMT1cKLSNkZWZpbmUgRU1fT1ZFUkZMT1cgX0VNX09WRVJGTE9XCi0jZW5kaWYKLQotI2lmbmRlZiBFTV9VTkRFUkZMT1cKLSNkZWZpbmUgRU1fVU5ERVJGTE9XIF9FTV9VTkRFUkZMT1cKLSNlbmRpZgotCi0jaWZuZGVmIE1DV19FTQotI2RlZmluZSBNQ1dfRU0gX01DV19FTQotI2VuZGlmCi0KLSMgIGlmICFkZWZpbmVkKE5ERUJVRykgJiYgZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRlZmluZWQoVU5ERVJfQ0UpCi0jICAgIGluY2x1ZGUgPGNydGRiZy5oPgotIyAgICBkZWZpbmUgTkROQk9PU1RfVEVTVF9DUlRfSE9PS19UWVBFICAgIF9DUlRfUkVQT1JUX0hPT0sKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfQ1JUX0FTU0VSVCAgICAgICBfQ1JUX0FTU0VSVAotIyAgICBkZWZpbmUgTkROQk9PU1RfVEVTVF9DUlRfRVJST1IgICAgICAgIF9DUlRfRVJST1IKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfQ1JUX1NFVF9IT09LKEgpICBfQ3J0U2V0UmVwb3J0SG9vayhIKQotIyAgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfVEVTVF9DUlRfSE9PS19UWVBFICAgIHZvaWQqCi0jICAgIGRlZmluZSBORE5CT09TVF9URVNUX0NSVF9BU1NFUlQgICAgICAgMgotIyAgICBkZWZpbmUgTkROQk9PU1RfVEVTVF9DUlRfRVJST1IgICAgICAgIDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfQ1JUX1NFVF9IT09LKEgpICAodm9pZCopKEgpCi0jICBlbmRpZgotCi0jICBpZiAhTkROQk9PU1RfV09SS0FST1VORChfTVNDX1ZFUiwgID49IDE0MDAgKSB8fCBkZWZpbmVkKFVOREVSX0NFKQotCi10eXBlZGVmIHZvaWQqIF9pbnZhbGlkX3BhcmFtZXRlcl9oYW5kbGVyOwotCi1pbmxpbmUgX2ludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXIKLV9zZXRfaW52YWxpZF9wYXJhbWV0ZXJfaGFuZGxlciggX2ludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXIgYXJnICkKLXsKLSAgICByZXR1cm4gYXJnOwotfQotCi0jICBlbmRpZgotCi0jICBpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4MDU2NCkpIHx8IGRlZmluZWQoVU5ERVJfQ0UpCi0KLW5hbWVzcGFjZSB7IHZvaWQgX3NldF9zZV90cmFuc2xhdG9yKCB2b2lkKiApIHt9IH0KLQotIyAgZW5kaWYKLQotI2VsaWYgZGVmaW5lZChORE5CT09TVF9IQVNfU0lHQUNUSU9OKQotCi0jICBkZWZpbmUgTkROQk9PU1RfU0lHQUNUSU9OX0JBU0VEX1NJR05BTF9IQU5ETElORwotCi0jICBpbmNsdWRlIDx1bmlzdGQuaD4KLSMgIGluY2x1ZGUgPHNpZ25hbC5oPgotIyAgaW5jbHVkZSA8c2V0am1wLmg+Ci0KLSMgIGlmIGRlZmluZWQoX19GcmVlQlNEX18pICAKLQotIyAgICBpZm5kZWYgU0lHUE9MTAotIyAgICAgIGRlZmluZSBTSUdQT0xMIFNJR0lPCi0jICAgIGVuZGlmCi0KLSMgICAgaWYgKF9fRnJlZUJTRF92ZXJzaW9uIDwgNzAxMDApCi0KLSMgICAgICBkZWZpbmUgSUxMX0lMTEFEUiAwIC8vIElMTF9SRVNBRF9GQVVMVAotIyAgICAgIGRlZmluZSBJTExfUFJWT1BDIElMTF9QUklWSU5fRkFVTFQKLSMgICAgICBkZWZpbmUgSUxMX0lMTE9QTiAyIC8vIElMTF9SRVNPUF9GQVVMVAotIyAgICAgIGRlZmluZSBJTExfQ09QUk9DIElMTF9GUE9QX0ZBVUxUCi0KLSMgICAgICBkZWZpbmUgTkROQk9PU1RfVEVTVF9MSU1JVEVEX1NJR05BTF9ERVRBSUxTCi0jICAgICAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfSUdOT1JFX1NJR0NITEQKLQotIyAgICBlbmRpZiAKLSMgIGVuZGlmIAotCi0jICBpZiAhZGVmaW5lZChfX0NZR1dJTl9fKSAmJiAhZGVmaW5lZChfX1FOWE5UT19fKQotIyAgIGRlZmluZSBORE5CT09TVF9URVNUX1VTRV9BTFRfU1RBQ0sKLSMgIGVuZGlmCi0KLSMgIGlmIGRlZmluZWQoU0lHUE9MTCkgJiYgIWRlZmluZWQoX19DWUdXSU5fXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBcCi0gICAgICAhKGRlZmluZWQobWFjaW50b3NoKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX0FQUExFX0NDX18pKSAgJiYgXAotICAgICAgIWRlZmluZWQoX19OZXRCU0RfXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIFwKLSAgICAgICFkZWZpbmVkKF9fUU5YTlRPX18pCi0jICAgIGRlZmluZSBORE5CT09TVF9URVNUX0NBVENIX1NJR1BPTEwKLSMgIGVuZGlmCi0KLSMgIGlmZGVmIE5ETkJPT1NUX1RFU1RfVVNFX0FMVF9TVEFDSwotIyAgICBkZWZpbmUgTkROQk9PU1RfVEVTVF9BTFRfU1RBQ0tfU0laRSBTSUdTVEtTWgotIyAgZW5kaWYKLQotI2Vsc2UKLQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NJR05BTF9IQU5ETElORwotCi0jZW5kaWYKLQotI2lmbmRlZiBVTkRFUl9DRQotI2luY2x1ZGUgPGVycm5vLmg+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgcmVwb3J0X2Vycm9yICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotI2lmZGVmIF9fQk9STEFORENfXwotIyAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfVlNOUFJJTlRGKCBhMSwgYTIsIGEzLCBhNCApIHN0ZDo6dnNucHJpbnRmKCAoYTEpLCAoYTIpLCAoYTMpLCAoYTQpICkKLSNlbGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoX01TQ19WRVIsIDw9IDEzMTApIHx8IFwKLSAgICAgIE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4MzAwMCkpIHx8IFwKLSAgICAgIGRlZmluZWQoVU5ERVJfQ0UpCi0jICBkZWZpbmUgTkROQk9PU1RfVEVTVF9WU05QUklOVEYoIGExLCBhMiwgYTMsIGE0ICkgX3ZzbnByaW50ZiggKGExKSwgKGEyKSwgKGEzKSwgKGE0KSApCi0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfVlNOUFJJTlRGKCBhMSwgYTIsIGEzLCBhNCApIHZzbnByaW50ZiggKGExKSwgKGEyKSwgKGEzKSwgKGE0KSApCi0jZW5kaWYKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVycm9ySW5mbz4KLXR5cGVuYW1lIEVycm9ySW5mbzo6dmFsdWVfdHlwZQotZXh0cmFjdCggbmRuYm9vc3Q6OmV4Y2VwdGlvbiBjb25zdCogZXggKQotewotICAgIGlmKCAhZXggKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIHR5cGVuYW1lIEVycm9ySW5mbzo6dmFsdWVfdHlwZSBjb25zdCAqIHZhbCA9IG5kbmJvb3N0OjpnZXRfZXJyb3JfaW5mbzxFcnJvckluZm8+KCAqZXggKTsKLQotICAgIHJldHVybiB2YWwgPyAqdmFsIDogMDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc3RhdGljIHZvaWQKLXJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6ZXJyb3JfY29kZSBlYywgbmRuYm9vc3Q6OmV4Y2VwdGlvbiBjb25zdCogYmUsIGNoYXIgY29uc3QqIGZvcm1hdCwgdmFfbGlzdCogYXJncyApCi17Ci0gICAgc3RhdGljIGNvbnN0IGludCBSRVBPUlRfRVJST1JfQlVGRkVSX1NJWkUgPSA1MTI7Ci0gICAgc3RhdGljIGNoYXIgYnVmW1JFUE9SVF9FUlJPUl9CVUZGRVJfU0laRV07Ci0KLSAgICBORE5CT09TVF9URVNUX1ZTTlBSSU5URiggYnVmLCBzaXplb2YoYnVmKS0xLCBmb3JtYXQsICphcmdzICk7IAotICAgIGJ1ZltzaXplb2YoYnVmKS0xXSA9IDA7Ci0KLSAgICB2YV9lbmQoICphcmdzICk7Ci0KLSAgICB0aHJvdyBleGVjdXRpb25fZXhjZXB0aW9uKCBlYywgYnVmLCBleGVjdXRpb25fZXhjZXB0aW9uOjpsb2NhdGlvbiggZXh0cmFjdDx0aHJvd19maWxlPiggYmUgKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhY3Q8dGhyb3dfbGluZT4oIGJlICksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhY3Q8dGhyb3dfZnVuY3Rpb24+KCBiZSApICkgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc3RhdGljIHZvaWQKLXJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6ZXJyb3JfY29kZSBlYywgY2hhciBjb25zdCogZm9ybWF0LCAuLi4gKQotewotICAgIHZhX2xpc3QgYXJnczsKLSAgICB2YV9zdGFydCggYXJncywgZm9ybWF0ICk7Ci0KLSAgICByZXBvcnRfZXJyb3IoIGVjLCAwLCBmb3JtYXQsICZhcmdzICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXN0YXRpYyB2b2lkCi1yZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OmVycm9yX2NvZGUgZWMsIG5kbmJvb3N0OjpleGNlcHRpb24gY29uc3QqIGJlLCBjaGFyIGNvbnN0KiBmb3JtYXQsIC4uLiApCi17Ci0gICAgdmFfbGlzdCBhcmdzOwotICAgIHZhX3N0YXJ0KCBhcmdzLCBmb3JtYXQgKTsKLQotICAgIHJlcG9ydF9lcnJvciggZWMsIGJlLCBmb3JtYXQsICZhcmdzICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFRyLHR5cGVuYW1lIEZ1bmN0b3I+Ci1pbmxpbmUgaW50Ci1kb19pbnZva2UoIFRyIGNvbnN0JiB0ciwgRnVuY3RvciBjb25zdCYgRiApCi17Ci0gICAgcmV0dXJuIHRyID8gKCp0cikoIEYgKSA6IEYoKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NJR0FDVElPTl9CQVNFRF9TSUdOQUxfSEFORExJTkcpCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICBTaWdhY3Rpb24gYmFzZWQgc2lnbmFsIGhhbmRsaW5nICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICBuZG5ib29zdDo6ZGV0YWlsOjpzeXN0ZW1fc2lnbmFsX2V4Y2VwdGlvbiAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3Mgc3lzdGVtX3NpZ25hbF9leGNlcHRpb24gewotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgc3lzdGVtX3NpZ25hbF9leGNlcHRpb24oKQotICAgIDogbV9zaWdfaW5mbyggMCApCi0gICAgLCBtX2NvbnRleHQoIDAgKQotICAgIHt9Ci0KLSAgICAvLyBBY2Nlc3MgbWV0aG9kcwotICAgIHZvaWQgICAgICAgIG9wZXJhdG9yKCkoIHNpZ2luZm9fdCogaSwgdm9pZCogYyApCi0gICAgewotICAgICAgICBtX3NpZ19pbmZvICA9IGk7Ci0gICAgICAgIG1fY29udGV4dCAgID0gYzsKLSAgICB9Ci0gICAgdm9pZCAgICAgICAgcmVwb3J0KCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgc2lnaW5mb190KiAgbV9zaWdfaW5mbzsgLy8gc3lzdGVtIHNpZ25hbCBkZXRhaWxlZCBpbmZvCi0gICAgdm9pZCogICAgICAgbV9jb250ZXh0OyAgLy8gc2lnbmFsIGNvbnRleHQKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXN5c3RlbV9zaWduYWxfZXhjZXB0aW9uOjpyZXBvcnQoKSBjb25zdAotewotICAgIGlmKCAhbV9zaWdfaW5mbyApCi0gICAgICAgIHJldHVybjsgLy8gbm8gZXJyb3IgYWN0dWFsbHkgb2NjdXI/Ci0KLSAgICBzd2l0Y2goIG1fc2lnX2luZm8tPnNpX2NvZGUgKSB7Ci0gICAgY2FzZSBTSV9VU0VSOgotICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsOiBnZW5lcmF0ZWQgYnkga2lsbCgpIChvciBmYW1pbHkpOyB1aWQ9JWQ7IHBpZD0lZCIsCi0gICAgICAgICAgICAgICAgICAgICAgKGludCltX3NpZ19pbmZvLT5zaV91aWQsIChpbnQpbV9zaWdfaW5mby0+c2lfcGlkICk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU0lfUVVFVUU6Ci0gICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6IHNlbnQgYnkgc2lncXVldWUoKSIgKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTSV9USU1FUjoKLSAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgInNpZ25hbDogdGhlIGV4cGlyYXRpb24gb2YgYSB0aW1lciBzZXQgYnkgdGltZXJfc2V0dGltZXIoKSIgKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTSV9BU1lOQ0lPOgotICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsOiBnZW5lcmF0ZWQgYnkgdGhlIGNvbXBsZXRpb24gb2YgYW4gYXN5bmNocm9ub3VzIEkvTyByZXF1ZXN0IiApOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNJX01FU0dROgotICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsOiBnZW5lcmF0ZWQgYnkgdGhlIHRoZSBhcnJpdmFsIG9mIGEgbWVzc2FnZSBvbiBhbiBlbXB0eSBtZXNzYWdlIHF1ZXVlIiApOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBzd2l0Y2goIG1fc2lnX2luZm8tPnNpX3NpZ25vICkgewotICAgIGNhc2UgU0lHSUxMOgotICAgICAgICBzd2l0Y2goIG1fc2lnX2luZm8tPnNpX2NvZGUgKSB7Ci0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfTElNSVRFRF9TSUdOQUxfREVUQUlMUwotICAgICAgICBjYXNlIElMTF9JTExPUEM6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9mYXRhbF9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbDogaWxsZWdhbCBvcGNvZGU7IGFkZHJlc3Mgb2YgZmFpbGluZyBpbnN0cnVjdGlvbjogMHglMDhseCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2lnX2luZm8tPnNpX2FkZHIgKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIElMTF9JTExUUlA6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9mYXRhbF9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbDogaWxsZWdhbCB0cmFwOyBhZGRyZXNzIG9mIGZhaWxpbmcgaW5zdHJ1Y3Rpb246IDB4JTA4bHgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NpZ19pbmZvLT5zaV9hZGRyICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBJTExfUFJWUkVHOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZmF0YWxfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6IHByaXZpbGVnZWQgcmVnaXN0ZXI7IGFkZHJlc3Mgb2YgZmFpbGluZyBpbnN0cnVjdGlvbjogMHglMDhseCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2lnX2luZm8tPnNpX2FkZHIgKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIElMTF9CQURTVEs6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9mYXRhbF9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbDogaW50ZXJuYWwgc3RhY2sgZXJyb3I7IGFkZHJlc3Mgb2YgZmFpbGluZyBpbnN0cnVjdGlvbjogMHglMDhseCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2lnX2luZm8tPnNpX2FkZHIgKTsKLSAgICAgICAgICAgIGJyZWFrOwotI2VuZGlmCi0gICAgICAgIGNhc2UgSUxMX0lMTE9QTjoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2ZhdGFsX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsOiBpbGxlZ2FsIG9wZXJhbmQ7IGFkZHJlc3Mgb2YgZmFpbGluZyBpbnN0cnVjdGlvbjogMHglMDhseCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2lnX2luZm8tPnNpX2FkZHIgKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIElMTF9JTExBRFI6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9mYXRhbF9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbDogaWxsZWdhbCBhZGRyZXNzaW5nIG1vZGU7IGFkZHJlc3Mgb2YgZmFpbGluZyBpbnN0cnVjdGlvbjogMHglMDhseCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2lnX2luZm8tPnNpX2FkZHIgKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIElMTF9QUlZPUEM6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9mYXRhbF9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbDogcHJpdmlsZWdlZCBvcGNvZGU7IGFkZHJlc3Mgb2YgZmFpbGluZyBpbnN0cnVjdGlvbjogMHglMDhseCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2lnX2luZm8tPnNpX2FkZHIgKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIElMTF9DT1BST0M6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9mYXRhbF9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbDogY28tcHJvY2Vzc29yIGVycm9yOyBhZGRyZXNzIG9mIGZhaWxpbmcgaW5zdHJ1Y3Rpb246IDB4JTA4bHgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NpZ19pbmZvLT5zaV9hZGRyICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDogCi0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9mYXRhbF9lcnJvciwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6IFNJR0lMTCwgc2lfY29kZTogJWQgKGlsbGVnYWwgaW5zdHJ1Y3Rpb247IGFkZHJlc3Mgb2YgZmFpbGluZyBpbnN0cnVjdGlvbjogMHglMDhseCkiLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zaWdfaW5mby0+c2lfYWRkciwgbV9zaWdfaW5mby0+c2lfY29kZSApOyAKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTSUdGUEU6Ci0gICAgICAgIHN3aXRjaCggbV9zaWdfaW5mby0+c2lfY29kZSApIHsKLSAgICAgICAgY2FzZSBGUEVfSU5URElWOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6IGludGVnZXIgZGl2aWRlIGJ5IHplcm87IGFkZHJlc3Mgb2YgZmFpbGluZyBpbnN0cnVjdGlvbjogMHglMDhseCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2lnX2luZm8tPnNpX2FkZHIgKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZQRV9JTlRPVkY6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbDogaW50ZWdlciBvdmVyZmxvdzsgYWRkcmVzcyBvZiBmYWlsaW5nIGluc3RydWN0aW9uOiAweCUwOGx4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zaWdfaW5mby0+c2lfYWRkciApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRlBFX0ZMVERJVjoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsOiBmbG9hdGluZyBwb2ludCBkaXZpZGUgYnkgemVybzsgYWRkcmVzcyBvZiBmYWlsaW5nIGluc3RydWN0aW9uOiAweCUwOGx4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zaWdfaW5mby0+c2lfYWRkciApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRlBFX0ZMVE9WRjoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsOiBmbG9hdGluZyBwb2ludCBvdmVyZmxvdzsgYWRkcmVzcyBvZiBmYWlsaW5nIGluc3RydWN0aW9uOiAweCUwOGx4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zaWdfaW5mby0+c2lfYWRkciApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRlBFX0ZMVFVORDoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsOiBmbG9hdGluZyBwb2ludCB1bmRlcmZsb3c7IGFkZHJlc3Mgb2YgZmFpbGluZyBpbnN0cnVjdGlvbjogMHglMDhseCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2lnX2luZm8tPnNpX2FkZHIgKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZQRV9GTFRSRVM6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbDogZmxvYXRpbmcgcG9pbnQgaW5leGFjdCByZXN1bHQ7IGFkZHJlc3Mgb2YgZmFpbGluZyBpbnN0cnVjdGlvbjogMHglMDhseCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2lnX2luZm8tPnNpX2FkZHIgKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZQRV9GTFRJTlY6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbDogaW52YWxpZCBmbG9hdGluZyBwb2ludCBvcGVyYXRpb247IGFkZHJlc3Mgb2YgZmFpbGluZyBpbnN0cnVjdGlvbjogMHglMDhseCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2lnX2luZm8tPnNpX2FkZHIgKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZQRV9GTFRTVUI6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbDogc3Vic2NyaXB0IG91dCBvZiByYW5nZTsgYWRkcmVzcyBvZiBmYWlsaW5nIGluc3RydWN0aW9uOiAweCUwOGx4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zaWdfaW5mby0+c2lfYWRkciApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbDogU0lHRlBFLCBzaV9jb2RlOiAlZCAoZXJybm9uZW91cyBhcml0aG1ldGljIG9wZXJhdGlvbnM7IGFkZHJlc3Mgb2YgZmFpbGluZyBpbnN0cnVjdGlvbjogMHglMDhseCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NpZ19pbmZvLT5zaV9hZGRyLCBtX3NpZ19pbmZvLT5zaV9jb2RlICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgU0lHU0VHVjoKLSAgICAgICAgc3dpdGNoKCBtX3NpZ19pbmZvLT5zaV9jb2RlICkgewotI2lmbmRlZiBORE5CT09TVF9URVNUX0xJTUlURURfU0lHTkFMX0RFVEFJTFMKLSAgICAgICAgY2FzZSBTRUdWX01BUEVSUjoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2ZhdGFsX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAibWVtb3J5IGFjY2VzcyB2aW9sYXRpb24gYXQgYWRkcmVzczogMHglMDhseDogbm8gbWFwcGluZyBhdCBmYXVsdCBhZGRyZXNzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zaWdfaW5mby0+c2lfYWRkciApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU0VHVl9BQ0NFUlI6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9mYXRhbF9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIm1lbW9yeSBhY2Nlc3MgdmlvbGF0aW9uIGF0IGFkZHJlc3M6IDB4JTA4bHg6IGludmFsaWQgcGVybWlzc2lvbnMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NpZ19pbmZvLT5zaV9hZGRyICk7Ci0gICAgICAgICAgICBicmVhazsKLSNlbmRpZgotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZmF0YWxfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6IFNJR1NFR1YsIHNpX2NvZGU6ICVkIChtZW1vcnkgYWNjZXNzIHZpb2xhdGlvbiBhdCBhZGRyZXNzOiAweCUwOGx4KSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2lnX2luZm8tPnNpX2FkZHIsIG1fc2lnX2luZm8tPnNpX2NvZGUgKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTSUdCVVM6Ci0gICAgICAgIHN3aXRjaCggbV9zaWdfaW5mby0+c2lfY29kZSApIHsKLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9MSU1JVEVEX1NJR05BTF9ERVRBSUxTCi0gICAgICAgIGNhc2UgQlVTX0FEUkFMTjoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2ZhdGFsX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAibWVtb3J5IGFjY2VzcyB2aW9sYXRpb24gYXQgYWRkcmVzczogMHglMDhseDogaW52YWxpZCBhZGRyZXNzIGFsaWdubWVudCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2lnX2luZm8tPnNpX2FkZHIgKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEJVU19BRFJFUlI6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9mYXRhbF9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIm1lbW9yeSBhY2Nlc3MgdmlvbGF0aW9uIGF0IGFkZHJlc3M6IDB4JTA4bHg6IG5vbi1leGlzdGVudCBwaHlzaWNhbCBhZGRyZXNzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zaWdfaW5mby0+c2lfYWRkciApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQlVTX09CSkVSUjoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2ZhdGFsX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAibWVtb3J5IGFjY2VzcyB2aW9sYXRpb24gYXQgYWRkcmVzczogMHglMDhseDogb2JqZWN0IHNwZWNpZmljIGhhcmR3YXJlIGVycm9yIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zaWdfaW5mby0+c2lfYWRkciApOwotICAgICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2ZhdGFsX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsOiBTSUdTRUdWLCBzaV9jb2RlOiAlZCAobWVtb3J5IGFjY2VzcyB2aW9sYXRpb24gYXQgYWRkcmVzczogMHglMDhseCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NpZ19pbmZvLT5zaV9hZGRyLCBtX3NpZ19pbmZvLT5zaV9jb2RlICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgU0lHQ0hMRDoKLSAgICAgICAgc3dpdGNoKCBtX3NpZ19pbmZvLT5zaV9jb2RlICkgewotI2lmbmRlZiBORE5CT09TVF9URVNUX0xJTUlURURfU0lHTkFMX0RFVEFJTFMKLSAgICAgICAgY2FzZSBDTERfRVhJVEVEOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJjaGlsZCBoYXMgZXhpdGVkOyBwaWQ6ICVkOyB1aWQ6ICVkOyBleGl0IHZhbHVlOiAlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpbV9zaWdfaW5mby0+c2lfcGlkLCAoaW50KW1fc2lnX2luZm8tPnNpX3VpZCwgKGludCltX3NpZ19pbmZvLT5zaV9zdGF0dXMgKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENMRF9LSUxMRUQ6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImNoaWxkIHdhcyBraWxsZWQ7IHBpZDogJWQ7IHVpZDogJWQ7IGV4aXQgdmFsdWU6ICVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCltX3NpZ19pbmZvLT5zaV9waWQsIChpbnQpbV9zaWdfaW5mby0+c2lfdWlkLCAoaW50KW1fc2lnX2luZm8tPnNpX3N0YXR1cyApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ0xEX0RVTVBFRDoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hpbGQgdGVybWluYXRlZCBhYm5vcm1hbGx5OyBwaWQ6ICVkOyB1aWQ6ICVkOyBleGl0IHZhbHVlOiAlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpbV9zaWdfaW5mby0+c2lfcGlkLCAoaW50KW1fc2lnX2luZm8tPnNpX3VpZCwgKGludCltX3NpZ19pbmZvLT5zaV9zdGF0dXMgKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENMRF9UUkFQUEVEOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJ0cmFjZWQgY2hpbGQgaGFzIHRyYXBwZWQ7IHBpZDogJWQ7IHVpZDogJWQ7IGV4aXQgdmFsdWU6ICVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCltX3NpZ19pbmZvLT5zaV9waWQsIChpbnQpbV9zaWdfaW5mby0+c2lfdWlkLCAoaW50KW1fc2lnX2luZm8tPnNpX3N0YXR1cyApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ0xEX1NUT1BQRUQ6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImNoaWxkIGhhcyBzdG9wcGVkOyBwaWQ6ICVkOyB1aWQ6ICVkOyBleGl0IHZhbHVlOiAlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpbV9zaWdfaW5mby0+c2lfcGlkLCAoaW50KW1fc2lnX2luZm8tPnNpX3VpZCwgKGludCltX3NpZ19pbmZvLT5zaV9zdGF0dXMgKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENMRF9DT05USU5VRUQ6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInN0b3BwZWQgY2hpbGQgaGFkIGNvbnRpbnVlZDsgcGlkOiAlZDsgdWlkOiAlZDsgZXhpdCB2YWx1ZTogJWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KW1fc2lnX2luZm8tPnNpX3BpZCwgKGludCltX3NpZ19pbmZvLT5zaV91aWQsIChpbnQpbV9zaWdfaW5mby0+c2lfc3RhdHVzICk7Ci0gICAgICAgICAgICBicmVhazsKLSNlbmRpZgotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6IFNJR0NITEQsIHNpX2NvZGU6ICVkIChjaGlsZCBwcm9jZXNzIGhhcyB0ZXJtaW5hdGVkOyBwaWQ6ICVkOyB1aWQ6ICVkOyBleGl0IHZhbHVlOiAlZCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KW1fc2lnX2luZm8tPnNpX3BpZCwgKGludCltX3NpZ19pbmZvLT5zaV91aWQsIChpbnQpbV9zaWdfaW5mby0+c2lfc3RhdHVzLCBtX3NpZ19pbmZvLT5zaV9jb2RlICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfVEVTVF9DQVRDSF9TSUdQT0xMKQotCi0gICAgY2FzZSBTSUdQT0xMOgotICAgICAgICBzd2l0Y2goIG1fc2lnX2luZm8tPnNpX2NvZGUgKSB7Ci0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfTElNSVRFRF9TSUdOQUxfREVUQUlMUwotICAgICAgICBjYXNlIFBPTExfSU46Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImRhdGEgaW5wdXQgYXZhaWxhYmxlOyBiYW5kIGV2ZW50ICVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCltX3NpZ19pbmZvLT5zaV9iYW5kICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBQT0xMX09VVDoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAib3V0cHV0IGJ1ZmZlcnMgYXZhaWxhYmxlOyBiYW5kIGV2ZW50ICVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCltX3NpZ19pbmZvLT5zaV9iYW5kICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBQT0xMX01TRzoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5wdXQgbWVzc2FnZSBhdmFpbGFibGU7IGJhbmQgZXZlbnQgJWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KW1fc2lnX2luZm8tPnNpX2JhbmQgKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFBPTExfRVJSOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJpL28gZXJyb3I7IGJhbmQgZXZlbnQgJWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KW1fc2lnX2luZm8tPnNpX2JhbmQgKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFBPTExfUFJJOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJoaWdoIHByaW9yaXR5IGlucHV0IGF2YWlsYWJsZTsgYmFuZCBldmVudCAlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpbV9zaWdfaW5mby0+c2lfYmFuZCApOwotICAgICAgICAgICAgYnJlYWs7Ci0jaWYgZGVmaW5lZChQT0xMX0VSUikgJiYgZGVmaW5lZChQT0xMX0hVUCkgJiYgKFBPTExfRVJSIC0gUE9MTF9IVVApCi0gICAgICAgIGNhc2UgUE9MTF9IVVA6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImRldmljZSBkaXNjb25uZWN0ZWQ7IGJhbmQgZXZlbnQgJWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KW1fc2lnX2luZm8tPnNpX2JhbmQgKTsKLSAgICAgICAgICAgIGJyZWFrOwotI2VuZGlmCi0jZW5kaWYKLSAgICAgICAgZGVmYXVsdDogCi0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6IFNJR1BPTEwsIHNpX2NvZGU6ICVkIChhc3luY2hyb25vdXMgSS9PIGV2ZW50IG9jY3VyZWQ7IGJhbmQgZXZlbnQgJWQpIiwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpbV9zaWdfaW5mby0+c2lfYmFuZCwgbV9zaWdfaW5mby0+c2lfY29kZSApOyAKLSAgICAgICAgICAgIGJyZWFrOyAKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLQotI2VuZGlmCi0KLSAgICBjYXNlIFNJR0FCUlQ6Ci0gICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6IFNJR0FCUlQgKGFwcGxpY2F0aW9uIGFib3J0IHJlcXVlc3RlZCkiICk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTSUdBTFJNOgotICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnRpbWVvdXRfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgInNpZ25hbDogU0lHQUxSTSAodGltZW91dCB3aGlsZSBleGVjdXRpbmcgZnVuY3Rpb24pIiApOwotICAgICAgICBicmVhazsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLCAidW5yZWNvZ25pemVkIHNpZ25hbCIgKTsKLSAgICB9Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNpZ25hbF9hY3Rpb24gICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotLy8gRm9yd2FyZCBkZWNsYXJhdGlvbgotZXh0ZXJuICJDIiB7Ci1zdGF0aWMgdm9pZCBleGVjdXRpb25fbW9uaXRvcl9qdW1waW5nX3NpZ25hbF9oYW5kbGVyKCBpbnQgc2lnLCBzaWdpbmZvX3QqIGluZm8sIHZvaWQqIGNvbnRleHQgKTsKLXN0YXRpYyB2b2lkIGV4ZWN1dGlvbl9tb25pdG9yX2F0dGFjaGluZ19zaWduYWxfaGFuZGxlciggaW50IHNpZywgc2lnaW5mb190KiBpbmZvLCB2b2lkKiBjb250ZXh0ICk7Ci19Ci0KLWNsYXNzIHNpZ25hbF9hY3Rpb24gewotICAgIHR5cGVkZWYgc3RydWN0IHNpZ2FjdGlvbiogc2lnYWN0aW9uX3B0cjsKLXB1YmxpYzoKLSAgICAvL0NvbnN0cnVjdG9yCi0gICAgc2lnbmFsX2FjdGlvbigpOwotICAgIHNpZ25hbF9hY3Rpb24oIGludCBzaWcsIGJvb2wgaW5zdGFsbCwgYm9vbCBhdHRhY2hfZGJnLCBjaGFyKiBhbHRfc3RhY2sgKTsKLSAgICB+c2lnbmFsX2FjdGlvbigpOwotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIGludCAgICAgICAgICAgICAgICAgbV9zaWc7Ci0gICAgYm9vbCAgICAgICAgICAgICAgICBtX2luc3RhbGxlZDsKLSAgICBzdHJ1Y3Qgc2lnYWN0aW9uICAgIG1fbmV3X2FjdGlvbjsKLSAgICBzdHJ1Y3Qgc2lnYWN0aW9uICAgIG1fb2xkX2FjdGlvbjsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXNpZ25hbF9hY3Rpb246OnNpZ25hbF9hY3Rpb24oKQotOiBtX2luc3RhbGxlZCggZmFsc2UgKQote30KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc2lnbmFsX2FjdGlvbjo6c2lnbmFsX2FjdGlvbiggaW50IHNpZywgYm9vbCBpbnN0YWxsLCBib29sIGF0dGFjaF9kYmcsIGNoYXIqIGFsdF9zdGFjayApCi06IG1fc2lnKCBzaWcgKQotLCBtX2luc3RhbGxlZCggaW5zdGFsbCApCi17Ci0gICAgaWYoICFpbnN0YWxsICkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc3RkOjptZW1zZXQoICZtX25ld19hY3Rpb24sIDAsIHNpemVvZihzdHJ1Y3Qgc2lnYWN0aW9uKSApOwotCi0gICAgTkROQk9PU1RfVEVTVF9TWVNfQVNTRVJUKCA6OnNpZ2FjdGlvbiggbV9zaWcgLCBzaWdhY3Rpb25fcHRyKCksICZtX25ld19hY3Rpb24gKSAhPSAtMSApOwotCi0gICAgaWYoIG1fbmV3X2FjdGlvbi5zYV9zaWdhY3Rpb24gfHwgbV9uZXdfYWN0aW9uLnNhX2hhbmRsZXIgKSB7Ci0gICAgICAgIG1faW5zdGFsbGVkID0gZmFsc2U7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX25ld19hY3Rpb24uc2FfZmxhZ3MgICAgIHw9IFNBX1NJR0lORk87Ci0gICAgbV9uZXdfYWN0aW9uLnNhX3NpZ2FjdGlvbiAgPSBhdHRhY2hfZGJnID8gJmV4ZWN1dGlvbl9tb25pdG9yX2F0dGFjaGluZ19zaWduYWxfaGFuZGxlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICZleGVjdXRpb25fbW9uaXRvcl9qdW1waW5nX3NpZ25hbF9oYW5kbGVyOwotICAgIE5ETkJPT1NUX1RFU1RfU1lTX0FTU0VSVCggc2lnZW1wdHlzZXQoICZtX25ld19hY3Rpb24uc2FfbWFzayApICE9IC0xICk7Ci0KLSNpZmRlZiBORE5CT09TVF9URVNUX1VTRV9BTFRfU1RBQ0sKLSAgICBpZiggYWx0X3N0YWNrICkKLSAgICAgICAgbV9uZXdfYWN0aW9uLnNhX2ZsYWdzIHw9IFNBX09OU1RBQ0s7Ci0jZW5kaWYKLQotICAgIE5ETkJPT1NUX1RFU1RfU1lTX0FTU0VSVCggOjpzaWdhY3Rpb24oIG1fc2lnLCAmbV9uZXdfYWN0aW9uLCAmbV9vbGRfYWN0aW9uICkgIT0gLTEgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc2lnbmFsX2FjdGlvbjo6fnNpZ25hbF9hY3Rpb24oKQotewotICAgIGlmKCBtX2luc3RhbGxlZCApCi0gICAgICAgIDo6c2lnYWN0aW9uKCBtX3NpZywgJm1fb2xkX2FjdGlvbiAsIHNpZ2FjdGlvbl9wdHIoKSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNpZ25hbF9oYW5kbGVyICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIHNpZ25hbF9oYW5kbGVyIHsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIGV4cGxpY2l0IHNpZ25hbF9oYW5kbGVyKCBib29sIGNhdGNoX3N5c3RlbV9lcnJvcnMsIGludCB0aW1lb3V0LCBib29sIGF0dGFjaF9kYmcsIGNoYXIqIGFsdF9zdGFjayApOwotCi0gICAgLy8gRGVzdHJ1Y3RvcgotICAgIH5zaWduYWxfaGFuZGxlcigpOwotCi0gICAgLy8gYWNjZXNzIG1ldGhvZHMKLSAgICBzdGF0aWMgc2lnam1wX2J1ZiYgICAgICBqdW1wX2J1ZmZlcigpCi0gICAgewotICAgICAgICBhc3NlcnQoICEhc19hY3RpdmVfaGFuZGxlciApOwotCi0gICAgICAgIHJldHVybiBzX2FjdGl2ZV9oYW5kbGVyLT5tX3NpZ2ptcF9idWY7Ci0gICAgfQotCi0gICAgc3RhdGljIHN5c3RlbV9zaWduYWxfZXhjZXB0aW9uJiAgc3lzX3NpZygpCi0gICAgewotICAgICAgICBhc3NlcnQoICEhc19hY3RpdmVfaGFuZGxlciApOwotCi0gICAgICAgIHJldHVybiBzX2FjdGl2ZV9oYW5kbGVyLT5tX3N5c19zaWc7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIHNpZ25hbF9oYW5kbGVyKiAgICAgICAgIG1fcHJldl9oYW5kbGVyOwotICAgIGludCAgICAgICAgICAgICAgICAgICAgIG1fdGltZW91dDsKLQotICAgIHNpZ25hbF9hY3Rpb24gICAgICAgICAgIG1fSUxMX2FjdGlvbjsKLSAgICBzaWduYWxfYWN0aW9uICAgICAgICAgICBtX0ZQRV9hY3Rpb247Ci0gICAgc2lnbmFsX2FjdGlvbiAgICAgICAgICAgbV9TRUdWX2FjdGlvbjsKLSAgICBzaWduYWxfYWN0aW9uICAgICAgICAgICBtX0JVU19hY3Rpb247Ci0gICAgc2lnbmFsX2FjdGlvbiAgICAgICAgICAgbV9DSExEX2FjdGlvbjsKLSAgICBzaWduYWxfYWN0aW9uICAgICAgICAgICBtX1BPTExfYWN0aW9uOwotICAgIHNpZ25hbF9hY3Rpb24gICAgICAgICAgIG1fQUJSVF9hY3Rpb247Ci0gICAgc2lnbmFsX2FjdGlvbiAgICAgICAgICAgbV9BTFJNX2FjdGlvbjsKLQotICAgIHNpZ2ptcF9idWYgICAgICAgICAgICAgIG1fc2lnam1wX2J1ZjsKLSAgICBzeXN0ZW1fc2lnbmFsX2V4Y2VwdGlvbiBtX3N5c19zaWc7Ci0KLSAgICBzdGF0aWMgc2lnbmFsX2hhbmRsZXIqICBzX2FjdGl2ZV9oYW5kbGVyOwotfTsKLQotLy8gISEgbmVlZCB0byBiZSBwbGFjZWQgaW4gdGhyZWFkIHNwZWNpZmljIHN0b3JhZ2UKLXR5cGVkZWYgc2lnbmFsX2hhbmRsZXIqIHNpZ25hbF9oYW5kbGVyX3B0cjsKLXNpZ25hbF9oYW5kbGVyKiBzaWduYWxfaGFuZGxlcjo6c19hY3RpdmVfaGFuZGxlciA9IHNpZ25hbF9oYW5kbGVyX3B0cigpOwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zaWduYWxfaGFuZGxlcjo6c2lnbmFsX2hhbmRsZXIoIGJvb2wgY2F0Y2hfc3lzdGVtX2Vycm9ycywgaW50IHRpbWVvdXQsIGJvb2wgYXR0YWNoX2RiZywgY2hhciogYWx0X3N0YWNrICkKLTogbV9wcmV2X2hhbmRsZXIoIHNfYWN0aXZlX2hhbmRsZXIgKQotLCBtX3RpbWVvdXQoIHRpbWVvdXQgKQotLCBtX0lMTF9hY3Rpb24gKCBTSUdJTEwgLCBjYXRjaF9zeXN0ZW1fZXJyb3JzLCBhdHRhY2hfZGJnLCBhbHRfc3RhY2sgKQotLCBtX0ZQRV9hY3Rpb24gKCBTSUdGUEUgLCBjYXRjaF9zeXN0ZW1fZXJyb3JzLCBhdHRhY2hfZGJnLCBhbHRfc3RhY2sgKQotLCBtX1NFR1ZfYWN0aW9uKCBTSUdTRUdWLCBjYXRjaF9zeXN0ZW1fZXJyb3JzLCBhdHRhY2hfZGJnLCBhbHRfc3RhY2sgKQotLCBtX0JVU19hY3Rpb24gKCBTSUdCVVMgLCBjYXRjaF9zeXN0ZW1fZXJyb3JzLCBhdHRhY2hfZGJnLCBhbHRfc3RhY2sgKQotI2lmbmRlZiBORE5CT09TVF9URVNUX0lHTk9SRV9TSUdDSExECi0sIG1fQ0hMRF9hY3Rpb24oIFNJR0NITEQsIGNhdGNoX3N5c3RlbV9lcnJvcnMsIGF0dGFjaF9kYmcsIGFsdF9zdGFjayApCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9URVNUX0NBVENIX1NJR1BPTEwKLSwgbV9QT0xMX2FjdGlvbiggU0lHUE9MTCwgY2F0Y2hfc3lzdGVtX2Vycm9ycywgYXR0YWNoX2RiZywgYWx0X3N0YWNrICkKLSNlbmRpZgotLCBtX0FCUlRfYWN0aW9uKCBTSUdBQlJULCBjYXRjaF9zeXN0ZW1fZXJyb3JzLCBhdHRhY2hfZGJnLCBhbHRfc3RhY2sgKQotLCBtX0FMUk1fYWN0aW9uKCBTSUdBTFJNLCB0aW1lb3V0ID4gMCAgICAgICAgLCBhdHRhY2hfZGJnLCBhbHRfc3RhY2sgKQotewotICAgIHNfYWN0aXZlX2hhbmRsZXIgPSB0aGlzOwotCi0gICAgaWYoIG1fdGltZW91dCA+IDAgKSB7Ci0gICAgICAgIDo6YWxhcm0oIDAgKTsKLSAgICAgICAgOjphbGFybSggdGltZW91dCApOwotICAgIH0KLQotI2lmZGVmIE5ETkJPT1NUX1RFU1RfVVNFX0FMVF9TVEFDSwotICAgIGlmKCBhbHRfc3RhY2sgKSB7Ci0gICAgICAgIHN0YWNrX3Qgc2lnc3RrOwotICAgICAgICBzdGQ6Om1lbXNldCggJnNpZ3N0aywgMCwgc2l6ZW9mKHN0YWNrX3QpICk7Ci0KLSAgICAgICAgTkROQk9PU1RfVEVTVF9TWVNfQVNTRVJUKCA6OnNpZ2FsdHN0YWNrKCAwLCAmc2lnc3RrICkgIT0gLTEgKTsKLQotICAgICAgICBpZiggc2lnc3RrLnNzX2ZsYWdzICYgU1NfRElTQUJMRSApIHsKLSAgICAgICAgICAgIHNpZ3N0ay5zc19zcCAgICA9IGFsdF9zdGFjazsKLSAgICAgICAgICAgIHNpZ3N0ay5zc19zaXplICA9IE5ETkJPT1NUX1RFU1RfQUxUX1NUQUNLX1NJWkU7Ci0gICAgICAgICAgICBzaWdzdGsuc3NfZmxhZ3MgPSAwOwotICAgICAgICAgICAgTkROQk9PU1RfVEVTVF9TWVNfQVNTRVJUKCA6OnNpZ2FsdHN0YWNrKCAmc2lnc3RrLCAwICkgIT0gLTEgKTsKLSAgICAgICAgfQotICAgIH0KLSNlbmRpZgotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zaWduYWxfaGFuZGxlcjo6fnNpZ25hbF9oYW5kbGVyKCkKLXsKLSAgICBhc3NlcnQoIHNfYWN0aXZlX2hhbmRsZXIgPT0gdGhpcyApOwotCi0gICAgaWYoIG1fdGltZW91dCA+IDAgKQotICAgICAgICA6OmFsYXJtKCAwICk7Ci0KLSNpZmRlZiBORE5CT09TVF9URVNUX1VTRV9BTFRfU1RBQ0sKLSNpZmRlZiBfX0dOVUNfXwotICAgIC8vIFdlIHNob3VsZG4ndCBuZWVkIHRvIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZSBhbGwgdGhlIG1lbWJlcnMgaGVyZSwKLSAgICAvLyBidXQgZ2NjIHdhcm5zIGlmIHdlIGRvbid0LCBzbyBhZGQgaW5pdGlhbGl6ZXJzIGZvciBlYWNoIG9mIHRoZQotICAgIC8vIG1lbWJlcnMgc3BlY2lmaWVkIGluIHRoZSBQT1NJWCBzdGQ6Ci0gICAgc3RhY2tfdCBzaWdzdGsgPSB7IDAsIDAsIDAgfTsKLSNlbHNlCi0gICAgc3RhY2tfdCBzaWdzdGsgPSB7IH07Ci0jZW5kaWYKLQotICAgIHNpZ3N0ay5zc19zaXplICA9IE1JTlNJR1NUS1NaOwotICAgIHNpZ3N0ay5zc19mbGFncyA9IFNTX0RJU0FCTEU7Ci0gICAgTkROQk9PU1RfVEVTVF9TWVNfQVNTRVJUKCA6OnNpZ2FsdHN0YWNrKCAmc2lnc3RrLCAwICkgIT0gLTEgKTsKLSNlbmRpZgotCi0gICAgc19hY3RpdmVfaGFuZGxlciA9IG1fcHJldl9oYW5kbGVyOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgZXhlY3V0aW9uX21vbml0b3Jfc2lnbmFsX2hhbmRsZXIgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWV4dGVybiAiQyIgewotCi1zdGF0aWMgYm9vbCBpZ25vcmVfc2lnY2hpbGQoIHNpZ2luZm9fdCogaW5mbyApCi17Ci0gICAgcmV0dXJuIGluZm8tPnNpX3NpZ25vID09IFNJR0NITEQKLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9MSU1JVEVEX1NJR05BTF9ERVRBSUxTCi0gICAgICAgICAgICAmJiBpbmZvLT5zaV9jb2RlID09IENMRF9FWElURUQgCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9URVNUX0lHTk9SRV9OT05fWkVST19DSElMRF9DT0RFCi0gICAgICAgICAgICA7Ci0jZWxzZQotICAgICAgICAgICAgJiYgKGludClpbmZvLT5zaV9zdGF0dXMgPT0gMDsKLSNlbmRpZgotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zdGF0aWMgdm9pZCBleGVjdXRpb25fbW9uaXRvcl9qdW1waW5nX3NpZ25hbF9oYW5kbGVyKCBpbnQgc2lnLCBzaWdpbmZvX3QqIGluZm8sIHZvaWQqIGNvbnRleHQgKQotewotICAgIGlmKCBpZ25vcmVfc2lnY2hpbGQoIGluZm8gKSApCi0gICAgICAgIHJldHVybjsKLQotICAgIHNpZ25hbF9oYW5kbGVyOjpzeXNfc2lnKCkoIGluZm8sIGNvbnRleHQgKTsKLQotICAgIHNpZ2xvbmdqbXAoIHNpZ25hbF9oYW5kbGVyOjpqdW1wX2J1ZmZlcigpLCBzaWcgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc3RhdGljIHZvaWQgZXhlY3V0aW9uX21vbml0b3JfYXR0YWNoaW5nX3NpZ25hbF9oYW5kbGVyKCBpbnQgc2lnLCBzaWdpbmZvX3QqIGluZm8sIHZvaWQqIGNvbnRleHQgKQotewotICAgIGlmKCBpZ25vcmVfc2lnY2hpbGQoIGluZm8gKSApCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmKCAhZGVidWc6OmF0dGFjaF9kZWJ1Z2dlciggZmFsc2UgKSApCi0gICAgICAgIGV4ZWN1dGlvbl9tb25pdG9yX2p1bXBpbmdfc2lnbmFsX2hhbmRsZXIoIHNpZywgaW5mbywgY29udGV4dCApOwotCi0gICAgLy8gZGVidWdnZXIgYXR0YWNoZWQ7IGl0IHdpbGwgaGFuZGxlIHRoZSBzaWduYWwKLSAgICBORE5CT09TVF9URVNUX1NZU19BU1NFUlQoIDo6c2lnbmFsKCBzaWcsIFNJR19ERkwgKSAhPSBTSUdfRVJSICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0KLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgZXhlY3V0aW9uX21vbml0b3I6OmNhdGNoX3NpZ25hbHMgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotaW50Ci1leGVjdXRpb25fbW9uaXRvcjo6Y2F0Y2hfc2lnbmFscyggdW5pdF90ZXN0OjpjYWxsYmFjazA8aW50PiBjb25zdCYgRiApCi17Ci0gICAgdXNpbmcgbmFtZXNwYWNlIGRldGFpbDsKLQotI2lmIGRlZmluZWQoX19DWUdXSU5fXykKLSAgICBwX2NhdGNoX3N5c3RlbV9lcnJvcnMudmFsdWUgPSBmYWxzZTsKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfVEVTVF9VU0VfQUxUX1NUQUNLCi0gICAgaWYoICEhcF91c2VfYWx0X3N0YWNrICYmICFtX2FsdF9zdGFjayApCi0gICAgICAgIG1fYWx0X3N0YWNrLnJlc2V0KCBuZXcgY2hhcltORE5CT09TVF9URVNUX0FMVF9TVEFDS19TSVpFXSApOwotI2Vsc2UKLSAgICBwX3VzZV9hbHRfc3RhY2sudmFsdWUgPSBmYWxzZTsKLSNlbmRpZgotCi0gICAgc2lnbmFsX2hhbmRsZXIgbG9jYWxfc2lnbmFsX2hhbmRsZXIoIHBfY2F0Y2hfc3lzdGVtX2Vycm9ycywgcF90aW1lb3V0LCBwX2F1dG9fc3RhcnRfZGJnLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXBfdXNlX2FsdF9zdGFjayA/IDAgOiBtX2FsdF9zdGFjay5nZXQoKSApOwotCi0gICAgaWYoICFzaWdzZXRqbXAoIHNpZ25hbF9oYW5kbGVyOjpqdW1wX2J1ZmZlcigpLCAxICkgKQotICAgICAgICByZXR1cm4gZGV0YWlsOjpkb19pbnZva2UoIG1fY3VzdG9tX3RyYW5zbGF0b3JzICwgRiApOwotICAgIGVsc2UKLSAgICAgICAgdGhyb3cgbG9jYWxfc2lnbmFsX2hhbmRsZXIuc3lzX3NpZygpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX1NFSF9CQVNFRF9TSUdOQUxfSEFORExJTkcpCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgIE1pY3Jvc29mdCBzdHJ1Y3R1cmVkIGV4Y2VwdGlvbiBoYW5kbGluZyAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHgwNTY0KSkKLW5hbWVzcGFjZSB7IHZvaWQgX3NldF9zZV90cmFuc2xhdG9yKCB2b2lkKiApIHt9IH0KLSNlbmRpZgotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgIG5kbmJvb3N0OjpkZXRhaWw6OnN5c3RlbV9zaWduYWxfZXhjZXB0aW9uICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBzeXN0ZW1fc2lnbmFsX2V4Y2VwdGlvbiB7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBleHBsaWNpdCAgICAgICAgICAgIHN5c3RlbV9zaWduYWxfZXhjZXB0aW9uKCBleGVjdXRpb25fbW9uaXRvciogZW0gKQotICAgIDogbV9lbSggZW0gKQotICAgICwgbV9zZV9pZCggMCApCi0gICAgLCBtX2ZhdWx0X2FkZHJlc3MoIDAgKQotICAgICwgbV9kaXIoIGZhbHNlICkKLSAgICB7fQotCi0gICAgdm9pZCAgICAgICAgICAgICAgICByZXBvcnQoKSBjb25zdDsKLSAgICBpbnQgICAgICAgICAgICAgICAgIG9wZXJhdG9yKCkoIHVuc2lnbmVkIGludCBpZCwgX0VYQ0VQVElPTl9QT0lOVEVSUyogZXhwcyApOwotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIGV4ZWN1dGlvbl9tb25pdG9yKiAgbV9lbTsKLQotICAgIHVuc2lnbmVkIGludCAgICAgICAgbV9zZV9pZDsKLSAgICB2b2lkKiAgICAgICAgICAgICAgIG1fZmF1bHRfYWRkcmVzczsKLSAgICBib29sICAgICAgICAgICAgICAgIG1fZGlyOwotfTsKLQotc3RhdGljIHZvaWQKLXNlaF9jYXRjaF9wcmV2ZW50ZXIoIHVuc2lnbmVkIGludCAvKiBpZCAqLywgX0VYQ0VQVElPTl9QT0lOVEVSUyogLyogZXhwcyAqLyApCi17Ci0gICAgdGhyb3c7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWludAotc3lzdGVtX3NpZ25hbF9leGNlcHRpb246Om9wZXJhdG9yKCkoIHVuc2lnbmVkIGludCBpZCwgX0VYQ0VQVElPTl9QT0lOVEVSUyogZXhwcyApCi17Ci0gICAgY29uc3QgdW5zaWduZWQgaW50IE1TRlRfQ1BQX0VYQ0VQVCA9IDB4RTA2ZDczNjM7IC8vIEVNU0MKLQotICAgIGlmKCAhbV9lbS0+cF9jYXRjaF9zeXN0ZW1fZXJyb3JzIHx8IChpZCA9PSBNU0ZUX0NQUF9FWENFUFQpICkKLSAgICAgICAgcmV0dXJuIEVYQ0VQVElPTl9DT05USU5VRV9TRUFSQ0g7Ci0KLSAgICBpZiggISFtX2VtLT5wX2F1dG9fc3RhcnRfZGJnICYmIGRlYnVnOjphdHRhY2hfZGVidWdnZXIoIGZhbHNlICkgKSB7Ci0gICAgICAgIG1fZW0tPnBfY2F0Y2hfc3lzdGVtX2Vycm9ycy52YWx1ZSA9IGZhbHNlOwotICAgICAgICBfc2V0X3NlX3RyYW5zbGF0b3IoICZzZWhfY2F0Y2hfcHJldmVudGVyICk7Ci0KLSAgICAgICAgcmV0dXJuIEVYQ0VQVElPTl9DT05USU5VRV9FWEVDVVRJT047Ci0gICAgfQotCi0gICAgbV9zZV9pZCA9IGlkOwotICAgIGlmKCBtX3NlX2lkID09IEVYQ0VQVElPTl9BQ0NFU1NfVklPTEFUSU9OICYmIGV4cHMtPkV4Y2VwdGlvblJlY29yZC0+TnVtYmVyUGFyYW1ldGVycyA9PSAyICkgewotICAgICAgICBtX2ZhdWx0X2FkZHJlc3MgPSAodm9pZCopZXhwcy0+RXhjZXB0aW9uUmVjb3JkLT5FeGNlcHRpb25JbmZvcm1hdGlvblsxXTsKLSAgICAgICAgbV9kaXIgICAgICAgICAgID0gZXhwcy0+RXhjZXB0aW9uUmVjb3JkLT5FeGNlcHRpb25JbmZvcm1hdGlvblswXSA9PSAwOwotICAgIH0KLQotICAgIHJldHVybiBFWENFUFRJT05fRVhFQ1VURV9IQU5ETEVSOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1zeXN0ZW1fc2lnbmFsX2V4Y2VwdGlvbjo6cmVwb3J0KCkgY29uc3QKLXsKLSAgICBzd2l0Y2goIG1fc2VfaWQgKSB7Ci0gICAgLy8gY2FzZXMgY2xhc3NpZmllZCBhcyBzeXN0ZW1fZmF0YWxfZXJyb3IKLSAgICBjYXNlIEVYQ0VQVElPTl9BQ0NFU1NfVklPTEFUSU9OOiB7Ci0gICAgICAgIGlmKCAhbV9mYXVsdF9hZGRyZXNzICkKLSAgICAgICAgICAgIGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZmF0YWxfZXJyb3IsICJtZW1vcnkgYWNjZXNzIHZpb2xhdGlvbiIgKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZGV0YWlsOjpyZXBvcnRfZXJyb3IoCi0gICAgICAgICAgICAgICAgZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2ZhdGFsX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAibWVtb3J5IGFjY2VzcyB2aW9sYXRpb24gb2NjdXJyZWQgYXQgYWRkcmVzcyAweCUwOGx4LCB3aGlsZSBhdHRlbXB0aW5nIHRvICVzIiwKLSAgICAgICAgICAgICAgICAgICAgbV9mYXVsdF9hZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICBtX2RpciA/ICIgcmVhZCBpbmFjY2Vzc2libGUgZGF0YSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiIHdyaXRlIHRvIGFuIGluYWNjZXNzaWJsZSAob3IgcHJvdGVjdGVkKSBhZGRyZXNzIgotICAgICAgICAgICAgICAgICAgICApOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBjYXNlIEVYQ0VQVElPTl9JTExFR0FMX0lOU1RSVUNUSU9OOgotICAgICAgICBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2ZhdGFsX2Vycm9yLCAiaWxsZWdhbCBpbnN0cnVjdGlvbiIgKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEVYQ0VQVElPTl9QUklWX0lOU1RSVUNUSU9OOgotICAgICAgICBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2ZhdGFsX2Vycm9yLCAidHJpZWQgdG8gZXhlY3V0ZSBhbiBpbnN0cnVjdGlvbiB3aG9zZSBvcGVyYXRpb24gaXMgbm90IGFsbG93ZWQgaW4gdGhlIGN1cnJlbnQgbWFjaGluZSBtb2RlIiApOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgRVhDRVBUSU9OX0lOX1BBR0VfRVJST1I6Ci0gICAgICAgIGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZmF0YWxfZXJyb3IsICJhY2Nlc3MgdG8gYSBtZW1vcnkgcGFnZSB0aGF0IGlzIG5vdCBwcmVzZW50IiApOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgRVhDRVBUSU9OX1NUQUNLX09WRVJGTE9XOgotICAgICAgICBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2ZhdGFsX2Vycm9yLCAic3RhY2sgb3ZlcmZsb3ciICk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBFWENFUFRJT05fTk9OQ09OVElOVUFCTEVfRVhDRVBUSU9OOgotICAgICAgICBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2ZhdGFsX2Vycm9yLCAidHJpZWQgdG8gY29udGludWUgZXhlY3V0aW9uIGFmdGVyIGEgbm9uIGNvbnRpbnVhYmxlIGV4Y2VwdGlvbiBvY2N1cnJlZCIgKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICAvLyBjYXNlcyBjbGFzc2lmaWVkIGFzIChub24tZmF0YWwpIHN5c3RlbV90cmFwCi0gICAgY2FzZSBFWENFUFRJT05fREFUQVRZUEVfTUlTQUxJR05NRU5UOgotICAgICAgICBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLCAiZGF0YSBtaXNhbGlnbm1lbnQiICk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBFWENFUFRJT05fSU5UX0RJVklERV9CWV9aRVJPOgotICAgICAgICBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLCAiaW50ZWdlciBkaXZpZGUgYnkgemVybyIgKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEVYQ0VQVElPTl9JTlRfT1ZFUkZMT1c6Ci0gICAgICAgIGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsICJpbnRlZ2VyIG92ZXJmbG93IiApOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgRVhDRVBUSU9OX0FSUkFZX0JPVU5EU19FWENFRURFRDoKLSAgICAgICAgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwgImFycmF5IGJvdW5kcyBleGNlZWRlZCIgKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEVYQ0VQVElPTl9GTFRfRElWSURFX0JZX1pFUk86Ci0gICAgICAgIGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsICJmbG9hdGluZyBwb2ludCBkaXZpZGUgYnkgemVybyIgKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEVYQ0VQVElPTl9GTFRfU1RBQ0tfQ0hFQ0s6Ci0gICAgICAgIGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RhY2sgb3ZlcmZsb3dlZCBvciB1bmRlcmZsb3dlZCBhcyB0aGUgcmVzdWx0IG9mIGEgZmxvYXRpbmctcG9pbnQgb3BlcmF0aW9uIiApOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgRVhDRVBUSU9OX0ZMVF9ERU5PUk1BTF9PUEVSQU5EOgotICAgICAgICBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9wZXJhbmQgb2YgZmxvYXRpbmcgcG9pbnQgb3BlcmF0aW9uIGlzIGRlbm9ybWFsIiApOwotICAgICAgICBicmVhazsKLQotIyBpZiAwIC8vICEhID8/IAotICAgIGNhc2UgRVhDRVBUSU9OX0ZMVF9JTkVYQUNUX1JFU1VMVDoKLSAgICAgICAgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXN1bHQgb2YgYSBmbG9hdGluZy1wb2ludCBvcGVyYXRpb24gY2Fubm90IGJlIHJlcHJlc2VudGVkIGV4YWN0bHkiICk7Ci0gICAgICAgIGJyZWFrOwotI2VuZGlmCi0KLSAgICBjYXNlIEVYQ0VQVElPTl9GTFRfT1ZFUkZMT1c6Ci0gICAgICAgIGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwb25lbnQgb2YgYSBmbG9hdGluZy1wb2ludCBvcGVyYXRpb24gaXMgZ3JlYXRlciB0aGFuIHRoZSBtYWduaXR1ZGUgYWxsb3dlZCBieSB0aGUgY29ycmVzcG9uZGluZyB0eXBlIiApOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgRVhDRVBUSU9OX0ZMVF9VTkRFUkZMT1c6Ci0gICAgICAgIGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwb25lbnQgb2YgYSBmbG9hdGluZy1wb2ludCBvcGVyYXRpb24gaXMgbGVzcyB0aGFuIHRoZSBtYWduaXR1ZGUgYWxsb3dlZCBieSB0aGUgY29ycmVzcG9uZGluZyB0eXBlIiApOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgRVhDRVBUSU9OX0ZMVF9JTlZBTElEX09QRVJBVElPTjoKLSAgICAgICAgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwgImZsb2F0aW5nIHBvaW50IGVycm9yIiApOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgRVhDRVBUSU9OX0JSRUFLUE9JTlQ6Ci0gICAgICAgIGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsICJicmVha3BvaW50IGVuY291bnRlcmVkIiApOwotICAgICAgICBicmVhazsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsICJ1bnJlY29nbml6ZWQgZXhjZXB0aW9uLiBJZDogMHglMDhseCIsIG1fc2VfaWQgKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgYXNzZXJ0X3JlcG9ydGluZ19mdW5jdGlvbiAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWludCBORE5CT09TVF9URVNUX0NBTExfREVDTAotYXNzZXJ0X3JlcG9ydGluZ19mdW5jdGlvbiggaW50IHJlcG9ydFR5cGUsIGNoYXIqIHVzZXJNZXNzYWdlLCBpbnQqICkKLXsKLSAgICBzd2l0Y2goIHJlcG9ydFR5cGUgKSB7Ci0gICAgY2FzZSBORE5CT09TVF9URVNUX0NSVF9BU1NFUlQ6Ci0gICAgICAgIGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjp1c2VyX2Vycm9yLCB1c2VyTWVzc2FnZSApOwotCi0gICAgICAgIHJldHVybiAxOyAvLyByZXR1cm4gdmFsdWUgYW5kIHJldFZhbCBhcmUgbm90IGltcG9ydGFudCBzaW5jZSB3ZSBuZXZlciByZWFjaCB0aGlzIGxpbmUKLSAgICBjYXNlIE5ETkJPT1NUX1RFU1RfQ1JUX0VSUk9SOgotICAgICAgICBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLCB1c2VyTWVzc2FnZSApOwotCi0gICAgICAgIHJldHVybiAxOyAvLyByZXR1cm4gdmFsdWUgYW5kIHJldFZhbCBhcmUgbm90IGltcG9ydGFudCBzaW5jZSB3ZSBuZXZlciByZWFjaCB0aGlzIGxpbmUKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gMDsgLy8gdXNlIHVzdWFsIHJlcG9ydGluZyBtZXRob2QKLSAgICB9Ci19IC8vIGFzc2VydF9yZXBvcnRpbmdfZnVuY3Rpb24KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZCBORE5CT09TVF9URVNUX0NBTExfREVDTAotaW52YWxpZF9wYXJhbV9oYW5kbGVyKCB3Y2hhcl90IGNvbnN0KiAvKiBleHByICovLCAKLSAgICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogLyogZnVuYyAqLywgCi0gICAgICAgICAgICAgICAgICAgICAgIHdjaGFyX3QgY29uc3QqIC8qIGZpbGUgKi8sIAotICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgICAvKiBsaW5lICovLAotICAgICAgICAgICAgICAgICAgICAgICB1aW50cHRyX3QgICAgICAvKiByZXNlcnZlZCAqLykKLXsKLSAgICBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6dXNlcl9lcnJvciwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIHBhcmFtZXRlciBkZXRlY3RlZCBieSBDIHJ1bnRpbWUgbGlicmFyeSIgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZCBORE5CT09TVF9URVNUX0NBTExfREVDTAotc3dpdGNoX2ZwX2V4Y2VwdGlvbnMoIGJvb2wgb25fb2ZmICkKLXsKLSAgICBpZiggIW9uX29mZiApCi0gICAgICAgIF9jbGVhcmZwKCk7Ci0KLSAgICBpbnQgY3cgPSA6Ol9jb250cm9sZnAoIDAsIDAgKTsKLQotICAgIGludCBleGNlcHRpb25zX21hc2sgPSBFTV9JTlZBTElEfEVNX0RFTk9STUFMfEVNX1pFUk9ESVZJREV8RU1fT1ZFUkZMT1d8RU1fVU5ERVJGTE9XOwotCi0gICAgaWYoIG9uX29mZiApCi0gICAgICAgIGN3ICY9IH5leGNlcHRpb25zX21hc2s7IC8vIFNldCB0aGUgZXhjZXB0aW9uIG1hc2tzIG9uLCB0dXJuIGV4Y2VwdGlvbnMgb2ZmCi0gICAgZWxzZQotICAgICAgICBjdyB8PSBleGNlcHRpb25zX21hc2s7ICAvLyBTZXQgdGhlIGV4Y2VwdGlvbiBtYXNrcyBvZmYsIHR1cm4gZXhjZXB0aW9ucyBvbgotCi0gICAgaWYoIG9uX29mZiApCi0gICAgICAgIF9jbGVhcmZwKCk7Ci0gICAgICAgIAotICAgIC8vIFNldCB0aGUgY29udHJvbCB3b3JkCi0gICAgOjpfY29udHJvbGZwKCBjdywgTUNXX0VNICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgIGV4ZWN1dGlvbl9tb25pdG9yOjpjYXRjaF9zaWduYWxzICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWludAotZXhlY3V0aW9uX21vbml0b3I6OmNhdGNoX3NpZ25hbHMoIHVuaXRfdGVzdDo6Y2FsbGJhY2swPGludD4gY29uc3QmIEYgKQotewotICAgIF9pbnZhbGlkX3BhcmFtZXRlcl9oYW5kbGVyIG9sZF9pcGggPSBfaW52YWxpZF9wYXJhbWV0ZXJfaGFuZGxlcigpOwotICAgIE5ETkJPT1NUX1RFU1RfQ1JUX0hPT0tfVFlQRSBvbGRfY3J0X2hvb2sgPSAwOwotCi0gICAgaWYoICFwX2NhdGNoX3N5c3RlbV9lcnJvcnMgKQotICAgICAgICBfc2V0X3NlX3RyYW5zbGF0b3IoICZkZXRhaWw6OnNlaF9jYXRjaF9wcmV2ZW50ZXIgKTsKLSAgICBlbHNlIHsKLSAgICAgICAgaWYoICEhcF9kZXRlY3RfZnBfZXhjZXB0aW9ucyApCi0gICAgICAgICAgICBkZXRhaWw6OnN3aXRjaF9mcF9leGNlcHRpb25zKCB0cnVlICk7Ci0KLSAgICAgICBvbGRfY3J0X2hvb2sgPSBORE5CT09TVF9URVNUX0NSVF9TRVRfSE9PSyggJmRldGFpbDo6YXNzZXJ0X3JlcG9ydGluZ19mdW5jdGlvbiApOwotCi0gICAgICAgb2xkX2lwaCA9IF9zZXRfaW52YWxpZF9wYXJhbWV0ZXJfaGFuZGxlciggCi0gICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8X2ludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXI+KCAmZGV0YWlsOjppbnZhbGlkX3BhcmFtX2hhbmRsZXIgKSApOwotICAgIH0KLQotICAgIGRldGFpbDo6c3lzdGVtX3NpZ25hbF9leGNlcHRpb24gU1NFKCB0aGlzICk7Ci0gICAgCi0gICAgaW50IHJldF92YWwgPSAwOwotCi0gICAgX190cnkgewotICAgICAgICBfX3RyeSB7Ci0gICAgICAgICAgICByZXRfdmFsID0gZGV0YWlsOjpkb19pbnZva2UoIG1fY3VzdG9tX3RyYW5zbGF0b3JzLCBGICk7Ci0gICAgICAgIH0KLSAgICAgICAgX19leGNlcHQoIFNTRSggR2V0RXhjZXB0aW9uQ29kZSgpLCBHZXRFeGNlcHRpb25JbmZvcm1hdGlvbigpICkgKSB7Ci0gICAgICAgICAgICB0aHJvdyBTU0U7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgX19maW5hbGx5IHsKLSAgICAgICAgaWYoICEhcF9jYXRjaF9zeXN0ZW1fZXJyb3JzICkgewotICAgICAgICAgICAgaWYoICEhcF9kZXRlY3RfZnBfZXhjZXB0aW9ucyApCi0gICAgICAgICAgICAgICAgZGV0YWlsOjpzd2l0Y2hfZnBfZXhjZXB0aW9ucyggZmFsc2UgKTsKLQotICAgICAgICAgICAgTkROQk9PU1RfVEVTVF9DUlRfU0VUX0hPT0soIG9sZF9jcnRfaG9vayApOwotCi0gICAgICAgICAgIF9zZXRfaW52YWxpZF9wYXJhbWV0ZXJfaGFuZGxlciggb2xkX2lwaCApOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHJldF92YWw7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNlbHNlICAvLyBkZWZhdWx0IHNpZ25hbCBoYW5kbGVyCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi1jbGFzcyBzeXN0ZW1fc2lnbmFsX2V4Y2VwdGlvbiB7Ci1wdWJsaWM6Ci0gICAgdm9pZCAgIHJlcG9ydCgpIGNvbnN0IHt9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotaW50Ci1leGVjdXRpb25fbW9uaXRvcjo6Y2F0Y2hfc2lnbmFscyggdW5pdF90ZXN0OjpjYWxsYmFjazA8aW50PiBjb25zdCYgRiApCi17Ci0gICAgcmV0dXJuIGRldGFpbDo6ZG9faW52b2tlKCBtX2N1c3RvbV90cmFuc2xhdG9ycyAsIEYgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2VuZGlmICAvLyBjaG9vc2Ugc2lnbmFsIGhhbmRsZXIKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgIGV4ZWN1dGlvbl9tb25pdG9yOjpleGVjdXRlICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1pbnQKLWV4ZWN1dGlvbl9tb25pdG9yOjpleGVjdXRlKCB1bml0X3Rlc3Q6OmNhbGxiYWNrMDxpbnQ+IGNvbnN0JiBGICkKLXsKLSAgICBpZiggZGVidWc6OnVuZGVyX2RlYnVnZ2VyKCkgKQotICAgICAgICBwX2NhdGNoX3N5c3RlbV9lcnJvcnMudmFsdWUgPSBmYWxzZTsKLQotICAgIHRyeSB7Ci0gICAgICAgIHJldHVybiBjYXRjaF9zaWduYWxzKCBGICk7Ci0gICAgfQotCi0gICAgLy8gIENhdGNoLWNsYXVzZSByZWZlcmVuY2UgYXJndW1lbnRzIGFyZSBhIGJpdCBkaWZmZXJlbnQgZnJvbSBmdW5jdGlvbgotICAgIC8vICBhcmd1bWVudHMgKElTTyAxNS4zIHBhcmFncmFwaHMgMTggJiAxOSkuICBBcHBhcmVudGx5IGNvbnN0IGlzbid0Ci0gICAgLy8gIHJlcXVpcmVkLiAgUHJvZ3JhbW1lcnMgYXNrIGZvciBjb25zdCBhbnlob3csIHNvIHdlIHN1cHBseSBpdC4gIFRoYXQncwotICAgIC8vICBlYXNpZXIgdGhhbiBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFib3V0IG5vbi1jb25zdCB1c2FnZS4KLQotICAgIGNhdGNoKCBjaGFyIGNvbnN0KiBleCApCi0gICAgICB7IGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpjcHBfZXhjZXB0aW9uX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkMgc3RyaW5nOiAlcyIsIGV4ICk7IH0KLSAgICBjYXRjaCggc3RkOjpzdHJpbmcgY29uc3QmIGV4ICkKLSAgICAgIHsgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OmNwcF9leGNlcHRpb25fZXJyb3IsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0ZDo6c3RyaW5nOiAlcyIsIGV4LmNfc3RyKCkgKTsgfQotCi0gICAgLy8gIHN0ZDo6IGV4Y2VwdGlvbnMKLQotICAgIGNhdGNoKCBzdGQ6OmJhZF9hbGxvYyBjb25zdCYgZXggKQotICAgICAgeyBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6Y3BwX2V4Y2VwdGlvbl9lcnJvciwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2V4Y2VwdGlvbl9jYXN0PG5kbmJvb3N0OjpleGNlcHRpb24gY29uc3Q+KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RkOjpiYWRfYWxsb2M6ICVzIiwgZXgud2hhdCgpICk7IH0KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8PSAweDA1NTEpCi0gICAgY2F0Y2goIHN0ZDo6YmFkX2Nhc3QgY29uc3QmIGV4ICkKLSAgICAgIHsgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OmNwcF9leGNlcHRpb25fZXJyb3IsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9leGNlcHRpb25fY2FzdDxuZG5ib29zdDo6ZXhjZXB0aW9uIGNvbnN0PigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0ZDo6YmFkX2Nhc3QiICk7IH0KLSAgICBjYXRjaCggc3RkOjpiYWRfdHlwZWlkIGNvbnN0JiBleCApCi0gICAgICB7IGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpjcHBfZXhjZXB0aW9uX2Vycm9yLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZXhjZXB0aW9uX2Nhc3Q8bmRuYm9vc3Q6OmV4Y2VwdGlvbiBjb25zdD4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGQ6OmJhZF90eXBlaWQiICk7IH0KLSNlbHNlCi0gICAgY2F0Y2goIHN0ZDo6YmFkX2Nhc3QgY29uc3QmIGV4ICkKLSAgICAgIHsgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OmNwcF9leGNlcHRpb25fZXJyb3IsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9leGNlcHRpb25fY2FzdDxuZG5ib29zdDo6ZXhjZXB0aW9uIGNvbnN0PigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0ZDo6YmFkX2Nhc3Q6ICVzIiwgZXgud2hhdCgpICk7IH0KLSAgICBjYXRjaCggc3RkOjpiYWRfdHlwZWlkIGNvbnN0JiBleCApCi0gICAgICB7IGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpjcHBfZXhjZXB0aW9uX2Vycm9yLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZXhjZXB0aW9uX2Nhc3Q8bmRuYm9vc3Q6OmV4Y2VwdGlvbiBjb25zdD4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGQ6OmJhZF90eXBlaWQ6ICVzIiwgZXgud2hhdCgpICk7IH0KLSNlbmRpZgotCi0gICAgY2F0Y2goIHN0ZDo6YmFkX2V4Y2VwdGlvbiBjb25zdCYgZXggKQotICAgICAgeyBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6Y3BwX2V4Y2VwdGlvbl9lcnJvciwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2V4Y2VwdGlvbl9jYXN0PG5kbmJvb3N0OjpleGNlcHRpb24gY29uc3Q+KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RkOjpiYWRfZXhjZXB0aW9uOiAlcyIsIGV4LndoYXQoKSApOyB9Ci0gICAgY2F0Y2goIHN0ZDo6ZG9tYWluX2Vycm9yIGNvbnN0JiBleCApCi0gICAgICB7IGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpjcHBfZXhjZXB0aW9uX2Vycm9yLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZXhjZXB0aW9uX2Nhc3Q8bmRuYm9vc3Q6OmV4Y2VwdGlvbiBjb25zdD4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGQ6OmRvbWFpbl9lcnJvcjogJXMiLCBleC53aGF0KCkgKTsgfQotICAgIGNhdGNoKCBzdGQ6OmludmFsaWRfYXJndW1lbnQgY29uc3QmIGV4ICkKLSAgICAgIHsgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OmNwcF9leGNlcHRpb25fZXJyb3IsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9leGNlcHRpb25fY2FzdDxuZG5ib29zdDo6ZXhjZXB0aW9uIGNvbnN0PigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0ZDo6aW52YWxpZF9hcmd1bWVudDogJXMiLCBleC53aGF0KCkgKTsgfQotICAgIGNhdGNoKCBzdGQ6Omxlbmd0aF9lcnJvciBjb25zdCYgZXggKQotICAgICAgeyBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6Y3BwX2V4Y2VwdGlvbl9lcnJvciwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2V4Y2VwdGlvbl9jYXN0PG5kbmJvb3N0OjpleGNlcHRpb24gY29uc3Q+KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RkOjpsZW5ndGhfZXJyb3I6ICVzIiwgZXgud2hhdCgpICk7IH0KLSAgICBjYXRjaCggc3RkOjpvdXRfb2ZfcmFuZ2UgY29uc3QmIGV4ICkKLSAgICAgIHsgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OmNwcF9leGNlcHRpb25fZXJyb3IsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9leGNlcHRpb25fY2FzdDxuZG5ib29zdDo6ZXhjZXB0aW9uIGNvbnN0PigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0ZDo6b3V0X29mX3JhbmdlOiAlcyIsIGV4LndoYXQoKSApOyB9Ci0gICAgY2F0Y2goIHN0ZDo6cmFuZ2VfZXJyb3IgY29uc3QmIGV4ICkKLSAgICAgIHsgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OmNwcF9leGNlcHRpb25fZXJyb3IsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9leGNlcHRpb25fY2FzdDxuZG5ib29zdDo6ZXhjZXB0aW9uIGNvbnN0PigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0ZDo6cmFuZ2VfZXJyb3I6ICVzIiwgZXgud2hhdCgpICk7IH0KLSAgICBjYXRjaCggc3RkOjpvdmVyZmxvd19lcnJvciBjb25zdCYgZXggKQotICAgICAgeyBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6Y3BwX2V4Y2VwdGlvbl9lcnJvciwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2V4Y2VwdGlvbl9jYXN0PG5kbmJvb3N0OjpleGNlcHRpb24gY29uc3Q+KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RkOjpvdmVyZmxvd19lcnJvcjogJXMiLCBleC53aGF0KCkgKTsgfQotICAgIGNhdGNoKCBzdGQ6OnVuZGVyZmxvd19lcnJvciBjb25zdCYgZXggKQotICAgICAgeyBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6Y3BwX2V4Y2VwdGlvbl9lcnJvciwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2V4Y2VwdGlvbl9jYXN0PG5kbmJvb3N0OjpleGNlcHRpb24gY29uc3Q+KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RkOjp1bmRlcmZsb3dfZXJyb3I6ICVzIiwgZXgud2hhdCgpICk7IH0KLSAgICBjYXRjaCggc3RkOjpsb2dpY19lcnJvciBjb25zdCYgZXggKQotICAgICAgeyBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6Y3BwX2V4Y2VwdGlvbl9lcnJvciwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2V4Y2VwdGlvbl9jYXN0PG5kbmJvb3N0OjpleGNlcHRpb24gY29uc3Q+KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RkOjpsb2dpY19lcnJvcjogJXMiLCBleC53aGF0KCkgKTsgfQotICAgIGNhdGNoKCBzdGQ6OnJ1bnRpbWVfZXJyb3IgY29uc3QmIGV4ICkKLSAgICAgIHsgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OmNwcF9leGNlcHRpb25fZXJyb3IsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9leGNlcHRpb25fY2FzdDxuZG5ib29zdDo6ZXhjZXB0aW9uIGNvbnN0PigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0ZDo6cnVudGltZV9lcnJvcjogJXMiLCBleC53aGF0KCkgKTsgfQotICAgIGNhdGNoKCBzdGQ6OmV4Y2VwdGlvbiBjb25zdCYgZXggKQotICAgICAgeyBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6Y3BwX2V4Y2VwdGlvbl9lcnJvciwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2V4Y2VwdGlvbl9jYXN0PG5kbmJvb3N0OjpleGNlcHRpb24gY29uc3Q+KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RkOjpleGNlcHRpb246ICVzIiwgZXgud2hhdCgpICk7IH0KLQotICAgIGNhdGNoKCBuZG5ib29zdDo6ZXhjZXB0aW9uIGNvbnN0JiBleCApCi0gICAgeyBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6Y3BwX2V4Y2VwdGlvbl9lcnJvciwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJmV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmtub3duIG5kbmJvb3N0OjpleGNlcHRpb24iICk7IH0KLQotICAgIC8vIHN5c3RlbSBlcnJvcnMKLSAgICBjYXRjaCggc3lzdGVtX2Vycm9yIGNvbnN0JiBleCApCi0gICAgICB7IGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpjcHBfZXhjZXB0aW9uX2Vycm9yLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzeXN0ZW1fZXJyb3IgcHJvZHVjZWQgYnk6ICVzOiAlcyIsIGV4LnBfZmFpbGVkX2V4cC5nZXQoKSwgc3RkOjpzdHJlcnJvciggZXgucF9lcnJubyApICk7IH0KLSAgICBjYXRjaCggZGV0YWlsOjpzeXN0ZW1fc2lnbmFsX2V4Y2VwdGlvbiBjb25zdCYgZXggKQotICAgICAgeyBleC5yZXBvcnQoKTsgfQotCi0gICAgLy8gbm90IGFuIGVycm9yCi0gICAgY2F0Y2goIGV4ZWN1dGlvbl9hYm9ydGVkIGNvbnN0JiApCi0gICAgICB7IHJldHVybiAwOyB9Ci0KLSAgICAvLyBqdXN0IGZvcndhcmQKLSAgICBjYXRjaCggZXhlY3V0aW9uX2V4Y2VwdGlvbiBjb25zdCYgKQotICAgICAgeyB0aHJvdzsgfQotCi0gICAgLy8gdW5rbm93biBlcnJvcgotICAgIGNhdGNoKCAuLi4gKQotICAgICAgeyBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6Y3BwX2V4Y2VwdGlvbl9lcnJvciwgInVua25vd24gdHlwZSIgKTsgfQotCi0gICAgcmV0dXJuIDA7ICAvLyBuZXZlciByZWFjaGVkOyBzdXBwbGllZCB0byBxdWlldCBjb21waWxlciB3YXJuaW5ncwotfSAvLyBleGVjdXRlCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgIHN5c3RlbV9lcnJvciAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotc3lzdGVtX2Vycm9yOjpzeXN0ZW1fZXJyb3IoIGNoYXIgY29uc3QqIGV4cCApCi0jaWZkZWYgVU5ERVJfQ0UKLTogcF9lcnJubyggR2V0TGFzdEVycm9yKCkgKQotI2Vsc2UKLTogcF9lcnJubyggZXJybm8gKQotI2VuZGlmCi0sIHBfZmFpbGVkX2V4cCggZXhwICkKLXt9Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgZXhlY3V0aW9uX2V4Y2VwdGlvbiAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotZXhlY3V0aW9uX2V4Y2VwdGlvbjo6ZXhlY3V0aW9uX2V4Y2VwdGlvbiggZXJyb3JfY29kZSBlY18sIGNvbnN0X3N0cmluZyB3aGF0X21zZ18sIGxvY2F0aW9uIGNvbnN0JiBsb2NhdGlvbl8gKQotOiBtX2Vycm9yX2NvZGUoIGVjXyApCi0sIG1fd2hhdCggd2hhdF9tc2dfLmVtcHR5KCkgPyBORE5CT09TVF9URVNUX0woICJ1bmNhdWdodCBleGNlcHRpb24sIHN5c3RlbSBlcnJvciBvciBhYm9ydCByZXF1ZXN0ZWQiICkgOiB3aGF0X21zZ18gKQotLCBtX2xvY2F0aW9uKCBsb2NhdGlvbl8gKQote30KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotZXhlY3V0aW9uX2V4Y2VwdGlvbjo6bG9jYXRpb246OmxvY2F0aW9uKCBjaGFyIGNvbnN0KiBmaWxlX25hbWUsIHNpemVfdCBsaW5lX251bSwgY2hhciBjb25zdCogZnVuYyApCi06IG1fZmlsZV9uYW1lKCBmaWxlX25hbWUgPyBmaWxlX25hbWUgOiAidW5rbm93biBsb2NhdGlvbiIgKQotLCBtX2xpbmVfbnVtKCBsaW5lX251bSApCi0sIG1fZnVuY3Rpb24oIGZ1bmMgKQote30KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX0VYRUNVVElPTl9NT05JVE9SX0lQUF8wMTIyMDVHRVIKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvZnJhbWV3b3JrLmlwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL2ZyYW1ld29yay5pcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkYTkwYzYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvZnJhbWV3b3JrLmlwcAorKysgL2Rldi9udWxsCkBAIC0xLDUwMyArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1Nzk5MSAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogaW1wbGVtZW50cyBmcmFtZXdvcmsgQVBJIC0gbWFpbiBkcml2ZXIgZm9yIHRoZSB0ZXN0Ci0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX0ZSQU1FV09SS19JUFBfMDIxMDA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfRlJBTUVXT1JLX0lQUF8wMjEwMDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZnJhbWV3b3JrLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2V4ZWN1dGlvbl9tb25pdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RlYnVnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9zdWl0ZV9pbXBsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9sb2cuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X21vbml0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdGVzdF9vYnNlcnZlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9yZXN1bHRzX2NvbGxlY3Rvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9wcm9ncmVzc19tb25pdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3Jlc3VsdHNfcmVwb3J0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdGVzdF90b29scy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC91bml0X3Rlc3RfcGFyYW1ldGVycy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZ2xvYmFsX3R5cGVkZWYuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9mb3JlYWNoLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90aW1lci5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPG1hcD4KLSNpbmNsdWRlIDxzZXQ+Ci0jaW5jbHVkZSA8Y3N0ZGxpYj4KLSNpbmNsdWRlIDxjdGltZT4KLQotI2lmZGVmIE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFCi1uYW1lc3BhY2Ugc3RkIHsgdXNpbmcgOjp0aW1lOyB1c2luZyA6OnNyYW5kOyB9Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgIHRlc3Rfc3RhcnQgY2FsbHMgd3JhcHBlciAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIHV0X2RldGFpbCB7Ci0KLXN0cnVjdCB0ZXN0X3N0YXJ0X2NhbGxlciB7Ci0gICAgdGVzdF9zdGFydF9jYWxsZXIoIHRlc3Rfb2JzZXJ2ZXIqIHRvLCBjb3VudGVyX3QgdGNfYW1vdW50ICkKLSAgICA6IG1fdG8oIHRvICkKLSAgICAsIG1fdGNfYW1vdW50KCB0Y19hbW91bnQgKQotICAgIHt9Ci0KLSAgICBpbnQgb3BlcmF0b3IoKSgpCi0gICAgewotICAgICAgICBtX3RvLT50ZXN0X3N0YXJ0KCBtX3RjX2Ftb3VudCApOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgdGVzdF9vYnNlcnZlciogIG1fdG87Ci0gICAgY291bnRlcl90ICAgICAgIG1fdGNfYW1vdW50OwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc3RydWN0IHRlc3RfaW5pdF9jYWxsZXIgewotICAgIGV4cGxpY2l0ICAgIHRlc3RfaW5pdF9jYWxsZXIoIGluaXRfdW5pdF90ZXN0X2Z1bmMgaW5pdF9mdW5jICkgCi0gICAgOiBtX2luaXRfZnVuYyggaW5pdF9mdW5jICkKLSAgICB7fQotICAgIGludCAgICAgICAgIG9wZXJhdG9yKCkoKQotICAgIHsKLSNpZmRlZiBORE5CT09TVF9URVNUX0FMVEVSTkFUSVZFX0lOSVRfQVBJCi0gICAgICAgIGlmKCAhKCptX2luaXRfZnVuYykoKSApCi0gICAgICAgICAgICB0aHJvdyBzdGQ6OnJ1bnRpbWVfZXJyb3IoICJ0ZXN0IG1vZHVsZSBpbml0aWFsaXphdGlvbiBmYWlsZWQiICk7Ci0jZWxzZQotICAgICAgICB0ZXN0X3N1aXRlKiAgbWFudWFsX3Rlc3RfdW5pdHMgPSAoKm1faW5pdF9mdW5jKSggZnJhbWV3b3JrOjptYXN0ZXJfdGVzdF9zdWl0ZSgpLmFyZ2MsIGZyYW1ld29yazo6bWFzdGVyX3Rlc3Rfc3VpdGUoKS5hcmd2ICk7Ci0KLSAgICAgICAgaWYoIG1hbnVhbF90ZXN0X3VuaXRzICkKLSAgICAgICAgICAgIGZyYW1ld29yazo6bWFzdGVyX3Rlc3Rfc3VpdGUoKS5hZGQoIG1hbnVhbF90ZXN0X3VuaXRzICk7Ci0jZW5kaWYKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgaW5pdF91bml0X3Rlc3RfZnVuYyBtX2luaXRfZnVuYzsKLX07Ci0KLX0KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgIGZyYW1ld29yayAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBmcmFtZXdvcmtfaW1wbCA6IHB1YmxpYyB0ZXN0X3RyZWVfdmlzaXRvciB7Ci1wdWJsaWM6Ci0gICAgZnJhbWV3b3JrX2ltcGwoKQotICAgIDogbV9tYXN0ZXJfdGVzdF9zdWl0ZSggMCApCi0gICAgLCBtX2N1cnJfdGVzdF9jYXNlKCBJTlZfVEVTVF9VTklUX0lEICkKLSAgICAsIG1fbmV4dF90ZXN0X2Nhc2VfaWQoIE1JTl9URVNUX0NBU0VfSUQgKQotICAgICwgbV9uZXh0X3Rlc3Rfc3VpdGVfaWQoIE1JTl9URVNUX1NVSVRFX0lEICkKLSAgICAsIG1faXNfaW5pdGlhbGl6ZWQoIGZhbHNlICkKLSAgICAsIG1fdGVzdF9pbl9wcm9ncmVzcyggZmFsc2UgKQotICAgIHt9Ci0KLSAgICB+ZnJhbWV3b3JrX2ltcGwoKSB7IGNsZWFyKCk7IH0KLQotICAgIHZvaWQgICAgICAgICAgICBjbGVhcigpCi0gICAgewotICAgICAgICB3aGlsZSggIW1fdGVzdF91bml0cy5lbXB0eSgpICkgewotICAgICAgICAgICAgdGVzdF91bml0X3N0b3JlOjp2YWx1ZV90eXBlIGNvbnN0JiB0dSAgICAgPSAqbV90ZXN0X3VuaXRzLmJlZ2luKCk7Ci0gICAgICAgICAgICB0ZXN0X3VuaXQqICAgICAgICAgICAgICAgICAgICAgICAgIHR1X3B0ciA9IHR1LnNlY29uZDsKLQotICAgICAgICAgICAgLy8gdGhlIGRlbGV0ZSB3aWxsIGVyYXNlIHRoaXMgZWxlbWVudCBmcm9tIG1hcAotICAgICAgICAgICAgaWYoIHV0X2RldGFpbDo6dGVzdF9pZF8yX3VuaXRfdHlwZSggdHUuc2Vjb25kLT5wX2lkICkgPT0gdHV0X3N1aXRlICkKLSAgICAgICAgICAgICAgICBkZWxldGUgICh0ZXN0X3N1aXRlIGNvbnN0Kil0dV9wdHI7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZGVsZXRlICAodGVzdF9jYXNlIGNvbnN0Kil0dV9wdHI7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkICAgICAgICAgICAgc2V0X3R1X2lkKCB0ZXN0X3VuaXQmIHR1LCB0ZXN0X3VuaXRfaWQgaWQgKSB7IHR1LnBfaWQudmFsdWUgPSBpZDsgfQotCi0gICAgLy8gdGVzdF90cmVlX3Zpc2l0b3IgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uCi0gICAgdm9pZCAgICAgICAgICAgIHZpc2l0KCB0ZXN0X2Nhc2UgY29uc3QmIHRjICkKLSAgICB7Ci0gICAgICAgIGlmKCAhdGMuY2hlY2tfZGVwZW5kZW5jaWVzKCkgKSB7Ci0gICAgICAgICAgICBORE5CT09TVF9URVNUX0ZPUkVBQ0goIHRlc3Rfb2JzZXJ2ZXIqLCB0bywgbV9vYnNlcnZlcnMgKQotICAgICAgICAgICAgICAgIHRvLT50ZXN0X3VuaXRfc2tpcHBlZCggdGMgKTsKLQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgTkROQk9PU1RfVEVTVF9GT1JFQUNIKCB0ZXN0X29ic2VydmVyKiwgdG8sIG1fb2JzZXJ2ZXJzICkKLSAgICAgICAgICAgIHRvLT50ZXN0X3VuaXRfc3RhcnQoIHRjICk7Ci0KLSAgICAgICAgbmRuYm9vc3Q6OnRpbWVyIHRjX3RpbWVyOwotICAgICAgICB0ZXN0X3VuaXRfaWQgYmt1cCA9IG1fY3Vycl90ZXN0X2Nhc2U7Ci0gICAgICAgIG1fY3Vycl90ZXN0X2Nhc2UgPSB0Yy5wX2lkOwotICAgICAgICB1bml0X3Rlc3RfbW9uaXRvcl90OjplcnJvcl9sZXZlbCBydW5fcmVzdWx0ID0gdW5pdF90ZXN0X21vbml0b3IuZXhlY3V0ZV9hbmRfdHJhbnNsYXRlKCB0YyApOwotCi0gICAgICAgIHVuc2lnbmVkIGxvbmcgZWxhcHNlZCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KCB0Y190aW1lci5lbGFwc2VkKCkgKiAxZTYgKTsKLQotICAgICAgICBpZiggdW5pdF90ZXN0X21vbml0b3IuaXNfY3JpdGljYWxfZXJyb3IoIHJ1bl9yZXN1bHQgKSApIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX1RFU1RfRk9SRUFDSCggdGVzdF9vYnNlcnZlciosIHRvLCBtX29ic2VydmVycyApCi0gICAgICAgICAgICAgICAgdG8tPnRlc3RfYWJvcnRlZCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgTkROQk9PU1RfVEVTVF9GT1JFQUNIKCB0ZXN0X29ic2VydmVyKiwgdG8sIG1fb2JzZXJ2ZXJzICkKLSAgICAgICAgICAgIHRvLT50ZXN0X3VuaXRfZmluaXNoKCB0YywgZWxhcHNlZCApOwotCi0gICAgICAgIG1fY3Vycl90ZXN0X2Nhc2UgPSBia3VwOwotCi0gICAgICAgIGlmKCB1bml0X3Rlc3RfbW9uaXRvci5pc19jcml0aWNhbF9lcnJvciggcnVuX3Jlc3VsdCApICkKLSAgICAgICAgICAgIHRocm93IHRlc3RfYmVpbmdfYWJvcnRlZCgpOwotICAgIH0KLQotICAgIGJvb2wgICAgICAgICAgICB0ZXN0X3N1aXRlX3N0YXJ0KCB0ZXN0X3N1aXRlIGNvbnN0JiB0cyApCi0gICAgewotICAgICAgICBpZiggIXRzLmNoZWNrX2RlcGVuZGVuY2llcygpICkgewotICAgICAgICAgICAgTkROQk9PU1RfVEVTVF9GT1JFQUNIKCB0ZXN0X29ic2VydmVyKiwgdG8sIG1fb2JzZXJ2ZXJzICkKLSAgICAgICAgICAgICAgICB0by0+dGVzdF91bml0X3NraXBwZWQoIHRzICk7Ci0KLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIE5ETkJPT1NUX1RFU1RfRk9SRUFDSCggdGVzdF9vYnNlcnZlciosIHRvLCBtX29ic2VydmVycyApCi0gICAgICAgICAgICB0by0+dGVzdF91bml0X3N0YXJ0KCB0cyApOwotCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHZvaWQgICAgICAgICAgICB0ZXN0X3N1aXRlX2ZpbmlzaCggdGVzdF9zdWl0ZSBjb25zdCYgdHMgKQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfVEVTVF9GT1JFQUNIKCB0ZXN0X29ic2VydmVyKiwgdG8sIG1fb2JzZXJ2ZXJzICkKLSAgICAgICAgICAgIHRvLT50ZXN0X3VuaXRfZmluaXNoKCB0cywgMCApOwotICAgIH0KLQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIHN0cnVjdCBwcmlvcml0eV9vcmRlciB7Ci0gICAgICAgIGJvb2wgb3BlcmF0b3IoKSggdGVzdF9vYnNlcnZlciogbGhzLCB0ZXN0X29ic2VydmVyKiByaHMgKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKGxocy0+cHJpb3JpdHkoKSA8IHJocy0+cHJpb3JpdHkoKSkgfHwgKChsaHMtPnByaW9yaXR5KCkgPT0gcmhzLT5wcmlvcml0eSgpKSAmJiAobGhzIDwgcmhzKSk7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgdHlwZWRlZiBzdGQ6Om1hcDx0ZXN0X3VuaXRfaWQsdGVzdF91bml0Kj4gICAgICAgdGVzdF91bml0X3N0b3JlOwotICAgIHR5cGVkZWYgc3RkOjpzZXQ8dGVzdF9vYnNlcnZlcioscHJpb3JpdHlfb3JkZXI+IG9ic2VydmVyX3N0b3JlOwotCi0gICAgbWFzdGVyX3Rlc3Rfc3VpdGVfdCogbV9tYXN0ZXJfdGVzdF9zdWl0ZTsKLSAgICB0ZXN0X3VuaXRfaWQgICAgbV9jdXJyX3Rlc3RfY2FzZTsKLSAgICB0ZXN0X3VuaXRfc3RvcmUgbV90ZXN0X3VuaXRzOwotCi0gICAgdGVzdF91bml0X2lkICAgIG1fbmV4dF90ZXN0X2Nhc2VfaWQ7Ci0gICAgdGVzdF91bml0X2lkICAgIG1fbmV4dF90ZXN0X3N1aXRlX2lkOwotCi0gICAgYm9vbCAgICAgICAgICAgIG1faXNfaW5pdGlhbGl6ZWQ7Ci0gICAgYm9vbCAgICAgICAgICAgIG1fdGVzdF9pbl9wcm9ncmVzczsKLQotICAgIG9ic2VydmVyX3N0b3JlICBtX29ic2VydmVyczsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSB7Ci0KLSNpZiBkZWZpbmVkKF9fQ1lHV0lOX18pCi1mcmFtZXdvcmtfaW1wbCYgc19mcmtfaW1wbCgpIHsgc3RhdGljIGZyYW1ld29ya19pbXBsKiB0aGVfaW5zdCA9IDA7IGlmKCF0aGVfaW5zdCkgdGhlX2luc3QgPSBuZXcgZnJhbWV3b3JrX2ltcGw7IHJldHVybiAqdGhlX2luc3Q7IH0KLSNlbHNlCi1mcmFtZXdvcmtfaW1wbCYgc19mcmtfaW1wbCgpIHsgc3RhdGljIGZyYW1ld29ya19pbXBsIHRoZV9pbnN0OyByZXR1cm4gdGhlX2luc3Q7IH0KLSNlbmRpZgotCi19IC8vIGxvY2FsIG5hbWVzcGFjZQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgZnJhbWV3b3JrIHsKLQotdm9pZAotaW5pdCggaW5pdF91bml0X3Rlc3RfZnVuYyBpbml0X2Z1bmMsIGludCBhcmdjLCBjaGFyKiBhcmd2W10gKQotewotICAgIHJ1bnRpbWVfY29uZmlnOjppbml0KCBhcmdjLCBhcmd2ICk7Ci0KLSAgICAvLyBzZXQgdGhlIGxvZyBsZXZlbCBhbmQgZm9ybWF0Ci0gICAgdW5pdF90ZXN0X2xvZy5zZXRfdGhyZXNob2xkX2xldmVsKCBydW50aW1lX2NvbmZpZzo6bG9nX2xldmVsKCkgKTsKLSAgICB1bml0X3Rlc3RfbG9nLnNldF9mb3JtYXQoIHJ1bnRpbWVfY29uZmlnOjpsb2dfZm9ybWF0KCkgKTsKLQotICAgIC8vIHNldCB0aGUgcmVwb3J0IGxldmVsIGFuZCBmb3JtYXQKLSAgICByZXN1bHRzX3JlcG9ydGVyOjpzZXRfbGV2ZWwoIHJ1bnRpbWVfY29uZmlnOjpyZXBvcnRfbGV2ZWwoKSApOwotICAgIHJlc3VsdHNfcmVwb3J0ZXI6OnNldF9mb3JtYXQoIHJ1bnRpbWVfY29uZmlnOjpyZXBvcnRfZm9ybWF0KCkgKTsKLQotICAgIHJlZ2lzdGVyX29ic2VydmVyKCByZXN1bHRzX2NvbGxlY3RvciApOwotICAgIHJlZ2lzdGVyX29ic2VydmVyKCB1bml0X3Rlc3RfbG9nICk7Ci0KLSAgICBpZiggcnVudGltZV9jb25maWc6OnNob3dfcHJvZ3Jlc3MoKSApCi0gICAgICAgIHJlZ2lzdGVyX29ic2VydmVyKCBwcm9ncmVzc19tb25pdG9yICk7Ci0KLSAgICBpZiggcnVudGltZV9jb25maWc6OmRldGVjdF9tZW1vcnlfbGVha3MoKSA+IDAgKSB7Ci0gICAgICAgIGRlYnVnOjpkZXRlY3RfbWVtb3J5X2xlYWtzKCB0cnVlICk7Ci0gICAgICAgIGRlYnVnOjpicmVha19tZW1vcnlfYWxsb2MoIHJ1bnRpbWVfY29uZmlnOjpkZXRlY3RfbWVtb3J5X2xlYWtzKCkgKTsKLSAgICB9Ci0KLSAgICAvLyBpbml0IG1hc3RlciB1bml0IHRlc3Qgc3VpdGUKLSAgICBtYXN0ZXJfdGVzdF9zdWl0ZSgpLmFyZ2MgPSBhcmdjOwotICAgIG1hc3Rlcl90ZXN0X3N1aXRlKCkuYXJndiA9IGFyZ3Y7Ci0KLSAgICB0cnkgewotICAgICAgICBuZG5ib29zdDo6ZXhlY3V0aW9uX21vbml0b3IgZW07Ci0KLSAgICAgICAgdXRfZGV0YWlsOjp0ZXN0X2luaXRfY2FsbGVyIHRpYyggaW5pdF9mdW5jICk7Ci0KLSAgICAgICAgZW0uZXhlY3V0ZSggdGljICk7Ci0gICAgfQotICAgIGNhdGNoKCBleGVjdXRpb25fZXhjZXB0aW9uIGNvbnN0JiBleCApICB7Ci0gICAgICAgIHRocm93IHNldHVwX2Vycm9yKCBleC53aGF0KCkgKTsKLSAgICB9Ci0KLSAgICBzX2Zya19pbXBsKCkubV9pc19pbml0aWFsaXplZCA9IHRydWU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWJvb2wKLWlzX2luaXRpYWxpemVkKCkKLXsKLSAgICByZXR1cm4gIHNfZnJrX2ltcGwoKS5tX2lzX2luaXRpYWxpemVkOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1yZWdpc3Rlcl90ZXN0X3VuaXQoIHRlc3RfY2FzZSogdGMgKQotewotICAgIE5ETkJPT1NUX1RFU1RfU0VUVVBfQVNTRVJUKCB0Yy0+cF9pZCA9PSBJTlZfVEVTVF9VTklUX0lELCBORE5CT09TVF9URVNUX0woICJ0ZXN0IGNhc2UgYWxyZWFkeSByZWdpc3RlcmVkIiApICk7Ci0KLSAgICB0ZXN0X3VuaXRfaWQgbmV3X2lkID0gc19mcmtfaW1wbCgpLm1fbmV4dF90ZXN0X2Nhc2VfaWQ7Ci0KLSAgICBORE5CT09TVF9URVNUX1NFVFVQX0FTU0VSVCggbmV3X2lkICE9IE1BWF9URVNUX0NBU0VfSUQsIE5ETkJPT1NUX1RFU1RfTCggInRvbyBtYW55IHRlc3QgY2FzZXMiICkgKTsKLQotICAgIHR5cGVkZWYgZnJhbWV3b3JrX2ltcGw6OnRlc3RfdW5pdF9zdG9yZTo6dmFsdWVfdHlwZSBtYXBfdmFsdWVfdHlwZTsKLQotICAgIHNfZnJrX2ltcGwoKS5tX3Rlc3RfdW5pdHMuaW5zZXJ0KCBtYXBfdmFsdWVfdHlwZSggbmV3X2lkLCB0YyApICk7Ci0gICAgc19mcmtfaW1wbCgpLm1fbmV4dF90ZXN0X2Nhc2VfaWQrKzsKLQotICAgIHNfZnJrX2ltcGwoKS5zZXRfdHVfaWQoICp0YywgbmV3X2lkICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXJlZ2lzdGVyX3Rlc3RfdW5pdCggdGVzdF9zdWl0ZSogdHMgKQotewotICAgIE5ETkJPT1NUX1RFU1RfU0VUVVBfQVNTRVJUKCB0cy0+cF9pZCA9PSBJTlZfVEVTVF9VTklUX0lELCBORE5CT09TVF9URVNUX0woICJ0ZXN0IHN1aXRlIGFscmVhZHkgcmVnaXN0ZXJlZCIgKSApOwotCi0gICAgdGVzdF91bml0X2lkIG5ld19pZCA9IHNfZnJrX2ltcGwoKS5tX25leHRfdGVzdF9zdWl0ZV9pZDsKLQotICAgIE5ETkJPT1NUX1RFU1RfU0VUVVBfQVNTRVJUKCBuZXdfaWQgIT0gTUFYX1RFU1RfU1VJVEVfSUQsIE5ETkJPT1NUX1RFU1RfTCggInRvbyBtYW55IHRlc3Qgc3VpdGVzIiApICk7Ci0KLSAgICB0eXBlZGVmIGZyYW1ld29ya19pbXBsOjp0ZXN0X3VuaXRfc3RvcmU6OnZhbHVlX3R5cGUgbWFwX3ZhbHVlX3R5cGU7Ci0gICAgc19mcmtfaW1wbCgpLm1fdGVzdF91bml0cy5pbnNlcnQoIG1hcF92YWx1ZV90eXBlKCBuZXdfaWQsIHRzICkgKTsKLSAgICBzX2Zya19pbXBsKCkubV9uZXh0X3Rlc3Rfc3VpdGVfaWQrKzsKLQotICAgIHNfZnJrX2ltcGwoKS5zZXRfdHVfaWQoICp0cywgbmV3X2lkICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLWRlcmVnaXN0ZXJfdGVzdF91bml0KCB0ZXN0X3VuaXQqIHR1ICkKLXsKLSAgICBzX2Zya19pbXBsKCkubV90ZXN0X3VuaXRzLmVyYXNlKCB0dS0+cF9pZCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1jbGVhcigpCi17Ci0gICAgc19mcmtfaW1wbCgpLmNsZWFyKCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXJlZ2lzdGVyX29ic2VydmVyKCB0ZXN0X29ic2VydmVyJiB0byApCi17Ci0gICAgc19mcmtfaW1wbCgpLm1fb2JzZXJ2ZXJzLmluc2VydCggJnRvICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLWRlcmVnaXN0ZXJfb2JzZXJ2ZXIoIHRlc3Rfb2JzZXJ2ZXImIHRvICkKLXsKLSAgICBzX2Zya19pbXBsKCkubV9vYnNlcnZlcnMuZXJhc2UoICZ0byApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1yZXNldF9vYnNlcnZlcnMoKQotewotICAgIHNfZnJrX2ltcGwoKS5tX29ic2VydmVycy5jbGVhcigpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1tYXN0ZXJfdGVzdF9zdWl0ZV90JgotbWFzdGVyX3Rlc3Rfc3VpdGUoKQotewotICAgIGlmKCAhc19mcmtfaW1wbCgpLm1fbWFzdGVyX3Rlc3Rfc3VpdGUgKQotICAgICAgICBzX2Zya19pbXBsKCkubV9tYXN0ZXJfdGVzdF9zdWl0ZSA9IG5ldyBtYXN0ZXJfdGVzdF9zdWl0ZV90OwotCi0gICAgcmV0dXJuICpzX2Zya19pbXBsKCkubV9tYXN0ZXJfdGVzdF9zdWl0ZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVzdF9jYXNlIGNvbnN0JgotY3VycmVudF90ZXN0X2Nhc2UoKQotewotICAgIHJldHVybiBnZXQ8dGVzdF9jYXNlPiggc19mcmtfaW1wbCgpLm1fY3Vycl90ZXN0X2Nhc2UgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVzdF91bml0JgotZ2V0KCB0ZXN0X3VuaXRfaWQgaWQsIHRlc3RfdW5pdF90eXBlIHQgKQotewotICAgIHRlc3RfdW5pdCogcmVzID0gc19mcmtfaW1wbCgpLm1fdGVzdF91bml0c1tpZF07Ci0KLSAgICBpZiggKHJlcy0+cF90eXBlICYgdCkgPT0gMCApCi0gICAgICAgIHRocm93IGludGVybmFsX2Vycm9yKCAiSW52YWxpZCB0ZXN0IHVuaXQgdHlwZSIgKTsKLQotICAgIHJldHVybiAqcmVzOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1ydW4oIHRlc3RfdW5pdF9pZCBpZCwgYm9vbCBjb250aW51ZV90ZXN0ICkKLXsKLSAgICBpZiggaWQgPT0gSU5WX1RFU1RfVU5JVF9JRCApCi0gICAgICAgIGlkID0gbWFzdGVyX3Rlc3Rfc3VpdGUoKS5wX2lkOwotCi0gICAgdGVzdF9jYXNlX2NvdW50ZXIgdGNjOwotICAgIHRyYXZlcnNlX3Rlc3RfdHJlZSggaWQsIHRjYyApOwotCi0gICAgTkROQk9PU1RfVEVTVF9TRVRVUF9BU1NFUlQoIHRjYy5wX2NvdW50ICE9IDAgLCBydW50aW1lX2NvbmZpZzo6dGVzdF90b19ydW4oKS5pc19lbXB0eSgpIAotICAgICAgICA/IE5ETkJPT1NUX1RFU1RfTCggInRlc3QgdHJlZSBpcyBlbXB0eSIgKSAKLSAgICAgICAgOiBORE5CT09TVF9URVNUX0woICJubyB0ZXN0IGNhc2VzIG1hdGNoaW5nIGZpbHRlciIgKSApOwotCi0gICAgYm9vbCAgICBjYWxsX3N0YXJ0X2ZpbmlzaCAgID0gIWNvbnRpbnVlX3Rlc3QgfHwgIXNfZnJrX2ltcGwoKS5tX3Rlc3RfaW5fcHJvZ3Jlc3M7Ci0gICAgYm9vbCAgICB3YXNfaW5fcHJvZ3Jlc3MgICAgID0gc19mcmtfaW1wbCgpLm1fdGVzdF9pbl9wcm9ncmVzczsKLQotICAgIHNfZnJrX2ltcGwoKS5tX3Rlc3RfaW5fcHJvZ3Jlc3MgPSB0cnVlOwotCi0gICAgaWYoIGNhbGxfc3RhcnRfZmluaXNoICkgewotICAgICAgICBORE5CT09TVF9URVNUX0ZPUkVBQ0goIHRlc3Rfb2JzZXJ2ZXIqLCB0bywgc19mcmtfaW1wbCgpLm1fb2JzZXJ2ZXJzICkgewotICAgICAgICAgICAgbmRuYm9vc3Q6OmV4ZWN1dGlvbl9tb25pdG9yIGVtOwotCi0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGVtLmV4ZWN1dGUoIHV0X2RldGFpbDo6dGVzdF9zdGFydF9jYWxsZXIoIHRvLCB0Y2MucF9jb3VudCApICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXRjaCggZXhlY3V0aW9uX2V4Y2VwdGlvbiBjb25zdCYgZXggKSAgewotICAgICAgICAgICAgICAgIHRocm93IHNldHVwX2Vycm9yKCBleC53aGF0KCkgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHN3aXRjaCggcnVudGltZV9jb25maWc6OnJhbmRvbV9zZWVkKCkgKSB7Ci0gICAgY2FzZSAwOgotICAgICAgICBicmVhazsKLSAgICBjYXNlIDE6IHsKLSAgICAgICAgdW5zaWduZWQgaW50IHNlZWQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KCBzdGQ6OnRpbWUoIDAgKSApOwotICAgICAgICBORE5CT09TVF9URVNUX01FU1NBR0UoICJUZXN0IGNhc2VzIG9yZGVyIGlzIHNodWZmbGVkIHVzaW5nIHNlZWQ6ICIgPDwgc2VlZCApOwotICAgICAgICBzdGQ6OnNyYW5kKCBzZWVkICk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBkZWZhdWx0OgotICAgICAgICBORE5CT09TVF9URVNUX01FU1NBR0UoICJUZXN0IGNhc2VzIG9yZGVyIGlzIHNodWZmbGVkIHVzaW5nIHNlZWQ6ICIgPDwgcnVudGltZV9jb25maWc6OnJhbmRvbV9zZWVkKCkgKTsKLSAgICAgICAgc3RkOjpzcmFuZCggcnVudGltZV9jb25maWc6OnJhbmRvbV9zZWVkKCkgKTsKLSAgICB9Ci0KLSAgICB0cnkgewotICAgICAgICB0cmF2ZXJzZV90ZXN0X3RyZWUoIGlkLCBzX2Zya19pbXBsKCkgKTsKLSAgICB9Ci0gICAgY2F0Y2goIHRlc3RfYmVpbmdfYWJvcnRlZCBjb25zdCYgKSB7Ci0gICAgICAgIC8vIGFib3J0IGFscmVhZHkgcmVwb3J0ZWQKLSAgICB9Ci0KLSAgICBpZiggY2FsbF9zdGFydF9maW5pc2ggKSB7Ci0gICAgICAgIE5ETkJPT1NUX1RFU1RfRk9SRUFDSCggdGVzdF9vYnNlcnZlciosIHRvLCBzX2Zya19pbXBsKCkubV9vYnNlcnZlcnMgKQotICAgICAgICAgICAgdG8tPnRlc3RfZmluaXNoKCk7Ci0gICAgfQotCi0gICAgc19mcmtfaW1wbCgpLm1fdGVzdF9pbl9wcm9ncmVzcyA9IHdhc19pbl9wcm9ncmVzczsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotcnVuKCB0ZXN0X3VuaXQgY29uc3QqIHR1LCBib29sIGNvbnRpbnVlX3Rlc3QgKQotewotICAgIHJ1biggdHUtPnBfaWQsIGNvbnRpbnVlX3Rlc3QgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotYXNzZXJ0aW9uX3Jlc3VsdCggYm9vbCBwYXNzZWQgKQotewotICAgIE5ETkJPT1NUX1RFU1RfRk9SRUFDSCggdGVzdF9vYnNlcnZlciosIHRvLCBzX2Zya19pbXBsKCkubV9vYnNlcnZlcnMgKQotICAgICAgICB0by0+YXNzZXJ0aW9uX3Jlc3VsdCggcGFzc2VkICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLWV4Y2VwdGlvbl9jYXVnaHQoIGV4ZWN1dGlvbl9leGNlcHRpb24gY29uc3QmIGV4ICkKLXsKLSAgICBORE5CT09TVF9URVNUX0ZPUkVBQ0goIHRlc3Rfb2JzZXJ2ZXIqLCB0bywgc19mcmtfaW1wbCgpLm1fb2JzZXJ2ZXJzICkKLSAgICAgICAgdG8tPmV4Y2VwdGlvbl9jYXVnaHQoIGV4ICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXRlc3RfdW5pdF9hYm9ydGVkKCB0ZXN0X3VuaXQgY29uc3QmIHR1ICkKLXsKLSAgICBORE5CT09TVF9URVNUX0ZPUkVBQ0goIHRlc3Rfb2JzZXJ2ZXIqLCB0bywgc19mcmtfaW1wbCgpLm1fb2JzZXJ2ZXJzICkKLSAgICAgICAgdG8tPnRlc3RfdW5pdF9hYm9ydGVkKCB0dSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBmcmFtZXdvcmsKLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9GUkFNRVdPUktfSVBQXzAyMTAwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvaW50ZXJhY3Rpb25fYmFzZWQuaXBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvaW50ZXJhY3Rpb25fYmFzZWQuaXBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZDEyZmFlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL2ludGVyYWN0aW9uX2Jhc2VkLmlwcAorKysgL2Rldi9udWxsCkBAIC0xLDkwICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBGYWNpbGl0aWVzIHRvIHBlcmZvcm0gaW50ZXJhY3Rpb24tYmFzZWQgdGVzdGluZwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9JTlRFUkFDVElPTl9CQVNFRF9JUFBfMTEyMTA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfSU5URVJBQ1RJT05fQkFTRURfSVBQXzExMjEwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvY29uZmlnLmhwcD4KLQotI2lmIE5ETkJPT1NUX1RFU1RfU1VQUE9SVF9JTlRFUkFDVElPTl9URVNUSU5HCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvY2FsbGJhY2suaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvaW50ZXJhY3Rpb25fYmFzZWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvbW9ja19vYmplY3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZnJhbWV3b3JrLmhwcD4gICAgIC8vIGZvciBzZXR1cF9lcnJvcgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxzdGRleGNlcHQ+Ci0jaW5jbHVkZSA8c3RyaW5nPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgaXRlc3QgeyAvLyBpbnRlcmFjdGlvbi1iYXNlZCB0ZXN0aW5nCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgICAgbWFuYWdlciAgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbWFuYWdlcjo6bWFuYWdlcigpCi17Ci0gICAgaW5zdGFuY2VfcHRyKCB0cnVlLCB0aGlzICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW1hbmFnZXI6On5tYW5hZ2VyKCkKLXsKLSAgICBpbnN0YW5jZV9wdHIoIHRydWUgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLSAgICAKLW1hbmFnZXIqCi1tYW5hZ2VyOjppbnN0YW5jZV9wdHIoIGJvb2wgcmVzZXQsIG1hbmFnZXIqIG5ld19wdHIgKQotewotICAgIHN0YXRpYyBtYW5hZ2VyIGR1bW15KCAwICk7Ci0gICAgCi0gICAgc3RhdGljIG1hbmFnZXIqIHB0ciA9ICZkdW1teTsKLSAgICAKLSAgICBpZiggcmVzZXQgKSB7Ci0gICAgICAgIGlmKCBuZXdfcHRyICkgewotICAgICAgICAgICAgTkROQk9PU1RfVEVTVF9TRVRVUF9BU1NFUlQoIHB0ciA9PSAmZHVtbXksIE5ETkJPT1NUX1RFU1RfTCggIkNhbid0IHJ1biB0d28gaW50ZXJhdGlvbiBiYXNlZCB0ZXN0IHRoZSBzYW1lIHRpbWUiICkgKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIHB0ciA9IG5ld19wdHI7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcHRyID0gJmR1bW15OwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gcHRyOwotfQotICAgIAotfSAgLy8gbmFtZXNwYWNlIGl0ZXN0Ci0KLX0gIC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIG5vdCBhbmNpZW50IGNvbXBpbGVyCi0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX0lOVEVSQUNUSU9OX0JBU0VEX0lQUF8xMTIxMDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL2xvZ2dlZF9leHBlY3RhdGlvbnMuaXBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvbG9nZ2VkX2V4cGVjdGF0aW9ucy5pcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmZTk2MWEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvbG9nZ2VkX2V4cGVjdGF0aW9ucy5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNDYgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIEVMT0dfVkVSIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBGYWNpbGl0aWVzIHRvIHBlcmZvcm0gaW50ZXJhY3Rpb24gYmFzZWQgdGVzdG5nIG9mIGxvZ2dlZCBleHBlY3RhdGlvbnMKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfTE9HR0VEX0VYUEVDVEFUSU9OU19JUFBfMTIwOTA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfTE9HR0VEX0VYUEVDVEFUSU9OU19JUFBfMTIwOTA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9jb25maWcuaHBwPgotCi0jaWYgTkROQk9PU1RfVEVTVF9TVVBQT1JUX0lOVEVSQUNUSU9OX1RFU1RJTkcKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2dsb2JhbF90eXBlZGVmLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvY2FsbGJhY2suaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvaXRlcmF0b3IvdG9rZW5faXRlcmF0b3IuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9pbnRlcmFjdGlvbl9iYXNlZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC90ZXN0X3Rvb2xzLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9sZXhpY2FsX2Nhc3QuaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxmc3RyZWFtPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi11c2luZyBuYW1lc3BhY2UgOjpuZG5ib29zdDo6dW5pdF90ZXN0OwotCi1uYW1lc3BhY2UgaXRlc3QgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgbG9nZ2VkIGV4cGVjdGF0aW9uIHRlc3QgaW1wbGVtZW50YXRpb24gICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXN0cnVjdCBleHBlY3RhdGlvbnNfbG9nZ2VyIDogaXRlc3Q6Om1hbmFnZXIgewotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgZXhwZWN0YXRpb25zX2xvZ2dlciggY29uc3Rfc3RyaW5nIGxvZ19maWxlX25hbWUsIGJvb2wgdGVzdF9vcl9sb2cgKTsKLQotICAgIHZpcnR1YWwgYm9vbCAgICAgICAgZGVjaXNpb25fcG9pbnQoIGNvbnN0X3N0cmluZywgc3RkOjpzaXplX3QgKTsKLSAgICB2aXJ0dWFsIHVuc2lnbmVkICAgIGVudGVyX3Njb3BlKCBjb25zdF9zdHJpbmcsIHN0ZDo6c2l6ZV90LCBjb25zdF9zdHJpbmcgc2NvcGVfbmFtZSApOwotICAgIHZpcnR1YWwgdm9pZCAgICAgICAgYWxsb2NhdGVkKCBjb25zdF9zdHJpbmcsIHN0ZDo6c2l6ZV90LCB2b2lkKiwgc3RkOjpzaXplX3QgcyApOwotICAgIHZpcnR1YWwgdm9pZCAgICAgICAgZGF0YV9mbG93KCBjb25zdF9zdHJpbmcgZCApOwotICAgIHZpcnR1YWwgc3RkOjpzdHJpbmcgcmV0dXJuX3ZhbHVlKCBjb25zdF9zdHJpbmcgZGVmYXVsdF92YWx1ZSApOwotICAgIAotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBib29sICAgICAgICAgICAgbV90ZXN0X29yX2xvZzsKLSAgICBzdGQ6OmZzdHJlYW0gICAgbV9sb2dfZmlsZTsKLX07Ci0KLWxpdGVyYWxfc3RyaW5nIEVMT0dfVkVSICAgICA9ICIxLjAiOwotbGl0ZXJhbF9zdHJpbmcgQ0xNTl9TRVAgICAgID0gInwiOwotc3RhdGljIGNvbnN0IGNoYXIgTElORV9TRVAgID0gJ1xuJzsKLQotbGl0ZXJhbF9zdHJpbmcgRklMRV9TSUcgICAgID0gIkVMT0ciOwotbGl0ZXJhbF9zdHJpbmcgU0NPUEVfU0lHICAgID0gIlNDT1BFIjsKLWxpdGVyYWxfc3RyaW5nIEFMTE9DX1NJRyAgICA9ICJBTExPQyI7Ci1saXRlcmFsX3N0cmluZyBEUF9TSUcgICAgICAgPSAiU1dJVENIIjsKLWxpdGVyYWxfc3RyaW5nIERBVEFfU0lHICAgICA9ICJEQVRBIjsKLWxpdGVyYWxfc3RyaW5nIFJFVFVSTl9TSUcgICA9ICJSRVRVUk4iOwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1leHBlY3RhdGlvbnNfbG9nZ2VyOjpleHBlY3RhdGlvbnNfbG9nZ2VyKCBjb25zdF9zdHJpbmcgbG9nX2ZpbGVfbmFtZSwgYm9vbCB0ZXN0X29yX2xvZyApCi06IG1fdGVzdF9vcl9sb2coIHRlc3Rfb3JfbG9nICkKLXsKLSAgICBORE5CT09TVF9SRVFVSVJFX01FU1NBR0UoICFsb2dfZmlsZV9uYW1lLmlzX2VtcHR5KCksICJFbXB0eSBleHBlY3RhdGlvbnMgbG9nIGZpbGUgbmFtZSIgKTsKLQotICAgIG1fbG9nX2ZpbGUub3BlbiggbG9nX2ZpbGVfbmFtZS5iZWdpbigpLCB0ZXN0X29yX2xvZyA/IHN0ZDo6aW9zOjppbiA6IHN0ZDo6aW9zOjpvdXQgKTsKLQotICAgIE5ETkJPT1NUX1JFUVVJUkVfTUVTU0FHRSggbV9sb2dfZmlsZS5pc19vcGVuKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2FuJ3Qgb3BlbiBleHBlY3RhdGlvbnMgbG9nIGZpbGUgIiA8PCBsb2dfZmlsZV9uYW1lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIgZm9yICIgPDwgKCBtX3Rlc3Rfb3JfbG9nID8gInJlYWRpbmciIDogIndyaXRpbmciKSApOwotCi0gICAgaWYoIG1fdGVzdF9vcl9sb2cgKSB7Ci0gICAgICAgIHN0ZDo6c3RyaW5nIGxpbmU7Ci0gICAgICAgIAotICAgICAgICBzdGQ6OmdldGxpbmUoIG1fbG9nX2ZpbGUsIGxpbmUsIExJTkVfU0VQICk7Ci0gICAgICAgIAotICAgICAgICBjb25zdF9zdHJpbmcgY2xpbmUoIGxpbmUgKTsKLSAgICAgICAgc3RyaW5nX3Rva2VuX2l0ZXJhdG9yIHRpdCggY2xpbmUsIChkcm9wcGVkX2RlbGltZXRlcnMgPSBDTE1OX1NFUCwga2VwdF9kZWxpbWV0ZXJzID0gZHRfbm9uZSkpOwotCi0gICAgICAgIE5ETkJPT1NUX0NIRUNLX0VRVUFMKCAqdGl0LCBGSUxFX1NJRyApOyAKLSAgICAgICAgKyt0aXQ7Ci0gICAgICAgIE5ETkJPT1NUX0NIRUNLX0VRVUFMKCAqdGl0LCBFTE9HX1ZFUiApOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgbV9sb2dfZmlsZSA8PCBGSUxFX1NJRyA8PCBDTE1OX1NFUCA8PCBFTE9HX1ZFUiA8PCBMSU5FX1NFUDsKLSAgICB9Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWJvb2wKLWV4cGVjdGF0aW9uc19sb2dnZXI6OmRlY2lzaW9uX3BvaW50KCBjb25zdF9zdHJpbmcsIHN0ZDo6c2l6ZV90ICkKLXsKLSAgICBpZiggbV90ZXN0X29yX2xvZyApIHsKLSAgICAgICAgc3RkOjpzdHJpbmcgbGluZTsKLSAgICAgICAgCi0gICAgICAgIHN0ZDo6Z2V0bGluZSggbV9sb2dfZmlsZSwgbGluZSwgTElORV9TRVAgKTsKLSAgICAgICAgCi0gICAgICAgIGNvbnN0X3N0cmluZyBjbGluZSggbGluZSApOwotICAgICAgICBzdHJpbmdfdG9rZW5faXRlcmF0b3IgdGl0KCBjbGluZSwgKGRyb3BwZWRfZGVsaW1ldGVycyA9IENMTU5fU0VQLCBrZXB0X2RlbGltZXRlcnMgPSBkdF9ub25lKSk7Ci0gICAgICAgIAotICAgICAgICBORE5CT09TVF9DSEVDS19FUVVBTCggKnRpdCwgRFBfU0lHICk7ICsrdGl0OwotICAgICAgICByZXR1cm4gbGV4aWNhbF9jYXN0PGJvb2w+KCAqdGl0ICk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBtX2xvZ19maWxlIDw8IERQX1NJRyA8PCBDTE1OX1NFUCA8PCBzdGQ6OmJvb2xhbHBoYSA8PCB0cnVlIDw8IExJTkVfU0VQOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotICAgIAotdW5zaWduZWQKLWV4cGVjdGF0aW9uc19sb2dnZXI6OmVudGVyX3Njb3BlKCBjb25zdF9zdHJpbmcsIHN0ZDo6c2l6ZV90LCBjb25zdF9zdHJpbmcgc2NvcGVfbmFtZSApCi17Ci0gICAgaWYoIG1fdGVzdF9vcl9sb2cgKSB7Ci0gICAgICAgIHN0ZDo6c3RyaW5nIGxpbmU7Ci0gICAgICAgIAotICAgICAgICBzdGQ6OmdldGxpbmUoIG1fbG9nX2ZpbGUsIGxpbmUsIExJTkVfU0VQICk7Ci0gICAgICAgIAotICAgICAgICBjb25zdF9zdHJpbmcgY2xpbmUoIGxpbmUgKTsKLSAgICAgICAgc3RyaW5nX3Rva2VuX2l0ZXJhdG9yIHRpdCggY2xpbmUsIChkcm9wcGVkX2RlbGltZXRlcnMgPSBDTE1OX1NFUCwga2VwdF9kZWxpbWV0ZXJzID0gZHRfbm9uZSkpOwotICAgICAgICAKLSAgICAgICAgTkROQk9PU1RfQ0hFQ0tfRVFVQUwoICp0aXQsIFNDT1BFX1NJRyApOyArK3RpdDsKLSAgICAgICAgTkROQk9PU1RfQ0hFQ0tfRVFVQUwoICp0aXQsIHNjb3BlX25hbWUgKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIG1fbG9nX2ZpbGUgPDwgU0NPUEVfU0lHIDw8IENMTU5fU0VQIDw8IHNjb3BlX25hbWUgPDwgTElORV9TRVA7Ci0gICAgfQotICAgIAotICAgIHJldHVybiAwOwotfQotICAgIAotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotZXhwZWN0YXRpb25zX2xvZ2dlcjo6YWxsb2NhdGVkKCBjb25zdF9zdHJpbmcsIHN0ZDo6c2l6ZV90LCB2b2lkKiwgc3RkOjpzaXplX3QgcyApCi17Ci0gICAgaWYoIG1fdGVzdF9vcl9sb2cgKSB7Ci0gICAgICAgIHN0ZDo6c3RyaW5nIGxpbmU7Ci0gICAgICAgIAotICAgICAgICBzdGQ6OmdldGxpbmUoIG1fbG9nX2ZpbGUsIGxpbmUsIExJTkVfU0VQICk7Ci0gICAgICAgIAotICAgICAgICBjb25zdF9zdHJpbmcgY2xpbmUoIGxpbmUgKTsKLSAgICAgICAgc3RyaW5nX3Rva2VuX2l0ZXJhdG9yIHRpdCggY2xpbmUsIChkcm9wcGVkX2RlbGltZXRlcnMgPSBDTE1OX1NFUCwga2VwdF9kZWxpbWV0ZXJzID0gZHRfbm9uZSkpOwotICAgICAgICAKLSAgICAgICAgTkROQk9PU1RfQ0hFQ0tfRVFVQUwoICp0aXQsIEFMTE9DX1NJRyApOyArK3RpdDsKLSAgICAgICAgTkROQk9PU1RfQ0hFQ0tfRVFVQUwoIGxleGljYWxfY2FzdDxzdGQ6OnNpemVfdD4oICp0aXQgKSwgcyApOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgbV9sb2dfZmlsZSA8PCBBTExPQ19TSUcgPDwgQ0xNTl9TRVAgPDwgcyA8PCBMSU5FX1NFUDsKLSAgICB9Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLWV4cGVjdGF0aW9uc19sb2dnZXI6OmRhdGFfZmxvdyggY29uc3Rfc3RyaW5nIGQgKQotewotICAgIGlmKCBtX3Rlc3Rfb3JfbG9nICkgewotICAgICAgICBzdGQ6OnN0cmluZyBsaW5lOwotICAgICAgICAKLSAgICAgICAgc3RkOjpnZXRsaW5lKCBtX2xvZ19maWxlLCBsaW5lLCBMSU5FX1NFUCApOwotICAgICAgICAKLSAgICAgICAgY29uc3Rfc3RyaW5nIGNsaW5lKCBsaW5lICk7Ci0gICAgICAgIHN0cmluZ190b2tlbl9pdGVyYXRvciB0aXQoIGNsaW5lLCAoZHJvcHBlZF9kZWxpbWV0ZXJzID0gQ0xNTl9TRVAsIGtlcHRfZGVsaW1ldGVycyA9IGR0X25vbmUpKTsKLSAgICAgICAgCi0gICAgICAgIE5ETkJPT1NUX0NIRUNLX0VRVUFMKCAqdGl0LCBEQVRBX1NJRyApOyArK3RpdDsKLSAgICAgICAgTkROQk9PU1RfQ0hFQ0tfRVFVQUwoICp0aXQsIGQgKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIG1fbG9nX2ZpbGUgPDwgREFUQV9TSUcgPDwgQ0xNTl9TRVAgPDwgZCA8PCBMSU5FX1NFUDsKLSAgICB9Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXN0ZDo6c3RyaW5nCi1leHBlY3RhdGlvbnNfbG9nZ2VyOjpyZXR1cm5fdmFsdWUoIGNvbnN0X3N0cmluZyBkZWZhdWx0X3ZhbHVlICkKLXsKLSAgICBpZiggbV90ZXN0X29yX2xvZyApIHsKLSAgICAgICAgc3RkOjpzdHJpbmcgbGluZTsKLSAgICAgICAgCi0gICAgICAgIHN0ZDo6Z2V0bGluZSggbV9sb2dfZmlsZSwgbGluZSwgTElORV9TRVAgKTsKLSAgICAgICAgCi0gICAgICAgIGNvbnN0X3N0cmluZyBjbGluZSggbGluZSApOwotICAgICAgICBzdHJpbmdfdG9rZW5faXRlcmF0b3IgdGl0KCBjbGluZSwgKGRyb3BwZWRfZGVsaW1ldGVycyA9IENMTU5fU0VQLCBrZXB0X2RlbGltZXRlcnMgPSBkdF9ub25lKSk7Ci0gICAgICAgIAotICAgICAgICBORE5CT09TVF9DSEVDS19FUVVBTCggKnRpdCwgUkVUVVJOX1NJRyApOyArK3RpdDsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiBzdGQ6OnN0cmluZyggdGl0LT5iZWdpbigpLCB0aXQtPnNpemUoKSApOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgbV9sb2dfZmlsZSA8PCBSRVRVUk5fU0lHIDw8IENMTU5fU0VQIDw8IGRlZmF1bHRfdmFsdWUgPDwgTElORV9TRVA7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCk7Ci0gICAgfQotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotICAgIAotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICBsb2dnZWQgZXhwZWN0YXRpb25zIHRlc3QgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi12b2lkIE5ETkJPT1NUX1RFU1RfREVDTAotbG9nZ2VkX2V4cGVjdGF0aW9ucyggY2FsbGJhY2swPD4gY29uc3QmIEYsIGNvbnN0X3N0cmluZyBsb2dfZmlsZV9uYW1lLCBib29sIHRlc3Rfb3JfbG9nICkKLXsKLSAgICBleHBlY3RhdGlvbnNfbG9nZ2VyIGVsKCBsb2dfZmlsZV9uYW1lLCB0ZXN0X29yX2xvZyApOwotCi0gICAgRigpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19ICAvLyBuYW1lc3BhY2UgaXRlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBub3QgYW5jaWVudCBjb21waWxlcgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9MT0dHRURfRVhQRUNUQVRJT05TX0lQUF8xMjA5MDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3BsYWluX3JlcG9ydF9mb3JtYXR0ZXIuaXBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvcGxhaW5fcmVwb3J0X2Zvcm1hdHRlci5pcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3YmZkMWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvcGxhaW5fcmVwb3J0X2Zvcm1hdHRlci5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOTggKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IHBsYWluIHJlcG9ydCBmb3JtYXR0ZXIgZGVmaW5pdGlvbgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9QTEFJTl9SRVBPUlRfRk9STUFUVEVSX0lQUF8wMjAxMDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9QTEFJTl9SRVBPUlRfRk9STUFUVEVSX0lQUF8wMjAxMDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3Qvb3V0cHV0L3BsYWluX3JlcG9ydF9mb3JtYXR0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvY3VzdG9tX21hbmlwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3Jlc3VsdHNfY29sbGVjdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9zdWl0ZV9pbXBsLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9pby5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPGlvbWFuaXA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL25vX3RyMS9jbWF0aC5ocHA+Ci0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLSMgaWZkZWYgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UKLW5hbWVzcGFjZSBzdGQgeyB1c2luZyA6OmxvZzEwOyB9Ci0jIGVuZGlmCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi1uYW1lc3BhY2Ugb3V0cHV0IHsKLQotbmFtZXNwYWNlIHsKLQotdHlwZWRlZiBjdXN0b21fbWFuaXA8c3RydWN0IHF1b3RlX3Q+IHF1b3RlOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIHN0ZDo6b3N0cmVhbSYKLW9wZXJhdG9yPDwoIGN1c3RvbV9wcmludGVyPHF1b3RlPiBjb25zdCYgcCwgVCBjb25zdCYgdmFsdWUgKQotewotICAgICpwIDw8ICciJyA8PCB2YWx1ZSA8PCAnIic7Ci0KLSAgICByZXR1cm4gKnA7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXByaW50X3N0YXRfdmFsdWUoIHN0ZDo6b3N0cmVhbSYgb3N0ciwgY291bnRlcl90IHYsIGNvdW50ZXJfdCBpbmRlbnQsIGNvdW50ZXJfdCB0b3RhbCwKLSAgICAgICAgICAgICAgICAgIGNvbnN0X3N0cmluZyBuYW1lLCBjb25zdF9zdHJpbmcgcmVzICkKLXsKLSAgICBpZiggdiA+IDAgKSB7Ci0gICAgICAgIG9zdHIgPDwgc3RkOjpzZXR3KCBpbmRlbnQgKSA8PCAiIgotICAgICAgICAgICAgIDw8IHYgPDwgJyAnIDw8IG5hbWUgPDwgKCB2ICE9IDEgPyAicyIgOiAiIiApOwotICAgICAgICBpZiggdG90YWwgPiAwICkKLSAgICAgICAgICAgIG9zdHIgPDwgIiBvdXQgb2YgIiA8PCB0b3RhbDsKLQotICAgICAgICBvc3RyIDw8ICcgJyA8PCByZXMgPDwgJ1xuJzsKLSAgICB9Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbG9jYWwgbmFtZXNwYWNlCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICBwbGFpbl9yZXBvcnRfZm9ybWF0dGVyICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdm9pZAotcGxhaW5fcmVwb3J0X2Zvcm1hdHRlcjo6cmVzdWx0c19yZXBvcnRfc3RhcnQoIHN0ZDo6b3N0cmVhbSYgb3N0ciApCi17Ci0gICAgbV9pbmRlbnQgPSAwOwotICAgIG9zdHIgPDwgJ1xuJzsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotcGxhaW5fcmVwb3J0X2Zvcm1hdHRlcjo6cmVzdWx0c19yZXBvcnRfZmluaXNoKCBzdGQ6Om9zdHJlYW0mIG9zdHIgKQotewotICAgIG9zdHIuZmx1c2goKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotcGxhaW5fcmVwb3J0X2Zvcm1hdHRlcjo6dGVzdF91bml0X3JlcG9ydF9zdGFydCggdGVzdF91bml0IGNvbnN0JiB0dSwgc3RkOjpvc3RyZWFtJiBvc3RyICkKLXsKLSAgICB0ZXN0X3Jlc3VsdHMgY29uc3QmIHRyID0gcmVzdWx0c19jb2xsZWN0b3IucmVzdWx0cyggdHUucF9pZCApOwotCi0gICAgY29uc3Rfc3RyaW5nIGRlc2NyOwotCi0gICAgaWYoIHRyLnBhc3NlZCgpICkKLSAgICAgICAgZGVzY3IgPSAicGFzc2VkIjsKLSAgICBlbHNlIGlmKCB0ci5wX3NraXBwZWQgKQotICAgICAgICBkZXNjciA9ICJza2lwcGVkIjsKLSAgICBlbHNlIGlmKCB0ci5wX2Fib3J0ZWQgKQotICAgICAgICBkZXNjciA9ICJhYm9ydGVkIjsKLSAgICBlbHNlCi0gICAgICAgIGRlc2NyID0gImZhaWxlZCI7Ci0KLSAgICBvc3RyIDw8IHN0ZDo6c2V0dyggbV9pbmRlbnQgKSA8PCAiIgotICAgICAgICAgPDwgIlRlc3QgIiA8PCAodHUucF90eXBlID09IHR1dF9jYXNlID8gImNhc2UgIiA6ICJzdWl0ZSAiICkgPDwgcXVvdGUoKSA8PCB0dS5wX25hbWUgPDwgJyAnIDw8IGRlc2NyOwotCi0gICAgaWYoIHRyLnBfc2tpcHBlZCApIHsKLSAgICAgICAgb3N0ciA8PCAiIGR1ZSB0byAiIDw8ICh0dS5jaGVja19kZXBlbmRlbmNpZXMoKSA/ICJ0ZXN0IGFib3J0aW5nXG4iIDogImZhaWxlZCBkZXBlbmRhbmN5XG4iICk7Ci0gICAgICAgIG1faW5kZW50ICs9IDI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgY291bnRlcl90IHRvdGFsX2Fzc2VydGlvbnMgID0gdHIucF9hc3NlcnRpb25zX3Bhc3NlZCArIHRyLnBfYXNzZXJ0aW9uc19mYWlsZWQ7Ci0gICAgY291bnRlcl90IHRvdGFsX3RjICAgICAgICAgID0gdHIucF90ZXN0X2Nhc2VzX3Bhc3NlZCArIHRyLnBfdGVzdF9jYXNlc19mYWlsZWQgKyB0ci5wX3Rlc3RfY2FzZXNfc2tpcHBlZDsKLQotICAgIGlmKCB0b3RhbF9hc3NlcnRpb25zID4gMCB8fCB0b3RhbF90YyA+IDAgKQotICAgICAgICBvc3RyIDw8ICIgd2l0aDoiOwotCi0gICAgb3N0ciA8PCAnXG4nOwotICAgIG1faW5kZW50ICs9IDI7Ci0KLSAgICBwcmludF9zdGF0X3ZhbHVlKCBvc3RyLCB0ci5wX2Fzc2VydGlvbnNfcGFzc2VkLCBtX2luZGVudCwgdG90YWxfYXNzZXJ0aW9ucywgImFzc2VydGlvbiIsICJwYXNzZWQiICk7Ci0gICAgcHJpbnRfc3RhdF92YWx1ZSggb3N0ciwgdHIucF9hc3NlcnRpb25zX2ZhaWxlZCwgbV9pbmRlbnQsIHRvdGFsX2Fzc2VydGlvbnMsICJhc3NlcnRpb24iLCAiZmFpbGVkIiApOwotICAgIHByaW50X3N0YXRfdmFsdWUoIG9zdHIsIHRyLnBfZXhwZWN0ZWRfZmFpbHVyZXMsIG1faW5kZW50LCAwICAgICAgICAgICAgICAgLCAiZmFpbHVyZSIgICwgImV4cGVjdGVkIiApOwotICAgIHByaW50X3N0YXRfdmFsdWUoIG9zdHIsIHRyLnBfdGVzdF9jYXNlc19wYXNzZWQsIG1faW5kZW50LCB0b3RhbF90YyAgICAgICAgLCAidGVzdCBjYXNlIiwgInBhc3NlZCIgKTsKLSAgICBwcmludF9zdGF0X3ZhbHVlKCBvc3RyLCB0ci5wX3Rlc3RfY2FzZXNfZmFpbGVkLCBtX2luZGVudCwgdG90YWxfdGMgICAgICAgICwgInRlc3QgY2FzZSIsICJmYWlsZWQiICk7Ci0gICAgcHJpbnRfc3RhdF92YWx1ZSggb3N0ciwgdHIucF90ZXN0X2Nhc2VzX3NraXBwZWQsIG1faW5kZW50LCB0b3RhbF90YyAgICAgICAsICJ0ZXN0IGNhc2UiLCAic2tpcHBlZCIgKTsKLSAgICBwcmludF9zdGF0X3ZhbHVlKCBvc3RyLCB0ci5wX3Rlc3RfY2FzZXNfYWJvcnRlZCwgbV9pbmRlbnQsIHRvdGFsX3RjICAgICAgICwgInRlc3QgY2FzZSIsICJhYm9ydGVkIiApOwotICAgIAotICAgIG9zdHIgPDwgJ1xuJzsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotcGxhaW5fcmVwb3J0X2Zvcm1hdHRlcjo6dGVzdF91bml0X3JlcG9ydF9maW5pc2goIHRlc3RfdW5pdCBjb25zdCYsIHN0ZDo6b3N0cmVhbSYgKQotewotICAgIG1faW5kZW50IC09IDI7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXBsYWluX3JlcG9ydF9mb3JtYXR0ZXI6OmRvX2NvbmZpcm1hdGlvbl9yZXBvcnQoIHRlc3RfdW5pdCBjb25zdCYgdHUsIHN0ZDo6b3N0cmVhbSYgb3N0ciApCi17Ci0gICAgdGVzdF9yZXN1bHRzIGNvbnN0JiB0ciA9IHJlc3VsdHNfY29sbGVjdG9yLnJlc3VsdHMoIHR1LnBfaWQgKTsKLSAgICAKLSAgICBpZiggdHIucGFzc2VkKCkgKSB7Ci0gICAgICAgIG9zdHIgPDwgIioqKiBObyBlcnJvcnMgZGV0ZWN0ZWRcbiI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgICAgIAotICAgIGlmKCB0ci5wX3NraXBwZWQgKSB7Ci0gICAgICAgIG9zdHIgPDwgIioqKiBUZXN0ICIgPDwgdHUucF90eXBlX25hbWUgPDwgIiBza2lwcGVkIGR1ZSB0byAiIAotICAgICAgICAgICAgIDw8ICh0dS5jaGVja19kZXBlbmRlbmNpZXMoKSA/ICJ0ZXN0IGFib3J0aW5nXG4iIDogImZhaWxlZCBkZXBlbmRhbmN5XG4iICk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiggdHIucF9hc3NlcnRpb25zX2ZhaWxlZCA9PSAwICkgewotICAgICAgICBvc3RyIDw8ICIqKiogZXJyb3JzIGRldGVjdGVkIGluIHRlc3QgIiA8PCB0dS5wX3R5cGVfbmFtZSA8PCAiICIgPDwgcXVvdGUoKSA8PCB0dS5wX25hbWUKLSAgICAgICAgICAgICA8PCAiOyBzZWUgc3RhbmRhcmQgb3V0cHV0IGZvciBkZXRhaWxzXG4iOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY291bnRlcl90IG51bV9mYWlsdXJlcyA9IHRyLnBfYXNzZXJ0aW9uc19mYWlsZWQ7Ci0gICAgCi0gICAgb3N0ciA8PCAiKioqICIgPDwgbnVtX2ZhaWx1cmVzIDw8ICIgZmFpbHVyZSIgPDwgKCBudW1fZmFpbHVyZXMgIT0gMSA/ICJzIiA6ICIiICkgPDwgIiBkZXRlY3RlZCI7Ci0gICAgCi0gICAgaWYoIHRyLnBfZXhwZWN0ZWRfZmFpbHVyZXMgPiAwICkKLSAgICAgICAgb3N0ciA8PCAiICgiIDw8IHRyLnBfZXhwZWN0ZWRfZmFpbHVyZXMgPDwgIiBmYWlsdXJlIiA8PCAoIHRyLnBfZXhwZWN0ZWRfZmFpbHVyZXMgIT0gMSA/ICJzIiA6ICIiICkgPDwgIiBleHBlY3RlZCkiOwotICAgIAotICAgIG9zdHIgPDwgIiBpbiB0ZXN0ICIgPDwgdHUucF90eXBlX25hbWUgPDwgIiAiIDw8IHF1b3RlKCkgPDwgdHUucF9uYW1lIDw8ICJcbiI7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIG91dHB1dAotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1BMQUlOX1JFUE9SVF9GT1JNQVRURVJfSVBQXzAyMDEwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvcHJvZ3Jlc3NfbW9uaXRvci5pcHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9wcm9ncmVzc19tb25pdG9yLmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWM0ZWU4OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9wcm9ncmVzc19tb25pdG9yLmlwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1Nzk5MiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogaW1wbGVtZW50cyBzaW1wbGUgdGV4dCBiYXNlZCBwcm9ncmVzcyBtb25pdG9yCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX1BST0dSRVNTX01PTklUT1JfSVBQXzAyMDEwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1BST0dSRVNTX01PTklUT1JfSVBQXzAyMDEwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9wcm9ncmVzc19tb25pdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9zdWl0ZV9pbXBsLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3VuaXRfdGVzdF9wYXJhbWV0ZXJzLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9wcm9ncmVzcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc2NvcGVkX3B0ci5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgcHJvZ3Jlc3NfbW9uaXRvciAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSB7Ci0KLXN0cnVjdCBwcm9ncmVzc19tb25pdG9yX2ltcGwgewotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgcHJvZ3Jlc3NfbW9uaXRvcl9pbXBsKCkKLSAgICAgICAgOiBtX3N0cmVhbSggcnVudGltZV9jb25maWc6OmxvZ19zaW5rKCkgKQotICAgIHt9Ci0KLSAgICBzdGQ6Om9zdHJlYW0qICAgICAgICAgICAgICAgIG1fc3RyZWFtOwotICAgIHNjb3BlZF9wdHI8cHJvZ3Jlc3NfZGlzcGxheT4gbV9wcm9ncmVzc19kaXNwbGF5OwotfTsKLQotcHJvZ3Jlc3NfbW9uaXRvcl9pbXBsJiBzX3BtX2ltcGwoKSB7IHN0YXRpYyBwcm9ncmVzc19tb25pdG9yX2ltcGwgdGhlX2luc3Q7IHJldHVybiB0aGVfaW5zdDsgfQotCi19IC8vIGxvY2FsIG5hbWVzcGFjZQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1wcm9ncmVzc19tb25pdG9yX3Q6OnRlc3Rfc3RhcnQoIGNvdW50ZXJfdCB0ZXN0X2Nhc2VzX2Ftb3VudCApCi17Ci0gICAgc19wbV9pbXBsKCkubV9wcm9ncmVzc19kaXNwbGF5LnJlc2V0KCBuZXcgcHJvZ3Jlc3NfZGlzcGxheSggdGVzdF9jYXNlc19hbW91bnQsICpzX3BtX2ltcGwoKS5tX3N0cmVhbSApICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXByb2dyZXNzX21vbml0b3JfdDo6dGVzdF9hYm9ydGVkKCkKLXsKLSAgICAoKnNfcG1faW1wbCgpLm1fcHJvZ3Jlc3NfZGlzcGxheSkgKz0gc19wbV9pbXBsKCkubV9wcm9ncmVzc19kaXNwbGF5LT5jb3VudCgpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1wcm9ncmVzc19tb25pdG9yX3Q6OnRlc3RfdW5pdF9maW5pc2goIHRlc3RfdW5pdCBjb25zdCYgdHUsIHVuc2lnbmVkIGxvbmcgKQotewotICAgIGlmKCB0dS5wX3R5cGUgPT0gdHV0X2Nhc2UgKQotICAgICAgICArKygqc19wbV9pbXBsKCkubV9wcm9ncmVzc19kaXNwbGF5KTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotcHJvZ3Jlc3NfbW9uaXRvcl90Ojp0ZXN0X3VuaXRfc2tpcHBlZCggdGVzdF91bml0IGNvbnN0JiB0dSApCi17Ci0gICAgdGVzdF9jYXNlX2NvdW50ZXIgdGNjOwotICAgIHRyYXZlcnNlX3Rlc3RfdHJlZSggdHUsIHRjYyApOwotICAgIAotICAgICgqc19wbV9pbXBsKCkubV9wcm9ncmVzc19kaXNwbGF5KSArPSB0Y2MucF9jb3VudDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotcHJvZ3Jlc3NfbW9uaXRvcl90OjpzZXRfc3RyZWFtKCBzdGQ6Om9zdHJlYW0mIG9zdHIgKQotewotICAgIHNfcG1faW1wbCgpLm1fc3RyZWFtID0gJm9zdHI7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0gICAgCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1BST0dSRVNTX01PTklUT1JfSVBQXzAyMDEwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvcmVzdWx0c19jb2xsZWN0b3IuaXBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvcmVzdWx0c19jb2xsZWN0b3IuaXBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODYyZjY4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3Jlc3VsdHNfY29sbGVjdG9yLmlwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5NCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1Nzk5MiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogaW1wbGVtZW50cyBVbml0IFRlc3QgcmVzdWx0cyBjb2xsZWN0aW5nIGZhY2lsaXR5LgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9SRVNVTFRTX0NPTExFQ1RPUl9JUFBfMDIxMTA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfUkVTVUxUU19DT0xMRUNUT1JfSVBQXzAyMTEwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91bml0X3Rlc3Rfc3VpdGVfaW1wbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91bml0X3Rlc3RfbG9nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3Jlc3VsdHNfY29sbGVjdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2ZyYW1ld29yay5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY3N0ZGxpYi5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPG1hcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgdGVzdF9yZXN1bHRzICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVzdF9yZXN1bHRzOjp0ZXN0X3Jlc3VsdHMoKQotewotICAgIGNsZWFyKCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWJvb2wKLXRlc3RfcmVzdWx0czo6cGFzc2VkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gICFwX3NraXBwZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKLSAgICAgICAgICAgIHBfdGVzdF9jYXNlc19mYWlsZWQgPT0gMCAgICAgICAgICAgICAgICAgICAgJiYKLSAgICAgICAgICAgIHBfYXNzZXJ0aW9uc19mYWlsZWQgPD0gcF9leHBlY3RlZF9mYWlsdXJlcyAgJiYKLSAgICAgICAgICAgICFwX2Fib3J0ZWQ7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWludAotdGVzdF9yZXN1bHRzOjpyZXN1bHRfY29kZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHBhc3NlZCgpID8gZXhpdF9zdWNjZXNzCi0gICAgICAgICAgIDogKCAocF9hc3NlcnRpb25zX2ZhaWxlZCA+IHBfZXhwZWN0ZWRfZmFpbHVyZXMgfHwgcF9za2lwcGVkICkKLSAgICAgICAgICAgICAgICAgICAgPyBleGl0X3Rlc3RfZmFpbHVyZQotICAgICAgICAgICAgICAgICAgICA6IGV4aXRfZXhjZXB0aW9uX2ZhaWx1cmUgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotdGVzdF9yZXN1bHRzOjpvcGVyYXRvcis9KCB0ZXN0X3Jlc3VsdHMgY29uc3QmIHRyICkKLXsKLSAgICBwX2Fzc2VydGlvbnNfcGFzc2VkLnZhbHVlICAgKz0gdHIucF9hc3NlcnRpb25zX3Bhc3NlZDsKLSAgICBwX2Fzc2VydGlvbnNfZmFpbGVkLnZhbHVlICAgKz0gdHIucF9hc3NlcnRpb25zX2ZhaWxlZDsKLSAgICBwX3Rlc3RfY2FzZXNfcGFzc2VkLnZhbHVlICAgKz0gdHIucF90ZXN0X2Nhc2VzX3Bhc3NlZDsKLSAgICBwX3Rlc3RfY2FzZXNfZmFpbGVkLnZhbHVlICAgKz0gdHIucF90ZXN0X2Nhc2VzX2ZhaWxlZDsKLSAgICBwX3Rlc3RfY2FzZXNfc2tpcHBlZC52YWx1ZSAgKz0gdHIucF90ZXN0X2Nhc2VzX3NraXBwZWQ7Ci0gICAgcF90ZXN0X2Nhc2VzX2Fib3J0ZWQudmFsdWUgICs9IHRyLnBfdGVzdF9jYXNlc19hYm9ydGVkOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi10ZXN0X3Jlc3VsdHM6OmNsZWFyKCkKLXsKLSAgICBwX2Fzc2VydGlvbnNfcGFzc2VkLnZhbHVlICAgID0gMDsKLSAgICBwX2Fzc2VydGlvbnNfZmFpbGVkLnZhbHVlICAgID0gMDsKLSAgICBwX2V4cGVjdGVkX2ZhaWx1cmVzLnZhbHVlICAgID0gMDsKLSAgICBwX3Rlc3RfY2FzZXNfcGFzc2VkLnZhbHVlICAgID0gMDsKLSAgICBwX3Rlc3RfY2FzZXNfZmFpbGVkLnZhbHVlICAgID0gMDsKLSAgICBwX3Rlc3RfY2FzZXNfc2tpcHBlZC52YWx1ZSAgID0gMDsKLSAgICBwX3Rlc3RfY2FzZXNfYWJvcnRlZC52YWx1ZSAgID0gMDsKLSAgICBwX2Fib3J0ZWQudmFsdWUgICAgICAgICAgICAgID0gZmFsc2U7Ci0gICAgcF9za2lwcGVkLnZhbHVlICAgICAgICAgICAgICA9IHRydWU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0gICAgCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICByZXN1bHRzX2NvbGxlY3RvciAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8MTMwMCkKLQotbmFtZXNwYWNlIHsKLQotc3RydWN0IHJlc3VsdHNfY29sbGVjdG9yX2ltcGwgewotICAgIHN0ZDo6bWFwPHRlc3RfdW5pdF9pZCx0ZXN0X3Jlc3VsdHM+IG1fcmVzdWx0c19zdG9yZTsKLX07Ci0KLXJlc3VsdHNfY29sbGVjdG9yX2ltcGwmIHNfcmNfaW1wbCgpIHsgc3RhdGljIHJlc3VsdHNfY29sbGVjdG9yX2ltcGwgdGhlX2luc3Q7IHJldHVybiB0aGVfaW5zdDsgfQotCi19IC8vIGxvY2FsIG5hbWVzcGFjZQotCi0jZWxzZQotCi1zdHJ1Y3QgcmVzdWx0c19jb2xsZWN0b3JfaW1wbCB7Ci0gICAgc3RkOjptYXA8dGVzdF91bml0X2lkLHRlc3RfcmVzdWx0cz4gbV9yZXN1bHRzX3N0b3JlOwotfTsKLQotc3RhdGljIHJlc3VsdHNfY29sbGVjdG9yX2ltcGwmIHNfcmNfaW1wbCgpIHsgc3RhdGljIHJlc3VsdHNfY29sbGVjdG9yX2ltcGwgdGhlX2luc3Q7IHJldHVybiB0aGVfaW5zdDsgfQotCi0jZW5kaWYKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotcmVzdWx0c19jb2xsZWN0b3JfdDo6dGVzdF9zdGFydCggY291bnRlcl90ICkKLXsKLSAgICBzX3JjX2ltcGwoKS5tX3Jlc3VsdHNfc3RvcmUuY2xlYXIoKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotcmVzdWx0c19jb2xsZWN0b3JfdDo6dGVzdF9maW5pc2goKQotewotICAgIC8vIGRvIG5vdGhpbmcKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotcmVzdWx0c19jb2xsZWN0b3JfdDo6dGVzdF9hYm9ydGVkKCkKLXsKLSAgICAvLyBkbyBub3RoaW5nCi19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXJlc3VsdHNfY29sbGVjdG9yX3Q6OnRlc3RfdW5pdF9zdGFydCggdGVzdF91bml0IGNvbnN0JiB0dSApCi17Ci0gICAgLy8gaW5pdCB0ZXN0X3Jlc3VsdHMgZW50cnkKLSAgICB0ZXN0X3Jlc3VsdHMmIHRyID0gc19yY19pbXBsKCkubV9yZXN1bHRzX3N0b3JlW3R1LnBfaWRdOwotCi0gICAgdHIuY2xlYXIoKTsKLSAgICAKLSAgICB0ci5wX2V4cGVjdGVkX2ZhaWx1cmVzLnZhbHVlICAgID0gdHUucF9leHBlY3RlZF9mYWlsdXJlczsKLSAgICB0ci5wX3NraXBwZWQudmFsdWUgICAgICAgICAgICAgID0gZmFsc2U7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWNsYXNzIHJlc3VsdHNfY29sbGVjdF9oZWxwZXIgOiBwdWJsaWMgdGVzdF90cmVlX3Zpc2l0b3IgewotcHVibGljOgotICAgIGV4cGxpY2l0IHJlc3VsdHNfY29sbGVjdF9oZWxwZXIoIHRlc3RfcmVzdWx0cyYgdHIsIHRlc3RfdW5pdCBjb25zdCYgdHMgKSA6IG1fdHIoIHRyICksIG1fdHMoIHRzICkge30KLQotICAgIHZvaWQgICAgdmlzaXQoIHRlc3RfY2FzZSBjb25zdCYgdGMgKQotICAgIHsKLSAgICAgICAgdGVzdF9yZXN1bHRzIGNvbnN0JiB0ciA9IHJlc3VsdHNfY29sbGVjdG9yLnJlc3VsdHMoIHRjLnBfaWQgKTsKLSAgICAgICAgbV90ciArPSB0cjsKLQotICAgICAgICBpZiggdHIucGFzc2VkKCkgKQotICAgICAgICAgICAgbV90ci5wX3Rlc3RfY2FzZXNfcGFzc2VkLnZhbHVlKys7Ci0gICAgICAgIGVsc2UgaWYoIHRyLnBfc2tpcHBlZCApCi0gICAgICAgICAgICBtX3RyLnBfdGVzdF9jYXNlc19za2lwcGVkLnZhbHVlKys7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYoIHRyLnBfYWJvcnRlZCApCi0gICAgICAgICAgICAgICAgbV90ci5wX3Rlc3RfY2FzZXNfYWJvcnRlZC52YWx1ZSsrOwotICAgICAgICAgICAgbV90ci5wX3Rlc3RfY2FzZXNfZmFpbGVkLnZhbHVlKys7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgYm9vbCAgICB0ZXN0X3N1aXRlX3N0YXJ0KCB0ZXN0X3N1aXRlIGNvbnN0JiB0cyApCi0gICAgewotICAgICAgICBpZiggbV90cy5wX2lkID09IHRzLnBfaWQgKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgbV90ciArPSByZXN1bHRzX2NvbGxlY3Rvci5yZXN1bHRzKCB0cy5wX2lkICk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgdGVzdF9yZXN1bHRzJiAgICAgICBtX3RyOwotICAgIHRlc3RfdW5pdCBjb25zdCYgICAgbV90czsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXJlc3VsdHNfY29sbGVjdG9yX3Q6OnRlc3RfdW5pdF9maW5pc2goIHRlc3RfdW5pdCBjb25zdCYgdHUsIHVuc2lnbmVkIGxvbmcgKQotewotICAgIGlmKCB0dS5wX3R5cGUgPT0gdHV0X3N1aXRlICkgewotICAgICAgICByZXN1bHRzX2NvbGxlY3RfaGVscGVyIGNoKCBzX3JjX2ltcGwoKS5tX3Jlc3VsdHNfc3RvcmVbdHUucF9pZF0sIHR1ICk7Ci0KLSAgICAgICAgdHJhdmVyc2VfdGVzdF90cmVlKCB0dSwgY2ggKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIHRlc3RfcmVzdWx0cyBjb25zdCYgdHIgPSBzX3JjX2ltcGwoKS5tX3Jlc3VsdHNfc3RvcmVbdHUucF9pZF07Ci0gICAgICAgIAotICAgICAgICBib29sIG51bV9mYWlsdXJlc19tYXRjaCA9IHRyLnBfYWJvcnRlZCB8fCB0ci5wX2Fzc2VydGlvbnNfZmFpbGVkID49IHRyLnBfZXhwZWN0ZWRfZmFpbHVyZXM7Ci0gICAgICAgIGlmKCAhbnVtX2ZhaWx1cmVzX21hdGNoICkKLSAgICAgICAgICAgIE5ETkJPT1NUX1RFU1RfTUVTU0FHRSggIlRlc3QgY2FzZSAiIDw8IHR1LnBfbmFtZSA8PCAiIGhhcyBmZXdlciBmYWlsdXJlcyB0aGFuIGV4cGVjdGVkIiApOwotCi0gICAgICAgIGJvb2wgY2hlY2tfYW55X2Fzc2VydGlvbnMgPSB0ci5wX2Fib3J0ZWQgfHwgKHRyLnBfYXNzZXJ0aW9uc19mYWlsZWQgIT0gMCkgfHwgKHRyLnBfYXNzZXJ0aW9uc19wYXNzZWQgIT0gMCk7Ci0gICAgICAgIGlmKCAhY2hlY2tfYW55X2Fzc2VydGlvbnMgKQotICAgICAgICAgICAgTkROQk9PU1RfVEVTVF9NRVNTQUdFKCAiVGVzdCBjYXNlICIgPDwgdHUucF9uYW1lIDw8ICIgZGlkIG5vdCBjaGVjayBhbnkgYXNzZXJ0aW9ucyIgKTsKLSAgICB9Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXJlc3VsdHNfY29sbGVjdG9yX3Q6OnRlc3RfdW5pdF9za2lwcGVkKCB0ZXN0X3VuaXQgY29uc3QmIHR1ICkKLXsKLSAgICBpZiggdHUucF90eXBlID09IHR1dF9zdWl0ZSApIHsKLSAgICAgICAgdGVzdF9jYXNlX2NvdW50ZXIgdGNjOwotICAgICAgICB0cmF2ZXJzZV90ZXN0X3RyZWUoIHR1LCB0Y2MgKTsKLQotICAgICAgICB0ZXN0X3Jlc3VsdHMmIHRyID0gc19yY19pbXBsKCkubV9yZXN1bHRzX3N0b3JlW3R1LnBfaWRdOwotCi0gICAgICAgIHRyLmNsZWFyKCk7Ci0gICAgCi0gICAgICAgIHRyLnBfc2tpcHBlZC52YWx1ZSAgICAgICAgICAgICAgPSB0cnVlOwotICAgICAgICB0ci5wX3Rlc3RfY2FzZXNfc2tpcHBlZC52YWx1ZSAgID0gdGNjLnBfY291bnQ7Ci0gICAgfQotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1yZXN1bHRzX2NvbGxlY3Rvcl90Ojphc3NlcnRpb25fcmVzdWx0KCBib29sIHBhc3NlZCApCi17Ci0gICAgdGVzdF9yZXN1bHRzJiB0ciA9IHNfcmNfaW1wbCgpLm1fcmVzdWx0c19zdG9yZVtmcmFtZXdvcms6OmN1cnJlbnRfdGVzdF9jYXNlKCkucF9pZF07Ci0KLSAgICBpZiggcGFzc2VkICkKLSAgICAgICAgdHIucF9hc3NlcnRpb25zX3Bhc3NlZC52YWx1ZSsrOwotICAgIGVsc2UKLSAgICAgICAgdHIucF9hc3NlcnRpb25zX2ZhaWxlZC52YWx1ZSsrOwotCi0gICAgaWYoIHRyLnBfYXNzZXJ0aW9uc19mYWlsZWQgPT0gMSApCi0gICAgICAgIGZpcnN0X2ZhaWxlZF9hc3NlcnRpb24oKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotcmVzdWx0c19jb2xsZWN0b3JfdDo6ZXhjZXB0aW9uX2NhdWdodCggZXhlY3V0aW9uX2V4Y2VwdGlvbiBjb25zdCYgKQotewotICAgIHRlc3RfcmVzdWx0cyYgdHIgPSBzX3JjX2ltcGwoKS5tX3Jlc3VsdHNfc3RvcmVbZnJhbWV3b3JrOjpjdXJyZW50X3Rlc3RfY2FzZSgpLnBfaWRdOwotCi0gICAgdHIucF9hc3NlcnRpb25zX2ZhaWxlZC52YWx1ZSsrOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1yZXN1bHRzX2NvbGxlY3Rvcl90Ojp0ZXN0X3VuaXRfYWJvcnRlZCggdGVzdF91bml0IGNvbnN0JiB0dSApCi17Ci0gICAgc19yY19pbXBsKCkubV9yZXN1bHRzX3N0b3JlW3R1LnBfaWRdLnBfYWJvcnRlZC52YWx1ZSA9IHRydWU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlc3RfcmVzdWx0cyBjb25zdCYKLXJlc3VsdHNfY29sbGVjdG9yX3Q6OnJlc3VsdHMoIHRlc3RfdW5pdF9pZCBpZCApIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHNfcmNfaW1wbCgpLm1fcmVzdWx0c19zdG9yZVtpZF07Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfUkVTVUxUU19DT0xMRUNUT1JfSVBQXzAyMTEwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvcmVzdWx0c19yZXBvcnRlci5pcHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9yZXN1bHRzX3JlcG9ydGVyLmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDY2ZmE4NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9yZXN1bHRzX3JlcG9ydGVyLmlwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwMiArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1Nzk5MiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogcmVzdWx0IHJlcG9ydGluZyBmYWNpbHRpZXMKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfUkVTVUxUU19SRVBPUlRFUl9JUFBfMDIwMTA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfUkVTVUxUU19SRVBPUlRFUl9JUFBfMDIwMTA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3Jlc3VsdHNfcmVwb3J0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X3N1aXRlX2ltcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvcmVzdWx0c19jb2xsZWN0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZnJhbWV3b3JrLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L291dHB1dC9wbGFpbl9yZXBvcnRfZm9ybWF0dGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L291dHB1dC94bWxfcmVwb3J0X2Zvcm1hdHRlci5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC91bml0X3Rlc3RfcGFyYW1ldGVycy5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc2NvcGVkX3B0ci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW8vaW9zX3N0YXRlLmhwcD4KLXR5cGVkZWYgOjpuZG5ib29zdDo6aW86Omlvc19iYXNlX2FsbF9zYXZlciBpb19zYXZlcl90eXBlOwotCi0vLyBTVEwKLSNpbmNsdWRlIDxpb3N0cmVhbT4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLW5hbWVzcGFjZSByZXN1bHRzX3JlcG9ydGVyIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICByZXN1bHQgcmVwb3J0ZXIgaW1wbGVtZW50YXRpb24gICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgewotCi1zdHJ1Y3QgcmVzdWx0c19yZXBvcnRlcl9pbXBsIDogdGVzdF90cmVlX3Zpc2l0b3IgewotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgcmVzdWx0c19yZXBvcnRlcl9pbXBsKCkKLSAgICA6IG1fb3V0cHV0KCBydW50aW1lX2NvbmZpZzo6cmVwb3J0X3NpbmsoKSApCi0gICAgLCBtX3N0cmVhbV9zdGF0ZV9zYXZlciggbmV3IGlvX3NhdmVyX3R5cGUoICptX291dHB1dCApICkKLSAgICAsIG1fcmVwb3J0X2xldmVsKCBDT05GSVJNQVRJT05fUkVQT1JUICkKLSAgICAsIG1fZm9ybWF0dGVyKCBuZXcgb3V0cHV0OjpwbGFpbl9yZXBvcnRfZm9ybWF0dGVyICkKLSAgICB7fQotCi0gICAgLy8gdGVzdCB0cmVlIHZpc2l0b3IgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uCi0gICAgdm9pZCAgICB2aXNpdCggdGVzdF9jYXNlIGNvbnN0JiB0YyApCi0gICAgewotICAgICAgICBtX2Zvcm1hdHRlci0+dGVzdF91bml0X3JlcG9ydF9zdGFydCggdGMsICptX291dHB1dCApOwotICAgICAgICBtX2Zvcm1hdHRlci0+dGVzdF91bml0X3JlcG9ydF9maW5pc2goIHRjLCAqbV9vdXRwdXQgKTsKLSAgICB9Ci0gICAgYm9vbCAgICB0ZXN0X3N1aXRlX3N0YXJ0KCB0ZXN0X3N1aXRlIGNvbnN0JiB0cyApCi0gICAgewotICAgICAgICBtX2Zvcm1hdHRlci0+dGVzdF91bml0X3JlcG9ydF9zdGFydCggdHMsICptX291dHB1dCApOwotCi0gICAgICAgIGlmKCBtX3JlcG9ydF9sZXZlbCA9PSBERVRBSUxFRF9SRVBPUlQgJiYgIXJlc3VsdHNfY29sbGVjdG9yLnJlc3VsdHMoIHRzLnBfaWQgKS5wX3NraXBwZWQgKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgbV9mb3JtYXR0ZXItPnRlc3RfdW5pdF9yZXBvcnRfZmluaXNoKCB0cywgKm1fb3V0cHV0ICk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgdm9pZCAgICB0ZXN0X3N1aXRlX2ZpbmlzaCggdGVzdF9zdWl0ZSBjb25zdCYgdHMgKQotICAgIHsKLSAgICAgICAgbV9mb3JtYXR0ZXItPnRlc3RfdW5pdF9yZXBvcnRfZmluaXNoKCB0cywgKm1fb3V0cHV0ICk7Ci0gICAgfQotCi0gICAgdHlwZWRlZiBzY29wZWRfcHRyPGlvX3NhdmVyX3R5cGU+IHNhdmVyX3B0cjsKLQotICAgIC8vIERhdGEgbWVtYmVycwotICAgIHN0ZDo6b3N0cmVhbSogICAgICAgbV9vdXRwdXQ7Ci0gICAgc2F2ZXJfcHRyICAgICAgICAgICBtX3N0cmVhbV9zdGF0ZV9zYXZlcjsKLSAgICByZXBvcnRfbGV2ZWwgICAgICAgIG1fcmVwb3J0X2xldmVsOwotICAgIHNjb3BlZF9wdHI8Zm9ybWF0PiAgbV9mb3JtYXR0ZXI7Ci19OwotCi1yZXN1bHRzX3JlcG9ydGVyX2ltcGwmIHNfcnJfaW1wbCgpIHsgc3RhdGljIHJlc3VsdHNfcmVwb3J0ZXJfaW1wbCB0aGVfaW5zdDsgcmV0dXJuIHRoZV9pbnN0OyB9Ci0KLX0gLy8gbG9jYWwgbmFtZXNwYWNlCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgcmVwb3J0IGNvbmZpZ3VyYXRpb24gICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdm9pZAotc2V0X2xldmVsKCByZXBvcnRfbGV2ZWwgbCApCi17Ci0gICAgaWYoIGwgIT0gSU5WX1JFUE9SVF9MRVZFTCApCi0gICAgICAgIHNfcnJfaW1wbCgpLm1fcmVwb3J0X2xldmVsID0gbDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotc2V0X3N0cmVhbSggc3RkOjpvc3RyZWFtJiBvc3RyICkKLXsKLSAgICBzX3JyX2ltcGwoKS5tX291dHB1dCA9ICZvc3RyOwotICAgIHNfcnJfaW1wbCgpLm1fc3RyZWFtX3N0YXRlX3NhdmVyLnJlc2V0KCBuZXcgaW9fc2F2ZXJfdHlwZSggb3N0ciApICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXN0ZDo6b3N0cmVhbSYKLWdldF9zdHJlYW0oKQotewotICAgIHJldHVybiAqc19ycl9pbXBsKCkubV9vdXRwdXQ7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXNldF9mb3JtYXQoIG91dHB1dF9mb3JtYXQgcmYgKQotewotICAgIHN3aXRjaCggcmYgKSB7Ci0gICAgY2FzZSBDTEY6Ci0gICAgICAgIHNldF9mb3JtYXQoIG5ldyBvdXRwdXQ6OnBsYWluX3JlcG9ydF9mb3JtYXR0ZXIgKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBYTUw6Ci0gICAgICAgIHNldF9mb3JtYXQoIG5ldyBvdXRwdXQ6OnhtbF9yZXBvcnRfZm9ybWF0dGVyICk7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotc2V0X2Zvcm1hdCggcmVzdWx0c19yZXBvcnRlcjo6Zm9ybWF0KiBmICkKLXsKLSAgICBpZiggZiApCi0gICAgICAgIHNfcnJfaW1wbCgpLm1fZm9ybWF0dGVyLnJlc2V0KCBmICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIHJlcG9ydCBpbml0aWF0aW9uICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdm9pZAotbWFrZV9yZXBvcnQoIHJlcG9ydF9sZXZlbCBsLCB0ZXN0X3VuaXRfaWQgaWQgKQotewotICAgIGlmKCBsID09IElOVl9SRVBPUlRfTEVWRUwgKQotICAgICAgICBsID0gc19ycl9pbXBsKCkubV9yZXBvcnRfbGV2ZWw7Ci0KLSAgICBpZiggbCA9PSBOT19SRVBPUlQgKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiggaWQgPT0gSU5WX1RFU1RfVU5JVF9JRCApCi0gICAgICAgIGlkID0gZnJhbWV3b3JrOjptYXN0ZXJfdGVzdF9zdWl0ZSgpLnBfaWQ7Ci0KLSAgICBzX3JyX2ltcGwoKS5tX3N0cmVhbV9zdGF0ZV9zYXZlci0+cmVzdG9yZSgpOwotCi0gICAgcmVwb3J0X2xldmVsIGJrdXAgPSBzX3JyX2ltcGwoKS5tX3JlcG9ydF9sZXZlbDsKLSAgICBzX3JyX2ltcGwoKS5tX3JlcG9ydF9sZXZlbCA9IGw7Ci0KLSAgICBzX3JyX2ltcGwoKS5tX2Zvcm1hdHRlci0+cmVzdWx0c19yZXBvcnRfc3RhcnQoICpzX3JyX2ltcGwoKS5tX291dHB1dCApOwotCi0gICAgc3dpdGNoKCBsICkgewotICAgIGNhc2UgQ09ORklSTUFUSU9OX1JFUE9SVDoKLSAgICAgICAgc19ycl9pbXBsKCkubV9mb3JtYXR0ZXItPmRvX2NvbmZpcm1hdGlvbl9yZXBvcnQoIGZyYW1ld29yazo6Z2V0PHRlc3RfdW5pdD4oIGlkICksICpzX3JyX2ltcGwoKS5tX291dHB1dCApOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNIT1JUX1JFUE9SVDoKLSAgICBjYXNlIERFVEFJTEVEX1JFUE9SVDoKLSAgICAgICAgdHJhdmVyc2VfdGVzdF90cmVlKCBpZCwgc19ycl9pbXBsKCkgKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgc19ycl9pbXBsKCkubV9mb3JtYXR0ZXItPnJlc3VsdHNfcmVwb3J0X2ZpbmlzaCggKnNfcnJfaW1wbCgpLm1fb3V0cHV0ICk7Ci0gICAgc19ycl9pbXBsKCkubV9yZXBvcnRfbGV2ZWwgPSBia3VwOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSByZXN1bHRzX3JlcG9ydGVyCi0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfUkVTVUxUU19SRVBPUlRFUl9JUFBfMDIwMTA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC90ZXN0X21haW4uaXBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvdGVzdF9tYWluLmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTMzMTgzZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC90ZXN0X21haW4uaXBwCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwMS0yMDA4LgotLy8gIChDKSBDb3B5cmlnaHQgQmVtYW4gRGF3ZXMgMTk5NS0yMDAxLgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICQkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBpbXBsZW1lbnRzIG1haW4gZnVuY3Rpb24gZm9yIFRlc3QgRXhlY3V0aW9uIE1vbml0b3IuCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX1RFU1RfTUFJTl9JUFBfMDEyMjA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfVEVTVF9NQUlOX0lQUF8wMTIyMDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZnJhbWV3b3JrLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3Rlc3RfdG9vbHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X3N1aXRlLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9jc3RkbGliLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotZXh0ZXJuIGludCB0ZXN0X21haW4oIGludCBhcmdjLCBjaGFyKiBhcmd2W10gKTsgICAgLy8gcHJvdG90eXBlIGZvciB1c2VyJ3MgdGVzdF9tYWluKCkKLQotc3RydWN0IHRlc3RfbWFpbl9jYWxsZXIgewotICAgIHRlc3RfbWFpbl9jYWxsZXIoIGludCBhcmdjLCBjaGFyKiogYXJndiApIDogbV9hcmdjKCBhcmdjICksIG1fYXJndiggYXJndiApIHt9Ci0gICAgCi0gICAgdm9pZCBvcGVyYXRvcigpKCkgewotICAgICAgICBpbnQgdGVzdF9tYWluX3Jlc3VsdCA9IHRlc3RfbWFpbiggbV9hcmdjLCBtX2FyZ3YgKTsKLQotICAgICAgICAvLyB0cmFuc2xhdGUgYSB0ZXN0X21haW4gbm9uLXN1Y2Nlc3MgcmV0dXJuIGludG8gYSB0ZXN0IGVycm9yCi0gICAgICAgIE5ETkJPT1NUX0NIRUNLKCB0ZXN0X21haW5fcmVzdWx0ID09IDAgfHwgdGVzdF9tYWluX3Jlc3VsdCA9PSBuZG5ib29zdDo6ZXhpdF9zdWNjZXNzICk7Ci0gICAgfQotICAKLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzICAgIAotICAgIGludCAgICAgIG1fYXJnYzsKLSAgICBjaGFyKiogICBtX2FyZ3Y7Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICAgdGVzdCBtYWluICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLTo6bmRuYm9vc3Q6OnVuaXRfdGVzdDo6dGVzdF9zdWl0ZSoKLWluaXRfdW5pdF90ZXN0X3N1aXRlKCBpbnQgYXJnYywgY2hhciogYXJndltdICkgewotICAgIHVzaW5nIG5hbWVzcGFjZSA6Om5kbmJvb3N0Ojp1bml0X3Rlc3Q7Ci0gICAgCi0gICAgZnJhbWV3b3JrOjptYXN0ZXJfdGVzdF9zdWl0ZSgpLnBfbmFtZS52YWx1ZSA9ICJUZXN0IFByb2dyYW0iOwotICAgIAotICAgIGZyYW1ld29yazo6bWFzdGVyX3Rlc3Rfc3VpdGUoKS5hZGQoIE5ETkJPT1NUX1RFU1RfQ0FTRSggdGVzdF9tYWluX2NhbGxlciggYXJnYywgYXJndiApICkgKTsKLSAgICAKLSAgICByZXR1cm4gMDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1RFU1RfTUFJTl9JUFBfMDEyMjA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC90ZXN0X3Rvb2xzLmlwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3Rlc3RfdG9vbHMuaXBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ODhhZjMzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3Rlc3RfdG9vbHMuaXBwCisrKyAvZGV2L251bGwKQEAgLTEsNjI4ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBzdXBwbGllcyBvZmZsaW5lIGltcGxlbWVudGF0aW9uIGZvciB0aGUgVGVzdCBUb29scwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9URVNUX1RPT0xTX0lQUF8wMTIyMDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9URVNUX1RPT0xTX0lQUF8wMTIyMDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdGVzdF90b29scy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91bml0X3Rlc3RfbG9nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L291dHB1dF90ZXN0X3N0cmVhbS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9mcmFtZXdvcmsuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZXhlY3V0aW9uX21vbml0b3IuaHBwPiAvLyBleGVjdXRpb25fYWJvcnRlZAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X3N1aXRlX2ltcGwuaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPGZzdHJlYW0+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPGNzdHJpbmc+Ci0jaW5jbHVkZSA8Y2N0eXBlPgotI2luY2x1ZGUgPGN3Y2hhcj4KLSNpbmNsdWRlIDxzdGRleGNlcHQ+Ci0jaW5jbHVkZSA8aW9zPgotCi0vLyAhISBzaG91bGQgd2UgdXNlICNpbmNsdWRlIDxjc3RkYXJnPgotI2luY2x1ZGUgPHN0ZGFyZy5oPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jIGlmZGVmIE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFCi1uYW1lc3BhY2Ugc3RkIHsgdXNpbmcgOjpzdHJjbXA7IHVzaW5nIDo6c3RybGVuOyB1c2luZyA6OmlzcHJpbnQ7IH0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1dDSEFSICkKLW5hbWVzcGFjZSBzdGQgeyB1c2luZyA6Ondjc2NtcDsgfQotI2VuZGlmCi0jIGVuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB0ZXN0X3Rvb2xzIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgIHByaW50X2xvZ192YWx1ZSAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi12b2lkCi1wcmludF9sb2dfdmFsdWU8Y2hhcj46Om9wZXJhdG9yKCkoIHN0ZDo6b3N0cmVhbSYgb3N0ciwgY2hhciB0ICkKLXsKLSAgICBpZiggKHN0ZDo6aXNwcmludCkoIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHQpICkgKQotICAgICAgICBvc3RyIDw8ICdcJycgPDwgdCA8PCAnXCcnOwotICAgIGVsc2UKLSAgICAgICAgb3N0ciA8PCBzdGQ6OmhleAotI2lmIE5ETkJPT1NUX1RFU1RfVVNFX1NURF9MT0NBTEUKLSAgICAgICAgPDwgc3RkOjpzaG93YmFzZQotI2Vsc2UKLSAgICAgICAgPDwgIjB4IgotI2VuZGlmCi0gICAgICAgIDw8IHN0YXRpY19jYXN0PGludD4odCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXByaW50X2xvZ192YWx1ZTx1bnNpZ25lZCBjaGFyPjo6b3BlcmF0b3IoKSggc3RkOjpvc3RyZWFtJiBvc3RyLCB1bnNpZ25lZCBjaGFyIHQgKQotewotICAgIG9zdHIgPDwgc3RkOjpoZXgKLSAgICAgICAgLy8gc2hvd2Jhc2UgaXMgb25seSBhdmFpbGFibGUgZm9yIG5ldyBzdHlsZSBzdHJlYW1zOgotI2lmIE5ETkJPT1NUX1RFU1RfVVNFX1NURF9MT0NBTEUKLSAgICAgICAgPDwgc3RkOjpzaG93YmFzZQotI2Vsc2UKLSAgICAgICAgPDwgIjB4IgotI2VuZGlmCi0gICAgICAgIDw8IHN0YXRpY19jYXN0PGludD4odCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXByaW50X2xvZ192YWx1ZTxjaGFyIGNvbnN0Kj46Om9wZXJhdG9yKCkoIHN0ZDo6b3N0cmVhbSYgb3N0ciwgY2hhciBjb25zdCogdCApCi17Ci0gICAgb3N0ciA8PCAoIHQgPyB0IDogIm51bGwgc3RyaW5nIiApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1wcmludF9sb2dfdmFsdWU8d2NoYXJfdCBjb25zdCo+OjpvcGVyYXRvcigpKCBzdGQ6Om9zdHJlYW0mIG9zdHIsIHdjaGFyX3QgY29uc3QqIHQgKQotewotICAgIG9zdHIgPDwgKCB0ID8gdCA6IEwibnVsbCBzdHJpbmciICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSB0dF9kZXRhaWwgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICBUT09MIEJPWCBJbXBsZW1lbnRhdGlvbiAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXVzaW5nIDo6bmRuYm9vc3Q6OnVuaXRfdGVzdDo6bGF6eV9vc3RyZWFtOwotCi1ib29sCi1jaGVja19pbXBsKCBwcmVkaWNhdGVfcmVzdWx0IGNvbnN0JiBwciwgbGF6eV9vc3RyZWFtIGNvbnN0JiBjaGVja19kZXNjciwKLSAgICAgICAgICAgIGNvbnN0X3N0cmluZyBmaWxlX25hbWUsIHN0ZDo6c2l6ZV90IGxpbmVfbnVtLAotICAgICAgICAgICAgdG9vbF9sZXZlbCB0bCwgY2hlY2tfdHlwZSBjdCwKLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IG51bV9vZl9hcmdzLCAuLi4gKQotewotICAgIHVzaW5nIG5hbWVzcGFjZSB1bml0X3Rlc3Q7Ci0KLSAgICBpZiggIWZyYW1ld29yazo6aXNfaW5pdGlhbGl6ZWQoKSApCi0gICAgICAgIHRocm93IHN0ZDo6cnVudGltZV9lcnJvciggImNhbid0IHVzZSB0ZXN0aW5nIHRvb2xzIGJlZm9yZSBmcmFtZXdvcmsgaXMgaW5pdGlhbGl6ZWQiICk7Ci0KLSAgICBpZiggISFwciApCi0gICAgICAgIHRsID0gUEFTUzsKLQotICAgIGxvZ19sZXZlbCAgICBsbDsKLSAgICBjaGFyIGNvbnN0KiAgcHJlZml4OwotICAgIGNoYXIgY29uc3QqICBzdWZmaXg7Ci0gICAgICAgCi0gICAgc3dpdGNoKCB0bCApIHsKLSAgICBjYXNlIFBBU1M6Ci0gICAgICAgIGxsICAgICAgPSBsb2dfc3VjY2Vzc2Z1bF90ZXN0czsKLSAgICAgICAgcHJlZml4ICA9ICJjaGVjayAiOwotICAgICAgICBzdWZmaXggID0gIiBwYXNzZWQiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFdBUk46Ci0gICAgICAgIGxsICAgICAgPSBsb2dfd2FybmluZ3M7Ci0gICAgICAgIHByZWZpeCAgPSAiY29uZGl0aW9uICI7Ci0gICAgICAgIHN1ZmZpeCAgPSAiIGlzIG5vdCBzYXRpc2ZpZWQiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENIRUNLOgotICAgICAgICBsbCAgICAgID0gbG9nX2FsbF9lcnJvcnM7Ci0gICAgICAgIHByZWZpeCAgPSAiY2hlY2sgIjsKLSAgICAgICAgc3VmZml4ICA9ICIgZmFpbGVkIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSRVFVSVJFOgotICAgICAgICBsbCAgICAgID0gbG9nX2ZhdGFsX2Vycm9yczsKLSAgICAgICAgcHJlZml4ICA9ICJjcml0aWNhbCBjaGVjayAiOwotICAgICAgICBzdWZmaXggID0gIiBmYWlsZWQiOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBzd2l0Y2goIGN0ICkgewotICAgIGNhc2UgQ0hFQ0tfUFJFRDoKLSAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCB1bml0X3Rlc3Q6OmxvZzo6YmVnaW4oIGZpbGVfbmFtZSwgbGluZV9udW0gKSAKLSAgICAgICAgICAgICAgICAgICAgICA8PCBsbCA8PCBwcmVmaXggPDwgY2hlY2tfZGVzY3IgPDwgc3VmZml4OwotICAgICAgICAKLSAgICAgICAgaWYoICFwci5oYXNfZW1wdHlfbWVzc2FnZSgpICkKLSAgICAgICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgIi4gIiA8PCBwci5tZXNzYWdlKCk7Ci0gICAgICAgIAotICAgICAgICB1bml0X3Rlc3RfbG9nIDw8IHVuaXRfdGVzdDo6bG9nOjplbmQoKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENIRUNLX01TRzoKLSAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCB1bml0X3Rlc3Q6OmxvZzo6YmVnaW4oIGZpbGVfbmFtZSwgbGluZV9udW0gKSA8PCBsbDsKLSAgICAgICAgCi0gICAgICAgIGlmKCB0bCA9PSBQQVNTICkKLSAgICAgICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgcHJlZml4IDw8ICInIiA8PCBjaGVja19kZXNjciA8PCAiJyIgPDwgc3VmZml4OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB1bml0X3Rlc3RfbG9nIDw8IGNoZWNrX2Rlc2NyOwotICAgICAgICAKLSAgICAgICAgaWYoICFwci5oYXNfZW1wdHlfbWVzc2FnZSgpICkKLSAgICAgICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgIi4gIiA8PCBwci5tZXNzYWdlKCk7Ci0KLSAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCB1bml0X3Rlc3Q6OmxvZzo6ZW5kKCk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDSEVDS19FUVVBTDogCi0gICAgY2FzZSBDSEVDS19ORTogCi0gICAgY2FzZSBDSEVDS19MVDogCi0gICAgY2FzZSBDSEVDS19MRTogCi0gICAgY2FzZSBDSEVDS19HVDogCi0gICAgY2FzZSBDSEVDS19HRTogewotICAgICAgICBzdGF0aWMgY2hhciBjb25zdCogY2hlY2tfc3RyIFtdID0geyAiID09ICIsICIgIT0gIiwgIiA8ICIgLCAiIDw9ICIsICIgPiAiICwgIiA+PSAiIH07Ci0gICAgICAgIHN0YXRpYyBjaGFyIGNvbnN0KiByZXZlcl9zdHIgW10gPSB7ICIgIT0gIiwgIiA9PSAiLCAiID49ICIsICIgPiAiICwgIiA8PSAiLCAiIDwgIiAgfTsKLQotICAgICAgICB2YV9saXN0IGFyZ3M7Ci0KLSAgICAgICAgdmFfc3RhcnQoIGFyZ3MsIG51bV9vZl9hcmdzICk7Ci0gICAgICAgIGNoYXIgY29uc3QqICAgICAgICAgYXJnMV9kZXNjciAgPSB2YV9hcmcoIGFyZ3MsIGNoYXIgY29uc3QqICk7Ci0gICAgICAgIGxhenlfb3N0cmVhbSBjb25zdCogYXJnMV92YWwgICAgPSB2YV9hcmcoIGFyZ3MsIGxhenlfb3N0cmVhbSBjb25zdCogKTsKLSAgICAgICAgY2hhciBjb25zdCogICAgICAgICBhcmcyX2Rlc2NyICA9IHZhX2FyZyggYXJncywgY2hhciBjb25zdCogKTsKLSAgICAgICAgbGF6eV9vc3RyZWFtIGNvbnN0KiBhcmcyX3ZhbCAgICA9IHZhX2FyZyggYXJncywgbGF6eV9vc3RyZWFtIGNvbnN0KiApOwotCi0gICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgdW5pdF90ZXN0Ojpsb2c6OmJlZ2luKCBmaWxlX25hbWUsIGxpbmVfbnVtICkgCi0gICAgICAgICAgICAgICAgICAgICAgPDwgbGwgPDwgcHJlZml4IDw8IGFyZzFfZGVzY3IgPDwgY2hlY2tfc3RyW2N0LUNIRUNLX0VRVUFMXSA8PCBhcmcyX2Rlc2NyIDw8IHN1ZmZpeDsKLQotICAgICAgICBpZiggdGwgIT0gUEFTUyApCi0gICAgICAgICAgICB1bml0X3Rlc3RfbG9nIDw8ICIgWyIgPDwgKmFyZzFfdmFsIDw8IHJldmVyX3N0cltjdC1DSEVDS19FUVVBTF0gPDwgKmFyZzJfdmFsIDw8ICJdIiA7Ci0KLSAgICAgICAgdmFfZW5kKCBhcmdzICk7Ci0gICAgICAgIAotICAgICAgICBpZiggIXByLmhhc19lbXB0eV9tZXNzYWdlKCkgKQotICAgICAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCAiLiAiIDw8IHByLm1lc3NhZ2UoKTsKLQotICAgICAgICB1bml0X3Rlc3RfbG9nIDw8IHVuaXRfdGVzdDo6bG9nOjplbmQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgY2FzZSBDSEVDS19DTE9TRToKLSAgICBjYXNlIENIRUNLX0NMT1NFX0ZSQUNUSU9OOiB7Ci0gICAgICAgIHZhX2xpc3QgYXJnczsKLQotICAgICAgICB2YV9zdGFydCggYXJncywgbnVtX29mX2FyZ3MgKTsKLSAgICAgICAgY2hhciBjb25zdCogICAgICAgICBhcmcxX2Rlc2NyICA9IHZhX2FyZyggYXJncywgY2hhciBjb25zdCogKTsKLSAgICAgICAgbGF6eV9vc3RyZWFtIGNvbnN0KiBhcmcxX3ZhbCAgICA9IHZhX2FyZyggYXJncywgbGF6eV9vc3RyZWFtIGNvbnN0KiApOwotICAgICAgICBjaGFyIGNvbnN0KiAgICAgICAgIGFyZzJfZGVzY3IgID0gdmFfYXJnKCBhcmdzLCBjaGFyIGNvbnN0KiApOwotICAgICAgICBsYXp5X29zdHJlYW0gY29uc3QqIGFyZzJfdmFsICAgID0gdmFfYXJnKCBhcmdzLCBsYXp5X29zdHJlYW0gY29uc3QqICk7Ci0gICAgICAgIC8qIHRvbGVyX2Rlc2NyID0gKi8gICAgICAgICAgICAgICB2YV9hcmcoIGFyZ3MsIGNoYXIgY29uc3QqICk7Ci0gICAgICAgIGxhenlfb3N0cmVhbSBjb25zdCogdG9sZXJfdmFsICAgPSB2YV9hcmcoIGFyZ3MsIGxhenlfb3N0cmVhbSBjb25zdCogKTsKLQotICAgICAgICB1bml0X3Rlc3RfbG9nIDw8IHVuaXRfdGVzdDo6bG9nOjpiZWdpbiggZmlsZV9uYW1lLCBsaW5lX251bSApIDw8IGxsOwotCi0gICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgImRpZmZlcmVuY2V7IiA8PCBwci5tZXNzYWdlKCkgPDwgKGN0ID09IENIRUNLX0NMT1NFID8gIiUiIDogIiIpCi0gICAgICAgICAgICAgICAgICAgICAgPDwgIn0gYmV0d2VlbiAiIDw8IGFyZzFfZGVzY3IgPDwgInsiIDw8ICphcmcxX3ZhbAotICAgICAgICAgICAgICAgICAgICAgIDw8ICJ9IGFuZCAiICAgICAgICAgICAgICAgPDwgYXJnMl9kZXNjciA8PCAieyIgPDwgKmFyZzJfdmFsCi0gICAgICAgICAgICAgICAgICAgICAgPDwgKCB0bCA9PSBQQVNTID8gIn0gZG9lc24ndCBleGNlZWQgIiA6ICJ9IGV4Y2VlZHMgIiApCi0gICAgICAgICAgICAgICAgICAgICAgPDwgKnRvbGVyX3ZhbDsKLSAgICAgICAgaWYoIGN0ID09IENIRUNLX0NMT1NFICkKLSAgICAgICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgIiUiOwotCi0gICAgICAgIHZhX2VuZCggYXJncyApOwotICAgICAgICAKLSAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCB1bml0X3Rlc3Q6OmxvZzo6ZW5kKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENIRUNLX1NNQUxMOiB7Ci0gICAgICAgIHZhX2xpc3QgYXJnczsKLQotICAgICAgICB2YV9zdGFydCggYXJncywgbnVtX29mX2FyZ3MgKTsKLSAgICAgICAgY2hhciBjb25zdCogICAgICAgICBhcmcxX2Rlc2NyICA9IHZhX2FyZyggYXJncywgY2hhciBjb25zdCogKTsKLSAgICAgICAgbGF6eV9vc3RyZWFtIGNvbnN0KiBhcmcxX3ZhbCAgICA9IHZhX2FyZyggYXJncywgbGF6eV9vc3RyZWFtIGNvbnN0KiApOwotICAgICAgICAvKiB0b2xlcl9kZXNjciA9ICovICAgICAgICAgICAgICAgdmFfYXJnKCBhcmdzLCBjaGFyIGNvbnN0KiApOwotICAgICAgICBsYXp5X29zdHJlYW0gY29uc3QqIHRvbGVyX3ZhbCAgID0gdmFfYXJnKCBhcmdzLCBsYXp5X29zdHJlYW0gY29uc3QqICk7Ci0KLSAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCB1bml0X3Rlc3Q6OmxvZzo6YmVnaW4oIGZpbGVfbmFtZSwgbGluZV9udW0gKSA8PCBsbDsKLQotICAgICAgICB1bml0X3Rlc3RfbG9nIDw8ICJhYnNvbHV0ZSB2YWx1ZSBvZiAiIDw8IGFyZzFfZGVzY3IgPDwgInsiIDw8ICphcmcxX3ZhbCA8PCAifSIgCi0gICAgICAgICAgICAgICAgICAgICAgPDwgKCB0bCA9PSBQQVNTID8gIiBkb2Vzbid0IGV4Y2VlZCAiIDogIiBleGNlZWRzICIgKQotICAgICAgICAgICAgICAgICAgICAgIDw8ICp0b2xlcl92YWw7Ci0KLSAgICAgICAgdmFfZW5kKCBhcmdzICk7Ci0gICAgICAgIAotICAgICAgICBpZiggIXByLmhhc19lbXB0eV9tZXNzYWdlKCkgKQotICAgICAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCAiLiAiIDw8IHByLm1lc3NhZ2UoKTsKLQotICAgICAgICB1bml0X3Rlc3RfbG9nIDw8IHVuaXRfdGVzdDo6bG9nOjplbmQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgY2FzZSBDSEVDS19QUkVEX1dJVEhfQVJHUzogewotICAgICAgICB1bml0X3Rlc3RfbG9nIDw8IHVuaXRfdGVzdDo6bG9nOjpiZWdpbiggZmlsZV9uYW1lLCBsaW5lX251bSApIAotICAgICAgICAgICAgICAgICAgICAgIDw8IGxsIDw8IHByZWZpeCA8PCBjaGVja19kZXNjcjsKLQotICAgICAgICAvLyBwcmludCBwcmVkaWNhdGUgY2FsbCBkZXNjcmlwdGlvbgotICAgICAgICB7Ci0gICAgICAgICAgICB2YV9saXN0IGFyZ3M7Ci0gICAgICAgICAgICB2YV9zdGFydCggYXJncywgbnVtX29mX2FyZ3MgKTsKLQotICAgICAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCAiKCAiOwotICAgICAgICAgICAgZm9yKCBzdGQ6OnNpemVfdCBpID0gMDsgaSA8IG51bV9vZl9hcmdzOyArK2kgKSB7Ci0gICAgICAgICAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCB2YV9hcmcoIGFyZ3MsIGNoYXIgY29uc3QqICk7Ci0gICAgICAgICAgICAgICAgdmFfYXJnKCBhcmdzLCBsYXp5X29zdHJlYW0gY29uc3QqICk7IC8vIHNraXAgYXJndW1lbnQgdmFsdWU7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYoIGkgIT0gbnVtX29mX2FyZ3MtMSApCi0gICAgICAgICAgICAgICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgIiwgIjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgIiApIiA8PCBzdWZmaXg7Ci0gICAgICAgICAgICB2YV9lbmQoIGFyZ3MgKTsKLSAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgIGlmKCB0bCAhPSBQQVNTICkgewotICAgICAgICAgICAgdmFfbGlzdCBhcmdzOwotICAgICAgICAgICAgdmFfc3RhcnQoIGFyZ3MsIG51bV9vZl9hcmdzICk7Ci0KLSAgICAgICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgIiBmb3IgKCAiOwotICAgICAgICAgICAgZm9yKCBzdGQ6OnNpemVfdCBpID0gMDsgaSA8IG51bV9vZl9hcmdzOyArK2kgKSB7Ci0gICAgICAgICAgICAgICAgdmFfYXJnKCBhcmdzLCBjaGFyIGNvbnN0KiApOyAvLyBza2lwIGFyZ3VtZW50IGRlc2NyaXB0aW9uOyAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgKnZhX2FyZyggYXJncywgbGF6eV9vc3RyZWFtIGNvbnN0KiApOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmKCBpICE9IG51bV9vZl9hcmdzLTEgKQotICAgICAgICAgICAgICAgICAgICB1bml0X3Rlc3RfbG9nIDw8ICIsICI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB1bml0X3Rlc3RfbG9nIDw8ICIgKSI7Ci0gICAgICAgICAgICB2YV9lbmQoIGFyZ3MgKTsKLSAgICAgICAgfQotICAgICAgIAotICAgICAgICBpZiggIXByLmhhc19lbXB0eV9tZXNzYWdlKCkgKQotICAgICAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCAiLiAiIDw8IHByLm1lc3NhZ2UoKTsKLQotICAgICAgICB1bml0X3Rlc3RfbG9nIDw8IHVuaXRfdGVzdDo6bG9nOjplbmQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgY2FzZSBDSEVDS19FUVVBTF9DT0xMOiB7Ci0gICAgICAgIHZhX2xpc3QgYXJnczsKLQotICAgICAgICB2YV9zdGFydCggYXJncywgbnVtX29mX2FyZ3MgKTsKLSAgICAgICAgY2hhciBjb25zdCogbGVmdF9iZWdpbl9kZXNjciAgICA9IHZhX2FyZyggYXJncywgY2hhciBjb25zdCogKTsKLSAgICAgICAgY2hhciBjb25zdCogbGVmdF9lbmRfZGVzY3IgICAgICA9IHZhX2FyZyggYXJncywgY2hhciBjb25zdCogKTsKLSAgICAgICAgY2hhciBjb25zdCogcmlnaHRfYmVnaW5fZGVzY3IgICA9IHZhX2FyZyggYXJncywgY2hhciBjb25zdCogKTsKLSAgICAgICAgY2hhciBjb25zdCogcmlnaHRfZW5kX2Rlc2NyICAgICA9IHZhX2FyZyggYXJncywgY2hhciBjb25zdCogKTsKLQotICAgICAgICB1bml0X3Rlc3RfbG9nIDw8IHVuaXRfdGVzdDo6bG9nOjpiZWdpbiggZmlsZV9uYW1lLCBsaW5lX251bSApIAotICAgICAgICAgICAgICAgICAgICAgIDw8IGxsIDw8IHByZWZpeCAKLSAgICAgICAgICAgICAgICAgICAgICA8PCAieyAiIDw8IGxlZnRfYmVnaW5fZGVzY3IgIDw8ICIsICIgPDwgbGVmdF9lbmRfZGVzY3IgIDw8ICIgfSA9PSB7ICIgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCByaWdodF9iZWdpbl9kZXNjciA8PCAiLCAiIDw8IHJpZ2h0X2VuZF9kZXNjciA8PCAiIH0iCi0gICAgICAgICAgICAgICAgICAgICAgPDwgc3VmZml4OwotCi0gICAgICAgIHZhX2VuZCggYXJncyApOwotICAgICAgICAKLSAgICAgICAgaWYoICFwci5oYXNfZW1wdHlfbWVzc2FnZSgpICkKLSAgICAgICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgIi4gIiA8PCBwci5tZXNzYWdlKCk7Ci0KLSAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCB1bml0X3Rlc3Q6OmxvZzo6ZW5kKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGNhc2UgQ0hFQ0tfQklUV0lTRV9FUVVBTDogewotICAgICAgICB2YV9saXN0IGFyZ3M7Ci0KLSAgICAgICAgdmFfc3RhcnQoIGFyZ3MsIG51bV9vZl9hcmdzICk7Ci0gICAgICAgIGNoYXIgY29uc3QqIGxlZnRfZGVzY3IgICAgPSB2YV9hcmcoIGFyZ3MsIGNoYXIgY29uc3QqICk7Ci0gICAgICAgIGNoYXIgY29uc3QqIHJpZ2h0X2Rlc2NyICAgPSB2YV9hcmcoIGFyZ3MsIGNoYXIgY29uc3QqICk7Ci0KLSAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCB1bml0X3Rlc3Q6OmxvZzo6YmVnaW4oIGZpbGVfbmFtZSwgbGluZV9udW0gKQotICAgICAgICAgICAgICAgICAgICAgIDw8IGxsIDw8IHByZWZpeCA8PCBsZWZ0X2Rlc2NyICA8PCAiID0uPSAiIDw8IHJpZ2h0X2Rlc2NyIDw8IHN1ZmZpeDsKLQotICAgICAgICB2YV9lbmQoIGFyZ3MgKTsKLSAgICAgICAgCi0gICAgICAgIGlmKCAhcHIuaGFzX2VtcHR5X21lc3NhZ2UoKSApCi0gICAgICAgICAgICB1bml0X3Rlc3RfbG9nIDw8ICIuICIgPDwgcHIubWVzc2FnZSgpOwotCi0gICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgdW5pdF90ZXN0Ojpsb2c6OmVuZCgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgfQotCi0gICAgc3dpdGNoKCB0bCApIHsKLSAgICBjYXNlIFBBU1M6Ci0gICAgICAgIGZyYW1ld29yazo6YXNzZXJ0aW9uX3Jlc3VsdCggdHJ1ZSApOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGNhc2UgV0FSTjoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgY2FzZSBDSEVDSzoKLSAgICAgICAgZnJhbWV3b3JrOjphc3NlcnRpb25fcmVzdWx0KCBmYWxzZSApOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIAotICAgIGNhc2UgUkVRVUlSRToKLSAgICAgICAgZnJhbWV3b3JrOjphc3NlcnRpb25fcmVzdWx0KCBmYWxzZSApOwotCi0gICAgICAgIGZyYW1ld29yazo6dGVzdF91bml0X2Fib3J0ZWQoIGZyYW1ld29yazo6Y3VycmVudF90ZXN0X2Nhc2UoKSApOwotCi0gICAgICAgIHRocm93IGV4ZWN1dGlvbl9hYm9ydGVkKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXByZWRpY2F0ZV9yZXN1bHQKLWVxdWFsX2ltcGwoIGNoYXIgY29uc3QqIGxlZnQsIGNoYXIgY29uc3QqIHJpZ2h0ICkKLXsKLSAgICByZXR1cm4gKGxlZnQgJiYgcmlnaHQpID8gc3RkOjpzdHJjbXAoIGxlZnQsIHJpZ2h0ICkgPT0gMCA6IChsZWZ0ID09IHJpZ2h0KTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DV0NIQVIgKQotCi1wcmVkaWNhdGVfcmVzdWx0Ci1lcXVhbF9pbXBsKCB3Y2hhcl90IGNvbnN0KiBsZWZ0LCB3Y2hhcl90IGNvbnN0KiByaWdodCApCi17Ci0gICAgcmV0dXJuIChsZWZ0ICYmIHJpZ2h0KSA/IHN0ZDo6d2NzY21wKCBsZWZ0LCByaWdodCApID09IDAgOiAobGVmdCA9PSByaWdodCk7Ci19Ci0KLSNlbmRpZiAvLyAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1dDSEFSICkKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotYm9vbAotaXNfZGVmaW5lZF9pbXBsKCBjb25zdF9zdHJpbmcgc3ltYm9sX25hbWUsIGNvbnN0X3N0cmluZyBzeW1ib2xfdmFsdWUgKQotewotICAgIHN5bWJvbF92YWx1ZS50cmltX2xlZnQoIDIgKTsKLSAgICByZXR1cm4gc3ltYm9sX25hbWUgIT0gc3ltYm9sX3ZhbHVlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSB0dF9kZXRhaWwKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgb3V0cHV0X3Rlc3Rfc3RyZWFtICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1zdHJ1Y3Qgb3V0cHV0X3Rlc3Rfc3RyZWFtOjpJbXBsCi17Ci0gICAgc3RkOjpmc3RyZWFtICAgIG1fcGF0dGVybjsKLSAgICBib29sICAgICAgICAgICAgbV9tYXRjaF9vcl9zYXZlOwotICAgIGJvb2wgICAgICAgICAgICBtX3RleHRfb3JfYmluYXJ5OwotICAgIHN0ZDo6c3RyaW5nICAgICBtX3N5bmNlZF9zdHJpbmc7Ci0KLSAgICBjaGFyICAgICAgICAgICAgZ2V0X2NoYXIoKQotICAgIHsKLSAgICAgICAgY2hhciByZXM7Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIG1fcGF0dGVybi5nZXQoIHJlcyApOwotICAgICAgICB9IHdoaWxlKCBtX3RleHRfb3JfYmluYXJ5ICYmIHJlcyA9PSAnXHInICYmICFtX3BhdHRlcm4uZmFpbCgpICYmICFtX3BhdHRlcm4uZW9mKCkgKTsKLQotICAgICAgICByZXR1cm4gcmVzOwotICAgIH0KLQotICAgIHZvaWQgICAgICAgICAgICBjaGVja19hbmRfZmlsbCggcHJlZGljYXRlX3Jlc3VsdCYgcmVzICkKLSAgICB7Ci0gICAgICAgIGlmKCAhcmVzLnBfcHJlZGljYXRlX3ZhbHVlICkKLSAgICAgICAgICAgIHJlcy5tZXNzYWdlKCkgPDwgIk91dHB1dCBjb250ZW50OiBcIiIgPDwgbV9zeW5jZWRfc3RyaW5nIDw8ICdcIic7Ci0gICAgfQotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotb3V0cHV0X3Rlc3Rfc3RyZWFtOjpvdXRwdXRfdGVzdF9zdHJlYW0oIGNvbnN0X3N0cmluZyBwYXR0ZXJuX2ZpbGVfbmFtZSwgYm9vbCBtYXRjaF9vcl9zYXZlLCBib29sIHRleHRfb3JfYmluYXJ5ICkKLTogbV9waW1wbCggbmV3IEltcGwgKQotewotICAgIGlmKCAhcGF0dGVybl9maWxlX25hbWUuaXNfZW1wdHkoKSApIHsKLSAgICAgICAgc3RkOjppb3M6Om9wZW5tb2RlIG0gPSBtYXRjaF9vcl9zYXZlID8gc3RkOjppb3M6OmluIDogc3RkOjppb3M6Om91dDsKLSAgICAgICAgaWYoICF0ZXh0X29yX2JpbmFyeSApCi0gICAgICAgICAgICBtIHw9IHN0ZDo6aW9zOjpiaW5hcnk7Ci0KLSAgICAgICAgbV9waW1wbC0+bV9wYXR0ZXJuLm9wZW4oIHBhdHRlcm5fZmlsZV9uYW1lLmJlZ2luKCksIG0gKTsKLQotICAgICAgICBORE5CT09TVF9XQVJOX01FU1NBR0UoIG1fcGltcGwtPm1fcGF0dGVybi5pc19vcGVuKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDYW4ndCBvcGVuIHBhdHRlcm4gZmlsZSAiIDw8IHBhdHRlcm5fZmlsZV9uYW1lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIgZm9yICIgPDwgKG1hdGNoX29yX3NhdmUgPyAicmVhZGluZyIgOiAid3JpdGluZyIpICk7Ci0gICAgfQotCi0gICAgbV9waW1wbC0+bV9tYXRjaF9vcl9zYXZlICAgID0gbWF0Y2hfb3Jfc2F2ZTsKLSAgICBtX3BpbXBsLT5tX3RleHRfb3JfYmluYXJ5ICAgPSB0ZXh0X29yX2JpbmFyeTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotb3V0cHV0X3Rlc3Rfc3RyZWFtOjp+b3V0cHV0X3Rlc3Rfc3RyZWFtKCkKLXsKLSAgICBkZWxldGUgbV9waW1wbDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotcHJlZGljYXRlX3Jlc3VsdAotb3V0cHV0X3Rlc3Rfc3RyZWFtOjppc19lbXB0eSggYm9vbCBmbHVzaF9zdHJlYW0gKQotewotICAgIHN5bmMoKTsKLQotICAgIHJlc3VsdF90eXBlIHJlcyggbV9waW1wbC0+bV9zeW5jZWRfc3RyaW5nLmVtcHR5KCkgKTsKLQotICAgIG1fcGltcGwtPmNoZWNrX2FuZF9maWxsKCByZXMgKTsKLQotICAgIGlmKCBmbHVzaF9zdHJlYW0gKQotICAgICAgICBmbHVzaCgpOwotCi0gICAgcmV0dXJuIHJlczsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotcHJlZGljYXRlX3Jlc3VsdAotb3V0cHV0X3Rlc3Rfc3RyZWFtOjpjaGVja19sZW5ndGgoIHN0ZDo6c2l6ZV90IGxlbmd0aF8sIGJvb2wgZmx1c2hfc3RyZWFtICkKLXsKLSAgICBzeW5jKCk7Ci0KLSAgICByZXN1bHRfdHlwZSByZXMoIG1fcGltcGwtPm1fc3luY2VkX3N0cmluZy5sZW5ndGgoKSA9PSBsZW5ndGhfICk7Ci0KLSAgICBtX3BpbXBsLT5jaGVja19hbmRfZmlsbCggcmVzICk7Ci0KLSAgICBpZiggZmx1c2hfc3RyZWFtICkKLSAgICAgICAgZmx1c2goKTsKLQotICAgIHJldHVybiByZXM7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXByZWRpY2F0ZV9yZXN1bHQKLW91dHB1dF90ZXN0X3N0cmVhbTo6aXNfZXF1YWwoIGNvbnN0X3N0cmluZyBhcmcsIGJvb2wgZmx1c2hfc3RyZWFtICkKLXsKLSAgICBzeW5jKCk7Ci0KLSAgICByZXN1bHRfdHlwZSByZXMoIGNvbnN0X3N0cmluZyggbV9waW1wbC0+bV9zeW5jZWRfc3RyaW5nICkgPT0gYXJnICk7Ci0KLSAgICBtX3BpbXBsLT5jaGVja19hbmRfZmlsbCggcmVzICk7Ci0KLSAgICBpZiggZmx1c2hfc3RyZWFtICkKLSAgICAgICAgZmx1c2goKTsKLQotICAgIHJldHVybiByZXM7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXByZWRpY2F0ZV9yZXN1bHQKLW91dHB1dF90ZXN0X3N0cmVhbTo6bWF0Y2hfcGF0dGVybiggYm9vbCBmbHVzaF9zdHJlYW0gKQotewotICAgIHN5bmMoKTsKLQotICAgIHJlc3VsdF90eXBlIHJlc3VsdCggdHJ1ZSApOwotCi0gICAgaWYoICFtX3BpbXBsLT5tX3BhdHRlcm4uaXNfb3BlbigpICkgewotICAgICAgICByZXN1bHQgPSBmYWxzZTsKLSAgICAgICAgcmVzdWx0Lm1lc3NhZ2UoKSA8PCAiUGF0dGVybiBmaWxlIGNhbid0IGJlIG9wZW5lZCEiOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgaWYoIG1fcGltcGwtPm1fbWF0Y2hfb3Jfc2F2ZSApIHsKLSAgICAgICAgICAgIGZvciAoIHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgaSA9IDA7IGkgPCBtX3BpbXBsLT5tX3N5bmNlZF9zdHJpbmcubGVuZ3RoKCk7ICsraSApIHsKLSAgICAgICAgICAgICAgICBjaGFyIGMgPSBtX3BpbXBsLT5nZXRfY2hhcigpOwotCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gIW1fcGltcGwtPm1fcGF0dGVybi5mYWlsKCkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAhbV9waW1wbC0+bV9wYXR0ZXJuLmVvZigpICAmJgotICAgICAgICAgICAgICAgICAgICAgICAgIChtX3BpbXBsLT5tX3N5bmNlZF9zdHJpbmdbaV0gPT0gYyk7Ci0KLSAgICAgICAgICAgICAgICBpZiggIXJlc3VsdCApIHsKLSAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBzdWZmaXhfc2l6ZSAgPSAoc3RkOjptaW4pKCBtX3BpbXBsLT5tX3N5bmNlZF9zdHJpbmcubGVuZ3RoKCkgLSBpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZzo6c2l6ZV90eXBlPig1KSApOwotCi0gICAgICAgICAgICAgICAgICAgIC8vIHRyeSB0byBsb2cgYXJlYSBhcm91bmQgdGhlIG1pc21hdGNoCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5tZXNzYWdlKCkgPDwgIk1pc21hdGNoIGF0IHBvc2l0aW9uICIgPDwgaSA8PCAnXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICA8PCAiLi4uIiA8PCBtX3BpbXBsLT5tX3N5bmNlZF9zdHJpbmcuc3Vic3RyKCBpLCBzdWZmaXhfc2l6ZSApIDw8ICIuLi4iIDw8ICdcbicKLSAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIuLi4iIDw8IGM7Ci0KLSAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBjb3VudGVyID0gc3VmZml4X3NpemU7Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxlKCAtLWNvdW50ZXIgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGMgPSBtX3BpbXBsLT5nZXRfY2hhcigpOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiggbV9waW1wbC0+bV9wYXR0ZXJuLmZhaWwoKSB8fCBtX3BpbXBsLT5tX3BhdHRlcm4uZW9mKCkgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQubWVzc2FnZSgpIDw8IGM7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICByZXN1bHQubWVzc2FnZSgpIDw8ICIuLi4iOwotCi0gICAgICAgICAgICAgICAgICAgIC8vIHNraXAgcmVzdCBvZiB0aGUgYnl0ZXMuIE1heSBoZWxwIGZvciBmdXJ0aGVyIG1hdGNoaW5nCi0gICAgICAgICAgICAgICAgICAgIG1fcGltcGwtPm1fcGF0dGVybi5pZ25vcmUoIAotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPiggbV9waW1wbC0+bV9zeW5jZWRfc3RyaW5nLmxlbmd0aCgpIC0gaSAtIHN1ZmZpeF9zaXplKSApOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBtX3BpbXBsLT5tX3BhdHRlcm4ud3JpdGUoIG1fcGltcGwtPm1fc3luY2VkX3N0cmluZy5jX3N0cigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxzdGQ6OnN0cmVhbXNpemU+KCBtX3BpbXBsLT5tX3N5bmNlZF9zdHJpbmcubGVuZ3RoKCkgKSApOwotICAgICAgICAgICAgbV9waW1wbC0+bV9wYXR0ZXJuLmZsdXNoKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiggZmx1c2hfc3RyZWFtICkKLSAgICAgICAgZmx1c2goKTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLW91dHB1dF90ZXN0X3N0cmVhbTo6Zmx1c2goKQotewotICAgIG1fcGltcGwtPm1fc3luY2VkX3N0cmluZy5lcmFzZSgpOwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1NUUklOR1NUUkVBTQotICAgIHN0ciggc3RkOjpzdHJpbmcoKSApOwotI2Vsc2UKLSAgICBzZWVrcCggMCwgc3RkOjppb3M6OmJlZyApOwotI2VuZGlmCi19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXN0ZDo6c2l6ZV90Ci1vdXRwdXRfdGVzdF9zdHJlYW06Omxlbmd0aCgpCi17Ci0gICAgc3luYygpOwotCi0gICAgcmV0dXJuIG1fcGltcGwtPm1fc3luY2VkX3N0cmluZy5sZW5ndGgoKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotb3V0cHV0X3Rlc3Rfc3RyZWFtOjpzeW5jKCkKLXsKLSNpZmRlZiBORE5CT09TVF9OT19TVFJJTkdTVFJFQU0KLSAgICBtX3BpbXBsLT5tX3N5bmNlZF9zdHJpbmcuYXNzaWduKCBzdHIoKSwgcGNvdW50KCkgKTsKLSAgICBmcmVlemUoIGZhbHNlICk7Ci0jZWxzZQotICAgIG1fcGltcGwtPm1fc3luY2VkX3N0cmluZyA9IHN0cigpOwotI2VuZGlmCi19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHRlc3RfdG9vbHMKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1RFU1RfVE9PTFNfSVBQXzAxMjIwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvdW5pdF90ZXN0X2xvZy5pcHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC91bml0X3Rlc3RfbG9nLmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzViN2MxMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC91bml0X3Rlc3RfbG9nLmlwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ0NCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1Nzk5MiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogaW1wbGVtZXRzIFVuaXQgVGVzdCBMb2cKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX0xPR19JUFBfMDEyMjA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX0xPR19JUFBfMDEyMjA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9sb2cuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X2xvZ19mb3JtYXR0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X3N1aXRlX2ltcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZXhlY3V0aW9uX21vbml0b3IuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvdW5pdF90ZXN0X3BhcmFtZXRlcnMuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2NvbXBhcmUuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9vdXRwdXQvY29tcGlsZXJfbG9nX2Zvcm1hdHRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9vdXRwdXQveG1sX2xvZ19mb3JtYXR0ZXIuaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Njb3BlZF9wdHIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvL2lvc19zdGF0ZS5ocHA+Ci10eXBlZGVmIDo6bmRuYm9vc3Q6OmlvOjppb3NfYmFzZV9hbGxfc2F2ZXIgaW9fc2F2ZXJfdHlwZTsKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICBlbnRyeV92YWx1ZV9jb2xsZWN0b3IgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIHV0X2RldGFpbCB7Ci0KLWVudHJ5X3ZhbHVlX2NvbGxlY3RvciBjb25zdCYKLWVudHJ5X3ZhbHVlX2NvbGxlY3Rvcjo6b3BlcmF0b3I8PCggbGF6eV9vc3RyZWFtIGNvbnN0JiB2ICkgY29uc3QKLXsKLSAgICB1bml0X3Rlc3RfbG9nIDw8IHY7Ci0KLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWVudHJ5X3ZhbHVlX2NvbGxlY3RvciBjb25zdCYgCi1lbnRyeV92YWx1ZV9jb2xsZWN0b3I6Om9wZXJhdG9yPDwoIGNvbnN0X3N0cmluZyB2ICkgY29uc3QKLXsKLSAgICB1bml0X3Rlc3RfbG9nIDw8IHY7Ci0KLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWVudHJ5X3ZhbHVlX2NvbGxlY3Rvcjo6fmVudHJ5X3ZhbHVlX2NvbGxlY3RvcigpCi17Ci0gICAgaWYoIG1fbGFzdCApCi0gICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgbG9nOjplbmQoKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgdXRfZGV0YWlsCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgdW5pdF90ZXN0X2xvZyAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIHsKLQotc3RydWN0IHVuaXRfdGVzdF9sb2dfaW1wbCB7Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICB1bml0X3Rlc3RfbG9nX2ltcGwoKQotICAgIDogbV9zdHJlYW0oIHJ1bnRpbWVfY29uZmlnOjpsb2dfc2luaygpICkKLSAgICAsIG1fc3RyZWFtX3N0YXRlX3NhdmVyKCBuZXcgaW9fc2F2ZXJfdHlwZSggKm1fc3RyZWFtICkgKQotICAgICwgbV90aHJlc2hvbGRfbGV2ZWwoIGxvZ19hbGxfZXJyb3JzICkKLSAgICAsIG1fbG9nX2Zvcm1hdHRlciggbmV3IG91dHB1dDo6Y29tcGlsZXJfbG9nX2Zvcm1hdHRlciApCi0gICAgewotICAgIH0KLQotICAgIC8vIGxvZyBkYXRhCi0gICAgdHlwZWRlZiBzY29wZWRfcHRyPHVuaXRfdGVzdF9sb2dfZm9ybWF0dGVyPiBmb3JtYXR0ZXJfcHRyOwotICAgIHR5cGVkZWYgc2NvcGVkX3B0cjxpb19zYXZlcl90eXBlPiAgICAgICAgICAgc2F2ZXJfcHRyOwotCi0gICAgc3RkOjpvc3RyZWFtKiAgICAgICBtX3N0cmVhbTsKLSAgICBzYXZlcl9wdHIgICAgICAgICAgIG1fc3RyZWFtX3N0YXRlX3NhdmVyOwotICAgIGxvZ19sZXZlbCAgICAgICAgICAgbV90aHJlc2hvbGRfbGV2ZWw7Ci0gICAgZm9ybWF0dGVyX3B0ciAgICAgICBtX2xvZ19mb3JtYXR0ZXI7Ci0KLSAgICAvLyBlbnRyeSBkYXRhCi0gICAgYm9vbCAgICAgICAgICAgICAgICBtX2VudHJ5X2luX3Byb2dyZXNzOwotICAgIGJvb2wgICAgICAgICAgICAgICAgbV9lbnRyeV9zdGFydGVkOwotICAgIGxvZ19lbnRyeV9kYXRhICAgICAgbV9lbnRyeV9kYXRhOwotCi0gICAgLy8gY2hlY2sgcG9pbnQgZGF0YQotICAgIGxvZ19jaGVja3BvaW50X2RhdGEgbV9jaGVja3BvaW50X2RhdGE7Ci0KLSAgICAvLyBoZWxwZXIgZnVuY3Rpb25zCi0gICAgc3RkOjpvc3RyZWFtJiAgICAgICBzdHJlYW0oKSAgICAgICAgICAgIHsgcmV0dXJuICptX3N0cmVhbTsgfQotICAgIHZvaWQgICAgICAgICAgICAgICAgc2V0X2NoZWNrcG9pbnQoIGNvbnN0X3N0cmluZyBmaWxlLCBzdGQ6OnNpemVfdCBsaW5lX251bSwgY29uc3Rfc3RyaW5nIG1zZyApCi0gICAgewotICAgICAgICBhc3NpZ25fb3AoIG1fY2hlY2twb2ludF9kYXRhLm1fbWVzc2FnZSwgbXNnLCAwICk7Ci0gICAgICAgIG1fY2hlY2twb2ludF9kYXRhLm1fZmlsZV9uYW1lICAgID0gZmlsZTsKLSAgICAgICAgbV9jaGVja3BvaW50X2RhdGEubV9saW5lX251bSAgICA9IGxpbmVfbnVtOwotICAgIH0KLX07Ci0KLXVuaXRfdGVzdF9sb2dfaW1wbCYgc19sb2dfaW1wbCgpIHsgc3RhdGljIHVuaXRfdGVzdF9sb2dfaW1wbCB0aGVfaW5zdDsgcmV0dXJuIHRoZV9pbnN0OyB9Ci0KLX0gLy8gbG9jYWwgbmFtZXNwYWNlCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXVuaXRfdGVzdF9sb2dfdDo6dGVzdF9zdGFydCggY291bnRlcl90IHRlc3RfY2FzZXNfYW1vdW50ICkKLXsKLSAgICBpZiggc19sb2dfaW1wbCgpLm1fdGhyZXNob2xkX2xldmVsID09IGxvZ19ub3RoaW5nICkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc19sb2dfaW1wbCgpLm1fbG9nX2Zvcm1hdHRlci0+bG9nX3N0YXJ0KCBzX2xvZ19pbXBsKCkuc3RyZWFtKCksIHRlc3RfY2FzZXNfYW1vdW50ICk7Ci0KLSAgICBpZiggcnVudGltZV9jb25maWc6OnNob3dfYnVpbGRfaW5mbygpICkKLSAgICAgICAgc19sb2dfaW1wbCgpLm1fbG9nX2Zvcm1hdHRlci0+bG9nX2J1aWxkX2luZm8oIHNfbG9nX2ltcGwoKS5zdHJlYW0oKSApOwotCi0gICAgc19sb2dfaW1wbCgpLm1fZW50cnlfaW5fcHJvZ3Jlc3MgPSBmYWxzZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotdW5pdF90ZXN0X2xvZ190Ojp0ZXN0X2ZpbmlzaCgpCi17Ci0gICAgaWYoIHNfbG9nX2ltcGwoKS5tX3RocmVzaG9sZF9sZXZlbCA9PSBsb2dfbm90aGluZyApCi0gICAgICAgIHJldHVybjsKLQotICAgIHNfbG9nX2ltcGwoKS5tX2xvZ19mb3JtYXR0ZXItPmxvZ19maW5pc2goIHNfbG9nX2ltcGwoKS5zdHJlYW0oKSApOwotCi0gICAgc19sb2dfaW1wbCgpLnN0cmVhbSgpLmZsdXNoKCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXVuaXRfdGVzdF9sb2dfdDo6dGVzdF9hYm9ydGVkKCkKLXsKLSAgICBORE5CT09TVF9URVNUX0xPR19FTlRSWSggbG9nX21lc3NhZ2VzICkgPDwgIlRlc3QgaXMgYWJvcnRlZCI7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXVuaXRfdGVzdF9sb2dfdDo6dGVzdF91bml0X3N0YXJ0KCB0ZXN0X3VuaXQgY29uc3QmIHR1ICkKLXsKLSAgICBpZiggc19sb2dfaW1wbCgpLm1fdGhyZXNob2xkX2xldmVsID4gbG9nX3Rlc3RfdW5pdHMgKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiggc19sb2dfaW1wbCgpLm1fZW50cnlfaW5fcHJvZ3Jlc3MgKQotICAgICAgICAqdGhpcyA8PCBsb2c6OmVuZCgpOwotCi0gICAgc19sb2dfaW1wbCgpLm1fbG9nX2Zvcm1hdHRlci0+dGVzdF91bml0X3N0YXJ0KCBzX2xvZ19pbXBsKCkuc3RyZWFtKCksIHR1ICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXVuaXRfdGVzdF9sb2dfdDo6dGVzdF91bml0X2ZpbmlzaCggdGVzdF91bml0IGNvbnN0JiB0dSwgdW5zaWduZWQgbG9uZyBlbGFwc2VkICkKLXsKLSAgICBpZiggc19sb2dfaW1wbCgpLm1fdGhyZXNob2xkX2xldmVsID4gbG9nX3Rlc3RfdW5pdHMgKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzX2xvZ19pbXBsKCkubV9jaGVja3BvaW50X2RhdGEuY2xlYXIoKTsKLQotICAgIGlmKCBzX2xvZ19pbXBsKCkubV9lbnRyeV9pbl9wcm9ncmVzcyApCi0gICAgICAgICp0aGlzIDw8IGxvZzo6ZW5kKCk7Ci0KLSAgICBzX2xvZ19pbXBsKCkubV9sb2dfZm9ybWF0dGVyLT50ZXN0X3VuaXRfZmluaXNoKCBzX2xvZ19pbXBsKCkuc3RyZWFtKCksIHR1LCBlbGFwc2VkICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXVuaXRfdGVzdF9sb2dfdDo6dGVzdF91bml0X3NraXBwZWQoIHRlc3RfdW5pdCBjb25zdCYgdHUgKQotewotICAgIGlmKCBzX2xvZ19pbXBsKCkubV90aHJlc2hvbGRfbGV2ZWwgPiBsb2dfdGVzdF91bml0cyApCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmKCBzX2xvZ19pbXBsKCkubV9lbnRyeV9pbl9wcm9ncmVzcyApCi0gICAgICAgICp0aGlzIDw8IGxvZzo6ZW5kKCk7Ci0KLSAgICBzX2xvZ19pbXBsKCkubV9sb2dfZm9ybWF0dGVyLT50ZXN0X3VuaXRfc2tpcHBlZCggc19sb2dfaW1wbCgpLnN0cmVhbSgpLCB0dSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi11bml0X3Rlc3RfbG9nX3Q6OnRlc3RfdW5pdF9hYm9ydGVkKCB0ZXN0X3VuaXQgY29uc3QmICkKLXsKLSAgICAvLyBkbyBub3RoaW5nCi19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXVuaXRfdGVzdF9sb2dfdDo6YXNzZXJ0aW9uX3Jlc3VsdCggYm9vbCApCi17Ci0gICAgLy8gZG8gbm90aGluZwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi11bml0X3Rlc3RfbG9nX3Q6OmV4Y2VwdGlvbl9jYXVnaHQoIGV4ZWN1dGlvbl9leGNlcHRpb24gY29uc3QmIGV4ICkKLXsKLSAgICBsb2dfbGV2ZWwgbCA9Ci0gICAgICAgIGV4LmNvZGUoKSA8PSBleGVjdXRpb25fZXhjZXB0aW9uOjpjcHBfZXhjZXB0aW9uX2Vycm9yICAgPyBsb2dfY3BwX2V4Y2VwdGlvbl9lcnJvcnMgOgotICAgICAgICAoZXguY29kZSgpIDw9IGV4ZWN1dGlvbl9leGNlcHRpb246OnRpbWVvdXRfZXJyb3IgICAgICAgID8gbG9nX3N5c3RlbV9lcnJvcnMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxvZ19mYXRhbF9lcnJvcnMgKTsKLQotICAgIGlmKCBsID49IHNfbG9nX2ltcGwoKS5tX3RocmVzaG9sZF9sZXZlbCApIHsKLSAgICAgICAgaWYoIHNfbG9nX2ltcGwoKS5tX2VudHJ5X2luX3Byb2dyZXNzICkKLSAgICAgICAgICAgICp0aGlzIDw8IGxvZzo6ZW5kKCk7Ci0KLSAgICAgICAgc19sb2dfaW1wbCgpLm1fbG9nX2Zvcm1hdHRlci0+bG9nX2V4Y2VwdGlvbiggc19sb2dfaW1wbCgpLnN0cmVhbSgpLCBzX2xvZ19pbXBsKCkubV9jaGVja3BvaW50X2RhdGEsIGV4ICk7Ci0gICAgfQotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi11bml0X3Rlc3RfbG9nX3Q6OnNldF9jaGVja3BvaW50KCBjb25zdF9zdHJpbmcgZmlsZSwgc3RkOjpzaXplX3QgbGluZV9udW0sIGNvbnN0X3N0cmluZyBtc2cgKQotewotICAgIHNfbG9nX2ltcGwoKS5zZXRfY2hlY2twb2ludCggZmlsZSwgbGluZV9udW0sIG1zZyApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1jaGFyCi1zZXRfdW5peF9zbGFzaCggY2hhciBpbiApCi17Ci0gICAgcmV0dXJuIGluID09ICdcXCcgPyAnLycgOiBpbjsKLX0KLSAgICAKLXVuaXRfdGVzdF9sb2dfdCYKLXVuaXRfdGVzdF9sb2dfdDo6b3BlcmF0b3I8PCggbG9nOjpiZWdpbiBjb25zdCYgYiApCi17Ci0gICAgaWYoIHNfbG9nX2ltcGwoKS5tX2VudHJ5X2luX3Byb2dyZXNzICkKLSAgICAgICAgKnRoaXMgPDwgbG9nOjplbmQoKTsKLQotICAgIHNfbG9nX2ltcGwoKS5tX3N0cmVhbV9zdGF0ZV9zYXZlci0+cmVzdG9yZSgpOwotCi0gICAgc19sb2dfaW1wbCgpLm1fZW50cnlfZGF0YS5jbGVhcigpOwotCi0gICAgYXNzaWduX29wKCBzX2xvZ19pbXBsKCkubV9lbnRyeV9kYXRhLm1fZmlsZV9uYW1lLCBiLm1fZmlsZV9uYW1lLCAwICk7Ci0KLSAgICAvLyBub3JtYWxpemUgZmlsZSBuYW1lCi0gICAgc3RkOjp0cmFuc2Zvcm0oIHNfbG9nX2ltcGwoKS5tX2VudHJ5X2RhdGEubV9maWxlX25hbWUuYmVnaW4oKSwgc19sb2dfaW1wbCgpLm1fZW50cnlfZGF0YS5tX2ZpbGVfbmFtZS5lbmQoKSwKLSAgICAgICAgICAgICAgICAgICAgc19sb2dfaW1wbCgpLm1fZW50cnlfZGF0YS5tX2ZpbGVfbmFtZS5iZWdpbigpLAotICAgICAgICAgICAgICAgICAgICAmc2V0X3VuaXhfc2xhc2ggKTsKLQotICAgIHNfbG9nX2ltcGwoKS5tX2VudHJ5X2RhdGEubV9saW5lX251bSA9IGIubV9saW5lX251bTsKLQotICAgIHJldHVybiAqdGhpczsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdW5pdF90ZXN0X2xvZ190JgotdW5pdF90ZXN0X2xvZ190OjpvcGVyYXRvcjw8KCBsb2c6OmVuZCBjb25zdCYgKQotewotICAgIGlmKCBzX2xvZ19pbXBsKCkubV9lbnRyeV9pbl9wcm9ncmVzcyApCi0gICAgICAgIHNfbG9nX2ltcGwoKS5tX2xvZ19mb3JtYXR0ZXItPmxvZ19lbnRyeV9maW5pc2goIHNfbG9nX2ltcGwoKS5zdHJlYW0oKSApOwotCi0gICAgc19sb2dfaW1wbCgpLm1fZW50cnlfaW5fcHJvZ3Jlc3MgPSBmYWxzZTsKLQotICAgIHJldHVybiAqdGhpczsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdW5pdF90ZXN0X2xvZ190JgotdW5pdF90ZXN0X2xvZ190OjpvcGVyYXRvcjw8KCBsb2dfbGV2ZWwgbCApCi17Ci0gICAgc19sb2dfaW1wbCgpLm1fZW50cnlfZGF0YS5tX2xldmVsID0gbDsKLQotICAgIHJldHVybiAqdGhpczsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdXRfZGV0YWlsOjplbnRyeV92YWx1ZV9jb2xsZWN0b3IKLXVuaXRfdGVzdF9sb2dfdDo6b3BlcmF0b3IoKSggbG9nX2xldmVsIGwgKQotewotICAgICp0aGlzIDw8IGw7Ci0KLSAgICByZXR1cm4gdXRfZGV0YWlsOjplbnRyeV92YWx1ZV9jb2xsZWN0b3IoKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotYm9vbAotdW5pdF90ZXN0X2xvZ190Ojpsb2dfZW50cnlfc3RhcnQoKQotewotICAgIGlmKCBzX2xvZ19pbXBsKCkubV9lbnRyeV9pbl9wcm9ncmVzcyApIAotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIHN3aXRjaCggc19sb2dfaW1wbCgpLm1fZW50cnlfZGF0YS5tX2xldmVsICkgewotICAgIGNhc2UgbG9nX3N1Y2Nlc3NmdWxfdGVzdHM6Ci0gICAgICAgIHNfbG9nX2ltcGwoKS5tX2xvZ19mb3JtYXR0ZXItPmxvZ19lbnRyeV9zdGFydCggc19sb2dfaW1wbCgpLnN0cmVhbSgpLCBzX2xvZ19pbXBsKCkubV9lbnRyeV9kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXRfdGVzdF9sb2dfZm9ybWF0dGVyOjpORE5CT09TVF9VVExfRVRfSU5GTyApOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIGxvZ19tZXNzYWdlczoKLSAgICAgICAgc19sb2dfaW1wbCgpLm1fbG9nX2Zvcm1hdHRlci0+bG9nX2VudHJ5X3N0YXJ0KCBzX2xvZ19pbXBsKCkuc3RyZWFtKCksIHNfbG9nX2ltcGwoKS5tX2VudHJ5X2RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdF90ZXN0X2xvZ19mb3JtYXR0ZXI6Ok5ETkJPT1NUX1VUTF9FVF9NRVNTQUdFICk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgbG9nX3dhcm5pbmdzOgotICAgICAgICBzX2xvZ19pbXBsKCkubV9sb2dfZm9ybWF0dGVyLT5sb2dfZW50cnlfc3RhcnQoIHNfbG9nX2ltcGwoKS5zdHJlYW0oKSwgc19sb2dfaW1wbCgpLm1fZW50cnlfZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0X3Rlc3RfbG9nX2Zvcm1hdHRlcjo6TkROQk9PU1RfVVRMX0VUX1dBUk5JTkcgKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBsb2dfYWxsX2Vycm9yczoKLSAgICBjYXNlIGxvZ19jcHBfZXhjZXB0aW9uX2Vycm9yczoKLSAgICBjYXNlIGxvZ19zeXN0ZW1fZXJyb3JzOgotICAgICAgICBzX2xvZ19pbXBsKCkubV9sb2dfZm9ybWF0dGVyLT5sb2dfZW50cnlfc3RhcnQoIHNfbG9nX2ltcGwoKS5zdHJlYW0oKSwgc19sb2dfaW1wbCgpLm1fZW50cnlfZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0X3Rlc3RfbG9nX2Zvcm1hdHRlcjo6TkROQk9PU1RfVVRMX0VUX0VSUk9SICk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgbG9nX2ZhdGFsX2Vycm9yczoKLSAgICAgICAgc19sb2dfaW1wbCgpLm1fbG9nX2Zvcm1hdHRlci0+bG9nX2VudHJ5X3N0YXJ0KCBzX2xvZ19pbXBsKCkuc3RyZWFtKCksIHNfbG9nX2ltcGwoKS5tX2VudHJ5X2RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdF90ZXN0X2xvZ19mb3JtYXR0ZXI6Ok5ETkJPT1NUX1VUTF9FVF9GQVRBTF9FUlJPUiApOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIGxvZ19ub3RoaW5nOgotICAgIGNhc2UgbG9nX3Rlc3RfdW5pdHM6Ci0gICAgY2FzZSBpbnZhbGlkX2xvZ19sZXZlbDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHNfbG9nX2ltcGwoKS5tX2VudHJ5X2luX3Byb2dyZXNzID0gdHJ1ZTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi11bml0X3Rlc3RfbG9nX3QmCi11bml0X3Rlc3RfbG9nX3Q6Om9wZXJhdG9yPDwoIGNvbnN0X3N0cmluZyB2YWx1ZSApCi17Ci0gICAgaWYoIHNfbG9nX2ltcGwoKS5tX2VudHJ5X2RhdGEubV9sZXZlbCA+PSBzX2xvZ19pbXBsKCkubV90aHJlc2hvbGRfbGV2ZWwgJiYgIXZhbHVlLmVtcHR5KCkgJiYgbG9nX2VudHJ5X3N0YXJ0KCkgKQotICAgICAgICBzX2xvZ19pbXBsKCkubV9sb2dfZm9ybWF0dGVyLT5sb2dfZW50cnlfdmFsdWUoIHNfbG9nX2ltcGwoKS5zdHJlYW0oKSwgdmFsdWUgKTsKLQotICAgIHJldHVybiAqdGhpczsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdW5pdF90ZXN0X2xvZ190JgotdW5pdF90ZXN0X2xvZ190OjpvcGVyYXRvcjw8KCBsYXp5X29zdHJlYW0gY29uc3QmIHZhbHVlICkKLXsKLSAgICBpZiggc19sb2dfaW1wbCgpLm1fZW50cnlfZGF0YS5tX2xldmVsID49IHNfbG9nX2ltcGwoKS5tX3RocmVzaG9sZF9sZXZlbCAmJiAhdmFsdWUuZW1wdHkoKSAmJiBsb2dfZW50cnlfc3RhcnQoKSApCi0gICAgICAgIHNfbG9nX2ltcGwoKS5tX2xvZ19mb3JtYXR0ZXItPmxvZ19lbnRyeV92YWx1ZSggc19sb2dfaW1wbCgpLnN0cmVhbSgpLCB2YWx1ZSApOwotCi0gICAgcmV0dXJuICp0aGlzOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi11bml0X3Rlc3RfbG9nX3Q6OnNldF9zdHJlYW0oIHN0ZDo6b3N0cmVhbSYgc3RyICkKLXsKLSAgICBpZiggc19sb2dfaW1wbCgpLm1fZW50cnlfaW5fcHJvZ3Jlc3MgKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzX2xvZ19pbXBsKCkubV9zdHJlYW0gPSAmc3RyOwotICAgIHNfbG9nX2ltcGwoKS5tX3N0cmVhbV9zdGF0ZV9zYXZlci5yZXNldCggbmV3IGlvX3NhdmVyX3R5cGUoIHN0ciApICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXVuaXRfdGVzdF9sb2dfdDo6c2V0X3RocmVzaG9sZF9sZXZlbCggbG9nX2xldmVsIGxldiApCi17Ci0gICAgaWYoIHNfbG9nX2ltcGwoKS5tX2VudHJ5X2luX3Byb2dyZXNzIHx8IGxldiA9PSBpbnZhbGlkX2xvZ19sZXZlbCApCi0gICAgICAgIHJldHVybjsKLQotICAgIHNfbG9nX2ltcGwoKS5tX3RocmVzaG9sZF9sZXZlbCA9IGxldjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotdW5pdF90ZXN0X2xvZ190OjpzZXRfZm9ybWF0KCBvdXRwdXRfZm9ybWF0IGxvZ19mb3JtYXQgKQotewotICAgIGlmKCBzX2xvZ19pbXBsKCkubV9lbnRyeV9pbl9wcm9ncmVzcyApCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmKCBsb2dfZm9ybWF0ID09IENMRiApCi0gICAgICAgIHNldF9mb3JtYXR0ZXIoIG5ldyBvdXRwdXQ6OmNvbXBpbGVyX2xvZ19mb3JtYXR0ZXIgKTsKLSAgICBlbHNlCi0gICAgICAgIHNldF9mb3JtYXR0ZXIoIG5ldyBvdXRwdXQ6OnhtbF9sb2dfZm9ybWF0dGVyICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXVuaXRfdGVzdF9sb2dfdDo6c2V0X2Zvcm1hdHRlciggdW5pdF90ZXN0X2xvZ19mb3JtYXR0ZXIqIHRoZV9mb3JtYXR0ZXIgKQotewotICAgIHNfbG9nX2ltcGwoKS5tX2xvZ19mb3JtYXR0ZXIucmVzZXQoIHRoZV9mb3JtYXR0ZXIgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgdW5pdF90ZXN0X2xvZ19mb3JtYXR0ZXIgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi12b2lkCi11bml0X3Rlc3RfbG9nX2Zvcm1hdHRlcjo6bG9nX2VudHJ5X3ZhbHVlKCBzdGQ6Om9zdHJlYW0mIG9zdHIsIGxhenlfb3N0cmVhbSBjb25zdCYgdmFsdWUgKQotewotICAgIGxvZ19lbnRyeV92YWx1ZSggb3N0ciwgKHdyYXBfc3RyaW5nc3RyZWFtKCkucmVmKCkgPDwgdmFsdWUpLnN0cigpICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX0xPR19JUFBfMDEyMjA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC91bml0X3Rlc3RfbWFpbi5pcHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC91bml0X3Rlc3RfbWFpbi5pcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyNjkxZjUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvdW5pdF90ZXN0X21haW4uaXBwCisrKyAvZGV2L251bGwKQEAgLTEsMjQ2ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDEtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBtYWluIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9uIGZvciBVbml0IFRlc3QgRnJhbWV3b3JrCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9NQUlOX0lQUF8wMTIyMDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfTUFJTl9JUFBfMDEyMjA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2ZyYW1ld29yay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9yZXN1bHRzX2NvbGxlY3Rvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91bml0X3Rlc3Rfc3VpdGVfaW1wbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9yZXN1bHRzX3JlcG9ydGVyLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3VuaXRfdGVzdF9wYXJhbWV0ZXJzLmhwcD4KLQotI2lmICFkZWZpbmVkKF9fQk9STEFORENfXykgJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoIE5ETkJPT1NUX01TVkMsIDwgMTMwMCApICYmICFORE5CT09TVF9XT1JLQVJPVU5EKCBfX1NVTlBST19DQywgPCAweDUxMDAgKQotI2RlZmluZSBORE5CT09TVF9URVNUX1NVUFBPUlRfUlVOX0JZX05BTUUKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2l0ZXJhdG9yL3Rva2VuX2l0ZXJhdG9yLmhwcD4KLSNlbmRpZgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L2NzdGRsaWIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2JpbmQuaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxzdGRleGNlcHQ+Ci0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgIHRlc3RfY2FzZV9maWx0ZXIgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIHRlc3RfY2FzZV9maWx0ZXIgOiBwdWJsaWMgdGVzdF90cmVlX3Zpc2l0b3IgewotcHVibGljOgotICAgIHN0cnVjdCBzaW5nbGVfZmlsdGVyIHsKLSAgICAgICAgc2luZ2xlX2ZpbHRlciggY29uc3Rfc3RyaW5nIGluICkKLSAgICAgICAgewotICAgICAgICAgICAgaWYoIGluID09ICIqIiApCi0gICAgICAgICAgICAgICAgbV9raW5kICA9IFNGS19BTEw7Ci0gICAgICAgICAgICBlbHNlIGlmKCBmaXJzdF9jaGFyKCBpbiApID09ICcqJyAmJiBsYXN0X2NoYXIoIGluICkgPT0gJyonICkgewotICAgICAgICAgICAgICAgIG1fa2luZCAgPSBTRktfU1VCU1RSOwotICAgICAgICAgICAgICAgIG1fdmFsdWUgPSBpbi5zdWJzdHIoIDEsIGluLnNpemUoKS0xICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmKCBmaXJzdF9jaGFyKCBpbiApID09ICcqJyApIHsKLSAgICAgICAgICAgICAgICBtX2tpbmQgID0gU0ZLX1RSQUlMSU5HOwotICAgICAgICAgICAgICAgIG1fdmFsdWUgPSBpbi5zdWJzdHIoIDEgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYoIGxhc3RfY2hhciggaW4gKSA9PSAnKicgKSB7Ci0gICAgICAgICAgICAgICAgbV9raW5kICA9IFNGS19MRUFESU5HOwotICAgICAgICAgICAgICAgIG1fdmFsdWUgPSBpbi5zdWJzdHIoIDAsIGluLnNpemUoKS0xICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBtX2tpbmQgID0gU0ZLX01BVENIOwotICAgICAgICAgICAgICAgIG1fdmFsdWUgPSBpbjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLQotICAgICAgICBib29sICAgICAgICAgICAgcGFzcyggdGVzdF91bml0IGNvbnN0JiB0dSApIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0X3N0cmluZyBuYW1lKCB0dS5wX25hbWUgKTsKLSAgICAKLSAgICAgICAgICAgIHN3aXRjaCggbV9raW5kICkgewotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNhc2UgU0ZLX0FMTDoKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICAgICAgY2FzZSBTRktfTEVBRElORzoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmFtZS5zdWJzdHIoIDAsIG1fdmFsdWUuc2l6ZSgpICkgPT0gbV92YWx1ZTsKLQotICAgICAgICAgICAgY2FzZSBTRktfVFJBSUxJTkc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5hbWUuc2l6ZSgpID49IG1fdmFsdWUuc2l6ZSgpICYmIG5hbWUuc3Vic3RyKCBuYW1lLnNpemUoKSAtIG1fdmFsdWUuc2l6ZSgpICkgPT0gbV92YWx1ZTsKLQotICAgICAgICAgICAgY2FzZSBTRktfU1VCU1RSOgotICAgICAgICAgICAgICAgIHJldHVybiBuYW1lLmZpbmQoIG1fdmFsdWUgKSAhPSBjb25zdF9zdHJpbmc6Om5wb3M7Ci0KLSAgICAgICAgICAgIGNhc2UgU0ZLX01BVENIOgotICAgICAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlID09IHR1LnBfbmFtZS5nZXQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbnVtIGtpbmQgeyBTRktfQUxMLCBTRktfTEVBRElORywgU0ZLX1RSQUlMSU5HLCBTRktfU1VCU1RSLCBTRktfTUFUQ0ggfTsKLQotICAgICAgICBraW5kICAgICAgICAgICAgbV9raW5kOwotICAgICAgICBjb25zdF9zdHJpbmcgICAgbV92YWx1ZTsKLSAgICB9OwotICAgIC8vIENvbnN0cnVjdG9yCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfU1VQUE9SVF9SVU5fQllfTkFNRQotICAgIGV4cGxpY2l0ICAgICAgICB0ZXN0X2Nhc2VfZmlsdGVyKCBjb25zdF9zdHJpbmcgKSA6IG1fZGVwdGgoIDAgKSB7fQotI2Vsc2UKLSAgICBleHBsaWNpdCAgICAgICAgdGVzdF9jYXNlX2ZpbHRlciggY29uc3Rfc3RyaW5nIHRjX3RvX3J1biApIAotICAgIDogbV9kZXB0aCggMCApCi0gICAgewotICAgICAgICBzdHJpbmdfdG9rZW5faXRlcmF0b3IgdGl0KCB0Y190b19ydW4sIChkcm9wcGVkX2RlbGltZXRlcnMgPSAiLyIsIGtlcHRfZGVsaW1ldGVycyA9IGR0X25vbmUpICk7Ci0KLSAgICAgICAgd2hpbGUoIHRpdCAhPSBzdHJpbmdfdG9rZW5faXRlcmF0b3IoKSApIHsKLSAgICAgICAgICAgIG1fZmlsdGVycy5wdXNoX2JhY2soIAotICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPHNpbmdsZV9maWx0ZXI+KCBzdHJpbmdfdG9rZW5faXRlcmF0b3IoICp0aXQsIChkcm9wcGVkX2RlbGltZXRlcnMgPSAiLCIsIGtlcHRfZGVsaW1ldGVycyA9IGR0X25vbmUpICApLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nX3Rva2VuX2l0ZXJhdG9yKCkgKSApOwotCi0gICAgICAgICAgICArK3RpdDsgICAgICAgICAgIAotICAgICAgICB9Ci0gICAgfQotI2VuZGlmCi0gICAgCi0gICAgdm9pZCAgICAgICAgICAgIGZpbHRlcl91bml0KCB0ZXN0X3VuaXQgY29uc3QmIHR1ICkKLSAgICB7Ci0gICAgICAgIGlmKCAoKyttX2RlcHRoIC0gMSkgPiBtX2ZpbHRlcnMuc2l6ZSgpICkgewotICAgICAgICAgICAgdHUucF9lbmFibGVkLnZhbHVlID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmKCBtX2RlcHRoID09IDEgKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHN0ZDo6dmVjdG9yPHNpbmdsZV9maWx0ZXI+IGNvbnN0JiBmaWx0ZXJzID0gbV9maWx0ZXJzW21fZGVwdGgtMl07Ci0KLSAgICAgICAgdHUucF9lbmFibGVkLnZhbHVlID0KLSAgICAgICAgICAgIHN0ZDo6ZmluZF9pZiggZmlsdGVycy5iZWdpbigpLCBmaWx0ZXJzLmVuZCgpLCBiaW5kKCAmc2luZ2xlX2ZpbHRlcjo6cGFzcywgXzEsIG5kbmJvb3N0OjpyZWYodHUpICkgKSAhPSBmaWx0ZXJzLmVuZCgpOwotICAgIH0KLQotICAgIC8vIHRlc3QgdHJlZSB2aXNpdG9yIGludGVyZmFjZQotICAgIHZpcnR1YWwgdm9pZCAgICB2aXNpdCggdGVzdF9jYXNlIGNvbnN0JiB0YyApCi0gICAgewotICAgICAgICBpZiggbV9kZXB0aCA8IG1fZmlsdGVycy5zaXplKCkgKSB7Ci0gICAgICAgICAgICB0Yy5wX2VuYWJsZWQudmFsdWUgPSBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGZpbHRlcl91bml0KCB0YyApOwotCi0gICAgICAgIC0tbV9kZXB0aDsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgICAgdGVzdF9zdWl0ZV9zdGFydCggdGVzdF9zdWl0ZSBjb25zdCYgdHMgKQotICAgIHsgCi0gICAgICAgIGZpbHRlcl91bml0KCB0cyApOwotCi0gICAgICAgIGlmKCAhdHMucF9lbmFibGVkICkKLSAgICAgICAgICAgIC0tbV9kZXB0aDsKLQotICAgICAgICByZXR1cm4gdHMucF9lbmFibGVkOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCAgICB0ZXN0X3N1aXRlX2ZpbmlzaCggdGVzdF9zdWl0ZSBjb25zdCYgKSAgeyAtLW1fZGVwdGg7IH0KLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3RvcjxzaW5nbGVfZmlsdGVyPiA+ICAgIG1fZmlsdGVyczsKLSAgICB1bnNpZ25lZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZGVwdGg7Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICB1bml0X3Rlc3RfbWFpbiAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWludCBORE5CT09TVF9URVNUX0RFQ0wKLXVuaXRfdGVzdF9tYWluKCBpbml0X3VuaXRfdGVzdF9mdW5jIGluaXRfZnVuYywgaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSApCi17Ci0gICAgdHJ5IHsKLSAgICAgICAgZnJhbWV3b3JrOjppbml0KCBpbml0X2Z1bmMsIGFyZ2MsIGFyZ3YgKTsKLQotICAgICAgICBpZiggIXJ1bnRpbWVfY29uZmlnOjp0ZXN0X3RvX3J1bigpLmlzX2VtcHR5KCkgKSB7Ci0gICAgICAgICAgICB0ZXN0X2Nhc2VfZmlsdGVyIGZpbHRlciggcnVudGltZV9jb25maWc6OnRlc3RfdG9fcnVuKCkgKTsKLQotICAgICAgICAgICAgdHJhdmVyc2VfdGVzdF90cmVlKCBmcmFtZXdvcms6Om1hc3Rlcl90ZXN0X3N1aXRlKCkucF9pZCwgZmlsdGVyICk7Ci0gICAgICAgIH0KLQotICAgICAgICBmcmFtZXdvcms6OnJ1bigpOwotCi0gICAgICAgIHJlc3VsdHNfcmVwb3J0ZXI6Om1ha2VfcmVwb3J0KCk7Ci0KLSAgICAgICAgcmV0dXJuIHJ1bnRpbWVfY29uZmlnOjpub19yZXN1bHRfY29kZSgpIAotICAgICAgICAgICAgICAgICAgICA/IG5kbmJvb3N0OjpleGl0X3N1Y2Nlc3MKLSAgICAgICAgICAgICAgICAgICAgOiByZXN1bHRzX2NvbGxlY3Rvci5yZXN1bHRzKCBmcmFtZXdvcms6Om1hc3Rlcl90ZXN0X3N1aXRlKCkucF9pZCApLnJlc3VsdF9jb2RlKCk7Ci0gICAgfQotICAgIGNhdGNoKCBmcmFtZXdvcms6Om5vdGhpbmdfdG9fdGVzdCBjb25zdCYgKSB7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6ZXhpdF9zdWNjZXNzOwotICAgIH0KLSAgICBjYXRjaCggZnJhbWV3b3JrOjppbnRlcm5hbF9lcnJvciBjb25zdCYgZXggKSB7Ci0gICAgICAgIHJlc3VsdHNfcmVwb3J0ZXI6OmdldF9zdHJlYW0oKSA8PCAiQm9vc3QuVGVzdCBmcmFtZXdvcmsgaW50ZXJuYWwgZXJyb3I6ICIgPDwgZXgud2hhdCgpIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiBuZG5ib29zdDo6ZXhpdF9leGNlcHRpb25fZmFpbHVyZTsKLSAgICB9Ci0gICAgY2F0Y2goIGZyYW1ld29yazo6c2V0dXBfZXJyb3IgY29uc3QmIGV4ICkgewotICAgICAgICByZXN1bHRzX3JlcG9ydGVyOjpnZXRfc3RyZWFtKCkgPDwgIlRlc3Qgc2V0dXAgZXJyb3I6ICIgPDwgZXgud2hhdCgpIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiBuZG5ib29zdDo6ZXhpdF9leGNlcHRpb25fZmFpbHVyZTsKLSAgICB9Ci0gICAgY2F0Y2goIC4uLiApIHsKLSAgICAgICAgcmVzdWx0c19yZXBvcnRlcjo6Z2V0X3N0cmVhbSgpIDw8ICJCb29zdC5UZXN0IGZyYW1ld29yayBpbnRlcm5hbCBlcnJvcjogdW5rbm93biByZWFzb24iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiBuZG5ib29zdDo6ZXhpdF9leGNlcHRpb25fZmFpbHVyZTsKLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVEVTVF9EWU5fTElOSykgJiYgIWRlZmluZWQoTkROQk9PU1RfVEVTVF9OT19NQUlOKQotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgIG1haW4gZnVuY3Rpb24gZm9yIHRlc3RzIHVzaW5nIGxpYiAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWludCBORE5CT09TVF9URVNUX0NBTExfREVDTAotbWFpbiggaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSApCi17Ci0gICAgLy8gcHJvdG90eXBlIGZvciB1c2VyJ3MgdW5pdCB0ZXN0IGluaXQgZnVuY3Rpb24KLSNpZmRlZiBORE5CT09TVF9URVNUX0FMVEVSTkFUSVZFX0lOSVRfQVBJCi0gICAgZXh0ZXJuIGJvb2wgaW5pdF91bml0X3Rlc3QoKTsKLQotICAgIG5kbmJvb3N0Ojp1bml0X3Rlc3Q6OmluaXRfdW5pdF90ZXN0X2Z1bmMgaW5pdF9mdW5jID0gJmluaXRfdW5pdF90ZXN0OwotI2Vsc2UKLSAgICBleHRlcm4gOjpuZG5ib29zdDo6dW5pdF90ZXN0Ojp0ZXN0X3N1aXRlKiBpbml0X3VuaXRfdGVzdF9zdWl0ZSggaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSApOwotCi0gICAgbmRuYm9vc3Q6OnVuaXRfdGVzdDo6aW5pdF91bml0X3Rlc3RfZnVuYyBpbml0X2Z1bmMgPSAmaW5pdF91bml0X3Rlc3Rfc3VpdGU7Ci0jZW5kaWYKLQotICAgIHJldHVybiA6Om5kbmJvb3N0Ojp1bml0X3Rlc3Q6OnVuaXRfdGVzdF9tYWluKCBpbml0X2Z1bmMsIGFyZ2MsIGFyZ3YgKTsKLX0KLQotI2VuZGlmIC8vICFORE5CT09TVF9URVNUX0RZTl9MSU5LICYmICFORE5CT09TVF9URVNUX05PX01BSU4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9NQUlOX0lQUF8wMTIyMDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3VuaXRfdGVzdF9tb25pdG9yLmlwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3VuaXRfdGVzdF9tb25pdG9yLmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjc0NzAxZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC91bml0X3Rlc3RfbW9uaXRvci5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDEgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGltcGxlbWVudHMgc3BlY2lmaWMgc3ViY2xhc3Mgb2YgRXhlY3V0b24gTW9uaXRvciB1c2VkIGJ5IFVuaXQKLS8vICBUZXN0IEZyYW1ld29yayB0byBtb25pdG9yIHRlc3QgY2FzZXMgcnVuLgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfTU9OSVRPUl9JUFBfMDEyMjA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX01PTklUT1JfSVBQXzAxMjIwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91bml0X3Rlc3RfbW9uaXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91bml0X3Rlc3Rfc3VpdGVfaW1wbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC90ZXN0X3Rvb2xzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2ZyYW1ld29yay5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC91bml0X3Rlc3RfcGFyYW1ldGVycy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi1uYW1lc3BhY2UgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGPgotc3RydWN0IHplcm9fcmV0dXJuX3dyYXBwZXJfdCB7Ci0gICAgZXhwbGljaXQgemVyb19yZXR1cm5fd3JhcHBlcl90KCBGIGNvbnN0JiBmICkgOiBtX2YoIGYgKSB7fQotICAgIAotICAgIGludCBvcGVyYXRvcigpKCkgeyBtX2YoKTsgcmV0dXJuIDA7IH0KLSAgICAKLSAgICBGIGNvbnN0JiBtX2Y7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGPgotemVyb19yZXR1cm5fd3JhcHBlcl90PEY+Ci16ZXJvX3JldHVybl93cmFwcGVyKCBGIGNvbnN0JiBmICkKLXsKLSAgICByZXR1cm4gemVyb19yZXR1cm5fd3JhcHBlcl90PEY+KCBmICk7Ci19Ci0KLX0KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgdW5pdF90ZXN0X21vbml0b3IgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi11bml0X3Rlc3RfbW9uaXRvcl90OjplcnJvcl9sZXZlbAotdW5pdF90ZXN0X21vbml0b3JfdDo6ZXhlY3V0ZV9hbmRfdHJhbnNsYXRlKCB0ZXN0X2Nhc2UgY29uc3QmIHRjICkKLXsKLSAgICB0cnkgewotICAgICAgICBwX2NhdGNoX3N5c3RlbV9lcnJvcnMudmFsdWUgICAgID0gcnVudGltZV9jb25maWc6OmNhdGNoX3N5c19lcnJvcnMoKTsKLSAgICAgICAgcF90aW1lb3V0LnZhbHVlICAgICAgICAgICAgICAgICA9IHRjLnBfdGltZW91dC5nZXQoKTsKLSAgICAgICAgcF9hdXRvX3N0YXJ0X2RiZy52YWx1ZSAgICAgICAgICA9IHJ1bnRpbWVfY29uZmlnOjphdXRvX3N0YXJ0X2RiZygpOwotICAgICAgICBwX3VzZV9hbHRfc3RhY2sudmFsdWUgICAgICAgICAgID0gcnVudGltZV9jb25maWc6OnVzZV9hbHRfc3RhY2soKTsKLSAgICAgICAgcF9kZXRlY3RfZnBfZXhjZXB0aW9ucy52YWx1ZSAgICA9IHJ1bnRpbWVfY29uZmlnOjpkZXRlY3RfZnBfZXhjZXB0aW9ucygpOwotCi0gICAgICAgIGV4ZWN1dGUoIGNhbGxiYWNrMDxpbnQ+KCB6ZXJvX3JldHVybl93cmFwcGVyKCB0Yy50ZXN0X2Z1bmMoKSApICkgKTsKLSAgICB9Ci0gICAgY2F0Y2goIGV4ZWN1dGlvbl9leGNlcHRpb24gY29uc3QmIGV4ICkgewotICAgICAgICBmcmFtZXdvcms6OmV4Y2VwdGlvbl9jYXVnaHQoIGV4ICk7Ci0gICAgICAgIGZyYW1ld29yazo6dGVzdF91bml0X2Fib3J0ZWQoIGZyYW1ld29yazo6Y3VycmVudF90ZXN0X2Nhc2UoKSApOwotCi0gICAgICAgIC8vIHRyYW5zbGF0ZSBleGVjdXRpb25fZXhjZXB0aW9uOjplcnJvcl9jb2RlIHRvIGVycm9yX2xldmVsCi0gICAgICAgIHN3aXRjaCggZXguY29kZSgpICkgewotICAgICAgICBjYXNlIGV4ZWN1dGlvbl9leGNlcHRpb246Om5vX2Vycm9yOiAgICAgICAgICAgICByZXR1cm4gdGVzdF9vazsKLSAgICAgICAgY2FzZSBleGVjdXRpb25fZXhjZXB0aW9uOjp1c2VyX2Vycm9yOiAgICAgICAgICAgcmV0dXJuIHVuZXhwZWN0ZWRfZXhjZXB0aW9uOwotICAgICAgICBjYXNlIGV4ZWN1dGlvbl9leGNlcHRpb246OmNwcF9leGNlcHRpb25fZXJyb3I6ICByZXR1cm4gdW5leHBlY3RlZF9leGNlcHRpb247Ci0gICAgICAgIGNhc2UgZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yOiAgICAgICAgIHJldHVybiBvc19leGNlcHRpb247Ci0gICAgICAgIGNhc2UgZXhlY3V0aW9uX2V4Y2VwdGlvbjo6dGltZW91dF9lcnJvcjogICAgICAgIHJldHVybiBvc190aW1lb3V0OwotICAgICAgICBjYXNlIGV4ZWN1dGlvbl9leGNlcHRpb246OnVzZXJfZmF0YWxfZXJyb3I6Ci0gICAgICAgIGNhc2UgZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2ZhdGFsX2Vycm9yOiAgIHJldHVybiBmYXRhbF9lcnJvcjsKLSAgICAgICAgZGVmYXVsdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZXhwZWN0ZWRfZXhjZXB0aW9uOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHRlc3Rfb2s7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX01PTklUT1JfSVBQXzAxMjIwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvdW5pdF90ZXN0X3BhcmFtZXRlcnMuaXBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvdW5pdF90ZXN0X3BhcmFtZXRlcnMuaXBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NWYzZmE1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3VuaXRfdGVzdF9wYXJhbWV0ZXJzLmlwcAorKysgL2Rldi9udWxsCkBAIC0xLDUyNyArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDAxLTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA2MzY0MCAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogc2ltcGxlIGltcGxlbWVudGF0aW9uIGZvciBVbml0IFRlc3QgRnJhbWV3b3JrIHBhcmFtZXRlcgotLy8gIGhhbmRsaW5nIHJvdXRpbmVzLiBNYXkgYmUgcmV3cml0dGVuIGluIGZ1dHVyZSB0byB1c2Ugc29tZSBraW5kIG9mCi0vLyAgY29tbWFuZC1saW5lIGFyZ3VtZW50cyBwYXJzaW5nIGZhY2lsaXR5IGFuZCBlbnZpcm9ubWVudCB2YXJpYWJsZSBoYW5kbGluZwotLy8gIGZhY2lsaXR5Ci0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9QQVJBTUVURVJTX0lQUF8wMTIyMDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfUEFSQU1FVEVSU19JUFBfMDEyMjA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC91bml0X3Rlc3RfcGFyYW1ldGVycy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2Jhc2ljX2NzdHJpbmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9jb21wYXJlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvaW8uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvZml4ZWRfbWFwcGluZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZWJ1Zy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9mcmFtZXdvcmsuaHBwPgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9kdWFsX25hbWVfcGFyYW1ldGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3BhcnNlci5ocHA+Ci0KLW5hbWVzcGFjZSBydCAgPSBuZG5ib29zdDo6cnVudGltZTsKLW5hbWVzcGFjZSBjbGEgPSBydDo6Y2xhOwotCi0KLSNpZm5kZWYgVU5ERVJfQ0UKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZW52L3ZhcmlhYmxlLmhwcD4KLQotbmFtZXNwYWNlIGVudiA9IHJ0OjplbnY7Ci0jZW5kaWYKLQotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2xleGljYWxfY2FzdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8bWFwPgotI2luY2x1ZGUgPGNzdGRsaWI+Ci0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0jaW5jbHVkZSA8ZnN0cmVhbT4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotIyBpZmRlZiBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRQotbmFtZXNwYWNlIHN0ZCB7IHVzaW5nIDo6Z2V0ZW52OyB1c2luZyA6OnN0cm5jbXA7IHVzaW5nIDo6c3RyY21wOyB9Ci0jIGVuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgaW5wdXQgb3BlcmF0aW9ucyBmb3IgdW5pdF90ZXN0J3MgZW51bXMgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXN0ZDo6aXN0cmVhbSYKLW9wZXJhdG9yPj4oIHN0ZDo6aXN0cmVhbSYgaW4sIHVuaXRfdGVzdDo6bG9nX2xldmVsJiBsbCApCi17Ci0gICAgc3RhdGljIGZpeGVkX21hcHBpbmc8Y29uc3Rfc3RyaW5nLHVuaXRfdGVzdDo6bG9nX2xldmVsLGNhc2VfaW5zX2xlc3M8Y2hhciBjb25zdD4gPiBsb2dfbGV2ZWxfbmFtZSgKLSAgICAgICAgImFsbCIgICAgICAgICAgICwgbG9nX3N1Y2Nlc3NmdWxfdGVzdHMsCi0gICAgICAgICJzdWNjZXNzIiAgICAgICAsIGxvZ19zdWNjZXNzZnVsX3Rlc3RzLAotICAgICAgICAidGVzdF9zdWl0ZSIgICAgLCBsb2dfdGVzdF91bml0cywKLSAgICAgICAgInVuaXRfc2NvcGUiICAgICwgbG9nX3Rlc3RfdW5pdHMsCi0gICAgICAgICJtZXNzYWdlIiAgICAgICAsIGxvZ19tZXNzYWdlcywKLSAgICAgICAgIndhcm5pbmciICAgICAgICwgbG9nX3dhcm5pbmdzLAotICAgICAgICAiZXJyb3IiICAgICAgICAgLCBsb2dfYWxsX2Vycm9ycywKLSAgICAgICAgImNwcF9leGNlcHRpb24iICwgbG9nX2NwcF9leGNlcHRpb25fZXJyb3JzLAotICAgICAgICAic3lzdGVtX2Vycm9yIiAgLCBsb2dfc3lzdGVtX2Vycm9ycywKLSAgICAgICAgImZhdGFsX2Vycm9yIiAgICwgbG9nX2ZhdGFsX2Vycm9ycywKLSAgICAgICAgIm5vdGhpbmciICAgICAgICwgbG9nX25vdGhpbmcsCi0KLSAgICAgICAgaW52YWxpZF9sb2dfbGV2ZWwKLSAgICAgICAgKTsKLQotICAgIHN0ZDo6c3RyaW5nIHZhbDsKLSAgICBpbiA+PiB2YWw7Ci0KLSAgICBsbCA9IGxvZ19sZXZlbF9uYW1lW3ZhbF07Ci0gICAgTkROQk9PU1RfVEVTVF9TRVRVUF9BU1NFUlQoIGxsICE9IHVuaXRfdGVzdDo6aW52YWxpZF9sb2dfbGV2ZWwsICJpbnZhbGlkIGxvZyBsZXZlbCAiICsgdmFsICk7Ci0KLSAgICByZXR1cm4gaW47Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXN0ZDo6aXN0cmVhbSYKLW9wZXJhdG9yPj4oIHN0ZDo6aXN0cmVhbSYgaW4sIHVuaXRfdGVzdDo6cmVwb3J0X2xldmVsJiBybCApCi17Ci0gICAgZml4ZWRfbWFwcGluZzxjb25zdF9zdHJpbmcsdW5pdF90ZXN0OjpyZXBvcnRfbGV2ZWwsY2FzZV9pbnNfbGVzczxjaGFyIGNvbnN0PiA+IHJlcG9ydF9sZXZlbF9uYW1lICgKLSAgICAgICAgImNvbmZpcm0iLCAgQ09ORklSTUFUSU9OX1JFUE9SVCwKLSAgICAgICAgInNob3J0IiwgICAgU0hPUlRfUkVQT1JULAotICAgICAgICAiZGV0YWlsZWQiLCBERVRBSUxFRF9SRVBPUlQsCi0gICAgICAgICJubyIsICAgICAgIE5PX1JFUE9SVCwKLQotICAgICAgICBJTlZfUkVQT1JUX0xFVkVMCi0gICAgICAgICk7Ci0KLSAgICBzdGQ6OnN0cmluZyB2YWw7Ci0gICAgaW4gPj4gdmFsOwotCi0gICAgcmwgPSByZXBvcnRfbGV2ZWxfbmFtZVt2YWxdOwotICAgIE5ETkJPT1NUX1RFU1RfU0VUVVBfQVNTRVJUKCBybCAhPSBJTlZfUkVQT1JUX0xFVkVMLCAiaW52YWxpZCByZXBvcnQgbGV2ZWwgIiArIHZhbCApOwotCi0gICAgcmV0dXJuIGluOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zdGQ6OmlzdHJlYW0mCi1vcGVyYXRvcj4+KCBzdGQ6OmlzdHJlYW0mIGluLCB1bml0X3Rlc3Q6Om91dHB1dF9mb3JtYXQmIG9mICkKLXsKLSAgICBmaXhlZF9tYXBwaW5nPGNvbnN0X3N0cmluZyx1bml0X3Rlc3Q6Om91dHB1dF9mb3JtYXQsY2FzZV9pbnNfbGVzczxjaGFyIGNvbnN0PiA+IG91dHB1dF9mb3JtYXRfbmFtZSAoCi0gICAgICAgICJIUkYiLCB1bml0X3Rlc3Q6OkNMRiwKLSAgICAgICAgIkNMRiIsIHVuaXRfdGVzdDo6Q0xGLAotICAgICAgICAiWE1MIiwgdW5pdF90ZXN0OjpYTUwsCi0KLSAgICAgICAgdW5pdF90ZXN0OjpJTlZfT0YKLSAgICAgICAgKTsKLQotICAgIHN0ZDo6c3RyaW5nIHZhbDsKLSAgICBpbiA+PiB2YWw7Ci0KLSAgICBvZiA9IG91dHB1dF9mb3JtYXRfbmFtZVt2YWxdOwotICAgIE5ETkJPT1NUX1RFU1RfU0VUVVBfQVNTRVJUKCBvZiAhPSB1bml0X3Rlc3Q6OklOVl9PRiwgImludmFsaWQgb3V0cHV0IGZvcm1hdCAiICsgdmFsICk7Ci0KLSAgICByZXR1cm4gaW47Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgcnVudGltZV9jb25maWcgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIHJ1bnRpbWVfY29uZmlnIHsKLQotbmFtZXNwYWNlIHsKLQotLy8gZnJhbWV3b3JrIHBhcmFtZXRlcnMgYW5kIGNvcnJlc3BvbmRpbmcgY29tbWFuZC1saW5lIGFyZ3VtZW50cwotc3RkOjpzdHJpbmcgQVVUT19TVEFSVF9EQkcgICAgPSAiYXV0b19zdGFydF9kYmciOwotc3RkOjpzdHJpbmcgQlJFQUtfRVhFQ19QQVRIICAgPSAiYnJlYWtfZXhlY19wYXRoIjsKLXN0ZDo6c3RyaW5nIEJVSUxEX0lORk8gICAgICAgID0gImJ1aWxkX2luZm8iOwotc3RkOjpzdHJpbmcgQ0FUQ0hfU1lTX0VSUk9SUyAgPSAiY2F0Y2hfc3lzdGVtX2Vycm9ycyI7Ci1zdGQ6OnN0cmluZyBERVRFQ1RfRlBfRVhDRVBUICA9ICJkZXRlY3RfZnBfZXhjZXB0aW9ucyI7Ci1zdGQ6OnN0cmluZyBERVRFQ1RfTUVNX0xFQUtTICA9ICJkZXRlY3RfbWVtb3J5X2xlYWtzIjsKLXN0ZDo6c3RyaW5nIExPR19GT1JNQVQgICAgICAgID0gImxvZ19mb3JtYXQiOwotc3RkOjpzdHJpbmcgTE9HX0xFVkVMICAgICAgICAgPSAibG9nX2xldmVsIjsKLXN0ZDo6c3RyaW5nIExPR19TSU5LICAgICAgICAgID0gImxvZ19zaW5rIjsKLXN0ZDo6c3RyaW5nIE9VVFBVVF9GT1JNQVQgICAgID0gIm91dHB1dF9mb3JtYXQiOwotc3RkOjpzdHJpbmcgUkFORE9NX1NFRUQgICAgICAgPSAicmFuZG9tIjsKLXN0ZDo6c3RyaW5nIFJFUE9SVF9GT1JNQVQgICAgID0gInJlcG9ydF9mb3JtYXQiOwotc3RkOjpzdHJpbmcgUkVQT1JUX0xFVkVMICAgICAgPSAicmVwb3J0X2xldmVsIjsKLXN0ZDo6c3RyaW5nIFJFUE9SVF9TSU5LICAgICAgID0gInJlcG9ydF9zaW5rIjsKLXN0ZDo6c3RyaW5nIFJFU1VMVF9DT0RFICAgICAgID0gInJlc3VsdF9jb2RlIjsKLXN0ZDo6c3RyaW5nIFRFU1RTX1RPX1JVTiAgICAgID0gInJ1bl90ZXN0IjsKLXN0ZDo6c3RyaW5nIFNBVkVfVEVTVF9QQVRURVJOID0gInNhdmVfcGF0dGVybiI7Ci1zdGQ6OnN0cmluZyBTSE9XX1BST0dSRVNTICAgICA9ICJzaG93X3Byb2dyZXNzIjsKLXN0ZDo6c3RyaW5nIFVTRV9BTFRfU1RBQ0sgICAgID0gInVzZV9hbHRfc3RhY2siOwotCi1maXhlZF9tYXBwaW5nPGNvbnN0X3N0cmluZyxjb25zdF9zdHJpbmc+IHBhcmFtZXRlcl8yX2Vudl92YXIoCi0gICAgQVVUT19TVEFSVF9EQkcgICAgLCAiTkROQk9PU1RfVEVTVF9BVVRPX1NUQVJUX0RCRyIsCi0gICAgQlJFQUtfRVhFQ19QQVRIICAgLCAiTkROQk9PU1RfVEVTVF9CUkVBS19FWEVDX1BBVEgiLAotICAgIEJVSUxEX0lORk8gICAgICAgICwgIk5ETkJPT1NUX1RFU1RfQlVJTERfSU5GTyIsCi0gICAgQ0FUQ0hfU1lTX0VSUk9SUyAgLCAiTkROQk9PU1RfVEVTVF9DQVRDSF9TWVNURU1fRVJST1JTIiwKLSAgICBERVRFQ1RfRlBfRVhDRVBUICAsICJORE5CT09TVF9URVNUX0RFVEVDVF9GUF9FWENFUFRJT05TIiwKLSAgICBERVRFQ1RfTUVNX0xFQUtTICAsICJORE5CT09TVF9URVNUX0RFVEVDVF9NRU1PUllfTEVBSyIsCi0gICAgTE9HX0ZPUk1BVCAgICAgICAgLCAiTkROQk9PU1RfVEVTVF9MT0dfRk9STUFUIiwKLSAgICBMT0dfTEVWRUwgICAgICAgICAsICJORE5CT09TVF9URVNUX0xPR19MRVZFTCIsCi0gICAgTE9HX1NJTksgICAgICAgICAgLCAiTkROQk9PU1RfVEVTVF9MT0dfU0lOSyIsCi0gICAgT1VUUFVUX0ZPUk1BVCAgICAgLCAiTkROQk9PU1RfVEVTVF9PVVRQVVRfRk9STUFUIiwKLSAgICBSQU5ET01fU0VFRCAgICAgICAsICJORE5CT09TVF9URVNUX1JBTkRPTSIsCi0gICAgUkVQT1JUX0ZPUk1BVCAgICAgLCAiTkROQk9PU1RfVEVTVF9SRVBPUlRfRk9STUFUIiwKLSAgICBSRVBPUlRfTEVWRUwgICAgICAsICJORE5CT09TVF9URVNUX1JFUE9SVF9MRVZFTCIsCi0gICAgUkVQT1JUX1NJTksgICAgICAgLCAiTkROQk9PU1RfVEVTVF9SRVBPUlRfU0lOSyIsCi0gICAgUkVTVUxUX0NPREUgICAgICAgLCAiTkROQk9PU1RfVEVTVF9SRVNVTFRfQ09ERSIsCi0gICAgVEVTVFNfVE9fUlVOICAgICAgLCAiTkROQk9PU1RfVEVTVFNfVE9fUlVOIiwKLSAgICBTQVZFX1RFU1RfUEFUVEVSTiAsICJORE5CT09TVF9URVNUX1NBVkVfUEFUVEVSTiIsCi0gICAgU0hPV19QUk9HUkVTUyAgICAgLCAiTkROQk9PU1RfVEVTVF9TSE9XX1BST0dSRVNTIiwKLSAgICBVU0VfQUxUX1NUQUNLICAgICAsICJORE5CT09TVF9URVNUX1VTRV9BTFRfU1RBQ0siLAotCi0gICAgIiIKLSk7Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vIHN0b3JhZ2UgZm9yIHRoZSBDTEFzCi1jbGE6OnBhcnNlciAgICAgc19jbGFfcGFyc2VyOwotc3RkOjpzdHJpbmcgICAgIHNfZW1wdHk7Ci0KLW91dHB1dF9mb3JtYXQgICBzX3JlcG9ydF9mb3JtYXQ7Ci1vdXRwdXRfZm9ybWF0ICAgc19sb2dfZm9ybWF0OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotVAotcmV0cmlldmVfcGFyYW1ldGVyKCBjb25zdF9zdHJpbmcgcGFyYW1ldGVyX25hbWUsIGNsYTo6cGFyc2VyIGNvbnN0JiBzX2NsYV9wYXJzZXIsIFQgY29uc3QmIGRlZmF1bHRfdmFsdWUgPSBUKCksIFQgY29uc3QmIG9wdGlvbmFsX3ZhbHVlID0gVCgpICkKLXsKLSAgICBydDo6Y29uc3RfYXJndW1lbnRfcHRyIGFyZyA9IHNfY2xhX3BhcnNlcltwYXJhbWV0ZXJfbmFtZV07Ci0gICAgaWYoIGFyZyApIHsKLSAgICAgICAgaWYoIHJ0dGk6OnR5cGVfaWQ8VD4oKSA9PSBydHRpOjp0eXBlX2lkPGJvb2w+KCkgfHwKLSAgICAgICAgICAgICFzdGF0aWNfY2FzdDxjbGE6OnBhcmFtZXRlciBjb25zdCY+KCBhcmctPnBfZm9ybWFsX3BhcmFtZXRlci5nZXQoKSApLnBfb3B0aW9uYWxfdmFsdWUgKQotICAgICAgICAgICAgcmV0dXJuIHNfY2xhX3BhcnNlci5nZXQ8VD4oIHBhcmFtZXRlcl9uYW1lICk7Ci0KLSAgICAgICAgb3B0aW9uYWw8VD4gdmFsID0gc19jbGFfcGFyc2VyLmdldDxvcHRpb25hbDxUPiA+KCBwYXJhbWV0ZXJfbmFtZSApOwotICAgICAgICBpZiggdmFsICkKLSAgICAgICAgICAgIHJldHVybiAqdmFsOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gb3B0aW9uYWxfdmFsdWU7Ci0gICAgfQotCi0gICAgbmRuYm9vc3Q6Om9wdGlvbmFsPFQ+IHY7Ci0KLSNpZm5kZWYgVU5ERVJfQ0UKLSAgICBlbnY6OmdldCggcGFyYW1ldGVyXzJfZW52X3ZhcltwYXJhbWV0ZXJfbmFtZV0sIHYgKTsKLSNlbmRpZgotCi0gICAgaWYoIHYgKQotICAgICAgICByZXR1cm4gKnY7Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gZGVmYXVsdF92YWx1ZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBsb2NhbCBuYW1lc3BhY2UgCi0KLXZvaWQKLWluaXQoIGludCYgYXJnYywgY2hhcioqIGFyZ3YgKQotewotICAgIHVzaW5nIG5hbWVzcGFjZSBjbGE7Ci0KLSAgICB0cnkgewotICAgICAgICBzX2NsYV9wYXJzZXIgLSBjbGE6Omlnbm9yZV9taXNtYXRjaAotICAgICAgICAgIDw8IGNsYTo6ZHVhbF9uYW1lX3BhcmFtZXRlcjxib29sPiggQVVUT19TVEFSVF9EQkcgKyAifGQiICkKLSAgICAgICAgICAgIC0gKGNsYTo6cHJlZml4ID0gIi0tfC0iLGNsYTo6c2VwYXJhdG9yID0gIj18ICIsY2xhOjpndWVzc19uYW1lLGNsYTo6b3B0aW9uYWwsCi0gICAgICAgICAgICAgICBjbGE6OmRlc2NyaXB0aW9uID0gIkF1dG9tYXRpY2FsbHkgc3RhcnRzIGRlYnVnZ2VyIGlmIHN5c3RlbSBsZXZlbCBlcnJvciAoc2lnbmFsKSBvY2N1cnMiKQotICAgICAgICAgIDw8IGNsYTo6bmFtZWRfcGFyYW1ldGVyPHN0ZDo6c3RyaW5nPiggQlJFQUtfRVhFQ19QQVRIICkKLSAgICAgICAgICAgIC0gKGNsYTo6cHJlZml4ID0gIi0tIixjbGE6OnNlcGFyYXRvciA9ICI9IixjbGE6Omd1ZXNzX25hbWUsY2xhOjpvcHRpb25hbCwKLSAgICAgICAgICAgICAgIGNsYTo6ZGVzY3JpcHRpb24gPSAiRm9yIHRoZSBleGNlcHRpb24gc2FmZXR5IHRlc3RpbmcgYWxsb3dzIHRvIGJyZWFrIGF0IHNwZWNpZmljIGV4ZWN1dGlvbiBwYXRoIikKLSAgICAgICAgICA8PCBjbGE6OmR1YWxfbmFtZV9wYXJhbWV0ZXI8Ym9vbD4oIEJVSUxEX0lORk8gKyAifGkiICkKLSAgICAgICAgICAgIC0gKGNsYTo6cHJlZml4ID0gIi0tfC0iLGNsYTo6c2VwYXJhdG9yID0gIj18ICIsY2xhOjpndWVzc19uYW1lLGNsYTo6b3B0aW9uYWwsCi0gICAgICAgICAgICAgICBjbGE6OmRlc2NyaXB0aW9uID0gIlNob3dzIGxpYnJhcnkgYnVpbGQgaW5mb3JtYXRpb24iICkKLSAgICAgICAgICA8PCBjbGE6OmR1YWxfbmFtZV9wYXJhbWV0ZXI8Ym9vbD4oIENBVENIX1NZU19FUlJPUlMgKyAifHMiICkKLSAgICAgICAgICAgIC0gKGNsYTo6cHJlZml4ID0gIi0tfC0iLGNsYTo6c2VwYXJhdG9yID0gIj18ICIsY2xhOjpndWVzc19uYW1lLGNsYTo6b3B0aW9uYWwsCi0gICAgICAgICAgICAgICBjbGE6OmRlc2NyaXB0aW9uID0gIkFsbG93cyB0byBzd2l0Y2ggYmV0d2VlbiBjYXRjaGluZyBhbmQgaWdub3Jpbmcgc3lzdGVtIGVycm9ycyAoc2lnbmFscykiKQotICAgICAgICAgIDw8IGNsYTo6bmFtZWRfcGFyYW1ldGVyPGJvb2w+KCBERVRFQ1RfRlBfRVhDRVBUICkKLSAgICAgICAgICAgIC0gKGNsYTo6cHJlZml4ID0gIi0tIixjbGE6OnNlcGFyYXRvciA9ICI9IixjbGE6Omd1ZXNzX25hbWUsY2xhOjpvcHRpb25hbCwKLSAgICAgICAgICAgICAgIGNsYTo6ZGVzY3JpcHRpb24gPSAiQWxsb3dzIHRvIHN3aXRjaCBiZXR3ZWVuIGNhdGNoaW5nIGFuZCBpZ25vcmluZyBmbG9hdGluZyBwb2ludCBleGNlcHRpb25zIikKLSAgICAgICAgICA8PCBjbGE6Om5hbWVkX3BhcmFtZXRlcjxsb25nPiggREVURUNUX01FTV9MRUFLUyApCi0gICAgICAgICAgICAtIChjbGE6OnByZWZpeCA9ICItLSIsY2xhOjpzZXBhcmF0b3IgPSAiPSIsY2xhOjpndWVzc19uYW1lLGNsYTo6b3B0aW9uYWwsCi0gICAgICAgICAgICAgICBjbGE6OmRlc2NyaXB0aW9uID0gIkFsbG93cyB0byBzd2l0Y2ggYmV0d2VlbiBjYXRjaGluZyBhbmQgaWdub3JpbmcgbWVtb3J5IGxlYWtzIikKLSAgICAgICAgICA8PCBjbGE6OmR1YWxfbmFtZV9wYXJhbWV0ZXI8dW5pdF90ZXN0OjpvdXRwdXRfZm9ybWF0PiggTE9HX0ZPUk1BVCArICJ8ZiIgKQotICAgICAgICAgICAgLSAoY2xhOjpwcmVmaXggPSAiLS18LSIsY2xhOjpzZXBhcmF0b3IgPSAiPXwgIixjbGE6Omd1ZXNzX25hbWUsY2xhOjpvcHRpb25hbCwKLSAgICAgICAgICAgICAgIGNsYTo6ZGVzY3JpcHRpb24gPSAiU3BlY2lmaWVzIGxvZyBmb3JtYXQiKQotICAgICAgICAgIDw8IGNsYTo6ZHVhbF9uYW1lX3BhcmFtZXRlcjx1bml0X3Rlc3Q6OmxvZ19sZXZlbD4oIExPR19MRVZFTCArICJ8bCIgKQotICAgICAgICAgICAgLSAoY2xhOjpwcmVmaXggPSAiLS18LSIsY2xhOjpzZXBhcmF0b3IgPSAiPXwgIixjbGE6Omd1ZXNzX25hbWUsY2xhOjpvcHRpb25hbCwKLSAgICAgICAgICAgICAgIGNsYTo6ZGVzY3JpcHRpb24gPSAiU3BlY2lmaWVzIGxvZyBsZXZlbCIpCi0gICAgICAgICAgPDwgY2xhOjpkdWFsX25hbWVfcGFyYW1ldGVyPHN0ZDo6c3RyaW5nPiggTE9HX1NJTksgKyAifGsiICkKLSAgICAgICAgICAgIC0gKGNsYTo6cHJlZml4ID0gIi0tfC0iLGNsYTo6c2VwYXJhdG9yID0gIj18ICIsY2xhOjpndWVzc19uYW1lLGNsYTo6b3B0aW9uYWwsCi0gICAgICAgICAgICAgICBjbGE6OmRlc2NyaXB0aW9uID0gIlNwZWNpZmllcyBsb2cgc2luazpzdGRvdXQoZGVmYXVsdCksc3RkZXJyIG9yIGZpbGUgbmFtZSIpCi0gICAgICAgICAgPDwgY2xhOjpkdWFsX25hbWVfcGFyYW1ldGVyPHVuaXRfdGVzdDo6b3V0cHV0X2Zvcm1hdD4oIE9VVFBVVF9GT1JNQVQgKyAifG8iICkKLSAgICAgICAgICAgIC0gKGNsYTo6cHJlZml4ID0gIi0tfC0iLGNsYTo6c2VwYXJhdG9yID0gIj18ICIsY2xhOjpndWVzc19uYW1lLGNsYTo6b3B0aW9uYWwsCi0gICAgICAgICAgICAgICBjbGE6OmRlc2NyaXB0aW9uID0gIlNwZWNpZmllcyBvdXRwdXQgZm9ybWF0IChib3RoIGxvZyBhbmQgcmVwb3J0KSIpCi0gICAgICAgICAgPDwgY2xhOjpkdWFsX25hbWVfcGFyYW1ldGVyPGludD4oIFJBTkRPTV9TRUVEICsgInxhIiApCi0gICAgICAgICAgICAtIChjbGE6OnByZWZpeCA9ICItLXwtIixjbGE6OnNlcGFyYXRvciA9ICI9fCAiLGNsYTo6Z3Vlc3NfbmFtZSxjbGE6Om9wdGlvbmFsLGNsYTo6b3B0aW9uYWxfdmFsdWUsCi0gICAgICAgICAgICAgICBjbGE6OmRlc2NyaXB0aW9uID0gIkFsbG93cyB0byBzd2l0Y2ggYmV0d2VlbiBzZXF1ZW50aWFsIGFuZCByYW5kb20gb3JkZXIgb2YgdGVzdCB1bml0cyBleGVjdXRpb24uXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9wdGlvbmFsbHkgYWxsb3dzIHRvIHNwZWNpZnkgY29uY3JldGUgc2VlZCBmb3IgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IiKQotICAgICAgICAgIDw8IGNsYTo6ZHVhbF9uYW1lX3BhcmFtZXRlcjx1bml0X3Rlc3Q6Om91dHB1dF9mb3JtYXQ+KCBSRVBPUlRfRk9STUFUICsgInxtIiApCi0gICAgICAgICAgICAtIChjbGE6OnByZWZpeCA9ICItLXwtIixjbGE6OnNlcGFyYXRvciA9ICI9fCAiLGNsYTo6Z3Vlc3NfbmFtZSxjbGE6Om9wdGlvbmFsLAotICAgICAgICAgICAgICAgY2xhOjpkZXNjcmlwdGlvbiA9ICJTcGVjaWZpZXMgcmVwb3J0IGZvcm1hdCIpCi0gICAgICAgICAgPDwgY2xhOjpkdWFsX25hbWVfcGFyYW1ldGVyPHVuaXRfdGVzdDo6cmVwb3J0X2xldmVsPihSRVBPUlRfTEVWRUwgKyAifHIiKQotICAgICAgICAgICAgLSAoY2xhOjpwcmVmaXggPSAiLS18LSIsY2xhOjpzZXBhcmF0b3IgPSAiPXwgIixjbGE6Omd1ZXNzX25hbWUsY2xhOjpvcHRpb25hbCwKLSAgICAgICAgICAgICAgIGNsYTo6ZGVzY3JpcHRpb24gPSAiU3BlY2lmaWVzIHJlcG9ydCBsZXZlbCIpCi0gICAgICAgICAgPDwgY2xhOjpkdWFsX25hbWVfcGFyYW1ldGVyPHN0ZDo6c3RyaW5nPiggUkVQT1JUX1NJTksgKyAifGUiICkKLSAgICAgICAgICAgIC0gKGNsYTo6cHJlZml4ID0gIi0tfC0iLGNsYTo6c2VwYXJhdG9yID0gIj18ICIsY2xhOjpndWVzc19uYW1lLGNsYTo6b3B0aW9uYWwsCi0gICAgICAgICAgICAgICBjbGE6OmRlc2NyaXB0aW9uID0gIlNwZWNpZmllcyByZXBvcnQgc2luazpzdGRlcnIoZGVmYXVsdCksc3Rkb3V0IG9yIGZpbGUgbmFtZSIpCi0gICAgICAgICAgPDwgY2xhOjpkdWFsX25hbWVfcGFyYW1ldGVyPGJvb2w+KCBSRVNVTFRfQ09ERSArICJ8YyIgKQotICAgICAgICAgICAgLSAoY2xhOjpwcmVmaXggPSAiLS18LSIsY2xhOjpzZXBhcmF0b3IgPSAiPXwgIixjbGE6Omd1ZXNzX25hbWUsY2xhOjpvcHRpb25hbCwKLSAgICAgICAgICAgICAgIGNsYTo6ZGVzY3JpcHRpb24gPSAiQWxsb3dzIHRvIGRpc2FibGUgdGVzdCBtb2R1bGVzJ3MgcmVzdWx0IGNvZGUgZ2VuZXJhdGlvbiIpCi0gICAgICAgICAgPDwgY2xhOjpkdWFsX25hbWVfcGFyYW1ldGVyPHN0ZDo6c3RyaW5nPiggVEVTVFNfVE9fUlVOICsgInx0IiApCi0gICAgICAgICAgICAtIChjbGE6OnByZWZpeCA9ICItLXwtIixjbGE6OnNlcGFyYXRvciA9ICI9fCAiLGNsYTo6Z3Vlc3NfbmFtZSxjbGE6Om9wdGlvbmFsLAotICAgICAgICAgICAgICAgY2xhOjpkZXNjcmlwdGlvbiA9ICJBbGxvd3MgdG8gZmlsdGVyIHdoaWNoIHRlc3QgdW5pdHMgdG8gcnVuIikKLSAgICAgICAgICA8PCBjbGE6Om5hbWVkX3BhcmFtZXRlcjxib29sPiggU0FWRV9URVNUX1BBVFRFUk4gKQotICAgICAgICAgICAgLSAoY2xhOjpwcmVmaXggPSAiLS0iLGNsYTo6c2VwYXJhdG9yID0gIj0iLGNsYTo6Z3Vlc3NfbmFtZSxjbGE6Om9wdGlvbmFsLAotICAgICAgICAgICAgICAgY2xhOjpkZXNjcmlwdGlvbiA9ICJBbGxvd3MgdG8gc3dpdGNoIGJldHdlZW4gc2F2aW5nIGFuZCBtYXRjaGluZyBhZ2FpbnN0IHRlc3QgcGF0dGVybiBmaWxlIikKLSAgICAgICAgICA8PCBjbGE6OmR1YWxfbmFtZV9wYXJhbWV0ZXI8Ym9vbD4oIFNIT1dfUFJPR1JFU1MgKyAifHAiICkKLSAgICAgICAgICAgIC0gKGNsYTo6cHJlZml4ID0gIi0tfC0iLGNsYTo6c2VwYXJhdG9yID0gIj18ICIsY2xhOjpndWVzc19uYW1lLGNsYTo6b3B0aW9uYWwsCi0gICAgICAgICAgICAgICBjbGE6OmRlc2NyaXB0aW9uID0gIlR1cm5zIG9uIHByb2dyZXNzIGRpc3BsYXkiKQotICAgICAgICAgIDw8IGNsYTo6bmFtZWRfcGFyYW1ldGVyPGJvb2w+KCBVU0VfQUxUX1NUQUNLICkKLSAgICAgICAgICAgIC0gKGNsYTo6cHJlZml4ID0gIi0tIixjbGE6OnNlcGFyYXRvciA9ICI9IixjbGE6Omd1ZXNzX25hbWUsY2xhOjpvcHRpb25hbCwKLSAgICAgICAgICAgICAgIGNsYTo6ZGVzY3JpcHRpb24gPSAiVHVybnMgb24vb2ZmIHVzYWdlIG9mIGFuIGFsdGVybmF0aXZlIHN0YWNrIGZvciBzaWduYWwgaGFuZGxpbmciKQotCi0gICAgICAgICAgPDwgY2xhOjpkdWFsX25hbWVfcGFyYW1ldGVyPGJvb2w+KCAiaGVscHw/IiApCi0gICAgICAgICAgICAtIChjbGE6OnByZWZpeCA9ICItLXwtIixjbGE6OnNlcGFyYXRvciA9ICI9IixjbGE6Omd1ZXNzX25hbWUsY2xhOjpvcHRpb25hbCwKLSAgICAgICAgICAgICAgIGNsYTo6ZGVzY3JpcHRpb24gPSAidGhpcyBoZWxwIG1lc3NhZ2UiKQotICAgICAgICAgICAgOwotCi0gICAgICAgIHNfY2xhX3BhcnNlci5wYXJzZSggYXJnYywgYXJndiApOwotCi0gICAgICAgIGlmKCBzX2NsYV9wYXJzZXJbImhlbHAiXSApIHsKLSAgICAgICAgICAgIHNfY2xhX3BhcnNlci5oZWxwKCBzdGQ6OmNvdXQgKTsKLSAgICAgICAgICAgIHRocm93IGZyYW1ld29yazo6bm90aGluZ190b190ZXN0KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBzX3JlcG9ydF9mb3JtYXQgICAgID0gcmV0cmlldmVfcGFyYW1ldGVyKCBSRVBPUlRfRk9STUFULCBzX2NsYV9wYXJzZXIsIHVuaXRfdGVzdDo6Q0xGICk7Ci0gICAgICAgIHNfbG9nX2Zvcm1hdCAgICAgICAgPSByZXRyaWV2ZV9wYXJhbWV0ZXIoIExPR19GT1JNQVQsIHNfY2xhX3BhcnNlciwgdW5pdF90ZXN0OjpDTEYgKTsKLQotICAgICAgICB1bml0X3Rlc3Q6Om91dHB1dF9mb3JtYXQgb2YgPSByZXRyaWV2ZV9wYXJhbWV0ZXIoIE9VVFBVVF9GT1JNQVQsIHNfY2xhX3BhcnNlciwgdW5pdF90ZXN0OjpJTlZfT0YgKTsKLQotICAgICAgICBpZiggb2YgIT0gdW5pdF90ZXN0OjpJTlZfT0YgKQotICAgICAgICAgICAgc19yZXBvcnRfZm9ybWF0ID0gc19sb2dfZm9ybWF0ID0gb2Y7Ci0gICAgfQotICAgIGNhdGNoKCBydDo6bG9naWNfZXJyb3IgY29uc3QmIGV4ICkgewotICAgICAgICBzdGQ6Om9zdHJpbmdzdHJlYW0gZXJyOwotICAgICAgICAKLSAgICAgICAgZXJyIDw8ICJGYWlsIHRvIHByb2Nlc3MgcnVudGltZSBwYXJhbWV0ZXJzOiAiIDw8IGV4Lm1zZygpIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgc19jbGFfcGFyc2VyLnVzYWdlKCBlcnIgKTsKLQotICAgICAgICB0aHJvdyBmcmFtZXdvcms6OnNldHVwX2Vycm9yKCBlcnIuc3RyKCkgKTsKLSAgICB9Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXVuaXRfdGVzdDo6bG9nX2xldmVsCi1sb2dfbGV2ZWwoKQotewotICAgIHJldHVybiByZXRyaWV2ZV9wYXJhbWV0ZXIoIExPR19MRVZFTCwgc19jbGFfcGFyc2VyLCB1bml0X3Rlc3Q6OmxvZ19hbGxfZXJyb3JzICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWJvb2wKLW5vX3Jlc3VsdF9jb2RlKCkKLXsKLSAgICByZXR1cm4gIXJldHJpZXZlX3BhcmFtZXRlciggUkVTVUxUX0NPREUsIHNfY2xhX3BhcnNlciwgdHJ1ZSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi11bml0X3Rlc3Q6OnJlcG9ydF9sZXZlbAotcmVwb3J0X2xldmVsKCkKLXsKLSAgICByZXR1cm4gcmV0cmlldmVfcGFyYW1ldGVyKCBSRVBPUlRfTEVWRUwsIHNfY2xhX3BhcnNlciwgdW5pdF90ZXN0OjpDT05GSVJNQVRJT05fUkVQT1JUICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWNvbnN0X3N0cmluZwotdGVzdF90b19ydW4oKQotewotICAgIHN0YXRpYyBzdGQ6OnN0cmluZyBzX3Rlc3RfdG9fcnVuID0gcmV0cmlldmVfcGFyYW1ldGVyKCBURVNUU19UT19SVU4sIHNfY2xhX3BhcnNlciwgc19lbXB0eSApOwotCi0gICAgcmV0dXJuIHNfdGVzdF90b19ydW47Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWNvbnN0X3N0cmluZwotYnJlYWtfZXhlY19wYXRoKCkKLXsKLSAgICBzdGF0aWMgc3RkOjpzdHJpbmcgc19icmVha19leGVjX3BhdGggPSByZXRyaWV2ZV9wYXJhbWV0ZXIoIEJSRUFLX0VYRUNfUEFUSCwgc19jbGFfcGFyc2VyLCBzX2VtcHR5ICk7Ci0KLSAgICByZXR1cm4gc19icmVha19leGVjX3BhdGg7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWJvb2wKLXNhdmVfcGF0dGVybigpCi17Ci0gICAgcmV0dXJuIHJldHJpZXZlX3BhcmFtZXRlciggU0FWRV9URVNUX1BBVFRFUk4sIHNfY2xhX3BhcnNlciwgZmFsc2UgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotYm9vbAotc2hvd19wcm9ncmVzcygpCi17Ci0gICAgcmV0dXJuIHJldHJpZXZlX3BhcmFtZXRlciggU0hPV19QUk9HUkVTUywgc19jbGFfcGFyc2VyLCBmYWxzZSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ib29sCi1zaG93X2J1aWxkX2luZm8oKQotewotICAgIHJldHVybiByZXRyaWV2ZV9wYXJhbWV0ZXIoIEJVSUxEX0lORk8sIHNfY2xhX3BhcnNlciwgZmFsc2UgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotYm9vbAotY2F0Y2hfc3lzX2Vycm9ycygpCi17Ci0gICAgcmV0dXJuIHJldHJpZXZlX3BhcmFtZXRlciggQ0FUQ0hfU1lTX0VSUk9SUywgc19jbGFfcGFyc2VyLCAKLSNpZmRlZiBORE5CT09TVF9URVNUX0RFRkFVTFRTX1RPX0NPUkVfRFVNUAotICAgICAgICBmYWxzZQotI2Vsc2UKLSAgICAgICAgdHJ1ZSAKLSNlbmRpZgotICAgICAgICApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ib29sCi1hdXRvX3N0YXJ0X2RiZygpCi17Ci0gICAgLy8gISEgc2V0IGRlYnVnZ2VyIGFzIGFuIG9wdGlvbgotICAgIHJldHVybiByZXRyaWV2ZV9wYXJhbWV0ZXIoIEFVVE9fU1RBUlRfREJHLCBzX2NsYV9wYXJzZXIsIGZhbHNlICk7Ci07Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWJvb2wKLXVzZV9hbHRfc3RhY2soKQotewotICAgIHJldHVybiByZXRyaWV2ZV9wYXJhbWV0ZXIoIFVTRV9BTFRfU1RBQ0ssIHNfY2xhX3BhcnNlciwgdHJ1ZSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ib29sCi1kZXRlY3RfZnBfZXhjZXB0aW9ucygpCi17Ci0gICAgcmV0dXJuIHJldHJpZXZlX3BhcmFtZXRlciggREVURUNUX0ZQX0VYQ0VQVCwgc19jbGFfcGFyc2VyLCBmYWxzZSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1vdXRwdXRfZm9ybWF0Ci1yZXBvcnRfZm9ybWF0KCkKLXsKLSAgICByZXR1cm4gc19yZXBvcnRfZm9ybWF0OwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1vdXRwdXRfZm9ybWF0Ci1sb2dfZm9ybWF0KCkKLXsKLSAgICByZXR1cm4gc19sb2dfZm9ybWF0OwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zdGQ6Om9zdHJlYW0qCi1yZXBvcnRfc2luaygpCi17Ci0gICAgc3RkOjpzdHJpbmcgc2lua19uYW1lID0gcmV0cmlldmVfcGFyYW1ldGVyKCBSRVBPUlRfU0lOSywgc19jbGFfcGFyc2VyLCBzX2VtcHR5ICk7Ci0KLSAgICBpZiggc2lua19uYW1lLmVtcHR5KCkgfHwgc2lua19uYW1lID09ICJzdGRlcnIiICkKLSAgICAgICAgcmV0dXJuICZzdGQ6OmNlcnI7ICAgIAotICAgIAotICAgIGlmKCBzaW5rX25hbWUgPT0gInN0ZG91dCIgKQotICAgICAgICByZXR1cm4gJnN0ZDo6Y291dDsKLQotICAgIHN0YXRpYyBzdGQ6Om9mc3RyZWFtIGxvZ19maWxlKCBzaW5rX25hbWUuY19zdHIoKSApOwotICAgIHJldHVybiAmbG9nX2ZpbGU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXN0ZDo6b3N0cmVhbSoKLWxvZ19zaW5rKCkKLXsKLSAgICBzdGQ6OnN0cmluZyBzaW5rX25hbWUgPSByZXRyaWV2ZV9wYXJhbWV0ZXIoIExPR19TSU5LLCBzX2NsYV9wYXJzZXIsIHNfZW1wdHkgKTsKLQotICAgIGlmKCBzaW5rX25hbWUuZW1wdHkoKSB8fCBzaW5rX25hbWUgPT0gInN0ZG91dCIgKQotICAgICAgICByZXR1cm4gJnN0ZDo6Y291dDsgICAgCi0KLSAgICBpZiggc2lua19uYW1lID09ICJzdGRlcnIiICkKLSAgICAgICAgcmV0dXJuICZzdGQ6OmNlcnI7ICAgIAotCi0gICAgc3RhdGljIHN0ZDo6b2ZzdHJlYW0gcmVwb3J0X2ZpbGUoIHNpbmtfbmFtZS5jX3N0cigpICk7Ci0gICAgcmV0dXJuICZyZXBvcnRfZmlsZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbG9uZwotZGV0ZWN0X21lbW9yeV9sZWFrcygpCi17Ci0gICAgcmV0dXJuIHJldHJpZXZlX3BhcmFtZXRlciggREVURUNUX01FTV9MRUFLUywgc19jbGFfcGFyc2VyLCBzdGF0aWNfY2FzdDxsb25nPigxKSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1pbnQKLXJhbmRvbV9zZWVkKCkKLXsKLSAgICByZXR1cm4gcmV0cmlldmVfcGFyYW1ldGVyKCBSQU5ET01fU0VFRCwgc19jbGFfcGFyc2VyLCAwLCAxICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHJ1bnRpbWVfY29uZmlnCi0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX1BBUkFNRVRFUlNfSVBQXzAxMjIwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvdW5pdF90ZXN0X3N1aXRlLmlwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3VuaXRfdGVzdF9zdWl0ZS5pcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlYTM5NmUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvdW5pdF90ZXN0X3N1aXRlLmlwcAorKysgL2Rldi9udWxsCkBAIC0xLDM0NiArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogcHJpdmlkZXMgY29yZSBpbXBsZW1lbnRhdGlvbiBmb3IgVW5pdCBUZXN0IEZyYW1ld29yay4KLS8vICAgICAgICAgICAgICAgIEV4dGVuc2lvbnMgY2FuIGJlIHByb3ZpZGVkIGluIHNlcGFyYXRlIGZpbGVzCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9TVUlURV9JUFBfMDEyMjA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX1NVSVRFX0lQUF8wMTIyMDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9zdWl0ZV9pbXBsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2ZyYW1ld29yay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9mb3JlYWNoLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3Jlc3VsdHNfY29sbGVjdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC91bml0X3Rlc3RfcGFyYW1ldGVycy5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGltZXIuaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg2MDApICYmIFwKLSAgICBORE5CT09TVF9XT1JLQVJPVU5EKF9TVExQT1JUX1ZFUlNJT04sIDw9IDB4NDUwKSBcCi0gICAgLyoqLwotICAgIHVzaW5nIHN0ZDo6cmFuZDsgLy8gcmFuZCBpcyBpbiBzdGQgYW5kIHJhbmRvbV9zaHVmZmxlIGlzIGluIF9TVEwKLSNlbmRpZgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgIHRlc3RfdW5pdCAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZXN0X3VuaXQ6OnRlc3RfdW5pdCggY29uc3Rfc3RyaW5nIG5hbWUsIHRlc3RfdW5pdF90eXBlIHQgKQotOiBwX3R5cGUoIHQgKQotLCBwX3R5cGVfbmFtZSggdCA9PSB0dXRfY2FzZSA/ICJjYXNlIiA6ICJzdWl0ZSIgKQotLCBwX2lkKCBJTlZfVEVTVF9VTklUX0lEICkKLSwgcF9uYW1lKCBzdGQ6OnN0cmluZyggbmFtZS5iZWdpbigpLCBuYW1lLnNpemUoKSApICkKLSwgcF9lbmFibGVkKCB0cnVlICkKLXsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVzdF91bml0Ojp+dGVzdF91bml0KCkKLXsKLSAgICBmcmFtZXdvcms6OmRlcmVnaXN0ZXJfdGVzdF91bml0KCB0aGlzICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXRlc3RfdW5pdDo6ZGVwZW5kc19vbiggdGVzdF91bml0KiB0dSApCi17Ci0gICAgbV9kZXBlbmRlbmNpZXMucHVzaF9iYWNrKCB0dS0+cF9pZCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ib29sCi10ZXN0X3VuaXQ6OmNoZWNrX2RlcGVuZGVuY2llcygpIGNvbnN0Ci17Ci0gICAgTkROQk9PU1RfVEVTVF9GT1JFQUNIKCB0ZXN0X3VuaXRfaWQsIHR1X2lkLCBtX2RlcGVuZGVuY2llcyApIHsKLSAgICAgICAgaWYoICF1bml0X3Rlc3Q6OnJlc3VsdHNfY29sbGVjdG9yLnJlc3VsdHMoIHR1X2lkICkucGFzc2VkKCkgKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi10ZXN0X3VuaXQ6OmluY3JlYXNlX2V4cF9mYWlsKCB1bnNpZ25lZCBudW0gKQotewotICAgIHBfZXhwZWN0ZWRfZmFpbHVyZXMudmFsdWUgKz0gbnVtOwotCi0gICAgaWYoIHBfcGFyZW50X2lkICE9IDAgKQotICAgICAgICBmcmFtZXdvcms6OmdldDx0ZXN0X3N1aXRlPiggcF9wYXJlbnRfaWQgKS5pbmNyZWFzZV9leHBfZmFpbCggbnVtICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgICB0ZXN0X2Nhc2UgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVzdF9jYXNlOjp0ZXN0X2Nhc2UoIGNvbnN0X3N0cmluZyBuYW1lLCBjYWxsYmFjazA8PiBjb25zdCYgdGVzdF9mdW5jICkKLTogdGVzdF91bml0KCBuYW1lLCBzdGF0aWNfY2FzdDx0ZXN0X3VuaXRfdHlwZT4odHlwZSkgKQotLCBtX3Rlc3RfZnVuYyggdGVzdF9mdW5jICkKLXsKLSAgICAgLy8gISEgd2VpcmRlc3QgTVNWQyBCVUc7IHRyeSB0byByZW1vdmUgdGhpcyBzdGF0ZW1lbnQ7IGxvb2tzIGxpa2UgaXQgZWF0cyBmaXJzdCB0b2tlbiBvZiBuZXh0IHN0YXRlbWVudCAgIAotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQyw8MTMwMCkgICAKLSAgICAgMDsgICAKLSNlbmRpZiAKLSAgICBmcmFtZXdvcms6OnJlZ2lzdGVyX3Rlc3RfdW5pdCggdGhpcyApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICB0ZXN0X3N1aXRlICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlc3Rfc3VpdGU6OnRlc3Rfc3VpdGUoIGNvbnN0X3N0cmluZyBuYW1lICkKLTogdGVzdF91bml0KCBuYW1lLCBzdGF0aWNfY2FzdDx0ZXN0X3VuaXRfdHlwZT4odHlwZSkgKQotewotICAgIGZyYW1ld29yazo6cmVnaXN0ZXJfdGVzdF91bml0KCB0aGlzICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXRlc3Rfc3VpdGU6OmFkZCggdGVzdF91bml0KiB0dSwgY291bnRlcl90IGV4cGVjdGVkX2ZhaWx1cmVzLCB1bnNpZ25lZCB0aW1lb3V0ICkKLXsKLSAgICBpZiggdGltZW91dCAhPSAwICkKLSAgICAgICAgdHUtPnBfdGltZW91dC52YWx1ZSA9IHRpbWVvdXQ7Ci0KLSAgICBtX21lbWJlcnMucHVzaF9iYWNrKCB0dS0+cF9pZCApOwotICAgIHR1LT5wX3BhcmVudF9pZC52YWx1ZSA9IHBfaWQ7Ci0KLSAgICBpZiggdHUtPnBfZXhwZWN0ZWRfZmFpbHVyZXMgKQotICAgICAgICBpbmNyZWFzZV9leHBfZmFpbCggdHUtPnBfZXhwZWN0ZWRfZmFpbHVyZXMgKTsKLQotICAgIGlmKCBleHBlY3RlZF9mYWlsdXJlcyApCi0gICAgICAgIHR1LT5pbmNyZWFzZV9leHBfZmFpbCggZXhwZWN0ZWRfZmFpbHVyZXMgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotdGVzdF9zdWl0ZTo6YWRkKCB0ZXN0X3VuaXRfZ2VuZXJhdG9yIGNvbnN0JiBnZW4sIHVuc2lnbmVkIHRpbWVvdXQgKQotewotICAgIHRlc3RfdW5pdCogdHU7Ci0gICAgd2hpbGUoKHR1ID0gZ2VuLm5leHQoKSwgdHUpKQotICAgICAgICBhZGQoIHR1LCAwLCB0aW1lb3V0ICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXRlc3Rfc3VpdGU6OnJlbW92ZSggdGVzdF91bml0X2lkIGlkICkKLXsKLSAgICBzdGQ6OnZlY3Rvcjx0ZXN0X3VuaXRfaWQ+OjppdGVyYXRvciBpdCA9IHN0ZDo6ZmluZCggbV9tZW1iZXJzLmJlZ2luKCksIG1fbWVtYmVycy5lbmQoKSwgaWQgKTsKLQotICAgIGlmKCBpdCAhPSBtX21lbWJlcnMuZW5kKCkgKQotICAgICAgICBtX21lbWJlcnMuZXJhc2UoIGl0ICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlc3RfdW5pdF9pZAotdGVzdF9zdWl0ZTo6Z2V0KCBjb25zdF9zdHJpbmcgdHVfbmFtZSApIGNvbnN0Ci17Ci0gICAgTkROQk9PU1RfVEVTVF9GT1JFQUNIKCB0ZXN0X3VuaXRfaWQsIGlkLCBtX21lbWJlcnMgKSB7Ci0gICAgICAgIGlmKCB0dV9uYW1lID09IGZyYW1ld29yazo6Z2V0KCBpZCwgdXRfZGV0YWlsOjp0ZXN0X2lkXzJfdW5pdF90eXBlKCBpZCApICkucF9uYW1lLmdldCgpICkKLSAgICAgICAgICAgIHJldHVybiBpZDsKLSAgICB9Ci0KLSAgICByZXR1cm4gSU5WX1RFU1RfVU5JVF9JRDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgdHJhdmVyc2VfdGVzdF90cmVlICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi12b2lkCi10cmF2ZXJzZV90ZXN0X3RyZWUoIHRlc3RfY2FzZSBjb25zdCYgdGMsIHRlc3RfdHJlZV92aXNpdG9yJiBWICkKLXsKLSAgICBpZiggdGMucF9lbmFibGVkICkKLSAgICBWLnZpc2l0KCB0YyApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi10cmF2ZXJzZV90ZXN0X3RyZWUoIHRlc3Rfc3VpdGUgY29uc3QmIHN1aXRlLCB0ZXN0X3RyZWVfdmlzaXRvciYgViApCi17Ci0gICAgaWYoICFzdWl0ZS5wX2VuYWJsZWQgfHwgIVYudGVzdF9zdWl0ZV9zdGFydCggc3VpdGUgKSApCi0gICAgICAgIHJldHVybjsKLQotICAgIHRyeSB7Ci0gICAgICAgIGlmKCBydW50aW1lX2NvbmZpZzo6cmFuZG9tX3NlZWQoKSA9PSAwICkgewotICAgICAgICAgICAgTkROQk9PU1RfVEVTVF9GT1JFQUNIKCB0ZXN0X3VuaXRfaWQsIGlkLCBzdWl0ZS5tX21lbWJlcnMgKQotICAgICAgICAgICAgICAgIHRyYXZlcnNlX3Rlc3RfdHJlZSggaWQsIFYgKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHN0ZDo6dmVjdG9yPHRlc3RfdW5pdF9pZD4gbWVtYmVycyggc3VpdGUubV9tZW1iZXJzICk7Ci0gICAgICAgICAgICBzdGQ6OnJhbmRvbV9zaHVmZmxlKCBtZW1iZXJzLmJlZ2luKCksIG1lbWJlcnMuZW5kKCkgKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1RFU1RfRk9SRUFDSCggdGVzdF91bml0X2lkLCBpZCwgbWVtYmVycyApCi0gICAgICAgICAgICAgICAgdHJhdmVyc2VfdGVzdF90cmVlKCBpZCwgViApOwotICAgICAgICB9Ci0gICAgICAgIAotICAgIH0gY2F0Y2goIHRlc3RfYmVpbmdfYWJvcnRlZCBjb25zdCYgKSB7Ci0gICAgICAgIFYudGVzdF9zdWl0ZV9maW5pc2goIHN1aXRlICk7Ci0gICAgICAgIGZyYW1ld29yazo6dGVzdF91bml0X2Fib3J0ZWQoIHN1aXRlICk7Ci0KLSAgICAgICAgdGhyb3c7Ci0gICAgfQotCi0gICAgVi50ZXN0X3N1aXRlX2ZpbmlzaCggc3VpdGUgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotdHJhdmVyc2VfdGVzdF90cmVlKCB0ZXN0X3VuaXRfaWQgaWQsIHRlc3RfdHJlZV92aXNpdG9yJiBWICkKLXsKLSAgICBpZiggdXRfZGV0YWlsOjp0ZXN0X2lkXzJfdW5pdF90eXBlKCBpZCApID09IHR1dF9jYXNlICkKLSAgICAgICAgdHJhdmVyc2VfdGVzdF90cmVlKCBmcmFtZXdvcms6OmdldDx0ZXN0X2Nhc2U+KCBpZCApLCBWICk7Ci0gICAgZWxzZQotICAgICAgICB0cmF2ZXJzZV90ZXN0X3RyZWUoIGZyYW1ld29yazo6Z2V0PHRlc3Rfc3VpdGU+KCBpZCApLCBWICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICB0ZXN0X2Nhc2VfY291bnRlciAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdm9pZAotdGVzdF9jYXNlX2NvdW50ZXI6OnZpc2l0KCB0ZXN0X2Nhc2UgY29uc3QmIHRjICkKLXsKLSAgICBpZiggdGMucF9lbmFibGVkICkKLSAgICAgICAgKytwX2NvdW50LnZhbHVlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICBvYmplY3QgZ2VuZXJhdG9ycyAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSB1dF9kZXRhaWwgewotCi1zdGQ6OnN0cmluZwotbm9ybWFsaXplX3Rlc3RfY2FzZV9uYW1lKCBjb25zdF9zdHJpbmcgbmFtZSApCi17Ci0gICAgcmV0dXJuICggbmFtZVswXSA9PSAnJicKLSAgICAgICAgICAgICAgICA/IHN0ZDo6c3RyaW5nKCBuYW1lLmJlZ2luKCkrMSwgbmFtZS5zaXplKCktMSApCi0gICAgICAgICAgICAgICAgOiBzdGQ6OnN0cmluZyggbmFtZS5iZWdpbigpLCBuYW1lLnNpemUoKSApICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgYXV0b190ZXN0X3VuaXRfcmVnaXN0cmFyICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotYXV0b190ZXN0X3VuaXRfcmVnaXN0cmFyOjphdXRvX3Rlc3RfdW5pdF9yZWdpc3RyYXIoIHRlc3RfY2FzZSogdGMsIGNvdW50ZXJfdCBleHBfZmFpbCApCi17Ci0gICAgY3Vycl90c19zdG9yZSgpLmJhY2soKS0+YWRkKCB0YywgZXhwX2ZhaWwgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotYXV0b190ZXN0X3VuaXRfcmVnaXN0cmFyOjphdXRvX3Rlc3RfdW5pdF9yZWdpc3RyYXIoIGNvbnN0X3N0cmluZyB0c19uYW1lICkKLXsKLSAgICB0ZXN0X3VuaXRfaWQgaWQgPSBjdXJyX3RzX3N0b3JlKCkuYmFjaygpLT5nZXQoIHRzX25hbWUgKTsKLQotICAgIHRlc3Rfc3VpdGUqIHRzOwotCi0gICAgaWYoIGlkICE9IElOVl9URVNUX1VOSVRfSUQgKSB7Ci0gICAgICAgIHRzID0gJmZyYW1ld29yazo6Z2V0PHRlc3Rfc3VpdGU+KCBpZCApOyAvLyAhISB0ZXN0IGZvciBpbnZhbGlkIHR1IHR5cGUKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKCB0cy0+cF9wYXJlbnRfaWQgPT0gY3Vycl90c19zdG9yZSgpLmJhY2soKS0+cF9pZCApOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgdHMgPSBuZXcgdGVzdF9zdWl0ZSggdHNfbmFtZSApOwotICAgICAgICBjdXJyX3RzX3N0b3JlKCkuYmFjaygpLT5hZGQoIHRzICk7Ci0gICAgfQotCi0gICAgY3Vycl90c19zdG9yZSgpLnB1c2hfYmFjayggdHMgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotYXV0b190ZXN0X3VuaXRfcmVnaXN0cmFyOjphdXRvX3Rlc3RfdW5pdF9yZWdpc3RyYXIoIHRlc3RfdW5pdF9nZW5lcmF0b3IgY29uc3QmIHRjX2dlbiApCi17Ci0gICAgY3Vycl90c19zdG9yZSgpLmJhY2soKS0+YWRkKCB0Y19nZW4gKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotYXV0b190ZXN0X3VuaXRfcmVnaXN0cmFyOjphdXRvX3Rlc3RfdW5pdF9yZWdpc3RyYXIoIGludCApCi17Ci0gICAgaWYoIGN1cnJfdHNfc3RvcmUoKS5zaXplKCkgPT0gMCApCi0gICAgICAgIHJldHVybjsgLy8gcmVwb3J0IGVycm9yPwotCi0gICAgY3Vycl90c19zdG9yZSgpLnBvcF9iYWNrKCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXN0ZDo6bGlzdDx0ZXN0X3N1aXRlKj4mCi1hdXRvX3Rlc3RfdW5pdF9yZWdpc3RyYXI6OmN1cnJfdHNfc3RvcmUoKQotewotICAgIHN0YXRpYyBzdGQ6Omxpc3Q8dGVzdF9zdWl0ZSo+IGluc3QoIDEsICZmcmFtZXdvcms6Om1hc3Rlcl90ZXN0X3N1aXRlKCkgKTsKLSAgICByZXR1cm4gaW5zdDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgdXRfZGV0YWlsCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICBnbG9iYWxfZml4dHVyZSAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotZ2xvYmFsX2ZpeHR1cmU6Omdsb2JhbF9maXh0dXJlKCkKLXsKLSAgICBmcmFtZXdvcms6OnJlZ2lzdGVyX29ic2VydmVyKCAqdGhpcyApOwotfSAKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfU1VJVEVfSVBQXzAxMjIwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwveG1sX2xvZ19mb3JtYXR0ZXIuaXBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwveG1sX2xvZ19mb3JtYXR0ZXIuaXBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTMyMWMzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3htbF9sb2dfZm9ybWF0dGVyLmlwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4MCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTc5OTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGltcGxlbWVudHMgWE1MIExvZyBmb3JtYXR0ZXIKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfWE1MX0xPR19GT1JNQVRURVJfSVBQXzAyMDEwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1hNTF9MT0dfRk9STUFUVEVSX0lQUF8wMjAxMDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3Qvb3V0cHV0L3htbF9sb2dfZm9ybWF0dGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9zdWl0ZV9pbXBsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2ZyYW1ld29yay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2lvLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMveG1sX3ByaW50ZXIuaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxpb3N0cmVhbT4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLW5hbWVzcGFjZSBvdXRwdXQgewotCi1zdGF0aWMgY29uc3Rfc3RyaW5nIHR1X3R5cGVfbmFtZSggdGVzdF91bml0IGNvbnN0JiB0dSApCi17Ci0gICAgcmV0dXJuIHR1LnBfdHlwZSA9PSB0dXRfY2FzZSA/ICJUZXN0Q2FzZSIgOiAiVGVzdFN1aXRlIjsKLX0KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgeG1sX2xvZ19mb3JtYXR0ZXIgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi12b2lkCi14bWxfbG9nX2Zvcm1hdHRlcjo6bG9nX3N0YXJ0KCBzdGQ6Om9zdHJlYW0mIG9zdHIsIGNvdW50ZXJfdCApCi17Ci0gICAgb3N0ciAgPDwgIjxUZXN0TG9nPiI7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXhtbF9sb2dfZm9ybWF0dGVyOjpsb2dfZmluaXNoKCBzdGQ6Om9zdHJlYW0mIG9zdHIgKQotewotICAgIG9zdHIgIDw8ICI8L1Rlc3RMb2c+IjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAoteG1sX2xvZ19mb3JtYXR0ZXI6OmxvZ19idWlsZF9pbmZvKCBzdGQ6Om9zdHJlYW0mIG9zdHIgKQotewotICAgIG9zdHIgIDw8ICI8QnVpbGRJbmZvIgotICAgICAgICAgICAgPDwgIiBwbGF0Zm9ybSIgIDw8IGF0dHJfdmFsdWUoKSA8PCBORE5CT09TVF9QTEFURk9STQotICAgICAgICAgICAgPDwgIiBjb21waWxlciIgIDw8IGF0dHJfdmFsdWUoKSA8PCBORE5CT09TVF9DT01QSUxFUgotICAgICAgICAgICAgPDwgIiBzdGwiICAgICAgIDw8IGF0dHJfdmFsdWUoKSA8PCBORE5CT09TVF9TVERMSUIKLSAgICAgICAgICAgIDw8ICIgYm9vc3Q9XCIiICA8PCBORE5CT09TVF9WRVJTSU9OLzEwMDAwMCAgICAgPDwgIi4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgTkROQk9PU1RfVkVSU0lPTi8xMDAgJSAxMDAwIDw8ICIuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IE5ETkJPT1NUX1ZFUlNJT04gJSAxMDAgICAgICA8PCAnXCInCi0gICAgICAgICAgICA8PCAiLz4iOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi14bWxfbG9nX2Zvcm1hdHRlcjo6dGVzdF91bml0X3N0YXJ0KCBzdGQ6Om9zdHJlYW0mIG9zdHIsIHRlc3RfdW5pdCBjb25zdCYgdHUgKQotewotICAgIG9zdHIgPDwgIjwiIDw8IHR1X3R5cGVfbmFtZSggdHUgKSA8PCAiIG5hbWUiIDw8IGF0dHJfdmFsdWUoKSA8PCB0dS5wX25hbWUuZ2V0KCkgPDwgIj4iOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi14bWxfbG9nX2Zvcm1hdHRlcjo6dGVzdF91bml0X2ZpbmlzaCggc3RkOjpvc3RyZWFtJiBvc3RyLCB0ZXN0X3VuaXQgY29uc3QmIHR1LCB1bnNpZ25lZCBsb25nIGVsYXBzZWQgKQotewotICAgIGlmKCB0dS5wX3R5cGUgPT0gdHV0X2Nhc2UgKQotICAgICAgICBvc3RyIDw8ICI8VGVzdGluZ1RpbWU+IiA8PCBlbGFwc2VkIDw8ICI8L1Rlc3RpbmdUaW1lPiI7Ci0gICAgICAgIAotICAgIG9zdHIgPDwgIjwvIiA8PCB0dV90eXBlX25hbWUoIHR1ICkgPDwgIj4iOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi14bWxfbG9nX2Zvcm1hdHRlcjo6dGVzdF91bml0X3NraXBwZWQoIHN0ZDo6b3N0cmVhbSYgb3N0ciwgdGVzdF91bml0IGNvbnN0JiB0dSApCi17Ci0gICAgb3N0ciA8PCAiPCIgPDwgdHVfdHlwZV9uYW1lKCB0dSApCi0gICAgICAgICA8PCAiIG5hbWUiICAgIDw8IGF0dHJfdmFsdWUoKSA8PCB0dS5wX25hbWUuZ2V0KCkKLSAgICAgICAgIDw8ICIgc2tpcHBlZCIgPDwgYXR0cl92YWx1ZSgpIDw8ICJ5ZXMiCi0gICAgICAgICA8PCAiLz4iOwotfQotICAgIAotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAoteG1sX2xvZ19mb3JtYXR0ZXI6OmxvZ19leGNlcHRpb24oIHN0ZDo6b3N0cmVhbSYgb3N0ciwgbG9nX2NoZWNrcG9pbnRfZGF0YSBjb25zdCYgY2hlY2twb2ludF9kYXRhLCBleGVjdXRpb25fZXhjZXB0aW9uIGNvbnN0JiBleCApCi17Ci0gICAgZXhlY3V0aW9uX2V4Y2VwdGlvbjo6bG9jYXRpb24gY29uc3QmIGxvYyA9IGV4LndoZXJlKCk7Ci0KLSAgICBvc3RyIDw8ICI8RXhjZXB0aW9uIGZpbGUiIDw8IGF0dHJfdmFsdWUoKSA8PCBsb2MubV9maWxlX25hbWUKLSAgICAgICAgIDw8ICIgbGluZSIgICAgICAgICAgIDw8IGF0dHJfdmFsdWUoKSA8PCBsb2MubV9saW5lX251bTsKLQotICAgIGlmKCAhbG9jLm1fZnVuY3Rpb24uaXNfZW1wdHkoKSApCi0gICAgICAgIG9zdHIgPDwgIiBmdW5jdGlvbiIgICA8PCBhdHRyX3ZhbHVlKCkgPDwgbG9jLm1fZnVuY3Rpb247Ci0KLSAgICBvc3RyIDw8ICI+IiA8PCBjZGF0YSgpIDw8IGV4LndoYXQoKTsKLQotICAgIGlmKCAhY2hlY2twb2ludF9kYXRhLm1fZmlsZV9uYW1lLmlzX2VtcHR5KCkgKSB7Ci0gICAgICAgIG9zdHIgPDwgIjxMYXN0Q2hlY2twb2ludCBmaWxlIiA8PCBhdHRyX3ZhbHVlKCkgPDwgY2hlY2twb2ludF9kYXRhLm1fZmlsZV9uYW1lCi0gICAgICAgICAgICAgPDwgIiBsaW5lIiAgICAgICAgICAgICAgICA8PCBhdHRyX3ZhbHVlKCkgPDwgY2hlY2twb2ludF9kYXRhLm1fbGluZV9udW0KLSAgICAgICAgICAgICA8PCAiPiIKLSAgICAgICAgICAgICA8PCBjZGF0YSgpIDw8IGNoZWNrcG9pbnRfZGF0YS5tX21lc3NhZ2UKLSAgICAgICAgICAgICA8PCAiPC9MYXN0Q2hlY2twb2ludD4iOwotICAgIH0KLQotICAgIG9zdHIgPDwgIjwvRXhjZXB0aW9uPiI7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXhtbF9sb2dfZm9ybWF0dGVyOjpsb2dfZW50cnlfc3RhcnQoIHN0ZDo6b3N0cmVhbSYgb3N0ciwgbG9nX2VudHJ5X2RhdGEgY29uc3QmIGVudHJ5X2RhdGEsIGxvZ19lbnRyeV90eXBlcyBsZXQgKQotewotICAgIHN0YXRpYyBsaXRlcmFsX3N0cmluZyB4bWxfdGFnc1tdID0geyAiSW5mbyIsICJNZXNzYWdlIiwgIldhcm5pbmciLCAiRXJyb3IiLCAiRmF0YWxFcnJvciIgfTsKLQotICAgIG1fY3Vycl90YWcgPSB4bWxfdGFnc1tsZXRdOwotICAgIG9zdHIgPDwgJzwnIDw8IG1fY3Vycl90YWcKLSAgICAgICAgIDw8IE5ETkJPT1NUX1RFU1RfTCggIiBmaWxlIiApIDw8IGF0dHJfdmFsdWUoKSA8PCBlbnRyeV9kYXRhLm1fZmlsZV9uYW1lCi0gICAgICAgICA8PCBORE5CT09TVF9URVNUX0woICIgbGluZSIgKSA8PCBhdHRyX3ZhbHVlKCkgPDwgZW50cnlfZGF0YS5tX2xpbmVfbnVtCi0gICAgICAgICA8PCBORE5CT09TVF9URVNUX0woICI+PCFbQ0RBVEFbIiApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi14bWxfbG9nX2Zvcm1hdHRlcjo6bG9nX2VudHJ5X3ZhbHVlKCBzdGQ6Om9zdHJlYW0mIG9zdHIsIGNvbnN0X3N0cmluZyB2YWx1ZSApCi17Ci0gICAgb3N0ciA8PCB2YWx1ZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAoteG1sX2xvZ19mb3JtYXR0ZXI6OmxvZ19lbnRyeV9maW5pc2goIHN0ZDo6b3N0cmVhbSYgb3N0ciApCi17Ci0gICAgb3N0ciA8PCBORE5CT09TVF9URVNUX0woICJdXT48LyIgKSA8PCBtX2N1cnJfdGFnIDw8IE5ETkJPT1NUX1RFU1RfTCggIj4iICk7Ci0KLSAgICBtX2N1cnJfdGFnLmNsZWFyKCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIG91dHB1dAotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1hNTF9MT0dfRk9STUFUVEVSX0lQUF8wMjAxMDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3htbF9yZXBvcnRfZm9ybWF0dGVyLmlwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3htbF9yZXBvcnRfZm9ybWF0dGVyLmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDJiMjhhNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC94bWxfcmVwb3J0X2Zvcm1hdHRlci5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTUgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBYTUwgcmVwb3J0IGZvcm1hdHRlcgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9YTUxfUkVQT1JUX0ZPUk1BVFRFUl9JUFBfMDIwMTA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfWE1MX1JFUE9SVF9GT1JNQVRURVJfSVBQXzAyMDEwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9yZXN1bHRzX2NvbGxlY3Rvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91bml0X3Rlc3Rfc3VpdGVfaW1wbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9vdXRwdXQveG1sX3JlcG9ydF9mb3JtYXR0ZXIuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy94bWxfcHJpbnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2lvLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLW5hbWVzcGFjZSBvdXRwdXQgewotCi12b2lkCi14bWxfcmVwb3J0X2Zvcm1hdHRlcjo6cmVzdWx0c19yZXBvcnRfc3RhcnQoIHN0ZDo6b3N0cmVhbSYgb3N0ciApCi17Ci0gICAgb3N0ciA8PCAiPFRlc3RSZXN1bHQ+IjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAoteG1sX3JlcG9ydF9mb3JtYXR0ZXI6OnJlc3VsdHNfcmVwb3J0X2ZpbmlzaCggc3RkOjpvc3RyZWFtJiBvc3RyICkKLXsKLSAgICBvc3RyIDw8ICI8L1Rlc3RSZXN1bHQ+IjsKLX0KLQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi14bWxfcmVwb3J0X2Zvcm1hdHRlcjo6dGVzdF91bml0X3JlcG9ydF9zdGFydCggdGVzdF91bml0IGNvbnN0JiB0dSwgc3RkOjpvc3RyZWFtJiBvc3RyICkKLXsKLSAgICB0ZXN0X3Jlc3VsdHMgY29uc3QmIHRyID0gcmVzdWx0c19jb2xsZWN0b3IucmVzdWx0cyggdHUucF9pZCApOwotCi0gICAgY29uc3Rfc3RyaW5nIGRlc2NyOwotCi0gICAgaWYoIHRyLnBhc3NlZCgpICkKLSAgICAgICAgZGVzY3IgPSAicGFzc2VkIjsKLSAgICBlbHNlIGlmKCB0ci5wX3NraXBwZWQgKQotICAgICAgICBkZXNjciA9ICJza2lwcGVkIjsKLSAgICBlbHNlIGlmKCB0ci5wX2Fib3J0ZWQgKQotICAgICAgICBkZXNjciA9ICJhYm9ydGVkIjsKLSAgICBlbHNlCi0gICAgICAgIGRlc2NyID0gImZhaWxlZCI7Ci0KLSAgICBvc3RyIDw8ICc8JyA8PCAoIHR1LnBfdHlwZSA9PSB0dXRfY2FzZSA/ICJUZXN0Q2FzZSIgOiAiVGVzdFN1aXRlIiApIAotICAgICAgICAgPDwgIiBuYW1lIiAgICAgPDwgYXR0cl92YWx1ZSgpIDw8IHR1LnBfbmFtZS5nZXQoKQotICAgICAgICAgPDwgIiByZXN1bHQiICAgPDwgYXR0cl92YWx1ZSgpIDw8IGRlc2NyCi0gICAgICAgICA8PCAiIGFzc2VydGlvbnNfcGFzc2VkIiAgICAgICAgPDwgYXR0cl92YWx1ZSgpIDw8IHRyLnBfYXNzZXJ0aW9uc19wYXNzZWQKLSAgICAgICAgIDw8ICIgYXNzZXJ0aW9uc19mYWlsZWQiICAgICAgICA8PCBhdHRyX3ZhbHVlKCkgPDwgdHIucF9hc3NlcnRpb25zX2ZhaWxlZAotICAgICAgICAgPDwgIiBleHBlY3RlZF9mYWlsdXJlcyIgICAgICAgIDw8IGF0dHJfdmFsdWUoKSA8PCB0ci5wX2V4cGVjdGVkX2ZhaWx1cmVzOwotCi0gICAgaWYoIHR1LnBfdHlwZSA9PSB0dXRfc3VpdGUgKQotICAgICAgICBvc3RyIDw8ICIgdGVzdF9jYXNlc19wYXNzZWQiICAgIDw8IGF0dHJfdmFsdWUoKSA8PCB0ci5wX3Rlc3RfY2FzZXNfcGFzc2VkCi0gICAgICAgICAgICAgPDwgIiB0ZXN0X2Nhc2VzX2ZhaWxlZCIgICAgPDwgYXR0cl92YWx1ZSgpIDw8IHRyLnBfdGVzdF9jYXNlc19mYWlsZWQKLSAgICAgICAgICAgICA8PCAiIHRlc3RfY2FzZXNfc2tpcHBlZCIgICA8PCBhdHRyX3ZhbHVlKCkgPDwgdHIucF90ZXN0X2Nhc2VzX3NraXBwZWQKLSAgICAgICAgICAgICA8PCAiIHRlc3RfY2FzZXNfYWJvcnRlZCIgICA8PCBhdHRyX3ZhbHVlKCkgPDwgdHIucF90ZXN0X2Nhc2VzX2Fib3J0ZWQ7Ci0gICAgICAgICAgICAgCi0gICAgCi0gICAgb3N0ciA8PCAnPic7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXhtbF9yZXBvcnRfZm9ybWF0dGVyOjp0ZXN0X3VuaXRfcmVwb3J0X2ZpbmlzaCggdGVzdF91bml0IGNvbnN0JiB0dSwgc3RkOjpvc3RyZWFtJiBvc3RyICkKLXsKLSAgICBvc3RyIDw8ICI8LyIgPDwgKCB0dS5wX3R5cGUgPT0gdHV0X2Nhc2UgPyAiVGVzdENhc2UiIDogIlRlc3RTdWl0ZSIgKSA8PCAnPic7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXhtbF9yZXBvcnRfZm9ybWF0dGVyOjpkb19jb25maXJtYXRpb25fcmVwb3J0KCB0ZXN0X3VuaXQgY29uc3QmIHR1LCBzdGQ6Om9zdHJlYW0mIG9zdHIgKQotewotICAgIHRlc3RfdW5pdF9yZXBvcnRfc3RhcnQoIHR1LCBvc3RyICk7Ci0gICAgdGVzdF91bml0X3JlcG9ydF9maW5pc2goIHR1LCBvc3RyICk7ICAgIAotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBvdXRwdXQKLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9YTUxfUkVQT1JUX0ZPUk1BVFRFUl9JUFBfMDIwMTA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW50ZXJhY3Rpb25fYmFzZWQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ludGVyYWN0aW9uX2Jhc2VkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGYxNThjMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW50ZXJhY3Rpb25fYmFzZWQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjYyICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogRmFjaWxpdGllcyB0byBwZXJmb3JtIGludGVyYWN0aW9uLWJhc2VkIHRlc3RpbmcKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfSU5URVJBQ1RJT05fQkFTRURfSFBQXzExMjEwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX0lOVEVSQUNUSU9OX0JBU0VEX0hQUF8xMTIxMDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZ2xvYmFsX3R5cGVkZWYuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy93cmFwX3N0cmluZ3N0cmVhbS5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbGV4aWNhbF9jYXN0LmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgTkROQk9PU1RfSVRFU1RfRVBPSU5UICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jZGVmaW5lIE5ETkJPT1NUX0lURVNUX0VQT0lOVCggZGVzY3JpcHRpb24gKSBcCi0gICAgOjpuZG5ib29zdDo6aXRlc3Q6Om1hbmFnZXI6Omluc3RhbmNlKCkuZXhjZXB0aW9uX3BvaW50KCBORE5CT09TVF9URVNUX0woX19GSUxFX18pLCBfX0xJTkVfXywgZGVzY3JpcHRpb24gKQotLyoqLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICBORE5CT09TVF9JVEVTVF9EUE9JTlQgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNkZWZpbmUgTkROQk9PU1RfSVRFU1RfRFBPSU5UKCkgXAotICAgIDo6bmRuYm9vc3Q6Oml0ZXN0OjptYW5hZ2VyOjppbnN0YW5jZSgpLmRlY2lzaW9uX3BvaW50KCBORE5CT09TVF9URVNUX0woX19GSUxFX18pLCBfX0xJTkVfXyApCi0vKiovCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICBORE5CT09TVF9JVEVTVF9TQ09QRSAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2RlZmluZSBORE5CT09TVF9JVEVTVF9TQ09QRSggc2NvcGVfbmFtZSApIFwKLSAgICA6Om5kbmJvb3N0OjppdGVzdDo6c2NvcGVfZ3VhcmQgaXRlc3Rfc2NvcGVfZ3VhcmQgIyMgX19MSU5FX18oIE5ETkJPT1NUX1RFU1RfTChfX0ZJTEVfXyksIF9fTElORV9fLCBORE5CT09TVF9TVFJJTkdJWkUoc2NvcGVfbmFtZSkgKQotLyoqLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lURVNUX05FVyAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNkZWZpbmUgTkROQk9PU1RfSVRFU1RfTkVXKCB0eXBlX25hbWUgKSBcCi0gICAgbmV3ICggOjpuZG5ib29zdDo6aXRlc3Q6OmxvY2F0aW9uKCBORE5CT09TVF9URVNUX0woX19GSUxFX18pLCBfX0xJTkVfXyApICkgdHlwZV9uYW1lCi0vKiovCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgTkROQk9PU1RfSVRFU1RfREFUQV9GTE9XICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2RlZmluZSBORE5CT09TVF9JVEVTVF9EQVRBX0ZMT1coIHYgKSBcCi0gICAgOjpuZG5ib29zdDo6aXRlc3Q6Om1hbmFnZXI6Omluc3RhbmNlKCkuZ2VuZXJpY19kYXRhX2Zsb3coIHYgKQotLyoqLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICBORE5CT09TVF9JVEVTVF9SRVRVUk4gICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNkZWZpbmUgTkROQk9PU1RfSVRFU1RfUkVUVVJOKCB0eXBlLCBkZWZhdWx0X3ZhbHVlICkgXAotICAgIDo6bmRuYm9vc3Q6Oml0ZXN0OjptYW5hZ2VyOjppbnN0YW5jZSgpLmdlbmVyaWNfcmV0dXJuPHR5cGU+KCBkZWZhdWx0X3ZhbHVlICkKLS8qKi8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICBORE5CT09TVF9JVEVTVF9NT0NLX0ZVTkMgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jZGVmaW5lIE5ETkJPT1NUX0lURVNUX01PQ0tfRlVOQyggZnVuY3Rpb25fbmFtZSApICAgICAgICAgIFwKLSAgICBORE5CT09TVF9JVEVTVF9TQ09QRSggZnVuY3Rpb25fbmFtZSApOyAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX0lURVNUX0VQT0lOVCggMCApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgcmV0dXJuIDo6bmRuYm9vc3Q6Oml0ZXN0Ojptb2NrX29iamVjdDw+Ojpwcm90b3R5cGUoKTsgIFwKLS8qKi8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGl0ZXN0IHsgLy8gaW50ZXJhY3Rpb24tYmFzZWQgdGVzdGluZwotCi11c2luZyB1bml0X3Rlc3Q6OmNvbnN0X3N0cmluZzsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyICAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBORE5CT09TVF9URVNUX0RFQ0wgbWFuYWdlciB7Ci1wdWJsaWM6Ci0gICAgLy8gaW5zdGFuY2UgYWNjZXNzCi0gICAgc3RhdGljIG1hbmFnZXImICAgICBpbnN0YW5jZSgpIHsgcmV0dXJuICppbnN0YW5jZV9wdHIoKTsgfQotCi0gICAgLy8gTW9jayBvYmplY3RzIGludGVyZmFjZSBob29rcwotICAgIHZpcnR1YWwgdm9pZCAgICAgICAgZXhjZXB0aW9uX3BvaW50KCBjb25zdF9zdHJpbmcgLypmaWxlKi8sIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCAvKmxpbmVfbnVtKi8sIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF9zdHJpbmcgLypkZXNjciovICl7fQotICAgIHZpcnR1YWwgYm9vbCAgICAgICAgZGVjaXNpb25fcG9pbnQoIGNvbnN0X3N0cmluZyAvKmZpbGUqLywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzaXplX3QgLypsaW5lX251bSovICkgICAgICAgICAgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdW5zaWduZWQgICAgZW50ZXJfc2NvcGUoIGNvbnN0X3N0cmluZyAvKmZpbGUqLywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzaXplX3QgLypsaW5lX251bSovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X3N0cmluZyAvKnNjb3BlX25hbWUqLyl7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCB2b2lkICAgICAgICBsZWF2ZV9zY29wZSggdW5zaWduZWQgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAge30KLSAgICB2aXJ0dWFsIHZvaWQgICAgICAgIGFsbG9jYXRlZCggY29uc3Rfc3RyaW5nIC8qZmlsZSovLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzaXplX3QgLypsaW5lX251bSovLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogLypwKi8sIHN0ZDo6c2l6ZV90IC8qcyovICkgICAgICAgICB7fQotICAgIHZpcnR1YWwgdm9pZCAgICAgICAgZnJlZWQoIHZvaWQqIC8qcCovICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt9Ci0gICAgdmlydHVhbCB2b2lkICAgICAgICBkYXRhX2Zsb3coIGNvbnN0X3N0cmluZyAvKmQqLyApICAgICAgICAgICAgICAgICAgICAge30KLSAgICB2aXJ0dWFsIHN0ZDo6c3RyaW5nIHJldHVybl92YWx1ZSggY29uc3Rfc3RyaW5nIC8qZGVmYXVsdF92YWx1ZSAqLyApICAgICB7IHJldHVybiAiIjsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICB2b2lkICAgICAgICAgICAgICAgIGdlbmVyaWNfZGF0YV9mbG93KCBUIGNvbnN0JiB0ICkKLSAgICB7Ci0gICAgICAgIHdyYXBfc3RyaW5nc3RyZWFtIHdzOwotCi0gICAgICAgIGRhdGFfZmxvdyggKHdzIDw8IHQpLnN0cigpICk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIERlZmF1bHRWYWx1ZVR5cGU+Ci0gICAgVCAgICAgICAgICAgICAgICAgICBnZW5lcmljX3JldHVybiggRGVmYXVsdFZhbHVlVHlwZSBjb25zdCYgZHYgKQotICAgIHsKLSAgICAgICAgd3JhcF9zdHJpbmdzdHJlYW0gd3M7Ci0KLSAgICAgICAgc3RkOjpzdHJpbmcgY29uc3QmIHJlcyA9IHJldHVybl92YWx1ZSggKHdzIDw8IGR2KS5zdHIoKSApOwotCi0gICAgICAgIGlmKCByZXMuZW1wdHkoKSApCi0gICAgICAgICAgICByZXR1cm4gZHY7Ci0KLSAgICAgICAgcmV0dXJuIGxleGljYWxfY2FzdDxUPiggcmVzICk7Ci0gICAgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgbWFuYWdlcigpOwotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NjQpKSAKLXB1YmxpYzoKLSNlbmRpZgotICAgIE5ETkJPT1NUX1RFU1RfUFJPVEVDVEVEX1ZJUlRVQUwgfm1hbmFnZXIoKTsKLQotcHJpdmF0ZToKLSAgICBzdHJ1Y3QgZHVtbXlfY29uc3Rye307Ci0gICAgZXhwbGljaXQgbWFuYWdlciggZHVtbXlfY29uc3RyKiApIHt9Ci0KLSAgICBzdGF0aWMgbWFuYWdlciogICAgIGluc3RhbmNlX3B0ciggYm9vbCByZXNldCA9IGZhbHNlLCBtYW5hZ2VyKiBwdHIgPSAwICk7Ci19OyAvLyBtYW5hZ2VyCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgIHNjb3BlX2d1YXJkICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3Mgc2NvcGVfZ3VhcmQgewotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgc2NvcGVfZ3VhcmQoIGNvbnN0X3N0cmluZyBmaWxlLCBzdGQ6OnNpemVfdCBsaW5lX251bSwgY29uc3Rfc3RyaW5nIHNjb3BlX25hbWUgKQotICAgIHsKLSAgICAgICAgbV9zY29wZV9pbmRleCA9IG1hbmFnZXI6Omluc3RhbmNlKCkuZW50ZXJfc2NvcGUoIGZpbGUsIGxpbmVfbnVtLCBzY29wZV9uYW1lICk7Ci0gICAgfQotICAgIH5zY29wZV9ndWFyZCgpCi0gICAgewotICAgICAgICBtYW5hZ2VyOjppbnN0YW5jZSgpLmxlYXZlX3Njb3BlKCBtX3Njb3BlX2luZGV4ICk7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgbV9zY29wZV9pbmRleDsKLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24gICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotc3RydWN0IGxvY2F0aW9uIHsKLSAgICBsb2NhdGlvbiggY29uc3Rfc3RyaW5nIGZpbGUsIHN0ZDo6c2l6ZV90IGxpbmUgKSAKLSAgICA6IG1fZmlsZV9uYW1lKCBmaWxlICkKLSAgICAsIG1fbGluZV9udW0oIGxpbmUgKQotICAgIHt9Ci0KLSAgICBjb25zdF9zdHJpbmcgICAgbV9maWxlX25hbWU7Ci0gICAgc3RkOjpzaXplX3QgICAgIG1fbGluZV9udW07Ci19OwotCi19ICAvLyBuYW1lc3BhY2UgaXRlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICBvcGVyYXRvciBuZXcgb3ZlcmxvYWQgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfSVRFU1RfTk9fTkVXX09WRVJMT0FEUykKLQotLy8gU1RMCi0jaW5jbHVkZSA8Y3N0ZGxpYj4KLQotIyBpZmRlZiBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRQotbmFtZXNwYWNlIHN0ZCB7IHVzaW5nIDo6bWFsbG9jOyB1c2luZyA6OmZyZWU7IH0KLSMgZW5kaWYKLSMgaWZkZWYgX0NSVERCR19NQVBfQUxMT0MKLW5hbWVzcGFjZSBzdGQgeyB1c2luZyA6Ol9tYWxsb2NfZGJnOyB1c2luZyA6Ol9mcmVlX2RiZzsgfQotIyBlbmRpZgotCi1pbmxpbmUgdm9pZCoKLW9wZXJhdG9yIG5ldyggc3RkOjpzaXplX3QgcywgOjpuZG5ib29zdDo6aXRlc3Q6OmxvY2F0aW9uIGNvbnN0JiBsICkKLXsKLSAgICB2b2lkKiByZXMgPSBzdGQ6Om1hbGxvYyhzID8gcyA6IDEpOwotCi0gICAgaWYoIHJlcyApCi0gICAgICAgIDo6bmRuYm9vc3Q6Oml0ZXN0OjptYW5hZ2VyOjppbnN0YW5jZSgpLmFsbG9jYXRlZCggbC5tX2ZpbGVfbmFtZSwgbC5tX2xpbmVfbnVtLCByZXMsIHMgKTsKLSAgICBlbHNlCi0gICAgICAgIHRocm93IHN0ZDo6YmFkX2FsbG9jKCk7Ci0gICAgICAgIAotICAgIHJldHVybiByZXM7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWlubGluZSB2b2lkKgotb3BlcmF0b3IgbmV3W10oIHN0ZDo6c2l6ZV90IHMsIDo6bmRuYm9vc3Q6Oml0ZXN0Ojpsb2NhdGlvbiBjb25zdCYgbCApCi17Ci0gICAgdm9pZCogcmVzID0gc3RkOjptYWxsb2MocyA/IHMgOiAxKTsKLQotICAgIGlmKCByZXMgKQotICAgICAgICA6Om5kbmJvb3N0OjppdGVzdDo6bWFuYWdlcjo6aW5zdGFuY2UoKS5hbGxvY2F0ZWQoIGwubV9maWxlX25hbWUsIGwubV9saW5lX251bSwgcmVzLCBzICk7Ci0gICAgZWxzZQotICAgICAgICB0aHJvdyBzdGQ6OmJhZF9hbGxvYygpOwotICAgICAgICAKLSAgICByZXR1cm4gcmVzOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1pbmxpbmUgdm9pZAotb3BlcmF0b3IgZGVsZXRlKCB2b2lkKiBwLCA6Om5kbmJvb3N0OjppdGVzdDo6bG9jYXRpb24gY29uc3QmICkKLXsKLSAgICA6Om5kbmJvb3N0OjppdGVzdDo6bWFuYWdlcjo6aW5zdGFuY2UoKS5mcmVlZCggcCApOwotCi0gICAgc3RkOjpmcmVlKCBwICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWlubGluZSB2b2lkCi1vcGVyYXRvciBkZWxldGVbXSggdm9pZCogcCwgOjpuZG5ib29zdDo6aXRlc3Q6OmxvY2F0aW9uIGNvbnN0JiApCi17Ci0gICAgOjpuZG5ib29zdDo6aXRlc3Q6Om1hbmFnZXI6Omluc3RhbmNlKCkuZnJlZWQoIHAgKTsKLQotICAgIHN0ZDo6ZnJlZSggcCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX0lOVEVSQUNUSU9OX0JBU0VEX0hQUF8xMTIxMDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9taW5pbWFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9taW5pbWFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjIwNTlmOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvbWluaW1hbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDMgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwMi0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBzaW1wbGUgbWluaW1hbCB0ZXN0aW5nIGRlZmluaXRpb25zIGFuZCBpbXBsZW1lbnRhdGlvbgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9NSU5JTUFMX0hQUF8wNzE4OTRHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9NSU5JTUFMX0hQUF8wNzE4OTRHRVIKLQotI2RlZmluZSBORE5CT09TVF9DSEVDSyhleHApICAgICAgIFwKLSAgKCAoZXhwKSAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICA/IHN0YXRpY19jYXN0PHZvaWQ+KDApICAgXAotICAgICAgOiBuZG5ib29zdDo6bWluaW1hbF90ZXN0OjpyZXBvcnRfZXJyb3IoI2V4cCxfX0ZJTEVfXyxfX0xJTkVfXywgTkROQk9PU1RfQ1VSUkVOVF9GVU5DVElPTikgKQotCi0jZGVmaW5lIE5ETkJPT1NUX1JFUVVJUkUoZXhwKSAgICAgXAotICAoIChleHApICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgID8gc3RhdGljX2Nhc3Q8dm9pZD4oMCkgICBcCi0gICAgICA6IG5kbmJvb3N0OjptaW5pbWFsX3Rlc3Q6OnJlcG9ydF9jcml0aWNhbF9lcnJvcigjZXhwLF9fRklMRV9fLF9fTElORV9fLE5ETkJPT1NUX0NVUlJFTlRfRlVOQ1RJT04pKQotCi0jZGVmaW5lIE5ETkJPT1NUX0VSUk9SKCBtc2dfICkgICAgXAotICAgICAgICBuZG5ib29zdDo6bWluaW1hbF90ZXN0OjpyZXBvcnRfZXJyb3IoIChtc2dfKSxfX0ZJTEVfXyxfX0xJTkVfXywgTkROQk9PU1RfQ1VSUkVOVF9GVU5DVElPTiwgdHJ1ZSApCi0jZGVmaW5lIE5ETkJPT1NUX0ZBSUwoIG1zZ18gKSAgICAgXAotICAgICAgICBuZG5ib29zdDo6bWluaW1hbF90ZXN0OjpyZXBvcnRfY3JpdGljYWxfZXJyb3IoIChtc2dfKSxfX0ZJTEVfXyxfX0xJTkVfXywgTkROQk9PU1RfQ1VSUkVOVF9GVU5DVElPTiwgdHJ1ZSApCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9nbG9iYWxfdHlwZWRlZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9pbXBsL2V4ZWN1dGlvbl9tb25pdG9yLmlwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2ltcGwvZGVidWcuaXBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvY2xhc3NfcHJvcGVydGllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2lvLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9jc3RkbGliLmhwcD4gICAgICAgICAgICAvLyBmb3IgZXhpdCBjb2RlcyNpbmNsdWRlIDxuZG5ib29zdC9jc3RkbGliLmhwcD4gICAgICAgICAgICAvLyBmb3IgZXhpdCBjb2RlcwotI2luY2x1ZGUgPG5kbmJvb3N0L2N1cnJlbnRfZnVuY3Rpb24uaHBwPiAgIC8vIGZvciBORE5CT09TVF9DVVJSRU5UX0ZVTkNUSU9OCi0KLS8vIFNUTAotI2luY2x1ZGUgPGlvc3RyZWFtPiAgICAgICAgICAgICAgICAgICAgIC8vIHN0ZDo6Y2Vyciwgc3RkOjplbmRsCi0jaW5jbHVkZSA8c3RyaW5nPiAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RkOjpzdHJpbmcKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotaW50IHRlc3RfbWFpbiggaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSApOyAgLy8gcHJvdG90eXBlIGZvciB1c2VycyB0ZXN0X21haW4oKQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIG1pbmltYWxfdGVzdCB7Ci0KLXR5cGVkZWYgbmRuYm9vc3Q6OnVuaXRfdGVzdDo6Y29uc3Rfc3RyaW5nIGNvbnN0X3N0cmluZzsKLQotaW5saW5lIHVuaXRfdGVzdDo6Y291bnRlcl90JiBlcnJvcnNfY291bnRlcigpIHsgc3RhdGljIHVuaXRfdGVzdDo6Y291bnRlcl90IGVjID0gMDsgcmV0dXJuIGVjOyB9Ci0KLWlubGluZSB2b2lkCi1yZXBvcnRfZXJyb3IoIGNvbnN0IGNoYXIqIG1zZywgY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0X3N0cmluZyBmdW5jX25hbWUsIGJvb2wgaXNfbXNnID0gZmFsc2UgKQotewotICAgICsrZXJyb3JzX2NvdW50ZXIoKTsKLSAgICBzdGQ6OmNlcnIgPDwgZmlsZSA8PCAiKCIgPDwgbGluZSA8PCAiKTogIjsKLQotICAgIGlmKCBpc19tc2cgKQotICAgICAgICBzdGQ6OmNlcnIgPDwgbXNnOwotICAgIGVsc2UKLSAgICAgICAgc3RkOjpjZXJyIDw8ICJ0ZXN0ICIgPDwgbXNnIDw8ICIgZmFpbGVkIjsKLQotICAgIGlmKCBmdW5jX25hbWUgIT0gIih1bmtub3duKSIgKQotICAgICAgICBzdGQ6OmNlcnIgPDwgIiBpbiBmdW5jdGlvbjogJyIgPDwgZnVuY19uYW1lIDw8ICInIjsKLQotICAgIHN0ZDo6Y2VyciA8PCBzdGQ6OmVuZGw7Ci19Ci0KLWlubGluZSB2b2lkCi1yZXBvcnRfY3JpdGljYWxfZXJyb3IoIGNvbnN0IGNoYXIqIG1zZywgY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0X3N0cmluZyBmdW5jX25hbWUsIGJvb2wgaXNfbXNnID0gZmFsc2UgKQotewotICAgIHJlcG9ydF9lcnJvciggbXNnLCBmaWxlLCBsaW5lLCBmdW5jX25hbWUsIGlzX21zZyApOwotCi0gICAgdGhyb3cgbmRuYm9vc3Q6OmV4ZWN1dGlvbl9hYm9ydGVkKCk7Ci19Ci0KLWNsYXNzIGNhbGxlciB7Ci1wdWJsaWM6Ci0gICAgLy8gY29uc3RydWN0b3IKLSAgICBjYWxsZXIoIGludCBhcmdjLCBjaGFyKiogYXJndiApCi0gICAgOiBtX2FyZ2MoIGFyZ2MgKSwgbV9hcmd2KCBhcmd2ICkge30KLQotICAgIC8vIGV4ZWN1dGlvbiBtb25pdG9yIGhvb2sgaW1wbGVtZW50YXRpb24KLSAgICBpbnQgb3BlcmF0b3IoKSgpIHsgcmV0dXJuIHRlc3RfbWFpbiggbV9hcmdjLCBtX2FyZ3YgKTsgfQotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIGludCAgICAgICAgIG1fYXJnYzsKLSAgICBjaGFyKiogICAgICBtX2FyZ3Y7Ci19OyAvLyBtb25pdG9yCi0KLX0gLy8gbmFtZXNwYWNlIG1pbmltYWxfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1pbnQgTkROQk9PU1RfVEVTVF9DQUxMX0RFQ0wgbWFpbiggaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSApCi17Ci0gICAgdXNpbmcgbmFtZXNwYWNlIG5kbmJvb3N0OjptaW5pbWFsX3Rlc3Q7Ci0KLSAgICB0cnkgewotICAgICAgICA6Om5kbmJvb3N0OjpleGVjdXRpb25fbW9uaXRvciBleF9tb247Ci0gICAgICAgIGludCBydW5fcmVzdWx0ID0gZXhfbW9uLmV4ZWN1dGUoIGNhbGxlciggYXJnYywgYXJndiApICk7Ci0KLSAgICAgICAgTkROQk9PU1RfQ0hFQ0soIHJ1bl9yZXN1bHQgPT0gMCB8fCBydW5fcmVzdWx0ID09IG5kbmJvb3N0OjpleGl0X3N1Y2Nlc3MgKTsKLSAgICB9Ci0gICAgY2F0Y2goIG5kbmJvb3N0OjpleGVjdXRpb25fZXhjZXB0aW9uIGNvbnN0JiBleGV4ICkgewotICAgICAgICBpZiggZXhleC5jb2RlKCkgIT0gbmRuYm9vc3Q6OmV4ZWN1dGlvbl9leGNlcHRpb246Om5vX2Vycm9yICkKLSAgICAgICAgICAgIE5ETkJPT1NUX0VSUk9SKCAoc3RkOjpzdHJpbmcoICJleGNlcHRpb24gXCIiICkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKCBleGV4LndoYXQoKS5iZWdpbigpLCBleGV4LndoYXQoKS5lbmQoKSApLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZCggIlwiIGNhdWdodCIgKSApLmNfc3RyKCkgKTsKLSAgICAgICAgc3RkOjpjZXJyIDw8ICJcbioqKiogVGVzdGluZyBhYm9ydGVkLiI7Ci0gICAgfQotCi0gICAgaWYoIG5kbmJvb3N0OjptaW5pbWFsX3Rlc3Q6OmVycm9yc19jb3VudGVyKCkgIT0gMCApIHsKLSAgICAgICAgc3RkOjpjZXJyIDw8ICJcbioqKiogIiA8PCBlcnJvcnNfY291bnRlcigpCi0gICAgICAgICAgICAgICAgICA8PCAiIGVycm9yIiA8PCAoZXJyb3JzX2NvdW50ZXIoKSA+IDEgPyAicyIgOiAiIiApIDw8ICIgZGV0ZWN0ZWRcbiI7Ci0KLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpleGl0X3Rlc3RfZmFpbHVyZTsKLSAgICB9Ci0KLSAgICBzdGQ6OmNvdXQgPDwgIlxuKioqKiBubyBlcnJvcnMgZGV0ZWN0ZWRcbiI7Ci0gICAgCi0gICAgcmV0dXJuIG5kbmJvb3N0OjpleGl0X3N1Y2Nlc3M7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9NSU5JTUFMX0hQUF8wNzE4OTRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9tb2NrX29iamVjdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvbW9ja19vYmplY3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ODVkOTRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9tb2NrX29iamVjdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjggKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IEZhY2lsaXRpZXMgdG8gcGVyZm9ybSBleGNlcHRpb24gc2FmZXR5X3Rlc3RzCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX01PQ0tfT0JKRUNUX0hQUF8xMTIyMDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9NT0NLX09CSkVDVF9IUFBfMTEyMjA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvaW50ZXJhY3Rpb25fYmFzZWQuaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9wdW5jdHVhdGlvbi9jb21tYS5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBpdGVzdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICBtb2NrX29iamVjdF9iYXNlICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgbW9ja19vYmplY3RfYmFzZSB7Ci1wdWJsaWM6Ci0gICAgbW9ja19vYmplY3RfYmFzZSgpIHt9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMT4KLSAgICBtb2NrX29iamVjdF9iYXNlKCBUMSBjb25zdCYgKSB7fQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotICAgIG1vY2tfb2JqZWN0X2Jhc2UoIFQxIGNvbnN0JiwgVDIgY29uc3QmICkge30KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDM+Ci0gICAgbW9ja19vYmplY3RfYmFzZSggVDEgY29uc3QmLCBUMiBjb25zdCYsIFQzIGNvbnN0JiApIHt9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUND4KLSAgICBtb2NrX29iamVjdF9iYXNlKCBUMSBjb25zdCYsIFQyIGNvbnN0JiwgVDMgY29uc3QmLCBUNCBjb25zdCYgKSB7fQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1PgotICAgIG1vY2tfb2JqZWN0X2Jhc2UoIFQxIGNvbnN0JiwgVDIgY29uc3QmLCBUMyBjb25zdCYsIFQ0IGNvbnN0JiwgVDUgY29uc3QmICkge30KLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgIG1vY2tfb2JqZWN0IGltcGxlbWVudGF0aW9uIGhlbHBlcnMgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2RlZmluZSBNT19PUF9JTVBMKCBvcCwgZGVzY3IsIHJldCApICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX0lURVNUX1NDT1BFKCBtb2NrX29iamVjdDo6b3BlcmF0b3Igb3AgKTsgICAgICAgICAgXAotICAgIE5ETkJPT1NUX0lURVNUX0VQT0lOVCggZGVzY3IgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHJldHVybiByZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLyoqLwotCi0jZGVmaW5lIE1PX1VOQVJZX09QKCBvcCwgZGVzY3IgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1zZWxmX3R5cGUgY29uc3QmIG9wZXJhdG9yIG9wKCkgY29uc3QgICAgICAgICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTU9fT1BfSU1QTCggb3AsIGRlc2NyLCBwcm90b3R5cGUoKSApOyAgICAgICAgICAgICAgICAgICBcCi19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0vKiovCi0KLSNkZWZpbmUgTU9fVU5BUllfQk9PTF9PUCggb3AsIGRlc2NyICkgICAgICAgICAgICAgICAgICAgICAgIFwKLWJvb2wgb3BlcmF0b3Igb3AoKSBjb25zdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBNT19PUF9JTVBMKCBvcCwgZGVzY3IsICghIU5ETkJPT1NUX0lURVNUX0RQT0lOVCgpKSApOyAgICAgIFwKLX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qKi8KLQotI2RlZmluZSBNT19CSU5BUllfT1AoIG9wLCBkZXNjciApICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGU8aW50IGkxLCB0eXBlbmFtZSBCYXNlMSxpbnQgaTIsIHR5cGVuYW1lIEJhc2UyPiAgICAgXAotaW5saW5lIG1vY2tfb2JqZWN0PGkxLEJhc2UxPiBjb25zdCYgICAgICAgICAgICAgICAgICAgICAgICAgXAotb3BlcmF0b3Igb3AoIG1vY2tfb2JqZWN0PGkxLEJhc2UxPiBjb25zdCYgbW8sICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgIG1vY2tfb2JqZWN0PGkyLEJhc2UyPiBjb25zdCYgKSAgICAgICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE1PX09QX0lNUEwoIG9wLCBkZXNjciwgbW8gKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGU8aW50IGksIHR5cGVuYW1lIEJhc2UsIHR5cGVuYW1lIFQ+ICAgICAgICAgICAgICAgICAgXAotaW5saW5lIG1vY2tfb2JqZWN0PGksQmFzZT4gY29uc3QmICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotb3BlcmF0b3Igb3AoIG1vY2tfb2JqZWN0PGksQmFzZT4gY29uc3QmIG1vLCBUIGNvbnN0JiApICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE1PX09QX0lNUEwoIG9wLCBkZXNjciwgbW8gKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGU8aW50IGksIHR5cGVuYW1lIEJhc2UsIHR5cGVuYW1lIFQ+ICAgICAgICAgICAgICAgICAgXAotaW5saW5lIG1vY2tfb2JqZWN0PGksQmFzZT4gY29uc3QmICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotb3BlcmF0b3Igb3AoIFQgY29uc3QmLCBtb2NrX29iamVjdDxpLEJhc2U+IGNvbnN0JiBtbyApICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE1PX09QX0lNUEwoIG9wLCBkZXNjciwgbW8gKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLyoqLwotCi0jZGVmaW5lIE1PX0JJTkFSWV9CT09MX09QKCBvcCwgZGVzY3IgKSAgICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZTxpbnQgaTEsIHR5cGVuYW1lIEJhc2UxLGludCBpMiwgdHlwZW5hbWUgQmFzZTI+ICAgICBcCi1pbmxpbmUgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1vcGVyYXRvciBvcCggbW9ja19vYmplY3Q8aTEsQmFzZTE+IGNvbnN0JiwgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgbW9ja19vYmplY3Q8aTIsQmFzZTI+IGNvbnN0JiApICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTU9fT1BfSU1QTCggb3AsIGRlc2NyLCBORE5CT09TVF9JVEVTVF9EUE9JTlQoKSApOyAgICAgICAgICBcCi19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZTxpbnQgaSwgdHlwZW5hbWUgQmFzZSwgdHlwZW5hbWUgVD4gICAgICAgICAgICAgICAgICBcCi1pbmxpbmUgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1vcGVyYXRvciBvcCggbW9ja19vYmplY3Q8aSxCYXNlPiBjb25zdCYsIFQgY29uc3QmICkgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTU9fT1BfSU1QTCggb3AsIGRlc2NyLCBORE5CT09TVF9JVEVTVF9EUE9JTlQoKSApOyAgICAgICAgICBcCi19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZTxpbnQgaSwgdHlwZW5hbWUgQmFzZSwgdHlwZW5hbWUgVD4gICAgICAgICAgICAgICAgICBcCi1pbmxpbmUgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1vcGVyYXRvciBvcCggVCBjb25zdCYsIG1vY2tfb2JqZWN0PGksQmFzZT4gY29uc3QmICkgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTU9fT1BfSU1QTCggb3AsIGRlc2NyLCBORE5CT09TVF9JVEVTVF9EUE9JTlQoKSApOyAgICAgICAgICBcCi19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0vKiovCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgIG1vY2tfb2JqZWN0ICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8aW50IGkgPSAwLCB0eXBlbmFtZSBCYXNlPW1vY2tfb2JqZWN0X2Jhc2U+Ci1jbGFzcyBtb2NrX29iamVjdDsKLQotdGVtcGxhdGU8aW50IGksIHR5cGVuYW1lIEJhc2U+Ci1jbGFzcyBtb2NrX29iamVjdCA6IHB1YmxpYyBCYXNlIHsKLSAgICAvLyBQcml2YXRlIHR5cGVlZnMKLSAgICB0eXBlZGVmIG1vY2tfb2JqZWN0PGksQmFzZT4gc2VsZl90eXBlOwotICAgIHN0cnVjdCBkdW1teSB7IHZvaWQgbm9ubnVsbCgpIHt9OyB9OwotICAgIHR5cGVkZWYgdm9pZCAoZHVtbXk6OipzYWZlX2Jvb2wpKCk7Ci0KLSAgICAvLyBwcm90b3R5cGUgY29uc3RydWN0b3IKLSAgICBtb2NrX29iamVjdCggZHVtbXkqICkge30KLQotcHVibGljOgotICAgIHN0YXRpYyBtb2NrX29iamVjdCYgcHJvdG90eXBlKCkKLSAgICB7Ci0gICAgICAgIHN0YXRpYyBtb2NrX29iamVjdCBwKCByZWludGVycHJldF9jYXN0PGR1bW15Kj4oMCkgKTsgCi0gICAgICAgIHJldHVybiBwOwotICAgIH0KLQotICAgIC8vIENvbnN0cnVjdG9ycwotICAgIG1vY2tfb2JqZWN0KCkKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0lURVNUX1NDT1BFKCBtb2NrX29iamVjdDo6bW9ja19vYmplY3QgKTsKLSAgICAgICAgTkROQk9PU1RfSVRFU1RfRVBPSU5UKCAiTW9jayBvYmplY3QgZGVmYXVsdCBjb25zdHJ1Y3RvciIgKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMT4KLSAgICBtb2NrX29iamVjdCggVDEgY29uc3QmIGFyZzEgKQotICAgIDogbW9ja19vYmplY3RfYmFzZSggYXJnMSApCi0gICAgewotICAgICAgICBORE5CT09TVF9JVEVTVF9TQ09QRSggbW9ja19vYmplY3Q6Om1vY2tfb2JqZWN0ICk7Ci0gICAgICAgIE5ETkJPT1NUX0lURVNUX0VQT0lOVCggIk1vY2sgb2JqZWN0IGNvbnN0cnVjdG9yIiApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLSAgICBtb2NrX29iamVjdCggVDEgY29uc3QmIGFyZzEsIFQyIGNvbnN0JiBhcmcyICkKLSAgICA6IG1vY2tfb2JqZWN0X2Jhc2UoIGFyZzEsIGFyZzIgKQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfSVRFU1RfU0NPUEUoIG1vY2tfb2JqZWN0Ojptb2NrX29iamVjdCApOwotICAgICAgICBORE5CT09TVF9JVEVTVF9FUE9JTlQoICJNb2NrIG9iamVjdCBjb25zdHJ1Y3RvciIgKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzPgotICAgIG1vY2tfb2JqZWN0KCBUMSBjb25zdCYgYXJnMSwgVDIgY29uc3QmIGFyZzIsIFQzIGNvbnN0JiBhcmczICkKLSAgICA6IG1vY2tfb2JqZWN0X2Jhc2UoIGFyZzEsIGFyZzIsIGFyZzMgKQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfSVRFU1RfU0NPUEUoIG1vY2tfb2JqZWN0Ojptb2NrX29iamVjdCApOwotICAgICAgICBORE5CT09TVF9JVEVTVF9FUE9JTlQoICJNb2NrIG9iamVjdCBjb25zdHJ1Y3RvciIgKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUND4KLSAgICBtb2NrX29iamVjdCggVDEgY29uc3QmIGFyZzEsIFQyIGNvbnN0JiBhcmcyLCBUMyBjb25zdCYgYXJnMywgVDQgY29uc3QmIGFyZzQgKQotICAgIDogbW9ja19vYmplY3RfYmFzZSggYXJnMSwgYXJnMiwgYXJnMywgYXJnNCApCi0gICAgewotICAgICAgICBORE5CT09TVF9JVEVTVF9TQ09QRSggbW9ja19vYmplY3Q6Om1vY2tfb2JqZWN0ICk7Ci0gICAgICAgIE5ETkJPT1NUX0lURVNUX0VQT0lOVCggIk1vY2sgb2JqZWN0IGNvbnN0cnVjdG9yIiApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNT4KLSAgICBtb2NrX29iamVjdCggVDEgY29uc3QmIGFyZzEsIFQyIGNvbnN0JiBhcmcyLCBUMyBjb25zdCYgYXJnMywgVDQgY29uc3QmIGFyZzQsIFQ1IGNvbnN0JiBhcmc1ICkKLSAgICA6IG1vY2tfb2JqZWN0X2Jhc2UoIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUgKQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfSVRFU1RfU0NPUEUoIG1vY2tfb2JqZWN0Ojptb2NrX29iamVjdCApOwotICAgICAgICBORE5CT09TVF9JVEVTVF9FUE9JTlQoICJNb2NrIG9iamVjdCBjb25zdHJ1Y3RvciIgKTsKLSAgICB9Ci0KLSAgICBtb2NrX29iamVjdCggbW9ja19vYmplY3QgY29uc3QmICkKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0lURVNUX1NDT1BFKCBtb2NrX29iamVjdDo6bW9ja19vYmplY3QgKTsKLSAgICAgICAgTkROQk9PU1RfSVRFU1RfRVBPSU5UKCAiTW9jayBvYmplY3QgY29weSBjb25zdHJ1Y3RvciIgKTsKLSAgICB9Ci0KLSAgICAvLyBhc3NpZ25tZW50Ci0gICAgc2VsZl90eXBlIGNvbnN0JiAgICBvcGVyYXRvciA9KCBtb2NrX29iamVjdCBjb25zdCYgKSBjb25zdAotICAgIHsKLSAgICAgICAgTU9fT1BfSU1QTCggPSwgIkNvcHkgYXNzaWdubWVudCIsIHByb3RvdHlwZSgpICk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgc2VsZl90eXBlIGNvbnN0JiAgICBvcGVyYXRvciA9KCBUIGNvbnN0JiApIGNvbnN0Ci0gICAgewotICAgICAgICBNT19PUF9JTVBMKCA9LCAiQ29weSBhc3NpZ25tZW50IiwgcHJvdG90eXBlKCkgKTsKLSAgICB9Ci0KLSAgICAvLyBVbmFyeSBvcGVyYXRvcnMKLSAgICBNT19VTkFSWV9CT09MX09QKCAhLCAiTG9naWNhbCBOT1Qgb3BlcmF0b3IiICkKLSAgICBNT19VTkFSWV9PUCggJiwgIkFkZHJlc3Mtb2Ygb3BlcmF0b3IiICkKLSAgICBNT19VTkFSWV9PUCggfiwgIk9uZSdzIGNvbXBsZW1lbnQgb3BlcmF0b3IiICkKLSAgICBNT19VTkFSWV9PUCggKiwgIlBvaW50ZXIgZGVyZWZlcmVuY2UiICkKLSAgICBNT19VTkFSWV9PUCggKywgIlVuYXJ5IHBsdXMiICkKLQotICAgIC8vIEluY3JlbWVudCBhbmQgRGVjcmVtZW50Ci0gICAgTU9fVU5BUllfT1AoICsrLCAiUHJlZml4IGluY3JlbWVudCIgKQotICAgIE1PX1VOQVJZX09QKCAtLSwgIlByZWZpeCBkZWNyZW1lbnQiICkKLSAgICBzZWxmX3R5cGUgY29uc3QmICAgIG9wZXJhdG9yICsrKGludCkgY29uc3QKLSAgICB7Ci0gICAgICAgIE1PX09QX0lNUEwoICsrLCAiUG9zdGZpeCBpbmNyZW1lbnQiLCBwcm90b3R5cGUoKSApOwotICAgIH0KLSAgICBzZWxmX3R5cGUgY29uc3QmICAgIG9wZXJhdG9yIC0tKGludCkgY29uc3QKLSAgICB7Ci0gICAgICAgIE1PX09QX0lNUEwoIC0tLCAiUG9zdGZpeCBkZWNyZW1lbnQiLCBwcm90b3R5cGUoKSApOwotICAgIH0KLQotICAgIC8vIEJvb2wgY29udGV4dCBjb252ZXJ0aW9uCi0gICAgb3BlcmF0b3Igc2FmZV9ib29sKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIE1PX09QX0lNUEwoIHNhZmVfYm9vbCwgIkJvb2wgY29udGV4dCBjb252ZXJzaW9uIiwKLSAgICAgICAgICAgICAgICAgICAgKE5ETkJPT1NUX0lURVNUX0RQT0lOVCgpID8gMCA6ICZkdW1teTo6bm9ubnVsbCkgKTsKLSAgICB9Ci0KLSAgICAvLyBGdW5jdGlvbi1jYWxsIG9wZXJhdG9ycwotICAgIHNlbGZfdHlwZSBjb25zdCYgICAgb3BlcmF0b3IgKCkoKSBjb25zdAotICAgIHsKLSAgICAgICAgTU9fT1BfSU1QTCggKCksICIwLWFyaXR5IGZ1bmN0aW9uLWNhbGwiLCBwcm90b3R5cGUoKSApOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMT4KLSAgICBzZWxmX3R5cGUgY29uc3QmICAgIG9wZXJhdG9yICgpKCBUMSBjb25zdCYgYXJnMSApIGNvbnN0Ci0gICAgewotICAgICAgICBNT19PUF9JTVBMKCAoKSwgIjEtYXJpdHkgZnVuY3Rpb24tY2FsbCIsIHByb3RvdHlwZSgpICk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLSAgICBzZWxmX3R5cGUgY29uc3QmICAgIG9wZXJhdG9yICgpKCBUMSBjb25zdCYsIFQyIGNvbnN0JiApIGNvbnN0Ci0gICAgewotICAgICAgICBNT19PUF9JTVBMKCAoKSwgIjItYXJpdHkgZnVuY3Rpb24tY2FsbCIsIHByb3RvdHlwZSgpICk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDM+Ci0gICAgc2VsZl90eXBlIGNvbnN0JiAgICBvcGVyYXRvciAoKSggVDEgY29uc3QmLCBUMiBjb25zdCYsIFQzIGNvbnN0JiApIGNvbnN0Ci0gICAgewotICAgICAgICBNT19PUF9JTVBMKCAoKSwgIjMtYXJpdHkgZnVuY3Rpb24tY2FsbCIsIHByb3RvdHlwZSgpICk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0PgotICAgIHNlbGZfdHlwZSBjb25zdCYgICAgb3BlcmF0b3IgKCkoIFQxIGNvbnN0JiwgVDIgY29uc3QmLCBUMyBjb25zdCYsIFQ0IGNvbnN0JiApIGNvbnN0Ci0gICAgewotICAgICAgICBNT19PUF9JTVBMKCAoKSwgIjQtYXJpdHkgZnVuY3Rpb24tY2FsbCIsIHByb3RvdHlwZSgpICk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNT4KLSAgICBzZWxmX3R5cGUgY29uc3QmICAgIG9wZXJhdG9yICgpKCBUMSBjb25zdCYsIFQyIGNvbnN0JiwgVDMgY29uc3QmLCBUNCBjb25zdCYsIFQ1IGNvbnN0JiApIGNvbnN0Ci0gICAgewotICAgICAgICBNT19PUF9JTVBMKCAoKSwgIjUtYXJpdHkgZnVuY3Rpb24tY2FsbCIsIHByb3RvdHlwZSgpICk7Ci0gICAgfQotCi0gICAgLy8gU3Vic3RyaXB0aW5nCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzZWxmX3R5cGUgY29uc3QmICAgIG9wZXJhdG9yIFtdKCBUIGNvbnN0JiApIGNvbnN0Ci0gICAgewotICAgICAgICBNT19PUF9JTVBMKCBbXSwgIlN1YnN0cmlwdGluZyIsIHByb3RvdHlwZSgpICk7Ci0gICAgfQotCi0gICAgLy8gQ2xhc3MgbWVtYmVyIGFjY2VzcwotICAgIHNlbGZfdHlwZSBjb25zdCogICAgb3BlcmF0b3ItPigpIGNvbnN0Ci0gICAgewotICAgICAgICBNT19PUF9JTVBMKCAtPiwgIkNsYXNzIG1lbWJlciBhY2Nlc3MiLCB0aGlzICk7Ci0gICAgfQotfTsKLQotLy8gISEgTU9fQklOQVJZX09QKCBORE5CT09TVF9QUF9DT01NQSgpLCAiQ29tbWEgb3BlcmF0b3IiICkKLQotTU9fQklOQVJZX0JPT0xfT1AoICE9LCAiSW5lcXVhbGl0eSIgKQotTU9fQklOQVJZX09QKCAlLCAiTW9kdWx1cyIgKQotTU9fQklOQVJZX09QKCAlPSwgIk1vZHVsdXMvYXNzaWdubWVudCIgKQotTU9fQklOQVJZX09QKCAmLCAiQml0d2lzZSBBTkQiICkKLU1PX0JJTkFSWV9CT09MX09QKCAmJiwgIkxvZ2ljYWwgQU5EIiApCi1NT19CSU5BUllfT1AoICY9LCAiQml0d2lzZSBBTkQvYXNzaWdubWVudCIgKQotTU9fQklOQVJZX09QKCAqLCAiTXVsdGlwbGljYXRpb24iICkKLU1PX0JJTkFSWV9PUCggKj0sICJNdWx0aXBsaWNhdGlvbi9hc3NpZ25tZW50IiApCi1NT19CSU5BUllfT1AoICssICJBZGRpdGlvbiIgKQotTU9fQklOQVJZX09QKCArPSwgIkFkZGl0aW9uL2Fzc2lnbm1lbnQiICkKLS8vTU9fQklOQVJZX09QKCAtLCAiU3VidHJhY3Rpb24iICkKLU1PX0JJTkFSWV9PUCggLT0sICJTdWJ0cmFjdGlvbi9hc3NpZ25tZW50IiApCi1NT19CSU5BUllfT1AoIC0+KiwgIlBvaW50ZXItdG8tbWVtYmVyIHNlbGVjdGlvbiIgKQotTU9fQklOQVJZX09QKCAvLCAiRGl2aXNpb24iICkKLU1PX0JJTkFSWV9PUCggLz0sICJEaXZpc2lvbi9hc3NpZ25tZW50IiApCi1NT19CSU5BUllfQk9PTF9PUCggPCwgIkxlc3MgdGhhbiIgKQotTU9fQklOQVJZX09QKCA8PD0sICJMZWZ0IHNoaWZ0L2Fzc2lnbm1lbnQiICkKLU1PX0JJTkFSWV9CT09MX09QKCA8PSwgIkxlc3MgdGhhbiBvciBlcXVhbCB0byIgKQotTU9fQklOQVJZX0JPT0xfT1AoID09LCAiRXF1YWxpdHkiICkKLU1PX0JJTkFSWV9CT09MX09QKCA+LCAiR3JlYXRlciB0aGFuIiApCi1NT19CSU5BUllfQk9PTF9PUCggPj0sICJHcmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8iICkKLU1PX0JJTkFSWV9PUCggPj49LCAiUmlnaHQgc2hpZnQvYXNzaWdubWVudCIgKQotTU9fQklOQVJZX09QKCBeLCAiRXhjbHVzaXZlIE9SIiApCi1NT19CSU5BUllfT1AoIF49LCAiRXhjbHVzaXZlIE9SL2Fzc2lnbm1lbnQiICkKLU1PX0JJTkFSWV9PUCggfCwgIkJpdHdpc2UgaW5jbHVzaXZlIE9SIiApCi1NT19CSU5BUllfT1AoIHw9LCAiQml0d2lzZSBpbmNsdXNpdmUgT1IvYXNzaWdubWVudCIgKQotTU9fQklOQVJZX0JPT0xfT1AoIHx8LCAiTG9naWNhbCBPUiIgKQotCi1NT19CSU5BUllfT1AoIDw8LCAiTGVmdCBzaGlmdCIgKQotTU9fQklOQVJZX09QKCA+PiwgIlJpZ2h0IHNoaWZ0IiApCi0KLX0gLy8gbmFtZXNwYWNlIGl0ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9NT0NLX09CSkVDVF9IUFBfMTEyMjA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3Qvb3V0cHV0L2NvbXBpbGVyX2xvZ19mb3JtYXR0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L291dHB1dC9jb21waWxlcl9sb2dfZm9ybWF0dGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQxZGYwNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3Qvb3V0cHV0L2NvbXBpbGVyX2xvZ19mb3JtYXR0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU3OTkyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBjb250YWlucyBjb21waWxlciBsaWtlIExvZyBmb3JtYXR0ZXIgZGVmaW5pdGlvbgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9DT01QSUxFUl9MT0dfRk9STUFUVEVSX0hQUF8wMjAxMDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9DT01QSUxFUl9MT0dfRk9STUFUVEVSX0hQUF8wMjAxMDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2dsb2JhbF90eXBlZGVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9sb2dfZm9ybWF0dGVyLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLW5hbWVzcGFjZSBvdXRwdXQgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgY29tcGlsZXJfbG9nX2Zvcm1hdHRlciAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIE5ETkJPT1NUX1RFU1RfREVDTCBjb21waWxlcl9sb2dfZm9ybWF0dGVyIDogcHVibGljIHVuaXRfdGVzdF9sb2dfZm9ybWF0dGVyIHsKLXB1YmxpYzoKLSAgICAvLyBGb3JtYXR0ZXIgaW50ZXJmYWNlCi0gICAgdm9pZCAgICBsb2dfc3RhcnQoIHN0ZDo6b3N0cmVhbSYsIGNvdW50ZXJfdCB0ZXN0X2Nhc2VzX2Ftb3VudCApOwotICAgIHZvaWQgICAgbG9nX2ZpbmlzaCggc3RkOjpvc3RyZWFtJiApOwotICAgIHZvaWQgICAgbG9nX2J1aWxkX2luZm8oIHN0ZDo6b3N0cmVhbSYgKTsKLQotICAgIHZvaWQgICAgdGVzdF91bml0X3N0YXJ0KCBzdGQ6Om9zdHJlYW0mLCB0ZXN0X3VuaXQgY29uc3QmIHR1ICk7Ci0gICAgdm9pZCAgICB0ZXN0X3VuaXRfZmluaXNoKCBzdGQ6Om9zdHJlYW0mLCB0ZXN0X3VuaXQgY29uc3QmIHR1LCB1bnNpZ25lZCBsb25nIGVsYXBzZWQgKTsKLSAgICB2b2lkICAgIHRlc3RfdW5pdF9za2lwcGVkKCBzdGQ6Om9zdHJlYW0mLCB0ZXN0X3VuaXQgY29uc3QmIHR1ICk7Ci0KLSAgICB2b2lkICAgIGxvZ19leGNlcHRpb24oIHN0ZDo6b3N0cmVhbSYsIGxvZ19jaGVja3BvaW50X2RhdGEgY29uc3QmLCBleGVjdXRpb25fZXhjZXB0aW9uIGNvbnN0JiBleCApOwotCi0gICAgdm9pZCAgICBsb2dfZW50cnlfc3RhcnQoIHN0ZDo6b3N0cmVhbSYsIGxvZ19lbnRyeV9kYXRhIGNvbnN0JiwgbG9nX2VudHJ5X3R5cGVzIGxldCApOwotICAgIHZvaWQgICAgbG9nX2VudHJ5X3ZhbHVlKCBzdGQ6Om9zdHJlYW0mLCBjb25zdF9zdHJpbmcgdmFsdWUgKTsKLSAgICB2b2lkICAgIGxvZ19lbnRyeV92YWx1ZSggc3RkOjpvc3RyZWFtJiwgbGF6eV9vc3RyZWFtIGNvbnN0JiB2YWx1ZSApOwotICAgIHZvaWQgICAgbG9nX2VudHJ5X2ZpbmlzaCggc3RkOjpvc3RyZWFtJiApOwotCi1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkICAgIHByaW50X3ByZWZpeCggc3RkOjpvc3RyZWFtJiwgY29uc3Rfc3RyaW5nIGZpbGUsIHN0ZDo6c2l6ZV90IGxpbmUgKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIG91dHB1dAotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX0NPTVBJTEVSX0xPR19GT1JNQVRURVJfSFBQXzAyMDEwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L291dHB1dC9wbGFpbl9yZXBvcnRfZm9ybWF0dGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9vdXRwdXQvcGxhaW5fcmVwb3J0X2Zvcm1hdHRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5MDdjM2YuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L291dHB1dC9wbGFpbl9yZXBvcnRfZm9ybWF0dGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogcGxhaW4gcmVwb3J0IGZvcm1hdHRlciBpbXBsZW1lbnRhdGlvbgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9QTEFJTl9SRVBPUlRfRk9STUFUVEVSX0hQUF8wMjAxMDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9QTEFJTl9SRVBPUlRfRk9STUFUVEVSX0hQUF8wMjAxMDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2dsb2JhbF90eXBlZGVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3Jlc3VsdHNfcmVwb3J0ZXIuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotbmFtZXNwYWNlIG91dHB1dCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICBwbGFpbl9yZXBvcnRfZm9ybWF0dGVyICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgcGxhaW5fcmVwb3J0X2Zvcm1hdHRlciA6IHB1YmxpYyByZXN1bHRzX3JlcG9ydGVyOjpmb3JtYXQgewotcHVibGljOgotICAgIC8vIEZvcm1hdHRlciBpbnRlcmZhY2UKLSAgICB2b2lkICAgIHJlc3VsdHNfcmVwb3J0X3N0YXJ0KCBzdGQ6Om9zdHJlYW0mIG9zdHIgKTsKLSAgICB2b2lkICAgIHJlc3VsdHNfcmVwb3J0X2ZpbmlzaCggc3RkOjpvc3RyZWFtJiBvc3RyICk7Ci0KLSAgICB2b2lkICAgIHRlc3RfdW5pdF9yZXBvcnRfc3RhcnQoIHRlc3RfdW5pdCBjb25zdCYsIHN0ZDo6b3N0cmVhbSYgb3N0ciApOwotICAgIHZvaWQgICAgdGVzdF91bml0X3JlcG9ydF9maW5pc2goIHRlc3RfdW5pdCBjb25zdCYsIHN0ZDo6b3N0cmVhbSYgb3N0ciApOwotCi0gICAgdm9pZCAgICBkb19jb25maXJtYXRpb25fcmVwb3J0KCB0ZXN0X3VuaXQgY29uc3QmLCBzdGQ6Om9zdHJlYW0mIG9zdHIgKTsKLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBjb3VudGVyX3QgbV9pbmRlbnQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBvdXRwdXQKLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9QTEFJTl9SRVBPUlRfRk9STUFUVEVSX0hQUF8wMjAxMDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9vdXRwdXQveG1sX2xvZ19mb3JtYXR0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L291dHB1dC94bWxfbG9nX2Zvcm1hdHRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlNTQ4YWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L291dHB1dC94bWxfbG9nX2Zvcm1hdHRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTc5OTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGNvbnRhaW5zIFhNTCBMb2cgZm9ybWF0dGVyIGRlZmluaXRpb24KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfWE1MX0xPR19GT1JNQVRURVJfMDIwMTA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfWE1MX0xPR19GT1JNQVRURVJfMDIwMTA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9nbG9iYWxfdHlwZWRlZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91bml0X3Rlc3RfbG9nX2Zvcm1hdHRlci5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPGNzdGRkZWY+IC8vIHN0ZDo6c2l6ZV90Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi1uYW1lc3BhY2Ugb3V0cHV0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgeG1sX2xvZ19mb3JtYXR0ZXIgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyB4bWxfbG9nX2Zvcm1hdHRlciA6IHB1YmxpYyB1bml0X3Rlc3RfbG9nX2Zvcm1hdHRlciB7Ci1wdWJsaWM6Ci0gICAgLy8gRm9ybWF0dGVyIGludGVyZmFjZQotICAgIHZvaWQgICAgbG9nX3N0YXJ0KCBzdGQ6Om9zdHJlYW0mLCBjb3VudGVyX3QgdGVzdF9jYXNlc19hbW91bnQgKTsKLSAgICB2b2lkICAgIGxvZ19maW5pc2goIHN0ZDo6b3N0cmVhbSYgKTsKLSAgICB2b2lkICAgIGxvZ19idWlsZF9pbmZvKCBzdGQ6Om9zdHJlYW0mICk7Ci0KLSAgICB2b2lkICAgIHRlc3RfdW5pdF9zdGFydCggc3RkOjpvc3RyZWFtJiwgdGVzdF91bml0IGNvbnN0JiB0dSApOwotICAgIHZvaWQgICAgdGVzdF91bml0X2ZpbmlzaCggc3RkOjpvc3RyZWFtJiwgdGVzdF91bml0IGNvbnN0JiB0dSwgdW5zaWduZWQgbG9uZyBlbGFwc2VkICk7Ci0gICAgdm9pZCAgICB0ZXN0X3VuaXRfc2tpcHBlZCggc3RkOjpvc3RyZWFtJiwgdGVzdF91bml0IGNvbnN0JiB0dSApOwotCi0gICAgdm9pZCAgICBsb2dfZXhjZXB0aW9uKCBzdGQ6Om9zdHJlYW0mLCBsb2dfY2hlY2twb2ludF9kYXRhIGNvbnN0JiwgZXhlY3V0aW9uX2V4Y2VwdGlvbiBjb25zdCYgZXggKTsKLQotICAgIHZvaWQgICAgbG9nX2VudHJ5X3N0YXJ0KCBzdGQ6Om9zdHJlYW0mLCBsb2dfZW50cnlfZGF0YSBjb25zdCYsIGxvZ19lbnRyeV90eXBlcyBsZXQgKTsKLSAgICB1c2luZyAgIHVuaXRfdGVzdF9sb2dfZm9ybWF0dGVyOjpsb2dfZW50cnlfdmFsdWU7IC8vIGJyaW5nIGJhc2UgY2xhc3MgZnVuY3Rpb25zIGludG8gb3ZlcmxvYWQgc2V0Ci0gICAgdm9pZCAgICBsb2dfZW50cnlfdmFsdWUoIHN0ZDo6b3N0cmVhbSYsIGNvbnN0X3N0cmluZyB2YWx1ZSApOwotICAgIHZvaWQgICAgbG9nX2VudHJ5X2ZpbmlzaCggc3RkOjpvc3RyZWFtJiApOwotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIGNvbnN0X3N0cmluZyAgICBtX2N1cnJfdGFnOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ugb3V0cHV0Ci0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfWE1MX0xPR19GT1JNQVRURVJfMDIwMTA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3Qvb3V0cHV0L3htbF9yZXBvcnRfZm9ybWF0dGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9vdXRwdXQveG1sX3JlcG9ydF9mb3JtYXR0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1N2YwMmMwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9vdXRwdXQveG1sX3JlcG9ydF9mb3JtYXR0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBYTUwgcmVwb3J0IGZvcm1hdHRlciBpbXBsZW1lbnRhdGlvbgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9YTUxfUkVQT1JUX0ZPUk1BVFRFUl9IUFBfMDIwMTA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfWE1MX1JFUE9SVF9GT1JNQVRURVJfSFBQXzAyMDEwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZ2xvYmFsX3R5cGVkZWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvcmVzdWx0c19yZXBvcnRlci5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi1uYW1lc3BhY2Ugb3V0cHV0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICB4bWxfcmVwb3J0X2Zvcm1hdHRlciAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyB4bWxfcmVwb3J0X2Zvcm1hdHRlciA6IHB1YmxpYyByZXN1bHRzX3JlcG9ydGVyOjpmb3JtYXQgewotcHVibGljOgotICAgIC8vIEZvcm1hdHRlciBpbnRlcmZhY2UKLSAgICB2b2lkICAgIHJlc3VsdHNfcmVwb3J0X3N0YXJ0KCBzdGQ6Om9zdHJlYW0mIG9zdHIgKTsKLSAgICB2b2lkICAgIHJlc3VsdHNfcmVwb3J0X2ZpbmlzaCggc3RkOjpvc3RyZWFtJiBvc3RyICk7Ci0KLSAgICB2b2lkICAgIHRlc3RfdW5pdF9yZXBvcnRfc3RhcnQoIHRlc3RfdW5pdCBjb25zdCYsIHN0ZDo6b3N0cmVhbSYgb3N0ciApOwotICAgIHZvaWQgICAgdGVzdF91bml0X3JlcG9ydF9maW5pc2goIHRlc3RfdW5pdCBjb25zdCYsIHN0ZDo6b3N0cmVhbSYgb3N0ciApOwotCi0gICAgdm9pZCAgICBkb19jb25maXJtYXRpb25fcmVwb3J0KCB0ZXN0X3VuaXQgY29uc3QmLCBzdGQ6Om9zdHJlYW0mIG9zdHIgKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIG91dHB1dAotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1hNTF9SRVBPUlRfRk9STUFUVEVSX0hQUF8wMjAxMDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9vdXRwdXRfdGVzdF9zdHJlYW0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L291dHB1dF90ZXN0X3N0cmVhbS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmMGFiMDIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L291dHB1dF90ZXN0X3N0cmVhbS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDAxLTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IG91dHB1dF90ZXN0X3N0cmVhbSBjbGFzcyBkZWZpbml0aW9uCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX09VVFBVVF9URVNUX1NUUkVBTV9IUFBfMDEyNzA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfT1VUUFVUX1RFU1RfU1RSRUFNX0hQUF8wMTI3MDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2dsb2JhbF90eXBlZGVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3dyYXBfc3RyaW5nc3RyZWFtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3ByZWRpY2F0ZV9yZXN1bHQuaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxjc3RkZGVmPiAgICAgICAgICAvLyBmb3Igc3RkOjpzaXplX3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgb3V0cHV0X3Rlc3Rfc3RyZWFtICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0vLyBjbGFzcyB0byBiZSB1c2VkIHRvIHNpbXBsaWZ5IHRlc3Rpbmcgb2Ygb3N0cmVhbS1iYXNlZCBvdXRwdXQgb3BlcmF0aW9ucwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdGVzdF90b29scyB7Ci0KLWNsYXNzIE5ETkJPT1NUX1RFU1RfREVDTCBvdXRwdXRfdGVzdF9zdHJlYW0gOiBwdWJsaWMgd3JhcF9zdHJpbmdzdHJlYW06OndyYXBwZWRfc3RyZWFtIHsKLSAgICB0eXBlZGVmIHVuaXRfdGVzdDo6Y29uc3Rfc3RyaW5nIGNvbnN0X3N0cmluZzsKLSAgICB0eXBlZGVmIHByZWRpY2F0ZV9yZXN1bHQgICAgICAgIHJlc3VsdF90eXBlOwotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgZXhwbGljaXQgICAgICAgIG91dHB1dF90ZXN0X3N0cmVhbSggY29uc3Rfc3RyaW5nICAgIHBhdHRlcm5fZmlsZV9uYW1lID0gY29uc3Rfc3RyaW5nKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAgICAgICAgICAgIG1hdGNoX29yX3NhdmUgICAgID0gdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sICAgICAgICAgICAgdGV4dF9vcl9iaW5hcnkgICAgPSB0cnVlICk7Ci0KLSAgICAvLyBEZXN0cnVjdG9yCi0gICAgfm91dHB1dF90ZXN0X3N0cmVhbSgpOwotCi0gICAgLy8gY2hlY2tpbmcgZnVuY3Rpb24KLSAgICByZXN1bHRfdHlwZSAgICAgaXNfZW1wdHkoIGJvb2wgZmx1c2hfc3RyZWFtID0gdHJ1ZSApOwotICAgIHJlc3VsdF90eXBlICAgICBjaGVja19sZW5ndGgoIHN0ZDo6c2l6ZV90IGxlbmd0aCwgYm9vbCBmbHVzaF9zdHJlYW0gPSB0cnVlICk7Ci0gICAgcmVzdWx0X3R5cGUgICAgIGlzX2VxdWFsKCBjb25zdF9zdHJpbmcgYXJnXywgYm9vbCBmbHVzaF9zdHJlYW0gPSB0cnVlICk7Ci0gICAgcmVzdWx0X3R5cGUgICAgIG1hdGNoX3BhdHRlcm4oIGJvb2wgZmx1c2hfc3RyZWFtID0gdHJ1ZSApOwotCi0gICAgLy8gZXhwbGljaXQgZmx1c2gKLSAgICB2b2lkICAgICAgICAgICAgZmx1c2goKTsKLQotcHJpdmF0ZToKLSAgICAvLyBoZWxwZXIgZnVuY3Rpb25zCi0gICAgc3RkOjpzaXplX3QgICAgIGxlbmd0aCgpOwotICAgIHZvaWQgICAgICAgICAgICBzeW5jKCk7Ci0KLSAgICBzdHJ1Y3QgSW1wbDsKLSAgICBJbXBsKiAgICAgICAgICAgbV9waW1wbDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIHRlc3RfdG9vbHMKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX09VVFBVVF9URVNUX1NUUkVBTV9IUFBfMDEyNzA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvcHJlZGljYXRlX3Jlc3VsdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvcHJlZGljYXRlX3Jlc3VsdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzMmI2ODkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3ByZWRpY2F0ZV9yZXN1bHQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwMS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBlbmhhbmNlZCByZXN1bHQgZm9yIHRlc3QgcHJlZGljYXRlIHRoYXQgaW5jbHVkZSBtZXNzYWdlIGV4cGxhaW5pbmcgZmFpbHVyZQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9QUkVESUNBVEVfUkVTVUxUX0hQUF8wMTI3MDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9QUkVESUNBVEVfUkVTVUxUX0hQUF8wMTI3MDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvY2xhc3NfcHJvcGVydGllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy93cmFwX3N0cmluZ3N0cmVhbS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2Jhc2ljX2NzdHJpbmcuaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L3NoYXJlZF9wdHIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8Y3N0ZGRlZj4gICAgICAgICAgLy8gZm9yIHN0ZDo6c2l6ZV90Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB0ZXN0X3Rvb2xzIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgIHByZWRpY2F0ZV9yZXN1bHQgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBORE5CT09TVF9URVNUX0RFQ0wgcHJlZGljYXRlX3Jlc3VsdCB7Ci0gICAgdHlwZWRlZiB1bml0X3Rlc3Q6OmNvbnN0X3N0cmluZyAgICAgIGNvbnN0X3N0cmluZzsKLSAgICBzdHJ1Y3QgZHVtbXkgeyB2b2lkIG5vbm51bGwoKSB7fTsgfTsKLSAgICB0eXBlZGVmIHZvaWQgKGR1bW15Ojoqc2FmZV9ib29sKSgpOwotCi1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBwcmVkaWNhdGVfcmVzdWx0KCBib29sIHB2XyApIAotICAgIDogcF9wcmVkaWNhdGVfdmFsdWUoIHB2XyApCi0gICAge30KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJvb2xDb252ZXJ0YWJsZT4KLSAgICBwcmVkaWNhdGVfcmVzdWx0KCBCb29sQ29udmVydGFibGUgY29uc3QmIHB2XyApIDogcF9wcmVkaWNhdGVfdmFsdWUoICEhcHZfICkge30KLQotICAgIC8vIEFjY2VzcyBtZXRob2RzCi0gICAgYm9vbCAgICAgICAgICAgICAgICBvcGVyYXRvciEoKSBjb25zdCAgICAgICAgICAgeyByZXR1cm4gIXBfcHJlZGljYXRlX3ZhbHVlOyB9Ci0gICAgdm9pZCAgICAgICAgICAgICAgICBvcGVyYXRvcj0oIGJvb2wgcHZfICkgICAgICAgeyBwX3ByZWRpY2F0ZV92YWx1ZS52YWx1ZSA9IHB2XzsgfQotICAgIG9wZXJhdG9yICAgICAgICAgICAgc2FmZV9ib29sKCkgY29uc3QgICAgICAgICAgIHsgcmV0dXJuICEhcF9wcmVkaWNhdGVfdmFsdWUgPyAmZHVtbXk6Om5vbm51bGwgOiAwOyB9Ci0KLSAgICAvLyBQdWJsaWMgcHJvcGVydGllcwotICAgIE5ETkJPT1NUX1JFQURPTkxZX1BST1BFUlRZKCBib29sLCAocHJlZGljYXRlX3Jlc3VsdCkgKSBwX3ByZWRpY2F0ZV92YWx1ZTsKLQotICAgIC8vIEFjY2VzcyBtZXRob2RzCi0gICAgYm9vbCAgICAgICAgICAgICAgICBoYXNfZW1wdHlfbWVzc2FnZSgpIGNvbnN0ICAgeyByZXR1cm4gIW1fbWVzc2FnZTsgfQotICAgIHdyYXBfc3RyaW5nc3RyZWFtJiAgbWVzc2FnZSgpCi0gICAgewotICAgICAgICBpZiggIW1fbWVzc2FnZSApCi0gICAgICAgICAgICBtX21lc3NhZ2UucmVzZXQoIG5ldyB3cmFwX3N0cmluZ3N0cmVhbSApOwotCi0gICAgICAgIHJldHVybiAqbV9tZXNzYWdlOwotICAgIH0KLSAgICBjb25zdF9zdHJpbmcgICAgICAgIG1lc3NhZ2UoKSBjb25zdCAgICAgICAgICAgICAgICAgICB7IHJldHVybiAhbV9tZXNzYWdlID8gY29uc3Rfc3RyaW5nKCkgOiBjb25zdF9zdHJpbmcoIG1fbWVzc2FnZS0+c3RyKCkgKTsgfQotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIHNoYXJlZF9wdHI8d3JhcF9zdHJpbmdzdHJlYW0+IG1fbWVzc2FnZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIHRlc3RfdG9vbHMKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1BSRURJQ0FURV9SRVNVTFRfSFBQXzAxMjcwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3Byb2dyZXNzX21vbml0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3Byb2dyZXNzX21vbml0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZjJjNDg5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9wcm9ncmVzc19tb25pdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZGVmaW5lcyBzaW1wbGUgdGV4dCBiYXNlZCBwcm9ncmVzcyBtb25pdG9yCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX1BST0dSRVNTX01PTklUT1JfSFBQXzAyMDEwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1BST0dSRVNTX01PTklUT1JfSFBQXzAyMDEwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC90ZXN0X29ic2VydmVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3RyaXZpYWxfc2luZ2xldG9uLmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8aW9zZndkPiAgIC8vIGZvciBzdGQ6Om9zdHJlYW0mCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgcHJvZ3Jlc3NfbW9uaXRvciAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIE5ETkJPT1NUX1RFU1RfREVDTCBwcm9ncmVzc19tb25pdG9yX3QgOiBwdWJsaWMgdGVzdF9vYnNlcnZlciwgcHVibGljIHNpbmdsZXRvbjxwcm9ncmVzc19tb25pdG9yX3Q+IHsKLXB1YmxpYzoKLSAgICAvLyB0ZXN0IG9ic2VydmVyIGludGVyZmFjZQotICAgIHZvaWQgICAgdGVzdF9zdGFydCggY291bnRlcl90IHRlc3RfY2FzZXNfYW1vdW50ICk7Ci0gICAgdm9pZCAgICB0ZXN0X2ZpbmlzaCgpIHt9Ci0gICAgdm9pZCAgICB0ZXN0X2Fib3J0ZWQoKTsKLQotICAgIHZvaWQgICAgdGVzdF91bml0X3N0YXJ0KCB0ZXN0X3VuaXQgY29uc3QmICkge30KLSAgICB2b2lkICAgIHRlc3RfdW5pdF9maW5pc2goIHRlc3RfdW5pdCBjb25zdCYsIHVuc2lnbmVkIGxvbmcgKTsKLSAgICB2b2lkICAgIHRlc3RfdW5pdF9za2lwcGVkKCB0ZXN0X3VuaXQgY29uc3QmICk7Ci0gICAgdm9pZCAgICB0ZXN0X3VuaXRfYWJvcnRlZCggdGVzdF91bml0IGNvbnN0JiApIHt9Ci0KLSAgICB2b2lkICAgIGFzc2VydGlvbl9yZXN1bHQoIGJvb2wgKSB7fQotICAgIHZvaWQgICAgZXhjZXB0aW9uX2NhdWdodCggZXhlY3V0aW9uX2V4Y2VwdGlvbiBjb25zdCYgKSB7fQotCi0gICAgLy8gY29uZmlndXJhdGlvbgotICAgIHZvaWQgICAgc2V0X3N0cmVhbSggc3RkOjpvc3RyZWFtJiApOwotCi1wcml2YXRlOgotICAgIE5ETkJPT1NUX1RFU1RfU0lOR0xFVE9OX0NPTlMoIHByb2dyZXNzX21vbml0b3JfdCApOwotfTsgLy8gcHJvZ3Jlc3NfbW9uaXRvcl90Ci0KLU5ETkJPT1NUX1RFU1RfU0lOR0xFVE9OX0lOU1QoIHByb2dyZXNzX21vbml0b3IgKQotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1BST0dSRVNTX01PTklUT1JfSFBQXzAyMDEwNUdFUgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvcmVzdWx0c19jb2xsZWN0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3Jlc3VsdHNfY29sbGVjdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2ZkY2NmYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvcmVzdWx0c19jb2xsZWN0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDEtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZGVmaW5lcyBjbGFzcyB1bml0X3Rlc3RfcmVzdWx0IHRoYXQgaXMgcmVzcG9uc2libGUgZm9yIAotLy8gIGdhdGhlcmluZyB0ZXN0IHJlc3VsdHMgYW5kIHByZXNlbnRpbmcgdGhpcyBpbmZvcm1hdGlvbiB0byBlbmQtdXNlcgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9SRVNVTFRTX0NPTExFQ1RPUl9IUFBfMDcxODk0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfUkVTVUxUU19DT0xMRUNUT1JfSFBQXzA3MTg5NEdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC90ZXN0X29ic2VydmVyLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2dsb2JhbF90eXBlZGVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9md2RfZGVjbC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3RyaXZpYWxfc2luZ2xldG9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2NsYXNzX3Byb3BlcnRpZXMuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgZmlyc3QgZmFpbGVkIGFzc2VydGlvbiBkZWJ1Z2dlciBob29rICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgewotaW5saW5lIHZvaWQgZmlyc3RfZmFpbGVkX2Fzc2VydGlvbigpIHt9Ci19Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgdGVzdF9yZXN1bHRzICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgTkROQk9PU1RfVEVTVF9ERUNMIHRlc3RfcmVzdWx0cyB7Ci1wdWJsaWM6Ci0gICAgdGVzdF9yZXN1bHRzKCk7Ci0KLSAgICB0eXBlZGVmIE5ETkJPT1NUX1JFQURPTkxZX1BST1BFUlRZKCBjb3VudGVyX3QsIChyZXN1bHRzX2NvbGxlY3Rvcl90KSh0ZXN0X3Jlc3VsdHMpKHJlc3VsdHNfY29sbGVjdF9oZWxwZXIpICkgY291bnRlcl9wcm9wOwotICAgIHR5cGVkZWYgTkROQk9PU1RfUkVBRE9OTFlfUFJPUEVSVFkoIGJvb2wsICAgICAgKHJlc3VsdHNfY29sbGVjdG9yX3QpKHRlc3RfcmVzdWx0cykocmVzdWx0c19jb2xsZWN0X2hlbHBlcikgKSBib29sX3Byb3A7Ci0KLSAgICBjb3VudGVyX3Byb3AgICAgcF9hc3NlcnRpb25zX3Bhc3NlZDsKLSAgICBjb3VudGVyX3Byb3AgICAgcF9hc3NlcnRpb25zX2ZhaWxlZDsKLSAgICBjb3VudGVyX3Byb3AgICAgcF9leHBlY3RlZF9mYWlsdXJlczsKLSAgICBjb3VudGVyX3Byb3AgICAgcF90ZXN0X2Nhc2VzX3Bhc3NlZDsKLSAgICBjb3VudGVyX3Byb3AgICAgcF90ZXN0X2Nhc2VzX2ZhaWxlZDsKLSAgICBjb3VudGVyX3Byb3AgICAgcF90ZXN0X2Nhc2VzX3NraXBwZWQ7Ci0gICAgY291bnRlcl9wcm9wICAgIHBfdGVzdF9jYXNlc19hYm9ydGVkOwotICAgIGJvb2xfcHJvcCAgICAgICBwX2Fib3J0ZWQ7Ci0gICAgYm9vbF9wcm9wICAgICAgIHBfc2tpcHBlZDsKLQotICAgIC8vICJjb25jbHVzaW9uIiBtZXRob2RzCi0gICAgYm9vbCAgICAgICAgICAgIHBhc3NlZCgpIGNvbnN0OwotICAgIGludCAgICAgICAgICAgICByZXN1bHRfY29kZSgpIGNvbnN0OwotCi0gICAgLy8gY29sbGVjdGlvbiBoZWxwZXIKLSAgICB2b2lkICAgICAgICAgICAgb3BlcmF0b3IrPSggdGVzdF9yZXN1bHRzIGNvbnN0JiApOwotCi0gICAgdm9pZCAgICAgICAgICAgIGNsZWFyKCk7Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICByZXN1bHRzX2NvbGxlY3RvciAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIE5ETkJPT1NUX1RFU1RfREVDTCByZXN1bHRzX2NvbGxlY3Rvcl90IDogcHVibGljIHRlc3Rfb2JzZXJ2ZXIsIHB1YmxpYyBzaW5nbGV0b248cmVzdWx0c19jb2xsZWN0b3JfdD4gewotcHVibGljOgotICAgIC8vIHRlc3Rfb2JzZXJ2ZXIgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uCi0gICAgdm9pZCAgICAgICAgICAgICAgICB0ZXN0X3N0YXJ0KCBjb3VudGVyX3QgdGVzdF9jYXNlc19hbW91bnQgKTsKLSAgICB2b2lkICAgICAgICAgICAgICAgIHRlc3RfZmluaXNoKCk7Ci0gICAgdm9pZCAgICAgICAgICAgICAgICB0ZXN0X2Fib3J0ZWQoKTsKLQotICAgIHZvaWQgICAgICAgICAgICAgICAgdGVzdF91bml0X3N0YXJ0KCB0ZXN0X3VuaXQgY29uc3QmICk7Ci0gICAgdm9pZCAgICAgICAgICAgICAgICB0ZXN0X3VuaXRfZmluaXNoKCB0ZXN0X3VuaXQgY29uc3QmLCB1bnNpZ25lZCBsb25nIGVsYXBzZWQgKTsKLSAgICB2b2lkICAgICAgICAgICAgICAgIHRlc3RfdW5pdF9za2lwcGVkKCB0ZXN0X3VuaXQgY29uc3QmICk7Ci0gICAgdm9pZCAgICAgICAgICAgICAgICB0ZXN0X3VuaXRfYWJvcnRlZCggdGVzdF91bml0IGNvbnN0JiApOwotCi0gICAgdm9pZCAgICAgICAgICAgICAgICBhc3NlcnRpb25fcmVzdWx0KCBib29sIHBhc3NlZCApOwotICAgIHZvaWQgICAgICAgICAgICAgICAgZXhjZXB0aW9uX2NhdWdodCggZXhlY3V0aW9uX2V4Y2VwdGlvbiBjb25zdCYgKTsKLQotICAgIC8vIHJlc3VsdHMgYWNjZXNzCi0gICAgdGVzdF9yZXN1bHRzIGNvbnN0JiByZXN1bHRzKCB0ZXN0X3VuaXRfaWQgKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBORE5CT09TVF9URVNUX1NJTkdMRVRPTl9DT05TKCByZXN1bHRzX2NvbGxlY3Rvcl90ICk7Ci19OwotCi1ORE5CT09TVF9URVNUX1NJTkdMRVRPTl9JTlNUKCByZXN1bHRzX2NvbGxlY3RvciApCi0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfUkVTVUxUU19DT0xMRUNUT1JfSFBQXzA3MTg5NEdFUgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvcmVzdWx0c19yZXBvcnRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvcmVzdWx0c19yZXBvcnRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2YjllYzMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3Jlc3VsdHNfcmVwb3J0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwMS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBkZWZpbmVzIGNsYXNzIHVuaXRfdGVzdF9yZXN1bHQgdGhhdCBpcyByZXNwb25zaWJsZSBmb3IgCi0vLyAgZ2F0aGVyaW5nIHRlc3QgcmVzdWx0cyBhbmQgcHJlc2VudGluZyB0aGlzIGluZm9ybWF0aW9uIHRvIGVuZC11c2VyCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX1JFU1VMVFNfUkVQT1JURVJfSFBQXzAyMTIwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1JFU1VMVFNfUkVQT1JURVJfSFBQXzAyMTIwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZ2xvYmFsX3R5cGVkZWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2Z3ZF9kZWNsLmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8aW9zZndkPiAgIC8vIGZvciBzdGQ6Om9zdHJlYW0mCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi1uYW1lc3BhY2UgcmVzdWx0c19yZXBvcnRlciB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgZm9ybWF0dGVyIGludGVyZmFjZSAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgTkROQk9PU1RfVEVTVF9ERUNMIGZvcm1hdCB7Ci1wdWJsaWM6Ci0gICAgLy8gRGVzdHJ1Y3RvcgotICAgIHZpcnR1YWwgfmZvcm1hdCgpIHt9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgICAgcmVzdWx0c19yZXBvcnRfc3RhcnQoIHN0ZDo6b3N0cmVhbSYgb3N0ciApID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgICAgcmVzdWx0c19yZXBvcnRfZmluaXNoKCBzdGQ6Om9zdHJlYW0mIG9zdHIgKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgICAgdGVzdF91bml0X3JlcG9ydF9zdGFydCggdGVzdF91bml0IGNvbnN0Jiwgc3RkOjpvc3RyZWFtJiBvc3RyICkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCAgICB0ZXN0X3VuaXRfcmVwb3J0X2ZpbmlzaCggdGVzdF91bml0IGNvbnN0Jiwgc3RkOjpvc3RyZWFtJiBvc3RyICkgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkICAgIGRvX2NvbmZpcm1hdGlvbl9yZXBvcnQoIHRlc3RfdW5pdCBjb25zdCYsIHN0ZDo6b3N0cmVhbSYgb3N0ciApID0gMDsKLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgcmVwb3J0IGNvbmZpZ3VyYXRpb24gICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotTkROQk9PU1RfVEVTVF9ERUNMIHZvaWQgICAgc2V0X2xldmVsKCByZXBvcnRfbGV2ZWwgKTsKLU5ETkJPT1NUX1RFU1RfREVDTCB2b2lkICAgIHNldF9zdHJlYW0oIHN0ZDo6b3N0cmVhbSYgKTsKLU5ETkJPT1NUX1RFU1RfREVDTCB2b2lkICAgIHNldF9mb3JtYXQoIG91dHB1dF9mb3JtYXQgKTsKLU5ETkJPT1NUX1RFU1RfREVDTCB2b2lkICAgIHNldF9mb3JtYXQoIHJlc3VsdHNfcmVwb3J0ZXI6OmZvcm1hdCogKTsKLQotTkROQk9PU1RfVEVTVF9ERUNMIHN0ZDo6b3N0cmVhbSYgZ2V0X3N0cmVhbSgpOwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICByZXBvcnQgaW5pdGlhdGlvbiAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLU5ETkJPT1NUX1RFU1RfREVDTCB2b2lkICAgIG1ha2VfcmVwb3J0KCByZXBvcnRfbGV2ZWwgbCA9IElOVl9SRVBPUlRfTEVWRUwsIHRlc3RfdW5pdF9pZCA9IElOVl9URVNUX1VOSVRfSUQgKTsKLWlubGluZSB2b2lkICAgICAgICAgICAgIGNvbmZpcm1hdGlvbl9yZXBvcnQoIHRlc3RfdW5pdF9pZCBpZCA9IElOVl9URVNUX1VOSVRfSUQgKSAgIAoteyBtYWtlX3JlcG9ydCggQ09ORklSTUFUSU9OX1JFUE9SVCwgaWQgKTsgfQotaW5saW5lIHZvaWQgICAgICAgICAgICAgc2hvcnRfcmVwb3J0KCB0ZXN0X3VuaXRfaWQgaWQgPSBJTlZfVEVTVF9VTklUX0lEICkKLXsgbWFrZV9yZXBvcnQoIFNIT1JUX1JFUE9SVCwgaWQgKTsgfQotaW5saW5lIHZvaWQgICAgICAgICAgICAgZGV0YWlsZWRfcmVwb3J0KCB0ZXN0X3VuaXRfaWQgaWQgPSBJTlZfVEVTVF9VTklUX0lEICkKLXsgbWFrZV9yZXBvcnQoIERFVEFJTEVEX1JFUE9SVCwgaWQgKTsgfQotCi19IC8vIG5hbWVzcGFjZSByZXN1bHRzX3JlcG9ydGVyCi0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfUkVTVUxUU19SRVBPUlRFUl9IUFBfMDIxMjA1R0VSCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC90ZXN0X29ic2VydmVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC90ZXN0X29ic2VydmVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzc1N2E5Mi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdGVzdF9vYnNlcnZlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGRlZmluZXMgYWJzdHJhY3QgaW50ZXJmYWNlIGZvciB0ZXN0IG9ic2VydmVyCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX1RFU1RfT0JTRVJWRVJfSFBQXzAyMTAwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1RFU1RfT0JTRVJWRVJfSFBQXzAyMTAwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZndkX2RlY2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2dsb2JhbF90eXBlZGVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9jb25maWcuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICB0ZXN0X29ic2VydmVyICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBORE5CT09TVF9URVNUX0RFQ0wgdGVzdF9vYnNlcnZlciB7Ci1wdWJsaWM6Ci0gICAgLy8gdGVzdCBvYnNlcnZlciBpbnRlcmZhY2UKLSAgICB2aXJ0dWFsIHZvaWQgICAgdGVzdF9zdGFydCggY291bnRlcl90IC8qIHRlc3RfY2FzZXNfYW1vdW50ICovICkge30KLSAgICB2aXJ0dWFsIHZvaWQgICAgdGVzdF9maW5pc2goKSB7fQotICAgIHZpcnR1YWwgdm9pZCAgICB0ZXN0X2Fib3J0ZWQoKSB7fQotCi0gICAgdmlydHVhbCB2b2lkICAgIHRlc3RfdW5pdF9zdGFydCggdGVzdF91bml0IGNvbnN0JiApIHt9Ci0gICAgdmlydHVhbCB2b2lkICAgIHRlc3RfdW5pdF9maW5pc2goIHRlc3RfdW5pdCBjb25zdCYsIHVuc2lnbmVkIGxvbmcgLyogZWxhcHNlZCAqLyApIHt9Ci0gICAgdmlydHVhbCB2b2lkICAgIHRlc3RfdW5pdF9za2lwcGVkKCB0ZXN0X3VuaXQgY29uc3QmICkge30KLSAgICB2aXJ0dWFsIHZvaWQgICAgdGVzdF91bml0X2Fib3J0ZWQoIHRlc3RfdW5pdCBjb25zdCYgKSB7fQotCi0gICAgdmlydHVhbCB2b2lkICAgIGFzc2VydGlvbl9yZXN1bHQoIGJvb2wgLyogcGFzc2VkICovICkge30KLSAgICB2aXJ0dWFsIHZvaWQgICAgZXhjZXB0aW9uX2NhdWdodCggZXhlY3V0aW9uX2V4Y2VwdGlvbiBjb25zdCYgKSB7fQotCi0gICAgdmlydHVhbCBpbnQgICAgIHByaW9yaXR5KCkgeyByZXR1cm4gMDsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgTkROQk9PU1RfVEVTVF9QUk9URUNURURfVklSVFVBTCB+dGVzdF9vYnNlcnZlcigpIHt9Ci19OwotCi19IC8vIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfVEVTVF9PQlNFUlZFUl9IUFBfMDIxMDA1R0VSCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC90ZXN0X3Rvb2xzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC90ZXN0X3Rvb2xzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGU3MWMwMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdGVzdF90b29scy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MTkgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwMS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBjb250YWlucyBkZWZpbml0aW9uIGZvciBhbGwgdGVzdCB0b29scyBpbiB0ZXN0IHRvb2xib3gKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfVEVTVF9UT09MU19IUFBfMDEyNzA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfVEVTVF9UT09MU19IUFBfMDEyNzA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3ByZWRpY2F0ZV9yZXN1bHQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X2xvZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9mbG9hdGluZ19wb2ludF9jb21wYXJpc29uLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZ2xvYmFsX3R5cGVkZWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy93cmFwX3N0cmluZ3N0cmVhbS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2lvLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2xhenlfb3N0cmVhbS5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9mb3JfZWFjaC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9zaXplLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2VudW0uaHBwPiAKLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9yZXBlYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9wdW5jdHVhdGlvbi9jb21tYV9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvYWRkLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2xpbWl0cy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZnVuY3Rpb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Fic3RyYWN0LmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9vci5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPGNzdGRkZWY+ICAgICAgICAgIC8vIGZvciBzdGQ6OnNpemVfdAotI2luY2x1ZGUgPGlvc2Z3ZD4KLSNpbmNsdWRlIDxpb3M+ICAgICAgICAgICAgICAvLyBmb3Igc3RkOjpib29sYWxwaGEKLSNpbmNsdWRlIDxjbGltaXRzPiAgICAgICAgICAvLyBmb3IgQ0hBUl9CSVQKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEyNykgLy8gY29uZGl0aW9uYWwgZXhwcmVzc2lvbiBpcyBjb25zdGFudAotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgICAgVE9PTCBCT1ggICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotLy8gSW4gbWFjcm9zIGJlbG93IGZvbGxvd2luZyBhcmd1bWVudCBhYmJyZXZpYXRpb25zIGFyZSB1c2VkOgotLy8gUCAtIHByZWRpY2F0ZQotLy8gTSAtIG1lc3NhZ2UKLS8vIFMgLSBzdGF0ZW1lbnQKLS8vIEUgLSBleGNlcHRpb24KLS8vIEwgLSBsZWZ0IGFyZ3VtZW50Ci0vLyBSIC0gcmlnaHQgYXJndW1lbnQKLS8vIFRMIC0gdG9vbCBsZXZlbAotLy8gQ1QgLSBjaGVjayB0eXBlCi0vLyBBUkdTIC0gYXJndW1lbnRzIGxpc3QKLQotI2RlZmluZSBORE5CT09TVF9URVNUX1RPT0xfSU1QTCggZnVuYywgUCwgY2hlY2tfZGVzY3IsIFRMLCBDVCApICAgICAgICAgICAgXAotICAgIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OnR0X2RldGFpbDo6ZnVuYyggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBQLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICA6Om5kbmJvb3N0Ojp1bml0X3Rlc3Q6Omxhenlfb3N0cmVhbTo6aW5zdGFuY2UoKSA8PCBjaGVja19kZXNjciwgICAgXAotICAgICAgICBORE5CT09TVF9URVNUX0woX19GSUxFX18pLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oX19MSU5FX18pLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjp0dF9kZXRhaWw6OlRMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjp0dF9kZXRhaWw6OkNUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLyoqLwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZGVmaW5lIE5ETkJPT1NUX0NIRUNLX0lNUEwoIFAsIGNoZWNrX2Rlc2NyLCBUTCwgQ1QgKSAgICAgICAgICAgICAgICAgIFwKLWRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1RFU1RfUEFTU1BPSU5UKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVEVTVF9UT09MX0lNUEwoIGNoZWNrX2ltcGwsIFAsIGNoZWNrX2Rlc2NyLCBUTCwgQ1QgKSwgMCApO1wKLX0gd2hpbGUoIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OmR1bW15X2NvbmQgKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLyoqLwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfUEFTU19BUkdfSU5GTyggciwgZGF0YSwgYXJnICkgLCBhcmcsIE5ETkJPT1NUX1NUUklOR0laRSggYXJnICkKLQotI2RlZmluZSBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggUCwgY2hlY2tfZGVzY3IsIFRMLCBDVCwgQVJHUyApICBcCi1kbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9URVNUX1BBU1NQT0lOVCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1RFU1RfVE9PTF9JTVBMKCBjaGVja19mcndkLCBQLCBjaGVja19kZXNjciwgVEwsIENUICkgICAgICBcCi0gICAgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIKCBORE5CT09TVF9URVNUX1BBU1NfQVJHX0lORk8sICdfJywgQVJHUyApICk7IFwKLX0gd2hpbGUoIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OmR1bW15X2NvbmQgKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLyoqLwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZGVmaW5lIE5ETkJPT1NUX1dBUk4oIFAgKSAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0NIRUNLX0lNUEwoIChQKSwgTkROQk9PU1RfVEVTVF9TVFJJTkdJWkUoIFAgKSwgV0FSTiwgQ0hFQ0tfUFJFRCApCi0jZGVmaW5lIE5ETkJPT1NUX0NIRUNLKCBQICkgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0NIRUNLX0lNUEwoIChQKSwgTkROQk9PU1RfVEVTVF9TVFJJTkdJWkUoIFAgKSwgQ0hFQ0ssIENIRUNLX1BSRUQgKQotI2RlZmluZSBORE5CT09TVF9SRVFVSVJFKCBQICkgICAgICAgICAgICAgICAgICBORE5CT09TVF9DSEVDS19JTVBMKCAoUCksIE5ETkJPT1NUX1RFU1RfU1RSSU5HSVpFKCBQICksIFJFUVVJUkUsIENIRUNLX1BSRUQgKQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZGVmaW5lIE5ETkJPT1NUX1dBUk5fTUVTU0FHRSggUCwgTSApICAgICAgICAgIE5ETkJPT1NUX0NIRUNLX0lNUEwoIChQKSwgTSwgV0FSTiwgQ0hFQ0tfTVNHICkKLSNkZWZpbmUgTkROQk9PU1RfQ0hFQ0tfTUVTU0FHRSggUCwgTSApICAgICAgICAgTkROQk9PU1RfQ0hFQ0tfSU1QTCggKFApLCBNLCBDSEVDSywgQ0hFQ0tfTVNHICkKLSNkZWZpbmUgTkROQk9PU1RfUkVRVUlSRV9NRVNTQUdFKCBQLCBNICkgICAgICAgTkROQk9PU1RfQ0hFQ0tfSU1QTCggKFApLCBNLCBSRVFVSVJFLCBDSEVDS19NU0cgKQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZGVmaW5lIE5ETkJPT1NUX0VSUk9SKCBNICkgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0NIRUNLX01FU1NBR0UoIGZhbHNlLCBNICkKLSNkZWZpbmUgTkROQk9PU1RfRkFJTCggTSApICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfUkVRVUlSRV9NRVNTQUdFKCBmYWxzZSwgTSApCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgTkROQk9PU1RfQ0hFQ0tfVEhST1dfSU1QTCggUywgRSwgUCwgcHJlZml4LCBUTCApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHRyeSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX1RFU1RfUEFTU1BPSU5UKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgUzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9DSEVDS19JTVBMKCBmYWxzZSwgImV4Y2VwdGlvbiAiIE5ETkJPT1NUX1NUUklOR0laRSggRSApICIgaXMgZXhwZWN0ZWQiLCBUTCwgQ0hFQ0tfTVNHICk7IH0gICBcCi0gICAgY2F0Y2goIEUgY29uc3QmIGV4ICkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgOjpuZG5ib29zdDo6dW5pdF90ZXN0Ojp1dF9kZXRhaWw6Omlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyggZXggKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9DSEVDS19JTVBMKCBQLCBwcmVmaXggTkROQk9PU1RfU1RSSU5HSVpFKCBFICkgIiBpcyBjYXVnaHQiLCBUTCwgQ0hFQ0tfTVNHICk7ICAgICAgICAgICAgICAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qKi8KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2RlZmluZSBORE5CT09TVF9XQVJOX1RIUk9XKCBTLCBFICkgICAgICAgICAgICBORE5CT09TVF9DSEVDS19USFJPV19JTVBMKCBTLCBFLCB0cnVlLCAiZXhjZXB0aW9uICIsIFdBUk4gKQotI2RlZmluZSBORE5CT09TVF9DSEVDS19USFJPVyggUywgRSApICAgICAgICAgICBORE5CT09TVF9DSEVDS19USFJPV19JTVBMKCBTLCBFLCB0cnVlLCAiZXhjZXB0aW9uICIsIENIRUNLICkKLSNkZWZpbmUgTkROQk9PU1RfUkVRVUlSRV9USFJPVyggUywgRSApICAgICAgICAgTkROQk9PU1RfQ0hFQ0tfVEhST1dfSU1QTCggUywgRSwgdHJ1ZSwgImV4Y2VwdGlvbiAiLCBSRVFVSVJFICkKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2RlZmluZSBORE5CT09TVF9XQVJOX0VYQ0VQVElPTiggUywgRSwgUCApICAgICBORE5CT09TVF9DSEVDS19USFJPV19JTVBMKCBTLCBFLCBQKCBleCApLCAiaW5jb3JyZWN0IGV4Y2VwdGlvbiAiLCBXQVJOICkKLSNkZWZpbmUgTkROQk9PU1RfQ0hFQ0tfRVhDRVBUSU9OKCBTLCBFLCBQICkgICAgTkROQk9PU1RfQ0hFQ0tfVEhST1dfSU1QTCggUywgRSwgUCggZXggKSwgImluY29ycmVjdCBleGNlcHRpb24gIiwgQ0hFQ0sgKQotI2RlZmluZSBORE5CT09TVF9SRVFVSVJFX0VYQ0VQVElPTiggUywgRSwgUCApICBORE5CT09TVF9DSEVDS19USFJPV19JTVBMKCBTLCBFLCBQKCBleCApLCAiaW5jb3JyZWN0IGV4Y2VwdGlvbiAiLCBSRVFVSVJFICkKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2RlZmluZSBORE5CT09TVF9DSEVDS19OT19USFJPV19JTVBMKCBTLCBUTCApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0cnkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIFM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9DSEVDS19JTVBMKCB0cnVlLCAibm8gZXhjZXB0aW9ucyB0aHJvd24gYnkgIiBORE5CT09TVF9TVFJJTkdJWkUoIFMgKSwgVEwsIENIRUNLX01TRyApOyB9IFwKLSAgICBjYXRjaCggLi4uICkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX0NIRUNLX0lNUEwoIGZhbHNlLCAiZXhjZXB0aW9uIHRocm93biBieSAiIE5ETkJPT1NUX1NUUklOR0laRSggUyApLCBUTCwgQ0hFQ0tfTVNHICk7ICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qKi8KLQotI2RlZmluZSBORE5CT09TVF9XQVJOX05PX1RIUk9XKCBTICkgICAgICAgICAgICBORE5CT09TVF9DSEVDS19OT19USFJPV19JTVBMKCBTLCBXQVJOICkKLSNkZWZpbmUgTkROQk9PU1RfQ0hFQ0tfTk9fVEhST1coIFMgKSAgICAgICAgICAgTkROQk9PU1RfQ0hFQ0tfTk9fVEhST1dfSU1QTCggUywgQ0hFQ0sgKQotI2RlZmluZSBORE5CT09TVF9SRVFVSVJFX05PX1RIUk9XKCBTICkgICAgICAgICBORE5CT09TVF9DSEVDS19OT19USFJPV19JTVBMKCBTLCBSRVFVSVJFICkKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2RlZmluZSBORE5CT09TVF9XQVJOX0VRVUFMKCBMLCBSICkgXAotICAgIE5ETkJPT1NUX0NIRUNLX1dJVEhfQVJHU19JTVBMKCA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjp0dF9kZXRhaWw6OmVxdWFsX2ltcGxfZnJ3ZCgpLCAiIiwgV0FSTiwgQ0hFQ0tfRVFVQUwsIChMKShSKSApCi0jZGVmaW5lIE5ETkJPT1NUX0NIRUNLX0VRVUFMKCBMLCBSICkgXAotICAgIE5ETkJPT1NUX0NIRUNLX1dJVEhfQVJHU19JTVBMKCA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjp0dF9kZXRhaWw6OmVxdWFsX2ltcGxfZnJ3ZCgpLCAiIiwgQ0hFQ0ssIENIRUNLX0VRVUFMLCAoTCkoUikgKQotI2RlZmluZSBORE5CT09TVF9SRVFVSVJFX0VRVUFMKCBMLCBSICkgXAotICAgIE5ETkJPT1NUX0NIRUNLX1dJVEhfQVJHU19JTVBMKCA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjp0dF9kZXRhaWw6OmVxdWFsX2ltcGxfZnJ3ZCgpLCAiIiwgUkVRVUlSRSwgQ0hFQ0tfRVFVQUwsIChMKShSKSApCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgTkROQk9PU1RfV0FSTl9ORSggTCwgUiApIFwKLSAgICBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggOjpuZG5ib29zdDo6dGVzdF90b29sczo6dHRfZGV0YWlsOjpuZV9pbXBsKCksICIiLCBXQVJOLCBDSEVDS19ORSwgKEwpKFIpICkKLSNkZWZpbmUgTkROQk9PU1RfQ0hFQ0tfTkUoIEwsIFIgKSBcCi0gICAgTkROQk9PU1RfQ0hFQ0tfV0lUSF9BUkdTX0lNUEwoIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OnR0X2RldGFpbDo6bmVfaW1wbCgpLCAiIiwgQ0hFQ0ssIENIRUNLX05FLCAoTCkoUikgKQotI2RlZmluZSBORE5CT09TVF9SRVFVSVJFX05FKCBMLCBSICkgXAotICAgIE5ETkJPT1NUX0NIRUNLX1dJVEhfQVJHU19JTVBMKCA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjp0dF9kZXRhaWw6Om5lX2ltcGwoKSwgIiIsIFJFUVVJUkUsIENIRUNLX05FLCAoTCkoUikgKQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZGVmaW5lIE5ETkJPT1NUX1dBUk5fTFQoIEwsIFIgKSBcCi0gICAgTkROQk9PU1RfQ0hFQ0tfV0lUSF9BUkdTX0lNUEwoIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OnR0X2RldGFpbDo6bHRfaW1wbCgpLCAiIiwgV0FSTiwgQ0hFQ0tfTFQsIChMKShSKSApCi0jZGVmaW5lIE5ETkJPT1NUX0NIRUNLX0xUKCBMLCBSICkgXAotICAgIE5ETkJPT1NUX0NIRUNLX1dJVEhfQVJHU19JTVBMKCA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjp0dF9kZXRhaWw6Omx0X2ltcGwoKSwgIiIsIENIRUNLLCBDSEVDS19MVCwgKEwpKFIpICkKLSNkZWZpbmUgTkROQk9PU1RfUkVRVUlSRV9MVCggTCwgUiApIFwKLSAgICBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggOjpuZG5ib29zdDo6dGVzdF90b29sczo6dHRfZGV0YWlsOjpsdF9pbXBsKCksICIiLCBSRVFVSVJFLCBDSEVDS19MVCwgKEwpKFIpICkKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2RlZmluZSBORE5CT09TVF9XQVJOX0xFKCBMLCBSICkgXAotICAgIE5ETkJPT1NUX0NIRUNLX1dJVEhfQVJHU19JTVBMKCA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjp0dF9kZXRhaWw6OmxlX2ltcGwoKSwgIiIsIFdBUk4sIENIRUNLX0xFLCAoTCkoUikgKQotI2RlZmluZSBORE5CT09TVF9DSEVDS19MRSggTCwgUiApIFwKLSAgICBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggOjpuZG5ib29zdDo6dGVzdF90b29sczo6dHRfZGV0YWlsOjpsZV9pbXBsKCksICIiLCBDSEVDSywgQ0hFQ0tfTEUsIChMKShSKSApCi0jZGVmaW5lIE5ETkJPT1NUX1JFUVVJUkVfTEUoIEwsIFIgKSBcCi0gICAgTkROQk9PU1RfQ0hFQ0tfV0lUSF9BUkdTX0lNUEwoIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OnR0X2RldGFpbDo6bGVfaW1wbCgpLCAiIiwgUkVRVUlSRSwgQ0hFQ0tfTEUsIChMKShSKSApCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgTkROQk9PU1RfV0FSTl9HVCggTCwgUiApIFwKLSAgICBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggOjpuZG5ib29zdDo6dGVzdF90b29sczo6dHRfZGV0YWlsOjpndF9pbXBsKCksICIiLCBXQVJOLCBDSEVDS19HVCwgKEwpKFIpICkKLSNkZWZpbmUgTkROQk9PU1RfQ0hFQ0tfR1QoIEwsIFIgKSBcCi0gICAgTkROQk9PU1RfQ0hFQ0tfV0lUSF9BUkdTX0lNUEwoIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OnR0X2RldGFpbDo6Z3RfaW1wbCgpLCAiIiwgQ0hFQ0ssIENIRUNLX0dULCAoTCkoUikgKQotI2RlZmluZSBORE5CT09TVF9SRVFVSVJFX0dUKCBMLCBSICkgXAotICAgIE5ETkJPT1NUX0NIRUNLX1dJVEhfQVJHU19JTVBMKCA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjp0dF9kZXRhaWw6Omd0X2ltcGwoKSwgIiIsIFJFUVVJUkUsIENIRUNLX0dULCAoTCkoUikgKQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZGVmaW5lIE5ETkJPT1NUX1dBUk5fR0UoIEwsIFIgKSBcCi0gICAgTkROQk9PU1RfQ0hFQ0tfV0lUSF9BUkdTX0lNUEwoIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OnR0X2RldGFpbDo6Z2VfaW1wbCgpLCAiIiwgV0FSTiwgQ0hFQ0tfR0UsIChMKShSKSApCi0jZGVmaW5lIE5ETkJPT1NUX0NIRUNLX0dFKCBMLCBSICkgXAotICAgIE5ETkJPT1NUX0NIRUNLX1dJVEhfQVJHU19JTVBMKCA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjp0dF9kZXRhaWw6OmdlX2ltcGwoKSwgIiIsIENIRUNLLCBDSEVDS19HRSwgKEwpKFIpICkKLSNkZWZpbmUgTkROQk9PU1RfUkVRVUlSRV9HRSggTCwgUiApIFwKLSAgICBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggOjpuZG5ib29zdDo6dGVzdF90b29sczo6dHRfZGV0YWlsOjpnZV9pbXBsKCksICIiLCBSRVFVSVJFLCBDSEVDS19HRSwgKEwpKFIpICkKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2RlZmluZSBORE5CT09TVF9XQVJOX0NMT1NFKCBMLCBSLCBUICkgXAotICAgIE5ETkJPT1NUX0NIRUNLX1dJVEhfQVJHU19JTVBMKCA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjpjaGVja19pc19jbG9zZSwgIiIsIFdBUk4sIENIRUNLX0NMT1NFLCBcCi0gICAgICAgIChMKShSKSg6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjpwZXJjZW50X3RvbGVyYW5jZShUKSkgKQotI2RlZmluZSBORE5CT09TVF9DSEVDS19DTE9TRSggTCwgUiwgVCApIFwKLSAgICBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggOjpuZG5ib29zdDo6dGVzdF90b29sczo6Y2hlY2tfaXNfY2xvc2UsICIiLCBDSEVDSywgQ0hFQ0tfQ0xPU0UsIFwKLSAgICAgICAgKEwpKFIpKDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OnBlcmNlbnRfdG9sZXJhbmNlKFQpKSApCi0jZGVmaW5lIE5ETkJPT1NUX1JFUVVJUkVfQ0xPU0UoIEwsIFIsIFQgKSBcCi0gICAgTkROQk9PU1RfQ0hFQ0tfV0lUSF9BUkdTX0lNUEwoIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OmNoZWNrX2lzX2Nsb3NlLCAiIiwgUkVRVUlSRSwgQ0hFQ0tfQ0xPU0UsIFwKLSAgICAgICAgKEwpKFIpKDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OnBlcmNlbnRfdG9sZXJhbmNlKFQpKSApCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgTkROQk9PU1RfV0FSTl9DTE9TRV9GUkFDVElPTiggTCwgUiwgVCApIFwKLSAgICBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggOjpuZG5ib29zdDo6dGVzdF90b29sczo6Y2hlY2tfaXNfY2xvc2UsICIiLCBXQVJOLCBDSEVDS19DTE9TRV9GUkFDVElPTiwgXAotICAgIChMKShSKSg6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjpmcmFjdGlvbl90b2xlcmFuY2UoVCkpICkKLSNkZWZpbmUgTkROQk9PU1RfQ0hFQ0tfQ0xPU0VfRlJBQ1RJT04oIEwsIFIsIFQgKSBcCi0gICAgTkROQk9PU1RfQ0hFQ0tfV0lUSF9BUkdTX0lNUEwoIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OmNoZWNrX2lzX2Nsb3NlLCAiIiwgQ0hFQ0ssIENIRUNLX0NMT1NFX0ZSQUNUSU9OLCBcCi0gICAgKEwpKFIpKDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OmZyYWN0aW9uX3RvbGVyYW5jZShUKSkgKQotI2RlZmluZSBORE5CT09TVF9SRVFVSVJFX0NMT1NFX0ZSQUNUSU9OKCBMLCBSLCBUICkgXAotICAgIE5ETkJPT1NUX0NIRUNLX1dJVEhfQVJHU19JTVBMKCA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjpjaGVja19pc19jbG9zZSwgIiIsIFJFUVVJUkUsIENIRUNLX0NMT1NFX0ZSQUNUSU9OLCBcCi0gICAgKEwpKFIpKDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OmZyYWN0aW9uX3RvbGVyYW5jZShUKSkgKQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZGVmaW5lIE5ETkJPT1NUX1dBUk5fU01BTEwoIEZQViwgVCApIFwKLSAgICBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggOjpuZG5ib29zdDo6dGVzdF90b29sczo6Y2hlY2tfaXNfc21hbGwsICIiLCBXQVJOLCBDSEVDS19TTUFMTCwgKEZQVikoVCkgKQotI2RlZmluZSBORE5CT09TVF9DSEVDS19TTUFMTCggRlBWLCBUICkgXAotICAgIE5ETkJPT1NUX0NIRUNLX1dJVEhfQVJHU19JTVBMKCA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjpjaGVja19pc19zbWFsbCwgIiIsIENIRUNLLCBDSEVDS19TTUFMTCwgKEZQVikoVCkgKQotI2RlZmluZSBORE5CT09TVF9SRVFVSVJFX1NNQUxMKCBGUFYsIFQgKSBcCi0gICAgTkROQk9PU1RfQ0hFQ0tfV0lUSF9BUkdTX0lNUEwoIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OmNoZWNrX2lzX3NtYWxsLCAiIiwgUkVRVUlSRSwgQ0hFQ0tfU01BTEwsIChGUFYpKFQpICkKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2RlZmluZSBORE5CT09TVF9XQVJOX1BSRURJQ0FURSggUCwgQVJHUyApIFwKLSAgICBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggUCwgTkROQk9PU1RfVEVTVF9TVFJJTkdJWkUoIFAgKSwgV0FSTiwgQ0hFQ0tfUFJFRF9XSVRIX0FSR1MsIEFSR1MgKQotI2RlZmluZSBORE5CT09TVF9DSEVDS19QUkVESUNBVEUoIFAsIEFSR1MgKSBcCi0gICAgTkROQk9PU1RfQ0hFQ0tfV0lUSF9BUkdTX0lNUEwoIFAsIE5ETkJPT1NUX1RFU1RfU1RSSU5HSVpFKCBQICksIENIRUNLLCBDSEVDS19QUkVEX1dJVEhfQVJHUywgQVJHUyApCi0jZGVmaW5lIE5ETkJPT1NUX1JFUVVJUkVfUFJFRElDQVRFKCBQLCBBUkdTICkgXAotICAgIE5ETkJPT1NUX0NIRUNLX1dJVEhfQVJHU19JTVBMKCBQLCBORE5CT09TVF9URVNUX1NUUklOR0laRSggUCApLCBSRVFVSVJFLCBDSEVDS19QUkVEX1dJVEhfQVJHUywgQVJHUyApCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgTkROQk9PU1RfRVFVQUxfQ09MTEVDVElPTlNfSU1QTCggTF9iZWdpbiwgTF9lbmQsIFJfYmVnaW4sIFJfZW5kLCBUTCApICAgICAgXAotICAgIE5ETkJPT1NUX1RFU1RfVE9PTF9JTVBMKCBjaGVja19pbXBsLCA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjp0dF9kZXRhaWw6OmVxdWFsX2NvbGxfaW1wbCggXAotICAgICAgICAoTF9iZWdpbiksIChMX2VuZCksIChSX2JlZ2luKSwgKFJfZW5kKSApLCAiIiwgVEwsIENIRUNLX0VRVUFMX0NPTEwgKSwgICBcCi0gICAgNCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9TVFJJTkdJWkUoIExfYmVnaW4gKSwgTkROQk9PU1RfU1RSSU5HSVpFKCBMX2VuZCApLCAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1NUUklOR0laRSggUl9iZWdpbiApLCBORE5CT09TVF9TVFJJTkdJWkUoIFJfZW5kICkgKSAgICAgICAgICAgICAgICAgICAgICBcCi0vKiovCi0KLSNkZWZpbmUgTkROQk9PU1RfV0FSTl9FUVVBTF9DT0xMRUNUSU9OUyggTF9iZWdpbiwgTF9lbmQsIFJfYmVnaW4sIFJfZW5kICkgICAgICAgICAgXAotICAgIE5ETkJPT1NUX0VRVUFMX0NPTExFQ1RJT05TX0lNUEwoIExfYmVnaW4sIExfZW5kLCBSX2JlZ2luLCBSX2VuZCwgV0FSTiApCi0jZGVmaW5lIE5ETkJPT1NUX0NIRUNLX0VRVUFMX0NPTExFQ1RJT05TKCBMX2JlZ2luLCBMX2VuZCwgUl9iZWdpbiwgUl9lbmQgKSAgICAgICAgIFwKLSAgICBORE5CT09TVF9FUVVBTF9DT0xMRUNUSU9OU19JTVBMKCBMX2JlZ2luLCBMX2VuZCwgUl9iZWdpbiwgUl9lbmQsIENIRUNLICkKLSNkZWZpbmUgTkROQk9PU1RfUkVRVUlSRV9FUVVBTF9DT0xMRUNUSU9OUyggTF9iZWdpbiwgTF9lbmQsIFJfYmVnaW4sIFJfZW5kICkgICAgICAgXAotICAgIE5ETkJPT1NUX0VRVUFMX0NPTExFQ1RJT05TX0lNUEwoIExfYmVnaW4sIExfZW5kLCBSX2JlZ2luLCBSX2VuZCwgUkVRVUlSRSApCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgTkROQk9PU1RfQklUV0lTRV9FUVVBTF9JTVBMKCBMLCBSLCBUTCApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1RFU1RfVE9PTF9JTVBMKCBjaGVja19pbXBsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjp0dF9kZXRhaWw6OmJpdHdpc2VfZXF1YWxfaW1wbCggKEwpLCAoUikgKSwgICAgICAgICAgIFwKLSAgICAgICIiLCBUTCwgQ0hFQ0tfQklUV0lTRV9FUVVBTCApLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIDIsIE5ETkJPT1NUX1NUUklOR0laRSggTCApLCBORE5CT09TVF9TVFJJTkdJWkUoIFIgKSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0vKiovCi0KLSNkZWZpbmUgTkROQk9PU1RfV0FSTl9CSVRXSVNFX0VRVUFMKCBMLCBSICkgICAgTkROQk9PU1RfQklUV0lTRV9FUVVBTF9JTVBMKCBMLCBSLCBXQVJOICkKLSNkZWZpbmUgTkROQk9PU1RfQ0hFQ0tfQklUV0lTRV9FUVVBTCggTCwgUiApICAgTkROQk9PU1RfQklUV0lTRV9FUVVBTF9JTVBMKCBMLCBSLCBDSEVDSyApCi0jZGVmaW5lIE5ETkJPT1NUX1JFUVVJUkVfQklUV0lTRV9FUVVBTCggTCwgUiApIE5ETkJPT1NUX0JJVFdJU0VfRVFVQUxfSU1QTCggTCwgUiwgUkVRVUlSRSApCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgTkROQk9PU1RfSVNfREVGSU5FRCggc3ltYiApICAgICAgICAgICAgOjpuZG5ib29zdDo6dGVzdF90b29sczo6dHRfZGV0YWlsOjppc19kZWZpbmVkX2ltcGwoICNzeW1iLCBORE5CT09TVF9TVFJJTkdJWkUoPSBzeW1iKSApCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyBkZXByZWNhdGVkIGludGVyZmFjZQotCi0jZGVmaW5lIE5ETkJPT1NUX0JJVFdJU0VfRVFVQUwoIEwsIFIgKSAgICAgICAgIE5ETkJPT1NUX0NIRUNLX0JJVFdJU0VfRVFVQUwoIEwsIFIgKQotI2RlZmluZSBORE5CT09TVF9NRVNTQUdFKCBNICkgICAgICAgICAgICAgICAgICBORE5CT09TVF9URVNUX01FU1NBR0UoIE0gKQotI2RlZmluZSBORE5CT09TVF9DSEVDS1BPSU5UKCBNICkgICAgICAgICAgICAgICBORE5CT09TVF9URVNUX0NIRUNLUE9JTlQoIE0gKQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdGVzdF90b29scyB7Ci0KLXR5cGVkZWYgdW5pdF90ZXN0Ojpjb25zdF9zdHJpbmcgICAgICBjb25zdF9zdHJpbmc7Ci0KLW5hbWVzcGFjZSB7IGJvb2wgZHVtbXlfY29uZCA9IGZhbHNlOyB9Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICBwcmludF9sb2dfdmFsdWUgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBwcmludF9sb2dfdmFsdWUgewotICAgIHZvaWQgICAgb3BlcmF0b3IoKSggc3RkOjpvc3RyZWFtJiBvc3RyLCBUIGNvbnN0JiB0ICkKLSAgICB7Ci0gICAgICAgIC8vIGF2b2lkIHdhcm5pbmc6ICduZG5ib29zdDo6dGVzdF90b29sczo6PHVubmFtZWQ+OjpkdW1teV9jb25kJyBkZWZpbmVkIGJ1dCBub3QgdXNlZCAKLSAgICAgICAgaWYgKDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OmR1bW15X2NvbmQpIHt9Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om9yXzxpc19hcnJheTxUPixpc19mdW5jdGlvbjxUPixpc19hYnN0cmFjdDxUPiA+Ojp0eXBlIGNhbnRfdXNlX25sOwotCi0gICAgICAgIHNldF9wcmVjaXNpb24oIG9zdHIsIGNhbnRfdXNlX25sKCkgKTsKLQotICAgICAgICBvc3RyIDw8IHQ7IC8vIGJ5IGRlZmF1bHQgcHJpbnQgdGhlIHZhbHVlCi0gICAgfQotCi0gICAgdm9pZCBzZXRfcHJlY2lzaW9uKCBzdGQ6Om9zdHJlYW0mIG9zdHIsIG1wbDo6ZmFsc2VfICkKLSAgICB7Ci0gICAgICAgIGlmKCBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojppc19zcGVjaWFsaXplZCAmJiBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjpyYWRpeCA9PSAyICkKLSAgICAgICAgICAgIG9zdHIucHJlY2lzaW9uKCAyICsgc3RkOjpudW1lcmljX2xpbWl0czxUPjo6ZGlnaXRzICogMzAxLzEwMDAgKTsgCi0gICAgfQotCi0gICAgdm9pZCBzZXRfcHJlY2lzaW9uKCBzdGQ6Om9zdHJlYW0mLCBtcGw6OnRydWVfICkge30KLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9ET05UX1BSSU5UX0xPR19WQUxVRSggdGhlX3R5cGUgKSAgICAgICAgIFwKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB0ZXN0X3Rvb2xzIHsgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlPD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXN0cnVjdCBwcmludF9sb2dfdmFsdWU8dGhlX3R5cGUgPiB7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIG9wZXJhdG9yKCkoIHN0ZDo6b3N0cmVhbSYsIHRoZV90eXBlIGNvbnN0JiApIHt9ICAgIFwKLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qKi8KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NjQpKQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjpzaXplX3QgTiA+Ci1zdHJ1Y3QgcHJpbnRfbG9nX3ZhbHVlPCBUW05dID4gewotICAgIHZvaWQgICAgb3BlcmF0b3IoKSggc3RkOjpvc3RyZWFtJiBvc3RyLCBUIGNvbnN0KiB0ICkKLSAgICB7Ci0gICAgICAgIG9zdHIgPDwgdDsKLSAgICB9Ci19OwotI2VuZGlmCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCBORE5CT09TVF9URVNUX0RFQ0wgcHJpbnRfbG9nX3ZhbHVlPGJvb2w+IHsKLSAgICB2b2lkICAgIG9wZXJhdG9yKCkoIHN0ZDo6b3N0cmVhbSYgb3N0ciwgYm9vbCB0ICkKLSAgICB7Ci0gICAgICAgICBvc3RyIDw8IHN0ZDo6Ym9vbGFscGhhIDw8IHQ7Ci0gICAgfQotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8Pgotc3RydWN0IE5ETkJPT1NUX1RFU1RfREVDTCBwcmludF9sb2dfdmFsdWU8Y2hhcj4gewotICAgIHZvaWQgICAgb3BlcmF0b3IoKSggc3RkOjpvc3RyZWFtJiBvc3RyLCBjaGFyIHQgKTsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCBORE5CT09TVF9URVNUX0RFQ0wgcHJpbnRfbG9nX3ZhbHVlPHVuc2lnbmVkIGNoYXI+IHsKLSAgICB2b2lkICAgIG9wZXJhdG9yKCkoIHN0ZDo6b3N0cmVhbSYgb3N0ciwgdW5zaWduZWQgY2hhciB0ICk7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTkROQk9PU1RfVEVTVF9ERUNMIHByaW50X2xvZ192YWx1ZTxjaGFyIGNvbnN0Kj4gewotICAgIHZvaWQgICAgb3BlcmF0b3IoKSggc3RkOjpvc3RyZWFtJiBvc3RyLCBjaGFyIGNvbnN0KiB0ICk7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTkROQk9PU1RfVEVTVF9ERUNMIHByaW50X2xvZ192YWx1ZTx3Y2hhcl90IGNvbnN0Kj4gewotICAgIHZvaWQgICAgb3BlcmF0b3IoKSggc3RkOjpvc3RyZWFtJiBvc3RyLCB3Y2hhcl90IGNvbnN0KiB0ICk7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgdHRfZGV0YWlsIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICB0b29scyBjbGFzc2lmaWNhdGlvbiAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1lbnVtIGNoZWNrX3R5cGUgewotICAgIENIRUNLX1BSRUQsIAotICAgIENIRUNLX01TRywKLSAgICBDSEVDS19FUVVBTCwKLSAgICBDSEVDS19ORSwKLSAgICBDSEVDS19MVCwKLSAgICBDSEVDS19MRSwKLSAgICBDSEVDS19HVCwKLSAgICBDSEVDS19HRSwKLSAgICBDSEVDS19DTE9TRSwKLSAgICBDSEVDS19DTE9TRV9GUkFDVElPTiwKLSAgICBDSEVDS19TTUFMTCwKLSAgICBDSEVDS19CSVRXSVNFX0VRVUFMLAotICAgIENIRUNLX1BSRURfV0lUSF9BUkdTLAotICAgIENIRUNLX0VRVUFMX0NPTEwKLX07Ci0KLWVudW0gdG9vbF9sZXZlbCB7Ci0gICAgV0FSTiwgQ0hFQ0ssIFJFUVVJUkUsIFBBU1MKLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgcHJpbnRfaGVscGVyICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vIEFkZHMgbGV2ZWwgb2YgaW5kaXJlY3Rpb24gdG8gdGhlIG91dHB1dCBvcGVyYXRpb24sIGFsbG93aW5nIHVzIHRvIGN1c3RvbWl6ZSAKLS8vIGl0IGZvciB0eXBlcyB0aGF0IGRvIG5vdCBzdXBwb3J0IG9wZXJhdG9yIDw8IGRpcmVjdGx5IG9yIGZvciBhbnkgb3RoZXIgcmVhc29uCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgcHJpbnRfaGVscGVyX3QgewotICAgIGV4cGxpY2l0ICAgIHByaW50X2hlbHBlcl90KCBUIGNvbnN0JiB0ICkgOiBtX3QoIHQgKSB7fQotCi0gICAgVCBjb25zdCYgICAgbV90OwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NjQpKSAKLS8vIEJvcmxhbmQgc3VmZmVycyBwcmVtYXR1cmUgcG9pbnRlciBkZWNheSBwYXNzaW5nIGFycmF5cyBieSByZWZlcmVuY2UKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IE4gPgotc3RydWN0IHByaW50X2hlbHBlcl90PCBUW05dID4gewotICAgIGV4cGxpY2l0ICAgIHByaW50X2hlbHBlcl90KCBUIGNvbnN0ICogdCApIDogbV90KCB0ICkge30KLQotICAgIFQgY29uc3QgKiAgIG1fdDsKLX07Ci0jZW5kaWYKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBwcmludF9oZWxwZXJfdDxUPiBwcmludF9oZWxwZXIoIFQgY29uc3QmIHQgKQotewotICAgIHJldHVybiBwcmludF9oZWxwZXJfdDxUPiggdCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIHN0ZDo6b3N0cmVhbSYgCi1vcGVyYXRvcjw8KCBzdGQ6Om9zdHJlYW0mIG9zdHIsIHByaW50X2hlbHBlcl90PFQ+IGNvbnN0JiBwaCApCi17Ci0gICAgcHJpbnRfbG9nX3ZhbHVlPFQ+KCkoIG9zdHIsIHBoLm1fdCApOwotCi0gICAgcmV0dXJuIG9zdHI7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgIFRPT0wgQk9YIEltcGxlbWVudGF0aW9uICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotTkROQk9PU1RfVEVTVF9ERUNMIAotYm9vbCBjaGVja19pbXBsKCBwcmVkaWNhdGVfcmVzdWx0IGNvbnN0JiBwciwgOjpuZG5ib29zdDo6dW5pdF90ZXN0OjpsYXp5X29zdHJlYW0gY29uc3QmIGNoZWNrX2Rlc2NyLAotICAgICAgICAgICAgICAgICBjb25zdF9zdHJpbmcgZmlsZV9uYW1lLCBzdGQ6OnNpemVfdCBsaW5lX251bSwKLSAgICAgICAgICAgICAgICAgdG9vbF9sZXZlbCB0bCwgY2hlY2tfdHlwZSBjdCwKLSAgICAgICAgICAgICAgICAgc3RkOjpzaXplX3QgbnVtX2FyZ3MsIC4uLiApOwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZGVmaW5lIFRFTVBMX1BBUkFNUyggeiwgbSwgZHVtbXkgKSAsIHR5cGVuYW1lIE5ETkJPT1NUX0pPSU4oIEFyZywgbSApCi0jZGVmaW5lIEZVTkNfUEFSQU1TKCB6LCBtLCBkdW1teSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gLCBORE5CT09TVF9KT0lOKCBBcmcsIG0gKSBjb25zdCYgTkROQk9PU1RfSk9JTiggYXJnLCBtICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gLCBjaGFyIGNvbnN0KiBORE5CT09TVF9KT0lOKCBORE5CT09TVF9KT0lOKCBhcmcsIG0gKSwgX2Rlc2NyICkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0vKiovCi0KLSNkZWZpbmUgUFJFRF9QQVJBTVMoIHosIG0sIGR1bW15ICkgTkROQk9PU1RfUFBfQ09NTUFfSUYoIG0gKSBORE5CT09TVF9KT0lOKCBhcmcsIG0gKSAKLQotI2RlZmluZSBBUkdfSU5GTyggeiwgbSwgZHVtbXkgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICwgTkROQk9PU1RfSk9JTiggTkROQk9PU1RfSk9JTiggYXJnLCBtICksIF9kZXNjciApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICwgJnN0YXRpY19jYXN0PGNvbnN0IHVuaXRfdGVzdDo6bGF6eV9vc3RyZWFtJj4odW5pdF90ZXN0OjpsYXp5X29zdHJlYW06Omluc3RhbmNlKCkgXAotICAgICAgICA8PCA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjp0dF9kZXRhaWw6OnByaW50X2hlbHBlciggTkROQk9PU1RfSk9JTiggYXJnLCBtICkgKSkgICAgXAotLyoqLwotCi0jZGVmaW5lIElNUExfRlJXRCggeiwgbiwgZHVtbXkgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZTx0eXBlbmFtZSBQcmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICBORE5CT09TVF9QUF9SRVBFQVRfICMjIHooIE5ETkJPT1NUX1BQX0FERCggbiwgMSApLCBURU1QTF9QQVJBTVMsIF8gKT4gICAgICAgICAgICBcCi1pbmxpbmUgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1jaGVja19mcndkKCBQcmVkIFAsIHVuaXRfdGVzdDo6bGF6eV9vc3RyZWFtIGNvbnN0JiBjaGVja19kZXNjciwgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBjb25zdF9zdHJpbmcgZmlsZV9uYW1lLCBzdGQ6OnNpemVfdCBsaW5lX251bSwgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICB0b29sX2xldmVsIHRsLCBjaGVja190eXBlIGN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBORE5CT09TVF9QUF9SRVBFQVRfICMjIHooIE5ETkJPT1NUX1BQX0FERCggbiwgMSApLCBGVU5DX1BBUkFNUywgXyApICAgICAgICAgICBcCi0pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgcmV0dXJuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgY2hlY2tfaW1wbCggUCggTkROQk9PU1RfUFBfUkVQRUFUXyAjIyB6KCBORE5CT09TVF9QUF9BREQoIG4sIDEgKSwgUFJFRF9QQVJBTVMsIF8gKSApLCBcCi0gICAgICAgICAgICAgICAgY2hlY2tfZGVzY3IsIGZpbGVfbmFtZSwgbGluZV9udW0sIHRsLCBjdCwgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfUFBfQUREKCBuLCAxICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfUFBfUkVQRUFUXyAjIyB6KCBORE5CT09TVF9QUF9BREQoIG4sIDEgKSwgQVJHX0lORk8sIF8gKSAgICAgICAgICBcCi0gICAgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0vKiovCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9NQVhfUFJFRElDQVRFX0FSSVRZCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfTUFYX1BSRURJQ0FURV9BUklUWSA1Ci0jZW5kaWYKLQotTkROQk9PU1RfUFBfUkVQRUFUKCBORE5CT09TVF9URVNUX01BWF9QUkVESUNBVEVfQVJJVFksIElNUExfRlJXRCwgXyApCi0KLSN1bmRlZiBURU1QTF9QQVJBTVMKLSN1bmRlZiBGVU5DX1BBUkFNUwotI3VuZGVmIFBSRURfSU5GTwotI3VuZGVmIEFSR19JTkZPCi0jdW5kZWYgSU1QTF9GUldECi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlIDxjbGFzcyBMZWZ0LCBjbGFzcyBSaWdodD4KLXByZWRpY2F0ZV9yZXN1bHQgZXF1YWxfaW1wbCggTGVmdCBjb25zdCYgbGVmdCwgUmlnaHQgY29uc3QmIHJpZ2h0ICkKLXsKLSAgICByZXR1cm4gbGVmdCA9PSByaWdodDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotcHJlZGljYXRlX3Jlc3VsdCAgICAgICAgTkROQk9PU1RfVEVTVF9ERUNMIGVxdWFsX2ltcGwoIGNoYXIgY29uc3QqIGxlZnQsIGNoYXIgY29uc3QqIHJpZ2h0ICk7Ci1pbmxpbmUgcHJlZGljYXRlX3Jlc3VsdCBlcXVhbF9pbXBsKCBjaGFyKiBsZWZ0LCBjaGFyIGNvbnN0KiByaWdodCApIHsgcmV0dXJuIGVxdWFsX2ltcGwoIHN0YXRpY19jYXN0PGNoYXIgY29uc3QqPihsZWZ0KSwgc3RhdGljX2Nhc3Q8Y2hhciBjb25zdCo+KHJpZ2h0KSApOyB9Ci1pbmxpbmUgcHJlZGljYXRlX3Jlc3VsdCBlcXVhbF9pbXBsKCBjaGFyIGNvbnN0KiBsZWZ0LCBjaGFyKiByaWdodCApIHsgcmV0dXJuIGVxdWFsX2ltcGwoIHN0YXRpY19jYXN0PGNoYXIgY29uc3QqPihsZWZ0KSwgc3RhdGljX2Nhc3Q8Y2hhciBjb25zdCo+KHJpZ2h0KSApOyB9Ci1pbmxpbmUgcHJlZGljYXRlX3Jlc3VsdCBlcXVhbF9pbXBsKCBjaGFyKiBsZWZ0LCBjaGFyKiByaWdodCApICAgICAgIHsgcmV0dXJuIGVxdWFsX2ltcGwoIHN0YXRpY19jYXN0PGNoYXIgY29uc3QqPihsZWZ0KSwgc3RhdGljX2Nhc3Q8Y2hhciBjb25zdCo+KHJpZ2h0KSApOyB9Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1dDSEFSICkKLXByZWRpY2F0ZV9yZXN1bHQgICAgICAgIE5ETkJPT1NUX1RFU1RfREVDTCBlcXVhbF9pbXBsKCB3Y2hhcl90IGNvbnN0KiBsZWZ0LCB3Y2hhcl90IGNvbnN0KiByaWdodCApOwotaW5saW5lIHByZWRpY2F0ZV9yZXN1bHQgZXF1YWxfaW1wbCggd2NoYXJfdCogbGVmdCwgd2NoYXJfdCBjb25zdCogcmlnaHQgKSB7IHJldHVybiBlcXVhbF9pbXBsKCBzdGF0aWNfY2FzdDx3Y2hhcl90IGNvbnN0Kj4obGVmdCksIHN0YXRpY19jYXN0PHdjaGFyX3QgY29uc3QqPihyaWdodCkgKTsgfQotaW5saW5lIHByZWRpY2F0ZV9yZXN1bHQgZXF1YWxfaW1wbCggd2NoYXJfdCBjb25zdCogbGVmdCwgd2NoYXJfdCogcmlnaHQgKSB7IHJldHVybiBlcXVhbF9pbXBsKCBzdGF0aWNfY2FzdDx3Y2hhcl90IGNvbnN0Kj4obGVmdCksIHN0YXRpY19jYXN0PHdjaGFyX3QgY29uc3QqPihyaWdodCkgKTsgfQotaW5saW5lIHByZWRpY2F0ZV9yZXN1bHQgZXF1YWxfaW1wbCggd2NoYXJfdCogbGVmdCwgd2NoYXJfdCogcmlnaHQgKSAgICAgICB7IHJldHVybiBlcXVhbF9pbXBsKCBzdGF0aWNfY2FzdDx3Y2hhcl90IGNvbnN0Kj4obGVmdCksIHN0YXRpY19jYXN0PHdjaGFyX3QgY29uc3QqPihyaWdodCkgKTsgfQotI2VuZGlmCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXN0cnVjdCBlcXVhbF9pbXBsX2Zyd2QgewotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBMZWZ0LCB0eXBlbmFtZSBSaWdodD4KLSAgICBpbmxpbmUgcHJlZGljYXRlX3Jlc3VsdAotICAgIGNhbGxfaW1wbCggTGVmdCBjb25zdCYgbGVmdCwgUmlnaHQgY29uc3QmIHJpZ2h0LCBtcGw6OmZhbHNlXyApIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZXF1YWxfaW1wbCggbGVmdCwgcmlnaHQgKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGVmdCwgdHlwZW5hbWUgUmlnaHQ+Ci0gICAgaW5saW5lIHByZWRpY2F0ZV9yZXN1bHQKLSAgICBjYWxsX2ltcGwoIExlZnQgY29uc3QmIGxlZnQsIFJpZ2h0IGNvbnN0JiByaWdodCwgbXBsOjp0cnVlXyApIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gKCp0aGlzKSggcmlnaHQsICZsZWZ0WzBdICk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIExlZnQsIHR5cGVuYW1lIFJpZ2h0PgotICAgIGlubGluZSBwcmVkaWNhdGVfcmVzdWx0Ci0gICAgb3BlcmF0b3IoKSggTGVmdCBjb25zdCYgbGVmdCwgUmlnaHQgY29uc3QmIHJpZ2h0ICkgY29uc3QKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXNfYXJyYXk8TGVmdD46OnR5cGUgbGVmdF9pc19hcnJheTsKLSAgICAgICAgcmV0dXJuIGNhbGxfaW1wbCggbGVmdCwgcmlnaHQsIGxlZnRfaXNfYXJyYXkoKSApOwotICAgIH0KLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXN0cnVjdCBuZV9pbXBsIHsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgTGVmdCwgY2xhc3MgUmlnaHQ+Ci0gICAgcHJlZGljYXRlX3Jlc3VsdCBvcGVyYXRvcigpKCBMZWZ0IGNvbnN0JiBsZWZ0LCBSaWdodCBjb25zdCYgcmlnaHQgKQotICAgIHsKLSAgICAgICAgcmV0dXJuICFlcXVhbF9pbXBsX2Zyd2QoKSggbGVmdCwgcmlnaHQgKTsKLSAgICB9Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zdHJ1Y3QgbHRfaW1wbCB7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIExlZnQsIGNsYXNzIFJpZ2h0PgotICAgIHByZWRpY2F0ZV9yZXN1bHQgb3BlcmF0b3IoKSggTGVmdCBjb25zdCYgbGVmdCwgUmlnaHQgY29uc3QmIHJpZ2h0ICkKLSAgICB7Ci0gICAgICAgIHJldHVybiBsZWZ0IDwgcmlnaHQ7Ci0gICAgfQotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc3RydWN0IGxlX2ltcGwgewotICAgIHRlbXBsYXRlIDxjbGFzcyBMZWZ0LCBjbGFzcyBSaWdodD4KLSAgICBwcmVkaWNhdGVfcmVzdWx0IG9wZXJhdG9yKCkoIExlZnQgY29uc3QmIGxlZnQsIFJpZ2h0IGNvbnN0JiByaWdodCApCi0gICAgewotICAgICAgICByZXR1cm4gbGVmdCA8PSByaWdodDsKLSAgICB9Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zdHJ1Y3QgZ3RfaW1wbCB7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIExlZnQsIGNsYXNzIFJpZ2h0PgotICAgIHByZWRpY2F0ZV9yZXN1bHQgb3BlcmF0b3IoKSggTGVmdCBjb25zdCYgbGVmdCwgUmlnaHQgY29uc3QmIHJpZ2h0ICkKLSAgICB7Ci0gICAgICAgIHJldHVybiBsZWZ0ID4gcmlnaHQ7Ci0gICAgfQotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc3RydWN0IGdlX2ltcGwgewotICAgIHRlbXBsYXRlIDxjbGFzcyBMZWZ0LCBjbGFzcyBSaWdodD4KLSAgICBwcmVkaWNhdGVfcmVzdWx0IG9wZXJhdG9yKCkoIExlZnQgY29uc3QmIGxlZnQsIFJpZ2h0IGNvbnN0JiByaWdodCApCi0gICAgewotICAgICAgICByZXR1cm4gbGVmdCA+PSByaWdodDsKLSAgICB9Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTGVmdCwgdHlwZW5hbWUgUmlnaHQ+Ci1pbmxpbmUgcHJlZGljYXRlX3Jlc3VsdAotZXF1YWxfY29sbF9pbXBsKCBMZWZ0IGxlZnRfYmVnaW4sIExlZnQgbGVmdF9lbmQsIFJpZ2h0IHJpZ2h0X2JlZ2luLCBSaWdodCByaWdodF9lbmQgKQotewotICAgIHByZWRpY2F0ZV9yZXN1bHQgICAgcmVzKCB0cnVlICk7Ci0gICAgc3RkOjpzaXplX3QgICAgICAgICBwb3MgPSAwOwotCi0gICAgZm9yKCA7IGxlZnRfYmVnaW4gIT0gbGVmdF9lbmQgJiYgcmlnaHRfYmVnaW4gIT0gcmlnaHRfZW5kOyArK2xlZnRfYmVnaW4sICsrcmlnaHRfYmVnaW4sICsrcG9zICkgewotICAgICAgICBpZiggKmxlZnRfYmVnaW4gIT0gKnJpZ2h0X2JlZ2luICkgewotICAgICAgICAgICAgcmVzID0gZmFsc2U7Ci0gICAgICAgICAgICByZXMubWVzc2FnZSgpIDw8ICJcbk1pc21hdGNoIGluIGEgcG9zaXRpb24gIiA8PCBwb3MgPDwgIjogIiAgPDwgKmxlZnRfYmVnaW4gPDwgIiAhPSAiIDw8ICpyaWdodF9iZWdpbjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmKCBsZWZ0X2JlZ2luICE9IGxlZnRfZW5kICkgewotICAgICAgICBzdGQ6OnNpemVfdCByX3NpemUgPSBwb3M7Ci0gICAgICAgIHdoaWxlKCBsZWZ0X2JlZ2luICE9IGxlZnRfZW5kICkgewotICAgICAgICAgICAgKytwb3M7Ci0gICAgICAgICAgICArK2xlZnRfYmVnaW47Ci0gICAgICAgIH0KLQotICAgICAgICByZXMgPSBmYWxzZTsKLSAgICAgICAgcmVzLm1lc3NhZ2UoKSA8PCAiXG5Db2xsZWN0aW9ucyBzaXplIG1pc21hdGNoOiAiIDw8IHBvcyA8PCAiICE9ICIgPDwgcl9zaXplOwotICAgIH0KLQotICAgIGlmKCByaWdodF9iZWdpbiAhPSByaWdodF9lbmQgKSB7Ci0gICAgICAgIHN0ZDo6c2l6ZV90IGxfc2l6ZSA9IHBvczsKLSAgICAgICAgd2hpbGUoIHJpZ2h0X2JlZ2luICE9IHJpZ2h0X2VuZCApIHsKLSAgICAgICAgICAgICsrcG9zOwotICAgICAgICAgICAgKytyaWdodF9iZWdpbjsKLSAgICAgICAgfQotCi0gICAgICAgIHJlcyA9IGZhbHNlOwotICAgICAgICByZXMubWVzc2FnZSgpIDw8ICJcbkNvbGxlY3Rpb25zIHNpemUgbWlzbWF0Y2g6ICIgPDwgbF9zaXplIDw8ICIgIT0gIiA8PCBwb3M7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlczsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGUgPGNsYXNzIExlZnQsIGNsYXNzIFJpZ2h0PgotaW5saW5lIHByZWRpY2F0ZV9yZXN1bHQKLWJpdHdpc2VfZXF1YWxfaW1wbCggTGVmdCBjb25zdCYgbGVmdCwgUmlnaHQgY29uc3QmIHJpZ2h0ICkKLXsKLSAgICBwcmVkaWNhdGVfcmVzdWx0ICAgIHJlcyggdHJ1ZSApOwotCi0gICAgc3RkOjpzaXplX3QgbGVmdF9iaXRfc2l6ZSAgPSBzaXplb2YoTGVmdCkqQ0hBUl9CSVQ7Ci0gICAgc3RkOjpzaXplX3QgcmlnaHRfYml0X3NpemUgPSBzaXplb2YoUmlnaHQpKkNIQVJfQklUOwotCi0gICAgc3RhdGljIExlZnQgY29uc3QgbGVmdE9uZSggMSApOwotICAgIHN0YXRpYyBSaWdodCBjb25zdCByaWdodE9uZSggMSApOwotCi0gICAgc3RkOjpzaXplX3QgdG90YWxfYml0cyA9IGxlZnRfYml0X3NpemUgPCByaWdodF9iaXRfc2l6ZSA/IGxlZnRfYml0X3NpemUgOiByaWdodF9iaXRfc2l6ZTsKLQotICAgIGZvciggc3RkOjpzaXplX3QgY291bnRlciA9IDA7IGNvdW50ZXIgPCB0b3RhbF9iaXRzOyArK2NvdW50ZXIgKSB7Ci0gICAgICAgIGlmKCAoIGxlZnQgJiAoIGxlZnRPbmUgPDwgY291bnRlciApICkgIT0gKCByaWdodCAmICggcmlnaHRPbmUgPDwgY291bnRlciApICkgKSB7Ci0gICAgICAgICAgICByZXMgPSBmYWxzZTsKLSAgICAgICAgICAgIHJlcy5tZXNzYWdlKCkgPDwgIlxuTWlzbWF0Y2ggaW4gYSBwb3NpdGlvbiAiIDw8IGNvdW50ZXI7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiggbGVmdF9iaXRfc2l6ZSAhPSByaWdodF9iaXRfc2l6ZSApIHsKLSAgICAgICAgcmVzID0gZmFsc2U7Ci0gICAgICAgIHJlcy5tZXNzYWdlKCkgPDwgIlxuT3BlcmFuZHMgYml0IHNpemVzIG1pc21hdGNoOiAiIDw8IGxlZnRfYml0X3NpemUgPDwgIiAhPSAiIDw8IHJpZ2h0X2JpdF9zaXplOwotICAgIH0KLQotICAgIHJldHVybiByZXM7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWJvb2wgTkROQk9PU1RfVEVTVF9ERUNMIGlzX2RlZmluZWRfaW1wbCggY29uc3Rfc3RyaW5nIHN5bWJvbF9uYW1lLCBjb25zdF9zdHJpbmcgc3ltYm9sX3ZhbHVlICk7Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHR0X2RldGFpbAotCi19IC8vIG5hbWVzcGFjZSB0ZXN0X3Rvb2xzCi0KLW5hbWVzcGFjZSB0ZXN0X3Rvb2xib3ggPSB0ZXN0X3Rvb2xzOwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfVEVTVF9UT09MU19IUFBfMDEyNzA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91bml0X3Rlc3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYWRiODA1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91bml0X3Rlc3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwMS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBFbnRyeSBwb2ludCBmb3IgdGhlIGVuZCB1c2VyIGludG8gdGhlIFVuaXQgVGVzdCBGcmFtZXdvcmsuCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9IUFBfMDcxODk0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX0hQUF8wNzE4OTRHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdGVzdF90b29scy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91bml0X3Rlc3Rfc3VpdGUuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgIEF1dG8gTGlua2luZyAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9BTExfTk9fTElCKSAmJiAhZGVmaW5lZChORE5CT09TVF9URVNUX05PX0xJQikgJiYgXAotICAgICFkZWZpbmVkKE5ETkJPT1NUX1RFU1RfU09VUkNFKSAmJiAhZGVmaW5lZChORE5CT09TVF9URVNUX0lOQ0xVREVEKQotIyAgZGVmaW5lIE5ETkJPT1NUX0xJQl9OQU1FIG5kbmJvb3N0X3VuaXRfdGVzdF9mcmFtZXdvcmsKLQotIyAgaWYgZGVmaW5lZChORE5CT09TVF9BTExfRFlOX0xJTkspIHx8IGRlZmluZWQoTkROQk9PU1RfVEVTVF9EWU5fTElOSykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0RZTl9MSU5LCi0jICBlbmRpZgotCi0jICBpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvYXV0b19saW5rLmhwcD4KLQotI2VuZGlmICAvLyBhdXRvLWxpbmtpbmcgZGlzYWJsZWQKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgdW5pdF90ZXN0X21haW4gICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotaW50IE5ETkJPT1NUX1RFU1RfREVDTCB1bml0X3Rlc3RfbWFpbiggaW5pdF91bml0X3Rlc3RfZnVuYyBpbml0X2Z1bmMsIGludCBhcmdjLCBjaGFyKiBhcmd2W10gKTsKLQotfX0KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfVEVTVF9EWU5fTElOSykgJiYgZGVmaW5lZChORE5CT09TVF9URVNUX01BSU4pICYmICFkZWZpbmVkKE5ETkJPT1NUX1RFU1RfTk9fTUFJTikKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICBtYWluIGZ1bmN0aW9uIGZvciB0ZXN0cyB1c2luZyBkbGwgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1pbnQgTkROQk9PU1RfVEVTVF9DQUxMX0RFQ0wKLW1haW4oIGludCBhcmdjLCBjaGFyKiBhcmd2W10gKQotewotICAgIHJldHVybiA6Om5kbmJvb3N0Ojp1bml0X3Rlc3Q6OnVuaXRfdGVzdF9tYWluKCAmaW5pdF91bml0X3Rlc3QsIGFyZ2MsIGFyZ3YgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfRFlOX0xJTksgJiYgTkROQk9PU1RfVEVTVF9NQUlOICYmICFORE5CT09TVF9URVNUX05PX01BSU4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX0hQUF8wNzE4OTRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91bml0X3Rlc3RfbG9nLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91bml0X3Rlc3RfbG9nLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTdmY2RlNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X2xvZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNzcgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwMS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBkZWZpbmVzIHNpbmdsZXRvbiBjbGFzcyB1bml0X3Rlc3RfbG9nIGFuZCBhbGwgbWFuaXB1bGF0b3JzLgotLy8gIHVuaXRfdGVzdF9sb2cgaGFzIG91dHB1dCBzdHJlYW0gbGlrZSBpbnRlcmZhY2UuIEl0J3MgaW1wbGVtZW50YXRpb24gaXMKLS8vICBjb21wbGV0ZWx5IGhpZGRlbiB3aXRoIHBpbXBsZSBpZGlvbQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfTE9HX0hQUF8wNzE4OTRHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfTE9HX0hQUF8wNzE4OTRHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdGVzdF9vYnNlcnZlci5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9nbG9iYWxfdHlwZWRlZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvbG9nX2xldmVsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9md2RfZGVjbC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3dyYXBfc3RyaW5nc3RyZWFtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3RyaXZpYWxfc2luZ2xldG9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2xhenlfb3N0cmVhbS5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPGlvc2Z3ZD4gICAvLyBmb3Igc3RkOjpvc3RyZWFtJgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgIGxvZyBtYW5pcHVsYXRvcnMgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgbG9nIHsKLQotc3RydWN0IE5ETkJPT1NUX1RFU1RfREVDTCBiZWdpbiB7Ci0gICAgYmVnaW4oIGNvbnN0X3N0cmluZyBmbiwgc3RkOjpzaXplX3QgbG4gKQotICAgIDogbV9maWxlX25hbWUoIGZuICkKLSAgICAsIG1fbGluZV9udW0oIGxuICkKLSAgICB7fQotCi0gICAgY29uc3Rfc3RyaW5nIG1fZmlsZV9uYW1lOwotICAgIHN0ZDo6c2l6ZV90IG1fbGluZV9udW07Ci19OwotCi1zdHJ1Y3QgZW5kIHt9OwotCi19IC8vIG5hbWVzcGFjZSBsb2cKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgIGVudHJ5X3ZhbHVlX2NvbGxlY3RvciAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgdXRfZGV0YWlsIHsKLQotY2xhc3MgTkROQk9PU1RfVEVTVF9ERUNMIGVudHJ5X3ZhbHVlX2NvbGxlY3RvciB7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3JzCi0gICAgZW50cnlfdmFsdWVfY29sbGVjdG9yKCkgOiBtX2xhc3QoIHRydWUgKSB7fQotICAgIGVudHJ5X3ZhbHVlX2NvbGxlY3RvciggZW50cnlfdmFsdWVfY29sbGVjdG9yIGNvbnN0JiByaHMgKSA6IG1fbGFzdCggdHJ1ZSApIHsgcmhzLm1fbGFzdCA9IGZhbHNlOyB9Ci0gICAgfmVudHJ5X3ZhbHVlX2NvbGxlY3RvcigpOwotCi0gICAgLy8gY29sbGVjdGlvbiBpbnRlcmZhY2UKLSAgICBlbnRyeV92YWx1ZV9jb2xsZWN0b3IgY29uc3QmIG9wZXJhdG9yPDwoIGxhenlfb3N0cmVhbSBjb25zdCYgKSBjb25zdDsKLSAgICBlbnRyeV92YWx1ZV9jb2xsZWN0b3IgY29uc3QmIG9wZXJhdG9yPDwoIGNvbnN0X3N0cmluZyApIGNvbnN0OwotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIG11dGFibGUgYm9vbCAgICBtX2xhc3Q7Ci19OwotCi19IC8vIG5hbWVzcGFjZSB1dF9kZXRhaWwKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICB1bml0X3Rlc3RfbG9nICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBORE5CT09TVF9URVNUX0RFQ0wgdW5pdF90ZXN0X2xvZ190IDogcHVibGljIHRlc3Rfb2JzZXJ2ZXIsIHB1YmxpYyBzaW5nbGV0b248dW5pdF90ZXN0X2xvZ190PiB7Ci1wdWJsaWM6Ci0gICAgLy8gdGVzdF9vYnNlcnZlciBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb24KLSAgICB2b2lkICAgICAgICAgICAgICAgIHRlc3Rfc3RhcnQoIGNvdW50ZXJfdCB0ZXN0X2Nhc2VzX2Ftb3VudCApOwotICAgIHZvaWQgICAgICAgICAgICAgICAgdGVzdF9maW5pc2goKTsKLSAgICB2b2lkICAgICAgICAgICAgICAgIHRlc3RfYWJvcnRlZCgpOwotCi0gICAgdm9pZCAgICAgICAgICAgICAgICB0ZXN0X3VuaXRfc3RhcnQoIHRlc3RfdW5pdCBjb25zdCYgKTsKLSAgICB2b2lkICAgICAgICAgICAgICAgIHRlc3RfdW5pdF9maW5pc2goIHRlc3RfdW5pdCBjb25zdCYsIHVuc2lnbmVkIGxvbmcgZWxhcHNlZCApOwotICAgIHZvaWQgICAgICAgICAgICAgICAgdGVzdF91bml0X3NraXBwZWQoIHRlc3RfdW5pdCBjb25zdCYgKTsKLSAgICB2b2lkICAgICAgICAgICAgICAgIHRlc3RfdW5pdF9hYm9ydGVkKCB0ZXN0X3VuaXQgY29uc3QmICk7Ci0KLSAgICB2b2lkICAgICAgICAgICAgICAgIGFzc2VydGlvbl9yZXN1bHQoIGJvb2wgcGFzc2VkICk7Ci0gICAgdm9pZCAgICAgICAgICAgICAgICBleGNlcHRpb25fY2F1Z2h0KCBleGVjdXRpb25fZXhjZXB0aW9uIGNvbnN0JiApOwotCi0gICAgdmlydHVhbCBpbnQgICAgICAgICBwcmlvcml0eSgpIHsgcmV0dXJuIDE7IH0KLQotICAgIC8vIGxvZyBjb25maWd1cmF0aW9uIG1ldGhvZHMKLSAgICB2b2lkICAgICAgICAgICAgICAgIHNldF9zdHJlYW0oIHN0ZDo6b3N0cmVhbSYgKTsKLSAgICB2b2lkICAgICAgICAgICAgICAgIHNldF90aHJlc2hvbGRfbGV2ZWwoIGxvZ19sZXZlbCApOwotICAgIHZvaWQgICAgICAgICAgICAgICAgc2V0X2Zvcm1hdCggb3V0cHV0X2Zvcm1hdCApOwotICAgIHZvaWQgICAgICAgICAgICAgICAgc2V0X2Zvcm1hdHRlciggdW5pdF90ZXN0X2xvZ19mb3JtYXR0ZXIqICk7Ci0KLSAgICAvLyB0ZXN0IHByb2dyZXNzIGxvZ2dpbmcKLSAgICB2b2lkICAgICAgICAgICAgICAgIHNldF9jaGVja3BvaW50KCBjb25zdF9zdHJpbmcgZmlsZSwgc3RkOjpzaXplX3QgbGluZV9udW0sIGNvbnN0X3N0cmluZyBtc2cgPSBjb25zdF9zdHJpbmcoKSApOwotCi0gICAgLy8gZW50cnkgbG9nZ2luZwotICAgIHVuaXRfdGVzdF9sb2dfdCYgICAgb3BlcmF0b3I8PCggbG9nOjpiZWdpbiBjb25zdCYgKTsgICAgICAgIC8vIGJlZ2luIGVudHJ5IAotICAgIHVuaXRfdGVzdF9sb2dfdCYgICAgb3BlcmF0b3I8PCggbG9nOjplbmQgY29uc3QmICk7ICAgICAgICAgIC8vIGVuZCBlbnRyeQotICAgIHVuaXRfdGVzdF9sb2dfdCYgICAgb3BlcmF0b3I8PCggbG9nX2xldmVsICk7ICAgICAgICAgICAgICAgIC8vIHNldCBlbnRyeSBsZXZlbAotICAgIHVuaXRfdGVzdF9sb2dfdCYgICAgb3BlcmF0b3I8PCggY29uc3Rfc3RyaW5nICk7ICAgICAgICAgICAgIC8vIGxvZyBlbnRyeSB2YWx1ZQotICAgIHVuaXRfdGVzdF9sb2dfdCYgICAgb3BlcmF0b3I8PCggbGF6eV9vc3RyZWFtIGNvbnN0JiApOyAgICAgIC8vIGxvZyBlbnRyeSB2YWx1ZQotCi0gICAgdXRfZGV0YWlsOjplbnRyeV92YWx1ZV9jb2xsZWN0b3Igb3BlcmF0b3IoKSggbG9nX2xldmVsICk7ICAgLy8gaW5pdGlhdGUgZW50cnkgY29sbGVjdGlvbgotCi1wcml2YXRlOgotICAgIGJvb2wgICAgICAgICAgICBsb2dfZW50cnlfc3RhcnQoKTsKLQotICAgIE5ETkJPT1NUX1RFU1RfU0lOR0xFVE9OX0NPTlMoIHVuaXRfdGVzdF9sb2dfdCApOwotfTsgLy8gdW5pdF90ZXN0X2xvZ190Ci0KLU5ETkJPT1NUX1RFU1RfU0lOR0xFVE9OX0lOU1QoIHVuaXRfdGVzdF9sb2cgKQotCi0vLyBoZWxwZXIgbWFjcm9zCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfTE9HX0VOVFJZKCBsbCApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKDo6bmRuYm9vc3Q6OnVuaXRfdGVzdDo6dW5pdF90ZXN0X2xvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIDw8IDo6bmRuYm9vc3Q6OnVuaXRfdGVzdDo6bG9nOjpiZWdpbiggTkROQk9PU1RfVEVTVF9MKF9fRklMRV9fKSwgX19MSU5FX18gKSkobGwpICBcCi0vKiovCi0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgVW5pdCB0ZXN0IGxvZyBpbnRlcmZhY2UgaGVscGVycyAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9NRVNTQUdFKCBNICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVEVTVF9MT0dfRU5UUlkoIDo6bmRuYm9vc3Q6OnVuaXRfdGVzdDo6bG9nX21lc3NhZ2VzICkgICAgXAotICAgIDw8ICg6Om5kbmJvb3N0Ojp1bml0X3Rlc3Q6Omxhenlfb3N0cmVhbTo6aW5zdGFuY2UoKSA8PCBNKSAgICAgIFwKLS8qKi8KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2RlZmluZSBORE5CT09TVF9URVNUX1BBU1NQT0lOVCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICA6Om5kbmJvb3N0Ojp1bml0X3Rlc3Q6OnVuaXRfdGVzdF9sb2cuc2V0X2NoZWNrcG9pbnQoICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX1RFU1RfTChfX0ZJTEVfXyksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oX19MSU5FX18pICkgICAgICAgICAgICAgICAgICAgIFwKLS8qKi8KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2RlZmluZSBORE5CT09TVF9URVNUX0NIRUNLUE9JTlQoIE0gKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICA6Om5kbmJvb3N0Ojp1bml0X3Rlc3Q6OnVuaXRfdGVzdF9sb2cuc2V0X2NoZWNrcG9pbnQoICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX1RFU1RfTChfX0ZJTEVfXyksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oX19MSU5FX18pLCAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgKDo6bmRuYm9vc3Q6OndyYXBfc3RyaW5nc3RyZWFtKCkucmVmKCkgPDwgTSkuc3RyKCkgKSAgICAgICBcCi0vKiovCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfTE9HX0hQUF8wNzE4OTRHRVIKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9sb2dfZm9ybWF0dGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91bml0X3Rlc3RfbG9nX2Zvcm1hdHRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxZDIxNjEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9sb2dfZm9ybWF0dGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDAzLTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTc5OTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IAotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfTE9HX0ZPUk1BVFRFUl9IUFBfMDcxODk0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX0xPR19GT1JNQVRURVJfSFBQXzA3MTg5NEdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZ2xvYmFsX3R5cGVkZWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2xvZ19sZXZlbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZndkX2RlY2wuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9leGVjdXRpb25fbW9uaXRvci5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPGlvc2Z3ZD4KLSNpbmNsdWRlIDxzdHJpbmc+IC8vIGZvciBzdGQ6OnN0cmluZwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgIGxvZ19lbnRyeV9kYXRhICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1zdHJ1Y3QgTkROQk9PU1RfVEVTVF9ERUNMIGxvZ19lbnRyeV9kYXRhIHsKLSAgICBsb2dfZW50cnlfZGF0YSgpCi0gICAgewotICAgICAgICBtX2ZpbGVfbmFtZS5yZXNlcnZlKCAyMDAgKTsKLSAgICB9Ci0KLSAgICBzdGQ6OnN0cmluZyAgICAgbV9maWxlX25hbWU7Ci0gICAgc3RkOjpzaXplX3QgICAgIG1fbGluZV9udW07Ci0gICAgbG9nX2xldmVsICAgICAgIG1fbGV2ZWw7Ci0KLSAgICB2b2lkIGNsZWFyKCkKLSAgICB7Ci0gICAgICAgIG1fZmlsZV9uYW1lLmVyYXNlKCk7Ci0gICAgICAgIG1fbGluZV9udW0gICAgICA9IDA7Ci0gICAgICAgIG1fbGV2ZWwgICAgID0gbG9nX25vdGhpbmc7Ci0gICAgfQotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgIGNoZWNrcG9pbnRfZGF0YSAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1zdHJ1Y3QgTkROQk9PU1RfVEVTVF9ERUNMIGxvZ19jaGVja3BvaW50X2RhdGEKLXsKLSAgICBjb25zdF9zdHJpbmcgICAgbV9maWxlX25hbWU7Ci0gICAgc3RkOjpzaXplX3QgICAgIG1fbGluZV9udW07Ci0gICAgc3RkOjpzdHJpbmcgICAgIG1fbWVzc2FnZTsKLQotICAgIHZvaWQgY2xlYXIoKQotICAgIHsKLSAgICAgICAgbV9maWxlX25hbWUuY2xlYXIoKTsKLSAgICAgICAgbV9saW5lX251bSAgICA9IDA7Ci0gICAgICAgIG1fbWVzc2FnZSA9IHN0ZDo6c3RyaW5nKCk7Ci0gICAgfQotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgdW5pdF90ZXN0X2xvZ19mb3JtYXR0ZXIgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBORE5CT09TVF9URVNUX0RFQ0wgdW5pdF90ZXN0X2xvZ19mb3JtYXR0ZXIgewotcHVibGljOgotICAgIGVudW0gbG9nX2VudHJ5X3R5cGVzIHsgTkROQk9PU1RfVVRMX0VUX0lORk8sIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfVVRMX0VUX01FU1NBR0UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9VVExfRVRfV0FSTklORywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1VUTF9FVF9FUlJPUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1VUTF9FVF9GQVRBTF9FUlJPUiB9OwotCi0gICAgLy8gRGVzdHJ1Y3RvcgotICAgIHZpcnR1YWwgICAgICAgICAgICAgfnVuaXRfdGVzdF9sb2dfZm9ybWF0dGVyKCkge30KLQotICAgIC8vIEZvcm1hdHRlciBpbnRlcmZhY2UKLSAgICB2aXJ0dWFsIHZvaWQgICAgICAgIGxvZ19zdGFydCggc3RkOjpvc3RyZWFtJiwgY291bnRlcl90IHRlc3RfY2FzZXNfYW1vdW50ICkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCAgICAgICAgbG9nX2ZpbmlzaCggc3RkOjpvc3RyZWFtJiApID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgICAgICAgIGxvZ19idWlsZF9pbmZvKCBzdGQ6Om9zdHJlYW0mICkgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkICAgICAgICB0ZXN0X3VuaXRfc3RhcnQoIHN0ZDo6b3N0cmVhbSYsIHRlc3RfdW5pdCBjb25zdCYgdHUgKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkICAgICAgICB0ZXN0X3VuaXRfZmluaXNoKCBzdGQ6Om9zdHJlYW0mLCB0ZXN0X3VuaXQgY29uc3QmIHR1LCB1bnNpZ25lZCBsb25nIGVsYXBzZWQgKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkICAgICAgICB0ZXN0X3VuaXRfc2tpcHBlZCggc3RkOjpvc3RyZWFtJiwgdGVzdF91bml0IGNvbnN0JiApID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCAgICAgICAgbG9nX2V4Y2VwdGlvbiggc3RkOjpvc3RyZWFtJiBvcywgbG9nX2NoZWNrcG9pbnRfZGF0YSBjb25zdCYgY2QsIGV4ZWN1dGlvbl9leGNlcHRpb24gY29uc3QmIGV4ICkKLSAgICB7Ci0gICAgICAgIC8vIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5Ci0gICAgICAgIGxvZ19leGNlcHRpb24oIG9zLCBjZCwgZXgud2hhdCgpICk7Ci0gICAgfQotICAgIHZpcnR1YWwgdm9pZCAgICAgICAgbG9nX2V4Y2VwdGlvbiggc3RkOjpvc3RyZWFtJiwgbG9nX2NoZWNrcG9pbnRfZGF0YSBjb25zdCYsIGNvbnN0X3N0cmluZyAvKiBleHBsYW5hdGlvbiAqLyApIHt9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgICAgICAgIGxvZ19lbnRyeV9zdGFydCggc3RkOjpvc3RyZWFtJiwgbG9nX2VudHJ5X2RhdGEgY29uc3QmLCBsb2dfZW50cnlfdHlwZXMgbGV0ICkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCAgICAgICAgbG9nX2VudHJ5X3ZhbHVlKCBzdGQ6Om9zdHJlYW0mLCBjb25zdF9zdHJpbmcgdmFsdWUgKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkICAgICAgICBsb2dfZW50cnlfdmFsdWUoIHN0ZDo6b3N0cmVhbSYsIGxhenlfb3N0cmVhbSBjb25zdCYgdmFsdWUgKTsgLy8gdGhlcmUgaXMgYSBkZWZhdWx0IGltcGwKLSAgICB2aXJ0dWFsIHZvaWQgICAgICAgIGxvZ19lbnRyeV9maW5pc2goIHN0ZDo6b3N0cmVhbSYgKSA9IDA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9MT0dfRk9STUFUVEVSX0hQUF8wNzE4OTRHRVIKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9tb25pdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91bml0X3Rlc3RfbW9uaXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzNDM3OGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9tb25pdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDEtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZGVmaW5lcyBzcGVjaWZpYyB2ZXJzaW9uIG9mIGV4ZWN1dGlvbiBtb25pdG9yIHVzZWQgdG8gbWFuYWdlZCAKLS8vICBydW4gdW5pdCBvZiB0ZXN0IGNhc2VzLiBUcmFuc2xhdGVzIGV4ZWN1dGlvbiBleGNlcHRpb24gaW50byBlcnJvciBsZXZlbAotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfTU9OSVRPUl9IUFBfMDIwOTA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX01PTklUT1JfSFBQXzAyMDkwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9leGVjdXRpb25fbW9uaXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZndkX2RlY2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvdHJpdmlhbF9zaW5nbGV0b24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvY2FsbGJhY2suaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgdW5pdF90ZXN0X21vbml0b3IgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBORE5CT09TVF9URVNUX0RFQ0wgdW5pdF90ZXN0X21vbml0b3JfdCA6IHB1YmxpYyBzaW5nbGV0b248dW5pdF90ZXN0X21vbml0b3JfdD4sIHB1YmxpYyBleGVjdXRpb25fbW9uaXRvciB7Ci1wdWJsaWM6Ci0gICAgZW51bSBlcnJvcl9sZXZlbCB7IAotICAgICAgICB0ZXN0X2ZhaWwgICAgICAgICAgICAgICA9ICAxLAotICAgICAgICB0ZXN0X29rICAgICAgICAgICAgICAgICA9ICAwLAotICAgICAgICBjb25zdHJ1Y3Rvcl9lcnJvciAgICAgICA9IC0xLCAKLSAgICAgICAgdW5leHBlY3RlZF9leGNlcHRpb24gICAgPSAtMiwgCi0gICAgICAgIG9zX2V4Y2VwdGlvbiAgICAgICAgICAgID0gLTMsIAotICAgICAgICBvc190aW1lb3V0ICAgICAgICAgICAgICA9IC00LCAKLSAgICAgICAgZmF0YWxfZXJyb3IgICAgICAgICAgICAgPSAtNSwgIC8vIGluY2x1ZGVzIGJvdGggc3lzdGVtIGFuZCB1c2VyCi0gICAgICAgIGRlc3RydWN0b3JfZXJyb3IgICAgICAgID0gLTYKLSAgICB9OwotCi0gICAgc3RhdGljIGJvb2wgaXNfY3JpdGljYWxfZXJyb3IoIGVycm9yX2xldmVsIGUgKSB7IHJldHVybiBlIDw9IGZhdGFsX2Vycm9yOyB9Ci0KLSAgICAvLyBtb25pdG9yIG1ldGhvZAotICAgIGVycm9yX2xldmVsIGV4ZWN1dGVfYW5kX3RyYW5zbGF0ZSggdGVzdF9jYXNlIGNvbnN0JiApOwotCi1wcml2YXRlOgotICAgIE5ETkJPT1NUX1RFU1RfU0lOR0xFVE9OX0NPTlMoIHVuaXRfdGVzdF9tb25pdG9yX3QgKTsKLX07Ci0KLU5ETkJPT1NUX1RFU1RfU0lOR0xFVE9OX0lOU1QoIHVuaXRfdGVzdF9tb25pdG9yICkKLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfTU9OSVRPUl9IUFBfMDIwOTA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X3N1aXRlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91bml0X3Rlc3Rfc3VpdGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzcwY2E2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91bml0X3Rlc3Rfc3VpdGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjQ1ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDEtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1Nzk5MiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZGVmaW5lcyBVbml0IFRlc3QgRnJhbWV3b3JrIHB1YmxpYyBBUEkKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX1NVSVRFX0hQUF8wNzE4OTRHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfU1VJVEVfSFBQXzA3MTg5NEdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91bml0X3Rlc3Rfc3VpdGVfaW1wbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9mcmFtZXdvcmsuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgTm9uLWF1dG8gKGV4cGxpY2l0KSB0ZXN0IGNhc2UgaW50ZXJmYWNlICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9DQVNFKCB0ZXN0X2Z1bmN0aW9uICkgXAotbmRuYm9vc3Q6OnVuaXRfdGVzdDo6bWFrZV90ZXN0X2Nhc2UoIG5kbmJvb3N0Ojp1bml0X3Rlc3Q6OmNhbGxiYWNrMDw+KHRlc3RfZnVuY3Rpb24pLCBORE5CT09TVF9URVNUX1NUUklOR0laRSggdGVzdF9mdW5jdGlvbiApICkKLSNkZWZpbmUgTkROQk9PU1RfQ0xBU1NfVEVTVF9DQVNFKCB0ZXN0X2Z1bmN0aW9uLCB0Y19pbnN0YW5jZSApIFwKLW5kbmJvb3N0Ojp1bml0X3Rlc3Q6Om1ha2VfdGVzdF9jYXNlKCh0ZXN0X2Z1bmN0aW9uKSwgTkROQk9PU1RfVEVTVF9TVFJJTkdJWkUoIHRlc3RfZnVuY3Rpb24gKSwgdGNfaW5zdGFuY2UgKQotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICBORE5CT09TVF9URVNUX1NVSVRFICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9TVUlURSggdGVzdHN1aXRlX25hbWUgKSBcCi0oIG5ldyBuZG5ib29zdDo6dW5pdF90ZXN0Ojp0ZXN0X3N1aXRlKCB0ZXN0c3VpdGVfbmFtZSApICkKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgIE5ETkJPT1NUX0FVVE9fVEVTVF9TVUlURSAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jZGVmaW5lIE5ETkJPT1NUX0FVVE9fVEVTVF9TVUlURSggc3VpdGVfbmFtZSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1uYW1lc3BhY2Ugc3VpdGVfbmFtZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1ORE5CT09TVF9BVVRPX1RVX1JFR0lTVFJBUiggc3VpdGVfbmFtZSApKCBORE5CT09TVF9TVFJJTkdJWkUoIHN1aXRlX25hbWUgKSApOyBcCi0vKiovCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgIE5ETkJPT1NUX0ZJWFRVUkVfVEVTVF9TVUlURSAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2RlZmluZSBORE5CT09TVF9GSVhUVVJFX1RFU1RfU1VJVEUoIHN1aXRlX25hbWUsIEYgKSAgICAgICAgICAgICAgICAgICAgICAgXAotTkROQk9PU1RfQVVUT19URVNUX1NVSVRFKCBzdWl0ZV9uYW1lICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdHlwZWRlZiBGIE5ETkJPT1NUX0FVVE9fVEVTVF9DQVNFX0ZJWFRVUkU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLyoqLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgIE5ETkJPT1NUX0FVVE9fVEVTVF9TVUlURV9FTkQgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNkZWZpbmUgTkROQk9PU1RfQVVUT19URVNUX1NVSVRFX0VORCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLU5ETkJPT1NUX0FVVE9fVFVfUkVHSVNUUkFSKCBORE5CT09TVF9KT0lOKCBlbmRfc3VpdGUsIF9fTElORV9fICkgKSggMSApOyAgICAgIFwKLX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qKi8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgIE5ETkJPT1NUX0FVVE9fVEVTVF9DQVNFX0VYUEVDVEVEX0ZBSUxVUkVTICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jZGVmaW5lIE5ETkJPT1NUX0FVVE9fVEVTVF9DQVNFX0VYUEVDVEVEX0ZBSUxVUkVTKCB0ZXN0X25hbWUsIG4gKSAgICAgICAgICBcCi1zdHJ1Y3QgTkROQk9PU1RfQVVUT19UQ19VTklRVUVfSUQoIHRlc3RfbmFtZSApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1zdGF0aWMgc3RydWN0IE5ETkJPT1NUX0pPSU4oIHRlc3RfbmFtZSwgX2V4cF9mYWlsX251bV9zcGVjICkgICAgICAgICAgICAgICBcCi06IG5kbmJvb3N0Ojp1bml0X3Rlc3Q6OnV0X2RldGFpbDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGF1dG9fdGNfZXhwX2ZhaWw8TkROQk9PU1RfQVVUT19UQ19VTklRVUVfSUQoIHRlc3RfbmFtZSApID4gICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfSk9JTiggdGVzdF9uYW1lLCBfZXhwX2ZhaWxfbnVtX3NwZWMgKSgpICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgOiBuZG5ib29zdDo6dW5pdF90ZXN0Ojp1dF9kZXRhaWw6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICBhdXRvX3RjX2V4cF9mYWlsPE5ETkJPT1NUX0FVVE9fVENfVU5JUVVFX0lEKCB0ZXN0X25hbWUgKSA+KCBuICkgICAgICBcCi0gICAge30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi19IE5ETkJPT1NUX0pPSU4oIHRlc3RfbmFtZSwgX2V4cF9mYWlsX251bV9zcGVjX2luc3QgKTsgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0vKiovCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgIE5ETkJPT1NUX0ZJWFRVUkVfVEVTVF9DQVNFICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2RlZmluZSBORE5CT09TVF9GSVhUVVJFX1RFU1RfQ0FTRSggdGVzdF9uYW1lLCBGICkgICAgICAgICAgICAgICAgICAgICAgICAgXAotc3RydWN0IHRlc3RfbmFtZSA6IHB1YmxpYyBGIHsgdm9pZCB0ZXN0X21ldGhvZCgpOyB9OyAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotc3RhdGljIHZvaWQgTkROQk9PU1RfQVVUT19UQ19JTlZPS0VSKCB0ZXN0X25hbWUgKSgpICAgICAgICAgICAgICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlc3RfbmFtZSB0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHQudGVzdF9tZXRob2QoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotc3RydWN0IE5ETkJPT1NUX0FVVE9fVENfVU5JUVVFX0lEKCB0ZXN0X25hbWUgKSB7fTsgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotTkROQk9PU1RfQVVUT19UVV9SRUdJU1RSQVIoIHRlc3RfbmFtZSApKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIG5kbmJvb3N0Ojp1bml0X3Rlc3Q6Om1ha2VfdGVzdF9jYXNlKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAmTkROQk9PU1RfQVVUT19UQ19JTlZPS0VSKCB0ZXN0X25hbWUgKSwgI3Rlc3RfbmFtZSApLCAgICAgICAgICAgICAgXAotICAgIG5kbmJvb3N0Ojp1bml0X3Rlc3Q6OnV0X2RldGFpbDo6YXV0b190Y19leHBfZmFpbDwgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9BVVRPX1RDX1VOSVFVRV9JRCggdGVzdF9uYW1lICk+OjppbnN0YW5jZSgpLT52YWx1ZSgpICk7ICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdm9pZCB0ZXN0X25hbWU6OnRlc3RfbWV0aG9kKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLyoqLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgTkROQk9PU1RfQVVUT19URVNUX0NBU0UgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNkZWZpbmUgTkROQk9PU1RfQVVUT19URVNUX0NBU0UoIHRlc3RfbmFtZSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLU5ETkJPT1NUX0ZJWFRVUkVfVEVTVF9DQVNFKCB0ZXN0X25hbWUsIE5ETkJPT1NUX0FVVE9fVEVTVF9DQVNFX0ZJWFRVUkUgKQotLyoqLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgTkROQk9PU1RfRklYVFVSRV9URVNUX0NBU0VfVEVNUExBVEUgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNkZWZpbmUgTkROQk9PU1RfRklYVFVSRV9URVNUX0NBU0VfVEVNUExBVEUoIHRlc3RfbmFtZSwgdHlwZV9uYW1lLCBUTCwgRiApIFwKLXRlbXBsYXRlPHR5cGVuYW1lIHR5cGVfbmFtZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXN0cnVjdCB0ZXN0X25hbWUgOiBwdWJsaWMgRiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgdm9pZCB0ZXN0X21ldGhvZCgpOyB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXN0cnVjdCBORE5CT09TVF9BVVRPX1RDX0lOVk9LRVIoIHRlc3RfbmFtZSApIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUZXN0VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBzdGF0aWMgdm9pZCBydW4oIG5kbmJvb3N0Ojp0eXBlPFRlc3RUeXBlPiogPSAwICkgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdGVzdF9uYW1lPFRlc3RUeXBlPiB0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdC50ZXN0X21ldGhvZCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLU5ETkJPT1NUX0FVVE9fVFVfUkVHSVNUUkFSKCB0ZXN0X25hbWUgKSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBuZG5ib29zdDo6dW5pdF90ZXN0Ojp1dF9kZXRhaWw6OnRlbXBsYXRlX3Rlc3RfY2FzZV9nZW48ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfQVVUT19UQ19JTlZPS0VSKCB0ZXN0X25hbWUgKSxUTCA+KCAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICBORE5CT09TVF9TVFJJTkdJWkUoIHRlc3RfbmFtZSApICkgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlPHR5cGVuYW1lIHR5cGVfbmFtZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXZvaWQgdGVzdF9uYW1lPHR5cGVfbmFtZT46OnRlc3RfbWV0aG9kKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qKi8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICBORE5CT09TVF9BVVRPX1RFU1RfQ0FTRV9URU1QTEFURSAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jZGVmaW5lIE5ETkJPT1NUX0FVVE9fVEVTVF9DQVNFX1RFTVBMQVRFKCB0ZXN0X25hbWUsIHR5cGVfbmFtZSwgVEwgKSAgICAgICBcCi1ORE5CT09TVF9GSVhUVVJFX1RFU1RfQ0FTRV9URU1QTEFURSggdGVzdF9uYW1lLCB0eXBlX25hbWUsIFRMLCBORE5CT09TVF9BVVRPX1RFU1RfQ0FTRV9GSVhUVVJFICkKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICBORE5CT09TVF9URVNUX0NBU0VfVEVNUExBVEUgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfQ0FTRV9URU1QTEFURSggbmFtZSwgdHlwZWxpc3QgKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIG5kbmJvb3N0Ojp1bml0X3Rlc3Q6OnV0X2RldGFpbDo6dGVtcGxhdGVfdGVzdF9jYXNlX2dlbjxuYW1lLHR5cGVsaXN0ID4oICAgIFwKLSAgICAgICAgTkROQk9PU1RfVEVTVF9TVFJJTkdJWkUoIG5hbWUgKSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0vKiovCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgIE5ETkJPT1NUX1RFU1RfQ0FTRV9URU1QTEFURV9GVU5DVElPTiAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2RlZmluZSBORE5CT09TVF9URVNUX0NBU0VfVEVNUExBVEVfRlVOQ1RJT04oIG5hbWUsIHR5cGVfbmFtZSApICAgIFwKLXRlbXBsYXRlPHR5cGVuYW1lIHR5cGVfbmFtZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi12b2lkIE5ETkJPT1NUX0pPSU4oIG5hbWUsIF9pbXBsICkoIG5kbmJvb3N0Ojp0eXBlPHR5cGVfbmFtZT4qICk7ICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXN0cnVjdCBuYW1lIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVGVzdFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHN0YXRpYyB2b2lkIHJ1biggbmRuYm9vc3Q6OnR5cGU8VGVzdFR5cGU+KiBmcndyZCA9IDAgKSAgICAgICAgIFwKLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgTkROQk9PU1RfSk9JTiggbmFtZSwgX2ltcGwgKSggZnJ3cmQgKTsgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGU8dHlwZW5hbWUgdHlwZV9uYW1lPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXZvaWQgTkROQk9PU1RfSk9JTiggbmFtZSwgX2ltcGwgKSggbmRuYm9vc3Q6OnR5cGU8dHlwZV9uYW1lPiogKSAgICAgICBcCi0vKiovCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgTkROQk9PU1RfR0xPQkFMX0ZJWFVSRSAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2RlZmluZSBORE5CT09TVF9HTE9CQUxfRklYVFVSRSggRiApIFwKLXN0YXRpYyBuZG5ib29zdDo6dW5pdF90ZXN0Ojp1dF9kZXRhaWw6Omdsb2JhbF9maXh0dXJlX2ltcGw8Rj4gTkROQk9PU1RfSk9JTiggZ2ZfLCBGICkgOyBcCi0vKiovCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgIE5ETkJPT1NUX0FVVE9fVEVTVF9DQVNFX0ZJWFRVUkUgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHVuaXRfdGVzdCB7IG5hbWVzcGFjZSB1dF9kZXRhaWwgewotCi1zdHJ1Y3QgbmlsX3Qge307Ci0KLX0gLy8gbmFtZXNwYWNlIHV0X2RldGFpbAotfSAvLyB1bml0X3Rlc3QKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vIEludGVudGlvbmFsbHkgaXMgaW4gZ2xvYmFsIG5hbWVzcGFjZSwgc28gdGhhdCBGSVhVUkVfVEVTVF9TVUlURSBjYW4gcmVzZXQgaXQgaW4gdXNlciBjb2RlLgotdHlwZWRlZiA6Om5kbmJvb3N0Ojp1bml0X3Rlc3Q6OnV0X2RldGFpbDo6bmlsX3QgTkROQk9PU1RfQVVUT19URVNUX0NBU0VfRklYVFVSRTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgQXV0byByZWdpc3RyYXRpb24gZmFjaWxpdHkgaGVscGVyIG1hY3JvcyAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jZGVmaW5lIE5ETkJPT1NUX0FVVE9fVFVfUkVHSVNUUkFSKCB0ZXN0X25hbWUgKSAgICBcCi1zdGF0aWMgbmRuYm9vc3Q6OnVuaXRfdGVzdDo6dXRfZGV0YWlsOjphdXRvX3Rlc3RfdW5pdF9yZWdpc3RyYXIgTkROQk9PU1RfSk9JTiggTkROQk9PU1RfSk9JTiggdGVzdF9uYW1lLCBfcmVnaXN0cmFyICksIF9fTElORV9fICkKLSNkZWZpbmUgTkROQk9PU1RfQVVUT19UQ19JTlZPS0VSKCB0ZXN0X25hbWUgKSAgICAgIE5ETkJPT1NUX0pPSU4oIHRlc3RfbmFtZSwgX2ludm9rZXIgKQotI2RlZmluZSBORE5CT09TVF9BVVRPX1RDX1VOSVFVRV9JRCggdGVzdF9uYW1lICkgICAgTkROQk9PU1RfSk9JTiggdGVzdF9uYW1lLCBfaWQgKQotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgTkROQk9PU1RfVEVTVF9NQUlOICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1RFU1RfTUFJTikKLQotI2lmZGVmIE5ETkJPT1NUX1RFU1RfQUxURVJOQVRJVkVfSU5JVF9BUEkKLWJvb2wgaW5pdF91bml0X3Rlc3QoKSAgICAgICAgICAgICAgICAgICB7Ci0jZWxzZQotOjpuZG5ib29zdDo6dW5pdF90ZXN0Ojp0ZXN0X3N1aXRlKgotaW5pdF91bml0X3Rlc3Rfc3VpdGUoIGludCwgY2hhciogW10gKSAgIHsKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfVEVTVF9NT0RVTEUKLSAgICB1c2luZyBuYW1lc3BhY2UgOjpuZG5ib29zdDo6dW5pdF90ZXN0OwotICAgIGFzc2lnbl9vcCggZnJhbWV3b3JrOjptYXN0ZXJfdGVzdF9zdWl0ZSgpLnBfbmFtZS52YWx1ZSwgTkROQk9PU1RfVEVTVF9TVFJJTkdJWkUoIE5ETkJPT1NUX1RFU1RfTU9EVUxFICkudHJpbSggIlwiIiApLCAwICk7Ci0gICAgCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX1RFU1RfQUxURVJOQVRJVkVfSU5JVF9BUEkKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLSNlbHNlCi0gICAgcmV0dXJuIDA7Ci19Ci0jZW5kaWYKLQotI2VuZGlmCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9TVUlURV9IUFBfMDcxODk0R0VSCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91bml0X3Rlc3Rfc3VpdGVfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X3N1aXRlX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5M2UxMDk3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91bml0X3Rlc3Rfc3VpdGVfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MzQgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwMS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBkZWZpbmVzIHRlc3RfdW5pdCwgdGVzdF9jYXNlLCB0ZXN0X2Nhc2VfcmVzdWx0cywgdGVzdF9zdWl0ZSBhbmQgdGVzdF90cmVlX3Zpc2l0b3IKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX1NVSVRFX0lNUExfSFBQXzA3MTg5NEdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9TVUlURV9JTVBMX0hQUF8wNzE4OTRHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZ2xvYmFsX3R5cGVkZWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvY2xhc3NfcHJvcGVydGllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9jYWxsYmFjay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZndkX2RlY2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdGVzdF9vYnNlcnZlci5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc2hhcmVkX3B0ci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Zvcl9lYWNoLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWRlbnRpdHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnN0LmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8dHlwZWluZm8+IC8vIGZvciB0eXBlaWQKLSNpbmNsdWRlIDxzdHJpbmc+ICAgLy8gZm9yIHN0ZDo6c3RyaW5nCi0jaW5jbHVkZSA8bGlzdD4gICAgIC8vIGZvciBzdGQ6Omxpc3QKLSNpbmNsdWRlIDx2ZWN0b3I+ICAgLy8gZm9yIHN0ZDo6dmVjdG9yCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICAgdGVzdF91bml0ICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIE5ETkJPT1NUX1RFU1RfREVDTCB0ZXN0X3VuaXQgewotcHVibGljOgotICAgIGVudW0geyB0eXBlID0gdHV0X2FueSB9OwotCi0gICAgLy8gQ29uc3RydWN0b3IKLSAgICB0ZXN0X3VuaXQoIGNvbnN0X3N0cmluZyB0dV9uYW1lLCB0ZXN0X3VuaXRfdHlwZSB0ICk7Ci0KLSAgICAvLyBkZXBlbmRlbmNpZXMgbWFuYWdlbWVudAotICAgIHZvaWQgICAgZGVwZW5kc19vbiggdGVzdF91bml0KiB0dSApOwotICAgIGJvb2wgICAgY2hlY2tfZGVwZW5kZW5jaWVzKCkgY29uc3Q7Ci0KLSAgICAvLyBQdWJsaWMgci9vIHByb3BlcnRpZXMKLSAgICB0eXBlZGVmIE5ETkJPT1NUX1JFQURPTkxZX1BST1BFUlRZKHRlc3RfdW5pdF9pZCwoZnJhbWV3b3JrX2ltcGwpKSAgaWRfdDsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX1JFQURPTkxZX1BST1BFUlRZKHRlc3RfdW5pdF9pZCwodGVzdF9zdWl0ZSkpICAgICAgcGFyZW50X2lkX3Q7Ci0gICAgcmVhZG9ubHlfcHJvcGVydHk8dGVzdF91bml0X3R5cGU+ICAgcF90eXBlOyAgICAgICAgICAgICAgICAgLy8gdHlwZSBmb3IgdGhpcyB0ZXN0IHVuaXQKLSAgICByZWFkb25seV9wcm9wZXJ0eTxjb25zdF9zdHJpbmc+ICAgICBwX3R5cGVfbmFtZTsgICAgICAgICAgICAvLyAiY2FzZSIvInN1aXRlIgotICAgIGlkX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfaWQ7ICAgICAgICAgICAgICAgICAgIC8vIHVuaXF1ZSBpZCBmb3IgdGhpcyB0ZXN0IHVuaXQKLSAgICBwYXJlbnRfaWRfdCAgICAgICAgICAgICAgICAgICAgICAgICBwX3BhcmVudF9pZDsgICAgICAgICAgICAvLyBwYXJlbnQgdGVzdCBzdWl0ZSBpZAotCi0gICAgLy8gUHVibGljIHIvdyBwcm9wZXJ0aWVzCi0gICAgcmVhZHdyaXRlX3Byb3BlcnR5PHN0ZDo6c3RyaW5nPiAgICAgcF9uYW1lOyAgICAgICAgICAgICAgICAgLy8gbmFtZSBmb3IgdGhpcyB0ZXN0IHVuaXQKLSAgICByZWFkd3JpdGVfcHJvcGVydHk8dW5zaWduZWQ+ICAgICAgICBwX3RpbWVvdXQ7ICAgICAgICAgICAgICAvLyB0aW1lb3V0IGZvciB0aGUgdGVzdCB1bml0IGV4ZWN1dGlvbiAKLSAgICByZWFkd3JpdGVfcHJvcGVydHk8Y291bnRlcl90PiAgICAgICBwX2V4cGVjdGVkX2ZhaWx1cmVzOyAgICAvLyBudW1iZXIgb2YgZXhwZWN0ZWQgZmFpbHVyZXMgaW4gdGhpcyB0ZXN0IHVuaXQKLSAgICBtdXRhYmxlIHJlYWR3cml0ZV9wcm9wZXJ0eTxib29sPiAgICBwX2VuYWJsZWQ7ICAgICAgICAgICAgICAvLyBlbmFibGVkIHN0YXR1cyBmb3IgdGhpcyB1bml0Ci0KLSAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNyZWFzZV9leHBfZmFpbCggdW5zaWduZWQgbnVtICk7Ci0KLXByb3RlY3RlZDoKLSAgICB+dGVzdF91bml0KCk7Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgc3RkOjpsaXN0PHRlc3RfdW5pdF9pZD4gICAgICAgICAgICAgbV9kZXBlbmRlbmNpZXM7Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgIHRlc3RfY2FzZV9nZW5lcmF0b3IgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIE5ETkJPT1NUX1RFU1RfREVDTCB0ZXN0X3VuaXRfZ2VuZXJhdG9yIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIHRlc3RfdW5pdCogIG5leHQoKSBjb25zdCA9IDA7Ci0KLXByb3RlY3RlZDoKLSAgICBORE5CT09TVF9URVNUX1BST1RFQ1RFRF9WSVJUVUFMIH50ZXN0X3VuaXRfZ2VuZXJhdG9yKCkge30KLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgICB0ZXN0X2Nhc2UgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgTkROQk9PU1RfVEVTVF9ERUNMIHRlc3RfY2FzZSA6IHB1YmxpYyB0ZXN0X3VuaXQgewotcHVibGljOgotICAgIGVudW0geyB0eXBlID0gdHV0X2Nhc2UgfTsKLQotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgdGVzdF9jYXNlKCBjb25zdF9zdHJpbmcgdGNfbmFtZSwgY2FsbGJhY2swPD4gY29uc3QmIHRlc3RfZnVuYyApOwotCi0gICAgLy8gQWNjZXNzIG1ldGhvZHMKLSAgICBjYWxsYmFjazA8PiBjb25zdCYgIHRlc3RfZnVuYygpIGNvbnN0IHsgcmV0dXJuIG1fdGVzdF9mdW5jOyB9Ci0KLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIGZyYW1ld29ya19pbXBsOwotICAgIH50ZXN0X2Nhc2UoKSB7fQotCi0gICAgLy8gTkROQk9PU1RfTVNWQyA8PSAxMjAwIGhhdmUgcHJvYmxlbXMgd2l0aCBjYWxsYmFjayBhcyBwcm9wZXJ0eQotICAgIC8vIERhdGEgbWVtYmVycwotICAgIGNhbGxiYWNrMDw+IG1fdGVzdF9mdW5jOwotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgdGVzdF9zdWl0ZSAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBORE5CT09TVF9URVNUX0RFQ0wgdGVzdF9zdWl0ZSA6IHB1YmxpYyB0ZXN0X3VuaXQgewotcHVibGljOgotICAgIGVudW0geyB0eXBlID0gdHV0X3N1aXRlIH07Ci0KLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIGV4cGxpY2l0ICAgICAgICB0ZXN0X3N1aXRlKCBjb25zdF9zdHJpbmcgdHNfbmFtZSApOwotCi0gICAgLy8gdGVzdCB1bml0IGxpc3QgbWFuYWdlbWVudAotICAgIHZvaWQgICAgICAgICAgICBhZGQoIHRlc3RfdW5pdCogdHUsIGNvdW50ZXJfdCBleHBlY3RlZF9mYWlsdXJlcyA9IDAsIHVuc2lnbmVkIHRpbWVvdXQgPSAwICk7Ci0gICAgdm9pZCAgICAgICAgICAgIGFkZCggdGVzdF91bml0X2dlbmVyYXRvciBjb25zdCYgZ2VuLCB1bnNpZ25lZCB0aW1lb3V0ID0gMCApOwotICAgIHZvaWQgICAgICAgICAgICByZW1vdmUoIHRlc3RfdW5pdF9pZCBpZCApOwotCi0gICAgLy8gYWNjZXNzIG1ldGhvZHMKLSAgICB0ZXN0X3VuaXRfaWQgICAgZ2V0KCBjb25zdF9zdHJpbmcgdHVfbmFtZSApIGNvbnN0OwotICAgIHN0ZDo6c2l6ZV90ICAgICBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9tZW1iZXJzLnNpemUoKTsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgZnJpZW5kIE5ETkJPT1NUX1RFU1RfREVDTCAKLSAgICB2b2lkICAgICAgICB0cmF2ZXJzZV90ZXN0X3RyZWUoIHRlc3Rfc3VpdGUgY29uc3QmLCB0ZXN0X3RyZWVfdmlzaXRvciYgKTsKLSAgICBmcmllbmQgY2xhc3MgZnJhbWV3b3JrX2ltcGw7Ci0gICAgdmlydHVhbCAgICAgfnRlc3Rfc3VpdGUoKSB7fQotCi0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgc3RkOjp2ZWN0b3I8dGVzdF91bml0X2lkPiBtX21lbWJlcnM7Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICBtYXN0ZXJfdGVzdF9zdWl0ZSAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIE5ETkJPT1NUX1RFU1RfREVDTCBtYXN0ZXJfdGVzdF9zdWl0ZV90IDogcHVibGljIHRlc3Rfc3VpdGUgewotcHVibGljOgotICAgIG1hc3Rlcl90ZXN0X3N1aXRlX3QoKSA6IHRlc3Rfc3VpdGUoICJNYXN0ZXIgVGVzdCBTdWl0ZSIgKQotICAgICwgYXJnYyggMCApCi0gICAgLCBhcmd2KCAwICkKLSAgICB7fQotICAgIAotICAgIC8vIERhdGEgbWVtYmVycyAgICAKLSAgICBpbnQgICAgICBhcmdjOwotICAgIGNoYXIqKiAgIGFyZ3Y7Ci19OwotCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIHRlc3RfdHJlZV92aXNpdG9yICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgTkROQk9PU1RfVEVTVF9ERUNMIHRlc3RfdHJlZV92aXNpdG9yIHsKLXB1YmxpYzoKLSAgICAvLyB0ZXN0IHRyZWUgdmlzaXRvciBpbnRlcmZhY2UKLSAgICB2aXJ0dWFsIHZvaWQgICAgdmlzaXQoIHRlc3RfY2FzZSBjb25zdCYgKSAgICAgICAgICAgICAgIHt9Ci0gICAgdmlydHVhbCBib29sICAgIHRlc3Rfc3VpdGVfc3RhcnQoIHRlc3Rfc3VpdGUgY29uc3QmICkgICB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkICAgIHRlc3Rfc3VpdGVfZmluaXNoKCB0ZXN0X3N1aXRlIGNvbnN0JiApICB7fQotCi1wcm90ZWN0ZWQ6Ci0gICAgTkROQk9PU1RfVEVTVF9QUk9URUNURURfVklSVFVBTCB+dGVzdF90cmVlX3Zpc2l0b3IoKSB7fQotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgdHJhdmVyc2VfdGVzdF90cmVlICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1ORE5CT09TVF9URVNUX0RFQ0wgdm9pZCAgICB0cmF2ZXJzZV90ZXN0X3RyZWUoIHRlc3RfY2FzZSBjb25zdCYsIHRlc3RfdHJlZV92aXNpdG9yJiApOwotTkROQk9PU1RfVEVTVF9ERUNMIHZvaWQgICAgdHJhdmVyc2VfdGVzdF90cmVlKCB0ZXN0X3N1aXRlIGNvbnN0JiwgdGVzdF90cmVlX3Zpc2l0b3ImICk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgdm9pZCAgICB0cmF2ZXJzZV90ZXN0X3RyZWUoIHRlc3RfdW5pdF9pZCAgICAgLCB0ZXN0X3RyZWVfdmlzaXRvciYgKTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotaW5saW5lIHZvaWQKLXRyYXZlcnNlX3Rlc3RfdHJlZSggdGVzdF91bml0IGNvbnN0JiB0dSwgdGVzdF90cmVlX3Zpc2l0b3ImIFYgKQotewotICAgIGlmKCB0dS5wX3R5cGUgPT0gdHV0X2Nhc2UgKQotICAgICAgICB0cmF2ZXJzZV90ZXN0X3RyZWUoIHN0YXRpY19jYXN0PHRlc3RfY2FzZSBjb25zdCY+KCB0dSApLCBWICk7Ci0gICAgZWxzZQotICAgICAgICB0cmF2ZXJzZV90ZXN0X3RyZWUoIHN0YXRpY19jYXN0PHRlc3Rfc3VpdGUgY29uc3QmPiggdHUgKSwgViApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgdGVzdF9jYXNlX2NvdW50ZXIgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIHRlc3RfY2FzZV9jb3VudGVyIDogcHVibGljIHRlc3RfdHJlZV92aXNpdG9yIHsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIHRlc3RfY2FzZV9jb3VudGVyKCkgOiBwX2NvdW50KCAwICkge30KLQotICAgIE5ETkJPT1NUX1JFQURPTkxZX1BST1BFUlRZKCBjb3VudGVyX3QsICh0ZXN0X2Nhc2VfY291bnRlcikpIHBfY291bnQ7Ci1wcml2YXRlOgotICAgIC8vIHRlc3QgdHJlZSB2aXNpdG9yIGludGVyZmFjZQotICAgIHZpcnR1YWwgdm9pZCAgICB2aXNpdCggdGVzdF9jYXNlIGNvbnN0JiApOwotICAgIHZpcnR1YWwgYm9vbCAgICB0ZXN0X3N1aXRlX3N0YXJ0KCB0ZXN0X3N1aXRlIGNvbnN0JiB0cyApICAgIHsgcmV0dXJuIHRzLnBfZW5hYmxlZDsgfQotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgdGVzdF9iZWluZ19hYm9ydGVkICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1zdHJ1Y3QgTkROQk9PU1RfVEVTVF9ERUNMIHRlc3RfYmVpbmdfYWJvcnRlZCB7fTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgb2JqZWN0IGdlbmVyYXRvcnMgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgdXRfZGV0YWlsIHsKLQotTkROQk9PU1RfVEVTVF9ERUNMIHN0ZDo6c3RyaW5nIG5vcm1hbGl6ZV90ZXN0X2Nhc2VfbmFtZSggY29uc3Rfc3RyaW5nIHR1X25hbWUgKTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgSW5zdGFuY2VUeXBlLHR5cGVuYW1lIFVzZXJUZXN0Q2FzZT4KLXN0cnVjdCB1c2VyX3RjX21ldGhvZF9pbnZva2VyIHsKLSAgICB0eXBlZGVmIHZvaWQgKFVzZXJUZXN0Q2FzZTo6KlRlc3RNZXRob2QgKSgpOwotCi0gICAgdXNlcl90Y19tZXRob2RfaW52b2tlciggc2hhcmVkX3B0cjxJbnN0YW5jZVR5cGU+IGluc3QsIFRlc3RNZXRob2QgdGVzdF9tZXRob2QgKQotICAgIDogbV9pbnN0KCBpbnN0ICksIG1fdGVzdF9tZXRob2QoIHRlc3RfbWV0aG9kICkge30KLQotICAgIHZvaWQgb3BlcmF0b3IoKSgpIHsgKCgqbV9pbnN0KS4qbV90ZXN0X21ldGhvZCkoKTsgfQotCi0gICAgc2hhcmVkX3B0cjxJbnN0YW5jZVR5cGU+IG1faW5zdDsKLSAgICBUZXN0TWV0aG9kICAgICAgICAgICAgICAgbV90ZXN0X21ldGhvZDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIHV0X2RldGFpbAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1pbmxpbmUgdGVzdF9jYXNlKgotbWFrZV90ZXN0X2Nhc2UoIGNhbGxiYWNrMDw+IGNvbnN0JiB0ZXN0X2Z1bmMsIGNvbnN0X3N0cmluZyB0Y19uYW1lICkKLXsKLSAgICByZXR1cm4gbmV3IHRlc3RfY2FzZSggdXRfZGV0YWlsOjpub3JtYWxpemVfdGVzdF9jYXNlX25hbWUoIHRjX25hbWUgKSwgdGVzdF9mdW5jICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFVzZXJUZXN0Q2FzZSwgdHlwZW5hbWUgSW5zdGFuY2VUeXBlPgotaW5saW5lIHRlc3RfY2FzZSoKLW1ha2VfdGVzdF9jYXNlKCB2b2lkIChVc2VyVGVzdENhc2U6OiogICAgICAgICAgIHRlc3RfbWV0aG9kICkoKSwKLSAgICAgICAgICAgICAgICBjb25zdF9zdHJpbmcgICAgICAgICAgICAgICAgICAgIHRjX25hbWUsCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8SW5zdGFuY2VUeXBlPiB1c2VyX3Rlc3RfY2FzZSApCi17Ci0gICAgcmV0dXJuIG5ldyB0ZXN0X2Nhc2UoIHV0X2RldGFpbDo6bm9ybWFsaXplX3Rlc3RfY2FzZV9uYW1lKCB0Y19uYW1lICksIAotICAgICAgICAgICAgICAgICAgICAgICAgICB1dF9kZXRhaWw6OnVzZXJfdGNfbWV0aG9kX2ludm9rZXI8SW5zdGFuY2VUeXBlLFVzZXJUZXN0Q2FzZT4oIHVzZXJfdGVzdF9jYXNlLCB0ZXN0X21ldGhvZCApICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgYXV0b190ZXN0X3VuaXRfcmVnaXN0cmFyICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIHV0X2RldGFpbCB7Ci0KLXN0cnVjdCBORE5CT09TVF9URVNUX0RFQ0wgYXV0b190ZXN0X3VuaXRfcmVnaXN0cmFyCi17Ci0gICAgLy8gQ29uc3RydWN0b3JzCi0gICAgICAgICAgICAgICAgYXV0b190ZXN0X3VuaXRfcmVnaXN0cmFyKCB0ZXN0X2Nhc2UqIHRjLCBjb3VudGVyX3QgZXhwX2ZhaWwgKTsKLSAgICBleHBsaWNpdCAgICBhdXRvX3Rlc3RfdW5pdF9yZWdpc3RyYXIoIGNvbnN0X3N0cmluZyB0c19uYW1lICk7Ci0gICAgZXhwbGljaXQgICAgYXV0b190ZXN0X3VuaXRfcmVnaXN0cmFyKCB0ZXN0X3VuaXRfZ2VuZXJhdG9yIGNvbnN0JiB0Y19nZW4gKTsKLSAgICBleHBsaWNpdCAgICBhdXRvX3Rlc3RfdW5pdF9yZWdpc3RyYXIoIGludCApOwotCi1wcml2YXRlOgotICAgIHN0YXRpYyBzdGQ6Omxpc3Q8dGVzdF9zdWl0ZSo+JiBjdXJyX3RzX3N0b3JlKCk7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGF1dG9fdGNfZXhwX2ZhaWwgewotICAgIGF1dG9fdGNfZXhwX2ZhaWwoKSA6IG1fdmFsdWUoIDAgKSB7fQotCi0gICAgZXhwbGljaXQgICAgYXV0b190Y19leHBfZmFpbCggdW5zaWduZWQgdiApCi0gICAgOiBtX3ZhbHVlKCB2ICkKLSAgICB7Ci0gICAgICAgIGluc3RhbmNlKCkgPSB0aGlzOwotICAgIH0KLQotICAgIHN0YXRpYyBhdXRvX3RjX2V4cF9mYWlsKiYgaW5zdGFuY2UoKSAKLSAgICB7Ci0gICAgICAgIHN0YXRpYyBhdXRvX3RjX2V4cF9mYWlsICAgICBpbnN0OyAKLSAgICAgICAgc3RhdGljIGF1dG9fdGNfZXhwX2ZhaWwqICAgIGluc3RfcHRyID0gJmluc3Q7IAotCi0gICAgICAgIHJldHVybiBpbnN0X3B0cjsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCAgICB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICB1bnNpZ25lZCAgICBtX3ZhbHVlOwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgdXRfZGV0YWlsCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICBnbG9iYWxfZml4dHVyZSAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgTkROQk9PU1RfVEVTVF9ERUNMIGdsb2JhbF9maXh0dXJlIDogcHVibGljIHRlc3Rfb2JzZXJ2ZXIgeyAKLXB1YmxpYzogCi0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBnbG9iYWxfZml4dHVyZSgpOwotfTsgCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSB1dF9kZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGPiAKLXN0cnVjdCBnbG9iYWxfZml4dHVyZV9pbXBsIDogcHVibGljIGdsb2JhbF9maXh0dXJlIHsKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIGdsb2JhbF9maXh0dXJlX2ltcGwoKTogbV9maXh1cmUoIDAgKSAgICB7fQotCi0gICAgLy8gdGVzdCBvYnNlcnZlciBpbnRlcmZhY2UKLSAgICB2aXJ0dWFsIHZvaWQgICAgdGVzdF9zdGFydCggY291bnRlcl90ICkgeyBtX2ZpeHVyZSA9IG5ldyBGOyB9Ci0gICAgdmlydHVhbCB2b2lkICAgIHRlc3RfZmluaXNoKCkgICAgICAgICAgIHsgZGVsZXRlIG1fZml4dXJlOyBtX2ZpeHVyZSA9IDA7IH0gCi0gICAgdmlydHVhbCB2b2lkICAgIHRlc3RfYWJvcnRlZCgpICAgICAgICAgIHsgZGVsZXRlIG1fZml4dXJlOyBtX2ZpeHVyZSA9IDA7IH0gCi0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgRiogIG1fZml4dXJlOwotfTsgCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICB0ZXN0X2Nhc2VfdGVtcGxhdGVfaW52b2tlciAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVGVzdENhc2VUZW1wbGF0ZSx0eXBlbmFtZSBUZXN0VHlwZT4KLWNsYXNzIHRlc3RfY2FzZV90ZW1wbGF0ZV9pbnZva2VyIHsKLXB1YmxpYzoKLSAgICB2b2lkICAgIG9wZXJhdG9yKCkoKSAgICB7IFRlc3RDYXNlVGVtcGxhdGU6OnJ1biggKG5kbmJvb3N0Ojp0eXBlPFRlc3RUeXBlPiopMCApOyB9Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgIGdlbmVyYXRlX3Rlc3RfY2FzZV80X3R5cGUgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEdlbmVyYXRvcix0eXBlbmFtZSBUZXN0Q2FzZVRlbXBsYXRlPgotc3RydWN0IGdlbmVyYXRlX3Rlc3RfY2FzZV80X3R5cGUgewotICAgIGV4cGxpY2l0ICAgIGdlbmVyYXRlX3Rlc3RfY2FzZV80X3R5cGUoIGNvbnN0X3N0cmluZyB0Y19uYW1lLCBHZW5lcmF0b3ImIEcgKQotICAgIDogbV90ZXN0X2Nhc2VfbmFtZSggdGNfbmFtZSApCi0gICAgLCBtX2hvbGRlciggRyApCi0gICAge30KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRlc3RUeXBlPgotICAgIHZvaWQgICAgICAgIG9wZXJhdG9yKCkoIG1wbDo6aWRlbnRpdHk8VGVzdFR5cGU+ICkKLSAgICB7Ci0gICAgICAgIHN0ZDo6c3RyaW5nIGZ1bGxfbmFtZTsKLSAgICAgICAgYXNzaWduX29wKCBmdWxsX25hbWUsIG1fdGVzdF9jYXNlX25hbWUsIDAgKTsKLSAgICAgICAgZnVsbF9uYW1lICs9ICc8JzsKLSAgICAgICAgZnVsbF9uYW1lICs9IHR5cGVpZChUZXN0VHlwZSkubmFtZSgpOwotICAgICAgICBpZiggbmRuYm9vc3Q6OmlzX2NvbnN0PFRlc3RUeXBlPjo6dmFsdWUgKQotICAgICAgICAgICAgZnVsbF9uYW1lICs9ICIgY29uc3QiOwotICAgICAgICBmdWxsX25hbWUgKz0gJz4nOwotCi0gICAgICAgIG1faG9sZGVyLm1fdGVzdF9jYXNlcy5wdXNoX2JhY2soIAotICAgICAgICAgICAgbmV3IHRlc3RfY2FzZSggZnVsbF9uYW1lLCB0ZXN0X2Nhc2VfdGVtcGxhdGVfaW52b2tlcjxUZXN0Q2FzZVRlbXBsYXRlLFRlc3RUeXBlPigpICkgKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgY29uc3Rfc3RyaW5nICAgIG1fdGVzdF9jYXNlX25hbWU7Ci0gICAgR2VuZXJhdG9yJiAgICAgIG1faG9sZGVyOwotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICB0ZXN0X2Nhc2VfdGVtcGxhdGUgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUZXN0Q2FzZVRlbXBsYXRlLHR5cGVuYW1lIFRlc3RUeXBlc0xpc3Q+Ci1jbGFzcyB0ZW1wbGF0ZV90ZXN0X2Nhc2VfZ2VuIDogcHVibGljIHRlc3RfdW5pdF9nZW5lcmF0b3IgewotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgdGVtcGxhdGVfdGVzdF9jYXNlX2dlbiggY29uc3Rfc3RyaW5nIHRjX25hbWUgKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBnZW5lcmF0ZV90ZXN0X2Nhc2VfNF90eXBlPHRlbXBsYXRlX3Rlc3RfY2FzZV9nZW48VGVzdENhc2VUZW1wbGF0ZSxUZXN0VHlwZXNMaXN0PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3RDYXNlVGVtcGxhdGUKLSAgICAgICAgPiBzaW5nbGVfdGVzdF9nZW47Ci0gICAgICAgIG1wbDo6Zm9yX2VhY2g8VGVzdFR5cGVzTGlzdCxtcGw6Om1ha2VfaWRlbnRpdHk8bXBsOjpfPiA+KCBzaW5nbGVfdGVzdF9nZW4oIHRjX25hbWUsICp0aGlzICkgKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHRlc3RfdW5pdCogbmV4dCgpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiggbV90ZXN0X2Nhc2VzLmVtcHR5KCkgKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgICAgIHRlc3RfdW5pdCogcmVzID0gbV90ZXN0X2Nhc2VzLmZyb250KCk7Ci0gICAgICAgIG1fdGVzdF9jYXNlcy5wb3BfZnJvbnQoKTsKLQotICAgICAgICByZXR1cm4gcmVzOwotICAgIH0KLQotICAgIC8vIERhdGEgbWVtYmVycwotICAgIG11dGFibGUgc3RkOjpsaXN0PHRlc3RfdW5pdCo+IG1fdGVzdF9jYXNlczsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHV0X2RldGFpbAotCi19IC8vIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX1NVSVRFX0lNUExfSFBQXzA3MTg5NEdFUgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvYWxnb3JpdGhtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9hbGdvcml0aG0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZmY3ZDA2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9hbGdvcml0aG0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjI4ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDQtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogYWRkaXRpb24gdG8gU1RMIGFsZ29yaXRobXMKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX0FMR09SSVRITV9IUFBfMDYyMzA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX0FMR09SSVRITV9IUFBfMDYyMzA0R0VSCi0KLSNpbmNsdWRlIDx1dGlsaXR5PgotI2luY2x1ZGUgPGFsZ29yaXRobT4gLy8gc3RkOjpmaW5kCi0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4gLy8gc3RkOjpiaW5kMXN0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi0vLy8gQGJyaWVmIHRoaXMgYWxnb3JpdGhtIHNlYXJjaCB0aHJvdWdoIHR3byBjb2xsZWN0aW9ucyBmb3IgZmlyc3QgbWlzbWF0Y2ggcG9zaXRpb24gdGhhdCBnZXQgcmV0dXJuZWQgYXMgYSBwYWlyCi0vLy8gb2YgaXRlcmF0b3JzLCBmaXJzdCBwb2ludGluZyB0byB0aGUgbWlzbWF0Y2ggcG9zaXRpb24gaW4gZmlyc3QgY29sbGVjdGlvbiwgc2Vjb25kIGl0ZXJhdG9yIGluIHNlY29uZCBvbmUKLQotLy8vIEBwYXJhbSBmaXJzdDEgLSBmaXJzdCBjb2xsZWN0aW9uIGJlZ2luIGl0ZXJhdG9yCi0vLy8gQHBhcmFtIGxhc3QxIC0gZmlyc3QgY29sbGVjdGlvbiBlbmQgaXRlcmF0b3IKLS8vLyBAcGFyYW0gZmlyc3QyIC0gc2Vjb25kIGNvbGxlY3Rpb24gYmVnaW4gaXRlcmF0b3IKLS8vLyBAcGFyYW0gbGFzdDIgLSBzZWNvbmQgY29sbGVjdGlvbiBlbmQgaXRlcmF0b3IKLXRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0ZXIxLCBjbGFzcyBJbnB1dEl0ZXIyPgotaW5saW5lIHN0ZDo6cGFpcjxJbnB1dEl0ZXIxLCBJbnB1dEl0ZXIyPgotbWlzbWF0Y2goIElucHV0SXRlcjEgZmlyc3QxLCBJbnB1dEl0ZXIxIGxhc3QxLAotICAgICAgICAgIElucHV0SXRlcjIgZmlyc3QyLCBJbnB1dEl0ZXIyIGxhc3QyICkKLXsKLSAgICB3aGlsZSggZmlyc3QxICE9IGxhc3QxICYmIGZpcnN0MiAhPSBsYXN0MiAmJiAqZmlyc3QxID09ICpmaXJzdDIgKSB7Ci0gICAgICAgICsrZmlyc3QxOwotICAgICAgICArK2ZpcnN0MjsKLSAgICB9Ci0KLSAgICByZXR1cm4gc3RkOjpwYWlyPElucHV0SXRlcjEsIElucHV0SXRlcjI+KGZpcnN0MSwgZmlyc3QyKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8vIEBicmllZiB0aGlzIGFsZ29yaXRobSBzZWFyY2ggdGhyb3VnaCB0d28gY29sbGVjdGlvbnMgZm9yIGZpcnN0IG1pc21hdGNoIHBvc2l0aW9uIHRoYXQgZ2V0IHJldHVybmVkIGFzIGEgcGFpcgotLy8vIG9mIGl0ZXJhdG9ycywgZmlyc3QgcG9pbnRpbmcgdG8gdGhlIG1pc21hdGNoIHBvc2l0aW9uIGluIGZpcnN0IGNvbGxlY3Rpb24sIHNlY29uZCBpdGVyYXRvciBpbiBzZWNvbmQgb25lLiBUaGlzIGFsZ29yaXRobXMKLS8vLyB1c2VzIHN1cHBsaWVkIHByZWRpY2F0ZSBmb3IgY29sbGVjdGlvbiBlbGVtZW50cyBjb21wYXJpc29uCi0KLS8vLyBAcGFyYW0gZmlyc3QxIC0gZmlyc3QgY29sbGVjdGlvbiBiZWdpbiBpdGVyYXRvcgotLy8vIEBwYXJhbSBsYXN0MSAtIGZpcnN0IGNvbGxlY3Rpb24gZW5kIGl0ZXJhdG9yCi0vLy8gQHBhcmFtIGZpcnN0MiAtIHNlY29uZCBjb2xsZWN0aW9uIGJlZ2luIGl0ZXJhdG9yCi0vLy8gQHBhcmFtIGxhc3QyIC0gc2Vjb25kIGNvbGxlY3Rpb24gZW5kIGl0ZXJhdG9yCi0vLy8gQHBhcmFtIHByZWQgLSBwcmVkaWNhdGUgdG8gYmUgdXNlZCBmb3Igc2VhcmNoCi10ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyMSwgY2xhc3MgSW5wdXRJdGVyMiwgY2xhc3MgUHJlZGljYXRlPgotaW5saW5lIHN0ZDo6cGFpcjxJbnB1dEl0ZXIxLCBJbnB1dEl0ZXIyPgotbWlzbWF0Y2goIElucHV0SXRlcjEgZmlyc3QxLCBJbnB1dEl0ZXIxIGxhc3QxLAotICAgICAgICAgIElucHV0SXRlcjIgZmlyc3QyLCBJbnB1dEl0ZXIyIGxhc3QyLAotICAgICAgICAgIFByZWRpY2F0ZSBwcmVkICkKLXsKLSAgICB3aGlsZSggZmlyc3QxICE9IGxhc3QxICYmIGZpcnN0MiAhPSBsYXN0MiAmJiBwcmVkKCAqZmlyc3QxLCAqZmlyc3QyICkgKSB7Ci0gICAgICAgICsrZmlyc3QxOwotICAgICAgICArK2ZpcnN0MjsKLSAgICB9Ci0KLSAgICByZXR1cm4gc3RkOjpwYWlyPElucHV0SXRlcjEsIElucHV0SXRlcjI+KGZpcnN0MSwgZmlyc3QyKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8vIEBicmllZiB0aGlzIGFsZ29yaXRobSBzZWFyY2ggdGhyb3VnaCBmaXJzdCBjb2xsZWN0aW9uIGZvciBmaXJzdCBlbGVtZW50IHRoYXQgZG9lcyBub3QgYmVsb25nIGEgc2Vjb25kIG9uZQotCi0vLy8gQHBhcmFtIGZpcnN0MSAtIGZpcnN0IGNvbGxlY3Rpb24gYmVnaW4gaXRlcmF0b3IKLS8vLyBAcGFyYW0gbGFzdDEgLSBmaXJzdCBjb2xsZWN0aW9uIGVuZCBpdGVyYXRvcgotLy8vIEBwYXJhbSBmaXJzdDIgLSBzZWNvbmQgY29sbGVjdGlvbiBiZWdpbiBpdGVyYXRvcgotLy8vIEBwYXJhbSBsYXN0MiAtIHNlY29uZCBjb2xsZWN0aW9uIGVuZCBpdGVyYXRvcgotdGVtcGxhdGU8Y2xhc3MgRm9yd2FyZEl0ZXJhdG9yMSwgY2xhc3MgRm9yd2FyZEl0ZXJhdG9yMj4KLWlubGluZSBGb3J3YXJkSXRlcmF0b3IxCi1maW5kX2ZpcnN0X25vdF9vZiggRm9yd2FyZEl0ZXJhdG9yMSBmaXJzdDEsIEZvcndhcmRJdGVyYXRvcjEgbGFzdDEsIAotICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvcjIgZmlyc3QyLCBGb3J3YXJkSXRlcmF0b3IyIGxhc3QyICkKLXsKLSAgICB3aGlsZSggZmlyc3QxICE9IGxhc3QxICkgewotICAgICAgICBpZiggc3RkOjpmaW5kKCBmaXJzdDIsIGxhc3QyLCAqZmlyc3QxICkgPT0gbGFzdDIgKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICsrZmlyc3QxOwotICAgIH0KLQotICAgIHJldHVybiBmaXJzdDE7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vLyBAYnJpZWYgdGhpcyBhbGdvcml0aG0gc2VhcmNoIHRocm91Z2ggZmlyc3QgY29sbGVjdGlvbiBmb3IgZmlyc3QgZWxlbWVudCB0aGF0IGRvZXMgbm90IHNhdGlzZnkgYmluYXJ5IAotLy8vIHByZWRpY2F0ZSBpbiBjb25qdW5jdGlvbiB3aWxsIGFueSBlbGVtZW50IGluIHNlY29uZCBjb2xsZWN0aW9uCi0KLS8vLyBAcGFyYW0gZmlyc3QxIC0gZmlyc3QgY29sbGVjdGlvbiBiZWdpbiBpdGVyYXRvcgotLy8vIEBwYXJhbSBsYXN0MSAtIGZpcnN0IGNvbGxlY3Rpb24gZW5kIGl0ZXJhdG9yCi0vLy8gQHBhcmFtIGZpcnN0MiAtIHNlY29uZCBjb2xsZWN0aW9uIGJlZ2luIGl0ZXJhdG9yCi0vLy8gQHBhcmFtIGxhc3QyIC0gc2Vjb25kIGNvbGxlY3Rpb24gZW5kIGl0ZXJhdG9yCi0vLy8gQHBhcmFtIHByZWQgLSBwcmVkaWNhdGUgdG8gYmUgdXNlZCBmb3Igc2VhcmNoCi10ZW1wbGF0ZTxjbGFzcyBGb3J3YXJkSXRlcmF0b3IxLCBjbGFzcyBGb3J3YXJkSXRlcmF0b3IyLCBjbGFzcyBQcmVkaWNhdGU+Ci1pbmxpbmUgRm9yd2FyZEl0ZXJhdG9yMQotZmluZF9maXJzdF9ub3Rfb2YoIEZvcndhcmRJdGVyYXRvcjEgZmlyc3QxLCBGb3J3YXJkSXRlcmF0b3IxIGxhc3QxLCAKLSAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3IyIGZpcnN0MiwgRm9yd2FyZEl0ZXJhdG9yMiBsYXN0MiwgCi0gICAgICAgICAgICAgICAgICAgUHJlZGljYXRlIHByZWQgKQotewotICAgIHdoaWxlKCBmaXJzdDEgIT0gbGFzdDEgKSB7Ci0gICAgICAgIGlmKCBzdGQ6OmZpbmRfaWYoIGZpcnN0MiwgbGFzdDIsIHN0ZDo6YmluZDFzdCggcHJlZCwgKmZpcnN0MSApICkgPT0gbGFzdDIgKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICsrZmlyc3QxOwotICAgIH0KLQotICAgIHJldHVybiBmaXJzdDE7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vLyBAYnJpZWYgdGhpcyBhbGdvcml0aG0gc2VhcmNoIHRocm91Z2ggZmlyc3QgY29sbGVjdGlvbiBmb3IgbGFzdCBlbGVtZW50IHRoYXQgYmVsb25ncyB0byBhIHNlY29uZCBvbmUKLQotLy8vIEBwYXJhbSBmaXJzdDEgLSBmaXJzdCBjb2xsZWN0aW9uIGJlZ2luIGl0ZXJhdG9yCi0vLy8gQHBhcmFtIGxhc3QxIC0gZmlyc3QgY29sbGVjdGlvbiBlbmQgaXRlcmF0b3IKLS8vLyBAcGFyYW0gZmlyc3QyIC0gc2Vjb25kIGNvbGxlY3Rpb24gYmVnaW4gaXRlcmF0b3IKLS8vLyBAcGFyYW0gbGFzdDIgLSBzZWNvbmQgY29sbGVjdGlvbiBlbmQgaXRlcmF0b3IKLXRlbXBsYXRlPGNsYXNzIEJpZGlyZWN0aW9uYWxJdGVyYXRvcjEsIGNsYXNzIEZvcndhcmRJdGVyYXRvcjI+Ci1pbmxpbmUgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMQotZmluZF9sYXN0X29mKCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IxIGZpcnN0MSwgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMSBsYXN0MSwgCi0gICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvcjIgZmlyc3QyLCBGb3J3YXJkSXRlcmF0b3IyIGxhc3QyICkKLXsKLSAgICBpZiggZmlyc3QxID09IGxhc3QxIHx8IGZpcnN0MiA9PSBsYXN0MiApCi0gICAgICAgIHJldHVybiBsYXN0MTsKLQotICAgIEJpZGlyZWN0aW9uYWxJdGVyYXRvcjEgaXQxID0gbGFzdDE7Ci0gICAgd2hpbGUoIC0taXQxICE9IGZpcnN0MSAmJiBzdGQ6OmZpbmQoIGZpcnN0MiwgbGFzdDIsICppdDEgKSA9PSBsYXN0MiApIHt9Ci0KLSAgICByZXR1cm4gaXQxID09IGZpcnN0MSAmJiBzdGQ6OmZpbmQoIGZpcnN0MiwgbGFzdDIsICppdDEgKSA9PSBsYXN0MiA/IGxhc3QxIDogaXQxOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLy8gQGJyaWVmIHRoaXMgYWxnb3JpdGhtIHNlYXJjaCB0aHJvdWdoIGZpcnN0IGNvbGxlY3Rpb24gZm9yIGxhc3QgZWxlbWVudCB0aGF0IHNhdGlzZnkgYmluYXJ5IAotLy8vIHByZWRpY2F0ZSBpbiBjb25qdW5jdGlvbiB3aWxsIGF0IGxlYXN0IG9uZSBlbGVtZW50IGluIHNlY29uZCBjb2xsZWN0aW9uCi0KLS8vLyBAcGFyYW0gZmlyc3QxIC0gZmlyc3QgY29sbGVjdGlvbiBiZWdpbiBpdGVyYXRvcgotLy8vIEBwYXJhbSBsYXN0MSAtIGZpcnN0IGNvbGxlY3Rpb24gZW5kIGl0ZXJhdG9yCi0vLy8gQHBhcmFtIGZpcnN0MiAtIHNlY29uZCBjb2xsZWN0aW9uIGJlZ2luIGl0ZXJhdG9yCi0vLy8gQHBhcmFtIGxhc3QyIC0gc2Vjb25kIGNvbGxlY3Rpb24gZW5kIGl0ZXJhdG9yCi0vLy8gQHBhcmFtIHByZWQgLSBwcmVkaWNhdGUgdG8gYmUgdXNlZCBmb3Igc2VhcmNoCi10ZW1wbGF0ZTxjbGFzcyBCaWRpcmVjdGlvbmFsSXRlcmF0b3IxLCBjbGFzcyBGb3J3YXJkSXRlcmF0b3IyLCBjbGFzcyBQcmVkaWNhdGU+Ci1pbmxpbmUgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMQotZmluZF9sYXN0X29mKCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IxIGZpcnN0MSwgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMSBsYXN0MSwgCi0gICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvcjIgZmlyc3QyLCBGb3J3YXJkSXRlcmF0b3IyIGxhc3QyLCAKLSAgICAgICAgICAgICAgUHJlZGljYXRlIHByZWQgKQotewotICAgIGlmKCBmaXJzdDEgPT0gbGFzdDEgfHwgZmlyc3QyID09IGxhc3QyICkKLSAgICAgICAgcmV0dXJuIGxhc3QxOwotCi0gICAgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMSBpdDEgPSBsYXN0MTsKLSAgICB3aGlsZSggLS1pdDEgIT0gZmlyc3QxICYmIHN0ZDo6ZmluZF9pZiggZmlyc3QyLCBsYXN0Miwgc3RkOjpiaW5kMXN0KCBwcmVkLCAqaXQxICkgKSA9PSBsYXN0MiApIHt9Ci0KLSAgICByZXR1cm4gaXQxID09IGZpcnN0MSAmJiBzdGQ6OmZpbmRfaWYoIGZpcnN0MiwgbGFzdDIsIHN0ZDo6YmluZDFzdCggcHJlZCwgKml0MSApICkgPT0gbGFzdDIgPyBsYXN0MSA6IGl0MTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8vIEBicmllZiB0aGlzIGFsZ29yaXRobSBzZWFyY2ggdGhyb3VnaCBmaXJzdCBjb2xsZWN0aW9uIGZvciBsYXN0IGVsZW1lbnQgdGhhdCBkb2VzIG5vdCBiZWxvbmcgdG8gYSBzZWNvbmQgb25lCi0KLS8vLyBAcGFyYW0gZmlyc3QxIC0gZmlyc3QgY29sbGVjdGlvbiBiZWdpbiBpdGVyYXRvcgotLy8vIEBwYXJhbSBsYXN0MSAtIGZpcnN0IGNvbGxlY3Rpb24gZW5kIGl0ZXJhdG9yCi0vLy8gQHBhcmFtIGZpcnN0MiAtIHNlY29uZCBjb2xsZWN0aW9uIGJlZ2luIGl0ZXJhdG9yCi0vLy8gQHBhcmFtIGxhc3QyIC0gc2Vjb25kIGNvbGxlY3Rpb24gZW5kIGl0ZXJhdG9yCi10ZW1wbGF0ZTxjbGFzcyBCaWRpcmVjdGlvbmFsSXRlcmF0b3IxLCBjbGFzcyBGb3J3YXJkSXRlcmF0b3IyPgotaW5saW5lIEJpZGlyZWN0aW9uYWxJdGVyYXRvcjEKLWZpbmRfbGFzdF9ub3Rfb2YoIEJpZGlyZWN0aW9uYWxJdGVyYXRvcjEgZmlyc3QxLCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IxIGxhc3QxLCAKLSAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvcjIgZmlyc3QyLCBGb3J3YXJkSXRlcmF0b3IyIGxhc3QyICkKLXsKLSAgICBpZiggZmlyc3QxID09IGxhc3QxIHx8IGZpcnN0MiA9PSBsYXN0MiApCi0gICAgICAgIHJldHVybiBsYXN0MTsKLQotICAgIEJpZGlyZWN0aW9uYWxJdGVyYXRvcjEgaXQxID0gbGFzdDE7Ci0gICAgd2hpbGUoIC0taXQxICE9IGZpcnN0MSAmJiBzdGQ6OmZpbmQoIGZpcnN0MiwgbGFzdDIsICppdDEgKSAhPSBsYXN0MiApIHt9Ci0KLSAgICByZXR1cm4gaXQxID09IGZpcnN0MSAmJiBzdGQ6OmZpbmQoIGZpcnN0MiwgbGFzdDIsICppdDEgKSAhPSBsYXN0MiA/IGxhc3QxIDogaXQxOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLy8gQGJyaWVmIHRoaXMgYWxnb3JpdGhtIHNlYXJjaCB0aHJvdWdoIGZpcnN0IGNvbGxlY3Rpb24gZm9yIGxhc3QgZWxlbWVudCB0aGF0IGRvZXMgbm90IHNhdGlzZnkgYmluYXJ5IAotLy8vIHByZWRpY2F0ZSBpbiBjb25qdW5jdGlvbiB3aWxsIGFueSBlbGVtZW50IGluIHNlY29uZCBjb2xsZWN0aW9uCi0KLS8vLyBAcGFyYW0gZmlyc3QxIC0gZmlyc3QgY29sbGVjdGlvbiBiZWdpbiBpdGVyYXRvcgotLy8vIEBwYXJhbSBsYXN0MSAtIGZpcnN0IGNvbGxlY3Rpb24gZW5kIGl0ZXJhdG9yCi0vLy8gQHBhcmFtIGZpcnN0MiAtIHNlY29uZCBjb2xsZWN0aW9uIGJlZ2luIGl0ZXJhdG9yCi0vLy8gQHBhcmFtIGxhc3QyIC0gc2Vjb25kIGNvbGxlY3Rpb24gZW5kIGl0ZXJhdG9yCi0vLy8gQHBhcmFtIHByZWQgLSBwcmVkaWNhdGUgdG8gYmUgdXNlZCBmb3Igc2VhcmNoCi10ZW1wbGF0ZTxjbGFzcyBCaWRpcmVjdGlvbmFsSXRlcmF0b3IxLCBjbGFzcyBGb3J3YXJkSXRlcmF0b3IyLCBjbGFzcyBQcmVkaWNhdGU+Ci1pbmxpbmUgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMQotZmluZF9sYXN0X25vdF9vZiggQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMSBmaXJzdDEsIEJpZGlyZWN0aW9uYWxJdGVyYXRvcjEgbGFzdDEsIAotICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yMiBmaXJzdDIsIEZvcndhcmRJdGVyYXRvcjIgbGFzdDIsIAotICAgICAgICAgICAgICAgICAgUHJlZGljYXRlIHByZWQgKQotewotICAgIGlmKCBmaXJzdDEgPT0gbGFzdDEgfHwgZmlyc3QyID09IGxhc3QyICkKLSAgICAgICAgcmV0dXJuIGxhc3QxOwotCi0gICAgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMSBpdDEgPSBsYXN0MTsKLSAgICB3aGlsZSggLS1pdDEgIT0gZmlyc3QxICYmIHN0ZDo6ZmluZF9pZiggZmlyc3QyLCBsYXN0Miwgc3RkOjpiaW5kMXN0KCBwcmVkLCAqaXQxICkgKSAhPSBsYXN0MiApIHt9Ci0KLSAgICByZXR1cm4gaXQxID09IGZpcnN0MSAmJiBzdGQ6OmZpbmRfaWYoIGZpcnN0MiwgbGFzdDIsIHN0ZDo6YmluZDFzdCggcHJlZCwgKml0MSApICkgPT0gbGFzdDIgPyBsYXN0MSA6IGl0MTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfQUxHT1JJVEhNX0hQUF8wNjIzMDRHRVIKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvYXNzaWduX29wLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9hc3NpZ25fb3AuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZTRiZTA0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9hc3NpZ25fb3AuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBvdmVybG9hZGFibGUgYXNzaWdubWVudAotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9BU1NJR05fT1BfMDMzMDA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfQVNTSUdOX09QXzAzMzAwNUdFUgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgIGdlbmVyaWMgYXNzaWduIG9wZXJhdG9yICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0vLyBnZW5lcmljCi10ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIFM+Ci1pbmxpbmUgdm9pZAotYXNzaWduX29wKCBUJiB0LCBTIGNvbnN0JiBzLCBsb25nICkKLXsKLSAgICB0ID0gczsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX0FTU0lHTl9PUF8wMzMwMDVHRVIKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvYmFzaWNfY3N0cmluZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9iYXNpY19jc3RyaW5nLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDFhNjRjZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9iYXNpY19jc3RyaW5nLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDczMSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA0LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTc5OTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGNsYXNzIGJhc2ljX2NzdHJpbmcgd3JhcHMgQyBzdHJpbmcgYW5kIHByb3ZpZGUgc3RkX3N0cmluZyBsaWtlIAotLy8gICAgICAgICAgICAgICAgaW50ZXJmYWNlCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX0JBU0lDX0NTVFJJTkdfSFBQXzA3MTg5NEdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX0JBU0lDX0NTVFJJTkdfSFBQXzA3MTg5NEdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2Jhc2ljX2NzdHJpbmdfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvYmNzX2NoYXJfdHJhaXRzLmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8c3RyaW5nPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgIGJhc2ljX2NzdHJpbmcgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWNsYXNzIGJhc2ljX2NzdHJpbmcgewotICAgIHR5cGVkZWYgYmFzaWNfY3N0cmluZzxDaGFyVD4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmX3R5cGU7Ci1wdWJsaWM6Ci0gICAgLy8gU3VidHlwZXMKLSAgICB0eXBlZGVmIHV0X2RldGFpbDo6YmNzX2NoYXJfdHJhaXRzPENoYXJUPiAgICAgICAgICAgdHJhaXRzX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB1dF9kZXRhaWw6OmJjc19jaGFyX3RyYWl0czxDaGFyVD46OnN0ZF9zdHJpbmcgIHN0ZF9zdHJpbmc7Ci0KLSAgICB0eXBlZGVmIENoYXJUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHZhbHVlX3R5cGUqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlcjsKLSAgICB0eXBlZGVmIHZhbHVlX3R5cGUgY29uc3QqICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RfcG9pbnRlcjsKLSAgICB0eXBlZGVmIHZhbHVlX3R5cGUmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgY29uc3QgdmFsdWVfdHlwZSYgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF9yZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiBzdGQ6OnNpemVfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdHlwZTsKLSAgICB0eXBlZGVmIHN0ZDo6cHRyZGlmZl90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwotCi0gICAgdHlwZWRlZiB2YWx1ZV90eXBlIGNvbnN0KiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X2l0ZXJhdG9yOwotICAgIHR5cGVkZWYgdmFsdWVfdHlwZSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVyYXRvcjsKLQotICAgIC8vICEhIHNob3VsZCBhbHNvIHByZXNlbnQgcmV2ZXJzZV9pdGVyYXRvciwgY29uc3RfcmV2ZXJzZV9pdGVyYXRvcgotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19JQk1DUFBfXywgTkROQk9PU1RfVEVTVEVEX0FUKDYwMCkpCi0gICAgZW51bSBucG9zX3R5cGUgeyBucG9zID0gc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPigtMSkgfTsKLSNlbHNlCi0gICAgLy8gSUJNL1Zpc3VhbEFnZSB2ZXJzaW9uIDYgaXMgbm90IGFibGUgdG8gaGFuZGxlIGVudW1zIGxhcmdlciB0aGFuIDQgYnl0ZXMuCi0gICAgLy8gQnV0IHNpemVfdHlwZSBpcyA4IGJ5dGVzIGluIDY0Yml0IG1vZGUuCi0gICAgc3RhdGljIGNvbnN0IHNpemVfdHlwZSBucG9zID0gLTEgOwotI2VuZGlmCi0KLSAgICBzdGF0aWMgcG9pbnRlciAgbnVsbF9zdHIoKTsKLQotICAgIC8vIENvbnN0cnVjdG9yczsgZGVmYXVsdCBjb3B5IGNvbnN0cnVjdG9yIGlzIGdlbmVyYXRlZCBieSBjb21waWxlcgotICAgIGJhc2ljX2NzdHJpbmcoKTsKLSAgICBiYXNpY19jc3RyaW5nKCBzdGRfc3RyaW5nIGNvbnN0JiBzICk7Ci0gICAgYmFzaWNfY3N0cmluZyggcG9pbnRlciBzICk7Ci0gICAgYmFzaWNfY3N0cmluZyggcG9pbnRlciBzLCBzaXplX3R5cGUgYXJnX3NpemUgKTsKLSAgICBiYXNpY19jc3RyaW5nKCBwb2ludGVyIGZpcnN0LCBwb2ludGVyIGxhc3QgKTsKLQotICAgIC8vIGRhdGEgYWNjZXNzIG1ldGhvZHMKLSAgICB2YWx1ZV90eXBlICAgICAgb3BlcmF0b3JbXSggc2l6ZV90eXBlIGluZGV4ICkgY29uc3Q7Ci0gICAgdmFsdWVfdHlwZSAgICAgIGF0KCBzaXplX3R5cGUgaW5kZXggKSBjb25zdDsKLQotICAgIC8vIHNpemUgb3BlcmF0b3JzCi0gICAgc2l6ZV90eXBlICAgICAgIHNpemUoKSBjb25zdDsKLSAgICBib29sICAgICAgICAgICAgaXNfZW1wdHkoKSBjb25zdDsKLSAgICB2b2lkICAgICAgICAgICAgY2xlYXIoKTsKLSAgICB2b2lkICAgICAgICAgICAgcmVzaXplKCBzaXplX3R5cGUgbmV3X2xlbiApOwotCi0gICAgLy8gISEgb25seSBmb3IgU1RMIGNvbnRhaW5lciBjb25mb3JtYW5jZSB1c2UgaXNfZW1wdHkgaW5zdGVhZAotICAgIGJvb2wgICAgICAgICAgICBlbXB0eSgpIGNvbnN0OyAKLQotICAgIC8vIFRyaW1taW5nCi0gICAgc2VsZl90eXBlJiAgICAgIHRyaW1fcmlnaHQoIHNpemVfdHlwZSB0cmltX3NpemUgKTsKLSAgICBzZWxmX3R5cGUmICAgICAgdHJpbV9sZWZ0KCBzaXplX3R5cGUgdHJpbV9zaXplICk7Ci0gICAgc2VsZl90eXBlJiAgICAgIHRyaW1fcmlnaHQoIGl0ZXJhdG9yIGl0ICk7Ci0gICAgc2VsZl90eXBlJiAgICAgIHRyaW1fbGVmdCggaXRlcmF0b3IgaXQgKTsKLSNpZm5kZWYgX19JQk1DUFBfXwotICAgIHNlbGZfdHlwZSYgICAgICB0cmltX2xlZnQoIHNlbGZfdHlwZSBleGNsdXNpb25zID0gc2VsZl90eXBlKCkgKSA7Ci0gICAgc2VsZl90eXBlJiAgICAgIHRyaW1fcmlnaHQoIHNlbGZfdHlwZSBleGNsdXNpb25zID0gc2VsZl90eXBlKCkgKSA7Ci0gICAgc2VsZl90eXBlJiAgICAgIHRyaW0oIHNlbGZfdHlwZSBleGNsdXNpb25zID0gc2VsZl90eXBlKCkgKSA7Ci0jZWxzZQotICAgIC8vIFZpc3VhbEFnZSB2ZXJzaW9uIDYgaGFzIGluIHRoaXMgY2FzZSBhIHByb2JsZW0gd2l0aCB0aGUgZGVmYXVsdCBhcmd1bWVudHMuCi0gICAgc2VsZl90eXBlJiAgICAgIHRyaW1fbGVmdCggc2VsZl90eXBlIGV4Y2x1c2lvbnMgKSA7Ci0gICAgc2VsZl90eXBlJiAgICAgIHRyaW1fcmlnaHQoIHNlbGZfdHlwZSBleGNsdXNpb25zICkgOwotICAgIHNlbGZfdHlwZSYgICAgICB0cmltKCBzZWxmX3R5cGUgZXhjbHVzaW9ucyApIDsKLSAgICBzZWxmX3R5cGUmICAgICAgdHJpbV9sZWZ0KCkgeyB0cmltX2xlZnQoIHNlbGZfdHlwZSgpICkgOyB9Ci0gICAgc2VsZl90eXBlJiAgICAgIHRyaW1fcmlnaHQoKSB7IHRyaW1fcmlnaHQoIHNlbGZfdHlwZSgpICkgOyB9Ci0gICAgc2VsZl90eXBlJiAgICAgIHRyaW0oKSB7IHRyaW0oIHNlbGZfdHlwZSgpICkgOyB9Ci0jZW5kaWYKLQotICAgIC8vIEFzc2lnbm1lbnQgb3BlcmF0b3JzCi0gICAgYmFzaWNfY3N0cmluZyYgIG9wZXJhdG9yPSggc2VsZl90eXBlIGNvbnN0JiBzICk7Ci0gICAgYmFzaWNfY3N0cmluZyYgIG9wZXJhdG9yPSggc3RkX3N0cmluZyBjb25zdCYgcyApOwotICAgIGJhc2ljX2NzdHJpbmcmICBvcGVyYXRvcj0oIHBvaW50ZXIgcyApOwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQyPgotICAgIGJhc2ljX2NzdHJpbmcmICBhc3NpZ24oIGJhc2ljX2NzdHJpbmc8Q2hhclQyPiBjb25zdCYgcyApIHsgKnRoaXMgPSBiYXNpY19jc3RyaW5nPENoYXJUPiggcy5iZWdpbigpLCBzLmVuZCgpICk7IHJldHVybiAqdGhpczsgfQotICAgIGJhc2ljX2NzdHJpbmcmICBhc3NpZ24oIHNlbGZfdHlwZSBjb25zdCYgcywgc2l6ZV90eXBlIHBvcywgc2l6ZV90eXBlIGxlbiApOwotICAgIGJhc2ljX2NzdHJpbmcmICBhc3NpZ24oIHN0ZF9zdHJpbmcgY29uc3QmIHMgKTsKLSAgICBiYXNpY19jc3RyaW5nJiAgYXNzaWduKCBzdGRfc3RyaW5nIGNvbnN0JiBzLCBzaXplX3R5cGUgcG9zLCBzaXplX3R5cGUgbGVuICk7Ci0gICAgYmFzaWNfY3N0cmluZyYgIGFzc2lnbiggcG9pbnRlciBzICk7Ci0gICAgYmFzaWNfY3N0cmluZyYgIGFzc2lnbiggcG9pbnRlciBzLCBzaXplX3R5cGUgbGVuICk7Ci0gICAgYmFzaWNfY3N0cmluZyYgIGFzc2lnbiggcG9pbnRlciBmLCBwb2ludGVyIGwgKTsKLQotICAgIC8vIHN3YXBwaW5nCi0gICAgdm9pZCAgICAgICAgICAgIHN3YXAoIHNlbGZfdHlwZSYgcyApOwotCi0gICAgLy8gSXRlcmF0b3JzCi0gICAgaXRlcmF0b3IgICAgICAgIGJlZ2luKCk7Ci0gICAgY29uc3RfaXRlcmF0b3IgIGJlZ2luKCkgY29uc3Q7Ci0gICAgaXRlcmF0b3IgICAgICAgIGVuZCgpOwotICAgIGNvbnN0X2l0ZXJhdG9yICBlbmQoKSBjb25zdDsKLQotICAgIC8vICEhIHNob3VsZCBoYXZlIHJiZWdpbiwgcmVuZAotCi0gICAgLy8gc3Vic3RyaW5nIHNlYXJjaCBvcGVyYXRpb24KLSAgICBzaXplX3R5cGUgICAgICAgZmluZCggYmFzaWNfY3N0cmluZyApIGNvbnN0OwotICAgIHNpemVfdHlwZSAgICAgICByZmluZCggYmFzaWNfY3N0cmluZyApIGNvbnN0OwotICAgIHNlbGZfdHlwZSAgICAgICBzdWJzdHIoIHNpemVfdHlwZSBiZWdfaW5kZXgsIHNpemVfdHlwZSBlbmRfaW5kZXggPSBucG9zICkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGljIHNlbGZfdHlwZSBkZWZhdWx0X3RyaW1fZXgoKTsKLQotICAgIC8vIERhdGEgbWVtYmVycwotICAgIGl0ZXJhdG9yICAgICAgICBtX2JlZ2luOwotICAgIGl0ZXJhdG9yICAgICAgICBtX2VuZDsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIHR5cGVuYW1lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+Ojpwb2ludGVyCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6bnVsbF9zdHIoKQotewotICAgIHN0YXRpYyBDaGFyVCBudWxsID0gMDsKLSAgICByZXR1cm4gJm51bGw7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6YmFzaWNfY3N0cmluZygpCi06IG1fYmVnaW4oIG51bGxfc3RyKCkgKQotLCBtX2VuZCggbV9iZWdpbiApCi17Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6YmFzaWNfY3N0cmluZyggc3RkX3N0cmluZyBjb25zdCYgcyApCi06IG1fYmVnaW4oIHMuY19zdHIoKSApCi0sIG1fZW5kKCBtX2JlZ2luICsgcy5zaXplKCkgKQotewotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZQotYmFzaWNfY3N0cmluZzxDaGFyVD46OmJhc2ljX2NzdHJpbmcoIHBvaW50ZXIgcyApCi06IG1fYmVnaW4oIHMgPyBzIDogbnVsbF9zdHIoKSApCi0sIG1fZW5kICAoIG1fYmVnaW4gKyAocyA/IHRyYWl0c190eXBlOjpsZW5ndGgoIHMgKSA6IDAgKSApCi17Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6YmFzaWNfY3N0cmluZyggcG9pbnRlciBzLCBzaXplX3R5cGUgYXJnX3NpemUgKQotOiBtX2JlZ2luKCBzICksIG1fZW5kKCBtX2JlZ2luICsgYXJnX3NpemUgKQotewotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZQotYmFzaWNfY3N0cmluZzxDaGFyVD46OmJhc2ljX2NzdHJpbmcoIHBvaW50ZXIgZmlyc3QsIHBvaW50ZXIgbGFzdCApCi06IG1fYmVnaW4oIGZpcnN0ICkKLSwgbV9lbmQoIGxhc3QgKQotewotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSB0eXBlbmFtZSBiYXNpY19jc3RyaW5nPENoYXJUPjo6dmFsdWVfdHlwZQotYmFzaWNfY3N0cmluZzxDaGFyVD46Om9wZXJhdG9yW10oIHNpemVfdHlwZSBpbmRleCApIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fYmVnaW5baW5kZXhdOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSB0eXBlbmFtZSBiYXNpY19jc3RyaW5nPENoYXJUPjo6dmFsdWVfdHlwZQotYmFzaWNfY3N0cmluZzxDaGFyVD46OmF0KCBzaXplX3R5cGUgaW5kZXggKSBjb25zdAotewotICAgIGlmKCBtX2JlZ2luICsgaW5kZXggPj0gbV9lbmQgKQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dmFsdWVfdHlwZT4oMCk7Ci0KLSAgICByZXR1cm4gbV9iZWdpbltpbmRleF07Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIHR5cGVuYW1lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+OjpzaXplX3R5cGUKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+OjpzaXplKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9lbmQgLSBtX2JlZ2luOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSBib29sCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6aXNfZW1wdHkoKSBjb25zdAotewotICAgIHJldHVybiBtX2VuZCA9PSBtX2JlZ2luOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSBib29sCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6ZW1wdHkoKSBjb25zdAotewotICAgIHJldHVybiBpc19lbXB0eSgpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSB2b2lkCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6Y2xlYXIoKQotewotICAgIG1fYmVnaW4gPSBtX2VuZDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgdm9pZAotYmFzaWNfY3N0cmluZzxDaGFyVD46OnJlc2l6ZSggc2l6ZV90eXBlIG5ld19sZW4gKQotewotICAgIGlmKCBtX2JlZ2luICsgbmV3X2xlbiA8IG1fZW5kICkKLSAgICAgICAgbV9lbmQgPSBtX2JlZ2luICsgbmV3X2xlbjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYmFzaWNfY3N0cmluZzxDaGFyVD4mCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6dHJpbV9sZWZ0KCBzaXplX3R5cGUgdHJpbV9zaXplICkKLXsKLSAgICBtX2JlZ2luICs9IHRyaW1fc2l6ZTsKLSAgICBpZiggbV9lbmQgPD0gbV9iZWdpbiApCi0gICAgICAgIGNsZWFyKCk7Ci0KLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+JgotYmFzaWNfY3N0cmluZzxDaGFyVD46OnRyaW1fbGVmdCggaXRlcmF0b3IgaXQgKQotewotICAgIG1fYmVnaW4gPSBpdDsKLSAgICBpZiggbV9lbmQgPD0gbV9iZWdpbiApCi0gICAgICAgIGNsZWFyKCk7Ci0KLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+JgotYmFzaWNfY3N0cmluZzxDaGFyVD46OnRyaW1fbGVmdCggYmFzaWNfY3N0cmluZyBleGNsdXNpb25zICkKLXsKLSAgICBpZiggZXhjbHVzaW9ucy5pc19lbXB0eSgpICkKLSAgICAgICAgZXhjbHVzaW9ucyA9IGRlZmF1bHRfdHJpbV9leCgpOwotCi0gICAgaXRlcmF0b3IgaXQ7Ci0gICAgZm9yKCBpdCA9IGJlZ2luKCk7IGl0ICE9IGVuZCgpOyArK2l0ICkgewotICAgICAgICBpZiggdHJhaXRzX3R5cGU6OmZpbmQoIGV4Y2x1c2lvbnMuYmVnaW4oKSwgZXhjbHVzaW9ucy5zaXplKCksICppdCApID09IHJlaW50ZXJwcmV0X2Nhc3Q8cG9pbnRlcj4oMCkgKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIAotICAgIHJldHVybiB0cmltX2xlZnQoIGl0ICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+JgotYmFzaWNfY3N0cmluZzxDaGFyVD46OnRyaW1fcmlnaHQoIHNpemVfdHlwZSB0cmltX3NpemUgKQotewotICAgIG1fZW5kICAtPSB0cmltX3NpemU7Ci0gICAgaWYoIG1fZW5kIDw9IG1fYmVnaW4gKQotICAgICAgICBjbGVhcigpOwotCi0gICAgcmV0dXJuICp0aGlzOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSBiYXNpY19jc3RyaW5nPENoYXJUPiYKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+Ojp0cmltX3JpZ2h0KCBpdGVyYXRvciBpdCApCi17Ci0gICAgbV9lbmQgPSBpdDsKLSAgICBpZiggbV9lbmQgPD0gbV9iZWdpbiApCi0gICAgICAgIGNsZWFyKCk7Ci0KLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+JgotYmFzaWNfY3N0cmluZzxDaGFyVD46OnRyaW1fcmlnaHQoIGJhc2ljX2NzdHJpbmcgZXhjbHVzaW9ucyApCi17Ci0gICAgaWYoIGV4Y2x1c2lvbnMuaXNfZW1wdHkoKSApCi0gICAgICAgIGV4Y2x1c2lvbnMgPSBkZWZhdWx0X3RyaW1fZXgoKTsKLQotICAgIGl0ZXJhdG9yIGl0OwotCi0gICAgZm9yKCBpdCA9IGVuZCgpLTE7IGl0ICE9IGJlZ2luKCktMTsgLS1pdCApIHsKLSAgICAgICAgaWYoIHNlbGZfdHlwZTo6dHJhaXRzX3R5cGU6OmZpbmQoIGV4Y2x1c2lvbnMuYmVnaW4oKSwgIGV4Y2x1c2lvbnMuc2l6ZSgpLCAqaXQgKSA9PSByZWludGVycHJldF9jYXN0PHBvaW50ZXI+KDApICkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gdHJpbV9yaWdodCggaXQrMSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSBiYXNpY19jc3RyaW5nPENoYXJUPiYKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+Ojp0cmltKCBiYXNpY19jc3RyaW5nIGV4Y2x1c2lvbnMgKQotewotICAgIHRyaW1fbGVmdCggZXhjbHVzaW9ucyApOwotICAgIHRyaW1fcmlnaHQoIGV4Y2x1c2lvbnMgKTsKLQotICAgIHJldHVybiAqdGhpczsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYmFzaWNfY3N0cmluZzxDaGFyVD4mCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6b3BlcmF0b3I9KCBiYXNpY19jc3RyaW5nPENoYXJUPiBjb25zdCYgcyApCi17Ci0gICAgbV9iZWdpbiA9IHMubV9iZWdpbjsKLSAgICBtX2VuZCAgID0gcy5tX2VuZDsKLQotICAgIHJldHVybiAqdGhpczsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYmFzaWNfY3N0cmluZzxDaGFyVD4mCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6b3BlcmF0b3I9KCBzdGRfc3RyaW5nIGNvbnN0JiBzICkKLXsKLSAgICByZXR1cm4gKnRoaXMgPSBzZWxmX3R5cGUoIHMgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYmFzaWNfY3N0cmluZzxDaGFyVD4mCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6b3BlcmF0b3I9KCBwb2ludGVyIHMgKQotewotICAgIHJldHVybiAqdGhpcyA9IHNlbGZfdHlwZSggcyApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSBiYXNpY19jc3RyaW5nPENoYXJUPiYKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+Ojphc3NpZ24oIGJhc2ljX2NzdHJpbmc8Q2hhclQ+IGNvbnN0JiBzLCBzaXplX3R5cGUgcG9zLCBzaXplX3R5cGUgbGVuICkKLXsKLSAgICByZXR1cm4gKnRoaXMgPSBzZWxmX3R5cGUoIHMubV9iZWdpbiArIHBvcywgbGVuICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+JgotYmFzaWNfY3N0cmluZzxDaGFyVD46OmFzc2lnbiggc3RkX3N0cmluZyBjb25zdCYgcyApCi17Ci0gICAgcmV0dXJuICp0aGlzID0gc2VsZl90eXBlKCBzICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+JgotYmFzaWNfY3N0cmluZzxDaGFyVD46OmFzc2lnbiggc3RkX3N0cmluZyBjb25zdCYgcywgc2l6ZV90eXBlIHBvcywgc2l6ZV90eXBlIGxlbiApCi17Ci0gICAgcmV0dXJuICp0aGlzID0gc2VsZl90eXBlKCBzLmNfc3RyKCkgKyBwb3MsIGxlbiApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSBiYXNpY19jc3RyaW5nPENoYXJUPiYKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+Ojphc3NpZ24oIHBvaW50ZXIgcyApCi17Ci0gICAgcmV0dXJuICp0aGlzID0gc2VsZl90eXBlKCBzICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+JgotYmFzaWNfY3N0cmluZzxDaGFyVD46OmFzc2lnbiggcG9pbnRlciBzLCBzaXplX3R5cGUgbGVuICkKLXsKLSAgICByZXR1cm4gKnRoaXMgPSBzZWxmX3R5cGUoIHMsIGxlbiApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSBiYXNpY19jc3RyaW5nPENoYXJUPiYKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+Ojphc3NpZ24oIHBvaW50ZXIgZiwgcG9pbnRlciBsICkKLXsKLSAgICByZXR1cm4gKnRoaXMgPSBzZWxmX3R5cGUoIGYsIGwgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgdm9pZAotYmFzaWNfY3N0cmluZzxDaGFyVD46OnN3YXAoIGJhc2ljX2NzdHJpbmc8Q2hhclQ+JiBzICkKLXsKLSAgICAvLyBkbyBub3Qgd2FudCB0byBpbmNsdWRlIGFsb2dyaXRobQotICAgIHBvaW50ZXIgdG1wMSAgICA9IG1fYmVnaW47Ci0gICAgcG9pbnRlciB0bXAyICAgID0gbV9lbmQ7Ci0KLSAgICBtX2JlZ2luICAgICAgICAgPSBzLm1fYmVnaW47Ci0gICAgbV9lbmQgICAgICAgICAgID0gcy5tX2VuZDsKLQotICAgIHMubV9iZWdpbiAgICAgICA9IHRtcDE7Ci0gICAgcy5tX2VuZCAgICAgICAgID0gdG1wMjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgdHlwZW5hbWUgYmFzaWNfY3N0cmluZzxDaGFyVD46Oml0ZXJhdG9yCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6YmVnaW4oKQotewotICAgIHJldHVybiBtX2JlZ2luOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSB0eXBlbmFtZSBiYXNpY19jc3RyaW5nPENoYXJUPjo6Y29uc3RfaXRlcmF0b3IKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+OjpiZWdpbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fYmVnaW47Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIHR5cGVuYW1lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+OjppdGVyYXRvcgotYmFzaWNfY3N0cmluZzxDaGFyVD46OmVuZCgpCi17Ci0gICAgcmV0dXJuIG1fZW5kOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSB0eXBlbmFtZSBiYXNpY19jc3RyaW5nPENoYXJUPjo6Y29uc3RfaXRlcmF0b3IKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+OjplbmQoKSBjb25zdAotewotICAgIHJldHVybiBtX2VuZDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgdHlwZW5hbWUgYmFzaWNfY3N0cmluZzxDaGFyVD46OnNpemVfdHlwZQotYmFzaWNfY3N0cmluZzxDaGFyVD46OmZpbmQoIGJhc2ljX2NzdHJpbmc8Q2hhclQ+IHN0ciApIGNvbnN0Ci17Ci0gICAgaWYoIHN0ci5pc19lbXB0eSgpIHx8IHN0ci5zaXplKCkgPiBzaXplKCkgKQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihucG9zKTsKLQotICAgIGNvbnN0X2l0ZXJhdG9yIGl0ICAgPSBiZWdpbigpOwotICAgIGNvbnN0X2l0ZXJhdG9yIGxhc3QgPSBlbmQoKSAtIHN0ci5zaXplKCkgKyAxOwotCi0gICAgd2hpbGUoIGl0ICE9IGxhc3QgKSB7Ci0gICAgICAgIGlmKCB0cmFpdHNfdHlwZTo6Y29tcGFyZSggaXQsIHN0ci5iZWdpbigpLCBzdHIuc2l6ZSgpICkgPT0gMCApCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICArK2l0OwotICAgIH0KLQotICAgIHJldHVybiBpdCA9PSBsYXN0ID8gc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihucG9zKSA6IGl0IC0gYmVnaW4oKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgdHlwZW5hbWUgYmFzaWNfY3N0cmluZzxDaGFyVD46OnNpemVfdHlwZQotYmFzaWNfY3N0cmluZzxDaGFyVD46OnJmaW5kKCBiYXNpY19jc3RyaW5nPENoYXJUPiBzdHIgKSBjb25zdAotewotICAgIGlmKCBzdHIuaXNfZW1wdHkoKSB8fCBzdHIuc2l6ZSgpID4gc2l6ZSgpICkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdHlwZT4obnBvcyk7Ci0KLSAgICBjb25zdF9pdGVyYXRvciBpdCAgID0gZW5kKCkgLSBzdHIuc2l6ZSgpOwotICAgIGNvbnN0X2l0ZXJhdG9yIGxhc3QgPSBiZWdpbigpLTE7Ci0KLSAgICB3aGlsZSggaXQgIT0gbGFzdCApIHsKLSAgICAgICAgaWYoIHRyYWl0c190eXBlOjpjb21wYXJlKCBpdCwgc3RyLmJlZ2luKCksIHN0ci5zaXplKCkgKSA9PSAwICkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIC0taXQ7Ci0gICAgfQotCi0gICAgcmV0dXJuIGl0ID09IGxhc3QgPyBzdGF0aWNfY2FzdDxzaXplX3R5cGU+KG5wb3MpIDogc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihpdCAtIGJlZ2luKCkpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSBiYXNpY19jc3RyaW5nPENoYXJUPgotYmFzaWNfY3N0cmluZzxDaGFyVD46OnN1YnN0ciggc2l6ZV90eXBlIGJlZ19pbmRleCwgc2l6ZV90eXBlIGVuZF9pbmRleCApIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGJlZ19pbmRleCA+IHNpemUoKQotICAgICAgICAgICAgPyAgICAgICBzZWxmX3R5cGUoKQotICAgICAgICAgICAgOiBlbmRfaW5kZXggPiBzaXplKCkKLSAgICAgICAgICAgICAgICA/ICAgc2VsZl90eXBlKCBtX2JlZ2luICsgYmVnX2luZGV4LCBtX2VuZCApCi0gICAgICAgICAgICAgICAgOiAgIHNlbGZfdHlwZSggbV9iZWdpbiArIGJlZ19pbmRleCwgbV9iZWdpbiArIGVuZF9pbmRleCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSBiYXNpY19jc3RyaW5nPENoYXJUPgotYmFzaWNfY3N0cmluZzxDaGFyVD46OmRlZmF1bHRfdHJpbV9leCgpCi17Ci0gICAgc3RhdGljIENoYXJUIHdzWzNdID0geyBDaGFyVCgnICcpLCBDaGFyVCgnXHQnKSwgQ2hhclQoJ1xuJykgfTsgLy8gISEgd2lkZSBjYXNlCi0KLSAgICByZXR1cm4gc2VsZl90eXBlKCB3cywgMyApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgY29tcGFyaXNvbiBvcGVyYXRvcnMgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUMSx0eXBlbmFtZSBDaGFyVDI+Ci1pbmxpbmUgYm9vbAotb3BlcmF0b3I9PSggYmFzaWNfY3N0cmluZzxDaGFyVDE+IGNvbnN0JiBzMSwgYmFzaWNfY3N0cmluZzxDaGFyVDI+IGNvbnN0JiBzMiApCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNpY19jc3RyaW5nPENoYXJUMT46OnRyYWl0c190eXBlIHRyYWl0c190eXBlOwotICAgIHJldHVybiBzMS5zaXplKCkgPT0gczIuc2l6ZSgpICYmIAotICAgICAgICAgICAgICAgdHJhaXRzX3R5cGU6OmNvbXBhcmUoIHMxLmJlZ2luKCksIHMyLmJlZ2luKCksIHMxLnNpemUoKSApID09IDA7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUMSx0eXBlbmFtZSBDaGFyVDI+Ci1pbmxpbmUgYm9vbAotb3BlcmF0b3I9PSggYmFzaWNfY3N0cmluZzxDaGFyVDE+IGNvbnN0JiBzMSwgQ2hhclQyKiBzMiApCi17Ci0jaWYgIWRlZmluZWQoX19ETUNfXykKLSAgICByZXR1cm4gczEgPT0gYmFzaWNfY3N0cmluZzxDaGFyVDI+KCBzMiApOwotI2Vsc2UKLSAgICByZXR1cm4gczEgPT0gYmFzaWNfY3N0cmluZzxDaGFyVDIgY29uc3Q+KCBzMiApOwotI2VuZGlmCi19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIGJvb2wKLW9wZXJhdG9yPT0oIGJhc2ljX2NzdHJpbmc8Q2hhclQ+IGNvbnN0JiBzMSwgdHlwZW5hbWUgYmFzaWNfY3N0cmluZzxDaGFyVD46OnN0ZF9zdHJpbmcgY29uc3QmIHMyICkKLXsKLSAgICByZXR1cm4gczEgPT0gYmFzaWNfY3N0cmluZzxDaGFyVD4oIHMyICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUMSx0eXBlbmFtZSBDaGFyVDI+Ci1pbmxpbmUgYm9vbAotb3BlcmF0b3I9PSggQ2hhclQxKiBzMiwgYmFzaWNfY3N0cmluZzxDaGFyVDI+IGNvbnN0JiBzMSApCi17Ci0gICAgcmV0dXJuIHMxID09IHMyOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSBib29sCi1vcGVyYXRvcj09KCB0eXBlbmFtZSBiYXNpY19jc3RyaW5nPENoYXJUPjo6c3RkX3N0cmluZyBjb25zdCYgczIsIGJhc2ljX2NzdHJpbmc8Q2hhclQ+IGNvbnN0JiBzMSApCi17Ci0gICAgcmV0dXJuIHMxID09IHMyOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSBib29sCi1vcGVyYXRvciE9KCBiYXNpY19jc3RyaW5nPENoYXJUPiBjb25zdCYgczEsIENoYXJUKiBzMiApCi17Ci0gICAgcmV0dXJuICEoczEgPT0gczIpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSBib29sCi1vcGVyYXRvciE9KCBDaGFyVCogczIsIGJhc2ljX2NzdHJpbmc8Q2hhclQ+IGNvbnN0JiBzMSApCi17Ci0gICAgcmV0dXJuICEoczEgPT0gczIpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSBib29sCi1vcGVyYXRvciE9KCBiYXNpY19jc3RyaW5nPENoYXJUPiBjb25zdCYgczEsIGJhc2ljX2NzdHJpbmc8Q2hhclQ+IGNvbnN0JiBzMiApCi17Ci0gICAgcmV0dXJuICEoczEgPT0gczIpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSBib29sCi1vcGVyYXRvciE9KCBiYXNpY19jc3RyaW5nPENoYXJUPiBjb25zdCYgczEsIHR5cGVuYW1lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+OjpzdGRfc3RyaW5nIGNvbnN0JiBzMiApCi17Ci0gICAgcmV0dXJuICEoczEgPT0gczIpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSBib29sCi1vcGVyYXRvciE9KCB0eXBlbmFtZSBiYXNpY19jc3RyaW5nPENoYXJUPjo6c3RkX3N0cmluZyBjb25zdCYgczIsIGJhc2ljX2NzdHJpbmc8Q2hhclQ+IGNvbnN0JiBzMSApCi17Ci0gICAgcmV0dXJuICEoczEgPT0gczIpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICBmaXJzdF9jaGFyICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIHR5cGVuYW1lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+Ojp2YWx1ZV90eXBlCi1maXJzdF9jaGFyKCBiYXNpY19jc3RyaW5nPENoYXJUPiBzb3VyY2UgKQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzaWNfY3N0cmluZzxDaGFyVD46OnZhbHVlX3R5cGUgc3RyaW5nX3ZhbHVlX3R5cGU7Ci0KLSAgICByZXR1cm4gc291cmNlLmlzX2VtcHR5KCkgPyBzdGF0aWNfY2FzdDxzdHJpbmdfdmFsdWVfdHlwZT4oMCkgOiAqc291cmNlLmJlZ2luKCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgIGxhc3RfY2hhciAgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgdHlwZW5hbWUgYmFzaWNfY3N0cmluZzxDaGFyVD46OnZhbHVlX3R5cGUKLWxhc3RfY2hhciggYmFzaWNfY3N0cmluZzxDaGFyVD4gc291cmNlICkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+Ojp2YWx1ZV90eXBlIHN0cmluZ192YWx1ZV90eXBlOwotCi0gICAgcmV0dXJuIHNvdXJjZS5pc19lbXB0eSgpID8gc3RhdGljX2Nhc3Q8c3RyaW5nX3ZhbHVlX3R5cGU+KDApIDogKihzb3VyY2UuZW5kKCktMSk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgIGFzc2lnbl9vcCAgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQxLCB0eXBlbmFtZSBDaGFyVDI+Ci1pbmxpbmUgdm9pZAotYXNzaWduX29wKCBzdGQ6OmJhc2ljX3N0cmluZzxDaGFyVDE+JiB0YXJnZXQsIGJhc2ljX2NzdHJpbmc8Q2hhclQyPiBzcmMsIGludCApCi17Ci0gICAgdGFyZ2V0LmFzc2lnbiggc3JjLmJlZ2luKCksIHNyYy5zaXplKCkgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9CQVNJQ19DU1RSSU5HX0hQUF8wNzE4OTRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2Jhc2ljX2NzdHJpbmdfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2Jhc2ljX2NzdHJpbmdfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2I5YWRiMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9iYXNpY19jc3RyaW5nX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA0LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGJhc2ljX2NzdHJpbmcgY2xhc3Mgd3JhcCBDIHN0cmluZyBhbmQgcHJvdmlkZSBzdGRfc3RyaW5nIGxpa2UgCi0vLyAgICAgICAgICAgICAgICBpbnRlcmZhY2UKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfQkFTSUNfQ1NUUklOR19GV0RfSFBQXzA3MTg5NEdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX0JBU0lDX0NTVFJJTkdfRldEX0hQUF8wNzE4OTRHRVIKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPiBjbGFzcyAgICAgIGJhc2ljX2NzdHJpbmc7Ci10eXBlZGVmIGJhc2ljX2NzdHJpbmc8Y2hhciBjb25zdD4gICBjb25zdF9zdHJpbmc7Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0RFQ0NYWF9WRVIsIE5ETkJPT1NUX1RFU1RFRF9BVCg2MDU5MDA0MSkpCi10eXBlZGVmIGNvbnN0X3N0cmluZyAgICAgICAgICAgICAgICBsaXRlcmFsX3N0cmluZzsKLSNlbHNlCi10eXBlZGVmIGNvbnN0X3N0cmluZyBjb25zdCAgICAgICAgICBsaXRlcmFsX3N0cmluZzsKLSNlbmRpZgotCi10eXBlZGVmIGNoYXIgY29uc3QqIGNvbnN0ICAgICAgICAgICBjX2xpdGVyYWxfc3RyaW5nOwotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfQkFTSUNfQ1NUUklOR19GV0RfSFBQXzA3MTg5NEdFUgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9iY3NfY2hhcl90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvYmNzX2NoYXJfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDlhZmNiNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9iY3NfY2hhcl90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTUwICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDQtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZ2VuZXJpYyBjaGFyIHRyYWl0cyBjbGFzczsgd3JhcHMgc3RkOjpjaGFyX3RyYWl0cwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9CQ1NfQ0hBUl9UUkFJVFNfSFBQXzA3MTg5NEdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX0JDU19DSEFSX1RSQUlUU19IUFBfMDcxODk0R0VSCi0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfY29uc3QuaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxzdHJpbmc+ICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGQ6OmNoYXJfdHJhaXRzCi0jaW5jbHVkZSA8Y3N0ZGRlZj4gICAgICAgICAgICAgICAgICAgICAgLy8gc3RkOjpzaXplX3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLW5hbWVzcGFjZSB1dF9kZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4gc3RydWN0IGJjc19iYXNlX2NoYXIgICAgICAgICAgIHsgdHlwZWRlZiBDaGFyVCB0eXBlOyB9OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBiY3NfYmFzZV9jaGFyPGNoYXIgY29uc3Q+ICAgICAgICAgICAgIHsgdHlwZWRlZiBjaGFyIHR5cGU7IH07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBiY3NfYmFzZV9jaGFyPHVuc2lnbmVkIGNoYXI+ICAgICAgICAgIHsgdHlwZWRlZiBjaGFyIHR5cGU7IH07Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NTEpKQotdGVtcGxhdGU8PiBzdHJ1Y3QgYmNzX2Jhc2VfY2hhcjx1bnNpZ25lZCBjaGFyIGNvbnN0PiAgICB7IHR5cGVkZWYgY2hhciB0eXBlOyB9OwotI2VuZGlmCi0KLXRlbXBsYXRlPD4gc3RydWN0IGJjc19iYXNlX2NoYXI8d2NoYXJfdCBjb25zdD4gICAgICAgICAgeyB0eXBlZGVmIHdjaGFyX3QgdHlwZTsgfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgYmNzX2NoYXJfdHJhaXRzICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLXN0cnVjdCBiY3NfY2hhcl90cmFpdHNfaW1wbAotewotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NjQpKQotICAgIHR5cGVkZWYgQ2hhclQgY29uc3QgY29uc3RfY2hhcjsKLSNlbHNlCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6YWRkX2NvbnN0PENoYXJUPjo6dHlwZSBjb25zdF9jaGFyOwotI2VuZGlmCi0gICAgc3RhdGljIGJvb2wgZXEoIENoYXJUIGMxLCBDaGFyVCBjMiApCi0gICAgewotICAgICAgICByZXR1cm4gYzEgPT0gYzI7Ci0gICAgfQotICAgIHN0YXRpYyBib29sIGx0KCBDaGFyVCBjMSwgQ2hhclQgYzIgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGMxIDwgYzI7Ci0gICAgfQotCi0gICAgc3RhdGljIGludCBjb21wYXJlKCBjb25zdF9jaGFyKiBjc3RyMSwgY29uc3RfY2hhciogY3N0cjIsIHN0ZDo6c2l6ZV90IG4gKQotICAgIHsKLSAgICAgICAgd2hpbGUoIG4gPiAwICkgewotICAgICAgICAgICAgaWYoICFlcSggKmNzdHIxLCAqY3N0cjIgKSApCi0gICAgICAgICAgICAgICAgcmV0dXJuIGx0KCAqY3N0cjEsICpjc3RyMiApID8gLTEgOiAxOwotICAgICAgICAgICAgKytjc3RyMTsKLSAgICAgICAgICAgICsrY3N0cjI7Ci0gICAgICAgICAgICAtLW47Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBzdGF0aWMgc3RkOjpzaXplX3QgbGVuZ3RoKCBjb25zdF9jaGFyKiBjc3RyICkKLSAgICB7Ci0gICAgICAgIGNvbnN0X2NoYXIgbnVsbF9jaGFyID0gQ2hhclQoKTsKLQotICAgICAgICBjb25zdF9jaGFyKiBwdHIgPSBjc3RyOwotICAgICAgICB3aGlsZSggIWVxKCAqcHRyLCBudWxsX2NoYXIgKSApCi0gICAgICAgICAgICArK3B0cjsKLQotICAgICAgICByZXR1cm4gcHRyIC0gY3N0cjsKLSAgICB9Ci0KLSAgICBzdGF0aWMgY29uc3RfY2hhciogZmluZCggY29uc3RfY2hhciogcywgc3RkOjpzaXplX3QgbiwgQ2hhclQgYyApCi0gICAgewotICAgICAgICB3aGlsZSggbiA+IDAgKSB7Ci0gICAgICAgICAgICBpZiggZXEoICpzLCBjICkgKQotICAgICAgICAgICAgICAgIHJldHVybiBzOwotCi0gICAgICAgICAgICArK3M7Ci0gICAgICAgICAgICAtLW47Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotfTsKLQotI2lmZGVmIE5ETkJPT1NUX0NMQVNTSUNfSU9TVFJFQU1TCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLXN0cnVjdCBjaGFyX3RyYWl0c193aXRoX2ZpbmQgOiBzdGQ6OnN0cmluZ19jaGFyX3RyYWl0czxDaGFyVD4gewotICAgIHN0YXRpYyBDaGFyVCBjb25zdCogZmluZCggQ2hhclQgY29uc3QqIHMsIHN0ZDo6c2l6ZV90IG4sIENoYXJUIGMgKQotICAgIHsKLSAgICAgICAgd2hpbGUoIG4gPiAwICkgewotICAgICAgICAgICAgaWYoIGVxKCAqcywgYyApICkKLSAgICAgICAgICAgICAgICByZXR1cm4gczsKLQotICAgICAgICAgICAgKytzOwotICAgICAgICAgICAgLS1uOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGJjc19jaGFyX3RyYWl0c19pbXBsPGNoYXI+IDogY2hhcl90cmFpdHNfd2l0aF9maW5kPGNoYXI+IHt9OwotdGVtcGxhdGU8PiBzdHJ1Y3QgYmNzX2NoYXJfdHJhaXRzX2ltcGw8d2NoYXJfdD4gOiBjaGFyX3RyYWl0c193aXRoX2ZpbmQ8d2NoYXJfdD4ge307Ci0jZWxzZQotdGVtcGxhdGU8PiBzdHJ1Y3QgYmNzX2NoYXJfdHJhaXRzX2ltcGw8Y2hhcj4gOiBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+IHt9OwotdGVtcGxhdGU8PiBzdHJ1Y3QgYmNzX2NoYXJfdHJhaXRzX2ltcGw8d2NoYXJfdD4gOiBzdGQ6OmNoYXJfdHJhaXRzPHdjaGFyX3Q+IHt9OwotI2VuZGlmCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotY2xhc3MgYmNzX2NoYXJfdHJhaXRzIDogcHVibGljIGJjc19jaGFyX3RyYWl0c19pbXBsPENoYXJUPiB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB1dF9kZXRhaWw6OmJjc19iYXNlX2NoYXI8Q2hhclQ+Ojp0eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlX2Jhc2VfY2hhcjsKLXB1YmxpYzoKLSNpZmRlZiBORE5CT09TVF9DTEFTU0lDX0lPU1RSRUFNUwotICAgIHR5cGVkZWYgc3RkOjpiYXNpY19zdHJpbmc8dGhlX2Jhc2VfY2hhciwgc3RkOjpzdHJpbmdfY2hhcl90cmFpdHM8dGhlX2Jhc2VfY2hhcj4gPiAgIHN0ZF9zdHJpbmc7Ci0jZWxzZQotICAgIHR5cGVkZWYgc3RkOjpiYXNpY19zdHJpbmc8dGhlX2Jhc2VfY2hhciwgc3RkOjpjaGFyX3RyYWl0czx0aGVfYmFzZV9jaGFyPiA+ICAgICAgICAgIHN0ZF9zdHJpbmc7Ci0jZW5kaWYKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIHV0X2RldGFpbAotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX0JDU19DSEFSX1RSQUlUU19IUFBfMDcxODk0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9jb21wYXJlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2NvbXBhcmUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxODgwYzhhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2NvbXBhcmUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE1ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDQtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogY2xhc3MgYmFzaWNfY3N0cmluZyBjb21wYXJpc29ucyBpbXBsZW1lbnRhdGlvbgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgIE5ETkJPT1NUX1RFU1RfQkFTSUNfQ1NUUklOR19DT01QQVJFX0hQUF8wNzE4OTRHRVIKLSNkZWZpbmUgIE5ETkJPT1NUX1RFU1RfQkFTSUNfQ1NUUklOR19DT01QQVJFX0hQUF8wNzE4OTRHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9iYXNpY19jc3RyaW5nLmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KLSNpbmNsdWRlIDxjY3R5cGU+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSMgaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSkgJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8PSAweDU3MCkKLW5hbWVzcGFjZSBzdGQgeyB1c2luZyA6OnRvdXBwZXI7IH0KLSMgZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICBjYXNlX2luc19jb21wYXJlICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIHV0X2RldGFpbCB7Ci0KLXRlbXBsYXRlPGNsYXNzIENoYXJUPgotc3RydWN0IGNhc2VfaW5zCi17Ci0gICAgc3RhdGljIGJvb2wgICAgICAgICBlcSggQ2hhclQgYzEsIENoYXJUIGMyICkgeyByZXR1cm4gKHN0ZDo6dG91cHBlcikoIGMxICkgPT0gKHN0ZDo6dG91cHBlcikoIGMyICk7IH0KLSAgICBzdGF0aWMgYm9vbCAgICAgICAgIGx0KCBDaGFyVCBjMSwgQ2hhclQgYzIgKSB7IHJldHVybiAoc3RkOjp0b3VwcGVyKSggYzEgKSA8ICAoc3RkOjp0b3VwcGVyKSggYzIgKTsgfQotCi0gICAgc3RhdGljIGludCAgICAgICAgICBjb21wYXJlKCBDaGFyVCBjb25zdCogczEsIENoYXJUIGNvbnN0KiBzMiwgc3RkOjpzaXplX3QgbiApCi0gICAgewotICAgICAgICBmb3IoIHN0ZDo6c2l6ZV90IGkgPSAwOyBpIDwgbjsgKytpICkgewotICAgICAgICAgICAgaWYoICFlcSggczFbaV0sIHMyW2ldICkgKQotICAgICAgICAgICAgICAgIHJldHVybiBsdCggczFbaV0sIHMyW2ldICkgPyAtMSA6IDE7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgdXRfZGV0YWlsCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgIGNhc2VfaW5zX2VxICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8Y2xhc3MgQ2hhclQ+Ci1pbmxpbmUgYm9vbAotY2FzZV9pbnNfZXEoIGJhc2ljX2NzdHJpbmc8Q2hhclQ+IHgsIGJhc2ljX2NzdHJpbmc8Q2hhclQ+IHkgKQotewotICAgIHJldHVybiB4LnNpemUoKSA9PSB5LnNpemUoKSAmJiB1dF9kZXRhaWw6OmNhc2VfaW5zPENoYXJUPjo6Y29tcGFyZSggeC5iZWdpbigpLCB5LmJlZ2luKCksIHguc2l6ZSgpICkgPT0gMDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICBjYXNlX2luc19sZXNzICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTxjbGFzcyBDaGFyVD4KLWNsYXNzIGNhc2VfaW5zX2xlc3MgOiBwdWJsaWMgc3RkOjpiaW5hcnlfZnVuY3Rpb248YmFzaWNfY3N0cmluZzxDaGFyVD4sYmFzaWNfY3N0cmluZzxDaGFyVD4sYm9vbD4KLXsKLXB1YmxpYzoKLSAgICBib29sIG9wZXJhdG9yKCkoIGJhc2ljX2NzdHJpbmc8Q2hhclQ+IHgsIGJhc2ljX2NzdHJpbmc8Q2hhclQ+IHkgKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHguc2l6ZSgpICE9IHkuc2l6ZSgpIAotICAgICAgICAgICAgICAgID8geC5zaXplKCkgPCB5LnNpemUoKSAKLSAgICAgICAgICAgICAgICA6IHV0X2RldGFpbDo6Y2FzZV9pbnM8Q2hhclQ+Ojpjb21wYXJlKCB4LmJlZ2luKCksIHkuYmVnaW4oKSwgeC5zaXplKCkgKSA8IDA7Ci0gICAgfQotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgb3BlcmF0b3IgPCAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTxjbGFzcyBDaGFyVD4KLWlubGluZSBib29sCi1vcGVyYXRvciA8KCBuZG5ib29zdDo6dW5pdF90ZXN0OjpiYXNpY19jc3RyaW5nPENoYXJUPiBjb25zdCYgeCwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bml0X3Rlc3Q6OmJhc2ljX2NzdHJpbmc8Q2hhclQ+IGNvbnN0JiB5ICkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojp1bml0X3Rlc3Q6OmJhc2ljX2NzdHJpbmc8Q2hhclQ+Ojp0cmFpdHNfdHlwZSB0cmFpdHNfdHlwZTsKLSAgICByZXR1cm4geC5zaXplKCkgIT0geS5zaXplKCkgCi0gICAgICAgICAgICA/IHguc2l6ZSgpIDwgeS5zaXplKCkgCi0gICAgICAgICAgICA6IHRyYWl0c190eXBlOjpjb21wYXJlKCB4LmJlZ2luKCksIHkuYmVnaW4oKSwgeC5zaXplKCkgKSA8IDA7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfQkFTSUNfQ1NUUklOR19DT01QQVJFX0hQUF8wNzE4OTRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2lvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2lvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGFkNzcwYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9pby5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA0LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGJhc2ljX2NzdHJpbmcgaS9vIGltcGxlbWVudGF0aW9uCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiAgTkROQk9PU1RfVEVTVF9CQVNJQ19DU1RSSU5HX0lPX0hQUF8wNzE4OTRHRVIKLSNkZWZpbmUgIE5ETkJPT1NUX1RFU1RfQkFTSUNfQ1NUUklOR19JT19IUFBfMDcxODk0R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvYmFzaWNfY3N0cmluZy5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPGlvc2Z3ZD4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi0jaWZkZWYgTkROQk9PU1RfQ0xBU1NJQ19JT1NUUkVBTVMKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgc3RkOjpvc3RyZWFtJgotb3BlcmF0b3I8PCggc3RkOjpvc3RyZWFtJiBvcywgYmFzaWNfY3N0cmluZzxDaGFyVD4gY29uc3QmIHN0ciApCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB1dF9kZXRhaWw6OmJjc19iYXNlX2NoYXI8Q2hhclQ+Ojp0eXBlIGNoYXJfdHlwZTsKLSAgICBjaGFyX3R5cGUgY29uc3QqIGNvbnN0IGJlZyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcl90eXBlIGNvbnN0KiBjb25zdD4oIHN0ci5iZWdpbigpICk7Ci0gICAgY2hhcl90eXBlIGNvbnN0KiBjb25zdCBlbmQgPSByZWludGVycHJldF9jYXN0PGNoYXJfdHlwZSBjb25zdCogY29uc3Q+KCBzdHIuZW5kKCkgKTsKLSAgICBvcyA8PCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyX3R5cGU+KCBiZWcsIGVuZCAtIGJlZyApOwotCi0gICAgcmV0dXJuIG9zOwotfQotCi0jZWxzZQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVDEsIHR5cGVuYW1lIFRyLHR5cGVuYW1lIENoYXJUMj4KLWlubGluZSBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQxLFRyPiYKLW9wZXJhdG9yPDwoIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVDEsVHI+JiBvcywgYmFzaWNfY3N0cmluZzxDaGFyVDI+IGNvbnN0JiBzdHIgKQotewotICAgIENoYXJUMSBjb25zdCogY29uc3QgYmVnID0gcmVpbnRlcnByZXRfY2FzdDxDaGFyVDEgY29uc3QqPiggc3RyLmJlZ2luKCkgKTsgLy8gISEKLSAgICBDaGFyVDEgY29uc3QqIGNvbnN0IGVuZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q2hhclQxIGNvbnN0Kj4oIHN0ci5lbmQoKSApOwotICAgIG9zIDw8IHN0ZDo6YmFzaWNfc3RyaW5nPENoYXJUMSxUcj4oIGJlZywgZW5kIC0gYmVnICk7Ci0KLSAgICByZXR1cm4gb3M7Ci19Ci0KLSNlbmRpZgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfQkFTSUNfQ1NUUklOR19JT19IUFBfMDcxODk0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvY2FsbGJhY2suaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2NhbGxiYWNrLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGJkNzg2Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvY2FsbGJhY2suaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzEwICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IAotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9DQUxMQkFDS18wMjA1MDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9DQUxMQkFDS18wMjA1MDVHRVIKLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zaGFyZWRfcHRyLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKSB8fCBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX0lOVEVMLCA8PSA3MDApCi0jICBkZWZpbmUgTkROQk9PU1RfQ0FMTEJBQ0tfRVhQTElDSVRfQ09QWV9DT05TVFJVQ1RPUgotI2VuZGlmCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi1uYW1lc3BhY2UgdXRfZGV0YWlsIHsKLQotc3RydWN0IHVudXNlZCB7fTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUj4KLXN0cnVjdCBpbnZva2VyIHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICAgIFIgICAgICAgaW52b2tlKCBGdW5jdG9yJiBmICkgICAgICAgICAgICAgICAgICAgICAgICB7IHJldHVybiBmKCk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yLCB0eXBlbmFtZSBUMT4KLSAgICBSICAgICAgIGludm9rZSggRnVuY3RvciYgZiwgVDEgdDEgKSAgICAgICAgICAgICAgICAgeyByZXR1cm4gZiggdDEgKTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3IsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLSAgICBSICAgICAgIGludm9rZSggRnVuY3RvciYgZiwgVDEgdDEsIFQyIHQyICkgICAgICAgICAgeyByZXR1cm4gZiggdDEsIHQyICk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzPgotICAgIFIgICAgICAgaW52b2tlKCBGdW5jdG9yJiBmLCBUMSB0MSwgVDIgdDIsIFQzIHQzICkgICB7IHJldHVybiBmKCB0MSwgdDIsIHQzICk7IH0KLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpbnZva2VyPHVudXNlZD4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gICAgdW51c2VkICBpbnZva2UoIEZ1bmN0b3ImIGYgKSAgICAgICAgICAgICAgICAgICAgICAgIHsgZigpOyByZXR1cm4gdW51c2VkKCk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yLCB0eXBlbmFtZSBUMT4KLSAgICB1bnVzZWQgIGludm9rZSggRnVuY3RvciYgZiwgVDEgdDEgKSAgICAgICAgICAgICAgICAgeyBmKCB0MSApOyByZXR1cm4gdW51c2VkKCk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci0gICAgdW51c2VkICBpbnZva2UoIEZ1bmN0b3ImIGYsIFQxIHQxLCBUMiB0MiApICAgICAgICAgIHsgZiggdDEsIHQyICk7IHJldHVybiB1bnVzZWQoKTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3IsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDM+Ci0gICAgdW51c2VkICBpbnZva2UoIEZ1bmN0b3ImIGYsIFQxIHQxLCBUMiB0MiwgVDMgdDMgKSAgIHsgZiggdDEsIHQyLCB0MyApOyByZXR1cm4gdW51c2VkKCk7IH0KLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHV0X2RldGFpbAotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgdW5pdF90ZXN0OjpjYWxsYmFjazAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSB1dF9kZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSPgotc3RydWN0IGNhbGxiYWNrMF9pbXBsIHsKLSAgICB2aXJ0dWFsIH5jYWxsYmFjazBfaW1wbCgpIHt9Ci0KLSAgICB2aXJ0dWFsIFIgaW52b2tlKCkgPSAwOwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgRnVuY3Rvcj4KLXN0cnVjdCBjYWxsYmFjazBfaW1wbF90IDogY2FsbGJhY2swX2ltcGw8Uj4gewotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgZXhwbGljaXQgY2FsbGJhY2swX2ltcGxfdCggRnVuY3RvciBmICkgOiBtX2YoIGYgKSB7fQotCi0gICAgdmlydHVhbCBSIGludm9rZSgpIHsgcmV0dXJuIGludm9rZXI8Uj4oKS5pbnZva2UoIG1fZiApOyB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgRnVuY3RvciBtX2Y7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSB1dF9kZXRhaWwKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiA9IHV0X2RldGFpbDo6dW51c2VkPgotY2xhc3MgY2FsbGJhY2swIHsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcnMKLSAgICBjYWxsYmFjazAoKSB7fQotI2lmZGVmIE5ETkJPT1NUX0NBTExCQUNLX0VYUExJQ0lUX0NPUFlfQ09OU1RSVUNUT1IKLSAgICBjYWxsYmFjazAoIGNhbGxiYWNrMCBjb25zdCYgcmhzICkgOiBtX2ltcGwoIHJocy5tX2ltcGwgKSB7fQotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICAgIGNhbGxiYWNrMCggRnVuY3RvciBmICkKLSAgICA6IG1faW1wbCggbmV3IHV0X2RldGFpbDo6Y2FsbGJhY2swX2ltcGxfdDxSLEZ1bmN0b3I+KCBmICkgKSB7fQotICAgIAotICAgIHZvaWQgICAgICAgIG9wZXJhdG9yPSggY2FsbGJhY2swIGNvbnN0JiByaHMgKSB7IG1faW1wbCA9IHJocy5tX2ltcGw7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gICAgdm9pZCAgICAgICAgb3BlcmF0b3I9KCBGdW5jdG9yIGYgKSB7IG1faW1wbC5yZXNldCggbmV3IHV0X2RldGFpbDo6Y2FsbGJhY2swX2ltcGxfdDxSLEZ1bmN0b3I+KCBmICkgKTsgIH0KLQotICAgIFIgICAgICAgICAgIG9wZXJhdG9yKCkoKSBjb25zdCB7IHJldHVybiBtX2ltcGwtPmludm9rZSgpOyB9Ci0KLSAgICBib29sICAgICAgICBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9pbXBsOyB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8dXRfZGV0YWlsOjpjYWxsYmFjazBfaW1wbDxSPiA+IG1faW1wbDsKLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICB1bml0X3Rlc3Q6OmNhbGxiYWNrMSAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIHV0X2RldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQxPgotc3RydWN0IGNhbGxiYWNrMV9pbXBsIHsKLSAgICB2aXJ0dWFsIH5jYWxsYmFjazFfaW1wbCgpIHt9Ci0KLSAgICB2aXJ0dWFsIFIgaW52b2tlKCBUMSB0MSApID0gMDsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQxLHR5cGVuYW1lIEZ1bmN0b3I+Ci1zdHJ1Y3QgY2FsbGJhY2sxX2ltcGxfdCA6IGNhbGxiYWNrMV9pbXBsPFIsVDE+IHsKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIGV4cGxpY2l0IGNhbGxiYWNrMV9pbXBsX3QoIEZ1bmN0b3IgZiApIDogbV9mKCBmICkge30KLQotICAgIHZpcnR1YWwgUiBpbnZva2UoIFQxIHQxICkgeyByZXR1cm4gaW52b2tlcjxSPigpLmludm9rZSggbV9mLCB0MSApOyB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgRnVuY3RvciBtX2Y7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSB1dF9kZXRhaWwKLQotdGVtcGxhdGU8dHlwZW5hbWUgVDEsdHlwZW5hbWUgUiA9IHV0X2RldGFpbDo6dW51c2VkPgotY2xhc3MgY2FsbGJhY2sxIHsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcnMKLSAgICBjYWxsYmFjazEoKSB7fQotI2lmZGVmIE5ETkJPT1NUX0NBTExCQUNLX0VYUExJQ0lUX0NPUFlfQ09OU1RSVUNUT1IKLSAgICBjYWxsYmFjazEoIGNhbGxiYWNrMSBjb25zdCYgcmhzICkgOiBtX2ltcGwoIHJocy5tX2ltcGwgKSB7fQotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICAgIGNhbGxiYWNrMSggRnVuY3RvciBmICkKLSAgICA6IG1faW1wbCggbmV3IHV0X2RldGFpbDo6Y2FsbGJhY2sxX2ltcGxfdDxSLFQxLEZ1bmN0b3I+KCBmICkgKSB7fQotCi0gICAgdm9pZCAgICAgICAgb3BlcmF0b3I9KCBjYWxsYmFjazEgY29uc3QmIHJocyApIHsgbV9pbXBsID0gcmhzLm1faW1wbDsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgICB2b2lkICAgICAgICBvcGVyYXRvcj0oIEZ1bmN0b3IgZiApIHsgbV9pbXBsLnJlc2V0KCBuZXcgdXRfZGV0YWlsOjpjYWxsYmFjazFfaW1wbF90PFIsVDEsRnVuY3Rvcj4oIGYgKSApOyAgfQotCi0gICAgUiAgICAgICAgICAgb3BlcmF0b3IoKSggVDEgdDEgKSBjb25zdCB7IHJldHVybiBtX2ltcGwtPmludm9rZSggdDEgKTsgfQotCi0gICAgYm9vbCAgICAgICAgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1faW1wbDsgfQotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPHV0X2RldGFpbDo6Y2FsbGJhY2sxX2ltcGw8UixUMT4gPiBtX2ltcGw7Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgdW5pdF90ZXN0OjpjYWxsYmFjazIgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSB1dF9kZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUMSx0eXBlbmFtZSBUMj4KLXN0cnVjdCBjYWxsYmFjazJfaW1wbCB7Ci0gICAgdmlydHVhbCB+Y2FsbGJhY2syX2ltcGwoKSB7fQotCi0gICAgdmlydHVhbCBSIGludm9rZSggVDEgdDEsIFQyIHQyICkgPSAwOwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBGdW5jdG9yPgotc3RydWN0IGNhbGxiYWNrMl9pbXBsX3QgOiBjYWxsYmFjazJfaW1wbDxSLFQxLFQyPiB7Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBleHBsaWNpdCBjYWxsYmFjazJfaW1wbF90KCBGdW5jdG9yIGYgKSA6IG1fZiggZiApIHt9Ci0KLSAgICB2aXJ0dWFsIFIgaW52b2tlKCBUMSB0MSwgVDIgdDIgKSB7IHJldHVybiBpbnZva2VyPFI+KCkudGVtcGxhdGUgaW52b2tlPEZ1bmN0b3IsVDEsVDI+KCBtX2YsIHQxLCB0MiApOyB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgRnVuY3RvciBtX2Y7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSB1dF9kZXRhaWwKLQotdGVtcGxhdGU8dHlwZW5hbWUgVDEsdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFIgPSB1dF9kZXRhaWw6OnVudXNlZD4KLWNsYXNzIGNhbGxiYWNrMiB7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3JzCi0gICAgY2FsbGJhY2syKCkge30KLSNpZmRlZiBORE5CT09TVF9DQUxMQkFDS19FWFBMSUNJVF9DT1BZX0NPTlNUUlVDVE9SCi0gICAgY2FsbGJhY2syKCBjYWxsYmFjazIgY29uc3QmIHJocyApIDogbV9pbXBsKCByaHMubV9pbXBsICkge30KLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgICAgICAgICAgICAgICBjYWxsYmFjazIoIEZ1bmN0b3IgZiApIDogbV9pbXBsKCBuZXcgdXRfZGV0YWlsOjpjYWxsYmFjazJfaW1wbF90PFIsVDEsVDIsRnVuY3Rvcj4oIGYgKSApIHt9Ci0KLSAgICB2b2lkICAgICAgICBvcGVyYXRvcj0oIGNhbGxiYWNrMiBjb25zdCYgcmhzICkgeyBtX2ltcGwgPSByaHMubV9pbXBsOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICAgIHZvaWQgICAgICAgIG9wZXJhdG9yPSggRnVuY3RvciBmICkgeyBtX2ltcGwucmVzZXQoIG5ldyB1dF9kZXRhaWw6OmNhbGxiYWNrMl9pbXBsX3Q8UixUMSxUMixGdW5jdG9yPiggZiApICk7ICB9Ci0KLSAgICBSICAgICAgICAgICBvcGVyYXRvcigpKCBUMSB0MSwgVDIgdDIgKSBjb25zdCB7IHJldHVybiBtX2ltcGwtPmludm9rZSggdDEsIHQyICk7IH0KLQotICAgIGJvb2wgICAgICAgIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX2ltcGw7IH0KLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjx1dF9kZXRhaWw6OmNhbGxiYWNrMl9pbXBsPFIsVDEsVDI+ID4gbV9pbXBsOwotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgIHVuaXRfdGVzdDo6Y2FsbGJhY2szICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgdXRfZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMz4KLXN0cnVjdCBjYWxsYmFjazNfaW1wbCB7Ci0gICAgdmlydHVhbCB+Y2FsbGJhY2szX2ltcGwoKSB7fQotCi0gICAgdmlydHVhbCBSIGludm9rZSggVDEgdDEsIFQyIHQyLCBUMyB0MyApID0gMDsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIEZ1bmN0b3I+Ci1zdHJ1Y3QgY2FsbGJhY2szX2ltcGxfdCA6IGNhbGxiYWNrM19pbXBsPFIsVDEsVDIsVDM+IHsKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIGV4cGxpY2l0IGNhbGxiYWNrM19pbXBsX3QoIEZ1bmN0b3IgZiApIDogbV9mKCBmICkge30KLQotICAgIHZpcnR1YWwgUiBpbnZva2UoIFQxIHQxLCBUMiB0MiwgVDMgdDMgKSB7IHJldHVybiBpbnZva2VyPFI+KCkuaW52b2tlKCBtX2YsIHQxLCB0MiwgdDMgKTsgfQotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIEZ1bmN0b3IgbV9mOwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgdXRfZGV0YWlsCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQxLHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgUiA9IHV0X2RldGFpbDo6dW51c2VkPgotY2xhc3MgY2FsbGJhY2szIHsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcnMKLSAgICBjYWxsYmFjazMoKSB7fQotI2lmZGVmIE5ETkJPT1NUX0NBTExCQUNLX0VYUExJQ0lUX0NPUFlfQ09OU1RSVUNUT1IKLSAgICBjYWxsYmFjazMoIGNhbGxiYWNrMyBjb25zdCYgcmhzICkgOiBtX2ltcGwoIHJocy5tX2ltcGwgKSB7fQotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICAgIGNhbGxiYWNrMyggRnVuY3RvciBmICkKLSAgICA6IG1faW1wbCggbmV3IHV0X2RldGFpbDo6Y2FsbGJhY2szX2ltcGxfdDxSLFQxLFQyLFQzLEZ1bmN0b3I+KCBmICkgKSB7fQotCi0gICAgdm9pZCAgICAgICAgb3BlcmF0b3I9KCBjYWxsYmFjazMgY29uc3QmIHJocyApIHsgbV9pbXBsID0gcmhzLm1faW1wbDsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgICB2b2lkICAgICAgICBvcGVyYXRvcj0oIEZ1bmN0b3IgZiApIHsgbV9pbXBsLnJlc2V0KCBuZXcgdXRfZGV0YWlsOjpjYWxsYmFjazNfaW1wbF90PFIsVDEsVDIsVDMsRnVuY3Rvcj4oIGYgKSApOyAgfQotCi0gICAgUiAgICAgICAgICAgb3BlcmF0b3IoKSggVDEgdDEsIFQyIHQyLCBUMyB0MyApIGNvbnN0IHsgcmV0dXJuIG1faW1wbC0+aW52b2tlKCB0MSwgdDIsIHQzICk7IH0KLQotICAgIGJvb2wgICAgICAgIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX2ltcGw7IH0KLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjx1dF9kZXRhaWw6OmNhbGxiYWNrM19pbXBsPFIsVDEsVDIsVDM+ID4gbV9pbXBsOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSN1bmRlZiBORE5CT09TVF9DQUxMQkFDS19FWFBMSUNJVF9DT1BZX0NPTlNUUlVDVE9SCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9DQUxMQkFDS18wMjA1MDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9jbGFzc19wcm9wZXJ0aWVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9jbGFzc19wcm9wZXJ0aWVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjVlYTk5OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvY2xhc3NfcHJvcGVydGllcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMjEgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwMS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBzaW1wbGUgZmFjaWxpdHkgdGhhdCBtaW1taWMgbm90aW9uIG9mIHJlYWQtb25seSByZWFkLXdyaXRlIAotLy8gIHByb3BlcnRpZXMgaW4gQysrIGNsYXNzZXMuIE9yaWdpbmFsIGlkZWEgYnkgSGVucmlrIFJhdm4uCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX0NMQVNTX1BST1BFUlRJRVNfSFBQXzA3MTg5NEdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX0NMQVNTX1BST1BFUlRJRVNfSFBQXzA3MTg5NEdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvY29uZmlnLmhwcD4KLQotLy8gQm9vc3QKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0lCTUNQUF9fLCBORE5CT09TVF9URVNURURfQVQoNjAwKSkKLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2Zvcl9lYWNoLmhwcD4KLSNlbmRpZgotI2luY2x1ZGUgPG5kbmJvb3N0L2NhbGxfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfcG9pbnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX2NvbnN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2FkZHJlc3NvZi5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPGlvc2Z3ZD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgY2xhc3NfcHJvcGVydHkgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8Y2xhc3MgUHJvcGVydHlUeXBlPgotY2xhc3MgY2xhc3NfcHJvcGVydHkgewotcHJvdGVjdGVkOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2FsbF90cmFpdHM8UHJvcGVydHlUeXBlPjo6Y29uc3RfcmVmZXJlbmNlICAgICByZWFkX2FjY2Vzc190OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2FsbF90cmFpdHM8UHJvcGVydHlUeXBlPjo6cGFyYW1fdHlwZSAgICAgICAgICB3cml0ZV9wYXJhbV90OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3BvaW50ZXI8dHlwZW5hbWUgYWRkX2NvbnN0PFByb3BlcnR5VHlwZT46OnR5cGU+Ojp0eXBlIGFkZHJlc3NfcmVzX3Q7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICAgICAgICAgICAgICAgICAgY2xhc3NfcHJvcGVydHkoKSA6IHZhbHVlKCBQcm9wZXJ0eVR5cGUoKSApIHt9Ci0gICAgZXhwbGljaXQgICAgICAgIGNsYXNzX3Byb3BlcnR5KCB3cml0ZV9wYXJhbV90IGluaXRfdmFsdWUgKQotICAgIDogdmFsdWUoIGluaXRfdmFsdWUgKSB7fQotCi0gICAgLy8gQWNjZXNzIG1ldGhvZHMKLSAgICBvcGVyYXRvciAgICAgICAgcmVhZF9hY2Nlc3NfdCgpIGNvbnN0ICAgeyByZXR1cm4gdmFsdWU7IH0KLSAgICByZWFkX2FjY2Vzc190ICAgZ2V0KCkgY29uc3QgICAgICAgICAgICAgeyByZXR1cm4gdmFsdWU7IH0KLSAgICBib29sICAgICAgICAgICAgb3BlcmF0b3IhKCkgY29uc3QgICAgICAgeyByZXR1cm4gIXZhbHVlOyB9Ci0gICAgYWRkcmVzc19yZXNfdCAgIG9wZXJhdG9yJigpIGNvbnN0ICAgICAgIHsgcmV0dXJuICZ2YWx1ZTsgfQotCi0gICAgLy8gRGF0YSBtZW1iZXJzCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfTk9fUFJPVEVDVEVEX1VTSU5HCi1wcm90ZWN0ZWQ6Ci0jZW5kaWYKLSAgICBQcm9wZXJ0eVR5cGUgICAgICAgIHZhbHVlOwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2lmZGVmIE5ETkJPT1NUX0NMQVNTSUNfSU9TVFJFQU1TCi0KLXRlbXBsYXRlPGNsYXNzIFByb3BlcnR5VHlwZT4KLWlubGluZSBzdGQ6Om9zdHJlYW0mCi1vcGVyYXRvcjw8KCBzdGQ6Om9zdHJlYW0mIG9zLCBjbGFzc19wcm9wZXJ0eTxQcm9wZXJ0eVR5cGU+IGNvbnN0JiBwICkKLQotI2Vsc2UKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQxLCB0eXBlbmFtZSBUcixjbGFzcyBQcm9wZXJ0eVR5cGU+Ci1pbmxpbmUgc3RkOjpiYXNpY19vc3RyZWFtPENoYXJUMSxUcj4mCi1vcGVyYXRvcjw8KCBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQxLFRyPiYgb3MsIGNsYXNzX3Byb3BlcnR5PFByb3BlcnR5VHlwZT4gY29uc3QmIHAgKQotCi0jZW5kaWYKLXsKLSAgICByZXR1cm4gb3MgPDwgcC5nZXQoKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2RlZmluZSBERUZJTkVfUFJPUEVSVFlfRlJFRV9CSU5BUllfT1BFUkFUT1IoIG9wICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZTxjbGFzcyBQcm9wZXJ0eVR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLWlubGluZSBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotb3BlcmF0b3Igb3AoIFByb3BlcnR5VHlwZSBjb25zdCYgbGhzLCBjbGFzc19wcm9wZXJ0eTxQcm9wZXJ0eVR5cGU+IGNvbnN0JiByaHMgKSBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICByZXR1cm4gbGhzIG9wIHJocy5nZXQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZTxjbGFzcyBQcm9wZXJ0eVR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLWlubGluZSBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotb3BlcmF0b3Igb3AoIGNsYXNzX3Byb3BlcnR5PFByb3BlcnR5VHlwZT4gY29uc3QmIGxocywgUHJvcGVydHlUeXBlIGNvbnN0JiByaHMgKSBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICByZXR1cm4gbGhzLmdldCgpIG9wIHJoczsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZTxjbGFzcyBQcm9wZXJ0eVR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLWlubGluZSBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotb3BlcmF0b3Igb3AoIGNsYXNzX3Byb3BlcnR5PFByb3BlcnR5VHlwZT4gY29uc3QmIGxocywgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgY2xhc3NfcHJvcGVydHk8UHJvcGVydHlUeXBlPiBjb25zdCYgcmhzICkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHJldHVybiBsaHMuZ2V0KCkgb3AgcmhzLmdldCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qKi8KLQotREVGSU5FX1BST1BFUlRZX0ZSRUVfQklOQVJZX09QRVJBVE9SKCA9PSApCi1ERUZJTkVfUFJPUEVSVFlfRlJFRV9CSU5BUllfT1BFUkFUT1IoICE9ICkKLQotI3VuZGVmIERFRklORV9QUk9QRVJUWV9GUkVFX0JJTkFSWV9PUEVSQVRPUgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0KLSNkZWZpbmUgREVGSU5FX1BST1BFUlRZX0xPR0lDQUxfT1BFUkFUT1IoIG9wICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGU8Y2xhc3MgUHJvcGVydHlUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1pbmxpbmUgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLW9wZXJhdG9yIG9wKCBib29sIGIsIGNsYXNzX3Byb3BlcnR5PFByb3BlcnR5VHlwZT4gY29uc3QmIHAgKSAgICAgICAgICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgcmV0dXJuIGIgb3AgcC5nZXQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGU8Y2xhc3MgUHJvcGVydHlUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1pbmxpbmUgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLW9wZXJhdG9yIG9wKCBjbGFzc19wcm9wZXJ0eTxQcm9wZXJ0eVR5cGU+IGNvbnN0JiBwLCBib29sIGIgKSAgICAgICAgICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgcmV0dXJuIGIgb3AgcC5nZXQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLyoqLwotCi1ERUZJTkVfUFJPUEVSVFlfTE9HSUNBTF9PUEVSQVRPUiggJiYgKQotREVGSU5FX1BST1BFUlRZX0xPR0lDQUxfT1BFUkFUT1IoIHx8ICkKLQotI2VuZGlmCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIHJlYWRvbmx5X3Byb3BlcnR5ICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8Y2xhc3MgUHJvcGVydHlUeXBlPgotY2xhc3MgcmVhZG9ubHlfcHJvcGVydHkgOiBwdWJsaWMgY2xhc3NfcHJvcGVydHk8UHJvcGVydHlUeXBlPiB7Ci0gICAgdHlwZWRlZiBjbGFzc19wcm9wZXJ0eTxQcm9wZXJ0eVR5cGU+ICAgICAgICAgYmFzZV9wcm9wOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV9wcm9wOjphZGRyZXNzX3Jlc190ICAgIGFycm93X3Jlc190OwotcHJvdGVjdGVkOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV9wcm9wOjp3cml0ZV9wYXJhbV90ICAgIHdyaXRlX3BhcmFtX3Q7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHlfcHJvcGVydHkoKSB7fQotICAgIGV4cGxpY2l0ICAgICAgICByZWFkb25seV9wcm9wZXJ0eSggd3JpdGVfcGFyYW1fdCBpbml0X3ZhbHVlICkgOiBiYXNlX3Byb3AoIGluaXRfdmFsdWUgKSB7fQotCi0gICAgLy8gYWNjZXNzIG1ldGhvZHMKLSAgICBhcnJvd19yZXNfdCAgICAgb3BlcmF0b3ItPigpIGNvbnN0ICAgICAgeyByZXR1cm4gbmRuYm9vc3Q6OmFkZHJlc3NvZiggYmFzZV9wcm9wOjp2YWx1ZSApOyB9Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0lCTUNQUF9fLCBORE5CT09TVF9URVNURURfQVQoNjAwKSkKLQotI2RlZmluZSBORE5CT09TVF9SRUFET05MWV9QUk9QRVJUWSggcHJvcGVydHlfdHlwZSwgZnJpZW5kcyApIG5kbmJvb3N0Ojp1bml0X3Rlc3Q6OnJlYWR3cml0ZV9wcm9wZXJ0eTxwcm9wZXJ0eV90eXBlID4KLQotI2Vsc2UKLQotI2RlZmluZSBORE5CT09TVF9SRUFET05MWV9QUk9QRVJUWV9ERUNMQVJFX0ZSSUVORChyLCBkYXRhLCBlbGVtKSBmcmllbmQgY2xhc3MgZWxlbTsKLQotI2RlZmluZSBORE5CT09TVF9SRUFET05MWV9QUk9QRVJUWSggcHJvcGVydHlfdHlwZSwgZnJpZW5kcyApICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotY2xhc3MgTkROQk9PU1RfSk9JTiggcmVhZG9ubHlfcHJvcGVydHksIF9fTElORV9fICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotOiBwdWJsaWMgbmRuYm9vc3Q6OnVuaXRfdGVzdDo6cmVhZG9ubHlfcHJvcGVydHk8cHJvcGVydHlfdHlwZSA+IHsgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVuaXRfdGVzdDo6cmVhZG9ubHlfcHJvcGVydHk8cHJvcGVydHlfdHlwZSA+IGJhc2VfcHJvcDsgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSCggTkROQk9PU1RfUkVBRE9OTFlfUFJPUEVSVFlfREVDTEFSRV9GUklFTkQsICcgJywgZnJpZW5kcyApICAgXAotICAgIHR5cGVkZWYgYmFzZV9wcm9wOjp3cml0ZV9wYXJhbV90ICB3cml0ZV9wYXJhbV90OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX0pPSU4oIHJlYWRvbmx5X3Byb3BlcnR5LCBfX0xJTkVfXyApKCkge30gICAgICAgICAgICAgICAgICAgICAgXAotICAgIGV4cGxpY2l0ICAgIE5ETkJPT1NUX0pPSU4oIHJlYWRvbmx5X3Byb3BlcnR5LCBfX0xJTkVfXyApKCB3cml0ZV9wYXJhbV90IGluaXRfdiAgKSAgXAotICAgIDogYmFzZV9wcm9wKCBpbml0X3YgKSB7fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLyoqLwotCi0jZW5kaWYKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICByZWFkd3JpdGVfcHJvcGVydHkgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTxjbGFzcyBQcm9wZXJ0eVR5cGU+Ci1jbGFzcyByZWFkd3JpdGVfcHJvcGVydHkgOiBwdWJsaWMgY2xhc3NfcHJvcGVydHk8UHJvcGVydHlUeXBlPiB7Ci0gICAgdHlwZWRlZiBjbGFzc19wcm9wZXJ0eTxQcm9wZXJ0eVR5cGU+ICAgICAgICAgICAgICAgIGJhc2VfcHJvcDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF9wb2ludGVyPFByb3BlcnR5VHlwZT46OnR5cGUgICAgYXJyb3dfcmVzX3Q7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX3Byb3A6OmFkZHJlc3NfcmVzX3QgICAgICAgICAgIGNvbnN0X2Fycm93X3Jlc190OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV9wcm9wOjp3cml0ZV9wYXJhbV90ICAgICAgICAgICB3cml0ZV9wYXJhbV90OwotcHVibGljOgotICAgICAgICAgICAgICAgICAgICByZWFkd3JpdGVfcHJvcGVydHkoKSA6IGJhc2VfcHJvcCgpIHt9Ci0gICAgZXhwbGljaXQgICAgICAgIHJlYWR3cml0ZV9wcm9wZXJ0eSggd3JpdGVfcGFyYW1fdCBpbml0X3ZhbHVlICkgOiBiYXNlX3Byb3AoIGluaXRfdmFsdWUgKSB7fQotCi0gICAgLy8gYWNjZXNzIG1ldGhvZHMKLSAgICB2b2lkICAgICAgICAgICAgc2V0KCB3cml0ZV9wYXJhbV90IHYgKSAgeyBiYXNlX3Byb3A6OnZhbHVlID0gdjsgfQotICAgIGFycm93X3Jlc190ICAgICBvcGVyYXRvci0+KCkgICAgICAgICAgICB7IHJldHVybiBuZG5ib29zdDo6YWRkcmVzc29mKCBiYXNlX3Byb3A6OnZhbHVlICk7IH0KLSAgICBjb25zdF9hcnJvd19yZXNfdCBvcGVyYXRvci0+KCkgY29uc3QgICAgeyByZXR1cm4gbmRuYm9vc3Q6OmFkZHJlc3NvZiggYmFzZV9wcm9wOjp2YWx1ZSApOyB9Ci0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9OT19QUk9URUNURURfVVNJTkcKLSAgICB1c2luZyAgICAgICAgICAgYmFzZV9wcm9wOjp2YWx1ZTsKLSNlbmRpZgotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9URVNUX05PX1BST1RFQ1RFRF9VU0lORwotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9DTEFTU19QUk9QRVJUSUVTX0hQUF8wNzE4OTRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9jdXN0b21fbWFuaXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2N1c3RvbV9tYW5pcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2NWRkYzcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2N1c3RvbV9tYW5pcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IHNpbXBsZSBoZWxwZXJzIGZvciBjcmVhdGluZyBjdXNvbSBvdXRwdXQgbWFuaXB1bGF0b3JzCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX0NVU1RPTV9NQU5JUF9IUFBfMDcxODk0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfQ1VTVE9NX01BTklQX0hQUF8wNzE4OTRHRVIKLQotLy8gU1RMCi0jaW5jbHVkZSA8aW9zZndkPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgIGN1c3RvbSBtYW5pcHVsYXRvcnMgaGVscGVycyAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNYW5pcD4KLXN0cnVjdCBjdXN0b21fcHJpbnRlciB7Ci0gICAgZXhwbGljaXQgY3VzdG9tX3ByaW50ZXIoIHN0ZDo6b3N0cmVhbSYgb3N0ciApIDogbV9vc3RyKCAmb3N0ciApIHt9Ci0KLSAgICBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICptX29zdHI7IH0KLQotcHJpdmF0ZToKLSAgICBzdGQ6Om9zdHJlYW0qIGNvbnN0IG1fb3N0cjsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFVuaXE+IHN0cnVjdCBjdXN0b21fbWFuaXAge307Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFVuaXE+Ci1pbmxpbmUgY3VzdG9tX3ByaW50ZXI8Y3VzdG9tX21hbmlwPFVuaXE+ID4KLW9wZXJhdG9yPDwoIHN0ZDo6b3N0cmVhbSYgb3N0ciwgY3VzdG9tX21hbmlwPFVuaXE+IGNvbnN0JiApIHsgcmV0dXJuIGN1c3RvbV9wcmludGVyPGN1c3RvbV9tYW5pcDxVbmlxPiA+KCBvc3RyICk7IH0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9DVVNUT01fTUFOSVBfSFBQXzA3MTg5NEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2ZpeGVkX21hcHBpbmcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2ZpeGVkX21hcHBpbmcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmFiMzBhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9maXhlZF9tYXBwaW5nLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyNCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDAxLTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGZpeGVkIHNpemVkIG1hcHBpbmcgd2l0aCBzcGVjaWZpZWQgaW52YWxpZCB2YWx1ZQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9GSVhFRF9NQVBQSU5HX0hQUF8wNzE4OTRHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9GSVhFRF9NQVBQSU5HX0hQUF8wNzE4OTRHRVIKLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9yZXBlYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2FkZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY2FsbF90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9iaW5hcnlfc2VhcmNoLmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8dmVjdG9yPgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPHV0aWxpdHk+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi0vLyBjb25maWd1cmFibGUgbWF4aW11bSBmaXhlZCBzaXplZCBtYXBwaW5nIHNpemUgc3VwcG9ydGVkIGJ5IHRoaXMgaGVhZGVyLgotLy8gWW91IGNhbiByZWRlZmluZSBpdCBiZWZvcmUgaW5jbHVzaW9uIG9mIHRoaXMgZmlsZS4KLSNpZm5kZWYgTUFYX01BUF9TSVpFCi0jZGVmaW5lIE1BWF9NQVBfU0laRSAyMAotI2VuZGlmCi0KLSNkZWZpbmUgQ09OU1RSX0RFQ0xfTUlEKCB6LCBpLCBkdW1teTEgKSBrZXlfcGFyYW1fdHlwZSBrZXkjI2ksIHZhbHVlX3BhcmFtX3R5cGUgdiMjaSwKLSNkZWZpbmUgQ09OU1RSX0JPRFlfTUlEKCB6LCBpLCBkdW1teTEgKSBhZGRfcGFpcigga2V5IyNpLCB2IyNpICk7Ci0KLSNkZWZpbmUgQ09OU1RSX0RFQ0woIHosIG4sIGR1bW15MSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGZpeGVkX21hcHBpbmcoIE5ETkJPT1NUX1BQX1JFUEVBVF8gIyMgeiggbiwgQ09OU1RSX0RFQ0xfTUlELCAiIiApICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfcGFyYW1fdHlwZSBpbnZhbGlkX3ZhbHVlICkgICAgICAgICAgIFwKLSAgICA6IG1faW52YWxpZF92YWx1ZSggaW52YWxpZF92YWx1ZSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX1BQX1JFUEVBVF8gIyMgeiggbiwgQ09OU1RSX0JPRFlfTUlELCAiIiApICAgICAgICAgICAgIFwKLSAgICAgICAgaW5pdCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0vKiovCi0KLSNkZWZpbmUgQ09OVFJVQ1RPUlMoIG4gKSBORE5CT09TVF9QUF9SRVBFQVQoIG4sIENPTlNUUl9ERUNMLCAiIiApCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIENvbXBhcmUgPSBzdGQ6Omxlc3M8S2V5PiA+Ci1jbGFzcyBmaXhlZF9tYXBwaW5nCi17Ci0gICAgdHlwZWRlZiBzdGQ6OnBhaXI8S2V5LFZhbHVlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtX3R5cGU7Ci0gICAgdHlwZWRlZiBzdGQ6OnZlY3RvcjxlbGVtX3R5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6dmVjdG9yPGVsZW1fdHlwZT46OmNvbnN0X2l0ZXJhdG9yIGl0ZXJhdG9yOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBjYWxsX3RyYWl0czxLZXk+OjpwYXJhbV90eXBlICAgICAgICAgICBrZXlfcGFyYW1fdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNhbGxfdHJhaXRzPFZhbHVlPjo6cGFyYW1fdHlwZSAgICAgICAgIHZhbHVlX3BhcmFtX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjYWxsX3RyYWl0czxWYWx1ZT46OmNvbnN0X3JlZmVyZW5jZSAgICB2YWx1ZV9yZWZfdHlwZTsKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19ERUNDWFhfVkVSLCBORE5CT09TVF9URVNURURfQVQoNjA1OTAwNDIpKQotICAgIHN0cnVjdCBwMTsgZnJpZW5kIHN0cnVjdCBwMTsKLSAgICBzdHJ1Y3QgcDI7IGZyaWVuZCBzdHJ1Y3QgcDI7Ci0jZW5kaWYKLQotICAgIC8vIGJpbmQoIENvbXBhcmUoKSwgYmluZChzZWxlY3Qxc3Q8ZWxlbV90eXBlPigpLCBfMSksICBiaW5kKGlkZW50aXR5PEtleT4oKSwgXzIpICkKLSAgICBzdHJ1Y3QgcDEgOiBwdWJsaWMgc3RkOjpiaW5hcnlfZnVuY3Rpb248ZWxlbV90eXBlLEtleSxib29sPgotICAgIHsKLSAgICAgICAgYm9vbCBvcGVyYXRvcigpKCBlbGVtX3R5cGUgY29uc3QmIHgsIEtleSBjb25zdCYgeSApIGNvbnN0IHsgcmV0dXJuIENvbXBhcmUoKSggeC5maXJzdCwgeSApOyB9Ci0gICAgfTsKLQotICAgIC8vIGJpbmQoIENvbXBhcmUoKSwgYmluZChzZWxlY3Qxc3Q8ZWxlbV90eXBlPigpLCBfMSksIGJpbmQoc2VsZWN0MXN0PGVsZW1fdHlwZT4oKSwgXzIpICkKLSAgICBzdHJ1Y3QgcDIgOiBwdWJsaWMgc3RkOjpiaW5hcnlfZnVuY3Rpb248ZWxlbV90eXBlLGVsZW1fdHlwZSxib29sPgotICAgIHsKLSAgICAgICAgYm9vbCBvcGVyYXRvcigpKCBlbGVtX3R5cGUgY29uc3QmIHgsIGVsZW1fdHlwZSBjb25zdCYgeSApIGNvbnN0IHsgcmV0dXJuIENvbXBhcmUoKSggeC5maXJzdCwgeS5maXJzdCApOyB9Ci0gICAgfTsKLQotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9ycwotICAgIENPTlRSVUNUT1JTKCBORE5CT09TVF9QUF9BREQoIE1BWF9NQVBfU0laRSwgMSApICkKLQotICAgIC8vIGtleSAtPiB2YWx1ZSBhY2Nlc3MKLSAgICB2YWx1ZV9yZWZfdHlwZSAgb3BlcmF0b3JbXSgga2V5X3BhcmFtX3R5cGUga2V5ICkgY29uc3QKLSAgICB7Ci0gICAgICAgIGl0ZXJhdG9yIGl0ID0gbmRuYm9vc3Q6OmRldGFpbDo6bG93ZXJfYm91bmQoIG1fbWFwLmJlZ2luKCksIG1fbWFwLmVuZCgpLCBrZXksIHAxKCkgKTsKLQotICAgICAgICByZXR1cm4gKGl0ID09IG1fbWFwLmVuZCgpIHx8IENvbXBhcmUoKSgga2V5LCBpdC0+Zmlyc3QgKSApID8gbV9pbnZhbGlkX3ZhbHVlIDogaXQtPnNlY29uZDsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gSW1wbGVtZW50YXRpb24KLSAgICB2b2lkICAgICAgICAgICAgaW5pdCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHN0ZDo6c29ydCggbV9tYXAuYmVnaW4oKSwgbV9tYXAuZW5kKCksIHAyKCkgKTsgfQotICAgIHZvaWQgICAgICAgICAgICBhZGRfcGFpcigga2V5X3BhcmFtX3R5cGUga2V5LCB2YWx1ZV9wYXJhbV90eXBlIHZhbHVlICkgIHsgbV9tYXAucHVzaF9iYWNrKCBlbGVtX3R5cGUoIGtleSwgdmFsdWUgKSApOyB9Ci0KLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBWYWx1ZSAgICAgICAgICAgbV9pbnZhbGlkX3ZhbHVlOwotICAgIG1hcF90eXBlICAgICAgICBtX21hcDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI3VuZGVmIE1BWF9NQVBfU0laRQotI3VuZGVmIENPTlNUUl9ERUNMX01JRAotI3VuZGVmIENPTlNUUl9CT0RZX01JRAotI3VuZGVmIENPTlNUUl9ERUNMCi0jdW5kZWYgQ09OVFJVQ1RPUlMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfRklYRURfTUFQUElOR19IUFBfMDcxODk0R0VSCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9mb3JlYWNoLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9mb3JlYWNoLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGJjMjAyNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvZm9yZWFjaC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyODEgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgRXJpYyBOaWVibGVyIDIwMDQtMjAwNQotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IHRoaXMgaXMgYW4gYWJyaWRnZWQgdmVyc2lvbiBvZiBhbiBleGNlbGVudCBORE5CT09TVF9GT1JFQUNIIGZhY2lsaXR5Ci0vLyAgcHJlc2VudGVkIGJ5IEVyaWMgTmllYmxlci4gSSBhbSBzbyBmb25kIG9mIGl0IHNvIEkgY2FuJ3Qgd2FpdCB0aWxsIGl0IAotLy8gIGdvaW5nIHRvIGJlIGFjY2VwdGVkIGludG8gQm9vc3QuIEFsc28gSSBuZWVkIHZlcnNpb24gd2l0aCBsZXNzIG51bWJlciBvZiBkZXBlbmRlbmNpZXMgCi0vLyAgYW5kIG1vcmUgcG9ydGFibGUuIFRoaXMgdmVyc2lvbiBkb2Vzbid0IHN1cHBvcnQgcnZhbHVlcyBhbmQgd2lsbCByZWV2ZWx1YXRlIGl0J3MgCi0vLyAgcGFyYW1ldGVycywgYnV0IHNob3VsZCBiZSBnb29kIGVub3VnaCBmb3IgbXkgcHVycG9zZXMuCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX0ZPUkVBQ0hfSFBQXzAyMTAwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX0ZPUkVBQ0hfSFBQXzAyMTAwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvY29uZmlnLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb25zdC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi1uYW1lc3BhY2UgZm9yX2VhY2ggewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICBzdGF0aWNfYW55ICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXN0cnVjdCBzdGF0aWNfYW55X2Jhc2UKLXsKLSAgICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEl0ZXI+Ci1zdHJ1Y3Qgc3RhdGljX2FueSA6IHN0YXRpY19hbnlfYmFzZQotewotICAgIHN0YXRpY19hbnkoIEl0ZXIgY29uc3QmIHQgKSA6IG1faXQoIHQgKSB7fQotCi0gICAgbXV0YWJsZSBJdGVyIG1faXQ7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10eXBlZGVmIHN0YXRpY19hbnlfYmFzZSBjb25zdCYgc3RhdGljX2FueV90OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyPgotaW5saW5lIEl0ZXImCi1zdGF0aWNfYW55X2Nhc3QoIHN0YXRpY19hbnlfdCBhLCBJdGVyKiA9IDAgKQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxJdGVyJj4oIHN0YXRpY19jYXN0PHN0YXRpY19hbnk8SXRlcj4gY29uc3QmPiggYSApLm1faXQgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgIGlzX2NvbnN0ICAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDPgotaW5saW5lIGlzX2NvbnN0PEM+Ci1pc19jb25zdF9jb2xsKCBDJiApCi17Ci0gICAgcmV0dXJuIGlzX2NvbnN0PEM+KCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgICAgIGJlZ2luICAgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQz4KLWlubGluZSBzdGF0aWNfYW55PE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgQzo6aXRlcmF0b3I+Ci1iZWdpbiggQyYgdCwgbXBsOjpmYWxzZV8gKQotewotICAgIHJldHVybiBzdGF0aWNfYW55PE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgQzo6aXRlcmF0b3I+KCB0LmJlZ2luKCkgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQz4KLWlubGluZSBzdGF0aWNfYW55PE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgQzo6Y29uc3RfaXRlcmF0b3I+Ci1iZWdpbiggQyBjb25zdCYgdCwgbXBsOjp0cnVlXyApCi17Ci0gICAgcmV0dXJuIHN0YXRpY19hbnk8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBDOjpjb25zdF9pdGVyYXRvcj4oIHQuYmVnaW4oKSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICAgICAgZW5kICAgICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEM+Ci1pbmxpbmUgc3RhdGljX2FueTxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIEM6Oml0ZXJhdG9yPgotZW5kKCBDJiB0LCBtcGw6OmZhbHNlXyApCi17Ci0gICAgcmV0dXJuIHN0YXRpY19hbnk8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBDOjppdGVyYXRvcj4oIHQuZW5kKCkgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQz4KLWlubGluZSBzdGF0aWNfYW55PE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgQzo6Y29uc3RfaXRlcmF0b3I+Ci1lbmQoIEMgY29uc3QmIHQsIG1wbDo6dHJ1ZV8gKQotewotICAgIHJldHVybiBzdGF0aWNfYW55PE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgQzo6Y29uc3RfaXRlcmF0b3I+KCB0LmVuZCgpICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgICAgICBkb25lICAgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQz4KLWlubGluZSBib29sCi1kb25lKCBzdGF0aWNfYW55X3QgY3VyLCBzdGF0aWNfYW55X3QgZW5kLCBDJiwgbXBsOjpmYWxzZV8gKQotewotICAgIHJldHVybiAgc3RhdGljX2FueV9jYXN0PE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgQzo6aXRlcmF0b3I+KCBjdXIgKSA9PQotICAgICAgICAgICAgc3RhdGljX2FueV9jYXN0PE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgQzo6aXRlcmF0b3I+KCBlbmQgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQz4KLWlubGluZSBib29sCi1kb25lKCBzdGF0aWNfYW55X3QgY3VyLCBzdGF0aWNfYW55X3QgZW5kLCBDIGNvbnN0JiwgbXBsOjp0cnVlXyApCi17Ci0gICAgcmV0dXJuICBzdGF0aWNfYW55X2Nhc3Q8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBDOjpjb25zdF9pdGVyYXRvcj4oIGN1ciApID09Ci0gICAgICAgICAgICBzdGF0aWNfYW55X2Nhc3Q8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBDOjpjb25zdF9pdGVyYXRvcj4oIGVuZCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICAgICAgbmV4dCAgICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEM+Ci1pbmxpbmUgdm9pZAotbmV4dCggc3RhdGljX2FueV90IGN1ciwgQyYsIG1wbDo6ZmFsc2VfICkKLXsKLSAgICArK3N0YXRpY19hbnlfY2FzdDxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIEM6Oml0ZXJhdG9yPiggY3VyICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEM+Ci1pbmxpbmUgdm9pZAotbmV4dCggc3RhdGljX2FueV90IGN1ciwgQyBjb25zdCYsIG1wbDo6dHJ1ZV8gKQotewotICAgICsrc3RhdGljX2FueV9jYXN0PE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgQzo6Y29uc3RfaXRlcmF0b3I+KCBjdXIgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgICAgIGRlcmVmICAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTxjbGFzcyBSZWZUeXBlLHR5cGVuYW1lIEM+Ci1pbmxpbmUgUmVmVHlwZQotZGVyZWYoIHN0YXRpY19hbnlfdCBjdXIsIEMmLCA6Om5kbmJvb3N0Ojp0eXBlPFJlZlR5cGU+LCBtcGw6OmZhbHNlXyApCi17Ci0gICAgcmV0dXJuICpzdGF0aWNfYW55X2Nhc3Q8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBDOjppdGVyYXRvcj4oIGN1ciApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTxjbGFzcyBSZWZUeXBlLHR5cGVuYW1lIEM+Ci1pbmxpbmUgUmVmVHlwZQotZGVyZWYoIHN0YXRpY19hbnlfdCBjdXIsIEMgY29uc3QmLCA6Om5kbmJvb3N0Ojp0eXBlPFJlZlR5cGU+LCBtcGw6OnRydWVfICkKLXsKLSAgICByZXR1cm4gKnN0YXRpY19hbnlfY2FzdDxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIEM6OmNvbnN0X2l0ZXJhdG9yPiggY3VyICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgTkROQk9PU1RfVEVTVF9GT1JFQUNIICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2RlZmluZSBORE5CT09TVF9URVNUX0ZFX0FOWSAgICAgICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojp1bml0X3Rlc3Q6OmZvcl9lYWNoOjpzdGF0aWNfYW55X3QKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9GRV9JU19DT05TVCggQ09MICkgICAgICAgOjpuZG5ib29zdDo6dW5pdF90ZXN0Ojpmb3JfZWFjaDo6aXNfY29uc3RfY29sbCggQ09MICkKLQotI2RlZmluZSBORE5CT09TVF9URVNUX0ZFX0JFRyggQ09MICkgICAgICAgICAgICBcCi0gICAgOjpuZG5ib29zdDo6dW5pdF90ZXN0Ojpmb3JfZWFjaDo6YmVnaW4oICAgIFwKLSAgICAgICAgQ09MLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9URVNUX0ZFX0lTX0NPTlNUKCBDT0wgKSApICAgICBcCi0vKiovCi0KLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9GRV9FTkQoIENPTCApICAgICAgICAgICAgXAotICAgIDo6bmRuYm9vc3Q6OnVuaXRfdGVzdDo6Zm9yX2VhY2g6OmVuZCggICAgICBcCi0gICAgICAgIENPTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfVEVTVF9GRV9JU19DT05TVCggQ09MICkgKSAgICAgXAotLyoqLwotCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfRkVfRE9ORSggQ09MICkgICAgICAgICAgIFwKLSAgICA6Om5kbmJvb3N0Ojp1bml0X3Rlc3Q6OmZvcl9lYWNoOjpkb25lKCAgICAgXAotICAgICAgICBORE5CT09TVF9URVNUX0ZFX0NVUl9WQVIsICAgICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX1RFU1RfRkVfRU5EX1ZBUiwgICAgICAgICAgICAgIFwKLSAgICAgICAgQ09MLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9URVNUX0ZFX0lTX0NPTlNUKCBDT0wgKSApICAgICBcCi0vKiovCi0KLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9GRV9ORVhUKCBDT0wgKSAgICAgICAgICAgXAotICAgIDo6bmRuYm9vc3Q6OnVuaXRfdGVzdDo6Zm9yX2VhY2g6Om5leHQoICAgICBcCi0gICAgICAgIE5ETkJPT1NUX1RFU1RfRkVfQ1VSX1ZBUiwgICAgICAgICAgICAgIFwKLSAgICAgICAgQ09MLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9URVNUX0ZFX0lTX0NPTlNUKCBDT0wgKSApICAgICBcCi0vKiovCi0KLSNkZWZpbmUgTkROQk9PU1RfRk9SRUFDSF9OT09QKENPTCkgICAgICAgICAgICAgXAotICAgICgodm9pZCkmKENPTCkpCi0KLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9GRV9ERVJFRiggQ09MLCBSZWZUeXBlICkgXAotICAgIDo6bmRuYm9vc3Q6OnVuaXRfdGVzdDo6Zm9yX2VhY2g6OmRlcmVmKCAgICBcCi0gICAgICAgIE5ETkJPT1NUX1RFU1RfRkVfQ1VSX1ZBUiwgICAgICAgICAgICAgIFwKLSAgICAgICAgQ09MLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlPFJlZlR5cGUgPigpLCAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX1RFU1RfRkVfSVNfQ09OU1QoIENPTCApICkgICAgIFwKLS8qKi8KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoIE5ETkJPT1NUX01TVkMsID09IDEzMTAgKQotI2RlZmluZSBORE5CT09TVF9URVNUX0xJTkVfTlVNCi0jZWxzZQotI2RlZmluZSBORE5CT09TVF9URVNUX0xJTkVfTlVNICAgICBfX0xJTkVfXwotI2VuZGlmCi0KLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9GRV9DVVJfVkFSICAgTkROQk9PU1RfSk9JTiggX2ZlX2N1cl8sIE5ETkJPT1NUX1RFU1RfTElORV9OVU0gKQotI2RlZmluZSBORE5CT09TVF9URVNUX0ZFX0VORF9WQVIgICBORE5CT09TVF9KT0lOKCBfZmVfZW5kXywgTkROQk9PU1RfVEVTVF9MSU5FX05VTSApCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfRkVfQ09OX1ZBUiAgIE5ETkJPT1NUX0pPSU4oIF9mZV9jb25fLCBORE5CT09TVF9URVNUX0xJTkVfTlVNICkKLQotI2RlZmluZSBORE5CT09TVF9URVNUX0ZPUkVBQ0goIFJlZlR5cGUsIHZhciwgQ09MICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1pZiggTkROQk9PU1RfVEVTVF9GRV9BTlkgTkROQk9PU1RfVEVTVF9GRV9DVVJfVkFSID0gTkROQk9PU1RfVEVTVF9GRV9CRUcoIENPTCApICkge30gZWxzZSAgICAgICAgICAgIFwKLWlmKCBORE5CT09TVF9URVNUX0ZFX0FOWSBORE5CT09TVF9URVNUX0ZFX0VORF9WQVIgPSBORE5CT09TVF9URVNUX0ZFX0VORCggQ09MICkgKSB7fSBlbHNlICAgICAgICAgICAgXAotZm9yKCBib29sIE5ETkJPT1NUX1RFU1RfRkVfQ09OX1ZBUiA9IHRydWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgTkROQk9PU1RfVEVTVF9GRV9DT05fVkFSICYmICFORE5CT09TVF9URVNUX0ZFX0RPTkUoIENPTCApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICBORE5CT09TVF9URVNUX0ZFX0NPTl9WQVIgPyBORE5CT09TVF9URVNUX0ZFX05FWFQoIENPTCApIDogTkROQk9PU1RfRk9SRUFDSF9OT09QKCBDT0wgKSkgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgaWYoIChORE5CT09TVF9URVNUX0ZFX0NPTl9WQVIgPSBmYWxzZSwgZmFsc2UpICkge30gZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBmb3IoIFJlZlR5cGUgdmFyID0gTkROQk9PU1RfVEVTVF9GRV9ERVJFRiggQ09MLCBSZWZUeXBlICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgIU5ETkJPT1NUX1RFU1RfRkVfQ09OX1ZBUjsgTkROQk9PU1RfVEVTVF9GRV9DT05fVkFSID0gdHJ1ZSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0vKiovCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIGZvcl9lYWNoCi0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfRk9SRUFDSF9IUFBfMDIxMDA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvaXRlcmF0b3IvaW5wdXRfaXRlcmF0b3JfZmFjYWRlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9pdGVyYXRvci9pbnB1dF9pdGVyYXRvcl9mYWNhZGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NzYzZmNlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9pdGVyYXRvci9pbnB1dF9pdGVyYXRvcl9mYWNhZGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA5ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDQtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogSW5wdXQgaXRlcmF0b3IgZmFjYWRlIAotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfSU5QVVRfSVRFUkFUT1JfRkFDQURFX0hQUF8wNzE4OTRHRVIKLSNkZWZpbmUgTkROQk9PU1RfSU5QVVRfSVRFUkFUT1JfRkFDQURFX0hQUF8wNzE4OTRHRVIKLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl9mYWNhZGUuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgIGlucHV0X2l0ZXJhdG9yX2NvcmVfYWNjZXNzICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBpbnB1dF9pdGVyYXRvcl9jb3JlX2FjY2VzcwotewotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFX0ZSSUVORFMpIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NTEpKQotcHVibGljOgotI2Vsc2UKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgSSwgY2xhc3MgViwgY2xhc3MgUiwgY2xhc3MgVEM+IGZyaWVuZCBjbGFzcyBpbnB1dF9pdGVyYXRvcl9mYWNhZGU7Ci0jZW5kaWYKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBGYWNhZGU+Ci0gICAgc3RhdGljIGJvb2wgZ2V0KCBGYWNhZGUmIGYgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGYuZ2V0KCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIC8vIG9iamVjdHMgb2YgdGhpcyBjbGFzcyBhcmUgdXNlbGVzcwotICAgIGlucHV0X2l0ZXJhdG9yX2NvcmVfYWNjZXNzKCk7IC8vdW5kZWZpbmVkCi19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICBpbnB1dF9pdGVyYXRvcl9mYWNhZGUgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIERlcml2ZWQsCi0gICAgICAgICB0eXBlbmFtZSBWYWx1ZVR5cGUsCi0gICAgICAgICB0eXBlbmFtZSBSZWZlcmVuY2UgPSBWYWx1ZVR5cGUgY29uc3QmLAotICAgICAgICAgdHlwZW5hbWUgVHJhdmVyc2FsID0gc2luZ2xlX3Bhc3NfdHJhdmVyc2FsX3RhZz4KLWNsYXNzIGlucHV0X2l0ZXJhdG9yX2ZhY2FkZSA6IHB1YmxpYyBpdGVyYXRvcl9mYWNhZGU8RGVyaXZlZCxWYWx1ZVR5cGUsVHJhdmVyc2FsLFJlZmVyZW5jZT4KLXsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIGlucHV0X2l0ZXJhdG9yX2ZhY2FkZSgpIDogbV92YWxpZCggZmFsc2UgKSwgbV92YWx1ZSgpIHt9Ci0KLXByb3RlY3RlZDogLy8gcHJvdmlkZSBhY2Nlc3MgdG8gdGhlIERlcml2ZWQKLSAgICB2b2lkICAgICAgICAgICAgICAgIGluaXQoKQotICAgIHsKLSAgICAgICAgbV92YWxpZCA9IHRydWU7Ci0gICAgICAgIGluY3JlbWVudCgpOwotICAgIH0KLQotICAgIC8vIERhdGEgbWVtYmVycwotICAgIG11dGFibGUgYm9vbCAgICAgICAgbV92YWxpZDsKLSAgICBWYWx1ZVR5cGUgICAgICAgICAgIG1fdmFsdWU7Ci0KLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIG5kbmJvb3N0OjppdGVyYXRvcl9jb3JlX2FjY2VzczsKLQotICAgIC8vIGl0ZXJhdG9yIGZhY2FkZSBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb24KLSAgICB2b2lkICAgICAgICAgICAgICAgIGluY3JlbWVudCgpCi0gICAgewotICAgICAgICAvLyB3ZSBtYWtlIHBvc3QtZW5kIGluY3JlbWVudGF0aW9uIGluZGVmaW5ldGx5IHNhZmUgCi0gICAgICAgIGlmKCBtX3ZhbGlkICkKLSAgICAgICAgICAgIG1fdmFsaWQgPSBpbnB1dF9pdGVyYXRvcl9jb3JlX2FjY2Vzczo6Z2V0KCAqc3RhdGljX2Nhc3Q8RGVyaXZlZCo+KHRoaXMpICk7Ci0gICAgfQotICAgIFJlZmVyZW5jZSAgICAgICAgICAgZGVyZWZlcmVuY2UoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdmFsdWU7Ci0gICAgfQotCi0gICAgLy8gaXRlcmF0b3IgZmFjYWRlIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbgotICAgIGJvb2wgICAgICAgICAgICAgICAgZXF1YWwoIGlucHV0X2l0ZXJhdG9yX2ZhY2FkZSBjb25zdCYgcmhzICkgY29uc3QKLSAgICB7Ci0gICAgICAgIC8vIHR3byBpbnZhbGlkIGl0ZXJhdG9yIGVxdWFscywgaW5lcXVhbCBvdGhlcndpc2UKLSAgICAgICAgcmV0dXJuICFtX3ZhbGlkICYmICFyaHMubV92YWxpZDsKLSAgICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9JTlBVVF9JVEVSQVRPUl9GQUNBREVfSFBQXzA3MTg5NEdFUgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvaXRlcmF0b3IvdG9rZW5faXRlcmF0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2l0ZXJhdG9yL3Rva2VuX2l0ZXJhdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWZjOTlmZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvaXRlcmF0b3IvdG9rZW5faXRlcmF0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDE4ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDQtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogdG9rZW4gaXRlcmF0b3IgZm9yIHN0cmluZyBhbmQgcmFuZ2UgdG9rZW5pemF0aW9uCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9UT0tFTl9JVEVSQVRPUl9IUFBfMDcxODk0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RPS0VOX0lURVJBVE9SX0hQUF8wNzE4OTRHRVIKLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2l0ZXJhdG9yX2NhdGVnb3JpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2l0ZXJhdG9yX3RyYWl0cy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2l0ZXJhdG9yL2lucHV0X2l0ZXJhdG9yX2ZhY2FkZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2Jhc2ljX2NzdHJpbmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvbmFtZWRfcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2ZvcmVhY2guaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxpb3Nmd2Q+Ci0jaW5jbHVkZSA8Y2N0eXBlPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaWZkZWYgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UKLW5hbWVzcGFjZSBzdGR7IHVzaW5nIDo6aXNwdW5jdDsgdXNpbmcgOjppc3NwYWNlOyB9Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIHRpX2RlbGltZXRlcl90eXBlICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotZW51bSB0aV9kZWxpbWV0ZXJfdHlwZSB7IAotICAgIGR0X2NoYXIsICAgICAgICAvLyBjaGFyYWN0ZXIgaXMgZGVsaW1ldGVyIGlmIGl0IGFtb25nIGV4cGxpY2l0IGxpc3Qgb2Ygc29tZSBjaGFyYWN0ZXJzCi0gICAgZHRfaXNwdW5jdCwgICAgIC8vIGNoYXJhY3RlciBpcyBkZWxpbWV0ZXIgaWYgaXQgc2F0aXNmaWVzIGlzcHVuY3QgZnVuY3RvcgotICAgIGR0X2lzc3BhY2UsICAgICAvLyBjaGFyYWN0ZXIgaXMgZGVsaW1ldGVyIGlmIGl0IHNhdGlzZmllcyBpc3NwYWNlIGZ1bmN0b3IKLSAgICBkdF9ub25lICAgICAgICAgLy8gbm8gY2hhcmFjdGVyIGlzIGRlbGltZXRlcgotfTsKLQotbmFtZXNwYWNlIHV0X2RldGFpbCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICBkZWZhdWx0X2NoYXJfY29tcGFyZSAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1jbGFzcyBkZWZhdWx0X2NoYXJfY29tcGFyZSB7Ci1wdWJsaWM6Ci0gICAgYm9vbCBvcGVyYXRvcigpKCBDaGFyVCBjMSwgQ2hhclQgYzIgKQotICAgIHsKLSNpZmRlZiBORE5CT09TVF9DTEFTU0lDX0lPU1RSRUFNUwotICAgICAgICByZXR1cm4gc3RkOjpzdHJpbmdfY2hhcl90cmFpdHM8Q2hhclQ+OjplcSggYzEsIGMyICk7Ci0jZWxzZQotICAgICAgICByZXR1cm4gc3RkOjpjaGFyX3RyYWl0czxDaGFyVD46OmVxKCBjMSwgYzIgKTsKLSNlbmRpZgotICAgIH0KLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgZGVsaW1fcG9saWN5ICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQsdHlwZW5hbWUgQ2hhckNvbXBhcmU+Ci1jbGFzcyBkZWxpbV9wb2xpY3kgewotICAgIHR5cGVkZWYgYmFzaWNfY3N0cmluZzxDaGFyVCBjb25zdD4gY3N0cmluZzsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIGV4cGxpY2l0ICAgIGRlbGltX3BvbGljeSggdGlfZGVsaW1ldGVyX3R5cGUgdCA9IGR0X2NoYXIsIGNzdHJpbmcgZCA9IGNzdHJpbmcoKSApCi0gICAgOiBtX3R5cGUoIHQgKQotICAgIHsKLSAgICAgICAgc2V0X2RlbGltZXRlcnMoIGQgKTsKLSAgICB9Ci0KLSAgICB2b2lkICAgICAgICBzZXRfZGVsaW1ldGVycyggdGlfZGVsaW1ldGVyX3R5cGUgdCApIHsgbV90eXBlID0gdDsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNyYz4KLSAgICB2b2lkICAgICAgICBzZXRfZGVsaW1ldGVycyggU3JjIGQgKQotICAgIHsKLSAgICAgICAgbmZwOjpvcHRpb25hbGx5X2Fzc2lnbiggbV9kZWxpbWV0ZXJzLCBkICk7Ci0gICAgICAgIAotICAgICAgICBpZiggIW1fZGVsaW1ldGVycy5pc19lbXB0eSgpICkKLSAgICAgICAgICAgIG1fdHlwZSA9IGR0X2NoYXI7Ci0gICAgfQotCi0gICAgYm9vbCAgICAgICAgb3BlcmF0b3IoKSggQ2hhclQgYyApCi0gICAgewotICAgICAgICBzd2l0Y2goIG1fdHlwZSApIHsKLSAgICAgICAgY2FzZSBkdF9jaGFyOiB7Ci0gICAgICAgICAgICBORE5CT09TVF9URVNUX0ZPUkVBQ0goIENoYXJULCBkZWxpbSwgbV9kZWxpbWV0ZXJzICkKLSAgICAgICAgICAgICAgICBpZiggQ2hhckNvbXBhcmUoKSggZGVsaW0sIGMgKSApCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBkdF9pc3B1bmN0OgotICAgICAgICAgICAgcmV0dXJuIChzdGQ6OmlzcHVuY3QpKCBjICkgIT0gMDsKLSAgICAgICAgY2FzZSBkdF9pc3NwYWNlOgotICAgICAgICAgICAgcmV0dXJuIChzdGQ6Omlzc3BhY2UpKCBjICkgIT0gMDsKLSAgICAgICAgY2FzZSBkdF9ub25lOgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBjc3RyaW5nICAgICAgICAgICAgIG1fZGVsaW1ldGVyczsKLSAgICB0aV9kZWxpbWV0ZXJfdHlwZSAgIG1fdHlwZTsKLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgdG9rZW5fYXNzaWduZXIgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVHJhdmVyc2FsVGFnPgotc3RydWN0IHRva2VuX2Fzc2lnbmVyIHsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKCBORE5CT09TVF9ESU5LVU1XQVJFX1NURExJQiwgPCAzMDYgKQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBUPgotICAgIHN0YXRpYyB2b2lkIGFzc2lnbiggSXRlcmF0b3IgYiwgSXRlcmF0b3IgZSwgc3RkOjpiYXNpY19zdHJpbmc8QyxUPiYgdCApCi0gICAgeyBmb3IoIDsgYiAhPSBlOyArK2IgKSB0ICs9ICpiOyB9Ci0gICAgCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIEM+Ci0gICAgc3RhdGljIHZvaWQgYXNzaWduKCBJdGVyYXRvciBiLCBJdGVyYXRvciBlLCBiYXNpY19jc3RyaW5nPEM+JiB0ICkgIHsgdC5hc3NpZ24oIGIsIGUgKTsgfQotI2Vsc2UKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYXRvciwgdHlwZW5hbWUgVG9rZW4+Ci0gICAgc3RhdGljIHZvaWQgYXNzaWduKCBJdGVyYXRvciBiLCBJdGVyYXRvciBlLCBUb2tlbiYgdCApICB7IHQuYXNzaWduKCBiLCBlICk7IH0KLSNlbmRpZgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBUb2tlbj4KLSAgICBzdGF0aWMgdm9pZCBhcHBlbmRfbW92ZSggSXRlcmF0b3ImIGIsIFRva2VuJiApICAgICAgICAgIHsgKytiOyB9Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdG9rZW5fYXNzaWduZXI8c2luZ2xlX3Bhc3NfdHJhdmVyc2FsX3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBUb2tlbj4KLSAgICBzdGF0aWMgdm9pZCBhc3NpZ24oIEl0ZXJhdG9yIGIsIEl0ZXJhdG9yIGUsIFRva2VuJiB0ICkgIHt9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYXRvciwgdHlwZW5hbWUgVG9rZW4+Ci0gICAgc3RhdGljIHZvaWQgYXBwZW5kX21vdmUoIEl0ZXJhdG9yJiBiLCBUb2tlbiYgdCApICAgICAgICB7IHQgKz0gKmI7ICsrYjsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgdXRfZGV0YWlsCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgIG1vZGlmaWVycyAgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIHsKLW5mcDo6a2V5d29yZDxzdHJ1Y3QgZHJvcHBlZF9kZWxpbWV0ZXJzX3QgPiAgICAgICAgICAgZHJvcHBlZF9kZWxpbWV0ZXJzOwotbmZwOjprZXl3b3JkPHN0cnVjdCBrZXB0X2RlbGltZXRlcnNfdCA+ICAgICAgICAgICAgICBrZXB0X2RlbGltZXRlcnM7Ci1uZnA6OnR5cGVkX2tleXdvcmQ8Ym9vbCxzdHJ1Y3Qga2VlcF9lbXB0eV90b2tlbnNfdCA+IGtlZXBfZW1wdHlfdG9rZW5zOwotbmZwOjp0eXBlZF9rZXl3b3JkPHN0ZDo6c2l6ZV90LHN0cnVjdCBtYXhfdG9rZW5zX3QgPiBtYXhfdG9rZW5zOwotfQotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgdG9rZW5faXRlcmF0b3JfYmFzZSAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIERlcml2ZWQsCi0gICAgICAgICB0eXBlbmFtZSBDaGFyVCwKLSAgICAgICAgIHR5cGVuYW1lIENoYXJDb21wYXJlICAgPSB1dF9kZXRhaWw6OmRlZmF1bHRfY2hhcl9jb21wYXJlPENoYXJUPiwKLSAgICAgICAgIHR5cGVuYW1lIFZhbHVlVHlwZSAgICAgPSBiYXNpY19jc3RyaW5nPENoYXJUIGNvbnN0PiwKLSAgICAgICAgIHR5cGVuYW1lIFJlZmVyZW5jZSAgICAgPSBiYXNpY19jc3RyaW5nPENoYXJUIGNvbnN0PiwKLSAgICAgICAgIHR5cGVuYW1lIFRyYXZlcnNhbCAgICAgPSBmb3J3YXJkX3RyYXZlcnNhbF90YWc+Ci1jbGFzcyB0b2tlbl9pdGVyYXRvcl9iYXNlCi06IHB1YmxpYyBpbnB1dF9pdGVyYXRvcl9mYWNhZGU8RGVyaXZlZCxWYWx1ZVR5cGUsUmVmZXJlbmNlLFRyYXZlcnNhbD4gewotICAgIHR5cGVkZWYgYmFzaWNfY3N0cmluZzxDaGFyVCBjb25zdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzdHJpbmc7Ci0gICAgdHlwZWRlZiB1dF9kZXRhaWw6OmRlbGltX3BvbGljeTxDaGFyVCxDaGFyQ29tcGFyZT4gICAgICAgICAgICAgICAgICAgICAgZGVsaW1fcG9saWN5OwotICAgIHR5cGVkZWYgaW5wdXRfaXRlcmF0b3JfZmFjYWRlPERlcml2ZWQsVmFsdWVUeXBlLFJlZmVyZW5jZSxUcmF2ZXJzYWw+ICAgIGJhc2U7Ci0KLXByb3RlY3RlZDoKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIGV4cGxpY2l0ICAgIHRva2VuX2l0ZXJhdG9yX2Jhc2UoKQotICAgIDogbV9pc19kcm9wcGVkKCBkdF9pc3NwYWNlICkKLSAgICAsIG1faXNfa2VwdCggZHRfaXNwdW5jdCApCi0gICAgLCBtX2tlZXBfZW1wdHlfdG9rZW5zKCBmYWxzZSApCi0gICAgLCBtX3Rva2Vuc19sZWZ0KCBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oLTEpICkKLSAgICAsIG1fdG9rZW5fcHJvZHVjZWQoIGZhbHNlICkKLSAgICB7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTW9kaWZpZXI+Ci0gICAgdm9pZAotICAgIGFwcGx5X21vZGlmaWVyKCBNb2RpZmllciBjb25zdCYgbSApCi0gICAgewotICAgICAgICBpZiggbS5oYXMoIGRyb3BwZWRfZGVsaW1ldGVycyApICkKLSAgICAgICAgICAgIG1faXNfZHJvcHBlZC5zZXRfZGVsaW1ldGVycyggbVtkcm9wcGVkX2RlbGltZXRlcnNdICk7Ci0KLSAgICAgICAgaWYoIG0uaGFzKCBrZXB0X2RlbGltZXRlcnMgKSApCi0gICAgICAgICAgICBtX2lzX2tlcHQuc2V0X2RlbGltZXRlcnMoIG1ba2VwdF9kZWxpbWV0ZXJzXSApOwotCi0gICAgICAgIGlmKCBtLmhhcygga2VlcF9lbXB0eV90b2tlbnMgKSApCi0gICAgICAgICAgICBtX2tlZXBfZW1wdHlfdG9rZW5zID0gdHJ1ZTsKLQotICAgICAgICBuZnA6Om9wdGlvbmFsbHlfYXNzaWduKCBtX3Rva2Vuc19sZWZ0LCBtLCBtYXhfdG9rZW5zICk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgSXRlcj4gCi0gICAgYm9vbCAgICAgICAgICAgICAgICAgICAgZ2V0KCBJdGVyJiBiZWdpbiwgSXRlciBlbmQgKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB1dF9kZXRhaWw6OnRva2VuX2Fzc2lnbmVyPE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgaXRlcmF0b3JfdHJhdmVyc2FsPEl0ZXI+Ojp0eXBlPiBBc3NpZ25lcjsKLSAgICAgICAgSXRlciBjaGVja19wb2ludDsKLQotICAgICAgICB0aGlzLT5tX3ZhbHVlLmNsZWFyKCk7Ci0KLSAgICAgICAgaWYoICFtX2tlZXBfZW1wdHlfdG9rZW5zICkgewotICAgICAgICAgICAgd2hpbGUoIGJlZ2luICE9IGVuZCAmJiBtX2lzX2Ryb3BwZWQoICpiZWdpbiApICkKLSAgICAgICAgICAgICAgICArK2JlZ2luOwotCi0gICAgICAgICAgICBpZiggYmVnaW4gPT0gZW5kICkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgIGNoZWNrX3BvaW50ID0gYmVnaW47Ci0KLSAgICAgICAgICAgIGlmKCBtX3Rva2Vuc19sZWZ0ID09IDEgKQotICAgICAgICAgICAgICAgIHdoaWxlKCBiZWdpbiAhPSBlbmQgKQotICAgICAgICAgICAgICAgICAgICBBc3NpZ25lcjo6YXBwZW5kX21vdmUoIGJlZ2luLCB0aGlzLT5tX3ZhbHVlICk7Ci0gICAgICAgICAgICBlbHNlIGlmKCBtX2lzX2tlcHQoICpiZWdpbiApICkKLSAgICAgICAgICAgICAgICBBc3NpZ25lcjo6YXBwZW5kX21vdmUoIGJlZ2luLCB0aGlzLT5tX3ZhbHVlICk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgd2hpbGUoIGJlZ2luICE9IGVuZCAmJiAhbV9pc19kcm9wcGVkKCAqYmVnaW4gKSAmJiAhbV9pc19rZXB0KCAqYmVnaW4gKSApCi0gICAgICAgICAgICAgICAgICAgIEFzc2lnbmVyOjphcHBlbmRfbW92ZSggYmVnaW4sIHRoaXMtPm1fdmFsdWUgKTsKLQotICAgICAgICAgICAgLS1tX3Rva2Vuc19sZWZ0OwotICAgICAgICB9IAotICAgICAgICBlbHNlIHsgLy8gbV9rZWVwX2VtcHR5X3Rva2VucyBpcyB0cnVlCi0gICAgICAgICAgICBjaGVja19wb2ludCA9IGJlZ2luOwotCi0gICAgICAgICAgICBpZiggYmVnaW4gPT0gZW5kICkgewotICAgICAgICAgICAgICAgIGlmKCBtX3Rva2VuX3Byb2R1Y2VkICkgCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgICAgIG1fdG9rZW5fcHJvZHVjZWQgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYoIG1faXNfa2VwdCggKmJlZ2luICkgKSB7Ci0gICAgICAgICAgICAgICAgaWYoIG1fdG9rZW5fcHJvZHVjZWQgKSAKLSAgICAgICAgICAgICAgICAgICAgQXNzaWduZXI6OmFwcGVuZF9tb3ZlKCBiZWdpbiwgdGhpcy0+bV92YWx1ZSApOwotCi0gICAgICAgICAgICAgICAgbV90b2tlbl9wcm9kdWNlZCA9ICFtX3Rva2VuX3Byb2R1Y2VkOwotICAgICAgICAgICAgfSAKLSAgICAgICAgICAgIGVsc2UgaWYoICFtX3Rva2VuX3Byb2R1Y2VkICYmIG1faXNfZHJvcHBlZCggKmJlZ2luICkgKQotICAgICAgICAgICAgICAgIG1fdG9rZW5fcHJvZHVjZWQgPSB0cnVlOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYoIG1faXNfZHJvcHBlZCggKmJlZ2luICkgKQotICAgICAgICAgICAgICAgICAgICBjaGVja19wb2ludCA9ICsrYmVnaW47Ci0KLSAgICAgICAgICAgICAgICB3aGlsZSggYmVnaW4gIT0gZW5kICYmICFtX2lzX2Ryb3BwZWQoICpiZWdpbiApICYmICFtX2lzX2tlcHQoICpiZWdpbiApICkKLSAgICAgICAgICAgICAgICAgICAgQXNzaWduZXI6OmFwcGVuZF9tb3ZlKCBiZWdpbiwgdGhpcy0+bV92YWx1ZSApOwotCi0gICAgICAgICAgICAgICAgbV90b2tlbl9wcm9kdWNlZCA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBBc3NpZ25lcjo6YXNzaWduKCBjaGVja19wb2ludCwgYmVnaW4sIHRoaXMtPm1fdmFsdWUgKTsKLQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgZGVsaW1fcG9saWN5ICAgICAgICAgICAgbV9pc19kcm9wcGVkOwotICAgIGRlbGltX3BvbGljeSAgICAgICAgICAgIG1faXNfa2VwdDsKLSAgICBib29sICAgICAgICAgICAgICAgICAgICBtX2tlZXBfZW1wdHlfdG9rZW5zOwotICAgIHN0ZDo6c2l6ZV90ICAgICAgICAgICAgIG1fdG9rZW5zX2xlZnQ7Ci0gICAgYm9vbCAgICAgICAgICAgICAgICAgICAgbV90b2tlbl9wcm9kdWNlZDsKLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICBiYXNpY19zdHJpbmdfdG9rZW5faXRlcmF0b3IgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQsCi0gICAgICAgICB0eXBlbmFtZSBDaGFyQ29tcGFyZSA9IHV0X2RldGFpbDo6ZGVmYXVsdF9jaGFyX2NvbXBhcmU8Q2hhclQ+ID4KLWNsYXNzIGJhc2ljX3N0cmluZ190b2tlbl9pdGVyYXRvcgotOiBwdWJsaWMgdG9rZW5faXRlcmF0b3JfYmFzZTxiYXNpY19zdHJpbmdfdG9rZW5faXRlcmF0b3I8Q2hhclQsQ2hhckNvbXBhcmU+LENoYXJULENoYXJDb21wYXJlPiB7Ci0gICAgdHlwZWRlZiBiYXNpY19jc3RyaW5nPENoYXJUIGNvbnN0PiBjc3RyaW5nOwotICAgIHR5cGVkZWYgdG9rZW5faXRlcmF0b3JfYmFzZTxiYXNpY19zdHJpbmdfdG9rZW5faXRlcmF0b3I8Q2hhclQsQ2hhckNvbXBhcmU+LENoYXJULENoYXJDb21wYXJlPiBiYXNlOwotcHVibGljOgotICAgIGV4cGxpY2l0ICAgIGJhc2ljX3N0cmluZ190b2tlbl9pdGVyYXRvcigpIHt9Ci0gICAgZXhwbGljaXQgICAgYmFzaWNfc3RyaW5nX3Rva2VuX2l0ZXJhdG9yKCBjc3RyaW5nIHNyYyApCi0gICAgOiBtX3NyYyggc3JjICkKLSAgICB7Ci0gICAgICAgIHRoaXMtPmluaXQoKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTcmMsIHR5cGVuYW1lIE1vZGlmaWVyPgotICAgIGJhc2ljX3N0cmluZ190b2tlbl9pdGVyYXRvciggU3JjIHNyYywgTW9kaWZpZXIgY29uc3QmIG0gKQotICAgIDogbV9zcmMoIHNyYyApCi0gICAgewotICAgICAgICB0aGlzLT5hcHBseV9tb2RpZmllciggbSApOwotCi0gICAgICAgIHRoaXMtPmluaXQoKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIGlucHV0X2l0ZXJhdG9yX2NvcmVfYWNjZXNzOwotCi0gICAgLy8gaW5wdXQgaXRlcmF0b3IgaW1wbGVtZW50YXRpb24KLSAgICBib29sICAgICAgICBnZXQoKQotICAgIHsKLSAgICAgICAgdHlwZW5hbWUgY3N0cmluZzo6aXRlcmF0b3IgYmVnaW4gPSBtX3NyYy5iZWdpbigpOwotICAgICAgICBib29sIHJlcyA9IGJhc2U6OmdldCggYmVnaW4sIG1fc3JjLmVuZCgpICk7Ci0KLSAgICAgICAgbV9zcmMuYXNzaWduKCBiZWdpbiwgbV9zcmMuZW5kKCkgKTsKLQotICAgICAgICByZXR1cm4gcmVzOwotICAgIH0KLQotICAgIC8vIERhdGEgbWVtYmVycwotICAgIGNzdHJpbmcgICAgIG1fc3JjOwotfTsKLQotdHlwZWRlZiBiYXNpY19zdHJpbmdfdG9rZW5faXRlcmF0b3I8Y2hhcj4gICAgICAgc3RyaW5nX3Rva2VuX2l0ZXJhdG9yOwotdHlwZWRlZiBiYXNpY19zdHJpbmdfdG9rZW5faXRlcmF0b3I8d2NoYXJfdD4gICAgd3N0cmluZ190b2tlbl9pdGVyYXRvcjsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICByYW5nZV90b2tlbl9pdGVyYXRvciAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyLAotICAgICAgICAgdHlwZW5hbWUgQ2hhckNvbXBhcmUgPSB1dF9kZXRhaWw6OmRlZmF1bHRfY2hhcl9jb21wYXJlPE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgaXRlcmF0b3JfdmFsdWU8SXRlcj46OnR5cGU+LAotICAgICAgICAgdHlwZW5hbWUgVmFsdWVUeXBlICAgPSBzdGQ6OmJhc2ljX3N0cmluZzxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGl0ZXJhdG9yX3ZhbHVlPEl0ZXI+Ojp0eXBlPiwKLSAgICAgICAgIHR5cGVuYW1lIFJlZmVyZW5jZSAgID0gVmFsdWVUeXBlIGNvbnN0Jj4KLWNsYXNzIHJhbmdlX3Rva2VuX2l0ZXJhdG9yCi06IHB1YmxpYyB0b2tlbl9pdGVyYXRvcl9iYXNlPHJhbmdlX3Rva2VuX2l0ZXJhdG9yPEl0ZXIsQ2hhckNvbXBhcmUsVmFsdWVUeXBlLFJlZmVyZW5jZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIGl0ZXJhdG9yX3ZhbHVlPEl0ZXI+Ojp0eXBlLENoYXJDb21wYXJlLFZhbHVlVHlwZSxSZWZlcmVuY2U+IHsKLSAgICB0eXBlZGVmIGJhc2ljX2NzdHJpbmc8dHlwZW5hbWUgVmFsdWVUeXBlOjp2YWx1ZV90eXBlPiBjc3RyaW5nOwotICAgIHR5cGVkZWYgdG9rZW5faXRlcmF0b3JfYmFzZTxyYW5nZV90b2tlbl9pdGVyYXRvcjxJdGVyLENoYXJDb21wYXJlLFZhbHVlVHlwZSxSZWZlcmVuY2U+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBpdGVyYXRvcl92YWx1ZTxJdGVyPjo6dHlwZSxDaGFyQ29tcGFyZSxWYWx1ZVR5cGUsUmVmZXJlbmNlPiBiYXNlOwotcHVibGljOgotICAgIGV4cGxpY2l0ICAgIHJhbmdlX3Rva2VuX2l0ZXJhdG9yKCkge30KLSAgICBleHBsaWNpdCAgICByYW5nZV90b2tlbl9pdGVyYXRvciggSXRlciBiZWdpbiwgSXRlciBlbmQgPSBJdGVyKCkgKQotICAgIDogbV9iZWdpbiggYmVnaW4gKSwgbV9lbmQoIGVuZCApCi0gICAgewotICAgICAgICB0aGlzLT5pbml0KCk7Ci0gICAgfQotICAgIHJhbmdlX3Rva2VuX2l0ZXJhdG9yKCByYW5nZV90b2tlbl9pdGVyYXRvciBjb25zdCYgcmhzICkKLSAgICA6IGJhc2UoIHJocyApCi0gICAgewotICAgICAgICBpZiggdGhpcy0+bV92YWxpZCApIHsKLSAgICAgICAgICAgIG1fYmVnaW4gPSByaHMubV9iZWdpbjsKLSAgICAgICAgICAgIG1fZW5kICAgPSByaHMubV9lbmQ7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNb2RpZmllcj4KLSAgICByYW5nZV90b2tlbl9pdGVyYXRvciggSXRlciBiZWdpbiwgSXRlciBlbmQsIE1vZGlmaWVyIGNvbnN0JiBtICkKLSAgICA6IG1fYmVnaW4oIGJlZ2luICksIG1fZW5kKCBlbmQgKQotICAgIHsKLSAgICAgICAgdGhpcy0+YXBwbHlfbW9kaWZpZXIoIG0gKTsKLQotICAgICAgICB0aGlzLT5pbml0KCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBpbnB1dF9pdGVyYXRvcl9jb3JlX2FjY2VzczsKLQotICAgIC8vIGlucHV0IGl0ZXJhdG9yIGltcGxlbWVudGF0aW9uCi0gICAgYm9vbCAgICAgICAgZ2V0KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBiYXNlOjpnZXQoIG1fYmVnaW4sIG1fZW5kICk7Ci0gICAgfQotCi0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgSXRlciBtX2JlZ2luOwotICAgIEl0ZXIgbV9lbmQ7Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICBtYWtlX3JhbmdlX3Rva2VuX2l0ZXJhdG9yICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEl0ZXI+Ci1pbmxpbmUgcmFuZ2VfdG9rZW5faXRlcmF0b3I8SXRlcj4KLW1ha2VfcmFuZ2VfdG9rZW5faXRlcmF0b3IoIEl0ZXIgYmVnaW4sIEl0ZXIgZW5kID0gSXRlcigpICkKLXsKLSAgICByZXR1cm4gcmFuZ2VfdG9rZW5faXRlcmF0b3I8SXRlcj4oIGJlZ2luLCBlbmQgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgSXRlcix0eXBlbmFtZSBNb2RpZmllcj4KLWlubGluZSByYW5nZV90b2tlbl9pdGVyYXRvcjxJdGVyPgotbWFrZV9yYW5nZV90b2tlbl9pdGVyYXRvciggSXRlciBiZWdpbiwgSXRlciBlbmQsIE1vZGlmaWVyIGNvbnN0JiBtICkKLXsKLSAgICByZXR1cm4gcmFuZ2VfdG9rZW5faXRlcmF0b3I8SXRlcj4oIGJlZ2luLCBlbmQsIG0gKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVE9LRU5fSVRFUkFUT1JfSFBQXzA3MTg5NEdFUgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvbGF6eV9vc3RyZWFtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9sYXp5X29zdHJlYW0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTNmYTIyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9sYXp5X29zdHJlYW0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGNvbnRhaW5zIGRlZmluaXRpb24gZm9yIGFsbCB0ZXN0IHRvb2xzIGluIHRlc3QgdG9vbGJveAotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9MQVpZX09TVFJFQU1fSFBQXzA3MDcwOEdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX0xBWllfT1NUUkVBTV9IUFBfMDcwNzA4R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9jb25maWcuaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxpb3Nmd2Q+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgIGxhenlfb3N0cmVhbSAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLWNsYXNzIGxhenlfb3N0cmVhbSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGxhenlfb3N0cmVhbSYgICAgaW5zdGFuY2UoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHN0YXRpYyBsYXp5X29zdHJlYW0gaW5zdDsgcmV0dXJuIGluc3Q7IH0KLQotICAgIGZyaWVuZCBzdGQ6Om9zdHJlYW0mICAgIG9wZXJhdG9yPDwoIHN0ZDo6b3N0cmVhbSYgb3N0ciwgbGF6eV9vc3RyZWFtIGNvbnN0JiBvICkgeyByZXR1cm4gbyggb3N0ciApOyB9Ci0KLSAgICAvLyBhY2Nlc3MgbWV0aG9kCi0gICAgYm9vbCAgICAgICAgICAgICAgICAgICAgZW1wdHkoKSBjb25zdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHJldHVybiBtX2VtcHR5OyB9Ci0KLSAgICAvLyBhY3R1YWwgcHJpbnRpbmcgaW50ZXJmYWNlOyB0byBiZSBhY2Nlc3NlZCBvbmx5IGJ5IHRoaXMgY2xhc3MgYW5kIGNoaWxkcmVuCi0gICAgdmlydHVhbCBzdGQ6Om9zdHJlYW0mICAgb3BlcmF0b3IoKSggc3RkOjpvc3RyZWFtJiBvc3RyICkgY29uc3QgICAgICAgICAgICAgICAgICB7IHJldHVybiBvc3RyOyB9Ci1wcm90ZWN0ZWQ6Ci0gICAgZXhwbGljaXQgICAgICAgICAgICAgICAgbGF6eV9vc3RyZWFtKCBib29sIGVtcHR5ID0gdHJ1ZSApIDogbV9lbXB0eSggZW1wdHkgKSAgICB7fQotCi0gICAgLy8gcHJvdGVjdGVkIGRlc3RydWN0b3IgdG8gbWFrZSBzdXJlIHJpZ2h0IG9uZSBpcyBjYWxsZWQKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTgyKSkKLXB1YmxpYzoKLSNlbmRpZgotICAgIE5ETkJPT1NUX1RFU1RfUFJPVEVDVEVEX1ZJUlRVQUwgfmxhenlfb3N0cmVhbSgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge30KLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBib29sICAgICAgICAgICAgICAgICAgICBtX2VtcHR5OwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIGxhenlfb3N0cmVhbV9pbXBsIDogcHVibGljIGxhenlfb3N0cmVhbSB7Ci1wdWJsaWM6Ci0gICAgbGF6eV9vc3RyZWFtX2ltcGwoIGxhenlfb3N0cmVhbSBjb25zdCYgcHJldiwgVCB2YWx1ZSApCi0gICAgOiBsYXp5X29zdHJlYW0oIGZhbHNlICkKLSAgICAsIG1fcHJldiggcHJldiApCi0gICAgLCBtX3ZhbHVlKCB2YWx1ZSApCi0gICAge30KLXByaXZhdGU6Ci0gICAgdmlydHVhbCBzdGQ6Om9zdHJlYW0mICAgb3BlcmF0b3IoKSggc3RkOjpvc3RyZWFtJiBvc3RyICkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3ByZXYob3N0cikgPDwgbV92YWx1ZTsKLSAgICB9Ci0KLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBsYXp5X29zdHJlYW0gY29uc3QmICAgICBtX3ByZXY7Ci0gICAgVCAgICAgICAgICAgICAgICAgICAgICAgbV92YWx1ZTsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgbGF6eV9vc3RyZWFtX2ltcGw8VCBjb25zdCY+Ci1vcGVyYXRvcjw8KCBsYXp5X29zdHJlYW0gY29uc3QmIHByZXYsIFQgY29uc3QmIHYgKQotewotICAgIHJldHVybiBsYXp5X29zdHJlYW1faW1wbDxUIGNvbnN0Jj4oIHByZXYsIHYgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2lmIE5ETkJPT1NUX1RFU1RfVVNFX1NURF9MT0NBTEUKLQotdGVtcGxhdGU8dHlwZW5hbWUgUix0eXBlbmFtZSBTPgotaW5saW5lIGxhenlfb3N0cmVhbV9pbXBsPFImIChORE5CT09TVF9URVNUX0NBTExfREVDTCAqKShTJik+Ci1vcGVyYXRvcjw8KCBsYXp5X29zdHJlYW0gY29uc3QmIHByZXYsIFImIChORE5CT09TVF9URVNUX0NBTExfREVDTCAqbWFuKShTJikgKQotewotICAgIHJldHVybiBsYXp5X29zdHJlYW1faW1wbDxSJiAoTkROQk9PU1RfVEVTVF9DQUxMX0RFQ0wgKikoUyYpPiggcHJldiwgbWFuICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX0xBWllfT1NUUkVBTV9IUFBfMDcwNzA4R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvbmFtZWRfcGFyYW1zLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9uYW1lZF9wYXJhbXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTIwZTU2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9uYW1lZF9wYXJhbXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzI5ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZmFjaWxpdGllcyBmb3IgbmFtZWQgZnVuY3Rpb24gcGFyYW1ldGVycyBzdXBwb3J0Ci0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX05BTUVEX1BBUkFNXzAyMjUwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX05BTUVEX1BBUkFNXzAyMjUwNUdFUgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydHRpLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2Fzc2lnbl9vcC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfcmVmZXJlbmNlLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIG5mcCB7IC8vIG5hbWVkIGZ1bmN0aW9uIHBhcmFtZXRlcnMKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICBmb3J3YXJkIGRlY2xhcmF0aW9ucyAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSB1bmlxdWVfaWQsdHlwZW5hbWUgUmVmVHlwZT4gICBzdHJ1Y3QgbmFtZWRfcGFyYW1ldGVyOwotdGVtcGxhdGU8dHlwZW5hbWUgdW5pcXVlX2lkLGJvb2wgcmVxdWlyZWQ+ICAgICAgICAgICAgICAgICAgc3RydWN0IGtleXdvcmQ7Ci0KLW5hbWVzcGFjZSBuZnBfZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgTlAxLHR5cGVuYW1lIE5QMj4gICAgICAgIHN0cnVjdCBuYW1lZF9wYXJhbWV0ZXJfY29tYmluZTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgIGFjY2Vzc190b19pbnZhbGlkX3BhcmFtZXRlciAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1zdHJ1Y3QgYWNjZXNzX3RvX2ludmFsaWRfcGFyYW1ldGVyIHt9OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1pbmxpbmUgdm9pZCAKLXJlcG9ydF9hY2Nlc3NfdG9faW52YWxpZF9wYXJhbWV0ZXIoKQotewotICAgIHRocm93IGFjY2Vzc190b19pbnZhbGlkX3BhcmFtZXRlcigpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICAgICAgIG5pbCAgICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXN0cnVjdCBuaWwgewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0jaWYgZGVmaW5lZChfX0dOVUNfXykgfHwgZGVmaW5lZChfX0hQX2FDQykgfHwgZGVmaW5lZChfX0VER19fKSB8fCBkZWZpbmVkKF9fU1VOUFJPX0NDKQotICAgIG9wZXJhdG9yIFQoKSBjb25zdAotI2Vsc2UKLSAgICBvcGVyYXRvciBUIGNvbnN0JigpIGNvbnN0Ci0jZW5kaWYKLSAgICB7IHJlcG9ydF9hY2Nlc3NfdG9faW52YWxpZF9wYXJhbWV0ZXIoKTsgc3RhdGljIFQqIHYgPSAwOyByZXR1cm4gKnY7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgVCBhbnlfY2FzdCgpIGNvbnN0Ci0gICAgeyByZXBvcnRfYWNjZXNzX3RvX2ludmFsaWRfcGFyYW1ldGVyKCk7IHN0YXRpYyB0eXBlbmFtZSByZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0eXBlKiB2ID0gMDsgcmV0dXJuICp2OyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBcmcxPgotICAgIG5pbCBvcGVyYXRvcigpKCBBcmcxIGNvbnN0JiApCi0gICAgeyByZXBvcnRfYWNjZXNzX3RvX2ludmFsaWRfcGFyYW1ldGVyKCk7IHJldHVybiBuaWwoKTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQXJnMSx0eXBlbmFtZSBBcmcyPgotICAgIG5pbCBvcGVyYXRvcigpKCBBcmcxIGNvbnN0JiwgQXJnMiBjb25zdCYgKQotICAgIHsgcmVwb3J0X2FjY2Vzc190b19pbnZhbGlkX3BhcmFtZXRlcigpOyByZXR1cm4gbmlsKCk7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEFyZzEsdHlwZW5hbWUgQXJnMix0eXBlbmFtZSBBcmczPgotICAgIG5pbCBvcGVyYXRvcigpKCBBcmcxIGNvbnN0JiwgQXJnMiBjb25zdCYsIEFyZzMgY29uc3QmICkKLSAgICB7IHJlcG9ydF9hY2Nlc3NfdG9faW52YWxpZF9wYXJhbWV0ZXIoKTsgcmV0dXJuIG5pbCgpOyB9Ci0KLSAgICAvLyBWaXNpdGF0aW9uIHN1cHBvcnQKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgotICAgIHZvaWQgICAgICAgICAgICBhcHBseV90byggVmlzaXRvciYgViApIGNvbnN0IHt9Ci0KLSAgICBzdGF0aWMgbmlsJiAgICAgaW5zdCgpIHsgc3RhdGljIG5pbCBzX2luc3Q7IHJldHVybiBzX2luc3Q7IH0KLXByaXZhdGU6Ci0gICAgbmlsKCkge30KLX07Ci0gICAgCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgIG5hbWVkX3BhcmFtZXRlcl9iYXNlICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIERlcml2ZWQ+Ci1zdHJ1Y3QgbmFtZWRfcGFyYW1ldGVyX2Jhc2UgewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE5QPgotICAgIG5hbWVkX3BhcmFtZXRlcl9jb21iaW5lPE5QLERlcml2ZWQ+Ci0gICAgb3BlcmF0b3IsKCBOUCBjb25zdCYgbnAgKSBjb25zdCB7IHJldHVybiBuYW1lZF9wYXJhbWV0ZXJfY29tYmluZTxOUCxEZXJpdmVkPiggbnAsICpzdGF0aWNfY2FzdDxEZXJpdmVkIGNvbnN0Kj4odGhpcykgKTsgfQotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgIG5hbWVkX3BhcmFtZXRlcl9jb21iaW5lICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBOUCwgdHlwZW5hbWUgUmVzdCA9IG5pbD4KLXN0cnVjdCBuYW1lZF9wYXJhbWV0ZXJfY29tYmluZSAKLTogUmVzdAotLCBuYW1lZF9wYXJhbWV0ZXJfYmFzZTxuYW1lZF9wYXJhbWV0ZXJfY29tYmluZTxOUCxSZXN0PiA+IHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIE5QOjpyZWZfdHlwZSAgcmVzX3R5cGU7Ci0gICAgdHlwZWRlZiBuYW1lZF9wYXJhbWV0ZXJfY29tYmluZTxOUCxSZXN0PiBzZWxmX3R5cGU7Ci0KLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIG5hbWVkX3BhcmFtZXRlcl9jb21iaW5lKCBOUCBjb25zdCYgbnAsIFJlc3QgY29uc3QmIHIgKQotICAgIDogUmVzdCggciApCi0gICAgLCBtX3BhcmFtKCBucCApCi0gICAge30KLQotICAgIC8vIEFjY2VzcyBtZXRob2RzCi0gICAgcmVzX3R5cGUgICAgb3BlcmF0b3JbXSgga2V5d29yZDx0eXBlbmFtZSBOUDo6aWQsdHJ1ZT4ga3cgKSBjb25zdCAgICB7IHJldHVybiBtX3BhcmFtW2t3XTsgfQotICAgIHJlc190eXBlICAgIG9wZXJhdG9yW10oIGtleXdvcmQ8dHlwZW5hbWUgTlA6OmlkLGZhbHNlPiBrdyApIGNvbnN0ICAgeyByZXR1cm4gbV9wYXJhbVtrd107IH0KLSAgICB1c2luZyAgICAgICBSZXN0OjpvcGVyYXRvcltdOwotCi0gICAgYm9vbCAgICAgICAgaGFzKCBrZXl3b3JkPHR5cGVuYW1lIE5QOjppZCxmYWxzZT4ga3cgKSBjb25zdCAgICAgICAgICB7IHJldHVybiBtX3BhcmFtLmhhcygga3cgKTsgfQotICAgIHVzaW5nICAgICAgIFJlc3Q6OmhhczsKLQotICAgIHZvaWQgICAgICAgIGVyYXNlKCBrZXl3b3JkPHR5cGVuYW1lIE5QOjppZCxmYWxzZT4ga3cgKSBjb25zdCAgICAgICAgeyBtX3BhcmFtLmVyYXNlKCBrdyApOyB9Ci0gICAgdXNpbmcgICAgICAgUmVzdDo6ZXJhc2U7Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDMyMDYpKSB8fCBcCi0gICAgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDA2MTApKQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE5QPgotICAgIG5hbWVkX3BhcmFtZXRlcl9jb21iaW5lPE5QLHNlbGZfdHlwZT4gb3BlcmF0b3IsKCBOUCBjb25zdCYgbnAgKSBjb25zdAotICAgIHsgcmV0dXJuIG5hbWVkX3BhcmFtZXRlcl9jb21iaW5lPE5QLHNlbGZfdHlwZT4oIG5wLCAqdGhpcyApOyB9Ci0jZWxzZQotICAgIHVzaW5nICAgICAgIG5hbWVkX3BhcmFtZXRlcl9iYXNlPG5hbWVkX3BhcmFtZXRlcl9jb21iaW5lPE5QLFJlc3Q+ID46Om9wZXJhdG9yLDsKLSNlbmRpZgotCi0gICAgLy8gVmlzaXRhdGlvbiBzdXBwb3J0Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KLSAgICB2b2lkICAgICAgICAgICAgYXBwbHlfdG8oIFZpc2l0b3ImIFYgKSBjb25zdAotICAgIHsKLSAgICAgICAgbV9wYXJhbS5hcHBseV90byggViApOwotCi0gICAgICAgIFJlc3Q6OmFwcGx5X3RvKCBWICk7Ci0gICAgfQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBOUCAgICAgICAgICBtX3BhcmFtOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgbmZwX2RldGFpbAotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgIG5hbWVkX3BhcmFtZXRlciAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHVuaXF1ZV9pZCx0eXBlbmFtZSBSZWZlcmVuY2VUeXBlPVQmPgotc3RydWN0IG5hbWVkX3BhcmFtZXRlcgotOiBuZnBfZGV0YWlsOjpuYW1lZF9wYXJhbWV0ZXJfYmFzZTxuYW1lZF9wYXJhbWV0ZXI8VCwgdW5pcXVlX2lkLFJlZmVyZW5jZVR5cGU+ID4KLXsKLSAgICB0eXBlZGVmIG5mcF9kZXRhaWw6Om5pbCBuaWxfdDsKLSAgICB0eXBlZGVmIFQgICAgICAgICAgICAgICBkYXRhX3R5cGU7Ci0gICAgdHlwZWRlZiBSZWZlcmVuY2VUeXBlICAgcmVmX3R5cGU7Ci0gICAgdHlwZWRlZiB1bmlxdWVfaWQgICAgICAgaWQ7Ci0KLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIGV4cGxpY2l0ICAgICAgICBuYW1lZF9wYXJhbWV0ZXIoIHJlZl90eXBlIHYgKSAKLSAgICA6IG1fdmFsdWUoIHYgKQotICAgICwgbV9lcmFzZWQoIGZhbHNlICkKLSAgICB7fQotICAgIG5hbWVkX3BhcmFtZXRlciggbmFtZWRfcGFyYW1ldGVyIGNvbnN0JiBucCApCi0gICAgOiBtX3ZhbHVlKCBucC5tX3ZhbHVlICkKLSAgICAsIG1fZXJhc2VkKCBucC5tX2VyYXNlZCApCi0gICAge30KLQotICAgIC8vIEFjY2VzcyBtZXRob2RzCi0gICAgcmVmX3R5cGUgICAgICAgIG9wZXJhdG9yW10oIGtleXdvcmQ8dW5pcXVlX2lkLHRydWU+ICkgY29uc3QgICAgIHsgcmV0dXJuIG1fZXJhc2VkID8gbmlsX3Q6Omluc3QoKS50ZW1wbGF0ZSBhbnlfY2FzdDxyZWZfdHlwZT4oKSA6ICBtX3ZhbHVlOyB9Ci0gICAgcmVmX3R5cGUgICAgICAgIG9wZXJhdG9yW10oIGtleXdvcmQ8dW5pcXVlX2lkLGZhbHNlPiApIGNvbnN0ICAgIHsgcmV0dXJuIG1fZXJhc2VkID8gbmlsX3Q6Omluc3QoKS50ZW1wbGF0ZSBhbnlfY2FzdDxyZWZfdHlwZT4oKSA6ICBtX3ZhbHVlOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVW5rbm93bklkPgotICAgIG5pbF90ICAgICAgICAgICBvcGVyYXRvcltdKCBrZXl3b3JkPFVua25vd25JZCxmYWxzZT4gKSBjb25zdCAgICB7IHJldHVybiBuaWxfdDo6aW5zdCgpOyB9Ci0KLSAgICBib29sICAgICAgICAgICAgaGFzKCBrZXl3b3JkPHVuaXF1ZV9pZCxmYWxzZT4gKSBjb25zdCAgICAgICAgICAgeyByZXR1cm4gIW1fZXJhc2VkOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVW5rbm93bklkPgotICAgIGJvb2wgICAgICAgICAgICBoYXMoIGtleXdvcmQ8VW5rbm93bklkLGZhbHNlPiApIGNvbnN0ICAgICAgICAgICB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgdm9pZCAgICAgICAgICAgIGVyYXNlKCBrZXl3b3JkPHVuaXF1ZV9pZCxmYWxzZT4gKSBjb25zdCAgICAgICAgIHsgbV9lcmFzZWQgPSB0cnVlOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVW5rbm93bklkPgotICAgIHZvaWQgICAgICAgICAgICBlcmFzZSgga2V5d29yZDxVbmtub3duSWQsZmFsc2U+ICkgY29uc3QgICAgICAgICB7fQotCi0gICAgLy8gVmlzaXRhdGlvbiBzdXBwb3J0Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KLSAgICB2b2lkICAgICAgICAgICAgYXBwbHlfdG8oIFZpc2l0b3ImIFYgKSBjb25zdAotICAgIHsKLSAgICAgICAgVi5zZXRfcGFyYW1ldGVyKCBydHRpOjp0eXBlX2lkPHVuaXF1ZV9pZD4oKSwgbV92YWx1ZSApOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICByZWZfdHlwZSAgICAgICAgbV92YWx1ZTsKLSAgICBtdXRhYmxlIGJvb2wgICAgbV9lcmFzZWQ7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICAgIG5vX3BhcmFtcyAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSBuZnBfZGV0YWlsIHsKLXR5cGVkZWYgbmFtZWRfcGFyYW1ldGVyPGNoYXIsIHN0cnVjdCBub19wYXJhbXNfdHlwZV90LGNoYXI+IG5vX3BhcmFtc190eXBlOwotfSAvLyBuYW1lc3BhY2UgbmZwX2RldGFpbAotCi1uYW1lc3BhY2UgewotbmZwX2RldGFpbDo6bm9fcGFyYW1zX3R5cGUgbm9fcGFyYW1zKCAnXDAnICk7Ci19IC8vIGxvY2FsIG5hbWVzcGFjZQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICAgICBrZXl3b3JkICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIHVuaXF1ZV9pZCwgYm9vbCByZXF1aXJlZCA9IGZhbHNlPgotc3RydWN0IGtleXdvcmQgewotICAgIHR5cGVkZWYgdW5pcXVlX2lkIGlkOwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBuYW1lZF9wYXJhbWV0ZXI8VCBjb25zdCx1bmlxdWVfaWQ+Ci0gICAgb3BlcmF0b3I9KCBUIGNvbnN0JiB0ICkgY29uc3QgICAgICAgeyByZXR1cm4gbmFtZWRfcGFyYW1ldGVyPFQgY29uc3QsdW5pcXVlX2lkPiggdCApOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIG5hbWVkX3BhcmFtZXRlcjxULHVuaXF1ZV9pZD4KLSAgICBvcGVyYXRvcj0oIFQmIHQgKSBjb25zdCAgIHsgcmV0dXJuIG5hbWVkX3BhcmFtZXRlcjxULHVuaXF1ZV9pZD4oIHQgKTsgfQotCi0gICAgbmFtZWRfcGFyYW1ldGVyPGNoYXIgY29uc3QqLHVuaXF1ZV9pZCxjaGFyIGNvbnN0Kj4KLSAgICBvcGVyYXRvcj0oIGNoYXIgY29uc3QqIHQgKSBjb25zdCAgIHsgcmV0dXJuIG5hbWVkX3BhcmFtZXRlcjxjaGFyIGNvbnN0Kix1bmlxdWVfaWQsY2hhciBjb25zdCo+KCB0ICk7IH0KLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgIHR5cGVkX2tleXdvcmQgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgdW5pcXVlX2lkLCBib29sIHJlcXVpcmVkID0gZmFsc2U+Ci1zdHJ1Y3QgdHlwZWRfa2V5d29yZCA6IGtleXdvcmQ8dW5pcXVlX2lkLHJlcXVpcmVkPiB7Ci0gICAgbmFtZWRfcGFyYW1ldGVyPFQgY29uc3QsdW5pcXVlX2lkPgotICAgIG9wZXJhdG9yPSggVCBjb25zdCYgdCApIGNvbnN0ICAgICAgIHsgcmV0dXJuIG5hbWVkX3BhcmFtZXRlcjxUIGNvbnN0LHVuaXF1ZV9pZD4oIHQgKTsgfQotCi0gICAgbmFtZWRfcGFyYW1ldGVyPFQsdW5pcXVlX2lkPgotICAgIG9wZXJhdG9yPSggVCYgdCApIGNvbnN0ICAgICAgICAgICAgIHsgcmV0dXJuIG5hbWVkX3BhcmFtZXRlcjxULHVuaXF1ZV9pZD4oIHQgKTsgfQotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgdW5pcXVlX2lkPgotc3RydWN0IHR5cGVkX2tleXdvcmQ8Ym9vbCx1bmlxdWVfaWQsZmFsc2U+Ci06IGtleXdvcmQ8dW5pcXVlX2lkLGZhbHNlPgotLCBuYW1lZF9wYXJhbWV0ZXI8Ym9vbCx1bmlxdWVfaWQsYm9vbD4gewotICAgIHR5cGVkZWYgdW5pcXVlX2lkIGlkOwotCi0gICAgdHlwZWRfa2V5d29yZCgpIDogbmFtZWRfcGFyYW1ldGVyPGJvb2wsdW5pcXVlX2lkLGJvb2w+KCB0cnVlICkge30KLQotICAgIG5hbWVkX3BhcmFtZXRlcjxib29sLHVuaXF1ZV9pZCxib29sPgotICAgIG9wZXJhdG9yISgpIGNvbnN0ICAgICAgICAgICB7IHJldHVybiBuYW1lZF9wYXJhbWV0ZXI8Ym9vbCx1bmlxdWVfaWQsYm9vbD4oIGZhbHNlICk7IH0KLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICBvcHRpb25hbGx5X2Fzc2lnbiAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSB2b2lkCi1vcHRpb25hbGx5X2Fzc2lnbiggVCYsIG5mcF9kZXRhaWw6Om5pbCApCi17Ci0gICAgbmZwX2RldGFpbDo6cmVwb3J0X2FjY2Vzc190b19pbnZhbGlkX3BhcmFtZXRlcigpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBTb3VyY2U+Ci1pbmxpbmUgdm9pZAotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoIF9fTVdFUktTX18sIE5ETkJPT1NUX1RFU1RFRF9BVCggMHgzMDAzICkgKSBcCi0gICAgfHwgTkROQk9PU1RfV09SS0FST1VORCggX19ERUNDWFhfVkVSLCBORE5CT09TVF9URVNURURfQVQoNjA1OTAwNDIpICkKLW9wdGlvbmFsbHlfYXNzaWduKCBUJiB0YXJnZXQsIFNvdXJjZSBzcmMgKQotI2Vsc2UKLW9wdGlvbmFsbHlfYXNzaWduKCBUJiB0YXJnZXQsIFNvdXJjZSBjb25zdCYgc3JjICkKLSNlbmRpZgotewotICAgIHVzaW5nIG5hbWVzcGFjZSB1bml0X3Rlc3Q7Ci0KLSAgICBhc3NpZ25fb3AoIHRhcmdldCwgc3JjLCBzdGF0aWNfY2FzdDxpbnQ+KDApICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFBhcmFtcywgdHlwZW5hbWUgS2V5d29yZD4KLWlubGluZSB2b2lkCi1vcHRpb25hbGx5X2Fzc2lnbiggVCYgdGFyZ2V0LCBQYXJhbXMgY29uc3QmIHAsIEtleXdvcmQgayApCi17Ci0gICAgaWYoIHAuaGFzKGspICkKLSAgICAgICAgb3B0aW9uYWxseV9hc3NpZ24oIHRhcmdldCwgcFtrXSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBuZnAKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX05BTUVEX1BBUkFNXzAyMjUwNUdFUgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnR0aS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnR0aS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1NDdhZDIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J0dGkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBzaW1wbGUgZmFjaWxpdGllcyBmb3IgYWNjZXNzaW5nIHR5cGUgaW5mb3JtYXRpb24gYXQgcnVudGltZQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9SVFRJX0hQUF8wNjI2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9SVFRJX0hQUF8wNjI2MDRHRVIKLQotI2luY2x1ZGUgPGNzdGRkZWY+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBydHRpIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgIHJ0dGk6OnR5cGVfaWQgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10eXBlZGVmIHN0ZDo6cHRyZGlmZl90IGlkX3Q7Ci0KLW5hbWVzcGFjZSBydHRpX2RldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgcnR0aWRfaG9sZGVyIHsKLSAgICBzdGF0aWMgaWRfdCBpZCgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8aWRfdD4oICZpbnN0KCkgKTsgfQotCi1wcml2YXRlOgotICAgIHN0cnVjdCBydHRpZCB7fTsKLQotICAgIHN0YXRpYyBydHRpZCBjb25zdCYgaW5zdCgpIHsgc3RhdGljIHJ0dGlkIHNfaW5zdDsgIHJldHVybiBzX2luc3Q7IH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIHJ0dGlfZGV0YWlsCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+ICAgCi1pbmxpbmUgaWRfdAotdHlwZV9pZCgpCi17Ci0gICAgcmV0dXJuIHJ0dGlfZGV0YWlsOjpydHRpZF9ob2xkZXI8VD46OmlkKCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgTkROQk9PU1RfUlRUSV9TV0lUQ0goIHR5cGVfaWRfICkgaWYoIDo6bmRuYm9vc3Q6OnJ0dGk6OmlkX3Qgc3dpdGNoX2J5X2lkID0gdHlwZV9pZF8gKQotI2RlZmluZSBORE5CT09TVF9SVFRJX0NBU0UoIHR5cGUgKSAgICAgICBpZiggc3dpdGNoX2J5X2lkID09IDo6bmRuYm9vc3Q6OnJ0dGk6OnR5cGVfaWQ8dHlwZT4oKSApCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHJ0dGkKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX1JUVElfSFBQXzA2MjYwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvYXJndW1lbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvYXJndW1lbnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTJiMjlkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2FyZ3VtZW50LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMiArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTc5OTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IG1vZGVsIG9mIGFjdHVhbCBhcmd1bWVudCAoYm90aCB0eXBlZCBhbmQgYWJzdHJhY3QgaW50ZXJmYWNlKQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfQVJHVU1FTlRfSFBQXzA2MjYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9BUkdVTUVOVF9IUFBfMDYyNjA0R0VSCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL3ZhbGlkYXRpb24uaHBwPgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9jbGFzc19wcm9wZXJ0aWVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J0dGkuaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxjYXNzZXJ0PgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICBydW50aW1lOjphcmd1bWVudCAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDI0NCkKLSNlbmRpZgotCi1jbGFzcyBhcmd1bWVudCB7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBhcmd1bWVudCggcGFyYW1ldGVyIGNvbnN0JiBwLCBydHRpOjppZF90IHZhbHVlX3R5cGUgKQotICAgIDogcF9mb3JtYWxfcGFyYW1ldGVyKCBwICkKLSAgICAsIHBfdmFsdWVfdHlwZSggdmFsdWVfdHlwZSApCi0gICAge30KLQotICAgIC8vIERlc3RydWN0b3IKLSAgICB2aXJ0dWFsICAgICB+YXJndW1lbnQoKSAge30KLQotICAgIC8vIFB1YmxpYyBwcm9wZXJ0aWVzCi0gICAgdW5pdF90ZXN0OjpyZWFkb25seV9wcm9wZXJ0eTxwYXJhbWV0ZXIgY29uc3QmPiBwX2Zvcm1hbF9wYXJhbWV0ZXI7Ci0gICAgdW5pdF90ZXN0OjpyZWFkb25seV9wcm9wZXJ0eTxydHRpOjppZF90PiAgICAgICBwX3ZhbHVlX3R5cGU7Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgcnVudGltZTo6dHlwZWRfYXJndW1lbnQgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyB0eXBlZF9hcmd1bWVudCA6IHB1YmxpYyBhcmd1bWVudCB7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBleHBsaWNpdCB0eXBlZF9hcmd1bWVudCggcGFyYW1ldGVyIGNvbnN0JiBwICkKLSAgICA6IGFyZ3VtZW50KCBwLCBydHRpOjp0eXBlX2lkPFQ+KCkgKQotICAgIHt9Ci0gICAgdHlwZWRfYXJndW1lbnQoIHBhcmFtZXRlciBjb25zdCYgcCwgVCBjb25zdCYgdCApCi0gICAgOiBhcmd1bWVudCggcCwgcnR0aTo6dHlwZV9pZDxUPigpICkKLSAgICAsIHBfdmFsdWUoIHQgKQotICAgIHt9Ci0KLSAgICB1bml0X3Rlc3Q6OnJlYWR3cml0ZV9wcm9wZXJ0eTxUPiAgICBwX3ZhbHVlOwotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgcnVudGltZTo6YXJnX3ZhbHVlICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIFQgY29uc3QmCi1hcmdfdmFsdWUoIGFyZ3VtZW50IGNvbnN0JiBhcmdfICkKLXsKLSAgICBhc3NlcnQoIGFyZ18ucF92YWx1ZV90eXBlID09IHJ0dGk6OnR5cGVfaWQ8VD4oKSApOyAvLyBkZXRlY3QgbG9naWMgZXJyb3IKLQotICAgIHJldHVybiBzdGF0aWNfY2FzdDx0eXBlZF9hcmd1bWVudDxUPiBjb25zdCY+KCBhcmdfICkucF92YWx1ZS52YWx1ZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBUJgotYXJnX3ZhbHVlKCBhcmd1bWVudCYgYXJnXyApCi17Ci0gICAgYXNzZXJ0KCBhcmdfLnBfdmFsdWVfdHlwZSA9PSBydHRpOjp0eXBlX2lkPFQ+KCkgKTsgLy8gZGV0ZWN0IGxvZ2ljIGVycm9yCi0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZWRfYXJndW1lbnQ8VD4mPiggYXJnXyApLnBfdmFsdWUudmFsdWU7Ci19Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jICBwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9BUkdVTUVOVF9IUFBfMDYyNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvYXJndW1lbnRfZmFjdG9yeS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvYXJndW1lbnRfZmFjdG9yeS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwZjFkZjQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2FyZ3VtZW50X2ZhY3RvcnkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjE4ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTc5OTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGdlbmVyaWMgdHlwZWRfYXJndW1lbnRfZmFjdG9yeSBpbXBsZW1lbnRhdGlvbgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfQ0xBX0FSR1VNRU5UX0ZBQ1RPUllfSFBQXzA2MjYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9DTEFfQVJHVU1FTlRfRkFDVE9SWV9IUFBfMDYyNjA0R0VSCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvdmFsaWRhdGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2FyZ3VtZW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvdHJhY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9pbnRlcnByZXRfYXJndW1lbnRfdmFsdWUuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvdmFsdWVfZ2VuZXJhdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3ZhbHVlX2hhbmRsZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvdmFsaWRhdGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9hcmd2X3RyYXZlcnNlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9kZXRhaWwvYXJndW1lbnRfdmFsdWVfdXNhZ2UuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9pZmFjZS9hcmd1bWVudF9mYWN0b3J5LmhwcD4KLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvY2FsbGJhY2suaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L29wdGlvbmFsLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLW5hbWVzcGFjZSBjbGEgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgIGRlZmF1bHRfdmFsdWVfaW50ZXJwcmV0ZXIgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSBydF9jbGFfZGV0YWlsIHsKLQotc3RydWN0IGRlZmF1bHRfdmFsdWVfaW50ZXJwcmV0ZXIgewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBvcGVyYXRvcigpKCBhcmd2X3RyYXZlcnNlciYgdHIsIG5kbmJvb3N0OjpvcHRpb25hbDxUPiYgdmFsdWUgKQotICAgIHsKLSAgICAgICAgaWYoIGludGVycHJldF9hcmd1bWVudF92YWx1ZSggdHIudG9rZW4oKSwgdmFsdWUsIDAgKSApCi0gICAgICAgICAgICB0ci5uZXh0X3Rva2VuKCk7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgcnRfY2xhX2RldGFpbAotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgdHlwZWRfYXJndW1lbnRfZmFjdG9yeSAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgdHlwZWRfYXJndW1lbnRfZmFjdG9yeSA6IHB1YmxpYyBhcmd1bWVudF9mYWN0b3J5IHsKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIHR5cGVkX2FyZ3VtZW50X2ZhY3RvcnkoKQotICAgIDogbV92YWx1ZV9pbnRlcnByZXRlciggcnRfY2xhX2RldGFpbDo6ZGVmYXVsdF92YWx1ZV9pbnRlcnByZXRlcigpICkKLSAgICB7fQotICAgIE5ETkJPT1NUX1JUX1BBUkFNX1VOTkVFREVEX1ZJUlRVQUwgfnR5cGVkX2FyZ3VtZW50X2ZhY3RvcnkoKSB7fQotCi0gICAgLy8gcHJvcGVydGllcyBtb2RpZmljYXRpb24KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNb2RpZmllcj4KLSAgICB2b2lkICAgICAgICAgICAgICAgIGFjY2VwdF9tb2RpZmllciggTW9kaWZpZXIgY29uc3QmIG0gKQotICAgIHsKLSAgICAgICAgb3B0aW9uYWxseV9hc3NpZ24oIG1fdmFsdWVfaGFuZGxlciwgbSwgaGFuZGxlciApOwotICAgICAgICBvcHRpb25hbGx5X2Fzc2lnbiggbV92YWx1ZV9pbnRlcnByZXRlciwgbSwgaW50ZXJwcmV0ZXIgKTsKLQotICAgICAgICBpZiggbS5oYXMoIGRlZmF1bHRfdmFsdWUgKSApIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX1ZBTElEQVRFX0xPR0lDKCAhbV92YWx1ZV9nZW5lcmF0b3IsIAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICJtdWx0aXBsZSB2YWx1ZSBnZW5lcmF0b3JzIGZvciBwYXJhbWV0ZXIiICkgKTsKLQotICAgICAgICAgICAgVCBjb25zdCYgZHZfcmVmID0gbVtkZWZhdWx0X3ZhbHVlXTsKLSAgICAgICAgICAgIG1fdmFsdWVfZ2VuZXJhdG9yID0gcnRfY2xhX2RldGFpbDo6Y29uc3RfZ2VuZXJhdG9yPFQ+KCBkdl9yZWYgKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmKCBtLmhhcyggZGVmYXVsdF9yZWZlcl90byApICkgewotICAgICAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fVkFMSURBVEVfTE9HSUMoICFtX3ZhbHVlX2dlbmVyYXRvciwgCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggIm11bHRpcGxlIHZhbHVlIGdlbmVyYXRvcnMgZm9yIHBhcmFtZXRlciIgKSApOwotCi0gICAgICAgICAgICBjc3RyaW5nIHJlZl9pZCA9IG1bZGVmYXVsdF9yZWZlcl90b107Ci0gICAgICAgICAgICBtX3ZhbHVlX2dlbmVyYXRvciA9IHJ0X2NsYV9kZXRhaWw6OnJlZl9nZW5lcmF0b3I8VD4oIHJlZl9pZCApOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYoIG0uaGFzKCBhc3NpZ25fdG8gKSApIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX1ZBTElEQVRFX0xPR0lDKCAhbV92YWx1ZV9oYW5kbGVyLCAKLSAgICAgICAgICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAibXVsdGlwbGUgdmFsdWUgaGFuZGxlcnMgZm9yIHBhcmFtZXRlciIgKSApOwotCi0gICAgICAgICAgICBtX3ZhbHVlX2hhbmRsZXIgPSBydF9jbGFfZGV0YWlsOjphc3NpZ25lcjxUPiggbVthc3NpZ25fdG9dICk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBBcmd1bWVudCBmYWN0b3J5IGltcGxlbWVudGF0aW9uCi0gICAgdmlydHVhbCBhcmd1bWVudF9wdHIgcHJvZHVjZV91c2luZyggcGFyYW1ldGVyJiBwLCBhcmd2X3RyYXZlcnNlciYgdHIgKTsKLSAgICB2aXJ0dWFsIGFyZ3VtZW50X3B0ciBwcm9kdWNlX3VzaW5nKCBwYXJhbWV0ZXImIHAsIHBhcnNlciBjb25zdCYgKTsKLSAgICB2aXJ0dWFsIHZvaWQgICAgICAgICBhcmd1bWVudF91c2FnZV9pbmZvKCBmb3JtYXRfc3RyZWFtJiBmcyApOwotCi0vLyAhISBwcml2YXRlPwotICAgIC8vIERhdGEgbWVtYmVycwotICAgIHVuaXRfdGVzdDo6Y2FsbGJhY2syPHBhcmFtZXRlciBjb25zdCYsVCY+ICAgICAgICAgICAgICAgICAgIG1fdmFsdWVfaGFuZGxlcjsKLSAgICB1bml0X3Rlc3Q6OmNhbGxiYWNrMjxwYXJzZXIgY29uc3QmLG5kbmJvb3N0OjpvcHRpb25hbDxUPiY+ICAgICBtX3ZhbHVlX2dlbmVyYXRvcjsKLSAgICB1bml0X3Rlc3Q6OmNhbGxiYWNrMjxhcmd2X3RyYXZlcnNlciYsbmRuYm9vc3Q6Om9wdGlvbmFsPFQ+Jj4gICBtX3ZhbHVlX2ludGVycHJldGVyOwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBhcmd1bWVudF9wdHIKLXR5cGVkX2FyZ3VtZW50X2ZhY3Rvcnk8VD46OnByb2R1Y2VfdXNpbmcoIHBhcmFtZXRlciYgcCwgYXJndl90cmF2ZXJzZXImIHRyICkKLXsKLSAgICBuZG5ib29zdDo6b3B0aW9uYWw8VD4gdmFsdWU7Ci0KLSAgICB0cnkgewotICAgICAgICBtX3ZhbHVlX2ludGVycHJldGVyKCB0ciwgdmFsdWUgKTsKLSAgICB9Ci0gICAgY2F0Y2goIC4uLiApIHsgLy8gISEgc2hvdWxkIHdlIGRvIHRoYXQ/Ci0gICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX1RSQUNFKCAiRmFpbCB0byBwYXJzZSBhcmd1bWVudCB2YWx1ZSIgKTsKLQotICAgICAgICBpZiggIXAucF9vcHRpb25hbF92YWx1ZSApCi0gICAgICAgICAgICB0aHJvdzsKLSAgICB9Ci0KLSAgICBhcmd1bWVudF9wdHIgYWN0dWFsX2FyZyA9IHAuYWN0dWFsX2FyZ3VtZW50KCk7Ci0KLSAgICBORE5CT09TVF9SVF9DTEFfVkFMSURBVEVfSU5QVVQoICEhdmFsdWUgfHwgcC5wX29wdGlvbmFsX3ZhbHVlLCB0ciwgCi0gICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICJBcmd1bWVudCB2YWx1ZSBtaXNzaW5nIGZvciBwYXJhbWV0ZXIgIiApIDw8IHAuaWRfMl9yZXBvcnQoKSApOwotCi0gICAgTkROQk9PU1RfUlRfQ0xBX1ZBTElEQVRFX0lOUFVUKCAhYWN0dWFsX2FyZyB8fCBwLnBfbXVsdGlwbGljYWJsZSwgdHIsIAotICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAiVW5leHBlY3RlZCByZXBldGl0aW9uIG9mIHRoZSBwYXJhbWV0ZXIgIiApIDw8IHAuaWRfMl9yZXBvcnQoKSApOwotCi0gICAgaWYoICEhdmFsdWUgJiYgISFtX3ZhbHVlX2hhbmRsZXIgKQotICAgICAgICBtX3ZhbHVlX2hhbmRsZXIoIHAsICp2YWx1ZSApOwotCi0gICAgaWYoICFwLnBfbXVsdGlwbGljYWJsZSApCi0gICAgICAgIGFjdHVhbF9hcmcucmVzZXQoIHAucF9vcHRpb25hbF92YWx1ZSAmJiAocnR0aTo6dHlwZV9pZDxUPigpICE9IHJ0dGk6OnR5cGVfaWQ8Ym9vbD4oKSkKLSAgICAgICAgICAgID8gc3RhdGljX2Nhc3Q8YXJndW1lbnQqPihuZXcgdHlwZWRfYXJndW1lbnQ8bmRuYm9vc3Q6Om9wdGlvbmFsPFQ+ID4oIHAsIHZhbHVlICkpCi0gICAgICAgICAgICA6IHN0YXRpY19jYXN0PGFyZ3VtZW50Kj4obmV3IHR5cGVkX2FyZ3VtZW50PFQ+KCBwLCAqdmFsdWUgKSkgKTsKLSAgICBlbHNlIHsKLSAgICAgICAgdHlwZWRlZiBzdGQ6Omxpc3Q8bmRuYm9vc3Q6Om9wdGlvbmFsPFQ+ID4gb3B0aW9uYWxfbGlzdDsKLQotICAgICAgICBpZiggIWFjdHVhbF9hcmcgKQotICAgICAgICAgICAgYWN0dWFsX2FyZy5yZXNldCggcC5wX29wdGlvbmFsX3ZhbHVlIAotICAgICAgICAgICAgICAgID8gc3RhdGljX2Nhc3Q8YXJndW1lbnQqPihuZXcgdHlwZWRfYXJndW1lbnQ8b3B0aW9uYWxfbGlzdD4oIHAgKSkKLSAgICAgICAgICAgICAgICA6IHN0YXRpY19jYXN0PGFyZ3VtZW50Kj4obmV3IHR5cGVkX2FyZ3VtZW50PHN0ZDo6bGlzdDxUPiA+KCBwICkpICk7Ci0KLSAgICAgICAgaWYoIHAucF9vcHRpb25hbF92YWx1ZSApIHsKLSAgICAgICAgICAgIG9wdGlvbmFsX2xpc3QmIHZhbHVlcyA9IGFyZ192YWx1ZTxvcHRpb25hbF9saXN0PiggKmFjdHVhbF9hcmcgKTsKLQotICAgICAgICAgICAgdmFsdWVzLnB1c2hfYmFjayggdmFsdWUgKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHN0ZDo6bGlzdDxUPiYgdmFsdWVzID0gYXJnX3ZhbHVlPHN0ZDo6bGlzdDxUPiA+KCAqYWN0dWFsX2FyZyApOwotICAgICAgICAgICAgCi0gICAgICAgICAgICB2YWx1ZXMucHVzaF9iYWNrKCAqdmFsdWUgKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBhY3R1YWxfYXJnOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIGFyZ3VtZW50X3B0ciAKLXR5cGVkX2FyZ3VtZW50X2ZhY3Rvcnk8VD46OnByb2R1Y2VfdXNpbmcoIHBhcmFtZXRlciYgcCwgcGFyc2VyIGNvbnN0JiBwYSApCi17Ci0gICAgYXJndW1lbnRfcHRyIGFjdHVhbF9hcmc7Ci0KLSAgICBpZiggIW1fdmFsdWVfZ2VuZXJhdG9yICkKLSAgICAgICAgcmV0dXJuIGFjdHVhbF9hcmc7Ci0KLSAgICBuZG5ib29zdDo6b3B0aW9uYWw8VD4gdmFsdWU7Ci0gICAgbV92YWx1ZV9nZW5lcmF0b3IoIHBhLCB2YWx1ZSApOwotCi0gICAgaWYoICF2YWx1ZSApCi0gICAgICAgIHJldHVybiBhY3R1YWxfYXJnOwotCi0gICAgaWYoICEhbV92YWx1ZV9oYW5kbGVyICkKLSAgICAgICAgbV92YWx1ZV9oYW5kbGVyKCBwLCAqdmFsdWUgKTsKLQotICAgIGFjdHVhbF9hcmcucmVzZXQoIG5ldyB0eXBlZF9hcmd1bWVudDxUPiggcCwgKnZhbHVlICkgKTsKLQotICAgIHJldHVybiBhY3R1YWxfYXJnOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIHZvaWQKLXR5cGVkX2FyZ3VtZW50X2ZhY3Rvcnk8VD46OmFyZ3VtZW50X3VzYWdlX2luZm8oIGZvcm1hdF9zdHJlYW0mIGZzICkKLXsKLSAgICBydF9jbGFfZGV0YWlsOjphcmd1bWVudF92YWx1ZV91c2FnZSggZnMsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KDApICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBjbGEKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0NMQV9BUkdVTUVOVF9GQUNUT1JZX0hQUF8wNjI2MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9hcmd2X3RyYXZlcnNlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvYXJndl90cmF2ZXJzZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTFmN2JjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9hcmd2X3RyYXZlcnNlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU3OTkyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBkZWZpbmVzIGZhY2lsaXR5IHRvIGhpZGUgaW5wdXQgdHJhdmVyc2luZyBkZXRhaWxzCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9DTEFfQVJHVl9UUkFWRVJTRVJfSFBQXzA2MjYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9DTEFfQVJHVl9UUkFWRVJTRVJfSFBQXzA2MjYwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9jbGFzc19wcm9wZXJ0aWVzLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9ub25jb3B5YWJsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc2hhcmVkX2FycmF5LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLW5hbWVzcGFjZSBjbGEgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgcnVudGltZTo6Y2xhOjphcmd2X3RyYXZlcnNlciAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIGFyZ3ZfdHJhdmVyc2VyIDogbm9uY29weWFibGUgewotICAgIGNsYXNzIHBhcnNlcjsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIGFyZ3ZfdHJhdmVyc2VyKCk7Ci0KLSAgICAvLyBwdWJsaWNfcHJvcGVydGllcwotICAgIHVuaXRfdGVzdDo6cmVhZHdyaXRlX3Byb3BlcnR5PGJvb2w+ICAgICAgICAgcF9pZ25vcmVfbWlzbWF0Y2g7Ci0gICAgdW5pdF90ZXN0OjpyZWFkd3JpdGVfcHJvcGVydHk8Y2hhcl90eXBlPiAgICBwX3NlcGFyYXRvcjsKLQotICAgIC8vIGFyZ2MrYXJndiA8LT4gaW50ZXJuYWwgYnVmZmVyIGV4Y2hhbmdlCi0gICAgdm9pZCAgICAgICAgICAgIGluaXQoIGludCBhcmdjLCBjaGFyX3R5cGUqKiBhcmd2ICk7Ci0gICAgdm9pZCAgICAgICAgICAgIHJlbWFpbmRlciggaW50JiBhcmdjLCBjaGFyX3R5cGUqKiBhcmd2ICk7Ci0KLSAgICAvLyB0b2tlbiBiYXNlZCBwYXJzaW5nCi0gICAgY3N0cmluZyAgICAgICAgIHRva2VuKCkgY29uc3Q7Ci0gICAgdm9pZCAgICAgICAgICAgIG5leHRfdG9rZW4oKTsKLQotICAgIC8vIHdob2xlIGlucHV0IHBhcnNpbmcKLSAgICBjc3RyaW5nICAgICAgICAgaW5wdXQoKSBjb25zdDsKLSAgICB2b2lkICAgICAgICAgICAgdHJpbSggc3RkOjpzaXplX3Qgc2l6ZSApOwotICAgIGJvb2wgICAgICAgICAgICBtYXRjaF9mcm9udCggY3N0cmluZyApOwotICAgIGJvb2wgICAgICAgICAgICBtYXRjaF9mcm9udCggY2hhcl90eXBlIGMgKTsKLSAgICBib29sICAgICAgICAgICAgZW9pKCkgY29uc3Q7Ci0KLSAgICAvLyB0cmFuc2FjdGlvbiBsb2dpYyBzdXBwb3J0Ci0gICAgdm9pZCAgICAgICAgICAgIGNvbW1pdCgpOwotICAgIHZvaWQgICAgICAgICAgICByb2xsYmFjaygpOwotCi0gICAgLy8gY3VycmVudCBwb3NpdGlvbiBhY2Nlc3M7IHVzZWQgdG8gc2F2ZSBzb21lIHJlZmVyZW5jZSBwb2ludHMgaW4gaW5wdXQKLSAgICBzdGQ6OnNpemVfdCAgICAgaW5wdXRfcG9zKCkgY29uc3Q7Ci0KLSAgICAvLyByZXR1cm5zIHRydWUgaWYgbWlzbWF0Y2ggZGV0ZWN0ZWQgZHVyaW5nIGlucHV0IHBhcnNpbmcgaGFuZGxlZCBzdWNjZXNzZnVsbHkKLSAgICBib29sICAgICAgICAgICAgaGFuZGxlX21pc21hdGNoKCk7Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgZHN0cmluZyAgICAgICAgICAgICAgICAgbV9idWZmZXI7Ci0gICAgY3N0cmluZyAgICAgICAgICAgICAgICAgbV93b3JrX2J1ZmZlcjsKLQotICAgIGNzdHJpbmcgICAgICAgICAgICAgICAgIG1fdG9rZW47Ci0gICAgY3N0cmluZzo6aXRlcmF0b3IgICAgICAgbV9jb21taXRlZF9lbmQ7Ci0KLSAgICBzaGFyZWRfYXJyYXk8Y2hhcl90eXBlPiBtX3JlbWFpbmRlcjsKLSAgICBzdGQ6OnNpemVfdCAgICAgICAgICAgICBtX3JlbWFpbmRlcl9zaXplOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgY2xhCi0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX1BBUkFNX09GRkxJTkUKLQotIyAgZGVmaW5lIE5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSBpbmxpbmUKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvYXJndl90cmF2ZXJzZXIuaXBwPgotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0NMQV9BUkdWX1RSQVZFUlNFUl9IUFBfMDYyNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvYXJndl90cmF2ZXJzZXIuaXBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2FyZ3ZfdHJhdmVyc2VyLmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTljMDQ3ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvYXJndl90cmF2ZXJzZXIuaXBwCisrKyAvZGV2L251bGwKQEAgLTEsMjA5ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGltcGxlbWVudHMgZmFjaWxpdHkgdG8gaGlkZSBpbnB1dCB0cmF2ZXJzaW5nIGRldGFpbHMKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0NMQV9BUkdWX1RSQVZFUlNFUl9JUFBfMDcwNjA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX0NMQV9BUkdWX1RSQVZFUlNFUl9JUFBfMDcwNjA0R0VSCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL3RyYWNlLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvYXJndl90cmF2ZXJzZXIuaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8Y3N0cmluZz4KLQotI2lmZGVmIE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFCi1uYW1lc3BhY2Ugc3RkIHsgdXNpbmcgOjptZW1jcHk7IH0KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotbmFtZXNwYWNlIGNsYSB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICBydW50aW1lOjpjbGE6OmFyZ3ZfdHJhdmVyc2VyICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FCi1hcmd2X3RyYXZlcnNlcjo6YXJndl90cmF2ZXJzZXIoKQotOiBwX2lnbm9yZV9taXNtYXRjaCggZmFsc2UgKSwgcF9zZXBhcmF0b3IoIE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICcgJyApICkKLXsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIHZvaWQKLWFyZ3ZfdHJhdmVyc2VyOjppbml0KCBpbnQgYXJnYywgY2hhcl90eXBlKiogYXJndiApCi17Ci0gICAgZm9yKCBpbnQgaW5kZXggPSAxOyBpbmRleCA8IGFyZ2M7ICsraW5kZXggKSB7Ci0gICAgICAgIG1fYnVmZmVyICs9IGFyZ3ZbaW5kZXhdOwotICAgICAgICBpZiggaW5kZXggIT0gYXJnYy0xICkKLSAgICAgICAgICAgIG1fYnVmZmVyICs9IE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICcgJyApOwotICAgIH0KLQotICAgIG1fcmVtYWluZGVyLnJlc2V0KCBuZXcgY2hhcl90eXBlW21fYnVmZmVyLnNpemUoKSsxXSApOwotICAgIG1fcmVtYWluZGVyX3NpemUgICAgPSAwOwotICAgIG1fd29ya19idWZmZXIgICAgICAgPSBtX2J1ZmZlcjsKLSAgICBtX2NvbW1pdGVkX2VuZCAgICAgID0gbV93b3JrX2J1ZmZlci5iZWdpbigpOwotCi0gICAgTkROQk9PU1RfUlRfUEFSQU1fVFJBQ0UoICJJbnB1dCBidWZmZXI6ICIgPDwgbV9idWZmZXIgKTsKLQotICAgIG5leHRfdG9rZW4oKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIHZvaWQKLWFyZ3ZfdHJhdmVyc2VyOjpyZW1haW5kZXIoIGludCYgYXJnYywgY2hhcl90eXBlKiogYXJndiApCi17Ci0gICAgYXJnYyA9IDE7Ci0gICAgc3RkOjpzaXplX3QgcG9zID0gMDsKLSAgICB3aGlsZShwb3MgPCBtX3JlbWFpbmRlcl9zaXplICkgewotICAgICAgICBhcmd2W2FyZ2MrK10gPSBtX3JlbWFpbmRlci5nZXQoKSArIHBvczsKLQotICAgICAgICBwb3MgPSBzdGQ6OmZpbmQoIG1fcmVtYWluZGVyLmdldCgpICsgcG9zLCBtX3JlbWFpbmRlci5nZXQoKSArIG1fcmVtYWluZGVyX3NpemUsIAotICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICcgJyApICkgLSBtX3JlbWFpbmRlci5nZXQoKTsKLSAgICAgICAgbV9yZW1haW5kZXJbcG9zKytdID0gTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggJ1wwJyApOwotICAgIH0KLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIGNzdHJpbmcKLWFyZ3ZfdHJhdmVyc2VyOjp0b2tlbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdG9rZW47Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSB2b2lkCi1hcmd2X3RyYXZlcnNlcjo6bmV4dF90b2tlbigpCi17Ci0gICAgaWYoIG1fd29ya19idWZmZXIuaXNfZW1wdHkoKSApCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fd29ya19idWZmZXIudHJpbV9sZWZ0KCBtX3Rva2VuLnNpemUoKSApOyAvLyBza2lwIHJlbWFpbmRlciBvZiBjdXJyZW50IHRva2VuCi0KLSAgICBpZiggbV93b3JrX2J1ZmZlci5zaXplKCkgIT0gbV9idWZmZXIuc2l6ZSgpICkgLy8gISEgaXMgdGhlcmUgYSBiZXR0ZXIgd2F5IHRvIGlkZW50aWZ5IGZpcnN0IHRva2VuCi0gICAgICAgIG1fd29ya19idWZmZXIudHJpbV9sZWZ0KCAxICk7IC8vIHNraXAgc2VwYXJhdG9yIGlmIG5vdCBmaXJzdCB0b2tlbjsKLQotICAgIG1fdG9rZW4uYXNzaWduKCBtX3dvcmtfYnVmZmVyLmJlZ2luKCksCi0gICAgICAgICAgICAgICAgICAgIHN0ZDo6ZmluZCggbV93b3JrX2J1ZmZlci5iZWdpbigpLCBtX3dvcmtfYnVmZmVyLmVuZCgpLCBwX3NlcGFyYXRvciApICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSBjc3RyaW5nCi1hcmd2X3RyYXZlcnNlcjo6aW5wdXQoKSBjb25zdAotewotICAgIHJldHVybiBtX3dvcmtfYnVmZmVyOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgdm9pZAotYXJndl90cmF2ZXJzZXI6OnRyaW0oIHN0ZDo6c2l6ZV90IHNpemUgKQotewotICAgIG1fd29ya19idWZmZXIudHJpbV9sZWZ0KCBzaXplICk7Ci0KLSAgICBpZiggc2l6ZSA8PSBtX3Rva2VuLnNpemUoKSApCi0gICAgICAgIG1fdG9rZW4udHJpbV9sZWZ0KCBzaXplICk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIG1fdG9rZW4uYXNzaWduKCBtX3dvcmtfYnVmZmVyLmJlZ2luKCksCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmZpbmQoIG1fd29ya19idWZmZXIuYmVnaW4oKSwgbV93b3JrX2J1ZmZlci5lbmQoKSwgcF9zZXBhcmF0b3IgKSApOwotICAgIH0KLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIGJvb2wKLWFyZ3ZfdHJhdmVyc2VyOjptYXRjaF9mcm9udCggY3N0cmluZyBzdHIgKQotewotICAgIHJldHVybiBtX3dvcmtfYnVmZmVyLnNpemUoKSA8IHN0ci5zaXplKCkgPyBmYWxzZSA6IG1fd29ya19idWZmZXIuc3Vic3RyKCAwLCBzdHIuc2l6ZSgpICkgPT0gc3RyOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgYm9vbAotYXJndl90cmF2ZXJzZXI6Om1hdGNoX2Zyb250KCBjaGFyX3R5cGUgYyApCi17Ci0gICAgcmV0dXJuIGZpcnN0X2NoYXIoIG1fd29ya19idWZmZXIgKSA9PSBjOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgYm9vbAotYXJndl90cmF2ZXJzZXI6OmVvaSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fd29ya19idWZmZXIuaXNfZW1wdHkoKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIHZvaWQKLWFyZ3ZfdHJhdmVyc2VyOjpjb21taXQoKQotewotICAgIG1fY29tbWl0ZWRfZW5kID0gbV93b3JrX2J1ZmZlci5iZWdpbigpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgdm9pZAotYXJndl90cmF2ZXJzZXI6OnJvbGxiYWNrKCkKLXsKLSAgICBtX3dvcmtfYnVmZmVyLmFzc2lnbiggbV9jb21taXRlZF9lbmQsIG1fd29ya19idWZmZXIuZW5kKCkgKTsKLSAgICBtX3Rva2VuLmFzc2lnbiggbV93b3JrX2J1ZmZlci5iZWdpbigpLAotICAgICAgICAgICAgICAgICAgICBzdGQ6OmZpbmQoIG1fd29ya19idWZmZXIuYmVnaW4oKSwgbV93b3JrX2J1ZmZlci5lbmQoKSwgcF9zZXBhcmF0b3IgKSApOwotCi19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSBzdGQ6OnNpemVfdAotYXJndl90cmF2ZXJzZXI6OmlucHV0X3BvcygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fd29ya19idWZmZXIuYmVnaW4oKSAtIG1fY29tbWl0ZWRfZW5kOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgYm9vbAotYXJndl90cmF2ZXJzZXI6OmhhbmRsZV9taXNtYXRjaCgpCi17Ci0gICAgaWYoICFwX2lnbm9yZV9taXNtYXRjaCApCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHN0ZDo6bWVtY3B5KCBtX3JlbWFpbmRlci5nZXQoKSArIG1fcmVtYWluZGVyX3NpemUsIHRva2VuKCkuYmVnaW4oKSwgdG9rZW4oKS5zaXplKCkgKTsKLSAgICBtX3JlbWFpbmRlcl9zaXplICs9IHRva2VuKCkuc2l6ZSgpOwotICAgIG1fcmVtYWluZGVyW21fcmVtYWluZGVyX3NpemUrK10gPSBwX3NlcGFyYXRvcjsKLQotICAgIG5leHRfdG9rZW4oKTsKLSAgICBjb21taXQoKTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBjbGEKLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9DTEFfQVJHVl9UUkFWRVJTRVJfSVBQXzA3MDYwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2Jhc2ljX3BhcmFtZXRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvYmFzaWNfcGFyYW1ldGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzllYzJiOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvYmFzaWNfcGFyYW1ldGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGdlbmVyaWMgY3VzdG9tIHBhcmFtZXRlciBnZW5lcmF0b3IKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0NMQV9CQVNJQ19QQVJBTUVURVJfSFBQXzA2MjYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9DTEFfQkFTSUNfUEFSQU1FVEVSX0hQUF8wNjI2MDRHRVIKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvdHlwZWRfcGFyYW1ldGVyLmhwcD4KLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnR0aS5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9iYXNlX2Zyb21fbWVtYmVyLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLW5hbWVzcGFjZSBjbGEgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICBydW50aW1lOjpjbGE6OmJhc2ljX3BhcmFtZXRlciAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIElkUG9saWN5PgotY2xhc3MgYmFzaWNfcGFyYW1ldGVyIDogcHJpdmF0ZSBiYXNlX2Zyb21fbWVtYmVyPElkUG9saWN5PiwgcHVibGljIHR5cGVkX3BhcmFtZXRlcjxUPiB7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3JzCi0gICAgZXhwbGljaXQgICAgYmFzaWNfcGFyYW1ldGVyKCBjc3RyaW5nIG4gKSAKLSAgICA6IGJhc2VfZnJvbV9tZW1iZXI8SWRQb2xpY3k+KCkKLSAgICAsIHR5cGVkX3BhcmFtZXRlcjxUPiggYmFzZV9mcm9tX21lbWJlcjxJZFBvbGljeT46Om1lbWJlciApCi0gICAgewotICAgICAgICB0aGlzLT5hY2NlcHRfbW9kaWZpZXIoIG5hbWUgPSBuICk7Ci0gICAgfQotCi0gICAgLy8gcGFyYW1ldGVyIHByb3BlcnRpZXMgbW9kaWZpY2F0aW9uCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTW9kaWZpZXI+Ci0gICAgdm9pZCAgICAgICAgYWNjZXB0X21vZGlmaWVyKCBNb2RpZmllciBjb25zdCYgbSApCi0gICAgewotICAgICAgICB0eXBlZF9wYXJhbWV0ZXI8VD46OmFjY2VwdF9tb2RpZmllciggbSApOwotCi0gICAgICAgIGJhc2VfZnJvbV9tZW1iZXI8SWRQb2xpY3k+OjptZW1iZXIuYWNjZXB0X21vZGlmaWVyKCBtICk7Ci0gICAgfQotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2RlZmluZSBORE5CT09TVF9SVF9DTEFfTkFNRURfUEFSQU1fR0VORVJBVE9SUyggcGFyYW1fdHlwZSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotaW5saW5lIHNoYXJlZF9wdHI8cGFyYW1fdHlwZSAjIyBfdDxUPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotcGFyYW1fdHlwZSggY3N0cmluZyBuYW1lID0gY3N0cmluZygpICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHJldHVybiBzaGFyZWRfcHRyPHBhcmFtX3R5cGUgIyMgX3Q8VD4gPiggbmV3IHBhcmFtX3R5cGUgIyMgX3Q8VD4oIG5hbWUgKSApOyAgICAgICAgICAgICAgICAgXAotfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotaW5saW5lIHNoYXJlZF9wdHI8cGFyYW1fdHlwZSAjIyBfdDxjc3RyaW5nPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotcGFyYW1fdHlwZSggY3N0cmluZyBuYW1lID0gY3N0cmluZygpICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHJldHVybiBzaGFyZWRfcHRyPHBhcmFtX3R5cGUgIyMgX3Q8Y3N0cmluZz4gPiggbmV3IHBhcmFtX3R5cGUgIyMgX3Q8Y3N0cmluZz4oIG5hbWUgKSApOyAgICAgXAotfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLyoqLwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBjbGEKLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9DTEFfQkFTSUNfUEFSQU1FVEVSX0hQUF8wNjI2MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9jaGFyX3BhcmFtZXRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvY2hhcl9wYXJhbWV0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjlhYmNhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9jaGFyX3BhcmFtZXRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBkZWZpbmVzIG1vZGVsIG9mIHBhcmFtZXRlciB3aXRoIHNpbmdsZSBjaGFyIG5hbWUKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0NMQV9DSEFSX1BBUkFNRVRFUl9IUFBfMDYyNjA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX0NMQV9DSEFSX1BBUkFNRVRFUl9IUFBfMDYyNjA0R0VSCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL3ZhbGlkYXRpb24uaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9iYXNpY19wYXJhbWV0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvaWRfcG9saWN5LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLW5hbWVzcGFjZSBjbGEgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICBjaGFyX25hbWVfcG9saWN5ICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIGNoYXJfbmFtZV9wb2xpY3kgOiBwdWJsaWMgYmFzaWNfbmFtaW5nX3BvbGljeSB7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBjaGFyX25hbWVfcG9saWN5KCk7Ci0gICAgTkROQk9PU1RfUlRfUEFSQU1fVU5ORUVERURfVklSVFVBTCB+Y2hhcl9uYW1lX3BvbGljeSgpIHt9Ci0KLSAgICAvLyBwb2xpY3kgaW50ZXJmYWNlCi0gICAgdmlydHVhbCBib29sICAgIGNvbmZsaWN0X3dpdGgoIGlkZW50aWZpY2F0aW9uX3BvbGljeSBjb25zdCYgKSBjb25zdDsKLQotICAgIC8vIEFjY2VwdCBtb2RpZmllcgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1vZGlmaWVyPgotICAgIHZvaWQgICAgICAgICAgICBhY2NlcHRfbW9kaWZpZXIoIE1vZGlmaWVyIGNvbnN0JiBtICkKLSAgICB7Ci0gICAgICAgIGJhc2ljX25hbWluZ19wb2xpY3k6OmFjY2VwdF9tb2RpZmllciggbSApOwotCi0gICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX1ZBTElEQVRFX0xPR0lDKCBwX25hbWUtPnNpemUoKSA8PSAxLCAiSW52YWxpZCBwYXJhbWV0ZXIgbmFtZSAiICA8PCBwX25hbWUgKTsKLSAgICB9Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgcnVudGltZTo6Y2xhOjpjaGFyX3BhcmFtZXRlciAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyBjaGFyX3BhcmFtZXRlcl90IDogcHVibGljIGJhc2ljX3BhcmFtZXRlcjxULGNoYXJfbmFtZV9wb2xpY3k+IHsKLSAgICB0eXBlZGVmIGJhc2ljX3BhcmFtZXRlcjxULGNoYXJfbmFtZV9wb2xpY3k+IGJhc2U7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3JzCi0gICAgZXhwbGljaXQgICAgY2hhcl9wYXJhbWV0ZXJfdCggY2hhcl90eXBlIG5hbWUgKSA6IGJhc2UoIGNzdHJpbmcoICZuYW1lLCAxICkgKSB7fQotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBzaGFyZWRfcHRyPGNoYXJfcGFyYW1ldGVyX3Q8VD4gPgotY2hhcl9wYXJhbWV0ZXIoIGNoYXJfdHlwZSBuYW1lICkKLXsKLSAgICByZXR1cm4gc2hhcmVkX3B0cjxjaGFyX3BhcmFtZXRlcl90PFQ+ID4oIG5ldyBjaGFyX3BhcmFtZXRlcl90PFQ+KCBuYW1lICkgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotaW5saW5lIHNoYXJlZF9wdHI8Y2hhcl9wYXJhbWV0ZXJfdDxjc3RyaW5nPiA+Ci1jaGFyX3BhcmFtZXRlciggY2hhcl90eXBlIG5hbWUgKQotewotICAgIHJldHVybiBzaGFyZWRfcHRyPGNoYXJfcGFyYW1ldGVyX3Q8Y3N0cmluZz4gPiggbmV3IGNoYXJfcGFyYW1ldGVyX3Q8Y3N0cmluZz4oIG5hbWUgKSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBjbGEKLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZm5kZWYgTkROQk9PU1RfUlRfUEFSQU1fT0ZGTElORQotCi0jICBkZWZpbmUgTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIGlubGluZQotIyAgaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9jaGFyX3BhcmFtZXRlci5pcHA+Ci0KLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfQ0xBX0NIQVJfUEFSQU1FVEVSX0hQUF8wNjI2MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9jaGFyX3BhcmFtZXRlci5pcHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvY2hhcl9wYXJhbWV0ZXIuaXBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYjFkYjYzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9jaGFyX3BhcmFtZXRlci5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBpbXBsZW1lbnRzIG1vZGVsIG9mIHBhcmFtZXRlciB3aXRoIHNpbmdsZSBjaGFyIG5hbWUKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0NMQV9DSEFSX1BBUkFNRVRFUl9JUFBfMDYyOTA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX0NMQV9DSEFSX1BBUkFNRVRFUl9JUFBfMDYyOTA0R0VSCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2NoYXJfcGFyYW1ldGVyLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLW5hbWVzcGFjZSBjbGEgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICBjaGFyX25hbWVfcG9saWN5ICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSAKLWNoYXJfbmFtZV9wb2xpY3k6OmNoYXJfbmFtZV9wb2xpY3koKQotOiBiYXNpY19uYW1pbmdfcG9saWN5KCBydHRpOjp0eXBlX2lkPGNoYXJfbmFtZV9wb2xpY3k+KCkgKQotewotICAgIGFzc2lnbl9vcCggcF9wcmVmaXgudmFsdWUsIE5ETkJPT1NUX1JUX1BBUkFNX0NTVFJJTkdfTElURVJBTCggIi0iICksIDAgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIGJvb2wKLWNoYXJfbmFtZV9wb2xpY3k6OmNvbmZsaWN0X3dpdGgoIGlkZW50aWZpY2F0aW9uX3BvbGljeSBjb25zdCYgaWQgKSBjb25zdAotewotICAgIHJldHVybiBpZC5wX3R5cGVfaWQgPT0gcF90eXBlX2lkICYmIAotICAgICAgICAgICBwX25hbWUgPT0gc3RhdGljX2Nhc3Q8Y2hhcl9uYW1lX3BvbGljeSBjb25zdCY+KCBpZCApLnBfbmFtZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgY2xhCi0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfQ0xBX0NIQVJfUEFSQU1FVEVSX0lQUF8wNjI5MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9kZXRhaWwvYXJndW1lbnRfdmFsdWVfdXNhZ2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2RldGFpbC9hcmd1bWVudF92YWx1ZV91c2FnZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4MDUwYjIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2RldGFpbC9hcmd1bWVudF92YWx1ZV91c2FnZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgUGVybWlzc2lvbiB0byBjb3B5LCB1c2UsIG1vZGlmeSwgc2VsbCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlCi0vLyAgaXMgZ3JhbnRlZCBwcm92aWRlZCB0aGlzIGNvcHlyaWdodCBub3RpY2UgYXBwZWFycyBpbiBhbGwgY29waWVzLgotLy8gIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eSwKLS8vICBhbmQgd2l0aCBubyBjbGFpbSBhcyB0byBpdHMgc3VpdGFiaWxpdHkgZm9yIGFueSBwdXJwb3NlLgotICAKLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIHVwZGF0ZXMsIGRvY3VtZW50YXRpb24sIGFuZCByZXZpc2lvbiBoaXN0b3J5LgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGFyZ3VtZW50IHVzYWdlIHByaW50aW5nIGhlbHBlcnMKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0NMQV9BUkdVTUVOVF9WQUxVRV9VU0FHRV9IUFBfMDYyNjA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX0NMQV9BUkdVTUVOVF9WQUxVRV9VU0FHRV9IUFBfMDYyNjA0R0VSCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9hcmd2X3RyYXZlcnNlci5ocHA+Ci0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvaW8uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9jb21wYXJlLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2xleGljYWxfY2FzdC5ocHA+Ci0KLS8vIFNUTAotLy8gISEgY2FuIHdlIGVsaW1pbmF0ZSB0aGVzZSBpbmNsdWRlcz8KLSNpbmNsdWRlIDxsaXN0PgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotbmFtZXNwYWNlIGNsYSB7Ci0KLW5hbWVzcGFjZSBydF9jbGFfZGV0YWlsIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgIGFyZ3VtZW50X3ZhbHVlX3VzYWdlICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0vLyBnZW5lcmljIGNhc2UKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdm9pZAotYXJndW1lbnRfdmFsdWVfdXNhZ2UoIGZvcm1hdF9zdHJlYW0mIGZzLCBsb25nLCBUKiA9IDAgKQotewotICAgIGZzIDw8IE5ETkJPT1NUX1JUX1BBUkFNX0NTVFJJTkdfTElURVJBTCggIjx2YWx1ZT4iICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vIHNwZWNpYWxpemF0aW9uIGZvciBsaXN0IG9mIHZhbHVlcwotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSB2b2lkCi1hcmd1bWVudF92YWx1ZV91c2FnZSggZm9ybWF0X3N0cmVhbSYgZnMsIGludCwgc3RkOjpsaXN0PFQ+KiA9IDAgKQotewotICAgIGZzIDw8IE5ETkJPT1NUX1JUX1BBUkFNX0NTVFJJTkdfTElURVJBTCggIig8dmFsdWUxPiwgLi4uLCA8dmFsdWVOPikiICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vIHNwZWNpYWxpemF0aW9uIGZvciB0eXBlIGJvb2wKLWlubGluZSB2b2lkCi1hcmd1bWVudF92YWx1ZV91c2FnZSggZm9ybWF0X3N0cmVhbSYgZnMsICBpbnQsIGJvb2wqID0gMCApCi17Ci0gICAgZnMgPDwgTkROQk9PU1RfUlRfUEFSQU1fQ1NUUklOR19MSVRFUkFMKCAieWVzfHl8bm98biIgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgcnRfY2xhX2RldGFpbAotCi19IC8vIG5hbWVzcGFjZSBjbGEKLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9DTEFfQVJHVU1FTlRfVkFMVUVfVVNBR0VfSFBQXzA2MjYwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2R1YWxfbmFtZV9wYXJhbWV0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2R1YWxfbmFtZV9wYXJhbWV0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YzhjMDBkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9kdWFsX25hbWVfcGFyYW1ldGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk2ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGRlZmluZXMgbW9kZWwgb2YgZ2VuZXJpYyBwYXJhbWV0ZXIgd2l0aCBkdWFsIG5hbWluZwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfQ0xBX0RVQUxfTkFNRV9QQVJBTUVURVJfSFBQXzA2MjYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9DTEFfRFVBTF9OQU1FX1BBUkFNRVRFUl9IUFBfMDYyNjA0R0VSCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL25hbWVkX3BhcmFtZXRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9jaGFyX3BhcmFtZXRlci5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgY2xhIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgZHVhbF9uYW1lX3BvbGljeSAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBkdWFsX25hbWVfcG9saWN5IDogcHVibGljIGR1YWxfaWRfcG9saWN5PGR1YWxfbmFtZV9wb2xpY3ksc3RyaW5nX25hbWVfcG9saWN5LGNoYXJfbmFtZV9wb2xpY3k+IHsKLXB1YmxpYzoKLSAgICBkdWFsX25hbWVfcG9saWN5KCk7Ci0KLSAgICAvLyBBY2NlcHQgbW9kaWZpZXIKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNb2RpZmllcj4KLSAgICB2b2lkICAgIGFjY2VwdF9tb2RpZmllciggTW9kaWZpZXIgY29uc3QmIG0gKQotICAgIHsKLSAgICAgICAgaWYoIG0uaGFzKCBwcmVmaXggKSApIHsKLSAgICAgICAgICAgIHNldF9wcmVmaXgoIG1bcHJlZml4XSApOwotICAgICAgICAgICAgbS5lcmFzZSggcHJlZml4ICk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiggbS5oYXMoIG5hbWUgKSApIHsKLSAgICAgICAgICAgIHNldF9uYW1lKCBtW25hbWVdICk7Ci0gICAgICAgICAgICBtLmVyYXNlKCBuYW1lICk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiggbS5oYXMoIHNlcGFyYXRvciApICkgewotICAgICAgICAgICAgc2V0X3NlcGFyYXRvciggbVtzZXBhcmF0b3JdICk7Ci0gICAgICAgICAgICBtLmVyYXNlKCBzZXBhcmF0b3IgKTsKLSAgICAgICAgfQotCi0gICAgICAgIGR1YWxfaWRfcG9saWN5PGR1YWxfbmFtZV9wb2xpY3ksc3RyaW5nX25hbWVfcG9saWN5LGNoYXJfbmFtZV9wb2xpY3k+OjphY2NlcHRfbW9kaWZpZXIoIG0gKTsKLSAgICB9Ci1wcml2YXRlOgotICAgIHZvaWQgICAgc2V0X3ByZWZpeCggY3N0cmluZyApOwotICAgIHZvaWQgICAgc2V0X25hbWUoIGNzdHJpbmcgKTsKLSAgICB2b2lkICAgIHNldF9zZXBhcmF0b3IoIGNzdHJpbmcgKTsKLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICBydW50aW1lOjpjbGE6OmR1YWxfbmFtZV9wYXJhbWV0ZXIgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIGR1YWxfbmFtZV9wYXJhbWV0ZXJfdCA6IHB1YmxpYyBiYXNpY19wYXJhbWV0ZXI8VCxkdWFsX25hbWVfcG9saWN5PiB7Ci0gICAgdHlwZWRlZiBiYXNpY19wYXJhbWV0ZXI8VCxkdWFsX25hbWVfcG9saWN5PiBiYXNlOwotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9ycwotICAgIGV4cGxpY2l0ICAgIGR1YWxfbmFtZV9wYXJhbWV0ZXJfdCggY3N0cmluZyBuYW1lICkgOiBiYXNlKCBuYW1lICkge30KLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX0NMQV9OQU1FRF9QQVJBTV9HRU5FUkFUT1JTKCBkdWFsX25hbWVfcGFyYW1ldGVyICkKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgY2xhCi0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX1BBUkFNX09GRkxJTkUKLQotIyAgZGVmaW5lIE5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSBpbmxpbmUKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvZHVhbF9uYW1lX3BhcmFtZXRlci5pcHA+Ci0KLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfQ0xBX0RVQUxfTkFNRV9QQVJBTUVURVJfSFBQXzA2MjYwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2R1YWxfbmFtZV9wYXJhbWV0ZXIuaXBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2R1YWxfbmFtZV9wYXJhbWV0ZXIuaXBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Y2FmMzg2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9kdWFsX25hbWVfcGFyYW1ldGVyLmlwcAorKysgL2Rldi9udWxsCkBAIC0xLDkwICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGltcGxlbWVudHMgbW9kZWwgb2YgZ2VuZXJpYyBwYXJhbWV0ZXIgd2l0aCBkdWFsIG5hbWluZwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfQ0xBX0RVQUxfTkFNRV9QQVJBTUVURVJfSVBQXzA2MjkwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9DTEFfRFVBTF9OQU1FX1BBUkFNRVRFUl9JUFBfMDYyOTA0R0VSCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL3ZhbGlkYXRpb24uaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9kdWFsX25hbWVfcGFyYW1ldGVyLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLW5hbWVzcGFjZSBjbGEgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICBkdWFsX25hbWVfcG9saWN5ICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSAKLWR1YWxfbmFtZV9wb2xpY3k6OmR1YWxfbmFtZV9wb2xpY3koKQotewotICAgIG1fcHJpbWFyeS5hY2NlcHRfbW9kaWZpZXIoIHByZWZpeCA9IE5ETkJPT1NUX1JUX1BBUkFNX0NTVFJJTkdfTElURVJBTCggIi0tIiApICk7Ci0gICAgbV9zZWNvbmRhcnkuYWNjZXB0X21vZGlmaWVyKCBwcmVmaXggPSBORE5CT09TVF9SVF9QQVJBTV9DU1RSSU5HX0xJVEVSQUwoICItIiApICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEs+Ci1pbmxpbmUgdm9pZAotc3BsaXQoIHN0cmluZ19uYW1lX3BvbGljeSYgc25wLCBjaGFyX25hbWVfcG9saWN5JiBjbnAsIGNzdHJpbmcgc3JjLCBLIGNvbnN0JiBrICkKLXsKLSAgICBjc3RyaW5nOjppdGVyYXRvciBzZXAgPSBzdGQ6OmZpbmQoIHNyYy5iZWdpbigpLCBzcmMuZW5kKCksIE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICd8JyApICk7Ci0gICAgCi0gICAgaWYoIHNlcCAhPSBzcmMuYmVnaW4oKSApCi0gICAgICAgIHNucC5hY2NlcHRfbW9kaWZpZXIoIGsgPSBjc3RyaW5nKCBzcmMuYmVnaW4oKSwgc2VwICkgKTsKLQotICAgIGlmKCBzZXAgIT0gc3JjLmVuZCgpICkKLSAgICAgICAgY25wLmFjY2VwdF9tb2RpZmllciggayA9IGNzdHJpbmcoIHNlcCsxLCBzcmMuZW5kKCkgKSApOwotfQotCi19IC8vIGxvY2FsIG5hbWVzcGFjZQotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgdm9pZAotZHVhbF9uYW1lX3BvbGljeTo6c2V0X3ByZWZpeCggY3N0cmluZyBzcmMgKQotewotICAgIHNwbGl0KCBtX3ByaW1hcnksIG1fc2Vjb25kYXJ5LCBzcmMsIHByZWZpeCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgdm9pZAotZHVhbF9uYW1lX3BvbGljeTo6c2V0X25hbWUoIGNzdHJpbmcgc3JjICkKLXsKLSAgICBzcGxpdCggbV9wcmltYXJ5LCBtX3NlY29uZGFyeSwgc3JjLCBuYW1lICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSB2b2lkCi1kdWFsX25hbWVfcG9saWN5OjpzZXRfc2VwYXJhdG9yKCBjc3RyaW5nIHNyYyApCi17Ci0gICAgc3BsaXQoIG1fcHJpbWFyeSwgbV9zZWNvbmRhcnksIHNyYywgc2VwYXJhdG9yICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIGNsYQotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0NMQV9EVUFMX05BTUVfUEFSQU1FVEVSX0lQUF8wNjI5MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyMjE4MDguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBjbGEgc3Vic3lzdGVtIGZvcndhcmQgZGVjbGFyYXRpb25zCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9DTEFfRldEX0hQUF8wNjI2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfQ0xBX0ZXRF9IUFBfMDYyNjA0R0VSCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc2hhcmVkX3B0ci5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgY2xhIHsKLQotY2xhc3MgcGFyc2VyOwotY2xhc3MgcGFyYW1ldGVyOwotdHlwZWRlZiBzaGFyZWRfcHRyPHBhcmFtZXRlcj4gcGFyYW1ldGVyX3B0cjsKLWNsYXNzIG5hbWluZ19wb2xpY3k7Ci10eXBlZGVmIHNoYXJlZF9wdHI8bmFtaW5nX3BvbGljeT4gbmFtaW5nX3BvbGljeV9wdHI7Ci1jbGFzcyBhcmd2X3RyYXZlcnNlcjsKLQotbmFtZXNwYWNlIHJ0X2NsYV9kZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBjb25zdF9nZW5lcmF0b3I7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyByZWZfZ2VuZXJhdG9yOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBhc3NpZ25lcjsKLQotY2xhc3MgbmFtZWRfcGFyYW1ldGVyX2Jhc2U7Ci1jbGFzcyBwb3NpdGlvbmFsX3BhcmFtZXRlcl9iYXNlOwotCi19IC8vIG5hbWVzcGFjZSBydF9jbGFfZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIGNsYQotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0NMQV9GV0RfSFBQXzA2MjYwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2lkX3BvbGljeS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvaWRfcG9saWN5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmY1ODdiNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvaWRfcG9saWN5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1Nzk5MiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogc29tZSBnZW5lcmljIGlkZW50aWZpY2F0aW9uIHBvbGljaWVzIGRlZmluaXRpb24KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0NMQV9JRF9QT0xJQ1lfSFBQXzA2MjYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9DTEFfSURfUE9MSUNZX0hQUF8wNjI2MDRHRVIKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL21vZGlmaWVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2FyZ3ZfdHJhdmVyc2VyLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvaWZhY2UvaWRfcG9saWN5LmhwcD4KLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvY2xhc3NfcHJvcGVydGllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydHRpLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLW5hbWVzcGFjZSBjbGEgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICBuYW1pbmdfcG9saWN5X2Jhc2UgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyBtb2RlbDogPHByZWZpeD4gPG5hbWU+IDxzZXBhcnRvcj4KLQotY2xhc3MgYmFzaWNfbmFtaW5nX3BvbGljeSA6IHB1YmxpYyBpZGVudGlmaWNhdGlvbl9wb2xpY3kgewotcHVibGljOgotICAgIC8vIFB1YmxpYyBwcm9wZXJ0aWVzCi0gICAgdW5pdF90ZXN0OjpyZWFkd3JpdGVfcHJvcGVydHk8ZHN0cmluZz4gICAgcF9wcmVmaXg7Ci0gICAgdW5pdF90ZXN0OjpyZWFkd3JpdGVfcHJvcGVydHk8ZHN0cmluZz4gICAgcF9uYW1lOwotICAgIHVuaXRfdGVzdDo6cmVhZHdyaXRlX3Byb3BlcnR5PGRzdHJpbmc+ICAgIHBfc2VwYXJhdG9yOwotCi0gICAgLy8gUG9saWN5IGludGVyZmFjZQotICAgIHZpcnR1YWwgYm9vbCAgICByZXNwb25kc190byggY3N0cmluZyBuYW1lICkgY29uc3QgICAgICAgeyByZXR1cm4gcF9uYW1lID09IG5hbWU7IH0KLSAgICB2aXJ0dWFsIGNzdHJpbmcgaWRfMl9yZXBvcnQoKSBjb25zdCAgICAgICAgICAgICAgICAgICAgIHsgcmV0dXJuIHBfbmFtZS5nZXQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCAgICB1c2FnZV9pbmZvKCBmb3JtYXRfc3RyZWFtJiBmcyApIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCAgICBtYXRjaGluZyggcGFyYW1ldGVyIGNvbnN0JiBwLCBhcmd2X3RyYXZlcnNlciYgdHIsIGJvb2wgcHJpbWFyeSApIGNvbnN0OwotCi0gICAgLy8gQWNjZXB0IG1vZGlmaWVyCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTW9kaWZpZXI+Ci0gICAgdm9pZCAgICAgICAgICAgIGFjY2VwdF9tb2RpZmllciggTW9kaWZpZXIgY29uc3QmIG0gKQotICAgIHsKLSAgICAgICAgbmZwOjpvcHRpb25hbGx5X2Fzc2lnbiggcF9wcmVmaXgudmFsdWUsICAgIG0sIHByZWZpeCApOwotICAgICAgICBuZnA6Om9wdGlvbmFsbHlfYXNzaWduKCBwX25hbWUudmFsdWUsICAgICAgbSwgbmFtZSApOwotICAgICAgICBuZnA6Om9wdGlvbmFsbHlfYXNzaWduKCBwX3NlcGFyYXRvci52YWx1ZSwgbSwgc2VwYXJhdG9yICk7Ci0gICAgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgZXhwbGljaXQgYmFzaWNfbmFtaW5nX3BvbGljeSggcnR0aTo6aWRfdCBkeW5fdHlwZSApCi0gICAgOiBpZGVudGlmaWNhdGlvbl9wb2xpY3koIGR5bl90eXBlICkKLSAgICB7fQotICAgIE5ETkJPT1NUX1JUX1BBUkFNX1VOTkVFREVEX1ZJUlRVQUwgfmJhc2ljX25hbWluZ19wb2xpY3koKSB7fQotCi0gICAgLy8gTmFtaW5nIHBvbGljeSBpbnRlcmZhY2UKLSAgICB2aXJ0dWFsIGJvb2wgICAgbWF0Y2hfcHJlZml4KCBhcmd2X3RyYXZlcnNlciYgdHIgKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgICAgbWF0Y2hfbmFtZSggYXJndl90cmF2ZXJzZXImIHRyICkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sICAgIG1hdGNoX3NlcGFyYXRvciggYXJndl90cmF2ZXJzZXImIHRyLCBib29sIG9wdGlvbmFsX3ZhbHVlICkgY29uc3Q7Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgIGR1YWxfaWRfcG9saWN5ICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIE1vc3REZXJpdmVkLHR5cGVuYW1lIFByaW1hcnlJZCx0eXBlbmFtZSBTZWNvbmRJZD4KLWNsYXNzIGR1YWxfaWRfcG9saWN5IDogcHVibGljIGlkZW50aWZpY2F0aW9uX3BvbGljeSB7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBkdWFsX2lkX3BvbGljeSgpCi0gICAgOiBpZGVudGlmaWNhdGlvbl9wb2xpY3koIHJ0dGk6OnR5cGVfaWQ8TW9zdERlcml2ZWQ+KCkgKQotICAgICwgbV9wcmltYXJ5KCkKLSAgICAsIG1fc2Vjb25kYXJ5KCkKLSAgICB7fQotCi0gICAgLy8gUG9saWN5IGludGVyZmFjZQotICAgIHZpcnR1YWwgYm9vbCAgICByZXNwb25kc190byggY3N0cmluZyBuYW1lICkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3ByaW1hcnkucmVzcG9uZHNfdG8oIG5hbWUgKSB8fCBtX3NlY29uZGFyeS5yZXNwb25kc190byggbmFtZSApOwotICAgIH0KLSAgICB2aXJ0dWFsIGJvb2wgICAgY29uZmxpY3Rfd2l0aCggaWRlbnRpZmljYXRpb25fcG9saWN5IGNvbnN0JiBpZF9wICkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBpZF9wLmNvbmZsaWN0X3dpdGgoIG1fcHJpbWFyeSApIHx8IGlkX3AuY29uZmxpY3Rfd2l0aCggbV9zZWNvbmRhcnkgKTsKLSAgICB9Ci0gICAgdmlydHVhbCBjc3RyaW5nIGlkXzJfcmVwb3J0KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3ByaW1hcnkuaWRfMl9yZXBvcnQoKTsKLSAgICB9Ci0gICAgdmlydHVhbCB2b2lkICAgIHVzYWdlX2luZm8oIGZvcm1hdF9zdHJlYW0mIGZzICkgY29uc3QKLSAgICB7Ci0gICAgICAgIGZzIDw8IE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICd7JyApOwotICAgICAgICBtX3ByaW1hcnkudXNhZ2VfaW5mbyggZnMgKTsKLSAgICAgICAgZnMgPDwgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggJ3wnICk7Ci0gICAgICAgIG1fc2Vjb25kYXJ5LnVzYWdlX2luZm8oIGZzICk7Ci0gICAgICAgIGZzIDw8IE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICd9JyApOwotICAgIH0KLSAgICB2aXJ0dWFsIGJvb2wgICAgbWF0Y2hpbmcoIHBhcmFtZXRlciBjb25zdCYgcCwgYXJndl90cmF2ZXJzZXImIHRyLCBib29sIHByaW1hcnkgKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fcHJpbWFyeS5tYXRjaGluZyggcCwgdHIsIHByaW1hcnkgKSB8fCBtX3NlY29uZGFyeS5tYXRjaGluZyggcCwgdHIsIHByaW1hcnkgKTsKLSAgICB9Ci0KLSAgICAvLyBBY2NlcHQgbW9kaWZpZXIKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNb2RpZmllcj4KLSAgICB2b2lkICAgIGFjY2VwdF9tb2RpZmllciggTW9kaWZpZXIgY29uc3QmIG0gKQotICAgIHsKLSAgICAgICAgbV9wcmltYXJ5LmFjY2VwdF9tb2RpZmllciggbSApOwotICAgICAgICBtX3NlY29uZGFyeS5hY2NlcHRfbW9kaWZpZXIoIG0gKTsKLSAgICB9Ci0KLXByb3RlY3RlZDoKLSAgICBORE5CT09TVF9SVF9QQVJBTV9VTk5FRURFRF9WSVJUVUFMIH5kdWFsX2lkX3BvbGljeSgpIHt9Ci0KLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBQcmltYXJ5SWQgICAgICAgbV9wcmltYXJ5OwotICAgIFNlY29uZElkICAgICAgICBtX3NlY29uZGFyeTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGNsYQotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmbmRlZiBORE5CT09TVF9SVF9QQVJBTV9PRkZMSU5FCi0KLSMgIGRlZmluZSBORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgaW5saW5lCi0jICBpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2lkX3BvbGljeS5pcHA+Ci0KLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfQ0xBX0lEX1BPTElDWV9IUFBfMDYyNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvaWRfcG9saWN5LmlwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9pZF9wb2xpY3kuaXBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OWE0NjJkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9pZF9wb2xpY3kuaXBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE4ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IHNvbWUgZ2VuZXJpYyBpZGVudGlmaWNhdGlvbiBwb2xpY2llcyBpbXBsZW1lbnRhdGlvbgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfQ0xBX0lEX1BPTElDWV9JUFBfMDYyOTA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX0NMQV9JRF9QT0xJQ1lfSVBQXzA2MjkwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9pZF9wb2xpY3kuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvcGFyYW1ldGVyLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLW5hbWVzcGFjZSBjbGEgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgIGJhc2ljX25hbWluZ19wb2xpY3kgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSB2b2lkCi1iYXNpY19uYW1pbmdfcG9saWN5Ojp1c2FnZV9pbmZvKCBmb3JtYXRfc3RyZWFtJiBmcyApIGNvbnN0Ci17Ci0gICAgZnMgPDwgcF9wcmVmaXggPDwgcF9uYW1lIDw8IHBfc2VwYXJhdG9yOwotCi0gICAgaWYoIHBfc2VwYXJhdG9yLT5lbXB0eSgpICkKLSAgICAgICAgZnMgPDwgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggJyAnICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSBib29sCi1iYXNpY19uYW1pbmdfcG9saWN5OjptYXRjaF9wcmVmaXgoIGFyZ3ZfdHJhdmVyc2VyJiB0ciApIGNvbnN0Ci17Ci0gICAgaWYoICF0ci5tYXRjaF9mcm9udCggcF9wcmVmaXguZ2V0KCkgKSApCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHRyLnRyaW0oIHBfcHJlZml4LT5zaXplKCkgKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLSAgICAKLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSBib29sCi1iYXNpY19uYW1pbmdfcG9saWN5OjptYXRjaF9uYW1lKCBhcmd2X3RyYXZlcnNlciYgdHIgKSBjb25zdAotewotICAgIGlmKCAhdHIubWF0Y2hfZnJvbnQoIHBfbmFtZS5nZXQoKSApICkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgdHIudHJpbSggcF9uYW1lLT5zaXplKCkgKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLSAgICAKLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSBib29sCi1iYXNpY19uYW1pbmdfcG9saWN5OjptYXRjaF9zZXBhcmF0b3IoIGFyZ3ZfdHJhdmVyc2VyJiB0ciwgYm9vbCBvcHRpb25hbF92YWx1ZSApIGNvbnN0Ci17Ci0gICAgaWYoIHBfc2VwYXJhdG9yLT5lbXB0eSgpICkgewotICAgICAgICBpZiggIXRyLnRva2VuKCkuaXNfZW1wdHkoKSApCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgdHIudHJpbSggMSApOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgaWYoICF0ci5tYXRjaF9mcm9udCggcF9zZXBhcmF0b3IuZ2V0KCkgKSApIHsKLSAgICAgICAgICAgIC8vIGlmIHBhcmFtZXRlciBoYXMgb3B0aW9uYWwgdmFsdWUgc2VwYXJhdG9yIGlzIG9wdGlvbmFsIGFzIHdlbGwKLSAgICAgICAgICAgIGlmKCBvcHRpb25hbF92YWx1ZSAmJiAoIHRyLmVvaSgpIHx8IHRyLm1hdGNoX2Zyb250KCAnICcgKSApICkgewotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgdHIudHJpbSggcF9zZXBhcmF0b3ItPnNpemUoKSApOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgYm9vbAotYmFzaWNfbmFtaW5nX3BvbGljeTo6bWF0Y2hpbmcoIHBhcmFtZXRlciBjb25zdCYgcCwgYXJndl90cmF2ZXJzZXImIHRyLCBib29sICkgY29uc3QKLXsKLSAgICBpZiggIW1hdGNoX3ByZWZpeCggdHIgKSApCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAgaWYoICFtYXRjaF9uYW1lKCB0ciApICkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYoICFtYXRjaF9zZXBhcmF0b3IoIHRyLCBwLnBfb3B0aW9uYWxfdmFsdWUgKSApCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBjbGEKLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9DTEFfSURfUE9MSUNZX0lQUF8wNjI5MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9pZmFjZS9hcmd1bWVudF9mYWN0b3J5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9pZmFjZS9hcmd1bWVudF9mYWN0b3J5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGM5MGJiOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvaWZhY2UvYXJndW1lbnRfZmFjdG9yeS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBkZWZpbmVzIGludGVyZmFjZSBmb3IgYXJndW1lbnRfZmFjdG9yeQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfQ0xBX0lGQUNFX0FSR1VNRU5UX0ZBQ1RPUllfSFBQXzA2MjYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9DTEFfSUZBQ0VfQVJHVU1FTlRfRkFDVE9SWV9IUFBfMDYyNjA0R0VSCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Z3ZC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2Z3ZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgY2xhIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgIGFyZ3VtZW50X2ZhY3RvcnkgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gYW5vdGhlciBuYW1lIGNhbiBiZSBhcmd1bWVudCBwcm9kdWN0aW9uIHBvbGljeQotCi1jbGFzcyBhcmd1bWVudF9mYWN0b3J5IHsKLXB1YmxpYzoKLSAgICAvLyBBcmd1bWVudCBmYWN0b3J5IGludGVyZmFjZQotICAgIHZpcnR1YWwgYXJndW1lbnRfcHRyIHByb2R1Y2VfdXNpbmcoIHBhcmFtZXRlciYgcCwgYXJndl90cmF2ZXJzZXImIHRyICkgPSAwOyAgLy8vIHByb2R1Y2UgYXJndW1lbnQgYmFzZWQgb24gaW5wdXQKLSAgICB2aXJ0dWFsIGFyZ3VtZW50X3B0ciBwcm9kdWNlX3VzaW5nKCBwYXJhbWV0ZXImIHAsIHBhcnNlciBjb25zdCYgKSAgICAgID0gMDsgIC8vLyBwcm9kdWNlIGFyZ3VtZW50IGJhc2VkIG9uIGludGVybmFsIGdlbmVyYXRvciBhbmQvb3IgdmFsdWVzIG9mIG90aGVyIHBhcmFtZXRlcnMKLSAgICB2aXJ0dWFsIHZvaWQgICAgICAgICBhcmd1bWVudF91c2FnZV9pbmZvKCBmb3JtYXRfc3RyZWFtJiBmcyApICAgICAgICAgID0gMDsgIC8vLyBhcmd1bWVudCB2YWx1ZSBmb3JtYXQgaW5mb3JtYXRpb24KLXByb3RlY3RlZDoKLSAgICBORE5CT09TVF9URVNUX1BST1RFQ1RFRF9WSVJUVUFMIH5hcmd1bWVudF9mYWN0b3J5KCkge30KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBjbGEKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0NMQV9JRkFDRV9BUkdVTUVOVF9GQUNUT1JZX0hQUF8wNjI2MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9pZmFjZS9pZF9wb2xpY3kuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2lmYWNlL2lkX3BvbGljeS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2YTBkMGQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2lmYWNlL2lkX3BvbGljeS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1Nzk5MiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZGVmaW5lcyBpbnRlcmZhY2UgZm9yIGlkZW50aWZpY2F0aW9uX3BvbGljeQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfQ0xBX0lGQUNFX0lEX1BPTElDWV9IUFBfMDYyNjA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX0NMQV9JRkFDRV9JRF9QT0xJQ1lfSFBQXzA2MjYwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9md2QuaHBwPgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9jbGFzc19wcm9wZXJ0aWVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J0dGkuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotbmFtZXNwYWNlIGNsYSB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICBpZGVudGlmaWNhdGlvbl9wb2xpY3kgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jICBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQyNDQpCi0jZW5kaWYKLQotY2xhc3MgaWRlbnRpZmljYXRpb25fcG9saWN5IHsKLXB1YmxpYzoKLSAgICAvLyBQdWJsaWMgcHJvcGVydGllcwotICAgIHVuaXRfdGVzdDo6cmVhZHdyaXRlX3Byb3BlcnR5PHJ0dGk6OmlkX3Q+ICAgIHBfdHlwZV9pZDsKLQotICAgIC8vIFBvbGljeSBpbnRlcmZhY2UKLSAgICB2aXJ0dWFsIGJvb2wgICAgcmVzcG9uZHNfdG8oIGNzdHJpbmcgbmFtZSApIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGNzdHJpbmcgaWRfMl9yZXBvcnQoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkICAgIHVzYWdlX2luZm8oIGZvcm1hdF9zdHJlYW0mIGZzICkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCAgICBtYXRjaGluZyggcGFyYW1ldGVyIGNvbnN0JiBwLCBhcmd2X3RyYXZlcnNlciYgdHIsIGJvb2wgcHJpbWFyeSApIGNvbnN0ID0gMDsKLQotICAgIHZpcnR1YWwgYm9vbCAgICBjb25mbGljdF93aXRoKCBpZGVudGlmaWNhdGlvbl9wb2xpY3kgY29uc3QmICkgY29uc3QgPSAwOwotCi1wcm90ZWN0ZWQ6Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBleHBsaWNpdCAgICAgICAgaWRlbnRpZmljYXRpb25fcG9saWN5KCBydHRpOjppZF90IGR5bl90eXBlICkKLSAgICA6IHBfdHlwZV9pZCggZHluX3R5cGUgKQotICAgIHt9Ci0gICAgTkROQk9PU1RfVEVTVF9QUk9URUNURURfVklSVFVBTCB+aWRlbnRpZmljYXRpb25fcG9saWN5KCkge30KLX07Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jICBwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgY2xhCi0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfQ0xBX0lGQUNFX0lEX1BPTElDWV9IUFBfMDYyNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvbW9kaWZpZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL21vZGlmaWVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDkyZTQwMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvbW9kaWZpZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogcGFyYW1ldGVyIG1vZGlmaWVycwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfQ0xBX01PRElGSUVSX0hQUF8wNjI2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfQ0xBX01PRElGSUVSX0hQUF8wNjI2MDRHRVIKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvbmFtZWRfcGFyYW1zLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLW5hbWVzcGFjZSBjbGEgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICBlbnZpcm9ubWVudCB2YXJpYWJsZSBtb2RpZmllcnMgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSB7Ci0KLW5mcDo6dHlwZWRfa2V5d29yZDxib29sLHN0cnVjdCBvcHRpb25hbF90PiAgICAgICAgICAgICAgb3B0aW9uYWxfbTsKLW5mcDo6bmFtZWRfcGFyYW1ldGVyPGJvb2wsb3B0aW9uYWxfdCxib29sPiAgICAgICAgICAgICAgb3B0aW9uYWwoIHRydWUgKTsKLW5mcDo6dHlwZWRfa2V5d29yZDxib29sLHN0cnVjdCByZXF1aXJlZF90PiAgICAgICAgICAgICAgcmVxdWlyZWRfbTsKLW5mcDo6bmFtZWRfcGFyYW1ldGVyPGJvb2wscmVxdWlyZWRfdCxib29sPiAgICAgICAgICAgICAgcmVxdWlyZWQoIHRydWUgKTsKLW5mcDo6dHlwZWRfa2V5d29yZDxib29sLHN0cnVjdCBtdWx0aXBsaWNhYmxlX3Q+ICAgICAgICAgbXVsdGlwbGljYWJsZV9tOwotbmZwOjpuYW1lZF9wYXJhbWV0ZXI8Ym9vbCxtdWx0aXBsaWNhYmxlX3QsYm9vbD4gICAgICAgICBtdWx0aXBsaWNhYmxlKCB0cnVlICk7Ci1uZnA6OnR5cGVkX2tleXdvcmQ8Ym9vbCxzdHJ1Y3QgZ3Vlc3NfbmFtZV90PiAgICAgICAgICAgIGd1ZXNzX25hbWVfbTsKLW5mcDo6bmFtZWRfcGFyYW1ldGVyPGJvb2wsZ3Vlc3NfbmFtZV90LGJvb2w+ICAgICAgICAgICAgZ3Vlc3NfbmFtZSggdHJ1ZSApOwotbmZwOjp0eXBlZF9rZXl3b3JkPGJvb2wsc3RydWN0IGlnbm9yZV9taXNtYXRjaF90PiAgICAgICBpZ25vcmVfbWlzbWF0Y2hfbTsKLW5mcDo6bmFtZWRfcGFyYW1ldGVyPGJvb2wsaWdub3JlX21pc21hdGNoX3QsYm9vbD4gICAgICAgaWdub3JlX21pc21hdGNoKCB0cnVlICk7Ci1uZnA6OnR5cGVkX2tleXdvcmQ8Ym9vbCxzdHJ1Y3Qgb3B0aW9uYWxfdmFsdWVfdD4gICAgICAgIG9wdGlvbmFsX3ZhbHVlX207Ci1uZnA6Om5hbWVkX3BhcmFtZXRlcjxib29sLG9wdGlvbmFsX3ZhbHVlX3QsYm9vbD4gICAgICAgIG9wdGlvbmFsX3ZhbHVlKCB0cnVlICk7Ci0KLW5mcDo6dHlwZWRfa2V5d29yZDxjaGFyX3R5cGUsc3RydWN0IGlucHV0X3NlcGFyYXRvcl90PiAgaW5wdXRfc2VwYXJhdG9yOwotbmZwOjp0eXBlZF9rZXl3b3JkPGNzdHJpbmcsc3RydWN0IHByZWZpeF90PiAgICAgICAgICAgICBwcmVmaXg7Ci1uZnA6OnR5cGVkX2tleXdvcmQ8Y3N0cmluZyxzdHJ1Y3QgbmFtZV90PiAgICAgICAgICAgICAgIG5hbWU7Ci1uZnA6OnR5cGVkX2tleXdvcmQ8Y3N0cmluZyxzdHJ1Y3Qgc2VwYXJhdG9yX3Q+ICAgICAgICAgIHNlcGFyYXRvcjsKLW5mcDo6dHlwZWRfa2V5d29yZDxjc3RyaW5nLHN0cnVjdCBkZXNjcmlwdGlvbl90PiAgICAgICAgZGVzY3JpcHRpb247Ci1uZnA6OnR5cGVkX2tleXdvcmQ8Y3N0cmluZyxzdHJ1Y3QgcmVmZXJfdG9fdD4gICAgICAgICAgIGRlZmF1bHRfcmVmZXJfdG87Ci0KLW5mcDo6a2V5d29yZDxzdHJ1Y3QgZGVmYXVsdF92YWx1ZV90PiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdF92YWx1ZTsKLW5mcDo6a2V5d29yZDxzdHJ1Y3QgaGFuZGxlcl90PiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcjsKLW5mcDo6a2V5d29yZDxzdHJ1Y3QgaW50ZXJwcmV0ZXJfdD4gICAgICAgICAgICAgICAgICAgICAgaW50ZXJwcmV0ZXI7Ci1uZnA6OmtleXdvcmQ8c3RydWN0IGFzc2lnbl90b190PiAgICAgICAgICAgICAgICAgICAgICAgIGFzc2lnbl90bzsKLQotfSAvLyBsb2NhbCBuYW1lc3BhY2UKLQotfSAvLyBuYW1lc3BhY2UgY2xhCi0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfQ0xBX01PRElGSUVSX0hQUF8wNjI2MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9uYW1lZF9wYXJhbWV0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL25hbWVkX3BhcmFtZXRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxNjBmNzkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL25hbWVkX3BhcmFtZXRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MyArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBkZWZpbmVzIG1vZGVsIG9mIG5hbWVkIHBhcmFtZXRlcgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfQ0xBX05BTUVEX1BBUkFNRVRFUl9IUFBfMDYyNjA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX0NMQV9OQU1FRF9QQVJBTUVURVJfSFBQXzA2MjYwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9iYXNpY19wYXJhbWV0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvaWRfcG9saWN5LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLW5hbWVzcGFjZSBjbGEgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgIHN0cmluZ19uYW1lX3BvbGljeSAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIHN0cmluZ19uYW1lX3BvbGljeSA6IHB1YmxpYyBiYXNpY19uYW1pbmdfcG9saWN5IHsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIHN0cmluZ19uYW1lX3BvbGljeSgpOwotICAgIE5ETkJPT1NUX1JUX1BBUkFNX1VOTkVFREVEX1ZJUlRVQUwgfnN0cmluZ19uYW1lX3BvbGljeSgpIHt9Ci0KLSAgICAvLyBwb2xpY3kgaW50ZXJmYWNlCi0gICAgdmlydHVhbCBib29sICAgIHJlc3BvbmRzX3RvKCBjc3RyaW5nIG5hbWUgKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgICAgY29uZmxpY3Rfd2l0aCggaWRlbnRpZmljYXRpb25fcG9saWN5IGNvbnN0JiApIGNvbnN0OwotCi0gICAgLy8gQWNjZXB0IG1vZGlmaWVyCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTW9kaWZpZXI+Ci0gICAgdm9pZCAgICAgICAgICAgIGFjY2VwdF9tb2RpZmllciggTW9kaWZpZXIgY29uc3QmIG0gKQotICAgIHsKLSAgICAgICAgYmFzaWNfbmFtaW5nX3BvbGljeTo6YWNjZXB0X21vZGlmaWVyKCBtICk7Ci0KLSAgICAgICAgaWYoIG0uaGFzKCBndWVzc19uYW1lX20gKSApCi0gICAgICAgICAgICBtX2d1ZXNzX25hbWUgPSB0cnVlOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICAvLyBOYW1pbmcgcG9saWN5IGludGVyZmFjZQotICAgIHZpcnR1YWwgYm9vbCAgICBtYXRjaF9uYW1lKCBhcmd2X3RyYXZlcnNlciYgdHIgKSBjb25zdDsKLQotICAgIC8vIERhdGEgbWVtYmVycwotICAgIGJvb2wgICAgICAgICAgICBtX2d1ZXNzX25hbWU7Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICBydW50aW1lOjpjbGE6Om5hbWVkX3BhcmFtZXRlciAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyBuYW1lZF9wYXJhbWV0ZXJfdCA6IHB1YmxpYyBiYXNpY19wYXJhbWV0ZXI8VCxzdHJpbmdfbmFtZV9wb2xpY3k+IHsKLSAgICB0eXBlZGVmIGJhc2ljX3BhcmFtZXRlcjxULHN0cmluZ19uYW1lX3BvbGljeT4gYmFzZTsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcnMKLSAgICBleHBsaWNpdCAgICBuYW1lZF9wYXJhbWV0ZXJfdCggY3N0cmluZyBuYW1lICkgOiBiYXNlKCBuYW1lICkge30KLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX0NMQV9OQU1FRF9QQVJBTV9HRU5FUkFUT1JTKCBuYW1lZF9wYXJhbWV0ZXIgKQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBjbGEKLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZm5kZWYgTkROQk9PU1RfUlRfUEFSQU1fT0ZGTElORQotCi0jICBkZWZpbmUgTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIGlubGluZQotIyAgaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9uYW1lZF9wYXJhbWV0ZXIuaXBwPgotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0NMQV9OQU1FRF9QQVJBTUVURVJfSFBQXzA2MjYwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL25hbWVkX3BhcmFtZXRlci5pcHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvbmFtZWRfcGFyYW1ldGVyLmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjYyNmVlMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvbmFtZWRfcGFyYW1ldGVyLmlwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyOSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBpbXBsZW1lbnRzIG1vZGVsIG9mIG5hbWVkIHBhcmFtZXRlcgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfQ0xBX05BTUVEX1BBUkFNRVRFUl9JUFBfMDYyOTA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX0NMQV9OQU1FRF9QQVJBTUVURVJfSVBQXzA2MjkwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9uYW1lZF9wYXJhbWV0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvY2hhcl9wYXJhbWV0ZXIuaHBwPgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9hbGdvcml0aG0uaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotbmFtZXNwYWNlIGNsYSB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgc3RyaW5nX25hbWVfcG9saWN5ICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIAotc3RyaW5nX25hbWVfcG9saWN5OjpzdHJpbmdfbmFtZV9wb2xpY3koKQotOiBiYXNpY19uYW1pbmdfcG9saWN5KCBydHRpOjp0eXBlX2lkPHN0cmluZ19uYW1lX3BvbGljeT4oKSApCi0sIG1fZ3Vlc3NfbmFtZSggZmFsc2UgKQotewotICAgIGFzc2lnbl9vcCggcF9wcmVmaXgudmFsdWUsIE5ETkJPT1NUX1JUX1BBUkFNX0NTVFJJTkdfTElURVJBTCggIi0iICksIDAgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIGJvb2wKLXN0cmluZ19uYW1lX3BvbGljeTo6cmVzcG9uZHNfdG8oIGNzdHJpbmcgbmFtZSApIGNvbnN0Ci17Ci0gICAgc3RkOjpwYWlyPGNzdHJpbmc6Oml0ZXJhdG9yLGRzdHJpbmc6OmNvbnN0X2l0ZXJhdG9yPiBtbV9wb3M7Ci0KLSAgICBtbV9wb3MgPSB1bml0X3Rlc3Q6Om1pc21hdGNoKCBuYW1lLmJlZ2luKCksIG5hbWUuZW5kKCksIHBfbmFtZS0+YmVnaW4oKSwgcF9uYW1lLT5lbmQoKSApOwotCi0gICAgcmV0dXJuIG1tX3Bvcy5maXJzdCA9PSBuYW1lLmVuZCgpICYmIChtX2d1ZXNzX25hbWUgfHwgKG1tX3Bvcy5zZWNvbmQgPT0gcF9uYW1lLT5lbmQoKSkgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jICBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQyNDQpCi0jZW5kaWYKLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIGJvb2wKLXN0cmluZ19uYW1lX3BvbGljeTo6Y29uZmxpY3Rfd2l0aCggaWRlbnRpZmljYXRpb25fcG9saWN5IGNvbnN0JiBpZCApIGNvbnN0Ci17Ci0gICAgaWYoIGlkLnBfdHlwZV9pZCA9PSBwX3R5cGVfaWQgKSB7Ci0gICAgICAgIHN0cmluZ19uYW1lX3BvbGljeSBjb25zdCYgc25wID0gc3RhdGljX2Nhc3Q8c3RyaW5nX25hbWVfcG9saWN5IGNvbnN0Jj4oIGlkICk7Ci0KLSAgICAgICAgaWYoIHBfbmFtZS0+ZW1wdHkoKSB8fCBzbnAucF9uYW1lLT5lbXB0eSgpICkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBpZiggcF9wcmVmaXggIT0gc25wLnBfcHJlZml4ICkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBzdGQ6OnBhaXI8ZHN0cmluZzo6Y29uc3RfaXRlcmF0b3IsZHN0cmluZzo6Y29uc3RfaXRlcmF0b3I+IG1tX3BvcyA9Ci0gICAgICAgICAgICB1bml0X3Rlc3Q6Om1pc21hdGNoKCBwX25hbWUtPmJlZ2luKCksIHBfbmFtZS0+ZW5kKCksIHNucC5wX25hbWUtPmJlZ2luKCksIHNucC5wX25hbWUtPmVuZCgpICk7Ci0KLSAgICAgICAgcmV0dXJuIG1tX3Bvcy5maXJzdCAhPSBwX25hbWUtPmJlZ2luKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAgLy8gdGhlcmUgaXMgY29tbW9uIHN1YnN0cmluZwotICAgICAgICAgICAgICAgICgobV9ndWVzc19uYW1lICAgICYmIChtbV9wb3Muc2Vjb25kID09IHNucC5wX25hbWUtPmVuZCgpKSApIHx8ICAvLyB0aGF0IG1hdGNoIG90aGVyIGd1eSBhbmQgSSBhbSBndWVzc2luZwotICAgICAgICAgICAgICAgIChzbnAubV9ndWVzc19uYW1lICYmIChtbV9wb3MuZmlyc3QgID09IHBfbmFtZS0+ZW5kKCkpICkpOyAgICAgICAvLyBvciBtZSBhbmQgdGhlIG90aGVyIGd1eSBpcwotICAgIH0KLSAgICAKLSAgICBpZiggaWQucF90eXBlX2lkID09IHJ0dGk6OnR5cGVfaWQ8Y2hhcl9uYW1lX3BvbGljeT4oKSApIHsKLSAgICAgICAgY2hhcl9uYW1lX3BvbGljeSBjb25zdCYgY25wID0gc3RhdGljX2Nhc3Q8Y2hhcl9uYW1lX3BvbGljeSBjb25zdCY+KCBpZCApOwotCi0gICAgICAgIHJldHVybiBtX2d1ZXNzX25hbWUgICAgICAgICAgICAgICAgICYmIAotICAgICAgICAgICAgICAgKHBfcHJlZml4ID09IGNucC5wX3ByZWZpeCkgICAmJiAKLSAgICAgICAgICAgICAgIHVuaXRfdGVzdDo6Zmlyc3RfY2hhciggY3N0cmluZyggcF9uYW1lICkgKSA9PSB1bml0X3Rlc3Q6OmZpcnN0X2NoYXIoIGNzdHJpbmcoIGNucC5wX25hbWUgKSApOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gZmFsc2U7ICAgIAotfQotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSBib29sCi1zdHJpbmdfbmFtZV9wb2xpY3k6Om1hdGNoX25hbWUoIGFyZ3ZfdHJhdmVyc2VyJiB0ciApIGNvbnN0Ci17Ci0gICAgaWYoICFtX2d1ZXNzX25hbWUgKQotICAgICAgICByZXR1cm4gYmFzaWNfbmFtaW5nX3BvbGljeTo6bWF0Y2hfbmFtZSggdHIgKTsKLQotICAgIGNzdHJpbmcgaW4gPSB0ci5pbnB1dCgpOwotCi0gICAgc3RkOjpwYWlyPGNzdHJpbmc6Oml0ZXJhdG9yLGRzdHJpbmc6OmNvbnN0X2l0ZXJhdG9yPiBtbV9wb3M7Ci0gICAgCi0gICAgbW1fcG9zID0gdW5pdF90ZXN0OjptaXNtYXRjaCggaW4uYmVnaW4oKSwgaW4uZW5kKCksIHBfbmFtZS0+YmVnaW4oKSwgcF9uYW1lLT5lbmQoKSApOwotCi0gICAgaWYoIG1tX3Bvcy5maXJzdCA9PSBpbi5iZWdpbigpICkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgdHIudHJpbSggbW1fcG9zLmZpcnN0IC0gaW4uYmVnaW4oKSApOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIGNsYQotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0NMQV9OQU1FRF9QQVJBTUVURVJfSVBQXzA2MjkwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3BhcmFtZXRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvcGFyYW1ldGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODRkNjBkMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvcGFyYW1ldGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1MCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDgxOTEzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBkZWZpbmVzIG1vZGVsIG9mIGZvcm1hbCBwYXJhbWV0ZXIKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0NMQV9QQVJBTUVURVJfSFBQXzA2MjYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9DTEFfUEFSQU1FVEVSX0hQUF8wNjI2MDRHRVIKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9wYXJhbWV0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS92YWxpZGF0aW9uLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL21vZGlmaWVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2lmYWNlL2FyZ3VtZW50X2ZhY3RvcnkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvaWZhY2UvaWRfcG9saWN5LmhwcD4KLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnR0aS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgY2xhIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgcnVudGltZTo6Y2xhOjpwYXJhbWV0ZXIgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBwYXJhbWV0ZXIgOiBwdWJsaWMgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFOjpwYXJhbWV0ZXIgewotcHVibGljOgotICAgIHBhcmFtZXRlciggaWRlbnRpZmljYXRpb25fcG9saWN5JiBJRCwgYXJndW1lbnRfZmFjdG9yeSYgRiwgYm9vbCBvcHRpb25hbF92YWx1ZSA9IGZhbHNlICkKLSAgICA6IHBfb3B0aW9uYWwoIGZhbHNlICkKLSAgICAsIHBfbXVsdGlwbGljYWJsZSggZmFsc2UgKQotICAgICwgcF9vcHRpb25hbF92YWx1ZSggb3B0aW9uYWxfdmFsdWUgKQotICAgICwgbV9pZF9wb2xpY3koIElEICkKLSAgICAsIG1fYXJnX2ZhY3RvcnkoIEYgKQotICAgIHt9Ci0KLSAgICAvLyBEZXN0cnVjdG9yCi0gICAgdmlydHVhbCAgICAgICAgIH5wYXJhbWV0ZXIoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge30KLQotICAgIHVuaXRfdGVzdDo6cmVhZHdyaXRlX3Byb3BlcnR5PGJvb2w+ICAgICAgcF9vcHRpb25hbDsKLSAgICB1bml0X3Rlc3Q6OnJlYWR3cml0ZV9wcm9wZXJ0eTxib29sPiAgICAgIHBfbXVsdGlwbGljYWJsZTsKLSAgICB1bml0X3Rlc3Q6OnJlYWR3cml0ZV9wcm9wZXJ0eTxib29sPiAgICAgIHBfb3B0aW9uYWxfdmFsdWU7Ci0gICAgdW5pdF90ZXN0OjpyZWFkd3JpdGVfcHJvcGVydHk8ZHN0cmluZz4gICBwX2Rlc2NyaXB0aW9uOwotCi0gICAgLy8gcGFyYW1ldGVyIHByb3BlcnRpZXMgbW9kaWZpY2F0aW9uCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTW9kaWZpZXI+Ci0gICAgdm9pZCAgICAgICAgICAgIGFjY2VwdF9tb2RpZmllciggTW9kaWZpZXIgY29uc3QmIG0gKQotICAgIHsKLSAgICAgICAgaWYoIG0uaGFzKCBvcHRpb25hbF9tICkgKQotICAgICAgICAgICAgcF9vcHRpb25hbC52YWx1ZSA9IHRydWU7Ci0KLSAgICAgICAgaWYoIG0uaGFzKCByZXF1aXJlZF9tICkgKQotICAgICAgICAgICAgcF9vcHRpb25hbC52YWx1ZSA9IGZhbHNlOwotCi0gICAgICAgIGlmKCBtLmhhcyggbXVsdGlwbGljYWJsZV9tICkgKQotICAgICAgICAgICAgcF9tdWx0aXBsaWNhYmxlLnZhbHVlID0gdHJ1ZTsKLQotICAgICAgICBpZiggbS5oYXMoIG9wdGlvbmFsX3ZhbHVlX20gKSApCi0gICAgICAgICAgICBwX29wdGlvbmFsX3ZhbHVlLnZhbHVlID0gdHJ1ZTsKLQotICAgICAgICBuZnA6Om9wdGlvbmFsbHlfYXNzaWduKCBwX2Rlc2NyaXB0aW9uLnZhbHVlLCBtLCBkZXNjcmlwdGlvbiApOwotICAgIH0KLQotICAgIC8vIGFjY2VzcyBtZXRob2RzCi0gICAgYm9vbCAgICAgICAgICAgIGhhc19hcmd1bWVudCgpIGNvbnN0ICAgICAgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gbV9hY3R1YWxfYXJndW1lbnQhPTA7IH0KLSAgICBhcmd1bWVudCBjb25zdCYgYWN0dWFsX2FyZ3VtZW50KCkgY29uc3QgICAgICAgICAgICAgICAgICAgICB7IHJldHVybiAqbV9hY3R1YWxfYXJndW1lbnQ7IH0KLSAgICBhcmd1bWVudF9wdHIgICAgYWN0dWFsX2FyZ3VtZW50KCkgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHJldHVybiBtX2FjdHVhbF9hcmd1bWVudDsgfQotCi0KLSAgICAvLyBpZGVudGlmaWNhdGlvbiBpbnRlcmZhY2UKLSAgICBib29sICAgICAgICAgICAgcmVzcG9uZHNfdG8oIGNzdHJpbmcgbmFtZSApIGNvbnN0ICAgICAgICAgICB7IHJldHVybiBtX2lkX3BvbGljeS5yZXNwb25kc190byggbmFtZSApOyB9Ci0gICAgYm9vbCAgICAgICAgICAgIGNvbmZsaWN0X3dpdGgoIHBhcmFtZXRlciBjb25zdCYgcCApIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gKGlkXzJfcmVwb3J0KCkgPT0gcC5pZF8yX3JlcG9ydCgpICYmICFpZF8yX3JlcG9ydCgpLmlzX2VtcHR5KCkpICB8fAotICAgICAgICAgICAgICAgbV9pZF9wb2xpY3kuY29uZmxpY3Rfd2l0aCggcC5tX2lkX3BvbGljeSApICAgICAgICAgICAgICAgICAgICAgICB8fCAKLSAgICAgICAgICAgICAgICgobV9pZF9wb2xpY3kucF90eXBlX2lkICE9IHAubV9pZF9wb2xpY3kucF90eXBlX2lkKSAmJiBwLm1faWRfcG9saWN5LmNvbmZsaWN0X3dpdGgoIG1faWRfcG9saWN5ICkpOwotICAgIH0KLSAgICBjc3RyaW5nICAgICAgICAgaWRfMl9yZXBvcnQoKSBjb25zdCAgICAgICAgICAgICAgICAgICAgICAgICB7IHJldHVybiBtX2lkX3BvbGljeS5pZF8yX3JlcG9ydCgpOyB9Ci0gICAgdm9pZCAgICAgICAgICAgIHVzYWdlX2luZm8oIGZvcm1hdF9zdHJlYW0mIGZzICkgY29uc3QKLSAgICB7IAotICAgICAgICBtX2lkX3BvbGljeS51c2FnZV9pbmZvKCBmcyApOwotICAgICAgICBpZiggcF9vcHRpb25hbF92YWx1ZSApCi0gICAgICAgICAgICBmcyA8PCBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAnWycgKTsKLQotICAgICAgICBtX2FyZ19mYWN0b3J5LmFyZ3VtZW50X3VzYWdlX2luZm8oIGZzICk7Ci0KLSAgICAgICAgaWYoIHBfb3B0aW9uYWxfdmFsdWUgKQotICAgICAgICAgICAgZnMgPDwgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggJ10nICk7Ci0gICAgfQotCi0gICAgLy8gYXJndW1lbnQgbWF0Y2gvcHJvZHVjZSBiYXNlZCBvbiBpbnB1dAotICAgIGJvb2wgICAgICAgICAgICBtYXRjaGluZyggYXJndl90cmF2ZXJzZXImIHRyLCBib29sIHByaW1hcnkgKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1faWRfcG9saWN5Lm1hdGNoaW5nKCAqdGhpcywgdHIsIHByaW1hcnkgKTsKLSAgICB9Ci0KLSAgICAvLyBhcmd1bWVudCBwcm9kdWN0aW9uIGJhc2VkIG9uIGRpZmZlcmVudCBzb3VyY2UKLSAgICB2b2lkICAgICAgICAgICAgcHJvZHVjZV9hcmd1bWVudCggYXJndl90cmF2ZXJzZXImIHRyICkKLSAgICB7Ci0gICAgICAgIG1faWRfcG9saWN5Lm1hdGNoaW5nKCAqdGhpcywgdHIsIHRydWUgKTsgLy8gISEgY2FuIHdlIHNhdmUgdGhpcyBwb3NpdGlvbiBzb21laG93Ci0gICAgICAgIG1fYWN0dWFsX2FyZ3VtZW50ID0gbV9hcmdfZmFjdG9yeS5wcm9kdWNlX3VzaW5nKCAqdGhpcywgdHIgKTsKLSAgICB9Ci0gICAgdm9pZCAgICAgICAgICAgIHByb2R1Y2VfYXJndW1lbnQoIHBhcnNlciBjb25zdCYgcCApCi0gICAgewotICAgICAgICBtX2FjdHVhbF9hcmd1bWVudCA9IG1fYXJnX2ZhY3RvcnkucHJvZHVjZV91c2luZyggKnRoaXMsIHAgKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgLy9EYXRhIG1lbWJlcnMKLSAgICBpZGVudGlmaWNhdGlvbl9wb2xpY3kmICBtX2lkX3BvbGljeTsKLSAgICBhcmd1bWVudF9mYWN0b3J5JiAgICAgICBtX2FyZ19mYWN0b3J5OwotICAgIGFyZ3VtZW50X3B0ciAgICAgICAgICAgIG1fYWN0dWFsX2FyZ3VtZW50OwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgUGFyYW1ldGVyLHR5cGVuYW1lIE1vZGlmaWVyPgotaW5saW5lIHNoYXJlZF9wdHI8UGFyYW1ldGVyPgotb3BlcmF0b3ItKCBzaGFyZWRfcHRyPFBhcmFtZXRlcj4gcCwgTW9kaWZpZXIgY29uc3QmIG0gKQotewotICAgIHAtPmFjY2VwdF9tb2RpZmllciggbSApOwotCi0gICAgcmV0dXJuIHA7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIGNsYQotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0NMQV9QQVJBTUVURVJfSFBQXzA2MjYwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3BhcnNlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvcGFyc2VyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjMwM2Y2OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvcGFyc2VyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1MyArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU3OTkyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBkZWZpbmVzIHBhcnNlciAtIHB1YmxpYyBpbnRlcmZhY2UgZm9yIENMQSBwYXJzaW5nIGFuZCBhY2Nlc3NpbmcKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0NMQV9QQVJTRVJfSFBQXzA2MjYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9DTEFfUEFSU0VSX0hQUF8wNjI2MDRHRVIKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvYXJndW1lbnQuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvbW9kaWZpZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvYXJndl90cmF2ZXJzZXIuaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L29wdGlvbmFsLmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8bGlzdD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLW5hbWVzcGFjZSBjbGEgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgcnVudGltZTo6Y2xhOjpwYXJzZXIgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSBjbGFfZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kaWZpZXI+Ci1jbGFzcyBnbG9iYWxfbW9kX3BhcnNlciB7Ci1wdWJsaWM6Ci0gICAgZ2xvYmFsX21vZF9wYXJzZXIoIHBhcnNlciYgcCwgTW9kaWZpZXIgY29uc3QmIG0gKQotICAgIDogbV9wYXJzZXIoIHAgKQotICAgICwgbV9tb2RpZmllcnMoIG0gKQotICAgIHt9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQYXJhbT4KLSAgICBnbG9iYWxfbW9kX3BhcnNlciBjb25zdCYKLSAgICBvcGVyYXRvcjw8KCBzaGFyZWRfcHRyPFBhcmFtPiBwYXJhbSApIGNvbnN0Ci0gICAgewotICAgICAgICBwYXJhbS0+YWNjZXB0X21vZGlmaWVyKCBtX21vZGlmaWVycyApOwotCi0gICAgICAgIG1fcGFyc2VyIDw8IHBhcmFtOwotCi0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzOwotICAgIHBhcnNlciYgICAgICAgICAgICAgbV9wYXJzZXI7Ci0gICAgTW9kaWZpZXIgY29uc3QmICAgICBtX21vZGlmaWVyczsKLX07Ci0KLX0KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgIHJ1bnRpbWU6OmNsYTo6cGFyc2VyICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBwYXJzZXIgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjpsaXN0PHBhcmFtZXRlcl9wdHI+Ojpjb25zdF9pdGVyYXRvciBwYXJhbV9pdGVyYXRvcjsKLQotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgZXhwbGljaXQgICAgICAgICAgICBwYXJzZXIoIGNzdHJpbmcgcHJvZ3JhbV9uYW1lID0gY3N0cmluZygpICk7Ci0KLSAgICAvLyBwYXJhbWV0ZXIgbGlzdCBjb25zdHJ1Y3Rpb24gaW50ZXJmYWNlCi0gICAgcGFyc2VyJiAgICAgICAgICAgICBvcGVyYXRvcjw8KCBwYXJhbWV0ZXJfcHRyIHBhcmFtICk7Ci0KLSAgICAvLyBwYXJzZXIgYW5kIGdsb2JhbCBwYXJhbWV0ZXJzIG1vZGlmaWVycwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1vZGlmaWVyPgotICAgIGNsYV9kZXRhaWw6Omdsb2JhbF9tb2RfcGFyc2VyPE1vZGlmaWVyPgotICAgIG9wZXJhdG9yLSggTW9kaWZpZXIgY29uc3QmIG0gKQotICAgIHsKLSAgICAgICAgbmZwOjpvcHRpb25hbGx5X2Fzc2lnbiggbV90cmF2ZXJzZXIucF9zZXBhcmF0b3IudmFsdWUsIG0sIGlucHV0X3NlcGFyYXRvciApOwotICAgICAgICBuZnA6Om9wdGlvbmFsbHlfYXNzaWduKCBtX3RyYXZlcnNlci5wX2lnbm9yZV9taXNtYXRjaC52YWx1ZSwgbSwgaWdub3JlX21pc21hdGNoX20gKTsKLQotICAgICAgICByZXR1cm4gY2xhX2RldGFpbDo6Z2xvYmFsX21vZF9wYXJzZXI8TW9kaWZpZXI+KCAqdGhpcywgbSApOwotICAgIH0KLQotICAgIC8vIGlucHV0IHByb2Nlc3NpbmcgbWV0aG9kCi0gICAgdm9pZCAgICAgICAgICAgICAgICBwYXJzZSggaW50JiBhcmdjLCBjaGFyX3R5cGUqKiBhcmd2ICk7Ci0KLSAgICAvLyBwYXJhbWV0ZXJzIGFjY2VzcwotICAgIHBhcmFtX2l0ZXJhdG9yICAgICAgZmlyc3RfcGFyYW0oKSBjb25zdDsKLSAgICBwYXJhbV9pdGVyYXRvciAgICAgIGxhc3RfcGFyYW0oKSBjb25zdDsKLQotICAgIC8vIGFyZ3VtZW50cyBhY2Nlc3MKLSAgICBjb25zdF9hcmd1bWVudF9wdHIgIG9wZXJhdG9yW10oIGNzdHJpbmcgc3RyaW5nX2lkICkgY29uc3Q7Ci0gICAgY3N0cmluZyAgICAgICAgICAgICBnZXQoIGNzdHJpbmcgc3RyaW5nX2lkICkgY29uc3Q7ICAgIAotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBUIGNvbnN0JiAgICAgICAgICAgIGdldCggY3N0cmluZyBzdHJpbmdfaWQgKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGFyZ192YWx1ZTxUPiggdmFsaWRfYXJndW1lbnQoIHN0cmluZ19pZCApICk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICB2b2lkICAgICAgICAgICAgICAgIGdldCggY3N0cmluZyBzdHJpbmdfaWQsIG5kbmJvb3N0OjpvcHRpb25hbDxUPiYgcmVzICkgY29uc3QKLSAgICB7Ci0gICAgICAgIGNvbnN0X2FyZ3VtZW50X3B0ciBhY3R1YWxfYXJnID0gKCp0aGlzKVtzdHJpbmdfaWRdOwotCi0gICAgICAgIGlmKCBhY3R1YWxfYXJnICkKLSAgICAgICAgICAgIHJlcyA9IGFyZ192YWx1ZTxUPiggKmFjdHVhbF9hcmcgKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzLnJlc2V0KCk7Ci0gICAgfQotCi0gICAgLy8gaGVscC91c2FnZQotICAgIHZvaWQgICAgICAgICAgICAgICAgdXNhZ2UoIG91dF9zdHJlYW0mIG9zdHIgKTsKLSAgICB2b2lkICAgICAgICAgICAgICAgIGhlbHAoICBvdXRfc3RyZWFtJiBvc3RyICk7Ci0KLXByaXZhdGU6Ci0gICAgYXJndW1lbnQgY29uc3QmICAgICB2YWxpZF9hcmd1bWVudCggY3N0cmluZyBzdHJpbmdfaWQgKSBjb25zdDsKLQotICAgIC8vIERhdGEgbWVtYmVycwotICAgIGFyZ3ZfdHJhdmVyc2VyICAgICAgICAgICAgICBtX3RyYXZlcnNlcjsKLSAgICBzdGQ6Omxpc3Q8cGFyYW1ldGVyX3B0cj4gICAgbV9wYXJhbWV0ZXJzOwotICAgIGRzdHJpbmcgICAgICAgICAgICAgICAgICAgICBtX3Byb2dyYW1fbmFtZTsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIGNsYQotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmbmRlZiBORE5CT09TVF9SVF9QQVJBTV9PRkZMSU5FCi0KLSMgIGRlZmluZSBORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgaW5saW5lCi0jICBpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3BhcnNlci5pcHA+Ci0KLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfQ0xBX1BBUlNFUl9IUFBfMDYyNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvcGFyc2VyLmlwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9wYXJzZXIuaXBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTM5NDg1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9wYXJzZXIuaXBwCisrKyAvZGV2L251bGwKQEAgLTEsMjU4ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBpbXBsZW1lbnRzIHBhcnNlciAtIHB1YmxpYyBpbnRlcmZhY2UgZm9yIENMQSBwYXJzaW5nIGFuZCBhY2Nlc3NpbmcKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0NMQV9QQVJTRVJfSVBQXzA2MjkwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9DTEFfUEFSU0VSX0lQUF8wNjI5MDRHRVIKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvdHJhY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9hcmd1bWVudC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2FyZ3ZfdHJhdmVyc2VyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3BhcmFtZXRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9tb2RpZmllci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS92YWxpZGF0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3BhcnNlci5ocHA+Ci0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvaW8uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvZm9yZWFjaC5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbGV4aWNhbF9jYXN0LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLW5hbWVzcGFjZSBjbGEgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgcnVudGltZTo6Y2xhOjpwYXJzZXIgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORQotcGFyc2VyOjpwYXJzZXIoIGNzdHJpbmcgcHJvZ3JhbV9uYW1lICkKLXsKLSAgICBhc3NpZ25fb3AoIG1fcHJvZ3JhbV9uYW1lLCBwcm9ncmFtX25hbWUsIDAgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIHBhcnNlcjo6cGFyYW1faXRlcmF0b3IKLXBhcnNlcjo6Zmlyc3RfcGFyYW0oKSBjb25zdAotewotICAgIHJldHVybiBtX3BhcmFtZXRlcnMuYmVnaW4oKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIHBhcnNlcjo6cGFyYW1faXRlcmF0b3IKLXBhcnNlcjo6bGFzdF9wYXJhbSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGFyYW1ldGVycy5lbmQoKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIGFyZ3VtZW50IGNvbnN0JgotcGFyc2VyOjp2YWxpZF9hcmd1bWVudCggY3N0cmluZyBzdHJpbmdfaWQgKSBjb25zdAotewotICAgIGNvbnN0X2FyZ3VtZW50X3B0ciBhcmcgPSAoKnRoaXMpW3N0cmluZ19pZF07Ci0KLSAgICBORE5CT09TVF9SVF9QQVJBTV9WQUxJREFURV9MT0dJQyggISFhcmcsICJBY3R1YWwgYXJndW1lbnQgZm9yIHBhcmFtZXRlciAiIDw8IHN0cmluZ19pZCA8PCAiIGlzIG5vdCBwcmVzZW50IiApOwotCi0gICAgcmV0dXJuICphcmc7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSBwYXJzZXImCi1wYXJzZXI6Om9wZXJhdG9yPDwoIHBhcmFtZXRlcl9wdHIgbmV3X3BhcmFtICkKLXsKLSAgICBORE5CT09TVF9URVNUX0ZPUkVBQ0goIHBhcmFtZXRlcl9wdHIsIG9sZF9wYXJhbSwgbV9wYXJhbWV0ZXJzICkgewotICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9WQUxJREFURV9MT0dJQyggIW9sZF9wYXJhbS0+Y29uZmxpY3Rfd2l0aCggKm5ld19wYXJhbSApLAotICAgICAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggIkRlZmluaXRpb24gb2YgcGFyYW1ldGVyICIgKSAgICAgICAgICAgICAgICA8PCBuZXdfcGFyYW0tPmlkXzJfcmVwb3J0KCkgPDwgCi0gICAgICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAiIGNvbmZsaWN0cyB3aXRoIGRlZmludGlvbiBvZiBwYXJhbWV0ZXIgIiApIDw8IG9sZF9wYXJhbS0+aWRfMl9yZXBvcnQoKSApOwotICAgIH0KLQotICAgIG1fcGFyYW1ldGVycy5wdXNoX2JhY2soIG5ld19wYXJhbSApOwotCi0gICAgcmV0dXJuICp0aGlzOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgdm9pZAotcGFyc2VyOjpwYXJzZSggaW50JiBhcmdjLCBjaGFyX3R5cGUqKiBhcmd2ICkKLXsKLSAgICBpZiggbV9wcm9ncmFtX25hbWUuZW1wdHkoKSApIHsKLSAgICAgICAgbV9wcm9ncmFtX25hbWUuYXNzaWduKCBhcmd2WzBdICk7Ci0gICAgICAgIGRzdHJpbmc6OnNpemVfdHlwZSBwb3MgPSBtX3Byb2dyYW1fbmFtZS5maW5kX2xhc3Rfb2YoIE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICIvXFwiICkgKTsKLQotICAgICAgICBpZiggcG9zICE9IHN0YXRpY19jYXN0PGRzdHJpbmc6OnNpemVfdHlwZT4oY3N0cmluZzo6bnBvcykgKQotICAgICAgICAgICAgbV9wcm9ncmFtX25hbWUuZXJhc2UoIDAsIHBvcysxICk7Ci0gICAgfQotCi0gICAgbV90cmF2ZXJzZXIuaW5pdCggYXJnYywgYXJndiApOwotCi0gICAgdHJ5IHsKLSAgICAgICAgd2hpbGUoICFtX3RyYXZlcnNlci5lb2koKSApIHsKLSAgICAgICAgICAgIHBhcmFtZXRlcl9wdHIgZm91bmRfcGFyYW07Ci0KLSAgICAgICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX1RSQUNFKCAiVG90YWwgIiA8PCBtX3BhcmFtZXRlcnMuc2l6ZSgpIDw8ICIgcGFyYW1ldGVycyByZWdpc3RlcmVkIiApOwotCi0gICAgICAgICAgICBORE5CT09TVF9URVNUX0ZPUkVBQ0goIHBhcmFtZXRlcl9wdHIgY29uc3QmLCBjdXJyX3BhcmFtLCBtX3BhcmFtZXRlcnMgKSB7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fVFJBQ0UoICJUcnkgcGFyYW1ldGVyICIgPDwgY3Vycl9wYXJhbS0+aWRfMl9yZXBvcnQoKSApOwotCi0gICAgICAgICAgICAgICAgaWYoIGN1cnJfcGFyYW0tPm1hdGNoaW5nKCBtX3RyYXZlcnNlciwgIWZvdW5kX3BhcmFtICkgKSB7Ci0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX1RSQUNFKCAiTWF0Y2ggZm91bmQiICk7Ci0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1JUX0NMQV9WQUxJREFURV9JTlBVVCggIWZvdW5kX3BhcmFtLCAobV90cmF2ZXJzZXIucm9sbGJhY2soKSxtX3RyYXZlcnNlciksICJBbWJpZ3VvdXMgaW5wdXQiICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgZm91bmRfcGFyYW0gPSBjdXJyX3BhcmFtOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIG1fdHJhdmVyc2VyLnJvbGxiYWNrKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmKCAhZm91bmRfcGFyYW0gKSB7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fVFJBQ0UoICJObyBtYXRjaCBmb3VuZCIgKTsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9SVF9DTEFfVkFMSURBVEVfSU5QVVQoIG1fdHJhdmVyc2VyLmhhbmRsZV9taXNtYXRjaCgpLCBtX3RyYXZlcnNlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICJVbmV4cGVjdGVkIGlucHV0IiApICk7Ci0KLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fVFJBQ0UoICJQYXJzZSBhcmd1bWVudCB2YWx1ZSIgKTsKLSAgICAgICAgICAgIGZvdW5kX3BhcmFtLT5wcm9kdWNlX2FyZ3VtZW50KCBtX3RyYXZlcnNlciApOwotCi0gICAgICAgICAgICBtX3RyYXZlcnNlci5jb21taXQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIE5ETkJPT1NUX1RFU1RfRk9SRUFDSCggcGFyYW1ldGVyX3B0ciBjb25zdCYsIGN1cnJfcGFyYW0sIG1fcGFyYW1ldGVycyApIHsKLSAgICAgICAgICAgIGlmKCAhY3Vycl9wYXJhbS0+cF9vcHRpb25hbCAmJiAhY3Vycl9wYXJhbS0+YWN0dWFsX2FyZ3VtZW50KCkgKSB7Ci0gICAgICAgICAgICAgICAgY3Vycl9wYXJhbS0+cHJvZHVjZV9hcmd1bWVudCggKnRoaXMgKTsKLQotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX1ZBTElEQVRFX0xPR0lDKCBjdXJyX3BhcmFtLT5hY3R1YWxfYXJndW1lbnQoKSwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggIlJlcXVpcmVkIGFyZ3VtZW50IGZvciBwYXJhbWV0ZXIgIiApIDw8IGN1cnJfcGFyYW0tPmlkXzJfcmVwb3J0KCkKLSAgICAgICAgICAgICAgICAgICAgICAgIDw8IE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICIgaXMgbWlzc2luZyIgKSApOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIGNhdGNoKCBiYWRfbGV4aWNhbF9jYXN0IGNvbnN0JiApIHsKLSAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fUkVQT1JUX0xPR0lDX0VSUk9SKCAKLSAgICAgICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICJTdHJpbmcgdG8gdmFsdWUgY29udmVydGlvbiBlcnJvciBkdXJpbmcgaW5wdXQgcGFyc2luZyIgKSApOwotICAgIH0KLQotICAgIG1fdHJhdmVyc2VyLnJlbWFpbmRlciggYXJnYywgYXJndiApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgY29uc3RfYXJndW1lbnRfcHRyCi1wYXJzZXI6Om9wZXJhdG9yW10oIGNzdHJpbmcgc3RyaW5nX2lkICkgY29uc3QKLXsKLSAgICBwYXJhbWV0ZXJfcHRyIGZvdW5kX3BhcmFtOwotCi0gICAgTkROQk9PU1RfVEVTVF9GT1JFQUNIKCBwYXJhbWV0ZXJfcHRyIGNvbnN0JiwgY3Vycl9wYXJhbSwgbV9wYXJhbWV0ZXJzICkgewotICAgICAgICBpZiggY3Vycl9wYXJhbS0+cmVzcG9uZHNfdG8oIHN0cmluZ19pZCApICkgewotICAgICAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fVkFMSURBVEVfTE9HSUMoICFmb3VuZF9wYXJhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAiQW1iaWd1b3VzIHBhcmFtZXRlciBzdHJpbmcgaWQ6ICIgKSA8PCBzdHJpbmdfaWQgKTsKLQotICAgICAgICAgICAgZm91bmRfcGFyYW0gPSBjdXJyX3BhcmFtOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGZvdW5kX3BhcmFtID8gZm91bmRfcGFyYW0tPmFjdHVhbF9hcmd1bWVudCgpIDogYXJndW1lbnRfcHRyKCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSBjc3RyaW5nCi1wYXJzZXI6OmdldCggY3N0cmluZyBzdHJpbmdfaWQgKSBjb25zdAotewotICAgIHJldHVybiBnZXQ8Y3N0cmluZz4oIHN0cmluZ19pZCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgdm9pZAotcGFyc2VyOjp1c2FnZSggb3V0X3N0cmVhbSYgb3N0ciApCi17Ci0gICAgaWYoIG1fcHJvZ3JhbV9uYW1lLmVtcHR5KCkgKQotICAgICAgICBhc3NpZ25fb3AoIG1fcHJvZ3JhbV9uYW1lLCBORE5CT09TVF9SVF9QQVJBTV9DU1RSSU5HX0xJVEVSQUwoICI8cHJvZ3JhbT4iICksIDAgKTsKLQotICAgIGZvcm1hdF9zdHJlYW0gZnM7Ci0KLSAgICBmcyA8PCBtX3Byb2dyYW1fbmFtZTsKLQotICAgIE5ETkJPT1NUX1RFU1RfRk9SRUFDSCggcGFyYW1ldGVyX3B0ciBjb25zdCYsIGN1cnJfcGFyYW0sIG1fcGFyYW1ldGVycyApIHsKLSAgICAgICAgZnMgPDwgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggJyAnICk7Ci0KLSAgICAgICAgaWYoIGN1cnJfcGFyYW0tPnBfb3B0aW9uYWwgKQotICAgICAgICAgICAgZnMgPDwgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggJ1snICk7Ci0KLSAgICAgICAgY3Vycl9wYXJhbS0+dXNhZ2VfaW5mbyggZnMgKTsKLQotICAgICAgICBpZiggY3Vycl9wYXJhbS0+cF9vcHRpb25hbCApCi0gICAgICAgICAgICBmcyA8PCBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAnXScgKTsKLQotICAgICAgICBpZiggY3Vycl9wYXJhbS0+cF9tdWx0aXBsaWNhYmxlICkgewotICAgICAgICAgICAgZnMgPDwgTkROQk9PU1RfUlRfUEFSQU1fQ1NUUklOR19MSVRFUkFMKCAiIC4uLiAiICk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmKCBjdXJyX3BhcmFtLT5wX29wdGlvbmFsICkKLSAgICAgICAgICAgICAgICBmcyA8PCBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAnWycgKTsKLQotICAgICAgICAgICAgY3Vycl9wYXJhbS0+dXNhZ2VfaW5mbyggZnMgKTsKLQotICAgICAgICAgICAgaWYoIGN1cnJfcGFyYW0tPnBfb3B0aW9uYWwgKQotICAgICAgICAgICAgICAgIGZzIDw8IE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICddJyApOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgb3N0ciA8PCBORE5CT09TVF9SVF9QQVJBTV9DU1RSSU5HX0xJVEVSQUwoICJVc2FnZTpcbiIgKSA8PCBmcy5zdHIoKSA8PCBzdGQ6OmVuZGw7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSB2b2lkCi1wYXJzZXI6OmhlbHAoIG91dF9zdHJlYW0mIG9zdHIgKQotewotICAgIHVzYWdlKCBvc3RyICk7Ci0KLSAgICBib29sIG5lZWRfd2hlcmUgPSB0cnVlOwotCi0gICAgTkROQk9PU1RfVEVTVF9GT1JFQUNIKCBwYXJhbWV0ZXJfcHRyIGNvbnN0JiwgY3Vycl9wYXJhbSwgbV9wYXJhbWV0ZXJzICkgewotICAgICAgICBpZiggY3Vycl9wYXJhbS0+cF9kZXNjcmlwdGlvbi0+ZW1wdHkoKSApCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiggbmVlZF93aGVyZSApIHsKLSAgICAgICAgICAgIG9zdHIgPDwgTkROQk9PU1RfUlRfUEFSQU1fQ1NUUklOR19MSVRFUkFMKCAid2hlcmU6XG4iICk7Ci0gICAgICAgICAgICBuZWVkX3doZXJlID0gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBvc3RyIDw8IGN1cnJfcGFyYW0tPmlkXzJfcmVwb3J0KCkgPDwgTkROQk9PU1RfUlRfUEFSQU1fQ1NUUklOR19MSVRFUkFMKCAiIC0gIiApIDw8IGN1cnJfcGFyYW0tPnBfZGVzY3JpcHRpb24gPDwgc3RkOjplbmRsOwotICAgIH0KLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgY2xhCi0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfQ0xBX1BBUlNFUl9JUFBfMDYyOTA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvdHlwZWRfcGFyYW1ldGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS90eXBlZF9wYXJhbWV0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NDNkNzU1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS90eXBlZF9wYXJhbWV0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZ2VuZXJpYyB0eXBlZCBwYXJhbWV0ZXIgbW9kZWwKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0NMQV9UWVBFRF9QQVJBTUVURVJfSFBQXzA2MjYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9DTEFfVFlQRURfUEFSQU1FVEVSX0hQUF8wNjI2MDRHRVIKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS92YWxpZGF0aW9uLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvcGFyYW1ldGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2FyZ3VtZW50X2ZhY3RvcnkuaHBwPgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydHRpLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLW5hbWVzcGFjZSBjbGEgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICBydW50aW1lOjpjbGE6OnR5cGVkX3BhcmFtZXRlciAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyB0eXBlZF9wYXJhbWV0ZXIgOiBwdWJsaWMgY2xhOjpwYXJhbWV0ZXIgewotcHVibGljOgotICAgIGV4cGxpY2l0IHR5cGVkX3BhcmFtZXRlciggaWRlbnRpZmljYXRpb25fcG9saWN5JiBJRCApIAotICAgIDogY2xhOjpwYXJhbWV0ZXIoIElELCBtX2FyZ19mYWN0b3J5LCBydHRpOjp0eXBlX2lkPFQ+KCkgPT0gcnR0aTo6dHlwZV9pZDxib29sPigpICkgCi0gICAge30KLQotICAgIC8vIHBhcmFtZXRlciBwcm9wZXJ0aWVzIG1vZGlmaWNhdGlvbgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1vZGlmaWVyPgotICAgIHZvaWQgICAgYWNjZXB0X21vZGlmaWVyKCBNb2RpZmllciBjb25zdCYgbSApCi0gICAgewotICAgICAgICBjbGE6OnBhcmFtZXRlcjo6YWNjZXB0X21vZGlmaWVyKCBtICk7Ci0KLSAgICAgICAgbV9hcmdfZmFjdG9yeS5hY2NlcHRfbW9kaWZpZXIoIG0gKTsKLQotICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9WQUxJREFURV9MT0dJQyggIXBfb3B0aW9uYWwgfHwgIW1fYXJnX2ZhY3RvcnkubV92YWx1ZV9nZW5lcmF0b3IsCi0gICAgICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAiY2FuJ3QgZGVmaW5lIGEgdmFsdWUgZ2VuZXJhdG9yIGZvciBvcHRpb25hbCBwYXJhbWV0ZXIgIiApIDw8IGlkXzJfcmVwb3J0KCkgKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgdHlwZWRfYXJndW1lbnRfZmFjdG9yeTxUPiAgIG1fYXJnX2ZhY3Rvcnk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBjbGEKLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9DTEFfVFlQRURfUEFSQU1FVEVSX0hQUF8wNjI2MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS92YWxpZGF0aW9uLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS92YWxpZGF0aW9uLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDExY2ZiZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvdmFsaWRhdGlvbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBpbnB1dCB2YWxpZGF0aW9uIGhlbHBlcnMgZGVmaW5pdGlvbgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfQ0xBX1ZBTElEQVRJT05fSFBQXzA2MjYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9DTEFfVkFMSURBVElPTl9IUFBfMDYyNjA0R0VSCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2Z3ZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgY2xhIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgIHJ1bnRpbWU6OmNsYTo6cmVwb3J0X2lucHV0X2Vycm9yICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi12b2lkIHJlcG9ydF9pbnB1dF9lcnJvciggYXJndl90cmF2ZXJzZXIgY29uc3QmIHRyLCBmb3JtYXRfc3RyZWFtJiBtc2cgKTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2RlZmluZSBORE5CT09TVF9SVF9DTEFfVkFMSURBVEVfSU5QVVQoIGIsIHRyLCBtc2cgKSBcCi0gICAgaWYoIGIgKSA7IGVsc2UgOjpuZG5ib29zdDo6TkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFOjpjbGE6OnJlcG9ydF9pbnB1dF9lcnJvciggdHIsIGZvcm1hdF9zdHJlYW0oKS5yZWYoKSA8PCBtc2cgKQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBjbGEKLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZm5kZWYgTkROQk9PU1RfUlRfUEFSQU1fT0ZGTElORQotCi0jICBkZWZpbmUgTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIGlubGluZQotIyAgaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS92YWxpZGF0aW9uLmlwcD4KLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9DTEFfVkFMSURBVElPTl9IUFBfMDYyNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvdmFsaWRhdGlvbi5pcHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvdmFsaWRhdGlvbi5pcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhZjkzNzAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3ZhbGlkYXRpb24uaXBwCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogaW5wdXQgdmFsaWRhdGlvbiBoZWxwZXJzIGltcGxlbWVudGF0aW9uCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9DTEFfVkFMSURBVElPTl9JUFBfMDcwNjA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX0NMQV9WQUxJREFUSU9OX0lQUF8wNzA2MDRHRVIKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvYXJndl90cmF2ZXJzZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvdmFsaWRhdGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL3ZhbGlkYXRpb24uaHBwPiAvLyBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0U6OmxvZ2ljX2Vycm9yCi0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2lvLmhwcD4KLQotLy8gU1RMCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgY2xhIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICBydW50aW1lOjpjbGE6OnZhbGlkYXRpb24gICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgdm9pZAotcmVwb3J0X2lucHV0X2Vycm9yKCBhcmd2X3RyYXZlcnNlciBjb25zdCYgdHIsIGZvcm1hdF9zdHJlYW0mIG1zZyApCi17Ci0gICAgaWYoIHRyLmVvaSgpICkKLSAgICAgICAgbXNnIDw8IE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICIgYXQgdGhlIGVuZCBvZiBpbnB1dCIgKTsKLSAgICBlbHNlIHsKLSAgICAgICAgbXNnIDw8IE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICIgaW4gdGhlIGZvbGxvd2luZyBwb3NpdGlvbjogIiApOwotCi0gICAgICAgIGlmKCB0ci5pbnB1dCgpLnNpemUoKSA+IDUgKQotICAgICAgICAgICAgbXNnIDw8IHRyLmlucHV0KCkuc3Vic3RyKCAwLCA1ICkgPDwgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggIi4uLiIgKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbXNnIDw8IHRyLmlucHV0KCk7Ci0gICAgfQotCi0gICAgdGhyb3cgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFOjpsb2dpY19lcnJvciggbXNnLnN0cigpICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIGNsYQotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0NMQV9WQUxJREFUSU9OX0lQUF8wNzA2MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS92YWx1ZV9nZW5lcmF0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3ZhbHVlX2dlbmVyYXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmOTJjMzYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3ZhbHVlX2dlbmVyYXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBzcGVjaWZpYyB2YWx1ZSBnZW5lcmF0b3JzCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9DTEFfVkFMVUVfR0VORVJBVE9SX0hQUF8wNjI2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfQ0xBX1ZBTFVFX0dFTkVSQVRPUl9IUFBfMDYyNjA0R0VSCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9wYXJzZXIuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotbmFtZXNwYWNlIGNsYSB7Ci0KLW5hbWVzcGFjZSBydF9jbGFfZGV0YWlsIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICBydW50aW1lOjpjbGE6OmNvbnN0X2dlbmVyYXRvciAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY2xhc3MgY29uc3RfZ2VuZXJhdG9yIHsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIGV4cGxpY2l0ICAgIGNvbnN0X2dlbmVyYXRvciggVCBjb25zdCYgdCApIDogbV9jb25zdF92YWx1ZSggdCApIHt9Ci0KLSAgICAvLyBnZW5lcmF0b3IgaW50ZXJmYWNlCi0gICAgdm9pZCAgICAgICAgb3BlcmF0b3IoKSggcGFyc2VyIGNvbnN0JiwgbmRuYm9vc3Q6Om9wdGlvbmFsPFQ+JiB0ICkgY29uc3QgICB7IHQgPSBtX2NvbnN0X3ZhbHVlOyB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgVCAgICAgICAgICAgbV9jb25zdF92YWx1ZTsKLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgIHJ1bnRpbWU6OmNsYTo6cmVmX2dlbmVyYXRvciAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIHJlZl9nZW5lcmF0b3IgewotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgZXhwbGljaXQgICAgcmVmX2dlbmVyYXRvciggY3N0cmluZyByZWZfaWQgKSA6IG1fcmVmX2lkKCByZWZfaWQgKSB7fQotCi0gICAgLy8gZ2VuZXJhdG9yIGludGVyZmFjZQotICAgIHZvaWQgICAgICAgIG9wZXJhdG9yKCkoIHBhcnNlciBjb25zdCYgcCwgbmRuYm9vc3Q6Om9wdGlvbmFsPFQ+JiB0ICkgY29uc3QKLSAgICB7Ci0gICAgICAgIHAuZ2V0KCBtX3JlZl9pZCwgdCApOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBjc3RyaW5nICAgICBtX3JlZl9pZDsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHJ0X2NsYV9kZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgY2xhCi0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfQ0xBX1ZBTFVFX0dFTkVSQVRPUl9IUFBfMDYyNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvdmFsdWVfaGFuZGxlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvdmFsdWVfaGFuZGxlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwOTA2MDMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3ZhbHVlX2hhbmRsZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogc3BlY2lmaWMgdmFsdWUgaGFuZGxlcnMKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0NMQV9WQUxVRV9IQU5ETEVSX0hQUF8wNjI2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfQ0xBX1ZBTFVFX0hBTkRMRVJfSFBQXzA2MjYwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9md2QuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotbmFtZXNwYWNlIGNsYSB7Ci0KLW5hbWVzcGFjZSBydF9jbGFfZGV0YWlsIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgcnVudGltZTo6Y2xhOjphc3NpZ25lciAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY2xhc3MgYXNzaWduZXIgewotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgZXhwbGljaXQgICAgYXNzaWduZXIoIFQmIGxvYyApIDogbV90YXJnZXQoIGxvYyApICAgIHt9Ci0KLSAgICAvLyB2YWx1ZSBoYW5kbGVyIGltcGxlbWVudGF0aW9uCi0gICAgdm9pZCAgICAgICAgb3BlcmF0b3IoKSggcGFyYW1ldGVyIGNvbnN0JiwgVCYgdCApICB7IG1fdGFyZ2V0ID0gdDsgfQotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIFQmICAgICAgICAgIG1fdGFyZ2V0OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgcnRfY2xhX2RldGFpbAotCi19IC8vIG5hbWVzcGFjZSBjbGEKLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9DTEFfVkFMVUVfSEFORExFUl9IUFBfMDYyNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjVmOGYxNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTU2ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1Nzk5MiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogUnVudGltZS5QYXJhbSBsaWJyYXJ5IGNvbmZpZ3VyYXRpb24KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0NPTkZJR19IUFBfMDYyNjA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX0NPTkZJR19IUFBfMDYyNjA0R0VSCi0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ1MTEpIC8vIGNvcHkgY29uc3RydWN0b3IgY291bGQgbm90IGJlIGdlbmVyYXRlZAotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NTEyKSAvLyBhc3NpZ25tZW50IG9wZXJhdG9yIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQKLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDE4MSkgLy8gcXVhbGlmaWVyIGFwcGxpZWQgdG8gcmVmZXJlbmNlIHR5cGU7IGlnbm9yZWQKLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDY3NSkgLy8gcmVzb2x2ZWQgb3ZlcmxvYWQgd2FzIGZvdW5kIGJ5IGFyZ3VtZW50LWRlcGVuZGVudCBsb29rdXAKLSNlbmRpZgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvYmFzaWNfY3N0cmluZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy93cmFwX3N0cmluZ3N0cmVhbS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2lvLmhwcD4gLy8gb3BlcmF0b3I8PChuZG5ib29zdDo6cnVudGltZTo6Y3N0cmluZykKLQotLy8gU1RMCi0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPGNzdGRsaWI+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfUEFSQU1fQ1VTVE9NX1NUUklORwotIyAgaWZuZGVmIE5ETkJPT1NUX1JUX1BBUkFNX1dJREVfU1RSSU5HCi0jICAgIGRlZmluZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVudGltZQotIyAgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZGVfcnVudGltZQotIyAgZW5kaWYKLSNlbmRpZgotCi0jaWZkZWYgX19TVU5QUk9fQ0MKLWV4dGVybiBpbnQgcHV0ZW52KGNoYXIqKTsKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotI2lmbmRlZiBORE5CT09TVF9SVF9QQVJBTV9DVVNUT01fU1RSSU5HCi0jICBpZm5kZWYgTkROQk9PU1RfUlRfUEFSQU1fV0lERV9TVFJJTkcKLQotdHlwZWRlZiBjaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJfdHlwZTsKLXR5cGVkZWYgc3RkOjpzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3RyaW5nOwotdHlwZWRlZiB1bml0X3Rlc3Q6OmNvbnN0X3N0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzdHJpbmc7Ci10eXBlZGVmIHVuaXRfdGVzdDo6bGl0ZXJhbF9zdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGl0ZXJhbF9jc3RyaW5nOwotdHlwZWRlZiB3cmFwX3N0cmluZ3N0cmVhbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9zdHJlYW07Ci0KLSNpZmRlZiBORE5CT09TVF9DTEFTU0lDX0lPU1RSRUFNUwotdHlwZWRlZiBzdGQ6Om9zdHJlYW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dF9zdHJlYW07Ci0jZWxzZQotdHlwZWRlZiBzdGQ6OmJhc2ljX29zdHJlYW08Y2hhcl90eXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dF9zdHJlYW07Ci0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDk5NikgLy8gcHV0ZW52Ci0jZW5kaWYKLQotI2lmbmRlZiBVTkRFUl9DRQotI2lmIGRlZmluZWQoX19DT01PX18pICYmIDAKLWlubGluZSB2b2lkCi1wdXRlbnZfaW1wbCggY3N0cmluZyBuYW1lLCBjc3RyaW5nIHZhbHVlICkKLXsKLSAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgIC8vICEhIHRoaXMgbWF5IGFjdHVhbGx5IGZhaWwuIFdoYXQgc2hvdWxkIHdlIGRvPwotICAgIHNldGVudiggbmFtZS5iZWdpbigpLCB2YWx1ZS5iZWdpbigpLCAxICk7Ci19Ci0jZWxzZQotaW5saW5lIHZvaWQKLXB1dGVudl9pbXBsKCBjc3RyaW5nIG5hbWUsIGNzdHJpbmcgdmFsdWUgKQotewotICAgIGZvcm1hdF9zdHJlYW0gZnM7Ci0KLSAgICBmcyA8PCBuYW1lIDw8ICc9JyA8PCB2YWx1ZTsKLQotICAgIC8vICEhIHRoaXMgbWF5IGFjdHVhbGx5IGZhaWwuIFdoYXQgc2hvdWxkIHdlIGRvPwotICAgIC8vIGNvbnN0X2Nhc3QgaXMgdXNlZCB0byBzYXRpc2Z5IHB1dGVudiBpbnRlcmZhY2UKLSAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgIHB1dGVudiggY29uc3RfY2FzdDxjaGFyKj4oIGZzLnN0cigpLmNfc3RyKCkgKSApOwotfQotI2VuZGlmCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMgCi0jcHJhZ21hIHdhcm5pbmcocG9wKSAKLSNlbmRpZiAKLQotI2RlZmluZSBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCBsICkgbAotI2RlZmluZSBORE5CT09TVF9SVF9QQVJBTV9DU1RSSU5HX0xJVEVSQUwoIGwgKSBjc3RyaW5nKCBsLCBzaXplb2YoIGwgKSAtIDEgKQotI2RlZmluZSBORE5CT09TVF9SVF9QQVJBTV9HRVRFTlYgZ2V0ZW52Ci0jZGVmaW5lIE5ETkJPT1NUX1JUX1BBUkFNX1BVVEVOViA6Om5kbmJvb3N0OjpORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0U6OnB1dGVudl9pbXBsCi0jZGVmaW5lIE5ETkJPT1NUX1JUX1BBUkFNX0VYQ0VQVElPTl9JTkhFUklUX1NURAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jICBlbHNlCi0KLXR5cGVkZWYgd2NoYXJfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyX3R5cGU7Ci10eXBlZGVmIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJfdHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0cmluZzsKLXR5cGVkZWYgdW5pdF90ZXN0OjpiYXNpY19jc3RyaW5nPHdjaGFyX3QgY29uc3Q+ICAgICAgICAgICAgICAgICBjc3RyaW5nOwotdHlwZWRlZiBjb25zdCB1bml0X3Rlc3Q6OmJhc2ljX2NzdHJpbmc8d2NoYXJfdCBjb25zdD4gICAgICAgICAgIGxpdGVyYWxfY3N0cmluZzsKLXR5cGVkZWYgd3JhcF93c3RyaW5nc3RyZWFtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRfc3RyZWFtOwotdHlwZWRlZiBzdGQ6Ondvc3RyZWFtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dF9zdHJlYW07Ci0KLSNpZm5kZWYgVU5ERVJfQ0UKLWlubGluZSB2b2lkCi1wdXRlbnZfaW1wbCggY3N0cmluZyBuYW1lLCBjc3RyaW5nIHZhbHVlICkKLXsKLSAgICBmb3JtYXRfc3RyZWFtIGZzOwotCi0gICAgZnMgPDwgbmFtZSA8PCAnPScgPDwgdmFsdWU7Ci0KLSAgICAvLyAhISB0aGlzIG1heSBhY3R1YWxseSBmYWlsLiBXaGF0IHNob3VsZCB3ZSBkbz8KLSAgICAvLyBjb25zdF9jYXN0IGlzIHVzZWQgdG8gc2F0aXNmeSBwdXRlbnYgaW50ZXJmYWNlCi0gICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICB3cHV0ZW52KCBjb25zdF9jYXN0PHdjaGFyX3QqPiggZnMuc3RyKCkuY19zdHIoKSApICk7Ci19Ci0jZW5kaWYKLQotI2RlZmluZSBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCBsICkgTCAjIyBsCi0jZGVmaW5lIE5ETkJPT1NUX1JUX1BBUkFNX0NTVFJJTkdfTElURVJBTCggbCApIGNzdHJpbmcoIEwgIyMgbCwgc2l6ZW9mKCBMICMjIGwgKS9zaXplb2Yod2NoYXJfdCkgLSAxICkKLSNkZWZpbmUgTkROQk9PU1RfUlRfUEFSQU1fR0VURU5WIHdnZXRlbnYKLSNkZWZpbmUgTkROQk9PU1RfUlRfUEFSQU1fUFVURU5WIHB1dGVudl9pbXBsCi0KLSMgIGVuZGlmCi0jZW5kaWYKLQotI2lmZGVmIF9fR05VQ19fCi0jZGVmaW5lIE5ETkJPT1NUX1JUX1BBUkFNX1VOTkVFREVEX1ZJUlRVQUwgdmlydHVhbAotI2Vsc2UKLSNkZWZpbmUgTkROQk9PU1RfUlRfUEFSQU1fVU5ORUVERURfVklSVFVBTAotI2VuZGlmCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfQ09ORklHX0hQUF8wNjI2MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Vudi9lbnZpcm9ubWVudC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9lbnYvZW52aXJvbm1lbnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjM0ZmFjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Vudi9lbnZpcm9ubWVudC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNzIgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBkZWZpbmVzIGFuZCBpbXBsZW1lbnRzIGlubGluZSBtb2RlbCBvZiBwcm9ncmFtIGVudmlyb25tZW50IAotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfRU5WX0VOVklST05NRU5UX0hQUF8wNjI2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfRU5WX0VOVklST05NRU5UX0hQUF8wNjI2MDRHRVIKLQotI2lmZGVmIFVOREVSX0NFCi0jZXJyb3IgV2luZG93cyBDRSBkb2VzIG5vdCBzdXBwb3J0IGVudmlyb25tZW50IHZhcmlhYmxlcy4KLSNlbmRpZgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9hcmd1bWVudC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2ludGVycHJldF9hcmd1bWVudF92YWx1ZS5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZW52L2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Vudi9tb2RpZmllci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Vudi92YXJpYWJsZS5ocHA+Ci0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2NhbGxiYWNrLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9vcHRpb25hbC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICBydW50aW1lOjplbnZpcm9ubWVudCBpbXBsZW1lbnRhdGlvbiAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSBlbnZpcm9ubWVudCB7Ci0KLW5hbWVzcGFjZSBydF9lbnZfZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgTW9kaWZpZXJzPgotdmFyaWFibGVfZGF0YSYKLWluaXRfbmV3X3ZhciggY3N0cmluZyB2YXJfbmFtZSwgTW9kaWZpZXJzIG0gPSBuZnA6Om5vX3BhcmFtcyApCi17Ci0gICAgcnRfZW52X2RldGFpbDo6dmFyaWFibGVfZGF0YSYgbmV3X3ZkID0gbmV3X3Zhcl9yZWNvcmQoIHZhcl9uYW1lICk7Ci0KLSAgICBjc3RyaW5nIHN0cl92YWx1ZSA9IHN5c19yZWFkX3ZhciggbmV3X3ZkLm1fdmFyX25hbWUgKTsKLQotICAgIGlmKCAhc3RyX3ZhbHVlLmlzX2VtcHR5KCkgKSB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBuZG5ib29zdDo6b3B0aW9uYWw8VD4gdmFsdWU7Ci0KLSAgICAgICAgICAgIGlmKCBtLmhhcyggaW50ZXJwcmV0ZXIgKSApCi0gICAgICAgICAgICAgICAgbVtpbnRlcnByZXRlcl0oIHN0cl92YWx1ZSwgdmFsdWUgKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBpbnRlcnByZXRfYXJndW1lbnRfdmFsdWUoIHN0cl92YWx1ZSwgdmFsdWUsIDAgKTsKLQotICAgICAgICAgICAgaWYoICEhdmFsdWUgKSB7Ci0gICAgICAgICAgICAgICAgbmV3X3ZkLm1fdmFsdWUucmVzZXQoIG5ldyB0eXBlZF9hcmd1bWVudDxUPiggbmV3X3ZkICkgKTsKLQotICAgICAgICAgICAgICAgIGFyZ192YWx1ZTxUPiggKm5ld192ZC5tX3ZhbHVlICkgPSAqdmFsdWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2F0Y2goIC4uLiApIHsgLy8gISEgY291bGQgd2UgZG8gdGhhdAotICAgICAgICAgICAgLy8gISEgc2hvdWxkIHdlIHJlcG9ydCBhbiBlcnJvcj8KLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmKCAhbmV3X3ZkLm1fdmFsdWUgJiYgbS5oYXMoIGRlZmF1bHRfdmFsdWUgKSApIHsKLSAgICAgICAgbmV3X3ZkLm1fdmFsdWUucmVzZXQoIG5ldyB0eXBlZF9hcmd1bWVudDxUPiggbmV3X3ZkICkgKTsKLQotICAgICAgICBuZnA6Om9wdGlvbmFsbHlfYXNzaWduKCBhcmdfdmFsdWU8VD4oICpuZXdfdmQubV92YWx1ZSApLCBtW2RlZmF1bHRfdmFsdWVdICk7Ci0gICAgfQotCi0gICAgbmZwOjpvcHRpb25hbGx5X2Fzc2lnbiggbmV3X3ZkLm1fZ2xvYmFsX2lkLCBtLCBnbG9iYWxfaWQgKTsKLQotICAgIHJldHVybiBuZXdfdmQ7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHJ0X2Vudl9kZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgZW52aXJvbm1lbnQKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgIHJ1bnRpbWU6OmVudmlyb25tZW50ICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgZW52aXJvbm1lbnQgewotCi0gICAgLy8gdmFyaWFibGUgYWNjZXNzCi0gICAgdmFyaWFibGVfYmFzZQotICAgIHZhciggY3N0cmluZyB2YXJfbmFtZSApOwotCi0gICAgLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgdmFyaWFibGU8VD4KLSAgICB2YXIoIGNzdHJpbmcgdmFyX25hbWUgKQotICAgIHsKLSAgICAgICAgcnRfZW52X2RldGFpbDo6dmFyaWFibGVfZGF0YSogdmQgPSBydF9lbnZfZGV0YWlsOjpmaW5kX3Zhcl9yZWNvcmQoIHZhcl9uYW1lICk7Ci0KLSAgICAgICAgcmV0dXJuIGVudmlyb25tZW50Ojp2YXJpYWJsZTxUPiggIXZkID8gcnRfZW52X2RldGFpbDo6aW5pdF9uZXdfdmFyPFQ+KCB2YXJfbmFtZSwgbmZwOjpub19wYXJhbXMgKSA6ICp2ZCApOwotICAgIH0KLQotICAgIC8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIE1vZGlmaWVycz4KLSAgICBpbmxpbmUgdmFyaWFibGU8VD4KLSAgICB2YXIoIGNzdHJpbmcgdmFyX25hbWUsIE1vZGlmaWVycyBjb25zdCYgbSApCi0gICAgewotICAgICAgICBydF9lbnZfZGV0YWlsOjp2YXJpYWJsZV9kYXRhKiB2ZCA9IHJ0X2Vudl9kZXRhaWw6OmZpbmRfdmFyX3JlY29yZCggdmFyX25hbWUgKTsKLQotICAgICAgICByZXR1cm4gZW52aXJvbm1lbnQ6OnZhcmlhYmxlPFQ+KCAhdmQgPyBydF9lbnZfZGV0YWlsOjppbml0X25ld192YXI8VD4oIHZhcl9uYW1lLCBtICkgOiAqdmQgKTsKLSAgICB9Ci0KLSAgICAvL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSAgICAvLyBkaXJlY3QgdmFyaWFibGUgdmFsdWUgYWNjZXNzCi0gICAgaW5saW5lIGNzdHJpbmcKLSAgICBnZXQoIGNzdHJpbmcgdmFyX25hbWUgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVudmlyb25tZW50Ojp2YXI8Y3N0cmluZz4oIHZhcl9uYW1lICkudmFsdWUoKTsKLSAgICB9Ci0KLSAgICAvL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGlubGluZSBUIGNvbnN0JgotICAgIGdldCggY3N0cmluZyB2YXJfbmFtZSApCi0gICAgewotICAgICAgICByZXR1cm4gZW52aXJvbm1lbnQ6OnZhcjxUPiggdmFyX25hbWUgKS52YWx1ZSgpOwotICAgIH0KLQotICAgIC8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIHZvaWQKLSAgICBnZXQoIGNzdHJpbmcgdmFyX25hbWUsIG5kbmJvb3N0OjpvcHRpb25hbDxUPiYgcmVzICkKLSAgICB7Ci0gICAgICAgIHZhcmlhYmxlPFQ+IGNvbnN0JiB2ID0gZW52aXJvbm1lbnQ6OnZhcjxUPiggdmFyX25hbWUgKTsKLSAgICAgICAgdi52YWx1ZSggcmVzICk7Ci0gICAgfQotCi0gICAgLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBlbnZpcm9ubWVudAotCi1uYW1lc3BhY2UgZW52ID0gZW52aXJvbm1lbnQ7Ci0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX1BBUkFNX09GRkxJTkUKLQotI2RlZmluZSBORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgaW5saW5lCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Vudi9lbnZpcm9ubWVudC5pcHA+Ci0KLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfRU5WX0VOVklST05NRU5UX0hQUF8wNjI2MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Vudi9lbnZpcm9ubWVudC5pcHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9lbnYvZW52aXJvbm1lbnQuaXBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZGQ3OGY5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Vudi9lbnZpcm9ubWVudC5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjUgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU3OTkyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBpbXBsZW1lbnRzIG1vZGVsIG9mIHByb2dyYW0gZW52aXJvbm1lbnQgCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9FTlZfRU5WSVJPTk1FTlRfSVBQXzA2MjkwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9FTlZfRU5WSVJPTk1FTlRfSVBQXzA2MjkwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS92YWxpZGF0aW9uLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9lbnYvdmFyaWFibGUuaHBwPgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2NvbXBhcmUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9pby5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPG1hcD4KLSNpbmNsdWRlIDxsaXN0PgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotbmFtZXNwYWNlIGVudmlyb25tZW50IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgIHJ1bnRpbWU6OmVudmlyb25tZW50ICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgcnRfZW52X2RldGFpbCB7Ci0KLXR5cGVkZWYgc3RkOjptYXA8Y3N0cmluZyxydF9lbnZfZGV0YWlsOjp2YXJpYWJsZV9kYXRhPiByZWdpc3RyeTsKLXR5cGVkZWYgc3RkOjpsaXN0PGRzdHJpbmc+IGtleXM7Ci0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSByZWdpc3RyeSYgc19yZWdpc3RyeSgpICAgIHsgc3RhdGljIHJlZ2lzdHJ5IGluc3RhbmNlOyByZXR1cm4gaW5zdGFuY2U7IH0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSBrZXlzJiAgICAgc19rZXlzKCkgICAgICAgIHsgc3RhdGljIGtleXMgaW5zdGFuY2U7IHJldHVybiBpbnN0YW5jZTsgfQotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgdmFyaWFibGVfZGF0YSYKLW5ld192YXJfcmVjb3JkKCBjc3RyaW5nIHZhcl9uYW1lICkKLXsKLSAgICAvLyBzYXZlIHRoZSBuYW1lIGluIGxpc3Qgb2Yga2V5cwotICAgIHNfa2V5cygpLnB1c2hfYmFjayggZHN0cmluZygpICk7Ci0gICAgZHN0cmluZyYga2V5ID0gc19rZXlzKCkuYmFjaygpOwotICAgIGFzc2lnbl9vcCgga2V5LCB2YXJfbmFtZSwgMCApOwotCi0gICAgLy8gY3JlYXRlIGFuZCByZXR1cm4gbmV3IHJlY29yZAotICAgIHZhcmlhYmxlX2RhdGEmIG5ld192YXJfZGF0YSA9IHNfcmVnaXN0cnkoKVtrZXldOwotICAgIAotICAgIG5ld192YXJfZGF0YS5tX3Zhcl9uYW1lID0ga2V5OwotICAgIAotICAgIHJldHVybiBuZXdfdmFyX2RhdGE7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSB2YXJpYWJsZV9kYXRhKgotZmluZF92YXJfcmVjb3JkKCBjc3RyaW5nIHZhcl9uYW1lICkKLXsKLSAgICByZWdpc3RyeTo6aXRlcmF0b3IgaXQgPSBzX3JlZ2lzdHJ5KCkuZmluZCggdmFyX25hbWUgKTsKLQotICAgIHJldHVybiBpdCA9PSBzX3JlZ2lzdHJ5KCkuZW5kKCkgPyAwIDogJihpdC0+c2Vjb25kKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMgCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkgCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0OTk2KSAvLyBnZXRlbnYKLSNlbmRpZgotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgY3N0cmluZwotc3lzX3JlYWRfdmFyKCBjc3RyaW5nIHZhcl9uYW1lICkKLXsKLSAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgIHJldHVybiBORE5CT09TVF9SVF9QQVJBTV9HRVRFTlYoIHZhcl9uYW1lLmJlZ2luKCkgKTsKLX0KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMgCi0jcHJhZ21hIHdhcm5pbmcocG9wKSAKLSNlbmRpZgotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIHZvaWQKLXN5c193cml0ZV92YXIoIGNzdHJpbmcgdmFyX25hbWUsIGZvcm1hdF9zdHJlYW0mIHZhcl92YWx1ZSApCi17Ci0gICAgTkROQk9PU1RfUlRfUEFSQU1fUFVURU5WKCB2YXJfbmFtZSwgY3N0cmluZyggdmFyX3ZhbHVlLnN0cigpICkgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgcnRfZW52X2RldGFpbAotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgdmFyaWFibGVfYmFzZQotdmFyKCBjc3RyaW5nIHZhcl9uYW1lICkKLXsKLSAgICBydF9lbnZfZGV0YWlsOjp2YXJpYWJsZV9kYXRhKiB2ZCA9IHJ0X2Vudl9kZXRhaWw6OmZpbmRfdmFyX3JlY29yZCggdmFyX25hbWUgKTsKLQotICAgIE5ETkJPT1NUX1JUX1BBUkFNX1ZBTElEQVRFX0xPR0lDKCAhIXZkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAiRmlyc3QgYWNjZXNzIHRvIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSAiICkgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgdmFyX25hbWUgPDwgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggIiBzaG91bGQgYmUgdHlwZWQiICkgKTsKLQotICAgIHJldHVybiB2YXJpYWJsZV9iYXNlKCAqdmQgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgZW52aXJvbm1lbnQKLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9FTlZfRU5WSVJPTk1FTlRfSVBQXzA2MjkwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZW52L2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9lbnYvZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTA3MjFmYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9lbnYvZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZW52aXJvbm1lbnQgc3Vic3lzdGVtIGZvcndhcmQgZGVjbGFyYXRpb25zCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9FTlZfRldEX0hQUF8wNjI2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfRU5WX0ZXRF9IUFBfMDYyNjA0R0VSCi0KLSNpZmRlZiBVTkRFUl9DRQotI2Vycm9yIFdpbmRvd3MgQ0UgZG9lcyBub3Qgc3VwcG9ydCBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCi0jZW5kaWYKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLW5hbWVzcGFjZSBlbnZpcm9ubWVudCB7Ci0KLWNsYXNzIHZhcmlhYmxlX2Jhc2U7Ci12YXJpYWJsZV9iYXNlIHZhciggY3N0cmluZyB2YXJfbmFtZSApOwotCi1uYW1lc3BhY2UgcnRfZW52X2RldGFpbCB7Ci0KLXN0cnVjdCB2YXJpYWJsZV9kYXRhOwotCi12YXJpYWJsZV9kYXRhJiAgbmV3X3Zhcl9yZWNvcmQoIGNzdHJpbmcgdmFyX25hbWUgKTsKLXZhcmlhYmxlX2RhdGEqICBmaW5kX3Zhcl9yZWNvcmQoIGNzdHJpbmcgdmFyX25hbWUgKTsKLQotY3N0cmluZyAgICAgICAgIHN5c19yZWFkX3ZhciggY3N0cmluZyB2YXJfbmFtZSApOwotdm9pZCAgICAgICAgICAgIHN5c193cml0ZV92YXIoIGNzdHJpbmcgdmFyX25hbWUsIGZvcm1hdF9zdHJlYW0mIHZhcl92YWx1ZSApOwotCi19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyB2YXJpYWJsZTsKLQotfSAvLyBuYW1lc3BhY2UgZW52aXJvbm1lbnQKLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9FTlZfRldEX0hQUF8wNjI2MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Vudi9tb2RpZmllci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9lbnYvbW9kaWZpZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwY2ZjZmYzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Vudi9tb2RpZmllci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZGVmaW5lcyB2YXJpYWJsZSBtb2RpZmllcnMKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0VOVl9NT0RJRklFUl9IUFBfMDYyNjA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX0VOVl9NT0RJRklFUl9IUFBfMDYyNjA0R0VSCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL25hbWVkX3BhcmFtcy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgZW52aXJvbm1lbnQgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICBlbnZpcm9ubWVudCB2YXJpYWJsZSBtb2RpZmllcnMgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSB7Ci0KLW5mcDo6dHlwZWRfa2V5d29yZDxjc3RyaW5nLHN0cnVjdCBnbG9iYWxfaWRfdD4gICBnbG9iYWxfaWQ7Ci1uZnA6OmtleXdvcmQ8c3RydWN0IGRlZmF1bHRfdmFsdWVfdD4gICAgICAgICAgICAgZGVmYXVsdF92YWx1ZTsKLW5mcDo6a2V5d29yZDxzdHJ1Y3QgaW50ZXJwcmV0ZXJfdD4gICAgICAgICAgICAgICBpbnRlcnByZXRlcjsKLQotfSAvLyBsb2NhbCBuYW1lc3BhY2UKLX0gLy8gbmFtZXNwYWNlIGVudmlyb25tZW50Ci0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfRU5WX01PRElGSUVSX0hQUF8wNjI2MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Vudi92YXJpYWJsZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9lbnYvdmFyaWFibGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODZiYjIyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Vudi92YXJpYWJsZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMjMgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDgxOTEzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBkZWZpbmVzIG1vZGVsIG9mIHByb2dyYW0gZW52aXJvbm1lbnQgdmFyaWFibGUKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0VOVl9WQVJJQUJMRV9IUFBfMDYyNjA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX0VOVl9WQVJJQUJMRV9IUFBfMDYyNjA0R0VSCi0KLSNpZmRlZiBVTkRFUl9DRQotI2Vycm9yIFdpbmRvd3MgQ0UgZG9lcyBub3Qgc3VwcG9ydCBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCi0jZW5kaWYKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvcGFyYW1ldGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvYXJndW1lbnQuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Vudi9md2QuaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L29wdGlvbmFsLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLW5hbWVzcGFjZSBlbnZpcm9ubWVudCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgIHJ1bnRpbWU6OmVudmlyb25tZW50Ojp2YXJpYWJsZV9kYXRhICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIHJ0X2Vudl9kZXRhaWwgewotCi1zdHJ1Y3QgdmFyaWFibGVfZGF0YSA6IHB1YmxpYyBydW50aW1lOjpwYXJhbWV0ZXIgewotICAgIGNzdHJpbmcgICAgICAgICBtX3Zhcl9uYW1lOwotICAgIGRzdHJpbmcgICAgICAgICBtX2dsb2JhbF9pZDsKLSAgICBhcmd1bWVudF9wdHIgICAgbV92YWx1ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIHJ0X2Vudl9kZXRhaWwKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICBydW50aW1lOjplbnZpcm9ubWVudDo6dmFyaWFibGVfYmFzZSAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyB2YXJpYWJsZV9iYXNlIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCAgICB2YXJpYWJsZV9iYXNlKCBydF9lbnZfZGV0YWlsOjp2YXJpYWJsZV9kYXRhJiBkYXRhICkgOiBtX2RhdGEoICZkYXRhICkge30KLQotICAgIC8vIGFyZ3VtZW50cyBhY2Nlc3MKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIFQgY29uc3QmICAgIHZhbHVlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBhcmdfdmFsdWU8VD4oICptX2RhdGEtPm1fdmFsdWUgKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHZvaWQgICAgICAgIHZhbHVlKCBuZG5ib29zdDo6b3B0aW9uYWw8VD4mIHJlcyApIGNvbnN0Ci0gICAgewotICAgICAgICBpZiggaGFzX3ZhbHVlKCkgKQotICAgICAgICAgICAgcmVzID0gYXJnX3ZhbHVlPFQ+KCAqbV9kYXRhLT5tX3ZhbHVlICk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlcy5yZXNldCgpOwotICAgIH0KLQotICAgIGJvb2wgICAgICAgIGhhc192YWx1ZSgpIGNvbnN0ICAgeyByZXR1cm4gbV9kYXRhLT5tX3ZhbHVlIT0wOyB9Ci0gICAgY3N0cmluZyAgICAgbmFtZSgpIGNvbnN0ICAgICAgICB7IHJldHVybiBtX2RhdGEtPm1fdmFyX25hbWU7IH0KLQotcHJvdGVjdGVkOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIHJ0X2Vudl9kZXRhaWw6OnZhcmlhYmxlX2RhdGEqICBtX2RhdGE7Ci19IDsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICBydW50aW1lOjplbnZpcm9ubWVudDo6dmFyaWFibGUgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUID0gY3N0cmluZz4KLWNsYXNzIHZhcmlhYmxlIDogcHVibGljIHZhcmlhYmxlX2Jhc2UgewotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9ycwotICAgIGV4cGxpY2l0ICAgIHZhcmlhYmxlKCBjc3RyaW5nIHZhcl9uYW1lICk7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNb2RpZmllcnM+Ci0gICAgZXhwbGljaXQgICAgdmFyaWFibGUoIGNzdHJpbmcgdmFyX25hbWUsIE1vZGlmaWVycyBjb25zdCYgbSApOwotCi0gICAgZXhwbGljaXQgICAgdmFyaWFibGUoIHJ0X2Vudl9kZXRhaWw6OnZhcmlhYmxlX2RhdGEmIGRhdGEgKSAKLSAgICA6IHZhcmlhYmxlX2Jhc2UoIGRhdGEgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt9Ci0KLSAgICAvLyBvdGhlciB2YXJpYWJsZSBhc3NpZ25tZW50Ci0gICAgdm9pZCAgICAgICAgb3BlcmF0b3I9KCB2YXJpYWJsZSBjb25zdCYgdiApICAgICAgICAgICAgICB7IG1fZGF0YSA9IHYubV9kYXRhOyB9Ci0KLSAgICAvLyBhY2Nlc3MgbWV0aG9kcwotICAgIFQgY29uc3QmICAgIHZhbHVlKCkgY29uc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gdmFyaWFibGVfYmFzZTo6dmFsdWU8VD4oKTsgfQotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCBORE5CT09TVF9URVNURURfQVQoMHgzMjA2KSkgfHwgXAotICAgIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHgwNTkzKSkKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHZvaWQgICAgICAgIHZhbHVlKCBuZG5ib29zdDo6b3B0aW9uYWw8VD4mIHJlcyApIGNvbnN0ICAgICAgeyB2YXJpYWJsZV9iYXNlOjp2YWx1ZSggcmVzICk7IH0KLSNlbHNlCi0gICAgdXNpbmcgICAgICAgdmFyaWFibGVfYmFzZTo6dmFsdWU7Ci0jZW5kaWYKLQotICAgIC8vIFZhbHVlIGFzc2lnbm1lbnQKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWPgotICAgIHZvaWQgICAgICAgIG9wZXJhdG9yPSggViBjb25zdCYgdiApCi0gICAgewotICAgICAgICBpZiggIWhhc192YWx1ZSgpICkKLSAgICAgICAgICAgIG1fZGF0YS0+bV92YWx1ZS5yZXNldCggbmV3IHR5cGVkX2FyZ3VtZW50PFQ+KCAqbV9kYXRhICkgKTsKLQotICAgICAgICBhcmdfdmFsdWU8VD4oICptX2RhdGEtPm1fdmFsdWUgKSA9IHY7Ci0KLSAgICAgICAgcnRfZW52X2RldGFpbDo6c3lzX3dyaXRlX3ZhciggbV9kYXRhLT5tX3Zhcl9uYW1lLCBmb3JtYXRfc3RyZWFtKCkucmVmKCkgPDwgdmFsdWUoKSApOwotICAgIH0KLX07IC8vIGNsYXNzIHZhcmlhYmxlCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJULCB0eXBlbmFtZSBUcix0eXBlbmFtZSBUPgotaW5saW5lIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVCxUcj4mCi1vcGVyYXRvcjw8KCBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsVHI+JiBvcywgdmFyaWFibGU8VD4gY29uc3QmIHYgKQotewotICAgIG9zIDw8IHYubmFtZSgpIDw8ICc9JzsKLQotICAgIGlmKCB2Lmhhc192YWx1ZSgpICkKLSAgICAgICAgb3MgPDwgdi52YWx1ZSgpOwotCi0gICAgcmV0dXJuIG9zOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBWPgotaW5saW5lIGJvb2wKLW9wZXJhdG9yPT0oIHZhcmlhYmxlPFQ+IGV2LCBWIGNvbnN0JiB2ICkKLXsKLSAgICByZXR1cm4gZXYuaGFzX3ZhbHVlKCkgJiYgZXYudmFsdWUoKSA9PSB2OwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBWPgotaW5saW5lIGJvb2wKLW9wZXJhdG9yPT0oIFYgY29uc3QmIHYsIHZhcmlhYmxlPFQ+IGV2ICkKLXsKLSAgICByZXR1cm4gZXYuaGFzX3ZhbHVlKCkgJiYgZXYudmFsdWUoKSA9PSB2OwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBWPgotaW5saW5lIGJvb2wKLW9wZXJhdG9yIT0oIHZhcmlhYmxlPFQ+IGV2LCBWIGNvbnN0JiB2ICkKLXsKLSAgICByZXR1cm4gIWV2Lmhhc192YWx1ZSgpIHx8IGV2LnZhbHVlKCkgIT0gdjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVj4KLWlubGluZSBib29sCi1vcGVyYXRvciE9KCBWIGNvbnN0JiB2LCB2YXJpYWJsZTxUPiBldiApCi17Ci0gICAgcmV0dXJuICFldi5oYXNfdmFsdWUoKSB8fCBldi52YWx1ZSgpICE9IHY7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIGVudmlyb25tZW50Ci0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vIEltcGxlbWVudGF0aW9uCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZW52L2Vudmlyb25tZW50LmhwcD4KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICBydW50aW1lOjplbnZpcm9ubWVudDo6dmFyaWFibGUgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotbmFtZXNwYWNlIGVudmlyb25tZW50IHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZhcmlhYmxlPFQ+Ojp2YXJpYWJsZSggY3N0cmluZyB2YXJfbmFtZSApCi06IHZhcmlhYmxlX2Jhc2UoIGVudmlyb25tZW50Ojp2YXI8VD4oIHZhcl9uYW1lICkgKQote30KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXRlbXBsYXRlPHR5cGVuYW1lIE1vZGlmaWVycz4KLXZhcmlhYmxlPFQ+Ojp2YXJpYWJsZSggY3N0cmluZyB2YXJfbmFtZSwgTW9kaWZpZXJzIGNvbnN0JiBtICkKLTogdmFyaWFibGVfYmFzZSggZW52aXJvbm1lbnQ6OnZhcjxUPiggdmFyX25hbWUsIG0gKSApCi17fQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBlbnZpcm9ubWVudAotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0VOVl9WQVJJQUJMRV9IUFBfMDYyNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2FmZmI1NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBnbG9iYWwgZnJhbWV3b3JrIGxldmVsIGZvcndhcmQgZGVjbGFyYXRpb24KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0ZXRF9IUFBfMDYyNjA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX0ZXRF9IUFBfMDYyNjA0R0VSCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc2hhcmVkX3B0ci5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1jbGFzcyBwYXJhbWV0ZXI7Ci0KLWNsYXNzIGFyZ3VtZW50OwotdHlwZWRlZiBzaGFyZWRfcHRyPGFyZ3VtZW50PiBhcmd1bWVudF9wdHI7Ci10eXBlZGVmIHNoYXJlZF9wdHI8YXJndW1lbnQgY29uc3Q+IGNvbnN0X2FyZ3VtZW50X3B0cjsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgdmFsdWVfaW50ZXJwcmV0ZXI7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyB0eXBlZF9hcmd1bWVudDsKLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9GV0RfSFBQXzA2MjYwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvaW50ZXJwcmV0X2FyZ3VtZW50X3ZhbHVlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2ludGVycHJldF9hcmd1bWVudF92YWx1ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkZWM3NjEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvaW50ZXJwcmV0X2FyZ3VtZW50X3ZhbHVlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2MyArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGRlZmF1bHQgYWxnb3JpdGhtcyBmb3Igc3RyaW5nIHRvIHNwZWNpZmljIHR5cGUgY29udmVydGlvbnMKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0lOVEVSUFJFVF9BUkdVTUVOVF9WQUxVRV9IUFBfMDYyNjA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX0lOVEVSUFJFVF9BUkdVTUVOVF9WQUxVRV9IUFBfMDYyNjA0R0VSCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL3RyYWNlLmhwcD4KLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9pby5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2NvbXBhcmUuaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L29wdGlvbmFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9sZXhpY2FsX2Nhc3QuaHBwPgotCi0vLyBTVEwKLS8vICEhIGNvdWxkIHdlIGVsaW1pbmF0ZSB0aGVzZSBpbmNsdWRlcz8KLSNpbmNsdWRlIDxsaXN0PgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgIHJ1bnRpbWU6OmludGVycHJldF9hcmd1bWVudF92YWx1ZSAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gcmV0dXJucyB0cnVlIGlmIHNvdXJjZSBpcyB1c2VkIGZhbHNlIG90aGVyd2lzZQotCi0vLyBnZW5lcmljIGNhc2UKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaW50ZXJwcmV0X2FyZ3VtZW50X3ZhbHVlX2ltcGwgewotICAgIHN0YXRpYyBib29sIF8oIGNzdHJpbmcgc291cmNlLCBuZG5ib29zdDo6b3B0aW9uYWw8VD4mIHJlcyApCi0gICAgewotICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9UUkFDRSggIkluIGludGVycHJldF9hcmd1bWVudF92YWx1ZV9pbXBsPCIgPDwgdHlwZWlkKFQpLm5hbWUoKSA8PCAiPiIgKTsKLQotICAgICAgICByZXMgPSBsZXhpY2FsX2Nhc3Q8VD4oIHNvdXJjZSApOwotCi0gICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX1RSQUNFKCAiU3RyaW5nICIgPDwgc291cmNlIDw8ICIgaXMgaW50ZXJwcmV0ZWQgYXMgIiA8PCAqcmVzICk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLX07Ci0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gZHN0cmluZyBjYXNlCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW50ZXJwcmV0X2FyZ3VtZW50X3ZhbHVlX2ltcGw8ZHN0cmluZz4gewotICAgIHN0YXRpYyBib29sIF8oIGNzdHJpbmcgc291cmNlLCBuZG5ib29zdDo6b3B0aW9uYWw8ZHN0cmluZz4mIHJlcyApCi0gICAgewotICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9UUkFDRSggIkluIGludGVycHJldF9hcmd1bWVudF92YWx1ZV9pbXBsPGRzdHJpbmc+IiApOwotCi0gICAgICAgIHJlcyA9IGRzdHJpbmcoKTsKLSAgICAgICAgYXNzaWduX29wKCAqcmVzLCBzb3VyY2UsIDAgKTsKLQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyBjc3RyaW5nIGNhc2UKLXRlbXBsYXRlPD4KLXN0cnVjdCBpbnRlcnByZXRfYXJndW1lbnRfdmFsdWVfaW1wbDxjc3RyaW5nPiB7Ci0gICAgc3RhdGljIGJvb2wgXyggY3N0cmluZyBzb3VyY2UsIG5kbmJvb3N0OjpvcHRpb25hbDxjc3RyaW5nPiYgcmVzICkKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX1RSQUNFKCAiSW4gaW50ZXJwcmV0X2FyZ3VtZW50X3ZhbHVlX2ltcGw8Y3N0cmluZz4iICk7Ci0KLSAgICAgICAgcmVzID0gc291cmNlOwotCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vIHNwZWNpYWxpemF0aW9uIGZvciB0eXBlIGJvb2wKLXRlbXBsYXRlPD4KLXN0cnVjdCBpbnRlcnByZXRfYXJndW1lbnRfdmFsdWVfaW1wbDxib29sPiB7Ci0gICAgc3RhdGljIGJvb2wgXyggY3N0cmluZyBzb3VyY2UsIG5kbmJvb3N0OjpvcHRpb25hbDxib29sPiYgcmVzICkKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX1RSQUNFKCAiSW4gaW50ZXJwcmV0X2FyZ3VtZW50X3ZhbHVlX2ltcGw8Ym9vbD4iICk7Ci0KLSAgICAgICAgc3RhdGljIGxpdGVyYWxfY3N0cmluZyBZRVMoIE5ETkJPT1NUX1JUX1BBUkFNX0NTVFJJTkdfTElURVJBTCggIllFUyIgKSApOwotICAgICAgICBzdGF0aWMgbGl0ZXJhbF9jc3RyaW5nIFkoIE5ETkJPT1NUX1JUX1BBUkFNX0NTVFJJTkdfTElURVJBTCggIlkiICkgKTsKLSAgICAgICAgc3RhdGljIGxpdGVyYWxfY3N0cmluZyBOTyggTkROQk9PU1RfUlRfUEFSQU1fQ1NUUklOR19MSVRFUkFMKCAiTk8iICkgKTsKLSAgICAgICAgc3RhdGljIGxpdGVyYWxfY3N0cmluZyBOKCBORE5CT09TVF9SVF9QQVJBTV9DU1RSSU5HX0xJVEVSQUwoICJOIiApICk7Ci0gICAgICAgIHN0YXRpYyBsaXRlcmFsX2NzdHJpbmcgb25lKCBORE5CT09TVF9SVF9QQVJBTV9DU1RSSU5HX0xJVEVSQUwoICIxIiApICk7Ci0gICAgICAgIHN0YXRpYyBsaXRlcmFsX2NzdHJpbmcgemVybyggTkROQk9PU1RfUlRfUEFSQU1fQ1NUUklOR19MSVRFUkFMKCAiMCIgKSApOwotCi0gICAgICAgIHNvdXJjZS50cmltKCk7Ci0KLSAgICAgICAgaWYoIGNhc2VfaW5zX2VxKCBzb3VyY2UsIFlFUyApIHx8IGNhc2VfaW5zX2VxKCBzb3VyY2UsIFkgKSB8fCBjYXNlX2luc19lcSggc291cmNlLCBvbmUgKSApIHsKLSAgICAgICAgICAgIHJlcyA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmKCBjYXNlX2luc19lcSggc291cmNlLCBOTyApIHx8IGNhc2VfaW5zX2VxKCBzb3VyY2UsIE4gKSB8fCBjYXNlX2luc19lcSggc291cmNlLCB6ZXJvICkgKSB7Ci0gICAgICAgICAgICByZXMgPSBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgcmVzID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgYm9vbAotaW50ZXJwcmV0X2FyZ3VtZW50X3ZhbHVlKCBjc3RyaW5nIHNvdXJjZSwgbmRuYm9vc3Q6Om9wdGlvbmFsPFQ+JiByZXMsIGxvbmcgKQotewotICAgIHJldHVybiBpbnRlcnByZXRfYXJndW1lbnRfdmFsdWVfaW1wbDxUPjo6Xyggc291cmNlLCByZXMgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gc3BlY2lhbGl6YXRpb24gZm9yIGxpc3Qgb2YgdmFsdWVzCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIGJvb2wKLWludGVycHJldF9hcmd1bWVudF92YWx1ZSggY3N0cmluZyBzb3VyY2UsIG5kbmJvb3N0OjpvcHRpb25hbDxzdGQ6Omxpc3Q8VD4gPiYgcmVzLCBpbnQgKQotewotICAgIE5ETkJPT1NUX1JUX1BBUkFNX1RSQUNFKCAiSW4gaW50ZXJwcmV0X2FyZ3VtZW50X3ZhbHVlPHN0ZDo6bGlzdDxUPj4iICk7Ci0KLSAgICByZXMgPSBzdGQ6Omxpc3Q8VD4oKTsKLQotICAgIHdoaWxlKCAhc291cmNlLmlzX2VtcHR5KCkgKSB7Ci0gICAgICAgIC8vICEhIHNob3VsZCB3ZSB1c2UgdG9rZW5faXRlcmF0b3IKLSAgICAgICAgY3N0cmluZzo6aXRlcmF0b3Igc2luZ2xlX3ZhbHVlX2VuZCA9IHN0ZDo6ZmluZCggc291cmNlLmJlZ2luKCksIHNvdXJjZS5lbmQoKSwgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggJywnICkgKTsKLQotICAgICAgICBuZG5ib29zdDo6b3B0aW9uYWw8VD4gdmFsdWU7Ci0gICAgICAgIGludGVycHJldF9hcmd1bWVudF92YWx1ZSggY3N0cmluZyggc291cmNlLmJlZ2luKCksIHNpbmdsZV92YWx1ZV9lbmQgKSwgdmFsdWUsIDAgKTsKLQotICAgICAgICByZXMtPnB1c2hfYmFjayggKnZhbHVlICk7Ci0KLSAgICAgICAgc291cmNlLnRyaW1fbGVmdCggc2luZ2xlX3ZhbHVlX2VuZCArIDEgKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9JTlRFUlBSRVRfQVJHVU1FTlRfVkFMVUVfSFBQXzA2MjYwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvcGFyYW1ldGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL3BhcmFtZXRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczZmI4MWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvcGFyYW1ldGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogYWJzdHJhY3QgaW50ZXJmYWNlIGZvciB0aGUgZm9ybWFsIHBhcmFtZXRlcgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfUEFSQU1FVEVSX0hQUF8wNjI2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfUEFSQU1FVEVSX0hQUF8wNjI2MDRHRVIKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgcnVudGltZTo6cGFyYW1ldGVyICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgcGFyYW1ldGVyIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5wYXJhbWV0ZXIoKSB7fQotfTsKLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9QQVJBTUVURVJfSFBQXzA2MjYwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvdHJhY2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvdHJhY2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDQ3NDI5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL3RyYWNlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogb3B0aW9uYWwgaW50ZXJuYWwgdHJhY2luZwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfVFJBQ0VfSFBQXzA2MjYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9UUkFDRV9IUFBfMDYyNjA0R0VSCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0KLSNpZmRlZiBORE5CT09TVF9SVF9QQVJBTV9ERUJVRwotCi0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0KLSMgIGRlZmluZSBORE5CT09TVF9SVF9QQVJBTV9UUkFDRSggc3RyICkgc3RkOjpjZXJyIDw8IHN0ciA8PCBzdGQ6OmVuZGwKLSNlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfUlRfUEFSQU1fVFJBQ0UoIHN0ciApCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX1RSQUNFX0hQUF8wNjI2MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL3ZhbGlkYXRpb24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvdmFsaWRhdGlvbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljOGNlNzkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvdmFsaWRhdGlvbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGRlZmluZXMgZXhjZXB0aW9ucyBhbmQgdmFsaWRhdGlvbiB0b29scwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfVkFMSURBVElPTl9IUFBfMDYyNjA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX1ZBTElEQVRJT05fSFBQXzA2MjYwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9jbGFzc19wcm9wZXJ0aWVzLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9zaGFyZWRfcHRyLmhwcD4KLQotLy8gU1RMCi0jaWZkZWYgTkROQk9PU1RfUlRfUEFSQU1fRVhDRVBUSU9OX0lOSEVSSVRfU1RECi0jaW5jbHVkZSA8c3RkZXhjZXB0PgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgcnVudGltZTo6bG9naWNfZXJyb3IgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIGxvZ2ljX2Vycm9yIAotI2lmZGVmIE5ETkJPT1NUX1JUX1BBUkFNX0VYQ0VQVElPTl9JTkhFUklUX1NURAotOiBwdWJsaWMgc3RkOjpleGNlcHRpb24KLSNlbmRpZgotewotICAgIHR5cGVkZWYgc2hhcmVkX3B0cjxkc3RyaW5nPiBkc3RyaW5nX3B0cjsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvciAvLyAhISBjb3VsZCB3ZSBlbGltaW5hdGUgc2hhcmVkX3B0cgotICAgIGV4cGxpY2l0ICAgIGxvZ2ljX2Vycm9yKCBjc3RyaW5nIG1zZyApIDogbV9tc2coIG5ldyBkc3RyaW5nKCBtc2cuYmVnaW4oKSwgbXNnLnNpemUoKSApICkge30KLSAgICB+bG9naWNfZXJyb3IoKSB0aHJvdygpICAgICAgICAgICAgICAgICAgICAgICAgICB7fQotCi0gICAgZHN0cmluZyBjb25zdCYgICBtc2coKSBjb25zdCAgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gKm1fbXNnOyB9Ci0gICAgdmlydHVhbCBjaGFyX3R5cGUgY29uc3QqIHdoYXQoKSBjb25zdCB0aHJvdygpICAgeyByZXR1cm4gbV9tc2ctPmNfc3RyKCk7IH0KLQotcHJpdmF0ZToKLSAgICBkc3RyaW5nX3B0ciBtX21zZzsKLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICBydW50aW1lOjpyZXBvcnRfbG9naWNfZXJyb3IgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotaW5saW5lIHZvaWQKLXJlcG9ydF9sb2dpY19lcnJvciggZm9ybWF0X3N0cmVhbSYgbXNnICkKLXsKLSAgICB0aHJvdyBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0U6OmxvZ2ljX2Vycm9yKCBtc2cuc3RyKCkgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2RlZmluZSBORE5CT09TVF9SVF9QQVJBTV9SRVBPUlRfTE9HSUNfRVJST1IoIG1zZyApIFwKLSAgICBuZG5ib29zdDo6TkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFOjpyZXBvcnRfbG9naWNfZXJyb3IoIGZvcm1hdF9zdHJlYW0oKS5yZWYoKSA8PCBtc2cgKQotCi0jZGVmaW5lIE5ETkJPT1NUX1JUX1BBUkFNX1ZBTElEQVRFX0xPR0lDKCBiLCBtc2cgKSBcCi0gICAgaWYoIGIgKSB7fSBlbHNlIE5ETkJPT1NUX1JUX1BBUkFNX1JFUE9SVF9MT0dJQ19FUlJPUiggbXNnICkKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9WQUxJREFUSU9OX0hQUF8wNjI2MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy90cml2aWFsX3NpbmdsZXRvbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvdHJpdmlhbF9zaW5nbGV0b24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZmNmZjBiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy90cml2aWFsX3NpbmdsZXRvbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IHNpbXBsZSBoZWxwZXJzIGZvciBjcmVhdGluZyBjdXNvbSBvdXRwdXQgbWFuaXB1bGF0b3JzCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX1RSSVZJQUxfU0lHTkxFVE9OX0hQUF8wMjA1MDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9UUklWSUFMX1NJR05MRVRPTl9IUFBfMDIwNTA1R0VSCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L25vbmNvcHlhYmxlLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgICBzaW5nbGV0b24gICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgRGVyaXZlZD4KLWNsYXNzIHNpbmdsZXRvbiA6IHByaXZhdGUgbmRuYm9vc3Q6Om5vbmNvcHlhYmxlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgRGVyaXZlZCYgaW5zdGFuY2UoKSB7IHN0YXRpYyBEZXJpdmVkIHRoZV9pbnN0OyByZXR1cm4gdGhlX2luc3Q7IH0gICAgCi1wcm90ZWN0ZWQ6Ci0gICAgc2luZ2xldG9uKCkgIHt9Ci0gICAgfnNpbmdsZXRvbigpIHt9Ci19OwotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotI2RlZmluZSBORE5CT09TVF9URVNUX1NJTkdMRVRPTl9DT05TKCB0eXBlICkgICAgICAgXAotZnJpZW5kIGNsYXNzIG5kbmJvb3N0Ojp1bml0X3Rlc3Q6OnNpbmdsZXRvbjx0eXBlPjsgXAotdHlwZSgpIHt9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLyoqLwotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0RFQ0NYWF9WRVIsIE5ETkJPT1NUX1RFU1RFRF9BVCg2MDU5MDA0MikpCi0KLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9TSU5HTEVUT05fSU5TVCggaW5zdCApIFwKLXRlbXBsYXRlIGNsYXNzIHVuaXRfdGVzdDo6c2luZ2xldG9uPCBORE5CT09TVF9KT0lOKCBpbnN0LCBfdCApID4gOyBcCi1uYW1lc3BhY2UgeyBORE5CT09TVF9KT0lOKCBpbnN0LCBfdCkmIGluc3QgPSBORE5CT09TVF9KT0lOKCBpbnN0LCBfdCk6Omluc3RhbmNlKCk7IH0KLQotI2VsaWYgZGVmaW5lZChfX0FQUExFX0NDX18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fIDwgNAotI2RlZmluZSBORE5CT09TVF9URVNUX1NJTkdMRVRPTl9JTlNUKCBpbnN0ICkgXAotc3RhdGljIE5ETkJPT1NUX0pPSU4oIGluc3QsIF90KSYgaW5zdCA9IE5ETkJPT1NUX0pPSU4gKGluc3QsIF90KTo6aW5zdGFuY2UoKTsKLQotI2Vsc2UKLQotI2RlZmluZSBORE5CT09TVF9URVNUX1NJTkdMRVRPTl9JTlNUKCBpbnN0ICkgXAotbmFtZXNwYWNlIHsgTkROQk9PU1RfSk9JTiggaW5zdCwgX3QpJiBpbnN0ID0gTkROQk9PU1RfSk9JTiggaW5zdCwgX3QpOjppbnN0YW5jZSgpOyB9Ci0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfVFJJVklBTF9TSUdOTEVUT05fSFBQXzAyMDUwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3dyYXBfc3RyaW5nc3RyZWFtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy93cmFwX3N0cmluZ3N0cmVhbS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmZTExMTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3dyYXBfc3RyaW5nc3RyZWFtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2NCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDAyLTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IHdyYXBzIHN0cnN0cmVhbSBhbmQgc3RyaW5nc3RyZWFtIChkZXBlbmRzIHdpdGggb25lIGlzIHByZXNlbnQpCi0vLyAgICAgICAgICAgICAgICB0byBwcm92aWRlIHRoZSB1bmlmaWVkIGludGVyZmFjZQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfV1JBUF9TVFJJTkdTVFJFQU1fSFBQXzA3MTg5NEdFUgotI2RlZmluZSBORE5CT09TVF9XUkFQX1NUUklOR1NUUkVBTV9IUFBfMDcxODk0R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9jb25maWcuaHBwPgotCi0vLyBTVEwKLSNpZmRlZiBORE5CT09TVF9OT19TVFJJTkdTVFJFQU0KLSNpbmNsdWRlIDxzdHJzdHJlYW0+ICAgICAgICAvLyBmb3Igc3RkOjpvc3Ryc3RyZWFtCi0jZWxzZQotI2luY2x1ZGUgPHNzdHJlYW0+ICAgICAgICAgIC8vIGZvciBzdGQ6Om9zdHJpbmdzdHJlYW0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19TVFJJTkdTVFJFQU0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgYmFzaWNfd3JhcF9zdHJpbmdzdHJlYW0gICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWNsYXNzIGJhc2ljX3dyYXBfc3RyaW5nc3RyZWFtIHsKLXB1YmxpYzoKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0NMQVNTSUNfSU9TVFJFQU1TKQotICAgIHR5cGVkZWYgc3RkOjpvc3RyaW5nc3RyZWFtICAgICAgICAgICAgICAgd3JhcHBlZF9zdHJlYW07Ci0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NUUklOR1NUUkVBTSkKLSAgICB0eXBlZGVmIHN0ZDo6YmFzaWNfb3N0cnN0cmVhbTxDaGFyVD4gICAgIHdyYXBwZWRfc3RyZWFtOwotI2Vsc2UKLSAgICB0eXBlZGVmIHN0ZDo6YmFzaWNfb3N0cmluZ3N0cmVhbTxDaGFyVD4gIHdyYXBwZWRfc3RyZWFtOwotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1NUUklOR1NUUkVBTQotICAgIC8vIEFjY2VzcyBtZXRob2RzCi0gICAgYmFzaWNfd3JhcF9zdHJpbmdzdHJlYW0mICAgICAgICByZWYoKTsKLSAgICB3cmFwcGVkX3N0cmVhbSYgICAgICAgICAgICAgICAgIHN0cmVhbSgpOwotICAgIHN0ZDo6YmFzaWNfc3RyaW5nPENoYXJUPiBjb25zdCYgc3RyKCk7Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgd3JhcHBlZF9zdHJlYW0gICAgICAgICAgICAgICAgICBtX3N0cmVhbTsKLSAgICBzdGQ6OmJhc2ljX3N0cmluZzxDaGFyVD4gICAgICAgIG1fc3RyOwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJULCB0eXBlbmFtZSBUPgotaW5saW5lIGJhc2ljX3dyYXBfc3RyaW5nc3RyZWFtPENoYXJUPiYKLW9wZXJhdG9yPDwoIGJhc2ljX3dyYXBfc3RyaW5nc3RyZWFtPENoYXJUPiYgdGFyZywgVCBjb25zdCYgdCApCi17Ci0gICAgdGFyZy5zdHJlYW0oKSA8PCB0OwotICAgIHJldHVybiB0YXJnOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgdHlwZW5hbWUgYmFzaWNfd3JhcF9zdHJpbmdzdHJlYW08Q2hhclQ+Ojp3cmFwcGVkX3N0cmVhbSYKLWJhc2ljX3dyYXBfc3RyaW5nc3RyZWFtPENoYXJUPjo6c3RyZWFtKCkKLXsKLSAgICByZXR1cm4gbV9zdHJlYW07Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSBiYXNpY193cmFwX3N0cmluZ3N0cmVhbTxDaGFyVD4mCi1iYXNpY193cmFwX3N0cmluZ3N0cmVhbTxDaGFyVD46OnJlZigpCi17IAotICAgIHJldHVybiAqdGhpczsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIHN0ZDo6YmFzaWNfc3RyaW5nPENoYXJUPiBjb25zdCYKLWJhc2ljX3dyYXBfc3RyaW5nc3RyZWFtPENoYXJUPjo6c3RyKCkKLXsKLQotI2lmZGVmIE5ETkJPT1NUX05PX1NUUklOR1NUUkVBTQotICAgIG1fc3RyLmFzc2lnbiggbV9zdHJlYW0uc3RyKCksIG1fc3RyZWFtLnBjb3VudCgpICk7Ci0gICAgbV9zdHJlYW0uZnJlZXplKCBmYWxzZSApOwotI2Vsc2UKLSAgICBtX3N0ciA9IG1fc3RyZWFtLnN0cigpOwotI2VuZGlmCi0KLSAgICByZXR1cm4gbV9zdHI7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSBiYXNpY193cmFwX3N0cmluZ3N0cmVhbTxDaGFyVD4mCi1vcGVyYXRvcjw8KCBiYXNpY193cmFwX3N0cmluZ3N0cmVhbTxDaGFyVD4mIHRhcmcsIGJhc2ljX3dyYXBfc3RyaW5nc3RyZWFtPENoYXJUPiYgc3JjICkKLXsKLSAgICB0YXJnIDw8IHNyYy5zdHIoKTsKLSAgICByZXR1cm4gdGFyZzsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2lmIE5ETkJPT1NUX1RFU1RfVVNFX1NURF9MT0NBTEUgCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSBiYXNpY193cmFwX3N0cmluZ3N0cmVhbTxDaGFyVD4mCi1vcGVyYXRvcjw8KCBiYXNpY193cmFwX3N0cmluZ3N0cmVhbTxDaGFyVD4mIHRhcmcsIHN0ZDo6aW9zX2Jhc2UmIChORE5CT09TVF9URVNUX0NBTExfREVDTCAqbWFuKShzdGQ6Omlvc19iYXNlJikgKQotewotICAgIHRhcmcuc3RyZWFtKCkgPDwgbWFuOwotICAgIHJldHVybiB0YXJnOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVCx0eXBlbmFtZSBFbGVtLHR5cGVuYW1lIFRyPgotaW5saW5lIGJhc2ljX3dyYXBfc3RyaW5nc3RyZWFtPENoYXJUPiYKLW9wZXJhdG9yPDwoIGJhc2ljX3dyYXBfc3RyaW5nc3RyZWFtPENoYXJUPiYgdGFyZywgc3RkOjpiYXNpY19vc3RyZWFtPEVsZW0sVHI+JiAoTkROQk9PU1RfVEVTVF9DQUxMX0RFQ0wgKm1hbikoc3RkOjpiYXNpY19vc3RyZWFtPEVsZW0sIFRyPiYpICkKLXsKLSAgICB0YXJnLnN0cmVhbSgpIDw8IG1hbjsKLSAgICByZXR1cm4gdGFyZzsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQsdHlwZW5hbWUgRWxlbSx0eXBlbmFtZSBUcj4KLWlubGluZSBiYXNpY193cmFwX3N0cmluZ3N0cmVhbTxDaGFyVD4mCi1vcGVyYXRvcjw8KCBiYXNpY193cmFwX3N0cmluZ3N0cmVhbTxDaGFyVD4mIHRhcmcsIHN0ZDo6YmFzaWNfaW9zPEVsZW0sIFRyPiYgKE5ETkJPT1NUX1RFU1RfQ0FMTF9ERUNMICptYW4pKHN0ZDo6YmFzaWNfaW9zPEVsZW0sIFRyPiYpICkKLXsKLSAgICB0YXJnLnN0cmVhbSgpIDw8IG1hbjsKLSAgICByZXR1cm4gdGFyZzsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2VuZGlmCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIHdyYXBfc3RyaW5nc3RyZWFtICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdHlwZWRlZiBiYXNpY193cmFwX3N0cmluZ3N0cmVhbTxjaGFyPiAgICAgICB3cmFwX3N0cmluZ3N0cmVhbTsKLXR5cGVkZWYgYmFzaWNfd3JhcF9zdHJpbmdzdHJlYW08d2NoYXJfdD4gICAgd3JhcF93c3RyaW5nc3RyZWFtOwotCi19ICAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAgLy8gTkROQk9PU1RfV1JBUF9TVFJJTkdTVFJFQU1fSFBQXzA3MTg5NEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3htbF9wcmludGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy94bWxfcHJpbnRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwZjI5NzIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3htbF9wcmludGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExOCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA0LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1Nzk5MiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogY29tbW9uIGNvZGUgdXNlZCBieSBhbnkgYWdlbnQgc2VydmluZyBhcyBYTUwgcHJpbnRlcgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9YTUxfUFJJTlRFUl9IUFBfMDcxODk0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfWE1MX1BSSU5URVJfSFBQXzA3MTg5NEdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2Jhc2ljX2NzdHJpbmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvZml4ZWRfbWFwcGluZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9jdXN0b21fbWFuaXAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvZm9yZWFjaC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2lvLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxpb3N0cmVhbT4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIHhtbCBwcmludCBoZWxwZXJzICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotaW5saW5lIHZvaWQKLXByaW50X2VzY2FwZWQoIHN0ZDo6b3N0cmVhbSYgd2hlcmVfdG8sIGNvbnN0X3N0cmluZyB2YWx1ZSApCi17Ci0gICAgc3RhdGljIGZpeGVkX21hcHBpbmc8Y2hhcixjaGFyIGNvbnN0Kj4gY2hhcl90eXBlKAotICAgICAgICAnPCcgLCAibHQiLAotICAgICAgICAnPicgLCAiZ3QiLAotICAgICAgICAnJicgLCAiYW1wIiwKLSAgICAgICAgJ1wnJywgImFwb3MiICwKLSAgICAgICAgJyInICwgInF1b3QiLAotCi0gICAgICAgIDAKLSAgICApOwotCi0gICAgTkROQk9PU1RfVEVTVF9GT1JFQUNIKCBjaGFyLCBjLCB2YWx1ZSApIHsKLSAgICAgICAgY2hhciBjb25zdCogcmVmID0gY2hhcl90eXBlW2NdOwotCi0gICAgICAgIGlmKCByZWYgKQotICAgICAgICAgICAgd2hlcmVfdG8gPDwgJyYnIDw8IHJlZiA8PCAnOyc7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHdoZXJlX3RvIDw8IGM7Ci0gICAgfQotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1pbmxpbmUgdm9pZAotcHJpbnRfZXNjYXBlZCggc3RkOjpvc3RyZWFtJiB3aGVyZV90bywgc3RkOjpzdHJpbmcgY29uc3QmIHZhbHVlICkKLXsKLSAgICBwcmludF9lc2NhcGVkKCB3aGVyZV90bywgY29uc3Rfc3RyaW5nKCB2YWx1ZSApICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdm9pZAotcHJpbnRfZXNjYXBlZCggc3RkOjpvc3RyZWFtJiB3aGVyZV90bywgVCBjb25zdCYgdmFsdWUgKQotewotICAgIHdoZXJlX3RvIDw8IHZhbHVlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10eXBlZGVmIGN1c3RvbV9tYW5pcDxzdHJ1Y3QgYXR0cl92YWx1ZV90PiBhdHRyX3ZhbHVlOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIHN0ZDo6b3N0cmVhbSYKLW9wZXJhdG9yPDwoIGN1c3RvbV9wcmludGVyPGF0dHJfdmFsdWU+IGNvbnN0JiBwLCBUIGNvbnN0JiB2YWx1ZSApCi17Ci0gICAgKnAgPDwgIj1cIiI7Ci0gICAgcHJpbnRfZXNjYXBlZCggKnAsIHZhbHVlICk7Ci0gICAgKnAgPDwgJyInOwotCi0gICAgcmV0dXJuICpwOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10eXBlZGVmIGN1c3RvbV9tYW5pcDxzdHJ1Y3QgY2RhdGFfdD4gY2RhdGE7Ci0KLWlubGluZSBzdGQ6Om9zdHJlYW0mCi1vcGVyYXRvcjw8KCBjdXN0b21fcHJpbnRlcjxjZGF0YT4gY29uc3QmIHAsIGNvbnN0X3N0cmluZyB2YWx1ZSApCi17Ci0gICAgcmV0dXJuICpwIDw8IE5ETkJPT1NUX1RFU1RfTCggIjwhW0NEQVRBWyIgKSA8PCB2YWx1ZSA8PCBORE5CT09TVF9URVNUX0woICJdXT4iICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfWE1MX1BSSU5URVJfSFBQXzA3MTg5NEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90aHJvd19leGNlcHRpb24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90aHJvd19leGNlcHRpb24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NzVhOWYyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGhyb3dfZXhjZXB0aW9uLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1VVSURfQUExNUU3NEE4NTZGMTFFMDhCOEQ5M0YyNDgyNDAxOUIKLSNkZWZpbmUgTkROQk9PU1RfVVVJRF9BQTE1RTc0QTg1NkYxMUUwOEI4RDkzRjI0ODI0MDE5QgotI2lmIGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKE5ETkJPT1NUX0VYQ0VQVElPTl9FTkFCTEVfV0FSTklOR1MpCi0jcHJhZ21hIEdDQyBzeXN0ZW1faGVhZGVyCi0jZW5kaWYKLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAhZGVmaW5lZChORE5CT09TVF9FWENFUFRJT05fRU5BQkxFX1dBUk5JTkdTKQotI3ByYWdtYSB3YXJuaW5nKHB1c2gsMSkKLSNlbmRpZgotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICBuZG5ib29zdC90aHJvd19leGNlcHRpb24uaHBwCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMiBQZXRlciBEaW1vdiBhbmQgTXVsdGkgTWVkaWEgTHRkLgotLy8gIENvcHlyaWdodCAoYykgMjAwOC0yMDA5IEVtaWwgRG90Y2hldnNraSBhbmQgUmV2ZXJnZSBTdHVkaW9zLCBJbmMuCi0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3V0aWxpdHkvdGhyb3dfZXhjZXB0aW9uLmh0bWwKLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9leGNlcHRpb24vZGV0YWlsL2F0dHJpYnV0ZV9ub3JldHVybi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8ZXhjZXB0aW9uPgotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX0VYQ0VQVElPTl9ESVNBQkxFICkgJiYgZGVmaW5lZCggX19CT1JMQU5EQ19fICkgJiYgTkROQk9PU1RfV09SS0FST1VORCggX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1OTMpICkKLSMgZGVmaW5lIE5ETkJPT1NUX0VYQ0VQVElPTl9ESVNBQkxFCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9FWENFUFRJT05fRElTQUJMRSApICYmIGRlZmluZWQoIE5ETkJPT1NUX01TVkMgKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKCBORE5CT09TVF9NU1ZDLCA8IDEzMTAgKQotIyBkZWZpbmUgTkROQk9PU1RfRVhDRVBUSU9OX0RJU0FCTEUKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX0VYQ0VQVElPTl9ESVNBQkxFICkKLSMgaW5jbHVkZSA8bmRuYm9vc3QvZXhjZXB0aW9uL2V4Y2VwdGlvbi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L2N1cnJlbnRfZnVuY3Rpb24uaHBwPgotIyBkZWZpbmUgTkROQk9PU1RfVEhST1dfRVhDRVBUSU9OKHgpIDo6bmRuYm9vc3Q6OmV4Y2VwdGlvbl9kZXRhaWw6OnRocm93X2V4Y2VwdGlvbl8oeCxORE5CT09TVF9DVVJSRU5UX0ZVTkNUSU9OLF9fRklMRV9fLF9fTElORV9fKQotI2Vsc2UKLSMgZGVmaW5lIE5ETkJPT1NUX1RIUk9XX0VYQ0VQVElPTih4KSA6Om5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oeCkKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSNpZmRlZiBORE5CT09TVF9OT19FWENFUFRJT05TCi0KLXZvaWQgdGhyb3dfZXhjZXB0aW9uKCBzdGQ6OmV4Y2VwdGlvbiBjb25zdCAmIGUgKTsgLy8gdXNlciBkZWZpbmVkCi0KLSNlbHNlCi0KLWlubGluZSB2b2lkIHRocm93X2V4Y2VwdGlvbl9hc3NlcnRfY29tcGF0aWJpbGl0eSggc3RkOjpleGNlcHRpb24gY29uc3QgJiApIHsgfQotCi10ZW1wbGF0ZTxjbGFzcyBFPiBORE5CT09TVF9BVFRSSUJVVEVfTk9SRVRVUk4gaW5saW5lIHZvaWQgdGhyb3dfZXhjZXB0aW9uKCBFIGNvbnN0ICYgZSApCi17Ci0gICAgLy9BbGwgYm9vc3QgZXhjZXB0aW9ucyBhcmUgcmVxdWlyZWQgdG8gZGVyaXZlIGZyb20gc3RkOjpleGNlcHRpb24sCi0gICAgLy90byBlbnN1cmUgY29tcGF0aWJpbGl0eSB3aXRoIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMuCi0gICAgdGhyb3dfZXhjZXB0aW9uX2Fzc2VydF9jb21wYXRpYmlsaXR5KGUpOwotCi0jaWZuZGVmIE5ETkJPT1NUX0VYQ0VQVElPTl9ESVNBQkxFCi0gICAgdGhyb3cgZW5hYmxlX2N1cnJlbnRfZXhjZXB0aW9uKGVuYWJsZV9lcnJvcl9pbmZvKGUpKTsKLSNlbHNlCi0gICAgdGhyb3cgZTsKLSNlbmRpZgotfQotCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9FWENFUFRJT05fRElTQUJMRSApCi0gICAgbmFtZXNwYWNlCi0gICAgZXhjZXB0aW9uX2RldGFpbAotICAgIHsKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEU+Ci0gICAgICAgIE5ETkJPT1NUX0FUVFJJQlVURV9OT1JFVFVSTgotICAgICAgICB2b2lkCi0gICAgICAgIHRocm93X2V4Y2VwdGlvbl8oIEUgY29uc3QgJiB4LCBjaGFyIGNvbnN0ICogY3VycmVudF9mdW5jdGlvbiwgY2hhciBjb25zdCAqIGZpbGUsIGludCBsaW5lICkKLSAgICAgICAgewotICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICBzZXRfaW5mbygKLSAgICAgICAgICAgICAgICAgICAgc2V0X2luZm8oCi0gICAgICAgICAgICAgICAgICAgICAgICBzZXRfaW5mbygKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVfZXJyb3JfaW5mbyh4KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd19mdW5jdGlvbihjdXJyZW50X2Z1bmN0aW9uKSksCi0gICAgICAgICAgICAgICAgICAgICAgICB0aHJvd19maWxlKGZpbGUpKSwKLSAgICAgICAgICAgICAgICAgICAgdGhyb3dfbGluZShsaW5lKSkpOwotICAgICAgICB9Ci0gICAgfQotI2VuZGlmCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRlZmluZWQoTkROQk9PU1RfRVhDRVBUSU9OX0VOQUJMRV9XQVJOSU5HUykKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90aW1lci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3RpbWVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTE5ZjM2MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3RpbWVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8vICBib29zdCB0aW1lci5ocHAgaGVhZGVyIGZpbGUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBDb3B5cmlnaHQgQmVtYW4gRGF3ZXMgMTk5NC05OS4gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdAotLy8gIFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGltZXIgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICBSZXZpc2lvbiBIaXN0b3J5Ci0vLyAgMDEgQXByIDAxICBNb2RpZmllZCB0byB1c2UgbmV3IDxuZG5ib29zdC9saW1pdHMuaHBwPiBoZWFkZXIuIChKTWFkZG9jaykKLS8vICAxMiBKYW4gMDEgIENoYW5nZSB0byBpbmxpbmUgaW1wbGVtZW50YXRpb24gdG8gYWxsb3cgdXNlIHdpdGhvdXQgbGlicmFyeQotLy8gICAgICAgICAgICAgYnVpbGRzLiBTZWUgZG9jcyBmb3IgbW9yZSByYXRpb25hbGUuIChCZW1hbiBEYXdlcykgCi0vLyAgMjUgU2VwIDk5ICBlbGFwc2VkX21heCgpIGFuZCBlbGFwc2VkX21pbigpIGFkZGVkIChKb2huIE1hZGRvY2spCi0vLyAgMTYgSnVsIDk5ICBTZWNvbmQgYmV0YQotLy8gICA2IEp1bCA5OSAgSW5pdGlhbCBib29zdCB2ZXJzaW9uCi0KLSNpZm5kZWYgTkROQk9PU1RfVElNRVJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1RJTUVSX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxjdGltZT4KLSNpbmNsdWRlIDxuZG5ib29zdC9saW1pdHMuaHBwPgotCi0jIGlmZGVmIE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFCi0gICAgbmFtZXNwYWNlIHN0ZCB7IHVzaW5nIDo6Y2xvY2tfdDsgdXNpbmcgOjpjbG9jazsgfQotIyBlbmRpZgotCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLS8vICB0aW1lciAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBBIHRpbWVyIG9iamVjdCBtZWFzdXJlcyBlbGFwc2VkIHRpbWUuCi0KLS8vICBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IGltcGxlbWVudGF0aW9ucyBtZWFzdXJlIHdhbGwgY2xvY2sgcmF0aGVyIHRoYW4gQ1BVCi0vLyAgdGltZSBzaW5jZSB0aGUgaW50ZW5kZWQgdXNlIGlzIHBlcmZvcm1hbmNlIG1lYXN1cmVtZW50IG9uIHN5c3RlbXMgd2hlcmUKLS8vICB0b3RhbCBlbGFwc2VkIHRpbWUgaXMgbW9yZSBpbXBvcnRhbnQgdGhhbiBqdXN0IHByb2Nlc3Mgb3IgQ1BVIHRpbWUuCi0KLS8vICBXYXJuaW5nczogVGhlIG1heGltdW0gbWVhc3VyYWJsZSBlbGFwc2VkIHRpbWUgbWF5IHdlbGwgYmUgb25seSA1OTYuNSsgaG91cnMKLS8vICBkdWUgdG8gaW1wbGVtZW50YXRpb24gbGltaXRhdGlvbnMuICBUaGUgYWNjdXJhY3kgb2YgdGltaW5ncyBkZXBlbmRzIG9uIHRoZQotLy8gIGFjY3VyYWN5IG9mIHRpbWluZyBpbmZvcm1hdGlvbiBwcm92aWRlZCBieSB0aGUgdW5kZXJseWluZyBwbGF0Zm9ybSwgYW5kCi0vLyAgdGhpcyB2YXJpZXMgYSBncmVhdCBkZWFsIGZyb20gcGxhdGZvcm0gdG8gcGxhdGZvcm0uCi0KLWNsYXNzIHRpbWVyCi17Ci0gcHVibGljOgotICAgICAgICAgdGltZXIoKSB7IF9zdGFydF90aW1lID0gc3RkOjpjbG9jaygpOyB9IC8vIHBvc3Rjb25kaXRpb246IGVsYXBzZWQoKT09MAotLy8gICAgICAgICB0aW1lciggY29uc3QgdGltZXImIHNyYyApOyAgICAgIC8vIHBvc3Q6IGVsYXBzZWQoKT09c3JjLmVsYXBzZWQoKQotLy8gICAgICAgIH50aW1lcigpe30KLS8vICB0aW1lciYgb3BlcmF0b3I9KCBjb25zdCB0aW1lciYgc3JjICk7ICAvLyBwb3N0OiBlbGFwc2VkKCk9PXNyYy5lbGFwc2VkKCkKLSAgdm9pZCAgIHJlc3RhcnQoKSB7IF9zdGFydF90aW1lID0gc3RkOjpjbG9jaygpOyB9IC8vIHBvc3Q6IGVsYXBzZWQoKT09MAotICBkb3VibGUgZWxhcHNlZCgpIGNvbnN0ICAgICAgICAgICAgICAgICAgLy8gcmV0dXJuIGVsYXBzZWQgdGltZSBpbiBzZWNvbmRzCi0gICAgeyByZXR1cm4gIGRvdWJsZShzdGQ6OmNsb2NrKCkgLSBfc3RhcnRfdGltZSkgLyBDTE9DS1NfUEVSX1NFQzsgfQotCi0gIGRvdWJsZSBlbGFwc2VkX21heCgpIGNvbnN0ICAgLy8gcmV0dXJuIGVzdGltYXRlZCBtYXhpbXVtIHZhbHVlIGZvciBlbGFwc2VkKCkKLSAgLy8gUG9ydGFiaWxpdHkgd2FybmluZzogZWxhcHNlZF9tYXgoKSBtYXkgcmV0dXJuIHRvbyBoaWdoIGEgdmFsdWUgb24gc3lzdGVtcwotICAvLyB3aGVyZSBzdGQ6OmNsb2NrX3Qgb3ZlcmZsb3dzIG9yIHJlc2V0cyBhdCBzdXJwcmlzaW5nIHZhbHVlcy4KLSAgewotICAgIHJldHVybiAoZG91YmxlKChzdGQ6Om51bWVyaWNfbGltaXRzPHN0ZDo6Y2xvY2tfdD46Om1heCkoKSkKLSAgICAgICAtIGRvdWJsZShfc3RhcnRfdGltZSkpIC8gZG91YmxlKENMT0NLU19QRVJfU0VDKTsgCi0gIH0KLQotICBkb3VibGUgZWxhcHNlZF9taW4oKSBjb25zdCAgICAgICAgICAgIC8vIHJldHVybiBtaW5pbXVtIHZhbHVlIGZvciBlbGFwc2VkKCkKLSAgIHsgcmV0dXJuIGRvdWJsZSgxKS9kb3VibGUoQ0xPQ0tTX1BFUl9TRUMpOyB9Ci0KLSBwcml2YXRlOgotICBzdGQ6OmNsb2NrX3QgX3N0YXJ0X3RpbWU7Ci19OyAvLyB0aW1lcgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1RJTUVSX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90dXBsZS9kZXRhaWwvdHVwbGVfYmFzaWMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90dXBsZS9kZXRhaWwvdHVwbGVfYmFzaWMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYmI2Nzc0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHVwbGUvZGV0YWlsL3R1cGxlX2Jhc2ljLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk4MCArMCwwIEBACi0vLyAgdHVwbGVfYmFzaWMuaHBwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMCBKYWFra28gSmFydmkgKGphYWtrby5qYXJ2aUBjcy51dHUuZmkpCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnCi0KLS8vIE91dHNpZGUgaGVscDoKLS8vIFRoaXMgYW5kIHRoYXQsIEdhcnkgUG93ZWxsLgotLy8gRml4ZWQgcmV0dXJuIHR5cGVzIGZvciBnZXRfaGVhZC9nZXRfdGFpbAotLy8gKCBhbmQgb3RoZXIgYnVncyApIHBlciBzdWdnZXN0aW9uIG9mIEplbnMgTWF1cmVyCi0vLyBzaW1wbGlmaWVkIGVsZW1lbnQgdHlwZSBhY2Nlc3NvcnMgKyBidWcgZml4ICAoSmVyZW15IFNpZWspCi0vLyBTZXZlcmFsIGNoYW5nZXMvYWRkaXRpb25zIGFjY29yZGluZyB0byBzdWdnZXN0aW9ucyBieSBEb3VnbGFzIEdyZWdvciwKLS8vIFdpbGxpYW0gS2VtcGYsIFZlc2EgS2Fydm9uZW4sIEpvaG4gTWF4IFNrYWxsZXIsIEVkIEJyZXksIEJlbWFuIERhd2VzLAotLy8gRGF2aWQgQWJyYWhhbXMuCi0KLS8vIFJldmlzaW9uIGhpc3Rvcnk6Ci0vLyAyMDAyIDA1IDAxIEh1Z28gRHVuY2FuOiBGaXggZm9yIEJvcmxhbmQgYWZ0ZXIgSmFha2tvJ3MgcHJldmlvdXMgY2hhbmdlcwotLy8gMjAwMiAwNCAxOCBKYWFra286IHR1cGxlIGVsZW1lbnQgdHlwZXMgY2FuIGJlIHZvaWQgb3IgcGxhaW4gZnVuY3Rpb24KLS8vICAgICAgICAgICAgICAgICAgICB0eXBlcywgYXMgbG9uZyBhcyBubyBvYmplY3QgaXMgY3JlYXRlZC4KLS8vICAgICAgICAgICAgICAgICAgICBUdXBsZSBvYmplY3RzIGNhbiBubyBob2xkIGV2ZW4gbm9uY29weWFibGUgdHlwZXMKLS8vICAgICAgICAgICAgICAgICAgICBzdWNoIGFzIGFycmF5cy4KLS8vIDIwMDEgMTAgMjIgSm9obiBNYWRkb2NrCi0vLyAgICAgIEZpeGVzIGZvciBCb3JsYW5kIEMrKwotLy8gMjAwMSAwOCAzMCBEYXZpZCBBYnJhaGFtcwotLy8gICAgICBBZGRlZCBkZWZhdWx0IGNvbnN0cnVjdG9yIGZvciBjb25zPD4uCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX1RVUExFX0JBU0lDX0hQUAotI2RlZmluZSBORE5CT09TVF9UVVBMRV9CQVNJQ19IUFAKLQotCi0jaW5jbHVkZSA8dXRpbGl0eT4gLy8gbmVlZGVkIGZvciB0aGUgYXNzaWdubWVudCBmcm9tIHBhaXIgdG8gdHVwbGUKLQotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2N2X3RyYWl0cy5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvZnVuY3Rpb25fdHJhaXRzLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC91dGlsaXR5L3N3YXAuaHBwIgotCi0jaW5jbHVkZSAibmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwIiAvLyBuZWVkZWQgZm9yIE5ETkJPT1NUX1dPUktBUk9VTkQKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSB0dXBsZXMgewotCi0vLyAtLSBudWxsX3R5cGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLXN0cnVjdCBudWxsX3R5cGUge307Ci0KLS8vIGEgaGVscGVyIGZ1bmN0aW9uIHRvIHByb3ZpZGUgYSBjb25zdCBudWxsX3R5cGUgdHlwZSB0ZW1wb3JhcnkKLW5hbWVzcGFjZSBkZXRhaWwgewotICBpbmxpbmUgY29uc3QgbnVsbF90eXBlIGNudWxsKCkgeyByZXR1cm4gbnVsbF90eXBlKCk7IH0KLQotCi0vLyAtLSBpZiBjb25zdHJ1Y3QgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBQcm9wb3NlZCBieSBLcnp5c3p0b2YgQ3phcm5lY2tpIGFuZCBVbHJpY2ggRWlzZW5lY2tlcgotCi10ZW1wbGF0ZSA8Ym9vbCBJZiwgY2xhc3MgVGhlbiwgY2xhc3MgRWxzZT4gc3RydWN0IElGIHsgdHlwZWRlZiBUaGVuIFJFVDsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFRoZW4sIGNsYXNzIEVsc2U+IHN0cnVjdCBJRjxmYWxzZSwgVGhlbiwgRWxzZT4gewotICB0eXBlZGVmIEVsc2UgUkVUOwotfTsKLQotfSAvLyBlbmQgZGV0YWlsCi0KLS8vIC0gY29ucyBmb3J3YXJkIGRlY2xhcmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi10ZW1wbGF0ZSA8Y2xhc3MgSFQsIGNsYXNzIFRUPiBzdHJ1Y3QgY29uczsKLQotCi0vLyAtIHR1cGxlIGZvcndhcmQgZGVjbGFyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLXRlbXBsYXRlIDwKLSAgY2xhc3MgVDAgPSBudWxsX3R5cGUsIGNsYXNzIFQxID0gbnVsbF90eXBlLCBjbGFzcyBUMiA9IG51bGxfdHlwZSwKLSAgY2xhc3MgVDMgPSBudWxsX3R5cGUsIGNsYXNzIFQ0ID0gbnVsbF90eXBlLCBjbGFzcyBUNSA9IG51bGxfdHlwZSwKLSAgY2xhc3MgVDYgPSBudWxsX3R5cGUsIGNsYXNzIFQ3ID0gbnVsbF90eXBlLCBjbGFzcyBUOCA9IG51bGxfdHlwZSwKLSAgY2xhc3MgVDkgPSBudWxsX3R5cGU+Ci1jbGFzcyB0dXBsZTsKLQotLy8gdHVwbGVfbGVuZ3RoIGZvcndhcmQgZGVjbGFyYXRpb24KLXRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBsZW5ndGg7Ci0KLQotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gLS0gZ2VuZXJhdGUgZXJyb3IgdGVtcGxhdGUsIHJlZmVyZW5jaW5nIHRvIG5vbi1leGlzdGluZyBtZW1iZXJzIG9mIHRoaXMKLS8vIHRlbXBsYXRlIGlzIHVzZWQgdG8gcHJvZHVjZSBjb21waWxhdGlvbiBlcnJvcnMgaW50ZW50aW9uYWxseQotdGVtcGxhdGU8Y2xhc3MgVD4KLWNsYXNzIGdlbmVyYXRlX2Vycm9yOwotCi10ZW1wbGF0ZTxpbnQgTj4KLXN0cnVjdCBkcm9wX2Zyb250IHsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBUdXBsZT4KLSAgICBzdHJ1Y3QgYXBwbHkgewotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgZHJvcF9mcm9udDxOLTE+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUKLSAgICAgICAgICAgIGFwcGx5PFR1cGxlPiBuZXh0OwotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbmV4dDo6dHlwZTo6dGFpbF90eXBlIHR5cGU7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB0eXBlJiBjYWxsKGNvbnN0IFR1cGxlJiB0dXApIHsKLSAgICAgICAgICAgIHJldHVybiBuZXh0OjpjYWxsKHR1cCkudGFpbDsKLSAgICAgICAgfQotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZHJvcF9mcm9udDwwPiB7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgVHVwbGU+Ci0gICAgc3RydWN0IGFwcGx5IHsKLSAgICAgICAgdHlwZWRlZiBUdXBsZSB0eXBlOwotICAgICAgICBzdGF0aWMgY29uc3QgdHlwZSYgY2FsbChjb25zdCBUdXBsZSYgdHVwKSB7Ci0gICAgICAgICAgICByZXR1cm4gdHVwOwotICAgICAgICB9Ci0gICAgfTsKLX07Ci0KLX0gLy8gZW5kIG9mIG5hbWVzcGFjZSBkZXRhaWwKLQotCi0vLyAtY29ucyB0eXBlIGFjY2Vzc29ycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8TixUPjo6dHlwZSBnZXRzIHRoZSB0eXBlIG9mIHRoZQotLy8gTnRoIGVsZW1lbnQgb3QgVCwgZmlyc3QgZWxlbWVudCBpcyBhdCBpbmRleCAwCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfU1BFQ0lBTElaQVRJT05TCi0KLXRlbXBsYXRlPGludCBOLCBjbGFzcyBUPgotc3RydWN0IGVsZW1lbnQKLXsKLSAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGRldGFpbDo6ZHJvcF9mcm9udDxOPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFCi0gICAgICBhcHBseTxUPjo6dHlwZTo6aGVhZF90eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxpbnQgTiwgY2xhc3MgVD4KLXN0cnVjdCBlbGVtZW50PE4sIGNvbnN0IFQ+Ci17Ci1wcml2YXRlOgotICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgZGV0YWlsOjpkcm9wX2Zyb250PE4+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUKLSAgICAgIGFwcGx5PFQ+Ojp0eXBlOjpoZWFkX3R5cGUgdW5xdWFsaWZpZWRfdHlwZTsKLXB1YmxpYzoKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXyw8MHg2MDApCi0gIHR5cGVkZWYgY29uc3QgdW5xdWFsaWZpZWRfdHlwZSB0eXBlOwotI2Vsc2UKLSAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG5kbmJvb3N0OjphZGRfY29uc3Q8dW5xdWFsaWZpZWRfdHlwZT46OnR5cGUgdHlwZTsKLSNlbmRpZgotfTsKLSNlbHNlIC8vIGRlZiBORE5CT09TVF9OT19DVl9TUEVDSUFMSVpBVElPTlMKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPGludCBOLCBjbGFzcyBULCBib29sIElzQ29uc3Q+Ci1zdHJ1Y3QgZWxlbWVudF9pbXBsCi17Ci0gIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBkZXRhaWw6OmRyb3BfZnJvbnQ8Tj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURQotICAgICAgYXBwbHk8VD46OnR5cGU6OmhlYWRfdHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8aW50IE4sIGNsYXNzIFQ+Ci1zdHJ1Y3QgZWxlbWVudF9pbXBsPE4sIFQsIHRydWUgLyogSXNDb25zdCAqLz4KLXsKLSAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGRldGFpbDo6ZHJvcF9mcm9udDxOPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFCi0gICAgICBhcHBseTxUPjo6dHlwZTo6aGVhZF90eXBlIHVucXVhbGlmaWVkX3R5cGU7Ci0gIHR5cGVkZWYgY29uc3QgdW5xdWFsaWZpZWRfdHlwZSB0eXBlOwotfTsKLQotfSAvLyBlbmQgb2YgbmFtZXNwYWNlIGRldGFpbAotCi0KLXRlbXBsYXRlPGludCBOLCBjbGFzcyBUPgotc3RydWN0IGVsZW1lbnQ6Ci0gIHB1YmxpYyBkZXRhaWw6OmVsZW1lbnRfaW1wbDxOLCBULCA6Om5kbmJvb3N0Ojppc19jb25zdDxUPjo6dmFsdWU+Ci17Ci19OwotCi0jZW5kaWYKLQotCi0vLyAtZ2V0IGZ1bmN0aW9uIHRlbXBsYXRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gVXNhZ2U6IGdldDxOPihhVHVwbGUpCi0KLS8vIC0tIHNvbWUgdHJhaXRzIGNsYXNzZXMgZm9yIGdldCBmdW5jdGlvbnMKLQotLy8gYWNjZXNzIHRyYWl0cyBsaWZ0ZWQgZnJvbSBkZXRhaWwgbmFtZXNwYWNlIHRvIGJlIHBhcnQgb2YgdGhlIGludGVyZmFjZSwKLS8vIChKb2VsIGRlIEd1em1hbidzIHN1Z2dlc3Rpb24pLiBSYXRpb25hbGU6IGdldCBmdW5jdGlvbnMgYXJlIHBhcnQgb2YgdGhlCi0vLyBpbnRlcmZhY2UsIHNvIHNob3VsZCB0aGUgd2F5IHRvIGV4cHJlc3MgdGhlaXIgcmV0dXJuIHR5cGVzIGJlLgotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IGFjY2Vzc190cmFpdHMgewotICB0eXBlZGVmIGNvbnN0IFQmIGNvbnN0X3R5cGU7Ci0gIHR5cGVkZWYgVCYgbm9uX2NvbnN0X3R5cGU7Ci0KLSAgdHlwZWRlZiBjb25zdCB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlJiBwYXJhbWV0ZXJfdHlwZTsKLQotLy8gdXNlZCBhcyB0aGUgdHVwbGUgY29uc3RydWN0b3JzIHBhcmFtZXRlciB0eXBlcwotLy8gUmF0aW9uYWxlOiBub24tcmVmZXJlbmNlIHR1cGxlIGVsZW1lbnQgdHlwZXMgY2FuIGJlIGN2LXF1YWxpZmllZC4KLS8vIEl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBpbml0aWFsaXplIHN1Y2ggdHlwZXMgd2l0aCB0ZW1wb3JhcmllcywKLS8vIGFuZCB3aGVuIGJpbmRpbmcgdGVtcG9yYXJpZXMgdG8gcmVmZXJlbmNlcywgdGhlIHJlZmVyZW5jZSBtdXN0Ci0vLyBiZSBub24tdm9sYXRpbGUgYW5kIGNvbnN0LiA4LjUuMy4gKDUpCi19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IGFjY2Vzc190cmFpdHM8VCY+IHsKLQotICB0eXBlZGVmIFQmIGNvbnN0X3R5cGU7Ci0gIHR5cGVkZWYgVCYgbm9uX2NvbnN0X3R5cGU7Ci0KLSAgdHlwZWRlZiBUJiBwYXJhbWV0ZXJfdHlwZTsKLX07Ci0KLS8vIGdldCBmdW5jdGlvbiBmb3Igbm9uLWNvbnN0IGNvbnMtbGlzdHMsIHJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIGVsZW1lbnQKLQotdGVtcGxhdGU8aW50IE4sIGNsYXNzIEhULCBjbGFzcyBUVD4KLWlubGluZSB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgZWxlbWVudDxOLCBjb25zPEhULCBUVD4gPjo6dHlwZQotICAgICAgICAgICAgICAgID46Om5vbl9jb25zdF90eXBlCi1nZXQoY29uczxIVCwgVFQ+JiBjIE5ETkJPT1NUX0FQUEVORF9FWFBMSUNJVF9URU1QTEFURV9OT05fVFlQRShpbnQsIE4pKSB7Ci0gIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBkZXRhaWw6OmRyb3BfZnJvbnQ8Tj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURQotICAgICAgYXBwbHk8Y29uczxIVCwgVFQ+ID4gaW1wbDsKLSAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGltcGw6OnR5cGUgY29uc19lbGVtZW50OwotICByZXR1cm4gY29uc3RfY2FzdDxjb25zX2VsZW1lbnQmPihpbXBsOjpjYWxsKGMpKS5oZWFkOwotfQotCi0vLyBnZXQgZnVuY3Rpb24gZm9yIGNvbnN0IGNvbnMtbGlzdHMsIHJldHVybnMgYSBjb25zdCByZWZlcmVuY2UgdG8KLS8vIHRoZSBlbGVtZW50LiBJZiB0aGUgZWxlbWVudCBpcyBhIHJlZmVyZW5jZSwgcmV0dXJucyB0aGUgcmVmZXJlbmNlCi0vLyBhcyBzdWNoICh0aGF0IGlzLCBjYW4gcmV0dXJuIGEgbm9uLWNvbnN0IHJlZmVyZW5jZSkKLXRlbXBsYXRlPGludCBOLCBjbGFzcyBIVCwgY2xhc3MgVFQ+Ci1pbmxpbmUgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIGVsZW1lbnQ8TiwgY29uczxIVCwgVFQ+ID46OnR5cGUKLSAgICAgICAgICAgICAgICA+Ojpjb25zdF90eXBlCi1nZXQoY29uc3QgY29uczxIVCwgVFQ+JiBjIE5ETkJPT1NUX0FQUEVORF9FWFBMSUNJVF9URU1QTEFURV9OT05fVFlQRShpbnQsIE4pKSB7Ci0gIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBkZXRhaWw6OmRyb3BfZnJvbnQ8Tj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURQotICAgICAgYXBwbHk8Y29uczxIVCwgVFQ+ID4gaW1wbDsKLSAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGltcGw6OnR5cGUgY29uc19lbGVtZW50OwotICByZXR1cm4gaW1wbDo6Y2FsbChjKS5oZWFkOwotfQotCi0vLyAtLSB0aGUgY29ucyB0ZW1wbGF0ZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyAgVGhlc2UgaGVscGVyIHRlbXBsYXRlcyB3cmFwIHZvaWQgdHlwZXMgYW5kIHBsYWluIGZ1bmN0aW9uIHR5cGVzLgotLy8gIFRoZSByZWF0aW9uYWxlIGlzIHRvIGFsbG93IG9uZSB0byB3cml0ZSB0dXBsZSB0eXBlcyB3aXRoIHRob3NlIHR5cGVzCi0vLyAgYXMgZWxlbWVudHMsIGV2ZW4gdGhvdWdoIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBpbnN0YW50aWF0ZSBzdWNoIG9iamVjdC4KLS8vICBFLmc6IHR5cGVkZWYgdHVwbGU8dm9pZD4gc29tZV90eXBlOyAvLyBvawotLy8gIGJ1dDogc29tZV90eXBlIHg7IC8vIGZhaWxzCi0KLXRlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBub25fc3RvcmVhYmxlX3R5cGUgewotICBub25fc3RvcmVhYmxlX3R5cGUoKTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3Qgd3JhcF9ub25fc3RvcmVhYmxlX3R5cGUgewotICB0eXBlZGVmIHR5cGVuYW1lIElGPAotICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmN0aW9uPFQ+Ojp2YWx1ZSwgbm9uX3N0b3JlYWJsZV90eXBlPFQ+LCBUCi0gID46OlJFVCB0eXBlOwotfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCB3cmFwX25vbl9zdG9yZWFibGVfdHlwZTx2b2lkPiB7Ci0gIHR5cGVkZWYgbm9uX3N0b3JlYWJsZV90eXBlPHZvaWQ+IHR5cGU7Ci19OwotCi19IC8vIGRldGFpbAotCi10ZW1wbGF0ZSA8Y2xhc3MgSFQsIGNsYXNzIFRUPgotc3RydWN0IGNvbnMgewotCi0gIHR5cGVkZWYgSFQgaGVhZF90eXBlOwotICB0eXBlZGVmIFRUIHRhaWxfdHlwZTsKLQotICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgZGV0YWlsOjp3cmFwX25vbl9zdG9yZWFibGVfdHlwZTxoZWFkX3R5cGU+Ojp0eXBlIHN0b3JlZF9oZWFkX3R5cGU7Ci0KLSAgc3RvcmVkX2hlYWRfdHlwZSBoZWFkOwotICB0YWlsX3R5cGUgdGFpbDsKLQotICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPHN0b3JlZF9oZWFkX3R5cGU+Ojpub25fY29uc3RfdHlwZQotICBnZXRfaGVhZCgpIHsgcmV0dXJuIGhlYWQ7IH0KLQotICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPHRhaWxfdHlwZT46Om5vbl9jb25zdF90eXBlCi0gIGdldF90YWlsKCkgeyByZXR1cm4gdGFpbDsgfQotCi0gIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8c3RvcmVkX2hlYWRfdHlwZT46OmNvbnN0X3R5cGUKLSAgZ2V0X2hlYWQoKSBjb25zdCB7IHJldHVybiBoZWFkOyB9Ci0KLSAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czx0YWlsX3R5cGU+Ojpjb25zdF90eXBlCi0gIGdldF90YWlsKCkgY29uc3QgeyByZXR1cm4gdGFpbDsgfQotCi0gIGNvbnMoKSA6IGhlYWQoKSwgdGFpbCgpIHt9Ci0gIC8vICBjb25zKCkgOiBoZWFkKGRldGFpbDo6ZGVmYXVsdF9hcmc8SFQ+OjpmKCkpLCB0YWlsKCkge30KLQotICAvLyB0aGUgYXJndW1lbnQgZm9yIGhlYWQgaXMgbm90IHN0cmljdGx5IG5lZWRlZCwgYnV0IGl0IHByZXZlbnRzCi0gIC8vIGFycmF5IHR5cGUgZWxlbWVudHMuIFRoaXMgaXMgZ29vZCwgc2luY2UgYXJyYXkgdHlwZSBlbGVtZW50cwotICAvLyBjYW5ub3QgYmUgc3VwcG9ydGVkIHByb3Blcmx5IGluIGFueSBjYXNlIChubyBhc3NpZ25tZW50LAotICAvLyBjb3B5IHdvcmtzIG9ubHkgaWYgdGhlIHRhaWxzIGFyZSBleGFjdGx5IHRoZSBzYW1lIHR5cGUsIC4uLikKLQotICBjb25zKHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8c3RvcmVkX2hlYWRfdHlwZT46OnBhcmFtZXRlcl90eXBlIGgsCi0gICAgICAgY29uc3QgdGFpbF90eXBlJiB0KQotICAgIDogaGVhZCAoaCksIHRhaWwodCkge30KLQotICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgVDQsIGNsYXNzIFQ1LAotICAgICAgICAgICAgY2xhc3MgVDYsIGNsYXNzIFQ3LCBjbGFzcyBUOCwgY2xhc3MgVDksIGNsYXNzIFQxMD4KLSAgY29ucyggVDEmIHQxLCBUMiYgdDIsIFQzJiB0MywgVDQmIHQ0LCBUNSYgdDUsCi0gICAgICAgIFQ2JiB0NiwgVDcmIHQ3LCBUOCYgdDgsIFQ5JiB0OSwgVDEwJiB0MTAgKQotICAgIDogaGVhZCAodDEpLAotICAgICAgdGFpbCAodDIsIHQzLCB0NCwgdDUsIHQ2LCB0NywgdDgsIHQ5LCB0MTAsIGRldGFpbDo6Y251bGwoKSkKLSAgICAgIHt9Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgVDQsIGNsYXNzIFQ1LAotICAgICAgICAgICAgY2xhc3MgVDYsIGNsYXNzIFQ3LCBjbGFzcyBUOCwgY2xhc3MgVDksIGNsYXNzIFQxMD4KLSAgY29ucyggY29uc3QgbnVsbF90eXBlJiAvKnQxKi8sIFQyJiB0MiwgVDMmIHQzLCBUNCYgdDQsIFQ1JiB0NSwKLSAgICAgICAgVDYmIHQ2LCBUNyYgdDcsIFQ4JiB0OCwgVDkmIHQ5LCBUMTAmIHQxMCApCi0gICAgOiBoZWFkICgpLAotICAgICAgdGFpbCAodDIsIHQzLCB0NCwgdDUsIHQ2LCB0NywgdDgsIHQ5LCB0MTAsIGRldGFpbDo6Y251bGwoKSkKLSAgICAgIHt9Ci0KLQotICB0ZW1wbGF0ZSA8Y2xhc3MgSFQyLCBjbGFzcyBUVDI+Ci0gIGNvbnMoIGNvbnN0IGNvbnM8SFQyLCBUVDI+JiB1ICkgOiBoZWFkKHUuaGVhZCksIHRhaWwodS50YWlsKSB7fQotCi0gIHRlbXBsYXRlIDxjbGFzcyBIVDIsIGNsYXNzIFRUMj4KLSAgY29ucyYgb3BlcmF0b3I9KCBjb25zdCBjb25zPEhUMiwgVFQyPiYgdSApIHsKLSAgICBoZWFkPXUuaGVhZDsgdGFpbD11LnRhaWw7IHJldHVybiAqdGhpczsKLSAgfQotCi0gIC8vIG11c3QgZGVmaW5lIGFzc2lnbm1lbnQgb3BlcmF0b3IgZXhwbGljaXRseSwgaW1wbGljaXQgdmVyc2lvbiBpcwotICAvLyBpbGxmb3JtZWQgaWYgSFQgaXMgYSByZWZlcmVuY2UgKDEyLjguICgxMikpCi0gIGNvbnMmIG9wZXJhdG9yPShjb25zdCBjb25zJiB1KSB7Ci0gICAgaGVhZCA9IHUuaGVhZDsgdGFpbCA9IHUudGFpbDsgIHJldHVybiAqdGhpczsKLSAgfQotCi0gIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+Ci0gIGNvbnMmIG9wZXJhdG9yPSggY29uc3Qgc3RkOjpwYWlyPFQxLCBUMj4mIHUgKSB7Ci0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChsZW5ndGg8Y29ucz46OnZhbHVlID09IDIpOyAvLyBjaGVjayBsZW5ndGggPSAyCi0gICAgaGVhZCA9IHUuZmlyc3Q7IHRhaWwuaGVhZCA9IHUuc2Vjb25kOyByZXR1cm4gKnRoaXM7Ci0gIH0KLQotICAvLyBnZXQgbWVtYmVyIGZ1bmN0aW9ucyAobm9uLWNvbnN0IGFuZCBjb25zdCkKLSAgdGVtcGxhdGUgPGludCBOPgotICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPAotICAgICAgICAgICAgIHR5cGVuYW1lIGVsZW1lbnQ8TiwgY29uczxIVCwgVFQ+ID46OnR5cGUKLSAgICAgICAgICAgPjo6bm9uX2NvbnN0X3R5cGUKLSAgZ2V0KCkgewotICAgIHJldHVybiBuZG5ib29zdDo6dHVwbGVzOjpnZXQ8Tj4oKnRoaXMpOyAvLyBkZWxlZ2F0ZSB0byBub24tbWVtYmVyIGdldAotICB9Ci0KLSAgdGVtcGxhdGUgPGludCBOPgotICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPAotICAgICAgICAgICAgIHR5cGVuYW1lIGVsZW1lbnQ8TiwgY29uczxIVCwgVFQ+ID46OnR5cGUKLSAgICAgICAgICAgPjo6Y29uc3RfdHlwZQotICBnZXQoKSBjb25zdCB7Ci0gICAgcmV0dXJuIG5kbmJvb3N0Ojp0dXBsZXM6OmdldDxOPigqdGhpcyk7IC8vIGRlbGVnYXRlIHRvIG5vbi1tZW1iZXIgZ2V0Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBIVD4KLXN0cnVjdCBjb25zPEhULCBudWxsX3R5cGU+IHsKLQotICB0eXBlZGVmIEhUIGhlYWRfdHlwZTsKLSAgdHlwZWRlZiBudWxsX3R5cGUgdGFpbF90eXBlOwotICB0eXBlZGVmIGNvbnM8SFQsIG51bGxfdHlwZT4gc2VsZl90eXBlOwotCi0gIHR5cGVkZWYgdHlwZW5hbWUKLSAgICBkZXRhaWw6OndyYXBfbm9uX3N0b3JlYWJsZV90eXBlPGhlYWRfdHlwZT46OnR5cGUgc3RvcmVkX2hlYWRfdHlwZTsKLSAgc3RvcmVkX2hlYWRfdHlwZSBoZWFkOwotCi0gIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8c3RvcmVkX2hlYWRfdHlwZT46Om5vbl9jb25zdF90eXBlCi0gIGdldF9oZWFkKCkgeyByZXR1cm4gaGVhZDsgfQotCi0gIG51bGxfdHlwZSBnZXRfdGFpbCgpIHsgcmV0dXJuIG51bGxfdHlwZSgpOyB9Ci0KLSAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxzdG9yZWRfaGVhZF90eXBlPjo6Y29uc3RfdHlwZQotICBnZXRfaGVhZCgpIGNvbnN0IHsgcmV0dXJuIGhlYWQ7IH0KLQotICBjb25zdCBudWxsX3R5cGUgZ2V0X3RhaWwoKSBjb25zdCB7IHJldHVybiBudWxsX3R5cGUoKTsgfQotCi0gIC8vICBjb25zKCkgOiBoZWFkKGRldGFpbDo6ZGVmYXVsdF9hcmc8SFQ+OjpmKCkpIHt9Ci0gIGNvbnMoKSA6IGhlYWQoKSB7fQotCi0gIGNvbnModHlwZW5hbWUgYWNjZXNzX3RyYWl0czxzdG9yZWRfaGVhZF90eXBlPjo6cGFyYW1ldGVyX3R5cGUgaCwKLSAgICAgICBjb25zdCBudWxsX3R5cGUmID0gbnVsbF90eXBlKCkpCi0gICAgOiBoZWFkIChoKSB7fQotCi0gIHRlbXBsYXRlPGNsYXNzIFQxPgotICBjb25zKFQxJiB0MSwgY29uc3QgbnVsbF90eXBlJiwgY29uc3QgbnVsbF90eXBlJiwgY29uc3QgbnVsbF90eXBlJiwKLSAgICAgICBjb25zdCBudWxsX3R5cGUmLCBjb25zdCBudWxsX3R5cGUmLCBjb25zdCBudWxsX3R5cGUmLAotICAgICAgIGNvbnN0IG51bGxfdHlwZSYsIGNvbnN0IG51bGxfdHlwZSYsIGNvbnN0IG51bGxfdHlwZSYpCi0gIDogaGVhZCAodDEpIHt9Ci0KLSAgY29ucyhjb25zdCBudWxsX3R5cGUmLAotICAgICAgIGNvbnN0IG51bGxfdHlwZSYsIGNvbnN0IG51bGxfdHlwZSYsIGNvbnN0IG51bGxfdHlwZSYsCi0gICAgICAgY29uc3QgbnVsbF90eXBlJiwgY29uc3QgbnVsbF90eXBlJiwgY29uc3QgbnVsbF90eXBlJiwKLSAgICAgICBjb25zdCBudWxsX3R5cGUmLCBjb25zdCBudWxsX3R5cGUmLCBjb25zdCBudWxsX3R5cGUmKQotICA6IGhlYWQgKCkge30KLQotICB0ZW1wbGF0ZSA8Y2xhc3MgSFQyPgotICBjb25zKCBjb25zdCBjb25zPEhUMiwgbnVsbF90eXBlPiYgdSApIDogaGVhZCh1LmhlYWQpIHt9Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIEhUMj4KLSAgY29ucyYgb3BlcmF0b3I9KGNvbnN0IGNvbnM8SFQyLCBudWxsX3R5cGU+JiB1ICkKLSAgeyBoZWFkID0gdS5oZWFkOyByZXR1cm4gKnRoaXM7IH0KLQotICAvLyBtdXN0IGRlZmluZSBhc3NpZ25tZW50IG9wZXJhdG9yIGV4cGxpY2l0ZWx5LCBpbXBsaWNpdCB2ZXJzaW9uCi0gIC8vIGlzIGlsbGZvcm1lZCBpZiBIVCBpcyBhIHJlZmVyZW5jZQotICBjb25zJiBvcGVyYXRvcj0oY29uc3QgY29ucyYgdSkgeyBoZWFkID0gdS5oZWFkOyByZXR1cm4gKnRoaXM7IH0KLQotICB0ZW1wbGF0ZSA8aW50IE4+Ci0gIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8Ci0gICAgICAgICAgICAgdHlwZW5hbWUgZWxlbWVudDxOLCBzZWxmX3R5cGU+Ojp0eXBlCi0gICAgICAgICAgICA+Ojpub25fY29uc3RfdHlwZQotICBnZXQoTkROQk9PU1RfRVhQTElDSVRfVEVNUExBVEVfTk9OX1RZUEUoaW50LCBOKSkgewotICAgIHJldHVybiBuZG5ib29zdDo6dHVwbGVzOjpnZXQ8Tj4oKnRoaXMpOwotICB9Ci0KLSAgdGVtcGxhdGUgPGludCBOPgotICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPAotICAgICAgICAgICAgIHR5cGVuYW1lIGVsZW1lbnQ8Tiwgc2VsZl90eXBlPjo6dHlwZQotICAgICAgICAgICA+Ojpjb25zdF90eXBlCi0gIGdldChORE5CT09TVF9FWFBMSUNJVF9URU1QTEFURV9OT05fVFlQRShpbnQsIE4pKSBjb25zdCB7Ci0gICAgcmV0dXJuIG5kbmJvb3N0Ojp0dXBsZXM6OmdldDxOPigqdGhpcyk7Ci0gIH0KLQotfTsKLQotLy8gdGVtcGxhdGVzIGZvciBmaW5kaW5nIG91dCB0aGUgbGVuZ3RoIG9mIHRoZSB0dXBsZSAtLS0tLS0tLS0tLS0tLS0tLS0tCi0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgbGVuZ3RoICB7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gMSArIGxlbmd0aDx0eXBlbmFtZSBUOjp0YWlsX3R5cGU+Ojp2YWx1ZSk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGVuZ3RoPHR1cGxlPD4gPiB7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gMCk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGVuZ3RoPHR1cGxlPD4gY29uc3Q+IHsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSAwKTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsZW5ndGg8bnVsbF90eXBlPiB7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gMCk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGVuZ3RoPG51bGxfdHlwZSBjb25zdD4gewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9IDApOwotfTsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vIFR1cGxlIHRvIGNvbnMgbWFwcGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi10ZW1wbGF0ZSA8Y2xhc3MgVDAsIGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0LAotICAgICAgICAgIGNsYXNzIFQ1LCBjbGFzcyBUNiwgY2xhc3MgVDcsIGNsYXNzIFQ4LCBjbGFzcyBUOT4KLXN0cnVjdCBtYXBfdHVwbGVfdG9fY29ucwotewotICB0eXBlZGVmIGNvbnM8VDAsCi0gICAgICAgICAgICAgICB0eXBlbmFtZSBtYXBfdHVwbGVfdG9fY29uczxUMSwgVDIsIFQzLCBUNCwgVDUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUNiwgVDcsIFQ4LCBUOSwgbnVsbF90eXBlPjo6dHlwZQotICAgICAgICAgICAgICA+IHR5cGU7Ci19OwotCi0vLyBUaGUgZW1wdHkgdHVwbGUgaXMgYSBudWxsX3R5cGUKLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgbWFwX3R1cGxlX3RvX2NvbnM8bnVsbF90eXBlLCBudWxsX3R5cGUsIG51bGxfdHlwZSwgbnVsbF90eXBlLCBudWxsX3R5cGUsIG51bGxfdHlwZSwgbnVsbF90eXBlLCBudWxsX3R5cGUsIG51bGxfdHlwZSwgbnVsbF90eXBlPgotewotICB0eXBlZGVmIG51bGxfdHlwZSB0eXBlOwotfTsKLQotfSAvLyBlbmQgZGV0YWlsCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIC0tIHR1cGxlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotdGVtcGxhdGUgPGNsYXNzIFQwLCBjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBUNCwKLSAgICAgICAgICBjbGFzcyBUNSwgY2xhc3MgVDYsIGNsYXNzIFQ3LCBjbGFzcyBUOCwgY2xhc3MgVDk+Ci0KLWNsYXNzIHR1cGxlIDoKLSAgcHVibGljIGRldGFpbDo6bWFwX3R1cGxlX3RvX2NvbnM8VDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDk+Ojp0eXBlCi17Ci1wdWJsaWM6Ci0gIHR5cGVkZWYgdHlwZW5hbWUKLSAgICBkZXRhaWw6Om1hcF90dXBsZV90b19jb25zPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5Pjo6dHlwZSBpbmhlcml0ZWQ7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgaW5oZXJpdGVkOjpoZWFkX3R5cGUgaGVhZF90eXBlOwotICB0eXBlZGVmIHR5cGVuYW1lIGluaGVyaXRlZDo6dGFpbF90eXBlIHRhaWxfdHlwZTsKLQotCi0vLyBhY2Nlc3NfdHJhaXRzPFQ+OjpwYXJhbWV0ZXJfdHlwZSB0YWtlcyBub24tcmVmZXJlbmNlIHR5cGVzIGFzIGNvbnN0IFQmCi0gIHR1cGxlKCkge30KLQotICB0dXBsZSh0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQwPjo6cGFyYW1ldGVyX3R5cGUgdDApCi0gICAgOiBpbmhlcml0ZWQodDAsIGRldGFpbDo6Y251bGwoKSwgZGV0YWlsOjpjbnVsbCgpLCBkZXRhaWw6OmNudWxsKCksCi0gICAgICAgICAgICAgICAgZGV0YWlsOjpjbnVsbCgpLCBkZXRhaWw6OmNudWxsKCksIGRldGFpbDo6Y251bGwoKSwKLSAgICAgICAgICAgICAgICBkZXRhaWw6OmNudWxsKCksIGRldGFpbDo6Y251bGwoKSwgZGV0YWlsOjpjbnVsbCgpKSB7fQotCi0gIHR1cGxlKHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDA+OjpwYXJhbWV0ZXJfdHlwZSB0MCwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMT46OnBhcmFtZXRlcl90eXBlIHQxKQotICAgIDogaW5oZXJpdGVkKHQwLCB0MSwgZGV0YWlsOjpjbnVsbCgpLCBkZXRhaWw6OmNudWxsKCksCi0gICAgICAgICAgICAgICAgZGV0YWlsOjpjbnVsbCgpLCBkZXRhaWw6OmNudWxsKCksIGRldGFpbDo6Y251bGwoKSwKLSAgICAgICAgICAgICAgICBkZXRhaWw6OmNudWxsKCksIGRldGFpbDo6Y251bGwoKSwgZGV0YWlsOjpjbnVsbCgpKSB7fQotCi0gIHR1cGxlKHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDA+OjpwYXJhbWV0ZXJfdHlwZSB0MCwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMT46OnBhcmFtZXRlcl90eXBlIHQxLAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQyPjo6cGFyYW1ldGVyX3R5cGUgdDIpCi0gICAgOiBpbmhlcml0ZWQodDAsIHQxLCB0MiwgZGV0YWlsOjpjbnVsbCgpLCBkZXRhaWw6OmNudWxsKCksCi0gICAgICAgICAgICAgICAgZGV0YWlsOjpjbnVsbCgpLCBkZXRhaWw6OmNudWxsKCksIGRldGFpbDo6Y251bGwoKSwKLSAgICAgICAgICAgICAgICBkZXRhaWw6OmNudWxsKCksIGRldGFpbDo6Y251bGwoKSkge30KLQotICB0dXBsZSh0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQwPjo6cGFyYW1ldGVyX3R5cGUgdDAsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDE+OjpwYXJhbWV0ZXJfdHlwZSB0MSwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMj46OnBhcmFtZXRlcl90eXBlIHQyLAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQzPjo6cGFyYW1ldGVyX3R5cGUgdDMpCi0gICAgOiBpbmhlcml0ZWQodDAsIHQxLCB0MiwgdDMsIGRldGFpbDo6Y251bGwoKSwgZGV0YWlsOjpjbnVsbCgpLAotICAgICAgICAgICAgICAgIGRldGFpbDo6Y251bGwoKSwgZGV0YWlsOjpjbnVsbCgpLCBkZXRhaWw6OmNudWxsKCksCi0gICAgICAgICAgICAgICAgZGV0YWlsOjpjbnVsbCgpKSB7fQotCi0gIHR1cGxlKHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDA+OjpwYXJhbWV0ZXJfdHlwZSB0MCwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMT46OnBhcmFtZXRlcl90eXBlIHQxLAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQyPjo6cGFyYW1ldGVyX3R5cGUgdDIsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDM+OjpwYXJhbWV0ZXJfdHlwZSB0MywKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUND46OnBhcmFtZXRlcl90eXBlIHQ0KQotICAgIDogaW5oZXJpdGVkKHQwLCB0MSwgdDIsIHQzLCB0NCwgZGV0YWlsOjpjbnVsbCgpLCBkZXRhaWw6OmNudWxsKCksCi0gICAgICAgICAgICAgICAgZGV0YWlsOjpjbnVsbCgpLCBkZXRhaWw6OmNudWxsKCksIGRldGFpbDo6Y251bGwoKSkge30KLQotICB0dXBsZSh0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQwPjo6cGFyYW1ldGVyX3R5cGUgdDAsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDE+OjpwYXJhbWV0ZXJfdHlwZSB0MSwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMj46OnBhcmFtZXRlcl90eXBlIHQyLAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQzPjo6cGFyYW1ldGVyX3R5cGUgdDMsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDQ+OjpwYXJhbWV0ZXJfdHlwZSB0NCwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUNT46OnBhcmFtZXRlcl90eXBlIHQ1KQotICAgIDogaW5oZXJpdGVkKHQwLCB0MSwgdDIsIHQzLCB0NCwgdDUsIGRldGFpbDo6Y251bGwoKSwgZGV0YWlsOjpjbnVsbCgpLAotICAgICAgICAgICAgICAgIGRldGFpbDo6Y251bGwoKSwgZGV0YWlsOjpjbnVsbCgpKSB7fQotCi0gIHR1cGxlKHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDA+OjpwYXJhbWV0ZXJfdHlwZSB0MCwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMT46OnBhcmFtZXRlcl90eXBlIHQxLAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQyPjo6cGFyYW1ldGVyX3R5cGUgdDIsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDM+OjpwYXJhbWV0ZXJfdHlwZSB0MywKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUND46OnBhcmFtZXRlcl90eXBlIHQ0LAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQ1Pjo6cGFyYW1ldGVyX3R5cGUgdDUsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDY+OjpwYXJhbWV0ZXJfdHlwZSB0NikKLSAgICA6IGluaGVyaXRlZCh0MCwgdDEsIHQyLCB0MywgdDQsIHQ1LCB0NiwgZGV0YWlsOjpjbnVsbCgpLAotICAgICAgICAgICAgICAgIGRldGFpbDo6Y251bGwoKSwgZGV0YWlsOjpjbnVsbCgpKSB7fQotCi0gIHR1cGxlKHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDA+OjpwYXJhbWV0ZXJfdHlwZSB0MCwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMT46OnBhcmFtZXRlcl90eXBlIHQxLAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQyPjo6cGFyYW1ldGVyX3R5cGUgdDIsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDM+OjpwYXJhbWV0ZXJfdHlwZSB0MywKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUND46OnBhcmFtZXRlcl90eXBlIHQ0LAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQ1Pjo6cGFyYW1ldGVyX3R5cGUgdDUsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDY+OjpwYXJhbWV0ZXJfdHlwZSB0NiwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUNz46OnBhcmFtZXRlcl90eXBlIHQ3KQotICAgIDogaW5oZXJpdGVkKHQwLCB0MSwgdDIsIHQzLCB0NCwgdDUsIHQ2LCB0NywgZGV0YWlsOjpjbnVsbCgpLAotICAgICAgICAgICAgICAgIGRldGFpbDo6Y251bGwoKSkge30KLQotICB0dXBsZSh0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQwPjo6cGFyYW1ldGVyX3R5cGUgdDAsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDE+OjpwYXJhbWV0ZXJfdHlwZSB0MSwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMj46OnBhcmFtZXRlcl90eXBlIHQyLAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQzPjo6cGFyYW1ldGVyX3R5cGUgdDMsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDQ+OjpwYXJhbWV0ZXJfdHlwZSB0NCwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUNT46OnBhcmFtZXRlcl90eXBlIHQ1LAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQ2Pjo6cGFyYW1ldGVyX3R5cGUgdDYsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDc+OjpwYXJhbWV0ZXJfdHlwZSB0NywKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUOD46OnBhcmFtZXRlcl90eXBlIHQ4KQotICAgIDogaW5oZXJpdGVkKHQwLCB0MSwgdDIsIHQzLCB0NCwgdDUsIHQ2LCB0NywgdDgsIGRldGFpbDo6Y251bGwoKSkge30KLQotICB0dXBsZSh0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQwPjo6cGFyYW1ldGVyX3R5cGUgdDAsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDE+OjpwYXJhbWV0ZXJfdHlwZSB0MSwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMj46OnBhcmFtZXRlcl90eXBlIHQyLAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQzPjo6cGFyYW1ldGVyX3R5cGUgdDMsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDQ+OjpwYXJhbWV0ZXJfdHlwZSB0NCwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUNT46OnBhcmFtZXRlcl90eXBlIHQ1LAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQ2Pjo6cGFyYW1ldGVyX3R5cGUgdDYsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDc+OjpwYXJhbWV0ZXJfdHlwZSB0NywKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUOD46OnBhcmFtZXRlcl90eXBlIHQ4LAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQ5Pjo6cGFyYW1ldGVyX3R5cGUgdDkpCi0gICAgOiBpbmhlcml0ZWQodDAsIHQxLCB0MiwgdDMsIHQ0LCB0NSwgdDYsIHQ3LCB0OCwgdDkpIHt9Ci0KLQotICB0ZW1wbGF0ZTxjbGFzcyBVMSwgY2xhc3MgVTI+Ci0gIHR1cGxlKGNvbnN0IGNvbnM8VTEsIFUyPiYgcCkgOiBpbmhlcml0ZWQocCkge30KLQotICB0ZW1wbGF0ZSA8Y2xhc3MgVTEsIGNsYXNzIFUyPgotICB0dXBsZSYgb3BlcmF0b3I9KGNvbnN0IGNvbnM8VTEsIFUyPiYgaykgewotICAgIGluaGVyaXRlZDo6b3BlcmF0b3I9KGspOwotICAgIHJldHVybiAqdGhpczsKLSAgfQotCi0gIHRlbXBsYXRlIDxjbGFzcyBVMSwgY2xhc3MgVTI+Ci0gIHR1cGxlJiBvcGVyYXRvcj0oY29uc3Qgc3RkOjpwYWlyPFUxLCBVMj4mIGspIHsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKGxlbmd0aDx0dXBsZT46OnZhbHVlID09IDIpOy8vIGNoZWNrX2xlbmd0aCA9IDIKLSAgICB0aGlzLT5oZWFkID0gay5maXJzdDsKLSAgICB0aGlzLT50YWlsLmhlYWQgPSBrLnNlY29uZDsKLSAgICByZXR1cm4gKnRoaXM7Ci0gIH0KLQotfTsKLQotLy8gVGhlIGVtcHR5IHR1cGxlCi10ZW1wbGF0ZSA8PgotY2xhc3MgdHVwbGU8bnVsbF90eXBlLCBudWxsX3R5cGUsIG51bGxfdHlwZSwgbnVsbF90eXBlLCBudWxsX3R5cGUsIG51bGxfdHlwZSwgbnVsbF90eXBlLCBudWxsX3R5cGUsIG51bGxfdHlwZSwgbnVsbF90eXBlPiAgOgotICBwdWJsaWMgbnVsbF90eXBlCi17Ci1wdWJsaWM6Ci0gIHR5cGVkZWYgbnVsbF90eXBlIGluaGVyaXRlZDsKLX07Ci0KLQotLy8gU3dhbGxvd3MgYW55IGFzc2lnbm1lbnQgICAoYnkgRG91ZyBHcmVnb3IpCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotc3RydWN0IHN3YWxsb3dfYXNzaWduOwotdHlwZWRlZiB2b2lkIChkZXRhaWw6OnN3YWxsb3dfYXNzaWduOjoqaWdub3JlX3QpKCk7Ci1zdHJ1Y3Qgc3dhbGxvd19hc3NpZ24gewotICBzd2FsbG93X2Fzc2lnbihpZ25vcmVfdCgqKShpZ25vcmVfdCkpIHt9Ci0gIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gIHN3YWxsb3dfYXNzaWduIGNvbnN0JiBvcGVyYXRvcj0oY29uc3QgVCYpIGNvbnN0IHsKLSAgICByZXR1cm4gKnRoaXM7Ci0gIH0KLX07Ci0KLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLS8vICJpZ25vcmUiIGFsbG93cyB0dXBsZSBwb3NpdGlvbnMgdG8gYmUgaWdub3JlZCB3aGVuIHVzaW5nICJ0aWUiLgotaW5saW5lIGRldGFpbDo6aWdub3JlX3QgaWdub3JlKGRldGFpbDo6aWdub3JlX3QpIHsgcmV0dXJuIDA7IH0KLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBUaGUgY2FsbF90cmFpdHMgZm9yIG1ha2VfdHVwbGUKLS8vIEhvbm91cnMgdGhlIHJlZmVyZW5jZV93cmFwcGVyIGNsYXNzLgotCi0vLyBNdXN0IGJlIGluc3RhbnRpYXRlZCB3aXRoIHBsYWluIG9yIGNvbnN0IHBsYWluIHR5cGVzIChub3Qgd2l0aCByZWZlcmVuY2VzKQotCi0vLyBmcm9tIHRlbXBsYXRlPGNsYXNzIFQ+IGZvbyhjb25zdCBUJiB0KSA6IG1ha2VfdHVwbGVfdHJhaXRzPGNvbnN0IFQ+Ojp0eXBlCi0vLyBmcm9tIHRlbXBsYXRlPGNsYXNzIFQ+IGZvbyhUJiB0KSA6IG1ha2VfdHVwbGVfdHJhaXRzPFQ+Ojp0eXBlCi0KLS8vIENvbnZlcnNpb25zOgotLy8gVCAtPiBULAotLy8gcmVmZXJlbmNlcyAtPiBjb21waWxlX3RpbWVfZXJyb3IKLS8vIHJlZmVyZW5jZV93cmFwcGVyPFQ+IC0+IFQmCi0vLyBjb25zdCByZWZlcmVuY2Vfd3JhcHBlcjxUPiAtPiBUJgotLy8gYXJyYXkgLT4gY29uc3QgcmVmIGFycmF5Ci0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBtYWtlX3R1cGxlX3RyYWl0cyB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotCi0gIC8vIGNvbW1lbnRlZCBhd2F5LCBzZWUgYmVsb3cgIChKSikKLSAgLy8gIHR5cGVkZWYgdHlwZW5hbWUgSUY8Ci0gIC8vICBuZG5ib29zdDo6aXNfZnVuY3Rpb248VD46OnZhbHVlLAotICAvLyAgVCYsCi0gIC8vICBUPjo6UkVUIHR5cGU7Ci0KLX07Ci0KLS8vIFRoZSBpc19mdW5jdGlvbiB0ZXN0IHdhcyB0aGVyZSBvcmlnaW5hbGx5IGZvciBwbGFpbiBmdW5jdGlvbiB0eXBlcywKLS8vIHdoaWNoIGNhbid0IGJlIHN0b3JlZCBhcyBzdWNoICh3ZSBtdXN0IGVpdGhlciBzdG9yZSB0aGVtIGFzIHJlZmVyZW5jZXMgb3IKLS8vIHBvaW50ZXJzKS4gU3VjaCBhIHR5cGUgY291bGQgYmUgZm9ybWVkIGlmIG1ha2VfdHVwbGUgd2FzIGNhbGxlZCB3aXRoIGEKLS8vIHJlZmVyZW5jZSB0byBhIGZ1bmN0aW9uLgotLy8gQnV0IHRoaXMgd291bGQgbWVhbiB0aGF0IGEgY29uc3QgcXVhbGlmaWVkIGZ1bmN0aW9uIHR5cGUgd2FzIGZvcm1lZCBpbgotLy8gdGhlIG1ha2VfdHVwbGUgZnVuY3Rpb24gYW5kIGhlbmNlIG1ha2VfdHVwbGUgY2FuJ3QgdGFrZSBhIGZ1bmN0aW9uCi0vLyByZWZlcmVuY2UgYXMgYSBwYXJhbWV0ZXIsIGFuZCB0aHVzIFQgY2FuJ3QgYmUgYSBmdW5jdGlvbiB0eXBlLgotLy8gU28gaXNfZnVuY3Rpb24gdGVzdCB3YXMgcmVtb3ZlZC4KLS8vICgxNC44LjMuIHNheXMgdGhhdCB0eXBlIGRlZHVjdGlvbiBmYWlscyBpZiBhIGN2LXF1YWxpZmllZCBmdW5jdGlvbiB0eXBlCi0vLyBpcyBjcmVhdGVkLiAoSXQgb25seSBhcHBsaWVzIGZvciB0aGUgY2FzZSBvZiBleHBsaWNpdGx5IHNwZWNpZnlpbmcgdGVtcGxhdGUKLS8vIGFyZ3MsIHRob3VnaD8pKSAoSkopCi0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgbWFrZV90dXBsZV90cmFpdHM8VCY+IHsKLSAgdHlwZWRlZiB0eXBlbmFtZQotICAgICBkZXRhaWw6OmdlbmVyYXRlX2Vycm9yPFQmPjo6Ci0gICAgICAgZG9fbm90X3VzZV93aXRoX3JlZmVyZW5jZV90eXBlIGVycm9yOwotfTsKLQotLy8gQXJyYXlzIGNhbid0IGJlIHN0b3JlZCBhcyBwbGFpbiB0eXBlczsgY29udmVydCB0aGVtIHRvIHJlZmVyZW5jZXMuCi0vLyBBbGwgYXJyYXlzIGFyZSBjb252ZXJ0ZWQgdG8gY29uc3QuIFRoaXMgaXMgYmVjYXVzZSBtYWtlX3R1cGxlIHRha2VzIGl0cwotLy8gcGFyYW1ldGVycyBhcyBjb25zdCBUJiBhbmQgdGh1cyB0aGUga25vd2xlZGdlIG9mIHRoZSBwb3RlbnRpYWwKLS8vIG5vbi1jb25zdG5lc3Mgb2YgYWN0dWFsIGFyZ3VtZW50IGlzIGxvc3QuCi10ZW1wbGF0ZTxjbGFzcyBULCBpbnQgbj4gIHN0cnVjdCBtYWtlX3R1cGxlX3RyYWl0cyA8VFtuXT4gewotICB0eXBlZGVmIGNvbnN0IFQgKCZ0eXBlKVtuXTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIGludCBuPgotc3RydWN0IG1ha2VfdHVwbGVfdHJhaXRzPGNvbnN0IFRbbl0+IHsKLSAgdHlwZWRlZiBjb25zdCBUICgmdHlwZSlbbl07Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBULCBpbnQgbj4gIHN0cnVjdCBtYWtlX3R1cGxlX3RyYWl0czx2b2xhdGlsZSBUW25dPiB7Ci0gIHR5cGVkZWYgY29uc3Qgdm9sYXRpbGUgVCAoJnR5cGUpW25dOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVCwgaW50IG4+Ci1zdHJ1Y3QgbWFrZV90dXBsZV90cmFpdHM8Y29uc3Qgdm9sYXRpbGUgVFtuXT4gewotICB0eXBlZGVmIGNvbnN0IHZvbGF0aWxlIFQgKCZ0eXBlKVtuXTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgbWFrZV90dXBsZV90cmFpdHM8cmVmZXJlbmNlX3dyYXBwZXI8VD4gPnsKLSAgdHlwZWRlZiBUJiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBtYWtlX3R1cGxlX3RyYWl0czxjb25zdCByZWZlcmVuY2Vfd3JhcHBlcjxUPiA+ewotICB0eXBlZGVmIFQmIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFrZV90dXBsZV90cmFpdHM8ZGV0YWlsOjppZ25vcmVfdChkZXRhaWw6Omlnbm9yZV90KT4gewotICB0eXBlZGVmIGRldGFpbDo6c3dhbGxvd19hc3NpZ24gdHlwZTsKLX07Ci0KLQotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gYSBoZWxwZXIgdHJhaXRzIHRvIG1ha2UgdGhlIG1ha2VfdHVwbGUgZnVuY3Rpb25zIHNob3J0ZXIgKFZlc2EgS2Fydm9uZW4ncwotLy8gc3VnZ2VzdGlvbikKLXRlbXBsYXRlIDwKLSAgY2xhc3MgVDAgPSBudWxsX3R5cGUsIGNsYXNzIFQxID0gbnVsbF90eXBlLCBjbGFzcyBUMiA9IG51bGxfdHlwZSwKLSAgY2xhc3MgVDMgPSBudWxsX3R5cGUsIGNsYXNzIFQ0ID0gbnVsbF90eXBlLCBjbGFzcyBUNSA9IG51bGxfdHlwZSwKLSAgY2xhc3MgVDYgPSBudWxsX3R5cGUsIGNsYXNzIFQ3ID0gbnVsbF90eXBlLCBjbGFzcyBUOCA9IG51bGxfdHlwZSwKLSAgY2xhc3MgVDkgPSBudWxsX3R5cGUKLT4KLXN0cnVjdCBtYWtlX3R1cGxlX21hcHBlciB7Ci0gIHR5cGVkZWYKLSAgICB0dXBsZTx0eXBlbmFtZSBtYWtlX3R1cGxlX3RyYWl0czxUMD46OnR5cGUsCi0gICAgICAgICAgdHlwZW5hbWUgbWFrZV90dXBsZV90cmFpdHM8VDE+Ojp0eXBlLAotICAgICAgICAgIHR5cGVuYW1lIG1ha2VfdHVwbGVfdHJhaXRzPFQyPjo6dHlwZSwKLSAgICAgICAgICB0eXBlbmFtZSBtYWtlX3R1cGxlX3RyYWl0czxUMz46OnR5cGUsCi0gICAgICAgICAgdHlwZW5hbWUgbWFrZV90dXBsZV90cmFpdHM8VDQ+Ojp0eXBlLAotICAgICAgICAgIHR5cGVuYW1lIG1ha2VfdHVwbGVfdHJhaXRzPFQ1Pjo6dHlwZSwKLSAgICAgICAgICB0eXBlbmFtZSBtYWtlX3R1cGxlX3RyYWl0czxUNj46OnR5cGUsCi0gICAgICAgICAgdHlwZW5hbWUgbWFrZV90dXBsZV90cmFpdHM8VDc+Ojp0eXBlLAotICAgICAgICAgIHR5cGVuYW1lIG1ha2VfdHVwbGVfdHJhaXRzPFQ4Pjo6dHlwZSwKLSAgICAgICAgICB0eXBlbmFtZSBtYWtlX3R1cGxlX3RyYWl0czxUOT46OnR5cGU+IHR5cGU7Ci19OwotCi19IC8vIGVuZCBkZXRhaWwKLQotLy8gLW1ha2VfdHVwbGUgZnVuY3Rpb24gdGVtcGxhdGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1pbmxpbmUgdHVwbGU8PiBtYWtlX3R1cGxlKCkgewotICByZXR1cm4gdHVwbGU8PigpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUMD4KLWlubGluZSB0eXBlbmFtZSBkZXRhaWw6Om1ha2VfdHVwbGVfbWFwcGVyPFQwPjo6dHlwZQotbWFrZV90dXBsZShjb25zdCBUMCYgdDApIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Om1ha2VfdHVwbGVfbWFwcGVyPFQwPjo6dHlwZSB0OwotICByZXR1cm4gdCh0MCk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQwLCBjbGFzcyBUMT4KLWlubGluZSB0eXBlbmFtZSBkZXRhaWw6Om1ha2VfdHVwbGVfbWFwcGVyPFQwLCBUMT46OnR5cGUKLW1ha2VfdHVwbGUoY29uc3QgVDAmIHQwLCBjb25zdCBUMSYgdDEpIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Om1ha2VfdHVwbGVfbWFwcGVyPFQwLCBUMT46OnR5cGUgdDsKLSAgcmV0dXJuIHQodDAsIHQxKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVDAsIGNsYXNzIFQxLCBjbGFzcyBUMj4KLWlubGluZSB0eXBlbmFtZSBkZXRhaWw6Om1ha2VfdHVwbGVfbWFwcGVyPFQwLCBUMSwgVDI+Ojp0eXBlCi1tYWtlX3R1cGxlKGNvbnN0IFQwJiB0MCwgY29uc3QgVDEmIHQxLCBjb25zdCBUMiYgdDIpIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Om1ha2VfdHVwbGVfbWFwcGVyPFQwLCBUMSwgVDI+Ojp0eXBlIHQ7Ci0gIHJldHVybiB0KHQwLCB0MSwgdDIpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUMCwgY2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMz4KLWlubGluZSB0eXBlbmFtZSBkZXRhaWw6Om1ha2VfdHVwbGVfbWFwcGVyPFQwLCBUMSwgVDIsIFQzPjo6dHlwZQotbWFrZV90dXBsZShjb25zdCBUMCYgdDAsIGNvbnN0IFQxJiB0MSwgY29uc3QgVDImIHQyLCBjb25zdCBUMyYgdDMpIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Om1ha2VfdHVwbGVfbWFwcGVyPFQwLCBUMSwgVDIsIFQzPjo6dHlwZSB0OwotICByZXR1cm4gdCh0MCwgdDEsIHQyLCB0Myk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQwLCBjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBUND4KLWlubGluZSB0eXBlbmFtZSBkZXRhaWw6Om1ha2VfdHVwbGVfbWFwcGVyPFQwLCBUMSwgVDIsIFQzLCBUND46OnR5cGUKLW1ha2VfdHVwbGUoY29uc3QgVDAmIHQwLCBjb25zdCBUMSYgdDEsIGNvbnN0IFQyJiB0MiwgY29uc3QgVDMmIHQzLAotICAgICAgICAgICAgICAgICAgY29uc3QgVDQmIHQ0KSB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjptYWtlX3R1cGxlX21hcHBlcjxUMCwgVDEsIFQyLCBUMywgVDQ+Ojp0eXBlIHQ7Ci0gIHJldHVybiB0KHQwLCB0MSwgdDIsIHQzLCB0NCk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQwLCBjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBUNCwgY2xhc3MgVDU+Ci1pbmxpbmUgdHlwZW5hbWUgZGV0YWlsOjptYWtlX3R1cGxlX21hcHBlcjxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1Pjo6dHlwZQotbWFrZV90dXBsZShjb25zdCBUMCYgdDAsIGNvbnN0IFQxJiB0MSwgY29uc3QgVDImIHQyLCBjb25zdCBUMyYgdDMsCi0gICAgICAgICAgICAgICAgICBjb25zdCBUNCYgdDQsIGNvbnN0IFQ1JiB0NSkgewotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6bWFrZV90dXBsZV9tYXBwZXI8VDAsIFQxLCBUMiwgVDMsIFQ0LCBUNT46OnR5cGUgdDsKLSAgcmV0dXJuIHQodDAsIHQxLCB0MiwgdDMsIHQ0LCB0NSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQwLCBjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBUNCwgY2xhc3MgVDUsIGNsYXNzIFQ2PgotaW5saW5lIHR5cGVuYW1lIGRldGFpbDo6bWFrZV90dXBsZV9tYXBwZXI8VDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDY+Ojp0eXBlCi1tYWtlX3R1cGxlKGNvbnN0IFQwJiB0MCwgY29uc3QgVDEmIHQxLCBjb25zdCBUMiYgdDIsIGNvbnN0IFQzJiB0MywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IFQ0JiB0NCwgY29uc3QgVDUmIHQ1LCBjb25zdCBUNiYgdDYpIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Om1ha2VfdHVwbGVfbWFwcGVyCi0gICAgICAgICAgIDxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNj46OnR5cGUgdDsKLSAgcmV0dXJuIHQodDAsIHQxLCB0MiwgdDMsIHQ0LCB0NSwgdDYpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUMCwgY2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgVDQsIGNsYXNzIFQ1LCBjbGFzcyBUNiwKLSAgICAgICAgIGNsYXNzIFQ3PgotaW5saW5lIHR5cGVuYW1lIGRldGFpbDo6bWFrZV90dXBsZV9tYXBwZXI8VDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3Pjo6dHlwZQotbWFrZV90dXBsZShjb25zdCBUMCYgdDAsIGNvbnN0IFQxJiB0MSwgY29uc3QgVDImIHQyLCBjb25zdCBUMyYgdDMsCi0gICAgICAgICAgICAgICAgICBjb25zdCBUNCYgdDQsIGNvbnN0IFQ1JiB0NSwgY29uc3QgVDYmIHQ2LCBjb25zdCBUNyYgdDcpIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Om1ha2VfdHVwbGVfbWFwcGVyCi0gICAgICAgICAgIDxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDc+Ojp0eXBlIHQ7Ci0gIHJldHVybiB0KHQwLCB0MSwgdDIsIHQzLCB0NCwgdDUsIHQ2LCB0Nyk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQwLCBjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBUNCwgY2xhc3MgVDUsIGNsYXNzIFQ2LAotICAgICAgICAgY2xhc3MgVDcsIGNsYXNzIFQ4PgotaW5saW5lIHR5cGVuYW1lIGRldGFpbDo6bWFrZV90dXBsZV9tYXBwZXIKLSAgPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDg+Ojp0eXBlCi1tYWtlX3R1cGxlKGNvbnN0IFQwJiB0MCwgY29uc3QgVDEmIHQxLCBjb25zdCBUMiYgdDIsIGNvbnN0IFQzJiB0MywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IFQ0JiB0NCwgY29uc3QgVDUmIHQ1LCBjb25zdCBUNiYgdDYsIGNvbnN0IFQ3JiB0NywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IFQ4JiB0OCkgewotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6bWFrZV90dXBsZV9tYXBwZXIKLSAgICAgICAgICAgPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDg+Ojp0eXBlIHQ7Ci0gIHJldHVybiB0KHQwLCB0MSwgdDIsIHQzLCB0NCwgdDUsIHQ2LCB0NywgdDgpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUMCwgY2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgVDQsIGNsYXNzIFQ1LCBjbGFzcyBUNiwKLSAgICAgICAgIGNsYXNzIFQ3LCBjbGFzcyBUOCwgY2xhc3MgVDk+Ci1pbmxpbmUgdHlwZW5hbWUgZGV0YWlsOjptYWtlX3R1cGxlX21hcHBlcgotICA8VDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDk+Ojp0eXBlCi1tYWtlX3R1cGxlKGNvbnN0IFQwJiB0MCwgY29uc3QgVDEmIHQxLCBjb25zdCBUMiYgdDIsIGNvbnN0IFQzJiB0MywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IFQ0JiB0NCwgY29uc3QgVDUmIHQ1LCBjb25zdCBUNiYgdDYsIGNvbnN0IFQ3JiB0NywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IFQ4JiB0OCwgY29uc3QgVDkmIHQ5KSB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjptYWtlX3R1cGxlX21hcHBlcgotICAgICAgICAgICA8VDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDk+Ojp0eXBlIHQ7Ci0gIHJldHVybiB0KHQwLCB0MSwgdDIsIHQzLCB0NCwgdDUsIHQ2LCB0NywgdDgsIHQ5KTsKLX0KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgdGllX3RyYWl0cyB7Ci0gIHR5cGVkZWYgVCYgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB0aWVfdHJhaXRzPGlnbm9yZV90KGlnbm9yZV90KT4gewotICB0eXBlZGVmIHN3YWxsb3dfYXNzaWduIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdGllX3RyYWl0czx2b2lkPiB7Ci0gIHR5cGVkZWYgbnVsbF90eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8Ci0gIGNsYXNzIFQwID0gdm9pZCwgY2xhc3MgVDEgPSB2b2lkLCBjbGFzcyBUMiA9IHZvaWQsCi0gIGNsYXNzIFQzID0gdm9pZCwgY2xhc3MgVDQgPSB2b2lkLCBjbGFzcyBUNSA9IHZvaWQsCi0gIGNsYXNzIFQ2ID0gdm9pZCwgY2xhc3MgVDcgPSB2b2lkLCBjbGFzcyBUOCA9IHZvaWQsCi0gIGNsYXNzIFQ5ID0gdm9pZAotPgotc3RydWN0IHRpZV9tYXBwZXIgewotICB0eXBlZGVmCi0gICAgdHVwbGU8dHlwZW5hbWUgdGllX3RyYWl0czxUMD46OnR5cGUsCi0gICAgICAgICAgdHlwZW5hbWUgdGllX3RyYWl0czxUMT46OnR5cGUsCi0gICAgICAgICAgdHlwZW5hbWUgdGllX3RyYWl0czxUMj46OnR5cGUsCi0gICAgICAgICAgdHlwZW5hbWUgdGllX3RyYWl0czxUMz46OnR5cGUsCi0gICAgICAgICAgdHlwZW5hbWUgdGllX3RyYWl0czxUND46OnR5cGUsCi0gICAgICAgICAgdHlwZW5hbWUgdGllX3RyYWl0czxUNT46OnR5cGUsCi0gICAgICAgICAgdHlwZW5hbWUgdGllX3RyYWl0czxUNj46OnR5cGUsCi0gICAgICAgICAgdHlwZW5hbWUgdGllX3RyYWl0czxUNz46OnR5cGUsCi0gICAgICAgICAgdHlwZW5hbWUgdGllX3RyYWl0czxUOD46OnR5cGUsCi0gICAgICAgICAgdHlwZW5hbWUgdGllX3RyYWl0czxUOT46OnR5cGU+IHR5cGU7Ci19OwotCi19Ci0KLS8vIFRpZSBmdW5jdGlvbiB0ZW1wbGF0ZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotdGVtcGxhdGU8Y2xhc3MgVDA+Ci1pbmxpbmUgdHlwZW5hbWUgZGV0YWlsOjp0aWVfbWFwcGVyPFQwPjo6dHlwZQotdGllKFQwJiB0MCkgewotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6dGllX21hcHBlcjxUMD46OnR5cGUgdDsKLSAgcmV0dXJuIHQodDApOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUMCwgY2xhc3MgVDE+Ci1pbmxpbmUgdHlwZW5hbWUgZGV0YWlsOjp0aWVfbWFwcGVyPFQwLCBUMT46OnR5cGUKLXRpZShUMCYgdDAsIFQxJiB0MSkgewotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6dGllX21hcHBlcjxUMCwgVDE+Ojp0eXBlIHQ7Ci0gIHJldHVybiB0KHQwLCB0MSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQwLCBjbGFzcyBUMSwgY2xhc3MgVDI+Ci1pbmxpbmUgdHlwZW5hbWUgZGV0YWlsOjp0aWVfbWFwcGVyPFQwLCBUMSwgVDI+Ojp0eXBlCi10aWUoVDAmIHQwLCBUMSYgdDEsIFQyJiB0MikgewotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6dGllX21hcHBlcjxUMCwgVDEsIFQyPjo6dHlwZSB0OwotICByZXR1cm4gdCh0MCwgdDEsIHQyKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVDAsIGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDM+Ci1pbmxpbmUgdHlwZW5hbWUgZGV0YWlsOjp0aWVfbWFwcGVyPFQwLCBUMSwgVDIsIFQzPjo6dHlwZQotdGllKFQwJiB0MCwgVDEmIHQxLCBUMiYgdDIsIFQzJiB0MykgewotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6dGllX21hcHBlcjxUMCwgVDEsIFQyLCBUMz46OnR5cGUgdDsKLSAgcmV0dXJuIHQodDAsIHQxLCB0MiwgdDMpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUMCwgY2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgVDQ+Ci1pbmxpbmUgdHlwZW5hbWUgZGV0YWlsOjp0aWVfbWFwcGVyPFQwLCBUMSwgVDIsIFQzLCBUND46OnR5cGUKLXRpZShUMCYgdDAsIFQxJiB0MSwgVDImIHQyLCBUMyYgdDMsCi0gICAgICAgICAgICAgICAgICBUNCYgdDQpIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnRpZV9tYXBwZXI8VDAsIFQxLCBUMiwgVDMsIFQ0Pjo6dHlwZSB0OwotICByZXR1cm4gdCh0MCwgdDEsIHQyLCB0MywgdDQpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUMCwgY2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgVDQsIGNsYXNzIFQ1PgotaW5saW5lIHR5cGVuYW1lIGRldGFpbDo6dGllX21hcHBlcjxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1Pjo6dHlwZQotdGllKFQwJiB0MCwgVDEmIHQxLCBUMiYgdDIsIFQzJiB0MywKLSAgICAgICAgICAgICAgICAgIFQ0JiB0NCwgVDUmIHQ1KSB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjp0aWVfbWFwcGVyPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDU+Ojp0eXBlIHQ7Ci0gIHJldHVybiB0KHQwLCB0MSwgdDIsIHQzLCB0NCwgdDUpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUMCwgY2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgVDQsIGNsYXNzIFQ1LCBjbGFzcyBUNj4KLWlubGluZSB0eXBlbmFtZSBkZXRhaWw6OnRpZV9tYXBwZXI8VDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDY+Ojp0eXBlCi10aWUoVDAmIHQwLCBUMSYgdDEsIFQyJiB0MiwgVDMmIHQzLAotICAgICAgICAgICAgICAgICAgVDQmIHQ0LCBUNSYgdDUsIFQ2JiB0NikgewotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6dGllX21hcHBlcgotICAgICAgICAgICA8VDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDY+Ojp0eXBlIHQ7Ci0gIHJldHVybiB0KHQwLCB0MSwgdDIsIHQzLCB0NCwgdDUsIHQ2KTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVDAsIGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0LCBjbGFzcyBUNSwgY2xhc3MgVDYsCi0gICAgICAgICBjbGFzcyBUNz4KLWlubGluZSB0eXBlbmFtZSBkZXRhaWw6OnRpZV9tYXBwZXI8VDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3Pjo6dHlwZQotdGllKFQwJiB0MCwgVDEmIHQxLCBUMiYgdDIsIFQzJiB0MywKLSAgICAgICAgICAgICAgICAgIFQ0JiB0NCwgVDUmIHQ1LCBUNiYgdDYsIFQ3JiB0NykgewotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6dGllX21hcHBlcgotICAgICAgICAgICA8VDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3Pjo6dHlwZSB0OwotICByZXR1cm4gdCh0MCwgdDEsIHQyLCB0MywgdDQsIHQ1LCB0NiwgdDcpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUMCwgY2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgVDQsIGNsYXNzIFQ1LCBjbGFzcyBUNiwKLSAgICAgICAgIGNsYXNzIFQ3LCBjbGFzcyBUOD4KLWlubGluZSB0eXBlbmFtZSBkZXRhaWw6OnRpZV9tYXBwZXIKLSAgPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDg+Ojp0eXBlCi10aWUoVDAmIHQwLCBUMSYgdDEsIFQyJiB0MiwgVDMmIHQzLAotICAgICAgICAgICAgICAgICAgVDQmIHQ0LCBUNSYgdDUsIFQ2JiB0NiwgVDcmIHQ3LAotICAgICAgICAgICAgICAgICAgVDgmIHQ4KSB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjp0aWVfbWFwcGVyCi0gICAgICAgICAgIDxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4Pjo6dHlwZSB0OwotICByZXR1cm4gdCh0MCwgdDEsIHQyLCB0MywgdDQsIHQ1LCB0NiwgdDcsIHQ4KTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVDAsIGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0LCBjbGFzcyBUNSwgY2xhc3MgVDYsCi0gICAgICAgICBjbGFzcyBUNywgY2xhc3MgVDgsIGNsYXNzIFQ5PgotaW5saW5lIHR5cGVuYW1lIGRldGFpbDo6dGllX21hcHBlcgotICA8VDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDk+Ojp0eXBlCi10aWUoVDAmIHQwLCBUMSYgdDEsIFQyJiB0MiwgVDMmIHQzLAotICAgICAgICAgICAgICAgICAgVDQmIHQ0LCBUNSYgdDUsIFQ2JiB0NiwgVDcmIHQ3LAotICAgICAgICAgICAgICAgICAgVDgmIHQ4LCBUOSYgdDkpIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnRpZV9tYXBwZXIKLSAgICAgICAgICAgPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5Pjo6dHlwZSB0OwotICByZXR1cm4gdCh0MCwgdDEsIHQyLCB0MywgdDQsIHQ1LCB0NiwgdDcsIHQ4LCB0OSk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBUMCwgY2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgVDQsCi0gICAgICAgICAgY2xhc3MgVDUsIGNsYXNzIFQ2LCBjbGFzcyBUNywgY2xhc3MgVDgsIGNsYXNzIFQ5Pgotdm9pZCBzd2FwKHR1cGxlPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5PiYgbGhzLAotICAgICAgICAgIHR1cGxlPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5PiYgcmhzKTsKLWlubGluZSB2b2lkIHN3YXAobnVsbF90eXBlJiwgbnVsbF90eXBlJikge30KLXRlbXBsYXRlPGNsYXNzIEhIPgotaW5saW5lIHZvaWQgc3dhcChjb25zPEhILCBudWxsX3R5cGU+JiBsaHMsIGNvbnM8SEgsIG51bGxfdHlwZT4mIHJocykgewotICA6Om5kbmJvb3N0Ojpzd2FwKGxocy5oZWFkLCByaHMuaGVhZCk7Ci19Ci10ZW1wbGF0ZTxjbGFzcyBISCwgY2xhc3MgVFQ+Ci1pbmxpbmUgdm9pZCBzd2FwKGNvbnM8SEgsIFRUPiYgbGhzLCBjb25zPEhILCBUVD4mIHJocykgewotICA6Om5kbmJvb3N0Ojpzd2FwKGxocy5oZWFkLCByaHMuaGVhZCk7Ci0gIDo6bmRuYm9vc3Q6OnR1cGxlczo6c3dhcChsaHMudGFpbCwgcmhzLnRhaWwpOwotfQotdGVtcGxhdGUgPGNsYXNzIFQwLCBjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBUNCwKLSAgICAgICAgICBjbGFzcyBUNSwgY2xhc3MgVDYsIGNsYXNzIFQ3LCBjbGFzcyBUOCwgY2xhc3MgVDk+Ci1pbmxpbmUgdm9pZCBzd2FwKHR1cGxlPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5PiYgbGhzLAotICAgICAgICAgIHR1cGxlPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5PiYgcmhzKSB7Ci0gIHR5cGVkZWYgdHVwbGU8VDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDk+IHR1cGxlX3R5cGU7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgdHVwbGVfdHlwZTo6aW5oZXJpdGVkIGJhc2U7Ci0gIDo6bmRuYm9vc3Q6OnR1cGxlczo6c3dhcChzdGF0aWNfY2FzdDxiYXNlJj4obGhzKSwgc3RhdGljX2Nhc3Q8YmFzZSY+KHJocykpOwotfQotCi19IC8vIGVuZCBvZiBuYW1lc3BhY2UgdHVwbGVzCi19IC8vIGVuZCBvZiBuYW1lc3BhY2UgbmRuYm9vc3QKLQotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFVQTEVfQkFTSUNfSFBQCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90dXBsZS9kZXRhaWwvdHVwbGVfYmFzaWNfbm9fcGFydGlhbF9zcGVjLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHVwbGUvZGV0YWlsL3R1cGxlX2Jhc2ljX25vX3BhcnRpYWxfc3BlYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5MjIyYjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90dXBsZS9kZXRhaWwvdHVwbGVfYmFzaWNfbm9fcGFydGlhbF9zcGVjLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg2NSArMCwwIEBACi0vLyAtIHR1cGxlX2Jhc2ljX25vX3BhcnRpYWxfc3BlYy5ocHAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwIEphYWtrbyBKYXJ2aSAoamFha2tvLmphcnZpQGNzLnV0dS5maSkKLS8vIENvcHlyaWdodCAoQykgMjAwMSBEb3VnbGFzIEdyZWdvciAoZ3JlZ29kQHJwaS5lZHUpCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDEgR2FyeSBQb3dlbGwgKGdhcnkucG93ZWxsQHNpZXJyYS5jb20pCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIG9yIGh0dHA6Ly9sYW1iZGEuY3MudXR1LmZpCi0KLS8vIFJldmlzaW9uIEhpc3RvcnkKLS8vICAxNCAwMiAwMSAgICBSZW1vdmUgZXh0cmEgJzsnLiBBbHNvLCBmaXhlZCAxMC1wYXJhbWV0ZXIgdG8gbWFrZV90dXBsZS4gKERHKQotLy8gIDEwIDAyIDAxICAgIEZpeGVkICJudWxsX3R5cGUiIGNvbnN0cnVjdG9ycy4KLS8vICAgICAgICAgICAgICBJbXBsZW1lbnRlZCBjb21wYXJpc29uIG9wZXJhdG9ycyBnbG9iYWxseS4KLS8vICAgICAgICAgICAgICBIaWRlIGVsZW1lbnRfdHlwZV9yZWYgYW5kIGVsZW1lbnRfdHlwZV9jb25zdF9yZWYuCi0vLyAgICAgICAgICAgICAgKERHKS4KLS8vICAwOSAwMiAwMSAgICBFeHRlbmRlZCB0byB0dXBsZXMgb2YgbGVuZ3RoIDEwLiBDaGFuZ2VkIGNvbXBhcmlzb24gZm9yCi0vLyAgICAgICAgICAgICAgb3BlcmF0b3I8KCkKLS8vICAgICAgICAgICAgICB0byB0aGUgc2FtZSB1c2VkIGJ5IHN0ZDo6cGFpcjw+LCBhZGRlZCBjbnVsbF90eXBlKCkgKEdQKQotLy8gIDAzIDAyIDAxICAgIEluaXRpYWwgVmVyc2lvbiBmcm9tIG9yaWdpbmFsIHR1cGxlLmhwcCBjb2RlIGJ5IEpKLiAoREcpCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZm5kZWYgTkROQk9PU1RfVFVQTEVfQkFTSUNfTk9fUEFSVElBTF9TUEVDX0hQUAotI2RlZmluZSBORE5CT09TVF9UVVBMRV9CQVNJQ19OT19QQVJUSUFMX1NQRUNfSFBQCi0KLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdXRpbGl0eS9zd2FwLmhwcCIKLSNpbmNsdWRlIDx1dGlsaXR5PgotCi0jaWYgZGVmaW5lZCBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0NTE4KSAvLyBzdG9yYWdlLWNsYXNzIG9yIHR5cGUgc3BlY2lmaWVyKHMpIHVuZXhwZWN0ZWQgaGVyZTsgaWdub3JlZAotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDE4MSkgLy8gcXVhbGlmaWVyIGFwcGxpZWQgdG8gcmVmZXJlbmNlIHR5cGUgaWdub3JlZAotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDIyNykgLy8gcXVhbGlmaWVyIGFwcGxpZWQgdG8gcmVmZXJlbmNlIHR5cGUgaWdub3JlZAotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgdHVwbGVzIHsKLQotICAgIC8vIG51bGxfdHlwZSBkZW5vdGVzIHRoZSBlbmQgb2YgYSBsaXN0IGJ1aWx0IHdpdGggImNvbnMiCi0gICAgc3RydWN0IG51bGxfdHlwZQotICAgIHsKLSAgICAgIG51bGxfdHlwZSgpIHt9Ci0gICAgICBudWxsX3R5cGUoY29uc3QgbnVsbF90eXBlJiwgY29uc3QgbnVsbF90eXBlJikge30KLSAgICB9OwotCi0gICAgLy8gYSBoZWxwZXIgZnVuY3Rpb24gdG8gcHJvdmlkZSBhIGNvbnN0IG51bGxfdHlwZSB0eXBlIHRlbXBvcmFyeQotICAgIGlubGluZSBjb25zdCBudWxsX3R5cGUgY251bGxfdHlwZSgpIHsgcmV0dXJuIG51bGxfdHlwZSgpOyB9Ci0KLS8vIGZvcndhcmQgZGVjbGFyYXRpb24gb2YgdHVwbGUKLSAgICB0ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbnVsbF90eXBlLAotICAgICAgdHlwZW5hbWUgVDIgPSBudWxsX3R5cGUsCi0gICAgICB0eXBlbmFtZSBUMyA9IG51bGxfdHlwZSwKLSAgICAgIHR5cGVuYW1lIFQ0ID0gbnVsbF90eXBlLAotICAgICAgdHlwZW5hbWUgVDUgPSBudWxsX3R5cGUsCi0gICAgICB0eXBlbmFtZSBUNiA9IG51bGxfdHlwZSwKLSAgICAgIHR5cGVuYW1lIFQ3ID0gbnVsbF90eXBlLAotICAgICAgdHlwZW5hbWUgVDggPSBudWxsX3R5cGUsCi0gICAgICB0eXBlbmFtZSBUOSA9IG51bGxfdHlwZSwKLSAgICAgIHR5cGVuYW1lIFQxMCA9IG51bGxfdHlwZQotICAgID4KLSAgICBjbGFzcyB0dXBsZTsKLQotLy8gZm9yd2FyZCBkZWNsYXJhdGlvbiBvZiBjb25zCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgSGVhZCwgdHlwZW5hbWUgVGFpbCA9IG51bGxfdHlwZT4KLSAgICBzdHJ1Y3QgY29uczsKLQotICAgIG5hbWVzcGFjZSBkZXRhaWwgewotCi0gICAgICAvLyBUYWtlcyBhIHBvaW50ZXIgYW5kIHJvdXRlcyBhbGwgYXNzaWdubWVudHMgdG8gd2hhdGV2ZXIgaXQgcG9pbnRzIHRvCi0gICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgc3RydWN0IGFzc2lnbl90b19wb2ludGVlCi0gICAgICB7Ci0gICAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IGFzc2lnbl90b19wb2ludGVlKFQqIHApIDogcHRyKHApIHt9Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXI+Ci0gICAgICAgIGFzc2lnbl90b19wb2ludGVlJiBvcGVyYXRvcj0oY29uc3QgT3RoZXImIG90aGVyKQotICAgICAgICB7Ci0gICAgICAgICAgKnB0ciA9IG90aGVyOwotICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotCi0gICAgICBwcml2YXRlOgotICAgICAgICBUKiBwdHI7Ci0gICAgICB9OwotCi0gICAgICAvLyBTd2FsbG93cyBhbnkgYXNzaWdubWVudAotICAgICAgc3RydWN0IHN3YWxsb3dfYXNzaWduCi0gICAgICB7Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN3YWxsb3dfYXNzaWduIGNvbnN0JiBvcGVyYXRvcj0oY29uc3QgVCYpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIH0KLSAgICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IGFkZF9jb25zdF9yZWZlcmVuY2UgOiBhZGRfcmVmZXJlbmNlPHR5cGVuYW1lIGFkZF9jb25zdDxUPjo6dHlwZT4ge307Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgTXlUYWlsPgotICAgIHN0cnVjdCBpbml0X3RhaWwKLSAgICB7Ci0gICAgICAgIC8vIEVhY2ggb2YgdmM2IGFuZCB2Yzcgc2VlbSB0byByZXF1aXJlIGEgZGlmZmVyZW50IGZvcm11bGF0aW9uCi0gICAgICAgIC8vIG9mIHRoaXMgcmV0dXJuIHR5cGUKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEgsIGNsYXNzIFQ+Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0gICAgICAgIHN0YXRpYyB0eXBlbmFtZSBhZGRfcmVmZXJlbmNlPHR5cGVuYW1lIGFkZF9jb25zdDxUPjo6dHlwZT46OnR5cGUKLSNlbHNlCi0gICAgICAgIHN0YXRpYyB0eXBlbmFtZSBhZGRfY29uc3RfcmVmZXJlbmNlPFQ+Ojp0eXBlCi0jZW5kaWYKLSAgICAgICAgZXhlY3V0ZSggY29uczxILFQ+IGNvbnN0JiB1LCBsb25nICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHUuZ2V0X3RhaWwoKTsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBpbml0X3RhaWw8bnVsbF90eXBlPgotICAgIHsKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEg+Ci0gICAgICAgIHN0YXRpYyBudWxsX3R5cGUgZXhlY3V0ZSggY29uczxILG51bGxfdHlwZT4gY29uc3QmIHUsIGxvbmcgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbF90eXBlKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVT4KLSAgICAgICAgc3RhdGljIG51bGxfdHlwZSBleGVjdXRlKFUgY29uc3QmLCAuLi4pCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBudWxsX3R5cGUoKTsKLSAgICAgICAgfQotICAgICBwcml2YXRlOgotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgSCwgY2xhc3MgVD4KLSAgICAgICAgdm9pZCBleGVjdXRlKCBjb25zPEgsVD4gY29uc3QmLCBpbnQpOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgT3RoZXI+Ci0gICAgT3RoZXIgY29uc3QmCi0gICAgaW5pdF9oZWFkKCBPdGhlciBjb25zdCYgdSwgLi4uICkKLSAgICB7Ci0gICAgICAgIHJldHVybiB1OwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBILCBjbGFzcyBUPgotICAgIHR5cGVuYW1lIGFkZF9yZWZlcmVuY2U8dHlwZW5hbWUgYWRkX2NvbnN0PEg+Ojp0eXBlPjo6dHlwZQotICAgIGluaXRfaGVhZCggY29uczxILFQ+IGNvbnN0JiB1LCBpbnQgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHUuZ2V0X2hlYWQoKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgY2hhcioqKiogaW5pdF9oZWFkKG51bGxfdHlwZSBjb25zdCYsIGludCk7Ci0KLSAgfSAvLyBlbmQgb2YgbmFtZXNwYWNlIGRldGFpbAotCi0gICAgLy8gY29ucyBidWlsZHMgYSBoZXRlcm9nZW5vdXMgbGlzdCBvZiB0eXBlcwotICAgdGVtcGxhdGU8dHlwZW5hbWUgSGVhZCwgdHlwZW5hbWUgVGFpbD4KLSAgIHN0cnVjdCBjb25zCi0gICB7Ci0gICAgIHR5cGVkZWYgY29ucyBzZWxmX3R5cGU7Ci0gICAgIHR5cGVkZWYgSGVhZCBoZWFkX3R5cGU7Ci0gICAgIHR5cGVkZWYgVGFpbCB0YWlsX3R5cGU7Ci0KLSAgICBwcml2YXRlOgotICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmFkZF9yZWZlcmVuY2U8aGVhZF90eXBlPjo6dHlwZSBoZWFkX3JlZjsKLSAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjphZGRfcmVmZXJlbmNlPHRhaWxfdHlwZT46OnR5cGUgdGFpbF9yZWY7Ci0gICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmFkZF9jb25zdF9yZWZlcmVuY2U8aGVhZF90eXBlPjo6dHlwZSBoZWFkX2NyZWY7Ci0gICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmFkZF9jb25zdF9yZWZlcmVuY2U8dGFpbF90eXBlPjo6dHlwZSB0YWlsX2NyZWY7Ci0gICAgcHVibGljOgotICAgICBoZWFkX3R5cGUgaGVhZDsKLSAgICAgdGFpbF90eXBlIHRhaWw7Ci0KLSAgICAgaGVhZF9yZWYgZ2V0X2hlYWQoKSB7IHJldHVybiBoZWFkOyB9Ci0gICAgIHRhaWxfcmVmIGdldF90YWlsKCkgeyByZXR1cm4gdGFpbDsgfQotCi0gICAgIGhlYWRfY3JlZiBnZXRfaGVhZCgpIGNvbnN0IHsgcmV0dXJuIGhlYWQ7IH0KLSAgICAgdGFpbF9jcmVmIGdldF90YWlsKCkgY29uc3QgeyByZXR1cm4gdGFpbDsgfQotCi0gICAgIGNvbnMoKSA6IGhlYWQoKSwgdGFpbCgpIHt9Ci0KLSNpZiBkZWZpbmVkIE5ETkJPT1NUX01TVkMKLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRhaWw+Ci0gICAgICBjb25zKGhlYWRfY3JlZiBoIC8qID0gaGVhZF90eXBlKCkgKi8sIC8vIGNhdXNlcyBNU1ZDIDYuNSB0byBiYXJmLgotICAgICAgICAgICAgICAgICAgICBjb25zdCBUYWlsJiB0KSA6IGhlYWQoaCksIHRhaWwodC5oZWFkLCB0LnRhaWwpCi0gICAgICB7Ci0gICAgICB9Ci0KLSAgICAgIGNvbnMoaGVhZF9jcmVmIGggLyogPSBoZWFkX3R5cGUoKSAqLywgLy8gY2F1c2VzIE1TVkMgNi41IHRvIGJhcmYuCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IG51bGxfdHlwZSYgdCkgOiBoZWFkKGgpLCB0YWlsKHQpCi0gICAgICB7Ci0gICAgICB9Ci0KLSNlbHNlCi0gICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgZXhwbGljaXQgY29ucyhoZWFkX2NyZWYgaCwgY29uc3QgVCYgdCkgOgotICAgICAgICBoZWFkKGgpLCB0YWlsKHQuaGVhZCwgdC50YWlsKQotICAgICAgewotICAgICAgfQotCi0gICAgICBleHBsaWNpdCBjb25zKGhlYWRfY3JlZiBoID0gaGVhZF90eXBlKCksCi0gICAgICAgICAgICAgICAgICAgIHRhaWxfY3JlZiB0ID0gdGFpbF90eXBlKCkpIDoKLSAgICAgICAgaGVhZChoKSwgdGFpbCh0KQotICAgICAgewotICAgICAgfQotI2VuZGlmCi0KLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBVPgotICAgICAgY29ucyggY29uc3QgVSYgdSApCi0gICAgICAgIDogaGVhZChkZXRhaWw6OmluaXRfaGVhZCh1LCAwKSkKLSAgICAgICAgLCB0YWlsKGRldGFpbDo6aW5pdF90YWlsPFRhaWw+OjpleGVjdXRlKHUsIDBMKSkKLSAgICAgICB7Ci0gICAgICAgfQotCi0gICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlcj4KLSAgICAgIGNvbnMmIG9wZXJhdG9yPShjb25zdCBPdGhlciYgb3RoZXIpCi0gICAgICB7Ci0gICAgICAgIGhlYWQgPSBvdGhlci5oZWFkOwotICAgICAgICB0YWlsID0gb3RoZXIudGFpbDsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgfQotICAgIH07Ci0KLSAgICBuYW1lc3BhY2UgZGV0YWlsIHsKLQotICAgICAgLy8gRGV0ZXJtaW5lcyBpZiB0aGUgcGFyYW1ldGVyIGlzIG51bGxfdHlwZQotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGlzX251bGxfdHlwZSB7IGVudW0geyBSRVQgPSAwIH07IH07Ci0gICAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19udWxsX3R5cGU8bnVsbF90eXBlPiB7IGVudW0geyBSRVQgPSAxIH07IH07Ci0KLSAgICAgIC8qIEJ1aWxkIGEgY29ucyBzdHJ1Y3R1cmUgZnJvbSB0aGUgZ2l2ZW4gSGVhZCBhbmQgVGFpbC4gSWYgYm90aCBhcmUgbnVsbF90eXBlLAotICAgICAgcmV0dXJuIG51bGxfdHlwZS4gKi8KLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhlYWQsIHR5cGVuYW1lIFRhaWw+Ci0gICAgICBzdHJ1Y3QgYnVpbGRfY29ucwotICAgICAgewotICAgICAgcHJpdmF0ZToKLSAgICAgICAgZW51bSB7IHRhaWxfaXNfbnVsbF90eXBlID0gaXNfbnVsbF90eXBlPFRhaWw+OjpSRVQgfTsKLSAgICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiBjb25zPEhlYWQsIFRhaWw+IFJFVDsKLSAgICAgIH07Ci0KLSAgICAgIHRlbXBsYXRlPD4KLSAgICAgIHN0cnVjdCBidWlsZF9jb25zPG51bGxfdHlwZSwgbnVsbF90eXBlPgotICAgICAgewotICAgICAgICB0eXBlZGVmIG51bGxfdHlwZSBSRVQ7Ci0gICAgICB9OwotCi0gICAgICAvLyBNYXAgdGhlIE4gZWxlbWVudHMgb2YgYSB0dXBsZSBpbnRvIGEgY29ucyBsaXN0Ci0gICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgdHlwZW5hbWUgVDEsCi0gICAgICAgIHR5cGVuYW1lIFQyID0gbnVsbF90eXBlLAotICAgICAgICB0eXBlbmFtZSBUMyA9IG51bGxfdHlwZSwKLSAgICAgICAgdHlwZW5hbWUgVDQgPSBudWxsX3R5cGUsCi0gICAgICAgIHR5cGVuYW1lIFQ1ID0gbnVsbF90eXBlLAotICAgICAgICB0eXBlbmFtZSBUNiA9IG51bGxfdHlwZSwKLSAgICAgICAgdHlwZW5hbWUgVDcgPSBudWxsX3R5cGUsCi0gICAgICAgIHR5cGVuYW1lIFQ4ID0gbnVsbF90eXBlLAotICAgICAgICB0eXBlbmFtZSBUOSA9IG51bGxfdHlwZSwKLSAgICAgICAgdHlwZW5hbWUgVDEwID0gbnVsbF90eXBlCi0gICAgICA+Ci0gICAgICBzdHJ1Y3QgbWFwX3R1cGxlX3RvX2NvbnMKLSAgICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmJ1aWxkX2NvbnM8VDEwLCBudWxsX3R5cGUgID46OlJFVCBjb25zMTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpidWlsZF9jb25zPFQ5LCBjb25zMTA+OjpSRVQgY29uczk7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpidWlsZF9jb25zPFQ4LCBjb25zOT46OlJFVCBjb25zODsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmJ1aWxkX2NvbnM8VDcsIGNvbnM4Pjo6UkVUIGNvbnM3OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6YnVpbGRfY29uczxUNiwgY29uczc+OjpSRVQgY29uczY7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpidWlsZF9jb25zPFQ1LCBjb25zNj46OlJFVCBjb25zNTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmJ1aWxkX2NvbnM8VDQsIGNvbnM1Pjo6UkVUIGNvbnM0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6YnVpbGRfY29uczxUMywgY29uczQ+OjpSRVQgY29uczM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpidWlsZF9jb25zPFQyLCBjb25zMz46OlJFVCBjb25zMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmJ1aWxkX2NvbnM8VDEsIGNvbnMyPjo6UkVUIGNvbnMxOwotICAgICAgfTsKLQotICAgICAgLy8gV29ya2Fyb3VuZCB0aGUgbGFjayBvZiBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uIGluIHNvbWUgY29tcGlsZXJzCi0gICAgICB0ZW1wbGF0ZTxpbnQgTj4KLSAgICAgIHN0cnVjdCBfZWxlbWVudF90eXBlCi0gICAgICB7Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFR1cGxlPgotICAgICAgICBzdHJ1Y3QgaW5uZXIKLSAgICAgICAgewotICAgICAgICBwcml2YXRlOgotICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHVwbGU6OnRhaWxfdHlwZSB0YWlsX3R5cGU7Ci0gICAgICAgICAgdHlwZWRlZiBfZWxlbWVudF90eXBlPE4tMT4gbmV4dF9lbHRfdHlwZTsKLQotICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfZWxlbWVudF90eXBlPE4tMT46OnRlbXBsYXRlIGlubmVyPHRhaWxfdHlwZT46OlJFVCBSRVQ7Ci0gICAgICAgIH07Ci0gICAgICB9OwotCi0gICAgICB0ZW1wbGF0ZTw+Ci0gICAgICBzdHJ1Y3QgX2VsZW1lbnRfdHlwZTwwPgotICAgICAgewotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUdXBsZT4KLSAgICAgICAgc3RydWN0IGlubmVyCi0gICAgICAgIHsKLSAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFR1cGxlOjpoZWFkX3R5cGUgUkVUOwotICAgICAgICB9OwotICAgICAgfTsKLQotICAgIH0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0KLSAgICAvLyBSZXR1cm4gdGhlIE50aCB0eXBlIG9mIHRoZSBnaXZlbiBUdXBsZQotICAgIHRlbXBsYXRlPGludCBOLCB0eXBlbmFtZSBUdXBsZT4KLSAgICBzdHJ1Y3QgZWxlbWVudAotICAgIHsKLSAgICBwcml2YXRlOgotICAgICAgdHlwZWRlZiBkZXRhaWw6Ol9lbGVtZW50X3R5cGU8Tj4gbnRoX3R5cGU7Ci0KLSAgICBwdWJsaWM6Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIG50aF90eXBlOjp0ZW1wbGF0ZSBpbm5lcjxUdXBsZT46OlJFVCBSRVQ7Ci0gICAgICB0eXBlZGVmIFJFVCB0eXBlOwotICAgIH07Ci0KLSAgICBuYW1lc3BhY2UgZGV0YWlsIHsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgKE5ETkJPT1NUX01TVkMgPT0gMTMwMCkKLSAgICAgIC8vIHNwZWNpYWwgd29ya2Fyb3VuZCBmb3IgdmM3OgotCi0gICAgICB0ZW1wbGF0ZSA8Ym9vbCB4PgotICAgICAgc3RydWN0IHJlZmVyZW5jZV9hZGRlcgotICAgICAgewotICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgICBzdHJ1Y3QgcmViaW5kCi0gICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIFQmIHR5cGU7Ci0gICAgICAgICB9OwotICAgICAgfTsKLQotICAgICAgdGVtcGxhdGUgPD4KLSAgICAgIHN0cnVjdCByZWZlcmVuY2VfYWRkZXI8dHJ1ZT4KLSAgICAgIHsKLSAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgICAgc3RydWN0IHJlYmluZAotICAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgICB9OwotICAgICAgfTsKLQotCi0gICAgICAvLyBSZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhlIE50aCB0eXBlIG9mIHRoZSBnaXZlbiBUdXBsZQotICAgICAgdGVtcGxhdGU8aW50IE4sIHR5cGVuYW1lIFR1cGxlPgotICAgICAgc3RydWN0IGVsZW1lbnRfcmVmCi0gICAgICB7Ci0gICAgICBwcml2YXRlOgotICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50PE4sIFR1cGxlPjo6UkVUIGVsdF90eXBlOwotICAgICAgICAgZW51bSB7IGlzX3JlZiA9IGlzX3JlZmVyZW5jZTxlbHRfdHlwZT46OnZhbHVlIH07Ci0KLSAgICAgIHB1YmxpYzoKLSAgICAgICAgIHR5cGVkZWYgcmVmZXJlbmNlX2FkZGVyPGlzX3JlZj46OnJlYmluZDxlbHRfdHlwZT46OnR5cGUgUkVUOwotICAgICAgICAgdHlwZWRlZiBSRVQgdHlwZTsKLSAgICAgIH07Ci0KLSAgICAgIC8vIFJldHVybiBhIGNvbnN0IHJlZmVyZW5jZSB0byB0aGUgTnRoIHR5cGUgb2YgdGhlIGdpdmVuIFR1cGxlCi0gICAgICB0ZW1wbGF0ZTxpbnQgTiwgdHlwZW5hbWUgVHVwbGU+Ci0gICAgICBzdHJ1Y3QgZWxlbWVudF9jb25zdF9yZWYKLSAgICAgIHsKLSAgICAgIHByaXZhdGU6Ci0gICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnQ8TiwgVHVwbGU+OjpSRVQgZWx0X3R5cGU7Ci0gICAgICAgICBlbnVtIHsgaXNfcmVmID0gaXNfcmVmZXJlbmNlPGVsdF90eXBlPjo6dmFsdWUgfTsKLQotICAgICAgcHVibGljOgotICAgICAgICAgdHlwZWRlZiByZWZlcmVuY2VfYWRkZXI8aXNfcmVmPjo6cmViaW5kPGNvbnN0IGVsdF90eXBlPjo6dHlwZSBSRVQ7Ci0gICAgICAgICB0eXBlZGVmIFJFVCB0eXBlOwotICAgICAgfTsKLQotI2Vsc2UgLy8gdmM3Ci0KLSAgICAgIC8vIFJldHVybiBhIHJlZmVyZW5jZSB0byB0aGUgTnRoIHR5cGUgb2YgdGhlIGdpdmVuIFR1cGxlCi0gICAgICB0ZW1wbGF0ZTxpbnQgTiwgdHlwZW5hbWUgVHVwbGU+Ci0gICAgICBzdHJ1Y3QgZWxlbWVudF9yZWYKLSAgICAgIHsKLSAgICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudDxOLCBUdXBsZT46OlJFVCBlbHRfdHlwZTsKLQotICAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF9yZWZlcmVuY2U8ZWx0X3R5cGU+Ojp0eXBlIFJFVDsKLSAgICAgICAgdHlwZWRlZiBSRVQgdHlwZTsKLSAgICAgIH07Ci0KLSAgICAgIC8vIFJldHVybiBhIGNvbnN0IHJlZmVyZW5jZSB0byB0aGUgTnRoIHR5cGUgb2YgdGhlIGdpdmVuIFR1cGxlCi0gICAgICB0ZW1wbGF0ZTxpbnQgTiwgdHlwZW5hbWUgVHVwbGU+Ci0gICAgICBzdHJ1Y3QgZWxlbWVudF9jb25zdF9yZWYKLSAgICAgIHsKLSAgICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudDxOLCBUdXBsZT46OlJFVCBlbHRfdHlwZTsKLQotICAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF9yZWZlcmVuY2U8Y29uc3QgZWx0X3R5cGU+Ojp0eXBlIFJFVDsKLSAgICAgICAgdHlwZWRlZiBSRVQgdHlwZTsKLSAgICAgIH07Ci0jZW5kaWYgLy8gdmM3Ci0KLSAgICB9IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotICAgIC8vIEdldCBsZW5ndGggb2YgdGhpcyB0dXBsZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFR1cGxlPgotICAgIHN0cnVjdCBsZW5ndGgKLSAgICB7Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9IDEgKyBsZW5ndGg8dHlwZW5hbWUgVHVwbGU6OnRhaWxfdHlwZT46OnZhbHVlKTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgbGVuZ3RoPHR1cGxlPD4gPiB7Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9IDApOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTw+Ci0gICAgc3RydWN0IGxlbmd0aDxudWxsX3R5cGU+Ci0gICAgewotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSAwKTsKLSAgICB9OwotCi0gICAgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSAgICAvLyBSZWZlcmVuY2UgdGhlIE50aCBlbGVtZW50IGluIGEgdHVwbGUgYW5kIHJldHJpZXZlIGl0IHdpdGggImdldCIKLSAgICB0ZW1wbGF0ZTxpbnQgTj4KLSAgICBzdHJ1Y3QgZ2V0X2NsYXNzCi0gICAgewotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGVhZCwgdHlwZW5hbWUgVGFpbD4KLSAgICAgIHN0YXRpYyBpbmxpbmUKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6ZWxlbWVudF9yZWY8TiwgY29uczxIZWFkLCBUYWlsPiA+OjpSRVQKLSAgICAgIGdldChjb25zPEhlYWQsIFRhaWw+JiB0KQotICAgICAgewotICAgICAgICByZXR1cm4gZ2V0X2NsYXNzPE4tMT46OmdldCh0LnRhaWwpOwotICAgICAgfQotCi0gICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIZWFkLCB0eXBlbmFtZSBUYWlsPgotICAgICAgc3RhdGljIGlubGluZQotICAgICAgdHlwZW5hbWUgZGV0YWlsOjplbGVtZW50X2NvbnN0X3JlZjxOLCBjb25zPEhlYWQsIFRhaWw+ID46OlJFVAotICAgICAgZ2V0KGNvbnN0IGNvbnM8SGVhZCwgVGFpbD4mIHQpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBnZXRfY2xhc3M8Ti0xPjo6Z2V0KHQudGFpbCk7Ci0gICAgICB9Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPD4KLSAgICBzdHJ1Y3QgZ2V0X2NsYXNzPDA+Ci0gICAgewotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGVhZCwgdHlwZW5hbWUgVGFpbD4KLSAgICAgIHN0YXRpYyBpbmxpbmUKLSAgICAgIHR5cGVuYW1lIGFkZF9yZWZlcmVuY2U8SGVhZD46OnR5cGUKLSAgICAgIGdldChjb25zPEhlYWQsIFRhaWw+JiB0KQotICAgICAgewotICAgICAgICByZXR1cm4gdC5oZWFkOwotICAgICAgfQotCi0gICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIZWFkLCB0eXBlbmFtZSBUYWlsPgotICAgICAgc3RhdGljIGlubGluZQotICAgICAgdHlwZW5hbWUgYWRkX3JlZmVyZW5jZTxjb25zdCBIZWFkPjo6dHlwZQotICAgICAgZ2V0KGNvbnN0IGNvbnM8SGVhZCwgVGFpbD4mIHQpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiB0LmhlYWQ7Ci0gICAgICB9Ci0gICAgfTsKLQotICAgIH0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0gICAgLy8gdHVwbGUgY2xhc3MKLSAgICB0ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxLAotICAgICAgdHlwZW5hbWUgVDIsCi0gICAgICB0eXBlbmFtZSBUMywKLSAgICAgIHR5cGVuYW1lIFQ0LAotICAgICAgdHlwZW5hbWUgVDUsCi0gICAgICB0eXBlbmFtZSBUNiwKLSAgICAgIHR5cGVuYW1lIFQ3LAotICAgICAgdHlwZW5hbWUgVDgsCi0gICAgICB0eXBlbmFtZSBUOSwKLSAgICAgIHR5cGVuYW1lIFQxMAotICAgID4KLSAgICBjbGFzcyB0dXBsZSA6Ci0gICAgICBwdWJsaWMgZGV0YWlsOjptYXBfdHVwbGVfdG9fY29uczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTA+Ojpjb25zMQotICAgIHsKLSAgICBwcml2YXRlOgotICAgICAgdHlwZWRlZiBkZXRhaWw6Om1hcF90dXBsZV90b19jb25zPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMD4gbWFwcGVkX3R1cGxlOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXBwZWRfdHVwbGU6OmNvbnMxMCBjb25zMTA7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcHBlZF90dXBsZTo6Y29uczkgY29uczk7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcHBlZF90dXBsZTo6Y29uczggY29uczg7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcHBlZF90dXBsZTo6Y29uczcgY29uczc7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcHBlZF90dXBsZTo6Y29uczYgY29uczY7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcHBlZF90dXBsZTo6Y29uczUgY29uczU7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcHBlZF90dXBsZTo6Y29uczQgY29uczQ7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcHBlZF90dXBsZTo6Y29uczMgY29uczM7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcHBlZF90dXBsZTo6Y29uczIgY29uczI7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcHBlZF90dXBsZTo6Y29uczEgY29uczE7Ci0KLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjphZGRfY29uc3RfcmVmZXJlbmNlPFQxPjo6dHlwZSB0MV9jcmVmOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmFkZF9jb25zdF9yZWZlcmVuY2U8VDI+Ojp0eXBlIHQyX2NyZWY7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6YWRkX2NvbnN0X3JlZmVyZW5jZTxUMz46OnR5cGUgdDNfY3JlZjsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjphZGRfY29uc3RfcmVmZXJlbmNlPFQ0Pjo6dHlwZSB0NF9jcmVmOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmFkZF9jb25zdF9yZWZlcmVuY2U8VDU+Ojp0eXBlIHQ1X2NyZWY7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6YWRkX2NvbnN0X3JlZmVyZW5jZTxUNj46OnR5cGUgdDZfY3JlZjsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjphZGRfY29uc3RfcmVmZXJlbmNlPFQ3Pjo6dHlwZSB0N19jcmVmOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmFkZF9jb25zdF9yZWZlcmVuY2U8VDg+Ojp0eXBlIHQ4X2NyZWY7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6YWRkX2NvbnN0X3JlZmVyZW5jZTxUOT46OnR5cGUgdDlfY3JlZjsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjphZGRfY29uc3RfcmVmZXJlbmNlPFQxMD46OnR5cGUgdDEwX2NyZWY7Ci0gICAgcHVibGljOgotICAgICAgdHlwZWRlZiBjb25zMSBpbmhlcml0ZWQ7Ci0gICAgICB0eXBlZGVmIHR1cGxlIHNlbGZfdHlwZTsKLQotICAgICAgdHVwbGUoKSA6IGNvbnMxKFQxKCksIGNvbnMyKFQyKCksIGNvbnMzKFQzKCksIGNvbnM0KFQ0KCksIGNvbnM1KFQ1KCksIGNvbnM2KFQ2KCksY29uczcoVDcoKSxjb25zOChUOCgpLGNvbnM5KFQ5KCksY29uczEwKFQxMCgpKSkpKSkpKSkpKQotICAgICAgICB7fQotCi0gICAgICB0dXBsZSgKLSAgICAgICAgICB0MV9jcmVmIHQxLAotICAgICAgICAgIHQyX2NyZWYgdDIsCi0gICAgICAgICAgdDNfY3JlZiB0MyA9IFQzKCksCi0gICAgICAgICAgdDRfY3JlZiB0NCA9IFQ0KCksCi0gICAgICAgICAgdDVfY3JlZiB0NSA9IFQ1KCksCi0gICAgICAgICAgdDZfY3JlZiB0NiA9IFQ2KCksCi0gICAgICAgICAgdDdfY3JlZiB0NyA9IFQ3KCksCi0gICAgICAgICAgdDhfY3JlZiB0OCA9IFQ4KCksCi0gICAgICAgICAgdDlfY3JlZiB0OSA9IFQ5KCksCi0gICAgICAgICAgdDEwX2NyZWYgdDEwID0gVDEwKCkKLSAgICAgICkgOgotICAgICAgICBjb25zMSh0MSwgY29uczIodDIsIGNvbnMzKHQzLCBjb25zNCh0NCwgY29uczUodDUsIGNvbnM2KHQ2LGNvbnM3KHQ3LGNvbnM4KHQ4LGNvbnM5KHQ5LGNvbnMxMCh0MTApKSkpKSkpKSkpCi0gICAgICB7Ci0gICAgICB9Ci0KLSAgICAgIGV4cGxpY2l0IHR1cGxlKHQxX2NyZWYgdDEpCi0gICAgICAgIDogY29uczEodDEsIGNvbnMyKFQyKCksIGNvbnMzKFQzKCksIGNvbnM0KFQ0KCksIGNvbnM1KFQ1KCksIGNvbnM2KFQ2KCksY29uczcoVDcoKSxjb25zOChUOCgpLGNvbnM5KFQ5KCksY29uczEwKFQxMCgpKSkpKSkpKSkpKQotICAgICAge30KLQotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGVhZCwgdHlwZW5hbWUgVGFpbD4KLSAgICAgIHR1cGxlKGNvbnN0IGNvbnM8SGVhZCwgVGFpbD4mIG90aGVyKSA6Ci0gICAgICAgIGNvbnMxKG90aGVyLmhlYWQsIG90aGVyLnRhaWwpCi0gICAgICB7Ci0gICAgICB9Ci0KLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZpcnN0LCB0eXBlbmFtZSBTZWNvbmQ+Ci0gICAgICBzZWxmX3R5cGUmIG9wZXJhdG9yPShjb25zdCBzdGQ6OnBhaXI8Rmlyc3QsIFNlY29uZD4mIG90aGVyKQotICAgICAgewotICAgICAgICB0aGlzLT5oZWFkID0gb3RoZXIuZmlyc3Q7Ci0gICAgICAgIHRoaXMtPnRhaWwuaGVhZCA9IG90aGVyLnNlY29uZDsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgfQotCi0gICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIZWFkLCB0eXBlbmFtZSBUYWlsPgotICAgICAgc2VsZl90eXBlJiBvcGVyYXRvcj0oY29uc3QgY29uczxIZWFkLCBUYWlsPiYgb3RoZXIpCi0gICAgICB7Ci0gICAgICAgIHRoaXMtPmhlYWQgPSBvdGhlci5oZWFkOwotICAgICAgICB0aGlzLT50YWlsID0gb3RoZXIudGFpbDsKLQotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICB9Ci0gICAgfTsKLQotICAgIG5hbWVzcGFjZSBkZXRhaWwgewotCi0gICAgICB0ZW1wbGF0ZTxpbnQgTj4gc3RydWN0IHdvcmthcm91bmRfaG9sZGVyIHt9OwotCi0gICAgfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLSAgICB0ZW1wbGF0ZTxpbnQgTiwgdHlwZW5hbWUgSGVhZCwgdHlwZW5hbWUgVGFpbD4KLSAgICB0eXBlbmFtZSBkZXRhaWw6OmVsZW1lbnRfcmVmPE4sIGNvbnM8SGVhZCwgVGFpbD4gPjo6UkVUCi0gICAgZ2V0KGNvbnM8SGVhZCwgVGFpbD4mIHQsIGRldGFpbDo6d29ya2Fyb3VuZF9ob2xkZXI8Tj4qID0gMCkKLSAgICB7Ci0gICAgICByZXR1cm4gZGV0YWlsOjpnZXRfY2xhc3M8Tj46OmdldCh0KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxpbnQgTiwgdHlwZW5hbWUgSGVhZCwgdHlwZW5hbWUgVGFpbD4KLSAgICB0eXBlbmFtZSBkZXRhaWw6OmVsZW1lbnRfY29uc3RfcmVmPE4sIGNvbnM8SGVhZCwgVGFpbD4gPjo6UkVUCi0gICAgZ2V0KGNvbnN0IGNvbnM8SGVhZCwgVGFpbD4mIHQsIGRldGFpbDo6d29ya2Fyb3VuZF9ob2xkZXI8Tj4qID0gMCkKLSAgICB7Ci0gICAgICByZXR1cm4gZGV0YWlsOjpnZXRfY2xhc3M8Tj46OmdldCh0KTsKLSAgICB9Ci0KLSAgICAvLyBNYWtlIGEgdHVwbGUKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMT4KLSAgICBpbmxpbmUKLSAgICB0dXBsZTxUMT4KLSAgICBtYWtlX3R1cGxlKGNvbnN0IFQxJiB0MSkKLSAgICB7Ci0gICAgICByZXR1cm4gdHVwbGU8VDE+KHQxKTsKLSAgICB9Ci0KLSAgICAvLyBNYWtlIGEgdHVwbGUKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci0gICAgaW5saW5lCi0gICAgdHVwbGU8VDEsIFQyPgotICAgIG1ha2VfdHVwbGUoY29uc3QgVDEmIHQxLCBjb25zdCBUMiYgdDIpCi0gICAgewotICAgICAgcmV0dXJuIHR1cGxlPFQxLCBUMj4odDEsIHQyKTsKLSAgICB9Ci0KLSAgICAvLyBNYWtlIGEgdHVwbGUKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzPgotICAgIGlubGluZQotICAgIHR1cGxlPFQxLCBUMiwgVDM+Ci0gICAgbWFrZV90dXBsZShjb25zdCBUMSYgdDEsIGNvbnN0IFQyJiB0MiwgY29uc3QgVDMmIHQzKQotICAgIHsKLSAgICAgIHJldHVybiB0dXBsZTxUMSwgVDIsIFQzPih0MSwgdDIsIHQzKTsKLSAgICB9Ci0KLSAgICAvLyBNYWtlIGEgdHVwbGUKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUND4KLSAgICBpbmxpbmUKLSAgICB0dXBsZTxUMSwgVDIsIFQzLCBUND4KLSAgICBtYWtlX3R1cGxlKGNvbnN0IFQxJiB0MSwgY29uc3QgVDImIHQyLCBjb25zdCBUMyYgdDMsIGNvbnN0IFQ0JiB0NCkKLSAgICB7Ci0gICAgICByZXR1cm4gdHVwbGU8VDEsIFQyLCBUMywgVDQ+KHQxLCB0MiwgdDMsIHQ0KTsKLSAgICB9Ci0KLSAgICAvLyBNYWtlIGEgdHVwbGUKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDU+Ci0gICAgaW5saW5lCi0gICAgdHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1PgotICAgIG1ha2VfdHVwbGUoY29uc3QgVDEmIHQxLCBjb25zdCBUMiYgdDIsIGNvbnN0IFQzJiB0MywgY29uc3QgVDQmIHQ0LCBjb25zdCBUNSYgdDUpCi0gICAgewotICAgICAgcmV0dXJuIHR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNT4odDEsIHQyLCB0MywgdDQsIHQ1KTsKLSAgICB9Ci0KLSAgICAvLyBNYWtlIGEgdHVwbGUKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2PgotICAgIGlubGluZQotICAgIHR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDY+Ci0gICAgbWFrZV90dXBsZShjb25zdCBUMSYgdDEsIGNvbnN0IFQyJiB0MiwgY29uc3QgVDMmIHQzLCBjb25zdCBUNCYgdDQsIGNvbnN0IFQ1JiB0NSwgY29uc3QgVDYmIHQ2KQotICAgIHsKLSAgICAgIHJldHVybiB0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2Pih0MSwgdDIsIHQzLCB0NCwgdDUsIHQ2KTsKLSAgICB9Ci0KLSAgICAvLyBNYWtlIGEgdHVwbGUKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNz4KLSAgICBpbmxpbmUKLSAgICB0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNz4KLSAgICBtYWtlX3R1cGxlKGNvbnN0IFQxJiB0MSwgY29uc3QgVDImIHQyLCBjb25zdCBUMyYgdDMsIGNvbnN0IFQ0JiB0NCwgY29uc3QgVDUmIHQ1LCBjb25zdCBUNiYgdDYsIGNvbnN0IFQ3JiB0NykKLSAgICB7Ci0gICAgICByZXR1cm4gdHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDc+KHQxLCB0MiwgdDMsIHQ0LCB0NSwgdDYsIHQ3KTsKLSAgICB9Ci0KLSAgICAvLyBNYWtlIGEgdHVwbGUKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDg+Ci0gICAgaW5saW5lCi0gICAgdHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4PgotICAgIG1ha2VfdHVwbGUoY29uc3QgVDEmIHQxLCBjb25zdCBUMiYgdDIsIGNvbnN0IFQzJiB0MywgY29uc3QgVDQmIHQ0LCBjb25zdCBUNSYgdDUsIGNvbnN0IFQ2JiB0NiwgY29uc3QgVDcmIHQ3LCBjb25zdCBUOCYgdDgpCi0gICAgewotICAgICAgcmV0dXJuIHR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOD4odDEsIHQyLCB0MywgdDQsIHQ1LCB0NiwgdDcsIHQ4KTsKLSAgICB9Ci0KLSAgICAvLyBNYWtlIGEgdHVwbGUKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5PgotICAgIGlubGluZQotICAgIHR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDk+Ci0gICAgbWFrZV90dXBsZShjb25zdCBUMSYgdDEsIGNvbnN0IFQyJiB0MiwgY29uc3QgVDMmIHQzLCBjb25zdCBUNCYgdDQsIGNvbnN0IFQ1JiB0NSwgY29uc3QgVDYmIHQ2LCBjb25zdCBUNyYgdDcsIGNvbnN0IFQ4JiB0OCwgY29uc3QgVDkmIHQ5KQotICAgIHsKLSAgICAgIHJldHVybiB0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5Pih0MSwgdDIsIHQzLCB0NCwgdDUsIHQ2LCB0NywgdDgsIHQ5KTsKLSAgICB9Ci0KLSAgICAvLyBNYWtlIGEgdHVwbGUKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTA+Ci0gICAgaW5saW5lCi0gICAgdHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwPgotICAgIG1ha2VfdHVwbGUoY29uc3QgVDEmIHQxLCBjb25zdCBUMiYgdDIsIGNvbnN0IFQzJiB0MywgY29uc3QgVDQmIHQ0LCBjb25zdCBUNSYgdDUsIGNvbnN0IFQ2JiB0NiwgY29uc3QgVDcmIHQ3LCBjb25zdCBUOCYgdDgsIGNvbnN0IFQ5JiB0OSwgY29uc3QgVDEwJiB0MTApCi0gICAgewotICAgICAgcmV0dXJuIHR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMD4odDEsIHQyLCB0MywgdDQsIHQ1LCB0NiwgdDcsIHQ4LCB0OSwgdDEwKTsKLSAgICB9Ci0KLSAgICAvLyBUaWUgdmFyaWFibGVzIGludG8gYSB0dXBsZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxPgotICAgIGlubGluZQotICAgIHR1cGxlPGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDE+ID4KLSAgICB0aWUoVDEmIHQxKQotICAgIHsKLSAgICAgIHJldHVybiBtYWtlX3R1cGxlKGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDE+KCZ0MSkpOwotICAgIH0KLQotICAgIC8vIFRpZSB2YXJpYWJsZXMgaW50byBhIHR1cGxlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotICAgIGlubGluZQotICAgIHR1cGxlPGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDE+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMj4gPgotICAgIHRpZShUMSYgdDEsIFQyJiB0MikKLSAgICB7Ci0gICAgICByZXR1cm4gbWFrZV90dXBsZShkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQxPigmdDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMj4oJnQyKSk7Ci0gICAgfQotCi0gICAgLy8gVGllIHZhcmlhYmxlcyBpbnRvIGEgdHVwbGUKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzPgotICAgIGlubGluZQotICAgIHR1cGxlPGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDE+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMj4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQzPiA+Ci0gICAgdGllKFQxJiB0MSwgVDImIHQyLCBUMyYgdDMpCi0gICAgewotICAgICAgcmV0dXJuIG1ha2VfdHVwbGUoZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMT4oJnQxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDI+KCZ0MiksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQzPigmdDMpKTsKLSAgICB9Ci0KLSAgICAvLyBUaWUgdmFyaWFibGVzIGludG8gYSB0dXBsZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0PgotICAgIGlubGluZQotICAgIHR1cGxlPGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDE+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMj4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQzPiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDQ+ID4KLSAgICB0aWUoVDEmIHQxLCBUMiYgdDIsIFQzJiB0MywgVDQmIHQ0KQotICAgIHsKLSAgICAgIHJldHVybiBtYWtlX3R1cGxlKGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDE+KCZ0MSksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQyPigmdDIpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMz4oJnQzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDQ+KCZ0NCkpOwotICAgIH0KLQotICAgIC8vIFRpZSB2YXJpYWJsZXMgaW50byBhIHR1cGxlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1PgotICAgIGlubGluZQotICAgIHR1cGxlPGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDE+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMj4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQzPiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDQ+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUNT4gPgotICAgIHRpZShUMSYgdDEsIFQyJiB0MiwgVDMmIHQzLCBUNCYgdDQsIFQ1ICZ0NSkKLSAgICB7Ci0gICAgICByZXR1cm4gbWFrZV90dXBsZShkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQxPigmdDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMj4oJnQyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDM+KCZ0MyksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ0PigmdDQpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUNT4oJnQ1KSk7Ci0gICAgfQotCi0gICAgLy8gVGllIHZhcmlhYmxlcyBpbnRvIGEgdHVwbGUKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2PgotICAgIGlubGluZQotICAgIHR1cGxlPGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDE+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMj4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQzPiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDQ+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUNT4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ2PiA+Ci0gICAgdGllKFQxJiB0MSwgVDImIHQyLCBUMyYgdDMsIFQ0JiB0NCwgVDUgJnQ1LCBUNiAmdDYpCi0gICAgewotICAgICAgcmV0dXJuIG1ha2VfdHVwbGUoZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMT4oJnQxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDI+KCZ0MiksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQzPigmdDMpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUND4oJnQ0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDU+KCZ0NSksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ2PigmdDYpKTsKLSAgICB9Ci0KLSAgICAvLyBUaWUgdmFyaWFibGVzIGludG8gYSB0dXBsZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3PgotICAgIGlubGluZQotICAgIHR1cGxlPGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDE+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMj4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQzPiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDQ+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUNT4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ2PiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDc+ID4KLSAgICB0aWUoVDEmIHQxLCBUMiYgdDIsIFQzJiB0MywgVDQmIHQ0LCBUNSAmdDUsIFQ2ICZ0NiwgVDcgJnQ3KQotICAgIHsKLSAgICAgIHJldHVybiBtYWtlX3R1cGxlKGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDE+KCZ0MSksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQyPigmdDIpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMz4oJnQzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDQ+KCZ0NCksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ1PigmdDUpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUNj4oJnQ2KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDc+KCZ0NykpOwotICAgIH0KLQotICAgIC8vIFRpZSB2YXJpYWJsZXMgaW50byBhIHR1cGxlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4PgotICAgIGlubGluZQotICAgIHR1cGxlPGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDE+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMj4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQzPiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDQ+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUNT4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ2PiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDc+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUOD4gPgotICAgIHRpZShUMSYgdDEsIFQyJiB0MiwgVDMmIHQzLCBUNCYgdDQsIFQ1ICZ0NSwgVDYgJnQ2LCBUNyAmdDcsIFQ4ICZ0OCkKLSAgICB7Ci0gICAgICByZXR1cm4gbWFrZV90dXBsZShkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQxPigmdDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMj4oJnQyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDM+KCZ0MyksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ0PigmdDQpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUNT4oJnQ1KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDY+KCZ0NiksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ3PigmdDcpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUOD4oJnQ4KSk7Ci0gICAgfQotCi0gICAgLy8gVGllIHZhcmlhYmxlcyBpbnRvIGEgdHVwbGUKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5PgotICAgIGlubGluZQotICAgIHR1cGxlPGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDE+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMj4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQzPiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDQ+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUNT4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ2PiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDc+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUOD4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ5PiA+Ci0gICAgdGllKFQxJiB0MSwgVDImIHQyLCBUMyYgdDMsIFQ0JiB0NCwgVDUgJnQ1LCBUNiAmdDYsIFQ3ICZ0NywgVDggJnQ4LCBUOSAmdDkpCi0gICAgewotICAgICAgcmV0dXJuIG1ha2VfdHVwbGUoZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMT4oJnQxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDI+KCZ0MiksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQzPigmdDMpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUND4oJnQ0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDU+KCZ0NSksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ2PigmdDYpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUNz4oJnQ3KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDg+KCZ0OCksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ5PigmdDkpKTsKLSAgICB9Ci0gICAgLy8gVGllIHZhcmlhYmxlcyBpbnRvIGEgdHVwbGUKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTA+Ci0gICAgaW5saW5lCi0gICAgdHVwbGU8ZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMT4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQyPiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDM+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUND4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ1PiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDY+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUNz4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ4PiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDk+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMTA+ID4KLSAgICB0aWUoVDEmIHQxLCBUMiYgdDIsIFQzJiB0MywgVDQmIHQ0LCBUNSAmdDUsIFQ2ICZ0NiwgVDcgJnQ3LCBUOCAmdDgsIFQ5ICZ0OSwgVDEwICZ0MTApCi0gICAgewotICAgICAgcmV0dXJuIG1ha2VfdHVwbGUoZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMT4oJnQxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDI+KCZ0MiksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQzPigmdDMpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUND4oJnQ0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDU+KCZ0NSksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ2PigmdDYpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUNz4oJnQ3KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDg+KCZ0OCksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ5PigmdDkpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMTA+KCZ0MTApKTsKLSAgICB9Ci0gICAgLy8gImlnbm9yZSIgYWxsb3dzIHR1cGxlIHBvc2l0aW9ucyB0byBiZSBpZ25vcmVkIHdoZW4gdXNpbmcgInRpZSIuCi0KLWRldGFpbDo6c3dhbGxvd19hc3NpZ24gY29uc3QgaWdub3JlID0gZGV0YWlsOjpzd2FsbG93X2Fzc2lnbigpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgVDAsIGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0LAotICAgICAgICAgIGNsYXNzIFQ1LCBjbGFzcyBUNiwgY2xhc3MgVDcsIGNsYXNzIFQ4LCBjbGFzcyBUOT4KLXZvaWQgc3dhcCh0dXBsZTxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOT4mIGxocywKLSAgICAgICAgICB0dXBsZTxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOT4mIHJocyk7Ci1pbmxpbmUgdm9pZCBzd2FwKG51bGxfdHlwZSYsIG51bGxfdHlwZSYpIHt9Ci10ZW1wbGF0ZTxjbGFzcyBISD4KLWlubGluZSB2b2lkIHN3YXAoY29uczxISCwgbnVsbF90eXBlPiYgbGhzLCBjb25zPEhILCBudWxsX3R5cGU+JiByaHMpIHsKLSAgOjpuZG5ib29zdDo6c3dhcChsaHMuaGVhZCwgcmhzLmhlYWQpOwotfQotdGVtcGxhdGU8Y2xhc3MgSEgsIGNsYXNzIFRUPgotaW5saW5lIHZvaWQgc3dhcChjb25zPEhILCBUVD4mIGxocywgY29uczxISCwgVFQ+JiByaHMpIHsKLSAgOjpuZG5ib29zdDo6c3dhcChsaHMuaGVhZCwgcmhzLmhlYWQpOwotICA6Om5kbmJvb3N0Ojp0dXBsZXM6OnN3YXAobGhzLnRhaWwsIHJocy50YWlsKTsKLX0KLXRlbXBsYXRlIDxjbGFzcyBUMCwgY2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgVDQsCi0gICAgICAgICAgY2xhc3MgVDUsIGNsYXNzIFQ2LCBjbGFzcyBUNywgY2xhc3MgVDgsIGNsYXNzIFQ5PgotaW5saW5lIHZvaWQgc3dhcCh0dXBsZTxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOT4mIGxocywKLSAgICAgICAgICB0dXBsZTxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOT4mIHJocykgewotICB0eXBlZGVmIHR1cGxlPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5PiB0dXBsZV90eXBlOwotICB0eXBlZGVmIHR5cGVuYW1lIHR1cGxlX3R5cGU6OmluaGVyaXRlZCBiYXNlOwotICA6Om5kbmJvb3N0Ojp0dXBsZXM6OnN3YXAoc3RhdGljX2Nhc3Q8YmFzZSY+KGxocyksIHN0YXRpY19jYXN0PGJhc2UmPihyaHMpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgdHVwbGVzCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotI2VuZGlmIC8vIE5ETkJPT1NUX1RVUExFX0JBU0lDX05PX1BBUlRJQUxfU1BFQ19IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHVwbGUvdHVwbGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90dXBsZS90dXBsZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwYjU4MDQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90dXBsZS90dXBsZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MCArMCwwIEBACi0vLyAgdHVwbGUuaHBwIC0gQm9vc3QgVHVwbGUgTGlicmFyeSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAgSmFha2tvIEphcnZpIChqYWFra28uamFydmlAY3MudXR1LmZpKQotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZwotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAKLQotI2lmbmRlZiBORE5CT09TVF9UVVBMRV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfVFVQTEVfSFBQCi0KLSNpZiBkZWZpbmVkKF9fc2dpKSAmJiBkZWZpbmVkKF9DT01QSUxFUl9WRVJTSU9OKSAmJiBfQ09NUElMRVJfVkVSU0lPTiA8PSA3MzAKLS8vIFdvcmsgYXJvdW5kIGEgY29tcGlsZXIgYnVnLgotLy8gbmRuYm9vc3Q6OnB5dGhvbjo6dHVwbGUgaGFzIHRvIGJlIHNlZW4gYnkgdGhlIGNvbXBpbGVyIGJlZm9yZSB0aGUKLS8vIG5kbmJvb3N0Ojp0dXBsZSBjbGFzcyB0ZW1wbGF0ZS4KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBweXRob24geyBjbGFzcyB0dXBsZTsgfX0KLSNlbmRpZgotCi0jaW5jbHVkZSAibmRuYm9vc3QvY29uZmlnLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcCIKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLS8vIFRoZSBNU1ZDIHZlcnNpb24KLSNpbmNsdWRlICJuZG5ib29zdC90dXBsZS9kZXRhaWwvdHVwbGVfYmFzaWNfbm9fcGFydGlhbF9zcGVjLmhwcCIKLQotI2Vsc2UKLS8vIG90aGVyIGNvbXBpbGVycwotI2luY2x1ZGUgIm5kbmJvb3N0L3JlZi5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHVwbGUvZGV0YWlsL3R1cGxlX2Jhc2ljLmhwcCIKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgICAgCi0KLXVzaW5nIHR1cGxlczo6dHVwbGU7Ci11c2luZyB0dXBsZXM6Om1ha2VfdHVwbGU7Ci11c2luZyB0dXBsZXM6OnRpZTsKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19VU0lOR19URU1QTEFURSkKLXVzaW5nIHR1cGxlczo6Z2V0OwotI2VsaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLS8vCi0vLyBUaGUgInVzaW5nIHR1cGxlczo6Z2V0IiBzdGF0ZW1lbnQgY2F1c2VzIHRoZQotLy8gQm9ybGFuZCBjb21waWxlciB0byBJQ0UsIHVzZSBmb3J3YXJkaW5nCi0vLyBmdW5jdGlvbnMgaW5zdGVhZDoKLS8vCi10ZW1wbGF0ZTxpbnQgTiwgY2xhc3MgSFQsIGNsYXNzIFRUPgotaW5saW5lIHR5cGVuYW1lIHR1cGxlczo6YWNjZXNzX3RyYWl0czwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDxOLCB0dXBsZXM6OmNvbnM8SFQsIFRUPiA+Ojp0eXBlCi0gICAgICAgICAgICAgICAgPjo6bm9uX2NvbnN0X3R5cGUKLWdldCh0dXBsZXM6OmNvbnM8SFQsIFRUPiYgYykgewotICByZXR1cm4gdHVwbGVzOjpnZXQ8TixIVCxUVD4oYyk7Ci19IAotLy8gZ2V0IGZ1bmN0aW9uIGZvciBjb25zdCBjb25zLWxpc3RzLCByZXR1cm5zIGEgY29uc3QgcmVmZXJlbmNlIHRvCi0vLyB0aGUgZWxlbWVudC4gSWYgdGhlIGVsZW1lbnQgaXMgYSByZWZlcmVuY2UsIHJldHVybnMgdGhlIHJlZmVyZW5jZQotLy8gYXMgc3VjaCAodGhhdCBpcywgY2FuIHJldHVybiBhIG5vbi1jb25zdCByZWZlcmVuY2UpCi10ZW1wbGF0ZTxpbnQgTiwgY2xhc3MgSFQsIGNsYXNzIFRUPgotaW5saW5lIHR5cGVuYW1lIHR1cGxlczo6YWNjZXNzX3RyYWl0czwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDxOLCB0dXBsZXM6OmNvbnM8SFQsIFRUPiA+Ojp0eXBlCi0gICAgICAgICAgICAgICAgPjo6Y29uc3RfdHlwZQotZ2V0KGNvbnN0IHR1cGxlczo6Y29uczxIVCwgVFQ+JiBjKSB7Ci0gIHJldHVybiB0dXBsZXM6OmdldDxOLEhULFRUPihjKTsKLX0KLSNlbHNlICAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0vLwotLy8gTVNWQywgdXNpbmcgZGVjbGFyYXRpb25zIGRvbid0IG1peCB3aXRoIHRlbXBsYXRlcyB3ZWxsLAotLy8gc28gdXNlIGZvcndhcmRpbmcgZnVuY3Rpb25zIGluc3RlYWQ6Ci0vLwotdGVtcGxhdGU8aW50IE4sIHR5cGVuYW1lIEhlYWQsIHR5cGVuYW1lIFRhaWw+Ci10eXBlbmFtZSB0dXBsZXM6OmRldGFpbDo6ZWxlbWVudF9yZWY8TiwgdHVwbGVzOjpjb25zPEhlYWQsIFRhaWw+ID46OlJFVAotZ2V0KHR1cGxlczo6Y29uczxIZWFkLCBUYWlsPiYgdCwgdHVwbGVzOjpkZXRhaWw6Ondvcmthcm91bmRfaG9sZGVyPE4+KiA9IDApCi17Ci0gICByZXR1cm4gdHVwbGVzOjpkZXRhaWw6OmdldF9jbGFzczxOPjo6Z2V0KHQpOwotfQotCi10ZW1wbGF0ZTxpbnQgTiwgdHlwZW5hbWUgSGVhZCwgdHlwZW5hbWUgVGFpbD4KLXR5cGVuYW1lIHR1cGxlczo6ZGV0YWlsOjplbGVtZW50X2NvbnN0X3JlZjxOLCB0dXBsZXM6OmNvbnM8SGVhZCwgVGFpbD4gPjo6UkVUCi1nZXQoY29uc3QgdHVwbGVzOjpjb25zPEhlYWQsIFRhaWw+JiB0LCB0dXBsZXM6OmRldGFpbDo6d29ya2Fyb3VuZF9ob2xkZXI8Tj4qID0gMCkKLXsKLSAgIHJldHVybiB0dXBsZXM6OmRldGFpbDo6Z2V0X2NsYXNzPE4+OjpnZXQodCk7Ci19Ci0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVVNJTkdfVEVNUExBVEUKLSAgIAotfSAvLyBlbmQgbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RVUExFX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5YjM1ZjkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMS4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFX05ETkJPT1NUX0RXQTIwMDEwMTIwX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfVFlQRV9ORE5CT09TVF9EV0EyMDAxMDEyMF9IUFAKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotICAvLyBKdXN0IGEgc2ltcGxlICJ0eXBlIGVudmVsb3BlIi4gVXNlZnVsIGluIHZhcmlvdXMgY29udGV4dHMsIG1vc3RseSB0byB3b3JrCi0gIC8vIGFyb3VuZCBzb21lIE1TVkMgZGVmaWNpZW5jaWVzLgotICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgc3RydWN0IHR5cGUge307Ci0KLX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RZUEVfTkROQk9PU1RfRFdBMjAwMTAxMjBfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMGNjY2VhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotLy8gIFNlZSBuZG5ib29zdC90eXBlX3RyYWl0cy8qLmhwcCBmb3IgZnVsbCBjb3B5cmlnaHQgbm90aWNlcy4KLQotI2lmbmRlZiBORE5CT09TVF9UWVBFX1RSQUlUU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfVFlQRV9UUkFJVFNfSFBQCi0KLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfY29uc3QuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9jdi5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX2x2YWx1ZV9yZWZlcmVuY2UuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9wb2ludGVyLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfcmVmZXJlbmNlLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfcnZhbHVlX3JlZmVyZW5jZS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3ZvbGF0aWxlLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9hbGlnbmVkX3N0b3JhZ2UuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2FsaWdubWVudF9vZi5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvY29tbW9uX3R5cGUuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbmRpdGlvbmFsLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9kZWNheS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvZXh0ZW50LmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9mbG9hdGluZ19wb2ludF9wcm9tb3Rpb24uaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2Z1bmN0aW9uX3RyYWl0cy5ocHAiCi0jaWYgIWRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiAhZGVmaW5lZChfX0NVREFDQ19fKQotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19uZXdfb3BlcmF0b3IuaHBwIgotI2VuZGlmCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25vdGhyb3dfYXNzaWduLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbm90aHJvd19jb25zdHJ1Y3Rvci5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25vdGhyb3dfY29weS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25vdGhyb3dfZGVzdHJ1Y3Rvci5ocHAiCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX29wZXJhdG9yLmhwcD4KLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9hc3NpZ24uaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX2NvbnN0cnVjdG9yLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9jb3B5LmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9kZXN0cnVjdG9yLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9tb3ZlX2Fzc2lnbi5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfbW92ZV9jb25zdHJ1Y3Rvci5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3ZpcnR1YWxfZGVzdHJ1Y3Rvci5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYWJzdHJhY3QuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FyaXRobWV0aWMuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FycmF5LmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19iYXNlX2FuZF9kZXJpdmVkLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19iYXNlX29mLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jbGFzcy5ocHAiCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29tcGxleC5ocHA+Ci0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29tcG91bmQuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnN0LmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZW1wdHkuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2VudW0uaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Zsb2F0LmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19mbG9hdGluZ19wb2ludC5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZnVuY3Rpb24uaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Z1bmRhbWVudGFsLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19pbnRlZ3JhbC5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbHZhbHVlX3JlZmVyZW5jZS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXIuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX21lbWJlcl9vYmplY3RfcG9pbnRlci5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbWVtYmVyX3BvaW50ZXIuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX25vdGhyb3dfbW92ZV9hc3NpZ25hYmxlLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJsZS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfb2JqZWN0LmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2QuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvbHltb3JwaGljLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2ludGVyLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3J2YWx1ZV9yZWZlcmVuY2UuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NpZ25lZC5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2NhbGFyLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zdGF0ZWxlc3MuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3VuaW9uLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc191bnNpZ25lZC5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9pZC5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdmlydHVhbF9iYXNlX29mLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2xhdGlsZS5ocHAiCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvbWFrZV91bnNpZ25lZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvbWFrZV9zaWduZWQuaHBwPgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL3JhbmsuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9ib3VuZHMuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9leHRlbnQuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9hbGxfZXh0ZW50cy5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2NvbnN0LmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9wb2ludGVyLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfcmVmZXJlbmNlLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfdm9sYXRpbGUuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL3R5cGVfd2l0aF9hbGlnbm1lbnQuaHBwIgotI2lmICEoZGVmaW5lZChfX3NnaSkgJiYgZGVmaW5lZChfX0VER19WRVJTSU9OX18pICYmIChfX0VER19WRVJTSU9OX18gPT0gMjM4KSkKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pbnRlZ3JhbF9wcm9tb3Rpb24uaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL3Byb21vdGUuaHBwIgotI2VuZGlmCi0KLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pY2UuaHBwIgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFlQRV9UUkFJVFNfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9jb25zdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9jb25zdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3YzVlZDAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfY29uc3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBEYXZlIEFicmFoYW1zLCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQKLS8vICBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0FERF9DT05TVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfQUREX0NPTlNUX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotLy8gKiBjb252ZXJ0IGEgdHlwZSBUIHRvIGNvbnN0IHR5cGUgLSBhZGRfY29uc3Q8VD4KLS8vIHRoaXMgaXMgbm90IHJlcXVpcmVkIHNpbmNlIHRoZSByZXN1bHQgaXMgYWx3YXlzCi0vLyB0aGUgc2FtZSBhcyAiVCBjb25zdCIsIGJ1dCBpdCBkb2VzIHN1cHByZXNzIHdhcm5pbmdzCi0vLyBmcm9tIHNvbWUgY29tcGlsZXJzOgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotLy8gVGhpcyBib2d1cyB3YXJuaW5nIHdpbGwgYXBwZWFyIHdoZW4gYWRkX2NvbnN0IGlzIGFwcGxpZWQgdG8gYQotLy8gY29uc3Qgdm9sYXRpbGUgcmVmZXJlbmNlIGJlY2F1c2Ugd2UgY2FuJ3QgZGV0ZWN0IGNvbnN0IHZvbGF0aWxlCi0vLyByZWZlcmVuY2VzIHdpdGggTVNWQzYuCi0jICAgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgICBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxODEpIC8vIHdhcm5pbmcgQzQxODE6IHF1YWxpZmllciBhcHBsaWVkIHRvIHJlZmVyZW5jZSB0eXBlIGlnbm9yZWQKLSNlbmRpZiAKLQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfREVGMShhZGRfY29uc3QsVCxUIGNvbnN0KQotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotIyAgIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZiAKLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxhZGRfY29uc3QsVCYsVCYpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0FERF9DT05TVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX2N2LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX2N2LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGNkNTZkOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9jdi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IERhdmUgQWJyYWhhbXMsIFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZAotLy8gIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4gIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0FERF9DVl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfQUREX0NWX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotLy8gKiBjb252ZXJ0IGEgdHlwZSBUIHRvIGEgY29uc3Qgdm9sYXRpbGUgdHlwZSAtIGFkZF9jdjxUPgotLy8gdGhpcyBpcyBub3QgcmVxdWlyZWQgc2luY2UgdGhlIHJlc3VsdCBpcyBhbHdheXMKLS8vIHRoZSBzYW1lIGFzICJUIGNvbnN0IHZvbGF0aWxlIiwgYnV0IGl0IGRvZXMgc3VwcHJlc3Mgd2FybmluZ3MKLS8vIGZyb20gc29tZSBjb21waWxlcnM6Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0vLyBUaGlzIGJvZ3VzIHdhcm5pbmcgd2lsbCBhcHBlYXIgd2hlbiBhZGRfdm9sYXRpbGUgaXMgYXBwbGllZCB0byBhCi0vLyBjb25zdCB2b2xhdGlsZSByZWZlcmVuY2UgYmVjYXVzZSB3ZSBjYW4ndCBkZXRlY3QgY29uc3Qgdm9sYXRpbGUKLS8vIHJlZmVyZW5jZXMgd2l0aCBNU1ZDNi4KLSMgICBwcmFnbWEgd2FybmluZyhwdXNoKQotIyAgIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDE4MSkgLy8gd2FybmluZyBDNDE4MTogcXVhbGlmaWVyIGFwcGxpZWQgdG8gcmVmZXJlbmNlIHR5cGUgaWdub3JlZAotI2VuZGlmIAotCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9ERUYxKGFkZF9jdixULFQgY29uc3Qgdm9sYXRpbGUpCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jICAgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmIAotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULGFkZF9jdixUJixUJikKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfQUREX0NWX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfbHZhbHVlX3JlZmVyZW5jZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9sdmFsdWVfcmVmZXJlbmNlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTkyZWZjNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9sdmFsdWVfcmVmZXJlbmNlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS8vICBDb3B5cmlnaHQgMjAxMCBKb2huIE1hZGRvY2sKLQotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRV9UUkFJVFNfRVhUX0FERF9MVkFMVUVfUkVGRVJFTkNFX19IUFAKLSNkZWZpbmUgTkROQk9PU1RfVFlQRV9UUkFJVFNfRVhUX0FERF9MVkFMVUVfUkVGRVJFTkNFX19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9yZWZlcmVuY2UuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0RFRjEoYWRkX2x2YWx1ZV9yZWZlcmVuY2UsVCx0eXBlbmFtZSBuZG5ib29zdDo6YWRkX3JlZmVyZW5jZTxUPjo6dHlwZSkKLQotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsYWRkX2x2YWx1ZV9yZWZlcmVuY2UsVCYmLFQmKQotI2VuZGlmCi0KLX0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmICAvLyBORE5CT09TVF9UWVBFX1RSQUlUU19FWFRfQUREX0xWQUxVRV9SRUZFUkVOQ0VfX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfcG9pbnRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9wb2ludGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzI2ZjYwYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9wb2ludGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9BRERfUE9JTlRFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfQUREX1BPSU5URVJfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfcmVmZXJlbmNlLmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSNpZiBkZWZpbmVkKF9fQk9STEFORENfXykgJiYgKF9fQk9STEFORENfXyA8IDB4NUEwKQotLy8KLS8vIEZvciBzb21lIHJlYXNvbiB0aGlzIGltcGxlbWVudGF0aW9uIHN0b3BzIEJvcmxhbmRzIGNvbXBpbGVyCi0vLyBmcm9tIGRyb3BwaW5nIGN2LXF1YWxpZmllcnMsIGl0IHN0aWxsIGZhaWxzIHdpdGggcmVmZXJlbmNlcwotLy8gdG8gYXJyYXlzIGZvciBzb21lIHJlYXNvbiB0aG91Z2ggKHNocnVnLi4uKSAoSk0gMjAwMjExMDQpCi0vLwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgYWRkX3BvaW50ZXJfaW1wbAotewotICAgIHR5cGVkZWYgVCogdHlwZTsKLX07Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBhZGRfcG9pbnRlcl9pbXBsPFQmPgotewotICAgIHR5cGVkZWYgVCogdHlwZTsKLX07Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBhZGRfcG9pbnRlcl9pbXBsPFQmY29uc3Q+Ci17Ci0gICAgdHlwZWRlZiBUKiB0eXBlOwotfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGFkZF9wb2ludGVyX2ltcGw8VCZ2b2xhdGlsZT4KLXsKLSAgICB0eXBlZGVmIFQqIHR5cGU7Ci19OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgYWRkX3BvaW50ZXJfaW1wbDxUJmNvbnN0IHZvbGF0aWxlPgotewotICAgIHR5cGVkZWYgVCogdHlwZTsKLX07Ci0KLSNlbHNlCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGFkZF9wb2ludGVyX2ltcGwKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlbW92ZV9yZWZlcmVuY2U8VD46OnR5cGUgbm9fcmVmX3R5cGU7Ci0gICAgdHlwZWRlZiBub19yZWZfdHlwZSogdHlwZTsKLX07Ci0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfREVGMShhZGRfcG9pbnRlcixULHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFkZF9wb2ludGVyX2ltcGw8VD46OnR5cGUpCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9BRERfUE9JTlRFUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3JlZmVyZW5jZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9yZWZlcmVuY2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OTNiOGJjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3JlZmVyZW5jZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDcgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9BRERfUkVGRVJFTkNFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9BRERfUkVGRVJFTkNFX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pICYmIGRlZmluZWQoTkROQk9PU1RfTVNWQzZfTUVNQkVSX1RFTVBMQVRFUykKLQotdGVtcGxhdGUgPGJvb2wgeD4KLXN0cnVjdCByZWZlcmVuY2VfYWRkZXIKLXsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCYgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCByZWZlcmVuY2VfYWRkZXI8dHJ1ZT4KLXsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBhZGRfcmVmZXJlbmNlX2ltcGwKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlZmVyZW5jZV9hZGRlcjwKLSAgICAgICAgICA6Om5kbmJvb3N0Ojppc19yZWZlcmVuY2U8VD46OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88VD4gcmVzdWx0OwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXN1bHQ6OnR5cGUgdHlwZTsKLX07Ci0KLSNlbHNlCi0vLwotLy8gV2UgY2FuJ3QgZmlsdGVyIG91dCBydmFsdWVfcmVmZXJlbmNlcyBhdCB0aGUgc2FtZSBsZXZlbCBhcwotLy8gcmVmZXJlbmNlcyBvciB3ZSBnZXQgYW1iaWd1aXRpZXMgZnJvbSBtc3ZjOgotLy8KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgYWRkX3JlZmVyZW5jZV9ydmFsdWVfbGF5ZXIKLXsKLSAgICB0eXBlZGVmIFQmIHR5cGU7Ci19OwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBhZGRfcmVmZXJlbmNlX3J2YWx1ZV9sYXllcjxUJiY+Ci17Ci0gICAgdHlwZWRlZiBUJiYgdHlwZTsKLX07Ci0jZW5kaWYKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgYWRkX3JlZmVyZW5jZV9pbXBsCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfcmVmZXJlbmNlX3J2YWx1ZV9sYXllcjxUPjo6dHlwZSB0eXBlOwotfTsKLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9JTVBMX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULGFkZF9yZWZlcmVuY2UsVCYsVCYpCi0jZW5kaWYKLQotI2VuZGlmCi0KLS8vIHRoZXNlIGZ1bGwgc3BlY2lhbGlzYXRpb25zIGFyZSBhbHdheXMgcmVxdWlyZWQ6Ci1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9JTVBMX1NQRUMxKGFkZF9yZWZlcmVuY2Usdm9pZCx2b2lkKQotI2lmbmRlZiBORE5CT09TVF9OT19DVl9WT0lEX1NQRUNJQUxJWkFUSU9OUwotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfSU1QTF9TUEVDMShhZGRfcmVmZXJlbmNlLHZvaWQgY29uc3Qsdm9pZCBjb25zdCkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0lNUExfU1BFQzEoYWRkX3JlZmVyZW5jZSx2b2lkIHZvbGF0aWxlLHZvaWQgdm9sYXRpbGUpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9JTVBMX1NQRUMxKGFkZF9yZWZlcmVuY2Usdm9pZCBjb25zdCB2b2xhdGlsZSx2b2lkIGNvbnN0IHZvbGF0aWxlKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9ERUYxKGFkZF9yZWZlcmVuY2UsVCx0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphZGRfcmVmZXJlbmNlX2ltcGw8VD46OnR5cGUpCi0KLS8vIGFndXJ0LCAwNy9tYXIvMDM6IHdvcmthcm91bmQgQm9ybGFuZCdzIGlsbC1mb3JtZWQgc2Vuc2l0aXZpdHkgdG8gYW4gYWRkaXRpb25hbAotLy8gbGV2ZWwgb2YgaW5kaXJlY3Rpb24sIGhlcmUKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPCAweDYwMCkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULGFkZF9yZWZlcmVuY2UsVCYsVCYpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0FERF9SRUZFUkVOQ0VfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9ydmFsdWVfcmVmZXJlbmNlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3J2YWx1ZV9yZWZlcmVuY2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTYzMDc1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3J2YWx1ZV9yZWZlcmVuY2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLy8gIGFkZF9ydmFsdWVfcmVmZXJlbmNlLmhwcCAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCAyMDEwIFZpY2VudGUgSi4gQm90ZXQgRXNjcmliYQotCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFX1RSQUlUU19FWFRfQUREX1JWQUxVRV9SRUZFUkVOQ0VfX0hQUAotI2RlZmluZSBORE5CT09TVF9UWVBFX1RSQUlUU19FWFRfQUREX1JWQUxVRV9SRUZFUkVOQ0VfX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvaWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3JlZmVyZW5jZS5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X2RlZi5ocHA+Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICBDKyswMyBpbXBsZW1lbnRhdGlvbiBvZiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vICAgICAgICAgICAgIDIwLjkuNy4yIFJlZmVyZW5jZSBtb2RpZmljYXRpb25zIFttZXRhLnRyYW5zLnJlZl0gICAgICAgICAgICAgIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdHRlbiBieSBWaWNlbnRlIEouIEJvdGV0IEVzY3JpYmEgICAgICAgICAgICAgICAvLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vIElmIFQgbmFtZXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uIHR5cGUgdGhlbiB0aGUgbWVtYmVyIHR5cGVkZWYgdHlwZQotLy8gc2hhbGwgbmFtZSBUJiY7IG90aGVyd2lzZSwgdHlwZSBzaGFsbCBuYW1lIFQuIFsgTm90ZTogVGhpcyBydWxlIHJlZmxlY3RzCi0vLyB0aGUgc2VtYW50aWNzIG9mIHJlZmVyZW5jZSBjb2xsYXBzaW5nLiBGb3IgZXhhbXBsZSwgd2hlbiBhIHR5cGUgVCBuYW1lcwotLy8gYSB0eXBlIFQxJiwgdGhlIHR5cGUgYWRkX3J2YWx1ZV9yZWZlcmVuY2U8VD46OnR5cGUgaXMgbm90IGFuIHJ2YWx1ZQotLy8gcmVmZXJlbmNlLiAtZW5kIG5vdGUgXQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHR5cGVfdHJhaXRzX2RldGFpbCB7Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgYm9vbCBiPgotICAgIHN0cnVjdCBhZGRfcnZhbHVlX3JlZmVyZW5jZV9oZWxwZXIKLSAgICB7IHR5cGVkZWYgVCAgIHR5cGU7IH07Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgYWRkX3J2YWx1ZV9yZWZlcmVuY2VfaGVscGVyPFQsIHRydWU+Ci0gICAgewotICAgICAgICB0eXBlZGVmIFQmJiAgIHR5cGU7Ci0gICAgfTsKLSNlbmRpZgotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IGFkZF9ydmFsdWVfcmVmZXJlbmNlX2ltcAotICAgIHsKLSAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojp0eXBlX3RyYWl0c19kZXRhaWw6OmFkZF9ydmFsdWVfcmVmZXJlbmNlX2hlbHBlcgotICAgICAgICAgICAgICAgICAgPFQsIChpc192b2lkPFQ+Ojp2YWx1ZSA9PSBmYWxzZSAmJiBpc19yZWZlcmVuY2U8VD46OnZhbHVlID09IGZhbHNlKSA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLQotfQotCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9ERUYxKGFkZF9ydmFsdWVfcmVmZXJlbmNlLFQsdHlwZW5hbWUgbmRuYm9vc3Q6OnR5cGVfdHJhaXRzX2RldGFpbDo6YWRkX3J2YWx1ZV9yZWZlcmVuY2VfaW1wPFQ+Ojp0eXBlKQotCi19ICAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmICAvLyBORE5CT09TVF9UWVBFX1RSQUlUU19FWFRfQUREX1JWQUxVRV9SRUZFUkVOQ0VfX0hQUAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF92b2xhdGlsZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF92b2xhdGlsZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4ZjExNjIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfdm9sYXRpbGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBEYXZlIEFicmFoYW1zLCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQKLS8vICBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0FERF9WT0xBVElMRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfQUREX1ZPTEFUSUxFX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotLy8gKiBjb252ZXJ0IGEgdHlwZSBUIHRvIHZvbGF0aWxlIHR5cGUgLSBhZGRfdm9sYXRpbGU8VD4KLS8vIHRoaXMgaXMgbm90IHJlcXVpcmVkIHNpbmNlIHRoZSByZXN1bHQgaXMgYWx3YXlzCi0vLyB0aGUgc2FtZSBhcyAiVCB2b2xhdGlsZSIsIGJ1dCBpdCBkb2VzIHN1cHByZXNzIHdhcm5pbmdzCi0vLyBmcm9tIHNvbWUgY29tcGlsZXJzOgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotLy8gVGhpcyBib2d1cyB3YXJuaW5nIHdpbGwgYXBwZWFyIHdoZW4gYWRkX3ZvbGF0aWxlIGlzIGFwcGxpZWQgdG8gYQotLy8gY29uc3Qgdm9sYXRpbGUgcmVmZXJlbmNlIGJlY2F1c2Ugd2UgY2FuJ3QgZGV0ZWN0IGNvbnN0IHZvbGF0aWxlCi0vLyByZWZlcmVuY2VzIHdpdGggTVNWQzYuCi0jICAgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgICBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxODEpIC8vIHdhcm5pbmcgQzQxODE6IHF1YWxpZmllciBhcHBsaWVkIHRvIHJlZmVyZW5jZSB0eXBlIGlnbm9yZWQKLSNlbmRpZiAKLQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfREVGMShhZGRfdm9sYXRpbGUsVCxUIHZvbGF0aWxlKQotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotIyAgIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZiAKLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxhZGRfdm9sYXRpbGUsVCYsVCYpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0FERF9WT0xBVElMRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvYWxpZ25lZF9zdG9yYWdlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvYWxpZ25lZF9zdG9yYWdlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWRlNjZhMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2FsaWduZWRfc3RvcmFnZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi0KLS8vICBDb3B5cmlnaHQgKEMpIEpvaG4gTWFkZG9jayAyMDA1LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9BTElHTkVEX1NUT1JBR0VfSFBQX0lOQ0xVREVECi0jICBkZWZpbmUgTkROQk9PU1RfVFRfQUxJR05FRF9TVE9SQUdFX0hQUF9JTkNMVURFRAotIyAgaW5jbHVkZSA8bmRuYm9vc3QvYWxpZ25lZF9zdG9yYWdlLmhwcD4KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9BTElHTkVEX1NUT1JBR0VfSFBQX0lOQ0xVREVECi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvYWxpZ25tZW50X29mLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvYWxpZ25tZW50X29mLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzdkMzVhYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2FsaWdubWVudF9vZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjggKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfQUxJR05NRU5UX09GX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9BTElHTk1FTlRfT0ZfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPGNzdGRkZWY+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pbnRyaW5zaWNzLmhwcD4KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9zaXplX3RfdHJhaXRfZGVmLmhwcD4KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgICBwcmFnbWEgd2FybmluZyhwdXNoKQotIyAgIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMjEgNDUxMikgLy8gYWxpZ25tZW50IGlzIHNlbnNpdGl2ZSB0byBwYWNraW5nCi0jZW5kaWYKLSNpZiBkZWZpbmVkKF9fQk9STEFORENfXykgJiYgKF9fQk9STEFORENfXyA8IDB4NjAwKQotI3ByYWdtYSBvcHRpb24gcHVzaCAtVngtIC1WZS0KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IGFsaWdubWVudF9vZjsKLQotLy8gZ2V0IHRoZSBhbGlnbm1lbnQgb2Ygc29tZSBhcmJpdHJhcnkgdHlwZToKLW5hbWVzcGFjZSBkZXRhaWwgewotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MzI0KSAvLyBzdHJ1Y3R1cmUgd2FzIHBhZGRlZCBkdWUgdG8gX19kZWNsc3BlYyhhbGlnbigpKQotI2VuZGlmCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBhbGlnbm1lbnRfb2ZfaGFjawotewotICAgIGNoYXIgYzsKLSAgICBUIHQ7Ci0gICAgYWxpZ25tZW50X29mX2hhY2soKTsKLX07Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi10ZW1wbGF0ZSA8dW5zaWduZWQgQSwgdW5zaWduZWQgUz4KLXN0cnVjdCBhbGlnbm1lbnRfbG9naWMKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gQSA8IFMgPyBBIDogUyk7Ci19OwotCi0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBhbGlnbm1lbnRfb2ZfaW1wbAotewotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgKE5ETkJPT1NUX01TVkMgPj0gMTQwMCkKLSAgICAvLwotICAgIC8vIFdpdGggTVNWQyBib3RoIHRoZSBuYXRpdmUgX19hbGlnbm9mIG9wZXJhdG9yCi0gICAgLy8gYW5kIG91ciBvd24gbG9naWMgZ2V0cyB0aGluZ3Mgd3JvbmcgZnJvbSB0aW1lIHRvIHRpbWUgOi0oCi0gICAgLy8gVXNpbmcgYSBjb21iaW5hdGlvbiBvZiB0aGUgdHdvIHNlZW1zIHRvIG1ha2UgdGhlIG1vc3Qgb2YgYSBiYWQgam9iOgotICAgIC8vCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9Ci0gICAgICAgICg6Om5kbmJvb3N0OjpkZXRhaWw6OmFsaWdubWVudF9sb2dpYzwKLSAgICAgICAgICAgIHNpemVvZig6Om5kbmJvb3N0OjpkZXRhaWw6OmFsaWdubWVudF9vZl9oYWNrPFQ+KSAtIHNpemVvZihUKSwKLSAgICAgICAgICAgIF9fYWxpZ25vZihUKQotICAgICAgICA+Ojp2YWx1ZSkpOwotI2VsaWYgIWRlZmluZWQoTkROQk9PU1RfQUxJR05NRU5UX09GKQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPQotICAgICAgICAoOjpuZG5ib29zdDo6ZGV0YWlsOjphbGlnbm1lbnRfbG9naWM8Ci0gICAgICAgICAgICBzaXplb2YoOjpuZG5ib29zdDo6ZGV0YWlsOjphbGlnbm1lbnRfb2ZfaGFjazxUPikgLSBzaXplb2YoVCksCi0gICAgICAgICAgICBzaXplb2YoVCkKLSAgICAgICAgPjo6dmFsdWUpKTsKLSNlbHNlCi0gICAvLwotICAgLy8gV2UgcHV0IHRoaXMgaGVyZSwgcmF0aGVyIHRoYW4gaW4gdGhlIGRlZmluaXRpb24gb2YKLSAgIC8vIGFsaWdubWVudF9vZiBiZWxvdywgYmVjYXVzZSBNU1ZDJ3MgX19hbGlnbm9mIGRvZXNuJ3QKLSAgIC8vIGFsd2F5cyB3b3JrIGluIHRoYXQgY29udGV4dCBmb3Igc29tZSB1bmV4cGxhaW5lZCByZWFzb24uCi0gICAvLyAoU2VlIHR5cGVfd2l0aF9hbGlnbm1lbnQgdGVzdHMgZm9yIHRlc3QgY2FzZXMpLgotICAgLy8KLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSBORE5CT09TVF9BTElHTk1FTlRfT0YoVCkpOwotI2VuZGlmCi19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX1NJWkVfVF9UUkFJVF9ERUYxKGFsaWdubWVudF9vZixULDo6bmRuYm9vc3Q6OmRldGFpbDo6YWxpZ25tZW50X29mX2ltcGw8VD46OnZhbHVlKQotCi0vLyByZWZlcmVuY2VzIGhhdmUgdG8gYmUgdHJlYXRlZCBzcGVjaWFsbHksIGFzc3VtZQotLy8gdGhhdCBhIHJlZmVyZW5jZSBpcyBqdXN0IGEgc3BlY2lhbCBwb2ludGVyOgotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBhbGlnbm1lbnRfb2Y8VCY+Ci0gICAgOiBwdWJsaWMgYWxpZ25tZW50X29mPFQqPgotewotfTsKLSNlbmRpZgotI2lmZGVmIF9fQk9STEFORENfXwotLy8gbG9uZyBkb3VibGUgZ2l2ZXMgYW4gaW5jb3JyZWN0IHZhbHVlIG9mIDEwICghKQotLy8gdW5sZXNzIHdlIGRvIHRoaXMuLi4KLXN0cnVjdCBsb25nX2RvdWJsZV93cmFwcGVyeyBsb25nIGRvdWJsZSBsZDsgfTsKLXRlbXBsYXRlPD4gc3RydWN0IGFsaWdubWVudF9vZjxsb25nIGRvdWJsZT4KLSAgIDogcHVibGljIGFsaWdubWVudF9vZjxsb25nX2RvdWJsZV93cmFwcGVyPnt9OwotI2VuZGlmCi0KLS8vIHZvaWQgaGFzIHRvIGJlIHRyZWF0ZWQgc3BlY2lhbGx5OgotTkROQk9PU1RfVFRfQVVYX1NJWkVfVF9UUkFJVF9TUEVDMShhbGlnbm1lbnRfb2Ysdm9pZCwwKQotI2lmbmRlZiBORE5CT09TVF9OT19DVl9WT0lEX1NQRUNJQUxJWkFUSU9OUwotTkROQk9PU1RfVFRfQVVYX1NJWkVfVF9UUkFJVF9TUEVDMShhbGlnbm1lbnRfb2Ysdm9pZCBjb25zdCwwKQotTkROQk9PU1RfVFRfQVVYX1NJWkVfVF9UUkFJVF9TUEVDMShhbGlnbm1lbnRfb2Ysdm9pZCB2b2xhdGlsZSwwKQotTkROQk9PU1RfVFRfQVVYX1NJWkVfVF9UUkFJVF9TUEVDMShhbGlnbm1lbnRfb2Ysdm9pZCBjb25zdCB2b2xhdGlsZSwwKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZiBkZWZpbmVkKF9fQk9STEFORENfXykgJiYgKF9fQk9STEFORENfXyA8IDB4NjAwKQotI3ByYWdtYSBvcHRpb24gcG9wCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jICAgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvc2l6ZV90X3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0FMSUdOTUVOVF9PRl9IUFBfSU5DTFVERUQKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hcml0aG1ldGljX3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2FyaXRobWV0aWNfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGM4ZTE5Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2FyaXRobWV0aWNfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotLy8KLS8vICBkZWZpbmVzIHRyYWl0cyBjbGFzc2VzIGZvciBhcml0aG1ldGljIHR5cGVzOgotLy8gIGlzX3ZvaWQsIGlzX2ludGVncmFsLCBpc19mbG9hdCwgaXNfYXJpdGhtZXRpYywgaXNfZnVuZGFtZW50YWwuCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfQVJJVEhNRVRJQ19UUkFJVFNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FSSVRITUVUSUNfVFJBSVRTX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJpdGhtZXRpYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZmxvYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Z1bmRhbWVudGFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19pbnRlZ3JhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9pZC5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9BUklUSE1FVElDX1RSQUlUU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvYnJva2VuX2NvbXBpbGVyX3NwZWMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9icm9rZW5fY29tcGlsZXJfc3BlYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwYTVlZTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9icm9rZW5fY29tcGlsZXJfc3BlYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTcgKzAsMCBAQAotCi0vLyAgQ29weXJpZ2h0IDIwMDEtMjAwMyBBbGVrc2V5IEd1cnRvdm95LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9CUk9LRU5fQ09NUElMRVJfU1BFQ19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfQlJPS0VOX0NPTVBJTEVSX1NQRUNfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotLy8gdGhlc2UgYXJlIG5lZWRlZCByZWdhcmRsZXNzIG9mIE5ETkJPT1NUX1RUX05PX0JST0tFTl9DT01QSUxFUl9TUEVDIAotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBkZXRhaWwgewotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcmVtb3ZlX2NvbnN0X2ltcGwgICAgIHsgdHlwZWRlZiBUIHR5cGU7IH07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCByZW1vdmVfdm9sYXRpbGVfaW1wbCAgeyB0eXBlZGVmIFQgdHlwZTsgfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHJlbW92ZV9wb2ludGVyX2ltcGwgICB7IHR5cGVkZWYgVCB0eXBlOyB9OwotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcmVtb3ZlX3JlZmVyZW5jZV9pbXBsIHsgdHlwZWRlZiBUIHR5cGU7IH07Ci10eXBlZGVmIGludCBpbnZva2VfTkROQk9PU1RfVFRfQlJPS0VOX0NPTVBJTEVSX1NQRUNfb3V0c2lkZV9hbGxfbmFtZXNwYWNlczsKLX19Ci0jZW5kaWYKLQotLy8gYWd1cnQsIDI3L2p1bi8wMzogZGlzYWJsZSB0aGUgd29ya2Fyb3VuZCBpZiB1c2VyIGRlZmluZWQgCi0vLyBORE5CT09TVF9UVF9OT19CUk9LRU5fQ09NUElMRVJfU1BFQwotI2lmICAgICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pIFwKLSAgICB8fCBkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0JST0tFTl9DT01QSUxFUl9TUEVDKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RUX0JST0tFTl9DT01QSUxFUl9TUEVDKFQpIC8qKi8KLQotI2Vsc2UKLQotLy8gc2FtZSBhcyBORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9JTVBMX1NQRUMxIG1hY3JvLCBleGNlcHQgdGhhdCBpdAotLy8gbmV2ZXIgZ2V0cyAjdW5kZWYtaW5lZAotIyAgIGRlZmluZSBORE5CT09TVF9UVF9BVVhfQlJPS0VOX1RZUEVfVFJBSVRfU1BFQzEodHJhaXQsc3BlYyxyZXN1bHQpIFwKLXRlbXBsYXRlPD4gc3RydWN0IHRyYWl0IyNfaW1wbDxzcGVjPiBcCi17IFwKLSAgICB0eXBlZGVmIHJlc3VsdCB0eXBlOyBcCi19OyBcCi0vKiovCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfVFRfQVVYX1JFTU9WRV9DT05TVF9WT0xBVElMRV9SQU5LMV9TUEVDKFQpICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9UVF9BVVhfQlJPS0VOX1RZUEVfVFJBSVRfU1BFQzEocmVtb3ZlX2NvbnN0LFQgY29uc3QsVCkgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9UVF9BVVhfQlJPS0VOX1RZUEVfVFJBSVRfU1BFQzEocmVtb3ZlX2NvbnN0LFQgY29uc3Qgdm9sYXRpbGUsVCB2b2xhdGlsZSkgIFwKLSAgICBORE5CT09TVF9UVF9BVVhfQlJPS0VOX1RZUEVfVFJBSVRfU1BFQzEocmVtb3ZlX3ZvbGF0aWxlLFQgdm9sYXRpbGUsVCkgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9UVF9BVVhfQlJPS0VOX1RZUEVfVFJBSVRfU1BFQzEocmVtb3ZlX3ZvbGF0aWxlLFQgY29uc3Qgdm9sYXRpbGUsVCBjb25zdCkgIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfVFRfQVVYX1JFTU9WRV9QVFJfUkVGX1JBTktfMV9TUEVDKFQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9UVF9BVVhfQlJPS0VOX1RZUEVfVFJBSVRfU1BFQzEocmVtb3ZlX3BvaW50ZXIsVCosVCkgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9UVF9BVVhfQlJPS0VOX1RZUEVfVFJBSVRfU1BFQzEocmVtb3ZlX3BvaW50ZXIsVCpjb25zdCxUKSAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9UVF9BVVhfQlJPS0VOX1RZUEVfVFJBSVRfU1BFQzEocmVtb3ZlX3BvaW50ZXIsVCp2b2xhdGlsZSxUKSAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9UVF9BVVhfQlJPS0VOX1RZUEVfVFJBSVRfU1BFQzEocmVtb3ZlX3BvaW50ZXIsVCpjb25zdCB2b2xhdGlsZSxUKSAgICAgICAgIFwKLSAgICBORE5CT09TVF9UVF9BVVhfQlJPS0VOX1RZUEVfVFJBSVRfU1BFQzEocmVtb3ZlX3JlZmVyZW5jZSxUJixUKSAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfVFRfQVVYX1JFTU9WRV9QVFJfUkVGX1JBTktfMl9TUEVDKFQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9UVF9BVVhfUkVNT1ZFX1BUUl9SRUZfUkFOS18xX1NQRUMoVCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9UVF9BVVhfUkVNT1ZFX1BUUl9SRUZfUkFOS18xX1NQRUMoVCBjb25zdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9UVF9BVVhfUkVNT1ZFX1BUUl9SRUZfUkFOS18xX1NQRUMoVCB2b2xhdGlsZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9UVF9BVVhfUkVNT1ZFX1BUUl9SRUZfUkFOS18xX1NQRUMoVCBjb25zdCB2b2xhdGlsZSkgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfVFRfQVVYX1JFTU9WRV9BTExfUkFOS18xX1NQRUMoVCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9UVF9BVVhfUkVNT1ZFX1BUUl9SRUZfUkFOS18yX1NQRUMoVCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9UVF9BVVhfUkVNT1ZFX0NPTlNUX1ZPTEFUSUxFX1JBTksxX1NQRUMoVCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfVFRfQVVYX1JFTU9WRV9BTExfUkFOS18yX1NQRUMoVCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9UVF9BVVhfUkVNT1ZFX0FMTF9SQU5LXzFfU1BFQyhUKikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9UVF9BVVhfUkVNT1ZFX0FMTF9SQU5LXzFfU1BFQyhUIGNvbnN0KikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9UVF9BVVhfUkVNT1ZFX0FMTF9SQU5LXzFfU1BFQyhUIHZvbGF0aWxlKikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9UVF9BVVhfUkVNT1ZFX0FMTF9SQU5LXzFfU1BFQyhUIGNvbnN0IHZvbGF0aWxlKikgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfVFRfQlJPS0VOX0NPTVBJTEVSX1NQRUMoVCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBuYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgZGV0YWlsIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0eXBlZGVmIGludm9rZV9ORE5CT09TVF9UVF9CUk9LRU5fQ09NUElMRVJfU1BFQ19vdXRzaWRlX2FsbF9uYW1lc3BhY2VzICAgICAgICAgICAgIFwKLSAgICAgIHBsZWFzZV9pbnZva2VfTkROQk9PU1RfVFRfQlJPS0VOX0NPTVBJTEVSX1NQRUNfb3V0c2lkZV9hbGxfbmFtZXNwYWNlczsgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9UVF9BVVhfUkVNT1ZFX0FMTF9SQU5LXzFfU1BFQyhUKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9UVF9BVVhfUkVNT1ZFX0FMTF9SQU5LXzJfU1BFQyhUKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9UVF9BVVhfUkVNT1ZFX0FMTF9SQU5LXzJfU1BFQyhUKikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9UVF9BVVhfUkVNT1ZFX0FMTF9SQU5LXzJfU1BFQyhUIGNvbnN0KikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9UVF9BVVhfUkVNT1ZFX0FMTF9SQU5LXzJfU1BFQyhUIHZvbGF0aWxlKikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9UVF9BVVhfUkVNT1ZFX0FMTF9SQU5LXzJfU1BFQyhUIGNvbnN0IHZvbGF0aWxlKikgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAvKiovCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLU5ETkJPT1NUX1RUX0JST0tFTl9DT01QSUxFUl9TUEVDKGJvb2wpCi1ORE5CT09TVF9UVF9CUk9LRU5fQ09NUElMRVJfU1BFQyhjaGFyKQotI2lmbmRlZiBORE5CT09TVF9OT19JTlRSSU5TSUNfV0NIQVJfVAotTkROQk9PU1RfVFRfQlJPS0VOX0NPTVBJTEVSX1NQRUMod2NoYXJfdCkKLSNlbmRpZgotTkROQk9PU1RfVFRfQlJPS0VOX0NPTVBJTEVSX1NQRUMoc2lnbmVkIGNoYXIpCi1ORE5CT09TVF9UVF9CUk9LRU5fQ09NUElMRVJfU1BFQyh1bnNpZ25lZCBjaGFyKQotTkROQk9PU1RfVFRfQlJPS0VOX0NPTVBJTEVSX1NQRUMoc2lnbmVkIHNob3J0KQotTkROQk9PU1RfVFRfQlJPS0VOX0NPTVBJTEVSX1NQRUModW5zaWduZWQgc2hvcnQpCi1ORE5CT09TVF9UVF9CUk9LRU5fQ09NUElMRVJfU1BFQyhzaWduZWQgaW50KQotTkROQk9PU1RfVFRfQlJPS0VOX0NPTVBJTEVSX1NQRUModW5zaWduZWQgaW50KQotTkROQk9PU1RfVFRfQlJPS0VOX0NPTVBJTEVSX1NQRUMoc2lnbmVkIGxvbmcpCi1ORE5CT09TVF9UVF9CUk9LRU5fQ09NUElMRVJfU1BFQyh1bnNpZ25lZCBsb25nKQotTkROQk9PU1RfVFRfQlJPS0VOX0NPTVBJTEVSX1NQRUMoZmxvYXQpCi1ORE5CT09TVF9UVF9CUk9LRU5fQ09NUElMRVJfU1BFQyhkb3VibGUpCi0vL05ETkJPT1NUX1RUX0JST0tFTl9DT01QSUxFUl9TUEVDKGxvbmcgZG91YmxlKQotCi0vLyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQotI2RlZmluZSBORE5CT09TVF9CUk9LRU5fQ09NUElMRVJfVFlQRV9UUkFJVFNfU1BFQ0lBTElaQVRJT04oVCkgXAotICAgIE5ETkJPT1NUX1RUX0JST0tFTl9DT01QSUxFUl9TUEVDKFQpIFwKLS8qKi8KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0JST0tFTl9DT01QSUxFUl9TUEVDX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9jb21tb25fdHlwZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbW1vbl90eXBlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzcyYzM0ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbW1vbl90eXBlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1NyArMCwwIEBACi0vLyAgY29tbW9uX3R5cGUuaHBwICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IDIwMDggSG93YXJkIEhpbm5hbnQKLS8vICBDb3B5cmlnaHQgMjAwOCBCZW1hbiBEYXdlcwotCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFX1RSQUlUU19DT01NT05fVFlQRV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfVFlQRV9UUkFJVFNfQ09NTU9OX1RZUEVfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0jaWYgZGVmaW5lZChfX1NVTlBST19DQykgJiYgIWRlZmluZWQoTkROQk9PU1RfQ09NTU9OX1RZUEVfRE9OVF9VU0VfVFlQRU9GKQotIyAgZGVmaW5lIE5ETkJPT1NUX0NPTU1PTl9UWVBFX0RPTlRfVVNFX1RZUEVPRgotI2VuZGlmCi0jaWYgZGVmaW5lZChfX0lCTUNQUF9fKSAmJiAhZGVmaW5lZChORE5CT09TVF9DT01NT05fVFlQRV9ET05UX1VTRV9UWVBFT0YpCi0jICBkZWZpbmUgTkROQk9PU1RfQ09NTU9OX1RZUEVfRE9OVF9VU0VfVFlQRU9GCi0jZW5kaWYKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUykgJiYgIWRlZmluZWQoTkROQk9PU1RfQ09NTU9OX1RZUEVfQVJJVFkpCi0jZGVmaW5lIE5ETkJPT1NUX0NPTU1PTl9UWVBFX0FSSVRZIDMKLSNlbmRpZgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEUpICYmICFkZWZpbmVkKE5ETkJPT1NUX0NPTU1PTl9UWVBFX0RPTlRfVVNFX1RZUEVPRikKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvdHlwZW9mLmhwcD4gICAvLyBib29zdCB3b25kZXJzIG5ldmVyIGNlYXNlIQotI2VuZGlmCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1NUQVRJQ19BU1NFUlQKLSNkZWZpbmUgTkROQk9PU1RfQ09NTU9OX1RZUEVfU1RBVElDX0FTU0VSVChDTkQsIE1TRywgVFlQRVMpIHN0YXRpY19hc3NlcnQoQ05ELE1TRykKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfQ09NTU9OX1RZUEVfVVNFU19NUExfQVNTRVJUKQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSNkZWZpbmUgTkROQk9PU1RfQ09NTU9OX1RZUEVfU1RBVElDX0FTU0VSVChDTkQsIE1TRywgVFlQRVMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX01QTF9BU1NFUlRfTVNHKG5kbmJvb3N0OjptcGw6OmJvb2xfPCAoQ05EKSA+Ojp0eXBlOjp2YWx1ZSwgTVNHLCBUWVBFUykKLSNlbHNlCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0jZGVmaW5lIE5ETkJPT1NUX0NPTU1PTl9UWVBFX1NUQVRJQ19BU1NFUlQoQ05ELCBNU0csIFRZUEVTKSBORE5CT09TVF9TVEFUSUNfQVNTRVJUKENORCkKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfU1RBVElDX0FTU0VSVCkgfHwgIWRlZmluZWQoTkROQk9PU1RfQ09NTU9OX1RZUEVfVVNFU19NUExfQVNTRVJUKQotI2RlZmluZSBORE5CT09TVF9DT01NT05fVFlQRV9NVVNUX0JFX0FfQ09NUExFX1RZUEUgIm11c3QgYmUgY29tcGxldGUgdHlwZSIKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRSkgJiYgZGVmaW5lZChORE5CT09TVF9DT01NT05fVFlQRV9ET05UX1VTRV9UWVBFT0YpCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2NvbW1vbl90eXBlX2ltcC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcD4KLSNlbmRpZgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9kZWNsdmFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfcnZhbHVlX3JlZmVyZW5jZS5ocHA+Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICBDKyswMyBpbXBsZW1lbnRhdGlvbiBvZiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vICAgICAgICAgICAgIDIwLjkuNy42IE90aGVyIHRyYW5zZm9ybWF0aW9ucyBbbWV0YS50cmFucy5vdGhlcl0gICAgICAgICAgICAgIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdHRlbiBieSBIb3dhcmQgSGlubmFudCAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8gICAgICBBZGFwdGVkIGZvciBCb29zdCBieSBCZW1hbiBEYXdlcywgVmljZW50ZSBCb3RldCBhbmQgIEplZmZyZXkgSGVsbHJ1bmcgLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0vLyBwcm90b3R5cGUKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMpCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gVD4KLSAgICBzdHJ1Y3QgY29tbW9uX3R5cGU7Ci0jZWxzZSAvLyBvciBubyBzcGVjaWFsaXphdGlvbgotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVID0gdm9pZCwgY2xhc3MgViA9IHZvaWQ+Ci0gICAgc3RydWN0IGNvbW1vbl90eXBlCi0gICAgewotICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBjb21tb25fdHlwZTx0eXBlbmFtZSBjb21tb25fdHlwZTxULCBVPjo6dHlwZSwgVj46OnR5cGUgdHlwZTsKLSAgICB9OwotI2VuZGlmCi0KLQotLy8gMSBhcmcKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUykKLSAgICBzdHJ1Y3QgY29tbW9uX3R5cGU8VD4KLSNlbHNlCi0gICAgc3RydWN0IGNvbW1vbl90eXBlPFQsIHZvaWQsIHZvaWQ+Ci0KLSNlbmRpZgotICAgIHsKLSAgICAgICAgTkROQk9PU1RfQ09NTU9OX1RZUEVfU1RBVElDX0FTU0VSVChzaXplb2YoVCkgPiAwLCBORE5CT09TVF9DT01NT05fVFlQRV9NVVNUX0JFX0FfQ09NUExFX1RZUEUsIChUKSk7Ci0gICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICB9OwotCi0vLyAyIGFyZ3MKLW5hbWVzcGFjZSB0eXBlX3RyYWl0c19kZXRhaWwgewotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFU+Ci0gICAgc3RydWN0IGNvbW1vbl90eXBlXzIKLSAgICB7Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgTkROQk9PU1RfQ09NTU9OX1RZUEVfU1RBVElDX0FTU0VSVChzaXplb2YoVCkgPiAwLCBORE5CT09TVF9DT01NT05fVFlQRV9NVVNUX0JFX0FfQ09NUExFX1RZUEUsIChUKSk7Ci0gICAgICAgIE5ETkJPT1NUX0NPTU1PTl9UWVBFX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKFUpID4gMCwgTkROQk9PU1RfQ09NTU9OX1RZUEVfTVVTVF9CRV9BX0NPTVBMRV9UWVBFLCAoVSkpOwotICAgICAgICBzdGF0aWMgYm9vbCBkZWNsdmFsX2Jvb2woKTsgIC8vIHdvcmthcm91bmQgZ2NjIGJ1Zzsgbm90IHJlcXVpcmVkIGJ5IHN0ZAotICAgICAgICBzdGF0aWMgdHlwZW5hbWUgYWRkX3J2YWx1ZV9yZWZlcmVuY2U8VD46OnR5cGUgZGVjbHZhbF9UKCk7ICAvLyB3b3JrYXJvdW5kIGdjYyBidWc7IG5vdCByZXF1aXJlZCBieSBzdGQKLSAgICAgICAgc3RhdGljIHR5cGVuYW1lIGFkZF9ydmFsdWVfcmVmZXJlbmNlPFU+Ojp0eXBlIGRlY2x2YWxfVSgpOyAgLy8gd29ya2Fyb3VuZCBnY2MgYnVnOyBub3QgcmVxdWlyZWQgYnkgc3RkCi0gICAgICAgIHN0YXRpYyB0eXBlbmFtZSBhZGRfcnZhbHVlX3JlZmVyZW5jZTxib29sPjo6dHlwZSBkZWNsdmFsX2IoKTsgIAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEUpCi0gICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIGRlY2x0eXBlKGRlY2x2YWw8Ym9vbD4oKSA/IGRlY2x2YWw8VD4oKSA6IGRlY2x2YWw8VT4oKSkgdHlwZTsKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfQ09NTU9OX1RZUEVfRE9OVF9VU0VfVFlQRU9GKQotICAgIHB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbF90eXBlX3RyYWl0c19jb21tb25fdHlwZTo6Y29tbW9uX3R5cGVfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSByZW1vdmVfY3Y8VD46OnR5cGUsCi0gICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX2N2PFU+Ojp0eXBlCi0gICAgICA+Ojp0eXBlIHR5cGU7Ci0jZWxzZQotICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9UWVBFT0ZfVFBMKGRlY2x2YWxfYigpID8gZGVjbHZhbF9UKCkgOiBkZWNsdmFsX1UoKSkgdHlwZTsKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gMyAmJiAoX19HTlVDX01JTk9SX18gPT0gMiB8fCBfX0dOVUNfTUlOT1JfXyA9PSAzKQotICAgIHB1YmxpYzoKLSAgICAgICAgdm9pZCBwdWJsaWNfZHVtbXlfZnVuY3Rpb25fanVzdF90b19zaWxlbmNlX3dhcm5pbmcoKTsKLSNlbmRpZgotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICBzdHJ1Y3QgY29tbW9uX3R5cGVfMjxULCBUPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgfTsKLSAgICB9Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMpCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFU+Ci0gICAgc3RydWN0IGNvbW1vbl90eXBlPFQsIFU+Ci0jZWxzZQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPgotICAgIHN0cnVjdCBjb21tb25fdHlwZTxULCBVLCB2b2lkPgotI2VuZGlmCi0gICAgOiBwdWJsaWMgdHlwZV90cmFpdHNfZGV0YWlsOjpjb21tb25fdHlwZV8yPFQsVT4KLSAgICB7IH07Ci0KLQotLy8gMyBvciBtb3JlIGFyZ3MKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMpCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUuLi4gVj4KLSAgICBzdHJ1Y3QgY29tbW9uX3R5cGU8VCwgVSwgVi4uLj4gewotICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBjb21tb25fdHlwZTx0eXBlbmFtZSBjb21tb25fdHlwZTxULCBVPjo6dHlwZSwgVi4uLj46OnR5cGUgdHlwZTsKLSAgICB9OwotI2VuZGlmCi19ICAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyBORE5CT09TVF9UWVBFX1RSQUlUU19DT01NT05fVFlQRV9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvY29tcG9zaXRlX3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbXBvc2l0ZV90cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzViNWU4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvY29tcG9zaXRlX3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBEYXZlIEFicmFoYW1zLCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQKLS8vICBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuICAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0vLwotLy8gIGRlZmluZXMgdHJhaXRzIGNsYXNzZXMgZm9yIGNvbXBvc2l0ZSB0eXBlczoKLS8vICBpc19hcnJheSwgaXNfcG9pbnRlciwgaXNfcmVmZXJlbmNlLCBpc19tZW1iZXJfcG9pbnRlciwgaXNfZW51bSwgaXNfdW5pb24uCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0NPTVBPU0lURV9UUkFJVFNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0NPTVBPU0lURV9UUkFJVFNfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZW51bS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbWVtYmVyX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2ludGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3VuaW9uLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0NPTVBPU0lURV9UUkFJVFNfSFBQX0lOQ0xVREVECi0KLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9jb25kaXRpb25hbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbmRpdGlvbmFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTFhOWNlMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbmRpdGlvbmFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMTAuICAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLQotI2lmbmRlZiBORE5CT09TVF9UVF9DT05ESVRJT05BTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfQ09ORElUSU9OQUxfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi10ZW1wbGF0ZSA8Ym9vbCBiLCBjbGFzcyBULCBjbGFzcyBVPgotc3RydWN0IGNvbmRpdGlvbmFsIDogcHVibGljIG1wbDo6aWZfYzxiLCBULCBVPgotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfQ09ORElUSU9OQUxfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbmZpZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbmZpZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlZmZlZWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9DT05GSUdfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0NPTkZJR19IUFBfSU5DTFVERUQKLQotI2lmbmRlZiBORE5CT09TVF9DT05GSUdfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0vLwotLy8gd2hlbmV2ZXIgd2UgaGF2ZSBhIGNvbnZlcnNpb24gZnVuY3Rpb24gd2l0aCBlbGxpcHNlcwotLy8gaXQgbmVlZHMgdG8gYmUgZGVjbGFyZWQgX19jZGVjbCB0byBzdXBwcmVzcyBjb21waWxlcgotLy8gd2FybmluZ3MgZnJvbSBNUyBhbmQgQm9ybGFuZCBjb21waWxlcnMgKHRoaXMgKm11c3QqCi0vLyBhcHBlYXIgYmVmb3JlIHdlIGluY2x1ZGUgaXNfc2FtZS5ocHAgYmVsb3cpOgotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgfHwgKGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiAhZGVmaW5lZChORE5CT09TVF9ESVNBQkxFX1dJTjMyKSkKLSMgICBkZWZpbmUgTkROQk9PU1RfVFRfREVDTCBfX2NkZWNsCi0jZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9UVF9ERUNMIC8qKi8KLSNlbmRpZgotCi0jIGlmIChORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIDwgMHgzMDAwKSAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfHwgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAxKSAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB8fCAhZGVmaW5lZChfX0VER19WRVJTSU9OX18pICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sIDwgMykgXAotICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19JQk1DUFBfXywgPCA2MDAgKSAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg1QTApICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB8fCBkZWZpbmVkKF9fZ2hzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19IUF9hQ0MsIDwgNjA3MDApICAgICAgICAgICBcCi0gICAgfHwgTkROQk9PU1RfV09SS0FST1VORChNUFdfQ1BMVVMsIE5ETkJPT1NUX1RFU1RFRF9BVCgweDg5MCkpICAgICAgICAgIFwKLSAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fU1VOUFJPX0NDLCBORE5CT09TVF9URVNURURfQVQoMHg1ODApKSkgICAgICAgXAotICAgICYmIGRlZmluZWQoTkROQk9PU1RfTk9fSVNfQUJTVFJBQ1QpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfVFRfTk9fQ09ORk9STUlOR19JU19DTEFTU19JTVBMRU1FTlRBVElPTiAxCi0KLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0NPTkZPUk1JTkdfSVNfQ0xBU1NfSU1QTEVNRU5UQVRJT04KLSMgZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19DT05GT1JNSU5HX0lTX0NMQVNTX0lNUExFTUVOVEFUSU9OIDEKLSNlbmRpZgotCi0vLwotLy8gRGVmaW5lIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORyAKLS8vIHdoZW4gd2UgY2FuJ3QgdGVzdCBmb3IgZnVuY3Rpb24gdHlwZXMgd2l0aCBlbGlwc2lzOgotLy8KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA8IDMpCi0jICBkZWZpbmUgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi0jZW5kaWYKLQotLy8KLS8vIGRlZmluZSBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotLy8gd2hlbiB3ZSB3YW50IHRvIHRlc3QgX19zdGRjYWxsIGV0YyBmdW5jdGlvbiB0eXBlcyB3aXRoIGlzX2Z1bmN0aW9uIGV0YwotLy8gKE5vdGUsIGRvZXMgbm90IHdvcmsgd2l0aCBCb3JsYW5kLCBldmVuIHRob3VnaCBpdCBkb2VzIHN1cHBvcnQgX19zdGRjYWxsIGV0Yyk6Ci0vLwotI2lmIGRlZmluZWQoX01TQ19FWFRFTlNJT05TKSAmJiAhZGVmaW5lZChfX0JPUkxBTkRDX18pCi0jICBkZWZpbmUgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLSNlbmRpZgotCi0vLwotLy8gZGVmaW5lIE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVAotLy8gaWYgdGVzdHMgZm9yIGN2LXF1YWxpZmllZCBtZW1iZXIgZnVuY3Rpb25zIGRvbid0IAotLy8gd29yayBpbiBpc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcgotLy8KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIDwgMHgzMDAwKSB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fSUJNQ1BQX18sIDw9IDYwMCkKLSMgIGRlZmluZSBORE5CT09TVF9UVF9OT19DVl9GVU5DX1RFU1QKLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfQ09ORklHX0hQUF9JTkNMVURFRAotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvY29udmVyc2lvbl90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9jb252ZXJzaW9uX3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzYmIxNjUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9jb252ZXJzaW9uX3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0KLS8vIENvcHlyaWdodCAyMDAwIEpvaG4gTWFkZG9jayAoam9obkBqb2hubWFkZG9jay5jby51aykKLS8vIENvcHlyaWdodCAyMDAwIEplcmVteSBTaWVrIChqc2lla0Bsc2MubmQuZWR1KQotLy8gQ29weXJpZ2h0IDE5OTksIDIwMDAgSmFha2tvIEphcnZpIChqYWFra28uamFydmlAY3MudXR1LmZpKQotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfQ09OVkVSU0lPTl9UUkFJVFNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0NPTlZFUlNJT05fVFJBSVRTX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29udmVydGlibGUuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfQ09OVkVSU0lPTl9UUkFJVFNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2N2X3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2N2X3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmYmExNDkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9jdl90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgRGF2ZSBBYnJhaGFtcywgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkCi0vLyAgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLiAgCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotLy8KLS8vICBkZWZpbmVzIHRyYWl0cyBjbGFzc2VzIGZvciBjdi1xdWFsaWZpZWQgdHlwZXM6Ci0vLyAgaXNfY29uc3QsIGlzX3ZvbGF0aWxlLCByZW1vdmVfY29uc3QsIHJlbW92ZV92b2xhdGlsZSwgcmVtb3ZlX2N2LgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0NWX1RSQUlUU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfQ1ZfVFJBSVRTX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX2NvbnN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfdm9sYXRpbGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9jdi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29uc3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvbGF0aWxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY29uc3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV92b2xhdGlsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0NWX1RSQUlUU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGVjYXkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZWNheS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlNzM2ZGMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZWNheS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgJiBUaG9yc3RlbiBPdHRvc2VuIDIwMDUuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfREVDQVlfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0RFQ0FZX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZnVuY3Rpb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9ib3VuZHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9wb2ludGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfcmVmZXJlbmNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZXZhbF9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lkZW50aXR5LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IAotewotCi0gICAgdGVtcGxhdGU8IGNsYXNzIFQgPgotICAgIHN0cnVjdCBkZWNheQotICAgIHsKLSAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZSBUeTsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBtcGw6OmV2YWxfaWY8IAotICAgICAgICAgICAgaXNfYXJyYXk8VHk+LAotICAgICAgICAgICAgbXBsOjppZGVudGl0eTxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJlbW92ZV9ib3VuZHM8VHk+Ojp0eXBlKj4sCi0gICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG1wbDo6ZXZhbF9pZjwgCi0gICAgICAgICAgICAgICAgaXNfZnVuY3Rpb248VHk+LAotICAgICAgICAgICAgICAgIGFkZF9wb2ludGVyPFR5PiwKLSAgICAgICAgICAgICAgICBtcGw6OmlkZW50aXR5PFR5PgotICAgICAgICAgICAgPgotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLSAgICAKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0RFQ0FZX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Njg4NDdlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5NiArMCwwIEBACi0KLS8vIE5PIElOQ0xVREUgR1VBUkRTLCBUSEUgSEVBREVSIElTIElOVEVOREVEIEZPUiBNVUxUSVBMRSBJTkNMVVNJT04KLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICRTb3VyY2UkCi0vLyAkRGF0ZTogMjAxMS0xMC0wOSAxNToyODozMyAtMDcwMCAoU3VuLCAwOSBPY3QgMjAxMSkgJAotLy8gJFJldmlzaW9uOiA3NDg2NSAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdGVtcGxhdGVfYXJpdHlfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaW50ZWdyYWxfY29uc3RhbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotLy8KLS8vIFVuZm9ydHVuYXRlbHkgc29tZSBsaWJyYXJpZXMgaGF2ZSBzdGFydGVkIHVzaW5nIHRoaXMgaGVhZGVyIHdpdGhvdXQKLS8vIGNsZWFuaW5nIHVwIGFmdGVyd2FyZHM6IHNvIHdlJ2QgYmV0dGVyIHVuZGVmIHRoZSBtYWNyb3MganVzdCBpbiBjYXNlIAotLy8gdGhleSd2ZSBiZWVuIGRlZmluZWQgYWxyZWFkeS4uLi4KLS8vCi0jaWZkZWYgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfVkFMVUVfREVDTAotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1ZBTFVFX0RFQ0wKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfQk9PTF9DX0JBU0UKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMgotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzIKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMgotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMQotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMgotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzJfMQotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzJfMgotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfUEFSVElBTF9TUEVDMl8xCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX1NVTlBST19DQykgJiYgKF9fU1VOUFJPX0NDIDwgMHg1NzApCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1ZBTFVFX0RFQ0woQykgXAotICAgIHR5cGVkZWYgOjpuZG5ib29zdDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCxDPiB0eXBlOyBcCi0gICAgZW51bSB7IHZhbHVlID0gdHlwZTo6dmFsdWUgfTsgXAotICAgIC8qKi8KLSMgICBkZWZpbmUgTkROQk9PU1RfVFRfQVVYX0JPT0xfQ19CQVNFKEMpCi0KLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgTkROQk9PU1RfTVNWQyA8IDEzMDAKLQotIyAgIGRlZmluZSBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9WQUxVRV9ERUNMKEMpIFwKLSAgICB0eXBlZGVmIDo6bmRuYm9vc3Q6OmludGVncmFsX2NvbnN0YW50PGJvb2wsQz4gYmFzZV87IFwKLSAgICB1c2luZyBiYXNlXzo6dmFsdWU7IFwKLSAgICAvKiovCi0KLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1ZBTFVFX0RFQ0wKLSMgICBkZWZpbmUgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfVkFMVUVfREVDTChDKSAvKiovCi0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9UVF9BVVhfQk9PTF9DX0JBU0UKLSMgICBkZWZpbmUgTkROQk9PU1RfVFRfQVVYX0JPT0xfQ19CQVNFKEMpIDogcHVibGljIDo6bmRuYm9vc3Q6OmludGVncmFsX2NvbnN0YW50PGJvb2wsQz4KLSNlbmRpZiAKLQotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEodHJhaXQsVCxDKSBcCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCB0cmFpdCBcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JPT0xfQ19CQVNFKEMpIFwKLXsgXAotcHVibGljOlwKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9WQUxVRV9ERUNMKEMpIFwKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEsdHJhaXQsKFQpKSBcCi19OyBcCi1cCi1ORE5CT09TVF9UVF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygxLHRyYWl0KSBcCi0vKiovCi0KLQotI2RlZmluZSBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYyKHRyYWl0LFQxLFQyLEMpIFwKLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIgPiBzdHJ1Y3QgdHJhaXQgXAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX0NfQkFTRShDKSBcCi17IFwKLXB1YmxpYzpcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfVkFMVUVfREVDTChDKSBcCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLHRyYWl0LChUMSxUMikpIFwKLX07IFwKLVwKLU5ETkJPT1NUX1RUX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDIsdHJhaXQpIFwKLS8qKi8KLQotI2RlZmluZSBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYzKHRyYWl0LFQxLFQyLFQzLEMpIFwKLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzID4gc3RydWN0IHRyYWl0IFwKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9DX0JBU0UoQykgXAoteyBcCi1wdWJsaWM6XAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1ZBTFVFX0RFQ0woQykgXAotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMyx0cmFpdCwoVDEsVDIsVDMpKSBcCi19OyBcCi1cCi1ORE5CT09TVF9UVF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygzLHRyYWl0KSBcCi0vKiovCi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEodHJhaXQsc3AsQykgXAotdGVtcGxhdGU8PiBzdHJ1Y3QgdHJhaXQ8IHNwID4gXAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX0NfQkFTRShDKSBcCi17IFwKLXB1YmxpYzpcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfVkFMVUVfREVDTChDKSBcCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKDEsdHJhaXQsKHNwKSkgXAotfTsgXAotLyoqLwotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMyKHRyYWl0LHNwMSxzcDIsQykgXAotdGVtcGxhdGU8PiBzdHJ1Y3QgdHJhaXQ8IHNwMSxzcDIgPiBcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JPT0xfQ19CQVNFKEMpIFwKLXsgXAotcHVibGljOlwKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9WQUxVRV9ERUNMKEMpIFwKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoMix0cmFpdCwoc3AxLHNwMikpIFwKLX07IFwKLS8qKi8KLQotI2RlZmluZSBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKHRyYWl0LHNwLEMpIFwKLXRlbXBsYXRlPD4gc3RydWN0IHRyYWl0IyNfaW1wbDwgc3AgPiBcCi17IFwKLXB1YmxpYzpcCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKEMpKTsgXAotfTsgXAotLyoqLwotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzIodHJhaXQsc3AxLHNwMixDKSBcCi10ZW1wbGF0ZTw+IHN0cnVjdCB0cmFpdCMjX2ltcGw8IHNwMSxzcDIgPiBcCi17IFwKLXB1YmxpYzpcCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKEMpKTsgXAotfTsgXAotLyoqLwotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMShwYXJhbSx0cmFpdCxzcCxDKSBcCi10ZW1wbGF0ZTwgcGFyYW0gPiBzdHJ1Y3QgdHJhaXQ8IHNwID4gXAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX0NfQkFTRShDKSBcCi17IFwKLXB1YmxpYzpcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfVkFMVUVfREVDTChDKSBcCi19OyBcCi0vKiovCi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHBhcmFtMSxwYXJhbTIsdHJhaXQsc3AsQykgXAotdGVtcGxhdGU8IHBhcmFtMSwgcGFyYW0yID4gc3RydWN0IHRyYWl0PCBzcCA+IFwKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9DX0JBU0UoQykgXAoteyBcCi1wdWJsaWM6XAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1ZBTFVFX0RFQ0woQykgXAotfTsgXAotLyoqLwotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzJfMShwYXJhbSx0cmFpdCxzcDEsc3AyLEMpIFwKLXRlbXBsYXRlPCBwYXJhbSA+IHN0cnVjdCB0cmFpdDwgc3AxLHNwMiA+IFwKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9DX0JBU0UoQykgXAoteyBcCi1wdWJsaWM6XAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1ZBTFVFX0RFQ0woQykgXAotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygyLHRyYWl0LChzcDEsc3AyKSkgXAotfTsgXAotLyoqLwotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzJfMihwYXJhbTEscGFyYW0yLHRyYWl0LHNwMSxzcDIsQykgXAotdGVtcGxhdGU8IHBhcmFtMSwgcGFyYW0yID4gc3RydWN0IHRyYWl0PCBzcDEsc3AyID4gXAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX0NfQkFTRShDKSBcCi17IFwKLXB1YmxpYzpcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfVkFMVUVfREVDTChDKSBcCi19OyBcCi0vKiovCi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9QQVJUSUFMX1NQRUMyXzEocGFyYW0sdHJhaXQsc3AxLHNwMixDKSBcCi10ZW1wbGF0ZTwgcGFyYW0gPiBzdHJ1Y3QgdHJhaXQjI19pbXBsPCBzcDEsc3AyID4gXAoteyBcCi1wdWJsaWM6XAotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IChDKSk7IFwKLX07IFwKLS8qKi8KLQotI2lmbmRlZiBORE5CT09TVF9OT19DVl9TUEVDSUFMSVpBVElPTlMKLSMgICBkZWZpbmUgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEodHJhaXQsc3AsdmFsdWUpIFwKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMSh0cmFpdCxzcCx2YWx1ZSkgXAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKHRyYWl0LHNwIGNvbnN0LHZhbHVlKSBcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEodHJhaXQsc3Agdm9sYXRpbGUsdmFsdWUpIFwKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMSh0cmFpdCxzcCBjb25zdCB2b2xhdGlsZSx2YWx1ZSkgXAotICAgIC8qKi8KLSNlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxKHRyYWl0LHNwLHZhbHVlKSBcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEodHJhaXQsc3AsdmFsdWUpIFwKLSAgICAvKiovCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0YmQyMjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0KLS8vIE5PIElOQ0xVREUgR1VBUkRTLCBUSEUgSEVBREVSIElTIElOVEVOREVEIEZPUiBNVUxUSVBMRSBJTkNMVVNJT04KLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICRTb3VyY2UkCi0vLyAkRGF0ZTogMjAxMS0xMC0wOSAxNToyODozMyAtMDcwMCAoU3VuLCAwOSBPY3QgMjAxMSkgJAotLy8gJFJldmlzaW9uOiA3NDg2NSAkCi0KLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9WQUxVRV9ERUNMCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX0JPT0xfQ19CQVNFCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMQotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjIKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYzCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMgotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMyCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8xCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8yCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMl8xCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMl8yCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9QQVJUSUFMX1NQRUMyXzEKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvY29tbW9uX3R5cGVfaW1wLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2NvbW1vbl90eXBlX2ltcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwZGVkZjkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvY29tbW9uX3R5cGVfaW1wLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzMyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2NvbW1vbl90eXBlX2ltcC5ocHAKLSAqCi0gKiBDb3B5cmlnaHQgMjAxMCwgSmVmZnJleSBIZWxscnVuZy4KLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gIChTZWUgYWNjb21wYW55aW5nCi0gKiBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKiBzdHJ1Y3QgbmRuYm9vc3Q6OmNvbW1vbl90eXBlPFQsVT4KLSAqCi0gKiBjb21tb25fdHlwZTxULFU+Ojp0eXBlIGlzIHRoZSB0eXBlIG9mIHRoZSBleHByZXNzaW9uCi0gKiAgICAgYigpID8geCgpIDogeSgpCi0gKiB3aGVyZSBiKCkgcmV0dXJucyBhIGJvb2wsIHgoKSBoYXMgcmV0dXJuIHR5cGUgVCwgYW5kIHkoKSBoYXMgcmV0dXJuIHR5cGUgVS4KLSAqIFNlZQotICogICAgIGh0dHA6Ly93d3cub3Blbi1zdGQub3JnL2p0YzEvc2MyMi93ZzIxL2RvY3MvcGFwZXJzLzIwMDgvbjI2NjEuaHRtI2NvbW1vbl90eXBlCi0gKgotICogTm90ZSB0aGF0IHRoaXMgZXZhbHVhdGVzIHRvIHZvaWQgaWYgb25lIG9yIGJvdGggb2YgVCBhbmQgVSBpcyB2b2lkLgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotI2lmbmRlZiBORE5CT09TVF9UWVBFX1RSQUlUU19ERVRBSUxfQ09NTU9OX1RZUEVfSU1QX0hQUAotI2RlZmluZSBORE5CT09TVF9UWVBFX1RSQUlUU19ERVRBSUxfQ09NTU9OX1RZUEVfSU1QX0hQUAotCi0jaW5jbHVkZSA8Y3N0ZGRlZj4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2JlZ2luX2VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2NvbnRhaW5zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvY29weS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2RlcmVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZXZhbF9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaW5zZXJ0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9uZXh0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9wbGFjZWhvbGRlcnMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9wdXNoX2JhY2suaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9zaXplLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMTAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ludGVncmFsX2NvbnN0YW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19lbnVtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19pbnRlZ3JhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvbWFrZV9zaWduZWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL21ha2VfdW5zaWduZWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3JlZmVyZW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9kZWNsdmFsLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWxfdHlwZV90cmFpdHNfY29tbW9uX3R5cGUKLXsKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIHN0cnVjdCBwcm9wYWdhdGVfY3Y8IEZyb20sIFRvID4KLSAqCi0gKiBUaGlzIG1ldGFmdW5jdGlvbiBwcm9wYWdhdGVzIGN2LXF1YWxpZmllcnMgb24gdHlwZSBGcm9tIHRvIHR5cGUgVG8uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi10ZW1wbGF0ZTwgY2xhc3MgRnJvbSwgY2xhc3MgVG8gPgotc3RydWN0IHByb3BhZ2F0ZV9jdgoteyB0eXBlZGVmIFRvIHR5cGU7IH07Ci10ZW1wbGF0ZTwgY2xhc3MgRnJvbSwgY2xhc3MgVG8gPgotc3RydWN0IHByb3BhZ2F0ZV9jdjwgY29uc3QgRnJvbSwgVG8gPgoteyB0eXBlZGVmIFRvIGNvbnN0IHR5cGU7IH07Ci10ZW1wbGF0ZTwgY2xhc3MgRnJvbSwgY2xhc3MgVG8gPgotc3RydWN0IHByb3BhZ2F0ZV9jdjwgdm9sYXRpbGUgRnJvbSwgVG8gPgoteyB0eXBlZGVmIFRvIHZvbGF0aWxlIHR5cGU7IH07Ci10ZW1wbGF0ZTwgY2xhc3MgRnJvbSwgY2xhc3MgVG8gPgotc3RydWN0IHByb3BhZ2F0ZV9jdjwgY29uc3Qgdm9sYXRpbGUgRnJvbSwgVG8gPgoteyB0eXBlZGVmIFRvIGNvbnN0IHZvbGF0aWxlIHR5cGU7IH07Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBzdHJ1Y3QgaXNfaW50ZWdyYWxfb3JfZW51bTxUPgotICoKLSAqIFRoaXMgbWV0YWZ1bmN0aW9uIGRldGVybWluZXMgaWYgVCBpcyBhbiBpbnRlZ3JhbCB0eXBlIHdoaWNoIGNhbiBiZSBtYWRlCi0gKiBzaWduZWQgb3IgdW5zaWduZWQuCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi10ZW1wbGF0ZTwgY2xhc3MgVCA+Ci1zdHJ1Y3QgaXNfaW50ZWdyYWxfb3JfZW51bQotICAgIDogcHVibGljIG1wbDo6b3JfPCBpc19pbnRlZ3JhbDxUPiwgaXNfZW51bTxUPiA+Ci17IH07Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfaW50ZWdyYWxfb3JfZW51bTwgYm9vbCA+Ci0gICAgOiBwdWJsaWMgZmFsc2VfdHlwZQoteyB9OwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogc3RydWN0IG1ha2VfdW5zaWduZWRfc29mdDxUPgotICogc3RydWN0IG1ha2Vfc2lnbmVkX3NvZnQ8VD4KLSAqCi0gKiBUaGVzZSBtZXRhZnVuY3Rpb24gYXJlIGlkZW50aWNhbCB0byBtYWtlX3Vuc2lnbmVkIGFuZCBtYWtlX3NpZ25lZCwKLSAqIHJlc3BlY3RpdmVseSwgZXhjZXB0IGZvciBzcGVjaWFsLWNhc2luZyBib29sLgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotdGVtcGxhdGU8IGNsYXNzIFQgPgotc3RydWN0IG1ha2VfdW5zaWduZWRfc29mdAotICAgIDogcHVibGljIG1ha2VfdW5zaWduZWQ8VD4KLXsgfTsKLXRlbXBsYXRlPD4KLXN0cnVjdCBtYWtlX3Vuc2lnbmVkX3NvZnQ8IGJvb2wgPgoteyB0eXBlZGVmIGJvb2wgdHlwZTsgfTsKLQotdGVtcGxhdGU8IGNsYXNzIFQgPgotc3RydWN0IG1ha2Vfc2lnbmVkX3NvZnQKLSAgICA6IHB1YmxpYyBtYWtlX3NpZ25lZDxUPgoteyB9OwotdGVtcGxhdGU8Pgotc3RydWN0IG1ha2Vfc2lnbmVkX3NvZnQ8IGJvb2wgPgoteyB0eXBlZGVmIGJvb2wgdHlwZTsgfTsKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIHN0cnVjdCBzaXplb2ZfdDxOPgotICogdHlwZWRlZiAuLi4geWVzX3R5cGUKLSAqIHR5cGVkZWYgLi4uIG5vX3R5cGUKLSAqCi0gKiBUaGVzZSB0eXBlcyBhcmUgaW50ZWdyYWwgcGxheWVycyBpbiB0aGUgdXNlIG9mIHRoZSAic2l6ZW9mIHRyaWNrIiwgaS5lLiwgd2UKLSAqIGNhbiBkaXN0aW5ndWlzaCBvdmVybG9hZCBzZWxlY3Rpb24gYnkgaW5zcGVjdGluZyB0aGUgc2l6ZSBvZiB0aGUgcmV0dXJuIHR5cGUKLSAqIG9mIHRoZSBvdmVybG9hZC4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXRlbXBsYXRlPCBzdGQ6OnNpemVfdCBOID4gc3RydWN0IHNpemVvZl90IHsgY2hhciBfZHVtbXlbTl07IH07Ci10eXBlZGVmIHNpemVvZl90PDE+IHllc190eXBlOwotdHlwZWRlZiBzaXplb2ZfdDwyPiBub190eXBlOwotTkROQk9PU1RfTVBMX0FTU0VSVF9SRUxBVElPTiggc2l6ZW9mKCB5ZXNfdHlwZSApLCA9PSwgMSApOwotTkROQk9PU1RfTVBMX0FTU0VSVF9SRUxBVElPTiggc2l6ZW9mKCBub190eXBlICksID09LCAyICk7Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBydmFsdWVfdGVzdChUJikgLT4gbm9fdHlwZQotICogcnZhbHVlX3Rlc3QoLi4uKSAtPiB5ZXNfdHlwZQotICoKLSAqIFRoZXNlIG92ZXJsb2FkcyBhcmUgdXNlZCB0byBkZXRlcm1pbmUgdGhlIHJ2YWx1ZS1uZXNzIG9mIGFuIGV4cHJlc3Npb24uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi10ZW1wbGF0ZTwgY2xhc3MgVCA+IG5vX3R5cGUgcnZhbHVlX3Rlc3QoVCYpOwoteWVzX3R5cGUgcnZhbHVlX3Rlc3QoLi4uKTsKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIHN0cnVjdCBjb252ZXJzaW9uX3Rlc3Rfb3ZlcmxvYWRzPCBTZXF1ZW5jZSA+Ci0gKgotICogVGhpcyBzdHJ1Y3QgaGFzIG11bHRpcGxlIG92ZXJsb2FkcyBvZiB0aGUgc3RhdGljIG1lbWJlciBmdW5jdGlvbiBhcHBseSwgZWFjaAotICogb25lIHRha2luZyBhIHNpbmdsZSBwYXJhbWV0ZXIgb2YgYSB0eXBlIHdpdGhpbiB0aGUgQm9vc3QuTVBMIHNlcXVlbmNlCi0gKiBTZXF1ZW5jZS4gIEVhY2ggc3VjaCBhcHBseSBvdmVybG9hZCBoYXMgYSByZXR1cm4gdHlwZSB3aXRoIHNpemVvZiBlcXVhbCB0bwotICogb25lIHBsdXMgdGhlIGluZGV4IG9mIHRoZSBwYXJhbWV0ZXIgdHlwZSB3aXRoaW4gU2VxdWVuY2UuICBUaHVzLCB3ZSBjYW4KLSAqIGRlZHVjZSB0aGUgdHlwZSBUIG9mIGFuIGV4cHJlc3Npb24gYXMgbG9uZyBhcyB3ZSBjYW4gZ2VuZXJhdGUgYSBmaW5pdGUgc2V0IG9mCi0gKiBjYW5kaWRhdGUgdHlwZXMgY29udGFpbmluZyBUIHZpYSB0aGVzZSBhcHBseSBvdmVybG9hZHMgYW5kIHRoZSAic2l6ZW9mCi0gKiB0cmljayIuCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi10ZW1wbGF0ZTwgY2xhc3MgRmlyc3QsIGNsYXNzIExhc3QsIHN0ZDo6c2l6ZV90IEluZGV4ID4KLXN0cnVjdCBjb252ZXJzaW9uX3Rlc3Rfb3ZlcmxvYWRzX2l0ZXJhdGUKLSAgICA6IHB1YmxpYyBjb252ZXJzaW9uX3Rlc3Rfb3ZlcmxvYWRzX2l0ZXJhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgbXBsOjpuZXh0PCBGaXJzdCA+Ojp0eXBlLCBMYXN0LCBJbmRleCArIDEKLSAgICAgID4KLXsKLSAgICB1c2luZyBjb252ZXJzaW9uX3Rlc3Rfb3ZlcmxvYWRzX2l0ZXJhdGU8Ci0gICAgICAgIHR5cGVuYW1lIG1wbDo6bmV4dDwgRmlyc3QgPjo6dHlwZSwgTGFzdCwgSW5kZXggKyAxCi0gICAgPjo6YXBwbHk7Ci0gICAgc3RhdGljIHNpemVvZl90PCBJbmRleCArIDEgPgotICAgIGFwcGx5KHR5cGVuYW1lIG1wbDo6ZGVyZWY8IEZpcnN0ID46OnR5cGUpOwotfTsKLQotdGVtcGxhdGU8IGNsYXNzIExhc3QsIHN0ZDo6c2l6ZV90IEluZGV4ID4KLXN0cnVjdCBjb252ZXJzaW9uX3Rlc3Rfb3ZlcmxvYWRzX2l0ZXJhdGU8IExhc3QsIExhc3QsIEluZGV4ID4KLXsgc3RhdGljIHNpemVvZl90PCBJbmRleCArIDEgPiBhcHBseSguLi4pOyB9OwotCi10ZW1wbGF0ZTwgY2xhc3MgU2VxdWVuY2UgPgotc3RydWN0IGNvbnZlcnNpb25fdGVzdF9vdmVybG9hZHMKLSAgICA6IHB1YmxpYyBjb252ZXJzaW9uX3Rlc3Rfb3ZlcmxvYWRzX2l0ZXJhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgbXBsOjpiZWdpbjwgU2VxdWVuY2UgPjo6dHlwZSwKLSAgICAgICAgICB0eXBlbmFtZSBtcGw6OmVuZDwgU2VxdWVuY2UgPjo6dHlwZSwKLSAgICAgICAgICAwCi0gICAgICA+Ci17IH07Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBzdHJ1Y3Qgc2VsZWN0PCBTZXF1ZW5jZSwgSW5kZXggPgotICoKLSAqIHNlbGVjdCBpcyBzeW5vbnltb3VzIHdpdGggbXBsOjphdF9jIHVubGVzcyBJbmRleCBlcXVhbHMgdGhlIHNpemUgb2YgdGhlCi0gKiBCb29zdC5NUEwgU2VxdWVuY2UsIGluIHdoaWNoIGNhc2UgdGhpcyBldmFsdWF0ZXMgdG8gdm9pZC4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXRlbXBsYXRlPAotICAgIGNsYXNzIFNlcXVlbmNlLCBpbnQgSW5kZXgsCi0gICAgaW50IE4gPSBtcGw6OnNpemU8IFNlcXVlbmNlID46OnZhbHVlCi0+Ci1zdHJ1Y3Qgc2VsZWN0Ci0gICAgOiBwdWJsaWMgbXBsOjphdF9jPCBTZXF1ZW5jZSwgSW5kZXggPgoteyB9OwotdGVtcGxhdGU8IGNsYXNzIFNlcXVlbmNlLCBpbnQgTiA+Ci1zdHJ1Y3Qgc2VsZWN0PCBTZXF1ZW5jZSwgTiwgTiA+Ci17IHR5cGVkZWYgdm9pZCB0eXBlOyB9OwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogY2xhc3MgZGVkdWNlX2NvbW1vbl90eXBlPCBULCBVLCBOb21pbmFsQ2FuZGlkYXRlcyA+Ci0gKiBzdHJ1Y3Qgbm9taW5hbF9jYW5kaWRhdGVzPFQsVT4KLSAqIHN0cnVjdCBjb21tb25fdHlwZV9kaXNwYXRjaF9vbl9ydmFsdWVuZXNzPFQsVT4KLSAqIHN0cnVjdCBjb21tb25fdHlwZV9pbXBsPFQsVT4KLSAqCi0gKiBUaGVzZSBjbGFzc2VzIGFuZCBzdHJ1Y3RzIGltcGxlbWVudCB0aGUgbG9naWMgYmVoaW5kIGNvbW1vbl90eXBlLCB3aGljaCBnb2VzCi0gKiByb3VnaGx5IGFzIGZvbGxvd3MuICBMZXQgQyBiZSB0aGUgdHlwZSBvZiB0aGUgY29uZGl0aW9uYWwgZXhwcmVzc2lvbgotICogICAgIGRlY2x2YWw8IGJvb2wgPigpID8gZGVjbHZhbDxUPigpIDogZGVjbHZhbDxVPigpCi0gKiBpZiBDIGlzIGFuIHJ2YWx1ZSwgdGhlbjoKLSAqICAgICBsZXQgVCcgYW5kIFUnIGJlIFQgYW5kIFUgc3RyaXBwZWQgb2YgcmVmZXJlbmNlLSBhbmQgY3YtcXVhbGlmaWVycwotICogICAgIGlmIFQnIGFuZCBVJyBhcmUgcG9pbnRlciB0eXBlcywgc2F5LCBUJyA9IFYqIGFuZCBVJyA9IFcqLCB0aGVuOgotICogICAgICAgICBkZWZpbmUgdGhlIHNldCBvZiBOb21pbmFsQ2FuZGlkYXRlcyB0byBiZQotICogICAgICAgICAgICAgeyBWKiwgVyosIFYnKiwgVycqIH0KLSAqICAgICAgICAgICB3aGVyZSBWJyBpcyBWIHdpdGggd2hhdGV2ZXIgY3YtcXVhbGlmaWVycyBhcmUgb24gVywgYW5kIFcnIGlzIFcKLSAqICAgICAgICAgICB3aXRoIHdoYXRldmVyIGN2LXF1YWxpZmllcnMgYXJlIG9uIFYKLSAqICAgICBlbHNlIGlmIFQnIGFuZCBVJyBhcmUgYm90aCBpbnRlZ3JhbCBvciBlbnVtIHR5cGVzLCB0aGVuOgotICogICAgICAgICBkZWZpbmUgdGhlIHNldCBvZiBOb21pbmFsQ2FuZGlkYXRlcyB0byBiZQotICogICAgICAgICAgICAgewotICogICAgICAgICAgICAgICAgIHVuc2lnbmVkX3NvZnQoVCcpLAotICogICAgICAgICAgICAgICAgIHVuc2lnbmVkX3NvZnQoVScpLAotICogICAgICAgICAgICAgICAgIHNpZ25lZF9zb2Z0KFQnKSwKLSAqICAgICAgICAgICAgICAgICBzaWduZWRfc29mdChVJyksCi0gKiAgICAgICAgICAgICAgICAgVCcsCi0gKiAgICAgICAgICAgICAgICAgVScsCi0gKiAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50LAotICogICAgICAgICAgICAgICAgIGludAotICogICAgICAgICAgICAgfQotICogICAgICAgICAgIHdoZXJlIHVuc2lnbmVkX3NvZnQoWCkgaXMgbWFrZV91bnNpZ25lZF9zb2Z0PFg+Ojp0eXBlIGFuZAotICogICAgICAgICAgIHNpZ25lZF9zb2Z0KFgpIGlzIG1ha2Vfc2lnbmVkX3NvZnQ8WD46OnR5cGUgKHRoZXNlIGFyZSBhbGwKLSAqICAgICAgICAgICBnZW5lcmFsbHkgbmVjZXNzYXJ5IHRvIGNvdmVyIHRoZSB2YXJpb3VzIGludGVncmFsIHByb21vdGlvbiBjYXNlcykKLSAqICAgICBlbHNlCi0gKiAgICAgICAgIGRlZmluZSB0aGUgc2V0IG9mIE5vbWluYWxDYW5kaWRhdGVzIHRvIGJlCi0gKiAgICAgICAgICAgICB7IFQnLCBVJyB9Ci0gKiBlbHNlCi0gKiAgICAgbGV0IFYgYW5kIFcgYmUgVCBhbmQgVSBzdHJpcHBlZCBvZiByZWZlcmVuY2UtcXVhbGlmaWVycwotICogICAgIGRlZmluZSB0aGUgc2V0IG9mIE5vbWluYWxDYW5kaWRhdGVzIHRvIGJlCi0gKiAgICAgICAgIHsgViYsIFcmLCBWJyYsIFcnJiB9Ci0gKiAgICAgd2hlcmUgVicgaXMgViB3aXRoIHdoYXRldmVyIGN2LXF1YWxpZmllcnMgYXJlIG9uIFcsIGFuZCBXJyBpcyBXIHdpdGgKLSAqICAgICAgIHdoYXRldmVyIGN2LXF1YWxpZmllcnMgYXJlIG9uIFYKLSAqIGRlZmluZSB0aGUgc2V0IG9mIENhbmRpZGF0ZXMgdG8gYmUgZXF1YWwgdG8gdGhlIHNldCBvZiBOb21pbmFsQ2FuZGlkYXRlcyB3aXRoCi0gKiBkdXBsaWNhdGVzIHJlbW92ZWQsIGFuZCB1c2UgdGhpcyBzZXQgb2YgQ2FuZGlkYXRlcyB0byBkZXRlcm1pbmUgQyB1c2luZyB0aGUKLSAqIGNvbnZlcnNpb25fdGVzdF9vdmVybG9hZHMgc3RydWN0Ci0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgTm9taW5hbENhbmRpZGF0ZXMgPgotY2xhc3MgZGVkdWNlX2NvbW1vbl90eXBlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmNvcHk8Ci0gICAgICAgIE5vbWluYWxDYW5kaWRhdGVzLAotICAgICAgICBtcGw6Omluc2VydGVyPAotICAgICAgICAgICAgbXBsOjp2ZWN0b3IwPD4sCi0gICAgICAgICAgICBtcGw6OmlmXzwKLSAgICAgICAgICAgICAgICBtcGw6OmNvbnRhaW5zPCBtcGw6Ol8xLCBtcGw6Ol8yID4sCi0gICAgICAgICAgICAgICAgbXBsOjpfMSwKLSAgICAgICAgICAgICAgICBtcGw6OnB1c2hfYmFjazwgbXBsOjpfMSwgbXBsOjpfMiA+Ci0gICAgICAgICAgICA+Ci0gICAgICAgID4KLSAgICA+Ojp0eXBlIGNhbmRpZGF0ZV90eXBlczsKLSAgICBzdGF0aWMgY29uc3QgaW50IGJlc3RfY2FuZGlkYXRlX2luZGV4ID0KLSAgICAgICAgc2l6ZW9mKCBjb252ZXJzaW9uX3Rlc3Rfb3ZlcmxvYWRzPCBjYW5kaWRhdGVfdHlwZXMgPjo6YXBwbHkoCi0gICAgICAgICAgICBkZWNsdmFsPCBib29sID4oKSA/IGRlY2x2YWw8VD4oKSA6IGRlY2x2YWw8VT4oKQotICAgICAgICApICkgLSAxOwotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2VsZWN0PCBjYW5kaWRhdGVfdHlwZXMsIGJlc3RfY2FuZGlkYXRlX2luZGV4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgIGNsYXNzIFQsIGNsYXNzIFUsCi0gICAgY2xhc3MgViA9IHR5cGVuYW1lIHJlbW92ZV9jdjwgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZSA+Ojp0eXBlLAotICAgIGNsYXNzIFcgPSB0eXBlbmFtZSByZW1vdmVfY3Y8IHR5cGVuYW1lIHJlbW92ZV9yZWZlcmVuY2U8VT46OnR5cGUgPjo6dHlwZSwKLSAgICBib29sID0gaXNfaW50ZWdyYWxfb3JfZW51bTxWPjo6dmFsdWUgJiYgaXNfaW50ZWdyYWxfb3JfZW51bTxXPjo6dmFsdWUKLT4KLXN0cnVjdCBub21pbmFsX2NhbmRpZGF0ZXMKLXsgdHlwZWRlZiBtcGw6OnZlY3RvcjI8VixXPiB0eXBlOyB9OwotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgViwgY2xhc3MgVyA+Ci1zdHJ1Y3Qgbm9taW5hbF9jYW5kaWRhdGVzPCBULCBVLCBWLCBXLCB0cnVlID4KLXsKLSAgICB0eXBlZGVmIG5kbmJvb3N0OjptcGw6OnZlY3Rvcjg8Ci0gICAgICAgIHR5cGVuYW1lIG1ha2VfdW5zaWduZWRfc29mdDxWPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgbWFrZV91bnNpZ25lZF9zb2Z0PFc+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSBtYWtlX3NpZ25lZF9zb2Z0PFY+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSBtYWtlX3NpZ25lZF9zb2Z0PFc+Ojp0eXBlLAotICAgICAgICBWLCBXLCB1bnNpZ25lZCBpbnQsIGludAotICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBWLCBjbGFzcyBXID4KLXN0cnVjdCBub21pbmFsX2NhbmRpZGF0ZXM8IFQsIFUsIFYqLCBXKiwgZmFsc2UgPgotewotICAgIHR5cGVkZWYgbXBsOjp2ZWN0b3I0PAotICAgICAgICBWKiwgVyosCi0gICAgICAgIHR5cGVuYW1lIHByb3BhZ2F0ZV9jdjxXLFY+Ojp0eXBlICosCi0gICAgICAgIHR5cGVuYW1lIHByb3BhZ2F0ZV9jdjxWLFc+Ojp0eXBlICoKLSAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBib29sIGI+Ci1zdHJ1Y3QgY29tbW9uX3R5cGVfZGlzcGF0Y2hfb25fcnZhbHVlbmVzcwotICAgIDogcHVibGljIGRlZHVjZV9jb21tb25fdHlwZTwgVCwgVSwgdHlwZW5hbWUgbm9taW5hbF9jYW5kaWRhdGVzPFQsVT46OnR5cGUgPgoteyB9OwotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgVSA+Ci1zdHJ1Y3QgY29tbW9uX3R5cGVfZGlzcGF0Y2hfb25fcnZhbHVlbmVzczwgVCwgVSwgZmFsc2UgPgotewotcHJpdmF0ZToKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlbW92ZV9yZWZlcmVuY2U8VD46OnR5cGUgdW5yZWZlZF9UX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfcmVmZXJlbmNlPFU+Ojp0eXBlIHVucmVmZWRfVV90eXBlOwotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGVkdWNlX2NvbW1vbl90eXBlPAotICAgICAgICBULCBVLAotICAgICAgICBtcGw6OnZlY3RvcjQ8Ci0gICAgICAgICAgICB1bnJlZmVkX1RfdHlwZSAmLAotICAgICAgICAgICAgdW5yZWZlZF9VX3R5cGUgJiwKLSAgICAgICAgICAgIHR5cGVuYW1lIHByb3BhZ2F0ZV9jdjwgdW5yZWZlZF9VX3R5cGUsIHVucmVmZWRfVF90eXBlID46OnR5cGUgJiwKLSAgICAgICAgICAgIHR5cGVuYW1lIHByb3BhZ2F0ZV9jdjwgdW5yZWZlZF9UX3R5cGUsIHVucmVmZWRfVV90eXBlID46OnR5cGUgJgotICAgICAgICA+Ci0gICAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIFUgPgotc3RydWN0IGNvbW1vbl90eXBlX2ltcGwKLSAgICA6IHB1YmxpYyBjb21tb25fdHlwZV9kaXNwYXRjaF9vbl9ydmFsdWVuZXNzPFQsVSwgc2l6ZW9mKCA6Om5kbmJvb3N0OjpkZXRhaWxfdHlwZV90cmFpdHNfY29tbW9uX3R5cGU6OnJ2YWx1ZV90ZXN0KAotICAgICAgICBkZWNsdmFsPCBib29sID4oKSA/IGRlY2x2YWw8VD4oKSA6IGRlY2x2YWw8VT4oKSApICkgPT0gc2l6ZW9mKCB5ZXNfdHlwZSApID4KLXsgfTsKLQotdGVtcGxhdGU8IGNsYXNzIFQgPiBzdHJ1Y3QgY29tbW9uX3R5cGVfaW1wbDwgVCwgdm9pZCA+IHsgdHlwZWRlZiB2b2lkIHR5cGU7IH07Ci10ZW1wbGF0ZTwgY2xhc3MgVCA+IHN0cnVjdCBjb21tb25fdHlwZV9pbXBsPCB2b2lkLCBUID4geyB0eXBlZGVmIHZvaWQgdHlwZTsgfTsKLXRlbXBsYXRlPD4gc3RydWN0IGNvbW1vbl90eXBlX2ltcGw8IHZvaWQsIHZvaWQgPiB7IHR5cGVkZWYgdm9pZCB0eXBlOyB9OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWxfdHlwZV90cmFpdHNfY29tbW9uX3R5cGUKLQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFlQRV9UUkFJVFNfREVUQUlMX0NPTU1PTl9UWVBFX0hQUAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9jdl90cmFpdHNfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9jdl90cmFpdHNfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1NzRlNWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvY3ZfdHJhaXRzX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBEYXZlIEFicmFoYW1zLCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQKLS8vICBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuICAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLQotI2lmbmRlZiBORE5CT09TVF9UVF9ERVRBSUxfQ1ZfVFJBSVRTX0lNUExfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0RFVEFJTF9DVl9UUkFJVFNfSU1QTF9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotLy8gaW1wbGVtZW50YXRpb24gaGVscGVyOgotCi0KLSNpZiAhKE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sPT0gMykgJiYgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfTUlOT1JfXywgPD0gMikpCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIGRldGFpbCB7Ci0jZWxzZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC95ZXNfbm9fdHlwZS5ocHA+Ci1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIHR5cGVfdHJhaXRzIHsKLW5hbWVzcGFjZSBnY2M4NTAzIHsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IGN2X3RyYWl0c19pbXAge307Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGN2X3RyYWl0c19pbXA8VCo+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2NvbnN0ID0gZmFsc2UpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc192b2xhdGlsZSA9IGZhbHNlKTsKLSAgICB0eXBlZGVmIFQgdW5xdWFsaWZpZWRfdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGN2X3RyYWl0c19pbXA8Y29uc3QgVCo+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2NvbnN0ID0gdHJ1ZSk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX3ZvbGF0aWxlID0gZmFsc2UpOwotICAgIHR5cGVkZWYgVCB1bnF1YWxpZmllZF90eXBlOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgY3ZfdHJhaXRzX2ltcDx2b2xhdGlsZSBUKj4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfY29uc3QgPSBmYWxzZSk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX3ZvbGF0aWxlID0gdHJ1ZSk7Ci0gICAgdHlwZWRlZiBUIHVucXVhbGlmaWVkX3R5cGU7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBjdl90cmFpdHNfaW1wPGNvbnN0IHZvbGF0aWxlIFQqPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19jb25zdCA9IHRydWUpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc192b2xhdGlsZSA9IHRydWUpOwotICAgIHR5cGVkZWYgVCB1bnF1YWxpZmllZF90eXBlOwotfTsKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sPT0gMykgJiYgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfTUlOT1JfXywgPD0gMikKLS8vIFdlIGhhdmUgdG8gZXhjbHVkZSBmdW5jdGlvbiBwb2ludGVycyAKLS8vIChzZWUgaHR0cDovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT84NTAzKQoteWVzX3R5cGUgbWluaV9mdW5jcHRyX3Rlc3RlciguLi4pOwotbm9fdHlwZSAgbWluaV9mdW5jcHRyX3Rlc3Rlcihjb25zdCB2b2xhdGlsZSB2b2lkKik7Ci0KLX0gLy8gbmFtZXNwYWNlIGdjYzg1MDMKLX0gLy8gbmFtZXNwYWNlIHR5cGVfdHJhaXRzCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyBVc2UgdGhlIGltcGxlbWVudGF0aW9uIGFib3ZlIGZvciBub24gZnVuY3Rpb24gcG9pbnRlcnMKLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB1bnNpZ25lZCBTZWxlY3QgCi0gID0gKHVuc2lnbmVkKXNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6Z2NjODUwMzo6bWluaV9mdW5jcHRyX3Rlc3RlcigoVCkwKSkgPgotc3RydWN0IGN2X3RyYWl0c19pbXAgOiBwdWJsaWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmdjYzg1MDM6OmN2X3RyYWl0c19pbXA8VD4geyB9OwotCi0vLyBGdW5jdGlvbnMgYXJlIG5ldmVyIGN2LXF1YWxpZmllZAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBjdl90cmFpdHNfaW1wPFQqLDE+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2NvbnN0ID0gZmFsc2UpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc192b2xhdGlsZSA9IGZhbHNlKTsKLSAgICB0eXBlZGVmIFQgdW5xdWFsaWZpZWRfdHlwZTsKLX07Ci0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0IAotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfREVUQUlMX0NWX1RSQUlUU19JTVBMX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvZmFsc2VfcmVzdWx0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ZhbHNlX3Jlc3VsdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0YmMyM2IuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvZmFsc2VfcmVzdWx0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLS8vICBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMi4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfREVUQUlMX0ZBTFNFX1JFU1VMVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfREVUQUlMX0ZBTFNFX1JFU1VMVF9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgdHlwZV90cmFpdHMgewotCi0vLyBVdGlsaXR5IGNsYXNzIHdoaWNoIGFsd2F5cyAicmV0dXJucyIgZmFsc2UKLXN0cnVjdCBmYWxzZV9yZXN1bHQKLXsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLSAgICB9OwotfTsKLQotfX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ojp0eXBlX3RyYWl0cwotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfREVUQUlMX0ZBTFNFX1JFU1VMVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX2JpbmFyeV9vcGVyYXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxMGVmMTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX2JpbmFyeV9vcGVyYXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMjkgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24sIFJvYmVydCBTdGV3YXJ0LCBTdGV2ZW4gV2F0YW5hYmUgJiBSb21hbiBQZXJlcGVsaXRzYS4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ludGVncmFsX2NvbnN0YW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19iYXNlX29mLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb25zdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29udmVydGlibGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Z1bmRhbWVudGFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19pbnRlZ3JhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9pbnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9pZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfcG9pbnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3JlZmVyZW5jZS5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLS8vIGNhbm5vdCBpbmNsdWRlIHRoaXMgaGVhZGVyIHdpdGhvdXQgZ2V0dGluZyB3YXJuaW5ncyBvZiB0aGUga2luZDoKLS8vIGdjYzoKLS8vICAgIHdhcm5pbmc6IHZhbHVlIGNvbXB1dGVkIGlzIG5vdCB1c2VkCi0vLyAgICB3YXJuaW5nOiBjb21wYXJpc29uIGJldHdlZW4gc2lnbmVkIGFuZCB1bnNpZ25lZCBpbnRlZ2VyIGV4cHJlc3Npb25zCi0vLyBtc3ZjOgotLy8gICAgd2FybmluZyBDNDAxODogJzwnIDogc2lnbmVkL3Vuc2lnbmVkIG1pc21hdGNoCi0vLyAgICB3YXJuaW5nIEM0MjQ0OiAnKz0nIDogY29udmVyc2lvbiBmcm9tICdkb3VibGUnIHRvICdjaGFyJywgcG9zc2libGUgbG9zcyBvZiBkYXRhCi0vLyAgICB3YXJuaW5nIEM0NTQ3OiAnKicgOiBvcGVyYXRvciBiZWZvcmUgY29tbWEgaGFzIG5vIGVmZmVjdDsgZXhwZWN0ZWQgb3BlcmF0b3Igd2l0aCBzaWRlLWVmZmVjdAotLy8gICAgd2FybmluZyBDNDgwMDogJ2ludCcgOiBmb3JjaW5nIHZhbHVlIHRvIGJvb2wgJ3RydWUnIG9yICdmYWxzZScgKHBlcmZvcm1hbmNlIHdhcm5pbmcpCi0vLyAgICB3YXJuaW5nIEM0ODA0OiAnPCcgOiB1bnNhZmUgdXNlIG9mIHR5cGUgJ2Jvb2wnIGluIG9wZXJhdGlvbgotLy8gICAgd2FybmluZyBDNDgwNTogJz09JyA6IHVuc2FmZSBtaXggb2YgdHlwZSAnYm9vbCcgYW5kIHR5cGUgJ2NoYXInIGluIG9wZXJhdGlvbgotLy8gY2Fubm90IGZpbmQgYW5vdGhlciBpbXBsZW1lbnRhdGlvbiAtPiBkZWNsYXJlZCBhcyBzeXN0ZW0gaGVhZGVyIHRvIHN1cHByZXNzIHRoZXNlIHdhcm5pbmdzLgotI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoX19HTlVDX189PTMgJiYgX19HTlVDX01JTk9SX18+PTEpIHx8IChfX0dOVUNfXz4zKSkKLSMgICBwcmFnbWEgR0NDIHN5c3RlbV9oZWFkZXIKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSMgICBwcmFnbWEgd2FybmluZyAoIHB1c2ggKQotIyAgIHByYWdtYSB3YXJuaW5nICggZGlzYWJsZSA6IDQwMTggNDI0NCA0NTQ3IDQ4MDAgNDgwNCA0ODA1IDQ5MTMgKQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gVGhpcyBuYW1lc3BhY2UgZW5zdXJlcyB0aGF0IGFyZ3VtZW50LWRlcGVuZGVudCBuYW1lIGxvb2t1cCBkb2VzIG5vdCBtZXNzIHRoaW5ncyB1cC4KLW5hbWVzcGFjZSBORE5CT09TVF9KT0lOKE5ETkJPT1NUX1RUX1RSQUlUX05BTUUsX2ltcGwpIHsKLQotLy8gMS4gYSBmdW5jdGlvbiB0byBoYXZlIGFuIGluc3RhbmNlIG9mIHR5cGUgVCB3aXRob3V0IHJlcXVpcmluZyBUIHRvIGJlIGRlZmF1bHQKLS8vIGNvbnN0cnVjdGlibGUKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBUICZtYWtlKCk7Ci0KLQotLy8gMi4gd2UgcHJvdmlkZSBvdXIgb3BlcmF0b3IgZGVmaW5pdGlvbiBmb3IgdHlwZXMgdGhhdCBkbyBub3QgaGF2ZSBvbmUgYWxyZWFkeQotCi0vLyBhIHR5cGUgcmV0dXJuZWQgZnJvbSBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUCB3aGVuIG5vIHN1Y2ggb3BlcmF0b3IgaXMKLS8vIGZvdW5kIGluIHRoZSB0eXBlJ3Mgb3duIG5hbWVzcGFjZSAob3VyIG93biBvcGVyYXRvciBpcyB1c2VkKSBzbyB0aGF0IHdlIGhhdmUKLS8vIGEgbWVhbnMgdG8ga25vdyB0aGF0IG91ciBvcGVyYXRvciB3YXMgdXNlZAotc3RydWN0IG5vX29wZXJhdG9yIHsgfTsKLQotLy8gdGhpcyBjbGFzcyBhbGxvd3MgaW1wbGljaXQgY29udmVyc2lvbnMgYW5kIG1ha2VzIHRoZSBmb2xsb3dpbmcgb3BlcmF0b3IKLS8vIGRlZmluaXRpb24gbGVzcy1wcmVmZXJyZWQgdGhhbiBhbnkgb3RoZXIgc3VjaCBvcGVyYXRvcnMgdGhhdCBtaWdodCBiZSBmb3VuZAotLy8gdmlhIGFyZ3VtZW50LWRlcGVuZGVudCBuYW1lIGxvb2t1cAotc3RydWN0IGFueSB7IHRlbXBsYXRlIDxjbGFzcyBUPiBhbnkoVCBjb25zdCYpOyB9OwotCi0vLyB3aGVuIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QIGlzIG5vdCBhdmFpbGFibGUsIHRoaXMgb25lIGlzIHVzZWQKLW5vX29wZXJhdG9yIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QIChjb25zdCBhbnkmLCBjb25zdCBhbnkmKTsKLQotCi0vLyAzLiBjaGVja3MgaWYgdGhlIG9wZXJhdG9yIHJldHVybnMgdm9pZCBvciBub3QKLS8vIGNvbmRpdGlvbnM6IExocyE9dm9pZCBhbmQgUmhzIT12b2lkCi0KLS8vIHdlIGZpcnN0IHJlZGVmaW5lICJvcGVyYXRvciwiIHNvIHRoYXQgd2UgaGF2ZSBubyBjb21waWxhdGlvbiBlcnJvciBpZgotLy8gb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1AgcmV0dXJucyB2b2lkIGFuZCB3ZSBjYW4gdXNlIHRoZSByZXR1cm4gdHlwZSBvZgotLy8gKGxocyBORE5CT09TVF9UVF9UUkFJVF9PUCByaHMsIHJldHVybnNfdm9pZF90KCkpIHRvIGRlZHVjZSBpZgotLy8gb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1AgcmV0dXJucyB2b2lkIG9yIG5vdDoKLS8vIC0gb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1AgcmV0dXJucyB2b2lkICAgLT4gKGxocyBORE5CT09TVF9UVF9UUkFJVF9PUCByaHMsIHJldHVybnNfdm9pZF90KCkpIHJldHVybnMgcmV0dXJuc192b2lkX3QKLS8vIC0gb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1AgcmV0dXJucyAhPXZvaWQgLT4gKGxocyBORE5CT09TVF9UVF9UUkFJVF9PUCByaHMsIHJldHVybnNfdm9pZF90KCkpIHJldHVybnMgaW50Ci1zdHJ1Y3QgcmV0dXJuc192b2lkX3QgeyB9OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGludCBvcGVyYXRvciwoY29uc3QgVCYsIHJldHVybnNfdm9pZF90KTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbnQgb3BlcmF0b3IsKGNvbnN0IHZvbGF0aWxlIFQmLCByZXR1cm5zX3ZvaWRfdCk7Ci0KLS8vIHRoaXMgaW50ZXJtZWRpYXRlIHRyYWl0IGhhcyBtZW1iZXIgdmFsdWUgb2YgdHlwZSBib29sOgotLy8gLSB2YWx1ZT09dHJ1ZSAtPiBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUCByZXR1cm5zIHZvaWQKLS8vIC0gdmFsdWU9PWZhbHNlIC0+IG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QIGRvZXMgbm90IHJldHVybiB2b2lkCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIExocywgdHlwZW5hbWUgUmhzID4KLXN0cnVjdCBvcGVyYXRvcl9yZXR1cm5zX3ZvaWQgewotICAgLy8gb3ZlcmxvYWRzIG9mIGZ1bmN0aW9uIHJldHVybnNfdm9pZCBtYWtlIHRoZSBkaWZmZXJlbmNlCi0gICAvLyB5ZXNfdHlwZSBhbmQgbm9fdHlwZSBoYXZlIGRpZmZlcmVudCBzaXplIGJ5IGNvbnN0cnVjdGlvbgotICAgc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSByZXR1cm5zX3ZvaWQocmV0dXJuc192b2lkX3QpOwotICAgc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpub190eXBlIHJldHVybnNfdm9pZChpbnQpOwotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKHNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUpPT1zaXplb2YocmV0dXJuc192b2lkKChtYWtlPExocz4oKSBORE5CT09TVF9UVF9UUkFJVF9PUCBtYWtlPFJocz4oKSxyZXR1cm5zX3ZvaWRfdCgpKSkpKSk7Ci19OwotCi0KLS8vIDQuIGNoZWNrcyBpZiB0aGUgcmV0dXJuIHR5cGUgaXMgUmV0IG9yIFJldD09ZG9udF9jYXJlCi0vLyBjb25kaXRpb25zOiBMaHMhPXZvaWQgYW5kIFJocyE9dm9pZAotCi1zdHJ1Y3QgZG9udF9jYXJlIHsgfTsKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBMaHMsIHR5cGVuYW1lIFJocywgdHlwZW5hbWUgUmV0LCBib29sIFJldHVybnNfdm9pZCA+Ci1zdHJ1Y3Qgb3BlcmF0b3JfcmV0dXJuc19SZXQ7Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgTGhzLCB0eXBlbmFtZSBSaHMgPgotc3RydWN0IG9wZXJhdG9yX3JldHVybnNfUmV0IDwgTGhzLCBSaHMsIGRvbnRfY2FyZSwgdHJ1ZSA+IHsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOwotfTsKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBMaHMsIHR5cGVuYW1lIFJocyA+Ci1zdHJ1Y3Qgb3BlcmF0b3JfcmV0dXJuc19SZXQgPCBMaHMsIFJocywgZG9udF9jYXJlLCBmYWxzZSA+IHsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOwotfTsKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBMaHMsIHR5cGVuYW1lIFJocyA+Ci1zdHJ1Y3Qgb3BlcmF0b3JfcmV0dXJuc19SZXQgPCBMaHMsIFJocywgdm9pZCwgdHJ1ZSA+IHsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOwotfTsKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBMaHMsIHR5cGVuYW1lIFJocyA+Ci1zdHJ1Y3Qgb3BlcmF0b3JfcmV0dXJuc19SZXQgPCBMaHMsIFJocywgdm9pZCwgZmFsc2UgPiB7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIExocywgdHlwZW5hbWUgUmhzLCB0eXBlbmFtZSBSZXQgPgotc3RydWN0IG9wZXJhdG9yX3JldHVybnNfUmV0IDwgTGhzLCBSaHMsIFJldCwgdHJ1ZSA+IHsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLS8vIG90aGVyd2lzZSBjaGVja3MgaWYgaXQgaXMgY29udmVydGlibGUgdG8gUmV0IHVzaW5nIHRoZSBzaXplb2YgdHJpY2sKLS8vIGJhc2VkIG9uIG92ZXJsb2FkIHJlc29sdXRpb24KLS8vIGNvbmRpdGlvbjogUmV0IT12b2lkIGFuZCBSZXQhPWRvbnRfY2FyZSBhbmQgdGhlIG9wZXJhdG9yIGRvZXMgbm90IHJldHVybiB2b2lkCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIExocywgdHlwZW5hbWUgUmhzLCB0eXBlbmFtZSBSZXQgPgotc3RydWN0IG9wZXJhdG9yX3JldHVybnNfUmV0IDwgTGhzLCBSaHMsIFJldCwgZmFsc2UgPiB7Ci0gICBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2NvbnZlcnRpYmxlX3RvX1JldChSZXQpOyAvLyB0aGlzIHZlcnNpb24gaXMgcHJlZmVycmVkIGZvciB0eXBlcyBjb252ZXJ0aWJsZSB0byBSZXQKLSAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6bm9fdHlwZSBpc19jb252ZXJ0aWJsZV90b19SZXQoLi4uKTsgLy8gdGhpcyB2ZXJzaW9uIGlzIHVzZWQgb3RoZXJ3aXNlCi0KLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IChzaXplb2YoaXNfY29udmVydGlibGVfdG9fUmV0KG1ha2U8TGhzPigpIE5ETkJPT1NUX1RUX1RSQUlUX09QIG1ha2U8UmhzPigpKSk9PXNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUpKSk7Ci19OwotCi0KLS8vIDUuIGNoZWNrcyBmb3Igb3BlcmF0b3IgZXhpc3RlbmNlCi0vLyBjb25kaXRpb246IExocyE9dm9pZCBhbmQgUmhzIT12b2lkCi0KLS8vIGNoZWNrcyBpZiBvdXIgZGVmaW5pdGlvbiBvZiBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUCBpcyB1c2VkIG9yIGFuIG90aGVyCi0vLyBleGlzdGluZyBvbmU7Ci0vLyB0aGlzIGlzIGRvbmUgd2l0aCByZWRlZmluaXRpb24gb2YgIm9wZXJhdG9yLCIgdGhhdCByZXR1cm5zIG5vX29wZXJhdG9yIG9yIGhhc19vcGVyYXRvcgotc3RydWN0IGhhc19vcGVyYXRvciB7IH07Ci1ub19vcGVyYXRvciBvcGVyYXRvciwobm9fb3BlcmF0b3IsIGhhc19vcGVyYXRvcik7Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgTGhzLCB0eXBlbmFtZSBSaHMgPgotc3RydWN0IG9wZXJhdG9yX2V4aXN0cyB7Ci0gICBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGNoZWNrKGhhc19vcGVyYXRvcik7IC8vIHRoaXMgdmVyc2lvbiBpcyBwcmVmZXJyZWQgd2hlbiBvcGVyYXRvciBleGlzdHMKLSAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6bm9fdHlwZSBjaGVjayhub19vcGVyYXRvcik7IC8vIHRoaXMgdmVyc2lvbiBpcyB1c2VkIG90aGVyd2lzZQotCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoc2l6ZW9mKGNoZWNrKCgobWFrZTxMaHM+KCkgTkROQk9PU1RfVFRfVFJBSVRfT1AgbWFrZTxSaHM+KCkpLG1ha2U8aGFzX29wZXJhdG9yPigpKSkpPT1zaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlKSkpOwotfTsKLQotCi0vLyA2LiBtYWluIHRyYWl0OiB0byBhdm9pZCBhbnkgY29tcGlsYXRpb24gZXJyb3IsIHRoaXMgY2xhc3MgYmVoYXZlcwotLy8gZGlmZmVyZW50bHkgd2hlbiBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUChMaHMsIFJocykgaXMgZm9yYmlkZGVuIGJ5IHRoZQotLy8gc3RhbmRhcmQuCi0vLyBGb3JiaWRkZW5faWYgaXMgYSBib29sIHRoYXQgaXM6Ci0vLyAtIHRydWUgd2hlbiB0aGUgb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1AoTGhzLCBSaHMpIGlzIGZvcmJpZGRlbiBieSB0aGUgc3RhbmRhcmQKLS8vICAgKHdvdWxkIHlpZWxkIGNvbXBpbGF0aW9uIGVycm9yIGlmIHVzZWQpCi0vLyAtIGZhbHNlIG90aGVyd2lzZQotdGVtcGxhdGUgPCB0eXBlbmFtZSBMaHMsIHR5cGVuYW1lIFJocywgdHlwZW5hbWUgUmV0LCBib29sIEZvcmJpZGRlbl9pZiA+Ci1zdHJ1Y3QgdHJhaXRfaW1wbDE7Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgTGhzLCB0eXBlbmFtZSBSaHMsIHR5cGVuYW1lIFJldCA+Ci1zdHJ1Y3QgdHJhaXRfaW1wbDEgPCBMaHMsIFJocywgUmV0LCB0cnVlID4gewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBMaHMsIHR5cGVuYW1lIFJocywgdHlwZW5hbWUgUmV0ID4KLXN0cnVjdCB0cmFpdF9pbXBsMSA8IExocywgUmhzLCBSZXQsIGZhbHNlID4gewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsCi0gICAgICB2YWx1ZSA9ICgKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPAotICAgICAgICAgICAgb3BlcmF0b3JfZXhpc3RzIDwgTGhzLCBSaHMgPjo6dmFsdWUsCi0gICAgICAgICAgICBvcGVyYXRvcl9yZXR1cm5zX1JldCA8IExocywgUmhzLCBSZXQsIG9wZXJhdG9yX3JldHVybnNfdm9pZCA8IExocywgUmhzID46OnZhbHVlID46OnZhbHVlCi0gICAgICAgICA+Ojp2YWx1ZQotICAgICAgKQotICAgKTsKLX07Ci0KLS8vIHNvbWUgc3BlY2lhbGl6YXRpb25zIG5lZWRzIHRvIGJlIGRlY2xhcmVkIGZvciB0aGUgc3BlY2lhbCB2b2lkIGNhc2UKLXRlbXBsYXRlIDwgdHlwZW5hbWUgUmhzLCB0eXBlbmFtZSBSZXQgPgotc3RydWN0IHRyYWl0X2ltcGwxIDwgdm9pZCwgUmhzLCBSZXQsIGZhbHNlID4gewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBMaHMsIHR5cGVuYW1lIFJldCA+Ci1zdHJ1Y3QgdHJhaXRfaW1wbDEgPCBMaHMsIHZvaWQsIFJldCwgZmFsc2UgPiB7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIFJldCA+Ci1zdHJ1Y3QgdHJhaXRfaW1wbDEgPCB2b2lkLCB2b2lkLCBSZXQsIGZhbHNlID4gewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotfTsKLQotLy8gZGVmaW5lcyBzb21lIHR5cGVkZWYgZm9yIGNvbnZlbmllbmNlCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIExocywgdHlwZW5hbWUgUmhzLCB0eXBlbmFtZSBSZXQgPgotc3RydWN0IHRyYWl0X2ltcGwgewotICAgdHlwZWRlZiB0eXBlbmFtZSA6Om5kbmJvb3N0OjpyZW1vdmVfcmVmZXJlbmNlPExocz46OnR5cGUgTGhzX25vcmVmOwotICAgdHlwZWRlZiB0eXBlbmFtZSA6Om5kbmJvb3N0OjpyZW1vdmVfcmVmZXJlbmNlPFJocz46OnR5cGUgUmhzX25vcmVmOwotICAgdHlwZWRlZiB0eXBlbmFtZSA6Om5kbmJvb3N0OjpyZW1vdmVfY3Y8TGhzX25vcmVmPjo6dHlwZSBMaHNfbm9jdjsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgOjpuZG5ib29zdDo6cmVtb3ZlX2N2PFJoc19ub3JlZj46OnR5cGUgUmhzX25vY3Y7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIDo6bmRuYm9vc3Q6OnJlbW92ZV9jdjwgdHlwZW5hbWUgOjpuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTwgdHlwZW5hbWUgOjpuZG5ib29zdDo6cmVtb3ZlX3BvaW50ZXI8TGhzX25vcmVmPjo6dHlwZSA+Ojp0eXBlID46OnR5cGUgTGhzX25vcHRyOwotICAgdHlwZWRlZiB0eXBlbmFtZSA6Om5kbmJvb3N0OjpyZW1vdmVfY3Y8IHR5cGVuYW1lIDo6bmRuYm9vc3Q6OnJlbW92ZV9yZWZlcmVuY2U8IHR5cGVuYW1lIDo6bmRuYm9vc3Q6OnJlbW92ZV9wb2ludGVyPFJoc19ub3JlZj46OnR5cGUgPjo6dHlwZSA+Ojp0eXBlIFJoc19ub3B0cjsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9ICh0cmFpdF9pbXBsMSA8IExoc19ub3JlZiwgUmhzX25vcmVmLCBSZXQsIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRiA+Ojp2YWx1ZSkpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgaW1wbAotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLS8vIHRoaXMgaXMgdGhlIGFjY2Vzc2libGUgZGVmaW5pdGlvbiBvZiB0aGUgdHJhaXQgdG8gZW5kIHVzZXIKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjMoTkROQk9PU1RfVFRfVFJBSVRfTkFNRSwgTGhzLCBSaHM9TGhzLCBSZXQ9OjpuZG5ib29zdDo6ZGV0YWlsOjpORE5CT09TVF9KT0lOKE5ETkJPT1NUX1RUX1RSQUlUX05BTUUsX2ltcGwpOjpkb250X2NhcmUsICg6Om5kbmJvb3N0OjpkZXRhaWw6Ok5ETkJPT1NUX0pPSU4oTkROQk9PU1RfVFRfVFJBSVRfTkFNRSxfaW1wbCk6OnRyYWl0X2ltcGwgPCBMaHMsIFJocywgUmV0ID46OnZhbHVlKSkKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSMgICBwcmFnbWEgd2FybmluZyAoIHBvcCApCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19wb3N0Zml4X29wZXJhdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19wb3N0Zml4X29wZXJhdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQyMzU3My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfcG9zdGZpeF9vcGVyYXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMDIgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24sIFJvYmVydCBTdGV3YXJ0LCBTdGV2ZW4gV2F0YW5hYmUgJiBSb21hbiBQZXJlcGVsaXRzYS4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ludGVncmFsX2NvbnN0YW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb25zdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZnVuZGFtZW50YWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvaWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9yZWZlcmVuY2UuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi0vLyBhdm9pZCB3YXJuaW5ncwotI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoX19HTlVDX189PTMgJiYgX19HTlVDX01JTk9SX18+PTEpIHx8IChfX0dOVUNfXz4zKSkKLSMgICBwcmFnbWEgR0NDIHN5c3RlbV9oZWFkZXIKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSMgICBwcmFnbWEgd2FybmluZyAoIHB1c2ggKQotIyAgIHByYWdtYSB3YXJuaW5nICggZGlzYWJsZSA6IDQyNDQgNDkxMyApCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyBUaGlzIG5hbWVzcGFjZSBlbnN1cmVzIHRoYXQgYXJndW1lbnQtZGVwZW5kZW50IG5hbWUgbG9va3VwIGRvZXMgbm90IG1lc3MgdGhpbmdzIHVwLgotbmFtZXNwYWNlIE5ETkJPT1NUX0pPSU4oTkROQk9PU1RfVFRfVFJBSVRfTkFNRSxfaW1wbCkgewotCi0vLyAxLiBhIGZ1bmN0aW9uIHRvIGhhdmUgYW4gaW5zdGFuY2Ugb2YgdHlwZSBUIHdpdGhvdXQgcmVxdWlyaW5nIFQgdG8gYmUgZGVmYXVsdAotLy8gY29uc3RydWN0aWJsZQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IFQgJm1ha2UoKTsKLQotCi0vLyAyLiB3ZSBwcm92aWRlIG91ciBvcGVyYXRvciBkZWZpbml0aW9uIGZvciB0eXBlcyB0aGF0IGRvIG5vdCBoYXZlIG9uZSBhbHJlYWR5Ci0KLS8vIGEgdHlwZSByZXR1cm5lZCBmcm9tIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QIHdoZW4gbm8gc3VjaCBvcGVyYXRvciBpcwotLy8gZm91bmQgaW4gdGhlIHR5cGUncyBvd24gbmFtZXNwYWNlIChvdXIgb3duIG9wZXJhdG9yIGlzIHVzZWQpIHNvIHRoYXQgd2UgaGF2ZQotLy8gYSBtZWFucyB0byBrbm93IHRoYXQgb3VyIG9wZXJhdG9yIHdhcyB1c2VkCi1zdHJ1Y3Qgbm9fb3BlcmF0b3IgeyB9OwotCi0vLyB0aGlzIGNsYXNzIGFsbG93cyBpbXBsaWNpdCBjb252ZXJzaW9ucyBhbmQgbWFrZXMgdGhlIGZvbGxvd2luZyBvcGVyYXRvcgotLy8gZGVmaW5pdGlvbiBsZXNzLXByZWZlcnJlZCB0aGFuIGFueSBvdGhlciBzdWNoIG9wZXJhdG9ycyB0aGF0IG1pZ2h0IGJlIGZvdW5kCi0vLyB2aWEgYXJndW1lbnQtZGVwZW5kZW50IG5hbWUgbG9va3VwCi1zdHJ1Y3QgYW55IHsgdGVtcGxhdGUgPGNsYXNzIFQ+IGFueShUIGNvbnN0Jik7IH07Ci0KLS8vIHdoZW4gb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1AgaXMgbm90IGF2YWlsYWJsZSwgdGhpcyBvbmUgaXMgdXNlZAotbm9fb3BlcmF0b3Igb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1AgKGNvbnN0IGFueSYsIGludCk7Ci0KLQotLy8gMy4gY2hlY2tzIGlmIHRoZSBvcGVyYXRvciByZXR1cm5zIHZvaWQgb3Igbm90Ci0vLyBjb25kaXRpb25zOiBMaHMhPXZvaWQKLQotLy8gd2UgZmlyc3QgcmVkZWZpbmUgIm9wZXJhdG9yLCIgc28gdGhhdCB3ZSBoYXZlIG5vIGNvbXBpbGF0aW9uIGVycm9yIGlmCi0vLyBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUCByZXR1cm5zIHZvaWQgYW5kIHdlIGNhbiB1c2UgdGhlIHJldHVybiB0eXBlIG9mCi0vLyAobGhzIE5ETkJPT1NUX1RUX1RSQUlUX09QLCByZXR1cm5zX3ZvaWRfdCgpKSB0byBkZWR1Y2UgaWYKLS8vIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QIHJldHVybnMgdm9pZCBvciBub3Q6Ci0vLyAtIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QIHJldHVybnMgdm9pZCAgIC0+IChsaHMgTkROQk9PU1RfVFRfVFJBSVRfT1AsIHJldHVybnNfdm9pZF90KCkpIHJldHVybnMgcmV0dXJuc192b2lkX3QKLS8vIC0gb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1AgcmV0dXJucyAhPXZvaWQgLT4gKGxocyBORE5CT09TVF9UVF9UUkFJVF9PUCwgcmV0dXJuc192b2lkX3QoKSkgcmV0dXJucyBpbnQKLXN0cnVjdCByZXR1cm5zX3ZvaWRfdCB7IH07Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW50IG9wZXJhdG9yLChjb25zdCBUJiwgcmV0dXJuc192b2lkX3QpOwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGludCBvcGVyYXRvciwoY29uc3Qgdm9sYXRpbGUgVCYsIHJldHVybnNfdm9pZF90KTsKLQotLy8gdGhpcyBpbnRlcm1lZGlhdGUgdHJhaXQgaGFzIG1lbWJlciB2YWx1ZSBvZiB0eXBlIGJvb2w6Ci0vLyAtIHZhbHVlPT10cnVlIC0+IG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QIHJldHVybnMgdm9pZAotLy8gLSB2YWx1ZT09ZmFsc2UgLT4gb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1AgZG9lcyBub3QgcmV0dXJuIHZvaWQKLXRlbXBsYXRlIDwgdHlwZW5hbWUgTGhzID4KLXN0cnVjdCBvcGVyYXRvcl9yZXR1cm5zX3ZvaWQgewotICAgLy8gb3ZlcmxvYWRzIG9mIGZ1bmN0aW9uIHJldHVybnNfdm9pZCBtYWtlIHRoZSBkaWZmZXJlbmNlCi0gICAvLyB5ZXNfdHlwZSBhbmQgbm9fdHlwZSBoYXZlIGRpZmZlcmVudCBzaXplIGJ5IGNvbnN0cnVjdGlvbgotICAgc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSByZXR1cm5zX3ZvaWQocmV0dXJuc192b2lkX3QpOwotICAgc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpub190eXBlIHJldHVybnNfdm9pZChpbnQpOwotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKHNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUpPT1zaXplb2YocmV0dXJuc192b2lkKChtYWtlPExocz4oKSBORE5CT09TVF9UVF9UUkFJVF9PUCxyZXR1cm5zX3ZvaWRfdCgpKSkpKSk7Ci19OwotCi0KLS8vIDQuIGNoZWNrcyBpZiB0aGUgcmV0dXJuIHR5cGUgaXMgUmV0IG9yIFJldD09ZG9udF9jYXJlCi0vLyBjb25kaXRpb25zOiBMaHMhPXZvaWQKLQotc3RydWN0IGRvbnRfY2FyZSB7IH07Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgTGhzLCB0eXBlbmFtZSBSZXQsIGJvb2wgUmV0dXJuc192b2lkID4KLXN0cnVjdCBvcGVyYXRvcl9yZXR1cm5zX1JldDsKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBMaHMgPgotc3RydWN0IG9wZXJhdG9yX3JldHVybnNfUmV0IDwgTGhzLCBkb250X2NhcmUsIHRydWUgPiB7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgTGhzID4KLXN0cnVjdCBvcGVyYXRvcl9yZXR1cm5zX1JldCA8IExocywgZG9udF9jYXJlLCBmYWxzZSA+IHsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOwotfTsKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBMaHMgPgotc3RydWN0IG9wZXJhdG9yX3JldHVybnNfUmV0IDwgTGhzLCB2b2lkLCB0cnVlID4gewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIExocyA+Ci1zdHJ1Y3Qgb3BlcmF0b3JfcmV0dXJuc19SZXQgPCBMaHMsIHZvaWQsIGZhbHNlID4gewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBMaHMsIHR5cGVuYW1lIFJldCA+Ci1zdHJ1Y3Qgb3BlcmF0b3JfcmV0dXJuc19SZXQgPCBMaHMsIFJldCwgdHJ1ZSA+IHsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLS8vIG90aGVyd2lzZSBjaGVja3MgaWYgaXQgaXMgY29udmVydGlibGUgdG8gUmV0IHVzaW5nIHRoZSBzaXplb2YgdHJpY2sKLS8vIGJhc2VkIG9uIG92ZXJsb2FkIHJlc29sdXRpb24KLS8vIGNvbmRpdGlvbjogUmV0IT12b2lkIGFuZCBSZXQhPWRvbnRfY2FyZSBhbmQgdGhlIG9wZXJhdG9yIGRvZXMgbm90IHJldHVybiB2b2lkCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIExocywgdHlwZW5hbWUgUmV0ID4KLXN0cnVjdCBvcGVyYXRvcl9yZXR1cm5zX1JldCA8IExocywgUmV0LCBmYWxzZSA+IHsKLSAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgaXNfY29udmVydGlibGVfdG9fUmV0KFJldCk7IC8vIHRoaXMgdmVyc2lvbiBpcyBwcmVmZXJyZWQgZm9yIHR5cGVzIGNvbnZlcnRpYmxlIHRvIFJldAotICAgc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpub190eXBlIGlzX2NvbnZlcnRpYmxlX3RvX1JldCguLi4pOyAvLyB0aGlzIHZlcnNpb24gaXMgdXNlZCBvdGhlcndpc2UKLQotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKHNpemVvZihpc19jb252ZXJ0aWJsZV90b19SZXQobWFrZTxMaHM+KCkgTkROQk9PU1RfVFRfVFJBSVRfT1ApKT09c2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSkpKTsKLX07Ci0KLQotLy8gNS4gY2hlY2tzIGZvciBvcGVyYXRvciBleGlzdGVuY2UKLS8vIGNvbmRpdGlvbjogTGhzIT12b2lkCi0KLS8vIGNoZWNrcyBpZiBvdXIgZGVmaW5pdGlvbiBvZiBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUCBpcyB1c2VkIG9yIGFuIG90aGVyCi0vLyBleGlzdGluZyBvbmU7Ci0vLyB0aGlzIGlzIGRvbmUgd2l0aCByZWRlZmluaXRpb24gb2YgIm9wZXJhdG9yLCIgdGhhdCByZXR1cm5zIG5vX29wZXJhdG9yIG9yIGhhc19vcGVyYXRvcgotc3RydWN0IGhhc19vcGVyYXRvciB7IH07Ci1ub19vcGVyYXRvciBvcGVyYXRvciwobm9fb3BlcmF0b3IsIGhhc19vcGVyYXRvcik7Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgTGhzID4KLXN0cnVjdCBvcGVyYXRvcl9leGlzdHMgewotICAgc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBjaGVjayhoYXNfb3BlcmF0b3IpOyAvLyB0aGlzIHZlcnNpb24gaXMgcHJlZmVycmVkIHdoZW4gb3BlcmF0b3IgZXhpc3RzCi0gICBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Om5vX3R5cGUgY2hlY2sobm9fb3BlcmF0b3IpOyAvLyB0aGlzIHZlcnNpb24gaXMgdXNlZCBvdGhlcndpc2UKLQotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKHNpemVvZihjaGVjaygoKG1ha2U8TGhzPigpIE5ETkJPT1NUX1RUX1RSQUlUX09QKSxtYWtlPGhhc19vcGVyYXRvcj4oKSkpKT09c2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSkpKTsKLX07Ci0KLQotLy8gNi4gbWFpbiB0cmFpdDogdG8gYXZvaWQgYW55IGNvbXBpbGF0aW9uIGVycm9yLCB0aGlzIGNsYXNzIGJlaGF2ZXMKLS8vIGRpZmZlcmVudGx5IHdoZW4gb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1AoTGhzKSBpcyBmb3JiaWRkZW4gYnkgdGhlCi0vLyBzdGFuZGFyZC4KLS8vIEZvcmJpZGRlbl9pZiBpcyBhIGJvb2wgdGhhdCBpczoKLS8vIC0gdHJ1ZSB3aGVuIHRoZSBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUChMaHMpIGlzIGZvcmJpZGRlbiBieSB0aGUgc3RhbmRhcmQKLS8vICAgKHdvdWxkIHlpZWxkIGNvbXBpbGF0aW9uIGVycm9yIGlmIHVzZWQpCi0vLyAtIGZhbHNlIG90aGVyd2lzZQotdGVtcGxhdGUgPCB0eXBlbmFtZSBMaHMsIHR5cGVuYW1lIFJldCwgYm9vbCBGb3JiaWRkZW5faWYgPgotc3RydWN0IHRyYWl0X2ltcGwxOwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIExocywgdHlwZW5hbWUgUmV0ID4KLXN0cnVjdCB0cmFpdF9pbXBsMSA8IExocywgUmV0LCB0cnVlID4gewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBMaHMsIHR5cGVuYW1lIFJldCA+Ci1zdHJ1Y3QgdHJhaXRfaW1wbDEgPCBMaHMsIFJldCwgZmFsc2UgPiB7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwKLSAgICAgIHZhbHVlID0gKAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgICAgICBvcGVyYXRvcl9leGlzdHMgPCBMaHMgPjo6dmFsdWUsCi0gICAgICAgICAgICBvcGVyYXRvcl9yZXR1cm5zX1JldCA8IExocywgUmV0LCBvcGVyYXRvcl9yZXR1cm5zX3ZvaWQgPCBMaHMgPjo6dmFsdWUgPjo6dmFsdWUKLSAgICAgICAgID46OnZhbHVlCi0gICAgICApCi0gICApOwotfTsKLQotLy8gc3BlY2lhbGl6YXRpb24gbmVlZHMgdG8gYmUgZGVjbGFyZWQgZm9yIHRoZSBzcGVjaWFsIHZvaWQgY2FzZQotdGVtcGxhdGUgPCB0eXBlbmFtZSBSZXQgPgotc3RydWN0IHRyYWl0X2ltcGwxIDwgdm9pZCwgUmV0LCBmYWxzZSA+IHsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLS8vIGRlZmluZXMgc29tZSB0eXBlZGVmIGZvciBjb252ZW5pZW5jZQotdGVtcGxhdGUgPCB0eXBlbmFtZSBMaHMsIHR5cGVuYW1lIFJldCA+Ci1zdHJ1Y3QgdHJhaXRfaW1wbCB7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIDo6bmRuYm9vc3Q6OnJlbW92ZV9yZWZlcmVuY2U8TGhzPjo6dHlwZSBMaHNfbm9yZWY7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIDo6bmRuYm9vc3Q6OnJlbW92ZV9jdjxMaHNfbm9yZWY+Ojp0eXBlIExoc19ub2N2OwotICAgdHlwZWRlZiB0eXBlbmFtZSA6Om5kbmJvb3N0OjpyZW1vdmVfY3Y8IHR5cGVuYW1lIDo6bmRuYm9vc3Q6OnJlbW92ZV9yZWZlcmVuY2U8IHR5cGVuYW1lIDo6bmRuYm9vc3Q6OnJlbW92ZV9wb2ludGVyPExoc19ub3JlZj46OnR5cGUgPjo6dHlwZSA+Ojp0eXBlIExoc19ub3B0cjsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9ICh0cmFpdF9pbXBsMSA8IExoc19ub3JlZiwgUmV0LCBORE5CT09TVF9UVF9GT1JCSURERU5fSUYgPjo6dmFsdWUpKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGltcGwKLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0vLyB0aGlzIGlzIHRoZSBhY2Nlc3NpYmxlIGRlZmluaXRpb24gb2YgdGhlIHRyYWl0IHRvIGVuZCB1c2VyCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYyKE5ETkJPT1NUX1RUX1RSQUlUX05BTUUsIExocywgUmV0PTo6bmRuYm9vc3Q6OmRldGFpbDo6TkROQk9PU1RfSk9JTihORE5CT09TVF9UVF9UUkFJVF9OQU1FLF9pbXBsKTo6ZG9udF9jYXJlLCAoOjpuZG5ib29zdDo6ZGV0YWlsOjpORE5CT09TVF9KT0lOKE5ETkJPT1NUX1RUX1RSQUlUX05BTUUsX2ltcGwpOjp0cmFpdF9pbXBsPCBMaHMsIFJldCA+Ojp2YWx1ZSkpCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jICAgcHJhZ21hIHdhcm5pbmcgKCBwb3AgKQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfcHJlZml4X29wZXJhdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19wcmVmaXhfb3BlcmF0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTI1YzU4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19wcmVmaXhfb3BlcmF0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjEwICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLCBSb2JlcnQgU3Rld2FydCwgU3RldmVuIFdhdGFuYWJlICYgUm9tYW4gUGVyZXBlbGl0c2EuCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaWNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pbnRlZ3JhbF9jb25zdGFudC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29uc3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Z1bmRhbWVudGFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19pbnRlZ3JhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9pbnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9pZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfcG9pbnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3JlZmVyZW5jZS5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLS8vIGNhbm5vdCBpbmNsdWRlIHRoaXMgaGVhZGVyIHdpdGhvdXQgZ2V0dGluZyB3YXJuaW5ncyBvZiB0aGUga2luZDoKLS8vIGdjYzoKLS8vICAgIHdhcm5pbmc6IHZhbHVlIGNvbXB1dGVkIGlzIG5vdCB1c2VkCi0vLyAgICB3YXJuaW5nOiBjb21wYXJpc29uIGJldHdlZW4gc2lnbmVkIGFuZCB1bnNpZ25lZCBpbnRlZ2VyIGV4cHJlc3Npb25zCi0vLyBtc3ZjOgotLy8gICAgd2FybmluZyBDNDE0NjogdW5hcnkgbWludXMgb3BlcmF0b3IgYXBwbGllZCB0byB1bnNpZ25lZCB0eXBlLCByZXN1bHQgc3RpbGwgdW5zaWduZWQKLS8vICAgIHdhcm5pbmcgQzQ4MDQ6ICctJyA6IHVuc2FmZSB1c2Ugb2YgdHlwZSAnYm9vbCcgaW4gb3BlcmF0aW9uCi0vLyBjYW5ub3QgZmluZCBhbm90aGVyIGltcGxlbWVudGF0aW9uIC0+IGRlY2xhcmVkIGFzIHN5c3RlbSBoZWFkZXIgdG8gc3VwcHJlc3MgdGhlc2Ugd2FybmluZ3MuCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKChfX0dOVUNfXz09MyAmJiBfX0dOVUNfTUlOT1JfXz49MSkgfHwgKF9fR05VQ19fPjMpKQotIyAgIHByYWdtYSBHQ0Mgc3lzdGVtX2hlYWRlcgotI2VsaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotIyAgIHByYWdtYSB3YXJuaW5nICggcHVzaCApCi0jICAgcHJhZ21hIHdhcm5pbmcgKCBkaXNhYmxlIDogNDE0NiA0ODA0IDQ5MTMgNDI0NCApCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyBUaGlzIG5hbWVzcGFjZSBlbnN1cmVzIHRoYXQgYXJndW1lbnQtZGVwZW5kZW50IG5hbWUgbG9va3VwIGRvZXMgbm90IG1lc3MgdGhpbmdzIHVwLgotbmFtZXNwYWNlIE5ETkJPT1NUX0pPSU4oTkROQk9PU1RfVFRfVFJBSVRfTkFNRSxfaW1wbCkgewotCi0vLyAxLiBhIGZ1bmN0aW9uIHRvIGhhdmUgYW4gaW5zdGFuY2Ugb2YgdHlwZSBUIHdpdGhvdXQgcmVxdWlyaW5nIFQgdG8gYmUgZGVmYXVsdAotLy8gY29uc3RydWN0aWJsZQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IFQgJm1ha2UoKTsKLQotCi0vLyAyLiB3ZSBwcm92aWRlIG91ciBvcGVyYXRvciBkZWZpbml0aW9uIGZvciB0eXBlcyB0aGF0IGRvIG5vdCBoYXZlIG9uZSBhbHJlYWR5Ci0KLS8vIGEgdHlwZSByZXR1cm5lZCBmcm9tIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QIHdoZW4gbm8gc3VjaCBvcGVyYXRvciBpcwotLy8gZm91bmQgaW4gdGhlIHR5cGUncyBvd24gbmFtZXNwYWNlIChvdXIgb3duIG9wZXJhdG9yIGlzIHVzZWQpIHNvIHRoYXQgd2UgaGF2ZQotLy8gYSBtZWFucyB0byBrbm93IHRoYXQgb3VyIG9wZXJhdG9yIHdhcyB1c2VkCi1zdHJ1Y3Qgbm9fb3BlcmF0b3IgeyB9OwotCi0vLyB0aGlzIGNsYXNzIGFsbG93cyBpbXBsaWNpdCBjb252ZXJzaW9ucyBhbmQgbWFrZXMgdGhlIGZvbGxvd2luZyBvcGVyYXRvcgotLy8gZGVmaW5pdGlvbiBsZXNzLXByZWZlcnJlZCB0aGFuIGFueSBvdGhlciBzdWNoIG9wZXJhdG9ycyB0aGF0IG1pZ2h0IGJlIGZvdW5kCi0vLyB2aWEgYXJndW1lbnQtZGVwZW5kZW50IG5hbWUgbG9va3VwCi1zdHJ1Y3QgYW55IHsgdGVtcGxhdGUgPGNsYXNzIFQ+IGFueShUIGNvbnN0Jik7IH07Ci0KLS8vIHdoZW4gb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1AgaXMgbm90IGF2YWlsYWJsZSwgdGhpcyBvbmUgaXMgdXNlZAotbm9fb3BlcmF0b3Igb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1AgKGNvbnN0IGFueSYpOwotCi0KLS8vIDMuIGNoZWNrcyBpZiB0aGUgb3BlcmF0b3IgcmV0dXJucyB2b2lkIG9yIG5vdAotLy8gY29uZGl0aW9uczogUmhzIT12b2lkCi0KLS8vIHdlIGZpcnN0IHJlZGVmaW5lICJvcGVyYXRvciwiIHNvIHRoYXQgd2UgaGF2ZSBubyBjb21waWxhdGlvbiBlcnJvciBpZgotLy8gb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1AgcmV0dXJucyB2b2lkIGFuZCB3ZSBjYW4gdXNlIHRoZSByZXR1cm4gdHlwZSBvZgotLy8gKE5ETkJPT1NUX1RUX1RSQUlUX09QIHJocywgcmV0dXJuc192b2lkX3QoKSkgdG8gZGVkdWNlIGlmCi0vLyBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUCByZXR1cm5zIHZvaWQgb3Igbm90OgotLy8gLSBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUCByZXR1cm5zIHZvaWQgICAtPiAoTkROQk9PU1RfVFRfVFJBSVRfT1AgcmhzLCByZXR1cm5zX3ZvaWRfdCgpKSByZXR1cm5zIHJldHVybnNfdm9pZF90Ci0vLyAtIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QIHJldHVybnMgIT12b2lkIC0+IChORE5CT09TVF9UVF9UUkFJVF9PUCByaHMsIHJldHVybnNfdm9pZF90KCkpIHJldHVybnMgaW50Ci1zdHJ1Y3QgcmV0dXJuc192b2lkX3QgeyB9OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGludCBvcGVyYXRvciwoY29uc3QgVCYsIHJldHVybnNfdm9pZF90KTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbnQgb3BlcmF0b3IsKGNvbnN0IHZvbGF0aWxlIFQmLCByZXR1cm5zX3ZvaWRfdCk7Ci0KLS8vIHRoaXMgaW50ZXJtZWRpYXRlIHRyYWl0IGhhcyBtZW1iZXIgdmFsdWUgb2YgdHlwZSBib29sOgotLy8gLSB2YWx1ZT09dHJ1ZSAtPiBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUCByZXR1cm5zIHZvaWQKLS8vIC0gdmFsdWU9PWZhbHNlIC0+IG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QIGRvZXMgbm90IHJldHVybiB2b2lkCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIFJocyA+Ci1zdHJ1Y3Qgb3BlcmF0b3JfcmV0dXJuc192b2lkIHsKLSAgIC8vIG92ZXJsb2FkcyBvZiBmdW5jdGlvbiByZXR1cm5zX3ZvaWQgbWFrZSB0aGUgZGlmZmVyZW5jZQotICAgLy8geWVzX3R5cGUgYW5kIG5vX3R5cGUgaGF2ZSBkaWZmZXJlbnQgc2l6ZSBieSBjb25zdHJ1Y3Rpb24KLSAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgcmV0dXJuc192b2lkKHJldHVybnNfdm9pZF90KTsKLSAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6bm9fdHlwZSByZXR1cm5zX3ZvaWQoaW50KTsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IChzaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlKT09c2l6ZW9mKHJldHVybnNfdm9pZCgoTkROQk9PU1RfVFRfVFJBSVRfT1AgbWFrZTxSaHM+KCkscmV0dXJuc192b2lkX3QoKSkpKSkpOwotfTsKLQotCi0vLyA0LiBjaGVja3MgaWYgdGhlIHJldHVybiB0eXBlIGlzIFJldCBvciBSZXQ9PWRvbnRfY2FyZQotLy8gY29uZGl0aW9uczogUmhzIT12b2lkCi0KLXN0cnVjdCBkb250X2NhcmUgeyB9OwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIFJocywgdHlwZW5hbWUgUmV0LCBib29sIFJldHVybnNfdm9pZCA+Ci1zdHJ1Y3Qgb3BlcmF0b3JfcmV0dXJuc19SZXQ7Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgUmhzID4KLXN0cnVjdCBvcGVyYXRvcl9yZXR1cm5zX1JldCA8IFJocywgZG9udF9jYXJlLCB0cnVlID4gewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIFJocyA+Ci1zdHJ1Y3Qgb3BlcmF0b3JfcmV0dXJuc19SZXQgPCBSaHMsIGRvbnRfY2FyZSwgZmFsc2UgPiB7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgUmhzID4KLXN0cnVjdCBvcGVyYXRvcl9yZXR1cm5zX1JldCA8IFJocywgdm9pZCwgdHJ1ZSA+IHsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOwotfTsKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBSaHMgPgotc3RydWN0IG9wZXJhdG9yX3JldHVybnNfUmV0IDwgUmhzLCB2b2lkLCBmYWxzZSA+IHsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgUmhzLCB0eXBlbmFtZSBSZXQgPgotc3RydWN0IG9wZXJhdG9yX3JldHVybnNfUmV0IDwgUmhzLCBSZXQsIHRydWUgPiB7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotCi0vLyBvdGhlcndpc2UgY2hlY2tzIGlmIGl0IGlzIGNvbnZlcnRpYmxlIHRvIFJldCB1c2luZyB0aGUgc2l6ZW9mIHRyaWNrCi0vLyBiYXNlZCBvbiBvdmVybG9hZCByZXNvbHV0aW9uCi0vLyBjb25kaXRpb246IFJldCE9dm9pZCBhbmQgUmV0IT1kb250X2NhcmUgYW5kIHRoZSBvcGVyYXRvciBkb2VzIG5vdCByZXR1cm4gdm9pZAotdGVtcGxhdGUgPCB0eXBlbmFtZSBSaHMsIHR5cGVuYW1lIFJldCA+Ci1zdHJ1Y3Qgb3BlcmF0b3JfcmV0dXJuc19SZXQgPCBSaHMsIFJldCwgZmFsc2UgPiB7Ci0gICBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2NvbnZlcnRpYmxlX3RvX1JldChSZXQpOyAvLyB0aGlzIHZlcnNpb24gaXMgcHJlZmVycmVkIGZvciB0eXBlcyBjb252ZXJ0aWJsZSB0byBSZXQKLSAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6bm9fdHlwZSBpc19jb252ZXJ0aWJsZV90b19SZXQoLi4uKTsgLy8gdGhpcyB2ZXJzaW9uIGlzIHVzZWQgb3RoZXJ3aXNlCi0KLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IChzaXplb2YoaXNfY29udmVydGlibGVfdG9fUmV0KE5ETkJPT1NUX1RUX1RSQUlUX09QIG1ha2U8UmhzPigpKSk9PXNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUpKSk7Ci19OwotCi0KLS8vIDUuIGNoZWNrcyBmb3Igb3BlcmF0b3IgZXhpc3RlbmNlCi0vLyBjb25kaXRpb246IFJocyE9dm9pZAotCi0vLyBjaGVja3MgaWYgb3VyIGRlZmluaXRpb24gb2Ygb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1AgaXMgdXNlZCBvciBhbiBvdGhlcgotLy8gZXhpc3Rpbmcgb25lOwotLy8gdGhpcyBpcyBkb25lIHdpdGggcmVkZWZpbml0aW9uIG9mICJvcGVyYXRvciwiIHRoYXQgcmV0dXJucyBub19vcGVyYXRvciBvciBoYXNfb3BlcmF0b3IKLXN0cnVjdCBoYXNfb3BlcmF0b3IgeyB9Owotbm9fb3BlcmF0b3Igb3BlcmF0b3IsKG5vX29wZXJhdG9yLCBoYXNfb3BlcmF0b3IpOwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIFJocyA+Ci1zdHJ1Y3Qgb3BlcmF0b3JfZXhpc3RzIHsKLSAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgY2hlY2soaGFzX29wZXJhdG9yKTsgLy8gdGhpcyB2ZXJzaW9uIGlzIHByZWZlcnJlZCB3aGVuIG9wZXJhdG9yIGV4aXN0cwotICAgc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpub190eXBlIGNoZWNrKG5vX29wZXJhdG9yKTsgLy8gdGhpcyB2ZXJzaW9uIGlzIHVzZWQgb3RoZXJ3aXNlCi0KLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IChzaXplb2YoY2hlY2soKChORE5CT09TVF9UVF9UUkFJVF9PUCBtYWtlPFJocz4oKSksbWFrZTxoYXNfb3BlcmF0b3I+KCkpKSk9PXNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUpKSk7Ci19OwotCi0KLS8vIDYuIG1haW4gdHJhaXQ6IHRvIGF2b2lkIGFueSBjb21waWxhdGlvbiBlcnJvciwgdGhpcyBjbGFzcyBiZWhhdmVzCi0vLyBkaWZmZXJlbnRseSB3aGVuIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QKFJocykgaXMgZm9yYmlkZGVuIGJ5IHRoZQotLy8gc3RhbmRhcmQuCi0vLyBGb3JiaWRkZW5faWYgaXMgYSBib29sIHRoYXQgaXM6Ci0vLyAtIHRydWUgd2hlbiB0aGUgb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1AoUmhzKSBpcyBmb3JiaWRkZW4gYnkgdGhlIHN0YW5kYXJkCi0vLyAgICh3b3VsZCB5aWVsZCBjb21waWxhdGlvbiBlcnJvciBpZiB1c2VkKQotLy8gLSBmYWxzZSBvdGhlcndpc2UKLXRlbXBsYXRlIDwgdHlwZW5hbWUgUmhzLCB0eXBlbmFtZSBSZXQsIGJvb2wgRm9yYmlkZGVuX2lmID4KLXN0cnVjdCB0cmFpdF9pbXBsMTsKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBSaHMsIHR5cGVuYW1lIFJldCA+Ci1zdHJ1Y3QgdHJhaXRfaW1wbDEgPCBSaHMsIFJldCwgdHJ1ZSA+IHsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgUmhzLCB0eXBlbmFtZSBSZXQgPgotc3RydWN0IHRyYWl0X2ltcGwxIDwgUmhzLCBSZXQsIGZhbHNlID4gewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsCi0gICAgICB2YWx1ZSA9ICgKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPAotICAgICAgICAgICAgb3BlcmF0b3JfZXhpc3RzIDwgUmhzID46OnZhbHVlLAotICAgICAgICAgICAgb3BlcmF0b3JfcmV0dXJuc19SZXQgPCBSaHMsIFJldCwgb3BlcmF0b3JfcmV0dXJuc192b2lkIDwgUmhzID46OnZhbHVlID46OnZhbHVlCi0gICAgICAgICA+Ojp2YWx1ZQotICAgICAgKQotICAgKTsKLX07Ci0KLS8vIHNwZWNpYWxpemF0aW9uIG5lZWRzIHRvIGJlIGRlY2xhcmVkIGZvciB0aGUgc3BlY2lhbCB2b2lkIGNhc2UKLXRlbXBsYXRlIDwgdHlwZW5hbWUgUmV0ID4KLXN0cnVjdCB0cmFpdF9pbXBsMSA8IHZvaWQsIFJldCwgZmFsc2UgPiB7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotCi0vLyBkZWZpbmVzIHNvbWUgdHlwZWRlZiBmb3IgY29udmVuaWVuY2UKLXRlbXBsYXRlIDwgdHlwZW5hbWUgUmhzLCB0eXBlbmFtZSBSZXQgPgotc3RydWN0IHRyYWl0X2ltcGwgewotICAgdHlwZWRlZiB0eXBlbmFtZSA6Om5kbmJvb3N0OjpyZW1vdmVfcmVmZXJlbmNlPFJocz46OnR5cGUgUmhzX25vcmVmOwotICAgdHlwZWRlZiB0eXBlbmFtZSA6Om5kbmJvb3N0OjpyZW1vdmVfY3Y8UmhzX25vcmVmPjo6dHlwZSBSaHNfbm9jdjsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgOjpuZG5ib29zdDo6cmVtb3ZlX2N2PCB0eXBlbmFtZSA6Om5kbmJvb3N0OjpyZW1vdmVfcmVmZXJlbmNlPCB0eXBlbmFtZSA6Om5kbmJvb3N0OjpyZW1vdmVfcG9pbnRlcjxSaHNfbm9yZWY+Ojp0eXBlID46OnR5cGUgPjo6dHlwZSBSaHNfbm9wdHI7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAodHJhaXRfaW1wbDEgPCBSaHNfbm9yZWYsIFJldCwgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGID46OnZhbHVlKSk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBpbXBsCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotLy8gdGhpcyBpcyB0aGUgYWNjZXNzaWJsZSBkZWZpbml0aW9uIG9mIHRoZSB0cmFpdCB0byBlbmQgdXNlcgotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMihORE5CT09TVF9UVF9UUkFJVF9OQU1FLCBSaHMsIFJldD06Om5kbmJvb3N0OjpkZXRhaWw6Ok5ETkJPT1NUX0pPSU4oTkROQk9PU1RfVFRfVFJBSVRfTkFNRSxfaW1wbCk6OmRvbnRfY2FyZSwgKDo6bmRuYm9vc3Q6OmRldGFpbDo6TkROQk9PU1RfSk9JTihORE5CT09TVF9UVF9UUkFJVF9OQU1FLF9pbXBsKTo6dHJhaXRfaW1wbCA8IFJocywgUmV0ID46OnZhbHVlKSkKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSMgICBwcmFnbWEgd2FybmluZyAoIHBvcCApCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9hbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX2FuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2MTkxN2UuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX2FuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgYW5kIFN0ZXZlIENsZWFyeSAyMDAwLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfREVUQUlMX0lDRV9BTkRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0RFVEFJTF9JQ0VfQU5EX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSB0eXBlX3RyYWl0cyB7Ci0KLXRlbXBsYXRlIDxib29sIGIxLCBib29sIGIyLCBib29sIGIzID0gdHJ1ZSwgYm9vbCBiNCA9IHRydWUsIGJvb2wgYjUgPSB0cnVlLCBib29sIGI2ID0gdHJ1ZSwgYm9vbCBiNyA9IHRydWU+Ci1zdHJ1Y3QgaWNlX2FuZDsKLQotdGVtcGxhdGUgPGJvb2wgYjEsIGJvb2wgYjIsIGJvb2wgYjMsIGJvb2wgYjQsIGJvb2wgYjUsIGJvb2wgYjYsIGJvb2wgYjc+Ci1zdHJ1Y3QgaWNlX2FuZAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaWNlX2FuZDx0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgdHlwZV90cmFpdHMKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9ERVRBSUxfSUNFX0FORF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9lcS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2VfZXEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOTYyNDBhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9lcS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgYW5kIFN0ZXZlIENsZWFyeSAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9ERVRBSUxfSUNFX0VRX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9ERVRBSUxfSUNFX0VRX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSB0eXBlX3RyYWl0cyB7Ci0KLXRlbXBsYXRlIDxpbnQgYjEsIGludCBiMj4KLXN0cnVjdCBpY2VfZXEKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoYjEgPT0gYjIpKTsKLX07Ci0KLXRlbXBsYXRlIDxpbnQgYjEsIGludCBiMj4KLXN0cnVjdCBpY2VfbmUKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoYjEgIT0gYjIpKTsKLX07Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fSU5DTEFTU19NRU1CRVJfSU5JVElBTElaQVRJT04KLXRlbXBsYXRlIDxpbnQgYjEsIGludCBiMj4gYm9vbCBjb25zdCBpY2VfZXE8YjEsYjI+Ojp2YWx1ZTsKLXRlbXBsYXRlIDxpbnQgYjEsIGludCBiMj4gYm9vbCBjb25zdCBpY2VfbmU8YjEsYjI+Ojp2YWx1ZTsKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSB0eXBlX3RyYWl0cwotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0RFVEFJTF9JQ0VfRVFfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfbm90LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9ub3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZTQ4NzlkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9ub3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIGFuZCBTdGV2ZSBDbGVhcnkgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfREVUQUlMX0lDRV9OT1RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0RFVEFJTF9JQ0VfTk9UX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSB0eXBlX3RyYWl0cyB7Ci0KLXRlbXBsYXRlIDxib29sIGI+Ci1zdHJ1Y3QgaWNlX25vdAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOwotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBpY2Vfbm90PHRydWU+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgdHlwZV90cmFpdHMKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9ERVRBSUxfSUNFX05PVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9vci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfb3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMjI1NWI1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9vci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgYW5kIFN0ZXZlIENsZWFyeSAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9ERVRBSUxfSUNFX09SX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9ERVRBSUxfSUNFX09SX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSB0eXBlX3RyYWl0cyB7Ci0KLXRlbXBsYXRlIDxib29sIGIxLCBib29sIGIyLCBib29sIGIzID0gZmFsc2UsIGJvb2wgYjQgPSBmYWxzZSwgYm9vbCBiNSA9IGZhbHNlLCBib29sIGI2ID0gZmFsc2UsIGJvb2wgYjcgPSBmYWxzZT4KLXN0cnVjdCBpY2Vfb3I7Ci0KLXRlbXBsYXRlIDxib29sIGIxLCBib29sIGIyLCBib29sIGIzLCBib29sIGI0LCBib29sIGI1LCBib29sIGI2LCBib29sIGI3Pgotc3RydWN0IGljZV9vcgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOwotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBpY2Vfb3I8ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2U+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgdHlwZV90cmFpdHMKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9ERVRBSUxfSUNFX09SX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaXNfZnVuY3Rpb25fcHRyX2hlbHBlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pc19mdW5jdGlvbl9wdHJfaGVscGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjI2MzI1NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pc19mdW5jdGlvbl9wdHJfaGVscGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyMCArMCwwIEBACi0KLS8vICBDb3B5cmlnaHQgMjAwMCBKb2huIE1hZGRvY2sgKGpvaG5Aam9obm1hZGRvY2suY28udWspCi0vLyAgQ29weXJpZ2h0IDIwMDIgQWxla3NleSBHdXJ0b3ZveSAoYWd1cnRvdm95QG1ldGEtY29tbS5jb20pCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0lTX0lURVJBVElORykKLQotLy8vLy8gaGVhZGVyIGJvZHkKLQotI2lmbmRlZiBORE5CT09TVF9UVF9ERVRBSUxfSVNfRlVOQ1RJT05fUFRSX0hFTFBFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfREVUQUlMX0lTX0ZVTkNUSU9OX1BUUl9IRUxQRVJfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9UVF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtX3BhcmFtcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbW1hX2lmLmhwcD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIHR5cGVfdHJhaXRzIHsKLQotdGVtcGxhdGUgPGNsYXNzIFI+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9UVF9QUkVQUk9DRVNTSU5HX01PREUpCi0vLyBwcmVwcm9jZXNzb3ItZ2VuZXJhdGVkIHBhcnQsIGRvbid0IGVkaXQgYnkgaGFuZCEKLQotdGVtcGxhdGUgPGNsYXNzIFIgPgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiA+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggLi4uKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMD4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCk+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMD4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAuLi4pPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDE+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSk+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxPgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLi4uKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDI+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMj4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLi4uKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMz4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyk+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMz4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAuLi4pPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQ+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCk+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0Pgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLi4uKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDU+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1KT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNT4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLi4uKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNj4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNj4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAuLi4pPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDc+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyk+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3Pgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLi4uKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDg+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4KT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOD4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLi4uKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOT4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSk+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOT4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAuLi4pPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwPgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwPgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIC4uLik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTE+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEpPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTE+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLi4uKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMj4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMj4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAuLi4pPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzPgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzPgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIC4uLik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQ+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQpPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQ+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLi4uKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNT4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSk+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNT4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAuLi4pPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2Pgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2KT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2Pgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IC4uLik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTc+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcpPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTc+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLi4uKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOD4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCk+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOD4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAuLi4pPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5Pgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5KT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5Pgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IC4uLik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjA+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjApPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjA+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLi4uKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMT4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSk+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMT4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAuLi4pPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyPgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyPgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyIC4uLik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjM+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMpPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjM+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLi4uKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyND4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCk+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyND4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAuLi4pPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZWxzZQotCi0jdW5kZWYgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsICgwLCAyNSwgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pc19mdW5jdGlvbl9wdHJfaGVscGVyLmhwcCIpKQotI2luY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9QUkVQUk9DRVNTSU5HX01PREUKLQotfSAvLyBuYW1lc3BhY2UgdHlwZV90cmFpdHMKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9ERVRBSUxfSVNfRlVOQ1RJT05fUFRSX0hFTFBFUl9IUFBfSU5DTFVERUQKLQotLy8vLy8gaXRlcmF0aW9uCi0KLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVIgTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OKDEpCi0KLXRlbXBsYXRlIDxjbGFzcyBSIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCk+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLUAjaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKT4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkgLi4uKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLUAjZW5kaWYKLSN1bmRlZiBORE5CT09TVF9QUF9DT1VOVEVSCi0jZW5kaWYgLy8gTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pc19mdW5jdGlvbl9wdHJfdGVzdGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2lzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNzlmOTA3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2lzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjU0ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgRGF2ZSBBYnJhaGFtcywgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgCi0vLyAgQWxla3NleSBHdXJ0b3ZveSwgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4gIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0lTX0lURVJBVElORykKLQotLy8vLy8gaGVhZGVyIGJvZHkKLQotI2lmbmRlZiBORE5CT09TVF9UVF9ERVRBSUxfSVNfRlVOQ1RJT05fUFRSX1RFU1RFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfREVUQUlMX0lTX0ZVTkNUSU9OX1BUUl9URVNURVJfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwveWVzX25vX3R5cGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbmZpZy5ocHA+Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1RUX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VudW1fcGFyYW1zLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29tbWFfaWYuaHBwPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgdHlwZV90cmFpdHMgewotCi0vLyBOb3RlIGl0IGlzIGFjY2VwdGFibGUgdG8gdXNlIGVsbGlwc2lzIGhlcmUsIHNpbmNlIHRoZSBhcmd1bWVudCB3aWxsCi0vLyBhbHdheXMgYmUgYSBwb2ludGVyIHR5cGUgb2Ygc29tZSBzb3J0IChKTSAyMDA1LzA2LzA0KToKLW5vX3R5cGUgTkROQk9PU1RfVFRfREVDTCBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKC4uLik7Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9UVF9QUkVQUk9DRVNTSU5HX01PREUpCi0vLyBwcmUtcHJvY2Vzc2VkIGNvZGUsIGRvbid0IGVkaXQsIHRyeSBHTlUgY3BwIHdpdGggCi0vLyBjcHAgLUkuLi8uLi8uLi8gLURORE5CT09TVF9UVF9QUkVQUk9DRVNTSU5HX01PREUgLXggYysrIC1QIGZpbGVuYW1lCi0KLXRlbXBsYXRlIDxjbGFzcyBSID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoKSk7Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggLi4uKSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSgpKTsKLXRlbXBsYXRlIDxjbGFzcyBSID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIC4uLikpOwotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCkpOwotdGVtcGxhdGUgPGNsYXNzIFIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwKSk7Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAuLi4pKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwIC4uLikpOwotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDApKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwIC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxKSk7Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLi4uKSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxIC4uLikpOwotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxIC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIpKTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLi4uKSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLi4uKSk7Ci0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyIC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyIC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzKSk7Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAuLi4pKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzIC4uLikpOwotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzIC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMykpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0KSk7Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLi4uKSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0IC4uLikpOwotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0IC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUpKTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLi4uKSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLi4uKSk7Ci0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2KSk7Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAuLi4pKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2IC4uLikpOwotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2IC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNikpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3KSk7Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLi4uKSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3IC4uLikpOwotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNykpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3IC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDgpKTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLi4uKSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLi4uKSk7Ci0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5KSk7Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAuLi4pKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5IC4uLikpOwotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5IC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTApKTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIC4uLikpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTApKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLi4uKSk7Ci0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSkpOwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLi4uKSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAuLi4pKTsKLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyKSk7Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAuLi4pKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyIC4uLikpOwotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyIC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMikpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMpKTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIC4uLikpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLi4uKSk7Ci0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMykpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCkpOwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLi4uKSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAuLi4pKTsKLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1KSk7Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAuLi4pKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1IC4uLikpOwotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1IC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYpKTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IC4uLikpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLi4uKSk7Ci0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNikpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNykpOwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLi4uKSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNykpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAuLi4pKTsKLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4KSk7Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAuLi4pKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4IC4uLikpOwotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTgpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4IC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkpKTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IC4uLikpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLi4uKSk7Ci0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCkpOwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLi4uKSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAuLi4pKTsKLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjApKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwIC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxKSk7Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAuLi4pKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxIC4uLikpOwotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxIC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIpKTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyIC4uLikpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLi4uKSk7Ci0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMikpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMykpOwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLi4uKSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMykpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAuLi4pKTsKLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzIC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0KSk7Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAuLi4pKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0IC4uLikpOwotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0IC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLi4uKSk7Ci0jZW5kaWYKLSNlbHNlCi0KLSNkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywgKDAsIDI1LCAibmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2lzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIuaHBwIikpCi0jaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX1BSRVBST0NFU1NJTkdfTU9ERQotCi19IC8vIG5hbWVzcGFjZSB0eXBlX3RyYWl0cwotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0RFVEFJTF9JU19GVU5DVElPTl9QVFJfVEVTVEVSX0hQUF9JTkNMVURFRAotCi0vLy8vLyBpdGVyYXRpb24KLQotI2Vsc2UKLSNkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUiBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkKLSN1bmRlZiBfX3N0ZGNhbGwKLSN1bmRlZiBfX2Zhc3RjYWxsCi0jdW5kZWYgX19jZGVjbAotCi10ZW1wbGF0ZSA8Y2xhc3MgUiBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSkpOwotQCNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSAuLi4pKTsKLUAjZW5kaWYKLUAjaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSAuLi4pKTsKLUAjaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkpKTsKLXRlbXBsYXRlIDxjbGFzcyBSIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSAuLi4pKTsKLUAjZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSkpOwotdGVtcGxhdGUgPGNsYXNzIFIgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpIC4uLikpOwotQCNlbmRpZgotCi0jdW5kZWYgTkROQk9PU1RfUFBfQ09VTlRFUgotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTAwOGUwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2lzX21lbV9mdW5fcG9pbnRlcl9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDgxNyArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IERhdmUgQWJyYWhhbXMsIFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIAotLy8gIEFsZWtzZXkgR3VydG92b3ksIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuICAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9QUF9JU19JVEVSQVRJTkcpCi0KLS8vLy8vIGhlYWRlciBib2R5Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfREVUQUlMX0lTX01FTV9GVU5fUE9JTlRFUl9JTVBMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9ERVRBSUxfSVNfTUVNX0ZVTl9QT0lOVEVSX0lNUExfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9UVF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtX3BhcmFtcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbW1hX2lmLmhwcD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIHR5cGVfdHJhaXRzIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGwKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVFRfUFJFUFJPQ0VTU0lOR19NT0RFKQotLy8gcHJlLXByb2Nlc3NlZCBjb2RlLCBkb24ndCBlZGl0LCB0cnkgR05VIGNwcCB3aXRoIAotLy8gY3BwIC1JLi4vLi4vLi4vIC1ETkROQk9PU1RfVFRfUFJFUFJPQ0VTU0lOR19NT0RFIC14IGMrKyAtUCBmaWxlbmFtZQotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCAuLi4pID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVFRfTk9fQ1ZfRlVOQ19URVNUKQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCkgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSgpIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggLi4uKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggLi4uKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDApID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAuLi4pID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVFRfTk9fQ1ZfRlVOQ19URVNUKQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDApIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDApIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDApIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwIC4uLikgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAuLi4pIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLi4uKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxIC4uLikgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9UVF9OT19DVl9GVU5DX1RFU1QpCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDE+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEpIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSkgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxIC4uLikgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDE+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAuLi4pIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDI+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAuLi4pID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVFRfTk9fQ1ZfRlVOQ19URVNUKQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDI+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMikgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIpIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLi4uKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLi4uKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMpID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAuLi4pID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVFRfTk9fQ1ZfRlVOQ19URVNUKQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMpIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMpIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMpIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDM+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzIC4uLikgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAuLi4pIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLi4uKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0KSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0IC4uLikgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9UVF9OT19DVl9GVU5DX1RFU1QpCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQ+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQpIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0KSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUND4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCkgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0IC4uLikgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQ+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUND4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAuLi4pIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1KSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDU+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAuLi4pID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVFRfTk9fQ1ZfRlVOQ19URVNUKQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDU+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSkgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1KSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUpIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLi4uKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLi4uKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYpID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAuLi4pID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVFRfTk9fQ1ZfRlVOQ19URVNUKQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYpIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYpIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYpIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDY+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2IC4uLikgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAuLi4pIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLi4uKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3KSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3IC4uLikgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9UVF9OT19DVl9GVU5DX1RFU1QpCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDc+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcpIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3KSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNykgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3IC4uLikgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDc+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAuLi4pIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4KSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDg+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAuLi4pID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVFRfTk9fQ1ZfRlVOQ19URVNUKQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDg+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCkgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4KSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDgpIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLi4uKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLi4uKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkpID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAuLi4pID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVFRfTk9fQ1ZfRlVOQ19URVNUKQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkpIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkpIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkpIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDk+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5IC4uLikgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAuLi4pIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLi4uKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTApID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAuLi4pID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVFRfTk9fQ1ZfRlVOQ19URVNUKQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTApIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTApIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTApIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIC4uLikgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAuLi4pIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLi4uKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEpID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAuLi4pID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVFRfTk9fQ1ZfRlVOQ19URVNUKQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEpIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEpIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEpIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTE+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIC4uLikgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAuLi4pIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLi4uKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIpID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAuLi4pID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVFRfTk9fQ1ZfRlVOQ19URVNUKQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIpIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIpIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIpIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTI+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyIC4uLikgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAuLi4pIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLi4uKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMpID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAuLi4pID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVFRfTk9fQ1ZfRlVOQ19URVNUKQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMpIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMpIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMpIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTM+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIC4uLikgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAuLi4pIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLi4uKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxND4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQpID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAuLi4pID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVFRfTk9fQ1ZfRlVOQ19URVNUKQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxND4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQpIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxND4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQpIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxND4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQpIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQ+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IC4uLikgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAuLi4pIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxND4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLi4uKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUpID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAuLi4pID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVFRfTk9fQ1ZfRlVOQ19URVNUKQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUpIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUpIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUpIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTU+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1IC4uLikgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAuLi4pIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLi4uKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYpID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAuLi4pID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVFRfTk9fQ1ZfRlVOQ19URVNUKQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYpIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYpIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYpIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTY+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IC4uLikgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAuLi4pIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLi4uKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcpID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAuLi4pID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVFRfTk9fQ1ZfRlVOQ19URVNUKQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcpIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcpIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcpIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTc+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IC4uLikgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAuLi4pIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLi4uKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTgpID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAuLi4pID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVFRfTk9fQ1ZfRlVOQ19URVNUKQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTgpIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTgpIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTgpIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTg+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4IC4uLikgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAuLi4pIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLi4uKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkpID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAuLi4pID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVFRfTk9fQ1ZfRlVOQ19URVNUKQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkpIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkpIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkpIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTk+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IC4uLikgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAuLi4pIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLi4uKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjApID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAuLi4pID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVFRfTk9fQ1ZfRlVOQ19URVNUKQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjApIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjApIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjApIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwIC4uLikgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAuLi4pIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLi4uKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEpID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAuLi4pID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVFRfTk9fQ1ZfRlVOQ19URVNUKQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEpIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEpIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEpIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjE+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxIC4uLikgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAuLi4pIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLi4uKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIpID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAuLi4pID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVFRfTk9fQ1ZfRlVOQ19URVNUKQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIpIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIpIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIpIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjI+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyIC4uLikgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAuLi4pIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLi4uKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMpID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAuLi4pID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVFRfTk9fQ1ZfRlVOQ19URVNUKQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMpIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMpIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMpIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjM+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzIC4uLikgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAuLi4pIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLi4uKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyND4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQpID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAuLi4pID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVFRfTk9fQ1ZfRlVOQ19URVNUKQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyND4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQpIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyND4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQpIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyND4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQpIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQ+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0IC4uLikgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAuLi4pIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyND4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLi4uKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLSNlbmRpZgotCi0jZWxzZQotCi0jdW5kZWYgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsICgwLCAyNSwgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pc19tZW1fZnVuX3BvaW50ZXJfaW1wbC5ocHAiKSkKLSNpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfUFJFUFJPQ0VTU0lOR19NT0RFCi0KLX0gLy8gbmFtZXNwYWNlIHR5cGVfdHJhaXRzCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfREVUQUlMX0lTX01FTV9GVU5fUE9JTlRFUl9JTVBMX0hQUF9JTkNMVURFRAotCi0vLy8vLyBpdGVyYXRpb24KLQotI2Vsc2UKLSNkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUiBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci1AI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCk+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSAuLi4pID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLUAjZW5kaWYKLQotQCNpZiAhZGVmaW5lZChORE5CT09TVF9UVF9OT19DVl9GVU5DX1RFU1QpCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkpIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCk+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSkgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi1AI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCk+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpIC4uLikgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkgLi4uKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci1AI2VuZGlmCi1AI2VuZGlmCi0KLSN1bmRlZiBORE5CT09TVF9QUF9DT1VOVEVSCi0jZW5kaWYgLy8gTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2lzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3Rlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwNzQ0ZGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3Rlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNzU5ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgRGF2ZSBBYnJhaGFtcywgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgCi0vLyAgQWxla3NleSBHdXJ0b3ZveSwgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4gIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0lTX0lURVJBVElORykKLQotLy8vLy8gaGVhZGVyIGJvZHkKLQotI2lmbmRlZiBORE5CT09TVF9UVF9ERVRBSUxfSVNfTUVNX0ZVTl9QT0lOVEVSX1RFU1RFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfREVUQUlMX0lTX01FTV9GVU5fUE9JTlRFUl9URVNURVJfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwveWVzX25vX3R5cGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbmZpZy5ocHA+Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1RUX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VudW1fcGFyYW1zLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29tbWFfaWYuaHBwPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgdHlwZV90cmFpdHMgewotCi1ub190eXBlIE5ETkJPT1NUX1RUX0RFQ0wgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlciguLi4pOwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVFRfUFJFUFJPQ0VTU0lOR19NT0RFKQotLy8gcHJlLXByb2Nlc3NlZCBjb2RlLCBkb24ndCBlZGl0LCB0cnkgR05VIGNwcCB3aXRoIAotLy8gY3BwIC1JLi4vLi4vLi4vIC1ETkROQk9PU1RfVFRfUFJFUFJPQ0VTU0lOR19NT0RFIC14IGMrKyAtUCBmaWxlbmFtZQotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCkgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSgpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSgpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSgpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSgpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDApIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCkgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDApIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDApKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDApIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSkgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMikgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMikgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMikgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMykpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMykgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMykpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMykgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMykgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMykgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMykgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMykgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCkgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1KSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNikgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNikgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNykpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNykgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNykgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNykgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNykgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNykpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNykgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNykgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDgpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4KSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDgpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSkgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTApIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTApKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTApIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTApIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEpIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMikgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMikgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMykgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMykgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMykpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMykgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQpIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSkgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2KSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNikgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNykgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcpIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNykpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNykgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNykgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTgpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCkgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTgpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTgpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTgpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5KSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjApKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjApIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjApKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjApIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjApIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjApIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjApIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjApIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSkgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMikgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMykgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMpIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMykpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMykgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMykgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCkgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0KLSNlbHNlCi0KLSNkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywgKDAsIDI1LCAibmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2lzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIuaHBwIikpCi0jaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX1BSRVBST0NFU1NJTkdfTU9ERQotCi19IC8vIG5hbWVzcGFjZSB0eXBlX3RyYWl0cwotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0RFVEFJTF9JU19NRU1fRlVOX1BPSU5URVJfVEVTVEVSX0hQUF9JTkNMVURFRAotCi0vLy8vLyBpdGVyYXRpb24KLQotI2Vsc2UKLSNkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUiBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkKLSN1bmRlZiBfX3N0ZGNhbGwKLSN1bmRlZiBfX2Zhc3RjYWxsCi0jdW5kZWYgX19jZGVjbAotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSkgY29uc3Qgdm9sYXRpbGUpOwotCi1AI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotQCNlbmRpZgotQCNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUyAvLyBPdGhlciBjYWxsaW5nIGNvbnZlbnRpb25zIHVzZWQgYnkgTVMgY29tcGF0aWJsZSBjb21waWxlcnM6Ci10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotCi1AI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotQCNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci1AI2VuZGlmCi0KLSN1bmRlZiBORE5CT09TVF9QUF9DT1VOVEVSCi0jZW5kaWYgLy8gTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9zaXplX3RfdHJhaXRfZGVmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3NpemVfdF90cmFpdF9kZWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MDkwOGU3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3NpemVfdF90cmFpdF9kZWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotCi0vLyBOTyBJTkNMVURFIEdVQVJEUywgVEhFIEhFQURFUiBJUyBJTlRFTkRFRCBGT1IgTVVMVElQTEUgSU5DTFVTSU9OCi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAkU291cmNlJAotLy8gJERhdGU6IDIwMTEtMDQtMjUgMDU6MjY6NDggLTA3MDAgKE1vbiwgMjUgQXByIDIwMTEpICQKLS8vICRSZXZpc2lvbjogNzE0ODEgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3RlbXBsYXRlX2FyaXR5X3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ludGVncmFsX2NvbnN0YW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3NpemVfdC5ocHA+Ci0KLSNpbmNsdWRlIDxjc3RkZGVmPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVNWQykgfHwgTkROQk9PU1RfTVNWQyA+PSAxMzAwCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9TSVpFX1RfQkFTRShDKSBwdWJsaWMgOjpuZG5ib29zdDo6aW50ZWdyYWxfY29uc3RhbnQ8c3RkOjpzaXplX3QsQz4KLSMgICBkZWZpbmUgTkROQk9PU1RfVFRfQVVYX1NJWkVfVF9UUkFJVF9WQUxVRV9ERUNMKEMpIC8qKi8KLSNlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9TSVpFX1RfQkFTRShDKSBwdWJsaWMgOjpuZG5ib29zdDo6bXBsOjpzaXplX3Q8Qz4KLSMgICBkZWZpbmUgTkROQk9PU1RfVFRfQVVYX1NJWkVfVF9UUkFJVF9WQUxVRV9ERUNMKEMpIFwKLSAgICB0eXBlZGVmIDo6bmRuYm9vc3Q6Om1wbDo6c2l6ZV90PEM+IGJhc2VfOyBcCi0gICAgdXNpbmcgYmFzZV86OnZhbHVlOyBcCi0gICAgLyoqLwotI2VuZGlmCi0KLQotI2RlZmluZSBORE5CT09TVF9UVF9BVVhfU0laRV9UX1RSQUlUX0RFRjEodHJhaXQsVCxDKSBcCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCB0cmFpdCBcCi0gICAgOiBORE5CT09TVF9UVF9BVVhfU0laRV9UX0JBU0UoQykgXAoteyBcCi1wdWJsaWM6XAotICAgIE5ETkJPT1NUX1RUX0FVWF9TSVpFX1RfVFJBSVRfVkFMVUVfREVDTChDKSBcCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLHRyYWl0LChUKSkgXAotfTsgXAotXAotTkROQk9PU1RfVFRfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMSx0cmFpdCkgXAotLyoqLwotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9TSVpFX1RfVFJBSVRfU1BFQzEodHJhaXQsc3BlYyxDKSBcCi10ZW1wbGF0ZTw+IHN0cnVjdCB0cmFpdDxzcGVjPiBcCi0gICAgOiBORE5CT09TVF9UVF9BVVhfU0laRV9UX0JBU0UoQykgXAoteyBcCi1wdWJsaWM6XAotICAgIE5ETkJPT1NUX1RUX0FVWF9TSVpFX1RfVFJBSVRfVkFMVUVfREVDTChDKSBcCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKDEsdHJhaXQsKHNwZWMpKSBcCi19OyBcCi0vKiovCi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfQVVYX1NJWkVfVF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEocGFyYW0sdHJhaXQsc3BlYyxDKSBcCi10ZW1wbGF0ZTwgcGFyYW0gPiBzdHJ1Y3QgdHJhaXQ8c3BlYz4gXAotICAgIDogTkROQk9PU1RfVFRfQVVYX1NJWkVfVF9CQVNFKEMpIFwKLXsgXAotfTsgXAotLyoqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvc2l6ZV90X3RyYWl0X3VuZGVmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3NpemVfdF90cmFpdF91bmRlZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhYjE0ZDkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvc2l6ZV90X3RyYWl0X3VuZGVmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLQotLy8gTk8gSU5DTFVERSBHVUFSRFMsIFRIRSBIRUFERVIgSVMgSU5URU5ERUQgRk9SIE1VTFRJUExFIElOQ0xVU0lPTgotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gJFNvdXJjZSQKLS8vICREYXRlOiAyMDA0LTA5LTAyIDA4OjQxOjM3IC0wNzAwIChUaHUsIDAyIFNlcCAyMDA0KSAkCi0vLyAkUmV2aXNpb246IDI0ODc0ICQKLQotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9TSVpFX1RfVFJBSVRfREVGMQotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9TSVpFX1RfVFJBSVRfU1BFQzEKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfU0laRV9UX1RSQUlUX1BBUlRJQUxfU1BFQzFfMQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdGVtcGxhdGVfYXJpdHlfc3BlYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90ZW1wbGF0ZV9hcml0eV9zcGVjLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGZlYjhkMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90ZW1wbGF0ZV9hcml0eV9zcGVjLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLQotLy8gTk8gSU5DTFVERSBHVUFSRFMsIFRIRSBIRUFERVIgSVMgSU5URU5ERUQgRk9SIE1VTFRJUExFIElOQ0xVU0lPTgotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3RlbXBsYXRlX2FyaXR5X2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2xhbWJkYS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL292ZXJsb2FkX3Jlc29sdXRpb24uaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0ZVTExfTEFNQkRBX1NVUFBPUlQpIFwKLSAgICAmJiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfQlJPS0VOX09WRVJMT0FEX1JFU09MVVRJT04pCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKGksIG5hbWUpIFwKLW5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsgXAotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaSwgdHlwZW5hbWUgVCkgPiBcCi1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHk8IFwKLSAgICAgICAgICBuYW1lPCBORE5CT09TVF9NUExfUFBfUEFSQU1TKGksIFQpID4gXAotICAgICAgICA+IFwKLSAgICA6IGludF88aT4gXAoteyBcCi19OyBcCi19fSBcCi0vKiovCi0jZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9UVF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyhpLCBuYW1lKSAvKiovCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfZGVmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfZGVmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODNkMDQ0NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X2RlZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0KLS8vIE5PIElOQ0xVREUgR1VBUkRTLCBUSEUgSEVBREVSIElTIElOVEVOREVEIEZPUiBNVUxUSVBMRSBJTkNMVVNJT04KLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICRTb3VyY2UkCi0vLyAkRGF0ZTogMjAxMS0wNC0yNSAwNToyNjo0OCAtMDcwMCAoTW9uLCAyNSBBcHIgMjAxMSkgJAotLy8gJFJldmlzaW9uOiA3MTQ4MSAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdGVtcGxhdGVfYXJpdHlfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0RFRjEodHJhaXQsVCxyZXN1bHQpIFwKLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHRyYWl0IFwKLXsgXAotcHVibGljOlwKLSAgICB0eXBlZGVmIHJlc3VsdCB0eXBlOyBcCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLHRyYWl0LChUKSkgXAotfTsgXAotXAotTkROQk9PU1RfVFRfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMSx0cmFpdCkgXAotLyoqLwotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1NQRUMxKHRyYWl0LHNwZWMscmVzdWx0KSBcCi10ZW1wbGF0ZTw+IHN0cnVjdCB0cmFpdDxzcGVjPiBcCi17IFwKLXB1YmxpYzpcCi0gICAgdHlwZWRlZiByZXN1bHQgdHlwZTsgXAotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygxLHRyYWl0LChzcGVjKSkgXAotfTsgXAotLyoqLwotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0lNUExfU1BFQzEodHJhaXQsc3BlYyxyZXN1bHQpIFwKLXRlbXBsYXRlPD4gc3RydWN0IHRyYWl0IyNfaW1wbDxzcGVjPiBcCi17IFwKLXB1YmxpYzpcCi0gICAgdHlwZWRlZiByZXN1bHQgdHlwZTsgXAotfTsgXAotLyoqLwotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMShwYXJhbSx0cmFpdCxzcGVjLHJlc3VsdCkgXAotdGVtcGxhdGU8IHBhcmFtID4gc3RydWN0IHRyYWl0PHNwZWM+IFwKLXsgXAotcHVibGljOlwKLSAgICB0eXBlZGVmIHJlc3VsdCB0eXBlOyBcCi19OyBcCi0vKiovCi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHBhcmFtMSxwYXJhbTIsdHJhaXQsc3BlYyxyZXN1bHQpIFwKLXRlbXBsYXRlPCBwYXJhbTEsIHBhcmFtMiA+IHN0cnVjdCB0cmFpdDxzcGVjPiBcCi17IFwKLXB1YmxpYzpcCi0gICAgdHlwZWRlZiByZXN1bHQ7IFwKLX07IFwKLS8qKi8KLQotI2RlZmluZSBORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9JTVBMX1BBUlRJQUxfU1BFQzFfMShwYXJhbSx0cmFpdCxzcGVjLHJlc3VsdCkgXAotdGVtcGxhdGU8IHBhcmFtID4gc3RydWN0IHRyYWl0IyNfaW1wbDxzcGVjPiBcCi17IFwKLXB1YmxpYzpcCi0gICAgdHlwZWRlZiByZXN1bHQgdHlwZTsgXAotfTsgXAotLyoqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF91bmRlZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X3VuZGVmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTY0NjMzMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X3VuZGVmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLQotLy8gTk8gSU5DTFVERSBHVUFSRFMsIFRIRSBIRUFERVIgSVMgSU5URU5ERUQgRk9SIE1VTFRJUExFIElOQ0xVU0lPTgotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gJFNvdXJjZSQKLS8vICREYXRlOiAyMDA0LTA5LTAyIDA4OjQxOjM3IC0wNzAwIChUaHUsIDAyIFNlcCAyMDA0KSAkCi0vLyAkUmV2aXNpb246IDI0ODc0ICQKLQotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0RFRjEKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9TUEVDMQotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0lNUExfU1BFQzEKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzEKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzIKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9JTVBMX1BBUlRJQUxfU1BFQzFfMQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvd3JhcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC93cmFwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjE2YjY1Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC93cmFwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDIuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9ERVRBSUxfV1JBUF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfREVUQUlMX1dSQVBfSFBQX0lOQ0xVREVECi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgdHlwZV90cmFpdHMgewotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IHdyYXAge307Ci0KLX19IC8vIG5hbWVzcGFjZSBuZG5ib29zdDo6dHlwZV90cmFpdHMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0RFVEFJTF9XUkFQX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwveWVzX25vX3R5cGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwveWVzX25vX3R5cGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDk4NzdkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3llc19ub190eXBlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIGFuZCBTdGV2ZSBDbGVhcnkgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0vLwotLy8gIG1hY3JvcyBhbmQgaGVscGVycyBmb3Igd29ya2luZyB3aXRoIGludGVncmFsLWNvbnN0YW50LWV4cHJlc3Npb25zLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0RFVEFJTF9ZRVNfTk9fVFlQRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfREVUQUlMX1lFU19OT19UWVBFX0hQUF9JTkNMVURFRAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIHR5cGVfdHJhaXRzIHsKLQotdHlwZWRlZiBjaGFyIHllc190eXBlOwotc3RydWN0IG5vX3R5cGUKLXsKLSAgIGNoYXIgcGFkZGluZ1s4XTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIHR5cGVfdHJhaXRzCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfREVUQUlMX1lFU19OT19UWVBFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9leHRlbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9leHRlbnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NGRlNTQ4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZXh0ZW50LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NSArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDA1LiAgCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfRVhURU5UX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9FWFRFTlRfSFBQX0lOQ0xVREVECi0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9zaXplX3RfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRldGFpbHsKLQotI2lmIGRlZmluZWQoIF9fQ09ERUdFQVJDX18gKQotICAgIC8vIHdyYXAgdGhlIGltcGwgYXMgbWFpbiB0cmFpdCBwcm92aWRlcyBhZGRpdGlvbmFsIE1QTCBsYW1iZGEgc3VwcG9ydAotICAgIHRlbXBsYXRlIDwgdHlwZW5hbWUgVCwgc3RkOjpzaXplX3QgTiA+Ci0gICAgc3RydWN0IGV4dGVudF9pbXAgewotICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjpzaXplX3QgdmFsdWUgPSBfX2FycmF5X2V4dGVudChULCBOKTsKLSAgICB9OwotCi0jZWxzZQotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgc3RkOjpzaXplX3QgTj4KLXN0cnVjdCBleHRlbnRfaW1wCi17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gMCk7Ci19OwotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0FSUkFZX1RZUEVfU1BFQ0lBTElaQVRJT05TKQotdGVtcGxhdGUgPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IFIsIHN0ZDo6c2l6ZV90IE4+Ci1zdHJ1Y3QgZXh0ZW50X2ltcDxUW1JdLCBOPgotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9ICg6Om5kbmJvb3N0OjpkZXRhaWw6OmV4dGVudF9pbXA8VCwgTi0xPjo6dmFsdWUpKTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBzdGQ6OnNpemVfdCBSLCBzdGQ6OnNpemVfdCBOPgotc3RydWN0IGV4dGVudF9pbXA8VCBjb25zdFtSXSwgTj4KLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSAoOjpuZG5ib29zdDo6ZGV0YWlsOjpleHRlbnRfaW1wPFQsIE4tMT46OnZhbHVlKSk7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgc3RkOjpzaXplX3QgUiwgc3RkOjpzaXplX3QgTj4KLXN0cnVjdCBleHRlbnRfaW1wPFQgdm9sYXRpbGVbUl0sIE4+Ci17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gKDo6bmRuYm9vc3Q6OmRldGFpbDo6ZXh0ZW50X2ltcDxULCBOLTE+Ojp2YWx1ZSkpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IFIsIHN0ZDo6c2l6ZV90IE4+Ci1zdHJ1Y3QgZXh0ZW50X2ltcDxUIGNvbnN0IHZvbGF0aWxlW1JdLCBOPgotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9ICg6Om5kbmJvb3N0OjpkZXRhaWw6OmV4dGVudF9pbXA8VCwgTi0xPjo6dmFsdWUpKTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBzdGQ6OnNpemVfdCBSPgotc3RydWN0IGV4dGVudF9pbXA8VFtSXSwwPgotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9IFIpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IFI+Ci1zdHJ1Y3QgZXh0ZW50X2ltcDxUIGNvbnN0W1JdLCAwPgotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9IFIpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IFI+Ci1zdHJ1Y3QgZXh0ZW50X2ltcDxUIHZvbGF0aWxlW1JdLCAwPgotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9IFIpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IFI+Ci1zdHJ1Y3QgZXh0ZW50X2ltcDxUIGNvbnN0IHZvbGF0aWxlW1JdLCAwPgotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9IFIpOwotfTsKLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPCAweDYwMCkgJiYgIWRlZmluZWQoX19JQk1DUFBfXykgJiYgICFORE5CT09TVF9XT1JLQVJPVU5EKF9fRE1DX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDg0MCkpICYmICFkZWZpbmVkKF9fTVdFUktTX18pCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgc3RkOjpzaXplX3QgTj4KLXN0cnVjdCBleHRlbnRfaW1wPFRbXSwgTj4KLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSAoOjpuZG5ib29zdDo6ZGV0YWlsOjpleHRlbnRfaW1wPFQsIE4tMT46OnZhbHVlKSk7Ci19OwotdGVtcGxhdGUgPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4+Ci1zdHJ1Y3QgZXh0ZW50X2ltcDxUIGNvbnN0W10sIE4+Ci17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gKDo6bmRuYm9vc3Q6OmRldGFpbDo6ZXh0ZW50X2ltcDxULCBOLTE+Ojp2YWx1ZSkpOwotfTsKLXRlbXBsYXRlIDxjbGFzcyBULCBzdGQ6OnNpemVfdCBOPgotc3RydWN0IGV4dGVudF9pbXA8VCB2b2xhdGlsZVtdLCBOPgotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9ICg6Om5kbmJvb3N0OjpkZXRhaWw6OmV4dGVudF9pbXA8VCwgTi0xPjo6dmFsdWUpKTsKLX07Ci10ZW1wbGF0ZSA8Y2xhc3MgVCwgc3RkOjpzaXplX3QgTj4KLXN0cnVjdCBleHRlbnRfaW1wPFQgY29uc3Qgdm9sYXRpbGVbXSwgTj4KLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSAoOjpuZG5ib29zdDo6ZGV0YWlsOjpleHRlbnRfaW1wPFQsIE4tMT46OnZhbHVlKSk7Ci19OwotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgZXh0ZW50X2ltcDxUW10sIDA+Ci17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gMCk7Ci19OwotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgZXh0ZW50X2ltcDxUIGNvbnN0W10sIDA+Ci17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gMCk7Ci19OwotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgZXh0ZW50X2ltcDxUIHZvbGF0aWxlW10sIDA+Ci17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gMCk7Ci19OwotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgZXh0ZW50X2ltcDxUIGNvbnN0IHZvbGF0aWxlW10sIDA+Ci17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gMCk7Ci19OwotI2VuZGlmCi0jZW5kaWYKLQotI2VuZGlmICAvLyBub24tQ29kZUdlYXIgaW1wbGVtZW50YXRpb24KLX0gICAvLyA6Om5kbmJvb3N0OjpkZXRhaWwKLQotdGVtcGxhdGUgPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4gPSAwPgotc3RydWN0IGV4dGVudAotICAgOiBwdWJsaWMgOjpuZG5ib29zdDo6aW50ZWdyYWxfY29uc3RhbnQ8c3RkOjpzaXplX3QsIDo6bmRuYm9vc3Q6OmRldGFpbDo6ZXh0ZW50X2ltcDxULE4+Ojp2YWx1ZT4KLXsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkgCi0gICB0eXBlZGVmIDo6bmRuYm9vc3Q6OmludGVncmFsX2NvbnN0YW50PHN0ZDo6c2l6ZV90LCA6Om5kbmJvb3N0OjpkZXRhaWw6OmV4dGVudF9pbXA8VCxOPjo6dmFsdWU+IGJhc2VfOyAKLSAgIHVzaW5nIGJhc2VfOjp2YWx1ZTsKLSNlbmRpZgotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSxleHRlbnQsKFQpKQotfTsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9zaXplX3RfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfTUVNQkVSX0ZVTkNUSU9OX1BPSU5URVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2Zsb2F0aW5nX3BvaW50X3Byb21vdGlvbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2Zsb2F0aW5nX3BvaW50X3Byb21vdGlvbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3NzRkYTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9mbG9hdGluZ19wb2ludF9wcm9tb3Rpb24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTEgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDUgQWxleGFuZGVyIE5hc29ub3YuCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgRklMRV9uZG5ib29zdF90eXBlX3RyYWl0c19mbG9hdGluZ19wb2ludF9wcm9tb3Rpb25faHBwX0lOQ0xVREVECi0jZGVmaW5lIEZJTEVfbmRuYm9vc3RfdHlwZV90cmFpdHNfZmxvYXRpbmdfcG9pbnRfcHJvbW90aW9uX2hwcF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotI2lmZGVmIE5ETkJPT1NUX05PX0NWX1NQRUNJQUxJWkFUSU9OUwotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ludC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL211bHRpcGxpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9wbHVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLSNlbmRpZgotCi0vLyBTaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdHlwZV90cmFpdHMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotI2lmbmRlZiBORE5CT09TVF9OT19DVl9TUEVDSUFMSVpBVElPTlMKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBmbG9hdGluZ19wb2ludF9wcm9tb3Rpb24KLXsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmbG9hdGluZ19wb2ludF9wcm9tb3Rpb248ZmxvYXQ+Ci17Ci0gICAgdHlwZWRlZiBkb3VibGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmbG9hdGluZ19wb2ludF9wcm9tb3Rpb248ZmxvYXQgY29uc3Q+Ci17Ci0gICAgdHlwZWRlZiBkb3VibGUgY29uc3QgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmbG9hdGluZ19wb2ludF9wcm9tb3Rpb248ZmxvYXQgdm9sYXRpbGU+Ci17Ci0gICAgdHlwZWRlZiBkb3VibGUgdm9sYXRpbGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmbG9hdGluZ19wb2ludF9wcm9tb3Rpb248ZmxvYXQgY29uc3Qgdm9sYXRpbGU+Ci17Ci0gICAgdHlwZWRlZiBkb3VibGUgY29uc3Qgdm9sYXRpbGUgdHlwZTsKLX07Ci0KLSNlbHNlCi0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgZmxvYXRpbmdfcG9pbnRfcHJvbW90aW9uCi0gIDogbXBsOjphdDwKLSAgICAgICAgbXBsOjp2ZWN0b3I8IFQsIGRvdWJsZSwgZG91YmxlIGNvbnN0LCBkb3VibGUgdm9sYXRpbGUsCi0gICAgICAgICAgICAgICAgICAgICBkb3VibGUgY29uc3Qgdm9sYXRpbGUgPgotICAgICAgLCBtcGw6OnBsdXM8Ci0gICAgICAgICAgICBpc19zYW1lPFQsIGZsb2F0PgotICAgICAgICAgICwgbXBsOjptdWx0aXBsaWVzPCBpc19zYW1lPFQsIGZsb2F0IGNvbnN0PiAgICAgICAgICwgbXBsOjppbnRfPDI+ID4KLSAgICAgICAgICAsIG1wbDo6bXVsdGlwbGllczwgaXNfc2FtZTxULCBmbG9hdCB2b2xhdGlsZT4gICAgICAsIG1wbDo6aW50XzwzPiA+Ci0gICAgICAgICAgLCBtcGw6Om11bHRpcGxpZXM8IGlzX3NhbWU8VCwgZmxvYXQgY29uc3Qgdm9sYXRpbGU+LCBtcGw6OmludF88ND4gPgotICAgICAgICAgID4KLSAgICAgID4KLXsKLX07Ci0KLSNlbmRpZgotCi19IH0KLQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfREVGMSgKLSAgICAgIGZsb2F0aW5nX3BvaW50X3Byb21vdGlvbgotICAgICwgVAotICAgICwgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRQotICAgICAgICBuZG5ib29zdDo6dHlwZV90cmFpdHM6OmRldGFpbDo6ZmxvYXRpbmdfcG9pbnRfcHJvbW90aW9uPFQ+Ojp0eXBlCi0gICAgKQotfQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gI2lmbmRlZiBGSUxFX25kbmJvb3N0X3R5cGVfdHJhaXRzX2Zsb2F0aW5nX3BvaW50X3Byb21vdGlvbl9ocHBfSU5DTFVERUQKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9mdW5jdGlvbl90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9mdW5jdGlvbl90cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MTI2MGRiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZnVuY3Rpb25fdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzNiArMCwwIEBACi0KLS8vICBDb3B5cmlnaHQgMjAwMCBKb2huIE1hZGRvY2sgKGpvaG5Aam9obm1hZGRvY2suY28udWspCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0ZVTkNUSU9OX1RSQUlUU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfRlVOQ1RJT05fVFJBSVRTX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19mdW5jdGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3BvaW50ZXIuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvbj4gc3RydWN0IGZ1bmN0aW9uX3RyYWl0c19oZWxwZXI7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFI+Ci1zdHJ1Y3QgZnVuY3Rpb25fdHJhaXRzX2hlbHBlcjxSICgqKSh2b2lkKT4KLXsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLCBhcml0eSA9IDApOwotICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUMT4KLXN0cnVjdCBmdW5jdGlvbl90cmFpdHNfaGVscGVyPFIgKCopKFQxKT4KLXsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLCBhcml0eSA9IDEpOwotICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0gIHR5cGVkZWYgVDEgYXJnMV90eXBlOwotICB0eXBlZGVmIFQxIGFyZ3VtZW50X3R5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci1zdHJ1Y3QgZnVuY3Rpb25fdHJhaXRzX2hlbHBlcjxSICgqKShUMSwgVDIpPgotewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsIGFyaXR5ID0gMik7Ci0gIHR5cGVkZWYgUiByZXN1bHRfdHlwZTsKLSAgdHlwZWRlZiBUMSBhcmcxX3R5cGU7Ci0gIHR5cGVkZWYgVDIgYXJnMl90eXBlOwotICB0eXBlZGVmIFQxIGZpcnN0X2FyZ3VtZW50X3R5cGU7Ci0gIHR5cGVkZWYgVDIgc2Vjb25kX2FyZ3VtZW50X3R5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzPgotc3RydWN0IGZ1bmN0aW9uX3RyYWl0c19oZWxwZXI8UiAoKikoVDEsIFQyLCBUMyk+Ci17Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCwgYXJpdHkgPSAzKTsKLSAgdHlwZWRlZiBSIHJlc3VsdF90eXBlOwotICB0eXBlZGVmIFQxIGFyZzFfdHlwZTsKLSAgdHlwZWRlZiBUMiBhcmcyX3R5cGU7Ci0gIHR5cGVkZWYgVDMgYXJnM190eXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQ+Ci1zdHJ1Y3QgZnVuY3Rpb25fdHJhaXRzX2hlbHBlcjxSICgqKShUMSwgVDIsIFQzLCBUNCk+Ci17Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCwgYXJpdHkgPSA0KTsKLSAgdHlwZWRlZiBSIHJlc3VsdF90eXBlOwotICB0eXBlZGVmIFQxIGFyZzFfdHlwZTsKLSAgdHlwZWRlZiBUMiBhcmcyX3R5cGU7Ci0gIHR5cGVkZWYgVDMgYXJnM190eXBlOwotICB0eXBlZGVmIFQ0IGFyZzRfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LAotICAgICAgICAgdHlwZW5hbWUgVDU+Ci1zdHJ1Y3QgZnVuY3Rpb25fdHJhaXRzX2hlbHBlcjxSICgqKShUMSwgVDIsIFQzLCBUNCwgVDUpPgotewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsIGFyaXR5ID0gNSk7Ci0gIHR5cGVkZWYgUiByZXN1bHRfdHlwZTsKLSAgdHlwZWRlZiBUMSBhcmcxX3R5cGU7Ci0gIHR5cGVkZWYgVDIgYXJnMl90eXBlOwotICB0eXBlZGVmIFQzIGFyZzNfdHlwZTsKLSAgdHlwZWRlZiBUNCBhcmc0X3R5cGU7Ci0gIHR5cGVkZWYgVDUgYXJnNV90eXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsCi0gICAgICAgICB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDY+Ci1zdHJ1Y3QgZnVuY3Rpb25fdHJhaXRzX2hlbHBlcjxSICgqKShUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2KT4KLXsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLCBhcml0eSA9IDYpOwotICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0gIHR5cGVkZWYgVDEgYXJnMV90eXBlOwotICB0eXBlZGVmIFQyIGFyZzJfdHlwZTsKLSAgdHlwZWRlZiBUMyBhcmczX3R5cGU7Ci0gIHR5cGVkZWYgVDQgYXJnNF90eXBlOwotICB0eXBlZGVmIFQ1IGFyZzVfdHlwZTsKLSAgdHlwZWRlZiBUNiBhcmc2X3R5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwKLSAgICAgICAgIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDc+Ci1zdHJ1Y3QgZnVuY3Rpb25fdHJhaXRzX2hlbHBlcjxSICgqKShUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNyk+Ci17Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCwgYXJpdHkgPSA3KTsKLSAgdHlwZWRlZiBSIHJlc3VsdF90eXBlOwotICB0eXBlZGVmIFQxIGFyZzFfdHlwZTsKLSAgdHlwZWRlZiBUMiBhcmcyX3R5cGU7Ci0gIHR5cGVkZWYgVDMgYXJnM190eXBlOwotICB0eXBlZGVmIFQ0IGFyZzRfdHlwZTsKLSAgdHlwZWRlZiBUNSBhcmc1X3R5cGU7Ci0gIHR5cGVkZWYgVDYgYXJnNl90eXBlOwotICB0eXBlZGVmIFQ3IGFyZzdfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LAotICAgICAgICAgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDg+Ci1zdHJ1Y3QgZnVuY3Rpb25fdHJhaXRzX2hlbHBlcjxSICgqKShUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgpPgotewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsIGFyaXR5ID0gOCk7Ci0gIHR5cGVkZWYgUiByZXN1bHRfdHlwZTsKLSAgdHlwZWRlZiBUMSBhcmcxX3R5cGU7Ci0gIHR5cGVkZWYgVDIgYXJnMl90eXBlOwotICB0eXBlZGVmIFQzIGFyZzNfdHlwZTsKLSAgdHlwZWRlZiBUNCBhcmc0X3R5cGU7Ci0gIHR5cGVkZWYgVDUgYXJnNV90eXBlOwotICB0eXBlZGVmIFQ2IGFyZzZfdHlwZTsKLSAgdHlwZWRlZiBUNyBhcmc3X3R5cGU7Ci0gIHR5cGVkZWYgVDggYXJnOF90eXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsCi0gICAgICAgICB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDk+Ci1zdHJ1Y3QgZnVuY3Rpb25fdHJhaXRzX2hlbHBlcjxSICgqKShUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5KT4KLXsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLCBhcml0eSA9IDkpOwotICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0gIHR5cGVkZWYgVDEgYXJnMV90eXBlOwotICB0eXBlZGVmIFQyIGFyZzJfdHlwZTsKLSAgdHlwZWRlZiBUMyBhcmczX3R5cGU7Ci0gIHR5cGVkZWYgVDQgYXJnNF90eXBlOwotICB0eXBlZGVmIFQ1IGFyZzVfdHlwZTsKLSAgdHlwZWRlZiBUNiBhcmc2X3R5cGU7Ci0gIHR5cGVkZWYgVDcgYXJnN190eXBlOwotICB0eXBlZGVmIFQ4IGFyZzhfdHlwZTsKLSAgdHlwZWRlZiBUOSBhcmc5X3R5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwKLSAgICAgICAgIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwKLSAgICAgICAgIHR5cGVuYW1lIFQxMD4KLXN0cnVjdCBmdW5jdGlvbl90cmFpdHNfaGVscGVyPFIgKCopKFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCk+Ci17Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCwgYXJpdHkgPSAxMCk7Ci0gIHR5cGVkZWYgUiByZXN1bHRfdHlwZTsKLSAgdHlwZWRlZiBUMSBhcmcxX3R5cGU7Ci0gIHR5cGVkZWYgVDIgYXJnMl90eXBlOwotICB0eXBlZGVmIFQzIGFyZzNfdHlwZTsKLSAgdHlwZWRlZiBUNCBhcmc0X3R5cGU7Ci0gIHR5cGVkZWYgVDUgYXJnNV90eXBlOwotICB0eXBlZGVmIFQ2IGFyZzZfdHlwZTsKLSAgdHlwZWRlZiBUNyBhcmc3X3R5cGU7Ci0gIHR5cGVkZWYgVDggYXJnOF90eXBlOwotICB0eXBlZGVmIFQ5IGFyZzlfdHlwZTsKLSAgdHlwZWRlZiBUMTAgYXJnMTBfdHlwZTsKLX07Ci0KLX0gLy8gZW5kIG5hbWVzcGFjZSBkZXRhaWwKLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb24+Ci1zdHJ1Y3QgZnVuY3Rpb25fdHJhaXRzIDogCi0gIHB1YmxpYyBuZG5ib29zdDo6ZGV0YWlsOjpmdW5jdGlvbl90cmFpdHNfaGVscGVyPHR5cGVuYW1lIG5kbmJvb3N0OjphZGRfcG9pbnRlcjxGdW5jdGlvbj46OnR5cGU+Ci17Ci19OwotCi0jZWxzZQotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dW5zaWduZWQgTj4gCi1zdHJ1Y3QgdHlwZV9vZl9zaXplCi17Ci0gIGNoYXIgZWxlbWVudHNbTl07Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSPgotdHlwZV9vZl9zaXplPDE+IGZ1bmN0aW9uX2FyaXR5X2hlbHBlcihSICgqZikoKSk7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQxPgotdHlwZV9vZl9zaXplPDI+IGZ1bmN0aW9uX2FyaXR5X2hlbHBlcihSICgqZikoVDEpKTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotdHlwZV9vZl9zaXplPDM+IGZ1bmN0aW9uX2FyaXR5X2hlbHBlcihSICgqZikoVDEsIFQyKSk7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDM+Ci10eXBlX29mX3NpemU8ND4gZnVuY3Rpb25fYXJpdHlfaGVscGVyKFIgKCpmKShUMSwgVDIsIFQzKSk7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0PgotdHlwZV9vZl9zaXplPDU+IGZ1bmN0aW9uX2FyaXR5X2hlbHBlcihSICgqZikoVDEsIFQyLCBUMywgVDQpKTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsCi0gICAgICAgICB0eXBlbmFtZSBUNT4KLXR5cGVfb2Zfc2l6ZTw2PiBmdW5jdGlvbl9hcml0eV9oZWxwZXIoUiAoKmYpKFQxLCBUMiwgVDMsIFQ0LCBUNSkpOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwKLSAgICAgICAgIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNj4KLXR5cGVfb2Zfc2l6ZTw3PiBmdW5jdGlvbl9hcml0eV9oZWxwZXIoUiAoKmYpKFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYpKTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsCi0gICAgICAgICB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3PgotdHlwZV9vZl9zaXplPDg+IGZ1bmN0aW9uX2FyaXR5X2hlbHBlcihSICgqZikoVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcpKTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsCi0gICAgICAgICB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOD4KLXR5cGVfb2Zfc2l6ZTw5PiBmdW5jdGlvbl9hcml0eV9oZWxwZXIoUiAoKmYpKFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCkpOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwKLSAgICAgICAgIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOT4KLXR5cGVfb2Zfc2l6ZTwxMD4gZnVuY3Rpb25fYXJpdHlfaGVscGVyKFIgKCpmKShUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQ5KSk7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LAotICAgICAgICAgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LAotICAgICAgICAgdHlwZW5hbWUgVDEwPgotdHlwZV9vZl9zaXplPDExPiBmdW5jdGlvbl9hcml0eV9oZWxwZXIoUiAoKmYpKFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVDksIFQxMCkpOwotfSAvLyBlbmQgbmFtZXNwYWNlIGRldGFpbAotCi0vLyBXb24ndCB3b3JrIHdpdGggcmVmZXJlbmNlcwotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb24+Ci1zdHJ1Y3QgZnVuY3Rpb25fdHJhaXRzCi17Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCwgYXJpdHkgPSAoc2l6ZW9mKG5kbmJvb3N0OjpkZXRhaWw6OmZ1bmN0aW9uX2FyaXR5X2hlbHBlcigoRnVuY3Rpb24qKTApKS0xKSk7Ci19OwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotfQotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfRlVOQ1RJT05fVFJBSVRTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfYml0X2FuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19iaXRfYW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmEyZDBlNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19iaXRfYW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX0JJVF9BTkRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19CSVRfQU5EX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX2JpdF9hbmQKLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgJgotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIC8qIExocz09ZnVuZGFtZW50YWwgYW5kIFJocz09ZnVuZGFtZW50YWwgYW5kIChMaHMhPWludGVncmFsIG9yIFJocyE9aW50ZWdyYWwpICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDwgTGhzX25vcmVmID46OnZhbHVlID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDwgUmhzX25vcmVmID46OnZhbHVlID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogUmhzPT1mdW5kYW1lbnRhbCBhbmQgTGhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfYml0X2FuZF9hc3NpZ24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfYml0X2FuZF9hc3NpZ24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlY2Y2NWUwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2JpdF9hbmRfYXNzaWduLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX0JJVF9BTkRfQVNTSUdOX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfQklUX0FORF9BU1NJR05fSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfYml0X2FuZF9hc3NpZ24KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgJj0KLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHM9PWZ1bmRhbWVudGFsIGFuZCAoTGhzIT1pbnRlZ3JhbCBvciBSaHMhPWludGVncmFsKSAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8IExoc19ub3JlZiA+Ojp2YWx1ZSA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8IFJoc19ub3JlZiA+Ojp2YWx1ZSA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIFJocz09ZnVuZGFtZW50YWwgYW5kIExocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PXBvaW50ZXIgYW5kIFJocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHM9PWZ1bmRhbWVudGFsIGFuZCBMaHM9PWNvbnN0ICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19jb25zdDwgTGhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWVcCi0gICA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX2JpbmFyeV9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19iaXRfb3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfYml0X29yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWE5NzY1MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19iaXRfb3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfQklUX09SX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfQklUX09SX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX2JpdF9vcgotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCB8Ci0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzPT1mdW5kYW1lbnRhbCBhbmQgKExocyE9aW50ZWdyYWwgb3IgUmhzIT1pbnRlZ3JhbCkgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPCBMaHNfbm9yZWYgPjo6dmFsdWUgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPCBSaHNfbm9yZWYgPjo6dmFsdWUgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09ZnVuZGFtZW50YWwgYW5kIFJocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBSaHM9PWZ1bmRhbWVudGFsIGFuZCBMaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1wb2ludGVyIGFuZCBSaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWVcCi0gICA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX2JpbmFyeV9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19iaXRfb3JfYXNzaWduLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2JpdF9vcl9hc3NpZ24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZjczNDM3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2JpdF9vcl9hc3NpZ24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfQklUX09SX0FTU0lHTl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX0JJVF9PUl9BU1NJR05fSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfYml0X29yX2Fzc2lnbgotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCB8PQotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIC8qIExocz09ZnVuZGFtZW50YWwgYW5kIFJocz09ZnVuZGFtZW50YWwgYW5kIChMaHMhPWludGVncmFsIG9yIFJocyE9aW50ZWdyYWwpICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDwgTGhzX25vcmVmID46OnZhbHVlID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDwgUmhzX25vcmVmID46OnZhbHVlID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogUmhzPT1mdW5kYW1lbnRhbCBhbmQgTGhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09ZnVuZGFtZW50YWwgYW5kIFJocz09ZnVuZGFtZW50YWwgYW5kIExocz09Y29uc3QgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2NvbnN0PCBMaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2JpdF94b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfYml0X3hvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4M2E0ZmMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfYml0X3hvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19CSVRfWE9SX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfQklUX1hPUl9IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19iaXRfeG9yCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QIF4KLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHM9PWZ1bmRhbWVudGFsIGFuZCAoTGhzIT1pbnRlZ3JhbCBvciBSaHMhPWludGVncmFsKSAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8IExoc19ub3JlZiA+Ojp2YWx1ZSA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8IFJoc19ub3JlZiA+Ojp2YWx1ZSA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIFJocz09ZnVuZGFtZW50YWwgYW5kIExocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PXBvaW50ZXIgYW5kIFJocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2JpdF94b3JfYXNzaWduLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2JpdF94b3JfYXNzaWduLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDdmYTNhZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19iaXRfeG9yX2Fzc2lnbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19CSVRfWE9SX0FTU0lHTl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX0JJVF9YT1JfQVNTSUdOX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX2JpdF94b3JfYXNzaWduCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QIF49Ci0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzPT1mdW5kYW1lbnRhbCBhbmQgKExocyE9aW50ZWdyYWwgb3IgUmhzIT1pbnRlZ3JhbCkgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPCBMaHNfbm9yZWYgPjo6dmFsdWUgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPCBSaHNfbm9yZWYgPjo6dmFsdWUgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09ZnVuZGFtZW50YWwgYW5kIFJocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBSaHM9PWZ1bmRhbWVudGFsIGFuZCBMaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1wb2ludGVyIGFuZCBSaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzPT1mdW5kYW1lbnRhbCBhbmQgTGhzPT1jb25zdCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfY29uc3Q8IExoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfY29tcGxlbWVudC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19jb21wbGVtZW50LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDI3ZjZmZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19jb21wbGVtZW50LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX0NPTVBMRU1FTlRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19DT01QTEVNRU5UX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX2NvbXBsZW1lbnQKLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgfgotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIC8qIHBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgLyogZnVuZGFtZW50YWwgbm9uIGludGVncmFsICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8IFJoc19ub3JlZiA+Ojp2YWx1ZSA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19wcmVmaXhfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfZGVyZWZlcmVuY2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfZGVyZWZlcmVuY2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NmYyNTVhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2RlcmVmZXJlbmNlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX0RFUkVGRVJFTkNFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfREVSRUZFUkVOQ0VfSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfZGVyZWZlcmVuY2UKLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgKgotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICAvKiB2b2lkKiBvciBmdW5kYW1lbnRhbCAqL1wKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8IFJoc19ub3B0ciA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfcHJlZml4X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2RpdmlkZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfZGl2aWRlcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxZTc5ZWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfZGl2aWRlcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19ESVZJREVTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfRElWSURFU19IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19kaXZpZGVzCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QIC8KLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgLyogcG9pbnRlciB3aXRoIHBvaW50ZXIgb3IgZnVuZGFtZW50YWwgKi9cCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfZGl2aWRlc19hc3NpZ24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfZGl2aWRlc19hc3NpZ24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzMxNTBmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2RpdmlkZXNfYXNzaWduLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX0RJVklERVNfQVNTSUdOX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfRElWSURFU19BU1NJR05fSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfZGl2aWRlc19hc3NpZ24KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgLz0KLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBMaHM9PWNvbnN0IGFuZCBSaHM9PWZ1bmRhbWVudGFsICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2NvbnN0PCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1wb2ludGVyIGFuZCAoUmhzPT1mdW5kYW1lbnRhbCBvciBSaHM9PXBvaW50ZXIpICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogUmhzPT1wb2ludGVyIGFuZCAoTGhzPT1mdW5kYW1lbnRhbCBvciBMaHM9PXBvaW50ZXIpICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlXAotICAgICAgPjo6dmFsdWVcCi0gICA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX2JpbmFyeV9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19lcXVhbF90by5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19lcXVhbF90by5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkMTI5ZTguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfZXF1YWxfdG8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfRVFVQUxfVE9fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19FUVVBTF9UT19IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19lcXVhbF90bwotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCA9PQotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1mdW5kYW1lbnRhbCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBSaHM9PXBvaW50ZXIgYW5kIExocz09ZnVuZGFtZW50YWwgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1wb2ludGVyIGFuZCBSaHM9PXBvaW50ZXIgYW5kIExocyE9YmFzZShSaHMpIGFuZCBSaHMhPWJhc2UoTGhzKSBhbmQgTGhzIT12b2lkKiBhbmQgUmhzIT12b2lkKiAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19iYXNlX29mPCBMaHNfbm9wdHIsIFJoc19ub3B0ciA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19iYXNlX29mPCBSaHNfbm9wdHIsIExoc19ub3B0ciA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19zYW1lPCBMaHNfbm9wdHIsIFJoc19ub3B0ciA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc192b2lkPCBMaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDwgUmhzX25vcHRyID46OnZhbHVlXAotICAgICAgICAgICAgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfZ3JlYXRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ncmVhdGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjVkN2RmNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ncmVhdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX0dSRUFURVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19HUkVBVEVSX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX2dyZWF0ZXIKLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgPgotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1mdW5kYW1lbnRhbCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBSaHM9PXBvaW50ZXIgYW5kIExocz09ZnVuZGFtZW50YWwgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1wb2ludGVyIGFuZCBSaHM9PXBvaW50ZXIgYW5kIExocyE9YmFzZShSaHMpIGFuZCBSaHMhPWJhc2UoTGhzKSBhbmQgTGhzIT12b2lkKiBhbmQgUmhzIT12b2lkKiAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19iYXNlX29mPCBMaHNfbm9wdHIsIFJoc19ub3B0ciA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19iYXNlX29mPCBSaHNfbm9wdHIsIExoc19ub3B0ciA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19zYW1lPCBMaHNfbm9wdHIsIFJoc19ub3B0ciA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc192b2lkPCBMaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDwgUmhzX25vcHRyID46OnZhbHVlXAotICAgICAgICAgICAgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfZ3JlYXRlcl9lcXVhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ncmVhdGVyX2VxdWFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDNlNmM5MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ncmVhdGVyX2VxdWFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX0dSRUFURVJfRVFVQUxfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19HUkVBVEVSX0VRVUFMX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX2dyZWF0ZXJfZXF1YWwKLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgPj0KLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAvKiBMaHM9PXBvaW50ZXIgYW5kIFJocz09ZnVuZGFtZW50YWwgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogUmhzPT1wb2ludGVyIGFuZCBMaHM9PWZ1bmRhbWVudGFsICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1wb2ludGVyIGFuZCBMaHMhPWJhc2UoUmhzKSBhbmQgUmhzIT1iYXNlKExocykgYW5kIExocyE9dm9pZCogYW5kIFJocyE9dm9pZCogKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfYmFzZV9vZjwgTGhzX25vcHRyLCBSaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfYmFzZV9vZjwgUmhzX25vcHRyLCBMaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfc2FtZTwgTGhzX25vcHRyLCBSaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDwgTGhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8IFJoc19ub3B0ciA+Ojp2YWx1ZVwKLSAgICAgICAgICAgID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2xlZnRfc2hpZnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbGVmdF9zaGlmdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmNmQzNDEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbGVmdF9zaGlmdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19MRUZUX1NISUZUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfTEVGVF9TSElGVF9IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19sZWZ0X3NoaWZ0Ci0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QIDw8Ci0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzPT1mdW5kYW1lbnRhbCBhbmQgKExocyE9aW50ZWdyYWwgb3IgUmhzIT1pbnRlZ3JhbCkgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPCBMaHNfbm9yZWYgPjo6dmFsdWUgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPCBSaHNfbm9yZWYgPjo6dmFsdWUgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09ZnVuZGFtZW50YWwgYW5kIFJocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBSaHM9PWZ1bmRhbWVudGFsIGFuZCBMaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1wb2ludGVyIGFuZCBSaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWVcCi0gICA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX2JpbmFyeV9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19sZWZ0X3NoaWZ0X2Fzc2lnbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19sZWZ0X3NoaWZ0X2Fzc2lnbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkZjM1ZTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbGVmdF9zaGlmdF9hc3NpZ24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfTEVGVF9TSElGVF9BU1NJR05fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19MRUZUX1NISUZUX0FTU0lHTl9IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19sZWZ0X3NoaWZ0X2Fzc2lnbgotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCA8PD0KLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHM9PWZ1bmRhbWVudGFsIGFuZCAoTGhzIT1pbnRlZ3JhbCBvciBSaHMhPWludGVncmFsKSAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8IExoc19ub3JlZiA+Ojp2YWx1ZSA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8IFJoc19ub3JlZiA+Ojp2YWx1ZSA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIFJocz09ZnVuZGFtZW50YWwgYW5kIExocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PXBvaW50ZXIgYW5kIFJocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHM9PWZ1bmRhbWVudGFsIGFuZCBMaHM9PWNvbnN0ICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19jb25zdDwgTGhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWVcCi0gICA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX2JpbmFyeV9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19sZXNzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2xlc3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NjJjMjYwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2xlc3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfTEVTU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX0xFU1NfSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfbGVzcwotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCA8Ci0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgLyogTGhzPT1wb2ludGVyIGFuZCBSaHM9PWZ1bmRhbWVudGFsICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIFJocz09cG9pbnRlciBhbmQgTGhzPT1mdW5kYW1lbnRhbCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PXBvaW50ZXIgYW5kIFJocz09cG9pbnRlciBhbmQgTGhzIT1iYXNlKFJocykgYW5kIFJocyE9YmFzZShMaHMpIGFuZCBMaHMhPXZvaWQqIGFuZCBSaHMhPXZvaWQqICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Jhc2Vfb2Y8IExoc19ub3B0ciwgUmhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Jhc2Vfb2Y8IFJoc19ub3B0ciwgTGhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3NhbWU8IExoc19ub3B0ciwgUmhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8IExoc19ub3B0ciA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc192b2lkPCBSaHNfbm9wdHIgPjo6dmFsdWVcCi0gICAgICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlXAotICAgICAgPjo6dmFsdWVcCi0gICA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX2JpbmFyeV9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19sZXNzX2VxdWFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2xlc3NfZXF1YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZTJhMjVlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2xlc3NfZXF1YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfTEVTU19FUVVBTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX0xFU1NfRVFVQUxfSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfbGVzc19lcXVhbAotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCA8PQotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1mdW5kYW1lbnRhbCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBSaHM9PXBvaW50ZXIgYW5kIExocz09ZnVuZGFtZW50YWwgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1wb2ludGVyIGFuZCBSaHM9PXBvaW50ZXIgYW5kIExocyE9YmFzZShSaHMpIGFuZCBSaHMhPWJhc2UoTGhzKSBhbmQgTGhzIT12b2lkKiBhbmQgUmhzIT12b2lkKiAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19iYXNlX29mPCBMaHNfbm9wdHIsIFJoc19ub3B0ciA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19iYXNlX29mPCBSaHNfbm9wdHIsIExoc19ub3B0ciA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19zYW1lPCBMaHNfbm9wdHIsIFJoc19ub3B0ciA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc192b2lkPCBMaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDwgUmhzX25vcHRyID46OnZhbHVlXAotICAgICAgICAgICAgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbG9naWNhbF9hbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbG9naWNhbF9hbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MGJjYThlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2xvZ2ljYWxfYW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX0xPR0lDQUxfQU5EX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfTE9HSUNBTF9BTkRfSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfbG9naWNhbF9hbmQKLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgJiYKLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgLyogcG9pbnRlciB3aXRoIGZ1bmRhbWVudGFsIG5vbiBjb252ZXJ0aWJsZSB0byBib29sICovXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19jb252ZXJ0aWJsZTwgUmhzX25vY3YsIGJvb2wgPjo6dmFsdWUgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2NvbnZlcnRpYmxlPCBMaHNfbm9jdiwgYm9vbCA+Ojp2YWx1ZSA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlXAotICAgICAgPjo6dmFsdWVcCi0gICA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX2JpbmFyeV9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19sb2dpY2FsX25vdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19sb2dpY2FsX25vdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxNmNkNDQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbG9naWNhbF9ub3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfTE9HSUNBTF9OT1RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19MT0dJQ0FMX05PVF9IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19sb2dpY2FsX25vdAotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCAhCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIGZhbHNlCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX3ByZWZpeF9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19sb2dpY2FsX29yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2xvZ2ljYWxfb3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZmQxZDA1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2xvZ2ljYWxfb3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfTE9HSUNBTF9PUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX0xPR0lDQUxfT1JfSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfbG9naWNhbF9vcgotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCB8fAotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICAvKiBwb2ludGVyIHdpdGggZnVuZGFtZW50YWwgbm9uIGNvbnZlcnRpYmxlIHRvIGJvb2wgKi9cCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2NvbnZlcnRpYmxlPCBSaHNfbm9jdiwgYm9vbCA+Ojp2YWx1ZSA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfY29udmVydGlibGU8IExoc19ub2N2LCBib29sID46OnZhbHVlID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX21pbnVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX21pbnVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTRkNmUwNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19taW51cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19NSU5VU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX01JTlVTX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX21pbnVzCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QIC0KLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAvKiBMaHM9PXBvaW50ZXIgYW5kIFJocz09ZnVuZGFtZW50YWwgYW5kIFJocyE9aW50ZWdyYWwgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDwgUmhzX25vcmVmID46OnZhbHVlID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT12b2lkKiBhbmQgKFJocz09ZnVuZGFtZW50YWwgb3IgUmhzPT1wb2ludGVyKSAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc192b2lkPCBMaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBSaHM9PXZvaWQqIGFuZCAoTGhzPT1mdW5kYW1lbnRhbCBvciBMaHM9PXBvaW50ZXIpICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8IFJoc19ub3B0ciA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz1mdW5kYW1lbnRhbCBhbmQgUmhzPXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogdHdvIGRpZmZlcmVudCBwb2ludGVycyAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3NhbWU8IExoc19ub2N2LCBSaHNfbm9jdiA+Ojp2YWx1ZSA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbWludXNfYXNzaWduLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX21pbnVzX2Fzc2lnbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5MWI4M2QuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbWludXNfYXNzaWduLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX01JTlVTX0FTU0lHTl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX01JTlVTX0FTU0lHTl9IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19taW51c19hc3NpZ24KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgLT0KLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAvKiBMaHM9PXBvaW50ZXIgYW5kIFJocz09ZnVuZGFtZW50YWwgYW5kIFJocyE9aW50ZWdyYWwgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDwgUmhzX25vcmVmID46OnZhbHVlID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT12b2lkKiBhbmQgUmhzPT1mdW5kYW1lbnRhbCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc192b2lkPCBMaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogUmhzPT12b2lkKiBhbmQgTGhzPT1mdW5kYW1lbnRhbCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc192b2lkPCBSaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPWZ1bmRhbWVudGFsIGFuZCBSaHM9cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PXBvaW50ZXIgYW5kIFJocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiAoTGhzPT1mdW5kYW1lbnRhbCBvciBMaHM9PXBvaW50ZXIpIGFuZCAoUmhzPT1mdW5kYW1lbnRhbCBvciBSaHM9PXBvaW50ZXIpIGFuZCAoTGhzPT1jb25zdCkgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19jb25zdDwgTGhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWVcCi0gICA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX2JpbmFyeV9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19tb2R1bHVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX21vZHVsdXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMGY4ZTlmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX21vZHVsdXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfTU9EVUxVU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX01PRFVMVVNfSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfbW9kdWx1cwotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCAlCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzPT1mdW5kYW1lbnRhbCBhbmQgKExocyE9aW50ZWdyYWwgb3IgUmhzIT1pbnRlZ3JhbCkgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPCBMaHNfbm9yZWYgPjo6dmFsdWUgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPCBSaHNfbm9yZWYgPjo6dmFsdWUgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09ZnVuZGFtZW50YWwgYW5kIFJocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBSaHM9PWZ1bmRhbWVudGFsIGFuZCBMaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1wb2ludGVyIGFuZCBSaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWVcCi0gICA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX2JpbmFyeV9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19tb2R1bHVzX2Fzc2lnbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19tb2R1bHVzX2Fzc2lnbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0MTJlZTIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbW9kdWx1c19hc3NpZ24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfTU9EVUxVU19BU1NJR05fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19NT0RVTFVTX0FTU0lHTl9IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19tb2R1bHVzX2Fzc2lnbgotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCAlPQotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIC8qIExocz09ZnVuZGFtZW50YWwgYW5kIFJocz09ZnVuZGFtZW50YWwgYW5kIChMaHMhPWludGVncmFsIG9yIFJocyE9aW50ZWdyYWwpICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDwgTGhzX25vcmVmID46OnZhbHVlID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDwgUmhzX25vcmVmID46OnZhbHVlID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogUmhzPT1mdW5kYW1lbnRhbCBhbmQgTGhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09ZnVuZGFtZW50YWwgYW5kIFJocz09ZnVuZGFtZW50YWwgYW5kIExocz09Y29uc3QgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2NvbnN0PCBMaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX211bHRpcGxpZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbXVsdGlwbGllcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1M2VlYWEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbXVsdGlwbGllcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19NVUxUSVBMSUVTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfTVVMVElQTElFU19IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19tdWx0aXBsaWVzCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QICoKLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgLyogcG9pbnRlciB3aXRoIHBvaW50ZXIgb3IgZnVuZGFtZW50YWwgKi9cCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbXVsdGlwbGllc19hc3NpZ24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbXVsdGlwbGllc19hc3NpZ24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZTcwODUxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX211bHRpcGxpZXNfYXNzaWduLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX01VTFRJUExJRVNfQVNTSUdOX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfTVVMVElQTElFU19BU1NJR05fSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfbXVsdGlwbGllc19hc3NpZ24KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgKj0KLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBMaHM9PWNvbnN0IGFuZCBSaHM9PWZ1bmRhbWVudGFsICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2NvbnN0PCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1wb2ludGVyIGFuZCAoUmhzPT1mdW5kYW1lbnRhbCBvciBSaHM9PXBvaW50ZXIpICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogUmhzPT1wb2ludGVyIGFuZCAoTGhzPT1mdW5kYW1lbnRhbCBvciBMaHM9PXBvaW50ZXIpICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlXAotICAgICAgPjo6dmFsdWVcCi0gICA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX2JpbmFyeV9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19uZWdhdGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbmVnYXRlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmVlM2E4Mi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19uZWdhdGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfTkVHQVRFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfTkVHQVRFX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX25lZ2F0ZQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCAtCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIC8qIHBvaW50ZXIgKi9cCi0gICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19wcmVmaXhfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbmV3X29wZXJhdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25ld19vcGVyYXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5OWMxZjIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbmV3X29wZXJhdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MCArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFJ1bmFyIFVuZGhlaW0sIFJvYmVydCBSYW1leSAmIEpvaG4gTWFkZG9jayAyMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfTkVXX09QRVJBVE9SX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfTkVXX09QRVJBVE9SX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmV3PiAvLyBzdGQ6Om5vdGhyb3dfdAotI2luY2x1ZGUgPGNzdGRkZWY+IC8vIHN0ZDo6c2l6ZV90Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwveWVzX25vX3R5cGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfb3IuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIGRldGFpbCB7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFUsIFUgeD4gCi0gICAgc3RydWN0IHRlc3Q7Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgaGFzX25ld19vcGVyYXRvcl9pbXBsIHsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVT4KLSAgICAgICAgc3RhdGljIHR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBjaGVja19zaWcxKAotICAgICAgICAgICAgVSosIAotICAgICAgICAgICAgdGVzdDwKLSAgICAgICAgICAgIHZvaWQgKigqKShzdGQ6OnNpemVfdCksCi0gICAgICAgICAgICAgICAgJlU6Om9wZXJhdG9yIG5ldwotICAgICAgICAgICAgPiogPSBOVUxMCi0gICAgICAgICk7Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFU+Ci0gICAgICAgIHN0YXRpYyB0eXBlX3RyYWl0czo6bm9fdHlwZSBjaGVja19zaWcxKC4uLik7Ci0KLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVT4KLSAgICAgICAgc3RhdGljIHR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBjaGVja19zaWcyKAotICAgICAgICAgICAgVSosIAotICAgICAgICAgICAgdGVzdDwKLSAgICAgICAgICAgIHZvaWQgKigqKShzdGQ6OnNpemVfdCwgY29uc3Qgc3RkOjpub3Rocm93X3QmKSwKLSAgICAgICAgICAgICAgICAmVTo6b3BlcmF0b3IgbmV3Ci0gICAgICAgICAgICA+KiA9IE5VTEwKLSAgICAgICAgKTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVT4KLSAgICAgICAgc3RhdGljIHR5cGVfdHJhaXRzOjpub190eXBlIGNoZWNrX3NpZzIoLi4uKTsKLQotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBVPgotICAgICAgICBzdGF0aWMgdHlwZV90cmFpdHM6Onllc190eXBlIGNoZWNrX3NpZzMoCi0gICAgICAgICAgICBVKiwgCi0gICAgICAgICAgICB0ZXN0PAotICAgICAgICAgICAgdm9pZCAqKCopKHN0ZDo6c2l6ZV90LCB2b2lkKiksCi0gICAgICAgICAgICAgICAgJlU6Om9wZXJhdG9yIG5ldwotICAgICAgICAgICAgPiogPSBOVUxMCi0gICAgICAgICk7Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFU+Ci0gICAgICAgIHN0YXRpYyB0eXBlX3RyYWl0czo6bm9fdHlwZSBjaGVja19zaWczKC4uLik7Ci0KLQotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBVPgotICAgICAgICBzdGF0aWMgdHlwZV90cmFpdHM6Onllc190eXBlIGNoZWNrX3NpZzQoCi0gICAgICAgICAgICBVKiwgCi0gICAgICAgICAgICB0ZXN0PAotICAgICAgICAgICAgdm9pZCAqKCopKHN0ZDo6c2l6ZV90KSwKLSAgICAgICAgICAgICAgICAmVTo6b3BlcmF0b3IgbmV3W10KLSAgICAgICAgICAgID4qID0gTlVMTAotICAgICAgICApOwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBVPgotICAgICAgICBzdGF0aWMgdHlwZV90cmFpdHM6Om5vX3R5cGUgY2hlY2tfc2lnNCguLi4pOwotCi0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFU+Ci0gICAgICAgIHN0YXRpYyB0eXBlX3RyYWl0czo6eWVzX3R5cGUgY2hlY2tfc2lnNSgKLSAgICAgICAgICAgIFUqLCAKLSAgICAgICAgICAgIHRlc3Q8Ci0gICAgICAgICAgICB2b2lkICooKikoc3RkOjpzaXplX3QsIGNvbnN0IHN0ZDo6bm90aHJvd190JiksCi0gICAgICAgICAgICAgICAgJlU6Om9wZXJhdG9yIG5ld1tdCi0gICAgICAgICAgICA+KiA9IE5VTEwKLSAgICAgICAgKTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVT4KLSAgICAgICAgc3RhdGljIHR5cGVfdHJhaXRzOjpub190eXBlIGNoZWNrX3NpZzUoLi4uKTsKLQotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBVPgotICAgICAgICBzdGF0aWMgdHlwZV90cmFpdHM6Onllc190eXBlIGNoZWNrX3NpZzYoCi0gICAgICAgICAgICBVKiwgCi0gICAgICAgICAgICB0ZXN0PAotICAgICAgICAgICAgdm9pZCAqKCopKHN0ZDo6c2l6ZV90LCB2b2lkKiksCi0gICAgICAgICAgICAgICAgJlU6Om9wZXJhdG9yIG5ld1tdCi0gICAgICAgICAgICA+KiA9IE5VTEwKLSAgICAgICAgKTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVT4KLSAgICAgICAgc3RhdGljIHR5cGVfdHJhaXRzOjpub190eXBlIGNoZWNrX3NpZzYoLi4uKTsKLQotICAgICAgICAvLyBHQ0MyIHdvbid0IGV2ZW4gcGFyc2UgdGhpcyB0ZW1wbGF0ZSBpZiB3ZSBlbWJlZCB0aGUgY29tcHV0YXRpb24KLSAgICAgICAgLy8gb2YgczEgaW4gdGhlIGNvbXB1dGF0aW9uIG9mIHZhbHVlLgotICAgICAgICAjaWZkZWYgX19HTlVDX18KLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCwgczEgPSBzaXplb2YoaGFzX25ld19vcGVyYXRvcl9pbXBsPFQ+Ojp0ZW1wbGF0ZSBjaGVja19zaWcxPFQ+KDApKSk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsIHMyID0gc2l6ZW9mKGhhc19uZXdfb3BlcmF0b3JfaW1wbDxUPjo6dGVtcGxhdGUgY2hlY2tfc2lnMjxUPigwKSkpOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLCBzMyA9IHNpemVvZihoYXNfbmV3X29wZXJhdG9yX2ltcGw8VD46OnRlbXBsYXRlIGNoZWNrX3NpZzM8VD4oMCkpKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCwgczQgPSBzaXplb2YoaGFzX25ld19vcGVyYXRvcl9pbXBsPFQ+Ojp0ZW1wbGF0ZSBjaGVja19zaWc0PFQ+KDApKSk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsIHM1ID0gc2l6ZW9mKGhhc19uZXdfb3BlcmF0b3JfaW1wbDxUPjo6dGVtcGxhdGUgY2hlY2tfc2lnNTxUPigwKSkpOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLCBzNiA9IHNpemVvZihoYXNfbmV3X29wZXJhdG9yX2ltcGw8VD46OnRlbXBsYXRlIGNoZWNrX3NpZzY8VD4oMCkpKTsKLSAgICAgICAgI2Vsc2UKLSAgICAgICAgICAgICNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkNfRlVMTF9WRVIsID49IDE0MDA1MDAwMCkKLSAgICAgICAgICAgICAgICAjcHJhZ21hIHdhcm5pbmcocHVzaCkKLSAgICAgICAgICAgICAgICAjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo2MzM0KQotICAgICAgICAgICAgI2VuZGlmCi0KLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCwgczEgPSBzaXplb2YoY2hlY2tfc2lnMTxUPigwKSkpOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLCBzMiA9IHNpemVvZihjaGVja19zaWcyPFQ+KDApKSk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsIHMzID0gc2l6ZW9mKGNoZWNrX3NpZzM8VD4oMCkpKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCwgczQgPSBzaXplb2YoY2hlY2tfc2lnNDxUPigwKSkpOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLCBzNSA9IHNpemVvZihjaGVja19zaWc1PFQ+KDApKSk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsIHM2ID0gc2l6ZW9mKGNoZWNrX3NpZzY8VD4oMCkpKTsKLQotICAgICAgICAgICAgI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQ19GVUxMX1ZFUiwgPj0gMTQwMDUwMDAwKQotICAgICAgICAgICAgICAgICNwcmFnbWEgd2FybmluZyhwb3ApCi0gICAgICAgICAgICAjZW5kaWYKLSAgICAgICAgI2VuZGlmCi0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IAotICAgICAgICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwKLSAgICAgICAgICAgIChzMSA9PSBzaXplb2YodHlwZV90cmFpdHM6Onllc190eXBlKSksCi0gICAgICAgICAgICAoczIgPT0gc2l6ZW9mKHR5cGVfdHJhaXRzOjp5ZXNfdHlwZSkpLAotICAgICAgICAgICAgKHMzID09IHNpemVvZih0eXBlX3RyYWl0czo6eWVzX3R5cGUpKSwKLSAgICAgICAgICAgIChzNCA9PSBzaXplb2YodHlwZV90cmFpdHM6Onllc190eXBlKSksCi0gICAgICAgICAgICAoczUgPT0gc2l6ZW9mKHR5cGVfdHJhaXRzOjp5ZXNfdHlwZSkpLAotICAgICAgICAgICAgKHM2ID09IHNpemVvZih0eXBlX3RyYWl0czo6eWVzX3R5cGUpKQotICAgICAgICAgICA+Ojp2YWx1ZSkKLSAgICAgICAgKTsKLSAgICB9OwotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaGFzX25ld19vcGVyYXRvcixULDo6bmRuYm9vc3Q6OmRldGFpbDo6aGFzX25ld19vcGVyYXRvcl9pbXBsPFQ+Ojp2YWx1ZSkKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0hBU19ORVdfT1BFUkFUT1JfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ub3RfZXF1YWxfdG8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbm90X2VxdWFsX3RvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGE1ZjJjNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ub3RfZXF1YWxfdG8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfTk9UX0VRVUFMX1RPX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfTk9UX0VRVUFMX1RPX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX25vdF9lcXVhbF90bwotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCAhPQotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1mdW5kYW1lbnRhbCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBSaHM9PXBvaW50ZXIgYW5kIExocz09ZnVuZGFtZW50YWwgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1wb2ludGVyIGFuZCBSaHM9PXBvaW50ZXIgYW5kIExocyE9YmFzZShSaHMpIGFuZCBSaHMhPWJhc2UoTGhzKSBhbmQgTGhzIT12b2lkKiBhbmQgUmhzIT12b2lkKiAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19iYXNlX29mPCBMaHNfbm9wdHIsIFJoc19ub3B0ciA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19iYXNlX29mPCBSaHNfbm9wdHIsIExoc19ub3B0ciA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19zYW1lPCBMaHNfbm9wdHIsIFJoc19ub3B0ciA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc192b2lkPCBMaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDwgUmhzX25vcHRyID46OnZhbHVlXAotICAgICAgICAgICAgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbm90aHJvd19hc3NpZ24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbm90aHJvd19hc3NpZ24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZTRlZTIxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25vdGhyb3dfYXNzaWduLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX05PVEhST1dfQVNTSUdOX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfTk9USFJPV19BU1NJR05fSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9hc3NpZ24uaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGV0YWlsewotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBoYXNfbm90aHJvd19hc3NpZ25faW1wewotI2lmbmRlZiBORE5CT09TVF9IQVNfTk9USFJPV19BU1NJR04KLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IDo6bmRuYm9vc3Q6Omhhc190cml2aWFsX2Fzc2lnbjxUPjo6dmFsdWUpOwotI2Vsc2UKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IE5ETkJPT1NUX0hBU19OT1RIUk9XX0FTU0lHTihUKSk7Ci0jZW5kaWYKLX07Ci0KLX0KLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShoYXNfbm90aHJvd19hc3NpZ24sVCw6Om5kbmJvb3N0OjpkZXRhaWw6Omhhc19ub3Rocm93X2Fzc2lnbl9pbXA8VD46OnZhbHVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX25vdGhyb3dfYXNzaWduLHZvaWQsZmFsc2UpCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfbm90aHJvd19hc3NpZ24sdm9pZCBjb25zdCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc19ub3Rocm93X2Fzc2lnbix2b2lkIGNvbnN0IHZvbGF0aWxlLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX25vdGhyb3dfYXNzaWduLHZvaWQgdm9sYXRpbGUsZmFsc2UpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0hBU19OT1RIUk9XX0FTU0lHTl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25vdGhyb3dfY29uc3RydWN0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbm90aHJvd19jb25zdHJ1Y3Rvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4YmFmMWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbm90aHJvd19jb25zdHJ1Y3Rvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19OT1RIUk9XX0NPTlNUUlVDVE9SX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfTk9USFJPV19DT05TVFJVQ1RPUl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX2NvbnN0cnVjdG9yLmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRldGFpbHsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaGFzX25vdGhyb3dfY29uc3RydWN0b3JfaW1wewotI2lmZGVmIE5ETkJPT1NUX0hBU19OT1RIUk9XX0NPTlNUUlVDVE9SCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBORE5CT09TVF9IQVNfTk9USFJPV19DT05TVFJVQ1RPUihUKSk7Ci0jZWxzZQotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gOjpuZG5ib29zdDo6aGFzX3RyaXZpYWxfY29uc3RydWN0b3I8VD46OnZhbHVlKTsKLSNlbmRpZgotfTsKLQotfQotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGhhc19ub3Rocm93X2NvbnN0cnVjdG9yLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjpoYXNfbm90aHJvd19jb25zdHJ1Y3Rvcl9pbXA8VD46OnZhbHVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShoYXNfbm90aHJvd19kZWZhdWx0X2NvbnN0cnVjdG9yLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjpoYXNfbm90aHJvd19jb25zdHJ1Y3Rvcl9pbXA8VD46OnZhbHVlKQotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfbm90aHJvd19jb25zdHJ1Y3Rvcix2b2lkLGZhbHNlKQotI2lmbmRlZiBORE5CT09TVF9OT19DVl9WT0lEX1NQRUNJQUxJWkFUSU9OUwotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX25vdGhyb3dfY29uc3RydWN0b3Isdm9pZCBjb25zdCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc19ub3Rocm93X2NvbnN0cnVjdG9yLHZvaWQgY29uc3Qgdm9sYXRpbGUsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfbm90aHJvd19jb25zdHJ1Y3Rvcix2b2lkIHZvbGF0aWxlLGZhbHNlKQotI2VuZGlmCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc19ub3Rocm93X2RlZmF1bHRfY29uc3RydWN0b3Isdm9pZCxmYWxzZSkKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc19ub3Rocm93X2RlZmF1bHRfY29uc3RydWN0b3Isdm9pZCBjb25zdCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc19ub3Rocm93X2RlZmF1bHRfY29uc3RydWN0b3Isdm9pZCBjb25zdCB2b2xhdGlsZSxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc19ub3Rocm93X2RlZmF1bHRfY29uc3RydWN0b3Isdm9pZCB2b2xhdGlsZSxmYWxzZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSEFTX05PVEhST1dfQ09OU1RSVUNUT1JfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ub3Rocm93X2NvcHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbm90aHJvd19jb3B5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTM1OWNhMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ub3Rocm93X2NvcHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfTk9USFJPV19DT1BZX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfTk9USFJPV19DT1BZX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfY29weS5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWx7Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGhhc19ub3Rocm93X2NvcHlfaW1wewotI2lmZGVmIE5ETkJPT1NUX0hBU19OT1RIUk9XX0NPUFkKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IE5ETkJPT1NUX0hBU19OT1RIUk9XX0NPUFkoVCkpOwotI2Vsc2UKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IDo6bmRuYm9vc3Q6Omhhc190cml2aWFsX2NvcHk8VD46OnZhbHVlKTsKLSNlbmRpZgotfTsKLQotfQotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGhhc19ub3Rocm93X2NvcHksVCw6Om5kbmJvb3N0OjpkZXRhaWw6Omhhc19ub3Rocm93X2NvcHlfaW1wPFQ+Ojp2YWx1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaGFzX25vdGhyb3dfY29weV9jb25zdHJ1Y3RvcixULDo6bmRuYm9vc3Q6OmRldGFpbDo6aGFzX25vdGhyb3dfY29weV9pbXA8VD46OnZhbHVlKQotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfbm90aHJvd19jb3B5LHZvaWQsZmFsc2UpCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfbm90aHJvd19jb3B5LHZvaWQgY29uc3QsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfbm90aHJvd19jb3B5LHZvaWQgY29uc3Qgdm9sYXRpbGUsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfbm90aHJvd19jb3B5LHZvaWQgdm9sYXRpbGUsZmFsc2UpCi0jZW5kaWYKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX25vdGhyb3dfY29weV9jb25zdHJ1Y3Rvcix2b2lkLGZhbHNlKQotI2lmbmRlZiBORE5CT09TVF9OT19DVl9WT0lEX1NQRUNJQUxJWkFUSU9OUwotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX25vdGhyb3dfY29weV9jb25zdHJ1Y3Rvcix2b2lkIGNvbnN0LGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX25vdGhyb3dfY29weV9jb25zdHJ1Y3Rvcix2b2lkIGNvbnN0IHZvbGF0aWxlLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX25vdGhyb3dfY29weV9jb25zdHJ1Y3Rvcix2b2lkIHZvbGF0aWxlLGZhbHNlKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9IQVNfTk9USFJPV19DT1BZX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbm90aHJvd19kZXN0cnVjdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25vdGhyb3dfZGVzdHJ1Y3Rvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjMTFjYWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbm90aHJvd19kZXN0cnVjdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX05PVEhST1dfREVTVFJVQ1RPUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX05PVEhST1dfREVTVFJVQ1RPUl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX2Rlc3RydWN0b3IuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGhhc19ub3Rocm93X2Rlc3RydWN0b3IsVCw6Om5kbmJvb3N0OjpoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPFQ+Ojp2YWx1ZSkKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0hBU19OT1RIUk9XX0RFU1RSVUNUT1JfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19vcGVyYXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19vcGVyYXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2M2Q4N2EuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfb3BlcmF0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfT1BFUkFUT1JfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19PUEVSQVRPUl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19iaXRfYW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfYml0X2FuZF9hc3NpZ24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19iaXRfb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19iaXRfb3JfYXNzaWduLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfYml0X3hvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2JpdF94b3JfYXNzaWduLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfY29tcGxlbWVudC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2RlcmVmZXJlbmNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfZGl2aWRlcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2RpdmlkZXNfYXNzaWduLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfZXF1YWxfdG8uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ncmVhdGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfZ3JlYXRlcl9lcXVhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2xlZnRfc2hpZnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19sZWZ0X3NoaWZ0X2Fzc2lnbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2xlc3MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19sZXNzX2VxdWFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbG9naWNhbF9hbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19sb2dpY2FsX25vdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2xvZ2ljYWxfb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19taW51cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX21pbnVzX2Fzc2lnbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX21vZHVsdXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19tb2R1bHVzX2Fzc2lnbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX211bHRpcGxpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19tdWx0aXBsaWVzX2Fzc2lnbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25lZ2F0ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25vdF9lcXVhbF90by5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3BsdXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19wbHVzX2Fzc2lnbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3Bvc3RfZGVjcmVtZW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcG9zdF9pbmNyZW1lbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19wcmVfZGVjcmVtZW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcHJlX2luY3JlbWVudC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3JpZ2h0X3NoaWZ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcmlnaHRfc2hpZnRfYXNzaWduLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdW5hcnlfbWludXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc191bmFyeV9wbHVzLmhwcD4KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19wbHVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3BsdXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MmU4MTUwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3BsdXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfUExVU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX1BMVVNfSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfcGx1cwotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCArCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgLyogTGhzPT1wb2ludGVyIGFuZCBSaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT12b2lkKiBhbmQgUmhzPT1mdW5kYW1lbnRhbCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc192b2lkPCBMaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogUmhzPT12b2lkKiBhbmQgTGhzPT1mdW5kYW1lbnRhbCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc192b2lkPCBSaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1wb2ludGVyIGFuZCBSaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHMhPWludGVncmFsICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8IFJoc19ub3JlZiA+Ojp2YWx1ZSA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIFJocz09cG9pbnRlciBhbmQgTGhzPT1mdW5kYW1lbnRhbCBhbmQgTGhzIT1pbnRlZ3JhbCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPCBMaHNfbm9yZWYgPjo6dmFsdWUgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3BsdXNfYXNzaWduLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3BsdXNfYXNzaWduLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWRhYTI4ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19wbHVzX2Fzc2lnbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19QTFVTX0FTU0lHTl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX1BMVVNfQVNTSUdOX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX3BsdXNfYXNzaWduCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QICs9Ci0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgLyogTGhzPT1wb2ludGVyIGFuZCBSaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT12b2lkKiBhbmQgUmhzPT1mdW5kYW1lbnRhbCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc192b2lkPCBMaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogUmhzPT12b2lkKiBhbmQgTGhzPT1mdW5kYW1lbnRhbCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc192b2lkPCBSaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1wb2ludGVyIGFuZCBSaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHMhPWludGVncmFsICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8IFJoc19ub3JlZiA+Ojp2YWx1ZSA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIFJocz09cG9pbnRlciBhbmQgTGhzPT1mdW5kYW1lbnRhbCBhbmQgTGhzIT1ib29sICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfc2FtZTwgTGhzX25vY3YsIGJvb2wgPjo6dmFsdWUgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiAoTGhzPT1mdW5kYW1lbnRhbCBvciBMaHM9PXBvaW50ZXIpIGFuZCAoUmhzPT1mdW5kYW1lbnRhbCBvciBSaHM9PXBvaW50ZXIpIGFuZCAoTGhzPT1jb25zdCkgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19jb25zdDwgTGhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWVcCi0gICA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX2JpbmFyeV9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19wb3N0X2RlY3JlbWVudC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19wb3N0X2RlY3JlbWVudC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmZDc3NzEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcG9zdF9kZWNyZW1lbnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfUE9TVF9ERUNSRU1FTlRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19QT1NUX0RFQ1JFTUVOVF9IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19wb3N0X2RlY3JlbWVudAotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCAtLQotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIC8qIGJvb2wgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojppc19zYW1lPCBib29sLCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAvKiB2b2lkKiAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc192b2lkPCBMaHNfbm9wdHIgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiAoZnVuZGFtZW50YWwgb3IgcG9pbnRlcikgYW5kIGNvbnN0ICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfY29uc3Q8IExoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19wb3N0Zml4X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3Bvc3RfaW5jcmVtZW50LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3Bvc3RfaW5jcmVtZW50LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Q5MjlhYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19wb3N0X2luY3JlbWVudC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19QT1NUX0lOQ1JFTUVOVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX1BPU1RfSU5DUkVNRU5UX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX3Bvc3RfaW5jcmVtZW50Ci0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QICsrCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgLyogYm9vbCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OmlzX3NhbWU8IGJvb2wsIExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgIC8qIHZvaWQqICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8IExoc19ub3B0ciA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIChmdW5kYW1lbnRhbCBvciBwb2ludGVyKSBhbmQgY29uc3QgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19jb25zdDwgTGhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWVcCi0gICA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX3Bvc3RmaXhfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcHJlX2RlY3JlbWVudC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19wcmVfZGVjcmVtZW50LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTE2MjM4ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19wcmVfZGVjcmVtZW50LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX1BSRV9ERUNSRU1FTlRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19QUkVfREVDUkVNRU5UX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX3ByZV9kZWNyZW1lbnQKLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgLS0KLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAvKiBib29sICovXAotICAgICAgOjpuZG5ib29zdDo6aXNfc2FtZTwgYm9vbCwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgLyogdm9pZCogKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDwgUmhzX25vcHRyID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogKGZ1bmRhbWVudGFsIG9yIHBvaW50ZXIpIGFuZCBjb25zdCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2NvbnN0PCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfcHJlZml4X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3ByZV9pbmNyZW1lbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcHJlX2luY3JlbWVudC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0MGMxM2EuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcHJlX2luY3JlbWVudC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19QUkVfSU5DUkVNRU5UX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfUFJFX0lOQ1JFTUVOVF9IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19wcmVfaW5jcmVtZW50Ci0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QICsrCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgLyogYm9vbCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OmlzX3NhbWU8IGJvb2wsIFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgIC8qIHZvaWQqICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8IFJoc19ub3B0ciA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIChmdW5kYW1lbnRhbCBvciBwb2ludGVyKSBhbmQgY29uc3QgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19jb25zdDwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWVcCi0gICA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX3ByZWZpeF9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19yaWdodF9zaGlmdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19yaWdodF9zaGlmdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhMDViN2QuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcmlnaHRfc2hpZnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfUklHSFRfU0hJRlRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19SSUdIVF9TSElGVF9IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19yaWdodF9zaGlmdAotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCA+PgotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIC8qIExocz09ZnVuZGFtZW50YWwgYW5kIFJocz09ZnVuZGFtZW50YWwgYW5kIChMaHMhPWludGVncmFsIG9yIFJocyE9aW50ZWdyYWwpICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDwgTGhzX25vcmVmID46OnZhbHVlID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDwgUmhzX25vcmVmID46OnZhbHVlID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogUmhzPT1mdW5kYW1lbnRhbCBhbmQgTGhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcmlnaHRfc2hpZnRfYXNzaWduLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3JpZ2h0X3NoaWZ0X2Fzc2lnbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1ZThjMjQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcmlnaHRfc2hpZnRfYXNzaWduLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX1JJR0hUX1NISUZUX0FTU0lHTl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX1JJR0hUX1NISUZUX0FTU0lHTl9IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19yaWdodF9zaGlmdF9hc3NpZ24KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgPj49Ci0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzPT1mdW5kYW1lbnRhbCBhbmQgKExocyE9aW50ZWdyYWwgb3IgUmhzIT1pbnRlZ3JhbCkgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPCBMaHNfbm9yZWYgPjo6dmFsdWUgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPCBSaHNfbm9yZWYgPjo6dmFsdWUgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09ZnVuZGFtZW50YWwgYW5kIFJocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBSaHM9PWZ1bmRhbWVudGFsIGFuZCBMaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1wb2ludGVyIGFuZCBSaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzPT1mdW5kYW1lbnRhbCBhbmQgTGhzPT1jb25zdCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfY29uc3Q8IExoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9hc3NpZ24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9hc3NpZ24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDhhMmY4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfYXNzaWduLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX1RSSVZJQUxfQVNTSUdOX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfVFJJVklBTF9BU1NJR05fSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ludHJpbnNpY3MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29uc3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvbGF0aWxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX2FuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9vci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9ub3QuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaGFzX3RyaXZpYWxfYXNzaWduX2ltcGwKLXsKLSNpZmRlZiBORE5CT09TVF9IQVNfVFJJVklBTF9BU1NJR04KLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IE5ETkJPT1NUX0hBU19UUklWSUFMX0FTU0lHTihUKSk7Ci0jZWxzZQotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwKLSAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9kPFQ+Ojp2YWx1ZSwKLSAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2NvbnN0PFQ+Ojp2YWx1ZSA+Ojp2YWx1ZSwKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc192b2xhdGlsZTxUPjo6dmFsdWUgPjo6dmFsdWUKLSAgICAgID46OnZhbHVlKSk7Ci0jZW5kaWYKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGhhc190cml2aWFsX2Fzc2lnbixULDo6bmRuYm9vc3Q6OmRldGFpbDo6aGFzX3RyaXZpYWxfYXNzaWduX2ltcGw8VD46OnZhbHVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX3RyaXZpYWxfYXNzaWduLHZvaWQsZmFsc2UpCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfdHJpdmlhbF9hc3NpZ24sdm9pZCBjb25zdCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc190cml2aWFsX2Fzc2lnbix2b2lkIGNvbnN0IHZvbGF0aWxlLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX3RyaXZpYWxfYXNzaWduLHZvaWQgdm9sYXRpbGUsZmFsc2UpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0hBU19UUklWSUFMX0FTU0lHTl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfY29uc3RydWN0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwMjViZDEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19UUklWSUFMX0NPTlNUUlVDVE9SX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfVFJJVklBTF9DT05TVFJVQ1RPUl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaW50cmluc2ljcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX29yLmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGhhc190cml2aWFsX2N0b3JfaW1wbAotewotI2lmZGVmIE5ETkJPT1NUX0hBU19UUklWSUFMX0NPTlNUUlVDVE9SCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8Ci0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2Q8VD46OnZhbHVlLAotICAgICAgICAgTkROQk9PU1RfSEFTX1RSSVZJQUxfQ09OU1RSVUNUT1IoVCkKLSAgICAgID46OnZhbHVlKSk7Ci0jZWxzZQotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9kPFQ+Ojp2YWx1ZSwKLSAgICAgICAgIGZhbHNlCi0gICAgICA+Ojp2YWx1ZSkpOwotI2VuZGlmCi19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShoYXNfdHJpdmlhbF9jb25zdHJ1Y3RvcixULDo6bmRuYm9vc3Q6OmRldGFpbDo6aGFzX3RyaXZpYWxfY3Rvcl9pbXBsPFQ+Ojp2YWx1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcixULDo6bmRuYm9vc3Q6OmRldGFpbDo6aGFzX3RyaXZpYWxfY3Rvcl9pbXBsPFQ+Ojp2YWx1ZSkKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0hBU19UUklWSUFMX0NPTlNUUlVDVE9SX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9jb3B5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfY29weS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiOWU4ODcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9jb3B5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX1RSSVZJQUxfQ09QWV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX1RSSVZJQUxfQ09QWV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaW50cmluc2ljcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9sYXRpbGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9hbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfbm90LmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGhhc190cml2aWFsX2NvcHlfaW1wbAotewotI2lmZGVmIE5ETkJPT1NUX0hBU19UUklWSUFMX0NPUFkKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IE5ETkJPT1NUX0hBU19UUklWSUFMX0NPUFkoVCkpOwotI2Vsc2UKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2Q8VD46OnZhbHVlLAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3ZvbGF0aWxlPFQ+Ojp2YWx1ZSA+Ojp2YWx1ZQotICAgICAgPjo6dmFsdWUpKTsKLSNlbmRpZgotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaGFzX3RyaXZpYWxfY29weSxULDo6bmRuYm9vc3Q6OmRldGFpbDo6aGFzX3RyaXZpYWxfY29weV9pbXBsPFQ+Ojp2YWx1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3RvcixULDo6bmRuYm9vc3Q6OmRldGFpbDo6aGFzX3RyaXZpYWxfY29weV9pbXBsPFQ+Ojp2YWx1ZSkKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX3RyaXZpYWxfY29weSx2b2lkLGZhbHNlKQotI2lmbmRlZiBORE5CT09TVF9OT19DVl9WT0lEX1NQRUNJQUxJWkFUSU9OUwotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX3RyaXZpYWxfY29weSx2b2lkIGNvbnN0LGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX3RyaXZpYWxfY29weSx2b2lkIGNvbnN0IHZvbGF0aWxlLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX3RyaXZpYWxfY29weSx2b2lkIHZvbGF0aWxlLGZhbHNlKQotI2VuZGlmCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3Isdm9pZCxmYWxzZSkKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3Isdm9pZCBjb25zdCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3Isdm9pZCBjb25zdCB2b2xhdGlsZSxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3Isdm9pZCB2b2xhdGlsZSxmYWxzZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSEFTX1RSSVZJQUxfQ09QWV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX2Rlc3RydWN0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjgzYWY5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19UUklWSUFMX0RFU1RSVUNUT1JfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19UUklWSUFMX0RFU1RSVUNUT1JfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ludHJpbnNpY3MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9vci5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBoYXNfdHJpdmlhbF9kdG9yX2ltcGwKLXsKLSNpZmRlZiBORE5CT09TVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBORE5CT09TVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKFQpKTsKLSNlbHNlCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSA6Om5kbmJvb3N0Ojppc19wb2Q8VD46OnZhbHVlKTsKLSNlbmRpZgotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcixULDo6bmRuYm9vc3Q6OmRldGFpbDo6aGFzX3RyaXZpYWxfZHRvcl9pbXBsPFQ+Ojp2YWx1ZSkKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcix2b2lkLGZhbHNlKQotI2lmbmRlZiBORE5CT09TVF9OT19DVl9WT0lEX1NQRUNJQUxJWkFUSU9OUwotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcix2b2lkIGNvbnN0LGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcix2b2lkIGNvbnN0IHZvbGF0aWxlLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcix2b2lkIHZvbGF0aWxlLGZhbHNlKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9tb3ZlX2Fzc2lnbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX21vdmVfYXNzaWduLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzA2N2VmZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX21vdmVfYXNzaWduLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICAoQykgQ29weXJpZ2h0IEVyaWMgRnJpZWRtYW4gMjAwMi0yMDAzLgotLy8gIChDKSBDb3B5cmlnaHQgQW50b255IFBvbHVraGluIDIwMTMuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19UUklWSUFMX01PVkVfQVNTSUdOX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfVFJJVklBTF9NT1ZFX0FTU0lHTl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb25zdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9sYXRpbGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2VfYW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX25vdC5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBoYXNfdHJpdmlhbF9tb3ZlX2Fzc2lnbl9pbXBsCi17Ci0jaWZkZWYgTkROQk9PU1RfSEFTX1RSSVZJQUxfTU9WRV9BU1NJR04KLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IChORE5CT09TVF9IQVNfVFJJVklBTF9NT1ZFX0FTU0lHTihUKSkpOwotI2Vsc2UKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwKLSAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9kPFQ+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2NvbnN0PFQ+Ojp2YWx1ZSA+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3ZvbGF0aWxlPFQ+Ojp2YWx1ZSA+Ojp2YWx1ZQotICAgICAgICAgICA+Ojp2YWx1ZSkpOwotI2VuZGlmCi19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShoYXNfdHJpdmlhbF9tb3ZlX2Fzc2lnbixULDo6bmRuYm9vc3Q6OmRldGFpbDo6aGFzX3RyaXZpYWxfbW92ZV9hc3NpZ25faW1wbDxUPjo6dmFsdWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfdHJpdmlhbF9tb3ZlX2Fzc2lnbix2b2lkLGZhbHNlKQotI2lmbmRlZiBORE5CT09TVF9OT19DVl9WT0lEX1NQRUNJQUxJWkFUSU9OUwotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX3RyaXZpYWxfbW92ZV9hc3NpZ24sdm9pZCBjb25zdCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc190cml2aWFsX21vdmVfYXNzaWduLHZvaWQgY29uc3Qgdm9sYXRpbGUsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfdHJpdmlhbF9tb3ZlX2Fzc2lnbix2b2lkIHZvbGF0aWxlLGZhbHNlKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9IQVNfVFJJVklBTF9NT1ZFX0FTU0lHTl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfbW92ZV9jb25zdHJ1Y3Rvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX21vdmVfY29uc3RydWN0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZTljOTVjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfbW92ZV9jb25zdHJ1Y3Rvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgKEMpIENvcHlyaWdodCBFcmljIEZyaWVkbWFuIDIwMDItMjAwMy4KLS8vICAoQykgQ29weXJpZ2h0IEFudG9ueSBQb2x1a2hpbiAyMDEzLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfVFJJVklBTF9NT1ZFX0NPTlNUUlVDVE9SX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfVFJJVklBTF9NT1ZFX0NPTlNUUlVDVE9SX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pbnRyaW5zaWNzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvbGF0aWxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX2FuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9ub3QuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaGFzX3RyaXZpYWxfbW92ZV9jdG9yX2ltcGwKLXsKLSNpZmRlZiBORE5CT09TVF9IQVNfVFJJVklBTF9NT1ZFX0NPTlNUUlVDVE9SCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoTkROQk9PU1RfSEFTX1RSSVZJQUxfTU9WRV9DT05TVFJVQ1RPUihUKSkpOwotI2Vsc2UKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwKLSAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9kPFQ+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3ZvbGF0aWxlPFQ+Ojp2YWx1ZSA+Ojp2YWx1ZQotICAgICAgICAgICA+Ojp2YWx1ZSkpOwotI2VuZGlmCi19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShoYXNfdHJpdmlhbF9tb3ZlX2NvbnN0cnVjdG9yLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjpoYXNfdHJpdmlhbF9tb3ZlX2N0b3JfaW1wbDxUPjo6dmFsdWUpCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc190cml2aWFsX21vdmVfY29uc3RydWN0b3Isdm9pZCxmYWxzZSkKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc190cml2aWFsX21vdmVfY29uc3RydWN0b3Isdm9pZCBjb25zdCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc190cml2aWFsX21vdmVfY29uc3RydWN0b3Isdm9pZCBjb25zdCB2b2xhdGlsZSxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc190cml2aWFsX21vdmVfY29uc3RydWN0b3Isdm9pZCB2b2xhdGlsZSxmYWxzZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSEFTX1RSSVZJQUxfTU9WRV9DT05TVFJVQ1RPUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3VuYXJ5X21pbnVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3VuYXJ5X21pbnVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGY3OTVkYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc191bmFyeV9taW51cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19VTkFSWV9NSU5VU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX1VOQVJZX01JTlVTX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX3VuYXJ5X21pbnVzCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QIC0KLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgLyogcG9pbnRlciAqL1wKLSAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX3ByZWZpeF9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc191bmFyeV9wbHVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3VuYXJ5X3BsdXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOTZhZjZkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3VuYXJ5X3BsdXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfVU5BUllfUExVU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX1VOQVJZX1BMVVNfSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfdW5hcnlfcGx1cwotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCArCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIGZhbHNlCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX3ByZWZpeF9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc192aXJ0dWFsX2Rlc3RydWN0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdmlydHVhbF9kZXN0cnVjdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjY0NGVkZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc192aXJ0dWFsX2Rlc3RydWN0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwNS4gIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19WSVJUVUFMX0RFU1RSVUNUT1JfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19WSVJUVUFMX0RFU1RSVUNUT1JfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pbnRyaW5zaWNzLmhwcD4KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSNpZmRlZiBORE5CT09TVF9IQVNfVklSVFVBTF9ERVNUUlVDVE9SCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGhhc192aXJ0dWFsX2Rlc3RydWN0b3IsVCxORE5CT09TVF9IQVNfVklSVFVBTF9ERVNUUlVDVE9SKFQpKQotI2Vsc2UKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaGFzX3ZpcnR1YWxfZGVzdHJ1Y3RvcixULGZhbHNlKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19NRU1CRVJfRlVOQ1RJT05fUE9JTlRFUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaWNlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaWNlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGQyZWU5OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2ljZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayBhbmQgU3RldmUgQ2xlYXJ5IDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotLy8KLS8vICBtYWNyb3MgYW5kIGhlbHBlcnMgZm9yIHdvcmtpbmcgd2l0aCBpbnRlZ3JhbC1jb25zdGFudC1leHByZXNzaW9ucy4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JQ0VfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lDRV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC95ZXNfbm9fdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9vci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9hbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfbm90LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX2VxLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lDRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaW50ZWdyYWxfY29uc3RhbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pbnRlZ3JhbF9jb25zdGFudC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4YjkwNTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pbnRlZ3JhbF9jb25zdGFudC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwNS4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVfVFJBSVRTX0lOVEVHUkFMX0NPTlNUQU5UX0hQUAotI2RlZmluZSBORE5CT09TVF9UWVBFX1RSQUlUU19JTlRFR1JBTF9DT05TVEFOVF9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pbnRlZ3JhbF9jLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19ERVBFTkRFTlRfVFlQRVNfSU5fVEVNUExBVEVfVkFMVUVfUEFSQU1FVEVSUykgfHwgZGVmaW5lZChfX0JPUkxBTkRDX18pCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgaW50IHZhbD4KLSNlbHNlCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgVCB2YWw+Ci0jZW5kaWYKLXN0cnVjdCBpbnRlZ3JhbF9jb25zdGFudCA6IHB1YmxpYyBtcGw6OmludGVncmFsX2M8VCwgdmFsPgotewotICAgdHlwZWRlZiBpbnRlZ3JhbF9jb25zdGFudDxULHZhbD4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGludGVncmFsX2NvbnN0YW50PGJvb2wsdHJ1ZT4gOiBwdWJsaWMgbXBsOjp0cnVlXyAKLXsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSMgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MDk3KQotICAgdHlwZWRlZiBtcGw6OnRydWVfIGJhc2VfOwotICAgdXNpbmcgYmFzZV86OnZhbHVlOwotIyBwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLSAgIHR5cGVkZWYgaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCx0cnVlPiB0eXBlOwotfTsKLXRlbXBsYXRlPD4gc3RydWN0IGludGVncmFsX2NvbnN0YW50PGJvb2wsZmFsc2U+IDogcHVibGljIG1wbDo6ZmFsc2VfIAotewotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotIyBwcmFnbWEgd2FybmluZyhwdXNoKQotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQwOTcpCi0gICB0eXBlZGVmIG1wbDo6ZmFsc2VfIGJhc2VfOwotICAgdXNpbmcgYmFzZV86OnZhbHVlOwotIyBwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLSAgIHR5cGVkZWYgaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCxmYWxzZT4gdHlwZTsKLX07Ci0KLXR5cGVkZWYgaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCx0cnVlPiB0cnVlX3R5cGU7Ci10eXBlZGVmIGludGVncmFsX2NvbnN0YW50PGJvb2wsZmFsc2U+IGZhbHNlX3R5cGU7Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2ludGVncmFsX3Byb21vdGlvbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2ludGVncmFsX3Byb21vdGlvbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4NzExNDcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pbnRlZ3JhbF9wcm9tb3Rpb24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTk1ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA1IEFsZXhhbmRlciBOYXNvbm92LgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIEZJTEVfbmRuYm9vc3RfdHlwZV90cmFpdHNfaW50ZWdyYWxfcHJvbW90aW9uX2hwcF9JTkNMVURFRAotI2RlZmluZSBGSUxFX25kbmJvb3N0X3R5cGVfdHJhaXRzX2ludGVncmFsX3Byb21vdGlvbl9ocHBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZXZhbF9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lkZW50aXR5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pbnRlZ3JhbF9jb25zdGFudC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29uc3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2VudW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvbGF0aWxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwPgotCi0vLyBTaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdHlwZV90cmFpdHMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gNC41LzIKLXRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgbmVlZF9wcm9tb3Rpb24gOiBwdWJsaWMgbmRuYm9vc3Q6OmlzX2VudW08VD4ge307Ci0KLS8vIDQuNS8xCi10ZW1wbGF0ZTw+IHN0cnVjdCBuZWVkX3Byb21vdGlvbjxjaGFyICAgICAgICAgICAgICA+IDogcHVibGljIHRydWVfdHlwZSB7fTsKLXRlbXBsYXRlPD4gc3RydWN0IG5lZWRfcHJvbW90aW9uPHNpZ25lZCBjaGFyICAgICAgID4gOiBwdWJsaWMgdHJ1ZV90eXBlIHt9OwotdGVtcGxhdGU8PiBzdHJ1Y3QgbmVlZF9wcm9tb3Rpb248dW5zaWduZWQgY2hhciAgICAgPiA6IHB1YmxpYyB0cnVlX3R5cGUge307Ci10ZW1wbGF0ZTw+IHN0cnVjdCBuZWVkX3Byb21vdGlvbjxzaWduZWQgc2hvcnQgaW50ICA+IDogcHVibGljIHRydWVfdHlwZSB7fTsKLXRlbXBsYXRlPD4gc3RydWN0IG5lZWRfcHJvbW90aW9uPHVuc2lnbmVkIHNob3J0IGludD4gOiBwdWJsaWMgdHJ1ZV90eXBlIHt9OwotCi0KLS8vIFNwZWNpYWxpemF0aW9ucyBmb3Igbm9uLXN0YW5kYXJkIHR5cGVzLgotLy8gVHlwZSBpcyBwcm9tb3RlZCBpZiBpdCdzIHNtYWxsZXIgdGhlbiBpbnQuCi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfQVVYX1BST01PVEVfTk9OU1RBTkRBUkRfVFlQRShUKSBcCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgbmVlZF9wcm9tb3Rpb248VD4gICAgICAgICAgXAotICAgICAgICA6IHB1YmxpYyBpbnRlZ3JhbF9jb25zdGFudDxib29sLCAoc2l6ZW9mKFQpIDwgc2l6ZW9mKGludCkpPiB7fTsKLQotLy8gU2FtZSBzZXQgb2YgaW50ZWdyYWwgdHlwZXMgYXMgaW4gbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfaW50ZWdyYWwuaHBwLgotLy8gUGxlYXNlLCBrZWVwIGluIHN5bmMuCi0jaWYgKGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgKE5ETkJPT1NUX01TVkMgPCAxMzAwKSkgXAotICAgIHx8IChkZWZpbmVkKE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OKSAmJiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoTkROQk9PU1RfSU5URUxfQ1hYX1ZFUlNJT04gPD0gNjAwKSkgXAotICAgIHx8IChkZWZpbmVkKF9fQk9STEFORENfXykgJiYgKF9fQk9STEFORENfXyA9PSAweDYwMCkgJiYgKF9NU0NfVkVSIDwgMTMwMCkpCi0vLyBUT0RPOiBjb21tb24gbWFjcm8gZm9yIHRoaXMgI2lmLiBPciBiZXR0ZXIgeWV0LCBQUCBTRVEgb2Ygbm9uLXN0YW5kYXJkIHR5cGVzLgotTkROQk9PU1RfVFRfQVVYX1BST01PVEVfTk9OU1RBTkRBUkRfVFlQRShfX2ludDggICAgICAgICAgKQotTkROQk9PU1RfVFRfQVVYX1BST01PVEVfTk9OU1RBTkRBUkRfVFlQRSh1bnNpZ25lZCBfX2ludDggKQotTkROQk9PU1RfVFRfQVVYX1BST01PVEVfTk9OU1RBTkRBUkRfVFlQRShfX2ludDE2ICAgICAgICAgKQotTkROQk9PU1RfVFRfQVVYX1BST01PVEVfTk9OU1RBTkRBUkRfVFlQRSh1bnNpZ25lZCBfX2ludDE2KQotTkROQk9PU1RfVFRfQVVYX1BST01PVEVfTk9OU1RBTkRBUkRfVFlQRShfX2ludDMyICAgICAgICAgKQotTkROQk9PU1RfVFRfQVVYX1BST01PVEVfTk9OU1RBTkRBUkRfVFlQRSh1bnNpZ25lZCBfX2ludDMyKQotI2lmZGVmIF9fQk9STEFORENfXwotTkROQk9PU1RfVFRfQVVYX1BST01PVEVfTk9OU1RBTkRBUkRfVFlQRSh1bnNpZ25lZCBfX2ludDY0KQotTkROQk9PU1RfVFRfQVVYX1BST01PVEVfTk9OU1RBTkRBUkRfVFlQRSggICAgICAgICBfX2ludDY0KQotI2VuZGlmCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykKLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFX05PTlNUQU5EQVJEX1RZUEUobmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZSkKLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFX05PTlNUQU5EQVJEX1RZUEUobmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlICkKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX01TX0lOVDY0KQotTkROQk9PU1RfVFRfQVVYX1BST01PVEVfTk9OU1RBTkRBUkRfVFlQRSh1bnNpZ25lZCBfX2ludDY0KQotTkROQk9PU1RfVFRfQVVYX1BST01PVEVfTk9OU1RBTkRBUkRfVFlQRSggICAgICAgICBfX2ludDY0KQotI2VuZGlmCi0KLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfUFJPTU9URV9OT05TVEFOREFSRF9UWVBFCi0KLQotI2lmbmRlZiBORE5CT09TVF9OT19JTlRSSU5TSUNfV0NIQVJfVAotLy8gNC41LzIKLXRlbXBsYXRlPD4gc3RydWN0IG5lZWRfcHJvbW90aW9uPHdjaGFyX3Q+IDogcHVibGljIHRydWVfdHlwZSB7fTsKLSNlbmRpZgotCi0vLyA0LjUvMyAoaW50ZWdyYWwgYml0LWZpZWxkKSBpcyBub3Qgc3VwcG9ydGVkLgotCi0vLyA0LjUvNAotdGVtcGxhdGU8PiBzdHJ1Y3QgbmVlZF9wcm9tb3Rpb248Ym9vbD4gOiBwdWJsaWMgdHJ1ZV90eXBlIHt9OwotCi0KLS8vIEdldCBwcm9tb3RlZCB0eXBlIGJ5IGluZGV4IGFuZCBjdiBxdWFsaWZpZXJzLgotCi10ZW1wbGF0ZTxpbnQgSW5kZXgsIGludCBJc0NvbnN0LCBpbnQgSXNWb2xhdGlsZT4gc3RydWN0IHByb21vdGVfZnJvbV9pbmRleDsKLQotI2RlZmluZSBORE5CT09TVF9UVF9BVVhfUFJPTU9URV9GUk9NX0lOREVYKE4sVCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBwcm9tb3RlX2Zyb21faW5kZXg8TiwwLDA+IHsgdHlwZWRlZiBUIHR5cGU7IH07ICAgICAgICAgICBcCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcHJvbW90ZV9mcm9tX2luZGV4PE4sMCwxPiB7IHR5cGVkZWYgVCB2b2xhdGlsZSB0eXBlOyB9OyAgXAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHByb21vdGVfZnJvbV9pbmRleDxOLDEsMD4geyB0eXBlZGVmIFQgY29uc3QgdHlwZTsgfTsgICAgIFwKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBwcm9tb3RlX2Zyb21faW5kZXg8TiwxLDE+IHsgdHlwZWRlZiBUIGNvbnN0IHZvbGF0aWxlIHR5cGU7IH07Ci0KLQotTkROQk9PU1RfVFRfQVVYX1BST01PVEVfRlJPTV9JTkRFWCgxLCBpbnQgICAgICAgICAgKQotTkROQk9PU1RfVFRfQVVYX1BST01PVEVfRlJPTV9JTkRFWCgyLCB1bnNpZ25lZCBpbnQgKQotTkROQk9PU1RfVFRfQVVYX1BST01PVEVfRlJPTV9JTkRFWCgzLCBsb25nICAgICAgICAgKQotTkROQk9PU1RfVFRfQVVYX1BST01PVEVfRlJPTV9JTkRFWCg0LCB1bnNpZ25lZCBsb25nKQotCi0KLS8vIFdBUk5JTkc6IGludGVncmFsIHByb21vdGlvbnMgdG8gbm9uLXN0YW5kYXJkIHR5cGVzCi0vLyBsb25nIGxvbmcgYW5kIF9faW50NjQgYXJlIG5vdCBkZWZpbmVkIGJ5IHRoZSBzdGFuZGFyZC4KLS8vIEFkZGl0aW9uYWwgc3BlY2lhbGlzYXRpb25zIGFuZCBvdmVybG9hZHMgc2hvdWxkbid0Ci0vLyBpbnRyb2R1Y2UgYW1iaWd1aXR5LCB0aG91Z2guCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi1ORE5CT09TVF9UVF9BVVhfUFJPTU9URV9GUk9NX0lOREVYKDUsIG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSApCi1ORE5CT09TVF9UVF9BVVhfUFJPTU9URV9GUk9NX0lOREVYKDYsIG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUpCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19NU19JTlQ2NCkKLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFX0ZST01fSU5ERVgoNywgX19pbnQ2NCAgICAgICAgICkKLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFX0ZST01fSU5ERVgoOCwgdW5zaWduZWQgX19pbnQ2NCkKLSNlbmRpZgotCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX1BST01PVEVfRlJPTV9JTkRFWAotCi0KLS8vIERlZmluZSBORE5CT09TVF9UVF9BVVhfUFJPTU9URURfSU5ERVhfVEVTVEVSOgotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0KLXRlbXBsYXRlPGludCBOPgotc3RydWN0IHNpemVkX3R5cGVfZm9yX3Byb21vdGlvbgotewotICAgIHR5cGVkZWYgY2hhciAoJnR5cGUpW05dOwotfTsKLQotI2RlZmluZSBORE5CT09TVF9UVF9BVVhfUFJPTU9URURfSU5ERVhfVEVTVEVSKEksVCkgXAotICAgIHNpemVkX3R5cGVfZm9yX3Byb21vdGlvbjxJPjo6dHlwZSBwcm9tb3RlZF9pbmRleF90ZXN0ZXIoVCk7Ci0KLSNlbHNlCi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfQVVYX1BST01PVEVEX0lOREVYX1RFU1RFUihJLFQpIFwKLSAgICBjaGFyICgmcHJvbW90ZWRfaW5kZXhfdGVzdGVyKFQpKVtJXTsKLQotI2VuZGlmCi0KLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFRF9JTkRFWF9URVNURVIoMSwgaW50ICAgICAgICAgICkKLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFRF9JTkRFWF9URVNURVIoMiwgdW5zaWduZWQgaW50ICkKLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFRF9JTkRFWF9URVNURVIoMywgbG9uZyAgICAgICAgICkKLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFRF9JTkRFWF9URVNURVIoNCwgdW5zaWduZWQgbG9uZykKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykKLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFRF9JTkRFWF9URVNURVIoNSwgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlICkKLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFRF9JTkRFWF9URVNURVIoNiwgbmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZSkKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX01TX0lOVDY0KQotTkROQk9PU1RfVFRfQVVYX1BST01PVEVEX0lOREVYX1RFU1RFUig3LCBfX2ludDY0ICAgICAgICAgKQotTkROQk9PU1RfVFRfQVVYX1BST01PVEVEX0lOREVYX1RFU1RFUig4LCB1bnNpZ25lZCBfX2ludDY0KQotI2VuZGlmCi0KLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfUFJPTU9URURfSU5ERVhfVEVTVEVSCi0KLQotLy8gR2V0IGFuIGluZGV4IG9mIHByb21vdGVkIHR5cGUgZm9yIHR5cGUgVC4KLS8vIFByZWNvbmRpdGlvbjogbmVlZF9wcm9tb3Rpb248VD4KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgcHJvbW90ZWRfaW5kZXgKLXsKLSAgICBzdGF0aWMgVCB0ZXN0ZWU7IC8vIHVuZGVmaW5lZAotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gc2l6ZW9mKHByb21vdGVkX2luZGV4X3Rlc3RlcigrdGVzdGVlKSkgKTsKLSAgICAvLyBVbmFyeSBwbHVzIHByb21vdGVzIHRlc3RlZSAgICAgICAgICAgICAgICAgICAgTE9PSyBIRVJFIC0tLT4gXgotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBpbnRlZ3JhbF9wcm9tb3Rpb25faW1wbAotewotICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBwcm9tb3RlX2Zyb21faW5kZXg8Ci0gICAgICAgIChuZG5ib29zdDo6dHlwZV90cmFpdHM6OmRldGFpbDo6cHJvbW90ZWRfaW5kZXg8VD46OnZhbHVlKQotICAgICAgLCAobmRuYm9vc3Q6OmlzX2NvbnN0PFQ+Ojp2YWx1ZSkKLSAgICAgICwgKG5kbmJvb3N0Ojppc192b2xhdGlsZTxUPjo6dmFsdWUpCi0gICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IGludGVncmFsX3Byb21vdGlvbgotICA6IHB1YmxpYyBuZG5ib29zdDo6bXBsOjpldmFsX2lmPAotICAgICAgICBuZWVkX3Byb21vdGlvbjxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJlbW92ZV9jdjxUPjo6dHlwZT4KLSAgICAgICwgaW50ZWdyYWxfcHJvbW90aW9uX2ltcGw8VD4KLSAgICAgICwgbmRuYm9vc3Q6Om1wbDo6aWRlbnRpdHk8VD4KLSAgICAgID4KLXsKLX07Ci0KLX0gfQotCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9ERUYxKAotICAgICAgaW50ZWdyYWxfcHJvbW90aW9uCi0gICAgLCBUCi0gICAgLCBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FCi0gICAgICAgIG5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6ZGV0YWlsOjppbnRlZ3JhbF9wcm9tb3Rpb248VD46OnR5cGUKLSAgICApCi19Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIEZJTEVfbmRuYm9vc3RfdHlwZV90cmFpdHNfaW50ZWdyYWxfcHJvbW90aW9uX2hwcF9JTkNMVURFRAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2ludHJpbnNpY3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pbnRyaW5zaWNzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTc4YjJlMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2ludHJpbnNpY3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzA1ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lOVFJJTlNJQ1NfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lOVFJJTlNJQ1NfSFBQX0lOQ0xVREVECi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfQ09ORklHX0hQUF9JTkNMVURFRAotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbmZpZy5ocHA+Ci0jZW5kaWYKLQotLy8KLS8vIEhlbHBlciBtYWNyb3MgZm9yIGJ1aWx0aW4gY29tcGlsZXIgc3VwcG9ydC4KLS8vIElmIHlvdXIgY29tcGlsZXIgaGFzIGJ1aWx0aW4gc3VwcG9ydCBmb3IgYW55IG9mIHRoZSBmb2xsb3dpbmcKLS8vIHRyYWl0cyBjb25jZXB0cywgdGhlbiByZWRlZmluZSB0aGUgYXBwcm9wcmlhdGUgbWFjcm9zIHRvIHBpY2sKLS8vIHVwIG9uIHRoZSBjb21waWxlciBzdXBwb3J0OgotLy8KLS8vICh0aGVzZSBzaG91bGQgbGFyZ2VseSBpZ25vcmUgY3YtcXVhbGlmaWVycykKLS8vIE5ETkJPT1NUX0lTX1VOSU9OKFQpIHNob3VsZCBldmFsdWF0ZSB0byB0cnVlIGlmIFQgaXMgYSB1bmlvbiB0eXBlCi0vLyBORE5CT09TVF9JU19QT0QoVCkgc2hvdWxkIGV2YWx1YXRlIHRvIHRydWUgaWYgVCBpcyBhIFBPRCB0eXBlCi0vLyBORE5CT09TVF9JU19FTVBUWShUKSBzaG91bGQgZXZhbHVhdGUgdG8gdHJ1ZSBpZiBUIGlzIGFuIGVtcHR5IGNsYXNzIHR5cGUgKGFuZCBub3QgYSB1bmlvbikKLS8vIE5ETkJPT1NUX0hBU19UUklWSUFMX0NPTlNUUlVDVE9SKFQpIHNob3VsZCBldmFsdWF0ZSB0byB0cnVlIGlmICJUIHg7IiBoYXMgbm8gZWZmZWN0Ci0vLyBORE5CT09TVF9IQVNfVFJJVklBTF9DT1BZKFQpIHNob3VsZCBldmFsdWF0ZSB0byB0cnVlIGlmIFQodCkgPD09PiBtZW1jcHkKLS8vIE5ETkJPT1NUX0hBU19UUklWSUFMX01PVkVfQ09OU1RSVUNUT1IoVCkgc2hvdWxkIGV2YWx1YXRlIHRvIHRydWUgaWYgVChuZG5ib29zdDo6bW92ZSh0KSkgPD09PiBtZW1jcHkKLS8vIE5ETkJPT1NUX0hBU19UUklWSUFMX0FTU0lHTihUKSBzaG91bGQgZXZhbHVhdGUgdG8gdHJ1ZSBpZiB0ID0gdSA8PT0+IG1lbWNweQotLy8gTkROQk9PU1RfSEFTX1RSSVZJQUxfTU9WRV9BU1NJR04oVCkgc2hvdWxkIGV2YWx1YXRlIHRvIHRydWUgaWYgdCA9IG5kbmJvb3N0Ojptb3ZlKHUpIDw9PT4gbWVtY3B5Ci0vLyBORE5CT09TVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKFQpIHNob3VsZCBldmFsdWF0ZSB0byB0cnVlIGlmIH5UKCkgaGFzIG5vIGVmZmVjdAotLy8gTkROQk9PU1RfSEFTX05PVEhST1dfQ09OU1RSVUNUT1IoVCkgc2hvdWxkIGV2YWx1YXRlIHRvIHRydWUgaWYgIlQgeDsiIGNhbiBub3QgdGhyb3cKLS8vIE5ETkJPT1NUX0hBU19OT1RIUk9XX0NPUFkoVCkgc2hvdWxkIGV2YWx1YXRlIHRvIHRydWUgaWYgVCh0KSBjYW4gbm90IHRocm93Ci0vLyBORE5CT09TVF9IQVNfTk9USFJPV19BU1NJR04oVCkgc2hvdWxkIGV2YWx1YXRlIHRvIHRydWUgaWYgdCA9IHUgY2FuIG5vdCB0aHJvdwotLy8gTkROQk9PU1RfSEFTX1ZJUlRVQUxfREVTVFJVQ1RPUihUKSBzaG91bGQgZXZhbHVhdGUgdG8gdHJ1ZSBUIGhhcyBhIHZpcnR1YWwgZGVzdHJ1Y3RvcgotLy8KLS8vIFRoZSBmb2xsb3dpbmcgY2FuIGFsc28gYmUgZGVmaW5lZDogd2hlbiBkZXRlY3RlZCBvdXIgaW1wbGVtZW50YXRpb24gaXMgZ3JlYXRseSBzaW1wbGlmaWVkLgotLy8KLS8vIE5ETkJPT1NUX0lTX0FCU1RSQUNUKFQpIHRydWUgaWYgVCBpcyBhbiBhYnN0cmFjdCB0eXBlCi0vLyBORE5CT09TVF9JU19CQVNFX09GKFQsVSkgdHJ1ZSBpZiBUIGlzIGEgYmFzZSBjbGFzcyBvZiBVCi0vLyBORE5CT09TVF9JU19DTEFTUyhUKSB0cnVlIGlmIFQgaXMgYSBjbGFzcyB0eXBlIChhbmQgbm90IGEgdW5pb24pCi0vLyBORE5CT09TVF9JU19DT05WRVJUSUJMRShULFUpIHRydWUgaWYgVCBpcyBjb252ZXJ0aWJsZSB0byBVCi0vLyBORE5CT09TVF9JU19FTlVNKFQpIHRydWUgaXMgVCBpcyBhbiBlbnVtCi0vLyBORE5CT09TVF9JU19QT0xZTU9SUEhJQyhUKSB0cnVlIGlmIFQgaXMgYSBwb2x5bW9ycGhpYyB0eXBlCi0vLyBORE5CT09TVF9BTElHTk1FTlRfT0YoVCkgc2hvdWxkIGV2YWx1YXRlIHRvIHRoZSBhbGlnbm1lbnQgcmVxdWlyZW1lbnRzIG9mIHR5cGUgVC4KLQotI2lmZGVmIE5ETkJPT1NUX0hBU19TR0lfVFlQRV9UUkFJVFMKLSAgICAvLyBIb29rIGludG8gU0dJJ3MgX190eXBlX3RyYWl0cyBjbGFzcywgdGhpcyB3aWxsIHBpY2sgdXAgdXNlciBzdXBwbGllZAotICAgIC8vIHNwZWNpYWxpemF0aW9ucyBhcyB3ZWxsIGFzIFNHSSAtIGNvbXBpbGVyIHN1cHBsaWVkIHNwZWNpYWxpemF0aW9ucy4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLSMgICBpZmRlZiBfX05ldEJTRF9fCi0gICAgICAvLyBUaGVyZSBhcmUgdHdvIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0eXBlX3RyYWl0cy5oIG9uIE5ldEJTRCBvbiBTcGFyawotICAgICAgLy8gdXNlIGFuIGltcGxpY2l0IGluY2x1ZGUgdmlhIGFsZ29yaXRobSBpbnN0ZWFkLCB0byBtYWtlIHN1cmUgd2UgZ2V0Ci0gICAgICAvLyB0aGUgc2FtZSB2ZXJzaW9uIGFzIHRoZSBzdGQgbGliOgotIyAgICAgaW5jbHVkZSA8YWxnb3JpdGhtPgotIyAgIGVsc2UKLSMgICAgaW5jbHVkZSA8dHlwZV90cmFpdHMuaD4KLSMgICBlbmRpZgotIyAgIGRlZmluZSBORE5CT09TVF9JU19QT0QoVCkgOjpuZG5ib29zdDo6aXNfc2FtZTwgdHlwZW5hbWUgOjpfX3R5cGVfdHJhaXRzPFQ+Ojppc19QT0RfdHlwZSwgOjpfX3RydWVfdHlwZT46OnZhbHVlCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0NPTlNUUlVDVE9SKFQpIDo6bmRuYm9vc3Q6OmlzX3NhbWU8IHR5cGVuYW1lIDo6X190eXBlX3RyYWl0czxUPjo6aGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvciwgOjpfX3RydWVfdHlwZT46OnZhbHVlCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0NPUFkoVCkgOjpuZG5ib29zdDo6aXNfc2FtZTwgdHlwZW5hbWUgOjpfX3R5cGVfdHJhaXRzPFQ+OjpoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yLCA6Ol9fdHJ1ZV90eXBlPjo6dmFsdWUKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfQVNTSUdOKFQpIDo6bmRuYm9vc3Q6OmlzX3NhbWU8IHR5cGVuYW1lIDo6X190eXBlX3RyYWl0czxUPjo6aGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVyYXRvciwgOjpfX3RydWVfdHlwZT46OnZhbHVlCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoVCkgOjpuZG5ib29zdDo6aXNfc2FtZTwgdHlwZW5hbWUgOjpfX3R5cGVfdHJhaXRzPFQ+OjpoYXNfdHJpdmlhbF9kZXN0cnVjdG9yLCA6Ol9fdHJ1ZV90eXBlPjo6dmFsdWUKLQotIyAgIGlmZGVmIF9fc2dpCi0jICAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UWVBFX1RSQUlUU19JTlRSSU5TSUNTCi0jICAgZW5kaWYKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX01TTF9DUFBfXykgJiYgKF9fTVNMX0NQUF9fID49IDB4ODAwMCkKLSAgICAvLyBNZXRyb3dlcmtzIGNvbXBpbGVyIGlzIGFjcXVpcmluZyBpbnRyaW5zaWMgdHlwZSB0cmFpdHMgc3VwcG9ydAotICAgIC8vIHBvc3QgdmVyc2lvbiA4LiAgV2UgaG9vayBpbnRvIHRoZSBwdWJsaXNoZWQgaW50ZXJmYWNlIHRvIHBpY2sgdXAKLSAgICAvLyB1c2VyIGRlZmluZWQgc3BlY2lhbGl6YXRpb25zIGFzIHdlbGwgYXMgY29tcGlsZXIgaW50cmluc2ljcyBhcyAKLSAgICAvLyBhbmQgd2hlbiB0aGV5IGJlY29tZSBhdmFpbGFibGU6Ci0jICAgaW5jbHVkZSA8bXNsX3V0aWxpdHk+Ci0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX1VOSU9OKFQpIE5ETkJPT1NUX1NURF9FWFRFTlNJT05fTkFNRVNQQUNFOjppc191bmlvbjxUPjo6dmFsdWUKLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfUE9EKFQpIE5ETkJPT1NUX1NURF9FWFRFTlNJT05fTkFNRVNQQUNFOjppc19QT0Q8VD46OnZhbHVlCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0NPTlNUUlVDVE9SKFQpIE5ETkJPT1NUX1NURF9FWFRFTlNJT05fTkFNRVNQQUNFOjpoYXNfdHJpdmlhbF9kZWZhdWx0X2N0b3I8VD46OnZhbHVlCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0NPUFkoVCkgTkROQk9PU1RfU1REX0VYVEVOU0lPTl9OQU1FU1BBQ0U6Omhhc190cml2aWFsX2NvcHlfY3RvcjxUPjo6dmFsdWUKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfQVNTSUdOKFQpIE5ETkJPT1NUX1NURF9FWFRFTlNJT05fTkFNRVNQQUNFOjpoYXNfdHJpdmlhbF9hc3NpZ25tZW50PFQ+Ojp2YWx1ZQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKFQpIE5ETkJPT1NUX1NURF9FWFRFTlNJT05fTkFNRVNQQUNFOjpoYXNfdHJpdmlhbF9kdG9yPFQ+Ojp2YWx1ZQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFlQRV9UUkFJVFNfSU5UUklOU0lDUwotI2VuZGlmCi0KLSNpZiAoZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiBkZWZpbmVkKE5ETkJPT1NUX01TVkNfRlVMTF9WRVIpICYmIChORE5CT09TVF9NU1ZDX0ZVTExfVkVSID49MTQwMDUwMjE1KSlcCi0gICAgICAgICB8fCAoZGVmaW5lZChORE5CT09TVF9JTlRFTCkgJiYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDE1MDApKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Z1bmN0aW9uLmhwcD4KLQotIyAgIGRlZmluZSBORE5CT09TVF9JU19VTklPTihUKSBfX2lzX3VuaW9uKFQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX1BPRChUKSAoX19pc19wb2QoVCkgJiYgX19oYXNfdHJpdmlhbF9jb25zdHJ1Y3RvcihUKSkKLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfRU1QVFkoVCkgX19pc19lbXB0eShUKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9DT05TVFJVQ1RPUihUKSBfX2hhc190cml2aWFsX2NvbnN0cnVjdG9yKFQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0NPUFkoVCkgKF9faGFzX3RyaXZpYWxfY29weShUKXx8ICggOjpuZG5ib29zdDo6aXNfcG9kPFQ+Ojp2YWx1ZSAmJiAhOjpuZG5ib29zdDo6aXNfdm9sYXRpbGU8VD46OnZhbHVlKSkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfQVNTSUdOKFQpIChfX2hhc190cml2aWFsX2Fzc2lnbihUKSB8fCAoIDo6bmRuYm9vc3Q6OmlzX3BvZDxUPjo6dmFsdWUgJiYgISA6Om5kbmJvb3N0Ojppc19jb25zdDxUPjo6dmFsdWUgJiYgITo6bmRuYm9vc3Q6OmlzX3ZvbGF0aWxlPFQ+Ojp2YWx1ZSkpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoVCkgKF9faGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcihUKSB8fCA6Om5kbmJvb3N0Ojppc19wb2Q8VD46OnZhbHVlKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfTk9USFJPV19DT05TVFJVQ1RPUihUKSAoX19oYXNfbm90aHJvd19jb25zdHJ1Y3RvcihUKSB8fCA6Om5kbmJvb3N0OjpoYXNfdHJpdmlhbF9jb25zdHJ1Y3RvcjxUPjo6dmFsdWUpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19OT1RIUk9XX0NPUFkoVCkgKF9faGFzX25vdGhyb3dfY29weShUKSB8fCA6Om5kbmJvb3N0OjpoYXNfdHJpdmlhbF9jb3B5PFQ+Ojp2YWx1ZSkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX05PVEhST1dfQVNTSUdOKFQpIChfX2hhc19ub3Rocm93X2Fzc2lnbihUKSB8fCA6Om5kbmJvb3N0OjpoYXNfdHJpdmlhbF9hc3NpZ248VD46OnZhbHVlKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVklSVFVBTF9ERVNUUlVDVE9SKFQpIF9faGFzX3ZpcnR1YWxfZGVzdHJ1Y3RvcihUKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX0FCU1RSQUNUKFQpIF9faXNfYWJzdHJhY3QoVCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfQkFTRV9PRihULFUpIChfX2lzX2Jhc2Vfb2YoVCxVKSAmJiAhaXNfc2FtZTxULFU+Ojp2YWx1ZSkKLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfQ0xBU1MoVCkgX19pc19jbGFzcyhUKQotIyAgIGRlZmluZSBORE5CT09TVF9JU19DT05WRVJUSUJMRShULFUpICgoX19pc19jb252ZXJ0aWJsZV90byhULFUpIHx8IChpc19zYW1lPFQsVT46OnZhbHVlICYmICFpc19mdW5jdGlvbjxVPjo6dmFsdWUpKSAmJiAhX19pc19hYnN0cmFjdChVKSkKLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfRU5VTShUKSBfX2lzX2VudW0oVCkKLS8vICBUaGlzIG9uZSBkb2Vzbid0IHF1aXRlIGFsd2F5cyBkbyB0aGUgcmlnaHQgdGhpbmc6Ci0vLyAgIyAgIGRlZmluZSBORE5CT09TVF9JU19QT0xZTU9SUEhJQyhUKSBfX2lzX3BvbHltb3JwaGljKFQpCi0vLyAgVGhpcyBvbmUgZmFpbHMgaWYgdGhlIGRlZmF1bHQgYWxpZ25tZW50IGhhcyBiZWVuIGNoYW5nZWQgd2l0aCAvWnA6Ci0vLyAgIyAgIGRlZmluZSBORE5CT09TVF9BTElHTk1FTlRfT0YoVCkgX19hbGlnbm9mKFQpCi0KLSMgICBpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTcwMCkKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX01PVkVfQ09OU1RSVUNUT1IoVCkgKChfX2hhc190cml2aWFsX21vdmVfY29uc3RydWN0b3IoVCkgfHwgOjpuZG5ib29zdDo6aXNfcG9kPFQ+Ojp2YWx1ZSkgJiYgITo6bmRuYm9vc3Q6OmlzX3ZvbGF0aWxlPFQ+Ojp2YWx1ZSkKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX01PVkVfQVNTSUdOKFQpICgoX19oYXNfdHJpdmlhbF9tb3ZlX2Fzc2lnbihUKSB8fCA6Om5kbmJvb3N0Ojppc19wb2Q8VD46OnZhbHVlKSAmJiAhIDo6bmRuYm9vc3Q6OmlzX2NvbnN0PFQ+Ojp2YWx1ZSAmJiAhOjpuZG5ib29zdDo6aXNfdm9sYXRpbGU8VD46OnZhbHVlKQotIyAgIGVuZGlmCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RZUEVfVFJBSVRTX0lOVFJJTlNJQ1MKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX0RNQ19fKSAmJiAoX19ETUNfXyA+PSAweDg0OCkKLS8vIEZvciBEaWdpdGFsIE1hcnMgQysrLCB3d3cuZGlnaXRhbG1hcnMuY29tCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX1VOSU9OKFQpIChfX3R5cGVpbmZvKFQpICYgMHg0MDApCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX1BPRChUKSAoX190eXBlaW5mbyhUKSAmIDB4ODAwKQotIyAgIGRlZmluZSBORE5CT09TVF9JU19FTVBUWShUKSAoX190eXBlaW5mbyhUKSAmIDB4MTAwMCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfQ09OU1RSVUNUT1IoVCkgKF9fdHlwZWluZm8oVCkgJiAweDEwKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9DT1BZKFQpIChfX3R5cGVpbmZvKFQpICYgMHgyMCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfQVNTSUdOKFQpIChfX3R5cGVpbmZvKFQpICYgMHg0MCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihUKSAoX190eXBlaW5mbyhUKSAmIDB4OCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX05PVEhST1dfQ09OU1RSVUNUT1IoVCkgKF9fdHlwZWluZm8oVCkgJiAweDgwKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfTk9USFJPV19DT1BZKFQpIChfX3R5cGVpbmZvKFQpICYgMHgxMDApCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19OT1RIUk9XX0FTU0lHTihUKSAoX190eXBlaW5mbyhUKSAmIDB4MjAwKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVklSVFVBTF9ERVNUUlVDVE9SKFQpIChfX3R5cGVpbmZvKFQpICYgMHg0KQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFlQRV9UUkFJVFNfSU5UUklOU0lDUwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0NMQU5HKSAmJiBkZWZpbmVkKF9faGFzX2ZlYXR1cmUpCi0jICAgaW5jbHVkZSA8Y3N0ZGRlZj4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvbGF0aWxlLmhwcD4KLQotIyAgIGlmIF9faGFzX2ZlYXR1cmUoaXNfdW5pb24pCi0jICAgICBkZWZpbmUgTkROQk9PU1RfSVNfVU5JT04oVCkgX19pc191bmlvbihUKQotIyAgIGVuZGlmCi0jICAgaWYgKCFkZWZpbmVkKF9fR0xJQkNYWF9fKSB8fCAoX19HTElCQ1hYX18gPj0gMjAwODAzMDYgJiYgX19HTElCQ1hYX18gIT0gMjAwODA1MTkpKSAmJiBfX2hhc19mZWF0dXJlKGlzX3BvZCkKLSMgICAgIGRlZmluZSBORE5CT09TVF9JU19QT0QoVCkgX19pc19wb2QoVCkKLSMgICBlbmRpZgotIyAgIGlmICghZGVmaW5lZChfX0dMSUJDWFhfXykgfHwgKF9fR0xJQkNYWF9fID49IDIwMDgwMzA2ICYmIF9fR0xJQkNYWF9fICE9IDIwMDgwNTE5KSkgJiYgX19oYXNfZmVhdHVyZShpc19lbXB0eSkKLSMgICAgIGRlZmluZSBORE5CT09TVF9JU19FTVBUWShUKSBfX2lzX2VtcHR5KFQpCi0jICAgZW5kaWYKLSMgICBpZiBfX2hhc19mZWF0dXJlKGhhc190cml2aWFsX2NvbnN0cnVjdG9yKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0NPTlNUUlVDVE9SKFQpIF9faGFzX3RyaXZpYWxfY29uc3RydWN0b3IoVCkKLSMgICBlbmRpZgotIyAgIGlmIF9faGFzX2ZlYXR1cmUoaGFzX3RyaXZpYWxfY29weSkKLSMgICAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9DT1BZKFQpIChfX2hhc190cml2aWFsX2NvcHkoVCkgJiYgIWlzX3JlZmVyZW5jZTxUPjo6dmFsdWUgJiYgIWlzX3ZvbGF0aWxlPFQ+Ojp2YWx1ZSkKLSMgICBlbmRpZgotIyAgIGlmIF9faGFzX2ZlYXR1cmUoaGFzX3RyaXZpYWxfYXNzaWduKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0FTU0lHTihUKSAoX19oYXNfdHJpdmlhbF9hc3NpZ24oVCkgJiYgIWlzX3ZvbGF0aWxlPFQ+Ojp2YWx1ZSkKLSMgICBlbmRpZgotIyAgIGlmIF9faGFzX2ZlYXR1cmUoaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcikKLSMgICAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKFQpIF9faGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcihUKQotIyAgIGVuZGlmCi0jICAgaWYgX19oYXNfZmVhdHVyZShoYXNfbm90aHJvd19jb25zdHJ1Y3RvcikKLSMgICAgIGRlZmluZSBORE5CT09TVF9IQVNfTk9USFJPV19DT05TVFJVQ1RPUihUKSBfX2hhc19ub3Rocm93X2NvbnN0cnVjdG9yKFQpCi0jICAgZW5kaWYKLSMgICBpZiBfX2hhc19mZWF0dXJlKGhhc19ub3Rocm93X2NvcHkpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX05PVEhST1dfQ09QWShUKSAoX19oYXNfbm90aHJvd19jb3B5KFQpICYmICFpc192b2xhdGlsZTxUPjo6dmFsdWUgJiYgIWlzX3JlZmVyZW5jZTxUPjo6dmFsdWUpCi0jICAgZW5kaWYKLSMgICBpZiBfX2hhc19mZWF0dXJlKGhhc19ub3Rocm93X2Fzc2lnbikKLSMgICAgIGRlZmluZSBORE5CT09TVF9IQVNfTk9USFJPV19BU1NJR04oVCkgKF9faGFzX25vdGhyb3dfYXNzaWduKFQpICYmICFpc192b2xhdGlsZTxUPjo6dmFsdWUpCi0jICAgZW5kaWYKLSMgICBpZiBfX2hhc19mZWF0dXJlKGhhc192aXJ0dWFsX2Rlc3RydWN0b3IpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX1ZJUlRVQUxfREVTVFJVQ1RPUihUKSBfX2hhc192aXJ0dWFsX2Rlc3RydWN0b3IoVCkKLSMgICBlbmRpZgotIyAgIGlmIF9faGFzX2ZlYXR1cmUoaXNfYWJzdHJhY3QpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfSVNfQUJTVFJBQ1QoVCkgX19pc19hYnN0cmFjdChUKQotIyAgIGVuZGlmCi0jICAgaWYgX19oYXNfZmVhdHVyZShpc19iYXNlX29mKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0lTX0JBU0VfT0YoVCxVKSAoX19pc19iYXNlX29mKFQsVSkgJiYgIWlzX3NhbWU8VCxVPjo6dmFsdWUpCi0jICAgZW5kaWYKLSMgICBpZiBfX2hhc19mZWF0dXJlKGlzX2NsYXNzKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0lTX0NMQVNTKFQpIF9faXNfY2xhc3MoVCkKLSMgICBlbmRpZgotIyAgIGlmIF9faGFzX2ZlYXR1cmUoaXNfY29udmVydGlibGVfdG8pCi0jICAgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hYnN0cmFjdC5ocHA+Ci0jICAgICBkZWZpbmUgTkROQk9PU1RfSVNfQ09OVkVSVElCTEUoVCxVKSAoX19pc19jb252ZXJ0aWJsZV90byhULFUpICYmICE6Om5kbmJvb3N0Ojppc19hYnN0cmFjdDxVPjo6dmFsdWUpCi0jICAgZW5kaWYKLSMgICBpZiBfX2hhc19mZWF0dXJlKGlzX2VudW0pCi0jICAgICBkZWZpbmUgTkROQk9PU1RfSVNfRU5VTShUKSBfX2lzX2VudW0oVCkKLSMgICBlbmRpZgotIyAgIGlmIF9faGFzX2ZlYXR1cmUoaXNfcG9seW1vcnBoaWMpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfSVNfUE9MWU1PUlBISUMoVCkgX19pc19wb2x5bW9ycGhpYyhUKQotIyAgIGVuZGlmCi0jICAgaWYgX19oYXNfZmVhdHVyZShoYXNfdHJpdmlhbF9tb3ZlX2NvbnN0cnVjdG9yKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX01PVkVfQ09OU1RSVUNUT1IoVCkgX19oYXNfdHJpdmlhbF9tb3ZlX2NvbnN0cnVjdG9yKFQpCi0jICAgZW5kaWYKLSMgICBpZiBfX2hhc19mZWF0dXJlKGhhc190cml2aWFsX21vdmVfYXNzaWduKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX01PVkVfQVNTSUdOKFQpIF9faGFzX3RyaXZpYWxfbW92ZV9hc3NpZ24oVCkKLSMgICBlbmRpZgotIyAgIGRlZmluZSBORE5CT09TVF9BTElHTk1FTlRfT0YoVCkgX19hbGlnbm9mKFQpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RZUEVfVFJBSVRTX0lOVFJJTlNJQ1MKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKChfX0dOVUNfXyA+IDQpIHx8ICgoX19HTlVDX18gPT0gNCkgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpICYmICFkZWZpbmVkKF9fR0NDWE1MX18pKSkgJiYgIWRlZmluZWQoTkROQk9PU1RfQ0xBTkcpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2xhdGlsZS5ocHA+Ci0KLSNpZmRlZiBORE5CT09TVF9JTlRFTAotIyAgZGVmaW5lIE5ETkJPT1NUX0lOVEVMX1RUX09QVFMgfHwgaXNfcG9kPFQ+Ojp2YWx1ZQotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9JTlRFTF9UVF9PUFRTCi0jZW5kaWYKLQotIyAgIGRlZmluZSBORE5CT09TVF9JU19VTklPTihUKSBfX2lzX3VuaW9uKFQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX1BPRChUKSBfX2lzX3BvZChUKQotIyAgIGRlZmluZSBORE5CT09TVF9JU19FTVBUWShUKSBfX2lzX2VtcHR5KFQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0NPTlNUUlVDVE9SKFQpICgoX19oYXNfdHJpdmlhbF9jb25zdHJ1Y3RvcihUKSBORE5CT09TVF9JTlRFTF9UVF9PUFRTKSAmJiAhIDo6bmRuYm9vc3Q6OmlzX3ZvbGF0aWxlPFQ+Ojp2YWx1ZSkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfQ09QWShUKSAoKF9faGFzX3RyaXZpYWxfY29weShUKSBORE5CT09TVF9JTlRFTF9UVF9PUFRTKSAmJiAhaXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZSAmJiAhIDo6bmRuYm9vc3Q6OmlzX3ZvbGF0aWxlPFQ+Ojp2YWx1ZSkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfQVNTSUdOKFQpICgoX19oYXNfdHJpdmlhbF9hc3NpZ24oVCkgTkROQk9PU1RfSU5URUxfVFRfT1BUUykgJiYgISA6Om5kbmJvb3N0Ojppc192b2xhdGlsZTxUPjo6dmFsdWUgJiYgISA6Om5kbmJvb3N0Ojppc19jb25zdDxUPjo6dmFsdWUpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoVCkgKF9faGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcihUKSBORE5CT09TVF9JTlRFTF9UVF9PUFRTKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfTk9USFJPV19DT05TVFJVQ1RPUihUKSAoX19oYXNfbm90aHJvd19jb25zdHJ1Y3RvcihUKSBORE5CT09TVF9JTlRFTF9UVF9PUFRTKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfTk9USFJPV19DT1BZKFQpICgoX19oYXNfbm90aHJvd19jb3B5KFQpIE5ETkJPT1NUX0lOVEVMX1RUX09QVFMpICYmICFpc192b2xhdGlsZTxUPjo6dmFsdWUgJiYgIWlzX3JlZmVyZW5jZTxUPjo6dmFsdWUpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19OT1RIUk9XX0FTU0lHTihUKSAoKF9faGFzX25vdGhyb3dfYXNzaWduKFQpIE5ETkJPT1NUX0lOVEVMX1RUX09QVFMpICYmICFpc192b2xhdGlsZTxUPjo6dmFsdWUgJiYgIWlzX2NvbnN0PFQ+Ojp2YWx1ZSkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1ZJUlRVQUxfREVTVFJVQ1RPUihUKSBfX2hhc192aXJ0dWFsX2Rlc3RydWN0b3IoVCkKLQotIyAgIGRlZmluZSBORE5CT09TVF9JU19BQlNUUkFDVChUKSBfX2lzX2Fic3RyYWN0KFQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX0JBU0VfT0YoVCxVKSAoX19pc19iYXNlX29mKFQsVSkgJiYgIWlzX3NhbWU8VCxVPjo6dmFsdWUpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX0NMQVNTKFQpIF9faXNfY2xhc3MoVCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfRU5VTShUKSBfX2lzX2VudW0oVCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfUE9MWU1PUlBISUMoVCkgX19pc19wb2x5bW9ycGhpYyhUKQotIyAgIGlmICghZGVmaW5lZCh1bml4KSAmJiAhZGVmaW5lZChfX3VuaXhfXykpIHx8IGRlZmluZWQoX19MUDY0X18pCi0gICAgICAvLyBHQ0Mgc29tZXRpbWVzIGxpZXMgYWJvdXQgYWxpZ25tZW50IHJlcXVpcmVtZW50cwotICAgICAgLy8gb2YgdHlwZSBkb3VibGUgb24gMzItYml0IHVuaXggcGxhdGZvcm1zLCB1c2UgdGhlCi0gICAgICAvLyBvbGQgaW1wbGVtZW50YXRpb24gaW5zdGVhZCBpbiB0aGF0IGNhc2U6Ci0jICAgICBkZWZpbmUgTkROQk9PU1RfQUxJR05NRU5UX09GKFQpIF9fYWxpZ25vZl9fKFQpCi0jICAgZW5kaWYKLQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFlQRV9UUkFJVFNfSU5UUklOU0lDUwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fZ2hzX18pICYmIChfX0dIU19WRVJTSU9OX05VTUJFUiA+PSA2MDApCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2xhdGlsZS5ocHA+Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfVU5JT04oVCkgX19pc191bmlvbihUKQotIyAgIGRlZmluZSBORE5CT09TVF9JU19QT0QoVCkgX19pc19wb2QoVCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfRU1QVFkoVCkgX19pc19lbXB0eShUKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9DT05TVFJVQ1RPUihUKSBfX2hhc190cml2aWFsX2NvbnN0cnVjdG9yKFQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0NPUFkoVCkgKF9faGFzX3RyaXZpYWxfY29weShUKSAmJiAhaXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZSAmJiAhaXNfdm9sYXRpbGU8VD46OnZhbHVlKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9BU1NJR04oVCkgKF9faGFzX3RyaXZpYWxfYXNzaWduKFQpICYmICFpc192b2xhdGlsZTxUPjo6dmFsdWUpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoVCkgX19oYXNfdHJpdmlhbF9kZXN0cnVjdG9yKFQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19OT1RIUk9XX0NPTlNUUlVDVE9SKFQpIF9faGFzX25vdGhyb3dfY29uc3RydWN0b3IoVCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX05PVEhST1dfQ09QWShUKSAoX19oYXNfbm90aHJvd19jb3B5KFQpICYmICFpc192b2xhdGlsZTxUPjo6dmFsdWUgJiYgIWlzX3JlZmVyZW5jZTxUPjo6dmFsdWUpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19OT1RIUk9XX0FTU0lHTihUKSAoX19oYXNfbm90aHJvd19hc3NpZ24oVCkgJiYgIWlzX3ZvbGF0aWxlPFQ+Ojp2YWx1ZSkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1ZJUlRVQUxfREVTVFJVQ1RPUihUKSBfX2hhc192aXJ0dWFsX2Rlc3RydWN0b3IoVCkKLQotIyAgIGRlZmluZSBORE5CT09TVF9JU19BQlNUUkFDVChUKSBfX2lzX2Fic3RyYWN0KFQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX0JBU0VfT0YoVCxVKSAoX19pc19iYXNlX29mKFQsVSkgJiYgIWlzX3NhbWU8VCxVPjo6dmFsdWUpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX0NMQVNTKFQpIF9faXNfY2xhc3MoVCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfRU5VTShUKSBfX2lzX2VudW0oVCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfUE9MWU1PUlBISUMoVCkgX19pc19wb2x5bW9ycGhpYyhUKQotIyAgIGRlZmluZSBORE5CT09TVF9BTElHTk1FTlRfT0YoVCkgX19hbGlnbm9mX18oVCkKLQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFlQRV9UUkFJVFNfSU5UUklOU0lDUwotI2VuZGlmCi0KLSMgaWYgZGVmaW5lZChfX0NPREVHRUFSQ19fKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3JlZmVyZW5jZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9sYXRpbGUuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvaWQuaHBwPgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX1VOSU9OKFQpIF9faXNfdW5pb24oVCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfUE9EKFQpIF9faXNfcG9kKFQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX0VNUFRZKFQpIF9faXNfZW1wdHkoVCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfQ09OU1RSVUNUT1IoVCkgKF9faGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcihUKSkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfQ09QWShUKSAoX19oYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yKFQpICYmICFpc192b2xhdGlsZTxUPjo6dmFsdWUgJiYgIWlzX3JlZmVyZW5jZTxUPjo6dmFsdWUpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0FTU0lHTihUKSAoX19oYXNfdHJpdmlhbF9hc3NpZ24oVCkgJiYgIWlzX3ZvbGF0aWxlPFQ+Ojp2YWx1ZSkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihUKSAoX19oYXNfdHJpdmlhbF9kZXN0cnVjdG9yKFQpKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfTk9USFJPV19DT05TVFJVQ1RPUihUKSAoX19oYXNfbm90aHJvd19kZWZhdWx0X2NvbnN0cnVjdG9yKFQpKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfTk9USFJPV19DT1BZKFQpIChfX2hhc19ub3Rocm93X2NvcHlfY29uc3RydWN0b3IoVCkgJiYgIWlzX3ZvbGF0aWxlPFQ+Ojp2YWx1ZSAmJiAhaXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZSkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX05PVEhST1dfQVNTSUdOKFQpIChfX2hhc19ub3Rocm93X2Fzc2lnbihUKSAmJiAhaXNfdm9sYXRpbGU8VD46OnZhbHVlKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVklSVFVBTF9ERVNUUlVDVE9SKFQpIF9faGFzX3ZpcnR1YWxfZGVzdHJ1Y3RvcihUKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX0FCU1RSQUNUKFQpIF9faXNfYWJzdHJhY3QoVCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfQkFTRV9PRihULFUpIChfX2lzX2Jhc2Vfb2YoVCxVKSAmJiAhaXNfdm9pZDxUPjo6dmFsdWUgJiYgIWlzX3ZvaWQ8VT46OnZhbHVlKQotIyAgIGRlZmluZSBORE5CT09TVF9JU19DTEFTUyhUKSBfX2lzX2NsYXNzKFQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX0NPTlZFUlRJQkxFKFQsVSkgKF9faXNfY29udmVydGlibGUoVCxVKSB8fCBpc192b2lkPFU+Ojp2YWx1ZSkKLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfRU5VTShUKSBfX2lzX2VudW0oVCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfUE9MWU1PUlBISUMoVCkgX19pc19wb2x5bW9ycGhpYyhUKQotIyAgIGRlZmluZSBORE5CT09TVF9BTElHTk1FTlRfT0YoVCkgYWxpZ25vZihUKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UWVBFX1RSQUlUU19JTlRSSU5TSUNTCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lOVFJJTlNJQ1NfSFBQX0lOQ0xVREVECi0KLQotCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYWJzdHJhY3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19hYnN0cmFjdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2MzAyOWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19hYnN0cmFjdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTMgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9UVF9JU19BQlNUUkFDVF9DTEFTU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfQUJTVFJBQ1RfQ0xBU1NfSFBQCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLy8vLy8vLy8xLy8vLy8vLy8vMi8vLy8vLy8vLzMvLy8vLy8vLy80Ly8vLy8vLy8vNS8vLy8vLy8vLzYvLy8vLy8vLy83Ly8vLy8vLy8vOAotLy8gaXNfYWJzdHJhY3RfY2xhc3MuaHBwOgotLy8KLS8vICAoQykgQ29weXJpZ2h0IDIwMDIgUmFuaSBTaGFyb25pIChyYW5pX3NoYXJvbmlAaG90bWFpbC5jb20pIGFuZCBSb2JlcnQgUmFtZXkKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyAgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLyAgCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciB1cGRhdGVzLCBkb2N1bWVudGF0aW9uLCBhbmQgcmV2aXNpb24gaGlzdG9yeS4KLS8vCi0KLS8vIENvbXBpbGUgdHlwZSBkaXNjb3Zlcnkgd2hldGhlciBnaXZlbiB0eXBlIGlzIGFic3RyYWN0IGNsYXNzIG9yIG5vdC4KLS8vCi0vLyAgIFJlcXVpcmVzIERSIDMzNyB0byBiZSBzdXBwb3J0ZWQgYnkgY29tcGlsZXIKLS8vICAgKGh0dHA6Ly9hbnViaXMuZGt1dWcuZGsvanRjMS9zYzIyL3dnMjEvZG9jcy9jd2dfYWN0aXZlLmh0bWwjMzM3KS4KLS8vCi0vLwotLy8gQmVsaWV2ZWQgKEphbiAyMDA0KSB0byB3b3JrIG9uOgotLy8gIC0gR0NDIDMuNAotLy8gIC0gVkMrKyA3LjEKLS8vICAtIGNvbXBpbGVycyB3aXRoIG5ldyBFREcgZnJvbnRlbmQgKEludGVsIEMrKyA3LCBDb21lYXUgNC4zLjIpCi0vLwotLy8gRG9lc24ndCB3b3JrIG9uOgotLy8gIC0gVkMrKzYsIFZDKys3LjAgYW5kIGxlc3MKLS8vICAtIEdDQyAzLjMuWCBhbmQgbGVzcwotLy8gIC0gQm9ybGFuZCBDKysgNiBhbmQgbGVzcwotLy8gICAgICAKLS8vCi0vLyBIaXN0b3J5OgotLy8gIC0gT3JpZ2luYWxseSB3cml0dGVuIGJ5IFJhbmkgU2hhcm9uaSwgc2VlCi0vLyAgICBodHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXBzP3NlbG09ZGY4OTNkYTYuMDIwNzExMDYxMy43NWIyZmU5MCU0MHBvc3RpbmcuZ29vZ2xlLmNvbQotLy8gICAgQXQgdGhpcyB0aW1lIHN1cHBvcnRlZCBieSBFREcgKEludGVsIEMrKyA3LCBDb21lYXUgNC4zLjIpIGFuZCBWQzcuMS4KLS8vICAtIEFkYXB0ZWQgYW5kIGFkZGVkIGludG8gQm9vc3QuU2VyaWFsaXphdGlvbiBsaWJyYXJ5IGJ5IFJvYmVydCBSYW1leSAKLS8vICAgIChzdGFydGluZyB3aXRoIHN1Ym1pc3Npb24gIzEwKS4KLS8vICAtIEphbiAyMDA0OiBHQ0MgMy40IGZpeGVkIHRvIHN1cHBvcnQgRFIzMzcgKEdpb3Zhbm5pIEJham8pLgotLy8gIC0gSmFuIDIwMDQ6IG1vZGlmaWVkIHRvIGJlIHBhcnQgb2YgQm9vc3QuVHlwZVRyYWl0cyAoUGF2ZWwgVm96ZW5pbGVrKS4KLS8vICAtIE5vdiAyMDA0OiBDaHJpc3RvcGggTHVkd2lnIGZvdW5kIHRoYXQgdGhlIGltcGxlbWVudGF0aW9uIGRpZCBub3Qgd29yayB3aXRoCi0vLyAgICAgICAgICAgICAgdGVtcGxhdGUgdHlwZXMgYW5kIGdjYy0zLjQgb3IgVkM3LjEsIGZpeCBkdWUgdG8gQ2hyaXN0b3BoIEx1ZHdpZwotLy8gICAgICAgICAgICAgIGFuZCBKb2huIE1hZGRvY2suCi0vLyAgLSBEZWMgMjAwNDogQWRkZWQgbmV3IGNvbmZpZyBtYWNybyBORE5CT09TVF9OT19JU19BQlNUUkFDVCB3aGljaCBjYXVzZXMgdGhlIHRlbXBsYXRlCi0vLyAgICAgICAgICAgICAgdG8gZGVncmFkZSBncmFjZWZ1bGx5LCByYXRoZXIgdGhhbiB0cmFzaCB0aGUgY29tcGlsZXIgKEpvaG4gTWFkZG9jaykuCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaW50cmluc2ljcy5ocHA+Ci0jaWZuZGVmIE5ETkJPT1NUX0lTX0FCU1RSQUNUCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3llc19ub190eXBlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jbGFzcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9hbmQuaHBwPgotI2lmZGVmIE5ETkJPT1NUX05PX0lTX0FCU1RSQUNUCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9seW1vcnBoaWMuaHBwPgotI2VuZGlmCi0jZW5kaWYKLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSBkZXRhaWx7Ci0KLSNpZmRlZiBORE5CT09TVF9JU19BQlNUUkFDVAotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfYWJzdHJhY3RfaW1wCi17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBORE5CT09TVF9JU19BQlNUUkFDVChUKSk7Ci19OwotI2VsaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fSVNfQUJTVFJBQ1QpCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IGlzX2Fic3RyYWN0X2ltcDIKLXsKLSAgIC8vIERlZHVjdGlvbiBmYWlscyBpZiBUIGlzIHZvaWQsIGZ1bmN0aW9uIHR5cGUsIAotICAgLy8gcmVmZXJlbmNlIHR5cGUgKDE0LjguMi8yKW9yIGFuIGFic3RyYWN0IGNsYXNzIHR5cGUgCi0gICAvLyBhY2NvcmRpbmcgdG8gcmV2aWV3IHN0YXR1cyBpc3N1ZSAjMzM3Ci0gICAvLwotICAgdGVtcGxhdGU8Y2xhc3MgVT4KLSAgIHN0YXRpYyB0eXBlX3RyYWl0czo6bm9fdHlwZSBjaGVja19zaWcoVSAoKilbMV0pOwotICAgdGVtcGxhdGU8Y2xhc3MgVT4KLSAgIHN0YXRpYyB0eXBlX3RyYWl0czo6eWVzX3R5cGUgY2hlY2tfc2lnKC4uLik7Ci0gICAvLwotICAgLy8gVCBtdXN0IGJlIGEgY29tcGxldGUgdHlwZSwgZnVydGhlciBpZiBUIGlzIGEgdGVtcGxhdGUgdGhlbgotICAgLy8gaXQgbXVzdCBiZSBpbnN0YW50aWF0ZWQgaW4gb3JkZXIgZm9yIHVzIHRvIGdldCB0aGUgcmlnaHQgYW5zd2VyOgotICAgLy8KLSAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKFQpICE9IDApOwotCi0gICAvLyBHQ0MyIHdvbid0IGV2ZW4gcGFyc2UgdGhpcyB0ZW1wbGF0ZSBpZiB3ZSBlbWJlZCB0aGUgY29tcHV0YXRpb24KLSAgIC8vIG9mIHMxIGluIHRoZSBjb21wdXRhdGlvbiBvZiB2YWx1ZS4KLSNpZmRlZiBfX0dOVUNfXwotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCBzMSA9IHNpemVvZihpc19hYnN0cmFjdF9pbXAyPFQ+Ojp0ZW1wbGF0ZSBjaGVja19zaWc8VD4oMCkpKTsKLSNlbHNlCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDX0ZVTExfVkVSLCA+PSAxNDAwNTAwMDApCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjYzMzQpCi0jZW5kaWYKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgczEgPSBzaXplb2YoY2hlY2tfc2lnPFQ+KDApKSk7Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDX0ZVTExfVkVSLCA+PSAxNDAwNTAwMDApCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0jZW5kaWYKLSAgICAKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IAotICAgICAgKHMxID09IHNpemVvZih0eXBlX3RyYWl0czo6eWVzX3R5cGUpKSk7Ci19OwotCi10ZW1wbGF0ZSA8Ym9vbCB2Pgotc3RydWN0IGlzX2Fic3RyYWN0X3NlbGVjdAotewotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBzdHJ1Y3QgcmViaW5kCi0gICB7Ci0gICAgICB0eXBlZGVmIGlzX2Fic3RyYWN0X2ltcDI8VD4gdHlwZTsKLSAgIH07Ci19OwotdGVtcGxhdGUgPD4KLXN0cnVjdCBpc19hYnN0cmFjdF9zZWxlY3Q8ZmFsc2U+Ci17Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHN0cnVjdCByZWJpbmQKLSAgIHsKLSAgICAgIHR5cGVkZWYgZmFsc2VfdHlwZSB0eXBlOwotICAgfTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX2Fic3RyYWN0X2ltcAotewotICAgdHlwZWRlZiBpc19hYnN0cmFjdF9zZWxlY3Q8IDo6bmRuYm9vc3Q6OmlzX2NsYXNzPFQ+Ojp2YWx1ZT4gc2VsZWN0b3I7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHNlbGVjdG9yOjp0ZW1wbGF0ZSByZWJpbmQ8VD4gYmluZGVyOwotICAgdHlwZWRlZiB0eXBlbmFtZSBiaW5kZXI6OnR5cGUgdHlwZTsKLQotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHlwZTo6dmFsdWUpOwotfTsKLQotI2VuZGlmCi19Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fSVNfQUJTVFJBQ1QKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfYWJzdHJhY3QsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX2Fic3RyYWN0X2ltcDxUPjo6dmFsdWUpCi0jZWxzZQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19hYnN0cmFjdCxULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfcG9seW1vcnBoaWNfaW1wPFQ+Ojp2YWx1ZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy9ORE5CT09TVF9UVF9JU19BQlNUUkFDVF9DTEFTU19IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJpdGhtZXRpYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FyaXRobWV0aWMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MWY3MDE0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJpdGhtZXRpYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX0FSSVRITUVUSUNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX0FSSVRITUVUSUNfSFBQX0lOQ0xVREVECi0KLSNpZiAhZGVmaW5lZCggX19DT0RFR0VBUkNfXyApCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfaW50ZWdyYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Zsb2F0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX29yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2VuZGlmCi0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSNpZiAhZGVmaW5lZChfX0NPREVHRUFSQ19fKQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBpc19hcml0aG1ldGljX2ltcGwKLXsgCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gCi0gICAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPCAKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZSwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Zsb2F0PFQ+Ojp2YWx1ZQotICAgICAgICA+Ojp2YWx1ZSkpOyAKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotI2VuZGlmCi0KLS8vKiBpcyBhIHR5cGUgVCBhbiBhcml0aG1ldGljIHR5cGUgZGVzY3JpYmVkIGluIHRoZSBzdGFuZGFyZCAoMy45LjFwOCkKLSNpZiBkZWZpbmVkKF9fQ09ERUdFQVJDX18pCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX2FyaXRobWV0aWMsVCxfX2lzX2FyaXRobWV0aWMoVCkpCi0jZWxzZQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19hcml0aG1ldGljLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjppc19hcml0aG1ldGljX2ltcGw8VD46OnZhbHVlKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19BUklUSE1FVElDX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FycmF5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzhmZjY1Mi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FycmF5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgRGF2ZSBBYnJhaGFtcywgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkCi0vLyAgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLiAgCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0KLS8vIFNvbWUgZml4ZXMgZm9yIGlzX2FycmF5IGFyZSBiYXNlZCBvbiBhIG5ld3Nncm91cCBwb3N0aW5nIGJ5IEpvbmF0aGFuIEx1bmRxdWlzdC4KLQotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX0FSUkFZX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JU19BUlJBWV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbmZpZy5ocHA+Ci0KLSNpZmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3llc19ub190eXBlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvd3JhcC5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPGNzdGRkZWY+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSNpZiBkZWZpbmVkKCBfX0NPREVHRUFSQ19fICkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfYXJyYXksVCxfX2lzX2FycmF5KFQpKQotI2VsaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfYXJyYXksVCxmYWxzZSkKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19BUlJBWV9UWVBFX1NQRUNJQUxJWkFUSU9OUykKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMih0eXBlbmFtZSBULHN0ZDo6c2l6ZV90IE4saXNfYXJyYXksVFtOXSx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHR5cGVuYW1lIFQsc3RkOjpzaXplX3QgTixpc19hcnJheSxUIGNvbnN0W05dLHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCxzdGQ6OnNpemVfdCBOLGlzX2FycmF5LFQgdm9sYXRpbGVbTl0sdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMih0eXBlbmFtZSBULHN0ZDo6c2l6ZV90IE4saXNfYXJyYXksVCBjb25zdCB2b2xhdGlsZVtOXSx0cnVlKQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPCAweDYwMCkgJiYgIWRlZmluZWQoX19JQk1DUFBfXykgJiYgICFORE5CT09TVF9XT1JLQVJPVU5EKF9fRE1DX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDg0MCkpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxpc19hcnJheSxUW10sdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULGlzX2FycmF5LFQgY29uc3RbXSx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsaXNfYXJyYXksVCB2b2xhdGlsZVtdLHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxpc19hcnJheSxUIGNvbnN0IHZvbGF0aWxlW10sdHJ1ZSkKLSNlbmRpZgotI2VuZGlmCi0KLSNlbHNlIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXVzaW5nIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZTsKLXVzaW5nIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpub190eXBlOwotdXNpbmcgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OndyYXA7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gVCgqIGlzX2FycmF5X3Rlc3RlcjEod3JhcDxUPikgKSh3cmFwPFQ+KTsKLWNoYXIgTkROQk9PU1RfVFRfREVDTCBpc19hcnJheV90ZXN0ZXIxKC4uLik7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUPiBub190eXBlIGlzX2FycmF5X3Rlc3RlcjIoVCgqKSh3cmFwPFQ+KSk7Ci15ZXNfdHlwZSBORE5CT09TVF9UVF9ERUNMIGlzX2FycmF5X3Rlc3RlcjIoLi4uKTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGlzX2FycmF5X2ltcGwKLXsgCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gCi0gICAgICAgIHNpemVvZig6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX2FycmF5X3Rlc3RlcjIoCi0gICAgICAgICAgICA6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX2FycmF5X3Rlc3RlcjEoCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OndyYXA8VD4oKQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgKSkgPT0gMQotICAgICk7Ci19OwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX2FycmF5LHZvaWQsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX2FycmF5LHZvaWQgY29uc3QsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX2FycmF5LHZvaWQgdm9sYXRpbGUsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX2FycmF5LHZvaWQgY29uc3Qgdm9sYXRpbGUsZmFsc2UpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfYXJyYXksVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX2FycmF5X2ltcGw8VD46OnZhbHVlKQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfQVJSQVlfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Jhc2VfYW5kX2Rlcml2ZWQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19iYXNlX2FuZF9kZXJpdmVkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGRjMzVhZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Jhc2VfYW5kX2Rlcml2ZWQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjU0ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgUmFuaSBTaGFyb25pIDIwMDMuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotIAotI2lmbmRlZiBORE5CT09TVF9UVF9JU19CQVNFX0FORF9ERVJJVkVEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JU19CQVNFX0FORF9ERVJJVkVEX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaW50cmluc2ljcy5ocHA+Ci0jaWZuZGVmIE5ETkJPT1NUX0lTX0JBU0VfT0YKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jbGFzcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29udmVydGlibGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2VfYW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2VuZGlmCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSNpZm5kZWYgTkROQk9PU1RfSVNfQkFTRV9PRgotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTgxKSkgXAotICYmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fU1VOUFJPX0NDICwgPD0gMHg1NDApIFwKLSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0VER19WRVJTSU9OX18sIDw9IDI0MykgXAotICYmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fRE1DX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDg0MCkpCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIEVERyB2ZXJzaW9uIG51bWJlciBpcyBhIGxvd2VyIGVzdGltYXRlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJdCBpcyBub3QgY3VycmVudGx5IGtub3duIHdoaWNoIEVERyB2ZXJzaW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGV4YWN0bHkgZml4ZXMgdGhlIHByb2JsZW0uCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLVRoaXMgdmVyc2lvbiBkZXRlY3RzIGFtYmlndW91cyBiYXNlIGNsYXNzZXMgYW5kIHByaXZhdGUgYmFzZSBjbGFzc2VzCi1jb3JyZWN0bHksIGFuZCB3YXMgZGV2aXNlZCBieSBSYW5pIFNoYXJvbmkuCi0KLUV4cGxhbmF0aW9uIGJ5IFRlcmplIFNsZXR0ZWJvIGFuZCBSYW5pIFNoYXJvbmkuCi0KLUxldCdzIHRha2UgdGhlIG11bHRpcGxlIGJhc2UgY2xhc3MgYmVsb3cgYXMgYW4gZXhhbXBsZSwgYW5kIHRoZSBmb2xsb3dpbmcKLXdpbGwgYWxzbyBzaG93IHdoeSB0aGVyZSdzIG5vdCBhIHByb2JsZW0gd2l0aCBwcml2YXRlIG9yIGFtYmlndW91cyBiYXNlCi1jbGFzczoKLQotc3RydWN0IEIge307Ci1zdHJ1Y3QgQjEgOiBCIHt9Owotc3RydWN0IEIyIDogQiB7fTsKLXN0cnVjdCBEIDogcHJpdmF0ZSBCMSwgcHJpdmF0ZSBCMiB7fTsKLQotaXNfYmFzZV9hbmRfZGVyaXZlZDxCLCBEPjo6dmFsdWU7Ci0KLUZpcnN0LCBzb21lIHRlcm1pbm9sb2d5OgotCi1TQyAgLSBTdGFuZGFyZCBjb252ZXJzaW9uCi1VREMgLSBVc2VyLWRlZmluZWQgY29udmVyc2lvbgotCi1BIHVzZXItZGVmaW5lZCBjb252ZXJzaW9uIHNlcXVlbmNlIGNvbnNpc3RzIG9mIGFuIFNDLCBmb2xsb3dlZCBieSBhbiBVREMsCi1mb2xsb3dlZCBieSBhbm90aGVyIFNDLiBFaXRoZXIgU0MgbWF5IGJlIHRoZSBpZGVudGl0eSBjb252ZXJzaW9uLgotCi1XaGVuIHBhc3NpbmcgdGhlIGRlZmF1bHQtY29uc3RydWN0ZWQgSG9zdCBvYmplY3QgdG8gdGhlIG92ZXJsb2FkZWQgY2hlY2tfc2lnKCkKLWZ1bmN0aW9ucyAoaW5pdGlhbGl6YXRpb24gOC41LzE0LzQvMyksIHdlIGhhdmUgc2V2ZXJhbCB2aWFibGUgaW1wbGljaXQKLWNvbnZlcnNpb24gc2VxdWVuY2VzOgotCi1Gb3IgInN0YXRpYyBub190eXBlIGNoZWNrX3NpZyhCIGNvbnN0IHZvbGF0aWxlICosIGludCkiIHdlIGhhdmUgdGhlIGNvbnZlcnNpb24KLXNlcXVlbmNlczoKLQotQyAtPiBDIGNvbnN0IChTQyAtIFF1YWxpZmljYXRpb24gQWRqdXN0bWVudCkgLT4gQiBjb25zdCB2b2xhdGlsZSogKFVEQykKLUMgLT4gRCBjb25zdCB2b2xhdGlsZSogKFVEQykgLT4gQjEgY29uc3Qgdm9sYXRpbGUqIC8gQjIgY29uc3Qgdm9sYXRpbGUqIC0+Ci0gICAgIEIgY29uc3Qgdm9sYXRpbGUqIChTQyAtIENvbnZlcnNpb24pCi0KLUZvciAic3RhdGljIHllc190eXBlIGNoZWNrX3NpZyhEIGNvbnN0IHZvbGF0aWxlICosIFQpIiB3ZSBoYXZlIHRoZSBjb252ZXJzaW9uCi1zZXF1ZW5jZToKLQotQyAtPiBEIGNvbnN0IHZvbGF0aWxlKiAoVURDKQotCi1BY2NvcmRpbmcgdG8gMTMuMy4zLjEvNCwgaW4gY29udGV4dCBvZiB1c2VyLWRlZmluZWQgY29udmVyc2lvbiBvbmx5IHRoZQotc3RhbmRhcmQgY29udmVyc2lvbiBzZXF1ZW5jZSBpcyBjb25zaWRlcmVkIHdoZW4gc2VsZWN0aW5nIHRoZSBiZXN0IHZpYWJsZQotZnVuY3Rpb24sIHNvIGl0IG9ubHkgY29uc2lkZXJzIHVwIHRvIHRoZSB1c2VyLWRlZmluZWQgY29udmVyc2lvbi4gRm9yIHRoZQotZmlyc3QgZnVuY3Rpb24gdGhpcyBtZWFucyBjaG9vc2luZyBiZXR3ZWVuIEMgLT4gQyBjb25zdCBhbmQgQyAtPiBDLCBhbmQgaXQKLWNob29zZXMgdGhlIGxhdHRlciwgYmVjYXVzZSBpdCdzIGEgcHJvcGVyIHN1YnNldCAoMTMuMy4zLjIvMy8yKSBvZiB0aGUKLWZvcm1lci4gVGhlcmVmb3JlLCB3ZSBoYXZlOgotCi1DIC0+IEQgY29uc3Qgdm9sYXRpbGUqIChVREMpIC0+IEIxIGNvbnN0IHZvbGF0aWxlKiAvIEIyIGNvbnN0IHZvbGF0aWxlKiAtPgotICAgICBCIGNvbnN0IHZvbGF0aWxlKiAoU0MgLSBDb252ZXJzaW9uKQotQyAtPiBEIGNvbnN0IHZvbGF0aWxlKiAoVURDKQotCi1IZXJlLCB0aGUgcHJpbmNpcGxlIG9mIHRoZSAic2hvcnRlc3Qgc3Vic2VxdWVuY2UiIGFwcGxpZXMgYWdhaW4sIGFuZCBpdAotY2hvb3NlcyBDIC0+IEQgY29uc3Qgdm9sYXRpbGUqLiBUaGlzIHNob3dzIHRoYXQgaXQgZG9lc24ndCBldmVuIG5lZWQgdG8KLWNvbnNpZGVyIHRoZSBtdWx0aXBsZSBwYXRocyB0byBCLCBvciBhY2Nlc3NpYmlsaXR5LCBhcyB0aGF0IHBvc3NpYmlsaXR5IGlzCi1lbGltaW5hdGVkIGJlZm9yZSBpdCBjb3VsZCBwb3NzaWJseSBjYXVzZSBhbWJpZ3VpdHkgb3IgYWNjZXNzIHZpb2xhdGlvbi4KLQotSWYgRCBpcyBub3QgZGVyaXZlZCBmcm9tIEIsIGl0IGhhcyB0byBjaG9vc2UgYmV0d2VlbiBDIC0+IEMgY29uc3QgLT4gQiBjb25zdAotdm9sYXRpbGUqIGZvciB0aGUgZmlyc3QgZnVuY3Rpb24sIGFuZCBDIC0+IEQgY29uc3Qgdm9sYXRpbGUqIGZvciB0aGUgc2Vjb25kCi1mdW5jdGlvbiwgd2hpY2ggYXJlIGp1c3QgYXMgZ29vZCAoYm90aCByZXF1aXJlcyBhIFVEQywgMTMuMy4zLjIpLCBoYWQgaXQgbm90Ci1iZWVuIGZvciB0aGUgZmFjdCB0aGF0ICJzdGF0aWMgbm9fdHlwZSBjaGVja19zaWcoQiBjb25zdCB2b2xhdGlsZSAqLCBpbnQpIiBpcwotbm90IHRlbXBsYXRlZCwgd2hpY2ggbWFrZXMgQyAtPiBDIGNvbnN0IC0+IEIgY29uc3Qgdm9sYXRpbGUqIHRoZSBiZXN0IGNob2ljZQotKDEzLjMuMy8xLzQpLCByZXN1bHRpbmcgaW4gIm5vIi4KLQotQWxzbywgaWYgSG9zdDo6b3BlcmF0b3IgQiBjb25zdCB2b2xhdGlsZSogaGFkbid0IGJlZW4gY29uc3QsIHRoZSB0d28KLWNvbnZlcnNpb24gc2VxdWVuY2VzIGZvciAic3RhdGljIG5vX3R5cGUgY2hlY2tfc2lnKEIgY29uc3Qgdm9sYXRpbGUgKiwgaW50KSIsIGluCi10aGUgY2FzZSB3aGVyZSBEIGlzIGRlcml2ZWQgZnJvbSBCLCB3b3VsZCBoYXZlIGJlZW4gYW1iaWd1b3VzLgotCi1TZWUgYWxzbwotaHR0cDovL2dyb3Vwcy5nb29nbGUuY29tL2dyb3Vwcz9zZWxtPWRmODkzZGE2LjAzMDEyODA4NTkuNTIyMDgxZjclNDBwb3N0aW5nLgotZ29vZ2xlLmNvbSBhbmQgbGlua3MgdGhlcmVpbi4KLQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEIsIHR5cGVuYW1lIEQ+Ci1zdHJ1Y3QgYmRfaGVscGVyCi17Ci0gICAvLwotICAgLy8gVGhpcyBWQzcuMSBzcGVjaWZpYyB3b3JrYXJvdW5kIHN0b3BzIHRoZSBjb21waWxlciBmcm9tIGdlbmVyYXRpbmcKLSAgIC8vIGFuIGludGVybmFsIGNvbXBpbGVyIGVycm9yIHdoZW4gY29tcGlsaW5nIHdpdGggL3ZtZyAodGhhbmtzIHRvCi0gICAvLyBBbGVrc2V5IEd1cnRvdm95IGZvciBmaWd1cmluZyBvdXQgdGhlIHdvcmthcm91bmQpLgotICAgLy8KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA9PSAxMzEwKQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyB0eXBlX3RyYWl0czo6eWVzX3R5cGUgY2hlY2tfc2lnKEQgY29uc3Qgdm9sYXRpbGUgKiwgVCk7Ci0gICAgc3RhdGljIHR5cGVfdHJhaXRzOjpub190eXBlICBjaGVja19zaWcoQiBjb25zdCB2b2xhdGlsZSAqLCBpbnQpOwotI2Vsc2UKLSAgICBzdGF0aWMgdHlwZV90cmFpdHM6Onllc190eXBlIGNoZWNrX3NpZyhEIGNvbnN0IHZvbGF0aWxlICosIGxvbmcpOwotICAgIHN0YXRpYyB0eXBlX3RyYWl0czo6bm9fdHlwZSAgY2hlY2tfc2lnKEIgY29uc3Qgdm9sYXRpbGUgKiBjb25zdCYsIGludCk7Ci0jZW5kaWYKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEIsIHR5cGVuYW1lIEQ+Ci1zdHJ1Y3QgaXNfYmFzZV9hbmRfZGVyaXZlZF9pbXBsMgotewotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQ19GVUxMX1ZFUiwgPj0gMTQwMDUwMDAwKQotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo2MzM0KQotI2VuZGlmCi0gICAgLy8KLSAgICAvLyBNYXkgc2lsZW50bHkgZG8gdGhlIHdyb25nIHRoaW5nIHdpdGggaW5jb21wbGV0ZSB0eXBlcwotICAgIC8vIHVubGVzcyB3ZSB0cmFwIHRoZW0gaGVyZToKLSAgICAvLwotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKEIpICE9IDApOwotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKEQpICE9IDApOwotCi0gICAgc3RydWN0IEhvc3QKLSAgICB7Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPT0gMTMxMCkKLSAgICAgICAgb3BlcmF0b3IgQiBjb25zdCB2b2xhdGlsZSAqKCkgY29uc3Q7Ci0jZWxzZQotICAgICAgICBvcGVyYXRvciBCIGNvbnN0IHZvbGF0aWxlICogY29uc3QmKCkgY29uc3Q7Ci0jZW5kaWYKLSAgICAgICAgb3BlcmF0b3IgRCBjb25zdCB2b2xhdGlsZSAqKCk7Ci0gICAgfTsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgIHNpemVvZihiZF9oZWxwZXI8QixEPjo6Y2hlY2tfc2lnKEhvc3QoKSwgMCkpID09IHNpemVvZih0eXBlX3RyYWl0czo6eWVzX3R5cGUpKTsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkNfRlVMTF9WRVIsID49IDE0MDA1MDAwMCkKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLX07Ci0KLSNlbHNlCi0KLS8vCi0vLyBicm9rZW4gdmVyc2lvbjoKLS8vCi10ZW1wbGF0ZTx0eXBlbmFtZSBCLCB0eXBlbmFtZSBEPgotc3RydWN0IGlzX2Jhc2VfYW5kX2Rlcml2ZWRfaW1wbDIKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAoOjpuZG5ib29zdDo6aXNfY29udmVydGlibGU8RCosQio+Ojp2YWx1ZSkpOwotfTsKLQotI2RlZmluZSBORE5CT09TVF9CUk9LRU5fSVNfQkFTRV9BTkRfREVSSVZFRAotCi0jZW5kaWYKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEIsIHR5cGVuYW1lIEQ+Ci1zdHJ1Y3QgaXNfYmFzZV9hbmRfZGVyaXZlZF9pbXBsMwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlIDxib29sIGljMSwgYm9vbCBpYzIsIGJvb2wgaXNzPgotc3RydWN0IGlzX2Jhc2VfYW5kX2Rlcml2ZWRfc2VsZWN0Ci17Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT4KLSAgIHN0cnVjdCByZWJpbmQKLSAgIHsKLSAgICAgIHR5cGVkZWYgaXNfYmFzZV9hbmRfZGVyaXZlZF9pbXBsMzxULFU+IHR5cGU7Ci0gICB9OwotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBpc19iYXNlX2FuZF9kZXJpdmVkX3NlbGVjdDx0cnVlLHRydWUsZmFsc2U+Ci17Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT4KLSAgIHN0cnVjdCByZWJpbmQKLSAgIHsKLSAgICAgIHR5cGVkZWYgaXNfYmFzZV9hbmRfZGVyaXZlZF9pbXBsMjxULFU+IHR5cGU7Ci0gICB9OwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEIsIHR5cGVuYW1lIEQ+Ci1zdHJ1Y3QgaXNfYmFzZV9hbmRfZGVyaXZlZF9pbXBsCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfY3Y8Qj46OnR5cGUgbmN2QjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlbW92ZV9jdjxEPjo6dHlwZSBuY3ZEOwotCi0gICAgdHlwZWRlZiBpc19iYXNlX2FuZF9kZXJpdmVkX3NlbGVjdDwKLSAgICAgICA6Om5kbmJvb3N0Ojppc19jbGFzczxCPjo6dmFsdWUsCi0gICAgICAgOjpuZG5ib29zdDo6aXNfY2xhc3M8RD46OnZhbHVlLAotICAgICAgIDo6bmRuYm9vc3Q6OmlzX3NhbWU8bmN2QixuY3ZEPjo6dmFsdWU+IHNlbGVjdG9yOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2VsZWN0b3I6OnRlbXBsYXRlIHJlYmluZDxuY3ZCLG5jdkQ+IGJpbmRlcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJpbmRlcjo6dHlwZSBib3VuZF90eXBlOwotCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gYm91bmRfdHlwZTo6dmFsdWUpOwotfTsKLSNlbHNlCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQiwgdHlwZW5hbWUgRD4KLXN0cnVjdCBpc19iYXNlX2FuZF9kZXJpdmVkX2ltcGwKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlbW92ZV9jdjxCPjo6dHlwZSBuY3ZCOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVtb3ZlX2N2PEQ+Ojp0eXBlIG5jdkQ7Ci0KLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoTkROQk9PU1RfSVNfQkFTRV9PRihCLEQpICYmICEgOjpuZG5ib29zdDo6aXNfc2FtZTxuY3ZCLG5jdkQ+Ojp2YWx1ZSkpOwotfTsKLSNlbmRpZgotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjIoCi0gICAgICBpc19iYXNlX2FuZF9kZXJpdmVkCi0gICAgLCBCYXNlCi0gICAgLCBEZXJpdmVkCi0gICAgLCAoOjpuZG5ib29zdDo6ZGV0YWlsOjppc19iYXNlX2FuZF9kZXJpdmVkX2ltcGw8QmFzZSxEZXJpdmVkPjo6dmFsdWUpCi0gICAgKQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzJfMih0eXBlbmFtZSBCYXNlLHR5cGVuYW1lIERlcml2ZWQsaXNfYmFzZV9hbmRfZGVyaXZlZCxCYXNlJixEZXJpdmVkLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMl8yKHR5cGVuYW1lIEJhc2UsdHlwZW5hbWUgRGVyaXZlZCxpc19iYXNlX2FuZF9kZXJpdmVkLEJhc2UsRGVyaXZlZCYsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMyXzIodHlwZW5hbWUgQmFzZSx0eXBlbmFtZSBEZXJpdmVkLGlzX2Jhc2VfYW5kX2Rlcml2ZWQsQmFzZSYsRGVyaXZlZCYsZmFsc2UpCi0jZW5kaWYKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19DT0RFR0VBUkNfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NjEwKSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzJfMSh0eXBlbmFtZSBCYXNlLGlzX2Jhc2VfYW5kX2Rlcml2ZWQsQmFzZSxCYXNlLGZhbHNlKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19CQVNFX0FORF9ERVJJVkVEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19iYXNlX29mLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYmFzZV9vZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3YjNhYTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19iYXNlX29mLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgUmFuaSBTaGFyb25pIDIwMDMtMjAwNS4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0gCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX0JBU0VfT0ZfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX0JBU0VfT0ZfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19iYXNlX2FuZF9kZXJpdmVkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jbGFzcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9vci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9hbmQuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0gICBuYW1lc3BhY2UgZGV0YWlsewotICAgICAgdGVtcGxhdGUgPGNsYXNzIEIsIGNsYXNzIEQ+Ci0gICAgICBzdHJ1Y3QgaXNfYmFzZV9vZl9pbXAKLSAgICAgIHsKLSAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlbW92ZV9jdjxCPjo6dHlwZSBuY3ZCOwotICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVtb3ZlX2N2PEQ+Ojp0eXBlIG5jdkQ7Ci0gICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8ICAgICAgCi0gICAgICAgICAgICAoOjpuZG5ib29zdDo6ZGV0YWlsOjppc19iYXNlX2FuZF9kZXJpdmVkX2ltcGw8bmN2QixuY3ZEPjo6dmFsdWUpLAotICAgICAgICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPCA6Om5kbmJvb3N0Ojppc19zYW1lPG5jdkIsbmN2RD46OnZhbHVlLCA6Om5kbmJvb3N0Ojppc19jbGFzczxuY3ZCPjo6dmFsdWU+Ojp2YWx1ZSk+Ojp2YWx1ZSkpOwotICAgICAgfTsKLSAgIH0KLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMigKLSAgICAgIGlzX2Jhc2Vfb2YKLSAgICAsIEJhc2UKLSAgICAsIERlcml2ZWQKLSAgICAsICg6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX2Jhc2Vfb2ZfaW1wPEJhc2UsIERlcml2ZWQ+Ojp2YWx1ZSkpCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMl8yKHR5cGVuYW1lIEJhc2UsdHlwZW5hbWUgRGVyaXZlZCxpc19iYXNlX29mLEJhc2UmLERlcml2ZWQsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMyXzIodHlwZW5hbWUgQmFzZSx0eXBlbmFtZSBEZXJpdmVkLGlzX2Jhc2Vfb2YsQmFzZSxEZXJpdmVkJixmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzJfMih0eXBlbmFtZSBCYXNlLHR5cGVuYW1lIERlcml2ZWQsaXNfYmFzZV9vZixCYXNlJixEZXJpdmVkJixmYWxzZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfQkFTRV9BTkRfREVSSVZFRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY2xhc3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19jbGFzcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4ODVkNWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19jbGFzcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDAgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgRGF2ZSBBYnJhaGFtcywgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkCi0vLyAgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLTIwMDMuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfQ0xBU1NfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX0NMQVNTX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pbnRyaW5zaWNzLmhwcD4KLSNpZm5kZWYgTkROQk9PU1RfSVNfQ0xBU1MKLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc191bmlvbi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9hbmQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfbm90LmhwcD4KLQotI2lmZGVmIE5ETkJPT1NUX1RUX0hBU19DT05GT1JNSU5HX0lTX0NMQVNTX0lNUExFTUVOVEFUSU9OCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3llc19ub190eXBlLmhwcD4KLSNlbHNlCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2NhbGFyLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2lkLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19mdW5jdGlvbi5ocHA+Ci0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX0lTX0NMQVNTCi0KLSNpZmRlZiBfX0VER19WRVJTSU9OX18KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwPgotI2VuZGlmCi0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0jaWZuZGVmIE5ETkJPT1NUX0lTX0NMQVNTCi0jaWZkZWYgTkROQk9PU1RfVFRfSEFTX0NPTkZPUk1JTkdfSVNfQ0xBU1NfSU1QTEVNRU5UQVRJT04KLQotLy8gVGhpcyBpcyBhY3R1YWxseSB0aGUgY29uZm9ybWluZyBpbXBsZW1lbnRhdGlvbiB3aGljaCB3b3JrcyB3aXRoCi0vLyBhYnN0cmFjdCBjbGFzc2VzLiAgSG93ZXZlciwgZW5vdWdoIGNvbXBpbGVycyBoYXZlIHRyb3VibGUgd2l0aAotLy8gaXQgdGhhdCBtb3N0IHdpbGwgdXNlIHRoZSBvbmUgaW4KLS8vIG5kbmJvb3N0L3R5cGVfdHJhaXRzL29iamVjdF90cmFpdHMuaHBwLiBUaGlzIGltcGxlbWVudGF0aW9uCi0vLyBhY3R1YWxseSB3b3JrcyB3aXRoIFZDNy4wLCBidXQgb3RoZXIgaW50ZXJhY3Rpb25zIHNlZW0gdG8gZmFpbAotLy8gd2hlbiB3ZSB1c2UgaXQuCi0KLS8vIGlzX2NsYXNzPD4gbWV0YWZ1bmN0aW9uIGR1ZSB0byBQYXVsIE1lbnNvbmlkZXMKLS8vIChsZWF2aW5nc0BhdHRiaS5jb20pLiBGb3IgbW9yZSBkZXRhaWxzOgotLy8gaHR0cDovL2dyb3Vwcy5nb29nbGUuY29tL2dyb3Vwcz9obD1lbiZzZWxtPTAwMDAwMWMxY2M4MyUyNGUxNTRkNWUwJTI0Nzc3MmU1MGMlNDBjMTYxNTUwYSZybnVtPTEKLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAgJiYgIWRlZmluZWQoX19FREdfVkVSU0lPTl9fKQotCi10ZW1wbGF0ZSA8Y2xhc3MgVT4gOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2NsYXNzX3Rlc3Rlcih2b2lkKFU6OiopKHZvaWQpKTsKLXRlbXBsYXRlIDxjbGFzcyBVPiA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6bm9fdHlwZSBpc19jbGFzc190ZXN0ZXIoLi4uKTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfY2xhc3NfaW1wbAotewotCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPAotICAgICAgICAgICAgc2l6ZW9mKGlzX2NsYXNzX3Rlc3RlcjxUPigwKSkgPT0gc2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSksCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfdW5pb248VD46OnZhbHVlID46OnZhbHVlCi0gICAgICAgID46OnZhbHVlKQotICAgICAgICApOwotfTsKLQotI2Vsc2UKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfY2xhc3NfaW1wbAotewotICAgIHRlbXBsYXRlIDxjbGFzcyBVPiBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2NsYXNzX3Rlc3Rlcih2b2lkKFU6OiopKHZvaWQpKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVT4gc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpub190eXBlIGlzX2NsYXNzX3Rlc3RlciguLi4pOwotCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPAotICAgICAgICAgICAgc2l6ZW9mKGlzX2NsYXNzX3Rlc3RlcjxUPigwKSkgPT0gc2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSksCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfdW5pb248VD46OnZhbHVlID46OnZhbHVlCi0gICAgICAgID46OnZhbHVlKQotICAgICAgICApOwotfTsKLQotI2VuZGlmCi0KLSNlbHNlCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2NsYXNzX2ltcGwKLXsKLSMgICBpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPAotICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfdW5pb248VD46OnZhbHVlID46OnZhbHVlLAotICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfc2NhbGFyPFQ+Ojp2YWx1ZSA+Ojp2YWx1ZSwKLSAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2FycmF5PFQ+Ojp2YWx1ZSA+Ojp2YWx1ZSwKLSAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3JlZmVyZW5jZTxUPjo6dmFsdWU+Ojp2YWx1ZSwKLSAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8VD46OnZhbHVlID46OnZhbHVlLAotICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfZnVuY3Rpb248VD46OnZhbHVlID46OnZhbHVlCi0gICAgICAgID46OnZhbHVlKSk7Ci0jICAgZWxzZQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPAotICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfdW5pb248VD46OnZhbHVlID46OnZhbHVlLAotICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfc2NhbGFyPFQ+Ojp2YWx1ZSA+Ojp2YWx1ZSwKLSAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2FycmF5PFQ+Ojp2YWx1ZSA+Ojp2YWx1ZSwKLSAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3JlZmVyZW5jZTxUPjo6dmFsdWU+Ojp2YWx1ZSwKLSAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8VD46OnZhbHVlID46OnZhbHVlCi0gICAgICAgID46OnZhbHVlKSk7Ci0jICAgZW5kaWYKLX07Ci0KLSMgZW5kaWYgLy8gTkROQk9PU1RfVFRfSEFTX0NPTkZPUk1JTkdfSVNfQ0xBU1NfSU1QTEVNRU5UQVRJT04KLSMgZWxzZSAvLyBORE5CT09TVF9JU19DTEFTUwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfY2xhc3NfaW1wbAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IE5ETkJPT1NUX0lTX0NMQVNTKFQpKTsKLX07Ci0jIGVuZGlmIC8vIE5ETkJPT1NUX0lTX0NMQVNTCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0jIGlmZGVmIF9fRURHX1ZFUlNJT05fXwotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMSgKLSAgIGlzX2NsYXNzLFQsIG5kbmJvb3N0OjpkZXRhaWw6OmlzX2NsYXNzX2ltcGw8dHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9jdjxUPjo6dHlwZT46OnZhbHVlKQotIyBlbHNlIAotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19jbGFzcyxULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfY2xhc3NfaW1wbDxUPjo6dmFsdWUpCi0jIGVuZGlmCi0gICAgCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfQ0xBU1NfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbXBsZXguaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb21wbGV4LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjFkOTcxMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbXBsZXguaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDcuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JU19DT01QTEVYX0hQUAotI2RlZmluZSBORE5CT09TVF9UVF9JU19DT01QTEVYX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29udmVydGlibGUuaHBwPgotI2luY2x1ZGUgPGNvbXBsZXg+Ci0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgZGV0YWlsewotCi1zdHJ1Y3QgaXNfY29udmVydGlibGVfZnJvbV90ZXN0ZXIKLXsKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgaXNfY29udmVydGlibGVfZnJvbV90ZXN0ZXIoY29uc3Qgc3RkOjpjb21wbGV4PFQ+Jik7Ci19OwotCi19Ci0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfY29tcGxleCxULCg6Om5kbmJvb3N0Ojppc19jb252ZXJ0aWJsZTxULCBuZG5ib29zdDo6ZGV0YWlsOjppc19jb252ZXJ0aWJsZV9mcm9tX3Rlc3Rlcj46OnZhbHVlKSkKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vTkROQk9PU1RfVFRfSVNfQ09NUExFWF9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29tcG91bmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb21wb3VuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmMzRhOWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb21wb3VuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX0NPTVBPVU5EX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JU19DT01QT1VORF9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZnVuZGFtZW50YWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfbm90LmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotI2lmICFkZWZpbmVkKCBfX0NPREVHRUFSQ19fICkKLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19jb21wb3VuZF9pbXBsCi17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8VD46OnZhbHVlCi0gICAgICAgPjo6dmFsdWUpKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotI2VuZGlmIC8vICFkZWZpbmVkKCBfX0NPREVHRUFSQ19fICkKLQotI2lmIGRlZmluZWQoIF9fQ09ERUdFQVJDX18gKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19jb21wb3VuZCxULF9faXNfY29tcG91bmQoVCkpCi0jZWxzZQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19jb21wb3VuZCxULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfY29tcG91bmRfaW1wbDxUPjo6dmFsdWUpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX0NPTVBPVU5EX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb25zdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTE5Yjc1MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2NSArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IERhdmUgQWJyYWhhbXMsIFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIAotLy8gICAgICBIb3dhcmQgSGlubmFudCBhbmQgSm9obiBNYWRkb2NrIDIwMDAuIAotLy8gIChDKSBDb3B5cmlnaHQgTWF0IE1hcmN1cywgSmVzc2UgSm9uZXMgYW5kIEFkb2JlIFN5c3RlbXMgSW5jIDIwMDEKLQotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotLy8gICAgRml4ZWQgaXNfcG9pbnRlciwgaXNfcmVmZXJlbmNlLCBpc19jb25zdCwgaXNfdm9sYXRpbGUsIGlzX3NhbWUsIAotLy8gICAgaXNfbWVtYmVyX3BvaW50ZXIgYmFzZWQgb24gdGhlIFNpbXVsYXRlZCBQYXJ0aWFsIFNwZWNpYWxpemF0aW9uIHdvcmsgCi0vLyAgICBvZiBNYXQgTWFyY3VzIGFuZCBKZXNzZSBKb25lcy4gU2VlICBodHRwOi8vb3BlbnNvdXJjZS5hZG9iZS5jb20gb3IgCi0vLyAgICBodHRwOi8vZ3JvdXBzLnlhaG9vLmNvbS9ncm91cC9ib29zdC9tZXNzYWdlLzU0NDEgCi0vLyAgICBTb21lIHdvcmthcm91bmRzIGluIGhlcmUgdXNlIGlkZWFzIHN1Z2dlc3RlZCBmcm9tICJHZW5lcmljPFByb2dyYW1taW5nPjogCi0vLyAgICBNYXBwaW5ncyBiZXR3ZWVuIFR5cGVzIGFuZCBWYWx1ZXMiIAotLy8gICAgYnkgQW5kcmVpIEFsZXhhbmRyZXNjdSAoc2VlIGh0dHA6Ly93d3cuY3VqLmNvbS9leHBlcnRzLzE4MTAvYWxleGFuZHIuaHRtbCkuCi0KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JU19DT05TVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfQ09OU1RfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2N2X3RyYWl0c19pbXBsLmhwcD4KLSMgICBpZmRlZiBfX0dOVUNfXwotIyAgICAgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwPgotIyAgIGVuZGlmCi0jICAgaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDE0MDApCi0jICAgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9ib3VuZHMuaHBwPgotIyAgIGVuZGlmCi0jZWxzZQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3JlZmVyZW5jZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC95ZXNfbm9fdHlwZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ZhbHNlX3Jlc3VsdC5ocHA+Ci0jZW5kaWYKLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotI2lmIGRlZmluZWQoIF9fQ09ERUdFQVJDX18gKQotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX2NvbnN0LFQsX19pc19jb25zdChUKSkKLQotI2VsaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLQotbmFtZXNwYWNlIGRldGFpbHsKLS8vCi0vLyBXZSBjYW4ndCBmaWx0ZXIgb3V0IHJ2YWx1ZV9yZWZlcmVuY2VzIGF0IHRoZSBzYW1lIGxldmVsIGFzCi0vLyByZWZlcmVuY2VzIG9yIHdlIGdldCBhbWJpZ3VpdGllcyBmcm9tIG1zdmM6Ci0vLwotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfY29uc3RfcnZhbHVlX2ZpbHRlcgotewotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxNDAwKQotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gOjpuZG5ib29zdDo6ZGV0YWlsOjpjdl90cmFpdHNfaW1wPHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfYm91bmRzPFQ+Ojp0eXBlKj46OmlzX2NvbnN0KTsKLSNlbHNlCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmN2X3RyYWl0c19pbXA8VCo+Ojppc19jb25zdCk7Ci0jZW5kaWYKLX07Ci0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19jb25zdF9ydmFsdWVfZmlsdGVyPFQmJj4KLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0jZW5kaWYKLX0KLQotLy8qIGlzIGEgdHlwZSBUICBkZWNsYXJlZCBjb25zdCAtIGlzX2NvbnN0PFQ+Ci1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX2NvbnN0LFQsOjpuZG5ib29zdDo6ZGV0YWlsOjppc19jb25zdF9ydmFsdWVfZmlsdGVyPFQ+Ojp2YWx1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULGlzX2NvbnN0LFQmLGZhbHNlKQotCi0jaWYgIGRlZmluZWQoTkROQk9PU1RfSUxMRUdBTF9DVl9SRUZFUkVOQ0VTKQotLy8gdGhlc2UgYXJlIGlsbGVnYWwgc3BlY2lhbGlzYXRpb25zOyBjdi1xdWFsaWZpZXMgYXBwbGllZCB0bwotLy8gcmVmZXJlbmNlcyBoYXZlIG5vIGVmZmVjdCBhY2NvcmRpbmcgdG8gWzguMy4ycDFdLAotLy8gQysrIEJ1aWxkZXIgcmVxdWlyZXMgdGhlbSB0aG91Z2ggYXMgaXQgdHJlYXRzIGN2LXF1YWxpZmllZAotLy8gcmVmZXJlbmNlcyBhcyBkaXN0aW5jdCB0eXBlcy4uLgotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsaXNfY29uc3QsVCYgY29uc3QsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxpc19jb25zdCxUJiB2b2xhdGlsZSxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULGlzX2NvbnN0LFQmIGNvbnN0IHZvbGF0aWxlLGZhbHNlKQotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPCAzKQotLy8gc3BlY2lhbCBjYXNlIGZvciBnY2Mgd2hlcmUgaWxsZWdhbGx5IGN2LXF1YWxpZmllZCByZWZlcmVuY2UgdHlwZXMgY2FuIGJlCi0vLyBnZW5lcmF0ZWQgaW4gc29tZSBjb3JuZXIgY2FzZXM6Ci1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxpc19jb25zdCxUIGNvbnN0LCEoOjpuZG5ib29zdDo6aXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZSkpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxpc19jb25zdCxUIHZvbGF0aWxlIGNvbnN0LCEoOjpuZG5ib29zdDo6aXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZSkpCi0jZW5kaWYKLQotI2Vsc2UKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXVzaW5nIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZTsKLXVzaW5nIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpub190eXBlOwotCi15ZXNfdHlwZSBpc19jb25zdF90ZXN0ZXIoY29uc3Qgdm9sYXRpbGUgdm9pZCopOwotbm9fdHlwZSBpc19jb25zdF90ZXN0ZXIodm9sYXRpbGUgdm9pZCAqKTsKLQotdGVtcGxhdGUgPGJvb2wgaXNfcmVmLCBib29sIGFycmF5Pgotc3RydWN0IGlzX2NvbnN0X2hlbHBlcgotICAgIDogcHVibGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpmYWxzZV9yZXN1bHQKLXsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXNfY29uc3RfaGVscGVyPGZhbHNlLGZhbHNlPgotewotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgc3RhdGljIFQqIHQ7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9ICgKLSAgICAgICAgICAgIHNpemVvZihuZG5ib29zdDo6ZGV0YWlsOjp5ZXNfdHlwZSkgPT0gc2l6ZW9mKG5kbmJvb3N0OjpkZXRhaWw6OmlzX2NvbnN0X3Rlc3Rlcih0KSkKLSAgICAgICAgICAgICkpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGlzX2NvbnN0X2hlbHBlcjxmYWxzZSx0cnVlPgotewotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgc3RhdGljIFQgdDsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKAotICAgICAgICAgICAgc2l6ZW9mKG5kbmJvb3N0OjpkZXRhaWw6Onllc190eXBlKSA9PSBzaXplb2YobmRuYm9vc3Q6OmRldGFpbDo6aXNfY29uc3RfdGVzdGVyKCZ0KSkKLSAgICAgICAgICAgICkpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19jb25zdF9pbXBsCi0gICAgOiBwdWJsaWMgaXNfY29uc3RfaGVscGVyPAotICAgICAgICAgIGlzX3JlZmVyZW5jZTxUPjo6dmFsdWUKLSAgICAgICAgLCBpc19hcnJheTxUPjo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzxUPgotewotfTsKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19jb25zdCx2b2lkLGZhbHNlKQotI2lmbmRlZiBORE5CT09TVF9OT19DVl9WT0lEX1NQRUNJQUxJWkFUSU9OUwotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19jb25zdCx2b2lkIGNvbnN0LHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX2NvbnN0LHZvaWQgdm9sYXRpbGUsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX2NvbnN0LHZvaWQgY29uc3Qgdm9sYXRpbGUsdHJ1ZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotLy8qIGlzIGEgdHlwZSBUICBkZWNsYXJlZCBjb25zdCAtIGlzX2NvbnN0PFQ+Ci1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX2NvbnN0LFQsOjpuZG5ib29zdDo6ZGV0YWlsOjppc19jb25zdF9pbXBsPFQ+Ojp2YWx1ZSkKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX0NPTlNUX0hQUF9JTkNMVURFRAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29udmVydGlibGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjI2MzIyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29udmVydGlibGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDkyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IDIwMDAgSm9obiBNYWRkb2NrIChqb2huQGpvaG5tYWRkb2NrLmNvLnVrKQotLy8gQ29weXJpZ2h0IDIwMDAgSmVyZW15IFNpZWsgKGpzaWVrQGxzYy5uZC5lZHUpCi0vLyBDb3B5cmlnaHQgMTk5OSwgMjAwMCBKYWFra28gSmFydmkgKGphYWtrby5qYXJ2aUBjcy51dHUuZmkpCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JU19DT05WRVJUSUJMRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfQ09OVkVSVElCTEVfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pbnRyaW5zaWNzLmhwcD4KLSNpZm5kZWYgTkROQk9PU1RfSVNfQ09OVkVSVElCTEUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwveWVzX25vX3R5cGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ljZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJpdGhtZXRpYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9pZC5ocHA+Ci0jaWZuZGVmIE5ETkJPT1NUX05PX0lTX0FCU1RSQUNUCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYWJzdHJhY3QuaHBwPgotI2VuZGlmCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX2x2YWx1ZV9yZWZlcmVuY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9ydmFsdWVfcmVmZXJlbmNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19mdW5jdGlvbi5ocHA+Ci0KLSNpZiBkZWZpbmVkKF9fTVdFUktTX18pCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3JlZmVyZW5jZS5ocHA+Ci0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX0lTX0NPTlZFUlRJQkxFCi0KLS8vIHNob3VsZCBiZSBhbHdheXMgdGhlIGxhc3QgI2luY2x1ZGUgZGlyZWN0aXZlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotI2lmbmRlZiBORE5CT09TVF9JU19DT05WRVJUSUJMRQotCi0vLyBpcyBvbmUgdHlwZSBjb252ZXJ0aWJsZSB0byBhbm90aGVyPwotLy8KLS8vIHRoZXJlIGFyZSBtdWx0aXBsZSB2ZXJzaW9ucyBvZiB0aGUgaXNfY29udmVydGlibGUKLS8vIHRlbXBsYXRlLCBhbG1vc3QgZXZlcnkgY29tcGlsZXIgc2VlbXMgdG8gcmVxdWlyZSBpdHMKLS8vIG93biB2ZXJzaW9uLgotLy8KLS8vIFRoYW5rcyB0byBBbmRyZWkgQWxleGFuZHJlc2N1IGZvciB0aGUgb3JpZ2luYWwgdmVyc2lvbiBvZiB0aGUKLS8vIGNvbnZlcnNpb24gZGV0ZWN0aW9uIHRlY2huaXF1ZSEKLS8vCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyBNUyBzcGVjaWZpYyB2ZXJzaW9uOgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiAoTkROQk9PU1RfTVNWQyA8PSAxMzAwKQotCi0vLyBUaGlzIHdvcmthcm91bmQgaXMgbmVjZXNzYXJ5IHRvIGhhbmRsZSB3aGVuIEZyb20gaXMgdm9pZAotLy8gd2hpY2ggaXMgbm9ybWFsbHkgdGFrZW4gY2FyZSBvZiBieSB0aGUgcGFydGlhbCBzcGVjaWFsaXphdGlvbgotLy8gb2YgdGhlIGlzX2NvbnZlcnRpYmxlIHR5cGVuYW1lLgotdXNpbmcgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlOwotdXNpbmcgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Om5vX3R5cGU7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGcm9tID4KLXN0cnVjdCBkb2VzX2NvbnZlcnNpb25fZXhpc3QKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVG8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgc3RhdGljIG5vX3R5cGUgTkROQk9PU1RfVFRfREVDTCBfbV9jaGVjayguLi4pOwotICAgICAgICBzdGF0aWMgeWVzX3R5cGUgTkROQk9PU1RfVFRfREVDTCBfbV9jaGVjayhUbyk7Ci0gICAgICAgIHN0YXRpYyB0eXBlbmFtZSBhZGRfbHZhbHVlX3JlZmVyZW5jZTxGcm9tPjo6dHlwZSAgX21fZnJvbTsKLSAgICAgICAgZW51bSB7IHZhbHVlID0gc2l6ZW9mKCBfbV9jaGVjayhfbV9mcm9tKSApID09IHNpemVvZih5ZXNfdHlwZSkgfTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRvZXNfY29udmVyc2lvbl9leGlzdDx2b2lkPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUbyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICBlbnVtIHsgdmFsdWUgPSA6Om5kbmJvb3N0Ojppc192b2lkPFRvPjo6dmFsdWUgfTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEZyb20sIHR5cGVuYW1lIFRvPgotc3RydWN0IGlzX2NvbnZlcnRpYmxlX2Jhc2ljX2ltcGwKLSAgICA6IHB1YmxpYyBkb2VzX2NvbnZlcnNpb25fZXhpc3Q8RnJvbT46OnRlbXBsYXRlIHJlc3VsdF88VG8+Ci17Ci19OwotCi0jZWxpZiBkZWZpbmVkKF9fQk9STEFORENfXykgJiYgKF9fQk9STEFORENfXyA8IDB4NTYwKQotLy8KLS8vIHNwZWNpYWwgdmVyc2lvbiBmb3IgQm9ybGFuZCBjb21waWxlcnMKLS8vIHRoaXMgdmVyc2lvbiBicmVha3Mgd2hlbiB1c2VkIGZvciBzb21lCi0vLyBVRFQgY29udmVyc2lvbnM6Ci0vLwotdGVtcGxhdGUgPHR5cGVuYW1lIEZyb20sIHR5cGVuYW1lIFRvPgotc3RydWN0IGlzX2NvbnZlcnRpYmxlX2ltcGwKLXsKLSNwcmFnbWEgb3B0aW9uIHB1c2ggLXctODA3NAotICAgIC8vIFRoaXMgd29ya2Fyb3VuZCBmb3IgQm9ybGFuZCBicmVha3MgdGhlIEVERyBDKysgZnJvbnRlbmQsCi0gICAgLy8gc28gd2Ugb25seSB1c2UgaXQgZm9yIEJvcmxhbmQuCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBjaGVja2VyCi0gICAgewotICAgICAgICBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Om5vX3R5cGUgTkROQk9PU1RfVFRfREVDTCBfbV9jaGVjayguLi4pOwotICAgICAgICBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIE5ETkJPT1NUX1RUX0RFQ0wgX21fY2hlY2soVCk7Ci0gICAgfTsKLQotICAgIHN0YXRpYyB0eXBlbmFtZSBhZGRfbHZhbHVlX3JlZmVyZW5jZTxGcm9tPjo6dHlwZSAgX21fZnJvbTsKLSAgICBzdGF0aWMgYm9vbCBjb25zdCB2YWx1ZSA9IHNpemVvZiggY2hlY2tlcjxUbz46Ol9tX2NoZWNrKF9tX2Zyb20pICkKLSAgICAgICAgPT0gc2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSk7Ci0jcHJhZ21hIG9wdGlvbiBwb3AKLX07Ci0KLSNlbGlmIGRlZmluZWQoX19HTlVDX18pIHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiAoX19CT1JMQU5EQ19fIDwgMHg2MDApCi0vLyBzcGVjaWFsIHZlcnNpb24gZm9yIGdjYyBjb21waWxlciArIHJlY2VudCBCb3JsYW5kIHZlcnNpb25zCi0vLyBub3RlIHRoYXQgdGhpcyBkb2VzIG5vdCBwYXNzIFVEVCdzIHRocm91Z2ggKC4uLikKLQotc3RydWN0IGFueV9jb252ZXJzaW9uCi17Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGFueV9jb252ZXJzaW9uKGNvbnN0IHZvbGF0aWxlIFQmKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gYW55X2NvbnZlcnNpb24oY29uc3QgVCYpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBhbnlfY29udmVyc2lvbih2b2xhdGlsZSBUJik7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGFueV9jb252ZXJzaW9uKFQmKTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgY2hlY2tlcgotewotICAgIHN0YXRpYyBuZG5ib29zdDo6dHlwZV90cmFpdHM6Om5vX3R5cGUgX21fY2hlY2soYW55X2NvbnZlcnNpb24gLi4uKTsKLSAgICBzdGF0aWMgbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBfbV9jaGVjayhULCBpbnQpOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEZyb20sIHR5cGVuYW1lIFRvPgotc3RydWN0IGlzX2NvbnZlcnRpYmxlX2Jhc2ljX2ltcGwKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF9sdmFsdWVfcmVmZXJlbmNlPEZyb20+Ojp0eXBlIGx2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3J2YWx1ZV9yZWZlcmVuY2U8RnJvbT46OnR5cGUgcnZhbHVlX3R5cGU7Ci0gICAgc3RhdGljIGx2YWx1ZV90eXBlIF9tX2Zyb207Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMpICYmICgoX19HTlVDX18gPiA0KSB8fCAoKF9fR05VQ19fID09IDQpICYmIChfX0dOVUNfTUlOT1JfXyA+IDYpKSkKLSAgICBzdGF0aWMgYm9vbCBjb25zdCB2YWx1ZSA9Ci0gICAgICAgIHNpemVvZiggbmRuYm9vc3Q6OmRldGFpbDo6Y2hlY2tlcjxUbz46Ol9tX2NoZWNrKHN0YXRpY19jYXN0PHJ2YWx1ZV90eXBlPihfbV9mcm9tKSwgMCkgKQotICAgICAgICA9PSBzaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlKTsKLSNlbHNlCi0gICAgc3RhdGljIGJvb2wgY29uc3QgdmFsdWUgPQotICAgICAgICBzaXplb2YoIG5kbmJvb3N0OjpkZXRhaWw6OmNoZWNrZXI8VG8+OjpfbV9jaGVjayhfbV9mcm9tLCAwKSApCi0gICAgICAgID09IHNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUpOwotI2VuZGlmCi19OwotCi0jZWxpZiAoZGVmaW5lZChfX0VER19WRVJTSU9OX18pICYmIChfX0VER19WRVJTSU9OX18gPj0gMjQ1KSAmJiAhZGVmaW5lZChfX0lDTCkpIFwKLSAgICAgIHx8IGRlZmluZWQoX19JQk1DUFBfXykgfHwgZGVmaW5lZChfX0hQX2FDQykKLS8vCi0vLyBUaGlzIGlzICphbG1vc3QqIGFuIGlkZWFsIHdvcmxkIGltcGxlbWVudGF0aW9uIGFzIGl0IGRvZXNuJ3QgcmVseQotLy8gb24gdW5kZWZpbmVkIGJlaGF2aW91ciBieSBwYXNzaW5nIFVEVCdzIHRocm91Z2ggKC4uLikuCi0vLyBVbmZvcnR1bmF0ZWx5IGl0IGRvZXNuJ3QgcXVpdGUgcGFzcyBhbGwgdGhlIHRlc3RzIGZvciBtb3N0IGNvbXBpbGVycyAoc2lnaC4uLikKLS8vIEVuYWJsZSB0aGlzIGZvciB5b3VyIGNvbXBpbGVyIGlmIGlzX2NvbnZlcnRpYmxlX3Rlc3QuY3BwIHdpbGwgY29tcGlsZSBpdC4uLgotLy8KLS8vIE5vdGUgd2UgZG8gbm90IGVuYWJsZSB0aGlzIGZvciBWQzcuMSwgYmVjYXVzZSBldmVuIHRob3VnaCBpdCBwYXNzZXMgYWxsIHRoZQotLy8gdHlwZV90cmFpdHMgdGVzdHMgaXQgaXMga25vd24gdG8gY2F1c2UgcHJvYmxlbXMgd2hlbiBpbnN0YW50aWF0aW9uIG9jY3VycwotLy8gZGVlcCB3aXRoaW4gdGhlIGluc3RhbnRpYXRpb24gdHJlZSA6LSgKLS8vCi1zdHJ1Y3QgYW55X2NvbnZlcnNpb24KLXsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gYW55X2NvbnZlcnNpb24oY29uc3Qgdm9sYXRpbGUgVCYpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBhbnlfY29udmVyc2lvbihjb25zdCBUJik7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGFueV9jb252ZXJzaW9uKHZvbGF0aWxlIFQmKTsKLSAgICAvLyB3ZSBuZWVkIHRoaXMgY29uc3RydWN0b3IgdG8gY2F0Y2ggcmVmZXJlbmNlcyB0byBmdW5jdGlvbnMKLSAgICAvLyAod2hpY2ggY2FuIG5vdCBiZSBjdi1xdWFsaWZpZWQpOgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBhbnlfY29udmVyc2lvbihUJik7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRnJvbSwgdHlwZW5hbWUgVG8+Ci1zdHJ1Y3QgaXNfY29udmVydGlibGVfYmFzaWNfaW1wbAotewotICAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6bm9fdHlwZSBORE5CT09TVF9UVF9ERUNMIF9tX2NoZWNrKGFueV9jb252ZXJzaW9uIC4uLik7Ci0gICAgc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBORE5CT09TVF9UVF9ERUNMIF9tX2NoZWNrKFRvLCBpbnQpOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX2x2YWx1ZV9yZWZlcmVuY2U8RnJvbT46OnR5cGUgbHZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfcnZhbHVlX3JlZmVyZW5jZTxGcm9tPjo6dHlwZSBydmFsdWVfdHlwZTsgCi0gICAgc3RhdGljIGx2YWx1ZV90eXBlIF9tX2Zyb207Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICBzaXplb2YoIF9tX2NoZWNrKHN0YXRpY19jYXN0PHJ2YWx1ZV90eXBlPihfbV9mcm9tKSwgMCkgKSA9PSBzaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlKQotICAgICAgICApOwotI2Vsc2UKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICBzaXplb2YoIF9tX2NoZWNrKF9tX2Zyb20sIDApICkgPT0gc2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSkKLSAgICAgICAgKTsKLSNlbmRpZgotfTsKLQotI2VsaWYgZGVmaW5lZChfX0RNQ19fKQotCi1zdHJ1Y3QgYW55X2NvbnZlcnNpb24KLXsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gYW55X2NvbnZlcnNpb24oY29uc3Qgdm9sYXRpbGUgVCYpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBhbnlfY29udmVyc2lvbihjb25zdCBUJik7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGFueV9jb252ZXJzaW9uKHZvbGF0aWxlIFQmKTsKLSAgICAvLyB3ZSBuZWVkIHRoaXMgY29uc3RydWN0b3IgdG8gY2F0Y2ggcmVmZXJlbmNlcyB0byBmdW5jdGlvbnMKLSAgICAvLyAod2hpY2ggY2FuIG5vdCBiZSBjdi1xdWFsaWZpZWQpOgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBhbnlfY29udmVyc2lvbihUJik7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRnJvbSwgdHlwZW5hbWUgVG8+Ci1zdHJ1Y3QgaXNfY29udmVydGlibGVfYmFzaWNfaW1wbAotewotICAgIC8vIFVzaW5nICcuLi4nIGRvZXNuJ3QgYWx3YXlzIHdvcmsgb24gRGlnaXRhbCBNYXJzLiBUaGlzIHZlcnNpb24gc2VlbXMgdG8uCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpub190eXBlIE5ETkJPT1NUX1RUX0RFQ0wgX21fY2hlY2soYW55X2NvbnZlcnNpb24sICBmbG9hdCwgVCk7Ci0gICAgc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBORE5CT09TVF9UVF9ERUNMIF9tX2NoZWNrKFRvLCBpbnQsIGludCk7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfbHZhbHVlX3JlZmVyZW5jZTxGcm9tPjo6dHlwZSBsdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF9ydmFsdWVfcmVmZXJlbmNlPEZyb20+Ojp0eXBlIHJ2YWx1ZV90eXBlOwotICAgIHN0YXRpYyBsdmFsdWVfdHlwZSBfbV9mcm9tOwotCi0gICAgLy8gU3RhdGljIGNvbnN0YW50cyBzb21ldGltZSBjYXVzZSB0aGUgY29udmVyc2lvbiBvZiBfbV9mcm9tIHRvIFRvIHRvIGJlCi0gICAgLy8gY2FsbGVkLiBUaGlzIGRvZXNuJ3QgaGFwcGVuIHdpdGggYW4gZW51bS4KLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLSAgICBlbnVtIHsgdmFsdWUgPQotICAgICAgICBzaXplb2YoIF9tX2NoZWNrKHN0YXRpY19jYXN0PHJ2YWx1ZV90eXBlPihfbV9mcm9tKSwgMCwgMCkgKSA9PSBzaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlKQotICAgICAgICB9OwotI2Vsc2UKLSAgICBlbnVtIHsgdmFsdWUgPQotICAgICAgICBzaXplb2YoIF9tX2NoZWNrKF9tX2Zyb20sIDAsIDApICkgPT0gc2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSkKLSAgICAgICAgfTsKLSNlbmRpZgotfTsKLQotI2VsaWYgZGVmaW5lZChfX01XRVJLU19fKQotLy8gCi0vLyBDVyB3b3JrcyB3aXRoIHRoZSB0ZWNobmlxdWUgaW1wbGVtZW50ZWQgYWJvdmUgZm9yIEVERywgZXhjZXB0IHdoZW4gRnJvbQotLy8gaXMgYSBmdW5jdGlvbiB0eXBlIChvciBhIHJlZmVyZW5jZSB0byBzdWNoIGEgdHlwZSksIGluIHdoaWNoIGNhc2UKLS8vIGFueV9jb252ZXJzaW9uIHdvbid0IGJlIGFjY2VwdGVkIGFzIGEgdmFsaWQgY29udmVyc2lvbi4gV2UgZGV0ZWN0IHRoaXMKLS8vIGV4Y2VwdGlvbmFsIHNpdHVhdGlvbiBhbmQgY2hhbm5lbCBpdCB0aHJvdWdoIGFuIGFsdGVybmF0aXZlIGFsZ29yaXRobS4KLS8vCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBGcm9tLCB0eXBlbmFtZSBUbyxib29sIEZyb21Jc0Z1bmN0aW9uUmVmPgotc3RydWN0IGlzX2NvbnZlcnRpYmxlX2Jhc2ljX2ltcGxfYXV4OwotCi1zdHJ1Y3QgYW55X2NvbnZlcnNpb24KLXsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gYW55X2NvbnZlcnNpb24oY29uc3Qgdm9sYXRpbGUgVCYpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBhbnlfY29udmVyc2lvbihjb25zdCBUJik7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGFueV9jb252ZXJzaW9uKHZvbGF0aWxlIFQmKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gYW55X2NvbnZlcnNpb24oVCYpOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEZyb20sIHR5cGVuYW1lIFRvPgotc3RydWN0IGlzX2NvbnZlcnRpYmxlX2Jhc2ljX2ltcGxfYXV4PEZyb20sVG8sZmFsc2UgLypGcm9tSXNGdW5jdGlvblJlZiovPgotewotICAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6bm9fdHlwZSBORE5CT09TVF9UVF9ERUNMIF9tX2NoZWNrKGFueV9jb252ZXJzaW9uIC4uLik7Ci0gICAgc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBORE5CT09TVF9UVF9ERUNMIF9tX2NoZWNrKFRvLCBpbnQpOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX2x2YWx1ZV9yZWZlcmVuY2U8RnJvbT46OnR5cGUgbHZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfcnZhbHVlX3JlZmVyZW5jZTxGcm9tPjo6dHlwZSBydmFsdWVfdHlwZTsgCi0gICAgc3RhdGljIGx2YWx1ZV90eXBlIF9tX2Zyb207Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICBzaXplb2YoIF9tX2NoZWNrKHN0YXRpY19jYXN0PHJ2YWx1ZV90eXBlPihfbV9mcm9tKSwgMCkgKSA9PSBzaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlKQotICAgICAgICApOwotI2Vsc2UKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICBzaXplb2YoIF9tX2NoZWNrKF9tX2Zyb20sIDApICkgPT0gc2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSkKLSAgICAgICAgKTsKLSNlbmRpZgotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEZyb20sIHR5cGVuYW1lIFRvPgotc3RydWN0IGlzX2NvbnZlcnRpYmxlX2Jhc2ljX2ltcGxfYXV4PEZyb20sVG8sdHJ1ZSAvKkZyb21Jc0Z1bmN0aW9uUmVmKi8+Ci17Ci0gICAgc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpub190eXBlIE5ETkJPT1NUX1RUX0RFQ0wgX21fY2hlY2soLi4uKTsKLSAgICBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIE5ETkJPT1NUX1RUX0RFQ0wgX21fY2hlY2soVG8pOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX2x2YWx1ZV9yZWZlcmVuY2U8RnJvbT46OnR5cGUgbHZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfcnZhbHVlX3JlZmVyZW5jZTxGcm9tPjo6dHlwZSBydmFsdWVfdHlwZTsKLSAgICBzdGF0aWMgbHZhbHVlX3R5cGUgX21fZnJvbTsKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICBzaXplb2YoIF9tX2NoZWNrKHN0YXRpY19jYXN0PHJ2YWx1ZV90eXBlPihfbV9mcm9tKSkgKSA9PSBzaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlKQotICAgICAgICApOwotI2Vsc2UKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICBzaXplb2YoIF9tX2NoZWNrKF9tX2Zyb20pICkgPT0gc2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSkKLSAgICAgICAgKTsKLSNlbmRpZgotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEZyb20sIHR5cGVuYW1lIFRvPgotc3RydWN0IGlzX2NvbnZlcnRpYmxlX2Jhc2ljX2ltcGw6Ci0gIGlzX2NvbnZlcnRpYmxlX2Jhc2ljX2ltcGxfYXV4PAotICAgIEZyb20sVG8sCi0gICAgOjpuZG5ib29zdDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgOjpuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTxGcm9tPjo6dHlwZT46OnZhbHVlCi0gID4KLXt9OwotCi0jZWxzZQotLy8KLS8vIFRoaXMgdmVyc2lvbiBzZWVtcyB0byB3b3JrIHByZXR0eSB3ZWxsIGZvciBhIHdpZGUgc3BlY3RydW0gb2YgY29tcGlsZXJzLAotLy8gaG93ZXZlciBpdCBkb2VzIHJlbHkgb24gdW5kZWZpbmVkIGJlaGF2aW91ciBieSBwYXNzaW5nIFVEVCdzIHRocm91Z2ggKC4uLikuCi0vLwotdGVtcGxhdGUgPHR5cGVuYW1lIEZyb20sIHR5cGVuYW1lIFRvPgotc3RydWN0IGlzX2NvbnZlcnRpYmxlX2Jhc2ljX2ltcGwKLXsKLSAgICBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Om5vX3R5cGUgTkROQk9PU1RfVFRfREVDTCBfbV9jaGVjayguLi4pOwotICAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgTkROQk9PU1RfVFRfREVDTCBfbV9jaGVjayhUbyk7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfbHZhbHVlX3JlZmVyZW5jZTxGcm9tPjo6dHlwZSBsdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF9ydmFsdWVfcmVmZXJlbmNlPEZyb20+Ojp0eXBlIHJ2YWx1ZV90eXBlOyAKLSAgICBzdGF0aWMgbHZhbHVlX3R5cGUgX21fZnJvbTsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQyNDQpCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDX0ZVTExfVkVSLCA+PSAxNDAwNTAwMDApCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo2MzM0KQotI2VuZGlmCi0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICBzaXplb2YoIF9tX2NoZWNrKHN0YXRpY19jYXN0PHJ2YWx1ZV90eXBlPihfbV9mcm9tKSkgKSA9PSBzaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlKQotICAgICAgICApOwotI2Vsc2UKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICBzaXplb2YoIF9tX2NoZWNrKF9tX2Zyb20pICkgPT0gc2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSkKLSAgICAgICAgKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLX07Ci0KLSNlbmRpZiAvLyBpc19jb252ZXJ0aWJsZV9pbXBsCi0KLSNpZiBkZWZpbmVkKF9fRE1DX18pCi0vLyBBcyBiZWZvcmUsIGEgc3RhdGljIGNvbnN0YW50IHNvbWV0aW1lcyBjYXVzZXMgZXJyb3JzIG9uIERpZ2l0YWwgTWFycy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBGcm9tLCB0eXBlbmFtZSBUbz4KLXN0cnVjdCBpc19jb252ZXJ0aWJsZV9pbXBsCi17Ci0gICAgZW51bSB7IHZhbHVlID0KLSAgICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfY29udmVydGlibGVfYmFzaWNfaW1wbDxGcm9tLFRvPjo6dmFsdWUsCi0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc192b2lkPFRvPjo6dmFsdWUKLSAgICAgICAgICAgID46OnZhbHVlLAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8Ci0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19hcnJheTxUbz46OnZhbHVlCi0gICAgICAgICAgICA+Ojp2YWx1ZSwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuY3Rpb248VG8+Ojp2YWx1ZQotICAgICAgICAgICAgPjo6dmFsdWUKLSAgICAgICAgPjo6dmFsdWUpIH07Ci19OwotI2VsaWYgIWRlZmluZWQoX19CT1JMQU5EQ19fKSB8fCBfX0JPUkxBTkRDX18gPiAweDU1MQotdGVtcGxhdGUgPHR5cGVuYW1lIEZyb20sIHR5cGVuYW1lIFRvPgotc3RydWN0IGlzX2NvbnZlcnRpYmxlX2ltcGwKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6ZGV0YWlsOjppc19jb252ZXJ0aWJsZV9iYXNpY19pbXBsPEZyb20sVG8+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8VG8+Ojp2YWx1ZQotICAgICAgICAgICAgPjo6dmFsdWUsCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2FycmF5PFRvPjo6dmFsdWUKLSAgICAgICAgICAgID46OnZhbHVlLAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8Ci0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5jdGlvbjxUbz46OnZhbHVlCi0gICAgICAgICAgICA+Ojp2YWx1ZQotICAgICAgICA+Ojp2YWx1ZSkKLSAgICAgICAgKTsKLX07Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGJvb2wgdHJpdmlhbDEsIGJvb2wgdHJpdmlhbDIsIGJvb2wgYWJzdHJhY3RfdGFyZ2V0Pgotc3RydWN0IGlzX2NvbnZlcnRpYmxlX2ltcGxfc2VsZWN0Ci17Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgRnJvbSwgY2xhc3MgVG8+Ci0gICBzdHJ1Y3QgcmViaW5kCi0gICB7Ci0gICAgICB0eXBlZGVmIGlzX2NvbnZlcnRpYmxlX2ltcGw8RnJvbSwgVG8+IHR5cGU7Ci0gICB9OwotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBpc19jb252ZXJ0aWJsZV9pbXBsX3NlbGVjdDx0cnVlLCB0cnVlLCBmYWxzZT4KLXsKLSAgIHRlbXBsYXRlIDxjbGFzcyBGcm9tLCBjbGFzcyBUbz4KLSAgIHN0cnVjdCByZWJpbmQKLSAgIHsKLSAgICAgIHR5cGVkZWYgdHJ1ZV90eXBlIHR5cGU7Ci0gICB9OwotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBpc19jb252ZXJ0aWJsZV9pbXBsX3NlbGVjdDxmYWxzZSwgZmFsc2UsIHRydWU+Ci17Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgRnJvbSwgY2xhc3MgVG8+Ci0gICBzdHJ1Y3QgcmViaW5kCi0gICB7Ci0gICAgICB0eXBlZGVmIGZhbHNlX3R5cGUgdHlwZTsKLSAgIH07Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGlzX2NvbnZlcnRpYmxlX2ltcGxfc2VsZWN0PHRydWUsIGZhbHNlLCB0cnVlPgotewotICAgdGVtcGxhdGUgPGNsYXNzIEZyb20sIGNsYXNzIFRvPgotICAgc3RydWN0IHJlYmluZAotICAgewotICAgICAgdHlwZWRlZiBmYWxzZV90eXBlIHR5cGU7Ci0gICB9OwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEZyb20sIHR5cGVuYW1lIFRvPgotc3RydWN0IGlzX2NvbnZlcnRpYmxlX2ltcGxfZGlzcGF0Y2hfYmFzZQotewotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fSFBfYUNDLCA8IDYwNzAwKQotICAgdHlwZWRlZiBpc19jb252ZXJ0aWJsZV9pbXBsX3NlbGVjdDwgCi0gICAgICA6Om5kbmJvb3N0Ojppc19hcml0aG1ldGljPEZyb20+Ojp2YWx1ZSwgCi0gICAgICA6Om5kbmJvb3N0Ojppc19hcml0aG1ldGljPFRvPjo6dmFsdWUsCi0jaWZuZGVmIE5ETkJPT1NUX05PX0lTX0FCU1RSQUNUCi0gICAgICA6Om5kbmJvb3N0Ojppc19hYnN0cmFjdDxUbz46OnZhbHVlCi0jZWxzZQotICAgICAgZmFsc2UKLSNlbmRpZgotICAgPiBzZWxlY3RvcjsKLSNlbHNlCi0gICB0eXBlZGVmIGlzX2NvbnZlcnRpYmxlX2ltcGxfc2VsZWN0PGZhbHNlLCBmYWxzZSwgZmFsc2U+IHNlbGVjdG9yOwotI2VuZGlmCi0gICB0eXBlZGVmIHR5cGVuYW1lIHNlbGVjdG9yOjp0ZW1wbGF0ZSByZWJpbmQ8RnJvbSwgVG8+IGlzY19iaW5kZXI7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGlzY19iaW5kZXI6OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBGcm9tLCB0eXBlbmFtZSBUbz4KLXN0cnVjdCBpc19jb252ZXJ0aWJsZV9pbXBsX2Rpc3BhdGNoIAotICAgOiBwdWJsaWMgaXNfY29udmVydGlibGVfaW1wbF9kaXNwYXRjaF9iYXNlPEZyb20sIFRvPjo6dHlwZQote307Ci0KLS8vCi0vLyBOb3cgYWRkIHRoZSBmdWxsIGFuZCBwYXJ0aWFsIHNwZWNpYWxpc2F0aW9ucwotLy8gZm9yIHZvaWQgdHlwZXMsIHRoZXNlIGFyZSBjb21tb24gdG8gYWxsIHRoZQotLy8gaW1wbGVtZW50YXRpb24gYWJvdmU6Ci0vLwotI2lmbmRlZiBORE5CT09TVF9OT19DVl9WT0lEX1NQRUNJQUxJWkFUSU9OUwotIyAgIGRlZmluZSBUVF9BVVhfQk9PTF9DVl9WT0lEX1RSQUlUX1NQRUMyX1BBUlQxKHRyYWl0LHNwZWMxLHNwZWMyLHZhbHVlKSBcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMih0cmFpdCxzcGVjMSxzcGVjMix2YWx1ZSkgXAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzIodHJhaXQsc3BlYzEsc3BlYzIgY29uc3QsdmFsdWUpIFwKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMyKHRyYWl0LHNwZWMxLHNwZWMyIHZvbGF0aWxlLHZhbHVlKSBcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMih0cmFpdCxzcGVjMSxzcGVjMiBjb25zdCB2b2xhdGlsZSx2YWx1ZSkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBUVF9BVVhfQk9PTF9DVl9WT0lEX1RSQUlUX1NQRUMyKHRyYWl0LHNwZWMxLHNwZWMyLHZhbHVlKSBcCi0gICAgVFRfQVVYX0JPT0xfQ1ZfVk9JRF9UUkFJVF9TUEVDMl9QQVJUMSh0cmFpdCxzcGVjMSxzcGVjMix2YWx1ZSkgXAotICAgIFRUX0FVWF9CT09MX0NWX1ZPSURfVFJBSVRfU1BFQzJfUEFSVDEodHJhaXQsc3BlYzEgY29uc3Qsc3BlYzIsdmFsdWUpIFwKLSAgICBUVF9BVVhfQk9PTF9DVl9WT0lEX1RSQUlUX1NQRUMyX1BBUlQxKHRyYWl0LHNwZWMxIHZvbGF0aWxlLHNwZWMyLHZhbHVlKSBcCi0gICAgVFRfQVVYX0JPT0xfQ1ZfVk9JRF9UUkFJVF9TUEVDMl9QQVJUMSh0cmFpdCxzcGVjMSBjb25zdCB2b2xhdGlsZSxzcGVjMix2YWx1ZSkgXAotICAgIC8qKi8KLQotICAgIFRUX0FVWF9CT09MX0NWX1ZPSURfVFJBSVRfU1BFQzIoaXNfY29udmVydGlibGUsdm9pZCx2b2lkLHRydWUpCi0KLSMgICB1bmRlZiBUVF9BVVhfQk9PTF9DVl9WT0lEX1RSQUlUX1NQRUMyCi0jICAgdW5kZWYgVFRfQVVYX0JPT0xfQ1ZfVk9JRF9UUkFJVF9TUEVDMl9QQVJUMQotCi0jZWxzZQotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzIoaXNfY29udmVydGlibGUsdm9pZCx2b2lkLHRydWUpCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1BBUlRJQUxfU1BFQzJfMSh0eXBlbmFtZSBUbyxpc19jb252ZXJ0aWJsZSx2b2lkLFRvLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9QQVJUSUFMX1NQRUMyXzEodHlwZW5hbWUgRnJvbSxpc19jb252ZXJ0aWJsZSxGcm9tLHZvaWQsZmFsc2UpCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1BBUlRJQUxfU1BFQzJfMSh0eXBlbmFtZSBUbyxpc19jb252ZXJ0aWJsZSx2b2lkIGNvbnN0LFRvLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9QQVJUSUFMX1NQRUMyXzEodHlwZW5hbWUgVG8saXNfY29udmVydGlibGUsdm9pZCB2b2xhdGlsZSxUbyxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfUEFSVElBTF9TUEVDMl8xKHR5cGVuYW1lIFRvLGlzX2NvbnZlcnRpYmxlLHZvaWQgY29uc3Qgdm9sYXRpbGUsVG8sZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1BBUlRJQUxfU1BFQzJfMSh0eXBlbmFtZSBGcm9tLGlzX2NvbnZlcnRpYmxlLEZyb20sdm9pZCBjb25zdCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfUEFSVElBTF9TUEVDMl8xKHR5cGVuYW1lIEZyb20saXNfY29udmVydGlibGUsRnJvbSx2b2lkIHZvbGF0aWxlLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9QQVJUSUFMX1NQRUMyXzEodHlwZW5hbWUgRnJvbSxpc19jb252ZXJ0aWJsZSxGcm9tLHZvaWQgY29uc3Qgdm9sYXRpbGUsZmFsc2UpCi0jZW5kaWYKLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYyKGlzX2NvbnZlcnRpYmxlLEZyb20sVG8sKDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfY29udmVydGlibGVfaW1wbF9kaXNwYXRjaDxGcm9tLFRvPjo6dmFsdWUpKQotCi0jZWxzZQotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYyKGlzX2NvbnZlcnRpYmxlLEZyb20sVG8sTkROQk9PU1RfSVNfQ09OVkVSVElCTEUoRnJvbSxUbykpCi0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfQ09OVkVSVElCTEVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2VtcHR5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZW1wdHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NmVjNGFhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZW1wdHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjI5ICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JU19FTVBUWV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfRU1QVFlfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9vci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pbnRyaW5zaWNzLmhwcD4KLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jbGFzcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3JlZmVyZW5jZS5ocHA+Ci0jZWxzZQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3JlZmVyZW5jZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9pbnRlci5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbWVtYmVyX3BvaW50ZXIuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FycmF5LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2lkLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX2FuZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9ub3QuaHBwPgotI2VuZGlmCi0KLS8vIHNob3VsZCBiZSBhbHdheXMgdGhlIGxhc3QgI2luY2x1ZGUgZGlyZWN0aXZlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotI2lmbmRlZiBORE5CT09TVF9JTlRFUk5BTF9JU19FTVBUWQotI2RlZmluZSBORE5CT09TVF9JTlRFUk5BTF9JU19FTVBUWShUKSBmYWxzZQotI2Vsc2UKLSNkZWZpbmUgTkROQk9PU1RfSU5URVJOQUxfSVNfRU1QVFkoVCkgTkROQk9PU1RfSVNfRU1QVFkoVCkKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ2MjQpIC8vIGRlc3RydWN0b3IgY291bGQgbm90IGJlIGdlbmVyYXRlZAotI2VuZGlmCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGVtcHR5X2hlbHBlcl90MSA6IHB1YmxpYyBUCi17Ci0gICAgZW1wdHlfaGVscGVyX3QxKCk7ICAvLyBoaCBjb21waWxlciBidWcgd29ya2Fyb3VuZAotICAgIGludCBpWzI1Nl07Ci1wcml2YXRlOgotICAgLy8gc3VwcHJlc3MgY29tcGlsZXIgd2FybmluZ3M6Ci0gICBlbXB0eV9oZWxwZXJfdDEoY29uc3QgZW1wdHlfaGVscGVyX3QxJik7Ci0gICBlbXB0eV9oZWxwZXJfdDEmIG9wZXJhdG9yPShjb25zdCBlbXB0eV9oZWxwZXJfdDEmKTsKLX07Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLXN0cnVjdCBlbXB0eV9oZWxwZXJfdDIgeyBpbnQgaVsyNTZdOyB9OwotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4NjAwKQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgYm9vbCBpc19hX2NsYXNzID0gZmFsc2U+Ci1zdHJ1Y3QgZW1wdHlfaGVscGVyCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgZW1wdHlfaGVscGVyPFQsIHRydWU+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKAotICAgICAgICBib29sLCB2YWx1ZSA9IChzaXplb2YoZW1wdHlfaGVscGVyX3QxPFQ+KSA9PSBzaXplb2YoZW1wdHlfaGVscGVyX3QyKSkKLSAgICAgICAgKTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2VtcHR5X2ltcGwKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlbW92ZV9jdjxUPjo6dHlwZSBjdnQ7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKAotICAgICAgICBib29sLCB2YWx1ZSA9ICgKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8Ci0gICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfaGVscGVyPGN2dCw6Om5kbmJvb3N0Ojppc19jbGFzczxUPjo6dmFsdWU+Ojp2YWx1ZQotICAgICAgICAgICAgICAsIE5ETkJPT1NUX0lOVEVSTkFMX0lTX0VNUFRZKGN2dCkKLSAgICAgICAgICAgID46OnZhbHVlCi0gICAgICAgICAgICApKTsKLX07Ci0KLSNlbHNlIC8vIF9fQk9STEFORENfXwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgYm9vbCBpc19hX2NsYXNzLCBib29sIGNvbnZlcnRpYmxlX3RvX2ludD4KLXN0cnVjdCBlbXB0eV9oZWxwZXIKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBlbXB0eV9oZWxwZXI8VCwgdHJ1ZSwgZmFsc2U+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKAotICAgICAgICBzaXplb2YoZW1wdHlfaGVscGVyX3QxPFQ+KSA9PSBzaXplb2YoZW1wdHlfaGVscGVyX3QyKQotICAgICAgICApKTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2VtcHR5X2ltcGwKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgcmVtb3ZlX2N2PFQ+Ojp0eXBlIGN2dDsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3JlZmVyZW5jZTxUPjo6dHlwZSByX3R5cGU7Ci0KLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCgKLSAgICAgICBib29sLCB2YWx1ZSA9ICgKLSAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwKLSAgICAgICAgICAgICAgOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9oZWxwZXI8Ci0gICAgICAgICAgICAgICAgICBjdnQKLSAgICAgICAgICAgICAgICAsIDo6bmRuYm9vc3Q6OmlzX2NsYXNzPFQ+Ojp2YWx1ZQotICAgICAgICAgICAgICAgICwgOjpuZG5ib29zdDo6aXNfY29udmVydGlibGU8IHJfdHlwZSxpbnQ+Ojp2YWx1ZQotICAgICAgICAgICAgICA+Ojp2YWx1ZQotICAgICAgICAgICAgICAsIE5ETkJPT1NUX0lOVEVSTkFMX0lTX0VNUFRZKGN2dCkKLSAgICAgICAgICAgPjo6dmFsdWUpKTsKLX07Ci0KLSNlbmRpZiAvLyBfX0JPUkxBTkRDX18KLQotI2Vsc2UgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQzZfTUVNQkVSX1RFTVBMQVRFUwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBlbXB0eV9oZWxwZXJfdDEgOiBwdWJsaWMgVAotewotICAgZW1wdHlfaGVscGVyX3QxKCk7Ci0gICBpbnQgaVsyNTZdOwotfTsKLQotc3RydWN0IGVtcHR5X2hlbHBlcl90MiB7IGludCBpWzI1Nl07IH07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGVtcHR5X2hlbHBlcl9iYXNlCi17Ci0gICBlbnVtIHsgdmFsdWUgPSAoc2l6ZW9mKGVtcHR5X2hlbHBlcl90MTxUPikgPT0gc2l6ZW9mKGVtcHR5X2hlbHBlcl90MikpIH07Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBlbXB0eV9oZWxwZXJfbm9uYmFzZQotewotICAgZW51bSB7IHZhbHVlID0gZmFsc2UgfTsKLX07Ci0KLXRlbXBsYXRlIDxib29sIGJhc2U+Ci1zdHJ1Y3QgZW1wdHlfaGVscGVyX2Nob29zZXIKLXsKLSAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgcmVzdWx0XwotICAgewotICAgICAgdHlwZWRlZiBlbXB0eV9oZWxwZXJfbm9uYmFzZTxUPiB0eXBlOwotICAgfTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgZW1wdHlfaGVscGVyX2Nob29zZXI8dHJ1ZT4KLXsKLSAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgcmVzdWx0XwotICAgewotICAgICAgdHlwZWRlZiBlbXB0eV9oZWxwZXJfYmFzZTxUPiB0eXBlOwotICAgfTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2VtcHR5X2ltcGwKLXsKLSAgIHR5cGVkZWYgOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9oZWxwZXJfY2hvb3NlcjwKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3JlZmVyZW5jZTxUPjo6dmFsdWUgPjo6dmFsdWUsCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfY29udmVydGlibGU8VCxkb3VibGU+Ojp2YWx1ZSA+Ojp2YWx1ZSwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19wb2ludGVyPFQ+Ojp2YWx1ZSA+Ojp2YWx1ZSwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19tZW1iZXJfcG9pbnRlcjxUPjo6dmFsdWUgPjo6dmFsdWUsCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfYXJyYXk8VD46OnZhbHVlID46OnZhbHVlLAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8VD46OnZhbHVlID46OnZhbHVlLAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8Ci0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19jb252ZXJ0aWJsZTxULHZvaWQgY29uc3Qgdm9sYXRpbGUqPjo6dmFsdWUKLSAgICAgICAgICAgID46OnZhbHVlCi0gICAgICA+Ojp2YWx1ZSA+IGNob29zZXI7Ci0KLSAgIHR5cGVkZWYgdHlwZW5hbWUgY2hvb3Nlcjo6dGVtcGxhdGUgcmVzdWx0XzxUPiByZXN1bHQ7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHJlc3VsdDo6dHlwZSBlaF90eXBlOwotCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8ZWhfdHlwZTo6dmFsdWUsIE5ETkJPT1NUX0lOVEVSTkFMX0lTX0VNUFRZKFQpPjo6dmFsdWUpKTsKLX07Ci0KLSNlbHNlCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgaXNfZW1wdHlfaW1wbAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IE5ETkJPT1NUX0lOVEVSTkFMX0lTX0VNUFRZKFQpKTsKLX07Ci0KLSNlbmRpZiAgLy8gTkROQk9PU1RfTVNWQzZfTUVNQkVSX1RFTVBMQVRFUwotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotLy8gdGhlc2UgaGVscCB3aGVuIHRoZSBjb21waWxlciBoYXMgbm8gcGFydGlhbCBzcGVjaWFsaXphdGlvbiBzdXBwb3J0OgotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19lbXB0eSx2b2lkLGZhbHNlKQotI2lmbmRlZiBORE5CT09TVF9OT19DVl9WT0lEX1NQRUNJQUxJWkFUSU9OUwotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19lbXB0eSx2b2lkIGNvbnN0LGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19lbXB0eSx2b2lkIHZvbGF0aWxlLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19lbXB0eSx2b2lkIGNvbnN0IHZvbGF0aWxlLGZhbHNlKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX2VtcHR5LFQsOjpuZG5ib29zdDo6ZGV0YWlsOjppc19lbXB0eV9pbXBsPFQ+Ojp2YWx1ZSkKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX0lOVEVSTkFMX0lTX0VNUFRZCi0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19FTVBUWV9IUFBfSU5DTFVERUQKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19lbnVtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZW51bS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxMDZjMDkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19lbnVtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4OSArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IERhdmUgQWJyYWhhbXMsIFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZAotLy8gIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4gIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX0VOVU1fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX0VOVU1fSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pbnRyaW5zaWNzLmhwcD4KLSNpZm5kZWYgTkROQk9PU1RfSVNfRU5VTQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9yZWZlcmVuY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FyaXRobWV0aWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3JlZmVyZW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29udmVydGlibGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FycmF5LmhwcD4KLSNpZmRlZiBfX0dOVUNfXwotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Z1bmN0aW9uLmhwcD4KLSNlbmRpZgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbmZpZy5ocHA+Ci0jaWYgZGVmaW5lZChORE5CT09TVF9UVF9IQVNfQ09ORk9STUlOR19JU19DTEFTU19JTVBMRU1FTlRBVElPTikgCi0jICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jbGFzcy5ocHA+Ci0jICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc191bmlvbi5ocHA+Ci0jZW5kaWYKLSNlbmRpZgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0jaWZuZGVmIE5ETkJPT1NUX0lTX0VOVU0KLSNpZiAhKGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiAoX19CT1JMQU5EQ19fIDw9IDB4NTUxKSkKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1RUX0hBU19DT05GT1JNSU5HX0lTX0NMQVNTX0lNUExFTUVOVEFUSU9OKSAKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfY2xhc3Nfb3JfdW5pb24KLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwKLSAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfY2xhc3M8VD46OnZhbHVlCi0gICAgICAgICAsIDo6bmRuYm9vc3Q6OmlzX3VuaW9uPFQ+Ojp2YWx1ZQotICAgICAgPjo6dmFsdWUpKTsKLX07Ci0KLSNlbHNlCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2NsYXNzX29yX3VuaW9uCi17Ci0jIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKSB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTgxKSkvLyB3ZSBzaW1wbHkgY2FuJ3QgZGV0ZWN0IGl0IHRoaXMgd2F5LgotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLSMgZWxzZQotICAgIHRlbXBsYXRlIDxjbGFzcyBVPiBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2NsYXNzX29yX3VuaW9uX3Rlc3Rlcih2b2lkKFU6OiopKHZvaWQpKTsKLQotIyAgaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA9PSAxMzAwKSAgICAgICAgICAgICAgICAgXAotICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgPD0gMHgzMDAwKSAvLyBubyBTRklOQUUKLSAgICBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Om5vX3R5cGUgaXNfY2xhc3Nfb3JfdW5pb25fdGVzdGVyKC4uLik7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKAotICAgICAgICBib29sLCB2YWx1ZSA9IHNpemVvZihpc19jbGFzc19vcl91bmlvbl90ZXN0ZXIoMCkpID09IHNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUpKTsKLSMgIGVsc2UKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVT4KLSAgICBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Om5vX3R5cGUgaXNfY2xhc3Nfb3JfdW5pb25fdGVzdGVyKC4uLik7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKAotICAgICAgICBib29sLCB2YWx1ZSA9IHNpemVvZihpc19jbGFzc19vcl91bmlvbl90ZXN0ZXI8VD4oMCkpID09IHNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUpKTsKLSMgIGVuZGlmCi0jIGVuZGlmCi19OwotI2VuZGlmCi0KLXN0cnVjdCBpbnRfY29udmVydGlibGUKLXsKLSAgICBpbnRfY29udmVydGlibGUoaW50KTsKLX07Ci0KLS8vIERvbid0IGV2YWx1YXRlIGNvbnZlcnRpYmlsaXR5IHRvIGludF9jb252ZXJ0aWJsZSB1bmxlc3MgdGhlIHR5cGUKLS8vIGlzIG5vbi1hcml0aG1ldGljLiBUaGlzIHN1cHByZXNzZXMgd2FybmluZ3Mgd2l0aCBHQ0MuCi10ZW1wbGF0ZSA8Ym9vbCBpc190eXBlbmFtZV9hcml0aG1ldGljX29yX3JlZmVyZW5jZSA9IHRydWU+Ci1zdHJ1Y3QgaXNfZW51bV9oZWxwZXIKLXsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IHR5cGUKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBpc19lbnVtX2hlbHBlcjxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IHR5cGUKLSAgICAgICA6IHB1YmxpYyA6Om5kbmJvb3N0Ojppc19jb252ZXJ0aWJsZTx0eXBlbmFtZSBuZG5ib29zdDo6YWRkX3JlZmVyZW5jZTxUPjo6dHlwZSw6Om5kbmJvb3N0OjpkZXRhaWw6OmludF9jb252ZXJ0aWJsZT4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgaXNfZW51bV9pbXBsCi17Ci0gICAvL3R5cGVkZWYgOjpuZG5ib29zdDo6YWRkX3JlZmVyZW5jZTxUPiBhcl90OwotICAgLy90eXBlZGVmIHR5cGVuYW1lIGFyX3Q6OnR5cGUgcl90eXBlOwotCi0jaWYgZGVmaW5lZChfX0dOVUNfXykKLQotI2lmZGVmIE5ETkJPT1NUX1RUX0hBU19DT05GT1JNSU5HX0lTX0NMQVNTX0lNUExFTUVOVEFUSU9OCi0gICAgCi0gICAvLyBXZSBNVVNUIGNoZWNrIGZvciBpc19jbGFzc19vcl91bmlvbiBvbiBjb25mb3JtaW5nIGNvbXBpbGVycyBpbgotICAgLy8gb3JkZXIgdG8gY29ycmVjdGx5IGRlZHVjZSB0aGF0IG5vbmNvcHlhYmxlIHR5cGVzIGFyZSBub3QgZW51bXMKLSAgIC8vIChkd2EgMjAwMi8wNC8xNSkuLi4KLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBzZWxlY3RvciA9Ci0gICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwKLSAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfYXJpdGhtZXRpYzxUPjo6dmFsdWUKLSAgICAgICAgICwgOjpuZG5ib29zdDo6aXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZQotICAgICAgICAgLCA6Om5kbmJvb3N0Ojppc19mdW5jdGlvbjxUPjo6dmFsdWUKLSAgICAgICAgICwgaXNfY2xhc3Nfb3JfdW5pb248VD46OnZhbHVlCi0gICAgICAgICAsIGlzX2FycmF5PFQ+Ojp2YWx1ZQotICAgICAgPjo6dmFsdWUpKTsKLSNlbHNlCi0gICAvLyAuLi5ob3dldmVyLCBub3QgY2hlY2tpbmcgaXNfY2xhc3Nfb3JfdW5pb24gb24gbm9uLWNvbmZvcm1pbmcKLSAgIC8vIGNvbXBpbGVycyBwcmV2ZW50cyBhIGRlcGVuZGVuY3kgcmVjdXJzaW9uLgotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHNlbGVjdG9yID0KLSAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZQotICAgICAgICAgLCA6Om5kbmJvb3N0Ojppc19yZWZlcmVuY2U8VD46OnZhbHVlCi0gICAgICAgICAsIDo6bmRuYm9vc3Q6OmlzX2Z1bmN0aW9uPFQ+Ojp2YWx1ZQotICAgICAgICAgLCBpc19hcnJheTxUPjo6dmFsdWUKLSAgICAgID46OnZhbHVlKSk7Ci0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSEFTX0NPTkZPUk1JTkdfSVNfQ0xBU1NfSU1QTEVNRU5UQVRJT04KLQotI2Vsc2UgLy8gIWRlZmluZWQoX19HTlVDX18pOgotICAgIAotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHNlbGVjdG9yID0KLSAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZQotICAgICAgICAgLCA6Om5kbmJvb3N0Ojppc19yZWZlcmVuY2U8VD46OnZhbHVlCi0gICAgICAgICAsIGlzX2NsYXNzX29yX3VuaW9uPFQ+Ojp2YWx1ZQotICAgICAgICAgLCBpc19hcnJheTxUPjo6dmFsdWUKLSAgICAgID46OnZhbHVlKSk7Ci0gICAgCi0jZW5kaWYKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4NjAwKQotICAgIHR5cGVkZWYgOjpuZG5ib29zdDo6ZGV0YWlsOjppc19lbnVtX2hlbHBlcjwKLSAgICAgICAgICA6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX2VudW1faW1wbDxUPjo6c2VsZWN0b3IKLSAgICAgICAgPiBzZV90OwotI2Vsc2UKLSAgICB0eXBlZGVmIDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfZW51bV9oZWxwZXI8c2VsZWN0b3I+IHNlX3Q7Ci0jZW5kaWYKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2VfdDo6dGVtcGxhdGUgdHlwZTxUPiBoZWxwZXI7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gaGVscGVyOjp2YWx1ZSk7Ci19OwotCi0vLyB0aGVzZSBoZWxwIG9uIGNvbXBpbGVycyB3aXRoIG5vIHBhcnRpYWwgc3BlY2lhbGl6YXRpb24gc3VwcG9ydDoKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfZW51bSx2b2lkLGZhbHNlKQotI2lmbmRlZiBORE5CT09TVF9OT19DVl9WT0lEX1NQRUNJQUxJWkFUSU9OUwotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19lbnVtLHZvaWQgY29uc3QsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX2VudW0sdm9pZCB2b2xhdGlsZSxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfZW51bSx2b2lkIGNvbnN0IHZvbGF0aWxlLGZhbHNlKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX2VudW0sVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX2VudW1faW1wbDxUPjo6dmFsdWUpCi0KLSNlbHNlIC8vIF9fQk9STEFORENfXwotLy8KLS8vIGJ1Z2d5IGlzX2NvbnZlcnRpYmxlIHByZXZlbnRzIHdvcmtpbmcKLS8vIGltcGxlbWVudGF0aW9uIG9mIGlzX2VudW06Ci1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX2VudW0sVCxmYWxzZSkKLQotI2VuZGlmCi0KLSNlbHNlIC8vIE5ETkJPT1NUX0lTX0VOVU0KLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19lbnVtLFQsTkROQk9PU1RfSVNfRU5VTShUKSkKLQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19FTlVNX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19mbG9hdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Zsb2F0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzExYjU4NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Zsb2F0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRV9UUkFJVFNfSVNfRkxPQVRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVfVFJBSVRTX0lTX0ZMT0FUX0hQUF9JTkNMVURFRAotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0vLyogaXMgYSB0eXBlIFQgYSBmbG9hdGluZy1wb2ludCB0eXBlIGRlc2NyaWJlZCBpbiB0aGUgc3RhbmRhcmQgKDMuOS4xcDgpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX2Zsb2F0LFQsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMShpc19mbG9hdCxmbG9hdCx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfZmxvYXQsZG91YmxlLHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMShpc19mbG9hdCxsb25nIGRvdWJsZSx0cnVlKQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFlQRV9UUkFJVFNfSVNfRkxPQVRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Zsb2F0aW5nX3BvaW50LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZmxvYXRpbmdfcG9pbnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMzM4MjY2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZmxvYXRpbmdfcG9pbnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLTIwMDUuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVfVFJBSVRTX0lTX0ZMT0FUSU5HX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UWVBFX1RSQUlUU19JU19GTE9BVElOR19IUFBfSU5DTFVERUQKLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotLy8qIGlzIGEgdHlwZSBUIGEgZmxvYXRpbmctcG9pbnQgdHlwZSBkZXNjcmliZWQgaW4gdGhlIHN0YW5kYXJkICgzLjkuMXA4KQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19mbG9hdGluZ19wb2ludCxULGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfZmxvYXRpbmdfcG9pbnQsZmxvYXQsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxKGlzX2Zsb2F0aW5nX3BvaW50LGRvdWJsZSx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfZmxvYXRpbmdfcG9pbnQsbG9uZyBkb3VibGUsdHJ1ZSkKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RZUEVfVFJBSVRTX0lTX0ZMT0FUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19mdW5jdGlvbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Z1bmN0aW9uLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2NiNDJiNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Z1bmN0aW9uLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMSArMCwwIEBACi0KLS8vICBDb3B5cmlnaHQgMjAwMCBKb2huIE1hZGRvY2sgKGpvaG5Aam9obm1hZGRvY2suY28udWspCi0vLyAgQ29weXJpZ2h0IDIwMDIgQWxla3NleSBHdXJ0b3ZveSAoYWd1cnRvdm95QG1ldGEtY29tbS5jb20pCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JU19GVU5DVElPTl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfRlVOQ1RJT05fSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9mYWxzZV9yZXN1bHQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSAmJiAhZGVmaW5lZChORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUykKLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaXNfZnVuY3Rpb25fcHRyX2hlbHBlci5ocHA+Ci0jZWxzZQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pc19mdW5jdGlvbl9wdHJfdGVzdGVyLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwveWVzX25vX3R5cGUuaHBwPgotI2VuZGlmCi0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLS8vIGlzIGEgdHlwZSBhIGZ1bmN0aW9uPwotLy8gUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGltcGxlbWVudGF0aW9uIGlzIHVubmVjZXNzYXJpbHkgY29tcGxleDoKLS8vIHdlIGNvdWxkIGp1c3QgdXNlICFpc19jb252ZXJ0aWJsZTxUKiwgY29uc3Qgdm9sYXRpbGUgdm9pZCo+Ojp2YWx1ZSwKLS8vIGV4Y2VwdCB0aGF0IHNvbWUgY29tcGlsZXJzIGVycm9uZW91c2x5IGFsbG93IGNvbnZlcnNpb25zIGZyb20KLS8vIGZ1bmN0aW9uIHBvaW50ZXJzIHRvIHZvaWQqLgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0jaWYgIWRlZmluZWQoIF9fQ09ERUdFQVJDX18gKQotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pICYmICFkZWZpbmVkKE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTKQotdGVtcGxhdGU8Ym9vbCBpc19yZWYgPSB0cnVlPgotc3RydWN0IGlzX2Z1bmN0aW9uX2Nob29zZXIKLSAgICA6IHB1YmxpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6ZmFsc2VfcmVzdWx0Ci17Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGlzX2Z1bmN0aW9uX2Nob29zZXI8ZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IHB1YmxpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxUKj4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2Z1bmN0aW9uX2ltcGwKLSAgICA6IHB1YmxpYyBpc19mdW5jdGlvbl9jaG9vc2VyPCA6Om5kbmJvb3N0Ojppc19yZWZlcmVuY2U8VD46OnZhbHVlID4KLSAgICAgICAgOjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgcmVzdWx0XzxUPgotewotfTsKLQotI2Vsc2UKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25faW1wbAotewotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQ19GVUxMX1ZFUiwgPj0gMTQwMDUwMDAwKQotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo2MzM0KQotI2VuZGlmCi0gICAgc3RhdGljIFQqIHQ7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKAotICAgICAgICBib29sLCB2YWx1ZSA9IHNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aXNfZnVuY3Rpb25fcHRyX3Rlc3Rlcih0KSkKLSAgICAgICAgPT0gc2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSkKLSAgICAgICAgKTsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkNfRlVMTF9WRVIsID49IDE0MDA1MDAwMCkKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLX07Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25faW1wbDxUJj4gOiBwdWJsaWMgZmFsc2VfdHlwZQote307Ci0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19mdW5jdGlvbl9pbXBsPFQmJj4gOiBwdWJsaWMgZmFsc2VfdHlwZQote307Ci0jZW5kaWYKLSNlbmRpZgotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLSNlbmRpZiAvLyAhZGVmaW5lZCggX19DT0RFR0VBUkNfXyApCi0KLSNpZiBkZWZpbmVkKCBfX0NPREVHRUFSQ19fICkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfZnVuY3Rpb24sVCxfX2lzX2Z1bmN0aW9uKFQpKQotI2Vsc2UKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfZnVuY3Rpb24sVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX2Z1bmN0aW9uX2ltcGw8VD46OnZhbHVlKQotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsaXNfZnVuY3Rpb24sVCYmLGZhbHNlKQotI2VuZGlmCi0jZW5kaWYKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19GVU5DVElPTl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZnVuZGFtZW50YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19mdW5kYW1lbnRhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4Yjk0ZDkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19mdW5kYW1lbnRhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX0ZVTkRBTUVOVEFMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JU19GVU5EQU1FTlRBTF9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FyaXRobWV0aWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvaWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfb3IuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IAotc3RydWN0IGlzX2Z1bmRhbWVudGFsX2ltcGwKLSAgICA6IHB1YmxpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPCAKLSAgICAgICAgICA6Om5kbmJvb3N0Ojppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZQotICAgICAgICAsIDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8VD46OnZhbHVlCi0gICAgICAgID4KLXsgCi19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotLy8qIGlzIGEgdHlwZSBUIGEgZnVuZGFtZW50YWwgdHlwZSBkZXNjcmliZWQgaW4gdGhlIHN0YW5kYXJkICgzLjkuMSkKLSNpZiBkZWZpbmVkKCBfX0NPREVHRUFSQ19fICkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfZnVuZGFtZW50YWwsVCxfX2lzX2Z1bmRhbWVudGFsKFQpKQotI2Vsc2UKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfZnVuZGFtZW50YWwsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX2Z1bmRhbWVudGFsX2ltcGw8VD46OnZhbHVlKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19GVU5EQU1FTlRBTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfaW50ZWdyYWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19pbnRlZ3JhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlNDQyNTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19pbnRlZ3JhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX0lOVEVHUkFMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JU19JTlRFR1JBTF9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLS8vKiBpcyBhIHR5cGUgVCBhbiBbY3YtcXVhbGlmaWVkLV0gaW50ZWdyYWwgdHlwZSBkZXNjcmliZWQgaW4gdGhlIHN0YW5kYXJkICgzLjkuMXAzKQotLy8gYXMgYW4gZXh0ZW5zaW9uIHdlIGluY2x1ZGUgbG9uZyBsb25nLCBhcyB0aGlzIGlzIGxpa2VseSB0byBiZSBhZGRlZCB0byB0aGUKLS8vIHN0YW5kYXJkIGF0IGEgbGF0ZXIgZGF0ZQotI2lmIGRlZmluZWQoIF9fQ09ERUdFQVJDX18gKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19pbnRlZ3JhbCxULF9faXNfaW50ZWdyYWwoVCkpCi0jZWxzZQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19pbnRlZ3JhbCxULGZhbHNlKQotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMShpc19pbnRlZ3JhbCx1bnNpZ25lZCBjaGFyLHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMShpc19pbnRlZ3JhbCx1bnNpZ25lZCBzaG9ydCx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfaW50ZWdyYWwsdW5zaWduZWQgaW50LHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMShpc19pbnRlZ3JhbCx1bnNpZ25lZCBsb25nLHRydWUpCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxKGlzX2ludGVncmFsLHNpZ25lZCBjaGFyLHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMShpc19pbnRlZ3JhbCxzaWduZWQgc2hvcnQsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxKGlzX2ludGVncmFsLHNpZ25lZCBpbnQsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxKGlzX2ludGVncmFsLHNpZ25lZCBsb25nLHRydWUpCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxKGlzX2ludGVncmFsLGJvb2wsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxKGlzX2ludGVncmFsLGNoYXIsdHJ1ZSkKLQotI2lmbmRlZiBORE5CT09TVF9OT19JTlRSSU5TSUNfV0NIQVJfVAotLy8gSWYgdGhlIGZvbGxvd2luZyBsaW5lIGZhaWxzIHRvIGNvbXBpbGUgYW5kIHlvdSdyZSB1c2luZyB0aGUgSW50ZWwKLS8vIGNvbXBpbGVyLCBzZWUgaHR0cDovL2xpc3RzLmJvb3N0Lm9yZy9NYWlsQXJjaGl2ZXMvYm9vc3QtdXNlcnMvbXNnMDY1NjcucGhwLAotLy8gYW5kIGRlZmluZSBORE5CT09TVF9OT19JTlRSSU5TSUNfV0NIQVJfVCBvbiB0aGUgY29tbWFuZCBsaW5lLgotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfaW50ZWdyYWwsd2NoYXJfdCx0cnVlKQotI2VuZGlmCi0KLS8vIFNhbWUgc2V0IG9mIGludGVncmFsIHR5cGVzIGFzIGluIG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ludGVncmFsX3Byb21vdGlvbi5ocHAuCi0vLyBQbGVhc2UsIGtlZXAgaW4gc3luYy4gLS0gQWxleGFuZGVyIE5hc29ub3YKLSNpZiAoZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiAoTkROQk9PU1RfTVNWQyA8IDEzMDApKSBcCi0gICAgfHwgKGRlZmluZWQoTkROQk9PU1RfSU5URUxfQ1hYX1ZFUlNJT04pICYmIGRlZmluZWQoX01TQ19WRVIpICYmIChORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTiA8PSA2MDApKSBcCi0gICAgfHwgKGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiAoX19CT1JMQU5EQ19fID09IDB4NjAwKSAmJiAoX01TQ19WRVIgPCAxMzAwKSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxKGlzX2ludGVncmFsLHVuc2lnbmVkIF9faW50OCx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfaW50ZWdyYWwsX19pbnQ4LHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMShpc19pbnRlZ3JhbCx1bnNpZ25lZCBfX2ludDE2LHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMShpc19pbnRlZ3JhbCxfX2ludDE2LHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMShpc19pbnRlZ3JhbCx1bnNpZ25lZCBfX2ludDMyLHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMShpc19pbnRlZ3JhbCxfX2ludDMyLHRydWUpCi0jaWZkZWYgX19CT1JMQU5EQ19fCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMShpc19pbnRlZ3JhbCx1bnNpZ25lZCBfX2ludDY0LHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMShpc19pbnRlZ3JhbCxfX2ludDY0LHRydWUpCi0jZW5kaWYKLSNlbmRpZgotCi0jIGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxKGlzX2ludGVncmFsLCA6Om5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxKGlzX2ludGVncmFsLCA6Om5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSx0cnVlKQotI2VsaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTVNfSU5UNjQpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMShpc19pbnRlZ3JhbCx1bnNpZ25lZCBfX2ludDY0LHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMShpc19pbnRlZ3JhbCxfX2ludDY0LHRydWUpCi0jZW5kaWYKLSAgICAgICAgCi0jaWZkZWYgTkROQk9PU1RfSEFTX0lOVDEyOAotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfaW50ZWdyYWwsbmRuYm9vc3Q6OmludDEyOF90eXBlLHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMShpc19pbnRlZ3JhbCxuZG5ib29zdDo6dWludDEyOF90eXBlLHRydWUpCi0jZW5kaWYKLQotI2VuZGlmICAvLyBub24tQ29kZUdlYXIgaW1wbGVtZW50YXRpb24KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX0lOVEVHUkFMX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19sdmFsdWVfcmVmZXJlbmNlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbHZhbHVlX3JlZmVyZW5jZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3OGUyYzYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19sdmFsdWVfcmVmZXJlbmNlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExOCArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IERhdmUgQWJyYWhhbXMsIFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIAotLy8gICAgICBIb3dhcmQgSGlubmFudCBhbmQgSm9obiBNYWRkb2NrIDIwMDAuIAotLy8gIChDKSBDb3B5cmlnaHQgTWF0IE1hcmN1cywgSmVzc2UgSm9uZXMgYW5kIEFkb2JlIFN5c3RlbXMgSW5jIDIwMDEKLQotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotLy8gICAgRml4ZWQgaXNfcG9pbnRlciwgaXNfbHZhbHVlX3JlZmVyZW5jZSwgaXNfY29uc3QsIGlzX3ZvbGF0aWxlLCBpc19zYW1lLCAKLS8vICAgIGlzX21lbWJlcl9wb2ludGVyIGJhc2VkIG9uIHRoZSBTaW11bGF0ZWQgUGFydGlhbCBTcGVjaWFsaXphdGlvbiB3b3JrIAotLy8gICAgb2YgTWF0IE1hcmN1cyBhbmQgSmVzc2UgSm9uZXMuIFNlZSAgaHR0cDovL29wZW5zb3VyY2UuYWRvYmUuY29tIG9yIAotLy8gICAgaHR0cDovL2dyb3Vwcy55YWhvby5jb20vZ3JvdXAvYm9vc3QvbWVzc2FnZS81NDQxIAotLy8gICAgU29tZSB3b3JrYXJvdW5kcyBpbiBoZXJlIHVzZSBpZGVhcyBzdWdnZXN0ZWQgZnJvbSAiR2VuZXJpYzxQcm9ncmFtbWluZz46IAotLy8gICAgTWFwcGluZ3MgYmV0d2VlbiBUeXBlcyBhbmQgVmFsdWVzIiAKLS8vICAgIGJ5IEFuZHJlaSBBbGV4YW5kcmVzY3UgKHNlZSBodHRwOi8vd3d3LmN1ai5jb20vZXhwZXJ0cy8xODEwL2FsZXhhbmRyLmh0bWwpLgotCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfTFZBTFVFX1JFRkVSRU5DRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfTFZBTFVFX1JFRkVSRU5DRV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbmZpZy5ocHA+Ci0KLSNpZmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3llc19ub190eXBlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvd3JhcC5ocHA+Ci0jZW5kaWYKLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotI2lmIGRlZmluZWQoIF9fQ09ERUdFQVJDX18gKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19sdmFsdWVfcmVmZXJlbmNlLFQsX19pc19yZWZlcmVuY2UoVCkpCi0jZWxpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX2x2YWx1ZV9yZWZlcmVuY2UsVCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULGlzX2x2YWx1ZV9yZWZlcmVuY2UsVCYsdHJ1ZSkKLQotI2lmICBkZWZpbmVkKE5ETkJPT1NUX0lMTEVHQUxfQ1ZfUkVGRVJFTkNFUykKLS8vIHRoZXNlIGFyZSBpbGxlZ2FsIHNwZWNpYWxpc2F0aW9uczsgY3YtcXVhbGlmaWVzIGFwcGxpZWQgdG8KLS8vIHJlZmVyZW5jZXMgaGF2ZSBubyBlZmZlY3QgYWNjb3JkaW5nIHRvIFs4LjMuMnAxXSwKLS8vIEMrKyBCdWlsZGVyIHJlcXVpcmVzIHRoZW0gdGhvdWdoIGFzIGl0IHRyZWF0cyBjdi1xdWFsaWZpZWQKLS8vIHJlZmVyZW5jZXMgYXMgZGlzdGluY3QgdHlwZXMuLi4KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULGlzX2x2YWx1ZV9yZWZlcmVuY2UsVCYgY29uc3QsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULGlzX2x2YWx1ZV9yZWZlcmVuY2UsVCYgdm9sYXRpbGUsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULGlzX2x2YWx1ZV9yZWZlcmVuY2UsVCYgY29uc3Qgdm9sYXRpbGUsdHJ1ZSkKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fIDwgMykKLS8vIHRoZXNlIGFsbG93IHVzIHRvIHdvcmsgYXJvdW5kIGlsbGVnYWxseSBjdi1xdWFsaWZpZWQgcmVmZXJlbmNlCi0vLyB0eXBlcy4KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULGlzX2x2YWx1ZV9yZWZlcmVuY2UsVCBjb25zdCAsOjpuZG5ib29zdDo6aXNfbHZhbHVlX3JlZmVyZW5jZTxUPjo6dmFsdWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxpc19sdmFsdWVfcmVmZXJlbmNlLFQgdm9sYXRpbGUgLDo6bmRuYm9vc3Q6OmlzX2x2YWx1ZV9yZWZlcmVuY2U8VD46OnZhbHVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsaXNfbHZhbHVlX3JlZmVyZW5jZSxUIGNvbnN0IHZvbGF0aWxlICw6Om5kbmJvb3N0Ojppc19sdmFsdWVfcmVmZXJlbmNlPFQ+Ojp2YWx1ZSkKLS8vIEhvd2V2ZXIsIHRoZSBhYm92ZSBzcGVjaWFsaXphdGlvbnMgY29uZnVzZSBnY2MgMi45NiB1bmxlc3Mgd2UgYWxzbwotLy8gc3VwcGx5IHRoZXNlIHNwZWNpYWxpemF0aW9ucyBmb3IgYXJyYXkgdHlwZXMKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMih0eXBlbmFtZSBULHVuc2lnbmVkIGxvbmcgTixpc19sdmFsdWVfcmVmZXJlbmNlLFRbTl0sZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCx1bnNpZ25lZCBsb25nIE4saXNfbHZhbHVlX3JlZmVyZW5jZSxjb25zdCBUW05dLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHR5cGVuYW1lIFQsdW5zaWduZWQgbG9uZyBOLGlzX2x2YWx1ZV9yZWZlcmVuY2Usdm9sYXRpbGUgVFtOXSxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMih0eXBlbmFtZSBULHVuc2lnbmVkIGxvbmcgTixpc19sdmFsdWVfcmVmZXJlbmNlLGNvbnN0IHZvbGF0aWxlIFRbTl0sZmFsc2UpCi0jZW5kaWYKLQotI2Vsc2UKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgICBwcmFnbWEgd2FybmluZyhwdXNoKQotIyAgIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxODEgNDA5NykKLSNlbmRpZgotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdXNpbmcgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlOwotdXNpbmcgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Om5vX3R5cGU7Ci11c2luZyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6d3JhcDsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+IFQmKCogaXNfbHZhbHVlX3JlZmVyZW5jZV9oZWxwZXIxKHdyYXA8VD4pICkod3JhcDxUPik7Ci1jaGFyIGlzX2x2YWx1ZV9yZWZlcmVuY2VfaGVscGVyMSguLi4pOwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gbm9fdHlwZSBpc19sdmFsdWVfcmVmZXJlbmNlX2hlbHBlcjIoVCYoKikod3JhcDxUPikpOwoteWVzX3R5cGUgaXNfbHZhbHVlX3JlZmVyZW5jZV9oZWxwZXIyKC4uLik7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2x2YWx1ZV9yZWZlcmVuY2VfaW1wbAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCgKLSAgICAgICAgYm9vbCwgdmFsdWUgPSBzaXplb2YoCi0gICAgICAgICAgICA6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX2x2YWx1ZV9yZWZlcmVuY2VfaGVscGVyMigKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX2x2YWx1ZV9yZWZlcmVuY2VfaGVscGVyMSg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6d3JhcDxUPigpKSkpID09IDEKLSAgICAgICAgKTsKLX07Ci0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfbHZhbHVlX3JlZmVyZW5jZSx2b2lkLGZhbHNlKQotI2lmbmRlZiBORE5CT09TVF9OT19DVl9WT0lEX1NQRUNJQUxJWkFUSU9OUwotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19sdmFsdWVfcmVmZXJlbmNlLHZvaWQgY29uc3QsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX2x2YWx1ZV9yZWZlcmVuY2Usdm9pZCB2b2xhdGlsZSxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfbHZhbHVlX3JlZmVyZW5jZSx2b2lkIGNvbnN0IHZvbGF0aWxlLGZhbHNlKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX2x2YWx1ZV9yZWZlcmVuY2UsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX2x2YWx1ZV9yZWZlcmVuY2VfaW1wbDxUPjo6dmFsdWUpCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jICAgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19SRUZFUkVOQ0VfSFBQX0lOQ0xVREVECi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4ZWYyZWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzYgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBEYXZlIEFicmFoYW1zLCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQKLS8vICBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuICAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JU19NRU1CRVJfRlVOQ1RJT05fUE9JTlRFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfTUVNQkVSX0ZVTkNUSU9OX1BPSU5URVJfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pIFwKLSAgICYmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPCAweDYwMCkgJiYgIWRlZmluZWQoTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MpCi0gICAvLwotICAgLy8gTm90ZTogd2UgdXNlIHRoZSAid29ya2Fyb3VuZCIgdmVyc2lvbiBmb3IgTVNWQyBiZWNhdXNlIGl0IHdvcmtzIGZvciAKLSAgIC8vIF9fc3RkY2FsbCBldGMgZnVuY3Rpb24gdHlwZXMsIHdoZXJlIGFzIHRoZSBwYXJ0aWFsIHNwZWNpYWxpc2F0aW9uCi0gICAvLyB2ZXJzaW9uIGRvZXMgbm90IGRvIHNvLgotICAgLy8KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGwuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHA+Ci0jZWxzZQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3JlZmVyZW5jZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC95ZXNfbm9fdHlwZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ZhbHNlX3Jlc3VsdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9vci5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2lzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIuaHBwPgotI2VuZGlmCi0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSNpZiBkZWZpbmVkKCBfX0NPREVHRUFSQ19fICkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXIsVCxfX2lzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyKCBUICkpCi0jZWxpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg2MDApICYmICFkZWZpbmVkKE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTKQotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKAotICAgICAgaXNfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXIKLSAgICAsIFQKLSAgICAsIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppc19tZW1fZnVuX3BvaW50ZXJfaW1wbDx0eXBlbmFtZSByZW1vdmVfY3Y8VD46OnR5cGU+Ojp2YWx1ZQotICAgICkKLQotI2Vsc2UKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSNpZm5kZWYgX19CT1JMQU5EQ19fCi0KLXRlbXBsYXRlIDxib29sPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9zZWxlY3QKLSAgICA6IHB1YmxpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6ZmFsc2VfcmVzdWx0Ci17Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9zZWxlY3Q8ZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCByZXN1bHRfCi0gICAgewotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQ19GVUxMX1ZFUiwgPj0gMTQwMDUwMDAwKQotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo2MzM0KQotI2VuZGlmCi0gICAgICAgIHN0YXRpYyBUKiBtYWtlX3Q7Ci0gICAgICAgIHR5cGVkZWYgcmVzdWx0XzxUPiBzZWxmX3R5cGU7Ci0KLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKAotICAgICAgICAgICAgYm9vbCwgdmFsdWUgPSAoCi0gICAgICAgICAgICAgICAgMSA9PSBzaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoc2VsZl90eXBlOjptYWtlX3QpKQotICAgICAgICAgICAgKSk7Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDX0ZVTExfVkVSLCA+PSAxNDAwNTAwMDApCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0gICAgfTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyX2ltcGwKLSAgICA6IHB1YmxpYyBpc19tZW1fZnVuX3BvaW50ZXJfc2VsZWN0PAotICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8Ci0gICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3JlZmVyZW5jZTxUPjo6dmFsdWUKLSAgICAgICAgICAgICwgOjpuZG5ib29zdDo6aXNfYXJyYXk8VD46OnZhbHVlCi0gICAgICAgICAgICA+Ojp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPFQ+Ci17Ci19OwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyX2ltcGw8VCY+IDogcHVibGljIGZhbHNlX3R5cGV7fTsKLSNlbmRpZgotCi0jZWxzZSAvLyBCb3JsYW5kIEMrKwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcl9pbXBsCi17Ci0gICBzdGF0aWMgVCogbV90OwotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKAotICAgICAgICAgICAgICBib29sLCB2YWx1ZSA9Ci0gICAgICAgICAgICAgICAoMSA9PSBzaXplb2YodHlwZV90cmFpdHM6OmlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIobV90KSkpICk7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcl9pbXBsPFQmPgotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotfTsKLQotI2VuZGlmCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXIsdm9pZCxmYWxzZSkKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXIsdm9pZCBjb25zdCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXIsdm9pZCB2b2xhdGlsZSxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXIsdm9pZCBjb25zdCB2b2xhdGlsZSxmYWxzZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcixULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXJfaW1wbDxUPjo6dmFsdWUpCi0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19NRU1CRVJfRlVOQ1RJT05fUE9JTlRFUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbWVtYmVyX29iamVjdF9wb2ludGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbWVtYmVyX29iamVjdF9wb2ludGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjk1NjdkZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX21lbWJlcl9vYmplY3RfcG9pbnRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDA1LiAgCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfTUVNQkVSX09CSkVDVF9QT0lOVEVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JU19NRU1CRVJfT0JKRUNUX1BPSU5URVJfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX21lbWJlcl9wb2ludGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9hbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfbm90LmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRldGFpbHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfbWVtYmVyX29iamVjdF9wb2ludGVyX2ltcGwKLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCgKLSAgICAgIGJvb2wsIHZhbHVlID0gKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfbWVtYmVyX3BvaW50ZXI8VD46OnZhbHVlLAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8Ci0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcjxUPjo6dmFsdWUKLSAgICAgICAgID46OnZhbHVlCi0gICAgICA+Ojp2YWx1ZSApKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX21lbWJlcl9vYmplY3RfcG9pbnRlcixULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfbWVtYmVyX29iamVjdF9wb2ludGVyX2ltcGw8VD46OnZhbHVlKQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfTUVNQkVSX0ZVTkNUSU9OX1BPSU5URVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX21lbWJlcl9wb2ludGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbWVtYmVyX3BvaW50ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YmZjYTZiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbWVtYmVyX3BvaW50ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE2ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgRGF2ZSBBYnJhaGFtcywgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgCi0vLyAgICAgIEhvd2FyZCBIaW5uYW50IGFuZCBKb2huIE1hZGRvY2sgMjAwMC4gCi0vLyAgKEMpIENvcHlyaWdodCBNYXQgTWFyY3VzLCBKZXNzZSBKb25lcyBhbmQgQWRvYmUgU3lzdGVtcyBJbmMgMjAwMQotCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0vLyAgICBGaXhlZCBpc19wb2ludGVyLCBpc19yZWZlcmVuY2UsIGlzX2NvbnN0LCBpc192b2xhdGlsZSwgaXNfc2FtZSwgCi0vLyAgICBpc19tZW1iZXJfcG9pbnRlciBiYXNlZCBvbiB0aGUgU2ltdWxhdGVkIFBhcnRpYWwgU3BlY2lhbGl6YXRpb24gd29yayAKLS8vICAgIG9mIE1hdCBNYXJjdXMgYW5kIEplc3NlIEpvbmVzLiBTZWUgIGh0dHA6Ly9vcGVuc291cmNlLmFkb2JlLmNvbSBvciAKLS8vICAgIGh0dHA6Ly9ncm91cHMueWFob28uY29tL2dyb3VwL2Jvb3N0L21lc3NhZ2UvNTQ0MSAKLS8vICAgIFNvbWUgd29ya2Fyb3VuZHMgaW4gaGVyZSB1c2UgaWRlYXMgc3VnZ2VzdGVkIGZyb20gIkdlbmVyaWM8UHJvZ3JhbW1pbmc+OiAKLS8vICAgIE1hcHBpbmdzIGJldHdlZW4gVHlwZXMgYW5kIFZhbHVlcyIgCi0vLyAgICBieSBBbmRyZWkgQWxleGFuZHJlc2N1IChzZWUgaHR0cDovL3d3dy5jdWouY29tL2V4cGVydHMvMTgxMC9hbGV4YW5kci5odG1sKS4KLQotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX01FTUJFUl9QT0lOVEVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JU19NRU1CRVJfUE9JTlRFUl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4NjAwKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyLmhwcD4KLSNlbHNlCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2lzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC95ZXNfbm9fdHlwZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ZhbHNlX3Jlc3VsdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9vci5ocHA+Ci0jZW5kaWYKLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotI2lmIGRlZmluZWQoIF9fQ09ERUdFQVJDX18gKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19tZW1iZXJfcG9pbnRlcixULF9faXNfbWVtYmVyX3BvaW50ZXIoVCkpCi0jZWxpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPCAweDYwMCkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfbWVtYmVyX3BvaW50ZXIsVCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMih0eXBlbmFtZSBULHR5cGVuYW1lIFUsaXNfbWVtYmVyX3BvaW50ZXIsVSBUOjoqLHRydWUpCi0KLSNlbGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX21lbWJlcl9wb2ludGVyLFQsOjpuZG5ib29zdDo6aXNfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXI8VD46OnZhbHVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHR5cGVuYW1lIFQsdHlwZW5hbWUgVSxpc19tZW1iZXJfcG9pbnRlcixVIFQ6OiosdHJ1ZSkKLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sPD0weDMwMDMpICYmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fSUJNQ1BQX18sIDw9NjAwKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHR5cGVuYW1lIFQsdHlwZW5hbWUgVSxpc19tZW1iZXJfcG9pbnRlcixVIFQ6Oipjb25zdCx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHR5cGVuYW1lIFQsdHlwZW5hbWUgVSxpc19tZW1iZXJfcG9pbnRlcixVIFQ6Oip2b2xhdGlsZSx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHR5cGVuYW1lIFQsdHlwZW5hbWUgVSxpc19tZW1iZXJfcG9pbnRlcixVIFQ6Oipjb25zdCB2b2xhdGlsZSx0cnVlKQotI2VuZGlmCi0KLSNlbHNlIC8vIG5vIHBhcnRpYWwgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUPgotOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIE5ETkJPT1NUX1RUX0RFQ0wgaXNfbWVtYmVyX3BvaW50ZXJfdGVzdGVyKFIgVDo6KmNvbnN0IHZvbGF0aWxlKik7Ci06Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6bm9fdHlwZSBORE5CT09TVF9UVF9ERUNMIGlzX21lbWJlcl9wb2ludGVyX3Rlc3RlciguLi4pOwotCi10ZW1wbGF0ZSA8Ym9vbD4KLXN0cnVjdCBpc19tZW1iZXJfcG9pbnRlcl9zZWxlY3QKLSAgICA6IHB1YmxpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6ZmFsc2VfcmVzdWx0Ci17Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGlzX21lbWJlcl9wb2ludGVyX3NlbGVjdDxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHN0YXRpYyBUKiBtYWtlX3QoKTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKAotICAgICAgICAgICAgYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8Ci0gICAgICAgICAgICAgICAgKDEgPT0gc2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKG1ha2VfdCgpKSkpLAotICAgICAgICAgICAgICAgICgxID09IHNpemVvZihpc19tZW1iZXJfcG9pbnRlcl90ZXN0ZXIobWFrZV90KCkpKSkKLSAgICAgICAgICAgID46OnZhbHVlKSApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19tZW1iZXJfcG9pbnRlcl9pbXBsCi0gICAgOiBwdWJsaWMgaXNfbWVtYmVyX3BvaW50ZXJfc2VsZWN0PAotICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8Ci0gICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3JlZmVyZW5jZTxUPjo6dmFsdWUKLSAgICAgICAgICAgICwgOjpuZG5ib29zdDo6aXNfYXJyYXk8VD46OnZhbHVlCi0gICAgICAgICAgICA+Ojp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPFQ+Ci17Ci19OwotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX21lbWJlcl9wb2ludGVyLHZvaWQsZmFsc2UpCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX21lbWJlcl9wb2ludGVyLHZvaWQgY29uc3QsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX21lbWJlcl9wb2ludGVyLHZvaWQgdm9sYXRpbGUsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX21lbWJlcl9wb2ludGVyLHZvaWQgY29uc3Qgdm9sYXRpbGUsZmFsc2UpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfbWVtYmVyX3BvaW50ZXIsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX21lbWJlcl9wb2ludGVyX2ltcGw8VD46OnZhbHVlKQotCi0jZW5kaWYgLy8gX19CT1JMQU5EQ19fCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19NRU1CRVJfUE9JTlRFUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbm90aHJvd19tb3ZlX2Fzc2lnbmFibGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19ub3Rocm93X21vdmVfYXNzaWduYWJsZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1ODY0YWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19ub3Rocm93X21vdmVfYXNzaWduYWJsZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgKEMpIENvcHlyaWdodCBFcmljIEZyaWVkbWFuIDIwMDItMjAwMy4KLS8vICAoQykgQ29weXJpZ2h0IEFudG9ueSBQb2x1a2hpbiAyMDEzLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JU19OT1RIUk9XX01PVkVfQVNTSUdOQUJMRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfTk9USFJPV19NT1ZFX0FTU0lHTkFCTEVfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX21vdmVfYXNzaWduLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbm90aHJvd19hc3NpZ24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FycmF5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2VfYW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX29yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX25vdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9lbmFibGVfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZGVjbHZhbC5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWx7Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfTk9FWENFUFQKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEVuYWJsZSA9IHZvaWQ+Ci1zdHJ1Y3QgZmFsc2Vfb3JfY3BwMTFfbm9leGNlcHRfbW92ZV9hc3NpZ25hYmxlOiBwdWJsaWMgOjpuZG5ib29zdDo6ZmFsc2VfdHlwZSB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgZmFsc2Vfb3JfY3BwMTFfbm9leGNlcHRfbW92ZV9hc3NpZ25hYmxlIDwKLSAgICAgICAgVCwKLSAgICAgICAgdHlwZW5hbWUgOjpuZG5ib29zdDo6ZW5hYmxlX2lmX2M8c2l6ZW9mKFQpICYmIE5ETkJPT1NUX05PRVhDRVBUX0VYUFIoOjpuZG5ib29zdDo6ZGVjbHZhbDxUJj4oKSA9IDo6bmRuYm9vc3Q6OmRlY2x2YWw8VD4oKSk+Ojp0eXBlCi0gICAgPiA6IHB1YmxpYyA6Om5kbmJvb3N0OjppbnRlZ3JhbF9jb25zdGFudDxib29sLCBORE5CT09TVF9OT0VYQ0VQVF9FWFBSKDo6bmRuYm9vc3Q6OmRlY2x2YWw8VCY+KCkgPSA6Om5kbmJvb3N0OjpkZWNsdmFsPFQ+KCkpPgote307Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX25vdGhyb3dfbW92ZV9hc3NpZ25hYmxlX2ltcHsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoCi0gICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3ZvbGF0aWxlPFQ+Ojp2YWx1ZSA+Ojp2YWx1ZSwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19yZWZlcmVuY2U8VD46OnZhbHVlID46OnZhbHVlLAotICAgICAgICAgICAgOjpuZG5ib29zdDo6ZGV0YWlsOjpmYWxzZV9vcl9jcHAxMV9ub2V4Y2VwdF9tb3ZlX2Fzc2lnbmFibGU8VD46OnZhbHVlCi0gICAgICAgID46OnZhbHVlKSk7Ci19OwotCi0jZWxzZQotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19ub3Rocm93X21vdmVfYXNzaWduYWJsZV9pbXB7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKAotICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8Ci0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aGFzX3RyaXZpYWxfbW92ZV9hc3NpZ248VD46OnZhbHVlLAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6Omhhc19ub3Rocm93X2Fzc2lnbjxUPjo6dmFsdWUKLSAgICAgICAgICAgID46OnZhbHVlLAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2FycmF5PFQ+Ojp2YWx1ZSA+Ojp2YWx1ZQotICAgICAgICA+Ojp2YWx1ZSkpOwotfTsKLQotI2VuZGlmCi0KLX0KLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19ub3Rocm93X21vdmVfYXNzaWduYWJsZSxULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfbm90aHJvd19tb3ZlX2Fzc2lnbmFibGVfaW1wPFQ+Ojp2YWx1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGlzX25vdGhyb3dfbW92ZV9hc3NpZ25hYmxlLHZvaWQsZmFsc2UpCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShpc19ub3Rocm93X21vdmVfYXNzaWduYWJsZSx2b2lkIGNvbnN0LGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaXNfbm90aHJvd19tb3ZlX2Fzc2lnbmFibGUsdm9pZCBjb25zdCB2b2xhdGlsZSxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGlzX25vdGhyb3dfbW92ZV9hc3NpZ25hYmxlLHZvaWQgdm9sYXRpbGUsZmFsc2UpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX05PVEhST1dfTU9WRV9BU1NJR05BQkxFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJsZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODg5MTEzNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICAoQykgQ29weXJpZ2h0IEVyaWMgRnJpZWRtYW4gMjAwMi0yMDAzLgotLy8gIChDKSBDb3B5cmlnaHQgQW50b255IFBvbHVraGluIDIwMTMuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX05PVEhST1dfTU9WRV9DT05TVFJVQ1RJQkxFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JU19OT1RIUk9XX01PVkVfQ09OU1RSVUNUSUJMRV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfbW92ZV9jb25zdHJ1Y3Rvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25vdGhyb3dfY29weS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3JlZmVyZW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9vci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9hbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZGVjbHZhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9lbmFibGVfaWYuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGV0YWlsewotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX05PRVhDRVBUCi0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBFbmFibGUgPSB2b2lkPgotc3RydWN0IGZhbHNlX29yX2NwcDExX25vZXhjZXB0X21vdmVfY29uc3RydWN0aWJsZTogcHVibGljIDo6bmRuYm9vc3Q6OmZhbHNlX3R5cGUge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGZhbHNlX29yX2NwcDExX25vZXhjZXB0X21vdmVfY29uc3RydWN0aWJsZSA8Ci0gICAgICAgIFQsCi0gICAgICAgIHR5cGVuYW1lIDo6bmRuYm9vc3Q6OmVuYWJsZV9pZl9jPHNpemVvZihUKSAmJiBORE5CT09TVF9OT0VYQ0VQVF9FWFBSKFQoOjpuZG5ib29zdDo6ZGVjbHZhbDxUPigpKSk+Ojp0eXBlCi0gICAgPiA6IHB1YmxpYyA6Om5kbmJvb3N0OjppbnRlZ3JhbF9jb25zdGFudDxib29sLCBORE5CT09TVF9OT0VYQ0VQVF9FWFBSKFQoOjpuZG5ib29zdDo6ZGVjbHZhbDxUPigpKSk+Ci17fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGVfaW1wewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gCi0gICAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc192b2xhdGlsZTxUPjo6dmFsdWUgPjo6dmFsdWUsCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZSA+Ojp2YWx1ZSwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmRldGFpbDo6ZmFsc2Vfb3JfY3BwMTFfbm9leGNlcHRfbW92ZV9jb25zdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZQotICAgICAgICA+Ojp2YWx1ZSkpOwotfTsKLQotI2Vsc2UKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGVfaW1wewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9KAotICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8Ci0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aGFzX3RyaXZpYWxfbW92ZV9jb25zdHJ1Y3RvcjxUPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aGFzX25vdGhyb3dfY29weTxUPjo6dmFsdWUKLSAgICAgICAgICAgID46OnZhbHVlLAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2FycmF5PFQ+Ojp2YWx1ZSA+Ojp2YWx1ZQotICAgICAgICA+Ojp2YWx1ZSkpOwotfTsKLQotI2VuZGlmCi0KLX0KLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJsZSxULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGVfaW1wPFQ+Ojp2YWx1ZSkKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGUsdm9pZCxmYWxzZSkKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGlzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlLHZvaWQgY29uc3QsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShpc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJsZSx2b2lkIGNvbnN0IHZvbGF0aWxlLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGUsdm9pZCB2b2xhdGlsZSxmYWxzZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfTk9USFJPV19NT1ZFX0NPTlNUUlVDVElCTEVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX29iamVjdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX29iamVjdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwNmViOWEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19vYmplY3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JU19PQkpFQ1RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX09CSkVDVF9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3JlZmVyZW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9pZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZnVuY3Rpb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2VfYW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX25vdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX29iamVjdF9pbXBsCi17Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZT46OnZhbHVlLAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8VD46OnZhbHVlPjo6dmFsdWUsCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfZnVuY3Rpb248VD46OnZhbHVlPjo6dmFsdWUKLSAgICAgID46OnZhbHVlKSk7Ci0jZWxzZQotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19yZWZlcmVuY2U8VD46OnZhbHVlPjo6dmFsdWUsCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfdm9pZDxUPjo6dmFsdWU+Ojp2YWx1ZQotICAgICAgPjo6dmFsdWUpKTsKLSNlbmRpZgotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfb2JqZWN0LFQsOjpuZG5ib29zdDo6ZGV0YWlsOjppc19vYmplY3RfaW1wbDxUPjo6dmFsdWUpCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19PQkpFQ1RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5MDc2MWEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ1ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfUE9EX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JU19QT0RfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvaWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NjYWxhci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9vci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaW50cmluc2ljcy5ocHA+Ci0KLSNpbmNsdWRlIDxjc3RkZGVmPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi0jaWZuZGVmIE5ETkJPT1NUX0lTX1BPRAotI2RlZmluZSBORE5CT09TVF9JTlRFUk5BTF9JU19QT0QoVCkgZmFsc2UKLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX0lOVEVSTkFMX0lTX1BPRChUKSBORE5CT09TVF9JU19QT0QoVCkKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0vLyBmb3J3YXJkIGRlY2xhcmF0aW9uLCBuZWVkZWQgYnkgJ2lzX3BvZF9hcnJheV9oZWxwZXInIHRlbXBsYXRlIGJlbG93Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBpc19QT0Q7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBpc19wb2RfaW1wbAoteyAKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoCi0gICAgICAgIGJvb2wsIHZhbHVlID0KLSAgICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8Ci0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19zY2FsYXI8VD46OnZhbHVlLAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDxUPjo6dmFsdWUsCi0gICAgICAgICAgICBORE5CT09TVF9JTlRFUk5BTF9JU19QT0QoVCkKLSAgICAgICAgID46OnZhbHVlKSk7Ci19OwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQVJSQVlfVFlQRV9TUEVDSUFMSVpBVElPTlMpCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc3RkOjpzaXplX3Qgc3o+Ci1zdHJ1Y3QgaXNfcG9kX2ltcGw8VFtzel0+Ci0gICAgOiBwdWJsaWMgaXNfcG9kX2ltcGw8VD4KLXsKLX07Ci0jZW5kaWYKLQotI2Vsc2UKLQotdGVtcGxhdGUgPGJvb2wgaXNfYXJyYXkgPSBmYWxzZT4KLXN0cnVjdCBpc19wb2RfaGVscGVyCi17Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoCi0gICAgICAgICAgICBib29sLCB2YWx1ZSA9Ci0gICAgICAgICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19zY2FsYXI8VD46OnZhbHVlLAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8VD46OnZhbHVlLAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lOVEVSTkFMX0lTX1BPRChUKQotICAgICAgICAgICAgPjo6dmFsdWUpKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGUgPGJvb2wgYj4KLXN0cnVjdCBib29sX3RvX3llc19ub190eXBlCi17Ci0gICAgdHlwZWRlZiA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6bm9fdHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBib29sX3RvX3llc19ub190eXBlPHRydWU+Ci17Ci0gICAgdHlwZWRlZiA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBBcnJheVR5cGU+Ci1zdHJ1Y3QgaXNfcG9kX2FycmF5X2hlbHBlcgotewotICAgIGVudW0geyBpc19wb2QgPSA6Om5kbmJvb3N0Ojppc19QT0Q8QXJyYXlUeXBlPjo6dmFsdWUgfTsgLy8gTVNWQyB3b3JrYXJvdW5kCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBib29sX3RvX3llc19ub190eXBlPGlzX3BvZD46OnR5cGUgdHlwZTsKLSAgICB0eXBlIGluc3RhbmNlKCkgY29uc3Q7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlzX3BvZF9hcnJheV9oZWxwZXI8VD4gaXNfUE9EX2FycmF5KFQqKTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBpc19wb2RfaGVscGVyPHRydWU+Ci17Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICBzdGF0aWMgVCYgaGVscCgpOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAgc2l6ZW9mKGlzX1BPRF9hcnJheShoZWxwKCkpLmluc3RhbmNlKCkpID09IHNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUpCi0gICAgICAgICAgICApOwotICAgIH07Ci19OwotCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgaXNfcG9kX2ltcGwKLXsgCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoCi0gICAgICAgYm9vbCwgdmFsdWUgPSAoCi0gICAgICAgICAgIDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfcG9kX2hlbHBlcjwKLSAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfYXJyYXk8VD46OnZhbHVlCi0gICAgICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88VD46OnZhbHVlCi0gICAgICAgICAgICkKLSAgICAgICApOwotfTsKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotLy8gdGhlIGZvbGxvd2luZyBoZWxwIGNvbXBpbGVycyB3aXRob3V0IHBhcnRpYWwgc3BlY2lhbGl6YXRpb24gc3VwcG9ydDoKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9kLHZvaWQsdHJ1ZSkKLQotI2lmbmRlZiBORE5CT09TVF9OT19DVl9WT0lEX1NQRUNJQUxJWkFUSU9OUwotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19wb2Qsdm9pZCBjb25zdCx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19wb2Qsdm9pZCB2b2xhdGlsZSx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19wb2Qsdm9pZCBjb25zdCB2b2xhdGlsZSx0cnVlKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX3BvZCxULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfcG9kX2ltcGw8VD46OnZhbHVlKQotLy8gaXNfUE9EIGlzIHRoZSBvbGQgZGVwcmljYXRlZCBuYW1lIGZvciB0aGlzIHRyYWl0LCBkbyBub3QgdXNlIHRoaXMgYXMgaXQgbWF5Ci0vLyBiZSByZW1vdmVkIGluIGZ1dHVyZSB3aXRob3V0IHdhcm5pbmchIQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19QT0QsVCw6Om5kbmJvb3N0Ojppc19wb2Q8VD46OnZhbHVlKQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfSU5URVJOQUxfSVNfUE9ECi0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19QT0RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvaW50ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2ludGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODEyZDM2ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvaW50ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTYyICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgRGF2ZSBBYnJhaGFtcywgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgCi0vLyAgICAgIEhvd2FyZCBIaW5uYW50IGFuZCBKb2huIE1hZGRvY2sgMjAwMC4gCi0vLyAgKEMpIENvcHlyaWdodCBNYXQgTWFyY3VzLCBKZXNzZSBKb25lcyBhbmQgQWRvYmUgU3lzdGVtcyBJbmMgMjAwMQotCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0vLyAgICBGaXhlZCBpc19wb2ludGVyLCBpc19yZWZlcmVuY2UsIGlzX2NvbnN0LCBpc192b2xhdGlsZSwgaXNfc2FtZSwgCi0vLyAgICBpc19tZW1iZXJfcG9pbnRlciBiYXNlZCBvbiB0aGUgU2ltdWxhdGVkIFBhcnRpYWwgU3BlY2lhbGl6YXRpb24gd29yayAKLS8vICAgIG9mIE1hdCBNYXJjdXMgYW5kIEplc3NlIEpvbmVzLiBTZWUgIGh0dHA6Ly9vcGVuc291cmNlLmFkb2JlLmNvbSBvciAKLS8vICAgIGh0dHA6Ly9ncm91cHMueWFob28uY29tL2dyb3VwL2Jvb3N0L21lc3NhZ2UvNTQ0MSAKLS8vICAgIFNvbWUgd29ya2Fyb3VuZHMgaW4gaGVyZSB1c2UgaWRlYXMgc3VnZ2VzdGVkIGZyb20gIkdlbmVyaWM8UHJvZ3JhbW1pbmc+OiAKLS8vICAgIE1hcHBpbmdzIGJldHdlZW4gVHlwZXMgYW5kIFZhbHVlcyIgCi0vLyAgICBieSBBbmRyZWkgQWxleGFuZHJlc2N1IChzZWUgaHR0cDovL3d3dy5jdWouY29tL2V4cGVydHMvMTgxMC9hbGV4YW5kci5odG1sKS4KLQotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX1BPSU5URVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX1BPSU5URVJfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19tZW1iZXJfcG9pbnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9hbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfbm90LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwPgotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsPD0xMzAwKQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHA+Ci0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FycmF5LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaXNfZnVuY3Rpb25fcHRyX3Rlc3Rlci5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ZhbHNlX3Jlc3VsdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9vci5ocHA+Ci0jZW5kaWYKLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotI2lmIGRlZmluZWQoIF9fQ09ERUdFQVJDX18gKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19wb2ludGVyLFQsX19pc19wb2ludGVyKFQpKQotI2VsaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGlzX3BvaW50ZXJfaGVscGVyCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotfTsKLQotIyAgIGRlZmluZSBUVF9BVVhfQk9PTF9UUkFJVF9IRUxQRVJfUEFSVElBTF9TUEVDKGhlbHBlcixzcCxyZXN1bHQpIFwKLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGhlbHBlcjxzcD4gXAoteyBcCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gcmVzdWx0KTsgXAotfTsgXAotLyoqLwotCi1UVF9BVVhfQk9PTF9UUkFJVF9IRUxQRVJfUEFSVElBTF9TUEVDKGlzX3BvaW50ZXJfaGVscGVyLFQqLHRydWUpCi0KLSMgICB1bmRlZiBUVF9BVVhfQk9PTF9UUkFJVF9IRUxQRVJfUEFSVElBTF9TUEVDCi0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBpc19wb2ludGVyX2ltcGwKLXsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsPD0xMzAwKQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwKLSAgICAgICAgICAgICAgOjpuZG5ib29zdDo6ZGV0YWlsOjppc19wb2ludGVyX2hlbHBlcjxUPjo6dmFsdWUKLSAgICAgICAgICAgICwgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8Ci0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfbWVtYmVyX3BvaW50ZXI8VD46OnZhbHVlCi0gICAgICAgICAgICAgICAgPjo6dmFsdWUKLSAgICAgICAgICAgID46OnZhbHVlKQotICAgICAgICApOwotI2Vsc2UKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgIDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfcG9pbnRlcl9oZWxwZXI8dHlwZW5hbWUgcmVtb3ZlX2N2PFQ+Ojp0eXBlPjo6dmFsdWUKLSAgICAgICAgICAgICwgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8Ci0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfbWVtYmVyX3BvaW50ZXI8VD46OnZhbHVlCi0gICAgICAgICAgICAgICAgPjo6dmFsdWUKLSAgICAgICAgICAgID46OnZhbHVlKQotICAgICAgICApOwotI2VuZGlmCi19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19wb2ludGVyLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjppc19wb2ludGVyX2ltcGw8VD46OnZhbHVlKQotCi0jaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pICYmICFkZWZpbmVkKF9fQ09NT19fKSAmJiAoX19CT1JMQU5EQ19fIDwgMHg2MDApCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxpc19wb2ludGVyLFQmLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsaXNfcG9pbnRlcixUJiBjb25zdCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULGlzX3BvaW50ZXIsVCYgdm9sYXRpbGUsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxpc19wb2ludGVyLFQmIGNvbnN0IHZvbGF0aWxlLGZhbHNlKQotI2VuZGlmCi0KLSNlbHNlIC8vIG5vIHBhcnRpYWwgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXN0cnVjdCBwb2ludGVyX2hlbHBlcgotewotICAgIHBvaW50ZXJfaGVscGVyKGNvbnN0IHZvbGF0aWxlIHZvaWQqKTsKLX07Ci0KLXllc190eXBlIE5ETkJPT1NUX1RUX0RFQ0wgaXNfcG9pbnRlcl90ZXN0ZXIocG9pbnRlcl9oZWxwZXIpOwotbm9fdHlwZSBORE5CT09TVF9UVF9ERUNMIGlzX3BvaW50ZXJfdGVzdGVyKC4uLik7Ci0KLXRlbXBsYXRlIDxib29sPgotc3RydWN0IGlzX3BvaW50ZXJfc2VsZWN0Ci0gICAgOiBwdWJsaWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmZhbHNlX3Jlc3VsdAotewotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBpc19wb2ludGVyX3NlbGVjdDxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHN0YXRpYyBUJiBtYWtlX3QoKTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwKLSAgICAgICAgICAgICAgICAgICAgKDEgPT0gc2l6ZW9mKGlzX3BvaW50ZXJfdGVzdGVyKG1ha2VfdCgpKSkpLAotICAgICAgICAgICAgICAgICAgICAoMSA9PSBzaXplb2YodHlwZV90cmFpdHM6OmlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIobWFrZV90KCkpKSkKLSAgICAgICAgICAgICAgICA+Ojp2YWx1ZSkpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19wb2ludGVyX2ltcGwKLSAgICA6IHB1YmxpYyBpc19wb2ludGVyX3NlbGVjdDwKLSAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19yZWZlcmVuY2U8VD46OnZhbHVlCi0gICAgICAgICAgICAsIDo6bmRuYm9vc3Q6OmlzX2FycmF5PFQ+Ojp2YWx1ZQotICAgICAgICAgICAgPjo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzxUPgotewotfTsKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19wb2ludGVyLHZvaWQsZmFsc2UpCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvaW50ZXIsdm9pZCBjb25zdCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9pbnRlcix2b2lkIHZvbGF0aWxlLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19wb2ludGVyLHZvaWQgY29uc3Qgdm9sYXRpbGUsZmFsc2UpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfcG9pbnRlcixULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfcG9pbnRlcl9pbXBsPFQ+Ojp2YWx1ZSkKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX1BPSU5URVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvbHltb3JwaGljLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9seW1vcnBoaWMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmI2NjE1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9seW1vcnBoaWMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAwLiAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfUE9MWU1PUlBISUNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX1BPTFlNT1JQSElDX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaW50cmluc2ljcy5ocHA+Ci0jaWZuZGVmIE5ETkJPT1NUX0lTX1BPTFlNT1JQSElDCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY2xhc3MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHA+Ci0jZW5kaWYKLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLSNpZm5kZWYgTkROQk9PU1RfSVNfUE9MWU1PUlBISUMKLQotbmFtZXNwYWNlIGRldGFpbHsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfcG9seW1vcnBoaWNfaW1wMQotewotIyBpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIDw9IDB4MjQwNykgLy8gQ1dQcm83IHNob3VsZCByZXR1cm4gZmFsc2UgYWx3YXlzLgotICAgIHR5cGVkZWYgY2hhciBkMSwgKCZkMilbMl07Ci0jIGVsc2UgCi0gICB0eXBlZGVmIHR5cGVuYW1lIHJlbW92ZV9jdjxUPjo6dHlwZSBuY3ZUOwotICAgc3RydWN0IGQxIDogcHVibGljIG5jdlQKLSAgIHsKLSAgICAgIGQxKCk7Ci0jICBpZiAhZGVmaW5lZChfX0dOVUNfXykgLy8gdGhpcyByYWlzZXMgd2FybmluZ3Mgd2l0aCBzb21lIGNsYXNzZXMsIGFuZCBidXlzIG5vdGhpbmcgd2l0aCBHQ0MKLSAgICAgIH5kMSgpdGhyb3coKTsKLSMgIGVuZGlmIAotICAgICAgY2hhciBwYWRkaW5nWzI1Nl07Ci0gICBwcml2YXRlOgotICAgICAgLy8ga2VlcCBzb21lIHBpY2t5IGNvbXBpbGVycyBoYXBweToKLSAgICAgIGQxKGNvbnN0IGQxJik7Ci0gICAgICBkMSYgb3BlcmF0b3I9KGNvbnN0IGQxJik7Ci0gICB9OwotICAgc3RydWN0IGQyIDogcHVibGljIG5jdlQKLSAgIHsKLSAgICAgIGQyKCk7Ci0gICAgICB2aXJ0dWFsIH5kMigpdGhyb3coKTsKLSMgIGlmICFkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmICFkZWZpbmVkKF9fSUNMKQotICAgICAgLy8gZm9yIHNvbWUgcmVhc29uIHRoaXMgbWVzc2VzIHVwIFZDKysgd2hlbiBUIGhhcyB2aXJ0dWFsIGJhc2VzLAotICAgICAgLy8gcHJvYmFibHkgbGlrZXdpc2UgZm9yIGNvbXBpbGVycyB0aGF0IHVzZSB0aGUgc2FtZSBBQkk6Ci0gICAgICBzdHJ1Y3QgdW5pcXVle307Ci0gICAgICB2aXJ0dWFsIHZvaWQgdW5pcXVlX25hbWVfdG9fYm9vc3Q1NDg3NjI5KHVuaXF1ZSopOwotIyAgZW5kaWYKLSAgICAgIGNoYXIgcGFkZGluZ1syNTZdOwotICAgcHJpdmF0ZToKLSAgICAgIC8vIGtlZXAgc29tZSBwaWNreSBjb21waWxlcnMgaGFwcHk6Ci0gICAgICBkMihjb25zdCBkMiYpOwotICAgICAgZDImIG9wZXJhdG9yPShjb25zdCBkMiYpOwotICAgfTsKLSMgZW5kaWYgCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoc2l6ZW9mKGQyKSA9PSBzaXplb2YoZDEpKSk7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19wb2x5bW9ycGhpY19pbXAyCi17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZSA8Ym9vbCBpc19jbGFzcz4KLXN0cnVjdCBpc19wb2x5bW9ycGhpY19zZWxlY3RvcgotewotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBzdHJ1Y3QgcmViaW5kCi0gICB7Ci0gICAgICB0eXBlZGVmIGlzX3BvbHltb3JwaGljX2ltcDI8VD4gdHlwZTsKLSAgIH07Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGlzX3BvbHltb3JwaGljX3NlbGVjdG9yPHRydWU+Ci17Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHN0cnVjdCByZWJpbmQKLSAgIHsKLSAgICAgIHR5cGVkZWYgaXNfcG9seW1vcnBoaWNfaW1wMTxUPiB0eXBlOwotICAgfTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3BvbHltb3JwaGljX2ltcAotewotICAgdHlwZWRlZiBpc19wb2x5bW9ycGhpY19zZWxlY3RvcjwgOjpuZG5ib29zdDo6aXNfY2xhc3M8VD46OnZhbHVlPiBzZWxlY3RvcjsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgc2VsZWN0b3I6OnRlbXBsYXRlIHJlYmluZDxUPiBiaW5kZXI7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGJpbmRlcjo6dHlwZSBpbXBfdHlwZTsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGltcF90eXBlOjp2YWx1ZSk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19wb2x5bW9ycGhpYyxULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfcG9seW1vcnBoaWNfaW1wPFQ+Ojp2YWx1ZSkKLQotI2Vsc2UgLy8gTkROQk9PU1RfSVNfUE9MWU1PUlBISUMKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19wb2x5bW9ycGhpYyxULE5ETkJPT1NUX0lTX1BPTFlNT1JQSElDKFQpKQotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3JlZmVyZW5jZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3JlZmVyZW5jZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5ZDZjNGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBEYXZlIEFicmFoYW1zLCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCAKLS8vICAgICAgSG93YXJkIEhpbm5hbnQgYW5kIEpvaG4gTWFkZG9jayAyMDAwLCAyMDEwLiAKLS8vICAoQykgQ29weXJpZ2h0IE1hdCBNYXJjdXMsIEplc3NlIEpvbmVzIGFuZCBBZG9iZSBTeXN0ZW1zIEluYyAyMDAxCi0KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfUkVGRVJFTkNFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JU19SRUZFUkVOQ0VfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2x2YWx1ZV9yZWZlcmVuY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3J2YWx1ZV9yZWZlcmVuY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ljZS5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19yZWZlcmVuY2VfaW1wbAotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfbHZhbHVlX3JlZmVyZW5jZTxUPjo6dmFsdWUsIDo6bmRuYm9vc3Q6OmlzX3J2YWx1ZV9yZWZlcmVuY2U8VD46OnZhbHVlCi0gICAgICAgPjo6dmFsdWUpKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX3JlZmVyZW5jZSxULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfcmVmZXJlbmNlX2ltcGw8VD46OnZhbHVlKQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfUkVGRVJFTkNFX0hQUF9JTkNMVURFRAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3J2YWx1ZV9yZWZlcmVuY2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19ydmFsdWVfcmVmZXJlbmNlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2NmZTE0Mi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3J2YWx1ZV9yZWZlcmVuY2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotCi0vLyAgKEMpIEpvaG4gTWFkZG9jayAyMDEwLiAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfUlZBTFVFX1JFRkVSRU5DRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfUlZBTFVFX1JFRkVSRU5DRV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbmZpZy5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfcnZhbHVlX3JlZmVyZW5jZSxULGZhbHNlKQotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsaXNfcnZhbHVlX3JlZmVyZW5jZSxUJiYsdHJ1ZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfUkVGRVJFTkNFX0hQUF9JTkNMVURFRAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDAwYmQyZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgRGF2ZSBBYnJhaGFtcywgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgCi0vLyAgICAgIEhvd2FyZCBIaW5uYW50IGFuZCBKb2huIE1hZGRvY2sgMjAwMC4gCi0vLyAgKEMpIENvcHlyaWdodCBNYXQgTWFyY3VzLCBKZXNzZSBKb25lcyBhbmQgQWRvYmUgU3lzdGVtcyBJbmMgMjAwMQotCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0vLyAgICBGaXhlZCBpc19wb2ludGVyLCBpc19yZWZlcmVuY2UsIGlzX2NvbnN0LCBpc192b2xhdGlsZSwgaXNfc2FtZSwgCi0vLyAgICBpc19tZW1iZXJfcG9pbnRlciBiYXNlZCBvbiB0aGUgU2ltdWxhdGVkIFBhcnRpYWwgU3BlY2lhbGl6YXRpb24gd29yayAKLS8vICAgIG9mIE1hdCBNYXJjdXMgYW5kIEplc3NlIEpvbmVzLiBTZWUgIGh0dHA6Ly9vcGVuc291cmNlLmFkb2JlLmNvbSBvciAKLS8vICAgIGh0dHA6Ly9ncm91cHMueWFob28uY29tL2dyb3VwL2Jvb3N0L21lc3NhZ2UvNTQ0MSAKLS8vICAgIFNvbWUgd29ya2Fyb3VuZHMgaW4gaGVyZSB1c2UgaWRlYXMgc3VnZ2VzdGVkIGZyb20gIkdlbmVyaWM8UHJvZ3JhbW1pbmc+OiAKLS8vICAgIE1hcHBpbmdzIGJldHdlZW4gVHlwZXMgYW5kIFZhbHVlcyIgCi0vLyAgICBieSBBbmRyZWkgQWxleGFuZHJlc2N1IChzZWUgaHR0cDovL3d3dy5jdWouY29tL2V4cGVydHMvMTgxMC9hbGV4YW5kci5odG1sKS4KLQotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX1NBTUVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX1NBTUVfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwPgotI2lmZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwveWVzX25vX3R5cGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2VfYW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwPgotI2VuZGlmCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMihpc19zYW1lLFQsVSxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzJfMSh0eXBlbmFtZSBULGlzX3NhbWUsVCxULHRydWUpCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg2MDApCi0vLyB3aXRob3V0IHRoaXMsIEJvcmxhbmQncyBjb21waWxlciBnaXZlcyB0aGUgd3JvbmcgYW5zd2VyIGZvcgotLy8gcmVmZXJlbmNlcyB0byBhcnJheXM6Ci1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMyXzEodHlwZW5hbWUgVCxpc19zYW1lLFQmLFQmLHRydWUpCi0jZW5kaWYKLQotI2Vsc2UgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLS8vIHRoZSBmb2xsb3dpbmcgVkM2IHNwZWNpZmljIGltcGxlbWVudGF0aW9uIGlzICpOT1QqIGxlZ2FsCi0vLyBDKyssIGJ1dCBoYXMgdGhlIGFkdmFudGFnZSB0aGF0IGl0IHdvcmtzIGZvciBpbmNvbXBsZXRlCi0vLyB0eXBlcy4KLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxID4KLXN0cnVjdCBpc19zYW1lX3BhcnRfMQotewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQyPiAgc3RydWN0IHBhcnRfMiAgICAgeyBlbnVtIHsgdmFsdWUgPSBmYWxzZSB9OyB9OwotICAgIHRlbXBsYXRlPD4gICAgICAgICAgICAgc3RydWN0IHBhcnRfMjxUMT4geyBlbnVtIHsgdmFsdWUgPSB0cnVlIH07IH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyID4KLXN0cnVjdCBpc19zYW1lX2ltcGwKLXsKLSAgICBlbnVtIHsgdmFsdWUgPSBuZG5ib29zdDo6ZGV0YWlsOjppc19zYW1lX3BhcnRfMTxUMT46OnRlbXBsYXRlIHBhcnRfMjxUMj46OnZhbHVlIH07Ci19OwotCi0jZWxzZSAvLyBnZW5lcmljICJuby1wYXJ0aWFsLXNwZWNpYWxpemF0aW9uIiB2ZXJzaW9uCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlCi1ORE5CT09TVF9UVF9ERUNMIGlzX3NhbWVfdGVzdGVyKFQqLCBUKik7Ci0KLTo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpub190eXBlCi1ORE5CT09TVF9UVF9ERUNMIGlzX3NhbWVfdGVzdGVyKC4uLik7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotc3RydWN0IGlzX3NhbWVfaW1wbAotewotICAgc3RhdGljIFQgdDsKLSAgIHN0YXRpYyBVIHU7Ci0KLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgICAoc2l6ZW9mKHR5cGVfdHJhaXRzOjp5ZXNfdHlwZSkgPT0gc2l6ZW9mKG5kbmJvb3N0OjpkZXRhaWw6OmlzX3NhbWVfdGVzdGVyKCZ0LCZ1KSkpLAotICAgICAgICAgKDo6bmRuYm9vc3Q6OmlzX3JlZmVyZW5jZTxUPjo6dmFsdWUgPT0gOjpuZG5ib29zdDo6aXNfcmVmZXJlbmNlPFU+Ojp2YWx1ZSksCi0gICAgICAgICAoc2l6ZW9mKFQpID09IHNpemVvZihVKSkKLSAgICAgICAgPjo6dmFsdWUpKTsKLX07Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NU1ZDCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYyKGlzX3NhbWUsVCxVLCg6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX3NhbWVfaW1wbDxULFU+Ojp2YWx1ZSkpCi0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAgLy8gTkROQk9PU1RfVFRfSVNfU0FNRV9IUFBfSU5DTFVERUQKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19zY2FsYXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19zY2FsYXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNGUyMDhlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2NhbGFyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfU0NBTEFSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JU19TQ0FMQVJfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcml0aG1ldGljLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19lbnVtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2ludGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19tZW1iZXJfcG9pbnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9vci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX3NjYWxhcl9pbXBsCi17IAotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfYXJpdGhtZXRpYzxUPjo6dmFsdWUsCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19lbnVtPFQ+Ojp2YWx1ZSwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8VD46OnZhbHVlLAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfbWVtYmVyX3BvaW50ZXI8VD46OnZhbHVlCi0gICAgICA+Ojp2YWx1ZSkpOwotfTsKLQotLy8gdGhlc2Ugc3BlY2lhbGl6YXRpb25zIGFyZSBvbmx5IHJlYWxseSBuZWVkZWQgZm9yIGNvbXBpbGVycyAKLS8vIHdpdGhvdXQgcGFydGlhbCBzcGVjaWFsaXphdGlvbiBzdXBwb3J0OgotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NjYWxhcl9pbXBsPHZvaWQ+eyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSApOyB9OwotI2lmbmRlZiBORE5CT09TVF9OT19DVl9WT0lEX1NQRUNJQUxJWkFUSU9OUwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NjYWxhcl9pbXBsPHZvaWQgY29uc3Q+eyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSApOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NjYWxhcl9pbXBsPHZvaWQgdm9sYXRpbGU+eyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSApOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NjYWxhcl9pbXBsPHZvaWQgY29uc3Qgdm9sYXRpbGU+eyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSApOyB9OwotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX3NjYWxhcixULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfc2NhbGFyX2ltcGw8VD46OnZhbHVlKQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfU0NBTEFSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19zaWduZWQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19zaWduZWQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDBjNmUwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2lnbmVkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MCArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDA1LiAgCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfU0lHTkVEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JU19TSUdORURfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19pbnRlZ3JhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19lbnVtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX29yLmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotI2lmICFkZWZpbmVkKCBfX0NPREVHRUFSQ19fICkKLQotbmFtZXNwYWNlIGRldGFpbHsKLQotI2lmICEoZGVmaW5lZChfX0VER19WRVJTSU9OX18pICYmIF9fRURHX1ZFUlNJT05fXyA8PSAyMzgpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lOQ0xBU1NfTUVNQkVSX0lOSVRJQUxJWkFUSU9OKQotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19zaWduZWRfdmFsdWVzCi17Ci0gICAvLwotICAgLy8gTm90ZSB0aGF0IHdlIGNhbm5vdCB1c2UgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UIGhlcmUsIHVzaW5nIGVudW0ncwotICAgLy8gcmF0aGVyIHRoYW4gInJlYWwiIHN0YXRpYyBjb25zdGFudHMgc2ltcGx5IGRvZXNuJ3Qgd29yayBvciBnaXZlCi0gICAvLyB0aGUgY29ycmVjdCBhbnN3ZXIuCi0gICAvLwotICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfY3Y8VD46OnR5cGUgbm9fY3ZfdDsKLSAgIHN0YXRpYyBjb25zdCBub19jdl90IG1pbnVzX29uZSA9IChzdGF0aWNfY2FzdDxub19jdl90PigtMSkpOwotICAgc3RhdGljIGNvbnN0IG5vX2N2X3QgemVybyA9IChzdGF0aWNfY2FzdDxub19jdl90PigwKSk7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19zaWduZWRfaGVscGVyCi17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHJlbW92ZV9jdjxUPjo6dHlwZSBub19jdl90OwotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKCEoOjpuZG5ib29zdDo6ZGV0YWlsOjppc19zaWduZWRfdmFsdWVzPFQ+OjptaW51c19vbmUgID4gbmRuYm9vc3Q6OmRldGFpbDo6aXNfc2lnbmVkX3ZhbHVlczxUPjo6emVybykpKTsKLX07Ci0KLXRlbXBsYXRlIDxib29sIGludGVncmFsX3R5cGU+Ci1zdHJ1Y3QgaXNfc2lnbmVkX3NlbGVjdF9oZWxwZXIKLXsKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgc3RydWN0IHJlYmluZAotICAgewotICAgICAgdHlwZWRlZiBpc19zaWduZWRfaGVscGVyPFQ+IHR5cGU7Ci0gICB9OwotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBpc19zaWduZWRfc2VsZWN0X2hlbHBlcjxmYWxzZT4KLXsKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgc3RydWN0IHJlYmluZAotICAgewotICAgICAgdHlwZWRlZiBmYWxzZV90eXBlIHR5cGU7Ci0gICB9OwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfc2lnbmVkX2ltcAotewotICAgdHlwZWRlZiBpc19zaWduZWRfc2VsZWN0X2hlbHBlcjwgCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlLAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZW51bTxUPjo6dmFsdWU+Ojp2YWx1ZSAKLSAgID4gc2VsZWN0b3I7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHNlbGVjdG9yOjp0ZW1wbGF0ZSByZWJpbmQ8VD4gYmluZGVyOwotICAgdHlwZWRlZiB0eXBlbmFtZSBiaW5kZXI6OnR5cGUgdHlwZTsKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIChORE5CT09TVF9NU1ZDIDwgMTMwMCkKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGlzX3NpZ25lZF9pbXA8VD46OnR5cGU6OnZhbHVlKTsKLSNlbHNlCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0eXBlOjp2YWx1ZSk7Ci0jZW5kaWYKLX07Ci0KLSNlbHNlCi0KLXRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgaXNfc2lnbmVkX2ltcCA6IHB1YmxpYyBmYWxzZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfc2lnbmVkX2ltcDxzaWduZWQgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfc2lnbmVkX2ltcDxjb25zdCBzaWduZWQgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfc2lnbmVkX2ltcDx2b2xhdGlsZSBzaWduZWQgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfc2lnbmVkX2ltcDxjb25zdCB2b2xhdGlsZSBzaWduZWQgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfc2lnbmVkX2ltcDxzaG9ydD4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfc2lnbmVkX2ltcDxjb25zdCBzaG9ydD4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfc2lnbmVkX2ltcDx2b2xhdGlsZSBzaG9ydD4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfc2lnbmVkX2ltcDxjb25zdCB2b2xhdGlsZSBzaG9ydD4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfc2lnbmVkX2ltcDxpbnQ+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NpZ25lZF9pbXA8Y29uc3QgaW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zaWduZWRfaW1wPHZvbGF0aWxlIGludD4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfc2lnbmVkX2ltcDxjb25zdCB2b2xhdGlsZSBpbnQ+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NpZ25lZF9pbXA8bG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfc2lnbmVkX2ltcDxjb25zdCBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zaWduZWRfaW1wPHZvbGF0aWxlIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NpZ25lZF9pbXA8Y29uc3Qgdm9sYXRpbGUgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci0jaWZkZWYgTkROQk9PU1RfSEFTX0xPTkdfTE9ORwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NpZ25lZF9pbXA8bG9uZyBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zaWduZWRfaW1wPGNvbnN0IGxvbmcgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfc2lnbmVkX2ltcDx2b2xhdGlsZSBsb25nIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NpZ25lZF9pbXA8Y29uc3Qgdm9sYXRpbGUgbG9uZyBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLSNlbmRpZgotI2lmIGRlZmluZWQoQ0hBUl9NSU4pICYmIChDSEFSX01JTiAhPSAwKQotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NpZ25lZF9pbXA8Y2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfc2lnbmVkX2ltcDxjb25zdCBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zaWduZWRfaW1wPHZvbGF0aWxlIGNoYXI+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NpZ25lZF9pbXA8Y29uc3Qgdm9sYXRpbGUgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci0jZW5kaWYKLSNpZiBkZWZpbmVkKFdDSEFSX01JTikgJiYgKFdDSEFSX01JTiAhPSAwKQotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NpZ25lZF9pbXA8d2NoYXJfdD4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfc2lnbmVkX2ltcDxjb25zdCB3Y2hhcl90PiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zaWduZWRfaW1wPHZvbGF0aWxlIHdjaGFyX3Q+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NpZ25lZF9pbXA8Y29uc3Qgdm9sYXRpbGUgd2NoYXJfdD4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci0jZW5kaWYKLQotI2VuZGlmCi0KLX0KLQotI2VuZGlmIC8vICFkZWZpbmVkKCBfX0NPREVHRUFSQ19fICkKLQotI2lmIGRlZmluZWQoIF9fQ09ERUdFQVJDX18gKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19zaWduZWQsVCxfX2lzX3NpZ25lZChUKSkKLSNlbHNlCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX3NpZ25lZCxULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfc2lnbmVkX2ltcDxUPjo6dmFsdWUpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX01FTUJFUl9GVU5DVElPTl9QT0lOVEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19zdGF0ZWxlc3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19zdGF0ZWxlc3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNzk2OGRjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc3RhdGVsZXNzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfU1RBVEVMRVNTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JU19TVEFURUxFU1NfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfY29weS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY2xhc3MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2VtcHR5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX2FuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX3N0YXRlbGVzc19pbXBsCi17Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IAotICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwKLSAgICAgICA6Om5kbmJvb3N0OjpoYXNfdHJpdmlhbF9jb25zdHJ1Y3RvcjxUPjo6dmFsdWUsCi0gICAgICAgOjpuZG5ib29zdDo6aGFzX3RyaXZpYWxfY29weTxUPjo6dmFsdWUsCi0gICAgICAgOjpuZG5ib29zdDo6aGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjxUPjo6dmFsdWUsCi0gICAgICAgOjpuZG5ib29zdDo6aXNfY2xhc3M8VD46OnZhbHVlLAotICAgICAgIDo6bmRuYm9vc3Q6OmlzX2VtcHR5PFQ+Ojp2YWx1ZQotICAgICA+Ojp2YWx1ZSkpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfc3RhdGVsZXNzLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjppc19zdGF0ZWxlc3NfaW1wbDxUPjo6dmFsdWUpCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19TVEFURUxFU1NfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3VuaW9uLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdW5pb24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNGI0YmQ3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdW5pb24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBEYXZlIEFicmFoYW1zLCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQKLS8vICBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuICAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JU19VTklPTl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfVU5JT05fSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaW50cmluc2ljcy5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotI2lmbmRlZiBfX0dOVUNfXwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBpc191bmlvbl9pbXBsCi17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHJlbW92ZV9jdjxUPjo6dHlwZSBjdnQ7Ci0jaWZkZWYgTkROQk9PU1RfSVNfVU5JT04KLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IE5ETkJPT1NUX0lTX1VOSU9OKGN2dCkpOwotI2Vsc2UKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLSNlbmRpZgotfTsKLSNlbHNlCi0vLwotLy8gdXNpbmcgcmVtb3ZlX2N2IGhlcmUgZ2VuZXJhdGVzIGEgd2hvbGUgbG9hZCBvZiBuZWVkbGVzcwotLy8gd2FybmluZ3Mgd2l0aCBnY2MsIHNpbmNlIGl0IGRvZXNuJ3QgZG8gYW55IGdvb2Qgd2l0aCBnY2MKLS8vIGluIGFueSBjYXNlIChhdCBsZWFzdCBhdCBwcmVzZW50KSwganVzdCByZW1vdmUgaXQ6Ci0vLwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBpc191bmlvbl9pbXBsCi17Ci0jaWZkZWYgTkROQk9PU1RfSVNfVU5JT04KLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IE5ETkJPT1NUX0lTX1VOSU9OKFQpKTsKLSNlbHNlCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci0jZW5kaWYKLX07Ci0jZW5kaWYKLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX3VuaW9uLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjppc191bmlvbl9pbXBsPFQ+Ojp2YWx1ZSkKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX1VOSU9OX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc191bnNpZ25lZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3Vuc2lnbmVkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzZiYWYxMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3Vuc2lnbmVkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzNSArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDA1LiAgCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfVU5TSUdORURfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX1VOU0lHTkVEX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfaW50ZWdyYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2VudW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9vci5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSNpZiAhZGVmaW5lZCggX19DT0RFR0VBUkNfXyApCi0KLW5hbWVzcGFjZSBkZXRhaWx7Ci0KLSNpZiAhKGRlZmluZWQoX19FREdfVkVSU0lPTl9fKSAmJiBfX0VER19WRVJTSU9OX18gPD0gMjM4KSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19JTkNMQVNTX01FTUJFUl9JTklUSUFMSVpBVElPTikKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfdW5zaWduZWRfdmFsdWVzCi17Ci0gICAvLwotICAgLy8gTm90ZSB0aGF0IHdlIGNhbm5vdCB1c2UgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UIGhlcmUsIHVzaW5nIGVudW0ncwotICAgLy8gcmF0aGVyIHRoYW4gInJlYWwiIHN0YXRpYyBjb25zdGFudHMgc2ltcGx5IGRvZXNuJ3Qgd29yayBvciBnaXZlCi0gICAvLyB0aGUgY29ycmVjdCBhbnN3ZXIuCi0gICAvLwotICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfY3Y8VD46OnR5cGUgbm9fY3ZfdDsKLSAgIHN0YXRpYyBjb25zdCBub19jdl90IG1pbnVzX29uZSA9IChzdGF0aWNfY2FzdDxub19jdl90PigtMSkpOwotICAgc3RhdGljIGNvbnN0IG5vX2N2X3QgemVybyA9IChzdGF0aWNfY2FzdDxub19jdl90PigwKSk7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc191bnVuc2lnbmVkX2hlbHBlcgotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfdW5zaWduZWRfdmFsdWVzPFQ+OjptaW51c19vbmUgPiA6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX3Vuc2lnbmVkX3ZhbHVlczxUPjo6emVybykpOwotfTsKLQotdGVtcGxhdGUgPGJvb2wgaW50ZWdyYWxfdHlwZT4KLXN0cnVjdCBpc191bnVuc2lnbmVkX3NlbGVjdF9oZWxwZXIKLXsKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgc3RydWN0IHJlYmluZAotICAgewotICAgICAgdHlwZWRlZiBpc191bnVuc2lnbmVkX2hlbHBlcjxUPiB0eXBlOwotICAgfTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXNfdW51bnNpZ25lZF9zZWxlY3RfaGVscGVyPGZhbHNlPgotewotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBzdHJ1Y3QgcmViaW5kCi0gICB7Ci0gICAgICB0eXBlZGVmIGZhbHNlX3R5cGUgdHlwZTsKLSAgIH07Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc191bnNpZ25lZF9pbXAKLXsKLSAgIHR5cGVkZWYgaXNfdW51bnNpZ25lZF9zZWxlY3RfaGVscGVyPCAKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8Ci0gICAgICAgICA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDxUPjo6dmFsdWUsCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19lbnVtPFQ+Ojp2YWx1ZT46OnZhbHVlIAotICAgPiBzZWxlY3RvcjsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgc2VsZWN0b3I6OnRlbXBsYXRlIHJlYmluZDxUPiBiaW5kZXI7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGJpbmRlcjo6dHlwZSB0eXBlOwotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHlwZTo6dmFsdWUpOwotfTsKLQotI2Vsc2UKLQotdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBpc191bnNpZ25lZF9pbXAgOiBwdWJsaWMgZmFsc2VfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3Vuc2lnbmVkX2ltcDx1bnNpZ25lZCBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc191bnNpZ25lZF9pbXA8Y29uc3QgdW5zaWduZWQgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfdW5zaWduZWRfaW1wPHZvbGF0aWxlIHVuc2lnbmVkIGNoYXI+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3Vuc2lnbmVkX2ltcDxjb25zdCB2b2xhdGlsZSB1bnNpZ25lZCBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc191bnNpZ25lZF9pbXA8dW5zaWduZWQgc2hvcnQ+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3Vuc2lnbmVkX2ltcDxjb25zdCB1bnNpZ25lZCBzaG9ydD4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfdW5zaWduZWRfaW1wPHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0PiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc191bnNpZ25lZF9pbXA8Y29uc3Qgdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQ+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3Vuc2lnbmVkX2ltcDx1bnNpZ25lZCBpbnQ+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3Vuc2lnbmVkX2ltcDxjb25zdCB1bnNpZ25lZCBpbnQ+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3Vuc2lnbmVkX2ltcDx2b2xhdGlsZSB1bnNpZ25lZCBpbnQ+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3Vuc2lnbmVkX2ltcDxjb25zdCB2b2xhdGlsZSB1bnNpZ25lZCBpbnQ+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3Vuc2lnbmVkX2ltcDx1bnNpZ25lZCBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc191bnNpZ25lZF9pbXA8Y29uc3QgdW5zaWduZWQgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfdW5zaWduZWRfaW1wPHZvbGF0aWxlIHVuc2lnbmVkIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3Vuc2lnbmVkX2ltcDxjb25zdCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLSNpZmRlZiBORE5CT09TVF9IQVNfTE9OR19MT05HCi10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfdW5zaWduZWRfaW1wPHVuc2lnbmVkIGxvbmcgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfdW5zaWduZWRfaW1wPGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfdW5zaWduZWRfaW1wPHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfdW5zaWduZWRfaW1wPGNvbnN0IHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci0jZW5kaWYKLSNpZiBkZWZpbmVkKENIQVJfTUlOKSAmJiAoQ0hBUl9NSU4gPT0gMCkKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc191bnNpZ25lZF9pbXA8Y2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfdW5zaWduZWRfaW1wPGNvbnN0IGNoYXI+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3Vuc2lnbmVkX2ltcDx2b2xhdGlsZSBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc191bnNpZ25lZF9pbXA8Y29uc3Qgdm9sYXRpbGUgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci0jZW5kaWYKLSNpZiBkZWZpbmVkKFdDSEFSX01JTikgJiYgKFdDSEFSX01JTiA9PSAwKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19JTlRSSU5TSUNfV0NIQVJfVCkKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc191bnNpZ25lZF9pbXA8d2NoYXJfdD4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfdW5zaWduZWRfaW1wPGNvbnN0IHdjaGFyX3Q+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3Vuc2lnbmVkX2ltcDx2b2xhdGlsZSB3Y2hhcl90PiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc191bnNpZ25lZF9pbXA8Y29uc3Qgdm9sYXRpbGUgd2NoYXJfdD4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci0jZW5kaWYKLQotI2VuZGlmCi0KLX0KLQotI2VuZGlmIC8vICFkZWZpbmVkKCBfX0NPREVHRUFSQ19fICkKLQotI2lmIGRlZmluZWQoIF9fQ09ERUdFQVJDX18gKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc191bnNpZ25lZCxULF9faXNfdW5zaWduZWQoVCkpCi0jZWxzZQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc191bnNpZ25lZCxULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfdW5zaWduZWRfaW1wPFQ+Ojp2YWx1ZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfTUVNQkVSX0ZVTkNUSU9OX1BPSU5URVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZpcnR1YWxfYmFzZV9vZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZpcnR1YWxfYmFzZV9vZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxYzNmMjUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc192aXJ0dWFsX2Jhc2Vfb2YuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA0ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IERhbmllbCBGcmV5IGFuZCBSb2JlcnQgUmFtZXkgMjAwOS4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0gCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX1ZJUlRVQUxfQkFTRV9PRl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfVklSVFVBTF9CQVNFX09GX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYmFzZV9vZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL25vdC5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgZGV0YWlsIHsKLQotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKCBwdXNoICkKLSNwcmFnbWEgd2FybmluZyggZGlzYWJsZSA6IDQ1ODQgNDI1MCkKLSNlbGlmIGRlZmluZWQoX19HTlVDX18pICYmIChfX0dOVUNfXyA+PSA0KQotI3ByYWdtYSBHQ0Mgc3lzdGVtX2hlYWRlcgotI2VuZGlmCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEJhc2UsIHR5cGVuYW1lIERlcml2ZWQsIHR5cGVuYW1lIHRhZz4KLXN0cnVjdCBpc192aXJ0dWFsX2Jhc2Vfb2ZfaW1wbAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEJhc2UsIHR5cGVuYW1lIERlcml2ZWQ+Ci1zdHJ1Y3QgaXNfdmlydHVhbF9iYXNlX29mX2ltcGw8QmFzZSwgRGVyaXZlZCwgbXBsOjp0cnVlXz4KLXsKLSNpZmRlZiBfX0JPUkxBTkRDX18KLSAgICBzdHJ1Y3QgYm9vc3RfdHlwZV90cmFpdHNfaW50ZXJuYWxfc3RydWN0X1ggOiBwdWJsaWMgdmlydHVhbCBEZXJpdmVkLCBwdWJsaWMgdmlydHVhbCBCYXNlIAotICAgIHsKLSAgICAgICBib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWCgpOwotICAgICAgIGJvb3N0X3R5cGVfdHJhaXRzX2ludGVybmFsX3N0cnVjdF9YKGNvbnN0IGJvb3N0X3R5cGVfdHJhaXRzX2ludGVybmFsX3N0cnVjdF9YJik7Ci0gICAgICAgYm9vc3RfdHlwZV90cmFpdHNfaW50ZXJuYWxfc3RydWN0X1gmIG9wZXJhdG9yPShjb25zdCBib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWCYpOwotICAgICAgIH5ib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWCgpdGhyb3coKTsKLSAgICB9OwotICAgIHN0cnVjdCBib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWSA6IHB1YmxpYyB2aXJ0dWFsIERlcml2ZWQgCi0gICAgewotICAgICAgIGJvb3N0X3R5cGVfdHJhaXRzX2ludGVybmFsX3N0cnVjdF9ZKCk7Ci0gICAgICAgYm9vc3RfdHlwZV90cmFpdHNfaW50ZXJuYWxfc3RydWN0X1koY29uc3QgYm9vc3RfdHlwZV90cmFpdHNfaW50ZXJuYWxfc3RydWN0X1kmKTsKLSAgICAgICBib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWSYgb3BlcmF0b3I9KGNvbnN0IGJvb3N0X3R5cGVfdHJhaXRzX2ludGVybmFsX3N0cnVjdF9ZJik7Ci0gICAgICAgfmJvb3N0X3R5cGVfdHJhaXRzX2ludGVybmFsX3N0cnVjdF9ZKCl0aHJvdygpOwotICAgIH07Ci0jZWxzZQotICAgIHN0cnVjdCBib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWCA6IHB1YmxpYyBEZXJpdmVkLCB2aXJ0dWFsIEJhc2UgCi0gICAgewotICAgICAgIGJvb3N0X3R5cGVfdHJhaXRzX2ludGVybmFsX3N0cnVjdF9YKCk7Ci0gICAgICAgYm9vc3RfdHlwZV90cmFpdHNfaW50ZXJuYWxfc3RydWN0X1goY29uc3QgYm9vc3RfdHlwZV90cmFpdHNfaW50ZXJuYWxfc3RydWN0X1gmKTsKLSAgICAgICBib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWCYgb3BlcmF0b3I9KGNvbnN0IGJvb3N0X3R5cGVfdHJhaXRzX2ludGVybmFsX3N0cnVjdF9YJik7Ci0gICAgICAgfmJvb3N0X3R5cGVfdHJhaXRzX2ludGVybmFsX3N0cnVjdF9YKCl0aHJvdygpOwotICAgIH07Ci0gICAgc3RydWN0IGJvb3N0X3R5cGVfdHJhaXRzX2ludGVybmFsX3N0cnVjdF9ZIDogcHVibGljIERlcml2ZWQgCi0gICAgewotICAgICAgIGJvb3N0X3R5cGVfdHJhaXRzX2ludGVybmFsX3N0cnVjdF9ZKCk7Ci0gICAgICAgYm9vc3RfdHlwZV90cmFpdHNfaW50ZXJuYWxfc3RydWN0X1koY29uc3QgYm9vc3RfdHlwZV90cmFpdHNfaW50ZXJuYWxfc3RydWN0X1kmKTsKLSAgICAgICBib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWSYgb3BlcmF0b3I9KGNvbnN0IGJvb3N0X3R5cGVfdHJhaXRzX2ludGVybmFsX3N0cnVjdF9ZJik7Ci0gICAgICAgfmJvb3N0X3R5cGVfdHJhaXRzX2ludGVybmFsX3N0cnVjdF9ZKCl0aHJvdygpOwotICAgIH07Ci0jZW5kaWYKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoc2l6ZW9mKGJvb3N0X3R5cGVfdHJhaXRzX2ludGVybmFsX3N0cnVjdF9YKT09c2l6ZW9mKGJvb3N0X3R5cGVfdHJhaXRzX2ludGVybmFsX3N0cnVjdF9ZKSkpOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQmFzZSwgdHlwZW5hbWUgRGVyaXZlZD4KLXN0cnVjdCBpc192aXJ0dWFsX2Jhc2Vfb2ZfaW1wbDIKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjphbmRfPGlzX2Jhc2Vfb2Y8QmFzZSwgRGVyaXZlZD4sIG1wbDo6bm90Xzxpc19zYW1lPEJhc2UsIERlcml2ZWQ+ID4gPjo6dHlwZSB0YWdfdHlwZTsKLSAgIHR5cGVkZWYgaXNfdmlydHVhbF9iYXNlX29mX2ltcGw8QmFzZSwgRGVyaXZlZCwgdGFnX3R5cGU+IGltcDsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGltcDo6dmFsdWUpOwotfTsKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyggcG9wICkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMigKLSAgICAgIGlzX3ZpcnR1YWxfYmFzZV9vZgotICAgICAgICwgQmFzZQotICAgICAgICwgRGVyaXZlZAotICAgICAgICwgKDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfdmlydHVhbF9iYXNlX29mX2ltcGwyPEJhc2UsRGVyaXZlZD46OnZhbHVlKSAKLSkKLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMyXzIodHlwZW5hbWUgQmFzZSx0eXBlbmFtZSBEZXJpdmVkLGlzX3ZpcnR1YWxfYmFzZV9vZixCYXNlJixEZXJpdmVkLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMl8yKHR5cGVuYW1lIEJhc2UsdHlwZW5hbWUgRGVyaXZlZCxpc192aXJ0dWFsX2Jhc2Vfb2YsQmFzZSxEZXJpdmVkJixmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzJfMih0eXBlbmFtZSBCYXNlLHR5cGVuYW1lIERlcml2ZWQsaXNfdmlydHVhbF9iYXNlX29mLEJhc2UmLERlcml2ZWQmLGZhbHNlKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2lkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9pZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1YzZjM2IuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2lkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfVk9JRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfVk9JRF9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLS8vKiBpcyBhIHR5cGUgVCB2b2lkIC0gaXNfdm9pZDxUPgotI2lmIGRlZmluZWQoIF9fQ09ERUdFQVJDX18gKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc192b2lkLFQsX19pc192b2lkKFQpKQotI2Vsc2UKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfdm9pZCxULGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaXNfdm9pZCx2b2lkLHRydWUpCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGlzX3ZvaWQsdm9pZCBjb25zdCx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaXNfdm9pZCx2b2lkIHZvbGF0aWxlLHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShpc192b2lkLHZvaWQgY29uc3Qgdm9sYXRpbGUsdHJ1ZSkKLSNlbmRpZgotCi0jZW5kaWYgIC8vIG5vbi1Db2RlR2VhciBpbXBsZW1lbnRhdGlvbgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfVk9JRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9sYXRpbGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2xhdGlsZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4YTRlNDYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2xhdGlsZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTIgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBEYXZlIEFicmFoYW1zLCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCAKLS8vICAgICAgSG93YXJkIEhpbm5hbnQgYW5kIEpvaG4gTWFkZG9jayAyMDAwLiAKLS8vICAoQykgQ29weXJpZ2h0IE1hdCBNYXJjdXMsIEplc3NlIEpvbmVzIGFuZCBBZG9iZSBTeXN0ZW1zIEluYyAyMDAxCi0KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLS8vICAgIEZpeGVkIGlzX3BvaW50ZXIsIGlzX3JlZmVyZW5jZSwgaXNfY29uc3QsIGlzX3ZvbGF0aWxlLCBpc19zYW1lLCAKLS8vICAgIGlzX21lbWJlcl9wb2ludGVyIGJhc2VkIG9uIHRoZSBTaW11bGF0ZWQgUGFydGlhbCBTcGVjaWFsaXphdGlvbiB3b3JrIAotLy8gICAgb2YgTWF0IE1hcmN1cyBhbmQgSmVzc2UgSm9uZXMuIFNlZSAgaHR0cDovL29wZW5zb3VyY2UuYWRvYmUuY29tIG9yIAotLy8gICAgaHR0cDovL2dyb3Vwcy55YWhvby5jb20vZ3JvdXAvYm9vc3QvbWVzc2FnZS81NDQxIAotLy8gICAgU29tZSB3b3JrYXJvdW5kcyBpbiBoZXJlIHVzZSBpZGVhcyBzdWdnZXN0ZWQgZnJvbSAiR2VuZXJpYzxQcm9ncmFtbWluZz46IAotLy8gICAgTWFwcGluZ3MgYmV0d2VlbiBUeXBlcyBhbmQgVmFsdWVzIiAKLS8vICAgIGJ5IEFuZHJlaSBBbGV4YW5kcmVzY3UgKHNlZSBodHRwOi8vd3d3LmN1ai5jb20vZXhwZXJ0cy8xODEwL2FsZXhhbmRyLmh0bWwpLgotCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfVk9MQVRJTEVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX1ZPTEFUSUxFX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9jdl90cmFpdHNfaW1wbC5ocHA+Ci0jICAgaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDE0MDApCi0jICAgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9ib3VuZHMuaHBwPgotIyAgIGVuZGlmCi0jZWxzZQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3JlZmVyZW5jZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC95ZXNfbm9fdHlwZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ZhbHNlX3Jlc3VsdC5ocHA+Ci0jZW5kaWYKLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRldGFpbHsKLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3ZvbGF0aWxlX3J2YWxfZmlsdGVyCi17Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDE0MDApCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmN2X3RyYWl0c19pbXA8dHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9ib3VuZHM8VD46OnR5cGUqPjo6aXNfdm9sYXRpbGUpOwotI2Vsc2UKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6Y3ZfdHJhaXRzX2ltcDxUKj46OmlzX3ZvbGF0aWxlKTsKLSNlbmRpZgotfTsKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLS8vCi0vLyBXZSBjYW4ndCBmaWx0ZXIgb3V0IHJ2YWx1ZV9yZWZlcmVuY2VzIGF0IHRoZSBzYW1lIGxldmVsIGFzCi0vLyByZWZlcmVuY2VzIG9yIHdlIGdldCBhbWJpZ3VpdGllcyBmcm9tIG1zdmM6Ci0vLwotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfdm9sYXRpbGVfcnZhbF9maWx0ZXI8VCYmPgotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotfTsKLSNlbmRpZgotfQotCi0jaWYgZGVmaW5lZCggX19DT0RFR0VBUkNfXyApCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX3ZvbGF0aWxlLFQsX19pc192b2xhdGlsZShUKSkKLSNlbGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLS8vKiBpcyBhIHR5cGUgVCBkZWNsYXJlZCB2b2xhdGlsZSAtIGlzX3ZvbGF0aWxlPFQ+Ci1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX3ZvbGF0aWxlLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjppc192b2xhdGlsZV9ydmFsX2ZpbHRlcjxUPjo6dmFsdWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxpc192b2xhdGlsZSxUJixmYWxzZSkKLQotI2lmICBkZWZpbmVkKE5ETkJPT1NUX0lMTEVHQUxfQ1ZfUkVGRVJFTkNFUykKLS8vIHRoZXNlIGFyZSBpbGxlZ2FsIHNwZWNpYWxpc2F0aW9uczsgY3YtcXVhbGlmaWVzIGFwcGxpZWQgdG8KLS8vIHJlZmVyZW5jZXMgaGF2ZSBubyBlZmZlY3QgYWNjb3JkaW5nIHRvIFs4LjMuMnAxXSwKLS8vIEMrKyBCdWlsZGVyIHJlcXVpcmVzIHRoZW0gdGhvdWdoIGFzIGl0IHRyZWF0cyBjdi1xdWFsaWZpZWQKLS8vIHJlZmVyZW5jZXMgYXMgZGlzdGluY3QgdHlwZXMuLi4KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULGlzX3ZvbGF0aWxlLFQmIGNvbnN0LGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsaXNfdm9sYXRpbGUsVCYgdm9sYXRpbGUsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxpc192b2xhdGlsZSxUJiBjb25zdCB2b2xhdGlsZSxmYWxzZSkKLSNlbmRpZgotCi0jZWxzZQotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdXNpbmcgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlOwotdXNpbmcgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Om5vX3R5cGU7Ci0KLXllc190eXBlIGlzX3ZvbGF0aWxlX3Rlc3Rlcih2b2lkIGNvbnN0IHZvbGF0aWxlKik7Ci1ub190eXBlIGlzX3ZvbGF0aWxlX3Rlc3Rlcih2b2lkIGNvbnN0Kik7Ci0KLXRlbXBsYXRlIDxib29sIGlzX3JlZiwgYm9vbCBhcnJheT4KLXN0cnVjdCBpc192b2xhdGlsZV9oZWxwZXIKLSAgICA6IHB1YmxpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6ZmFsc2VfcmVzdWx0Ci17Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGlzX3ZvbGF0aWxlX2hlbHBlcjxmYWxzZSxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHN0YXRpYyBUKiB0OwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoCi0gICAgICAgICAgICBzaXplb2YobmRuYm9vc3Q6OmRldGFpbDo6eWVzX3R5cGUpID09IHNpemVvZihuZG5ib29zdDo6ZGV0YWlsOjppc192b2xhdGlsZV90ZXN0ZXIodCkpCi0gICAgICAgICAgICApKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBpc192b2xhdGlsZV9oZWxwZXI8ZmFsc2UsdHJ1ZT4KLXsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHN0YXRpYyBUIHQ7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9ICgKLSAgICAgICAgICAgIHNpemVvZihuZG5ib29zdDo6ZGV0YWlsOjp5ZXNfdHlwZSkgPT0gc2l6ZW9mKG5kbmJvb3N0OjpkZXRhaWw6OmlzX3ZvbGF0aWxlX3Rlc3RlcigmdCkpCi0gICAgICAgICAgICApKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfdm9sYXRpbGVfaW1wbAotICAgIDogcHVibGljIGlzX3ZvbGF0aWxlX2hlbHBlcjwKLSAgICAgICAgICBpc19yZWZlcmVuY2U8VD46OnZhbHVlCi0gICAgICAgICwgaXNfYXJyYXk8VD46OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88VD4KLXsKLX07Ci0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfdm9sYXRpbGUsdm9pZCxmYWxzZSkKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfdm9sYXRpbGUsdm9pZCBjb25zdCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfdm9sYXRpbGUsdm9pZCB2b2xhdGlsZSx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc192b2xhdGlsZSx2b2lkIGNvbnN0IHZvbGF0aWxlLHRydWUpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLS8vKiBpcyBhIHR5cGUgVCBkZWNsYXJlZCB2b2xhdGlsZSAtIGlzX3ZvbGF0aWxlPFQ+Ci1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX3ZvbGF0aWxlLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjppc192b2xhdGlsZV9pbXBsPFQ+Ojp2YWx1ZSkKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX1ZPTEFUSUxFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tYWtlX3NpZ25lZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL21ha2Vfc2lnbmVkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGVkMDdmMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL21ha2Vfc2lnbmVkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1MyArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDA3LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9NQUtFX1NJR05FRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfTUFLRV9TSUdORURfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2ludGVncmFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zaWduZWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3Vuc2lnbmVkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19lbnVtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2xhdGlsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX2NvbnN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfdm9sYXRpbGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2VfYW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX25vdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBtYWtlX3NpZ25lZF9pbXAKLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoCi0gICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlLCA6Om5kbmJvb3N0Ojppc19lbnVtPFQ+Ojp2YWx1ZT46OnZhbHVlKSk7Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0xMzAwKQotICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgKLSAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfc2FtZTwKLSAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV9jdjxUPjo6dHlwZSwgYm9vbD46OnZhbHVlPjo6dmFsdWUpKTsKLSNlbmRpZgotCi0gICB0eXBlZGVmIHR5cGVuYW1lIHJlbW92ZV9jdjxUPjo6dHlwZSB0X25vX2N2OwotICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmX2M8Ci0gICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8IAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfc2lnbmVkPFQ+Ojp2YWx1ZSwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZSwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19zYW1lPHRfbm9fY3YsIGNoYXI+Ojp2YWx1ZT46OnZhbHVlLAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3NhbWU8dF9ub19jdiwgd2NoYXJfdD46OnZhbHVlPjo6dmFsdWUsCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfc2FtZTx0X25vX2N2LCBib29sPjo6dmFsdWU+Ojp2YWx1ZSA+Ojp2YWx1ZSksCi0gICAgICBULAotICAgICAgdHlwZW5hbWUgbXBsOjppZl9jPAotICAgICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPCAKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZSwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19zYW1lPHRfbm9fY3YsIGNoYXI+Ojp2YWx1ZT46OnZhbHVlLAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3NhbWU8dF9ub19jdiwgd2NoYXJfdD46OnZhbHVlPjo6dmFsdWUsCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfc2FtZTx0X25vX2N2LCBib29sPjo6dmFsdWU+Ojp2YWx1ZT4KLSAgICAgICAgIDo6dmFsdWUpLAotICAgICAgICAgdHlwZW5hbWUgbXBsOjppZl88Ci0gICAgICAgICAgICBpc19zYW1lPHRfbm9fY3YsIHVuc2lnbmVkIGNoYXI+LAotICAgICAgICAgICAgc2lnbmVkIGNoYXIsCi0gICAgICAgICAgICB0eXBlbmFtZSBtcGw6OmlmXzwKLSAgICAgICAgICAgICAgIGlzX3NhbWU8dF9ub19jdiwgdW5zaWduZWQgc2hvcnQ+LAotICAgICAgICAgICAgICAgc2lnbmVkIHNob3J0LAotICAgICAgICAgICAgICAgdHlwZW5hbWUgbXBsOjppZl88Ci0gICAgICAgICAgICAgICAgICBpc19zYW1lPHRfbm9fY3YsIHVuc2lnbmVkIGludD4sCi0gICAgICAgICAgICAgICAgICBpbnQsCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBtcGw6OmlmXzwKLSAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8dF9ub19jdiwgdW5zaWduZWQgbG9uZz4sCi0gICAgICAgICAgICAgICAgICAgICBsb25nLAotI2lmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykKLSNpZmRlZiBORE5CT09TVF9IQVNfSU5UMTI4Ci0gICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBtcGw6OmlmX2M8Ci0gICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodF9ub19jdikgPT0gc2l6ZW9mKG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSksIAotICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjppbnQxMjhfdHlwZQotICAgICAgICAgICAgICAgICAgICAgPjo6dHlwZQotI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZQotI2VuZGlmCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19NU19JTlQ2NCkKLSAgICAgICAgICAgICAgICAgICAgIF9faW50NjQKLSNlbHNlCi0gICAgICAgICAgICAgICAgICAgICBsb25nCi0jZW5kaWYKLSAgICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgID46OnR5cGUsCi0gICAgICAgICAvLyBOb3QgYSByZWd1bGFyIGludGVnZXIgdHlwZToKLSAgICAgICAgIHR5cGVuYW1lIG1wbDo6aWZfYzwKLSAgICAgICAgICAgIHNpemVvZih0X25vX2N2KSA9PSBzaXplb2YodW5zaWduZWQgY2hhciksCi0gICAgICAgICAgICBzaWduZWQgY2hhciwKLSAgICAgICAgICAgIHR5cGVuYW1lIG1wbDo6aWZfYzwKLSAgICAgICAgICAgICAgIHNpemVvZih0X25vX2N2KSA9PSBzaXplb2YodW5zaWduZWQgc2hvcnQpLAotICAgICAgICAgICAgICAgc2lnbmVkIHNob3J0LAotICAgICAgICAgICAgICAgdHlwZW5hbWUgbXBsOjppZl9jPAotICAgICAgICAgICAgICAgICAgc2l6ZW9mKHRfbm9fY3YpID09IHNpemVvZih1bnNpZ25lZCBpbnQpLAotICAgICAgICAgICAgICAgICAgaW50LAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgbXBsOjppZl9jPAotICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHRfbm9fY3YpID09IHNpemVvZih1bnNpZ25lZCBsb25nKSwKLSAgICAgICAgICAgICAgICAgICAgIGxvbmcsCi0jaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKQotI2lmZGVmIE5ETkJPT1NUX0hBU19JTlQxMjgKLSAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIG1wbDo6aWZfYzwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih0X25vX2N2KSA9PSBzaXplb2YobmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmludDEyOF90eXBlCi0gICAgICAgICAgICAgICAgICAgICA+Ojp0eXBlCi0jZWxzZQotICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlCi0jZW5kaWYKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX01TX0lOVDY0KQotICAgICAgICAgICAgICAgICAgICAgX19pbnQ2NAotI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgIGxvbmcKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgPjo6dHlwZQotICAgICAgPjo6dHlwZQotICAgPjo6dHlwZSBiYXNlX2ludGVnZXJfdHlwZTsKLSAgIAotICAgLy8gQWRkIGJhY2sgYW55IGNvbnN0IHF1YWxpZmllcjoKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl88Ci0gICAgICBpc19jb25zdDxUPiwKLSAgICAgIHR5cGVuYW1lIGFkZF9jb25zdDxiYXNlX2ludGVnZXJfdHlwZT46OnR5cGUsCi0gICAgICBiYXNlX2ludGVnZXJfdHlwZQotICAgPjo6dHlwZSBjb25zdF9iYXNlX2ludGVnZXJfdHlwZTsKLSAgIAotICAgLy8gQWRkIGJhY2sgYW55IHZvbGF0aWxlIHF1YWxpZmllcjoKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl88Ci0gICAgICBpc192b2xhdGlsZTxUPiwKLSAgICAgIHR5cGVuYW1lIGFkZF92b2xhdGlsZTxjb25zdF9iYXNlX2ludGVnZXJfdHlwZT46OnR5cGUsCi0gICAgICBjb25zdF9iYXNlX2ludGVnZXJfdHlwZQotICAgPjo6dHlwZSB0eXBlOwotfTsKLQotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfREVGMShtYWtlX3NpZ25lZCxULHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6Om1ha2Vfc2lnbmVkX2ltcDxUPjo6dHlwZSkKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0FERF9SRUZFUkVOQ0VfSFBQX0lOQ0xVREVECi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbWFrZV91bnNpZ25lZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL21ha2VfdW5zaWduZWQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNGIxZGNhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbWFrZV91bnNpZ25lZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTMgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwNy4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTUFLRV9VTlNJR05FRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfTUFLRV9VTlNJR05FRF9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfaW50ZWdyYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NpZ25lZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdW5zaWduZWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2VudW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29uc3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvbGF0aWxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfY29uc3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF92b2xhdGlsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9vci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9hbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfbm90LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IG1ha2VfdW5zaWduZWRfaW1wCi17Ci0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKAotICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8IDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZSwgOjpuZG5ib29zdDo6aXNfZW51bTxUPjo6dmFsdWU+Ojp2YWx1ZSkpOwotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9MTMwMCkKLSAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoCi0gICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3NhbWU8Ci0gICAgICAgICB0eXBlbmFtZSByZW1vdmVfY3Y8VD46OnR5cGUsIGJvb2w+Ojp2YWx1ZT46OnZhbHVlKSk7Ci0jZW5kaWYKLQotICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfY3Y8VD46OnR5cGUgdF9ub19jdjsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl9jPAotICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPCAKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3Vuc2lnbmVkPFQ+Ojp2YWx1ZSwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZSwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19zYW1lPHRfbm9fY3YsIGNoYXI+Ojp2YWx1ZT46OnZhbHVlLAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3NhbWU8dF9ub19jdiwgd2NoYXJfdD46OnZhbHVlPjo6dmFsdWUsCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfc2FtZTx0X25vX2N2LCBib29sPjo6dmFsdWU+Ojp2YWx1ZSA+Ojp2YWx1ZSksCi0gICAgICBULAotICAgICAgdHlwZW5hbWUgbXBsOjppZl9jPAotICAgICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPCAKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZSwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19zYW1lPHRfbm9fY3YsIGNoYXI+Ojp2YWx1ZT46OnZhbHVlLAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3NhbWU8dF9ub19jdiwgd2NoYXJfdD46OnZhbHVlPjo6dmFsdWUsCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfc2FtZTx0X25vX2N2LCBib29sPjo6dmFsdWU+Ojp2YWx1ZT4KLSAgICAgICAgIDo6dmFsdWUpLAotICAgICAgICAgdHlwZW5hbWUgbXBsOjppZl88Ci0gICAgICAgICAgICBpc19zYW1lPHRfbm9fY3YsIHNpZ25lZCBjaGFyPiwKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIsCi0gICAgICAgICAgICB0eXBlbmFtZSBtcGw6OmlmXzwKLSAgICAgICAgICAgICAgIGlzX3NhbWU8dF9ub19jdiwgc2hvcnQ+LAotICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQsCi0gICAgICAgICAgICAgICB0eXBlbmFtZSBtcGw6OmlmXzwKLSAgICAgICAgICAgICAgICAgIGlzX3NhbWU8dF9ub19jdiwgaW50PiwKLSAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTx0X25vX2N2LCBsb25nPiwKLSAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcsCi0jaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKQotI2lmZGVmIE5ETkJPT1NUX0hBU19JTlQxMjgKLSAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIG1wbDo6aWZfYzwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih0X25vX2N2KSA9PSBzaXplb2YobmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZSksIAotICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dWludDEyOF90eXBlCi0gICAgICAgICAgICAgICAgICAgICA+Ojp0eXBlCi0jZWxzZQotICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZQotI2VuZGlmCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19NU19JTlQ2NCkKLSAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIF9faW50NjQKLSNlbHNlCi0gICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nCi0jZW5kaWYKLSAgICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgID46OnR5cGUsCi0gICAgICAgICAvLyBOb3QgYSByZWd1bGFyIGludGVnZXIgdHlwZToKLSAgICAgICAgIHR5cGVuYW1lIG1wbDo6aWZfYzwKLSAgICAgICAgICAgIHNpemVvZih0X25vX2N2KSA9PSBzaXplb2YodW5zaWduZWQgY2hhciksCi0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyLAotICAgICAgICAgICAgdHlwZW5hbWUgbXBsOjppZl9jPAotICAgICAgICAgICAgICAgc2l6ZW9mKHRfbm9fY3YpID09IHNpemVvZih1bnNpZ25lZCBzaG9ydCksCi0gICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCwKLSAgICAgICAgICAgICAgIHR5cGVuYW1lIG1wbDo6aWZfYzwKLSAgICAgICAgICAgICAgICAgIHNpemVvZih0X25vX2N2KSA9PSBzaXplb2YodW5zaWduZWQgaW50KSwKLSAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIG1wbDo6aWZfYzwKLSAgICAgICAgICAgICAgICAgICAgIHNpemVvZih0X25vX2N2KSA9PSBzaXplb2YodW5zaWduZWQgbG9uZyksCi0gICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nLAotI2lmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykKLSNpZmRlZiBORE5CT09TVF9IQVNfSU5UMTI4Ci0gICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBtcGw6OmlmX2M8Ci0gICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodF9ub19jdikgPT0gc2l6ZW9mKG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVpbnQxMjhfdHlwZQotICAgICAgICAgICAgICAgICAgICAgPjo6dHlwZQotI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUKLSNlbmRpZgotI2VsaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTVNfSU5UNjQpCi0gICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBfX2ludDY0Ci0jZWxzZQotICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZwotI2VuZGlmCi0gICAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICA+Ojp0eXBlCi0gICAgICA+Ojp0eXBlCi0gICA+Ojp0eXBlIGJhc2VfaW50ZWdlcl90eXBlOwotICAgCi0gICAvLyBBZGQgYmFjayBhbnkgY29uc3QgcXVhbGlmaWVyOgotICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzwKLSAgICAgIGlzX2NvbnN0PFQ+LAotICAgICAgdHlwZW5hbWUgYWRkX2NvbnN0PGJhc2VfaW50ZWdlcl90eXBlPjo6dHlwZSwKLSAgICAgIGJhc2VfaW50ZWdlcl90eXBlCi0gICA+Ojp0eXBlIGNvbnN0X2Jhc2VfaW50ZWdlcl90eXBlOwotICAgCi0gICAvLyBBZGQgYmFjayBhbnkgdm9sYXRpbGUgcXVhbGlmaWVyOgotICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzwKLSAgICAgIGlzX3ZvbGF0aWxlPFQ+LAotICAgICAgdHlwZW5hbWUgYWRkX3ZvbGF0aWxlPGNvbnN0X2Jhc2VfaW50ZWdlcl90eXBlPjo6dHlwZSwKLSAgICAgIGNvbnN0X2Jhc2VfaW50ZWdlcl90eXBlCi0gICA+Ojp0eXBlIHR5cGU7Ci19OwotCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9ERUYxKG1ha2VfdW5zaWduZWQsVCx0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjptYWtlX3Vuc2lnbmVkX2ltcDxUPjo6dHlwZSkKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0FERF9SRUZFUkVOQ0VfSFBQX0lOQ0xVREVECi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy9yZW1vdmVfYWxsX2V4dGVudHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV9hbGxfZXh0ZW50cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzYTljNzYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV9hbGxfZXh0ZW50cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDQgUGVkZXIgSG9sdAotLy8gVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAuIChodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRV9UUkFJVFNfTVNWQ19SRU1PVkVfQUxMX0VYVEVOVF9IT0xUXzIwMDRfMDgyNwotI2RlZmluZSBORE5CT09TVF9UWVBFX1RSQUlUU19NU1ZDX1JFTU9WRV9BTExfRVhURU5UX0hPTFRfMjAwNF8wODI3Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3R5cGVvZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IHJlbW92ZV9hbGxfZXh0ZW50czsKLQotICAgIG5hbWVzcGFjZSBkZXRhaWwgewotICAgICAgICB0ZW1wbGF0ZTxib29sIElzQXJyYXk+Ci0gICAgICAgIHN0cnVjdCByZW1vdmVfYWxsX2V4dGVudHNfaW1wbF90eXBlb2YgewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByZW1vdmVfYWxsX2V4dGVudHNfaW1wbF90eXBlb2Y8dHJ1ZT4gewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFUsSUQ+IHRlc3QoVVtdKTsKLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFQsSUQ+IHRlc3QoLi4uKTsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQscmVnaXN0ZXJfdGVzdD1zaXplb2YodGVzdCggKigoVCopTlVMTCkgKSApKTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfZXh0cmFjdF90eXBlPElEPjo6aWQydHlwZTo6dHlwZSByZWR1Y2VkX3R5cGU7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfYWxsX2V4dGVudHM8cmVkdWNlZF90eXBlPjo6dHlwZSB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICB9IC8vbmFtZXNwYWNlIGRldGFpbAotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgcmVtb3ZlX2FsbF9leHRlbnRzIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpyZW1vdmVfYWxsX2V4dGVudHNfaW1wbF90eXBlb2Y8Ci0gICAgICAgICAgICBuZG5ib29zdDo6aXNfYXJyYXk8VD46OnZhbHVlICAgICAgICAgICAgICAgIAotICAgICAgICA+Ojp0ZW1wbGF0ZSBpbm5lcjxULHJlbW92ZV9hbGxfZXh0ZW50czxUPiA+Ojp0eXBlIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSxyZW1vdmVfYWxsX2V4dGVudHMsVCkKLSAgICB9OwotfSAvL25hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy9ORE5CT09TVF9UWVBFX1RSQUlUU19NU1ZDX1JFTU9WRV9CT1VORFNfSE9MVF8yMDA0XzA4MjcKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV9ib3VuZHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV9ib3VuZHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNzdlNzY3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy9yZW1vdmVfYm91bmRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNCBQZWRlciBIb2x0Ci0vLyBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFX1RSQUlUU19NU1ZDX1JFTU9WRV9CT1VORFNfSE9MVF8yMDA0XzA4MjcKLSNkZWZpbmUgTkROQk9PU1RfVFlQRV9UUkFJVFNfTVNWQ19SRU1PVkVfQk9VTkRTX0hPTFRfMjAwNF8wODI3Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3R5cGVvZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIG5hbWVzcGFjZSBkZXRhaWwgewotICAgICAgICB0ZW1wbGF0ZTxib29sIElzQXJyYXk+Ci0gICAgICAgIHN0cnVjdCByZW1vdmVfYm91bmRzX2ltcGxfdHlwZW9mIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX2JvdW5kc19pbXBsX3R5cGVvZjx0cnVlPiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIElEPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VSxJRD4gdGVzdChVW10pOwotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxJRD4gdGVzdCguLi4pOwotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxyZWdpc3Rlcl90ZXN0PXNpemVvZih0ZXN0KCAqKChUKilOVUxMKSApICkpOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8SUQ+OjppZDJ0eXBlOjp0eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgIH0gLy9uYW1lc3BhY2UgZGV0YWlsCi0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0cnVjdCByZW1vdmVfYm91bmRzIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpyZW1vdmVfYm91bmRzX2ltcGxfdHlwZW9mPAotICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX2FycmF5PFQ+Ojp2YWx1ZSAgICAgICAgICAgICAgICAKLSAgICAgICAgPjo6dGVtcGxhdGUgaW5uZXI8VCxyZW1vdmVfYm91bmRzPFQ+ID46OnR5cGUgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLHJlbW92ZV9ib3VuZHMsVCkKLSAgICB9OwotfSAvL25hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy9ORE5CT09TVF9UWVBFX1RSQUlUU19NU1ZDX1JFTU9WRV9CT1VORFNfSE9MVF8yMDA0XzA4MjcKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV9jb25zdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvcmVtb3ZlX2NvbnN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGYzYjlhNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvcmVtb3ZlX2NvbnN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MyArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDQgUGVkZXIgSG9sdAotLy8gVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAuIChodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRV9UUkFJVFNfTVNWQ19SRU1PVkVfQ09OU1RfSE9MVF8yMDA0XzA4MjgKLSNkZWZpbmUgTkROQk9PU1RfVFlQRV9UUkFJVFNfTVNWQ19SRU1PVkVfQ09OU1RfSE9MVF8yMDA0XzA4MjgKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvdHlwZW9mLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2xhdGlsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29uc3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FycmF5LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICBuYW1lc3BhY2UgZGV0YWlsIHsKLSAgICAgICAgdGVtcGxhdGU8Ym9vbCBJc1BvaW50ZXIsYm9vbCBJc0FycmF5LGJvb2wgSXNDb25zdCxib29sIElzVm9sYXRpbGU+Ci0gICAgICAgIHN0cnVjdCByZW1vdmVfY29uc3RfaW1wbF90eXBlb2YgewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgICAgIHN0cnVjdCB0cmFuc2Zvcm1fdHlwZSB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgICAgICB0ZW1wbGF0ZTw+IC8vQ29uc3QKLSAgICAgICAgc3RydWN0IHJlbW92ZV9jb25zdF9pbXBsX3R5cGVvZjxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlPiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIElEPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VSxJRD4gdGVzdChVIGNvbnN0JigqKSgpKTsKLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFQsSUQ+IHRlc3QoLi4uKTsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQscmVnaXN0ZXJfdGVzdD1zaXplb2YodGVzdCggKFQoKikoKSkoTlVMTCkgKSApKTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfZXh0cmFjdF90eXBlPElEPjo6aWQydHlwZTo6dHlwZSB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgdHJhbnNmb3JtX3R5cGUgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCYgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPD4gLy9DVgotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX2NvbnN0X2ltcGxfdHlwZW9mPGZhbHNlLGZhbHNlLHRydWUsdHJ1ZT4gewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFUgdm9sYXRpbGUsSUQ+IHRlc3QoVSBjb25zdCB2b2xhdGlsZSYoKikoKSk7Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxULElEPiB0ZXN0KC4uLik7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHJlZ2lzdGVyX3Rlc3Q9c2l6ZW9mKHRlc3QoIChUKCopKCkpKE5VTEwpICkgKSk7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2V4dHJhY3RfdHlwZTxJRD46OmlkMnR5cGU6OnR5cGUgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICAgICAgc3RydWN0IHRyYW5zZm9ybV90eXBlIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQmIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgICAgICB0ZW1wbGF0ZTw+IC8vQ29uc3QgUG9pbnRlcgotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX2NvbnN0X2ltcGxfdHlwZW9mPHRydWUsZmFsc2UsdHJ1ZSxmYWxzZT4gewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFUsSUQ+IHRlc3Qodm9pZCgqKShVIGNvbnN0W10pKTsKLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFQsSUQ+IHRlc3QoLi4uKTsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQscmVnaXN0ZXJfdGVzdD1zaXplb2YodGVzdCggKHZvaWQoKikoVCkpKE5VTEwpICkgKSk7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2V4dHJhY3RfdHlwZTxJRD46OmlkMnR5cGU6OnR5cGUgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICAgICAgc3RydWN0IHRyYW5zZm9ybV90eXBlIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQgdHlwZVtdOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgdGVtcGxhdGU8PiAvL0NWIFBvaW50ZXIKLSAgICAgICAgc3RydWN0IHJlbW92ZV9jb25zdF9pbXBsX3R5cGVvZjx0cnVlLGZhbHNlLHRydWUsdHJ1ZT4gewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFUgdm9sYXRpbGUsSUQ+IHRlc3Qodm9pZCgqKShVIGNvbnN0IHZvbGF0aWxlW10pKTsKLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFQsSUQ+IHRlc3QoLi4uKTsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQscmVnaXN0ZXJfdGVzdD1zaXplb2YodGVzdCggKHZvaWQoKikoVCkpKE5VTEwpICkgKSk7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2V4dHJhY3RfdHlwZTxJRD46OmlkMnR5cGU6OnR5cGUgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICAgICAgc3RydWN0IHRyYW5zZm9ybV90eXBlIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQgdHlwZVtdOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsgICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTw+IC8vQ29uc3QgQXJyYXkKLSAgICAgICAgc3RydWN0IHJlbW92ZV9jb25zdF9pbXBsX3R5cGVvZjxmYWxzZSx0cnVlLHRydWUsZmFsc2U+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCx2YWx1ZT0oc2l6ZW9mKFQpL3NpemVvZigoKigoVCopTlVMTCkpWzBdKSkpOwotCi0gICAgICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFVbdmFsdWVdLElEPiB0ZXN0KHZvaWQoKikoVSBjb25zdFtdKSk7Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxULElEPiB0ZXN0KC4uLik7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHJlZ2lzdGVyX3Rlc3Q9c2l6ZW9mKHRlc3QoICh2b2lkKCopKFQpKShOVUxMKSApICkpOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8SUQ+OjppZDJ0eXBlOjp0eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgICAgIHN0cnVjdCB0cmFuc2Zvcm1fdHlwZSB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPD4gLy9DViBBcnJheQotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX2NvbnN0X2ltcGxfdHlwZW9mPGZhbHNlLHRydWUsdHJ1ZSx0cnVlPiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIElEPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsdmFsdWU9KHNpemVvZihUKS9zaXplb2YoKCooKFQqKU5VTEwpKVswXSkpKTsKLQotICAgICAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxVIHZvbGF0aWxlW3ZhbHVlXSxJRD4gdGVzdCh2b2lkKCopKFUgY29uc3Qgdm9sYXRpbGVbXSkpOwotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxJRD4gdGVzdCguLi4pOwotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxyZWdpc3Rlcl90ZXN0PXNpemVvZih0ZXN0KCAodm9pZCgqKShUKSkoTlVMTCkgKSApKTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfZXh0cmFjdF90eXBlPElEPjo6aWQydHlwZTo6dHlwZSB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgdHJhbnNmb3JtX3R5cGUgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLQotICAgIH0gLy9uYW1lc3BhY2UgZGV0YWlsCi0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0cnVjdCByZW1vdmVfY29uc3QgewotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjpkZXRhaWw6OnJlbW92ZV9jb25zdF9pbXBsX3R5cGVvZjwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojppc19wb2ludGVyPFQ+Ojp2YWx1ZSwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojppc19hcnJheTxUPjo6dmFsdWUsCi0gICAgICAgICAgICBuZG5ib29zdDo6aXNfY29uc3Q8VD46OnZhbHVlLAotICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX3ZvbGF0aWxlPFQ+Ojp2YWx1ZQotICAgICAgICA+IHJlbW92ZV9jb25zdF90eXBlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIAotICAgICAgICAgICAgcmVtb3ZlX2NvbnN0X3R5cGU6OnRlbXBsYXRlIGlubmVyPAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV9jb25zdF90eXBlOjp0ZW1wbGF0ZSB0cmFuc2Zvcm1fdHlwZTxUPjo6dHlwZSwKLSAgICAgICAgICAgICAgICByZW1vdmVfY29uc3Q8VD4KLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLHJlbW92ZV9jb25zdCxUKQotICAgIH07Ci19Ly9uYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vTkROQk9PU1RfVFlQRV9UUkFJVFNfTVNWQ19SRU1PVkVfQ09OU1RfSE9MVF8yMDA0XzA4MjgKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy9yZW1vdmVfY3YuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV9jdi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzYTA0MzguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV9jdi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOTAgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA0IFBlZGVyIEhvbHQKLS8vIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVfVFJBSVRTX01TVkNfUkVNT1ZFX0NWX0hPTFRfMjAwNF8wOTAxCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVfVFJBSVRTX01TVkNfUkVNT1ZFX0NWX0hPTFRfMjAwNF8wOTAxCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3R5cGVvZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9sYXRpbGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2ludGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgbmFtZXNwYWNlIGRldGFpbCB7Ci0gICAgICAgIHRlbXBsYXRlPGJvb2wgSXNQb2ludGVyLGJvb2wgSXNBcnJheSxib29sIElzQ29uc3QsYm9vbCBJc1ZvbGF0aWxlPgotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX2N2X2ltcGxfdHlwZW9mIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgdHJhbnNmb3JtX3R5cGUgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgdGVtcGxhdGU8PiAvL1ZvbGF0aWxlCi0gICAgICAgIHN0cnVjdCByZW1vdmVfY3ZfaW1wbF90eXBlb2Y8ZmFsc2UsZmFsc2UsZmFsc2UsdHJ1ZT4gewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFUsSUQ+IHRlc3QoVSB2b2xhdGlsZSYoKikoKSk7Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxULElEPiB0ZXN0KC4uLik7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHJlZ2lzdGVyX3Rlc3Q9c2l6ZW9mKHRlc3QoIChUKCopKCkpKE5VTEwpICkgKSk7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2V4dHJhY3RfdHlwZTxJRD46OmlkMnR5cGU6OnR5cGUgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICAgICAgc3RydWN0IHRyYW5zZm9ybV90eXBlIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQmIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgICAgICB0ZW1wbGF0ZTw+IC8vQ29uc3QKLSAgICAgICAgc3RydWN0IHJlbW92ZV9jdl9pbXBsX3R5cGVvZjxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlPiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIElEPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VSxJRD4gdGVzdChVIGNvbnN0JigqKSgpKTsKLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFQsSUQ+IHRlc3QoLi4uKTsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQscmVnaXN0ZXJfdGVzdD1zaXplb2YodGVzdCggKFQoKikoKSkoTlVMTCkgKSApKTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfZXh0cmFjdF90eXBlPElEPjo6aWQydHlwZTo6dHlwZSB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgdHJhbnNmb3JtX3R5cGUgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCYgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPD4gLy9DVgotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX2N2X2ltcGxfdHlwZW9mPGZhbHNlLGZhbHNlLHRydWUsdHJ1ZT4gewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFUsSUQ+IHRlc3QoVSBjb25zdCB2b2xhdGlsZSYoKikoKSk7Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxULElEPiB0ZXN0KC4uLik7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHJlZ2lzdGVyX3Rlc3Q9c2l6ZW9mKHRlc3QoIChUKCopKCkpKE5VTEwpICkgKSk7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2V4dHJhY3RfdHlwZTxJRD46OmlkMnR5cGU6OnR5cGUgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICAgICAgc3RydWN0IHRyYW5zZm9ybV90eXBlIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQmIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgICAgICB0ZW1wbGF0ZTw+IC8vVm9sYXRpbGUgUG9pbnRlcgotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX2N2X2ltcGxfdHlwZW9mPHRydWUsZmFsc2UsZmFsc2UsdHJ1ZT4gewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFUsSUQ+IHRlc3Qodm9pZCgqKShVIHZvbGF0aWxlW10pKTsKLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFQsSUQ+IHRlc3QoLi4uKTsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQscmVnaXN0ZXJfdGVzdD1zaXplb2YodGVzdCggKHZvaWQoKikoVCkpKE5VTEwpICkgKSk7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2V4dHJhY3RfdHlwZTxJRD46OmlkMnR5cGU6OnR5cGUgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICAgICAgc3RydWN0IHRyYW5zZm9ybV90eXBlIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQgdHlwZVtdOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgdGVtcGxhdGU8PiAvL0NvbnN0IFBvaW50ZXIKLSAgICAgICAgc3RydWN0IHJlbW92ZV9jdl9pbXBsX3R5cGVvZjx0cnVlLGZhbHNlLHRydWUsZmFsc2U+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxVLElEPiB0ZXN0KHZvaWQoKikoVSBjb25zdFtdKSk7Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxULElEPiB0ZXN0KC4uLik7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHJlZ2lzdGVyX3Rlc3Q9c2l6ZW9mKHRlc3QoICh2b2lkKCopKFQpKShOVUxMKSApICkpOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8SUQ+OjppZDJ0eXBlOjp0eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgICAgIHN0cnVjdCB0cmFuc2Zvcm1fdHlwZSB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGVbXTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPD4gLy9DViBQb2ludGVyCi0gICAgICAgIHN0cnVjdCByZW1vdmVfY3ZfaW1wbF90eXBlb2Y8dHJ1ZSxmYWxzZSx0cnVlLHRydWU+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxVLElEPiB0ZXN0KHZvaWQoKikoVSBjb25zdCB2b2xhdGlsZVtdKSk7Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxULElEPiB0ZXN0KC4uLik7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHJlZ2lzdGVyX3Rlc3Q9c2l6ZW9mKHRlc3QoICh2b2lkKCopKFQpKShOVUxMKSApICkpOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8SUQ+OjppZDJ0eXBlOjp0eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgICAgIHN0cnVjdCB0cmFuc2Zvcm1fdHlwZSB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGVbXTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07ICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8PiAvL1ZvbGF0aWxlIEFycmF5Ci0gICAgICAgIHN0cnVjdCByZW1vdmVfY3ZfaW1wbF90eXBlb2Y8ZmFsc2UsdHJ1ZSxmYWxzZSx0cnVlPiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIElEPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsdmFsdWU9KHNpemVvZihUKS9zaXplb2YoKCooKFQqKU5VTEwpKVswXSkpKTsKLQotICAgICAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxVW3ZhbHVlXSxJRD4gdGVzdCh2b2lkKCopKFUgdm9sYXRpbGVbXSkpOwotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxJRD4gdGVzdCguLi4pOwotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxyZWdpc3Rlcl90ZXN0PXNpemVvZih0ZXN0KCAodm9pZCgqKShUKSkoTlVMTCkgKSApKTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfZXh0cmFjdF90eXBlPElEPjo6aWQydHlwZTo6dHlwZSB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgdHJhbnNmb3JtX3R5cGUgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgdGVtcGxhdGU8PiAvL0NvbnN0IEFycmF5Ci0gICAgICAgIHN0cnVjdCByZW1vdmVfY3ZfaW1wbF90eXBlb2Y8ZmFsc2UsdHJ1ZSx0cnVlLGZhbHNlPiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIElEPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsdmFsdWU9KHNpemVvZihUKS9zaXplb2YoKCooKFQqKU5VTEwpKVswXSkpKTsKLQotICAgICAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxVW3ZhbHVlXSxJRD4gdGVzdCh2b2lkKCopKFUgY29uc3RbXSkpOwotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxJRD4gdGVzdCguLi4pOwotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxyZWdpc3Rlcl90ZXN0PXNpemVvZih0ZXN0KCAodm9pZCgqKShUKSkoTlVMTCkgKSApKTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfZXh0cmFjdF90eXBlPElEPjo6aWQydHlwZTo6dHlwZSB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgdHJhbnNmb3JtX3R5cGUgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTw+IC8vQ1YgQXJyYXkKLSAgICAgICAgc3RydWN0IHJlbW92ZV9jdl9pbXBsX3R5cGVvZjxmYWxzZSx0cnVlLHRydWUsdHJ1ZT4gewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHZhbHVlPShzaXplb2YoVCkvc2l6ZW9mKCgqKChUKilOVUxMKSlbMF0pKSk7Ci0KLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VVt2YWx1ZV0sSUQ+IHRlc3Qodm9pZCgqKShVIGNvbnN0IHZvbGF0aWxlW10pKTsKLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFQsSUQ+IHRlc3QoLi4uKTsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQscmVnaXN0ZXJfdGVzdD1zaXplb2YodGVzdCggKHZvaWQoKikoVCkpKE5VTEwpICkgKSk7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2V4dHJhY3RfdHlwZTxJRD46OmlkMnR5cGU6OnR5cGUgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICAgICAgc3RydWN0IHRyYW5zZm9ybV90eXBlIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0KLSAgICB9IC8vbmFtZXNwYWNlIGRldGFpbAotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgcmVtb3ZlX2N2IHsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjpyZW1vdmVfY3ZfaW1wbF90eXBlb2Y8Ci0gICAgICAgICAgICBuZG5ib29zdDo6aXNfcG9pbnRlcjxUPjo6dmFsdWUsCi0gICAgICAgICAgICBuZG5ib29zdDo6aXNfYXJyYXk8VD46OnZhbHVlLAotICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX2NvbnN0PFQ+Ojp2YWx1ZSwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojppc192b2xhdGlsZTxUPjo6dmFsdWUKLSAgICAgICAgPiByZW1vdmVfY3ZfdHlwZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICAgICAgICAgIHJlbW92ZV9jdl90eXBlOjp0ZW1wbGF0ZSBpbm5lcjwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSByZW1vdmVfY3ZfdHlwZTo6dGVtcGxhdGUgdHJhbnNmb3JtX3R5cGU8VD46OnR5cGUsCi0gICAgICAgICAgICAgICAgcmVtb3ZlX2N2PFQ+Ci0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSxyZW1vdmVfY3YsVCkKLSAgICB9OwotfS8vbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvL05ETkJPT1NUX1RZUEVfVFJBSVRTX01TVkNfUkVNT1ZFX0NWX0hPTFRfMjAwNF8wOTAxCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvcmVtb3ZlX2V4dGVudC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvcmVtb3ZlX2V4dGVudC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4OGY3NWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV9leHRlbnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA0IFBlZGVyIEhvbHQKLS8vIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVfVFJBSVRTX01TVkNfUkVNT1ZFX0VYVEVOVF9IT0xUXzIwMDRfMDgyNwotI2RlZmluZSBORE5CT09TVF9UWVBFX1RSQUlUU19NU1ZDX1JFTU9WRV9FWFRFTlRfSE9MVF8yMDA0XzA4MjcKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvdHlwZW9mLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgbmFtZXNwYWNlIGRldGFpbCB7Ci0gICAgICAgIHRlbXBsYXRlPGJvb2wgSXNBcnJheT4KLSAgICAgICAgc3RydWN0IHJlbW92ZV9leHRlbnRfaW1wbF90eXBlb2YgewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByZW1vdmVfZXh0ZW50X2ltcGxfdHlwZW9mPHRydWU+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxVLElEPiB0ZXN0KFVbXSk7Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxULElEPiB0ZXN0KC4uLik7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHJlZ2lzdGVyX3Rlc3Q9c2l6ZW9mKHRlc3QoICooKFQqKU5VTEwpICkgKSk7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2V4dHJhY3RfdHlwZTxJRD46OmlkMnR5cGU6OnR5cGUgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgfSAvL25hbWVzcGFjZSBkZXRhaWwKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IHJlbW92ZV9leHRlbnQgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnJlbW92ZV9leHRlbnRfaW1wbF90eXBlb2Y8Ci0gICAgICAgICAgICBuZG5ib29zdDo6aXNfYXJyYXk8VD46OnZhbHVlICAgICAgICAgICAgICAgIAotICAgICAgICA+Ojp0ZW1wbGF0ZSBpbm5lcjxULHJlbW92ZV9leHRlbnQ8VD4gPjo6dHlwZSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEscmVtb3ZlX2V4dGVudCxUKQotICAgIH07Ci19IC8vbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvL05ETkJPT1NUX1RZUEVfVFJBSVRTX01TVkNfUkVNT1ZFX0JPVU5EU19IT0xUXzIwMDRfMDgyNwotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvcmVtb3ZlX3BvaW50ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV9wb2ludGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDMxMWJjYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvcmVtb3ZlX3BvaW50ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA0IFBlZGVyIEhvbHQKLS8vIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVfVFJBSVRTX01TVkNfUkVNT1ZFX1BPSU5URVJfSE9MVF8yMDA0XzA4MjcKLSNkZWZpbmUgTkROQk9PU1RfVFlQRV9UUkFJVFNfTVNWQ19SRU1PVkVfUE9JTlRFUl9IT0xUXzIwMDRfMDgyNwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy90eXBlb2YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvaW50ZXIuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIG5hbWVzcGFjZSBkZXRhaWwgewotICAgICAgICB0ZW1wbGF0ZTxpbnQgSXNQb2ludGVyPgotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX3BvaW50ZXJfaW1wbF90eXBlb2YgewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByZW1vdmVfcG9pbnRlcl9pbXBsX3R5cGVvZjx0cnVlPiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIElEPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VSxJRD4gdGVzdChVKik7Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxULElEPiB0ZXN0KC4uLik7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHJlZ2lzdGVyX3Rlc3Q9c2l6ZW9mKHRlc3QoICooKFQqKU5VTEwpICkgKSk7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2V4dHJhY3RfdHlwZTxJRD46OmlkMnR5cGU6OnR5cGUgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgfSAvL25hbWVzcGFjZSBkZXRhaWwKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IHJlbW92ZV9wb2ludGVyIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpyZW1vdmVfcG9pbnRlcl9pbXBsX3R5cGVvZjwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojppc19wb2ludGVyPFQ+Ojp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBpbm5lcjxULHJlbW92ZV9wb2ludGVyPFQ+ID46OnR5cGUgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLHJlbW92ZV9wb2ludGVyLFQpCi0gICAgfTsKLX0gLy9uYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vTkROQk9PU1RfVFlQRV9UUkFJVFNfUkVNT1ZFX1BPSU5URVJfSE9MVF8yMDA0XzA4MjcKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy9yZW1vdmVfcmVmZXJlbmNlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy9yZW1vdmVfcmVmZXJlbmNlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTgzMzQ1Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvcmVtb3ZlX3JlZmVyZW5jZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDQgUGVkZXIgSG9sdAotLy8gVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAuIChodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRV9UUkFJVFNfTVNWQ19SRU1PVkVfUkVGRVJFTkNFX0hPTFRfMjAwNF8wODI3Ci0jZGVmaW5lIE5ETkJPT1NUX1RZUEVfVFJBSVRTX01TVkNfUkVNT1ZFX1JFRkVSRU5DRV9IT0xUXzIwMDRfMDgyNwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy90eXBlb2YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3JlZmVyZW5jZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgbmFtZXNwYWNlIGRldGFpbCB7Ci0gICAgICAgIHRlbXBsYXRlPGJvb2wgSXNSZWZlcmVuY2U+Ci0gICAgICAgIHN0cnVjdCByZW1vdmVfcmVmZXJlbmNlX2ltcGxfdHlwZW9mIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX3JlZmVyZW5jZV9pbXBsX3R5cGVvZjx0cnVlPiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIElEPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VSxJRD4gdGVzdChVJigqKSgpKTsKLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFQsSUQ+IHRlc3QoLi4uKTsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQscmVnaXN0ZXJfdGVzdD1zaXplb2YodGVzdCggKFQoKikoKSkoTlVMTCkgKSApKTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfZXh0cmFjdF90eXBlPElEPjo6aWQydHlwZTo6dHlwZSB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICB9IC8vbmFtZXNwYWNlIGRldGFpbAotICAgIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IHJlbW92ZV9yZWZlcmVuY2UgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnJlbW92ZV9yZWZlcmVuY2VfaW1wbF90eXBlb2Y8Ci0gICAgICAgICAgICBuZG5ib29zdDo6aXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBpbm5lcjxULHJlbW92ZV9yZWZlcmVuY2U8VD4gPjo6dHlwZSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEscmVtb3ZlX3JlZmVyZW5jZSxUKQotICAgIH07Ci19IC8vbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvL05ETkJPT1NUX1RZUEVfVFJBSVRTX01TVkNfUkVNT1ZFX1JFRkVSRU5DRV9IT0xUXzIwMDRfMDgyNwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV92b2xhdGlsZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvcmVtb3ZlX3ZvbGF0aWxlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDBlMTQ5Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvcmVtb3ZlX3ZvbGF0aWxlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MyArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDQgUGVkZXIgSG9sdAotLy8gVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAuIChodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRV9UUkFJVFNfTVNWQ19SRU1PVkVfVk9MQVRJTEVfSE9MVF8yMDA0XzA4MjgKLSNkZWZpbmUgTkROQk9PU1RfVFlQRV9UUkFJVFNfTVNWQ19SRU1PVkVfVk9MQVRJTEVfSE9MVF8yMDA0XzA4MjgKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvdHlwZW9mLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2xhdGlsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29uc3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FycmF5LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICBuYW1lc3BhY2UgZGV0YWlsIHsKLSAgICAgICAgdGVtcGxhdGU8Ym9vbCBJc1BvaW50ZXIsYm9vbCBJc0FycmF5LGJvb2wgSXNDb25zdCxib29sIElzVm9sYXRpbGU+Ci0gICAgICAgIHN0cnVjdCByZW1vdmVfdm9sYXRpbGVfaW1wbF90eXBlb2YgewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgICAgIHN0cnVjdCB0cmFuc2Zvcm1fdHlwZSB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgICAgICB0ZW1wbGF0ZTw+IC8vVm9sYXRpbGUKLSAgICAgICAgc3RydWN0IHJlbW92ZV92b2xhdGlsZV9pbXBsX3R5cGVvZjxmYWxzZSxmYWxzZSxmYWxzZSx0cnVlPiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIElEPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VSxJRD4gdGVzdChVIHZvbGF0aWxlJigqKSgpKTsKLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFQsSUQ+IHRlc3QoLi4uKTsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQscmVnaXN0ZXJfdGVzdD1zaXplb2YodGVzdCggKFQoKikoKSkoTlVMTCkgKSApKTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfZXh0cmFjdF90eXBlPElEPjo6aWQydHlwZTo6dHlwZSB0eXBlOwotICAgICAgICAgICAgfTsgICAgICAgICAgICAKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgdHJhbnNmb3JtX3R5cGUgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCYgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPD4gLy9DVgotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX3ZvbGF0aWxlX2ltcGxfdHlwZW9mPGZhbHNlLGZhbHNlLHRydWUsdHJ1ZT4gewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFUgY29uc3QsSUQ+IHRlc3QoVSBjb25zdCB2b2xhdGlsZSYoKikoKSk7Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxULElEPiB0ZXN0KC4uLik7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHJlZ2lzdGVyX3Rlc3Q9c2l6ZW9mKHRlc3QoIChUKCopKCkpKE5VTEwpICkgKSk7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2V4dHJhY3RfdHlwZTxJRD46OmlkMnR5cGU6OnR5cGUgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICAgICAgc3RydWN0IHRyYW5zZm9ybV90eXBlIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQmIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgICAgICB0ZW1wbGF0ZTw+IC8vVm9sYXRpbGUgUG9pbnRlcgotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX3ZvbGF0aWxlX2ltcGxfdHlwZW9mPHRydWUsZmFsc2UsZmFsc2UsdHJ1ZT4gewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFUsSUQ+IHRlc3Qodm9pZCgqKShVIHZvbGF0aWxlW10pKTsKLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFQsSUQ+IHRlc3QoLi4uKTsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQscmVnaXN0ZXJfdGVzdD1zaXplb2YodGVzdCggKHZvaWQoKikoVCkpKE5VTEwpICkgKSk7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2V4dHJhY3RfdHlwZTxJRD46OmlkMnR5cGU6OnR5cGUgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICAgICAgc3RydWN0IHRyYW5zZm9ybV90eXBlIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQgdHlwZVtdOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgdGVtcGxhdGU8PiAvL0NWIFBvaW50ZXIKLSAgICAgICAgc3RydWN0IHJlbW92ZV92b2xhdGlsZV9pbXBsX3R5cGVvZjx0cnVlLGZhbHNlLHRydWUsdHJ1ZT4gewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFUgY29uc3QsSUQ+IHRlc3Qodm9pZCgqKShVIGNvbnN0IHZvbGF0aWxlW10pKTsKLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFQsSUQ+IHRlc3QoLi4uKTsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQscmVnaXN0ZXJfdGVzdD1zaXplb2YodGVzdCggKHZvaWQoKikoVCkpKE5VTEwpICkgKSk7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2V4dHJhY3RfdHlwZTxJRD46OmlkMnR5cGU6OnR5cGUgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICAgICAgc3RydWN0IHRyYW5zZm9ybV90eXBlIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQgdHlwZVtdOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsgICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTw+IC8vVm9sYXRpbGUgQXJyYXkKLSAgICAgICAgc3RydWN0IHJlbW92ZV92b2xhdGlsZV9pbXBsX3R5cGVvZjxmYWxzZSx0cnVlLGZhbHNlLHRydWU+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCx2YWx1ZT0oc2l6ZW9mKFQpL3NpemVvZigoKigoVCopTlVMTCkpWzBdKSkpOwotCi0gICAgICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFVbdmFsdWVdLElEPiB0ZXN0KHZvaWQoKikoVSB2b2xhdGlsZVtdKSk7Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxULElEPiB0ZXN0KC4uLik7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHJlZ2lzdGVyX3Rlc3Q9c2l6ZW9mKHRlc3QoICh2b2lkKCopKFQpKShOVUxMKSApICkpOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8SUQ+OjppZDJ0eXBlOjp0eXBlIHR5cGU7ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgdHJhbnNmb3JtX3R5cGUgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTw+IC8vQ1YgQXJyYXkKLSAgICAgICAgc3RydWN0IHJlbW92ZV92b2xhdGlsZV9pbXBsX3R5cGVvZjxmYWxzZSx0cnVlLHRydWUsdHJ1ZT4gewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHZhbHVlPShzaXplb2YoVCkvc2l6ZW9mKCgqKChUKilOVUxMKSlbMF0pKSk7Ci0KLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VSBjb25zdFt2YWx1ZV0sSUQ+IHRlc3Qodm9pZCgqKShVIGNvbnN0IHZvbGF0aWxlW10pKTsKLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFQsSUQ+IHRlc3QoLi4uKTsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQscmVnaXN0ZXJfdGVzdD1zaXplb2YodGVzdCggKHZvaWQoKikoVCkpKE5VTEwpICkgKSk7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2V4dHJhY3RfdHlwZTxJRD46OmlkMnR5cGU6OnR5cGUgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICAgICAgc3RydWN0IHRyYW5zZm9ybV90eXBlIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0KLSAgICB9IC8vbmFtZXNwYWNlIGRldGFpbAotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgcmVtb3ZlX3ZvbGF0aWxlIHsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjpyZW1vdmVfdm9sYXRpbGVfaW1wbF90eXBlb2Y8Ci0gICAgICAgICAgICBuZG5ib29zdDo6aXNfcG9pbnRlcjxUPjo6dmFsdWUsCi0gICAgICAgICAgICBuZG5ib29zdDo6aXNfYXJyYXk8VD46OnZhbHVlLAotICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX2NvbnN0PFQ+Ojp2YWx1ZSwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojppc192b2xhdGlsZTxUPjo6dmFsdWUKLSAgICAgICAgPiByZW1vdmVfdm9sYXRpbGVfdHlwZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICAgICAgICAgIHJlbW92ZV92b2xhdGlsZV90eXBlOjp0ZW1wbGF0ZSBpbm5lcjwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSByZW1vdmVfdm9sYXRpbGVfdHlwZTo6dGVtcGxhdGUgdHJhbnNmb3JtX3R5cGU8VD46OnR5cGUsCi0gICAgICAgICAgICAgICAgcmVtb3ZlX3ZvbGF0aWxlPFQ+Ci0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSxyZW1vdmVfdm9sYXRpbGUsVCkKLSAgICB9OwotfS8vbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvL05ETkJPT1NUX1RZUEVfVFJBSVRTX01TVkNfUkVNT1ZFX1ZPTEFUSUxFX0hPTFRfMjAwNF8wODI4CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvdHlwZW9mLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy90eXBlb2YuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMjVkYWRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy90eXBlb2YuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA0IFBlZGVyIEhvbHQKLS8vIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVUUkFJVFNfTVNWQ19UWVBFT0ZfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVUUkFJVFNfTVNWQ19UWVBFT0ZfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0jIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQyw9PTEzMDApCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIElEPgotICAgICAgICBzdHJ1Y3QgbXN2Y19leHRyYWN0X3R5cGUKLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8Ym9vbD4KLSAgICAgICAgICAgIHN0cnVjdCBpZDJ0eXBlX2ltcGw7Ci0KLSAgICAgICAgICAgIHR5cGVkZWYgaWQydHlwZV9pbXBsPHRydWU+IGlkMnR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSUQ+Ci0gICAgICAgIHN0cnVjdCBtc3ZjX3JlZ2lzdGVyX3R5cGUgOiBwdWJsaWMgbXN2Y19leHRyYWN0X3R5cGU8SUQ+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgICAgIHN0cnVjdCBpZDJ0eXBlX2ltcGw8dHJ1ZT4gIC8vVkM3LjAgc3BlY2lmaWMgYnVnZmVhdHVyZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSMgZWxzZSAKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSUQ+Ci0gICAgICAgIHN0cnVjdCBtc3ZjX2V4dHJhY3RfdHlwZQotICAgICAgICB7Ci0gICAgICAgICAgICBzdHJ1Y3QgaWQydHlwZTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBJRD4KLSAgICAgICAgc3RydWN0IG1zdmNfcmVnaXN0ZXJfdHlwZSA6IHB1YmxpYyBtc3ZjX2V4dHJhY3RfdHlwZTxJRD4KLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBtc3ZjX2V4dHJhY3RfdHlwZTxJRD4gYmFzZV90eXBlOwotICAgICAgICAgICAgc3RydWN0IGJhc2VfdHlwZTo6aWQydHlwZSAvLyBUaGlzIHVzZXMgbmljZSBWQzYuNSBhbmQgVkM3LjEgYnVnZmVhdHVyZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSMgZW5kaWYKLX19Ci0KLSNlbmRpZiAvL05ETkJPT1NUX1RZUEVUUkFJVFNfTVNWQ19UWVBFT0ZfSU1QTF9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvb2JqZWN0X3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL29iamVjdF90cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZmM5YWVlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvb2JqZWN0X3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLS8vCi0vLyAgZGVmaW5lcyBvYmplY3QgdHJhaXRzIGNsYXNzZXM6Ci0vLyAgaXNfb2JqZWN0LCBpc19zY2FsYXIsIGlzX2NsYXNzLCBpc19jb21wb3VuZCwgaXNfcG9kLCAKLS8vICBoYXNfdHJpdmlhbF9jb25zdHJ1Y3RvciwgaGFzX3RyaXZpYWxfY29weSwgaGFzX3RyaXZpYWxfYXNzaWduLCAKLS8vICBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yLCBpc19lbXB0eS4KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfT0JKRUNUX1RSQUlUU19IUFBfSU5MQ1VERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfT0JKRUNUX1RSQUlUU19IUFBfSU5MQ1VERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX2Fzc2lnbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfY29uc3RydWN0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX2NvcHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX2Rlc3RydWN0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ub3Rocm93X2NvbnN0cnVjdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbm90aHJvd19jb3B5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbm90aHJvd19hc3NpZ24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Jhc2VfYW5kX2Rlcml2ZWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NsYXNzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb21wb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZW1wdHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX29iamVjdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zY2FsYXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3N0YXRlbGVzcy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9PQkpFQ1RfVFJBSVRTX0hQUF9JTkxDVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9wcm9tb3RlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcHJvbW90ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlZWJhNGQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9wcm9tb3RlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA1IEFsZXhhbmRlciBOYXNvbm92LgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIEZJTEVfbmRuYm9vc3RfdHlwZV90cmFpdHNfcHJvbW90ZV9ocHBfSU5DTFVERUQKLSNkZWZpbmUgRklMRV9uZG5ib29zdF90eXBlX3RyYWl0c19wcm9tb3RlX2hwcF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pbnRlZ3JhbF9wcm9tb3Rpb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2Zsb2F0aW5nX3BvaW50X3Byb21vdGlvbi5ocHA+Ci0KLS8vIFNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IHByb21vdGVfaW1wbAotICA6IHB1YmxpYyBpbnRlZ3JhbF9wcm9tb3Rpb248Ci0gICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgZmxvYXRpbmdfcG9pbnRfcHJvbW90aW9uPFQ+Ojp0eXBlCi0gICAgICA+Ci17Ci19OwotCi19Ci0KLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0RFRjEoCi0gICAgICBwcm9tb3RlCi0gICAgLCBUCi0gICAgLCBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG5kbmJvb3N0OjpkZXRhaWw6OnByb21vdGVfaW1wbDxUPjo6dHlwZQotICAgICkKLX0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vICNpZm5kZWYgRklMRV9uZG5ib29zdF90eXBlX3RyYWl0c19wcm9tb3RlX2hwcF9JTkNMVURFRAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3JhbmsuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9yYW5rLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmE0ZjYyZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3JhbmsuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODkgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwNS4gIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX1JBTktfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX1JBTktfSFBQX0lOQ0xVREVECi0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9zaXplX3RfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotI2lmICFkZWZpbmVkKCBfX0NPREVHRUFSQ19fICkKLQotbmFtZXNwYWNlIGRldGFpbHsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4+Ci1zdHJ1Y3QgcmFua19pbXAKLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSBOKTsKLX07Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fQVJSQVlfVFlQRV9TUEVDSUFMSVpBVElPTlMpCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgc3RkOjpzaXplX3QgUiwgc3RkOjpzaXplX3QgTj4KLXN0cnVjdCByYW5rX2ltcDxUW1JdLCBOPgotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9ICg6Om5kbmJvb3N0OjpkZXRhaWw6OnJhbmtfaW1wPFQsIE4rMT46OnZhbHVlKSk7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgc3RkOjpzaXplX3QgUiwgc3RkOjpzaXplX3QgTj4KLXN0cnVjdCByYW5rX2ltcDxUIGNvbnN0W1JdLCBOPgotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9ICg6Om5kbmJvb3N0OjpkZXRhaWw6OnJhbmtfaW1wPFQsIE4rMT46OnZhbHVlKSk7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgc3RkOjpzaXplX3QgUiwgc3RkOjpzaXplX3QgTj4KLXN0cnVjdCByYW5rX2ltcDxUIHZvbGF0aWxlW1JdLCBOPgotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9ICg6Om5kbmJvb3N0OjpkZXRhaWw6OnJhbmtfaW1wPFQsIE4rMT46OnZhbHVlKSk7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgc3RkOjpzaXplX3QgUiwgc3RkOjpzaXplX3QgTj4KLXN0cnVjdCByYW5rX2ltcDxUIGNvbnN0IHZvbGF0aWxlW1JdLCBOPgotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9ICg6Om5kbmJvb3N0OjpkZXRhaWw6OnJhbmtfaW1wPFQsIE4rMT46OnZhbHVlKSk7Ci19OwotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4NjAwKSAmJiAhZGVmaW5lZChfX0lCTUNQUF9fKSAmJiAgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19ETUNfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4ODQwKSkKLXRlbXBsYXRlIDxjbGFzcyBULCBzdGQ6OnNpemVfdCBOPgotc3RydWN0IHJhbmtfaW1wPFRbXSwgTj4KLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSAoOjpuZG5ib29zdDo6ZGV0YWlsOjpyYW5rX2ltcDxULCBOKzE+Ojp2YWx1ZSkpOwotfTsKLXRlbXBsYXRlIDxjbGFzcyBULCBzdGQ6OnNpemVfdCBOPgotc3RydWN0IHJhbmtfaW1wPFQgY29uc3RbXSwgTj4KLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSAoOjpuZG5ib29zdDo6ZGV0YWlsOjpyYW5rX2ltcDxULCBOKzE+Ojp2YWx1ZSkpOwotfTsKLXRlbXBsYXRlIDxjbGFzcyBULCBzdGQ6OnNpemVfdCBOPgotc3RydWN0IHJhbmtfaW1wPFQgdm9sYXRpbGVbXSwgTj4KLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSAoOjpuZG5ib29zdDo6ZGV0YWlsOjpyYW5rX2ltcDxULCBOKzE+Ojp2YWx1ZSkpOwotfTsKLXRlbXBsYXRlIDxjbGFzcyBULCBzdGQ6OnNpemVfdCBOPgotc3RydWN0IHJhbmtfaW1wPFQgY29uc3Qgdm9sYXRpbGVbXSwgTj4KLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSAoOjpuZG5ib29zdDo6ZGV0YWlsOjpyYW5rX2ltcDxULCBOKzE+Ojp2YWx1ZSkpOwotfTsKLSNlbmRpZgotI2VuZGlmCi19Ci0KLSNlbmRpZiAvLyAhZGVmaW5lZCggX19DT0RFR0VBUkNfXyApCi0KLSNpZiBkZWZpbmVkKCBfX0NPREVHRUFSQ19fICkKLU5ETkJPT1NUX1RUX0FVWF9TSVpFX1RfVFJBSVRfREVGMShyYW5rLFQsX19hcnJheV9yYW5rKFQpKQotI2Vsc2UKLU5ETkJPT1NUX1RUX0FVWF9TSVpFX1RfVFJBSVRfREVGMShyYW5rLFQsKDo6bmRuYm9vc3Q6OmRldGFpbDo6cmFua19pbXA8VCwwPjo6dmFsdWUpKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvc2l6ZV90X3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX01FTUJFUl9GVU5DVElPTl9QT0lOVEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfYWxsX2V4dGVudHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfYWxsX2V4dGVudHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NzVhYWFmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2FsbF9leHRlbnRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDUuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX1JFTU9WRV9BTExfRVhURU5UU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfUkVNT1ZFX0FMTF9FWFRFTlRTX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxjc3RkZGVmPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQyw8PTEzMDApCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy9yZW1vdmVfYWxsX2V4dGVudHMuaHBwPgotI2VuZGlmCi0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X2RlZi5ocHA+Ci0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLDw9MTMwMCkKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfREVGMShyZW1vdmVfYWxsX2V4dGVudHMsVCxUKQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fQVJSQVlfVFlQRV9TUEVDSUFMSVpBVElPTlMpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCxzdGQ6OnNpemVfdCBOLHJlbW92ZV9hbGxfZXh0ZW50cyxUW05dLHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfYWxsX2V4dGVudHM8VD46OnR5cGUgdHlwZSkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMih0eXBlbmFtZSBULHN0ZDo6c2l6ZV90IE4scmVtb3ZlX2FsbF9leHRlbnRzLFQgY29uc3RbTl0sdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9hbGxfZXh0ZW50czxUIGNvbnN0Pjo6dHlwZSB0eXBlKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHR5cGVuYW1lIFQsc3RkOjpzaXplX3QgTixyZW1vdmVfYWxsX2V4dGVudHMsVCB2b2xhdGlsZVtOXSx0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2FsbF9leHRlbnRzPFQgdm9sYXRpbGU+Ojp0eXBlIHR5cGUpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCxzdGQ6OnNpemVfdCBOLHJlbW92ZV9hbGxfZXh0ZW50cyxUIGNvbnN0IHZvbGF0aWxlW05dLHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfYWxsX2V4dGVudHM8VCBjb25zdCB2b2xhdGlsZT46OnR5cGUgdHlwZSkKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDYxMCkpICYmICFkZWZpbmVkKF9fSUJNQ1BQX18pICYmICAhTkROQk9PU1RfV09SS0FST1VORChfX0RNQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg4NDApKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQscmVtb3ZlX2FsbF9leHRlbnRzLFRbXSx0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2FsbF9leHRlbnRzPFQ+Ojp0eXBlKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQscmVtb3ZlX2FsbF9leHRlbnRzLFQgY29uc3RbXSx0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2FsbF9leHRlbnRzPFQgY29uc3Q+Ojp0eXBlKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQscmVtb3ZlX2FsbF9leHRlbnRzLFQgdm9sYXRpbGVbXSx0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2FsbF9leHRlbnRzPFQgdm9sYXRpbGU+Ojp0eXBlKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQscmVtb3ZlX2FsbF9leHRlbnRzLFQgY29uc3Qgdm9sYXRpbGVbXSx0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2FsbF9leHRlbnRzPFQgY29uc3Qgdm9sYXRpbGU+Ojp0eXBlKQotI2VuZGlmCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9SRU1PVkVfQk9VTkRTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfYm91bmRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2JvdW5kcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhMDk3MTUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfYm91bmRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfUkVNT1ZFX0JPVU5EU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfUkVNT1ZFX0JPVU5EU19IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsPD0xMzAwKQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvcmVtb3ZlX2JvdW5kcy5ocHA+Ci0jZW5kaWYKLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfZGVmLmhwcD4KLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsPD0xMzAwKQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9ERUYxKHJlbW92ZV9ib3VuZHMsVCxUKQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fQVJSQVlfVFlQRV9TUEVDSUFMSVpBVElPTlMpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCxzdGQ6OnNpemVfdCBOLHJlbW92ZV9ib3VuZHMsVFtOXSxUIHR5cGUpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCxzdGQ6OnNpemVfdCBOLHJlbW92ZV9ib3VuZHMsVCBjb25zdFtOXSxUIGNvbnN0IHR5cGUpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCxzdGQ6OnNpemVfdCBOLHJlbW92ZV9ib3VuZHMsVCB2b2xhdGlsZVtOXSxUIHZvbGF0aWxlIHR5cGUpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCxzdGQ6OnNpemVfdCBOLHJlbW92ZV9ib3VuZHMsVCBjb25zdCB2b2xhdGlsZVtOXSxUIGNvbnN0IHZvbGF0aWxlIHR5cGUpCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg2MTApKSAmJiAhZGVmaW5lZChfX0lCTUNQUF9fKSAmJiAgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19ETUNfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4ODQwKSkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULHJlbW92ZV9ib3VuZHMsVFtdLFQpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxyZW1vdmVfYm91bmRzLFQgY29uc3RbXSxUIGNvbnN0KQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQscmVtb3ZlX2JvdW5kcyxUIHZvbGF0aWxlW10sVCB2b2xhdGlsZSkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULHJlbW92ZV9ib3VuZHMsVCBjb25zdCB2b2xhdGlsZVtdLFQgY29uc3Qgdm9sYXRpbGUpCi0jZW5kaWYKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX1JFTU9WRV9CT1VORFNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jb25zdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jb25zdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhMzE2MTMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY29uc3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBEYXZlIEFicmFoYW1zLCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQKLS8vICBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuICAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLQotI2lmbmRlZiBORE5CT09TVF9UVF9SRU1PVkVfQ09OU1RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX1JFTU9WRV9DT05TVF9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvbGF0aWxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9icm9rZW5fY29tcGlsZXJfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2N2X3RyYWl0c19pbXBsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2luY2x1ZGUgPGNzdGRkZWY+Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsPD0xMzAwKQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvcmVtb3ZlX2NvbnN0LmhwcD4KLSNlbmRpZgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBib29sIGlzX3ZvbD4KLXN0cnVjdCByZW1vdmVfY29uc3RfaGVscGVyCi17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCByZW1vdmVfY29uc3RfaGVscGVyPFQsIHRydWU+Ci17Ci0gICAgdHlwZWRlZiBUIHZvbGF0aWxlIHR5cGU7Ci19OwotCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IHJlbW92ZV9jb25zdF9pbXBsCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfY29uc3RfaGVscGVyPAotICAgICAgICAgIHR5cGVuYW1lIGN2X3RyYWl0c19pbXA8VCo+Ojp1bnF1YWxpZmllZF90eXBlCi0gICAgICAgICwgOjpuZG5ib29zdDo6aXNfdm9sYXRpbGU8VD46OnZhbHVlCi0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLS8vCi0vLyBXZSBjYW4ndCBmaWx0ZXIgb3V0IHJ2YWx1ZV9yZWZlcmVuY2VzIGF0IHRoZSBzYW1lIGxldmVsIGFzCi0vLyByZWZlcmVuY2VzIG9yIHdlIGdldCBhbWJpZ3VpdGllcyBmcm9tIG1zdmM6Ci0vLwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgcmVtb3ZlX2NvbnN0X2ltcGw8VCYmPgotewotICAgIHR5cGVkZWYgVCYmIHR5cGU7Ci19OwotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0vLyAqIGNvbnZlcnQgYSB0eXBlIFQgdG8gbm9uLWNvbnN0IHR5cGUgLSByZW1vdmVfY29uc3Q8VD4KLQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfREVGMShyZW1vdmVfY29uc3QsVCx0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpyZW1vdmVfY29uc3RfaW1wbDxUPjo6dHlwZSkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULHJlbW92ZV9jb25zdCxUJixUJikKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19BUlJBWV9UWVBFX1NQRUNJQUxJWkFUSU9OUykKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMih0eXBlbmFtZSBULHN0ZDo6c2l6ZV90IE4scmVtb3ZlX2NvbnN0LFQgY29uc3RbTl0sVCB0eXBlW05dKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHR5cGVuYW1lIFQsc3RkOjpzaXplX3QgTixyZW1vdmVfY29uc3QsVCBjb25zdCB2b2xhdGlsZVtOXSxUIHZvbGF0aWxlIHR5cGVbTl0pCi0jZW5kaWYKLQotI2VsaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQyw8PTEzMDApCi0KLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0RFRjEocmVtb3ZlX2NvbnN0LFQsdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6cmVtb3ZlX2NvbnN0X2ltcGw8VD46OnR5cGUpCi0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9SRU1PVkVfQ09OU1RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1Y2I4NmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBEYXZlIEFicmFoYW1zLCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQKLS8vICBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuICAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLQotI2lmbmRlZiBORE5CT09TVF9UVF9SRU1PVkVfQ1ZfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX1JFTU9WRV9DVl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2Jyb2tlbl9jb21waWxlcl9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvY3ZfdHJhaXRzX2ltcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaW5jbHVkZSA8Y3N0ZGRlZj4KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQyw8PTEzMDApCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy9yZW1vdmVfY3YuaHBwPgotI2VuZGlmCi0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi1uYW1lc3BhY2UgZGV0YWlsewotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBydmFsdWVfcmVmX2ZpbHRlcl9yZW1fY3YKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6Y3ZfdHJhaXRzX2ltcDxUKj46OnVucXVhbGlmaWVkX3R5cGUgdHlwZTsKLX07Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLS8vCi0vLyBXZSBjYW4ndCBmaWx0ZXIgb3V0IHJ2YWx1ZV9yZWZlcmVuY2VzIGF0IHRoZSBzYW1lIGxldmVsIGFzCi0vLyByZWZlcmVuY2VzIG9yIHdlIGdldCBhbWJpZ3VpdGllcyBmcm9tIG1zdmM6Ci0vLwotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgcnZhbHVlX3JlZl9maWx0ZXJfcmVtX2N2PFQmJj4KLXsKLSAgIHR5cGVkZWYgVCYmIHR5cGU7Ci19OwotI2VuZGlmCi0KLX0KLQotCi0vLyAgY29udmVydCBhIHR5cGUgVCB0byBhIG5vbi1jdi1xdWFsaWZpZWQgdHlwZSAtIHJlbW92ZV9jdjxUPgotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfREVGMShyZW1vdmVfY3YsVCx0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpydmFsdWVfcmVmX2ZpbHRlcl9yZW1fY3Y8VD46OnR5cGUpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxyZW1vdmVfY3YsVCYsVCYpCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQVJSQVlfVFlQRV9TUEVDSUFMSVpBVElPTlMpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCxzdGQ6OnNpemVfdCBOLHJlbW92ZV9jdixUIGNvbnN0W05dLFQgdHlwZVtOXSkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMih0eXBlbmFtZSBULHN0ZDo6c2l6ZV90IE4scmVtb3ZlX2N2LFQgdm9sYXRpbGVbTl0sVCB0eXBlW05dKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHR5cGVuYW1lIFQsc3RkOjpzaXplX3QgTixyZW1vdmVfY3YsVCBjb25zdCB2b2xhdGlsZVtOXSxUIHR5cGVbTl0pCi0jZW5kaWYKLQotI2VsaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQyw8PTEzMDApCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgcmVtb3ZlX2N2X2ltcGwKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlbW92ZV92b2xhdGlsZV9pbXBsPCAKLSAgICAgICAgICB0eXBlbmFtZSByZW1vdmVfY29uc3RfaW1wbDxUPjo6dHlwZQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotfQotCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9ERUYxKHJlbW92ZV9jdixULHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnJlbW92ZV9jdl9pbXBsPFQ+Ojp0eXBlKQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfUkVNT1ZFX0NWX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfZXh0ZW50LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2V4dGVudC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExMzMxN2QuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfZXh0ZW50LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC0yMDA1LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9SRU1PVkVfRVhURU5UX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9SRU1PVkVfRVhURU5UX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQyw8PTEzMDApCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy9yZW1vdmVfZXh0ZW50LmhwcD4KLSNlbmRpZgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF9kZWYuaHBwPgotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQyw8PTEzMDApCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0RFRjEocmVtb3ZlX2V4dGVudCxULFQpCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19BUlJBWV9UWVBFX1NQRUNJQUxJWkFUSU9OUykKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMih0eXBlbmFtZSBULHN0ZDo6c2l6ZV90IE4scmVtb3ZlX2V4dGVudCxUW05dLFQgdHlwZSkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMih0eXBlbmFtZSBULHN0ZDo6c2l6ZV90IE4scmVtb3ZlX2V4dGVudCxUIGNvbnN0W05dLFQgY29uc3QgdHlwZSkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMih0eXBlbmFtZSBULHN0ZDo6c2l6ZV90IE4scmVtb3ZlX2V4dGVudCxUIHZvbGF0aWxlW05dLFQgdm9sYXRpbGUgdHlwZSkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMih0eXBlbmFtZSBULHN0ZDo6c2l6ZV90IE4scmVtb3ZlX2V4dGVudCxUIGNvbnN0IHZvbGF0aWxlW05dLFQgY29uc3Qgdm9sYXRpbGUgdHlwZSkKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDYxMCkpICYmICFkZWZpbmVkKF9fSUJNQ1BQX18pICYmICAhTkROQk9PU1RfV09SS0FST1VORChfX0RNQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg4NDApKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQscmVtb3ZlX2V4dGVudCxUW10sVCkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULHJlbW92ZV9leHRlbnQsVCBjb25zdFtdLFQgY29uc3QpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxyZW1vdmVfZXh0ZW50LFQgdm9sYXRpbGVbXSxUIHZvbGF0aWxlKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQscmVtb3ZlX2V4dGVudCxUIGNvbnN0IHZvbGF0aWxlW10sVCBjb25zdCB2b2xhdGlsZSkKLSNlbmRpZgotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfUkVNT1ZFX0JPVU5EU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3BvaW50ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfcG9pbnRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhOGEyZTguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfcG9pbnRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MiArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX1JFTU9WRV9QT0lOVEVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9SRU1PVkVfUE9JTlRFUl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2lmZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9icm9rZW5fY29tcGlsZXJfc3BlYy5ocHA+Ci0jZW5kaWYKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQyw8PTEzMDApCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy9yZW1vdmVfcG9pbnRlci5ocHA+Ci0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2ludGVyLmhwcD4KLSNlbmRpZgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotCi1uYW1lc3BhY2UgZGV0YWlsewotCi0gICAvLwotICAgLy8gV2UgbmVlZCBhbGwgdGhpcyBjcmF6eSBpbmRpcmVjdGlvbiBiZWNhdXNlIGEgdHlwZSBzdWNoIGFzOgotICAgLy8KLSAgIC8vIFQgKCpjb25zdCkoVSkKLSAgIC8vCi0gICAvLyBEb2VzIG5vdCBiaW5kIHRvIGEgPFQqPiBvciA8VCpjb25zdD4gcGFydGlhbCBzcGVjaWFsaXphdGlvbiB3aXRoIFZDMTAgYW5kIGVhcmxpZXIKLSAgIC8vCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gCi0gICBzdHJ1Y3QgcmVtb3ZlX3BvaW50ZXJfaW1wCi0gICB7Ci0gICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgIH07Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUPiAKLSAgIHN0cnVjdCByZW1vdmVfcG9pbnRlcl9pbXA8VCo+Ci0gICB7Ci0gICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgIH07Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBib29sIGI+IAotICAgc3RydWN0IHJlbW92ZV9wb2ludGVyX2ltcDMKLSAgIHsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVtb3ZlX3BvaW50ZXJfaW1wPHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfY3Y8VD46OnR5cGU+Ojp0eXBlIHR5cGU7Ci0gICB9OwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gCi0gICBzdHJ1Y3QgcmVtb3ZlX3BvaW50ZXJfaW1wMzxULCBmYWxzZT4KLSAgIHsKLSAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgfTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+IAotICAgc3RydWN0IHJlbW92ZV9wb2ludGVyX2ltcDIKLSAgIHsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVtb3ZlX3BvaW50ZXJfaW1wMzxULCA6Om5kbmJvb3N0Ojppc19wb2ludGVyPFQ+Ojp2YWx1ZT46OnR5cGUgdHlwZTsKLSAgIH07Ci19Ci0KLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0RFRjEocmVtb3ZlX3BvaW50ZXIsVCx0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpyZW1vdmVfcG9pbnRlcl9pbXAyPFQ+Ojp0eXBlKQotCi0jZWxpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9ERUYxKHJlbW92ZV9wb2ludGVyLFQsVCkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULHJlbW92ZV9wb2ludGVyLFQqLFQpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxyZW1vdmVfcG9pbnRlcixUKiBjb25zdCxUKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQscmVtb3ZlX3BvaW50ZXIsVCogdm9sYXRpbGUsVCkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULHJlbW92ZV9wb2ludGVyLFQqIGNvbnN0IHZvbGF0aWxlLFQpCi0KLSNlbGlmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsPD0xMzAwKQotCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9ERUYxKHJlbW92ZV9wb2ludGVyLFQsdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6cmVtb3ZlX3BvaW50ZXJfaW1wbDxUPjo6dHlwZSkKLQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9SRU1PVkVfUE9JTlRFUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3JlZmVyZW5jZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9yZWZlcmVuY2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDIxYzU5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3JlZmVyZW5jZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX1JFTU9WRV9SRUZFUkVOQ0VfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX1JFTU9WRV9SRUZFUkVOQ0VfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9icm9rZW5fY29tcGlsZXJfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsPD0xMzAwKQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvcmVtb3ZlX3JlZmVyZW5jZS5ocHA+Ci0jZW5kaWYKLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLW5hbWVzcGFjZSBkZXRhaWx7Ci0vLwotLy8gV2UgY2FuJ3QgZmlsdGVyIG91dCBydmFsdWVfcmVmZXJlbmNlcyBhdCB0aGUgc2FtZSBsZXZlbCBhcwotLy8gcmVmZXJlbmNlcyBvciB3ZSBnZXQgYW1iaWd1aXRpZXMgZnJvbSBtc3ZjOgotLy8KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IHJlbW92ZV9ydmFsdWVfcmVmCi17Ci0gICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCByZW1vdmVfcnZhbHVlX3JlZjxUJiY+Ci17Ci0gICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0RFRjEocmVtb3ZlX3JlZmVyZW5jZSxULHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnJlbW92ZV9ydmFsdWVfcmVmPFQ+Ojp0eXBlKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQscmVtb3ZlX3JlZmVyZW5jZSxUJixUKQotCi0jaWYgZGVmaW5lZChORE5CT09TVF9JTExFR0FMX0NWX1JFRkVSRU5DRVMpCi0vLyB0aGVzZSBhcmUgaWxsZWdhbCBzcGVjaWFsaXNhdGlvbnM7IGN2LXF1YWxpZmllcyBhcHBsaWVkIHRvCi0vLyByZWZlcmVuY2VzIGhhdmUgbm8gZWZmZWN0IGFjY29yZGluZyB0byBbOC4zLjJwMV0sCi0vLyBDKysgQnVpbGRlciByZXF1aXJlcyB0aGVtIHRob3VnaCBhcyBpdCB0cmVhdHMgY3YtcXVhbGlmaWVkCi0vLyByZWZlcmVuY2VzIGFzIGRpc3RpbmN0IHR5cGVzLi4uCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxyZW1vdmVfcmVmZXJlbmNlLFQmIGNvbnN0LFQpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxyZW1vdmVfcmVmZXJlbmNlLFQmIHZvbGF0aWxlLFQpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxyZW1vdmVfcmVmZXJlbmNlLFQmIGNvbnN0IHZvbGF0aWxlLFQpCi0jZW5kaWYKLQotI2VsaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQyw8PTEzMDApCi0KLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0RFRjEocmVtb3ZlX3JlZmVyZW5jZSxULHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnJlbW92ZV9yZWZlcmVuY2VfaW1wbDxUPjo6dHlwZSkKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX1JFTU9WRV9SRUZFUkVOQ0VfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV92b2xhdGlsZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV92b2xhdGlsZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczMWU5YjEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfdm9sYXRpbGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBEYXZlIEFicmFoYW1zLCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQKLS8vICBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuICAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLQotI2lmbmRlZiBORE5CT09TVF9UVF9SRU1PVkVfVk9MQVRJTEVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX1JFTU9WRV9WT0xBVElMRV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9icm9rZW5fY29tcGlsZXJfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2N2X3RyYWl0c19pbXBsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2luY2x1ZGUgPGNzdGRkZWY+Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsPD0xMzAwKQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvcmVtb3ZlX3ZvbGF0aWxlLmhwcD4KLSNlbmRpZgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBib29sIGlzX2NvbnN0Pgotc3RydWN0IHJlbW92ZV92b2xhdGlsZV9oZWxwZXIKLXsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IHJlbW92ZV92b2xhdGlsZV9oZWxwZXI8VCx0cnVlPgotewotICAgIHR5cGVkZWYgVCBjb25zdCB0eXBlOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgcmVtb3ZlX3ZvbGF0aWxlX2ltcGwKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlbW92ZV92b2xhdGlsZV9oZWxwZXI8Ci0gICAgICAgICAgdHlwZW5hbWUgY3ZfdHJhaXRzX2ltcDxUKj46OnVucXVhbGlmaWVkX3R5cGUKLSAgICAgICAgLCA6Om5kbmJvb3N0Ojppc19jb25zdDxUPjo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotLy8KLS8vIFdlIGNhbid0IGZpbHRlciBvdXQgcnZhbHVlX3JlZmVyZW5jZXMgYXQgdGhlIHNhbWUgbGV2ZWwgYXMKLS8vIHJlZmVyZW5jZXMgb3Igd2UgZ2V0IGFtYmlndWl0aWVzIGZyb20gbXN2YzoKLS8vCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCByZW1vdmVfdm9sYXRpbGVfaW1wbDxUJiY+Ci17Ci0gICAgdHlwZWRlZiBUJiYgdHlwZTsKLX07Ci0jZW5kaWYKLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0vLyAqIGNvbnZlcnQgYSB0eXBlIFQgdG8gYSBub24tdm9sYXRpbGUgdHlwZSAtIHJlbW92ZV92b2xhdGlsZTxUPgotCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9ERUYxKHJlbW92ZV92b2xhdGlsZSxULHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnJlbW92ZV92b2xhdGlsZV9pbXBsPFQ+Ojp0eXBlKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQscmVtb3ZlX3ZvbGF0aWxlLFQmLFQmKQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0FSUkFZX1RZUEVfU1BFQ0lBTElaQVRJT05TKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHR5cGVuYW1lIFQsc3RkOjpzaXplX3QgTixyZW1vdmVfdm9sYXRpbGUsVCB2b2xhdGlsZVtOXSxUIHR5cGVbTl0pCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCxzdGQ6OnNpemVfdCBOLHJlbW92ZV92b2xhdGlsZSxUIGNvbnN0IHZvbGF0aWxlW05dLFQgY29uc3QgdHlwZVtOXSkKLSNlbmRpZgotCi0jZWxpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLDw9MTMwMCkKLQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfREVGMShyZW1vdmVfdm9sYXRpbGUsVCx0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpyZW1vdmVfdm9sYXRpbGVfaW1wbDxUPjo6dHlwZSkKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX1JFTU9WRV9WT0xBVElMRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvc2FtZV90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9zYW1lX3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0NzZjMGQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9zYW1lX3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBBbGVrc2V5IEd1cnRvdm95LCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLS8vCi0vLyAgZGVmaW5lcyBpc19zYW1lOgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX1NBTUVfVFJBSVRTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9TQU1FX1RSQUlUU19IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1RUX1NBTUVfVFJBSVRTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy90cmFuc2Zvcm1fdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvdHJhbnNmb3JtX3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyYmFhMGMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy90cmFuc2Zvcm1fdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotLy8KLS8vICBkZWZpbmVzIHRyYWl0cyBjbGFzc2VzIGZvciB0cmFuc2Zvcm1pbmcgb25lIHR5cGUgdG8gYW5vdGhlcjoKLS8vICByZW1vdmVfcmVmZXJlbmNlLCBhZGRfcmVmZXJlbmNlLCByZW1vdmVfYm91bmRzLCByZW1vdmVfcG9pbnRlci4KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfVFJBTlNGT1JNX1RSQUlUU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBTlNGT1JNX1RSQUlUU19IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9wb2ludGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfcmVmZXJlbmNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfYm91bmRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfcG9pbnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3JlZmVyZW5jZS5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9UUkFOU0ZPUk1fVFJBSVRTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy90eXBlX3dpdGhfYWxpZ25tZW50LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvdHlwZV93aXRoX2FsaWdubWVudC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5MTYwYzYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy90eXBlX3dpdGhfYWxpZ25tZW50LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM5OSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfVFlQRV9XSVRIX0FMSUdOTUVOVF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9UWVBFX1dJVEhfQUxJR05NRU5UX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2Zvcl9lYWNoX2kuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS90b19saXN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC90cmFuc2Zvcm0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2FwcGVuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWxpZ25tZW50X29mLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLSNpbmNsdWRlIDxjc3RkZGVmPgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jICAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEyMSkgLy8gYWxpZ25tZW50IGlzIHNlbnNpdGl2ZSB0byBwYWNraW5nCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotI2lmbmRlZiBfX0JPUkxBTkRDX18KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLWNsYXNzIGFsaWdubWVudF9kdW1teTsKLXR5cGVkZWYgdm9pZCAoKmZ1bmN0aW9uX3B0cikoKTsKLXR5cGVkZWYgaW50IChhbGlnbm1lbnRfZHVtbXk6OiptZW1iZXJfcHRyKTsKLXR5cGVkZWYgaW50IChhbGlnbm1lbnRfZHVtbXk6OiptZW1iZXJfZnVuY3Rpb25fcHRyKSgpOwotCi0jaWZkZWYgTkROQk9PU1RfSEFTX0xPTkdfTE9ORwotI2RlZmluZSBORE5CT09TVF9UVF9BTElHTk1FTlRfQkFTRV9UWVBFUyBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUKCBcCi0gICAgICAgIDEyLCAoIFwKLSAgICAgICAgY2hhciwgc2hvcnQsIGludCwgbG9uZywgIDo6bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlLCBmbG9hdCwgZG91YmxlLCBsb25nIGRvdWJsZSBcCi0gICAgICAgICwgdm9pZCosIGZ1bmN0aW9uX3B0ciwgbWVtYmVyX3B0ciwgbWVtYmVyX2Z1bmN0aW9uX3B0cikpCi0jZWxzZQotI2RlZmluZSBORE5CT09TVF9UVF9BTElHTk1FTlRfQkFTRV9UWVBFUyBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUKCBcCi0gICAgICAgIDExLCAoIFwKLSAgICAgICAgY2hhciwgc2hvcnQsIGludCwgbG9uZywgZmxvYXQsIGRvdWJsZSwgbG9uZyBkb3VibGUgXAotICAgICAgICAsIHZvaWQqLCBmdW5jdGlvbl9wdHIsIG1lbWJlcl9wdHIsIG1lbWJlcl9mdW5jdGlvbl9wdHIpKQotI2VuZGlmCi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX09ORV9UKEQsRGF0YSxUKSBuZG5ib29zdDo6ZGV0YWlsOjpoYXNfb25lX1Q8IFQgPgotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FMSUdOTUVOVF9TVFJVQ1RfVFlQRVMgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9QUF9MSVNUX1RSQU5TRk9STShORE5CT09TVF9UVF9IQVNfT05FX1QsICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1RUX0FMSUdOTUVOVF9CQVNFX1RZUEVTKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FMSUdOTUVOVF9UWVBFUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9QUF9MSVNUX0FQUEVORChORE5CT09TVF9UVF9BTElHTk1FTlRfQkFTRV9UWVBFUywgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfVFRfQUxJR05NRU5UX1NUUlVDVF9UWVBFUykKLQotLy8KLS8vIGxvd2VyX2FsaWdubWVudF9oZWxwZXIgLS0KLS8vCi0vLyBUaGlzIHRlbXBsYXRlIGdldHMgaW5zdGFudGlhdGVkIGEgbG90LCBzbyB1c2UgcGFydGlhbAotLy8gc3BlY2lhbGl6YXRpb24gd2hlbiBhdmFpbGFibGUgdG8gcmVkdWNlIHRoZSBjb21waWxlciBidXJkZW4uCi0vLwotI2lmZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLXRlbXBsYXRlIDxib29sIGZvdW5kID0gdHJ1ZT4KLXN0cnVjdCBsb3dlcl9hbGlnbm1lbnRfaGVscGVyX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QsIGNsYXNzPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBjaGFyIHR5cGU7Ci0gICAgICAgIGVudW0geyB2YWx1ZSA9IHRydWUgfTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBsb3dlcl9hbGlnbm1lbnRfaGVscGVyX2ltcGw8ZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IHRhcmdldCwgY2xhc3MgVGVzdFR5cGU+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgICA6IHB1YmxpYyBtcGw6OmlmX2M8KGFsaWdubWVudF9vZjxUZXN0VHlwZT46OnZhbHVlID09IHRhcmdldCksIFRlc3RUeXBlLCBjaGFyPgotICAgIHsKLSAgICAgICAgZW51bSB7IHZhbHVlID0gKGFsaWdubWVudF9vZjxUZXN0VHlwZT46OnZhbHVlID09IHRhcmdldCkgfTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGUgPGJvb2wgZm91bmQsIHN0ZDo6c2l6ZV90IHRhcmdldCwgY2xhc3MgVGVzdFR5cGU+Ci1zdHJ1Y3QgbG93ZXJfYWxpZ25tZW50X2hlbHBlcgotICA6IHB1YmxpYyBsb3dlcl9hbGlnbm1lbnRfaGVscGVyX2ltcGw8Zm91bmQ+Ojp0ZW1wbGF0ZSBhcHBseTx0YXJnZXQsVGVzdFR5cGU+Ci17Ci19OwotI2Vsc2UKLXRlbXBsYXRlIDxib29sIGZvdW5kLCBzdGQ6OnNpemVfdCB0YXJnZXQsIGNsYXNzIFRlc3RUeXBlPgotc3RydWN0IGxvd2VyX2FsaWdubWVudF9oZWxwZXIKLXsKLSAgICB0eXBlZGVmIGNoYXIgdHlwZTsKLSAgICBlbnVtIHsgdmFsdWUgPSB0cnVlIH07Ci19OwotCi10ZW1wbGF0ZSA8c3RkOjpzaXplX3QgdGFyZ2V0LCBjbGFzcyBUZXN0VHlwZT4KLXN0cnVjdCBsb3dlcl9hbGlnbm1lbnRfaGVscGVyPGZhbHNlLHRhcmdldCxUZXN0VHlwZT4KLXsKLSAgICBlbnVtIHsgdmFsdWUgPSAoYWxpZ25tZW50X29mPFRlc3RUeXBlPjo6dmFsdWUgPT0gdGFyZ2V0KSB9OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl9jPHZhbHVlLCBUZXN0VHlwZSwgY2hhcj46OnR5cGUgdHlwZTsKLX07Ci0jZW5kaWYKLQotI2RlZmluZSBORE5CT09TVF9UVF9DSE9PU0VfTUlOX0FMSUdOTUVOVChSLFAsSSxUKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHR5cGVuYW1lIGxvd2VyX2FsaWdubWVudF9oZWxwZXI8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICBORE5CT09TVF9QUF9DQVQoZm91bmQsSSksdGFyZ2V0LFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICA+Ojp0eXBlIE5ETkJPT1NUX1BQX0NBVCh0LEkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGVudW0geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIE5ETkJPT1NUX1BQX0NBVChmb3VuZCxORE5CT09TVF9QUF9JTkMoSSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICA9IGxvd2VyX2FsaWdubWVudF9oZWxwZXI8TkROQk9PU1RfUFBfQ0FUKGZvdW5kLEkpLHRhcmdldCxUID46OnZhbHVlICBcCi0gICAgICAgIH07Ci0KLSNkZWZpbmUgTkROQk9PU1RfVFRfQ0hPT1NFX1QoUixQLEksVCkgVCBORE5CT09TVF9QUF9DQVQodCxJKTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaGFzX29uZV9UCi17Ci0gIFQgZGF0YTsKLX07Ci0KLXRlbXBsYXRlIDxzdGQ6OnNpemVfdCB0YXJnZXQ+Ci11bmlvbiBsb3dlcl9hbGlnbm1lbnQKLXsKLSAgICBlbnVtIHsgZm91bmQwID0gZmFsc2UgfTsKLQotICAgIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSSgKLSAgICAgICAgICBORE5CT09TVF9UVF9DSE9PU0VfTUlOX0FMSUdOTUVOVAotICAgICAgICAsIGlnbm9yZWQKLSAgICAgICAgLCBORE5CT09TVF9UVF9BTElHTk1FTlRfVFlQRVMKLSAgICAgICAgKQotfTsKLQotdW5pb24gbWF4X2FsaWduCi17Ci0gICAgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JKAotICAgICAgICAgIE5ETkJPT1NUX1RUX0NIT09TRV9UCi0gICAgICAgICwgaWdub3JlZAotICAgICAgICAsIE5ETkJPT1NUX1RUX0FMSUdOTUVOVF9UWVBFUwotICAgICAgICApCi19OwotCi0jdW5kZWYgTkROQk9PU1RfVFRfQUxJR05NRU5UX0JBU0VfVFlQRVMKLSN1bmRlZiBORE5CT09TVF9UVF9IQVNfT05FX1QKLSN1bmRlZiBORE5CT09TVF9UVF9BTElHTk1FTlRfU1RSVUNUX1RZUEVTCi0jdW5kZWYgTkROQk9PU1RfVFRfQUxJR05NRU5UX1RZUEVTCi0jdW5kZWYgTkROQk9PU1RfVFRfQ0hPT1NFX01JTl9BTElHTk1FTlQKLSN1bmRlZiBORE5CT09TVF9UVF9DSE9PU0VfVAotCi10ZW1wbGF0ZTxzdGQ6OnNpemVfdCBUQWxpZ24sIHN0ZDo6c2l6ZV90IEFsaWduPgotc3RydWN0IGlzX2FsaWduZWQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwKLSAgICAgICAgdmFsdWUgPSAoVEFsaWduID49IEFsaWduKSAmIChUQWxpZ24gJSBBbGlnbiA9PSAwKQotICAgICAgICApOwotfTsKLQotI2lmZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9kLDo6bmRuYm9vc3Q6OmRldGFpbDo6bWF4X2FsaWduLHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvZCw6Om5kbmJvb3N0OjpkZXRhaWw6Omxvd2VyX2FsaWdubWVudDwxPiAsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9kLDo6bmRuYm9vc3Q6OmRldGFpbDo6bG93ZXJfYWxpZ25tZW50PDI+ICx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19wb2QsOjpuZG5ib29zdDo6ZGV0YWlsOjpsb3dlcl9hbGlnbm1lbnQ8ND4gLHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvZCw6Om5kbmJvb3N0OjpkZXRhaWw6Omxvd2VyX2FsaWdubWVudDw4PiAsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9kLDo6bmRuYm9vc3Q6OmRldGFpbDo6bG93ZXJfYWxpZ25tZW50PDEwPiAsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9kLDo6bmRuYm9vc3Q6OmRldGFpbDo6bG93ZXJfYWxpZ25tZW50PDE2PiAsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9kLDo6bmRuYm9vc3Q6OmRldGFpbDo6bG93ZXJfYWxpZ25tZW50PDMyPiAsdHJ1ZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi10ZW1wbGF0ZTxzdGQ6OnNpemVfdCBBbGlnbj4KLXN0cnVjdCBpc19wb2Q8IDo6bmRuYm9vc3Q6OmRldGFpbDo6bG93ZXJfYWxpZ25tZW50PEFsaWduPiA+Ci17Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSB0cnVlKTsKLX07Ci0jZW5kaWYKLQotLy8gVGhpcyBhbGlnbm1lbnQgbWV0aG9kIG9yaWdpbmFsbHkgZHVlIHRvIEJyaWFuIFBhcmtlciwgaW1wbGVtZW50ZWQgYnkgRGF2aWQKLS8vIEFicmFoYW1zLCBhbmQgdGhlbiBwb3J0ZWQgaGVyZSBieSBEb3VnIEdyZWdvci4KLW5hbWVzcGFjZSBkZXRhaWx7Ci0KLXRlbXBsYXRlIDxzdGQ6OnNpemVfdCBBbGlnbj4KLWNsYXNzIHR5cGVfd2l0aF9hbGlnbm1lbnRfaW1wCi17Ci0gICAgdHlwZWRlZiA6Om5kbmJvb3N0OjpkZXRhaWw6Omxvd2VyX2FsaWdubWVudDxBbGlnbj4gdDE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmX2M8Ci0gICAgICAgICAgOjpuZG5ib29zdDo6ZGV0YWlsOjppc19hbGlnbmVkPCA6Om5kbmJvb3N0OjphbGlnbm1lbnRfb2Y8dDE+Ojp2YWx1ZSxBbGlnbiA+Ojp2YWx1ZQotICAgICAgICAsIHQxCi0gICAgICAgICwgOjpuZG5ib29zdDo6ZGV0YWlsOjptYXhfYWxpZ24KLSAgICAgICAgPjo6dHlwZSBhbGlnbl90OwotCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCBmb3VuZCA9IGFsaWdubWVudF9vZjxhbGlnbl90Pjo6dmFsdWUpOwotCi0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChmb3VuZCA+PSBBbGlnbik7Ci0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChmb3VuZCAlIEFsaWduID09IDApOwotCi0gcHVibGljOgotICAgIHR5cGVkZWYgYWxpZ25fdCB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZSA8c3RkOjpzaXplX3QgQWxpZ24+Ci1jbGFzcyB0eXBlX3dpdGhfYWxpZ25tZW50IAotICA6IHB1YmxpYyA6Om5kbmJvb3N0OjpkZXRhaWw6OnR5cGVfd2l0aF9hbGlnbm1lbnRfaW1wPEFsaWduPgotewotfTsKLQotI2lmIGRlZmluZWQoX19HTlVDX18pCi1uYW1lc3BhY2UgYWxpZ24gewotc3RydWN0IF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKDIpKSkgYTIge307Ci1zdHJ1Y3QgX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oNCkpKSBhNCB7fTsKLXN0cnVjdCBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXyg4KSkpIGE4IHt9Owotc3RydWN0IF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKDE2KSkpIGExNiB7fTsKLXN0cnVjdCBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygzMikpKSBhMzIge307Ci1zdHJ1Y3QgX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oNjQpKSkgYTY0IHt9Owotc3RydWN0IF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKDEyOCkpKSBhMTI4IHt9OwotfQotCi10ZW1wbGF0ZTw+IGNsYXNzIHR5cGVfd2l0aF9hbGlnbm1lbnQ8MT4gIHsgcHVibGljOiB0eXBlZGVmIGNoYXIgdHlwZTsgfTsKLXRlbXBsYXRlPD4gY2xhc3MgdHlwZV93aXRoX2FsaWdubWVudDwyPiAgeyBwdWJsaWM6IHR5cGVkZWYgYWxpZ246OmEyIHR5cGU7IH07Ci10ZW1wbGF0ZTw+IGNsYXNzIHR5cGVfd2l0aF9hbGlnbm1lbnQ8ND4gIHsgcHVibGljOiB0eXBlZGVmIGFsaWduOjphNCB0eXBlOyB9OwotdGVtcGxhdGU8PiBjbGFzcyB0eXBlX3dpdGhfYWxpZ25tZW50PDg+ICB7IHB1YmxpYzogdHlwZWRlZiBhbGlnbjo6YTggdHlwZTsgfTsKLXRlbXBsYXRlPD4gY2xhc3MgdHlwZV93aXRoX2FsaWdubWVudDwxNj4geyBwdWJsaWM6IHR5cGVkZWYgYWxpZ246OmExNiB0eXBlOyB9OwotdGVtcGxhdGU8PiBjbGFzcyB0eXBlX3dpdGhfYWxpZ25tZW50PDMyPiB7IHB1YmxpYzogdHlwZWRlZiBhbGlnbjo6YTMyIHR5cGU7IH07Ci10ZW1wbGF0ZTw+IGNsYXNzIHR5cGVfd2l0aF9hbGlnbm1lbnQ8NjQ+IHsgcHVibGljOiB0eXBlZGVmIGFsaWduOjphNjQgdHlwZTsgfTsKLXRlbXBsYXRlPD4gY2xhc3MgdHlwZV93aXRoX2FsaWdubWVudDwxMjg+IHsgcHVibGljOiB0eXBlZGVmIGFsaWduOjphMTI4IHR5cGU7IH07Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19wb2QsOjpuZG5ib29zdDo6YWxpZ246OmEyLHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvZCw6Om5kbmJvb3N0OjphbGlnbjo6YTQsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9kLDo6bmRuYm9vc3Q6OmFsaWduOjphOCx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19wb2QsOjpuZG5ib29zdDo6YWxpZ246OmExNix0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19wb2QsOjpuZG5ib29zdDo6YWxpZ246OmEzMix0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19wb2QsOjpuZG5ib29zdDo6YWxpZ246OmE2NCx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19wb2QsOjpuZG5ib29zdDo6YWxpZ246OmExMjgsdHJ1ZSkKLX0KLSNlbmRpZgotI2lmIChkZWZpbmVkKE5ETkJPT1NUX01TVkMpIHx8IChkZWZpbmVkKE5ETkJPT1NUX0lOVEVMKSAmJiBkZWZpbmVkKF9NU0NfVkVSKSkpICYmIF9NU0NfVkVSID49IDEzMDAKLS8vCi0vLyBNU1ZDIHN1cHBvcnRzIHR5cGVzIHdoaWNoIGhhdmUgYWxpZ25tZW50cyBncmVhdGVyIHRoYW4gdGhlIG5vcm1hbAotLy8gbWF4aW11bTogdGhlc2UgYXJlIHVzZWQgZm9yIGV4YW1wbGUgaW4gdGhlIHR5cGVzIF9fbTY0IGFuZCBfX20xMjgKLS8vIHRvIHByb3ZpZGUgdHlwZXMgd2l0aCBhbGlnbm1lbnQgcmVxdWlyZW1lbnRzIHdoaWNoIG1hdGNoIHRoZSBTU0UKLS8vIHJlZ2lzdGVycy4gIFRoZXJlZm9yZSB3ZSBleHRlbmQgdHlwZV93aXRoX2FsaWdubWVudDw+IHRvIHN1cHBvcnQKLS8vIHN1Y2ggdHlwZXMsIGhvd2V2ZXIsIHdlIGhhdmUgdG8gYmUgY2FyZWZ1bCB0byB1c2UgYSBidWlsdGluIHR5cGUKLS8vIHdoZW5ldmVyIHBvc3NpYmxlIG90aGVyd2lzZSB3ZSBicmVhayBwcmV2aW91c2x5IHdvcmtpbmcgY29kZToKLS8vIHNlZSBodHRwOi8vYXJ0aWNsZS5nbWFuZS5vcmcvZ21hbmUuY29tcC5saWIuYm9vc3QuZGV2ZWwvMTczMDExCi0vLyBmb3IgYW4gZXhhbXBsZSBhbmQgdGVzdCBjYXNlLiAgVGh1cyB0eXBlcyBsaWtlIGE4IGJlbG93IHdpbGwKLS8vIGJlIHVzZWQgKm9ubHkqIGlmIHRoZSBleGlzdGluZyBpbXBsZW1lbnRhdGlvbiBjYW4ndCBwcm92aWRlIGEgdHlwZQotLy8gd2l0aCBzdWl0YWJsZSBhbGlnbm1lbnQuICBUaGlzIGRvZXMgbWVhbiBob3dldmVyLCB0aGF0IHR5cGVfd2l0aF9hbGlnbm1lbnQ8PgotLy8gbWF5IHJldHVybiBhIHR5cGUgd2hpY2ggY2Fubm90IGJlIHBhc3NlZCB0aHJvdWdoIGEgZnVuY3Rpb24gY2FsbAotLy8gYnkgdmFsdWUgKGFuZCBuZWl0aGVyIGNhbiBhbnkgdHlwZSBjb250YWluaW5nIHN1Y2ggYSB0eXBlIGxpa2UKLS8vIEJvb3N0Lk9wdGlvbmFsKS4gIEhvd2V2ZXIsIHRoaXMgb25seSBoYXBwZW5zIHdoZW4gd2UgaGF2ZSBubyBjaG9pY2UgCi0vLyBpbiB0aGUgbWF0dGVyIGJlY2F1c2Ugbm8gb3RoZXIgIm9yZGluYXJ5IiB0eXBlIGlzIGF2YWlsYWJsZS4KLS8vCi1uYW1lc3BhY2UgYWxpZ24gewotc3RydWN0IF9fZGVjbHNwZWMoYWxpZ24oOCkpIGE4IHsgCi0gICBjaGFyIG1bOF07IAotICAgdHlwZWRlZiBhOCB0eXBlOwotfTsKLXN0cnVjdCBfX2RlY2xzcGVjKGFsaWduKDE2KSkgYTE2IHsgCi0gICBjaGFyIG1bMTZdOyAKLSAgIHR5cGVkZWYgYTE2IHR5cGU7Ci19Owotc3RydWN0IF9fZGVjbHNwZWMoYWxpZ24oMzIpKSBhMzIgeyAKLSAgIGNoYXIgbVszMl07IAotICAgdHlwZWRlZiBhMzIgdHlwZTsKLX07Ci1zdHJ1Y3QgX19kZWNsc3BlYyhhbGlnbig2NCkpIGE2NCAKLXsgCi0gICBjaGFyIG1bNjRdOyAKLSAgIHR5cGVkZWYgYTY0IHR5cGU7Ci19Owotc3RydWN0IF9fZGVjbHNwZWMoYWxpZ24oMTI4KSkgYTEyOCB7IAotICAgY2hhciBtWzEyOF07IAotICAgdHlwZWRlZiBhMTI4IHR5cGU7Ci19OwotfQotCi10ZW1wbGF0ZTw+IGNsYXNzIHR5cGVfd2l0aF9hbGlnbm1lbnQ8OD4gIAoteyAKLSAgIHR5cGVkZWYgbXBsOjppZl9jPAotICAgICAgOjpuZG5ib29zdDo6YWxpZ25tZW50X29mPG5kbmJvb3N0OjpkZXRhaWw6Om1heF9hbGlnbj46OnZhbHVlIDwgOCwKLSAgICAgIGFsaWduOjphOCwKLSAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnR5cGVfd2l0aF9hbGlnbm1lbnRfaW1wPDg+ID46OnR5cGUgdDE7IAotcHVibGljOiAKLSAgIHR5cGVkZWYgdDE6OnR5cGUgdHlwZTsKLX07Ci10ZW1wbGF0ZTw+IGNsYXNzIHR5cGVfd2l0aF9hbGlnbm1lbnQ8MTY+IAoteyAKLSAgIHR5cGVkZWYgbXBsOjppZl9jPAotICAgICAgOjpuZG5ib29zdDo6YWxpZ25tZW50X29mPG5kbmJvb3N0OjpkZXRhaWw6Om1heF9hbGlnbj46OnZhbHVlIDwgMTYsCi0gICAgICBhbGlnbjo6YTE2LAotICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6dHlwZV93aXRoX2FsaWdubWVudF9pbXA8MTY+ID46OnR5cGUgdDE7IAotcHVibGljOiAKLSAgIHR5cGVkZWYgdDE6OnR5cGUgdHlwZTsKLX07Ci10ZW1wbGF0ZTw+IGNsYXNzIHR5cGVfd2l0aF9hbGlnbm1lbnQ8MzI+IAoteyAKLSAgIHR5cGVkZWYgbXBsOjppZl9jPAotICAgICAgOjpuZG5ib29zdDo6YWxpZ25tZW50X29mPG5kbmJvb3N0OjpkZXRhaWw6Om1heF9hbGlnbj46OnZhbHVlIDwgMzIsCi0gICAgICBhbGlnbjo6YTMyLAotICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6dHlwZV93aXRoX2FsaWdubWVudF9pbXA8MzI+ID46OnR5cGUgdDE7IAotcHVibGljOiAKLSAgIHR5cGVkZWYgdDE6OnR5cGUgdHlwZTsKLX07Ci10ZW1wbGF0ZTw+IGNsYXNzIHR5cGVfd2l0aF9hbGlnbm1lbnQ8NjQ+IHsKLSAgIHR5cGVkZWYgbXBsOjppZl9jPAotICAgICAgOjpuZG5ib29zdDo6YWxpZ25tZW50X29mPG5kbmJvb3N0OjpkZXRhaWw6Om1heF9hbGlnbj46OnZhbHVlIDwgNjQsCi0gICAgICBhbGlnbjo6YTY0LAotICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6dHlwZV93aXRoX2FsaWdubWVudF9pbXA8NjQ+ID46OnR5cGUgdDE7IAotcHVibGljOiAKLSAgIHR5cGVkZWYgdDE6OnR5cGUgdHlwZTsKLX07Ci10ZW1wbGF0ZTw+IGNsYXNzIHR5cGVfd2l0aF9hbGlnbm1lbnQ8MTI4PiB7Ci0gICB0eXBlZGVmIG1wbDo6aWZfYzwKLSAgICAgIDo6bmRuYm9vc3Q6OmFsaWdubWVudF9vZjxuZG5ib29zdDo6ZGV0YWlsOjptYXhfYWxpZ24+Ojp2YWx1ZSA8IDEyOCwKLSAgICAgIGFsaWduOjphMTI4LAotICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6dHlwZV93aXRoX2FsaWdubWVudF9pbXA8MTI4PiA+Ojp0eXBlIHQxOyAKLXB1YmxpYzogCi0gICB0eXBlZGVmIHQxOjp0eXBlIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9kLDo6bmRuYm9vc3Q6OmFsaWduOjphOCx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19wb2QsOjpuZG5ib29zdDo6YWxpZ246OmExNix0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19wb2QsOjpuZG5ib29zdDo6YWxpZ246OmEzMix0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19wb2QsOjpuZG5ib29zdDo6YWxpZ246OmE2NCx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19wb2QsOjpuZG5ib29zdDo6YWxpZ246OmExMjgsdHJ1ZSkKLX0KLSNlbmRpZgotCi0jZWxzZQotCi0vLwotLy8gQm9ybGFuZCBzcGVjaWZpYyB2ZXJzaW9uLCB3ZSBoYXZlIHRoaXMgZm9yIHR3byByZWFzb25zOgotLy8gMSkgVGhlIHZlcnNpb24gYWJvdmUgZG9lc24ndCBhbHdheXMgY29tcGlsZSAod2l0aCB0aGUgbmV3IHRlc3QgY2FzZXMgZm9yIGV4YW1wbGUpCi0vLyAyKSBCZWNhdXNlIG9mIEJvcmxhbmRzICNwcmFnbWEgb3B0aW9uIHdlIGNhbiBjcmVhdGUgdHlwZXMgd2l0aCBhbGlnbm1lbnRzIHRoYXQgYXJlCi0vLyAgICBncmVhdGVyIHRoYXQgdGhlIGxhcmdlc3QgYWxpZ25lZCBidWlsdGluIHR5cGUuCi0KLW5hbWVzcGFjZSBhbGlnbnsKLSNwcmFnbWEgb3B0aW9uIHB1c2ggLWExNgotc3RydWN0IGEyeyBzaG9ydCBzOyB9Owotc3RydWN0IGE0eyBpbnQgczsgfTsKLXN0cnVjdCBhOHsgZG91YmxlIHM7IH07Ci1zdHJ1Y3QgYTE2eyBsb25nIGRvdWJsZSBzOyB9OwotI3ByYWdtYSBvcHRpb24gcG9wCi19Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10eXBlZGVmIDo6bmRuYm9vc3Q6OmFsaWduOjphMTYgbWF4X2FsaWduOwotCi0vLyNpZiAhIE5ETkJPT1NUX1dPUktBUk9VTkQoX19DT0RFR0VBUkNfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NjEwKSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9kLDo6bmRuYm9vc3Q6OmFsaWduOjphMix0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19wb2QsOjpuZG5ib29zdDo6YWxpZ246OmE0LHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvZCw6Om5kbmJvb3N0OjphbGlnbjo6YTgsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9kLDo6bmRuYm9vc3Q6OmFsaWduOjphMTYsdHJ1ZSkKLS8vI2VuZGlmCi19Ci0KLXRlbXBsYXRlIDxzdGQ6OnNpemVfdCBOPiBzdHJ1Y3QgdHlwZV93aXRoX2FsaWdubWVudAotewotICAgLy8gV2Ugc2hvdWxkIG5ldmVyIGdldCB0byBoZXJlLCBidXQgaWYgd2UgZG8gdXNlIHRoZSBtYXhpbWFsbHkKLSAgIC8vIGFsaWduZWQgdHlwZToKLSAgIC8vIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoMCk7Ci0gICB0eXBlZGVmIGFsaWduOjphMTYgdHlwZTsKLX07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgdHlwZV93aXRoX2FsaWdubWVudDwxPnsgdHlwZWRlZiBjaGFyIHR5cGU7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgdHlwZV93aXRoX2FsaWdubWVudDwyPnsgdHlwZWRlZiBhbGlnbjo6YTIgdHlwZTsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCB0eXBlX3dpdGhfYWxpZ25tZW50PDQ+eyB0eXBlZGVmIGFsaWduOjphNCB0eXBlOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IHR5cGVfd2l0aF9hbGlnbm1lbnQ8OD57IHR5cGVkZWYgYWxpZ246OmE4IHR5cGU7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgdHlwZV93aXRoX2FsaWdubWVudDwxNj57IHR5cGVkZWYgYWxpZ246OmExNiB0eXBlOyB9OwotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgICBwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX1RZUEVfV0lUSF9BTElHTk1FTlRfSU5DTFVERUQKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9kbWMvdHlwZW9mX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvZG1jL3R5cGVvZl9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2I0MGY3Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9kbWMvdHlwZW9mX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNyBQZWRlciBIb2x0Ci0KLS8vIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9NU1ZDX1RZUEVPRl9JTVBMX0hQUF9JTkNMVURFRAotIyBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX01TVkNfVFlQRU9GX0lNUExfSFBQX0lOQ0xVREVECi0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaW50LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gICAgbmFtZXNwYWNlIHR5cGVfb2YKLSAgICB7Ci0KLSAgICAgICAgdGVtcGxhdGU8aW50IE4+IHN0cnVjdCBlbmNvZGVfY291bnRlciA6IGVuY29kZV9jb3VudGVyPE4gLSAxPiB7fTsKLSAgICAgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgZW5jb2RlX2NvdW50ZXI8MD4ge307Ci0KLSAgICAgICAgY2hhciAoKmVuY29kZV9pbmRleCguLi4pKVsxXTsKLQotIyBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0lOREVYKFQpIChzaXplb2YoKm5kbmJvb3N0Ojp0eXBlX29mOjplbmNvZGVfaW5kZXgoKG5kbmJvb3N0Ojp0eXBlX29mOjplbmNvZGVfY291bnRlcjwxMDAwPiopMCkpKQotIyBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05FWFRfSU5ERVgobmV4dCkgZnJpZW5kIGNoYXIgKCplbmNvZGVfaW5kZXgoZW5jb2RlX2NvdW50ZXI8bmV4dD4qKSlbbmV4dF07Ci0KLQotICAgICAgICAvL1R5cGVvZiBjb2RlCi0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSUQ+Ci0gICAgICAgIHN0cnVjdCBtc3ZjX2V4dHJhY3RfdHlwZQotICAgICAgICB7Ci0gICAgICAgICAgICBzdHJ1Y3QgaWQydHlwZTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBJRD4KLSAgICAgICAgc3RydWN0IG1zdmNfcmVnaXN0ZXJfdHlwZSA6IG1zdmNfZXh0cmFjdF90eXBlPElEPgotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIG1zdmNfZXh0cmFjdF90eXBlPElEPiBiYXNlX3R5cGU7Ci0gICAgICAgICAgICBzdHJ1Y3QgYmFzZV90eXBlOjppZDJ0eXBlIC8vIFRoaXMgdXNlcyBuaWNlIFZDNi41IGFuZCBWQzcuMSBidWdmZWF0dXJlLCBhbHNvIHdvcmtzIGZvciBEaWdpdGFsIE1hcnMKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0KLQotICAgICAgICB0ZW1wbGF0ZTxpbnQgSUQ+Ci0gICAgICAgIHN0cnVjdCBtc3ZjX3R5cGVpZF93cmFwcGVyIHsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8bXBsOjppbnRfPElEPiA+OjppZDJ0eXBlIGlkMnR5cGU7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlkMnR5cGU6OnR5cGUgdHlwZTsKLSAgICAgICAgfTsKLQotICAgICAgICAvL1RpZSBpdCBhbGwgdG9nZXRoZXIKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RydWN0IGVuY29kZV90eXBlCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vR2V0IHRoZSBuZXh0IGF2YWlsYWJsZSBjb21waWxlIHRpbWUgY29uc3RhbnRzIGluZGV4Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsdmFsdWU9TkROQk9PU1RfVFlQRU9GX0lOREVYKFQpKTsKLSAgICAgICAgICAgIC8vSW5zdGFudGlhdGUgdGhlIHRlbXBsYXRlCi0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfcmVnaXN0ZXJfdHlwZTxULG1wbDo6aW50Xzx2YWx1ZT4gPjo6aWQydHlwZSB0eXBlOwotICAgICAgICAgICAgLy9TZXQgdGhlIG5leHQgY29tcGlsZSB0aW1lIGNvbnN0YW50cyBpbmRleAotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLG5leHQ9dmFsdWUrMSk7Ci0gICAgICAgICAgICAvL0luY3JlbWVudCB0aGUgY29tcGlsZSB0aW1lIGNvbnN0YW50IChvbmx5IG5lZWRlZCB3aGVuIGV4dGVuc2lvbnMgYXJlIG5vdCBhY3RpdmUKLSAgICAgICAgICAgIE5ETkJPT1NUX1RZUEVPRl9ORVhUX0lOREVYKG5leHQpOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgICAgIHN0cnVjdCBzaXplcgotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIGNoYXIoKnR5cGUpW2VuY29kZV90eXBlPFQ+Ojp2YWx1ZV07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgICAgIHR5cGVuYW1lIHNpemVyPFQ+Ojp0eXBlIGVuY29kZV9zdGFydChUIGNvbnN0Jik7Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3JnYW5pemVyLCB0eXBlbmFtZSBUPgotICAgICAgICBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxPcmdhbml6ZXI+IHR5cGVvZl9yZWdpc3Rlcl90eXBlKGNvbnN0IFQmLE9yZ2FuaXplciogPTApOwotCi0jIGRlZmluZSBORE5CT09TVF9UWVBFT0YoZXhwcikgXAotICAgIG5kbmJvb3N0Ojp0eXBlX29mOjptc3ZjX3R5cGVpZF93cmFwcGVyPHNpemVvZigqbmRuYm9vc3Q6OnR5cGVfb2Y6OmVuY29kZV9zdGFydChleHByKSk+Ojp0eXBlCi0KLSMgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9UUEwoZXhwcikgdHlwZW5hbWUgTkROQk9PU1RfVFlQRU9GKGV4cHIpCi0KLSMgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9ORVNURURfVFlQRURFRl9UUEwobmFtZSxleHByKSBcCi0gICAgc3RydWN0IG5hbWUge1wKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCxfdHlwZW9mX3JlZ2lzdGVyX3ZhbHVlPXNpemVvZihuZG5ib29zdDo6dHlwZV9vZjo6dHlwZW9mX3JlZ2lzdGVyX3R5cGU8bmFtZT4oZXhwcikpKTtcCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnR5cGVfb2Y6Om1zdmNfZXh0cmFjdF90eXBlPG5hbWU+OjppZDJ0eXBlIGlkMnR5cGU7XAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlkMnR5cGU6OnR5cGUgdHlwZTtcCi0gICAgfTsKLQotIyBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05FU1RFRF9UWVBFREVGKG5hbWUsZXhwcikgXAotICAgIHN0cnVjdCBuYW1lIHtcCi0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsX3R5cGVvZl9yZWdpc3Rlcl92YWx1ZT1zaXplb2YobmRuYm9vc3Q6OnR5cGVfb2Y6OnR5cGVvZl9yZWdpc3Rlcl90eXBlPG5hbWU+KGV4cHIpKSk7XAotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjptc3ZjX2V4dHJhY3RfdHlwZTxuYW1lPjo6aWQydHlwZSBpZDJ0eXBlO1wKLSAgICAgICAgdHlwZWRlZiBpZDJ0eXBlOjp0eXBlIHR5cGU7XAotICAgIH07Ci0KLSAgICB9Ci19Ci0KLSNlbmRpZi8vTkROQk9PU1RfVFlQRU9GX01TVkNfVFlQRU9GX0lNUExfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9lbmNvZGVfZGVjb2RlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL2VuY29kZV9kZWNvZGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNWExMTYwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL2VuY29kZV9kZWNvZGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA0IEFya2FkaXkgVmVydGxleWIKLQotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vIGJvb3N0aW5zcGVjdDpub3VubmFtZWQKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFT0ZfRU5DT0RFX0RFQ09ERV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0VOQ09ERV9ERUNPREVfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZGVyZWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9uZXh0LmhwcD4KLQotI2lmbmRlZiBORE5CT09TVF9UWVBFT0ZfU1VQUFJFU1NfVU5OQU1FRF9OQU1FU1BBQ0UKLQotIyAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfQkVHSU5fRU5DT0RFX05TIG5hbWVzcGFjZSB7IG5hbWVzcGFjZSBuZG5ib29zdF90eXBlb2YgewotIyAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfRU5EX0VOQ09ERV9OUyB9fQotIyAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfRU5DT0RFX05TX1FVQUxJRklFUiBuZG5ib29zdF90eXBlb2YKLQotI2Vsc2UKLQotIyAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfQkVHSU5fRU5DT0RFX05TIG5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB0eXBlX29mIHsKLSMgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0VORF9FTkNPREVfTlMgfX0KLSMgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0VOQ09ERV9OU19RVUFMSUZJRVIgbmRuYm9vc3Q6OnR5cGVfb2YKLQotIyAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfVEVYVCAidW5uYW1lZCBuYW1lc3BhY2UgaXMgb2ZmIgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi9tZXNzYWdlLmhwcD4KLQotI2VuZGlmCi0KLU5ETkJPT1NUX1RZUEVPRl9CRUdJTl9FTkNPREVfTlMKLQotdGVtcGxhdGU8Y2xhc3MgViwgY2xhc3MgVHlwZV9Ob3RfUmVnaXN0ZXJlZF9XaXRoX1R5cGVvZl9TeXN0ZW0+Ci1zdHJ1Y3QgZW5jb2RlX3R5cGVfaW1wbDsKLQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgSXRlcj4KLXN0cnVjdCBkZWNvZGVfdHlwZV9pbXBsCi17Ci0gICAgdHlwZWRlZiBpbnQgdHlwZTsgIC8vIE1TVkMgRVRJIHdvcmthcm91bmQKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgZGVjb2RlX25lc3RlZF90ZW1wbGF0ZV9oZWxwZXJfaW1wbDsKLQotTkROQk9PU1RfVFlQRU9GX0VORF9FTkNPREVfTlMKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHR5cGVfb2YgewotCi0gICAgdGVtcGxhdGU8Y2xhc3MgViwgY2xhc3MgVD4KLSAgICBzdHJ1Y3QgZW5jb2RlX3R5cGUgOiBORE5CT09TVF9UWVBFT0ZfRU5DT0RFX05TX1FVQUxJRklFUjo6ZW5jb2RlX3R5cGVfaW1wbDxWLCBUPgotICAgIHt9OwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgSXRlcj4KLSAgICBzdHJ1Y3QgZGVjb2RlX3R5cGUgOiBORE5CT09TVF9UWVBFT0ZfRU5DT0RFX05TX1FVQUxJRklFUjo6ZGVjb2RlX3R5cGVfaW1wbDwKLSAgICAgICAgdHlwZW5hbWUgSXRlcjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgSXRlcjo6bmV4dAotICAgID4KLSAgICB7fTsKLX19Ci0KLSNlbmRpZi8vTkROQk9PU1RfVFlQRU9GX0VOQ09ERV9ERUNPREVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9lbmNvZGVfZGVjb2RlX3BhcmFtcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9lbmNvZGVfZGVjb2RlX3BhcmFtcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyMmI0NzYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvZW5jb2RlX2RlY29kZV9wYXJhbXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA1IEFya2FkaXkgVmVydGxleWIKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9FTkNPREVfREVDT0RFX1BBUkFNU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0VOQ09ERV9ERUNPREVfUEFSQU1TX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vcmVwZWF0LmhwcD4KLQotLy8gQXNzdW1lcyBpdGVyMCBjb250YWlucyBpbml0aWFsIGl0ZXJhdG9yCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0RFQ09ERV9QQVJBTSh6LCBuLCB0ZXh0KSAgIFwKLSAgICB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjpkZWNvZGVfdHlwZTxpdGVyIyNuPiBkZWNvZGUjI247ICAgICBcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZWNvZGUjI246OnR5cGUgcCMjbjsgICAgICBcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZWNvZGUjI246Oml0ZXIgTkROQk9PU1RfUFBfQ0FUKGl0ZXIsIE5ETkJPT1NUX1BQX0lOQyhuKSk7Ci0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0RFQ09ERV9QQVJBTVMobilcCi0gICAgTkROQk9PU1RfUFBfUkVQRUFUKG4sIE5ETkJPT1NUX1RZUEVPRl9ERUNPREVfUEFSQU0sIH4pCi0KLS8vIFRoZSBQMCwgUDEsIC4uLiBQTiBhcmUgZW5jb2RlZCBhbmQgYWRkZWQgdG8gViAKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfRU5DT0RFX1BBUkFNU19CRUdJTih6LCBuLCB0ZXh0KVwKLSAgICB0eXBlbmFtZSBuZG5ib29zdDo6dHlwZV9vZjo6ZW5jb2RlX3R5cGU8Ci0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0VOQ09ERV9QQVJBTVNfRU5EKHosIG4sIHRleHQpXAotICAgICwgTkROQk9PU1RfUFBfQ0FUKFAsIG4pPjo6dHlwZQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9FTkNPREVfUEFSQU1TKG4sIElEKSAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfUFBfUkVQRUFUKG4sIE5ETkJPT1NUX1RZUEVPRl9FTkNPREVfUEFSQU1TX0JFR0lOLCB+KSBcCi0gICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnR5cGVfb2Y6OnB1c2hfYmFjazxWLCBuZG5ib29zdDo6bXBsOjpzaXplX3Q8SUQ+ID46OnR5cGUgICAgICBcCi0gICAgTkROQk9PU1RfUFBfUkVQRUFUKG4sIE5ETkJPT1NUX1RZUEVPRl9FTkNPREVfUEFSQU1TX0VORCwgfikKLQotI2VuZGlmLy9ORE5CT09TVF9UWVBFT0ZfRU5DT0RFX0RFQ09ERV9QQVJBTVNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9pbnRfZW5jb2RpbmcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvaW50X2VuY29kaW5nLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDM3Mjc3Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9pbnRfZW5jb2RpbmcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE4ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNCBBcmthZGl5IFZlcnRsZXliCi0vLyBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFT0ZfSU5UX0VOQ09ESU5HX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfSU5UX0VOQ09ESU5HX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvc2l6ZV90LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdHlwZV9vZiB7Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3QgZ2V0X3Vuc2lnbmVkCi0gICAgewotICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICB9OwotICAgIHRlbXBsYXRlPD4gc3RydWN0IGdldF91bnNpZ25lZDxzaWduZWQgY2hhcj4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdW5zaWduZWQgY2hhciB0eXBlOwotICAgIH07Ci0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgZ2V0X3Vuc2lnbmVkPGNoYXI+Ci0gICAgewotICAgICAgICB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdHlwZTsKLSAgICB9OwotICAgIHRlbXBsYXRlPD4gc3RydWN0IGdldF91bnNpZ25lZDxzaG9ydD4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdHlwZTsKLSAgICB9OwotICAgIHRlbXBsYXRlPD4gc3RydWN0IGdldF91bnNpZ25lZDxpbnQ+Ci0gICAgewotICAgICAgICB0eXBlZGVmIHVuc2lnbmVkIGludCB0eXBlOwotICAgIH07Ci0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgZ2V0X3Vuc2lnbmVkPGxvbmc+Ci0gICAgewotICAgICAgICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdHlwZTsKLSAgICB9OwotCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgIHRlbXBsYXRlPHN0ZDo6c2l6ZV90IG4sIGJvb2wgT3ZlcmZsb3c+Ci0gICAgc3RydWN0IHBhY2sKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCAsIHZhbHVlPSgobiArIDEpICogMiArIChPdmVyZmxvdyA/IDEgOiAwKSkpOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTxzdGQ6OnNpemVfdCBtPgotICAgIHN0cnVjdCB1bnBhY2sKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSAobSAvIDIpIC0gMSk7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgb3ZlcmZsb3cgPSAobSAlIDIgPT0gMSkpOwotICAgIH07Ci0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgViwgc3RkOjpzaXplX3QgbiwgYm9vbCBvdmVyZmxvdyA9IChuID49IDB4M2ZmZmZmZmYpPgotICAgIHN0cnVjdCBlbmNvZGVfc2l6ZV90IDogcHVzaF9iYWNrPAotICAgICAgICBWLAotICAgICAgICBuZG5ib29zdDo6bXBsOjpzaXplX3Q8cGFjazxuLCBmYWxzZT46OnZhbHVlPgotICAgID4KLSAgICB7fTsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFYsIHN0ZDo6c2l6ZV90IG4+Ci0gICAgc3RydWN0IGVuY29kZV9zaXplX3Q8ViwgbiwgdHJ1ZT4gOiBwdXNoX2JhY2s8dHlwZW5hbWUgcHVzaF9iYWNrPAotICAgICAgICBWLAotICAgICAgICBuZG5ib29zdDo6bXBsOjpzaXplX3Q8cGFjazxuICUgMHgzZmZmZmZmZSwgdHJ1ZT46OnZhbHVlPiA+Ojp0eXBlLAotICAgICAgICBuZG5ib29zdDo6bXBsOjpzaXplX3Q8biAvIDB4M2ZmZmZmZmU+Ci0gICAgPgotICAgIHt9OwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgViwgY2xhc3MgVCwgVCBuPgotICAgIHN0cnVjdCBlbmNvZGVfaW50ZWdyYWwgOiBlbmNvZGVfc2l6ZV90PCBWLCAodHlwZW5hbWUgZ2V0X3Vuc2lnbmVkPFQ+Ojp0eXBlKW4sKCgodHlwZW5hbWUgZ2V0X3Vuc2lnbmVkPFQ+Ojp0eXBlKW4pPj0weDNmZmZmZmZmKSA+Ci0gICAge307Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWLCBib29sIGI+Ci0gICAgc3RydWN0IGVuY29kZV9pbnRlZ3JhbDxWLCBib29sLCBiPiA6IGVuY29kZV9zaXplX3Q8IFYsIGI/MTowLCBmYWxzZT4KLSAgICB7fTsKLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgIHRlbXBsYXRlPHN0ZDo6c2l6ZV90IG4sIGNsYXNzIEl0ZXIsIGJvb2wgb3ZlcmZsb3c+Ci0gICAgc3RydWN0IGRlY29kZV9zaXplX3Q7Ci0KLSAgICB0ZW1wbGF0ZTxzdGQ6OnNpemVfdCBuLCBjbGFzcyBJdGVyPgotICAgIHN0cnVjdCBkZWNvZGVfc2l6ZV90PG4sIEl0ZXIsIGZhbHNlPgotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LHZhbHVlID0gbik7Ci0gICAgICAgIHR5cGVkZWYgSXRlciBpdGVyOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTxzdGQ6OnNpemVfdCBuLCBjbGFzcyBJdGVyPgotICAgIHN0cnVjdCBkZWNvZGVfc2l6ZV90PG4sIEl0ZXIsIHRydWU+Ci0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsbSA9IEl0ZXI6OnR5cGU6OnZhbHVlKTsKLQotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsdmFsdWUgPSAoc3RkOjpzaXplX3QpbSAqIDB4M2ZmZmZmZmUgKyBuKTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBJdGVyOjpuZXh0IGl0ZXI7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEl0ZXI+Ci0gICAgc3RydWN0IGRlY29kZV9pbnRlZ3JhbAotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWNvZGVfaW50ZWdyYWw8VCxJdGVyPiBzZWxmX3Q7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCxtID0gSXRlcjo6dHlwZTo6dmFsdWUpOwotCi0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCxuID0gdW5wYWNrPG0+Ojp2YWx1ZSk7Ci0KLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LG92ZXJmbG93ID0gdW5wYWNrPG0+OjpvdmVyZmxvdyk7Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBJdGVyOjpuZXh0IG5leHRwb3M7Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IFQgdmFsdWUgPSAoVCkoc3RkOjpzaXplX3QpZGVjb2RlX3NpemVfdDxuLCBuZXh0cG9zLCBvdmVyZmxvdz46OnZhbHVlOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGVjb2RlX3NpemVfdDxzZWxmX3Q6Om4sIG5leHRwb3MsIHNlbGZfdDo6b3ZlcmZsb3c+OjppdGVyIGl0ZXI7Ci0gICAgfTsKLQotfX0vL25hbWVzcGFjZQotCi0jZW5kaWYvL05ETkJPT1NUX1RZUEVPRl9JTlRfRU5DT0RJTkdfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9pbnRlZ3JhbF90ZW1wbGF0ZV9wYXJhbS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9pbnRlZ3JhbF90ZW1wbGF0ZV9wYXJhbS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlNDE4ZjMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvaW50ZWdyYWxfdGVtcGxhdGVfcGFyYW0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA1IEFya2FkaXkgVmVydGxleWIKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9URU1QTEFURV9QQVJBTV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0lOVEVHUkFMX1RFTVBMQVRFX1BBUkFNX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl91bnNpZ25lZCAodW5zaWduZWQpCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9zaWduZWQgKHNpZ25lZCkKLQotI2RlZmluZSBjaGFyX05ETkJPT1NUX1RZUEVPRiAoY2hhcikKLSNkZWZpbmUgc2hvcnRfTkROQk9PU1RfVFlQRU9GIChzaG9ydCkKLSNkZWZpbmUgaW50X05ETkJPT1NUX1RZUEVPRiAoaW50KQotI2RlZmluZSBsb25nX05ETkJPT1NUX1RZUEVPRiAobG9uZykKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfY2hhcl9ORE5CT09TVF9UWVBFT0YgKGNoYXIpCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9zaG9ydF9ORE5CT09TVF9UWVBFT0YgKHNob3J0KQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfaW50X05ETkJPT1NUX1RZUEVPRiAoaW50KQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfbG9uZ19ORE5CT09TVF9UWVBFT0YgKGxvbmcpCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9ib29sX05ETkJPT1NUX1RZUEVPRiAoYm9vbCkKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX3Vuc2lnbmVkX05ETkJPT1NUX1RZUEVPRiAodW5zaWduZWQpCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9zaXplX3RfTkROQk9PU1RfVFlQRU9GIChzaXplX3QpCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX01BS0VfT0JKX2NoYXIgICAgICAgICAgTkROQk9PU1RfVFlQRU9GX0lOVEVHUkFMX1BBUkFNKGNoYXIpCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9NQUtFX09CSl9zaG9ydCAgICAgICAgIE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTShzaG9ydCkKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX01BS0VfT0JKX2ludCAgICAgICAgICAgTkROQk9PU1RfVFlQRU9GX0lOVEVHUkFMX1BBUkFNKGludCkKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX01BS0VfT0JKX2xvbmcgICAgICAgICAgTkROQk9PU1RfVFlQRU9GX0lOVEVHUkFMX1BBUkFNKGxvbmcpCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9NQUtFX09CSl9ib29sICAgICAgICAgIE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTShib29sKQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTUFLRV9PQkpfdW5zaWduZWQgICAgICBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU0odW5zaWduZWQpCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9NQUtFX09CSl9zaXplX3QgICAgICAgIE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTShzaXplX3QpCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9NQUtFX09CSl91bnNpZ25lZGNoYXIgIE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTSh1bnNpZ25lZCBjaGFyKQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTUFLRV9PQkpfdW5zaWduZWRzaG9ydCBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU0odW5zaWduZWQgc2hvcnQpCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9NQUtFX09CSl91bnNpZ25lZGludCAgIE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTSh1bnNpZ25lZCBpbnQpCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9NQUtFX09CSl91bnNpZ25lZGxvbmcgIE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTSh1bnNpZ25lZCBsb25nKQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTUFLRV9PQkpfc2lnbmVkY2hhciAgICBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU0oc2lnbmVkIGNoYXIpCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9NQUtFX09CSl9zaWduZWRzaG9ydCAgIE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTShzaWduZWQgc2hvcnQpCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9NQUtFX09CSl9zaWduZWRpbnQgICAgIE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTShzaWduZWQgaW50KQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTUFLRV9PQkpfc2lnbmVkbG9uZyAgICBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU0oc2lnbmVkIGxvbmcpCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9NQUtFX09CSl9pbnRlZ3JhbCh4KSAgIE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTSh4KQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTChYKSBpbnRlZ3JhbChYKSBORE5CT09TVF9UWVBFT0ZfRUFUCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9FQVRfTkROQk9PU1RfVFlQRU9GCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9pbnRlZ3JhbChYKSAoaW50ZWdyYWwoWCkpCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0lOVEVHUkFMX1BBUkFNKFR5cGUpXAotICAgIChJTlRFR1JBTF9QQVJBTSlcCi0gICAgKFR5cGUpCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0lOVEVHUkFMX1BBUkFNX0dFVFRZUEUoUGFyYW0pXAotICAgIE5ETkJPT1NUX1BQX1NFUV9FTEVNKDEsIFBhcmFtKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTV9FWFBBTkRUWVBFKFBhcmFtKVwKLSAgICBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU1fR0VUVFlQRShQYXJhbSkKLQotLy8gSU5URUdSQUxfUEFSQU0gInZpcnR1YWwgZnVuY3Rpb25zIiBpbXBsZW1lbnRhdGlvbgotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTV9FTkNPREUoVGhpcywgbilcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6dHlwZV9vZjo6ZW5jb2RlX2ludGVncmFsPFwKLSAgICAgICAgTkROQk9PU1RfUFBfQ0FUKFYsIG4pLFwKLSAgICAgICAgTkROQk9PU1RfVFlQRU9GX0lOVEVHUkFMX1BBUkFNX0dFVFRZUEUoVGhpcyksXAotICAgICAgICBORE5CT09TVF9QUF9DQVQoUCwgbilcCi0gICAgPjo6dHlwZSBORE5CT09TVF9QUF9DQVQoViwgTkROQk9PU1RfUFBfSU5DKG4pKTsgCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0lOVEVHUkFMX1BBUkFNX0RFQ09ERShUaGlzLCBuKVwKLSAgICB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjpkZWNvZGVfaW50ZWdyYWw8TkROQk9PU1RfVFlQRU9GX0lOVEVHUkFMX1BBUkFNX0dFVFRZUEUoVGhpcyksIE5ETkJPT1NUX1BQX0NBVChpdGVyLCBuKT4gTkROQk9PU1RfUFBfQ0FUKGQsIG4pO1wKLSAgICBzdGF0aWMgY29uc3QgTkROQk9PU1RfVFlQRU9GX0lOVEVHUkFMX1BBUkFNX0dFVFRZUEUoVGhpcykgTkROQk9PU1RfUFBfQ0FUKFAsIG4pID0gTkROQk9PU1RfUFBfQ0FUKGQsIG4pOjp2YWx1ZTtcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBORE5CT09TVF9QUF9DQVQoZCwgbik6Oml0ZXIgTkROQk9PU1RfUFBfQ0FUKGl0ZXIsIE5ETkJPT1NUX1BQX0lOQyhuKSk7Ci0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0lOVEVHUkFMX1BBUkFNX1BMQUNFSE9MREVSKFBhcmFtKVwKLSAgICAoTkROQk9PU1RfVFlQRU9GX0lOVEVHUkFMX1BBUkFNX0dFVFRZUEUoUGFyYW0pKTAKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU1fREVDTEFSQVRJT05fVFlQRShQYXJhbSlcCi0gICAgTkROQk9PU1RfVFlQRU9GX0lOVEVHUkFMX1BBUkFNX0dFVFRZUEUoUGFyYW0pCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0lOVEVHUkFMX1BBUkFNX1BMQUNFSE9MREVSX1RZUEVTKFBhcmFtLCBuKVwKLSAgICBORE5CT09TVF9QUF9DQVQoVCxuKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTV9JU1RFTVBMQVRFIDAKLQotI2VuZGlmLy9ORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfVEVNUExBVEVfUEFSQU1fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9tZXNzYWdlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL21lc3NhZ2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNDc4NjhmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL21lc3NhZ2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgQXJrYWRpeSBWZXJ0bGV5YgotLy8gVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAuIChodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBkZWZpbmVkIE5ETkJPT1NUX1RZUEVPRl9NRVNTQUdFUwotIyAgICBwcmFnbWEgbWVzc2FnZShORE5CT09TVF9UWVBFT0ZfVEVYVCkKLSNlbmRpZgotI3VuZGVmIE5ETkJPT1NUX1RZUEVPRl9URVhUCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9tb2RpZmllcnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvbW9kaWZpZXJzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjk4NWI2Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9tb2RpZmllcnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTIxICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNCBBcmthZGl5IFZlcnRsZXliCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFT0ZfTU9ESUZJRVJTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTU9ESUZJRVJTX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL2VuY29kZV9kZWNvZGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL2lkZW50aXR5LmhwcD4KLQotI2luY2x1ZGUgTkROQk9PU1RfVFlQRU9GX0lOQ1JFTUVOVF9SRUdJU1RSQVRJT05fR1JPVVAoKQotCi0vLyBtb2RpZmllcnMKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfbW9kaWZpZXJfc3VwcG9ydChJRCwgRnVuKVwKLSAgICB0ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBUPiBzdHJ1Y3QgZW5jb2RlX3R5cGVfaW1wbDxWLCBGdW4oVCk+XAotICAgIHtcCi0gICAgICAgIHR5cGVkZWZcCi0gICAgICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6dHlwZV9vZjo6ZW5jb2RlX3R5cGU8XAotICAgICAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnR5cGVfb2Y6OnB1c2hfYmFjazxcCi0gICAgICAgICAgICBWXAotICAgICAgICAgICAgLCBuZG5ib29zdDo6bXBsOjpzaXplX3Q8SUQ+ID46OnR5cGVcCi0gICAgICAgICAgICAsIFQ+Ojp0eXBlXAotICAgICAgICAgICAgdHlwZTtcCi0gICAgfTtcCi0gICAgdGVtcGxhdGU8Y2xhc3MgSXRlcj4gc3RydWN0IGRlY29kZV90eXBlX2ltcGw8bmRuYm9vc3Q6Om1wbDo6c2l6ZV90PElEPiwgSXRlcj5cCi0gICAge1wKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6ZGVjb2RlX3R5cGU8SXRlcj4gZDE7XAotICAgICAgICB0eXBlZGVmIEZ1bih0eXBlbmFtZSBkMTo6dHlwZSkgdHlwZTtcCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZDE6Oml0ZXIgaXRlcjtcCi0gICAgfQotCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX2NvbnN0X2Z1bihUKSBjb25zdCBUCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl92b2xhdGlsZV9mdW4oVCkgdm9sYXRpbGUgVAotI2RlZmluZSBORE5CT09TVF9UWVBFT0Zfdm9sYXRpbGVfY29uc3RfZnVuKFQpIHZvbGF0aWxlIGNvbnN0IFQKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX3BvaW50ZXJfZnVuKFQpIFQqCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9yZWZlcmVuY2VfZnVuKFQpIFQmCi0KLSNpZiBkZWZpbmVkKF9fQk9STEFORENfXykgJiYgKF9fQk9STEFORENfXyA8IDB4NjAwKQotLy9Cb3JsYW5kIGluY29ycmVjdGx5IGhhbmRsZXMgVCBjb25zdCwgVCBjb25zdCB2b2xhdGlsZSBhbmQgVCB2b2xhdGlsZS4KLS8vSXQgZHJvcHMgdGhlIGRlY29yYXRpb24gbm8gbWF0dGVyIHdoYXQsIHNvIHdlIG5lZWQgdG8gdHJ5IHRvIGhhbmRsZSBUKiBjb25zdCBldGMuIHdpdGhvdXQgbG9vc2luZyB0aGUgdG9wIG1vZGlmaWVyLgotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfY29uc3RfcG9pbnRlcl9mdW4oVCkgVCBjb25zdCAqCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9jb25zdF9yZWZlcmVuY2VfZnVuKFQpIFQgY29uc3QgJgotI2RlZmluZSBORE5CT09TVF9UWVBFT0Zfdm9sYXRpbGVfcG9pbnRlcl9mdW4oVCkgVCB2b2xhdGlsZSoKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX3ZvbGF0aWxlX3JlZmVyZW5jZV9mdW4oVCkgVCB2b2xhdGlsZSYKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX3ZvbGF0aWxlX2NvbnN0X3BvaW50ZXJfZnVuKFQpIFQgdm9sYXRpbGUgY29uc3QgKgotI2RlZmluZSBORE5CT09TVF9UWVBFT0Zfdm9sYXRpbGVfY29uc3RfcmVmZXJlbmNlX2Z1bihUKSBUIHZvbGF0aWxlIGNvbnN0ICYKLSNlbmRpZgotCi1ORE5CT09TVF9UWVBFT0ZfQkVHSU5fRU5DT0RFX05TCi0KLU5ETkJPT1NUX1RZUEVPRl9tb2RpZmllcl9zdXBwb3J0KE5ETkJPT1NUX1RZUEVPRl9VTklRVUVfSUQoKSwgTkROQk9PU1RfVFlQRU9GX2NvbnN0X2Z1bik7Ci1ORE5CT09TVF9UWVBFT0ZfbW9kaWZpZXJfc3VwcG9ydChORE5CT09TVF9UWVBFT0ZfVU5JUVVFX0lEKCksIE5ETkJPT1NUX1RZUEVPRl92b2xhdGlsZV9mdW4pOwotTkROQk9PU1RfVFlQRU9GX21vZGlmaWVyX3N1cHBvcnQoTkROQk9PU1RfVFlQRU9GX1VOSVFVRV9JRCgpLCBORE5CT09TVF9UWVBFT0Zfdm9sYXRpbGVfY29uc3RfZnVuKTsKLU5ETkJPT1NUX1RZUEVPRl9tb2RpZmllcl9zdXBwb3J0KE5ETkJPT1NUX1RZUEVPRl9VTklRVUVfSUQoKSwgTkROQk9PU1RfVFlQRU9GX3BvaW50ZXJfZnVuKTsKLU5ETkJPT1NUX1RZUEVPRl9tb2RpZmllcl9zdXBwb3J0KE5ETkJPT1NUX1RZUEVPRl9VTklRVUVfSUQoKSwgTkROQk9PU1RfVFlQRU9GX3JlZmVyZW5jZV9mdW4pOwotCi0jaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pICYmIChfX0JPUkxBTkRDX18gPCAweDYwMCkKLU5ETkJPT1NUX1RZUEVPRl9tb2RpZmllcl9zdXBwb3J0KE5ETkJPT1NUX1RZUEVPRl9VTklRVUVfSUQoKSwgTkROQk9PU1RfVFlQRU9GX2NvbnN0X3BvaW50ZXJfZnVuKTsKLU5ETkJPT1NUX1RZUEVPRl9tb2RpZmllcl9zdXBwb3J0KE5ETkJPT1NUX1RZUEVPRl9VTklRVUVfSUQoKSwgTkROQk9PU1RfVFlQRU9GX2NvbnN0X3JlZmVyZW5jZV9mdW4pOwotTkROQk9PU1RfVFlQRU9GX21vZGlmaWVyX3N1cHBvcnQoTkROQk9PU1RfVFlQRU9GX1VOSVFVRV9JRCgpLCBORE5CT09TVF9UWVBFT0Zfdm9sYXRpbGVfcG9pbnRlcl9mdW4pOwotTkROQk9PU1RfVFlQRU9GX21vZGlmaWVyX3N1cHBvcnQoTkROQk9PU1RfVFlQRU9GX1VOSVFVRV9JRCgpLCBORE5CT09TVF9UWVBFT0Zfdm9sYXRpbGVfcmVmZXJlbmNlX2Z1bik7Ci1ORE5CT09TVF9UWVBFT0ZfbW9kaWZpZXJfc3VwcG9ydChORE5CT09TVF9UWVBFT0ZfVU5JUVVFX0lEKCksIE5ETkJPT1NUX1RZUEVPRl92b2xhdGlsZV9jb25zdF9wb2ludGVyX2Z1bik7Ci1ORE5CT09TVF9UWVBFT0ZfbW9kaWZpZXJfc3VwcG9ydChORE5CT09TVF9UWVBFT0ZfVU5JUVVFX0lEKCksIE5ETkJPT1NUX1RZUEVPRl92b2xhdGlsZV9jb25zdF9yZWZlcmVuY2VfZnVuKTsKLSNlbmRpZgotCi1ORE5CT09TVF9UWVBFT0ZfRU5EX0VOQ09ERV9OUwotCi0jdW5kZWYgTkROQk9PU1RfVFlQRU9GX21vZGlmaWVyX3N1cHBvcnQKLSN1bmRlZiBORE5CT09TVF9UWVBFT0ZfY29uc3RfZnVuCi0jdW5kZWYgTkROQk9PU1RfVFlQRU9GX3ZvbGF0aWxlX2Z1bgotI3VuZGVmIE5ETkJPT1NUX1RZUEVPRl92b2xhdGlsZV9jb25zdF9mdW4KLSN1bmRlZiBORE5CT09TVF9UWVBFT0ZfcG9pbnRlcl9mdW4KLSN1bmRlZiBORE5CT09TVF9UWVBFT0ZfcmVmZXJlbmNlX2Z1bgotCi0jaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pICYmIChfX0JPUkxBTkRDX18gPCAweDYwMCkKLSN1bmRlZiBORE5CT09TVF9UWVBFT0ZfY29uc3RfcG9pbnRlcl9mdW4KLSN1bmRlZiBORE5CT09TVF9UWVBFT0ZfY29uc3RfcmVmZXJlbmNlX2Z1bgotI3VuZGVmIE5ETkJPT1NUX1RZUEVPRl92b2xhdGlsZV9wb2ludGVyX2Z1bgotI3VuZGVmIE5ETkJPT1NUX1RZUEVPRl92b2xhdGlsZV9yZWZlcmVuY2VfZnVuCi0jdW5kZWYgTkROQk9PU1RfVFlQRU9GX3ZvbGF0aWxlX2NvbnN0X3BvaW50ZXJfZnVuCi0jdW5kZWYgTkROQk9PU1RfVFlQRU9GX3ZvbGF0aWxlX2NvbnN0X3JlZmVyZW5jZV9mdW4KLSNlbmRpZgotCi0vLyBhcnJheXMKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfYXJyYXlfc3VwcG9ydChJRCwgUXVhbGlmaWVyKVwKLSAgICB0ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBULCBpbnQgTj5cCi0gICAgc3RydWN0IGVuY29kZV90eXBlX2ltcGw8ViwgUXVhbGlmaWVyKCkgVFtOXT5cCi0gICAge1wKLSAgICAgICAgdHlwZWRlZlwKLSAgICAgICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0Ojp0eXBlX29mOjplbmNvZGVfdHlwZTxcCi0gICAgICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6dHlwZV9vZjo6cHVzaF9iYWNrPFwKLSAgICAgICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0Ojp0eXBlX29mOjpwdXNoX2JhY2s8XAotICAgICAgICAgICAgVlwKLSAgICAgICAgICAgICwgbmRuYm9vc3Q6Om1wbDo6c2l6ZV90PElEPiA+Ojp0eXBlXAotICAgICAgICAgICAgLCBuZG5ib29zdDo6bXBsOjpzaXplX3Q8Tj4gPjo6dHlwZVwKLSAgICAgICAgICAgICwgVD46OnR5cGVcCi0gICAgICAgIHR5cGU7XAotICAgIH07XAotICAgIHRlbXBsYXRlPGNsYXNzIEl0ZXI+XAotICAgIHN0cnVjdCBkZWNvZGVfdHlwZV9pbXBsPG5kbmJvb3N0OjptcGw6OnNpemVfdDxJRD4sIEl0ZXI+XAotICAgIHtcCi0gICAgICAgIGVudW17biA9IEl0ZXI6OnR5cGU6OnZhbHVlfTtcCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OmRlY29kZV90eXBlPHR5cGVuYW1lIEl0ZXI6Om5leHQ+IGQ7XAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGQ6OnR5cGUgUXVhbGlmaWVyKCkgdHlwZVtuXTtcCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZDo6aXRlciBpdGVyO1wKLSAgICB9Ci0KLU5ETkJPT1NUX1RZUEVPRl9CRUdJTl9FTkNPREVfTlMKLQotTkROQk9PU1RfVFlQRU9GX2FycmF5X3N1cHBvcnQoTkROQk9PU1RfVFlQRU9GX1VOSVFVRV9JRCgpLCBORE5CT09TVF9QUF9FTVBUWSk7Ci1ORE5CT09TVF9UWVBFT0ZfYXJyYXlfc3VwcG9ydChORE5CT09TVF9UWVBFT0ZfVU5JUVVFX0lEKCksIE5ETkJPT1NUX1BQX0lERU5USVRZKGNvbnN0KSk7Ci1ORE5CT09TVF9UWVBFT0ZfYXJyYXlfc3VwcG9ydChORE5CT09TVF9UWVBFT0ZfVU5JUVVFX0lEKCksIE5ETkJPT1NUX1BQX0lERU5USVRZKHZvbGF0aWxlKSk7Ci1ORE5CT09TVF9UWVBFT0ZfYXJyYXlfc3VwcG9ydChORE5CT09TVF9UWVBFT0ZfVU5JUVVFX0lEKCksIE5ETkJPT1NUX1BQX0lERU5USVRZKHZvbGF0aWxlIGNvbnN0KSk7Ci1ORE5CT09TVF9UWVBFT0ZfRU5EX0VOQ09ERV9OUwotCi0jdW5kZWYgTkROQk9PU1RfVFlQRU9GX2FycmF5X3N1cHBvcnQKLQotI2VuZGlmLy9ORE5CT09TVF9UWVBFT0ZfTU9ESUZJRVJTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvbXN2Yy90eXBlb2ZfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9tc3ZjL3R5cGVvZl9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWRlYTdlMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9tc3ZjL3R5cGVvZl9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4MyArMCwwIEBACi0KLS8vIENvcHlyaWdodCAoQykgMjAwNSBJZ29yIENoZXNub2tvdiwgbWFpbHRvOmljaGVzbm9rb3ZAZ21haWwuY29tIChWQyA2LjUsVkMgNy4xICsgY291bnRlciBjb2RlKQotLy8gQ29weXJpZ2h0IChDKSAyMDA1LTIwMDcgUGVkZXIgSG9sdCAoVkMgNy4wICsgZnJhbWV3b3JrKQotLy8gQ29weXJpZ2h0IChDKSAyMDA2IFN0ZXZlbiBXYXRhbmFiZSAoVkMgOC4wKQotCi0vLyBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFT0ZfTVNWQ19UWVBFT0ZfSU1QTF9IUFBfSU5DTFVERUQKLSMgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9NU1ZDX1RZUEVPRl9JTVBMX0hQUF9JTkNMVURFRAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ludC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Z1bmN0aW9uLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9lbmFibGVfaWYuaHBwPgotCi0jIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQyw+PTEzMTApCi0jICBpbmNsdWRlIDx0eXBlaW5mbz4KLSMgZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gICAgbmFtZXNwYWNlIHR5cGVfb2YKLSAgICB7Ci0KLSAgICAgICAgLy9Db21waWxlIHRpbWUgY29uc3RhbnQgY29kZQotIyBpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsPj0xMzAwKSAmJiBkZWZpbmVkKF9NU0NfRVhURU5TSU9OUykKLSAgICAgICAgdGVtcGxhdGU8aW50IE4+IHN0cnVjdCB0aGVfY291bnRlcjsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULGludCBOID0gNS8qZm9yIHNpbWlsYXJpdHkqLz4KLSAgICAgICAgc3RydWN0IGVuY29kZV9jb3VudGVyCi0gICAgICAgIHsKLSAgICAgICAgICAgIF9faWZfZXhpc3RzKHRoZV9jb3VudGVyPE4gKyAyNTY+KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxjb3VudD0oZW5jb2RlX2NvdW50ZXI8VCxOICsgMjU3Pjo6Y291bnQpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIF9faWZfbm90X2V4aXN0cyh0aGVfY291bnRlcjxOICsgMjU2PikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBfX2lmX2V4aXN0cyh0aGVfY291bnRlcjxOICsgNjQ+KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLGNvdW50PShlbmNvZGVfY291bnRlcjxULE4gKyA2NT46OmNvdW50KSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIF9faWZfbm90X2V4aXN0cyh0aGVfY291bnRlcjxOICsgNjQ+KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgX19pZl9leGlzdHModGhlX2NvdW50ZXI8TiArIDE2PikKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLGNvdW50PShlbmNvZGVfY291bnRlcjxULE4gKyAxNz46OmNvdW50KSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgX19pZl9ub3RfZXhpc3RzKHRoZV9jb3VudGVyPE4gKyAxNj4pCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIF9faWZfZXhpc3RzKHRoZV9jb3VudGVyPE4gKyA0PikKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsY291bnQ9KGVuY29kZV9jb3VudGVyPFQsTiArIDU+Ojpjb3VudCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgX19pZl9ub3RfZXhpc3RzKHRoZV9jb3VudGVyPE4gKyA0PikKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2lmX2V4aXN0cyh0aGVfY291bnRlcjxOPikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxjb3VudD0oZW5jb2RlX2NvdW50ZXI8VCxOICsgMT46OmNvdW50KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faWZfbm90X2V4aXN0cyh0aGVfY291bnRlcjxOPikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxjb3VudD1OKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZWRlZiB0aGVfY291bnRlcjxOPiB0eXBlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLQotIyBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0lOREVYKFQpIChlbmNvZGVfY291bnRlcjxUPjo6Y291bnQpCi0jIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfTkVYVF9JTkRFWChuZXh0KQotIyBlbHNlCi0gICAgICAgIHRlbXBsYXRlPGludCBOPiBzdHJ1Y3QgZW5jb2RlX2NvdW50ZXIgOiBlbmNvZGVfY291bnRlcjxOIC0gMT4ge307Ci0gICAgICAgIHRlbXBsYXRlPD4gc3RydWN0IGVuY29kZV9jb3VudGVyPDA+IHt9OwotCi0gICAgICAgIC8vTmVlZCB0byBkZWZhdWx0IHRvIGEgbGFyZ2VyIHZhbHVlIHRoYW4gNCwgYXMgZHVlIHRvIE1TVkMncyBFVEkgZXJyb3JzLiAoc2l6ZW9mKGludCk9PTQpCi0gICAgICAgIGNoYXIgKCplbmNvZGVfaW5kZXgoLi4uKSlbNV07Ci0KLSMgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9JTkRFWChUKSAoc2l6ZW9mKCpuZG5ib29zdDo6dHlwZV9vZjo6ZW5jb2RlX2luZGV4KChuZG5ib29zdDo6dHlwZV9vZjo6ZW5jb2RlX2NvdW50ZXI8MTAwNT4qKTApKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9ORVhUX0lOREVYKG5leHQpIGZyaWVuZCBjaGFyICgqZW5jb2RlX2luZGV4KGVuY29kZV9jb3VudGVyPG5leHQ+KikpW25leHRdOwotIyBlbmRpZgotCi0gICAgICAgIC8vVHlwZW9mIGNvZGUKLQotIyBpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsPT0xMzAwKQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJRD4KLSAgICAgICAgc3RydWN0IG1zdmNfZXh0cmFjdF90eXBlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPGJvb2w+Ci0gICAgICAgICAgICBzdHJ1Y3QgaWQydHlwZV9pbXBsOwotCi0gICAgICAgICAgICB0eXBlZGVmIGlkMnR5cGVfaW1wbDx0cnVlPiBpZDJ0eXBlOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIElEPgotICAgICAgICBzdHJ1Y3QgbXN2Y19yZWdpc3Rlcl90eXBlIDogbXN2Y19leHRyYWN0X3R5cGU8SUQ+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgICAgIHN0cnVjdCBpZDJ0eXBlX2ltcGw8dHJ1ZT4gIC8vVkM3LjAgc3BlY2lmaWMgYnVnZmVhdHVyZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSNlbGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQyw+PTE0MDApCi0gICAgICAgIHN0cnVjdCBtc3ZjX2V4dHJhY3RfdHlwZV9kZWZhdWx0X3BhcmFtIHt9OwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIElELCB0eXBlbmFtZSBUID0gbXN2Y19leHRyYWN0X3R5cGVfZGVmYXVsdF9wYXJhbT4KLSAgICAgICAgc3RydWN0IG1zdmNfZXh0cmFjdF90eXBlOwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIElEPgotICAgICAgICBzdHJ1Y3QgbXN2Y19leHRyYWN0X3R5cGU8SUQsIG1zdmNfZXh0cmFjdF90eXBlX2RlZmF1bHRfcGFyYW0+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPGJvb2w+Ci0gICAgICAgICAgICBzdHJ1Y3QgaWQydHlwZV9pbXBsOwotCi0gICAgICAgICAgICB0eXBlZGVmIGlkMnR5cGVfaW1wbDx0cnVlPiBpZDJ0eXBlOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIElELCB0eXBlbmFtZSBUPgotICAgICAgICBzdHJ1Y3QgbXN2Y19leHRyYWN0X3R5cGUgOiBtc3ZjX2V4dHJhY3RfdHlwZTxJRCxtc3ZjX2V4dHJhY3RfdHlwZV9kZWZhdWx0X3BhcmFtPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgICAgICBzdHJ1Y3QgaWQydHlwZV9pbXBsPHRydWU+ICAvL1ZDOC4wIHNwZWNpZmljIGJ1Z2ZlYXR1cmUKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0ZW1wbGF0ZTxib29sPgotICAgICAgICAgICAgc3RydWN0IGlkMnR5cGVfaW1wbDsKLQotICAgICAgICAgICAgdHlwZWRlZiBpZDJ0eXBlX2ltcGw8dHJ1ZT4gaWQydHlwZTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBJRD4KLSAgICAgICAgc3RydWN0IG1zdmNfcmVnaXN0ZXJfdHlwZSA6IG1zdmNfZXh0cmFjdF90eXBlPElELCBUPgotICAgICAgICB7Ci0gICAgICAgIH07Ci0jIGVsc2UKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSUQ+Ci0gICAgICAgIHN0cnVjdCBtc3ZjX2V4dHJhY3RfdHlwZQotICAgICAgICB7Ci0gICAgICAgICAgICBzdHJ1Y3QgaWQydHlwZTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBJRD4KLSAgICAgICAgc3RydWN0IG1zdmNfcmVnaXN0ZXJfdHlwZSA6IG1zdmNfZXh0cmFjdF90eXBlPElEPgotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIG1zdmNfZXh0cmFjdF90eXBlPElEPiBiYXNlX3R5cGU7Ci0gICAgICAgICAgICBzdHJ1Y3QgYmFzZV90eXBlOjppZDJ0eXBlIC8vIFRoaXMgdXNlcyBuaWNlIFZDNi41IGFuZCBWQzcuMSBidWdmZWF0dXJlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotIyBlbmRpZgotLy8gRUFOOiBwcmVwcm9jZXNzIHRoaXMgYmxvY2sgb3V0IG9uIGFkdmljZSBvZiBQZWRlciBIb2x0Ci0vLyB0byBlbGltaW5hdGUgZXJyb3JzIGluIHR5cGVfdHJhaXRzL2NvbW1vbl90eXBlLmhwcAotIyBpZiAwIC8vTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLD09MTMxMCkKLSAgICAgICAgdGVtcGxhdGU8Y29uc3Qgc3RkOjp0eXBlX2luZm8mIHJlZl90eXBlX2luZm8+Ci0gICAgICAgIHN0cnVjdCBtc3ZjX3R5cGVpZF93cmFwcGVyIHsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8bXN2Y190eXBlaWRfd3JhcHBlcj46OmlkMnR5cGUgaWQydHlwZTsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWQydHlwZTo6dHlwZSB3cmFwcGVkX3R5cGU7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHdyYXBwZWRfdHlwZTo6dHlwZSB0eXBlOwotICAgICAgICB9OwotICAgICAgICAvL1RoaXMgY2xhc3MgaXMgdXNlZCBmb3IgcmVnaXN0ZXJpbmcgdGhlIHR5cGUgVC4gZW5jb2RlX3R5cGU8VD4gaXMgbWFwcGVkIGFnYWluc3QgdHlwZWlkKGVuY29kZV90eXBlPFQ+KS4KLSAgICAgICAgLy9tc3ZjX3R5cGVpZF93cmFwcGVyPHR5cGVpZChlbmNvZGVfdHlwZTxUPik+IHdpbGwgbm93IGhhdmUgYSB0eXBlIHR5cGVkZWYgdGhhdCBlcXVhbHMgZW5jb2RlX3R5cGU8VD4uCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0cnVjdCBlbmNvZGVfdHlwZQotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIGVuY29kZV90eXBlPFQ+IGlucHV0X3R5cGU7Ci0gICAgICAgICAgICAvL0ludm9rZSByZWdpc3RyYXRpb24gb2YgZW5jb2RlX3R5cGU8VD4uIHR5cGVpZChlbmNvZGVfdHlwZTxUPikgaXMgbm93IG1hcHBlZCB0byBlbmNvZGVfdHlwZTxUPi4gRG8gbm90IHVzZSByZWdpc3RlcmVkX3R5cGUgZm9yIGFueXRoaW5nLgotICAgICAgICAgICAgLy9UaGUgcmVhc29uIGZvciByZWdpc3RlcmluZyBlbmNvZGVfdHlwZTxUPiByYXRoZXIgdGhhbiBULCBpcyB0aGF0IFZDIGhhbmRsZXMgdHlwZWlkKGZ1bmN0aW9uIHJlZmVyZW5jZSkgcG9vcmx5LiBCeSBhZGRpbmcgYW5vdGhlcgotICAgICAgICAgICAgLy9sZXZlbCBvZiBpbmRpcmVjdGlvbiwgd2Ugc29sdmUgdGhpcyBwcm9ibGVtLgotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX3JlZ2lzdGVyX3R5cGU8aW5wdXRfdHlwZSxtc3ZjX3R5cGVpZF93cmFwcGVyPHR5cGVpZChpbnB1dF90eXBlKT4gPjo6aWQydHlwZSByZWdpc3RlcmVkX3R5cGU7Ci0gICAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0eXBlbmFtZSBkaXNhYmxlX2lmPAotICAgICAgICAgICAgdHlwZW5hbWUgaXNfZnVuY3Rpb248VD46OnR5cGUsCi0gICAgICAgICAgICB0eXBlbmFtZSBlbmNvZGVfdHlwZTxUPjo6aW5wdXRfdHlwZT46OnR5cGUgZW5jb2RlX3N0YXJ0KFQgY29uc3QmKTsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0eXBlbmFtZSBlbmFibGVfaWY8Ci0gICAgICAgICAgICB0eXBlbmFtZSBpc19mdW5jdGlvbjxUPjo6dHlwZSwKLSAgICAgICAgICAgIHR5cGVuYW1lIGVuY29kZV90eXBlPFQ+OjppbnB1dF90eXBlPjo6dHlwZSBlbmNvZGVfc3RhcnQoVCYpOwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9yZ2FuaXplciwgdHlwZW5hbWUgVD4KLSAgICAgICAgbXN2Y19yZWdpc3Rlcl90eXBlPFQsT3JnYW5pemVyPiB0eXBlb2ZfcmVnaXN0ZXJfdHlwZShjb25zdCBUJik7Ci0KLQotIyBkZWZpbmUgTkROQk9PU1RfVFlQRU9GKGV4cHIpIFwKLSAgICBuZG5ib29zdDo6dHlwZV9vZjo6bXN2Y190eXBlaWRfd3JhcHBlcjx0eXBlaWQobmRuYm9vc3Q6OnR5cGVfb2Y6OmVuY29kZV9zdGFydChleHByKSk+Ojp0eXBlCi0KLSMgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9UUEwoZXhwcikgdHlwZW5hbWUgTkROQk9PU1RfVFlQRU9GKGV4cHIpCi0KLSMgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9ORVNURURfVFlQRURFRl9UUEwobmFtZSxleHByKSBcCi1zdHJ1Y3QgbmFtZSB7XAotICAgIGVudW0ge190eXBlb2ZfcmVnaXN0ZXJfdmFsdWU9c2l6ZW9mKHR5cGVpZChuZG5ib29zdDo6dHlwZV9vZjo6dHlwZW9mX3JlZ2lzdGVyX3R5cGU8bmFtZT4oZXhwcikpKX07XAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnR5cGVfb2Y6Om1zdmNfZXh0cmFjdF90eXBlPG5hbWU+OjppZDJ0eXBlIGlkMnR5cGU7XAotICAgIHR5cGVkZWYgdHlwZW5hbWUgaWQydHlwZTo6dHlwZSB0eXBlO1wKLX07Ci0KLSMgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9ORVNURURfVFlQRURFRihuYW1lLGV4cHIpIFwKLXN0cnVjdCBuYW1lIHtcCi0gICAgZW51bSB7X3R5cGVvZl9yZWdpc3Rlcl92YWx1ZT1zaXplb2YodHlwZWlkKG5kbmJvb3N0Ojp0eXBlX29mOjp0eXBlb2ZfcmVnaXN0ZXJfdHlwZTxuYW1lPihleHByKSkpfTtcCi0gICAgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6bXN2Y19leHRyYWN0X3R5cGU8bmFtZT46OmlkMnR5cGUgaWQydHlwZTtcCi0gICAgdHlwZWRlZiBpZDJ0eXBlOjp0eXBlIHR5cGU7XAotfTsKLQotIyBlbHNlCi0gICAgICAgIHRlbXBsYXRlPGludCBJRD4KLSAgICAgICAgc3RydWN0IG1zdmNfdHlwZWlkX3dyYXBwZXIgewotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2V4dHJhY3RfdHlwZTxtcGw6OmludF88SUQ+ID46OmlkMnR5cGUgaWQydHlwZTsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWQydHlwZTo6dHlwZSB0eXBlOwotICAgICAgICB9OwotICAgICAgICAvL1dvcmthcm91bmQgZm9yIEVUSS1idWcgZm9yIFZDNiBhbmQgVkM3Ci0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IG1zdmNfdHlwZWlkX3dyYXBwZXI8MT4gewotICAgICAgICAgICAgdHlwZWRlZiBtc3ZjX3R5cGVpZF93cmFwcGVyPDE+IHR5cGU7Ci0gICAgICAgIH07Ci0gICAgICAgIC8vV29ya2Fyb3VuZCBmb3IgRVRJLWJ1ZyBmb3IgVkM3LjEKLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgbXN2Y190eXBlaWRfd3JhcHBlcjw0PiB7Ci0gICAgICAgICAgICB0eXBlZGVmIG1zdmNfdHlwZWlkX3dyYXBwZXI8ND4gdHlwZTsKLSAgICAgICAgfTsKLQotICAgICAgICAvL1RpZSBpdCBhbGwgdG9nZXRoZXIKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RydWN0IGVuY29kZV90eXBlCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vR2V0IHRoZSBuZXh0IGF2YWlsYWJsZSBjb21waWxlIHRpbWUgY29uc3RhbnRzIGluZGV4Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsdmFsdWU9TkROQk9PU1RfVFlQRU9GX0lOREVYKFQpKTsKLSAgICAgICAgICAgIC8vSW5zdGFudGlhdGUgdGhlIHRlbXBsYXRlCi0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfcmVnaXN0ZXJfdHlwZTxULG1wbDo6aW50Xzx2YWx1ZT4gPjo6aWQydHlwZSB0eXBlOwotICAgICAgICAgICAgLy9TZXQgdGhlIG5leHQgY29tcGlsZSB0aW1lIGNvbnN0YW50cyBpbmRleAotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLG5leHQ9dmFsdWUrMSk7Ci0gICAgICAgICAgICAvL0luY3JlbWVudCB0aGUgY29tcGlsZSB0aW1lIGNvbnN0YW50IChvbmx5IG5lZWRlZCB3aGVuIGV4dGVuc2lvbnMgYXJlIG5vdCBhY3RpdmUKLSAgICAgICAgICAgIE5ETkJPT1NUX1RZUEVPRl9ORVhUX0lOREVYKG5leHQpOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgICAgIHN0cnVjdCBzaXplcgotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIGNoYXIoKnR5cGUpW2VuY29kZV90eXBlPFQ+Ojp2YWx1ZV07Ci0gICAgICAgIH07Ci0jIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQyw+PTEzMTApCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHR5cGVuYW1lIGRpc2FibGVfaWY8Ci0gICAgICAgICAgICB0eXBlbmFtZSBpc19mdW5jdGlvbjxUPjo6dHlwZSwKLSAgICAgICAgICAgIHR5cGVuYW1lIHNpemVyPFQ+Ojp0eXBlPjo6dHlwZSBlbmNvZGVfc3RhcnQoVCBjb25zdCYpOwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHR5cGVuYW1lIGVuYWJsZV9pZjwKLSAgICAgICAgICAgIHR5cGVuYW1lIGlzX2Z1bmN0aW9uPFQ+Ojp0eXBlLAotICAgICAgICAgICAgdHlwZW5hbWUgc2l6ZXI8VD46OnR5cGU+Ojp0eXBlIGVuY29kZV9zdGFydChUJik7Ci0jIGVsc2UKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgICAgIHR5cGVuYW1lIHNpemVyPFQ+Ojp0eXBlIGVuY29kZV9zdGFydChUIGNvbnN0Jik7Ci0jIGVuZGlmCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9yZ2FuaXplciwgdHlwZW5hbWUgVD4KLSAgICAgICAgbXN2Y19yZWdpc3Rlcl90eXBlPFQsT3JnYW5pemVyPiB0eXBlb2ZfcmVnaXN0ZXJfdHlwZShjb25zdCBUJixPcmdhbml6ZXIqID0wKTsKLQotIyBkZWZpbmUgTkROQk9PU1RfVFlQRU9GKGV4cHIpIFwKLSAgICBuZG5ib29zdDo6dHlwZV9vZjo6bXN2Y190eXBlaWRfd3JhcHBlcjxzaXplb2YoKm5kbmJvb3N0Ojp0eXBlX29mOjplbmNvZGVfc3RhcnQoZXhwcikpPjo6dHlwZQotCi0jIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfVFBMKGV4cHIpIHR5cGVuYW1lIE5ETkJPT1NUX1RZUEVPRihleHByKQotCi0jIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfTkVTVEVEX1RZUEVERUZfVFBMKG5hbWUsZXhwcikgXAotICAgIHN0cnVjdCBuYW1lIHtcCi0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsX3R5cGVvZl9yZWdpc3Rlcl92YWx1ZT1zaXplb2YobmRuYm9vc3Q6OnR5cGVfb2Y6OnR5cGVvZl9yZWdpc3Rlcl90eXBlPG5hbWU+KGV4cHIpKSk7XAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojp0eXBlX29mOjptc3ZjX2V4dHJhY3RfdHlwZTxuYW1lPjo6aWQydHlwZSBpZDJ0eXBlO1wKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZDJ0eXBlOjp0eXBlIHR5cGU7XAotICAgIH07Ci0KLSMgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9ORVNURURfVFlQRURFRihuYW1lLGV4cHIpIFwKLSAgICBzdHJ1Y3QgbmFtZSB7XAotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LF90eXBlb2ZfcmVnaXN0ZXJfdmFsdWU9c2l6ZW9mKG5kbmJvb3N0Ojp0eXBlX29mOjp0eXBlb2ZfcmVnaXN0ZXJfdHlwZTxuYW1lPihleHByKSkpO1wKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6bXN2Y19leHRyYWN0X3R5cGU8bmFtZT46OmlkMnR5cGUgaWQydHlwZTtcCi0gICAgICAgIHR5cGVkZWYgaWQydHlwZTo6dHlwZSB0eXBlO1wKLSAgICB9OwotCi0jZW5kaWYKLSAgICB9Ci19Ci0KLSNlbmRpZi8vTkROQk9PU1RfVFlQRU9GX01TVkNfVFlQRU9GX0lNUExfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9uYXRpdmUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvbmF0aXZlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDg4YjQxOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9uYXRpdmUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA2IEFya2FkaXkgVmVydGxleWIKLS8vIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9OQVRJVkVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9OQVRJVkVfSFBQX0lOQ0xVREVECi0KLSNpZm5kZWYgTVNWQ19UWVBFT0ZfSEFDSwotCi0jaWZkZWYgTkROQk9PU1RfTk9fU0ZJTkFFCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB0eXBlX29mIHsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IAotICAgICAgICBUJiBlbnN1cmVfb2JqKGNvbnN0IFQmKTsKLQotfX0KLQotI2Vsc2UKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Z1bmN0aW9uLmhwcD4gCi0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9lbmFibGVfaWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdHlwZV9vZiB7Ci0jIGlmZGVmIE5ETkJPT1NUX05PX1NGSU5BRQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IAotICAgIFQmIGVuc3VyZV9vYmooY29uc3QgVCYpOwotIyBlbHNlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgdHlwZW5hbWUgZW5hYmxlX2lmPGlzX2Z1bmN0aW9uPFQ+LCBUJj46OnR5cGUKLSAgICAgICAgZW5zdXJlX29iaihUJik7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICB0eXBlbmFtZSBkaXNhYmxlX2lmPGlzX2Z1bmN0aW9uPFQ+LCBUJj46OnR5cGUKLSAgICAgICAgZW5zdXJlX29iaihjb25zdCBUJik7Ci0jIGVuZGlmCi19fQotCi0jZW5kaWYvL05ETkJPT1NUX05PX1NGSU5BRQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRihleHByKSBORE5CT09TVF9UWVBFT0ZfS0VZV09SRChuZG5ib29zdDo6dHlwZV9vZjo6ZW5zdXJlX29iaihleHByKSkKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RQTCBORE5CT09TVF9UWVBFT0YKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTkVTVEVEX1RZUEVERUZfVFBMKG5hbWUsZXhwcikgXAotICAgIHN0cnVjdCBuYW1lIHtcCi0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfVFlQRU9GX1RQTChleHByKSB0eXBlO1wKLSAgICB9OwotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9ORVNURURfVFlQRURFRihuYW1lLGV4cHIpIFwKLSAgICBzdHJ1Y3QgbmFtZSB7XAotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1RZUEVPRihleHByKSB0eXBlO1wKLSAgICB9OwotCi0jZW5kaWYvL01TVkNfVFlQRU9GX0hBQ0sKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRSh4KQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVEVNUExBVEUoeCwgcGFyYW1zKQotCi0jZW5kaWYvL05ETkJPT1NUX1RZUEVPRl9OQVRJVkVfSFBQX0lOQ0xVREVECi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3BvaW50ZXJzX2RhdGFfbWVtYmVycy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9wb2ludGVyc19kYXRhX21lbWJlcnMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMTg3MmQ5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3BvaW50ZXJzX2RhdGFfbWVtYmVycy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDQgQXJrYWRpeSBWZXJ0bGV5YgotLy8gVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAuIChodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRU9GX1BPSU5URVJTX0RBVEFfTUVNQkVSU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1BPSU5URVJTX0RBVEFfTUVNQkVSU19IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi9lbmNvZGVfZGVjb2RlX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL2VuY29kZV9kZWNvZGUuaHBwPgotCi0jaW5jbHVkZSBORE5CT09TVF9UWVBFT0ZfSU5DUkVNRU5UX1JFR0lTVFJBVElPTl9HUk9VUCgpCi0KLU5ETkJPT1NUX1RZUEVPRl9CRUdJTl9FTkNPREVfTlMKLQotZW51bSB7UFRSX0RBVEFfTUVNX0lEID0gTkROQk9PU1RfVFlQRU9GX1VOSVFVRV9JRCgpfTsKLQotdGVtcGxhdGU8Y2xhc3MgViwgY2xhc3MgUDAsIGNsYXNzIFAxPgotc3RydWN0IGVuY29kZV90eXBlX2ltcGw8ViwgUDAgUDE6Oio+Ci17Ci0gICAgdHlwZWRlZiBORE5CT09TVF9UWVBFT0ZfRU5DT0RFX1BBUkFNUygyLCBQVFJfREFUQV9NRU1fSUQpIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBJdGVyPgotc3RydWN0IGRlY29kZV90eXBlX2ltcGw8bmRuYm9vc3Q6Om1wbDo6c2l6ZV90PFBUUl9EQVRBX01FTV9JRD4sIEl0ZXI+Ci17Ci0gICAgdHlwZWRlZiBJdGVyIGl0ZXIwOwotICAgIE5ETkJPT1NUX1RZUEVPRl9ERUNPREVfUEFSQU1TKDIpCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgd29ya2Fyb3VuZHsKLSAgICAgICAgdHlwZWRlZiBwMCBUOjoqIHR5cGU7Ci0gICAgfTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRlY29kZV90eXBlX2ltcGw8bmRuYm9vc3Q6Om1wbDo6c2l6ZV90PFBUUl9EQVRBX01FTV9JRD4sIEl0ZXI+Ojp0ZW1wbGF0ZSB3b3JrYXJvdW5kPHAxPjo6dHlwZSB0eXBlOwotICAgIHR5cGVkZWYgaXRlcjIgaXRlcjsKLX07Ci0KLU5ETkJPT1NUX1RZUEVPRl9FTkRfRU5DT0RFX05TCi0KLSNlbmRpZi8vTkROQk9PU1RfVFlQRU9GX1BPSU5URVJTX0RBVEFfTUVNQkVSU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3JlZ2lzdGVyX2Z1bmN0aW9ucy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9yZWdpc3Rlcl9mdW5jdGlvbnMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYjIyOWY5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3JlZ2lzdGVyX2Z1bmN0aW9ucy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDQgQXJrYWRpeSBWZXJ0bGV5YgotLy8gVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAuIChodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX0ZVTkNUSU9OU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX0ZVTkNUSU9OU19IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3RyYWlsaW5nX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2luYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9hZGQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vaXRlcmF0ZS5ocHA+Ci0KLSNpbmNsdWRlIE5ETkJPT1NUX1RZUEVPRl9JTkNSRU1FTlRfUkVHSVNUUkFUSU9OX0dST1VQKCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFT0ZfTElNSVRfRlVOQ1RJT05fQVJJVFkKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0xJTUlUX0ZVTkNUSU9OX0FSSVRZIDEwCi0jZW5kaWYKLQotZW51bSAKLXsKLSAgICBGVU5fSUQgICAgICAgICAgICAgICAgICAgICAgICAgID0gTkROQk9PU1RfVFlQRU9GX1VOSVFVRV9JRCgpLAotICAgIEZVTl9QVFJfSUQgICAgICAgICAgICAgICAgICAgICAgPSBGVU5fSUQgKyAgMSAqIE5ETkJPT1NUX1BQX0lOQyhORE5CT09TVF9UWVBFT0ZfTElNSVRfRlVOQ1RJT05fQVJJVFkpLAotICAgIEZVTl9SRUZfSUQgICAgICAgICAgICAgICAgICAgICAgPSBGVU5fSUQgKyAgMiAqIE5ETkJPT1NUX1BQX0lOQyhORE5CT09TVF9UWVBFT0ZfTElNSVRfRlVOQ1RJT05fQVJJVFkpLAotICAgIE1FTV9GVU5fSUQgICAgICAgICAgICAgICAgICAgICAgPSBGVU5fSUQgKyAgMyAqIE5ETkJPT1NUX1BQX0lOQyhORE5CT09TVF9UWVBFT0ZfTElNSVRfRlVOQ1RJT05fQVJJVFkpLAotICAgIENPTlNUX01FTV9GVU5fSUQgICAgICAgICAgICAgICAgPSBGVU5fSUQgKyAgNCAqIE5ETkJPT1NUX1BQX0lOQyhORE5CT09TVF9UWVBFT0ZfTElNSVRfRlVOQ1RJT05fQVJJVFkpLAotICAgIFZPTEFUSUxFX01FTV9GVU5fSUQgICAgICAgICAgICAgPSBGVU5fSUQgKyAgNSAqIE5ETkJPT1NUX1BQX0lOQyhORE5CT09TVF9UWVBFT0ZfTElNSVRfRlVOQ1RJT05fQVJJVFkpLAotICAgIFZPTEFUSUxFX0NPTlNUX01FTV9GVU5fSUQgICAgICAgPSBGVU5fSUQgKyAgNiAqIE5ETkJPT1NUX1BQX0lOQyhORE5CT09TVF9UWVBFT0ZfTElNSVRfRlVOQ1RJT05fQVJJVFkpLAotICAgIEZVTl9WQVJfSUQgICAgICAgICAgICAgICAgICAgICAgPSBGVU5fSUQgKyAgNyAqIE5ETkJPT1NUX1BQX0lOQyhORE5CT09TVF9UWVBFT0ZfTElNSVRfRlVOQ1RJT05fQVJJVFkpLAotICAgIEZVTl9WQVJfUFRSX0lEICAgICAgICAgICAgICAgICAgPSBGVU5fSUQgKyAgOCAqIE5ETkJPT1NUX1BQX0lOQyhORE5CT09TVF9UWVBFT0ZfTElNSVRfRlVOQ1RJT05fQVJJVFkpLAotICAgIEZVTl9WQVJfUkVGX0lEICAgICAgICAgICAgICAgICAgPSBGVU5fSUQgKyAgOSAqIE5ETkJPT1NUX1BQX0lOQyhORE5CT09TVF9UWVBFT0ZfTElNSVRfRlVOQ1RJT05fQVJJVFkpLAotICAgIE1FTV9GVU5fVkFSX0lEICAgICAgICAgICAgICAgICAgPSBGVU5fSUQgKyAxMCAqIE5ETkJPT1NUX1BQX0lOQyhORE5CT09TVF9UWVBFT0ZfTElNSVRfRlVOQ1RJT05fQVJJVFkpLAotICAgIENPTlNUX01FTV9GVU5fVkFSX0lEICAgICAgICAgICAgPSBGVU5fSUQgKyAxMSAqIE5ETkJPT1NUX1BQX0lOQyhORE5CT09TVF9UWVBFT0ZfTElNSVRfRlVOQ1RJT05fQVJJVFkpLAotICAgIFZPTEFUSUxFX01FTV9GVU5fVkFSX0lEICAgICAgICAgPSBGVU5fSUQgKyAxMiAqIE5ETkJPT1NUX1BQX0lOQyhORE5CT09TVF9UWVBFT0ZfTElNSVRfRlVOQ1RJT05fQVJJVFkpLAotICAgIFZPTEFUSUxFX0NPTlNUX01FTV9GVU5fVkFSX0lEICAgPSBGVU5fSUQgKyAxMyAqIE5ETkJPT1NUX1BQX0lOQyhORE5CT09TVF9UWVBFT0ZfTElNSVRfRlVOQ1RJT05fQVJJVFkpCi19OwotCi1ORE5CT09TVF9UWVBFT0ZfQkVHSU5fRU5DT0RFX05TCi0KLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9MSU1JVFMgKDAsIE5ETkJPT1NUX1RZUEVPRl9MSU1JVF9GVU5DVElPTl9BUklUWSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEgPG5kbmJvb3N0L3R5cGVvZi9yZWdpc3Rlcl9mdW5jdGlvbnNfaXRlcmF0ZS5ocHA+Ci0jIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLU5ETkJPT1NUX1RZUEVPRl9FTkRfRU5DT0RFX05TCi0KLSNlbmRpZi8vTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX0ZVTkNUSU9OU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3JlZ2lzdGVyX2Z1bmN0aW9uc19pdGVyYXRlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3JlZ2lzdGVyX2Z1bmN0aW9uc19pdGVyYXRlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Y0ODdhOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9yZWdpc3Rlcl9mdW5jdGlvbnNfaXRlcmF0ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzUgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA0IEFya2FkaXkgVmVydGxleWIKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL2VuY29kZV9kZWNvZGVfcGFyYW1zLmhwcD4KLQotI2RlZmluZSBuIE5ETkJPT1NUX1BQX0lURVJBVElPTigpCi0KLS8vIGZ1bmN0aW9uIHBvaW50ZXJzCi0KLXRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIFIgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMobiwgY2xhc3MgUCk+Ci1zdHJ1Y3QgZW5jb2RlX3R5cGVfaW1wbDxWLCBSKCopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKG4sIFApKT4KLXsKLSAgICB0eXBlZGVmIFIgTkROQk9PU1RfUFBfQ0FUKFAsIG4pOwotICAgIHR5cGVkZWYgTkROQk9PU1RfVFlQRU9GX0VOQ09ERV9QQVJBTVMoTkROQk9PU1RfUFBfSU5DKG4pLCBGVU5fUFRSX0lEICsgbikgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIFIgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMobiwgY2xhc3MgUCk+Ci1zdHJ1Y3QgZW5jb2RlX3R5cGVfaW1wbDxWLCBSKCopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKG4sIFApIC4uLik+Ci17Ci0gICAgdHlwZWRlZiBSIE5ETkJPT1NUX1BQX0NBVChQLCBuKTsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX1RZUEVPRl9FTkNPREVfUEFSQU1TKE5ETkJPT1NUX1BQX0lOQyhuKSwgRlVOX1ZBUl9QVFJfSUQgKyBuKSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgSXRlcj4KLXN0cnVjdCBkZWNvZGVfdHlwZV9pbXBsPG5kbmJvb3N0OjptcGw6OnNpemVfdDxGVU5fUFRSX0lEICsgbj4sIEl0ZXI+Ci17Ci0gICAgdHlwZWRlZiBJdGVyIGl0ZXIwOwotICAgIE5ETkJPT1NUX1RZUEVPRl9ERUNPREVfUEFSQU1TKE5ETkJPT1NUX1BQX0lOQyhuKSkKLSAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChwLCBuKSgqdHlwZSkoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMobiwgcCkpOwotICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKGl0ZXIsIE5ETkJPT1NUX1BQX0lOQyhuKSkgaXRlcjsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEl0ZXI+Ci1zdHJ1Y3QgZGVjb2RlX3R5cGVfaW1wbDxuZG5ib29zdDo6bXBsOjpzaXplX3Q8RlVOX1ZBUl9QVFJfSUQgKyBuPiwgSXRlcj4KLXsKLSAgICB0eXBlZGVmIEl0ZXIgaXRlcjA7Ci0gICAgTkROQk9PU1RfVFlQRU9GX0RFQ09ERV9QQVJBTVMoTkROQk9PU1RfUFBfSU5DKG4pKQotICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKHAsIG4pKCp0eXBlKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhuLCBwKSAuLi4pOwotICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKGl0ZXIsIE5ETkJPT1NUX1BQX0lOQyhuKSkgaXRlcjsKLX07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRU9GX05PX0ZVTkNUSU9OX1RZUEVTCi0KLSAgICAvLyBmdW5jdGlvbiByZWZlcmVuY2VzCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBSIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKG4sIGNsYXNzIFApPgotICAgIHN0cnVjdCBlbmNvZGVfdHlwZV9pbXBsPFYsIFIoJikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMobiwgUCkpPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBSIE5ETkJPT1NUX1BQX0NBVChQLCBuKTsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9UWVBFT0ZfRU5DT0RFX1BBUkFNUyhORE5CT09TVF9QUF9JTkMobiksIEZVTl9SRUZfSUQgKyBuKSB0eXBlOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBSIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKG4sIGNsYXNzIFApPgotICAgIHN0cnVjdCBlbmNvZGVfdHlwZV9pbXBsPFYsIFIoJikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMobiwgUCkgLi4uKT4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgUiBORE5CT09TVF9QUF9DQVQoUCwgbik7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfVFlQRU9GX0VOQ09ERV9QQVJBTVMoTkROQk9PU1RfUFBfSU5DKG4pLCBGVU5fVkFSX1JFRl9JRCArIG4pIHR5cGU7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPGNsYXNzIEl0ZXI+Ci0gICAgc3RydWN0IGRlY29kZV90eXBlX2ltcGw8bmRuYm9vc3Q6Om1wbDo6c2l6ZV90PEZVTl9SRUZfSUQgKyBuPiwgSXRlcj4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlciBpdGVyMDsKLSAgICAgICAgTkROQk9PU1RfVFlQRU9GX0RFQ09ERV9QQVJBTVMoTkROQk9PU1RfUFBfSU5DKG4pKQotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChwLCBuKSgmdHlwZSkoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMobiwgcCkpOwotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChpdGVyLCBORE5CT09TVF9QUF9JTkMobikpIGl0ZXI7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPGNsYXNzIEl0ZXI+Ci0gICAgc3RydWN0IGRlY29kZV90eXBlX2ltcGw8bmRuYm9vc3Q6Om1wbDo6c2l6ZV90PEZVTl9WQVJfUkVGX0lEICsgbj4sIEl0ZXI+Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXIgaXRlcjA7Ci0gICAgICAgIE5ETkJPT1NUX1RZUEVPRl9ERUNPREVfUEFSQU1TKE5ETkJPT1NUX1BQX0lOQyhuKSkKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQocCwgbikoJnR5cGUpKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKG4sIHApIC4uLik7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKGl0ZXIsIE5ETkJPT1NUX1BQX0lOQyhuKSkgaXRlcjsKLSAgICB9OwotCi0gICAgLy8gZnVuY3Rpb25zCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBSIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKG4sIGNsYXNzIFApPgotICAgIHN0cnVjdCBlbmNvZGVfdHlwZV9pbXBsPFYsIFIoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMobiwgUCkpPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBSIE5ETkJPT1NUX1BQX0NBVChQLCBuKTsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9UWVBFT0ZfRU5DT0RFX1BBUkFNUyhORE5CT09TVF9QUF9JTkMobiksIEZVTl9JRCArIG4pIHR5cGU7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIFIgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMobiwgY2xhc3MgUCk+Ci0gICAgc3RydWN0IGVuY29kZV90eXBlX2ltcGw8ViwgUihORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhuLCBQKSAuLi4pPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBSIE5ETkJPT1NUX1BQX0NBVChQLCBuKTsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9UWVBFT0ZfRU5DT0RFX1BBUkFNUyhORE5CT09TVF9QUF9JTkMobiksIEZVTl9WQVJfSUQgKyBuKSB0eXBlOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBJdGVyPgotICAgIHN0cnVjdCBkZWNvZGVfdHlwZV9pbXBsPG5kbmJvb3N0OjptcGw6OnNpemVfdDxGVU5fSUQgKyBuPiwgSXRlcj4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlciBpdGVyMDsKLSAgICAgICAgTkROQk9PU1RfVFlQRU9GX0RFQ09ERV9QQVJBTVMoTkROQk9PU1RfUFBfSU5DKG4pKQotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChwLCBuKSh0eXBlKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhuLCBwKSk7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKGl0ZXIsIE5ETkJPT1NUX1BQX0lOQyhuKSkgaXRlcjsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgSXRlcj4KLSAgICBzdHJ1Y3QgZGVjb2RlX3R5cGVfaW1wbDxuZG5ib29zdDo6bXBsOjpzaXplX3Q8RlVOX1ZBUl9JRCArIG4+LCBJdGVyPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyIGl0ZXIwOwotICAgICAgICBORE5CT09TVF9UWVBFT0ZfREVDT0RFX1BBUkFNUyhORE5CT09TVF9QUF9JTkMobikpCi0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKHAsIG4pKHR5cGUpKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKG4sIHApIC4uLik7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKGl0ZXIsIE5ETkJPT1NUX1BQX0lOQyhuKSkgaXRlcjsKLSAgICB9OwotCi0jZW5kaWYvL05ETkJPT1NUX1RZUEVPRl9OT19GVU5DVElPTl9UWVBFUwotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9OT19NRU1CRVJfRlVOQ1RJT05fVFlQRVMKLS8vIG1lbWJlciBmdW5jdGlvbnMKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfcXVhbGlmaWVyCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9pZCBNRU1fRlVOX0lECi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL3JlZ2lzdGVyX21lbV9mdW5jdGlvbnMuaHBwPgotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9xdWFsaWZpZXIgY29uc3QKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX2lkIENPTlNUX01FTV9GVU5fSUQKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvcmVnaXN0ZXJfbWVtX2Z1bmN0aW9ucy5ocHA+Ci0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX3F1YWxpZmllciB2b2xhdGlsZQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfaWQgVk9MQVRJTEVfTUVNX0ZVTl9JRAotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi9yZWdpc3Rlcl9tZW1fZnVuY3Rpb25zLmhwcD4KLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfcXVhbGlmaWVyIHZvbGF0aWxlIGNvbnN0Ci0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9pZCBWT0xBVElMRV9DT05TVF9NRU1fRlVOX0lECi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL3JlZ2lzdGVyX21lbV9mdW5jdGlvbnMuaHBwPgotCi0jdW5kZWYgbgotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9yZWdpc3Rlcl9mdW5kYW1lbnRhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9yZWdpc3Rlcl9mdW5kYW1lbnRhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlNzJlZjMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvcmVnaXN0ZXJfZnVuZGFtZW50YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA0IEFya2FkaXkgVmVydGxleWIKLS8vIENvcHlyaWdodCAoQykgMjAwNCBQZWRlciBIb2x0Ci0vLyBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfRlVOREFNRU5UQUxfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9GVU5EQU1FTlRBTF9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi90eXBlb2YuaHBwPgotCi0jaW5jbHVkZSBORE5CT09TVF9UWVBFT0ZfSU5DUkVNRU5UX1JFR0lTVFJBVElPTl9HUk9VUCgpCi0KLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFKHVuc2lnbmVkIGNoYXIpCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRSh1bnNpZ25lZCBzaG9ydCkKLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFKHVuc2lnbmVkIGludCkKLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFKHVuc2lnbmVkIGxvbmcpCi0KLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFKHNpZ25lZCBjaGFyKQotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEUoc2lnbmVkIHNob3J0KQotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEUoc2lnbmVkIGludCkKLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFKHNpZ25lZCBsb25nKQotCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRShib29sKQotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEUoY2hhcikKLQotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEUoZmxvYXQpCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRShkb3VibGUpCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRShsb25nIGRvdWJsZSkKLQotI2lmbmRlZiBORE5CT09TVF9OT19JTlRSSU5TSUNfV0NIQVJfVAotLy8gSWYgdGhlIGZvbGxvd2luZyBsaW5lIGZhaWxzIHRvIGNvbXBpbGUgYW5kIHlvdSdyZSB1c2luZyB0aGUgSW50ZWwKLS8vIGNvbXBpbGVyLCBzZWUgaHR0cDovL2xpc3RzLmJvb3N0Lm9yZy9NYWlsQXJjaGl2ZXMvYm9vc3QtdXNlcnMvbXNnMDY1NjcucGhwLAotLy8gYW5kIGRlZmluZSBORE5CT09TVF9OT19JTlRSSU5TSUNfV0NIQVJfVCBvbiB0aGUgY29tbWFuZCBsaW5lLgotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEUod2NoYXJfdCkKLSNlbmRpZgotCi0jaWYgKGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgKE5ETkJPT1NUX01TVkMgPT0gMTIwMCkpIFwKLSAgICB8fCAoZGVmaW5lZChORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTikgJiYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OIDw9IDYwMCkpIFwKLSAgICB8fCAoZGVmaW5lZChfX0JPUkxBTkRDX18pICYmIChfX0JPUkxBTkRDX18gPT0gMHg2MDApICYmIChfTVNDX1ZFUiA9PSAxMjAwKSkKLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFKHVuc2lnbmVkIF9faW50OCkKLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFKF9faW50OCkKLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFKHVuc2lnbmVkIF9faW50MTYpCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRShfX2ludDE2KQotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEUodW5zaWduZWQgX19pbnQzMikKLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFKF9faW50MzIpCi0jaWZkZWYgX19CT1JMQU5EQ19fCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRSh1bnNpZ25lZCBfX2ludDY0KQotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEUoX19pbnQ2NCkKLSNlbmRpZgotI2VuZGlmCi0KLSMgaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKQotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEUoOjpuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlKQotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEUoOjpuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUpCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19NU19JTlQ2NCkKLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFKHVuc2lnbmVkIF9faW50NjQpCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRShfX2ludDY0KQotI2VuZGlmCi0KLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFKHZvaWQpCi0KLSNlbmRpZi8vTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX0ZVTkRBTUVOVEFMX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvcmVnaXN0ZXJfbWVtX2Z1bmN0aW9ucy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9yZWdpc3Rlcl9tZW1fZnVuY3Rpb25zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzVkZThjMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9yZWdpc3Rlcl9tZW1fZnVuY3Rpb25zLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNCBBcmthZGl5IFZlcnRsZXliCi0vLyBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi9lbmNvZGVfZGVjb2RlX3BhcmFtcy5ocHA+Ci0KLS8vIG1lbWJlciBmdW5jdGlvbnMKLQotdGVtcGxhdGU8Y2xhc3MgViwgY2xhc3MgVCwgY2xhc3MgUiBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhuLCBjbGFzcyBQKT4gCi1zdHJ1Y3QgZW5jb2RlX3R5cGVfaW1wbDxWLCBSKFQ6OiopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKG4sIFApKSBORE5CT09TVF9UWVBFT0ZfcXVhbGlmaWVyPgotewotICAgIHR5cGVkZWYgUiBORE5CT09TVF9QUF9DQVQoUCwgbik7Ci0gICAgdHlwZWRlZiBUIE5ETkJPT1NUX1BQX0NBVChQLCBORE5CT09TVF9QUF9JTkMobikpOwotICAgIHR5cGVkZWYgTkROQk9PU1RfVFlQRU9GX0VOQ09ERV9QQVJBTVMoTkROQk9PU1RfUFBfQUREKG4sIDIpLCBORE5CT09TVF9UWVBFT0ZfaWQgKyBuKSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgSXRlcj4KLXN0cnVjdCBkZWNvZGVfdHlwZV9pbXBsPG5kbmJvb3N0OjptcGw6OnNpemVfdDxORE5CT09TVF9UWVBFT0ZfaWQgKyBuPiwgSXRlcj4KLXsKLSAgICB0eXBlZGVmIEl0ZXIgaXRlcjA7Ci0gICAgTkROQk9PU1RfVFlQRU9GX0RFQ09ERV9QQVJBTVMoTkROQk9PU1RfUFBfQUREKG4sIDIpKQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCB3b3JrYXJvdW5kewotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChwLCBuKShUOjoqdHlwZSkoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMobiwgcCkpIE5ETkJPT1NUX1RZUEVPRl9xdWFsaWZpZXI7Ci0gICAgfTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHdvcmthcm91bmQ8TkROQk9PU1RfUFBfQ0FUKHAsIE5ETkJPT1NUX1BQX0lOQyhuKSk+Ojp0eXBlIHR5cGU7Ci0gICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQoaXRlciwgTkROQk9PU1RfUFBfQUREKG4sIDIpKSBpdGVyOwotfTsKLQotLy8gdW5kZWYgcGFyYW1ldGVycwotCi0jdW5kZWYgTkROQk9PU1RfVFlQRU9GX2lkCi0jdW5kZWYgTkROQk9PU1RfVFlQRU9GX3F1YWxpZmllcgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdGVtcGxhdGVfZW5jb2RpbmcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdGVtcGxhdGVfZW5jb2RpbmcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMmEwZmUxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3RlbXBsYXRlX2VuY29kaW5nLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2MCArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDQgQXJrYWRpeSBWZXJ0bGV5YgotLy8gQ29weXJpZ2h0IChDKSAyMDA1IFBlZGVyIEhvbHQKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9URU1QTEFURV9FTkNPRElOR19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RFTVBMQVRFX0VOQ09ESU5HX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV90cmFpbGluZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvaWlmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2lzX3VuYXJ5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9yZXBlYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvdHJhbnNmb3JtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2Zvcl9lYWNoX2kuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvY2F0LmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi9lbmNvZGVfZGVjb2RlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvaW50X2VuY29kaW5nLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi90eXBlX3RlbXBsYXRlX3BhcmFtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvaW50ZWdyYWxfdGVtcGxhdGVfcGFyYW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi90ZW1wbGF0ZV90ZW1wbGF0ZV9wYXJhbS5ocHA+Ci0KLSNpZmRlZiBfX0JPUkxBTkRDX18KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1FVQUxJRlkoUCkgc2VsZl90OjpQCi0jZWxzZQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfUVVBTElGWShQKSBQCi0jZW5kaWYKLS8vIFRoZSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgZGVzY3JpcHRpb24sIGVudGVyZWQgYnkgdGhlIHVzZXIsCi0vLyBpcyBjb252ZXJ0ZWQgaW50byBhIHBvbHltb3JwaGljICJvYmplY3QiCi0vLyB0aGF0IGlzIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGNvZGUgcmVzcG9uc2libGUgZm9yCi0vLyBlbmNvZGluZy9kZWNvZGluZyB0aGUgcGFyYW1ldGVyLCBldGMuCi0KLS8vIG1ha2Ugc3VyZSB0byBjYXQgdGhlIHNlcXVlbmNlIGZpcnN0LCBhbmQgb25seSB0aGVuIGFkZCB0aGUgcHJlZml4LgotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTUFLRV9PQkooZWxlbSkgTkROQk9PU1RfUFBfQ0FUKFwKLSAgICBORE5CT09TVF9UWVBFT0ZfTUFLRV9PQkosXAotICAgIE5ETkJPT1NUX1BQX1NFUV9DQVQoKF8pIE5ETkJPT1NUX1RZUEVPRl9UT19TRVEoZWxlbSkpXAotICAgICkKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVE9fU0VRKHRva2VucykgTkROQk9PU1RfVFlQRU9GXyAjIyB0b2tlbnMgIyMgX05ETkJPT1NUX1RZUEVPRgotCi0vLyBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVEVNUExBVEUKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVEVNUExBVEVfRVhQTElDSVRfSUQoTmFtZSwgUGFyYW1zLCBJZClcCi0gICAgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RFTVBMQVRFX0lNUEwoXAotICAgICAgICBOYW1lLFwKLSAgICAgICAgTkROQk9PU1RfVFlQRU9GX01BS0VfT0JKUyhORE5CT09TVF9UWVBFT0ZfVE9TRVEoUGFyYW1zKSksXAotICAgICAgICBORE5CT09TVF9QUF9TRVFfU0laRShORE5CT09TVF9UWVBFT0ZfVE9TRVEoUGFyYW1zKSksXAotICAgICAgICBJZCkKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVEVNUExBVEUoTmFtZSwgUGFyYW1zKVwKLSAgICBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVEVNUExBVEVfRVhQTElDSVRfSUQoTmFtZSwgUGFyYW1zLCBORE5CT09TVF9UWVBFT0ZfVU5JUVVFX0lEKCkpCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX09CSkVDVF9NQUtFUihzLCBkYXRhLCBlbGVtKVwKLSAgICBORE5CT09TVF9UWVBFT0ZfTUFLRV9PQkooZWxlbSkKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTUFLRV9PQkpTKFBhcmFtcylcCi0gICAgTkROQk9PU1RfUFBfU0VRX1RSQU5TRk9STShORE5CT09TVF9UWVBFT0ZfT0JKRUNUX01BS0VSLCB+LCBQYXJhbXMpCi0KLS8vIEFzIHN1Z2dlc3RlZCBieSBQYXVsIE1lbnNvbmlkZXM6Ci0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RPU0VRKHgpXAotICAgIE5ETkJPT1NUX1BQX0lJRihcCi0gICAgICAgIE5ETkJPT1NUX1BQX0lTX1VOQVJZKHgpLFwKLSAgICAgICAgeCBORE5CT09TVF9QUF9UVVBMRV9FQVQoMyksIE5ETkJPT1NUX1BQX1JFUEVBVFwKLSAgICApKHgsIE5ETkJPT1NUX1RZUEVPRl9UT1NFUV8yLCB+KQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9UT1NFUV8yKHosIG4sIF8pIChjbGFzcykKLQotLy8gTkROQk9PU1RfVFlQRU9GX1ZJUlRVQUwKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfQ0FUXzQoYSwgYiwgYywgZCkgTkROQk9PU1RfVFlQRU9GX0NBVF80X0koYSwgYiwgYywgZCkKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0NBVF80X0koYSwgYiwgYywgZCkgYSAjIyBiICMjIGMgIyMgZAotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9WSVJUVUFMKEZ1biwgT2JqKVwKLSAgICBORE5CT09TVF9UWVBFT0ZfQ0FUXzQoTkROQk9PU1RfVFlQRU9GXywgTkROQk9PU1RfUFBfU0VRX0hFQUQoT2JqKSwgXywgRnVuKQotCi0vLyBORE5CT09TVF9UWVBFT0ZfU0VRX0VOVU1bX1RSQUlMSU5HXVtfMV0KLS8vIFR3byB2ZXJzaW9ucyBwcm92aWRlZCBkdWUgdG8gcmVlbnRyYW5jeSBpc3N1ZQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9TRVFfRVhQQU5EX0VMRU1FTlQoeixuLHNlcSlcCi0gICBORE5CT09TVF9QUF9TRVFfRUxFTSgwLHNlcSkgKHosbixORE5CT09TVF9QUF9TRVFfRUxFTShuLE5ETkJPT1NUX1BQX1NFUV9FTEVNKDEsc2VxKSkpCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1NFUV9FTlVNKHNlcSxtYWNybylcCi0gICAgTkROQk9PU1RfUFBfRU5VTShORE5CT09TVF9QUF9TRVFfU0laRShzZXEpLE5ETkJPT1NUX1RZUEVPRl9TRVFfRVhQQU5EX0VMRU1FTlQsKG1hY3JvKShzZXEpKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9TRVFfRU5VTV9UUkFJTElORyhzZXEsbWFjcm8pXAotICAgIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkcoTkROQk9PU1RfUFBfU0VRX1NJWkUoc2VxKSxORE5CT09TVF9UWVBFT0ZfU0VRX0VYUEFORF9FTEVNRU5ULChtYWNybykoc2VxKSkKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfU0VRX0VYUEFORF9FTEVNRU5UXzEoeixuLHNlcSlcCi0gICAgTkROQk9PU1RfUFBfU0VRX0VMRU0oMCxzZXEpICh6LG4sTkROQk9PU1RfUFBfU0VRX0VMRU0obixORE5CT09TVF9QUF9TRVFfRUxFTSgxLHNlcSkpKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9TRVFfRU5VTV8xKHNlcSxtYWNybylcCi0gICAgTkROQk9PU1RfUFBfRU5VTShORE5CT09TVF9QUF9TRVFfU0laRShzZXEpLE5ETkJPT1NUX1RZUEVPRl9TRVFfRVhQQU5EX0VMRU1FTlRfMSwobWFjcm8pKHNlcSkpCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1NFUV9FTlVNX1RSQUlMSU5HXzEoc2VxLG1hY3JvKVwKLSAgICBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HKE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNlcSksTkROQk9PU1RfVFlQRU9GX1NFUV9FWFBBTkRfRUxFTUVOVF8xLChtYWNybykoc2VxKSkKLQotLy8KLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfUExBQ0VIT0xERVIoeiwgbiwgZWxlbSlcCi0gICAgTkROQk9PU1RfVFlQRU9GX1ZJUlRVQUwoUExBQ0VIT0xERVIsIGVsZW0pKGVsZW0pCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1BMQUNFSE9MREVSX1RZUEVTKHosIG4sIGVsZW0pXAotICAgIE5ETkJPT1NUX1RZUEVPRl9WSVJUVUFMKFBMQUNFSE9MREVSX1RZUEVTLCBlbGVtKShlbGVtLCBuKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9URU1QTEFURV9FTkNPREVfUEFSQU0ociwgZGF0YSwgbiwgZWxlbSlcCi0gICAgTkROQk9PU1RfVFlQRU9GX1ZJUlRVQUwoRU5DT0RFLCBlbGVtKShlbGVtLCBuKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9URU1QTEFURV9ERUNPREVfUEFSQU0ociwgZGF0YSwgbiwgZWxlbSlcCi0gICAgTkROQk9PU1RfVFlQRU9GX1ZJUlRVQUwoREVDT0RFLCBlbGVtKShlbGVtLCBuKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9URU1QTEFURV9QQVJBTV9QQUlSKHosIG4sIGVsZW0pIFwKLSAgICBORE5CT09TVF9UWVBFT0ZfVklSVFVBTChFWFBBTkRUWVBFLCBlbGVtKShlbGVtKSBORE5CT09TVF9QUF9DQVQoUCwgbikKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfREVGQVVMVF9URU1QTEFURV9UWVBFKE5hbWUsUGFyYW1zLElEKVwKLSAgICBOYW1lPCBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9TRVFfU0laRShQYXJhbXMpLCBQKSA+Ci0KLS8vU2luY2Ugd2UgYXJlIGNyZWF0aW5nIGFuIGludGVybmFsIGRlY29kZSBzdHJ1Y3QsIHdlIG5lZWQgdG8gdXNlIGRpZmZlcmVudCB0ZW1wbGF0ZSBuYW1lcywgVCBpbnN0ZWFkIG9mIFAuCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9ERUNPREVSX1RZUEVfUEFSQU1fUEFJUih6LG4sZWxlbSkgXAotICAgIE5ETkJPT1NUX1RZUEVPRl9WSVJUVUFMKEVYUEFORFRZUEUsIGVsZW0pKGVsZW0pIE5ETkJPT1NUX1BQX0NBVChULCBuKQotCi0vL0RlZmF1bHQgdGVtcGxhdGUgcGFyYW0gZGVjb2RpbmcKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVFlQRURFRl9ERUNPREVEX1RFTVBMQVRFX1RZUEUoTmFtZSxQYXJhbXMpXAotICAgIHR5cGVkZWYgTmFtZTxORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9TRVFfU0laRShQYXJhbXMpLE5ETkJPT1NUX1RZUEVPRl9RVUFMSUZZKFApKT4gdHlwZTsKLQotLy9CcmFuY2ggdGhlIGRlY29kaW5nCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9UWVBFREVGX0RFQ09ERURfVFlQRShOYW1lLFBhcmFtcylcCi0gICAgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfVFlQRU9GX0hBU19URU1QTEFURVMoUGFyYW1zKSxcCi0gICAgICAgIE5ETkJPT1NUX1RZUEVPRl9UWVBFREVGX0RFQ09ERURfVEVNUExBVEVfVEVNUExBVEVfVFlQRSxcCi0gICAgICAgIE5ETkJPT1NUX1RZUEVPRl9UWVBFREVGX0RFQ09ERURfVEVNUExBVEVfVFlQRSkoTmFtZSxQYXJhbXMpCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RFTVBMQVRFX0lNUEwoTmFtZSwgUGFyYW1zLCBTaXplLCBJRClcCi0gICAgTkROQk9PU1RfVFlQRU9GX0JFR0lOX0VOQ09ERV9OU1wKLSAgICBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVEVNUExBVEVfVEVNUExBVEVfSU1QTChOYW1lLCBQYXJhbXMsIElEKVwKLSAgICB0ZW1wbGF0ZTxjbGFzcyBWXAotICAgICAgICBORE5CT09TVF9UWVBFT0ZfU0VRX0VOVU1fVFJBSUxJTkcoUGFyYW1zLCBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVEVNUExBVEVfUEFSQU1fUEFJUilcCi0gICAgPlwKLSAgICBzdHJ1Y3QgZW5jb2RlX3R5cGVfaW1wbDxWLCBOYW1lPE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKFNpemUsIFApPiA+XAotICAgIHtcCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnR5cGVfb2Y6OnB1c2hfYmFjazxWLCBuZG5ib29zdDo6bXBsOjpzaXplX3Q8SUQ+ID46OnR5cGUgVjA7XAotICAgICAgICBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSShORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVEVNUExBVEVfRU5DT0RFX1BBUkFNLCB+LCBQYXJhbXMpXAotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChWLCBTaXplKSB0eXBlO1wKLSAgICB9O1wKLSAgICB0ZW1wbGF0ZTxjbGFzcyBJdGVyPlwKLSAgICBzdHJ1Y3QgZGVjb2RlX3R5cGVfaW1wbDxuZG5ib29zdDo6bXBsOjpzaXplX3Q8SUQ+LCBJdGVyPlwKLSAgICB7XAotICAgICAgICB0eXBlZGVmIGRlY29kZV90eXBlX2ltcGw8bmRuYm9vc3Q6Om1wbDo6c2l6ZV90PElEPiwgSXRlcj4gc2VsZl90O1wKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6bXBsOjpzaXplX3Q8SUQ+IHNlbGZfaWQ7XAotICAgICAgICB0eXBlZGVmIEl0ZXIgaXRlcjA7XAotICAgICAgICBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSShORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVEVNUExBVEVfREVDT0RFX1BBUkFNLCB+LCBQYXJhbXMpXAotICAgICAgICBORE5CT09TVF9UWVBFT0ZfVFlQRURFRl9ERUNPREVEX1RZUEUoTmFtZSwgUGFyYW1zKVwKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQoaXRlciwgU2l6ZSkgaXRlcjtcCi0gICAgfTtcCi0gICAgTkROQk9PU1RfVFlQRU9GX0VORF9FTkNPREVfTlMKLQotI2VuZGlmLy9ORE5CT09TVF9UWVBFT0ZfVEVNUExBVEVfRU5DT0RJTkdfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi90ZW1wbGF0ZV90ZW1wbGF0ZV9wYXJhbS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi90ZW1wbGF0ZV90ZW1wbGF0ZV9wYXJhbS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwODAyYjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdGVtcGxhdGVfdGVtcGxhdGVfcGFyYW0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ5ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNSBQZWRlciBIb2x0Ci0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgQXJrYWRpeSBWZXJ0bGV5YgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRU9GX1RFTVBMQVRFX1RFTVBMQVRFX1BBUkFNX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVEVNUExBVEVfVEVNUExBVEVfUEFSQU1fSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9vci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9mb2xkX2xlZnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZW51bS5ocHA+Ci0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX01BS0VfT0JKX3RlbXBsYXRlKHgpICAgTkROQk9PU1RfVFlQRU9GX1RFTVBMQVRFX1BBUkFNKHgpCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9URU1QTEFURShYKSB0ZW1wbGF0ZShYKSBORE5CT09TVF9UWVBFT0ZfRUFUCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl90ZW1wbGF0ZShYKSAodGVtcGxhdGUoWCkpCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RFTVBMQVRFX1BBUkFNKFBhcmFtcylcCi0gICAgKFRFTVBMQVRFX1BBUkFNKVwKLSAgICAoUGFyYW1zKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9URU1QTEFURV9QQVJBTV9HRVRQQVJBTVMoVGhpcylcCi0gICAgTkROQk9PU1RfVFlQRU9GX1RPU0VRKE5ETkJPT1NUX1BQX1NFUV9FTEVNKDEsIFRoaXMpKQotCi0vL0VuY29kZSAvIGRlY29kZSB0aGlzCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9URU1QTEFURV9QQVJBTV9FTkNPREUoVGhpcywgbilcCi0gICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojp0eXBlX29mOjplbmNvZGVfdGVtcGxhdGU8TkROQk9PU1RfUFBfQ0FUKFYsIG4pLFwKLSAgICAgICBORE5CT09TVF9QUF9DQVQoUCwgbik8TkROQk9PU1RfVFlQRU9GX1NFUV9FTlVNKE5ETkJPT1NUX1RZUEVPRl9NQUtFX09CSlMoTkROQk9PU1RfVFlQRU9GX1RFTVBMQVRFX1BBUkFNX0dFVFBBUkFNUyhUaGlzKSksTkROQk9PU1RfVFlQRU9GX1BMQUNFSE9MREVSKSA+XAotICAgPjo6dHlwZSBORE5CT09TVF9QUF9DQVQoViwgTkROQk9PU1RfUFBfSU5DKG4pKTsKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVEVNUExBVEVfUEFSQU1fREVDT0RFKFRoaXMsIG4pXAotICAgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6ZGVjb2RlX3RlbXBsYXRlPCBORE5CT09TVF9QUF9DQVQoaXRlciwgbikgPiBORE5CT09TVF9QUF9DQVQoZCwgbik7XAotICAgdHlwZWRlZiB0eXBlbmFtZSBORE5CT09TVF9QUF9DQVQoZCwgbik6OnR5cGUgTkROQk9PU1RfUFBfQ0FUKFAsIG4pO1wKLSAgIHR5cGVkZWYgdHlwZW5hbWUgTkROQk9PU1RfUFBfQ0FUKGQsIG4pOjppdGVyIE5ETkJPT1NUX1BQX0NBVChpdGVyLE5ETkJPT1NUX1BQX0lOQyhuKSk7Ci0KLS8vIHRlbXBsYXRlPGNsYXNzLCB1bnNpZ25lZCBpbnQsIC4uLj4gY2xhc3MKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RFTVBMQVRFX1BBUkFNX0VYUEFORFRZUEUoVGhpcykgXAotICAgIHRlbXBsYXRlIDxORE5CT09TVF9QUF9TRVFfRU5VTShORE5CT09TVF9UWVBFT0ZfVEVNUExBVEVfUEFSQU1fR0VUUEFSQU1TKFRoaXMpKSA+IGNsYXNzCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RFTVBMQVRFX1BBUkFNX1BMQUNFSE9MREVSKFBhcmFtKVwKLSAgICBOZXN0ZWRfVGVtcGxhdGVfVGVtcGxhdGVfQXJndW1lbnRzX05vdF9TdXBwb3J0ZWQKLQotLy8ndGVtcGxhdGU8Y2xhc3MsaW50PiBjbGFzcycgaXMgcmVkdWNlZCB0byAnY2xhc3MnCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9URU1QTEFURV9QQVJBTV9ERUNMQVJBVElPTl9UWVBFKFBhcmFtKSBjbGFzcwotCi0vLyBUMzxpbnQsICh1bnNpZ25lZCBpbnQpMCwgLi4uPgotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVEVNUExBVEVfUEFSQU1fUExBQ0VIT0xERVJfVFlQRVMoUGFyYW0sIG4pXAotICAgIE5ETkJPT1NUX1BQX0NBVChULG4pPE5ETkJPT1NUX1RZUEVPRl9TRVFfRU5VTV8xKE5ETkJPT1NUX1RZUEVPRl9NQUtFX09CSlMoTkROQk9PU1RfVFlQRU9GX1RFTVBMQVRFX1BBUkFNX0dFVFBBUkFNUyhQYXJhbSkpLE5ETkJPT1NUX1RZUEVPRl9QTEFDRUhPTERFUikgPgotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9URU1QTEFURV9QQVJBTV9JU1RFTVBMQVRFIDEKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gbW92ZSB0byBlbmNvZGVfZGVjb2RlPwotCi1ORE5CT09TVF9UWVBFT0ZfQkVHSU5fRU5DT0RFX05TCi0KLXRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIFR5cGVfTm90X1JlZ2lzdGVyZWRfV2l0aF9UeXBlb2ZfU3lzdGVtPiBzdHJ1Y3QgZW5jb2RlX3RlbXBsYXRlX2ltcGw7Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBJdGVyPiBzdHJ1Y3QgZGVjb2RlX3RlbXBsYXRlX2ltcGw7Ci0KLU5ETkJPT1NUX1RZUEVPRl9FTkRfRU5DT0RFX05TCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB0eXBlX29mIHsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIFQ+IHN0cnVjdCBlbmNvZGVfdGVtcGxhdGUKLSAgICAgICAgOiBORE5CT09TVF9UWVBFT0ZfRU5DT0RFX05TX1FVQUxJRklFUjo6ZW5jb2RlX3RlbXBsYXRlX2ltcGw8ViwgVD4KLSAgICB7fTsKLQotICAgIHRlbXBsYXRlPGNsYXNzIEl0ZXI+IHN0cnVjdCBkZWNvZGVfdGVtcGxhdGUKLSAgICAgICAgOiBORE5CT09TVF9UWVBFT0ZfRU5DT0RFX05TX1FVQUxJRklFUjo6ZGVjb2RlX3RlbXBsYXRlX2ltcGw8dHlwZW5hbWUgSXRlcjo6dHlwZSwgdHlwZW5hbWUgSXRlcjo6bmV4dD4KLSAgICB7fTsKLX19Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIG1vdmUgdG8gdGVtcGxhdGVfZW5jb2RpbmcuaHBwPwotCi0vL1RlbXBsYXRlIHRlbXBsYXRlIHJlZ2lzdHJhdGlvbgotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRV9GT1JfVEVNUExBVEVfVEVNUExBVEUoTmFtZSxQYXJhbXMsSUQpXAotICAgIHRlbXBsYXRlPGNsYXNzIFZcCi0gICAgICAgIE5ETkJPT1NUX1RZUEVPRl9TRVFfRU5VTV9UUkFJTElORyhQYXJhbXMsTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RFTVBMQVRFX1BBUkFNX1BBSVIpXAotICAgID5cCi0gICAgc3RydWN0IGVuY29kZV90ZW1wbGF0ZV9pbXBsPFYsTmFtZTxcCi0gICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKFwKLSAgICAgICAgTkROQk9PU1RfUFBfU0VRX1NJWkUoUGFyYW1zKSxcCi0gICAgICAgIFApPiA+XAotICAgICAgICA6IG5kbmJvb3N0Ojp0eXBlX29mOjpwdXNoX2JhY2s8ViwgbmRuYm9vc3Q6Om1wbDo6c2l6ZV90PElEPiA+XAotICAgIHtcCi0gICAgfTtcCi0gICAgdGVtcGxhdGU8Y2xhc3MgSXRlcj4gc3RydWN0IGRlY29kZV90ZW1wbGF0ZV9pbXBsPG5kbmJvb3N0OjptcGw6OnNpemVfdDxJRD4sIEl0ZXI+XAotICAgIHtcCi0gICAgICAgIE5ETkJPT1NUX1BQX1JFUEVBVChORE5CT09TVF9QUF9TRVFfU0laRShQYXJhbXMpLE5ETkJPT1NUX1RZUEVPRl9UWVBFREVGX0lOVF9QTixfKVwKLSAgICAgICAgdHlwZWRlZiBOYW1lPE5ETkJPT1NUX1RZUEVPRl9TRVFfRU5VTShQYXJhbXMsTkROQk9PU1RfVFlQRU9GX1BMQUNFSE9MREVSKSA+IHR5cGU7XAotICAgICAgICB0eXBlZGVmIEl0ZXIgaXRlcjtcCi0gICAgfTsKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVFlQRURFRl9JTlRfUE4oeixuLFBhcmFtcykgdHlwZWRlZiBpbnQgTkROQk9PU1RfUFBfQ0FUKFAsbik7Ci0KLSNpZmRlZiBfX0JPUkxBTkRDX18KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0RFQ09ERV9ORVNURURfVEVNUExBVEVfSEVMUEVSX05BTUUgTkROQk9PU1RfUFBfQ0FUKFwKLSAgICAgICAgTkROQk9PU1RfUFBfQ0FUKFwKLSAgICAgICAgICAgIE5ETkJPT1NUX1BQX0NBVChcCi0gICAgICAgICAgICAgICAgZGVjb2RlX25lc3RlZF90ZW1wbGF0ZV9oZWxwZXIsXAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RSQVRJT05fR1JPVVBcCi0gICAgICAgICAgICApLDB4MTAwMDBcCi0gICAgICAgICksX19MSU5FX19cCi0gICAgKQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfREVDT0RFX05FU1RFRF9URU1QTEFURV9IRUxQRVJfSU1QTChOYW1lLFBhcmFtcyxJRClcCi0gICAgc3RydWN0IE5ETkJPT1NUX1RZUEVPRl9ERUNPREVfTkVTVEVEX1RFTVBMQVRFX0hFTFBFUl9OQU1FIHtcCi0gICAgICAgIHRlbXBsYXRlPE5ETkJPT1NUX1RZUEVPRl9TRVFfRU5VTShQYXJhbXMsTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX0RFQ0xBUkVfREVDT0RFUl9UWVBFX1BBUkFNX1BBSVIpID5cCi0gICAgICAgIHN0cnVjdCBkZWNvZGVfcGFyYW1zO1wKLSAgICAgICAgdGVtcGxhdGU8TkROQk9PU1RfVFlQRU9GX1NFUV9FTlVNKFBhcmFtcyxORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfREVDT0RFUl9UWVBFX1BBUkFNX1BBSVIpID5cCi0gICAgICAgIHN0cnVjdCBkZWNvZGVfcGFyYW1zPE5ETkJPT1NUX1RZUEVPRl9TRVFfRU5VTShQYXJhbXMsTkROQk9PU1RfVFlQRU9GX1BMQUNFSE9MREVSX1RZUEVTKSA+XAotICAgICAgICB7XAotICAgICAgICAgICAgdHlwZWRlZiBOYW1lPE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX1NFUV9TSVpFKFBhcmFtcyksVCk+IHR5cGU7XAotICAgICAgICB9O1wKLSAgICB9OwotLy9UZW1wbGF0ZSB0ZW1wbGF0ZSBwYXJhbSBkZWNvZGluZwotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVFlQRURFRl9ERUNPREVEX1RFTVBMQVRFX1RFTVBMQVRFX1RZUEUoTmFtZSxQYXJhbXMpXAotICAgIHR5cGVkZWYgdHlwZW5hbWUgTkROQk9PU1RfVFlQRU9GX0RFQ09ERV9ORVNURURfVEVNUExBVEVfSEVMUEVSX05BTUU6OmRlY29kZV9wYXJhbXM8TkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfU0VRX1NJWkUoUGFyYW1zKSxQKT46OnR5cGUgdHlwZTsKLQotI2Vsc2UKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX0RFQ09ERV9ORVNURURfVEVNUExBVEVfSEVMUEVSX0lNUEwoTmFtZSxQYXJhbXMsSUQpCi0KLS8vVGVtcGxhdGUgdGVtcGxhdGUgcGFyYW0gZGVjb2RpbmcKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RZUEVERUZfREVDT0RFRF9URU1QTEFURV9URU1QTEFURV9UWVBFKE5hbWUsUGFyYW1zKVwKLSAgICB0ZW1wbGF0ZTxORE5CT09TVF9UWVBFT0ZfU0VRX0VOVU0oUGFyYW1zLE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9ERUNMQVJFX0RFQ09ERVJfVFlQRV9QQVJBTV9QQUlSKSA+XAotICAgIHN0cnVjdCBkZWNvZGVfcGFyYW1zO1wKLSAgICB0ZW1wbGF0ZTxORE5CT09TVF9UWVBFT0ZfU0VRX0VOVU0oUGFyYW1zLE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9ERUNPREVSX1RZUEVfUEFSQU1fUEFJUikgPlwKLSAgICBzdHJ1Y3QgZGVjb2RlX3BhcmFtczxORE5CT09TVF9UWVBFT0ZfU0VRX0VOVU0oUGFyYW1zLE5ETkJPT1NUX1RZUEVPRl9QTEFDRUhPTERFUl9UWVBFUykgPlwKLSAgICB7XAotICAgICAgICB0eXBlZGVmIE5hbWU8TkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfU0VRX1NJWkUoUGFyYW1zKSxUKT4gdHlwZTtcCi0gICAgfTtcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZWNvZGVfcGFyYW1zPE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX1NFUV9TSVpFKFBhcmFtcyksUCk+Ojp0eXBlIHR5cGU7Ci0jZW5kaWYKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX0RFQ0xBUkVfREVDT0RFUl9UWVBFX1BBUkFNX1BBSVIoeixuLGVsZW0pIFwKLSAgICBORE5CT09TVF9UWVBFT0ZfVklSVFVBTChERUNMQVJBVElPTl9UWVBFLCBlbGVtKShlbGVtKSBORE5CT09TVF9QUF9DQVQoVCwgbikKLQotLy8gTkROQk9PU1RfVFlQRU9GX0hBU19URU1QTEFURVMKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0hBU19URU1QTEFURVMoUGFyYW1zKVwKLSAgICBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUKE5ETkJPT1NUX1RZUEVPRl9IQVNfVEVNUExBVEVTX09QLCAwLCBQYXJhbXMpCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0hBU19URU1QTEFURVNfT1Aocywgc3RhdGUsIGVsZW0pXAotICAgIE5ETkJPT1NUX1BQX09SKHN0YXRlLCBORE5CT09TVF9UWVBFT0ZfVklSVFVBTChJU1RFTVBMQVRFLCBlbGVtKSkKLQotLy9EZWZpbmUgdGVtcGxhdGUgdGVtcGxhdGUgYXJndW1lbnRzCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9URU1QTEFURV9URU1QTEFURV9JTVBMKE5hbWUsUGFyYW1zLElEKVwKLSAgICBORE5CT09TVF9QUF9JRihORE5CT09TVF9UWVBFT0ZfSEFTX1RFTVBMQVRFUyhQYXJhbXMpLFwKLSAgICAgICAgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX0RFQ09ERV9ORVNURURfVEVNUExBVEVfSEVMUEVSX0lNUEwsXAotICAgICAgICBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRV9GT1JfVEVNUExBVEVfVEVNUExBVEUpKE5hbWUsUGFyYW1zLElEKQotCi0jZW5kaWYgLy9ORE5CT09TVF9UWVBFT0ZfVEVNUExBVEVfVEVNUExBVEVfUEFSQU1fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi90eXBlX2VuY29kaW5nLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3R5cGVfZW5jb2RpbmcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDU5YmYyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3R5cGVfZW5jb2RpbmcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA0IEFya2FkaXkgVmVydGxleWIKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9UWVBFX0VOQ09ESU5HX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVFlQRV9FTkNPRElOR19IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRV9JTVBMKFQsIElkKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCBlbmNvZGVfdHlwZV9pbXBsPFYsIFQgPiAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICA6IG5kbmJvb3N0Ojp0eXBlX29mOjpwdXNoX2JhY2s8ViwgbmRuYm9vc3Q6Om1wbDo6c2l6ZV90PElkPiA+ICAgICAgICAgXAotICAgIHt9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlPGNsYXNzIEl0ZXI+IHN0cnVjdCBkZWNvZGVfdHlwZV9pbXBsPG5kbmJvb3N0OjptcGw6OnNpemVfdDxJZD4sIEl0ZXI+IFwKLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdHlwZWRlZiBUIHR5cGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdHlwZWRlZiBJdGVyIGl0ZXI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9OwotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFX0VYUExJQ0lUX0lEKFR5cGUsIElkKSAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFlQRU9GX0JFR0lOX0VOQ09ERV9OUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEVfSU1QTChUeXBlLCBJZCkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFlQRU9GX0VORF9FTkNPREVfTlMKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRShUeXBlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFX0VYUExJQ0lUX0lEKFR5cGUsIE5ETkJPT1NUX1RZUEVPRl9VTklRVUVfSUQoKSkKLQotI2VuZGlmLy9ORE5CT09TVF9UWVBFT0ZfVFlQRV9FTkNPRElOR19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3R5cGVfdGVtcGxhdGVfcGFyYW0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdHlwZV90ZW1wbGF0ZV9wYXJhbS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhYmM0NWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdHlwZV90ZW1wbGF0ZV9wYXJhbS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgQXJrYWRpeSBWZXJ0bGV5YgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRU9GX1RZUEVfVEVNUExBVEVfUEFSQU1fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9UWVBFX1RFTVBMQVRFX1BBUkFNX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9jbGFzc19ORE5CT09TVF9UWVBFT0YgKGNsYXNzKQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfdHlwZW5hbWVfTkROQk9PU1RfVFlQRU9GICh0eXBlbmFtZSkKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTUFLRV9PQkpfY2xhc3MgTkROQk9PU1RfVFlQRU9GX1RZUEVfUEFSQU0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX01BS0VfT0JKX3R5cGVuYW1lIE5ETkJPT1NUX1RZUEVPRl9UWVBFX1BBUkFNCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RZUEVfUEFSQU1cCi0gICAgKFRZUEVfUEFSQU0pCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RZUEVfUEFSQU1fRVhQQU5EVFlQRShQYXJhbSkgY2xhc3MKLQotLy8gVFlQRV9QQVJBTSAidmlydHVhbCBmdW5jdGlvbnMiIGltcGxlbWVudGF0aW9uCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RZUEVfUEFSQU1fRU5DT0RFKFRoaXMsIG4pXAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnR5cGVfb2Y6OmVuY29kZV90eXBlPFwKLSAgICAgICAgTkROQk9PU1RfUFBfQ0FUKFYsIG4pLFwKLSAgICAgICAgTkROQk9PU1RfUFBfQ0FUKFAsIG4pXAotICAgID46OnR5cGUgTkROQk9PU1RfUFBfQ0FUKFYsIE5ETkJPT1NUX1BQX0lOQyhuKSk7IAotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9UWVBFX1BBUkFNX0RFQ09ERShUaGlzLCBuKVwKLSAgICB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjpkZWNvZGVfdHlwZTwgTkROQk9PU1RfUFBfQ0FUKGl0ZXIsIG4pID4gTkROQk9PU1RfUFBfQ0FUKGQsIG4pO1wKLSAgICB0eXBlZGVmIHR5cGVuYW1lIE5ETkJPT1NUX1BQX0NBVChkLCBuKTo6dHlwZSBORE5CT09TVF9QUF9DQVQoUCwgbik7XAotICAgIHR5cGVkZWYgdHlwZW5hbWUgTkROQk9PU1RfUFBfQ0FUKGQsIG4pOjppdGVyIE5ETkJPT1NUX1BQX0NBVChpdGVyLCBORE5CT09TVF9QUF9JTkMobikpOwotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9UWVBFX1BBUkFNX1BMQUNFSE9MREVSKFBhcmFtKSBpbnQKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RZUEVfUEFSQU1fREVDTEFSQVRJT05fVFlQRShQYXJhbSkgY2xhc3MKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RZUEVfUEFSQU1fUExBQ0VIT0xERVJfVFlQRVMoUGFyYW0sIG4pIE5ETkJPT1NUX1BQX0NBVChULG4pCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9UWVBFX1BBUkFNX0lTVEVNUExBVEUgMAotCi0jZW5kaWYvL05ETkJPT1NUX1RZUEVPRl9UWVBFX1RFTVBMQVRFX1BBUkFNX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdHlwZW9mLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3R5cGVvZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4NDdiYWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdHlwZW9mLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxOCArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDQgQXJrYWRpeSBWZXJ0bGV5YgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRU9GX1RZUEVPRl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RZUEVPRl9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfVFlQRU9GX0NPTVBMSUFOVCkKLSMgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT04pICYmIGRlZmluZWQoTkROQk9PU1RfVFlQRU9GX05BVElWRSkKLSMgICBlcnJvciBib3RoIHR5cGVvZiBlbXVsYXRpb24gYW5kIG5hdGl2ZSBtb2RlIHJlcXVlc3RlZAotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fQ09NT19fKQotIyAgIGlmZGVmIF9fR05VR19fCi0jICAgICAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OCi0jICAgICAgICAgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX05BVElWRQotIyAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfTkFUSVZFCi0jICAgICAgICAgICBlbmRpZgotIyAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9LRVlXT1JEIHR5cGVvZgotIyAgICAgICBlbmRpZgotIyAgIGVsc2UKLSMgICAgICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9OQVRJVkUKLSMgICAgICAgICAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OCi0jICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT04KLSMgICAgICAgICAgIGVuZGlmCi0jICAgICAgIGVsc2UKLSMgICAgICAgICAgIGVycm9yIG5hdGl2ZSB0eXBlb2YgaXMgbm90IHN1cHBvcnRlZAotIyAgICAgICBlbmRpZgotIyAgIGVuZGlmCi0KLSNlbGlmIGRlZmluZWQoX19JTlRFTF9DT01QSUxFUikgfHwgZGVmaW5lZChfX0lDTCkgfHwgZGVmaW5lZChfX0lDQykgfHwgZGVmaW5lZChfX0VDQykKLSMgICBpZmRlZiBfX0dOVUNfXwotIyAgICAgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTgotIyAgICAgICAgICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9OQVRJVkUKLSMgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05BVElWRQotIyAgICAgICAgICAgZW5kaWYKLSMgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfS0VZV09SRCBfX3R5cGVvZl9fCi0jICAgICAgIGVuZGlmCi0jICAgZWxzZQotIyAgICAgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX05BVElWRQotIyAgICAgICAgICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT04KLSMgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTgotIyAgICAgICAgICAgZW5kaWYKLSMgICAgICAgZWxzZQotIyAgICAgICAgICAgZXJyb3IgbmF0aXZlIHR5cGVvZiBpcyBub3Qgc3VwcG9ydGVkCi0jICAgICAgIGVuZGlmCi0jICAgZW5kaWYKLQotI2VsaWYgZGVmaW5lZChfX0dOVUNfXykKLSMgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTgotIyAgICAgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX05BVElWRQotIyAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9OQVRJVkUKLSMgICAgICAgZW5kaWYKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9LRVlXT1JEIF9fdHlwZW9mX18KLSMgICBlbmRpZgotCi0jZWxpZiBkZWZpbmVkKF9fTVdFUktTX18pCi0jICAgaWYoX19NV0VSS1NfXyA8PSAweDMwMDMpICAvLyA4LngKLSMgICAgICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT04KLSMgICAgICAgICAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfTkFUSVZFCi0jICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9OQVRJVkUKLSMgICAgICAgICAgIGVuZGlmCi0jICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0tFWVdPUkQgX190eXBlb2ZfXwotIyAgICAgICBlbHNlCi0jICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTl9VTlNVUFBPUlRFRAotIyAgICAgICBlbmRpZgotIyAgIGVsc2UgLy8gOS54Ci0jICAgICAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OCi0jICAgICAgICAgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX05BVElWRQotIyAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfTkFUSVZFCi0jICAgICAgICAgICBlbmRpZgotIyAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9LRVlXT1JEIF9fdHlwZW9mX18KLSMgICAgICAgZW5kaWYKLSMgICBlbmRpZgotI2VsaWYgZGVmaW5lZCBfX0NPREVHRUFSQ19fCi0jICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT04KLSMgICAgICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9OQVRJVkUKLSMgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OX1VOU1VQUE9SVEVECi0jICAgICAgIGVuZGlmCi0jICAgZWxzZQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTl9VTlNVUFBPUlRFRAotIyAgIGVuZGlmCi0jZWxpZiBkZWZpbmVkIF9fQk9STEFORENfXwotIyAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OCi0jICAgICAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfTkFUSVZFCi0jICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTl9VTlNVUFBPUlRFRAotIyAgICAgICBlbmRpZgotIyAgIGVsc2UKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT05fVU5TVVBQT1JURUQKLSMgICBlbmRpZgotI2VsaWYgZGVmaW5lZCBfX0RNQ19fCi0jICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT04KLSMgICAgICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9OQVRJVkUKLSMgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfTkFUSVZFCi0jICAgICAgIGVuZGlmCi0jICAgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi9kbWMvdHlwZW9mX2ltcGwuaHBwPgotIyAgICAgICBkZWZpbmUgTVNWQ19UWVBFT0ZfSEFDSwotIyAgIGVuZGlmCi0jZWxpZiBkZWZpbmVkKF9NU0NfVkVSKQotIyAgIGlmIChfTVNDX1ZFUiA8PSAxMzAwKSAgLy8gNi41LCA3LjAKLSMgICAgICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT04KLSMgICAgICAgICAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfTkFUSVZFCi0jICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9OQVRJVkUKLSMgICAgICAgICAgIGVuZGlmCi0jICAgICAgICAgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvbXN2Yy90eXBlb2ZfaW1wbC5ocHA+Ci0jICAgICAgICAgICBkZWZpbmUgTVNWQ19UWVBFT0ZfSEFDSwotIyAgICAgICBlbHNlCi0jICAgICAgICAgICBlcnJvciB0eXBlb2YgZW11bGF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQKLSMgICAgICAgZW5kaWYKLSMgICBlbGlmIChfTVNDX1ZFUiA+PSAxMzEwKSAgLy8gNy4xIC0+Ci0jICAgICAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OCi0jICAgICAgICAgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX05BVElWRQotIyAgICAgICAgICAgICAgIGlmbmRlZiBfTVNDX0VYVEVOU0lPTlMKLSMgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT04KLSMgICAgICAgICAgICAgICBlbHNlCi0jICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfTkFUSVZFCi0jICAgICAgICAgICAgICAgZW5kaWYKLSMgICAgICAgICAgIGVuZGlmCi0jICAgICAgIGVuZGlmCi0jICAgICAgIGlmZGVmIE5ETkJPT1NUX1RZUEVPRl9OQVRJVkUKLSMgICAgICAgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi9tc3ZjL3R5cGVvZl9pbXBsLmhwcD4KLSMgICAgICAgICAgIGRlZmluZSBNU1ZDX1RZUEVPRl9IQUNLCi0jICAgICAgIGVuZGlmCi0jICAgZW5kaWYKLSNlbGlmIGRlZmluZWQoX19IUF9hQ0MpCi0jICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9OQVRJVkUKLSMgICAgICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT04KLSMgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OCi0jICAgICAgIGVuZGlmCi0jICAgZWxzZQotIyAgICAgICBlcnJvciBuYXRpdmUgdHlwZW9mIGlzIG5vdCBzdXBwb3J0ZWQKLSMgICBlbmRpZgotCi0jZWxpZiBkZWZpbmVkKF9fREVDQ1hYKQotIyAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfTkFUSVZFCi0jICAgICAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OCi0jICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTgotIyAgICAgICBlbmRpZgotIyAgIGVsc2UKLSMgICAgICAgZXJyb3IgbmF0aXZlIHR5cGVvZiBpcyBub3Qgc3VwcG9ydGVkCi0jICAgZW5kaWYKLQotI2VsaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pCi0jICAgaWYgKF9fQk9STEFORENfXyA8IDB4NTkwKQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05PX0ZVTkNUSU9OX1RZUEVTCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfTk9fTUVNQkVSX0ZVTkNUSU9OX1RZUEVTCi0jICAgZW5kaWYKLSMgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX05BVElWRQotIyAgICAgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTgotIyAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT04KLSMgICAgICAgZW5kaWYKLSMgICBlbHNlCi0jICAgICAgIGVycm9yIG5hdGl2ZSB0eXBlb2YgaXMgbm90IHN1cHBvcnRlZAotIyAgIGVuZGlmCi0jZWxpZiBkZWZpbmVkKF9fU1VOUFJPX0NDKQotIyAgIGlmIChfX1NVTlBST19DQyA8IDB4NTkwICkKLSMgICAgIGlmZGVmIE5ETkJPT1NUX1RZUEVPRl9OQVRJVkUKLSMgICAgICAgICBlcnJvciBuYXRpdmUgdHlwZW9mIGlzIG5vdCBzdXBwb3J0ZWQKLSMgICAgIGVuZGlmCi0jICAgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTgotIyAgICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OCi0jICAgICBlbmRpZgotIyAgIGVsc2UKLSMgICAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OCi0jICAgICAgICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9OQVRJVkUKLSMgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9OQVRJVkUKLSMgICAgICAgICBlbmRpZgotIyAgICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfS0VZV09SRCBfX3R5cGVvZl9fCi0jICAgICBlbmRpZgotIyAgIGVuZGlmCi0jZWxzZSAvL3Vua25vd24gY29tcGlsZXIKLSMgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX05BVElWRQotIyAgICAgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTgotIyAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT04KLSMgICAgICAgZW5kaWYKLSMgICBlbHNlCi0jICAgICAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfS0VZV09SRAotIyAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9LRVlXT1JEIHR5cGVvZgotIyAgICAgICBlbmRpZgotIyAgIGVuZGlmCi0KLSNlbmRpZgotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9VTklRVUVfSUQoKVwKLSAgICAgTkROQk9PU1RfVFlQRU9GX1JFR0lTVFJBVElPTl9HUk9VUCAqIDB4MTAwMDAgKyBfX0xJTkVfXwotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9JTkNSRU1FTlRfUkVHSVNUUkFUSU9OX0dST1VQKClcCi0gICAgIDxuZG5ib29zdC90eXBlb2YvaW5jcl9yZWdpc3RyYXRpb25fZ3JvdXAuaHBwPgotCi0jaWZkZWYgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTl9VTlNVUFBPUlRFRAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi91bnN1cHBvcnRlZC5ocHA+Ci0jZWxpZiBkZWZpbmVkIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT04KLSMgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RFWFQgInVzaW5nIHR5cGVvZiBlbXVsYXRpb24iCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL21lc3NhZ2UuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi90eXBlb2ZfaW1wbC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL3R5cGVfZW5jb2RpbmcuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi90ZW1wbGF0ZV9lbmNvZGluZy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL21vZGlmaWVycy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL3BvaW50ZXJzX2RhdGFfbWVtYmVycy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL3JlZ2lzdGVyX2Z1bmN0aW9ucy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL3JlZ2lzdGVyX2Z1bmRhbWVudGFsLmhwcD4KLQotI2VsaWYgZGVmaW5lZChORE5CT09TVF9UWVBFT0ZfTkFUSVZFKQotIyAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfVEVYVCAidXNpbmcgbmF0aXZlIHR5cGVvZiIKLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvbWVzc2FnZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL25hdGl2ZS5ocHA+Ci0jZWxzZQotIyAgIGVycm9yIHR5cGVvZiBjb25maWd1cmF0aW9uIGVycm9yCi0jZW5kaWYKLQotLy8gYXV0bwotI2RlZmluZSBORE5CT09TVF9BVVRPKFZhciwgRXhwcikgTkROQk9PU1RfVFlQRU9GKEV4cHIpIFZhciA9IEV4cHIKLSNkZWZpbmUgTkROQk9PU1RfQVVUT19UUEwoVmFyLCBFeHByKSBORE5CT09TVF9UWVBFT0ZfVFBMKEV4cHIpIFZhciA9IEV4cHIKLQotI2VuZGlmLy9ORE5CT09TVF9UWVBFT0ZfVFlQRU9GX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdHlwZW9mX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdHlwZW9mX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NWVjMjhjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3R5cGVvZl9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4NiArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgQXJrYWRpeSBWZXJ0bGV5YgotLy8gQ29weXJpZ2h0IChDKSAyMDA1IFBlZGVyIEhvbHQKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9UWVBFT0ZfSU1QTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RZUEVPRl9JTVBMX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3NpemVfdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL2VuY29kZV9kZWNvZGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi92ZWN0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Z1bmN0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2VuYWJsZV9pZi5ocHA+Ci0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1ZFQ1RPUihuKSBORE5CT09TVF9QUF9DQVQobmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvciwgbikKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0Zfc2l6ZXJfaXRlbSh6LCBuLCBfKVwKLSAgICBjaGFyIGl0ZW0gIyMgbltWOjppdGVtICMjIG4gOjp2YWx1ZV07Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB0eXBlX29mIHsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPgotICAgIHN0cnVjdCBzaXplcgotICAgIHsKLSAgICAgICAgLy8gY2hhciBpdGVtMFtWOjppdGVtMDo6dmFsdWVdOwotICAgICAgICAvLyBjaGFyIGl0ZW0xW1Y6Oml0ZW0xOjp2YWx1ZV07Ci0gICAgICAgIC8vIC4uLgotCi0gICAgICAgIE5ETkJPT1NUX1BQX1JFUEVBVChORE5CT09TVF9UWVBFT0ZfTElNSVRfU0laRSwgTkROQk9PU1RfVFlQRU9GX3NpemVyX2l0ZW0sIH4pCi0gICAgfTsKLX19Ci0KLSN1bmRlZiBORE5CT09TVF9UWVBFT0Zfc2l6ZXJfaXRlbQotCi0vLwotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHR5cGVfb2YgewotIyBpZmRlZiBORE5CT09TVF9OT19TRklOQUUKLSAgICB0ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBUPgotICAgIHNpemVyPHR5cGVuYW1lIGVuY29kZV90eXBlPFYsIFQ+Ojp0eXBlPiBlbmNvZGUoY29uc3QgVCYpOwotIyBlbHNlCi0gICAgdGVtcGxhdGU8Y2xhc3MgViwgY2xhc3MgVD4KLSAgICB0eXBlbmFtZSBlbmFibGVfaWY8Ci0gICAgICAgIHR5cGVuYW1lIGlzX2Z1bmN0aW9uPFQ+Ojp0eXBlLAotICAgICAgICBzaXplcjx0eXBlbmFtZSBlbmNvZGVfdHlwZTxWLCBUPjo6dHlwZT4gPjo6dHlwZSBlbmNvZGUoVCYpOwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgViwgY2xhc3MgVD4KLSAgICB0eXBlbmFtZSBkaXNhYmxlX2lmPAotICAgICAgICB0eXBlbmFtZSBpc19mdW5jdGlvbjxUPjo6dHlwZSwKLSAgICAgICAgc2l6ZXI8dHlwZW5hbWUgZW5jb2RlX3R5cGU8ViwgVD46OnR5cGU+ID46OnR5cGUgZW5jb2RlKGNvbnN0IFQmKTsKLSMgZW5kaWYKLX19Ci0vLwotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHR5cGVfb2YgewotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVj4KLSAgICBzdHJ1Y3QgZGVjb2RlX2JlZ2luCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGRlY29kZV90eXBlPHR5cGVuYW1lIFY6OmJlZ2luPjo6dHlwZSB0eXBlOwotICAgIH07Ci19fQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9UWVBFSVRFTSh6LCBuLCBleHByKVwKLSAgICBuZG5ib29zdDo6bXBsOjpzaXplX3Q8c2l6ZW9mKG5kbmJvb3N0Ojp0eXBlX29mOjplbmNvZGU8TkROQk9PU1RfVFlQRU9GX1ZFQ1RPUigwKTw+ID4oZXhwcikuaXRlbSAjIyBuKT4KLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfRU5DT0RFRF9WRUNUT1IoRXhwcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9UWVBFT0ZfVkVDVE9SKE5ETkJPT1NUX1RZUEVPRl9MSU1JVF9TSVpFKTwgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX1BQX0VOVU0oTkROQk9PU1RfVFlQRU9GX0xJTUlUX1NJWkUsIE5ETkJPT1NUX1RZUEVPRl9UWVBFSVRFTSwgRXhwcikgXAotICAgID4KLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0YoRXhwcilcCi0gICAgbmRuYm9vc3Q6OnR5cGVfb2Y6OmRlY29kZV9iZWdpbjxORE5CT09TVF9UWVBFT0ZfRU5DT0RFRF9WRUNUT1IoRXhwcikgPjo6dHlwZQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9UUEwgdHlwZW5hbWUgTkROQk9PU1RfVFlQRU9GCi0KLS8vb2Zmc2V0X3ZlY3RvciBpcyB1c2VkIHRvIGRlbGF5IHRoZSBpbnNlcnRpb24gb2YgZGF0YSBpbnRvIHRoZSB2ZWN0b3IgaW4gb3JkZXIgdG8gYWxsb3cKLS8vZW5jb2RpbmcgdG8gYmUgZG9uZSBpbiBtYW55IHN0ZXBzCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdHlwZV9vZiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVix0eXBlbmFtZSBPZmZzZXQ+Ci0gICAgc3RydWN0IG9mZnNldF92ZWN0b3IgewotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWLGNsYXNzIE9mZnNldCxjbGFzcyBUPgotICAgIHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6Om9mZnNldF92ZWN0b3I8VixPZmZzZXQ+LFQ+IHsKLSAgICAgICAgdHlwZWRlZiBvZmZzZXRfdmVjdG9yPFYsdHlwZW5hbWUgT2Zmc2V0Ojpwcmlvcj4gdHlwZTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVixjbGFzcyBUPgotICAgIHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6Om9mZnNldF92ZWN0b3I8VixtcGw6OnNpemVfdDwwPiA+LFQ+IHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwdXNoX2JhY2s8VixUPjo6dHlwZSB0eXBlOwotICAgIH07Ci19fQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9ORVNURURfVFlQRUlURU0oeiwgbiwgZXhwcilcCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCxORE5CT09TVF9QUF9DQVQodmFsdWUsbikgPSBzaXplb2YobmRuYm9vc3Q6OnR5cGVfb2Y6OmVuY29kZTxfdHlwZW9mX3N0YXJ0X3ZlY3Rvcj4oZXhwcikuaXRlbSAjIyBuKSk7XAotICAgIHR5cGVkZWYgbmRuYm9vc3Q6Om1wbDo6c2l6ZV90PE5ETkJPT1NUX1BQX0NBVChzZWxmX3Q6OnZhbHVlLG4pPiBORE5CT09TVF9QUF9DQVQoaXRlbSxuKTsKLQotI2lmZGVmIF9fRE1DX18KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05FU1RFRF9UWVBFSVRFTV8yKHosbixleHByKVwKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF90eXBlb2ZfZW5jb2RlX2ZyYWN0aW9uPGl0ZXJhdGlvbj46Ok5ETkJPT1NUX1BQX0NBVChpdGVtLG4pIE5ETkJPT1NUX1BQX0NBVChpdGVtLG4pOwotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9GUkFDVElPTlRZUEUoKVwKLSAgICBORE5CT09TVF9QUF9SRVBFQVQoTkROQk9PU1RfVFlQRU9GX0xJTUlUX1NJWkUsTkROQk9PU1RfVFlQRU9GX05FU1RFRF9UWVBFSVRFTV8yLF8pXAotICAgIHR5cGVkZWYgX3R5cGVvZl9mcmFjdGlvbl9pdGVyPFBvcz4gZnJhY3Rpb25fdHlwZTsKLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9GUkFDVElPTlRZUEUoKVwKLSAgICB0eXBlZGVmIF90eXBlb2ZfZW5jb2RlX2ZyYWN0aW9uPHNlbGZfdDo6aXRlcmF0aW9uPiBmcmFjdGlvbl90eXBlOwotI2VuZGlmCi0KLSNpZmRlZiBfX0JPUkxBTkRDX18KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB0eXBlX29mIHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQb3MsdHlwZW5hbWUgSXRlcj4KLSAgICBzdHJ1Y3QgZ2VuZXJpY190eXBlb2ZfZnJhY3Rpb25faXRlciB7Ci0gICAgICAgIHR5cGVkZWYgZ2VuZXJpY190eXBlb2ZfZnJhY3Rpb25faXRlcjxQb3MsSXRlcj4gc2VsZl90OwotICAgICAgICBzdGF0aWMgY29uc3QgaW50IHBvcz0oUG9zOjp2YWx1ZSk7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQgaXRlcmF0aW9uPShwb3MvNSk7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQgd2hlcmU9cG9zJTU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcjo6dGVtcGxhdGUgX2FwcGx5X25leHQ8c2VsZl90OjppdGVyYXRpb24+Ojp0eXBlIGZyYWN0aW9uX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgZ2VuZXJpY190eXBlb2ZfZnJhY3Rpb25faXRlcjx0eXBlbmFtZSBQb3M6Om5leHQsSXRlcj4gbmV4dDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2X2l0ZXI8ZnJhY3Rpb25fdHlwZSxtcGw6OmludF88c2VsZl90Ojp3aGVyZT4gPjo6dHlwZSB0eXBlOwotICAgIH07Ci19fQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTkVTVEVEX1RZUEVERUZfSU1QTChleHByKSBcCi0gICAgICAgIHRlbXBsYXRlPGludCBfVHlwZW9mX0l0ZXJhdGlvbj5cCi0gICAgICAgIHN0cnVjdCBfdHlwZW9mX2VuY29kZV9mcmFjdGlvbiB7XAotICAgICAgICAgICAgdHlwZWRlZiBfdHlwZW9mX2VuY29kZV9mcmFjdGlvbjxfVHlwZW9mX0l0ZXJhdGlvbj4gc2VsZl90O1wKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsX3R5cGVvZl9lbmNvZGVfb2Zmc2V0ID0gKF9UeXBlb2ZfSXRlcmF0aW9uKk5ETkJPT1NUX1RZUEVPRl9MSU1JVF9TSVpFKSk7XAotICAgICAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6b2Zmc2V0X3ZlY3RvcjxORE5CT09TVF9UWVBFT0ZfVkVDVE9SKDApPD4sbmRuYm9vc3Q6Om1wbDo6c2l6ZV90PHNlbGZfdDo6X3R5cGVvZl9lbmNvZGVfb2Zmc2V0PiA+IF90eXBlb2Zfc3RhcnRfdmVjdG9yO1wKLSAgICAgICAgICAgIE5ETkJPT1NUX1BQX1JFUEVBVChORE5CT09TVF9UWVBFT0ZfTElNSVRfU0laRSxORE5CT09TVF9UWVBFT0ZfTkVTVEVEX1RZUEVJVEVNLGV4cHIpXAotICAgICAgICAgICAgdGVtcGxhdGU8aW50IE5leHQ+XAotICAgICAgICAgICAgc3RydWN0IF9hcHBseV9uZXh0IHtcCi0gICAgICAgICAgICAgICAgdHlwZWRlZiBfdHlwZW9mX2VuY29kZV9mcmFjdGlvbjxOZXh0PiB0eXBlO1wKLSAgICAgICAgICAgIH07XAotICAgICAgICB9O1wKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUG9zPlwKLSAgICAgICAgc3RydWN0IF90eXBlb2ZfZnJhY3Rpb25faXRlciB7XAotICAgICAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6Z2VuZXJpY190eXBlb2ZfZnJhY3Rpb25faXRlcjxQb3MsX3R5cGVvZl9lbmNvZGVfZnJhY3Rpb248MD4gPiBzZWxmX3Q7XAotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZWxmX3Q6Om5leHQgbmV4dDtcCi0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNlbGZfdDo6dHlwZSB0eXBlO1wKLSAgICAgICAgfTsKLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9ORVNURURfVFlQRURFRl9JTVBMKGV4cHIpIFwKLSAgICAgICAgdGVtcGxhdGU8aW50IF9UeXBlb2ZfSXRlcmF0aW9uPlwKLSAgICAgICAgc3RydWN0IF90eXBlb2ZfZW5jb2RlX2ZyYWN0aW9uIHtcCi0gICAgICAgICAgICB0eXBlZGVmIF90eXBlb2ZfZW5jb2RlX2ZyYWN0aW9uPF9UeXBlb2ZfSXRlcmF0aW9uPiBzZWxmX3Q7XAotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCxfdHlwZW9mX2VuY29kZV9vZmZzZXQgPSAoX1R5cGVvZl9JdGVyYXRpb24qTkROQk9PU1RfVFlQRU9GX0xJTUlUX1NJWkUpKTtcCi0gICAgICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjpvZmZzZXRfdmVjdG9yPE5ETkJPT1NUX1RZUEVPRl9WRUNUT1IoMCk8PixuZG5ib29zdDo6bXBsOjpzaXplX3Q8c2VsZl90OjpfdHlwZW9mX2VuY29kZV9vZmZzZXQ+ID4gX3R5cGVvZl9zdGFydF92ZWN0b3I7XAotICAgICAgICAgICAgTkROQk9PU1RfUFBfUkVQRUFUKE5ETkJPT1NUX1RZUEVPRl9MSU1JVF9TSVpFLE5ETkJPT1NUX1RZUEVPRl9ORVNURURfVFlQRUlURU0sZXhwcilcCi0gICAgICAgIH07XAotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQb3M+XAotICAgICAgICBzdHJ1Y3QgX3R5cGVvZl9mcmFjdGlvbl9pdGVyIHtcCi0gICAgICAgICAgICB0eXBlZGVmIF90eXBlb2ZfZnJhY3Rpb25faXRlcjxQb3M+IHNlbGZfdDtcCi0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LHBvcz0oUG9zOjp2YWx1ZSkpO1wKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsaXRlcmF0aW9uPShwb3MvTkROQk9PU1RfVFlQRU9GX0xJTUlUX1NJWkUpKTtcCi0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LHdoZXJlPXBvcyVORE5CT09TVF9UWVBFT0ZfTElNSVRfU0laRSk7XAotICAgICAgICAgICAgTkROQk9PU1RfVFlQRU9GX0ZSQUNUSU9OVFlQRSgpXAotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6dHlwZV9vZjo6dl9pdGVyPGZyYWN0aW9uX3R5cGUsbmRuYm9vc3Q6Om1wbDo6aW50XzxzZWxmX3Q6OndoZXJlPiA+Ojp0eXBlIHR5cGU7XAotICAgICAgICAgICAgdHlwZWRlZiBfdHlwZW9mX2ZyYWN0aW9uX2l0ZXI8dHlwZW5hbWUgUG9zOjpuZXh0PiBuZXh0O1wKLSAgICAgICAgfTsKLSNlbmRpZgotI2lmZGVmIF9fTVdFUktTX18KLQotIyBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05FU1RFRF9UWVBFREVGKG5hbWUsZXhwcikgXAotdGVtcGxhdGU8dHlwZW5hbWUgVD5cCi1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKF90eXBlb2ZfdGVtcGxhdGVfLG5hbWUpIHtcCi0gICAgTkROQk9PU1RfVFlQRU9GX05FU1RFRF9UWVBFREVGX0lNUEwoZXhwcilcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6dHlwZV9vZjo6ZGVjb2RlX3R5cGU8X3R5cGVvZl9mcmFjdGlvbl9pdGVyPG5kbmJvb3N0OjptcGw6OnNpemVfdDwwPiA+ID46OnR5cGUgdHlwZTtcCi19O1wKLXR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKF90eXBlb2ZfdGVtcGxhdGVfLG5hbWUpPGludD4gbmFtZTsKLQotIyBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05FU1RFRF9UWVBFREVGX1RQTChuYW1lLGV4cHIpIE5ETkJPT1NUX1RZUEVPRl9ORVNURURfVFlQRURFRihuYW1lLGV4cHIpCi0KLSNlbHNlCi0jIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfTkVTVEVEX1RZUEVERUZfVFBMKG5hbWUsZXhwcikgXAotICAgIHN0cnVjdCBuYW1lIHtcCi0gICAgICAgIE5ETkJPT1NUX1RZUEVPRl9ORVNURURfVFlQRURFRl9JTVBMKGV4cHIpXAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojp0eXBlX29mOjpkZWNvZGVfdHlwZTxfdHlwZW9mX2ZyYWN0aW9uX2l0ZXI8bmRuYm9vc3Q6Om1wbDo6c2l6ZV90PDA+ID4gPjo6dHlwZSB0eXBlO1wKLSAgICB9OwotCi0jIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfTkVTVEVEX1RZUEVERUYobmFtZSxleHByKSBcCi0gICAgc3RydWN0IG5hbWUge1wKLSAgICAgICAgTkROQk9PU1RfVFlQRU9GX05FU1RFRF9UWVBFREVGX0lNUEwoZXhwcilcCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OmRlY29kZV90eXBlPF90eXBlb2ZfZnJhY3Rpb25faXRlcjxuZG5ib29zdDo6bXBsOjpzaXplX3Q8MD4gPiA+Ojp0eXBlIHR5cGU7XAotICAgIH07Ci0jZW5kaWYKLQotI2VuZGlmLy9ORE5CT09TVF9UWVBFT0ZfQ09NUExJQU5UX1RZUEVPRl9JTVBMX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdW5zdXBwb3J0ZWQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdW5zdXBwb3J0ZWQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMWIyYTgyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3Vuc3VwcG9ydGVkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAxMCBQZWRlciBIb2x0Ci0vLyBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFT0ZfVU5TVVBQT1JURURfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9VTlNVUFBPUlRFRF9IUFBfSU5DTFVERUQKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHR5cGVfb2YgewotICAgIHN0cnVjdCB0eXBlb2ZfZW11bGF0aW9uX2lzX3Vuc3VwcG9ydGVkX29uX3RoaXNfY29tcGlsZXIge307Ci19fQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRihleHByKSBuZG5ib29zdDo6dHlwZV9vZjo6dHlwZW9mX2VtdWxhdGlvbl9pc191bnN1cHBvcnRlZF9vbl90aGlzX2NvbXBpbGVyCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9UUEwgTkROQk9PU1RfVFlQRU9GCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05FU1RFRF9UWVBFREVGX1RQTChuYW1lLGV4cHIpIFwKLXN0cnVjdCBuYW1lIHtcCi0gICAgdHlwZWRlZiBORE5CT09TVF9UWVBFT0ZfVFBMKGV4cHIpIHR5cGU7XAotfTsKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTkVTVEVEX1RZUEVERUYobmFtZSxleHByKSBcCi1zdHJ1Y3QgbmFtZSB7XAotICAgIHR5cGVkZWYgTkROQk9PU1RfVFlQRU9GKGV4cHIpIHR5cGU7XAotfTsKLQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFKHgpCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9URU1QTEFURSh4LCBwYXJhbXMpCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdmVjdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3ZlY3Rvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmYjFkZmQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdmVjdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2NiArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgQXJrYWRpeSBWZXJ0bGV5YgotLy8gQ29weXJpZ2h0IChDKSAyMDA1IFBlZGVyIEhvbHQKLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDYgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9WRUNUT1JfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL3NlbGYuaHBwPgotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9MSU1JVF9TSVpFCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9MSU1JVF9TSVpFIDUwCi0jZW5kaWYKLQotLy8KLS8vIFRvIHJlY3JlYXRlIHRoZSBwcmVwcm9jZXNzZWQgdmVyc2lvbnMgb2YgdGhpcyBmaWxlIHByZXByb2Nlc3MgYW5kIHJ1bgotLy8KLS8vICAgJChORE5CT09TVF9ST09UKS9saWJzL3R5cGVvZi90b29scy9wcmVwcm9jZXNzLnBsCi0vLwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9UWVBFT0ZfUFBfSU5DTFVERV9FWFRFUk5BTCkKLQotIyAgIHVuZGVmIE5ETkJPT1NUX1RZUEVPRl9QUF9JTkNMVURFX0VYVEVSTkFMCi0KLSNlbGlmICFkZWZpbmVkKE5ETkJPT1NUX1RZUEVPRl9QUkVQUk9DRVNTSU5HX01PREUpICYmICFORE5CT09TVF9QUF9JU19TRUxGSVNICi0KLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfSU5ESVJFQ1RfU0VMRiA8bmRuYm9vc3QvdHlwZW9mL3ZlY3Rvci5ocHA+Ci0jICAgaWYgICBORE5CT09TVF9UWVBFT0ZfTElNSVRfU0laRSA8IDUwCi0jICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lOQ0xVREVfU0VMRigpCi0jICAgZWxpZiBORE5CT09TVF9UWVBFT0ZfTElNSVRfU0laRSA8IDEwMAotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL3ZlY3RvcjUwLmhwcD4KLSMgICAgIGRlZmluZSAgTkROQk9PU1RfVFlQRU9GX1BQX1NUQVJUX1NJWkUgNTEKLSMgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSU5DTFVERV9TRUxGKCkKLSMgICBlbGlmIE5ETkJPT1NUX1RZUEVPRl9MSU1JVF9TSVpFIDwgMTUwCi0jICAgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvdmVjdG9yMTAwLmhwcD4KLSMgICAgIGRlZmluZSAgTkROQk9PU1RfVFlQRU9GX1BQX1NUQVJUX1NJWkUgMTAxCi0jICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lOQ0xVREVfU0VMRigpCi0jICAgZWxpZiBORE5CT09TVF9UWVBFT0ZfTElNSVRfU0laRSA8IDIwMAotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL3ZlY3RvcjE1MC5ocHA+Ci0jICAgICBkZWZpbmUgIE5ETkJPT1NUX1RZUEVPRl9QUF9TVEFSVF9TSVpFIDE1MQotIyAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9JTkNMVURFX1NFTEYoKQotIyAgIGVsaWYgTkROQk9PU1RfVFlQRU9GX0xJTUlUX1NJWkUgPD0gMjUwCi0jICAgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvdmVjdG9yMjAwLmhwcD4KLSMgICAgIGRlZmluZSAgTkROQk9PU1RfVFlQRU9GX1BQX1NUQVJUX1NJWkUgMjAxCi0jICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lOQ0xVREVfU0VMRigpCi0jICAgZWxzZQotIyAgICAgZXJyb3IgIk5ETkJPT1NUX1RZUEVPRl9MSU1JVF9TSVpFIHRvbyBoaWdoIgotIyAgIGVuZGlmCi0KLSNlbHNlLy8gZGVmaW5lZChORE5CT09TVF9UWVBFT0ZfUFJFUFJPQ0VTU0lOR19NT0RFKSB8fCBORE5CT09TVF9QUF9JU19TRUxGSVNICi0KLSMgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX1BQX05FWFRfU0laRQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9QUF9ORVhUX1NJWkUgTkROQk9PU1RfVFlQRU9GX0xJTUlUX1NJWkUKLSMgICBlbmRpZgotIyAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfUFBfU1RBUlRfU0laRQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9QUF9TVEFSVF9TSVpFIDAKLSMgICBlbmRpZgotCi0jICAgaWYgTkROQk9PU1RfVFlQRU9GX1BQX1NUQVJUX1NJWkUgPD0gTkROQk9PU1RfVFlQRU9GX0xJTUlUX1NJWkUKLQotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VudW1fcGFyYW1zLmhwcD4KLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBlYXQuaHBwPgotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGVhdF9mcm9tX3RvLmhwcD4KLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2luYy5ocHA+Ci0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGVjLmhwcD4KLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb21tYV9pZi5ocHA+Ci0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2xvY2FsLmhwcD4KLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2V4cHJfaWlmLmhwcD4KLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL25vdC5ocHA+Ci0KLS8vIGl0ZXJhdG9yCi0KLSMgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0Zfc3BlY19pdGVyKG4pXAotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPlwKLSAgICAgICAgc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88bj4gPlwKLSAgICAgICAge1wKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbSAjIyBuIHR5cGU7XAotICAgICAgICAgICAgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPG4gKyAxPiA+IG5leHQ7XAotICAgICAgICB9OwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdHlwZV9vZiB7Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBJbmNyZWFzZV9ORE5CT09TVF9UWVBFT0ZfTElNSVRfU0laRT4gc3RydWN0IHZfaXRlcjsgLy8gbm90IGRlZmluZWQKLSMgICAgIGRlZmluZSAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8gIE5ETkJPT1NUX1RZUEVPRl9zcGVjX2l0ZXIKLSMgICAgIGRlZmluZSAgTkROQk9PU1RfUFBfTE9DQUxfTElNSVRTIFwKLSAgICAgICAgKE5ETkJPT1NUX1BQX0RFQyhORE5CT09TVF9UWVBFT0ZfUFBfU1RBUlRfU0laRSksIFwKLSAgICAgICAgIE5ETkJPT1NUX1BQX0RFQyhORE5CT09TVF9UWVBFT0ZfTElNSVRfU0laRSkpCi0jICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0xPQ0FMX0lURVJBVEUoKQotCi19fQotCi0jICAgICB1bmRlZiBORE5CT09TVF9UWVBFT0Zfc3BlY19pdGVyCi0KLS8vIHZlY3RvcgotCi0jICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX3R5cGVkZWZfaXRlbSh6LCBuLCBfKVwKLSAgICAgICAgdHlwZWRlZiBQICMjIG4gaXRlbSAjIyBuOwotCi0jICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX3R5cGVkZWZfZmFrZV9pdGVtKHosIG4sIF8pXAotICAgICAgICB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtICMjIG47Ci0KLSMgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfZGVmaW5lX3ZlY3RvcihuKVwKLSAgICAgICAgdGVtcGxhdGU8TkROQk9PU1RfUFBfRU5VTV9QQVJBTVMobiwgY2xhc3MgUCkgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTk9UKG4pLCBjbGFzcyBUID0gdm9pZCk+XAotICAgICAgICBzdHJ1Y3QgdmVjdG9yICMjIG5cCi0gICAgICAgIHtcCi0gICAgICAgICAgICB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IgIyMgbjxORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhuLFApPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luO1wKLSAgICAgICAgICAgIE5ETkJPT1NUX1BQX1JFUEVBVChuLCBORE5CT09TVF9UWVBFT0ZfdHlwZWRlZl9pdGVtLCB+KVwKLSAgICAgICAgICAgIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPKG4sIE5ETkJPT1NUX1RZUEVPRl9QUF9ORVhUX1NJWkUsIE5ETkJPT1NUX1RZUEVPRl90eXBlZGVmX2Zha2VfaXRlbSwgfilcCi0gICAgICAgIH07Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB0eXBlX29mIHsKLQotIyAgICAgZGVmaW5lICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyAgTkROQk9PU1RfVFlQRU9GX2RlZmluZV92ZWN0b3IKLSMgICAgIGRlZmluZSAgTkROQk9PU1RfUFBfTE9DQUxfTElNSVRTIFwKLSAgICAgICAgKE5ETkJPT1NUX1RZUEVPRl9QUF9TVEFSVF9TSVpFLE5ETkJPT1NUX1RZUEVPRl9MSU1JVF9TSVpFKQotIyAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9MT0NBTF9JVEVSQVRFKCkKLQotfX0KLQotIyAgICAgdW5kZWYgTkROQk9PU1RfVFlQRU9GX3R5cGVkZWZfaXRlbQotIyAgICAgdW5kZWYgTkROQk9PU1RfVFlQRU9GX3R5cGVkZWZfZmFrZV9pdGVtCi0jICAgICB1bmRlZiBORE5CT09TVF9UWVBFT0ZfZGVmaW5lX3ZlY3RvcgotCi0vLyBwdXNoX2JhY2sKLQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9zcGVjX3B1c2hfYmFjayhuKVwKLSAgICAgICAgdGVtcGxhdGU8TkROQk9PU1RfUFBfRU5VTV9QQVJBTVMobiwgY2xhc3MgUCkgTkROQk9PU1RfUFBfQ09NTUFfSUYobikgY2xhc3MgVD5cCi0gICAgICAgIHN0cnVjdCBwdXNoX2JhY2s8TkROQk9PU1RfUFBfQ0FUKG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IsIG4pPE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKG4sIFApPiwgVD5cCi0gICAgICAgIHtcCi0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yLCBORE5CT09TVF9QUF9JTkMobikpPFwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhuLCBQKSBORE5CT09TVF9QUF9DT01NQV9JRihuKSBUXAotICAgICAgICAgICAgPiB0eXBlO1wKLSAgICAgICAgfTsKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHR5cGVfb2YgewotCi0jICAgaWYgICBORE5CT09TVF9UWVBFT0ZfTElNSVRfU0laRSA8IDUwCi0gICAgdGVtcGxhdGU8Y2xhc3MgViwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjayB7Ci0gICAgICAgIHR5cGVkZWYgViB0eXBlOwotICAgIH07Ci0jICAgZW5kaWYKLSAgICAvL2RlZmF1bHQgYmVoYXZpb3VyIGlzIHRvIGxldCBwdXNoX2JhY2sgaWdub3JlIFQsIGFuZCByZXR1cm4gdGhlIGlucHV0IHZlY3Rvci4KLSAgICAvL1RoaXMgaXMgdG8gbGV0IE5ETkJPT1NUX1RZUEVPRl9ORVNURURfVFlQRURFRiB3b3JrIHByb3Blcmx5IHdpdGggdGhlIGRlZmF1bHQgdmVjdG9yLgotIyAgICAgZGVmaW5lICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyAgTkROQk9PU1RfVFlQRU9GX3NwZWNfcHVzaF9iYWNrCi0jICAgICBkZWZpbmUgIE5ETkJPT1NUX1BQX0xPQ0FMX0xJTUlUUyBcCi0gICAgICAgIChORE5CT09TVF9QUF9ERUMoTkROQk9PU1RfVFlQRU9GX1BQX1NUQVJUX1NJWkUpLCBcCi0gICAgICAgICBORE5CT09TVF9QUF9ERUMoTkROQk9PU1RfVFlQRU9GX0xJTUlUX1NJWkUpKQotIyAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9MT0NBTF9JVEVSQVRFKCkKLQotfX0KLQotIyAgICAgdW5kZWYgTkROQk9PU1RfVFlQRU9GX3NwZWNfcHVzaF9iYWNrCi0KLSMgICBlbmRpZi8vTkROQk9PU1RfVFlQRU9GX1BQX1NUQVJUX1NJWkU8PU5ETkJPT1NUX1RZUEVPRl9MSU1JVF9TSVpFCi0jICAgdW5kZWYgIE5ETkJPT1NUX1RZUEVPRl9QUF9TVEFSVF9TSVpFCi0jICAgdW5kZWYgIE5ETkJPT1NUX1RZUEVPRl9QUF9ORVhUX1NJWkUKLQotI2VuZGlmLy9ORE5CT09TVF9UWVBFT0ZfUFJFUFJPQ0VTU0lOR19NT0RFIHx8IE5ETkJPT1NUX1BQX0lTX1NFTEZJU0gKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVkVDVE9SX0hQUF9JTkNMVURFRAotI2VuZGlmLy9ORE5CT09TVF9UWVBFT0ZfVkVDVE9SX0hQUF9JTkNMVURFRAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi92ZWN0b3IxMDAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdmVjdG9yMTAwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjIxNmNkOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi92ZWN0b3IxMDAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IChDKSAyMDA1IEFya2FkaXkgVmVydGxleWIKLS8vIENvcHlyaWdodCAoQykgMjAwNSBQZWRlciBIb2x0Ci0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8gUHJlcHJvY2Vzc2VkIGNvZGUsIGRvIG5vdCBlZGl0IG1hbnVhbGx5ICEKLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdHlwZV9vZiB7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgViwgY2xhc3MgSW5jcmVhc2VfTkROQk9PU1RfVFlQRU9GX0xJTUlUX1NJWkU+IHN0cnVjdCB2X2l0ZXI7Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0wIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Mj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxOT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxOSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MjA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yMCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDIxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDIxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyMj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTIyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyMiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MjM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yMyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDI0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDI0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyNT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTI1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyNSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MjY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yNiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDI3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDI3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyOD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTI4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyOCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Mjk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yOSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDMwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDMwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzMT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTMxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzMSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MzI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zMiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDMzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDMzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTM0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzNCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MzU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zNSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDM2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDM2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzNz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTM3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzNyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Mzg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zOCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDM5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDM5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0MD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0MCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00MSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0Mz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0MyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00NCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0Nj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQ2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0NiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00NyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0OT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQ5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0OSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NTA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW01MCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NTAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDUxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNTEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDUxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1Mj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTUyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw1MiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NTM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW01MyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NTMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDU0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNTQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDU0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1NT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTU1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw1NSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NTY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW01NiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NTYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDU3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNTcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDU3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1OD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTU4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw1OCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NTk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW01OSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NTkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDYwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNjAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDYwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw2MT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTYxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw2MSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NjI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02MiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NjIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDYzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNjMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDYzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw2ND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTY0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw2NCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NjU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02NSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NjUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDY2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNjYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDY2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw2Nz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTY3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw2NyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Njg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02OCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NjggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDY5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNjkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDY5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw3MD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTcwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw3MCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NzE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03MSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NzEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDcyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNzIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDcyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw3Mz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTczIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw3MyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NzQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03NCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NzQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDc1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNzUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDc1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw3Nj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTc2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw3NiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Nzc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03NyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NzcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDc4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNzggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDc4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw3OT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTc5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw3OSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88ODA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW04MCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88ODAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDgxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtODEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDgxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4Mj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTgyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw4MiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88ODM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW04MyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88ODMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDg0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtODQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDg0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4NT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTg1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw4NSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88ODY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW04NiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88ODYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDg3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtODcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDg3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4OD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTg4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw4OCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88ODk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW04OSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88ODkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDkwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOTAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDkwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw5MT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTkxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw5MSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OTI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05MiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OTIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDkzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOTMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDkzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw5ND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTk0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw5NCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OTU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05NSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OTUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDk2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOTYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDk2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw5Nz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTk3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw5NyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OTg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05OCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OTggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDk5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOTkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDk5ICsgMT4gPiBuZXh0OyB9OwotfX0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB0eXBlX29mIHsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFQgPSB2b2lkPiBzdHJ1Y3QgdmVjdG9yMCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjA8PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwID4gc3RydWN0IHZlY3RvcjEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxPCBQMD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgPiBzdHJ1Y3QgdmVjdG9yMiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjI8IFAwICwgUDE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiA+IHN0cnVjdCB2ZWN0b3IzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzwgUDAgLCBQMSAsIFAyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzID4gc3RydWN0IHZlY3RvcjQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0PCBQMCAsIFAxICwgUDIgLCBQMz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgPiBzdHJ1Y3QgdmVjdG9yNSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSA+IHN0cnVjdCB2ZWN0b3I2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ID4gc3RydWN0IHZlY3RvcjcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgPiBzdHJ1Y3QgdmVjdG9yOCB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCA+IHN0cnVjdCB2ZWN0b3I5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ID4gc3RydWN0IHZlY3RvcjEwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgPiBzdHJ1Y3QgdmVjdG9yMTEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSA+IHN0cnVjdCB2ZWN0b3IxMiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyID4gc3RydWN0IHZlY3RvcjEzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgPiBzdHJ1Y3QgdmVjdG9yMTQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCA+IHN0cnVjdCB2ZWN0b3IxNSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ID4gc3RydWN0IHZlY3RvcjE2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgPiBzdHJ1Y3QgdmVjdG9yMTcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyA+IHN0cnVjdCB2ZWN0b3IxOCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ID4gc3RydWN0IHZlY3RvcjE5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgPiBzdHJ1Y3QgdmVjdG9yMjAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCA+IHN0cnVjdCB2ZWN0b3IyMSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjIxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxID4gc3RydWN0IHZlY3RvcjIyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgPiBzdHJ1Y3QgdmVjdG9yMjMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyA+IHN0cnVjdCB2ZWN0b3IyNCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjI0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ID4gc3RydWN0IHZlY3RvcjI1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgPiBzdHJ1Y3QgdmVjdG9yMjYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiA+IHN0cnVjdCB2ZWN0b3IyNyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjI3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ID4gc3RydWN0IHZlY3RvcjI4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggPiBzdHJ1Y3QgdmVjdG9yMjkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSA+IHN0cnVjdCB2ZWN0b3IzMCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjMwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwID4gc3RydWN0IHZlY3RvcjMxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgPiBzdHJ1Y3QgdmVjdG9yMzIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiA+IHN0cnVjdCB2ZWN0b3IzMyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjMzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzID4gc3RydWN0IHZlY3RvcjM0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgPiBzdHJ1Y3QgdmVjdG9yMzUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSA+IHN0cnVjdCB2ZWN0b3IzNiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjM2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ID4gc3RydWN0IHZlY3RvcjM3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgPiBzdHJ1Y3QgdmVjdG9yMzggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCA+IHN0cnVjdCB2ZWN0b3IzOSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjM5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ID4gc3RydWN0IHZlY3RvcjQwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgPiBzdHJ1Y3QgdmVjdG9yNDEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSA+IHN0cnVjdCB2ZWN0b3I0MiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyID4gc3RydWN0IHZlY3RvcjQzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgPiBzdHJ1Y3QgdmVjdG9yNDQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCA+IHN0cnVjdCB2ZWN0b3I0NSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQ1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0ND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ID4gc3RydWN0IHZlY3RvcjQ2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgPiBzdHJ1Y3QgdmVjdG9yNDcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyA+IHN0cnVjdCB2ZWN0b3I0OCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQ4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0Nz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ID4gc3RydWN0IHZlY3RvcjQ5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgPiBzdHJ1Y3QgdmVjdG9yNTAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCA+IHN0cnVjdCB2ZWN0b3I1MSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjUxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxID4gc3RydWN0IHZlY3RvcjUyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgPiBzdHJ1Y3QgdmVjdG9yNTMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyA+IHN0cnVjdCB2ZWN0b3I1NCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjU0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1Mz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ID4gc3RydWN0IHZlY3RvcjU1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgPiBzdHJ1Y3QgdmVjdG9yNTYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiA+IHN0cnVjdCB2ZWN0b3I1NyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjU3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1Nj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ID4gc3RydWN0IHZlY3RvcjU4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggPiBzdHJ1Y3QgdmVjdG9yNTkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSA+IHN0cnVjdCB2ZWN0b3I2MCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjYwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwID4gc3RydWN0IHZlY3RvcjYxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgPiBzdHJ1Y3QgdmVjdG9yNjIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiA+IHN0cnVjdCB2ZWN0b3I2MyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjYzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2Mj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzID4gc3RydWN0IHZlY3RvcjY0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgPiBzdHJ1Y3QgdmVjdG9yNjUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSA+IHN0cnVjdCB2ZWN0b3I2NiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjY2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ID4gc3RydWN0IHZlY3RvcjY3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgPiBzdHJ1Y3QgdmVjdG9yNjggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCA+IHN0cnVjdCB2ZWN0b3I2OSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjY5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ID4gc3RydWN0IHZlY3RvcjcwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgPiBzdHJ1Y3QgdmVjdG9yNzEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSA+IHN0cnVjdCB2ZWN0b3I3MiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjcyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyID4gc3RydWN0IHZlY3RvcjczIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgPiBzdHJ1Y3QgdmVjdG9yNzQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCA+IHN0cnVjdCB2ZWN0b3I3NSB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjc1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3ND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ID4gc3RydWN0IHZlY3Rvcjc2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgPiBzdHJ1Y3QgdmVjdG9yNzcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyA+IHN0cnVjdCB2ZWN0b3I3OCB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjc4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3Nz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ID4gc3RydWN0IHZlY3Rvcjc5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgPiBzdHJ1Y3QgdmVjdG9yODAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCA+IHN0cnVjdCB2ZWN0b3I4MSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjgxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxID4gc3RydWN0IHZlY3RvcjgyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgPiBzdHJ1Y3QgdmVjdG9yODMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyA+IHN0cnVjdCB2ZWN0b3I4NCB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjg0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4Mz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ID4gc3RydWN0IHZlY3Rvcjg1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgPiBzdHJ1Y3QgdmVjdG9yODYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiA+IHN0cnVjdCB2ZWN0b3I4NyB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjg3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4Nj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ID4gc3RydWN0IHZlY3Rvcjg4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggPiBzdHJ1Y3QgdmVjdG9yODkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSA+IHN0cnVjdCB2ZWN0b3I5MCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjkwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwID4gc3RydWN0IHZlY3RvcjkxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgPiBzdHJ1Y3QgdmVjdG9yOTIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiA+IHN0cnVjdCB2ZWN0b3I5MyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjkzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5Mj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzID4gc3RydWN0IHZlY3Rvcjk0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgPiBzdHJ1Y3QgdmVjdG9yOTUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSA+IHN0cnVjdCB2ZWN0b3I5NiB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjk2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ID4gc3RydWN0IHZlY3Rvcjk3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgPiBzdHJ1Y3QgdmVjdG9yOTggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCA+IHN0cnVjdCB2ZWN0b3I5OSB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjk5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ID4gc3RydWN0IHZlY3RvcjEwMCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEwMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci19fQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHR5cGVfb2YgewotICAgIHRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2sgewotICAgICAgICB0eXBlZGVmIFYgdHlwZTsKLSAgICB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMDw+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE8IFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxPCBQMD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjwgUDAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyPCBQMCAsIFAxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzPCBQMCAsIFAxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzPCBQMCAsIFAxICwgUDI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ8IFAwICwgUDEgLCBQMiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0PCBQMCAsIFAxICwgUDIgLCBQMz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgVCA+IHR5cGU7IH07Ci19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdmVjdG9yMTUwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3ZlY3RvcjE1MC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4MmU4NDYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdmVjdG9yMTUwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ3MSArMCwwIEBACi0KLS8vIENvcHlyaWdodCAoQykgMjAwNSBBcmthZGl5IFZlcnRsZXliCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgUGVkZXIgSG9sdAotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vIFByZXByb2Nlc3NlZCBjb2RlLCBkbyBub3QgZWRpdCBtYW51YWxseSAhCi0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHR5cGVfb2YgewotICAgIHRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIEluY3JlYXNlX05ETkJPT1NUX1RZUEVPRl9MSU1JVF9TSVpFPiBzdHJ1Y3Qgdl9pdGVyOwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88ND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW01IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Nz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW04IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDExPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDExICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxOD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxOCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xOSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDIwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDIwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyMT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTIxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyMSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MjI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yMiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDIzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDIzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTI0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyNCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MjU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yNSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDI2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDI2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyNz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTI3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyNyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Mjg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yOCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDI5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDI5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzMD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTMwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzMCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MzE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zMSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDMyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDMyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzMz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTMzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzMyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MzQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zNCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDM1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDM1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzNj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTM2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzNiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Mzc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zNyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDM4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDM4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzOT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTM5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzOSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00MCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0Mj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0MiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00MyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0NT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQ1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0NSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00NiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0OD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQ4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0OCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00OSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDUwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNTAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDUwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1MT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTUxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw1MSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NTI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW01MiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NTIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDUzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNTMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDUzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1ND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTU0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw1NCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NTU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW01NSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NTUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDU2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNTYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDU2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1Nz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTU3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw1NyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NTg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW01OCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NTggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDU5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNTkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDU5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw2MD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTYwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw2MCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NjE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02MSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NjEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDYyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNjIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDYyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw2Mz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTYzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw2MyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NjQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02NCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NjQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDY1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNjUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDY1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw2Nj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTY2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw2NiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Njc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02NyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NjcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDY4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNjggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDY4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw2OT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTY5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw2OSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NzA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03MCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NzAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDcxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNzEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDcxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw3Mj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTcyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw3MiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NzM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03MyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NzMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDc0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNzQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDc0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw3NT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTc1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw3NSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NzY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03NiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NzYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDc3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNzcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDc3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw3OD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTc4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw3OCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Nzk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03OSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NzkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDgwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtODAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDgwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4MT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTgxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw4MSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88ODI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW04MiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88ODIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDgzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtODMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDgzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4ND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTg0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw4NCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88ODU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW04NSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88ODUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDg2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtODYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDg2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4Nz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTg3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw4NyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88ODg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW04OCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88ODggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDg5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtODkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDg5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw5MD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTkwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw5MCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OTE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05MSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OTEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDkyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOTIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDkyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw5Mz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTkzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw5MyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OTQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05NCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OTQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDk1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOTUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDk1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw5Nj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTk2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw5NiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OTc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05NyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OTcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDk4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOTggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDk4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw5OT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTk5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw5OSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTAwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTAwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwMT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEwMSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTAxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMDIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwMiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTAzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTAzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEwNCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTA0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMDUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwNSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTA2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTA2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwNz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEwNyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTA3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMDggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwOCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTA5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTA5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDExMD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTExMCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTEwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMTEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDExMSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTEyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTEyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDExMz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTExMyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTEzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMTQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDExNCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTE1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTE1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDExNj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTExNiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTE2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMTcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDExNyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTE4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTE4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDExOT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTExOSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTE5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMjAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyMCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTIxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTIxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyMj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEyMiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTIyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMjMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyMyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTI0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTI0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyNT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEyNSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTI1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMjYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyNiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTI3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTI3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyOD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEyOCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTI4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMjkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyOSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTMwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTMwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzMT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEzMSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTMxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMzIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzMiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTMzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTMzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEzNCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTM0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMzUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzNSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTM2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTM2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzNz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEzNyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTM3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMzggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzOCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTM5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTM5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0MD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE0MCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTQwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNDEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0MSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTQyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTQyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0Mz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE0MyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTQzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNDQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0NCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTQ1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTQ1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0Nj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE0NiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTQ2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNDcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0NyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTQ4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTQ4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0OT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE0OSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTQ5ICsgMT4gPiBuZXh0OyB9OwotfX0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB0eXBlX29mIHsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFQgPSB2b2lkPiBzdHJ1Y3QgdmVjdG9yMCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjA8PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwID4gc3RydWN0IHZlY3RvcjEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxPCBQMD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgPiBzdHJ1Y3QgdmVjdG9yMiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjI8IFAwICwgUDE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiA+IHN0cnVjdCB2ZWN0b3IzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzwgUDAgLCBQMSAsIFAyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzID4gc3RydWN0IHZlY3RvcjQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0PCBQMCAsIFAxICwgUDIgLCBQMz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgPiBzdHJ1Y3QgdmVjdG9yNSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSA+IHN0cnVjdCB2ZWN0b3I2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ID4gc3RydWN0IHZlY3RvcjcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgPiBzdHJ1Y3QgdmVjdG9yOCB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCA+IHN0cnVjdCB2ZWN0b3I5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ID4gc3RydWN0IHZlY3RvcjEwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgPiBzdHJ1Y3QgdmVjdG9yMTEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSA+IHN0cnVjdCB2ZWN0b3IxMiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyID4gc3RydWN0IHZlY3RvcjEzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgPiBzdHJ1Y3QgdmVjdG9yMTQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCA+IHN0cnVjdCB2ZWN0b3IxNSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ID4gc3RydWN0IHZlY3RvcjE2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgPiBzdHJ1Y3QgdmVjdG9yMTcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyA+IHN0cnVjdCB2ZWN0b3IxOCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ID4gc3RydWN0IHZlY3RvcjE5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgPiBzdHJ1Y3QgdmVjdG9yMjAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCA+IHN0cnVjdCB2ZWN0b3IyMSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjIxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxID4gc3RydWN0IHZlY3RvcjIyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgPiBzdHJ1Y3QgdmVjdG9yMjMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyA+IHN0cnVjdCB2ZWN0b3IyNCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjI0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ID4gc3RydWN0IHZlY3RvcjI1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgPiBzdHJ1Y3QgdmVjdG9yMjYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiA+IHN0cnVjdCB2ZWN0b3IyNyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjI3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ID4gc3RydWN0IHZlY3RvcjI4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggPiBzdHJ1Y3QgdmVjdG9yMjkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSA+IHN0cnVjdCB2ZWN0b3IzMCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjMwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwID4gc3RydWN0IHZlY3RvcjMxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgPiBzdHJ1Y3QgdmVjdG9yMzIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiA+IHN0cnVjdCB2ZWN0b3IzMyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjMzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzID4gc3RydWN0IHZlY3RvcjM0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgPiBzdHJ1Y3QgdmVjdG9yMzUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSA+IHN0cnVjdCB2ZWN0b3IzNiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjM2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ID4gc3RydWN0IHZlY3RvcjM3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgPiBzdHJ1Y3QgdmVjdG9yMzggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCA+IHN0cnVjdCB2ZWN0b3IzOSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjM5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ID4gc3RydWN0IHZlY3RvcjQwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgPiBzdHJ1Y3QgdmVjdG9yNDEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSA+IHN0cnVjdCB2ZWN0b3I0MiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyID4gc3RydWN0IHZlY3RvcjQzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgPiBzdHJ1Y3QgdmVjdG9yNDQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCA+IHN0cnVjdCB2ZWN0b3I0NSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQ1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0ND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ID4gc3RydWN0IHZlY3RvcjQ2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgPiBzdHJ1Y3QgdmVjdG9yNDcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyA+IHN0cnVjdCB2ZWN0b3I0OCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQ4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0Nz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ID4gc3RydWN0IHZlY3RvcjQ5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgPiBzdHJ1Y3QgdmVjdG9yNTAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCA+IHN0cnVjdCB2ZWN0b3I1MSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjUxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxID4gc3RydWN0IHZlY3RvcjUyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgPiBzdHJ1Y3QgdmVjdG9yNTMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyA+IHN0cnVjdCB2ZWN0b3I1NCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjU0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1Mz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ID4gc3RydWN0IHZlY3RvcjU1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgPiBzdHJ1Y3QgdmVjdG9yNTYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiA+IHN0cnVjdCB2ZWN0b3I1NyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjU3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1Nj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ID4gc3RydWN0IHZlY3RvcjU4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggPiBzdHJ1Y3QgdmVjdG9yNTkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSA+IHN0cnVjdCB2ZWN0b3I2MCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjYwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwID4gc3RydWN0IHZlY3RvcjYxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgPiBzdHJ1Y3QgdmVjdG9yNjIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiA+IHN0cnVjdCB2ZWN0b3I2MyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjYzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2Mj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzID4gc3RydWN0IHZlY3RvcjY0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgPiBzdHJ1Y3QgdmVjdG9yNjUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSA+IHN0cnVjdCB2ZWN0b3I2NiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjY2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ID4gc3RydWN0IHZlY3RvcjY3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgPiBzdHJ1Y3QgdmVjdG9yNjggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCA+IHN0cnVjdCB2ZWN0b3I2OSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjY5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ID4gc3RydWN0IHZlY3RvcjcwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgPiBzdHJ1Y3QgdmVjdG9yNzEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSA+IHN0cnVjdCB2ZWN0b3I3MiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjcyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyID4gc3RydWN0IHZlY3RvcjczIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgPiBzdHJ1Y3QgdmVjdG9yNzQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCA+IHN0cnVjdCB2ZWN0b3I3NSB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjc1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3ND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ID4gc3RydWN0IHZlY3Rvcjc2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgPiBzdHJ1Y3QgdmVjdG9yNzcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyA+IHN0cnVjdCB2ZWN0b3I3OCB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjc4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3Nz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ID4gc3RydWN0IHZlY3Rvcjc5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgPiBzdHJ1Y3QgdmVjdG9yODAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCA+IHN0cnVjdCB2ZWN0b3I4MSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjgxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxID4gc3RydWN0IHZlY3RvcjgyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgPiBzdHJ1Y3QgdmVjdG9yODMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyA+IHN0cnVjdCB2ZWN0b3I4NCB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjg0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4Mz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ID4gc3RydWN0IHZlY3Rvcjg1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgPiBzdHJ1Y3QgdmVjdG9yODYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiA+IHN0cnVjdCB2ZWN0b3I4NyB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjg3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4Nj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ID4gc3RydWN0IHZlY3Rvcjg4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggPiBzdHJ1Y3QgdmVjdG9yODkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSA+IHN0cnVjdCB2ZWN0b3I5MCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjkwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwID4gc3RydWN0IHZlY3RvcjkxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgPiBzdHJ1Y3QgdmVjdG9yOTIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiA+IHN0cnVjdCB2ZWN0b3I5MyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjkzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5Mj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzID4gc3RydWN0IHZlY3Rvcjk0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgPiBzdHJ1Y3QgdmVjdG9yOTUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSA+IHN0cnVjdCB2ZWN0b3I5NiB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjk2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ID4gc3RydWN0IHZlY3Rvcjk3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgPiBzdHJ1Y3QgdmVjdG9yOTggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCA+IHN0cnVjdCB2ZWN0b3I5OSB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjk5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ID4gc3RydWN0IHZlY3RvcjEwMCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEwMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgPiBzdHJ1Y3QgdmVjdG9yMTAxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTAxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSA+IHN0cnVjdCB2ZWN0b3IxMDIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMDI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyID4gc3RydWN0IHZlY3RvcjEwMyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEwMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgPiBzdHJ1Y3QgdmVjdG9yMTA0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTA0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCA+IHN0cnVjdCB2ZWN0b3IxMDUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMDU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ID4gc3RydWN0IHZlY3RvcjEwNiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEwNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgPiBzdHJ1Y3QgdmVjdG9yMTA3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTA3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyA+IHN0cnVjdCB2ZWN0b3IxMDggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMDg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ID4gc3RydWN0IHZlY3RvcjEwOSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEwOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgPiBzdHJ1Y3QgdmVjdG9yMTEwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTEwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCA+IHN0cnVjdCB2ZWN0b3IxMTEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExID4gc3RydWN0IHZlY3RvcjExMiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjExMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgPiBzdHJ1Y3QgdmVjdG9yMTEzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTEzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyA+IHN0cnVjdCB2ZWN0b3IxMTQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ID4gc3RydWN0IHZlY3RvcjExNSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjExNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgPiBzdHJ1Y3QgdmVjdG9yMTE2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTE2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiA+IHN0cnVjdCB2ZWN0b3IxMTcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ID4gc3RydWN0IHZlY3RvcjExOCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjExODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggPiBzdHJ1Y3QgdmVjdG9yMTE5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTE5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSA+IHN0cnVjdCB2ZWN0b3IxMjAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMjA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwID4gc3RydWN0IHZlY3RvcjEyMSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEyMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgPiBzdHJ1Y3QgdmVjdG9yMTIyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTIyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiA+IHN0cnVjdCB2ZWN0b3IxMjMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMjM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzID4gc3RydWN0IHZlY3RvcjEyNCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEyNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgPiBzdHJ1Y3QgdmVjdG9yMTI1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTI1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSA+IHN0cnVjdCB2ZWN0b3IxMjYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ID4gc3RydWN0IHZlY3RvcjEyNyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEyNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgPiBzdHJ1Y3QgdmVjdG9yMTI4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTI4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCA+IHN0cnVjdCB2ZWN0b3IxMjkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ID4gc3RydWN0IHZlY3RvcjEzMCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEzMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgPiBzdHJ1Y3QgdmVjdG9yMTMxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTMxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSA+IHN0cnVjdCB2ZWN0b3IxMzIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMzI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyID4gc3RydWN0IHZlY3RvcjEzMyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEzMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgPiBzdHJ1Y3QgdmVjdG9yMTM0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTM0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCA+IHN0cnVjdCB2ZWN0b3IxMzUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMzU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ID4gc3RydWN0IHZlY3RvcjEzNiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEzNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgPiBzdHJ1Y3QgdmVjdG9yMTM3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTM3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyA+IHN0cnVjdCB2ZWN0b3IxMzggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMzg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ID4gc3RydWN0IHZlY3RvcjEzOSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEzOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgPiBzdHJ1Y3QgdmVjdG9yMTQwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTQwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCA+IHN0cnVjdCB2ZWN0b3IxNDEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNDE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxID4gc3RydWN0IHZlY3RvcjE0MiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE0MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgPiBzdHJ1Y3QgdmVjdG9yMTQzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTQzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyA+IHN0cnVjdCB2ZWN0b3IxNDQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNDQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ID4gc3RydWN0IHZlY3RvcjE0NSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE0NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgPiBzdHJ1Y3QgdmVjdG9yMTQ2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTQ2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiA+IHN0cnVjdCB2ZWN0b3IxNDcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNDc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ID4gc3RydWN0IHZlY3RvcjE0OCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE0ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggPiBzdHJ1Y3QgdmVjdG9yMTQ5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTQ5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSA+IHN0cnVjdCB2ZWN0b3IxNTAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLX19Ci1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdHlwZV9vZiB7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgViwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjayB7Ci0gICAgICAgIHR5cGVkZWYgViB0eXBlOwotICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IwPD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE8IFAwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyPCBQMCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI8IFAwICwgUDE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM8IFAwICwgUDEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM8IFAwICwgUDEgLCBQMj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDwgUDAgLCBQMSAsIFAyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ8IFAwICwgUDEgLCBQMiAsIFAzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjIwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjIxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjIyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjIzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjMwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjMxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjMyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjMzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjUwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjUxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjUyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjUzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjYwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjYxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjYyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjYzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjcwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjcxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjcyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjczPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjgwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjgxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjgyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjgzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjkwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjkxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjkyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjkzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTAwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTAxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTAxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTAyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTAzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTA0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTA0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTA1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTA2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTA3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTA3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTA4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTA5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTEwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTEwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTExPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTEyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTEzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTEzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTE0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTE1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTE2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTE2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTE3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTE4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTE5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTE5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTIwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTIxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTIyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTIyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTIzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTI0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTI1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTI1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTI2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTI3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTI4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTI4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTI5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTMwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTMxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTMxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTMyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTMzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTM0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTM0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTM1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTM2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTM3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTM3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTM4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTM5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQ0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQ1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0ND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQ2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQ2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQ3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQ4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0Nz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQ5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQ5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE1MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgVCA+IHR5cGU7IH07Ci19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdmVjdG9yMjAwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3ZlY3RvcjIwMC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwYThkMGMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdmVjdG9yMjAwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYyMSArMCwwIEBACi0KLS8vIENvcHlyaWdodCAoQykgMjAwNSBBcmthZGl5IFZlcnRsZXliCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgUGVkZXIgSG9sdAotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vIFByZXByb2Nlc3NlZCBjb2RlLCBkbyBub3QgZWRpdCBtYW51YWxseSAhCi0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHR5cGVfb2YgewotICAgIHRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIEluY3JlYXNlX05ETkJPT1NUX1RZUEVPRl9MSU1JVF9TSVpFPiBzdHJ1Y3Qgdl9pdGVyOwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88ND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW01IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Nz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW04IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDExPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDExICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxOD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxOCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xOSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDIwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDIwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyMT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTIxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyMSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MjI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yMiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDIzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDIzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTI0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyNCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MjU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yNSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDI2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDI2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyNz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTI3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyNyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Mjg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yOCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDI5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDI5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzMD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTMwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzMCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MzE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zMSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDMyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDMyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzMz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTMzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzMyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MzQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zNCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDM1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDM1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzNj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTM2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzNiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Mzc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zNyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDM4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDM4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzOT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTM5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzOSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00MCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0Mj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0MiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00MyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0NT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQ1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0NSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00NiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0OD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQ4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0OCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00OSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDUwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNTAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDUwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1MT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTUxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw1MSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NTI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW01MiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NTIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDUzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNTMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDUzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1ND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTU0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw1NCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NTU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW01NSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NTUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDU2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNTYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDU2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1Nz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTU3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw1NyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NTg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW01OCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NTggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDU5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNTkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDU5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw2MD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTYwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw2MCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NjE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02MSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NjEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDYyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNjIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDYyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw2Mz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTYzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw2MyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NjQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02NCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NjQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDY1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNjUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDY1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw2Nj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTY2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw2NiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Njc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02NyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NjcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDY4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNjggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDY4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw2OT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTY5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw2OSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NzA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03MCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NzAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDcxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNzEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDcxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw3Mj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTcyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw3MiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NzM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03MyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NzMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDc0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNzQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDc0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw3NT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTc1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw3NSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NzY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03NiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NzYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDc3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNzcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDc3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw3OD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTc4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw3OCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Nzk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03OSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NzkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDgwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtODAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDgwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4MT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTgxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw4MSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88ODI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW04MiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88ODIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDgzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtODMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDgzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4ND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTg0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw4NCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88ODU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW04NSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88ODUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDg2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtODYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDg2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4Nz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTg3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw4NyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88ODg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW04OCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88ODggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDg5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtODkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDg5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw5MD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTkwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw5MCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OTE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05MSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OTEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDkyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOTIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDkyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw5Mz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTkzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw5MyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OTQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05NCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OTQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDk1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOTUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDk1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw5Nj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTk2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw5NiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OTc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05NyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OTcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDk4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOTggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDk4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw5OT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTk5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw5OSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTAwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTAwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwMT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEwMSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTAxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMDIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwMiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTAzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTAzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEwNCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTA0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMDUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwNSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTA2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTA2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwNz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEwNyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTA3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMDggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwOCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTA5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTA5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDExMD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTExMCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTEwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMTEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDExMSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTEyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTEyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDExMz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTExMyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTEzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMTQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDExNCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTE1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTE1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDExNj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTExNiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTE2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMTcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDExNyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTE4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTE4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDExOT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTExOSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTE5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMjAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyMCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTIxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTIxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyMj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEyMiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTIyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMjMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyMyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTI0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTI0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyNT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEyNSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTI1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMjYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyNiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTI3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTI3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyOD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEyOCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTI4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMjkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyOSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTMwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTMwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzMT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEzMSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTMxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMzIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzMiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTMzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTMzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEzNCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTM0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMzUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzNSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTM2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTM2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzNz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEzNyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTM3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMzggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzOCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTM5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTM5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0MD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE0MCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTQwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNDEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0MSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTQyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTQyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0Mz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE0MyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTQzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNDQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0NCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTQ1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTQ1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0Nj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE0NiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTQ2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNDcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0NyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTQ4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTQ4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0OT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE0OSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTQ5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNTA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNTAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE1MCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTUxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTUxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNTEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE1Mj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE1MiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTUyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNTM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNTMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE1MyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTU0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTU0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNTQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE1NT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE1NSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTU1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNTY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNTYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE1NiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTU3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTU3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNTcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE1OD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE1OCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTU4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNTk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNTkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE1OSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTYwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTYwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNjAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE2MT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE2MSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTYxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNjI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNjIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE2MiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTYzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTYzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNjMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE2ND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE2NCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTY0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNjU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNjUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE2NSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTY2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTY2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNjYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE2Nz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE2NyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTY3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNjg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNjggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE2OCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTY5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTY5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNjkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE3MD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE3MCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTcwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNzE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNzEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE3MSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTcyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTcyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNzIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE3Mz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE3MyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTczICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNzQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNzQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE3NCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTc1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTc1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNzUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE3Nj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE3NiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTc2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNzc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNzcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE3NyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTc4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTc4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNzggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE3OT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE3OSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTc5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxODA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xODAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE4MCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTgxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTgxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxODEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE4Mj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE4MiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTgyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxODM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xODMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE4MyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTg0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTg0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxODQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE4NT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE4NSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTg1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxODY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xODYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE4NiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTg3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTg3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxODcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE4OD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE4OCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTg4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxODk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xODkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE4OSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTkwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTkwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxOTAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE5MT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE5MSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTkxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxOTI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xOTIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE5MiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTkzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTkzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxOTMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE5ND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE5NCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTk0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxOTU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xOTUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE5NSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTk2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTk2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxOTYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE5Nz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE5NyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTk3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxOTg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xOTggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE5OCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTk5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTk5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxOTkgKyAxPiA+IG5leHQ7IH07Ci19fQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHR5cGVfb2YgewotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgVCA9IHZvaWQ+IHN0cnVjdCB2ZWN0b3IwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMDw+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0wOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgPiBzdHJ1Y3QgdmVjdG9yMSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE8IFAwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSA+IHN0cnVjdCB2ZWN0b3IyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjwgUDAgLCBQMT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyID4gc3RydWN0IHZlY3RvcjMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzPCBQMCAsIFAxICwgUDI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgPiBzdHJ1Y3QgdmVjdG9yNCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQ8IFAwICwgUDEgLCBQMiAsIFAzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCA+IHN0cnVjdCB2ZWN0b3I1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ID4gc3RydWN0IHZlY3RvcjYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgPiBzdHJ1Y3QgdmVjdG9yNyB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyA+IHN0cnVjdCB2ZWN0b3I4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ID4gc3RydWN0IHZlY3RvcjkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgPiBzdHJ1Y3QgdmVjdG9yMTAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCA+IHN0cnVjdCB2ZWN0b3IxMSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjExPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExID4gc3RydWN0IHZlY3RvcjEyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgPiBzdHJ1Y3QgdmVjdG9yMTMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyA+IHN0cnVjdCB2ZWN0b3IxNCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ID4gc3RydWN0IHZlY3RvcjE1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgPiBzdHJ1Y3QgdmVjdG9yMTYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiA+IHN0cnVjdCB2ZWN0b3IxNyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ID4gc3RydWN0IHZlY3RvcjE4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggPiBzdHJ1Y3QgdmVjdG9yMTkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSA+IHN0cnVjdCB2ZWN0b3IyMCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjIwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwID4gc3RydWN0IHZlY3RvcjIxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgPiBzdHJ1Y3QgdmVjdG9yMjIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiA+IHN0cnVjdCB2ZWN0b3IyMyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjIzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzID4gc3RydWN0IHZlY3RvcjI0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgPiBzdHJ1Y3QgdmVjdG9yMjUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSA+IHN0cnVjdCB2ZWN0b3IyNiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjI2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ID4gc3RydWN0IHZlY3RvcjI3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgPiBzdHJ1Y3QgdmVjdG9yMjggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCA+IHN0cnVjdCB2ZWN0b3IyOSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjI5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ID4gc3RydWN0IHZlY3RvcjMwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgPiBzdHJ1Y3QgdmVjdG9yMzEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSA+IHN0cnVjdCB2ZWN0b3IzMiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjMyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyID4gc3RydWN0IHZlY3RvcjMzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgPiBzdHJ1Y3QgdmVjdG9yMzQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCA+IHN0cnVjdCB2ZWN0b3IzNSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjM1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ID4gc3RydWN0IHZlY3RvcjM2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgPiBzdHJ1Y3QgdmVjdG9yMzcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyA+IHN0cnVjdCB2ZWN0b3IzOCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjM4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ID4gc3RydWN0IHZlY3RvcjM5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgPiBzdHJ1Y3QgdmVjdG9yNDAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCA+IHN0cnVjdCB2ZWN0b3I0MSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxID4gc3RydWN0IHZlY3RvcjQyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgPiBzdHJ1Y3QgdmVjdG9yNDMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyA+IHN0cnVjdCB2ZWN0b3I0NCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQ0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0Mz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ID4gc3RydWN0IHZlY3RvcjQ1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgPiBzdHJ1Y3QgdmVjdG9yNDYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiA+IHN0cnVjdCB2ZWN0b3I0NyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQ3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0Nj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ID4gc3RydWN0IHZlY3RvcjQ4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggPiBzdHJ1Y3QgdmVjdG9yNDkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSA+IHN0cnVjdCB2ZWN0b3I1MCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjUwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwID4gc3RydWN0IHZlY3RvcjUxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgPiBzdHJ1Y3QgdmVjdG9yNTIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiA+IHN0cnVjdCB2ZWN0b3I1MyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjUzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1Mj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzID4gc3RydWN0IHZlY3RvcjU0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgPiBzdHJ1Y3QgdmVjdG9yNTUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSA+IHN0cnVjdCB2ZWN0b3I1NiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjU2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ID4gc3RydWN0IHZlY3RvcjU3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgPiBzdHJ1Y3QgdmVjdG9yNTggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCA+IHN0cnVjdCB2ZWN0b3I1OSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjU5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ID4gc3RydWN0IHZlY3RvcjYwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgPiBzdHJ1Y3QgdmVjdG9yNjEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSA+IHN0cnVjdCB2ZWN0b3I2MiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjYyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyID4gc3RydWN0IHZlY3RvcjYzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgPiBzdHJ1Y3QgdmVjdG9yNjQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCA+IHN0cnVjdCB2ZWN0b3I2NSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjY1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2ND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ID4gc3RydWN0IHZlY3RvcjY2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgPiBzdHJ1Y3QgdmVjdG9yNjcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyA+IHN0cnVjdCB2ZWN0b3I2OCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjY4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2Nz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ID4gc3RydWN0IHZlY3RvcjY5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgPiBzdHJ1Y3QgdmVjdG9yNzAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCA+IHN0cnVjdCB2ZWN0b3I3MSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjcxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxID4gc3RydWN0IHZlY3RvcjcyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgPiBzdHJ1Y3QgdmVjdG9yNzMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyA+IHN0cnVjdCB2ZWN0b3I3NCB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjc0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3Mz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ID4gc3RydWN0IHZlY3Rvcjc1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgPiBzdHJ1Y3QgdmVjdG9yNzYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiA+IHN0cnVjdCB2ZWN0b3I3NyB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjc3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3Nj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ID4gc3RydWN0IHZlY3Rvcjc4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggPiBzdHJ1Y3QgdmVjdG9yNzkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSA+IHN0cnVjdCB2ZWN0b3I4MCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjgwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwID4gc3RydWN0IHZlY3RvcjgxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgPiBzdHJ1Y3QgdmVjdG9yODIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiA+IHN0cnVjdCB2ZWN0b3I4MyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjgzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4Mj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzID4gc3RydWN0IHZlY3Rvcjg0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgPiBzdHJ1Y3QgdmVjdG9yODUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSA+IHN0cnVjdCB2ZWN0b3I4NiB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjg2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ID4gc3RydWN0IHZlY3Rvcjg3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgPiBzdHJ1Y3QgdmVjdG9yODggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCA+IHN0cnVjdCB2ZWN0b3I4OSB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjg5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ID4gc3RydWN0IHZlY3RvcjkwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgPiBzdHJ1Y3QgdmVjdG9yOTEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSA+IHN0cnVjdCB2ZWN0b3I5MiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjkyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyID4gc3RydWN0IHZlY3RvcjkzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgPiBzdHJ1Y3QgdmVjdG9yOTQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCA+IHN0cnVjdCB2ZWN0b3I5NSB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjk1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5ND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ID4gc3RydWN0IHZlY3Rvcjk2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgPiBzdHJ1Y3QgdmVjdG9yOTcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyA+IHN0cnVjdCB2ZWN0b3I5OCB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjk4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5Nz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ID4gc3RydWN0IHZlY3Rvcjk5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgPiBzdHJ1Y3QgdmVjdG9yMTAwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTAwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCA+IHN0cnVjdCB2ZWN0b3IxMDEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMDE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxID4gc3RydWN0IHZlY3RvcjEwMiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEwMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgPiBzdHJ1Y3QgdmVjdG9yMTAzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTAzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyA+IHN0cnVjdCB2ZWN0b3IxMDQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMDQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ID4gc3RydWN0IHZlY3RvcjEwNSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEwNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgPiBzdHJ1Y3QgdmVjdG9yMTA2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTA2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiA+IHN0cnVjdCB2ZWN0b3IxMDcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMDc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ID4gc3RydWN0IHZlY3RvcjEwOCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEwODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggPiBzdHJ1Y3QgdmVjdG9yMTA5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTA5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSA+IHN0cnVjdCB2ZWN0b3IxMTAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwID4gc3RydWN0IHZlY3RvcjExMSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjExMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgPiBzdHJ1Y3QgdmVjdG9yMTEyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTEyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiA+IHN0cnVjdCB2ZWN0b3IxMTMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzID4gc3RydWN0IHZlY3RvcjExNCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjExNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgPiBzdHJ1Y3QgdmVjdG9yMTE1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTE1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSA+IHN0cnVjdCB2ZWN0b3IxMTYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ID4gc3RydWN0IHZlY3RvcjExNyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjExNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgPiBzdHJ1Y3QgdmVjdG9yMTE4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTE4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCA+IHN0cnVjdCB2ZWN0b3IxMTkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ID4gc3RydWN0IHZlY3RvcjEyMCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEyMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgPiBzdHJ1Y3QgdmVjdG9yMTIxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTIxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSA+IHN0cnVjdCB2ZWN0b3IxMjIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMjI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyID4gc3RydWN0IHZlY3RvcjEyMyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEyMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgPiBzdHJ1Y3QgdmVjdG9yMTI0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTI0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCA+IHN0cnVjdCB2ZWN0b3IxMjUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ID4gc3RydWN0IHZlY3RvcjEyNiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEyNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgPiBzdHJ1Y3QgdmVjdG9yMTI3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTI3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyA+IHN0cnVjdCB2ZWN0b3IxMjggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ID4gc3RydWN0IHZlY3RvcjEyOSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEyOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgPiBzdHJ1Y3QgdmVjdG9yMTMwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTMwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCA+IHN0cnVjdCB2ZWN0b3IxMzEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMzE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxID4gc3RydWN0IHZlY3RvcjEzMiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEzMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgPiBzdHJ1Y3QgdmVjdG9yMTMzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTMzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyA+IHN0cnVjdCB2ZWN0b3IxMzQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMzQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ID4gc3RydWN0IHZlY3RvcjEzNSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEzNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgPiBzdHJ1Y3QgdmVjdG9yMTM2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTM2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiA+IHN0cnVjdCB2ZWN0b3IxMzcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMzc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ID4gc3RydWN0IHZlY3RvcjEzOCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEzODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggPiBzdHJ1Y3QgdmVjdG9yMTM5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTM5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSA+IHN0cnVjdCB2ZWN0b3IxNDAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNDA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwID4gc3RydWN0IHZlY3RvcjE0MSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE0MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgPiBzdHJ1Y3QgdmVjdG9yMTQyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTQyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiA+IHN0cnVjdCB2ZWN0b3IxNDMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNDM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0Mj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzID4gc3RydWN0IHZlY3RvcjE0NCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE0NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0Mz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgPiBzdHJ1Y3QgdmVjdG9yMTQ1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTQ1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0ND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSA+IHN0cnVjdCB2ZWN0b3IxNDYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNDY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ID4gc3RydWN0IHZlY3RvcjE0NyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE0NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0Nj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgPiBzdHJ1Y3QgdmVjdG9yMTQ4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTQ4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0Nz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCA+IHN0cnVjdCB2ZWN0b3IxNDkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNDk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ID4gc3RydWN0IHZlY3RvcjE1MCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE1MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgPiBzdHJ1Y3QgdmVjdG9yMTUxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTUxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSA+IHN0cnVjdCB2ZWN0b3IxNTIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyID4gc3RydWN0IHZlY3RvcjE1MyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE1MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1Mj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgPiBzdHJ1Y3QgdmVjdG9yMTU0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTU0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1Mz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCA+IHN0cnVjdCB2ZWN0b3IxNTUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1ND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ID4gc3RydWN0IHZlY3RvcjE1NiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE1NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgPiBzdHJ1Y3QgdmVjdG9yMTU3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTU3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1Nj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyA+IHN0cnVjdCB2ZWN0b3IxNTggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1Nz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ID4gc3RydWN0IHZlY3RvcjE1OSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE1OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgUDE1OCBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgPiBzdHJ1Y3QgdmVjdG9yMTYwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTYwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgUDE1OCBpdGVtMTU4OyB0eXBlZGVmIFAxNTkgaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCA+IHN0cnVjdCB2ZWN0b3IxNjEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNjE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgUDE1OCBpdGVtMTU4OyB0eXBlZGVmIFAxNTkgaXRlbTE1OTsgdHlwZWRlZiBQMTYwIGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxID4gc3RydWN0IHZlY3RvcjE2MiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE2MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgUDE1OCBpdGVtMTU4OyB0eXBlZGVmIFAxNTkgaXRlbTE1OTsgdHlwZWRlZiBQMTYwIGl0ZW0xNjA7IHR5cGVkZWYgUDE2MSBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgPiBzdHJ1Y3QgdmVjdG9yMTYzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTYzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2Mj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgUDE1OCBpdGVtMTU4OyB0eXBlZGVmIFAxNTkgaXRlbTE1OTsgdHlwZWRlZiBQMTYwIGl0ZW0xNjA7IHR5cGVkZWYgUDE2MSBpdGVtMTYxOyB0eXBlZGVmIFAxNjIgaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyA+IHN0cnVjdCB2ZWN0b3IxNjQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNjQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2Mz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgUDE1OCBpdGVtMTU4OyB0eXBlZGVmIFAxNTkgaXRlbTE1OTsgdHlwZWRlZiBQMTYwIGl0ZW0xNjA7IHR5cGVkZWYgUDE2MSBpdGVtMTYxOyB0eXBlZGVmIFAxNjIgaXRlbTE2MjsgdHlwZWRlZiBQMTYzIGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ID4gc3RydWN0IHZlY3RvcjE2NSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE2NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2ND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgUDE1OCBpdGVtMTU4OyB0eXBlZGVmIFAxNTkgaXRlbTE1OTsgdHlwZWRlZiBQMTYwIGl0ZW0xNjA7IHR5cGVkZWYgUDE2MSBpdGVtMTYxOyB0eXBlZGVmIFAxNjIgaXRlbTE2MjsgdHlwZWRlZiBQMTYzIGl0ZW0xNjM7IHR5cGVkZWYgUDE2NCBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgPiBzdHJ1Y3QgdmVjdG9yMTY2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTY2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgUDE1OCBpdGVtMTU4OyB0eXBlZGVmIFAxNTkgaXRlbTE1OTsgdHlwZWRlZiBQMTYwIGl0ZW0xNjA7IHR5cGVkZWYgUDE2MSBpdGVtMTYxOyB0eXBlZGVmIFAxNjIgaXRlbTE2MjsgdHlwZWRlZiBQMTYzIGl0ZW0xNjM7IHR5cGVkZWYgUDE2NCBpdGVtMTY0OyB0eXBlZGVmIFAxNjUgaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiA+IHN0cnVjdCB2ZWN0b3IxNjcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2Nj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgUDE1OCBpdGVtMTU4OyB0eXBlZGVmIFAxNTkgaXRlbTE1OTsgdHlwZWRlZiBQMTYwIGl0ZW0xNjA7IHR5cGVkZWYgUDE2MSBpdGVtMTYxOyB0eXBlZGVmIFAxNjIgaXRlbTE2MjsgdHlwZWRlZiBQMTYzIGl0ZW0xNjM7IHR5cGVkZWYgUDE2NCBpdGVtMTY0OyB0eXBlZGVmIFAxNjUgaXRlbTE2NTsgdHlwZWRlZiBQMTY2IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ID4gc3RydWN0IHZlY3RvcjE2OCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE2ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2Nz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgUDE1OCBpdGVtMTU4OyB0eXBlZGVmIFAxNTkgaXRlbTE1OTsgdHlwZWRlZiBQMTYwIGl0ZW0xNjA7IHR5cGVkZWYgUDE2MSBpdGVtMTYxOyB0eXBlZGVmIFAxNjIgaXRlbTE2MjsgdHlwZWRlZiBQMTYzIGl0ZW0xNjM7IHR5cGVkZWYgUDE2NCBpdGVtMTY0OyB0eXBlZGVmIFAxNjUgaXRlbTE2NTsgdHlwZWRlZiBQMTY2IGl0ZW0xNjY7IHR5cGVkZWYgUDE2NyBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggPiBzdHJ1Y3QgdmVjdG9yMTY5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTY5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgUDE1OCBpdGVtMTU4OyB0eXBlZGVmIFAxNTkgaXRlbTE1OTsgdHlwZWRlZiBQMTYwIGl0ZW0xNjA7IHR5cGVkZWYgUDE2MSBpdGVtMTYxOyB0eXBlZGVmIFAxNjIgaXRlbTE2MjsgdHlwZWRlZiBQMTYzIGl0ZW0xNjM7IHR5cGVkZWYgUDE2NCBpdGVtMTY0OyB0eXBlZGVmIFAxNjUgaXRlbTE2NTsgdHlwZWRlZiBQMTY2IGl0ZW0xNjY7IHR5cGVkZWYgUDE2NyBpdGVtMTY3OyB0eXBlZGVmIFAxNjggaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSA+IHN0cnVjdCB2ZWN0b3IxNzAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNzA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgUDE1OCBpdGVtMTU4OyB0eXBlZGVmIFAxNTkgaXRlbTE1OTsgdHlwZWRlZiBQMTYwIGl0ZW0xNjA7IHR5cGVkZWYgUDE2MSBpdGVtMTYxOyB0eXBlZGVmIFAxNjIgaXRlbTE2MjsgdHlwZWRlZiBQMTYzIGl0ZW0xNjM7IHR5cGVkZWYgUDE2NCBpdGVtMTY0OyB0eXBlZGVmIFAxNjUgaXRlbTE2NTsgdHlwZWRlZiBQMTY2IGl0ZW0xNjY7IHR5cGVkZWYgUDE2NyBpdGVtMTY3OyB0eXBlZGVmIFAxNjggaXRlbTE2ODsgdHlwZWRlZiBQMTY5IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwID4gc3RydWN0IHZlY3RvcjE3MSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE3MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgUDE1OCBpdGVtMTU4OyB0eXBlZGVmIFAxNTkgaXRlbTE1OTsgdHlwZWRlZiBQMTYwIGl0ZW0xNjA7IHR5cGVkZWYgUDE2MSBpdGVtMTYxOyB0eXBlZGVmIFAxNjIgaXRlbTE2MjsgdHlwZWRlZiBQMTYzIGl0ZW0xNjM7IHR5cGVkZWYgUDE2NCBpdGVtMTY0OyB0eXBlZGVmIFAxNjUgaXRlbTE2NTsgdHlwZWRlZiBQMTY2IGl0ZW0xNjY7IHR5cGVkZWYgUDE2NyBpdGVtMTY3OyB0eXBlZGVmIFAxNjggaXRlbTE2ODsgdHlwZWRlZiBQMTY5IGl0ZW0xNjk7IHR5cGVkZWYgUDE3MCBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgPiBzdHJ1Y3QgdmVjdG9yMTcyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTcyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgUDE1OCBpdGVtMTU4OyB0eXBlZGVmIFAxNTkgaXRlbTE1OTsgdHlwZWRlZiBQMTYwIGl0ZW0xNjA7IHR5cGVkZWYgUDE2MSBpdGVtMTYxOyB0eXBlZGVmIFAxNjIgaXRlbTE2MjsgdHlwZWRlZiBQMTYzIGl0ZW0xNjM7IHR5cGVkZWYgUDE2NCBpdGVtMTY0OyB0eXBlZGVmIFAxNjUgaXRlbTE2NTsgdHlwZWRlZiBQMTY2IGl0ZW0xNjY7IHR5cGVkZWYgUDE2NyBpdGVtMTY3OyB0eXBlZGVmIFAxNjggaXRlbTE2ODsgdHlwZWRlZiBQMTY5IGl0ZW0xNjk7IHR5cGVkZWYgUDE3MCBpdGVtMTcwOyB0eXBlZGVmIFAxNzEgaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiA+IHN0cnVjdCB2ZWN0b3IxNzMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNzM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3Mj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgUDE1OCBpdGVtMTU4OyB0eXBlZGVmIFAxNTkgaXRlbTE1OTsgdHlwZWRlZiBQMTYwIGl0ZW0xNjA7IHR5cGVkZWYgUDE2MSBpdGVtMTYxOyB0eXBlZGVmIFAxNjIgaXRlbTE2MjsgdHlwZWRlZiBQMTYzIGl0ZW0xNjM7IHR5cGVkZWYgUDE2NCBpdGVtMTY0OyB0eXBlZGVmIFAxNjUgaXRlbTE2NTsgdHlwZWRlZiBQMTY2IGl0ZW0xNjY7IHR5cGVkZWYgUDE2NyBpdGVtMTY3OyB0eXBlZGVmIFAxNjggaXRlbTE2ODsgdHlwZWRlZiBQMTY5IGl0ZW0xNjk7IHR5cGVkZWYgUDE3MCBpdGVtMTcwOyB0eXBlZGVmIFAxNzEgaXRlbTE3MTsgdHlwZWRlZiBQMTcyIGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczID4gc3RydWN0IHZlY3RvcjE3NCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE3NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3Mz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgUDE1OCBpdGVtMTU4OyB0eXBlZGVmIFAxNTkgaXRlbTE1OTsgdHlwZWRlZiBQMTYwIGl0ZW0xNjA7IHR5cGVkZWYgUDE2MSBpdGVtMTYxOyB0eXBlZGVmIFAxNjIgaXRlbTE2MjsgdHlwZWRlZiBQMTYzIGl0ZW0xNjM7IHR5cGVkZWYgUDE2NCBpdGVtMTY0OyB0eXBlZGVmIFAxNjUgaXRlbTE2NTsgdHlwZWRlZiBQMTY2IGl0ZW0xNjY7IHR5cGVkZWYgUDE2NyBpdGVtMTY3OyB0eXBlZGVmIFAxNjggaXRlbTE2ODsgdHlwZWRlZiBQMTY5IGl0ZW0xNjk7IHR5cGVkZWYgUDE3MCBpdGVtMTcwOyB0eXBlZGVmIFAxNzEgaXRlbTE3MTsgdHlwZWRlZiBQMTcyIGl0ZW0xNzI7IHR5cGVkZWYgUDE3MyBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgPiBzdHJ1Y3QgdmVjdG9yMTc1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTc1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3ND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgUDE1OCBpdGVtMTU4OyB0eXBlZGVmIFAxNTkgaXRlbTE1OTsgdHlwZWRlZiBQMTYwIGl0ZW0xNjA7IHR5cGVkZWYgUDE2MSBpdGVtMTYxOyB0eXBlZGVmIFAxNjIgaXRlbTE2MjsgdHlwZWRlZiBQMTYzIGl0ZW0xNjM7IHR5cGVkZWYgUDE2NCBpdGVtMTY0OyB0eXBlZGVmIFAxNjUgaXRlbTE2NTsgdHlwZWRlZiBQMTY2IGl0ZW0xNjY7IHR5cGVkZWYgUDE2NyBpdGVtMTY3OyB0eXBlZGVmIFAxNjggaXRlbTE2ODsgdHlwZWRlZiBQMTY5IGl0ZW0xNjk7IHR5cGVkZWYgUDE3MCBpdGVtMTcwOyB0eXBlZGVmIFAxNzEgaXRlbTE3MTsgdHlwZWRlZiBQMTcyIGl0ZW0xNzI7IHR5cGVkZWYgUDE3MyBpdGVtMTczOyB0eXBlZGVmIFAxNzQgaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSA+IHN0cnVjdCB2ZWN0b3IxNzYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNzY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgUDE1OCBpdGVtMTU4OyB0eXBlZGVmIFAxNTkgaXRlbTE1OTsgdHlwZWRlZiBQMTYwIGl0ZW0xNjA7IHR5cGVkZWYgUDE2MSBpdGVtMTYxOyB0eXBlZGVmIFAxNjIgaXRlbTE2MjsgdHlwZWRlZiBQMTYzIGl0ZW0xNjM7IHR5cGVkZWYgUDE2NCBpdGVtMTY0OyB0eXBlZGVmIFAxNjUgaXRlbTE2NTsgdHlwZWRlZiBQMTY2IGl0ZW0xNjY7IHR5cGVkZWYgUDE2NyBpdGVtMTY3OyB0eXBlZGVmIFAxNjggaXRlbTE2ODsgdHlwZWRlZiBQMTY5IGl0ZW0xNjk7IHR5cGVkZWYgUDE3MCBpdGVtMTcwOyB0eXBlZGVmIFAxNzEgaXRlbTE3MTsgdHlwZWRlZiBQMTcyIGl0ZW0xNzI7IHR5cGVkZWYgUDE3MyBpdGVtMTczOyB0eXBlZGVmIFAxNzQgaXRlbTE3NDsgdHlwZWRlZiBQMTc1IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ID4gc3RydWN0IHZlY3RvcjE3NyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE3NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3Nj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgUDE1OCBpdGVtMTU4OyB0eXBlZGVmIFAxNTkgaXRlbTE1OTsgdHlwZWRlZiBQMTYwIGl0ZW0xNjA7IHR5cGVkZWYgUDE2MSBpdGVtMTYxOyB0eXBlZGVmIFAxNjIgaXRlbTE2MjsgdHlwZWRlZiBQMTYzIGl0ZW0xNjM7IHR5cGVkZWYgUDE2NCBpdGVtMTY0OyB0eXBlZGVmIFAxNjUgaXRlbTE2NTsgdHlwZWRlZiBQMTY2IGl0ZW0xNjY7IHR5cGVkZWYgUDE2NyBpdGVtMTY3OyB0eXBlZGVmIFAxNjggaXRlbTE2ODsgdHlwZWRlZiBQMTY5IGl0ZW0xNjk7IHR5cGVkZWYgUDE3MCBpdGVtMTcwOyB0eXBlZGVmIFAxNzEgaXRlbTE3MTsgdHlwZWRlZiBQMTcyIGl0ZW0xNzI7IHR5cGVkZWYgUDE3MyBpdGVtMTczOyB0eXBlZGVmIFAxNzQgaXRlbTE3NDsgdHlwZWRlZiBQMTc1IGl0ZW0xNzU7IHR5cGVkZWYgUDE3NiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgPiBzdHJ1Y3QgdmVjdG9yMTc4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTc4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3Nz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgUDE1OCBpdGVtMTU4OyB0eXBlZGVmIFAxNTkgaXRlbTE1OTsgdHlwZWRlZiBQMTYwIGl0ZW0xNjA7IHR5cGVkZWYgUDE2MSBpdGVtMTYxOyB0eXBlZGVmIFAxNjIgaXRlbTE2MjsgdHlwZWRlZiBQMTYzIGl0ZW0xNjM7IHR5cGVkZWYgUDE2NCBpdGVtMTY0OyB0eXBlZGVmIFAxNjUgaXRlbTE2NTsgdHlwZWRlZiBQMTY2IGl0ZW0xNjY7IHR5cGVkZWYgUDE2NyBpdGVtMTY3OyB0eXBlZGVmIFAxNjggaXRlbTE2ODsgdHlwZWRlZiBQMTY5IGl0ZW0xNjk7IHR5cGVkZWYgUDE3MCBpdGVtMTcwOyB0eXBlZGVmIFAxNzEgaXRlbTE3MTsgdHlwZWRlZiBQMTcyIGl0ZW0xNzI7IHR5cGVkZWYgUDE3MyBpdGVtMTczOyB0eXBlZGVmIFAxNzQgaXRlbTE3NDsgdHlwZWRlZiBQMTc1IGl0ZW0xNzU7IHR5cGVkZWYgUDE3NiBpdGVtMTc2OyB0eXBlZGVmIFAxNzcgaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCA+IHN0cnVjdCB2ZWN0b3IxNzkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNzk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgUDE1OCBpdGVtMTU4OyB0eXBlZGVmIFAxNTkgaXRlbTE1OTsgdHlwZWRlZiBQMTYwIGl0ZW0xNjA7IHR5cGVkZWYgUDE2MSBpdGVtMTYxOyB0eXBlZGVmIFAxNjIgaXRlbTE2MjsgdHlwZWRlZiBQMTYzIGl0ZW0xNjM7IHR5cGVkZWYgUDE2NCBpdGVtMTY0OyB0eXBlZGVmIFAxNjUgaXRlbTE2NTsgdHlwZWRlZiBQMTY2IGl0ZW0xNjY7IHR5cGVkZWYgUDE2NyBpdGVtMTY3OyB0eXBlZGVmIFAxNjggaXRlbTE2ODsgdHlwZWRlZiBQMTY5IGl0ZW0xNjk7IHR5cGVkZWYgUDE3MCBpdGVtMTcwOyB0eXBlZGVmIFAxNzEgaXRlbTE3MTsgdHlwZWRlZiBQMTcyIGl0ZW0xNzI7IHR5cGVkZWYgUDE3MyBpdGVtMTczOyB0eXBlZGVmIFAxNzQgaXRlbTE3NDsgdHlwZWRlZiBQMTc1IGl0ZW0xNzU7IHR5cGVkZWYgUDE3NiBpdGVtMTc2OyB0eXBlZGVmIFAxNzcgaXRlbTE3NzsgdHlwZWRlZiBQMTc4IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ID4gc3RydWN0IHZlY3RvcjE4MCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE4MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgUDE1OCBpdGVtMTU4OyB0eXBlZGVmIFAxNTkgaXRlbTE1OTsgdHlwZWRlZiBQMTYwIGl0ZW0xNjA7IHR5cGVkZWYgUDE2MSBpdGVtMTYxOyB0eXBlZGVmIFAxNjIgaXRlbTE2MjsgdHlwZWRlZiBQMTYzIGl0ZW0xNjM7IHR5cGVkZWYgUDE2NCBpdGVtMTY0OyB0eXBlZGVmIFAxNjUgaXRlbTE2NTsgdHlwZWRlZiBQMTY2IGl0ZW0xNjY7IHR5cGVkZWYgUDE2NyBpdGVtMTY3OyB0eXBlZGVmIFAxNjggaXRlbTE2ODsgdHlwZWRlZiBQMTY5IGl0ZW0xNjk7IHR5cGVkZWYgUDE3MCBpdGVtMTcwOyB0eXBlZGVmIFAxNzEgaXRlbTE3MTsgdHlwZWRlZiBQMTcyIGl0ZW0xNzI7IHR5cGVkZWYgUDE3MyBpdGVtMTczOyB0eXBlZGVmIFAxNzQgaXRlbTE3NDsgdHlwZWRlZiBQMTc1IGl0ZW0xNzU7IHR5cGVkZWYgUDE3NiBpdGVtMTc2OyB0eXBlZGVmIFAxNzcgaXRlbTE3NzsgdHlwZWRlZiBQMTc4IGl0ZW0xNzg7IHR5cGVkZWYgUDE3OSBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgPiBzdHJ1Y3QgdmVjdG9yMTgxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTgxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgUDE1OCBpdGVtMTU4OyB0eXBlZGVmIFAxNTkgaXRlbTE1OTsgdHlwZWRlZiBQMTYwIGl0ZW0xNjA7IHR5cGVkZWYgUDE2MSBpdGVtMTYxOyB0eXBlZGVmIFAxNjIgaXRlbTE2MjsgdHlwZWRlZiBQMTYzIGl0ZW0xNjM7IHR5cGVkZWYgUDE2NCBpdGVtMTY0OyB0eXBlZGVmIFAxNjUgaXRlbTE2NTsgdHlwZWRlZiBQMTY2IGl0ZW0xNjY7IHR5cGVkZWYgUDE2NyBpdGVtMTY3OyB0eXBlZGVmIFAxNjggaXRlbTE2ODsgdHlwZWRlZiBQMTY5IGl0ZW0xNjk7IHR5cGVkZWYgUDE3MCBpdGVtMTcwOyB0eXBlZGVmIFAxNzEgaXRlbTE3MTsgdHlwZWRlZiBQMTcyIGl0ZW0xNzI7IHR5cGVkZWYgUDE3MyBpdGVtMTczOyB0eXBlZGVmIFAxNzQgaXRlbTE3NDsgdHlwZWRlZiBQMTc1IGl0ZW0xNzU7IHR5cGVkZWYgUDE3NiBpdGVtMTc2OyB0eXBlZGVmIFAxNzcgaXRlbTE3NzsgdHlwZWRlZiBQMTc4IGl0ZW0xNzg7IHR5cGVkZWYgUDE3OSBpdGVtMTc5OyB0eXBlZGVmIFAxODAgaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSA+IHN0cnVjdCB2ZWN0b3IxODIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxODI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgUDE1OCBpdGVtMTU4OyB0eXBlZGVmIFAxNTkgaXRlbTE1OTsgdHlwZWRlZiBQMTYwIGl0ZW0xNjA7IHR5cGVkZWYgUDE2MSBpdGVtMTYxOyB0eXBlZGVmIFAxNjIgaXRlbTE2MjsgdHlwZWRlZiBQMTYzIGl0ZW0xNjM7IHR5cGVkZWYgUDE2NCBpdGVtMTY0OyB0eXBlZGVmIFAxNjUgaXRlbTE2NTsgdHlwZWRlZiBQMTY2IGl0ZW0xNjY7IHR5cGVkZWYgUDE2NyBpdGVtMTY3OyB0eXBlZGVmIFAxNjggaXRlbTE2ODsgdHlwZWRlZiBQMTY5IGl0ZW0xNjk7IHR5cGVkZWYgUDE3MCBpdGVtMTcwOyB0eXBlZGVmIFAxNzEgaXRlbTE3MTsgdHlwZWRlZiBQMTcyIGl0ZW0xNzI7IHR5cGVkZWYgUDE3MyBpdGVtMTczOyB0eXBlZGVmIFAxNzQgaXRlbTE3NDsgdHlwZWRlZiBQMTc1IGl0ZW0xNzU7IHR5cGVkZWYgUDE3NiBpdGVtMTc2OyB0eXBlZGVmIFAxNzcgaXRlbTE3NzsgdHlwZWRlZiBQMTc4IGl0ZW0xNzg7IHR5cGVkZWYgUDE3OSBpdGVtMTc5OyB0eXBlZGVmIFAxODAgaXRlbTE4MDsgdHlwZWRlZiBQMTgxIGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyID4gc3RydWN0IHZlY3RvcjE4MyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE4MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4Mj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgUDE1OCBpdGVtMTU4OyB0eXBlZGVmIFAxNTkgaXRlbTE1OTsgdHlwZWRlZiBQMTYwIGl0ZW0xNjA7IHR5cGVkZWYgUDE2MSBpdGVtMTYxOyB0eXBlZGVmIFAxNjIgaXRlbTE2MjsgdHlwZWRlZiBQMTYzIGl0ZW0xNjM7IHR5cGVkZWYgUDE2NCBpdGVtMTY0OyB0eXBlZGVmIFAxNjUgaXRlbTE2NTsgdHlwZWRlZiBQMTY2IGl0ZW0xNjY7IHR5cGVkZWYgUDE2NyBpdGVtMTY3OyB0eXBlZGVmIFAxNjggaXRlbTE2ODsgdHlwZWRlZiBQMTY5IGl0ZW0xNjk7IHR5cGVkZWYgUDE3MCBpdGVtMTcwOyB0eXBlZGVmIFAxNzEgaXRlbTE3MTsgdHlwZWRlZiBQMTcyIGl0ZW0xNzI7IHR5cGVkZWYgUDE3MyBpdGVtMTczOyB0eXBlZGVmIFAxNzQgaXRlbTE3NDsgdHlwZWRlZiBQMTc1IGl0ZW0xNzU7IHR5cGVkZWYgUDE3NiBpdGVtMTc2OyB0eXBlZGVmIFAxNzcgaXRlbTE3NzsgdHlwZWRlZiBQMTc4IGl0ZW0xNzg7IHR5cGVkZWYgUDE3OSBpdGVtMTc5OyB0eXBlZGVmIFAxODAgaXRlbTE4MDsgdHlwZWRlZiBQMTgxIGl0ZW0xODE7IHR5cGVkZWYgUDE4MiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgPiBzdHJ1Y3QgdmVjdG9yMTg0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTg0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4Mz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgUDE1OCBpdGVtMTU4OyB0eXBlZGVmIFAxNTkgaXRlbTE1OTsgdHlwZWRlZiBQMTYwIGl0ZW0xNjA7IHR5cGVkZWYgUDE2MSBpdGVtMTYxOyB0eXBlZGVmIFAxNjIgaXRlbTE2MjsgdHlwZWRlZiBQMTYzIGl0ZW0xNjM7IHR5cGVkZWYgUDE2NCBpdGVtMTY0OyB0eXBlZGVmIFAxNjUgaXRlbTE2NTsgdHlwZWRlZiBQMTY2IGl0ZW0xNjY7IHR5cGVkZWYgUDE2NyBpdGVtMTY3OyB0eXBlZGVmIFAxNjggaXRlbTE2ODsgdHlwZWRlZiBQMTY5IGl0ZW0xNjk7IHR5cGVkZWYgUDE3MCBpdGVtMTcwOyB0eXBlZGVmIFAxNzEgaXRlbTE3MTsgdHlwZWRlZiBQMTcyIGl0ZW0xNzI7IHR5cGVkZWYgUDE3MyBpdGVtMTczOyB0eXBlZGVmIFAxNzQgaXRlbTE3NDsgdHlwZWRlZiBQMTc1IGl0ZW0xNzU7IHR5cGVkZWYgUDE3NiBpdGVtMTc2OyB0eXBlZGVmIFAxNzcgaXRlbTE3NzsgdHlwZWRlZiBQMTc4IGl0ZW0xNzg7IHR5cGVkZWYgUDE3OSBpdGVtMTc5OyB0eXBlZGVmIFAxODAgaXRlbTE4MDsgdHlwZWRlZiBQMTgxIGl0ZW0xODE7IHR5cGVkZWYgUDE4MiBpdGVtMTgyOyB0eXBlZGVmIFAxODMgaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzICwgY2xhc3MgUDE4NCA+IHN0cnVjdCB2ZWN0b3IxODUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxODU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4ND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgUDE1OCBpdGVtMTU4OyB0eXBlZGVmIFAxNTkgaXRlbTE1OTsgdHlwZWRlZiBQMTYwIGl0ZW0xNjA7IHR5cGVkZWYgUDE2MSBpdGVtMTYxOyB0eXBlZGVmIFAxNjIgaXRlbTE2MjsgdHlwZWRlZiBQMTYzIGl0ZW0xNjM7IHR5cGVkZWYgUDE2NCBpdGVtMTY0OyB0eXBlZGVmIFAxNjUgaXRlbTE2NTsgdHlwZWRlZiBQMTY2IGl0ZW0xNjY7IHR5cGVkZWYgUDE2NyBpdGVtMTY3OyB0eXBlZGVmIFAxNjggaXRlbTE2ODsgdHlwZWRlZiBQMTY5IGl0ZW0xNjk7IHR5cGVkZWYgUDE3MCBpdGVtMTcwOyB0eXBlZGVmIFAxNzEgaXRlbTE3MTsgdHlwZWRlZiBQMTcyIGl0ZW0xNzI7IHR5cGVkZWYgUDE3MyBpdGVtMTczOyB0eXBlZGVmIFAxNzQgaXRlbTE3NDsgdHlwZWRlZiBQMTc1IGl0ZW0xNzU7IHR5cGVkZWYgUDE3NiBpdGVtMTc2OyB0eXBlZGVmIFAxNzcgaXRlbTE3NzsgdHlwZWRlZiBQMTc4IGl0ZW0xNzg7IHR5cGVkZWYgUDE3OSBpdGVtMTc5OyB0eXBlZGVmIFAxODAgaXRlbTE4MDsgdHlwZWRlZiBQMTgxIGl0ZW0xODE7IHR5cGVkZWYgUDE4MiBpdGVtMTgyOyB0eXBlZGVmIFAxODMgaXRlbTE4MzsgdHlwZWRlZiBQMTg0IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFAxODQgLCBjbGFzcyBQMTg1ID4gc3RydWN0IHZlY3RvcjE4NiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE4NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgUDE1OCBpdGVtMTU4OyB0eXBlZGVmIFAxNTkgaXRlbTE1OTsgdHlwZWRlZiBQMTYwIGl0ZW0xNjA7IHR5cGVkZWYgUDE2MSBpdGVtMTYxOyB0eXBlZGVmIFAxNjIgaXRlbTE2MjsgdHlwZWRlZiBQMTYzIGl0ZW0xNjM7IHR5cGVkZWYgUDE2NCBpdGVtMTY0OyB0eXBlZGVmIFAxNjUgaXRlbTE2NTsgdHlwZWRlZiBQMTY2IGl0ZW0xNjY7IHR5cGVkZWYgUDE2NyBpdGVtMTY3OyB0eXBlZGVmIFAxNjggaXRlbTE2ODsgdHlwZWRlZiBQMTY5IGl0ZW0xNjk7IHR5cGVkZWYgUDE3MCBpdGVtMTcwOyB0eXBlZGVmIFAxNzEgaXRlbTE3MTsgdHlwZWRlZiBQMTcyIGl0ZW0xNzI7IHR5cGVkZWYgUDE3MyBpdGVtMTczOyB0eXBlZGVmIFAxNzQgaXRlbTE3NDsgdHlwZWRlZiBQMTc1IGl0ZW0xNzU7IHR5cGVkZWYgUDE3NiBpdGVtMTc2OyB0eXBlZGVmIFAxNzcgaXRlbTE3NzsgdHlwZWRlZiBQMTc4IGl0ZW0xNzg7IHR5cGVkZWYgUDE3OSBpdGVtMTc5OyB0eXBlZGVmIFAxODAgaXRlbTE4MDsgdHlwZWRlZiBQMTgxIGl0ZW0xODE7IHR5cGVkZWYgUDE4MiBpdGVtMTgyOyB0eXBlZGVmIFAxODMgaXRlbTE4MzsgdHlwZWRlZiBQMTg0IGl0ZW0xODQ7IHR5cGVkZWYgUDE4NSBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBQMTg0ICwgY2xhc3MgUDE4NSAsIGNsYXNzIFAxODYgPiBzdHJ1Y3QgdmVjdG9yMTg3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTg3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4Nj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgUDE1OCBpdGVtMTU4OyB0eXBlZGVmIFAxNTkgaXRlbTE1OTsgdHlwZWRlZiBQMTYwIGl0ZW0xNjA7IHR5cGVkZWYgUDE2MSBpdGVtMTYxOyB0eXBlZGVmIFAxNjIgaXRlbTE2MjsgdHlwZWRlZiBQMTYzIGl0ZW0xNjM7IHR5cGVkZWYgUDE2NCBpdGVtMTY0OyB0eXBlZGVmIFAxNjUgaXRlbTE2NTsgdHlwZWRlZiBQMTY2IGl0ZW0xNjY7IHR5cGVkZWYgUDE2NyBpdGVtMTY3OyB0eXBlZGVmIFAxNjggaXRlbTE2ODsgdHlwZWRlZiBQMTY5IGl0ZW0xNjk7IHR5cGVkZWYgUDE3MCBpdGVtMTcwOyB0eXBlZGVmIFAxNzEgaXRlbTE3MTsgdHlwZWRlZiBQMTcyIGl0ZW0xNzI7IHR5cGVkZWYgUDE3MyBpdGVtMTczOyB0eXBlZGVmIFAxNzQgaXRlbTE3NDsgdHlwZWRlZiBQMTc1IGl0ZW0xNzU7IHR5cGVkZWYgUDE3NiBpdGVtMTc2OyB0eXBlZGVmIFAxNzcgaXRlbTE3NzsgdHlwZWRlZiBQMTc4IGl0ZW0xNzg7IHR5cGVkZWYgUDE3OSBpdGVtMTc5OyB0eXBlZGVmIFAxODAgaXRlbTE4MDsgdHlwZWRlZiBQMTgxIGl0ZW0xODE7IHR5cGVkZWYgUDE4MiBpdGVtMTgyOyB0eXBlZGVmIFAxODMgaXRlbTE4MzsgdHlwZWRlZiBQMTg0IGl0ZW0xODQ7IHR5cGVkZWYgUDE4NSBpdGVtMTg1OyB0eXBlZGVmIFAxODYgaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzICwgY2xhc3MgUDE4NCAsIGNsYXNzIFAxODUgLCBjbGFzcyBQMTg2ICwgY2xhc3MgUDE4NyA+IHN0cnVjdCB2ZWN0b3IxODggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxODg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4Nz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgUDE1OCBpdGVtMTU4OyB0eXBlZGVmIFAxNTkgaXRlbTE1OTsgdHlwZWRlZiBQMTYwIGl0ZW0xNjA7IHR5cGVkZWYgUDE2MSBpdGVtMTYxOyB0eXBlZGVmIFAxNjIgaXRlbTE2MjsgdHlwZWRlZiBQMTYzIGl0ZW0xNjM7IHR5cGVkZWYgUDE2NCBpdGVtMTY0OyB0eXBlZGVmIFAxNjUgaXRlbTE2NTsgdHlwZWRlZiBQMTY2IGl0ZW0xNjY7IHR5cGVkZWYgUDE2NyBpdGVtMTY3OyB0eXBlZGVmIFAxNjggaXRlbTE2ODsgdHlwZWRlZiBQMTY5IGl0ZW0xNjk7IHR5cGVkZWYgUDE3MCBpdGVtMTcwOyB0eXBlZGVmIFAxNzEgaXRlbTE3MTsgdHlwZWRlZiBQMTcyIGl0ZW0xNzI7IHR5cGVkZWYgUDE3MyBpdGVtMTczOyB0eXBlZGVmIFAxNzQgaXRlbTE3NDsgdHlwZWRlZiBQMTc1IGl0ZW0xNzU7IHR5cGVkZWYgUDE3NiBpdGVtMTc2OyB0eXBlZGVmIFAxNzcgaXRlbTE3NzsgdHlwZWRlZiBQMTc4IGl0ZW0xNzg7IHR5cGVkZWYgUDE3OSBpdGVtMTc5OyB0eXBlZGVmIFAxODAgaXRlbTE4MDsgdHlwZWRlZiBQMTgxIGl0ZW0xODE7IHR5cGVkZWYgUDE4MiBpdGVtMTgyOyB0eXBlZGVmIFAxODMgaXRlbTE4MzsgdHlwZWRlZiBQMTg0IGl0ZW0xODQ7IHR5cGVkZWYgUDE4NSBpdGVtMTg1OyB0eXBlZGVmIFAxODYgaXRlbTE4NjsgdHlwZWRlZiBQMTg3IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFAxODQgLCBjbGFzcyBQMTg1ICwgY2xhc3MgUDE4NiAsIGNsYXNzIFAxODcgLCBjbGFzcyBQMTg4ID4gc3RydWN0IHZlY3RvcjE4OSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE4OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgUDE4OD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgUDE1OCBpdGVtMTU4OyB0eXBlZGVmIFAxNTkgaXRlbTE1OTsgdHlwZWRlZiBQMTYwIGl0ZW0xNjA7IHR5cGVkZWYgUDE2MSBpdGVtMTYxOyB0eXBlZGVmIFAxNjIgaXRlbTE2MjsgdHlwZWRlZiBQMTYzIGl0ZW0xNjM7IHR5cGVkZWYgUDE2NCBpdGVtMTY0OyB0eXBlZGVmIFAxNjUgaXRlbTE2NTsgdHlwZWRlZiBQMTY2IGl0ZW0xNjY7IHR5cGVkZWYgUDE2NyBpdGVtMTY3OyB0eXBlZGVmIFAxNjggaXRlbTE2ODsgdHlwZWRlZiBQMTY5IGl0ZW0xNjk7IHR5cGVkZWYgUDE3MCBpdGVtMTcwOyB0eXBlZGVmIFAxNzEgaXRlbTE3MTsgdHlwZWRlZiBQMTcyIGl0ZW0xNzI7IHR5cGVkZWYgUDE3MyBpdGVtMTczOyB0eXBlZGVmIFAxNzQgaXRlbTE3NDsgdHlwZWRlZiBQMTc1IGl0ZW0xNzU7IHR5cGVkZWYgUDE3NiBpdGVtMTc2OyB0eXBlZGVmIFAxNzcgaXRlbTE3NzsgdHlwZWRlZiBQMTc4IGl0ZW0xNzg7IHR5cGVkZWYgUDE3OSBpdGVtMTc5OyB0eXBlZGVmIFAxODAgaXRlbTE4MDsgdHlwZWRlZiBQMTgxIGl0ZW0xODE7IHR5cGVkZWYgUDE4MiBpdGVtMTgyOyB0eXBlZGVmIFAxODMgaXRlbTE4MzsgdHlwZWRlZiBQMTg0IGl0ZW0xODQ7IHR5cGVkZWYgUDE4NSBpdGVtMTg1OyB0eXBlZGVmIFAxODYgaXRlbTE4NjsgdHlwZWRlZiBQMTg3IGl0ZW0xODc7IHR5cGVkZWYgUDE4OCBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBQMTg0ICwgY2xhc3MgUDE4NSAsIGNsYXNzIFAxODYgLCBjbGFzcyBQMTg3ICwgY2xhc3MgUDE4OCAsIGNsYXNzIFAxODkgPiBzdHJ1Y3QgdmVjdG9yMTkwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTkwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBQMTg4ICwgUDE4OT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgUDE1OCBpdGVtMTU4OyB0eXBlZGVmIFAxNTkgaXRlbTE1OTsgdHlwZWRlZiBQMTYwIGl0ZW0xNjA7IHR5cGVkZWYgUDE2MSBpdGVtMTYxOyB0eXBlZGVmIFAxNjIgaXRlbTE2MjsgdHlwZWRlZiBQMTYzIGl0ZW0xNjM7IHR5cGVkZWYgUDE2NCBpdGVtMTY0OyB0eXBlZGVmIFAxNjUgaXRlbTE2NTsgdHlwZWRlZiBQMTY2IGl0ZW0xNjY7IHR5cGVkZWYgUDE2NyBpdGVtMTY3OyB0eXBlZGVmIFAxNjggaXRlbTE2ODsgdHlwZWRlZiBQMTY5IGl0ZW0xNjk7IHR5cGVkZWYgUDE3MCBpdGVtMTcwOyB0eXBlZGVmIFAxNzEgaXRlbTE3MTsgdHlwZWRlZiBQMTcyIGl0ZW0xNzI7IHR5cGVkZWYgUDE3MyBpdGVtMTczOyB0eXBlZGVmIFAxNzQgaXRlbTE3NDsgdHlwZWRlZiBQMTc1IGl0ZW0xNzU7IHR5cGVkZWYgUDE3NiBpdGVtMTc2OyB0eXBlZGVmIFAxNzcgaXRlbTE3NzsgdHlwZWRlZiBQMTc4IGl0ZW0xNzg7IHR5cGVkZWYgUDE3OSBpdGVtMTc5OyB0eXBlZGVmIFAxODAgaXRlbTE4MDsgdHlwZWRlZiBQMTgxIGl0ZW0xODE7IHR5cGVkZWYgUDE4MiBpdGVtMTgyOyB0eXBlZGVmIFAxODMgaXRlbTE4MzsgdHlwZWRlZiBQMTg0IGl0ZW0xODQ7IHR5cGVkZWYgUDE4NSBpdGVtMTg1OyB0eXBlZGVmIFAxODYgaXRlbTE4NjsgdHlwZWRlZiBQMTg3IGl0ZW0xODc7IHR5cGVkZWYgUDE4OCBpdGVtMTg4OyB0eXBlZGVmIFAxODkgaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzICwgY2xhc3MgUDE4NCAsIGNsYXNzIFAxODUgLCBjbGFzcyBQMTg2ICwgY2xhc3MgUDE4NyAsIGNsYXNzIFAxODggLCBjbGFzcyBQMTg5ICwgY2xhc3MgUDE5MCA+IHN0cnVjdCB2ZWN0b3IxOTEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxOTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgUDE1OCBpdGVtMTU4OyB0eXBlZGVmIFAxNTkgaXRlbTE1OTsgdHlwZWRlZiBQMTYwIGl0ZW0xNjA7IHR5cGVkZWYgUDE2MSBpdGVtMTYxOyB0eXBlZGVmIFAxNjIgaXRlbTE2MjsgdHlwZWRlZiBQMTYzIGl0ZW0xNjM7IHR5cGVkZWYgUDE2NCBpdGVtMTY0OyB0eXBlZGVmIFAxNjUgaXRlbTE2NTsgdHlwZWRlZiBQMTY2IGl0ZW0xNjY7IHR5cGVkZWYgUDE2NyBpdGVtMTY3OyB0eXBlZGVmIFAxNjggaXRlbTE2ODsgdHlwZWRlZiBQMTY5IGl0ZW0xNjk7IHR5cGVkZWYgUDE3MCBpdGVtMTcwOyB0eXBlZGVmIFAxNzEgaXRlbTE3MTsgdHlwZWRlZiBQMTcyIGl0ZW0xNzI7IHR5cGVkZWYgUDE3MyBpdGVtMTczOyB0eXBlZGVmIFAxNzQgaXRlbTE3NDsgdHlwZWRlZiBQMTc1IGl0ZW0xNzU7IHR5cGVkZWYgUDE3NiBpdGVtMTc2OyB0eXBlZGVmIFAxNzcgaXRlbTE3NzsgdHlwZWRlZiBQMTc4IGl0ZW0xNzg7IHR5cGVkZWYgUDE3OSBpdGVtMTc5OyB0eXBlZGVmIFAxODAgaXRlbTE4MDsgdHlwZWRlZiBQMTgxIGl0ZW0xODE7IHR5cGVkZWYgUDE4MiBpdGVtMTgyOyB0eXBlZGVmIFAxODMgaXRlbTE4MzsgdHlwZWRlZiBQMTg0IGl0ZW0xODQ7IHR5cGVkZWYgUDE4NSBpdGVtMTg1OyB0eXBlZGVmIFAxODYgaXRlbTE4NjsgdHlwZWRlZiBQMTg3IGl0ZW0xODc7IHR5cGVkZWYgUDE4OCBpdGVtMTg4OyB0eXBlZGVmIFAxODkgaXRlbTE4OTsgdHlwZWRlZiBQMTkwIGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFAxODQgLCBjbGFzcyBQMTg1ICwgY2xhc3MgUDE4NiAsIGNsYXNzIFAxODcgLCBjbGFzcyBQMTg4ICwgY2xhc3MgUDE4OSAsIGNsYXNzIFAxOTAgLCBjbGFzcyBQMTkxID4gc3RydWN0IHZlY3RvcjE5MiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE5MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgUDE4OCAsIFAxODkgLCBQMTkwICwgUDE5MT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgUDE1OCBpdGVtMTU4OyB0eXBlZGVmIFAxNTkgaXRlbTE1OTsgdHlwZWRlZiBQMTYwIGl0ZW0xNjA7IHR5cGVkZWYgUDE2MSBpdGVtMTYxOyB0eXBlZGVmIFAxNjIgaXRlbTE2MjsgdHlwZWRlZiBQMTYzIGl0ZW0xNjM7IHR5cGVkZWYgUDE2NCBpdGVtMTY0OyB0eXBlZGVmIFAxNjUgaXRlbTE2NTsgdHlwZWRlZiBQMTY2IGl0ZW0xNjY7IHR5cGVkZWYgUDE2NyBpdGVtMTY3OyB0eXBlZGVmIFAxNjggaXRlbTE2ODsgdHlwZWRlZiBQMTY5IGl0ZW0xNjk7IHR5cGVkZWYgUDE3MCBpdGVtMTcwOyB0eXBlZGVmIFAxNzEgaXRlbTE3MTsgdHlwZWRlZiBQMTcyIGl0ZW0xNzI7IHR5cGVkZWYgUDE3MyBpdGVtMTczOyB0eXBlZGVmIFAxNzQgaXRlbTE3NDsgdHlwZWRlZiBQMTc1IGl0ZW0xNzU7IHR5cGVkZWYgUDE3NiBpdGVtMTc2OyB0eXBlZGVmIFAxNzcgaXRlbTE3NzsgdHlwZWRlZiBQMTc4IGl0ZW0xNzg7IHR5cGVkZWYgUDE3OSBpdGVtMTc5OyB0eXBlZGVmIFAxODAgaXRlbTE4MDsgdHlwZWRlZiBQMTgxIGl0ZW0xODE7IHR5cGVkZWYgUDE4MiBpdGVtMTgyOyB0eXBlZGVmIFAxODMgaXRlbTE4MzsgdHlwZWRlZiBQMTg0IGl0ZW0xODQ7IHR5cGVkZWYgUDE4NSBpdGVtMTg1OyB0eXBlZGVmIFAxODYgaXRlbTE4NjsgdHlwZWRlZiBQMTg3IGl0ZW0xODc7IHR5cGVkZWYgUDE4OCBpdGVtMTg4OyB0eXBlZGVmIFAxODkgaXRlbTE4OTsgdHlwZWRlZiBQMTkwIGl0ZW0xOTA7IHR5cGVkZWYgUDE5MSBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBQMTg0ICwgY2xhc3MgUDE4NSAsIGNsYXNzIFAxODYgLCBjbGFzcyBQMTg3ICwgY2xhc3MgUDE4OCAsIGNsYXNzIFAxODkgLCBjbGFzcyBQMTkwICwgY2xhc3MgUDE5MSAsIGNsYXNzIFAxOTIgPiBzdHJ1Y3QgdmVjdG9yMTkzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTkzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBQMTg4ICwgUDE4OSAsIFAxOTAgLCBQMTkxICwgUDE5Mj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgUDE1OCBpdGVtMTU4OyB0eXBlZGVmIFAxNTkgaXRlbTE1OTsgdHlwZWRlZiBQMTYwIGl0ZW0xNjA7IHR5cGVkZWYgUDE2MSBpdGVtMTYxOyB0eXBlZGVmIFAxNjIgaXRlbTE2MjsgdHlwZWRlZiBQMTYzIGl0ZW0xNjM7IHR5cGVkZWYgUDE2NCBpdGVtMTY0OyB0eXBlZGVmIFAxNjUgaXRlbTE2NTsgdHlwZWRlZiBQMTY2IGl0ZW0xNjY7IHR5cGVkZWYgUDE2NyBpdGVtMTY3OyB0eXBlZGVmIFAxNjggaXRlbTE2ODsgdHlwZWRlZiBQMTY5IGl0ZW0xNjk7IHR5cGVkZWYgUDE3MCBpdGVtMTcwOyB0eXBlZGVmIFAxNzEgaXRlbTE3MTsgdHlwZWRlZiBQMTcyIGl0ZW0xNzI7IHR5cGVkZWYgUDE3MyBpdGVtMTczOyB0eXBlZGVmIFAxNzQgaXRlbTE3NDsgdHlwZWRlZiBQMTc1IGl0ZW0xNzU7IHR5cGVkZWYgUDE3NiBpdGVtMTc2OyB0eXBlZGVmIFAxNzcgaXRlbTE3NzsgdHlwZWRlZiBQMTc4IGl0ZW0xNzg7IHR5cGVkZWYgUDE3OSBpdGVtMTc5OyB0eXBlZGVmIFAxODAgaXRlbTE4MDsgdHlwZWRlZiBQMTgxIGl0ZW0xODE7IHR5cGVkZWYgUDE4MiBpdGVtMTgyOyB0eXBlZGVmIFAxODMgaXRlbTE4MzsgdHlwZWRlZiBQMTg0IGl0ZW0xODQ7IHR5cGVkZWYgUDE4NSBpdGVtMTg1OyB0eXBlZGVmIFAxODYgaXRlbTE4NjsgdHlwZWRlZiBQMTg3IGl0ZW0xODc7IHR5cGVkZWYgUDE4OCBpdGVtMTg4OyB0eXBlZGVmIFAxODkgaXRlbTE4OTsgdHlwZWRlZiBQMTkwIGl0ZW0xOTA7IHR5cGVkZWYgUDE5MSBpdGVtMTkxOyB0eXBlZGVmIFAxOTIgaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzICwgY2xhc3MgUDE4NCAsIGNsYXNzIFAxODUgLCBjbGFzcyBQMTg2ICwgY2xhc3MgUDE4NyAsIGNsYXNzIFAxODggLCBjbGFzcyBQMTg5ICwgY2xhc3MgUDE5MCAsIGNsYXNzIFAxOTEgLCBjbGFzcyBQMTkyICwgY2xhc3MgUDE5MyA+IHN0cnVjdCB2ZWN0b3IxOTQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxOTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MCAsIFAxOTEgLCBQMTkyICwgUDE5Mz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgUDE1OCBpdGVtMTU4OyB0eXBlZGVmIFAxNTkgaXRlbTE1OTsgdHlwZWRlZiBQMTYwIGl0ZW0xNjA7IHR5cGVkZWYgUDE2MSBpdGVtMTYxOyB0eXBlZGVmIFAxNjIgaXRlbTE2MjsgdHlwZWRlZiBQMTYzIGl0ZW0xNjM7IHR5cGVkZWYgUDE2NCBpdGVtMTY0OyB0eXBlZGVmIFAxNjUgaXRlbTE2NTsgdHlwZWRlZiBQMTY2IGl0ZW0xNjY7IHR5cGVkZWYgUDE2NyBpdGVtMTY3OyB0eXBlZGVmIFAxNjggaXRlbTE2ODsgdHlwZWRlZiBQMTY5IGl0ZW0xNjk7IHR5cGVkZWYgUDE3MCBpdGVtMTcwOyB0eXBlZGVmIFAxNzEgaXRlbTE3MTsgdHlwZWRlZiBQMTcyIGl0ZW0xNzI7IHR5cGVkZWYgUDE3MyBpdGVtMTczOyB0eXBlZGVmIFAxNzQgaXRlbTE3NDsgdHlwZWRlZiBQMTc1IGl0ZW0xNzU7IHR5cGVkZWYgUDE3NiBpdGVtMTc2OyB0eXBlZGVmIFAxNzcgaXRlbTE3NzsgdHlwZWRlZiBQMTc4IGl0ZW0xNzg7IHR5cGVkZWYgUDE3OSBpdGVtMTc5OyB0eXBlZGVmIFAxODAgaXRlbTE4MDsgdHlwZWRlZiBQMTgxIGl0ZW0xODE7IHR5cGVkZWYgUDE4MiBpdGVtMTgyOyB0eXBlZGVmIFAxODMgaXRlbTE4MzsgdHlwZWRlZiBQMTg0IGl0ZW0xODQ7IHR5cGVkZWYgUDE4NSBpdGVtMTg1OyB0eXBlZGVmIFAxODYgaXRlbTE4NjsgdHlwZWRlZiBQMTg3IGl0ZW0xODc7IHR5cGVkZWYgUDE4OCBpdGVtMTg4OyB0eXBlZGVmIFAxODkgaXRlbTE4OTsgdHlwZWRlZiBQMTkwIGl0ZW0xOTA7IHR5cGVkZWYgUDE5MSBpdGVtMTkxOyB0eXBlZGVmIFAxOTIgaXRlbTE5MjsgdHlwZWRlZiBQMTkzIGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFAxODQgLCBjbGFzcyBQMTg1ICwgY2xhc3MgUDE4NiAsIGNsYXNzIFAxODcgLCBjbGFzcyBQMTg4ICwgY2xhc3MgUDE4OSAsIGNsYXNzIFAxOTAgLCBjbGFzcyBQMTkxICwgY2xhc3MgUDE5MiAsIGNsYXNzIFAxOTMgLCBjbGFzcyBQMTk0ID4gc3RydWN0IHZlY3RvcjE5NSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE5NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgUDE4OCAsIFAxODkgLCBQMTkwICwgUDE5MSAsIFAxOTIgLCBQMTkzICwgUDE5ND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgUDE1OCBpdGVtMTU4OyB0eXBlZGVmIFAxNTkgaXRlbTE1OTsgdHlwZWRlZiBQMTYwIGl0ZW0xNjA7IHR5cGVkZWYgUDE2MSBpdGVtMTYxOyB0eXBlZGVmIFAxNjIgaXRlbTE2MjsgdHlwZWRlZiBQMTYzIGl0ZW0xNjM7IHR5cGVkZWYgUDE2NCBpdGVtMTY0OyB0eXBlZGVmIFAxNjUgaXRlbTE2NTsgdHlwZWRlZiBQMTY2IGl0ZW0xNjY7IHR5cGVkZWYgUDE2NyBpdGVtMTY3OyB0eXBlZGVmIFAxNjggaXRlbTE2ODsgdHlwZWRlZiBQMTY5IGl0ZW0xNjk7IHR5cGVkZWYgUDE3MCBpdGVtMTcwOyB0eXBlZGVmIFAxNzEgaXRlbTE3MTsgdHlwZWRlZiBQMTcyIGl0ZW0xNzI7IHR5cGVkZWYgUDE3MyBpdGVtMTczOyB0eXBlZGVmIFAxNzQgaXRlbTE3NDsgdHlwZWRlZiBQMTc1IGl0ZW0xNzU7IHR5cGVkZWYgUDE3NiBpdGVtMTc2OyB0eXBlZGVmIFAxNzcgaXRlbTE3NzsgdHlwZWRlZiBQMTc4IGl0ZW0xNzg7IHR5cGVkZWYgUDE3OSBpdGVtMTc5OyB0eXBlZGVmIFAxODAgaXRlbTE4MDsgdHlwZWRlZiBQMTgxIGl0ZW0xODE7IHR5cGVkZWYgUDE4MiBpdGVtMTgyOyB0eXBlZGVmIFAxODMgaXRlbTE4MzsgdHlwZWRlZiBQMTg0IGl0ZW0xODQ7IHR5cGVkZWYgUDE4NSBpdGVtMTg1OyB0eXBlZGVmIFAxODYgaXRlbTE4NjsgdHlwZWRlZiBQMTg3IGl0ZW0xODc7IHR5cGVkZWYgUDE4OCBpdGVtMTg4OyB0eXBlZGVmIFAxODkgaXRlbTE4OTsgdHlwZWRlZiBQMTkwIGl0ZW0xOTA7IHR5cGVkZWYgUDE5MSBpdGVtMTkxOyB0eXBlZGVmIFAxOTIgaXRlbTE5MjsgdHlwZWRlZiBQMTkzIGl0ZW0xOTM7IHR5cGVkZWYgUDE5NCBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBQMTg0ICwgY2xhc3MgUDE4NSAsIGNsYXNzIFAxODYgLCBjbGFzcyBQMTg3ICwgY2xhc3MgUDE4OCAsIGNsYXNzIFAxODkgLCBjbGFzcyBQMTkwICwgY2xhc3MgUDE5MSAsIGNsYXNzIFAxOTIgLCBjbGFzcyBQMTkzICwgY2xhc3MgUDE5NCAsIGNsYXNzIFAxOTUgPiBzdHJ1Y3QgdmVjdG9yMTk2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTk2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBQMTg4ICwgUDE4OSAsIFAxOTAgLCBQMTkxICwgUDE5MiAsIFAxOTMgLCBQMTk0ICwgUDE5NT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgUDE1OCBpdGVtMTU4OyB0eXBlZGVmIFAxNTkgaXRlbTE1OTsgdHlwZWRlZiBQMTYwIGl0ZW0xNjA7IHR5cGVkZWYgUDE2MSBpdGVtMTYxOyB0eXBlZGVmIFAxNjIgaXRlbTE2MjsgdHlwZWRlZiBQMTYzIGl0ZW0xNjM7IHR5cGVkZWYgUDE2NCBpdGVtMTY0OyB0eXBlZGVmIFAxNjUgaXRlbTE2NTsgdHlwZWRlZiBQMTY2IGl0ZW0xNjY7IHR5cGVkZWYgUDE2NyBpdGVtMTY3OyB0eXBlZGVmIFAxNjggaXRlbTE2ODsgdHlwZWRlZiBQMTY5IGl0ZW0xNjk7IHR5cGVkZWYgUDE3MCBpdGVtMTcwOyB0eXBlZGVmIFAxNzEgaXRlbTE3MTsgdHlwZWRlZiBQMTcyIGl0ZW0xNzI7IHR5cGVkZWYgUDE3MyBpdGVtMTczOyB0eXBlZGVmIFAxNzQgaXRlbTE3NDsgdHlwZWRlZiBQMTc1IGl0ZW0xNzU7IHR5cGVkZWYgUDE3NiBpdGVtMTc2OyB0eXBlZGVmIFAxNzcgaXRlbTE3NzsgdHlwZWRlZiBQMTc4IGl0ZW0xNzg7IHR5cGVkZWYgUDE3OSBpdGVtMTc5OyB0eXBlZGVmIFAxODAgaXRlbTE4MDsgdHlwZWRlZiBQMTgxIGl0ZW0xODE7IHR5cGVkZWYgUDE4MiBpdGVtMTgyOyB0eXBlZGVmIFAxODMgaXRlbTE4MzsgdHlwZWRlZiBQMTg0IGl0ZW0xODQ7IHR5cGVkZWYgUDE4NSBpdGVtMTg1OyB0eXBlZGVmIFAxODYgaXRlbTE4NjsgdHlwZWRlZiBQMTg3IGl0ZW0xODc7IHR5cGVkZWYgUDE4OCBpdGVtMTg4OyB0eXBlZGVmIFAxODkgaXRlbTE4OTsgdHlwZWRlZiBQMTkwIGl0ZW0xOTA7IHR5cGVkZWYgUDE5MSBpdGVtMTkxOyB0eXBlZGVmIFAxOTIgaXRlbTE5MjsgdHlwZWRlZiBQMTkzIGl0ZW0xOTM7IHR5cGVkZWYgUDE5NCBpdGVtMTk0OyB0eXBlZGVmIFAxOTUgaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzICwgY2xhc3MgUDE4NCAsIGNsYXNzIFAxODUgLCBjbGFzcyBQMTg2ICwgY2xhc3MgUDE4NyAsIGNsYXNzIFAxODggLCBjbGFzcyBQMTg5ICwgY2xhc3MgUDE5MCAsIGNsYXNzIFAxOTEgLCBjbGFzcyBQMTkyICwgY2xhc3MgUDE5MyAsIGNsYXNzIFAxOTQgLCBjbGFzcyBQMTk1ICwgY2xhc3MgUDE5NiA+IHN0cnVjdCB2ZWN0b3IxOTcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxOTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MCAsIFAxOTEgLCBQMTkyICwgUDE5MyAsIFAxOTQgLCBQMTk1ICwgUDE5Nj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgUDE1OCBpdGVtMTU4OyB0eXBlZGVmIFAxNTkgaXRlbTE1OTsgdHlwZWRlZiBQMTYwIGl0ZW0xNjA7IHR5cGVkZWYgUDE2MSBpdGVtMTYxOyB0eXBlZGVmIFAxNjIgaXRlbTE2MjsgdHlwZWRlZiBQMTYzIGl0ZW0xNjM7IHR5cGVkZWYgUDE2NCBpdGVtMTY0OyB0eXBlZGVmIFAxNjUgaXRlbTE2NTsgdHlwZWRlZiBQMTY2IGl0ZW0xNjY7IHR5cGVkZWYgUDE2NyBpdGVtMTY3OyB0eXBlZGVmIFAxNjggaXRlbTE2ODsgdHlwZWRlZiBQMTY5IGl0ZW0xNjk7IHR5cGVkZWYgUDE3MCBpdGVtMTcwOyB0eXBlZGVmIFAxNzEgaXRlbTE3MTsgdHlwZWRlZiBQMTcyIGl0ZW0xNzI7IHR5cGVkZWYgUDE3MyBpdGVtMTczOyB0eXBlZGVmIFAxNzQgaXRlbTE3NDsgdHlwZWRlZiBQMTc1IGl0ZW0xNzU7IHR5cGVkZWYgUDE3NiBpdGVtMTc2OyB0eXBlZGVmIFAxNzcgaXRlbTE3NzsgdHlwZWRlZiBQMTc4IGl0ZW0xNzg7IHR5cGVkZWYgUDE3OSBpdGVtMTc5OyB0eXBlZGVmIFAxODAgaXRlbTE4MDsgdHlwZWRlZiBQMTgxIGl0ZW0xODE7IHR5cGVkZWYgUDE4MiBpdGVtMTgyOyB0eXBlZGVmIFAxODMgaXRlbTE4MzsgdHlwZWRlZiBQMTg0IGl0ZW0xODQ7IHR5cGVkZWYgUDE4NSBpdGVtMTg1OyB0eXBlZGVmIFAxODYgaXRlbTE4NjsgdHlwZWRlZiBQMTg3IGl0ZW0xODc7IHR5cGVkZWYgUDE4OCBpdGVtMTg4OyB0eXBlZGVmIFAxODkgaXRlbTE4OTsgdHlwZWRlZiBQMTkwIGl0ZW0xOTA7IHR5cGVkZWYgUDE5MSBpdGVtMTkxOyB0eXBlZGVmIFAxOTIgaXRlbTE5MjsgdHlwZWRlZiBQMTkzIGl0ZW0xOTM7IHR5cGVkZWYgUDE5NCBpdGVtMTk0OyB0eXBlZGVmIFAxOTUgaXRlbTE5NTsgdHlwZWRlZiBQMTk2IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFAxODQgLCBjbGFzcyBQMTg1ICwgY2xhc3MgUDE4NiAsIGNsYXNzIFAxODcgLCBjbGFzcyBQMTg4ICwgY2xhc3MgUDE4OSAsIGNsYXNzIFAxOTAgLCBjbGFzcyBQMTkxICwgY2xhc3MgUDE5MiAsIGNsYXNzIFAxOTMgLCBjbGFzcyBQMTk0ICwgY2xhc3MgUDE5NSAsIGNsYXNzIFAxOTYgLCBjbGFzcyBQMTk3ID4gc3RydWN0IHZlY3RvcjE5OCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE5ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgUDE4OCAsIFAxODkgLCBQMTkwICwgUDE5MSAsIFAxOTIgLCBQMTkzICwgUDE5NCAsIFAxOTUgLCBQMTk2ICwgUDE5Nz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgUDE1OCBpdGVtMTU4OyB0eXBlZGVmIFAxNTkgaXRlbTE1OTsgdHlwZWRlZiBQMTYwIGl0ZW0xNjA7IHR5cGVkZWYgUDE2MSBpdGVtMTYxOyB0eXBlZGVmIFAxNjIgaXRlbTE2MjsgdHlwZWRlZiBQMTYzIGl0ZW0xNjM7IHR5cGVkZWYgUDE2NCBpdGVtMTY0OyB0eXBlZGVmIFAxNjUgaXRlbTE2NTsgdHlwZWRlZiBQMTY2IGl0ZW0xNjY7IHR5cGVkZWYgUDE2NyBpdGVtMTY3OyB0eXBlZGVmIFAxNjggaXRlbTE2ODsgdHlwZWRlZiBQMTY5IGl0ZW0xNjk7IHR5cGVkZWYgUDE3MCBpdGVtMTcwOyB0eXBlZGVmIFAxNzEgaXRlbTE3MTsgdHlwZWRlZiBQMTcyIGl0ZW0xNzI7IHR5cGVkZWYgUDE3MyBpdGVtMTczOyB0eXBlZGVmIFAxNzQgaXRlbTE3NDsgdHlwZWRlZiBQMTc1IGl0ZW0xNzU7IHR5cGVkZWYgUDE3NiBpdGVtMTc2OyB0eXBlZGVmIFAxNzcgaXRlbTE3NzsgdHlwZWRlZiBQMTc4IGl0ZW0xNzg7IHR5cGVkZWYgUDE3OSBpdGVtMTc5OyB0eXBlZGVmIFAxODAgaXRlbTE4MDsgdHlwZWRlZiBQMTgxIGl0ZW0xODE7IHR5cGVkZWYgUDE4MiBpdGVtMTgyOyB0eXBlZGVmIFAxODMgaXRlbTE4MzsgdHlwZWRlZiBQMTg0IGl0ZW0xODQ7IHR5cGVkZWYgUDE4NSBpdGVtMTg1OyB0eXBlZGVmIFAxODYgaXRlbTE4NjsgdHlwZWRlZiBQMTg3IGl0ZW0xODc7IHR5cGVkZWYgUDE4OCBpdGVtMTg4OyB0eXBlZGVmIFAxODkgaXRlbTE4OTsgdHlwZWRlZiBQMTkwIGl0ZW0xOTA7IHR5cGVkZWYgUDE5MSBpdGVtMTkxOyB0eXBlZGVmIFAxOTIgaXRlbTE5MjsgdHlwZWRlZiBQMTkzIGl0ZW0xOTM7IHR5cGVkZWYgUDE5NCBpdGVtMTk0OyB0eXBlZGVmIFAxOTUgaXRlbTE5NTsgdHlwZWRlZiBQMTk2IGl0ZW0xOTY7IHR5cGVkZWYgUDE5NyBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBQMTg0ICwgY2xhc3MgUDE4NSAsIGNsYXNzIFAxODYgLCBjbGFzcyBQMTg3ICwgY2xhc3MgUDE4OCAsIGNsYXNzIFAxODkgLCBjbGFzcyBQMTkwICwgY2xhc3MgUDE5MSAsIGNsYXNzIFAxOTIgLCBjbGFzcyBQMTkzICwgY2xhc3MgUDE5NCAsIGNsYXNzIFAxOTUgLCBjbGFzcyBQMTk2ICwgY2xhc3MgUDE5NyAsIGNsYXNzIFAxOTggPiBzdHJ1Y3QgdmVjdG9yMTk5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTk5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBQMTg4ICwgUDE4OSAsIFAxOTAgLCBQMTkxICwgUDE5MiAsIFAxOTMgLCBQMTk0ICwgUDE5NSAsIFAxOTYgLCBQMTk3ICwgUDE5OD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgUDE1OCBpdGVtMTU4OyB0eXBlZGVmIFAxNTkgaXRlbTE1OTsgdHlwZWRlZiBQMTYwIGl0ZW0xNjA7IHR5cGVkZWYgUDE2MSBpdGVtMTYxOyB0eXBlZGVmIFAxNjIgaXRlbTE2MjsgdHlwZWRlZiBQMTYzIGl0ZW0xNjM7IHR5cGVkZWYgUDE2NCBpdGVtMTY0OyB0eXBlZGVmIFAxNjUgaXRlbTE2NTsgdHlwZWRlZiBQMTY2IGl0ZW0xNjY7IHR5cGVkZWYgUDE2NyBpdGVtMTY3OyB0eXBlZGVmIFAxNjggaXRlbTE2ODsgdHlwZWRlZiBQMTY5IGl0ZW0xNjk7IHR5cGVkZWYgUDE3MCBpdGVtMTcwOyB0eXBlZGVmIFAxNzEgaXRlbTE3MTsgdHlwZWRlZiBQMTcyIGl0ZW0xNzI7IHR5cGVkZWYgUDE3MyBpdGVtMTczOyB0eXBlZGVmIFAxNzQgaXRlbTE3NDsgdHlwZWRlZiBQMTc1IGl0ZW0xNzU7IHR5cGVkZWYgUDE3NiBpdGVtMTc2OyB0eXBlZGVmIFAxNzcgaXRlbTE3NzsgdHlwZWRlZiBQMTc4IGl0ZW0xNzg7IHR5cGVkZWYgUDE3OSBpdGVtMTc5OyB0eXBlZGVmIFAxODAgaXRlbTE4MDsgdHlwZWRlZiBQMTgxIGl0ZW0xODE7IHR5cGVkZWYgUDE4MiBpdGVtMTgyOyB0eXBlZGVmIFAxODMgaXRlbTE4MzsgdHlwZWRlZiBQMTg0IGl0ZW0xODQ7IHR5cGVkZWYgUDE4NSBpdGVtMTg1OyB0eXBlZGVmIFAxODYgaXRlbTE4NjsgdHlwZWRlZiBQMTg3IGl0ZW0xODc7IHR5cGVkZWYgUDE4OCBpdGVtMTg4OyB0eXBlZGVmIFAxODkgaXRlbTE4OTsgdHlwZWRlZiBQMTkwIGl0ZW0xOTA7IHR5cGVkZWYgUDE5MSBpdGVtMTkxOyB0eXBlZGVmIFAxOTIgaXRlbTE5MjsgdHlwZWRlZiBQMTkzIGl0ZW0xOTM7IHR5cGVkZWYgUDE5NCBpdGVtMTk0OyB0eXBlZGVmIFAxOTUgaXRlbTE5NTsgdHlwZWRlZiBQMTk2IGl0ZW0xOTY7IHR5cGVkZWYgUDE5NyBpdGVtMTk3OyB0eXBlZGVmIFAxOTggaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzICwgY2xhc3MgUDE4NCAsIGNsYXNzIFAxODUgLCBjbGFzcyBQMTg2ICwgY2xhc3MgUDE4NyAsIGNsYXNzIFAxODggLCBjbGFzcyBQMTg5ICwgY2xhc3MgUDE5MCAsIGNsYXNzIFAxOTEgLCBjbGFzcyBQMTkyICwgY2xhc3MgUDE5MyAsIGNsYXNzIFAxOTQgLCBjbGFzcyBQMTk1ICwgY2xhc3MgUDE5NiAsIGNsYXNzIFAxOTcgLCBjbGFzcyBQMTk4ICwgY2xhc3MgUDE5OSA+IHN0cnVjdCB2ZWN0b3IyMDAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyMDA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MCAsIFAxOTEgLCBQMTkyICwgUDE5MyAsIFAxOTQgLCBQMTk1ICwgUDE5NiAsIFAxOTcgLCBQMTk4ICwgUDE5OT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIFAxNTAgaXRlbTE1MDsgdHlwZWRlZiBQMTUxIGl0ZW0xNTE7IHR5cGVkZWYgUDE1MiBpdGVtMTUyOyB0eXBlZGVmIFAxNTMgaXRlbTE1MzsgdHlwZWRlZiBQMTU0IGl0ZW0xNTQ7IHR5cGVkZWYgUDE1NSBpdGVtMTU1OyB0eXBlZGVmIFAxNTYgaXRlbTE1NjsgdHlwZWRlZiBQMTU3IGl0ZW0xNTc7IHR5cGVkZWYgUDE1OCBpdGVtMTU4OyB0eXBlZGVmIFAxNTkgaXRlbTE1OTsgdHlwZWRlZiBQMTYwIGl0ZW0xNjA7IHR5cGVkZWYgUDE2MSBpdGVtMTYxOyB0eXBlZGVmIFAxNjIgaXRlbTE2MjsgdHlwZWRlZiBQMTYzIGl0ZW0xNjM7IHR5cGVkZWYgUDE2NCBpdGVtMTY0OyB0eXBlZGVmIFAxNjUgaXRlbTE2NTsgdHlwZWRlZiBQMTY2IGl0ZW0xNjY7IHR5cGVkZWYgUDE2NyBpdGVtMTY3OyB0eXBlZGVmIFAxNjggaXRlbTE2ODsgdHlwZWRlZiBQMTY5IGl0ZW0xNjk7IHR5cGVkZWYgUDE3MCBpdGVtMTcwOyB0eXBlZGVmIFAxNzEgaXRlbTE3MTsgdHlwZWRlZiBQMTcyIGl0ZW0xNzI7IHR5cGVkZWYgUDE3MyBpdGVtMTczOyB0eXBlZGVmIFAxNzQgaXRlbTE3NDsgdHlwZWRlZiBQMTc1IGl0ZW0xNzU7IHR5cGVkZWYgUDE3NiBpdGVtMTc2OyB0eXBlZGVmIFAxNzcgaXRlbTE3NzsgdHlwZWRlZiBQMTc4IGl0ZW0xNzg7IHR5cGVkZWYgUDE3OSBpdGVtMTc5OyB0eXBlZGVmIFAxODAgaXRlbTE4MDsgdHlwZWRlZiBQMTgxIGl0ZW0xODE7IHR5cGVkZWYgUDE4MiBpdGVtMTgyOyB0eXBlZGVmIFAxODMgaXRlbTE4MzsgdHlwZWRlZiBQMTg0IGl0ZW0xODQ7IHR5cGVkZWYgUDE4NSBpdGVtMTg1OyB0eXBlZGVmIFAxODYgaXRlbTE4NjsgdHlwZWRlZiBQMTg3IGl0ZW0xODc7IHR5cGVkZWYgUDE4OCBpdGVtMTg4OyB0eXBlZGVmIFAxODkgaXRlbTE4OTsgdHlwZWRlZiBQMTkwIGl0ZW0xOTA7IHR5cGVkZWYgUDE5MSBpdGVtMTkxOyB0eXBlZGVmIFAxOTIgaXRlbTE5MjsgdHlwZWRlZiBQMTkzIGl0ZW0xOTM7IHR5cGVkZWYgUDE5NCBpdGVtMTk0OyB0eXBlZGVmIFAxOTUgaXRlbTE5NTsgdHlwZWRlZiBQMTk2IGl0ZW0xOTY7IHR5cGVkZWYgUDE5NyBpdGVtMTk3OyB0eXBlZGVmIFAxOTggaXRlbTE5ODsgdHlwZWRlZiBQMTk5IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci19fQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHR5cGVfb2YgewotICAgIHRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2sgewotICAgICAgICB0eXBlZGVmIFYgdHlwZTsKLSAgICB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMDw+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE8IFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxPCBQMD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjwgUDAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyPCBQMCAsIFAxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzPCBQMCAsIFAxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzPCBQMCAsIFAxICwgUDI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ8IFAwICwgUDEgLCBQMiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0PCBQMCAsIFAxICwgUDIgLCBQMz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTAzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTA2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTA5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTEyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTE1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTE4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTIxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTI0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTI3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTMwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTMzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTM2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTM5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0Mz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQ1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0Nj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQ4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE1MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTUxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE1MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE1MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE1MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE1MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1Mj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTU0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE1NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE1NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE1NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE1NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTU3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE1NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE1ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE1ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE1OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTYwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE2MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE2MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE2MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNjI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE2MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTYzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE2MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE2NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE2NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE2NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2ND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTY2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE2NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE2NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE2NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE2ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2Nz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTY5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE2OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE3MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE3MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNzE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE3MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTcyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE3MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE3MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE3MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNzQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE3NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3Mz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTc1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE3NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE3NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE3NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNzc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE3NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3Nj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTc4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE3ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE3OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE3OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxODA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE4MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTgxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE4MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE4MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE4MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxODM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE4MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4Mj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTg0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE4NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE4NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzICwgY2xhc3MgUDE4NCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE4NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxODY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBQMTg0ICwgY2xhc3MgUDE4NSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE4NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTg3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFAxODQgLCBjbGFzcyBQMTg1ICwgY2xhc3MgUDE4NiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE4NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE4ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzICwgY2xhc3MgUDE4NCAsIGNsYXNzIFAxODUgLCBjbGFzcyBQMTg2ICwgY2xhc3MgUDE4NyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE4ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxODk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBQMTg0ICwgY2xhc3MgUDE4NSAsIGNsYXNzIFAxODYgLCBjbGFzcyBQMTg3ICwgY2xhc3MgUDE4OCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE4OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgUDE4OD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTkwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBQMTg4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFAxODQgLCBjbGFzcyBQMTg1ICwgY2xhc3MgUDE4NiAsIGNsYXNzIFAxODcgLCBjbGFzcyBQMTg4ICwgY2xhc3MgUDE4OSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE5MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgUDE4OCAsIFAxODk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE5MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgUDE4OCAsIFAxODkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzICwgY2xhc3MgUDE4NCAsIGNsYXNzIFAxODUgLCBjbGFzcyBQMTg2ICwgY2xhc3MgUDE4NyAsIGNsYXNzIFAxODggLCBjbGFzcyBQMTg5ICwgY2xhc3MgUDE5MCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE5MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgUDE4OCAsIFAxODkgLCBQMTkwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxOTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBQMTg0ICwgY2xhc3MgUDE4NSAsIGNsYXNzIFAxODYgLCBjbGFzcyBQMTg3ICwgY2xhc3MgUDE4OCAsIGNsYXNzIFAxODkgLCBjbGFzcyBQMTkwICwgY2xhc3MgUDE5MSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE5MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgUDE4OCAsIFAxODkgLCBQMTkwICwgUDE5MT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTkzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBQMTg4ICwgUDE4OSAsIFAxOTAgLCBQMTkxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFAxODQgLCBjbGFzcyBQMTg1ICwgY2xhc3MgUDE4NiAsIGNsYXNzIFAxODcgLCBjbGFzcyBQMTg4ICwgY2xhc3MgUDE4OSAsIGNsYXNzIFAxOTAgLCBjbGFzcyBQMTkxICwgY2xhc3MgUDE5MiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE5MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgUDE4OCAsIFAxODkgLCBQMTkwICwgUDE5MSAsIFAxOTI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE5NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgUDE4OCAsIFAxODkgLCBQMTkwICwgUDE5MSAsIFAxOTIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzICwgY2xhc3MgUDE4NCAsIGNsYXNzIFAxODUgLCBjbGFzcyBQMTg2ICwgY2xhc3MgUDE4NyAsIGNsYXNzIFAxODggLCBjbGFzcyBQMTg5ICwgY2xhc3MgUDE5MCAsIGNsYXNzIFAxOTEgLCBjbGFzcyBQMTkyICwgY2xhc3MgUDE5MyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE5NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgUDE4OCAsIFAxODkgLCBQMTkwICwgUDE5MSAsIFAxOTIgLCBQMTkzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxOTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MCAsIFAxOTEgLCBQMTkyICwgUDE5MyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBQMTg0ICwgY2xhc3MgUDE4NSAsIGNsYXNzIFAxODYgLCBjbGFzcyBQMTg3ICwgY2xhc3MgUDE4OCAsIGNsYXNzIFAxODkgLCBjbGFzcyBQMTkwICwgY2xhc3MgUDE5MSAsIGNsYXNzIFAxOTIgLCBjbGFzcyBQMTkzICwgY2xhc3MgUDE5NCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE5NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgUDE4OCAsIFAxODkgLCBQMTkwICwgUDE5MSAsIFAxOTIgLCBQMTkzICwgUDE5ND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTk2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBQMTg4ICwgUDE4OSAsIFAxOTAgLCBQMTkxICwgUDE5MiAsIFAxOTMgLCBQMTk0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFAxODQgLCBjbGFzcyBQMTg1ICwgY2xhc3MgUDE4NiAsIGNsYXNzIFAxODcgLCBjbGFzcyBQMTg4ICwgY2xhc3MgUDE4OSAsIGNsYXNzIFAxOTAgLCBjbGFzcyBQMTkxICwgY2xhc3MgUDE5MiAsIGNsYXNzIFAxOTMgLCBjbGFzcyBQMTk0ICwgY2xhc3MgUDE5NSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE5NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgUDE4OCAsIFAxODkgLCBQMTkwICwgUDE5MSAsIFAxOTIgLCBQMTkzICwgUDE5NCAsIFAxOTU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE5NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgUDE4OCAsIFAxODkgLCBQMTkwICwgUDE5MSAsIFAxOTIgLCBQMTkzICwgUDE5NCAsIFAxOTUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzICwgY2xhc3MgUDE4NCAsIGNsYXNzIFAxODUgLCBjbGFzcyBQMTg2ICwgY2xhc3MgUDE4NyAsIGNsYXNzIFAxODggLCBjbGFzcyBQMTg5ICwgY2xhc3MgUDE5MCAsIGNsYXNzIFAxOTEgLCBjbGFzcyBQMTkyICwgY2xhc3MgUDE5MyAsIGNsYXNzIFAxOTQgLCBjbGFzcyBQMTk1ICwgY2xhc3MgUDE5NiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE5NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgUDE4OCAsIFAxODkgLCBQMTkwICwgUDE5MSAsIFAxOTIgLCBQMTkzICwgUDE5NCAsIFAxOTUgLCBQMTk2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxOTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MCAsIFAxOTEgLCBQMTkyICwgUDE5MyAsIFAxOTQgLCBQMTk1ICwgUDE5NiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBQMTg0ICwgY2xhc3MgUDE4NSAsIGNsYXNzIFAxODYgLCBjbGFzcyBQMTg3ICwgY2xhc3MgUDE4OCAsIGNsYXNzIFAxODkgLCBjbGFzcyBQMTkwICwgY2xhc3MgUDE5MSAsIGNsYXNzIFAxOTIgLCBjbGFzcyBQMTkzICwgY2xhc3MgUDE5NCAsIGNsYXNzIFAxOTUgLCBjbGFzcyBQMTk2ICwgY2xhc3MgUDE5NyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE5ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgUDE4OCAsIFAxODkgLCBQMTkwICwgUDE5MSAsIFAxOTIgLCBQMTkzICwgUDE5NCAsIFAxOTUgLCBQMTk2ICwgUDE5Nz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTk5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBQMTg4ICwgUDE4OSAsIFAxOTAgLCBQMTkxICwgUDE5MiAsIFAxOTMgLCBQMTk0ICwgUDE5NSAsIFAxOTYgLCBQMTk3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFAxODQgLCBjbGFzcyBQMTg1ICwgY2xhc3MgUDE4NiAsIGNsYXNzIFAxODcgLCBjbGFzcyBQMTg4ICwgY2xhc3MgUDE4OSAsIGNsYXNzIFAxOTAgLCBjbGFzcyBQMTkxICwgY2xhc3MgUDE5MiAsIGNsYXNzIFAxOTMgLCBjbGFzcyBQMTk0ICwgY2xhc3MgUDE5NSAsIGNsYXNzIFAxOTYgLCBjbGFzcyBQMTk3ICwgY2xhc3MgUDE5OCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE5OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgUDE4OCAsIFAxODkgLCBQMTkwICwgUDE5MSAsIFAxOTIgLCBQMTkzICwgUDE5NCAsIFAxOTUgLCBQMTk2ICwgUDE5NyAsIFAxOTg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjIwMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgUDE4OCAsIFAxODkgLCBQMTkwICwgUDE5MSAsIFAxOTIgLCBQMTkzICwgUDE5NCAsIFAxOTUgLCBQMTk2ICwgUDE5NyAsIFAxOTggLCBUID4gdHlwZTsgfTsKLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi92ZWN0b3I1MC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi92ZWN0b3I1MC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwNDFjZTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdmVjdG9yNTAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTcxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IChDKSAyMDA1IEFya2FkaXkgVmVydGxleWIKLS8vIENvcHlyaWdodCAoQykgMjAwNSBQZWRlciBIb2x0Ci0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8gUHJlcHJvY2Vzc2VkIGNvZGUsIGRvIG5vdCBlZGl0IG1hbnVhbGx5ICEKLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdHlwZV9vZiB7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgViwgY2xhc3MgSW5jcmVhc2VfTkROQk9PU1RfVFlQRU9GX0xJTUlUX1NJWkU+IHN0cnVjdCB2X2l0ZXI7Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0wIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Mj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxOT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxOSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MjA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yMCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDIxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDIxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyMj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTIyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyMiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MjM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yMyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDI0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDI0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyNT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTI1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyNSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MjY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yNiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDI3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDI3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyOD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTI4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyOCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Mjk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yOSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDMwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDMwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzMT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTMxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzMSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MzI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zMiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDMzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDMzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTM0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzNCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MzU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zNSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDM2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDM2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzNz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTM3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzNyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Mzg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zOCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDM5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDM5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0MD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0MCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00MSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0Mz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0MyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00NCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0Nj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQ2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0NiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00NyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0OT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQ5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0OSArIDE+ID4gbmV4dDsgfTsKLX19Ci1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdHlwZV9vZiB7Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBUID0gdm9pZD4gc3RydWN0IHZlY3RvcjAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IwPD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCA+IHN0cnVjdCB2ZWN0b3IxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTwgUDA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxID4gc3RydWN0IHZlY3RvcjIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyPCBQMCAsIFAxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgPiBzdHJ1Y3QgdmVjdG9yMyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjM8IFAwICwgUDEgLCBQMj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyA+IHN0cnVjdCB2ZWN0b3I0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDwgUDAgLCBQMSAsIFAyICwgUDM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ID4gc3RydWN0IHZlY3RvcjUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgPiBzdHJ1Y3QgdmVjdG9yNiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiA+IHN0cnVjdCB2ZWN0b3I3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ID4gc3RydWN0IHZlY3RvcjggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggPiBzdHJ1Y3QgdmVjdG9yOSB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSA+IHN0cnVjdCB2ZWN0b3IxMCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwID4gc3RydWN0IHZlY3RvcjExIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgPiBzdHJ1Y3QgdmVjdG9yMTIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiA+IHN0cnVjdCB2ZWN0b3IxMyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzID4gc3RydWN0IHZlY3RvcjE0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgPiBzdHJ1Y3QgdmVjdG9yMTUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSA+IHN0cnVjdCB2ZWN0b3IxNiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ID4gc3RydWN0IHZlY3RvcjE3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgPiBzdHJ1Y3QgdmVjdG9yMTggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCA+IHN0cnVjdCB2ZWN0b3IxOSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ID4gc3RydWN0IHZlY3RvcjIwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgPiBzdHJ1Y3QgdmVjdG9yMjEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSA+IHN0cnVjdCB2ZWN0b3IyMiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjIyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyID4gc3RydWN0IHZlY3RvcjIzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgPiBzdHJ1Y3QgdmVjdG9yMjQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCA+IHN0cnVjdCB2ZWN0b3IyNSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjI1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ID4gc3RydWN0IHZlY3RvcjI2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgPiBzdHJ1Y3QgdmVjdG9yMjcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyA+IHN0cnVjdCB2ZWN0b3IyOCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjI4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ID4gc3RydWN0IHZlY3RvcjI5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgPiBzdHJ1Y3QgdmVjdG9yMzAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCA+IHN0cnVjdCB2ZWN0b3IzMSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjMxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxID4gc3RydWN0IHZlY3RvcjMyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgPiBzdHJ1Y3QgdmVjdG9yMzMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyA+IHN0cnVjdCB2ZWN0b3IzNCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjM0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ID4gc3RydWN0IHZlY3RvcjM1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgPiBzdHJ1Y3QgdmVjdG9yMzYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiA+IHN0cnVjdCB2ZWN0b3IzNyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjM3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ID4gc3RydWN0IHZlY3RvcjM4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggPiBzdHJ1Y3QgdmVjdG9yMzkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSA+IHN0cnVjdCB2ZWN0b3I0MCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwID4gc3RydWN0IHZlY3RvcjQxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgPiBzdHJ1Y3QgdmVjdG9yNDIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiA+IHN0cnVjdCB2ZWN0b3I0MyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0Mj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzID4gc3RydWN0IHZlY3RvcjQ0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgPiBzdHJ1Y3QgdmVjdG9yNDUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSA+IHN0cnVjdCB2ZWN0b3I0NiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQ2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ID4gc3RydWN0IHZlY3RvcjQ3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgPiBzdHJ1Y3QgdmVjdG9yNDggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCA+IHN0cnVjdCB2ZWN0b3I0OSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQ5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ID4gc3RydWN0IHZlY3RvcjUwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotfX0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB0eXBlX29mIHsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrIHsKLSAgICAgICAgdHlwZWRlZiBWIHR5cGU7Ci0gICAgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjA8PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxPCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTwgUDA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI8IFAwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjwgUDAgLCBQMT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzwgUDAgLCBQMSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzwgUDAgLCBQMSAsIFAyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0PCBQMCAsIFAxICwgUDIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDwgUDAgLCBQMSAsIFAyICwgUDM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU8IFAwICwgUDEgLCBQMiAsIFAzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjIwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjIxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjIyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjIzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjMwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjMxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjMyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjMzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0Mj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0Mz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0ND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0Nj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0Nz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgVCA+IHR5cGU7IH07Ci19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC91bml0cy9kZXRhaWwvdXRpbGl0eS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3VuaXRzL2RldGFpbC91dGlsaXR5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGVlZWJjMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3VuaXRzL2RldGFpbC91dGlsaXR5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNCArMCwwIEBACi0vLyBCb29zdC5Vbml0cyAtIEEgQysrIGxpYnJhcnkgZm9yIHplcm8tb3ZlcmhlYWQgZGltZW5zaW9uYWwgYW5hbHlzaXMgYW5kIAotLy8gdW5pdC9xdWFudGl0eSBtYW5pcHVsYXRpb24gYW5kIGNvbnZlcnNpb24KLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBNYXR0aGlhcyBDaHJpc3RpYW4gU2NoYWJlbAotLy8gQ29weXJpZ2h0IChDKSAyMDA4IFN0ZXZlbiBXYXRhbmFiZQotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9VTklUU19VVElMSVRZX0hQUAotI2RlZmluZSBORE5CT09TVF9VTklUU19VVElMSVRZX0hQUAotCi0jaW5jbHVkZSA8Y3N0ZGxpYj4KLSNpbmNsdWRlIDx0eXBlaW5mbz4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0KLSNpZiBkZWZpbmVkKF9fR0xJQkNYWF9fKSB8fCBkZWZpbmVkKF9fR0xJQkNQUF9fKQotI2RlZmluZSBORE5CT09TVF9VTklUU19VU0VfREVNQU5HTElORwotI2luY2x1ZGUgPGN4eGFiaS5oPgotI2VuZGlmIC8vIF9fR05VQ19fCi0KLSNpZmRlZiBORE5CT09TVF9VTklUU19VU0VfREVNQU5HTElORwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9yZXBsYWNlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRzIHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLWlubGluZQotc3RkOjpzdHJpbmcKLWRlbWFuZ2xlKGNvbnN0IGNoYXIqIG5hbWUpCi17Ci0gICAgLy8gbmVlZCB0byBkZW1hbmdsZSBDKysgc3ltYm9scwotICAgIGNoYXIqICAgICAgIHJlYWxuYW1lOwotICAgIHN0ZDo6c2l6ZV90IGxlbjsgCi0gICAgaW50ICAgICAgICAgc3RhdDsKLSAgICAgCi0gICAgcmVhbG5hbWUgPSBhYmk6Ol9fY3hhX2RlbWFuZ2xlKG5hbWUsTlVMTCwmbGVuLCZzdGF0KTsKLSAgICAKLSAgICBpZiAocmVhbG5hbWUgIT0gTlVMTCkKLSAgICB7Ci0gICAgICAgIHN0ZDo6c3RyaW5nICAgb3V0KHJlYWxuYW1lKTsKLSAgICAgICAgCi0gICAgICAgIHN0ZDo6ZnJlZShyZWFsbmFtZSk7Ci0gICAgICAgIAotICAgICAgICBuZG5ib29zdDo6cmVwbGFjZV9hbGwob3V0LCJuZG5ib29zdDo6dW5pdHM6OiIsIiIpOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIG91dDsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCJkZW1hbmdsZSA6OiBlcnJvciAtIHVuYWJsZSB0byBkZW1hbmdsZSBzcGVjaWZpZWQgc3ltYm9sIik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi10ZW1wbGF0ZTxjbGFzcyBMPgotc3RkOjpzdHJpbmcgc2ltcGxpZnlfdHlwZW5hbWUoY29uc3QgTCYgLypzb3VyY2UqLykKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAgIGRlbWFuZ2xlZCA9IGRldGFpbDo6ZGVtYW5nbGUodHlwZWlkKEwpLm5hbWUoKSk7Ci0KLSAgICByZXR1cm4gZGVtYW5nbGVkOwotfQotCi19IC8vIG5hbWVzcGFjZSB1bml0cwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZWxzZSAvLyBORE5CT09TVF9VTklUU19VU0VfREVNQU5HTElORwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdHMgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotaW5saW5lCi1zdGQ6OnN0cmluZwotZGVtYW5nbGUoY29uc3QgY2hhciogbmFtZSkKLXsKLSAgICByZXR1cm4gbmFtZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLXRlbXBsYXRlPGNsYXNzIEw+Ci1zdGQ6OnN0cmluZyBzaW1wbGlmeV90eXBlbmFtZShjb25zdCBMJiAvKnNvdXJjZSovKQotewotICAgIHJldHVybiBzdGQ6OnN0cmluZyh0eXBlaWQoTCkubmFtZSgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgdW5pdHMKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy8gVG8gZ2V0IHN5c3RlbS1zcGVjaWZpYyBwcmVkZWZpbmVkIG1hY3JvczoKLS8vIGdjYyAtYXJjaCBwcGMgLWRNIC1FIC0gPCAvZGV2L251bGwgfCBzb3J0IAotCi0jZW5kaWYgLy8gTkROQk9PU1RfVU5JVFNfVVNFX0RFTUFOR0xJTkcKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1VOSVRTX1VUSUxJVFlfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvYWxsb2NhdGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL2FsbG9jYXRlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGQ2YThlZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvYWxsb2NhdGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTEyMCArMCwwIEBACi0KLS8vIENvcHlyaWdodCAyMDA1LTIwMTEgRGFuaWVsIEphbWVzLgotLy8gQ29weXJpZ2h0IDIwMDkgUGFibG8gSGFscGVybi4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdW5vcmRlcmVkIGZvciBkb2N1bWVudGF0aW9uCi0KLSNpZm5kZWYgTkROQk9PU1RfVU5PUkRFUkVEX0FMTE9DQVRFX0hQUAotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfQUxMT0NBVEVfSFBQCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21vdmUvbW92ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2luYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fYmluYXJ5X3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vcmVwZWF0X2Zyb21fdG8uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NsYXNzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfbHZhbHVlX3JlZmVyZW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHVwbGUvdHVwbGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZW5hYmxlX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2FkZHJlc3NvZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3NlbGVjdF90eXBlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPHV0aWxpdHk+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfVFVQTEUpCi0jaW5jbHVkZSA8dHVwbGU+Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDUxMikgLy8gYXNzaWdubWVudCBvcGVyYXRvciBjb3VsZCBub3QgYmUgZ2VuZXJhdGVkLgotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDM0NSkgLy8gYmVoYXZpb3IgY2hhbmdlOiBhbiBvYmplY3Qgb2YgUE9EIHR5cGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnN0cnVjdGVkIHdpdGggYW4gaW5pdGlhbGl6ZXIgb2YgdGhlIGZvcm0gKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgYmUgZGVmYXVsdC1pbml0aWFsaXplZC4KLSNlbmRpZgotCi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX0xJTUlUIDEwCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB1bm9yZGVyZWQgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAvLyBCaXRzIGFuZCBwaWVjZXMgZm9yIGltcGxlbWVudGluZyB0cmFpdHMKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB0eXBlbmFtZSBuZG5ib29zdDo6YWRkX2x2YWx1ZV9yZWZlcmVuY2U8VD46OnR5cGUgbWFrZSgpOwotICAgIHN0cnVjdCBjaG9pY2U5IHsgdHlwZWRlZiBjaGFyICgmdHlwZSlbOV07IH07Ci0gICAgc3RydWN0IGNob2ljZTggOiBjaG9pY2U5IHsgdHlwZWRlZiBjaGFyICgmdHlwZSlbOF07IH07Ci0gICAgc3RydWN0IGNob2ljZTcgOiBjaG9pY2U4IHsgdHlwZWRlZiBjaGFyICgmdHlwZSlbN107IH07Ci0gICAgc3RydWN0IGNob2ljZTYgOiBjaG9pY2U3IHsgdHlwZWRlZiBjaGFyICgmdHlwZSlbNl07IH07Ci0gICAgc3RydWN0IGNob2ljZTUgOiBjaG9pY2U2IHsgdHlwZWRlZiBjaGFyICgmdHlwZSlbNV07IH07Ci0gICAgc3RydWN0IGNob2ljZTQgOiBjaG9pY2U1IHsgdHlwZWRlZiBjaGFyICgmdHlwZSlbNF07IH07Ci0gICAgc3RydWN0IGNob2ljZTMgOiBjaG9pY2U0IHsgdHlwZWRlZiBjaGFyICgmdHlwZSlbM107IH07Ci0gICAgc3RydWN0IGNob2ljZTIgOiBjaG9pY2UzIHsgdHlwZWRlZiBjaGFyICgmdHlwZSlbMl07IH07Ci0gICAgc3RydWN0IGNob2ljZTEgOiBjaG9pY2UyIHsgdHlwZWRlZiBjaGFyICgmdHlwZSlbMV07IH07Ci0gICAgY2hvaWNlMSBjaG9vc2UoKTsKLQotICAgIHR5cGVkZWYgY2hvaWNlMTo6dHlwZSB5ZXNfdHlwZTsKLSAgICB0eXBlZGVmIGNob2ljZTI6OnR5cGUgbm9fdHlwZTsKLQotICAgIHN0cnVjdCBwcml2YXRlX3R5cGUKLSAgICB7Ci0gICAgICAgcHJpdmF0ZV90eXBlIGNvbnN0ICZvcGVyYXRvciwoaW50KSBjb25zdDsKLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgbm9fdHlwZSBpc19wcml2YXRlX3R5cGUoVCBjb25zdCYpOwotICAgIHllc190eXBlIGlzX3ByaXZhdGVfdHlwZShwcml2YXRlX3R5cGUgY29uc3QmKTsKLQotICAgIHN0cnVjdCBjb252ZXJ0X2Zyb21fYW55dGhpbmcgewotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICAgICAgY29udmVydF9mcm9tX2FueXRoaW5nKFQgY29uc3QmKTsKLSAgICB9OwotCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vIGVtcGxhY2VfYXJncwotICAgIC8vCi0gICAgLy8gRWl0aGVyIGZvcndhcmRpbmcgdmFyaWFkaWMgYXJndW1lbnRzLCBvciBzdG9yaW5nIHRoZSBhcmd1bWVudHMgaW4KLSAgICAvLyBlbXBsYWNlX2FyZ3MjI24KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUykKLQotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9URU1QTEFURSB0eXBlbmFtZS4uLiBBcmdzCi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX0FSR1MgTkROQk9PU1RfRldEX1JFRihBcmdzKS4uLiBhcmdzCi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX0ZPUldBUkQgbmRuYm9vc3Q6OmZvcndhcmQ8QXJncz4oYXJncykuLi4KLQotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9BUkdTMShhMCkgYTAKLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfQVJHUzIoYTAsIGExKSBhMCwgYTEKLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfQVJHUzMoYTAsIGExLCBhMikgYTAsIGExLCBhMgotCi0jZWxzZQotCi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX1RFTVBMQVRFIHR5cGVuYW1lIEFyZ3MKLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfQVJHUyBBcmdzIGNvbnN0JiBhcmdzCi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX0ZPUldBUkQgYXJncwotCi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9GV0RfUEFSQU0oeiwgbiwgYSkgXAotICAgIE5ETkJPT1NUX0ZXRF9SRUYoTkROQk9PU1RfUFBfQ0FUKEEsIG4pKSBORE5CT09TVF9QUF9DQVQoYSwgbikKLQotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfQ0FMTF9GT1JXQVJEKHosIGksIGEpIFwKLSAgICBuZG5ib29zdDo6Zm9yd2FyZDxORE5CT09TVF9QUF9DQVQoQSxpKT4oTkROQk9PU1RfUFBfQ0FUKGEsaSkpCi0KLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0VBUkdTKHosIG4sIF8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdGVtcGxhdGUgPE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1ooeiwgbiwgdHlwZW5hbWUgQSk+ICAgICAgICAgICAgICAgICAgICAgXAotICAgIHN0cnVjdCBORE5CT09TVF9QUF9DQVQoZW1wbGFjZV9hcmdzLCBuKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX1BQX1JFUEVBVF8jI3oobiwgTkROQk9PU1RfVU5PUkRFUkVEX0VBUkdTX01FTUJFUiwgXykgICAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9QUF9DQVQoZW1wbGFjZV9hcmdzLCBuKSAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNU19aKHosIG4sIEFyZywgYikgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICkgOiBORE5CT09TVF9QUF9FTlVNXyMjeihuLCBORE5CT09TVF9VTk9SREVSRURfRUFSR1NfSU5JVCwgXykgICAgICAgICAgICAgXAotICAgICAgICB7fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZSA8TkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfWih6LCBuLCB0eXBlbmFtZSBBKT4gICAgICAgICAgICAgICAgICAgICBcCi0gICAgaW5saW5lIE5ETkJPT1NUX1BQX0NBVChlbXBsYWNlX2FyZ3MsIG4pIDwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNU19aKHosIG4sIEEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICA+IGNyZWF0ZV9lbXBsYWNlX2FyZ3MoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fIyN6KG4sIE5ETkJPT1NUX1VOT1JERVJFRF9GV0RfUEFSQU0sIGIpICAgICAgICAgICAgICAgICAgXAotICAgICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX1BQX0NBVChlbXBsYWNlX2FyZ3MsIG4pIDwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfWih6LCBuLCBBKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgPiBlKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1ooeiwgbiwgYikpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJldHVybiBlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0KLQotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9BUkdTMSBjcmVhdGVfZW1wbGFjZV9hcmdzCi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX0FSR1MyIGNyZWF0ZV9lbXBsYWNlX2FyZ3MKLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfQVJHUzMgY3JlYXRlX2VtcGxhY2VfYXJncwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUykKLQotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfRUFSR1NfTUVNQkVSKHosIG4sIF8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0eXBlZGVmIE5ETkJPT1NUX0ZXRF9SRUYoTkROQk9PU1RfUFBfQ0FUKEEsIG4pKSBORE5CT09TVF9QUF9DQVQoQXJnLCBuKTsgICAgICAgICBcCi0gICAgTkROQk9PU1RfUFBfQ0FUKEFyZywgbikgTkROQk9PU1RfUFBfQ0FUKGEsIG4pOwotCi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9FQVJHU19JTklUKHosIG4sIF8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1BQX0NBVChhLCBuKSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmQ8TkROQk9PU1RfUFBfQ0FUKEEsbik+KE5ETkJPT1NUX1BQX0NBVChiLCBuKSkpCi0KLSNlbHNlCi0KLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0VBUkdTX01FTUJFUih6LCBuLCBfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6YWRkX2x2YWx1ZV9yZWZlcmVuY2U8TkROQk9PU1RfUFBfQ0FUKEEsIG4pPjo6dHlwZSAgXAotICAgICAgICBORE5CT09TVF9QUF9DQVQoQXJnLCBuKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9QUF9DQVQoQXJnLCBuKSBORE5CT09TVF9QUF9DQVQoYSwgbik7Ci0KLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0VBUkdTX0lOSVQoeiwgbiwgXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfUFBfQ0FUKGEsIG4pKE5ETkJPT1NUX1BQX0NBVChiLCBuKSkKLQotI2VuZGlmCi0KLU5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPKDEsIE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX0xJTUlULCBORE5CT09TVF9VTk9SREVSRURfRUFSR1MsCi0gICAgXykKLQotI3VuZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9ERUZJTkVfRU1QTEFDRV9BUkdTCi0jdW5kZWYgTkROQk9PU1RfVU5PUkRFUkVEX0VBUkdTX01FTUJFUgotI3VuZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9FQVJHU19JTklUCi0KLSNlbmRpZgotCi19fX0KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyBQaWNrIHdoaWNoIHZlcnNpb24gb2YgYWxsb2NhdG9yX3RyYWl0cyB0byB1c2UKLS8vCi0vLyAwID0gT3duIHBhcnRpYWwgaW1wbGVtZW50YXRpb24KLS8vIDEgPSBzdGQ6OmFsbG9jYXRvcl90cmFpdHMKLS8vIDIgPSBuZG5ib29zdDo6Y29udGFpbmVyOjphbGxvY2F0b3JfdHJhaXRzCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9VTk9SREVSRURfVVNFX0FMTE9DQVRPUl9UUkFJVFMpCi0jICAgaWYgZGVmaW5lZChfX0dYWF9FWFBFUklNRU5UQUxfQ1hYMFhfXykgJiYgXAotICAgICAgICAgICAgKF9fR05VQ19fID4gNCB8fCAoX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA+PSA3KSkKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9VU0VfQUxMT0NBVE9SX1RSQUlUUyAwCi0jICAgZWxpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jICAgICAgIGlmIE5ETkJPT1NUX01TVkMgPCAxNDAwCi0gICAgICAgICAgICAvLyBVc2UgY29udGFpbmVyJ3MgYWxsb2NhdG9yX3RyYWl0cyBmb3Igb2xkZXIgdmVyc2lvbnMgb2YgVmlzdWFsCi0gICAgICAgICAgICAvLyBDKysgYXMgSSBkb24ndCB0ZXN0IHdpdGggdGhlbS4KLSMgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9VTk9SREVSRURfVVNFX0FMTE9DQVRPUl9UUkFJVFMgMgotIyAgICAgICBlbmRpZgotIyAgIGVuZGlmCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1VOT1JERVJFRF9VU0VfQUxMT0NBVE9SX1RSQUlUUykKLSMgICBkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX1VTRV9BTExPQ0FUT1JfVFJBSVRTIDAKLSNlbmRpZgotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIFNvbWUgdXRpbGl0aWVzIGZvciBpbXBsZW1lbnRpbmcgYWxsb2NhdG9yX3RyYWl0cywgYnV0IHVzZWZ1bCBlbHNld2hlcmUgc28KLS8vIHRoZXkncmUgYWx3YXlzIGRlZmluZWQuCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfVFlQRV9UUkFJVFMpCi0jICBpbmNsdWRlIDx0eXBlX3RyYWl0cz4KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdW5vcmRlcmVkIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8gSW50ZWdyYWxfY29uc3RyYW50LCB0cnVlX3R5cGUsIGZhbHNlX3R5cGUKLSAgICAvLwotICAgIC8vIFVzZXMgdGhlIHN0YW5kYXJkIHZlcnNpb25zIGlmIGF2YWlsYWJsZS4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9UWVBFX1RSQUlUUykKLQotICAgIHVzaW5nIHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ7Ci0gICAgdXNpbmcgc3RkOjp0cnVlX3R5cGU7Ci0gICAgdXNpbmcgc3RkOjpmYWxzZV90eXBlOwotCi0jZWxzZQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIFQgVmFsdWU+Ci0gICAgc3RydWN0IGludGVncmFsX2NvbnN0YW50IHsgZW51bSB7IHZhbHVlID0gVmFsdWUgfTsgfTsKLQotICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCB0cnVlPiB0cnVlX3R5cGU7Ci0gICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIGZhbHNlPiBmYWxzZV90eXBlOwotCi0jZW5kaWYKLQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAvLyBFeHBsaWNpdGx5IGNhbGwgYSBkZXN0cnVjdG9yCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMDApIC8vIHVucmVmZXJlbmNlZCBmb3JtYWwgcGFyYW1ldGVyCi0jZW5kaWYKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgIGlubGluZSB2b2lkIGRlc3Ryb3koVCogeCkgewotICAgICAgICB4LT5+VCgpOwotICAgIH0KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAvLyBFeHByZXNzaW9uIHRlc3QgbWVjaGFuaXNtCi0gICAgLy8KLSAgICAvLyBXaGVuIFNGSU5BRSBleHByZXNzaW9ucyBhcmUgYXZhaWxhYmxlLCBkZWZpbmUKLSAgICAvLyBORE5CT09TVF9VTk9SREVSRURfSEFTX0ZVTkNUSU9OIHdoaWNoIGNhbiBjaGVjayBpZiBhIGZ1bmN0aW9uIGNhbGwgaXMKLSAgICAvLyBzdXBwb3J0ZWQgYnkgYSBjbGFzcywgb3RoZXJ3aXNlIGRlZmluZSBORE5CT09TVF9VTk9SREVSRURfSEFTX01FTUJFUiB3aGljaAotICAgIC8vIGNhbiBkZXRlY3QgaWYgYSBjbGFzcyBoYXMgdGhlIHNwZWNpZmllZCBtZW1iZXIsIGJ1dCBub3QgdGhhdCBpdCBoYXMgdGhlCi0gICAgLy8gY29ycmVjdCB0eXBlLCB0aGlzIGlzIGdvb2QgZW5vdWdoIGZvciBhIHBhc3NhYmxlIGltcHJlc3Npb24gb2YKLSAgICAvLyBhbGxvY2F0b3JfdHJhaXRzLgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fU0ZJTkFFX0VYUFIpCi0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdW5zaWduZWQgaW50PiBzdHJ1Y3QgZXhwcl90ZXN0OwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgZXhwcl90ZXN0PFQsIHNpemVvZihjaGFyKT4gOiBUIHt9OwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBzdGF0aWMgY2hhciBmb3JfZXhwcl90ZXN0KFUgY29uc3QmKTsKLQotIyAgIGRlZmluZSBORE5CT09TVF9VTk9SREVSRURfQ0hFQ0tfRVhQUkVTU0lPTihjb3VudCwgcmVzdWx0LCBleHByZXNzaW9uKSAgICAgIFwKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHN0YXRpYyB0eXBlbmFtZSBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmV4cHJfdGVzdDwgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgTkROQk9PU1RfUFBfQ0FUKGNob2ljZSwgcmVzdWx0KSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHNpemVvZihuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmZvcl9leHByX3Rlc3QoKCAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgKGV4cHJlc3Npb24pLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgMCkpKT46OnR5cGUgdGVzdCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIE5ETkJPT1NUX1BQX0NBVChjaG9pY2UsIGNvdW50KSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9VTk9SREVSRURfREVGQVVMVF9FWFBSRVNTSU9OKGNvdW50LCByZXN1bHQpICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHN0YXRpYyBORE5CT09TVF9QUF9DQVQoY2hvaWNlLCByZXN1bHQpOjp0eXBlIHRlc3QoICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgTkROQk9PU1RfUFBfQ0FUKGNob2ljZSwgY291bnQpKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9IQVNfRlVOQ1RJT04obmFtZSwgdGhpbmcsIGFyZ3MsIF8pICAgICAgICAgICAgICAgXAotICAgIHN0cnVjdCBORE5CT09TVF9QUF9DQVQoaGFzXywgbmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX1VOT1JERVJFRF9DSEVDS19FWFBSRVNTSU9OKDEsIDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjptYWtlPCB0aGluZyA+KCkubmFtZSBhcmdzKTsgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfVU5PUkRFUkVEX0RFRkFVTFRfRVhQUkVTU0lPTigyLCAyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBlbnVtIHsgdmFsdWUgPSBzaXplb2YodGVzdDxUPihjaG9vc2UoKSkpID09IHNpemVvZihjaG9pY2UxOjp0eXBlKSB9O1wKLSAgICB9Ci0KLSNlbHNlCi0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IGlkZW50aXR5IHsgdHlwZWRlZiBUIHR5cGU7IH07Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0NIRUNLX01FTUJFUihjb3VudCwgcmVzdWx0LCBuYW1lLCBtZW1iZXIpICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjppZGVudGl0eTxtZW1iZXI+Ojp0eXBlICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfUFBfQ0FUKGNoZWNrLCBjb3VudCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlIDxORE5CT09TVF9QUF9DQVQoY2hlY2ssIGNvdW50KSBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBzdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKHRlc3QsIGNvdW50KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKGNob2ljZSwgcmVzdWx0KSB0eXBlOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdGVtcGxhdGUgPGNsYXNzIFU+IHN0YXRpYyB0eXBlbmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9QUF9DQVQodGVzdCwgY291bnQpPCZVOjpuYW1lPjo6dHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdGVzdChORE5CT09TVF9QUF9DQVQoY2hvaWNlLCBjb3VudCkpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0RFRkFVTFRfTUVNQkVSKGNvdW50LCByZXN1bHQpICAgICAgICAgICAgICAgICAgICBcCi0gICAgdGVtcGxhdGUgPGNsYXNzIFU+IHN0YXRpYyBORE5CT09TVF9QUF9DQVQoY2hvaWNlLCByZXN1bHQpOjp0eXBlICAgICAgICAgICAgXAotICAgICAgICB0ZXN0KE5ETkJPT1NUX1BQX0NBVChjaG9pY2UsIGNvdW50KSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9VTk9SREVSRURfSEFTX01FTUJFUihuYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBzdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKGhhc18sIG5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdHJ1Y3QgaW1wbCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHN0cnVjdCBiYXNlX21peGluIHsgaW50IG5hbWU7IH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBzdHJ1Y3QgYmFzZSA6IHB1YmxpYyBULCBwdWJsaWMgYmFzZV9taXhpbiB7fTsgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIE5ETkJPT1NUX1VOT1JERVJFRF9DSEVDS19NRU1CRVIoMSwgMSwgbmFtZSwgaW50IGJhc2VfbWl4aW46OiopOyAgICBcCi0gICAgICAgICAgICBORE5CT09TVF9VTk9SREVSRURfREVGQVVMVF9NRU1CRVIoMiwgMik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIGVudW0geyB2YWx1ZSA9IHNpemVvZihjaG9pY2UyOjp0eXBlKSA9PSAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgc2l6ZW9mKHRlc3Q8YmFzZT4oY2hvb3NlKCkpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBlbnVtIHsgdmFsdWUgPSBpbXBsOjp2YWx1ZSB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9Ci0KLSNlbmRpZgotCi19fX0KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyBBbGxvY2F0b3IgdHJhaXRzCi0vLwotLy8gRmlyc3Qgb3VyIGltcGxlbWVudGF0aW9uLCB0aGVuIGxhdGVyIGxpZ2h0IHdyYXBwZXJzIGFyb3VuZCB0aGUgYWx0ZXJuYXRpdmVzCi0KLSNpZiBORE5CT09TVF9VTk9SREVSRURfVVNFX0FMTE9DQVRPUl9UUkFJVFMgPT0gMAotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbGltaXRzLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2VuYWJsZV9pZi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcG9pbnRlcl90b19vdGhlci5ocHA+Ci0jICAgaWYgZGVmaW5lZChORE5CT09TVF9OT19TRklOQUVfRVhQUikKLSMgICAgICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0jICAgZW5kaWYKLQotIyAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUykgJiYgXAotICAgICAgICAhZGVmaW5lZChORE5CT09TVF9OT19TRklOQUVfRVhQUikKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9ERVRBSUxfRlVMTF9DT05TVFJVQ1QgMQotIyAgIGVsc2UKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9ERVRBSUxfRlVMTF9DT05TVFJVQ1QgMAotIyAgIGVuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB1bm9yZGVyZWQgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotICAgIC8vIFRPRE86IERvZXMgdGhpcyBtYXRjaCBzdGQ6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2M+OjpyZWJpbmRfYWxsb2M8VD4/Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBUPgotICAgIHN0cnVjdCByZWJpbmRfd3JhcAotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBbGxvYzo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIHJlYmluZDxUPjo6b3RoZXIgdHlwZTsKLSAgICB9OwotCi0jICAgaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiBORE5CT09TVF9NU1ZDIDw9IDE0MDAKLQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0RFRkFVTFRfVFlQRV9UTVBMVCh0bmFtZSkgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHAsIHR5cGVuYW1lIERlZmF1bHQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgc3RydWN0IGRlZmF1bHRfdHlwZV8gIyMgdG5hbWUgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFg+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHN0YXRpYyBjaG9pY2UxOjp0eXBlIHRlc3QoY2hvaWNlMSwgdHlwZW5hbWUgWDo6dG5hbWUqID0gMCk7ICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFg+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHN0YXRpYyBjaG9pY2UyOjp0eXBlIHRlc3QoY2hvaWNlMiwgdm9pZCogPSAwKTsgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RydWN0IERlZmF1bHRXcmFwIHsgdHlwZWRlZiBEZWZhdWx0IHRuYW1lOyB9OyAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBlbnVtIHsgdmFsdWUgPSAoMSA9PSBzaXplb2YodGVzdDxUcD4oY2hvb3NlKCkpKSkgfTsgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6aWZfdHJ1ZTx2YWx1ZT46OiAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgTkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIHRoZW48VHAsIERlZmF1bHRXcmFwPiAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIDo6dHlwZTo6dG5hbWUgdHlwZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfQotCi0jICAgZWxzZQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFQyPgotICAgIHN0cnVjdCBzZmluYWUgOiBUMiB7fTsKLQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0RFRkFVTFRfVFlQRV9UTVBMVCh0bmFtZSkgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHAsIHR5cGVuYW1lIERlZmF1bHQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgc3RydWN0IGRlZmF1bHRfdHlwZV8gIyMgdG5hbWUgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFg+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHN0YXRpYyB0eXBlbmFtZSBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnNmaW5hZTwgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIFg6OnRuYW1lLCBjaG9pY2UxPjo6dHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHRlc3QoY2hvaWNlMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgWD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljIGNob2ljZTI6OnR5cGUgdGVzdChjaG9pY2UyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdHJ1Y3QgRGVmYXVsdFdyYXAgeyB0eXBlZGVmIERlZmF1bHQgdG5hbWU7IH07ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGVudW0geyB2YWx1ZSA9ICgxID09IHNpemVvZih0ZXN0PFRwPihjaG9vc2UoKSkpKSB9OyAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjppZl90cnVlPHZhbHVlPjo6ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBORE5CT09TVF9ORVNURURfVEVNUExBVEUgdGhlbjxUcCwgRGVmYXVsdFdyYXA+ICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgOjp0eXBlOjp0bmFtZSB0eXBlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9Ci0KLSMgICBlbmRpZgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9ERUZBVUxUX1RZUEUoVCx0bmFtZSwgYXJnKSAgICAgICAgICAgICAgICAgICBcCi0gICAgdHlwZW5hbWUgZGVmYXVsdF90eXBlXyAjIyB0bmFtZTxULCBhcmc+Ojp0eXBlCi0KLSAgICBORE5CT09TVF9VTk9SREVSRURfREVGQVVMVF9UWVBFX1RNUExUKHBvaW50ZXIpOwotICAgIE5ETkJPT1NUX1VOT1JERVJFRF9ERUZBVUxUX1RZUEVfVE1QTFQoY29uc3RfcG9pbnRlcik7Ci0gICAgTkROQk9PU1RfVU5PUkRFUkVEX0RFRkFVTFRfVFlQRV9UTVBMVCh2b2lkX3BvaW50ZXIpOwotICAgIE5ETkJPT1NUX1VOT1JERVJFRF9ERUZBVUxUX1RZUEVfVE1QTFQoY29uc3Rfdm9pZF9wb2ludGVyKTsKLSAgICBORE5CT09TVF9VTk9SREVSRURfREVGQVVMVF9UWVBFX1RNUExUKGRpZmZlcmVuY2VfdHlwZSk7Ci0gICAgTkROQk9PU1RfVU5PUkRFUkVEX0RFRkFVTFRfVFlQRV9UTVBMVChzaXplX3R5cGUpOwotICAgIE5ETkJPT1NUX1VOT1JERVJFRF9ERUZBVUxUX1RZUEVfVE1QTFQocHJvcGFnYXRlX29uX2NvbnRhaW5lcl9jb3B5X2Fzc2lnbm1lbnQpOwotICAgIE5ETkJPT1NUX1VOT1JERVJFRF9ERUZBVUxUX1RZUEVfVE1QTFQocHJvcGFnYXRlX29uX2NvbnRhaW5lcl9tb3ZlX2Fzc2lnbm1lbnQpOwotICAgIE5ETkJPT1NUX1VOT1JERVJFRF9ERUZBVUxUX1RZUEVfVE1QTFQocHJvcGFnYXRlX29uX2NvbnRhaW5lcl9zd2FwKTsKLQotIyAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NGSU5BRV9FWFBSKQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgTkROQk9PU1RfVU5PUkRFUkVEX0hBU19GVU5DVElPTigKLSAgICAgICAgc2VsZWN0X29uX2NvbnRhaW5lcl9jb3B5X2NvbnN0cnVjdGlvbiwgVSBjb25zdCwgKCksIDAKLSAgICApOwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgTkROQk9PU1RfVU5PUkRFUkVEX0hBU19GVU5DVElPTigKLSAgICAgICAgbWF4X3NpemUsIFUgY29uc3QsICgpLCAwCi0gICAgKTsKLQotIyAgICAgICBpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMpCi0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVmFsdWVUeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIE5ETkJPT1NUX1VOT1JERVJFRF9IQVNfRlVOQ1RJT04oCi0gICAgY29uc3RydWN0LCBVLCAoCi0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6bWFrZTxWYWx1ZVR5cGUqPigpLAotICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om1ha2U8QXJncyBjb25zdD4oKS4uLiksIDIKLSAgICApOwotCi0jICAgICAgIGVsc2UKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBWYWx1ZVR5cGU+Ci0gICAgTkROQk9PU1RfVU5PUkRFUkVEX0hBU19GVU5DVElPTigKLSAgICBjb25zdHJ1Y3QsIFUsICgKLSAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjptYWtlPFZhbHVlVHlwZSo+KCksCi0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6bWFrZTxWYWx1ZVR5cGUgY29uc3Q+KCkpLCAyCi0gICAgKTsKLQotIyAgICAgICBlbmRpZgotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFZhbHVlVHlwZT4KLSAgICBORE5CT09TVF9VTk9SREVSRURfSEFTX0ZVTkNUSU9OKAotICAgICAgICBkZXN0cm95LCBVLCAobmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjptYWtlPFZhbHVlVHlwZSo+KCkpLCAxCi0gICAgKTsKLQotIyAgIGVsc2UKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIE5ETkJPT1NUX1VOT1JERVJFRF9IQVNfTUVNQkVSKHNlbGVjdF9vbl9jb250YWluZXJfY29weV9jb25zdHJ1Y3Rpb24pOwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgTkROQk9PU1RfVU5PUkRFUkVEX0hBU19NRU1CRVIobWF4X3NpemUpOwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFZhbHVlVHlwZT4KLSAgICBORE5CT09TVF9VTk9SREVSRURfSEFTX01FTUJFUihjb25zdHJ1Y3QpOwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFZhbHVlVHlwZT4KLSAgICBORE5CT09TVF9VTk9SREVSRURfSEFTX01FTUJFUihkZXN0cm95KTsKLQotIyAgIGVuZGlmCi0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2M+Ci0gICAgaW5saW5lIEFsbG9jIGNhbGxfc2VsZWN0X29uX2NvbnRhaW5lcl9jb3B5X2NvbnN0cnVjdGlvbihjb25zdCBBbGxvYyYgcmhzLAotICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6ZW5hYmxlX2lmX2M8Ci0gICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OgotICAgICAgICAgICAgaGFzX3NlbGVjdF9vbl9jb250YWluZXJfY29weV9jb25zdHJ1Y3Rpb248QWxsb2M+Ojp2YWx1ZSwgdm9pZCoKLSAgICAgICAgPjo6dHlwZSA9IDApCi0gICAgewotICAgICAgICByZXR1cm4gcmhzLnNlbGVjdF9vbl9jb250YWluZXJfY29weV9jb25zdHJ1Y3Rpb24oKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2M+Ci0gICAgaW5saW5lIEFsbG9jIGNhbGxfc2VsZWN0X29uX2NvbnRhaW5lcl9jb3B5X2NvbnN0cnVjdGlvbihjb25zdCBBbGxvYyYgcmhzLAotICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6ZGlzYWJsZV9pZl9jPAotICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjoKLSAgICAgICAgICAgIGhhc19zZWxlY3Rfb25fY29udGFpbmVyX2NvcHlfY29uc3RydWN0aW9uPEFsbG9jPjo6dmFsdWUsIHZvaWQqCi0gICAgICAgID46OnR5cGUgPSAwKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHJoczsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgU2l6ZVR5cGUsIHR5cGVuYW1lIEFsbG9jPgotICAgIGlubGluZSBTaXplVHlwZSBjYWxsX21heF9zaXplKGNvbnN0IEFsbG9jJiBhLAotICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6ZW5hYmxlX2lmX2M8Ci0gICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Omhhc19tYXhfc2l6ZTxBbGxvYz46OnZhbHVlLCB2b2lkKgotICAgICAgICA+Ojp0eXBlID0gMCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhLm1heF9zaXplKCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFNpemVUeXBlLCB0eXBlbmFtZSBBbGxvYz4KLSAgICBpbmxpbmUgU2l6ZVR5cGUgY2FsbF9tYXhfc2l6ZShjb25zdCBBbGxvYyYsIHR5cGVuYW1lIG5kbmJvb3N0OjpkaXNhYmxlX2lmX2M8Ci0gICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Omhhc19tYXhfc2l6ZTxBbGxvYz46OnZhbHVlLCB2b2lkKgotICAgICAgICA+Ojp0eXBlID0gMCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAoc3RkOjpudW1lcmljX2xpbWl0czxTaXplVHlwZT46Om1heCkoKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2M+Ci0gICAgc3RydWN0IGFsbG9jYXRvcl90cmFpdHMKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgQWxsb2MgYWxsb2NhdG9yX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQWxsb2M6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLQotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9ERUZBVUxUX1RZUEUoQWxsb2MsIHBvaW50ZXIsIHZhbHVlX3R5cGUqKQotICAgICAgICAgICAgcG9pbnRlcjsKLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RydWN0IHBvaW50ZXJfdG9fb3RoZXIgOiBuZG5ib29zdDo6cG9pbnRlcl90b19vdGhlcjxwb2ludGVyLCBUPiB7fTsKLQotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9ERUZBVUxUX1RZUEUoQWxsb2MsIGNvbnN0X3BvaW50ZXIsCi0gICAgICAgICAgICB0eXBlbmFtZSBwb2ludGVyX3RvX290aGVyPGNvbnN0IHZhbHVlX3R5cGU+Ojp0eXBlKQotICAgICAgICAgICAgY29uc3RfcG9pbnRlcjsKLQotICAgICAgICAvL3R5cGVkZWYgTkROQk9PU1RfVU5PUkRFUkVEX0RFRkFVTFRfVFlQRShBbGxvYywgdm9pZF9wb2ludGVyLAotICAgICAgICAvLyAgICB0eXBlbmFtZSBwb2ludGVyX3RvX290aGVyPHZvaWQ+Ojp0eXBlKQotICAgICAgICAvLyAgICB2b2lkX3BvaW50ZXI7Ci0gICAgICAgIC8vCi0gICAgICAgIC8vdHlwZWRlZiBORE5CT09TVF9VTk9SREVSRURfREVGQVVMVF9UWVBFKEFsbG9jLCBjb25zdF92b2lkX3BvaW50ZXIsCi0gICAgICAgIC8vICAgIHR5cGVuYW1lIHBvaW50ZXJfdG9fb3RoZXI8Y29uc3Qgdm9pZD46OnR5cGUpCi0gICAgICAgIC8vICAgIGNvbnN0X3ZvaWRfcG9pbnRlcjsKLQotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9ERUZBVUxUX1RZUEUoQWxsb2MsIGRpZmZlcmVuY2VfdHlwZSwKLSAgICAgICAgICAgIHN0ZDo6cHRyZGlmZl90KSBkaWZmZXJlbmNlX3R5cGU7Ci0KLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9VTk9SREVSRURfREVGQVVMVF9UWVBFKEFsbG9jLCBzaXplX3R5cGUsIHN0ZDo6c2l6ZV90KQotICAgICAgICAgICAgc2l6ZV90eXBlOwotCi0gICAgICAgIC8vIFRPRE86IHJlYmluZF9hbGxvYyBhbmQgcmViaW5kX3RyYWl0cwotCi0gICAgICAgIHN0YXRpYyBwb2ludGVyIGFsbG9jYXRlKEFsbG9jJiBhLCBzaXplX3R5cGUgbikKLSAgICAgICAgICAgIHsgcmV0dXJuIGEuYWxsb2NhdGUobik7IH0KLQotICAgICAgICAvLyBJIG5ldmVyIHVzZSB0aGlzLCBzbyBJJ2xsIGp1c3QgY29tbWVudCBpdCBvdXQgZm9yIG5vdy4KLSAgICAgICAgLy8KLSAgICAgICAgLy9zdGF0aWMgcG9pbnRlciBhbGxvY2F0ZShBbGxvYyYgYSwgc2l6ZV90eXBlIG4sCi0gICAgICAgIC8vICAgICAgICBjb25zdF92b2lkX3BvaW50ZXIgaGludCkKLSAgICAgICAgLy8gICAgeyByZXR1cm4gREVGQVVMVF9GVU5DKGFsbG9jYXRlLCBwb2ludGVyKShhLCBuLCBoaW50KTsgfQotCi0gICAgICAgIHN0YXRpYyB2b2lkIGRlYWxsb2NhdGUoQWxsb2MmIGEsIHBvaW50ZXIgcCwgc2l6ZV90eXBlIG4pCi0gICAgICAgICAgICB7IGEuZGVhbGxvY2F0ZShwLCBuKTsgfQotCi0gICAgcHVibGljOgotCi0jICAgaWYgTkROQk9PU1RfVU5PUkRFUkVEX0RFVEFJTF9GVUxMX0NPTlNUUlVDVAotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmdzPgotICAgICAgICBzdGF0aWMgdHlwZW5hbWUgbmRuYm9vc3Q6OmVuYWJsZV9pZl9jPAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aGFzX2NvbnN0cnVjdDxBbGxvYywgVCwgQXJncy4uLj4KLSAgICAgICAgICAgICAgICA6OnZhbHVlPjo6dHlwZQotICAgICAgICAgICAgY29uc3RydWN0KEFsbG9jJiBhLCBUKiBwLCBORE5CT09TVF9GV0RfUkVGKEFyZ3MpLi4uIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGEuY29uc3RydWN0KHAsIG5kbmJvb3N0Ojpmb3J3YXJkPEFyZ3M+KHgpLi4uKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmdzPgotICAgICAgICBzdGF0aWMgdHlwZW5hbWUgbmRuYm9vc3Q6OmRpc2FibGVfaWZfYzwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Omhhc19jb25zdHJ1Y3Q8QWxsb2MsIFQsIEFyZ3MuLi4+Ci0gICAgICAgICAgICAgICAgOjp2YWx1ZT46OnR5cGUKLSAgICAgICAgICAgIGNvbnN0cnVjdChBbGxvYyYsIFQqIHAsIE5ETkJPT1NUX0ZXRF9SRUYoQXJncykuLi4geCkKLSAgICAgICAgewotICAgICAgICAgICAgbmV3ICgodm9pZCopIHApIFQobmRuYm9vc3Q6OmZvcndhcmQ8QXJncz4oeCkuLi4pOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0YXRpYyB0eXBlbmFtZSBuZG5ib29zdDo6ZW5hYmxlX2lmX2M8Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpoYXNfZGVzdHJveTxBbGxvYywgVD46OnZhbHVlPjo6dHlwZQotICAgICAgICAgICAgZGVzdHJveShBbGxvYyYgYSwgVCogcCkKLSAgICAgICAgewotICAgICAgICAgICAgYS5kZXN0cm95KHApOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0YXRpYyB0eXBlbmFtZSBuZG5ib29zdDo6ZGlzYWJsZV9pZl9jPAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aGFzX2Rlc3Ryb3k8QWxsb2MsIFQ+Ojp2YWx1ZT46OnR5cGUKLSAgICAgICAgICAgIGRlc3Ryb3koQWxsb2MmLCBUKiBwKQotICAgICAgICB7Ci0gICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmRlc3Ryb3kocCk7Ci0gICAgICAgIH0KLQotIyAgIGVsaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fU0ZJTkFFX0VYUFIpCi0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0YXRpYyB0eXBlbmFtZSBuZG5ib29zdDo6ZW5hYmxlX2lmX2M8Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpoYXNfY29uc3RydWN0PEFsbG9jLCBUPjo6dmFsdWU+Ojp0eXBlCi0gICAgICAgICAgICBjb25zdHJ1Y3QoQWxsb2MmIGEsIFQqIHAsIFQgY29uc3QmIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGEuY29uc3RydWN0KHAsIHgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0YXRpYyB0eXBlbmFtZSBuZG5ib29zdDo6ZGlzYWJsZV9pZl9jPAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aGFzX2NvbnN0cnVjdDxBbGxvYywgVD46OnZhbHVlPjo6dHlwZQotICAgICAgICAgICAgY29uc3RydWN0KEFsbG9jJiwgVCogcCwgVCBjb25zdCYgeCkKLSAgICAgICAgewotICAgICAgICAgICAgbmV3ICgodm9pZCopIHApIFQoeCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RhdGljIHR5cGVuYW1lIG5kbmJvb3N0OjplbmFibGVfaWZfYzwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Omhhc19kZXN0cm95PEFsbG9jLCBUPjo6dmFsdWU+Ojp0eXBlCi0gICAgICAgICAgICBkZXN0cm95KEFsbG9jJiBhLCBUKiBwKQotICAgICAgICB7Ci0gICAgICAgICAgICBhLmRlc3Ryb3kocCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RhdGljIHR5cGVuYW1lIG5kbmJvb3N0OjpkaXNhYmxlX2lmX2M8Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpoYXNfZGVzdHJveTxBbGxvYywgVD46OnZhbHVlPjo6dHlwZQotICAgICAgICAgICAgZGVzdHJveShBbGxvYyYsIFQqIHApCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZGVzdHJveShwKTsKLSAgICAgICAgfQotCi0jICAgZWxzZQotCi0gICAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUgU0ZJTkFFIGV4cHJlc3Npb25zLCBvbmx5IGNhbGwgY29uc3RydWN0IGZvciB0aGUKLSAgICAgICAgLy8gY29weSBjb25zdHJ1Y3RvciBmb3IgdGhlIGFsbG9jYXRvcidzIHZhbHVlX3R5cGUgLSBhcyB0aGF0J3MKLSAgICAgICAgLy8gdGhlIG9ubHkgY29uc3RydWN0IG1ldGhvZCB0aGF0IG9sZCBmYXNoaW9uZWQgYWxsb2NhdG9ycyBzdXBwb3J0LgotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgICAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3QoQWxsb2MmIGEsIFQqIHAsIFQgY29uc3QmIHgsCi0gICAgICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6ZW5hYmxlX2lmX2M8Ci0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aGFzX2NvbnN0cnVjdDxBbGxvYywgVD46OnZhbHVlICYmCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppc19zYW1lPFQsIHZhbHVlX3R5cGU+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgdm9pZCo+Ojp0eXBlID0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgYS5jb25zdHJ1Y3QocCwgeCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RhdGljIHZvaWQgY29uc3RydWN0KEFsbG9jJiwgVCogcCwgVCBjb25zdCYgeCwKLSAgICAgICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpkaXNhYmxlX2lmX2M8Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpoYXNfY29uc3RydWN0PEFsbG9jLCBUPjo6dmFsdWUgJiYKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6aXNfc2FtZTxULCB2YWx1ZV90eXBlPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgdm9pZCo+Ojp0eXBlID0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgbmV3ICgodm9pZCopIHApIFQoeCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShBbGxvYyYgYSwgVCogcCwKLSAgICAgICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjplbmFibGVfaWZfYzwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Omhhc19kZXN0cm95PEFsbG9jLCBUPjo6dmFsdWUgJiYKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6aXNfc2FtZTxULCB2YWx1ZV90eXBlPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgdm9pZCo+Ojp0eXBlID0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgYS5kZXN0cm95KHApOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koQWxsb2MmLCBUKiBwLAotICAgICAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmRpc2FibGVfaWZfYzwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Omhhc19kZXN0cm95PEFsbG9jLCBUPjo6dmFsdWUgJiYKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6aXNfc2FtZTxULCB2YWx1ZV90eXBlPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgdm9pZCo+Ojp0eXBlID0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpkZXN0cm95KHApOwotICAgICAgICB9Ci0KLSMgICBlbmRpZgotCi0gICAgICAgIHN0YXRpYyBzaXplX3R5cGUgbWF4X3NpemUoY29uc3QgQWxsb2MmIGEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmNhbGxfbWF4X3NpemU8c2l6ZV90eXBlPihhKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEFsbG9jYXRvciBwcm9wYWdhdGlvbiBvbiBjb25zdHJ1Y3Rpb24KLQotICAgICAgICBzdGF0aWMgQWxsb2Mgc2VsZWN0X29uX2NvbnRhaW5lcl9jb3B5X2NvbnN0cnVjdGlvbihBbGxvYyBjb25zdCYgcmhzKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjoKLSAgICAgICAgICAgICAgICBjYWxsX3NlbGVjdF9vbl9jb250YWluZXJfY29weV9jb25zdHJ1Y3Rpb24ocmhzKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEFsbG9jYXRvciBwcm9wYWdhdGlvbiBvbiBhc3NpZ25tZW50IGFuZCBzd2FwLgotICAgICAgICAvLyBSZXR1cm4gdHJ1ZSBpZiBsaHMgaXMgbW9kaWZpZWQuCi0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfVU5PUkRFUkVEX0RFRkFVTFRfVFlQRSgKLSAgICAgICAgICAgIEFsbG9jLCBwcm9wYWdhdGVfb25fY29udGFpbmVyX2NvcHlfYXNzaWdubWVudCwgZmFsc2VfdHlwZSkKLSAgICAgICAgICAgIHByb3BhZ2F0ZV9vbl9jb250YWluZXJfY29weV9hc3NpZ25tZW50OwotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9ERUZBVUxUX1RZUEUoCi0gICAgICAgICAgICBBbGxvYyxwcm9wYWdhdGVfb25fY29udGFpbmVyX21vdmVfYXNzaWdubWVudCwgZmFsc2VfdHlwZSkKLSAgICAgICAgICAgIHByb3BhZ2F0ZV9vbl9jb250YWluZXJfbW92ZV9hc3NpZ25tZW50OwotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9ERUZBVUxUX1RZUEUoCi0gICAgICAgICAgICBBbGxvYyxwcm9wYWdhdGVfb25fY29udGFpbmVyX3N3YXAsZmFsc2VfdHlwZSkKLSAgICAgICAgICAgIHByb3BhZ2F0ZV9vbl9jb250YWluZXJfc3dhcDsKLSAgICB9OwotfX19Ci0KLSMgICB1bmRlZiBORE5CT09TVF9VTk9SREVSRURfREVGQVVMVF9UWVBFX1RNUExUCi0jICAgdW5kZWYgTkROQk9PU1RfVU5PUkRFUkVEX0RFRkFVTFRfVFlQRQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIHN0ZDo6YWxsb2NhdG9yX3RyYWl0cwotCi0jZWxpZiBORE5CT09TVF9VTk9SREVSRURfVVNFX0FMTE9DQVRPUl9UUkFJVFMgPT0gMQotCi0jICAgaW5jbHVkZSA8bWVtb3J5PgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9ERVRBSUxfRlVMTF9DT05TVFJVQ1QgMQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdW5vcmRlcmVkIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2M+Ci0gICAgc3RydWN0IGFsbG9jYXRvcl90cmFpdHMgOiBzdGQ6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2M+IHt9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBUPgotICAgIHN0cnVjdCByZWJpbmRfd3JhcAotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2M+OjoKLSAgICAgICAgICAgIHRlbXBsYXRlIHJlYmluZF9hbGxvYzxUPiB0eXBlOwotICAgIH07Ci19fX0KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyBuZG5ib29zdDo6Y29udGFpbmVyOjphbGxvY2F0b3JfdHJhaXRzCi0KLSNlbGlmIE5ETkJPT1NUX1VOT1JERVJFRF9VU0VfQUxMT0NBVE9SX1RSQUlUUyA9PSAyCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9jb250YWluZXIvYWxsb2NhdG9yX3RyYWl0cy5ocHA+Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0RFVEFJTF9GVUxMX0NPTlNUUlVDVCAwCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB1bm9yZGVyZWQgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvYz4KLSAgICBzdHJ1Y3QgYWxsb2NhdG9yX3RyYWl0cyA6Ci0gICAgICAgIG5kbmJvb3N0Ojpjb250YWluZXI6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2M+IHt9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBUPgotICAgIHN0cnVjdCByZWJpbmRfd3JhcCA6Ci0gICAgICAgIG5kbmJvb3N0Ojpjb250YWluZXI6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2M+OjoKLSAgICAgICAgICAgIHRlbXBsYXRlIHBvcnRhYmxlX3JlYmluZF9hbGxvYzxUPgotICAgIHt9OwotCi19fX0KLQotI2Vsc2UKLQotI2Vycm9yICJJbnZhbGlkIE5ETkJPT1NUX1VOT1JERVJFRF9VU0VfQUxMT0NBVE9SX1RSQUlUUyB2YWx1ZS4iCi0KLSNlbmRpZgotCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB1bm9yZGVyZWQgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAvLyBjYWxsX2NvbnN0cnVjdAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKQotCi0jICAgaWYgTkROQk9PU1RfVU5PUkRFUkVEX0RFVEFJTF9GVUxMX0NPTlNUUlVDVAotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIGlubGluZSB2b2lkIGNhbGxfY29uc3RydWN0KEFsbG9jJiBhbGxvYywgVCogYWRkcmVzcywKLSAgICAgICAgTkROQk9PU1RfRldEX1JFRihBcmdzKS4uLiBhcmdzKQotICAgIHsKLSAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jPjo6Y29uc3RydWN0KGFsbG9jLAotICAgICAgICAgICAgYWRkcmVzcywgbmRuYm9vc3Q6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgdm9pZCBkZXN0cm95X3ZhbHVlX2ltcGwoQWxsb2MmIGFsbG9jLCBUKiB4KSB7Ci0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvYz46OmRlc3Ryb3koYWxsb2MsIHgpOwotICAgIH0KLQotCi0jICAgZWxzZQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIGlubGluZSB2b2lkIGNhbGxfY29uc3RydWN0KEFsbG9jJiwgVCogYWRkcmVzcywKLSAgICAgICAgTkROQk9PU1RfRldEX1JFRihBcmdzKS4uLiBhcmdzKQotICAgIHsKLSAgICAgICAgbmV3KCh2b2lkKikgYWRkcmVzcykgVChuZG5ib29zdDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBUPgotICAgIGlubGluZSB2b2lkIGRlc3Ryb3lfdmFsdWVfaW1wbChBbGxvYyYsIFQqIHgpIHsKLSAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpkZXN0cm95KHgpOwotICAgIH0KLQotCi0jICAgZW5kaWYKLQotI2Vsc2UKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgdm9pZCBkZXN0cm95X3ZhbHVlX2ltcGwoQWxsb2MmLCBUKiB4KSB7Ci0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZGVzdHJveSh4KTsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vIENvbnN0cnVjdCBmcm9tIHR1cGxlCi0gICAgLy8KLSAgICAvLyBVc2VkIGZvciBwaWVjZXdpc2UgY29uc3RydWN0aW9uLgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9DT05TVFJVQ1RfRlJPTV9UVVBMRShuLCBuYW1lc3BhY2VfKSAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBUPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIGNvbnN0cnVjdF9mcm9tX3R1cGxlKEFsbG9jJiBhbGxvYywgVCogcHRyLCBuYW1lc3BhY2VfIHR1cGxlPD4pICAgICBcCi0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmNhbGxfY29uc3RydWN0KGFsbG9jLCBwdHIpOyAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPKDEsIG4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfVU5PUkRFUkVEX0NPTlNUUlVDVF9GUk9NX1RVUExFX0lNUEwsIG5hbWVzcGFjZV8pCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0NPTlNUUlVDVF9GUk9NX1RVUExFX0lNUEwoeiwgbiwgbmFtZXNwYWNlXykgICAgICBcCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIFQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNU19aKHosIG4sIHR5cGVuYW1lIEEpPiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIGNvbnN0cnVjdF9mcm9tX3R1cGxlKEFsbG9jJiBhbGxvYywgVCogcHRyLCAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBuYW1lc3BhY2VfIHR1cGxlPE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1ooeiwgbiwgQSk+IGNvbnN0JiB4KSAgICAgXAotICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpjYWxsX2NvbnN0cnVjdChhbGxvYywgcHRyLCAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNXyMjeihuLCBORE5CT09TVF9VTk9SREVSRURfR0VUX1RVUExFX0FSRywgbmFtZXNwYWNlXykgXAotICAgICAgICApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0dFVF9UVVBMRV9BUkcoeiwgbiwgbmFtZXNwYWNlXykgICAgICAgICAgICAgICAgICBcCi0gICAgbmFtZXNwYWNlXyBnZXQ8bj4oeCkKLQotI2VsaWYgIWRlZmluZWQoX19TVU5QUk9fQ0MpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0NPTlNUUlVDVF9GUk9NX1RVUExFKG4sIG5hbWVzcGFjZV8pICAgICAgICAgICAgICBcCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIFQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgY29uc3RydWN0X2Zyb21fdHVwbGUoQWxsb2MmLCBUKiBwdHIsIG5hbWVzcGFjZV8gdHVwbGU8PikgICAgICAgICAgIFwKLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIG5ldyAoKHZvaWQqKSBwdHIpIFQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE8oMSwgbiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9VTk9SREVSRURfQ09OU1RSVUNUX0ZST01fVFVQTEVfSU1QTCwgbmFtZXNwYWNlXykKLQotIyAgIGRlZmluZSBORE5CT09TVF9VTk9SREVSRURfQ09OU1RSVUNUX0ZST01fVFVQTEVfSU1QTCh6LCBuLCBuYW1lc3BhY2VfKSAgICAgIFwKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgVCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1ooeiwgbiwgdHlwZW5hbWUgQSk+ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgY29uc3RydWN0X2Zyb21fdHVwbGUoQWxsb2MmLCBUKiBwdHIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIG5hbWVzcGFjZV8gdHVwbGU8TkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfWih6LCBuLCBBKT4gY29uc3QmIHgpICAgICBcCi0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBuZXcgKCh2b2lkKikgcHRyKSBUKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fIyN6KG4sIE5ETkJPT1NUX1VOT1JERVJFRF9HRVRfVFVQTEVfQVJHLCBuYW1lc3BhY2VfKSBcCi0gICAgICAgICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0KLQotIyAgIGRlZmluZSBORE5CT09TVF9VTk9SREVSRURfR0VUX1RVUExFX0FSRyh6LCBuLCBuYW1lc3BhY2VfKSAgICAgICAgICAgICAgICAgIFwKLSAgICBuYW1lc3BhY2VfIGdldDxuPih4KQotCi0jZWxzZQotCi0gICAgdGVtcGxhdGUgPGludCBOPiBzdHJ1Y3QgbGVuZ3RoIHt9OwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9DT05TVFJVQ1RfRlJPTV9UVVBMRShuLCBuYW1lc3BhY2VfKSAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBUPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIGNvbnN0cnVjdF9mcm9tX3R1cGxlX2ltcGwoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Omxlbmd0aDwwPiwgQWxsb2MmLCBUKiBwdHIsICAgICAgICAgICAgXAotICAgICAgICAgICAgbmFtZXNwYWNlXyB0dXBsZTw+KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIG5ldyAoKHZvaWQqKSBwdHIpIFQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE8oMSwgbiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9VTk9SREVSRURfQ09OU1RSVUNUX0ZST01fVFVQTEVfSU1QTCwgbmFtZXNwYWNlXykKLQotIyAgIGRlZmluZSBORE5CT09TVF9VTk9SREVSRURfQ09OU1RSVUNUX0ZST01fVFVQTEVfSU1QTCh6LCBuLCBuYW1lc3BhY2VfKSAgICAgIFwKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgVCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1ooeiwgbiwgdHlwZW5hbWUgQSk+ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgY29uc3RydWN0X2Zyb21fdHVwbGVfaW1wbCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6bGVuZ3RoPG4+LCBBbGxvYyYsIFQqIHB0ciwgICAgICAgICAgICBcCi0gICAgICAgICAgICBuYW1lc3BhY2VfIHR1cGxlPE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1ooeiwgbiwgQSk+IGNvbnN0JiB4KSAgICAgXAotICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgbmV3ICgodm9pZCopIHB0cikgVCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNXyMjeihuLCBORE5CT09TVF9VTk9SREVSRURfR0VUX1RVUExFX0FSRywgbmFtZXNwYWNlXykgXAotICAgICAgICApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0dFVF9UVVBMRV9BUkcoeiwgbiwgbmFtZXNwYWNlXykgICAgICAgICAgICAgICAgICBcCi0gICAgbmFtZXNwYWNlXyBnZXQ8bj4oeCkKLQotI2VuZGlmCi0KLU5ETkJPT1NUX1VOT1JERVJFRF9DT05TVFJVQ1RfRlJPTV9UVVBMRSgxMCwgbmRuYm9vc3Q6OikKLQotI2lmICFkZWZpbmVkKF9fU1VOUFJPX0NDKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfVFVQTEUpCi0gICBORE5CT09TVF9VTk9SREVSRURfQ09OU1RSVUNUX0ZST01fVFVQTEUoMTAsIHN0ZDo6KQotI2VuZGlmCi0KLSN1bmRlZiBORE5CT09TVF9VTk9SREVSRURfQ09OU1RSVUNUX0ZST01fVFVQTEUKLSN1bmRlZiBORE5CT09TVF9VTk9SREVSRURfQ09OU1RSVUNUX0ZST01fVFVQTEVfSU1QTAotI3VuZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9HRVRfVFVQTEVfQVJHCi0KLSNpZiBkZWZpbmVkKF9fU1VOUFJPX0NDKQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBUdXBsZT4KLSAgICB2b2lkIGNvbnN0cnVjdF9mcm9tX3R1cGxlKEFsbG9jJiBhbGxvYywgVCogcHRyLCBUdXBsZSBjb25zdCYgeCkKLSAgICB7Ci0gICAgICAgIGNvbnN0cnVjdF9mcm9tX3R1cGxlX2ltcGwoCi0gICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Omxlbmd0aDwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dHVwbGVzOjpsZW5ndGg8VHVwbGU+Ojp2YWx1ZT4oKSwKLSAgICAgICAgICAgIGFsbG9jLCBwdHIsIHgpOwotICAgIH0KLQotI2VuZGlmCi0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8gVHJhaXQgdG8gY2hlY2sgZm9yIHBpZWNld2lzZSBjb25zdHJ1Y3Rpb24uCi0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQTA+Ci0gICAgc3RydWN0IHVzZV9waWVjZXdpc2UgewotICAgICAgICBzdGF0aWMgY2hvaWNlMTo6dHlwZSB0ZXN0KGNob2ljZTEsCi0gICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpwaWVjZXdpc2VfY29uc3RydWN0X3QpOwotCi0gICAgICAgIHN0YXRpYyBjaG9pY2UyOjp0eXBlIHRlc3QoY2hvaWNlMiwgLi4uKTsKLQotICAgICAgICBlbnVtIHsgdmFsdWUgPSBzaXplb2YoY2hvaWNlMTo6dHlwZSkgPT0KLSAgICAgICAgICAgIHNpemVvZih0ZXN0KGNob29zZSgpLCBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om1ha2U8QTA+KCkpKSB9OwotICAgIH07Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMpCi0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8gQ29uc3RydWN0IGZyb20gdmFyaWFkaWMgcGFyYW1ldGVycwotCi0gICAgLy8gRm9yIHRoZSBzdGFuZGFyZCBwYWlyIGNvbnN0cnVjdG9yLgotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIGlubGluZSB2b2lkIGNvbnN0cnVjdF92YWx1ZV9pbXBsKEFsbG9jJiBhbGxvYywgVCogYWRkcmVzcywKLSAgICAgICAgTkROQk9PU1RfRldEX1JFRihBcmdzKS4uLiBhcmdzKQotICAgIHsKLSAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpjYWxsX2NvbnN0cnVjdChhbGxvYywKLSAgICAgICAgICAgIGFkZHJlc3MsIG5kbmJvb3N0Ojpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKLSAgICB9Ci0KLSAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIHBpZWNlX2NvbnN0cnVjdAotICAgIC8vCi0gICAgLy8gVE9ETzogV2hlbiBwb3NzaWJsZSwgaXQgbWlnaHQgYmUgYmV0dGVyIHRvIHVzZSBzdGQ6OnBhaXIncwotICAgIC8vIGNvbnN0cnVjdG9yIGZvciBzdGQ6OnBpZWNlX2NvbnN0cnVjdCB3aXRoIHN0ZDo6dHVwbGUuCi0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIEEsIHR5cGVuYW1lIEIsCi0gICAgICAgIHR5cGVuYW1lIEEwLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTI+Ci0gICAgaW5saW5lIHR5cGVuYW1lIGVuYWJsZV9pZjx1c2VfcGllY2V3aXNlPEEwPiwgdm9pZD46OnR5cGUKLSAgICAgICAgY29uc3RydWN0X3ZhbHVlX2ltcGwoQWxsb2MmIGFsbG9jLCBzdGQ6OnBhaXI8QSwgQj4qIGFkZHJlc3MsCi0gICAgICAgICAgICBORE5CT09TVF9GV0RfUkVGKEEwKSwgTkROQk9PU1RfRldEX1JFRihBMSkgYTEsIE5ETkJPT1NUX0ZXRF9SRUYoQTIpIGEyKQotICAgIHsKLSAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpjb25zdHJ1Y3RfZnJvbV90dXBsZShhbGxvYywKLSAgICAgICAgICAgIG5kbmJvb3N0OjphZGRyZXNzb2YoYWRkcmVzcy0+Zmlyc3QpLCBuZG5ib29zdDo6Zm9yd2FyZDxBMT4oYTEpKTsKLSAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpjb25zdHJ1Y3RfZnJvbV90dXBsZShhbGxvYywKLSAgICAgICAgICAgIG5kbmJvb3N0OjphZGRyZXNzb2YoYWRkcmVzcy0+c2Vjb25kKSwgbmRuYm9vc3Q6OmZvcndhcmQ8QTI+KGEyKSk7Ci0gICAgfQotCi0jZWxzZSAvLyBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIENvbnN0cnVjdCBmcm9tIGVtcGxhY2VfYXJncwotCi0gICAgLy8gRXhwbGljaXRseSB3cml0ZSBvdXQgZmlyc3QgdGhyZWUgb3ZlcmxvYWRzIGZvciB0aGUgc2FrZSBvZiBzYW5lCi0gICAgLy8gZXJyb3IgbWVzc2FnZXMuCi0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEEwPgotICAgIGlubGluZSB2b2lkIGNvbnN0cnVjdF92YWx1ZV9pbXBsKEFsbG9jJiwgVCogYWRkcmVzcywKLSAgICAgICAgICAgIGVtcGxhY2VfYXJnczE8QTA+IGNvbnN0JiBhcmdzKQotICAgIHsKLSAgICAgICAgbmV3KCh2b2lkKikgYWRkcmVzcykgVChuZG5ib29zdDo6Zm9yd2FyZDxBMD4oYXJncy5hMCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgVCwgdHlwZW5hbWUgQTAsIHR5cGVuYW1lIEExPgotICAgIGlubGluZSB2b2lkIGNvbnN0cnVjdF92YWx1ZV9pbXBsKEFsbG9jJiwgVCogYWRkcmVzcywKLSAgICAgICAgICAgIGVtcGxhY2VfYXJnczI8QTAsIEExPiBjb25zdCYgYXJncykKLSAgICB7Ci0gICAgICAgIG5ldygodm9pZCopIGFkZHJlc3MpIFQoCi0gICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZDxBMD4oYXJncy5hMCksCi0gICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZDxBMT4oYXJncy5hMSkKLSAgICAgICAgKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEEwLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTI+Ci0gICAgaW5saW5lIHZvaWQgY29uc3RydWN0X3ZhbHVlX2ltcGwoQWxsb2MmLCBUKiBhZGRyZXNzLAotICAgICAgICAgICAgZW1wbGFjZV9hcmdzMzxBMCwgQTEsIEEyPiBjb25zdCYgYXJncykKLSAgICB7Ci0gICAgICAgIG5ldygodm9pZCopIGFkZHJlc3MpIFQoCi0gICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZDxBMD4oYXJncy5hMCksCi0gICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZDxBMT4oYXJncy5hMSksCi0gICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZDxBMj4oYXJncy5hMikKLSAgICAgICAgKTsKLSAgICB9Ci0KLSAgICAvLyBVc2UgYSBtYWNybyBmb3IgdGhlIHJlc3QuCi0KLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0NPTlNUUlVDVF9JTVBMKHosIG51bV9wYXJhbXMsIF8pICAgICAgICAgICAgICAgICAgICBcCi0gICAgdGVtcGxhdGUgPCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgVCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfWih6LCBudW1fcGFyYW1zLCB0eXBlbmFtZSBBKSAgICAgICAgICAgICAgICAgICBcCi0gICAgPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlubGluZSB2b2lkIGNvbnN0cnVjdF92YWx1ZV9pbXBsKEFsbG9jJiwgVCogYWRkcmVzcywgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpORE5CT09TVF9QUF9DQVQoZW1wbGFjZV9hcmdzLG51bV9wYXJhbXMpIDwgICBcCi0gICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNU19aKHosIG51bV9wYXJhbXMsIEEpICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICA+IGNvbnN0JiBhcmdzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIG5ldygodm9pZCopIGFkZHJlc3MpIFQoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV8jI3oobnVtX3BhcmFtcywgTkROQk9PU1RfVU5PUkRFUkVEX0NBTExfRk9SV0FSRCwgICAgIFwKLSAgICAgICAgICAgICAgICBhcmdzLmEpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfQotCi0gICAgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE8oNCwgTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfTElNSVQsCi0gICAgICAgIE5ETkJPT1NUX1VOT1JERVJFRF9DT05TVFJVQ1RfSU1QTCwgXykKLQotI3VuZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9DT05TVFJVQ1RfSU1QTAotCi0gICAgLy8gQ29uc3RydWN0IHdpdGggcGllY2VfY29uc3RydWN0Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIEEsIHR5cGVuYW1lIEIsCi0gICAgICAgIHR5cGVuYW1lIEEwLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTI+Ci0gICAgaW5saW5lIHZvaWQgY29uc3RydWN0X3ZhbHVlX2ltcGwoQWxsb2MmIGFsbG9jLCBzdGQ6OnBhaXI8QSwgQj4qIGFkZHJlc3MsCi0gICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmVtcGxhY2VfYXJnczM8QTAsIEExLCBBMj4gY29uc3QmIGFyZ3MsCi0gICAgICAgICAgICB0eXBlbmFtZSBlbmFibGVfaWY8dXNlX3BpZWNld2lzZTxBMD4sIHZvaWQqPjo6dHlwZSA9IDApCi0gICAgewotICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmNvbnN0cnVjdF9mcm9tX3R1cGxlKGFsbG9jLAotICAgICAgICAgICAgbmRuYm9vc3Q6OmFkZHJlc3NvZihhZGRyZXNzLT5maXJzdCksIGFyZ3MuYTEpOwotICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmNvbnN0cnVjdF9mcm9tX3R1cGxlKGFsbG9jLAotICAgICAgICAgICAgbmRuYm9vc3Q6OmFkZHJlc3NvZihhZGRyZXNzLT5zZWNvbmQpLCBhcmdzLmEyKTsKLSAgICB9Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMKLQotfX19Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gU29tZSBoZWxwZXIgZnVuY3Rpb25zIGZvciBhbGxvY2F0aW5nICYgY29uc3RydWN0aW5nCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB1bm9yZGVyZWQgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAvLwotICAgIC8vIGFycmF5X2NvbnN0cnVjdG9yCi0gICAgLy8KLSAgICAvLyBBbGxvY2F0ZSBhbmQgY29uc3RydWN0IGFuIGFycmF5IGluIGFuIGV4Y2VwdGlvbiBzYWZlIG1hbm5lciwgYW5kCi0gICAgLy8gY2xlYW4gdXAgaWYgYW4gZXhjZXB0aW9uIGlzIHRocm93biBiZWZvcmUgdGhlIGNvbnRhaW5lciB0YWtlcyBjaGFyZ2UKLSAgICAvLyBvZiBpdC4KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvY2F0b3I+Ci0gICAgc3RydWN0IGFycmF5X2NvbnN0cnVjdG9yCi0gICAgewotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvY2F0b3I+IHRyYWl0czsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6OnBvaW50ZXIgcG9pbnRlcjsKLQotICAgICAgICBBbGxvY2F0b3ImIGFsbG9jXzsKLSAgICAgICAgcG9pbnRlciBwdHJfOwotICAgICAgICBwb2ludGVyIGNvbnN0cnVjdGVkXzsKLSAgICAgICAgc3RkOjpzaXplX3QgbGVuZ3RoXzsKLQotICAgICAgICBhcnJheV9jb25zdHJ1Y3RvcihBbGxvY2F0b3ImIGEpCi0gICAgICAgICAgICA6IGFsbG9jXyhhKSwgcHRyXygpLCBjb25zdHJ1Y3RlZF8oKSwgbGVuZ3RoXygwKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdHJ1Y3RlZF8gPSBwb2ludGVyKCk7Ci0gICAgICAgICAgICBwdHJfID0gcG9pbnRlcigpOwotICAgICAgICB9Ci0KLSAgICAgICAgfmFycmF5X2NvbnN0cnVjdG9yKCkgewotICAgICAgICAgICAgaWYgKHB0cl8pIHsKLSAgICAgICAgICAgICAgICBmb3IocG9pbnRlciBwID0gcHRyXzsgcCAhPSBjb25zdHJ1Y3RlZF87ICsrcCkKLSAgICAgICAgICAgICAgICAgICAgdHJhaXRzOjpkZXN0cm95KGFsbG9jXywgbmRuYm9vc3Q6OmFkZHJlc3NvZigqcCkpOwotCi0gICAgICAgICAgICAgICAgdHJhaXRzOjpkZWFsbG9jYXRlKGFsbG9jXywgcHRyXywgbGVuZ3RoXyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVj4KLSAgICAgICAgdm9pZCBjb25zdHJ1Y3QoViBjb25zdCYgdiwgc3RkOjpzaXplX3QgbCkKLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKCFwdHJfKTsKLSAgICAgICAgICAgIGxlbmd0aF8gPSBsOwotICAgICAgICAgICAgcHRyXyA9IHRyYWl0czo6YWxsb2NhdGUoYWxsb2NfLCBsZW5ndGhfKTsKLSAgICAgICAgICAgIHBvaW50ZXIgZW5kID0gcHRyXyArIHN0YXRpY19jYXN0PHN0ZDo6cHRyZGlmZl90PihsZW5ndGhfKTsKLSAgICAgICAgICAgIGZvcihjb25zdHJ1Y3RlZF8gPSBwdHJfOyBjb25zdHJ1Y3RlZF8gIT0gZW5kOyArK2NvbnN0cnVjdGVkXykKLSAgICAgICAgICAgICAgICB0cmFpdHM6OmNvbnN0cnVjdChhbGxvY18sIG5kbmJvb3N0OjphZGRyZXNzb2YoKmNvbnN0cnVjdGVkXyksIHYpOwotICAgICAgICB9Ci0KLSAgICAgICAgcG9pbnRlciBnZXQoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcHRyXzsKLSAgICAgICAgfQotCi0gICAgICAgIHBvaW50ZXIgcmVsZWFzZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHBvaW50ZXIgcChwdHJfKTsKLSAgICAgICAgICAgIHB0cl8gPSBwb2ludGVyKCk7Ci0gICAgICAgICAgICByZXR1cm4gcDsKLSAgICAgICAgfQotCi0gICAgcHJpdmF0ZToKLQotICAgICAgICBhcnJheV9jb25zdHJ1Y3RvcihhcnJheV9jb25zdHJ1Y3RvciBjb25zdCYpOwotICAgICAgICBhcnJheV9jb25zdHJ1Y3RvciYgb3BlcmF0b3I9KGFycmF5X2NvbnN0cnVjdG9yIGNvbnN0Jik7Ci0gICAgfTsKLX19fQotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC9idWNrZXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC9idWNrZXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzIyZGY0OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvYnVja2V0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NzYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwNCBKZXJlbXkgQi4gTWFpdGluLVNoZXBhcmQuCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxMSBEYW5pZWwgSmFtZXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9ERVRBSUxfTUFOQUdFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0RFVEFJTF9NQU5BR0VSX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvdXRpbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC9hbGxvY2F0ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWxpZ25lZF9zdG9yYWdlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hbGlnbm1lbnRfb2YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19ub3Rocm93X21vdmVfYXNzaWduYWJsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3dhcC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9saW1pdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHVub3JkZXJlZCB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGVzPiBzdHJ1Y3QgdGFibGU7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE5vZGVQb2ludGVyPiBzdHJ1Y3QgYnVja2V0OwotICAgIHN0cnVjdCBwdHJfYnVja2V0OwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlcz4gc3RydWN0IHRhYmxlX2ltcGw7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGVzPiBzdHJ1Y3QgZ3JvdXBlZF90YWJsZV9pbXBsOwotCi19fX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHVub3JkZXJlZCB7IG5hbWVzcGFjZSBpdGVyYXRvcl9kZXRhaWwgewotCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vIEl0ZXJhdG9ycwotICAgIC8vCi0gICAgLy8gYWxsIG5vIHRocm93Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTm9kZT4gc3RydWN0IGl0ZXJhdG9yOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBOb2RlLCB0eXBlbmFtZSBDb25zdE5vZGVQb2ludGVyPiBzdHJ1Y3QgY19pdGVyYXRvcjsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTm9kZSwgdHlwZW5hbWUgUG9saWN5PiBzdHJ1Y3QgbF9pdGVyYXRvcjsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTm9kZSwgdHlwZW5hbWUgQ29uc3ROb2RlUG9pbnRlciwgdHlwZW5hbWUgUG9saWN5PgotICAgICAgICBzdHJ1Y3QgY2xfaXRlcmF0b3I7Ci0KLSAgICAvLyBMb2NhbCBJdGVyYXRvcnMKLSAgICAvLwotICAgIC8vIGFsbCBubyB0aHJvdwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE5vZGUsIHR5cGVuYW1lIFBvbGljeT4KLSAgICBzdHJ1Y3QgbF9pdGVyYXRvcgotICAgICAgICA6IHB1YmxpYyBuZG5ib29zdDo6aXRlcmF0b3I8Ci0gICAgICAgICAgICBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnLAotICAgICAgICAgICAgdHlwZW5hbWUgTm9kZTo6dmFsdWVfdHlwZSwKLSAgICAgICAgICAgIHN0ZDo6cHRyZGlmZl90LAotICAgICAgICAgICAgdHlwZW5hbWUgTm9kZTo6bm9kZV9wb2ludGVyLAotICAgICAgICAgICAgdHlwZW5hbWUgTm9kZTo6dmFsdWVfdHlwZSY+Ci0gICAgewotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX01FTUJFUl9URU1QTEFURV9GUklFTkRTKQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTm9kZTIsIHR5cGVuYW1lIENvbnN0Tm9kZVBvaW50ZXIsIHR5cGVuYW1lIFBvbGljeTI+Ci0gICAgICAgIGZyaWVuZCBzdHJ1Y3QgbmRuYm9vc3Q6OnVub3JkZXJlZDo6aXRlcmF0b3JfZGV0YWlsOjpjbF9pdGVyYXRvcjsKLSAgICBwcml2YXRlOgotI2VuZGlmCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgTm9kZTo6bm9kZV9wb2ludGVyIG5vZGVfcG9pbnRlcjsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjppdGVyYXRvcl9kZXRhaWw6Oml0ZXJhdG9yPE5vZGU+IGl0ZXJhdG9yOwotICAgICAgICBub2RlX3BvaW50ZXIgcHRyXzsKLSAgICAgICAgc3RkOjpzaXplX3QgYnVja2V0XzsKLSAgICAgICAgc3RkOjpzaXplX3QgYnVja2V0X2NvdW50XzsKLQotICAgIHB1YmxpYzoKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE5vZGU6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLQotICAgICAgICBsX2l0ZXJhdG9yKCkgOiBwdHJfKCkge30KLQotICAgICAgICBsX2l0ZXJhdG9yKGl0ZXJhdG9yIHgsIHN0ZDo6c2l6ZV90IGIsIHN0ZDo6c2l6ZV90IGMpCi0gICAgICAgICAgICA6IHB0cl8oeC5ub2RlXyksIGJ1Y2tldF8oYiksIGJ1Y2tldF9jb3VudF8oYykge30KLQotICAgICAgICB2YWx1ZV90eXBlJiBvcGVyYXRvciooKSBjb25zdCB7Ci0gICAgICAgICAgICByZXR1cm4gcHRyXy0+dmFsdWUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhbHVlX3R5cGUqIG9wZXJhdG9yLT4oKSBjb25zdCB7Ci0gICAgICAgICAgICByZXR1cm4gcHRyXy0+dmFsdWVfcHRyKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBsX2l0ZXJhdG9yJiBvcGVyYXRvcisrKCkgewotICAgICAgICAgICAgcHRyXyA9IHN0YXRpY19jYXN0PG5vZGVfcG9pbnRlcj4ocHRyXy0+bmV4dF8pOwotICAgICAgICAgICAgaWYgKHB0cl8gJiYgUG9saWN5Ojp0b19idWNrZXQoYnVja2V0X2NvdW50XywgcHRyXy0+aGFzaF8pCi0gICAgICAgICAgICAgICAgICAgICE9IGJ1Y2tldF8pCi0gICAgICAgICAgICAgICAgcHRyXyA9IG5vZGVfcG9pbnRlcigpOwotICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICB9Ci0KLSAgICAgICAgbF9pdGVyYXRvciBvcGVyYXRvcisrKGludCkgewotICAgICAgICAgICAgbF9pdGVyYXRvciB0bXAoKnRoaXMpOwotICAgICAgICAgICAgKysoKnRoaXMpOwotICAgICAgICAgICAgcmV0dXJuIHRtcDsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShsX2l0ZXJhdG9yIHgpIGNvbnN0IHsKLSAgICAgICAgICAgIHJldHVybiBwdHJfID09IHgucHRyXzsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShsX2l0ZXJhdG9yIHgpIGNvbnN0IHsKLSAgICAgICAgICAgIHJldHVybiBwdHJfICE9IHgucHRyXzsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTm9kZSwgdHlwZW5hbWUgQ29uc3ROb2RlUG9pbnRlciwgdHlwZW5hbWUgUG9saWN5PgotICAgIHN0cnVjdCBjbF9pdGVyYXRvcgotICAgICAgICA6IHB1YmxpYyBuZG5ib29zdDo6aXRlcmF0b3I8Ci0gICAgICAgICAgICBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnLAotICAgICAgICAgICAgdHlwZW5hbWUgTm9kZTo6dmFsdWVfdHlwZSwKLSAgICAgICAgICAgIHN0ZDo6cHRyZGlmZl90LAotICAgICAgICAgICAgQ29uc3ROb2RlUG9pbnRlciwKLSAgICAgICAgICAgIHR5cGVuYW1lIE5vZGU6OnZhbHVlX3R5cGUgY29uc3QmPgotICAgIHsKLSAgICAgICAgZnJpZW5kIHN0cnVjdCBuZG5ib29zdDo6dW5vcmRlcmVkOjppdGVyYXRvcl9kZXRhaWw6OmxfaXRlcmF0b3IKLSAgICAgICAgICAgIDxOb2RlLCBQb2xpY3k+OwotICAgIHByaXZhdGU6Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBOb2RlOjpub2RlX3BvaW50ZXIgbm9kZV9wb2ludGVyOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6Oml0ZXJhdG9yX2RldGFpbDo6aXRlcmF0b3I8Tm9kZT4gaXRlcmF0b3I7Ci0gICAgICAgIG5vZGVfcG9pbnRlciBwdHJfOwotICAgICAgICBzdGQ6OnNpemVfdCBidWNrZXRfOwotICAgICAgICBzdGQ6OnNpemVfdCBidWNrZXRfY291bnRfOwotCi0gICAgcHVibGljOgotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgTm9kZTo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotCi0gICAgICAgIGNsX2l0ZXJhdG9yKCkgOiBwdHJfKCkge30KLQotICAgICAgICBjbF9pdGVyYXRvcihpdGVyYXRvciB4LCBzdGQ6OnNpemVfdCBiLCBzdGQ6OnNpemVfdCBjKSA6Ci0gICAgICAgICAgICBwdHJfKHgubm9kZV8pLCBidWNrZXRfKGIpLCBidWNrZXRfY291bnRfKGMpIHt9Ci0KLSAgICAgICAgY2xfaXRlcmF0b3IobmRuYm9vc3Q6OnVub3JkZXJlZDo6aXRlcmF0b3JfZGV0YWlsOjpsX2l0ZXJhdG9yPAotICAgICAgICAgICAgICAgIE5vZGUsIFBvbGljeT4gY29uc3QmIHgpIDoKLSAgICAgICAgICAgIHB0cl8oeC5wdHJfKSwgYnVja2V0Xyh4LmJ1Y2tldF8pLCBidWNrZXRfY291bnRfKHguYnVja2V0X2NvdW50XykKLSAgICAgICAge30KLQotICAgICAgICB2YWx1ZV90eXBlIGNvbnN0JiBvcGVyYXRvciooKSBjb25zdCB7Ci0gICAgICAgICAgICByZXR1cm4gcHRyXy0+dmFsdWUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhbHVlX3R5cGUgY29uc3QqIG9wZXJhdG9yLT4oKSBjb25zdCB7Ci0gICAgICAgICAgICByZXR1cm4gcHRyXy0+dmFsdWVfcHRyKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBjbF9pdGVyYXRvciYgb3BlcmF0b3IrKygpIHsKLSAgICAgICAgICAgIHB0cl8gPSBzdGF0aWNfY2FzdDxub2RlX3BvaW50ZXI+KHB0cl8tPm5leHRfKTsKLSAgICAgICAgICAgIGlmIChwdHJfICYmIFBvbGljeTo6dG9fYnVja2V0KGJ1Y2tldF9jb3VudF8sIHB0cl8tPmhhc2hfKQotICAgICAgICAgICAgICAgICAgICAhPSBidWNrZXRfKQotICAgICAgICAgICAgICAgIHB0cl8gPSBub2RlX3BvaW50ZXIoKTsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotCi0gICAgICAgIGNsX2l0ZXJhdG9yIG9wZXJhdG9yKysoaW50KSB7Ci0gICAgICAgICAgICBjbF9pdGVyYXRvciB0bXAoKnRoaXMpOwotICAgICAgICAgICAgKysoKnRoaXMpOwotICAgICAgICAgICAgcmV0dXJuIHRtcDsKLSAgICAgICAgfQotCi0gICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY2xfaXRlcmF0b3IgY29uc3QmIHgsIGNsX2l0ZXJhdG9yIGNvbnN0JiB5KSB7Ci0gICAgICAgICAgICByZXR1cm4geC5wdHJfID09IHkucHRyXzsKLSAgICAgICAgfQotCi0gICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY2xfaXRlcmF0b3IgY29uc3QmIHgsIGNsX2l0ZXJhdG9yIGNvbnN0JiB5KSB7Ci0gICAgICAgICAgICByZXR1cm4geC5wdHJfICE9IHkucHRyXzsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTm9kZT4KLSAgICBzdHJ1Y3QgaXRlcmF0b3IKLSAgICAgICAgOiBwdWJsaWMgbmRuYm9vc3Q6Oml0ZXJhdG9yPAotICAgICAgICAgICAgc3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZywKLSAgICAgICAgICAgIHR5cGVuYW1lIE5vZGU6OnZhbHVlX3R5cGUsCi0gICAgICAgICAgICBzdGQ6OnB0cmRpZmZfdCwKLSAgICAgICAgICAgIHR5cGVuYW1lIE5vZGU6Om5vZGVfcG9pbnRlciwKLSAgICAgICAgICAgIHR5cGVuYW1lIE5vZGU6OnZhbHVlX3R5cGUmPgotICAgIHsKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVfRlJJRU5EUykKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lLCB0eXBlbmFtZT4KLSAgICAgICAgZnJpZW5kIHN0cnVjdCBuZG5ib29zdDo6dW5vcmRlcmVkOjppdGVyYXRvcl9kZXRhaWw6OmNfaXRlcmF0b3I7Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSwgdHlwZW5hbWU+Ci0gICAgICAgIGZyaWVuZCBzdHJ1Y3QgbmRuYm9vc3Q6OnVub3JkZXJlZDo6aXRlcmF0b3JfZGV0YWlsOjpsX2l0ZXJhdG9yOwotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUsIHR5cGVuYW1lLCB0eXBlbmFtZT4KLSAgICAgICAgZnJpZW5kIHN0cnVjdCBuZG5ib29zdDo6dW5vcmRlcmVkOjppdGVyYXRvcl9kZXRhaWw6OmNsX2l0ZXJhdG9yOwotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWU+Ci0gICAgICAgIGZyaWVuZCBzdHJ1Y3QgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjp0YWJsZTsKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lPgotICAgICAgICBmcmllbmQgc3RydWN0IG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6dGFibGVfaW1wbDsKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lPgotICAgICAgICBmcmllbmQgc3RydWN0IG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Z3JvdXBlZF90YWJsZV9pbXBsOwotICAgIHByaXZhdGU6Ci0jZW5kaWYKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBOb2RlOjpub2RlX3BvaW50ZXIgbm9kZV9wb2ludGVyOwotICAgICAgICBub2RlX3BvaW50ZXIgbm9kZV87Ci0KLSAgICBwdWJsaWM6Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBOb2RlOjp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0KLSAgICAgICAgaXRlcmF0b3IoKSA6IG5vZGVfKCkge30KLQotICAgICAgICBleHBsaWNpdCBpdGVyYXRvcih0eXBlbmFtZSBOb2RlOjpsaW5rX3BvaW50ZXIgeCkgOgotICAgICAgICAgICAgbm9kZV8oc3RhdGljX2Nhc3Q8bm9kZV9wb2ludGVyPih4KSkge30KLQotICAgICAgICB2YWx1ZV90eXBlJiBvcGVyYXRvciooKSBjb25zdCB7Ci0gICAgICAgICAgICByZXR1cm4gbm9kZV8tPnZhbHVlKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB2YWx1ZV90eXBlKiBvcGVyYXRvci0+KCkgY29uc3QgewotICAgICAgICAgICAgcmV0dXJuICZub2RlXy0+dmFsdWUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGl0ZXJhdG9yJiBvcGVyYXRvcisrKCkgewotICAgICAgICAgICAgbm9kZV8gPSBzdGF0aWNfY2FzdDxub2RlX3BvaW50ZXI+KG5vZGVfLT5uZXh0Xyk7Ci0gICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIH0KLQotICAgICAgICBpdGVyYXRvciBvcGVyYXRvcisrKGludCkgewotICAgICAgICAgICAgaXRlcmF0b3IgdG1wKG5vZGVfKTsKLSAgICAgICAgICAgIG5vZGVfID0gc3RhdGljX2Nhc3Q8bm9kZV9wb2ludGVyPihub2RlXy0+bmV4dF8pOwotICAgICAgICAgICAgcmV0dXJuIHRtcDsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShpdGVyYXRvciBjb25zdCYgeCkgY29uc3QgewotICAgICAgICAgICAgcmV0dXJuIG5vZGVfID09IHgubm9kZV87Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIG9wZXJhdG9yIT0oaXRlcmF0b3IgY29uc3QmIHgpIGNvbnN0IHsKLSAgICAgICAgICAgIHJldHVybiBub2RlXyAhPSB4Lm5vZGVfOwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBOb2RlLCB0eXBlbmFtZSBDb25zdE5vZGVQb2ludGVyPgotICAgIHN0cnVjdCBjX2l0ZXJhdG9yCi0gICAgICAgIDogcHVibGljIG5kbmJvb3N0OjppdGVyYXRvcjwKLSAgICAgICAgICAgIHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcsCi0gICAgICAgICAgICB0eXBlbmFtZSBOb2RlOjp2YWx1ZV90eXBlLAotICAgICAgICAgICAgc3RkOjpwdHJkaWZmX3QsCi0gICAgICAgICAgICBDb25zdE5vZGVQb2ludGVyLAotICAgICAgICAgICAgdHlwZW5hbWUgTm9kZTo6dmFsdWVfdHlwZSBjb25zdCY+Ci0gICAgewotICAgICAgICBmcmllbmQgc3RydWN0IG5kbmJvb3N0Ojp1bm9yZGVyZWQ6Oml0ZXJhdG9yX2RldGFpbDo6aXRlcmF0b3I8Tm9kZT47Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVfRlJJRU5EUykKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lPgotICAgICAgICBmcmllbmQgc3RydWN0IG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6dGFibGU7Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZT4KLSAgICAgICAgZnJpZW5kIHN0cnVjdCBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnRhYmxlX2ltcGw7Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZT4KLSAgICAgICAgZnJpZW5kIHN0cnVjdCBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Omdyb3VwZWRfdGFibGVfaW1wbDsKLQotICAgIHByaXZhdGU6Ci0jZW5kaWYKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBOb2RlOjpub2RlX3BvaW50ZXIgbm9kZV9wb2ludGVyOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6Oml0ZXJhdG9yX2RldGFpbDo6aXRlcmF0b3I8Tm9kZT4gaXRlcmF0b3I7Ci0gICAgICAgIG5vZGVfcG9pbnRlciBub2RlXzsKLQotICAgIHB1YmxpYzoKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE5vZGU6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLQotICAgICAgICBjX2l0ZXJhdG9yKCkgOiBub2RlXygpIHt9Ci0KLSAgICAgICAgZXhwbGljaXQgY19pdGVyYXRvcih0eXBlbmFtZSBOb2RlOjpsaW5rX3BvaW50ZXIgeCkgOgotICAgICAgICAgICAgbm9kZV8oc3RhdGljX2Nhc3Q8bm9kZV9wb2ludGVyPih4KSkge30KLQotICAgICAgICBjX2l0ZXJhdG9yKGl0ZXJhdG9yIGNvbnN0JiB4KSA6IG5vZGVfKHgubm9kZV8pIHt9Ci0KLSAgICAgICAgdmFsdWVfdHlwZSBjb25zdCYgb3BlcmF0b3IqKCkgY29uc3QgewotICAgICAgICAgICAgcmV0dXJuIG5vZGVfLT52YWx1ZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFsdWVfdHlwZSBjb25zdCogb3BlcmF0b3ItPigpIGNvbnN0IHsKLSAgICAgICAgICAgIHJldHVybiAmbm9kZV8tPnZhbHVlKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBjX2l0ZXJhdG9yJiBvcGVyYXRvcisrKCkgewotICAgICAgICAgICAgbm9kZV8gPSBzdGF0aWNfY2FzdDxub2RlX3BvaW50ZXI+KG5vZGVfLT5uZXh0Xyk7Ci0gICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIH0KLQotICAgICAgICBjX2l0ZXJhdG9yIG9wZXJhdG9yKysoaW50KSB7Ci0gICAgICAgICAgICBjX2l0ZXJhdG9yIHRtcChub2RlXyk7Ci0gICAgICAgICAgICBub2RlXyA9IHN0YXRpY19jYXN0PG5vZGVfcG9pbnRlcj4obm9kZV8tPm5leHRfKTsKLSAgICAgICAgICAgIHJldHVybiB0bXA7Ci0gICAgICAgIH0KLQotICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNfaXRlcmF0b3IgY29uc3QmIHgsIGNfaXRlcmF0b3IgY29uc3QmIHkpIHsKLSAgICAgICAgICAgIHJldHVybiB4Lm5vZGVfID09IHkubm9kZV87Ci0gICAgICAgIH0KLQotICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNfaXRlcmF0b3IgY29uc3QmIHgsIGNfaXRlcmF0b3IgY29uc3QmIHkpIHsKLSAgICAgICAgICAgIHJldHVybiB4Lm5vZGVfICE9IHkubm9kZV87Ci0gICAgICAgIH0KLSAgICB9OwotfX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB1bm9yZGVyZWQgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAvLwotICAgIC8vIE5vZGUgY29uc3RydWN0aW9uCi0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTm9kZUFsbG9jPgotICAgIHN0cnVjdCBub2RlX2NvbnN0cnVjdG9yCi0gICAgewotICAgIHByaXZhdGU6Ci0KLSAgICAgICAgdHlwZWRlZiBOb2RlQWxsb2Mgbm9kZV9hbGxvY2F0b3I7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjphbGxvY2F0b3JfdHJhaXRzPE5vZGVBbGxvYz4KLSAgICAgICAgICAgIG5vZGVfYWxsb2NhdG9yX3RyYWl0czsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBub2RlX2FsbG9jYXRvcl90cmFpdHM6OnZhbHVlX3R5cGUgbm9kZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBub2RlX2FsbG9jYXRvcl90cmFpdHM6OnBvaW50ZXIgbm9kZV9wb2ludGVyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5vZGU6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLQotICAgIHByb3RlY3RlZDoKLQotICAgICAgICBub2RlX2FsbG9jYXRvciYgYWxsb2NfOwotICAgICAgICBub2RlX3BvaW50ZXIgbm9kZV87Ci0gICAgICAgIGJvb2wgbm9kZV9jb25zdHJ1Y3RlZF87Ci0gICAgICAgIGJvb2wgdmFsdWVfY29uc3RydWN0ZWRfOwotCi0gICAgcHVibGljOgotCi0gICAgICAgIG5vZGVfY29uc3RydWN0b3Iobm9kZV9hbGxvY2F0b3ImIG4pIDoKLSAgICAgICAgICAgIGFsbG9jXyhuKSwKLSAgICAgICAgICAgIG5vZGVfKCksCi0gICAgICAgICAgICBub2RlX2NvbnN0cnVjdGVkXyhmYWxzZSksCi0gICAgICAgICAgICB2YWx1ZV9jb25zdHJ1Y3RlZF8oZmFsc2UpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIH5ub2RlX2NvbnN0cnVjdG9yKCk7Ci0KLSAgICAgICAgdm9pZCBjb25zdHJ1Y3QoKTsKLQotICAgICAgICB0ZW1wbGF0ZSA8TkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfVEVNUExBVEU+Ci0gICAgICAgIHZvaWQgY29uc3RydWN0X3dpdGhfdmFsdWUoTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfQVJHUykKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3RydWN0KCk7Ci0gICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmNvbnN0cnVjdF92YWx1ZV9pbXBsKAotICAgICAgICAgICAgICAgIGFsbG9jXywgbm9kZV8tPnZhbHVlX3B0cigpLCBORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9GT1JXQVJEKTsKLSAgICAgICAgICAgIHZhbHVlX2NvbnN0cnVjdGVkXyA9IHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQTA+Ci0gICAgICAgIHZvaWQgY29uc3RydWN0X3dpdGhfdmFsdWUyKE5ETkJPT1NUX0ZXRF9SRUYoQTApIGEwKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdHJ1Y3QoKTsKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Y29uc3RydWN0X3ZhbHVlX2ltcGwoCi0gICAgICAgICAgICAgICAgYWxsb2NfLCBub2RlXy0+dmFsdWVfcHRyKCksCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfQVJHUzEobmRuYm9vc3Q6OmZvcndhcmQ8QTA+KGEwKSkpOwotICAgICAgICAgICAgdmFsdWVfY29uc3RydWN0ZWRfID0gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhbHVlX3R5cGUgY29uc3QmIHZhbHVlKCkgY29uc3QgewotICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKG5vZGVfICYmIG5vZGVfY29uc3RydWN0ZWRfICYmIHZhbHVlX2NvbnN0cnVjdGVkXyk7Ci0gICAgICAgICAgICByZXR1cm4gbm9kZV8tPnZhbHVlKCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBubyB0aHJvdwotICAgICAgICBub2RlX3BvaW50ZXIgcmVsZWFzZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVChub2RlXyAmJiBub2RlX2NvbnN0cnVjdGVkXyk7Ci0gICAgICAgICAgICBub2RlX3BvaW50ZXIgcCA9IG5vZGVfOwotICAgICAgICAgICAgbm9kZV8gPSBub2RlX3BvaW50ZXIoKTsKLSAgICAgICAgICAgIHJldHVybiBwOwotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBub2RlX2NvbnN0cnVjdG9yKG5vZGVfY29uc3RydWN0b3IgY29uc3QmKTsKLSAgICAgICAgbm9kZV9jb25zdHJ1Y3RvciYgb3BlcmF0b3I9KG5vZGVfY29uc3RydWN0b3IgY29uc3QmKTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jPgotICAgIG5vZGVfY29uc3RydWN0b3I8QWxsb2M+Ojp+bm9kZV9jb25zdHJ1Y3RvcigpCi0gICAgewotICAgICAgICBpZiAobm9kZV8pIHsKLSAgICAgICAgICAgIGlmICh2YWx1ZV9jb25zdHJ1Y3RlZF8pIHsKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmRlc3Ryb3lfdmFsdWVfaW1wbChhbGxvY18sCi0gICAgICAgICAgICAgICAgICAgIG5vZGVfLT52YWx1ZV9wdHIoKSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChub2RlX2NvbnN0cnVjdGVkXykgewotICAgICAgICAgICAgICAgIG5vZGVfYWxsb2NhdG9yX3RyYWl0czo6ZGVzdHJveShhbGxvY18sCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjphZGRyZXNzb2YoKm5vZGVfKSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIG5vZGVfYWxsb2NhdG9yX3RyYWl0czo6ZGVhbGxvY2F0ZShhbGxvY18sIG5vZGVfLCAxKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvYz4KLSAgICB2b2lkIG5vZGVfY29uc3RydWN0b3I8QWxsb2M+Ojpjb25zdHJ1Y3QoKQotICAgIHsKLSAgICAgICAgaWYoIW5vZGVfKSB7Ci0gICAgICAgICAgICBub2RlX2NvbnN0cnVjdGVkXyA9IGZhbHNlOwotICAgICAgICAgICAgdmFsdWVfY29uc3RydWN0ZWRfID0gZmFsc2U7Ci0KLSAgICAgICAgICAgIG5vZGVfID0gbm9kZV9hbGxvY2F0b3JfdHJhaXRzOjphbGxvY2F0ZShhbGxvY18sIDEpOwotCi0gICAgICAgICAgICBub2RlX2FsbG9jYXRvcl90cmFpdHM6OmNvbnN0cnVjdChhbGxvY18sCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmFkZHJlc3NvZigqbm9kZV8pLCBub2RlKCkpOwotICAgICAgICAgICAgbm9kZV8tPmluaXQobm9kZV8pOwotICAgICAgICAgICAgbm9kZV9jb25zdHJ1Y3RlZF8gPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKG5vZGVfY29uc3RydWN0ZWRfKTsKLQotICAgICAgICAgICAgaWYgKHZhbHVlX2NvbnN0cnVjdGVkXykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmRlc3Ryb3lfdmFsdWVfaW1wbChhbGxvY18sCi0gICAgICAgICAgICAgICAgICAgIG5vZGVfLT52YWx1ZV9wdHIoKSk7Ci0gICAgICAgICAgICAgICAgdmFsdWVfY29uc3RydWN0ZWRfID0gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8KLSAgICAvLyBOb2RlIEhvbGRlcgotICAgIC8vCi0gICAgLy8gVGVtcG9yYXJ5IHN0b3JlIGZvciBub2Rlcy4gRGVsZXRlcyBhbnkgdGhhdCBhcmVuJ3QgdXNlZC4KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBOb2RlQWxsb2M+Ci0gICAgc3RydWN0IG5vZGVfaG9sZGVyIDogcHJpdmF0ZSBub2RlX2NvbnN0cnVjdG9yPE5vZGVBbGxvYz4KLSAgICB7Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBub2RlX2NvbnN0cnVjdG9yPE5vZGVBbGxvYz4gYmFzZTsKLQotICAgICAgICB0eXBlZGVmIE5vZGVBbGxvYyBub2RlX2FsbG9jYXRvcjsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmFsbG9jYXRvcl90cmFpdHM8Tm9kZUFsbG9jPgotICAgICAgICAgICAgbm9kZV9hbGxvY2F0b3JfdHJhaXRzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5vZGVfYWxsb2NhdG9yX3RyYWl0czo6dmFsdWVfdHlwZSBub2RlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5vZGVfYWxsb2NhdG9yX3RyYWl0czo6cG9pbnRlciBub2RlX3BvaW50ZXI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbm9kZTo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5vZGU6OmxpbmtfcG9pbnRlciBsaW5rX3BvaW50ZXI7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6aXRlcmF0b3JfZGV0YWlsOjppdGVyYXRvcjxub2RlPiBpdGVyYXRvcjsKLQotICAgICAgICBub2RlX3BvaW50ZXIgbm9kZXNfOwotCi0gICAgcHVibGljOgotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUYWJsZT4KLSAgICAgICAgZXhwbGljaXQgbm9kZV9ob2xkZXIoVGFibGUmIGIpIDoKLSAgICAgICAgICAgIGJhc2UoYi5ub2RlX2FsbG9jKCkpLAotICAgICAgICAgICAgbm9kZXNfKCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGIuc2l6ZV8pIHsKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBUYWJsZTo6bGlua19wb2ludGVyIHByZXYgPSBiLmdldF9wcmV2aW91c19zdGFydCgpOwotICAgICAgICAgICAgICAgIG5vZGVzXyA9IHN0YXRpY19jYXN0PG5vZGVfcG9pbnRlcj4ocHJldi0+bmV4dF8pOwotICAgICAgICAgICAgICAgIHByZXYtPm5leHRfID0gbGlua19wb2ludGVyKCk7Ci0gICAgICAgICAgICAgICAgYi5zaXplXyA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB+bm9kZV9ob2xkZXIoKTsKLQotICAgICAgICB2b2lkIG5vZGVfZm9yX2Fzc2lnbm1lbnQoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIXRoaXMtPm5vZGVfICYmIG5vZGVzXykgewotICAgICAgICAgICAgICAgIHRoaXMtPm5vZGVfID0gbm9kZXNfOwotICAgICAgICAgICAgICAgIG5vZGVzXyA9IHN0YXRpY19jYXN0PG5vZGVfcG9pbnRlcj4obm9kZXNfLT5uZXh0Xyk7Ci0gICAgICAgICAgICAgICAgdGhpcy0+bm9kZV8tPmluaXQodGhpcy0+bm9kZV8pOwotICAgICAgICAgICAgICAgIHRoaXMtPm5vZGVfLT5uZXh0XyA9IGxpbmtfcG9pbnRlcigpOwotCi0gICAgICAgICAgICAgICAgdGhpcy0+bm9kZV9jb25zdHJ1Y3RlZF8gPSB0cnVlOwotICAgICAgICAgICAgICAgIHRoaXMtPnZhbHVlX2NvbnN0cnVjdGVkXyA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICAgICAgaW5saW5lIHZvaWQgYXNzaWduX2ltcGwoVCBjb25zdCYgdikgewotICAgICAgICAgICAgaWYgKHRoaXMtPm5vZGVfICYmIHRoaXMtPnZhbHVlX2NvbnN0cnVjdGVkXykgewotICAgICAgICAgICAgICAgIHRoaXMtPm5vZGVfLT52YWx1ZSgpID0gdjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHRoaXMtPmNvbnN0cnVjdF93aXRoX3ZhbHVlMih2KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci0gICAgICAgIGlubGluZSB2b2lkIGFzc2lnbl9pbXBsKHN0ZDo6cGFpcjxUMSBjb25zdCwgVDI+IGNvbnN0JiB2KSB7Ci0gICAgICAgICAgICB0aGlzLT5jb25zdHJ1Y3Rfd2l0aF92YWx1ZTIodik7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICAgICAgaW5saW5lIHZvaWQgbW92ZV9hc3NpZ25faW1wbChUJiB2KSB7Ci0gICAgICAgICAgICBpZiAodGhpcy0+bm9kZV8gJiYgdGhpcy0+dmFsdWVfY29uc3RydWN0ZWRfKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy0+bm9kZV8tPnZhbHVlKCkgPSBuZG5ib29zdDo6bW92ZSh2KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHRoaXMtPmNvbnN0cnVjdF93aXRoX3ZhbHVlMihuZG5ib29zdDo6bW92ZSh2KSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotICAgICAgICBpbmxpbmUgdm9pZCBtb3ZlX2Fzc2lnbl9pbXBsKHN0ZDo6cGFpcjxUMSBjb25zdCwgVDI+JiB2KSB7Ci0gICAgICAgICAgICB0aGlzLT5jb25zdHJ1Y3Rfd2l0aF92YWx1ZTIobmRuYm9vc3Q6Om1vdmUodikpOwotICAgICAgICB9Ci0KLSAgICAgICAgbm9kZV9wb2ludGVyIGNvcHlfb2YodmFsdWVfdHlwZSBjb25zdCYgdikKLSAgICAgICAgewotICAgICAgICAgICAgbm9kZV9mb3JfYXNzaWdubWVudCgpOwotICAgICAgICAgICAgYXNzaWduX2ltcGwodik7Ci0gICAgICAgICAgICByZXR1cm4gYmFzZTo6cmVsZWFzZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgbm9kZV9wb2ludGVyIG1vdmVfY29weV9vZih2YWx1ZV90eXBlJiB2KQotICAgICAgICB7Ci0gICAgICAgICAgICBub2RlX2Zvcl9hc3NpZ25tZW50KCk7Ci0gICAgICAgICAgICBtb3ZlX2Fzc2lnbl9pbXBsKHYpOwotICAgICAgICAgICAgcmV0dXJuIGJhc2U6OnJlbGVhc2UoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGl0ZXJhdG9yIGJlZ2luKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yKG5vZGVzXyk7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jPgotICAgIG5vZGVfaG9sZGVyPEFsbG9jPjo6fm5vZGVfaG9sZGVyKCkKLSAgICB7Ci0gICAgICAgIHdoaWxlIChub2Rlc18pIHsKLSAgICAgICAgICAgIG5vZGVfcG9pbnRlciBwID0gbm9kZXNfOwotICAgICAgICAgICAgbm9kZXNfID0gc3RhdGljX2Nhc3Q8bm9kZV9wb2ludGVyPihwLT5uZXh0Xyk7Ci0KLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZGVzdHJveV92YWx1ZV9pbXBsKHRoaXMtPmFsbG9jXywKLSAgICAgICAgICAgICAgICBwLT52YWx1ZV9wdHIoKSk7Ci0gICAgICAgICAgICBub2RlX2FsbG9jYXRvcl90cmFpdHM6OmRlc3Ryb3kodGhpcy0+YWxsb2NfLCBuZG5ib29zdDo6YWRkcmVzc29mKCpwKSk7Ci0gICAgICAgICAgICBub2RlX2FsbG9jYXRvcl90cmFpdHM6OmRlYWxsb2NhdGUodGhpcy0+YWxsb2NfLCBwLCAxKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAvLwotICAgIC8vIEJ1Y2tldAotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE5vZGVQb2ludGVyPgotICAgIHN0cnVjdCBidWNrZXQKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgTm9kZVBvaW50ZXIgbGlua19wb2ludGVyOwotICAgICAgICBsaW5rX3BvaW50ZXIgbmV4dF87Ci0KLSAgICAgICAgYnVja2V0KCkgOiBuZXh0XygpIHt9Ci0KLSAgICAgICAgbGlua19wb2ludGVyIGZpcnN0X2Zyb21fc3RhcnQoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV4dF87Ci0gICAgICAgIH0KLQotICAgICAgICBlbnVtIHsgZXh0cmFfbm9kZSA9IHRydWUgfTsKLSAgICB9OwotCi0gICAgc3RydWN0IHB0cl9idWNrZXQKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgcHRyX2J1Y2tldCogbGlua19wb2ludGVyOwotICAgICAgICBsaW5rX3BvaW50ZXIgbmV4dF87Ci0KLSAgICAgICAgcHRyX2J1Y2tldCgpIDogbmV4dF8oMCkge30KLQotICAgICAgICBsaW5rX3BvaW50ZXIgZmlyc3RfZnJvbV9zdGFydCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzOwotICAgICAgICB9Ci0KLSAgICAgICAgZW51bSB7IGV4dHJhX25vZGUgPSBmYWxzZSB9OwotICAgIH07Ci0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8KLSAgICAvLyBIYXNoIFBvbGljeQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFNpemVUPgotICAgIHN0cnVjdCBwcmltZV9wb2xpY3kKLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoLCB0eXBlbmFtZSBUPgotICAgICAgICBzdGF0aWMgaW5saW5lIFNpemVUIGFwcGx5X2hhc2goSGFzaCBjb25zdCYgaGYsIFQgY29uc3QmIHgpIHsKLSAgICAgICAgICAgIHJldHVybiBoZih4KTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBpbmxpbmUgU2l6ZVQgdG9fYnVja2V0KFNpemVUIGJ1Y2tldF9jb3VudCwgU2l6ZVQgaGFzaCkgewotICAgICAgICAgICAgcmV0dXJuIGhhc2ggJSBidWNrZXRfY291bnQ7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgaW5saW5lIFNpemVUIG5ld19idWNrZXRfY291bnQoU2l6ZVQgbWluKSB7Ci0gICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpuZXh0X3ByaW1lKG1pbik7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgaW5saW5lIFNpemVUIHByZXZfYnVja2V0X2NvdW50KFNpemVUIG1heCkgewotICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cHJldl9wcmltZShtYXgpOwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBTaXplVD4KLSAgICBzdHJ1Y3QgbWl4NjRfcG9saWN5Ci0gICAgewotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaCwgdHlwZW5hbWUgVD4KLSAgICAgICAgc3RhdGljIGlubGluZSBTaXplVCBhcHBseV9oYXNoKEhhc2ggY29uc3QmIGhmLCBUIGNvbnN0JiB4KSB7Ci0gICAgICAgICAgICBTaXplVCBrZXkgPSBoZih4KTsKLSAgICAgICAgICAgIGtleSA9ICh+a2V5KSArIChrZXkgPDwgMjEpOyAvLyBrZXkgPSAoa2V5IDw8IDIxKSAtIGtleSAtIDE7Ci0gICAgICAgICAgICBrZXkgPSBrZXkgXiAoa2V5ID4+IDI0KTsKLSAgICAgICAgICAgIGtleSA9IChrZXkgKyAoa2V5IDw8IDMpKSArIChrZXkgPDwgOCk7IC8vIGtleSAqIDI2NQotICAgICAgICAgICAga2V5ID0ga2V5IF4gKGtleSA+PiAxNCk7Ci0gICAgICAgICAgICBrZXkgPSAoa2V5ICsgKGtleSA8PCAyKSkgKyAoa2V5IDw8IDQpOyAvLyBrZXkgKiAyMQotICAgICAgICAgICAga2V5ID0ga2V5IF4gKGtleSA+PiAyOCk7Ci0gICAgICAgICAgICBrZXkgPSBrZXkgKyAoa2V5IDw8IDMxKTsKLSAgICAgICAgICAgIHJldHVybiBrZXk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgaW5saW5lIFNpemVUIHRvX2J1Y2tldChTaXplVCBidWNrZXRfY291bnQsIFNpemVUIGhhc2gpIHsKLSAgICAgICAgICAgIHJldHVybiBoYXNoICYgKGJ1Y2tldF9jb3VudCAtIDEpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIGlubGluZSBTaXplVCBuZXdfYnVja2V0X2NvdW50KFNpemVUIG1pbikgewotICAgICAgICAgICAgaWYgKG1pbiA8PSA0KSByZXR1cm4gNDsKLSAgICAgICAgICAgIC0tbWluOwotICAgICAgICAgICAgbWluIHw9IG1pbiA+PiAxOwotICAgICAgICAgICAgbWluIHw9IG1pbiA+PiAyOwotICAgICAgICAgICAgbWluIHw9IG1pbiA+PiA0OwotICAgICAgICAgICAgbWluIHw9IG1pbiA+PiA4OwotICAgICAgICAgICAgbWluIHw9IG1pbiA+PiAxNjsKLSAgICAgICAgICAgIG1pbiB8PSBtaW4gPj4gMzI7Ci0gICAgICAgICAgICByZXR1cm4gbWluICsgMTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBpbmxpbmUgU2l6ZVQgcHJldl9idWNrZXRfY291bnQoU2l6ZVQgbWF4KSB7Ci0gICAgICAgICAgICBtYXggfD0gbWF4ID4+IDE7Ci0gICAgICAgICAgICBtYXggfD0gbWF4ID4+IDI7Ci0gICAgICAgICAgICBtYXggfD0gbWF4ID4+IDQ7Ci0gICAgICAgICAgICBtYXggfD0gbWF4ID4+IDg7Ci0gICAgICAgICAgICBtYXggfD0gbWF4ID4+IDE2OwotICAgICAgICAgICAgbWF4IHw9IG1heCA+PiAzMjsKLSAgICAgICAgICAgIHJldHVybiAobWF4ID4+IDEpICsgMTsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8aW50IGRpZ2l0cywgaW50IHJhZGl4PgotICAgIHN0cnVjdCBwaWNrX3BvbGljeV9pbXBsIHsKLSAgICAgICAgdHlwZWRlZiBwcmltZV9wb2xpY3k8c3RkOjpzaXplX3Q+IHR5cGU7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IHBpY2tfcG9saWN5X2ltcGw8NjQsIDI+IHsKLSAgICAgICAgdHlwZWRlZiBtaXg2NF9wb2xpY3k8c3RkOjpzaXplX3Q+IHR5cGU7Ci0gICAgfTsKLQotICAgIHN0cnVjdCBwaWNrX3BvbGljeSA6Ci0gICAgICAgIHBpY2tfcG9saWN5X2ltcGw8Ci0gICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHN0ZDo6c2l6ZV90Pjo6ZGlnaXRzLAotICAgICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxzdGQ6OnNpemVfdD46OnJhZGl4PiB7fTsKLQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAvLyBGdW5jdGlvbnMKLQotICAgIC8vIEFzc2lnbmluZyBhbmQgc3dhcHBpbmcgdGhlIGVxdWFsaXR5IGFuZCBoYXNoIGZ1bmN0aW9uIG9iamVjdHMKLSAgICAvLyBuZWVkcyBzdHJvbmcgZXhjZXB0aW9uIHNhZmV0eS4gVG8gaW1wbGVtZW50IHRoYXQgbm9ybWFsbHkgd2UnZAotICAgIC8vIHJlcXVpcmUgb25lIG9mIHRoZW0gdG8gYmUga25vd24gdG8gbm90IHRocm93IGFuZCB0aGUgb3RoZXIgdG8KLSAgICAvLyBndWFyYW50ZWUgc3Ryb25nIGV4Y2VwdGlvbiBzYWZldHkuIFVuZm9ydHVuYXRlbHkgdGhleSBib3RoIG9ubHkKLSAgICAvLyBoYXZlIGJhc2ljIGV4Y2VwdGlvbiBzYWZldHkuIFNvIHRvIGFjaGVpdmUgc3Ryb25nIGV4Y2VwdGlvbgotICAgIC8vIHNhZmV0eSB3ZSBoYXZlIHN0b3JhZ2Ugc3BhY2UgZm9yIHR3byBjb3BpZXMsIGFuZCBhc3NpZ24gdGhlIG5ldwotICAgIC8vIGNvcGllcyB0byB0aGUgdW51c2VkIHNwYWNlLiBUaGVuIHN3aXRjaCB0byB1c2luZyB0aGF0IHRvIHVzZQotICAgIC8vIHRoZW0uIFRoaXMgaXMgaW1wbGVtZW50ZWQgaW4gJ3NldF9oYXNoX2Z1bmN0aW9ucycgd2hpY2gKLSAgICAvLyBhdG9taWNhbGx5IGFzc2lnbnMgdGhlIG5ldyBmdW5jdGlvbiBvYmplY3RzIGluIGEgc3Ryb25nbHkKLSAgICAvLyBleGNlcHRpb24gc2FmZSBtYW5uZXIuCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgSCwgY2xhc3MgUCwgYm9vbCBOb1Rocm93TW92ZUFzc2lnbj4KLSAgICBjbGFzcyBzZXRfaGFzaF9mdW5jdGlvbnM7Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgSCwgY2xhc3MgUD4KLSAgICBjbGFzcyBmdW5jdGlvbnMKLSAgICB7Ci0gICAgcHVibGljOgotICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBub3Rocm93X21vdmVfYXNzaWduYWJsZSA9Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX25vdGhyb3dfbW92ZV9hc3NpZ25hYmxlPEg+Ojp2YWx1ZSAmJgotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppc19ub3Rocm93X21vdmVfYXNzaWduYWJsZTxQPjo6dmFsdWU7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBib29sIG5vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlID0KLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6aXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGU8SD46OnZhbHVlICYmCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlPFA+Ojp2YWx1ZTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnNldF9oYXNoX2Z1bmN0aW9uczxILCBQLAotICAgICAgICAgICAgICAgbm90aHJvd19tb3ZlX2Fzc2lnbmFibGU+OwotICAgICAgICBmdW5jdGlvbnMmIG9wZXJhdG9yPShmdW5jdGlvbnMgY29uc3QmKTsKLQotICAgICAgICB0eXBlZGVmIGNvbXByZXNzZWQ8SCwgUD4gZnVuY3Rpb25fcGFpcjsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjphbGlnbmVkX3N0b3JhZ2U8Ci0gICAgICAgICAgICBzaXplb2YoZnVuY3Rpb25fcGFpciksCi0gICAgICAgICAgICBuZG5ib29zdDo6YWxpZ25tZW50X29mPGZ1bmN0aW9uX3BhaXI+Ojp2YWx1ZT46OnR5cGUgYWxpZ25lZF9mdW5jdGlvbjsKLQotICAgICAgICBib29sIGN1cnJlbnRfOyAvLyBUaGUgY3VycmVudGx5IGFjdGl2ZSBmdW5jdGlvbnMuCi0gICAgICAgIGFsaWduZWRfZnVuY3Rpb24gZnVuY3NfWzJdOwotCi0gICAgICAgIGZ1bmN0aW9uX3BhaXIgY29uc3QmIGN1cnJlbnQoKSBjb25zdCB7Ci0gICAgICAgICAgICByZXR1cm4gKnN0YXRpY19jYXN0PGZ1bmN0aW9uX3BhaXIgY29uc3QqPigKLSAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx2b2lkIGNvbnN0Kj4oJmZ1bmNzX1tjdXJyZW50X10pKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uX3BhaXImIGN1cnJlbnQoKSB7Ci0gICAgICAgICAgICByZXR1cm4gKnN0YXRpY19jYXN0PGZ1bmN0aW9uX3BhaXIqPigKLSAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx2b2lkKj4oJmZ1bmNzX1tjdXJyZW50X10pKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgY29uc3RydWN0KGJvb2wgd2hpY2gsIEggY29uc3QmIGhmLCBQIGNvbnN0JiBlcSkKLSAgICAgICAgewotICAgICAgICAgICAgbmV3KCh2b2lkKikgJmZ1bmNzX1t3aGljaF0pIGZ1bmN0aW9uX3BhaXIoaGYsIGVxKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgY29uc3RydWN0KGJvb2wgd2hpY2gsIGZ1bmN0aW9uX3BhaXIgY29uc3QmIGYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5ldygodm9pZCopICZmdW5jc19bd2hpY2hdKSBmdW5jdGlvbl9wYWlyKGYpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB2b2lkIGNvbnN0cnVjdChib29sIHdoaWNoLCBmdW5jdGlvbl9wYWlyJiBmLAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6bW92ZV90YWcgbSkKLSAgICAgICAgewotICAgICAgICAgICAgbmV3KCh2b2lkKikgJmZ1bmNzX1t3aGljaF0pIGZ1bmN0aW9uX3BhaXIoZiwgbSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGRlc3Ryb3koYm9vbCB3aGljaCkKLSAgICAgICAgewotICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpkZXN0cm95KChmdW5jdGlvbl9wYWlyKikoJmZ1bmNzX1t3aGljaF0pKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICBwdWJsaWM6Ci0KLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnNldF9oYXNoX2Z1bmN0aW9uczxILCBQLAotICAgICAgICAgICAgICAgIG5vdGhyb3dfbW92ZV9hc3NpZ25hYmxlPiBzZXRfaGFzaF9mdW5jdGlvbnM7Ci0KLSAgICAgICAgZnVuY3Rpb25zKEggY29uc3QmIGhmLCBQIGNvbnN0JiBlcSkKLSAgICAgICAgICAgIDogY3VycmVudF8oZmFsc2UpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0cnVjdChjdXJyZW50XywgaGYsIGVxKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9ucyhmdW5jdGlvbnMgY29uc3QmIGJmKQotICAgICAgICAgICAgOiBjdXJyZW50XyhmYWxzZSkKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3RydWN0KGN1cnJlbnRfLCBiZi5jdXJyZW50KCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb25zKGZ1bmN0aW9ucyYgYmYsIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6bW92ZV90YWcgbSkKLSAgICAgICAgICAgIDogY3VycmVudF8oZmFsc2UpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChub3Rocm93X21vdmVfY29uc3RydWN0aWJsZSkgewotICAgICAgICAgICAgICAgIGNvbnN0cnVjdChjdXJyZW50XywgYmYuY3VycmVudCgpLCBtKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGNvbnN0cnVjdChjdXJyZW50XywgYmYuY3VycmVudCgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIH5mdW5jdGlvbnMoKSB7Ci0gICAgICAgICAgICB0aGlzLT5kZXN0cm95KGN1cnJlbnRfKTsKLSAgICAgICAgfQotCi0gICAgICAgIEggY29uc3QmIGhhc2hfZnVuY3Rpb24oKSBjb25zdCB7Ci0gICAgICAgICAgICByZXR1cm4gY3VycmVudCgpLmZpcnN0KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBQIGNvbnN0JiBrZXlfZXEoKSBjb25zdCB7Ci0gICAgICAgICAgICByZXR1cm4gY3VycmVudCgpLnNlY29uZCgpOwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBILCBjbGFzcyBQPgotICAgIGNsYXNzIHNldF9oYXNoX2Z1bmN0aW9uczxILCBQLCBmYWxzZT4KLSAgICB7Ci0gICAgICAgIHNldF9oYXNoX2Z1bmN0aW9ucyhzZXRfaGFzaF9mdW5jdGlvbnMgY29uc3QmKTsKLSAgICAgICAgc2V0X2hhc2hfZnVuY3Rpb25zJiBvcGVyYXRvcj0oc2V0X2hhc2hfZnVuY3Rpb25zIGNvbnN0Jik7Ci0KLSAgICAgICAgdHlwZWRlZiBmdW5jdGlvbnM8SCwgUD4gZnVuY3Rpb25zX3R5cGU7Ci0gICAgCi0gICAgICAgIGZ1bmN0aW9uc190eXBlJiBmdW5jdGlvbnNfOwotICAgICAgICBib29sIHRtcF9mdW5jdGlvbnNfOwotCi0gICAgcHVibGljOgotCi0gICAgICAgIHNldF9oYXNoX2Z1bmN0aW9ucyhmdW5jdGlvbnNfdHlwZSYgZiwgSCBjb25zdCYgaCwgUCBjb25zdCYgcCkKLSAgICAgICAgICA6IGZ1bmN0aW9uc18oZiksCi0gICAgICAgICAgICB0bXBfZnVuY3Rpb25zXyghZi5jdXJyZW50XykKLSAgICAgICAgewotICAgICAgICAgICAgZi5jb25zdHJ1Y3QodG1wX2Z1bmN0aW9uc18sIGgsIHApOwotICAgICAgICB9Ci0KLSAgICAgICAgc2V0X2hhc2hfZnVuY3Rpb25zKGZ1bmN0aW9uc190eXBlJiBmLCBmdW5jdGlvbnNfdHlwZSBjb25zdCYgb3RoZXIpCi0gICAgICAgICAgOiBmdW5jdGlvbnNfKGYpLAotICAgICAgICAgICAgdG1wX2Z1bmN0aW9uc18oIWYuY3VycmVudF8pCi0gICAgICAgIHsKLSAgICAgICAgICAgIGYuY29uc3RydWN0KHRtcF9mdW5jdGlvbnNfLCBvdGhlci5jdXJyZW50KCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgfnNldF9oYXNoX2Z1bmN0aW9ucygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZ1bmN0aW9uc18uZGVzdHJveSh0bXBfZnVuY3Rpb25zXyk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGNvbW1pdCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZ1bmN0aW9uc18uY3VycmVudF8gPSB0bXBfZnVuY3Rpb25zXzsKLSAgICAgICAgICAgIHRtcF9mdW5jdGlvbnNfID0gIXRtcF9mdW5jdGlvbnNfOwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBILCBjbGFzcyBQPgotICAgIGNsYXNzIHNldF9oYXNoX2Z1bmN0aW9uczxILCBQLCB0cnVlPgotICAgIHsKLSAgICAgICAgc2V0X2hhc2hfZnVuY3Rpb25zKHNldF9oYXNoX2Z1bmN0aW9ucyBjb25zdCYpOwotICAgICAgICBzZXRfaGFzaF9mdW5jdGlvbnMmIG9wZXJhdG9yPShzZXRfaGFzaF9mdW5jdGlvbnMgY29uc3QmKTsKLQotICAgICAgICB0eXBlZGVmIGZ1bmN0aW9uczxILCBQPiBmdW5jdGlvbnNfdHlwZTsKLQotICAgICAgICBmdW5jdGlvbnNfdHlwZSYgZnVuY3Rpb25zXzsKLSAgICAgICAgSCBoYXNoXzsKLSAgICAgICAgUCBwcmVkXzsKLSAgICAKLSAgICBwdWJsaWM6Ci0KLSAgICAgICAgc2V0X2hhc2hfZnVuY3Rpb25zKGZ1bmN0aW9uc190eXBlJiBmLCBIIGNvbnN0JiBoLCBQIGNvbnN0JiBwKSA6Ci0gICAgICAgICAgICBmdW5jdGlvbnNfKGYpLAotICAgICAgICAgICAgaGFzaF8oaCksCi0gICAgICAgICAgICBwcmVkXyhwKSB7fQotCi0gICAgICAgIHNldF9oYXNoX2Z1bmN0aW9ucyhmdW5jdGlvbnNfdHlwZSYgZiwgZnVuY3Rpb25zX3R5cGUgY29uc3QmIG90aGVyKSA6Ci0gICAgICAgICAgICBmdW5jdGlvbnNfKGYpLAotICAgICAgICAgICAgaGFzaF8ob3RoZXIuaGFzaF9mdW5jdGlvbigpKSwKLSAgICAgICAgICAgIHByZWRfKG90aGVyLmtleV9lcSgpKSB7fQotCi0gICAgICAgIHZvaWQgY29tbWl0KCkKLSAgICAgICAgewotICAgICAgICAgICAgZnVuY3Rpb25zXy5jdXJyZW50KCkuZmlyc3QoKSA9IG5kbmJvb3N0Ojptb3ZlKGhhc2hfKTsKLSAgICAgICAgICAgIGZ1bmN0aW9uc18uY3VycmVudCgpLnNlY29uZCgpID0gbmRuYm9vc3Q6Om1vdmUocHJlZF8pOwotICAgICAgICB9Ci0gICAgfTsKLSAgICAKLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8gcnZhbHVlIHBhcmFtZXRlcnMgd2hlbiB0eXBlIGNhbid0IGJlIGEgTkROQk9PU1RfUlZfUkVGKFQpIHBhcmFtZXRlcgotICAgIC8vIGUuZy4gZm9yIGludAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMpCi0jICAgZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9SVl9SRUYoVCkgTkROQk9PU1RfUlZfUkVGKFQpCi0jZWxzZQotICAgIHN0cnVjdCBwbGVhc2VfaWdub3JlX3RoaXNfb3ZlcmxvYWQgewotICAgICAgICB0eXBlZGVmIHBsZWFzZV9pZ25vcmVfdGhpc19vdmVybG9hZCB0eXBlOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgcnZfcmVmX2ltcGwgewotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1JWX1JFRihUKSB0eXBlOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgcnZfcmVmIDoKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6aWZfdHJ1ZTwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojppc19jbGFzczxUPjo6dmFsdWUKLSAgICAgICAgPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIHRoZW4gPAotICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpydl9yZWZfaW1wbDxUPiwKLSAgICAgICAgICAgIHBsZWFzZV9pZ25vcmVfdGhpc19vdmVybG9hZAotICAgICAgICA+Ojp0eXBlCi0gICAge307Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX1JWX1JFRihUKSBcCi0gICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cnZfcmVmPFQ+Ojp0eXBlCi0jZW5kaWYKLX19fQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC9lcXVpdmFsZW50LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC9lcXVpdmFsZW50LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGI2MmQ1OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvZXF1aXZhbGVudC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2ODAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwNCBKZXJlbXkgQi4gTWFpdGluLVNoZXBhcmQuCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxMSBEYW5pZWwgSmFtZXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9ERVRBSUxfRVFVSVZBTEVOVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0RFVEFJTF9FUVVJVkFMRU5UX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvdGFibGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvZXh0cmFjdF9rZXkuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdW5vcmRlcmVkIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQSwgdHlwZW5hbWUgVD4gc3RydWN0IGdyb3VwZWRfbm9kZTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IGdyb3VwZWRfcHRyX25vZGU7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGVzPiBzdHJ1Y3QgZ3JvdXBlZF90YWJsZV9pbXBsOwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEEsIHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IGdyb3VwZWRfbm9kZSA6Ci0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6dmFsdWVfYmFzZTxUPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSA6Om5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cmViaW5kX3dyYXA8Ci0gICAgICAgICAgICBBLCBncm91cGVkX25vZGU8QSwgVD4gPjo6dHlwZSBhbGxvY2F0b3I7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgOjpuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OgotICAgICAgICAgICAgYWxsb2NhdG9yX3RyYWl0czxhbGxvY2F0b3I+Ojpwb2ludGVyIG5vZGVfcG9pbnRlcjsKLSAgICAgICAgdHlwZWRlZiBub2RlX3BvaW50ZXIgbGlua19wb2ludGVyOwotCi0gICAgICAgIGxpbmtfcG9pbnRlciBuZXh0XzsKLSAgICAgICAgbm9kZV9wb2ludGVyIGdyb3VwX3ByZXZfOwotICAgICAgICBzdGQ6OnNpemVfdCBoYXNoXzsKLQotICAgICAgICBncm91cGVkX25vZGUoKSA6Ci0gICAgICAgICAgICBuZXh0XygpLAotICAgICAgICAgICAgZ3JvdXBfcHJldl8oKSwKLSAgICAgICAgICAgIGhhc2hfKDApCi0gICAgICAgIHt9Ci0KLSAgICAgICAgdm9pZCBpbml0KG5vZGVfcG9pbnRlciBzZWxmKQotICAgICAgICB7Ci0gICAgICAgICAgICBncm91cF9wcmV2XyA9IHNlbGY7Ci0gICAgICAgIH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIGdyb3VwZWRfbm9kZSYgb3BlcmF0b3I9KGdyb3VwZWRfbm9kZSBjb25zdCYpOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgZ3JvdXBlZF9wdHJfbm9kZSA6Ci0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6dmFsdWVfYmFzZTxUPiwKLSAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpwdHJfYnVja2V0Ci0gICAgewotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cHRyX2J1Y2tldCBidWNrZXRfYmFzZTsKLSAgICAgICAgdHlwZWRlZiBncm91cGVkX3B0cl9ub2RlPFQ+KiBub2RlX3BvaW50ZXI7Ci0gICAgICAgIHR5cGVkZWYgcHRyX2J1Y2tldCogbGlua19wb2ludGVyOwotCi0gICAgICAgIG5vZGVfcG9pbnRlciBncm91cF9wcmV2XzsKLSAgICAgICAgc3RkOjpzaXplX3QgaGFzaF87Ci0KLSAgICAgICAgZ3JvdXBlZF9wdHJfbm9kZSgpIDoKLSAgICAgICAgICAgIGJ1Y2tldF9iYXNlKCksCi0gICAgICAgICAgICBncm91cF9wcmV2XygwKSwKLSAgICAgICAgICAgIGhhc2hfKDApCi0gICAgICAgIHt9Ci0KLSAgICAgICAgdm9pZCBpbml0KG5vZGVfcG9pbnRlciBzZWxmKQotICAgICAgICB7Ci0gICAgICAgICAgICBncm91cF9wcmV2XyA9IHNlbGY7Ci0gICAgICAgIH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIGdyb3VwZWRfcHRyX25vZGUmIG9wZXJhdG9yPShncm91cGVkX3B0cl9ub2RlIGNvbnN0Jik7Ci0gICAgfTsKLQotICAgIC8vIElmIHRoZSBhbGxvY2F0b3IgdXNlcyByYXcgcG9pbnRlcnMgdXNlIGdyb3VwZWRfcHRyX25vZGUKLSAgICAvLyBPdGhlcndpc2UgdXNlIGdyb3VwZWRfbm9kZS4KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBOb2RlUHRyLCB0eXBlbmFtZSBCdWNrZXRQdHI+Ci0gICAgc3RydWN0IHBpY2tfZ3JvdXBlZF9ub2RlMgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Omdyb3VwZWRfbm9kZTxBLCBUPiBub2RlOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjphbGxvY2F0b3JfdHJhaXRzPAotICAgICAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpyZWJpbmRfd3JhcDxBLCBub2RlPjo6dHlwZQotICAgICAgICA+Ojpwb2ludGVyIG5vZGVfcG9pbnRlcjsKLQotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6YnVja2V0PG5vZGVfcG9pbnRlcj4gYnVja2V0OwotICAgICAgICB0eXBlZGVmIG5vZGVfcG9pbnRlciBsaW5rX3BvaW50ZXI7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBLCB0eXBlbmFtZSBUPgotICAgIHN0cnVjdCBwaWNrX2dyb3VwZWRfbm9kZTI8QSwgVCwKLSAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpncm91cGVkX3B0cl9ub2RlPFQ+KiwKLSAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpwdHJfYnVja2V0Kj4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpncm91cGVkX3B0cl9ub2RlPFQ+IG5vZGU7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpwdHJfYnVja2V0IGJ1Y2tldDsKLSAgICAgICAgdHlwZWRlZiBidWNrZXQqIGxpbmtfcG9pbnRlcjsKLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEEsIHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IHBpY2tfZ3JvdXBlZF9ub2RlCi0gICAgewotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6YWxsb2NhdG9yX3RyYWl0czwKLSAgICAgICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cmViaW5kX3dyYXA8QSwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Omdyb3VwZWRfcHRyX25vZGU8VD4gPjo6dHlwZQotICAgICAgICA+IHRlbnRhdGl2ZV9ub2RlX3RyYWl0czsKLQotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6YWxsb2NhdG9yX3RyYWl0czwKLSAgICAgICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cmViaW5kX3dyYXA8QSwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnB0cl9idWNrZXQgPjo6dHlwZQotICAgICAgICA+IHRlbnRhdGl2ZV9idWNrZXRfdHJhaXRzOwotCi0gICAgICAgIHR5cGVkZWYgcGlja19ncm91cGVkX25vZGUyPEEsIFQsCi0gICAgICAgICAgICB0eXBlbmFtZSB0ZW50YXRpdmVfbm9kZV90cmFpdHM6OnBvaW50ZXIsCi0gICAgICAgICAgICB0eXBlbmFtZSB0ZW50YXRpdmVfYnVja2V0X3RyYWl0czo6cG9pbnRlcj4gcGljazsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHBpY2s6Om5vZGUgbm9kZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwaWNrOjpidWNrZXQgYnVja2V0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHBpY2s6OmxpbmtfcG9pbnRlciBsaW5rX3BvaW50ZXI7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBILCB0eXBlbmFtZSBQPgotICAgIHN0cnVjdCBtdWx0aXNldAotICAgIHsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om11bHRpc2V0PEEsIFQsIEgsIFA+IHR5cGVzOwotCi0gICAgICAgIHR5cGVkZWYgQSBhbGxvY2F0b3I7Ci0gICAgICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotICAgICAgICB0eXBlZGVmIEggaGFzaGVyOwotICAgICAgICB0eXBlZGVmIFAga2V5X2VxdWFsOwotICAgICAgICB0eXBlZGVmIFQga2V5X3R5cGU7Ci0KLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmFsbG9jYXRvcl90cmFpdHM8YWxsb2NhdG9yPiB0cmFpdHM7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpwaWNrX2dyb3VwZWRfbm9kZTxhbGxvY2F0b3IsCi0gICAgICAgICAgICB2YWx1ZV90eXBlPiBwaWNrOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHBpY2s6Om5vZGUgbm9kZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwaWNrOjpidWNrZXQgYnVja2V0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHBpY2s6OmxpbmtfcG9pbnRlciBsaW5rX3BvaW50ZXI7Ci0KLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Omdyb3VwZWRfdGFibGVfaW1wbDx0eXBlcz4gdGFibGU7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpzZXRfZXh0cmFjdG9yPHZhbHVlX3R5cGU+IGV4dHJhY3RvcjsKLQotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cGlja19wb2xpY3k6OnR5cGUgcG9saWN5OwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQSwgdHlwZW5hbWUgSywgdHlwZW5hbWUgTSwgdHlwZW5hbWUgSCwgdHlwZW5hbWUgUD4KLSAgICBzdHJ1Y3QgbXVsdGltYXAKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjptdWx0aW1hcDxBLCBLLCBNLCBILCBQPiB0eXBlczsKLQotICAgICAgICB0eXBlZGVmIEEgYWxsb2NhdG9yOwotICAgICAgICB0eXBlZGVmIHN0ZDo6cGFpcjxLIGNvbnN0LCBNPiB2YWx1ZV90eXBlOwotICAgICAgICB0eXBlZGVmIEggaGFzaGVyOwotICAgICAgICB0eXBlZGVmIFAga2V5X2VxdWFsOwotICAgICAgICB0eXBlZGVmIEsga2V5X3R5cGU7Ci0KLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmFsbG9jYXRvcl90cmFpdHM8YWxsb2NhdG9yPiB0cmFpdHM7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpwaWNrX2dyb3VwZWRfbm9kZTxhbGxvY2F0b3IsCi0gICAgICAgICAgICAgICAgdmFsdWVfdHlwZT4gcGljazsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwaWNrOjpub2RlIG5vZGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcGljazo6YnVja2V0IGJ1Y2tldDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwaWNrOjpsaW5rX3BvaW50ZXIgbGlua19wb2ludGVyOwotCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpncm91cGVkX3RhYmxlX2ltcGw8dHlwZXM+IHRhYmxlOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6bWFwX2V4dHJhY3RvcjxrZXlfdHlwZSwgdmFsdWVfdHlwZT4KLSAgICAgICAgICAgIGV4dHJhY3RvcjsKLQotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cGlja19wb2xpY3k6OnR5cGUgcG9saWN5OwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZXM+Ci0gICAgc3RydWN0IGdyb3VwZWRfdGFibGVfaW1wbCA6IG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6dGFibGU8VHlwZXM+Ci0gICAgewotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6dGFibGU8VHlwZXM+IHRhYmxlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6OmJ1Y2tldCBidWNrZXQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6OnBvbGljeSBwb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6Om5vZGVfcG9pbnRlciBub2RlX3BvaW50ZXI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6Om5vZGVfYWxsb2NhdG9yIG5vZGVfYWxsb2NhdG9yOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjpub2RlX2FsbG9jYXRvcl90cmFpdHMgbm9kZV9hbGxvY2F0b3JfdHJhaXRzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjpidWNrZXRfcG9pbnRlciBidWNrZXRfcG9pbnRlcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6bGlua19wb2ludGVyIGxpbmtfcG9pbnRlcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6aGFzaGVyIGhhc2hlcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6a2V5X2VxdWFsIGtleV9lcXVhbDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6a2V5X3R5cGUga2V5X3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6Om5vZGVfY29uc3RydWN0b3Igbm9kZV9jb25zdHJ1Y3RvcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6ZXh0cmFjdG9yIGV4dHJhY3RvcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6OmNfaXRlcmF0b3IgY19pdGVyYXRvcjsKLQotICAgICAgICAvLyBDb25zdHJ1Y3RvcnMKLQotICAgICAgICBncm91cGVkX3RhYmxlX2ltcGwoc3RkOjpzaXplX3QgbiwKLSAgICAgICAgICAgICAgICBoYXNoZXIgY29uc3QmIGhmLAotICAgICAgICAgICAgICAgIGtleV9lcXVhbCBjb25zdCYgZXEsCi0gICAgICAgICAgICAgICAgbm9kZV9hbGxvY2F0b3IgY29uc3QmIGEpCi0gICAgICAgICAgOiB0YWJsZShuLCBoZiwgZXEsIGEpCi0gICAgICAgIHt9Ci0KLSAgICAgICAgZ3JvdXBlZF90YWJsZV9pbXBsKGdyb3VwZWRfdGFibGVfaW1wbCBjb25zdCYgeCkKLSAgICAgICAgICA6IHRhYmxlKHgsIG5vZGVfYWxsb2NhdG9yX3RyYWl0czo6Ci0gICAgICAgICAgICAgICAgc2VsZWN0X29uX2NvbnRhaW5lcl9jb3B5X2NvbnN0cnVjdGlvbih4Lm5vZGVfYWxsb2MoKSkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMtPmluaXQoeCk7Ci0gICAgICAgIH0KLQotICAgICAgICBncm91cGVkX3RhYmxlX2ltcGwoZ3JvdXBlZF90YWJsZV9pbXBsIGNvbnN0JiB4LAotICAgICAgICAgICAgICAgIG5vZGVfYWxsb2NhdG9yIGNvbnN0JiBhKQotICAgICAgICAgIDogdGFibGUoeCwgYSkKLSAgICAgICAgewotICAgICAgICAgICAgdGhpcy0+aW5pdCh4KTsKLSAgICAgICAgfQotCi0gICAgICAgIGdyb3VwZWRfdGFibGVfaW1wbChncm91cGVkX3RhYmxlX2ltcGwmIHgsCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjptb3ZlX3RhZyBtKQotICAgICAgICAgIDogdGFibGUoeCwgbSkKLSAgICAgICAge30KLQotICAgICAgICBncm91cGVkX3RhYmxlX2ltcGwoZ3JvdXBlZF90YWJsZV9pbXBsJiB4LAotICAgICAgICAgICAgICAgIG5vZGVfYWxsb2NhdG9yIGNvbnN0JiBhLAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6bW92ZV90YWcgbSkKLSAgICAgICAgICA6IHRhYmxlKHgsIGEsIG0pCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMtPm1vdmVfaW5pdCh4KTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEFjY2Vzc29ycwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBLZXksIGNsYXNzIFByZWQ+Ci0gICAgICAgIGl0ZXJhdG9yIGZpbmRfbm9kZV9pbXBsKAotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGtleV9oYXNoLAotICAgICAgICAgICAgICAgIEtleSBjb25zdCYgaywKLSAgICAgICAgICAgICAgICBQcmVkIGNvbnN0JiBlcSkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgc3RkOjpzaXplX3QgYnVja2V0X2luZGV4ID0gdGhpcy0+aGFzaF90b19idWNrZXQoa2V5X2hhc2gpOwotICAgICAgICAgICAgaXRlcmF0b3IgbiA9IHRoaXMtPmJlZ2luKGJ1Y2tldF9pbmRleCk7Ci0KLSAgICAgICAgICAgIGZvciAoOzspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKCFuLm5vZGVfKSByZXR1cm4gbjsKLQotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IG5vZGVfaGFzaCA9IG4ubm9kZV8tPmhhc2hfOwotICAgICAgICAgICAgICAgIGlmIChrZXlfaGFzaCA9PSBub2RlX2hhc2gpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAoZXEoaywgdGhpcy0+Z2V0X2tleSgqbikpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLT5oYXNoX3RvX2J1Y2tldChub2RlX2hhc2gpICE9IGJ1Y2tldF9pbmRleCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcigpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIG4gPSBpdGVyYXRvcihuLm5vZGVfLT5ncm91cF9wcmV2Xy0+bmV4dF8pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgc3RkOjpzaXplX3QgY291bnQoa2V5X3R5cGUgY29uc3QmIGspIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGl0ZXJhdG9yIG4gPSB0aGlzLT5maW5kX25vZGUoayk7Ci0gICAgICAgICAgICBpZiAoIW4ubm9kZV8pIHJldHVybiAwOwotCi0gICAgICAgICAgICBzdGQ6OnNpemVfdCB4ID0gMDsKLSAgICAgICAgICAgIG5vZGVfcG9pbnRlciBpdCA9IG4ubm9kZV87Ci0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgaXQgPSBpdC0+Z3JvdXBfcHJldl87Ci0gICAgICAgICAgICAgICAgKyt4OwotICAgICAgICAgICAgfSB3aGlsZShpdCAhPSBuLm5vZGVfKTsKLQotICAgICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGl0ZXJhdG9yPgotICAgICAgICAgICAgZXF1YWxfcmFuZ2Uoa2V5X3R5cGUgY29uc3QmIGspIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGl0ZXJhdG9yIG4gPSB0aGlzLT5maW5kX25vZGUoayk7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoCi0gICAgICAgICAgICAgICAgbiwgbi5ub2RlXyA/IGl0ZXJhdG9yKG4ubm9kZV8tPmdyb3VwX3ByZXZfLT5uZXh0XykgOiBuKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEVxdWFsaXR5Ci0KLSAgICAgICAgYm9vbCBlcXVhbHMoZ3JvdXBlZF90YWJsZV9pbXBsIGNvbnN0JiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgaWYodGhpcy0+c2l6ZV8gIT0gb3RoZXIuc2l6ZV8pIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICAgICAgICAgIGZvcihpdGVyYXRvciBuMSA9IHRoaXMtPmJlZ2luKCk7IG4xLm5vZGVfOykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpdGVyYXRvciBuMiA9IG90aGVyLmZpbmRfbWF0Y2hpbmdfbm9kZShuMSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFuMi5ub2RlXykgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIGl0ZXJhdG9yIGVuZDEobjEubm9kZV8tPmdyb3VwX3ByZXZfLT5uZXh0Xyk7Ci0gICAgICAgICAgICAgICAgaXRlcmF0b3IgZW5kMihuMi5ub2RlXy0+Z3JvdXBfcHJldl8tPm5leHRfKTsKLSAgICAgICAgICAgICAgICBpZiAoIWdyb3VwX2VxdWFscyhuMSwgZW5kMSwgbjIsIGVuZDIpKSByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgbjEgPSBlbmQxOyAgICAKLSAgICAgICAgICAgIH0KLSAgICAKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIGJvb2wgZ3JvdXBfZXF1YWxzKGl0ZXJhdG9yIG4xLCBpdGVyYXRvciBlbmQxLAotICAgICAgICAgICAgICAgIGl0ZXJhdG9yIG4yLCBpdGVyYXRvciBlbmQyKQotICAgICAgICB7Ci0gICAgICAgICAgICBmb3IoOzspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKCpuMSAhPSAqbjIpIGJyZWFrOwotCi0gICAgICAgICAgICAgICAgKytuMTsKLSAgICAgICAgICAgICAgICArK24yOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKG4xID09IGVuZDEpIHJldHVybiBuMiA9PSBlbmQyOwotICAgICAgICAgICAgICAgIGlmIChuMiA9PSBlbmQyKSByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGZvcihpdGVyYXRvciBuMWEgPSBuMSwgbjJhID0gbjI7OykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICArK24xYTsKLSAgICAgICAgICAgICAgICArK24yYTsKLQotICAgICAgICAgICAgICAgIGlmIChuMWEgPT0gZW5kMSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChuMmEgPT0gZW5kMikgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChuMmEgPT0gZW5kMikgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpdGVyYXRvciBzdGFydCA9IG4xOwotICAgICAgICAgICAgZm9yKDtuMSAhPSBlbmQxOyArK24xKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHZhbHVlX3R5cGUgY29uc3QmIHYgPSAqbjE7Ci0gICAgICAgICAgICAgICAgaWYgKGZpbmQoc3RhcnQsIG4xLCB2KSkgY29udGludWU7Ci0gICAgICAgICAgICAgICAgc3RkOjpzaXplX3QgbWF0Y2hlcyA9IGNvdW50X2VxdWFsKG4yLCBlbmQyLCB2KTsKLSAgICAgICAgICAgICAgICBpZiAoIW1hdGNoZXMpIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICBpdGVyYXRvciBuZXh0ID0gbjE7Ci0gICAgICAgICAgICAgICAgKytuZXh0OwotICAgICAgICAgICAgICAgIGlmIChtYXRjaGVzICE9IDEgKyBjb3VudF9lcXVhbChuZXh0LCBlbmQxLCB2KSkgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBib29sIGZpbmQoaXRlcmF0b3IgbiwgaXRlcmF0b3IgZW5kLCB2YWx1ZV90eXBlIGNvbnN0JiB2KQotICAgICAgICB7Ci0gICAgICAgICAgICBmb3IoO24gIT0gZW5kOyArK24pCi0gICAgICAgICAgICAgICAgaWYgKCpuID09IHYpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIHN0ZDo6c2l6ZV90IGNvdW50X2VxdWFsKGl0ZXJhdG9yIG4sIGl0ZXJhdG9yIGVuZCwKLSAgICAgICAgICAgIHZhbHVlX3R5cGUgY29uc3QmIHYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGNvdW50ID0gMDsKLSAgICAgICAgICAgIGZvcig7biAhPSBlbmQ7ICsrbikKLSAgICAgICAgICAgICAgICBpZiAoKm4gPT0gdikgKytjb3VudDsKLSAgICAgICAgICAgIHJldHVybiBjb3VudDsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEVtcGxhY2UvSW5zZXJ0Ci0KLSAgICAgICAgc3RhdGljIGlubGluZSB2b2lkIGFkZF9hZnRlcl9ub2RlKAotICAgICAgICAgICAgICAgIG5vZGVfcG9pbnRlciBuLAotICAgICAgICAgICAgICAgIG5vZGVfcG9pbnRlciBwb3MpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG4tPm5leHRfID0gcG9zLT5ncm91cF9wcmV2Xy0+bmV4dF87Ci0gICAgICAgICAgICBuLT5ncm91cF9wcmV2XyA9IHBvcy0+Z3JvdXBfcHJldl87Ci0gICAgICAgICAgICBwb3MtPmdyb3VwX3ByZXZfLT5uZXh0XyA9IG47Ci0gICAgICAgICAgICBwb3MtPmdyb3VwX3ByZXZfID0gbjsKLSAgICAgICAgfQotCi0gICAgICAgIGlubGluZSBpdGVyYXRvciBhZGRfbm9kZSgKLSAgICAgICAgICAgICAgICBub2RlX2NvbnN0cnVjdG9yJiBhLAotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGtleV9oYXNoLAotICAgICAgICAgICAgICAgIGl0ZXJhdG9yIHBvcykKLSAgICAgICAgewotICAgICAgICAgICAgbm9kZV9wb2ludGVyIG4gPSBhLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIG4tPmhhc2hfID0ga2V5X2hhc2g7Ci0gICAgICAgICAgICBpZiAocG9zLm5vZGVfKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy0+YWRkX2FmdGVyX25vZGUobiwgcG9zLm5vZGVfKTsKLSAgICAgICAgICAgICAgICBpZiAobi0+bmV4dF8pIHsKLSAgICAgICAgICAgICAgICAgICAgc3RkOjpzaXplX3QgbmV4dF9idWNrZXQgPSB0aGlzLT5oYXNoX3RvX2J1Y2tldCgKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PG5vZGVfcG9pbnRlcj4obi0+bmV4dF8pLT5oYXNoXyk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChuZXh0X2J1Y2tldCAhPSB0aGlzLT5oYXNoX3RvX2J1Y2tldChrZXlfaGFzaCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMtPmdldF9idWNrZXQobmV4dF9idWNrZXQpLT5uZXh0XyA9IG47Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBidWNrZXRfcG9pbnRlciBiID0gdGhpcy0+Z2V0X2J1Y2tldCgKLSAgICAgICAgICAgICAgICAgICAgdGhpcy0+aGFzaF90b19idWNrZXQoa2V5X2hhc2gpKTsKLQotICAgICAgICAgICAgICAgIGlmICghYi0+bmV4dF8pCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBsaW5rX3BvaW50ZXIgc3RhcnRfbm9kZSA9IHRoaXMtPmdldF9wcmV2aW91c19zdGFydCgpOwotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0X25vZGUtPm5leHRfKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLT5nZXRfYnVja2V0KHRoaXMtPmhhc2hfdG9fYnVja2V0KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PG5vZGVfcG9pbnRlcj4oc3RhcnRfbm9kZS0+bmV4dF8pLT5oYXNoXwotICAgICAgICAgICAgICAgICAgICAgICAgKSktPm5leHRfID0gbjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgIAotICAgICAgICAgICAgICAgICAgICBiLT5uZXh0XyA9IHN0YXJ0X25vZGU7Ci0gICAgICAgICAgICAgICAgICAgIG4tPm5leHRfID0gc3RhcnRfbm9kZS0+bmV4dF87Ci0gICAgICAgICAgICAgICAgICAgIHN0YXJ0X25vZGUtPm5leHRfID0gbjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgbi0+bmV4dF8gPSBiLT5uZXh0Xy0+bmV4dF87Ci0gICAgICAgICAgICAgICAgICAgIGItPm5leHRfLT5uZXh0XyA9IG47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgKyt0aGlzLT5zaXplXzsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcihuKTsKLSAgICAgICAgfQotCi0gICAgICAgIGl0ZXJhdG9yIGVtcGxhY2VfaW1wbChub2RlX2NvbnN0cnVjdG9yJiBhKQotICAgICAgICB7Ci0gICAgICAgICAgICBrZXlfdHlwZSBjb25zdCYgayA9IHRoaXMtPmdldF9rZXkoYS52YWx1ZSgpKTsKLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGtleV9oYXNoID0gdGhpcy0+aGFzaChrKTsKLSAgICAgICAgICAgIGl0ZXJhdG9yIHBvc2l0aW9uID0gdGhpcy0+ZmluZF9ub2RlKGtleV9oYXNoLCBrKTsKLQotICAgICAgICAgICAgLy8gcmVzZXJ2ZSBoYXMgYmFzaWMgZXhjZXB0aW9uIHNhZmV0eSBpZiB0aGUgaGFzaCBmdW5jdGlvbgotICAgICAgICAgICAgLy8gdGhyb3dzLCBzdHJvbmcgb3RoZXJ3aXNlLgotICAgICAgICAgICAgdGhpcy0+cmVzZXJ2ZV9mb3JfaW5zZXJ0KHRoaXMtPnNpemVfICsgMSk7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy0+YWRkX25vZGUoYSwga2V5X2hhc2gsIHBvc2l0aW9uKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgZW1wbGFjZV9pbXBsX25vX3JlaGFzaChub2RlX2NvbnN0cnVjdG9yJiBhKQotICAgICAgICB7Ci0gICAgICAgICAgICBrZXlfdHlwZSBjb25zdCYgayA9IHRoaXMtPmdldF9rZXkoYS52YWx1ZSgpKTsKLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGtleV9oYXNoID0gdGhpcy0+aGFzaChrKTsKLSAgICAgICAgICAgIHRoaXMtPmFkZF9ub2RlKGEsIGtleV9oYXNoLCB0aGlzLT5maW5kX25vZGUoa2V5X2hhc2gsIGspKTsKLSAgICAgICAgfQotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUykKLSMgICBpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUykKLSAgICAgICAgaXRlcmF0b3IgZW1wbGFjZShuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmVtcGxhY2VfYXJnczE8Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpwbGVhc2VfaWdub3JlX3RoaXNfb3ZlcmxvYWQ+IGNvbnN0JikKLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKGZhbHNlKTsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcigpOwotICAgICAgICB9Ci0jICAgZWxzZQotICAgICAgICBpdGVyYXRvciBlbXBsYWNlKAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cGxlYXNlX2lnbm9yZV90aGlzX292ZXJsb2FkIGNvbnN0JikKLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKGZhbHNlKTsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcigpOwotICAgICAgICB9Ci0jICAgZW5kaWYKLSNlbmRpZgotCi0gICAgICAgIHRlbXBsYXRlIDxORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9URU1QTEFURT4KLSAgICAgICAgaXRlcmF0b3IgZW1wbGFjZShORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9BUkdTKQotICAgICAgICB7Ci0gICAgICAgICAgICBub2RlX2NvbnN0cnVjdG9yIGEodGhpcy0+bm9kZV9hbGxvYygpKTsKLSAgICAgICAgICAgIGEuY29uc3RydWN0X3dpdGhfdmFsdWUoTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfRk9SV0FSRCk7Ci0KLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcihlbXBsYWNlX2ltcGwoYSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIEluc2VydCByYW5nZSBtZXRob2RzCi0KLSAgICAgICAgLy8gaWYgaGFzaCBmdW5jdGlvbiB0aHJvd3MsIG9yIGluc2VydGluZyA+IDEgZWxlbWVudCwgYmFzaWMgZXhjZXB0aW9uCi0gICAgICAgIC8vIHNhZmV0eS4gU3Ryb25nIG90aGVyd2lzZQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgST4KLSAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjplbmFibGVfaWZfZm9yd2FyZDxJLCB2b2lkPjo6dHlwZQotICAgICAgICAgICAgaW5zZXJ0X3JhbmdlKEkgaSwgSSBqKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZihpID09IGopIHJldHVybjsKLQotICAgICAgICAgICAgc3RkOjpzaXplX3QgZGlzdGFuY2UgPSBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmRpc3RhbmNlKGksIGopOwotICAgICAgICAgICAgaWYoZGlzdGFuY2UgPT0gMSkgewotICAgICAgICAgICAgICAgIG5vZGVfY29uc3RydWN0b3IgYSh0aGlzLT5ub2RlX2FsbG9jKCkpOwotICAgICAgICAgICAgICAgIGEuY29uc3RydWN0X3dpdGhfdmFsdWUyKCppKTsKLSAgICAgICAgICAgICAgICBlbXBsYWNlX2ltcGwoYSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBPbmx5IHJlcXVpcmUgYmFzaWMgZXhjZXB0aW9uIHNhZmV0eSBoZXJlCi0gICAgICAgICAgICAgICAgdGhpcy0+cmVzZXJ2ZV9mb3JfaW5zZXJ0KHRoaXMtPnNpemVfICsgZGlzdGFuY2UpOwotCi0gICAgICAgICAgICAgICAgbm9kZV9jb25zdHJ1Y3RvciBhKHRoaXMtPm5vZGVfYWxsb2MoKSk7Ci0gICAgICAgICAgICAgICAgZm9yICg7IGkgIT0gajsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGEuY29uc3RydWN0X3dpdGhfdmFsdWUyKCppKTsKLSAgICAgICAgICAgICAgICAgICAgZW1wbGFjZV9pbXBsX25vX3JlaGFzaChhKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgST4KLSAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpkaXNhYmxlX2lmX2ZvcndhcmQ8SSwgdm9pZD46OnR5cGUKLSAgICAgICAgICAgIGluc2VydF9yYW5nZShJIGksIEkgaikKLSAgICAgICAgewotICAgICAgICAgICAgbm9kZV9jb25zdHJ1Y3RvciBhKHRoaXMtPm5vZGVfYWxsb2MoKSk7Ci0gICAgICAgICAgICBmb3IgKDsgaSAhPSBqOyArK2kpIHsKLSAgICAgICAgICAgICAgICBhLmNvbnN0cnVjdF93aXRoX3ZhbHVlMigqaSk7Ci0gICAgICAgICAgICAgICAgZW1wbGFjZV9pbXBsKGEpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIEVyYXNlCi0gICAgICAgIC8vCi0gICAgICAgIC8vIG5vIHRocm93Ci0KLSAgICAgICAgc3RkOjpzaXplX3QgZXJhc2Vfa2V5KGtleV90eXBlIGNvbnN0JiBrKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZighdGhpcy0+c2l6ZV8pIHJldHVybiAwOwotCi0gICAgICAgICAgICBzdGQ6OnNpemVfdCBrZXlfaGFzaCA9IHRoaXMtPmhhc2goayk7Ci0gICAgICAgICAgICBzdGQ6OnNpemVfdCBidWNrZXRfaW5kZXggPSB0aGlzLT5oYXNoX3RvX2J1Y2tldChrZXlfaGFzaCk7Ci0gICAgICAgICAgICBsaW5rX3BvaW50ZXIgcHJldiA9IHRoaXMtPmdldF9wcmV2aW91c19zdGFydChidWNrZXRfaW5kZXgpOwotICAgICAgICAgICAgaWYgKCFwcmV2KSByZXR1cm4gMDsKLQotICAgICAgICAgICAgZm9yICg7OykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoIXByZXYtPm5leHRfKSByZXR1cm4gMDsKLSAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBub2RlX2hhc2ggPQotICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxub2RlX3BvaW50ZXI+KHByZXYtPm5leHRfKS0+aGFzaF87Ci0gICAgICAgICAgICAgICAgaWYgKHRoaXMtPmhhc2hfdG9fYnVja2V0KG5vZGVfaGFzaCkgIT0gYnVja2V0X2luZGV4KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgICAgICBpZiAobm9kZV9oYXNoID09IGtleV9oYXNoICYmCi0gICAgICAgICAgICAgICAgICAgIHRoaXMtPmtleV9lcSgpKGssIHRoaXMtPmdldF9rZXkoCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxub2RlX3BvaW50ZXI+KHByZXYtPm5leHRfKS0+dmFsdWUoKSkpKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBwcmV2ID0gc3RhdGljX2Nhc3Q8bm9kZV9wb2ludGVyPihwcmV2LT5uZXh0XyktPmdyb3VwX3ByZXZfOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBub2RlX3BvaW50ZXIgZmlyc3Rfbm9kZSA9IHN0YXRpY19jYXN0PG5vZGVfcG9pbnRlcj4ocHJldi0+bmV4dF8pOwotICAgICAgICAgICAgbGlua19wb2ludGVyIGVuZCA9IGZpcnN0X25vZGUtPmdyb3VwX3ByZXZfLT5uZXh0XzsKLQotICAgICAgICAgICAgc3RkOjpzaXplX3QgY291bnQgPSB0aGlzLT5kZWxldGVfbm9kZXMocHJldiwgZW5kKTsKLSAgICAgICAgICAgIHRoaXMtPmZpeF9idWNrZXQoYnVja2V0X2luZGV4LCBwcmV2KTsKLSAgICAgICAgICAgIHJldHVybiBjb3VudDsKLSAgICAgICAgfQotCi0gICAgICAgIGl0ZXJhdG9yIGVyYXNlKGNfaXRlcmF0b3IgcikKLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKHIubm9kZV8pOwotICAgICAgICAgICAgaXRlcmF0b3IgbmV4dChyLm5vZGVfKTsKLSAgICAgICAgICAgICsrbmV4dDsKLSAgICAgICAgICAgIGVyYXNlX25vZGVzKHIubm9kZV8sIG5leHQubm9kZV8pOwotICAgICAgICAgICAgcmV0dXJuIG5leHQ7Ci0gICAgICAgIH0KLQotICAgICAgICBpdGVyYXRvciBlcmFzZV9yYW5nZShjX2l0ZXJhdG9yIHIxLCBjX2l0ZXJhdG9yIHIyKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAocjEgPT0gcjIpIHJldHVybiBpdGVyYXRvcihyMi5ub2RlXyk7Ci0gICAgICAgICAgICBlcmFzZV9ub2RlcyhyMS5ub2RlXywgcjIubm9kZV8pOwotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yKHIyLm5vZGVfKTsKLSAgICAgICAgfQotCi0gICAgICAgIGxpbmtfcG9pbnRlciBlcmFzZV9ub2Rlcyhub2RlX3BvaW50ZXIgYmVnaW4sIG5vZGVfcG9pbnRlciBlbmQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGJ1Y2tldF9pbmRleCA9IHRoaXMtPmhhc2hfdG9fYnVja2V0KGJlZ2luLT5oYXNoXyk7Ci0KLSAgICAgICAgICAgIC8vIFNwbGl0IHRoZSBncm91cHMgY29udGFpbmluZyAnYmVnaW4nIGFuZCAnZW5kJy4KLSAgICAgICAgICAgIC8vIEFuZCBnZXQgdGhlIHBvaW50ZXIgdG8gdGhlIG5vZGUgYmVmb3JlIGJlZ2luIHdoaWxlCi0gICAgICAgICAgICAvLyB3ZSdyZSBhdCBpdC4KLSAgICAgICAgICAgIGxpbmtfcG9pbnRlciBwcmV2ID0gc3BsaXRfZ3JvdXBzKGJlZ2luLCBlbmQpOwotCi0gICAgICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGEgJ3ByZXYnIGl0IG1lYW5zIHRoYXQgYmVnaW4gaXMgYXQgdGhlCi0gICAgICAgICAgICAvLyBiZWdpbm5pbmcgb2YgYSBibG9jaywgc28gc2VhcmNoIHRocm91Z2ggdGhlIGJsb2NrcyBpbiB0aGUKLSAgICAgICAgICAgIC8vIHNhbWUgYnVja2V0LgotICAgICAgICAgICAgaWYgKCFwcmV2KSB7Ci0gICAgICAgICAgICAgICAgcHJldiA9IHRoaXMtPmdldF9wcmV2aW91c19zdGFydChidWNrZXRfaW5kZXgpOwotICAgICAgICAgICAgICAgIHdoaWxlIChwcmV2LT5uZXh0XyAhPSBiZWdpbikKLSAgICAgICAgICAgICAgICAgICAgcHJldiA9IHN0YXRpY19jYXN0PG5vZGVfcG9pbnRlcj4ocHJldi0+bmV4dF8pLT5ncm91cF9wcmV2XzsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gRGVsZXRlIHRoZSBub2Rlcy4KLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBsaW5rX3BvaW50ZXIgZ3JvdXBfZW5kID0KLSAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8bm9kZV9wb2ludGVyPihwcmV2LT5uZXh0XyktPmdyb3VwX3ByZXZfLT5uZXh0XzsKLSAgICAgICAgICAgICAgICB0aGlzLT5kZWxldGVfbm9kZXMocHJldiwgZ3JvdXBfZW5kKTsKLSAgICAgICAgICAgICAgICBidWNrZXRfaW5kZXggPSB0aGlzLT5maXhfYnVja2V0KGJ1Y2tldF9pbmRleCwgcHJldik7Ci0gICAgICAgICAgICB9IHdoaWxlKHByZXYtPm5leHRfICE9IGVuZCk7Ci0KLSAgICAgICAgICAgIHJldHVybiBwcmV2OwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIGxpbmtfcG9pbnRlciBzcGxpdF9ncm91cHMobm9kZV9wb2ludGVyIGJlZ2luLCBub2RlX3BvaW50ZXIgZW5kKQotICAgICAgICB7Ci0gICAgICAgICAgICBub2RlX3BvaW50ZXIgcHJldiA9IGJlZ2luLT5ncm91cF9wcmV2XzsKLSAgICAgICAgICAgIGlmIChwcmV2LT5uZXh0XyAhPSBiZWdpbikgcHJldiA9IG5vZGVfcG9pbnRlcigpOwotCi0gICAgICAgICAgICBpZiAoZW5kKSB7Ci0gICAgICAgICAgICAgICAgbm9kZV9wb2ludGVyIGZpcnN0ID0gZW5kOwotICAgICAgICAgICAgICAgIHdoaWxlIChmaXJzdCAhPSBiZWdpbiAmJiBmaXJzdC0+Z3JvdXBfcHJldl8tPm5leHRfID09IGZpcnN0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGZpcnN0ID0gZmlyc3QtPmdyb3VwX3ByZXZfOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojpzd2FwKGZpcnN0LT5ncm91cF9wcmV2XywgZW5kLT5ncm91cF9wcmV2Xyk7Ci0gICAgICAgICAgICAgICAgaWYgKGZpcnN0ID09IGJlZ2luKSByZXR1cm4gcHJldjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKHByZXYpIHsKLSAgICAgICAgICAgICAgICBub2RlX3BvaW50ZXIgZmlyc3QgPSBwcmV2OwotICAgICAgICAgICAgICAgIHdoaWxlIChmaXJzdC0+Z3JvdXBfcHJldl8tPm5leHRfID09IGZpcnN0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGZpcnN0ID0gZmlyc3QtPmdyb3VwX3ByZXZfOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6c3dhcChmaXJzdC0+Z3JvdXBfcHJldl8sIGJlZ2luLT5ncm91cF9wcmV2Xyk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVybiBwcmV2OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIGZpbGxfYnVja2V0cwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBOb2RlQ3JlYXRvcj4KLSAgICAgICAgc3RhdGljIHZvaWQgZmlsbF9idWNrZXRzKGl0ZXJhdG9yIG4sIHRhYmxlJiBkc3QsCi0gICAgICAgICAgICBOb2RlQ3JlYXRvciYgY3JlYXRvcikKLSAgICAgICAgewotICAgICAgICAgICAgbGlua19wb2ludGVyIHByZXYgPSBkc3QuZ2V0X3ByZXZpb3VzX3N0YXJ0KCk7Ci0KLSAgICAgICAgICAgIHdoaWxlIChuLm5vZGVfKSB7Ci0gICAgICAgICAgICAgICAgc3RkOjpzaXplX3Qga2V5X2hhc2ggPSBuLm5vZGVfLT5oYXNoXzsKLSAgICAgICAgICAgICAgICBpdGVyYXRvciBncm91cF9lbmQobi5ub2RlXy0+Z3JvdXBfcHJldl8tPm5leHRfKTsKLQotICAgICAgICAgICAgICAgIG5vZGVfcG9pbnRlciBmaXJzdF9ub2RlID0gY3JlYXRvci5jcmVhdGUoKm4pOwotICAgICAgICAgICAgICAgIG5vZGVfcG9pbnRlciBlbmQgPSBmaXJzdF9ub2RlOwotICAgICAgICAgICAgICAgIGZpcnN0X25vZGUtPmhhc2hfID0ga2V5X2hhc2g7Ci0gICAgICAgICAgICAgICAgcHJldi0+bmV4dF8gPSBmaXJzdF9ub2RlOwotICAgICAgICAgICAgICAgICsrZHN0LnNpemVfOwotCi0gICAgICAgICAgICAgICAgZm9yICgrK247IG4gIT0gZ3JvdXBfZW5kOyArK24pCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBlbmQgPSBjcmVhdG9yLmNyZWF0ZSgqbik7Ci0gICAgICAgICAgICAgICAgICAgIGVuZC0+aGFzaF8gPSBrZXlfaGFzaDsKLSAgICAgICAgICAgICAgICAgICAgYWRkX2FmdGVyX25vZGUoZW5kLCBmaXJzdF9ub2RlKTsKLSAgICAgICAgICAgICAgICAgICAgKytkc3Quc2l6ZV87Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgcHJldiA9IHBsYWNlX2luX2J1Y2tldChkc3QsIHByZXYsIGVuZCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBzdHJvbmcgb3RoZXJ3aXNlIGV4Y2VwdGlvbiBzYWZldHkKLSAgICAgICAgdm9pZCByZWhhc2hfaW1wbChzdGQ6OnNpemVfdCBudW1fYnVja2V0cykKLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKHRoaXMtPmJ1Y2tldHNfKTsKLQotICAgICAgICAgICAgdGhpcy0+Y3JlYXRlX2J1Y2tldHMobnVtX2J1Y2tldHMpOwotICAgICAgICAgICAgbGlua19wb2ludGVyIHByZXYgPSB0aGlzLT5nZXRfcHJldmlvdXNfc3RhcnQoKTsKLSAgICAgICAgICAgIHdoaWxlIChwcmV2LT5uZXh0XykKLSAgICAgICAgICAgICAgICBwcmV2ID0gcGxhY2VfaW5fYnVja2V0KCp0aGlzLCBwcmV2LAotICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxub2RlX3BvaW50ZXI+KHByZXYtPm5leHRfKS0+Z3JvdXBfcHJldl8pOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSXRlcmF0ZSB0aHJvdWdoIHRoZSBub2RlcyBwbGFjaW5nIHRoZW0gaW4gdGhlIGNvcnJlY3QgYnVja2V0cy4KLSAgICAgICAgLy8gcHJlOiBwcmV2LT5uZXh0XyBpcyBub3QgbnVsbC4KLSAgICAgICAgc3RhdGljIGxpbmtfcG9pbnRlciBwbGFjZV9pbl9idWNrZXQodGFibGUmIGRzdCwKLSAgICAgICAgICAgICAgICBsaW5rX3BvaW50ZXIgcHJldiwgbm9kZV9wb2ludGVyIGVuZCkKLSAgICAgICAgewotICAgICAgICAgICAgYnVja2V0X3BvaW50ZXIgYiA9IGRzdC5nZXRfYnVja2V0KGRzdC5oYXNoX3RvX2J1Y2tldChlbmQtPmhhc2hfKSk7Ci0KLSAgICAgICAgICAgIGlmICghYi0+bmV4dF8pIHsKLSAgICAgICAgICAgICAgICBiLT5uZXh0XyA9IHByZXY7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVuZDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGxpbmtfcG9pbnRlciBuZXh0ID0gZW5kLT5uZXh0XzsKLSAgICAgICAgICAgICAgICBlbmQtPm5leHRfID0gYi0+bmV4dF8tPm5leHRfOwotICAgICAgICAgICAgICAgIGItPm5leHRfLT5uZXh0XyA9IHByZXYtPm5leHRfOwotICAgICAgICAgICAgICAgIHByZXYtPm5leHRfID0gbmV4dDsKLSAgICAgICAgICAgICAgICByZXR1cm4gcHJldjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH07Ci19fX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvZXh0cmFjdF9rZXkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL2V4dHJhY3Rfa2V5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzdlN2FiYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvZXh0cmFjdF9rZXkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTgzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IChDKSAyMDA1LTIwMTEgRGFuaWVsIEphbWVzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9VTk9SREVSRURfREVUQUlMX0VYVFJBQ1RfS0VZX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfREVUQUlMX0VYVFJBQ1RfS0VZX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC90YWJsZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgdW5vcmRlcmVkIHsKLW5hbWVzcGFjZSBkZXRhaWwgewotCi0gICAgLy8ga2V5IGV4dHJhY3RvcnMKLSAgICAvLwotICAgIC8vIG5vIHRocm93Ci0gICAgLy8KLSAgICAvLyAnZXh0cmFjdF9rZXknIGlzIGNhbGxlZCB3aXRoIHRoZSBlbXBsYWNlIHBhcmFtZXRlcnMgdG8gcmV0dXJuIGEKLSAgICAvLyBrZXkgaWYgYXZhaWxhYmxlIG9yICdub19rZXknIGlzIG9uZSBpc24ndCBhbmQgd2lsbCBuZWVkIHRvIGJlCi0gICAgLy8gY29uc3RydWN0ZWQuIFRoaXMgY291bGQgYmUgZG9uZSBieSBvdmVybG9hZGluZyB0aGUgZW1wbGFjZSBpbXBsZW1lbnRhdGlvbgotICAgIC8vIGZvciB0aGUgZGlmZmVyZW50IGNhc2VzLCBidXQgdGhhdCdzIGEgYml0IHRyaWNreSBvbiBjb21waWxlcnMgd2l0aG91dAotICAgIC8vIHZhcmlhZGljIHRlbXBsYXRlcy4KLQotICAgIHN0cnVjdCBub19rZXkgewotICAgICAgICBub19rZXkoKSB7fQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gbm9fa2V5KFQgY29uc3QmKSB7fQotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBUPgotICAgIHN0cnVjdCBpc19rZXkgewotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDI+Ci0gICAgICAgIHN0YXRpYyBjaG9pY2UxOjp0eXBlIHRlc3QoVDIgY29uc3QmKTsKLSAgICAgICAgc3RhdGljIGNob2ljZTI6OnR5cGUgdGVzdChLZXkgY29uc3QmKTsKLSAgICAgICAgCi0gICAgICAgIGVudW0geyB2YWx1ZSA9IHNpemVvZih0ZXN0KG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6bWFrZTxUPigpKSkgPT0KLSAgICAgICAgICAgIHNpemVvZihjaG9pY2UyOjp0eXBlKSB9OwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjppZl90cnVlPHZhbHVlPjo6Ci0gICAgICAgICAgICBORE5CT09TVF9ORVNURURfVEVNUExBVEUgdGhlbjxLZXkgY29uc3QmLCBub19rZXk+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBWYWx1ZVR5cGU+Ci0gICAgc3RydWN0IHNldF9leHRyYWN0b3IKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVmFsdWVUeXBlIHZhbHVlX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgVmFsdWVUeXBlIGtleV90eXBlOwotCi0gICAgICAgIHN0YXRpYyBrZXlfdHlwZSBjb25zdCYgZXh0cmFjdChrZXlfdHlwZSBjb25zdCYgdikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHY7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgbm9fa2V5IGV4dHJhY3QoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbm9fa2V5KCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gQXJncz4KLSAgICAgICAgc3RhdGljIG5vX2tleSBleHRyYWN0KEFyZ3MgY29uc3QmLi4uKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbm9fa2V5KCk7Ci0gICAgICAgIH0KLSNlbHNlCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBBcmc+Ci0gICAgICAgIHN0YXRpYyBub19rZXkgZXh0cmFjdChBcmcgY29uc3QmKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbm9fa2V5KCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgQXJnMSwgY2xhc3MgQXJnMj4KLSAgICAgICAgc3RhdGljIG5vX2tleSBleHRyYWN0KEFyZzEgY29uc3QmLCBBcmcyIGNvbnN0JikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5vX2tleSgpOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPGNsYXNzIEtleSwgY2xhc3MgVmFsdWVUeXBlPgotICAgIHN0cnVjdCBtYXBfZXh0cmFjdG9yCi0gICAgewotICAgICAgICB0eXBlZGVmIFZhbHVlVHlwZSB2YWx1ZV90eXBlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfY29uc3Q8S2V5Pjo6dHlwZSBrZXlfdHlwZTsKLQotICAgICAgICBzdGF0aWMga2V5X3R5cGUgY29uc3QmIGV4dHJhY3QodmFsdWVfdHlwZSBjb25zdCYgdikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHYuZmlyc3Q7Ci0gICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgU2Vjb25kPgotICAgICAgICBzdGF0aWMga2V5X3R5cGUgY29uc3QmIGV4dHJhY3Qoc3RkOjpwYWlyPGtleV90eXBlLCBTZWNvbmQ+IGNvbnN0JiB2KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdi5maXJzdDsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBTZWNvbmQ+Ci0gICAgICAgIHN0YXRpYyBrZXlfdHlwZSBjb25zdCYgZXh0cmFjdCgKLSAgICAgICAgICAgIHN0ZDo6cGFpcjxrZXlfdHlwZSBjb25zdCwgU2Vjb25kPiBjb25zdCYgdikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHYuZmlyc3Q7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgQXJnMT4KLSAgICAgICAgc3RhdGljIGtleV90eXBlIGNvbnN0JiBleHRyYWN0KGtleV90eXBlIGNvbnN0JiBrLCBBcmcxIGNvbnN0JikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGs7Ci0gICAgICAgIH0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUykKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3M+Ci0gICAgICAgIHN0YXRpYyBub19rZXkgZXh0cmFjdChBcmdzIGNvbnN0Ji4uLikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5vX2tleSgpOwotICAgICAgICB9Ci0jZWxzZQotCi0gICAgICAgIHN0YXRpYyBub19rZXkgZXh0cmFjdCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBub19rZXkoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBBcmc+Ci0gICAgICAgIHN0YXRpYyBub19rZXkgZXh0cmFjdChBcmcgY29uc3QmKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbm9fa2V5KCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgQXJnLCBjbGFzcyBBcmcxPgotICAgICAgICBzdGF0aWMgbm9fa2V5IGV4dHJhY3QoQXJnIGNvbnN0JiwgQXJnMSBjb25zdCYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBub19rZXkoKTsKLSAgICAgICAgfQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMpCi0KLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0tFWV9GUk9NX1RVUExFKG5hbWVzcGFjZV8pICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdGF0aWMgbm9fa2V5IGV4dHJhY3QobmRuYm9vc3Q6OnVub3JkZXJlZDo6cGllY2V3aXNlX2NvbnN0cnVjdF90LCAgICAgIFwKLSAgICAgICAgICAgICAgICBuYW1lc3BhY2VfIHR1cGxlPD4gY29uc3QmLCBUMiBjb25zdCYpICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgcmV0dXJuIG5vX2tleSgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVDI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljIHR5cGVuYW1lIGlzX2tleTxrZXlfdHlwZSwgVD46OnR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBleHRyYWN0KG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OnBpZWNld2lzZV9jb25zdHJ1Y3RfdCwgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIG5hbWVzcGFjZV8gdHVwbGU8VD4gY29uc3QmIGssIFQyIGNvbnN0JikgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgaXNfa2V5PGtleV90eXBlLCBUPjo6dHlwZSggICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIG5hbWVzcGFjZV8gZ2V0PDA+KGspKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgfQotCi0jZWxzZQotCi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9LRVlfRlJPTV9UVVBMRShuYW1lc3BhY2VfKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdGF0aWMgbm9fa2V5IGV4dHJhY3QobmRuYm9vc3Q6OnVub3JkZXJlZDo6cGllY2V3aXNlX2NvbnN0cnVjdF90LCAgICAgIFwKLSAgICAgICAgICAgICAgICBuYW1lc3BhY2VfIHR1cGxlPD4gY29uc3QmKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgcmV0dXJuIG5vX2tleSgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljIHR5cGVuYW1lIGlzX2tleTxrZXlfdHlwZSwgVD46OnR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBleHRyYWN0KG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OnBpZWNld2lzZV9jb25zdHJ1Y3RfdCwgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIG5hbWVzcGFjZV8gdHVwbGU8VD4gY29uc3QmIGspICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgaXNfa2V5PGtleV90eXBlLCBUPjo6dHlwZSggICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIG5hbWVzcGFjZV8gZ2V0PDA+KGspKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgfQotCi0jZW5kaWYKLQotTkROQk9PU1RfVU5PUkRFUkVEX0tFWV9GUk9NX1RVUExFKG5kbmJvb3N0OjopCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfVFVQTEUpCi1ORE5CT09TVF9VTk9SREVSRURfS0VZX0ZST01fVFVQTEUoc3RkOjopCi0jZW5kaWYKLSAgICB9OwotfX19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzRmNGNkYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgRGFuaWVsIEphbWVzLgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVU5PUkRFUkVEX0ZXRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0ZXRF9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci1uYW1lc3BhY2UgdW5vcmRlcmVkCi17Ci0gICAgc3RydWN0IHBpZWNld2lzZV9jb25zdHJ1Y3RfdCB7fTsKLSAgICBjb25zdCBwaWVjZXdpc2VfY29uc3RydWN0X3QgcGllY2V3aXNlX2NvbnN0cnVjdCA9IHBpZWNld2lzZV9jb25zdHJ1Y3RfdCgpOwotfQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC90YWJsZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvdGFibGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjQxNDgzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC90YWJsZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NjEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwNCBKZXJlbXkgQi4gTWFpdGluLVNoZXBhcmQuCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxMSBEYW5pZWwgSmFtZXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9ERVRBSUxfQUxMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfREVUQUlMX0FMTF9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvYnVja2V0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC91dGlsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hbGlnbmVkX3N0b3JhZ2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FsaWdubWVudF9vZi5ocHA+Ci0jaW5jbHVkZSA8Y21hdGg+Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMjcpIC8vIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24gaXMgY29uc3RhbnQKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9VTk9SREVSRURfREVQUkVDQVRFRF9FUVVBTElUWSkKLQotI2lmIGRlZmluZWQoX19FREdfXykKLSNlbGlmIGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKSB8fCBkZWZpbmVkKF9fRE1DX18pCi0jcHJhZ21hIG1lc3NhZ2UoIldhcm5pbmc6IE5ETkJPT1NUX1VOT1JERVJFRF9ERVBSRUNBVEVEX0VRVUFMSVRZIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuIikKLSNlbGlmIGRlZmluZWQoX19HTlVDX18pIHx8IGRlZmluZWQoX19IUF9hQ0MpIHx8IFwKLSAgICBkZWZpbmVkKF9fU1VOUFJPX0NDKSB8fCBkZWZpbmVkKF9fSUJNQ1BQX18pCi0jd2FybmluZyAiTkROQk9PU1RfVU5PUkRFUkVEX0RFUFJFQ0FURURfRVFVQUxJVFkgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4iCi0jZW5kaWYKLQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB1bm9yZGVyZWQgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAvLyBjb252ZXJ0IGRvdWJsZSB0byBzdGQ6OnNpemVfdAotCi0gICAgaW5saW5lIHN0ZDo6c2l6ZV90IGRvdWJsZV90b19zaXplKGRvdWJsZSBmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGYgPj0gc3RhdGljX2Nhc3Q8ZG91YmxlPigKLSAgICAgICAgICAgIChzdGQ6Om51bWVyaWNfbGltaXRzPHN0ZDo6c2l6ZV90Pjo6bWF4KSgpKSA/Ci0gICAgICAgICAgICAoc3RkOjpudW1lcmljX2xpbWl0czxzdGQ6OnNpemVfdD46Om1heCkoKSA6Ci0gICAgICAgICAgICBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oZik7Ci0gICAgfQotCi0gICAgLy8gVGhlIHNwYWNlIHVzZWQgdG8gc3RvcmUgdmFsdWVzIGluIGEgbm9kZS4KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBWYWx1ZVR5cGU+Ci0gICAgc3RydWN0IHZhbHVlX2Jhc2UKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVmFsdWVUeXBlIHZhbHVlX3R5cGU7Ci0KLSAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmFsaWduZWRfc3RvcmFnZTwKLSAgICAgICAgICAgIHNpemVvZih2YWx1ZV90eXBlKSwKLSAgICAgICAgICAgIG5kbmJvb3N0OjphbGlnbm1lbnRfb2Y8dmFsdWVfdHlwZT46OnZhbHVlPjo6dHlwZSBkYXRhXzsKLQotICAgICAgICB2b2lkKiBhZGRyZXNzKCkgewotICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgICAgIH0KLQotICAgICAgICB2YWx1ZV90eXBlJiB2YWx1ZSgpIHsKLSAgICAgICAgICAgIHJldHVybiAqKFZhbHVlVHlwZSopIHRoaXM7Ci0gICAgICAgIH0KLQotICAgICAgICB2YWx1ZV90eXBlKiB2YWx1ZV9wdHIoKSB7Ci0gICAgICAgICAgICByZXR1cm4gKFZhbHVlVHlwZSopIHRoaXM7Ci0gICAgICAgIH0KLQotICAgIHByaXZhdGU6Ci0KLSAgICAgICAgdmFsdWVfYmFzZSYgb3BlcmF0b3I9KHZhbHVlX2Jhc2UgY29uc3QmKTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE5vZGVBbGxvYz4KLSAgICBzdHJ1Y3QgY29weV9ub2RlcwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmFsbG9jYXRvcl90cmFpdHM8Tm9kZUFsbG9jPgotICAgICAgICAgICAgbm9kZV9hbGxvY2F0b3JfdHJhaXRzOwotCi0gICAgICAgIG5vZGVfY29uc3RydWN0b3I8Tm9kZUFsbG9jPiBjb25zdHJ1Y3RvcjsKLQotICAgICAgICBleHBsaWNpdCBjb3B5X25vZGVzKE5vZGVBbGxvYyYgYSkgOiBjb25zdHJ1Y3RvcihhKSB7fQotCi0gICAgICAgIHR5cGVuYW1lIG5vZGVfYWxsb2NhdG9yX3RyYWl0czo6cG9pbnRlciBjcmVhdGUoCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgbm9kZV9hbGxvY2F0b3JfdHJhaXRzOjp2YWx1ZV90eXBlOjp2YWx1ZV90eXBlIGNvbnN0JiB2KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdHJ1Y3Rvci5jb25zdHJ1Y3Rfd2l0aF92YWx1ZTIodik7Ci0gICAgICAgICAgICByZXR1cm4gY29uc3RydWN0b3IucmVsZWFzZSgpOwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBOb2RlQWxsb2M+Ci0gICAgc3RydWN0IG1vdmVfbm9kZXMKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjphbGxvY2F0b3JfdHJhaXRzPE5vZGVBbGxvYz4KLSAgICAgICAgICAgIG5vZGVfYWxsb2NhdG9yX3RyYWl0czsKLQotICAgICAgICBub2RlX2NvbnN0cnVjdG9yPE5vZGVBbGxvYz4gY29uc3RydWN0b3I7Ci0KLSAgICAgICAgZXhwbGljaXQgbW92ZV9ub2RlcyhOb2RlQWxsb2MmIGEpIDogY29uc3RydWN0b3IoYSkge30KLQotICAgICAgICB0eXBlbmFtZSBub2RlX2FsbG9jYXRvcl90cmFpdHM6OnBvaW50ZXIgY3JlYXRlKAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIG5vZGVfYWxsb2NhdG9yX3RyYWl0czo6dmFsdWVfdHlwZTo6dmFsdWVfdHlwZSYgdikKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3RydWN0b3IuY29uc3RydWN0X3dpdGhfdmFsdWUyKG5kbmJvb3N0Ojptb3ZlKHYpKTsKLSAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3Rvci5yZWxlYXNlKCk7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEJ1Y2tldHM+Ci0gICAgc3RydWN0IGFzc2lnbl9ub2RlcwotICAgIHsKLSAgICAgICAgbm9kZV9ob2xkZXI8dHlwZW5hbWUgQnVja2V0czo6bm9kZV9hbGxvY2F0b3I+IGhvbGRlcjsKLQotICAgICAgICBleHBsaWNpdCBhc3NpZ25fbm9kZXMoQnVja2V0cyYgYikgOiBob2xkZXIoYikge30KLQotICAgICAgICB0eXBlbmFtZSBCdWNrZXRzOjpub2RlX3BvaW50ZXIgY3JlYXRlKAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIEJ1Y2tldHM6OnZhbHVlX3R5cGUgY29uc3QmIHYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBob2xkZXIuY29weV9vZih2KTsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQnVja2V0cz4KLSAgICBzdHJ1Y3QgbW92ZV9hc3NpZ25fbm9kZXMKLSAgICB7Ci0gICAgICAgIG5vZGVfaG9sZGVyPHR5cGVuYW1lIEJ1Y2tldHM6Om5vZGVfYWxsb2NhdG9yPiBob2xkZXI7Ci0KLSAgICAgICAgZXhwbGljaXQgbW92ZV9hc3NpZ25fbm9kZXMoQnVja2V0cyYgYikgOiBob2xkZXIoYikge30KLQotICAgICAgICB0eXBlbmFtZSBCdWNrZXRzOjpub2RlX3BvaW50ZXIgY3JlYXRlKAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIEJ1Y2tldHM6OnZhbHVlX3R5cGUmIHYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBob2xkZXIubW92ZV9jb3B5X29mKHYpOwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlcz4KLSAgICBzdHJ1Y3QgdGFibGUgOgotICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmZ1bmN0aW9uczwKLSAgICAgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpoYXNoZXIsCi0gICAgICAgICAgICB0eXBlbmFtZSBUeXBlczo6a2V5X2VxdWFsPgotICAgIHsKLSAgICBwcml2YXRlOgotICAgICAgICB0YWJsZSh0YWJsZSBjb25zdCYpOwotICAgICAgICB0YWJsZSYgb3BlcmF0b3I9KHRhYmxlIGNvbnN0Jik7Ci0gICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFR5cGVzOjpub2RlIG5vZGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHlwZXM6OmJ1Y2tldCBidWNrZXQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHlwZXM6Omhhc2hlciBoYXNoZXI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHlwZXM6OmtleV9lcXVhbCBrZXlfZXF1YWw7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHlwZXM6OmtleV90eXBlIGtleV90eXBlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFR5cGVzOjpleHRyYWN0b3IgZXh0cmFjdG9yOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFR5cGVzOjp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHlwZXM6OnRhYmxlIHRhYmxlX2ltcGw7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHlwZXM6OmxpbmtfcG9pbnRlciBsaW5rX3BvaW50ZXI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHlwZXM6OnBvbGljeSBwb2xpY3k7Ci0KLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmZ1bmN0aW9uczwKLSAgICAgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpoYXNoZXIsCi0gICAgICAgICAgICB0eXBlbmFtZSBUeXBlczo6a2V5X2VxdWFsPiBmdW5jdGlvbnM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZnVuY3Rpb25zOjpzZXRfaGFzaF9mdW5jdGlvbnMgc2V0X2hhc2hfZnVuY3Rpb25zOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHlwZXM6OmFsbG9jYXRvciBhbGxvY2F0b3I7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjoKLSAgICAgICAgICAgIHJlYmluZF93cmFwPGFsbG9jYXRvciwgbm9kZT46OnR5cGUgbm9kZV9hbGxvY2F0b3I7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjoKLSAgICAgICAgICAgIHJlYmluZF93cmFwPGFsbG9jYXRvciwgYnVja2V0Pjo6dHlwZSBidWNrZXRfYWxsb2NhdG9yOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6YWxsb2NhdG9yX3RyYWl0czxub2RlX2FsbG9jYXRvcj4KLSAgICAgICAgICAgIG5vZGVfYWxsb2NhdG9yX3RyYWl0czsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmFsbG9jYXRvcl90cmFpdHM8YnVja2V0X2FsbG9jYXRvcj4KLSAgICAgICAgICAgIGJ1Y2tldF9hbGxvY2F0b3JfdHJhaXRzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5vZGVfYWxsb2NhdG9yX3RyYWl0czo6cG9pbnRlcgotICAgICAgICAgICAgbm9kZV9wb2ludGVyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5vZGVfYWxsb2NhdG9yX3RyYWl0czo6Y29uc3RfcG9pbnRlcgotICAgICAgICAgICAgY29uc3Rfbm9kZV9wb2ludGVyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGJ1Y2tldF9hbGxvY2F0b3JfdHJhaXRzOjpwb2ludGVyCi0gICAgICAgICAgICBidWNrZXRfcG9pbnRlcjsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om5vZGVfY29uc3RydWN0b3I8bm9kZV9hbGxvY2F0b3I+Ci0gICAgICAgICAgICBub2RlX2NvbnN0cnVjdG9yOwotCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6aXRlcmF0b3JfZGV0YWlsOjoKLSAgICAgICAgICAgIGl0ZXJhdG9yPG5vZGU+IGl0ZXJhdG9yOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6Oml0ZXJhdG9yX2RldGFpbDo6Ci0gICAgICAgICAgICBjX2l0ZXJhdG9yPG5vZGUsIGNvbnN0X25vZGVfcG9pbnRlcj4gY19pdGVyYXRvcjsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjppdGVyYXRvcl9kZXRhaWw6OgotICAgICAgICAgICAgbF9pdGVyYXRvcjxub2RlLCBwb2xpY3k+IGxfaXRlcmF0b3I7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6aXRlcmF0b3JfZGV0YWlsOjoKLSAgICAgICAgICAgIGNsX2l0ZXJhdG9yPG5vZGUsIGNvbnN0X25vZGVfcG9pbnRlciwgcG9saWN5PiBjbF9pdGVyYXRvcjsKLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gTWVtYmVycwotCi0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Y29tcHJlc3NlZDxidWNrZXRfYWxsb2NhdG9yLCBub2RlX2FsbG9jYXRvcj4KLSAgICAgICAgICAgIGFsbG9jYXRvcnNfOwotICAgICAgICBzdGQ6OnNpemVfdCBidWNrZXRfY291bnRfOwotICAgICAgICBzdGQ6OnNpemVfdCBzaXplXzsKLSAgICAgICAgZmxvYXQgbWxmXzsKLSAgICAgICAgc3RkOjpzaXplX3QgbWF4X2xvYWRfOwotICAgICAgICBidWNrZXRfcG9pbnRlciBidWNrZXRzXzsKLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gRGF0YSBhY2Nlc3MKLQotICAgICAgICBidWNrZXRfYWxsb2NhdG9yIGNvbnN0JiBidWNrZXRfYWxsb2MoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWxsb2NhdG9yc18uZmlyc3QoKTsKLSAgICAgICAgfQotCi0gICAgICAgIG5vZGVfYWxsb2NhdG9yIGNvbnN0JiBub2RlX2FsbG9jKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRvcnNfLnNlY29uZCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgYnVja2V0X2FsbG9jYXRvciYgYnVja2V0X2FsbG9jKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRvcnNfLmZpcnN0KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBub2RlX2FsbG9jYXRvciYgbm9kZV9hbGxvYygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhbGxvY2F0b3JzXy5zZWNvbmQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0ZDo6c2l6ZV90IG1heF9idWNrZXRfY291bnQoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICAvLyAtMSB0byBhY2NvdW50IGZvciB0aGUgc3RhcnQgYnVja2V0LgotICAgICAgICAgICAgcmV0dXJuIHBvbGljeTo6cHJldl9idWNrZXRfY291bnQoCi0gICAgICAgICAgICAgICAgYnVja2V0X2FsbG9jYXRvcl90cmFpdHM6Om1heF9zaXplKGJ1Y2tldF9hbGxvYygpKSAtIDEpOwotICAgICAgICB9Ci0KLSAgICAgICAgYnVja2V0X3BvaW50ZXIgZ2V0X2J1Y2tldChzdGQ6OnNpemVfdCBidWNrZXRfaW5kZXgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVChidWNrZXRzXyk7Ci0gICAgICAgICAgICByZXR1cm4gYnVja2V0c18gKyBzdGF0aWNfY2FzdDxzdGQ6OnB0cmRpZmZfdD4oYnVja2V0X2luZGV4KTsKLSAgICAgICAgfQotCi0gICAgICAgIGxpbmtfcG9pbnRlciBnZXRfcHJldmlvdXNfc3RhcnQoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZ2V0X2J1Y2tldChidWNrZXRfY291bnRfKS0+Zmlyc3RfZnJvbV9zdGFydCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgbGlua19wb2ludGVyIGdldF9wcmV2aW91c19zdGFydChzdGQ6OnNpemVfdCBidWNrZXRfaW5kZXgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBnZXRfYnVja2V0KGJ1Y2tldF9pbmRleCktPm5leHRfOwotICAgICAgICB9Ci0KLSAgICAgICAgaXRlcmF0b3IgYmVnaW4oKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc2l6ZV8gPyBpdGVyYXRvcihnZXRfcHJldmlvdXNfc3RhcnQoKS0+bmV4dF8pIDogaXRlcmF0b3IoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGl0ZXJhdG9yIGJlZ2luKHN0ZDo6c2l6ZV90IGJ1Y2tldF9pbmRleCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFzaXplXykgcmV0dXJuIGl0ZXJhdG9yKCk7Ci0gICAgICAgICAgICBsaW5rX3BvaW50ZXIgcHJldiA9IGdldF9wcmV2aW91c19zdGFydChidWNrZXRfaW5kZXgpOwotICAgICAgICAgICAgcmV0dXJuIHByZXYgPyBpdGVyYXRvcihwcmV2LT5uZXh0XykgOiBpdGVyYXRvcigpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBzdGQ6OnNpemVfdCBoYXNoX3RvX2J1Y2tldChzdGQ6OnNpemVfdCBoYXNoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcG9saWN5Ojp0b19idWNrZXQoYnVja2V0X2NvdW50XywgaGFzaCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmbG9hdCBsb2FkX2ZhY3RvcigpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVChidWNrZXRfY291bnRfICE9IDApOwotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihzaXplXykKLSAgICAgICAgICAgICAgICAvIHN0YXRpY19jYXN0PGZsb2F0PihidWNrZXRfY291bnRfKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0ZDo6c2l6ZV90IGJ1Y2tldF9zaXplKHN0ZDo6c2l6ZV90IGluZGV4KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBpdGVyYXRvciBpdCA9IGJlZ2luKGluZGV4KTsKLSAgICAgICAgICAgIGlmICghaXQubm9kZV8pIHJldHVybiAwOwotCi0gICAgICAgICAgICBzdGQ6OnNpemVfdCBjb3VudCA9IDA7Ci0gICAgICAgICAgICB3aGlsZShpdC5ub2RlXyAmJiBoYXNoX3RvX2J1Y2tldChpdC5ub2RlXy0+aGFzaF8pID09IGluZGV4KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICsrY291bnQ7Ci0gICAgICAgICAgICAgICAgKytpdDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmV0dXJuIGNvdW50OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIExvYWQgbWV0aG9kcwotCi0gICAgICAgIHN0ZDo6c2l6ZV90IG1heF9zaXplKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICAKLSAgICAgICAgICAgIC8vIHNpemUgPCBtbGZfICogY291bnQKLSAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmRvdWJsZV90b19zaXplKGNlaWwoCi0gICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4obWxmXykgKgotICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KG1heF9idWNrZXRfY291bnQoKSkKLSAgICAgICAgICAgICAgICApKSAtIDE7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHJlY2FsY3VsYXRlX21heF9sb2FkKCkKLSAgICAgICAgewotICAgICAgICAgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICAKLSAgICAgICAgICAgIC8vIEZyb20gNi4zLjEvMTM6Ci0gICAgICAgICAgICAvLyBPbmx5IHJlc2l6ZSB3aGVuIHNpemUgPj0gbWxmXyAqIGNvdW50Ci0gICAgICAgICAgICBtYXhfbG9hZF8gPSBidWNrZXRzXyA/IG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZG91YmxlX3RvX3NpemUoY2VpbCgKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihtbGZfKSAqCi0gICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4oYnVja2V0X2NvdW50XykKLSAgICAgICAgICAgICAgICApKSA6IDA7Ci0KLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgbWF4X2xvYWRfZmFjdG9yKGZsb2F0IHopCi0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVCh6ID4gMCk7Ci0gICAgICAgICAgICBtbGZfID0gKHN0ZDo6bWF4KSh6LCBtaW5pbXVtX21heF9sb2FkX2ZhY3Rvcik7Ci0gICAgICAgICAgICByZWNhbGN1bGF0ZV9tYXhfbG9hZCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RkOjpzaXplX3QgbWluX2J1Y2tldHNfZm9yX3NpemUoc3RkOjpzaXplX3Qgc2l6ZSkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKG1sZl8gPj0gbWluaW11bV9tYXhfbG9hZF9mYWN0b3IpOwotICAgIAotICAgICAgICAgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICAKLSAgICAgICAgICAgIC8vIEZyb20gNi4zLjEvMTM6Ci0gICAgICAgICAgICAvLyBzaXplIDwgbWxmXyAqIGNvdW50Ci0gICAgICAgICAgICAvLyA9PiBjb3VudCA+IHNpemUgLyBtbGZfCi0gICAgICAgICAgICAvLwotICAgICAgICAgICAgLy8gT3IgZnJvbSByZWhhc2ggcG9zdC1jb25kaXRpb246Ci0gICAgICAgICAgICAvLyBjb3VudCA+IHNpemUgLyBtbGZfCi0KLSAgICAgICAgICAgIHJldHVybiBwb2xpY3k6Om5ld19idWNrZXRfY291bnQoCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpkb3VibGVfdG9fc2l6ZShmbG9vcigKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihzaXplKSAvCi0gICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4obWxmXykpKSArIDEpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIENvbnN0cnVjdG9ycwotCi0gICAgICAgIHRhYmxlKHN0ZDo6c2l6ZV90IG51bV9idWNrZXRzLAotICAgICAgICAgICAgICAgIGhhc2hlciBjb25zdCYgaGYsCi0gICAgICAgICAgICAgICAga2V5X2VxdWFsIGNvbnN0JiBlcSwKLSAgICAgICAgICAgICAgICBub2RlX2FsbG9jYXRvciBjb25zdCYgYSkgOgotICAgICAgICAgICAgZnVuY3Rpb25zKGhmLCBlcSksCi0gICAgICAgICAgICBhbGxvY2F0b3JzXyhhLGEpLAotICAgICAgICAgICAgYnVja2V0X2NvdW50Xyhwb2xpY3k6Om5ld19idWNrZXRfY291bnQobnVtX2J1Y2tldHMpKSwKLSAgICAgICAgICAgIHNpemVfKDApLAotICAgICAgICAgICAgbWxmXygxLjBmKSwKLSAgICAgICAgICAgIG1heF9sb2FkXygwKSwKLSAgICAgICAgICAgIGJ1Y2tldHNfKCkKLSAgICAgICAge30KLQotICAgICAgICB0YWJsZSh0YWJsZSBjb25zdCYgeCwgbm9kZV9hbGxvY2F0b3IgY29uc3QmIGEpIDoKLSAgICAgICAgICAgIGZ1bmN0aW9ucyh4KSwKLSAgICAgICAgICAgIGFsbG9jYXRvcnNfKGEsYSksCi0gICAgICAgICAgICBidWNrZXRfY291bnRfKHgubWluX2J1Y2tldHNfZm9yX3NpemUoeC5zaXplXykpLAotICAgICAgICAgICAgc2l6ZV8oMCksCi0gICAgICAgICAgICBtbGZfKHgubWxmXyksCi0gICAgICAgICAgICBtYXhfbG9hZF8oMCksCi0gICAgICAgICAgICBidWNrZXRzXygpCi0gICAgICAgIHt9Ci0KLSAgICAgICAgdGFibGUodGFibGUmIHgsIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6bW92ZV90YWcgbSkgOgotICAgICAgICAgICAgZnVuY3Rpb25zKHgsIG0pLAotICAgICAgICAgICAgYWxsb2NhdG9yc18oeC5hbGxvY2F0b3JzXywgbSksCi0gICAgICAgICAgICBidWNrZXRfY291bnRfKHguYnVja2V0X2NvdW50XyksCi0gICAgICAgICAgICBzaXplXyh4LnNpemVfKSwKLSAgICAgICAgICAgIG1sZl8oeC5tbGZfKSwKLSAgICAgICAgICAgIG1heF9sb2FkXyh4Lm1heF9sb2FkXyksCi0gICAgICAgICAgICBidWNrZXRzXyh4LmJ1Y2tldHNfKQotICAgICAgICB7Ci0gICAgICAgICAgICB4LmJ1Y2tldHNfID0gYnVja2V0X3BvaW50ZXIoKTsKLSAgICAgICAgICAgIHguc2l6ZV8gPSAwOwotICAgICAgICAgICAgeC5tYXhfbG9hZF8gPSAwOwotICAgICAgICB9Ci0KLSAgICAgICAgdGFibGUodGFibGUmIHgsIG5vZGVfYWxsb2NhdG9yIGNvbnN0JiBhLAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6bW92ZV90YWcgbSkgOgotICAgICAgICAgICAgZnVuY3Rpb25zKHgsIG0pLAotICAgICAgICAgICAgYWxsb2NhdG9yc18oYSwgYSksCi0gICAgICAgICAgICBidWNrZXRfY291bnRfKHguYnVja2V0X2NvdW50XyksCi0gICAgICAgICAgICBzaXplXygwKSwKLSAgICAgICAgICAgIG1sZl8oeC5tbGZfKSwKLSAgICAgICAgICAgIG1heF9sb2FkXyh4Lm1heF9sb2FkXyksCi0gICAgICAgICAgICBidWNrZXRzXygpCi0gICAgICAgIHt9Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIEluaXRpYWxpc2F0aW9uLgotCi0gICAgICAgIHZvaWQgaW5pdCh0YWJsZSBjb25zdCYgeCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKHguc2l6ZV8pIHsKLSAgICAgICAgICAgICAgICBjcmVhdGVfYnVja2V0cyhidWNrZXRfY291bnRfKTsKLSAgICAgICAgICAgICAgICBjb3B5X25vZGVzPG5vZGVfYWxsb2NhdG9yPiBjb3B5KG5vZGVfYWxsb2MoKSk7Ci0gICAgICAgICAgICAgICAgdGFibGVfaW1wbDo6ZmlsbF9idWNrZXRzKHguYmVnaW4oKSwgKnRoaXMsIGNvcHkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBtb3ZlX2luaXQodGFibGUmIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmKG5vZGVfYWxsb2MoKSA9PSB4Lm5vZGVfYWxsb2MoKSkgewotICAgICAgICAgICAgICAgIG1vdmVfYnVja2V0c19mcm9tKHgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZih4LnNpemVfKSB7Ci0gICAgICAgICAgICAgICAgLy8gVE9ETzogQ291bGQgcGljayBuZXcgYnVja2V0IHNpemU/Ci0gICAgICAgICAgICAgICAgY3JlYXRlX2J1Y2tldHMoYnVja2V0X2NvdW50Xyk7Ci0KLSAgICAgICAgICAgICAgICBtb3ZlX25vZGVzPG5vZGVfYWxsb2NhdG9yPiBtb3ZlKG5vZGVfYWxsb2MoKSk7Ci0gICAgICAgICAgICAgICAgbm9kZV9ob2xkZXI8bm9kZV9hbGxvY2F0b3I+IG5vZGVzKHgpOwotICAgICAgICAgICAgICAgIHRhYmxlX2ltcGw6OmZpbGxfYnVja2V0cyhub2Rlcy5iZWdpbigpLCAqdGhpcywgbW92ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gQ3JlYXRlIGJ1Y2tldHMKLQotICAgICAgICB2b2lkIGNyZWF0ZV9idWNrZXRzKHN0ZDo6c2l6ZV90IG5ld19jb3VudCkKLSAgICAgICAgewotICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjphcnJheV9jb25zdHJ1Y3RvcjxidWNrZXRfYWxsb2NhdG9yPgotICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yKGJ1Y2tldF9hbGxvYygpKTsKLSAgICAKLSAgICAgICAgICAgIC8vIENyZWF0ZXMgYW4gZXh0cmEgYnVja2V0IHRvIGFjdCBhcyB0aGUgc3RhcnQgbm9kZS4KLSAgICAgICAgICAgIGNvbnN0cnVjdG9yLmNvbnN0cnVjdChidWNrZXQoKSwgbmV3X2NvdW50ICsgMSk7Ci0KLSAgICAgICAgICAgIGlmIChidWNrZXRzXykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBDb3B5IHRoZSBub2RlcyB0byB0aGUgbmV3IGJ1Y2tldHMsIGluY2x1ZGluZyB0aGUgZHVtbXkKLSAgICAgICAgICAgICAgICAvLyBub2RlIGlmIHRoZXJlIGlzIG9uZS4KLSAgICAgICAgICAgICAgICAoY29uc3RydWN0b3IuZ2V0KCkgKwotICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxzdGQ6OnB0cmRpZmZfdD4obmV3X2NvdW50KSktPm5leHRfID0KLSAgICAgICAgICAgICAgICAgICAgICAgIChidWNrZXRzXyArIHN0YXRpY19jYXN0PHN0ZDo6cHRyZGlmZl90PigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWNrZXRfY291bnRfKSktPm5leHRfOwotICAgICAgICAgICAgICAgIGRlc3Ryb3lfYnVja2V0cygpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoYnVja2V0OjpleHRyYV9ub2RlKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG5vZGVfY29uc3RydWN0b3IgYShub2RlX2FsbG9jKCkpOwotICAgICAgICAgICAgICAgIGEuY29uc3RydWN0KCk7Ci0KLSAgICAgICAgICAgICAgICAoY29uc3RydWN0b3IuZ2V0KCkgKwotICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxzdGQ6OnB0cmRpZmZfdD4obmV3X2NvdW50KSktPm5leHRfID0KLSAgICAgICAgICAgICAgICAgICAgICAgIGEucmVsZWFzZSgpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBidWNrZXRfY291bnRfID0gbmV3X2NvdW50OwotICAgICAgICAgICAgYnVja2V0c18gPSBjb25zdHJ1Y3Rvci5yZWxlYXNlKCk7Ci0gICAgICAgICAgICByZWNhbGN1bGF0ZV9tYXhfbG9hZCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIFN3YXAgYW5kIE1vdmUKLQotICAgICAgICB2b2lkIHN3YXBfYWxsb2NhdG9ycyh0YWJsZSYgb3RoZXIsIGZhbHNlX3R5cGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIEFjY29yZGluZyB0byAyMy4yLjEuOCwgaWYgcHJvcGFnYXRlX29uX2NvbnRhaW5lcl9zd2FwIGlzCi0gICAgICAgICAgICAvLyBmYWxzZSB0aGUgYmVoYXZpb3VyIGlzIHVuZGVmaW5lZCB1bmxlc3MgdGhlIGFsbG9jYXRvcnMKLSAgICAgICAgICAgIC8vIGFyZSBlcXVhbC4KLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVChub2RlX2FsbG9jKCkgPT0gb3RoZXIubm9kZV9hbGxvYygpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgc3dhcF9hbGxvY2F0b3JzKHRhYmxlJiBvdGhlciwgdHJ1ZV90eXBlKQotICAgICAgICB7Ci0gICAgICAgICAgICBhbGxvY2F0b3JzXy5zd2FwKG90aGVyLmFsbG9jYXRvcnNfKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIE9ubHkgc3dhcHMgdGhlIGFsbG9jYXRvcnMgaWYgcHJvcGFnYXRlX29uX2NvbnRhaW5lcl9zd2FwCi0gICAgICAgIHZvaWQgc3dhcCh0YWJsZSYgeCkKLSAgICAgICAgewotICAgICAgICAgICAgc2V0X2hhc2hfZnVuY3Rpb25zIG9wMSgqdGhpcywgeCk7Ci0gICAgICAgICAgICBzZXRfaGFzaF9mdW5jdGlvbnMgb3AyKHgsICp0aGlzKTsKLQotICAgICAgICAgICAgLy8gSSB0aGluayBzd2FwIGNhbiB0aHJvdyBpZiBQcm9wYWdhdGU6OnZhbHVlLAotICAgICAgICAgICAgLy8gc2luY2UgdGhlIGFsbG9jYXRvcnMnIHN3YXAgY2FuIHRocm93LiBOb3Qgc3VyZSB0aG91Z2guCi0gICAgICAgICAgICBzd2FwX2FsbG9jYXRvcnMoeCwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmludGVncmFsX2NvbnN0YW50PGJvb2wsCi0gICAgICAgICAgICAgICAgICAgIGFsbG9jYXRvcl90cmFpdHM8bm9kZV9hbGxvY2F0b3I+OjoKLSAgICAgICAgICAgICAgICAgICAgcHJvcGFnYXRlX29uX2NvbnRhaW5lcl9zd2FwOjp2YWx1ZT4oKSk7Ci0KLSAgICAgICAgICAgIG5kbmJvb3N0Ojpzd2FwKGJ1Y2tldHNfLCB4LmJ1Y2tldHNfKTsKLSAgICAgICAgICAgIG5kbmJvb3N0Ojpzd2FwKGJ1Y2tldF9jb3VudF8sIHguYnVja2V0X2NvdW50Xyk7Ci0gICAgICAgICAgICBuZG5ib29zdDo6c3dhcChzaXplXywgeC5zaXplXyk7Ci0gICAgICAgICAgICBzdGQ6OnN3YXAobWxmXywgeC5tbGZfKTsKLSAgICAgICAgICAgIHN0ZDo6c3dhcChtYXhfbG9hZF8sIHgubWF4X2xvYWRfKTsKLSAgICAgICAgICAgIG9wMS5jb21taXQoKTsKLSAgICAgICAgICAgIG9wMi5jb21taXQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgbW92ZV9idWNrZXRzX2Zyb20odGFibGUmIG90aGVyKQotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlQobm9kZV9hbGxvYygpID09IG90aGVyLm5vZGVfYWxsb2MoKSk7Ci0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlQoIWJ1Y2tldHNfKTsKLSAgICAgICAgICAgIGJ1Y2tldHNfID0gb3RoZXIuYnVja2V0c187Ci0gICAgICAgICAgICBidWNrZXRfY291bnRfID0gb3RoZXIuYnVja2V0X2NvdW50XzsKLSAgICAgICAgICAgIHNpemVfID0gb3RoZXIuc2l6ZV87Ci0gICAgICAgICAgICBvdGhlci5idWNrZXRzXyA9IGJ1Y2tldF9wb2ludGVyKCk7Ci0gICAgICAgICAgICBvdGhlci5zaXplXyA9IDA7Ci0gICAgICAgICAgICBvdGhlci5tYXhfbG9hZF8gPSAwOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIERlbGV0ZS9kZXN0cnVjdAotCi0gICAgICAgIH50YWJsZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRlbGV0ZV9idWNrZXRzKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGRlbGV0ZV9ub2RlKGxpbmtfcG9pbnRlciBwcmV2KQotICAgICAgICB7Ci0gICAgICAgICAgICBub2RlX3BvaW50ZXIgbiA9IHN0YXRpY19jYXN0PG5vZGVfcG9pbnRlcj4ocHJldi0+bmV4dF8pOwotICAgICAgICAgICAgcHJldi0+bmV4dF8gPSBuLT5uZXh0XzsKLQotICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpkZXN0cm95X3ZhbHVlX2ltcGwobm9kZV9hbGxvYygpLAotICAgICAgICAgICAgICAgIG4tPnZhbHVlX3B0cigpKTsKLSAgICAgICAgICAgIG5vZGVfYWxsb2NhdG9yX3RyYWl0czo6ZGVzdHJveShub2RlX2FsbG9jKCksCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjphZGRyZXNzb2YoKm4pKTsKLSAgICAgICAgICAgIG5vZGVfYWxsb2NhdG9yX3RyYWl0czo6ZGVhbGxvY2F0ZShub2RlX2FsbG9jKCksIG4sIDEpOwotICAgICAgICAgICAgLS1zaXplXzsKLSAgICAgICAgfQotCi0gICAgICAgIHN0ZDo6c2l6ZV90IGRlbGV0ZV9ub2RlcyhsaW5rX3BvaW50ZXIgcHJldiwgbGlua19wb2ludGVyIGVuZCkKLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKHByZXYtPm5leHRfICE9IGVuZCk7Ci0KLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGNvdW50ID0gMDsKLQotICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgIGRlbGV0ZV9ub2RlKHByZXYpOwotICAgICAgICAgICAgICAgICsrY291bnQ7Ci0gICAgICAgICAgICB9IHdoaWxlIChwcmV2LT5uZXh0XyAhPSBlbmQpOwotCi0gICAgICAgICAgICByZXR1cm4gY291bnQ7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGRlbGV0ZV9idWNrZXRzKCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYoYnVja2V0c18pIHsKLSAgICAgICAgICAgICAgICBpZiAoc2l6ZV8pIGRlbGV0ZV9ub2RlcyhnZXRfcHJldmlvdXNfc3RhcnQoKSwgbGlua19wb2ludGVyKCkpOwotCi0gICAgICAgICAgICAgICAgaWYgKGJ1Y2tldDo6ZXh0cmFfbm9kZSkgewotICAgICAgICAgICAgICAgICAgICBub2RlX3BvaW50ZXIgbiA9IHN0YXRpY19jYXN0PG5vZGVfcG9pbnRlcj4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X2J1Y2tldChidWNrZXRfY291bnRfKS0+bmV4dF8pOwotICAgICAgICAgICAgICAgICAgICBub2RlX2FsbG9jYXRvcl90cmFpdHM6OmRlc3Ryb3kobm9kZV9hbGxvYygpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjphZGRyZXNzb2YoKm4pKTsKLSAgICAgICAgICAgICAgICAgICAgbm9kZV9hbGxvY2F0b3JfdHJhaXRzOjpkZWFsbG9jYXRlKG5vZGVfYWxsb2MoKSwgbiwgMSk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgZGVzdHJveV9idWNrZXRzKCk7Ci0gICAgICAgICAgICAgICAgYnVja2V0c18gPSBidWNrZXRfcG9pbnRlcigpOwotICAgICAgICAgICAgICAgIG1heF9sb2FkXyA9IDA7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVCghc2l6ZV8pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBjbGVhcigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghc2l6ZV8pIHJldHVybjsKLQotICAgICAgICAgICAgZGVsZXRlX25vZGVzKGdldF9wcmV2aW91c19zdGFydCgpLCBsaW5rX3BvaW50ZXIoKSk7Ci0gICAgICAgICAgICBjbGVhcl9idWNrZXRzKCk7Ci0KLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVCghc2l6ZV8pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBjbGVhcl9idWNrZXRzKCkKLSAgICAgICAgewotICAgICAgICAgICAgYnVja2V0X3BvaW50ZXIgZW5kID0gZ2V0X2J1Y2tldChidWNrZXRfY291bnRfKTsKLSAgICAgICAgICAgIGZvcihidWNrZXRfcG9pbnRlciBpdCA9IGJ1Y2tldHNfOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaXQtPm5leHRfID0gbm9kZV9wb2ludGVyKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGRlc3Ryb3lfYnVja2V0cygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGJ1Y2tldF9wb2ludGVyIGVuZCA9IGdldF9idWNrZXQoYnVja2V0X2NvdW50XyArIDEpOwotICAgICAgICAgICAgZm9yKGJ1Y2tldF9wb2ludGVyIGl0ID0gYnVja2V0c187IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBidWNrZXRfYWxsb2NhdG9yX3RyYWl0czo6ZGVzdHJveShidWNrZXRfYWxsb2MoKSwKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmFkZHJlc3NvZigqaXQpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYnVja2V0X2FsbG9jYXRvcl90cmFpdHM6OmRlYWxsb2NhdGUoYnVja2V0X2FsbG9jKCksCi0gICAgICAgICAgICAgICAgYnVja2V0c18sIGJ1Y2tldF9jb3VudF8gKyAxKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBGaXggYnVja2V0cyBhZnRlciBkZWxldGUKLSAgICAgICAgLy8KLQotICAgICAgICBzdGQ6OnNpemVfdCBmaXhfYnVja2V0KHN0ZDo6c2l6ZV90IGJ1Y2tldF9pbmRleCwgbGlua19wb2ludGVyIHByZXYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGxpbmtfcG9pbnRlciBlbmQgPSBwcmV2LT5uZXh0XzsKLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGJ1Y2tldF9pbmRleDIgPSBidWNrZXRfaW5kZXg7Ci0KLSAgICAgICAgICAgIGlmIChlbmQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYnVja2V0X2luZGV4MiA9IGhhc2hfdG9fYnVja2V0KAotICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxub2RlX3BvaW50ZXI+KGVuZCktPmhhc2hfKTsKLQotICAgICAgICAgICAgICAgIC8vIElmIGJlZ2luIGFuZCBlbmQgYXJlIGluIHRoZSBzYW1lIGJ1Y2tldCwgdGhlbgotICAgICAgICAgICAgICAgIC8vIHRoZXJlJ3Mgbm90aGluZyB0byBkby4KLSAgICAgICAgICAgICAgICBpZiAoYnVja2V0X2luZGV4ID09IGJ1Y2tldF9pbmRleDIpIHJldHVybiBidWNrZXRfaW5kZXgyOwotCi0gICAgICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBidWNrZXQgY29udGFpbmluZyBlbmQuCi0gICAgICAgICAgICAgICAgZ2V0X2J1Y2tldChidWNrZXRfaW5kZXgyKS0+bmV4dF8gPSBwcmV2OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBDaGVjayBpZiB0aGlzIGJ1Y2tldCBpcyBub3cgZW1wdHkuCi0gICAgICAgICAgICBidWNrZXRfcG9pbnRlciB0aGlzX2J1Y2tldCA9IGdldF9idWNrZXQoYnVja2V0X2luZGV4KTsKLSAgICAgICAgICAgIGlmICh0aGlzX2J1Y2tldC0+bmV4dF8gPT0gcHJldikKLSAgICAgICAgICAgICAgICB0aGlzX2J1Y2tldC0+bmV4dF8gPSBsaW5rX3BvaW50ZXIoKTsKLQotICAgICAgICAgICAgcmV0dXJuIGJ1Y2tldF9pbmRleDI7Ci0gICAgICAgIH0KLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gQXNzaWdubWVudAotCi0gICAgICAgIHZvaWQgYXNzaWduKHRhYmxlIGNvbnN0JiB4KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodGhpcyAhPSBuZG5ib29zdDo6YWRkcmVzc29mKHgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGFzc2lnbih4LAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmludGVncmFsX2NvbnN0YW50PGJvb2wsCi0gICAgICAgICAgICAgICAgICAgICAgICBhbGxvY2F0b3JfdHJhaXRzPG5vZGVfYWxsb2NhdG9yPjo6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcm9wYWdhdGVfb25fY29udGFpbmVyX2NvcHlfYXNzaWdubWVudDo6dmFsdWU+KCkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBhc3NpZ24odGFibGUgY29uc3QmIHgsIGZhbHNlX3R5cGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIFN0cm9uZyBleGNlcHRpb24gc2FmZXR5LgotICAgICAgICAgICAgc2V0X2hhc2hfZnVuY3Rpb25zIG5ld19mdW5jX3RoaXMoKnRoaXMsIHgpOwotICAgICAgICAgICAgbmV3X2Z1bmNfdGhpcy5jb21taXQoKTsKLSAgICAgICAgICAgIG1sZl8gPSB4Lm1sZl87Ci0gICAgICAgICAgICByZWNhbGN1bGF0ZV9tYXhfbG9hZCgpOwotCi0gICAgICAgICAgICBpZiAoIXNpemVfICYmICF4LnNpemVfKSByZXR1cm47Ci0KLSAgICAgICAgICAgIGlmICh4LnNpemVfID49IG1heF9sb2FkXykgewotICAgICAgICAgICAgICAgIGNyZWF0ZV9idWNrZXRzKG1pbl9idWNrZXRzX2Zvcl9zaXplKHguc2l6ZV8pKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGNsZWFyX2J1Y2tldHMoKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gYXNzaWduX25vZGVzIHRha2VzIG93bmVyc2hpcCBvZiB0aGUgY29udGFpbmVyJ3MgZWxlbWVudHMsCi0gICAgICAgICAgICAvLyBhc3NpZ25pbmcgdG8gdGhlbSBpZiBwb3NzaWJsZSwgYW5kIGRlbGV0aW5nIGFueSB0aGF0IGFyZQotICAgICAgICAgICAgLy8gbGVmdCBvdmVyLgotICAgICAgICAgICAgYXNzaWduX25vZGVzPHRhYmxlPiBhc3NpZ24oKnRoaXMpOwotICAgICAgICAgICAgdGFibGVfaW1wbDo6ZmlsbF9idWNrZXRzKHguYmVnaW4oKSwgKnRoaXMsIGFzc2lnbik7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGFzc2lnbih0YWJsZSBjb25zdCYgeCwgdHJ1ZV90eXBlKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobm9kZV9hbGxvYygpID09IHgubm9kZV9hbGxvYygpKSB7Ci0gICAgICAgICAgICAgICAgYWxsb2NhdG9yc18uYXNzaWduKHguYWxsb2NhdG9yc18pOwotICAgICAgICAgICAgICAgIGFzc2lnbih4LCBmYWxzZV90eXBlKCkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgc2V0X2hhc2hfZnVuY3Rpb25zIG5ld19mdW5jX3RoaXMoKnRoaXMsIHgpOwotCi0gICAgICAgICAgICAgICAgLy8gRGVsZXRlIGV2ZXJ5dGhpbmcgd2l0aCBjdXJyZW50IGFsbG9jYXRvcnMgYmVmb3JlIGFzc2lnbmluZwotICAgICAgICAgICAgICAgIC8vIHRoZSBuZXcgb25lcy4KLSAgICAgICAgICAgICAgICBkZWxldGVfYnVja2V0cygpOwotICAgICAgICAgICAgICAgIGFsbG9jYXRvcnNfLmFzc2lnbih4LmFsbG9jYXRvcnNfKTsKLQotICAgICAgICAgICAgICAgIC8vIENvcHkgb3ZlciBvdGhlciBkYXRhLCBhbGwgbm8gdGhyb3cuCi0gICAgICAgICAgICAgICAgbmV3X2Z1bmNfdGhpcy5jb21taXQoKTsKLSAgICAgICAgICAgICAgICBtbGZfID0geC5tbGZfOwotICAgICAgICAgICAgICAgIGJ1Y2tldF9jb3VudF8gPSBtaW5fYnVja2V0c19mb3Jfc2l6ZSh4LnNpemVfKTsKLSAgICAgICAgICAgICAgICBtYXhfbG9hZF8gPSAwOwotCi0gICAgICAgICAgICAgICAgLy8gRmluYWxseSBjb3B5IHRoZSBlbGVtZW50cy4KLSAgICAgICAgICAgICAgICBpZiAoeC5zaXplXykgewotICAgICAgICAgICAgICAgICAgICBjcmVhdGVfYnVja2V0cyhidWNrZXRfY291bnRfKTsKLSAgICAgICAgICAgICAgICAgICAgY29weV9ub2Rlczxub2RlX2FsbG9jYXRvcj4gY29weShub2RlX2FsbG9jKCkpOwotICAgICAgICAgICAgICAgICAgICB0YWJsZV9pbXBsOjpmaWxsX2J1Y2tldHMoeC5iZWdpbigpLCAqdGhpcywgY29weSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBtb3ZlX2Fzc2lnbih0YWJsZSYgeCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKHRoaXMgIT0gbmRuYm9vc3Q6OmFkZHJlc3NvZih4KSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBtb3ZlX2Fzc2lnbih4LAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmludGVncmFsX2NvbnN0YW50PGJvb2wsCi0gICAgICAgICAgICAgICAgICAgICAgICBhbGxvY2F0b3JfdHJhaXRzPG5vZGVfYWxsb2NhdG9yPjo6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcm9wYWdhdGVfb25fY29udGFpbmVyX21vdmVfYXNzaWdubWVudDo6dmFsdWU+KCkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBtb3ZlX2Fzc2lnbih0YWJsZSYgeCwgdHJ1ZV90eXBlKQotICAgICAgICB7Ci0gICAgICAgICAgICBkZWxldGVfYnVja2V0cygpOwotICAgICAgICAgICAgYWxsb2NhdG9yc18ubW92ZV9hc3NpZ24oeC5hbGxvY2F0b3JzXyk7Ci0gICAgICAgICAgICBtb3ZlX2Fzc2lnbl9ub19hbGxvYyh4KTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgbW92ZV9hc3NpZ24odGFibGUmIHgsIGZhbHNlX3R5cGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChub2RlX2FsbG9jKCkgPT0geC5ub2RlX2FsbG9jKCkpIHsKLSAgICAgICAgICAgICAgICBkZWxldGVfYnVja2V0cygpOwotICAgICAgICAgICAgICAgIG1vdmVfYXNzaWduX25vX2FsbG9jKHgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgc2V0X2hhc2hfZnVuY3Rpb25zIG5ld19mdW5jX3RoaXMoKnRoaXMsIHgpOwotICAgICAgICAgICAgICAgIG5ld19mdW5jX3RoaXMuY29tbWl0KCk7Ci0gICAgICAgICAgICAgICAgbWxmXyA9IHgubWxmXzsKLSAgICAgICAgICAgICAgICByZWNhbGN1bGF0ZV9tYXhfbG9hZCgpOwotCi0gICAgICAgICAgICAgICAgaWYgKCFzaXplXyAmJiAheC5zaXplXykgcmV0dXJuOwotCi0gICAgICAgICAgICAgICAgaWYgKHguc2l6ZV8gPj0gbWF4X2xvYWRfKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNyZWF0ZV9idWNrZXRzKG1pbl9idWNrZXRzX2Zvcl9zaXplKHguc2l6ZV8pKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGNsZWFyX2J1Y2tldHMoKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBtb3ZlX2Fzc2lnbl9ub2RlcyB0YWtlcyBvd25lcnNoaXAgb2YgdGhlIGNvbnRhaW5lcidzCi0gICAgICAgICAgICAgICAgLy8gZWxlbWVudHMsIGFzc2lnbmluZyB0byB0aGVtIGlmIHBvc3NpYmxlLCBhbmQgZGVsZXRpbmcKLSAgICAgICAgICAgICAgICAvLyBhbnkgdGhhdCBhcmUgbGVmdCBvdmVyLgotICAgICAgICAgICAgICAgIG1vdmVfYXNzaWduX25vZGVzPHRhYmxlPiBhc3NpZ24oKnRoaXMpOwotICAgICAgICAgICAgICAgIG5vZGVfaG9sZGVyPG5vZGVfYWxsb2NhdG9yPiBub2Rlcyh4KTsKLSAgICAgICAgICAgICAgICB0YWJsZV9pbXBsOjpmaWxsX2J1Y2tldHMobm9kZXMuYmVnaW4oKSwgKnRoaXMsIGFzc2lnbik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHZvaWQgbW92ZV9hc3NpZ25fbm9fYWxsb2ModGFibGUmIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNldF9oYXNoX2Z1bmN0aW9ucyBuZXdfZnVuY190aGlzKCp0aGlzLCB4KTsKLSAgICAgICAgICAgIC8vIE5vIHRocm93IGZyb20gaGVyZS4KLSAgICAgICAgICAgIG1sZl8gPSB4Lm1sZl87Ci0gICAgICAgICAgICBtYXhfbG9hZF8gPSB4Lm1heF9sb2FkXzsKLSAgICAgICAgICAgIG1vdmVfYnVja2V0c19mcm9tKHgpOwotICAgICAgICAgICAgbmV3X2Z1bmNfdGhpcy5jb21taXQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEFjY2Vzc29ycwotCi0gICAgICAgIGtleV90eXBlIGNvbnN0JiBnZXRfa2V5KHZhbHVlX3R5cGUgY29uc3QmIHgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBleHRyYWN0b3I6OmV4dHJhY3QoeCk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGQ6OnNpemVfdCBoYXNoKGtleV90eXBlIGNvbnN0JiBrKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcG9saWN5OjphcHBseV9oYXNoKHRoaXMtPmhhc2hfZnVuY3Rpb24oKSwgayk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBGaW5kIE5vZGUKLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBIYXNoLCB0eXBlbmFtZSBQcmVkPgotICAgICAgICBpdGVyYXRvciBnZW5lcmljX2ZpbmRfbm9kZSgKLSAgICAgICAgICAgICAgICBLZXkgY29uc3QmIGssCi0gICAgICAgICAgICAgICAgSGFzaCBjb25zdCYgaGYsCi0gICAgICAgICAgICAgICAgUHJlZCBjb25zdCYgZXEpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx0YWJsZV9pbXBsIGNvbnN0Kj4odGhpcyktPgotICAgICAgICAgICAgICAgIGZpbmRfbm9kZV9pbXBsKHBvbGljeTo6YXBwbHlfaGFzaChoZiwgayksIGssIGVxKTsKLSAgICAgICAgfQotCi0gICAgICAgIGl0ZXJhdG9yIGZpbmRfbm9kZSgKLSAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBrZXlfaGFzaCwKLSAgICAgICAgICAgICAgICBrZXlfdHlwZSBjb25zdCYgaykgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHRhYmxlX2ltcGwgY29uc3QqPih0aGlzKS0+Ci0gICAgICAgICAgICAgICAgZmluZF9ub2RlX2ltcGwoa2V5X2hhc2gsIGssIHRoaXMtPmtleV9lcSgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGl0ZXJhdG9yIGZpbmRfbm9kZShrZXlfdHlwZSBjb25zdCYgaykgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHRhYmxlX2ltcGwgY29uc3QqPih0aGlzKS0+Ci0gICAgICAgICAgICAgICAgZmluZF9ub2RlX2ltcGwoaGFzaChrKSwgaywgdGhpcy0+a2V5X2VxKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgaXRlcmF0b3IgZmluZF9tYXRjaGluZ19ub2RlKGl0ZXJhdG9yIG4pIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIFRPRE86IERvZXMgdGhpcyBhcHBseSB0byBDKysxMT8KLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAvLyBGb3Igc29tZSBzdHVwaWQgcmVhc29uLCBJIGRlY2lkZWQgdG8gc3VwcG9ydCBlcXVhbGl0eSBjb21wYXJpc29uCi0gICAgICAgICAgICAvLyB3aGVuIGRpZmZlcmVudCBoYXNoIGZ1bmN0aW9ucyBhcmUgdXNlZC4gU28gSSBjYW4ndCB1c2UgdGhlIGhhc2gKLSAgICAgICAgICAgIC8vIHZhbHVlIGZyb20gdGhlIG5vZGUgaGVyZS4KLSAgICAKLSAgICAgICAgICAgIHJldHVybiBmaW5kX25vZGUoZ2V0X2tleSgqbikpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gUmVzZXJ2ZSBhbmQgcmVoYXNoCi0KLSAgICAgICAgdm9pZCByZXNlcnZlX2Zvcl9pbnNlcnQoc3RkOjpzaXplX3QpOwotICAgICAgICB2b2lkIHJlaGFzaChzdGQ6OnNpemVfdCk7Ci0gICAgICAgIHZvaWQgcmVzZXJ2ZShzdGQ6OnNpemVfdCk7Ci0gICAgfTsKLQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAvLyBSZXNlcnZlICYgUmVoYXNoCi0KLSAgICAvLyBiYXNpYyBleGNlcHRpb24gc2FmZXR5Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGVzPgotICAgIGlubGluZSB2b2lkIHRhYmxlPFR5cGVzPjo6cmVzZXJ2ZV9mb3JfaW5zZXJ0KHN0ZDo6c2l6ZV90IHNpemUpCi0gICAgewotICAgICAgICBpZiAoIWJ1Y2tldHNfKSB7Ci0gICAgICAgICAgICBjcmVhdGVfYnVja2V0cygoc3RkOjptYXgpKGJ1Y2tldF9jb3VudF8sCi0gICAgICAgICAgICAgICAgbWluX2J1Y2tldHNfZm9yX3NpemUoc2l6ZSkpKTsKLSAgICAgICAgfQotICAgICAgICAvLyBBY2NvcmRpbmcgdG8gdGhlIHN0YW5kYXJkIHRoaXMgc2hvdWxkIGJlICdzaXplID49IG1heF9sb2FkXycsCi0gICAgICAgIC8vIGJ1dCBJIHRoaW5rIHRoaXMgaXMgYmV0dGVyLCBkZWZlY3QgcmVwb3J0IGZpbGVkLgotICAgICAgICBlbHNlIGlmKHNpemUgPiBtYXhfbG9hZF8pIHsKLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IG51bV9idWNrZXRzCi0gICAgICAgICAgICAgICAgPSBtaW5fYnVja2V0c19mb3Jfc2l6ZSgoc3RkOjptYXgpKHNpemUsCi0gICAgICAgICAgICAgICAgICAgIHNpemVfICsgKHNpemVfID4+IDEpKSk7Ci0KLSAgICAgICAgICAgIGlmIChudW1fYnVja2V0cyAhPSBidWNrZXRfY291bnRfKQotICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHRhYmxlX2ltcGwqPih0aGlzKS0+cmVoYXNoX2ltcGwobnVtX2J1Y2tldHMpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gaWYgaGFzaCBmdW5jdGlvbiB0aHJvd3MsIGJhc2ljIGV4Y2VwdGlvbiBzYWZldHkKLSAgICAvLyBzdHJvbmcgb3RoZXJ3aXNlLgotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGVzPgotICAgIGlubGluZSB2b2lkIHRhYmxlPFR5cGVzPjo6cmVoYXNoKHN0ZDo6c2l6ZV90IG1pbl9idWNrZXRzKQotICAgIHsKLSAgICAgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQotICAgICAgICBpZighc2l6ZV8pIHsKLSAgICAgICAgICAgIGRlbGV0ZV9idWNrZXRzKCk7Ci0gICAgICAgICAgICBidWNrZXRfY291bnRfID0gcG9saWN5OjpuZXdfYnVja2V0X2NvdW50KG1pbl9idWNrZXRzKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1pbl9idWNrZXRzID0gcG9saWN5OjpuZXdfYnVja2V0X2NvdW50KChzdGQ6Om1heCkobWluX2J1Y2tldHMsCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpkb3VibGVfdG9fc2l6ZShmbG9vcigKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihzaXplXykgLwotICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KG1sZl8pKSkgKyAxKSk7Ci0KLSAgICAgICAgICAgIGlmKG1pbl9idWNrZXRzICE9IGJ1Y2tldF9jb3VudF8pCi0gICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dGFibGVfaW1wbCo+KHRoaXMpLT5yZWhhc2hfaW1wbChtaW5fYnVja2V0cyk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZXM+Ci0gICAgaW5saW5lIHZvaWQgdGFibGU8VHlwZXM+OjpyZXNlcnZlKHN0ZDo6c2l6ZV90IG51bV9lbGVtZW50cykKLSAgICB7Ci0gICAgICAgIHJlaGFzaChzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oCi0gICAgICAgICAgICBzdGQ6OmNlaWwoc3RhdGljX2Nhc3Q8ZG91YmxlPihudW1fZWxlbWVudHMpIC8gbWxmXykpKTsKLSAgICB9Ci19fX0KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvdW5pcXVlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC91bmlxdWUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNDEzMjU1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC91bmlxdWUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjIyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IChDKSAyMDAzLTIwMDQgSmVyZW15IEIuIE1haXRpbi1TaGVwYXJkLgotLy8gQ29weXJpZ2h0IChDKSAyMDA1LTIwMTEgRGFuaWVsIEphbWVzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9VTk9SREVSRURfREVUQUlMX1VOSVFVRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0RFVEFJTF9VTklRVUVfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC90YWJsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC9leHRyYWN0X2tleS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGhyb3dfZXhjZXB0aW9uLmhwcD4KLSNpbmNsdWRlIDxzdGRleGNlcHQ+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB1bm9yZGVyZWQgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBLCB0eXBlbmFtZSBUPiBzdHJ1Y3QgdW5pcXVlX25vZGU7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBwdHJfbm9kZTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZXM+IHN0cnVjdCB0YWJsZV9pbXBsOwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEEsIHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IHVuaXF1ZV9ub2RlIDoKLSAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjp2YWx1ZV9iYXNlPFQ+Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIDo6bmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpyZWJpbmRfd3JhcDwKLSAgICAgICAgICAgIEEsIHVuaXF1ZV9ub2RlPEEsIFQ+ID46OnR5cGU6OnBvaW50ZXIgbm9kZV9wb2ludGVyOwotICAgICAgICB0eXBlZGVmIG5vZGVfcG9pbnRlciBsaW5rX3BvaW50ZXI7Ci0KLSAgICAgICAgbGlua19wb2ludGVyIG5leHRfOwotICAgICAgICBzdGQ6OnNpemVfdCBoYXNoXzsKLQotICAgICAgICB1bmlxdWVfbm9kZSgpIDoKLSAgICAgICAgICAgIG5leHRfKCksCi0gICAgICAgICAgICBoYXNoXygwKQotICAgICAgICB7fQotCi0gICAgICAgIHZvaWQgaW5pdChub2RlX3BvaW50ZXIpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgdW5pcXVlX25vZGUmIG9wZXJhdG9yPSh1bmlxdWVfbm9kZSBjb25zdCYpOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgcHRyX25vZGUgOgotICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnZhbHVlX2Jhc2U8VD4sCi0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cHRyX2J1Y2tldAotICAgIHsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnB0cl9idWNrZXQgYnVja2V0X2Jhc2U7Ci0gICAgICAgIHR5cGVkZWYgcHRyX25vZGU8VD4qIG5vZGVfcG9pbnRlcjsKLSAgICAgICAgdHlwZWRlZiBwdHJfYnVja2V0KiBsaW5rX3BvaW50ZXI7Ci0KLSAgICAgICAgc3RkOjpzaXplX3QgaGFzaF87Ci0KLSAgICAgICAgcHRyX25vZGUoKSA6Ci0gICAgICAgICAgICBidWNrZXRfYmFzZSgpLAotICAgICAgICAgICAgaGFzaF8oMCkKLSAgICAgICAge30KLQotICAgICAgICB2b2lkIGluaXQobm9kZV9wb2ludGVyKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIHB0cl9ub2RlJiBvcGVyYXRvcj0ocHRyX25vZGUgY29uc3QmKTsKLSAgICB9OwotCi0gICAgLy8gSWYgdGhlIGFsbG9jYXRvciB1c2VzIHJhdyBwb2ludGVycyB1c2UgcHRyX25vZGUKLSAgICAvLyBPdGhlcndpc2UgdXNlIG5vZGUuCi0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQSwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgTm9kZVB0ciwgdHlwZW5hbWUgQnVja2V0UHRyPgotICAgIHN0cnVjdCBwaWNrX25vZGUyCi0gICAgewotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6dW5pcXVlX25vZGU8QSwgVD4gbm9kZTsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6YWxsb2NhdG9yX3RyYWl0czwKLSAgICAgICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cmViaW5kX3dyYXA8QSwgbm9kZT46OnR5cGUKLSAgICAgICAgPjo6cG9pbnRlciBub2RlX3BvaW50ZXI7Ci0KLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmJ1Y2tldDxub2RlX3BvaW50ZXI+IGJ1Y2tldDsKLSAgICAgICAgdHlwZWRlZiBub2RlX3BvaW50ZXIgbGlua19wb2ludGVyOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQSwgdHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgcGlja19ub2RlMjxBLCBULAotICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnB0cl9ub2RlPFQ+KiwKLSAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpwdHJfYnVja2V0Kj4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpwdHJfbm9kZTxUPiBub2RlOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cHRyX2J1Y2tldCBidWNrZXQ7Ci0gICAgICAgIHR5cGVkZWYgYnVja2V0KiBsaW5rX3BvaW50ZXI7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBLCB0eXBlbmFtZSBUPgotICAgIHN0cnVjdCBwaWNrX25vZGUKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjphbGxvY2F0b3JfdHJhaXRzPAotICAgICAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpyZWJpbmRfd3JhcDxBLAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cHRyX25vZGU8VD4gPjo6dHlwZQotICAgICAgICA+IHRlbnRhdGl2ZV9ub2RlX3RyYWl0czsKLQotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6YWxsb2NhdG9yX3RyYWl0czwKLSAgICAgICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cmViaW5kX3dyYXA8QSwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnB0cl9idWNrZXQgPjo6dHlwZQotICAgICAgICA+IHRlbnRhdGl2ZV9idWNrZXRfdHJhaXRzOwotCi0gICAgICAgIHR5cGVkZWYgcGlja19ub2RlMjxBLCBULAotICAgICAgICAgICAgdHlwZW5hbWUgdGVudGF0aXZlX25vZGVfdHJhaXRzOjpwb2ludGVyLAotICAgICAgICAgICAgdHlwZW5hbWUgdGVudGF0aXZlX2J1Y2tldF90cmFpdHM6OnBvaW50ZXI+IHBpY2s7Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwaWNrOjpub2RlIG5vZGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcGljazo6YnVja2V0IGJ1Y2tldDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwaWNrOjpsaW5rX3BvaW50ZXIgbGlua19wb2ludGVyOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQSwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgSCwgdHlwZW5hbWUgUD4KLSAgICBzdHJ1Y3Qgc2V0Ci0gICAgewotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6c2V0PEEsIFQsIEgsIFA+IHR5cGVzOwotCi0gICAgICAgIHR5cGVkZWYgQSBhbGxvY2F0b3I7Ci0gICAgICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotICAgICAgICB0eXBlZGVmIEggaGFzaGVyOwotICAgICAgICB0eXBlZGVmIFAga2V5X2VxdWFsOwotICAgICAgICB0eXBlZGVmIFQga2V5X3R5cGU7Ci0KLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmFsbG9jYXRvcl90cmFpdHM8YWxsb2NhdG9yPiB0cmFpdHM7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpwaWNrX25vZGU8YWxsb2NhdG9yLCB2YWx1ZV90eXBlPiBwaWNrOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHBpY2s6Om5vZGUgbm9kZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwaWNrOjpidWNrZXQgYnVja2V0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHBpY2s6OmxpbmtfcG9pbnRlciBsaW5rX3BvaW50ZXI7Ci0KLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnRhYmxlX2ltcGw8dHlwZXM+IHRhYmxlOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6c2V0X2V4dHJhY3Rvcjx2YWx1ZV90eXBlPiBleHRyYWN0b3I7Ci0KLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnBpY2tfcG9saWN5Ojp0eXBlIHBvbGljeTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEEsIHR5cGVuYW1lIEssIHR5cGVuYW1lIE0sIHR5cGVuYW1lIEgsIHR5cGVuYW1lIFA+Ci0gICAgc3RydWN0IG1hcAotICAgIHsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om1hcDxBLCBLLCBNLCBILCBQPiB0eXBlczsKLQotICAgICAgICB0eXBlZGVmIEEgYWxsb2NhdG9yOwotICAgICAgICB0eXBlZGVmIHN0ZDo6cGFpcjxLIGNvbnN0LCBNPiB2YWx1ZV90eXBlOwotICAgICAgICB0eXBlZGVmIEggaGFzaGVyOwotICAgICAgICB0eXBlZGVmIFAga2V5X2VxdWFsOwotICAgICAgICB0eXBlZGVmIEsga2V5X3R5cGU7Ci0KLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmFsbG9jYXRvcl90cmFpdHM8YWxsb2NhdG9yPgotICAgICAgICAgICAgdHJhaXRzOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cGlja19ub2RlPGFsbG9jYXRvciwgdmFsdWVfdHlwZT4gcGljazsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwaWNrOjpub2RlIG5vZGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcGljazo6YnVja2V0IGJ1Y2tldDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwaWNrOjpsaW5rX3BvaW50ZXIgbGlua19wb2ludGVyOwotCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjp0YWJsZV9pbXBsPHR5cGVzPiB0YWJsZTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om1hcF9leHRyYWN0b3I8a2V5X3R5cGUsIHZhbHVlX3R5cGU+Ci0gICAgICAgICAgICBleHRyYWN0b3I7Ci0KLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnBpY2tfcG9saWN5Ojp0eXBlIHBvbGljeTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGVzPgotICAgIHN0cnVjdCB0YWJsZV9pbXBsIDogbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjp0YWJsZTxUeXBlcz4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjp0YWJsZTxUeXBlcz4gdGFibGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6YnVja2V0IGJ1Y2tldDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6cG9saWN5IHBvbGljeTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6bm9kZV9wb2ludGVyIG5vZGVfcG9pbnRlcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6bm9kZV9hbGxvY2F0b3Igbm9kZV9hbGxvY2F0b3I7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6Om5vZGVfYWxsb2NhdG9yX3RyYWl0cyBub2RlX2FsbG9jYXRvcl90cmFpdHM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6OmJ1Y2tldF9wb2ludGVyIGJ1Y2tldF9wb2ludGVyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjpsaW5rX3BvaW50ZXIgbGlua19wb2ludGVyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjpoYXNoZXIgaGFzaGVyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjprZXlfZXF1YWwga2V5X2VxdWFsOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjprZXlfdHlwZSBrZXlfdHlwZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6bm9kZV9jb25zdHJ1Y3RvciBub2RlX2NvbnN0cnVjdG9yOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjpleHRyYWN0b3IgZXh0cmFjdG9yOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6Y19pdGVyYXRvciBjX2l0ZXJhdG9yOwotCi0gICAgICAgIHR5cGVkZWYgc3RkOjpwYWlyPGl0ZXJhdG9yLCBib29sPiBlbXBsYWNlX3JldHVybjsKLQotICAgICAgICAvLyBDb25zdHJ1Y3RvcnMKLQotICAgICAgICB0YWJsZV9pbXBsKHN0ZDo6c2l6ZV90IG4sCi0gICAgICAgICAgICAgICAgaGFzaGVyIGNvbnN0JiBoZiwKLSAgICAgICAgICAgICAgICBrZXlfZXF1YWwgY29uc3QmIGVxLAotICAgICAgICAgICAgICAgIG5vZGVfYWxsb2NhdG9yIGNvbnN0JiBhKQotICAgICAgICAgIDogdGFibGUobiwgaGYsIGVxLCBhKQotICAgICAgICB7fQotCi0gICAgICAgIHRhYmxlX2ltcGwodGFibGVfaW1wbCBjb25zdCYgeCkKLSAgICAgICAgICA6IHRhYmxlKHgsIG5vZGVfYWxsb2NhdG9yX3RyYWl0czo6Ci0gICAgICAgICAgICAgICAgc2VsZWN0X29uX2NvbnRhaW5lcl9jb3B5X2NvbnN0cnVjdGlvbih4Lm5vZGVfYWxsb2MoKSkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMtPmluaXQoeCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0YWJsZV9pbXBsKHRhYmxlX2ltcGwgY29uc3QmIHgsCi0gICAgICAgICAgICAgICAgbm9kZV9hbGxvY2F0b3IgY29uc3QmIGEpCi0gICAgICAgICAgOiB0YWJsZSh4LCBhKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLT5pbml0KHgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGFibGVfaW1wbCh0YWJsZV9pbXBsJiB4LAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6bW92ZV90YWcgbSkKLSAgICAgICAgICA6IHRhYmxlKHgsIG0pCi0gICAgICAgIHt9Ci0KLSAgICAgICAgdGFibGVfaW1wbCh0YWJsZV9pbXBsJiB4LAotICAgICAgICAgICAgICAgIG5vZGVfYWxsb2NhdG9yIGNvbnN0JiBhLAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6bW92ZV90YWcgbSkKLSAgICAgICAgICA6IHRhYmxlKHgsIGEsIG0pCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMtPm1vdmVfaW5pdCh4KTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEFjY2Vzc29ycwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBLZXksIGNsYXNzIFByZWQ+Ci0gICAgICAgIGl0ZXJhdG9yIGZpbmRfbm9kZV9pbXBsKAotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGtleV9oYXNoLAotICAgICAgICAgICAgICAgIEtleSBjb25zdCYgaywKLSAgICAgICAgICAgICAgICBQcmVkIGNvbnN0JiBlcSkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgc3RkOjpzaXplX3QgYnVja2V0X2luZGV4ID0gdGhpcy0+aGFzaF90b19idWNrZXQoa2V5X2hhc2gpOwotICAgICAgICAgICAgaXRlcmF0b3IgbiA9IHRoaXMtPmJlZ2luKGJ1Y2tldF9pbmRleCk7Ci0KLSAgICAgICAgICAgIGZvciAoOzspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKCFuLm5vZGVfKSByZXR1cm4gbjsKLQotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IG5vZGVfaGFzaCA9IG4ubm9kZV8tPmhhc2hfOwotICAgICAgICAgICAgICAgIGlmIChrZXlfaGFzaCA9PSBub2RlX2hhc2gpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAoZXEoaywgdGhpcy0+Z2V0X2tleSgqbikpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLT5oYXNoX3RvX2J1Y2tldChub2RlX2hhc2gpICE9IGJ1Y2tldF9pbmRleCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcigpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICsrbjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHN0ZDo6c2l6ZV90IGNvdW50KGtleV90eXBlIGNvbnN0JiBrKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy0+ZmluZF9ub2RlKGspLm5vZGVfID8gMSA6IDA7Ci0gICAgICAgIH0KLQotICAgICAgICB2YWx1ZV90eXBlJiBhdChrZXlfdHlwZSBjb25zdCYgaykgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKHRoaXMtPnNpemVfKSB7Ci0gICAgICAgICAgICAgICAgaXRlcmF0b3IgaXQgPSB0aGlzLT5maW5kX25vZGUoayk7Ci0gICAgICAgICAgICAgICAgaWYgKGl0Lm5vZGVfKSByZXR1cm4gKml0OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKAotICAgICAgICAgICAgICAgIHN0ZDo6b3V0X29mX3JhbmdlKCJVbmFibGUgdG8gZmluZCBrZXkgaW4gdW5vcmRlcmVkX21hcC4iKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGl0ZXJhdG9yPgotICAgICAgICAgICAgZXF1YWxfcmFuZ2Uoa2V5X3R5cGUgY29uc3QmIGspIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGl0ZXJhdG9yIG4gPSB0aGlzLT5maW5kX25vZGUoayk7Ci0gICAgICAgICAgICBpdGVyYXRvciBuMiA9IG47Ci0gICAgICAgICAgICBpZiAobjIubm9kZV8pICsrbjI7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIobiwgbjIpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gZXF1YWxzCi0KLSAgICAgICAgYm9vbCBlcXVhbHModGFibGVfaW1wbCBjb25zdCYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmKHRoaXMtPnNpemVfICE9IG90aGVyLnNpemVfKSByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgICAgICAgICBmb3IoaXRlcmF0b3IgbjEgPSB0aGlzLT5iZWdpbigpOyBuMS5ub2RlXzsgKytuMSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpdGVyYXRvciBuMiA9IG90aGVyLmZpbmRfbWF0Y2hpbmdfbm9kZShuMSk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIW4yLm5vZGVfIHx8ICpuMSAhPSAqbjIpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRW1wbGFjZS9JbnNlcnQKLQotICAgICAgICBpbmxpbmUgaXRlcmF0b3IgYWRkX25vZGUoCi0gICAgICAgICAgICAgICAgbm9kZV9jb25zdHJ1Y3RvciYgYSwKLSAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBrZXlfaGFzaCkKLSAgICAgICAgewotICAgICAgICAgICAgbm9kZV9wb2ludGVyIG4gPSBhLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIG4tPmhhc2hfID0ga2V5X2hhc2g7Ci0gICAgCi0gICAgICAgICAgICBidWNrZXRfcG9pbnRlciBiID0gdGhpcy0+Z2V0X2J1Y2tldCh0aGlzLT5oYXNoX3RvX2J1Y2tldChrZXlfaGFzaCkpOwotCi0gICAgICAgICAgICBpZiAoIWItPm5leHRfKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGxpbmtfcG9pbnRlciBzdGFydF9ub2RlID0gdGhpcy0+Z2V0X3ByZXZpb3VzX3N0YXJ0KCk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKHN0YXJ0X25vZGUtPm5leHRfKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMtPmdldF9idWNrZXQodGhpcy0+aGFzaF90b19idWNrZXQoCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxub2RlX3BvaW50ZXI+KHN0YXJ0X25vZGUtPm5leHRfKS0+aGFzaF8pCi0gICAgICAgICAgICAgICAgICAgICktPm5leHRfID0gbjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBiLT5uZXh0XyA9IHN0YXJ0X25vZGU7Ci0gICAgICAgICAgICAgICAgbi0+bmV4dF8gPSBzdGFydF9ub2RlLT5uZXh0XzsKLSAgICAgICAgICAgICAgICBzdGFydF9ub2RlLT5uZXh0XyA9IG47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbi0+bmV4dF8gPSBiLT5uZXh0Xy0+bmV4dF87Ci0gICAgICAgICAgICAgICAgYi0+bmV4dF8tPm5leHRfID0gbjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgKyt0aGlzLT5zaXplXzsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcihuKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhbHVlX3R5cGUmIG9wZXJhdG9yW10oa2V5X3R5cGUgY29uc3QmIGspCi0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmFsdWVfdHlwZTo6c2Vjb25kX3R5cGUgbWFwcGVkX3R5cGU7Ci0gICAgCi0gICAgICAgICAgICBzdGQ6OnNpemVfdCBrZXlfaGFzaCA9IHRoaXMtPmhhc2goayk7Ci0gICAgICAgICAgICBpdGVyYXRvciBwb3MgPSB0aGlzLT5maW5kX25vZGUoa2V5X2hhc2gsIGspOwotICAgIAotICAgICAgICAgICAgaWYgKHBvcy5ub2RlXykgcmV0dXJuICpwb3M7Ci0gICAgCi0gICAgICAgICAgICAvLyBDcmVhdGUgdGhlIG5vZGUgYmVmb3JlIHJlaGFzaGluZyBpbiBjYXNlIGl0IHRocm93cyBhbgotICAgICAgICAgICAgLy8gZXhjZXB0aW9uIChuZWVkIHN0cm9uZyBzYWZldHkgaW4gc3VjaCBhIGNhc2UpLgotICAgICAgICAgICAgbm9kZV9jb25zdHJ1Y3RvciBhKHRoaXMtPm5vZGVfYWxsb2MoKSk7Ci0gICAgICAgICAgICBhLmNvbnN0cnVjdF93aXRoX3ZhbHVlKE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX0FSR1MzKAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OnBpZWNld2lzZV9jb25zdHJ1Y3QsCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6Om1ha2VfdHVwbGUoayksCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6Om1ha2VfdHVwbGUoKSkpOwotICAgIAotICAgICAgICAgICAgdGhpcy0+cmVzZXJ2ZV9mb3JfaW5zZXJ0KHRoaXMtPnNpemVfICsgMSk7Ci0gICAgICAgICAgICByZXR1cm4gKmFkZF9ub2RlKGEsIGtleV9oYXNoKTsKLSAgICAgICAgfQotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUykKLSMgICBpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUykKLSAgICAgICAgZW1wbGFjZV9yZXR1cm4gZW1wbGFjZShuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmVtcGxhY2VfYXJnczE8Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpwbGVhc2VfaWdub3JlX3RoaXNfb3ZlcmxvYWQ+IGNvbnN0JikKLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKGZhbHNlKTsKLSAgICAgICAgICAgIHJldHVybiBlbXBsYWNlX3JldHVybih0aGlzLT5iZWdpbigpLCBmYWxzZSk7Ci0gICAgICAgIH0KLSMgICBlbHNlCi0gICAgICAgIGVtcGxhY2VfcmV0dXJuIGVtcGxhY2UoCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpwbGVhc2VfaWdub3JlX3RoaXNfb3ZlcmxvYWQgY29uc3QmKQotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlQoZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuIGVtcGxhY2VfcmV0dXJuKHRoaXMtPmJlZ2luKCksIGZhbHNlKTsKLSAgICAgICAgfQotIyAgIGVuZGlmCi0jZW5kaWYKLQotICAgICAgICB0ZW1wbGF0ZSA8TkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfVEVNUExBVEU+Ci0gICAgICAgIGVtcGxhY2VfcmV0dXJuIGVtcGxhY2UoTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfQVJHUykKLSAgICAgICAgewotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUykKLSAgICAgICAgICAgIHJldHVybiBlbXBsYWNlX2ltcGwoCi0gICAgICAgICAgICAgICAgZXh0cmFjdG9yOjpleHRyYWN0KE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX0ZPUldBUkQpLAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX0ZPUldBUkQpOwotI2Vsc2UKLSAgICAgICAgICAgIHJldHVybiBlbXBsYWNlX2ltcGwoCi0gICAgICAgICAgICAgICAgZXh0cmFjdG9yOjpleHRyYWN0KGFyZ3MuYTAsIGFyZ3MuYTEpLAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX0ZPUldBUkQpOwotI2VuZGlmCi0gICAgICAgIH0KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQTA+Ci0gICAgICAgIGVtcGxhY2VfcmV0dXJuIGVtcGxhY2UoCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjplbXBsYWNlX2FyZ3MxPEEwPiBjb25zdCYgYXJncykKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVtcGxhY2VfaW1wbChleHRyYWN0b3I6OmV4dHJhY3QoYXJncy5hMCksIGFyZ3MpOwotICAgICAgICB9Ci0jZW5kaWYKLQotICAgICAgICB0ZW1wbGF0ZSA8TkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfVEVNUExBVEU+Ci0gICAgICAgIGVtcGxhY2VfcmV0dXJuIGVtcGxhY2VfaW1wbChrZXlfdHlwZSBjb25zdCYgaywKLSAgICAgICAgICAgIE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX0FSR1MpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGtleV9oYXNoID0gdGhpcy0+aGFzaChrKTsKLSAgICAgICAgICAgIGl0ZXJhdG9yIHBvcyA9IHRoaXMtPmZpbmRfbm9kZShrZXlfaGFzaCwgayk7Ci0gICAgCi0gICAgICAgICAgICBpZiAocG9zLm5vZGVfKSByZXR1cm4gZW1wbGFjZV9yZXR1cm4ocG9zLCBmYWxzZSk7Ci0gICAgCi0gICAgICAgICAgICAvLyBDcmVhdGUgdGhlIG5vZGUgYmVmb3JlIHJlaGFzaGluZyBpbiBjYXNlIGl0IHRocm93cyBhbgotICAgICAgICAgICAgLy8gZXhjZXB0aW9uIChuZWVkIHN0cm9uZyBzYWZldHkgaW4gc3VjaCBhIGNhc2UpLgotICAgICAgICAgICAgbm9kZV9jb25zdHJ1Y3RvciBhKHRoaXMtPm5vZGVfYWxsb2MoKSk7Ci0gICAgICAgICAgICBhLmNvbnN0cnVjdF93aXRoX3ZhbHVlKE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX0ZPUldBUkQpOwotICAgIAotICAgICAgICAgICAgLy8gcmVzZXJ2ZSBoYXMgYmFzaWMgZXhjZXB0aW9uIHNhZmV0eSBpZiB0aGUgaGFzaCBmdW5jdGlvbgotICAgICAgICAgICAgLy8gdGhyb3dzLCBzdHJvbmcgb3RoZXJ3aXNlLgotICAgICAgICAgICAgdGhpcy0+cmVzZXJ2ZV9mb3JfaW5zZXJ0KHRoaXMtPnNpemVfICsgMSk7Ci0gICAgICAgICAgICByZXR1cm4gZW1wbGFjZV9yZXR1cm4odGhpcy0+YWRkX25vZGUoYSwga2V5X2hhc2gpLCB0cnVlKTsKLSAgICAgICAgfQotCi0gICAgICAgIGVtcGxhY2VfcmV0dXJuIGVtcGxhY2VfaW1wbF93aXRoX25vZGUobm9kZV9jb25zdHJ1Y3RvciYgYSkKLSAgICAgICAgewotICAgICAgICAgICAga2V5X3R5cGUgY29uc3QmIGsgPSB0aGlzLT5nZXRfa2V5KGEudmFsdWUoKSk7Ci0gICAgICAgICAgICBzdGQ6OnNpemVfdCBrZXlfaGFzaCA9IHRoaXMtPmhhc2goayk7Ci0gICAgICAgICAgICBpdGVyYXRvciBwb3MgPSB0aGlzLT5maW5kX25vZGUoa2V5X2hhc2gsIGspOwotCi0gICAgICAgICAgICBpZiAocG9zLm5vZGVfKSByZXR1cm4gZW1wbGFjZV9yZXR1cm4ocG9zLCBmYWxzZSk7Ci0KLSAgICAgICAgICAgIC8vIHJlc2VydmUgaGFzIGJhc2ljIGV4Y2VwdGlvbiBzYWZldHkgaWYgdGhlIGhhc2ggZnVuY3Rpb24KLSAgICAgICAgICAgIC8vIHRocm93cywgc3Ryb25nIG90aGVyd2lzZS4KLSAgICAgICAgICAgIHRoaXMtPnJlc2VydmVfZm9yX2luc2VydCh0aGlzLT5zaXplXyArIDEpOwotICAgICAgICAgICAgcmV0dXJuIGVtcGxhY2VfcmV0dXJuKHRoaXMtPmFkZF9ub2RlKGEsIGtleV9oYXNoKSwgdHJ1ZSk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8TkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfVEVNUExBVEU+Ci0gICAgICAgIGVtcGxhY2VfcmV0dXJuIGVtcGxhY2VfaW1wbChub19rZXksIE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX0FSR1MpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIERvbid0IGhhdmUgYSBrZXksIHNvIGNvbnN0cnVjdCB0aGUgbm9kZSBmaXJzdCBpbiBvcmRlcgotICAgICAgICAgICAgLy8gdG8gYmUgYWJsZSB0byBsb29rdXAgdGhlIHBvc2l0aW9uLgotICAgICAgICAgICAgbm9kZV9jb25zdHJ1Y3RvciBhKHRoaXMtPm5vZGVfYWxsb2MoKSk7Ci0gICAgICAgICAgICBhLmNvbnN0cnVjdF93aXRoX3ZhbHVlKE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX0ZPUldBUkQpOwotICAgICAgICAgICAgcmV0dXJuIGVtcGxhY2VfaW1wbF93aXRoX25vZGUoYSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gSW5zZXJ0IHJhbmdlIG1ldGhvZHMKLSAgICAgICAgLy8KLSAgICAgICAgLy8gaWYgaGFzaCBmdW5jdGlvbiB0aHJvd3MsIG9yIGluc2VydGluZyA+IDEgZWxlbWVudCwgYmFzaWMgZXhjZXB0aW9uCi0gICAgICAgIC8vIHNhZmV0eSBzdHJvbmcgb3RoZXJ3aXNlCi0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXQ+Ci0gICAgICAgIHZvaWQgaW5zZXJ0X3JhbmdlKElucHV0SXQgaSwgSW5wdXRJdCBqKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZihpICE9IGopCi0gICAgICAgICAgICAgICAgcmV0dXJuIGluc2VydF9yYW5nZV9pbXBsKGV4dHJhY3Rvcjo6ZXh0cmFjdCgqaSksIGksIGopOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXQ+Ci0gICAgICAgIHZvaWQgaW5zZXJ0X3JhbmdlX2ltcGwoa2V5X3R5cGUgY29uc3QmIGssIElucHV0SXQgaSwgSW5wdXRJdCBqKQotICAgICAgICB7Ci0gICAgICAgICAgICBub2RlX2NvbnN0cnVjdG9yIGEodGhpcy0+bm9kZV9hbGxvYygpKTsKLQotICAgICAgICAgICAgaW5zZXJ0X3JhbmdlX2ltcGwyKGEsIGssIGksIGopOwotCi0gICAgICAgICAgICB3aGlsZSgrK2kgIT0gaikgewotICAgICAgICAgICAgICAgIC8vIE5vdGU6IGNhbid0IHVzZSBnZXRfa2V5IGFzICcqaScgbWlnaHQgbm90IGJlIHZhbHVlX3R5cGUgLSBpdAotICAgICAgICAgICAgICAgIC8vIGNvdWxkIGJlIGEgcGFpciB3aXRoIGZpcnN0X3R5cGVzIGFzIGtleV90eXBlIHdpdGhvdXQgY29uc3Qgb3IKLSAgICAgICAgICAgICAgICAvLyBhIGRpZmZlcmVudCBzZWNvbmRfdHlwZS4KLSAgICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgIC8vIFRPRE86IE1pZ2h0IGJlIHdvcnRoIHN0b3JpbmcgdGhlIHZhbHVlX3R5cGUgaW5zdGVhZCBvZiB0aGUKLSAgICAgICAgICAgICAgICAvLyBrZXkgaGVyZS4gQ291bGQgYmUgbW9yZSBlZmZpY2llbnQgaWYgJyppJyBpcyBleHBlbnNpdmUuIENvdWxkCi0gICAgICAgICAgICAgICAgLy8gYmUgbGVzcyBlZmZpY2llbnQgaWYgY29weWluZyB0aGUgZnVsbCB2YWx1ZV90eXBlIGlzCi0gICAgICAgICAgICAgICAgLy8gZXhwZW5zaXZlLgotICAgICAgICAgICAgICAgIGluc2VydF9yYW5nZV9pbXBsMihhLCBleHRyYWN0b3I6OmV4dHJhY3QoKmkpLCBpLCBqKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0PgotICAgICAgICB2b2lkIGluc2VydF9yYW5nZV9pbXBsMihub2RlX2NvbnN0cnVjdG9yJiBhLCBrZXlfdHlwZSBjb25zdCYgaywKLSAgICAgICAgICAgIElucHV0SXQgaSwgSW5wdXRJdCBqKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBObyBzaWRlIGVmZmVjdHMgaW4gdGhpcyBpbml0aWFsIGNvZGUKLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGtleV9oYXNoID0gdGhpcy0+aGFzaChrKTsKLSAgICAgICAgICAgIGl0ZXJhdG9yIHBvcyA9IHRoaXMtPmZpbmRfbm9kZShrZXlfaGFzaCwgayk7Ci0gICAgCi0gICAgICAgICAgICBpZiAoIXBvcy5ub2RlXykgewotICAgICAgICAgICAgICAgIGEuY29uc3RydWN0X3dpdGhfdmFsdWUyKCppKTsKLSAgICAgICAgICAgICAgICBpZih0aGlzLT5zaXplXyArIDEgPiB0aGlzLT5tYXhfbG9hZF8pCi0gICAgICAgICAgICAgICAgICAgIHRoaXMtPnJlc2VydmVfZm9yX2luc2VydCh0aGlzLT5zaXplXyArCi0gICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Omluc2VydF9zaXplKGksIGopKTsKLSAgICAKLSAgICAgICAgICAgICAgICAvLyBOb3RoaW5nIGFmdGVyIHRoaXMgcG9pbnQgY2FuIHRocm93LgotICAgICAgICAgICAgICAgIHRoaXMtPmFkZF9ub2RlKGEsIGtleV9oYXNoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0PgotICAgICAgICB2b2lkIGluc2VydF9yYW5nZV9pbXBsKG5vX2tleSwgSW5wdXRJdCBpLCBJbnB1dEl0IGopCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5vZGVfY29uc3RydWN0b3IgYSh0aGlzLT5ub2RlX2FsbG9jKCkpOwotCi0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgYS5jb25zdHJ1Y3Rfd2l0aF92YWx1ZTIoKmkpOwotICAgICAgICAgICAgICAgIGVtcGxhY2VfaW1wbF93aXRoX25vZGUoYSk7Ci0gICAgICAgICAgICB9IHdoaWxlKCsraSAhPSBqKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBFcmFzZQotICAgICAgICAvLwotICAgICAgICAvLyBubyB0aHJvdwotCi0gICAgICAgIHN0ZDo6c2l6ZV90IGVyYXNlX2tleShrZXlfdHlwZSBjb25zdCYgaykKLSAgICAgICAgewotICAgICAgICAgICAgaWYoIXRoaXMtPnNpemVfKSByZXR1cm4gMDsKLQotICAgICAgICAgICAgc3RkOjpzaXplX3Qga2V5X2hhc2ggPSB0aGlzLT5oYXNoKGspOwotICAgICAgICAgICAgc3RkOjpzaXplX3QgYnVja2V0X2luZGV4ID0gdGhpcy0+aGFzaF90b19idWNrZXQoa2V5X2hhc2gpOwotICAgICAgICAgICAgbGlua19wb2ludGVyIHByZXYgPSB0aGlzLT5nZXRfcHJldmlvdXNfc3RhcnQoYnVja2V0X2luZGV4KTsKLSAgICAgICAgICAgIGlmICghcHJldikgcmV0dXJuIDA7Ci0KLSAgICAgICAgICAgIGZvciAoOzspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKCFwcmV2LT5uZXh0XykgcmV0dXJuIDA7Ci0gICAgICAgICAgICAgICAgc3RkOjpzaXplX3Qgbm9kZV9oYXNoID0KLSAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8bm9kZV9wb2ludGVyPihwcmV2LT5uZXh0XyktPmhhc2hfOwotICAgICAgICAgICAgICAgIGlmICh0aGlzLT5oYXNoX3RvX2J1Y2tldChub2RlX2hhc2gpICE9IGJ1Y2tldF9pbmRleCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGVfaGFzaCA9PSBrZXlfaGFzaCAmJgotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy0+a2V5X2VxKCkoaywgdGhpcy0+Z2V0X2tleSgKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PG5vZGVfcG9pbnRlcj4ocHJldi0+bmV4dF8pLT52YWx1ZSgpKSkpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIHByZXYgPSBwcmV2LT5uZXh0XzsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbGlua19wb2ludGVyIGVuZCA9IHN0YXRpY19jYXN0PG5vZGVfcG9pbnRlcj4ocHJldi0+bmV4dF8pLT5uZXh0XzsKLQotICAgICAgICAgICAgc3RkOjpzaXplX3QgY291bnQgPSB0aGlzLT5kZWxldGVfbm9kZXMocHJldiwgZW5kKTsKLSAgICAgICAgICAgIHRoaXMtPmZpeF9idWNrZXQoYnVja2V0X2luZGV4LCBwcmV2KTsKLSAgICAgICAgICAgIHJldHVybiBjb3VudDsKLSAgICAgICAgfQotCi0gICAgICAgIGl0ZXJhdG9yIGVyYXNlKGNfaXRlcmF0b3IgcikKLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKHIubm9kZV8pOwotICAgICAgICAgICAgaXRlcmF0b3IgbmV4dChyLm5vZGVfKTsKLSAgICAgICAgICAgICsrbmV4dDsKLSAgICAgICAgICAgIGVyYXNlX25vZGVzKHIubm9kZV8sIG5leHQubm9kZV8pOwotICAgICAgICAgICAgcmV0dXJuIG5leHQ7Ci0gICAgICAgIH0KLQotICAgICAgICBpdGVyYXRvciBlcmFzZV9yYW5nZShjX2l0ZXJhdG9yIHIxLCBjX2l0ZXJhdG9yIHIyKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAocjEgPT0gcjIpIHJldHVybiBpdGVyYXRvcihyMi5ub2RlXyk7Ci0gICAgICAgICAgICBlcmFzZV9ub2RlcyhyMS5ub2RlXywgcjIubm9kZV8pOwotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yKHIyLm5vZGVfKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgZXJhc2Vfbm9kZXMobm9kZV9wb2ludGVyIGJlZ2luLCBub2RlX3BvaW50ZXIgZW5kKQotICAgICAgICB7Ci0gICAgICAgICAgICBzdGQ6OnNpemVfdCBidWNrZXRfaW5kZXggPSB0aGlzLT5oYXNoX3RvX2J1Y2tldChiZWdpbi0+aGFzaF8pOwotCi0gICAgICAgICAgICAvLyBGaW5kIHRoZSBub2RlIGJlZm9yZSBiZWdpbi4KLSAgICAgICAgICAgIGxpbmtfcG9pbnRlciBwcmV2ID0gdGhpcy0+Z2V0X3ByZXZpb3VzX3N0YXJ0KGJ1Y2tldF9pbmRleCk7Ci0gICAgICAgICAgICB3aGlsZShwcmV2LT5uZXh0XyAhPSBiZWdpbikgcHJldiA9IHByZXYtPm5leHRfOwotCi0gICAgICAgICAgICAvLyBEZWxldGUgdGhlIG5vZGVzLgotICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgIHRoaXMtPmRlbGV0ZV9ub2RlKHByZXYpOwotICAgICAgICAgICAgICAgIGJ1Y2tldF9pbmRleCA9IHRoaXMtPmZpeF9idWNrZXQoYnVja2V0X2luZGV4LCBwcmV2KTsKLSAgICAgICAgICAgIH0gd2hpbGUgKHByZXYtPm5leHRfICE9IGVuZCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gZmlsbF9idWNrZXRzCi0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIE5vZGVDcmVhdG9yPgotICAgICAgICBzdGF0aWMgdm9pZCBmaWxsX2J1Y2tldHMoaXRlcmF0b3IgbiwgdGFibGUmIGRzdCwKLSAgICAgICAgICAgIE5vZGVDcmVhdG9yJiBjcmVhdG9yKQotICAgICAgICB7Ci0gICAgICAgICAgICBsaW5rX3BvaW50ZXIgcHJldiA9IGRzdC5nZXRfcHJldmlvdXNfc3RhcnQoKTsKLQotICAgICAgICAgICAgd2hpbGUgKG4ubm9kZV8pIHsKLSAgICAgICAgICAgICAgICBub2RlX3BvaW50ZXIgbm9kZSA9IGNyZWF0b3IuY3JlYXRlKCpuKTsKLSAgICAgICAgICAgICAgICBub2RlLT5oYXNoXyA9IG4ubm9kZV8tPmhhc2hfOwotICAgICAgICAgICAgICAgIHByZXYtPm5leHRfID0gbm9kZTsKLSAgICAgICAgICAgICAgICArK2RzdC5zaXplXzsKLSAgICAgICAgICAgICAgICArK247Ci0KLSAgICAgICAgICAgICAgICBwcmV2ID0gcGxhY2VfaW5fYnVja2V0KGRzdCwgcHJldik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBzdHJvbmcgb3RoZXJ3aXNlIGV4Y2VwdGlvbiBzYWZldHkKLSAgICAgICAgdm9pZCByZWhhc2hfaW1wbChzdGQ6OnNpemVfdCBudW1fYnVja2V0cykKLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKHRoaXMtPmJ1Y2tldHNfKTsKLQotICAgICAgICAgICAgdGhpcy0+Y3JlYXRlX2J1Y2tldHMobnVtX2J1Y2tldHMpOwotICAgICAgICAgICAgbGlua19wb2ludGVyIHByZXYgPSB0aGlzLT5nZXRfcHJldmlvdXNfc3RhcnQoKTsKLSAgICAgICAgICAgIHdoaWxlIChwcmV2LT5uZXh0XykKLSAgICAgICAgICAgICAgICBwcmV2ID0gcGxhY2VfaW5fYnVja2V0KCp0aGlzLCBwcmV2KTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCB0aGUgbm9kZXMgcGxhY2luZyB0aGVtIGluIHRoZSBjb3JyZWN0IGJ1Y2tldHMuCi0gICAgICAgIC8vIHByZTogcHJldi0+bmV4dF8gaXMgbm90IG51bGwuCi0gICAgICAgIHN0YXRpYyBsaW5rX3BvaW50ZXIgcGxhY2VfaW5fYnVja2V0KHRhYmxlJiBkc3QsIGxpbmtfcG9pbnRlciBwcmV2KQotICAgICAgICB7Ci0gICAgICAgICAgICBub2RlX3BvaW50ZXIgbiA9IHN0YXRpY19jYXN0PG5vZGVfcG9pbnRlcj4ocHJldi0+bmV4dF8pOwotICAgICAgICAgICAgYnVja2V0X3BvaW50ZXIgYiA9IGRzdC5nZXRfYnVja2V0KGRzdC5oYXNoX3RvX2J1Y2tldChuLT5oYXNoXykpOwotCi0gICAgICAgICAgICBpZiAoIWItPm5leHRfKSB7Ci0gICAgICAgICAgICAgICAgYi0+bmV4dF8gPSBwcmV2OwotICAgICAgICAgICAgICAgIHJldHVybiBuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgcHJldi0+bmV4dF8gPSBuLT5uZXh0XzsKLSAgICAgICAgICAgICAgICBuLT5uZXh0XyA9IGItPm5leHRfLT5uZXh0XzsKLSAgICAgICAgICAgICAgICBiLT5uZXh0Xy0+bmV4dF8gPSBuOwotICAgICAgICAgICAgICAgIHJldHVybiBwcmV2OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfTsKLX19fQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC91dGlsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC91dGlsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGUxZGI4NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvdXRpbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNjAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwNCBKZXJlbXkgQi4gTWFpdGluLVNoZXBhcmQuCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxMSBEYW5pZWwgSmFtZXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9ERVRBSUxfVVRJTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0RFVEFJTF9VVElMX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19lbXB0eS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IvaXRlcmF0b3JfY2F0ZWdvcmllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9lbmFibGVfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9zZWxlY3RfdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbW92ZS9tb3ZlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3NpemUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZW51bS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3dhcC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB1bm9yZGVyZWQgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotICAgIHN0YXRpYyBjb25zdCBmbG9hdCBtaW5pbXVtX21heF9sb2FkX2ZhY3RvciA9IDFlLTNmOwotICAgIHN0YXRpYyBjb25zdCBzdGQ6OnNpemVfdCBkZWZhdWx0X2J1Y2tldF9jb3VudCA9IDExOwotICAgIHN0cnVjdCBtb3ZlX3RhZyB7fTsKLSAgICBzdHJ1Y3QgZW1wdHlfZW1wbGFjZSB7fTsKLQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAvLyBpdGVyYXRvciBTRklOQUUKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBJPgotICAgIHN0cnVjdCBpc19mb3J3YXJkIDoKLSAgICAgICAgbmRuYm9vc3Q6OmlzX2NvbnZlcnRpYmxlPAotICAgICAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6Oml0ZXJhdG9yX3RyYXZlcnNhbDxJPjo6dHlwZSwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojpmb3J3YXJkX3RyYXZlcnNhbF90YWc+Ci0gICAge307Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSSwgdHlwZW5hbWUgUmV0dXJuVHlwZT4KLSAgICBzdHJ1Y3QgZW5hYmxlX2lmX2ZvcndhcmQgOgotICAgICAgICBuZG5ib29zdDo6ZW5hYmxlX2lmX2M8Ci0gICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmlzX2ZvcndhcmQ8ST46OnZhbHVlLAotICAgICAgICAgICAgUmV0dXJuVHlwZT4KLSAgICB7fTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBJLCB0eXBlbmFtZSBSZXR1cm5UeXBlPgotICAgIHN0cnVjdCBkaXNhYmxlX2lmX2ZvcndhcmQgOgotICAgICAgICBuZG5ib29zdDo6ZGlzYWJsZV9pZl9jPAotICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjppc19mb3J3YXJkPEk+Ojp2YWx1ZSwKLSAgICAgICAgICAgIFJldHVyblR5cGU+Ci0gICAge307Ci0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8gcHJpbWVzCi0KLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX1BSSU1FUyBcCi0gICAgKDE3dWwpKDI5dWwpKDM3dWwpKDUzdWwpKDY3dWwpKDc5dWwpIFwKLSAgICAoOTd1bCkoMTMxdWwpKDE5M3VsKSgyNTd1bCkoMzg5dWwpKDUyMXVsKSg3Njl1bCkgXAotICAgICgxMDMxdWwpKDE1NDN1bCkoMjA1M3VsKSgzMDc5dWwpKDYxNTF1bCkoMTIyODl1bCkoMjQ1OTN1bCkgXAotICAgICg0OTE1N3VsKSg5ODMxN3VsKSgxOTY2MTN1bCkoMzkzMjQxdWwpKDc4NjQzM3VsKSBcCi0gICAgKDE1NzI4Njl1bCkoMzE0NTczOXVsKSg2MjkxNDY5dWwpKDEyNTgyOTE3dWwpKDI1MTY1ODQzdWwpIFwKLSAgICAoNTAzMzE2NTN1bCkoMTAwNjYzMzE5dWwpKDIwMTMyNjYxMXVsKSg0MDI2NTMxODl1bCkoODA1MzA2NDU3dWwpIFwKLSAgICAoMTYxMDYxMjc0MXVsKSgzMjIxMjI1NDczdWwpKDQyOTQ5NjcyOTF1bCkKLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBwcmltZV9saXN0X3RlbXBsYXRlCi0gICAgewotICAgICAgICBzdGF0aWMgc3RkOjpzaXplX3QgY29uc3QgdmFsdWVbXTsKLQotI2lmICFkZWZpbmVkKFNVTlBST19DQykKLSAgICAgICAgc3RhdGljIHN0ZDo6cHRyZGlmZl90IGNvbnN0IGxlbmd0aDsKLSNlbHNlCi0gICAgICAgIHN0YXRpYyBzdGQ6OnB0cmRpZmZfdCBjb25zdCBsZW5ndGgKLSAgICAgICAgICAgID0gTkROQk9PU1RfUFBfU0VRX1NJWkUoTkROQk9PU1RfVU5PUkRFUkVEX1BSSU1FUyk7Ci0jZW5kaWYKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBzdGQ6OnNpemVfdCBjb25zdCBwcmltZV9saXN0X3RlbXBsYXRlPFQ+Ojp2YWx1ZVtdID0gewotICAgICAgICBORE5CT09TVF9QUF9TRVFfRU5VTShORE5CT09TVF9VTk9SREVSRURfUFJJTUVTKQotICAgIH07Ci0KLSNpZiAhZGVmaW5lZChTVU5QUk9fQ0MpCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBzdGQ6OnB0cmRpZmZfdCBjb25zdCBwcmltZV9saXN0X3RlbXBsYXRlPFQ+OjpsZW5ndGgKLSAgICAgICAgPSBORE5CT09TVF9QUF9TRVFfU0laRShORE5CT09TVF9VTk9SREVSRURfUFJJTUVTKTsKLSNlbmRpZgotCi0jdW5kZWYgTkROQk9PU1RfVU5PUkRFUkVEX1BSSU1FUwotCi0gICAgdHlwZWRlZiBwcmltZV9saXN0X3RlbXBsYXRlPHN0ZDo6c2l6ZV90PiBwcmltZV9saXN0OwotCi0gICAgLy8gbm8gdGhyb3cKLSAgICBpbmxpbmUgc3RkOjpzaXplX3QgbmV4dF9wcmltZShzdGQ6OnNpemVfdCBudW0pIHsKLSAgICAgICAgc3RkOjpzaXplX3QgY29uc3QqIGNvbnN0IHByaW1lX2xpc3RfYmVnaW4gPSBwcmltZV9saXN0Ojp2YWx1ZTsKLSAgICAgICAgc3RkOjpzaXplX3QgY29uc3QqIGNvbnN0IHByaW1lX2xpc3RfZW5kID0gcHJpbWVfbGlzdF9iZWdpbiArCi0gICAgICAgICAgICBwcmltZV9saXN0OjpsZW5ndGg7Ci0gICAgICAgIHN0ZDo6c2l6ZV90IGNvbnN0KiBib3VuZCA9Ci0gICAgICAgICAgICBzdGQ6Omxvd2VyX2JvdW5kKHByaW1lX2xpc3RfYmVnaW4sIHByaW1lX2xpc3RfZW5kLCBudW0pOwotICAgICAgICBpZihib3VuZCA9PSBwcmltZV9saXN0X2VuZCkKLSAgICAgICAgICAgIGJvdW5kLS07Ci0gICAgICAgIHJldHVybiAqYm91bmQ7Ci0gICAgfQotCi0gICAgLy8gbm8gdGhyb3cKLSAgICBpbmxpbmUgc3RkOjpzaXplX3QgcHJldl9wcmltZShzdGQ6OnNpemVfdCBudW0pIHsKLSAgICAgICAgc3RkOjpzaXplX3QgY29uc3QqIGNvbnN0IHByaW1lX2xpc3RfYmVnaW4gPSBwcmltZV9saXN0Ojp2YWx1ZTsKLSAgICAgICAgc3RkOjpzaXplX3QgY29uc3QqIGNvbnN0IHByaW1lX2xpc3RfZW5kID0gcHJpbWVfbGlzdF9iZWdpbiArCi0gICAgICAgICAgICBwcmltZV9saXN0OjpsZW5ndGg7Ci0gICAgICAgIHN0ZDo6c2l6ZV90IGNvbnN0KiBib3VuZCA9Ci0gICAgICAgICAgICBzdGQ6OnVwcGVyX2JvdW5kKHByaW1lX2xpc3RfYmVnaW4scHJpbWVfbGlzdF9lbmQsIG51bSk7Ci0gICAgICAgIGlmKGJvdW5kICE9IHByaW1lX2xpc3RfYmVnaW4pCi0gICAgICAgICAgICBib3VuZC0tOwotICAgICAgICByZXR1cm4gKmJvdW5kOwotICAgIH0KLQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAvLyBpbnNlcnRfc2l6ZS9pbml0aWFsX3NpemUKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9ESVNUQU5DRSkKLQotICAgIHVzaW5nIDo6c3RkOjpkaXN0YW5jZTsKLQotI2Vsc2UKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBGb3J3YXJkSXRlcmF0b3I+Ci0gICAgaW5saW5lIHN0ZDo6c2l6ZV90IGRpc3RhbmNlKEZvcndhcmRJdGVyYXRvciBpLCBGb3J3YXJkSXRlcmF0b3IgaikgewotICAgICAgICBzdGQ6OnNpemVfdCB4OwotICAgICAgICBzdGQ6OmRpc3RhbmNlKGksIGosIHgpOwotICAgICAgICByZXR1cm4geDsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgdGVtcGxhdGUgPGNsYXNzIEk+Ci0gICAgaW5saW5lIHR5cGVuYW1lCi0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZW5hYmxlX2lmX2ZvcndhcmQ8SSwgc3RkOjpzaXplX3Q+Ojp0eXBlCi0gICAgICAgIGluc2VydF9zaXplKEkgaSwgSSBqKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6ZGlzdGFuY2UoaSwgaik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIEk+Ci0gICAgaW5saW5lIHR5cGVuYW1lCi0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZGlzYWJsZV9pZl9mb3J3YXJkPEksIHN0ZDo6c2l6ZV90Pjo6dHlwZQotICAgICAgICBpbnNlcnRfc2l6ZShJLCBJKQotICAgIHsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIEk+Ci0gICAgaW5saW5lIHN0ZDo6c2l6ZV90IGluaXRpYWxfc2l6ZShJIGksIEkgaiwKLSAgICAgICAgc3RkOjpzaXplX3QgbnVtX2J1Y2tldHMgPQotICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpkZWZhdWx0X2J1Y2tldF9jb3VudCkKLSAgICB7Ci0gICAgICAgIC8vIFRPRE86IFdoeSArMT8KLSAgICAgICAgcmV0dXJuIChzdGQ6Om1heCkoCi0gICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Omluc2VydF9zaXplKGksIGopICsgMSwKLSAgICAgICAgICAgIG51bV9idWNrZXRzKTsKLSAgICB9Ci0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8gY29tcHJlc3NlZAotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIGludCBJbmRleD4KLSAgICBzdHJ1Y3QgY29tcHJlc3NlZF9iYXNlIDogcHJpdmF0ZSBUCi0gICAgewotICAgICAgICBjb21wcmVzc2VkX2Jhc2UoVCBjb25zdCYgeCkgOiBUKHgpIHt9Ci0gICAgICAgIGNvbXByZXNzZWRfYmFzZShUJiB4LCBtb3ZlX3RhZykgOiBUKG5kbmJvb3N0Ojptb3ZlKHgpKSB7fQotCi0gICAgICAgIFQmIGdldCgpIHsgcmV0dXJuICp0aGlzOyB9Ci0gICAgICAgIFQgY29uc3QmIGdldCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9Ci0gICAgfTsKLSAgICAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgaW50IEluZGV4PgotICAgIHN0cnVjdCB1bmNvbXByZXNzZWRfYmFzZQotICAgIHsKLSAgICAgICAgdW5jb21wcmVzc2VkX2Jhc2UoVCBjb25zdCYgeCkgOiB2YWx1ZV8oeCkge30KLSAgICAgICAgdW5jb21wcmVzc2VkX2Jhc2UoVCYgeCwgbW92ZV90YWcpIDogdmFsdWVfKG5kbmJvb3N0Ojptb3ZlKHgpKSB7fQotCi0gICAgICAgIFQmIGdldCgpIHsgcmV0dXJuIHZhbHVlXzsgfQotICAgICAgICBUIGNvbnN0JiBnZXQoKSBjb25zdCB7IHJldHVybiB2YWx1ZV87IH0KLSAgICBwcml2YXRlOgotICAgICAgICBUIHZhbHVlXzsKLSAgICB9OwotICAgIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBpbnQgSW5kZXg+Ci0gICAgc3RydWN0IGdlbmVyYXRlX2Jhc2UKLSAgICAgIDogbmRuYm9vc3Q6OmRldGFpbDo6aWZfdHJ1ZTwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojppc19lbXB0eTxUPjo6dmFsdWUKLSAgICAgICAgPjo6IE5ETkJPT1NUX05FU1RFRF9URU1QTEFURSB0aGVuPAotICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpjb21wcmVzc2VkX2Jhc2U8VCwgSW5kZXg+LAotICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjp1bmNvbXByZXNzZWRfYmFzZTxULCBJbmRleD4KLSAgICAgICAgPgotICAgIHt9OwotICAgIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci0gICAgc3RydWN0IGNvbXByZXNzZWQKLSAgICAgIDogcHJpdmF0ZSBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmdlbmVyYXRlX2Jhc2U8VDEsIDE+Ojp0eXBlLAotICAgICAgICBwcml2YXRlIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Z2VuZXJhdGVfYmFzZTxUMiwgMj46OnR5cGUKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZ2VuZXJhdGVfYmFzZTxUMSwgMT46OnR5cGUgYmFzZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZ2VuZXJhdGVfYmFzZTxUMiwgMj46OnR5cGUgYmFzZTI7Ci0KLSAgICAgICAgdHlwZWRlZiBUMSBmaXJzdF90eXBlOwotICAgICAgICB0eXBlZGVmIFQyIHNlY29uZF90eXBlOwotICAgICAgICAKLSAgICAgICAgZmlyc3RfdHlwZSYgZmlyc3QoKSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8YmFzZTEqPih0aGlzKS0+Z2V0KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmaXJzdF90eXBlIGNvbnN0JiBmaXJzdCgpIGNvbnN0IHsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxiYXNlMSBjb25zdCo+KHRoaXMpLT5nZXQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHNlY29uZF90eXBlJiBzZWNvbmQoKSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8YmFzZTIqPih0aGlzKS0+Z2V0KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBzZWNvbmRfdHlwZSBjb25zdCYgc2Vjb25kKCkgY29uc3QgewotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJhc2UyIGNvbnN0Kj4odGhpcyktPmdldCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZpcnN0LCB0eXBlbmFtZSBTZWNvbmQ+Ci0gICAgICAgIGNvbXByZXNzZWQoRmlyc3QgY29uc3QmIHgxLCBTZWNvbmQgY29uc3QmIHgyKQotICAgICAgICAgICAgOiBiYXNlMSh4MSksIGJhc2UyKHgyKSB7fQotCi0gICAgICAgIGNvbXByZXNzZWQoY29tcHJlc3NlZCBjb25zdCYgeCkKLSAgICAgICAgICAgIDogYmFzZTEoeC5maXJzdCgpKSwgYmFzZTIoeC5zZWNvbmQoKSkge30KLQotICAgICAgICBjb21wcmVzc2VkKGNvbXByZXNzZWQmIHgsIG1vdmVfdGFnIG0pCi0gICAgICAgICAgICA6IGJhc2UxKHguZmlyc3QoKSwgbSksIGJhc2UyKHguc2Vjb25kKCksIG0pIHt9Ci0KLSAgICAgICAgdm9pZCBhc3NpZ24oY29tcHJlc3NlZCBjb25zdCYgeCkKLSAgICAgICAgewotICAgICAgICAgICAgZmlyc3QoKSA9IHguZmlyc3QoKTsKLSAgICAgICAgICAgIHNlY29uZCgpID0geC5zZWNvbmQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgbW92ZV9hc3NpZ24oY29tcHJlc3NlZCYgeCkKLSAgICAgICAgewotICAgICAgICAgICAgZmlyc3QoKSA9IG5kbmJvb3N0Ojptb3ZlKHguZmlyc3QoKSk7Ci0gICAgICAgICAgICBzZWNvbmQoKSA9IG5kbmJvb3N0Ojptb3ZlKHguc2Vjb25kKCkpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB2b2lkIHN3YXAoY29tcHJlc3NlZCYgeCkKLSAgICAgICAgewotICAgICAgICAgICAgbmRuYm9vc3Q6OnN3YXAoZmlyc3QoKSwgeC5maXJzdCgpKTsKLSAgICAgICAgICAgIG5kbmJvb3N0Ojpzd2FwKHNlY29uZCgpLCB4LnNlY29uZCgpKTsKLSAgICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgLy8gUHJldmVudCBhc3NpZ25tZW50IGp1c3QgdG8gbWFrZSB1c2Ugb2YgYXNzaWduIG9yCi0gICAgICAgIC8vIG1vdmVfYXNzaWduIGV4cGxpY2l0LgotICAgICAgICBjb21wcmVzc2VkJiBvcGVyYXRvcj0oY29tcHJlc3NlZCBjb25zdCYpOwotICAgIH07Ci19fX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC91bm9yZGVyZWRfc2V0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdW5vcmRlcmVkL3Vub3JkZXJlZF9zZXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjMyMzkzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdW5vcmRlcmVkL3Vub3JkZXJlZF9zZXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTU0OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCAoQykgMjAwMy0yMDA0IEplcmVteSBCLiBNYWl0aW4tU2hlcGFyZC4KLS8vIENvcHlyaWdodCAoQykgMjAwNS0yMDExIERhbmllbCBKYW1lcy4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdW5vcmRlcmVkIGZvciBkb2N1bWVudGF0aW9uCi0KLSNpZm5kZWYgTkROQk9PU1RfVU5PUkRFUkVEX1VOT1JERVJFRF9TRVRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9VTk9SREVSRURfU0VUX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Vub3JkZXJlZC91bm9yZGVyZWRfc2V0X2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC9lcXVpdmFsZW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL3VuaXF1ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC91dGlsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbmFsL2hhc2guaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21vdmUvbW92ZS5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVCkKLSNpbmNsdWRlIDxpbml0aWFsaXplcl9saXN0PgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNpZiBORE5CT09TVF9NU1ZDID49IDE0MDAKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQzOTYpIC8vdGhlIGlubGluZSBzcGVjaWZpZXIgY2Fubm90IGJlIHVzZWQgd2hlbiBhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmcmllbmQgZGVjbGFyYXRpb24gcmVmZXJzIHRvIGEgc3BlY2lhbGl6YXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9mIGEgZnVuY3Rpb24gdGVtcGxhdGUKLSNlbmRpZgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotbmFtZXNwYWNlIHVub3JkZXJlZAotewotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIGNsYXNzIHVub3JkZXJlZF9zZXQKLSAgICB7Ci0jaWYgZGVmaW5lZChORE5CT09TVF9VTk9SREVSRURfVVNFX01PVkUpCi0gICAgICAgIE5ETkJPT1NUX0NPUFlBQkxFX0FORF9NT1ZBQkxFKHVub3JkZXJlZF9zZXQpCi0jZW5kaWYKLSAgICBwdWJsaWM6Ci0KLSAgICAgICAgdHlwZWRlZiBUIGtleV90eXBlOwotICAgICAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLSAgICAgICAgdHlwZWRlZiBIIGhhc2hlcjsKLSAgICAgICAgdHlwZWRlZiBQIGtleV9lcXVhbDsKLSAgICAgICAgdHlwZWRlZiBBIGFsbG9jYXRvcl90eXBlOwotCi0gICAgcHJpdmF0ZToKLQotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6c2V0PEEsIFQsIEgsIFA+IHR5cGVzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVzOjp0cmFpdHMgYWxsb2NhdG9yX3RyYWl0czsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlczo6dGFibGUgdGFibGU7Ci0KLSAgICBwdWJsaWM6Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhbGxvY2F0b3JfdHJhaXRzOjpwb2ludGVyIHBvaW50ZXI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYWxsb2NhdG9yX3RyYWl0czo6Y29uc3RfcG9pbnRlciBjb25zdF9wb2ludGVyOwotCi0gICAgICAgIHR5cGVkZWYgdmFsdWVfdHlwZSYgcmVmZXJlbmNlOwotICAgICAgICB0eXBlZGVmIHZhbHVlX3R5cGUgY29uc3QmIGNvbnN0X3JlZmVyZW5jZTsKLQotICAgICAgICB0eXBlZGVmIHN0ZDo6c2l6ZV90IHNpemVfdHlwZTsKLSAgICAgICAgdHlwZWRlZiBzdGQ6OnB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6Y2xfaXRlcmF0b3IgY29uc3RfbG9jYWxfaXRlcmF0b3I7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6OmNsX2l0ZXJhdG9yIGxvY2FsX2l0ZXJhdG9yOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjpjX2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjpjX2l0ZXJhdG9yIGl0ZXJhdG9yOwotCi0gICAgcHJpdmF0ZToKLQotICAgICAgICB0YWJsZSB0YWJsZV87Ci0KLSAgICBwdWJsaWM6Ci0KLSAgICAgICAgLy8gY29uc3RydWN0b3JzCi0KLSAgICAgICAgZXhwbGljaXQgdW5vcmRlcmVkX3NldCgKLSAgICAgICAgICAgICAgICBzaXplX3R5cGUgPSBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmRlZmF1bHRfYnVja2V0X2NvdW50LAotICAgICAgICAgICAgICAgIGNvbnN0IGhhc2hlciYgPSBoYXNoZXIoKSwKLSAgICAgICAgICAgICAgICBjb25zdCBrZXlfZXF1YWwmID0ga2V5X2VxdWFsKCksCi0gICAgICAgICAgICAgICAgY29uc3QgYWxsb2NhdG9yX3R5cGUmID0gYWxsb2NhdG9yX3R5cGUoKSk7Ci0KLSAgICAgICAgZXhwbGljaXQgdW5vcmRlcmVkX3NldChhbGxvY2F0b3JfdHlwZSBjb25zdCYpOwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0PgotICAgICAgICB1bm9yZGVyZWRfc2V0KElucHV0SXQsIElucHV0SXQpOwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0PgotICAgICAgICB1bm9yZGVyZWRfc2V0KAotICAgICAgICAgICAgICAgIElucHV0SXQsIElucHV0SXQsCi0gICAgICAgICAgICAgICAgc2l6ZV90eXBlLAotICAgICAgICAgICAgICAgIGNvbnN0IGhhc2hlciYgPSBoYXNoZXIoKSwKLSAgICAgICAgICAgICAgICBjb25zdCBrZXlfZXF1YWwmID0ga2V5X2VxdWFsKCkpOwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0PgotICAgICAgICB1bm9yZGVyZWRfc2V0KAotICAgICAgICAgICAgICAgIElucHV0SXQsIElucHV0SXQsCi0gICAgICAgICAgICAgICAgc2l6ZV90eXBlLAotICAgICAgICAgICAgICAgIGNvbnN0IGhhc2hlciYsCi0gICAgICAgICAgICAgICAgY29uc3Qga2V5X2VxdWFsJiwKLSAgICAgICAgICAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYpOwotCi0gICAgICAgIC8vIGNvcHkvbW92ZSBjb25zdHJ1Y3RvcnMKLQotICAgICAgICB1bm9yZGVyZWRfc2V0KHVub3JkZXJlZF9zZXQgY29uc3QmKTsKLQotICAgICAgICB1bm9yZGVyZWRfc2V0KHVub3JkZXJlZF9zZXQgY29uc3QmLCBhbGxvY2F0b3JfdHlwZSBjb25zdCYpOwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9VTk9SREVSRURfVVNFX01PVkUpCi0gICAgICAgIHVub3JkZXJlZF9zZXQoTkROQk9PU1RfUlZfUkVGKHVub3JkZXJlZF9zZXQpIG90aGVyKQotICAgICAgICAgICAgOiB0YWJsZV8ob3RoZXIudGFibGVfLCBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om1vdmVfdGFnKCkpCi0gICAgICAgIHsKLSAgICAgICAgfQotI2VsaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMpCi0gICAgICAgIHVub3JkZXJlZF9zZXQodW5vcmRlcmVkX3NldCYmIG90aGVyKQotICAgICAgICAgICAgOiB0YWJsZV8ob3RoZXIudGFibGVfLCBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om1vdmVfdGFnKCkpCi0gICAgICAgIHsKLSAgICAgICAgfQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUykKLSAgICAgICAgdW5vcmRlcmVkX3NldCh1bm9yZGVyZWRfc2V0JiYsIGFsbG9jYXRvcl90eXBlIGNvbnN0Jik7Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9JTklUSUFMSVpFUl9MSVNUKQotICAgICAgICB1bm9yZGVyZWRfc2V0KAotICAgICAgICAgICAgICAgIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDx2YWx1ZV90eXBlPiwKLSAgICAgICAgICAgICAgICBzaXplX3R5cGUgPSBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmRlZmF1bHRfYnVja2V0X2NvdW50LAotICAgICAgICAgICAgICAgIGNvbnN0IGhhc2hlciYgPSBoYXNoZXIoKSwKLSAgICAgICAgICAgICAgICBjb25zdCBrZXlfZXF1YWwmbCA9IGtleV9lcXVhbCgpLAotICAgICAgICAgICAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlJiA9IGFsbG9jYXRvcl90eXBlKCkpOwotI2VuZGlmCi0KLSAgICAgICAgLy8gRGVzdHJ1Y3RvcgotCi0gICAgICAgIH51bm9yZGVyZWRfc2V0KCk7Ci0KLSAgICAgICAgLy8gQXNzaWduCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1VOT1JERVJFRF9VU0VfTU9WRSkKLSAgICAgICAgdW5vcmRlcmVkX3NldCYgb3BlcmF0b3I9KE5ETkJPT1NUX0NPUFlfQVNTSUdOX1JFRih1bm9yZGVyZWRfc2V0KSB4KQotICAgICAgICB7Ci0gICAgICAgICAgICB0YWJsZV8uYXNzaWduKHgudGFibGVfKTsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotCi0gICAgICAgIHVub3JkZXJlZF9zZXQmIG9wZXJhdG9yPShORE5CT09TVF9SVl9SRUYodW5vcmRlcmVkX3NldCkgeCkKLSAgICAgICAgewotICAgICAgICAgICAgdGFibGVfLm1vdmVfYXNzaWduKHgudGFibGVfKTsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotI2Vsc2UKLSAgICAgICAgdW5vcmRlcmVkX3NldCYgb3BlcmF0b3I9KHVub3JkZXJlZF9zZXQgY29uc3QmIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRhYmxlXy5hc3NpZ24oeC50YWJsZV8pOwotICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICB9Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUykKLSAgICAgICAgdW5vcmRlcmVkX3NldCYgb3BlcmF0b3I9KHVub3JkZXJlZF9zZXQmJiB4KQotICAgICAgICB7Ci0gICAgICAgICAgICB0YWJsZV8ubW92ZV9hc3NpZ24oeC50YWJsZV8pOwotICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICB9Ci0jZW5kaWYKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QpCi0gICAgICAgIHVub3JkZXJlZF9zZXQmIG9wZXJhdG9yPShzdGQ6OmluaXRpYWxpemVyX2xpc3Q8dmFsdWVfdHlwZT4pOwotI2VuZGlmCi0KLSAgICAgICAgYWxsb2NhdG9yX3R5cGUgZ2V0X2FsbG9jYXRvcigpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8ubm9kZV9hbGxvYygpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gc2l6ZSBhbmQgY2FwYWNpdHkKLQotICAgICAgICBib29sIGVtcHR5KCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5zaXplXyA9PSAwOwotICAgICAgICB9Ci0KLSAgICAgICAgc2l6ZV90eXBlIHNpemUoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLnNpemVfOwotICAgICAgICB9Ci0KLSAgICAgICAgc2l6ZV90eXBlIG1heF9zaXplKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQ7Ci0KLSAgICAgICAgLy8gaXRlcmF0b3JzCi0KLSAgICAgICAgaXRlcmF0b3IgYmVnaW4oKSBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLmJlZ2luKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8uYmVnaW4oKTsKLSAgICAgICAgfQotCi0gICAgICAgIGl0ZXJhdG9yIGVuZCgpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcigpOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdF9pdGVyYXRvciBjYmVnaW4oKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLmJlZ2luKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdF9pdGVyYXRvciBjZW5kKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBlbXBsYWNlCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMpCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdzPgotICAgICAgICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+IGVtcGxhY2UoTkROQk9PU1RfRldEX1JFRihBcmdzKS4uLiBhcmdzKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLmVtcGxhY2UobmRuYm9vc3Q6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3M+Ci0gICAgICAgIGl0ZXJhdG9yIGVtcGxhY2VfaGludChjb25zdF9pdGVyYXRvciwgTkROQk9PU1RfRldEX1JFRihBcmdzKS4uLiBhcmdzKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLmVtcGxhY2UobmRuYm9vc3Q6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pLmZpcnN0OwotICAgICAgICB9Ci0jZWxzZQotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19TVU5QUk9fQ0MsIE5ETkJPT1NUX1RFU1RFRF9BVCgweDUxMDApKQotCi0gICAgICAgIC8vIDAgYXJndW1lbnQgZW1wbGFjZSByZXF1aXJlcyBzcGVjaWFsIHRyZWF0bWVudCBpbiBjYXNlCi0gICAgICAgIC8vIHRoZSBjb250YWluZXIgaXMgaW5zdGFudGlhdGVkIHdpdGggYSB2YWx1ZSB0eXBlIHRoYXQKLSAgICAgICAgLy8gZG9lc24ndCBoYXZlIGEgZGVmYXVsdCBjb25zdHJ1Y3Rvci4KLQotICAgICAgICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+IGVtcGxhY2UoCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjplbXB0eV9lbXBsYWNlCi0gICAgICAgICAgICAgICAgICAgID0gbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjplbXB0eV9lbXBsYWNlKCksCi0gICAgICAgICAgICAgICAgdmFsdWVfdHlwZSB2ID0gdmFsdWVfdHlwZSgpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy0+ZW1wbGFjZShuZG5ib29zdDo6bW92ZSh2KSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpdGVyYXRvciBlbXBsYWNlX2hpbnQoY29uc3RfaXRlcmF0b3IgaGludCwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmVtcHR5X2VtcGxhY2UKLSAgICAgICAgICAgICAgICAgICAgPSBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmVtcHR5X2VtcGxhY2UoKSwKLSAgICAgICAgICAgICAgICB2YWx1ZV90eXBlIHYgPSB2YWx1ZV90eXBlKCkKLSAgICAgICAgICAgICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMtPmVtcGxhY2VfaGludChoaW50LCBuZG5ib29zdDo6bW92ZSh2KSk7Ci0gICAgICAgIH0KLQotI2VuZGlmCi0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEEwPgotICAgICAgICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+IGVtcGxhY2UoTkROQk9PU1RfRldEX1JFRihBMCkgYTApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8uZW1wbGFjZSgKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmNyZWF0ZV9lbXBsYWNlX2FyZ3MoCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojpmb3J3YXJkPEEwPihhMCkpCi0gICAgICAgICAgICApOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEEwPgotICAgICAgICBpdGVyYXRvciBlbXBsYWNlX2hpbnQoY29uc3RfaXRlcmF0b3IsIE5ETkJPT1NUX0ZXRF9SRUYoQTApIGEwKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLmVtcGxhY2UoCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpjcmVhdGVfZW1wbGFjZV9hcmdzKAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZDxBMD4oYTApKQotICAgICAgICAgICAgKS5maXJzdDsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBMCwgdHlwZW5hbWUgQTE+Ci0gICAgICAgIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gZW1wbGFjZSgKLSAgICAgICAgICAgIE5ETkJPT1NUX0ZXRF9SRUYoQTApIGEwLAotICAgICAgICAgICAgTkROQk9PU1RfRldEX1JFRihBMSkgYTEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8uZW1wbGFjZSgKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmNyZWF0ZV9lbXBsYWNlX2FyZ3MoCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojpmb3J3YXJkPEEwPihhMCksCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojpmb3J3YXJkPEExPihhMSkpCi0gICAgICAgICAgICApOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEEwLCB0eXBlbmFtZSBBMT4KLSAgICAgICAgaXRlcmF0b3IgZW1wbGFjZV9oaW50KGNvbnN0X2l0ZXJhdG9yLAotICAgICAgICAgICAgTkROQk9PU1RfRldEX1JFRihBMCkgYTAsCi0gICAgICAgICAgICBORE5CT09TVF9GV0RfUkVGKEExKSBhMSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5lbXBsYWNlKAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Y3JlYXRlX2VtcGxhY2VfYXJncygKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmQ8QTA+KGEwKSwKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmQ8QTE+KGExKSkKLSAgICAgICAgICAgICkuZmlyc3Q7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQTAsIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMj4KLSAgICAgICAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBib29sPiBlbXBsYWNlKAotICAgICAgICAgICAgTkROQk9PU1RfRldEX1JFRihBMCkgYTAsCi0gICAgICAgICAgICBORE5CT09TVF9GV0RfUkVGKEExKSBhMSwKLSAgICAgICAgICAgIE5ETkJPT1NUX0ZXRF9SRUYoQTIpIGEyKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLmVtcGxhY2UoCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpjcmVhdGVfZW1wbGFjZV9hcmdzKAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZDxBMD4oYTApLAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZDxBMT4oYTEpLAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZDxBMj4oYTIpKQotICAgICAgICAgICAgKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBMCwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyPgotICAgICAgICBpdGVyYXRvciBlbXBsYWNlX2hpbnQoY29uc3RfaXRlcmF0b3IsCi0gICAgICAgICAgICBORE5CT09TVF9GV0RfUkVGKEEwKSBhMCwKLSAgICAgICAgICAgIE5ETkJPT1NUX0ZXRF9SRUYoQTEpIGExLAotICAgICAgICAgICAgTkROQk9PU1RfRldEX1JFRihBMikgYTIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8uZW1wbGFjZSgKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmNyZWF0ZV9lbXBsYWNlX2FyZ3MoCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojpmb3J3YXJkPEEwPihhMCksCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojpmb3J3YXJkPEExPihhMSksCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojpmb3J3YXJkPEEyPihhMikpCi0gICAgICAgICAgICApLmZpcnN0OwotICAgICAgICB9Ci0KLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0UoeiwgbiwgXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICB0ZW1wbGF0ZSA8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1ooeiwgbiwgdHlwZW5hbWUgQSkgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+IGVtcGxhY2UoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNXyMjeihuLCBORE5CT09TVF9VTk9SREVSRURfRldEX1BBUkFNLCBhKSAgICAgIFwKLSAgICAgICAgICAgICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIHJldHVybiB0YWJsZV8uZW1wbGFjZSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpjcmVhdGVfZW1wbGFjZV9hcmdzKCAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNXyMjeihuLCBORE5CT09TVF9VTk9SREVSRURfQ0FMTF9GT1JXQVJELCAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICApKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHRlbXBsYXRlIDwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfWih6LCBuLCB0eXBlbmFtZSBBKSAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIGl0ZXJhdG9yIGVtcGxhY2VfaGludCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0X2l0ZXJhdG9yLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNXyMjeihuLCBORE5CT09TVF9VTk9SREVSRURfRldEX1BBUkFNLCBhKSAgICAgIFwKLSAgICAgICAgICAgICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIHJldHVybiB0YWJsZV8uZW1wbGFjZSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpjcmVhdGVfZW1wbGFjZV9hcmdzKCAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNXyMjeihuLCBORE5CT09TVF9VTk9SREVSRURfQ0FMTF9GT1JXQVJELCAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICApKS5maXJzdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICB9Ci0KLSAgICAgICAgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE8oNCwgTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfTElNSVQsCi0gICAgICAgICAgICBORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRSwgXykKLQotI3VuZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFCi0KLSNlbmRpZgotCi0gICAgICAgIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gaW5zZXJ0KHZhbHVlX3R5cGUgY29uc3QmIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLT5lbXBsYWNlKHgpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBib29sPiBpbnNlcnQoTkROQk9PU1RfVU5PUkRFUkVEX1JWX1JFRih2YWx1ZV90eXBlKSB4KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy0+ZW1wbGFjZShuZG5ib29zdDo6bW92ZSh4KSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpdGVyYXRvciBpbnNlcnQoY29uc3RfaXRlcmF0b3IgaGludCwgdmFsdWVfdHlwZSBjb25zdCYgeCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMtPmVtcGxhY2VfaGludChoaW50LCB4KTsKLSAgICAgICAgfQotCi0gICAgICAgIGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRvciBoaW50LAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1VOT1JERVJFRF9SVl9SRUYodmFsdWVfdHlwZSkgeCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMtPmVtcGxhY2VfaGludChoaW50LCBuZG5ib29zdDo6bW92ZSh4KSk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdD4gdm9pZCBpbnNlcnQoSW5wdXRJdCwgSW5wdXRJdCk7Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVCkKLSAgICAgICAgdm9pZCBpbnNlcnQoc3RkOjppbml0aWFsaXplcl9saXN0PHZhbHVlX3R5cGU+KTsKLSNlbmRpZgotCi0gICAgICAgIGl0ZXJhdG9yIGVyYXNlKGNvbnN0X2l0ZXJhdG9yKTsKLSAgICAgICAgc2l6ZV90eXBlIGVyYXNlKGNvbnN0IGtleV90eXBlJik7Ci0gICAgICAgIGl0ZXJhdG9yIGVyYXNlKGNvbnN0X2l0ZXJhdG9yLCBjb25zdF9pdGVyYXRvcik7Ci0gICAgICAgIHZvaWQgcXVpY2tfZXJhc2UoY29uc3RfaXRlcmF0b3IgaXQpIHsgZXJhc2UoaXQpOyB9Ci0gICAgICAgIHZvaWQgZXJhc2VfcmV0dXJuX3ZvaWQoY29uc3RfaXRlcmF0b3IgaXQpIHsgZXJhc2UoaXQpOyB9Ci0KLSAgICAgICAgdm9pZCBjbGVhcigpOwotICAgICAgICB2b2lkIHN3YXAodW5vcmRlcmVkX3NldCYpOwotCi0gICAgICAgIC8vIG9ic2VydmVycwotCi0gICAgICAgIGhhc2hlciBoYXNoX2Z1bmN0aW9uKCkgY29uc3Q7Ci0gICAgICAgIGtleV9lcXVhbCBrZXlfZXEoKSBjb25zdDsKLQotICAgICAgICAvLyBsb29rdXAKLQotICAgICAgICBjb25zdF9pdGVyYXRvciBmaW5kKGNvbnN0IGtleV90eXBlJikgY29uc3Q7Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIENvbXBhdGlibGVLZXksIGNsYXNzIENvbXBhdGlibGVIYXNoLAotICAgICAgICAgICAgY2xhc3MgQ29tcGF0aWJsZVByZWRpY2F0ZT4KLSAgICAgICAgY29uc3RfaXRlcmF0b3IgZmluZCgKLSAgICAgICAgICAgICAgICBDb21wYXRpYmxlS2V5IGNvbnN0JiwKLSAgICAgICAgICAgICAgICBDb21wYXRpYmxlSGFzaCBjb25zdCYsCi0gICAgICAgICAgICAgICAgQ29tcGF0aWJsZVByZWRpY2F0ZSBjb25zdCYpIGNvbnN0OwotCi0gICAgICAgIHNpemVfdHlwZSBjb3VudChjb25zdCBrZXlfdHlwZSYpIGNvbnN0OwotCi0gICAgICAgIHN0ZDo6cGFpcjxjb25zdF9pdGVyYXRvciwgY29uc3RfaXRlcmF0b3I+Ci0gICAgICAgIGVxdWFsX3JhbmdlKGNvbnN0IGtleV90eXBlJikgY29uc3Q7Ci0KLSAgICAgICAgLy8gYnVja2V0IGludGVyZmFjZQotCi0gICAgICAgIHNpemVfdHlwZSBidWNrZXRfY291bnQoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLmJ1Y2tldF9jb3VudF87Ci0gICAgICAgIH0KLQotICAgICAgICBzaXplX3R5cGUgbWF4X2J1Y2tldF9jb3VudCgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8ubWF4X2J1Y2tldF9jb3VudCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgc2l6ZV90eXBlIGJ1Y2tldF9zaXplKHNpemVfdHlwZSkgY29uc3Q7Ci0KLSAgICAgICAgc2l6ZV90eXBlIGJ1Y2tldChjb25zdCBrZXlfdHlwZSYgaykgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5oYXNoX3RvX2J1Y2tldCh0YWJsZV8uaGFzaChrKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBsb2NhbF9pdGVyYXRvciBiZWdpbihzaXplX3R5cGUgbikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGxvY2FsX2l0ZXJhdG9yKAotICAgICAgICAgICAgICAgIHRhYmxlXy5iZWdpbihuKSwgbiwgdGFibGVfLmJ1Y2tldF9jb3VudF8pOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3RfbG9jYWxfaXRlcmF0b3IgYmVnaW4oc2l6ZV90eXBlIG4pIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBjb25zdF9sb2NhbF9pdGVyYXRvcigKLSAgICAgICAgICAgICAgICB0YWJsZV8uYmVnaW4obiksIG4sIHRhYmxlXy5idWNrZXRfY291bnRfKTsKLSAgICAgICAgfQotCi0gICAgICAgIGxvY2FsX2l0ZXJhdG9yIGVuZChzaXplX3R5cGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBsb2NhbF9pdGVyYXRvcigpOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3RfbG9jYWxfaXRlcmF0b3IgZW5kKHNpemVfdHlwZSkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGNvbnN0X2xvY2FsX2l0ZXJhdG9yKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdF9sb2NhbF9pdGVyYXRvciBjYmVnaW4oc2l6ZV90eXBlIG4pIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBjb25zdF9sb2NhbF9pdGVyYXRvcigKLSAgICAgICAgICAgICAgICB0YWJsZV8uYmVnaW4obiksIG4sIHRhYmxlXy5idWNrZXRfY291bnRfKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0X2xvY2FsX2l0ZXJhdG9yIGNlbmQoc2l6ZV90eXBlKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gY29uc3RfbG9jYWxfaXRlcmF0b3IoKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIGhhc2ggcG9saWN5Ci0KLSAgICAgICAgZmxvYXQgbWF4X2xvYWRfZmFjdG9yKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5tbGZfOwotICAgICAgICB9Ci0KLSAgICAgICAgZmxvYXQgbG9hZF9mYWN0b3IoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVDsKLSAgICAgICAgdm9pZCBtYXhfbG9hZF9mYWN0b3IoZmxvYXQpIE5ETkJPT1NUX05PRVhDRVBUOwotICAgICAgICB2b2lkIHJlaGFzaChzaXplX3R5cGUpOwotICAgICAgICB2b2lkIHJlc2VydmUoc2l6ZV90eXBlKTsKLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPCAweDA1ODIpCi0gICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT08VCxILFAsQT4oCi0gICAgICAgICAgICAgICAgdW5vcmRlcmVkX3NldCBjb25zdCYsIHVub3JkZXJlZF9zZXQgY29uc3QmKTsKLSAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPTxULEgsUCxBPigKLSAgICAgICAgICAgICAgICB1bm9yZGVyZWRfc2V0IGNvbnN0JiwgdW5vcmRlcmVkX3NldCBjb25zdCYpOwotI2VuZGlmCi0gICAgfTsgLy8gY2xhc3MgdGVtcGxhdGUgdW5vcmRlcmVkX3NldAotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgY2xhc3MgdW5vcmRlcmVkX211bHRpc2V0Ci0gICAgewotI2lmIGRlZmluZWQoTkROQk9PU1RfVU5PUkRFUkVEX1VTRV9NT1ZFKQotICAgICAgICBORE5CT09TVF9DT1BZQUJMRV9BTkRfTU9WQUJMRSh1bm9yZGVyZWRfbXVsdGlzZXQpCi0jZW5kaWYKLSAgICBwdWJsaWM6Ci0KLSAgICAgICAgdHlwZWRlZiBUIGtleV90eXBlOwotICAgICAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLSAgICAgICAgdHlwZWRlZiBIIGhhc2hlcjsKLSAgICAgICAgdHlwZWRlZiBQIGtleV9lcXVhbDsKLSAgICAgICAgdHlwZWRlZiBBIGFsbG9jYXRvcl90eXBlOwotCi0gICAgcHJpdmF0ZToKLQotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6bXVsdGlzZXQ8QSwgVCwgSCwgUD4gdHlwZXM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZXM6OnRyYWl0cyBhbGxvY2F0b3JfdHJhaXRzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVzOjp0YWJsZSB0YWJsZTsKLQotICAgIHB1YmxpYzoKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFsbG9jYXRvcl90cmFpdHM6OnBvaW50ZXIgcG9pbnRlcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhbGxvY2F0b3JfdHJhaXRzOjpjb25zdF9wb2ludGVyIGNvbnN0X3BvaW50ZXI7Ci0KLSAgICAgICAgdHlwZWRlZiB2YWx1ZV90eXBlJiByZWZlcmVuY2U7Ci0gICAgICAgIHR5cGVkZWYgdmFsdWVfdHlwZSBjb25zdCYgY29uc3RfcmVmZXJlbmNlOwotCi0gICAgICAgIHR5cGVkZWYgc3RkOjpzaXplX3Qgc2l6ZV90eXBlOwotICAgICAgICB0eXBlZGVmIHN0ZDo6cHRyZGlmZl90IGRpZmZlcmVuY2VfdHlwZTsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjpjbF9pdGVyYXRvciBjb25zdF9sb2NhbF9pdGVyYXRvcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6Y2xfaXRlcmF0b3IgbG9jYWxfaXRlcmF0b3I7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6OmNfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6OmNfaXRlcmF0b3IgaXRlcmF0b3I7Ci0KLSAgICBwcml2YXRlOgotCi0gICAgICAgIHRhYmxlIHRhYmxlXzsKLQotICAgIHB1YmxpYzoKLQotICAgICAgICAvLyBjb25zdHJ1Y3RvcnMKLQotICAgICAgICBleHBsaWNpdCB1bm9yZGVyZWRfbXVsdGlzZXQoCi0gICAgICAgICAgICAgICAgc2l6ZV90eXBlID0gbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpkZWZhdWx0X2J1Y2tldF9jb3VudCwKLSAgICAgICAgICAgICAgICBjb25zdCBoYXNoZXImID0gaGFzaGVyKCksCi0gICAgICAgICAgICAgICAgY29uc3Qga2V5X2VxdWFsJiA9IGtleV9lcXVhbCgpLAotICAgICAgICAgICAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlJiA9IGFsbG9jYXRvcl90eXBlKCkpOwotCi0gICAgICAgIGV4cGxpY2l0IHVub3JkZXJlZF9tdWx0aXNldChhbGxvY2F0b3JfdHlwZSBjb25zdCYpOwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0PgotICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQoSW5wdXRJdCwgSW5wdXRJdCk7Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXQ+Ci0gICAgICAgIHVub3JkZXJlZF9tdWx0aXNldCgKLSAgICAgICAgICAgICAgICBJbnB1dEl0LCBJbnB1dEl0LAotICAgICAgICAgICAgICAgIHNpemVfdHlwZSwKLSAgICAgICAgICAgICAgICBjb25zdCBoYXNoZXImID0gaGFzaGVyKCksCi0gICAgICAgICAgICAgICAgY29uc3Qga2V5X2VxdWFsJiA9IGtleV9lcXVhbCgpKTsKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdD4KLSAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0KAotICAgICAgICAgICAgICAgIElucHV0SXQsIElucHV0SXQsCi0gICAgICAgICAgICAgICAgc2l6ZV90eXBlLAotICAgICAgICAgICAgICAgIGNvbnN0IGhhc2hlciYsCi0gICAgICAgICAgICAgICAgY29uc3Qga2V5X2VxdWFsJiwKLSAgICAgICAgICAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYpOwotCi0gICAgICAgIC8vIGNvcHkvbW92ZSBjb25zdHJ1Y3RvcnMKLQotICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQodW5vcmRlcmVkX211bHRpc2V0IGNvbnN0Jik7Ci0KLSAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0KHVub3JkZXJlZF9tdWx0aXNldCBjb25zdCYsIGFsbG9jYXRvcl90eXBlIGNvbnN0Jik7Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1VOT1JERVJFRF9VU0VfTU9WRSkKLSAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0KE5ETkJPT1NUX1JWX1JFRih1bm9yZGVyZWRfbXVsdGlzZXQpIG90aGVyKQotICAgICAgICAgICAgOiB0YWJsZV8ob3RoZXIudGFibGVfLCBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om1vdmVfdGFnKCkpCi0gICAgICAgIHsKLSAgICAgICAgfQotI2VsaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMpCi0gICAgICAgIHVub3JkZXJlZF9tdWx0aXNldCh1bm9yZGVyZWRfbXVsdGlzZXQmJiBvdGhlcikKLSAgICAgICAgICAgIDogdGFibGVfKG90aGVyLnRhYmxlXywgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjptb3ZlX3RhZygpKQotICAgICAgICB7Ci0gICAgICAgIH0KLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMpCi0gICAgICAgIHVub3JkZXJlZF9tdWx0aXNldCh1bm9yZGVyZWRfbXVsdGlzZXQmJiwgYWxsb2NhdG9yX3R5cGUgY29uc3QmKTsKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QpCi0gICAgICAgIHVub3JkZXJlZF9tdWx0aXNldCgKLSAgICAgICAgICAgICAgICBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8dmFsdWVfdHlwZT4sCi0gICAgICAgICAgICAgICAgc2l6ZV90eXBlID0gbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpkZWZhdWx0X2J1Y2tldF9jb3VudCwKLSAgICAgICAgICAgICAgICBjb25zdCBoYXNoZXImID0gaGFzaGVyKCksCi0gICAgICAgICAgICAgICAgY29uc3Qga2V5X2VxdWFsJmwgPSBrZXlfZXF1YWwoKSwKLSAgICAgICAgICAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgPSBhbGxvY2F0b3JfdHlwZSgpKTsKLSNlbmRpZgotCi0gICAgICAgIC8vIERlc3RydWN0b3IKLQotICAgICAgICB+dW5vcmRlcmVkX211bHRpc2V0KCk7Ci0KLSAgICAgICAgLy8gQXNzaWduCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1VOT1JERVJFRF9VU0VfTU9WRSkKLSAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0JiBvcGVyYXRvcj0oCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfQ09QWV9BU1NJR05fUkVGKHVub3JkZXJlZF9tdWx0aXNldCkgeCkKLSAgICAgICAgewotICAgICAgICAgICAgdGFibGVfLmFzc2lnbih4LnRhYmxlXyk7Ci0gICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIH0KLQotICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQmIG9wZXJhdG9yPShORE5CT09TVF9SVl9SRUYodW5vcmRlcmVkX211bHRpc2V0KSB4KQotICAgICAgICB7Ci0gICAgICAgICAgICB0YWJsZV8ubW92ZV9hc3NpZ24oeC50YWJsZV8pOwotICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICB9Ci0jZWxzZQotICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQmIG9wZXJhdG9yPSh1bm9yZGVyZWRfbXVsdGlzZXQgY29uc3QmIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRhYmxlXy5hc3NpZ24oeC50YWJsZV8pOwotICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICB9Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUykKLSAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0JiBvcGVyYXRvcj0odW5vcmRlcmVkX211bHRpc2V0JiYgeCkKLSAgICAgICAgewotICAgICAgICAgICAgdGFibGVfLm1vdmVfYXNzaWduKHgudGFibGVfKTsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotI2VuZGlmCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9JTklUSUFMSVpFUl9MSVNUKQotICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQmIG9wZXJhdG9yPShzdGQ6OmluaXRpYWxpemVyX2xpc3Q8dmFsdWVfdHlwZT4pOwotI2VuZGlmCi0KLSAgICAgICAgYWxsb2NhdG9yX3R5cGUgZ2V0X2FsbG9jYXRvcigpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8ubm9kZV9hbGxvYygpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gc2l6ZSBhbmQgY2FwYWNpdHkKLQotICAgICAgICBib29sIGVtcHR5KCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5zaXplXyA9PSAwOwotICAgICAgICB9Ci0KLSAgICAgICAgc2l6ZV90eXBlIHNpemUoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLnNpemVfOwotICAgICAgICB9Ci0KLSAgICAgICAgc2l6ZV90eXBlIG1heF9zaXplKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQ7Ci0KLSAgICAgICAgLy8gaXRlcmF0b3JzCi0KLSAgICAgICAgaXRlcmF0b3IgYmVnaW4oKSBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3IodGFibGVfLmJlZ2luKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gY29uc3RfaXRlcmF0b3IodGFibGVfLmJlZ2luKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgaXRlcmF0b3IgZW5kKCkgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gY29uc3RfaXRlcmF0b3IoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0X2l0ZXJhdG9yIGNiZWdpbigpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBjb25zdF9pdGVyYXRvcih0YWJsZV8uYmVnaW4oKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdF9pdGVyYXRvciBjZW5kKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBlbXBsYWNlCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMpCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdzPgotICAgICAgICBpdGVyYXRvciBlbXBsYWNlKE5ETkJPT1NUX0ZXRF9SRUYoQXJncykuLi4gYXJncykKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5lbXBsYWNlKG5kbmJvb3N0Ojpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdzPgotICAgICAgICBpdGVyYXRvciBlbXBsYWNlX2hpbnQoY29uc3RfaXRlcmF0b3IsIE5ETkJPT1NUX0ZXRF9SRUYoQXJncykuLi4gYXJncykKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5lbXBsYWNlKG5kbmJvb3N0Ojpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKLSAgICAgICAgfQotI2Vsc2UKLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fU1VOUFJPX0NDLCBORE5CT09TVF9URVNURURfQVQoMHg1MTAwKSkKLQotICAgICAgICAvLyAwIGFyZ3VtZW50IGVtcGxhY2UgcmVxdWlyZXMgc3BlY2lhbCB0cmVhdG1lbnQgaW4gY2FzZQotICAgICAgICAvLyB0aGUgY29udGFpbmVyIGlzIGluc3RhbnRpYXRlZCB3aXRoIGEgdmFsdWUgdHlwZSB0aGF0Ci0gICAgICAgIC8vIGRvZXNuJ3QgaGF2ZSBhIGRlZmF1bHQgY29uc3RydWN0b3IuCi0KLSAgICAgICAgaXRlcmF0b3IgZW1wbGFjZSgKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmVtcHR5X2VtcGxhY2UKLSAgICAgICAgICAgICAgICAgICAgPSBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmVtcHR5X2VtcGxhY2UoKSwKLSAgICAgICAgICAgICAgICB2YWx1ZV90eXBlIHYgPSB2YWx1ZV90eXBlKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLT5lbXBsYWNlKG5kbmJvb3N0Ojptb3ZlKHYpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGl0ZXJhdG9yIGVtcGxhY2VfaGludChjb25zdF9pdGVyYXRvciBoaW50LAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZW1wdHlfZW1wbGFjZQotICAgICAgICAgICAgICAgICAgICA9IG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZW1wdHlfZW1wbGFjZSgpLAotICAgICAgICAgICAgICAgIHZhbHVlX3R5cGUgdiA9IHZhbHVlX3R5cGUoKQotICAgICAgICAgICAgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy0+ZW1wbGFjZV9oaW50KGhpbnQsIG5kbmJvb3N0Ojptb3ZlKHYpKTsKLSAgICAgICAgfQotCi0jZW5kaWYKLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQTA+Ci0gICAgICAgIGl0ZXJhdG9yIGVtcGxhY2UoTkROQk9PU1RfRldEX1JFRihBMCkgYTApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8uZW1wbGFjZSgKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmNyZWF0ZV9lbXBsYWNlX2FyZ3MoCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojpmb3J3YXJkPEEwPihhMCkpCi0gICAgICAgICAgICApOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEEwPgotICAgICAgICBpdGVyYXRvciBlbXBsYWNlX2hpbnQoY29uc3RfaXRlcmF0b3IsIE5ETkJPT1NUX0ZXRF9SRUYoQTApIGEwKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLmVtcGxhY2UoCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpjcmVhdGVfZW1wbGFjZV9hcmdzKAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZDxBMD4oYTApKQotICAgICAgICAgICAgKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBMCwgdHlwZW5hbWUgQTE+Ci0gICAgICAgIGl0ZXJhdG9yIGVtcGxhY2UoCi0gICAgICAgICAgICBORE5CT09TVF9GV0RfUkVGKEEwKSBhMCwKLSAgICAgICAgICAgIE5ETkJPT1NUX0ZXRF9SRUYoQTEpIGExKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLmVtcGxhY2UoCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpjcmVhdGVfZW1wbGFjZV9hcmdzKAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZDxBMD4oYTApLAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZDxBMT4oYTEpKQotICAgICAgICAgICAgKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBMCwgdHlwZW5hbWUgQTE+Ci0gICAgICAgIGl0ZXJhdG9yIGVtcGxhY2VfaGludChjb25zdF9pdGVyYXRvciwKLSAgICAgICAgICAgIE5ETkJPT1NUX0ZXRF9SRUYoQTApIGEwLAotICAgICAgICAgICAgTkROQk9PU1RfRldEX1JFRihBMSkgYTEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8uZW1wbGFjZSgKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmNyZWF0ZV9lbXBsYWNlX2FyZ3MoCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojpmb3J3YXJkPEEwPihhMCksCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojpmb3J3YXJkPEExPihhMSkpCi0gICAgICAgICAgICApOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEEwLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTI+Ci0gICAgICAgIGl0ZXJhdG9yIGVtcGxhY2UoCi0gICAgICAgICAgICBORE5CT09TVF9GV0RfUkVGKEEwKSBhMCwKLSAgICAgICAgICAgIE5ETkJPT1NUX0ZXRF9SRUYoQTEpIGExLAotICAgICAgICAgICAgTkROQk9PU1RfRldEX1JFRihBMikgYTIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8uZW1wbGFjZSgKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmNyZWF0ZV9lbXBsYWNlX2FyZ3MoCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojpmb3J3YXJkPEEwPihhMCksCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojpmb3J3YXJkPEExPihhMSksCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojpmb3J3YXJkPEEyPihhMikpCi0gICAgICAgICAgICApOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEEwLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTI+Ci0gICAgICAgIGl0ZXJhdG9yIGVtcGxhY2VfaGludChjb25zdF9pdGVyYXRvciwKLSAgICAgICAgICAgIE5ETkJPT1NUX0ZXRF9SRUYoQTApIGEwLAotICAgICAgICAgICAgTkROQk9PU1RfRldEX1JFRihBMSkgYTEsCi0gICAgICAgICAgICBORE5CT09TVF9GV0RfUkVGKEEyKSBhMikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5lbXBsYWNlKAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Y3JlYXRlX2VtcGxhY2VfYXJncygKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmQ8QTA+KGEwKSwKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmQ8QTE+KGExKSwKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmQ8QTI+KGEyKSkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIH0KLQotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRSh6LCBuLCBfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHRlbXBsYXRlIDwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfWih6LCBuLCB0eXBlbmFtZSBBKSAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIGl0ZXJhdG9yIGVtcGxhY2UoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fIyN6KG4sIE5ETkJPT1NUX1VOT1JERVJFRF9GV0RfUEFSQU0sIGEpICAgICAgXAotICAgICAgICAgICAgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5lbXBsYWNlKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmNyZWF0ZV9lbXBsYWNlX2FyZ3MoICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fIyN6KG4sIE5ETkJPT1NUX1VOT1JERVJFRF9DQUxMX0ZPUldBUkQsICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgdGVtcGxhdGUgPCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNU19aKHosIG4sIHR5cGVuYW1lIEEpICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgaXRlcmF0b3IgZW1wbGFjZV9oaW50KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgY29uc3RfaXRlcmF0b3IsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fIyN6KG4sIE5ETkJPT1NUX1VOT1JERVJFRF9GV0RfUEFSQU0sIGEpICAgICAgXAotICAgICAgICAgICAgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5lbXBsYWNlKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmNyZWF0ZV9lbXBsYWNlX2FyZ3MoICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fIyN6KG4sIE5ETkJPT1NUX1VOT1JERVJFRF9DQUxMX0ZPUldBUkQsICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIH0KLQotICAgICAgICBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UTyg0LCBORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9MSU1JVCwKLSAgICAgICAgICAgIE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFLCBfKQotCi0jdW5kZWYgTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0UKLQotI2VuZGlmCi0KLSAgICAgICAgaXRlcmF0b3IgaW5zZXJ0KHZhbHVlX3R5cGUgY29uc3QmIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLT5lbXBsYWNlKHgpOwotICAgICAgICB9Ci0KLSAgICAgICAgaXRlcmF0b3IgaW5zZXJ0KE5ETkJPT1NUX1VOT1JERVJFRF9SVl9SRUYodmFsdWVfdHlwZSkgeCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMtPmVtcGxhY2UobmRuYm9vc3Q6Om1vdmUoeCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgaXRlcmF0b3IgaW5zZXJ0KGNvbnN0X2l0ZXJhdG9yIGhpbnQsIHZhbHVlX3R5cGUgY29uc3QmIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLT5lbXBsYWNlX2hpbnQoaGludCwgeCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpdGVyYXRvciBpbnNlcnQoY29uc3RfaXRlcmF0b3IgaGludCwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9VTk9SREVSRURfUlZfUkVGKHZhbHVlX3R5cGUpIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLT5lbXBsYWNlX2hpbnQoaGludCwgbmRuYm9vc3Q6Om1vdmUoeCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXQ+IHZvaWQgaW5zZXJ0KElucHV0SXQsIElucHV0SXQpOwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QpCi0gICAgICAgIHZvaWQgaW5zZXJ0KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDx2YWx1ZV90eXBlPik7Ci0jZW5kaWYKLQotICAgICAgICBpdGVyYXRvciBlcmFzZShjb25zdF9pdGVyYXRvcik7Ci0gICAgICAgIHNpemVfdHlwZSBlcmFzZShjb25zdCBrZXlfdHlwZSYpOwotICAgICAgICBpdGVyYXRvciBlcmFzZShjb25zdF9pdGVyYXRvciwgY29uc3RfaXRlcmF0b3IpOwotICAgICAgICB2b2lkIHF1aWNrX2VyYXNlKGNvbnN0X2l0ZXJhdG9yIGl0KSB7IGVyYXNlKGl0KTsgfQotICAgICAgICB2b2lkIGVyYXNlX3JldHVybl92b2lkKGNvbnN0X2l0ZXJhdG9yIGl0KSB7IGVyYXNlKGl0KTsgfQotCi0gICAgICAgIHZvaWQgY2xlYXIoKTsKLSAgICAgICAgdm9pZCBzd2FwKHVub3JkZXJlZF9tdWx0aXNldCYpOwotCi0gICAgICAgIC8vIG9ic2VydmVycwotCi0gICAgICAgIGhhc2hlciBoYXNoX2Z1bmN0aW9uKCkgY29uc3Q7Ci0gICAgICAgIGtleV9lcXVhbCBrZXlfZXEoKSBjb25zdDsKLQotICAgICAgICAvLyBsb29rdXAKLQotICAgICAgICBjb25zdF9pdGVyYXRvciBmaW5kKGNvbnN0IGtleV90eXBlJikgY29uc3Q7Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIENvbXBhdGlibGVLZXksIGNsYXNzIENvbXBhdGlibGVIYXNoLAotICAgICAgICAgICAgY2xhc3MgQ29tcGF0aWJsZVByZWRpY2F0ZT4KLSAgICAgICAgY29uc3RfaXRlcmF0b3IgZmluZCgKLSAgICAgICAgICAgICAgICBDb21wYXRpYmxlS2V5IGNvbnN0JiwKLSAgICAgICAgICAgICAgICBDb21wYXRpYmxlSGFzaCBjb25zdCYsCi0gICAgICAgICAgICAgICAgQ29tcGF0aWJsZVByZWRpY2F0ZSBjb25zdCYpIGNvbnN0OwotCi0gICAgICAgIHNpemVfdHlwZSBjb3VudChjb25zdCBrZXlfdHlwZSYpIGNvbnN0OwotCi0gICAgICAgIHN0ZDo6cGFpcjxjb25zdF9pdGVyYXRvciwgY29uc3RfaXRlcmF0b3I+Ci0gICAgICAgIGVxdWFsX3JhbmdlKGNvbnN0IGtleV90eXBlJikgY29uc3Q7Ci0KLSAgICAgICAgLy8gYnVja2V0IGludGVyZmFjZQotCi0gICAgICAgIHNpemVfdHlwZSBidWNrZXRfY291bnQoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLmJ1Y2tldF9jb3VudF87Ci0gICAgICAgIH0KLQotICAgICAgICBzaXplX3R5cGUgbWF4X2J1Y2tldF9jb3VudCgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8ubWF4X2J1Y2tldF9jb3VudCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgc2l6ZV90eXBlIGJ1Y2tldF9zaXplKHNpemVfdHlwZSkgY29uc3Q7Ci0KLSAgICAgICAgc2l6ZV90eXBlIGJ1Y2tldChjb25zdCBrZXlfdHlwZSYgaykgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5oYXNoX3RvX2J1Y2tldCh0YWJsZV8uaGFzaChrKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBsb2NhbF9pdGVyYXRvciBiZWdpbihzaXplX3R5cGUgbikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGxvY2FsX2l0ZXJhdG9yKAotICAgICAgICAgICAgICAgIHRhYmxlXy5iZWdpbihuKSwgbiwgdGFibGVfLmJ1Y2tldF9jb3VudF8pOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3RfbG9jYWxfaXRlcmF0b3IgYmVnaW4oc2l6ZV90eXBlIG4pIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBjb25zdF9sb2NhbF9pdGVyYXRvcigKLSAgICAgICAgICAgICAgICB0YWJsZV8uYmVnaW4obiksIG4sIHRhYmxlXy5idWNrZXRfY291bnRfKTsKLSAgICAgICAgfQotCi0gICAgICAgIGxvY2FsX2l0ZXJhdG9yIGVuZChzaXplX3R5cGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBsb2NhbF9pdGVyYXRvcigpOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3RfbG9jYWxfaXRlcmF0b3IgZW5kKHNpemVfdHlwZSkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGNvbnN0X2xvY2FsX2l0ZXJhdG9yKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdF9sb2NhbF9pdGVyYXRvciBjYmVnaW4oc2l6ZV90eXBlIG4pIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBjb25zdF9sb2NhbF9pdGVyYXRvcigKLSAgICAgICAgICAgICAgICB0YWJsZV8uYmVnaW4obiksIG4sIHRhYmxlXy5idWNrZXRfY291bnRfKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0X2xvY2FsX2l0ZXJhdG9yIGNlbmQoc2l6ZV90eXBlKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gY29uc3RfbG9jYWxfaXRlcmF0b3IoKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIGhhc2ggcG9saWN5Ci0KLSAgICAgICAgZmxvYXQgbWF4X2xvYWRfZmFjdG9yKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5tbGZfOwotICAgICAgICB9Ci0KLSAgICAgICAgZmxvYXQgbG9hZF9mYWN0b3IoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVDsKLSAgICAgICAgdm9pZCBtYXhfbG9hZF9mYWN0b3IoZmxvYXQpIE5ETkJPT1NUX05PRVhDRVBUOwotICAgICAgICB2b2lkIHJlaGFzaChzaXplX3R5cGUpOwotICAgICAgICB2b2lkIHJlc2VydmUoc2l6ZV90eXBlKTsKLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPCAweDA1ODIpCi0gICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT08VCxILFAsQT4oCi0gICAgICAgICAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0IGNvbnN0JiwgdW5vcmRlcmVkX211bHRpc2V0IGNvbnN0Jik7Ci0gICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT08VCxILFAsQT4oCi0gICAgICAgICAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0IGNvbnN0JiwgdW5vcmRlcmVkX211bHRpc2V0IGNvbnN0Jik7Ci0jZW5kaWYKLSAgICB9OyAvLyBjbGFzcyB0ZW1wbGF0ZSB1bm9yZGVyZWRfbXVsdGlzZXQKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OnVub3JkZXJlZF9zZXQoCi0gICAgICAgICAgICBzaXplX3R5cGUgbiwgY29uc3QgaGFzaGVyICZoZiwgY29uc3Qga2V5X2VxdWFsICZlcWwsCi0gICAgICAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSAmYSkKLSAgICAgIDogdGFibGVfKG4sIGhmLCBlcWwsIGEpCi0gICAgewotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OnVub3JkZXJlZF9zZXQoYWxsb2NhdG9yX3R5cGUgY29uc3QmIGEpCi0gICAgICA6IHRhYmxlXyhuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmRlZmF1bHRfYnVja2V0X2NvdW50LAotICAgICAgICAgICAgaGFzaGVyKCksIGtleV9lcXVhbCgpLCBhKQotICAgIHsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+Ojp1bm9yZGVyZWRfc2V0KAotICAgICAgICAgICAgdW5vcmRlcmVkX3NldCBjb25zdCYgb3RoZXIsIGFsbG9jYXRvcl90eXBlIGNvbnN0JiBhKQotICAgICAgOiB0YWJsZV8ob3RoZXIudGFibGVfLCBhKQotICAgIHsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdD4KLSAgICB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+Ojp1bm9yZGVyZWRfc2V0KElucHV0SXQgZiwgSW5wdXRJdCBsKQotICAgICAgOiB0YWJsZV8obmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjppbml0aWFsX3NpemUoZiwgbCksCi0gICAgICAgIGhhc2hlcigpLCBrZXlfZXF1YWwoKSwgYWxsb2NhdG9yX3R5cGUoKSkKLSAgICB7Ci0gICAgICAgIHRhYmxlXy5pbnNlcnRfcmFuZ2UoZiwgbCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXQ+Ci0gICAgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6dW5vcmRlcmVkX3NldCgKLSAgICAgICAgICAgIElucHV0SXQgZiwgSW5wdXRJdCBsLAotICAgICAgICAgICAgc2l6ZV90eXBlIG4sCi0gICAgICAgICAgICBjb25zdCBoYXNoZXIgJmhmLAotICAgICAgICAgICAgY29uc3Qga2V5X2VxdWFsICZlcWwpCi0gICAgICA6IHRhYmxlXyhuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmluaXRpYWxfc2l6ZShmLCBsLCBuKSwKLSAgICAgICAgICAgIGhmLCBlcWwsIGFsbG9jYXRvcl90eXBlKCkpCi0gICAgewotICAgICAgICB0YWJsZV8uaW5zZXJ0X3JhbmdlKGYsIGwpOwotICAgIH0KLSAgICAKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdD4KLSAgICB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+Ojp1bm9yZGVyZWRfc2V0KAotICAgICAgICAgICAgSW5wdXRJdCBmLCBJbnB1dEl0IGwsCi0gICAgICAgICAgICBzaXplX3R5cGUgbiwKLSAgICAgICAgICAgIGNvbnN0IGhhc2hlciAmaGYsCi0gICAgICAgICAgICBjb25zdCBrZXlfZXF1YWwgJmVxbCwKLSAgICAgICAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlICZhKQotICAgICAgOiB0YWJsZV8obmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjppbml0aWFsX3NpemUoZiwgbCwgbiksIGhmLCBlcWwsIGEpCi0gICAgewotICAgICAgICB0YWJsZV8uaW5zZXJ0X3JhbmdlKGYsIGwpOwotICAgIH0KLSAgICAKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+Ojp+dW5vcmRlcmVkX3NldCgpIHt9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+Ojp1bm9yZGVyZWRfc2V0KAotICAgICAgICAgICAgdW5vcmRlcmVkX3NldCBjb25zdCYgb3RoZXIpCi0gICAgICA6IHRhYmxlXyhvdGhlci50YWJsZV8pCi0gICAgewotICAgIH0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTKQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6dW5vcmRlcmVkX3NldCgKLSAgICAgICAgICAgIHVub3JkZXJlZF9zZXQmJiBvdGhlciwgYWxsb2NhdG9yX3R5cGUgY29uc3QmIGEpCi0gICAgICA6IHRhYmxlXyhvdGhlci50YWJsZV8sIGEsIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6bW92ZV90YWcoKSkKLSAgICB7Ci0gICAgfQotCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9JTklUSUFMSVpFUl9MSVNUKQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6dW5vcmRlcmVkX3NldCgKLSAgICAgICAgICAgIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDx2YWx1ZV90eXBlPiBsaXN0LCBzaXplX3R5cGUgbiwKLSAgICAgICAgICAgIGNvbnN0IGhhc2hlciAmaGYsIGNvbnN0IGtleV9lcXVhbCAmZXFsLCBjb25zdCBhbGxvY2F0b3JfdHlwZSAmYSkKLSAgICAgIDogdGFibGVfKAotICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjppbml0aWFsX3NpemUoCi0gICAgICAgICAgICAgICAgbGlzdC5iZWdpbigpLCBsaXN0LmVuZCgpLCBuKSwKLSAgICAgICAgICAgIGhmLCBlcWwsIGEpCi0gICAgewotICAgICAgICB0YWJsZV8uaW5zZXJ0X3JhbmdlKGxpc3QuYmVnaW4oKSwgbGlzdC5lbmQoKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdW5vcmRlcmVkX3NldDxULEgsUCxBPiYgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6b3BlcmF0b3I9KAotICAgICAgICAgICAgc3RkOjppbml0aWFsaXplcl9saXN0PHZhbHVlX3R5cGU+IGxpc3QpCi0gICAgewotICAgICAgICB0YWJsZV8uY2xlYXIoKTsKLSAgICAgICAgdGFibGVfLmluc2VydF9yYW5nZShsaXN0LmJlZ2luKCksIGxpc3QuZW5kKCkpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIC8vIHNpemUgYW5kIGNhcGFjaXR5Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICBzdGQ6OnNpemVfdCB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+OjptYXhfc2l6ZSgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICByZXR1cm4gdGFibGVfLm1heF9zaXplKCk7Ci0gICAgfQotCi0gICAgLy8gbW9kaWZpZXJzCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdD4KLSAgICB2b2lkIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46Omluc2VydChJbnB1dEl0IGZpcnN0LCBJbnB1dEl0IGxhc3QpCi0gICAgewotICAgICAgICB0YWJsZV8uaW5zZXJ0X3JhbmdlKGZpcnN0LCBsYXN0KTsKLSAgICB9Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVCkKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB2b2lkIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46Omluc2VydCgKLSAgICAgICAgICAgIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDx2YWx1ZV90eXBlPiBsaXN0KQotICAgIHsKLSAgICAgICAgdGFibGVfLmluc2VydF9yYW5nZShsaXN0LmJlZ2luKCksIGxpc3QuZW5kKCkpOwotICAgIH0KLSNlbmRpZgotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdHlwZW5hbWUgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6aXRlcmF0b3IKLSAgICAgICAgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6ZXJhc2UoY29uc3RfaXRlcmF0b3IgcG9zaXRpb24pCi0gICAgewotICAgICAgICByZXR1cm4gdGFibGVfLmVyYXNlKHBvc2l0aW9uKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB0eXBlbmFtZSB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+OjpzaXplX3R5cGUKLSAgICAgICAgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6ZXJhc2UoY29uc3Qga2V5X3R5cGUmIGspCi0gICAgewotICAgICAgICByZXR1cm4gdGFibGVfLmVyYXNlX2tleShrKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB0eXBlbmFtZSB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+OjppdGVyYXRvcgotICAgICAgICB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+OjplcmFzZSgKLSAgICAgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGZpcnN0LCBjb25zdF9pdGVyYXRvciBsYXN0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRhYmxlXy5lcmFzZV9yYW5nZShmaXJzdCwgbGFzdCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdm9pZCB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+OjpjbGVhcigpCi0gICAgewotICAgICAgICB0YWJsZV8uY2xlYXIoKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB2b2lkIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OnN3YXAodW5vcmRlcmVkX3NldCYgb3RoZXIpCi0gICAgewotICAgICAgICB0YWJsZV8uc3dhcChvdGhlci50YWJsZV8pOwotICAgIH0KLQotICAgIC8vIG9ic2VydmVycwotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdHlwZW5hbWUgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6aGFzaGVyCi0gICAgICAgIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46Omhhc2hfZnVuY3Rpb24oKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHRhYmxlXy5oYXNoX2Z1bmN0aW9uKCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdHlwZW5hbWUgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6a2V5X2VxdWFsCi0gICAgICAgIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OmtleV9lcSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdGFibGVfLmtleV9lcSgpOwotICAgIH0KLQotICAgIC8vIGxvb2t1cAotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdHlwZW5hbWUgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6Y29uc3RfaXRlcmF0b3IKLSAgICAgICAgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6ZmluZChjb25zdCBrZXlfdHlwZSYgaykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB0YWJsZV8uZmluZF9ub2RlKGspOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHRlbXBsYXRlIDxjbGFzcyBDb21wYXRpYmxlS2V5LCBjbGFzcyBDb21wYXRpYmxlSGFzaCwKLSAgICAgICAgY2xhc3MgQ29tcGF0aWJsZVByZWRpY2F0ZT4KLSAgICB0eXBlbmFtZSB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+Ojpjb25zdF9pdGVyYXRvcgotICAgICAgICB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+OjpmaW5kKAotICAgICAgICAgICAgQ29tcGF0aWJsZUtleSBjb25zdCYgaywKLSAgICAgICAgICAgIENvbXBhdGlibGVIYXNoIGNvbnN0JiBoYXNoLAotICAgICAgICAgICAgQ29tcGF0aWJsZVByZWRpY2F0ZSBjb25zdCYgZXEpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdGFibGVfLmdlbmVyaWNfZmluZF9ub2RlKGssIGhhc2gsIGVxKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB0eXBlbmFtZSB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+OjpzaXplX3R5cGUKLSAgICAgICAgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6Y291bnQoY29uc3Qga2V5X3R5cGUmIGspIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdGFibGVfLmNvdW50KGspOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHN0ZDo6cGFpcjwKLSAgICAgICAgICAgIHR5cGVuYW1lIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OmNvbnN0X2l0ZXJhdG9yLAotICAgICAgICAgICAgdHlwZW5hbWUgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6Y29uc3RfaXRlcmF0b3I+Ci0gICAgICAgIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OmVxdWFsX3JhbmdlKGNvbnN0IGtleV90eXBlJiBrKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHRhYmxlXy5lcXVhbF9yYW5nZShrKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB0eXBlbmFtZSB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+OjpzaXplX3R5cGUKLSAgICAgICAgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6YnVja2V0X3NpemUoc2l6ZV90eXBlIG4pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdGFibGVfLmJ1Y2tldF9zaXplKG4pOwotICAgIH0KLQotICAgIC8vIGhhc2ggcG9saWN5Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICBmbG9hdCB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+Ojpsb2FkX2ZhY3RvcigpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICByZXR1cm4gdGFibGVfLmxvYWRfZmFjdG9yKCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdm9pZCB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+OjptYXhfbG9hZF9mYWN0b3IoZmxvYXQgbSkgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHRhYmxlXy5tYXhfbG9hZF9mYWN0b3IobSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdm9pZCB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+OjpyZWhhc2goc2l6ZV90eXBlIG4pCi0gICAgewotICAgICAgICB0YWJsZV8ucmVoYXNoKG4pOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHZvaWQgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6cmVzZXJ2ZShzaXplX3R5cGUgbikKLSAgICB7Ci0gICAgICAgIHRhYmxlXy5yZXNlcnZlKG4pOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIGlubGluZSBib29sIG9wZXJhdG9yPT0oCi0gICAgICAgICAgICB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+IGNvbnN0JiBtMSwKLSAgICAgICAgICAgIHVub3JkZXJlZF9zZXQ8VCxILFAsQT4gY29uc3QmIG0yKQotICAgIHsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQ09ERUdFQVJDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDA2MTMpKQotICAgICAgICBzdHJ1Y3QgZHVtbXkgeyB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+IHg7IH07Ci0jZW5kaWYKLSAgICAgICAgcmV0dXJuIG0xLnRhYmxlXy5lcXVhbHMobTIudGFibGVfKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KAotICAgICAgICAgICAgdW5vcmRlcmVkX3NldDxULEgsUCxBPiBjb25zdCYgbTEsCi0gICAgICAgICAgICB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+IGNvbnN0JiBtMikKLSAgICB7Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0NPREVHRUFSQ19fLCBORE5CT09TVF9URVNURURfQVQoMHgwNjEzKSkKLSAgICAgICAgc3RydWN0IGR1bW15IHsgdW5vcmRlcmVkX3NldDxULEgsUCxBPiB4OyB9OwotI2VuZGlmCi0gICAgICAgIHJldHVybiAhbTEudGFibGVfLmVxdWFscyhtMi50YWJsZV8pOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIGlubGluZSB2b2lkIHN3YXAoCi0gICAgICAgICAgICB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+ICZtMSwKLSAgICAgICAgICAgIHVub3JkZXJlZF9zZXQ8VCxILFAsQT4gJm0yKQotICAgIHsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQ09ERUdFQVJDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDA2MTMpKQotICAgICAgICBzdHJ1Y3QgZHVtbXkgeyB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+IHg7IH07Ci0jZW5kaWYKLSAgICAgICAgbTEuc3dhcChtMik7Ci0gICAgfQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+Ojp1bm9yZGVyZWRfbXVsdGlzZXQoCi0gICAgICAgICAgICBzaXplX3R5cGUgbiwgY29uc3QgaGFzaGVyICZoZiwgY29uc3Qga2V5X2VxdWFsICZlcWwsCi0gICAgICAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSAmYSkKLSAgICAgIDogdGFibGVfKG4sIGhmLCBlcWwsIGEpCi0gICAgewotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6dW5vcmRlcmVkX211bHRpc2V0KGFsbG9jYXRvcl90eXBlIGNvbnN0JiBhKQotICAgICAgOiB0YWJsZV8obmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpkZWZhdWx0X2J1Y2tldF9jb3VudCwKLSAgICAgICAgICAgIGhhc2hlcigpLCBrZXlfZXF1YWwoKSwgYSkKLSAgICB7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+Ojp1bm9yZGVyZWRfbXVsdGlzZXQoCi0gICAgICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQgY29uc3QmIG90aGVyLCBhbGxvY2F0b3JfdHlwZSBjb25zdCYgYSkKLSAgICAgIDogdGFibGVfKG90aGVyLnRhYmxlXywgYSkKLSAgICB7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXQ+Ci0gICAgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+Ojp1bm9yZGVyZWRfbXVsdGlzZXQoSW5wdXRJdCBmLCBJbnB1dEl0IGwpCi0gICAgICA6IHRhYmxlXyhuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmluaXRpYWxfc2l6ZShmLCBsKSwKLSAgICAgICAgaGFzaGVyKCksIGtleV9lcXVhbCgpLCBhbGxvY2F0b3JfdHlwZSgpKQotICAgIHsKLSAgICAgICAgdGFibGVfLmluc2VydF9yYW5nZShmLCBsKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdD4KLSAgICB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46OnVub3JkZXJlZF9tdWx0aXNldCgKLSAgICAgICAgICAgIElucHV0SXQgZiwgSW5wdXRJdCBsLAotICAgICAgICAgICAgc2l6ZV90eXBlIG4sCi0gICAgICAgICAgICBjb25zdCBoYXNoZXIgJmhmLAotICAgICAgICAgICAgY29uc3Qga2V5X2VxdWFsICZlcWwpCi0gICAgICA6IHRhYmxlXyhuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmluaXRpYWxfc2l6ZShmLCBsLCBuKSwKLSAgICAgICAgICAgIGhmLCBlcWwsIGFsbG9jYXRvcl90eXBlKCkpCi0gICAgewotICAgICAgICB0YWJsZV8uaW5zZXJ0X3JhbmdlKGYsIGwpOwotICAgIH0KLSAgICAKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdD4KLSAgICB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46OnVub3JkZXJlZF9tdWx0aXNldCgKLSAgICAgICAgICAgIElucHV0SXQgZiwgSW5wdXRJdCBsLAotICAgICAgICAgICAgc2l6ZV90eXBlIG4sCi0gICAgICAgICAgICBjb25zdCBoYXNoZXIgJmhmLAotICAgICAgICAgICAgY29uc3Qga2V5X2VxdWFsICZlcWwsCi0gICAgICAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSAmYSkKLSAgICAgIDogdGFibGVfKG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aW5pdGlhbF9zaXplKGYsIGwsIG4pLCBoZiwgZXFsLCBhKQotICAgIHsKLSAgICAgICAgdGFibGVfLmluc2VydF9yYW5nZShmLCBsKTsKLSAgICB9Ci0gICAgCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+Ojp+dW5vcmRlcmVkX211bHRpc2V0KCkge30KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6dW5vcmRlcmVkX211bHRpc2V0KAotICAgICAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0IGNvbnN0JiBvdGhlcikKLSAgICAgIDogdGFibGVfKG90aGVyLnRhYmxlXykKLSAgICB7Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMpCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46OnVub3JkZXJlZF9tdWx0aXNldCgKLSAgICAgICAgICAgIHVub3JkZXJlZF9tdWx0aXNldCYmIG90aGVyLCBhbGxvY2F0b3JfdHlwZSBjb25zdCYgYSkKLSAgICAgIDogdGFibGVfKG90aGVyLnRhYmxlXywgYSwgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjptb3ZlX3RhZygpKQotICAgIHsKLSAgICB9Ci0KLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QpCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46OnVub3JkZXJlZF9tdWx0aXNldCgKLSAgICAgICAgICAgIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDx2YWx1ZV90eXBlPiBsaXN0LCBzaXplX3R5cGUgbiwKLSAgICAgICAgICAgIGNvbnN0IGhhc2hlciAmaGYsIGNvbnN0IGtleV9lcXVhbCAmZXFsLCBjb25zdCBhbGxvY2F0b3JfdHlwZSAmYSkKLSAgICAgIDogdGFibGVfKAotICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjppbml0aWFsX3NpemUoCi0gICAgICAgICAgICAgICAgbGlzdC5iZWdpbigpLCBsaXN0LmVuZCgpLCBuKSwKLSAgICAgICAgICAgIGhmLCBlcWwsIGEpCi0gICAgewotICAgICAgICB0YWJsZV8uaW5zZXJ0X3JhbmdlKGxpc3QuYmVnaW4oKSwgbGlzdC5lbmQoKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+JiB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46Om9wZXJhdG9yPSgKLSAgICAgICAgICAgIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDx2YWx1ZV90eXBlPiBsaXN0KQotICAgIHsKLSAgICAgICAgdGFibGVfLmNsZWFyKCk7Ci0gICAgICAgIHRhYmxlXy5pbnNlcnRfcmFuZ2UobGlzdC5iZWdpbigpLCBsaXN0LmVuZCgpKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotI2VuZGlmCi0KLSAgICAvLyBzaXplIGFuZCBjYXBhY2l0eQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgc3RkOjpzaXplX3QgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+OjptYXhfc2l6ZSgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICByZXR1cm4gdGFibGVfLm1heF9zaXplKCk7Ci0gICAgfQotCi0gICAgLy8gbW9kaWZpZXJzCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdD4KLSAgICB2b2lkIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6aW5zZXJ0KElucHV0SXQgZmlyc3QsIElucHV0SXQgbGFzdCkKLSAgICB7Ci0gICAgICAgIHRhYmxlXy5pbnNlcnRfcmFuZ2UoZmlyc3QsIGxhc3QpOwotICAgIH0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9JTklUSUFMSVpFUl9MSVNUKQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHZvaWQgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+OjppbnNlcnQoCi0gICAgICAgICAgICBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8dmFsdWVfdHlwZT4gbGlzdCkKLSAgICB7Ci0gICAgICAgIHRhYmxlXy5pbnNlcnRfcmFuZ2UobGlzdC5iZWdpbigpLCBsaXN0LmVuZCgpKTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHR5cGVuYW1lIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6aXRlcmF0b3IKLSAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+OjplcmFzZShjb25zdF9pdGVyYXRvciBwb3NpdGlvbikKLSAgICB7Ci0gICAgICAgIHJldHVybiB0YWJsZV8uZXJhc2UocG9zaXRpb24pOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHR5cGVuYW1lIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6c2l6ZV90eXBlCi0gICAgICAgIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6ZXJhc2UoY29uc3Qga2V5X3R5cGUmIGspCi0gICAgewotICAgICAgICByZXR1cm4gdGFibGVfLmVyYXNlX2tleShrKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB0eXBlbmFtZSB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46Oml0ZXJhdG9yCi0gICAgICAgIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6ZXJhc2UoCi0gICAgICAgICAgICAgICAgY29uc3RfaXRlcmF0b3IgZmlyc3QsIGNvbnN0X2l0ZXJhdG9yIGxhc3QpCi0gICAgewotICAgICAgICByZXR1cm4gdGFibGVfLmVyYXNlX3JhbmdlKGZpcnN0LCBsYXN0KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB2b2lkIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6Y2xlYXIoKQotICAgIHsKLSAgICAgICAgdGFibGVfLmNsZWFyKCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdm9pZCB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46OnN3YXAodW5vcmRlcmVkX211bHRpc2V0JiBvdGhlcikKLSAgICB7Ci0gICAgICAgIHRhYmxlXy5zd2FwKG90aGVyLnRhYmxlXyk7Ci0gICAgfQotCi0gICAgLy8gb2JzZXJ2ZXJzCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB0eXBlbmFtZSB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46Omhhc2hlcgotICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46Omhhc2hfZnVuY3Rpb24oKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHRhYmxlXy5oYXNoX2Z1bmN0aW9uKCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdHlwZW5hbWUgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+OjprZXlfZXF1YWwKLSAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+OjprZXlfZXEoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHRhYmxlXy5rZXlfZXEoKTsKLSAgICB9Ci0KLSAgICAvLyBsb29rdXAKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHR5cGVuYW1lIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6Y29uc3RfaXRlcmF0b3IKLSAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+OjpmaW5kKGNvbnN0IGtleV90eXBlJiBrKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHRhYmxlXy5maW5kX25vZGUoayk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdGVtcGxhdGUgPGNsYXNzIENvbXBhdGlibGVLZXksIGNsYXNzIENvbXBhdGlibGVIYXNoLAotICAgICAgICBjbGFzcyBDb21wYXRpYmxlUHJlZGljYXRlPgotICAgIHR5cGVuYW1lIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6Y29uc3RfaXRlcmF0b3IKLSAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+OjpmaW5kKAotICAgICAgICAgICAgQ29tcGF0aWJsZUtleSBjb25zdCYgaywKLSAgICAgICAgICAgIENvbXBhdGlibGVIYXNoIGNvbnN0JiBoYXNoLAotICAgICAgICAgICAgQ29tcGF0aWJsZVByZWRpY2F0ZSBjb25zdCYgZXEpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdGFibGVfLmdlbmVyaWNfZmluZF9ub2RlKGssIGhhc2gsIGVxKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB0eXBlbmFtZSB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46OnNpemVfdHlwZQotICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46OmNvdW50KGNvbnN0IGtleV90eXBlJiBrKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHRhYmxlXy5jb3VudChrKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICBzdGQ6OnBhaXI8Ci0gICAgICAgICAgICB0eXBlbmFtZSB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46OmNvbnN0X2l0ZXJhdG9yLAotICAgICAgICAgICAgdHlwZW5hbWUgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+Ojpjb25zdF9pdGVyYXRvcj4KLSAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+OjplcXVhbF9yYW5nZShjb25zdCBrZXlfdHlwZSYgaykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB0YWJsZV8uZXF1YWxfcmFuZ2Uoayk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdHlwZW5hbWUgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+OjpzaXplX3R5cGUKLSAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+OjpidWNrZXRfc2l6ZShzaXplX3R5cGUgbikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB0YWJsZV8uYnVja2V0X3NpemUobik7Ci0gICAgfQotCi0gICAgLy8gaGFzaCBwb2xpY3kKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIGZsb2F0IHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6bG9hZF9mYWN0b3IoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIHRhYmxlXy5sb2FkX2ZhY3RvcigpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHZvaWQgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+OjptYXhfbG9hZF9mYWN0b3IoZmxvYXQgbSkgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHRhYmxlXy5tYXhfbG9hZF9mYWN0b3IobSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdm9pZCB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46OnJlaGFzaChzaXplX3R5cGUgbikKLSAgICB7Ci0gICAgICAgIHRhYmxlXy5yZWhhc2gobik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdm9pZCB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46OnJlc2VydmUoc2l6ZV90eXBlIG4pCi0gICAgewotICAgICAgICB0YWJsZV8ucmVzZXJ2ZShuKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KAotICAgICAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+IGNvbnN0JiBtMSwKLSAgICAgICAgICAgIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPiBjb25zdCYgbTIpCi0gICAgewotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19DT0RFR0VBUkNfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4MDYxMykpCi0gICAgICAgIHN0cnVjdCBkdW1teSB7IHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPiB4OyB9OwotI2VuZGlmCi0gICAgICAgIHJldHVybiBtMS50YWJsZV8uZXF1YWxzKG0yLnRhYmxlXyk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPSgKLSAgICAgICAgICAgIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPiBjb25zdCYgbTEsCi0gICAgICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT4gY29uc3QmIG0yKQotICAgIHsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQ09ERUdFQVJDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDA2MTMpKQotICAgICAgICBzdHJ1Y3QgZHVtbXkgeyB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT4geDsgfTsKLSNlbmRpZgotICAgICAgICByZXR1cm4gIW0xLnRhYmxlXy5lcXVhbHMobTIudGFibGVfKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICBpbmxpbmUgdm9pZCBzd2FwKAotICAgICAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+ICZtMSwKLSAgICAgICAgICAgIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPiAmbTIpCi0gICAgewotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19DT0RFR0VBUkNfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4MDYxMykpCi0gICAgICAgIHN0cnVjdCBkdW1teSB7IHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPiB4OyB9OwotI2VuZGlmCi0gICAgICAgIG0xLnN3YXAobTIpOwotICAgIH0KLX0gLy8gbmFtZXNwYWNlIHVub3JkZXJlZAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1VOT1JERVJFRF9VTk9SREVSRURfU0VUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWQvdW5vcmRlcmVkX3NldF9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWQvdW5vcmRlcmVkX3NldF9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZTFhNjUzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdW5vcmRlcmVkL3Vub3JkZXJlZF9zZXRfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgRGFuaWVsIEphbWVzLgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVU5PUkRFUkVEX1NFVF9GV0RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9TRVRfRldEX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25hbC9oYXNoX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC9md2QuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICBuYW1lc3BhY2UgdW5vcmRlcmVkCi0gICAgewotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwKLSAgICAgICAgICAgIGNsYXNzIEggPSBuZG5ib29zdDo6aGFzaDxUPiwKLSAgICAgICAgICAgIGNsYXNzIFAgPSBzdGQ6OmVxdWFsX3RvPFQ+LAotICAgICAgICAgICAgY2xhc3MgQSA9IHN0ZDo6YWxsb2NhdG9yPFQ+ID4KLSAgICAgICAgY2xhc3MgdW5vcmRlcmVkX3NldDsKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PSh1bm9yZGVyZWRfc2V0PFQsIEgsIFAsIEE+IGNvbnN0JiwKLSAgICAgICAgICAgIHVub3JkZXJlZF9zZXQ8VCwgSCwgUCwgQT4gY29uc3QmKTsKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0odW5vcmRlcmVkX3NldDxULCBILCBQLCBBPiBjb25zdCYsCi0gICAgICAgICAgICB1bm9yZGVyZWRfc2V0PFQsIEgsIFAsIEE+IGNvbnN0Jik7Ci0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgICAgICBpbmxpbmUgdm9pZCBzd2FwKHVub3JkZXJlZF9zZXQ8VCwgSCwgUCwgQT4gJm0xLAotICAgICAgICAgICAgICAgIHVub3JkZXJlZF9zZXQ8VCwgSCwgUCwgQT4gJm0yKTsKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwKLSAgICAgICAgICAgIGNsYXNzIEggPSBuZG5ib29zdDo6aGFzaDxUPiwKLSAgICAgICAgICAgIGNsYXNzIFAgPSBzdGQ6OmVxdWFsX3RvPFQ+LAotICAgICAgICAgICAgY2xhc3MgQSA9IHN0ZDo6YWxsb2NhdG9yPFQ+ID4KLSAgICAgICAgY2xhc3MgdW5vcmRlcmVkX211bHRpc2V0OwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KHVub3JkZXJlZF9tdWx0aXNldDxULCBILCBQLCBBPiBjb25zdCYsCi0gICAgICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQ8VCwgSCwgUCwgQT4gY29uc3QmKTsKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0odW5vcmRlcmVkX211bHRpc2V0PFQsIEgsIFAsIEE+IGNvbnN0JiwKLSAgICAgICAgICAgIHVub3JkZXJlZF9tdWx0aXNldDxULCBILCBQLCBBPiBjb25zdCYpOwotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICAgICAgaW5saW5lIHZvaWQgc3dhcCh1bm9yZGVyZWRfbXVsdGlzZXQ8VCwgSCwgUCwgQT4gJm0xLAotICAgICAgICAgICAgICAgIHVub3JkZXJlZF9tdWx0aXNldDxULCBILCBQLCBBPiAmbTIpOwotICAgIH0KLQotICAgIHVzaW5nIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OnVub3JkZXJlZF9zZXQ7Ci0gICAgdXNpbmcgbmRuYm9vc3Q6OnVub3JkZXJlZDo6dW5vcmRlcmVkX211bHRpc2V0OwotICAgIHVzaW5nIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OnN3YXA7Ci0gICAgdXNpbmcgbmRuYm9vc3Q6OnVub3JkZXJlZDo6b3BlcmF0b3I9PTsKLSAgICB1c2luZyBuZG5ib29zdDo6dW5vcmRlcmVkOjpvcGVyYXRvciE9OwotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdW5vcmRlcmVkX3NldC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZF9zZXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzY2U4NWVlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdW5vcmRlcmVkX3NldC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0KLS8vIENvcHlyaWdodCAoQykgMjAwMy0yMDA0IEplcmVteSBCLiBNYWl0aW4tU2hlcGFyZC4KLS8vIENvcHlyaWdodCAoQykgMjAwNS0yMDA4IERhbmllbCBKYW1lcy4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdW5vcmRlcmVkIGZvciBkb2N1bWVudGF0aW9uCi0KLSNpZm5kZWYgTkROQk9PU1RfVU5PUkRFUkVEX1NFVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX1NFVF9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC91bm9yZGVyZWQvdW5vcmRlcmVkX3NldC5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9VTk9SREVSRURfU0VUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4M2YwZWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLS8vICBCb29zdCB1dGlsaXR5LmhwcCBoZWFkZXIgZmlsZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBDb3B5cmlnaHQgMTk5OS0yMDAzIEFsZWtzZXkgR3VydG92b3kuICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBhcmUKLS8vICBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgYSBjb3B5IGF0IDxodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQ+LikKLQotLy8gIFNlZSA8aHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy91dGlsaXR5Lz4gZm9yIHRoZSBsaWJyYXJ5J3MgaG9tZSBwYWdlLgotCi0jaWZuZGVmIE5ETkJPT1NUX1VUSUxJVFlfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1VUSUxJVFlfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2FkZHJlc3NvZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9iYXNlX2Zyb21fbWVtYmVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2JpbmFyeS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9lbmFibGVfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvaWRlbnRpdHlfdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY2hlY2tlZF9kZWxldGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L25leHRfcHJpb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L25vbmNvcHlhYmxlLmhwcD4KLQotI2VuZGlmICAvLyBORE5CT09TVF9VVElMSVRZX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2FkZHJlc3NvZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvYWRkcmVzc29mLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjk2ZmJhZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvYWRkcmVzc29mLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDIgQnJhZCBLaW5nIChicmFkLmtpbmdAa2l0d2FyZS5jb20pCi0vLyAgICAgICAgICAgICAgICAgICAgRG91Z2xhcyBHcmVnb3IgKGdyZWdvZEBjcy5ycGkuZWR1KQotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwMiwgMjAwOCBQZXRlciBEaW1vdgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZwotCi0jaWZuZGVmIE5ETkJPT1NUX1VUSUxJVFlfQUREUkVTU09GX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfVVRJTElUWV9BRERSRVNTT0ZfSFBQCi0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi10ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3QgYWRkcl9pbXBsX3JlZgotewotICAgIFQgJiB2XzsKLQotICAgIGlubGluZSBhZGRyX2ltcGxfcmVmKCBUICYgdiApOiB2XyggdiApIHt9Ci0gICAgaW5saW5lIG9wZXJhdG9yIFQmICgpIGNvbnN0IHsgcmV0dXJuIHZfOyB9Ci0KLXByaXZhdGU6Ci0gICAgYWRkcl9pbXBsX3JlZiAmIG9wZXJhdG9yPShjb25zdCBhZGRyX2ltcGxfcmVmICYpOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IGFkZHJlc3NvZl9pbXBsCi17Ci0gICAgc3RhdGljIGlubGluZSBUICogZiggVCAmIHYsIGxvbmcgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KAotICAgICAgICAgICAgJmNvbnN0X2Nhc3Q8Y2hhciY+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9sYXRpbGUgY2hhciAmPih2KSkpOwotICAgIH0KLQotICAgIHN0YXRpYyBpbmxpbmUgVCAqIGYoIFQgKiB2LCBpbnQgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHY7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IFQgKiBhZGRyZXNzb2YoIFQgJiB2ICkKLXsKLSNpZiAoZGVmaW5lZCggX19CT1JMQU5EQ19fICkgJiYgTkROQk9PU1RfV09SS0FST1VORCggX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoIDB4NjEwICkgKSApIHx8IGRlZmluZWQoIF9fU1VOUFJPX0NDICkKLQotICAgIHJldHVybiBuZG5ib29zdDo6ZGV0YWlsOjphZGRyZXNzb2ZfaW1wbDxUPjo6ZiggdiwgMCApOwotCi0jZWxzZQotCi0gICAgcmV0dXJuIG5kbmJvb3N0OjpkZXRhaWw6OmFkZHJlc3NvZl9pbXBsPFQ+OjpmKCBuZG5ib29zdDo6ZGV0YWlsOjphZGRyX2ltcGxfcmVmPFQ+KCB2ICksIDAgKTsKLQotI2VuZGlmCi19Ci0KLSNpZiBkZWZpbmVkKCBfX1NVTlBST19DQyApICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoIF9fU1VOUFJPX0NDLCBORE5CT09TVF9URVNURURfQVQoIDB4NTkwICkgKQotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBhZGRyZXNzb2ZfYWRkcAotewotICAgIHR5cGVkZWYgVCAqIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotdGVtcGxhdGU8IGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4gPgotdHlwZW5hbWUgZGV0YWlsOjphZGRyZXNzb2ZfYWRkcDwgVFtOXSA+Ojp0eXBlIGFkZHJlc3NvZiggVCAoJnQpW05dICkKLXsKLSAgICByZXR1cm4gJnQ7Ci19Ci0KLSNlbmRpZgotCi0vLyBCb3JsYW5kIGRvZXNuJ3QgbGlrZSBjYXN0aW5nIGFuIGFycmF5IHJlZmVyZW5jZSB0byBhIGNoYXIgcmVmZXJlbmNlCi0vLyBidXQgdGhlc2Ugb3ZlcmxvYWRzIHdvcmsgYXJvdW5kIHRoZSBwcm9ibGVtLgotI2lmIGRlZmluZWQoIF9fQk9STEFORENfXyApICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NjQpKQotdGVtcGxhdGU8dHlwZW5hbWUgVCxzdGQ6OnNpemVfdCBOPgotVCAoKmFkZHJlc3NvZihUICgmdClbTl0pKVtOXQotewotICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VCgqKVtOXT4oJnQpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULHN0ZDo6c2l6ZV90IE4+Ci1jb25zdCBUICgqYWRkcmVzc29mKGNvbnN0IFQgKCZ0KVtOXSkpW05dCi17Ci0gICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKCopW05dPigmdCk7Ci19Ci0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1VUSUxJVFlfQUREUkVTU09GX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2Jhc2VfZnJvbV9tZW1iZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2Jhc2VfZnJvbV9tZW1iZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OTliZDM3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9iYXNlX2Zyb21fbWVtYmVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLS8vICBib29zdCB1dGlsaXR5L2Jhc2VfZnJvbV9tZW1iZXIuaHBwIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBDb3B5cmlnaHQgMjAwMSwgMjAwMywgMjAwNCBEYXJ5bGUgV2Fsa2VyLiAgVXNlLCBtb2RpZmljYXRpb24sIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuICAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGEgY29weSBhdAotLy8gIDxodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQ+LikKLQotLy8gIFNlZSA8aHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy91dGlsaXR5Lz4gZm9yIHRoZSBsaWJyYXJ5J3MgaG9tZSBwYWdlLgotCi0jaWZuZGVmIE5ETkJPT1NUX1VUSUxJVFlfQkFTRV9GUk9NX01FTUJFUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfVVRJTElUWV9CQVNFX0ZST01fTUVNQkVSX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvaW5jLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX2JpbmFyeV9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9yZXBlYXRfZnJvbV90by5ocHA+Ci0KLQotLy8gIEJhc2UtZnJvbS1tZW1iZXIgYXJpdHkgY29uZmlndXJhdGlvbiBtYWNybyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gVGhlIGZvbGxvd2luZyBtYWNybyBkZXRlcm1pbmVzIGhvdyBtYW55IGFyZ3VtZW50cyB3aWxsIGJlIGluIHRoZSBsYXJnZXN0Ci0vLyBjb25zdHJ1Y3RvciB0ZW1wbGF0ZSBvZiBiYXNlX2Zyb21fbWVtYmVyLiAgQ29uc3RydWN0b3IgdGVtcGxhdGVzIHdpbGwgYmUKLS8vIGdlbmVyYXRlZCBmcm9tIG9uZSBhcmd1bWVudCB0byB0aGlzIG1heGltdW0uICBDb2RlIGZyb20gb3RoZXIgZmlsZXMgY2FuIHJlYWQKLS8vIHRoaXMgbnVtYmVyIGlmIHRoZXkgbmVlZCB0byBhbHdheXMgbWF0Y2ggdGhlIGV4YWN0IG1heGltdW0gYmFzZV9mcm9tX21lbWJlcgotLy8gdXNlcy4gIFRoZSBtYXhpbXVtIGNvbnN0cnVjdG9yIGxlbmd0aCBjYW4gYmUgY2hhbmdlZCBieSBvdmVycmlkaW5nIHRoZQotLy8gI2RlZmluZWQgY29uc3RhbnQuICBNYWtlIHN1cmUgdG8gYXBwbHkgdGhlIG92ZXJyaWRlLCBpZiBhbnksIGZvciBhbGwgc291cmNlCi0vLyBmaWxlcyBkdXJpbmcgcHJvamVjdCBjb21waWxpbmcgZm9yIGNvbnNpc3RlbmN5LgotCi0vLyBDb250cmlidXRlZCBieSBKb25hdGhhbiBUdXJrYW5pcwotCi0jaWZuZGVmIE5ETkJPT1NUX0JBU0VfRlJPTV9NRU1CRVJfTUFYX0FSSVRZCi0jZGVmaW5lIE5ETkJPT1NUX0JBU0VfRlJPTV9NRU1CRVJfTUFYX0FSSVRZICAxMAotI2VuZGlmCi0KLQotLy8gIEFuIGl0ZXJhdGlvbiBvZiBhIGNvbnN0cnVjdG9yIHRlbXBsYXRlIGZvciBiYXNlX2Zyb21fbWVtYmVyICAtLS0tLS0tLS0tLS0tLy8KLQotLy8gQSBtYWNybyB0aGF0IHNob3VsZCBleHBhbmQgdG86Ci0vLyAgICAgdGVtcGxhdGUgPCB0eXBlbmFtZSBUMSwgLi4uLCB0eXBlbmFtZSBUbiA+Ci0vLyAgICAgYmFzZV9mcm9tX21lbWJlciggVDEgeDEsIC4uLiwgVG4geG4gKQotLy8gICAgICAgICA6IG1lbWJlciggeDEsIC4uLiwgeG4gKQotLy8gICAgICAgICB7fQotLy8gVGhpcyBtYWNybyBzaG91bGQgb25seSBwZXJzaXN0IHdpdGhpbiB0aGlzIGZpbGUuCi0KLSNkZWZpbmUgTkROQk9PU1RfUFJJVkFURV9DVFJfREVGKCB6LCBuLCBkYXRhICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlIDwgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMobiwgdHlwZW5hbWUgVCkgPiAgICAgICAgICAgICAgICAgICBcCi0gICAgZXhwbGljaXQgYmFzZV9mcm9tX21lbWJlciggTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TKG4sIFQsIHgpICkgIFwKLSAgICAgICAgOiBtZW1iZXIoIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKG4sIHgpICkgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB7fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgLyoqLwotCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi0vLyAgQmFzZS1mcm9tLW1lbWJlciBjbGFzcyB0ZW1wbGF0ZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyBIZWxwZXIgdG8gaW5pdGlhbGl6ZSBhIGJhc2Ugb2JqZWN0IHNvIGEgZGVyaXZlZCBjbGFzcyBjYW4gdXNlIHRoaXMKLS8vIG9iamVjdCBpbiB0aGUgaW5pdGlhbGl6YXRpb24gb2YgYW5vdGhlciBiYXNlIGNsYXNzLiAgVXNlZCBieQotLy8gRGlldG1hciBLdWVobCBmcm9tIGlkZWFzIGJ5IFJvbiBLbGF0Y2hvIHRvIHNvbHZlIHRoZSBwcm9ibGVtIG9mIGEKLS8vIGJhc2UgY2xhc3MgbmVlZGluZyB0byBiZSBpbml0aWFsaXplZCBieSBhIG1lbWJlci4KLQotLy8gQ29udHJpYnV0ZWQgYnkgRGFyeWxlIFdhbGtlcgotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIE1lbWJlclR5cGUsIGludCBVbmlxdWVJRCA9IDAgPgotY2xhc3MgYmFzZV9mcm9tX21lbWJlcgotewotcHJvdGVjdGVkOgotICAgIE1lbWJlclR5cGUgIG1lbWJlcjsKLQotICAgIGJhc2VfZnJvbV9tZW1iZXIoKQotICAgICAgICA6IG1lbWJlcigpCi0gICAgICAgIHt9Ci0KLSAgICBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UTyggMSwgTkROQk9PU1RfUFBfSU5DKE5ETkJPT1NUX0JBU0VfRlJPTV9NRU1CRVJfTUFYX0FSSVRZKSwKLSAgICAgTkROQk9PU1RfUFJJVkFURV9DVFJfREVGLCBfICkKLQotfTsgIC8vIG5kbmJvb3N0OjpiYXNlX2Zyb21fbWVtYmVyCi0KLX0gIC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0KLS8vIFVuZG8gYW55IHByaXZhdGUgbWFjcm9zCi0jdW5kZWYgTkROQk9PU1RfUFJJVkFURV9DVFJfREVGCi0KLQotI2VuZGlmICAvLyBORE5CT09TVF9VVElMSVRZX0JBU0VfRlJPTV9NRU1CRVJfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvYmluYXJ5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9iaW5hcnkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlODQxYWZhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9iaW5hcnkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzA4ICswLDAgQEAKLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgICBDb3B5cmlnaHQgKGMpIDIwMDUgTWF0dGhldyBDYWxhYnJlc2UKLQotICAgIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLSAgICBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi0KLSNpZm5kZWYgTkROQk9PU1RfVVRJTElUWV9CSU5BUllfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1VUSUxJVFlfQklOQVJZX0hQUAotCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSAgICBCaW5hcnkgTGl0ZXJhbCBVdGlsaXR5Ci0gICAgX19fX19fX19fX19fX19fX19fX19fXwotCi0KLSAgICBUaGUgZm9sbG93aW5nIGNvZGUgd29ya3MgYnkgY29udmVydGluZyB0aGUgaW5wdXQgYml0IHBhdHRlcm4gaW50byBhCi0gICAgQm9vc3QuUHJlcHJvY2Vzc29yIHNlcXVlbmNlLCB0aGVuIGNvbnZlcnRpbmcgZ3JvdXBpbmdzIG9mIDMgYml0cyBlYWNoIGludG8KLSAgICB0aGUgY29ycmVzcG9uZGluZyBvY3RhbCBkaWdpdCwgYW5kIGZpbmFsbHkgY29uY2F0ZW5hdGluZyBhbGwgb2YgdGhlIGRpZ2l0cwotICAgIHRvZ2V0aGVyIGFsb25nIHdpdGggYSBsZWFkaW5nIHplcm8uIFRoaXMgeWllbGRzIGEgc3RhbmRhcmQgb2N0YWwgbGl0ZXJhbAotICAgIHdpdGggdGhlIGRlc2lyZWQgdmFsdWUgYXMgc3BlY2lmaWVkIGluIGJpdHMuCi0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9kZWR1Y2VfZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvaWRlbnRpdHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvY2F0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3RyYW5zZm9ybS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvbW9kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3NpemUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL2VtcHR5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC93aGlsZS5ocHA+Ci0KLSNkZWZpbmUgTkROQk9PU1RfQklOQVJZKCBiaXRfZ3JvdXBpbmdzICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIE5ETkJPT1NUX0JJTkFSWV9MSVRFUkFMX0QoIE5ETkJPT1NUX1BQX0RFRFVDRV9EKCksIGJpdF9ncm91cGluZ3MgKSAKLQotI2RlZmluZSBORE5CT09TVF9CSU5BUllfVSggYml0X2dyb3VwaW5ncyApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgTkROQk9PU1RfU1VGRklYRURfQklOQVJZX0xJVEVSQUwoIGJpdF9ncm91cGluZ3MsIFUgKSAKLQotI2RlZmluZSBORE5CT09TVF9CSU5BUllfTCggYml0X2dyb3VwaW5ncyApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgTkROQk9PU1RfU1VGRklYRURfQklOQVJZX0xJVEVSQUwoIGJpdF9ncm91cGluZ3MsIEwgKSAKLQotI2RlZmluZSBORE5CT09TVF9CSU5BUllfVUwoIGJpdF9ncm91cGluZ3MgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgTkROQk9PU1RfU1VGRklYRURfQklOQVJZX0xJVEVSQUwoIGJpdF9ncm91cGluZ3MsIFVMICkgCi0KLSNkZWZpbmUgTkROQk9PU1RfQklOQVJZX0xVKCBiaXRfZ3JvdXBpbmdzICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIE5ETkJPT1NUX1NVRkZJWEVEX0JJTkFSWV9MSVRFUkFMKCBiaXRfZ3JvdXBpbmdzLCBMVSApIAotCi0jZGVmaW5lIE5ETkJPT1NUX0JJTkFSWV9MTCggYml0X2dyb3VwaW5ncyApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBORE5CT09TVF9TVUZGSVhFRF9CSU5BUllfTElURVJBTCggYml0X2dyb3VwaW5ncywgTEwgKSAKLQotI2RlZmluZSBORE5CT09TVF9CSU5BUllfVUxMKCBiaXRfZ3JvdXBpbmdzICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgTkROQk9PU1RfU1VGRklYRURfQklOQVJZX0xJVEVSQUwoIGJpdF9ncm91cGluZ3MsIFVMTCApIAotCi0jZGVmaW5lIE5ETkJPT1NUX0JJTkFSWV9MTFUoIGJpdF9ncm91cGluZ3MgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBORE5CT09TVF9TVUZGSVhFRF9CSU5BUllfTElURVJBTCggYml0X2dyb3VwaW5ncywgTExVICkgCi0KLSNkZWZpbmUgTkROQk9PU1RfU1VGRklYRURfQklOQVJZX0xJVEVSQUwoIGJpdF9ncm91cGluZ3MsIHN1ZmZpeCApICAgICAgICAgICAgICAgICBcCi0gIE5ETkJPT1NUX1NVRkZJWEVEX0JJTkFSWV9MSVRFUkFMX0QoIE5ETkJPT1NUX1BQX0RFRFVDRV9EKCksIGJpdF9ncm91cGluZ3MsIHN1ZmZpeCApIAotCi0jZGVmaW5lIE5ETkJPT1NUX1NVRkZJWEVEX0JJTkFSWV9MSVRFUkFMX0QoIGQsIGJpdF9ncm91cGluZ3MsIHN1ZmZpeCApICAgICAgICAgICAgXAotICBORE5CT09TVF9QUF9DQVQoIE5ETkJPT1NUX0JJTkFSWV9MSVRFUkFMX0QoIGQsIGJpdF9ncm91cGluZ3MgKSwgc3VmZml4ICkgCi0KLSNkZWZpbmUgTkROQk9PU1RfQklOQVJZX0xJVEVSQUxfRCggZCwgYml0X2dyb3VwaW5ncyApICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIE5ETkJPT1NUX1BQX1NFUV9DQVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAoICgwKSBORE5CT09TVF9ERVRBSUxfQ1JFQVRFX0JJTkFSWV9MSVRFUkFMX09DVEFMX1NFUVVFTkNFKCBkLCBiaXRfZ3JvdXBpbmdzICkgIFwKLSAgKSAKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQ1JFQVRFX0JJTkFSWV9MSVRFUkFMX09DVEFMX1NFUVVFTkNFKCBkLCBiaXRfZ3JvdXBpbmdzICkgIFwKLSAgTkROQk9PU1RfUFBfU0VRX1RSQU5TRk9STSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICggTkROQk9PU1RfREVUQUlMX1RSSVBMRV9UT19PQ1RBTF9PUEVSQVRJT04gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAsIE5ETkJPT1NUX1BQX05JTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgLCBORE5CT09TVF9QUF9JREVOVElUWSggTkROQk9PU1RfREVUQUlMX0NPTlZFUlRfQklUX1NFUVVFTkNFX1RPX1RSSVBMRV9TRVFVRU5DRSApKClcCi0gICAgKCBORE5CT09TVF9ERVRBSUxfQ09NUExFVEVfVFJJUExFX1NFUVVFTkNFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAsIE5ETkJPT1NUX0RFVEFJTF9DUkVBVEVfQklOQVJZX0xJVEVSQUxfQklUX1NFUVVFTkNFKCBkLCBiaXRfZ3JvdXBpbmdzICkgICAgXAotICAgICAgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICkgCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0NPTlZFUlRfQklUX1NFUVVFTkNFX1RPX1RSSVBMRV9TRVFVRU5DRSggYml0X3NlcXVlbmNlICkgICBcCi0gIE5ETkJPT1NUX1BQX0NBVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAoIE5ETkJPT1NUX0RFVEFJTF9DT05WRVJUX0JJVF9TRVFVRU5DRV9UT19QQVJFTlRIRVRJQ19UVVBMRV8xIGJpdF9zZXF1ZW5jZSAgICAgIFwKLSAgLCBFTkRfQklUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICkgCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJVFNfUEVSX09DVElUIDMKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQ09NUExFVEVfVFJJUExFX1NFUVVFTkNFKCBkLCBpbmNvbXBsZXRlX25pYmJsZV9zZXF1ZW5jZSApIFwKLSAgTkROQk9PU1RfUFBfQ0FUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICggTkROQk9PU1RfREVUQUlMX0NSRUFURV9UUklQTEVfQ09NUExFVElPTl9TRVFVRU5DRV8gICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAsIE5ETkJPT1NUX1BQX01PRF9EKCBkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICwgTkROQk9PU1RfUFBfU0VRX1NJWkUoIGluY29tcGxldGVfbmliYmxlX3NlcXVlbmNlICkgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAsIE5ETkJPT1NUX0RFVEFJTF9CSVRTX1BFUl9PQ1RJVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGluY29tcGxldGVfbmliYmxlX3NlcXVlbmNlIAotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9GSVhFRF9DT01QTCggYml0ICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBORE5CT09TVF9QUF9DQVQoIE5ETkJPT1NUX0RFVEFJTF9GSVhFRF9DT01QTF8sIGJpdCApCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0ZJWEVEX0NPTVBMXzAgMSAKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfRklYRURfQ09NUExfMSAwIAotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9DUkVBVEVfQklOQVJZX0xJVEVSQUxfQklUX1NFUVVFTkNFKCBkLCBiaXRfZ3JvdXBpbmdzICkgICAgXAotICBORE5CT09TVF9QUF9FTVBUWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgTkROQk9PU1RfUFBfQ0FUKCBORE5CT09TVF9QUF9XSElMRV8sIGQgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICggTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX1BSRURJQ0FURSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAsIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9PUEVSQVRJT04gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgLCBiaXRfZ3JvdXBpbmdzICgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICkgCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX1BSRURJQ0FURSggZCwgc3RhdGUgKSAgICAgICAgICAgICAgICAgICAgICBcCi0gIE5ETkJPT1NUX0RFVEFJTF9GSVhFRF9DT01QTCggTkROQk9PU1RfREVUQUlMX0lTX05VTExBUllfQVJHUyggc3RhdGUgKSApIAotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9PUEVSQVRJT04oIGQsIHN0YXRlICkgICAgICAgICAgICAgICAgICAgICAgXAotICBORE5CT09TVF9ERVRBSUxfU1BMSVRfQU5EX1NXQVAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgKCBORE5CT09TVF9QUF9DQVQoIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXywgc3RhdGUgKSApIAotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9UUklQTEVfVE9fT0NUQUxfT1BFUkFUSU9OKCBzLCBkdW1teV9wYXJhbSwgdHVwbGUgKSAgICAgICAgXAotICBORE5CT09TVF9ERVRBSUxfVEVSTkFSWV9UUklQTEVfVE9fT0NUQUwgdHVwbGUgCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX1RFUk5BUllfVFJJUExFX1RPX09DVEFMKCBiaXQyLCBiaXQxLCBiaXQwICkgICAgICAgICAgICAgICBcCi0gIE5ETkJPT1NUX0RFVEFJTF9UUklQTEVfVE9fT0NUQUxfICMjIGJpdDIgIyMgYml0MSAjIyBiaXQwIAotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9DUkVBVEVfVFJJUExFX0NPTVBMRVRJT05fU0VRVUVOQ0VfMSAoMCkoMCkKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0NSRUFURV9UUklQTEVfQ09NUExFVElPTl9TRVFVRU5DRV8yICgwKQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQ1JFQVRFX1RSSVBMRV9DT01QTEVUSU9OX1NFUVVFTkNFXzAgIAotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9DT05WRVJUX0JJVF9TRVFVRU5DRV9UT19QQVJFTlRIRVRJQ19UVVBMRV8xRU5EX0JJVCAgCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0NPTlZFUlRfQklUX1NFUVVFTkNFX1RPX1BBUkVOVEhFVElDX1RVUExFXzEoIGJpdCApICAgICAgICBcCi0gICggKCBiaXQsIE5ETkJPT1NUX0RFVEFJTF9DT05WRVJUX0JJVF9TRVFVRU5DRV9UT19QQVJFTlRIRVRJQ19UVVBMRV8yIAotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9DT05WRVJUX0JJVF9TRVFVRU5DRV9UT19QQVJFTlRIRVRJQ19UVVBMRV8yKCBiaXQgKSAgICAgICAgXAotICBiaXQsIE5ETkJPT1NUX0RFVEFJTF9DT05WRVJUX0JJVF9TRVFVRU5DRV9UT19QQVJFTlRIRVRJQ19UVVBMRV8zIAotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9DT05WRVJUX0JJVF9TRVFVRU5DRV9UT19QQVJFTlRIRVRJQ19UVVBMRV8zKCBiaXQgKSAgICAgICAgXAotICBiaXQgKSApIE5ETkJPT1NUX0RFVEFJTF9DT05WRVJUX0JJVF9TRVFVRU5DRV9UT19QQVJFTlRIRVRJQ19UVVBMRV8xIAotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9TUExJVF9BTkRfU1dBUCggcGFyYW1zICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBORE5CT09TVF9QUF9JREVOVElUWSggTkROQk9PU1RfREVUQUlMX1NQTElUX0FORF9TV0FQX1BBUkFNUyApKCkoIHBhcmFtcyApCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX1NQTElUX0FORF9TV0FQX1BBUkFNUyggZmlyc3RfcGFyYW0sIHNlY29uZF9wYXJhbSApICAgICAgICBcCi0gIHNlY29uZF9wYXJhbSBmaXJzdF9wYXJhbSAKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfTEVGVF9PRl9DT01NQSggcGFyYW1zICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgTkROQk9PU1RfUFBfSURFTlRJVFkoIE5ETkJPT1NUX0RFVEFJTF9GSVJTVF9NQUNST19QQVJBTSApKCkoIHBhcmFtcyApIAotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9GSVJTVF9NQUNST19QQVJBTSggZmlyc3RfcGFyYW0sIHNlY29uZF9wYXJhbSApICAgICAgICAgICAgXAotICBmaXJzdF9wYXJhbSAKLQotLyogQmVnaW4gZGVyaXZlZCBjb25jZXB0cyBmcm9tIENoYW9zIGJ5IFBhdWwgTWVuc29uaWRlcyAqLwotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9JU19OVUxMQVJZX0FSR1MoIHBhcmFtICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBORE5CT09TVF9ERVRBSUxfTEVGVF9PRl9DT01NQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgKCBORE5CT09TVF9QUF9DQVQoIE5ETkJPT1NUX0RFVEFJTF9JU19OVUxMQVJZX0FSR1NfUl8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgLCBORE5CT09TVF9ERVRBSUxfSVNfTlVMTEFSWV9BUkdTX0MgcGFyYW0gICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgKSAKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfSVNfTlVMTEFSWV9BUkdTX0MoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgMSAKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfSVNfTlVMTEFSWV9BUkdTX1JfMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgMSwgTkROQk9PU1RfUFBfTklMIAotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9JU19OVUxMQVJZX0FSR1NfUl9ORE5CT09TVF9ERVRBSUxfSVNfTlVMTEFSWV9BUkdTX0MgICAgICAgICAgXAotICAwLCBORE5CT09TVF9QUF9OSUwgCi0KLS8qIEVuZCBkZXJpdmVkIGNvbmNlcHRzIGZyb20gQ2hhb3MgYnkgUGF1bCBNZW5zb25pZGVzICovCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX1RSSVBMRV9UT19PQ1RBTF8wMDAgMCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX1RSSVBMRV9UT19PQ1RBTF8wMDEgMSAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX1RSSVBMRV9UT19PQ1RBTF8wMTAgMiAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX1RSSVBMRV9UT19PQ1RBTF8wMTEgMyAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX1RSSVBMRV9UT19PQ1RBTF8xMDAgNCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX1RSSVBMRV9UT19PQ1RBTF8xMDEgNSAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX1RSSVBMRV9UT19PQ1RBTF8xMTAgNiAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX1RSSVBMRV9UT19PQ1RBTF8xMTEgNyAKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wICgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEgKDEpLCAKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMCAoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMSAoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMCAoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMSAoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMCAoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMSAoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMCAoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMSAoMSkoMSksIAotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMCAoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDEgKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwICgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMSAoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAgKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxICgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMCAoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTEgKDEpKDEpKDEpLCAKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAwICgwKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDEgKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMCAoMCkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDExICgwKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDAgKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMSAoMCkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTEwICgwKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTEgKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMCAoMSkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAxICgxKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTAgKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMSAoMSkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAwICgxKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDEgKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMCAoMSkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTExICgxKSgxKSgxKSgxKSwgCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDAgKDApKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDEgKDApKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTAgKDApKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTEgKDApKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDAgKDApKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDEgKDApKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTAgKDApKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTEgKDApKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDAgKDApKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDEgKDApKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTAgKDApKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTEgKDApKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDAgKDApKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDEgKDApKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTAgKDApKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTEgKDApKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDAgKDEpKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDEgKDEpKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTAgKDEpKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTEgKDEpKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDAgKDEpKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDEgKDEpKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTAgKDEpKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTEgKDEpKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDAgKDEpKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDEgKDEpKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTAgKDEpKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTEgKDEpKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDAgKDEpKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDEgKDEpKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTAgKDEpKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTEgKDEpKDEpKDEpKDEpKDEpLCAKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAwMDAgKDApKDApKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDAxICgwKSgwKSgwKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDAxMCAoMCkoMCkoMCkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAwMTEgKDApKDApKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTAwICgwKSgwKSgwKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDEwMSAoMCkoMCkoMCkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAxMTAgKDApKDApKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTExICgwKSgwKSgwKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTAwMCAoMCkoMCkoMSkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDEwMDEgKDApKDApKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDEwICgwKSgwKSgxKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTAxMSAoMCkoMCkoMSkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDExMDAgKDApKDApKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTAxICgwKSgwKSgxKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTExMCAoMCkoMCkoMSkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDExMTEgKDApKDApKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDAwICgwKSgxKSgwKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDAwMSAoMCkoMSkoMCkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAwMTAgKDApKDEpKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDExICgwKSgxKSgwKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDEwMCAoMCkoMSkoMCkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAxMDEgKDApKDEpKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTEwICgwKSgxKSgwKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDExMSAoMCkoMSkoMCkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTEwMDAgKDApKDEpKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDAxICgwKSgxKSgxKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTAxMCAoMCkoMSkoMSkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTEwMTEgKDApKDEpKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTAwICgwKSgxKSgxKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTEwMSAoMCkoMSkoMSkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTExMTAgKDApKDEpKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTExICgwKSgxKSgxKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDAwMCAoMSkoMCkoMCkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAwMDEgKDEpKDApKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDEwICgxKSgwKSgwKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDAxMSAoMSkoMCkoMCkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAxMDAgKDEpKDApKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTAxICgxKSgwKSgwKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDExMCAoMSkoMCkoMCkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAxMTEgKDEpKDApKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDAwICgxKSgwKSgxKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTAwMSAoMSkoMCkoMSkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDEwMTAgKDEpKDApKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDExICgxKSgwKSgxKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTEwMCAoMSkoMCkoMSkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDExMDEgKDEpKDApKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTEwICgxKSgwKSgxKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTExMSAoMSkoMCkoMSkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAwMDAgKDEpKDEpKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDAxICgxKSgxKSgwKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDAxMCAoMSkoMSkoMCkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAwMTEgKDEpKDEpKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTAwICgxKSgxKSgwKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDEwMSAoMSkoMSkoMCkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAxMTAgKDEpKDEpKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTExICgxKSgxKSgwKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTAwMCAoMSkoMSkoMSkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTEwMDEgKDEpKDEpKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDEwICgxKSgxKSgxKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTAxMSAoMSkoMSkoMSkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTExMDAgKDEpKDEpKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTAxICgxKSgxKSgxKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTExMCAoMSkoMSkoMSkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTExMTEgKDEpKDEpKDEpKDEpKDEpKDEpLCAKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAwMDAwICgwKSgwKSgwKSgwKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDAwMDEgKDApKDApKDApKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDAxMCAoMCkoMCkoMCkoMCkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAwMDExICgwKSgwKSgwKSgwKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDAxMDAgKDApKDApKDApKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDEwMSAoMCkoMCkoMCkoMCkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAwMTEwICgwKSgwKSgwKSgwKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDAxMTEgKDApKDApKDApKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTAwMCAoMCkoMCkoMCkoMSkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAxMDAxICgwKSgwKSgwKSgxKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDEwMTAgKDApKDApKDApKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTAxMSAoMCkoMCkoMCkoMSkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAxMTAwICgwKSgwKSgwKSgxKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDExMDEgKDApKDApKDApKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTExMCAoMCkoMCkoMCkoMSkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAxMTExICgwKSgwKSgwKSgxKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTAwMDAgKDApKDApKDEpKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDAwMSAoMCkoMCkoMSkoMCkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDEwMDEwICgwKSgwKSgxKSgwKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTAwMTEgKDApKDApKDEpKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDEwMCAoMCkoMCkoMSkoMCkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDEwMTAxICgwKSgwKSgxKSgwKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTAxMTAgKDApKDApKDEpKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDExMSAoMCkoMCkoMSkoMCkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDExMDAwICgwKSgwKSgxKSgxKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTEwMDEgKDApKDApKDEpKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTAxMCAoMCkoMCkoMSkoMSkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDExMDExICgwKSgwKSgxKSgxKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTExMDAgKDApKDApKDEpKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTEwMSAoMCkoMCkoMSkoMSkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDExMTEwICgwKSgwKSgxKSgxKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTExMTEgKDApKDApKDEpKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDAwMCAoMCkoMSkoMCkoMCkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAwMDAxICgwKSgxKSgwKSgwKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDAwMTAgKDApKDEpKDApKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDAxMSAoMCkoMSkoMCkoMCkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAwMTAwICgwKSgxKSgwKSgwKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDAxMDEgKDApKDEpKDApKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDExMCAoMCkoMSkoMCkoMCkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAwMTExICgwKSgxKSgwKSgwKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDEwMDAgKDApKDEpKDApKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTAwMSAoMCkoMSkoMCkoMSkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAxMDEwICgwKSgxKSgwKSgxKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDEwMTEgKDApKDEpKDApKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTEwMCAoMCkoMSkoMCkoMSkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAxMTAxICgwKSgxKSgwKSgxKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDExMTAgKDApKDEpKDApKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTExMSAoMCkoMSkoMCkoMSkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTEwMDAwICgwKSgxKSgxKSgwKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTAwMDEgKDApKDEpKDEpKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDAxMCAoMCkoMSkoMSkoMCkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTEwMDExICgwKSgxKSgxKSgwKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTAxMDAgKDApKDEpKDEpKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDEwMSAoMCkoMSkoMSkoMCkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTEwMTEwICgwKSgxKSgxKSgwKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTAxMTEgKDApKDEpKDEpKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTAwMCAoMCkoMSkoMSkoMSkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTExMDAxICgwKSgxKSgxKSgxKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTEwMTAgKDApKDEpKDEpKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTAxMSAoMCkoMSkoMSkoMSkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTExMTAwICgwKSgxKSgxKSgxKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTExMDEgKDApKDEpKDEpKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTExMCAoMCkoMSkoMSkoMSkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTExMTExICgwKSgxKSgxKSgxKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDAwMDAgKDEpKDApKDApKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDAwMSAoMSkoMCkoMCkoMCkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAwMDEwICgxKSgwKSgwKSgwKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDAwMTEgKDEpKDApKDApKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDEwMCAoMSkoMCkoMCkoMCkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAwMTAxICgxKSgwKSgwKSgwKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDAxMTAgKDEpKDApKDApKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDExMSAoMSkoMCkoMCkoMCkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAxMDAwICgxKSgwKSgwKSgxKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDEwMDEgKDEpKDApKDApKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTAxMCAoMSkoMCkoMCkoMSkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAxMDExICgxKSgwKSgwKSgxKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDExMDAgKDEpKDApKDApKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTEwMSAoMSkoMCkoMCkoMSkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAxMTEwICgxKSgwKSgwKSgxKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDExMTEgKDEpKDApKDApKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDAwMCAoMSkoMCkoMSkoMCkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDEwMDAxICgxKSgwKSgxKSgwKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTAwMTAgKDEpKDApKDEpKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDAxMSAoMSkoMCkoMSkoMCkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDEwMTAwICgxKSgwKSgxKSgwKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTAxMDEgKDEpKDApKDEpKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDExMCAoMSkoMCkoMSkoMCkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDEwMTExICgxKSgwKSgxKSgwKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTEwMDAgKDEpKDApKDEpKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTAwMSAoMSkoMCkoMSkoMSkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDExMDEwICgxKSgwKSgxKSgxKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTEwMTEgKDEpKDApKDEpKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTEwMCAoMSkoMCkoMSkoMSkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDExMTAxICgxKSgwKSgxKSgxKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTExMTAgKDEpKDApKDEpKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTExMSAoMSkoMCkoMSkoMSkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAwMDAwICgxKSgxKSgwKSgwKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDAwMDEgKDEpKDEpKDApKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDAxMCAoMSkoMSkoMCkoMCkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAwMDExICgxKSgxKSgwKSgwKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDAxMDAgKDEpKDEpKDApKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDEwMSAoMSkoMSkoMCkoMCkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAwMTEwICgxKSgxKSgwKSgwKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDAxMTEgKDEpKDEpKDApKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTAwMCAoMSkoMSkoMCkoMSkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAxMDAxICgxKSgxKSgwKSgxKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDEwMTAgKDEpKDEpKDApKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTAxMSAoMSkoMSkoMCkoMSkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAxMTAwICgxKSgxKSgwKSgxKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDExMDEgKDEpKDEpKDApKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTExMCAoMSkoMSkoMCkoMSkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAxMTExICgxKSgxKSgwKSgxKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTAwMDAgKDEpKDEpKDEpKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDAwMSAoMSkoMSkoMSkoMCkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTEwMDEwICgxKSgxKSgxKSgwKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTAwMTEgKDEpKDEpKDEpKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDEwMCAoMSkoMSkoMSkoMCkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTEwMTAxICgxKSgxKSgxKSgwKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTAxMTAgKDEpKDEpKDEpKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDExMSAoMSkoMSkoMSkoMCkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTExMDAwICgxKSgxKSgxKSgxKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTEwMDEgKDEpKDEpKDEpKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTAxMCAoMSkoMSkoMSkoMSkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTExMDExICgxKSgxKSgxKSgxKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTExMDAgKDEpKDEpKDEpKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTEwMSAoMSkoMSkoMSkoMSkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTExMTEwICgxKSgxKSgxKSgxKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTExMTEgKDEpKDEpKDEpKDEpKDEpKDEpKDEpLCAKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAwMDAwMCAoMCkoMCkoMCkoMCkoMCkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAwMDAwMSAoMCkoMCkoMCkoMCkoMCkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAwMDAxMCAoMCkoMCkoMCkoMCkoMCkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAwMDAxMSAoMCkoMCkoMCkoMCkoMCkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAwMDEwMCAoMCkoMCkoMCkoMCkoMCkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAwMDEwMSAoMCkoMCkoMCkoMCkoMCkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAwMDExMCAoMCkoMCkoMCkoMCkoMCkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAwMDExMSAoMCkoMCkoMCkoMCkoMCkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAwMTAwMCAoMCkoMCkoMCkoMCkoMSkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAwMTAwMSAoMCkoMCkoMCkoMCkoMSkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAwMTAxMCAoMCkoMCkoMCkoMCkoMSkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAwMTAxMSAoMCkoMCkoMCkoMCkoMSkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAwMTEwMCAoMCkoMCkoMCkoMCkoMSkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAwMTEwMSAoMCkoMCkoMCkoMCkoMSkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAwMTExMCAoMCkoMCkoMCkoMCkoMSkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAwMTExMSAoMCkoMCkoMCkoMCkoMSkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAxMDAwMCAoMCkoMCkoMCkoMSkoMCkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAxMDAwMSAoMCkoMCkoMCkoMSkoMCkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAxMDAxMCAoMCkoMCkoMCkoMSkoMCkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAxMDAxMSAoMCkoMCkoMCkoMSkoMCkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAxMDEwMCAoMCkoMCkoMCkoMSkoMCkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAxMDEwMSAoMCkoMCkoMCkoMSkoMCkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAxMDExMCAoMCkoMCkoMCkoMSkoMCkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAxMDExMSAoMCkoMCkoMCkoMSkoMCkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAxMTAwMCAoMCkoMCkoMCkoMSkoMSkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAxMTAwMSAoMCkoMCkoMCkoMSkoMSkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAxMTAxMCAoMCkoMCkoMCkoMSkoMSkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAxMTAxMSAoMCkoMCkoMCkoMSkoMSkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAxMTEwMCAoMCkoMCkoMCkoMSkoMSkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAxMTEwMSAoMCkoMCkoMCkoMSkoMSkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAxMTExMCAoMCkoMCkoMCkoMSkoMSkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAxMTExMSAoMCkoMCkoMCkoMSkoMSkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDEwMDAwMCAoMCkoMCkoMSkoMCkoMCkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDEwMDAwMSAoMCkoMCkoMSkoMCkoMCkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDEwMDAxMCAoMCkoMCkoMSkoMCkoMCkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDEwMDAxMSAoMCkoMCkoMSkoMCkoMCkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDEwMDEwMCAoMCkoMCkoMSkoMCkoMCkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDEwMDEwMSAoMCkoMCkoMSkoMCkoMCkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDEwMDExMCAoMCkoMCkoMSkoMCkoMCkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDEwMDExMSAoMCkoMCkoMSkoMCkoMCkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDEwMTAwMCAoMCkoMCkoMSkoMCkoMSkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDEwMTAwMSAoMCkoMCkoMSkoMCkoMSkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDEwMTAxMCAoMCkoMCkoMSkoMCkoMSkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDEwMTAxMSAoMCkoMCkoMSkoMCkoMSkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDEwMTEwMCAoMCkoMCkoMSkoMCkoMSkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDEwMTEwMSAoMCkoMCkoMSkoMCkoMSkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDEwMTExMCAoMCkoMCkoMSkoMCkoMSkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDEwMTExMSAoMCkoMCkoMSkoMCkoMSkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDExMDAwMCAoMCkoMCkoMSkoMSkoMCkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDExMDAwMSAoMCkoMCkoMSkoMSkoMCkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDExMDAxMCAoMCkoMCkoMSkoMSkoMCkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDExMDAxMSAoMCkoMCkoMSkoMSkoMCkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDExMDEwMCAoMCkoMCkoMSkoMSkoMCkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDExMDEwMSAoMCkoMCkoMSkoMSkoMCkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDExMDExMCAoMCkoMCkoMSkoMSkoMCkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDExMDExMSAoMCkoMCkoMSkoMSkoMCkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDExMTAwMCAoMCkoMCkoMSkoMSkoMSkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDExMTAwMSAoMCkoMCkoMSkoMSkoMSkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDExMTAxMCAoMCkoMCkoMSkoMSkoMSkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDExMTAxMSAoMCkoMCkoMSkoMSkoMSkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDExMTEwMCAoMCkoMCkoMSkoMSkoMSkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDExMTEwMSAoMCkoMCkoMSkoMSkoMSkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDExMTExMCAoMCkoMCkoMSkoMSkoMSkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDExMTExMSAoMCkoMCkoMSkoMSkoMSkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAwMDAwMCAoMCkoMSkoMCkoMCkoMCkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAwMDAwMSAoMCkoMSkoMCkoMCkoMCkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAwMDAxMCAoMCkoMSkoMCkoMCkoMCkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAwMDAxMSAoMCkoMSkoMCkoMCkoMCkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAwMDEwMCAoMCkoMSkoMCkoMCkoMCkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAwMDEwMSAoMCkoMSkoMCkoMCkoMCkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAwMDExMCAoMCkoMSkoMCkoMCkoMCkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAwMDExMSAoMCkoMSkoMCkoMCkoMCkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAwMTAwMCAoMCkoMSkoMCkoMCkoMSkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAwMTAwMSAoMCkoMSkoMCkoMCkoMSkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAwMTAxMCAoMCkoMSkoMCkoMCkoMSkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAwMTAxMSAoMCkoMSkoMCkoMCkoMSkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAwMTEwMCAoMCkoMSkoMCkoMCkoMSkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAwMTEwMSAoMCkoMSkoMCkoMCkoMSkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAwMTExMCAoMCkoMSkoMCkoMCkoMSkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAwMTExMSAoMCkoMSkoMCkoMCkoMSkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAxMDAwMCAoMCkoMSkoMCkoMSkoMCkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAxMDAwMSAoMCkoMSkoMCkoMSkoMCkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAxMDAxMCAoMCkoMSkoMCkoMSkoMCkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAxMDAxMSAoMCkoMSkoMCkoMSkoMCkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAxMDEwMCAoMCkoMSkoMCkoMSkoMCkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAxMDEwMSAoMCkoMSkoMCkoMSkoMCkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAxMDExMCAoMCkoMSkoMCkoMSkoMCkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAxMDExMSAoMCkoMSkoMCkoMSkoMCkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAxMTAwMCAoMCkoMSkoMCkoMSkoMSkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAxMTAwMSAoMCkoMSkoMCkoMSkoMSkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAxMTAxMCAoMCkoMSkoMCkoMSkoMSkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAxMTAxMSAoMCkoMSkoMCkoMSkoMSkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAxMTEwMCAoMCkoMSkoMCkoMSkoMSkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAxMTEwMSAoMCkoMSkoMCkoMSkoMSkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAxMTExMCAoMCkoMSkoMCkoMSkoMSkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAxMTExMSAoMCkoMSkoMCkoMSkoMSkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTEwMDAwMCAoMCkoMSkoMSkoMCkoMCkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTEwMDAwMSAoMCkoMSkoMSkoMCkoMCkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTEwMDAxMCAoMCkoMSkoMSkoMCkoMCkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTEwMDAxMSAoMCkoMSkoMSkoMCkoMCkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTEwMDEwMCAoMCkoMSkoMSkoMCkoMCkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTEwMDEwMSAoMCkoMSkoMSkoMCkoMCkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTEwMDExMCAoMCkoMSkoMSkoMCkoMCkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTEwMDExMSAoMCkoMSkoMSkoMCkoMCkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTEwMTAwMCAoMCkoMSkoMSkoMCkoMSkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTEwMTAwMSAoMCkoMSkoMSkoMCkoMSkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTEwMTAxMCAoMCkoMSkoMSkoMCkoMSkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTEwMTAxMSAoMCkoMSkoMSkoMCkoMSkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTEwMTEwMCAoMCkoMSkoMSkoMCkoMSkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTEwMTEwMSAoMCkoMSkoMSkoMCkoMSkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTEwMTExMCAoMCkoMSkoMSkoMCkoMSkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTEwMTExMSAoMCkoMSkoMSkoMCkoMSkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTExMDAwMCAoMCkoMSkoMSkoMSkoMCkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTExMDAwMSAoMCkoMSkoMSkoMSkoMCkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTExMDAxMCAoMCkoMSkoMSkoMSkoMCkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTExMDAxMSAoMCkoMSkoMSkoMSkoMCkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTExMDEwMCAoMCkoMSkoMSkoMSkoMCkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTExMDEwMSAoMCkoMSkoMSkoMSkoMCkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTExMDExMCAoMCkoMSkoMSkoMSkoMCkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTExMDExMSAoMCkoMSkoMSkoMSkoMCkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTExMTAwMCAoMCkoMSkoMSkoMSkoMSkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTExMTAwMSAoMCkoMSkoMSkoMSkoMSkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTExMTAxMCAoMCkoMSkoMSkoMSkoMSkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTExMTAxMSAoMCkoMSkoMSkoMSkoMSkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTExMTEwMCAoMCkoMSkoMSkoMSkoMSkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTExMTEwMSAoMCkoMSkoMSkoMSkoMSkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTExMTExMCAoMCkoMSkoMSkoMSkoMSkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTExMTExMSAoMCkoMSkoMSkoMSkoMSkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAwMDAwMCAoMSkoMCkoMCkoMCkoMCkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAwMDAwMSAoMSkoMCkoMCkoMCkoMCkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAwMDAxMCAoMSkoMCkoMCkoMCkoMCkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAwMDAxMSAoMSkoMCkoMCkoMCkoMCkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAwMDEwMCAoMSkoMCkoMCkoMCkoMCkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAwMDEwMSAoMSkoMCkoMCkoMCkoMCkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAwMDExMCAoMSkoMCkoMCkoMCkoMCkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAwMDExMSAoMSkoMCkoMCkoMCkoMCkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAwMTAwMCAoMSkoMCkoMCkoMCkoMSkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAwMTAwMSAoMSkoMCkoMCkoMCkoMSkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAwMTAxMCAoMSkoMCkoMCkoMCkoMSkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAwMTAxMSAoMSkoMCkoMCkoMCkoMSkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAwMTEwMCAoMSkoMCkoMCkoMCkoMSkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAwMTEwMSAoMSkoMCkoMCkoMCkoMSkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAwMTExMCAoMSkoMCkoMCkoMCkoMSkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAwMTExMSAoMSkoMCkoMCkoMCkoMSkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAxMDAwMCAoMSkoMCkoMCkoMSkoMCkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAxMDAwMSAoMSkoMCkoMCkoMSkoMCkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAxMDAxMCAoMSkoMCkoMCkoMSkoMCkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAxMDAxMSAoMSkoMCkoMCkoMSkoMCkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAxMDEwMCAoMSkoMCkoMCkoMSkoMCkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAxMDEwMSAoMSkoMCkoMCkoMSkoMCkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAxMDExMCAoMSkoMCkoMCkoMSkoMCkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAxMDExMSAoMSkoMCkoMCkoMSkoMCkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAxMTAwMCAoMSkoMCkoMCkoMSkoMSkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAxMTAwMSAoMSkoMCkoMCkoMSkoMSkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAxMTAxMCAoMSkoMCkoMCkoMSkoMSkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAxMTAxMSAoMSkoMCkoMCkoMSkoMSkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAxMTEwMCAoMSkoMCkoMCkoMSkoMSkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAxMTEwMSAoMSkoMCkoMCkoMSkoMSkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAxMTExMCAoMSkoMCkoMCkoMSkoMSkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAxMTExMSAoMSkoMCkoMCkoMSkoMSkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDEwMDAwMCAoMSkoMCkoMSkoMCkoMCkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDEwMDAwMSAoMSkoMCkoMSkoMCkoMCkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDEwMDAxMCAoMSkoMCkoMSkoMCkoMCkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDEwMDAxMSAoMSkoMCkoMSkoMCkoMCkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDEwMDEwMCAoMSkoMCkoMSkoMCkoMCkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDEwMDEwMSAoMSkoMCkoMSkoMCkoMCkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDEwMDExMCAoMSkoMCkoMSkoMCkoMCkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDEwMDExMSAoMSkoMCkoMSkoMCkoMCkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDEwMTAwMCAoMSkoMCkoMSkoMCkoMSkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDEwMTAwMSAoMSkoMCkoMSkoMCkoMSkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDEwMTAxMCAoMSkoMCkoMSkoMCkoMSkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDEwMTAxMSAoMSkoMCkoMSkoMCkoMSkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDEwMTEwMCAoMSkoMCkoMSkoMCkoMSkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDEwMTEwMSAoMSkoMCkoMSkoMCkoMSkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDEwMTExMCAoMSkoMCkoMSkoMCkoMSkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDEwMTExMSAoMSkoMCkoMSkoMCkoMSkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDExMDAwMCAoMSkoMCkoMSkoMSkoMCkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDExMDAwMSAoMSkoMCkoMSkoMSkoMCkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDExMDAxMCAoMSkoMCkoMSkoMSkoMCkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDExMDAxMSAoMSkoMCkoMSkoMSkoMCkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDExMDEwMCAoMSkoMCkoMSkoMSkoMCkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDExMDEwMSAoMSkoMCkoMSkoMSkoMCkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDExMDExMCAoMSkoMCkoMSkoMSkoMCkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDExMDExMSAoMSkoMCkoMSkoMSkoMCkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDExMTAwMCAoMSkoMCkoMSkoMSkoMSkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDExMTAwMSAoMSkoMCkoMSkoMSkoMSkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDExMTAxMCAoMSkoMCkoMSkoMSkoMSkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDExMTAxMSAoMSkoMCkoMSkoMSkoMSkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDExMTEwMCAoMSkoMCkoMSkoMSkoMSkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDExMTEwMSAoMSkoMCkoMSkoMSkoMSkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDExMTExMCAoMSkoMCkoMSkoMSkoMSkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDExMTExMSAoMSkoMCkoMSkoMSkoMSkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAwMDAwMCAoMSkoMSkoMCkoMCkoMCkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAwMDAwMSAoMSkoMSkoMCkoMCkoMCkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAwMDAxMCAoMSkoMSkoMCkoMCkoMCkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAwMDAxMSAoMSkoMSkoMCkoMCkoMCkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAwMDEwMCAoMSkoMSkoMCkoMCkoMCkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAwMDEwMSAoMSkoMSkoMCkoMCkoMCkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAwMDExMCAoMSkoMSkoMCkoMCkoMCkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAwMDExMSAoMSkoMSkoMCkoMCkoMCkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAwMTAwMCAoMSkoMSkoMCkoMCkoMSkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAwMTAwMSAoMSkoMSkoMCkoMCkoMSkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAwMTAxMCAoMSkoMSkoMCkoMCkoMSkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAwMTAxMSAoMSkoMSkoMCkoMCkoMSkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAwMTEwMCAoMSkoMSkoMCkoMCkoMSkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAwMTEwMSAoMSkoMSkoMCkoMCkoMSkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAwMTExMCAoMSkoMSkoMCkoMCkoMSkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAwMTExMSAoMSkoMSkoMCkoMCkoMSkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAxMDAwMCAoMSkoMSkoMCkoMSkoMCkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAxMDAwMSAoMSkoMSkoMCkoMSkoMCkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAxMDAxMCAoMSkoMSkoMCkoMSkoMCkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAxMDAxMSAoMSkoMSkoMCkoMSkoMCkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAxMDEwMCAoMSkoMSkoMCkoMSkoMCkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAxMDEwMSAoMSkoMSkoMCkoMSkoMCkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAxMDExMCAoMSkoMSkoMCkoMSkoMCkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAxMDExMSAoMSkoMSkoMCkoMSkoMCkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAxMTAwMCAoMSkoMSkoMCkoMSkoMSkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAxMTAwMSAoMSkoMSkoMCkoMSkoMSkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAxMTAxMCAoMSkoMSkoMCkoMSkoMSkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAxMTAxMSAoMSkoMSkoMCkoMSkoMSkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAxMTEwMCAoMSkoMSkoMCkoMSkoMSkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAxMTEwMSAoMSkoMSkoMCkoMSkoMSkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAxMTExMCAoMSkoMSkoMCkoMSkoMSkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAxMTExMSAoMSkoMSkoMCkoMSkoMSkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTEwMDAwMCAoMSkoMSkoMSkoMCkoMCkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTEwMDAwMSAoMSkoMSkoMSkoMCkoMCkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTEwMDAxMCAoMSkoMSkoMSkoMCkoMCkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTEwMDAxMSAoMSkoMSkoMSkoMCkoMCkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTEwMDEwMCAoMSkoMSkoMSkoMCkoMCkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTEwMDEwMSAoMSkoMSkoMSkoMCkoMCkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTEwMDExMCAoMSkoMSkoMSkoMCkoMCkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTEwMDExMSAoMSkoMSkoMSkoMCkoMCkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTEwMTAwMCAoMSkoMSkoMSkoMCkoMSkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTEwMTAwMSAoMSkoMSkoMSkoMCkoMSkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTEwMTAxMCAoMSkoMSkoMSkoMCkoMSkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTEwMTAxMSAoMSkoMSkoMSkoMCkoMSkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTEwMTEwMCAoMSkoMSkoMSkoMCkoMSkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTEwMTEwMSAoMSkoMSkoMSkoMCkoMSkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTEwMTExMCAoMSkoMSkoMSkoMCkoMSkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTEwMTExMSAoMSkoMSkoMSkoMCkoMSkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTExMDAwMCAoMSkoMSkoMSkoMSkoMCkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTExMDAwMSAoMSkoMSkoMSkoMSkoMCkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTExMDAxMCAoMSkoMSkoMSkoMSkoMCkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTExMDAxMSAoMSkoMSkoMSkoMSkoMCkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTExMDEwMCAoMSkoMSkoMSkoMSkoMCkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTExMDEwMSAoMSkoMSkoMSkoMSkoMCkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTExMDExMCAoMSkoMSkoMSkoMSkoMCkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTExMDExMSAoMSkoMSkoMSkoMSkoMCkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTExMTAwMCAoMSkoMSkoMSkoMSkoMSkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTExMTAwMSAoMSkoMSkoMSkoMSkoMSkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTExMTAxMCAoMSkoMSkoMSkoMSkoMSkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTExMTAxMSAoMSkoMSkoMSkoMSkoMSkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTExMTEwMCAoMSkoMSkoMSkoMSkoMSkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTExMTEwMSAoMSkoMSkoMSkoMSkoMSkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTExMTExMCAoMSkoMSkoMSkoMSkoMSkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTExMTExMSAoMSkoMSkoMSkoMSkoMSkoMSkoMSkoMSksIAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9jb21wYXJlX3BvaW50ZWVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9jb21wYXJlX3BvaW50ZWVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTFmMWRkZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvY29tcGFyZV9wb2ludGVlcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDMsIEZlcm5hbmRvIEx1aXMgQ2FjY2lvbGEgQ2FyYmFsbGFsLgotLy8KLS8vIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL29wdGlvbmFsIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLS8vIFlvdSBhcmUgd2VsY29tZSB0byBjb250YWN0IHRoZSBhdXRob3IgYXQ6Ci0vLyAgZmVybmFuZG9fY2FjY2lvbGFAaG90bWFpbC5jb20KLS8vCi0jaWZuZGVmIE5ETkJPT1NUX1VUSUxJVFlfQ09NUEFSRV9QT0lOVEVFU18yNUFHTzIwMDNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1VUSUxJVFlfQ09NUEFSRV9QT0lOVEVFU18yNUFHTzIwMDNfSFBQCi0KLSNpbmNsdWRlPGZ1bmN0aW9uYWw+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLS8vIHRlbXBsYXRlPGNsYXNzIE9QPiBib29sIGVxdWFsX3BvaW50ZWVzKE9QIGNvbnN0JiB4LCBPUCBjb25zdCYgeSk7Ci0vLyB0ZW1wbGF0ZTxjbGFzcyBPUD4gc3RydWN0IGVxdWFsX3BvaW50ZWVzX3Q7Ci0vLwotLy8gQmVpbmcgT1AgYSBtb2RlbCBvZiBPcHRpb25hbFBvaW50ZWUgKGVpdGhlciBhIHBvaW50ZXIgb3IgYW4gb3B0aW9uYWwpOgotLy8KLS8vIElmIGJvdGggeCBhbmQgeSBoYXZlIHZhbGlkIHBvaW50ZWVzLCByZXR1cm5zIHRoZSByZXN1bHQgb2YgKCp4ID09ICp5KQotLy8gSWYgb25seSBvbmUgaGFzIGEgdmFsaWQgcG9pbnRlZSwgcmV0dXJucyBmYWxzZS4KLS8vIElmIG5vbmUgaGF2ZSB2YWxpZCBwb2ludGVlcywgcmV0dXJucyB0cnVlLgotLy8gTm8tdGhyb3cKLXRlbXBsYXRlPGNsYXNzIE9wdGlvbmFsUG9pbnRlZT4KLWlubGluZQotYm9vbCBlcXVhbF9wb2ludGVlcyAoIE9wdGlvbmFsUG9pbnRlZSBjb25zdCYgeCwgT3B0aW9uYWxQb2ludGVlIGNvbnN0JiB5ICkKLXsKLSAgcmV0dXJuICgheCkgIT0gKCF5KSA/IGZhbHNlIDogKCAheCA/IHRydWUgOiAoKngpID09ICgqeSkgKSA7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIE9wdGlvbmFsUG9pbnRlZT4KLXN0cnVjdCBlcXVhbF9wb2ludGVlc190IDogc3RkOjpiaW5hcnlfZnVuY3Rpb248T3B0aW9uYWxQb2ludGVlLE9wdGlvbmFsUG9pbnRlZSxib29sPgotewotICBib29sIG9wZXJhdG9yKCkgKCBPcHRpb25hbFBvaW50ZWUgY29uc3QmIHgsIE9wdGlvbmFsUG9pbnRlZSBjb25zdCYgeSApIGNvbnN0Ci0gICAgeyByZXR1cm4gZXF1YWxfcG9pbnRlZXMoeCx5KSA7IH0KLX0gOwotCi0vLyB0ZW1wbGF0ZTxjbGFzcyBPUD4gYm9vbCBsZXNzX3BvaW50ZWVzKE9QIGNvbnN0JiB4LCBPUCBjb25zdCYgeSk7Ci0vLyB0ZW1wbGF0ZTxjbGFzcyBPUD4gc3RydWN0IGxlc3NfcG9pbnRlZXNfdDsKLS8vCi0vLyBCZWluZyBPUCBhIG1vZGVsIG9mIE9wdGlvbmFsUG9pbnRlZSAoZWl0aGVyIGEgcG9pbnRlciBvciBhbiBvcHRpb25hbCk6Ci0vLwotLy8gSWYgeSBoYXMgbm90IGEgdmFsaWQgcG9pbnRlZSwgcmV0dXJucyBmYWxzZS4KLS8vIEVsc2VJZiB4IGhhcyBub3QgYSB2YWxpZCBwb2ludGVlLCByZXR1cm5zIHRydWUuCi0vLyBFbHNlSWYgYm90aCB4IGFuZCB5IGhhdmUgdmFsaWQgcG9pbnRlZXMsIHJldHVybnMgdGhlIHJlc3VsdCBvZiAoKnggPCAqeSkKLS8vIE5vLXRocm93Ci10ZW1wbGF0ZTxjbGFzcyBPcHRpb25hbFBvaW50ZWU+Ci1pbmxpbmUKLWJvb2wgbGVzc19wb2ludGVlcyAoIE9wdGlvbmFsUG9pbnRlZSBjb25zdCYgeCwgT3B0aW9uYWxQb2ludGVlIGNvbnN0JiB5ICkKLXsKLSAgcmV0dXJuICF5ID8gZmFsc2UgOiAoICF4ID8gdHJ1ZSA6ICgqeCkgPCAoKnkpICkgOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBPcHRpb25hbFBvaW50ZWU+Ci1zdHJ1Y3QgbGVzc19wb2ludGVlc190IDogc3RkOjpiaW5hcnlfZnVuY3Rpb248T3B0aW9uYWxQb2ludGVlLE9wdGlvbmFsUG9pbnRlZSxib29sPgotewotICBib29sIG9wZXJhdG9yKCkgKCBPcHRpb25hbFBvaW50ZWUgY29uc3QmIHgsIE9wdGlvbmFsUG9pbnRlZSBjb25zdCYgeSApIGNvbnN0Ci0gICAgeyByZXR1cm4gbGVzc19wb2ludGVlcyh4LHkpIDsgfQotfSA7Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvZGVjbHZhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvZGVjbHZhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5ZTFhMzUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2RlY2x2YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLy8gIGNvbW1vbl90eXBlLmhwcCAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCAyMDEwIFZpY2VudGUgSi4gQm90ZXQgRXNjcmliYQotCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFX1RSQUlUU19FWFRfREVDTFZBTF9fSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVfVFJBSVRTX0VYVF9ERUNMVkFMX19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfcnZhbHVlX3JlZmVyZW5jZS5ocHA+Ci0vLyNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfbHZhbHVlX3JlZmVyZW5jZS5ocHA+Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICBDKyswMyBpbXBsZW1lbnRhdGlvbiBvZiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0dGVuIGJ5IFZpY2VudGUgSi4gQm90ZXQgRXNjcmliYSAgICAgICAgICAgICAgIC8vCi0vL34gMjAuMy40IEZ1bmN0aW9uIHRlbXBsYXRlIGRlY2x2YWwgW2RlY2x2YWxdCi0vL34gMSBUaGUgbGlicmFyeSBwcm92aWRlcyB0aGUgZnVuY3Rpb24gdGVtcGxhdGUgZGVjbHZhbCB0byBzaW1wbGlmeSB0aGUgZGVmaW5pdGlvbiBvZiBleHByZXNzaW9ucyB3aGljaCBvY2N1ciBhcwotLy9+IHVuZXZhbHVhdGVkIG9wZXJhbmRzLgotLy9+IDIgUmVtYXJrczogSWYgdGhpcyBmdW5jdGlvbiBpcyB1c2VkLCB0aGUgcHJvZ3JhbSBpcyBpbGwtZm9ybWVkLgotLy9+IDMgUmVtYXJrczogVGhlIHRlbXBsYXRlIHBhcmFtZXRlciBUIG9mIGRlY2x2YWwgbWF5IGJlIGFuIGluY29tcGxldGUgdHlwZS4KLS8vfiBbIEV4YW1wbGU6Ci0KLS8vfiB0ZW1wbGF0ZSA8Y2xhc3MgVG8sIGNsYXNzIEZyb20+Ci0vL34gZGVjbHR5cGUoc3RhdGljX2Nhc3Q8VG8+KGRlY2x2YWw8RnJvbT4oKSkpIGNvbnZlcnQoRnJvbSYmKTsKLQotLy9+IGRlY2xhcmVzIGEgZnVuY3Rpb24gdGVtcGxhdGUgY29udmVydCB3aGljaCBvbmx5IHBhcnRpY2lwYXRzIGluIG92ZXJsb2FkaW5nIGlmIHRoZSB0eXBlIEZyb20gY2FuIGJlCi0vL34gZXhwbGljaXRseSBjb252ZXJ0ZWQgdG8gdHlwZSBUby4gRm9yIGFub3RoZXIgZXhhbXBsZSBzZWUgY2xhc3MgdGVtcGxhdGUgY29tbW9uX3R5cGUgKDIwLjcuNi42KS4gl2VuZAotLy9+IGV4YW1wbGUgXQotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLS8vI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1JWQUxVRV9SRUZFUkVOQ0VTKQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHR5cGVuYW1lIGFkZF9ydmFsdWVfcmVmZXJlbmNlPFQ+Ojp0eXBlIGRlY2x2YWwoKSBORE5CT09TVF9OT0VYQ0VQVDsgLy8gYXMgdW5ldmFsdWF0ZWQgb3BlcmFuZAotLy8jZWxzZQotLy8gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0vLyAgICB0eXBlbmFtZSBhZGRfbHZhbHVlX3JlZmVyZW5jZTxUPjo6dHlwZSBkZWNsdmFsKCkgTkROQk9PU1RfTk9FWENFUFQ7IC8vIGFzIHVuZXZhbHVhdGVkIG9wZXJhbmQKLS8vI2VuZGlmCi19ICAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyBORE5CT09TVF9UWVBFX1RSQUlUU19FWFRfREVDTFZBTF9fSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvZGV0YWlsL2luX3BsYWNlX2ZhY3RvcnlfcHJlZml4LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9kZXRhaWwvaW5fcGxhY2VfZmFjdG9yeV9wcmVmaXguaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYzRjNWFjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9kZXRhaWwvaW5fcGxhY2VfZmFjdG9yeV9wcmVmaXguaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDAzLCBGZXJuYW5kbyBMdWlzIENhY2Npb2xhIENhcmJhbGxhbC4KLS8vIENvcHlyaWdodCAoQykgMjAwNywgVG9iaWFzIFNjaHdpbmdlci4KLS8vCi0vLyBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9vcHRpb25hbCBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0vLyBZb3UgYXJlIHdlbGNvbWUgdG8gY29udGFjdCB0aGUgYXV0aG9yIGF0OgotLy8gIGZlcm5hbmRvX2NhY2Npb2xhQGhvdG1haWwuY29tCi0vLwotI2lmbmRlZiBORE5CT09TVF9VVElMSVRZX0RFVEFJTF9JTlBMQUNFX0ZBQ1RPUllfUFJFRklYXzA0QVBSMjAwN19IUFAKLSNkZWZpbmUgTkROQk9PU1RfVVRJTElUWV9ERVRBSUxfSU5QTEFDRV9GQUNUT1JZX1BSRUZJWF8wNEFQUjIwMDdfSFBQCi0KLSNpbmNsdWRlIDxuZXc+Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9wdW5jdHVhdGlvbi9wYXJlbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9pdGVyYXRlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9yZXBlYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX2JpbmFyeV9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fdHJhaWxpbmdfcGFyYW1zLmhwcD4KLQotI2RlZmluZSBORE5CT09TVF9ERUZJTkVfSU5QTEFDRV9GQUNUT1JZX0NMQVNTX01FTUJFUl9JTklUKHosbixfKSBORE5CT09TVF9QUF9DQVQobV9hLG4pIE5ETkJPT1NUX1BQX0xQQVJFTigpIE5ETkJPT1NUX1BQX0NBVChhLG4pIE5ETkJPT1NUX1BQX1JQQVJFTigpCi0jZGVmaW5lIE5ETkJPT1NUX0RFRklORV9JTlBMQUNFX0ZBQ1RPUllfQ0xBU1NfTUVNQkVSX0RFQ0woeixuLF8pIE5ETkJPT1NUX1BQX0NBVChBLG4pIGNvbnN0JiBORE5CT09TVF9QUF9DQVQobV9hLG4pOwotCi0jZGVmaW5lIE5ETkJPT1NUX01BWF9JTlBMQUNFX0ZBQ1RPUllfQVJJVFkgMTAKLQotI3VuZGVmIE5ETkJPT1NUX1VUSUxJVFlfREVUQUlMX0lOUExBQ0VfRkFDVE9SWV9TVUZGSVhfMDRBUFIyMDA3X0hQUAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2RldGFpbC9pbl9wbGFjZV9mYWN0b3J5X3N1ZmZpeC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvZGV0YWlsL2luX3BsYWNlX2ZhY3Rvcnlfc3VmZml4LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjc2MmRhMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvZGV0YWlsL2luX3BsYWNlX2ZhY3Rvcnlfc3VmZml4LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwMywgRmVybmFuZG8gTHVpcyBDYWNjaW9sYSBDYXJiYWxsYWwuCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDcsIFRvYmlhcyBTY2h3aW5nZXIuCi0vLwotLy8gVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvb3B0aW9uYWwgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotLy8gWW91IGFyZSB3ZWxjb21lIHRvIGNvbnRhY3QgdGhlIGF1dGhvciBhdDoKLS8vICBmZXJuYW5kb19jYWNjaW9sYUBob3RtYWlsLmNvbQotLy8KLSNpZm5kZWYgTkROQk9PU1RfVVRJTElUWV9ERVRBSUxfSU5QTEFDRV9GQUNUT1JZX1NVRkZJWF8wNEFQUjIwMDdfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1VUSUxJVFlfREVUQUlMX0lOUExBQ0VfRkFDVE9SWV9TVUZGSVhfMDRBUFIyMDA3X0hQUAotCi0jdW5kZWYgTkROQk9PU1RfREVGSU5FX0lOUExBQ0VfRkFDVE9SWV9DTEFTU19NRU1CRVJfSU5JVAotI3VuZGVmIE5ETkJPT1NUX0RFRklORV9JTlBMQUNFX0ZBQ1RPUllfQ0xBU1NfTUVNQkVSX0RFQ0wKLSN1bmRlZiBORE5CT09TVF9NQVhfSU5QTEFDRV9GQUNUT1JZX0FSSVRZCi0KLSN1bmRlZiBORE5CT09TVF9VVElMSVRZX0RFVEFJTF9JTlBMQUNFX0ZBQ1RPUllfUFJFRklYXzA0QVBSMjAwN19IUFAKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9kZXRhaWwvcmVzdWx0X29mX2l0ZXJhdGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2RldGFpbC9yZXN1bHRfb2ZfaXRlcmF0ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2Mjk4YTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2RldGFpbC9yZXN1bHRfb2ZfaXRlcmF0ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMDggKzAsMCBAQAotLy8gQm9vc3QgcmVzdWx0X29mIGxpYnJhcnkKLQotLy8gIENvcHlyaWdodCBEb3VnbGFzIEdyZWdvciAyMDA0LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIENvcHlyaWdodCBEYW5pZWwgV2Fsa2VyLCBFcmljIE5pZWJsZXIsIE1pY2hlbCBNb3JpbiAyMDA4LTIwMTIuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvcgotLy8gIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdXRpbGl0eQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0lTX0lURVJBVElORykKLSMgZXJyb3IgQm9vc3QgcmVzdWx0X29mIC0gZG8gbm90IGluY2x1ZGUgdGhpcyBmaWxlIQotI2VuZGlmCi0KLS8vIENXUHJvOCByZXF1aXJlcyBhbiBhcmd1bWVudCBpbiBhIGZ1bmN0aW9uIHR5cGUgc3BlY2lhbGl6YXRpb24KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDMwMDIpKSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT04oKSA9PSAwCi0jIGRlZmluZSBORE5CT09TVF9SRVNVTFRfT0ZfQVJHUyB2b2lkCi0jZWxzZQotIyBkZWZpbmUgTkROQk9PU1RfUkVTVUxUX09GX0FSR1MgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksVCkKLSNlbmRpZgotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NTEpKQotdGVtcGxhdGU8dHlwZW5hbWUgRiBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSx0eXBlbmFtZSBUKT4KLXN0cnVjdCB0cjFfcmVzdWx0X29mPEYoTkROQk9PU1RfUkVTVUxUX09GX0FSR1MpPgotICAgIDogbXBsOjppZl88Ci0gICAgICAgICAgbXBsOjpvcl88IGlzX3BvaW50ZXI8Rj4sIGlzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyPEY+ID4KLSAgICAgICAgLCBuZG5ib29zdDo6ZGV0YWlsOjp0cjFfcmVzdWx0X29mX2ltcGw8Ci0gICAgICAgICAgICB0eXBlbmFtZSByZW1vdmVfY3Y8Rj46OnR5cGUsCi0gICAgICAgICAgICB0eXBlbmFtZSByZW1vdmVfY3Y8Rj46OnR5cGUoTkROQk9PU1RfUkVTVUxUX09GX0FSR1MpLAotICAgICAgICAgICAgKG5kbmJvb3N0OjpkZXRhaWw6Omhhc19yZXN1bHRfdHlwZTxGPjo6dmFsdWUpPgotICAgICAgICAsIG5kbmJvb3N0OjpkZXRhaWw6OnRyMV9yZXN1bHRfb2ZfaW1wbDwKLSAgICAgICAgICAgIEYsCi0gICAgICAgICAgICBGKE5ETkJPT1NUX1JFU1VMVF9PRl9BUkdTKSwKLSAgICAgICAgICAgIChuZG5ib29zdDo6ZGV0YWlsOjpoYXNfcmVzdWx0X3R5cGU8Rj46OnZhbHVlKT4gPjo6dHlwZSB7IH07Ci0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX1JFU1VMVF9PRl9VU0VfREVDTFRZUEUKLQotLy8gVXNlcyBkZWNsdmFsIGZvbGxvd2luZyBOMzIyNSAyMC43LjcuNiB3aGVuIEYgaXMgbm90IGEgcG9pbnRlci4KLXRlbXBsYXRlPHR5cGVuYW1lIEYgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksdHlwZW5hbWUgVCk+Ci1zdHJ1Y3QgcmVzdWx0X29mPEYoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksVCkpPgotICAgIDogbXBsOjppZl88Ci0gICAgICAgICAgaXNfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXI8Rj4KLSAgICAgICAgLCBkZXRhaWw6OnRyMV9yZXN1bHRfb2ZfaW1wbDwKLSAgICAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV9jdjxGPjo6dHlwZSwKLSAgICAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV9jdjxGPjo6dHlwZShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSxUKSksIGZhbHNlCi0gICAgICAgICAgPgotICAgICAgICAsIGRldGFpbDo6Y3BwMHhfcmVzdWx0X29mX2ltcGw8Ci0gICAgICAgICAgICAgIEYoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksVCkpCi0gICAgICAgICAgPgotICAgICAgPjo6dHlwZQote307Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0jaWZkZWYgTkROQk9PU1RfTk9fU0ZJTkFFX0VYUFIKLQotdGVtcGxhdGU8dHlwZW5hbWUgRj4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQocmVzdWx0X29mX2NhbGxhYmxlX2Z1bl8yXywgTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkpOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLCB0eXBlbmFtZSBUKT4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQocmVzdWx0X29mX2NhbGxhYmxlX2Z1bl8yXywgTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkpPFIoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksIFQpKT4gewotICAgIFIgb3BlcmF0b3IoKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSwgVCkpIGNvbnN0OwotICAgIHR5cGVkZWYgcmVzdWx0X29mX3ByaXZhdGVfdHlwZSBjb25zdCAmKCpwZm5fdCkoLi4uKTsKLSAgICBvcGVyYXRvciBwZm5fdCgpIGNvbnN0IHZvbGF0aWxlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRj4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQocmVzdWx0X29mX2NhbGxhYmxlX2Z1bl8sIE5ETkJPT1NUX1BQX0lURVJBVElPTigpKTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRj4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQocmVzdWx0X29mX2NhbGxhYmxlX2Z1bl8sIE5ETkJPT1NUX1BQX0lURVJBVElPTigpKTxGICo+Ci0gIDogTkROQk9PU1RfUFBfQ0FUKHJlc3VsdF9vZl9jYWxsYWJsZV9mdW5fMl8sIE5ETkJPT1NUX1BQX0lURVJBVElPTigpKTxGPgote307Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEY+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKHJlc3VsdF9vZl9jYWxsYWJsZV9mdW5fLCBORE5CT09TVF9QUF9JVEVSQVRJT04oKSk8RiAmPgotICA6IE5ETkJPT1NUX1BQX0NBVChyZXN1bHRfb2ZfY2FsbGFibGVfZnVuXzJfLCBORE5CT09TVF9QUF9JVEVSQVRJT04oKSk8Rj4KLXt9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChyZXN1bHRfb2Zfc2VsZWN0X2NhbGxfd3JhcHBlcl90eXBlXywgTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkpCi0gIDogbXBsOjpldmFsX2lmPAotICAgICAgICBpc19jbGFzczx0eXBlbmFtZSByZW1vdmVfcmVmZXJlbmNlPEY+Ojp0eXBlPiwKLSAgICAgICAgcmVzdWx0X29mX3dyYXBfY2FsbGFibGVfY2xhc3M8Rj4sCi0gICAgICAgIG1wbDo6aWRlbnRpdHk8TkROQk9PU1RfUFBfQ0FUKHJlc3VsdF9vZl9jYWxsYWJsZV9mdW5fLCBORE5CT09TVF9QUF9JVEVSQVRJT04oKSk8dHlwZW5hbWUgcmVtb3ZlX2N2PEY+Ojp0eXBlPiA+Ci0gICAgPgote307Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEYgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksIHR5cGVuYW1lIFQpPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChyZXN1bHRfb2ZfaXNfY2FsbGFibGVfLCBORE5CT09TVF9QUF9JVEVSQVRJT04oKSkgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgTkROQk9PU1RfUFBfQ0FUKHJlc3VsdF9vZl9zZWxlY3RfY2FsbF93cmFwcGVyX3R5cGVfLCBORE5CT09TVF9QUF9JVEVSQVRJT04oKSk8Rj46OnR5cGUgd3JhcHBlcl90OwotICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gKAotICAgICAgICBzaXplb2YocmVzdWx0X29mX25vX3R5cGUpID09IHNpemVvZihkZXRhaWw6OnJlc3VsdF9vZl9pc19wcml2YXRlX3R5cGUoCi0gICAgICAgICAgICAobmRuYm9vc3Q6OmRlY2x2YWw8d3JhcHBlcl90PigpKE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSwgbmRuYm9vc3Q6OmRlY2x2YWw8VCwgPigpIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVCkpLCByZXN1bHRfb2Zfd2VpcmRfdHlwZSgpKQotICAgICAgICApKQotICAgICk7Ci0gICAgdHlwZWRlZiBtcGw6OmJvb2xfPHZhbHVlPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRiBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSx0eXBlbmFtZSBUKT4KLXN0cnVjdCBjcHAweF9yZXN1bHRfb2ZfaW1wbDxGKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLFQpKSwgdHJ1ZT4KLSAgICA6IGxhenlfZW5hYmxlX2lmPAotICAgICAgICAgIE5ETkJPT1NUX1BQX0NBVChyZXN1bHRfb2ZfaXNfY2FsbGFibGVfLCBORE5CT09TVF9QUF9JVEVSQVRJT04oKSk8RiBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSwgVCk+Ci0gICAgICAgICwgY3BwMHhfcmVzdWx0X29mX2ltcGw8RihORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSxUKSksIGZhbHNlPgotICAgICAgPgote307Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEYgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksdHlwZW5hbWUgVCk+Ci1zdHJ1Y3QgY3BwMHhfcmVzdWx0X29mX2ltcGw8RihORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSxUKSksIGZhbHNlPgotewotICB0eXBlZGVmIGRlY2x0eXBlKAotICAgIG5kbmJvb3N0OjpkZWNsdmFsPEY+KCkoCi0gICAgICBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksIG5kbmJvb3N0OjpkZWNsdmFsPFQsID4oKSBORE5CT09TVF9QUF9JTlRFUkNFUFQpCi0gICAgKQotICApIHR5cGU7Ci19OwotCi0jZWxzZSAvLyBORE5CT09TVF9OT19TRklOQUVfRVhQUgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLHR5cGVuYW1lIFQpPgotc3RydWN0IGNwcDB4X3Jlc3VsdF9vZl9pbXBsPEYoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksVCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIHJlc3VsdF9vZl9hbHdheXNfdm9pZDxkZWNsdHlwZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmRlY2x2YWw8Rj4oKSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSwgbmRuYm9vc3Q6OmRlY2x2YWw8VCwgPigpIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICk+Ojp0eXBlPiB7Ci0gIHR5cGVkZWYgZGVjbHR5cGUoCi0gICAgbmRuYm9vc3Q6OmRlY2x2YWw8Rj4oKSgKLSAgICAgIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSwgbmRuYm9vc3Q6OmRlY2x2YWw8VCwgPigpIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVCkKLSAgICApCi0gICkgdHlwZTsKLX07Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19TRklOQUVfRVhQUgotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotI2Vsc2UgLy8gZGVmaW5lZChORE5CT09TVF9SRVNVTFRfT0ZfVVNFX0RFQ0xUWVBFKQotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NTEpKQotdGVtcGxhdGU8dHlwZW5hbWUgRiBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSx0eXBlbmFtZSBUKT4KLXN0cnVjdCByZXN1bHRfb2Y8RihORE5CT09TVF9SRVNVTFRfT0ZfQVJHUyk+Ci0gICAgOiB0cjFfcmVzdWx0X29mPEYoTkROQk9PU1RfUkVTVUxUX09GX0FSR1MpPiB7IH07Ci0jZW5kaWYKLQotI2VuZGlmIC8vIGRlZmluZWQoTkROQk9PU1RfUkVTVUxUX09GX1VTRV9ERUNMVFlQRSkKLQotI3VuZGVmIE5ETkJPT1NUX1JFU1VMVF9PRl9BUkdTCi0KLSNpZiBORE5CT09TVF9QUF9JVEVSQVRJT04oKSA+PSAxCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCAgdHlwZW5hbWUgRkFyZ3MgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksdHlwZW5hbWUgVCk+Ci1zdHJ1Y3QgdHIxX3Jlc3VsdF9vZl9pbXBsPFIgKCopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLFQpKSwgRkFyZ3MsIGZhbHNlPgotewotICB0eXBlZGVmIFIgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsICB0eXBlbmFtZSBGQXJncyBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSx0eXBlbmFtZSBUKT4KLXN0cnVjdCB0cjFfcmVzdWx0X29mX2ltcGw8UiAoJikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksVCkpLCBGQXJncywgZmFsc2U+Ci17Ci0gIHR5cGVkZWYgUiB0eXBlOwotfTsKLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTUxKSkKLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEZBcmdzIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLHR5cGVuYW1lIFQpPgotc3RydWN0IHRyMV9yZXN1bHRfb2ZfaW1wbDxSIChUMDo6KikKLSAgICAgICAgICAgICAgICAgICAgIChORE5CT09TVF9QUF9FTlVNX1NISUZURURfUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLFQpKSwKLSAgICAgICAgICAgICAgICAgRkFyZ3MsIGZhbHNlPgotewotICB0eXBlZGVmIFIgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEZBcmdzIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLHR5cGVuYW1lIFQpPgotc3RydWN0IHRyMV9yZXN1bHRfb2ZfaW1wbDxSIChUMDo6KikKLSAgICAgICAgICAgICAgICAgICAgIChORE5CT09TVF9QUF9FTlVNX1NISUZURURfUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLFQpKQotICAgICAgICAgICAgICAgICAgICAgY29uc3QsCi0gICAgICAgICAgICAgICAgIEZBcmdzLCBmYWxzZT4KLXsKLSAgdHlwZWRlZiBSIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBGQXJncyBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSx0eXBlbmFtZSBUKT4KLXN0cnVjdCB0cjFfcmVzdWx0X29mX2ltcGw8UiAoVDA6OiopCi0gICAgICAgICAgICAgICAgICAgICAoTkROQk9PU1RfUFBfRU5VTV9TSElGVEVEX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSxUKSkKLSAgICAgICAgICAgICAgICAgICAgIHZvbGF0aWxlLAotICAgICAgICAgICAgICAgICBGQXJncywgZmFsc2U+Ci17Ci0gIHR5cGVkZWYgUiB0eXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgRkFyZ3MgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksdHlwZW5hbWUgVCk+Ci1zdHJ1Y3QgdHIxX3Jlc3VsdF9vZl9pbXBsPFIgKFQwOjoqKQotICAgICAgICAgICAgICAgICAgICAgKE5ETkJPT1NUX1BQX0VOVU1fU0hJRlRFRF9QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksVCkpCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2xhdGlsZSwKLSAgICAgICAgICAgICAgICAgRkFyZ3MsIGZhbHNlPgotewotICB0eXBlZGVmIFIgdHlwZTsKLX07Ci0jZW5kaWYKLQotfQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvZW5hYmxlX2lmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9lbmFibGVfaWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNDEyOGQ2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9lbmFibGVfaWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE5ICswLDAgQEAKLS8vIEJvb3N0IGVuYWJsZV9pZiBsaWJyYXJ5Ci0KLS8vIENvcHlyaWdodCAyMDAzIChjKSBUaGUgVHJ1c3RlZXMgb2YgSW5kaWFuYSBVbml2ZXJzaXR5LgotCi0vLyBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gICAgQXV0aG9yczogSmFha2tvIEphcnZpIChqYWphcnZpIGF0IG9zbC5pdS5lZHUpCi0vLyAgICAgICAgICAgICBKZXJlbWlhaCBXaWxsY29jayAoamV3aWxsY28gYXQgb3NsLml1LmVkdSkKLS8vICAgICAgICAgICAgIEFuZHJldyBMdW1zZGFpbmUgKGx1bXMgYXQgb3NsLml1LmVkdSkKLQotCi0jaWZuZGVmIE5ETkJPT1NUX1VUSUxJVFlfRU5BQkxFX0lGX0hQUAotI2RlZmluZSBORE5CT09TVF9VVElMSVRZX0VOQUJMRV9JRl9IUFAKLQotI2luY2x1ZGUgIm5kbmJvb3N0L2NvbmZpZy5ocHAiCi0KLS8vIEV2ZW4gdGhlIGRlZmluaXRpb24gb2YgZW5hYmxlX2lmIGNhdXNlcyBwcm9ibGVtcyBvbiBzb21lIGNvbXBpbGVycywKLS8vIHNvIGl0J3MgbWFjcm9lZCBvdXQgZm9yIGFsbCBjb21waWxlcnMgdGhhdCBkbyBub3Qgc3VwcG9ydCBTRklOQUUKLQotI2lmbmRlZiBORE5CT09TVF9OT19TRklOQUUKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gCi0gIHRlbXBsYXRlIDxib29sIEIsIGNsYXNzIFQgPSB2b2lkPgotICBzdHJ1Y3QgZW5hYmxlX2lmX2MgewotICAgIHR5cGVkZWYgVCB0eXBlOwotICB9OwotCi0gIHRlbXBsYXRlIDxjbGFzcyBUPgotICBzdHJ1Y3QgZW5hYmxlX2lmX2M8ZmFsc2UsIFQ+IHt9OwotCi0gIHRlbXBsYXRlIDxjbGFzcyBDb25kLCBjbGFzcyBUID0gdm9pZD4gCi0gIHN0cnVjdCBlbmFibGVfaWYgOiBwdWJsaWMgZW5hYmxlX2lmX2M8Q29uZDo6dmFsdWUsIFQ+IHt9OwotCi0gIHRlbXBsYXRlIDxib29sIEIsIGNsYXNzIFQ+Ci0gIHN0cnVjdCBsYXp5X2VuYWJsZV9pZl9jIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnR5cGUgdHlwZTsKLSAgfTsKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgc3RydWN0IGxhenlfZW5hYmxlX2lmX2M8ZmFsc2UsIFQ+IHt9OwotCi0gIHRlbXBsYXRlIDxjbGFzcyBDb25kLCBjbGFzcyBUPiAKLSAgc3RydWN0IGxhenlfZW5hYmxlX2lmIDogcHVibGljIGxhenlfZW5hYmxlX2lmX2M8Q29uZDo6dmFsdWUsIFQ+IHt9OwotCi0KLSAgdGVtcGxhdGUgPGJvb2wgQiwgY2xhc3MgVCA9IHZvaWQ+Ci0gIHN0cnVjdCBkaXNhYmxlX2lmX2MgewotICAgIHR5cGVkZWYgVCB0eXBlOwotICB9OwotCi0gIHRlbXBsYXRlIDxjbGFzcyBUPgotICBzdHJ1Y3QgZGlzYWJsZV9pZl9jPHRydWUsIFQ+IHt9OwotCi0gIHRlbXBsYXRlIDxjbGFzcyBDb25kLCBjbGFzcyBUID0gdm9pZD4gCi0gIHN0cnVjdCBkaXNhYmxlX2lmIDogcHVibGljIGRpc2FibGVfaWZfYzxDb25kOjp2YWx1ZSwgVD4ge307Ci0KLSAgdGVtcGxhdGUgPGJvb2wgQiwgY2xhc3MgVD4KLSAgc3RydWN0IGxhenlfZGlzYWJsZV9pZl9jIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnR5cGUgdHlwZTsKLSAgfTsKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgc3RydWN0IGxhenlfZGlzYWJsZV9pZl9jPHRydWUsIFQ+IHt9OwotCi0gIHRlbXBsYXRlIDxjbGFzcyBDb25kLCBjbGFzcyBUPiAKLSAgc3RydWN0IGxhenlfZGlzYWJsZV9pZiA6IHB1YmxpYyBsYXp5X2Rpc2FibGVfaWZfYzxDb25kOjp2YWx1ZSwgVD4ge307Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbHNlCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSAgbmFtZXNwYWNlIGRldGFpbCB7IHR5cGVkZWYgdm9pZCBlbmFibGVfaWZfZGVmYXVsdF9UOyB9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIHN0cnVjdCBlbmFibGVfaWZfZG9lc19ub3Rfd29ya19vbl90aGlzX2NvbXBpbGVyOwotCi0gIHRlbXBsYXRlIDxib29sIEIsIGNsYXNzIFQgPSBkZXRhaWw6OmVuYWJsZV9pZl9kZWZhdWx0X1Q+Ci0gIHN0cnVjdCBlbmFibGVfaWZfYyA6IGVuYWJsZV9pZl9kb2VzX25vdF93b3JrX29uX3RoaXNfY29tcGlsZXI8VD4KLSAgeyB9OwotCi0gIHRlbXBsYXRlIDxib29sIEIsIGNsYXNzIFQgPSBkZXRhaWw6OmVuYWJsZV9pZl9kZWZhdWx0X1Q+IAotICBzdHJ1Y3QgZGlzYWJsZV9pZl9jIDogZW5hYmxlX2lmX2RvZXNfbm90X3dvcmtfb25fdGhpc19jb21waWxlcjxUPgotICB7IH07Ci0KLSAgdGVtcGxhdGUgPGJvb2wgQiwgY2xhc3MgVCA9IGRldGFpbDo6ZW5hYmxlX2lmX2RlZmF1bHRfVD4gCi0gIHN0cnVjdCBsYXp5X2VuYWJsZV9pZl9jIDogZW5hYmxlX2lmX2RvZXNfbm90X3dvcmtfb25fdGhpc19jb21waWxlcjxUPgotICB7IH07Ci0KLSAgdGVtcGxhdGUgPGJvb2wgQiwgY2xhc3MgVCA9IGRldGFpbDo6ZW5hYmxlX2lmX2RlZmF1bHRfVD4gCi0gIHN0cnVjdCBsYXp5X2Rpc2FibGVfaWZfYyA6IGVuYWJsZV9pZl9kb2VzX25vdF93b3JrX29uX3RoaXNfY29tcGlsZXI8VD4KLSAgeyB9OwotCi0gIHRlbXBsYXRlIDxjbGFzcyBDb25kLCBjbGFzcyBUID0gZGV0YWlsOjplbmFibGVfaWZfZGVmYXVsdF9UPiAKLSAgc3RydWN0IGVuYWJsZV9pZiA6IGVuYWJsZV9pZl9kb2VzX25vdF93b3JrX29uX3RoaXNfY29tcGlsZXI8VD4KLSAgeyB9OwotCi0gIHRlbXBsYXRlIDxjbGFzcyBDb25kLCBjbGFzcyBUID0gZGV0YWlsOjplbmFibGVfaWZfZGVmYXVsdF9UPiAKLSAgc3RydWN0IGRpc2FibGVfaWYgOiBlbmFibGVfaWZfZG9lc19ub3Rfd29ya19vbl90aGlzX2NvbXBpbGVyPFQ+Ci0gIHsgfTsKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgQ29uZCwgY2xhc3MgVCA9IGRldGFpbDo6ZW5hYmxlX2lmX2RlZmF1bHRfVD4gCi0gIHN0cnVjdCBsYXp5X2VuYWJsZV9pZiA6IGVuYWJsZV9pZl9kb2VzX25vdF93b3JrX29uX3RoaXNfY29tcGlsZXI8VD4KLSAgeyB9OwotCi0gIHRlbXBsYXRlIDxjbGFzcyBDb25kLCBjbGFzcyBUID0gZGV0YWlsOjplbmFibGVfaWZfZGVmYXVsdF9UPiAKLSAgc3RydWN0IGxhenlfZGlzYWJsZV9pZiA6IGVuYWJsZV9pZl9kb2VzX25vdF93b3JrX29uX3RoaXNfY29tcGlsZXI8VD4KLSAgeyB9OwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fU0ZJTkFFCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2lkZW50aXR5X3R5cGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2lkZW50aXR5X3R5cGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzN2ViODM1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9pZGVudGl0eV90eXBlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IChDKSAyMDA5LTIwMTIgTG9yZW56byBDYW1pbml0aQotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wCi0vLyAoc2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBhIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vIEhvbWUgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy91dGlsaXR5L2lkZW50aXR5X3R5cGUKLQotLyoqIEBmaWxlCi1XcmFwIHR5cGUgZXhwcmVzc2lvbnMgd2l0aCByb3VuZCBwYXJlbnRoZXNpcyBzbyB0aGV5IGNhbiBiZSBwYXNzZWQgdG8gbWFjcm9zCi1ldmVuIGlmIHRoZXkgY29udGFpbiBjb21tYXMuCi0qLwotCi0jaWZuZGVmIE5ETkJPT1NUX0lERU5USVRZX1RZUEVfSFBQXwotI2RlZmluZSBORE5CT09TVF9JREVOVElUWV9UWVBFX0hQUF8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2Z1bmN0aW9uX3RyYWl0cy5ocHA+Ci0KLS8qKgotQGJyaWVmIFRoaXMgbWFjcm8gYWxsb3dzIHRvIHdyYXAgdGhlIHNwZWNpZmllZCB0eXBlIGV4cHJlc3Npb24gd2l0aGluIGV4dHJhCi1yb3VuZCBwYXJlbnRoZXNpcyBzbyB0aGUgdHlwZSBjYW4gYmUgcGFzc2VkIGFzIGEgc2luZ2xlIG1hY3JvIHBhcmFtZXRlciBldmVuIGlmCi1pdCBjb250YWlucyBjb21tYXMgKG5vdCBhbHJlYWR5IHdyYXBwZWQgd2l0aGluIHJvdW5kIHBhcmVudGhlc2lzKS4KLQotQFBhcmFtcwotQFBhcmFte3BhcmVudGhlc2l6ZWRfdHlwZSwKLVRoZSB0eXBlIGV4cHJlc3Npb24gdG8gYmUgcGFzc2VkIGFzIG1hY3JvIHBhcmFtZXRlciB3cmFwcGVkIGJ5IGEgc2luZ2xlIHNldAotb2Ygcm91bmQgcGFyZW50aGVzaXMgPGM+KC4uLik8L2M+LgotVGhpcyB0eXBlIGV4cHJlc3Npb24gY2FuIGNvbnRhaW4gYW4gYXJiaXRyYXJ5IG51bWJlciBvZiBjb21tYXMuCi19Ci1ARW5kUGFyYW1zCi0KLVRoaXMgbWFjcm8gd29ya3Mgb24gYW55IEMrKzAzIGNvbXBpbGVyIChpdCBkb2VzIG5vdCB1c2UgdmFyaWFkaWMgbWFjcm9zKS4KLQotVGhpcyBtYWNybyBtdXN0IGJlIHByZWZpeGVkIGJ5IDxjPnR5cGVuYW1lPC9jPiB3aGVuIHVzZWQgd2l0aGluIHRlbXBsYXRlcy4KLU5vdGUgdGhhdCB0aGUgY29tcGlsZXIgd2lsbCBub3QgYmUgYWJsZSB0byBhdXRvbWF0aWNhbGx5IGRldGVybWluZSBmdW5jdGlvbgotdGVtcGxhdGUgcGFyYW1ldGVycyB3aGVuIHRoZXkgYXJlIHdyYXBwZWQgd2l0aCB0aGlzIG1hY3JvICh0aGVzZSBwYXJhbWV0ZXJzCi1uZWVkIHRvIGJlIGV4cGxpY2l0bHkgc3BlY2lmaWVkIHdoZW4gY2FsbGluZyB0aGUgZnVuY3Rpb24gdGVtcGxhdGUpLgotCi1PbiBzb21lIGNvbXBpbGVycyAobGlrZSBHQ0MpLCB1c2luZyB0aGlzIG1hY3JvIG9uIGFic3RyYWN0IHR5cGVzIHJlcXVpcmVzIHRvCi1hZGQgYW5kIHJlbW92ZSBhIHJlZmVyZW5jZSB0byB0aGUgc3BlY2lmaWVkIHR5cGUuCi0qLwotI2RlZmluZSBORE5CT09TVF9JREVOVElUWV9UWVBFKHBhcmVudGhlc2l6ZWRfdHlwZSkgXAotICAgIC8qIG11c3QgTk9UIHByZWZpeCB0aGlzIHdpdGggYDo6YCB0byB3b3JrIHdpdGggcGFyZW50aGVzaXplZCBzeW50YXggKi8gXAotICAgIG5kbmJvb3N0OjpmdW5jdGlvbl90cmFpdHM8IHZvaWQgcGFyZW50aGVzaXplZF90eXBlID46OmFyZzFfdHlwZQotCi0jZW5kaWYgLy8gI2luY2x1ZGUgZ3VhcmQKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2luX3BsYWNlX2ZhY3RvcnkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2luX3BsYWNlX2ZhY3RvcnkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzA3N2RkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9pbl9wbGFjZV9mYWN0b3J5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwMywgRmVybmFuZG8gTHVpcyBDYWNjaW9sYSBDYXJiYWxsYWwuCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDcsIFRvYmlhcyBTY2h3aW5nZXIuCi0vLwotLy8gVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvb3B0aW9uYWwgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotLy8gWW91IGFyZSB3ZWxjb21lIHRvIGNvbnRhY3QgdGhlIGF1dGhvciBhdDoKLS8vICBmZXJuYW5kb19jYWNjaW9sYUBob3RtYWlsLmNvbQotLy8KLSNpZm5kZWYgTkROQk9PU1RfVVRJTElUWV9JTlBMQUNFX0ZBQ1RPUllfMDRBUFIyMDA3X0hQUAotI2lmbmRlZiBORE5CT09TVF9QUF9JU19JVEVSQVRJTkcKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZGV0YWlsL2luX3BsYWNlX2ZhY3RvcnlfcHJlZml4LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotY2xhc3MgaW5fcGxhY2VfZmFjdG9yeV9iYXNlIHt9IDsKLQotI2RlZmluZSAgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0xJTUlUUyAoMCwgTkROQk9PU1RfTUFYX0lOUExBQ0VfRkFDVE9SWV9BUklUWSkKLSNkZWZpbmUgIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEgPG5kbmJvb3N0L3V0aWxpdHkvaW5fcGxhY2VfZmFjdG9yeS5ocHA+Ci0jaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZGV0YWlsL2luX3BsYWNlX2ZhY3Rvcnlfc3VmZml4LmhwcD4KLQotI2RlZmluZSBORE5CT09TVF9VVElMSVRZX0lOUExBQ0VfRkFDVE9SWV8wNEFQUjIwMDdfSFBQCi0jZWxzZQotI2RlZmluZSBOIE5ETkJPT1NUX1BQX0lURVJBVElPTigpCi0KLSNpZiBOCi10ZW1wbGF0ZTwgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTiwgY2xhc3MgQSkgPgotI2VuZGlmCi1jbGFzcyBORE5CT09TVF9QUF9DQVQoaW5fcGxhY2VfZmFjdG9yeSxOKQotICA6IAotICBwdWJsaWMgaW5fcGxhY2VfZmFjdG9yeV9iYXNlCi17Ci1wdWJsaWM6Ci0KLSAgZXhwbGljaXQgTkROQk9PU1RfUFBfQ0FUKGluX3BsYWNlX2ZhY3RvcnksTikKLSAgICAgICggTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TKE4sQSxjb25zdCYgYSkgKQotI2lmIE4gPiAwCi0gICAgOiBORE5CT09TVF9QUF9FTlVNKE4sIE5ETkJPT1NUX0RFRklORV9JTlBMQUNFX0ZBQ1RPUllfQ0xBU1NfTUVNQkVSX0lOSVQsIF8pCi0jZW5kaWYKLSAge30KLQotICB0ZW1wbGF0ZTxjbGFzcyBUPgotICB2b2lkKiBhcHBseSh2b2lkKiBhZGRyZXNzCi0gICAgICBORE5CT09TVF9BUFBFTkRfRVhQTElDSVRfVEVNUExBVEVfVFlQRShUKSkgY29uc3QKLSAgewotICAgIHJldHVybiBuZXcoYWRkcmVzcykgVCggTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTiwgbV9hKSApOwotICB9Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgdm9pZCogYXBwbHkodm9pZCogYWRkcmVzcywgc3RkOjpzaXplX3QgbgotICAgICAgTkROQk9PU1RfQVBQRU5EX0VYUExJQ0lUX1RFTVBMQVRFX1RZUEUoVCkpIGNvbnN0Ci0gIHsKLSAgICBmb3IoY2hhciogbmV4dCA9IGFkZHJlc3MgPSB0aGlzLT5ORE5CT09TVF9ORVNURURfVEVNUExBVEUgYXBwbHk8VD4oYWRkcmVzcyk7Ci0gICAgICAgICEhIC0tbjspCi0gICAgICB0aGlzLT5ORE5CT09TVF9ORVNURURfVEVNUExBVEUgYXBwbHk8VD4obmV4dCA9IG5leHQrc2l6ZW9mKFQpKTsKLSAgICByZXR1cm4gYWRkcmVzczsgCi0gIH0KLQotICBORE5CT09TVF9QUF9SRVBFQVQoTiwgTkROQk9PU1RfREVGSU5FX0lOUExBQ0VfRkFDVE9SWV9DTEFTU19NRU1CRVJfREVDTCwgXykKLX07Ci0KLSNpZiBOID4gMAotdGVtcGxhdGU8IE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE4sIGNsYXNzIEEpID4KLWlubGluZSBORE5CT09TVF9QUF9DQVQoaW5fcGxhY2VfZmFjdG9yeSxOKTwgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTiwgQSkgPgotaW5fcGxhY2UoIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNUyhOLCBBLCBjb25zdCYgYSkgKQotewotICByZXR1cm4gTkROQk9PU1RfUFBfQ0FUKGluX3BsYWNlX2ZhY3RvcnksTik8IE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE4sIEEpID4KLSAgICAgICggTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTiwgYSkgKTsKLX0KLSNlbHNlCi1pbmxpbmUgaW5fcGxhY2VfZmFjdG9yeTAgaW5fcGxhY2UoKQotewotICByZXR1cm4gaW5fcGxhY2VfZmFjdG9yeTAoKTsKLX0KLSNlbmRpZgotCi0jdW5kZWYgTgotI2VuZGlmCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L3Jlc3VsdF9vZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvcmVzdWx0X29mLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjk4ZmM4YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvcmVzdWx0X29mLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5NCArMCwwIEBACi0vLyBCb29zdCByZXN1bHRfb2YgbGlicmFyeQotCi0vLyAgQ29weXJpZ2h0IERvdWdsYXMgR3JlZ29yIDIwMDQuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdXRpbGl0eQotI2lmbmRlZiBORE5CT09TVF9SRVNVTFRfT0ZfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFU1VMVF9PRl9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9pdGVyYXRlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV90cmFpbGluZ19wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fYmluYXJ5X3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9zaGlmdGVkX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvaW50ZXJjZXB0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2hhc194eHguaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2V2YWxfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWRlbnRpdHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9vci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY2xhc3MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9yZWZlcmVuY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZGVjbHZhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9lbmFibGVfaWYuaHBwPgotCi0jaWZuZGVmIE5ETkJPT1NUX1JFU1VMVF9PRl9OVU1fQVJHUwotIyAgZGVmaW5lIE5ETkJPT1NUX1JFU1VMVF9PRl9OVU1fQVJHUyAxNgotI2VuZGlmCi0KLS8vIFVzZSB0aGUgZGVjbHR5cGUtYmFzZWQgdmVyc2lvbiBvZiByZXN1bHRfb2YgYnkgZGVmYXVsdCBpZiB0aGUgY29tcGlsZXIKLS8vIHN1cHBvcnRzIE4zMjc2IDxodHRwOi8vd3d3Lm9wZW4tc3RkLm9yZy9KVEMxL1NDMjIvV0cyMS9kb2NzL3BhcGVycy8yMDExL24zMjc2LnBkZj4uCi0vLyBUaGUgdXNlciBjYW4gZm9yY2UgdGhlIGNob2ljZSBieSBkZWZpbmluZyBlaXRoZXIgTkROQk9PU1RfUkVTVUxUX09GX1VTRV9ERUNMVFlQRSBvcgotLy8gTkROQk9PU1RfUkVTVUxUX09GX1VTRV9UUjEsIGJ1dCBub3QgYm90aCEKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1JFU1VMVF9PRl9VU0VfREVDTFRZUEUpICYmIGRlZmluZWQoTkROQk9PU1RfUkVTVUxUX09GX1VTRV9UUjEpCi0jICBlcnJvciBCb3RoIE5ETkJPT1NUX1JFU1VMVF9PRl9VU0VfREVDTFRZUEUgYW5kIE5ETkJPT1NUX1JFU1VMVF9PRl9VU0VfVFIxIGNhbm5vdCBiZSBkZWZpbmVkIGF0IHRoZSBzYW1lIHRpbWUuCi0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9SRVNVTFRfT0ZfVVNFX1RSMQotIyAgaWZuZGVmIE5ETkJPT1NUX1JFU1VMVF9PRl9VU0VfREVDTFRZUEUKLSMgICAgaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFX04zMjc2IC8vIHRoaXMgaW1wbGllcyAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRSkKLSMgICAgICBkZWZpbmUgTkROQk9PU1RfUkVTVUxUX09GX1VTRV9ERUNMVFlQRQotIyAgICBlbHNlCi0jICAgICAgZGVmaW5lIE5ETkJPT1NUX1JFU1VMVF9PRl9VU0VfVFIxCi0jICAgIGVuZGlmCi0jICBlbmRpZgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEY+IHN0cnVjdCByZXN1bHRfb2Y7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBGPiBzdHJ1Y3QgdHIxX3Jlc3VsdF9vZjsgLy8gYSBUUjEtc3R5bGUgaW1wbGVtZW50YXRpb24gb2YgcmVzdWx0X29mCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19TRklOQUUpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotTkROQk9PU1RfTVBMX0hBU19YWFhfVFJBSVRfREVGKHJlc3VsdF90eXBlKQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGLCB0eXBlbmFtZSBGQXJncywgYm9vbCBIYXNSZXN1bHRUeXBlPiBzdHJ1Y3QgdHIxX3Jlc3VsdF9vZl9pbXBsOwotCi0jaWZkZWYgTkROQk9PU1RfTk9fU0ZJTkFFX0VYUFIKLQotLy8gVGhlcmUgZG9lc24ndCBzZWVtIHRvIGJlIGFueSBvdGhlciB3YXkgdG8gdHVybiB0aGlzIG9mZiBzdWNoIHRoYXQgdGhlIHByZXNlbmNlIG9mCi0vLyB0aGUgdXNlci1kZWZpbmVkIG9wZXJhdG9yLCgpIGJlbG93IGRvZXNuJ3QgY2F1c2Ugc3B1cmlvdXMgd2FybmluZyBhbGwgb3ZlciB0aGUgcGxhY2UsCi0vLyBzbyB1bmNvbmRpdGlvbmFsbHkgdHVybiBpdCBvZmYuCi0jaWYgTkROQk9PU1RfTVNWQwotIyAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDkxMykgLy8gdXNlciBkZWZpbmVkIGJpbmFyeSBvcGVyYXRvciAnLCcgZXhpc3RzIGJ1dCBubyBvdmVybG9hZCBjb3VsZCBjb252ZXJ0IGFsbCBvcGVyYW5kcywgZGVmYXVsdCBidWlsdC1pbiBiaW5hcnkgb3BlcmF0b3IgJywnIHVzZWQKLSNlbmRpZgotCi1zdHJ1Y3QgcmVzdWx0X29mX3ByaXZhdGVfdHlwZSB7fTsKLQotc3RydWN0IHJlc3VsdF9vZl93ZWlyZF90eXBlIHsKLSAgZnJpZW5kIHJlc3VsdF9vZl9wcml2YXRlX3R5cGUgb3BlcmF0b3IsKHJlc3VsdF9vZl9wcml2YXRlX3R5cGUsIHJlc3VsdF9vZl93ZWlyZF90eXBlKTsKLX07Ci0KLXR5cGVkZWYgY2hhciByZXN1bHRfb2ZfeWVzX3R5cGU7ICAgICAgLy8gc2l6ZW9mKHJlc3VsdF9vZl95ZXNfdHlwZSkgPT0gMQotdHlwZWRlZiBjaGFyICgmcmVzdWx0X29mX25vX3R5cGUpWzJdOyAvLyBzaXplb2YocmVzdWx0X29mX25vX3R5cGUpICA9PSAyCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1yZXN1bHRfb2Zfbm9fdHlwZSByZXN1bHRfb2ZfaXNfcHJpdmF0ZV90eXBlKFQgY29uc3QgJik7Ci1yZXN1bHRfb2ZfeWVzX3R5cGUgcmVzdWx0X29mX2lzX3ByaXZhdGVfdHlwZShyZXN1bHRfb2ZfcHJpdmF0ZV90eXBlKTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQz4KLXN0cnVjdCByZXN1bHRfb2ZfY2FsbGFibGVfY2xhc3MgOiBDIHsKLSAgICByZXN1bHRfb2ZfY2FsbGFibGVfY2xhc3MoKTsKLSAgICB0eXBlZGVmIHJlc3VsdF9vZl9wcml2YXRlX3R5cGUgY29uc3QgJigqcGZuX3QpKC4uLik7Ci0gICAgb3BlcmF0b3IgcGZuX3QoKSBjb25zdCB2b2xhdGlsZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEM+Ci1zdHJ1Y3QgcmVzdWx0X29mX3dyYXBfY2FsbGFibGVfY2xhc3MgewotICB0eXBlZGVmIHJlc3VsdF9vZl9jYWxsYWJsZV9jbGFzczxDPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQz4KLXN0cnVjdCByZXN1bHRfb2Zfd3JhcF9jYWxsYWJsZV9jbGFzczxDIGNvbnN0PiB7Ci0gIHR5cGVkZWYgcmVzdWx0X29mX2NhbGxhYmxlX2NsYXNzPEM+IGNvbnN0IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDPgotc3RydWN0IHJlc3VsdF9vZl93cmFwX2NhbGxhYmxlX2NsYXNzPEMgdm9sYXRpbGU+IHsKLSAgdHlwZWRlZiByZXN1bHRfb2ZfY2FsbGFibGVfY2xhc3M8Qz4gdm9sYXRpbGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEM+Ci1zdHJ1Y3QgcmVzdWx0X29mX3dyYXBfY2FsbGFibGVfY2xhc3M8QyBjb25zdCB2b2xhdGlsZT4gewotICB0eXBlZGVmIHJlc3VsdF9vZl9jYWxsYWJsZV9jbGFzczxDPiBjb25zdCB2b2xhdGlsZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQz4KLXN0cnVjdCByZXN1bHRfb2Zfd3JhcF9jYWxsYWJsZV9jbGFzczxDICY+IHsKLSAgdHlwZWRlZiB0eXBlbmFtZSByZXN1bHRfb2Zfd3JhcF9jYWxsYWJsZV9jbGFzczxDPjo6dHlwZSAmdHlwZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEYsIGJvb2wgVGVzdENhbGxhYmlsaXR5ID0gdHJ1ZT4gc3RydWN0IGNwcDB4X3Jlc3VsdF9vZl9pbXBsOwotCi0jZWxzZSAvLyBORE5CT09TVF9OT19TRklOQUVfRVhQUgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IHJlc3VsdF9vZl9hbHdheXNfdm9pZAotewotICB0eXBlZGVmIHZvaWQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEYsIHR5cGVuYW1lIEVuYWJsZSA9IHZvaWQ+IHN0cnVjdCBjcHAweF9yZXN1bHRfb2ZfaW1wbCB7fTsKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1NGSU5BRV9FWFBSCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEY+Ci1zdHJ1Y3QgcmVzdWx0X29mX3ZvaWRfaW1wbAotewotICB0eXBlZGVmIHZvaWQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFI+Ci1zdHJ1Y3QgcmVzdWx0X29mX3ZvaWRfaW1wbDxSICgqKSh2b2lkKT4KLXsKLSAgdHlwZWRlZiBSIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSPgotc3RydWN0IHJlc3VsdF9vZl92b2lkX2ltcGw8UiAoJikodm9pZCk+Ci17Ci0gIHR5cGVkZWYgUiB0eXBlOwotfTsKLQotLy8gRGV0ZXJtaW5lIHRoZSByZXR1cm4gdHlwZSBvZiBhIGZ1bmN0aW9uIHBvaW50ZXIgb3IgcG9pbnRlciB0byBtZW1iZXIuCi10ZW1wbGF0ZTx0eXBlbmFtZSBGLCB0eXBlbmFtZSBGQXJncz4KLXN0cnVjdCByZXN1bHRfb2ZfcG9pbnRlcgotICA6IHRyMV9yZXN1bHRfb2ZfaW1wbDx0eXBlbmFtZSByZW1vdmVfY3Y8Rj46OnR5cGUsIEZBcmdzLCBmYWxzZT4geyB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGLCB0eXBlbmFtZSBGQXJncz4KLXN0cnVjdCB0cjFfcmVzdWx0X29mX2ltcGw8RiwgRkFyZ3MsIHRydWU+Ci17Ci0gIHR5cGVkZWYgdHlwZW5hbWUgRjo6cmVzdWx0X3R5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZBcmdzPgotc3RydWN0IGlzX2Z1bmN0aW9uX3dpdGhfbm9fYXJncyA6IG1wbDo6ZmFsc2VfIHt9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGPgotc3RydWN0IGlzX2Z1bmN0aW9uX3dpdGhfbm9fYXJnczxGKHZvaWQpPiA6IG1wbDo6dHJ1ZV8ge307Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEYsIHR5cGVuYW1lIEZBcmdzPgotc3RydWN0IHJlc3VsdF9vZl9uZXN0ZWRfcmVzdWx0IDogRjo6dGVtcGxhdGUgcmVzdWx0PEZBcmdzPgote307Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEYsIHR5cGVuYW1lIEZBcmdzPgotc3RydWN0IHRyMV9yZXN1bHRfb2ZfaW1wbDxGLCBGQXJncywgZmFsc2U+Ci0gIDogbXBsOjppZl88aXNfZnVuY3Rpb25fd2l0aF9ub19hcmdzPEZBcmdzPiwKLSAgICAgICAgICAgICByZXN1bHRfb2Zfdm9pZF9pbXBsPEY+LAotICAgICAgICAgICAgIHJlc3VsdF9vZl9uZXN0ZWRfcmVzdWx0PEYsIEZBcmdzPiA+Ojp0eXBlCi17fTsKLQotfSAvLyBlbmQgbmFtZXNwYWNlIGRldGFpbAotCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSAoMywoMCxORE5CT09TVF9SRVNVTFRfT0ZfTlVNX0FSR1MsPG5kbmJvb3N0L3V0aWxpdHkvZGV0YWlsL3Jlc3VsdF9vZl9pdGVyYXRlLmhwcD4pKQotI2luY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLSNlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fUkVTVUxUX09GIDEKLSNlbmRpZgotCi19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SRVNVTFRfT0ZfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvc3dhcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvc3dhcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1ZjgwZjMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L3N3YXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IFN0ZXZlbiBXYXRhbmFiZSwgSm9zZXBoIEdhdXRlcmluLCBOaWVscyBEZWtrZXIKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnCi0KLQotI2lmbmRlZiBORE5CT09TVF9VVElMSVRZX1NXQVBfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1VUSUxJVFlfU1dBUF9IUFAKLQotLy8gTm90ZTogdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgdXRpbGl0eSBjb250YWlucyB2YXJpb3VzIHdvcmthcm91bmRzOgotLy8gLSBzd2FwX2ltcGwgaXMgcHV0IG91dHNpZGUgdGhlIGJvb3N0IG5hbWVzcGFjZSwgdG8gYXZvaWQgaW5maW5pdGUKLS8vIHJlY3Vyc2lvbiAoY2F1c2luZyBzdGFjayBvdmVyZmxvdykgd2hlbiBzd2FwcGluZyBvYmplY3RzIG9mIGEgcHJpbWl0aXZlCi0vLyB0eXBlLgotLy8gLSBzd2FwX2ltcGwgaGFzIGEgdXNpbmctZGlyZWN0aXZlLCByYXRoZXIgdGhhbiBhIHVzaW5nLWRlY2xhcmF0aW9uLAotLy8gYmVjYXVzZSBzb21lIGNvbXBpbGVycyAoaW5jbHVkaW5nIE1TVkMgNy4xLCBCb3JsYW5kIDUuOS4zLCBhbmQKLS8vIEludGVsIDguMSkgZG9uJ3QgZG8gYXJndW1lbnQtZGVwZW5kZW50IGxvb2t1cCB3aGVuIGl0IGhhcyBhCi0vLyB1c2luZy1kZWNsYXJhdGlvbiBpbnN0ZWFkLgotLy8gLSBuZG5ib29zdDo6c3dhcCBoYXMgdHdvIHRlbXBsYXRlIGFyZ3VtZW50cywgaW5zdGVhZCBvZiBvbmUsIHRvCi0vLyBhdm9pZCBhbWJpZ3VpdHkgd2hlbiBzd2FwcGluZyBvYmplY3RzIG9mIGEgQm9vc3QgdHlwZSB0aGF0IGRvZXMKLS8vIG5vdCBoYXZlIGl0cyBvd24gbmRuYm9vc3Q6OnN3YXAgb3ZlcmxvYWQuCi0KLSNpbmNsdWRlIDxhbGdvcml0aG0+IC8vZm9yIHN0ZDo6c3dhcAotI2luY2x1ZGUgPGNzdGRkZWY+IC8vZm9yIHN0ZDo6c2l6ZV90Ci0KLW5hbWVzcGFjZSBuZG5ib29zdF9zd2FwX2ltcGwKLXsKLSAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgdm9pZCBzd2FwX2ltcGwoVCYgbGVmdCwgVCYgcmlnaHQpCi0gIHsKLSAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOy8vdXNlIHN0ZDo6c3dhcCBpZiBhcmd1bWVudCBkZXBlbmRlbnQgbG9va3VwIGZhaWxzCi0gICAgc3dhcChsZWZ0LHJpZ2h0KTsKLSAgfQotCi0gIHRlbXBsYXRlPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4+Ci0gIHZvaWQgc3dhcF9pbXBsKFQgKCYgbGVmdClbTl0sIFQgKCYgcmlnaHQpW05dKQotICB7Ci0gICAgZm9yIChzdGQ6OnNpemVfdCBpID0gMDsgaSA8IE47ICsraSkKLSAgICB7Ci0gICAgICA6Om5kbmJvb3N0X3N3YXBfaW1wbDo6c3dhcF9pbXBsKGxlZnRbaV0sIHJpZ2h0W2ldKTsKLSAgICB9Ci0gIH0KLX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gIHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBUMj4KLSAgdm9pZCBzd2FwKFQxJiBsZWZ0LCBUMiYgcmlnaHQpCi0gIHsKLSAgICA6Om5kbmJvb3N0X3N3YXBfaW1wbDo6c3dhcF9pbXBsKGxlZnQsIHJpZ2h0KTsKLSAgfQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS92YWx1ZV9pbml0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS92YWx1ZV9pbml0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGUzNGFlMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvdmFsdWVfaW5pdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNTggKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDAyLTIwMDgsIEZlcm5hbmRvIEx1aXMgQ2FjY2lvbGEgQ2FyYmFsbGFsLgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyAyMSBBZ28gMjAwMiAoQ3JlYXRlZCkgRmVybmFuZG8gQ2FjY2lvbGEKLS8vIDI0IERlYyAyMDA3IChSZWZhY3RvcmVkIGFuZCB3b3JrZWQgYXJvdW5kIHZhcmlvdXMgY29tcGlsZXIgYnVncykgRmVybmFuZG8gQ2FjY2lvbGEsIE5pZWxzIERla2tlcgotLy8gMjMgTWF5IDIwMDggKEZpeGVkIG9wZXJhdG9yPSBjb25zdCBpc3N1ZSwgYWRkZWQgaW5pdGlhbGl6ZWRfdmFsdWUpIE5pZWxzIERla2tlciwgRmVybmFuZG8gQ2FjY2lvbGEKLS8vIDIxIEFnbyAyMDA4IChBZGRlZCBzd2FwKSBOaWVscyBEZWtrZXIsIEZlcm5hbmRvIENhY2Npb2xhCi0vLyAyMCBGZWIgMjAwOSAoRml4ZWQgbG9naWNhbCBjb25zdC1uZXNzIGlzc3VlcykgTmllbHMgRGVra2VyLCBGZXJuYW5kbyBDYWNjaW9sYQotLy8gMDMgQXByIDIwMTAgKEFkZGVkIGluaXRpYWxpemVkPFQ+LCBzdWdnZXN0ZWQgYnkgSmVmZnJleSBIZWxscnVuZywgZml4aW5nICMzNDcyKSBOaWVscyBEZWtrZXIKLS8vIDMwIE1heSAyMDEwIChNYWRlIG1lbXNldCBjYWxsIGNvbmRpdGlvbmFsLCBmaXhpbmcgIzM4NjkpIE5pZWxzIERla2tlcgotLy8KLSNpZm5kZWYgTkROQk9PU1RfVVRJTElUWV9WQUxVRV9JTklUXzIxQUdPMjAwMl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfVVRJTElUWV9WQUxVRV9JTklUXzIxQUdPMjAwMl9IUFAKLQotLy8gTm90ZTogVGhlIGltcGxlbWVudGF0aW9uIG9mIG5kbmJvb3N0Ojp2YWx1ZV9pbml0aWFsaXplZCBoYWQgdG8gZGVhbCB3aXRoIHRoZQotLy8gZmFjdCB0aGF0IHZhcmlvdXMgY29tcGlsZXJzIGhhdmVuJ3QgZnVsbHkgaW1wbGVtZW50ZWQgdmFsdWUtaW5pdGlhbGl6YXRpb24uCi0vLyBUaGUgY29uc3RydWN0b3Igb2YgbmRuYm9vc3Q6OnZhbHVlX2luaXRpYWxpemVkPFQ+IHdvcmtzIGFyb3VuZCB0aGVzZSBjb21waWxlcgotLy8gaXNzdWVzLCBieSBjbGVhcmluZyB0aGUgYnl0ZXMgb2YgVCwgYmVmb3JlIGNvbnN0cnVjdGluZyB0aGUgVCBvYmplY3QgaXQKLS8vIGNvbnRhaW5zLiBNb3JlIGRldGFpbHMgb24gdGhlc2UgaXNzdWVzIGFyZSBhdCBsaWJzL3V0aWxpdHkvdmFsdWVfaW5pdC5odG0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2FsaWduZWRfc3RvcmFnZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gLy8gRm9yIE5ETkJPT1NUX05PX0NPTVBMRVRFX1ZBTFVFX0lOSVRJQUxJWkFUSU9OLgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jdl90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FsaWdubWVudF9vZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3dhcC5ocHA+Ci0jaW5jbHVkZSA8Y3N0cmluZz4KLSNpbmNsdWRlIDxuZXc+Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNpZiBfTVNDX1ZFUiA+PSAxMzEwCi0vLyBJdCBpcyBzYWZlIHRvIGlnbm9yZSB0aGUgZm9sbG93aW5nIHdhcm5pbmcgZnJvbSBNU1ZDIDcuMSBvciBoaWdoZXI6Ci0vLyAid2FybmluZyBDNDM1MTogbmV3IGJlaGF2aW9yOiBlbGVtZW50cyBvZiBhcnJheSB3aWxsIGJlIGRlZmF1bHQgaW5pdGlhbGl6ZWQiCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDM1MSkKLS8vIEl0IGlzIHNhZmUgdG8gaWdub3JlIHRoZSBmb2xsb3dpbmcgTVNWQyB3YXJuaW5nLCB3aGljaCBtYXkgcG9wIHVwIHdoZW4gVCBpcyAKLS8vIGEgY29uc3QgdHlwZTogIndhcm5pbmcgQzQ1MTI6IGFzc2lnbm1lbnQgb3BlcmF0b3IgY291bGQgbm90IGJlIGdlbmVyYXRlZCIuCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDUxMikKLSNlbmRpZgotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9OT19DT01QTEVURV9WQUxVRV9JTklUSUFMSVpBVElPTgotICAvLyBJbXBsZW1lbnRhdGlvbiBkZXRhaWw6IFRoZSBtYWNybyBORE5CT09TVF9ERVRBSUxfVkFMVUVfSU5JVF9XT1JLQVJPVU5EX1NVR0dFU1RFRCAKLSAgLy8gc3VnZ2VzdHMgdGhhdCBhIHdvcmthcm91bmQgc2hvdWxkIGJlIGFwcGxpZWQsIGJlY2F1c2Ugb2YgY29tcGlsZXIgaXNzdWVzIAotICAvLyByZWdhcmRpbmcgdmFsdWUtaW5pdGlhbGl6YXRpb24uCi0gICNkZWZpbmUgTkROQk9PU1RfREVUQUlMX1ZBTFVFX0lOSVRfV09SS0FST1VORF9TVUdHRVNURUQKLSNlbmRpZgotCi0vLyBJbXBsZW1lbnRhdGlvbiBkZXRhaWw6IFRoZSBtYWNybyBORE5CT09TVF9ERVRBSUxfVkFMVUVfSU5JVF9XT1JLQVJPVU5ECi0vLyBzd2l0Y2hlcyB0aGUgdmFsdWUtaW5pdGlhbGl6YXRpb24gd29ya2Fyb3VuZCBlaXRoZXIgb24gb3Igb2ZmLgotI2lmbmRlZiBORE5CT09TVF9ERVRBSUxfVkFMVUVfSU5JVF9XT1JLQVJPVU5ECi0gICNpZmRlZiBORE5CT09TVF9ERVRBSUxfVkFMVUVfSU5JVF9XT1JLQVJPVU5EX1NVR0dFU1RFRAotICAjZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9WQUxVRV9JTklUX1dPUktBUk9VTkQgMQotICAjZWxzZQotICAjZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9WQUxVRV9JTklUX1dPUktBUk9VTkQgMAotICAjZW5kaWYKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi10ZW1wbGF0ZTxjbGFzcyBUPgotY2xhc3MgaW5pdGlhbGl6ZWQKLXsKLSAgcHJpdmF0ZSA6Ci0gICAgc3RydWN0IHdyYXBwZXIKLSAgICB7Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1OTIpKQotICAgICAgdHlwZW5hbWUKLSNlbmRpZiAKLSAgICAgIHJlbW92ZV9jb25zdDxUPjo6dHlwZSBkYXRhOwotCi0gICAgICB3cmFwcGVyKCkKLSAgICAgIDoKLSAgICAgIGRhdGEoKQotICAgICAgewotICAgICAgfQotCi0gICAgICB3cmFwcGVyKFQgY29uc3QgJiBhcmcpCi0gICAgICA6Ci0gICAgICBkYXRhKGFyZykKLSAgICAgIHsKLSAgICAgIH0KLSAgICB9OwotCi0gICAgbXV0YWJsZQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTkyKSkKLSAgICAgIHR5cGVuYW1lCi0jZW5kaWYgCi0gICAgICBhbGlnbmVkX3N0b3JhZ2U8c2l6ZW9mKHdyYXBwZXIpLCBhbGlnbm1lbnRfb2Y8d3JhcHBlcj46OnZhbHVlPjo6dHlwZSB4OwotCi0gICAgd3JhcHBlciAqIHdyYXBwZXJfYWRkcmVzcygpIGNvbnN0Ci0gICAgewotICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHdyYXBwZXIgKj4oIHN0YXRpY19jYXN0PHZvaWQqPigmeCkpOwotICAgIH0KLQotICBwdWJsaWMgOgotCi0gICAgaW5pdGlhbGl6ZWQoKQotICAgIHsKLSNpZiBORE5CT09TVF9ERVRBSUxfVkFMVUVfSU5JVF9XT1JLQVJPVU5ECi0gICAgICBzdGQ6Om1lbXNldCgmeCwgMCwgc2l6ZW9mKHgpKTsKLSNlbmRpZgotICAgICAgbmV3ICh3cmFwcGVyX2FkZHJlc3MoKSkgd3JhcHBlcigpOwotICAgIH0KLQotICAgIGluaXRpYWxpemVkKGluaXRpYWxpemVkIGNvbnN0ICYgYXJnKQotICAgIHsKLSAgICAgIG5ldyAod3JhcHBlcl9hZGRyZXNzKCkpIHdyYXBwZXIoIHN0YXRpY19jYXN0PHdyYXBwZXIgY29uc3QgJj4oKihhcmcud3JhcHBlcl9hZGRyZXNzKCkpKSk7Ci0gICAgfQotCi0gICAgZXhwbGljaXQgaW5pdGlhbGl6ZWQoVCBjb25zdCAmIGFyZykKLSAgICB7Ci0gICAgICBuZXcgKHdyYXBwZXJfYWRkcmVzcygpKSB3cmFwcGVyKGFyZyk7Ci0gICAgfQotCi0gICAgaW5pdGlhbGl6ZWQgJiBvcGVyYXRvcj0oaW5pdGlhbGl6ZWQgY29uc3QgJiBhcmcpCi0gICAgewotICAgICAgLy8gQXNzaWdubWVudCBpcyBvbmx5IGFsbG93ZWQgd2hlbiBUIGlzIG5vbi1jb25zdC4KLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoICEgaXNfY29uc3Q8VD46OnZhbHVlICk7Ci0gICAgICAqd3JhcHBlcl9hZGRyZXNzKCkgPSBzdGF0aWNfY2FzdDx3cmFwcGVyIGNvbnN0ICY+KCooYXJnLndyYXBwZXJfYWRkcmVzcygpKSk7Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgfmluaXRpYWxpemVkKCkKLSAgICB7Ci0gICAgICB3cmFwcGVyX2FkZHJlc3MoKS0+d3JhcHBlcjo6fndyYXBwZXIoKTsKLSAgICB9Ci0KLSAgICBUIGNvbnN0ICYgZGF0YSgpIGNvbnN0Ci0gICAgewotICAgICAgcmV0dXJuIHdyYXBwZXJfYWRkcmVzcygpLT5kYXRhOwotICAgIH0KLQotICAgIFQmIGRhdGEoKQotICAgIHsKLSAgICAgIHJldHVybiB3cmFwcGVyX2FkZHJlc3MoKS0+ZGF0YTsKLSAgICB9Ci0KLSAgICB2b2lkIHN3YXAoaW5pdGlhbGl6ZWQgJiBhcmcpCi0gICAgewotICAgICAgOjpuZG5ib29zdDo6c3dhcCggdGhpcy0+ZGF0YSgpLCBhcmcuZGF0YSgpICk7Ci0gICAgfQotCi0gICAgb3BlcmF0b3IgVCBjb25zdCAmKCkgY29uc3QKLSAgICB7Ci0gICAgICByZXR1cm4gd3JhcHBlcl9hZGRyZXNzKCktPmRhdGE7Ci0gICAgfQotCi0gICAgb3BlcmF0b3IgVCYoKQotICAgIHsKLSAgICAgIHJldHVybiB3cmFwcGVyX2FkZHJlc3MoKS0+ZGF0YTsKLSAgICB9Ci0KLX0gOwotCi10ZW1wbGF0ZTxjbGFzcyBUPgotVCBjb25zdCYgZ2V0ICggaW5pdGlhbGl6ZWQ8VD4gY29uc3QmIHggKQotewotICByZXR1cm4geC5kYXRhKCkgOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotVCYgZ2V0ICggaW5pdGlhbGl6ZWQ8VD4mIHggKQotewotICByZXR1cm4geC5kYXRhKCkgOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotdm9pZCBzd2FwICggaW5pdGlhbGl6ZWQ8VD4gJiBsaHMsIGluaXRpYWxpemVkPFQ+ICYgcmhzICkKLXsKLSAgbGhzLnN3YXAocmhzKSA7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1jbGFzcyB2YWx1ZV9pbml0aWFsaXplZAotewotICBwcml2YXRlIDoKLQotICAgIC8vIGluaXRpYWxpemVkPFQ+IGRvZXMgdmFsdWUtaW5pdGlhbGl6YXRpb24gYnkgZGVmYXVsdC4KLSAgICBpbml0aWFsaXplZDxUPiBtX2RhdGE7Ci0KLSAgcHVibGljIDoKLSAgICAKLSAgICB2YWx1ZV9pbml0aWFsaXplZCgpCi0gICAgOgotICAgIG1fZGF0YSgpCi0gICAgeyB9Ci0gICAgCi0gICAgVCBjb25zdCAmIGRhdGEoKSBjb25zdAotICAgIHsKLSAgICAgIHJldHVybiBtX2RhdGEuZGF0YSgpOwotICAgIH0KLQotICAgIFQmIGRhdGEoKQotICAgIHsKLSAgICAgIHJldHVybiBtX2RhdGEuZGF0YSgpOwotICAgIH0KLQotICAgIHZvaWQgc3dhcCh2YWx1ZV9pbml0aWFsaXplZCAmIGFyZykKLSAgICB7Ci0gICAgICBtX2RhdGEuc3dhcChhcmcubV9kYXRhKTsKLSAgICB9Ci0KLSAgICBvcGVyYXRvciBUIGNvbnN0ICYoKSBjb25zdAotICAgIHsKLSAgICAgIHJldHVybiBtX2RhdGE7Ci0gICAgfQotCi0gICAgb3BlcmF0b3IgVCYoKQotICAgIHsKLSAgICAgIHJldHVybiBtX2RhdGE7Ci0gICAgfQotfSA7Ci0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLVQgY29uc3QmIGdldCAoIHZhbHVlX2luaXRpYWxpemVkPFQ+IGNvbnN0JiB4ICkKLXsKLSAgcmV0dXJuIHguZGF0YSgpIDsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLVQmIGdldCAoIHZhbHVlX2luaXRpYWxpemVkPFQ+JiB4ICkKLXsKLSAgcmV0dXJuIHguZGF0YSgpIDsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXZvaWQgc3dhcCAoIHZhbHVlX2luaXRpYWxpemVkPFQ+ICYgbGhzLCB2YWx1ZV9pbml0aWFsaXplZDxUPiAmIHJocyApCi17Ci0gIGxocy5zd2FwKHJocykgOwotfQotCi0KLWNsYXNzIGluaXRpYWxpemVkX3ZhbHVlX3QKLXsKLSAgcHVibGljIDoKLSAgICAKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gb3BlcmF0b3IgVCgpIGNvbnN0Ci0gICAgewotICAgICAgcmV0dXJuIGluaXRpYWxpemVkPFQ+KCkuZGF0YSgpOwotICAgIH0KLX07Ci0KLWluaXRpYWxpemVkX3ZhbHVlX3QgY29uc3QgaW5pdGlhbGl6ZWRfdmFsdWUgPSB7fSA7Ci0KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ZlcnNpb24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC92ZXJzaW9uLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGYzNWYxMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ZlcnNpb24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLy8gIEJvb3N0IHZlcnNpb24uaHBwIGNvbmZpZ3VyYXRpb24gaGVhZGVyIGZpbGUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gbWFkZG9jayAxOTk5LiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QKLS8vICBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2NvbmZpZyBmb3IgZG9jdW1lbnRhdGlvbgotCi0jaWZuZGVmIE5ETkJPT1NUX1ZFUlNJT05fSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1ZFUlNJT05fSFBQCi0KLS8vCi0vLyAgQ2F1dGlvbiwgdGhpcyBpcyB0aGUgb25seSBib29zdCBoZWFkZXIgdGhhdCBpcyBndWFyZW50ZWVkCi0vLyAgdG8gY2hhbmdlIHdpdGggZXZlcnkgYm9vc3QgcmVsZWFzZSwgaW5jbHVkaW5nIHRoaXMgaGVhZGVyCi0vLyAgd2lsbCBjYXVzZSBhIHJlY29tcGlsZSBldmVyeSB0aW1lIGEgbmV3IGJvb3N0IHZlcnNpb24gaXMKLS8vICByZWxlYXNlZC4KLS8vCi0vLyAgTkROQk9PU1RfVkVSU0lPTiAlIDEwMCBpcyB0aGUgcGF0Y2ggbGV2ZWwKLS8vICBORE5CT09TVF9WRVJTSU9OIC8gMTAwICUgMTAwMCBpcyB0aGUgbWlub3IgdmVyc2lvbgotLy8gIE5ETkJPT1NUX1ZFUlNJT04gLyAxMDAwMDAgaXMgdGhlIG1ham9yIHZlcnNpb24KLQotI2RlZmluZSBORE5CT09TVF9WRVJTSU9OIDEwNTQwMAotCi0vLwotLy8gIE5ETkJPT1NUX0xJQl9WRVJTSU9OIG11c3QgYmUgZGVmaW5lZCB0byBiZSB0aGUgc2FtZSBhcyBORE5CT09TVF9WRVJTSU9OCi0vLyAgYnV0IGFzIGEgKnN0cmluZyogaW4gdGhlIGZvcm0gInhfeVtfel0iIHdoZXJlIHggaXMgdGhlIG1ham9yIHZlcnNpb24KLS8vICBudW1iZXIsIHkgaXMgdGhlIG1pbm9yIHZlcnNpb24gbnVtYmVyLCBhbmQgeiBpcyB0aGUgcGF0Y2ggbGV2ZWwgaWYgbm90IDAuCi0vLyAgVGhpcyBpcyB1c2VkIGJ5IDxjb25maWcvYXV0b19saW5rLmhwcD4gdG8gc2VsZWN0IHdoaWNoIGxpYnJhcnkgdmVyc2lvbiB0byBsaW5rIHRvLgotCi0jZGVmaW5lIE5ETkJPT1NUX0xJQl9WRVJTSU9OICIxXzU0IgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdmlzaXRfZWFjaC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Zpc2l0X2VhY2guaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NGQwMTVlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdmlzaXRfZWFjaC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0vLyBCb29zdC5TaWduYWxzIGxpYnJhcnkKLQotLy8gQ29weXJpZ2h0IERvdWdsYXMgR3JlZ29yIDIwMDEtMjAwMy4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9zaWduYWxzCi0KLSNpZm5kZWYgTkROQk9PU1RfVklTSVRfRUFDSF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfVklTSVRfRUFDSF9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3IsIHR5cGVuYW1lIFQ+Ci0gIGlubGluZSB2b2lkIHZpc2l0X2VhY2goVmlzaXRvciYgdmlzaXRvciwgY29uc3QgVCYgdCwgbG9uZykKLSAgewotICAgIHZpc2l0b3IodCk7Ci0gIH0KLQotICB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yLCB0eXBlbmFtZSBUPgotICBpbmxpbmUgdm9pZCB2aXNpdF9lYWNoKFZpc2l0b3ImIHZpc2l0b3IsIGNvbnN0IFQmIHQpCi0gIHsKLSAgICB2aXNpdF9lYWNoKHZpc2l0b3IsIHQsIDApOwotICB9Ci19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9WSVNJVF9FQUNIX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC93ZWFrX3B0ci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3dlYWtfcHRyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2QzZDc3Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3dlYWtfcHRyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfV0VBS19QVFJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1dFQUtfUFRSX0hQUF9JTkNMVURFRAotCi0vLwotLy8gIHdlYWtfcHRyLmhwcAotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDIsIDIwMDMgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dAotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9zbWFydF9wdHIvd2Vha19wdHIuaHRtIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci93ZWFrX3B0ci5ocHA+Ci0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9XRUFLX1BUUl9IUFBfSU5DTFVERUQK